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/chat/t-chat.mkiv231
-rw-r--r--Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex4
-rw-r--r--Master/texmf-dist/tex/context/third/markdown/t-markdown.tex125
-rw-r--r--Master/texmf-dist/tex/context/third/markdown/t-markdownthemewitiko_markdown_defaults.tex27
-rw-r--r--Master/texmf-dist/tex/fonts/bonum-otf/bonum-otf.sty301
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-Light.fontspec8
-rw-r--r--Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono.fontspec8
-rw-r--r--Master/texmf-dist/tex/generic/babel-french/acadian.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-french/canadien.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-french/francais.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-french/french.ldf14
-rw-r--r--Master/texmf-dist/tex/generic/babel-french/frenchb.ldf2
-rw-r--r--Master/texmf-dist/tex/generic/babel-french/frenchb.lua2
-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.lua5
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua24
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex3
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua8
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua42
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-transforms.lua50
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def333
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.sty790
-rw-r--r--Master/texmf-dist/tex/generic/babel/blplain.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/bplain.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/errbabel.def27
-rw-r--r--Master/texmf-dist/tex/generic/babel/hyphen.cfg7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/byn/babel-byn.ini27
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini17
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.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/fil/babel-fil.ini78
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-BE.ini20
-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.ini22
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/gez/babel-gez.ini15
-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/he/babel-he.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini36
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/kmr/babel-kmr.ini2
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko-Hani.ini8
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini8
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini53
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/mk/babel-mk.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini47
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini40
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ro/babel-ro.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ti/babel-ti.ini15
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/tig/babel-tig.ini27
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/wal/babel-wal.ini27
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def293
-rw-r--r--Master/texmf-dist/tex/generic/babel/nil.ldf3
-rw-r--r--Master/texmf-dist/tex/generic/babel/plain.def1
-rw-r--r--Master/texmf-dist/tex/generic/babel/switch.def1
-rw-r--r--Master/texmf-dist/tex/generic/babel/txtbabel.def1
-rw-r--r--Master/texmf-dist/tex/generic/babel/xebabel.def29
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex254
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex78
-rw-r--r--Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex6
-rw-r--r--Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty6
-rw-r--r--Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex67
-rw-r--r--Master/texmf-dist/tex/generic/lt3luabridge/t-lt3luabridge.tex2
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdown.tex673
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_markdown_defaults.tex47
-rw-r--r--Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex2
-rw-r--r--Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex31
-rw-r--r--Master/texmf-dist/tex/generic/pst-coil/pst-coil.tex63
-rw-r--r--Master/texmf-dist/tex/generic/pst-diffraction/pst-diffraction.tex37
-rw-r--r--Master/texmf-dist/tex/generic/pst-node/pst-node.tex61
-rw-r--r--Master/texmf-dist/tex/generic/pst-optic/pst-optic.tex113
-rw-r--r--Master/texmf-dist/tex/generic/pstricks/pstricks.tex27
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht55
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht12
-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/colortbl-hooks.4ht52
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/colortbl.4ht35
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/enumitem-hooks.4ht28
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/enumitem.4ht19
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/esvect.4ht25
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/fancyvrb.4ht14
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/fontawesome5.4ht9
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/french.4ht49
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/html-mml.4ht231
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/html4-math.4ht86
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/html4.4ht286
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/info4ht.4ht117
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/jats.4ht115
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/latex.4ht65
-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.4ht40
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/manyfoot.4ht25
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/mathjax-latex-4ht.4ht43
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/mathml.4ht81
-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/minted.4ht23
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/moderncv.4ht168
-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/stmaryrd.4ht25
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/tagpdf-base-hooks.4ht7
-rw-r--r--Master/texmf-dist/tex/generic/tex4ht/tagpdf-hooks.4ht6
-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/usepackage.4ht12
-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/alltt.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/article.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk10.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk11.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk12.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/book.cls2
-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/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.ltx10
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex.ltx505
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latexrelease.sty531
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/letter.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.lua6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/preload.cfg2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/report.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/shortvrb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size10.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size11.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size12.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx37
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/color.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/graphics.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex61
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls54
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx2
-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.ltx34
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty94
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx522
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx10
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty93
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty249
-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.sty38
-rw-r--r--Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty42
-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.sty230
-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.sty150
-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/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.sty28
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/longtable.sty60
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/multicol.sty16
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thcb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/theorem.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thm.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thmb.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/thp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/abraces/abraces.sty7
-rw-r--r--Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls3492
-rw-r--r--Master/texmf-dist/tex/latex/acmart/acmart.cls74
-rw-r--r--Master/texmf-dist/tex/latex/acronym/acronym.sty72
-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/aiplans/tikzlibraryaiplans.code.tex121
-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/animate/animate.sty12
-rw-r--r--Master/texmf-dist/tex/latex/argumentation/argumentation.sty629
-rw-r--r--Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls462
-rw-r--r--Master/texmf-dist/tex/latex/asmejour/asmejour.cls458
-rw-r--r--Master/texmf-dist/tex/latex/atveryend/atveryend.sty683
-rw-r--r--Master/texmf-dist/tex/latex/base/alltt.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/article.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/bk10.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/bk11.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/bk12.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/book.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/checkencodingsubset.tex4
-rw-r--r--Master/texmf-dist/tex/latex/base/doc.sty24
-rw-r--r--Master/texmf-dist/tex/latex/base/fontmath.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/base/fontmath.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/base/fonttext.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/base/fonttext.ltx10
-rw-r--r--Master/texmf-dist/tex/latex/base/latex.ltx520
-rw-r--r--Master/texmf-dist/tex/latex/base/latexrelease.sty563
-rw-r--r--Master/texmf-dist/tex/latex/base/letter.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/ltluatex.lua6
-rw-r--r--Master/texmf-dist/tex/latex/base/ltluatex.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/preload.cfg2
-rw-r--r--Master/texmf-dist/tex/latex/base/report.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/shortvrb.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/size10.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/size11.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/size12.clo2
-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/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-mirage/beamerthemeMirage.sty166
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-rainbow/beamertheme-rainbow-doc-settings.sty199
-rw-r--r--Master/texmf-dist/tex/latex/beamertheme-tcolorbox/beamerinnerthemetcolorbox.sty12
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/Beautybook-EN.cls1166
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/beautybook.cls (renamed from Master/texmf-dist/tex/latex/beautybook/Beautybook-CN.cls)572
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-birkar.sty125
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-cn.sty103
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-en.sty87
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-enfig.sty55
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/stys/beautybook-bottompage.sty (renamed from Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-bottompage.sty)8
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-birkar.sty190
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-cn.sty162
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-en.sty149
-rw-r--r--Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-enfig.sty88
-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/bib2qr/bib2qr.sty107
-rw-r--r--Master/texmf-dist/tex/latex/bibcop/bibcop.sty2
-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-ieee/ieee-alphabetic.bbx11
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.cbx11
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/ieee-comp.cbx150
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx27
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx130
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-ieee/magyar-ieee.lbx9
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/american-oxref.lbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/british-oxref.lbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/english-oxref.lbx116
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxref.bbx176
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.bbx7
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.dbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/polish-oxref.lbx311
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-oxref/spanish-oxref.lbx166
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-phys/phys.bbx25
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-phys/phys.cbx8
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-phys/phys.dbx8
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/UKenglish-publist.lbx37
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/USenglish-publist.lbx37
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/american-publist.lbx37
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/australian-publist.lbx37
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/austrian-publist.lbx58
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/british-publist.lbx58
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/canadian-publist.lbx37
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/english-publist.lbx58
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/french-publist.lbx58
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/german-publist.lbx58
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/naustrian-publist.lbx37
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/newzealand-publist.lbx58
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/ngerman-publist.lbx37
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/nswissgerman-publist.lbx37
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/lbx/swissgerman-publist.lbx58
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx262
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx62
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/publist.dbx4
-rw-r--r--Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls2
-rw-r--r--Master/texmf-dist/tex/latex/bithesis/bithesis.cls228
-rw-r--r--Master/texmf-dist/tex/latex/bithesis/bitreport.cls6
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/16-IU8-references.sty18
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/BMSTU-IU8.cls54
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-01-base.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/01-IU8-base.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-02-construction.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/02-IU8-construction.sty)13
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-03-numbering.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/03-IU8-numbering.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-04-section-numbering.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/04-IU8-section-numbering.sty)4
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-05-figures.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/05-IU8-figures.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-06-tables.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/06-IU8-tables.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-07-footnotes.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/07-IU8-footnotes.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-08-formulas.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/08-IU8-formulas.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-09-cites.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/09-IU8-cites.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-10-titlepage.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/10-IU8-titlepage.sty)64
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-11-performers.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/11-IU8-performers.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-12-abstract.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/12-IU8-abstract.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-13-contents.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/13-IU8-contents.sty)9
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-14-terms-and-definitions.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/14-IU8-terms-and-definitions.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-15-list-of-abbreviations.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/15-IU8-list-of-abbreviations.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-16-references.sty39
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-17-appendices.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/17-IU8-appendices.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-18-extra.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/18-IU8-extra.sty)17
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-19-counters.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/19-IU8-counters.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-20-listing.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/20-IU8-listing.sty)26
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-21-math.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/21-IU8-math.sty)2
-rw-r--r--Master/texmf-dist/tex/latex/bmstu-iu8/IU8-22-algorithms.sty (renamed from Master/texmf-dist/tex/latex/bmstu-iu8/22-IU8-algorithms.sty)2
-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/bxjatoucs/bxjatoucs.sty80
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls8
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls13
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def2
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def2
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def2
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def14
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty2
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls13
-rw-r--r--Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls8
-rw-r--r--Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty206
-rw-r--r--Master/texmf-dist/tex/latex/calculatoritems/calculatoritems.sty401
-rw-r--r--Master/texmf-dist/tex/latex/catppuccinpalette/catppuccinpalette.sty300
-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/changebar/changebar.sty34
-rw-r--r--Master/texmf-dist/tex/latex/changelog/changelog.sty32
-rw-r--r--Master/texmf-dist/tex/latex/chemformula-ru/chemformula-ru.sty24
-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/circledtext/circledtext.sty324
-rw-r--r--Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty4
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-bib.sty137
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-cite.sty378
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-compatible.sty61
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-init.sty191
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/citation-style-language.sty58
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-AT.xml4
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-CH.xml4
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-de-DE.xml4
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-en-US.xml3
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/locales/csl-locales-zh-TW.xml5
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/styles/american-medical-association.csl6
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/styles/apa.csl993
-rw-r--r--Master/texmf-dist/tex/latex/citation-style-language/styles/ieee.csl50
-rw-r--r--Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls132
-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.sty10
-rw-r--r--Master/texmf-dist/tex/latex/colortbl/colortbl.sty26
-rw-r--r--Master/texmf-dist/tex/latex/commalists-tools/commalists-tools.sty269
-rw-r--r--Master/texmf-dist/tex/latex/concmath-otf/concmath-otf.sty4
-rw-r--r--Master/texmf-dist/tex/latex/cora-macs/cora-macs.sty198
-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/cs-techrep/cs-techrep.cls140
-rw-r--r--Master/texmf-dist/tex/latex/csthm/csthm.sty146
-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.sty1644
-rw-r--r--Master/texmf-dist/tex/latex/dashrulex/dashrulex.sty30
-rw-r--r--Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.sty4
-rw-r--r--Master/texmf-dist/tex/latex/dccpaper/idcc.cls12
-rw-r--r--Master/texmf-dist/tex/latex/dccpaper/ijdc-v14.cls4
-rw-r--r--Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls4
-rw-r--r--Master/texmf-dist/tex/latex/delimset/delimset.sty262
-rw-r--r--Master/texmf-dist/tex/latex/doibanner/doibanner.sty98
-rw-r--r--Master/texmf-dist/tex/latex/dtk/dtk-url.sty6
-rw-r--r--Master/texmf-dist/tex/latex/dtk/dtk.cls4
-rw-r--r--Master/texmf-dist/tex/latex/dynkin-diagrams/dynkin-diagrams.sty219
-rw-r--r--Master/texmf-dist/tex/latex/easybook/easybase.sty1193
-rw-r--r--Master/texmf-dist/tex/latex/easybook/easybook.cls3
-rw-r--r--Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg4
-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/edmaths/edmaths.sty258
-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/enumext/enumext.sty6115
-rw-r--r--Master/texmf-dist/tex/latex/enverb/enverb.sty380
-rw-r--r--Master/texmf-dist/tex/latex/eolang/eolang.sty6
-rw-r--r--Master/texmf-dist/tex/latex/esami/esami.sty1
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-100euro.pdfbin0 -> 955673 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-100eurosimple.pdfbin0 -> 62058 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-100eurosimplebw.pdfbin0 -> 62345 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-10cent.pdfbin0 -> 27497 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-10centsimple.pdfbin0 -> 11617 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-10centsimplebw.pdfbin0 -> 11163 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-10euro.pdfbin0 -> 160214 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-10eurosimple.pdfbin0 -> 22792 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-10eurosimplebw.pdfbin0 -> 22996 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-1cent.pdfbin0 -> 46257 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-1centsimple.pdfbin0 -> 2172 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-1centsimplebw.pdfbin0 -> 2164 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-1euro.pdfbin0 -> 19980 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-1eurosimple.pdfbin0 -> 5894 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-1eurosimplebw.pdfbin0 -> 5910 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-200euro.pdfbin0 -> 354898 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-200eurosimple.pdfbin0 -> 22825 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-200eurosimplebw.pdfbin0 -> 23006 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-20cent.pdfbin0 -> 26569 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-20centsimple.pdfbin0 -> 10164 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-20centsimplebw.pdfbin0 -> 9960 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-20euro.pdfbin0 -> 78801 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-20eurosimple.pdfbin0 -> 22382 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-20eurosimplebw.pdfbin0 -> 22394 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-2cent.pdfbin0 -> 45967 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-2centsimple.pdfbin0 -> 2130 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-2centsimplebw.pdfbin0 -> 2122 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-2euro.pdfbin0 -> 23244 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-2eurosimple.pdfbin0 -> 5941 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-2eurosimplebw.pdfbin0 -> 5897 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-500euro.pdfbin0 -> 231203 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-500eurosimple.pdfbin0 -> 22885 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-500eurosimplebw.pdfbin0 -> 23168 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-50cent.pdfbin0 -> 27558 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-50centsimple.pdfbin0 -> 11748 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-50centsimplebw.pdfbin0 -> 11303 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-50euro.pdfbin0 -> 235259 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-50eurosimple.pdfbin0 -> 17891 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-50eurosimplebw.pdfbin0 -> 18128 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-5cent.pdfbin0 -> 45981 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-5centsimple.pdfbin0 -> 2200 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-5centsimplebw.pdfbin0 -> 2181 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-5euro.pdfbin0 -> 424391 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-5eurosimple.pdfbin0 -> 60083 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney-5eurosimplebw.pdfbin0 -> 60042 bytes
-rw-r--r--Master/texmf-dist/tex/latex/euromoney/euromoney.sty549
-rw-r--r--Master/texmf-dist/tex/latex/exframe/exframe.sty289
-rw-r--r--Master/texmf-dist/tex/latex/ezedits/ezedits.sty221
-rw-r--r--Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty2
-rw-r--r--Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty52
-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-swift.code2
-rw-r--r--Master/texmf-dist/tex/latex/fancyqr/fancyqr.sty110
-rw-r--r--Master/texmf-dist/tex/latex/fillwith/fillwith.sty349
-rw-r--r--Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx37
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-UKenglish.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-USenglish.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-american.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-brazilian.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-british.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-dutch.def (renamed from Master/texmf-dist/tex/latex/regulatory/fc-dutch.def)96
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-english.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-francais.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-french.def8
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-frenchb.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-german.def46
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-germanb.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-italian.def59
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-ngerman.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-ngermanb.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def45
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-portuguese.def6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def226
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fcnumparser.sty6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fcprefix.sty6
-rw-r--r--Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty13
-rw-r--r--Master/texmf-dist/tex/latex/fontscale/fontscale.sty1435
-rw-r--r--Master/texmf-dist/tex/latex/fontsetup/fontsetup.sty70
-rw-r--r--Master/texmf-dist/tex/latex/fontsetup/fspdefault.tex7
-rw-r--r--Master/texmf-dist/tex/latex/fontsetup/fspebgaramondot.tex11
-rw-r--r--Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex7
-rw-r--r--Master/texmf-dist/tex/latex/fontsetup/fspsansdefault.tex599
-rw-r--r--Master/texmf-dist/tex/latex/fourier/fourier-orns.sty14
-rw-r--r--Master/texmf-dist/tex/latex/fourier/fourier.sty5
-rw-r--r--Master/texmf-dist/tex/latex/fourier/ufuts.fd4
-rw-r--r--Master/texmf-dist/tex/latex/framedsyntax/FramedSyntax.sty257
-rw-r--r--Master/texmf-dist/tex/latex/fvextra/fvextra.sty470
-rw-r--r--Master/texmf-dist/tex/latex/gb4e-next/gb4e-next.sty58
-rw-r--r--Master/texmf-dist/tex/latex/gelasiomath/gelasiomath.sty295
-rw-r--r--Master/texmf-dist/tex/latex/gelasiomath/ly1mingelasio.fd91
-rw-r--r--Master/texmf-dist/tex/latex/gelasiomath/omlzgelmi.fd30
-rw-r--r--Master/texmf-dist/tex/latex/gelasiomath/ot1mingelasio.fd78
-rw-r--r--Master/texmf-dist/tex/latex/gelasiomath/t1mingelasio.fd51
-rw-r--r--Master/texmf-dist/tex/latex/gelasiomath/untxmia.fd139
-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/gridset/gridset.sty6
-rw-r--r--Master/texmf-dist/tex/latex/harmony/harmony.sty186
-rw-r--r--Master/texmf-dist/tex/latex/hebdomon/hebdomon.cls412
-rw-r--r--Master/texmf-dist/tex/latex/heria/heria.cls45
-rw-r--r--Master/texmf-dist/tex/latex/heria/hi-methodology.tex2
-rw-r--r--Master/texmf-dist/tex/latex/heria/hi-workplan.tex21
-rw-r--r--Master/texmf-dist/tex/latex/heria/hi-wp-description.tex6
-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/huawei/huawei.cls205
-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.inc20
-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/hvlogos/hvlogos.sty3
-rw-r--r--Master/texmf-dist/tex/latex/hypcap/hypcap.sty (renamed from Master/texmf-dist/tex/latex/oberdiek/hypcap.sty)11
-rw-r--r--Master/texmf-dist/tex/latex/hypdestopt/hypdestopt.sty18
-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.sty147
-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.cls36
-rw-r--r--Master/texmf-dist/tex/latex/iaria/iaria.cls116
-rw-r--r--Master/texmf-dist/tex/latex/inlinegraphicx/inlinegraphicx.sty48
-rw-r--r--Master/texmf-dist/tex/latex/interlinear/interlinear.sty1176
-rw-r--r--Master/texmf-dist/tex/latex/iran-bibtex/iran-bibtex.sty14
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV003.pdfbin0 -> 1123 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV004.pdfbin0 -> 1861 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV009.pdfbin0 -> 1530 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV010.pdfbin0 -> 1307 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV011.pdfbin0 -> 4364 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV012.pdfbin0 -> 4636 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV013.pdfbin0 -> 1736 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV027.pdfbin0 -> 4901 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV028.pdfbin0 -> 6703 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV029.pdfbin0 -> 9946 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV064.pdfbin0 -> 1729 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV067.pdfbin0 -> 2733 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E001.pdfbin0 -> 1828 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E002.pdfbin0 -> 1824 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E003.pdfbin0 -> 972 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E004.pdfbin0 -> 1762 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E007.pdfbin0 -> 2068 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E008.pdfbin0 -> 1657 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E009.pdf69
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E010.pdfbin0 -> 1203 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E011.pdfbin0 -> 4272 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E012.pdfbin0 -> 4612 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E013.pdf71
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E014.pdfbin0 -> 4467 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E015.pdfbin0 -> 2117 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E016.pdfbin0 -> 1897 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E017.pdfbin0 -> 2562 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E018.pdfbin0 -> 1288 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E019.pdfbin0 -> 1281 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E020.pdfbin0 -> 1943 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E021.pdfbin0 -> 2852 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E022.pdfbin0 -> 1177 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E023.pdfbin0 -> 1172 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E024.pdfbin0 -> 1674 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E025.pdfbin0 -> 4345 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E026.pdfbin0 -> 1489 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E027.pdfbin0 -> 4814 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E028.pdfbin0 -> 6617 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E029.pdfbin0 -> 9864 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E030.pdfbin0 -> 1495 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E031.pdfbin0 -> 1721 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E032.pdfbin0 -> 3770 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E033.pdf69
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E034.pdf69
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E035.pdfbin0 -> 3820 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E036.pdfbin0 -> 4287 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E037.pdfbin0 -> 1959 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E038.pdfbin0 -> 4687 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E039.pdfbin0 -> 3955 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E040.pdfbin0 -> 1572 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E041.pdfbin0 -> 3792 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E042.pdfbin0 -> 3390 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E043.pdfbin0 -> 5583 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E044.pdfbin0 -> 3280 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E045.pdfbin0 -> 4814 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E046.pdfbin0 -> 4015 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E047.pdfbin0 -> 2346 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E048.pdfbin0 -> 2534 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E049.pdfbin0 -> 2423 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E050.pdfbin0 -> 4458 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E051.pdfbin0 -> 3907 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E052.pdfbin0 -> 2204 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E053.pdfbin0 -> 1886 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E054.pdfbin0 -> 3880 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E055.pdfbin0 -> 3269 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E056.pdfbin0 -> 2379 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E057.pdfbin0 -> 1169 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E058.pdf68
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E059.pdfbin0 -> 1136 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E060.pdfbin0 -> 2474 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E061.pdfbin0 -> 4273 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E062.pdfbin0 -> 1760 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E063.pdfbin0 -> 1878 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E064.pdfbin0 -> 1605 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E065.pdfbin0 -> 1808 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E067.pdfbin0 -> 2617 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E068.pdfbin0 -> 6730 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E069.pdfbin0 -> 3345 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E070.pdfbin0 -> 1621 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F001.pdfbin0 -> 1567 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F002.pdfbin0 -> 2714 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F003.pdfbin0 -> 1780 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F004.pdfbin0 -> 2131 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F005.pdfbin0 -> 2289 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F006.pdfbin0 -> 2183 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F007.pdfbin0 -> 3380 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F008.pdfbin0 -> 3755 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F009.pdfbin0 -> 2238 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F010.pdfbin0 -> 1862 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F011.pdfbin0 -> 4254 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F012.pdfbin0 -> 1792 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F013.pdfbin0 -> 1813 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F014.pdfbin0 -> 1735 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F015.pdfbin0 -> 1925 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F016.pdfbin0 -> 2653 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F017.pdfbin0 -> 2724 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F018.pdfbin0 -> 1943 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F019.pdfbin0 -> 2100 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M001.pdf69
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M002.pdfbin0 -> 1499 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M003.pdfbin0 -> 1608 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M004.pdfbin0 -> 2358 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M005.pdfbin0 -> 1110 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M006.pdfbin0 -> 2002 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M007.pdfbin0 -> 2092 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M008.pdfbin0 -> 1673 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M009.pdfbin0 -> 2297 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M010.pdfbin0 -> 1301 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M011.pdfbin0 -> 3054 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M012.pdf71
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M013.pdfbin0 -> 1849 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M014.pdf72
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M015.pdfbin0 -> 1271 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M016.pdfbin0 -> 1790 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M017.pdfbin0 -> 3757 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M018.pdfbin0 -> 2225 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M019.pdfbin0 -> 1772 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M020.pdfbin0 -> 1519 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M021.pdfbin0 -> 1351 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M022.pdfbin0 -> 1760 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M023.pdfbin0 -> 1596 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M024.pdfbin0 -> 1498 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M025.pdfbin0 -> 3246 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M026.pdfbin0 -> 1851 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M027.pdfbin0 -> 6227 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M028.pdfbin0 -> 2649 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M029.pdfbin0 -> 1879 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M030.pdfbin0 -> 6119 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M031.pdfbin0 -> 8180 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M032.pdfbin0 -> 5413 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M033.pdfbin0 -> 5446 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M034.pdfbin0 -> 5112 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M035.pdfbin0 -> 4825 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M036.pdfbin0 -> 3857 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M037.pdfbin0 -> 5183 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M038.pdfbin0 -> 11904 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M039.pdfbin0 -> 15091 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M040.pdfbin0 -> 16077 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M041.pdfbin0 -> 7136 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M042.pdfbin0 -> 5538 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M043.pdfbin0 -> 13741 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M044.pdfbin0 -> 3064 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M045.pdfbin0 -> 8883 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M046.pdfbin0 -> 6530 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M047.pdfbin0 -> 7106 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M048.pdfbin0 -> 15525 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M049.pdfbin0 -> 6205 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M050.pdfbin0 -> 3548 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M051.pdfbin0 -> 3544 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M052.pdfbin0 -> 4020 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M053.pdfbin0 -> 2284 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M054.pdfbin0 -> 4966 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M055.pdfbin0 -> 2010 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M056.pdfbin0 -> 1607 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M057.pdfbin0 -> 1246 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M058.pdfbin0 -> 2414 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M059.pdfbin0 -> 1469 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M060.pdfbin0 -> 2420 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P001.pdfbin0 -> 1197 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P002.pdfbin0 -> 1698 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P003.pdfbin0 -> 1972 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P004.pdfbin0 -> 1811 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P005.pdfbin0 -> 1768 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P006.pdfbin0 -> 2253 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P007.pdfbin0 -> 1676 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P008.pdf72
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P009.pdfbin0 -> 1869 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P010.pdfbin0 -> 1775 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P011.pdfbin0 -> 4499 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P012.pdfbin0 -> 1497 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P013.pdfbin0 -> 3162 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P014.pdfbin0 -> 2354 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P015.pdfbin0 -> 1812 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P016.pdfbin0 -> 8652 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P017.pdf73
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P018.pdfbin0 -> 1542 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P019.pdfbin0 -> 1772 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P020.pdfbin0 -> 2595 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P021.pdfbin0 -> 1562 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P022.pdf71
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P023.pdfbin0 -> 1576 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P024.pdfbin0 -> 1684 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P025.pdfbin0 -> 2175 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P026.pdfbin0 -> 3995 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P027.pdf74
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P028.pdfbin0 -> 2847 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P029.pdf73
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P030.pdfbin0 -> 2978 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P031.pdfbin0 -> 1582 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P032.pdfbin0 -> 1812 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P033.pdfbin0 -> 15245 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P034.pdfbin0 -> 13872 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P035.pdfbin0 -> 8281 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P036.pdfbin0 -> 2524 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P037.pdfbin0 -> 2542 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P038.pdfbin0 -> 2576 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P039.pdfbin0 -> 6372 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P040.pdfbin0 -> 3697 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P041.pdfbin0 -> 1640 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P042.pdfbin0 -> 1674 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P043.pdfbin0 -> 5266 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P044.pdfbin0 -> 3478 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P045.pdfbin0 -> 1783 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P046.pdfbin0 -> 2063 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P047.pdfbin0 -> 2517 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P048.pdfbin0 -> 1789 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P049.pdfbin0 -> 2190 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P050.pdfbin0 -> 1936 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P051.pdfbin0 -> 2248 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P052.pdfbin0 -> 2184 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P053.pdfbin0 -> 2191 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P054.pdfbin0 -> 2405 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P055.pdfbin0 -> 2247 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P056.pdfbin0 -> 1914 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P057.pdfbin0 -> 2349 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P058.pdfbin0 -> 2302 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P059.pdfbin0 -> 2945 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P060.pdfbin0 -> 1340 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P061.pdfbin0 -> 2408 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P062.pdfbin0 -> 3032 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P063.pdfbin0 -> 2419 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P064.pdfbin0 -> 2879 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P065.pdfbin0 -> 3193 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P066.pdfbin0 -> 2490 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P067.pdfbin0 -> 1517 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P068.pdfbin0 -> 2240 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P069.pdfbin0 -> 1825 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P070.pdfbin0 -> 5310 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P071.pdfbin0 -> 1913 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P072.pdfbin0 -> 1844 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P073.pdfbin0 -> 2703 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P074.pdfbin0 -> 2906 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P075.pdfbin0 -> 1702 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W001.pdf69
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W002.pdfbin0 -> 10194 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W003.pdf69
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W004.pdfbin0 -> 1684 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W005.pdfbin0 -> 2585 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W006.pdfbin0 -> 1768 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W007.pdfbin0 -> 2221 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W008.pdfbin0 -> 2179 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W009.pdfbin0 -> 2430 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W010.pdfbin0 -> 1731 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W011.pdfbin0 -> 1851 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W012.pdfbin0 -> 1064 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W013.pdfbin0 -> 3018 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W014.pdfbin0 -> 2159 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W015.pdfbin0 -> 1933 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W016.pdfbin0 -> 2628 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W017.pdfbin0 -> 1280 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W018.pdfbin0 -> 2619 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W019.pdfbin0 -> 1803 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W020.pdfbin0 -> 1611 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W021.pdfbin0 -> 2127 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W022.pdfbin0 -> 1671 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W023.pdfbin0 -> 2778 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W024.pdfbin0 -> 1398 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W025.pdfbin0 -> 3060 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W026.pdfbin0 -> 1754 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W027.pdfbin0 -> 1525 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W028.pdfbin0 -> 2278 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W029.pdfbin0 -> 4426 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W030.pdfbin0 -> 2473 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W031.pdfbin0 -> 2764 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W032.pdfbin0 -> 2952 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W033.pdfbin0 -> 3108 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W034.pdfbin0 -> 3383 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W035.pdfbin0 -> 2962 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W036.pdfbin0 -> 23961 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W037.pdfbin0 -> 8525 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W038.pdfbin0 -> 7126 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W039.pdfbin0 -> 1690 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W040.pdfbin0 -> 12232 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W041.pdfbin0 -> 42519 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W042.pdfbin0 -> 1485 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W043.pdfbin0 -> 3520 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W044.pdfbin0 -> 2163 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W045.pdfbin0 -> 4400 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W046.pdfbin0 -> 5475 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W047.pdfbin0 -> 3771 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W048.pdfbin0 -> 3758 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W049.pdfbin0 -> 5523 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W050.pdfbin0 -> 3742 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W051.pdfbin0 -> 2539 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W052.pdfbin0 -> 4373 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W053.pdfbin0 -> 4771 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W054.pdfbin0 -> 2853 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W055.pdfbin0 -> 2162 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W056.pdfbin0 -> 2291 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W057.pdfbin0 -> 3440 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W058.pdfbin0 -> 5427 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W059.pdfbin0 -> 1685 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W060.pdfbin0 -> 4166 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W061.pdfbin0 -> 2533 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W062.pdfbin0 -> 7282 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W063.pdfbin0 -> 5035 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W064.pdfbin0 -> 1691 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W065.pdfbin0 -> 7289 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W066.pdfbin0 -> 6096 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W067.pdfbin0 -> 3205 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W068.pdfbin0 -> 2524 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W069.pdfbin0 -> 2964 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W070.pdfbin0 -> 1961 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W071.pdfbin0 -> 6626 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W072.pdfbin0 -> 1612 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W073.pdfbin0 -> 2727 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W074.pdfbin0 -> 2440 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W075.pdfbin0 -> 3039 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W076.pdfbin0 -> 2006 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W077.pdfbin0 -> 2607 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W078.pdfbin0 -> 1523 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W079.pdfbin0 -> 1778 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W080.pdfbin0 -> 1798 bytes
-rw-r--r--Master/texmf-dist/tex/latex/isosafety/isosafety.sty31
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/iwonamath.sty3
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omliwonamath.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omliwonamathc.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omliwonamathl.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omliwonamathlc.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omsiwonamath.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omsiwonamathc.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omsiwonamathcmsy.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omsiwonamathl.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omsiwonamathlc.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omxiwonamath.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omxiwonamathc.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omxiwonamathl.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/omxiwonamathlc.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/ot1iwonamath.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathc.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathcm.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathl.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlc.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlcm.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlm.fd2
-rw-r--r--Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathm.fd2
-rw-r--r--Master/texmf-dist/tex/latex/jigsaw/jigsaw-doc-settings.sty196
-rw-r--r--Master/texmf-dist/tex/latex/jlreq/jlreq-complements.sty14
-rw-r--r--Master/texmf-dist/tex/latex/jlreq/jlreq-trimmarks.sty17
-rw-r--r--Master/texmf-dist/tex/latex/jlreq/jlreq.cls324
-rw-r--r--Master/texmf-dist/tex/latex/jnuexam/jnuexam.cls8
-rw-r--r--Master/texmf-dist/tex/latex/joinbox/joinbox.sty94
-rw-r--r--Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty1015
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LGRJunicode-Inf.fd442
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LGRJunicode-LF.fd844
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LGRJunicode-OsF.fd806
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LGRJunicode-Sup.fd374
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LGRJunicode-TLF.fd836
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LGRJunicode-TOsF.fd796
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LY1Junicode-Inf.fd420
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LY1Junicode-LF.fd832
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LY1Junicode-OsF.fd854
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LY1Junicode-Sup.fd394
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LY1Junicode-TLF.fd852
-rw-r--r--Master/texmf-dist/tex/latex/junicode/LY1Junicode-TOsF.fd836
-rw-r--r--Master/texmf-dist/tex/latex/junicode/OT1Junicode-Inf.fd414
-rw-r--r--Master/texmf-dist/tex/latex/junicode/OT1Junicode-LF.fd794
-rw-r--r--Master/texmf-dist/tex/latex/junicode/OT1Junicode-OsF.fd798
-rw-r--r--Master/texmf-dist/tex/latex/junicode/OT1Junicode-Sup.fd440
-rw-r--r--Master/texmf-dist/tex/latex/junicode/OT1Junicode-TLF.fd804
-rw-r--r--Master/texmf-dist/tex/latex/junicode/OT1Junicode-TOsF.fd814
-rw-r--r--Master/texmf-dist/tex/latex/junicode/T1Junicode-Inf.fd456
-rw-r--r--Master/texmf-dist/tex/latex/junicode/T1Junicode-LF.fd832
-rw-r--r--Master/texmf-dist/tex/latex/junicode/T1Junicode-OsF.fd856
-rw-r--r--Master/texmf-dist/tex/latex/junicode/T1Junicode-Sup.fd404
-rw-r--r--Master/texmf-dist/tex/latex/junicode/T1Junicode-TLF.fd844
-rw-r--r--Master/texmf-dist/tex/latex/junicode/T1Junicode-TOsF.fd862
-rw-r--r--Master/texmf-dist/tex/latex/junicode/TS1Junicode-LF.fd398
-rw-r--r--Master/texmf-dist/tex/latex/junicode/TS1Junicode-OsF.fd422
-rw-r--r--Master/texmf-dist/tex/latex/junicode/TS1Junicode-TLF.fd446
-rw-r--r--Master/texmf-dist/tex/latex/junicode/TS1Junicode-TOsF.fd392
-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.cls30
-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.sty2735
-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/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/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.tex78
-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.cls54
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty19
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty2
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpage.sty11
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpage209.sty9
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty11
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty11
-rw-r--r--Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty54
-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.sty69
-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.sty10
-rw-r--r--Master/texmf-dist/tex/latex/letterswitharrows/letterswitharrows.sty89
-rw-r--r--Master/texmf-dist/tex/latex/lettrine/lettrine.sty12
-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.fd59
-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.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-OsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-Sup.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TOsF.fd36
-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.fd59
-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.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-OsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-Sup.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TOsF.fd36
-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.fd59
-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.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-OsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-Sup.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TOsF.fd36
-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.fd59
-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.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-OsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TLF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TOsF.fd36
-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.sty7
-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.sty976
-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/litesolution/litesolution.cls167
-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/lni/lni.cls83
-rw-r--r--Master/texmf-dist/tex/latex/lstaddons/lstautogobble.sty2
-rw-r--r--Master/texmf-dist/tex/latex/lstaddons/lstlinebgrd.sty12
-rw-r--r--Master/texmf-dist/tex/latex/luwiantype/luwiantype.sty1035
-rw-r--r--Master/texmf-dist/tex/latex/magicwatermark/magicwatermark.sty653
-rw-r--r--Master/texmf-dist/tex/latex/mailing/mailing.sty14
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdown.sty181
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty5
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty2
-rw-r--r--Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_markdown_defaults.sty545
-rw-r--r--Master/texmf-dist/tex/latex/mathastext/mathastext.sty1638
-rw-r--r--Master/texmf-dist/tex/latex/mathfixs/mathfixs.sty225
-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.sty144
-rw-r--r--Master/texmf-dist/tex/latex/mercatormap/mercatormap.sty922
-rw-r--r--Master/texmf-dist/tex/latex/mercatormap/mercatorpy.def16
-rw-r--r--Master/texmf-dist/tex/latex/mercatormap/mercatorsupplier.def221
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Dnom.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Inf.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-LF.fd75
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Numr.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-OsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Sup.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-TLF.fd75
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-TOsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Dnom.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Inf.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-LF.fd75
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Numr.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-OsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Sup.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-TLF.fd75
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-TOsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Dnom.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Inf.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-LF.fd75
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Numr.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-OsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Sup.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-TLF.fd75
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-TOsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Dnom.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Inf.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-LF.fd75
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Numr.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-OsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Sup.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-TLF.fd75
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-TOsF.fd44
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-LF.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-OsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-TLF.fd67
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-TOsF.fd36
-rw-r--r--Master/texmf-dist/tex/latex/mfb-oldstyle/mfb-oldstyle.sty93
-rw-r--r--Master/texmf-dist/tex/latex/minted/minted.sty2918
-rw-r--r--Master/texmf-dist/tex/latex/minted/minted2.sty1285
-rw-r--r--Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls306
-rw-r--r--Master/texmf-dist/tex/latex/mlacls/mla.cls21
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncv.cls142
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvbodyi.sty45
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvbodyii.sty45
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvbodyiii.sty50
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvbodyiv.sty39
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvbodyv.sty48
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvbodyvi.sty203
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcollection.sty4
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolorblack.sty12
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolorblue.sty12
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolorburgundy.sty12
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolorcerulean.sty32
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolorgreen.sty12
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolorgrey.sty12
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolororange.sty12
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolorpurple.sty12
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolorred.sty12
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcolors.tex35
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvcompatibility.sty4
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvdebugtools.sty8
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvfooti.sty14
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvheadi.sty54
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvheadii.sty40
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvheadiii.sty60
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvheadiv.sty30
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvheadv.sty57
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvheadvi.sty29
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvheadvii.sty226
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncviconsacademic.sty26
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncviconsawesome.sty91
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncviconsletters.sty17
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncviconsmarvosym.sty4
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncviconssymbols.sty4
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncviconstikz.sty29
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty408
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvstylebanking.sty42
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvstylecasual.sty44
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvstyleclassic.sty42
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvstylecontemporary.sty63
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvstyleempty.sty29
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvstylefancy.sty47
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvstyleoldstyle.sty47
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/moderncvverticaltimeline.sty79
-rw-r--r--Master/texmf-dist/tex/latex/moderncv/tweaklist.sty2
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch.sty5
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamerfontthememoloch.sty128
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamerinnerthememoloch.sty37
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamerouterthememoloch.sty42
-rw-r--r--Master/texmf-dist/tex/latex/moloch/beamerthememoloch.sty38
-rw-r--r--Master/texmf-dist/tex/latex/moremath/moremath.sty1245
-rw-r--r--Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls8
-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.sty12
-rw-r--r--Master/texmf-dist/tex/latex/newcomputermodern/newcomputermodern.sty10
-rw-r--r--Master/texmf-dist/tex/latex/newtx/newtx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/newtx/newtxmath.sty10
-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.sty1736
-rw-r--r--Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls4
-rw-r--r--Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty780
-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/ocgx2/ocgbase.sty275
-rw-r--r--Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty255
-rw-r--r--Master/texmf-dist/tex/latex/orcidlink/orcidlink.sty22
-rw-r--r--Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty141
-rw-r--r--Master/texmf-dist/tex/latex/overarrows/overarrows.sty456
-rw-r--r--Master/texmf-dist/tex/latex/pagelayout/pagelayout.cls10
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Indication/PanneauRouteC24a.pdfbin0 -> 1345 bytes
-rw-r--r--Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB14_80.pdfbin0 -> 2775 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.sty18
-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.sty56
-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.sty7
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def47
-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.sty4
-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.ltx144
-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.sty14
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def6
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppdvips.def6
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppluatex.def6
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppnull.def6
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/pppdftex.def6
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppvtex.def6
-rw-r--r--Master/texmf-dist/tex/latex/pdfpages/ppxetex.def16
-rw-r--r--Master/texmf-dist/tex/latex/pdfx/pdfx.sty256
-rw-r--r--Master/texmf-dist/tex/latex/pgf-periodictable/pgf-PeriodicTable.sty97
-rw-r--r--Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.backcolors.keys.tex51
-rw-r--r--Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.buildcell.tex23
-rw-r--r--Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.data.tex236
-rw-r--r--Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.drawing.keys.tex39
-rw-r--r--Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.names.tex18
-rw-r--r--Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.data.LSE.tex20
-rw-r--r--Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty13
-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/pgfornament/pgfornament.sty13
-rw-r--r--Master/texmf-dist/tex/latex/pgfplotsthemebeamer/pgfplotsthemebeamer.sty37
-rw-r--r--Master/texmf-dist/tex/latex/photobook/photobook.cls92
-rw-r--r--Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty110
-rw-r--r--Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty98
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/arabicnumbers.sty23
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/cal-util.def2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-acadian.ldf (renamed from Master/texmf-dist/tex/latex/polyglossia/gloss-acadien.ldf)4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf21
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-IQ.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-JO.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-LB.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-MR.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-PS.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-SY.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar-YE.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf320
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf70
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-australian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-be-tarask.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf101
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf44
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-brazil.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf10
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf20
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-chinese.ldf163
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Arab.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Latn.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf9
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf54
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf28
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf4
-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.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1996.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1901.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1996.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1901.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1996.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1901.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1996.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1901.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1996.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1901.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1996.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf24
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ecclesiasticlatin.ldf9
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-el-monoton.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-el-polyton.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-AU.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-CA.ldf6
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-GB.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-NZ.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en-US.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf74
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-es-ES.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-es-MX.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf6
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf85
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA-u-sd-canb.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CH.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr-FR.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf324
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf37
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf47
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf184
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf144
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf69
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf40
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf364
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-irish.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf24
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf62
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf22
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf30
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Arab.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Latn.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf425
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Arab.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Latn.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf160
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-classic.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-ecclesia.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-medieval.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf23
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-latex.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf238
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-latinclassic.ldf9
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-latinecclesiastic.ldf9
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-latinmedieval.ldf9
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf8
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf85
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf32
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-medievallatin.ldf9
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf67
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-norsk.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf38
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf20
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-odia.ldf49
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf96
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf20
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf28
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-portuges.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf57
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-punjabi.ldf35
-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.ldf130
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf8
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf73
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf138
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf30
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf10
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf80
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf84
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-swissgerman.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf97
-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.ldf30
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf26
-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.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf79
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-uppersorbian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf116
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-uyghur.ldf423
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf31
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-zh-CN.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-zh-TW.ldf4
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/hebrewcal.sty2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/hijrical.sty2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-cjk-spacing.lua (renamed from Master/texmf-dist/tex/latex/polyglossia/polyglossia-korean.lua)198
-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.lua18
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua2
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-tibt.lua31
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua13
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty1986
-rw-r--r--Master/texmf-dist/tex/latex/polyomino/polyomino.sty286
-rw-r--r--Master/texmf-dist/tex/latex/postnotes/postnotes.sty1838
-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/preview/prauctex.cfg6
-rw-r--r--Master/texmf-dist/tex/latex/preview/preview.sty4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCAllumettes.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCArbreCalcul.tex546
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCArbreChiffre.tex3
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCAssemblagesSolides.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCAutomatismes.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex8
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCBarreNiveaux.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCBarresCalculs.tex3
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCBillard.tex17
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCBonSortie.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCBonbon.tex6
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex3
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCalculsCroises.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCalculsDetailles.tex147
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCalculsFractions.tex27
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCartesJeux.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCartesMentales.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex64
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCheque.tex125
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCible.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCibleQOp.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCColorilude.tex8
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCompteBon.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCConversion.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCritere.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCryptarithme.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDecDeci.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDecompFracDeci.tex15
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDecomposerNombrePremier.tex147
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDefiCalc.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDefiTables.tex5
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDessinAlgo.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDessinGradue.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDiagrammeRadar.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex3
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDobble.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDomino.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDontCountDots.tex6
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCEcrireunQCM.tex296
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCEcritureLettres.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCEcritureUnites.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex28
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCEnigmeAire.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCEnquete.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCEratosthene.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCFactorisation.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCFicheMemo.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCFonctionAffine.tex22
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCFractionAireCarre.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCFractionNombre.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCFrise.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCFubuki.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCFutoshiki.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCGaram.tex12
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex10
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCGrades.tex8
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCGrimuku.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCHiddenMessage.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCHorloge.tex31
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCInfixRPN.sty538
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCJeton.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCJeuRangement.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCKakurasu.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCKakuro.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCKenKen.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheJeu.tex8
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheNombre.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCLego.tex10
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMentalo.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMidpoint.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMosaique.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMotsCroises.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMotsEmpiles.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMulJal.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMulJap.tex5
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMulPiecesPuzzle.tex14
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCNombreAstral.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCNonogramme.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex58
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCNumberHive.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCOperationsTrou.tex8
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPapiers.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPatronPaves.tex505
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPattern.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPavage.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPixelArt.tex216
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPourcentage.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCProbaFrequence.tex189
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCProbabilites.tex14
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCProgrammeCalcul.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex50
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCProprietesDroites.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPuissanceQuatre.tex82
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPuzzleSommePyramide.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPyraVoca.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPyramideCalculs.tex307
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCQuestionsFlash.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex66
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCQuiSuisJe.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRLE.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRangementNombres.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRapido.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRappelsFormules.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRecyclage.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRepresentationGraphique.tex19
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRepresenterEntier.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRepresenterFraction.tex575
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex15
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCReseauxSociaux.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRondeInfernale.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRose.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCSerpent.tex211
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCShikaku.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex10
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex126
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCSommeAngles.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCSquaro.tex76
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex12
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTableauDoubleEntree.tex62
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTableauxUnites.tex11
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTablesOperations.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTectonic.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCThales.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTicketCaisse.tex163
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTortueBase.tex10
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTriominos.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCUrneProba.tex932
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCVisualisationMulDeci.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCVueCubes.tex15
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCYohaku.tex4
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty81
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/ProfLycee-Light.sty389
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty338
-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.tex98
-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.tex165
-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.tex164
-rw-r--r--Master/texmf-dist/tex/latex/proflycee/proflycee-tools-trigo.tex25
-rw-r--r--Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty3160
-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/prtec/prtec.cls204
-rw-r--r--Master/texmf-dist/tex/latex/pst-coil/pst-coil.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pst-diffraction/pst-diffraction.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pst-node/pst-node.sty11
-rw-r--r--Master/texmf-dist/tex/latex/quizztex/quizztex.sty11
-rw-r--r--Master/texmf-dist/tex/latex/quran/quran-transde.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/quran-transen.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/quran-transfa.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/quran-transfr.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/quran-translt.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/quran.sty8
-rw-r--r--Master/texmf-dist/tex/latex/quran/qurantext-de.translation.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/qurantext-en.translation.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/qurantext-en.transliteration.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/qurantext-fa.translation.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/qurantext-fr.translation.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/qurantext-simple.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/qurantext-uthmani-min.def4
-rw-r--r--Master/texmf-dist/tex/latex/quran/qurantext-uthmani.def4
-rw-r--r--Master/texmf-dist/tex/latex/randexam/randexam.cls13
-rw-r--r--Master/texmf-dist/tex/latex/randintlist/randintlist.sty247
-rw-r--r--Master/texmf-dist/tex/latex/rebuttal/rebuttal.sty474
-rw-r--r--Master/texmf-dist/tex/latex/regulatory/regulatory.sty4
-rw-r--r--Master/texmf-dist/tex/latex/reledmac/reledpar.sty38
-rw-r--r--Master/texmf-dist/tex/latex/reptheorem/reptheorem.sty74
-rw-r--r--Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.sty3
-rw-r--r--Master/texmf-dist/tex/latex/responsive/responsive.sty12
-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.sty40
-rw-r--r--Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty2
-rw-r--r--Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty4
-rw-r--r--Master/texmf-dist/tex/latex/rub-kunstgeschichte/rub-kunstgeschichte.cls201
-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.sty212
-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/scrhack-2023-07-07.sty (renamed from Master/texmf-dist/tex/latex/koma-script/scrhack.sty)130
-rw-r--r--Master/texmf-dist/tex/latex/scrhack/scrhack.sty390
-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/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.cls20
-rw-r--r--Master/texmf-dist/tex/latex/se2thesis/se2translations-english.trsl10
-rw-r--r--Master/texmf-dist/tex/latex/se2thesis/se2translations-german.trsl2
-rw-r--r--Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty132
-rw-r--r--Master/texmf-dist/tex/latex/setspaceenhanced/setspaceenhanced.sty15
-rw-r--r--Master/texmf-dist/tex/latex/sidenotes/caesar_book.cls44
-rw-r--r--Master/texmf-dist/tex/latex/sidenotes/sidenotes.sty16
-rw-r--r--Master/texmf-dist/tex/latex/sillypage/sillypage.sty30
-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.tex6413
-rw-r--r--Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-xeluatex.tex6413
-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.sty179
-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.def6
-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.cls12
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls12
-rw-r--r--Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls45
-rw-r--r--Master/texmf-dist/tex/latex/spbmark/spbmark.sty86
-rw-r--r--Master/texmf-dist/tex/latex/spelatex/spelatex.sty289
-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.sty95
-rw-r--r--Master/texmf-dist/tex/latex/suanpan-l3/suanpan-l3.sty1412
-rw-r--r--Master/texmf-dist/tex/latex/subeqn/subeqn.sty18
-rw-r--r--Master/texmf-dist/tex/latex/subeqnarray/subeqnarray.sty17
-rw-r--r--Master/texmf-dist/tex/latex/sunpath/sunpath.sty161
-rw-r--r--Master/texmf-dist/tex/latex/supertabular/supertabular.sty130
-rw-r--r--Master/texmf-dist/tex/latex/synthslant/synthslant.sty41
-rw-r--r--Master/texmf-dist/tex/latex/tableof/tableof.sty27
-rw-r--r--Master/texmf-dist/tex/latex/tablvar/tablvar.sty118
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty36
-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.sty95
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def10
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty6
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def2
-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.csv2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv2
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua57
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty530
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty167
-rw-r--r--Master/texmf-dist/tex/latex/tblr-extras/tblr-extras-dev.sty242
-rw-r--r--Master/texmf-dist/tex/latex/tblr-extras/tblr-extras.sty93
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbbreakable.code.tex23
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbdocumentation.code.tex71
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbexternal.code.tex8
-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.tex21
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbskinsjigsaw.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/tcolorbox/tcbtheorems.code.tex36
-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.sty230
-rw-r--r--Master/texmf-dist/tex/latex/telprint/telprint.sty (renamed from Master/texmf-dist/tex/generic/oberdiek/telprint.sty)15
-rw-r--r--Master/texmf-dist/tex/latex/temporal-logic/temporal-logic.sty215
-rw-r--r--Master/texmf-dist/tex/latex/texvc/texvc.sty4
-rw-r--r--Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls30
-rw-r--r--Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty896
-rw-r--r--Master/texmf-dist/tex/latex/tikz3d-fr/tikz3d-fr.sty259
-rw-r--r--Master/texmf-dist/tex/latex/tikzbricks/tikzbricks-doc-settings.sty199
-rw-r--r--Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty86
-rw-r--r--Master/texmf-dist/tex/latex/tikzquads/tikzquads.sty27
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty29
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua4
-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.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua4
-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.lua4
-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.lua13
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua20
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua4
-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.lua4
-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.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua4
-rw-r--r--Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua49
-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.sty724
-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/tramlines/tramlines.sty6
-rw-r--r--Master/texmf-dist/tex/latex/trivialpursuit/TrivialPursuit.sty857
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo20
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo20
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo18
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo20
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo20
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo20
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls23
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls8
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls289
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo84
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls118
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty6
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls42
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo2
-rw-r--r--Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg21
-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/tutodoc/tutodoc-bw-admonitions.css.cls.sty46
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-listing.css.cls.sty30
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-main.css.cls.sty3
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-showcase.css.cls.sty21
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-version-n-change.css.cls.sty5
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-admonitions.css.cls.sty50
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-listing.css.cls.sty30
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-main.css.cls.sty3
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-showcase.css.cls.sty21
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-version-n-change.css.cls.sty5
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-admonitions.css.cls.sty50
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-listing.css.cls.sty30
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-main.css.cls.sty9
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-showcase.css.cls.sty21
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-version-n-change.css.cls.sty5
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-admonitions.css.cls.sty18
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-listing.css.cls.sty31
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-main.css.cls.sty3
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-showcase.css.cls.sty21
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-version-n-change.css.cls.sty5
-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-main-locale-en.cfg.cls.sty18
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-main-locale-es.cfg.cls.sty18
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc-main-locale-fr.cfg.cls.sty18
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc.cls1429
-rw-r--r--Master/texmf-dist/tex/latex/tutodoc/tutodoc.sty1063
-rw-r--r--Master/texmf-dist/tex/latex/typog/typog.sty484
-rw-r--r--Master/texmf-dist/tex/latex/uantwerpendocs/beamerthemeuantwerpen.sty2
-rw-r--r--Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenbamathesis.cls6
-rw-r--r--Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencolorlogoscheme.sty2
-rw-r--r--Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencoursetext.cls2
-rw-r--r--Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpendocs-en.data4
-rw-r--r--Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenexam.cls2
-rw-r--r--Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenletter.cls2
-rw-r--r--Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenphdthesis.cls2
-rw-r--r--Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenreport.cls2
-rw-r--r--Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls5
-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/ulthese/ulthese.cls75
-rw-r--r--Master/texmf-dist/tex/latex/unbtex/unbtex.cls776
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-expose.cls39
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-handout.cls39
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-paper.cls39
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-poster.cls61
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-thesis.cls135
-rw-r--r--Master/texmf-dist/tex/latex/univie-ling/univie-ling-wlg.cls52
-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/ut-thesis/ut-thesis.cls21
-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/verifycommand/verifycommand.sty194
-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.tex166
-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/wheelchart/wheelchart.sty330
-rw-r--r--Master/texmf-dist/tex/latex/wordle/wordle.sty864
-rw-r--r--Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty136
-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/xindex/xindex.sty2
-rw-r--r--Master/texmf-dist/tex/latex/xltabular/xltabular.sty91
-rw-r--r--Master/texmf-dist/tex/latex/xreview/xreview.sty135
-rw-r--r--Master/texmf-dist/tex/latex/ysabeau/ysabeau.sty33
-rw-r--r--Master/texmf-dist/tex/latex/zref-check/zref-check.sty24
-rw-r--r--Master/texmf-dist/tex/latex/zref-clever/zref-clever.sty1125
-rw-r--r--Master/texmf-dist/tex/latex/zref-vario/zref-vario.sty12
-rw-r--r--Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty197
-rw-r--r--Master/texmf-dist/tex/latex/zugferd/zugferd.sty1234
-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/domaincoloring/domaincoloring-complex-numbers.lua357
-rw-r--r--Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring-functions.lua110
-rw-r--r--Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring.lua336
-rw-r--r--Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring.sty107
-rw-r--r--Master/texmf-dist/tex/lualatex/gitinfo-lua/gitinfo-lua.sty11
-rw-r--r--Master/texmf-dist/tex/lualatex/ideavault/ideavault-lua.lua61
-rw-r--r--Master/texmf-dist/tex/lualatex/ideavault/ideavault.sty6
-rw-r--r--Master/texmf-dist/tex/lualatex/innerscript/innerscript.sty22
-rw-r--r--Master/texmf-dist/tex/lualatex/junicodevf/junicodevf.sty2
-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/longmath/longmath.lua13
-rw-r--r--Master/texmf-dist/tex/lualatex/longmath/longmath.sty11
-rw-r--r--Master/texmf-dist/tex/lualatex/luacensor/luacensor.sty14
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-amsmath.lua133
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-array.lua84
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-convert.lua662
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-data-combining.lua27
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-data-stretchy.lua500
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-demo.sty82
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-legacy-mappings.lua73
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-lr.lua71
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amsmath.sty417
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amstext.sty37
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-array.sty101
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-kernel.sty76
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-patches-lab-math.sty20
-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.sty50
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-pdf.sty206
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-structelemwriter.lua123
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-table.lua110
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-tex-annotate.lua128
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-tex.lua232
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml-xmlwriter.lua58
-rw-r--r--Master/texmf-dist/tex/lualatex/luamml/luamml.sty134
-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.lua2314
-rw-r--r--Master/texmf-dist/tex/lualatex/piton/piton.sty607
-rw-r--r--Master/texmf-dist/tex/lualatex/plantuml/plantuml.lua9
-rw-r--r--Master/texmf-dist/tex/lualatex/plantuml/plantuml.sty8
-rw-r--r--Master/texmf-dist/tex/lualatex/tango/tango.cls2182
-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.lua2
-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.lua132
-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/lualatex/yamlvars/yamlvars.lua16
-rw-r--r--Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty4
-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.lua1023
-rw-r--r--Master/texmf-dist/tex/luatex/luamplib/luamplib.sty407
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-27c.sty16
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29c.sty16
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29e.sty16
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-ruby.sty18
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/lltjext.sty128
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-adjust.lua34
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua7
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua10
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua18
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty103
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-pretreat.lua7
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-rmlgbm.lua22
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua368
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls2
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltjsbook.cls2
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltjskiyou.cls2
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltjspf.cls2
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltjsreport.cls2
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/luatexja-core.sty5
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/luatexja.lua7
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/luatexja.sty2
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty9
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty51
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty319
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-array.sty25
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-footmisc.sty62
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-geometry.sty24
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-siunitx.sty113
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-cssquery.lua14
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua186
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-encodings.lua89
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-html.lua227
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-sty.lua155
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml-transform.lua20
-rw-r--r--Master/texmf-dist/tex/luatex/luaxml/luaxml.sty123
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown-parser.lua8963
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua4
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown-unicode-data.lua81
-rw-r--r--Master/texmf-dist/tex/luatex/markdown/markdown.lua8366
-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.lua250
-rw-r--r--Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty71
-rw-r--r--Master/texmf-dist/tex/optex/base/basic-macros.opm7
-rw-r--r--Master/texmf-dist/tex/optex/base/fonts-opmac.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/hi-syntax.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/hisytnax-kt.opm122
-rw-r--r--Master/texmf-dist/tex/optex/base/if-macros.opm23
-rw-r--r--Master/texmf-dist/tex/optex/base/luatex-ini.opm12
-rw-r--r--Master/texmf-dist/tex/optex/base/margins.opm2
-rw-r--r--Master/texmf-dist/tex/optex/base/math-macros.opm11
-rw-r--r--Master/texmf-dist/tex/optex/base/more-macros.opm13
-rw-r--r--Master/texmf-dist/tex/optex/base/optex-tricks.opm210
-rw-r--r--Master/texmf-dist/tex/optex/base/optex.ini2
-rw-r--r--Master/texmf-dist/tex/optex/base/optex.lua42
-rw-r--r--Master/texmf-dist/tex/optex/base/others.opm34
-rw-r--r--Master/texmf-dist/tex/optex/base/output.opm13
-rw-r--r--Master/texmf-dist/tex/optex/base/parameters.opm5
-rw-r--r--Master/texmf-dist/tex/optex/base/plain-macros.opm7
-rw-r--r--Master/texmf-dist/tex/optex/base/references.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/table.opm4
-rw-r--r--Master/texmf-dist/tex/optex/base/usebib.opm23
-rw-r--r--Master/texmf-dist/tex/optex/base/verbatim.opm2
-rw-r--r--Master/texmf-dist/tex/optex/pkg/math.opm208
-rw-r--r--Master/texmf-dist/tex/optex/pkg/mte.opm2
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebacromac.tex125
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebbin/dcwebmac.tex2
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebbin/fcwebmac.tex2
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebbin/icwebmac.tex14
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctproofmac.tex76
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex57
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebbin/pdfwebtocfront.tex2
-rw-r--r--Master/texmf-dist/tex/plain/cweb/cwebmac.tex93
-rw-r--r--Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex126
-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/platex/pxchfon/pxchfon.sty627
-rw-r--r--Master/texmf-dist/tex/platex/pxchfon/pxchfon0.def239
-rw-r--r--Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-ajm.def165
-rw-r--r--Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-enc.sty4
-rw-r--r--Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-uni.def4
-rw-r--r--Master/texmf-dist/tex/platex/pxjahyper/pxjahyper.sty331
-rw-r--r--Master/texmf-dist/tex/xelatex/bhcexam/BHCexam.cls218
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hdubadge.pdfbin0 -> 22109 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.layout-module.code.tex149
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-font-module.code.tex29
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.layout-module.code.tex149
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-preamble-module.code.tex69
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-unv.layout-module.code.tex59
-rw-r--r--Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls149
-rw-r--r--Master/texmf-dist/tex/xelatex/quran-es/quran-es.sty278
-rw-r--r--Master/texmf-dist/tex/xelatex/quran-es/qurantext-esi.translation.def6237
-rw-r--r--Master/texmf-dist/tex/xelatex/quran-es/qurantext-esii.translation.def6237
-rw-r--r--Master/texmf-dist/tex/xelatex/quran-es/qurantext-esiii.translation.def6237
2748 files changed, 195820 insertions, 74056 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/chat/t-chat.mkiv b/Master/texmf-dist/tex/context/third/chat/t-chat.mkiv
new file mode 100644
index 00000000000..b3e1933549e
--- /dev/null
+++ b/Master/texmf-dist/tex/context/third/chat/t-chat.mkiv
@@ -0,0 +1,231 @@
+%D \module
+%D [ file=t-chat,
+%D version=2024.08.10,
+%D title=\CONTEXT\ User Module,
+%D subtitle=Chat,
+%D author=Henning Hraban Ramm,
+%D date=\currentdate,
+%D copyright={fiëé visuëlle, H. Ramm},
+%D license={GPL 3.0+}]
+
+\unprotect
+
+%D First we define a few colors.
+%D Don’t rely on these names, use the “Chat” palet instead.
+\definecolor[ChatColorI][c=0,m=.03,y=.15,k=0]
+\definecolor[ChatColorII][c=.1,m=0,y=0,k=0]
+\definecolor[ChatNameColor][c=0,m=0,y=0,k=.1]
+\definecolor[ChatColor][ChatColorI]
+\definecolor[ChatFrameColor][ChatNameColor]
+
+%D The palet contains all used colors.
+%D ATM there are only 2 different colors for recipient and sender,
+%D there should be more colors to distinguish senders.
+\definepalet[Chat][
+ frame=ChatFrameColor,
+ name=ChatNameColor,
+ 1=ChatColorI,
+ 2=ChatColorII,
+]
+
+\installcorenamespace {chat}
+
+\installsimplecommandhandler \??chat {Chat} \??chat
+
+\setupChat[
+ recipient=,
+ person=,
+ \c!distance=.25em,
+ \c!style={\ss},
+ \c!width=.8\textwidth,
+ senderstyle={\ss\bf},
+]
+
+% \Chatparameter
+
+\startuniqueMPgraphic{ChatBubble}
+% side: 0=right, 1=left
+% pos: 0 solo, 1 top, 2 middle, 3 bottom
+
+ numeric side, pos ;
+ string bgcol ;
+
+ if "\getvariable{Chat}{Person}" = "\Chatparameter{recipient}" :
+ side := 0;
+ bgcol := "Chat:1";
+ ; else :
+ side := 1;
+ bgcol := "Chat:2";
+ ; fi ;
+
+ if "\getvariable{Chat}{Person}" = "\getvariable{Chat}{PrevPerson}" :
+ % same as previous person: omit tail
+ pos := 3;
+ ; else :
+ % since we can’t know what’s next, go with "solo"
+ pos := 0;
+ ; fi ;
+
+ cradius := .125cm;
+ tailoffset := .125cm;
+ tailsize := .25cm;
+ h := OverlayHeight;
+ w := OverlayWidth;
+
+ if h < (2*cradius + 2*tailsize):
+ % if the box is too small, reduce radius and tail size
+ cradius := h/3;
+ tailsize := h/3;
+ tailoffset := 0;
+ fi;
+
+ pair ll[],lr[],tl[],tr[],s[];
+
+ % corners
+ ll1 := (0,cradius);
+ ll2 := (cradius,0);
+ lr1 := (w,cradius);
+ lr2 := (w-cradius,0);
+ % tail points
+ tl1 := (0,h-cradius);
+ tl2 := (cradius,h);
+ tr1 := (w,h-cradius);
+ tr2 := (w-cradius,h);
+
+ s1 := (w,h-cradius-tailoffset);
+ s2 := (w+tailsize,h-cradius-tailoffset);
+ s3 := (w,h-cradius-tailoffset-tailsize);
+
+ if pos > 1: % disable tail on middle/bottom
+ %s1 := (w,h-cradius-tailoffset);
+ s2 := (w,h-cradius-tailoffset);
+ %s3 := (w,h-cradius-tailoffset-tailsize);
+ fi;
+ if (pos = 1) or (pos = 2): % top/middle
+ lr1 := (w,cradius/3);
+ lr2 := (w-cradius/3,0);
+ fi;
+ if (pos = 2) or (pos = 3): % middle/bottom
+ tr1 := (w,h-cradius/3);
+ tr2 := (w-cradius/3,h);
+ fi;
+
+ path p ;
+ p := (ll1 ... ll2 --- lr2 ... lr1 -- s3 -- s2 -- s1 -- tr1 ... tr2 --- tl2 ... tl1 --- cycle);
+
+ % mirror the bubble for left side
+ if side = 1:
+ p := p reflectedabout ((w/2,0),(w/2,h));
+ fi;
+
+ fill p withcolor bgcol ;
+ draw p withpen pencircle scaled 0.75 withcolor "Chat:frame";
+
+ setbounds currentpicture to OverlayBox ;
+\stopuniqueMPgraphic
+
+\defineframedtext[ChatBubbleFrame][
+ style=\Chatparameter\s!style,
+ align=flushleft,
+ frame=off,
+ width=\Chatparameter\s!width,
+ autowidth=force,
+ offset=0pt,
+ loffset=2pt,
+ roffset=3pt,
+ before={\vskip\dimexpr-1em+\Chatparameter\c!distance\relax},
+ after={\vskip\dimexpr-\Chatparameter\c!distance\relax},
+]
+
+%D Receive text (left-facing).
+\defineoverlay[ChatGetOverlay][\uniqueMPgraphic{ChatBubble}]
+\defineframedtext[ChatGetFrame][ChatBubbleFrame][
+ background=ChatGetOverlay,
+ location=left,
+]
+
+%D Send text (right-facing).
+\defineoverlay[ChatSendOverlay][\uniqueMPgraphic{ChatBubble}]
+\defineframedtext[ChatSendFrame][ChatBubbleFrame][
+ background=ChatSendOverlay,
+ location=right,
+]
+
+%D This should become an avatar
+%D or simply initials in a circle
+\defineframed[ChatSenderFramed][
+ width=1em,
+ offset=overlay,
+ frame=off,
+ style=\Chatparameter{senderstyle},
+ %offset=0pt,
+ %loffset=0.25em,
+ %roffset=0.25em,
+ %corner=rounded,
+ %frameradius=.5em,
+ %background=color,
+ %backgroundcolor=Chat:frame,
+]
+
+%D Only show names (avatars) if person is different from last one
+% Sender name: #1 x-offset
+\define[1]\ChatSender{\offset[x=#1]{%
+ \doifnot{\getvariable{Chat}{Person}}{\getvariable{Chat}{PrevPerson}}{
+ % TODO: style \ss\tfx if more than 2 chars
+ \ChatSenderFramed{\style[style=\Chatparameter{senderstyle}]{\getvariable{Chat}{Person}}}}%
+ }%
+}
+
+\define[1]\startChat{%
+ \setevariable{Chat}{PrevPerson}{\getvariable{Chat}{Person}}
+ \setevariable{Chat}{Person}{#1}
+ \testpage[1]
+ \doifelse{\getvariable{Chat}{Person}}{\Chatparameter{recipient}}{
+ % recipient
+ \ChatSender{\dimexpr\textwidth-1.25em\relax}
+ \startnarrow[left=.5em]\startChatSendFrame
+ }{
+ % other sender
+ \ChatSender{-0.25em}
+ \startnarrow[right=.5em]\startChatGetFrame
+ }
+}
+
+\def\resetChat{%
+ \setevariable{Chat}{Recipient}{}%
+ \setevariable{Chat}{Person}{}%
+ \setevariable{Chat}{PrevPerson}{0}%
+}
+
+\def\stopChat{
+\doifelse{\getvariable{Chat}{Person}}{\Chatparameter{recipient}}{
+ % recipient
+ \stopChatSendFrame%
+}{
+ % other sender
+ \stopChatGetFrame%
+}
+\stopnarrow%
+}
+
+\resetChat
+
+\protect
+
+\continueifinputfile{t-chat.mkiv}
+
+\starttext
+
+\setupChat[
+ recipient=A,
+]
+
+\starttext
+\startChat{A} Do you wanna chat?\stopChat
+\startChat{B} Maybe. What about?\stopChat
+\startChat{A} How about cats?\stopChat
+\startChat{A} or squirrels?\stopChat
+\stoptext
+
+
+\stoptext
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 4e4861071f9..f85b8ab58b3 100644
--- a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
+++ b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
@@ -16,8 +16,8 @@
\startmodule[circuitikz]
\usemodule[tikz]
-\def\pgfcircversion{1.6.9}
-\def\pgfcircversiondate{2024/05/25}
+\def\pgfcircversion{1.7.0}
+\def\pgfcircversiondate{2024/08/03}
\writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
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 642d0bcd2da..b374a71e8c8 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ý
+%% 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
@@ -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
@@ -112,6 +118,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 +144,121 @@
|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 }
+ { 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
+ }
+ }
+ {
+ \msg_info:nnn
+ { markdown }
+ { loading-context-theme }
+ { #1 }
+ { #2 }
+ \prop_gput:Nnx
+ \g__markdown_context_loaded_themes_linenos_prop
+ { #1 }
+ { \tex_the:D \tex_inputlineno:D }
+ \prop_gput:Nnn
+ \g__markdown_context_loaded_themes_versions_prop
+ { #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-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
+ {
+ \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 }
+ }
+ }
+ \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 35fd80f89cd..dde11e86ae3 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
@@ -4,9 +4,9 @@
%%
%% The original source files were:
%%
-%% markdown.dtx (with options: `themes-witiko-markdown-defaults-context')
+%% markdown.dtx (with options: `themes-witiko-markdown-defaults-ctx')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný
+%% 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
@@ -162,7 +162,8 @@
\def\markdownRendererStrikeThroughPrototype#1{\overstrikes{#1}}
\def\markdownRendererSuperscriptPrototype#1{\high{#1}}
\def\markdownRendererSubscriptPrototype#1{\low{#1}}
-\def\markdownRendererDisplayMathPrototype#1{\startformula#1\stopformula}%
+\def\markdownRendererDisplayMathPrototype#1{%
+ \startformula#1\stopformula}%
\newcount\markdownConTeXtRowCounter
\newcount\markdownConTeXtRowTotal
\newcount\markdownConTeXtColumnCounter
@@ -179,8 +180,10 @@
\placetable{#1}{\the\markdownConTeXtTable}}%
\fi
\begingroup
- \setupTABLE[r][each][topframe=off, bottomframe=off, leftframe=off, rightframe=off]
- \setupTABLE[c][each][topframe=off, bottomframe=off, leftframe=off, rightframe=off]
+ \setupTABLE[r][each][topframe=off, bottomframe=off,
+ leftframe=off, rightframe=off]
+ \setupTABLE[c][each][topframe=off, bottomframe=off,
+ leftframe=off, rightframe=off]
\setupTABLE[r][1][topframe=on, bottomframe=on]
\setupTABLE[r][#1][bottomframe=on]
\markdownConTeXtRowCounter=0%
@@ -218,14 +221,16 @@
\fi\if#1r%
\setupTABLE[c][\the\markdownConTeXtColumnCounter][align=left]
\fi
- \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax\else
+ \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax
+ \else
\expandafter\gobbleoneargument
\fi\markdownConTeXtReadAlignments}
\def\markdownConTeXtRenderTableCell#1{%
\advance\markdownConTeXtColumnCounter by 1\relax
\markdownConTeXtTable=\expandafter{%
\the\markdownConTeXtTable\bTD#1\eTD}%
- \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax\else
+ \ifnum\markdownConTeXtColumnCounter<\markdownConTeXtColumnTotal\relax
+ \else
\expandafter\gobbleoneargument
\fi\markdownConTeXtRenderTableCell}
\ExplSyntaxOn
@@ -237,13 +242,13 @@
{
{ latex }
{
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_inline:nn
{ #1 }
{ context }
}
}
{
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_inline:nn
{ #1 }
{ #2 }
}
@@ -256,13 +261,13 @@
{
{ context }
{
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_block:nn
{ #1 }
{ tex }
}
}
{
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_block:nn
{ #1 }
{ #2 }
}
diff --git a/Master/texmf-dist/tex/fonts/bonum-otf/bonum-otf.sty b/Master/texmf-dist/tex/fonts/bonum-otf/bonum-otf.sty
new file mode 100644
index 00000000000..616801a1a1b
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/bonum-otf/bonum-otf.sty
@@ -0,0 +1,301 @@
+%% $Id: bonum-otf.sty 925 2024-07-23 17:47:45Z 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{bonum-otf}[%
+ 2024/07/23 v. 0.01 (Herbert Voss) Supports TeX Gyre bonum fonts for lualatex and xelatex.]
+
+\RequirePackage{iftex,xkeyval,textcomp}
+
+\newif\ifbonum@lining \bonum@liningtrue
+\newif\ifbonum@tabular \bonum@tabulartrue
+\newif\ifbonum@usefilenames \bonum@usefilenamestrue
+\newif\ifbonum@nomath \bonum@nomathfalse
+\newif\ifbonum@libertinus \bonum@libertinusfalse
+
+\DeclareOptionX{lining}[true]{\@nameuse{bonum@lining#1}}
+\DeclareOptionX{nf}[true]{\@nameuse{bonum@lining#1}}
+\DeclareOptionX{lf}[true]{\@nameuse{bonum@lining#1}}
+\DeclareOptionX{oldstyle}[true]{\@nameuse{if#1}\bonum@liningfalse\else\bonum@liningtrue\fi}
+\DeclareOptionX{osf}[true]{\@nameuse{if#1}\bonum@liningfalse\else\bonum@liningtrue\fi}
+\DeclareOptionX{libertinus}[true]{\@nameuse{bonum@libertinus#1}}
+
+\newcommand*\bonumMM@feature{}
+\DeclareOptionX{math}[]{\renewcommand*\bonumMM@feature{#1}}
+\DeclareOptionX{nomath}[true]{\@nameuse{bonum@nomath#1}}
+
+\DeclareOptionX{usefilenames}[true]{\@nameuse{bonum@usefilenames#1}}
+
+\DeclareOptionX{tabular}[true]{\@nameuse{bonum@tabular#1}}
+\DeclareOptionX{t}[true]{\@nameuse{bonum@tabular#1}}
+\DeclareOptionX{proportional}[true]{\@nameuse{if#1}\bonum@tabularfalse\else\bonum@tabulartrue\fi}
+\DeclareOptionX{p}[true]{\@nameuse{if#1}\bonum@tabularfalse\else\bonum@tabulartrue\fi}
+
+\newcommand*\bonumRM@scale{1}
+\DeclareOptionX{ScaleRM}{\renewcommand*{\bonumRM@scale}{#1}}
+
+\def\bonum@defaultfeatures{}
+\DeclareOptionX{defaultfeatures}{\def\bonum@defaultfeatures{#1}}
+
+\ProcessOptionsX\relax
+
+\RequirePackage{unicode-math}
+
+\ifbonum@lining
+ \def\bonum@figurestyle{+lnum}
+\else
+ \def\bonum@figurestyle{+onum}
+\fi
+
+\ifbonum@tabular
+ \def\bonum@figurealign{+tnum}
+\else
+ \def\bonum@figurealign{+pnum}
+\fi
+
+\ifxetex\XeTeXtracingfonts=1\fi
+\defaultfontfeatures[\rmfamily,\sffamily]{
+ Ligatures = TeX ,
+ SmallCapsFeatures={Letters=SmallCaps},% \ifluatex,Renderer=Basic\fi},
+ \bonum@defaultfeatures
+}
+
+\ifbonum@usefilenames
+%------------------------ filenames start -------------------------
+
+%texgyrebonum-bold.otf texgyrebonum-italic.otf
+%texgyrebonum-bolditalic.otf texgyrebonum-regular.otf
+
+
+\setmainfont{texgyrebonum}[
+ RawFeature = {\bonum@figurealign;\bonum@figurestyle},
+ Scale = \bonumRM@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 = .otf
+]
+
+\newfontfamily\bonum{texgyrebonum}[
+ RawFeature = {\bonum@figurealign;\bonum@figurestyle},
+ Scale = \bonumRM@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 = .otf
+]
+
+\newfontfamily\bonumOsF{texgyrebonum}[
+ RawFeature = {+onum},
+ Scale = \bonumRM@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 = .otf
+]
+
+\newfontfamily\bonumTLF{texgyrebonum}[
+ RawFeature = {+tnum;-onum},
+ Scale = \bonumRM@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 = .otf
+]
+%------------------------ filenames stop -------------------------
+\else
+%------------------------ symbolic names start -------------------------
+\setmainfont{TeX Gyre bonum}[
+ RawFeature = {\bonum@figurealign,\bonum@figurestyle},
+ Scale = \bonumRM@scale ,
+ UprightFont = * Regular,
+ SlantedFont = * Regular,
+ SlantedFeatures = {FakeSlant=0.2},
+ ItalicFont = * Italic,
+ ItalicFeatures = { SmallCapsFont = * Italic },
+ BoldFont = * Bold,
+ BoldFeatures = { SmallCapsFont = * Bold },
+ BoldItalicFont = * Bold Italic,
+ BoldItalicFeatures= { SmallCapsFont = * Bold Italic },
+ SmallCapsFont = * Regular,
+ SmallCapsFeatures = {RawFeature=+smcp},
+ BoldSlantedFont = * Bold,
+ BoldSlantedFeatures = {FakeSlant=0.2, SmallCapsFont = * Bold },
+ SmallCapsFeatures = {Letters=SmallCaps},
+]
+\newfontfamily\bonum{TeX Gyre bonum}[
+ RawFeature = {\bonum@figurealign,\bonum@figurestyle},
+ Scale = \bonumRM@scale ,
+ UprightFont = * Regular,
+ SlantedFont = * Regular,
+ SlantedFeatures = {FakeSlant=0.2},
+ ItalicFont = * Italic,
+ ItalicFeatures = { SmallCapsFont = * Italic },
+ BoldFont = * Bold,
+ BoldFeatures = { SmallCapsFont = * Bold },
+ BoldItalicFont = * Bold Italic,
+ BoldItalicFeatures= { SmallCapsFont = * Bold Italic },
+ SmallCapsFont = * Regular,
+ SmallCapsFeatures = {RawFeature=+smcp},
+ BoldSlantedFont = * Bold,
+ BoldSlantedFeatures = {FakeSlant=0.2, SmallCapsFont = * Bold },
+ SmallCapsFeatures = {Letters=SmallCaps},
+]
+\newfontfamily\bonumOsF{TeX Gyre bonum}[
+ RawFeature = {OldStyle,Proportional},
+ Scale = \bonumRM@scale ,
+ UprightFont = * Regular,
+ SlantedFont = * Regular,
+ SlantedFeatures = {FakeSlant=0.2},
+ ItalicFont = * Italic,
+ ItalicFeatures = { SmallCapsFont = * Italic },
+ BoldFont = * Bold,
+ BoldFeatures = { SmallCapsFont = * Bold },
+ BoldItalicFont = * Bold Italic,
+ BoldItalicFeatures= { SmallCapsFont = * Bold Italic },
+ SmallCapsFont = * Regular,
+ SmallCapsFeatures = {RawFeature=+smcp},
+ BoldSlantedFont = * Bold,
+ BoldSlantedFeatures = {FakeSlant=0.2, SmallCapsFont = * Bold },
+ SmallCapsFeatures = {Letters=SmallCaps},
+]
+
+\newfontfamily\bonumTLF{TeX Gyre bonum}[
+ RawFeature = {Lining,Monospaced},
+ Scale = \bonumRM@scale ,
+ UprightFont = * Regular,
+ SlantedFont = * Regular,
+ SlantedFeatures = {FakeSlant=0.2},
+ ItalicFont = * Italic,
+ ItalicFeatures = { SmallCapsFont = * Italic },
+ BoldFont = * Bold,
+ BoldFeatures = { SmallCapsFont = * Bold },
+ BoldItalicFont = * Bold Italic,
+ BoldItalicFeatures= { SmallCapsFont = * Bold Italic },
+ SmallCapsFont = * Regular,
+ SmallCapsFeatures = {RawFeature=+smcp},
+ BoldSlantedFont = * Bold,
+ BoldSlantedFeatures = {FakeSlant=0.2, SmallCapsFont = * Bold },
+ SmallCapsFeatures = {Letters=SmallCaps},
+]
+
+\fi
+%------------------------ symbolic names stop -------------------------
+
+\ifbonum@nomath\else
+ \typeout{*************************************^^J%
+ * Using bonum math *^^J%
+ *************************************}%
+ \setmathfont{texgyrebonum-math.otf}[AutoFakeBold,RawFeature=\bonumMM@feature]
+ \ifbonum@libertinus
+ \setmathfont{LibertinusMath-Regular.otf}[AutoFakeBold,RawFeature=\bonumMM@feature,
+ range={\int,\iint,\iiint,\iiiint,\oint,\oiint,\oiiint}]
+ \fi
+\fi
+
+\def\sufigures{\addfontfeatures{VerticalPosition=Superior}}
+\DeclareTextFontCommand{\textsup}{\sufigures}
+\DeclareTextFontCommand{\textinit}{\bonumInitials}% Initials
+
+\def\Lsup#1{{\addfontfeature{RawFeature=+sups}#1}}
+\def\Lsinf#1{{\addfontfeature{RawFeature=+sinf}#1}}
+\def\Land{{\addfontfeature{RawFeature=+ss06}\&}}
+
+\def\Lcase#1{{\addfontfeature{RawFeature=case}#1}}
+\def\LCASE{\@ifnextchar-\L@CASE\L@@CASE}
+\def\L@CASE-{\addfontfeature{RawFeature=-case}}
+\def\L@@CASE#1{\addfontfeature{RawFeature=+case}\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}
+
+\def\Lcpsp#1{{\addfontfeature{RawFeature=+cpsp}#1}}
+\def\LCPSP{\@ifnextchar-\L@CPSP\L@@CPSP}
+\def\L@CPSP-{\addfontfeature{RawFeature=-cpsp}}
+\def\L@@CPSP#1{\addfontfeature{RawFeature=+cpsp}\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\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\Lsalt#1{{\addfontfeature{RawFeature=+salt}#1}}
+\def\LSALT{\@ifnextchar-\L@SALT\L@@SALT}
+\def\L@SALT-{\addfontfeature{RawFeature=-salt}}
+\def\L@@SALT#1{\addfontfeature{RawFeature=+salt}\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\Lhlig#1{{\addfontfeature{RawFeature=+hlig}#1}}
+\def\LHLIG{\@ifnextchar-\L@HLIG\L@@HLIG}
+\def\L@HLIG-{\addfontfeature{RawFeature=-hlig}}
+\def\L@@HLIG#1{\addfontfeature{RawFeature=+hlig}\ifx#1+\else#1\fi}
+
+\def\Ldlig#1{{\addfontfeature{RawFeature=+dlig}#1}}
+\def\LDLIG{\@ifnextchar-\L@DLIG\L@@DLIG}
+\def\L@DLIG-{\addfontfeature{RawFeature=-dlig}}
+\def\L@@DLIG#1{\addfontfeature{RawFeature=+dlig}\ifx#1+\else#1\fi}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-Light.fontspec b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-Light.fontspec
new file mode 100644
index 00000000000..aeae5d23d94
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono-Light.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[CascadiaMono-Light]
+ {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/CascadiaMono.fontspec b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono.fontspec
new file mode 100644
index 00000000000..f008c12d90a
--- /dev/null
+++ b/Master/texmf-dist/tex/fonts/cascadiamono-otf/CascadiaMono.fontspec
@@ -0,0 +1,8 @@
+\defaultfontfeatures[CascadiaMono]
+ {Extension=.otf,
+ UprightFont=CascadiaCode-Regular,
+ ItalicFont=CascadiaCode-Italic,
+ BoldFont=CascadiaCode-Bold,
+ BoldItalicFont=CascadiaCode-BoldItalic,
+ Contextuals=AlternateOff
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel-french/acadian.ldf b/Master/texmf-dist/tex/generic/babel-french/acadian.ldf
index 146e293ffcd..c74b119c023 100644
--- a/Master/texmf-dist/tex/generic/babel-french/acadian.ldf
+++ b/Master/texmf-dist/tex/generic/babel-french/acadian.ldf
@@ -24,7 +24,7 @@
%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
%%
\ProvidesLanguage{acadian}
- [2024-05-24 v3.6a French support from the babel system]
+ [2024-07-25 v3.6c French support from the babel system]
\PackageInfo{acadian.ldf}%
{`acadian' dialect is currently\MessageBreak
*absolutely identical* to the\MessageBreak
diff --git a/Master/texmf-dist/tex/generic/babel-french/canadien.ldf b/Master/texmf-dist/tex/generic/babel-french/canadien.ldf
index c04ed30c114..5f4ce1fbd56 100644
--- a/Master/texmf-dist/tex/generic/babel-french/canadien.ldf
+++ b/Master/texmf-dist/tex/generic/babel-french/canadien.ldf
@@ -24,7 +24,7 @@
%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
%%
\ProvidesLanguage{canadien}
- [2024-05-24 v3.6a French support from the babel system]
+ [2024-07-25 v3.6c French support from the babel system]
\PackageWarning{canadien.ldf}%
{Option `canadien' for Babel is *deprecated*,\MessageBreak
it might be removed sooner or later. Please\MessageBreak
diff --git a/Master/texmf-dist/tex/generic/babel-french/francais.ldf b/Master/texmf-dist/tex/generic/babel-french/francais.ldf
index 930425c55a6..f1dab47db9f 100644
--- a/Master/texmf-dist/tex/generic/babel-french/francais.ldf
+++ b/Master/texmf-dist/tex/generic/babel-french/francais.ldf
@@ -24,7 +24,7 @@
%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
%%
\ProvidesLanguage{francais}
- [2024-05-24 v3.6a French support from the babel system]
+ [2024-07-25 v3.6c French support from the babel system]
\PackageWarning{francais.ldf}%
{Option `francais' for Babel is *deprecated*,\MessageBreak
it might be removed sooner or later. Please\MessageBreak
diff --git a/Master/texmf-dist/tex/generic/babel-french/french.ldf b/Master/texmf-dist/tex/generic/babel-french/french.ldf
index e464ea33b0b..61bb613bc09 100644
--- a/Master/texmf-dist/tex/generic/babel-french/french.ldf
+++ b/Master/texmf-dist/tex/generic/babel-french/french.ldf
@@ -24,7 +24,7 @@
%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
%%
\ProvidesLanguage{french}
- [2024-05-24 v3.6a French support from the babel system]
+ [2024-07-25 v3.6c French support from the babel system]
%%
%% Babel package for LaTeX version 2e
%% Copyright © 1996-2024
@@ -108,7 +108,6 @@
\fi
\fi
\bbl@tempa
-\ifLaTeXe \NeedsTeXFormat{LaTeX2e}[2022/06/01] \fi
\newif\ifFBunicode
\newif\ifFBLuaTeX
\newif\ifFBXeTeX
@@ -505,9 +504,10 @@
\DeclareRobustCommand\rmfamilyFB{\FB@spacing@on \rmfamilyORI}
\DeclareRobustCommand\sffamilyFB{\FB@spacing@on \sffamilyORI}
\fi
+\providecommand\texorpdfstring[2]{#1}
\DeclareRobustCommand*{\NoAutoSpacing}{%
- \FB@spacing@off
- \ifFB@active@punct\shorthandoff{;:!?}\fi
+ \texorpdfstring{\FB@spacing@off
+ \ifFB@active@punct\shorthandoff{;:!?}\fi}{}%
}
\ifLaTeXe
\else
@@ -526,7 +526,6 @@
\fi
\let\xspace\relax
\fi
-\providecommand\texorpdfstring[2]{#1}
\newcommand*{\FB@og}{\texorpdfstring{\@FB@og}{\guillemotleft\space}}
\newcommand*{\FB@fg}{\texorpdfstring{\@FB@fg}{\space\guillemotright}}
\newcommand*{\FB@guillspace}{\penalty\@M\FBguillspace}
@@ -1109,6 +1108,7 @@
BEFORE babel/french; reported}%
\fi
}
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\newif\ifFBShowOptions
\newif\ifFBStandardLayout \FBStandardLayouttrue
\newif\ifFBGlobalLayoutFrench \FBGlobalLayoutFrenchtrue
@@ -1271,14 +1271,14 @@
Reported}%
\fi
}
-\newcommand*{\FB@ListOldLayout@setup}[1]%
+\newcommand*{\FBListOldLayout@setup}[1]%
{\csname FBListOldLayout#1\endcsname
\ifFBListOldLayout
\FBStandardEnumerateEnvtrue
\renewcommand*{\FrenchLabelItem}{\textendash}%
\fi
}
-\newcommand*{\FB@CompactItemize@setup}[1]%
+\newcommand*{\FBCompactItemize@setup}[1]%
{\csname FBCompactItemize#1\endcsname
\ifFBCompactItemize
\FBStandardItemizeEnvfalse
diff --git a/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf b/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
index 59dcd15ac8c..043aa84c723 100644
--- a/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
+++ b/Master/texmf-dist/tex/generic/babel-french/frenchb.ldf
@@ -24,7 +24,7 @@
%% Please report errors to: <daniel (dot) flipo (at) free (dot) fr>
%%
\ProvidesLanguage{frenchb}
- [2024-05-24 v3.6a French support from the babel system]
+ [2024-07-25 v3.6c French support from the babel system]
\def\bbl@tempa{frenchb}
\ifx\CurrentOption\bbl@tempa
\chardef\l@frenchb\l@french
diff --git a/Master/texmf-dist/tex/generic/babel-french/frenchb.lua b/Master/texmf-dist/tex/generic/babel-french/frenchb.lua
index 3149b146ffc..34f19225fca 100644
--- a/Master/texmf-dist/tex/generic/babel-french/frenchb.lua
+++ b/Master/texmf-dist/tex/generic/babel-french/frenchb.lua
@@ -1,6 +1,6 @@
--[[
File `frenchb.lua’ generated from frenchb.dtx
- [2024-05-24 v3.6a French support from the babel system]
+ [2024-07-25 v3.6c French support from the babel system]
Copyright © 2014-2024 Daniel Flipo
<daniel (dot) flipo (at) free (dot) fr>
License LPPL: see french.ldf.
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 a981db5b267..a0bfe0b3a7c 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
@@ -32,9 +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')
@@ -162,7 +159,7 @@ function Babel.bidi(head, ispar)
elseif first_d and dir ~= strong_lr then
dir_mark(head, first_d, last_d, outer)
first_d, last_d = nil, nil
- end
+ end
end
if dir and not last_lr and dir ~= 'l' and outer == 'r' then
item.char = characters[item.char] and
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 4d0d19156f0..8b3ef3e62e4 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
@@ -32,9 +32,6 @@
-- 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>
Babel.fontmap = Babel.fontmap or {}
@@ -102,7 +99,7 @@ end
-- TODO - \hbox with an explicit dir can lead to wrong results
-- <R \hbox dir TLT{<R>}> and <L \hbox dir TRT{<L>}>. A small attempt
--- was s made to improve the situation, but the problem is the 3-dir
+-- was made to improve the situation, but the problem is the 3-dir
-- model in babel/Unicode and the 2-dir model in LuaTeX don't fit
-- well.
@@ -124,6 +121,7 @@ function Babel.bidi(head, ispar, hdir)
local has_hyperlink = false
local ATDIR = Babel.attr_dir
+ local attr_d
local save_outer
local temp = node.get_attribute(head, ATDIR)
@@ -158,6 +156,8 @@ function Babel.bidi(head, ispar, hdir)
if glyph_not_symbol_font(item)
or (item.id == 7 and item.subtype == 2) then
+ if node.get_attribute(item, ATDIR) == 128 then goto nextnode end
+
local d_font = nil
local item_r
if item.id == 7 and item.subtype == 2 then
@@ -165,6 +165,7 @@ function Babel.bidi(head, ispar, hdir)
else
item_r = item
end
+
local chardata = characters[item_r.char]
d = chardata and chardata.d or nil
if not d or d == 'nsm' then
@@ -292,6 +293,7 @@ function Babel.bidi(head, ispar, hdir)
-- Force mathdir in math if ON (currently works as expected only
-- with 'l')
+
if inmath and d == 'on' then
d = ('TRT' == tex.mathdir) and 'r' or 'l'
end
@@ -307,9 +309,12 @@ function Babel.bidi(head, ispar, hdir)
table.insert(nodes, {item, d, outer_first})
end
+ node.set_attribute(item, ATDIR, 128)
outer_first = nil
- end
+ ::nextnode::
+
+ end -- for each node
-- TODO -- repeated here in case EN/ET is the last node. Find a
-- better way of doing things:
@@ -470,3 +475,12 @@ function Babel.bidi(head, ispar, hdir)
return head
end
+-- Make sure anything is marked as 'bidi done' (including nodes inserted
+-- after the babel algorithm).
+function Babel.unset_atdir(head)
+ local ATDIR = Babel.attr_dir
+ for item in node.traverse(head) do
+ node.set_attribute(item, ATDIR, 128)
+ end
+ return head
+end
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 d9e77aa25ea..837d83ff400 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\def\bbl@ca@buddhist#1-#2-#3\@@#4#5#6{%
\edef#4{\number\numexpr#1+543\relax}%
\edef#5{#2}%
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 15eed489707..cff847e02c4 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\ExplSyntaxOn
\def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))}
\def\bbl@cs@gregleap#1{%
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 449567ed8ad..43d23a1479e 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\ExplSyntaxOn
\def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))}
\def\bbl@cs@gregleap#1{%
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 b1d94e1a454..95a8ef64656 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\ExplSyntaxOn
\def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))}
\def\bbl@cs@gregleap#1{%
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 8964a0c2417..315180da5af 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\newcount\bbl@cntcommon
\def\bbl@remainder#1#2#3{%
#3=#1\relax
@@ -199,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 b769b5fcd11..28c5dd9dc03 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\ExplSyntaxOn
\def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))}
\def\bbl@cs@gregleap#1{%
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 b0f26920b0b..f896cbeba63 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex
+++ b/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\ExplSyntaxOn
\def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))}
\def\bbl@cs@gregleap#1{%
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 7aa786c41cf..80ec84ca1ae 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua
@@ -32,27 +32,21 @@
-- and covered by LPPL is defined by the unpacking scripts (with
-- extension |.ins|) which are part of the distribution.
--
-
-- Data from Unicode and ConTeXt
-Babel = Babel or {}
-
Babel.ranges = {
{0x0590, 0x05FF, 'r'},
{0x0600, 0x07BF, 'al'},
{0x07C0, 0x085F, 'r'},
{0x0860, 0x086F, 'al'},
{0x08A0, 0x08FF, 'al'},
- {0xE000, 0xF8FF, 'on'}, -- PUA
{0xFB1D, 0xFB4F, 'r'},
{0xFB50, 0xFDFF, 'al'},
{0xFE70, 0xFEFF, 'al'},
{0x10800, 0x10C4F, 'r'},
{0x1E800, 0x1E8DF, 'r'},
{0x1E900, 0x1E95F, 'r'},
- {0x1F300, 0x1F9FF, 'on'},
- {0xF0000, 0xFFFFD, 'on'}, -- PUA
- {0x100000, 0x10FFFD, 'on'} -- PUA
+ {0x1F300, 0x1F9FF, 'on'}
}
Babel.characters = {
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 fc6e5bb17dc..49623e9f9ce 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua
@@ -32,9 +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'},
@@ -196,14 +193,39 @@ Babel.cjk_characters = {
[0x301D]={c='op'},
[0x301E]={c='cl'},
[0x301F]={c='cl'},
+ [0x3043]={c='cj'},
+ [0x3045]={c='cj'},
+ [0x3047]={c='cj'},
+ [0x3049]={c='cj'},
+ [0x3063]={c='cj'},
+ [0x3083]={c='cj'},
+ [0x3085]={c='cj'},
+ [0x3087]={c='cj'},
+ [0x308E]={c='cj'},
+ [0x3095]={c='cj'},
+ [0x3096]={c='cj'},
[0x303B]={c='ns'},
[0x303C]={c='ns'},
+ [0x3041]={c='cj'},
[0x309B]={c='ns'},
[0x309C]={c='ns'},
[0x309D]={c='ns'},
[0x309E]={c='ns'},
[0x30A0]={c='ns'},
+ [0x30A1]={c='cj'},
+ [0x30A3]={c='cj'},
+ [0x30A5]={c='cj'},
+ [0x30A7]={c='cj'},
+ [0x30A9]={c='cj'},
+ [0x30C3]={c='cj'},
+ [0x30E3]={c='cj'},
+ [0x30E5]={c='cj'},
+ [0x30E7]={c='cj'},
+ [0x30EE]={c='cj'},
+ [0x30F5]={c='cj'},
+ [0x30F6]={c='cj'},
[0x30FB]={c='ns'},
+ [0x30FC]={c='cj'},
[0x30FD]={c='ns'},
[0x30FE]={c='ns'},
[0xA015]={c='ns'},
@@ -273,25 +295,33 @@ Babel.cjk_characters = {
[0xFF61]={c='cl', w='h'},
[0xFF62]={c='op', w='h'},
[0xFF63]={c='cl', w='h'},
- [0xFF64]={c='cl', w='h'}
+ [0xFF64]={c='cl', w='h'},
+ [0xFF70]={c='cj'}
}
Babel.cjk_class = setmetatable ( Babel.cjk_characters, {
__index = function(_, k)
if (k >= 0xAC00 and k <= 0xD7A3) -- H2/H3
- or (k >= 0x2E80 and k <= 0x9FFF)
+ or (k >= 0x2E80 and k <= 0x31E9) -- Skip small
+ or (k >= 0x3200 and k <= 0x9FFF)
or (k >= 0xA000 and k <= 0xA48F) -- Yi
or (k >= 0xA490 and k <= 0xA4CF) -- Yi
or (k >= 0xF900 and k <= 0xFAFF)
or (k >= 0xFE10 and k <= 0xFE1F)
or (k >= 0xFE30 and k <= 0xFE6F)
- or (k >= 0xFF00 and k <= 0xFFEF)
+ or (k >= 0xFF00 and k <= 0xFF66) -- Skip small
+ or (k >= 0xFF70 and k <= 0xFFEF)
or (k >= 0x1F000 and k <= 0x1FFFD)
or (k >= 0x20000 and k <= 0x2FFFD)
or (k >= 0x30000 and k <= 0x3FFFD) then
return {c='I'}
elseif (k >= 0x20A0 and k <= 0x20CF) then
return {c='pr'}
+ elseif (k >= 0x31F0 and k <= 0x31FF)
+ or (k >= 0xFF67 and k <= 0xFF6F)
+ or (k >= 0x1B150 and k <= 0x1B152)
+ or (k >= 0x1B164 and k <= 0x1B167) then
+ return {c='cj'}
else
return {c='O'}
end
diff --git a/Master/texmf-dist/tex/generic/babel/babel-transforms.lua b/Master/texmf-dist/tex/generic/babel/babel-transforms.lua
index 08ee95e770c..3e14af381d0 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-transforms.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-transforms.lua
@@ -32,29 +32,16 @@
-- and covered by LPPL is defined by the unpacking scripts (with
-- extension |.ins|) which are part of the distribution.
--
-
Babel.linebreaking.replacements = {}
Babel.linebreaking.replacements[0] = {} -- pre
Babel.linebreaking.replacements[1] = {} -- post
--- 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
+function Babel.tovalue(v)
+ if type(v) == 'table' then
+ return Babel.locale_props[v[1]].vars[v[2]] or v[3]
+ else
+ return v
end
- return head
end
Babel.fetch_subtext = {}
@@ -187,6 +174,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
@@ -390,9 +378,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)
@@ -403,16 +391,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
@@ -422,18 +410,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
@@ -446,7 +434,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
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def
index d7a24d8540c..bef836d3966 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.def
+++ b/Master/texmf-dist/tex/generic/babel/babel.def
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\ifx\ldf@quit\@undefined\else
\endinput\fi % Same line!
\ifx\ProvidesFile\@undefined
@@ -40,8 +39,8 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2024/06/02 v24.6 Babel common definitions]
-\ifx\AtBeginDocument\@undefined % TODO. change test.
+\ProvidesFile{babel.def}[2024/11/08 v24.13 Babel common definitions]
+\ifx\AtBeginDocument\@undefined
\def\@empty{}
\def\loadlocalcfg#1{%
\openin0#1.cfg
@@ -596,8 +595,8 @@
\toks@\expandafter{\bbl@tempc#3}%
\expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
\fi}
-\def\bbl@version{24.6}
-\def\bbl@date{2024/06/02}
+\def\bbl@version{24.13}
+\def\bbl@date{2024/11/08}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -722,10 +721,9 @@
\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}%
{}%
@@ -738,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
@@ -776,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@
@@ -795,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
@@ -824,7 +803,7 @@
\csname captions#1\endcsname\relax
\fi
\bbl@xin@{,date,}{,\bbl@select@opts,}%
- \ifin@ % if \foreign... within \<lang>date
+ \ifin@ % if \foreign... within \<language>date
\csname date#1\endcsname\relax
\fi
\fi
@@ -864,6 +843,12 @@
\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@{/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
@@ -875,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}%
@@ -928,6 +915,9 @@
\BabelText{#2}% Still in vertical mode!
{\par}%
\endgroup}
+\providecommand\BabelWrapText[1]{%
+ \def\bbl@tempa{\def\BabelText####1}%
+ \expandafter\bbl@tempa\expandafter{\BabelText{#1}}}
\def\foreign@language#1{%
% set name
\edef\languagename{#1}%
@@ -936,6 +926,7 @@
\bbl@usedategroupfalse
\fi
\bbl@fixname\languagename
+ \let\localename\languagename
% TODO. name@map here?
\bbl@provide@locale
\bbl@iflanguage\languagename{%
@@ -1054,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
@@ -1093,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}}{}%
@@ -1148,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
@@ -1244,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
@@ -1260,11 +1245,14 @@
\@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{%
\def\@nolanerr##1{%
+ \bbl@carg\chardef{l@##1}\z@
\bbl@warning{Undefined language '##1' in aux.\\Reported}}%
\bbl@usehooks{beforestart}{}%
\global\let\bbl@beforestart\relax}
@@ -1272,8 +1260,8 @@
{\@nameuse{bbl@beforestart}}% Group!
\if@filesw
\providecommand\babel@aux[2]{}%
- \immediate\write\@mainaux{%
- \string\providecommand\string\babel@aux[2]{}}%
+ \immediate\write\@mainaux{\unexpanded{%
+ \providecommand\babel@aux[2]{\global\let\babel@toc\@gobbletwo}}}%
\immediate\write\@mainaux{\string\@nameuse{bbl@beforestart}}%
\fi
\expandafter\selectlanguage\expandafter{\bbl@main@language}%
@@ -1283,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
@@ -1292,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}}%
@@ -1306,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
@@ -1420,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
@@ -1461,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}%
@@ -1502,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{}}}
@@ -1717,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
@@ -1753,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{%
@@ -1794,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}
@@ -2026,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 71582e98272..c30933da249 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.sty
+++ b/Master/texmf-dist/tex/generic/babel/babel.sty
@@ -32,21 +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/06/02 v24.6 The Babel package]
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{babel}%
+ [2024/11/08 v24.13
+ 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
@@ -308,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
@@ -317,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
@@ -344,8 +347,8 @@
\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\tw@} % add = 2
-\DeclareOption{provide*=*}{\chardef\bbl@iniflag\thr@@} % add + main
+\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
@@ -407,7 +410,6 @@
\in@{,provide,}{,#1,}%
\ifin@
\def\bbl@opt@provide{#2}%
- \bbl@replace\bbl@opt@provide{;}{,}%
\fi}
\fi
\bbl@trace{Conditional loading of shorthands}
@@ -466,8 +468,8 @@
\expandafter\@secondoftwo
\fi}
\fi
-\def\bbl@version{24.6}
-\def\bbl@date{2024/06/02}
+\def\bbl@version{24.13}
+\def\bbl@date{2024/11/08}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -547,34 +549,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
@@ -620,10 +594,9 @@
\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}%
{}%
@@ -636,30 +609,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
@@ -674,18 +625,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@
@@ -693,7 +647,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
@@ -722,7 +676,7 @@
\csname captions#1\endcsname\relax
\fi
\bbl@xin@{,date,}{,\bbl@select@opts,}%
- \ifin@ % if \foreign... within \<lang>date
+ \ifin@ % if \foreign... within \<language>date
\csname date#1\endcsname\relax
\fi
\fi
@@ -762,6 +716,12 @@
\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@{/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
@@ -773,16 +733,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}%
@@ -826,6 +788,9 @@
\BabelText{#2}% Still in vertical mode!
{\par}%
\endgroup}
+\providecommand\BabelWrapText[1]{%
+ \def\bbl@tempa{\def\BabelText####1}%
+ \expandafter\bbl@tempa\expandafter{\BabelText{#1}}}
\def\foreign@language#1{%
% set name
\edef\languagename{#1}%
@@ -834,6 +799,7 @@
\bbl@usedategroupfalse
\fi
\bbl@fixname\languagename
+ \let\localename\languagename
% TODO. name@map here?
\bbl@provide@locale
\bbl@iflanguage\languagename{%
@@ -952,13 +918,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
@@ -991,28 +1035,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}}{}%
@@ -1046,70 +1068,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
@@ -1142,7 +1102,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
@@ -1158,11 +1118,14 @@
\@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{%
\def\@nolanerr##1{%
+ \bbl@carg\chardef{l@##1}\z@
\bbl@warning{Undefined language '##1' in aux.\\Reported}}%
\bbl@usehooks{beforestart}{}%
\global\let\bbl@beforestart\relax}
@@ -1170,30 +1133,18 @@
{\@nameuse{bbl@beforestart}}% Group!
\if@filesw
\providecommand\babel@aux[2]{}%
- \immediate\write\@mainaux{%
- \string\providecommand\string\babel@aux[2]{}}%
+ \immediate\write\@mainaux{\unexpanded{%
+ \providecommand\babel@aux[2]{\global\let\babel@toc\@gobbletwo}}}%
\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
@@ -1202,6 +1153,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}}%
@@ -1216,18 +1171,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
@@ -1330,7 +1273,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
@@ -1371,7 +1314,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}%
@@ -1412,7 +1354,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{}}}
@@ -1627,6 +1569,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
@@ -1663,21 +1623,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{%
@@ -1704,6 +1649,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}
@@ -1936,7 +1898,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}%
@@ -2169,39 +2131,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
@@ -2229,7 +2158,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
@@ -2238,7 +2167,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
@@ -2255,6 +2187,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
@@ -2284,7 +2220,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
@@ -2344,122 +2280,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
@@ -2475,6 +2301,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) ==
@@ -3193,17 +3020,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\@@}
@@ -3251,7 +3093,7 @@
\bbl@csarg\let{inikv@transforms.posthyphenation}\bbl@inikv
\def\bbl@transforms@aux#1#2#3#4,#5\relax{%
#1[#2]{#3}{#4}{#5}}
-\begingroup % A hack. TODO. Don't require an specific order
+\begingroup % A hack. TODO. Don't require a specific order
\catcode`\%=12
\catcode`\&=14
\gdef\bbl@transforms#1#2#3{&%
@@ -3421,58 +3263,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}%
@@ -3507,6 +3308,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
@@ -3543,6 +3371,50 @@
\def\bbl@elt##1##2##3{\typeout{##1/##2 = ##3}}%
\@nameuse{bbl@inidata@#1}%
\typeout{*******}}
+\newif\ifbbl@bcpallowed
+\bbl@bcpallowedfalse
+\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}
+ \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\babeladjust[1]{% TODO. Error handling.
\bbl@forkv{#1}{%
\bbl@ifunset{bbl@ADJ@##1@##2}%
@@ -3757,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
@@ -3932,8 +3837,8 @@
\def\bbl@patchfont#1{\AddToHook{selectfont}{#1}}
\bbl@trace{Loading basic (internal) bidi support}
\ifodd\bbl@engine
-\else % TODO. Move to txtbabel
- \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 % Any xe+lua bidi=
+\else % TODO. Move to txtbabel. Any xe+lua bidi
+ \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200
\bbl@error{bidi-only-lua}{}{}{}%
\let\bbl@beforeforeign\leavevmode
\AtEndOfPackage{%
@@ -3944,7 +3849,9 @@
\ifx\RTLfootnotetext\@undefined
\AtEndOfPackage{%
\EnableBabelHook{babel-bidi}%
- \bbl@loadfontspec % bidi needs fontspec
+ \ifx\fontspec\@undefined
+ \usepackage{fontspec}% bidi needs fontspec
+ \fi
\usepackage#1{bidi}%
\let\bbl@digitsdotdash\DigitsDotDashInterCharToks
\def\DigitsDotDashInterCharToks{% See the 'bidi' package
@@ -3978,13 +3885,13 @@
\fi
\bbl@trace{Macros to switch the text direction}
\def\bbl@alscripts{,Arabic,Syriac,Thaana,}
-\def\bbl@rscripts{% TODO. Base on codes ??
- ,Imperial Aramaic,Avestan,Cypriot,Hatran,Hebrew,%
- Old Hungarian,Lydian,Mandaean,Manichaean,%
- Meroitic Cursive,Meroitic,Old North Arabian,%
- Nabataean,N'Ko,Orkhon,Palmyrene,Inscriptional Pahlavi,%
- Psalter Pahlavi,Phoenician,Inscriptional Parthian,Samaritan,%
- Old South Arabian,}%
+\def\bbl@rscripts{%
+ ,Garay,Todhri,Imperial Aramaic,Avestan,Cypriot,Elymaic,Hatran,Hebrew,%
+ Old Hungarian,Kharoshthi,Lydian,Mandaean,Manichaean,Mende Kikakui,%
+ Meroitic Cursive,Meroitic,Old North Arabian,Nabataean,N'Ko,%
+ Old Turkic,Orkhon,Palmyrene,Inscriptional Pahlavi,Psalter Pahlavi,%
+ Phoenician,Inscriptional Parthian,Hanifi,Samaritan,Old Sogdian,%
+ Old South Arabian,Yezidi,}%
\def\bbl@provide@dirs#1{%
\bbl@xin@{\csname bbl@sname@#1\endcsname}{\bbl@alscripts\bbl@rscripts}%
\ifin@
@@ -4015,8 +3922,10 @@
\bbl@pardir{#1}% <- Must precede \bbl@textdir
\fi
\bbl@textdir{#1}}
-\AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir}
-\DisableBabelHook{babel-bidi}
+\ifnum\bbl@bidimode>\z@
+ \AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir}
+ \DisableBabelHook{babel-bidi}
+\fi
\ifodd\bbl@engine % luatex=1
\else % pdftex=0, xetex=2
\newcount\bbl@dirlevel
@@ -4072,19 +3981,15 @@
\else
{\setbox\z@\lastbox\beginR\box\z@}%
\fi}%
- \let\bbl@severypar\everypar
- \newtoks\everypar
- \everypar=\bbl@severypar
- \bbl@severypar{\bbl@xeeverypar\the\everypar}}
+ \AddToHook{para/begin}{\bbl@xeeverypar}}
\ifnum\bbl@bidimode>200 % Any xe bidi=
\let\bbl@textdir@i\@gobbletwo
\let\bbl@xebidipar\@empty
\AddBabelHook{bidi}{foreign}{%
- \def\bbl@tempa{\def\BabelText####1}%
\ifcase\bbl@thetextdir
- \expandafter\bbl@tempa\expandafter{\BabelText{\LR{##1}}}%
+ \BabelWrapText{\LR{##1}}%
\else
- \expandafter\bbl@tempa\expandafter{\BabelText{\RL{##1}}}%
+ \BabelWrapText{\RL{##1}}%
\fi}
\def\bbl@pardir#1{\ifcase#1\relax\setLR\else\setRL\fi}
\fi
@@ -4132,6 +4037,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}{}%
@@ -4159,10 +4065,16 @@
*}}%
{\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
@@ -4193,11 +4105,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)
@@ -4210,18 +4122,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}
@@ -4245,7 +4159,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 f960bc6bf1d..e6a4076d6d1 100644
--- a/Master/texmf-dist/tex/generic/babel/blplain.tex
+++ b/Master/texmf-dist/tex/generic/babel/blplain.tex
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\catcode`\{=1 % left brace is begin-group character
\catcode`\}=2 % right brace is end-group character
\catcode`\#=6 % hash mark is macro parameter character
diff --git a/Master/texmf-dist/tex/generic/babel/bplain.tex b/Master/texmf-dist/tex/generic/babel/bplain.tex
index b189e6f7dd7..0483d7eb722 100644
--- a/Master/texmf-dist/tex/generic/babel/bplain.tex
+++ b/Master/texmf-dist/tex/generic/babel/bplain.tex
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\catcode`\{=1 % left brace is begin-group character
\catcode`\}=2 % right brace is end-group character
\catcode`\#=6 % hash mark is macro parameter character
diff --git a/Master/texmf-dist/tex/generic/babel/errbabel.def b/Master/texmf-dist/tex/generic/babel/errbabel.def
index 432899cb34e..9674a0fbf26 100644
--- a/Master/texmf-dist/tex/generic/babel/errbabel.def
+++ b/Master/texmf-dist/tex/generic/babel/errbabel.def
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\catcode`\{=1 \catcode`\}=2 \catcode`\#=6
\catcode`\:=12 \catcode`\,=12 \catcode`\.=12 \catcode`\-=12
\catcode`\'=12 \catcode`\(=12 \catcode`\)=12
@@ -100,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\\%
@@ -120,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)}%
@@ -132,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\\%
@@ -175,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\\%
@@ -214,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 4ed4a864950..116176dd1ca 100644
--- a/Master/texmf-dist/tex/generic/babel/hyphen.cfg
+++ b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
@@ -32,16 +32,15 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\ifx\ProvidesFile\@undefined
\def\ProvidesFile#1[#2 #3 #4]{%
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{hyphen.cfg}[2024/06/02 v24.6 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2024/11/08 v24.13 Babel hyphens]
\xdef\bbl@format{\jobname}
-\def\bbl@version{24.6}
-\def\bbl@date{2024/06/02}
+\def\bbl@version{24.13}
+\def\bbl@date{2024/11/08}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\fi
diff --git a/Master/texmf-dist/tex/generic/babel/locale/byn/babel-byn.ini b/Master/texmf-dist/tex/generic/babel/locale/byn/babel-byn.ini
index 4a2d6023b7c..a9d0c5b8418 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/byn/babel-byn.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/byn/babel-byn.ini
@@ -7,8 +7,8 @@
[identification]
charset = utf8
-version = 1.0
-date = 2023-03-31
+version = 1.1
+date = 2024-06-24
name.local = ብሊን
name.english = Blin
name.babel = blin
@@ -105,16 +105,21 @@ time.short = [h]:[mm] [a]
[typography]
frenchspacing = yes
-hyphenrules =
-lefthyphenmin =
-righthyphenmin =
-hyphenchar =
-prehyphenchar =
-posthyphenchar =
-exhyphenchar =
-preexhyphenchar =
+; Modern practice. Use 'amharic' for the traditional one:
+hyphenrules = unhyphenated
+lefthyphenmin = 1
+righthyphenmin = 1
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
postexhyphenchar =
-hyphenationmin =
+hyphenationmin =
+linebreaking = s
+intraspace = 0 .1 0
+; The syntax is liable to change in 'other' values
+hyphenate.other.script = "1361 "1362 "1363 "1364 "1365 "1366 "1367 "1368
[characters]
delimiters.quotes =
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini b/Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini
index 0e0c9cc5734..d2f98bc65db 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini
@@ -4,11 +4,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; With some cleaning up by Stephen Huan (@stephen-huan)
[identification]
charset = utf8
-version = 1.0
-date = 2023-12-09
+version = 1.1
+date = 2024-08-11
name.local = 𑄌𑄋𑄴𑄟𑄳𑄦
name.english = Chakma
name.babel = chakma
@@ -146,8 +147,6 @@ hyphenationmin =
[characters]
ranges = 11100..1114F
-
-[characters]
delimiters.quotes =
auxiliary =
exemplarCharacters = [𑄀 𑄁 𑄂 𑄃 𑄄 𑄅 𑄆 𑄇 𑄈 𑄉 𑄊 𑄋 𑄌 𑄍 𑄎 𑄏 𑄐 𑄑 𑄒 𑄓 𑄔 𑄕 𑄖 𑄗 𑄘 𑄙 𑄚 𑄛 𑄜 𑄝 𑄞 𑄟 𑄠 𑄡 𑄢 𑄣 𑄤 𑄥 𑄦 𑄧 𑄨 𑄩 𑄪 𑄫 𑄬 𑄭 𑄮 𑄯 𑄰 𑄱 𑄲 𑄳 𑄴]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini b/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini
index 538f6426138..dd1f69945b3 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini
@@ -8,11 +8,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; With some cleaning up by Stephen Huan (@stephen-huan)
[identification]
charset = utf8
-version = 1.5
-date = 2022-12-08
+version = 1.6
+date = 2024-08-11
name.local = Kurdîy nawendî
name.english = Central Kurdish
name.babel = sorani centralkurdish-latin
@@ -66,18 +67,6 @@ months.wide.9 = Eylûl
months.wide.10 = Tişrînî Yekem
months.wide.11 = Tişrînî Dûhem
months.wide.12 = Kanûnî Dûhem
-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 =
diff --git a/Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.ini b/Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.ini
index 15248a46c52..27e5c237aec 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; With some cleaning up by Stephen Huan (@stephen-huan)
[identification]
charset = utf8
-version = 1.4
-date = 2022-12-08
+version = 1.5
+date = 2024-08-11
name.local = словѣ́ньскъ ѩꙁꙑ́къ
name.english = Church Slavic
name.babel = churchslavic-oldcyrillic
@@ -36,7 +37,6 @@ contents = Содержа́нїе}
listfigure = Надписа́нїе и҆з̾ѡбраже́нїй
listtable = Надписа́нїе табли́цъ
index = Предмѣ́тный ᲂу҆каза́тель
-author = И҆менно́й ᲂу҆каза́тель
figure = И҆з̾ѡбраже́нїе
table = Табли́ца
part = Ча́сть
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/fil/babel-fil.ini b/Master/texmf-dist/tex/generic/babel/locale/fil/babel-fil.ini
index a74c5c3f431..74c1b10be1e 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/fil/babel-fil.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/fil/babel-fil.ini
@@ -6,11 +6,13 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; contribution by J. Khaganov <@ponte-vecchio>
+; contribution by @DerKaiser4709
[identification]
charset = utf8
-version = 1.4
-date = 2022-07-03
+version = 1.5
+date = 2024-06-04
name.local = Filipino
name.english = Filipino
name.babel = filipino
@@ -26,50 +28,50 @@ encodings = T1 OT1 LY1
derivate = no
[captions]
-preface =
-ref =
-abstract =
-bib =
-chapter =
-appendix =
-contents =
-listfigure =
-listtable =
-index =
-figure =
-table =
-part =
+preface = Paunang Salita
+ref = Talasanggunian
+abstract = Abstrak
+bib = Talaaklatan
+chapter = Kabanata
+appendix = Hugpong
+contents = Talalamanan
+listfigure = Talalarawan
+listtable = Talatalayan
+index = Talatuntunan
+figure = Laraw
+table = Talay
+part = Bahagi
encl =
cc =
headto =
-page =
-see =
-also =
-proof =
-glossary =
+page = Pahina
+see = tignan ang
+also = tignan din
+proof = Patunay
+glossary = Glosaryo
[captions.licr]
-preface =
-ref =
-abstract =
-bib =
-chapter =
-appendix =
-contents =
-listfigure =
-listtable =
-index =
-figure =
-table =
-part =
+preface = Paunang Salita
+ref = Talasanggunian
+abstract = Abstrak
+bib = Talaaklatan
+chapter = Kabanata
+appendix = Hugpong
+contents = Talalamanan
+listfigure = Talalarawan
+listtable = Talatalayan
+index = Talatuntunan
+figure = Laraw
+table = Talay
+part = Bahagi
encl =
cc =
headto =
-page =
-see =
-also =
-proof =
-glossary =
+page = Pahina
+see = tignan ang
+also = tignan din
+proof = Patunay
+glossary = Glosaryo
[date.gregorian]
date.long = [MMMM] [d], [y]
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..0ccd73e6dc1 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.1
+date = 2024-11-05
name.local = français
name.english = French
name.babel = french-belgium french-be
@@ -190,35 +190,35 @@ 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= .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.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..b0aee1a8848 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.1
+date = 2024-11-05
name.local = français
name.english = French
name.babel = french
@@ -189,36 +189,36 @@ 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= .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.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/gez/babel-gez.ini b/Master/texmf-dist/tex/generic/babel/locale/gez/babel-gez.ini
index b84ab729083..85cbddcb068 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/gez/babel-gez.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/gez/babel-gez.ini
@@ -7,8 +7,8 @@
[identification]
charset = utf8
-version = 1.0
-date = 2023-03-31
+version = 1.1
+date = 2024-06-24
name.local = ግዕዝኛ
name.english = Geez
name.babel = geez
@@ -107,9 +107,10 @@ time.short = [h]:[mm] [a]
[typography]
frenchspacing = yes
-hyphenrules =
-lefthyphenmin =
-righthyphenmin =
+; Modern practice. Use 'amharic' for the traditional one:
+hyphenrules = unhyphenated
+lefthyphenmin = 1
+righthyphenmin = 1
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -117,6 +118,10 @@ exhyphenchar =
preexhyphenchar =
postexhyphenchar =
hyphenationmin =
+linebreaking = s
+intraspace = 0 .1 0
+; The syntax is liable to change in 'other' values
+hyphenate.other.script = "1361 "1362 "1363 "1364 "1365 "1366 "1367 "1368
[characters]
delimiters.quotes = ””’’
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/he/babel-he.ini b/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini
index 613a08b47b7..f0c1b90487f 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; With some cleaning up by Stephen Huan (@stephen-huan)
[identification]
charset = utf8
-version = 1.10
-date = 2023-08-31
+version = 1.11
+date = 2024-08-11
name.local = עברית
name.english = Hebrew
name.babel = hebrew
@@ -47,7 +48,7 @@ headto = אל
page = עמוד
see = ראה
also = ראה גם
-proof = הוכחה}
+proof = הוכחה
glossary = מילון מונחים
[captions.licr]
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 1d44a83d6ae..eab65831399 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
@@ -1,3 +1,4 @@
+
; 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:
@@ -9,8 +10,8 @@
[identification]
charset = utf8
-version = 1.11
-date = 2024-04-18
+version = 1.12
+date = 2024-08-27
name.local = 日本語
name.english = Japanese
name.babel = japanese
@@ -197,4 +198,35 @@ parenthesized.ideograph = ㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩
fullwidth.lower.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
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
+[transforms.prehyphenation]
+linebreak.strict.1.0 = { [々ぁぃぅぇぉっゃゅょゎ゛-ゞァィゥェォッャュョヮヵヶゕゖㇰ-ㇿ・-ヾ・-ゥェ-ー゙] }
+linebreak.strict.1.1 = { insert, penalty = 10000, step = 1 }
+linebreak.strict.1.2 = {}
+;
+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/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/ko/babel-ko-Hani.ini b/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko-Hani.ini
index eff48777f29..1bd1ed86d61 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko-Hani.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko-Hani.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; With some cleaning up by Stephen Huan (@stephen-huan)
[identification]
charset = utf8
-version = 1.5
-date = 2024-04-18
+version = 1.6
+date = 2024-08-11
name.local = 한국어
name.english = Korean
name.babel = korean-han korean-hani
@@ -56,9 +57,6 @@ see =
also =
proof = 證明
glossary = 語 彙
-section.template = [[presection]] [section] [[postsection]]
-presection = 第
-postsection = 節
[captions.licr]
preface =
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini b/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini
index a56ab37a39c..5bb9db0de60 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; With some cleaning up by Stephen Huan (@stephen-huan)
[identification]
charset = utf8
-version = 1.13
-date = 2024-04-18
+version = 1.14
+date = 2024-08-11
name.local = 한국어
name.english = Korean
name.babel = korean
@@ -57,9 +58,6 @@ see =
also =
proof = 증명
glossary = 용어집
-section.template = [[presection]] [section] [[postsection]]
-presection = 제
-postsection = 절
[captions.licr]
preface =
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/mk/babel-mk.ini b/Master/texmf-dist/tex/generic/babel/locale/mk/babel-mk.ini
index 1fa9142b128..937a336ea20 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/mk/babel-mk.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/mk/babel-mk.ini
@@ -8,11 +8,12 @@
; http://unicode.org/copyright.html
; * Some typos fixed by Stojan Trajanovski
; * Some typos fixed by Dario Gjorgjevski
+; With some cleaning up by Stephen Huan (@stephen-huan)
[identification]
charset = utf8
-version = 1.6
-date = 2022-09-07
+version = 1.7
+date = 2024-08-11
name.local = македонски
name.english = Macedonian
name.babel = macedonian
@@ -49,7 +50,7 @@ page = стр.
see = види
also = види исто така
proof = доказ
-glossaryname = Речник
+glossary = Речник
[captions.licr]
preface = \CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr
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/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/ro/babel-ro.ini b/Master/texmf-dist/tex/generic/babel/locale/ro/babel-ro.ini
index d75c53e5428..734bd0049de 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ro/babel-ro.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ro/babel-ro.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; With some cleaning up by Stephen Huan (@stephen-huan)
[identification]
charset = utf8
-version = 1.4
-date = 2022-10-12
+version = 1.5
+date = 2024-08-11
name.local = română
name.english = Romanian
name.babel = romanian
@@ -36,7 +37,7 @@ appendix = Anexa
contents = Cuprins
listfigure = Listă de figuri
listtable = Listă de tabele
-index = Index
+index = Glosar
figure = Figura
table = Tabela
part = Partea
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini b/Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini
index 3fbf1a022e7..8b7531f6889 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; With some cleaning up by Stephen Huan (@stephen-huan)
[identification]
charset = utf8
-version = 1.3
-date = 2022-10-12
+version = 1.4
+date = 2024-08-11
name.local = slovenščina
name.english = Slovenian
name.babel = slovene slovenian
@@ -47,7 +48,7 @@ page = Stran
see = glej
also = glej tudi
proof = Dokaz
-glossary = Glossary
+glossary = Slovar
[captions.licr]
preface = Predgovor
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ti/babel-ti.ini b/Master/texmf-dist/tex/generic/babel/locale/ti/babel-ti.ini
index 92aa31f638d..a4ae7c3ff0b 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ti/babel-ti.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ti/babel-ti.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.4
-date = 2023-03-11
+version = 1.5
+date = 2024-06-24
name.local = ትግርኛ
name.english = Tigrinya
name.babel = tigrinya
@@ -146,9 +146,10 @@ time.short = [h]:[mm] [a]
[typography]
frenchspacing = yes
-hyphenrules =
-lefthyphenmin =
-righthyphenmin =
+; Modern practice. Use 'amharic' for the traditional one:
+hyphenrules = unhyphenated
+lefthyphenmin = 1
+righthyphenmin = 1
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -156,6 +157,10 @@ exhyphenchar =
preexhyphenchar =
postexhyphenchar =
hyphenationmin =
+linebreaking = s
+intraspace = 0 .1 0
+; The syntax is liable to change in 'other' values
+hyphenate.other.script = "1361 "1362 "1363 "1364 "1365 "1366 "1367 "1368
[characters]
delimiters.quotes = “”‘’
diff --git a/Master/texmf-dist/tex/generic/babel/locale/tig/babel-tig.ini b/Master/texmf-dist/tex/generic/babel/locale/tig/babel-tig.ini
index c8e8fa6102c..170f59cb53f 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/tig/babel-tig.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/tig/babel-tig.ini
@@ -7,8 +7,8 @@
[identification]
charset = utf8
-version = 1.0
-date = 2023-03-31
+version = 1.1
+date = 2024-06-24
name.local = ትግረ
name.english = Tigre
name.babel = tigre
@@ -105,16 +105,21 @@ time.short = [h]:[mm] [a]
[typography]
frenchspacing = yes
-hyphenrules =
-lefthyphenmin =
-righthyphenmin =
-hyphenchar =
-prehyphenchar =
-posthyphenchar =
-exhyphenchar =
-preexhyphenchar =
+; Modern practice. Use 'amharic' for the traditional one:
+hyphenrules = unhyphenated
+lefthyphenmin = 1
+righthyphenmin = 1
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
postexhyphenchar =
-hyphenationmin =
+hyphenationmin =
+linebreaking = s
+intraspace = 0 .1 0
+; The syntax is liable to change in 'other' values
+hyphenate.other.script = "1361 "1362 "1363 "1364 "1365 "1366 "1367 "1368
[characters]
delimiters.quotes =
diff --git a/Master/texmf-dist/tex/generic/babel/locale/wal/babel-wal.ini b/Master/texmf-dist/tex/generic/babel/locale/wal/babel-wal.ini
index a28543e339a..4a5dd741077 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/wal/babel-wal.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/wal/babel-wal.ini
@@ -7,8 +7,8 @@
[identification]
charset = utf8
-version = 1.0
-date = 2023-03-31
+version = 1.1
+date = 2024-06-24
name.local = ወላይታቱ
name.english = Wolaytta
name.babel = wolaytta
@@ -105,16 +105,21 @@ time.short = [h]:[mm] [a]
[typography]
frenchspacing = yes
-hyphenrules =
-lefthyphenmin =
-righthyphenmin =
-hyphenchar =
-prehyphenchar =
-posthyphenchar =
-exhyphenchar =
-preexhyphenchar =
+; Modern practice. Use 'amharic' for the traditional one:
+hyphenrules = unhyphenated
+lefthyphenmin = 1
+righthyphenmin = 1
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
postexhyphenchar =
-hyphenationmin =
+hyphenationmin =
+linebreaking = s
+intraspace = 0 .1 0
+; The syntax is liable to change in 'other' values
+hyphenate.other.script = "1361 "1362 "1363 "1364 "1365 "1366 "1367 "1368
[characters]
delimiters.quotes =
diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini
index 44bb43ad511..af779cf183d 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.14
-date = 2023-10-24
+version = 1.15
+date = 2024-10-27
name.local = 中文
name.english = Chinese
name.opentype = Chinese Simplified
@@ -240,3 +240,31 @@ parenthesized.ideograph = ㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩
fullwidth.lower.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
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 82edeff91f7..c6eae45ca37 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -32,7 +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
@@ -178,8 +178,6 @@
{\expandafter\expandafter\expandafter\bbl@luapatterns
\csname bbl@hyphendata@\the\language\endcsname}}{}}
\endinput\fi
- % Here ends \ifx\AddBabelHook\@undefined
- % A few lines are only read by hyphen.cfg
\ifx\DisableBabelHook\@undefined
\AddBabelHook{luatex}{everylanguage}{%
\def\process@language##1##2##3{%
@@ -195,16 +193,13 @@
{\expandafter\expandafter\expandafter\bbl@tempb
\csname bbl@hyphendata@\the\language\endcsname}}
\endinput\fi
- % Here stops reading code for hyphen.cfg
- % The following is read the 2nd time it's loaded
- % First, global declarations for lua
-\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 '') .. '}{}{}')
@@ -229,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 ''
@@ -295,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}
@@ -379,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}
@@ -409,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
@@ -422,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)
@@ -471,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)
@@ -496,8 +502,10 @@ end
class = props.cjk_quotes[item.char]
end
- if class == 'cp' then class = 'cl' end % )] as CL
- if class == 'id' then class = 'I' end
+ if class == 'cp' then class = 'cl' % )] as CL
+ elseif class == 'id' then class = 'I'
+ elseif class == 'cj' then class = 'I' % loose
+ end
local br = 0
if class and last_class and Babel.cjk_breaks[last_class][class] then
@@ -544,10 +552,10 @@ end
func(head)
end
end
+ lang.hyphenate(head)
if Babel.cjk_enabled then
Babel.cjk_linebreak(head)
end
- lang.hyphenate(head)
if Babel.linebreaking.after then
for k, func in ipairs(Babel.linebreaking.after) do
func(head)
@@ -568,7 +576,6 @@ end
\ifin@ % cjk
\bbl@cjkintraspace
\directlua{
- Babel = Babel or {}
Babel.locale_props = Babel.locale_props or {}
Babel.locale_props[\the\localeid].linebreak = 'c'
}%
@@ -580,7 +587,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}')
@@ -844,23 +850,10 @@ end
}
\endgroup
\fi\fi % ends Arabic just block: \ifnum\bbl@bidimode>100...
+\bbl@trace{Font handling with fontspec}
\AddBabelHook{babel-fontspec}{afterextras}{\bbl@switchfont}
\AddBabelHook{babel-fontspec}{beforestart}{\bbl@ckeckstdfonts}
\DisableBabelHook{babel-fontspec}
-\bbl@trace{Font handling with fontspec}
-\ifx\ExplSyntaxOn\@undefined\else
- \def\bbl@fs@warn@nx#1#2{% \bbl@tempfs is the original macro
- \in@{,#1,}{,no-script,language-not-exist,}%
- \ifin@\else\bbl@tempfs@nx{#1}{#2}\fi}
- \def\bbl@fs@warn@nxx#1#2#3{%
- \in@{,#1,}{,no-script,language-not-exist,}%
- \ifin@\else\bbl@tempfs@nxx{#1}{#2}{#3}\fi}
- \def\bbl@loadfontspec{%
- \let\bbl@loadfontspec\relax
- \ifx\fontspec\@undefined
- \usepackage{fontspec}%
- \fi}%
-\fi
\@onlypreamble\babelfont
\newcommand\babelfont[2][]{% 1=langs/scripts 2=fam
\bbl@foreach{#1}{%
@@ -871,8 +864,10 @@ end
\fi}%
\edef\bbl@tempa{#1}%
\def\bbl@tempb{#2}% Used by \bbl@bblfont
- \bbl@loadfontspec
- \EnableBabelHook{babel-fontspec}% Just calls \bbl@switchfont
+ \ifx\fontspec\@undefined
+ \usepackage{fontspec}%
+ \fi
+ \EnableBabelHook{babel-fontspec}%
\bbl@bblfont}
\newcommand\bbl@bblfont[2][]{% 1=features 2=fontname, @font=rm|sf|tt
\bbl@ifunset{\bbl@tempb family}%
@@ -996,17 +991,10 @@ end
{\\\newfontscript{\bbl@cl{sname}}{\bbl@cl{sotf}}}%
\<keys_if_exist:nnF>{fontspec-opentype}{Language/\bbl@cl{lname}}%
{\\\newfontlanguage{\bbl@cl{lname}}{\bbl@cl{lotf}}}%
- \let\\\bbl@tempfs@nx\<__fontspec_warning:nx>%
- \let\<__fontspec_warning:nx>\\\bbl@fs@warn@nx
- \let\\\bbl@tempfs@nxx\<__fontspec_warning:nxx>%
- \let\<__fontspec_warning:nxx>\\\bbl@fs@warn@nxx
\\\renewfontfamily\\#4%
[\bbl@cl{lsys},% xetex removes unknown features :-(
\ifcase\bbl@engine\or RawFeature={family=\bbl@tempb},\fi
#2]}{#3}% ie \bbl@exp{..}{#3}
- \bbl@exp{%
- \let\<__fontspec_warning:nx>\\\bbl@tempfs@nx
- \let\<__fontspec_warning:nxx>\\\bbl@tempfs@nxx}%
\begingroup
#4%
\xdef#1{\f@family}% eg, \bbl@rmdflt@lang{FreeSerif(0)}
@@ -1027,7 +1015,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},
@@ -1195,7 +1183,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
@@ -1223,23 +1211,26 @@ 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%-%.]+)|([%-%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)
@@ -1248,8 +1239,8 @@ end
}}}&%
\bbl@foreach\babeltempb{&%
\bbl@forkv{{##1}}{&%
- \in@{,####1,}{,nil,step,data,remove,insert,string,no,pre,&%
- no,post,penalty,kashida,space,spacefactor,kern,node,after,}&%
+ \in@{,####1,}{,nil,step,data,remove,insert,string,no,pre,no,&%
+ post,penalty,kashida,space,spacefactor,kern,node,after,norule,}&%
\ifin@\else
\bbl@error{bad-transform-option}{####1}{}{}&%
\fi}}&%
@@ -1375,13 +1366,15 @@ end
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)
@@ -1392,7 +1385,7 @@ end
return head
end
%
- function Babel.pre_otfload_h(head, gc, sz, pt, dir)
+ function Babel.pre_otfload_h(head, gc, sz, pt, dir) %%% TODO
if Babel.numbers and Babel.digits_mapped then
head = Babel.numbers(head)
end
@@ -1415,7 +1408,7 @@ end
'luaotfload.node_processor') or nil)
}}
\breakafterdirmode=1
-\ifnum\bbl@bidimode>\@ne % Any bidi= except default=1
+\ifnum\bbl@bidimode>\@ne % Any bidi= except default (=1)
\let\bbl@beforeforeign\leavevmode
\AtEndOfPackage{\EnableBabelHook{babel-bidi}}
\RequirePackage{luatexbase}
@@ -1426,6 +1419,9 @@ end
require('babel-bidi-basic.lua')
\or
require('babel-bidi-basic-r.lua')
+ table.insert(Babel.ranges, {0xE000, 0xF8FF, 'on'})
+ table.insert(Babel.ranges, {0xF0000, 0xFFFFD, 'on'})
+ table.insert(Babel.ranges, {0x100000, 0x10FFFD, 'on'})
\fi}
\newattribute\bbl@attr@dir
\directlua{ Babel.attr_dir = luatexbase.registernumber'bbl@attr@dir' }
@@ -1493,6 +1489,12 @@ end
end
luatexbase.add_to_callback("hpack_filter", Babel.math_box_dir,
"Babel.math_box_dir", 0)
+ if Babel.unset_atdir then
+ luatexbase.add_to_callback("pre_linebreak_filter", Babel.unset_atdir,
+ "Babel.unset_atdir")
+ luatexbase.add_to_callback("hpack_filter", Babel.unset_atdir,
+ "Babel.unset_atdir")
+ end
}}%
\fi
\DeclareRobustCommand\localebox[1]{%
@@ -1638,6 +1640,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
@@ -1645,7 +1756,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] =
@@ -1682,6 +1792,21 @@ end
\bbl@replace\bbl@tempa{transforms.}{}%
\bbl@carg\bbl@transforms{babel\bbl@tempa}{##2}{##3}%
\fi}%
+ \bbl@exp{%
+ \\\bbl@ifblank{\bbl@cl{dgnat}}%
+ {\let\\\bbl@tempa\relax}%
+ {\def\\\bbl@tempa{%
+ \\\bbl@elt{transforms.prehyphenation}%
+ {digits.native.1.0}{([0-9])}%
+ \\\bbl@elt{transforms.prehyphenation}%
+ {digits.native.1.1}{string={1\string|0123456789\string|\bbl@cl{dgnat}}}}}}%
+ \ifx\bbl@tempa\relax\else
+ \toks@\expandafter\expandafter\expandafter{%
+ \csname bbl@inidata@\languagename\endcsname}%
+ \bbl@csarg\edef{inidata@\languagename}{%
+ \unexpanded\expandafter{\bbl@tempa}%
+ \the\toks@}%
+ \fi
\csname bbl@inidata@\languagename\endcsname
\bbl@release@transforms\relax % \relax closes the last item.
\fi}
@@ -1702,7 +1827,9 @@ end
{\chardef\bbl@tabular@mode\z@}%
{\chardef\bbl@tabular@mode\@ne}}% Mixed, with LTR cols
\ifnum\bbl@bidimode>\@ne % Any lua bidi= except default=1
- \ifcase\bbl@tabular@mode\or % 1
+ % Redefine: vrules mess up dirs. TODO: why?
+ \def\@arstrut{\relax\copy\@arstrutbox}%
+ \ifcase\bbl@tabular@mode\or % 1 = Mixed - default
\let\bbl@parabefore\relax
\AddToHook{para/before}{\bbl@parabefore}
\AtBeginDocument{%
@@ -1727,7 +1854,7 @@ end
{\\\do@row@strut\<fi>}{\\\do@row@strut\<fi>\egroup}}}%
{}}%
\fi}%
- \or % 2
+ \or % 2 = All RTL - tabular
\let\bbl@parabefore\relax
\AddToHook{para/before}{\bbl@parabefore}%
\AtBeginDocument{%
@@ -1753,9 +1880,9 @@ end
\ifnum\bbl@bidimode>\z@ % Any bidi=
\def\bbl@nextfake#1{% non-local changes, use always inside a group!
\bbl@exp{%
- \def\\\bbl@insidemath{0}%
\mathdir\the\bodydir
#1% Once entered in math, set boxes to restore values
+ \def\\\bbl@insidemath{0}%
\<ifmmode>%
\everyvbox{%
\the\everyvbox
diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf
index 346399ca4f2..e6fe3d88ca6 100644
--- a/Master/texmf-dist/tex/generic/babel/nil.ldf
+++ b/Master/texmf-dist/tex/generic/babel/nil.ldf
@@ -32,8 +32,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
-\ProvidesLanguage{nil}[2024/06/02 v24.6 Nil language]
+\ProvidesLanguage{nil}[2024/11/08 v24.13 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 f5f85e202d9..6624d517539 100644
--- a/Master/texmf-dist/tex/generic/babel/plain.def
+++ b/Master/texmf-dist/tex/generic/babel/plain.def
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\input babel.def
\endinput
%%
diff --git a/Master/texmf-dist/tex/generic/babel/switch.def b/Master/texmf-dist/tex/generic/babel/switch.def
index 13f56013121..e991164458d 100644
--- a/Master/texmf-dist/tex/generic/babel/switch.def
+++ b/Master/texmf-dist/tex/generic/babel/switch.def
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\let\bbl@onlyswitch\@empty
\input babel.def
\let\bbl@onlyswitch\@undefined
diff --git a/Master/texmf-dist/tex/generic/babel/txtbabel.def b/Master/texmf-dist/tex/generic/babel/txtbabel.def
index 70ae95c5d4b..380fb2380c7 100644
--- a/Master/texmf-dist/tex/generic/babel/txtbabel.def
+++ b/Master/texmf-dist/tex/generic/babel/txtbabel.def
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\providecommand\bbl@provide@intraspace{}
\bbl@trace{Redefinitions for bidi layout}
\def\bbl@sspre@caption{% TODO: Unused!
diff --git a/Master/texmf-dist/tex/generic/babel/xebabel.def b/Master/texmf-dist/tex/generic/babel/xebabel.def
index 9775e235b39..ccb2f14b9fd 100644
--- a/Master/texmf-dist/tex/generic/babel/xebabel.def
+++ b/Master/texmf-dist/tex/generic/babel/xebabel.def
@@ -32,7 +32,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-
\def\BabelStringsDefault{unicode}
\let\xebbl@stop\relax
\AddBabelHook{xetex}{encodedcommands}{%
@@ -94,23 +93,10 @@
\fi}%
\fi}
\ifx\DisableBabelHook\@undefined\endinput\fi %%%% TODO: why
+\bbl@trace{Font handling with fontspec}
\AddBabelHook{babel-fontspec}{afterextras}{\bbl@switchfont}
\AddBabelHook{babel-fontspec}{beforestart}{\bbl@ckeckstdfonts}
\DisableBabelHook{babel-fontspec}
-\bbl@trace{Font handling with fontspec}
-\ifx\ExplSyntaxOn\@undefined\else
- \def\bbl@fs@warn@nx#1#2{% \bbl@tempfs is the original macro
- \in@{,#1,}{,no-script,language-not-exist,}%
- \ifin@\else\bbl@tempfs@nx{#1}{#2}\fi}
- \def\bbl@fs@warn@nxx#1#2#3{%
- \in@{,#1,}{,no-script,language-not-exist,}%
- \ifin@\else\bbl@tempfs@nxx{#1}{#2}{#3}\fi}
- \def\bbl@loadfontspec{%
- \let\bbl@loadfontspec\relax
- \ifx\fontspec\@undefined
- \usepackage{fontspec}%
- \fi}%
-\fi
\@onlypreamble\babelfont
\newcommand\babelfont[2][]{% 1=langs/scripts 2=fam
\bbl@foreach{#1}{%
@@ -121,8 +107,10 @@
\fi}%
\edef\bbl@tempa{#1}%
\def\bbl@tempb{#2}% Used by \bbl@bblfont
- \bbl@loadfontspec
- \EnableBabelHook{babel-fontspec}% Just calls \bbl@switchfont
+ \ifx\fontspec\@undefined
+ \usepackage{fontspec}%
+ \fi
+ \EnableBabelHook{babel-fontspec}%
\bbl@bblfont}
\newcommand\bbl@bblfont[2][]{% 1=features 2=fontname, @font=rm|sf|tt
\bbl@ifunset{\bbl@tempb family}%
@@ -246,17 +234,10 @@
{\\\newfontscript{\bbl@cl{sname}}{\bbl@cl{sotf}}}%
\<keys_if_exist:nnF>{fontspec-opentype}{Language/\bbl@cl{lname}}%
{\\\newfontlanguage{\bbl@cl{lname}}{\bbl@cl{lotf}}}%
- \let\\\bbl@tempfs@nx\<__fontspec_warning:nx>%
- \let\<__fontspec_warning:nx>\\\bbl@fs@warn@nx
- \let\\\bbl@tempfs@nxx\<__fontspec_warning:nxx>%
- \let\<__fontspec_warning:nxx>\\\bbl@fs@warn@nxx
\\\renewfontfamily\\#4%
[\bbl@cl{lsys},% xetex removes unknown features :-(
\ifcase\bbl@engine\or RawFeature={family=\bbl@tempb},\fi
#2]}{#3}% ie \bbl@exp{..}{#3}
- \bbl@exp{%
- \let\<__fontspec_warning:nx>\\\bbl@tempfs@nx
- \let\<__fontspec_warning:nxx>\\\bbl@tempfs@nxx}%
\begingroup
#4%
\xdef#1{\f@family}% eg, \bbl@rmdflt@lang{FreeSerif(0)}
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
index 943745bf7a0..cca735bf1e0 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
@@ -266,6 +266,58 @@
%
%>>>
+%% check loaded TikZ/pgf version %<<<`
+%
+% parse the release date, thanks to Skillmon
+% https://github.com/pgf-tikz/pgf/issues/1348#issuecomment-2231681032
+% date can be yyyy-mm-dd or (older TikZ) yyyy/mm/dd
+\begingroup
+ \pgfutil@protected\def\parsedate#1%
+ {%
+ \afterassignment\parsedate@month
+ \pgf@circ@count@a=#1\relax
+ }
+ \pgfutil@protected\def\parsedate@month#1%
+ {%
+ \afterassignment\parsedate@day
+ \pgf@circ@count@b=%
+ }
+ \pgfutil@protected\def\parsedate@day#1%
+ {%
+ \afterassignment\parsedate@cleanup
+ \pgf@circ@count@c=%
+ }
+ \def\parsedate@cleanup#1\relax{}%
+ \parsedate{\pgfrevisiondate}%
+ \xdef\ctikz@@pgfyear{\the\pgf@circ@count@a}%
+ \xdef\ctikz@@pgfmonth{\the\pgf@circ@count@b}%
+ \xdef\ctikz@@pgfday{\the\pgf@circ@count@c}%
+\endgroup
+% The following code thanks to Skillmon:
+% https://tex.stackexchange.com/a/722570/38080
+% modified by romano to check the date
+\def\ctikz@@ifpgfafter@auxi#1#2%
+ {%
+ \ifnum#1
+ \ctikz@@ifpgfafter@auxii{#2}%
+ \fi
+ }
+\def\ctikz@@ifpgfafter@auxii#1\fi#2\ctikz@@ifpgfafter#3{\fi#1}
+\def\ctikz@@ifpgfafter#1-#2-#3#%
+ {%
+ \ctikz@@ifpgfafter@auxi{\ctikz@@pgfyear>#1}\pgfutil@firstoftwo
+ \ctikz@@ifpgfafter@auxi{\ctikz@@pgfyear<#1}\pgfutil@secondoftwo
+ \ctikz@@ifpgfafter@auxi{\ctikz@@pgfmonth>#2}\pgfutil@firstoftwo
+ \ctikz@@ifpgfafter@auxi{\ctikz@@pgfmonth<#2}\pgfutil@secondoftwo
+ \ctikz@@ifpgfafter@auxi{\ctikz@@pgfday<#3}\pgfutil@secondoftwo
+ \pgfutil@gobble\ctikz@@ifpgfafter\pgfutil@firstoftwo
+ }
+%
+% usage \ctikz@@ifpgfafter 2023-01-16{true}{false}
+% ^^^ no spaces here, braces needed.
+%
+%>>>
+
%% arrow tips macros and utilities %<<<1
% the default arrow is latexslim, which has been ported over old arrows library (deprecated)
@@ -298,9 +350,70 @@
\pgfpathclose
\pgfusepathqfill
}
-
\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
-
+%% Jack Tap, see
+%% https://github.com/circuitikz/circuitikz/issues/806
+\pgfdeclarearrow{name=Jack Tap,
+ parameters = {%
+ \the\pgfarrowlength,%
+ \the\pgfarrowwidth,%
+ \ifpgfarrowswap s\fi%
+ \ifpgfarrowopen o\fi%
+ \ifpgfarrowroundjoin j\fi
+ \ifpgfarrowroundcap c\fi%
+ },
+ setup code = {
+ \pgfarrowssettipend{.5\pgfarrowlength}
+ \pgfarrowssetlineend{-.6\pgfarrowlength}
+ \pgfarrowssetvisualbackend{-.6\pgfarrowlength}
+ \pgfarrowssetbackend{-.6\pgfarrowlength}
+ % hull
+ \pgfarrowshullpoint{.5\pgfarrowlength}{0pt}
+ \pgfarrowshullpoint{0pt}{\pgfarrowwidth}
+ \pgfarrowshullpoint{-.6\pgfarrowlength}{0pt}
+ % Saves: Only the length:
+ \pgfarrowssavethe\pgfarrowlength
+ \pgfarrowssavethe\pgfarrowwidth
+ },
+ drawing code = {
+ \pgfsetdash{}{+0pt}
+ \pgfarrowlinewidth=\pgflinewidth
+ \ifpgfarrowroundjoin\pgfsetroundjoin\else\pgfsetmiterjoin\fi
+ \ifpgfarrowroundcap\pgfsetroundcap\else\pgfsetbuttcap\fi
+ \pgfpathmoveto{\pgfqpoint{-.6\pgfarrowlength}{0pt}}
+ \pgfpathlineto{\pgfqpoint{-.5\pgfarrowlength}{0pt}}
+ \pgfpathlineto{\pgfqpoint{0pt}{\pgfarrowwidth}}
+ \pgfpathlineto{\pgfqpoint{.5\pgfarrowlength}{0pt}}
+ \ifpgfarrowopen
+ \pgfusepathqstroke
+ \else
+ \pgfpathclose
+ \ifdim\pgfarrowlinewidth>0pt\pgfusepathqfillstroke\else\pgfusepathqfill\fi
+ \fi
+ },
+ defaults = {length = 0.3cm, width=0.15cm, open},
+ % cache=false, % breaks everything
+}
+% the new "fill without arg" will be in TikZ 3.1.11. Apply it here if we have an
+% older version
+\ctikz@@ifpgfafter 2023-01-16{\relax}{%
+ % thanks @muzimuzhi https://github.com/pgf-tikz/pgf/issues/1348#issuecomment-2229075269
+ % undo the fill/.value required key
+ \expandafter\let\csname pgfk@/pgf/arrow keys/fill/.@def\endcsname\@undefined
+ \pgfkeys{/pgf/arrow keys/fill/.code={%
+ \def\pgf@temp{#1}%
+ \ifx\pgf@temp\pgf@nonetext%
+ \pgfarrowsaddtooptions{\pgfarrowopentrue}%
+ \else\ifx\pgf@temp\pgfkeysnovalue@text%
+ \pgfarrowsaddtooptions{\pgfarrowopenfalse}%
+ \else
+ \pgfarrowsaddtooptions{\pgfarrowopenfalse\def\pgf@arrows@fill@color{#1}}%
+ \fi\fi
+ }}%
+}
+\tikzset{v/.tip={Jack Tap[swap]}, ^/.tip={Jack Tap},
+ vf/.tip={Jack Tap[swap,fill]}, ^f/.tip={Jack Tap[fill]}}
+%
% select the arrows using available defaults.
\def\pgfcirc@arrow@default{default}
% choose the arrows to use. Use #2 and #3 if the key is equal to "default"
@@ -466,7 +579,30 @@
\fi
\fi
}
-
+% similar o the above, use the fill parameter to set fill or draw
+% for a subset of the shape
+\def\pgf@circ@subset@fill@or@draw#1{%
+ % You *must* be sure that this is called inside a \pgfscope!
+ \edef\@@none{none}\edef\@@default{default}
+ \edef\@@tmp{\ctikzvalof{#1/fill}}
+ \ifx\@@tmp\@@none
+ \pgfusepath{draw}
+ \else
+ \ifx\@@tmp\@@default\else
+ \pgfsetfillcolor{\@@tmp}
+ \fi
+ \pgfusepath{draw, fill}
+ \fi
+}
+% ...and for the thickness
+\def\pgf@circ@subset@thickness#1{%
+ % You *must* be sure that this is called inside a \pgfscope!
+ \edef\@@default{default}
+ \edef\@@tmp{\ctikzvalof{#1/thickness}}
+ \ifx\@@tmp\@@default\else
+ \pgfsetlinewidth{\@@tmp\pgflinewidth}%
+ \fi
+}
% set the text color (via \color) if the color is not default or none
% needed in some strange case (like bodydiode' dots)
\def\pgf@circ@maybe@color#1{%
@@ -557,6 +693,7 @@
% #7 - macros drawing the bipole
%
\long\def\pgfcircdeclarebipolescaled#1#2#3#4#5#6#7{
+ % \typeout{Declaring bipole:\space #4,}
\pgfdeclareshape{#4shape}{
\savedmacro{\ctikzclass}{\edef\ctikzclass{#1}}
\saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
@@ -602,97 +739,33 @@
\pgf@y=.5\pgf@y
}
\anchor{center}{\pgfpointorigin}
- \anchor{n}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{north east}{
- \northeast
- }
- \anchor{north west}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{ne}{
- \northeast
- }
- \anchor{nw}{
- \northeast
- \pgf@x=-\pgf@x
- }
- \anchor{e}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{s}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{south east}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{south west}{
- \southwest
- }
- \anchor{se}{
- \southwest
- \pgf@x=-\pgf@x
- }
- \anchor{sw}{
- \southwest
- }
- \anchor{w}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{north}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{east}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{south}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{west}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{right}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{above}{
- \northeast
- \pgf@x=0cm
- }
- \anchor{left}{
- \southwest
- \pgf@y=0cm
- }
- \anchor{below}{
- \southwest
- \pgf@x=0cm
- }
- \anchor{a}{
- \northeast
- \pgf@y=0cm
- }
- \anchor{b}{
- \southwest
- \pgf@y=0cm
- }
+ \anchor{n}{\northeast\pgf@x=0cm }
+ \anchor{north east}{\northeast}
+ \anchor{north west}{\northeast\pgf@x=-\pgf@x}
+ \anchor{ne}{\northeast}
+ \anchor{nw}{\northeast\pgf@x=-\pgf@x}
+ \anchor{e}{\northeast\pgf@y=0cm }
+ \anchor{s}{\southwest\pgf@x=0cm }
+ \anchor{south east}{\southwest\pgf@x=-\pgf@x}
+ \anchor{south west}{\southwest}
+ \anchor{se}{\southwest\pgf@x=-\pgf@x}
+ \anchor{sw}{\southwest}
+ \anchor{w}{\southwest\pgf@y=0cm }
+ \anchor{north}{\northeast\pgf@x=0cm }
+ \anchor{east}{\northeast\pgf@y=0cm }
+ \anchor{south}{\southwest\pgf@x=0cm }
+ \anchor{west}{\southwest\pgf@y=0cm }
+ \anchor{right}{\northeast\pgf@y=0cm }
+ \anchor{above}{\northeast\pgf@x=0cm }
+ \anchor{left}{\southwest\pgf@y=0cm }
+ \anchor{below}{\southwest\pgf@x=0cm }
+ \anchor{a}{\northeast\pgf@y=0cm }
+ \anchor{b}{\southwest\pgf@y=0cm }
\savedanchor{\textanchor}{%
\pgf@y=\ht\pgfnodeparttextbox
\pgf@x=-.5\wd\pgfnodeparttextbox
}
- \anchor{text}{
- \textanchor
- }
+ \anchor{text}{ \textanchor }
\anchorborder{%
\ifpgf@circuit@bipole@inverted
\pgf@circ@res@left=-\pgf@x
@@ -711,7 +784,6 @@
#2%
\pgf@circ@draw@component{
\pgf@circ@setcolor
-
\northeast
\pgf@circ@res@up = \pgf@y
\pgf@circ@res@zero = 0cm
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
index 626ed28812b..b30e741458d 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
@@ -632,13 +632,21 @@
\pgfusepath{draw}
\endpgfscope
}%
-
%% Zig-zag resistors
+% see https://github.com/circuitikz/circuitikz/discussions/814
+\ctikzset{resistors/zigzag stub/.initial=0}
+\ctikzset{resistors/zigzag hook/.code={}}
\def\pgf@circ@zigzag#1{%
+ \pgf@circ@res@temp=\ctikzvalof{resistors/zigzag stub}\pgf@circ@res@step
+ \advance \pgf@circ@res@step by -2\pgf@circ@res@temp
\divide \pgf@circ@res@step by \numexpr4*\zigs\relax
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \ifdim\pgf@circ@res@temp>0pt
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@temp -\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \fi
\pgf@circ@res@other = \pgf@circ@res@left
+ \advance\pgf@circ@res@other by \pgf@circ@res@temp
\pgf@circ@count@a=\zigs\relax
% first half zig
\advance\pgf@circ@res@other by \pgf@circ@res@step
@@ -655,11 +663,14 @@
\advance\pgf@circ@res@other by 2\pgf@circ@res@step
\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{#1\pgf@circ@res@down}}
\advance\pgf@circ@res@other by \pgf@circ@res@step
- \pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \ifdim\pgf@circ@res@temp>0pt
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@other+\pgf@circ@res@temp+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \fi
\pgfsetbeveljoin
+ \pgfkeys{/tikz/circuitikz/resistors/zigzag hook}
\pgfusepath{draw}
}
-
%% Resistor
\pgfcircdeclarebipolescaled{resistors}
{
@@ -672,7 +683,7 @@
{
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistor/width}*\scaledRlen}
\pgf@circ@zigzag{1}
}
@@ -692,7 +703,7 @@
{
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/vresistor/width}*\scaledRlen}
\pgf@circ@zigzag{.5}
\pgfscope
@@ -731,7 +742,7 @@
{
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/potentiometer/width}*\scaledRlen}
\pgf@circ@zigzag{1}
\pgfscope
@@ -761,7 +772,7 @@
{%
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/resistivesens/width}*\scaledRlen}
\pgf@circ@zigzag{.5}
\pgfscope
@@ -810,7 +821,7 @@
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right/\@@intscale+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{+0pt}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{+0pt}}
\pgftransformationadjustments
- \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/ldresistor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}
+ \pgfmathsetlength{\pgf@circ@res@step}{\ctikzvalof{bipoles/ldresistor/width}*\scaledRlen}
\pgf@circ@zigzag{\@@hscale}
}%
@@ -6031,6 +6042,13 @@
\ctikzset{bipoles/qpprobe/voltage/additional shift/.initial=.5}
\ctikzset{bipoles/iloop/width/.initial=.40}
\ctikzset{bipoles/iloop/height/.initial=.60}
+% currtap see https://github.com/circuitikz/circuitikz/issues/807
+\ctikzset{bipoles/currtap/height/.initial=0.4}
+\ctikzset{bipoles/currtap/dot size/.initial=0.5}
+\ctikzset{bipoles/currtap/fill/.initial=default}
+\ctikzset{bipoles/currtap/dash/.initial=none}
+\ctikzset{bipoles/currtap/color/.initial=default}
+\ctikzset{bipoles/currtap/thickness/.initial=default}
\ctikzset{bipoles/oscope/height/.initial=.60}
\ctikzset{bipoles/oscope/width/.initial=.60}
@@ -6607,6 +6625,28 @@
\pgfusepath{draw}
\endpgfscope
}
+%% currtap
+\pgfcircdeclarebipolescaled{instruments}
+{
+ \savedmacro{\@@dotsize}{\def\@@dotsize{\ctikzvalof{bipoles/currtap/dot size}}}
+ \anchor{tap}{\northeast\pgf@x=0pt\pgf@y=\@@dotsize\pgf@y\pgf@y=-\pgf@y}
+}
+{\ctikzvalof{bipoles/currtap/height}}
+{currtap}
+{\ctikzvalof{bipoles/currtap/height}}
+{\ctikzvalof{bipoles/currtap/height}}
+{
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
+ \pgfpathlineto{\pgfpoint{0.95\pgf@circ@res@left}{0pt}}
+ \pgfpatharc{180}{0}{0.95\pgf@circ@res@right}
+ \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
+ \pgfusepath{draw}
+ \pgf@circ@subset@color@dash{bipoles/currtap}
+ \pgf@circ@subset@thickness{bipoles/currtap}
+ \pgfusepath{draw}
+ \pgfpathcircle{\pgfpoint{0pt}{0pt}}{\@@dotsize*\pgf@circ@res@up}
+ \pgf@circ@subset@fill@or@draw{bipoles/currtap}
+}
% %>>>
% Path definitions for Instruments%<<<
@@ -6619,8 +6659,8 @@
\pgfcirc@activate@bipole@simple{l}{rmeterwa}
\pgfcirc@activate@bipole@simple{l}{smeter}
\pgfcirc@activate@bipole@simple{l}{iloop}
-% \pgfcirc@activate@bipole@simple{l}{iloop2} that was wrong
\pgfcirc@activate@bipole{l}{ilooptwo}{iloop2}{iloop2}
+\pgfcirc@activate@bipole@simple{l}{currtap}
\pgfcirc@activate@bipole@simple{l}{qvprobe}
\pgfcirc@activate@bipole@simple{l}{qiprobe}
\pgfcirc@activate@bipole@simple{l}{qpprobe}
@@ -6774,16 +6814,22 @@
% spring into the damper
\pgfscope
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}}
+ \pgfscope
+ \pgftransformationadjustments
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*0.5*\pgflinewidth}{\pgf@circ@res@zero}}
+ \pgfpathlineto{\pgfpoint{.95\pgf@circ@res@left}{\pgf@circ@res@zero}}
\pgfsetcornersarced{\pgfpoint{.25\pgf@circ@res@up}{.25\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{.75\pgf@circ@res@left}{.75\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{.5\pgf@circ@res@left}{-.75\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{.25\pgf@circ@res@left}{.75\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0pt}{-.75\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{\ctikzvalof{bipoles/damper/length}\pgf@circ@res@right}{.75\pgf@circ@res@up}}
+ \pgfsetbuttcap
+ \pgfsetbeveljoin
\pgfusepath{stroke}
\endpgfscope
+ \endpgfscope
% damper box
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@down}}
@@ -7171,18 +7217,18 @@
{\ctikzvalof{bipoles/thermocouple/height}}
{\ctikzvalof{bipoles/thermocouple/width}}
{
+ \pgfsetrectcap
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
- \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
- \pgfusepath{draw}
- \pgfsetlinewidth{\pgfstartlinewidth}
- \pgfpathmoveto{\pgfpoint{0}{\pgf@circ@res@down}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{.5\pgf@circ@res@down}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
\pgfusepath{draw}
+ \pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+ \pgfsetroundcap
+ \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{.5\pgf@circ@res@down}}
+ \pgfpathlineto{\pgfpoint{0}{\pgf@circ@res@down}}
+ \pgfusepath{draw}
}
%% fuse
\pgfcircdeclarebipolescaled{misc}
diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex
index e3665b88625..cb95f54ef3e 100644
--- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex
+++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircpath.tex
@@ -231,13 +231,15 @@
\compattikzset{#2/.style={\comnpatname #1, #3={##1}}}%
}
% create a bipole
-\def\pgfcirc@activate@bipole#1#2#3#4{% path name, base node name, style name
+\def\pgfcirc@activate@bipole#1#2#3#4{% type of label, path name, base node name, style name
+ % \typeout{Activate bipole:\space #4,}
\expandafter\def\csname pgf@circ@#2@path\endcsname##1{\pgf@circ@bipole@path{#3}{##1}}%
\pgfcirc@path@to@style{#1}{#2}{#4}{}% no options here, let's see
}
\def\pgfcirc@activate@bipole@simple#1#2{\pgfcirc@activate@bipole{#1}{#2}{#2}{#2}}
% create a bipole with options
-\def\pgfcirc@activate@bipole@opt#1#2#3#4#5{% path name, base node name, style name
+\def\pgfcirc@activate@bipole@opt#1#2#3#4#5{% type of label, path name, base node name, style name, options
+ % \typeout{Activate bipole:\space #4,}
\expandafter\def\csname pgf@circ@#2@path\endcsname##1{\pgf@circ@bipole@path{#3}{##1}}%
\pgfcirc@path@to@style{#1}{#2}{#4}{#5}% no options here, let's see
}
diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty
index 7f3827b207b..61d4f2d20c2 100644
--- a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty
+++ b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.sty
@@ -6,7 +6,7 @@
%%
%% lt3luabridge.dtx (with options: `latex-package')
%%
-%% Copyright (C) 2016-2024 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -45,8 +45,8 @@
\RequirePackage{expl3}
\ProvidesExplPackage
{lt3luabridge}%
- {2024-02-14}%
- {2.1.0}%
+ {2024-07-03}%
+ {2.2.0}%
{An expl3 package that allows you to execute Lua code in LuaTeX or any other
TeX engine that exposes the shell}
\input lt3luabridge\relax
diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex
index 256456220e0..26d3dc6a0b9 100644
--- a/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex
+++ b/Master/texmf-dist/tex/generic/lt3luabridge/lt3luabridge.tex
@@ -6,7 +6,7 @@
%%
%% lt3luabridge.dtx (with options: `generic-package')
%%
-%% Copyright (C) 2016-2024 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -117,9 +117,34 @@
=
{ \c_luabridge_method_shell_int }
{
- \str_const:Nn
- \c_luabridge_default_output_dirname_str
- { . }
+ \sys_if_platform_unix:TF
+ {
+ \str_const:Nn
+ \c_luabridge_default_output_dirname_str
+ { $TEXMF_OUTPUT_DIRECTORY }
+ }
+ {
+ \sys_if_platform_windows:TF
+ {
+ \str_set:Nn
+ \l_tmpa_str
+ { TEXMF_OUTPUT_DIRECTORY }
+ \str_put_left:NV
+ \l_tmpa_str
+ \c_percent_str
+ \str_put_right:NV
+ \l_tmpa_str
+ \c_percent_str
+ \str_const:NV
+ \c_luabridge_default_output_dirname_str
+ \l_tmpa_str
+ }
+ {
+ \str_const:Nn
+ \c_luabridge_default_output_dirname_str
+ { . }
+ }
+ }
\str_const:Nx
\c_luabridge_default_helper_script_filename_str
{ \jobname.luabridge.lua }
@@ -207,9 +232,37 @@
\g_luabridge_helper_script_filename_str
\sys_get_shell:xnNTF
{
- texlua~
- \g_luabridge_output_dirname_str /
- \g_luabridge_helper_script_filename_str
+ \str_if_eq:NNTF
+ \g_luabridge_output_dirname_str
+ \c_luabridge_default_output_dirname_str
+ {
+ \sys_if_platform_windows:TF
+ {
+ if~not~defined~TEXMF_OUTPUT_DIRECTORY~(
+ texlua~
+ \g_luabridge_helper_script_filename_str
+ )~else~(
+ texlua~
+ \g_luabridge_output_dirname_str /
+ \g_luabridge_helper_script_filename_str
+ )
+ }
+ {
+ \sys_if_platform_unix:T
+ {
+ TEXMF_OUTPUT_DIRECTORY =
+ ${TEXMF_OUTPUT_DIRECTORY:-.} \iow_newline:
+ }
+ texlua~
+ \g_luabridge_output_dirname_str /
+ \g_luabridge_helper_script_filename_str
+ }
+ }
+ {
+ texlua~
+ \g_luabridge_output_dirname_str /
+ \g_luabridge_helper_script_filename_str
+ }
}
{ }
#1
diff --git a/Master/texmf-dist/tex/generic/lt3luabridge/t-lt3luabridge.tex b/Master/texmf-dist/tex/generic/lt3luabridge/t-lt3luabridge.tex
index ac4eed7372b..35e6ab1e8ab 100644
--- a/Master/texmf-dist/tex/generic/lt3luabridge/t-lt3luabridge.tex
+++ b/Master/texmf-dist/tex/generic/lt3luabridge/t-lt3luabridge.tex
@@ -6,7 +6,7 @@
%%
%% lt3luabridge.dtx (with options: `context-package')
%%
-%% Copyright (C) 2016-2024 Vít Novotný
+%% Copyright (C) 2016-2024 Vít Starý Novotný
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/Master/texmf-dist/tex/generic/markdown/markdown.tex b/Master/texmf-dist/tex/generic/markdown/markdown.tex
index 9c71c07afd1..ed5a94c990c 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ý
+%% 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
@@ -51,7 +51,9 @@
\prop_new:N \g__markdown_default_lua_options_prop
\seq_new:N \g__markdown_option_layers_seq
\tl_const:Nn \c__markdown_option_layer_lua_tl { lua }
-\seq_gput_right:NV \g__markdown_option_layers_seq \c__markdown_option_layer_lua_tl
+\seq_gput_right:NV
+ \g__markdown_option_layers_seq
+ \c__markdown_option_layer_lua_tl
\cs_new:Nn
\__markdown_add_lua_option:nnn
{
@@ -128,21 +130,50 @@
\cs_generate_variant:Nn
\msg_error:nnnn
{ nnnV }
-\seq_new:N \g__markdown_option_types_seq
-\tl_const:Nn \c__markdown_option_type_clist_tl { clist }
-\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_clist_tl
-\tl_const:Nn \c__markdown_option_type_counter_tl { counter }
-\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_counter_tl
-\tl_const:Nn \c__markdown_option_type_boolean_tl { boolean }
-\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_boolean_tl
-\tl_const:Nn \c__markdown_option_type_number_tl { number }
-\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_number_tl
-\tl_const:Nn \c__markdown_option_type_path_tl { path }
-\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_path_tl
-\tl_const:Nn \c__markdown_option_type_slice_tl { slice }
-\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_slice_tl
-\tl_const:Nn \c__markdown_option_type_string_tl { string }
-\seq_gput_right:NV \g__markdown_option_types_seq \c__markdown_option_type_string_tl
+\seq_new:N
+ \g__markdown_option_types_seq
+\tl_const:Nn
+ \c__markdown_option_type_clist_tl
+ { clist }
+\seq_gput_right:NV
+ \g__markdown_option_types_seq
+ \c__markdown_option_type_clist_tl
+\tl_const:Nn
+ \c__markdown_option_type_counter_tl
+ { counter }
+\seq_gput_right:NV
+ \g__markdown_option_types_seq
+ \c__markdown_option_type_counter_tl
+\tl_const:Nn
+ \c__markdown_option_type_boolean_tl
+ { boolean }
+\seq_gput_right:NV
+ \g__markdown_option_types_seq
+ \c__markdown_option_type_boolean_tl
+\tl_const:Nn
+ \c__markdown_option_type_number_tl
+ { number }
+\seq_gput_right:NV
+ \g__markdown_option_types_seq
+ \c__markdown_option_type_number_tl
+\tl_const:Nn
+ \c__markdown_option_type_path_tl
+ { path }
+\seq_gput_right:NV
+ \g__markdown_option_types_seq
+ \c__markdown_option_type_path_tl
+\tl_const:Nn
+ \c__markdown_option_type_slice_tl
+ { slice }
+\seq_gput_right:NV
+ \g__markdown_option_types_seq
+ \c__markdown_option_type_slice_tl
+\tl_const:Nn
+ \c__markdown_option_type_string_tl
+ { string }
+\seq_gput_right:NV
+ \g__markdown_option_types_seq
+ \c__markdown_option_type_string_tl
\cs_new:Nn
\__markdown_get_option_type:nN
{
@@ -323,6 +354,10 @@
\__markdown_add_lua_option:nnn
{ eagerCache }
{ boolean }
+ { true }
+\__markdown_add_lua_option:nnn
+ { experimental }
+ { boolean }
{ false }
\__markdown_add_lua_option:nnn
{ singletonCache }
@@ -413,6 +448,10 @@
{ boolean }
{ false }
\__markdown_add_lua_option:nnn
+ { ensureJekyllData }
+ { boolean }
+ { false }
+\__markdown_add_lua_option:nnn
{ expectJekyllData }
{ boolean }
{ false }
@@ -580,12 +619,20 @@
{ boolean }
{ true }
\ExplSyntaxOff
-\def\markdownLastModified{2024-06-20}%
-\def\markdownVersion{3.6.1-0-g5a45a922}%
+\def\markdownLastModified{2024-11-03}%
+\def\markdownVersion{3.8.1-0-gbbed72f3}%
\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 }
@@ -602,7 +649,9 @@
\seq_new:N \g__markdown_plain_tex_options_seq
\prop_new:N \g__markdown_plain_tex_option_types_prop
\prop_new:N \g__markdown_default_plain_tex_options_prop
-\seq_gput_right:NV \g__markdown_option_layers_seq \c__markdown_option_layer_plain_tex_tl
+\seq_gput_right:NV
+ \g__markdown_option_layers_seq
+ \c__markdown_option_layer_plain_tex_tl
\cs_new:Nn
\__markdown_add_plain_tex_option:nnn
{
@@ -622,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 }
@@ -664,38 +716,10 @@
{ inputTempFileName }
{ path }
{ \jobname.markdown.in }
-\cs_generate_variant:Nn
- \__markdown_add_plain_tex_option:nnn
- { nnV }
-\ExplSyntaxOff
-\input lt3luabridge.tex
-\ExplSyntaxOn
-\bool_if:nTF
- {
- \cs_if_exist_p:N
- \luabridge_tl_set:Nn &&
- (
- \int_compare_p:nNn
- { \g_luabridge_method_int }
- =
- { \c_luabridge_method_directlua_int } ||
- \sys_if_shell_unrestricted_p:
- )
- }
- {
- \luabridge_tl_set:Nn
- \l_tmpa_tl
- { print(os.getenv("TEXMF_OUTPUT_DIRECTORY") or ".") }
- }
- {
- \tl_set:Nn
- \l_tmpa_tl
- { . }
- }
-\__markdown_add_plain_tex_option:nnV
+\__markdown_add_plain_tex_option:nnn
{ outputDir }
{ path }
- \l_tmpa_tl
+ { . }
\__markdown_add_plain_tex_option:nnn
{ plain }
{ boolean }
@@ -740,18 +764,64 @@
\cs_new:Nn
\__markdown_define_option_command:n
{
- \__markdown_option_tl_to_csname:nN
+ \str_if_eq:nnTF
{ #1 }
- \l_tmpa_tl
- \cs_if_exist:cF
- { \l_tmpa_tl }
+ { outputDir }
+ { \__markdown_define_option_command_output_dir: }
{
- \__markdown_get_default_option_value:nN
- { #1 }
- \l_tmpa_tl
- \__markdown_set_option_value:nV
+ \__markdown_option_tl_to_csname:nN
{ #1 }
\l_tmpa_tl
+ \cs_if_exist:cF
+ { \l_tmpa_tl }
+ {
+ \__markdown_get_default_option_value:nN
+ { #1 }
+ \l_tmpa_tl
+ \__markdown_set_option_value:nV
+ { #1 }
+ \l_tmpa_tl
+ }
+ }
+ }
+\ExplSyntaxOff
+\input lt3luabridge.tex
+\ExplSyntaxOn
+\cs_new:Nn
+ \__markdown_define_option_command_output_dir:
+ {
+ \cs_if_free:NT
+ \markdownOptionOutputDir
+ {
+ \bool_if:nTF
+ {
+ \cs_if_exist_p:N
+ \luabridge_tl_set:Nn &&
+ (
+ \int_compare_p:nNn
+ { \g_luabridge_method_int }
+ =
+ { \c_luabridge_method_directlua_int } ||
+ \sys_if_shell_unrestricted_p:
+ )
+ }
+ {
+ \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
+ \markdownOptionOutputDir
+ { . }
+ }
}
}
\cs_new:Nn
@@ -914,7 +984,7 @@
\prg_generate_conditional_variant:Nnn
\str_if_eq:nn
{ en }
- { F }
+ { p, F }
\msg_new:nnn
{ markdown }
{ malformed-name-for-clist-option }
@@ -948,14 +1018,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
@@ -978,31 +1056,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
- { #1 / }
+ \tl_put_right:Nn
+ \g__markdown_current_theme_tl
+ { / }
\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 }
@@ -1017,6 +1149,9 @@
\cs_generate_variant:Nn
\tl_replace_all:Nnn
{ NnV }
+\cs_generate_variant:Nn
+ \cs_gset:Npn
+ { Npe }
\prop_new:N
\g__markdown_snippets_prop
\cs_new:Nn
@@ -1044,10 +1179,14 @@
{ redefined-snippet }
\l_tmpa_tl
}
- \prop_gput:NVn
+ \keys_precompile:nnN
+ { markdown/options }
+ { #2 }
+ \l_tmpb_tl
+ \prop_gput:NVV
\g__markdown_snippets_prop
\l_tmpa_tl
- { #2 }
+ \l_tmpb_tl
}
\cs_gset_eq:NN
\markdownSetupSnippet
@@ -1061,20 +1200,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: }
}
@@ -1098,7 +1238,7 @@
\g__markdown_snippets_prop
\l_tmpa_tl
\l_tmpb_tl
- \__markdown_setup:V
+ \tl_use:N
\l_tmpb_tl
}
{
@@ -1113,9 +1253,6 @@
{ markdown }
{ undefined-snippet }
{ Can't~invoke~undefined~snippet~#1 }
-\cs_generate_variant:Nn
- \__markdown_setup:n
- { V }
\tl_new:N
\l__markdown_import_current_theme_tl
\keys_define:nn
@@ -2370,6 +2507,26 @@
{ untickedBox }
{ 0 }
\ExplSyntaxOff
+\def\markdownRendererWarning{%
+ \markdownRendererWarningPrototype}%
+\def\markdownRendererError{%
+ \markdownRendererErrorPrototype}%
+\ExplSyntaxOn
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { warning }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { warning }
+ { 4 }
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { error }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { error }
+ { 4 }
+\ExplSyntaxOff
\def\markdownRendererJekyllDataBegin{%
\markdownRendererJekyllDataBeginPrototype}%
\ExplSyntaxOn
@@ -2458,11 +2615,80 @@
{ jekyllDataNumber }
{ 2 }
\ExplSyntaxOff
-\def\markdownRendererJekyllDataString{%
- \markdownRendererJekyllDataStringPrototype}%
+\def\markdownRendererJekyllDataTypographicString{%
+ \markdownRendererJekyllDataTypographicStringPrototype}%
+\def\markdownRendererJekyllDataProgrammaticString{%
+ \markdownRendererJekyllDataProgrammaticStringPrototype}%
\ExplSyntaxOn
\seq_gput_right:Nn
\g__markdown_renderers_seq
+ { jekyllDataTypographicString }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { jekyllDataTypographicString }
+ { 2 }
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
+ { jekyllDataProgrammaticString }
+\prop_gput:Nnn
+ \g__markdown_renderer_arities_prop
+ { jekyllDataProgrammaticString }
+ { 2 }
+\cs_gset:Npn
+ \markdownRendererJekyllDataTypographicString
+ {
+ \cs_if_exist:NTF
+ \markdownRendererJekyllDataString
+ {
+ \__markdown_if_option:nTF
+ { experimental }
+ {
+ \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
+ }
+ }
+ {
+ \cs_if_exist:NTF
+ \markdownRendererJekyllDataStringPrototype
+ {
+ \__markdown_if_option:nTF
+ { experimental }
+ {
+ \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
+ }
+ }
+ {
+ \markdownRendererJekyllDataTypographicStringPrototype
+ }
+ }
+ }
+\seq_gput_right:Nn
+ \g__markdown_renderers_seq
{ jekyllDataString }
\prop_gput:Nnn
\g__markdown_renderer_arities_prop
@@ -2481,9 +2707,12 @@
{ 1 }
\cs_new:Nn \__markdown_define_renderers:
{
- \seq_map_function:NN
+ \seq_map_inline:Nn
\g__markdown_renderers_seq
- \__markdown_define_renderer:n
+ {
+ \__markdown_define_renderer:n
+ { ##1 }
+ }
}
\cs_new:Nn \__markdown_define_renderer:n
{
@@ -2547,6 +2776,13 @@
\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
@@ -2804,9 +3040,12 @@
{ nV }
\cs_new:Nn \__markdown_define_renderer_prototypes:
{
- \seq_map_function:NN
+ \seq_map_inline:Nn
\g__markdown_renderers_seq
- \__markdown_define_renderer_prototype:n
+ {
+ \__markdown_define_renderer_prototype:n
+ { ##1 }
+ }
}
\cs_new:Nn \__markdown_define_renderer_prototype:n
{
@@ -2871,14 +3110,19 @@
\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_set:Npn
+ { #3 }
+ { }
+ }
}
}
\cs_generate_variant:Nn
@@ -2980,6 +3224,11 @@
|gdef|markdownBegin{%
|markdownReadAndConvert{\markdownEnd}%
{|markdownEnd}}%
+ |gdef|yamlBegin{%
+ |begingroup
+ |yamlSetup{jekyllData, expectJekyllData, ensureJekyllData}%
+ |markdownReadAndConvert{\yamlEnd}%
+ {|yamlEnd}}%
|endgroup
\ExplSyntaxOn
\keys_define:nn
@@ -3043,53 +3292,91 @@
\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
+ \msg_info:nnnn
{ markdown }
{ loading-plain-tex-theme }
{ #1 }
+ { #2 }
\prop_gput:Nnx
\g__markdown_plain_tex_loaded_themes_linenos_prop
{ #1 }
{ \tex_the:D \tex_inputlineno:D }
+ \prop_gput:Nnn
+ \g__markdown_plain_tex_loaded_themes_versions_prop
+ { #1 }
+ { #2 }
\file_input:n
- { markdown theme #2 }
+ { 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 }
{ 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
{
@@ -3113,16 +3400,17 @@
\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 }
\str_if_eq:VVT
\c__markdown_top_layer_tl
\c__markdown_option_layer_plain_tex_tl
@@ -3131,8 +3419,16 @@
\__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
}
@@ -3171,7 +3467,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
@@ -3188,9 +3484,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
- { "##1" ,~ }
+ \l_tmpb_tl
+ \tl_gput_right:Nn
+ \g__markdown_formatted_lua_options_tl
+ { " ,~ }
}
\tl_gput_right:Nx
\g__markdown_formatted_lua_options_tl
@@ -3201,9 +3506,18 @@
\__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
@@ -3211,18 +3525,77 @@
{ Vn }
\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
@@ -3319,6 +3692,9 @@
}
}
}
+ \str_gset:NV
+ \g_luabridge_output_dirname_str
+ \markdownOptionOutputDir
\luabridge_now:e
{ #1 }
}
@@ -3405,29 +3781,42 @@
\msg_new:nnn
{ markdown }
{ buffering-markinline }
- { Buffering~inline~markdown~input~into~the~temporary~input~file~"#1". }
+ { Buffering~inline~markdown~input~into~
+ the~temporary~input~file~"#1". }
\msg_new:nnnn
{ markdown }
{ markinline-peek-failure }
{ Use~of~\iow_char:N \\ markinline~doesn't~match~its~definition }
- { The~macro~should~be~followed~by~inline~markdown~text~in~curly~braces }
+ { The~macro~should~be~followed~by~inline~
+ markdown~text~in~curly~braces }
\cs_new:Npn
\markdownInput
#1
{
- \file_get_full_name:nNTF
- { #1 }
- \l_tmpa_tl
+ \__markdown_if_option:nTF
+ { frozenCache }
{
- \exp_args:NV
- \markdownInputRaw
- \l_tmpa_tl
+ \markdownInputRaw
+ { #1 }
}
{
- \msg_error:nnnV
- { markdown }
- { markdown-file-does-not-exist }
+ \tl_set:Nx
+ \l_tmpa_tl
{ #1 }
+ \file_get_full_name:VNTF
+ \l_tmpa_tl
+ \l_tmpb_tl
+ {
+ \exp_args:NV
+ \markdownInputRaw
+ \l_tmpb_tl
+ }
+ {
+ \msg_error:nnV
+ { markdown }
+ { markdown-file-does-not-exist }
+ \l_tmpa_tl
+ }
}
}
\msg_new:nnn
@@ -3453,20 +3842,18 @@
|fi
|markdownInfo{Including markdown document number
"|the|markdownOptionFrozenCacheCounter" from frozen cache}%
- |csname markdownFrozenCache|the|markdownOptionFrozenCacheCounter|endcsname
+ |csname markdownFrozenCache%
+ |the|markdownOptionFrozenCacheCounter|endcsname
|global|advance|markdownOptionFrozenCacheCounter by 1|relax
}{%
|markdownInfo{Including markdown document "&1"}%
|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 dc8a90917f6..6ca36cac93f 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ý
+%% 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
@@ -77,18 +77,22 @@
\def\markdownRendererUlEndTightPrototype{}%
\def\markdownRendererOlBeginPrototype{}%
\def\markdownRendererOlBeginTightPrototype{}%
-\def\markdownRendererFancyOlBeginPrototype#1#2{\markdownRendererOlBegin}%
-\def\markdownRendererFancyOlBeginTightPrototype#1#2{\markdownRendererOlBeginTight}%
+\def\markdownRendererFancyOlBeginPrototype#1#2{%
+ \markdownRendererOlBegin}%
+\def\markdownRendererFancyOlBeginTightPrototype#1#2{%
+ \markdownRendererOlBeginTight}%
\def\markdownRendererOlItemPrototype{}%
\def\markdownRendererOlItemWithNumberPrototype#1{}%
\def\markdownRendererOlItemEndPrototype{}%
\def\markdownRendererFancyOlItemPrototype{\markdownRendererOlItem}%
-\def\markdownRendererFancyOlItemWithNumberPrototype{\markdownRendererOlItemWithNumber}%
+\def\markdownRendererFancyOlItemWithNumberPrototype{%
+ \markdownRendererOlItemWithNumber}%
\def\markdownRendererFancyOlItemEndPrototype{}%
\def\markdownRendererOlEndPrototype{}%
\def\markdownRendererOlEndTightPrototype{}%
\def\markdownRendererFancyOlEndPrototype{\markdownRendererOlEnd}%
-\def\markdownRendererFancyOlEndTightPrototype{\markdownRendererOlEndTight}%
+\def\markdownRendererFancyOlEndTightPrototype{%
+ \markdownRendererOlEndTight}%
\def\markdownRendererDlBeginPrototype{}%
\def\markdownRendererDlBeginTightPrototype{}%
\def\markdownRendererDlItemPrototype#1{#1}%
@@ -163,8 +167,30 @@
\def\markdownRendererSectionBeginPrototype{}%
\def\markdownRendererSectionEndPrototype{}%
\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_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_inline:nn
{
\str_case:nn
{ #2 }
@@ -174,7 +200,7 @@
}
}
\cs_new:Nn
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_block:nn
{
\str_case:nn
{ #2 }
@@ -186,14 +212,14 @@
\cs_gset:Npn
\markdownRendererInputRawInlinePrototype#1#2
{
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_inline:nn
{ #1 }
{ #2 }
}
\cs_gset:Npn
\markdownRendererInputRawBlockPrototype#1#2
{
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_block:nn
{ #1 }
{ #2 }
}
@@ -310,7 +336,8 @@
{ #1 }
{ #2 }
}
-\def\markdownRendererJekyllDataStringPrototype#1#2{
+\def\markdownRendererJekyllDataProgrammaticStringPrototype#1#2{}
+\def\markdownRendererJekyllDataTypographicStringPrototype#1#2{
\markdown_jekyll_data_set_keyvals:nn
{ #1 }
{ #2 }
diff --git a/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex b/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex
index 90d34446f00..dd00c00f7f4 100644
--- a/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex
+++ b/Master/texmf-dist/tex/generic/markdown/markdownthemewitiko_tilde.tex
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `themes-witiko-tilde')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný
+%% 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
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-coil/pst-coil.tex b/Master/texmf-dist/tex/generic/pst-coil/pst-coil.tex
index cd15fa05373..0aff59732c5 100644
--- a/Master/texmf-dist/tex/generic/pst-coil/pst-coil.tex
+++ b/Master/texmf-dist/tex/generic/pst-coil/pst-coil.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-coil.tex 578 2011-09-18 17:18:46Z herbert $
+%% $Id: pst-coil.tex 930 2024-08-13 18:19:44Z herbert $
%% BEGIN pst-coil.tex
%%
%% Coils and zigzags with PSTricks
@@ -7,7 +7,7 @@
%%
%%
%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu.
-%% 2006-2015 Herbert Voss, hvoss@tug.org
+%% 2006-2024 Herbert Voss, hvoss@tug.org
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN
@@ -21,8 +21,8 @@
\ifx\PSTnodeLoaded\endinput \else\input pst-node.tex\fi
\ifx\PSTXKeyLoaded\endinput \else\input pst-xkey \fi
%
-\def\fileversion{1.07}
-\def\filedate{2015/05/13}
+\def\fileversion{1.08}
+\def\filedate{2024/08/13}
%
\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11
@@ -48,7 +48,15 @@
\let\psk@coilarmB\psk@coilarmA}
\define@key[psset]{pst-coil}{coilaspect}[45]{\pst@getangle{#1}\psk@coilaspect}
\define@key[psset]{pst-coil}{coilinc}[10]{\pst@getangle{#1}\psk@coilinc}
-%
+%%%%%% alternative macro
+\define@key[psset]{pst-coil}{N}[10]{\def\psk@NoOfSpirals{#1 }}
+\define@key[psset]{pst-coil}{R}[1]{\def\psk@InitialWidth{#1 }}% in cm
+\define@key[psset]{pst-coil}{l0}[10]{\def\psk@InitialLength{#1 }}
+\define@key[psset]{pst-coil}{alpha}[15]{\def\psk@coil@Alpha{#1 }}
+\define@key[psset]{pst-coil}{arm}[0]{\def\psk@coil@arm{#1 }}
+\define@key[psset]{pst-coil}{nS}[25]{\def\psk@coil@NoOfPointsPerCoil{#1 }}
+\psset[pst-coil]{N=10,R=0.5,alpha=15,arm=0,l0=5,nS=25}
+
\psset[pst-coil]{coilaspect=45,coilarm=.5cm,coilheight=1,coilwidth=1cm,coilinc=10}
%
\def\pscoil{\def\pst@par{}\pst@object{pscoil}}
@@ -198,7 +206,7 @@
{ \psk@function }
\tx@Sin
}%
- \showpointsfalse%
+ \showpointsfalse
\end@OpenObj}
%
\def\ncsin{\pst@object{ncsin}}
@@ -220,6 +228,49 @@
\def\pcsin{\def\pst@par{}\pst@object{pcsin}}
\def\pcsin@i{\pc@object\ncsin@ii}
%
+\def\psAltCoil{\def\pst@par{}\pst@object{psAltCoil}}
+\def\psAltCoil@i{\pst@getarrows\psAltCoil@ii}
+\def\psAltCoil@ii(#1){\@ifnextchar({\psAltCoil@iii{1}(#1)}{\psAltCoil@iii{\z@}(0,0)(#1)}}
+\def\psAltCoil@iii#1(#2)(#3){%
+ \begin@OpenObj
+ \pst@getcoor{#2}\pst@tempa
+ \pst@getcoor{#3}\pst@tempb
+ \addto@pscode{%
+ \pst@tempa \pst@tempb
+ /y1 ED /x1 ED /y0 ED /x0 ED
+ x0 y0 translate
+ y1 y0 sub x1 x0 sub 2 copy Pyth
+ /Longueur ED
+ Atan rotate
+ /NoOfSpirals \psk@NoOfSpirals def % nombre de spires
+ /Alpha \psk@coil@Alpha def
+ /R_0 \psk@InitialWidth \pst@number\psunit mul def
+ /arm \psk@coil@arm \pst@number\psunit mul def
+ /l_0 \psk@InitialLength \pst@number\psunit mul def
+ /nS \psk@coil@NoOfPointsPerCoil def
+ /Pas_0 l_0 NoOfSpirals div def
+ /Pas Longueur 2 arm mul sub NoOfSpirals div def
+ % longueur de l'hélice sur un tour
+ % = sqrt(4*pi^2*R^2+p^2)
+ /Longueur_Helice_pas 39.47842 R_0 dup mul mul Pas_0 dup mul add sqrt def
+ % R=1/(2*pi)*sqrt(L^2-p^2)
+ /Radius 0.1591549 Longueur_Helice_pas dup mul Pas dup mul sub sqrt mul def
+ /xH {Radius 360 t mul cos mul Radius sub} def
+ /yH {Radius 360 t mul sin mul} def
+ /zH {Pas t mul arm add} def
+ /Inc 1 NoOfSpirals nS mul div def % nS(50) points par spires
+ 1 setlinejoin
+ 1 0 0 0 ArrowA arm 0 lineto
+ 0 Inc NoOfSpirals {
+ /t ED
+ zH xH Alpha tan mul sub
+ yH
+ lineto
+ } for
+ Longueur 0
+ ArrowB lineto
+ }%
+ \end@OpenObj}
%
\catcode`\@=\TheAtCode\relax
\endinput
diff --git a/Master/texmf-dist/tex/generic/pst-diffraction/pst-diffraction.tex b/Master/texmf-dist/tex/generic/pst-diffraction/pst-diffraction.tex
index 1c653b37709..2ff137b0a8c 100644
--- a/Master/texmf-dist/tex/generic/pst-diffraction/pst-diffraction.tex
+++ b/Master/texmf-dist/tex/generic/pst-diffraction/pst-diffraction.tex
@@ -5,8 +5,8 @@
%%
%% Package `pst-diffraction.tex'
%%
-%% Manuel Luque <ml@pstricks.de>
-%% Herbert Voss <hv@pstricks.de>
+%% Manuel Luque <ml@texnik.de>
+%% Herbert Voss <hvoss@tug.org>
%%
%% with contributions of Julien Cubizolles
%%
@@ -21,12 +21,12 @@
\csname PSTDiffractionLoaded\endcsname
\let\PSTDiffractionLoaded\endinput
% Require PSTricks
-\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
+\ifx\PSTricksLoaded\endinput\else \input pstricks.tex\fi
\ifx\PSTThreeDplotLoaded\endinput\else\input pst-3dplot.tex\fi
-\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
+\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey.tex \fi
%
-\def\fileversion{2.03}%
-\def\filedate{2008/09/03}%
+\def\fileversion{2.06a}
+\def\filedate{2024/07/15}
\message{`PST-diffraction v\fileversion, \filedate\space (ML,hv)}%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
\pst@addfams{pst-diff}
@@ -40,7 +40,7 @@
\define@key[psset]{pst-diff}{s}{\def\psk@Diffraction@Slit@s{#1 }} % distance entre les fentes
\define@key[psset]{pst-diff}{lambda}{\pst@checknum{#1}\psk@Diffraction@Slit@Lambda }% en nm
\define@key[psset]{pst-diff}{f}{\pst@checknum{#1}\psk@Diffraction@Slit@F }% focus en m
-\define@key[psset]{pst-diff}{gamma}{\pst@checknum{#1}\psk@Diffraction@gamma@G }
+%\define@key[psset]{pst-diff}{gamma}{\pst@checknum{#1}\psk@Diffraction@gamma@G }
\define@key[psset]{pst-diff}{pixel}{\pst@checknum{#1}\psk@Diffraction@Slit@pixel }
\define@key[psset]{pst-diff}{colorMode}{\pst@getint{#1}\psk@Diffraction@colorMode }
% 0 black and white inverse
@@ -65,7 +65,8 @@
\psset[pst-diff]{a=0.2e-3,f=5,k=1,r=1e-3,
d=6e-3,s=12e-3,h=0.5e-3,
lambda=650,pixel=0.5,
- contrast=38,gamma=0.8,twoHole=false,twoSlit=false,colorMode=3, scale=1,
+ contrast=38,%gamma=0.8,
+ twoHole=false,twoSlit=false,colorMode=3, scale=1,
IIID=false, showFunc=false}
%
% load the pstricks-add.pro only, if not already done
@@ -82,7 +83,7 @@
/focus \psk@Diffraction@Slit@F def
/widthSlit \psk@Diffraction@Slit@A def
/heightSlit \psk@Diffraction@Slit@k widthSlit mul def
- /Gamma \psk@Diffraction@gamma@G def
+ %/Gamma \psk@Diffraction@gamma@G def
/pixel \psk@Diffraction@Slit@pixel def
/SlitSeparation \psk@Diffraction@Slit@s def
\psk@Diffraction@Slit@Lambda tx@addDict begin wavelengthToRGB Red Green Blue end
@@ -94,7 +95,7 @@
/bornexpt 1 widthSlit div focus mul ondeLongueur mul 2845 mul def
/borneypt 1 heightSlit div focus mul ondeLongueur mul 2845 mul def
\ifPst@Diffraction@IIID
- \psk@ThreeDplot@zMax dup \tx@ScreenCoor pop /zScale ED
+ \psk@ThreeDplot@zMax\space dup \tx@ScreenCoor pop /zScale ED
tx@3DPlotDict begin \IIIDplot@variables end
\fi
% Les calculs commencent...
@@ -162,7 +163,7 @@
\addto@pscode{%
% les dimensions sont en mtres
/focus \psk@Diffraction@Slit@F def
- /Gamma \psk@Diffraction@gamma@G def
+ %/Gamma \psk@Diffraction@gamma@G def
/pixel \psk@Diffraction@Slit@pixel def
/contrast 1e\psk@Diffraction@Slit@contrast def
/r \psk@Diffraction@Circular@r def
@@ -170,7 +171,7 @@
\psk@Diffraction@Slit@Lambda tx@addDict begin wavelengthToRGB Red Green Blue end
/Blue ED /Green ED /Red ED
\ifPst@Diffraction@IIID
- \psk@ThreeDplot@zMax dup \tx@ScreenCoor pop /zScale ED
+ \psk@ThreeDplot@zMax\space dup \tx@ScreenCoor pop /zScale ED
tx@3DPlotDict begin \IIIDplot@variables end
\fi
% 0 0 translate
@@ -253,7 +254,8 @@
/y { yPts 2845 div } bind def
/R { x dup mul y dup mul add sqrt } bind def % R en m
/m Coeff R mul def
- 1 1e38 m J1Card Facteur x mul cos dup mul mul neg exp sub
+ % 1 1e38 m J1Card Facteur x mul cos dup mul mul neg exp sub
+ 1 contrast m J1Card Facteur x mul cos dup mul mul neg exp sub % fix by Keno Wehr
dup /intensity ED
dup dup
Red mul 3 -1 roll
@@ -283,7 +285,7 @@
\ifPst@Diffraction@IIID \else
newpath
R_limite neg %1.5 mul
- cm dup moveto
+ cm dup moveto
R_limite 2 mul cm 0 rlineto
0 R_limite 2 mul cm rlineto
R_limite neg 2 mul cm 0 rlineto
@@ -294,7 +296,8 @@
R_limite -0.001 0 {
/Radius exch def
/m Coeff Radius 0.01 mul mul def
- 1 1e38 m J1Card neg exp sub
+% 1 1e38 m J1Card neg exp sub
+ 1 contrast m J1Card neg exp sub % fix by keno wehr
dup /intensity ED
dup dup
Red mul 3 -1 roll % R
@@ -396,7 +399,7 @@
% les dimensions sont en mtres
/f \psk@Diffraction@Slit@F def
/h \psk@Diffraction@Triangle@h def
- /Gamma \psk@Diffraction@gamma@G def
+ %/Gamma \psk@Diffraction@gamma@G def
/L { \psk@Diffraction@Slit@Lambda 1e-9 mul} bind def % longueur d'onde en m
/pixel \psk@Diffraction@Slit@pixel def
/k { TwoPi f L mul div } bind def
@@ -408,7 +411,7 @@
/bornexpt 1 h div f mul L mul 2845 mul def
/borneypt 1 h div f mul L mul 2845 mul def
\ifPst@Diffraction@IIID
- \psk@ThreeDplot@zMax dup \tx@ScreenCoor pop /zScale ED
+ \psk@ThreeDplot@zMax\space dup \tx@ScreenCoor pop /zScale ED
tx@3DPlotDict begin \IIIDplot@variables end
\fi
/P {
diff --git a/Master/texmf-dist/tex/generic/pst-node/pst-node.tex b/Master/texmf-dist/tex/generic/pst-node/pst-node.tex
index ed3ef60a4b5..a653d76eeac 100644
--- a/Master/texmf-dist/tex/generic/pst-node/pst-node.tex
+++ b/Master/texmf-dist/tex/generic/pst-node/pst-node.tex
@@ -1,4 +1,4 @@
-% $Id: pst-node.tex 438 2022-01-31 17:45:26Z herbert $
+% $Id: pst-node.tex 918 2024-07-10 17:41:55Z herbert $
%%
%% BEGIN pst-node.tex
%%
@@ -18,8 +18,8 @@
\ifx\PSTricksLoaded\endinput\else\input pstricks.tex \fi\relax
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
%
-\def\fileversion{1.43}
-\def\filedate{2022/01/31}
+\def\fileversion{1.45}
+\def\filedate{2024/07/10}
\message{ v\fileversion, \filedate}
%
\edef\TheAtCode{\the\catcode`\@}
@@ -1386,8 +1386,8 @@ tx@NodeDict \pst@tempg known
/dy YB YA sub def
/angle dy dx Atan def
/linelength \pst@number\pst@dimb \pst@number\psunit div def
- XA linelength angle cos mul add YA linelength angle sin mul add ){#4}%
-}
+ XA linelength angle cos mul add YA linelength angle sin mul add ){#4}}
+%
\def\psRelNode{\pst@object{psRelNode}}
\def\psRelNode@i(#1)(#2)#3#4{{% A - B - factor - node name
\use@par
@@ -1402,10 +1402,10 @@ tx@NodeDict \pst@tempg known
/AlphaStrich \psk@angleA\space def
/unit \pst@number\psyunit \pst@number\psxunit div def % yunit/xunit
%
- /dx XB XA sub def
- /dy YB YA sub \ifPst@trueAngle\space unit mul \fi\space def
- /laenge dy dup mul dx dup mul add sqrt #3 mul def
- /Alpha dy dx atan def
+ /dx__ XB XA sub def
+ /dy__ YB YA sub \ifPst@trueAngle\space unit mul \fi\space def
+ /laenge dy__ dup mul dx__ dup mul add sqrt #3 mul def
+ /Alpha dy__ dx__ atan def
/beta Alpha AlphaStrich add def
laenge beta cos mul XA add
laenge beta sin mul \ifPst@trueAngle\space unit div \fi\space YA add ){#4}%
@@ -1537,8 +1537,7 @@ tx@NodeDict \pst@tempg known
\def\trim@ #1{\trim@@ @#1 @ #1 @ @@}%
\def\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}%
\def\unbrace#1{#1}%
-\unbrace{\def\trim@@@ #1 } #2@#3{\expandafter\def%
- \expandafter #3\expandafter {#1}}%
+\unbrace{\def\trim@@@ #1 } #2@#3{\expandafter\def\expandafter #3\expandafter {#1}}%
%
\def\hasparen#1(#2\@nil{%check if expression contains a (--call with \hasparen#1(\@nil
\ifx\relax#2\relax \@parenfalse \else \@parentrue\fi}%
@@ -1577,23 +1576,28 @@ tx@NodeDict \pst@tempg known
\expandafter\testAlg\my@tempA|\@nil\my@next {#1}{#2}{#3}}
%
\def\psparnode#1#2#3{%
-% #1=t value, #2=x(t) y(t) in PS form,#3=node name,
- \pnode(!/t #1 def #2){#3}%
- \pnode(!/t #1 .001 sub def #2
- /t #1 .001 add def
- #2 3 -1 roll sub 3 1 roll sub neg
- 2 copy Pyth dup 3 1 roll div 3 1 roll div ){#3tang}}%unit tangent vector at t
+ % #1=t value, #2=x(t) y(t) in PS form, #3=node name,
+ % also returns unit tangent vector at t with node #3tang
+ \pnode(! /t #1 def #2){#3}%
+ \pnode(! /t #1 dup abs 1 lt {0.001 sub} {dup 0 gt {0.999} {1.001} ifelse mul} ifelse def
+ #2
+ /t #1 dup abs 1 lt {0.001 add} {dup 0 lt {0.999} {1.001} ifelse mul} ifelse def
+ #2
+ 3 -1 roll sub 3 1 roll exch sub 2 copy exch dup mul exch dup mul add sqrt
+ dup 3 1 roll div 3 1 roll div){#3tang}% unit tangent vector at t
+}%
%
\def\algparnode#1#2#3{%
-% #1=t value, #2=x(t) | y(t) in alg form,#3=node name,
-%\pstVerb{tx@Dict begin /t #1 def /Func (#2) AlgParser cvx def end}
-%\pnode(!Func){#3}}%
- \pstVerb{tx@Dict begin /Func (#2) AlgParser cvx def end }
- \pnode(!/t #1 def Func){#3}
- \pnode(!/t #1 .001 sub def Func
- /t #1 .001 add def
- Func 3 -1 roll sub 3 1 roll sub neg
- 2 copy Pyth dup 3 1 roll div 3 1 roll div ){#3tang}%unit tangent vector at t
+% #1=t value, #2=x(t) | y(t) in alg form, #3=node name,
+% also returns unit tangent vector at t with node #3tang
+ \pstVerb{tx@Dict begin /Func (#2) AlgParser cvx def end }%
+ \pnode(! /t #1 def Func){#3}%
+ \pnode(! /t #1 dup abs 1 lt {0.001 sub} {dup 0 gt {0.999} {1.001} ifelse mul} ifelse def
+ Func
+ /t #1 dup abs 1 lt {0.001 add}{dup 0 lt {0.999} {1.001} ifelse mul } ifelse def
+ Func
+ 3 -1 roll sub 3 1 roll exch sub 2 copy exch dup mul exch dup mul add sqrt
+ dup 3 1 roll div 3 1 roll div){#3tang}% unit tangent vector at t
}%
%
\def\nodex#1{%
@@ -1634,8 +1638,7 @@ tx@NodeDict \pst@tempg known
\nodexn{#3}{@TMP@a}%
\AplusB(#1)(@TMP@a){@TMP@B}%
\psline(@TMP@A)(@TMP@B)%
-}%
-\ignorespaces}%
+}\ignorespaces}%
%
\def\curvepnodes{\pst@object{curvepnodes}}
\def\curvepnodes@i#1#2#3#4{{%optional [plotpoints=xx]
@@ -1685,7 +1688,7 @@ tx@NodeDict \pst@tempg known
\else
\multido{\i=0+1}{\pst@cntc}{\pnode(!/x \pst@number\pst@dima\space def x #3){#4\i}%
\advance\pst@dima \pst@dimb}%
-\fi%
+\fi
\expandafter\xdef \csname \PST@root nodecount\endcsname {\the\pst@cnta}%
\ifnum\Pst@Debug>0 \typeout{Created nodes #40 .. #4\the\pst@cnta}\fi%
}\ignorespaces}%
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 2f87e9895e8..66b00657b99 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.19c}
-\def\filedate{2024/02/02}
+\def\fileversion{3.20}
+\def\filedate{2024/07/09}
\pst@addfams{pstricks}
%
%\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{}
@@ -2609,13 +2609,13 @@
\AltClipMode
\fi
-\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
+\def\psclipbox{\@ifnextchar[{\psclipbox@}{\psclipbox@[\z@]}}
% DG modification begin - Apr. 3, 1997
% From paulus@immd5.informatik.uni-erlangen.de (Dietrich Paulus)
%\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}}
-\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}}
+\def\psclipbox@[#1]{\pst@makebox{\psclipbox@@{#1}}}
% DG modification end
-\def\clipbox@@#1{%
+\def\psclipbox@@#1{%
\pssetlength\pst@dimg{#1}%
\leavevmode\hbox{%
\begin@psclip%
@@ -4119,10 +4119,19 @@ pop
\def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}}
\def\pst@@picture[#1]{\@ifnextchar({\pst@@picture@i[#1]}{\pst@@picture@@i[#1]}}%
\def\pst@@picture@@i[#1]{%
- \gdef\pscoor{(10,10)}%
+ \def\pic@coor{(0,0)(0,0)}%
+% \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}{\input{\jobname-\the\numexpr\ps@imagectr+1.psaux}}{}%
+ \IfFileExists{\jobname-\the\numexpr\ps@imagectr+1.psaux}
+ {\input{\jobname-\the\numexpr\ps@imagectr+1.psaux}%
+ \xdef\pic@coor{(0,0)\pscoor}%
+ \typeout{----->>\pic@coor}%
+ \typeout{----->>\pscoor}%
+ }
+ {%\gdef\pscoor{(10,10)}
+ %\def\pic@coor{(0,0)(0,0)(10,10)}
+ }%
% \typeout{>>>\pscoor}%
\fi
\edef\@temp{[\noexpand#1]\pscoor}%
@@ -4168,7 +4177,7 @@ pop
\ifPst@pgffunctions\pstVerb{ pgffunctions }\fi% hv 2013-04-17
}
-\def\pic@coor{(0,0)(0,0)(10,10)}
+%\def\pic@coor{(0,0)(0,0)(10,10)}
\def\endpspicture{%
\ifPst@calcframe
\ifPSTlualatex
@@ -4236,7 +4245,7 @@ pop
\advance\pst@dimd\pst@dimb
\lower\pst@dimd\box\pst@hbox
\kern\pst@dimc}%
- \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
+ \if@star\setbox\pst@hbox=\hbox{\psclipbox@@\z@}\fi
\leavevmode
\ifPst@draft
\expandafter\ifx\csname @latexerr\endcsname\relax
diff --git a/Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht b/Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht
index 71602474401..fca71f54440 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/amsfonts.4ht
@@ -1,37 +1,30 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% amsfonts.4ht 2009-05-21-09:32 %
-% Copyright (C) 2001--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}
+% 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
+% 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}
\NewConfigure{mathbb}{2}
-\def\:temp#1{{\a:mathbb \o:@mathbb:{#1}\b:mathbb}}
-\HLet\@mathbb\:temp
+\def\:temp#1{{\a:mathbb \o:mathbb:{#1}\b:mathbb}}
+\HLet\mathbb\:temp
\NewConfigure{mathfrak}{2}
-\def\:temp#1{{\a:mathfrak \o:@mathfrak:{#1}\b:mathfrak}}
-\HLet\@mathfrak\:temp
+\def\:temp#1{{\a:mathfrak \o:mathfrak:{#1}\b:mathfrak}}
+\HLet\mathfrak\:temp
\Hinput{amsfonts}
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht b/Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht
index 4367f0d7c74..8c9d45b9eed 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/amsmath.4ht
@@ -1,4 +1,4 @@
-% amsmath.4ht (2024-05-07-13:28), generated from tex4ht-4ht.tex
+% amsmath.4ht (2024-09-24-10:22), 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-05-07-13:28}
+\immediate\write-1{version 2024-09-24-10:22}
\HRestore\cases
\HRestore\matrix
@@ -508,7 +508,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 +517,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/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/enumitem-hooks.4ht b/Master/texmf-dist/tex/generic/tex4ht/enumitem-hooks.4ht
new file mode 100644
index 00000000000..e8f12ba46cb
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/enumitem-hooks.4ht
@@ -0,0 +1,28 @@
+% enumitem-hooks.4ht (2024-09-09-13:35), 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-09-13:35}
+
+\:AtEndOfPackage{%
+\def\enumitem:newlist{}
+\def\:tempa#1#2#3#4{\concat:config\enumitem:newlist{\Configure{enumitemenv}{#2}}\o:enit@newlist{#1}{#2}{#3}{#4}}
+\let\o:enit@newlist\enit@newlist
+\let\enit@newlist\:tempa
+
+}
+
diff --git a/Master/texmf-dist/tex/generic/tex4ht/enumitem.4ht b/Master/texmf-dist/tex/generic/tex4ht/enumitem.4ht
index acabf869b27..6bb2290d697 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/enumitem.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/enumitem.4ht
@@ -1,23 +1,23 @@
-% enumitem.4ht (2023-12-17-13:16), generated from tex4ht-4ht.tex
+% enumitem.4ht (2024-09-09-13:35), generated from tex4ht-4ht.tex
% Copyright 2009-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-12-17-13:16}
+\immediate\write-1{version 2024-09-09-13:35}
\AddToHook{env/enumerate/end}{\ifx\enit@after\@empty\else%
\let\enit:after\enit@after
@@ -27,6 +27,15 @@
\fi}
\def\enit@postlabel{}
+\NewConfigure{enumitemenv}[1]{%
+\def\a:enumitemenv{#1}%
+\enumitem:newlistconfig
+}
+\NewConfigure{enumitemnewlist}[1]{
+ \def\enumitem:newlistconfig{#1}
+ \enumitem:newlist
+}
+
\Hinput{enumitem}
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/esvect.4ht b/Master/texmf-dist/tex/generic/tex4ht/esvect.4ht
new file mode 100644
index 00000000000..8fc583da580
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/esvect.4ht
@@ -0,0 +1,25 @@
+% esvect.4ht (2024-08-02-14:24), 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-08-02-14:24}
+
+
+
+\Hinput{esvect}
+\endinput
+
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/fontawesome5.4ht b/Master/texmf-dist/tex/generic/tex4ht/fontawesome5.4ht
index 9bb9f9438bf..7f0f40d4b48 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/fontawesome5.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/fontawesome5.4ht
@@ -1,5 +1,5 @@
-% fontawesome5.4ht (2021-05-06-14:39), generated from tex4ht-4ht.tex
-% Copyright 2021 TeX Users Group
+% fontawesome5.4ht (2024-07-03-13:28), generated from tex4ht-4ht.tex
+% Copyright 2021-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -16,18 +16,19 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2021-05-06-14:39}
+\immediate\write-1{version 2024-07-03-13:28}
\NewConfigure{fontawesome}{2}
\ExplSyntaxOn
\cs_new_protected:Nn\temp:nn{%
+\def\:fontawesomeicon{#2}% to be used in the alt text
\a:fontawesome%
\o:fontawesome_use_icon:nn:{#1}{#2}
\b:fontawesome}
\HLet\fontawesome_use_icon:nn\temp:nn
\ExplSyntaxOff
-\Configure{fontawesome}{\Picture+{}}{\EndPicture}
+\Configure{fontawesome}{\Picture+[icon: \:fontawesomeicon]{}}{\EndPicture}
\Hinput{fontawesome5}
\endinput
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/html-mml.4ht b/Master/texmf-dist/tex/generic/tex4ht/html-mml.4ht
index dfe3f02138f..c33bacaa3ff 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/html-mml.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/html-mml.4ht
@@ -1,23 +1,23 @@
-% html-mml.4ht (2022-10-31-13:02), generated from tex4ht-mathml.tex
-% Copyright 2009-2022 TeX Users Group
+% html-mml.4ht (2024-08-11-08:31), generated from tex4ht-mathml.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-31-13:02}
+\immediate\write-1{version 2024-08-11-08:31}
\exit:ifnot{amsmath,%
array,%
@@ -291,6 +291,139 @@ tex4ht}
\Configure{MathjaxSource}{https://cdn.jsdelivr.net/npm/mathjax@3/es5/mml-chtml.js}
\Configure{@HEAD}{\HCode{ <script type="text/javascript" id="MathJax-script" async="async" src="\a:MathjaxSource"></script> \Hnewline}}
\fi
+\:CheckOption{texsource}\if:Option
+
+\newtoks\mmleqtoks
+\ExplSyntaxOn
+\cs_new_protected:Npn \mmlalteqtoks #1
+{
+ % save tokens, but preserve spaces
+ % https://tex.stackexchange.com/a/44444/2891
+ \tl_set:Nn \l_tmpa_tl {#1}
+ \regex_replace_all:nnN { . } { \c{string} \0 } \l_tmpa_tl
+ \tl_set:Nx \l_tmpa_tl { \l_tmpa_tl }
+ % % replace < > and & with xml entities
+ \regex_replace_all:nnN { \x{26} } { &amp; } \l_tmpa_tl
+ \regex_replace_all:nnN { \x{3C} } { &lt; } \l_tmpa_tl
+ \regex_replace_all:nnN { \x{3E} } { &gt; } \l_tmpa_tl
+ % \regex_replace_all:nnN { \n } {\HCode{ \Hnewline }} \l_tmpa_tl
+ % replace \par command with blank lines
+ \regex_replace_all:nnN { \x{5C}par\b } {\x{A}\x{A}} \l_tmpa_tl
+ \tl_set:Nx \mmleqtoks{ \l_tmpa_tl }
+
+ %\HCode{\l_tmpb_tl}
+}
+\ExplSyntaxOff
+
+
+\def\AltMath#1${\mmlalteqtoks{#1}%
+ #1\HCode{</\a:mathml mrow><\a:mathml annotation encoding="application/x-tex">\mmleqtoks</\a:mathml annotation>}$}
+\Configure{$}{\Configure{@math}{display="inline"}\DviMath\HCode{<\a:mathml semantics><\a:mathml mrow>}}{\HCode{</\a:mathml semantics>}\EndDviMath}{\expandafter\AltMath}
+
+\def\AltMathParen#1\){\mmlalteqtoks{#1}%
+ #1\HCode{</\a:mathml mrow><a\a:mathml nnotation encoding="application/x-tex">\mmleqtoks</\a:mathml annotation>}$}
+
+\def\AltMathParen#1\){\mmlalteqtoks{#1}#1\HCode{</\a:mathml mrow><\a:mathml annotation encoding="application/x-tex">\mmleqtoks</\a:mathml annotation>}\)}
+%\Configure{()}{\Configure{@math}{display="inline"}\DviMath\HCode{<\a:mathml semantics><\a:mathml mrow>}\AltMathParen$}{\EndDviMath\HCode{</\a:mathml semantics>}}
+\Configure{()}
+ {\Configure{@math}{%\a:mathml
+ display="inline"
+}\csname a:mathml()\endcsname
+\DviMath\HCode{<\a:mathml semantics><\a:mathml mrow>}$\expandafter\AltMathParen}
+{$\HCode{</\a:mathml semantics>}\EndDviMath\csname b:mathml()\endcsname}
+
+
+\long\def\AltDisplay#1\]{\mmlalteqtoks{#1}#1\HCode{</\a:mathml mrow><\a:mathml annotation encoding="application/x-tex">\mmleqtoks</\a:mathml annotation></\a:mathml semantics>}\]}
+\Configure{[]}{\Configure{@math}{display="block"}\DviMath$$\DisplayMathtrue\HCode{<\a:mathml semantics><\a:mathml mrow>}\AltDisplay}{$$\EndDviMath}
+
+
+% \long\def\MMLAltlDisplayDollars#1$${\mmlalteqtoks{\[#1\]}#1\HCode{</\a:mathml mrow><\a:mathml annotation encoding="application/x-tex">\mmleqtoks</\a:mathml annotation>}$$}
+
+% configuarartion of display math doesn't work yet. need to investigate it.
+% \Configure{$$}
+% {\Configure{@math}{%\a:mathml
+% display="block"
+% }\IgnorePar
+% \ifvmode\else \HCode{<!--tex4ht:inline-->}\fi
+% \EndP\DviMath\HCode{<\a:mathml semantics><\a:mathml mrow>}}
+% {\HCode{</\a:mathml semantics>}\EndDviMath\ShowPar\par{\csname HCondtrue\endcsname\noindent}}
+% {\DisplayMathtrue\expandafter\MMLAltlDisplayDollars}
+
+
+% \renewcommand\eqannotate[1]{\mmlalteqtoks{#1}\HCode{<\a:mathml semantics><\a:mathml mrow>}#1\HCode{</\a:mathml mrow><\a:mathml annotation encoding="application/x-tex">\mmleqtoks</\a:mathml annotation></\a:mathml semantics>}}
+
+
+% environment support
+\newcommand\MMLVerbMathToks[2]{%
+ \mmlalteqtoks{\begin{#2}
+ #1
+ \end{#2}}%
+ \begingroup%
+ \ifvmode\IgnorePar\fi\EndP\Configure{@math}{display="block"}\DviMath\DisplayMathtrue\HCode{<\a:mathml semantics><\a:mathml mrow>}
+ \Configure{$$}{}{}{}
+ \begin{old#2}
+ #1
+ \end{old#2}
+ \HCode{</\a:mathml mrow><\a:mathml annotation encoding="application/x-tex">}
+ \HCode{\mmleqtoks}
+ \HCode{</\a:mathml annotation></\a:mathml semantics>}
+ \EndDviMath
+ \endgroup
+}
+
+% we must handle equations separatelly.
+% it is a bit messy
+\newcommand\MMLVerbMathToksEquation[2]{%
+ \mmlalteqtoks{\begin{#2}
+ #1
+ \end{#2}}%
+ \begingroup%
+ \def\@tempa{#2}%
+ \def\@equationname{equation}%
+ \def\mlabeledtr{mtr}
+ \ifx\@equationname\@tempa%
+ \def\mlabeledtr{mlabeledtr} % this element can be used to print the equation number, but it is supported only by MathJax
+ \fi
+ \ifvmode\IgnorePar\fi\EndP\Configure{@math}{display="block"}\DviMath\DisplayMathtrue\HCode{<\a:mathml semantics><\a:mathml mrow><\a:mathml mtable><\a:mathml \mlabeledtr><\a:mathml mtd>}%
+ \ifx\@equationname\@tempa%
+ \incr@eqnum%
+ \print@eqnum%
+ \HCode{</\a:mathml mtd><\a:mathml mtd>}%
+ \fi
+ #1%
+ \HCode{</\a:mathml mtd></\a:mathml \mlabeledtr></\a:mathml mtable></\a:mathml mrow><\a:mathml annotation encoding="application/x-tex">}%
+ \HCode{\mmleqtoks}%
+ \HCode{</\a:mathml annotation></\a:mathml semantics>}%
+ \EndDviMath%
+ \endgroup%
+}
+
+\ExplSyntaxOn
+\newcommand\MMLVerbMath[1]{%
+ \cs_if_exist:cTF{#1}{
+ \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
+ \expandafter\let\csname endold#1\expandafter\endcsname\csname end#1\endcsname
+ \RenewDocumentEnvironment{#1}{+!b}{%
+ \NoFonts\expandafter\MMLVerbMathToks\expandafter{##1}{#1}\EndNoFonts%
+ }{}
+ }{}%
+}
+
+\newcommand\MMLVerbEquation[1]{%
+ \cs_if_exist:cTF{#1}{
+ \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
+ \expandafter\let\csname endold#1\expandafter\endcsname\csname end#1\endcsname
+ \RenewDocumentEnvironment{#1}{+!b}{%
+ \NoFonts\expandafter\MMLVerbMathToksEquation\expandafter{##1}{#1}\EndNoFonts%
+ }{}
+ }{}%
+}
+\ExplSyntaxOff
+
+% \MMLVerbEquation{equation}
+% \MMLVerbEquation{equation*}
+
+\fi
\Configure{multicolumn}
{\let\sv:VBorder\VBorder
\let\VBorder\empty
@@ -482,9 +615,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
-
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsmath}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -661,6 +791,43 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\ShowPar\IgnoreIndent\par}
\fi
+\:CheckOption{texsource}\if:Option
+\MMLVerbMath{subarray}
+\MMLVerbMath{smallmatrix}
+\MMLVerbMath{matrix}
+\MMLVerbMath{pmatrix}
+\MMLVerbMath{bmatrix}
+\MMLVerbMath{Bmatrix}
+\MMLVerbMath{vmatrix}
+\MMLVerbMath{Vmatrix}
+\MMLVerbMath{cases}
+\MMLVerbMath{subequations}
+\MMLVerbMath{aligned}
+\MMLVerbMath{alignedat}
+\MMLVerbMath{gathered}
+\MMLVerbMath{gather}
+\MMLVerbMath{gather*}
+\MMLVerbMath{alignat}
+\MMLVerbMath{alignat*}
+\MMLVerbMath{xalignat}
+\MMLVerbMath{xalignat*}
+\MMLVerbMath{xxalignat}
+\MMLVerbMath{align}
+\MMLVerbMath{align*}
+\MMLVerbMath{flalign}
+\MMLVerbMath{flalign*}
+\MMLVerbMath{split}
+\MMLVerbMath{multline}
+\MMLVerbMath{multline*}
+% equations fails with errors, even though it worked in a .cfg
+% I will need to investigate it more
+% \MMLVerbEquation{equation}
+% \MMLVerbEquation{equation*}
+\MMLVerbMath{math}
+\MMLVerbMath{displaymath}
+\MMLVerbMath{eqnarray}
+\MMLVerbMath{eqnarray*}
+\fi
\Configure{@begin}
{split}
{\let\tagform@=\:gobble }
@@ -680,6 +847,8 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{plain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -831,6 +1000,8 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{color}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -913,6 +1084,14 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
+
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{rlbabel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -960,6 +1139,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{frenchb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1299,5 +1479,40 @@ 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 447b565a0c6..92ac55e1483 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-06-21-14:18), generated from tex4ht-html4.tex
+% html4.4ht (2024-10-29-13:37), generated from tex4ht-html4.tex
% Copyright 2009-2024 TeX Users Group
% Copyright 1997-2009 Eitan M. Gurari
%
@@ -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-06-21-14:18}
+\immediate\write-1{version 2024-10-29-13:37}
\exit:ifnot{8859-6,%
CJK,%
@@ -117,6 +117,7 @@ foils,%
fontspec,%
framed,%
francais,%
+french,%
frenchb,%
g-brief,%
galician,%
@@ -152,6 +153,7 @@ longtable,%
ltugboat,%
ltugproc,%
ltxguide,%
+lua-ul,%
manju,%
manmac,%
marginnote,%
@@ -166,6 +168,7 @@ microtype,%
minitoc,%
minted,%
mls,%
+moderncv,%
moreverb,%
multicol,%
multind,%
@@ -1469,6 +1472,25 @@ switches of tex4ht.c)
{\end:itm \global\def\end:itm{\EndP\Tg</li>}\DeleteMark}
{\HCode{<li class="\getClass{li}itemize">}\afterGetClass{li}\par\ShowPar
}
+
+\:CheckOption{itemize+}\if:Option
+\ConfigureList{itemize}%
+ {\EndP\HCode{<ul \a:LRdir
+ class="\getClass{itemize}itemize\expandafter\the
+ \csname @itemdepth\endcsname">}%
+ \afterGetClass{itemize}%
+ \PushMacro\end:itm
+\global\let\end:itm=\empty}
+ {\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
+}
+\Css{.itemizeHead{float: left; margin-left: -1em; width: 1em;}}
+\Css{li.itemize{list-style: none;}}
+\fi
+
\NewConfigure{itemizeClass}{2}
\Configure{itemizeClass}{}{}
\NewConfigure{liClass}{2}
@@ -2988,7 +3010,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
@@ -3086,6 +3108,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
@@ -3095,10 +3118,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
@@ -3109,8 +3132,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>}
@@ -3121,7 +3144,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}%
@@ -11411,6 +11435,8 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{graphics}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -11607,7 +11633,6 @@ height="\expandafter\int:pt\the\Gin@req@height!*?: "
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{graphicx}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -11636,6 +11661,7 @@ height="\expandafter\int:pt\the\Gin@req@height!*?: "
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsart}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -16856,6 +16882,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{amsproc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19444,7 +19471,6 @@ s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsthm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19465,6 +19491,7 @@ s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsmath}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19481,7 +19508,6 @@ s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amstex1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19625,6 +19651,7 @@ s{015B}u{00FA}y{00FD}z{017A}j{FFFD}J{FFDD}\i{00ED}\j{FFFD}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{babel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19911,6 +19938,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ngerman}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -19932,7 +19960,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{plain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -20365,7 +20392,6 @@ Y{0178}\i{00EF}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{biblatex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -20557,7 +20583,6 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{glossary}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -20671,6 +20696,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{latin2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -21018,7 +21044,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
@@ -21116,6 +21142,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
@@ -21125,10 +21152,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
@@ -21139,8 +21166,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>}
@@ -21151,7 +21178,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}%
@@ -21246,6 +21274,7 @@ Y{0178}\i{00EF}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mwart}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -26210,7 +26239,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mwbk}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28707,7 +28735,6 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{csquotes}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28722,7 +28749,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{CJK}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28778,7 +28804,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
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{moreverb}
@@ -28818,7 +28856,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{fancyvrb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -28880,6 +28917,7 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amscd}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29015,6 +29053,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{xcolor}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29035,7 +29074,6 @@ Y{0178}\i{00EF}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{colortbl}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29066,6 +29104,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}}
@@ -29074,6 +29115,8 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{minitoc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29284,7 +29327,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{adjustbox}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29341,6 +29383,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{changepage}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29359,7 +29402,6 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{alltt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -29509,7 +29551,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{eplain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30237,7 +30278,6 @@ Y{0178}\i{00EF}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ntheorem}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30370,6 +30410,7 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{proof}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30428,7 +30469,6 @@ Y{0178}\i{00EF}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{verse}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30484,6 +30524,7 @@ Y{0178}\i{00EF}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{arabicore}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30503,6 +30544,8 @@ Y{0178}\i{00EF}%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{rlbabel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30590,7 +30633,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{abidir}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30617,6 +30659,7 @@ Y{0178}\i{00EF}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{koi8-r}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30627,7 +30670,6 @@ Y{0178}\i{00EF}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{frenchb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30662,6 +30704,7 @@ font-size:70\%;
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{powerdot}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30831,6 +30874,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{titlesec}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30929,6 +30973,7 @@ description">}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{threeparttable}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -30945,6 +30990,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{tabularray}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31037,6 +31083,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{multirow}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31113,7 +31160,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{subscript}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31147,6 +31193,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{subcaption}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31197,6 +31244,7 @@ description">}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{emulateapj}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31257,7 +31305,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{picins}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31367,7 +31414,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ot4enc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -31635,7 +31681,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{pd1enc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -32406,6 +32451,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{texinfo}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -32567,7 +32613,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{doc}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -32583,6 +32628,7 @@ description">}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{scrbook}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -33353,7 +33399,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{scrartcl}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -34161,6 +34206,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{jurabook}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -34218,7 +34264,6 @@ description">}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{elsart}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -34705,7 +34750,6 @@ description">}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{g-brief}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -34898,6 +34942,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ltxguide}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -34916,7 +34961,6 @@ description">}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsdtx}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -34966,6 +35010,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{lncse}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35043,7 +35088,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{bibtopic}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35058,7 +35102,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{harvard}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35093,6 +35136,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{scrjura}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35126,7 +35170,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{8859-6}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35161,6 +35204,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{manju}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35172,6 +35216,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{verbatim}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35201,6 +35246,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{piton}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35237,7 +35283,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{prosper}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35399,6 +35444,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{beamer}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35769,6 +35815,7 @@ description">}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{seminar}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35782,7 +35829,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{slides}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35883,6 +35929,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{foils}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -35989,7 +36036,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{xy}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36041,6 +36087,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{pstricks}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36090,7 +36137,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mfpic}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36119,6 +36165,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{pgf}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36139,8 +36186,6 @@ description">}%
-
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{overpic}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36154,6 +36199,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{dratex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36304,7 +36350,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{curve}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36350,6 +36395,48 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ConfigureHinput{moderncv}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \Configure{cvhead}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="cvhead">}}{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}}
+\Configure{cvphoto}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="cvphoto">}}{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}}
+
+\Configure{section}{\ifvmode\IgnorePar\fi\EndP\HCode{<h2>}}{\HCode{</h2>}}
+\Configure{subsection}{\ifvmode\IgnorePar\fi\EndP\HCode{<h3>}}{\HCode{</h3>}}
+\Configure{cvitem}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="cvitem"><span class="cvitemhead">}}{\HCode{</span><span class="cvitembody">}}{\HCode{</span></div>}}
+\Configure{cvdoubleitem}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="cvdoubleitem">}}{\HCode{</div>}}
+\Configure{cvlistitem}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="cvlistitem">}}{\HCode{</div>}}
+\Configure{cvlistdoubleitem}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="cvlistdoubleitem">}}{\HCode{</div>}}
+
+\Configure{cvskillhead}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="cvskillhead">}}{\HCode{</div>}}
+\Configure{cvskillentry}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="cvskillentry">}}{\HCode{</div>}}
+
+\Configure{cvskill}{\Picture*[skill level: \:cvskillamount]{}}{\EndPicture}
+
+\Css{.cvskillentry .tabular, .cvskillhead .tabular {margin:0pt;}}
+\Css{.cvskillentry .tabular td:nth-child(1), .cvskillhead .tabular td:nth-child(1){width: 8ch}}
+\Css{.cvskillentry .tabular td:nth-child(2), .cvskillhead .tabular td:nth-child(2){width: 12ch}}
+\Css{.cvskillentry .tabular td:nth-child(3), .cvskillhead .tabular td:nth-child(3){width: 6ch}}
+\Css{.cvskillentry .tabular td:nth-child(4), .cvskillhead .tabular td:nth-child(4){width: 54ch}}
+
+\Css{.cvitemhead{margin-right: 1em;}}
+
+\Css{
+@media (min-width:94ch) {
+.cvitemhead{
+ margin-left: -14ch;
+ width: 12ch;
+ float: left;
+ text-align: right;
+ }
+}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput\empty\empty\empty\empty\empty\empty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{vowel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36375,7 +36462,21 @@ description">}%
{\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt
class="enumerate-enumitem">}\bgroup \bf}
{\egroup\EndP\HCode{</dt><dd\Hnewline class="enumerate-enumitem">}}
+
\Css{dl.enumerate-enumitem{display:grid; grid-template-columns: 3ch 1fr; align-items: top; row-gap:1ch;}}
+\Configure{enumitemnewlist}{%
+\ConfigureList{\a:enumitemenv}%
+ {\EndP\HCode{<dl \a:LRdir class="enumerate-enumitem enumitem-\a:enumitemenv">}%
+ \PushMacro\end:itm
+\global\let\end:itm=\empty}
+ {\PopMacro\end:itm \global\let\end:itm \end:itm
+\EndP\HCode{</dd></dl>}\ShowPar}
+ {\end:itm \global\def\end:itm{\EndP\Tg</dd>}\HCode{<dt
+ class="enumerate-enumitem enumitem-\a:enumitemenv">}\bgroup \bf}
+ {\egroup\EndP\HCode{</dt><dd\Hnewline class="enumerate-enumitem">}}
+}
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36384,6 +36485,7 @@ description">}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{IEEEtran}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36445,6 +36547,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{linguex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36470,7 +36573,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cgloss4e}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36567,6 +36669,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{diagram}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36755,7 +36858,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{subeqnarray}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36792,6 +36894,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{siunitx}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36818,7 +36921,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{sistyle}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36860,6 +36962,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{microtype}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -36877,7 +36980,6 @@ description">}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{appendix}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37072,11 +37174,14 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{booktabs}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifdefined\hline:color\else
\def\hline:color{000}
+\fi
\Configure{toprule}
@@ -37124,7 +37229,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{gloss}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37238,7 +37342,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{tugboat}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37381,7 +37484,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
@@ -37416,9 +37519,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">}%
@@ -37500,6 +37604,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{rotating}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37512,7 +37617,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{boxedminipage}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37603,6 +37707,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{go}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37614,7 +37719,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{paralist}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37920,6 +38024,7 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{tasks}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -37934,7 +38039,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{alphanum}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38010,6 +38114,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{epigraph}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38047,7 +38152,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{floatflt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38075,6 +38179,8 @@ description">}%
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{acm-proc-article-sp}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38395,7 +38501,6 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{endnotes}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38410,6 +38515,7 @@ description">}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{web}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38436,7 +38542,6 @@ description">}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{exerquiz}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38535,6 +38640,7 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{nicefrac}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -38930,6 +39036,7 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mdwlist}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39016,7 +39123,6 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{syntax}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39081,6 +39187,21 @@ 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}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39174,7 +39295,6 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cp850}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39185,6 +39305,7 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cp852}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39215,7 +39336,6 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cp1252}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39226,6 +39346,7 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{cp437}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39256,7 +39377,6 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{norsk}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39269,6 +39389,7 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{polish}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39305,7 +39426,6 @@ emailing the fix to gurari@cse.ohio-state.edu. Thanks\Hnewline
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{romanian}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39504,6 +39624,7 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{russianb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39739,7 +39860,6 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{slovene}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -39940,6 +40060,7 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{spanish}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40008,7 +40129,6 @@ Y{1EF8}y{1EF9}\i{0129}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ukraineb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40021,6 +40141,7 @@ Y{1EF8}y{1EF9}\i{0129}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{usorbian}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40057,7 +40178,6 @@ Y{1EF8}y{1EF9}\i{0129}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{austrian}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40070,6 +40190,7 @@ Y{1EF8}y{1EF9}\i{0129}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{catalan}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40294,7 +40415,6 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{danish}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40307,6 +40427,7 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{dutch}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40343,7 +40464,6 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{estonian}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40356,6 +40476,7 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{finnish}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40392,7 +40513,6 @@ j{01F0}H{021E}h{021F}\i{01D0}\j{01F0}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{greek}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40527,6 +40647,7 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{exam}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40633,7 +40754,6 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{fontspec}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40653,6 +40773,7 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{framed}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40693,7 +40814,6 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{tcolorbox}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40737,6 +40857,7 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{parallel}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40768,7 +40889,6 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{chessboard}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40780,6 +40900,7 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{xskak}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40830,7 +40951,6 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{sectionbreak}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40903,6 +41023,7 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{chemfig}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -40918,5 +41039,6 @@ y{\ht:special{t4ht@+\string&{35}x00FD{59}}y}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
\endinput
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/jats.4ht b/Master/texmf-dist/tex/generic/tex4ht/jats.4ht
index 4e946779867..c6add3efca5 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/jats.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/jats.4ht
@@ -1,22 +1,22 @@
-% jats.4ht (2024-02-23-14:41), generated from tex4ht-jats.tex
+% jats.4ht (2024-08-13-13:15), generated from tex4ht-jats.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
% 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-02-23-14:41}
+\immediate\write-1{version 2024-08-13-13:15}
\exit:ifnot{amsart,%
amsbook,%
@@ -490,6 +490,18 @@ url}
{\EndNoFonts\HCode{</term><def>}\HtmlParOn\par\ShowPar
}
+\ConfigureList{thebibliography}%
+ {\ifvmode\IgnorePar\fi \EndP \HCode{<ref-list>}\let\en:bib=\empty}
+ {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{</ref-list>}}
+ {\en:bib\def\en:bib{\HCode{</mixed-citation></ref>}}%
+ \HCode{<ref><label>}%
+ \Configure{HtmlPar}%
+ {\EndP}%
+ {\EndP}%
+ {} {}%
+ }
+ {\HCode{</label><mixed-citation>}}
+
\Configure{chapter}
@@ -713,6 +725,18 @@ url}
{\EndNoFonts\HCode{</term><def>}\HtmlParOn\par\ShowPar
}
+\ConfigureList{thebibliography}%
+ {\ifvmode\IgnorePar\fi \EndP \HCode{<ref-list>}\let\en:bib=\empty}
+ {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{</ref-list>}}
+ {\en:bib\def\en:bib{\HCode{</mixed-citation></ref>}}%
+ \HCode{<ref><label>}%
+ \Configure{HtmlPar}%
+ {\EndP}%
+ {\EndP}%
+ {} {}%
+ }
+ {\HCode{</label><mixed-citation>}}
+
\ConfigureEnv{abstract}
@@ -945,6 +969,18 @@ url}
{\EndNoFonts\HCode{</term><def>}\HtmlParOn\par\ShowPar
}
+\ConfigureList{thebibliography}%
+ {\ifvmode\IgnorePar\fi \EndP \HCode{<ref-list>}\let\en:bib=\empty}
+ {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{</ref-list>}}
+ {\en:bib\def\en:bib{\HCode{</mixed-citation></ref>}}%
+ \HCode{<ref><label>}%
+ \Configure{HtmlPar}%
+ {\EndP}%
+ {\EndP}%
+ {} {}%
+ }
+ {\HCode{</label><mixed-citation>}}
+
\ConfigureEnv{abstract}
@@ -976,8 +1012,6 @@ url}
-
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsart}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1565,6 +1599,7 @@ url}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{biblatex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1634,7 +1669,6 @@ url}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{url}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1649,6 +1683,7 @@ url}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{hyperref}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1739,7 +1774,6 @@ url}
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{memoir}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1926,6 +1960,18 @@ url}
{\EndNoFonts\HCode{</term><def>}\HtmlParOn\par\ShowPar
}
+\ConfigureList{thebibliography}%
+ {\ifvmode\IgnorePar\fi \EndP \HCode{<ref-list>}\let\en:bib=\empty}
+ {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{</ref-list>}}
+ {\en:bib\def\en:bib{\HCode{</mixed-citation></ref>}}%
+ \HCode{<ref><label>}%
+ \Configure{HtmlPar}%
+ {\EndP}%
+ {\EndP}%
+ {} {}%
+ }
+ {\HCode{</label><mixed-citation>}}
+
\ConfigureEnv{abstract}
{\ifvmode\IgnorePar\fi\EndP\HCode{<abstract>\Hnewline}}
@@ -2047,6 +2093,11 @@ url}
+
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{scrbook}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2233,6 +2284,18 @@ url}
{\EndNoFonts\HCode{</term><def>}\HtmlParOn\par\ShowPar
}
+\ConfigureList{thebibliography}%
+ {\ifvmode\IgnorePar\fi \EndP \HCode{<ref-list>}\let\en:bib=\empty}
+ {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{</ref-list>}}
+ {\en:bib\def\en:bib{\HCode{</mixed-citation></ref>}}%
+ \HCode{<ref><label>}%
+ \Configure{HtmlPar}%
+ {\EndP}%
+ {\EndP}%
+ {} {}%
+ }
+ {\HCode{</label><mixed-citation>}}
+
\Configure{chapter}
@@ -2270,6 +2333,7 @@ url}
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{scrartcl}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2456,6 +2520,18 @@ url}
{\EndNoFonts\HCode{</term><def>}\HtmlParOn\par\ShowPar
}
+\ConfigureList{thebibliography}%
+ {\ifvmode\IgnorePar\fi \EndP \HCode{<ref-list>}\let\en:bib=\empty}
+ {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{</ref-list>}}
+ {\en:bib\def\en:bib{\HCode{</mixed-citation></ref>}}%
+ \HCode{<ref><label>}%
+ \Configure{HtmlPar}%
+ {\EndP}%
+ {\EndP}%
+ {} {}%
+ }
+ {\HCode{</label><mixed-citation>}}
+
\ConfigureEnv{abstract}
@@ -2473,7 +2549,6 @@ url}
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{scrreprt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2660,6 +2735,18 @@ url}
{\EndNoFonts\HCode{</term><def>}\HtmlParOn\par\ShowPar
}
+\ConfigureList{thebibliography}%
+ {\ifvmode\IgnorePar\fi \EndP \HCode{<ref-list>}\let\en:bib=\empty}
+ {\en:bib \ifvmode\IgnorePar\fi \EndP \HCode{</ref-list>}}
+ {\en:bib\def\en:bib{\HCode{</mixed-citation></ref>}}%
+ \HCode{<ref><label>}%
+ \Configure{HtmlPar}%
+ {\EndP}%
+ {\EndP}%
+ {} {}%
+ }
+ {\HCode{</label><mixed-citation>}}
+
\ConfigureEnv{abstract}
@@ -2983,5 +3070,15 @@ url}
+
+
+
+
+
+
+
+
+
+
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/latex.4ht b/Master/texmf-dist/tex/generic/tex4ht/latex.4ht
index 910c0ef699e..703b814cc61 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/latex.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/latex.4ht
@@ -1,4 +1,4 @@
-% latex.4ht (2024-05-07-13:28), generated from tex4ht-4ht.tex
+% latex.4ht (2024-10-13-14:26), 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-05-07-13:28}
+\immediate\write-1{version 2024-10-13-14:26}
\ifx\SaveMkHalignConf:g\:UnDef \else \expandafter\endinput\fi
@@ -437,14 +437,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 +1344,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 +1376,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 +1390,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 +1404,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}
@@ -2338,7 +2363,7 @@ $\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 (2024-10-13-14:26), generated from tex4ht-4ht.tex
% Copyright 1997-2009 Eitan M. Gurari
% Copyright 2009-2024 TeX Users Group
%
@@ -2346,18 +2371,18 @@ $\vcenter
% 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 2024-10-13-14:26}
\let\:fnsymbol\@fnsymbol
\def\@fnsymbol#1{{\hbox{$\:fnsymbol{#1}$}}}
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..1279d022914
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/manyfoot-hooks.4ht
@@ -0,0 +1,40 @@
+% manyfoot-hooks.4ht (2024-11-01-14:51), 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-01-14:51}
+
+
+\:AtEndOfPackage{%
+\let\o:MFL@declare:\MFL@declare
+\def\manyfoot:declarefn#1{%
+ \expandafter\renewcommand\csname footnote#1\endcsname[1]{%
+ \stepcounter{footnote#1}%
+ \renewcommand\thefootnote{\csname thefootnote#1\endcsname}%
+ \footnote{##1}%
+ }%
+}
+\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..aeabc113d47
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/manyfoot.4ht
@@ -0,0 +1,25 @@
+% manyfoot.4ht (2024-11-01-14:51), 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-01-14:51}
+
+
+
+\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 cfc53895a23..4559b909d61 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/mathjax-latex-4ht.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/mathjax-latex-4ht.4ht
@@ -1,22 +1,22 @@
-% mathjax-latex-4ht.4ht (2024-02-25-08:28), generated from tex4ht-mathjax.tex
+% mathjax-latex-4ht.4ht (2024-10-25-14:48), generated from tex4ht-mathjax.tex
% Copyright 2018-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-02-25-08:28}
+\immediate\write-1{version 2024-10-25-14:48}
\ExplSyntaxOn
@@ -48,10 +48,14 @@
% beginning of each display math
\long\def\AltlDisplayDollars#1$${\alteqtoks{\[#1\]}$$}
+\NewConfigure{MathjaxEnv}{2}
+
\newcommand\VerbMathToks[2]{%
- \alteqtoks{\begin{#2}
- #1
- \end{#2}}%
+ \a:MathjaxEnv%
+ \HCode{\string\begin{#2}}%
+ \alteqtoks{#1}%
+ \HCode{\string\end{#2}}%
+ \b:MathjaxEnv%
}
\ExplSyntaxOn
\seq_new:N\:savedmathjaxenvs
@@ -162,7 +166,8 @@
}{}
\@ifpackageloaded{tikz}{%
-\tikzset{every picture/.append code={\:ignoretikzmatrix\RestoreMathJaxEnvironments}}
+%\tikzset{every picture/.append code={\:ignoretikzmatrix\RestoreMathJaxEnvironments}}
+\pend:def\tikz@installcommands{\RestoreMathJaxEnvironments}
}{}
}
@@ -677,5 +682,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht b/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht
index 3de1fdb2fe2..a36a855147a 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht
@@ -1,4 +1,4 @@
-% mathml.4ht (2024-03-21-13:48), generated from tex4ht-mathml.tex
+% mathml.4ht (2024-10-11-14:13), generated from tex4ht-mathml.tex
% Copyright 2009-2024 TeX Users Group
% Copyright 1999-2009 Eitan M. Gurari
%
@@ -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-21-13:48}
+\immediate\write-1{version 2024-10-11-14:13}
\exit:ifnot{Preamble,%
accents,%
@@ -34,6 +34,7 @@ array,%
bm,%
cancel,%
dcolumn,%
+esvect,%
etex4ht,%
fontmath,%
gauss,%
@@ -44,6 +45,7 @@ plain,%
rlbabel,%
sistyle,%
siunitx,%
+stmaryrd,%
subeqnarray,%
tex4ht,%
ulem,%
@@ -922,7 +924,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
@@ -1412,14 +1414,19 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\HLet\limsup\:tempa
\def\:tempa{\mathop{\:limspaces{lim}{inf}}\limits}
\HLet\liminf\:tempa
-\def\:temp#1#2{\def#1{\PauseMathClass{\HCode{<mi mathvariant="normal">}\ht:special{t4ht@+\string&{35}x#2{59}}\a:HChar\HCode{</mi>}}\EndPauseMathClass}}
-\:temp\Psi{03A8}
+\def\:temp#1#2{\def\:tempa{\PauseMathClass{\HCode{<mi mathvariant="normal">}\ht:special{t4ht@+\string&{35}x#2{59}}\a:HChar\HCode{</mi>}}\EndPauseMathClass}\HLet#1\:tempa}
+\:temp\Gamma{0393}
\:temp\Delta{0394}
+\:temp\Theta{0398}
+\:temp\Lambda{039B}
\:temp\Xi{039E}
\:temp\Pi{03A0}
\:temp\Sigma{03A3}
\:temp\Upsilon{03A5}
+\:temp\Phi{03A6}
+\:temp\Psi{03A8}
\:temp\Omega{03A9}
+
\AtBeginDocument{%
\Configure{mathop*}{*}{}{}{\Configure{mathop}{*}{<\a:mathml mo>}{</\a:mathml mo>}{}}
}
@@ -1794,7 +1801,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amsbsy}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2794,7 +2800,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
@@ -3334,7 +3340,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{array}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3476,6 +3481,9 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{vanilla}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3517,6 +3525,9 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{amssymb}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3848,7 +3859,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{dcolumn}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -3928,6 +3938,10 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{mathtools}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4078,6 +4092,10 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{accents}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4101,6 +4119,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{subeqnarray}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4150,7 +4169,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{siunitx}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4166,6 +4184,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{sistyle}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4179,7 +4198,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
\endinput\empty\empty\empty\empty\empty\empty
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ushort}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4217,6 +4235,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{bm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4265,7 +4284,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ConfigureHinput{ulem}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4340,6 +4358,24 @@ 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
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
@@ -4576,6 +4612,23 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ConfigureHinput{esvect}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \def\:tempa#1{%
+\bgroup\HCode{<\a:mathml mover><\a:mathml mrow>}#1\HCode{</\a:mathml mrow><\a:mathml mo \a:mathml stretchy="true">}
+\PauseMathClass\fldr\EndPauseMathClass%
+\HCode{</\a:mathml mo></\a:mathml mover>}\egroup
+}
+
+\HRestore\ESV@vecteur
+\HLet\ESV@vecteur\:tempa
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput\empty\empty\empty\empty\empty\empty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
\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/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/moderncv.4ht b/Master/texmf-dist/tex/generic/tex4ht/moderncv.4ht
new file mode 100644
index 00000000000..c07dddde74d
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/tex4ht/moderncv.4ht
@@ -0,0 +1,168 @@
+% moderncv.4ht (2024-08-19-13:32), 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-08-19-13:32}
+
+\NewConfigure{section}{2}
+\RenewDocumentCommand\section{sm}{\a:section #2\b:section}
+
+\NewConfigure{subsection}{2}
+\RenewDocumentCommand\subsection{sm}{\a:subsection #2\b:subsection}
+
+
+\NewConfigure{cvitem}{3}
+\renewcommand*{\cvitem}[3][.25em]{
+\a:cvitem #2\b:cvitem #3\c:cvitem
+}
+
+\NewConfigure{cvdoubleitem}{2}
+\renewcommand*{\cvdoubleitem}[5][.25em]{%
+\a:cvdoubleitem
+\cvitem{#2}{#3}
+\cvitem{#4}{#5}
+\b:cvdoubleitem
+}
+
+\NewConfigure{cvlistitem}{2}
+\renewcommand*{\cvlistitem}[2][.25em]{%
+ \a:cvlistitem\cvitem[#1]{\listitemsymbol}{#2}\b:cvlistitem
+}
+
+\NewConfigure{cvlistdoubleitem}{2}
+\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
+ \a:cvlistdoubleitem%
+ \cvitem[#1]{\listitemsymbol}{#2}%
+ \cvitem[#1]{\listitemsymbol}{#3}%
+ \b:cvlistdoubleitem%
+}
+
+\NewConfigure{cvhead}{2}
+\NewConfigure{cvphoto}{2}
+
+
+\renewcommand*{\makecvhead}{%
+ \a:cvhead
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputecvlengths%
+ % optional detailed information (pre-rendering)
+ \@initializebox{\makecvheaddetailsbox}%
+ \if@details%
+ \def\phonesdetails{}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
+ \def\socialsdetails{}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
+ \savebox{\makecvheaddetailsbox}{%
+ \addressfont\color{color2}%
+ \if@left\begin{tabular}[b]{@{}r@{}}\fi%
+ \if@right\begin{tabular}[b]{@{}l@{}}\fi%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}%
+ \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
+ \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
+ \end{tabular}
+ }\fi%
+ % optional photo (pre-rendering)
+ \@initializebox{\makecvheadpicturebox}%
+ \savebox{\makecvheadpicturebox}{%
+ \ifthenelse{\isundefined{\@photo}}%
+ {}%
+ {%
+ \a:cvphoto\includegraphics[]{\@photo}\b:cvphoto}%
+ }%
+ % name and title (pre-rendering)
+ \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}%
+ \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
+ \ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt)
+ {\setlength{\makecvheadnamewidth}{\textwidth-\makecvheaddetailswidth-\makecvheadpicturewidth}}%
+ {}%
+ \@initializebox{\makecvheadnamebox}%
+ \savebox{\makecvheadnamebox}{%
+ \begin{minipage}[b]{\makecvheadnamewidth}%
+ \if@left\raggedright\fi%
+ \if@right\raggedleft\fi%
+ \namestyle{\@firstname\ \@lastname}%
+ \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
+ \end{minipage}}%
+ % rendering
+ \if@left%
+ \usebox{\makecvheadnamebox}%
+ \hfill%
+ \llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
+ \usebox{\makecvheadpicturebox}\fi%
+ \if@right%
+ \usebox{\makecvheadpicturebox}%
+ \rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
+ \hfill%
+ \usebox{\makecvheadnamebox}\fi%
+ \\[2.5em]%
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ \b:cvhead\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
+
+
+\RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend@defaultLevelOne} +O{\skillLegend@defaultLevelTwo} +O{\skillLegend@defaultLevelThree} +O{\skillLegend@defaultLevelFour} +O{\skillLegend@defaultLevelFive} +m}{%
+\begin{tabular}{l l l l l l}
+ \raggedleft\hintstyle{#8} & \cvskill{1}\, & \,{\skillLegend@FontSize #3} & \cvskill{3}\, &\,{\skillLegend@FontSize #5 } \\%
+ %
+ & \cvskill{2}\, & \,\multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}\, &\,{\skillLegend@FontSize #6 } \\%
+ %
+ & & & \cvskill{5}\, &\,{\skillLegend@FontSize #7 }%
+ \end{tabular}%
+}%
+
+
+\NewConfigure{cvskill}{2}
+\def\:tempa#1{\def\:cvskillamount{#1}\a:cvskill\o:cvskill:{#1}\b:cvskill}
+\HLet\cvskill\:tempa
+
+\NewConfigure{cvskillhead}{2}
+\NewConfigure{cvskillentry}{2}
+\RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{%
+ \begingroup
+ \a:cvskillhead
+ \begin{tabular}{ p{6em} p{12em} p{4em} p{20em}}%
+ { #2} & { #3} & { #4} & { #5}
+ \end{tabular}%
+ \b:cvskillhead
+ \endgroup
+ \par\addvspace{#1}
+}
+
+\RenewDocumentCommand\cvskillentry{s +O{.25em} +m +m +m +m +m}{%
+\a:cvskillentry
+\cvitem{#3}{
+ \begin{tabular}{ p{6em} p{12em} p{4em} p{20em}}
+ \centering \cvskill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}%
+ \end{tabular}}%
+ \b:cvskillentry
+ \par\addvspace{#2}
+}
+
+
+\Hinput{moderncv}
+\endinput
+
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/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/tagpdf-base-hooks.4ht b/Master/texmf-dist/tex/generic/tex4ht/tagpdf-base-hooks.4ht
index 4793862b311..dcf308775ee 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/tagpdf-base-hooks.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/tagpdf-base-hooks.4ht
@@ -1,4 +1,4 @@
-% tagpd-base-hooks.4ht (2024-05-06-13:37), generated from tex4ht-4ht.tex
+% tagpd-base-hooks.4ht (2024-07-26-15:08), generated from tex4ht-4ht.tex
% Copyright 2024 TeX Users Group
%
% This work may be distributed and/or modified under the
@@ -16,10 +16,7 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-05-06-13:37}
+\immediate\write-1{version 2024-07-26-15:08}
-% ignore tagpdf's specials
-% we use csname, because \ExplSyntaxOn .. Off caused catcode issues
-\expandafter\def\csname __tag_whatsits:\endcsname{}
\endinput
diff --git a/Master/texmf-dist/tex/generic/tex4ht/tagpdf-hooks.4ht b/Master/texmf-dist/tex/generic/tex4ht/tagpdf-hooks.4ht
index c012b7967b8..02db5485f63 100644
--- a/Master/texmf-dist/tex/generic/tex4ht/tagpdf-hooks.4ht
+++ b/Master/texmf-dist/tex/generic/tex4ht/tagpdf-hooks.4ht
@@ -1,4 +1,4 @@
-% tagpdf-hooks.4ht (2024-05-03-14:34), generated from tex4ht-4ht.tex
+% tagpdf-hooks.4ht (2024-07-26-15:08), generated from tex4ht-4ht.tex
% Copyright 2022-2024 TeX Users Group
%
% This work may be distributed and/or modified under the
@@ -16,11 +16,9 @@
%
% If you modify this program, changing the
% version identification would be appreciated.
-\immediate\write-1{version 2024-05-03-14:34}
+\immediate\write-1{version 2024-07-26-15:08}
\ExplSyntaxOn
-% ignore tagpdf's specials
-\cs_set_protected:Npn \__tag_whatsits: {}
\ExplSyntaxOff
\:AtEndOfPackage{%
\RenewDocumentCommand \tagpdfsetup { m }{}
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/usepackage.4ht b/Master/texmf-dist/tex/generic/tex4ht/usepackage.4ht
index fef5bf8c851..9cc265e8fc4 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-05-03-14:34), generated from tex4ht-4ht.tex
+% usepackage.4ht (2024-11-05-12:30), generated from tex4ht-4ht.tex
% Copyright 2003-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-05-03-14:34}
+\immediate\write-1{version 2024-11-05-12:30}
\def\:temp{tex4ht}\ifx \:temp\@currname
\:warning{\string\usepackage{tex4ht} again?}
@@ -91,11 +91,15 @@
\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/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/alltt.sty b/Master/texmf-dist/tex/latex-dev/base/alltt.sty
index 78c5e6a9241..2cbaf54abb0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/alltt.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/alltt.sty
@@ -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-dev/base/article.cls b/Master/texmf-dist/tex/latex-dev/base/article.cls
index 869bdc0db41..0dcb9da0226 100644
--- a/Master/texmf-dist/tex/latex-dev/base/article.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/article.cls
@@ -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-dev/base/bk10.clo b/Master/texmf-dist/tex/latex-dev/base/bk10.clo
index ba4701bead9..958c45b467e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk10.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk10.clo
@@ -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-dev/base/bk11.clo b/Master/texmf-dist/tex/latex-dev/base/bk11.clo
index c0a4a4420f1..cbcbd0dae62 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk11.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk11.clo
@@ -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-dev/base/bk12.clo b/Master/texmf-dist/tex/latex-dev/base/bk12.clo
index c4a5e3c2457..ccdb40f6d42 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk12.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk12.clo
@@ -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-dev/base/book.cls b/Master/texmf-dist/tex/latex-dev/base/book.cls
index 2838b7f1ce3..e73e83ea3c0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/book.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/book.cls
@@ -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-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 16b0fbc897d..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/04 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/fontmath.cfg b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
index eca079d15b3..a50cabda404 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/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k 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 a7dd9cc44ad..29f871ac4d5 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/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k 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 b37c4407d63..dbb0e2e99c5 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/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k 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 ec6ce8ed910..bd2ebea0874 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/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k LaTeX Kernel
(Text font setup)
]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
@@ -77,9 +77,17 @@
\endgroup
\begingroup
\nfss@catcodes
+\input {t1cmss.fd}
+\input {t1cmtt.fd}
\input {ot1cmss.fd}
\input {ot1cmtt.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 66ee8826d2a..ff8f27d5d8f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
@@ -709,8 +709,8 @@
%%% From File: ltvers.dtx
\def\fmtname{LaTeX2e}
\edef\fmtversion
- {2024-11-01}
-\def\patch@level{1}
+ {2025-06-01}
+\def\patch@level{0}
\edef\development@branch@name{develop \the\year-\the\month-\the\day}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
@@ -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
@@ -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
+ {
+ \__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
+ }
+ }
{
- #1 \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{%
@@ -8587,10 +8638,10 @@ Type H <return> for immediate help.}%
\newtoks \everypar
\tl_gput_right:Nx \g__para_standard_everypar_tl {
- \exp_not:N \the
- \exp_not:N \toks
- \the \allocationnumber
- \c_space_tl
+ \exp_not:N \the
+ \exp_not:N \toks
+ \the \allocationnumber
+ \c_space_tl
}
\box_new:N \g_para_indent_box
@@ -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}
@@ -10201,6 +10268,7 @@ Type H <return> for immediate help.}%
\hbadness\@M
\hfuzz\maxdimen
\tracingonline\z@
+ \tracinglostchars\z@
\everypar={}%
\leftskip\z@skip
\rightskip\z@skip
@@ -13273,11 +13341,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 +13421,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 +13548,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 +13563,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 +13727,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 +13745,7 @@ Type H <return> for immediate help.}%
\fi
\UseHook{env/#1/begin}%
}
+
\edef\end
{\unexpanded{%
\romannumeral
@@ -13680,13 +13764,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 +14318,20 @@ 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\currentgrouplevel>\z@
+ \aftergroup\propagate@doendpe
+ \fi
+}
+\def\propagate@doendpe{\if@endpe \@doendpe \fi}
\def\@mklab#1{\hfil #1}
\def\item{%
\@inmatherr\item
@@ -14405,12 +14499,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(%)
@@ -16072,7 +16168,6 @@ Type H <return> for immediate help.}%
%% Copyright (C) 2022-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-%% \end{function}
\ExplSyntaxOn
\seq_new:N \g__mark_classes_seq
@@ -16425,6 +16520,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 +16881,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{%
@@ -17445,6 +17548,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
}
@@ -17537,7 +17641,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
@@ -17590,18 +17727,11 @@ Type H <return> for immediate help.}%
{
\cs_if_free:cF { @raw@opt@ \@currname . \@currext }
{
- \keys_if_exist:nnTF {#1} { unknown }
- {
- \clist_put_right:Nv \l__keys_options_clist
- { @raw@opt@ \@currname . \@currext }
- }
+ \clist_map_inline:cn { @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}
}
}
}
@@ -17609,14 +17739,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
@@ -17630,10 +17769,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
@@ -19538,17 +19686,11 @@ 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} }
- }
-}
+
+\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} }
\AddToHook{begindocument}[kernel]{
\cs_if_exist:NF \tag_if_active:T
{
@@ -19556,19 +19698,63 @@ Type H <return> for immediate help.}%
{ \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}
@@ -19576,7 +19762,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}
@@ -19588,6 +19776,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
@@ -19661,6 +19859,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}
@@ -19696,6 +19895,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,
@@ -19726,7 +19926,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-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
index 5a696389f15..993c99f1c07 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{%
@@ -431,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}{%
@@ -1989,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
@@ -2209,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}
@@ -2228,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}
@@ -4806,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}
@@ -4826,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
@@ -5249,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:
}
{
@@ -5314,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 }
@@ -6781,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 }
@@ -6988,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}
+ }
}
}
}
@@ -7535,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:. \\
@@ -7712,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
@@ -8547,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}
@@ -8566,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
@@ -8606,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! }
@@ -9496,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
+ {
+ \__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
+ }
+ }
{
- #1 \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
@@ -9926,6 +10035,13 @@ of this package available from CTAN}
\msg_error:nnnn { hooks }{ para-mode }{begin}{horizontal} \fi:
\__para_handle_indent:
}
+\cs_set:Npn \__para_tmp:w #1#2#3#4#5 { }
+\tl_gput_right:Nx \g__para_standard_everypar_tl {
+ \exp_not:N \the
+ \exp_not:N \toks
+ \exp_after:wN \__para_tmp:w \token_to_meaning:N \everypar
+ \c_space_tl
+}
\EndIncludeInRelease
\IncludeInRelease{2021/06/01}
{\g__para_standard_everypar_tl}{minipage~ fix}
@@ -9962,10 +10078,10 @@ of this package available from CTAN}
\newtoks \everypar
\tl_gput_right:Nx \g__para_standard_everypar_tl {
- \exp_not:N \the
- \exp_not:N \toks
- \the \allocationnumber
- \c_space_tl
+ \exp_not:N \the
+ \exp_not:N \toks
+ \the \allocationnumber
+ \c_space_tl
}
\box_new:N \g_para_indent_box
@@ -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
@@ -14575,11 +14824,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 +14965,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 +15092,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 +15107,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 +15222,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 +15286,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 +15412,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 +15430,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 +15441,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 +15476,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 +15996,25 @@ 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\currentgrouplevel>\z@
+ \aftergroup\propagate@doendpe
+ \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 +16094,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 +16104,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 +16111,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]{%
@@ -17187,7 +17519,6 @@ of this package available from CTAN}
%% Copyright (C) 2022-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-%% \end{function}
\ExplSyntaxOn
\NewModuleRelease{2022/06/01}{ltmarks}
@@ -17493,6 +17824,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 +18340,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{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/letter.cls b/Master/texmf-dist/tex/latex-dev/base/letter.cls
index f39504c561e..484203d5777 100644
--- a/Master/texmf-dist/tex/latex-dev/base/letter.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/letter.cls
@@ -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-dev/base/ltluatex.lua b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
index e92a27eb3a4..8a650531558 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
@@ -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-dev/base/ltluatex.tex b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
index 2747e4f56f3..fc23e470097 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
@@ -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-dev/base/preload.cfg b/Master/texmf-dist/tex/latex-dev/base/preload.cfg
index 2e89d1f4e74..c10298c491c 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/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k LaTeX Kernel
(Uncustomized preload font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/report.cls b/Master/texmf-dist/tex/latex-dev/base/report.cls
index cb7a32f536d..b0f60a1f5db 100644
--- a/Master/texmf-dist/tex/latex-dev/base/report.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/report.cls
@@ -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-dev/base/shortvrb.sty b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
index 8caa7e43a8b..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/04 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/size10.clo b/Master/texmf-dist/tex/latex-dev/base/size10.clo
index 11be942b3e9..a2c22c047f8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size10.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size10.clo
@@ -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-dev/base/size11.clo b/Master/texmf-dist/tex/latex-dev/base/size11.clo
index a36fb7931ba..0259727c40c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size11.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size11.clo
@@ -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-dev/base/size12.clo b/Master/texmf-dist/tex/latex-dev/base/size12.clo
index aa9f0808f73..e1dd32b0325 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size12.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size12.clo
@@ -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-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..5c9dc62b9b9 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/10/16}
+\def\LaTeXFirstAidVersion{v1.1g}
\ProvidesFile{latex2e-first-aid-for-external-files.ltx}
[\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space
LaTeX kernel fixes to external files and packages]
@@ -228,8 +228,41 @@
{[\@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
+ }
+ \AddToHook{label}[firstaid/cleveref]
+ {\ifx
+ \@currentcounter\@empty
+ \else
+ \firstaid@cref@updatelabeldata{\@currentcounter}
+ \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/graphics/color.sty b/Master/texmf-dist/tex/latex-dev/graphics/color.sty
index 7083345d319..6eac5d7e41a 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/color.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/graphics/graphics.sty b/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
index 9d6e6c3b176..bbbe11f3325 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
index b90d7551a9c..552e502f817 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-code.tex
@@ -75,7 +75,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-06-19}%
+\def\ExplFileDate{2024-11-02}%
\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
@@ -6138,6 +6135,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 +6468,8 @@ 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_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:
@@ -12952,8 +12950,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 +13377,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 +13470,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 }
@@ -13859,7 +13857,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\bool_if:NTF \l__keys_no_value_bool
{
- \__keys_define_code:TF
+ \__keys_define_code:nnn
+ { \use:c { \c__keys_props_root_str \l__keys_property_str } {#1} }
{ \use:c { \c__keys_props_root_str \l__keys_property_str } }
{
\msg_error:nnee { keys } { property-requires-value }
@@ -13868,7 +13867,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{ \use:c { \c__keys_props_root_str \l__keys_property_str } {#1} }
}
-\cs_new:Npe \__keys_define_code:TF
+\cs_new:Npe \__keys_define_code:nnn
{
\exp_not:N \exp_after:wN \exp_not:N \__keys_define_code:w
\exp_not:N \l__keys_property_str
@@ -13880,7 +13879,15 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \exp_not:N \__keys_define_code:w
#1 \c_colon_str #2 \c_colon_str #3 \exp_not:N \s__keys_stop
}
- { \tl_if_empty:nTF {#2} }
+ {
+ \tl_if_empty:nTF {#3}
+ { \use_i:nnn }
+ {
+ \tl_if_empty:nTF {#2}
+ { \use_ii:nnn }
+ { \use_iii:nnn }
+ }
+ }
\cs_new_protected:Npn \__keys_bool_set:Nn #1#2
{ \__keys_bool_set:Nnnn #1 {#2} { true } { false } }
\cs_generate_variant:Nn \__keys_bool_set:Nn { c }
@@ -17428,8 +17435,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
@@ -32254,7 +32261,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 }
@@ -32266,7 +32273,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 }
@@ -32287,6 +32294,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
@@ -33731,15 +33740,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\tl_set:ce { l__codepoint_ #1 _block_tl }
{ \int_eval:n { \tl_use:c { l__codepoint_ #1 _block_tl } + 1 } }
}
- \prg_replicate:nn {#2}
+ \int_step_inline:nnn
+ { \tl_use:c { l__codepoint_ #1 _pos_tl } + 1 }
+ { \tl_use:c { l__codepoint_ #1 _pos_tl } + #2 }
{
- \tl_set:ce { l__codepoint_ #1 _pos_tl }
- { \int_eval:n { \tl_use:c { l__codepoint_ #1 _pos_tl } + 1 } }
\exp_args:Nc \__kernel_intarray_gset:Nnn
{ g__codepoint_ #1 _index_intarray }
- { \tl_use:c { l__codepoint_ #1 _pos_tl } }
+ {##1}
\l__codepoint_matched_block_tl
}
+ \tl_set:ce { l__codepoint_ #1 _pos_tl }
+ { \int_eval:n { \tl_use:c { l__codepoint_ #1 _pos_tl } + #2 } }
\clist_clear:c { l__codepoint_ #1 _block_clist }
}
\cs_set_protected:Npn \__codepoint_finalise_blocks:
@@ -37386,10 +37397,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \text_uppercase:nn {#1} {#2} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
\cs_new:Npn \tl_mixed_case:n #1
- { \text_titlecase_first:n {#1} }
+ { \text_titlecase_first:n { \text_lowercase:n {#1} } }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:nn }
\cs_new:Npn \tl_mixed_case:nn #1#2
- { \text_titlecase_first:nn {#1} {#2} }
+ { \text_titlecase_first:nn {#1} { \text_lowercase:n {#2} } }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:Nn }
\cs_new:Npn \tl_case:Nn { \token_case_meaning:Nn }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnT }
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 115116eb8c4..c0871d0daaa 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-06-19}%
+\def\ExplFileDate{2024-11-02}%
\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 d69c3f785e0..3eb3a3d63cc 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-06-19}%
+\def\ExplFileDate{2024-11-02}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\catcode`\_=11
diff --git a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
index cf7a71387b0..15c04cee809 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2024-06-19}%
+\def\ExplFileDate{2024-11-02}%
\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 85e8367975f..78d83046291 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3debug.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3debug.dtx
-\ProvidesExplFile{l3debug.def}{2024-06-19}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2024-11-02}{}{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 f0c283a3865..8edacf2f0c4 100644
--- a/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex-dev/l3kernel/l3doc.cls
@@ -20,7 +20,7 @@
%%
%% File: l3doc.dtx
\RequirePackage{calc}
-\ProvidesExplClass{l3doc}{2024-06-19}{}
+\ProvidesExplClass{l3doc}{2024-11-02}{}
{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,23 @@
\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:
+ \bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }{ \sys_if_engine_xetex_p: }
+ {
+ \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
@@ -789,17 +800,20 @@
\cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { o , e }
\cs_new_protected:Npn \__codedoc_names_get_seq:nN #1#2
{
- \__kernel_tl_set:Nx \l__codedoc_tmpa_tl { \tl_to_str:n {#1} }
\bool_if:NTF \l__codedoc_names_verb_bool
{
\seq_clear:N #2
- \seq_put_right:NV #2 \l__codedoc_tmpa_tl
+ \seq_put_right:No #2 { \tl_to_str:n {#1} }
}
{
+ \tl_set:Nn \l__codedoc_tmpa_tl {#1}
\tl_remove_all:Ne \l__codedoc_tmpa_tl
- { \iow_char:N \^^M \c_percent_str }
+ { \exp_not:N \obeyedline \c_percent_str }
+ \tl_remove_all:Ne \l__codedoc_tmpa_tl
+ { \exp_not:N \obeyedline }
+ \__kernel_tl_set:Nx \l__codedoc_tmpa_tl { \tl_to_str:N \l__codedoc_tmpa_tl }
\tl_remove_all:Ne \l__codedoc_tmpa_tl
- { \token_to_str:N \obeyedline \c_space_tl \c_percent_str }
+ { \iow_char:N \^^M \c_percent_str }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \tl_to_str:n { ^ ^ A } }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^I }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^M }
@@ -1023,7 +1037,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:
@@ -1059,7 +1073,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 }
}
@@ -1087,7 +1101,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}
@@ -1136,7 +1150,6 @@
{ \__codedoc_typeset_variant_list:nN {#1} #2 }
\\
}
-\cs_generate_variant:Nn \__codedoc_typeset_function_block:nN { e }
\cs_new_protected:Npn \__codedoc_function_index:n #1
{
\seq_gput_right:Nn \g_doc_functions_seq {#1}
@@ -1234,7 +1247,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
@@ -1789,7 +1802,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}
}
}
@@ -1883,7 +1896,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 {}
@@ -2186,7 +2199,6 @@
{#2}
\l__codedoc_index_internal_bool
}
-\cs_generate_variant:Nn \__codedoc_special_index:nn { o }
\tl_new:N \l__codedoc_index_escaped_macro_tl
\tl_new:N \l__codedoc_index_escaped_key_tl
\cs_new_protected:Npn \__codedoc_special_index_module:nnnnN #1#2#3#4#5
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
index ee69798ec39..d0fb0b78fa5 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/bib-latex-lab-testphase.ltx
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/latex-lab/block-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/block-latex-lab-testphase.ltx
index 937f08d1e1c..f48c2429104 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-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-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 7003ae1856d..aed5cf0cc79 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-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-dev/latex-lab/float-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/float-latex-lab-testphase.ltx
index 59fdaa63d95..1f8d3044969 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-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-dev/latex-lab/graphic-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/graphic-latex-lab-testphase.ltx
index 3cc259063d4..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-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-dev/latex-lab/latex-lab-amsmath.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-amsmath.ltx
index cab7e10f301..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-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-dev/latex-lab/latex-lab-footmisc.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx
index 954efe086a5..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-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-dev/latex-lab/latex-lab-footnotes.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx
index 2277a40c6f8..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-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-dev/latex-lab/latex-lab-kernel-changes.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-kernel-changes.sty
index 1282f9d899c..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
@@ -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-dev/latex-lab/latex-lab-math.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-math.ltx
index 343a184d379..1064a98ee32 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-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-dev/latex-lab/latex-lab-mathtools.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-mathtools.ltx
index 43663b8f9ef..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,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-dev/latex-lab/latex-lab-testphase-bib.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
index 4cfa0b055c8..49f0207bc39 100644
--- a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-bib.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/latex-lab/latex-lab-testphase-block.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-block.sty
index a4d646636fc..5a819df9846 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,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-dev/latex-lab/latex-lab-testphase-firstaid.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-firstaid.sty
index 552dfee1832..d960bdf65b4 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-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-dev/latex-lab/latex-lab-testphase-float.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-float.sty
index a944c944b20..f170b7c35f8 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-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-dev/latex-lab/latex-lab-testphase-graphic.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-graphic.sty
index 2ea6e529d73..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-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-dev/latex-lab/latex-lab-testphase-marginpar.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-marginpar.sty
index e40ab0ca2a8..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,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-dev/latex-lab/latex-lab-testphase-minipage.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-minipage.sty
index 3b35a7beb38..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{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-dev/latex-lab/latex-lab-testphase-sec.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-sec.sty
index 6fee3cc5a94..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-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-dev/latex-lab/latex-lab-testphase-table.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-table.sty
index 4af648e77c4..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-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-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 e4cb035ba10..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,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-dev/latex-lab/marginpar-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/marginpar-latex-lab-testphase.ltx
index a74a5f65ef3..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-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-dev/latex-lab/minipage-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/minipage-latex-lab-testphase.ltx
index 0cf1da13360..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{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-dev/latex-lab/sec-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/sec-latex-lab-testphase.ltx
index 5cd6edae269..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-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-dev/latex-lab/table-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/table-latex-lab-testphase.ltx
index b01da95717e..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-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-dev/latex-lab/tabular-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/tabular-latex-lab-testphase.ltx
index 67a80c992ab..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-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-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 8b2c05d329c..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{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-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 5010b2f1b43..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/05/23 v2.6c 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}%
@@ -286,6 +287,7 @@
\let\@arrayacol=\relax \let\@tabacol=\relax
\let\@tabularcr=\relax \let\@@endpbox=\relax
\let\@argtabularcr=\relax \let\@xtabularcr=\relax
+\ExplSyntaxOff
\def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
\PackageError{array}{%
\ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
@@ -294,7 +296,6 @@
>\@tempd token ignored\or %3
<\@tempd changed to !{..}\or %4
Only one column-spec. allowed.\fi}\@ehc} %5
-\ExplSyntaxOff % this is really oldstyle using \@tfor :=
\def\newcolumntype#1{%
\edef\NC@char{\string#1}%
\@ifundefined{NC@find@\NC@char}%
@@ -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-dev/tools/longtable.sty b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
index aa19b28096a..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-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-dev/tools/multicol.sty b/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
index ebe9ea853a8..89a3fd13905 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/tools/thb.sty b/Master/texmf-dist/tex/latex-dev/tools/thb.sty
index 7d78943b773..c7c01d6d8f8 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thb.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/tools/thc.sty b/Master/texmf-dist/tex/latex-dev/tools/thc.sty
index 7819ee2f44f..77b0c88c478 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thc.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/tools/thcb.sty b/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
index d05f9459ae2..e02fb365d80 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/tools/theorem.sty b/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
index 565fe7344b0..474a44eacca 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/tools/thm.sty b/Master/texmf-dist/tex/latex-dev/tools/thm.sty
index 26474e89142..18837285335 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thm.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/tools/thmb.sty b/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
index eb8cdc7e396..d5f9b089190 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/tools/thp.sty b/Master/texmf-dist/tex/latex-dev/tools/thp.sty
index 1fc19ff5a99..16f97840d6a 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/thp.sty
+++ b/Master/texmf-dist/tex/latex-dev/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/abraces/abraces.sty b/Master/texmf-dist/tex/latex/abraces/abraces.sty
index af146826ce5..3b096e7ab77 100644
--- a/Master/texmf-dist/tex/latex/abraces/abraces.sty
+++ b/Master/texmf-dist/tex/latex/abraces/abraces.sty
@@ -1,5 +1,5 @@
%% abraces.sty
-%% Copyright 2021 Werner Grundlingh
+%% Copyright 2024 Werner Grundlingh
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,9 +16,12 @@
% This work consists of the file abraces.sty.
\ProvidesPackage{abraces}% http://ctan.org/pkg/abraces
- [2022/11/06 v2.1 Arbitrary and asymmetric braces]
+ [2024/08/02 v2.2 Arbitrary and asymmetric braces]
+% xparse definitions now form part of the LaTeX core. However, keeping this in for those using older versions.
\RequirePackage{xparse}
+% Since abraces defines \bracecolor, add xcolor as dependency
+\RequirePackage{xcolor}
\newif\if@overload
\DeclareOption{overload}{\@overloadtrue}
diff --git a/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls b/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls
new file mode 100644
index 00000000000..4a264e00c9d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls
@@ -0,0 +1,3492 @@
+%%
+%% This is file `acmart-tagged.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% acmart.dtx (with options: `class,tagged')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from acmart-tagged.cls.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file acmart.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.)
+%% \CharacterTable
+%% {Upper-case \A\B\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}
+\ProvidesClass{acmart-tagged}
+[2024/08/25 v2.09 Typesetting articles for the Association for Computing Machinery]
+\def\@classname{acmart-tagged}
+\InputIfFileExists{acmart-preload-hook.tex}{%
+ \ClassWarning{\@classname}{%
+ I am loading acmart-preload-hook.tex. You are fully responsible
+ for any problems from now on.}}{}
+\RequirePackage{xkeyval}
+\RequirePackage{xstring}
+\RequirePackage{iftex}
+\define@choicekey*+{\@classname.cls}{format}[\ACM@format\ACM@format@nr]{%
+ manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
+ sigplan, sigchi, sigchi-a, acmengage, acmcp}[manuscript]{}{%
+ \ClassError{\@classname}{The option format must be manuscript,
+ acmsmall, acmlarge, acmtog, sigconf, siggraph,
+ sigplan, sigchi or sigchi-a}}
+\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{\@classname.cls}{format=#1}}}
+\@DeclareACMFormat{manuscript}
+\@DeclareACMFormat{acmsmall}
+\@DeclareACMFormat{acmlarge}
+\@DeclareACMFormat{acmtog}
+\@DeclareACMFormat{sigconf}
+\@DeclareACMFormat{siggraph}
+\@DeclareACMFormat{sigplan}
+\@DeclareACMFormat{sigchi}
+\@DeclareACMFormat{sigchi-a}
+\@DeclareACMFormat{acmengage}
+\@DeclareACMFormat{acmcp}
+\ExecuteOptionsX{format}
+\define@boolkey+{\@classname.cls}[@ACM@]{screen}[true]{%
+ \if@ACM@screen
+ \PackageInfo{\@classname}{Using screen mode}%
+ \else
+ \PackageInfo{\@classname}{Not using screen mode}%
+ \fi}{\PackageError{\@classname}{The option screen can be either true or
+ false}}
+\ExecuteOptionsX{screen=false}
+\define@boolkey+{\@classname.cls}[@ACM@]{urlbreakonhyphens}[true]{%
+ \if@ACM@urlbreakonhyphens
+ \PackageInfo{\@classname}{Using breaking urls on hyphens}%
+ \else
+ \PackageInfo{\@classname}{Not breaking urls on hyphens}%
+ \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or
+ false}}
+\ExecuteOptionsX{urlbreakonhyphens=true}
+\define@boolkey+{\@classname.cls}[@ACM@]{acmthm}[true]{%
+ \if@ACM@acmthm
+ \PackageInfo{\@classname}{Requiring acmthm}%
+ \else
+ \PackageInfo{\@classname}{Suppressing acmthm}%
+ \fi}{\PackageError{\@classname}{The option acmthm can be either true or
+ false}}
+\ExecuteOptionsX{acmthm=true}
+\define@boolkey+{\@classname.cls}[@ACM@]{review}[true]{%
+ \if@ACM@review
+ \PackageInfo{\@classname}{Using review mode}%
+ \AtBeginDocument{\@ACM@printfoliostrue}%
+ \else
+ \PackageInfo{\@classname}{Not using review mode}%
+ \fi}{\PackageError{\@classname}{The option review can be either true or
+ false}}
+\ExecuteOptionsX{review=false}
+\define@boolkey+{\@classname.cls}[@ACM@]{authorversion}[true]{%
+ \if@ACM@authorversion
+ \PackageInfo{\@classname}{Using authorversion mode}%
+ \else
+ \PackageInfo{\@classname}{Not using authorversion mode}%
+ \fi}{\PackageError{\@classname}{The option authorversion can be either true or
+ false}}
+\ExecuteOptionsX{authorversion=false}
+\define@boolkey+{\@classname.cls}[@ACM@]{nonacm}[true]{%
+ \if@ACM@nonacm
+ \PackageInfo{\@classname}{Using nonacm mode}%
+ \AtBeginDocument{\@ACM@printacmreffalse}%
+ % in 'nonacm' mode we disable the "ACM Reference Format"
+ % printing by default, but this can be re-enabled by the
+ % user using \settopmatter{printacmref=true}
+ \else
+ \PackageInfo{\@classname}{Not using nonacm mode}%
+ \fi}{\PackageError{\@classname}{The option nonacm can be either true or
+ false}}
+\ExecuteOptionsX{nonacm=false}
+\define@boolkey+{\@classname.cls}[@ACM@]{balance}[true]{}{%
+ \PackageError{\@classname}{The option balance can be either true or
+ false}}
+\ExecuteOptionsX{balance}
+\define@boolkey+{\@classname.cls}[@ACM@]{pbalance}[true]{}{%
+ \PackageError{\@classname}{The option pbalance can be either true or
+ false}}
+\ExecuteOptionsX{pbalance=false}
+\define@boolkey+{\@classname.cls}[@ACM@]{natbib}[true]{%
+ \if@ACM@natbib
+ \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
+ \else
+ \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
+ \fi}{\PackageError{\@classname}{The option natbib can be either true or
+ false}}
+\ExecuteOptionsX{natbib=true}
+\define@boolkey+{\@classname.cls}[@ACM@]{anonymous}[true]{%
+ \if@ACM@anonymous
+ \PackageInfo{\@classname}{Using anonymous mode}%
+ \else
+ \PackageInfo{\@classname}{Not using anonymous mode}%
+ \fi}{\PackageError{\@classname}{The option anonymous can be either true or
+ false}}
+\ExecuteOptionsX{anonymous=false}
+\define@boolkey+{\@classname.cls}[@ACM@]{timestamp}[true]{%
+ \if@ACM@timestamp
+ \PackageInfo{\@classname}{Using timestamp mode}%
+ \else
+ \PackageInfo{\@classname}{Not using timestamp mode}%
+ \fi}{\PackageError{\@classname}{The option timestamp can be either true or
+ false}}
+\ExecuteOptionsX{timestamp=false}
+\define@boolkey+{\@classname.cls}[@ACM@]{authordraft}[true]{%
+ \if@ACM@authordraft
+ \PackageInfo{\@classname}{Using authordraft mode}%
+ \@ACM@timestamptrue
+ \@ACM@reviewtrue
+ \else
+ \PackageInfo{\@classname}{Not using authordraft mode}%
+ \fi}{\PackageError{\@classname}{The option authordraft can be either true or
+ false}}
+\ExecuteOptionsX{authordraft=false}
+\def\ACM@fontsize{}
+\DeclareOptionX{8pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
+\def\ACM@languages{}
+\DeclareOptionX{language}{%
+ \ifx\ACM@languages\@empty
+ \gdef\ACM@languages{english}\fi
+ \g@addto@macro\ACM@languages{, #1}}
+\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
+\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
+\ProcessOptionsX
+\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
+\newif\if@ACM@manuscript
+\newif\if@ACM@journal
+\newif\if@ACM@journal@bibstrip
+\newif\if@ACM@journal@bibstrip@or@tog
+\newif\if@ACM@sigchiamode
+\newif\if@ACM@engage
+\@ACM@engagefalse
+\newif\if@ACM@acmcp
+\@ACM@acmcpfalse
+\ifnum\ACM@format@nr=5\relax % siggraph
+\ClassWarning{\@classname}{%
+ The format siggraph is now obsolete.\MessageBreak
+ I am switching to sigconf.}
+ \setkeys{\@classname.cls}{format=sigconf}
+\fi
+\ifnum\ACM@format@nr=7\relax % sigchi
+\ClassWarning{\@classname}{%
+ The format sigchi is now obsolete.\MessageBreak
+ I am switching to sigconf.}
+ \setkeys{\@classname.cls}{format=sigconf}
+\fi
+\ifnum\ACM@format@nr=8\relax % sigchi
+\ClassWarning{\@classname}{%
+ ACM SIGCHI has retired the SIGCHI-A template\MessageBreak
+ effective immediately. ACM is keeping this template\MessageBreak
+ option available to authors who are working on legacy\MessageBreak
+ documents only. ACM will not, under any circumstances,\MessageBreak
+ accept documents in this format for publication and\MessageBreak
+ will not offer technical support to the authors who use\MessageBreak
+ this template.\MessageBreak
+ ACM SIGCHI is directing Conference leaders and\MessageBreak
+ authors to publish their articles using the SIGCONF\MessageBreak
+ template call.}
+\fi
+\ifnum\ACM@format@nr=0\relax
+ \@ACM@manuscripttrue
+\else
+ \@ACM@manuscriptfalse
+\fi
+\@ACM@sigchiamodefalse
+\ifcase\ACM@format@nr
+\relax % manuscript
+ \@ACM@journaltrue
+\or % acmsmall
+ \@ACM@journaltrue
+\or % acmlarge
+ \@ACM@journaltrue
+\or % acmtog
+ \@ACM@journaltrue
+ \@ACM@journal@bibstrip@or@togtrue
+\or % sigconf
+ \@ACM@journalfalse
+\or % siggraph
+ \@ACM@journalfalse
+ \or % sigplan
+ \@ACM@journalfalse
+ \or % sigchi
+ \@ACM@journalfalse
+\or % sigchi-a
+ \@ACM@journalfalse
+ \@ACM@sigchiamodetrue
+\or % acmengage
+ \@ACM@journalfalse
+ \@ACM@engagetrue
+\or % acmcp
+ \@ACM@journaltrue
+ \@ACM@acmcptrue
+ \AtBeginDocument{\@ACM@printacmreffalse}%
+\fi
+\if@ACM@journal
+ \@ACM@journal@bibstriptrue
+ \@ACM@journal@bibstrip@or@togtrue
+\else
+ \@ACM@journal@bibstripfalse
+\fi
+\let\@startsection@kernel\@startsection
+\let\@xsect@kernel\@xsect
+\let\@sect@kernel\@sect
+\let\@ssect@kernel\@ssect
+\ifx\ACM@fontsize\@empty
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \def\ACM@fontsize{9pt}%
+ \or % acmsmall
+ \def\ACM@fontsize{10pt}%
+ \or % acmlarge
+ \def\ACM@fontsize{10pt}%
+ \or % acmtog
+ \def\ACM@fontsize{9pt}%
+ \or % sigconf
+ \def\ACM@fontsize{9pt}%
+ \or % siggraph
+ \def\ACM@fontsize{9pt}%
+ \or % sigplan
+ \def\ACM@fontsize{10pt}%
+ \or % sigchi
+ \def\ACM@fontsize{9pt}%
+ \or % sigchi-a
+ \def\ACM@fontsize{10pt}%
+ \or % acmengage
+ \def\ACM@fontsize{10pt}%
+ \or % acmcp
+ \def\ACM@fontsize{9pt}%
+ \fi
+\fi
+\ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
+\LoadClass[\ACM@fontsize, reqno]{amsart}
+\RequirePackage{microtype}
+\RequirePackage{etoolbox}
+\RequirePackage{booktabs}
+\RequirePackage{refcount}
+\RequirePackage{totpages}
+\RequirePackage{environ}
+\if@ACM@manuscript
+\RequirePackage{setspace}
+\onehalfspacing
+\fi
+\RequirePackage{textcase}
+\if@ACM@acmcp
+\RequirePackage{framed}
+\RequirePackage{zref-savepos, zref-user}
+\fi
+\newdimen\@ACM@acmcp@delta
+\@ACM@acmcp@delta=0pt\relax
+\if@ACM@natbib
+ \RequirePackage{natbib}
+ \renewcommand{\bibsection}{%
+ \section*{\refname}%
+ \phantomsection\addcontentsline{toc}{section}{\refname}%
+ }
+ \renewcommand{\bibfont}{\bibliofont}
+ \renewcommand\setcitestyle[1]{
+ \@for\@tempa:=#1\do
+ {\def\@tempb{round}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
+ \def\@tempb{square}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
+ \def\@tempb{angle}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
+ \def\@tempb{curly}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
+ \def\@tempb{semicolon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{colon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{comma}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{,}\fi
+ \def\@tempb{authoryear}\ifx\@tempa\@tempb
+ \NAT@numbersfalse\fi
+ \def\@tempb{numbers}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@superfalse\fi
+ \def\@tempb{super}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@supertrue\fi
+ \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
+ \let\bibstyle=\@gobble\fi
+ \def\@tempb{bibstyle}\ifx\@tempa\@tempb
+ \let\bibstyle=\@citestyle\fi
+ \def\@tempb{sort}\ifx\@tempa\@tempb
+ \def\NAT@sort{\@ne}\fi
+ \def\@tempb{nosort}\ifx\@tempa\@tempb
+ \def\NAT@sort{\z@}\fi
+ \def\@tempb{compress}\ifx\@tempa\@tempb
+ \def\NAT@cmprs{\@ne}\fi
+ \def\@tempb{nocompress}\ifx\@tempa\@tempb
+ \def\NAT@cmprs{\z@}\fi
+ \def\@tempb{sort&compress}\ifx\@tempa\@tempb
+ \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
+ \def\@tempb{mcite}\ifx\@tempa\@tempb
+ \let\NAT@merge\@ne\fi
+ \def\@tempb{merge}\ifx\@tempa\@tempb
+ \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
+ \def\@tempb{elide}\ifx\@tempa\@tempb
+ \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
+ \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
+ \NAT@longnamestrue\fi
+ \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
+ \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
+ \expandafter\NAT@find@eq\@tempa=\relax\@nil
+ \if\@tempc\relax\else
+ \expandafter\NAT@rem@eq\@tempc
+ \def\@tempb{open}\ifx\@tempa\@tempb
+ \xdef\NAT@open{\@tempc}\fi
+ \def\@tempb{close}\ifx\@tempa\@tempb
+ \xdef\NAT@close{\@tempc}\fi
+ \def\@tempb{aysep}\ifx\@tempa\@tempb
+ \xdef\NAT@aysep{\@tempc}\fi
+ \def\@tempb{yysep}\ifx\@tempa\@tempb
+ \xdef\NAT@yrsep{\@tempc}\fi
+ \def\@tempb{notesep}\ifx\@tempa\@tempb
+ \xdef\NAT@cmt{\@tempc}\fi
+ \def\@tempb{citesep}\ifx\@tempa\@tempb
+ \xdef\NAT@sep{\@tempc}\fi
+ \fi
+ }%
+ \NAT@@setcites
+ }
+ \renewcommand\citestyle[1]{%
+ \ifcsname bibstyle@#1\endcsname%
+ \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
+ \else%
+ \@latex@error{Undefined `#1' citestyle}%
+ \fi
+ }%
+\fi
+\newcommand{\bibstyle@acmauthoryear}{%
+ \setcitestyle{%
+ authoryear,%
+ open={[},close={]},citesep={;},%
+ aysep={},yysep={,},%
+ notesep={, }}}
+\newcommand{\bibstyle@acmnumeric}{%
+ \setcitestyle{%
+ numbers,sort&compress,%
+ open={[},close={]},citesep={,},%
+ notesep={, }}}
+\if@ACM@natbib
+\citestyle{acmnumeric}
+\fi
+\if@ACM@journal
+ \renewcommand\keywordsname{Additional Key Words and Phrases}%
+\else
+ \renewcommand\keywordsname{Keywords}%
+\fi
+\if@ACM@engage
+ \renewcommand\abstractname{Synopsis}%
+\fi
+\ifx\ACM@languages\@empty
+\else
+ \RequirePackage[\ACM@languages]{babel}%
+ \addto\captionsenglish{%
+ \if@ACM@journal
+ \renewcommand\keywordsname{Additional Key Words and Phrases}%
+ \else
+ \renewcommand\keywordsname{Keywords}%
+ \fi
+ \renewcommand\acksname{Acknowledgements}%
+ \if@ACM@engage
+ \renewcommand\abstractname{Synopsis}%
+ \fi
+ }%
+ \addto\captionsfrench{%
+ \if@ACM@journal
+ \renewcommand\keywordsname{Mots Clés et Phrases Supplémentaires}%
+ \else
+ \renewcommand\keywordsname{Mots clés}%
+ \fi
+ \renewcommand\acksname{Remerciements}%
+ }%
+ \addto\captionsgerman{%
+ \if@ACM@journal
+ \renewcommand\keywordsname{Zusätzliche Schlagwörter und Phrasen}%
+ \else
+ \renewcommand\keywordsname{Schlagwörter}%
+ \fi
+ \renewcommand\acksname{Danksagungen}%
+ }%
+ \addto\captionsspanish{%
+ \if@ACM@journal
+ \renewcommand\keywordsname{Palabras y Frases Claves Adicionales}%
+ \else
+ \renewcommand\keywordsname{Palabras claves}%
+ \fi
+ \renewcommand\acksname{Expresiones de gratitud}%
+ }%
+\fi
+\newcommand\ACM@lang@check[1]{%
+ \ifx\ACM@languages\@empty\relax
+ \ClassError{\@classname}{%
+ Command \string#1 \MessageBreak is used in monlingual document}{%
+ You used a command (\string#1) \MessageBreak
+ that does not have a meaning \MessageBreak
+ unless are languages are defined. \MessageBreak
+ Please choose the languages in \string\documentclass
+ \MessageBreak
+ (e.g. \string\documentclass[languages={french, english}]{acmart}),
+ \MessageBreak
+ or delete the command.}%
+ \fi}
+\def\@translatedtitle{}
+\newcommand\translatedtitle[2]{\ACM@lang@check{\translatedtitle}%
+\g@addto@macro\@translatedtitle{\par\foreignlanguage{#1}{#2}}}
+\def\@translatedsubtitle{}
+\newcommand\translatedsubtitle[2]{\ACM@lang@check{\translatedsubtitle}%
+\g@addto@macro\@translatedsubtitle{\par\foreignlanguage{#1}{#2}}}
+\def\@translatedkeywords{}
+\newcommand\translatedkeywords[2]{\ACM@lang@check{\translatedkeywords}%
+\g@addto@macro\@translatedkeywords{\@mktranslatedkeywords{#1}{#2}}}
+\def\@translatedabstracts{}
+\newenvironment{translatedabstract}[1]{\Collect@Body
+ \@savetranslatedabstract\@mktranslatedabstract{#1}}{}
+\long\def\@savetranslatedabstract#1{\if@ACM@maketitle@typeset
+ \ClassError{\@classname}{Abstract must be defined before maketitle
+ command. Please move it!}\fi
+ \ACM@lang@check{translatedabstract}%
+ \g@addto@macro\@translatedabstracts{\bgroup#1\egroup}}
+\let\@startsection\@startsection@kernel
+\let\@sect\@sect@kernel
+\let\@ssect\@ssect@kernel
+\let\@xsect\@xsect@kernel
+\def\@seccntformat#1{\csname the#1\endcsname\quad}
+\def\@starttoc#1#2{\begingroup\makeatletter
+ \setTrue{#1}%
+ \par\removelastskip\vskip\z@skip
+ \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
+ {.5\linespacing}{\centering\contentsnamefont}{#2}%
+\@starttoc@cfgpoint@before{#1}%NEW<<<<<<<<<< (name will change)
+ \@input{\jobname.#1}%
+\@starttoc@cfgpoint@after{#1}%NEW<<<<<<<<<<<< (name will change)
+ \if@filesw
+ \@xp\newwrite\csname tf@#1\endcsname
+ \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
+ \fi
+ \global\@nobreakfalse \endgroup
+ \addvspace{32\p@\@plus14\p@}%
+}
+\def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}
+\def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}
+\def\l@subsubsection{\@tocline{3}{0pt}{1pc}{5pc}{}}
+\def\@makefntext{\noindent\@makefnmark}
+\if@ACM@sigchiamode
+\long\def\@footnotetext#1{\marginpar{%
+ \reset@font\small
+ \interlinepenalty\interfootnotelinepenalty
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}%
+\fi
+\long\def\@mpfootnotetext#1{%
+ \global\setbox\@mpfootins\vbox{%
+ \unvbox\@mpfootins
+ \reset@font\footnotesize
+ \hsize\columnwidth
+ \@parboxrestore
+ \protected@edef\@currentlabel
+ {\csname p@mpfootnote\endcsname\@thefnmark}%
+ \color@begingroup\centering
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}
+\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
+\let\@footnotemark@nolink\@footnotemark
+\let\@footnotetext@nolink\@footnotetext
+\RequirePackage[bookmarksnumbered,unicode]{hyperref}
+\RequirePackage{hyperxmp}
+\pdfstringdefDisableCommands{%
+ \def\addtocounter#1#2{}%
+ \def\unskip{}%
+ \def\textbullet{- }%
+ \def\textrightarrow{ -> }%
+ \def\footnotemark{}%
+}
+\urlstyle{rm}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or % acmsmall
+\or % acmlarge
+\or % acmtog
+\or % sigconf
+\or % siggraph
+\or % sigplan
+ \urlstyle{sf}
+\or % sigchi
+\or % sigchi-a
+ \urlstyle{sf}
+\or % acmengage
+\or % acmcp
+\fi
+\AtEndPreamble{%
+ \if@ACM@urlbreakonhyphens
+ \def\do@url@hyp{\do\-}%
+ \fi
+ \if@ACM@screen
+ \hypersetup{colorlinks,
+ linkcolor=ACMPurple,
+ citecolor=ACMPurple,
+ urlcolor=ACMDarkBlue,
+ filecolor=ACMDarkBlue}
+ \else
+ \hypersetup{hidelinks}
+ \fi
+ \hypersetup{pdflang={en},
+ pdfdisplaydoctitle}}
+\if@ACM@natbib
+ \let\citeN\cite
+ \let\cite\citep
+ \let\citeANP\citeauthor
+ \let\citeNN\citeyearpar
+ \let\citeyearNP\citeyear
+ \let\citeNP\citealt
+ \DeclareRobustCommand\citeA
+ {\begingroup\NAT@swafalse
+ \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
+ \providecommand\newblock{}%
+\else
+ \AtBeginDocument{%
+ \let\shortcite\cite%
+ \providecommand\citename[1]{#1}}
+\fi
+\newcommand\shortcite[2][]{%
+ \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi}
+\def\bibliographystyle#1{%
+ \ifx\@begindocumenthook\@undefined\else
+ \expandafter\AtBeginDocument
+ \fi
+ {\if@filesw
+ \immediate\write\@auxout{\string\bibstyle{#1}}%
+ \fi}}
+\RequirePackage{graphicx}
+\RequirePackage[prologue]{xcolor}
+\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
+\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
+\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
+\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
+\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
+\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
+\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
+\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
+\if@ACM@authordraft
+ \RequirePackage{draftwatermark}
+ \SetWatermarkFontSize{0.5in}
+ \SetWatermarkColor[gray]{.9}
+ \SetWatermarkText{\parbox{12em}{\centering
+ Unpublished working draft.\\
+ Not for distribution.}}
+\else
+ \if@ACM@sigchiamode
+ \if@ACM@nonacm\else
+ \RequirePackage{draftwatermark}
+ \SetWatermarkFontSize{0.5in}
+ \SetWatermarkColor[gray]{.9}
+ \SetWatermarkText{\parbox{12em}{\centering
+ Legacy document. \\
+ Not for publication in an ACM venue}}
+ \fi
+ \fi
+\fi
+\RequirePackage{geometry}
+\ifcase\ACM@format@nr
+\relax % manuscript
+ \geometry{letterpaper,head=13pt,
+ marginparwidth=6pc,heightrounded}%
+\or % acmsmall
+ \geometry{twoside=true,
+ includeheadfoot, head=13pt, foot=2pc,
+ paperwidth=6.75in, paperheight=10in,
+ top=58pt, bottom=44pt, inner=46pt, outer=46pt,
+ marginparwidth=2pc,heightrounded
+ }%
+\or % acmlarge
+ \geometry{twoside=true, head=13pt, foot=2pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot,
+ top=78pt, bottom=114pt, inner=81pt, outer=81pt,
+ marginparwidth=4pc,heightrounded
+ }%
+\or % acmtog
+ \geometry{twoside=true, head=13pt, foot=2pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=24pt,
+ top=52pt, bottom=75pt, inner=52pt, outer=52pt,
+ marginparwidth=2pc,heightrounded
+ }%
+\or % sigconf
+ \geometry{twoside=true, head=13pt,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt,
+ marginparwidth=2pc,heightrounded
+ }%
+\or % siggraph
+ \geometry{twoside=true, head=13pt,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt,
+ marginparwidth=2pc,heightrounded
+ }%
+\or % sigplan
+ \geometry{twoside=true, head=13pt,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot=false, columnsep=2pc,
+ top=1in, bottom=1in, inner=0.75in, outer=0.75in,
+ marginparwidth=2pc,heightrounded
+ }%
+\or % sigchi
+ \geometry{twoside=true, head=13pt,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=66pt, bottom=73pt, inner=54pt, outer=54pt,
+ marginparwidth=2pc,heightrounded
+ }%
+\or % sigchi-a
+ \geometry{twoside=false, head=13pt,
+ paperwidth=11in, paperheight=8.5in,
+ includeheadfoot, marginparsep=72pt,
+ marginparwidth=170pt, columnsep=20pt,
+ top=72pt, bottom=72pt, left=314pt, right=72pt
+ }%
+ \@mparswitchfalse
+ \reversemarginpar
+\or % acmengage
+ \geometry{twoside=true, head=13pt,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt,
+ marginparwidth=2pc,heightrounded
+ }%
+\or % acmcp
+ \geometry{twoside=true,
+ includeheadfoot, head=13pt, foot=2pc,
+ paperwidth=6.75in, paperheight=10in,
+ top=58pt, bottom=44pt, inner=46pt, outer=46pt,
+ marginparwidth=2pc,heightrounded
+ }%
+\fi
+\setlength\parindent{10\p@}
+\setlength\parskip{\z@}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or % acmsmall
+\or % acmlarge
+\or % acmtog
+ \setlength\parindent{9\p@}%
+\or % sigconf
+\or % siggraph
+\or % sigplan
+\or % sigchi
+\or % sigchi-a
+\or % acmengage
+\or % acmcp
+\fi
+\setlength\normalparindent{\parindent}
+\def\copyrightpermissionfootnoterule{\kern-3\p@
+ \hrule \@width \columnwidth \kern 2.6\p@}
+\RequirePackage{manyfoot}
+\SelectFootnoteRule[2]{copyrightpermission}
+\DeclareNewFootnote{authorsaddresses}
+\SelectFootnoteRule[2]{copyrightpermission}
+\DeclareNewFootnote{copyrightpermission}
+\def\footnoterule{\kern-3\p@
+ \hrule \@width 4pc \kern 2.6\p@}
+\def\endminipage{%
+ \par
+ \unskip
+ \ifvoid\@mpfootins\else
+ \vskip\skip\@mpfootins
+ \normalcolor
+ \unvbox\@mpfootins
+ \fi
+ \@minipagefalse
+ \color@endgroup
+ \egroup
+ \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
+\def\@textbottom{\vskip \z@ \@plus 1pt}
+\let\@texttop\relax
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or % acmsmall
+\or % acmlarge
+\or % acmtog
+ \flushbottom
+\or % sigconf
+ \flushbottom
+\or % siggraph
+ \flushbottom
+\or % sigplan
+ \flushbottom
+\or % sigchi
+ \flushbottom
+\or % sigchi-a
+\or % acmengage
+ \flushbottom
+\or % acmcp
+ \flushbottom
+\fi
+\ifPDFTeX
+\input{glyphtounicode}
+\pdfglyphtounicode{f_f}{FB00}
+\pdfglyphtounicode{f_f_i}{FB03}
+\pdfglyphtounicode{f_f_l}{FB04}
+\pdfglyphtounicode{f_i}{FB01}
+\pdfglyphtounicode{t_t}{0074 0074}
+\pdfglyphtounicode{f_t}{0066 0074}
+\pdfglyphtounicode{T_h}{0054 0068}
+\pdfgentounicode=1
+\RequirePackage{cmap}
+\fi
+\newif\if@ACM@newfonts
+\@ACM@newfontstrue
+\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
+ have the libertine package installed. Please upgrade your
+ TeX}\@ACM@newfontsfalse}
+\IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
+ have the inconsolata (zi4.sty) package installed. Please upgrade your
+ TeX}\@ACM@newfontsfalse}
+\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
+ 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[tt=false]{libertine}
+ \setmonofont[StylisticSet=3]{inconsolata}
+ \else
+ \ifluatex
+ \RequirePackage[libertine]{newtxmath}
+ \RequirePackage[tt=false]{libertine}
+ \setmonofont[StylisticSet=3]{inconsolata}
+ \else
+ \RequirePackage[tt=false, type1=true]{libertine}
+ \RequirePackage[varqu]{zi4}
+ \RequirePackage[libertine]{newtxmath}
+ \fi
+ \fi
+\fi
+\let\liningnums\@undefined
+\AtEndPreamble{%
+ \DeclareTextFontCommand{\liningnums}{\libertineLF}}
+\if@ACM@sigchiamode
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+\newif\if@Description@present
+\@Description@presenttrue
+\newif\if@undescribed@images
+\@undescribed@imagesfalse
+\newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces}
+\AtEndDocument{\if@undescribed@images
+ \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi}
+\AtBeginEnvironment{figure}{\@Description@presentfalse
+ \let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{figure*}{\@Description@presentfalse
+ \let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtEndEnvironment{figure}{\if@Description@present\else
+ \global\@undescribed@imagestrue
+ \ClassWarning{\@classname}{A possible image without description}\fi}
+\AtEndEnvironment{figure*}{\if@Description@present\else
+ \global\@undescribed@imagestrue
+ \ClassWarning{\@classname}{A possible image without description}\fi}
+\AtBeginEnvironment{table}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{algorithm}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{algorithm*}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{lstlisting}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{lstlisting*}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{minted}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{minted*}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{listing}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+\AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig}
+
+\RequirePackage{caption, float}
+\captionsetup[table]{position=top}
+\if@ACM@journal
+ \captionsetup{labelfont={sf, small},
+ textfont={sf, small}, margin=\z@}
+ \captionsetup[figure]{name={Fig.}}
+\else
+ \captionsetup{labelfont={bf},
+ textfont={bf}, labelsep=colon, margin=\z@}
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \or % acmsmall
+ \or % acmlarge
+ \or % acmtog
+ \or % sigconf
+ \or % siggraph
+ \captionsetup{textfont={it}}
+ \or % sigplan
+ \captionsetup{labelfont={bf},
+ textfont={normalfont}, labelsep=period, margin=\z@}
+ \or % sigchi
+ \captionsetup[figure]{labelfont={bf, small},
+ textfont={bf, small}}
+ \captionsetup[table]{labelfont={bf, small},
+ textfont={bf, small}}
+ \or % sigchi-a
+ \captionsetup[figure]{labelfont={bf, small},
+ textfont={bf, small}}
+ \captionsetup[table]{labelfont={bf, small},
+ textfont={bf, small}}
+ \or % acmengage
+ \or % acmcp
+ \fi
+\fi
+\newfloat{sidebar}{}{sbar}
+\floatname{sidebar}{Sidebar}
+\renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
+\long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}%
+ \marginpar{\small#1}\egroup}
+\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
+\long\def\@marginfigure#1{\bgroup
+ \let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig
+ \captionsetup{type=figure}%
+ \marginpar{\@Description@presentfalse\centering
+ \small#1\if@Description@present\else
+ \global\@undescribed@imagestrue
+ \ClassWarning{\@classname}{A possible image without description}
+ \fi}%
+ \egroup}
+\newenvironment{margintable}{\Collect@Body\@margintable}{}
+\long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig\captionsetup{type=table}%
+ \marginpar{\centering\small#1}\egroup}
+\newdimen\fulltextwidth
+\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
+\if@ACM@sigchiamode
+\def\@dblfloat{\bgroup\let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth
+ \let\@endfloatbox\@endwidefloatbox
+ \def\@fpsadddefault{\def\@fps{tp}}%
+ \@float}
+\fi
+\if@ACM@sigchiamode
+\def\end@dblfloat{%
+ \end@float\egroup}
+\fi
+\def\@endwidefloatbox{%
+ \par\vskip\z@skip
+ \@minipagefalse
+ \outer@nobreak
+ \egroup
+ \color@endbox
+ \global\setbox\@currbox=\vbox{\moveleft
+ \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
+ \wd\@currbox=\textwidth
+}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or % acmsmall
+\or % acmlarge
+\or % acmtog
+\or % sigconf
+\or % siggraph
+\or % sigplan
+\def\labelenumi{\theenumi.}
+\def\labelenumii{\theenumii.}
+\def\labelenumiii{\theenumiii.}
+\def\labelenumiv{\theenumiv.}
+\or % sigchi
+\or % sigchi-a
+\or % acmengage
+\or % acmcp
+\fi
+\newdimen\@ACM@labelwidth
+\AtBeginDocument{%
+ \setlength\labelsep{4pt}
+ \setlength{\@ACM@labelwidth}{6.5pt}
+
+ %% First-level list: when beginning after the first line of an
+ %% indented paragraph or ending before an indented paragraph, labels
+ %% should not hang to the left of the preceding/following text.
+ \setlength\leftmargini{\z@}
+ \addtolength\leftmargini{\parindent}
+ \addtolength\leftmargini{2\labelsep}
+ \addtolength\leftmargini{\@ACM@labelwidth}
+
+ %% Second-level and higher lists.
+ \setlength\leftmarginii{\z@}
+ \addtolength\leftmarginii{0.5\labelsep}
+ \addtolength\leftmarginii{\@ACM@labelwidth}
+ \setlength\leftmarginiii{\leftmarginii}
+ \setlength\leftmarginiv{\leftmarginiii}
+ \setlength\leftmarginv{\leftmarginiv}
+ \setlength\leftmarginvi{\leftmarginv}
+ \@listi}
+\newskip\listisep
+\listisep\smallskipamount
+\def\@listI{\leftmargin\leftmargini
+ \labelwidth\leftmargini \advance\labelwidth-\labelsep
+ \listparindent\z@
+ \topsep\listisep}
+\let\@listi\@listI
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+ \topsep\z@skip}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
+\renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}
+\renewenvironment{description}{\list{}{%
+ \labelwidth\@ACM@labelwidth
+ \let\makelabel\descriptionlabel}%
+}{
+ \endlist
+}
+\let\enddescription=\endlist % for efficiency
+\newif\if@ACM@maketitle@typeset
+\@ACM@maketitle@typesetfalse
+\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
+ ACMJCSS,%
+ CIE,%
+ CSUR,%
+ DGOV,%
+ DLT,%
+ DTRAP,%
+ FAC,%
+ GAMES,%
+ HEALTH,%
+ IMWUT,%
+ JACM,%
+ JATS,%
+ JDIQ,%
+ JDS,%
+ JEA,%
+ JERIC,%
+ JETC,%
+ JOCCH,%
+ JRC,%
+ PACMCGIT,%
+ PACMHCI,%
+ PACMMOD,%
+ PACMNET,%
+ PACMPL,%
+ PACMSE,%
+ POMACS,%
+ TAAS,%
+ TACCESS,%
+ TACO,%
+ TALG,%
+ TALLIP,%
+ TAP,%
+ TCPS,%
+ TDS,%
+ TEAC,%
+ TECS,%
+ TELO,%
+ THRI,%
+ TIIS,%
+ TIOT,%
+ TISSEC,%
+ TIST,%
+ TKDD,%
+ TMIS,%
+ TOCE,%
+ TOCHI,%
+ TOCL,%
+ TOCS,%
+ TOCT,%
+ TODAES,%
+ TODS,%
+ TOG,%
+ TOIS,%
+ TOIT,%
+ TOMACS,%
+ TOMM,%
+ TOMPECS,%
+ TOMS,%
+ TOPC,%
+ TOPLAS,%
+ TOPML,%
+ TOPS,%
+ TORS,%
+ TOS,%
+ TOSEM,%
+ TOSN,%
+ TQC,%
+ TRETS,%
+ TSAS,%
+ TSC,%
+ TSLP,%
+ TWEB,%
+ FACMP%
+}{%
+\ifcase\@journalCode@nr
+\relax % ACMJCSS
+ \def\@journalName{ACM Journal on Computing and Sustainable Societies}%
+ \def\@journalNameShort{ACM J. Comput. Sustain. Soc.}%
+ \def\@permissionCodeOne{2834-5533}%
+ \def\@permissionCodeTwo{2834-5533}%
+\or % CIE
+ \def\@journalName{ACM Computers in Entertainment}%
+ \def\@journalNameShort{ACM Comput. Entertain.}%
+ \def\@permissionCodeOne{1544-3574}%
+\or % CSUR
+ \def\@journalName{ACM Computing Surveys}%
+ \def\@journalNameShort{ACM Comput. Surv.}%
+ \def\@permissionCodeOne{0360-0300}%
+ \def\@permissionCodeTwo{1557-7341}%
+\or % DGOV
+ \def\@journalName{Digital Government: Research and Practice}%
+ \def\@journalNameShort{Digit. Gov. Res. Pract.}%
+ \def\@permissionCodeOne{2639-0175}%
+ \def\@permissionCodeTwo{2639-0175}%
+\or % DLT
+ \def\@journalName{Distributed Ledger Technologies: Research and Practice}%
+ \def\@journalNameShort{Distrib. Ledger Technol.}%
+ \def\@permissionCodeOne{2769-6472}%
+ \def\@permissionCodeTwo{2769-6480}%
+\or % DTRAP
+ \def\@journalName{Digital Threats: Research and Practice}%
+ \def\@journalNameShort{Digit. Threat. Res. Pract.}%
+ \def\@permissionCodeOne{2576-5337}%
+ \def\@permissionCodeTwo{2576-5337}%
+\or % FAC
+ \def\@journalName{Formal Aspects of Computing}%
+ \def\@journalNameShort{Form. Asp. Comput.}%
+ \def\@permissionCodeOne{0934-5043}%
+ \def\@permissionCodeTwo{1433-299X}%
+\or % GAMES
+ \def\@journalName{ACM Games: Research and Practice}%
+ \def\@journalNameShort{ACM Games}%
+ \def\@permissionCodeOne{2832-5516}%
+ \def\@permissionCodeTwo{2832-5516}%
+\or % HEALTH
+ \def\@journalName{ACM Transactions on Computing for Healthcare}%
+ \def\@journalNameShort{ACM Trans. Comput. Healthcare}%
+ \def\@permissionCodeOne{2637-8051}%
+ \def\@permissionCodeTwo{2637-8051}%
+\or % IMWUT
+ \def\@journalName{Proceedings of the ACM on Interactive, Mobile,
+ Wearable and Ubiquitous Technologies}%
+ \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
+ \def\@permissionCodeOne{2474-9567}%
+ \def\@permissionCodeTwo{2474-9567}%
+ \@ACM@screentrue
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
+\or % JACM
+ \def\@journalName{Journal of the ACM}%
+ \def\@journalNameShort{J. ACM}%
+ \def\@permissionCodeOne{0004-5411}%
+ \def\@permissionCodeTwo{1557-735X}%
+\or % JATS
+ \def\@journalName{Journal on Autonomous Transportation Systems}%
+ \def\@journalNameShort{ACM J. Auton. Transport. Syst.}%
+ \def\@permissionCodeOne{2833-0528}%
+ \def\@permissionCodeTwo{2833-0528}%
+\or % JDIQ
+ \def\@journalName{ACM Journal of Data and Information Quality}%
+ \def\@journalNameShort{ACM J. Data Inform. Quality}%
+ \def\@permissionCodeOne{1936-1955}%
+ \def\@permissionCodeTwo{1936-1963}%
+\or % JDS
+ \def\@journalName{ACM/IMS Journal of Data Science}%
+ \def\@journalNameShort{ACM/IMS J. Data Sci.}%
+ \def\@permissionCodeOne{2831-3194}%
+ \def\@permissionCodeTwo{2831-3194}%
+\or % JEA
+ \def\@journalName{ACM Journal of Experimental Algorithmics}%
+ \def\@journalNameShort{ACM J. Exp. Algor.}%
+ \def\@permissionCodeOne{1084-6654}%
+ \def\@permissionCodeTwo{1084-6654}%
+\or % JERIC
+ \def\@journalName{ACM Journal of Educational Resources in Computing}%
+ \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
+ \def\@permissionCodeOne{1073-0516}%
+\or % JETC
+ \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
+ \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
+ \def\@permissionCodeOne{1550-4832}%
+ \def\@permissionCodeTwo{1550-4840}%
+\or % JOCCH
+ \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
+ \def\@journalNameShort{ACM J. Comput. Cult. Herit.}%
+ \def\@permissionCodeOne{1556-4673}%
+ \def\@permissionCodeTwo{1556-4711}%
+\or % JRC
+ \def\@journalName{ACM Journal on Responsible Computing}%
+ \def\@journalNameShort{ACM J. Responsib. Comput.}%
+ \def\@permissionCodeOne{2832-0565}%
+ \def\@permissionCodeTwo{2832-0565}%
+\or % PACMCGIT
+ \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}%
+ \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}%
+ \def\@permissionCodeOne{2577-6193}%
+ \def\@permissionCodeTwo{2577-6193}%
+ \@ACM@screentrue
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
+\or % PACMHCI
+ \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
+ \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}%
+ \def\@permissionCodeOne{2573-0142}%
+ \def\@permissionCodeTwo{2573-0142}%
+ \@ACM@screentrue
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
+\or % PACMMOD
+ \def\@journalName{Proceedings of the ACM on Management of Data}%
+ \def\@journalNameShort{Proc. ACM Manag. Data}%
+ \def\@permissionCodeOne{2836-6573}%
+ \def\@permissionCodeTwo{2836-6573}%
+\or % PACMNET
+ \def\@journalName{Proceedings of the ACM on Networkng}%
+ \def\@journalNameShort{Proc. ACM Netw.}%
+ \def\@permissionCodeOne{2834-5509}%
+ \def\@permissionCodeTwo{2834-5509}%
+\or % PACMPL
+ \def\@journalName{Proceedings of the ACM on Programming Languages}%
+ \def\@journalNameShort{Proc. ACM Program. Lang.}%
+ \def\@permissionCodeOne{2475-1421}%
+ \def\@permissionCodeTwo{2475-1421}%
+ \@ACM@screentrue
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
+\or % PACMSE
+ \def\@journalName{Proceedings of the ACM on Software Engineering}%
+ \def\@journalNameShort{Proc. ACM Softw. Eng.}%
+ \def\@permissionCodeOne{2994-970X}%
+ \def\@permissionCodeTwo{2994-970X}%
+ \@ACM@screentrue
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
+\or % POMACS
+ \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
+ \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
+ \def\@permissionCodeOne{2476-1249}%
+ \def\@permissionCodeTwo{2476-1249}%
+ \@ACM@screentrue
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
+\or % TAAS
+ \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
+ \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
+ \def\@permissionCodeOne{1556-4665}%
+ \def\@permissionCodeTwo{1556-4703}%
+\or % TACCESS
+ \def\@journalName{ACM Transactions on Accessible Computing}%
+ \def\@journalNameShort{ACM Trans. Access. Comput.}%
+ \def\@permissionCodeOne{1936-7228}%
+ \def\@permissionCodeTwo{1936-7236}%
+\or % TACO
+ \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
+ \def\@journalNameShort{ACM Trans. Arch. Code Optim.}%
+ \def\@permissionCodeOne{1544-3566}%
+ \def\@permissionCodeTwo{1544-3973}%
+\or % TALG
+ \def\@journalName{ACM Transactions on Algorithms}%
+ \def\@journalNameShort{ACM Trans. Algor.}%
+ \def\@permissionCodeOne{1549-6325}%
+ \def\@permissionCodeTwo{1549-6333}%
+\or % TALLIP
+ \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
+ \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
+ \def\@permissionCodeOne{2375-4699}%
+ \def\@permissionCodeTwo{2375-4702}%
+\or % TAP
+ \def\@journalName{ACM Transactions on Applied Perception}%
+ \def\@journalNameShort{ACM Trans. Appl. Percept.}%
+ \def\@permissionCodeOne{1544-3558}%
+ \def\@permissionCodeTwo{1544-3965}%
+\or % TCPS
+ \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
+ \def\@journalNameShort{ACM Trans. Cyber-Phys. Syst.}%
+ \def\@permissionCodeOne{2378-962X}%
+ \def\@permissionCodeTwo{2378-9638}%
+\or % TDS
+ \def\@journalName{ACM/IMS Transactions on Data Science}%
+ \def\@journalNameShort{ACM/IMS Trans. Data Sci.}%
+ \def\@permissionCodeOne{2577-3224}%
+\or % TEAC
+ \def\@journalName{ACM Transactions on Economics and Computation}%
+ \def\@journalNameShort{ACM Trans. Econ. Comput.}%
+ \def\@permissionCodeOne{2167-8375}%
+ \def\@permissionCodeTwo{2167-8383}%
+\or % TECS
+ \def\@journalName{ACM Transactions on Embedded Computing Systems}%
+ \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
+ \def\@permissionCodeOne{1539-9087}%
+ \def\@permissionCodeTwo{1558-3465}%
+\or % TELO
+ \def\@journalName{ACM Transactions on Evolutionary Learning and Optimization}%
+ \def\@journalNameShort{ACM Trans. Evol. Learn. Optim.}%
+ \def\@permissionCodeOne{2688-299X}%
+ \def\@permissionCodeTwo{2688-3007}%
+\or % THRI
+ \def\@journalName{ACM Transactions on Human-Robot Interaction}%
+ \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
+ \def\@permissionCodeOne{2573-9522}%
+ \def\@permissionCodeTwo{2573-9522}%
+\or % TIIS
+ \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
+ \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
+ \def\@permissionCodeOne{2160-6455}%
+ \def\@permissionCodeTwo{2160-6463}%
+\or % TIOT
+ \def\@journalName{ACM Transactions on Internet of Things}%
+ \def\@journalNameShort{ACM Trans. Internet Things}%
+ \def\@permissionCodeOne{2577-6207}%
+ \def\@permissionCodeTwo{2577-6207}%
+\or % TISSEC
+ \def\@journalName{ACM Transactions on Information and System Security}%
+ \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
+ \def\@permissionCodeOne{1094-9224}%
+\or % TIST
+ \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
+ \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
+ \def\@permissionCodeOne{2157-6904}%
+ \def\@permissionCodeTwo{2157-6912}%
+\or % TKDD
+ \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
+ \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
+ \def\@permissionCodeOne{1556-4681}%
+ \def\@permissionCodeTwo{1556-472X}%
+\or % TMIS
+ \def\@journalName{ACM Transactions on Management Information Systems}%
+ \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
+ \def\@permissionCodeOne{2158-656X}%
+ \def\@permissionCodeTwo{2158-6578}%
+\or % TOCE
+ \def\@journalName{ACM Transactions on Computing Education}%
+ \def\@journalNameShort{ACM Trans. Comput. Educ.}%
+ \def\@permissionCodeOne{1946-6226}%
+ \def\@permissionCodeTwo{1946-6226}%
+\or % TOCHI
+ \def\@journalName{ACM Transactions on Computer-Human Interaction}%
+ \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
+ \def\@permissionCodeOne{1073-0516}%
+ \def\@permissionCodeTwo{1557-7325}%
+\or % TOCL
+ \def\@journalName{ACM Transactions on Computational Logic}%
+ \def\@journalNameShort{ACM Trans. Comput. Logic}%
+ \def\@permissionCodeOne{1529-3785}%
+ \def\@permissionCodeTwo{1557-945X}%
+\or % TOCS
+ \def\@journalName{ACM Transactions on Computer Systems}%
+ \def\@journalNameShort{ACM Trans. Comput. Syst.}%
+ \def\@permissionCodeOne{0734-2071}%
+ \def\@permissionCodeTwo{1557-7333}%
+\or % TOCT
+ \def\@journalName{ACM Transactions on Computation Theory}%
+ \def\@journalNameShort{ACM Trans. Comput. Theory}%
+ \def\@permissionCodeOne{1942-3454}%
+ \def\@permissionCodeTwo{1942-3462}%
+\or % TODAES
+ \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
+ \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
+ \def\@permissionCodeOne{1084-4309}%
+ \def\@permissionCodeTwo{1557-7309}%
+\or % TODS
+ \def\@journalName{ACM Transactions on Database Systems}%
+ \def\@journalNameShort{ACM Trans. Datab. Syst.}%
+ \def\@permissionCodeOne{0362-5915}%
+ \def\@permissionCodeTwo{1557-4644}%
+\or % TOG
+ \def\@journalName{ACM Transactions on Graphics}%
+ \def\@journalNameShort{ACM Trans. Graph.}%
+ \def\@permissionCodeOne{0730-0301}%
+ \def\@permissionCodeTwo{1557-7368}%
+\or % TOIS
+ \def\@journalName{ACM Transactions on Information Systems}%
+ \def\@journalNameShort{ACM Trans. Inf. Syst.}%
+ \def\@permissionCodeOne{1046-8188}%
+ \def\@permissionCodeTwo{1558-2868}%
+\or % TOIT
+ \def\@journalName{ACM Transactions on Internet Technology}%
+ \def\@journalNameShort{ACM Trans. Internet Technol.}%
+ \def\@permissionCodeOne{1533-5399}%
+ \def\@permissionCodeTwo{1557-6051}%
+\or % TOMACS
+ \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
+ \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
+ \def\@permissionCodeOne{1049-3301}%
+ \def\@permissionCodeTwo{1558-1195}%
+\or % TOMM
+ \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
+ \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
+ \def\@permissionCodeOne{1551-6857}%
+ \def\@permissionCodeTwo{1551-6865}%
+\or % TOMPECS
+ \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
+ \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
+ \def\@permissionCodeOne{2376-3639}%
+ \def\@permissionCodeTwo{2376-3647}%
+\or % TOMS
+ \def\@journalName{ACM Transactions on Mathematical Software}%
+ \def\@journalNameShort{ACM Trans. Math. Softw.}%
+ \def\@permissionCodeOne{0098-3500}%
+ \def\@permissionCodeTwo{1557-7295}%
+\or % TOPC
+ \def\@journalName{ACM Transactions on Parallel Computing}%
+ \def\@journalNameShort{ACM Trans. Parallel Comput.}%
+ \def\@permissionCodeOne{2329-4949}%
+ \def\@permissionCodeTwo{2329-4957}%
+\or % TOPLAS
+ \def\@journalName{ACM Transactions on Programming Languages and Systems}%
+ \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
+ \def\@permissionCodeOne{0164-0925}%
+ \def\@permissionCodeTwo{1558-4593}%
+\or % TOPML
+ \def\@journalName{ACM Transactions on Probabilistic Machine Learning}%
+ \def\@journalNameShort{ACM Trans. Probab. Mach. Learn.}%
+ \def\@permissionCodeOne{2836-8924}%
+ \def\@permissionCodeTwo{2836-8924}%
+\or % TOPS
+ \def\@journalName{ACM Transactions on Privacy and Security}%
+ \def\@journalNameShort{ACM Trans. Priv. Sec.}%
+ \def\@permissionCodeOne{2471-2566}%
+ \def\@permissionCodeTwo{2471-2574}%
+\or % TORS
+ \def\@journalName{ACM Transactions on Recommender Systems}%
+ \def\@journalNameShort{ACM Trans. Recomm. Syst.}%
+ \def\@permissionCodeOne{2770-6699}%
+ \def\@permissionCodeTwo{2770-6699}%
+\or % TOS
+ \def\@journalName{ACM Transactions on Storage}%
+ \def\@journalNameShort{ACM Trans. Storage}%
+ \def\@permissionCodeOne{1553-3077}%
+ \def\@permissionCodeTwo{1553-3093}%
+\or % TOSEM
+ \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
+ \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
+ \def\@permissionCodeOne{1049-331X}%
+ \def\@permissionCodeTwo{1557-7392}%
+\or % TOSN
+ \def\@journalName{ACM Transactions on Sensor Networks}%
+ \def\@journalNameShort{ACM Trans. Sensor Netw.}%
+ \def\@permissionCodeOne{1550-4859}%
+ \def\@permissionCodeTwo{1550-4867}%
+\or % TQC
+ \def\@journalName{ACM Transactions on Quantum Computing}%
+ \def\@journalNameShort{ACM Trans. Quantum Comput.}%
+ \def\@permissionCodeOne{2643-6817}%
+ \def\@permissionCodeTwo{2643-6817}%
+\or % TRETS
+ \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
+ \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
+ \def\@permissionCodeOne{1936-7406}%
+ \def\@permissionCodeTwo{1936-7414}%
+\or % TSAS
+ \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
+ \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
+ \def\@permissionCodeOne{2374-0353}%
+ \def\@permissionCodeTwo{2374-0361}%
+\or % TSC
+ \def\@journalName{ACM Transactions on Social Computing}%
+ \def\@journalNameShort{ACM Trans. Soc. Comput.}%
+ \def\@permissionCodeOne{2469-7818}%
+ \def\@permissionCodeTwo{2469-7826}%
+\or % TSLP
+ \def\@journalName{ACM Transactions on Speech and Language Processing}%
+ \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
+ \def\@permissionCodeOne{1550-4875}%
+ \def\@permissionCodeTwo{2329-9304}%
+\or % TWEB
+ \def\@journalName{ACM Transactions on the Web}%
+ \def\@journalNameShort{ACM Trans. Web}%
+ \def\@permissionCodeOne{1559-1131}%
+ \def\@permissionCodeTwo{1559-114X}%
+\else % FACMP, a dummy journal
+ \def\@journalName{ACM Just Accepted}%
+ \def\@journalNameShort{ACM Accepted}%
+ \def\@permissionCodeOne{XXXX-XXXX}%
+\fi
+\ClassInfo{\@classname}{Using journal code \@journalCode}%
+}{%
+ \ClassError{\@classname}{Incorrect journal #1}%
+}%
+\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}%
+ \global\@ACM@journal@bibstriptrue
+ \global\@ACM@journal@bibstrip@or@togtrue}
+\def\@journalCode@nr{0}
+\def\@journalName{}%
+\def\@journalNameShort{\@journalName}%
+\def\@permissionCodeOne{XXXX-XXXX}%
+\def\@permissionCodeTwo{\@permissionCodeOne}%
+\newcommand\acmConference[4][]{%
+ \gdef\acmConference@shortname{#1}%
+ \gdef\acmConference@name{#2}%
+ \gdef\acmConference@date{#3}%
+ \gdef\acmConference@venue{#4}%
+ \ifx\acmConference@shortname\@empty
+ \gdef\acmConference@shortname{#2}%
+ \fi
+ \global\@ACM@journal@bibstripfalse
+ \ifx\@acmBooktitle\@empty\relax
+ \acmBooktitle{Proceedings of \acmConference@name
+ \ifx\acmConference@name\acmConference@shortname\else
+ \ (\acmConference@shortname)\fi}%
+ \fi
+}
+\if@ACM@journal\else
+\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
+ DC, USA}%
+\fi
+\def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
+\acmBooktitle{}
+\def\@editorsAbbrev{(Ed.)}
+\def\@acmEditors{}
+\def\editor#1{\ifx\@acmEditors\@empty
+ \gdef\@acmEditors{#1}%
+ \else
+ \gdef\@editorsAbbrev{(Eds.)}%
+ \g@addto@macro\@acmEditors{\and#1}%
+\fi}
+\def\subtitle#1{\def\@subtitle{#1}}
+\subtitle{}
+\newcount\num@authorgroups
+\num@authorgroups=0\relax
+\newcount\num@authors
+\num@authors=0\relax
+\newif\if@insideauthorgroup
+\@insideauthorgroupfalse
+\renewcommand\author[2][]{%
+ \IfSubStr{\detokenize{#2}}{,}{\ClassWarning{\@classname}{Do not put several
+ authors in the same \string\author\space macro!}}{}%
+ \global\advance\num@authors by 1\relax
+ \if@insideauthorgroup\else
+ \global\advance\num@authorgroups by 1\relax
+ \global\@insideauthorgrouptrue
+ \fi
+ \ifx\addresses\@empty
+ \if@ACM@anonymous
+ \gdef\addresses{\@author{Anonymous Author(s)%
+ \ifx\@acmSubmissionID\@empty\else\\Submission Id:
+ \@acmSubmissionID\fi}}%
+ \gdef\authors{Anonymous Author(s)}%
+ \else
+ \expandafter\gdef\expandafter\addresses\expandafter{%
+ \expandafter\@author\expandafter{%
+ \csname typeset@author\the\num@authors\endcsname{#2}}}%
+ \gdef\authors{#2}%
+ \fi
+ \else
+ \if@ACM@anonymous\else
+ \expandafter\g@addto@macro\expandafter\addresses\expandafter{%
+ \expandafter\and\expandafter\@author\expandafter{%
+ \csname typeset@author\the\num@authors\endcsname{#2}}}%
+ \g@addto@macro\authors{\and#2}%
+ \fi
+ \fi
+ \if@ACM@anonymous
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{Anon.
+ \ifx\@acmSubmissionID\@empty\else Submission Id:
+ \@acmSubmissionID\fi}%
+ \fi
+ \else
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{#2}%
+ \else
+ \g@addto@macro\shortauthors{\and#2}%
+ \fi
+ \else
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{#1}%
+ \else
+ \g@addto@macro\shortauthors{\and#1}%
+ \fi
+ \fi
+ \fi}
+\newcommand{\affiliation}[2][]{%
+ \global\@insideauthorgroupfalse
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\affiliation{#1}{#2}}%
+ \fi}
+\define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
+[true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}}
+\def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
+\def\@additionalaffiliation#1{\bgroup
+ \def\position##1{\ignorespaces}%
+ \def\institution##1{##1\ignorespaces}%
+ \def\department{\@ifnextchar[{\@department}{\@department[]}}%
+ \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
+ \let\city\position
+ \let\state\position
+ \let\country\position
+ Also with #1\unskip.\egroup}
+\renewcommand{\email}[2][]{%
+ \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
+ addresses in the same \string\email\space macro!}}{}%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\email{#1}{#2}}%
+ \fi}
+\def\orcid#1{\unskip\ignorespaces%
+ \IfBeginWith{#1}{http}{%
+ \expandafter\gdef\csname
+ typeset@author\the\num@authors\endcsname##1{%
+ \href{#1}{##1}}}{%
+ \expandafter\gdef\csname
+ typeset@author\the\num@authors\endcsname##1{%
+ \href{https://orcid.org/#1}{##1}}}}
+\def\authorsaddresses#1{\def\@authorsaddresses{#1}}
+\authorsaddresses{\@mkauthorsaddresses}
+\newcommand\@mktranslatedkeywords[2]{\bgroup
+ \selectlanguage{#1}%
+ {\@specialsection{\keywordsname}%
+ \noindent#2\par}\egroup}
+\def\@titlenotes{}
+\def\titlenote#1{%
+ \g@addto@macro\@title{\footnotemark}%
+ \if@ACM@anonymous
+ \g@addto@macro\@titlenotes{%
+ \stepcounter{footnote}\footnotetext{Title note}}%
+ \else
+ \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+\def\@subtitlenotes{}
+\def\subtitlenote#1{%
+ \g@addto@macro\@subtitle{\footnotemark}%
+ \if@ACM@anonymous
+ \g@addto@macro\@subtitlenotes{%
+ \stepcounter{footnote}\footnotetext{Subtitle note}}%
+ \else
+ \g@addto@macro\@subtitlenotes{%
+ \stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+\def\@authornotes{}
+\def\authornote#1{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\@authornotemark}%
+ \g@addto@macro\@authornotes{%
+ \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}}%
+ \fi}
+\def\acmVolume#1{\def\@acmVolume{#1}}
+\acmVolume{1}
+\def\acmNumber#1{\def\@acmNumber{#1}}
+\acmNumber{1}
+\def\acmArticle#1{\def\@acmArticle{#1}}
+\acmArticle{}
+\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
+\acmArticleSeq{\@acmArticle}
+\def\acmYear#1{\def\@acmYear{#1}}
+\acmYear{\the\year}
+\def\acmMonth#1{\def\@acmMonth{#1}}
+\acmMonth{\the\month}
+\def\@acmPubDate{\ifcase\@acmMonth\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~\@acmYear}
+\def\acmPrice#1{\ClassWarning{\@classname}{The macro \string\acmPrice
+ is obsolete. ACM no longer prints the price in bibstrip.}}
+\def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
+\acmSubmissionID{}
+\def\acmISBN#1{\def\@acmISBN{#1}}
+\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
+\def\acmDOI#1{\def\@acmDOI{#1}}
+\acmDOI{10.1145/nnnnnnn.nnnnnnn}
+\newlength\@ACM@badge@width
+\setlength\@ACM@badge@width{3pc}
+\newlength\@ACM@title@width
+\newlength\@ACM@badge@skip
+\setlength\@ACM@badge@skip{1pt}
+\def\@acmBadgeR{}
+\def\@acmBadgeL{}
+\newcommand\acmBadgeR[2][]{%
+ \ifx\@acmBadgeR\@empty
+ \gdef\@acmBadgeR{%
+ \smash{%
+ \raisebox{0.5\height}{%
+ \href{#1}{\includegraphics[width=\@ACM@badge@width]{#2}}}}}%
+ \else
+ \g@addto@macro{\@acmBadgeR}{%
+ \hspace{\@ACM@badge@skip}%
+ \smash{%
+ \raisebox{0.5\height}{%
+ \href{#1}{\includegraphics[width=\@ACM@badge@width]{#2}}}}}%
+ \fi}
+\newcommand\acmBadgeL[2][]{%
+ \ifx\@acmBadgeL\@empty
+ \gdef\@acmBadgeL{%
+ \smash{%
+ \raisebox{0.5\height}{%
+ \href{#1}{\includegraphics[width=\@ACM@badge@width]{#2}}}}}%
+ \else
+ \g@addto@macro{\@acmBadgeL}{%
+ \hspace{\@ACM@badge@skip}%
+ \smash{%
+ \raisebox{0.5\height}{%
+ \href{#1}{\includegraphics[width=\@ACM@badge@width]{#2}}}}}%
+ \fi}
+\let\acmBadge=\acmBadgeR
+\def\startPage#1{\def\@startPage{#1}}
+\startPage{}
+\def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
+ obsolete. I am going to ignore it}}
+\def\keywords#1{\def\@keywords{#1}}
+\let\@keywords\@empty
+\AtEndDocument{\if@ACM@nonacm\else\ifx\@keywords\@empty
+ \ifnum\getrefnumber{TotPages}>2\relax
+ \ClassWarningNoLine{\@classname}{ACM keywords are mandatory
+ for papers over two pages}%
+ \fi\fi\fi}
+\renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
+\long\def\@saveabstract#1{\if@ACM@maketitle@typeset
+ \ClassError{\@classname}{Abstract must be defined before maketitle
+ command. Please move it!}\fi
+ \long\gdef\@abstract{#1}}
+\@saveabstract{}
+\long\def\@lempty{}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
+ \if@ACM@printccs
+ \ClassInfo{\@classname}{Printing CCS}%
+ \else
+ \ClassInfo{\@classname}{Suppressing CCS}%
+ \fi}{\ClassError{\@classname}{The option printccs can be either true or false}}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
+ \if@ACM@printacmref
+ \ClassInfo{\@classname}{Printing bibformat}%
+ \else
+ \ClassInfo{\@classname}{Suppressing bibformat}%
+ \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}}
+\AtEndDocument{\if@ACM@nonacm\else\if@ACM@printacmref\else
+ \ifnum\getrefnumber{TotPages}>1\relax
+ \ClassWarningNoLine{\@classname}{%
+ ACM reference format is mandatory \MessageBreak
+ for papers over one page. \MessageBreak
+ Please add printacmref=true to the \MessageBreak
+ \string\settopmatter\space command.}%
+ \fi\fi\fi}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
+ \if@ACM@printfolios
+ \ClassInfo{\@classname}{Printing folios}%
+ \else
+ \ClassInfo{\@classname}{Suppressing folios}%
+ \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}}
+\define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
+ \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
+ #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be
+ numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
+\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
+\settopmatter{printccs=true, printacmref=true}
+\if@ACM@manuscript
+ \settopmatter{printfolios=true}
+\else
+ \if@ACM@journal
+ \settopmatter{printfolios=true}
+ \else
+ \settopmatter{printfolios=false}
+ \fi
+\fi
+\settopmatter{authorsperrow=0}
+\def\@received{}
+\newcommand\received[2][]{\def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \ifx\@received\@empty
+ \gdef\@received{Received #2}%
+ \else
+ \g@addto@macro{\@received}{; revised #2}%
+ \fi
+ \else
+ \ifx\@received\@empty
+ \gdef\@received{#1 #2}%
+ \else
+ \g@addto@macro{\@received}{; #1 #2}%
+ \fi
+ \fi}
+\AtEndDocument{%
+ \ifx\@received\@empty\else
+ \par\bigskip\noindent\small\normalfont\@received\par
+ \fi}
+\define@choicekey+{ACM}{articletype}[\ACM@ArticleType\ACM@ArticleType@nr]{%
+ Research,Review,Discussion,Invited,Position}[Review]{%
+ \ifcase\ACM@ArticleType@nr
+ \relax % Research
+ \colorlet{@ACM@Article@color}{ACMBlue}%
+ \or % Review
+ \colorlet{@ACM@Article@color}{ACMOrange}%
+ \or % Discussion
+ \colorlet{@ACM@Article@color}{ACMGreen}%
+ \or % Invited
+ \colorlet{@ACM@Article@color}{ACMPurple}%
+ \or % Position
+ \colorlet{@ACM@Article@color}{ACMRed}%
+ \fi
+}{%
+ \ClassError{\@classname}{Article Type must be Research, Review,\MessageBreak
+ Discussion, Invited, or Position}}
+\def\acmArticleType#1{\setkeys{ACM}{articletype=#1}}
+\if@ACM@acmcp
+\acmArticleType{Research}%
+\fi
+ % \end{macrocode}
+\newenvironment{@ACM@color@frame}{%
+ \def\FrameCommand{\hspace*{-6.5pc}%
+ \colorbox{@ACM@Article@color!10!white}}%
+ \MakeFramed {\advance\hsize
+ -6.5pc\relax\FrameRestore}}{\zsaveposy{@ACM@acmcpframe@y}%
+ \endMakeFramed}
+\def\acmCodeLink#1{%
+ \ifx\@acmCodeDataLink\@empty
+ \gdef\@acmCodeDataLink{\url{#1}}%
+ \else
+ \g@addto@macro{\@acmCodeDataLink}{\\ \url{#1}}%
+ \fi}
+\def\@acmCodeDataLink{}
+\def\acmContributions#1{\gdef\@acmContributions{#1}}
+\acmContributions{}
+\let\acmDataLink\acmCodeLink
+\RequirePackage{comment}
+\excludecomment{CCSXML}
+\let\@concepts\@empty
+\newcounter{@concepts}
+\newcommand\ccsdesc[2][100]{%
+ \ccsdesc@parse#1~#2~~\ccsdesc@parse@end}
+\def\textrightarrow{$\rightarrow$}
+\def\ccsdesc@parse#1~#2~#3~{%
+ \stepcounter{@concepts}%
+ \expandafter\ifx\csname CCS@General@#2\endcsname\relax
+ \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
+ \textbf{#2}}%
+ \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
+ \expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
+ \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
+ \csname CCS@Punctuation@#2\endcsname
+ \csname CCS@Specific@#2\endcsname}%
+ \fi
+ \ifx#3\relax\relax\else
+ \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
+ \textrightarrow\ }%
+ \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
+ \addtocounter{@concepts}{-1}%
+ \ifnum#1>499\textbf{#3}\else
+ \ifnum#1>299\textit{#3}\else
+ #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}%
+ \fi
+\ccsdesc@parse@finish}
+\AtEndDocument{\if@ACM@nonacm\else\ifx\@concepts\@empty\relax
+ \ifnum\getrefnumber{TotPages}>2\relax
+ \ClassWarningNoLine{\@classname}{CCS concepts are mandatory
+ for papers over two pages}%
+ \fi\fi\fi}
+\def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}
+\newif\if@printcopyright
+\@printcopyrighttrue
+\newif\if@printpermission
+\@printpermissiontrue
+\newif\if@acmowned
+\@acmownedtrue
+\define@choicekey*{ACM@}{acmcopyrightmode}[%
+ \acm@copyrightinput\acm@copyrightmode]{none,%
+ acmcopyright,acmlicensed,rightsretained,%
+ usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
+ licensedcagov,licensedcagovmixed,othergov,licensedothergov,%
+ iw3c2w3,iw3c2w3g,cc}{%
+ \@printpermissiontrue
+ \@printcopyrighttrue
+ \@acmownedtrue
+ \ifnum\acm@copyrightmode=0\relax % none
+ \@printpermissionfalse
+ \@printcopyrightfalse
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=2\relax % acmlicensed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=3\relax % rightsretained
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=4\relax % usgov
+ \@printpermissiontrue
+ \@printcopyrightfalse
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=6\relax % cagov
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=9\relax % licensedcagov
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=11\relax % othergov
+ \@acmownedtrue
+ \fi
+ \ifnum\acm@copyrightmode=12\relax % licensedothergov
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=13\relax % iw3c2w3
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=14\relax % iw3c2w3g
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=15\relax % cc
+ \@acmownedfalse
+ \fi}
+\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
+\setcopyright{acmlicensed}
+\newcommand\setcctype[2][4.0]{%
+ \def\ACM@cc@version{#1}%
+ \def\ACM@cc@type{#2}}
+\setcctype{by}
+\def\@copyrightowner{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ ACM\@.
+ \or % acmlicensed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or % rightsretained
+ Copyright held by the owner/author(s).
+ \or % usgov
+ \or % usgovmixed
+ Copyright held by the owner/author(s).
+ \or % cagov
+ Copyright Crown in Right of Canada.
+ \or %cagovmixed
+ Copyright held by the owner/author(s).
+ \or %licensedusgovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or % licensedcagov
+ Copyright held by the owner/author(s).
+ \or %licensedcagovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or % othergov
+ Copyright held by the owner/author(s).
+ \or % licensedothergov
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or % ic2w3www
+ IW3C2 (International World Wide Web Conference Committee), published
+ under Creative Commons CC-BY~4.0 License.
+ \or % ic2w3wwwgoogle
+ IW3C2 (International World Wide Web Conference Committee), published
+ under Creative Commons CC-BY-NC-ND~4.0 License.
+ \or % cc
+ Copyright held by the owner/author(s).
+ \fi}
+\def\@formatdoi#1{\url{https://doi.org/#1}}
+\def\@copyrightpermission{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than ACM must be honored. Abstracting with credit is
+ permitted. To copy otherwise, or republish, to post on servers or
+ to redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or
+ a fee. Request permissions from permissions@acm.org.
+ \or % acmlicensed
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than the author(s) must be honored. Abstracting with credit
+ is permitted. To copy otherwise, or republish, to post on servers
+ or to redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % rightsretained
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for third-party components of this work
+ must be honored. For all other uses, contact the
+ owner\hspace*{.5pt}/author(s).
+ \or % usgov
+ This paper is authored by an employee(s) of the United States
+ 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
+ owner\hspace*{.5pt}/author(s).
+ \or % usgovmixed
+ ACM acknowledges that this contribution was authored or co-authored
+ by an employee, contractor, or affiliate of the United States
+ government. As such, the United States government retains a
+ nonexclusive, royalty-free right to publish or reproduce this
+ article, or to allow others to do so, for government purposes
+ only. Request permissions from owner\hspace*{.5pt}/author(s).
+ \or % cagov
+ This article was authored by employees of the Government of
+ Canada. As such, the Canadian government retains all interest in
+ the copyright to this work and grants to ACM a nonexclusive,
+ royalty-free right to publish or reproduce this article, or to
+ allow others to do so, provided that clear attribution is given
+ both to the authors and the Canadian government agency employing
+ them. Permission to make digital or hard copies for personal or
+ classroom use is granted. Copies must bear this notice and the full
+ citation on the first page. Copyrights for components of this work
+ owned by others than the Canadian Government must be honored. To
+ copy otherwise, distribute, republish, or post, requires prior
+ specific permission and/or a fee. Request permissions from
+ owner\hspace*{.5pt}/author(s).
+ \or % cagovmixed
+ ACM acknowledges that this contribution was co-authored by an
+ affiliate of the national government of Canada. As such, the Crown
+ in Right of Canada retains an equal interest in the
+ copyright. Reprints must include clear attribution to ACM and the
+ author’s government agency affiliation. Permission to make digital
+ or hard copies for personal or classroom use is granted. Copies
+ must bear this notice and the full citation on the first
+ page. Copyrights for components of this work owned by others than
+ ACM must be honored. To copy otherwise, distribute, republish, or
+ post, requires prior specific permission and/or a fee. Request
+ permissions from owner\hspace*{.5pt}/author(s).
+ \or % licensedusgovmixed
+ Publication rights licensed to ACM\@. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of the United States government. As such, the
+ Government retains a nonexclusive, royalty-free right to publish or
+ reproduce this article, or to allow others to do so, for Government
+ purposes only. Request permissions from
+ owner\hspace*{.5pt}/author(s).
+ \or % licensedcagov
+ This article was authored by employees of the Government of
+ Canada. As such, the Canadian government retains all interest in
+ the copyright to this work and grants to ACM a nonexclusive,
+ royalty-free right to publish or reproduce this article, or to
+ allow others to do so, provided that clear attribution is given
+ both to the authors and the Canadian government agency employing
+ them. Permission to make digital or hard copies for personal or
+ classroom use is granted. Copies must bear this notice and the full
+ citation on the first page. Copyrights for components of this work
+ owned by others than the Canadian Government must be honored. To
+ copy otherwise, distribute, republish, or post, requires prior
+ specific permission and/or a fee. Request permissions from
+ owner\hspace*{.5pt}/author(s).
+ \or % licensedcagovmixed
+ Publication rights licensed to ACM. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of the national government of Canada. As such, the
+ Government retains a nonexclusive, royalty-free right to publish or
+ reproduce this article, or to allow others to do so, for Government
+ purposes only. Request permissions from
+ owner\hspace*{.5pt}/author(s).
+ \or % othergov
+ ACM acknowledges that this contribution was authored or co-authored
+ by an employee, contractor or affiliate of a national
+ government. As such, the Government retains a nonexclusive,
+ royalty-free right to publish or reproduce this article, or to
+ allow others to do so, for Government purposes only. Request
+ permissions from owner\hspace*{.5pt}/author(s).
+ \or % licensedothergov
+ Publication rights licensed to ACM\@. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of a national government. As such, the Government
+ retains a nonexclusive, royalty-free right to publish or reproduce
+ this article, or to allow others to do so, for Government purposes
+ only. Request permissions from owner\hspace*{.5pt}/author(s).
+ \or % iw3c2w3
+ This paper is published under the Creative Commons Attribution~4.0
+ International (CC-BY~4.0) license. Authors reserve their rights to
+ disseminate the work on their personal and corporate Web sites with
+ the appropriate attribution.
+ \or % iw3c2w3g
+ This paper is published under the Creative Commons
+ Attribution-NonCommercial-NoDerivs~4.0 International
+ (CC-BY-NC-ND~4.0) license. Authors reserve their rights to
+ disseminate the work on their personal and corporate Web sites with
+ 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}}%
+ \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
+ \IfEq{\ACM@cc@type}{zero}{CC0 1.0 Universal}{%
+ \IfEq{\ACM@cc@type}{by}{Attribution}{}%
+ \IfEq{\ACM@cc@type}{by-sa}{Attribution-ShareAlike}{}%
+ \IfEq{\ACM@cc@type}{by-nd}{Attribution-NoDerivatives}{}%
+ \IfEq{\ACM@cc@type}{by-nc}{Attribution-NonCommercial}{}%
+ \IfEq{\ACM@cc@type}{by-nc-sa}{Attribution-NonCommercial-ShareAlike}{}%
+ \IfEq{\ACM@cc@type}{by-nc-nd}{Attribution-NonCommercial-NoDerivatives}{}%
+ ~\IfEq{\ACM@cc@version}{4.0}{4.0 International}{3.0 Unported}%
+ }
+ License.}%
+ \fi}
+%%
+\def\copyrightyear#1{\def\@copyrightyear{#1}}
+\copyrightyear{\@acmYear}
+\def\@teaserfigures{}
+\newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
+\long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
+\renewcommand{\thanks}[1]{%
+ \@ifnotempty{#1}{%
+ \if@ACM@anonymous
+ \g@addto@macro\thankses{\thanks{A note}}%
+ \else
+ \g@addto@macro\thankses{\thanks{#1}}%
+ \fi}}
+\newcommand{\anon}[2][ANONYMIZED]{%
+ \if@ACM@anonymous%
+ {\color{ACMOrange}#1}%
+ \else%
+ #2%
+ \fi}
+\ifx\@beginmaketitlehook\@undefined
+ \let\@beginmaketitlehook\@empty
+\fi
+\def\AtBeginMaketitle{\g@addto@macro\@beginmaketitlehook}
+\def\@acmengagemetadata{}
+\def\setengagemetadata#1#2{%
+ \g@addto@macro{\@acmengagemetadata}{%
+ \@setengagemetadata{#1}{#2}}}
+\newbox\mktitle@bx
+\def\maketitle{\@beginmaketitlehook
+ \@ACM@maketitle@typesettrue
+ \if@ACM@anonymous
+ % Anonymize omission of \author-s
+ \ifnum\num@authorgroups=0\author{}\fi
+ \fi
+ \begingroup
+ \let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig
+ \let\@footnotemark\@footnotemark@nolink
+ \let\@footnotetext\@footnotetext@nolink
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \hsize=\textwidth
+ \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
+ \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
+ \@printtopmatter
+ \if@ACM@sigchiamode\@mkauthors\fi
+ \setcounter{footnote}{0}%
+ \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
+ \@titlenotes
+ \@subtitlenotes
+ \@authornotes
+ \let\@makefnmark\relax
+ \let\@thefnmark\relax
+ \let\@makefntext\noindent
+ \ifx\@empty\thankses\else
+ \footnotetextauthorsaddresses{%
+ \def\par{\let\par\@par}\parindent\z@\@setthanks}%
+ \fi
+ \if@ACM@acmcp\else
+ \ifx\@empty\@authorsaddresses\else
+ \if@ACM@anonymous\else
+ \if@ACM@journal@bibstrip@or@tog
+ \footnotetextauthorsaddresses{%
+ \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@ACM@nonacm
+ \ifnum\acm@copyrightmode=15\relax % cc
+ \footnotetextcopyrightpermission{\@copyrightpermission}%
+ \fi
+ \else
+ \if@ACM@acmcp\else
+ \footnotetextcopyrightpermission{%
+ \if@ACM@authordraft
+ \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
+ Unpublished working draft. Not for distribution.}}%
+ \color[gray]{0.9}%
+ \fi
+ \parindent\z@\parskip0.1\baselineskip
+ \if@ACM@authorversion\else
+ \if@printpermission\@copyrightpermission\par\fi
+ \fi
+ \if@ACM@manuscript\else
+ \if@ACM@journal@bibstrip\else % Print the conference information
+ \if@ACM@engage
+ {\itshape \@acmBooktitle, \@acmYear.}\par
+ \else
+ {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
+ \fi
+ \fi
+ \fi
+ \if@printcopyright
+ \copyright\ \@copyrightyear\ \@copyrightowner\\
+ \else
+ \@copyrightyear.\
+ \fi
+ \if@ACM@manuscript
+ Manuscript submitted to ACM\\
+ \else
+ \if@ACM@authorversion
+ This is the author's version of the work. It is posted here for
+ your personal use. Not for redistribution. The definitive Version
+ of Record was published in
+ \if@ACM@journal@bibstrip
+ \emph{\@journalName}%
+ \else
+ \emph{\@acmBooktitle}%
+ \fi
+ \ifx\@acmDOI\@empty
+ .
+ \else
+ , \@formatdoi{\@acmDOI}.
+ \fi\\
+ \else
+ \if@ACM@nonacm\else
+ \if@ACM@journal@bibstrip
+ ACM~\@permissionCodeTwo/\@acmYear/\@acmMonth-ART\@acmArticle\\
+ \@formatdoi{\@acmDOI}%
+ \else % Conference
+ \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN\\\fi
+ \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
+ \fi
+ \fi
+ \fi
+ \fi}%
+ \fi
+ \fi
+ \endgroup
+ \if@ACM@engage\@typesetengagemetadata\fi
+ \setcounter{footnote}{0}%
+ \@mkabstract
+ \ifx\@translatedabstracts\@empty\else
+ \@translatedabstracts\fi
+ \if@ACM@printccs
+ \ifx\@concepts\@empty\else\bgroup
+ {\@specialsection{CCS Concepts}%
+ \noindent\@concepts\par}\egroup
+ \fi
+ \fi
+ \if@ACM@acmcp\else
+ \ifx\@keywords\@empty\else\bgroup
+ {\@specialsection{\keywordsname}%
+ \noindent\@keywords\par}\egroup
+ \fi
+ \ifx\@translatedkeywords\@empty\else
+ \@translatedkeywords
+ \fi
+ \fi
+ \let\metadata@authors=\authors
+ \nxandlist{, }{, }{, }\metadata@authors
+ \def\@ACM@checkaffil{}%
+ \hypersetup{%
+ pdfauthor={\metadata@authors},
+ pdftitle={\@title},
+ pdfsubject={\@concepts},
+ pdfkeywords={\@keywords},
+ pdfcreator={LaTeX with acmart
+ \csname ver@\@classname.cls\endcsname\space
+ and hyperref
+ \csname ver@hyperref.sty\endcsname}}%
+ \andify\authors
+ \andify\shortauthors
+ \global\let\authors=\authors
+ \global\let\shortauthors=\shortauthors
+ \if@ACM@printacmref
+ \@mkbibcitation
+ \fi
+ \global\@topnum\z@ % this prevents floats from falling
+ % at the top of page 1
+ \global\@botnum\z@ % we do not want them to be on the bottom either
+ \@printendtopmatter
+ \@afterindentfalse
+ \@afterheading
+ \if@ACM@acmcp
+ \set@ACM@acmcpbox
+ \AtEndDocument{\end@ACM@color@frame}%
+ \@ACM@color@frame
+ \fi
+}
+\newbox\@ACM@acmcpbox
+\def\set@ACM@acmcpbox{%
+ \bgroup
+ \hsize=5pc
+ \global\setbox\@ACM@acmcpbox=\vbox{%
+ \setlength{\parindent}{\z@}%
+ {\includegraphics[width=\hsize]{acm-jdslogo}\par}%
+ \scriptsize
+ \ifnum\getrefnumber{TotPages}>1\else
+ \zrefused{@ACM@acmcpbox@y}%
+ \zrefused{@ACM@acmcpframe@y}%
+ \@tempdima=\dimexpr\zposy{@ACM@acmcpbox@y}sp -
+ \zposy{@ACM@acmcpframe@y}sp+0.3\FrameSep+
+ \@ACM@acmcp@delta\relax
+ \ifdim\@tempdima>0pt\relax
+ \vspace*{\@tempdima}%
+ \protected@write\@auxout{}%
+ {\string\global\@ACM@acmcp@delta=\the\@tempdima\relax}%
+ \fi
+ \fi
+ \ifx\@acmCodeDataLink\@empty\else\bigskip
+ Code and data links:\\ \@acmCodeDataLink\par\bigskip
+ \fi
+ \ifx\@keywords\@empty\else\bigskip
+ Keywords: \@keywords\par
+ \fi
+ \ifx\@acmContributions\@empty\else\bigskip
+ \@acmContributions\par
+ \fi
+ \ifx\@empty\@authorsaddresses\else\bigskip\@setauthorsaddresses\fi
+ \zsaveposy{@ACM@acmcpbox@y}%
+ }
+\egroup}
+\def\@specialsection#1{%
+ \let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \par\medskip\small\noindent#1: %
+ \or % acmsmall
+ \par\medskip\small\noindent#1: %
+ \or % acmlarge
+ \par\medskip\small\noindent#1: %
+ \or % acmtog
+ \par\medskip\small\noindent#1: %
+ \or % sigconf
+ \section*{#1}%
+ \or % siggraph
+ \section*{#1}%
+ \or % sigplan
+ \noindentparagraph*{#1:~}%
+ \or % sigchi
+ \section*{#1}%
+ \or % sigchi-a
+ \section*{#1}%
+ \or % acmengage
+ \section*{#1}%
+ \or % acmcp
+ \section*{#1}%
+ \fi
+ \let\@vspace\@vspace@acm
+ \let\@vspacer\@vspacer@acm
+}
+\def\@printtopmatter{%
+ \ifx\@startPage\@empty
+ \gdef\@startPage{1}%
+ \else
+ \setcounter{page}{\@startPage}%
+ \fi
+ \@tempdima=\ht\mktitle@bx
+ \advance\@tempdima by \dp\mktitle@bx
+ \ifdim\@tempdima>0.9\textheight
+ \loop
+ \setbox\@tempboxa=\vsplit \mktitle@bx to 0.9\textheight
+ \thispagestyle{firstpagestyle}%
+ \noindent\unvbox\@tempboxa
+ \clearpage
+ \@tempdima=\ht\mktitle@bx
+ \advance\@tempdima by \dp\mktitle@bx
+ \ifdim\@tempdima>0.9\textheight\repeat
+ \fi
+ \thispagestyle{firstpagestyle}%
+ \noindent
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \box\mktitle@bx\par
+ \or % acmsmall
+ \box\mktitle@bx\par
+ \or % acmlarge
+ \box\mktitle@bx\par
+ \or % acmtog
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigconf
+ \twocolumn[\box\mktitle@bx]%
+ \or % siggraph
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigplan
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigchi
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigchi-a
+ \par\box\mktitle@bx\par\bigskip
+ \or % acmengage
+ \twocolumn[\box\mktitle@bx]%
+ \or % acmcp
+ \box\mktitle@bx\par
+ \fi
+}
+\def\@mktitle{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \@mktitle@i
+ \or % acmsmall
+ \@mktitle@i
+ \or % acmlarge
+ \@mktitle@i
+ \or % acmtog
+ \@mktitle@i
+ \or % sigconf
+ \@mktitle@iii
+ \or % siggraph
+ \@mktitle@iii
+ \or % sigplan
+ \@mktitle@iii
+ \or % sigchi
+ \@mktitle@iii
+ \or % sigchi-a
+ \@mktitle@iv
+ \or % acmengage
+ \@mktitle@iii
+ \or % acmcp
+ \@mktitle@i
+ \fi
+}
+\def\@titlefont{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \LARGE\sffamily\bfseries
+ \or % acmsmall
+ \LARGE\sffamily\bfseries
+ \or % acmlarge
+ \LARGE\sffamily\bfseries
+ \or % acmtog
+ \Huge\sffamily
+ \or % sigconf
+ \Huge\sffamily\bfseries
+ \or % siggraph
+ \Huge\sffamily\bfseries
+ \or % sigplan
+ \Huge\bfseries
+ \or % sigchi
+ \Huge\sffamily\bfseries
+ \or % sigchi-a
+ \Huge\bfseries
+ \or % acmengage
+ \Huge\sffamily\bfseries
+ \or % acmcp
+ \LARGE\sffamily\bfseries
+ \fi}
+\def\@subtitlefont{\normalsize
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \mdseries
+ \or % acmsmall
+ \mdseries
+ \or % acmlarge
+ \mdseries
+ \or % acmtog
+ \LARGE
+ \or % sigconf
+ \LARGE\mdseries
+ \or % siggraph
+ \LARGE\mdseries
+ \or % sigplan
+ \LARGE\mdseries
+ \or % sigchi
+ \LARGE\mdseries
+ \or % sigchi-a
+ \mdseries
+ \or % acmengage
+ \LARGE\mdseries
+ \or % acmcp
+ \mdseries
+ \fi}
+\def\@mktitle@i{\hsize=\textwidth
+ \if@ACM@acmcp
+ \advance\hsize by -6pc%
+ \fi
+ \@ACM@title@width=\hsize
+ \setbox\mktitle@bx=\vbox{\noindent\@titlefont
+ \parbox[t]{\@ACM@title@width}{\raggedright
+ \@titlefont\noindent
+ \@title\@translatedtitle%
+ \ifx\@subtitle\@empty\else
+ \par\noindent{\@subtitlefont\@subtitle\@translatedsubtitle}%
+ \fi}%
+ \par\bigskip}}%
+\def\@mktitle@iii{\hsize=\textwidth
+ \setbox\mktitle@bx=\vbox{\@titlefont\centering
+ \@ACM@title@width=\hsize
+ \parbox[t]{\@ACM@title@width}{\centering\@titlefont
+ \@title\@translatedtitle%
+ \ifx\@subtitle\@empty\else
+ \par\noindent{\@subtitlefont\@subtitle\@translatedsubtitle}
+ \fi
+ }%
+ \par\bigskip}}%
+\def\@mktitle@iv{\hsize=\textwidth
+ \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
+ \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
+ \noindent\@title\@translatedtitle%
+ \ifx\@subtitle\@empty\else
+ \par\noindent\@subtitlefont\@subtitle\@translatedsubtitle%
+ \fi
+ \par\bigskip}}%
+\newbox\@ACM@commabox
+\def\@ACM@addtoaddress#1{%
+ \ifvmode\else
+ \if@ACM@affiliation@obeypunctuation\else
+ \setbox\@ACM@commabox=\hbox{, }%
+ \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
+ \fi\fi
+ #1}
+\def\streetaddress#1{\ClassWarning{\@classname}{ACM no longer collects
+ authors' postal addresses. I am ignoring your street
+ address}\unskip\ignorespaces}
+\def\postcode#1{\ClassWarning{\@classname}{ACM no longer collects
+ authors' postal addresses. I am ignoring your postal
+ code}\unskip\ignorespaces}
+\if@ACM@journal
+ \def\position#1{\unskip\ignorespaces}
+ \def\institution#1{\global\@ACM@instpresenttrue
+ \unskip~#1\ignorespaces}
+ \def\city#1{\global\@ACM@citypresenttrue\unskip\ignorespaces}
+ \def\state#1{\unskip\ignorespaces}
+ \newcommand\department[2][0]{\unskip\ignorespaces}
+ \def\country#1{\StrDel{#1}{ }[\@tempa]%
+ \ifx\@tempa\@empty\else
+ \global\@ACM@countrypresenttrue\fi
+ \if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
+\else
+ \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
+ \def\institution#1{\global\@ACM@instpresenttrue
+ \if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
+ \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
+ #2\else#2\par\fi}%
+ \def\city#1{\global\@ACM@citypresenttrue\@ACM@addtoaddress{#1}}%
+ \let\state\@ACM@addtoaddress
+ \def\country#1{\global\@ACM@countrypresenttrue\@ACM@addtoaddress{#1}}%
+\fi
+\def\@mkauthors{\begingroup
+ \hsize=\textwidth
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \@mkauthors@i
+ \or % acmsmall
+ \@mkauthors@i
+ \or % acmlarge
+ \@mkauthors@i
+ \or % acmtog
+ \@mkauthors@i
+ \or % sigconf
+ \@mkauthors@iii
+ \or % siggraph
+ \@mkauthors@iii
+ \or % sigplan
+ \@mkauthors@iii
+ \or % sigchi
+ \@mkauthors@iii
+ \or % sigchi-a
+ \@mkauthors@iv
+ \or % acmengage
+ \@mkauthors@iii
+ \or % acmcp
+ \@mkauthors@i
+ \fi
+ \endgroup
+}
+\def\@authorfont{\Large\sffamily}
+\def\@affiliationfont{\normalsize\normalfont}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or % acmsmall
+ \def\@authorfont{\large\sffamily}
+ \def\@affiliationfont{\small\normalfont}
+\or % acmlarge
+\or % acmtog
+ \def\@authorfont{\LARGE\sffamily}
+ \def\@affiliationfont{\large}
+\or % sigconf
+ \def\@authorfont{\LARGE}
+ \def\@affiliationfont{\large}
+\or % siggraph
+ \def\@authorfont{\normalsize\normalfont}
+ \def\@affiliationfont{\normalsize\normalfont}
+\or % sigplan
+ \def\@authorfont{\Large\normalfont}
+ \def\@affiliationfont{\normalsize\normalfont}
+\or % sigchi
+ \def\@authorfont{\bfseries}
+ \def\@affiliationfont{\mdseries}
+\or % sigchi-a
+ \def\@authorfont{\bfseries}
+ \def\@affiliationfont{\mdseries}
+\or % acmengage
+ \def\@authorfont{\LARGE}
+ \def\@affiliationfont{\large}
+\or % acmcp
+ \def\@authorfont{\large\sffamily}
+ \def\@affiliationfont{\small\normalfont}
+\fi
+\def\@typeset@author@line{%
+ \andify\@currentauthors\par\noindent
+ \@currentauthors\def\@currentauthors{}%
+ \ifx\@currentaffiliations\@empty\else
+ \andify\@currentaffiliations
+ \unskip, {\@currentaffiliations}\par
+ \fi
+ \def\@currentaffiliations{}}
+\newif\if@ACM@instpresent
+\@ACM@instpresenttrue
+\newif\if@ACM@citypresent
+\@ACM@citypresenttrue
+\newif\if@ACM@countrypresent
+\@ACM@countrypresenttrue
+\def\@ACM@resetaffil{%
+ \global\@ACM@instpresentfalse
+ \global\@ACM@citypresentfalse
+ \global\@ACM@countrypresentfalse
+}
+\def\@ACM@checkaffil{%
+ \if@ACM@instpresent\else
+ \ClassWarningNoLine{\@classname}{No institution present for an affiliation}%
+ \fi
+ \if@ACM@citypresent\else
+ \ClassWarningNoLine{\@classname}{No city present for an affiliation}%
+ \fi
+ \if@ACM@countrypresent\else
+ \ClassError{\@classname}{No country present for an affiliation}{ACM
+ requires each author to indicate their country using country macro.}%
+ \fi
+}
+\def\@mkauthors@i{%
+ \def\@currentauthors{}%
+ \def\@currentaffiliations{}%
+ \global\let\and\@typeset@author@line
+ \def\@author##1{%
+ \ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
+ \else
+ \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
+ \fi
+ \gdef\and{}}%
+ \def\email##1##2{}%
+ \def\affiliation##1##2{%
+ \def\@tempa{##2}\ifx\@tempa\@empty\else
+ \ifx\@currentaffiliations\@empty
+ \gdef\@currentaffiliations{%
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
+ \setkeys{@ACM@affiliation@}{##1}%
+ \@ACM@resetaffil
+ \@affiliationfont##2\@ACM@checkaffil}%
+ \else
+ \g@addto@macro{\@currentaffiliations}{\and
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
+ ##2\@ACM@checkaffil}%
+ \fi
+ \fi
+ \global\let\and\@typeset@author@line}%
+ \if@ACM@acmcp
+ \advance\hsize by -6pc%
+ \fi
+ \global\setbox\mktitle@bx=\vbox{\noindent\unvbox\mktitle@bx\par\medskip
+ \noindent\addresses\@typeset@author@line
+ \par\medskip}%
+}
+\newbox\author@bx
+\newdimen\author@bx@wd
+\newskip\author@bx@sep
+\author@bx@sep=1pc\relax
+\def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd
+ \def\and{\par}\normalbaselines
+ \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author@bx\hspace{\author@bx@sep}%
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}
+\def\@mkauthors@iii{%
+ \author@bx@wd=\textwidth\relax
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \ifnum\@ACM@authorsperrow>0\relax
+ \divide\author@bx@wd by \@ACM@authorsperrow\relax
+ \else
+ \ifcase\num@authorgroups
+ \relax % 0?
+ \or % 1=one author per row
+ \or % 2=two authors per row
+ \divide\author@bx@wd by \num@authorgroups\relax
+ \or % 3=three authors per row
+ \divide\author@bx@wd by \num@authorgroups\relax
+ \or % 4=two authors per row (!)
+ \divide\author@bx@wd by 2\relax
+ \else % three authors per row
+ \divide\author@bx@wd by 3\relax
+ \fi
+ \fi
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}%
+ \def\@author##1{\ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\par##1}%
+ \else
+ \g@addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
+ \def\email##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{\bgroup
+ \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par\bgroup
+ \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
+ \fi}%
+ \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{%
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
+ ##2\@ACM@checkaffil}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
+ ##2\@ACM@checkaffil}%
+ \fi
+ \global\let\and\@typeset@author@bx
+}%
+ \hsize=\textwidth
+ \global\setbox\mktitle@bx=\vbox{\noindent
+ \unvbox\mktitle@bx\par\medskip\leavevmode
+ \lineskip=1pc\relax\centering\hspace*{-1em}%
+ \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
+\def\@mkauthors@iv{%
+ \author@bx@wd=\columnwidth\relax
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \ifnum\@ACM@authorsperrow>0\relax
+ \divide\author@bx@wd by \@ACM@authorsperrow\relax
+ \else
+ \ifcase\num@authorgroups
+ \relax % 0?
+ \or % 1=one author per row
+ \else % 2=two authors per row
+ \divide\author@bx@wd by 2\relax
+ \fi
+ \fi
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}%
+ \def\@author##1{\ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\par##1}%
+ \else
+ \g@addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
+ \def\email##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{\nolinkurl{##2}}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
+ \fi}%
+ \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{%
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
+ ##2\@ACM@checkaffil}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par
+ \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
+ \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
+ ##2\@ACM@checkaffil}%
+ \fi
+ \global\let\and\@typeset@author@bx}%
+ \bgroup\hsize=\columnwidth
+ \par\raggedright\leftskip=\z@
+ \lineskip=1pc\noindent
+ \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}
+\def\@mkauthorsaddresses{%
+ \ifnum\num@authors>1\relax
+ Authors' \else Author's \fi
+ Contact Information:
+ \bgroup
+ \def\streetaddress##1{\ClassWarning{\@classname}{ACM no longer collects
+ authors' postal addresses. I am ignoring your street
+ address}\unskip\ignorespaces}%
+ \def\postcode##1{\ClassWarning{\@classname}{ACM no longer collects
+ authors' postal addresses. I am ignoring your postal
+ code}\unskip\ignorespaces}%
+ \def\position##1{\unskip\ignorespaces}%
+ \gdef\@ACM@institution@separator{, }%
+ \def\institution##1{\unskip\@ACM@institution@separator ##1\gdef\@ACM@institution@separator{ and }}%
+ \def\city##1{\unskip, ##1}%
+ \def\state##1{\unskip, ##1}%
+ \renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
+ \def\country##1{\unskip, ##1}%
+ \def\and{\unskip; \gdef\@ACM@institution@separator{, }}%
+ \def\@author##1{##1}%
+ \def\email##1##2{\unskip, \nolinkurl{##2}}%
+ \addresses
+ \egroup}
+\AtEndDocument{\if@ACM@nonacm\else\if@ACM@journal
+ \ifx\@authorsaddresses\@empty
+ \ClassWarningNoLine{\@classname}{Authors'
+ addresses are mandatory for ACM journals}%
+ \fi\fi\fi}
+\def\@setaddresses{}
+\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}
+\def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
+\def\@mkteasers{%
+ \ifx\@teaserfigures\@empty\else
+ \def\@teaser##1{\par\bigskip\bgroup
+ \captionsetup{type=figure}##1\egroup\par}
+ \global\setbox\mktitle@bx=\vbox{\noindent\unvbox\mktitle@bx\par
+ \noindent\@Description@presentfalse
+ \@teaserfigures\par\if@Description@present\else
+ \global\@undescribed@imagestrue
+ \ClassWarning{\@classname}{A possible image without
+ description}\fi
+ \medskip}%
+ \fi}
+\def\@mkabstract{\bgroup
+ \ifx\@abstract\@lempty\else
+ {\phantomsection\addcontentsline{toc}{section}{\abstractname}%
+ \if@ACM@journal
+ \everypar{\setbox\z@\lastbox\everypar{}}\small
+ \else
+ \section*{\abstractname}%
+ \fi
+ \ignorespaces\@abstract\par}%
+ \fi\egroup}
+\def\@mktranslatedabstract#1{\selectlanguage{#1}%
+ \if@ACM@journal
+ \everypar{\setbox\z@\lastbox\everypar{}}\small
+ \else
+ \section*{\abstractname}%
+ \fi
+ \ignorespaces}
+\def\@mkbibcitation{\bgroup
+ \let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig
+ \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
+ \def\footnotemark{}%
+ \def\\{\unskip{} \ignorespaces}%
+ \def\footnote{\ClassError{\@classname}{Please do not use footnotes
+ inside a \string\title{} or \string\author{} command! Use
+ \string\titlenote{} or \string\authornote{} instead!}}%
+ \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
+ Article~\@acmArticle\ \fi}%
+ \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
+ \noindent\bgroup
+ \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title
+ \ifx\@subtitle\@empty. \else: \@subtitle. \fi
+ \if@ACM@nonacm\else
+ % The 'nonacm' option disables 'printacmref' by default,
+ % and the present \@mkbibcitation definition is never used
+ % in this case. The conditional remains useful if the user
+ % explicitly sets \settopmatter{printacmref=true}.
+ \if@ACM@journal@bibstrip
+ \textit{\@journalNameShort}
+ \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
+ \ref{TotPages}~\@pages@word.
+ \else
+ In \textit{\@acmBooktitle}%
+ \ifx\@acmEditors\@empty\textit{.}\else
+ \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.%
+ \fi\
+ ACM, New York, NY, USA%
+ \@article@string\unskip, \ref{TotPages}~\@pages@word.
+ \fi
+ \fi
+ \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
+\par\egroup}
+\def\@printendtopmatter{%
+ \let\@vspace\@vspace@orig
+ \let\@vspacer\@vspacer@orig
+ \par\bigskip
+ \let\@vspace\@vspace@acm
+ \let\@vspacer\@vspacer@acm
+ }
+\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
+\def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
+\def\@typesetengagemetadata{%
+ \def\@setengagemetadata##1##2{\par\noindent\textbf{##1} ##2\par}%
+ \@acmengagemetadata}
+\ExplSyntaxOn
+\AddToHook{cmd/maketitle/before}
+ {\tagstructbegin{tag=Title}\tagmcbegin{} \tag_stop:}
+\AddToHook{cmd/maketitle/after}
+ {\tag_start:\tagmcend\tagstructend }
+\ExplSyntaxOff
+\RequirePackage{fancyhdr}
+\let\ACM@ps@plain\ps@plain
+\let\ACM@ps@myheadings\ps@myheadings
+\let\ACM@ps@headings\ps@headings
+\def\ACM@restore@pagestyle{%
+ \let\ps@plain\ACM@ps@plain
+ \let\ps@myheadings\ACM@ps@myheadings
+ \let\ps@headings\ACM@ps@headings}
+\AtBeginDocument{\ACM@restore@pagestyle}
+\if@ACM@review
+ \newsavebox{\ACM@linecount@bx}
+ \newlength\ACM@linecount@bxht
+ \newcount\ACM@linecount
+ \ACM@linecount\@ne\relax
+ \def\ACM@mk@linecount{%
+ \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont
+ \normalsize
+ \setlength{\ACM@linecount@bxht}{0pt}%
+ \loop{\color{red}\scriptsize\the\ACM@linecount}\\
+ \global\advance\ACM@linecount by \@ne
+ \addtolength{\ACM@linecount@bxht}{\baselineskip}%
+ \ifdim\ACM@linecount@bxht<\textheight\repeat
+ {\color{red}\scriptsize\the\ACM@linecount}\hfill
+ \global\advance\ACM@linecount by \@ne}}}
+\fi
+\def\ACM@linecountL{%
+ \if@ACM@review
+ \ACM@mk@linecount
+ \begin{picture}(0,0)%
+ \put(-26,-22){\usebox{\ACM@linecount@bx}}%
+ \end{picture}%
+ \fi}
+\def\ACM@linecountR{%
+ \if@ACM@review
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \relax
+ \or % acmsmall
+ \relax
+ \or % acmlarge
+ \relax
+ \or % acmtog
+ \ACM@mk@linecount
+ \or % sigconf
+ \ACM@mk@linecount
+ \or % siggraph
+ \ACM@mk@linecount
+ \or % sigplan
+ \ACM@mk@linecount
+ \or % sigchi
+ \ACM@mk@linecount
+ \or % sigchi-a
+ \ACM@mk@linecount
+ \or % acmengage
+ \ACM@mk@linecount
+ \or % acmcp
+ \relax
+ \fi
+ \begin{picture}(0,0)%
+ \put(20,-22){\usebox{\ACM@linecount@bx}}%
+ \end{picture}%
+ \fi}
+\if@ACM@timestamp
+ % Subtracting 30 from \time gives us the effect of rounding down despite
+ % \numexpr rounding to nearest
+ \newcounter{ACM@time@hours}
+ \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
+ \newcounter{ACM@time@minutes}
+ \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
+ \newcommand\ACM@timestamp{%
+ \footnotesize%
+ \ifx\@acmSubmissionID\@empty\relax\else
+ Submission ID: \@acmSubmissionID.{ }%
+ \fi
+ \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
+ \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }%
+ Page \thepage\ of \@startPage--\pageref*{TotPages}.%
+ }
+\fi
+\def\@shortauthors{%
+ \if@ACM@anonymous
+ Anon.
+ \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi
+ \else\shortauthors\fi}
+\def\@headfootfont{\sffamily\footnotesize}
+\AtBeginDocument{%
+\fancypagestyle{standardpagestyle}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{\z@}%
+ \renewcommand{\footrulewidth}{\z@}%
+ \def\@acmArticlePage{%
+ \ifx\@acmArticle\empty%
+ \if@ACM@printfolios\thepage\fi%
+ \else%
+ \@acmArticle\if@ACM@printfolios:\thepage\fi%
+ \fi%
+ }%
+ \if@ACM@journal@bibstrip@or@tog
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
+ \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
+ \fancyhead[RE]{\@shortauthors}%
+ \fancyhead[LO]{\ACM@linecountL\shorttitle}%
+ \if@ACM@nonacm\else%
+ \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}
+ \fi%
+ \or % acmsmall
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}%
+ \fancyhead[RO]{\@headfootfont\@acmArticlePage}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
+ \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
+ \if@ACM@nonacm\else%
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \fi
+ \or % acmlarge
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
+ \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
+ \fancyhead[LO]{\ACM@linecountL}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticlePage}%
+ \if@ACM@nonacm\else%
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \fi
+ \or % acmtog
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
+ \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
+ \fancyhead[LO]{\ACM@linecountL}%
+ \fancyhead[RE]{\ACM@linecountR}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}%
+ \if@ACM@nonacm\else
+ \if@ACM@journal@bibstrip
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort,
+ Vol. \@acmVolume, No.~\@acmNumber, Article \@acmArticle.
+ Publication date: \@acmPubDate.}%
+ \else
+ \fancyfoot[RO,LE]{\footnotesize \acmConference@shortname,
+ \acmConference@date, \acmConference@venue.}%
+ \fi
+ \fi
+ \else % Proceedings
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
+ \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
+ \if@ACM@nonacm
+ \fancyhead[LE]{\ACM@linecountL}%
+ \fancyhead[RO]{\ACM@linecountR}%
+ \else%
+ \if@ACM@engage
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi}%
+ \fancyhead[RO]{\@headfootfont
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
+ \ACM@linecountR}%
+ \else
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
+ \acmConference@shortname,
+ \acmConference@date, \acmConference@venue}%
+ \fancyhead[RO]{\@headfootfont
+ \acmConference@shortname,
+ \acmConference@date, \acmConference@venue\ACM@linecountR}%
+ \fi
+ \fi
+ \fi
+ \else % Proceedings
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
+ \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
+ \if@ACM@nonacm
+ \fancyhead[LE]{\ACM@linecountL}%
+ \fancyhead[RO]{\ACM@linecountR}%
+ \else%
+ \if@ACM@engage
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi}%
+ \fancyhead[RO]{\@headfootfont
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
+ \ACM@linecountR}%
+ \else
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
+ \acmConference@shortname,
+ \acmConference@date, \acmConference@venue}%
+ \fancyhead[RO]{\@headfootfont
+ \acmConference@shortname,
+ \acmConference@date, \acmConference@venue\ACM@linecountR}%
+ \fi
+ \fi
+ \fi
+ \if@ACM@sigchiamode
+ \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
+ \fi
+ \if@ACM@timestamp
+ \fancyfoot[LO,RE]{\ACM@timestamp}
+ \fi
+ \if@ACM@acmcp
+ \renewcommand{\footrulewidth}{0.1\p@}%
+ \fancyheadoffset[L]{46pt}%
+ \fancyhead[L]{\makebox[\z@][l]{%
+ \raisebox{-\dimexpr(0.2\textheight*(\ACM@ArticleType@nr-2))}{%
+ \rotatebox{90}{\colorbox{@ACM@Article@color}{\color{white}%
+ \strut\ACM@ArticleType~Article}}}}%
+ \ACM@linecountL}%
+ \fancyhead[R]{\makebox[\z@][r]{\box\@ACM@acmcpbox}}%
+ \fancyfoot[L,C]{}%
+ \fancyfoot[R]{\footnotesize
+ \@journalName, Volume~\@acmVolume, Issue~\@acmNumber,
+ \ifx\@acmArticle\@empty\else Article~\@acmArticle\fi\space
+ (\@acmPubDate)\ifx\@acmDOI\@empty\else\\\@formatdoi{\@acmDOI}\fi}
+ \fi
+}%
+\pagestyle{standardpagestyle}
+}
+\AtBeginDocument{%
+\fancypagestyle{firstpagestyle}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{\z@}%
+ \renewcommand{\footrulewidth}{\z@}%
+ \if@ACM@journal@bibstrip@or@tog
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \fancyhead[L]{\ACM@linecountL\@acmBadgeL}%
+ \fancyhead[R]{\@acmBadgeR}%
+ \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
+ \if@ACM@nonacm\else%
+ \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
+ \fi%
+ \or % acmsmall
+ \if@ACM@nonacm\else%
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fi%
+ \fancyhead[LE]{\ACM@linecountL\@acmBadgeL}%
+ \fancyhead[LO]{\ACM@linecountL\@acmBadgeL}%
+ \fancyhead[RO]{\@acmBadgeR}%
+ \fancyhead[RE]{\@acmBadgeR}%
+ \or % acmlarge
+ \if@ACM@nonacm\else%
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fi%
+ \fancyhead[RO]{\@acmBadgeR}%
+ \fancyhead[RE]{\@acmBadgeR}%
+ \fancyhead[LE]{\ACM@linecountL\@acmBadgeL}%
+ \fancyhead[LO]{\ACM@linecountL\@acmBadgeL}%
+ \or % acmtog
+ \if@ACM@nonacm\else%
+ \if@ACM@journal@bibstrip
+ \fancyfoot[RO,LE]{\footnotesize \@journalNameShort,
+ Vol. \@acmVolume, No.~\@acmNumber, Article \@acmArticle.
+ Publication date: \@acmPubDate.}%
+ \else
+ \fancyfoot[RO,LE]{\footnotesize \acmConference@shortname,
+ \acmConference@date, \acmConference@venue.}%
+ \fi
+ \fi%
+ \fancyhead[L]{\ACM@linecountL\@acmBadgeL}%
+ \fancyhead[R]{\@acmBadgeR\ACM@linecountR}%
+ \else % Conference proceedings
+ \fancyhead[L]{\ACM@linecountL\@acmBadgeL}%
+ \fancyhead[R]{\@acmBadgeR\ACM@linecountR}%
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
+ \fi
+ \else
+ \fancyhead[L]{\ACM@linecountL\@acmBadgeL}%
+ \fancyhead[R]{\@acmBadgeR\ACM@linecountR}%
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
+ \fi
+ \if@ACM@timestamp
+ \ifnum\ACM@format@nr=0\relax % Manuscript
+ \fancyfoot[LO,RE]{\ACM@timestamp\quad
+ \if@ACM@nonacm\else
+ \footnotesize Manuscript submitted to ACM
+ \fi}
+ \else
+ \fancyfoot[LO,RE]{\ACM@timestamp}
+ \fi
+ \fi
+ \if@ACM@acmcp
+ \renewcommand{\footrulewidth}{0.1\p@}%
+ \fancyheadoffset[L]{46pt}%
+ \fancyhead[L]{\makebox[\z@][l]{%
+ \raisebox{-\dimexpr(0.2\textheight*(\ACM@ArticleType@nr-2))}{%
+ \rotatebox{90}{\colorbox{@ACM@Article@color}{\color{white}%
+ \strut\ACM@ArticleType~Article}}}}%
+ \ACM@linecountL\@acmBadgeL}%
+ \fancyhead[R]{\@acmBadgeR\makebox[\z@][r]{\box\@ACM@acmcpbox}}%
+ \fancyfoot[L,C]{}%
+ \fancyfoot[R]{\footnotesize
+ \@journalName, Volume~\@acmVolume, Issue~\@acmNumber,
+ \ifx\@acmArticle\@empty\else Article~\@acmArticle\fi\space
+ (\@acmPubDate)\ifx\@acmDOI\@empty\else\\\@formatdoi{\@acmDOI}\fi}
+ \fi
+}}
+\def\ACM@NRadjust#1{%
+ \begingroup
+ \expandafter\ifx\csname Sectionformat\endcsname\relax
+ % do nothing when \Sectionformat is unknown
+ \def\next{\endgroup #1}%
+ \else
+ \def\next{\endgroup
+ \let\realSectionformat\Sectionformat
+ \def\ACM@sect@format@{#1}%
+ \let\Sectionformat\ACM@NR@adjustedSectionformat
+ %% next lines added 2018-06-17 to ensure section number is styled
+ \let\real@adddotafter\@adddotafter
+ \let\@adddotafter\ACM@adddotafter
+ #1{}% imposes the styles, but nullifies \MakeUppercase
+ \let\@adddotafter\real@adddotafter
+ }%
+ \fi \next
+}
+\def\ACM@NR@adjustedSectionformat#1#2{%
+ \realSectionformat{\ACM@sect@format{#1}}{#2}%
+ \let\Sectionformat\realSectionformat}
+\DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@}
+\def\ACM@sect@format@null#1{#1}
+\let\ACM@sect@format@\ACM@sect@format@null
+\AtBeginDocument{%
+ \expandafter\ifx\csname LTX@adddotafter\endcsname\relax
+ \let\LTX@adddotafter\@adddotafter
+ \fi
+}
+\def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi}
+\renewcommand\section{\def\@toclevel{1}%
+ \@startsection{section}{1}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\ACM@NRadjust\@secfont}}
+\renewcommand\subsection{\def\@toclevel{2}%
+ \@startsection{subsection}{2}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\ACM@NRadjust\@subsecfont}}
+\renewcommand\subsubsection{\def\@toclevel{3}%
+ \@startsection{subsubsection}{3}{\z@}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}}
+\renewcommand\paragraph{\def\@toclevel{4}%
+ \@startsection{paragraph}{4}{\parindent}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\ACM@NRadjust{\@parfont\@adddotafter}}}
+\newcommand\noindentparagraph{\def\@toclevel{4}%
+ \@startsection{paragraph}{4}{\z@}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\ACM@NRadjust{\@parfont}}}
+\renewcommand\part{\def\@toclevel{9}%
+ \@startsection{part}{9}{\z@}%
+ {-10\p@ \@plus -4\p@ \@minus -2\p@}%
+ {4\p@}%
+ {\ACM@NRadjust\@parfont}}
+\def\section@raggedright{\@rightskip\@flushglue
+ \rightskip\@rightskip
+ \leftskip\z@skip
+ \parindent\z@}
+\def\@secfont{\sffamily\bfseries\section@raggedright}
+\def\@subsecfont{\sffamily\bfseries\section@raggedright}
+\def\@subsubsecfont{\sffamily\itshape}
+\def\@parfont{\itshape}
+\setcounter{secnumdepth}{3}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or % acmsmall
+\or % acmlarge
+ \def\@secfont{\sffamily\large\section@raggedright}
+ \def\@subsecfont{\sffamily\large\section@raggedright}
+\or % acmtog
+ \def\@secfont{\sffamily\large\section@raggedright}
+ \def\@subsecfont{\sffamily\large\section@raggedright}
+\or % sigconf
+ \def\@secfont{\bfseries\Large\section@raggedright}
+ \def\@subsecfont{\bfseries\Large\section@raggedright}
+\or % siggraph
+ \def\@secfont{\sffamily\bfseries\Large\section@raggedright}
+ \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
+\or % sigplan
+ \def\@secfont{\bfseries\Large\section@raggedright}
+ \def\@subsecfont{\bfseries\section@raggedright}
+ \def\@subsubsecfont{\bfseries\section@raggedright}
+ \def\@parfont{\bfseries\itshape}
+ \def\@subparfont{\itshape}
+\or % sigchi
+ \setcounter{secnumdepth}{1}
+ \def\@secfont{\sffamily\bfseries\section@raggedright}
+ \def\@subsecfont{\sffamily\bfseries\section@raggedright}
+\or % sigchi-a
+ \setcounter{secnumdepth}{0}
+ \def\@secfont{\sffamily\bfseries\section@raggedright}
+ \def\@subsecfont{\sffamily\bfseries\section@raggedright}
+\or % acmengage
+ \def\@secfont{\bfseries\Large\section@raggedright}
+ \def\@subsecfont{\bfseries\Large\section@raggedright}
+\or %acmcp
+\fi
+\def\@adddotafter#1{#1\@addpunct{.}}
+\def\@addspaceafter#1{#1\@addpunct{\enspace}}
+\if@ACM@acmcp
+ \setcounter{secnumdepth}{-1}%
+\fi
+\providecommand*\@dotsep{4.5}
+\def\@acmplainbodyfont{\itshape}
+\def\@acmplainindent{\parindent}
+\def\@acmplainheadfont{\scshape}
+\def\@acmplainnotefont{\@empty}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or % acmsmall
+\or % acmlarge
+\or % acmtog
+\or % sigconf
+\or % siggraph
+\or % sigplan
+ \def\@acmplainbodyfont{\itshape}
+ \def\@acmplainindent{\z@}
+ \def\@acmplainheadfont{\bfseries}
+ \def\@acmplainnotefont{\normalfont}
+\or % sigchi
+\or % sigchi-a
+\or % acmengage
+\or % acmcp
+\fi
+\newtheoremstyle{acmplain}%
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space above
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space below
+ {\@acmplainbodyfont}% body font
+ {\@acmplainindent}% indent amount
+ {\@acmplainheadfont}% head font
+ {.}% punctuation after head
+ {.5em}% spacing after head
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec
+\def\@acmdefinitionbodyfont{\normalfont}
+\def\@acmdefinitionindent{\parindent}
+\def\@acmdefinitionheadfont{\itshape}
+\def\@acmdefinitionnotefont{\@empty}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or % acmsmall
+\or % acmlarge
+\or % acmtog
+\or % sigconf
+\or % siggraph
+\or % sigplan
+ \def\@acmdefinitionbodyfont{\normalfont}
+ \def\@acmdefinitionindent{\z@}
+ \def\@acmdefinitionheadfont{\bfseries}
+ \def\@acmdefinitionnotefont{\normalfont}
+\or % sigchi
+\or % sigchi-a
+\or % acmengage
+\or % acmcp
+\fi
+\newtheoremstyle{acmdefinition}%
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space above
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space below
+ {\@acmdefinitionbodyfont}% body font
+ {\@acmdefinitionindent}% indent amount
+ {\@acmdefinitionheadfont}% head font
+ {.}% punctuation after head
+ {.5em}% spacing after head
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
+\theoremstyle{acmplain}
+\AtEndPreamble{%
+ \if@ACM@acmthm
+ \theoremstyle{acmplain}
+ \@ifundefined{theorem}{%
+ \newtheorem{theorem}{Theorem}[section]
+ }{}
+ \@ifundefined{conjecture}{%
+ \newtheorem{conjecture}[theorem]{Conjecture}
+ }{}
+ \@ifundefined{proposition}{%
+ \newtheorem{proposition}[theorem]{Proposition}
+ }{}
+ \@ifundefined{lemma}{%
+ \newtheorem{lemma}[theorem]{Lemma}
+ }{}
+ \@ifundefined{corollary}{%
+ \newtheorem{corollary}[theorem]{Corollary}
+ }{}
+ \theoremstyle{acmdefinition}
+ \@ifundefined{example}{%
+ \newtheorem{example}[theorem]{Example}
+ }{}
+ \@ifundefined{definition}{%
+ \newtheorem{definition}[theorem]{Definition}
+ }{}
+ \fi
+ \theoremstyle{acmplain}
+}
+\def\@proofnamefont{\scshape}
+\def\@proofindent{\indent}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or % acmsmall
+\or % acmlarge
+\or % acmtog
+\or % sigconf
+\or % siggraph
+\or % sigplan
+ \def\@proofnamefont{\itshape}
+ \def\@proofindent{\noindent}
+\or % sigchi
+\or % sigchi-a
+\or % acmengage
+\or % acmcp
+\fi
+\renewenvironment{proof}[1][\proofname]{\par
+ \pushQED{\qed}%
+ \normalfont \topsep6\p@\@plus6\p@\relax
+ \trivlist
+ \item[\@proofindent\hskip\labelsep
+ {\@proofnamefont #1\@addpunct{.}}]\ignorespaces
+}{%
+ \popQED\endtrivlist\@endpefalse
+}
+\AtEndPreamble{%
+ \if@ACM@pbalance
+ \global\@ACM@balancefalse
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \or % acmsmall
+ \or % acmlarge
+ \or % acmtog
+ \RequirePackage{pbalance}%
+ \or % sigconf
+ \RequirePackage{pbalance}%
+ \or % siggraph
+ \RequirePackage{pbalance}%
+ \or % sigplan
+ \RequirePackage{pbalance}%
+ \or % sigchi
+ \RequirePackage{pbalance}%
+ \or % sigchi-a
+ \or % acmengage
+ \RequirePackage{pbalance}%
+ \or % acmcp
+ \fi
+ \fi
+ \if@ACM@balance
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \global\@ACM@balancefalse
+ \or % acmsmall
+ \global\@ACM@balancefalse
+ \or % acmlarge
+ \global\@ACM@balancefalse
+ \or % acmtog
+ \RequirePackage{balance}%
+ \or % sigconf
+ \RequirePackage{balance}%
+ \or % siggraph
+ \RequirePackage{balance}%
+ \or % sigplan
+ \RequirePackage{balance}%
+ \or % sigchi
+ \RequirePackage{balance}%
+ \or % sigchi-a
+ \global\@ACM@balancefalse
+ \or % acmengage
+ \RequirePackage{balance}%
+ \or % acmcp
+ \global\@ACM@balancefalse
+ \fi
+ \fi
+}
+\AtEndDocument{%
+ \if@ACM@balance
+ \if@twocolumn
+ \balance
+ \fi\fi}
+\newcommand\acksname{Acknowledgments}
+\specialcomment{acks}{%
+ \begingroup
+ \section*{\acksname}
+ \phantomsection\addcontentsline{toc}{section}{\acksname}
+}{%
+ \endgroup
+}
+\def\grantsponsor#1#2#3{#2}
+\newcommand\grantnum[3][]{#3%
+ \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
+\AtEndPreamble{%
+\if@ACM@screen
+ \includecomment{screenonly}
+ \excludecomment{printonly}
+\else
+ \excludecomment{screenonly}
+ \includecomment{printonly}
+\fi
+\if@ACM@anonymous
+ \excludecomment{anonsuppress}
+ \excludecomment{acks}
+\else
+ \includecomment{anonsuppress}
+\fi}
+\newcommand\showeprint[2][arxiv]{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty\def\@tempa{arxiv}\fi
+ \def\@tempb{arxiv}%
+ \ifx\@tempa\@tempb\relax
+ arXiv:\href{https://arxiv.org/abs/#2}{#2}%
+ \else
+ \def\@tempb{arXiv}%
+ \ifx\@tempa\@tempb\relax
+ arXiv:\href{https://arxiv.org/abs/#2}{#2}%
+ \else
+ #1:#2%
+ \fi
+ \fi}
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+ \columnseprule\z@ \columnsep 35\p@
+ \@indextitlestyle
+ \let\item\@idxitem
+ \parindent\z@ \parskip\z@\@plus.3\p@\relax
+ \raggedright
+ \hyphenpenalty\@M
+ \footnotesize}
+\let\@vspace@orig=\@vspace
+\let\@vspacer@orig=\@vspacer
+\apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should
+ only be used to provide space above/below surrounding
+ objects}}{}{}
+\apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should
+ only be used to provide space above/below surrounding
+ objects}}{}{}
+\let\@vspace@acm=\@vspace
+\let\@vspacer@acm=\@vspacer
+\let\ACM@origbaselinestretch\baselinestretch
+\AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else
+ \ClassError{\@classname}{An attempt to redefine
+ \string\baselinestretch\space detected. Please do not do this for
+ ACM submissions!}\fi}
+\normalsize\normalfont\frenchspacing
+\endinput
+%%
+%% End of file `acmart-tagged.cls'.
diff --git a/Master/texmf-dist/tex/latex/acmart/acmart.cls b/Master/texmf-dist/tex/latex/acmart/acmart.cls
index d0bbde47afb..b6ea2e7f9c4 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/05/27 v2.08 Typesetting articles for the Association for Computing Machinery]
+[2024/08/25 v2.09 Typesetting articles for the Association for Computing Machinery]
\def\@classname{acmart}
\InputIfFileExists{acmart-preload-hook.tex}{%
\ClassWarning{\@classname}{%
@@ -47,13 +47,13 @@
\RequirePackage{xkeyval}
\RequirePackage{xstring}
\RequirePackage{iftex}
-\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
+\define@choicekey*+{\@classname.cls}{format}[\ACM@format\ACM@format@nr]{%
manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
sigplan, sigchi, sigchi-a, acmengage, acmcp}[manuscript]{}{%
\ClassError{\@classname}{The option format must be manuscript,
acmsmall, acmlarge, acmtog, sigconf, siggraph,
sigplan, sigchi or sigchi-a}}
-\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
+\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{\@classname.cls}{format=#1}}}
\@DeclareACMFormat{manuscript}
\@DeclareACMFormat{acmsmall}
\@DeclareACMFormat{acmlarge}
@@ -66,7 +66,7 @@
\@DeclareACMFormat{acmengage}
\@DeclareACMFormat{acmcp}
\ExecuteOptionsX{format}
-\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{screen}[true]{%
\if@ACM@screen
\PackageInfo{\@classname}{Using screen mode}%
\else
@@ -74,7 +74,7 @@
\fi}{\PackageError{\@classname}{The option screen can be either true or
false}}
\ExecuteOptionsX{screen=false}
-\define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{urlbreakonhyphens}[true]{%
\if@ACM@urlbreakonhyphens
\PackageInfo{\@classname}{Using breaking urls on hyphens}%
\else
@@ -82,7 +82,7 @@
\fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or
false}}
\ExecuteOptionsX{urlbreakonhyphens=true}
-\define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{acmthm}[true]{%
\if@ACM@acmthm
\PackageInfo{\@classname}{Requiring acmthm}%
\else
@@ -90,7 +90,7 @@
\fi}{\PackageError{\@classname}{The option acmthm can be either true or
false}}
\ExecuteOptionsX{acmthm=true}
-\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{review}[true]{%
\if@ACM@review
\PackageInfo{\@classname}{Using review mode}%
\AtBeginDocument{\@ACM@printfoliostrue}%
@@ -99,7 +99,7 @@
\fi}{\PackageError{\@classname}{The option review can be either true or
false}}
\ExecuteOptionsX{review=false}
-\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{authorversion}[true]{%
\if@ACM@authorversion
\PackageInfo{\@classname}{Using authorversion mode}%
\else
@@ -107,7 +107,7 @@
\fi}{\PackageError{\@classname}{The option authorversion can be either true or
false}}
\ExecuteOptionsX{authorversion=false}
-\define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{nonacm}[true]{%
\if@ACM@nonacm
\PackageInfo{\@classname}{Using nonacm mode}%
\AtBeginDocument{\@ACM@printacmreffalse}%
@@ -119,15 +119,15 @@
\fi}{\PackageError{\@classname}{The option nonacm can be either true or
false}}
\ExecuteOptionsX{nonacm=false}
-\define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{%
+\define@boolkey+{\@classname.cls}[@ACM@]{balance}[true]{}{%
\PackageError{\@classname}{The option balance can be either true or
false}}
\ExecuteOptionsX{balance}
-\define@boolkey+{acmart.cls}[@ACM@]{pbalance}[true]{}{%
+\define@boolkey+{\@classname.cls}[@ACM@]{pbalance}[true]{}{%
\PackageError{\@classname}{The option pbalance can be either true or
false}}
\ExecuteOptionsX{pbalance=false}
-\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{natbib}[true]{%
\if@ACM@natbib
\PackageInfo{\@classname}{Explicitly selecting natbib mode}%
\else
@@ -135,7 +135,7 @@
\fi}{\PackageError{\@classname}{The option natbib can be either true or
false}}
\ExecuteOptionsX{natbib=true}
-\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{anonymous}[true]{%
\if@ACM@anonymous
\PackageInfo{\@classname}{Using anonymous mode}%
\else
@@ -143,7 +143,7 @@
\fi}{\PackageError{\@classname}{The option anonymous can be either true or
false}}
\ExecuteOptionsX{anonymous=false}
-\define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{timestamp}[true]{%
\if@ACM@timestamp
\PackageInfo{\@classname}{Using timestamp mode}%
\else
@@ -151,7 +151,7 @@
\fi}{\PackageError{\@classname}{The option timestamp can be either true or
false}}
\ExecuteOptionsX{timestamp=false}
-\define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
+\define@boolkey+{\@classname.cls}[@ACM@]{authordraft}[true]{%
\if@ACM@authordraft
\PackageInfo{\@classname}{Using authordraft mode}%
\@ACM@timestamptrue
@@ -189,13 +189,13 @@
\ClassWarning{\@classname}{%
The format siggraph is now obsolete.\MessageBreak
I am switching to sigconf.}
- \setkeys{acmart.cls}{format=sigconf}
+ \setkeys{\@classname.cls}{format=sigconf}
\fi
\ifnum\ACM@format@nr=7\relax % sigchi
\ClassWarning{\@classname}{%
The format sigchi is now obsolete.\MessageBreak
I am switching to sigconf.}
- \setkeys{acmart.cls}{format=sigconf}
+ \setkeys{\@classname.cls}{format=sigconf}
\fi
\ifnum\ACM@format@nr=8\relax % sigchi
\ClassWarning{\@classname}{%
@@ -546,7 +546,6 @@
\fi}%
\fi
\ignorespaces}
-\def\@seccntformat#1{\csname the#1\endcsname\quad}
\def\@ssect#1#2#3#4#5{%
\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
@@ -559,6 +558,7 @@
\def\@svsechd{#4{\hskip #1\relax #5}}%
\fi
\@xsect{#3}}
+\def\@seccntformat#1{\csname the#1\endcsname\quad}
\def\@starttoc#1#2{\begingroup\makeatletter
\setTrue{#1}%
\par\removelastskip\vskip\z@skip
@@ -2001,22 +2001,6 @@
Copyright held by the owner/author(s).
\fi}
\def\@formatdoi#1{\url{https://doi.org/#1}}
-\def\@ACM@copyright@check@cc{%
- \if@ACM@nonacm
- \ClassInfo{\@classname}{Using CC license with a non-acm
- material}%
- \else
- \if@ACM@engage
- \ClassInfo{\@classname}{Using CC license with ACM Enage
- material}%
- \else
- \ClassWarning{\@classname}{%
- Sorry, Creative Commons licenses are\MessageBreak
- currently not used with ACM publications\MessageBreak
- typeset by the authors}{Please use nonacm
- option or ACM Engage class to enable CC licenses}%
- \fi
- \fi}
\def\@copyrightpermission{%
\ifcase\acm@copyrightmode\relax % none
\or % acmcopyright
@@ -2145,7 +2129,6 @@
disseminate the work on their personal and corporate Web sites with
the appropriate attribution.
\or % CC
- \@ACM@copyright@check@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}}%
@@ -2321,7 +2304,7 @@
pdfsubject={\@concepts},
pdfkeywords={\@keywords},
pdfcreator={LaTeX with acmart
- \csname ver@acmart.cls\endcsname\space
+ \csname ver@\@classname.cls\endcsname\space
and hyperref
\csname ver@hyperref.sty\endcsname}}%
\andify\authors
@@ -3263,28 +3246,33 @@
\fi
}
\def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi}
-\renewcommand\section{\@startsection{section}{1}{\z@}%
+\renewcommand\section{\def\@toclevel{1}%
+ \@startsection{section}{1}{\z@}%
{-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
{.25\baselineskip}%
{\ACM@NRadjust\@secfont}}
-\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+\renewcommand\subsection{\def\@toclevel{2}%
+ \@startsection{subsection}{2}{\z@}%
{-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
{.25\baselineskip}%
{\ACM@NRadjust\@subsecfont}}
-\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+\renewcommand\subsubsection{\def\@toclevel{3}%
+ \@startsection{subsubsection}{3}{\z@}%
{-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
{-3.5\p@}%
{\ACM@NRadjust{\@subsubsecfont\@adddotafter}}}
-\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
+\renewcommand\paragraph{\def\@toclevel{4}%
+ \@startsection{paragraph}{4}{\parindent}%
{-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
{-3.5\p@}%
{\ACM@NRadjust{\@parfont\@adddotafter}}}
-\newcommand\noindentparagraph{\@startsection{paragraph}{4}{\z@}%
+\newcommand\noindentparagraph{\def\@toclevel{4}%
+ \@startsection{paragraph}{4}{\z@}%
{-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
{-3.5\p@}%
{\ACM@NRadjust{\@parfont}}}
-
-\renewcommand\part{\@startsection{part}{9}{\z@}%
+\renewcommand\part{\def\@toclevel{9}%
+ \@startsection{part}{9}{\z@}%
{-10\p@ \@plus -4\p@ \@minus -2\p@}%
{4\p@}%
{\ACM@NRadjust\@parfont}}
diff --git a/Master/texmf-dist/tex/latex/acronym/acronym.sty b/Master/texmf-dist/tex/latex/acronym/acronym.sty
index cd6f1cf2921..26054b1c25e 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,8 +40,8 @@
%%
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{acronym}[2020/04/17
- v1.47
+\ProvidesPackage{acronym}[2024/03/30
+ v1.49
Support for acronyms (Tobias Oetiker)]
\RequirePackage{suffix,xstring}
\newif\ifAC@footnote
@@ -50,6 +50,9 @@
\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 +100,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 +155,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 +206,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 +403,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
@@ -415,11 +427,7 @@
\PackageWarning{acronym}{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 +444,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,10 +455,10 @@
\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]{%
\@bsphack
@@ -518,6 +526,12 @@
\let\AC@undonewlabel\@gobble
\fi
}%
+\newcommand*\AC@placelabel@part[1]{%
+ \expandafter\ifx\csname AC@\AC@prefix#1\endcsname\AC@used
+ \else
+ {\AC@phantomsection\@verridelabel{acro:#1}}%
+ \fi
+}%
\newcommand*\AC@placelabel[1]{%
\expandafter\ifx\csname AC@\AC@prefix#1\endcsname\AC@used
\else
@@ -591,12 +605,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 +629,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 +719,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/aiplans/tikzlibraryaiplans.code.tex b/Master/texmf-dist/tex/latex/aiplans/tikzlibraryaiplans.code.tex
new file mode 100644
index 00000000000..5b6d23860c6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/aiplans/tikzlibraryaiplans.code.tex
@@ -0,0 +1,121 @@
+\ProvidesPackage{aiplan}
+\RequirePackage{tikz}
+\RequirePackage{listofitems}
+\usetikzlibrary{calc}
+\usetikzlibrary{decorations.pathreplacing, decorations.markings}
+
+
+\tikzset{
+ action/.style n args={8}{
+ draw,
+ minimum width=3cm,
+ fill=blue,
+ rounded corners,
+ minimum height={max(#1,#2)*\baseHeight cm + 0.5*\baseHeight cm},
+ label={center:#7},
+ append after command={
+ \pgfextra{
+ % Define the node name
+ \edef\nodename{\tikzlastnode}
+ \ifx#3\empty % Check if label list is empty
+ \else % Process only if not empty
+ % Read the label content
+ \setsepchar{,}
+ \readlist\nameparts{\nodename}
+ \setsepchar{,}
+
+ \ifnum#8=0\relax
+ % Define positions for preconditions and effects relative to the node with shifts
+ \ifnum#1>0
+ \readlist\labellist{#3}
+ \foreach \i in {1,...,#1} {
+ % Precondition coordinates and lines
+ \coordinate (\nodename-pre-\i) at ([xshift=-#5cm, yshift=(-\i + (#1)/2+0.25) * \baseHeight cm] \nodename.west);
+ \draw (\nodename.west |- \nodename-pre-\i) -- +(-#5,0) node [midway, above, sloped, font=\scriptsize] {\labellist[\i]};
+ }
+ \fi;
+ \readlist\labellist{#4}
+ \ifnum#2>0
+ \foreach \j in {1,...,#2} {
+ % Effect coordinates and lines
+ \coordinate (\nodename-eff-\j) at ([xshift=#6cm, yshift=(-\j + (#2)/2+0.25) * \baseHeight cm] \nodename.east);
+ \draw (\nodename.east |- \nodename-eff-\j) -- +(#6,0) node [midway, above, sloped, font=\scriptsize] {\labellist[\j]};
+ }
+ \fi;
+ \else
+ \ifnum#1>0
+ \readlist\labellist{#3}
+ \foreach \i in {1,...,#1} {
+ % Precondition coordinates and lines
+ \coordinate (\nodename-pre-\i) at ([xshift=-#5 cm, yshift=(-\i + (#1)/2+0.25) * \baseHeight cm] \nodename.west);
+ \draw (\nodename.west |- \nodename-pre-\i) -- +(-#5,0) node [midway, anchor=east, xshift=-0.5 cm, sloped, font=\scriptsize]{\labellist[\i]};
+ }
+ \fi;
+ \readlist\labellist{#4}
+ \ifnum#2>0
+ \foreach \j in {1,...,#2} {
+ % Effect coordinates and lines
+ \coordinate (\nodename-eff-\j) at ([xshift=#6 cm, yshift=(-\j + (#2)/2+0.25) * \baseHeight cm] \nodename.east);
+ \draw (\nodename.east |- \nodename-eff-\j) -- +(#6,0) node [midway,anchor=west, xshift=0.5 cm, font=\scriptsize] {\labellist[\j]};
+ }
+ \fi;
+ \fi;
+ \fi;
+ }
+ },
+ label content/.initial={#3}
+ }
+}
+
+
+% Common base style for nodes
+\tikzset{
+ % COMMENT MISSING
+ base/.style n args={5}{
+ draw,
+ minimum width=0.05cm,
+ fill=black,
+ minimum height={#1*\baseHeight cm},
+ append after command={
+ \pgfextra{
+ \edef\nodename{\tikzlastnode}
+ \setsepchar{,}
+ \readlist\labellist{#2}
+ \foreach \i in {1,...,#1} {
+ \coordinate (\nodename-#5-\i) at ([xshift=#3 cm, yshift=(-\i + (#1)/2+0.25) * \baseHeight cm] \nodename.#4);
+ \draw (\nodename.#4 |- \nodename-#5-\i) -- +(#3,0)
+ node [midway, above, sloped, font=\scriptsize] {\labellist[\i]};
+ }
+ }
+ }
+ }
+}
+
+\tikzset{
+ % Init style
+ init/.style n args={3}{
+ base={#1}{#2}{#3}{east}{eff}
+ }
+}
+
+\tikzset{
+ % Goal style
+ goal/.style n args={3}{
+ base={#1}{#2}{-#3}{west}{pre}
+ }
+}
+
+
+
+\tikzset{
+ dot/.style={
+ circle,fill,inner sep=0.1em
+ }
+}
+
+\tikzset{
+ causallink/.style={
+ ->, shorten <= 0.2cm, shorten >= 0.1cm
+ }
+}
+
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/animate/animate.sty b/Master/texmf-dist/tex/latex/animate/animate.sty
index fc126ce70ad..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{2023/06/18}
+\def\@anim@version{2024/10/14}
\ProvidesPackage{animate}
[\@anim@version\space PDF & SVG animations from files and inline graphics]
@@ -530,6 +530,7 @@
/Subtype/Widget%
/F 2%
/FT/Btn/Ff 65537%
+ /A <</S/ResetForm>>% to make pdf.js happy
/BS <</W 0>>%
/AP <</N \@anim@framexform>>%
/MK <</TP 1/I \@anim@framexform%
@@ -562,6 +563,7 @@
/Subtype/Widget%
\@anim@annotflag%
/FT/Btn/Ff 65537%
+ /A <</S/ResetForm>>%
/BS <</W 0>>%
/AP <</N \@anim@framexform>>%
/MK <</TP 1/I \@anim@framexform%
@@ -1623,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
@@ -2072,6 +2075,8 @@
\@anim@tooltip%
\if@anim@js%
/AA <</D <</S/JavaScript/JS (\@anim@btnJS{#1}{\@anim@arg})>>>>%
+ \else%
+ /A <</S/ResetForm>>%
\fi%
}%
\if@anim@js%
@@ -3347,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/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 186e5d49415..82ccbc2614e 100644
--- a/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls
+++ b/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls
@@ -5,8 +5,8 @@
%% ASME conference requirements as represented on ASME's conference web pages in 2024.
%%
%% This file's version and date:
- \def\versionno{1.37}
- \def\versiondate{2024/02/06\space}
+ \def\versionno{1.38}
+ \def\versiondate{2024/08/01\space}
%%
%% Author: John H. Lienhard, V
%% Department of Mechanical Engineering
@@ -23,7 +23,7 @@
%% 6. Provide line numbers for editing and review
%% 7. Support balancing length of columns on last page
%% 8. Provide copyright footer for federal employees and contractors
-%% 9. Support the archival PDF/A standards 1b, 2b, 2u, 3b, and 3u
+%% 9. Support archival PDF/A standards
%% 10. Enable various math and text features from the newtxmath and newtxtext packages
%% 11. Support inclusion of passages in languages other than English
%%
@@ -66,74 +66,76 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{asmeconf}[\versiondate ASME Conference Paper LaTeX Template (JHL)]
-\LoadClass[twoside,twocolumn,10pt]{article}
+\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{ifthen}% ifthenelse (many) & \whiledo (once)
-\RequirePackage{etoolbox}% using patchcmd in 4 places
+\RequirePackage{etoolbox}% using patchcmd in 4 or 5 places
+\ExplSyntaxOn
+ \str_const:Nn \ClassName {asmeconf}
+\ExplSyntaxOff
+
+%%%%%%%%%%%%% Compatibility codes for older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%% Test compatibility of older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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
+\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+\providecommand\ClassNoteNoLine[2]{\typeout{^^JClass Note #1: #2.^^J}}% log & terminal note... added to latex 2021/11/15
-\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\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+\IfFormatAtLeastTF{2020/10/01}{\relax}{%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2020/10/01 or later are recommended for the asmejour class. Older formats and packages may generate errors or fail entirely!}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now.}%
+}
+
+% check whether pdfmanagement (\DocumentMetadata) has been loaded (else fall back to hyperxmp and bookmark packages after loading hyperref)
+\newif\ifasme@pdfmanagement
+\IfPDFManagementActiveTF{
+ \asme@pdfmanagementtrue
+}{
+ \asme@pdfmanagementfalse
+ \ClassWarningNoLine{\ClassName}{pdfmanagement is not active. Will load hyperxmp and bookmark packages instead}
+}
-\IfFormatAtLeastTF{2020/10/01}{%
- \ClassInfo{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020/10/01 or later are strongly recommended for best results}
- }{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. Formats dated 2020/10/01 or later are recommended for the asmejour class. Older formats and packages may generate errors or fail entirely!}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now.}%
+% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error
+\IfFormatAtLeastTF{2021/11/15}{
+ \relax
+}{
+ \AtBeginDocument{
+ \IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
+ }
}
+% Enable pre-2020/10 formats to access essential macros later moved into LaTeX kernel
\ifdefined\NewDocumentCommand\else
\RequirePackage{xparse}% enable older installations to access features in LaTeX kernel since 2020/10/01; but need at least 2018/04...
\fi
-\DeclareDocumentCommand\LogNote{m}{%
- \IfFormatAtLeastTF{2021/11/15}{%
- \ClassNoteNoLine{asmeconf}{#1}% Added to LaTeX in Nov. 2021
- }{%
- \ClassWarningNoLine{asmeconf}{#1}%
- }
+% Provide pre-2020/10 installations with basic unicode character mappings
+\IfFormatAtLeastTF{2020/10/01}{\relax}{%
+\ifpdftex
+ \pdfgentounicode=1 %% enable CMaps; was moved into the latex kernel Oct 2020
+ \input glyphtounicode.tex %% lists of mappings; was moved into the latex kernel Oct 2020
+\fi
}
\IfPackageAtLeastTF{iftex}{2019/11/07}{\relax}{%
- \ClassError{asemconf}{Package iftex is too old. Go to \string https://ctan.org and download an up-to-date version.}%
+ \ClassError{\ClassName}{Package iftex is too old. Go to \string https://ctan.org and download an up-to-date version.}{%
+ 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.}
}
-%% Test whether \DocumentMetadata has been loaded (Thank you Ulrike Fischer)
-\newif\if@asme@pdfmanagement
-% \IfPDFManagementActiveTF{\@asme@pdfmanagementtrue}{\@asme@pdfmanagementfalse}% New 2021/07/23, don't implement yet
-\ExplSyntaxOn
- \IfFormatAtLeastTF{2020/02/02}{%
- \bool_if:nTF
- {
- \bool_lazy_and_p:nn
- {\cs_if_exist_p:N \pdfmanagement_if_active_p:}
- { \pdfmanagement_if_active_p: }
- }
- {
- \@asme@pdfmanagementtrue
- }
- {
- \@asme@pdfmanagementfalse
- }
- }{\@asme@pdfmanagementfalse}
-\ExplSyntaxOff
-
-
%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
- family=asmeconf,
+ family=\ClassName,
prefix=asmeconf@,
setkeys=\kvsetkeys,
}
%%% set key [colorlinks] to have colored hyperlinks, rather than black links (use a key with new pdfmanagement, 2021/12/01)
-\define@key{asmeconf}{colorlinks}[colorlinks]{%
+\define@key{\ClassName}{colorlinks}[colorlinks]{%
\PassOptionsToPackage{#1}{hyperref}%
}
@@ -182,12 +184,11 @@
\ifthenelse{\equal{#1}{\ac@main}}{\ac@cyrillictrue\def\ac@TtwoA{T2A}}{\relax}% comparing strings
}
-\define@key{asmeconf}{main}[english]{%
+\define@key{\ClassName}{main}{% remove default 2024/07/26, to avoid conflict with subsequent logic
\PassOptionsToPackage{main=#1,#1}{babel}% added #1 resolves conflict of russianb.ldf & ukrainianb.ldf under "main=".
\ac@mainsettrue
\ifthenelse{\equal{#1}{english}}{%
- \PassOptionsToPackage{pdflang=en}{hyperref}}{%
- \LogNote{Selecting #1 as the primary language}%
+ \ClassNoteNoLine{\ClassName}{Selecting #1 as the primary language}%
\ifthenelse{\equal{#1}{greek}}{%
\ac@greektrue
\def\ac@LGR{LGR}%
@@ -201,7 +202,7 @@
\@FindCyr{russian;belarusian;bulgarian;macedonian;serbianc;ukrainian}
}%
}
-\define@key{asmeconf}{vietnamese}[]{%
+\define@key{\ClassName}{vietnamese}[]{%
\RequirePackage[vietnamese=nohyphenation]{hyphsubst}% using key, not option, to allow loading package w/o babel warning.
\PassOptionsToPackage{vietnamese.noencoding}{babel}% modified.noencoding suppresses unnecessary warning about inputenc
\ac@vietnamesetrue
@@ -209,21 +210,20 @@
}
\DeclareDefaultOption{}% suppress warnings about unused options
-\ProcessKeyvalOptions{asmeconf}
+\ProcessKeyvalOptions{\ClassName}
-%% if main language was not chosen explicitly, default to English
+%% if main language was not chosen explicitly, ensure default to English
\ifac@mainset\relax\else
\PassOptionsToPackage{main=english}{babel}%
- \PassOptionsToPackage{pdflang=en}{hyperref}
- \ClassInfo{asmeconf}{Selecting English as the primary language, since main= not set}%
+ \ClassInfo{\ClassName}{Selecting English as the primary language, since main= not set}%
\fi
%% Turn off these keys now that we're done with them
-\def\@KeyFamily{asmeconf}
+\def\@KeyFamily{\ClassName}
\NewDocumentCommand\ac@DisableOption{m}{%
\DisableKeyvalOption[%
action=ignore,%
- class=asmeconf%
+ class=\ClassName%
]{#1}{\@KeyFamily}%
}
\NewDocumentCommand\@DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\ac@DisableOption}}
@@ -249,7 +249,7 @@
\ifpdftex
\PassOptionsToPackage{largesc=true}{newtxtext}% largesc is a boolean key in newtxtext
\else
- \ClassWarningNoLine{asmeconf}{largesc option is not available under luaLateX. It will be ignored}%
+ \ClassWarningNoLine{\ClassName}{largesc option is not available under luaLateX. It will be ignored}%
\fi
}
@@ -261,21 +261,23 @@
%% option to hyphenate the inconsolata typewriter font [hyphenate] and to issue a warning when that's done.
\DeclareOption{hyphenate}{%
\ifac@fontspec
- \ClassWarningNoLine{asmeconf}{hyphenate option is not supported by fontspec, will be ignored}%
+ \ClassWarningNoLine{\ClassName}{hyphenate option is not supported by fontspec. It will be ignored}%
\else
\PassOptionsToPackage{hyphenate}{inconsolata}% hyphenate is a key via xkeyval in inconsolata
- \LogNote{Allowing hyphenation of typewriter font}%
+ \ClassNoteNoLine{\ClassName}{Allowing hyphenation of typewriter font}%
\fi
}
%% option for monospacing in inconsolata typewriter font [mono].
+\def\MonoNotMono{WordSpace={1,1,1}}% rescaled tt font to match pdf, 2024/07/28
\DeclareOption{mono}{%
\ifac@fontspec
- \def\MonoNotMono{}%
+ \def\MonoNotMono{WordSpace={1,0,0},PunctuationSpace={3}}% NB: these are the default WordSpace values. 20204/07/30
\else
\PassOptionsToPackage{mono}{inconsolata}% mono is a key via xkeyval in inconsolata
\fi
}
%% option for unslashed zero in inconsolata typewriter font [var0].
+\def\ssztwo{}% for Inconsolatazi4; default uses slashed zero, +ss02 uses regular zero
\DeclareOption{var0}{%
\ifac@fontspec
\def\ssztwo{+ss02}% stylistic alternate for regular zero
@@ -296,7 +298,7 @@
\newif\ifac@setpdfa\ac@setpdfafalse
\newif\ifac@pdfaone\ac@pdfaonefalse
-\if@asme@pdfmanagement\else
+\ifasme@pdfmanagement\else
\SetupKeyvalOptions{
family=pdfaopt,
@@ -308,7 +310,7 @@
%%% set key [pdfa] to activate pdf/a compliance (default is pdf/A-3u)
\define@key{pdfaopt}{pdf-a}[true]{%
\IfFormatAtLeastTF{2018/12/01}{\relax}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. Formats dated 2018/12/01 or later are necessary for the [pdf-a] option. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Meanwhile, you can remove the [pdf-a] option and try again}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2018/12/01 or later are necessary for the [pdf-a] option. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Meanwhile, you can remove the [pdf-a] option and try again}%
}
\ac@setpdfatrue
\PassOptionsToPackage{pdfa}{hyperref}
@@ -344,7 +346,7 @@
%%%%%%%%%%%% PDF/A compliance related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\if@asme@pdfmanagement\else
+\ifasme@pdfmanagement\else
\ifpdftex
\ifac@pdfaone
\pdfminorversion=4 % for pdf/a-1 need version 4, not 7
@@ -353,7 +355,7 @@
\fi
\else
\ifluatex
- \ifac@setpdfa\ClassWarningNoLine{asmeconf}{pdf-a option requires pdfLaTeX engine. Under LuaLaTeX, use %
+ \ifac@setpdfa\ClassWarningNoLine{\ClassName}{pdf-a option requires pdfLaTeX engine. Under LuaLaTeX, use %
\protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{asmeconf}}%
\fi
\directlua{
@@ -367,7 +369,7 @@
end
}
\else
- \ClassError{asmeconf}{Please use either pdfLaTeX or LuaLaTeX}{This class has NOT been configured to support other engines, and the results will be unpredictable. Exit and rerun using either pdfLaTeX or LuaLaTeX.}%
+ \ClassError{\ClassName}{Please use either pdfLaTeX or LuaLaTeX}{This class has NOT been configured to support other engines, and the results will be unpredictable. Exit and rerun using either pdfLaTeX or LuaLaTeX.}%
\fi
\fi
\fi
@@ -381,19 +383,17 @@
\ifpdftex
\ifasmeconf@nofontspec
- \ClassWarningNoLine{asmeconf}{The [nofontspec] option requires LuaLaTeX. It will be ignored under pdfLaTeX}%
+ \ClassWarningNoLine{\ClassName}{The [nofontspec] option requires LuaLaTeX. It will be ignored under pdfLaTeX}%
\fi
\else
\ifasmeconf@nofontspec
- \ClassWarningNoLine{asmeconf}{The [nofontspec] option has been issued. LuaLaTeX will run without font support}%
+ \ClassWarningNoLine{\ClassName}{The [nofontspec] option has been issued. LuaLaTeX will run without font support}%
\else
\IfFormatAtLeastTF{2020/10/01}{%
\ac@fontspectrue
\fontspecloadedtrue
- \def\ssztwo{}% for Inconsolatazi4; default uses slashed zero, +ss02 uses regular zero
- \def\MonoNotMono{WordSpace={1,1.33,1.67}}% for Inconsolatazi4; default allows word spacing (is not mono)
}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX installations dated 2020/10/01 or later are needed to run LuaLaTeX with the fontspec package. Fontspec will NOT be loaded. Language support will be minimal}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You may alternatively choose the [nofontspec] option.}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX installations dated 2020/10/01 or later are needed to run LuaLaTeX with the fontspec package. Fontspec will NOT be loaded. Language support will be minimal}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You may alternatively choose the [nofontspec] option.}%
}
\fi
\fi
@@ -403,7 +403,7 @@
\PassOptionsToPackage{japanese}{babel}%
\ac@japanesetrue
\else
- \ClassWarningNoLine{asmeconf}{[japanese] option is supported only under LuaLaTeX with fontspec. It will be ignored}%
+ \ClassWarningNoLine{\ClassName}{[japanese] option is supported only under LuaLaTeX with fontspec. It will be ignored}%
\fi
}
@@ -426,23 +426,23 @@
% Several languages do not have .ldf files to load. Babel will call these on demand.
%
-\DeclareOption{arabic}{\ClassError{asmeconf}{Do not specify "arabic" as a class option}{Instead, give the option [bidi=basic] and specify "arabic" when you call the language within your document.}}
+\DeclareOption{arabic}{\ClassError{\ClassName}{Do not specify "arabic" as a class option}{Instead, give the option [bidi=basic] and specify "arabic" when you call the language within your document.}}
%
-\DeclareOption{bengali}{\ClassError{asmeconf}{Do not specify "bengali" as a class option}{Babel does not have an ldf file for Bengali. Instead, specify "bengali" when you call the language within your document. No class option is needed.}}
+\DeclareOption{bengali}{\ClassError{\ClassName}{Do not specify "bengali" as a class option}{Babel does not have an ldf file for Bengali. Instead, specify "bengali" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{chinese-simplified}{\ClassError{asmeconf}{Do not specify "chinese-simplified" as class option}{Babel does not have an ldf file for simplified Chinese. Instead, specify "chinese-simplified" when you call the language within your document. No class option is needed.}}
+\DeclareOption{chinese-simplified}{\ClassError{\ClassName}{Do not specify "chinese-simplified" as class option}{Babel does not have an ldf file for simplified Chinese. Instead, specify "chinese-simplified" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{chinese-traditional}{\ClassError{asmeconf}{Do not specify "chinese-traditional" as class option}{Babel does not have an ldf file for traditional Chinese. Instead, specify "chinese-traditional" when you call the language within your document. No class option is needed.}}
+\DeclareOption{chinese-traditional}{\ClassError{\ClassName}{Do not specify "chinese-traditional" as class option}{Babel does not have an ldf file for traditional Chinese. Instead, specify "chinese-traditional" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{chinese}{\ClassError{asmeconf}{Do not specify "chinese" as a class option}{Instead, specify either "chinese-simplified" or "chinese-traditional" when you call the language within your document. No class option is needed.}}
+\DeclareOption{chinese}{\ClassError{\ClassName}{Do not specify "chinese" as a class option}{Instead, specify either "chinese-simplified" or "chinese-traditional" when you call the language within your document. No class option is needed.}}
%
-\DeclareOption{hindi}{\ClassError{asmeconf}{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{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{asmeconf}{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{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{asmeconf}{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{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{tamil}{\ClassError{asmeconf}{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.}}
+\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
\DeclareOption*{}
@@ -462,23 +462,18 @@
\RequirePackage{graphicx} % removed obsolete options, 2023/11/19
\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}
-% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error, in preparation for tagged pdf
-\IfFormatAtLeastTF{2021/11/15}{
- \relax
-}{
- \AtBeginDocument{
- \IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
- }
-}
%%%%%%%%%%%% Table related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{booktabs}
\RequirePackage{array}
-\RequirePackage{dcolumn}% alignment on decimal places
-\newcolumntype{d}[1]{D{.}{.}{#1}}% NB: This conflicts with babel's Spanish language option which makes "." an active character.
- % To use "," separator, put this command in your preamble: \newcolumntype{d}[1]{D{,}{,}{#1}}
+\RequirePackage{dcolumn}% alignment on decimal places
+% use d{x.y} to center on "." as in "12.234"
+\newcolumntype{d}[1]{D{.}{.}{#1}}
+% NB: The above conflicts with babel's Spanish language option which makes "." an active character.
+% Instead, to use "," as the decimal separator, choose columntype "," (as in "12,234")
+\newcolumntype{,}[1]{D{,}{,}{#1}}
%%%%%%%%% Caption related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -507,7 +502,7 @@
\captionsetup[table]{labelformat=uppercase,labelfont={sf,bf,small},textfont={sf,bf,small},textformat=boldmath,labelsep=colon,skip=0.5\baselineskip} %name=TABLE,
\fi
-%% This construction avoids a failure of hyperref in relation to uppercase caption
+%% This construction avoids a failure of hyperref in relation to uppercase captions
%% Discussion: https://tex.stackexchange.com/questions/375695/maketextuppercase-inside-table-captions
\AtBeginDocument{
\let\scaption\caption
@@ -542,8 +537,17 @@
\RequirePackage[no-math]{fontspec}
\defaultfontfeatures{Ligatures=TeX,}
%
- \setmainfont{TeXGyreTermesX}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1,1.4,1},%% This stretch matches newtxtext a little better. 1.4
+ \def\FontWarning{For luaLaTeX, you MUST have these OpenType fonts installed as system fonts on your computer: TeX Gyre Termes and TeX Gyre Heros (from \string http://www.gust.org.pl/projects/e-foundry/tex-gyre) and Inconsolatazi4 (\string https://ctan.org/tex-archive/fonts/inconsolata/opentype). If you DON'T have these fonts, you will see ERROR messages!}
+%
+ \IfFontExistsTF{TeX Gyre Termes}{}{\ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{texgyreheros}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{Inconsolatazi4}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
+%
+ % The newtx package includes a modified version of TeXGyreTermes called TexGyreTermesX, which is loaded here.
+ % Can fall back to TeXGyreTermes if desired, available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ \setmainfont{TeXGyreTermesX}[
+ WordSpace = {1,1.6,1.2},%% This stretch matches newtxtext a little better; rescaled 2024/07/28
+ PunctuationSpace = 1.332,%% match fontdimen7 to newtxtext, 2024/07/28
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -552,7 +556,7 @@
Numbers = Lining,
]
\setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1,1.4,1},
+ WordSpace = {1,1,1},% These spacings match newtxtext; rescaled to unity 2024/07/28
Extension = .otf,
UprightFont = *-regular,
ItalicFont = *-italic,
@@ -562,7 +566,6 @@
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,% match newtxtext if we enable wordspacing
Scale=1.05,% rescaled from 1, 22/03/10
Extension = .otf,
UprightFont = *-Regular,
@@ -570,20 +573,22 @@
BoldFont = *-Bold,
BoldItalicFont = *-Bold,% has no italic face
RawFeature = {+ss01,\ssztwo,+ss03},
- ]
+ \MonoNotMono,% match newtxtext if we enable wordspacing; note wordspace def'd in option above.
+ ]
%
% For many languages, using babel commands helps font loading.
+ % Switched Harbbuzz to OpenType throughout, 2024/07/28
% Noto fonts are available at https://github.com/googlefonts
\def\Noto@scale{0.92}
\def\Ara@scale{0.91}% For the serif font only
\def\NotoBan@scale{0.92}% 1.} should probably stay consistent within the Noto family.
\def\NotoDev@scale{0.92}% 1.} should probably stay consistent within the Noto family.
\def\NotoTam@scale{0.92}
- \def\Noto@color{black}
+ \def\Noto@color{Color=black}% 2024/07/28. Changed this diagnostic command to by-pass a bug in luatexja-fontspec.
%
\babelprovide[import, language=Default]{arabic}
\babelfont [arabic]{rm}[Scale=\Ara@scale,
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% don't use italic face, I am told
@@ -591,7 +596,7 @@
BoldItalicFont = *-Bold,% don't use italic face, I am told
]{Amiri}% NotoNaskhArabic}% Some readers prefer Amiri font
\babelfont [arabic]{sf}[Scale=\Noto@scale,
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Extension =.ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% font has no italic face
@@ -599,7 +604,7 @@
BoldItalicFont = *-SemiBold,% font has no italic face
]{NotoSansArabic}%DejaVuSans}%NotoKufiArabic}% .otf,%
\babelfont [arabic]{tt}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Extension =.ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -610,9 +615,9 @@
%
\babelprovide[import,language=Default,script=Bangla]{bengali}
\babelfont [bengali]{rm}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoBan@scale,% same as Devanagari
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -620,9 +625,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSerifBengali}
\babelfont [bengali]{sf}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoBan@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -630,9 +635,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSansBengali}
\babelfont [bengali]{tt}[
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoBan@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -646,7 +651,7 @@
\babelprovide[import,language=Default,script=Cyrillic]{#1}
\babelfont [#1]{rm}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -655,7 +660,7 @@
]{NotoSerif}
\babelfont [#1]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -664,7 +669,7 @@
]{NotoSans}
\babelfont [#1]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -676,14 +681,14 @@
\setlocalecaption{serbian-cyrillic}{abstract}{Сажетак}% NB: utf-8
%
% Devanagari languages
- \newfontscript{Devanagari}{deva}% HarfBuzz has some problems in Hindi, see babel manual Sect. 1.13 (main issue is ra)
+ \newfontscript{Devanagari}{deva}% OpenType has some problems in Hindi, see babel manual Sect. 1.13 (main issue is ra)
\NewDocumentCommand\@LoadBabelDev{>{\SplitList{;}}m}{\ProcessList{#1}{\@DevBabel}}
\NewDocumentCommand\@DevBabel{m}{%
\babelprovide[import,language=Default]{#1}
\babelfont [#1]{rm}[%
-% Renderer=HarfBuzz,% works for Marathi, throws errors in Hindi...
+% %Renderer=OpenType,% Marathi and Hindi may respond differently...
Scale=\NotoDev@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -691,9 +696,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSerifDevanagari}
\babelfont [#1]{sf}[%
-% Renderer=HarfBuzz,% works for Marathi, throws errors in Hindi...
+% %Renderer=OpenType,% % Marathi and Hindi may respond differently...
Scale=\NotoDev@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -701,9 +706,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSansDevanagari}
\babelfont [#1]{tt}[
-% Renderer=HarfBuzz,% works for Marathi, throws errors in Hindi...
+% %Renderer=OpenType,% % Marathi and Hindi may respond differently...
Scale=\NotoDev@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -719,7 +724,7 @@
\babelfont [greek]{rm}[%
Scale=\Noto@scale,
WordSpace={1.1},% increase word spacing slightly
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -729,7 +734,7 @@
\babelfont [greek]{sf}[%
Scale=\Noto@scale,
WordSpace={1.1},% increase word spacing slightly
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -738,7 +743,7 @@
]{NotoSans}
\babelfont [greek]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -747,11 +752,14 @@
]{NotoSansMono}
%
% Japanese
+ % luatexja-fontspec seems to want lc "color" now, rather than normal "Color", as before. Commenting out.
+ % NB: luatexja-fontspec color breakage appears to be global.
\ifac@japanese
- \RequirePackage[match]{luatexja-fontspec}% japanese typesets *much* better with this loaded
+ \def\Noto@color{}% by-pass bug in luatexja-fontspec, 2024/07/28.
+ \RequirePackage[no-math]{luatexja-fontspec}% japanese typesets *much* better with this loaded
\setmainjfont{NotoSerifCJKjp}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -760,7 +768,7 @@
]
\setsansjfont{NotoSansCJKjp}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -769,7 +777,7 @@
]
\setmonojfont{NotoSansMonoCJKjp}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
BoldFont = *-Bold,
@@ -780,7 +788,7 @@
% Need at least one of the following to load the Japanese dictionary.
\babelfont [japanese]{rm}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -789,7 +797,7 @@
]{NotoSerifCJKjp}% Scale estimated
\babelfont [japanese]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -798,7 +806,7 @@
]{NotoSansCJKjp}
\babelfont [japanese]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -812,7 +820,7 @@
\babelprovide[import,language=Default]{korean}
\babelfont [korean]{rm}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -821,7 +829,7 @@
]{NotoSerifCJKkr}
\babelfont [korean]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -830,7 +838,7 @@
]{NotoSansCJK}
\babelfont [korean]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -843,7 +851,7 @@
\babelprovide[import,language=Default]{chinese-simplified}
\babelfont [chinese-simplified]{rm}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -852,7 +860,7 @@
]{NotoSerifCJKsc}
\babelfont [chinese-simplified]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -861,7 +869,7 @@
]{NotoSansCJK}
\babelfont [chinese-simplified]{tt}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
% Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -871,9 +879,9 @@
%
% Traditional Chinese (includes characters for Cantonese also)
\babelprovide[import,language=Default]{chinese-traditional}
- \babelfont [chinese-tradiational]{rm}[%
+ \babelfont [chinese-traditional]{rm}[% fixed 2024/07/28
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .otf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -882,20 +890,20 @@
]{NotoSerifCJKtc}
\babelfont [chinese-traditional]{sf}[%
Scale=\Noto@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttc,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
BoldFont = *-Bold,
BoldItalicFont = *-Bold,% has no italic face
]{NotoSansCJK}
- \babelfont [chinese-traditional]{tt}[Scale=\Noto@scale,Color=\Noto@color]{NotoSansMonoCJKtc}
+ \babelfont [chinese-traditional]{tt}[Scale=\Noto@scale,\Noto@color]{NotoSansMonoCJKtc}
%
\babelprovide[import,language=Default]{tamil}
\babelfont [tamil]{rm}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoTam@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -903,9 +911,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSerifTamil}
\babelfont [tamil]{sf}[%
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoTam@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -913,9 +921,9 @@
BoldItalicFont = *-Bold,% has no italic face
]{NotoSansTamil}
\babelfont [tamil]{tt}[
- Renderer=HarfBuzz,
+ %Renderer=OpenType,
Scale=\NotoTam@scale,
- Color=\Noto@color,
+ \Noto@color,
Extension = .ttf,
UprightFont = *-Regular,
ItalicFont = *-Regular,% has no italic face
@@ -949,8 +957,13 @@
\RequirePackage{bm}% load after all math to give further access to bold math
-%% 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}}
+
% The article class calls \sloppy in two-column mode (\tolerance 9999, \emergencystretch 3em)
% The following adjustments affect line breaking; the values below are intended to produce
@@ -1000,11 +1013,11 @@
\SetMathAlphabet{\mathsf}{sans}{\encodingdefault}{\sfdefault}{m}{n}% \mathsf is upright.
-% Nice solution from DPC to prevent aux file errors (due to active characters from babel) when switching from pdflatex to lualatex.
-\ifx\directlua\undefined
- \AtBeginDocument{\immediate\write\@auxout{\detokenize{%
- \ifx\directlua\undefined\else\endinput\fi}}}
-\fi
+%% Nice solution from DPC to prevent aux file errors (due to active characters from babel) when switching from pdflatex to lualatex. Disabled, 2024/07/28
+%\ifx\directlua\undefined
+% \AtBeginDocument{\immediate\write\@auxout{\detokenize{%
+% \ifx\directlua\undefined\else\endinput\fi}}}
+%\fi
%%%%%%%% Footers and Footnotes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1034,7 +1047,6 @@
\fancyfoot[CE,CO]{\@SetFont\thepage\\[1ex]\footnotesize The United States Government retains, and by accepting the article for publication, the publisher acknowledges that the United States Government retains, a non-exclusive, paid-up, irrevocable, worldwide license to publish or reproduce the published form of this work, or allow others to do so, for United States Government purposes.}
\fi
-% was missing from earlier versions...?
\ifasmeconf@govtsome
\newgeometry{left=0.5in, right=0.5in, top=0.5in, bottom = 1.in, footskip = 0.3in, columnsep = 0.38in}
\fancyfoot[RO,RE]{}
@@ -1088,39 +1100,36 @@
\titlespacing\subsubsection{\parindent}{6pt plus 3pt minus 2pt}{0pt plus 2pt minus 1pt} % from 12 4 3, 2019/7/7
%% Special handling of the appendices
-%% Assumes that appendices are the last content in paper
-\RenewDocumentCommand{\appendix}{}{%
- \setcounter{section}{0}
- \pdfbookmark[0]{\appendicesname}{appendices}
- \renewcommand\thesection{\Alph{section}}
- \titleformat{\section}{\mathversion{sansbold}\bfseries\sffamily\raggedright}{\MakeTextUppercase{\appendixname}\ \thesection.}{0.5em}{\MakeTextUppercase}
-}
-
-%% This patches titlesec's unprotected re-definition of \footnote.
-%% See discussion here: https://github.com/jbezos/titlesec/issues/48
+%% Assumes that appendices are the last content in paper
+%% Code revised to better support tagged pdf, 2024/07/26.
+\patchcmd{\appendix}{%
+ \setcounter{subsection}{0}%
+}{%
+ \setcounter{subsection}{0}\pdfbookmark[1]{\appendicesname}{appendices}%
+}{}{}
+\apptocmd{\appendix}{\titleformat{\section}[block]{\mathversion{sansbold}\bfseries\sffamily\raggedright}{\MakeTextUppercase{\appendixname}\ \thesection.}{0.5em}{\MakeTextUppercase}}{}{}
+% Changed to block layout (rather than default hanging) whilst retaining \raggedright, since "Appendix X." is a very wide hanging indent. 2024/07/26
+
+%% This patches titlesec's unprotected re-definition of \footnote. See discussion here: https://github.com/jbezos/titlesec/issues/48
%% Without this patch, recent versions of LaTeX will require \protect\footnote in section headings.
-%% This issue may be corrected in titlesec, but keeping the patch anyway.
+%% This issue may be corrected in titlesec, but keeping the patch for backward compatibility.
\patchcmd{\ttl@select}{\def\footnote}{\protected\def\footnote}{\typeout{Asmeconf.sty patched titlesec to have protected def of footnote}}{}
%%%%%%%%%% Hyperref, bookmarks, and PDF/A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this *legacy* approach.
\ifpdftex
- %%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in the newtx documentation.
- \IfFormatAtLeastTF{2020/10/01}{\relax}{%
- \pdfgentounicode=1 %% enable CMaps; has moved into the latex kernel Oct 2020
- \input glyphtounicode.tex %% lists of mappings; has moved into the latex kernel Oct 2020
- }
+ %%% 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
\ifac@setpdfa
- %%%% pdfmanagement options, from Ulrike Fischer 2021/06/12
- \if@asme@pdfmanagement
- \ClassInfo{asmeconf}{pdfmanagement is defined. Class file will not load a color profile}
+ %% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this *legacy* approach.
+ \ifasme@pdfmanagement
+ \ClassInfo{\ClassName}{pdfmanagement is defined. Class file will not load a color profile}
\else
- \ClassInfo{asmeconf}{NOTE: pdfmanagement not defined. Class file will load a color profile}%
+ \ClassInfo{\ClassName}{NOTE: pdfmanagement not defined. Class file will load a color profile}%
%%% a fairly generic RGB color profile, aimed at on-screen rendering (not print production)
\immediate\pdfobj stream attr{/N 3} file{sRGB.icc}
\pdfcatalog{%
@@ -1158,20 +1167,20 @@
\urlstyle{same} % don't switch to typewriter font for urls
\RequirePackage{doi} % supports the nasty characters in some doi's
\renewcommand{\doitext}{DOI } % change to this from default value, {doi:}, per ASME specification
-\RequirePackage{bookmark} % improves handling of pdf bookmarks
\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
-\if@asme@pdfmanagement
- \ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load hyperxmp}
+\ifasme@pdfmanagement
+ \ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load hyperxmp and bookmark packages}
\else
+ \RequirePackage{bookmark}% improves handling of pdf bookmarks
\RequirePackage{hyperxmp}% improve transfer of metadata to pdf
% Patch bug in hyperxmp, unless a more recent version is used.
\ifdefined\hyxmp@no@bad@parts% \hyxmp@no@bad@parts is not def'd in TeX Live 2019 or older
- \@ifpackagelater{hyperxmp}{2022/10/15}{% v5.11 or later
+ \IfPackageAtLeastTF{hyperxmp}{2022/10/15}{% v5.11 or later
\relax
}{%
\newcount\hypxmp@tempcnt
@@ -1180,13 +1189,11 @@
\hyxmp@pdfstringdef\@pdfapart{\the\hypxmp@tempcnt}%
}
}
- \else
- \relax
\fi
\fi
-%%% ==> recent and evolving development of \pdfstring removes all robust commands from bookmarks, so
-%%% by early 2024, errors are not present; however, these commands serve to still suppress warnings.
+%%% ==> recent development of \pdfstring removes all robust commands from bookmarks, so that
+%%% by early 2024, errors are not present; these commands serve to still suppress warnings, however.
%% Since \bm may be useful in headings, this fix will reduce frequency with which
%% alternate pdfstrings must be given in revised section command as \section[pdfstring]{texstring}
@@ -1212,7 +1219,7 @@
%% Ensure that tag color does not follow \eqref into bookmarks, 2020/02/28
\pdfstringdefDisableCommands{%
- \def\eqref#1{(\ref{#1})}%
+ \def\eqref#1{(\ref*{#1})}% \ref* is from hyperref
}
% Let's make sure footnotes in section headings don't break pdf bookmarks.
@@ -1222,7 +1229,6 @@
}
-
%% Let's also add \footnote to the \TextUppercase exception list, so that footnote text won't be capitalized
%% if given in section headings. Ditto for \eqref
%
@@ -1244,13 +1250,12 @@
\renewcommand{\linenumberfont}{\normalfont\footnotesize\color{red}}
\AtBeginDocument{\linenumbers}
\ifasmeconf@balance
- \ClassWarningNoLine{asmeconf}{Package lineno loaded, so final column balancing will be disabled}%
+ \ClassWarningNoLine{\ClassName}{Package lineno loaded, so final column balancing will be disabled}%
\fi
%%% Patch to allow line numbering in AMS math environments.
%%% This patch is for lineno versions earlier than v5.2 [2023/05/19]. As of mid-2023, the lineno package
- %%% has been corrected to account for the AMS math environments. Retaining temporarily for backward compatibility.
+ %%% has been corrected to account for the AMS math environments. Retaining for backward compatibility.
%%% postdisplaypenalty adjusted to avoid extra line number at end, see: https://tex.stackexchange.com/a/461192/
- %%% multline has some additional problem that puts an extra line number above it.
\IfPackageAtLeastTF{lineno}{2023/05/19}{\relax}{
\NewDocumentCommand{\ac@losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}}
%
@@ -1270,7 +1275,7 @@
\ifasmeconf@balance
\RequirePackage{flushend}% flushend package is NOT compatible with lineno
\AtEndDocument{\flushcolsend}%
- \LogNote{Calling flushend package to balance column height on last page}%
+ \ClassNoteNoLine{\ClassName}{Calling flushend package to balance column height on last page}%
\fi%
\fi
\providecommand{\@LN@col}[1]{\relax}% Enable dropping lineno option without trashing .aux file
@@ -1364,7 +1369,10 @@
\NewDocumentCommand\PaperNo{m}{\gdef\@PaperNo{#1}}
\providecommand\@PaperNo{\protect\phantom{NO.}}
-\NewDocumentCommand\PaperTitle{m}{\gdef\@PaperTitle{#1}}
+\NewDocumentCommand\PaperTitle{m}{%
+ \gdef\@PaperTitle{#1}%
+ \gdef\@title{#1}% added 2024/07/28
+}
\providecommand\@PaperTitle{\hbox{ }}
\NewDocumentCommand\@HeaderTitle{}{%
@@ -1419,7 +1427,7 @@
%%%% option to use the traditional grid layout of authors or the inline style
\ifasmeconf@grid
- \LogNote{Selected option for a grid of author blocks}%
+ \ClassNoteNoLine{\ClassName}{Selected option for a grid of author blocks}%
%%%%%%%%%%%%%%%%%%%% Gridded author layout %%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1463,7 +1471,7 @@
\ifblank{#1}{%
\expandafter\xdef\csname aut@\theauthorcnt\endcsname{}%
\expandafter\xdef\csname autaffil@\theauthorcnt\endcsname{-1}
- \ClassWarning{asmeconf}{Missing author name, check for extra comma}%
+ \ClassWarning{\ClassName}{Missing author name, check for extra comma}%
}{\expandafter\xdef\csname aut@\theauthorcnt\endcsname{#1}%
}%
}% defines \aut@authorcnt as Name #1
@@ -1547,12 +1555,18 @@
\fi
\fi
\ifnum\value{authorno}>15
- \ClassWarningNoLine{asmeconf}{The class is programmed for up to 15 author blocks. If some of your authors are at the same institution, %
+ \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} }
+
\NewDocumentCommand\@ConstructAuthorBlock{}{%
\ifnum\value{authorno}>3
\JoinCoffins\firstrowauthorblock[hc,b]\secondrowauthorblock[hc,t](0pt, -1.5\baselineskip)
@@ -1566,8 +1580,34 @@
\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
+ \centerline{\TypesetCoffin\firstrowauthorblock}% in this instance, \centerline is better than \centering
+ \__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
}
+ % build comma-separated list of author names
+ \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_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
+ }
+ }
+ \ExplSyntaxOff
%%% otherwise use the new compact layout of authors
\else
@@ -1576,13 +1616,35 @@
\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{%
+ \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
}
}
+ % 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
+ }
+ \ExplSyntaxOff
\def\@makefnmark{\hbox{\@textsuperscript{\sffamily\@thefnmark}}}%
@@ -1598,14 +1660,14 @@
%%% Affiliation mark
\NewDocumentCommand{\affil}{m}{%
\ifblank{#1}{%
- \ClassWarning{asmeconf}{Empty affiliation tag}%
+ \ClassWarning{\ClassName}{Empty affiliation tag}%
\@gobble% 9 Dec 2021, addresses modification for commas
}{\bfseries\footnotemark[#1]}%
}
%%% to deal with sequential notes as, e.g., "1,*", or "1,2,*" %%%%%%%%%%
\ExplSyntaxOn
- \cs_new:Npn \__asmecome_OtherNoteComma:n {
+ \cs_new:Npn \__asmeconf_OtherNoteComma:n {
\peek_meaning:NTF \affil
{ \textsuperscript{\mdseries,} }
{ \peek_meaning:NTF \CorrespondingAuthor
@@ -1614,11 +1676,11 @@
}
}
\cs_new_eq:NN \__saveAF \affil
- \cs_gset_protected:Npn \affil #1 { \__saveAF{#1} \__asmecome_OtherNoteComma:n }
+ \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} \__asmecome_OtherNoteComma:n }
+ \cs_gset_protected:Npn \CorrespondingAuthor #1 { \__saveCA{#1} \__asmeconf_OtherNoteComma:n }
\cs_new_eq:NN \__saveJA \JointFirstAuthor
- \cs_gset_protected:Npn \JointFirstAuthor { \__saveJA \__asmecome_OtherNoteComma:n }
+ \cs_gset_protected:Npn \JointFirstAuthor { \__saveJA \__asmeconf_OtherNoteComma:n }
\ExplSyntaxOff
%%%
@@ -1633,7 +1695,6 @@
%%%% Make the title and author section
\NewDocumentCommand\MakeTitlePage{}{%
\twocolumn[
- \begin{@twocolumnfalse}
\@HeaderTitle
\vspace*{2\baselineskip}
\ifasmeconf@grid
@@ -1642,7 +1703,6 @@
\@SetAuthorBlock
\fi
\vspace*{3\baselineskip}
- \end{@twocolumnfalse}
]
\let\@makefnmark\savemakefnmark% restore footnote mark font
\renewcommand*{\thefootnote}{\fnsymbol{footnote}}
@@ -1767,12 +1827,12 @@
%%%%%%%%%%%%%%%%%% Times-like fonts for specific languages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifpdftex % Under lualatex, babel has problems with the following approach, which assumes that fontspec has not been loaded.
- % Recommend not to choose the [nofontspec] option.
+ % Recommend not to choose the [nofontspec] option.
% Several modifications made in response to newtx v1.71, 2022/03/14
\ifac@vietnamese
%
\IfFormatAtLeastTF{2020/02/02}{\relax}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the [vietnamese] option with pdflatex}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option [vietnamese].}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the [vietnamese] option with pdflatex}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option [vietnamese].}%
}
%
\AtBeginDocument{%
@@ -1831,7 +1891,7 @@
\ifac@greek
%
\IfFormatAtLeastTF{2020/02/02}{\relax}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the [greek] option with pdflatex}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option [greek].}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the [greek] option with pdflatex}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option [greek].}%
}
%
\AtBeginDocument{%
@@ -1906,7 +1966,7 @@
\ifac@cyrillic
%
\IfFormatAtLeastTF{2020/02/02}{\relax}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the cyrillic language option with pdflatex, e.g., [russian]}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option calling a cyrillic-alphabet language.}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 are necessary to use the fonts of the cyrillic language option with pdflatex, e.g., [russian]}{Please UPDATE your LaTeX distribution: TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Alternatively, delete the class option calling a cyrillic-alphabet language.}%
}
%
\AtBeginDocument{%
diff --git a/Master/texmf-dist/tex/latex/asmejour/asmejour.cls b/Master/texmf-dist/tex/latex/asmejour/asmejour.cls
index 095964ffc7b..a8cd43eae27 100644
--- a/Master/texmf-dist/tex/latex/asmejour/asmejour.cls
+++ b/Master/texmf-dist/tex/latex/asmejour/asmejour.cls
@@ -4,10 +4,9 @@
%%
%% 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.22}
- \def\versiondate{2024/01/30\space}
+ \def\versionno{1.23}
+ \def\versiondate{2024/07/24\space}
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -22,14 +21,14 @@
%% 4. Support citations, footnotes, and bold face math in section headings
%% 5. Provide optional line numbers for editing and review
%% 6. Support balancing height of columns on the last page
-%% 7. Support the archival PDF/A standards 1b, 2b, 2u, 3b, and 3u
+%% 7. Support archival PDF/A standards
%% 8. Provide copyright notices for government employees and government contractors
%% 9. Enable various math and text features from the newtxmath, mathalfa, and newtxtext packages
%% 10. Support inclusion of passages in languages other than English
%%
%% This class is compatible with both pdfLaTeX and LuaLaTeX. All packages required by the class
-%% are in standard distributions, such as TeXLive, and are also available at CTAN (https://ctan.org/).
-%% The use of an up-to-date (Feb. 2020 or later) and complete LaTeX distribution is strongly recommended.
+%% are in standard distributions, such as TeX Live, and are also available at CTAN (https://ctan.org/).
+%% The use of an up-to-date (Nov. 2022 or later) and complete LaTeX distribution is strongly recommended.
%%
%% The title block is set by specific commands that are described in the asmejour-template.tex file.
%%
@@ -57,72 +56,79 @@
%% whether in an action of contract, tort or otherwise, arising from, out of or in connection with the
%% software or the use or other dealings in the software.
%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{asmejour}[\versiondate asmejour paper format]
-\LoadClass[twoside,9pt,twocolumn]{extarticle}
-
-\ifdefined\NewDocumentCommand\else
- \RequirePackage{xparse}[2020/02/25]
-\fi
+\LoadClass[twoside,9pt]{extarticle}% twocolumn format initiated in \MakeTitle command 2024/07/20
\RequirePackage{iftex}% provides \ifpdftex, etc.
\RequirePackage{ifthen}
-%%%%%%%%%%%%% Test compatibility of older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ExplSyntaxOn
+ \str_const:Nn \ClassName {asmejour}
+\ExplSyntaxOff
-\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\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+%%%%%%%%%%%%% Some compatibility for older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\IfFormatAtLeastTF{2020/02/25}{%
- \ClassInfo{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020/10/01 or later are strongly recommended, for best results}
- }{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. Formats dated 2020/10/01 or later are recommended for the asmejour class. Older formats may generate errors or fail entirely!}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now, but your abstract will probably not compile properly if you lack the xparse package [2020/02/25], and the code will crash entirely if you lack the iftex package [2019/11/07].}%
+\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
+\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+\providecommand\ClassNoteNoLine[2]{\typeout{^^JClass Note #1: #2.^^J}}% log & terminal note... added to latex 2021/11/15
+
+\IfFormatAtLeastTF{2020/10/01}{\relax}{%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2020/10/01 or later are recommended for the asmejour class. Older formats may generate errors or fail entirely!}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past any errors for now, but your abstract will not compile properly if you lack the xparse package [2020/02/25], and the code will crash entirely if you lack the iftex package [2019/11/07].}%
}
-
-\DeclareDocumentCommand\LogNote{m}{%
- \IfFormatAtLeastTF{2021/11/15}{%
- \ClassNoteNoLine{asmejour}{#1}% Added to LaTeX in Nov. 2021
- }{%
- \ClassWarningNoLine{asmejour}{#1}%
+
+% check whether pdfmanagement (\DocumentMetadata) has been loaded (else fall back to hyperxmp and bookmark packages after loading hyperref)
+\newif\ifasme@pdfmanagement
+\IfPDFManagementActiveTF{
+ \asme@pdfmanagementtrue
+}{
+ \asme@pdfmanagementfalse
+ \ClassWarningNoLine{\ClassName}{pdfmanagement is not active. Will load hyperxmp and bookmark packages instead}
+}
+
+% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error
+\IfFormatAtLeastTF{2021/11/15}{
+ \relax
+}{
+ \AtBeginDocument{
+ \IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
}
}
-%% Test whether \DocumentMetadata has been loaded (Thank you Ulrike Fischer)
-\newif\if@asme@pdfmanagement
-\ExplSyntaxOn
-\bool_if:nTF
- {
- \bool_lazy_and_p:nn
- {\cs_if_exist_p:N \pdfmanagement_if_active_p:}
- { \pdfmanagement_if_active_p: }
- }
- {
- \@asme@pdfmanagementtrue
- }
- {
- \@asme@pdfmanagementfalse
- }
-\ExplSyntaxOff
+% Enable pre-2020/10 formats to access essential macros later moved into LaTeX kernel
+\ifdefined\NewDocumentCommand\else
+ \RequirePackage{xparse}[2020/02/25]
+\fi
+
+% Provide pre-2020/10 installations with basic unicode character mappings
+\IfFormatAtLeastTF{2020/10/01}{\relax}{%
+ \pdfgentounicode=1 %% enable CMaps; was moved into the latex kernel Oct 2020
+ \input glyphtounicode.tex %% lists of mappings; was moved into the latex kernel Oct 2020
+}
-%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{kvoptions}% this package calls kvsetkeys
\SetupKeyvalOptions{
- family=asmejour,
+ family=\ClassName,
prefix=asmejour@,
setkeys=\kvsetkeys,
}
%% for mathalfa, so we may pass options in this format: mathalfa=cal=euler, mathalfa=frak=boondox
-\define@key{asmejour}{mathalfa}{%
+\define@key{\ClassName}{mathalfa}{%
\PassOptionsToPackage{#1}{mathalfa}%
}
+%% Option to obtain line numbers [singlecolumn], 2024/07/20
+\DeclareBoolOption{singlecolumn}
+
%% Option to obtain line numbers [lineno]
\DeclareBoolOption{lineno}
@@ -132,6 +138,12 @@
%% Option to omit lists of figures and tables
\DeclareBoolOption{nolists}
+%% Option to omit ASME copyright notice [nocopyright]
+\DeclareBoolOption{nocopyright}
+
+%% Option to omit ASME footers [nofoot]
+\DeclareBoolOption{nofoot}
+
%% Option for copyright notice if all authors are government employees [govt]
\DeclareBoolOption{govt}
@@ -141,57 +153,54 @@
%% Option for government contractor copyright notice [contractor]
\DeclareBoolOption{contractor}
-%% set [barcolor=] to a color name defined by xcolor package
+%% set key [barcolor=] to pass a color name defined by xcolor package
\DeclareStringOption[black]{barcolor}
-%% the key main= passes the choice of main language to babel
+%% the key [main= ] to pass the choice of main language to babel
\newif\ifaj@mainset\aj@mainsetfalse
-\define@key{asmejour}{main}[english]{%
+\define@key{\ClassName}{main}{%
\PassOptionsToPackage{main=#1,#1}{babel}% added #1 resolves conflicts between certain .ldf files under "main=".
\aj@mainsettrue
- \ifthenelse{\equal{#1}{english}}{%
- \PassOptionsToPackage{pdflang=en}{hyperref}}{%
- \LogNote{Selecting #1 as the primary language}
- }%
+ \ClassNoteNoLine{\ClassName}{Selecting #1 as the primary language}
}
-%% if main language was not chosen explicitly, default to English
-\ifaj@mainset\relax\else
- \PassOptionsToPackage{main=english}{babel}%
- \PassOptionsToPackage{pdflang=en}{hyperref}
- \ClassInfo{Selecting English as the primary language, since main= not set}%
-\fi
-
%% Suppress warnings about unused global options, 2021/12/01
-\DeclareDefaultOption{}% suppress warning about unused mathalfa option
+\DeclareDefaultOption{}
-\ProcessKeyvalOptions{asmejour}
+\ProcessKeyvalOptions{\ClassName}
%% Turn off these keys now that we're done with them
\NewDocumentCommand\aj@DisableOption{m}{%
\DisableKeyvalOption[%
action=ignore,%
- class=asmejour%
+ class=\ClassName%
]{#1}{\@KeyFamily}%
}
\NewDocumentCommand\@DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\aj@DisableOption}}
-\def\@KeyFamily{asmejour}
-\@DisableKeys{mathalfa;barcolor;lineno;balance;nolists;govt;govtsome;contractor;main}
+\def\@KeyFamily{\ClassName}
+\@DisableKeys{mathalfa;singlecolumn;lineno;balance;nolists;nocopyright;nofoot;govt;govtsome;contractor;barcolor;main}
+
+
+%% if main language was not was chosen explicitly, default to English
+\ifaj@mainset\relax\else
+ \PassOptionsToPackage{main=english}{babel}%
+ \ClassNoteNoLine{\ClassName}{Selecting English as the primary language, since main= not set}%
+\fi
-%%%%%%% PDF/A Compliance Keys %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%% PDF/A Compliance Keys %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
\newif\ifaj@setpdfa\aj@setpdfafalse
\newif\ifaj@pdfaone\aj@pdfaonefalse
-\if@asme@pdfmanagement\else
+\ifasme@pdfmanagement\else
\SetupKeyvalOptions{
family=pdfaopt,
- prefix=pdafopt@,
+ prefix=pdfaopt@,
setkeys=\kvsetkeys,
}
@@ -201,7 +210,7 @@
\define@key{pdfaopt}{pdf-a}[true]{%
\aj@setpdfatrue
\PassOptionsToPackage{pdfa}{hyperref}
- \AtBeginDocument{\hypersetup{pdfapart=3,pdfaconformance=u}}% note: hyperref takes these options if hyperxmp is loaded
+ \AtBeginDocument{\hypersetup{pdfapart=3,pdfaconformance=u}}% hyperref takes these options if hyperxmp is loaded
}
%%% to select part 1, 2 or 3
\define@key{pdfaopt}{pdfapart}[3]{%
@@ -209,7 +218,7 @@
\AtBeginDocument{\hypersetup{pdfapart=\asmejour@tempa}}
\ifthenelse{\equal{#1}{1}}{\aj@pdfaonetrue}{\relax}%
}
- %% to select conformance b or u. NB: a is not possible with pdfLaTeX, and u is not possible with 1.
+ %% to select conformance b or u. NB: a is not currently possible with pdfLaTeX; u not possible with 1.
\ExplSyntaxOn
\define@key{pdfaopt}{pdfaconformance}[u]{%
\str_set:Ne \l_tmp_str { \str_uppercase:n {#1} }
@@ -236,9 +245,10 @@
\pdfminorversion=7 % this selection is not required
\fi
\else
- \ifaj@setpdfa\ClassWarningNoLine{asmejour}{pdf-a option requires pdfLaTeX engine. Under LuaLaTeX, use %
- \protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{asmeconf}}\fi%
- \ifx\directlua\undefined\else
+ \ifaj@setpdfa\ClassWarningNoLine{\ClassName}{pdf-a option requires pdfLaTeX. Under LuaLaTeX, use %
+ \protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{\ClassName}}%
+ \fi
+ \ifx\directlua\undefined\else % default under lualatex is 1.4
\directlua{
if pdf.getminorversion() \string~= 7 then
if (status.pdf_gone and status.pdf_gone > 0)
@@ -248,58 +258,28 @@
pdf.setminorversion(7)
end
end
+ }
\fi
- }% will lose some accented characters this way... better to use fontspec, if the system fonts exist.
\fi
\fi
-%%%%%%%%%% Further class options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% Option to omit ASME footer
-\DeclareOption{nofoot}{%
- \AtBeginDocument{\pagestyle{plain}%
- \fancypagestyle{title}{%
- \fancyhf{}
- \fancyfoot[CE,CO]{\thepage}
- }
- }
-}
-
-%% Option to omit ASME copyright
-\DeclareOption{nocopyright}{%
- \AtBeginDocument{\fancypagestyle{title}{%
- \fancyhf{}
- \fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
- \fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
- \fancyfoot[CO]{}
- }
- }
-}
+%%%%%%%%% Various font-related options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Option for slightly larger small capitals font [largesc], corrected 2021/01/29
\DeclareOption{largesc}{\PassOptionsToPackage{largesc=true}{newtxtext}}% largesc is a boolean key in newtxtext
-%% ASME word separation is greater than newtxtext defaults so change these parameters.
-\PassOptionsToPackage{spacing=0.3em, stretch=0.18em, shrink=0.10em}{newtxtext}% increased shrink from 0.08, 2021/01/30
-
%% Disable newtxtext osf option, which is not appropriate for documents in this class
\DeclareOption{osf}{%
\PassOptionsToPackage{lining}{newtxtext}%
}
-%% Option to hyphenate the typewriter font [hyphenate]
-\DeclareOption{hyphenate}{%
- \PassOptionsToPackage{hyphenate}{inconsolata}%
- \LogNote{Allowing hyphenation of typewriter font}%
-}
-
\DeclareOption{hyphenate}{%
\ifpdftex
\PassOptionsToPackage{hyphenate}{inconsolata}% hyphenate is a key via xkeyval in inconsolata
- \LogNote{Allowing hyphenation of typewriter font}%
+ \ClassNoteNoLine{\ClassName}{Allowing hyphenation of typewriter font}%
\else
- \ClassWarningNoLine{asmejour}{The [hyphenate] option is only supported with pdftex. It will be ignored}%
+ \ClassWarningNoLine{\ClassName}{The [hyphenate] option is only supported with pdftex. It will be ignored}%
\fi
}
@@ -329,7 +309,7 @@
\ProcessOptions \relax
-%%%%%%%%%%%% Page size, bibliography, graphics, color, etc. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% Page size, bibliography, graphics, color %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage[paperheight=285.7mm, paperwidth=215.900mm, left=21.100mm, right=21.100mm, top=15.9mm, bottom = 24mm, footskip=8mm]{geometry}
\setlength\columnsep{4.5mm}
@@ -342,22 +322,8 @@
\renewcommand*{\bibfont}{\footnotesize}
\RequirePackage{graphicx}
-\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}% remove obsolete options, 2023/10/23
+\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}% removed obsolete options, 2023/10/23
-% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error, in preparation for tagged pdf
-\IfFormatAtLeastTF{2021/11/15}{
- \relax
-}{
- \AtBeginDocument{
- \IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
- }
-}
-
-% Nice solution from DPC to prevent aux file errors when switching from pdflatex to lualatex
-\ifx\directlua\undefined
- \AtBeginDocument{\immediate\write\@auxout{\detokenize{%
- \ifx\directlua\undefined\else\endinput\fi}}}
-\fi
%%%%%%%%%%%%% Table related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -383,7 +349,9 @@
\ifpdftex
\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}% for backward compatibility with pre-2018 LaTeX distributions
- \RequirePackage[helvratio=0.91]{newtxtext}% add this scaling 2022/06/26
+ %% ASME word separation is greater than newtxtext defaults so change these parameters.
+ %% increased shrink from 0.08, 2021/01/30; add this helvetica scaling 2022/06/26
+ \RequirePackage[helvratio=0.91, spacing=0.3em, stretch=0.18em, shrink=0.10em]{newtxtext}% default {0.25em,0.2em,0.1em}
\RequirePackage[varl,varqu]{inconsolata}% sans typewriter font; restored varl, varqu 2020/08/10
\RequirePackage[]{newtxmath}
\else % use lualatex with newtxmath and fontspec for text primary fonts. Revised 2023/10/21.
@@ -396,20 +364,20 @@
%
\RequirePackage[varqu,varl]{inconsolata} % typewriter font for math
\renewcommand\rmdefault{ntxtlf} % roman font for math
- \DeclareFontFamily{T1}{\sfdefault}{} % sf for math
+ \DeclareFontFamily{T1}{\sfdefault}{} % sf for math
\DeclareFontShape{T1}{\sfdefault}{m}{n}{<-> s*[0.94] ec-qhvr}{} %% see t1qhv.fd; 0.9-->0.94 2022/01/15
\RequirePackage[]{newtxmath} % newtxmath still handles mathematics
\RequirePackage[no-math]{fontspec}
\defaultfontfeatures{Ligatures=TeX,}
%
- \def\FontWarning{For luaLaTeX, you MUST have these OpenType fonts installed as system fonts on your computer: TeX Gyre Termes and TeX Gyre Heros (from \string http://www.gust.org.pl/projects/e-foundry/tex-gyre) and Inconsolatazi4 (\string https://ctan.org/tex-archive/fonts/inconsolata/opentype). If DON'T have these fonts, you will see ERROR messages!}
+ \def\FontWarning{For luaLaTeX, you MUST have these OpenType fonts installed as system fonts on your computer: TeX Gyre Termes and TeX Gyre Heros (from \string http://www.gust.org.pl/projects/e-foundry/tex-gyre) and Inconsolatazi4 (\string https://ctan.org/tex-archive/fonts/inconsolata/opentype). If you DON'T have these fonts, you will see ERROR messages!}
%
- \IfFontExistsTF{TeXGyreTermesX}{}{\ClassWarning{asmeconf}{\FontWarning} }
- \IfFontExistsTF{texgyreheros}{}{ \ClassWarning{asmeconf}{\FontWarning} }
- \IfFontExistsTF{Inconsolatazi4}{}{\ClassWarning{asmeconf}{\FontWarning} }
+ \IfFontExistsTF{TeX Gyre Termes}{}{\ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{texgyreheros}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{Inconsolatazi4}{}{\ClassWarningNoLine{\ClassName}{\FontWarning} }
%
- \setmainfont{TeXGyreTermesX}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1,1.4,1},%% This stretch matches newtxtext a little better. 1.4
+ \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,
UprightFont = *-Regular,
ItalicFont = *-Italic,
@@ -418,7 +386,8 @@
Numbers = Lining,
]
\setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
- WordSpace = {1,1.4,1},
+ WordSpace = {1.20,1.43,1.2},%% This stretch matches newtxtext a little better (reset 2024/07/23)
+% WordSpace = {1,1.4,1},
Extension = .otf,
UprightFont = *-regular,
ItalicFont = *-italic,
@@ -443,7 +412,7 @@
\RequirePackage{bm}% load after all math for expanded access to bold math
-%% In addition to the word spacing options declared in line 235...
+%% In addition to the word spacing options declared in line 371...
%% Relative to size9.clo: leading reduced to 10 pt; displayskips made greater
\renewcommand\normalsize{%
\@setfontsize\normalsize\@ixpt{10\p@}% % <== was \@xipt
@@ -464,13 +433,12 @@
\newcommand*{\CondSans}{\fontencoding{T1}\fontfamily{qhvc}\selectfont}% remove extra \selectfont, 2023/10/21
\renewcommand\huge{\@setfontsize\huge{14}{14}} %... for author names only
\newcommand*{\CondSansBold}{\renewcommand\bfdefault{b}\fontencoding{T1}\fontfamily{qhvc}\selectfont\bfseries}
-\renewcommand\Huge{\@setfontsize\Huge{26.5}{26.5}} %... for title font only
+\renewcommand\Huge{\@setfontsize\Huge{26.5}{26.5}} %... for title only
\RequirePackage{metalogo,hologo}% Access to various LaTeX logos (for use in the documentation)
-%% This provides sans serif italic and sans serif bold italic math.
-%% It's intended for use in the figure and table captions.
-%% Fonts are from newtxsf package.
+%% This provides sans serif italic and sans serif bold italic math, against with fonts from newtxsf.
+%% For use in the figure and table captions.
\DeclareMathVersion{sansbold}
\SetSymbolFont{letters}{sansbold}{OML}{ntxsfmi}{b}{it}
\SetSymbolFont{lettersA}{sansbold}{U}{ntxsfmia}{b}{it}
@@ -480,8 +448,8 @@
\SetSymbolFont{operators}{sansbold}{\encodingdefault}{\sfdefault}{\bfdefault}{n}
\SetMathAlphabet{\mathsf}{sansbold}{\encodingdefault}{\sfdefault}{b}{n}% \mathsf is upright
-%% These lines are to provide math accents for the sans and sansbold math versions.
-%% The accents from ntxsfmi work normally with regular times fonts. Added 2021/01/27
+%% Provide math accents for the sans and sansbold math versions. Accents from ntxsfmi work normally
+%% with regular times fonts. 2021/01/27
\DeclareSymbolFont{lettersAB}{U}{ntxsfmia}{m}{it}
\SetSymbolFont{lettersAB}{normal}{U}{ntxsfmia}{m}{it}
\SetSymbolFont{lettersAB}{bold}{U}{ntxsfmia}{b}{it}
@@ -556,8 +524,7 @@
\DeclareMathSymbol{\sfhslash}{\mathalpha}{lettersAB}{52}% this is not upright
\DeclareMathSymbol{\sfhbar}{\mathalpha}{lettersAB}{53}% this is not upright
-%%% sans math version, potential value with PGFPlots, and provisionally called in subfigure captions.
-%%% this is experimental, still needs stress testing. 2021/01/30
+%%% sans math version, potential value with PGFPlots, called in subfigure captions. 2021/01/30
\DeclareMathVersion{sans}
\SetSymbolFont{letters}{sans}{OML}{ntxsfmi}{m}{it}
\SetSymbolFont{lettersA}{sans}{U}{ntxsfmia}{m}{it}
@@ -569,7 +536,7 @@
\SetMathAlphabet{\mathsf}{sans}{\encodingdefault}{\sfdefault}{m}{n}
-%%%%%%%%%%%%%%%%% Some adjustments to math layout %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Some adjustments to math layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setlength{\jot}{10pt}% <== default is 3pt
@@ -580,7 +547,7 @@
\allowdisplaybreaks % ASME allows these breaks
-%%%%%%%%%%%%%%%%% Equation and Line Numbering %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Equation and Line Numbering %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{etoolbox}% patching amsmath
@@ -598,37 +565,36 @@
\ifasmejour@lineno
\RequirePackage[switch,mathlines]{lineno}%
- \renewcommand{\linenumberfont}{\normalfont\footnotesize\color{red}}%
+ \renewcommand{\linenumberfont}{\normalfont\scriptsize\color{red}}%
\AtBeginDocument{\linenumbers}%
\ifasmejour@balance
- \ClassWarningNoLine{asmejour}{Package lineno loaded, so final column balancing will be disabled}%
+ \ClassWarningNoLine{\ClassName}{Package lineno loaded, so final column balancing will be disabled}%
\fi
%%% Patch to allow line numbering in AMS math environments.
%%% This patch is for lineno versions earlier than v5.2 [2023/05/19]. As of mid-2023, the lineno package
%%% has been corrected to account for the AMS math environments. Retaining temporarily for backward compatibility.
%%% postdisplaypenalty adjusted to avoid extra line number at end, see: https://tex.stackexchange.com/a/461192/
- %%% multline has some additional problem that puts an extra line number above it.
\IfPackageAtLeastTF{lineno}{2023/05/19}{\relax}{
- \NewDocumentCommand{\ac@losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}}
+ \NewDocumentCommand{\aj@losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}}
%
- \NewDocumentCommand{\ac@FixAMSMath}{m}{%
- \AtBeginEnvironment{#1}{\ac@losepostpenalty\linenomath}%
+ \NewDocumentCommand{\aj@FixAMSMath}{m}{%
+ \AtBeginEnvironment{#1}{\aj@losepostpenalty\linenomath}%
\AtEndEnvironment{#1}{\endlinenomath}%
- \AtBeginEnvironment{#1*}{\ac@losepostpenalty\linenomath}%
+ \AtBeginEnvironment{#1*}{\aj@losepostpenalty\linenomath}%
\AtEndEnvironment{#1*}{\endlinenomath}%
}
%
- \NewDocumentCommand{\ac@FixAll}{>{\SplitList{;}}m}{\ProcessList{#1}{\ac@FixAMSMath}}
+ \NewDocumentCommand{\aj@FixAll}{>{\SplitList{;}}m}{\ProcessList{#1}{\aj@FixAMSMath}}
%
- \ac@FixAll{align;alignat;gather;flalign;multline}
+ \aj@FixAll{align;alignat;gather;flalign;multline}
}
%
\else
\ProvideDocumentEnvironment{linenomath}{}{}{}%
- \ifasmejour@balance % balancing through flushend can produce weird errors
- \RequirePackage{flushend}% flushend package is NOT compatible with lineno
+ \ifasmejour@balance % balancing through flushend can produce weird errors.
+ \RequirePackage{flushend}% flushend package is NOT compatible with lineno.
\AtEndDocument{\flushcolsend}%
- \LogNote{Calling flushend package to balance column height on last page}%
+ \ClassNoteNoLine{\ClassName}{Calling flushend package to balance column height on last page}%
\fi%
\fi
@@ -638,9 +604,9 @@
%% ASME page proofs seem to align the number at top of the line, rather than bottom as done here.
-%%%%%%%%%%%%%%%%% Footer Set Up %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Footer Set Up %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%% footer text names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% footer text names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\JourName}[1]{\gdef\@JourName{#1}}
\providecommand\@JourName{\hbox{ }}
@@ -650,8 +616,8 @@
}
\providecommand\@PaperYear{\the\year}
-\def\@PreprintStringL{PREPRINT FOR REVIEW}
-\def\@PreprintStringR{PREPRINT FOR REVIEW}
+\def\@PreprintStringL{PREPRINT}% updated 2024/07/24
+\def\@PreprintStringR{PREPRINT}
\NewDocumentCommand{\PreprintString}{m o}{%
\IfNoValueTF{#2}{%
@@ -668,32 +634,53 @@
%%%%%% Fancyhdr %%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{fancyhdr}
+\RequirePackage{fancyhdr}% options revised 2024/07/23
\pagestyle{fancy}
\fancyhf{}% clear all header and footer fields
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
-\fancyfoot[RE]{\large\bfseries\sffamily Transactions of the ASME}
-\fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
-\fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
-\fancyfoot[LE]{\large\sffamily {\bfseries \@PaperNumber\thepage\space\space/}\space\space\@PreprintStringL\ }
+\ifasmejour@nofoot
+ \fancyfoot[CE,CO]{\thepage}
+\else
+ \fancyfoot[RE]{\large\bfseries\sffamily Transactions of the ASME}
+ \fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
+ \fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
+ \fancyfoot[LE]{\large\sffamily {\bfseries \@PaperNumber\thepage\space\space/}\space\space\@PreprintStringL\ }
+\fi
-\fancypagestyle{title}{%
+\fancypagestyle{title}{% is an odd page
\fancyhf{}% clear all header and footer fields
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
- \fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
- \fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
- \fancyfoot[CO]{\large\bfseries\sffamily Copyright \textcopyright\ \@PaperYear\ by ASME}
+ \ifasmejour@nofoot
+ \fancyfoot[CO]{\thepage}
+ \else
+ \fancyfoot[RO]{\large\sffamily \@PreprintStringR\space\space\bfseries/\space\space\@PaperNumber\thepage}
+ \fancyfoot[LO]{\large\bfseries\sffamily Journal of \@JourName}
+ \ifasmejour@nocopyright
+ \fancyfoot[CO]{}
+ \else
+ \fancyfoot[CO]{\large\bfseries\sffamily Copyright \textcopyright\ \@PaperYear\ by ASME}
+ \fi
+ \fi
}
+
%%%%%% Footnotes %%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{fnpos}
\makeFNbottom
\makeFNbelow
+\RequirePackage{footmisc}%
+\IfPackageAtLeastTF{footmisc}{2022/02/05}{
+ \PassOptionsToPackage{belowfloats}{footmisc}%
+ }{ \RequirePackage{fnpos}
+ \makeFNbottom
+ \makeFNbelow
+ }%
+\setlength\footnotemargin{4mm}% reduce indentation of footnotes, from footmisc
\setlength{\skip\footins}{12pt plus 2pt minus 1pt}
\renewcommand{\footnoterule}{%
@@ -702,10 +689,6 @@
\kern 2pt
}
-%% reduce indentation of footnotes
-\renewcommand\@makefntext[1]{%
- \noindent\makebox[4mm][r]{\@makefnmark}\hyphenpenalty=300\exhyphenpenalty=300 #1}% <== suppress hyphenation
-
%% Produces an unmarked footnote about the revision date.
%% This command is invoked by \date as part of \MakeTitlePage below.
%% Text can be anything given as the argument to \date{..}.
@@ -717,13 +700,13 @@
%% include a comma for sequential footnotes
\ExplSyntaxOn
- \cs_new:Npn \__asmejour_NoteComma:n { \peek_meaning:NT \footnote { \textsu{\mdseries,} } }
+ \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 }
\ExplSyntaxOff
-%%%%%%%%% Caption Related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%% Caption Related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\addto{\captionsenglish}{%
\renewcommand{\figurename}{Fig.}
@@ -739,7 +722,7 @@
\captionsetup[figure]{labelfont={sf,bf},textfont={sf,bf},textformat=boldmath,labelsep=quad}
\captionsetup[table]{labelfont={sf,bf},textfont={sf,bf},textformat=boldmath,labelsep=quad,skip=0.5\baselineskip}
-%% 30 January 2021. ASME only labels subfigures with a sans serif, italic (a), (b),... no caption text, no bold face.
+%% 2021/01/30: ASME only labels subfigures with a sans serif, italic (a), (b),... no caption text, no bold face.
\captionsetup[subfigure]{labelfont={sf},textfont={sf},textformat=sansmath,labelformat=simple}% default: =parens
\renewcommand\thesubfigure{(\textit{\alph{subfigure}})}
@@ -747,7 +730,7 @@
\renewcommand\thesubtable{(\textit{\alph{subtable}})}
-%%%%%%%%%%%% Section Headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% Section Headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage[raggedright,indentafter]{titlesec}
@@ -760,28 +743,28 @@
\titlespacing{\subsubsection}{\parindent}{12pt plus 3pt minus 2pt}{0.5em}
%% ASME style does not seem to go lower than third level heading, so ...
-%% ....putting \paragraph into \subsubsection settings.
+%% ...put \paragraph into \subsubsection settings.
\titleformat{\paragraph}[runin]{\itshape}{\thesubsubsection}{0.5em}{}[.]
\titlespacing{\paragraph}{\parindent}{14pt plus 3pt minus 2pt}{0.5em}
%% Special handling of the appendices
%% Assumes that appendices are the last technical content in paper
-\providecommand{\appendicesname}{Appendices}
-
-\RenewDocumentCommand{\appendix}{}{%
- \pdfbookmark[1]{\appendicesname}{appendices}
- \setcounter{section}{0}
- \renewcommand\thesection{\Alph{section}}
- \setcounter{equation}{0}
- \renewcommand\theequation{\Alph{section}\arabic{equation}}
- \titleformat{\section}[block]{\mathversion{bold}\bfseries\large\raggedright}{\appendixname\ \thesection:}{0.5em}{}[\setcounter{equation}{0}]
-}
+\providecommand*{\appendicesname}{Appendices}
+\newcounter{appeqn}%% Code revised to better support tagged pdf, 2024/07/24
+\patchcmd{\appendix}{%
+ \setcounter{subsection}{0}}{%
+ \setcounter{subsection}{0}%
+ \pdfbookmark[1]{\appendicesname}{appendices}%
+ \@addtoreset{equation}{appeqn}\stepcounter{appeqn}%
+ \gdef\theequation{\@Alph\c@section\@arabic\c@equation}%
+}{}{}
+\apptocmd{\appendix}{\titleformat{\section}[block]{\mathversion{bold}\bfseries\large\raggedright}{\appendixname\ \thesection:}{0.5em}{}}
%% natbib's \bibsection controls section heading for References.
-%%%%%%%%%%%%%%%%% List environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% List environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{enumitem}
@@ -789,24 +772,20 @@
%% I have no examples of sublists...
-%%%%%%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
\ifpdftex
- %%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in the newtx documentation.
- \IfFormatAtLeastTF{2020/10/01}{\relax}{%
- \pdfgentounicode=1 %% enable CMaps; has moved into the latex kernel Oct 2020
- \input glyphtounicode.tex %% lists of mappings; has moved into the latex kernel Oct 2020
- }
+ %%% to assist with unicode glyph mapping in pdf/a, per M. Sharpe's recommendation in newtx documentation
\InputIfFileExists{glyphtounicode-cmr.tex}{}{} %% additional mappings
\InputIfFileExists{glyphtounicode-ntx.tex}{}{} %% additional mappings
+ %% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
\ifaj@setpdfa
- %%%% the pdfmanagement options are experimental, from Ulrike Fischer 2021/06/12
- \if@asme@pdfmanagement
- \ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load a color profile}
+ %%%% the pdfmanagement options from Ulrike Fischer 2021/06/12
+ \ifasme@pdfmanagement
+ \ClassInfo{\ClassName}{pdfmanagement is defined. Class file will not load a color profile}
\else
- \ClassInfo{asmejour}{pdfmanagement not defined. Class file will load a color profile}%
+ \ClassInfo{\ClassName}{pdfmanagement not defined. Class file will load a color profile}%
%%% a fairly generic RGB color profile, aimed at on-screen rendering (not print production)
\immediate\pdfobj stream attr{/N 3} file{sRGB.icc}
\pdfcatalog{%
@@ -826,41 +805,41 @@
%%%
-\RequirePackage[psdextra]{hyperref} % recent kernel transition suggests providing most hyperref options via \hypersetup,
- % but setting psdextra here (for additional math support in bookmarks) 2021/12/23
+\RequirePackage[psdextra]{hyperref} % provide most hyperref options via \hypersetup, but per documentation
+ % set [psdextra] here (for additional math support in bookmarks) 2021/12/23
\hypersetup{%
- pdfborder={0 0 0},%
- bookmarksnumbered=true,%
- bookmarksopen=true,%
- bookmarksopenlevel=1,%
- colorlinks=true,%
- linkcolor=blue, %
- citecolor=blue, %
- urlcolor=blue, %
- filecolor=red, % added 2021/12/23, to make certain broken links more apparent
- pdfnewwindow=true,%
- pdfpagelayout=SinglePage, %TwoPageRight,% changed 2020/08/12
- pdfdisplaydoctitle=true%
+ pdfborder={0 0 0},
+ bookmarksnumbered=true,
+ bookmarksopen=true,
+ bookmarksopenlevel=1,
+ colorlinks=true,
+ linkcolor=blue,
+ citecolor=blue,
+ urlcolor=blue,
+ filecolor=red, % added 2021/12/23, to make certain broken links more apparent
+ pdfnewwindow=true,
+ pdfpagelayout=SinglePage, % was TwoPageRight, changed 2020/08/12
+ pdfdisplaydoctitle=true,
}
\urlstyle{same} % don't switch to typewriter font
\RequirePackage{doi} % supports nasty characters in some doi's
\renewcommand{\doitext}{doi:~} % change the default, {doi:}, to this for ASME specification
-\RequirePackage{bookmark} % improves handling of pdf bookmarks
\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
-\if@asme@pdfmanagement
- \ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load hyperxmp}
+\ifasme@pdfmanagement
+ \ClassInfo{\ClassName}{pdfmanagement is defined. Class file will not load hyperxmp}
\else
+ \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.
\@ifpackagelater{hyperxmp}{2022/10/15}{% v5.11 or later
\relax
- % \ClassInfo{asmeconf}{hyperxmp v5.11 or later is in use}
+ % \ClassInfo{\ClassName}{hyperxmp v5.11 or later is in use}
}{%
\ifx\undefined\hyxmp@no@bad@parts\relax\else
\newcount\hypxmp@tempcnt
@@ -872,10 +851,11 @@
}
\fi
-%%%%%% Adjustments to accommodate hyperref bookmarks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%% Adjustments to accommodate hyperref bookmarks %%%%%%%%%%%%%%%%%%%%%%
-%%% ==> recent and evolving development of \pdfstring removes all robust commands from bookmarks, so
-%%% the following interventions may become unnecessary over time (2021/12/23).
+%%% Recent development of \pdfstring has removed all robust commands from bookmarks (2021/12/23).
+%%% By mid-2024, no errors are thrown except for \bm; however, these commands serve to still suppress warnings.
+%%% Math shift by $..$ still creates a warning, but I am leaving that in place. To avoid, use \( .. \) instead.
%% Since \bm is useful in headings, this fix will reduce frequency with which
%% alternate pdfstrings must be given in section command as \section[pdfstring]{texstring}
@@ -896,7 +876,7 @@
%% Ensure that tag color does not follow \eqref into bookmarks, 2020/02/28
\pdfstringdefDisableCommands{%
- \def\eqref#1{(\ref{#1})}%
+ \def\eqref#1{(\ref*{#1})}%
}
%% Let's make sure footnotes in section headings don't break pdf bookmarks.
@@ -906,13 +886,13 @@
}
-%%%%%%%%%%%%% Define some section and other names for special environments %%%%%%%
+%%%%%%%%%%%%% Define some section and other names for special environments %%%%%%%%%%%%%%%%%%%%%%%%
\providecommand{\nomname}{Nomenclature}
\providecommand{\keywordname}{Keywords}
\providecommand{\CAwords}{Corresponding Author.}
-%%%%%%%%%%%%% Nomenclature Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%% Nomenclature Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Nomenclature environment in ASME Journal Style.
%% Run twice to get proper label width.
@@ -926,7 +906,7 @@
\NewDocumentCommand{\entry}{m m}{%
\ifblank{#2}{%
- \ClassError{asmejour}{The command \protect\entry should have two arguments. For subheadings, use \protect\EntryHeading}{It appears that you gave only one argument for \protect\entry. You need to include a second argument.}
+ \ClassError{\ClassName}{The command \protect\entry should have two arguments. For subheadings, use \protect\EntryHeading}{It appears that you gave only one argument for \protect\entry. You need to include a second argument.}
}{%
\item[\hfill#1${} = {}$]#2%
\@itempenalty=-\@lowpenalty%
@@ -938,7 +918,7 @@
%% A separate command command for nomenclature subheadings
\NewDocumentCommand\EntryHeading{m}{%
- \itemsep12\p@ plus 4\p@ minus 4\p@% \bigskip
+ \itemsep12\p@ plus 4\p@ minus 4\p@
\goodbreak\item[\bfseries#1\hfill]\mbox{}\itemsep3\p@ plus 1\p@ minus 1\p@\@itempenalty=1000% add \mbox for tagged pdf, 2023/10/20
}
@@ -966,28 +946,25 @@
}%
}{%
\setcounter{savedlength}{\widest}%
- \end{list}%
+ \end{list}\ignorespacesafterend
}
-%%%%%%%%%%%%%%%% List of figures and list of tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%% List of figures and list of tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% ASME requires these lists for production.
\ifasmejour@nolists
- \LogNote{Omitting lists of figures and tables}%
+ \ClassNoteNoLine{\ClassName}{Omitting lists of figures and tables}%
\else
\AtEndDocument{%
- \clearpage
\twocolumn[%
- \begin{@twocolumnfalse}
\listoffigures
\listoftables
- \end{@twocolumnfalse}
]%
}%
\fi
-%%%%%%%%%%%%%%%% Author/Title/Abstract block %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%% Author/Title/Abstract block %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{xcoffins}
@@ -1028,12 +1005,12 @@
\fi
}
-
\NewDocumentCommand\SetTitle{m}{%
\SetVerticalCoffin{\Title}{114mm}{%
\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.
\par
}
}
@@ -1086,7 +1063,7 @@
\addtocounter{footnote}{-1}% in case of more than one CA
}
-%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newlength{\@AbstractSep}%% <== separation of author/abstract coffin from main two-column text.
\setlength{\@AbstractSep}{12.5mm}
@@ -1094,12 +1071,15 @@
\NewDocumentCommand{\MakeTitlePage}{}{%
\thispagestyle{title}%
- \twocolumn[
- \begin{@twocolumnfalse}
+ \ifasmejour@singlecolumn % 2024/07/20
\@ConstructAuthorBlock
\vspace*{\@AbstractSep}
- \end{@twocolumnfalse}
- ]
+ \else
+ \twocolumn[
+ \@ConstructAuthorBlock
+ \vspace*{\@AbstractSep}
+ ]
+ \fi
\ifaj@CA
\addtocounter{footnote}{1}
\footnotetext{\CAwords}
@@ -1113,7 +1093,7 @@
\fi
}
-%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Provide compatibility with titling commands from standard LaTeX article class
@@ -1143,7 +1123,7 @@
\RenewDocumentCommand{\thanks}{m}{\relax}%% disabling this standard command, as it is inconsistent with this format
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
%%
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/base/alltt.sty b/Master/texmf-dist/tex/latex/base/alltt.sty
index 78c5e6a9241..2cbaf54abb0 100644
--- a/Master/texmf-dist/tex/latex/base/alltt.sty
+++ b/Master/texmf-dist/tex/latex/base/alltt.sty
@@ -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/article.cls b/Master/texmf-dist/tex/latex/base/article.cls
index 869bdc0db41..0dcb9da0226 100644
--- a/Master/texmf-dist/tex/latex/base/article.cls
+++ b/Master/texmf-dist/tex/latex/base/article.cls
@@ -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/bk10.clo b/Master/texmf-dist/tex/latex/base/bk10.clo
index ba4701bead9..958c45b467e 100644
--- a/Master/texmf-dist/tex/latex/base/bk10.clo
+++ b/Master/texmf-dist/tex/latex/base/bk10.clo
@@ -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..cbcbd0dae62 100644
--- a/Master/texmf-dist/tex/latex/base/bk11.clo
+++ b/Master/texmf-dist/tex/latex/base/bk11.clo
@@ -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..ccdb40f6d42 100644
--- a/Master/texmf-dist/tex/latex/base/bk12.clo
+++ b/Master/texmf-dist/tex/latex/base/bk12.clo
@@ -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..e73e83ea3c0 100644
--- a/Master/texmf-dist/tex/latex/base/book.cls
+++ b/Master/texmf-dist/tex/latex/base/book.cls
@@ -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/checkencodingsubset.tex b/Master/texmf-dist/tex/latex/base/checkencodingsubset.tex
index 02410ad693a..54663361c3d 100644
--- a/Master/texmf-dist/tex/latex/base/checkencodingsubset.tex
+++ b/Master/texmf-dist/tex/latex/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/base/doc.sty b/Master/texmf-dist/tex/latex/base/doc.sty
index ea693f4ff1d..31930d29767 100644
--- a/Master/texmf-dist/tex/latex/base/doc.sty
+++ b/Master/texmf-dist/tex/latex/base/doc.sty
@@ -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/fontmath.cfg b/Master/texmf-dist/tex/latex/base/fontmath.cfg
index eca079d15b3..a50cabda404 100644
--- a/Master/texmf-dist/tex/latex/base/fontmath.cfg
+++ b/Master/texmf-dist/tex/latex/base/fontmath.cfg
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.cfg}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k 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..29f871ac4d5 100644
--- a/Master/texmf-dist/tex/latex/base/fontmath.ltx
+++ b/Master/texmf-dist/tex/latex/base/fontmath.ltx
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.ltx}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k 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..dbb0e2e99c5 100644
--- a/Master/texmf-dist/tex/latex/base/fonttext.cfg
+++ b/Master/texmf-dist/tex/latex/base/fonttext.cfg
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.cfg}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k 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..bd2ebea0874 100644
--- a/Master/texmf-dist/tex/latex/base/fonttext.ltx
+++ b/Master/texmf-dist/tex/latex/base/fonttext.ltx
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.ltx}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k LaTeX Kernel
(Text font setup)
]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
@@ -77,9 +77,17 @@
\endgroup
\begingroup
\nfss@catcodes
+\input {t1cmss.fd}
+\input {t1cmtt.fd}
\input {ot1cmss.fd}
\input {ot1cmtt.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/base/latex.ltx b/Master/texmf-dist/tex/latex/base/latex.ltx
index 26aaec90073..614ae7a33dd 100644
--- a/Master/texmf-dist/tex/latex/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex/base/latex.ltx
@@ -709,8 +709,8 @@
%%% From File: ltvers.dtx
\def\fmtname{LaTeX2e}
\edef\fmtversion
- {2024-06-01}
-\def\patch@level{1}
+ {2024-11-01}
+\def\patch@level{0}
\edef\development@branch@name{}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
@@ -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
@@ -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{%
@@ -8587,10 +8638,10 @@ Type H <return> for immediate help.}%
\newtoks \everypar
\tl_gput_right:Nx \g__para_standard_everypar_tl {
- \exp_not:N \the
- \exp_not:N \toks
- \the \allocationnumber
- \c_space_tl
+ \exp_not:N \the
+ \exp_not:N \toks
+ \the \allocationnumber
+ \c_space_tl
}
\box_new:N \g_para_indent_box
@@ -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}
@@ -10201,6 +10268,7 @@ Type H <return> for immediate help.}%
\hbadness\@M
\hfuzz\maxdimen
\tracingonline\z@
+ \tracinglostchars\z@
\everypar={}%
\leftskip\z@skip
\rightskip\z@skip
@@ -13273,11 +13341,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 +13421,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 +13548,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 +13563,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 +13727,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 +13745,7 @@ Type H <return> for immediate help.}%
\fi
\UseHook{env/#1/begin}%
}
+
\edef\end
{\unexpanded{%
\romannumeral
@@ -13680,13 +13764,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 +14318,20 @@ 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\currentgrouplevel>\z@
+ \aftergroup\propagate@doendpe
+ \fi
+}
+\def\propagate@doendpe{\if@endpe \@doendpe \fi}
\def\@mklab#1{\hfil #1}
\def\item{%
\@inmatherr\item
@@ -14405,12 +14499,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(%)
@@ -16072,7 +16168,6 @@ Type H <return> for immediate help.}%
%% Copyright (C) 2022-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-%% \end{function}
\ExplSyntaxOn
\seq_new:N \g__mark_classes_seq
@@ -16425,6 +16520,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 +16881,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 +17236,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 +17444,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 +17492,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 +17548,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 +17641,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 +17727,11 @@ Type H <return> for immediate help.}%
{
\cs_if_free:cF { @raw@opt@ \@currname . \@currext }
{
- \keys_if_exist:nnTF {#1} { unknown }
- {
- \clist_put_right:Nv \l__keys_options_clist
- { @raw@opt@ \@currname . \@currext }
- }
+ \clist_map_inline:cn { @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 +17739,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 +17769,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
@@ -19527,17 +19686,11 @@ 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} }
- }
-}
+
+\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} }
\AddToHook{begindocument}[kernel]{
\cs_if_exist:NF \tag_if_active:T
{
@@ -19545,19 +19698,63 @@ Type H <return> for immediate help.}%
{ \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 +19762,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 +19776,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 +19859,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 +19895,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 +19926,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/latexrelease.sty b/Master/texmf-dist/tex/latex/base/latexrelease.sty
index d5ac1e8427b..13f0c665a0f 100644
--- a/Master/texmf-dist/tex/latex/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex/base/latexrelease.sty
@@ -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
@@ -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
+ {
+ \__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
+ }
+ }
{
- #1 \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
@@ -9919,6 +10035,13 @@ of this package available from CTAN}
\msg_error:nnnn { hooks }{ para-mode }{begin}{horizontal} \fi:
\__para_handle_indent:
}
+\cs_set:Npn \__para_tmp:w #1#2#3#4#5 { }
+\tl_gput_right:Nx \g__para_standard_everypar_tl {
+ \exp_not:N \the
+ \exp_not:N \toks
+ \exp_after:wN \__para_tmp:w \token_to_meaning:N \everypar
+ \c_space_tl
+}
\EndIncludeInRelease
\IncludeInRelease{2021/06/01}
{\g__para_standard_everypar_tl}{minipage~ fix}
@@ -9955,10 +10078,10 @@ of this package available from CTAN}
\newtoks \everypar
\tl_gput_right:Nx \g__para_standard_everypar_tl {
- \exp_not:N \the
- \exp_not:N \toks
- \the \allocationnumber
- \c_space_tl
+ \exp_not:N \the
+ \exp_not:N \toks
+ \the \allocationnumber
+ \c_space_tl
}
\box_new:N \g_para_indent_box
@@ -10083,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{}%
@@ -10091,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}%
@@ -10251,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{%
@@ -10284,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{%
@@ -11220,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{%
@@ -11352,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}%
@@ -11657,6 +11912,7 @@ of this package available from CTAN}
\hbadness\@M
\hfuzz\maxdimen
\tracingonline\z@
+ \tracinglostchars\z@
\everypar={}%
\leftskip\z@skip
\rightskip\z@skip
@@ -14568,11 +14824,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}
@@ -14678,14 +14965,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 }
@@ -14808,8 +15092,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
{
@@ -14823,6 +15107,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 }
@@ -14936,6 +15222,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]{%
@@ -14997,6 +15286,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]{%
@@ -15120,7 +15412,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}}%
@@ -15138,34 +15430,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}%
@@ -15177,6 +15441,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
@@ -15195,27 +15476,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
@@ -15690,6 +15996,25 @@ 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\currentgrouplevel>\z@
+ \aftergroup\propagate@doendpe
+ \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}%
@@ -15769,7 +16094,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}
@@ -15780,7 +16104,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
@@ -15788,6 +16111,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]{%
@@ -17180,7 +17519,6 @@ of this package available from CTAN}
%% Copyright (C) 2022-2024
%% Frank Mittelbach, The LaTeX Project
%%% From File: ltmarks.dtx
-%% \end{function}
\ExplSyntaxOn
\NewModuleRelease{2022/06/01}{ltmarks}
@@ -17486,6 +17824,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
{
@@ -17996,7 +18340,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{%
@@ -18459,6 +18805,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
diff --git a/Master/texmf-dist/tex/latex/base/letter.cls b/Master/texmf-dist/tex/latex/base/letter.cls
index f39504c561e..484203d5777 100644
--- a/Master/texmf-dist/tex/latex/base/letter.cls
+++ b/Master/texmf-dist/tex/latex/base/letter.cls
@@ -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/ltluatex.lua b/Master/texmf-dist/tex/latex/base/ltluatex.lua
index e92a27eb3a4..8a650531558 100644
--- a/Master/texmf-dist/tex/latex/base/ltluatex.lua
+++ b/Master/texmf-dist/tex/latex/base/ltluatex.lua
@@ -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..fc23e470097 100644
--- a/Master/texmf-dist/tex/latex/base/ltluatex.tex
+++ b/Master/texmf-dist/tex/latex/base/ltluatex.tex
@@ -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/preload.cfg b/Master/texmf-dist/tex/latex/base/preload.cfg
index 2e89d1f4e74..c10298c491c 100644
--- a/Master/texmf-dist/tex/latex/base/preload.cfg
+++ b/Master/texmf-dist/tex/latex/base/preload.cfg
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{preload.cfg}
- [2024/02/09 v3.0i LaTeX Kernel
+ [2024/09/03 v3.0k LaTeX Kernel
(Uncustomized preload font setup)
]
%%
diff --git a/Master/texmf-dist/tex/latex/base/report.cls b/Master/texmf-dist/tex/latex/base/report.cls
index cb7a32f536d..b0f60a1f5db 100644
--- a/Master/texmf-dist/tex/latex/base/report.cls
+++ b/Master/texmf-dist/tex/latex/base/report.cls
@@ -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/shortvrb.sty b/Master/texmf-dist/tex/latex/base/shortvrb.sty
index c0266dd6930..4a9ae8833df 100644
--- a/Master/texmf-dist/tex/latex/base/shortvrb.sty
+++ b/Master/texmf-dist/tex/latex/base/shortvrb.sty
@@ -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/size10.clo b/Master/texmf-dist/tex/latex/base/size10.clo
index 11be942b3e9..a2c22c047f8 100644
--- a/Master/texmf-dist/tex/latex/base/size10.clo
+++ b/Master/texmf-dist/tex/latex/base/size10.clo
@@ -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..0259727c40c 100644
--- a/Master/texmf-dist/tex/latex/base/size11.clo
+++ b/Master/texmf-dist/tex/latex/base/size11.clo
@@ -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..e1dd32b0325 100644
--- a/Master/texmf-dist/tex/latex/base/size12.clo
+++ b/Master/texmf-dist/tex/latex/base/size12.clo
@@ -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/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/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..70445cbfce7
--- /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-mirage/beamerthemeMirage.sty b/Master/texmf-dist/tex/latex/beamertheme-mirage/beamerthemeMirage.sty
new file mode 100644
index 00000000000..262d2e2a5d5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beamertheme-mirage/beamerthemeMirage.sty
@@ -0,0 +1,166 @@
+% beamerthemeMirage.sty v1.1 2024/10/24
+% 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/beamertheme-rainbow-doc-settings.sty b/Master/texmf-dist/tex/latex/beamertheme-rainbow/beamertheme-rainbow-doc-settings.sty
deleted file mode 100644
index 777cedba6ef..00000000000
--- a/Master/texmf-dist/tex/latex/beamertheme-rainbow/beamertheme-rainbow-doc-settings.sty
+++ /dev/null
@@ -1,199 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Personal helper theme for package documentations
-% Copyright samcarter
-%
-% This file may be distributed and/or modified
-% under the LaTeX Project Public License 1.3c or later
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Usage:
-% ln ~/Life/latex/beamertheme-sam/themesam.sty package-doc-settings.sty
-% \usepackage[
-% themecolor=samdblue
-% ]{\jobname-settings}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Colours
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{xcolor}
-\definecolor{samyellow}{RGB}{246,193,65}
-\definecolor{samorange}{RGB}{241,147,45}
-\definecolor{samred}{RGB}{191,26,46}% TikZbricks
-\definecolor{sammagenta}{RGB}{170,42,104}% TikZmarmots
-\definecolor{samviolet}{RGB}{136,46,114}% TikZlings
-\definecolor{samlila}{RGB}{101,67,159}% Rainbow beamer theme
-\definecolor{samdblue}{RGB}{0,51,134}% beamer theme
-\definecolor{samlblue}{RGB}{22,89,155}% TikZducks
-\definecolor{samteal}{RGB}{25,143,157}% Tcolorbox beamer theme
-\definecolor{samlgreen}{RGB}{68,170,153}% Jigsaw
-\definecolor{samdgreen}{RGB}{78,178,125}
-\definecolor{samlgray}{RGB}{160,160,185}
-\definecolor{samdgray}{RGB}{60,60,85}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Package options
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{xkeyval}
-\DeclareOptionX{themecolor}[samdblue]{\colorlet{themecolor}{#1}}
-\DeclareOptionX{listingcolor}[samlblue]{\colorlet{listingcolor}{#1}}
-\ExecuteOptionsX{themecolor,listingcolor}
-\ProcessOptionsX
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Packages
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\@ifclassloaded{beamer}{}{%
- \RequirePackage[english]{babel}
- \RequirePackage[paper=a4paper,margin=2.9cm]{geometry}
- \RequirePackage{scrlayer-scrpage}
- \let\hrulefillx\hrulefill
- \RequirePackage[bitstream-charter]{mathdesign}
- \let\hrulefill\hrulefillx
- \RequirePackage[hang,flushmargin,bottom]{footmisc}
- \RequirePackage{footnotehyper}
- \makesavenoteenv{tcolorbox}
- \RequirePackage[all]{nowidow}
- \RequirePackage[colorlinks=true,breaklinks=true,allcolors=themecolor,hyperfootnotes=false]{hyperref}
-}
-\RequirePackage[T1]{fontenc}
-\RequirePackage{xspace}
-\RequirePackage{inconsolata}% mono font with bold, but italic is missing
-% \RequirePackage[scale=0.85]{cascadia-code}
-% \AddToHook{cmd/ttfamily/before}{\fontseries{sl}}
-\RequirePackage{iexec}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Listings
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage[
- cachedir=$TMPDIR/minted/
-]{minted}
-
-% smuggling custom pygmentize style in cache folder
-% (a real pygmentise style would need installtion in some python folder)
-\begin{filecontents*}[noheader]{./sam.pygstyle}
-\makeatletter
-\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
- \let\PYG@ul=\relax \let\PYG@tc=\relax%
- \let\PYG@bc=\relax \let\PYG@ff=\relax}
-\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
-\def\PYG@toks#1+{\ifx\relax#1\empty\else%
- \PYG@tok{#1}\expandafter\PYG@toks\fi}
-\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
- \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
-\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
-
-% optional arguments
-\expandafter\def\csname PYG@tok@na\endcsname{\def\PYG@tc##1{\textcolor{black}{##1}}}
-
-% macros
-\expandafter\def\csname PYG@tok@k\endcsname{\def\PYG@tc##1{\textcolor{listingcolor}{\bfseries ##1}}}
-% curly brakets
-\expandafter\def\csname PYG@tok@nb\endcsname{\def\PYG@tc##1{\textcolor{listingcolor}{\bfseries ##1}}}
-
-% comments (italics won't work with the inconsolata font)
-\expandafter\def\csname PYG@tok@c\endcsname{\def\PYG@tc##1{\textcolor{gray}{##1}}}
-
-\def\PYGZbs{\char`\\}
-\def\PYGZus{\char`\_}
-\def\PYGZob{\char`\{}
-\def\PYGZcb{\char`\}}
-\def\PYGZca{\char`\^}
-\def\PYGZam{\char`\&}
-\def\PYGZlt{\char`\<}
-\def\PYGZgt{\char`\>}
-\def\PYGZsh{\char`\#}
-\def\PYGZpc{\char`\%}
-\def\PYGZdl{\char`\$}
-\def\PYGZhy{\char`\-}
-\def\PYGZsq{\char`\'}
-\def\PYGZdq{\char`\"}
-\def\PYGZti{\char`\~}
-% for compatibility with earlier versions
-\def\PYGZat{@}
-\def\PYGZlb{[}
-\def\PYGZrb{]}
-\makeatother
-\end{filecontents*}
-
-\iexec{mkdir -p $TMPDIR/minted && mv sam.pygstyle $TMPDIR/minted/.}
-
-\usemintedstyle{sam}
-\setminted{
- breaksymbolleft={},
- tabsize=2,
- breaklines=true,
-}
-\newminted[samcode]{latex}{}
-\newmintinline[saminline]{latex}{}
-
-% use non-bold and all coloured for inline code in articles
-\ifdefined\insertaspectratio\else
- \patchcmd{\minted@inputpyg@inline}{\minted@input}{\color{listingcolor}\renewcommand\textcolor[3][]{##3}\renewcommand\bfseries{}\minted@input}{}{}
-\fi
-
-\RequirePackage[most]{tcolorbox}
-\tcbuselibrary{minted}
-\tcbset{%
- colframe=themecolor,
- fonttitle=\bfseries,
- sidebyside,
- center lower,
- righthand width=5.7cm,
- bottom=2pt,
- top=2pt,
- left=3pt,
- right=3pt,
- sidebyside gap=10pt,
- lower separated=false,
- listing engine=minted,
- minted language=latex,
- colback=themecolor!10,
- sharp corners,
- boxrule=0pt,
- before title={\strut}
-}
-
-% avoid page breaks right in front of the tcolorbox
-\@ifclassloaded{beamer}{}{
- \tcbuselibrary{hooks}
- \tcbset{before pre={\nopagebreak[4]}}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% document settings
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\@ifclassloaded{scrartcl}{%
- \KOMAoptions{parskip=half}
- \addtokomafont{sectioning}{\color{themecolor}}
- \addtokomafont{date}{\normalsize}
- \addtokomafont{author}{\normalsize}
- \setlength{\footnotemargin}{0.7em}
-}{}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Custom macros
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\providecommand*{\CTAN}{\textsc{CTAN}\xspace}
-\providecommand*{\TikZ}{Ti\emph{k}Z\xspace}
-\providecommand*{\miktex}{MiK\TeX\xspace}
-\providecommand*{\texlive}{\TeX{}Live\xspace}
-\providecommand*{\tikzbrick}{Ti\emph{k}Zbrick\xspace}
-\providecommand*{\tikzducks}{Ti\emph{k}Zducks\xspace}
-\providecommand*{\tikzlings}{Ti\emph{k}Zlings\xspace}
-\providecommand*{\tikzmarmots}{Ti\emph{k}Zmarmots\xspace}
-\providecommand*{\ConTeXt}{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt} \ No newline at end of file
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/beautybook/Beautybook-EN.cls b/Master/texmf-dist/tex/latex/beautybook/Beautybook-EN.cls
deleted file mode 100644
index 63e3e038dff..00000000000
--- a/Master/texmf-dist/tex/latex/beautybook/Beautybook-EN.cls
+++ /dev/null
@@ -1,1166 +0,0 @@
-%This Class is based on the default book class and options will be passed
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{Beautybook-EN}[02-10-2023 V8.0 Beautybook Class]
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
-\ProcessOptions\relax
-\LoadClass[twoside]{book}
-\RequirePackage[dvipsnames,svgnames,x11names,table]{xcolor}
-\RequirePackage{cncolours}
-\RequirePackage[utf8]{inputenc} % UTF-8编码
-\RequirePackage{times} % Times New Roman Font
-\RequirePackage[T1]{fontenc}
-\RequirePackage{microtype} % 字体间距调整
-\colorlet{outermarginfgcolor}{DarkCyan} % foregroundcolor 较深
-\colorlet{outermarginbgcolor}{DarkCyan!30} % backgroundcolor 较浅
-\RequirePackage{bropd} % math 自适应数学括号命令 \br{} !!!
-\RequirePackage{tikz-imagelabels} % tikz图像标注
-\RequirePackage{epigraph-keys} % 名言引用
-\RequirePackage{fitbox} % 图像自适应
-\RequirePackage{pgfornament-han}
-\RequirePackage{tikz}
-\usetikzlibrary{calc,shadows,hobby,intersections, decorations.markings, decorations.pathreplacing,spy,arrows,shapes,fadings,trees,mindmap,patterns,shapes.arrows,shapes.symbols,tikzmark,shapes.geometric,graphs, quotes, angles,decorations.pathmorphing,through,shadings,backgrounds,positioning,fit,arrows.meta,shapes.misc,decorations.shapes}
-\RequirePackage{pgfplots} %画图 %%页面样式设计核心包 %提供\pgfonlayer命令以及下列图层指令
-\pgfplotsset{compat=1.18}
-%
-\ExplSyntaxOn
-% 封面切换程序 (LaTeX3)!
-\keys_define:nn {Beautybook/coverstyle}
- {
- cover-choose.choice:,
- cover-choose.value_required:n = true,
- cover-choose/cn.code:n = {\RequirePackage{stys/Beautybook-cover-cn}},
- cover-choose/en.code:n = {\RequirePackage{stys/Beautybook-cover-en}},
- cover-choose/enfig.code:n = {\RequirePackage{stys/Beautybook-cover-enfig}},
- cover-choose/birkar.code:n = {\RequirePackage{stys/Beautybook-cover-birkar}},
- %cover-choose .initial:n = en , % 设置 en 为初始值
- }
-\newtoks \l__Beautybook_tmpa_toks
-\cs_new_protected:Npn \coverstyle
- {
- \tex_afterassignment:D \__Beautybook_set_coverstyle:
- \l__Beautybook_tmpa_toks
- }
-\cs_new:Npn \__Beautybook_set_coverstyle:
- { \keys_set:nV { Beautybook / coverstyle } \l__Beautybook_tmpa_toks }
-% Math fonts
-\keys_define:nn {Beautybook/mathstyle}
- {
- math-font.choice:,
- math-font.value_required:n = true,
- math-font/plain.code:n={},
- math-font/stix.code:n={
- \RequirePackage{stix}
- },
- math-font/mtpro2.code:n = {
- \RequirePackage{mtpro2}
- \RequirePackage{bm}
- \DeclareFontFamily{U}{nxlmi}{}
- \DeclareFontSubstitution{U}{nxlmi}{m}{it}
- \DeclareFontShape{U}{nxlmi}{m}{it}{
- <-6.3> nxlmi05
- <6.3-8.6> nxlmi07
- <8.6-> nxlmi0
- }{}
-
- \DeclareFontShape{U}{nxlmi}{b}{it}{
- <-6.3> nxlbmi05
- <6.3-8.6> nxlbmi07
- <8.6-> nxlbmi0
- }{}
- \renewcommand{\partial}{{\text{\usefont{U}{nxlmi}{m}{it}\symbol{64}}\mspace{1mu}}}
- },
- %cover-choose .initial:n = plain , % 设置 en 为初始值
- }
-\cs_new_protected:Npn \mathstyle
- {
- \tex_afterassignment:D \__Beautybook_set_mathstyle:
- \l__Beautybook_tmpa_toks
- }
-\cs_new:Npn \__Beautybook_set_mathstyle:
- { \keys_set:nV { Beautybook / mathstyle } \l__Beautybook_tmpa_toks }
-\ExplSyntaxOff
-\RequirePackage{stys/Beautybook-bottompage} %封底
-\RequirePackage{rotating}
-\tikzset{>=Stealth}
-\setlist{font=\upshape} % 取消所有列表默认距离 nosep,
-% 浮动环境设置
-% 默认情况下, \LaTeX{} 要求每页的文字至少占据 20%,否则该页就只单独放置一个浮动环境,
-% 而这通常不是我们想要的, 我们将这个要求降低到 5%.
-\renewcommand*{\textfraction}{0.05}
-% 有时如果多个浮动环境连续放在一起,
-% 会将它们分在几个不同页,即使它们可在同一页放
-% 得下. 我们可以通过修改 |\topfraction| 和 |\bottomfraction| 分别设置顶端和底端的浮
-% 动环境的最大比例.
-\renewcommand*{\topfraction}{0.9}
-\renewcommand*{\bottomfraction}{0.8}
-% 有时\LaTeX{}会把一个浮动环境单独放在一页,
-% 我们要求这个环境至少要占据 85% 才能单独放在一页.
-% 注意: |\floatpagefraction| 的数值必须小于 |\topfraction|.
-\renewcommand*{\floatpagefraction}{0.85}
-% 关于图片 graphicx
-% 如果图片没有指定后缀, 依次按下列顺序搜索
-\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}
-% 设置图表搜索路径, 可以给图表文件夹取如下名字
-\graphicspath{{inner_pics/}{inner_pics/titleimages/}{figures/}{figure/}{pictures/}{picture/}{pic/}{pics/}{image/}{images/}}
-% \RequirePackage[physics]{stys/physicx}
-% \RequirePackage{stys/Symbols}
-\RequirePackage{extarrows}
-\usetikzlibrary{tikzmark}
-% \arrowname{super-script}
-% \arrowname[sub-script]{super-script}
-\RequirePackage{appendix} % 附录
-% \RequirePackage{stys/symbols}
-%
-\RequirePackage{amssymb,amsfonts,upgreek}
-\RequirePackage{makeidx}
-\RequirePackage{etoolbox} % 判断函数
-\RequirePackage{paracol}
-\RequirePackage{tikz-cd}
-\RequirePackage{imakeidx}
-\RequirePackage{anyfontsize}
-\RequirePackage{calc}
-\RequirePackage{xkeyval,ifthen}
-\RequirePackage[backgroundcolor=yellow!40!cyan!20,bordercolor=yellow!40!cyan!20,linecolor=DarkCyan]{todonotes}
-\RequirePackage{varwidth}
-\RequirePackage[colorlinks,linkcolor = purple, %%修改此处为你想要的颜色
-anchorcolor = purple, %%修改此处为你想要的颜色
-urlcolor = purple, %%修改此处为你想要的颜色
-citecolor = purple, %%修改此处为你想要的颜色
-]{hyperref}
-\setcounter{tocdepth}{3}
-\setcounter{secnumdepth}{3}%增加编号深度
-\RequirePackage{dashrule}
-\newlength\outermarginwidth
-\setlength\outermarginwidth{1.5cm}
-\newlength\covershift
-\setlength\covershift{5cm}
-\RequirePackage{caption}
-% 图注与表注格式
-\colorlet{captioncolor}{outermarginfgcolor} % 图片和表格题注文字颜色
-\makeatletter
-%%----------------------------------封面信息定义--------------------------------------------------------%%
-\newcommand\bookseries[1]{\def\@bookseries{#1}}
-\newcommand\subtitle[1]{\def\@subtitle{#1}}
-\newcommand\edition[1]{\def\@edition{#1}}
-\newcommand\presslogo[1]{\def\@presslogo{#1}}
-\newcommand\pressname[1]{\def\@pressname{#1}}
-\newcommand\coverimage[1]{\def\@coverimage{#1}}
-\newcommand\chapimage[1]{\def\@chapimage{#1}}
-%%----------------------------------封面信息定义--------------------------------------------------------%%
-\makeatother
-\RequirePackage{indentfirst}
-\RequirePackage{amsmath}
-\RequirePackage[left=2cm,right=2cm,top=.6cm,bottom=2.2cm]{geometry}
-\RequirePackage{xpatch}%修正章节编号
-\RequirePackage[automark]{scrlayer-scrpage}%页面设置宏包,隶属于koma-script文档类
-\RequirePackage{fontawesome5}
-\RequirePackage{mathrsfs}
-\RequirePackage[most]{tcolorbox}
-\tcbuselibrary{breakable, skins,theorems}%TcolorBox Library
-\RequirePackage{tabularx}
-\RequirePackage{lastpage}
-%\RequirePackage{twemojis}
-\RequirePackage{ninecolors}
-\RequirePackage{colortbl} %彩色表格
-\RequirePackage{tabularray}
-\UseTblrLibrary{amsmath}
-% 定义 +array, +matrix, +bmatrix, +Bmatrix, +pmatrix, +vmatrix, +Vmatrix 和 +cases 环境。其
-% 中,每一个环境都类似于不带 + 前缀的环境,但是就像 tblr 环境一样,使用 rowsep=2pt 默认值。
-% 除了+array 环境外,其余的每个环境都可以带一个可选项,通过该可选项,可能为环境设置内部
-% 参数。
-\UseTblrLibrary{booktabs} % 定义 \toprule、 \midrule、\bottomrule 和 \cmidrule 命令,这些命令可以直接用于 tblr环境中
-\UseTblrLibrary{diagbox} % 在tblr 环境中使用 \diagbox 和\diagboxthree 命令排版斜线表头
-\UseTblrLibrary{varwidth} % 为表格添加 measure 内部参数。当设置了 measure=vbox 后,则会使用 \vbox 测量单元格宽度。%可以使用stretch=-1 移除列表环境上下的间距, 注意,stretch=-1 选项也会移除单元格中的支架
-\RequirePackage{pgfornament}
-\RequirePackage{zhnumber}
-\RequirePackage{dashrule}
-\RequirePackage{adjustbox}
-\RequirePackage{enumitem}
-\RequirePackage{multicol}
-\RequirePackage{amsthm}
-\RequirePackage{thmtools,thm-restate}%定理环境 %定理的重写
-\RequirePackage{bclogo}
-\RequirePackage[normalem]{ulem}
-\RequirePackage{pgfplots} %画图 %%页面样式设计核心包 %提供\pgfonlayer命令以及下列图层指令
-\pgfplotsset{compat=1.18}
-\RequirePackage{graphicx}%修正minipage顶部对齐问题
-\pgfdeclarelayer{background} %背景%底层
-\pgfdeclarelayer{foreground} %上层
-\pgfdeclarelayer{top} %顶部
-\pgfdeclarelayer{bottom} %底部
-\pgfsetlayers{bottom,background,main,foreground,top}
-\newcommand{\tikzoverlay}[1]{\begin{tikzpicture}[remember picture,overlay] #1 \end{tikzpicture}}
-\RequirePackage[explicit]{titlesec}
-\RequirePackage{titletoc}
-
-\newcommand\boxednum[1]
-{
-\tcbsidebyside[sidebyside adapt=left,
-nobeforeafter,fontupper=\sffamily\large\bfseries,fontlower=\large,colframe=white,colupper=white,colback=outermarginfgcolor!90,colbacklower=gray!10,frame hidden,width =\textwidth,
-top=0mm,bottom=0mm,right=0mm,left=2mm,before skip balanced=0em,after skip balanced=0em,arc=0pt,outer arc=0pt,bicolor,sidebyside gap=6mm,boxrule=0pt,sidebyside align=center,halign=center,halign lower=left,fuzzy shadow={-0.4mm}{0.4mm}{0mm}{0.2mm}{white!50!gray},% 上
-fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
-]{% left hand side % adjust from this side
-\thecontentslabel
-}{% right hand side
-\textbf{#1} \hfill \thecontentspage
-}% end
-}
-
-\newcommand\boxednonum[1]
-{
-\begin{tcolorbox}[nobeforeafter,fontupper=\large,fontlower=\large,colframe=white,fontupper=\sffamily\bfseries,colupper=white,colback=outermarginfgcolor!90,colbacklower=gray!10,frame hidden,width = \textwidth,sidebyside gap=6mm,
-top=0mm,bottom=0mm,right=0cm,left=2mm,before skip balanced=0em,after skip balanced=0em,arc=0pt,outer arc=0pt,bicolor,sidebyside,boxrule=0pt,sidebyside align=center,halign=center,halign lower=left,lefthand width=3mm,fuzzy shadow={-0.4mm}{0.4mm}{0mm}{0.2mm}{white!50!gray},% 上
-fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
-]
-\tcblower \textbf{#1}\hfill \thecontentspage
-\end{tcolorbox}
-}
-%
-\titlecontents{chapter}[0mm]
- {\addvspace{-.5em}}
- {\contentsmargin{0pt}\boxednum}
- {\contentsmargin{0pt}\boxednonum}
- {}
- [\addvspace{-.5em}]
-%
- \titlecontents{section}
- [4.5em] % ie, 1.5em (chapter) + 2.3em
- {}
- {\hyperlink{section.\thecontentslabel}{\contentslabel{2.2em}}}
- {\hspace*{-2.2em}}
- {\titlerule*[1pc]{.}\contentspage\hspace*{1.5mm}}
-%
- \titlecontents{subsection}
- [7.3em] % ie, 1.5em (chapter) + 2.3em
- {}
- {\hyperlink{subsection.\thecontentslabel}{\contentslabel{2.7em}}}
- {\hspace*{-2.7em}}
- {\titlerule*[1pc]{.}\contentspage\hspace*{1.5mm}}
-%
- \titlecontents{subsubsection}
- [10.7em] % ie, 1.5em (chapter) + 2.3em
- {}
- {\hyperlink{subsubsection.\thecontentslabel}{\contentslabel{3.3em}}}
- {\hspace*{-3.3em}}
- {\titlerule*[1pc]{.}\contentspage\hspace*{1.5mm}}
-
-% tcolorbox中插入图片或者tikz绘图方法
-\newcommand\Figure[4]{%
- \begin{center}
- \captionsetup{type=figure} %消除 Package caption Warning: The option `hypcap=true' will be ignored for this
-%(caption) particular \caption on input line XX.警告信息
- \includegraphics[#1]{#2}
- \captionof{figure}{#3}\label{#4}
- \end{center}
-}%用法 : 用于tcolorbox中插入图片
-\newcommand\Tikz[3]{%
- \begin{center}
- \captionsetup{type=figure} %消除 Package caption Warning: The option `hypcap=true' will be ignored for this(caption) particular \caption on input line XX.警告信息
- #3 %最后一个参数为Tikz画图代码窗口
- \captionof{figure}{#1}\label{#2} %第一与第二个参数是Tikz画图的名称与标签
- \end{center}
-} %用法 : 用于tcolorbox中插入Tikz绘图
-%特殊注释矩阵
-\newcommand\coolover[2]{\mathrlap{\smash{\overbrace{\phantom{%
- \begin{matrix} #2 \end{matrix}}}^{\mbox{$#1$}}}}#2}
-
-\newcommand\coolunder[2]{\mathrlap{\smash{\underbrace{\phantom{%
- \begin{matrix} #2 \end{matrix}}}_{\mbox{$#1$}}}}#2}
-
-\newcommand\coolleftbrace[2]{%
- #1\left\{\vphantom{\begin{matrix} #2 \end{matrix}}\right.}
-
-\newcommand\coolrightbrace[2]{%
- \left.\vphantom{\begin{matrix} #1 \end{matrix}}\right\}#2}
-\definecolor{lightergray}{gray}{0.99}
-
-\newcommand*{\circled}[1]{\lower.7ex\hbox{\tikz\draw (0pt, 0pt)%
- circle (.5em) node {\makebox[1em][c]{\small #1}};}}
-\newcommand{\twicecircle}{\raisebox{.7ex}{
- \begin{tikzpicture}[remember picture,overlay]
- \draw[line width=0.6pt,black!60] (0,0) circle (3pt);
- \fill[black] (0,0) circle (1.6pt) ;
- \end{tikzpicture}}
-}
-\newcommand{\exercise}[2][\bcicosaedre]{\bigskip
-\begin{tikzpicture}[remember picture,overlay]
-\draw[line width=2pt,loosely dotted,teal] (0,0)--node[pos=0.4,rectangle,minimum height=1.5em,font=\sffamily\Large,text=black,fill=black!2,drop shadow={opacity=.3, shadow xshift=0.1cm},anchor=center,
- inner sep=1.5mm,
- anchor=west,] {$#1$ ~ #2} (\linewidth,0);
-\end{tikzpicture}\bigskip\smallskip
-}
-\RequirePackage{extarrows}
-\newcommand{\R}{\mathbb{R}}
-\newcommand{\F}{\mathcal{F}}
-\newcommand{\lan}[1]{\langle #1 \rangle}
-\newenvironment{eq}[1]{\begin{equation}\begin{aligned}#1}{\end{aligned}\end{equation}} %有编号
-\newenvironment{eq*}[1]{\begin{equation*}\begin{aligned}#1}{\end{aligned}\end{equation*}} %无编号
-% \everymath{\displaystyle}
-
-%% -------- 章节样式
-\makeatletter
-% titleimage
-\ExplSyntaxOn
-\seq_new:N \g__Beautybook_chapter_oimage_seq % odd
-\seq_new:N \g__Beautybook_chapter_eimage_seq % even
-\seq_new:N \g__Beautybook_part_oimage_seq % odd
-\seq_new:N \g__Beautybook_part_eimage_seq % even
-%
-\keys_define:nn { Beautybook/titleimage }
- {
- chapteroddimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_chapter_oimage_seq {#1} ,
- chapterevenimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_chapter_eimage_seq {#1} ,
- partoddimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_part_oimage_seq {#1} ,
- partevenimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_part_eimage_seq {#1} ,
- }
-\cs_new:Npn \__Beautybook_title_image:Nn #1#2 % image seq, number
- { \seq_item:Nn #1 { \int_mod:nn {#2} { \seq_count:N #1 } + 1 } } %对照表-对录入的字符串进行编号
-\cs_new:Npn \Beautybook@chapterimagename %生成索契表 : 判断奇偶数页并按(章节编号)!!读取相应的列表组中的字符串
- {
- \int_if_odd:nTF { \value{page} }
- { \__Beautybook_title_image:Nn \g__Beautybook_chapter_oimage_seq { \value{chapter} } }
- { \__Beautybook_title_image:Nn \g__Beautybook_chapter_eimage_seq { \value{chapter} } }
- }
-\cs_new:Npn \Beautybook@partimagename
- {
- \int_if_odd:nTF { \value{page} }
- { \__Beautybook_title_image:Nn \g__Beautybook_part_oimage_seq { \value{part} } }
- { \__Beautybook_title_image:Nn \g__Beautybook_part_eimage_seq { \value{part} } }
- }
-\cs_new_protected:Npn \titleimage #1
- { \keys_set:nn { Beautybook/titleimage } {#1} }
-\ExplSyntaxOff
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\titleformat{\chapter}{\huge\bfseries\filcenter}{}{1em}{
- \makebox[0pt][l]{\def\rad{7pt}%
- \begin{tikzpicture}[remember picture, overlay]%
- \begin{pgfonlayer}{bottom}
- \ifodd\value{page}
- \shade[right color=outermarginbgcolor!30,middle color=outermarginbgcolor!50,left color=outermarginfgcolor!30] (current page.north west) rectangle ++(\paperwidth,-.2\paperheight); % background odd
- \else
- \shade[left color=outermarginbgcolor!30,middle color=outermarginbgcolor!50,right color=outermarginfgcolor!30] (current page.north west) rectangle ++(\paperwidth,-.2\paperheight); % background even
- \fi
- \fill[outermarginfgcolor,opacity=.5]([shift={(0,-4.45cm)}]current page.north west) rectangle ++(\paperwidth,-2mm); % line
- \end{pgfonlayer}
- \path[fill=outermarginfgcolor]node[append after command={
- ([xshift=-3*\rad]chapinfoofpart.north west) to[out=0,in=-180,looseness=1] ([xshift=\rad]chapinfoofpart.south west) --([xshift=-\rad]chapinfoofpart.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]chapinfoofpart.north east) --cycle},
- text=white,font=\sffamily\large\bfseries,align=center,minimum height=1cm] (chapinfoofpart) at ([shift={(.6\linewidth,-4.95cm)}]current page.north west) {Part\ \thepart};
- \begin{pgfonlayer}{bottom}
- \fill[outermarginfgcolor!90,opacity=0.5] ([shift={(-3*\rad,0)}]chapinfoofpart.north west) to[out=180,in=0,looseness=1] +(-4*\rad,-1.2cm)--([shift={(7*\rad,-1.2cm)}]chapinfoofpart.north east) to[out=-180,in=0,looseness=1] +(-4*\rad,1.2cm); % partnumber shade
- \end{pgfonlayer}
- \ifodd\value{page}
- \begin{pgfonlayer}{top}
- \fill[outermarginfgcolor,opacity=0.7,rounded corners=5pt]node[append after command={([yshift=2cm]chapnum.north west) rectangle (chapnum.south east)},right,text=white,minimum width=2cm,align=center,font=\sffamily\bfseries] (chapnum) at ([shift={(1.5cm,-2.5cm)}]current page.north west) {\scalebox{3}{\thechapter}};
- \begin{pgfonlayer}{foreground}
- \pattern[pattern=sixpointed stars,pattern color=white,opacity=1.0,rounded corners=5pt]
- ([yshift=2cm]chapnum.north west) rectangle (chapnum.south east);
- \end{pgfonlayer}
- \fill [outermarginfgcolor,path fading=fade up,rounded corners=5pt]%
- ([yshift=2cm]chapnum.north west) rectangle (chapnum.south east);
- \node[above left,font=\sc\fontsize{22pt}{22pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north east) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
- \end{pgfonlayer}
- \begin{pgfonlayer}{bottom}
- \node[right] (image) at ([shift={(-0.5cm,-2.8cm)}]current page.north west) {\includegraphics[width=7cm]{\@chapimage}};
- \end{pgfonlayer}
- \else
- \begin{pgfonlayer}{top}
- \fill[outermarginfgcolor,opacity=0.7,rounded corners=5pt]node[append after command={([yshift=2cm]chapnum.north west) rectangle (chapnum.south east)},left,text=white,minimum width=2cm,align=center,font=\sffamily\bfseries] (chapnum) at ([shift={(-1.5cm,-2.5cm)}]current page.north east) {\scalebox{3}{\thechapter}};
- \begin{pgfonlayer}{foreground}
- \pattern[pattern=sixpointed stars,pattern color=white,opacity=1.0,rounded corners=5pt]
- ([yshift=2cm]chapnum.north west) rectangle (chapnum.south east);
- \end{pgfonlayer}
- \fill [outermarginfgcolor,path fading=fade up,rounded corners=5pt]%
- ([yshift=2cm]chapnum.north west) rectangle (chapnum.south east);
- \node[above right,font=\sc\fontsize{22pt}{22pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north west) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
- \end{pgfonlayer}
- \begin{pgfonlayer}{background}
- \node[left] (image) at ([shift={(0.5cm,-2.8cm)}]current page.north east) {\includegraphics[width=7cm]{\@chapimage}};
- \end{pgfonlayer}
- \fi
- \path[fill=outermarginbgcolor]node[append after command={
- ([xshift=-2*\rad]pagenumber.south west) to[out=0,in=180,looseness=1] ([xshift=\rad]pagenumber.north west) --([xshift=-\rad]pagenumber.north east) to[out=0,in=-180,looseness=1] ([xshift=2*\rad]pagenumber.south east) --cycle},
- text=outermarginfgcolor,font=\sffamily\fontsize{15}{15}\selectfont\bfseries,align=center,minimum height=0.4cm,minimum width=1.3cm,inner sep=1.5mm] (pagenumber) at ([shift={(0,0.3cm)}]current page.south) {\thepage};
- \end{tikzpicture}}
- }
-\titleformat{name=\chapter,numberless}{\bfseries\huge\filcenter}{}{1em}{
- \makebox[0pt][l]{\def\rad{7pt}%
- \begin{tikzpicture}[remember picture, overlay]%
- \begin{pgfonlayer}{bottom}
- \ifodd\value{page}
- \shade[right color=outermarginbgcolor!30,middle color=outermarginbgcolor!50,left color=outermarginfgcolor!30] (current page.north west) rectangle ++(\paperwidth,-.2\paperheight); % background odd
- \else
- \shade[left color=outermarginbgcolor!30,middle color=outermarginbgcolor!50,right color=outermarginfgcolor!30] (current page.north west) rectangle ++(\paperwidth,-.2\paperheight); % background even
- \fi
- \fill[outermarginfgcolor,opacity=.5]([shift={(0,-4.45cm)}]current page.north west) rectangle ++(\paperwidth,-2mm); % line
- \end{pgfonlayer}
- \ifodd\value{page}
- \begin{pgfonlayer}{top}
- \node[above left,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north east) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
- \end{pgfonlayer}
- \begin{pgfonlayer}{bottom}
- \node[right] (image) at ([shift={(-0.5cm,-2.8cm)}]current page.north west) {\includegraphics[width=7cm]{\@chapimage}};
- \end{pgfonlayer}
- \else
- \begin{pgfonlayer}{top}
- \node[above right,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north west) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
- \end{pgfonlayer}
- \begin{pgfonlayer}{background}
- \node[left] (image) at ([shift={(0.5cm,-2.8cm)}]current page.north east) {\includegraphics[width=7cm]{\@chapimage}};
- \end{pgfonlayer}
- \fi
- \path[fill=outermarginbgcolor]node[append after command={
- ([xshift=-2*\rad]pagenumber.south west) to[out=0,in=180,looseness=1] ([xshift=\rad]pagenumber.north west) --([xshift=-\rad]pagenumber.north east) to[out=0,in=-180,looseness=1] ([xshift=2*\rad]pagenumber.south east) --cycle},
- text=outermarginfgcolor,font=\sffamily\fontsize{15}{15}\selectfont\bfseries,align=center,minimum height=0.4cm,minimum width=1.3cm,inner sep=1.5mm] (pagenumber) at ([shift={(0,0.3cm)}]current page.south) {\thepage};
- \end{tikzpicture}}
-}
-\titlespacing{\chapter}{0pt}{0pt}{80pt}
-\makeatother
-% -------- Part定制
-\tikzfading[name=middle, top color=transparent!90, bottom
-color=transparent!90, middle color=transparent!20]
-\makeatletter
-\newcommand\partabstract[1]{\def\@partabstract{#1}}
-\newcommand\partimage[1]{\def\@partimage{#1}}
-\titleformat{\part}
-{\normalfont\huge\filcenter}
-{}
-{20pt}
-{\begin{tikzpicture}[remember picture,overlay]
- \def\barwidth{2cm}
- \fill[outermarginbgcolor,opacity=0.6]
- (current page.north west) rectangle (current page.south east);
- \ifodd\value{page}
- \fill [outermarginfgcolor!20]%
- (current page.north east) rectangle ++(-\outermarginwidth,-\paperheight);
- \pattern [pattern=north east lines,pattern color=outermarginfgcolor!50]%
- (current page.north east) rectangle ++(-\outermarginwidth,-\paperheight);
- \fill [outermarginbgcolor!90,path fading=fade south]%
- ([yshift=1mm]current page.north east) rectangle ++(-\outermarginwidth,-.8\paperheight);
- \fill [outermarginbgcolor,path fading=fade north]%
- (current page.south east) rectangle ++(-\outermarginwidth,.8\paperheight);%
- % lines
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.north east) --++(-5pt,-0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,0.15cm)--cycle;
- \coordinate (anchor of headmark) at ([shift={(-1.2\outermarginwidth,-0.2cm)}]current page.north east);
- \node[below ,text=outermarginfgcolor,font=\sffamily\bfseries\fontsize{15}{20}\selectfont] (partpagenum) at ([shift={(-.5\outermarginwidth,0)}]current page.north east) {\thepage};
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.south east) --++(-5pt,0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,-0.15cm)--cycle; % 页码横线
- \node[] (hbar) at ($(current page.north)!0.33!(current page.south)$) {
- \begin{tikzpicture}
- \fill[white]
- (0,0) rectangle ++(\paperwidth,-1cm);
- \fill[outermarginbgcolor]
- (0,-.25cm) rectangle ++(\paperwidth,-.5cm);
- \fill[outermarginfgcolor]
- (.67\paperwidth,-.25cm) rectangle ++(4.5cm,-.5cm);
- \fill[outermarginfgcolor!20!white]
- (.67\paperwidth-1mm,-.25cm) rectangle ++(1mm,-.5cm);
- \fill[outermarginfgcolor!20!white]
- (.67\paperwidth+4.4cm,-.25cm) rectangle ++(1mm,-.5cm);
- \end{tikzpicture}
- };
- \node[above,font=\sc\huge,shift={(.33\linewidth,.5\barwidth)}] (partname) at (hbar) {Part\ \thepart};
- \node[below,left,font=\sc\huge,shift={(.146\linewidth,-1.5*\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.8\linewidth}\raggedright\baselineskip=2ex #1 \end{varwidth}}; % 标题名称
- \begin{pgfonlayer}{background}
- \node[above,shift={(-.4\linewidth,-4*\barwidth)}] at (partname) {\ifdefvoid{\@partimage}{}{\includegraphics[width=1.2\linewidth]{\@partimage}}}; % 图片位置调整
- \end{pgfonlayer}
- \else
- \fill [outermarginfgcolor!20]%
- (current page.north west) rectangle ++(\outermarginwidth,-\paperheight);
- \pattern [pattern=north west lines,pattern color=outermarginfgcolor!50]%
- (current page.north west) rectangle ++(\outermarginwidth,-\paperheight);
- \fill [outermarginbgcolor!90,path fading=fade south]%
- ([yshift=1mm]current page.north west) rectangle ++(\outermarginwidth,-.8\paperheight);
- \fill [outermarginbgcolor,path fading=fade north]%
- (current page.south west) rectangle ++(\outermarginwidth,.8\paperheight);%
- % lines
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.north west) --++(5pt,-0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,0.15cm)--cycle;
- \coordinate (anchor of headmark) at ([shift={(1.2\outermarginwidth,-0.2cm)}]current page.north west);
- \node[below ,text=outermarginfgcolor,font=\sffamily\bfseries\fontsize{15}{20}\selectfont] (partpagenum) at ([shift={(.5\outermarginwidth,0)}]current page.north west) {\thepage};
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.south west) --++(5pt,0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,-0.15cm)--cycle; % 页码横线
- \node[] (hbar) at ($(current page.north)!0.33!(current page.south)$) {
- \begin{tikzpicture}
- \fill[white]
- (0,0) rectangle ++(\paperwidth,-1cm);
- \fill[outermarginbgcolor]
- (0,-.25cm) rectangle ++(\paperwidth,-.5cm);
- \fill[outermarginfgcolor]
- (.15\paperwidth,-.25cm) rectangle ++(4.5cm,-.5cm);
- \fill[outermarginfgcolor!20!white]
- (.15\paperwidth-1mm,-.25cm) rectangle ++(1mm,-.5cm);
- \fill[outermarginfgcolor!20!white]
- (.15\paperwidth+4.5cm,-.25cm) rectangle ++(1mm,-.5cm);
- \end{tikzpicture}
- };
- \node[above,font=\sc\huge,shift={(-.31\linewidth,.5\barwidth)}] (partname) at (hbar) {Part\ \thepart};
- \node[below right,font=\sc\huge,shift={(-.125\linewidth,-1.2*\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.8\linewidth}\raggedright\baselineskip=2ex #1 \end{varwidth}}; % 标题名称
- \begin{pgfonlayer}{background}
- \node[above,shift={(.35\linewidth,-4*\barwidth)}] at (partname) {\ifdefvoid{\@partimage}{}{\includegraphics[width=1.2\linewidth]{\@partimage}}}; % 图片位置调整
- \end{pgfonlayer}
- \fi
- \node[below,,font=\itshape\fontsize{13}{13}\selectfont,shift={(0\linewidth,-1.65*\barwidth)}] at (hbar) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.85\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
- \end{tikzpicture}}
-\makeatother
-\assignpagestyle{\part}{empty}
-\assignpagestyle{\chapter}{empty}
-
-
-%% -- Section
-\titleformat{\section}
-{}
-{}
-{-.5em} %左右移动\thesection标签位置
-{\mysectionformat{#1}}
-
-\titleformat{name=\section,numberless}{}{}{-.5em}{\mysectionnonumformat{#1}}
-
-\newcommand{\mysectionformat}[1]{%
-\makebox[0pt][l]{\def\rad{7pt}%
-\begin{tikzpicture}[remember picture]
- \path[fill=outermarginfgcolor,drop shadow={opacity=0.3,shadow xshift=.05cm,shadow yshift=-.05cm}]node[append after command={
- ([xshift=\rad]sec.north west) to[out=180,in=0,looseness=1] ([xshift=-3*\rad]sec.south west) --([xshift=-\rad]sec.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]sec.north east) --cycle},
- text=white,font=\sffamily\large\bfseries,align=center,inner ysep=2mm] (sec) at (0,0) {Sec\ \thesection};
- \node[text=black,font=\large,below right] (secnum) at ([shift={(0,-1mm)}]sec.north east) {\begin{varwidth}{.85\linewidth}\setlength\baselineskip{18pt}\hspace{.5cm}#1\end{varwidth}};
-\end{tikzpicture}}}%最后一个选项为 [<after code>]
-
-\newcommand{\mysectionnonumformat}[1]{%
-\makebox[0pt][l]{\def\rad{7pt}%
-\begin{tikzpicture}[remember picture]
- \path[fill=outermarginfgcolor,drop shadow={opacity=0.3,shadow xshift=.05cm,shadow yshift=-.05cm}]node[append after command={
- ([xshift=\rad]sec.north west) to[out=180,in=0,looseness=1] ([xshift=-3*\rad]sec.south west) --([xshift=-\rad]sec.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]sec.north east) --cycle},
- text=white,font=\sffamily\large\bfseries,align=center,inner ysep=2mm] (sec) at (0,0) {Sec};
- \node[text=black,font=\large,below right] (secnum) at ([shift={(0,-1mm)}]sec.north east) {\begin{varwidth}{.85\linewidth}\setlength\baselineskip{18pt}\hspace{.5cm}#1\end{varwidth}};
-\end{tikzpicture}}}%最后一个选项为 [<after code>]
-
-\titlespacing*{\section}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
-
-%%-------------------------------- SCRLAYER-SCRPAGE -------------------------------------%%
-%% SIDE-BAR
-\newlength\chapternumbersize
-\setlength\chapternumbersize{36pt}
-\setlength{\headheight}{40pt} % 页眉高度
-\renewcommand\chaptermarkformat{}
-% define a new mark for the chapter number
-\newmarks\chapternum
-\xapptocmd\chaptermark{\marks\chapternum{\thechapter}}{}{\PatchFailed}
-\newmarks\secnum
-\xapptocmd\sectionmark{\marks\secnum{\thesection}}{}{\PatchFailed}
-
-\newcommand*\outermarginpagemark{%
-\tikzoverlay{
- \begin{pgfonlayer}{top}
- \ifodd\value{page}
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.north east) --++(-5pt,-0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,0.15cm)--cycle;
- \coordinate (anchor of headmark) at ([shift={(-1.2\outermarginwidth,-0.2cm)}]current page.north east);
- \node[below ,text=outermarginfgcolor,font=\sffamily\bfseries\fontsize{15}{15}\selectfont] at ([shift={(-.5\outermarginwidth,-0.15cm)}]current page.north east) {\thepage};
- \fill[outermarginfgcolor!50,rounded corners=1pt] ([shift={(0.2\outermarginwidth,0.2cm)}]anchor of headmark) --++(-5pt,-0.15cm)--++(-.45\linewidth,0) --++(-5pt,0.15cm)--cycle; % 页眉横线
- \node[below left,font=\upshape,text=outermarginfgcolor] at ([yshift=0.05cm]anchor of headmark) {\begin{varwidth}{\linewidth}\rightmark\end{varwidth}};
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.south east) --++(-5pt,0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,-0.15cm)--cycle; % 页码横线
- \else
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.north west) --++(5pt,-0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,0.15cm)--cycle;
- \coordinate (anchor of headmark) at ([shift={(1.2\outermarginwidth,-0.2cm)}]current page.north west);
- \node[below ,text=outermarginfgcolor,font=\sffamily\bfseries\fontsize{15}{15}\selectfont] at ([shift={(.5\outermarginwidth,-0.15cm)}]current page.north west) {\thepage};
- \fill[outermarginfgcolor!50,rounded corners=1pt] ([shift={(-0.2\outermarginwidth,0.2cm)}]anchor of headmark) --++(5pt,-0.15cm)--++(.45\linewidth,0) --++(5pt,0.15cm)--cycle; % 页眉横线
- \node[below right,font=\upshape,text=outermarginfgcolor] at ([yshift=0.05cm]anchor of headmark) {\begin{varwidth}{\linewidth}\rightmark\end{varwidth}};
- \fill[outermarginfgcolor,rounded corners=2pt] (current page.south west) --++(5pt,0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,-0.15cm)--cycle; % 页码横线
- \fi
- \end{pgfonlayer}}
-}
-\newlength\baryshift
-\setlength\baryshift{-2.5\outermarginwidth}
-\makeatletter
-% Add A Side-Bar Box For The Chapter Number
-\newcommand*\outermarginchapternumberbox{%
- \if@mainmatter
- \tikzoverlay{
- \shade[top color=outermarginfgcolor!90,bottom color=outermarginbgcolor]
- (\outermarginwidth,-.5\outermarginwidth+2mm) rectangle (0,-1.5\outermarginwidth+2mm);
- \node[anchor=center,text=white,font=\sffamily\bfseries] at (1/2*\outermarginwidth,-\outermarginwidth+2mm) {\usekomafont{chapternumber}{\botmarks\chapternum}};%
- }
- \fi
- \vfill
-}
-\makeatother
-
-\newkomafont{chapternumber}{%页边章节编号字体
- \fontsize{\chapternumbersize}{\chapternumbersize}\selectfont
-}%
-\makeatletter
-\newcommand\outermarginmark{
- \ifodd\value{page}\hfill\else\hspace*{\dimexpr\outermarginwidth*3/8\relax}\fi
- \rotatebox{90}{\parbox{\layerheight}{
- \raggedleft
- \usekomafont{outermargin}{%
- \MakeMarkcase{\ifodd\value{page}\odd@outermargin\else\even@outermargin\fi}}%
- }}%
- \ifodd\value{page}\hspace*{\dimexpr\outermarginwidth*3/8\relax}\fi%
-}
-\newcommand*\even@outermargin{}
-\newcommand*\odd@outermargin{}
-\newcommand*\evenoutermargin[1]{\renewcommand\even@outermargin{#1}}% 偶数页内容
-\newcommand*\oddoutermargin[1]{\renewcommand\odd@outermargin{#1}}% 奇数页内容
-\makeatother
-%
-\newkomafont{outermargin}{%页边章节名称字体
- \bfseries\fontsize{15}{15}\selectfont\color{outermarginfgcolor}
-}
-% declare new page style using layers
-\DeclareNewPageStyleByLayers{scth}{%
- scth.outermargin.bg.even,%
- scth.outermargin.bg.odd,%
- scth.outermargin.fg.even,%
- scth.outermargin.fg.odd,%
- scth.outermargin.pn.even,%
- scth.outermargin.pn.odd,%
- scth.outermargin.cn.even,%
- scth.outermargin.cn.odd,%
- scth.outermargin.text.even,%
- scth.outermargin.text.odd%
-}
-% define the layers for even pages
-\DeclareNewLayer[
- background, % 下层(背景)
- evenpage,
- outermargin,
- width=\outermarginwidth,
- contents={\color{outermarginbgcolor}\rule{\layerwidth}{\layerheight}} %色彩装饰条
-]{scth.outermargin.bg.even}%
-%%=============% 页边条颜色 %=======================%%
-\tikzfading[name=fade south,
- top color =transparent!0,
- bottom color=transparent!80]
-\tikzfading[name=fade north,
- top color =transparent!100,
- bottom color=transparent!0]
-%偶数页边纹理效果设置
-\newcommand{\evensidbardeepcolor}{%
-\tikzoverlay{
-\ifodd\value{page}
-\fill [outermarginfgcolor!20]%
- (current page.north east) rectangle ([xshift=-\outermarginwidth,yshift=0]current page.south east);
- \pattern [pattern=checkerboard,pattern color=outermarginfgcolor!50]%
- (current page.north east) rectangle ([xshift=-\outermarginwidth,yshift=0]current page.south east);
- \fill [outermarginbgcolor!90,path fading=fade south]%
- ([yshift=1mm]current page.north east) rectangle ([xshift=-\outermarginwidth,yshift=-.5\layerheight]current page.north east);
- \fill [outermarginbgcolor,path fading=fade north]%
- (current page.south east) rectangle ([xshift=-\outermarginwidth,yshift=.2\layerheight]current page.south east);
-\else
- \fill [outermarginfgcolor!20]%
- (current page.north west) rectangle ([xshift=\outermarginwidth,yshift=0]current page.south west);
- \pattern [pattern=checkerboard,pattern color=outermarginfgcolor!50]%
- (current page.north west) rectangle ([xshift=\outermarginwidth,yshift=0]current page.south west);
- \fill [outermarginbgcolor!90,path fading=fade south]%
- ([yshift=1mm]current page.north west) rectangle ([xshift=\outermarginwidth,yshift=-.5\layerheight]current page.north west);
- \fill [outermarginbgcolor,path fading=fade north]%
- (current page.south west) rectangle ([xshift=\outermarginwidth,yshift=.2\layerheight]current page.south west);
- \fi
-}
-}
-%%==============偶数页页边条颜色========================%%
-\DeclareNewLayer[
- foreground, %
- evenpage,
- outermargin,
- width=\outermarginwidth,
- contents=\evensidbardeepcolor %色彩装饰条
-]{scth.outermargin.fg.even}%
-%%==============偶数页页脚页码========================%%
-\DeclareNewLayer[
- foreground, %上层 (背景之上)
- evenpage,
- foot, % 页脚
- contents=\outermarginpagemark
-]{scth.outermargin.pn.even}%
-%%==============偶数页章节编号========================%%
-\DeclareNewLayer[
- foreground, %上层 (背景之上)
- evenpage,
- head, %页眉
- hoffset=0pt,
- width=\outermarginwidth,
- align=t,
- addvoffset=\dimexpr-\chapternumbersize-12pt+\headheight\relax,
- height=\chapternumbersize+\headheight,
- contents=\outermarginchapternumberbox%章节编号
-]{scth.outermargin.cn.even}%
-%%======================章节名称===================================%%
-\DeclareNewLayer[
- clone=scth.outermargin.cn.even,
- addheight=\dimexpr\headheight+\headsep+\textheight\relax,
- addvoffset=\dimexpr+2\outermarginwidth\relax,
- hoffset=-2.5pt,
- contents=\outermarginmark %
-]{scth.outermargin.text.even}%
-
-% define the layers for odd page from the settings for even pages
-\newcommand*\DeclareOddFromEven[1]{%复制自偶数页样式命令
-\DeclareNewLayer[
- clone=#1.even,
- oddpage,
- align=r,
- hoffset=\paperwidth
-]{#1.odd}%
-}
-\DeclareOddFromEven{scth.outermargin.bg}
-\DeclareOddFromEven{scth.outermargin.pn}
-\DeclareOddFromEven{scth.outermargin.cn}
-\DeclareOddFromEven{scth.outermargin.text}
-\DeclareOddFromEven{scth.outermargin.fg}
-
-% add the layers to page style scrheadings and page style plain
-\ForEachLayerOfPageStyle*{scth}{%
- \AddLayersToPageStyle{scrheadings}{#1}%
- \AddLayersToPageStyle{plain.scrheadings}{#1}%
-}
-%----------------------------------------------
-\KOMAoptions{markcase=upper} %页眉
-% for page styles scrheadings and plain
-\clearpairofpagestyles
-\ohead{}
-\cfoot{}
-\ofoot{}
-
-%%-------------------------------- SCRLAYER-SCRPAGE -------------------------------------%%
-
-%% Begin The Most Beautiful Box (STYLE : ys style) % 中国风盒子
-\makeatletter
-\definecolor{framegolden}{HTML}{455a64} % 控制外框颜色
-\definecolor{framegray}{HTML}{e0e0e0} % 控制填充颜色
-\newdimen\ys@frame@linewidth
-\newdimen\ys@frame@radius
-\newdimen\ys@frame@sep
-\def\ys@frame@fill@opacity{0.2}
-
-\pgfdeclarehorizontalshading{ys@fade@circle}{500bp}
-{color(0bp)=(pgftransparent!100); color(25bp)=(pgftransparent!100);
-color(45bp)=(pgftransparent!0); color(55bp)=(pgftransparent!0);
-color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
-\pgfdeclarefading{ys circle}{\pgfuseshading{ys@fade@circle}}
-
-\def\ys@frame@star@list@t{%
- -0.7071\ys@frame@radius+0.2133\ys@frame@sep/%
- -0.7071\ys@frame@radius+0.2133\ys@frame@sep/%
- frame.north east,%
- 0.7071\ys@frame@radius-0.2133\ys@frame@sep/%
- -0.7071\ys@frame@radius+0.2133\ys@frame@sep/%
- frame.north west}
-\def\ys@frame@star@list@b{%
- 0.7071\ys@frame@radius-0.2133\ys@frame@sep/%
- 0.7071\ys@frame@radius-0.2133\ys@frame@sep/%
- frame.south west,%
- -0.7071\ys@frame@radius+0.2133\ys@frame@sep/%
- 0.7071\ys@frame@radius-0.2133\ys@frame@sep/%
- frame.south east}
-\edef\ys@frame@star@list{\ys@frame@star@list@t,\ys@frame@star@list@b}
-
-%region outer
-\def\ys@frame@remove@middleline#1#2{}
-\def\ys@frame@draw@middleline#1#2{%
- \clip ([xshift=-\ys@frame@linewidth,#1]frame.north west)--
- ([xshift=\ys@frame@linewidth,#1]frame.north east)--
- ([xshift=\ys@frame@linewidth,#2]frame.south east)--
- ([xshift=-\ys@frame@linewidth,#2]frame.south west)--cycle;}
-\def\ys@frame@unbrokenouter{%
- \path[draw=framegolden,fill=framegray,fill opacity=\ys@frame@fill@opacity,line width=\ys@frame@linewidth]
- ([xshift=\ys@frame@radius]frame.north west)--([xshift=-\ys@frame@radius]frame.north east)
- arc(-180:-90:\ys@frame@radius)--
- ([yshift=-\ys@frame@radius]frame.north east)--([yshift=\ys@frame@radius]frame.south east)
- arc(90:180:\ys@frame@radius)--
- ([xshift=-\ys@frame@radius]frame.south east)--([xshift=\ys@frame@radius]frame.south west)
- arc(0:90:\ys@frame@radius)--
- ([yshift=\ys@frame@radius]frame.south west)--([yshift=-\ys@frame@radius]frame.north west)
- arc(-90:0:\ys@frame@radius)--cycle;}
-\def\ys@frame@firstouter{%
- \ys@frame@remove@middleline{yshift=.5\ys@frame@linewidth}{yshift=.7\ys@frame@linewidth}%
- \path[draw=framegolden,fill=framegray,fill opacity=\ys@frame@fill@opacity,line width=\ys@frame@linewidth]
- ([xshift=\ys@frame@radius]frame.north west)--([xshift=-\ys@frame@radius]frame.north east)
- arc(-180:-90:\ys@frame@radius)--
- ([yshift=-\ys@frame@radius]frame.north east)--
- (frame.south east)--
- (frame.south west)--
- ([yshift=-\ys@frame@radius]frame.north west)
- arc(-90:0:\ys@frame@radius)--cycle;}
-\def\ys@frame@middleouter{%
- \ys@frame@remove@middleline{yshift=-.7\ys@frame@linewidth}{yshift=.7\ys@frame@linewidth}%
- \path[draw=framegolden,fill=framegray,fill opacity=\ys@frame@fill@opacity,line width=\ys@frame@linewidth]
- (frame.north west)--(frame.north east)--(frame.south east)--
- (frame.south west)--cycle;}
-\def\ys@frame@lastouter{%
- \ys@frame@remove@middleline{yshift=-.7\ys@frame@linewidth}{yshift=-.5\ys@frame@linewidth}%
- \path[draw=framegolden,fill=framegray,fill opacity=\ys@frame@fill@opacity,line width=\ys@frame@linewidth]
- (frame.north west)--(frame.north east)--
- ([yshift=\ys@frame@radius]frame.south east)
- arc(90:180:\ys@frame@radius)--
- ([xshift=-\ys@frame@radius]frame.south east)--([xshift=\ys@frame@radius]frame.south west)
- arc(0:90:\ys@frame@radius)--
- ([yshift=\ys@frame@radius]frame.south west)--
- (frame.north west)--cycle;}
-%endregion
-%region inner
-\def\ys@frame@unbrokeninner{%
-\path[draw=framegolden,line width=.5\ys@frame@linewidth,line cap=round]
-([xshift=\ys@frame@radius+2\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@radius+5\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west) --++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
- ([xshift=\ys@frame@radius+6\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth) %第一节
- --([xshift=-\ys@frame@radius-8.828\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth)
- ([xshift=-\ys@frame@radius-7.828\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第二节
- --([xshift=-\ys@frame@radius-2\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)
- %%
-([yshift=-\ys@frame@radius-2\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east)
---([yshift=-\ys@frame@radius-5\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east) --++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
-([yshift=-\ys@frame@radius-6\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth) %第一节
---([yshift=\ys@frame@radius+8.828\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth)
-([yshift=\ys@frame@radius+7.828\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第二节
-%
- --([yshift=\ys@frame@radius+2\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)
-%
-([xshift=\ys@frame@radius+2\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)
---([xshift=\ys@frame@radius+5\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west) --++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth)
-([xshift=\ys@frame@radius+6\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第一节
---([xshift=-\ys@frame@radius-8.828\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
-([xshift=-\ys@frame@radius-7.828\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth) %第二节
- --([xshift=-\ys@frame@radius-2\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)
-%
-([yshift=-\ys@frame@radius-2\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west)
---([yshift=-\ys@frame@radius-5\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west) --++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth)
-([yshift=-\ys@frame@radius-6\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第一节
---([yshift=\ys@frame@radius+8.828\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
-([yshift=\ys@frame@radius+7.828\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth) %第二节
- --([yshift=\ys@frame@radius+2\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west);}
-\def\ys@frame@firstinner{%
- \path[draw=framegolden,line width=.5\ys@frame@linewidth,line cap=round]
- ([xshift=\ys@frame@radius+2\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@radius+5\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west) --++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
- ([xshift=\ys@frame@radius+6\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth) %第一节
- --([xshift=-\ys@frame@radius-8.828\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth)
- ([xshift=-\ys@frame@radius-7.828\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第二节
- --([xshift=-\ys@frame@radius-2\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)
- %%
-([yshift=-\ys@frame@radius-2\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east)
---([yshift=-\ys@frame@radius-5\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east) --++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
-([yshift=-\ys@frame@radius-6\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.north east)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth) %第一节
---([xshift=-\ys@frame@sep]frame.south east)
-
- ([yshift=-\ys@frame@radius-2\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west)
- --([yshift=-\ys@frame@radius-5\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west) --++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth)
- ([yshift=-\ys@frame@radius-6\ys@frame@linewidth,xshift=\ys@frame@sep]frame.north west)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第一节
- --([xshift=\ys@frame@sep]frame.south west);}
-\def\ys@frame@middleinner{%
- \path[draw=framegolden,line width=.5\ys@frame@linewidth,line cap=round]
- ([xshift=-\ys@frame@sep]frame.north east)--([xshift=-\ys@frame@sep]frame.south east)
- ([xshift=\ys@frame@sep]frame.north west)--([xshift=\ys@frame@sep]frame.south west);}
-\def\ys@frame@lastinner{%
- \path[draw=framegolden,line width=.5\ys@frame@linewidth,line cap=round]
- ([xshift=-\ys@frame@sep]frame.north east)
- --([yshift=\ys@frame@radius+8.828\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth)
- ([yshift=\ys@frame@radius+7.828\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第二节
- %
- --([yshift=\ys@frame@radius+2\ys@frame@linewidth,xshift=-\ys@frame@sep]frame.south east)
-%
- ([xshift=\ys@frame@radius+2\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@radius+5\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west) --++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth)
- ([xshift=\ys@frame@radius+6\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth) %第一节
- --([xshift=-\ys@frame@radius-8.828\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)--++(45:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
- ([xshift=-\ys@frame@radius-7.828\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)--++(-45:2\ys@frame@linewidth)--++(45:2\ys@frame@linewidth) %第二节
- --([xshift=-\ys@frame@radius-2\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)
-%
- ([xshift=\ys@frame@sep]frame.north west)
- --([yshift=\ys@frame@radius+8.828\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west)--++(-135:2\ys@frame@linewidth)--++(-45:2\ys@frame@linewidth)
- ([yshift=\ys@frame@radius+7.828\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west)--++(-45:2\ys@frame@linewidth)--++(-135:2\ys@frame@linewidth) %第二节
- --([yshift=\ys@frame@radius+2\ys@frame@linewidth,xshift=\ys@frame@sep]frame.south west);}
-%endregion
-%region corner
-\def\ys@frame@unbrokencorner{%
- \path[draw=framegolden,line width=1.5\ys@frame@linewidth,line cap=round]
- ([xshift=\ys@frame@radius-2.7\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@sep,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@sep,yshift=-\ys@frame@radius+2.7\ys@frame@linewidth]frame.north west)
- ([xshift=-\ys@frame@radius+2.7\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)
- --([xshift=-\ys@frame@sep,yshift=-\ys@frame@sep]frame.north east)
- --([xshift=-\ys@frame@sep,yshift=-\ys@frame@radius+2.7\ys@frame@linewidth]frame.north east)
- ([xshift=-\ys@frame@radius+2.7\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)
- --([xshift=-\ys@frame@sep,yshift=\ys@frame@sep]frame.south east)
- --([xshift=-\ys@frame@sep,yshift=\ys@frame@radius-2.7\ys@frame@linewidth]frame.south east)
- ([xshift=\ys@frame@radius-2.7\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@sep,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@sep,yshift=\ys@frame@radius-2.7\ys@frame@linewidth]frame.south west);}
-\def\ys@frame@firstcorner{%
- \path[draw=framegolden,line width=1.5\ys@frame@linewidth,line cap=round]
- ([xshift=\ys@frame@radius-2.7\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@sep,yshift=-\ys@frame@sep]frame.north west)
- --([xshift=\ys@frame@sep,yshift=-\ys@frame@radius+2.7\ys@frame@linewidth]frame.north west)
- ([xshift=-\ys@frame@radius+2.7\ys@frame@linewidth,yshift=-\ys@frame@sep]frame.north east)
- --([xshift=-\ys@frame@sep,yshift=-\ys@frame@sep]frame.north east)
- --([xshift=-\ys@frame@sep,yshift=-\ys@frame@radius+2.7\ys@frame@linewidth]frame.north east);}
-\def\ys@frame@middlecorner{}
-\def\ys@frame@lastcorner{%
- \path[draw=framegolden,line width=1.5\ys@frame@linewidth,line cap=round]
- ([xshift=-\ys@frame@radius+2.7\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south east)
- --([xshift=-\ys@frame@sep,yshift=\ys@frame@sep]frame.south east)
- --([xshift=-\ys@frame@sep,yshift=\ys@frame@radius-2.7\ys@frame@linewidth]frame.south east)
- ([xshift=\ys@frame@radius-2.7\ys@frame@linewidth,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@sep,yshift=\ys@frame@sep]frame.south west)
- --([xshift=\ys@frame@sep,yshift=\ys@frame@radius-2.7\ys@frame@linewidth]frame.south west);}
-%endregion
-\def\ys@frame@star#1#2#3{%
- \begin{scope}[shift={([xshift=#1,yshift=#2]#3)},scale=\ys@frame@ratio*0.1]
- \path[draw=framegolden,fill=white,
- line width=.7\ys@frame@linewidth,line join=round]
- (1,1)..controls(0.3,0.5) and (-0.3,0.5)..
- (-1,1)..controls(-0.5,0.3) and (-0.5,-0.3)..
- (-1,-1)..controls(-0.3,-0.5) and (0.3,-0.5)..
- (1,-1)..controls(0.5,-0.3) and (0.5,0.3)..(1,1)--cycle;
- \path[scale=0.45,fill=framegolden,line join=round]
- (1,1)..controls(0.3,0.7) and (-0.3,0.7)..
- (-1,1)..controls(-0.7,0.3) and (-0.7,-0.3)..
- (-1,-1)..controls(-0.3,-0.7) and (0.3,-0.7)..
- (1,-1)..controls(0.7,-0.3) and (0.7,0.3)..(1,1)--cycle;
- \end{scope}}
-\def\ys@frame@segmentation{%
- \draw[color=framegolden,path fading=ys circle]
- ([xshift=5\ys@frame@radius]segmentation.west) to[ornament=88]
- ([xshift=-5\ys@frame@radius]segmentation.east);}
-
-\tcbset{
- % 控制是否在断点处的线不画出来
- ys/frame/not at break/.code=\let\ys@frame@remove@middleline\ys@frame@draw@middleline,
- ys/frame/fill opacity/.store in=\ys@frame@fill@opacity,
- ys/frame/draw at break/.code=\let\ys@frame@remove@middleline\@gobbletwo,
- % 控制线宽
- ys/frame/line width/.code={\pgfmathsetlength\ys@frame@linewidth{#1}},
- ys/frame/line width=1.4pt,
- % 控制圆弧大小,应为数字,而非长度
- ys/frame/radius/.code={\pgfmathparse{#1}\let\ys@frame@ratio\pgfmathresult
- \pgfmathsetlength\ys@frame@radius{(#1)*1em}%
- \pgfmathsetlength\ys@frame@sep{(#1)*0.5ex}},
- ys/frame/radius=2,
- ys/frame/unbroken/.style={
- interior code={%
- \ys@frame@unbrokenouter % 外框
- \foreach \ii/\jj/\kk in \ys@frame@star@list {\ys@frame@star{\ii}{\jj}{\kk}} % 星
- \ys@frame@unbrokeninner % 内线
- \ys@frame@unbrokencorner % 四角
- },
- interior titled code={%
- \ys@frame@unbrokenouter % 外框
- \foreach \ii/\jj/\kk in \ys@frame@star@list {\ys@frame@star{\ii}{\jj}{\kk}} % 星
- \ys@frame@unbrokeninner % 内线
- \ys@frame@unbrokencorner % 四角
- }
- },
- ys/frame/first/.style={
- interior code={%
- \ys@frame@firstouter
- \foreach \ii/\jj/\kk in \ys@frame@star@list@t {\ys@frame@star{\ii}{\jj}{\kk}}
- \ys@frame@firstinner
- \ys@frame@firstcorner},
- interior titled code={%
- \ys@frame@firstouter
- \foreach \ii/\jj/\kk in \ys@frame@star@list@t {\ys@frame@star{\ii}{\jj}{\kk}}
- \ys@frame@firstinner
- \ys@frame@firstcorner},
- },
- ys/frame/middle/.style={
- interior code={%
- \ys@frame@middleouter
- \ys@frame@middleinner
- \ys@frame@middlecorner}
- },
- ys/frame/last/.style={
- interior code={%
- \ys@frame@lastouter
- \foreach \ii/\jj/\kk in \ys@frame@star@list@b {\ys@frame@star{\ii}{\jj}{\kk}}
- \ys@frame@lastinner
- \ys@frame@lastcorner}
- },
- ys/frame style/unbroken/.style={
- boxsep=2\ys@frame@sep,
- left={.8\ys@frame@radius},right={.8\ys@frame@radius},
- ys/frame/unbroken,title hidden,
- segmentation code=\ys@frame@segmentation
- },
- ys/frame style/first/.style={ys/frame/first,title hidden,segmentation code=\ys@frame@segmentation},
- ys/frame style/middle/.style={ys/frame/middle,segmentation code=\ys@frame@segmentation},
- ys/frame style/last/.style={ys/frame/last,segmentation code=\ys@frame@segmentation},
- ys style/.style={frame hidden,
- ys/frame style/unbroken,
- extras first={ys/frame style/first},
- extras middle={ys/frame style/middle},
- extras last={ys/frame style/last},
- },
-}
-\makeatother
-\newtcolorbox{fancybox}[1][]{enhanced,ys style,breakable,pad at break=2mm,
- ys/frame/not at break,ys/frame/fill opacity=0,#1,fontupper=\itshape}
-%% End The Most Beautiful Box
-\makeatletter
-\definecolor{CyaN}{HTML}{dbe1e5}
-\colorlet{OrangE}{yellow!20!orange}
-\colorlet{BluE}{cyan!70!blue}
-\colorlet{ReD}{red!20!orange}
-\colorlet{GreeN}{yellow!40!green}
-
-% 第一种定理
-\tcbset{my@basic@thm/.style={enhanced jigsaw, breakable,
- enlarge left by=-3.5mm, width=\textwidth+3.5mm, boxrule=0pt,
- top=2pt, bottom=2pt, left=2.5mm, frame hidden}}
-\newcommand{\@my@newtheorem@n}[1]{\ERROR}
-\newcommand{\@my@newtheorem@nn}[2]{%
- \@ifundefined{#1}{\@my@newtheorem{#1}#2}{\@my@renewtheorem{#1}#2}}
-\NewDocumentCommand{\@my@newtheorem}{ m m o +m }
- {\IfNoValueTF{#3}{\newtheorem{#1}{#2}}{\newtheorem{#1}{#2}[#3]}%
- \tcbset{my@#1@thmstyle/.style={#4}}%
- \tcolorboxenvironment{#1}{my@basic@thm, my@#1@thmstyle}}
-\NewDocumentCommand{\@my@renewtheorem}{ m m o +m }
- {\IfNoValueTF{#3}{\renewtheorem{#1}{#2}}{\renewtheorem{#1}{#2}[#3]}%
- \tcbset{my@#1@thmstyle/.style={#4}}}
-%
-% ---------------------------------------------------------------------------------- %
-% 第二种定理
-\tcbset{my@basic@tcbthm/.style={detach title,}}
-\newcommand{\@my@newtcbtheorem@n}[1]{\ERROR}
-\newcommand{\@my@newtcbtheorem@nn}[2]{%
- \@ifundefined{#1}{\@my@newtcbtheorem{#1}{#2}}{\@my@renewtcbtheorem{#1}{#2}}}
-\newcommand{\@my@newtcbtheorem}[2]{%
- \edef\my@curr@thmenvname{#1}% 它保存当前定理环境的名称
- \mytcbtheoremset{#2}%
- \NewTColorBox{#1}{ O{} O{} o }
- {my@basic@tcbthm, my@#1@tcbthmstyle, title={##2}, IfNoValueF={##3}{label={##3}}, ##1}}
-\newcommand{\@my@renewtcbtheorem}[2]{\edef\my@curr@thmenvname{#1}\mytcbtheoremset{#2}}
-
-% 键值设置
-\pgfkeys{/mytcbtheorem/.is family}
-\newcommand{\mytcbtheoremset}{\pgfqkeys{/mytcbtheorem}}
-\mytcbtheoremset{
- name/.code=\@namedef{\my@curr@thmenvname @name}{#1}, %无效
- counter/.code=\@namedef{my@\my@curr@thmenvname @counter}{#1}\newcounter{#1}[chapter], % 计数器遇到subsection就会自动归零 % https://zhuanlan.zhihu.com/p/57454848#circle=on
- the counter/.code=\@namedef{the\@nameuse{my@\my@curr@thmenvname @counter}}{#1},
- autoref name/.code=\@namedef{\@nameuse{my@\my@curr@thmenvname @counter}autorefname}{#1},
- style/.code=\tcbset{my@\my@curr@thmenvname @tcbthmstyle/.style={#1}},
- thmcolor/.code=\@namedef{\my@curr@thmenvname @thmcolor}{#1}, %无效
- lemcolor/.code=\@namedef{\my@curr@thmenvname @lemcolor}{#1}, %无效
-}
-% 存储键值 (LaTeX3)
-\ExplSyntaxOn
-\cs_new_protected:Npn \mynewtheorem
- { \keyval_parse:NNn \@my@newtheorem@n \@my@newtheorem@nn }
-\cs_new_protected:Npn \mynewtcbtheorem
- { \keyval_parse:NNn \@my@newtcbtheorem@n \@my@newtcbtheorem@nn }
-\ExplSyntaxOff
-\makeatother
-
-% 第二种定理
-\makeatletter
-%% Overlay Settings
-\newcommand{\my@theorem@overlay@unbroken}[2]{
- %%============== First ==============%%
- \fill[black!60] ([xshift=1cm,yshift=5pt]frame.north west)-- ([xshift=0.8cm,yshift=0cm]frame.north west)--([xshift=1.2cm,yshift=0cm]frame.north west)--cycle;
- \node[rectangle, text=white, drop shadow={opacity=.3, shadow xshift=0.1cm}, inner sep=1.5mm,fill=#2,
-anchor=west,rounded corners=3pt,font=\bfseries\normalsize] at ([xshift=0cm,yshift=-3.mm]frame.north west) {\hspace*{1.5em}#1.\ \ifdefvoid{\tcbtitletext}{}{(\itshape\tcbtitletext)}};
- \fill[color=#2,drop shadow={opacity=0.3,shadow xshift=.3pt}]
- ([xshift=1cm,yshift=5pt]frame.north west) {[rounded corners=3pt]--++(-1cm-5pt,0)}--++(0,-1cm-5pt)--cycle;
- \fill[color=black!60] ([xshift=-5pt,yshift=-1cm]frame.north west)--([xshift=0cm,yshift=-0.8cm]frame.north west)-- ([xshift=0cm,yshift=-1.2cm]frame.north west)--cycle;
- %%============== End ==============%%
- \fill[#2,drop shadow={opacity=0.3,shadow xshift=-0.008\linewidth,shadow yshift=0.0016\linewidth}]
- ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) {[rounded corners=3pt]--++(0.05\linewidth+5pt,0)}--++(0,0.05\linewidth+5pt)--cycle;
- \fill[black!60] ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) -- ([xshift=-0.04\linewidth,yshift=0pt]frame.south east)-- ([xshift=-0.06\linewidth,yshift=0pt]frame.south east)--cycle;
- \fill[black!60] ([xshift=5pt,yshift=0.05\linewidth]frame.south east)-- ([yshift=0.04\linewidth]frame.south east) -- ([yshift=0.06\linewidth]frame.south east)--cycle;
-}
-\newcommand{\my@theorem@overlay@first}[2]{
- \fill[black!60] ([xshift=1cm,yshift=5pt]frame.north west)-- ([xshift=0.8cm,yshift=0cm]frame.north west)--([xshift=1.2cm,yshift=0cm]frame.north west)--cycle;
- \node[rectangle, text=white, drop shadow={opacity=.3, shadow xshift=0.1cm}, inner sep=1.5mm,fill=#2, anchor=west,rounded corners=3pt,font=\bfseries\normalsize] at ([xshift=0cm,yshift=-3.mm]frame.north west) {\hspace*{1.5em}#1.\ \ifdefvoid{\tcbtitletext}{}{(\itshape\tcbtitletext)}};
- \fill[color=#2,drop shadow={opacity=0.3,shadow xshift=.3pt}]
- ([xshift=1cm,yshift=5pt]frame.north west) {[rounded corners=3pt]--++(-1cm-5pt,0)}--++(0,-1cm-5pt)--cycle;
- \fill[color=black!60] ([xshift=-5pt,yshift=-1cm]frame.north west)--([xshift=0cm,yshift=-0.8cm]frame.north west)-- ([xshift=0cm,yshift=-1.2cm]frame.north west)--cycle;
-}
-\newcommand{\my@theorem@overlay@last}[1]{
- \fill[#1,drop shadow={opacity=0.3,shadow xshift=-0.008\linewidth,shadow yshift=0.0016\linewidth}]
- ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) {[rounded corners=3pt]--++(0.05\linewidth+5pt,0)}--++(0,0.05\linewidth+5pt)--cycle;
- \fill[black!60] ([xshift=-0.05\linewidth,yshift=-5pt]frame.south east) -- ([xshift=-0.04\linewidth,yshift=0pt]frame.south east)-- ([xshift=-0.06\linewidth,yshift=0pt]frame.south east)--cycle;
- \fill[black!60] ([xshift=5pt,yshift=0.05\linewidth]frame.south east)-- ([yshift=0.04\linewidth]frame.south east) -- ([yshift=0.06\linewidth]frame.south east)--cycle;
-}
-% Second theorem style overlay settings
-\newcommand{\my@lemma@overlay@unbroken}[2]{
- %%============== First ==============%%
- \def\Rad{3.5pt}
- \def\theight{0.57cm}
- \def\rad{7pt}%
- \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=.05cm,shadow yshift=-.05cm}]node[append after command={
- ([xshift=-1.5*\rad]thmname.north west) to[out=0,in=180,looseness=1] ([xshift=2.5*\rad]thmname.south west) --([xshift=-\rad]thmname.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]thmname.north east) --cycle},
- text=white,font=\bfseries,align=center,inner ysep=1.5mm,minimum height=0.6cm,right] (thmname) at ([xshift=\rad,yshift=-.7*\rad]frame.north west) {\hspace*{10pt}#1.\ \ifdefvoid{\tcbtitletext}{}{(\itshape\tcbtitletext)}};
- \begin{pgfonlayer}{bottom}
- \fill[#2,opacity=0.5]
- ([xshift=-1.5*\rad]thmname.north west) to[out=180,in=305,looseness=1.5] +(3pt,-6pt) -| ++(12pt,0)--cycle;
- \fill[#2,opacity=0.5]
- ([xshift=3*\rad]thmname.north east) to[out=0,in=-90] +(5pt,-5pt) -| ++(-10pt,0) --cycle;
- \end{pgfonlayer}
- %%============== End ==============%%
- \def\tlen{1.5cm}
- \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=.3pt}]
- ([xshift=-2*\rad,yshift=-5pt]frame.south east) coordinate (SE) to[out=0,in=180] +(4*\rad,5pt+\theight) --([shift={(-\tlen+4*\rad,5pt+\theight)}]SE) to[out=180,in=0] +(-4*\rad,-5pt-\theight) --cycle;
- \begin{pgfonlayer}{bottom}
- \fill[color=#2,opacity=0.5] ([xshift=-1.35*\tlen+\Rad,yshift=-5pt]frame.south east) to[out=180,in=90,looseness=0.7] ([xshift=-1.35*\tlen-0.5*\Rad]frame.south east) coordinate (NWl)--([xshift=2*\rad]NWl) to[out=-90,in=-180,looseness=0.7] ([xshift=-1.35*\tlen+\Rad,yshift=-5pt]frame.south east)--cycle;
- \end{pgfonlayer}
- }
-\newcommand{\my@lemma@overlay@first}[2]{
- %%============== First ==============%%
- \def\Rad{3.5pt}
- \def\theight{0.57cm}
- \def\rad{7pt}%
- \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=.05cm,shadow yshift=-.05cm}]node[append after command={
- ([xshift=-1.5*\rad]thmname.north west) to[out=0,in=180,looseness=1] ([xshift=2.5*\rad]thmname.south west) --([xshift=-\rad]thmname.south east) to[out=0,in=180,looseness=1] ([xshift=3*\rad]thmname.north east) --cycle},
- text=white,font=\bfseries,align=center,inner ysep=1.5mm,minimum height=0.6cm,right] (thmname) at ([xshift=\rad,yshift=-.7*\rad]frame.north west) {\hspace*{10pt}#1.\ \ifdefvoid{\tcbtitletext}{}{(\itshape\tcbtitletext)}};
- \begin{pgfonlayer}{bottom}
- \fill[#2,opacity=0.5]
- ([xshift=-1.5*\rad]thmname.north west) to[out=180,in=305,looseness=1.5] +(3pt,-6pt) -| ++(12pt,0)--cycle;
- \fill[#2,opacity=0.5]
- ([xshift=3*\rad]thmname.north east) to[out=0,in=-90] +(5pt,-5pt) -| ++(-10pt,0) --cycle;
- \end{pgfonlayer}
- }
-\newcommand{\my@lemma@overlay@last}[1]{
- %%============== End ==============%%
- \def\Rad{3.5pt}
- \def\rad{7pt}%
- \def\theight{0.57cm}
- \def\tlen{1.5cm}
- \path[fill=#1,drop shadow={opacity=0.3,shadow xshift=.3pt}]
- ([xshift=-2*\rad,yshift=-5pt]frame.south east) coordinate (SE) to[out=0,in=180] +(4*\rad,5pt+\theight) --([shift={(-\tlen+4*\rad,5pt+\theight)}]SE) to[out=180,in=0] +(-4*\rad,-5pt-\theight) --cycle;
- \begin{pgfonlayer}{bottom}
- \fill[color=#1,opacity=0.5] ([xshift=-1.35*\tlen+\Rad,yshift=-5pt]frame.south east) to[out=180,in=90,looseness=0.7] ([xshift=-1.35*\tlen-0.5*\Rad]frame.south east) coordinate (NWl)--([xshift=2*\rad]NWl) to[out=-90,in=-180,looseness=0.7] ([xshift=-1.35*\tlen+\Rad,yshift=-5pt]frame.south east)--cycle;
- \end{pgfonlayer}
- }
-\makeatother
-%%
-
-% proof
-\newcommand{\itbf}[1]{\textit{\textbf{#1}}}
-\declaretheoremstyle[
- spaceabove=3pt,spacebelow=3pt,
- headfont=\normalfont\bfseries,
- notefont=\normalfont\bfseries,notebraces={(}{)},
- bodyfont=\normalfont,
- postheadspace=.5em,
- headpunct={.},
- qed=$\blacksquare$,%\qedsymbol
-]{Proofstyle}
-\declaretheorem[style=Proofstyle,numbered=no,name={\itbf{Proof}}]{Proof}
-\renewenvironment{proof}{\begin{Proof} }{\end{Proof}}
-\declaretheorem[style=Proofstyle,numbered=no,name={\itbf{Solution}}]{solution}
-
-%%%%%%%%%%%%%%% 计数器知识 %%%%%%%%%%%%%%%%%%%%%%
-% 每次用 \newcounter{foo} 定义新计数器,内部都会定义这几个命令
-
-% \c@foo,储存计数器的值,初始值为 0
-% \thefoo,储存计数器输出时的格式,初始定义为 \arabic{foo}
-% \p@foo,储存计数器被引用时的前缀,初始定义为空
-% \cl@foo,储存「子计数器」列表(此处有简化),foo 自增时它的每个「子计数器」都会归零(详见「自动归零」一节),初始定义为空
-%% 关于计数器的自动归零
-% 如果还定义了计数器 \newcounter{bar}[foo],那么 \cl@foo 里就有了 bar
-% \@addtoreset{child}{parent} 和 \@removefromreset{child}{parent} 可以把计数器 child 移入/移出 \cl@parent
-% \counterwithin* 和 \counterwithout* 和上一条里两个命令的功能类似,但它们在执行前会检查接受的两个参数是否为已定义的计数器。不加星号的版本会修改 \thechild,详见「输出格式」一节
-% 在使用 \stepcounter{parent} 和 \refstepcounter{parent} 时,parent 自增,同时归零\cl@parent 里的「子计数器」
-% \addtocount{parent}{1} 只自增 parent,没有归零其「子计数器」的效果
-% 归零实现为「对每个子计数器,先设为 -1,然后使用 \stepcounter 自增」,这样实现的「归零」功能是递归的
-% 递归的意思是,如果还有 \newcounter{grandchild}[child],那么 \stepcounter{parent} 会将 child 和 grandchild 都归零
diff --git a/Master/texmf-dist/tex/latex/beautybook/Beautybook-CN.cls b/Master/texmf-dist/tex/latex/beautybook/beautybook.cls
index d3ab12a333e..73959a7594e 100644
--- a/Master/texmf-dist/tex/latex/beautybook/Beautybook-CN.cls
+++ b/Master/texmf-dist/tex/latex/beautybook/beautybook.cls
@@ -1,143 +1,161 @@
-%This Class is based on the default book class and options will be passed
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{Beautybook-CN}[02-10-2023 V8.0 Beautybook Class]
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexbook}}
-\ProcessOptions\relax
-\LoadClass[twoside,a4paper]{ctexbook}
+\ProvidesClass{beautybook}[02-07-2024 V10.0 beautybook Class]
+% /* -------------------------------------------------------------------------- */
+% /* 切换文类 */
+% /* -------------------------------------------------------------------------- */
+\DeclareKeys{% = \DeclareKeys[autoclass]
+ lang .choice: ,
+ lang/en .code:n = \def\beautybook@class{book} ,
+ lang/cn .code:n = \def\beautybook@class{ctexbook} ,
+ lang .initial:n = en ,
+ unknown .code:n = \beautybook@unknown ,
+}
+
+\ExplSyntaxOn
+\clist_new:N \beautybook@unknownoptions
+\cs_new_protected:Npn \beautybook@unknown
+ {
+ \bool_if:NTF \l__keys_no_value_bool
+ { % eg. 12pt, twoside
+ \clist_put_right:Nx \beautybook@unknownoptions
+ { \l_keys_key_str }
+ }
+ { % eg. zihao=4, fontset=windows
+ \clist_put_right:Nx \beautybook@unknownoptions
+ { \l_keys_key_str = { \exp_not:o \l_keys_value_tl } }
+ }
+ }
+\ExplSyntaxOff
+
+\ProcessKeyOptions % = \ProcessKeyOptions[beautybook]
+\PassOptionsToClass\beautybook@unknownoptions\beautybook@class
+%% 如果不需要过滤上面定义的 lang 等键,可以直接使用
+%% \PassOptionsToClass\@raw@classoptionslist\beautybook@class
+
+\LoadClass{\beautybook@class}
+% /* ---------------------------------- 切换文类 ---------------------------------- */
+
+
+% /* -------------------------------------------------------------------------- */
+% /* 判断 A4 paper程序 */
+% /* -------------------------------------------------------------------------- */
+\makeatletter
+\ExplSyntaxOn
+\cs_new:Npn \ifaivpaper@TF
+ {
+ \bool_lazy_and:nnTF
+ { \dim_compare_p:nNn { 297mm } = { \paperheight } } % 不能是 29.7cm
+ { \dim_compare_p:nNn { 210mm } = { \paperwidth } }
+ }
+\ExplSyntaxOff
+% \ifaivpaper@TF{a4paper内容}{not a4paper内容} % 这个用在想要判断a4paper的地方
+\makeatother
+% /* -------------------------------------------------------------------------- */
+% /* 判断 A4 paper程序 */
+% /* -------------------------------------------------------------------------- */
+
+
\RequirePackage[dvipsnames,svgnames,x11names,table]{xcolor}
-\RequirePackage{cncolours}
-\setmainfont{Times New Roman}
-\setsansfont{HONOR Sans}
-\setmonofont{Latin Modern Mono}
-\colorlet{outermarginfgcolor}{DarkCyan} % foregroundcolor 较深
-\colorlet{outermarginbgcolor}{DarkCyan!30} % backgroundcolor 较浅
-\RequirePackage{bropd} % math 自适应数学括号命令 \br{} !!!
-\RequirePackage{tikz-imagelabels} % tikz图像标注
-\RequirePackage{epigraph-keys} % 名言引用
-\RequirePackage{fitbox} % 图像自适应
-\RequirePackage{pgfornament-han}
-\RequirePackage{tikz}
-\usetikzlibrary{calc,shadows,hobby,intersections, decorations.markings, decorations.pathreplacing,spy,arrows,shapes,fadings,trees,mindmap,patterns,shapes.arrows,shapes.symbols,tikzmark,shapes.geometric,graphs, quotes, angles,decorations.pathmorphing,through,shadings,backgrounds,positioning,fit,arrows.meta,shapes.misc,decorations.shapes}
-\RequirePackage{pgfplots} %画图 %%页面样式设计核心包 %提供\pgfonlayer命令以及下列图层指令
-\pgfplotsset{compat=1.18}
-%
+\RequirePackage{tikz} %%页面样式设计核心包 %提供\pgfonlayer命令
+\usetikzlibrary{cd,calc,shadows,hobby,intersections, decorations.markings, decorations.pathreplacing,spy,arrows,shapes,fadings,trees,mindmap,patterns,shapes.arrows,shapes.symbols,tikzmark,shapes.geometric,graphs, quotes, angles,decorations.pathmorphing,through,shadings,backgrounds,positioning,fit,arrows.meta,shapes.misc,decorations.shapes}
+
+% /* --------------------------------- 模板默认颜色 --------------------------------- */
+\colorlet{outermarginfgcolor}{DarkCyan} % foregroundcolor 较深的前景色
+\colorlet{outermarginbgcolor}{DarkCyan!30} % backgroundcolor 较浅的背景色
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 封面切换程序 */
+% /* -------------------------------------------------------------------------- */
+
\ExplSyntaxOn
-% 封面切换程序 (LaTeX3)!
-\keys_define:nn {Beautybook/coverstyle}
+\keys_define:nn {beautybook/coverstyle}
{
cover-choose.choice:,
cover-choose.value_required:n = true,
- cover-choose/cn.code:n = {\RequirePackage{stys/Beautybook-cover-cn}},
- cover-choose/en.code:n = {\RequirePackage{stys/Beautybook-cover-en}},
- cover-choose/enfig.code:n = {\RequirePackage{stys/Beautybook-cover-enfig}},
- cover-choose/birkar.code:n = {\RequirePackage{stys/Beautybook-cover-birkar}},
+ cover-choose/cn.code:n = {\RequirePackage{stys/beautybook-cover-cn}},
+ cover-choose/en.code:n = {\RequirePackage{stys/beautybook-cover-en}},
+ cover-choose/enfig.code:n = {\RequirePackage{stys/beautybook-cover-enfig}},
+ cover-choose/birkar.code:n = {\RequirePackage{stys/beautybook-cover-birkar}},
%cover-choose .initial:n = en , % 设置 en 为初始值
}
-\newtoks \l__Beautybook_tmpa_toks
+\newtoks \l__beautybook_tmpa_toks
\cs_new_protected:Npn \coverstyle
{
- \tex_afterassignment:D \__Beautybook_set_coverstyle:
- \l__Beautybook_tmpa_toks
+ \tex_afterassignment:D \__beautybook_set_coverstyle:
+ \l__beautybook_tmpa_toks
}
-\cs_new:Npn \__Beautybook_set_coverstyle:
- { \keys_set:nV { Beautybook / coverstyle } \l__Beautybook_tmpa_toks }
+\cs_new:Npn \__beautybook_set_coverstyle:
+ { \keys_set:nV { beautybook / coverstyle } \l__beautybook_tmpa_toks }
% Math fonts
-\keys_define:nn {Beautybook/mathstyle}
+\keys_define:nn {beautybook/mathstyle}
{
math-font.choice:,
math-font.value_required:n = true,
- math-font/plain.code:n={},
- math-font/stix.code:n={
- \RequirePackage{stix}
- },
+ math-font/plain.code:n={
+ \RequirePackage{amssymb,amsfonts,upgreek}
+ },
math-font/mtpro2.code:n = {
+ \RequirePackage{amssymb,amsfonts,upgreek}
+ \let\Bbbk\relex
\RequirePackage{mtpro2}
\RequirePackage{bm}
- \DeclareFontFamily{U}{nxlmi}{}
- \DeclareFontSubstitution{U}{nxlmi}{m}{it}
- \DeclareFontShape{U}{nxlmi}{m}{it}{
- <-6.3> nxlmi05
- <6.3-8.6> nxlmi07
- <8.6-> nxlmi0
- }{}
-
- \DeclareFontShape{U}{nxlmi}{b}{it}{
- <-6.3> nxlbmi05
- <6.3-8.6> nxlbmi07
- <8.6-> nxlbmi0
- }{}
- \renewcommand{\partial}{{\text{\usefont{U}{nxlmi}{m}{it}\symbol{64}}\mspace{1mu}}}
},
%cover-choose .initial:n = plain , % 设置 en 为初始值
}
\cs_new_protected:Npn \mathstyle
{
- \tex_afterassignment:D \__Beautybook_set_mathstyle:
- \l__Beautybook_tmpa_toks
+ \tex_afterassignment:D \__beautybook_set_mathstyle:
+ \l__beautybook_tmpa_toks
}
-\cs_new:Npn \__Beautybook_set_mathstyle:
- { \keys_set:nV { Beautybook / mathstyle } \l__Beautybook_tmpa_toks }
+\cs_new:Npn \__beautybook_set_mathstyle:
+ { \keys_set:nV { beautybook / mathstyle } \l__beautybook_tmpa_toks }
\ExplSyntaxOff
-\RequirePackage{stys/Beautybook-bottompage} %封底
-\RequirePackage{rotating}
-\tikzset{>=Stealth}
-\setlist{font=\upshape} % 取消所有列表默认距离 nosep,
-% 浮动环境设置
-% 默认情况下, \LaTeX{} 要求每页的文字至少占据 20%,否则该页就只单独放置一个浮动环境,
-% 而这通常不是我们想要的, 我们将这个要求降低到 5%.
-\renewcommand*{\textfraction}{0.05}
-% 有时如果多个浮动环境连续放在一起,
-% 会将它们分在几个不同页,即使它们可在同一页放
-% 得下. 我们可以通过修改 |\topfraction| 和 |\bottomfraction| 分别设置顶端和底端的浮
-% 动环境的最大比例.
-\renewcommand*{\topfraction}{0.9}
-\renewcommand*{\bottomfraction}{0.8}
-% 有时\LaTeX{}会把一个浮动环境单独放在一页,
-% 我们要求这个环境至少要占据 85% 才能单独放在一页.
-% 注意: |\floatpagefraction| 的数值必须小于 |\topfraction|.
-\renewcommand*{\floatpagefraction}{0.85}
+\RequirePackage{stys/beautybook-bottompage} %封底
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 宏包导入 */
+% /* -------------------------------------------------------------------------- */
+\RequirePackage{cncolours,ninecolors}
+\RequirePackage{appendix} % 附录
+\RequirePackage{etoolbox} % 判断函数
+\RequirePackage{imakeidx}
+\RequirePackage{varwidth}
+\RequirePackage{caption}\colorlet{captioncolor}{outermarginfgcolor} % 图片和表格题注文字颜色
+\RequirePackage{indentfirst}
+\RequirePackage{amsmath,amsthm,mathrsfs,extarrows,bropd}
+\RequirePackage{thmtools,thm-restate}%定理环境 %定理的重写
+\RequirePackage[left=2cm,right=2cm,top=.6cm,bottom=2.2cm]{geometry}
+\RequirePackage{tabularray}
+\RequirePackage{enumitem}\setlist{font=\upshape} % 取消所有列表默认距离 nosep,
+\RequirePackage[normalem]{ulem} % 用于参考文献
% 关于图片 graphicx
+\RequirePackage{graphicx}
% 如果图片没有指定后缀, 依次按下列顺序搜索
\DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png}
% 设置图表搜索路径, 可以给图表文件夹取如下名字
\graphicspath{{inner_pics/}{inner_pics/titleimages/}{figures/}{figure/}{pictures/}{picture/}{pic/}{pics/}{image/}{images/}}
-% \RequirePackage[physics]{stys/physicx}
-% \RequirePackage{stys/Symbols}
-\RequirePackage{extarrows}
-\usetikzlibrary{tikzmark}
-% \arrowname{super-script}
-% \arrowname[sub-script]{super-script}
-\RequirePackage{appendix} % 附录
-% \RequirePackage{stys/symbols}
-%
-\RequirePackage{amssymb,amsfonts,upgreek}
-\RequirePackage{makeidx}
-\RequirePackage{etoolbox} % 判断函数
-\RequirePackage{paracol}
-\RequirePackage{tikz-cd}
-\RequirePackage{imakeidx}
-\RequirePackage{anyfontsize}
-\RequirePackage{calc}
-\RequirePackage{xkeyval,ifthen}
-\RequirePackage[backgroundcolor=yellow!40!cyan!20,bordercolor=yellow!40!cyan!20,linecolor=DarkCyan]{todonotes}
-\RequirePackage{varwidth}
-\RequirePackage[colorlinks,linkcolor = purple, %%修改此处为你想要的颜色
-anchorcolor = purple, %%修改此处为你想要的颜色
-urlcolor = purple, %%修改此处为你想要的颜色
-citecolor = purple, %%修改此处为你想要的颜色
-]{hyperref}
-\setcounter{tocdepth}{3}
-\setcounter{secnumdepth}{3}%增加编号深度
-\RequirePackage{dashrule}
-\newlength\outermarginwidth
-\setlength\outermarginwidth{1.5cm}
-\newlength\covershift
-\setlength\covershift{5cm}
-\RequirePackage{caption}
-% 图注与表注格式
-\colorlet{captioncolor}{outermarginfgcolor} % 图片和表格题注文字颜色
+
+\RequirePackage{anyfontsize} % 消除字体大小警告
+\RequirePackage[colorlinks,linkcolor = purple,anchorcolor = purple,urlcolor = purple,citecolor= purple]{hyperref}
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 设置pgflayers */
+% /* -------------------------------------------------------------------------- */
+\pgfdeclarelayer{background} %背景%底层
+\pgfdeclarelayer{foreground} %上层
+\pgfdeclarelayer{top} %顶部
+\pgfdeclarelayer{bottom} %底部
+\pgfsetlayers{bottom,background,main,foreground,top}
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 设置封面元素 */
+% /* -------------------------------------------------------------------------- */
\makeatletter
-%%----------------------------------封面信息定义--------------------------------------------------------%%
+
\newcommand\bookseries[1]{\def\@bookseries{#1}}
\newcommand\subtitle[1]{\def\@subtitle{#1}}
\newcommand\edition[1]{\def\@edition{#1}}
@@ -145,52 +163,34 @@ citecolor = purple, %%修改此处为你想要的颜色
\newcommand\pressname[1]{\def\@pressname{#1}}
\newcommand\coverimage[1]{\def\@coverimage{#1}}
\newcommand\chapimage[1]{\def\@chapimage{#1}}
-%%----------------------------------封面信息定义--------------------------------------------------------%%
+
\makeatother
-\RequirePackage{indentfirst}
-\RequirePackage{amsmath}
-\RequirePackage[left=2cm,right=2cm,top=.6cm,bottom=2.2cm]{geometry}
+% /* -------------------------------------------------------------------------- */
+
+% /* -------------------------------------------------------------------------- */
+% /* 模板用到的距离标尺 */
+% /* -------------------------------------------------------------------------- */
+\newlength\outermarginwidth % 页边栏宽度
+\setlength\outermarginwidth{1.5cm}
+
+\newlength\covershift % 自定义的距离标尺
+\setlength\covershift{5cm}
+% /* -------------------------------------------------------------------------- */
+\newcommand{\tikzoverlay}[1]{\begin{tikzpicture}[remember picture,overlay] #1 \end{tikzpicture}}
+
+
+
+% /* -------------------------------------------------------------------------- */
+% /* 目录样式设置 */
+% /* -------------------------------------------------------------------------- */
\RequirePackage{xpatch}%修正章节编号
\RequirePackage[automark]{scrlayer-scrpage}%页面设置宏包,隶属于koma-script文档类
-\RequirePackage{fontawesome5}
-\RequirePackage{mathrsfs}
-\RequirePackage[most]{tcolorbox}
-\tcbuselibrary{breakable, skins,theorems}%TcolorBox Library
-\RequirePackage{tabularx}
-\RequirePackage{lastpage}
-%\RequirePackage{twemojis}
-\RequirePackage{ninecolors}
-\RequirePackage{colortbl} %彩色表格
-\RequirePackage{tabularray}
-\UseTblrLibrary{amsmath}
-% 定义 +array, +matrix, +bmatrix, +Bmatrix, +pmatrix, +vmatrix, +Vmatrix 和 +cases 环境。其
-% 中,每一个环境都类似于不带 + 前缀的环境,但是就像 tblr 环境一样,使用 rowsep=2pt 默认值。
-% 除了+array 环境外,其余的每个环境都可以带一个可选项,通过该可选项,可能为环境设置内部
-% 参数。
-\UseTblrLibrary{booktabs} % 定义 \toprule、 \midrule、\bottomrule 和 \cmidrule 命令,这些命令可以直接用于 tblr环境中
-\UseTblrLibrary{diagbox} % 在tblr 环境中使用 \diagbox 和\diagboxthree 命令排版斜线表头
-\UseTblrLibrary{varwidth} % 为表格添加 measure 内部参数。当设置了 measure=vbox 后,则会使用 \vbox 测量单元格宽度。%可以使用stretch=-1 移除列表环境上下的间距, 注意,stretch=-1 选项也会移除单元格中的支架
-\RequirePackage{pgfornament}
-\RequirePackage{zhnumber}
-\RequirePackage{dashrule}
-\RequirePackage{adjustbox}
-\RequirePackage{enumitem}
-\RequirePackage{multicol}
-\RequirePackage{amsthm}
-\RequirePackage{thmtools,thm-restate}%定理环境 %定理的重写
-\RequirePackage{bclogo}
-\RequirePackage[normalem]{ulem}
-\RequirePackage{pgfplots} %画图 %%页面样式设计核心包 %提供\pgfonlayer命令以及下列图层指令
-\pgfplotsset{compat=1.18}
-\RequirePackage{graphicx}%修正minipage顶部对齐问题
-\pgfdeclarelayer{background} %背景%底层
-\pgfdeclarelayer{foreground} %上层
-\pgfdeclarelayer{top} %顶部
-\pgfdeclarelayer{bottom} %底部
-\pgfsetlayers{bottom,background,main,foreground,top}
-\newcommand{\tikzoverlay}[1]{\begin{tikzpicture}[remember picture,overlay] #1 \end{tikzpicture}}
\RequirePackage[explicit]{titlesec}
\RequirePackage{titletoc}
+\RequirePackage[most]{tcolorbox}
+\tcbuselibrary{breakable, skins,theorems}
+\setcounter{tocdepth}{3}
+\setcounter{secnumdepth}{3}%增加编号深度
\newcommand\boxednum[1]
{
@@ -242,98 +242,52 @@ fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
{\hyperlink{subsubsection.\thecontentslabel}{\contentslabel{3.3em}}}
{\hspace*{-3.3em}}
{\titlerule*[1pc]{.}\contentspage\hspace*{1.5mm}}
+% /* -------------------------------------------------------------------------- */
-% tcolorbox中插入图片或者tikz绘图方法
-\newcommand\Figure[4]{%
- \begin{center}
- \captionsetup{type=figure} %消除 Package caption Warning: The option `hypcap=true' will be ignored for this
-%(caption) particular \caption on input line XX.警告信息
- \includegraphics[#1]{#2}
- \captionof{figure}{#3}\label{#4}
- \end{center}
-}%用法 : 用于tcolorbox中插入图片
-\newcommand\Tikz[3]{%
- \begin{center}
- \captionsetup{type=figure} %消除 Package caption Warning: The option `hypcap=true' will be ignored for this(caption) particular \caption on input line XX.警告信息
- #3 %最后一个参数为Tikz画图代码窗口
- \captionof{figure}{#1}\label{#2} %第一与第二个参数是Tikz画图的名称与标签
- \end{center}
-} %用法 : 用于tcolorbox中插入Tikz绘图
-%特殊注释矩阵
-\newcommand\coolover[2]{\mathrlap{\smash{\overbrace{\phantom{%
- \begin{matrix} #2 \end{matrix}}}^{\mbox{$#1$}}}}#2}
-
-\newcommand\coolunder[2]{\mathrlap{\smash{\underbrace{\phantom{%
- \begin{matrix} #2 \end{matrix}}}_{\mbox{$#1$}}}}#2}
-
-\newcommand\coolleftbrace[2]{%
- #1\left\{\vphantom{\begin{matrix} #2 \end{matrix}}\right.}
-
-\newcommand\coolrightbrace[2]{%
- \left.\vphantom{\begin{matrix} #1 \end{matrix}}\right\}#2}
-\definecolor{lightergray}{gray}{0.99}
-
-\newcommand*{\circled}[1]{\lower.7ex\hbox{\tikz\draw (0pt, 0pt)%
- circle (.5em) node {\makebox[1em][c]{\small #1}};}}
-\newcommand{\twicecircle}{\raisebox{.7ex}{
- \begin{tikzpicture}[remember picture,overlay]
- \draw[line width=0.6pt,black!60] (0,0) circle (3pt);
- \fill[black] (0,0) circle (1.6pt) ;
- \end{tikzpicture}}
-}
-\newcommand{\exercise}[2][\bcicosaedre]{\bigskip
-\begin{tikzpicture}[remember picture,overlay]
-\draw[line width=2pt,loosely dotted,teal] (0,0)--node[pos=0.4,rectangle,minimum height=1.5em,font=\sffamily\Large,text=black,fill=black!2,drop shadow={opacity=.3, shadow xshift=0.1cm},anchor=center,
- inner sep=1.5mm,
- anchor=west,] {$#1$ ~ #2} (\linewidth,0);
-\end{tikzpicture}\bigskip\smallskip
-}
-\RequirePackage{extarrows}
-\newcommand{\R}{\mathbb{R}}
-\newcommand{\F}{\mathcal{F}}
-\newcommand{\lan}[1]{\langle #1 \rangle}
-\newenvironment{eq}[1]{\begin{equation}\begin{aligned}#1}{\end{aligned}\end{equation}} %有编号
-\newenvironment{eq*}[1]{\begin{equation*}\begin{aligned}#1}{\end{aligned}\end{equation*}} %无编号
-% \everymath{\displaystyle}
-
-%% -------- 章节样式
+
+% /* -------------------------------------------------------------------------- */
+% /* 章节样式 */
+% /* -------------------------------------------------------------------------- */
+
+% /* ---------------------------- titleimage自动导入程序 ---------------------------- */
\makeatletter
-% titleimage
+
\ExplSyntaxOn
-\seq_new:N \g__Beautybook_chapter_oimage_seq % odd
-\seq_new:N \g__Beautybook_chapter_eimage_seq % even
-\seq_new:N \g__Beautybook_part_oimage_seq % odd
-\seq_new:N \g__Beautybook_part_eimage_seq % even
+\seq_new:N \g__beautybook_chapter_oimage_seq % odd
+\seq_new:N \g__beautybook_chapter_eimage_seq % even
+\seq_new:N \g__beautybook_part_oimage_seq % odd
+\seq_new:N \g__beautybook_part_eimage_seq % even
%
-\keys_define:nn { Beautybook/titleimage }
+\keys_define:nn { beautybook/titleimage }
{
chapteroddimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_chapter_oimage_seq {#1} ,
+ \seq_gset_from_clist:Nn \g__beautybook_chapter_oimage_seq {#1} ,
chapterevenimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_chapter_eimage_seq {#1} ,
+ \seq_gset_from_clist:Nn \g__beautybook_chapter_eimage_seq {#1} ,
partoddimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_part_oimage_seq {#1} ,
+ \seq_gset_from_clist:Nn \g__beautybook_part_oimage_seq {#1} ,
partevenimage .code:n =
- \seq_gset_from_clist:Nn \g__Beautybook_part_eimage_seq {#1} ,
+ \seq_gset_from_clist:Nn \g__beautybook_part_eimage_seq {#1} ,
}
-\cs_new:Npn \__Beautybook_title_image:Nn #1#2 % image seq, number
+\cs_new:Npn \__beautybook_title_image:Nn #1#2 % image seq, number
{ \seq_item:Nn #1 { \int_mod:nn {#2} { \seq_count:N #1 } + 1 } } %对照表-对录入的字符串进行编号
-\cs_new:Npn \Beautybook@chapterimagename %生成索契表 : 判断奇偶数页并按(章节编号)!!读取相应的列表组中的字符串
+\cs_new:Npn \beautybook@chapterimagename %生成索契表 : 判断奇偶数页并按(章节编号)!!读取相应的列表组中的字符串
{
\int_if_odd:nTF { \value{page} }
- { \__Beautybook_title_image:Nn \g__Beautybook_chapter_oimage_seq { \value{chapter} } }
- { \__Beautybook_title_image:Nn \g__Beautybook_chapter_eimage_seq { \value{chapter} } }
+ { \__beautybook_title_image:Nn \g__beautybook_chapter_oimage_seq { \value{chapter} } }
+ { \__beautybook_title_image:Nn \g__beautybook_chapter_eimage_seq { \value{chapter} } }
}
-\cs_new:Npn \Beautybook@partimagename
+\cs_new:Npn \beautybook@partimagename
{
\int_if_odd:nTF { \value{page} }
- { \__Beautybook_title_image:Nn \g__Beautybook_part_oimage_seq { \value{part} } }
- { \__Beautybook_title_image:Nn \g__Beautybook_part_eimage_seq { \value{part} } }
+ { \__beautybook_title_image:Nn \g__beautybook_part_oimage_seq { \value{part} } }
+ { \__beautybook_title_image:Nn \g__beautybook_part_eimage_seq { \value{part} } }
}
\cs_new_protected:Npn \titleimage #1
- { \keys_set:nn { Beautybook/titleimage } {#1} }
+ { \keys_set:nn { beautybook/titleimage } {#1} }
\ExplSyntaxOff
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% /* -------------------------------- Chatper样式 ------------------------------- */
\titleformat{\chapter}{\huge\bfseries\filcenter}{}{1em}{
\makebox[0pt][l]{\def\rad{7pt}%
\begin{tikzpicture}[remember picture, overlay]%
@@ -398,14 +352,14 @@ fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
\end{pgfonlayer}
\ifodd\value{page}
\begin{pgfonlayer}{top}
- \node[above left,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north east) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
+ \node[above left,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north east) {\begin{varwidth}{.7\linewidth}\baselineskip=25pt #1\end{varwidth}};
\end{pgfonlayer}
\begin{pgfonlayer}{bottom}
\node[right] (image) at ([shift={(-0.5cm,-2.8cm)}]current page.north west) {\includegraphics[width=7cm]{\@chapimage}};
\end{pgfonlayer}
\else
\begin{pgfonlayer}{top}
- \node[above right,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north west) {\begin{varwidth}{.7\linewidth}\baselineskip=2ex #1\end{varwidth}};
+ \node[above right,font=\sc\fontsize{25pt}{25pt}\selectfont,align=center] (contents name) at ([shift={(0cm,-4.45cm)}]current page.north west) {\begin{varwidth}{.7\linewidth}\baselineskip=25pt #1\end{varwidth}};
\end{pgfonlayer}
\begin{pgfonlayer}{background}
\node[left] (image) at ([shift={(0.5cm,-2.8cm)}]current page.north east) {\includegraphics[width=7cm]{\@chapimage}};
@@ -417,8 +371,20 @@ fuzzy shadow={0.4mm}{-0.4mm}{0mm}{0.2mm}{fill=white!40!gray},%下
\end{tikzpicture}}
}
\titlespacing{\chapter}{0pt}{0pt}{70pt}
+
+
+% /* --------------------------------- Part定制 --------------------------------- */
\makeatother
-% -------- Part定制
+
+%%定义标题文字长度%%
+\newlength{\partstarlen}
+%%设置临界长度%%
+\newlength{\criticstarlen}
+\setlength{\criticstarlen}{\textwidth}
+% 定义垂直方向的渐变
+\tikzfading[name=fade bottom to top,
+ bottom color=transparent!0, % 底部完全透明
+ top color=transparent!100] % 顶部不透明
\tikzfading[name=middle, top color=transparent!90, bottom
color=transparent!90, middle color=transparent!20]
\makeatletter
@@ -428,7 +394,8 @@ color=transparent!90, middle color=transparent!20]
{\normalfont\huge\filcenter}
{}
{20pt}
-{\begin{tikzpicture}[remember picture,overlay]
+{\settowidth{\partstarlen}{\sc\huge #1} % 计算\partabstract的长度并写入到\partstarlen中
+ \begin{tikzpicture}[remember picture,overlay]
\def\barwidth{2cm}
\fill[outermarginbgcolor,opacity=0.6]
(current page.north west) rectangle (current page.south east);
@@ -448,8 +415,10 @@ color=transparent!90, middle color=transparent!20]
\fill[outermarginfgcolor,rounded corners=2pt] (current page.south east) --++(-5pt,0.15cm)--++(-\outermarginwidth+10pt,0) --++(-5pt,-0.15cm)--cycle; % 页码横线
\node[] (hbar) at ($(current page.north)!0.33!(current page.south)$) {
\begin{tikzpicture}
- \fill[white]
- (0,0) rectangle ++(\paperwidth,-1cm);
+ %%--------------- Horizontal Line --------------------%%
+ \fill[outermarginbgcolor!70]
+ (0,0) rectangle ++(\paperwidth,-1cm);
+ %%--------------- Horizontal Line -------------------%%
\fill[outermarginbgcolor]
(0,-.25cm) rectangle ++(\paperwidth,-.5cm);
\fill[outermarginfgcolor]
@@ -461,10 +430,19 @@ color=transparent!90, middle color=transparent!20]
\end{tikzpicture}
};
\node[above,font=\sc\huge,shift={(.33\linewidth,.5\barwidth)}] (partname) at (hbar) {Part\ \thepart};
- \node[below,left,font=\sc\huge,shift={(.146\linewidth,-1.5*\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.8\linewidth}\raggedright\baselineskip=2ex #1 \end{varwidth}}; % 标题名称
+ \node[below left,font=\sc\huge,shift={(.146\linewidth,-\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.9\linewidth}\raggedright\baselineskip=25pt #1 \end{varwidth}}; % 标题名称
\begin{pgfonlayer}{background}
\node[above,shift={(-.4\linewidth,-4*\barwidth)}] at (partname) {\ifdefvoid{\@partimage}{}{\includegraphics[width=1.2\linewidth]{\@partimage}}}; % 图片位置调整
+ % % 应用渐变效果
+\fill[path fading=fade bottom to top, fill=nuanbai] (current page.north west) rectangle ([xshift=-\outermarginwidth]current page.south east);
\end{pgfonlayer}
+%判断标题文字长度与临界长度的关系
+\ifdim\partstarlen<\criticstarlen
+%如果标题长度小于临界长度则使用(hbar)定位
+\node[below,font=\itshape\fontsize{13}{13}\selectfont,shift={(0,-1.2*\barwidth)}] at (hbar) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.9\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
+\else
+\node[below,font=\itshape\fontsize{13}{13}\selectfont,shift={(0,-1.2*\barwidth)}] at (partcontents) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.9\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
+\fi
\else
\fill [outermarginfgcolor!20]%
(current page.north west) rectangle ++(\outermarginwidth,-\paperheight);
@@ -481,8 +459,10 @@ color=transparent!90, middle color=transparent!20]
\fill[outermarginfgcolor,rounded corners=2pt] (current page.south west) --++(5pt,0.15cm)--++(\outermarginwidth-10pt,0) --++(5pt,-0.15cm)--cycle; % 页码横线
\node[] (hbar) at ($(current page.north)!0.33!(current page.south)$) {
\begin{tikzpicture}
- \fill[white]
- (0,0) rectangle ++(\paperwidth,-1cm);
+ %%--------------- Horizontal Line --------------------%%
+ \fill[outermarginbgcolor!70]
+ (0,0) rectangle ++(\paperwidth,-1cm);
+ %%--------------- Horizontal Line -------------------%%
\fill[outermarginbgcolor]
(0,-.25cm) rectangle ++(\paperwidth,-.5cm);
\fill[outermarginfgcolor]
@@ -494,19 +474,27 @@ color=transparent!90, middle color=transparent!20]
\end{tikzpicture}
};
\node[above,font=\sc\huge,shift={(-.31\linewidth,.5\barwidth)}] (partname) at (hbar) {Part\ \thepart};
- \node[below right,font=\sc\huge,shift={(-.125\linewidth,-1.2*\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.8\linewidth}\raggedright\baselineskip=2ex #1 \end{varwidth}}; % 标题名称
+ \node[below right,font=\sc\huge,shift={(-.125\linewidth,-\barwidth)}] (partcontents) at (partname) {\begin{varwidth}{.9\linewidth}\raggedright\baselineskip=25pt #1 \end{varwidth}}; % 标题名称
\begin{pgfonlayer}{background}
\node[above,shift={(.35\linewidth,-4*\barwidth)}] at (partname) {\ifdefvoid{\@partimage}{}{\includegraphics[width=1.2\linewidth]{\@partimage}}}; % 图片位置调整
+ % % 应用渐变效果
+ \fill[path fading=fade bottom to top, fill=nuanbai] (current page.north east) rectangle ([xshift=\outermarginwidth]current page.south west);
\end{pgfonlayer}
+%判断标题文字长度与临界长度的关系
+\ifdim\partstarlen<\criticstarlen
+%如果标题长度小于临界长度则使用(hbar)定位
+\node[below,font=\itshape\fontsize{13}{13}\selectfont,shift={(0,-1.2*\barwidth)}] at (hbar) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.9\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
+\else
+\node[below,font=\itshape\fontsize{13}{13}\selectfont,shift={(0,-1.2*\barwidth)}] at (partcontents) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.9\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
+\fi
\fi
- \node[below,,font=\itshape\fontsize{13}{13}\selectfont,shift={(0\linewidth,-1.65*\barwidth)}] at (hbar) {\ifdefvoid{\@partabstract}{}{\begin{varwidth}{.85\linewidth}\baselineskip=3ex \@partabstract\end{varwidth}}}; % 简介文字调整
\end{tikzpicture}}
\makeatother
\assignpagestyle{\part}{empty}
\assignpagestyle{\chapter}{empty}
-%% -- Section
+% /* -------------------------------- Section样式 ------------------------------- */
\titleformat{\section}
{}
{}
@@ -535,8 +523,65 @@ color=transparent!90, middle color=transparent!20]
\titlespacing*{\section}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
+
+% /* ------------------------------ Subsection样式 ------------------------------ */
+\usepackage{pifont}
+\newcommand{\subsectionnumstyle}[2]{
+\makebox[0pt][l]{\def\rad{5pt}%
+\def\inrad{3pt}
+ \begin{tikzpicture}[remember picture]
+ \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=0.5mm,shadow yshift=-0.5mm}]node[append after command={
+ % 主体
+ ([shift={(\rad,\rad)}]sec.north west) arc[start angle=90, end angle=180, radius=\rad] {[rounded corners=\inrad]--(sec.south west)}--([yshift=-3mm]$(sec.south west)!0.5!(sec.south east)$) {[rounded corners=\inrad]--(sec.south east)} -- (sec.north east) arc[start angle=180, end angle=90, radius=\rad]--cycle
+ },
+ text=white,font=\sffamily\large\bfseries,align=center,inner ysep=1.5mm,inner xsep=1mm] (sec) at (0,0) {\thesubsection};
+ % 阴影
+ \begin{pgfonlayer}{bottom}
+ \fill[#2!30!black!70,opacity=0.8] ([xshift=\rad,yshift=\rad]sec.north east) to[out=0,in=-81,looseness=1.5] ([xshift=1.8*\rad]sec.north east)--(sec.north east) |-cycle;
+ \end{pgfonlayer}
+ \node[text=black,font=\large,below right] (sectitle) at ([shift={(2mm,6.5mm)}]sec.south east) {\begin{varwidth}{.9\linewidth}\setlength\baselineskip{18pt}#1\end{varwidth}};
+ \begin{pgfonlayer}{bottom}
+ \draw[gray,dashed,opacity=0.5] ([xshift=0]sec.north west) --([xshift=4*\rad]sec.north east);
+ \end{pgfonlayer}
+ \end{tikzpicture}}
+}
+
+\newcommand{\subsectionnonumstyle}[2]{
+\makebox[0pt][l]{\def\rad{5pt}%
+\def\inrad{3pt}
+ \begin{tikzpicture}[remember picture]
+ \path[fill=#2,drop shadow={opacity=0.3,shadow xshift=0.5mm,shadow yshift=-0.5mm}]node[append after command={
+ % 主体
+ ([shift={(\rad,\rad)}]sec.north west) arc[start angle=90, end angle=180, radius=\rad] {[rounded corners=\inrad]--(sec.south west)}--([yshift=-3mm]$(sec.south west)!0.5!(sec.south east)$) {[rounded corners=\inrad]--(sec.south east)} -- (sec.north east) arc[start angle=180, end angle=90, radius=\rad] --cycle
+ },
+ text=white,font=\sffamily\large\bfseries,align=center,inner ysep=0.5mm,inner xsep=1.5mm] (sec) at (0,0) {\Huge\ding{99}};
+ % 阴影
+ \begin{pgfonlayer}{bottom}
+ \fill[#2!30!black!70,opacity=0.8] ([xshift=\rad,yshift=\rad]sec.north east) to[out=0,in=-81,looseness=1.5] ([xshift=1.8*\rad]sec.north east)--(sec.north east) |-cycle;
+ \end{pgfonlayer}
+ \node[text=black,font=\large,below right] (sectitle) at ([shift={(2mm,6.5mm)}]sec.south east) {\begin{varwidth}{.9\linewidth}\setlength\baselineskip{18pt}#1\end{varwidth}};
+ \begin{pgfonlayer}{bottom}
+ \draw[gray,dashed,opacity=0.5] (sec.north west) --([xshift=4*\rad]sec.north east);
+ \end{pgfonlayer}
+ \end{tikzpicture}}
+}
+
+\titleformat{\subsection}
+{}
+{}
+{-.5em} %左右移动\thesection标签位置
+{\subsectionnumstyle{#1}{outermarginfgcolor}}
+
+\titleformat{name=\subsection,numberless}{}{}{-.5em}{\subsectionnonumstyle{#1}{outermarginfgcolor}}
+
+% \titlespacing*{\subsection}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
+
+
+
%%-------------------------------- SCRLAYER-SCRPAGE -------------------------------------%%
-%% SIDE-BAR
+% /* -------------------------------------------------------------------------- */
+% /* SIDE-BAR配置 */
+% /* -------------------------------------------------------------------------- */
\newlength\chapternumbersize
\setlength\chapternumbersize{36pt}
\setlength{\headheight}{40pt} % 页眉高度
@@ -574,7 +619,7 @@ color=transparent!90, middle color=transparent!20]
\newcommand*\outermarginchapternumberbox{%
\if@mainmatter
\tikzoverlay{
- \shade[top color=outermarginfgcolor!90,bottom color=outermarginbgcolor]
+ \shade[top color=outermarginfgcolor!90,bottom color=outermarginbgcolor]
(\outermarginwidth,-.5\outermarginwidth+2mm) rectangle (0,-1.5\outermarginwidth+2mm);
\node[anchor=center,text=white,font=\sffamily\bfseries] at (1/2*\outermarginwidth,-\outermarginwidth+2mm) {\usekomafont{chapternumber}{\botmarks\chapternum}};%
}
@@ -627,12 +672,24 @@ color=transparent!90, middle color=transparent!20]
contents={\color{outermarginbgcolor}\rule{\layerwidth}{\layerheight}} %色彩装饰条
]{scth.outermargin.bg.even}%
%%=============% 页边条颜色 %=======================%%
+% /* -------------------------------------------------------------------------- */
+% /* 透明度渐变填充设定 */
+% /* -------------------------------------------------------------------------- */
\tikzfading[name=fade south,
top color =transparent!0,
bottom color=transparent!80]
\tikzfading[name=fade north,
top color =transparent!100,
bottom color=transparent!0]
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!0]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!0]
+% /* -------------------------------------------------------------------------- */
+% /* 透明度渐变填充设定 */
+% /* -------------------------------------------------------------------------- */
%偶数页边纹理效果设置
\newcommand{\evensidbardeepcolor}{%
\tikzoverlay{
@@ -723,7 +780,12 @@ color=transparent!90, middle color=transparent!20]
%%-------------------------------- SCRLAYER-SCRPAGE -------------------------------------%%
-%% Begin The Most Beautiful Box (STYLE : ys style) % 中国风盒子
+% /* -------------------------------------------------------------------------- */
+% /* 中国风盒子 */
+% /* -------------------------------------------------------------------------- */
+
+%% Begin The Most Beautiful Box (STYLE : ys style)
+
\makeatletter
\definecolor{framegolden}{HTML}{455a64} % 控制外框颜色
\definecolor{framegray}{HTML}{e0e0e0} % 控制填充颜色
@@ -993,15 +1055,19 @@ color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
\makeatother
\newtcolorbox{fancybox}[1][]{enhanced,ys style,breakable,pad at break=2mm,
ys/frame/not at break,ys/frame/fill opacity=0,#1,fontupper=\itshape}
-%% End The Most Beautiful Box
+% /* -------------------------------------------------------------------------- */
+
+
+% /* -------------------------------------------------------------------------- */
+% /* 定理环境设置 */
+% /* -------------------------------------------------------------------------- */
\makeatletter
+% /* ---------------------------------- 第一种定理 --------------------------------- */
\definecolor{CyaN}{HTML}{dbe1e5}
\colorlet{OrangE}{yellow!20!orange}
\colorlet{BluE}{cyan!70!blue}
\colorlet{ReD}{red!20!orange}
\colorlet{GreeN}{yellow!40!green}
-
-% 第一种定理
\tcbset{my@basic@thm/.style={enhanced jigsaw, breakable,
enlarge left by=-3.5mm, width=\textwidth+3.5mm, boxrule=0pt,
top=2pt, bottom=2pt, left=2.5mm, frame hidden}}
@@ -1015,9 +1081,9 @@ color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
\NewDocumentCommand{\@my@renewtheorem}{ m m o +m }
{\IfNoValueTF{#3}{\renewtheorem{#1}{#2}}{\renewtheorem{#1}{#2}[#3]}%
\tcbset{my@#1@thmstyle/.style={#4}}}
-%
+
% ---------------------------------------------------------------------------------- %
-% 第二种定理
+% /* ---------------------------------- 第二种定理 --------------------------------- */
\tcbset{my@basic@tcbthm/.style={detach title,}}
\newcommand{\@my@newtcbtheorem@n}[1]{\ERROR}
\newcommand{\@my@newtcbtheorem@nn}[2]{%
@@ -1048,10 +1114,7 @@ color(75bp)=(pgftransparent!100); color(100bp)=(pgftransparent!100)}
\cs_new_protected:Npn \mynewtcbtheorem
{ \keyval_parse:NNn \@my@newtcbtheorem@n \@my@newtcbtheorem@nn }
\ExplSyntaxOff
-\makeatother
-% 第二种定理
-\makeatletter
%% Overlay Settings
\newcommand{\my@theorem@overlay@unbroken}[2]{
%%============== First ==============%%
@@ -1147,19 +1210,6 @@ anchor=west,rounded corners=3pt,font=\bfseries\normalsize] at ([xshift=0cm,yshif
\declaretheorem[style=Proofstyle,numbered=no,name={\itbf{Proof}}]{Proof}
\renewenvironment{proof}{\begin{Proof} }{\end{Proof}}
\declaretheorem[style=Proofstyle,numbered=no,name={\itbf{Solution}}]{solution}
+% /* -------------------------------------------------------------------------- */
-%%%%%%%%%%%%%%% 计数器知识 %%%%%%%%%%%%%%%%%%%%%%
-% 每次用 \newcounter{foo} 定义新计数器,内部都会定义这几个命令
-
-% \c@foo,储存计数器的值,初始值为 0
-% \thefoo,储存计数器输出时的格式,初始定义为 \arabic{foo}
-% \p@foo,储存计数器被引用时的前缀,初始定义为空
-% \cl@foo,储存「子计数器」列表(此处有简化),foo 自增时它的每个「子计数器」都会归零(详见「自动归零」一节),初始定义为空
-%% 关于计数器的自动归零
-% 如果还定义了计数器 \newcounter{bar}[foo],那么 \cl@foo 里就有了 bar
-% \@addtoreset{child}{parent} 和 \@removefromreset{child}{parent} 可以把计数器 child 移入/移出 \cl@parent
-% \counterwithin* 和 \counterwithout* 和上一条里两个命令的功能类似,但它们在执行前会检查接受的两个参数是否为已定义的计数器。不加星号的版本会修改 \thechild,详见「输出格式」一节
-% 在使用 \stepcounter{parent} 和 \refstepcounter{parent} 时,parent 自增,同时归零\cl@parent 里的「子计数器」
-% \addtocount{parent}{1} 只自增 parent,没有归零其「子计数器」的效果
-% 归零实现为「对每个子计数器,先设为 -1,然后使用 \stepcounter 自增」,这样实现的「归零」功能是递归的
-% 递归的意思是,如果还有 \newcounter{grandchild}[child],那么 \stepcounter{parent} 会将 child 和 grandchild 都归零
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-birkar.sty b/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-birkar.sty
deleted file mode 100644
index 8a2c51aa082..00000000000
--- a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-birkar.sty
+++ /dev/null
@@ -1,125 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-cover-birkar}[2022/05/21,v1.0]
-\usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令
-\usepackage{etoolbox} %提供自定义封面选项接口
-\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions
-\usepackage{tikz}
-\usetikzlibrary{intersections, positioning, fit, backgrounds, shapes, fadings,
-decorations.pathmorphing, graphs, quotes, angles, calc, through, backgrounds} % %Tikz指令库
-\usepackage{graphicx} %插图
-\usetikzlibrary{calc,fadings,patterns}
-\usepackage{adjustbox} %修正minipage顶部对齐问题
-
-% Define the layers to be used in document.
-% *****************************************************
-\pgfdeclarelayer{background} %背景%底层
-\pgfdeclarelayer{foreground} %上层
-\pgfdeclarelayer{top} %顶部
-\pgfdeclarelayer{bottom} %底部
-\pgfsetlayers{bottom,background,main,foreground,top}
-\definecolor{RED}{RGB}{220, 41, 26}
-\definecolor{arc color}{HTML}{546E7A}
-
-\tikzfading[name=fade right,
- right color =transparent!100,
- left color=transparent!0]
-\tikzfading[name=fade left,
- left color =transparent!100,
- right color=transparent!50]
-\tikzfading[name=fade up,
- top color =transparent!100,
- bottom color=transparent!50]
-\tikzfading[name=fade down,
- bottom color =transparent!100,
- top color=transparent!50]
-\makeatletter
-\newcommand*\makecover{
- %% Use the Tikz library positioning and clear the page header and footer
- \usetikzlibrary{positioning}
- \thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \begin{pgfonlayer}{bottom}
- \fill[coverfgcolor]
- (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
- \fill[RED]
- ([shift={(2.05cm,0)}]current page.north west) rectangle ([shift={(2.35cm,-6cm)}]current page.north west);
- \fill[coverfgcolor!80,opacity=0.5]
- ([shift={(0,-2cm)}]current page.north west) arc (90:-90:.3\paperheight) --cycle;
- \fill[coverfgcolor!80,opacity=0.5]
- ([shift={(0,-4cm)}]current page.north east) arc (90:270:.2\paperheight) --cycle;
- \fill[coverfgcolor!80]
- (current page.north west) rectangle ([shift={(2cm,0)}]current page.south west);
- \begin{scope}[opacity=0.8]
- \coordinate (triangleA) at ([shift={(1cm,-1cm)}]current page.north);
- \coordinate (triangleB) at ([shift={(-.85\linewidth,-.46\paperheight)}]triangleA);
- \coordinate (triangleC) at ([shift={(.52\linewidth,-.46\paperheight)}]triangleA);
- \draw[name path=triangle,very thick,coverfgcolor!70!white]
- (triangleA)--(triangleB)--(triangleC)--cycle;
- \draw[name path=circle,very thick,coverfgcolor!70!white]
- ([shift={(-1.6cm,-7.3cm)}]triangleA) coordinate (O) circle(6cm);
- %标注每个交点坐标
- \fill [name intersections={of=triangle and circle, name=i, total=\t}]
- [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
- \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}};
- \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC);
- \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB);
- \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA);
- \fill[name intersections={of=l and circle,name=j,total=\l}]
- [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
- \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}};
-
- \fill[name intersections={of=l2 and l,name=jj,total=\ll}]
- [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
- \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}};
- \end{scope}
- \end{pgfonlayer}
- \begin{pgfonlayer}{foreground}
- \fill[coverbar,opacity=.5]
- ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
- \end{pgfonlayer}
- \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.3]
- ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
- \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
- \parbox{.8\paperwidth}{
- \filright
- \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
- }; %系列丛书名称
- \node[ anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.57\paperheight]current page.north)
- {\parbox{.8\paperwidth}{%
- \raggedright%
- {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
- \color{white}\sffamily\fontsize{30}{30}\selectfont
- \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
- }};% 封面标题与副标题
- \node[anchor=west,font=\sffamily\fontsize{23}{23}\selectfont,text=white] at ([xshift=1.8\outermarginwidth,yshift=-.6\covershift]current page.west) {\@edition};
- \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth,yshift=\covershift]current page.west) {\@author};
- \node[left,text=white,font=\rmfamily\Large,] at
- ([shift={(-1cm,2cm)}]current page.south east) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
- \end{tikzpicture}%
- {\newpage\thispagestyle{empty}}
-}
-\makeatother
-
-\endinput
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-cn.sty b/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-cn.sty
deleted file mode 100644
index b151d4e5fc2..00000000000
--- a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-cn.sty
+++ /dev/null
@@ -1,103 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-cover-cn}[2023/05/10,v1.0]
-\usetikzlibrary{calc,fadings,patterns}
-\usepackage{adjustbox} %修正minipage顶部对齐问题
-%%%%===============================================================%%%%%
-% \definecolor{coverbgcolor}{HTML}{9CCCDA}
-% \definecolor{coverfgcolor}{HTML}{508E99}
-% \definecolor{coverbar}{HTML}{305756}
-\tikzfading[name=fade right,
- right color =transparent!100,
- left color=transparent!50]
-\tikzfading[name=fade left,
- left color =transparent!100,
- right color=transparent!50]
-\tikzfading[name=fade up,
-top color =transparent!100,
-bottom color=transparent!50]
-\tikzfading[name=fade down,
- bottom color =transparent!100,
- top color=transparent!50]
-\makeatletter
-\newcommand*\makecover{
- %% Use the Tikz library positioning and clear the page header and footer
- \usetikzlibrary{positioning}
- \thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \fill[coverfgcolor!75]
- (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
- \fill[coverfgcolor!50]
- ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.35\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形
- \fill[coverfgcolor]
- ([xshift=\outermarginwidth]current page.north west) rectangle ([xshift=-\outermarginwidth,yshift=1.5\covershift]current page.south east); % 标题背景大矩形
- \fill[coverbar]
- ([yshift=.44\covershift]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形
- \node[left] at ([xshift=-1.8cm,yshift=-1.5cm]current page.north east) {%
- \parbox{3\covershift}{
- \raggedleft
- \color{white}\sffamily\bfseries\fontsize{18}{22}\selectfont\@bookseries}
- }; %系列丛书名称
- \node[right] at ([xshift=\outermarginwidth,yshift=1.5*\covershift]current page.west)
- {\parbox{.8\paperwidth}{%
- \filright%
- \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont\@title\\[-1.6ex]
- \begin{tikzpicture}
- \draw[white,line width=1pt] (0,0) --++ (\paperwidth-3\outermarginwidth,0);
- \end{tikzpicture}\\[-.5ex]
- \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont
- \ifdefvoid{\@subtitle}{}{\@subtitle}
- }};% 封面英文书名与中文书名
- \node[left,inner sep=0pt,outer sep=0pt] at ([xshift=1.2\outermarginwidth,yshift=1.8cm]current page.east)
- {%
- \adjustbox{valign=t}{
- \begin{minipage}{.25\textwidth}
- \begin{tikzpicture}
- \foreach \x/\r in {1.2/6,.8/4} {
- \draw[white,line width=\x pt] (0,0) circle [radius=\r pt];}
- \fill[white] (0,0) circle [radius=2.5pt];
- \end{tikzpicture}
- \hspace{2pt}\color{white}\sffamily\fontsize{20}{25}\selectfont Editors
- \end{minipage}}
- \hfill
- \adjustbox{valign=t}{\begin{minipage}{.45\textwidth}
- \raggedright\color{white}\sffamily\fontsize{20}{25}\selectfont\@author
- \end{minipage}}
- };% 封面作者信息栏
- \fill [path picture={ \node at (path picture bounding box.center)
- {\includegraphics[height=1.1\linewidth]{\@coverimage}};}]
- ([xshift=\outermarginwidth]current page.south west) rectangle ++(1.8*\covershift,.575\paperheight);
- \fill[pattern color=coverfgcolor!70,pattern=horizontal lines,opacity=0.8]
- ([xshift=\outermarginwidth,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
- \fill [coverfgcolor!80,path fading=fade right]%
- ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
- \fill [coverfgcolor!80,path fading=fade left]%
- ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
- \node[left,text=white,font=\rmfamily\Large,] at
- ([shift={(-2cm,2cm)}]current page.south east) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
- \end{tikzpicture}%
- {\newpage\thispagestyle{empty}}}
-\makeatother
-\endinput
-% %%%%===============================================================%%%%%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-en.sty b/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-en.sty
deleted file mode 100644
index 2279661d945..00000000000
--- a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-en.sty
+++ /dev/null
@@ -1,87 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-cover-en}[2022/05/21,v1.0]
-\usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令
-\usepackage{etoolbox} %提供自定义封面选项接口
-\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions
-\usepackage{tikz}
-\usepackage{graphicx} %插图
-\usetikzlibrary{calc,fadings,patterns}
-\usepackage{adjustbox} %修正minipage顶部对齐问题
-\tikzfading[name=fade right,
- right color =transparent!100,
- left color=transparent!50]
-\tikzfading[name=fade left,
- left color =transparent!100,
- right color=transparent!50]
-\tikzfading[name=fade up,
- top color =transparent!100,
- bottom color=transparent!50]
-\tikzfading[name=fade down,
- bottom color =transparent!100,
- top color=transparent!50]
-\makeatletter
-\newcommand*\makecover{
- %% Use the Tikz library positioning and clear the page header and footer
- \usetikzlibrary{positioning}
- \thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \fill[coverfgcolor]
- (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
- \coordinate (start) at ($(current page.east)!0.5!(current page.north east)+(1,-1)$);
- \coordinate (end) at (current page.north west);
- \foreach \i in {0,0.01,...,1}
- {
- \coordinate (point) at ($(start)!\i!(end)$);
- \draw[coverfgcolor!50]
- ($(point)+(310*\i:6)$)--
- ($(point)+(310*\i+120:6)$)--
- ($(point)+(310*\i+240:6)$)--
- ($(point)+(310*\i:6)$);
- }
- \coordinate (start) at (current page.south west);
- \coordinate (end) at (current page.east);
- \foreach \i in {0,0.02,...,1}
- {
- \coordinate (point) at ($(start)!\i!(end)$);
- \draw[coverfgcolor!50]
- ($(point)+(310*\i:10)$)--
- ($(point)+(310*\i+120:10)$)--
- ($(point)+(310*\i+240:10)$)--
- ($(point)+(310*\i:10)$);
- }
- \shade[bottom color=coverfgcolor,top color=coverfgcolor!70,opacity=0.7]
- ([xshift=.5\outermarginwidth]current page.north west) rectangle (current page.south east); % 背景大矩形
- \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=0.5]
- ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
- \fill[coverbar!90,opacity=0.8]
- ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
- \foreach \lx/\rx/\ry/\bc/\tc in {
- 1/1.5/1.75/70/80,1.5/2/1.6/65/75,2/2.5/1.3/60/70,2.5/3/1/55/65,3/3.5/.7/50/60,3.5/4/1.2/60/70,4/4.5/1.9/75/85,4.5/5/1.1/55/65,5/5.5/1.2/60/70,6/6.5/1.6/65/75,6.5/7/1.3/60/70,7/7.5/1.87/70/80,7.5/8/1/55/65,8/8.5/.9/50/60,8.5/9/1.8/70/80,9/9.5/1.6/65/75,9.5/10/1.4/60/70,10/10.5/1/55/65,10.5/11/.7/50/60,11/11.5/1.3/55/65,11.5/12/1/70/80,12/12.5/1.3/65/75,12.5/13/1.6/60/70,13/13.5/1.75/55/65,13.5/14/1.6/65/75,14/14.5/1.3/60/70
- }{
- \shade[bottom color=coverfgcolor!\bc,top color=coverfgcolor!\tc,opacity=.5]
- ([xshift=\lx\outermarginwidth]current page.north west) rectangle ([xshift=\rx\outermarginwidth,yshift=-\ry\covershift]current page.north west);%顶部琴键矩形
- }
- \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
- \parbox{.8\paperwidth}{
- \filright
- \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
- }; %系列丛书名称
- \node[ anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.57\paperheight]current page.north)
- {\parbox{.8\paperwidth}{%
- \raggedright%
- {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
- \color{white}\sffamily\fontsize{30}{30}\selectfont
- \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
- }};% 封面标题与副标题
- \node[anchor=west,font=\sffamily\fontsize{23}{23}\selectfont,text=white] at ([xshift=1.8\outermarginwidth,yshift=-.6\covershift]current page.west) {\@edition};
- \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth,yshift=\covershift]current page.west) {\@author};
- \node[left,text=white,font=\rmfamily\Large,] at
- ([shift={(-1cm,2cm)}]current page.south east) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
- \end{tikzpicture}%
- {\newpage\thispagestyle{empty}}
-}
-\makeatother
-%%%%===============================================================%%%%%
-%%------------------------------------------------------封面设计--------------------------------------------------------%%
-\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-enfig.sty b/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-enfig.sty
deleted file mode 100644
index 005518a6d96..00000000000
--- a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-cover-enfig.sty
+++ /dev/null
@@ -1,55 +0,0 @@
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-cover-enfig}[2023/02/03,v1.0]
-\definecolor{coverbgcolor}{HTML}{004183}
-\definecolor{coverfgcolor}{HTML}{826e68}
-\definecolor{coverbar}{HTML}{7c9092}
-\tikzfading[name=fade right,
- right color =transparent!100,
- left color=transparent!0]
-\tikzfading[name=fade left,
- left color =transparent!100,
- right color=transparent!50]
-\tikzfading[name=fade up,
- top color =transparent!100,
- bottom color=transparent!50]
-\tikzfading[name=fade down,
- bottom color =transparent!100,
- top color=transparent!50]
-\makeatletter
-\newcommand*\makecover{
- %% Use the Tikz library positioning and clear the page header and footer
- \usetikzlibrary{positioning}
- \thispagestyle{empty}
- \begin{tikzpicture}[remember picture,overlay]
- \begin{pgfonlayer}{bottom}
- \node[opacity=0.8,inner sep=0pt] at (current
- page.center){\includegraphics[width=\paperwidth,height=\paperheight]{\@coverimage}};
- \end{pgfonlayer}
- \shade[left color=coverbgcolor!70,right color=coverbgcolor!50,path fading=fade right,opacity=.5]
- ([xshift=.5\outermarginwidth]current page.north west) rectangle ([xshift=4\outermarginwidth]current page.south west); % 背景大矩形虚化
- \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.8]
- ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
- \fill[coverbar,opacity=0.8]
- ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
- \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
- \parbox{.8\paperwidth}{
- \filright
- \color{white}\sc\fontsize{20}{23}\selectfont\@bookseries}
- }; %系列丛书名称
- \node[ anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.55\paperheight]current page.north)
- {\parbox{.8\paperwidth}{%
- \raggedright%
- {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
- \color{white}\sc\fontsize{30}{30}\selectfont
- \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
- }};% 封面标题与副标题
- \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([xshift=1.8\outermarginwidth,yshift=-.6\covershift]current page.west) {\@edition};
- \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth,yshift=\covershift]current page.west) {\@author};
- \node[left,text=white,font=\rmfamily\Large,] at
- ([shift={(-1cm,2cm)}]current page.south east) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
- \end{tikzpicture}%
- {\newpage\thispagestyle{empty}}
-}
-\makeatother
-\endinput
diff --git a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-bottompage.sty b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-bottompage.sty
index 892cf4fbac0..814b929bb68 100644
--- a/Master/texmf-dist/tex/latex/beautybook/stys/Beautybook-bottompage.sty
+++ b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-bottompage.sty
@@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{stys/Beautybook-bottompage}[2023/01/18,v2.0]
+\ProvidesPackage{stys/beautybook-bottompage}[2024/07/01,v2.0]
\usepackage[ISBN=978-80-85955-35-4,SC0]{ean13isbn}
\makeatletter
%%----------------------------------封面信息定义--------------------------------------------------------%%
@@ -45,9 +45,9 @@
\raggedright
\sc\fontsize{20}{23}\selectfont\@bookseries}
}; %系列丛书名称
- \node[right,text=white,font=\rmfamily\Large,] at
- ([shift={(-.5cm,1.5cm)}]current page.south west) %
- {\raisebox{-1.1cm}{\includegraphics[width=0.2\linewidth]{\@presslogo}}\hspace*{-3.5ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(5.6cm,2cm)}]current page.south west) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
\ifdefvoid{\@ISBNcode}{}{
\node[scale=1.5] (isbn) at ([shift={(-1.85\outermarginwidth,.5\covershift)}]current page.south east) {\@ISBNcode};%
\begin{pgfonlayer}{bottom}
diff --git a/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-birkar.sty b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-birkar.sty
new file mode 100644
index 00000000000..6668db854b5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-birkar.sty
@@ -0,0 +1,190 @@
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{stys/beautybook-cover-birkar}[2024/07/01,v2.0]
+\usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令
+\usepackage{etoolbox} %提供自定义封面选项接口
+\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions
+\usepackage{tikz}
+\usetikzlibrary{intersections, positioning, fit, backgrounds, shapes, fadings,
+decorations.pathmorphing, graphs, quotes, angles, calc, through, backgrounds} % %Tikz指令库
+\usepackage{graphicx} %插图
+\usetikzlibrary{calc,fadings,patterns}
+\usepackage{adjustbox} %修正minipage顶部对齐问题
+
+% Define the layers to be used in document.
+% *****************************************************
+\pgfdeclarelayer{background} %背景%底层
+\pgfdeclarelayer{foreground} %上层
+\pgfdeclarelayer{top} %顶部
+\pgfdeclarelayer{bottom} %底部
+\pgfsetlayers{bottom,background,main,foreground,top}
+\definecolor{RED}{RGB}{220, 41, 26}
+\definecolor{arc color}{HTML}{546E7A}
+
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!0]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!50]
+\tikzfading[name=fade up,
+ top color =transparent!100,
+ bottom color=transparent!50]
+\tikzfading[name=fade down,
+ bottom color =transparent!100,
+ top color=transparent!50]
+\makeatletter
+\newcommand{\aivcover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{bottom}
+ \fill[coverfgcolor]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \fill[RED]
+ ([shift={(2.05cm,0)}]current page.north west) rectangle ([shift={(2.35cm,-6cm)}]current page.north west);
+ \fill[coverfgcolor!80,opacity=0.5]
+ ([shift={(0,-2cm)}]current page.north west) arc (90:-90:.3\paperheight) --cycle;
+ \fill[coverfgcolor!80,opacity=0.5]
+ ([shift={(0,-4cm)}]current page.north east) arc (90:270:.2\paperheight) --cycle;
+ \fill[coverfgcolor!80]
+ (current page.north west) rectangle ([shift={(2cm,0)}]current page.south west);
+ \begin{scope}[opacity=0.8]
+ \coordinate (triangleA) at ([shift={(1cm,-1.5cm)}]current page.north);
+ \coordinate (triangleB) at ([shift={(-.75\linewidth,-.44\paperheight)}]triangleA);
+ \coordinate (triangleC) at ([shift={(.5\linewidth,-.44\paperheight)}]triangleA);
+ \draw[name path=triangle,very thick,coverfgcolor!70!white]
+ (triangleA)--(triangleB)--(triangleC)--cycle;
+ \draw[name path=circle,very thick,coverfgcolor!70!white]
+ ([shift={(-1.65cm,-7.8cm)}]triangleA) coordinate (O) circle(6cm);
+ %标注每个交点坐标
+ \fill [name intersections={of=triangle and circle, name=i, total=\t}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}};
+ \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC);
+ \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB);
+ \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA);
+ \fill[name intersections={of=l and circle,name=j,total=\l}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}};
+
+ \fill[name intersections={of=l2 and l,name=jj,total=\ll}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}};
+ \end{scope}
+ \end{pgfonlayer}
+ \begin{pgfonlayer}{foreground}
+ \fill[coverbar,opacity=.5]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \end{pgfonlayer}
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.3]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east)
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+\end{tikzpicture}%
+}
+
+\newcommand{\lettercover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{bottom}
+ \fill[coverfgcolor]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \fill[RED]
+ ([shift={(2.05cm,0)}]current page.north west) rectangle ([shift={(2.35cm,-6cm)}]current page.north west);
+ \fill[coverfgcolor!80,opacity=0.5]
+ ([shift={(0,-2cm)}]current page.north west) arc (90:-90:.3\paperheight) --cycle;
+ \fill[coverfgcolor!80,opacity=0.5]
+ ([shift={(0,-4cm)}]current page.north east) arc (90:270:.2\paperheight) --cycle;
+ \fill[coverfgcolor!80]
+ (current page.north west) rectangle ([shift={(2cm,0)}]current page.south west);
+ \begin{scope}[opacity=0.8]
+ \coordinate (triangleA) at ([shift={(1cm,-1cm)}]current page.north);
+ \coordinate (triangleB) at ([shift={(-.85\linewidth,-.46\paperheight)}]triangleA);
+ \coordinate (triangleC) at ([shift={(.52\linewidth,-.46\paperheight)}]triangleA);
+ \draw[name path=triangle,very thick,coverfgcolor!70!white]
+ (triangleA)--(triangleB)--(triangleC)--cycle;
+ \draw[name path=circle,very thick,coverfgcolor!70!white]
+ ([shift={(-1.6cm,-7.3cm)}]triangleA) coordinate (O) circle(6cm);
+ %标注每个交点坐标
+ \fill [name intersections={of=triangle and circle, name=i, total=\t}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \s in {1,...,\t}{(i-\s) circle (1em) node {}};
+ \draw[name path=l,very thick,coverfgcolor!70!white] (i-1) -- (triangleC);
+ \draw[very thick,coverfgcolor!70!white] (i-6) -- (triangleB);
+ \draw[name path=l2,very thick,coverfgcolor!70!white] (i-4) -- (triangleA);
+ \fill[name intersections={of=l and circle,name=j,total=\l}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \c in {1,...,\l}{(j-\c) circle (1em) node {}};
+
+ \fill[name intersections={of=l2 and l,name=jj,total=\ll}]
+ [coverbar,opacity=0.5, every node/.style={above left, white, opacity=1}]
+ \foreach \cc in {1,...,\ll}{(jj-\cc) circle (1em) node {}};
+ \end{scope}
+ \end{pgfonlayer}
+ \begin{pgfonlayer}{foreground}
+ \fill[coverbar,opacity=.5]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \end{pgfonlayer}
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.3]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east)
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+\end{tikzpicture}%
+}
+
+\newcommand\makecover{
+ \thispagestyle{empty}
+ \ifaivpaper@TF{\aivcover}{\lettercover}
+ {\newpage\thispagestyle{empty}}
+}
+\makeatother
+
+\endinput
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-cn.sty b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-cn.sty
new file mode 100644
index 00000000000..399246d97ad
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-cn.sty
@@ -0,0 +1,162 @@
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{stys/beautybook-cover-cn}[2024/07/01,v2.0]
+\usetikzlibrary{calc,fadings,patterns}
+\usepackage{adjustbox} %修正minipage顶部对齐问题
+%%%%===============================================================%%%%%
+% \definecolor{coverbgcolor}{HTML}{9CCCDA}
+% \definecolor{coverfgcolor}{HTML}{508E99}
+% \definecolor{coverbar}{HTML}{305756}
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!50]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!50]
+\tikzfading[name=fade up,
+ top color =transparent!100,
+ bottom color=transparent!50]
+\tikzfading[name=fade down,
+ bottom color =transparent!100,
+ top color=transparent!50]
+\makeatletter
+\newcommand{\aivcover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[coverfgcolor!75]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \fill[coverfgcolor!50]
+ ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.35\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形
+ \fill[coverfgcolor]
+ ([xshift=\outermarginwidth]current page.north west) rectangle ([xshift=-\outermarginwidth,yshift=1.5\covershift]current page.south east); % 标题背景大矩形
+ \fill[coverbar]
+ ([yshift=.44\covershift+0.05cm]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形
+ \node[left] at ([xshift=-1.8cm,yshift=-1.5cm]current page.north east) {%
+ \parbox{3\covershift}{
+ \raggedleft
+ \color{white}\sffamily\bfseries\fontsize{18}{22}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[right] at ([xshift=\outermarginwidth,yshift=1.5*\covershift]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \filright%
+ \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont\@title\\[-1ex]
+ \begin{tikzpicture}
+ \draw[white,line width=1pt] (0,0) --++ (\paperwidth-3\outermarginwidth,0);
+ \end{tikzpicture}\\[0ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}
+ }};% 封面英文书名与中文书名
+ \node[left,inner sep=0pt,outer sep=0pt] at ([xshift=1.2\outermarginwidth,yshift=1.8cm]current page.east)
+ {%
+ \adjustbox{valign=t}{
+ \begin{minipage}{.25\textwidth}
+ \begin{tikzpicture}
+ \foreach \x/\r in {1.2/6,.8/4} {
+ \draw[white,line width=\x pt] (0,0) circle [radius=\r pt];}
+ \fill[white] (0,0) circle [radius=2.5pt];
+ \end{tikzpicture}
+ \hspace{2pt}\color{white}\sffamily\fontsize{20}{25}\selectfont Editors
+ \end{minipage}}
+ \hfill
+ \adjustbox{valign=t}{\begin{minipage}{.45\textwidth}
+ \raggedright\color{white}\sffamily\fontsize{20}{25}\selectfont\@author
+ \end{minipage}}
+ };% 封面作者信息栏
+ \fill [path picture={ \node at (path picture bounding box.center)
+ {\includegraphics[height=1.1\linewidth,keepaspectratio]{\@coverimage}};}]
+ ([xshift=\outermarginwidth]current page.south west) rectangle ++(1.8*\covershift,.575\paperheight);
+ \fill[pattern color=coverfgcolor!70,pattern=horizontal lines,opacity=0.8]
+ ([xshift=\outermarginwidth,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \fill [coverfgcolor!80,path fading=fade right]%
+ ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \fill [coverfgcolor!80,path fading=fade left]%
+ ([xshift=\outermarginwidth+.5\linewidth+.5cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ }
+
+\newcommand{\lettercover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[coverfgcolor!75]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \fill[coverfgcolor!50]
+ ([xshift=-3\covershift,yshift=-.4\covershift]current page.east) rectangle ([yshift=-1.2\covershift]current page.east); % 被标题背景遮挡露出一部分的装饰矩形
+ \fill[coverfgcolor]
+ ([xshift=\outermarginwidth]current page.north west) rectangle ([xshift=-\outermarginwidth,yshift=1.5\covershift]current page.south east); % 标题背景大矩形
+ \fill[coverbar]
+ ([yshift=.44\covershift-0.1cm]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.4\covershift]current page.west); % 最左侧装饰矩形
+ \node[left] at ([xshift=-1.8cm,yshift=-1.5cm]current page.north east) {%
+ \parbox{3\covershift}{
+ \raggedleft
+ \color{white}\sffamily\bfseries\fontsize{18}{22}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[right] at ([xshift=\outermarginwidth,yshift=1.5*\covershift]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \filright%
+ \color{white}\sffamily\bfseries\fontsize{30}{30}\selectfont\@title\\[-1ex]
+ \begin{tikzpicture}
+ \draw[white,line width=1pt] (0,0) --++ (\paperwidth-3\outermarginwidth,0);
+ \end{tikzpicture}\\[0ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}
+ }};% 封面英文书名与中文书名
+ \node[left,inner sep=0pt,outer sep=0pt] at ([xshift=1.2\outermarginwidth,yshift=1.8cm]current page.east)
+ {%
+ \adjustbox{valign=t}{
+ \begin{minipage}{.25\textwidth}
+ \begin{tikzpicture}
+ \foreach \x/\r in {1.2/6,.8/4} {
+ \draw[white,line width=\x pt] (0,0) circle [radius=\r pt];}
+ \fill[white] (0,0) circle [radius=2.5pt];
+ \end{tikzpicture}
+ \hspace{2pt}\color{white}\sffamily\fontsize{20}{25}\selectfont Editors
+ \end{minipage}}
+ \hfill
+ \adjustbox{valign=t}{\begin{minipage}{.45\textwidth}
+ \raggedright\color{white}\sffamily\fontsize{20}{25}\selectfont\@author
+ \end{minipage}}
+ };% 封面作者信息栏
+ \fill [path picture={ \node at (path picture bounding box.center)
+ {\includegraphics[height=1.1\linewidth,keepaspectratio]{\@coverimage}};}]
+ ([xshift=\outermarginwidth]current page.south west) rectangle ++(1.8*\covershift,.575\paperheight);
+ \fill[pattern color=coverfgcolor!70,pattern=horizontal lines,opacity=0.8]
+ ([xshift=\outermarginwidth,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \fill [coverfgcolor!80,path fading=fade right]%
+ ([xshift=\outermarginwidth+.5\linewidth+.2cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \fill [coverfgcolor!80,path fading=fade left]%
+ ([xshift=\outermarginwidth+.5\linewidth+.2cm,yshift=.2\covershift]current page.south west) rectangle ([xshift=-\outermarginwidth,yshift=1.43\covershift]current page.south east);
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ }
+
+\newcommand\makecover{
+ \thispagestyle{empty}
+ \ifaivpaper@TF{\aivcover}{\lettercover}
+ {\newpage\thispagestyle{empty}}
+}
+\makeatother
+\endinput
+% %%%%===============================================================%%%%%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-en.sty b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-en.sty
new file mode 100644
index 00000000000..76d358c6273
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-en.sty
@@ -0,0 +1,149 @@
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{stys/beautybook-cover-en}[2024/07/01,v2.0]
+\usepackage{anyfontsize} % 提供\fontsize{}{}\selectfont命令
+\usepackage{etoolbox} %提供自定义封面选项接口
+\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}%颜色宏包 % Driver-independent color extensions
+\usepackage{tikz}
+\usepackage{graphicx} %插图
+\usetikzlibrary{calc,fadings,patterns}
+\usepackage{adjustbox} %修正minipage顶部对齐问题
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!50]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!50]
+\tikzfading[name=fade up,
+ top color =transparent!100, % 完全透明
+ bottom color=transparent!50] % 半透明
+\tikzfading[name=fade down,
+ bottom color =transparent!100,
+ top color=transparent!50]
+\makeatletter
+\newcommand{\aivcover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[coverfgcolor]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \coordinate (start) at ($(current page.east)!0.5!(current page.north east)+(1,-1)$);
+ \coordinate (end) at (current page.north west);
+ \foreach \i in {0,0.01,...,1}
+ {
+ \coordinate (point) at ($(start)!\i!(end)$);
+ \draw[coverfgcolor!50]
+ ($(point)+(310*\i:6)$)--
+ ($(point)+(310*\i+120:6)$)--
+ ($(point)+(310*\i+240:6)$)--
+ ($(point)+(310*\i:6)$);
+ }
+ \coordinate (start) at (current page.south west);
+ \coordinate (end) at (current page.east);
+ \foreach \i in {0,0.02,...,1}
+ {
+ \coordinate (point) at ($(start)!\i!(end)$);
+ \draw[coverfgcolor!50]
+ ($(point)+(310*\i:10)$)--
+ ($(point)+(310*\i+120:10)$)--
+ ($(point)+(310*\i+240:10)$)--
+ ($(point)+(310*\i:10)$);
+ }
+ \shade[bottom color=coverfgcolor,top color=coverfgcolor!70,opacity=0.7]
+ ([xshift=.5\outermarginwidth]current page.north west) rectangle (current page.south east); % 背景大矩形
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=0.5]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \fill[coverbar!90,opacity=0.8]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \foreach \lx/\rx/\ry/\bc/\tc in {
+ 1/1.5/1.75/70/80,1.5/2/1.6/65/75,2/2.5/1.3/60/70,2.5/3/1/55/65,3/3.5/.7/50/60,3.5/4/1.2/60/70,4/4.5/1.9/75/85,4.5/5/1.1/55/65,5/5.5/1.2/60/70,6/6.5/1.6/65/75,6.5/7/1.3/60/70,7/7.5/1.87/70/80,7.5/8/1/55/65,8/8.5/.9/50/60,8.5/9/1.8/70/80,9/9.5/1.6/65/75,9.5/10/1.4/60/70,10/10.5/1/55/65,10.5/11/.7/50/60,11/11.5/1.3/55/65,11.5/12/1/70/80,12/12.5/1.3/65/75,12.5/13/1.6/60/70,13/13.5/1.75/55/65,13.5/14/1.6/65/75,14/14.5/1.3/60/70
+ }{
+ \shade[bottom color=coverfgcolor!\bc,top color=coverfgcolor!\tc,opacity=.5]
+ ([xshift=\lx\outermarginwidth]current page.north west) rectangle ([xshift=\rx\outermarginwidth,yshift=-\ry\covershift]current page.north west);%顶部琴键矩形
+ }
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sffamily\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ {\newpage\thispagestyle{empty}}
+}
+
+\newcommand{\lettercover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \fill[coverfgcolor]
+ (current page.north west) rectangle (current page.south east);% 填充封面背景颜色 (coverbgcolor)
+ \coordinate (start) at ($(current page.east)!0.5!(current page.north east)+(1,-1)$);
+ \coordinate (end) at (current page.north west);
+ \foreach \i in {0,0.01,...,1}
+ {
+ \coordinate (point) at ($(start)!\i!(end)$);
+ \draw[coverfgcolor!50]
+ ($(point)+(310*\i:6)$)--
+ ($(point)+(310*\i+120:6)$)--
+ ($(point)+(310*\i+240:6)$)--
+ ($(point)+(310*\i:6)$);
+ }
+ \coordinate (start) at (current page.south west);
+ \coordinate (end) at (current page.east);
+ \foreach \i in {0,0.02,...,1}
+ {
+ \coordinate (point) at ($(start)!\i!(end)$);
+ \draw[coverfgcolor!50]
+ ($(point)+(310*\i:10)$)--
+ ($(point)+(310*\i+120:10)$)--
+ ($(point)+(310*\i+240:10)$)--
+ ($(point)+(310*\i:10)$);
+ }
+ \shade[bottom color=coverfgcolor,top color=coverfgcolor!70,opacity=0.7]
+ ([xshift=.5\outermarginwidth]current page.north west) rectangle (current page.south east); % 背景大矩形
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=0.5]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \fill[coverbar!90,opacity=0.8]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \foreach \lx/\rx/\ry/\bc/\tc in {
+ 1/1.5/1.75/70/80,1.5/2/1.6/65/75,2/2.5/1.3/60/70,2.5/3/1/55/65,3/3.5/.7/50/60,3.5/4/1.2/60/70,4/4.5/1.9/75/85,4.5/5/1.1/55/65,5/5.5/1.2/60/70,6/6.5/1.6/65/75,6.5/7/1.3/60/70,7/7.5/1.87/70/80,7.5/8/1/55/65,8/8.5/.9/50/60,8.5/9/1.8/70/80,9/9.5/1.6/65/75,9.5/10/1.4/60/70,10/10.5/1/55/65,10.5/11/.7/50/60,11/11.5/1.3/55/65,11.5/12/1/70/80,12/12.5/1.3/65/75,12.5/13/1.6/60/70,13/13.5/1.75/55/65,13.5/14/1.6/65/75,14/14.5/1.3/60/70
+ }{
+ \shade[bottom color=coverfgcolor!\bc,top color=coverfgcolor!\tc,opacity=.5]
+ ([xshift=\lx\outermarginwidth]current page.north west) rectangle ([xshift=\rx\outermarginwidth,yshift=-\ry\covershift]current page.north west);%顶部琴键矩形
+ }
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sffamily\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sffamily\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ {\newpage\thispagestyle{empty}}
+}
+
+\newcommand\makecover{
+ \thispagestyle{empty}
+ \ifaivpaper@TF{\aivcover}{\lettercover}
+ {\newpage\thispagestyle{empty}}
+}
+\makeatother
+%%%%===============================================================%%%%%
+%%------------------------------------------------------封面设计--------------------------------------------------------%%
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-enfig.sty b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-enfig.sty
new file mode 100644
index 00000000000..9c24de8b3eb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/beautybook/stys/beautybook-cover-enfig.sty
@@ -0,0 +1,88 @@
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{stys/beautybook-cover-enfig}[2024/07/01,v2.0]
+\tikzfading[name=fade right,
+ right color =transparent!100,
+ left color=transparent!0]
+\tikzfading[name=fade left,
+ left color =transparent!100,
+ right color=transparent!50]
+\tikzfading[name=fade up,
+ top color =transparent!100,
+ bottom color=transparent!50]
+\tikzfading[name=fade down,
+ bottom color =transparent!100,
+ top color=transparent!50]
+\makeatletter
+\newcommand{\aivcover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{bottom}
+ \node[opacity=0.8,inner sep=0pt] at (current
+ page.center){\includegraphics[width=\paperwidth,height=\paperheight]{\@coverimage}};
+ \end{pgfonlayer}
+ \shade[left color=coverbgcolor!70,right color=coverbgcolor!50,path fading=fade right,opacity=.5]
+ ([xshift=.5\outermarginwidth]current page.north west) rectangle ([xshift=4\outermarginwidth]current page.south west); % 背景大矩形虚化
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.8]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \fill[coverbar,opacity=0.8]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sc\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ {\newpage\thispagestyle{empty}}
+}
+
+\newcommand{\lettercover}{
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{bottom}
+ \node[opacity=0.8,inner sep=0pt] at (current
+ page.center){\includegraphics[width=\paperwidth,height=\paperheight]{\@coverimage}};
+ \end{pgfonlayer}
+ \shade[left color=coverbgcolor!70,right color=coverbgcolor!50,path fading=fade right,opacity=.5]
+ ([xshift=.5\outermarginwidth]current page.north west) rectangle ([xshift=4\outermarginwidth]current page.south west); % 背景大矩形虚化
+ \shade[left color=coverfgcolor,right color=coverfgcolor!60,opacity=.8]
+ ([xshift=\outermarginwidth,yshift=2\outermarginwidth]current page.west) rectangle (current page.south east); % 标题背景大矩形
+ \fill[coverbar,opacity=0.8]
+ ([yshift=2\outermarginwidth]current page.west) rectangle ([xshift=\outermarginwidth,yshift=-.2\outermarginwidth]current page.west); % 最左侧装饰矩形
+ \node[anchor=south] at ([xshift=.3\outermarginwidth,yshift=-.4\covershift]current page.north) {%
+ \parbox{.8\paperwidth}{
+ \filright
+ \color{white}\sc\fontsize{20}{23}\selectfont\@bookseries}
+ }; %系列丛书名称
+ \node[ anchor=south,below right] (covertitles) at ([xshift=1.8\outermarginwidth-0.2cm,yshift=2.7cm]current page.west)
+ {\parbox{.8\paperwidth}{%
+ \raggedright%
+ {\renewcommand\baselinestretch{1.1}\selectfont \color{white}\sffamily\bfseries\fontsize{40}{40}\selectfont\@title\\[0.5ex]
+ \color{white}\sc\fontsize{30}{30}\selectfont
+ \ifdefvoid{\@subtitle}{}{\@subtitle}\par}
+ }};% 封面标题与副标题
+ \node[anchor=west,font=\sc\fontsize{23}{23}\selectfont,text=white] at ([shift={(-.4\paperwidth,-6cm)}]covertitles) {\@edition};
+ \node[anchor=west,font=\sffamily\Huge,text=white] at ([xshift=1.8\outermarginwidth-0.3cm,yshift=\covershift]current page.west) {\@author};
+ \node[left,text=white,font=\rmfamily\Large,] at
+ ([shift={(-2cm,2cm)}]current page.south east) %
+ {\raisebox{-0.5cm}{\includegraphics[width=0.1\linewidth]{\@presslogo}}\hspace*{0ex}\begin{varwidth}{.4\textwidth}\tikz\draw[white,line width=1.25pt] (0,0)--++(0,1cm);\,\raisebox{.25cm}{\@pressname} \end{varwidth}};%
+ \end{tikzpicture}%
+ {\newpage\thispagestyle{empty}}
+}
+
+\newcommand\makecover{
+ \thispagestyle{empty}
+ \ifaivpaper@TF{\aivcover}{\lettercover}
+ {\newpage\thispagestyle{empty}}
+}
+\makeatother
+\endinput
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/bib2qr/bib2qr.sty b/Master/texmf-dist/tex/latex/bib2qr/bib2qr.sty
new file mode 100644
index 00000000000..093c38dba6d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bib2qr/bib2qr.sty
@@ -0,0 +1,107 @@
+%%
+%% This is file `bib2qr.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bib2qr.dtx (with options: `package')
+%%
+%% Copyright (C) 2024 Christian Schreinemachers
+%%
+%% 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 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The current maintainer of this work is
+%% Christian Schreinemachers.
+%%
+%% This work consists of the files
+%% bib2qr.dtx
+%% bib2qr.ins
+%% and the derived files
+%% bib2qr.sty
+%% bib2qr.pdf
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bib2qr}
+ [2024-07-31 v0.2 Cite BibTeX entries with QR codes]
+\RequirePackage{biblatex}
+\RequirePackage{ifthen}
+\RequirePackage{qrcode}
+\RequirePackage{xstring}
+\DeclareKeys[@bibiiqr]{
+ doiurlbase.store = \@bibiiqr@doiurlbase,
+ doiurlbase.usage = load,
+ qrdelimiter.store = \@bibiiqr@qrdelimiter,
+ qrdelimiter.usage = load,
+ qrversion.store = \@bibiiqr@qrversion,
+ qrversion.usage = load,
+ qrwidth.store = \@bibiiqr@qrwidth,
+ qrwidth.usage = load,
+}%
+\SetKeys[@bibiiqr]{
+ doiurlbase=https://doi.org/,
+ qrdelimiter=\space,
+ qrversion=0,
+ qrwidth=2cm,
+}%
+\ProcessKeyOptions[@bibiiqr]\relax
+\newcommand\@bibiiqr@showqr[1]{%
+ \qrcode[height=\@bibiiqr@qrwidth,version=\@bibiiqr@qrversion]{#1}%
+}%
+\DeclareFieldFormat{@bibiiqr@fldFmtDoi}{%
+ \IfBeginWith{#1}{\@bibiiqr@doiurlbase}%
+ {\@bibiiqr@showqr{#1}}%
+ {\@bibiiqr@showqr{\@bibiiqr@doiurlbase#1}}%
+}%
+\DeclareFieldFormat{@bibiiqr@fldFmtUrl}{\@bibiiqr@showqr{#1}}
+\DeclareBibliographyDriver{@bibiiqr@bibDrvQR}{%
+ \usebibmacro{begentry}%
+ \ifboolexpr{test{\iffieldundef{doi}}}
+ {%
+ \ifboolexpr{test{\iffieldundef{url}}}%
+ {%
+ \PackageWarning{bib2qr}%
+ {BibTeX entry without DOI or URL: \thefield{entrykey}}{}%
+ }%
+ {\printfield[@bibiiqr@fldFmtUrl]{url}}%
+ }%
+ {\printfield[@bibiiqr@fldFmtDoi]{doi}}%
+ \usebibmacro{finentry}%
+}
+\DeclareCiteCommand{\qrcite}
+ {\usebibmacro{prenote}}%
+ {\usedriver{}{@bibiiqr@bibDrvQR}}%
+ {\@bibiiqr@qrdelimiter}%
+ {\usebibmacro{postnote}}%
+\NewDocumentCommand{\qrfullcite}{O{}m}{%
+ \par%
+ \ifthenelse{\equal{#1}{noindent}}{%
+ \noindent%
+ \edef\@bibiiqr@mpiiwidth{\dimexpr\linewidth-\@bibiiqr@qrwidth-0.5em}%
+ }{%
+ \edef\@bibiiqr@mpiiwidth{%
+ \dimexpr\linewidth-\parindent-\@bibiiqr@qrwidth-0.5em}%
+ }%
+ \begin{minipage}[t]{\@bibiiqr@qrwidth}
+ \qrcite{#2}%
+ \end{minipage}
+ \hspace{0.5em}%
+ \begin{minipage}{\@bibiiqr@mpiiwidth}
+ \fullcite{#2}%
+ \end{minipage}
+ \par%
+}%
+
+\endinput
+%%
+%% End of file `bib2qr.sty'.
diff --git a/Master/texmf-dist/tex/latex/bibcop/bibcop.sty b/Master/texmf-dist/tex/latex/bibcop/bibcop.sty
index 3089f067b0d..e9d5f2e2c30 100644
--- a/Master/texmf-dist/tex/latex/bibcop/bibcop.sty
+++ b/Master/texmf-dist/tex/latex/bibcop/bibcop.sty
@@ -31,7 +31,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bibcop}
-[2024-05-03 0.0.21 Style Checker of Bibliography Files]
+[2024/11/13 0.0.23 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-ieee/ieee-alphabetic.bbx b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.bbx
index ff82f97f559..6a1ee31c29f 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.bbx
@@ -2,13 +2,13 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% 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-alphabetic.bbx}[2021/12/06 v1.3f biblatex bibliography style]
+\ProvidesFile{ieee-alphabetic.bbx}[2024-11-13 v1.4 biblatex bibliography style]
\RequireBibliographyStyle{ieee}
@@ -53,8 +53,8 @@
{\item}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 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
@@ -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 302517b02e1..38deadda542 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee-alphabetic.cbx
@@ -2,13 +2,13 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% 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-alphabetic.cbx}[2021/12/06 v1.3f biblatex citation style]
+\ProvidesFile{ieee-alphabetic.cbx}[2024-11-13 v1.4 biblatex citation style]
\RequireCitationStyle{alphabetic}
@@ -45,8 +45,8 @@
}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 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
@@ -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..d1524002e69
--- /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}[2024-11-13 v1.4 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 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 77a8b6794de..21f10ea1078 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.bbx
@@ -2,13 +2,13 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% 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.bbx}[2021/12/06 v1.3f biblatex bibliography style]
+\ProvidesFile{ieee.bbx}[2024-11-13 v1.4 biblatex bibliography style]
% Load the standard style to avoid copy-pasting unnecessary material
\RequireBibliographyStyle{numeric-comp}
@@ -30,6 +30,7 @@
maxbibnames = 6,
sorting = none,
dashed = false,
+ urldate = long,
}
\uspunctuation
@@ -50,6 +51,7 @@
{\bibstring{jourser}\addnbspace#1}
\DeclareFieldFormat[online,report]{title}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat{url}{\bibstring{url}\addcolon\space\url{#1}}
+\DeclareFieldFormat{urldate}{\bibstring{urlseen}\space#1}
\DeclareFieldFormat*{volume}
{\bibstring{volume}\addnbspace#1}
\DeclareFieldFormat[article,periodical]{volume}
@@ -76,6 +78,7 @@
presentedat = presented at the\addspace ,
techreport = Tech\adddot\addspace Rep\adddot ,
url = [Online]\adddot\addspace Available ,
+ urlseen = Accessed\addcolon
}
\DefineBibliographyStrings{english}{
@@ -210,6 +213,7 @@
{%
\printtext[journaltitle]{%
\printfield[titlecase]{journaltitle}%
+ \setunit{\subtitlepunct}%
\printfield[titlecase]{journalsubtitle}%
}%
}%
@@ -331,6 +335,17 @@
\printfield{titleaddon}%
}
+\renewbibmacro*{url+urldate}{%
+ \usebibmacro{urldate}%
+ \setunit{\adddot\space}%
+ \usebibmacro{url}%
+}
+
+\renewbibmacro*{urldate}{%
+ \printurldate
+ \newunit
+ }
+
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\newunit
@@ -713,7 +728,6 @@
{\usebibmacro{eprint}}
{}%
\setunit{\adddot\addspace}%
- \printtext[parens]{\usebibmacro{date}}%
\newunit\newblock
\usebibmacro{url+urldate}%
\setunit{\adddot\addspace}%
@@ -802,8 +816,8 @@
\usebibmacro{finentry}}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 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
@@ -820,7 +834,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 877d645053f..2a929bce853 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/ieee.cbx
@@ -2,128 +2,41 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% 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.cbx}[2021/12/06 v1.3f biblatex citation style]
+\ProvidesFile{ieee.cbx}[2024-11-13 v1.4 biblatex citation style]
-\RequireCitationStyle{numeric-comp}
+\RequireCitationStyle{numeric}
\ExecuteBibliographyOptions{
- maxcitenames = 3,
- minnames = 3,
+ 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}}
+\DeclareCiteCommand{\cite}%[\mkbibbrackets]
+ {\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
- \usebibmacro{cite:comp}}
- {}
- {\usebibmacro{cite:dump}%
- \usebibmacro{postnote}%
- \bibclosebracket
- }
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
-\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}}
- {}}}
+\newbibmacro*{cite}{%
+ \mkbibbrackets{%
+ \printtext[bibhyperref]{%
+ \printfield{labelprefix}%
+ \printfield{labelnumber}%
+ \ifbool{bbx:subentry}
+ {\printfield{entrysetcount}}
+ {}}}}
%%
-%% Copyright (C) 2011-2013,2015-2021 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2021,2024 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
@@ -140,7 +53,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 79ffd21ce92..f6f26e085b3 100644
--- a/Master/texmf-dist/tex/latex/biblatex-ieee/magyar-ieee.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-ieee/magyar-ieee.lbx
@@ -2,7 +2,7 @@
%% biblatex-ieee --- A biblatex implementation of the IEEE
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright at morningstar2.co.uk
+%% E-mail: jsoeph@texdev.net
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ---------------------------------------------------------------
@@ -34,8 +34,8 @@
}
%%
-%% Copyright (C) 2011-2013,2015-2020 by
-%% Joseph Wright <joseph.wright at morningstar2.co.uk>
+%% Copyright (C) 2011-2013,2015-2020,2024 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
@@ -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-oxref/american-oxref.lbx b/Master/texmf-dist/tex/latex/biblatex-oxref/american-oxref.lbx
index cb0c1aa4f5b..3a52993eb91 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/american-oxref.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/american-oxref.lbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{american-oxref.lbx}
[\Version\space American English conventions required by the biblatex-oxref styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/british-oxref.lbx b/Master/texmf-dist/tex/latex/biblatex-oxref/british-oxref.lbx
index f319e7d6397..05fe2abfc79 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/british-oxref.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/british-oxref.lbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{british-oxref.lbx}
[\Version\space British English conventions required by the biblatex-oxref styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/english-oxref.lbx b/Master/texmf-dist/tex/latex/biblatex-oxref/english-oxref.lbx
index 34619d7c2b9..52390c70e4d 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/english-oxref.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/english-oxref.lbx
@@ -13,14 +13,14 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{english-oxref.lbx}
[\Version\space Generic English conventions required by the biblatex-oxref styles]
\InheritBibliographyExtras{english}
\DeclareBibliographyExtras{%
\def\finalandcomma{\addcomma}%
- \def\blx@ox@langbibstring#1#2{#1\addspace\bibstring{#2}}%
+ \def\blx@ox@langbibstring#1#2{#1\setunit*{\addspace}\bibstring{#2}}%
}
\UndeclareBibliographyExtras{%
\def\blx@ox@langbibstring#1#2{\bibstring{#2}}%
@@ -141,11 +141,11 @@
byreviser = {{revised by}{rev\adddot}},
byreviewer = {{reviewed by}{rev\adddot}},
bycollaborator = {{in collaboration with}{in collab\adddotspace with}},
- bytranslator = {{translated \lbx@lfromlang\ by}{trans\adddot\ \lbx@sfromlang}},
+ bytranslator = {{translated by}{trans\adddot}},
bycommentator = {{commented by}{comm\adddot}},
byannotator = {{annotated by}{annot\adddot}},
- byeditortr = {{edited and translated \lbx@lfromlang\ by}%
- {ed\adddotspace and trans\adddot\ \lbx@sfromlang}},
+ byeditortr = {{edited and translated by}%
+ {ed\adddotspace and trans\adddot}},
byeditorco = {{edited and commented by}%
{ed\adddotspace and comm\adddot}},
byeditoran = {{edited and annotated by}%
@@ -156,16 +156,16 @@
{ed.\adddotspace with foreword}},
byeditoraf = {{edited, with an afterword, by}%
{ed.\adddotspace with afterword}},
- byeditortrco = {{edited, translated \lbx@lfromlang\finalandcomma\ and commented by}%
- {ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and comm\adddot}},
- byeditortran = {{edited, translated \lbx@lfromlang\finalandcomma\ and annotated by}%
- {ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot\adddot}},
- byeditortrin = {{edited and translated \lbx@lfromlang, with an introduction, by}%
- {with introduction, ed\adddotspace and trans\adddot\ \lbx@sfromlang}},
- byeditortrfo = {{edited and translated \lbx@lfromlang, with a foreword, by}%
- {with foreword, ed\adddotspace and trans\adddot\ \lbx@sfromlang}},
- byeditortraf = {{edited and translated \lbx@lfromlang, with an afterword, by}%
- {with afterword, ed\adddotspace and trans\adddot\ \lbx@sfromlang}},
+ byeditortrco = {{edited, translated\finalandcomma\ and commented by}%
+ {ed.,\addabbrvspace trans\adddot\finalandcomma\ and comm\adddot}},
+ byeditortran = {{edited, translated\finalandcomma\ and annotated by}%
+ {ed.,\addabbrvspace trans\adddot\finalandcomma\ and annot\adddot}},
+ byeditortrin = {{edited and translated, with an introduction, by}%
+ {with introduction, ed\adddotspace and trans\adddot}},
+ byeditortrfo = {{edited and translated, with a foreword, by}%
+ {with foreword, ed\adddotspace and trans\adddot}},
+ byeditortraf = {{edited and translated, with an afterword, by}%
+ {with afterword, ed\adddotspace and trans\adddot}},
byeditorcoin = {{edited and commented, with an introduction, by}%
{with introduction, ed\adddotspace and comm\adddot}},
byeditorcofo = {{edited and commented, with a foreword, by}%
@@ -178,41 +178,40 @@
{with foreword, ed\adddotspace and annot\adddot}},
byeditoranaf = {{edited and annotated, with an afterword, by}%
{with afterword, ed\adddotspace and annot\adddot}},
- byeditortrcoin = {{edited, translated \lbx@lfromlang\finalandcomma\ and commented, with an introduction, by}%
- {with introduction, ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and comm\adddot}},
- byeditortrcofo = {{edited, translated \lbx@lfromlang\finalandcomma\ and commented, with a foreword, by}%
- {with foreword, ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and comm\adddot}},
- byeditortrcoaf = {{edited, translated \lbx@lfromlang\finalandcomma\ and commented, with an afterword, by}%
- {with afterword, ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and comm\adddot}},
- byeditortranin = {{edited, translated \lbx@lfromlang\finalandcomma\ and annotated, with an introduction, by}%
- {with introduction, ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot\adddot}},
- byeditortranfo = {{edited, translated \lbx@lfromlang\finalandcomma\ and annotated, with a foreword, by}%
- {with foreword, ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot\adddot}},
- byeditortranaf = {{edited, translated \lbx@lfromlang\finalandcomma\ and annotated, with an afterword, by}%
- {with afterword, ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot\adddot}},
- bytranslatorco = {{translated \lbx@lfromlang\ and commented by}%
- {trans\adddot\ \lbx@sfromlang\ and comm\adddot}},
- bytranslatoran = {{translated \lbx@lfromlang\ and annotated by}%
- {trans\adddot\ \lbx@sfromlang\ and annot\adddot}},
- bytranslatorin = {{translated \lbx@lfromlang, with an introduction, by}%
- {trans\adddot\ \lbx@sfromlang\ with introduction}},
- bytranslatorfo = {{translated \lbx@lfromlang, with a foreword, by}%
- {trans\adddot\ \lbx@sfromlang\ with foreword}},
- bytranslatoraf = {{translated \lbx@lfromlang, with an afterword, by}%
- {trans\adddot\ \lbx@sfromlang\ with afterword}},
- bytranslatorcoin = {{translated \lbx@lfromlang\ and commented, with an introduction, by}%
- {with introduction, trans\adddot\ \lbx@sfromlang\ and comm\adddot}},
- bytranslatorcofo = {{translated \lbx@lfromlang\ and commented, with a foreword, by}%
- {with foreword, trans\adddot\ \lbx@sfromlang\ and comm\adddot}},
- bytranslatorcoaf = {{translated \lbx@lfromlang\ and commented, with an afterword, by}%
- {with afterword, trans\adddot\ \lbx@sfromlang\ and comm\adddot}},
- bytranslatoranin = {{translated \lbx@lfromlang\ and annotated, with an introduction, by}%
- {with introduction, trans\adddot\ \lbx@sfromlang\ and annot\adddot}},
- bytranslatoranfo = {{translated \lbx@lfromlang\ and annotated, with a foreword, by}%
- {with foreword, trans\adddot\ \lbx@sfromlang\ and annot\adddot}},
- bytranslatoranaf = {{translated \lbx@lfromlang\ and annotated, with an afterword, by}%
- {with afterword, trans\adddot\ \lbx@sfromlang\ and annot\adddot}},
- withintroduction = {{with an introduction by}{with an introduction by}},
+ byeditortrcoin = {{edited, translated\finalandcomma\ and commented, with an introduction, by}%
+ {with introduction, ed.,\addabbrvspace trans\adddot\finalandcomma\ and comm\adddot}},
+ byeditortrcofo = {{edited, translated\finalandcomma\ and commented, with a foreword, by}%
+ {with foreword, ed.,\addabbrvspace trans\adddot\finalandcomma\ and comm\adddot}},
+ byeditortrcoaf = {{edited, translated\finalandcomma\ and commented, with an afterword, by}%
+ {with afterword, ed.,\addabbrvspace trans\adddot\finalandcomma\ and comm\adddot}},
+ byeditortranin = {{edited, translated\finalandcomma\ and annotated, with an introduction, by}%
+ {with introduction, ed.,\addabbrvspace trans\adddot\finalandcomma\ and annot\adddot}},
+ byeditortranfo = {{edited, translated\finalandcomma\ and annotated, with a foreword, by}%
+ {with foreword, ed.,\addabbrvspace trans\adddot\finalandcomma\ and annot\adddot}},
+ byeditortranaf = {{edited, translated\finalandcomma\ and annotated, with an afterword, by}%
+ {with afterword, ed.,\addabbrvspace trans\adddot\finalandcomma\ and annot\adddot}},
+ bytranslatorco = {{translated and commented by}%
+ {trans\adddotspace and comm\adddot}},
+ bytranslatoran = {{translated and annotated by}%
+ {trans\adddotspace and annot\adddot}},
+ bytranslatorin = {{translated, with an introduction, by}%
+ {trans\adddotspace with introduction}},
+ bytranslatorfo = {{translated, with a foreword, by}%
+ {trans\adddotspace with foreword}},
+ bytranslatoraf = {{translated, with an afterword, by}%
+ {trans\adddotspace with afterword}},
+ bytranslatorcoin = {{translated and commented, with an introduction, by}%
+ {with introduction, trans\adddotspace and comm\adddot}},
+ bytranslatorcofo = {{translated and commented, with a foreword, by}%
+ {with foreword, trans\adddotspace and comm\adddot}},
+ bytranslatorcoaf = {{translated and commented, with an afterword, by}%
+ {with afterword, trans\adddotspace and comm\adddot}},
+ bytranslatoranin = {{translated and annotated, with an introduction, by}%
+ {with introduction, trans\adddotspace and annot\adddot}},
+ bytranslatoranfo = {{translated and annotated, with a foreword, by}%
+ {with foreword, trans\adddotspace and annot\adddot}},
+ bytranslatoranaf = {{translated and annotated, with an afterword, by}%
+ {with afterword, trans\adddotspace and annot\adddot}},
withcommentator = {{with a commentary by}{with a commentary by}},
withannotator = {{with annotations by}{with annotations by}},
withintroduction = {{with an introduction by}{with an introduction by}},
@@ -241,8 +240,10 @@
idempp = {{eidem}{eid\adddot}},
citedas = {{henceforth}{henceforth}},
thiscite = {{at}{at}},
- langamerican = {{English}{Eng\adddot}},
- langbrazilian = {{Brazilian}{Braz\adddot}},
+ langamerican = {{American English}{Amer\adddotspace Eng\adddot}},
+ langbasque = {{Basque}{Basq\adddot}},
+ langbrazilian = {{Brazilian Portuguese}{Braz\adddotspace Port\adddot}},
+ langbulgarian = {{Bulgarian}{Bulg\adddot}},
langcatalan = {{Catalan}{Catal\adddot}},
langcroatian = {{Croatian}{Croat\adddot}},
langczech = {{Czech}{Czech}},
@@ -252,17 +253,28 @@
langestonian = {{Estonian}{Eston\adddot}},
langfinnish = {{Finnish}{Finn\adddot}},
langfrench = {{French}{Fr\adddot}},
+ langgalician = {{Galician}{Galic\adddot}},
langgerman = {{German}{Ger\adddot}},
langgreek = {{Greek}{Gr\adddot}},
+ langhungarian = {{Hungarian}{Hung\adddot}},
langitalian = {{Italian}{It\adddot}},
+ langjapanese = {{Japanese}{Jap\adddot}},
langlatin = {{Latin}{Lat\adddot}},
+ langlatvian = {{Latvian}{Latv\adddot}},
+ langlithuanian = {{Lithuanian}{Lith\adddot}},
+ langmarathi = {{Marathi}{Mar\adddot}},
langnorwegian = {{Norwegian}{Norw\adddot}},
langpolish = {{Polish}{Pol\adddot}},
langportuguese = {{Portuguese}{Port\adddot}},
+ langromanian = {{Romanian}{Rom\adddot}},
langrussian = {{Russian}{Russ\adddot}},
+ langserbian = {{Serbian}{Serb\adddot}},
+ langslovak = {{Slovak}{Slovak}},
langslovene = {{Slovene}{Slov\adddot}},
langspanish = {{Spanish}{Sp\adddot}},
langswedish = {{Swedish}{Swed\adddot}},
+ langturkish = {{Turkish}{Turk\adddot}},
+ langukrainian = {{Ukrainian}{Ukr\adddot}},
}
%%
%% Copyright (C) 2016–2023 Alex Ball
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.bbx
index 473f6c42d16..c73fc2c95aa 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxalph.bbx}
[\Version\space Alphabetic bibliography style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.cbx
index f3541bff4a7..9c2a9ab2c46 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxalph.cbx}
[\Version\space Alphabetic citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.dbx
index bd625202764..9045cf9d648 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxalph.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxalph.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.bbx
index 04b5c3b8406..ef1d0322c64 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-ibid.bbx}
[\Version\space Footnote-based bibliography style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.cbx
index 252b66b4f1b..848885d55e5 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-ibid.cbx}
[\Version\space Footnote-based citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.dbx
index 28562c9fbe6..d44e3a3a5a6 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-ibid.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-ibid.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.bbx
index d26e0a6d13e..e5f7d577ec8 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-inote.bbx}
[\Version\space Footnote-based bibliography style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.cbx
index 2f0cf8d67ef..40f4557fde4 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-inote.cbx}
[\Version\space Footnote-based citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.dbx
index 5b0e6eaa836..0e3d066ce73 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-inote.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-inote.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.bbx
index bb224734c16..0603f3fc93e 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-note.bbx}
[\Version\space Footnote-based bibliography style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.cbx
index c2150b32312..e68736b15a7 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-note.cbx}
[\Version\space Footnote-based citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.dbx
index a9f26d759c4..2f96f373283 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-note.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-note.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.bbx
index e5d42ab3991..760d14f8daa 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-trad1.bbx}
[\Version\space Footnote-based bibliography style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.cbx
index f4e37274395..7609ff7ef85 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-trad1.cbx}
[\Version\space Footnote-based citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.dbx
index f7b6c3a0f9a..6674482e133 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad1.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-trad1.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.bbx
index 28c6f1c1f1f..1bb2b1ad334 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-trad2.bbx}
[\Version\space Footnote-based bibliography style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.cbx
index 7209c8cacaf..6b62164597b 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-trad2.cbx}
[\Version\space Footnote-based citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.dbx
index 1df1385c14f..dcc6f60853b 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad2.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-trad2.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.bbx
index e024aabcdf5..8dd8c41ce17 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-trad3.bbx}
[\Version\space Footnote-based bibliography style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.cbx
index 146c6c2afb8..1afe5861dc9 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-trad3.cbx}
[\Version\space Footnote-based citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.dbx
index cf6bf1b8c2d..d0dcb90db08 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes-trad3.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes-trad3.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.bbx
index fad740be0cc..84c4da00d8e 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes.bbx}
[\Version\space Footnote-based bibliography style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.cbx
index 7302e4fb091..359ea4fd779 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes.cbx}
[\Version\space Footnote-based citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.dbx
index fb723c3fc58..936e7428a30 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnotes.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnotes.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.bbx
index 6adedef4b24..7ff5c440a83 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnum.bbx}
[\Version\space Numeric bibliography style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.cbx
index d5d672b2ce9..c543e3adb7a 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnum.cbx}
[\Version\space Numeric citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.dbx
index bc0a1e0cd0f..7f8955c4ae3 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxnum.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxnum.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxref.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxref.bbx
index 8c904ae44ad..e761352b5f2 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxref.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxref.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxref.bbx}
[\Version\space Base settings for bibliography styles inspired by the Oxford Guide to Style]
@@ -55,6 +55,7 @@
\newcommand*{\uscasetitlepunct}{\addcomma\space}
\renewcommand*{\relateddelim}{\addsemicolon\space}
\DeclareDelimFormat{revsdnamedelim}{\addcomma}
+\DeclareDelimFormat[pair]{revsdnamedelim}{}
\DeclareDelimFormat{authortypedelim}{\addspace}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareDelimFormat{translatortypedelim}{\addspace}
@@ -96,7 +97,7 @@
and
test {\ifdefvoid{#2}}%
}{}{%
- \printdelim{revsdnamedelim}}%
+ \printdelim{revsdnamepunct}}%
\ifdefvoid{#5}{}{\iftoggle{blx@ox@nametitle}{\bibnamedelimd\mkbibnametitle{#5}\isdot}{}}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
}{%
@@ -111,10 +112,22 @@
and
test {\ifdefvoid{#3}}%
}{}{%
- \printdelim{revsdnamedelim}}%
+ \printdelim{revsdnamepunct}}%
\ifdefvoid{#5}{}{\iftoggle{blx@ox@nametitle}{\bibnamedelimd\mkbibnametitle{#5}\isdot}{}}%
\ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
\ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}
+\renewbibmacro*{name:revsdelim}{%
+ \ifboolexpr{
+ (
+ test {\ifnumequal{\value{liststop}}{1}}
+ and
+ test \ifmorenames
+ )
+ or
+ test {\ifnumequal{\value{liststop}}{2}}
+ }
+ {\printdelim{revsdnamedelim}}
+ {}}
\def\blx@ox@lasthash{}
\DeclareNameFormat{bib-family-given/cite-given-family}{%
\iffieldannotation{inferred}{\ifnumequal{\value{listcount}}{1}{\bibopenbracket}{}}{}%
@@ -159,13 +172,22 @@
\renewcommand*{\mkbibnametitle}[1]{##1}%
}{}%
\ifboolexpe{%
- test {\ifnumgreater{\value{listcount}}{1}}
- or (
+ test {\ifnumequal{\value{listcount}}{\@ne}}
+ and
+ (
+ test {\ifnumless{\value{listcount}}{\value{liststop}}}
+ or
+ test {\ifnumgreater{\value{listtotal}}{\value{maxnames}}}
+ or
+ test {\ifandothers{\currentname}}
+ )
+ and not
+ (
test {\ifdefvoid\namepartgiven}
and
test {\ifdefvoid\namepartprefix}
)
- }{}{\usebibmacro{name:revsdelim}}%
+ }{\usebibmacro{name:revsdelim}}{}%
}{%
\ifgiveninits{%
\ifitemannotation{pseudo}{%
@@ -201,6 +223,10 @@
\savefield{hash}{\blx@ox@lasthash}%
}%
\ifitemannotation{inferred}{\bibclosebracket}{}%
+ \ifitemannotation{variant}{%
+ \global\settoggle{blx@ox@variantname}{true}%
+ }{%
+ \global\settoggle{blx@ox@variantname}{false}}%
\usebibmacro{name:andothers}%
\iffieldannotation{inferred}{%
\ifboolexpr{
@@ -256,13 +282,20 @@
}{%
\global\settoggle{blx@ox@variantname}{false}}%
\ifboolexpe{%
- test {\ifnumgreater{\value{listcount}}{1}}
- or (
+ (
+ test {\ifnumless{\value{listcount}}{\value{liststop}}}
+ or
+ test {\ifnumgreater{\value{listtotal}}{\value{maxnames}}}
+ or
+ test {\ifandothers{\currentname}}
+ )
+ and not
+ (
test {\ifdefvoid\namepartgiven}
and
test {\ifdefvoid\namepartprefix}
)
- }{}{\usebibmacro{name:revsdelim}}%
+ }{\usebibmacro{name:revsdelim}}{}%
\usebibmacro{name:andothers}}
\xpatchbibmacro{name:given-family}%
{\bibnamedelimd\mkbibnamesuffix{#4}}%
@@ -274,9 +307,22 @@
{}{\wlog{WARNING: biblatex-oxref failed to patch name:family-given}}
\DeclareFieldFormat{nameaddon}{\mkbibbrackets{#1}}
\DeclareFieldFormat{namevariant}{\mkbibparens{\bibstring{equals}\space #1}}
+\newbibmacro*{namepair:delim}[3]{%
+ \ifnumgreater{#2}{\@ne}{%
+ \ifnumless{#2}{#3}{%
+ \printdelim{multinamedelim}%
+ }{%
+ \ifnumgreater{#3}{\c@maxnames}{%
+ \c@liststop\c@minnames
+ }{%
+ \c@liststop#3}%
+ \lbx@finalnamedelim{#1}}%
+ }{}}
+\DeclareFieldFormat{expanded}{\mkbibparens{#1}}
\newcounter{namepairs}
\newsavebox{\blx@ox@namebox}
\newsavebox{\blx@ox@altnamebox}
+\newtoggle{blx@ox@thispairvariant}%
\newbibmacro*{namepairs}[2]{%
\setcounter{namepairs}{0}%
\savebibmacro{name:andothers}%
@@ -300,48 +346,58 @@
)
}{%
\stepcounter{namepairs}%
- \ifnumgreater{\value{namepairs}}{1}{%
- \ifnumequal{\value{#1}}{2}{%
- \setunit*{\addspace\bibstring{and}\addspace}%
- }{%
- \ifnumequal{\value{namepairs}}{\value{#1}}{%
- \setunit*{\addcomma\space\bibstring{and}\addspace}%
- }{%
- \setunit*{\addcomma\space}%
- }%
- }%
- }{}%
\savebox{\blx@ox@namebox}{%
\printnames[#1][\value{namepairs}-\value{namepairs}]{#1}%
}%
\let\blx@ox@firsthash=\blx@ox@lasthash
+ \savebox{\blx@ox@altnamebox}{%
+ \printnames[#1][\value{namepairs}-\value{namepairs}]{#2}%
+ }%
+ \let\blx@ox@secondhash=\blx@ox@lasthash
+ \iftoggle{blx@ox@variantname}{%
+ \toggletrue{blx@ox@thispairvariant}%
+ }{%
+ \togglefalse{blx@ox@thispairvariant}%
+ }%
\IfEndWith{#2}{addon}{%
- \savebox{\blx@ox@altnamebox}{%
- \printnames[by#1][\value{namepairs}-\value{namepairs}]{#2}%
- }%
- \let\blx@ox@secondhash=\blx@ox@lasthash
+ \usebibmacro{namepair:delim}%
+ {\unhbox\blx@ox@namebox}{\value{namepairs}}{\value{#1}}%
\ifdefstrequal{\blx@ox@firsthash}{\blx@ox@secondhash}{%
- \unhbox\blx@ox@namebox
+ \hbox{}\unhbox\blx@ox@namebox
}{%
- \unhbox\blx@ox@namebox\addspace
- \iftoggle{blx@ox@variantname}{%
+ \iftoggle{blx@ox@thispairvariant}{%
\ifbibliography{%
- \printtext[namevariant]{\printnames[#1][\value{namepairs}-\value{namepairs}]{#2}}%
- }{}%
+ \delimcontext{pair}%
+ \printnames[#1][\value{namepairs}-\value{namepairs}]{#1}%
+ \setunit{\addspace}%
+ \printtext[namevariant]{%
+ \printnames[#1][\value{namepairs}-\value{namepairs}]{#2}}%
+ }{%
+ \hbox{}\unhbox\blx@ox@namebox
+ }%
}{%
- \printtext[nameaddon]{\unhbox\blx@ox@altnamebox}%
+ \delimcontext{pair}%
+ \printnames[#1][\value{namepairs}-\value{namepairs}]{#1}%
+ \setunit{\addspace}%
+ \printtext[nameaddon]{%
+ \printnames[#1][\value{namepairs}-\value{namepairs}]{#2}%
+ }%
}%
}%
}{%
- \savebox{\blx@ox@altnamebox}{%
- \printnames[#1][\value{namepairs}-\value{namepairs}]{#2}%
- }%
- \let\blx@ox@secondhash=\blx@ox@lasthash
\ifdefstrequal{\blx@ox@firsthash}{\blx@ox@secondhash}{%
- \unhbox\blx@ox@namebox
+ \usebibmacro{namepair:delim}%
+ {\unhbox\blx@ox@namebox}{\value{namepairs}}{\value{#1}}%
+ \hbox{}\unhbox\blx@ox@namebox
}{%
- \unhbox\blx@ox@altnamebox
- \addspace\mkbibparens{\unhbox\blx@ox@namebox}%
+ \usebibmacro{namepair:delim}%
+ {\unhbox\blx@ox@altnamebox}{\value{namepairs}}{\value{#1}}%
+ \delimcontext{pair}%
+ \printnames[#1][\value{namepairs}-\value{namepairs}]{#2}%
+ \setunit{\addspace}%
+ \printtext[expanded]{%
+ \printnames[#1][\value{namepairs}-\value{namepairs}]{#1}%
+ }%
}%
}%
}%
@@ -724,12 +780,12 @@
\DeclareFieldFormat{pages}{%
\iffieldundef{bookpagination}%
{\mkcomprange{#1}}%
- {\mkcomprange[{\mkpageprefix[bookpagination]}]{#1}}%
+ {\mkpageprefix[bookpagination][\mkcomprange]{#1}}%
}
\DeclareFieldFormat{postnote}{%
\iffieldundef{pagination}%
{\mkcomprange{#1}}%
- {\mkcomprange[{\mkpageprefix}]{#1}}%
+ {\mkpageprefix[pagination][\mkcomprange]{#1}}%
}
\DeclareBibliographyOption{nopublisher}[true]{%
@@ -1116,6 +1172,7 @@
}{%
\mkbibquote{#1\isdot}}}
\DeclareFieldFormat[inreference]{title}{\mkbibquote{#1\isdot}}
+\newcommand*{\mkvolroman}[1]{\Rn{#1}}
\DeclareFieldFormat[book,mvbook,bookinbook,inbook,suppbook,%
collection,mvcollection,incollection,suppcollection,%
proceedings,mvproceedings,inproceedings,%
@@ -1123,11 +1180,11 @@ reference,mvreference,inreference]{volume}{%
\IfSubStr{#1}{-}{%
\StrCount{#1}{-}[\blx@ox@dashnum]%
\StrBefore{#1}{-}[\blx@ox@volnum]%
- \expandafter\ifinteger\blx@ox@volnum{\Rn{\blx@ox@volnum}}{\blx@ox@volnum}\bibrangedash
+ \expandafter\ifinteger\blx@ox@volnum{\mkvolroman{\blx@ox@volnum}}{\blx@ox@volnum}\bibrangedash
\StrBehind[\blx@ox@dashnum]{#1}{-}[\blx@ox@volnum]%
- \expandafter\ifinteger\blx@ox@volnum{\Rn{\blx@ox@volnum}}{\blx@ox@volnum}%
+ \expandafter\ifinteger\blx@ox@volnum{\mkvolroman{\blx@ox@volnum}}{\blx@ox@volnum}%
}{%
- \ifinteger{#1}{\Rn{#1}}{#1}}}
+ \ifinteger{#1}{\mkvolroman{#1}}{#1}}}
\newbibmacro*{maintitle+volume}{%
\ifboolexpr{
test {\iffieldundef{maintitle}}
@@ -1162,7 +1219,21 @@ reference,mvreference,inreference]{volume}{%
\PackageError{biblatex-oxref}
{Invalid option 'bookseries=#1'}
{Valid values are 'in' and 'out'.}}}}
+\newbibmacro*{listpair:delim}[3]{%
+ \ifnumgreater{#2}{\@ne}{%
+ \ifnumless{#2}{#3}{%
+ \printdelim{multilistdelim}%
+ }{%
+ \c@liststop#3%
+ \lbx@finallistdelim{#1}}%
+ }{}}
\newcounter{locpubpairs}
+\DeclareListFormat{locpub}{%
+ \usebibmacro{listpair:delim}%
+ {#1}{\value{locpubpairs}}{\value{location}}%
+ #1\isdot
+}
+\newsavebox{\blx@ox@locbox}
\newbibmacro*{edition+publisher+location+date}{%
\printlist{origlocation}%
\iflistundef{origpublisher}%
@@ -1193,19 +1264,8 @@ reference,mvreference,inreference]{volume}{%
test {\ifnumcomp{\value{locpubpairs}}{<}{\value{publisher}}}
}{%
\stepcounter{locpubpairs}%
- \ifnumcomp{\value{locpubpairs}}{>}{1}{%
- \ifnumequal{\value{publisher}}{2}{%
- \setunit*{\addspace\bibstring{and}\addspace}%
- }{%
- \ifnumequal{\value{locpubpairs}}{\value{publisher}}{%
- \setunit*{\addcomma\space\bibstring{and}\addspace}%
- }{%
- \setunit*{\addcomma\space}%
- }%
- }%
- }{}%
- \printlist[][\value{locpubpairs}-\value{locpubpairs}]{location}%
- \setunit*{\addcolon\space}%
+ \printlist[locpub][\value{locpubpairs}-\value{locpubpairs}]{location}%
+ \setunit{\addcolon\space}%
\printlist[][\value{locpubpairs}-\value{locpubpairs}]{publisher}%
}%
\restorebibmacro{list:andothers}%
@@ -2750,7 +2810,11 @@ reference,mvreference,inreference]{volume}{%
\setcounter{blx@tmpcnt}{\value{listcount}}%
\addtocounter{blx@tmpcnt}{1}%
\ifnumequal{\value{blx@tmpcnt}}{\value{listtotal}}{%
- #1\space\bibstring{and}\addspace
+ \ifnumgreater{\value{listtotal}}{2}{%
+ #1\finalandcomma\space\bibstring{and}\addspace
+ }{%
+ #1\space\bibstring{and}\addspace
+ }
}{%
#1\addcomma\space}}}%
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.bbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.bbx
index 5456cee2974..c129b90113d 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.bbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxyear.bbx}
[\Version\space Author-year bibliography style inspired by the Oxford Guide to Style]
@@ -321,11 +321,6 @@
\setunit*{\addspace}%
\usebibmacro{date+extradate}%
}{}{\wlog{WARNING: biblatex-oxref (oxyear) failed to patch author (lasthash)}}%
-\xpatchbibmacro{namepairs}{%
- \printnames[by#1]%
-}{%
- \printnames[#1]%
-}{}{\wlog{WARNING: biblatex-oxref (oxyear) failed to patch namepairs}}
\xpatchbibmacro{author+altauthor}{%
\printnames{author}%
}{%
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.cbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.cbx
index 91413cd2cdf..b25b2d2aace 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.cbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxyear.cbx}
[\Version\space Author-year citation style inspired by the Oxford Guide to Style]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.dbx b/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.dbx
index 9f7891c9312..fdde6d5d8e1 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/oxyear.dbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{oxyear.dbx}
[\Version\space Data model for the Oxref family of styles]
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/polish-oxref.lbx b/Master/texmf-dist/tex/latex/biblatex-oxref/polish-oxref.lbx
new file mode 100644
index 00000000000..d0747e2f058
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/polish-oxref.lbx
@@ -0,0 +1,311 @@
+%%
+%% This is file `polish-oxref.lbx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% oxref.dtx (with options: `lbx,pl')
+%% ----------------------------------------------------------------
+%% biblatex-oxref --- Biblatex styles inspired by the Oxford Guide to Style
+%% Author: Alex Ball
+%% E-mail: a.j.ball@bath.ac.uk
+%% License: Released under the LaTeX Project Public License v1.3c or later
+%% See: http://www.latex-project.org/lppl.txt
+%% ----------------------------------------------------------------
+%%
+\def\Version{2024/08/26 v3.3}
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesFile{polish-oxref.lbx}
+ [\Version\space Polish conventions required by the biblatex-oxref styles]
+\InheritBibliographyExtras{polish}
+\DeclareBibliographyExtras{%
+ \DeclareDelimFormat{revsdnamedelim}{}%
+ \savecommand\makebbx@dateii
+ \def\makebbx@dateii#1#2#3{%
+ \blx@imc@stripzeros{#3}~\lbx@pl@mkbibmonth{#2}%
+ \space
+ #1}%
+ \savecommand\mkvolroman
+ \renewcommand*{\mkvolroman}[1]{\RN{#1}}%
+ \savecommand\blx@ox@compyear
+ \renewcommand*{\blx@ox@compyear}[2]{#2}%
+ \savefieldformat{pages}%
+ \DeclareFieldFormat{pages}{%
+ \iffieldundef{bookpagination}%
+ {\mknormrange{#1}}%
+ {\mkpageprefix[bookpagination][\mknormrange]{#1}}%
+ }%
+ \savefieldformat{postnote}%
+ \DeclareFieldFormat{postnote}{%
+ \iffieldundef{pagination}%
+ {\mknormrange{#1}}%
+ {\mkpageprefix[pagination][\mknormrange]{#1}}%
+ }%
+ \savefieldformat{edition}%
+ \DeclareFieldFormat{edition}{%
+ \ifinteger{#1}
+ {\bibstring{edition}~\mkbibordedition{#1}}
+ {\ifbibstring{#1}{\bibstring{#1}}{#1\isdot}}}%
+}
+\UndeclareBibliographyExtras{%
+ \DeclareDelimFormat{revsdnamedelim}{\addcomma}%
+ \restorecommand\makebbx@dateii
+ \restorecommand\mkvolroman
+ \restorecommand\blx@ox@compyear
+ \restorefieldformat{pages}%
+ \restorefieldformat{postnote}%
+ \restorefieldformat{edition}%
+}
+\DeclareBibliographyStrings{%
+ inherit = {polish},
+ director = {{re\.{z}yser}{re\.{z}\adddot}},
+ directors = {{re\.{z}yserzy}{re\.{z}\adddot}},
+ performer = {{wykonawca}{wyk\adddot}},
+ performers = {{wykonawcy}{wyk\adddot}},
+ reader = {{czytelnik}{czytelnik}},
+ readers = {{czytelnicy}{czytelnicy}},
+ conductor = {{dyrygent}{dyr\adddot}},
+ conductors = {{dyrygenci}{dyr\adddot}},
+ serieseditor = {{redaktor serii}{red\adddotspace serii}},
+ serieseditors = {{redaktor serii}{red\adddotspace serii}},
+ holder = {{w\l a\'{s}ciciel}{w\l a\'{s}ciciel}},
+ holders = {{w\l a\'{s}ciciele}{w\l a\'{s}ciciele}},
+ editorcm = {{redaktor i~kompilator}{red\adddotspace i~kompilator}},
+ editorcms = {{redaktorzy i~kompilatorzy}{red\adddotspace i~kompilatorzy}},
+ byperformer = {{wykonawca}{wyk\adddot}},
+ bydirector = {{re\.{z}yseria}{re\.{z}\adddot}},
+ byreader = {{czyta}{czyta}},
+ byconductor = {{kieruje}{kier\adddot}},
+ byserieseditor = {{redakcja}{red\adddot}},
+ byholder = {{w~posiadaniu}{w~posiadaniu}},
+ byeditorcm = {{redakcja i~opracowanie}{red\adddotspace i~oprac\adddot}},
+ facsimile = {{wydanie faksymile}{wyd\adddotspace faksymile}},
+ revised = {{wydanie poprawione}{wyd\adddotspace popr\adddot}},
+ revisedenlarged = {{wydanie poprawione i~rozszerzone}{wyd\adddotspace popr\addotspace i~rozszerz\adddot}},
+ revisedreprint = {{przedruk poprawiony}{przedr\adddotspace popr\adddot}},
+ suppto = {{dodatek do}{dod\adddotspace do}},
+ equals = {{=}{=}},
+ original = {{oryginalny}{oryg\adddot}},
+ amendedby = {{zmienione przez}{zmien\adddotspace przez}},
+ inpressin = {{z\l o\.{z}one do}{z\l o\.{z}one do}},
+ book = {{ksi\k{e}ga}{ks\adddot}},
+ books = {{ksi\k{e}gi}{ks\adddot}},
+ canto = {{pie\'{s}\'{n}}{pie\'{s}\'{n}}},
+ cantos = {{pie\'{s}ni}{pie\'{s}ni}},
+ stanza = {{zwrotka}{zwr\adddot}},
+ stanzas = {{zwrotki}{zwr\adddot}},
+ act = {{akt}{a\adddot}},
+ acts = {{akty}{aa\adddot}},
+ scene = {{scena}{sc\adddot}},
+ scenes = {{sceny}{sc\adddot}},
+ folio = {{karta}{k\adddot}},
+ folios = {{karty}{kk\adddot}},
+ article = {{artyku\l }{art\adddot}},
+ articles = {{artyku\l y}{art\adddot}},
+ clause = {{klauzula}{klauz\adddot}},
+ clauses = {{klauzule}{klauz\adddot}},
+ regulation = {{rozporz\k{a}dzenie}{rozp\adddot}},
+ regulations = {{rozporz\k{a}dzenia}{rozp\adddot}},
+ rule = {{przepis}{przep\adddot}},
+ rules = {{przepisy}{przep\adddot}},
+ booktotal = {{ksi\k{e}ga}{ks\adddot}},
+ booktotals = {{ksi\k{e}gi}{ks\adddot}},
+ cantototal = {{pie\'{s}\'{n}}{pie\'{s}\'{n}}},
+ cantototals = {{pie\'{s}ni}{pie\'{s}ni}},
+ stanzatotal = {{zwrotka}{zwr\adddot}},
+ stanzatotals = {{zwrotki}{zwr\adddot}},
+ acttotal = {{akt}{a\adddot}},
+ acttotals = {{akty}{aa\adddot}},
+ scenetotal = {{scena}{sc\adddot}},
+ scenetotals = {{sceny}{sc\adddot}},
+ foliototal = {{karta}{k\adddot}},
+ foliototals = {{karty}{kk\adddot}},
+ articletotal = {{artyku\l }{art\adddot}},
+ articletotals = {{artyku\l y}{art\adddot}},
+ clausetotal = {{klauzula}{klauz\adddot}},
+ clausetotals = {{klauzule}{klauz\adddot}},
+ regulationtotal = {{rozporz\k{a}dzenie}{rozp\adddot}},
+ regulationtotals = {{rozporz\k{a}dzenia}{rozp\adddot}},
+ ruletotal = {{przepis}{przep\adddot}},
+ ruletotals = {{przepisy}{przep\adddot}},
+ facebook = {{wpis na Facebooku}{wpis na Facebooku}},
+ tweet = {{wpis na Twitterze}{wpis na Twitterze}},
+ podcast = {{podcast}{podcast}},
+ clip = {{wideo}{wideo}},
+ webcast = {{webcast}{webcast}},
+ poster = {{plakat}{plakat}},
+ nolocation = {{bez miejsca}{b\adddot m\adddot}},
+ modified = {{ostatnio zmodyfikowany}{ostatnio zmodyf\adddot}},
+ recorded = {{nagrane}{nagr\adddot}},
+ uploaded = {{za\l adowane}{za\l ad\adddot}},
+ filed = {{wniesione}{wniesione}},
+ issued = {{wydany}{wyd\adddot}},
+ anon = {{Anonim}{Anon\adddot}},
+ pseudo = {{Pseudo-}{Ps\adddot-}},
+ urldown = {{pobrane}{pobrane}},
+ countryjp = {{Japonia}{JP}},
+ patentjp = {{japo\'{n}ski patent}{jap\adddotspace pat\adddot}},
+ patreqjp = {{japo\'{n}ski wniosek patentowy}{jap\adddotspace wniosek pat\adddot}},
+ 1column = {{jedna kolumna}{1\addnbspace kol\adddot}},
+ 2column = {{dwie kolumny}{2\addnbspace kol\adddot}},
+ inflayer = {{warstwa ni\.{z}sza}{warstwa ni\.{z}sza}},
+ suplayer = {{warstwa wy\.{z}sza}{warstwa wy\.{z}sza}},
+ paper = {{gazeta}{gazeta}},
+ papyrus = {{papirus}{papirus}},
+ parchment = {{pergamin}{pergamin}},
+ eucase = {{sprawa}{sprawa}},
+ eujoinedcases = {{po\l \k{a}czone sprawy}{po\l \k{a}czone sprawy}},
+ commissiondecision = {{decyzja komisji}{decyzja komisji}},
+ application = {{wniosek}{wniosek}},
+ order = {{polecenie}{polecenie}},
+ bill = {{rachunek}{rachunek}},
+ draft = {{projekt}{proj\adddot}},
+ opened = {{przed\l o\.{z}one do podpisu}{przed\l\adddotspace do podp\adddot}},
+ signed = {{podpisane}{podpisane}},
+ adopted = {{przyj\k{e}te}{przyj\k{e}te}},
+ inforce = {{wesz\l o w~\.{z}ycie}{wesz\l o w~\.{z}ycie}},
+ byeditor = {{redakcja}{red\adddot}},
+ bycompiler = {{opracowanie}{oprac\adddot}},
+ byfounder = {{za\l o\.{z}one przez}{za\l o\.{z}\adddotspace przez}},
+ bycontinuator = {{kontynuowane przez}{kont\adddotspace przez}},
+ byredactor = {{redakcja}{red\adddot}},
+ byreviser = {{poprawki}{popr\adddot}},
+ byreviewer = {{recenzja}{rec\adddot}},
+ bycollaborator = {{we wsp\'{o}\l pracy z}{we wsp\'{o}\l pr\adddotspace z}},
+ bytranslator = {{t\l umaczenie}{t\l um\adddot}},
+ bycommentator = {{komentarz}{kom\adddot}},
+ byannotator = {{obja\'{s}nienia}{obja\'{s}n\adddot}},
+ byeditortr = {{redakcja i~t\l umaczenie}%
+ {red\adddotspace i~t\l um\adddot}},
+ byeditorco = {{redakcja i~komentarz}%
+ {red\adddotspace i~kom\adddot}},
+ byeditoran = {{redakcja i~obja\'{s}nienia}%
+ {red\adddotspace i~obja\'{s}n\adddot}},
+ byeditorin = {{redakcja i~wst\k{e}p}%
+ {red\adddotspace i~wst\k{e}p}},
+ byeditorfo = {{redakcja i~przedmowa}%
+ {red\adddotspace i~przedm\adddot}},
+ byeditoraf = {{redakcja i~pos\l owie}%
+ {red\adddotspace i~pos\l \adddot}},
+ byeditortrco = {{redakcja, t\l umaczenie i~komentarz}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace kom\adddot}},
+ byeditortran = {{redakcja, t\l umaczenie i~obja\'{s}nienia}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace obja\'{s}n\adddot}},
+ byeditortrin = {{redakcja, t\l umaczenie, wst\k{e}p}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace wst\k{e}p}},
+ byeditortrfo = {{redakcja, t\l umaczenie, przedmowa}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace przedm\adddot}},
+ byeditortraf = {{redakcja, t\l umaczenie, pos\l \adddot}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace pos\l \adddot}},
+ byeditorcoin = {{redakcja, komentarz, wst\k{e}p}%
+ {red.,\addabbrvspace kom.,\addabbrvspace wst\k{e}p}},
+ byeditorcofo = {{redakcja, komentarz i~przedmowa}%
+ {red.,\addabbrvspace kom.,\addabbrvspace przedm\adddot}},
+ byeditorcoaf = {{redakcja, komentarz, pos\l owie}%
+ {red.,\addabbrvspace kom.,\addabbrvspace pos\l \adddot}},
+ byeditoranin = {{redakcja, obja\'{s}nienia, wst\k{e}p}%
+ {red.,\addabbrvspace obja\'{s}n.,\addabbrvspace wst\k{e}p}},
+ byeditoranfo = {{redakcja, obja\'{s}nienia, przedmowa}%
+ {red.,\addabbrvspace obja\'{s}n.,\addabbrvspace przedm\adddot}},
+ byeditoranaf = {{redakcja, obja\'{s}nienia, pos\l owie}%
+ {red.,\addabbrvspace obja\'{s}n.,\addabbrvspace pos\l \adddot}},
+ byeditortrcoin = {{redakcja, t\l umaczenie, komentarz, wst\k{e}p}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace kom.,\addabbrvspace wst\k{e}p}},
+ byeditortrcofo = {{redakcja, t\l umaczenie, komentarz, przedmowa}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace kom.,\addabbrvspace przedm\adddot}},
+ byeditortrcoaf = {{redakcja, t\l umaczenie, komentarz, pos\l owie}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace kom.,\addabbrvspace pos\l \adddot}},
+ byeditortranin = {{redakcja, t\l umaczenie, obja\'{s}nienia, wst\k{e}p}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace obja\'{s}n.,\addabbrvspace wst\k{e}p}},
+ byeditortranfo = {{redakcja, t\l umaczenie, obja\'{s}nienia, przedmowa}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace obja\'{s}n.,\addabbrvspace przedm\adddot}},
+ byeditortranaf = {{redakcja, t\l umaczenie, obja\'{s}nienia, pos\l owie}%
+ {red.,\addabbrvspace t\l um.,\addabbrvspace obja\'{s}n.,\addabbrvspace pos\l \adddot}},
+ bytranslatorco = {{t\l umaczenie i~komentarz}%
+ {t\l um\adddotspace i~kom\adddot}},
+ bytranslatoran = {{t\l umaczenie i~obja\'{s}nienia}%
+ {t\l um\adddotspace i~obja\'{s}n\adddot}},
+ bytranslatorin = {{t\l umaczenie i~wst\k{e}p}%
+ {t\l um.,\addabbrvspace wst\k{e}p}},
+ bytranslatorfo = {{t\l umaczenie i~przedmowa}%
+ {t\l um.,\addabbrvspace przedm\adddot}},
+ bytranslatoraf = {{t\l umaczenie i~pos\l owie}%
+ {t\l um.,\addabbrvspace pos\l \adddot}},
+ bytranslatorcoin = {{t\l umaczenie, komentarz i~wst\k{e}p}%
+ {t\l um.,\addabbrvspace kom.,\addabbrvspace wst\k{e}p}},
+ bytranslatorcofo = {{t\l umaczenie, komentarz i~przedmowa}%
+ {t\l um.,\addabbrvspace kom.,\addabbrvspace przedm\adddot}},
+ bytranslatorcoaf = {{t\l umaczenie, komentarz i~pos\l owie}%
+ {t\l um.,\addabbrvspace kom.,\addabbrvspace pos\l \adddot}},
+ bytranslatoranin = {{t\l umaczenie, obja\'{s}nienia i~wst\k{e}p}%
+ {t\l um.,\addabbrvspace obja\'{s}n.,\addabbrvspace wst\k{e}p}},
+ bytranslatoranfo = {{t\l umaczenie, obja\'{s}nienia i~przedmowa}%
+ {t\l um.,\addabbrvspace obja\'{s}n.,\addabbrvspace przedm\adddot}},
+ bytranslatoranaf = {{t\l umaczenie, obja\'{s}nienia i~pos\l owie}%
+ {t\l um.,\addabbrvspace obja\'{s}n.,\addabbrvspace pos\l \adddot}},
+ withcommentator = {{komentarz}{komentarz}},
+ withannotator = {{obja\'{s}nienia}{obja\'{s}nienia}},
+ withintroduction = {{wst\k{e}p}{wst\k{e}p}},
+ withforeword = {{przedmowa}{przedmowa}},
+ withafterword = {{pos\l owie}{pos\l owie}},
+ introduction = {{wst\k{e}p}{wst\k{e}p}},
+ newseries = {{nowa seria}{nowa seria}},
+ oldseries = {{dawna seria}{dawna seria}},
+ edition = {{wydanie}{wyd\adddot}},
+ reviewof = {{recenzja}{rec\adddot}},
+ reprintfrom = {{przedruk z}{przedr\adddotspace z}},
+ translationas = {{t\l umaczenie polskie}{t\l um\adddotspace pol\adddotspace}},
+ origpubin = {{pierwodruk w}{pierwodr\adddotspace w}},
+ paragraph = {{ust\k{e}p}{ust\adddot}},
+ paragraphs = {{ust\k{e}py}{ust\adddot}},
+ urlseen = {{dost\k{e}p}{dost\k{e}p}},
+ idem = {{idem}{id\adddot}},
+ idemsm = {{idem}{id\adddot}},
+ idemsf = {{eadem}{ead\adddot}},
+ idemsn = {{idem}{id\adddot}},
+ idempm = {{eidem}{eid\adddot}},
+ idempf = {{eaedem}{eaed\adddot}},
+ idempn = {{eadem}{ead\adddot}},
+ idempp = {{eidem}{eid\adddot}},
+ citedas = {{dalej}{dalej}},
+ thiscite = {{na}{na}},
+ langamerican = {{ameryka\'{n}ski angielski}{amer\adddotspace ang\adddot}},
+ langbasque = {{baskijski}{bask\adddot}},
+ langbrazilian = {{brazylijski portugalski}{braz\adddot port\adddot}},
+ langbulgarian = {{bu\l garski}{bu\l g\adddot}},
+ langcatalan = {{katalo\'{n}ski}{katal\adddot}},
+ langcroatian = {{chorwacki}{chorw\adddot}},
+ langczech = {{czeski}{czeski}},
+ langdanish = {{du\'{n}ski}{du\'{n}\adddot}},
+ langdutch = {{holenderski}{holend\adddot}},
+ langenglish = {{angielski}{ang\adddot}},
+ langestonian = {{esto\'{n}ski}{est\adddot}},
+ langfinnish = {{fi\'{n}ski}{fi\'{n}\adddot}},
+ langfrench = {{francuski}{fr\adddot}},
+ langgalician = {{galicyjski}{galic\adddot}},
+ langgerman = {{niemiecki}{niem\adddot}},
+ langgreek = {{grecki}{gr\adddot}},
+ langhungarian = {{w\k{e}gierski}{w\k{e}g\adddot}},
+ langitalian = {{w\l oski}{w\l \adddot}},
+ langjapanese = {{japo\'{n}ski}{jap\adddot}},
+ langlatin = {{\l aci\'{n}ski}{\l ac\adddot}},
+ langlatvian = {{\l otewski}{\l ot\adddot}},
+ langlithuanian = {{litewski}{lit\adddot}},
+ langmarathi = {{marathi}{mar\adddot}},
+ langnorwegian = {{norweski}{norw\adddot}},
+ langpolish = {{polski}{pol\adddot}},
+ langportuguese = {{portugalski}{port\adddot}},
+ langromanian = {{rumu\'{n}ski}{rum\adddot}},
+ langrussian = {{rosyjski}{ros\adddot}},
+ langserbian = {{serbski}{serb\adddot}},
+ langslovak = {{s\l owacki}{s\l c\adddot}},
+ langslovene = {{s\l owe\'{n}ski}{s\l owe\'{n}\adddot}},
+ langspanish = {{hiszpa\'{n}ski}{hiszp\adddot}},
+ langswedish = {{szwedzki}{szw\adddot}},
+ langturkish = {{turecki}{tur\adddot}},
+ langukrainian = {{ukrai\'{n}ski}{ukr\adddot}},
+}
+%%
+%% Copyright (C) 2016–2023 Alex Ball
+%%
+%% End of file `polish-oxref.lbx'.
diff --git a/Master/texmf-dist/tex/latex/biblatex-oxref/spanish-oxref.lbx b/Master/texmf-dist/tex/latex/biblatex-oxref/spanish-oxref.lbx
index d0f2a9e700f..6bf12a1ba55 100644
--- a/Master/texmf-dist/tex/latex/biblatex-oxref/spanish-oxref.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex-oxref/spanish-oxref.lbx
@@ -13,7 +13,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/11/23 v3.2}
+\def\Version{2024/08/26 v3.3}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesFile{spanish-oxref.lbx}
[\Version\space Spanish conventions required by the biblatex-oxref styles]
@@ -133,11 +133,11 @@
byfounder = {{fundado por}{fund\adddotspace}},
bycontinuator = {{continuado por}{cont\adddotspace}},
bycollaborator = {{colaboraci\'on de}{col\adddotspace de}},
- bytranslator = {{traducido \lbx@lfromlang\ por}{trad\adddotspace \lbx@sfromlang}},
+ bytranslator = {{traducido por}{trad\adddotspace}},
bycommentator = {{comentado por}{com\adddotspace}},
byannotator = {{anotado por}{anot\adddotspace}},
- byeditortr = {{editado y traducido \lbx@lfromlang\ por}%
- {ed\adddotspace y trad\adddotspace \lbx@sfromlang}},
+ byeditortr = {{editado y traducido por}%
+ {ed\adddotspace y trad\adddotspace}},
byeditorco = {{editado y comentado por}%
{ed\adddotspace y com\adddotspace }},
byeditoran = {{edici\'on y notas de}%
@@ -148,16 +148,16 @@
{ed\adddotspace y pr\'ol\adddotspace}},
byeditoraf = {{edici\'on y ep\'ilogo de}%
{ed\adddotspace y ep\'il\adddotspace}},
- byeditortrco = {{editado, traducido \lbx@lfromlang\ y comentado por}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang\ y com\adddotspace}},
- byeditortran = {{edici\'on, traducci\'on \lbx@lfromlang\ y notas de}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang\ y not\adddotspace}},
- byeditortrin = {{edici\'on, traducci\'on \lbx@lfromlang\ e introducci\'on de}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang\ e intr\adddotspace}},
- byeditortrfo = {{edici\'on, traducci\'on \lbx@lfromlang\ y pr\'ologo de}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang\ y pr\'ol\adddotspace}},
- byeditortraf = {{editado, traducido \lbx@lfromlang\ y epilogado}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang\ y ep\'il\adddotspace}},
+ byeditortrco = {{editado, traducido y comentado por}%
+ {ed.,\addabbrvspace trad\adddotspace y com\adddotspace}},
+ byeditortran = {{edici\'on, traducci\'on y notas de}%
+ {ed.,\addabbrvspace trad\adddotspace y not\adddotspace}},
+ byeditortrin = {{edici\'on, traducci\'on e introducci\'on de}%
+ {ed.,\addabbrvspace trad\adddotspace e intr\adddotspace}},
+ byeditortrfo = {{edici\'on, traducci\'on y pr\'ologo de}%
+ {ed.,\addabbrvspace trad\adddotspace y pr\'ol\adddotspace}},
+ byeditortraf = {{editado, traducido y epilogado}%
+ {ed.,\addabbrvspace trad\adddotspace y ep\'il\adddotspace}},
byeditorcoin = {{editado, comentado e introducido}%
{ed.,\addabbrvspace com\adddotspace e intr\adddotspace}},
byeditorcofo = {{edici\'on, comentarios y pr\'ologo de}%
@@ -170,40 +170,40 @@
{ed.,\addabbrvspace anot\adddotspace y pr\'ol\adddotspace}},
byeditoranaf = {{edici\'on, notas y ep\'ilogo de}%
{ed.,\addabbrvspace anot\adddotspace y ep\'il\adddotspace}},
- byeditortrcoin = {{edici\'on, traducci\'on \lbx@lfromlang, comentarios e introducci\'on de}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang, com\adddotspace e intr\adddotspace}},
- byeditortrcofo = {{edici\'on, traducci\'on \lbx@lfromlang, comentarios y pr\'ologo de}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang, com\adddotspace y pr\'ol\adddotspace}},
- byeditortrcoaf = {{edici\'on, traducci\'on \lbx@lfromlang, comentarios y ep\'ilogo de}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang, com\adddotspace y ep\'il\adddotspace}},
- byeditortranin = {{edici\'on, traducci\'on \lbx@lfromlang, notas e introducci\'on de}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang, anot\adddotspace e intr\adddotspace}},
- byeditortranfo = {{edici\'on, traducci\'on \lbx@lfromlang, notas y pr\'ologo de}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang, anot\adddotspace y pr\'ol\adddotspace}},
- byeditortranaf = {{edici\'on, traducci\'on \lbx@lfromlang, notas y ep\'ilogo de}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@sfromlang, anot\adddotspace y ep\'il\adddotspace}},
- bytranslatorco = {{traducci\'on \lbx@lfromlang\ y comentarios de}%
- {trad\adddotspace \lbx@sfromlang\ y com\adddotspace}},
- bytranslatoran = {{traducci\'on \lbx@lfromlang\ y notas de}%
- {trad\adddotspace \lbx@sfromlang\ y not\adddotspace}},
- bytranslatorin = {{traducci\'on \lbx@lfromlang\ e introducci\'on de}%
- {trad\adddotspace \lbx@sfromlang\ e introd\adddotspace}},
- bytranslatorfo = {{traducci\'on \lbx@lfromlang\ y pr\'ologo de}%
- {trad\adddotspace \lbx@sfromlang\ y pr\'ol\adddotspace}},
- bytranslatoraf = {{traducci\'on \lbx@lfromlang\ y ep\'ilogo de}%
- {trad\adddotspace \lbx@sfromlang\ y ep\'il\adddotspace}},
- bytranslatorcoin = {{traducci\'on \lbx@lfromlang, comentarios e introducci\'on de}%
- {trad\adddotspace \lbx@sfromlang, com\adddotspace e intr\adddotspace}},
- bytranslatorcofo = {{traducci\'on \lbx@lfromlang, comentarios y pr\'ologo de}%
- {trad\adddotspace \lbx@sfromlang, com\adddotspace y pr\'ol\adddotspace}},
- bytranslatorcoaf = {{traducci\'on \lbx@lfromlang, comentarios y ep\'ilogo de}%
- {trad\adddotspace \lbx@sfromlang, com\adddotspace y ep\'il\adddotspace}},
- bytranslatoranin = {{traducci\'on \lbx@lfromlang, notas e introducci\'on de}%
- {trad\adddotspace \lbx@sfromlang, anot\adddotspace e intr\adddotspace}},
- bytranslatoranfo = {{traducci\'on \lbx@lfromlang, notas y pr\'ologo}%
- {trad\adddotspace \lbx@sfromlang, anot\adddotspace y pr\'ol\adddotspace}},
- bytranslatoranaf = {{traducci\'on \lbx@lfromlang, notas y ep\'ilogo}%
- {trad\adddotspace \lbx@sfromlang, anot\adddotspace y ep\'il\adddotspace}},
+ byeditortrcoin = {{edici\'on, traducci\'on, comentarios e introducci\'on de}%
+ {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace e intr\adddotspace}},
+ byeditortrcofo = {{edici\'on, traducci\'on, comentarios y pr\'ologo de}%
+ {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace y pr\'ol\adddotspace}},
+ byeditortrcoaf = {{edici\'on, traducci\'on, comentarios y ep\'ilogo de}%
+ {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace y ep\'il\adddotspace}},
+ byeditortranin = {{edici\'on, traducci\'on, notas e introducci\'on de}%
+ {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace e intr\adddotspace}},
+ byeditortranfo = {{edici\'on, traducci\'on, notas y pr\'ologo de}%
+ {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace y pr\'ol\adddotspace}},
+ byeditortranaf = {{edici\'on, traducci\'on, notas y ep\'ilogo de}%
+ {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace y ep\'il\adddotspace}},
+ bytranslatorco = {{traducci\'on y comentarios de}%
+ {trad\adddotspace y com\adddotspace}},
+ bytranslatoran = {{traducci\'on y notas de}%
+ {trad\adddotspace y not\adddotspace}},
+ bytranslatorin = {{traducci\'on e introducci\'on de}%
+ {trad\adddotspace e introd\adddotspace}},
+ bytranslatorfo = {{traducci\'on y pr\'ologo de}%
+ {trad\adddotspace y pr\'ol\adddotspace}},
+ bytranslatoraf = {{traducci\'on y ep\'ilogo de}%
+ {trad\adddotspace y ep\'il\adddotspace}},
+ bytranslatorcoin = {{traducci\'on, comentarios e introducci\'on de}%
+ {trad.,\addabbrvspace com\adddotspace e intr\adddotspace}},
+ bytranslatorcofo = {{traducci\'on, comentarios y pr\'ologo de}%
+ {trad.,\addabbrvspace com\adddotspace y pr\'ol\adddotspace}},
+ bytranslatorcoaf = {{traducci\'on, comentarios y ep\'ilogo de}%
+ {trad.,\addabbrvspace com\adddotspace y ep\'il\adddotspace}},
+ bytranslatoranin = {{traducci\'on, notas e introducci\'on de}%
+ {trad.,\addabbrvspace anot\adddotspace e intr\adddotspace}},
+ bytranslatoranfo = {{traducci\'on, notas y pr\'ologo}%
+ {trad.,\addabbrvspace anot\adddotspace y pr\'ol\adddotspace}},
+ bytranslatoranaf = {{traducci\'on, notas y ep\'ilogo}%
+ {trad.,\addabbrvspace anot\adddotspace y ep\'il\adddotspace}},
withcommentator = {{con comentario de}{con comentario de}},
withannotator = {{con notas de}{con notas de}},
withintroduction = {{con introduci\'on de}{con introduci\'on de}},
@@ -217,38 +217,50 @@
translationas = {{traducido espa\~nol como}{trad\adddotspace espa\~nol como}},
origpubin = {{publicado originalmente en}{pub\adddot orig\adddotspace}},
urlseen = {{accedido}{accedido}},
+ idem = {{idem}{id\adddot}},
+ idemsm = {{idem}{id\adddot}},
+ idemsf = {{eadem}{ead\adddot}},
+ idemsn = {{idem}{id\adddot}},
+ idempm = {{eidem}{eid\adddot}},
+ idempf = {{eaedem}{eaed\adddot}},
+ idempn = {{eadem}{ead\adddot}},
+ idempp = {{eidem}{eid\adddot}},
citedas = {{en adelante}{en adelante}},
thiscite = {{en}{en}},
- langamerican = {{ingl\'es americano}{ing\adddotspace amer\adddotspace}},
- langbrazilian = {{brasile\~no}{por\adddotspace bras\adddotspace}},
- langbulgarian = {{b\'ulgaro}{bul\adddotspace}},
- langcatalan = {{catal\'an}{cat\adddotspace}},
- langcroatian = {{croata}{hrv\adddotspace}},
- langczech = {{checo}{ces\adddotspace}},
- langdanish = {{dan\'es}{dan\adddotspace}},
- langdutch = {{neerland\'es}{nld\adddotspace}},
- langenglish = {{ingl\'es}{ing\adddotspace}},
- langestonian = {{estonio}{est\adddotspace}},
- langfinnish = {{fin\'es}{fin\adddotspace}},
- langfrench = {{franc\'es}{fra\adddotspace}},
- langgalician = {{gallego}{glg\adddotspace}},
- langgerman = {{alem\'an}{ale\adddotspace}},
- langgreek = {{griego}{gr\adddotspace}},
- langhungarian = {{h\'ungaro}{hun\adddotspace}},
- langitalian = {{italiano}{ita\adddotspace}},
- langjapanese = {{japon\'es}{jap\adddotspace}},
- langlatin = {{lat\'in}{lat\adddotspace}},
- langlatvian = {{lituano}{lit\adddotspace}},
- langnorwegian = {{noruego}{nor\adddotspace}},
- langpolish = {{polaco}{pol\adddotspace}},
- langportuguese = {{portugu\'es}{port\adddotspace}},
- langrussian = {{ruso}{rus\adddotspace}},
- langserbian = {{serbio}{srp\adddotspace}},
- langslovak = {{eslovaco}{slk\adddotspace}},
- langslovene = {{esloveno}{slv\adddotspace}},
- langspanish = {{espa\~nol}{esp\adddotspace}},
+ langamerican = {{ingl\'es americano}{ing\adddotspace amer\adddot}},
+ langbasque = {{vasco}{vasc\adddot}},
+ langbrazilian = {{portugu\'es brasile\~no}{por\adddotspace bras\adddot}},
+ langbulgarian = {{b\'ulgaro}{bul\adddot}},
+ langcatalan = {{catal\'an}{cat\adddot}},
+ langcroatian = {{croata}{hrv\adddot}},
+ langczech = {{checo}{ces\adddot}},
+ langdanish = {{dan\'es}{dan\adddot}},
+ langdutch = {{neerland\'es}{nld\adddot}},
+ langenglish = {{ingl\'es}{ing\adddot}},
+ langestonian = {{estonio}{est\adddot}},
+ langfinnish = {{fin\'es}{fin\adddot}},
+ langfrench = {{franc\'es}{fra\adddot}},
+ langgalician = {{gallego}{glg\adddot}},
+ langgerman = {{alem\'an}{ale\adddot}},
+ langgreek = {{griego}{gr\adddot}},
+ langhungarian = {{h\'ungaro}{hun\adddot}},
+ langitalian = {{italiano}{ita\adddot}},
+ langjapanese = {{japon\'es}{jap\adddot}},
+ langlatin = {{lat\'in}{lat\adddot}},
+ langlatvian = {{let\'on}{let\adddot}},
+ langlithuanian = {{lituano}{lit\adddot}},
+ langmarathi = {{marathi}{mar\adddot}},
+ langnorwegian = {{noruego}{nor\adddot}},
+ langpolish = {{polaco}{pol\adddot}},
+ langportuguese = {{portugu\'es}{port\adddot}},
+ langrussian = {{ruso}{rus\adddot}},
+ langserbian = {{serbio}{srp\adddot}},
+ langslovak = {{eslovaco}{slk\adddot}},
+ langslovene = {{esloveno}{slv\adddot}},
+ langspanish = {{espa\~nol}{esp\adddot}},
langswedish = {{sueco}{sueco}},
- langukrainian = {{ucraniano}{ucr\adddotspace}},
+ langturkish = {{turco}{turco}},
+ langukrainian = {{ucraniano}{ucr\adddot}},
}
%%
%% Copyright (C) 2016–2023 Alex Ball
diff --git a/Master/texmf-dist/tex/latex/biblatex-phys/phys.bbx b/Master/texmf-dist/tex/latex/biblatex-phys/phys.bbx
index 442f4feae5c..336f90e5474 100644
--- a/Master/texmf-dist/tex/latex/biblatex-phys/phys.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-phys/phys.bbx
@@ -2,13 +2,13 @@
%% biblatex-phys --- A biblatex implementation of the AIP and APS
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% 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{phys.bbx}[2019/12/03 v1.1b biblatex bibliography style]
+\ProvidesFile{phys.bbx}[2024/07/26 v1.1c biblatex bibliography style]
% Load the standard style to avoid copy-pasting unnecessary material
\RequireBibliographyStyle{numeric-comp}
@@ -464,14 +464,15 @@
\printfield{pages}%
\iffieldundef{pages}
{%
- \printfield{doi}%
- \clearfield{doi}%
- }%
- {%
- \iftoggle{bbx:doi}
- {}
- {\clearfield{doi}}%
- }%
+ \iffieldundef{eid}
+ {%
+ \iftoggle{bbx:doi}
+ {}
+ {\printfield{doi}}%
+ }
+ {}%
+ }
+ {}%
}
\newbibmacro*{related:translatedas}[1]{%
@@ -495,8 +496,8 @@
%%
-%% Copyright (C) 2012-2014,2016,2018,2019 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2012-2014,2016,2018-2020,2023,2024 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
diff --git a/Master/texmf-dist/tex/latex/biblatex-phys/phys.cbx b/Master/texmf-dist/tex/latex/biblatex-phys/phys.cbx
index 7758bc0a2b5..4452bd71133 100644
--- a/Master/texmf-dist/tex/latex/biblatex-phys/phys.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-phys/phys.cbx
@@ -2,13 +2,13 @@
%% biblatex-phys --- A biblatex implementation of the AIP and APS
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% 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{phys.cbx}[2019/12/03 v1.1b biblatex citation style]
+\ProvidesFile{phys.cbx}[2024/07/26 v1.1c biblatex citation style]
\RequireCitationStyle{numeric-comp}
@@ -20,8 +20,8 @@
}
%%
-%% Copyright (C) 2012-2014,2016,2018,2019 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2012-2014,2016,2018,2019,2024 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
diff --git a/Master/texmf-dist/tex/latex/biblatex-phys/phys.dbx b/Master/texmf-dist/tex/latex/biblatex-phys/phys.dbx
index c47ca1e2d93..388e7ee4355 100644
--- a/Master/texmf-dist/tex/latex/biblatex-phys/phys.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-phys/phys.dbx
@@ -2,19 +2,19 @@
%% biblatex-phys --- A biblatex implementation of the AIP and APS
%% bibliography style
%% Maintained by Joseph Wright
-%% E-mail: joseph.wright@morningstar2.co.uk
+%% 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{phys.dbx}[2019/12/03 v1.1b biblatex database model extension]
+\ProvidesFile{phys.dbx}[2024/07/26 v1.1c biblatex database model extension]
\DeclareDatamodelFields[type=field, datatype=literal]{collaboration}
%%
-%% Copyright (C) 2012-2014,2016,2018,2019 by
-%% Joseph Wright <joseph.wright@morningstar2.co.uk>
+%% Copyright (C) 2012-2014,2016,2018,2019,2024 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
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/UKenglish-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/UKenglish-publist.lbx
new file mode 100644
index 00000000000..0b5cce13f51
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/UKenglish-publist.lbx
@@ -0,0 +1,37 @@
+% UKenglish-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{UKenglish-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist UK English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{british}
+\InheritBibliographyExtras{british}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/USenglish-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/USenglish-publist.lbx
new file mode 100644
index 00000000000..cc6526761d5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/USenglish-publist.lbx
@@ -0,0 +1,37 @@
+% USenglish-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{USenglish-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist US English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{english}
+\InheritBibliographyExtras{english}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/american-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/american-publist.lbx
new file mode 100644
index 00000000000..5476f022ab0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/american-publist.lbx
@@ -0,0 +1,37 @@
+% american-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{american-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist US English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{english}
+\InheritBibliographyExtras{english}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/australian-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/australian-publist.lbx
new file mode 100644
index 00000000000..0df359aa827
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/australian-publist.lbx
@@ -0,0 +1,37 @@
+% australian-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{australian-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist AU English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{british}
+\InheritBibliographyExtras{british}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/austrian-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/austrian-publist.lbx
new file mode 100644
index 00000000000..0a82a48b773
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/austrian-publist.lbx
@@ -0,0 +1,58 @@
+% austrian-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{austrian-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist Austrian localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{austrian}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {austrian},
+ peerreview:pp = {{Post-Publication-Begutachtung}{Post-Pub\adddot-Beg\adddot}},
+ with = {{mit}{mit}},
+ citations = {{Zitationen}{Zit\adddot}},
+ impactfactor = {{Impactfaktor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (gr\"un)}{OA (gr\"un)}},
+ peerreview:sb = {{Blindbegutachtung}{Blindbeg\adddot}},
+ peerreview:db = {{Doppelblindbegutachtung}{Doppelblindbeg\adddot}},
+ peerreview:op = {{Offene Begutachtung}{Offene Beg\adddot}},
+ peerreview:co = {{Kollaborative Begutachtung}{Kollab\adddotespace Beg\adddot}},
+ peerreview:cc = {{Cascading-Begutachtung}{Cascading-Beg\adddot}},
+ peerreview:tp = {{Begutachtung durch Dritte}{Beg\adddotspace durch Dritte}},
+ peerreview:pp = {{Post-Publication-Begutachtung}{Post-Pub\adddot-Beg\adddot}},
+ peerreview:no = {{keine Begutachtung}{keine Beg\adddot}},
+ annot:main = {{Hauptautor}{Hauptaut\adddot}},
+ annot:corresponding = {{Korrespondenzautor}{Korr.-aut\adddot}}
+}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/british-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/british-publist.lbx
new file mode 100644
index 00000000000..b1dbaea5be3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/british-publist.lbx
@@ -0,0 +1,58 @@
+% british-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{british-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist UK English localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{british}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {british},
+ parttranslationof = {{partial translation of}{part\adddotspace trans\adddotspace of}},
+ with = {{with}{with}},
+ citations = {{citations}{cit\adddot}},
+ impactfactor = {{impact factor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (green)}{OA (green)}},
+ peerreview:sb = {{single blind peer review}{single blind peer rev\adddot}},
+ peerreview:db = {{double blind peer review}{double blind peer rev\adddot}},
+ peerreview:op = {{open peer review}{open peer rev\adddot}},
+ peerreview:co = {{collaborative peer review}{collab\adddotspace peer rev\adddot}},
+ peerreview:cc = {{cascading peer review}{casc\adddotspace peer rev\adddot}},
+ peerreview:tp = {{third-party peer review}{3rd-party peer rev\adddot}},
+ peerreview:pp = {{post-publication peer review}{post-pub\adddotspace peer rev\adddot}},
+ peerreview:no = {{no peer review}{no peer rev\adddot}},
+ annot:main = {{main author}{main auth\adddot}},
+ annot:corresponding = {{corresponding author}{corr\adddotspace auth\adddot}}
+}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/canadian-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/canadian-publist.lbx
new file mode 100644
index 00000000000..288c6941558
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/canadian-publist.lbx
@@ -0,0 +1,37 @@
+% canadian-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{canadian-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist CDN English localisation (JSP)]
+
+% Inherit english
+\InheritBibliographyStrings{english}
+\InheritBibliographyExtras{english}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/english-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/english-publist.lbx
new file mode 100644
index 00000000000..a9dc25db89f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/english-publist.lbx
@@ -0,0 +1,58 @@
+% english-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{english-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist English localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{english}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {english},
+ parttranslationof = {{partial translation of}{part\adddotspace trans\adddotspace of}},
+ with = {{with}{with}},
+ citations = {{citations}{cit\adddot}},
+ impactfactor = {{impact factor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (green)}{OA (green)}},
+ peerreview:sb = {{single blind peer review}{single blind peer rev\adddot}},
+ peerreview:db = {{double blind peer review}{double blind peer rev\adddot}},
+ peerreview:op = {{open peer review}{open peer rev\adddot}},
+ peerreview:co = {{collaborative peer review}{collab\adddotspace peer rev\adddot}},
+ peerreview:cc = {{cascading peer review}{casc\adddotspace peer rev\adddot}},
+ peerreview:tp = {{third-party peer review}{3rd-party peer rev\adddot}},
+ peerreview:pp = {{post-publication peer review}{post-pub\adddotspace peer rev\adddot}},
+ peerreview:no = {{no peer review}{no peer rev\adddot}},
+ annot:main = {{main author}{main auth\adddot}},
+ annot:corresponding = {{corresponding author}{corr\adddotspace auth\adddot}}
+}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/french-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/french-publist.lbx
new file mode 100644
index 00000000000..e2f982b03c6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/french-publist.lbx
@@ -0,0 +1,58 @@
+% french-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{french-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist French localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{french}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {french},
+ parttranslationof = {{traduction partielle de}{trad\adddotspace part\adddotspace de}},
+ with = {{avec}{avec}},
+ citations = {{citations}{cit\adddot}},
+ impactfactor = {{facteur d'impact}{FI}},
+ openaccess:true = {{libre acc\`es}{libre acc\`es}},
+ openaccess:gold = {{libre acc\`es (dorée)}{libre acc\`es (dorée)}},
+ openaccess:green = {{libre acc\`es (verte)}{libre acc\`es (verte)}},
+ peerreview:sb = {{\'{e}valuation par des pairs anonymis\'{e}s}{\'{e}val\adddotspace par des pairs anon\adddot}},
+ peerreview:db = {{\'{e}valuation par les pairs en double aveugle}{\'{e}val\adddotspace par les pairs en double aveugle}},
+ peerreview:op = {{\'{e}valuation par les pairs ouverte}{\'{e}val\adddotspace par les pairs ouverte}},
+ peerreview:co = {{\'{e}valuation par les pairs collaborative}{\'{e}val\adddotspace par les pairs collab\adddot}},
+ peerreview:cc = {{\'{e}valuation par les pairs en cascade}{\'{e}val\adddotspace par les pairs en cascade}},
+ peerreview:tp = {{\'{e}valuation par des pairs ext\'{e}rieurs}{\'{e}val\adddotspace par des pairs ext\adddot}},
+ peerreview:pp = {{\'{e}valuation par les pairs apr\`{e}s publication}{\'{e}val\adddotspace par les pairs apr\`{e}s pub\adddot}},
+ peerreview:no = {{pas d'\'{e}valuation par les pairs}{pas d'\'{e}val\adddotspace par les pairs}},
+ annot:main = {{auteur principale}{aut\adddotspace princ\adddot}},
+ annot:corresponding = {{auteur correspondant}{aut\adddotspace corr\adddot}}
+}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/german-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/german-publist.lbx
new file mode 100644
index 00000000000..e67d8d44b10
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/german-publist.lbx
@@ -0,0 +1,58 @@
+% german-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{german-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist German localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{german}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {german},
+ parttranslationof = {{Teil\"ubersetzung von}{Teil\"ubers\adddotspace von}},
+ with = {{mit}{mit}},
+ citations = {{Zitationen}{Zit\adddot}},
+ impactfactor = {{Impactfaktor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (gr\"un)}{OA (gr\"un)}},
+ peerreview:sb = {{Blindbegutachtung}{Blindbeg\adddot}},
+ peerreview:db = {{Doppelblindbegutachtung}{Doppelblindbeg\adddot}},
+ peerreview:op = {{Offene Begutachtung}{Offene Beg\adddot}},
+ peerreview:co = {{Kollaborative Begutachtung}{Kollab\adddotespace Beg\adddot}},
+ peerreview:cc = {{Cascading-Begutachtung}{Cascading-Beg\adddot}},
+ peerreview:tp = {{Begutachtung durch Dritte}{Beg\adddotspace durch Dritte}},
+ peerreview:pp = {{Post-Publication-Begutachtung}{Post-Pub\adddot-Beg\adddot}},
+ peerreview:no = {{keine Begutachtung}{keine Beg\adddot}},
+ annot:main = {{Hauptautor}{Hauptaut\adddot}},
+ annot:corresponding = {{Korrespondenzautor}{Korr.-aut\adddot}}
+}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/naustrian-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/naustrian-publist.lbx
new file mode 100644
index 00000000000..3b202fe4594
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/naustrian-publist.lbx
@@ -0,0 +1,37 @@
+% naustrian-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{naustrian-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist Austrian localisation (JSP)]
+
+% Inherit austrian
+\InheritBibliographyStrings{austrian}
+\InheritBibliographyExtras{austrian}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/newzealand-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/newzealand-publist.lbx
new file mode 100644
index 00000000000..504410f851f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/newzealand-publist.lbx
@@ -0,0 +1,58 @@
+% newzealand-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{newzealand-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist NZ English localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{newzealand}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {newzealand},
+ parttranslationof = {{partial translation of}{part\adddotspace trans\adddotspace of}},
+ with = {{with}{with}},
+ citations = {{citations}{cit\adddot}},
+ impactfactor = {{impact factor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (green)}{OA (green)}},
+ peerreview:sb = {{single blind peer review}{single blind peer rev\adddot}},
+ peerreview:db = {{double blind peer review}{double blind peer rev\adddot}},
+ peerreview:op = {{open peer review}{open peer rev\adddot}},
+ peerreview:co = {{collaborative peer review}{collab\adddotspace peer rev\adddot}},
+ peerreview:cc = {{cascading peer review}{casc\adddotspace peer rev\adddot}},
+ peerreview:tp = {{third-party peer review}{3rd-party peer rev\adddot}},
+ peerreview:pp = {{post-publication peer review}{post-pub\adddotspace peer rev\adddot}},
+ peerreview:no = {{no peer review}{no peer rev\adddot}},
+ annot:main = {{main author}{main auth\adddot}},
+ annot:corresponding = {{corresponding author}{corr\adddotspace auth\adddot}}
+}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/ngerman-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/ngerman-publist.lbx
new file mode 100644
index 00000000000..185cbe903a6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/ngerman-publist.lbx
@@ -0,0 +1,37 @@
+% ngerman-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{ngerman-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist German localisation (JSP)]
+
+% Inherit german
+\InheritBibliographyStrings{german}
+\InheritBibliographyExtras{german}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/nswissgerman-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/nswissgerman-publist.lbx
new file mode 100644
index 00000000000..a2f1813b38f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/nswissgerman-publist.lbx
@@ -0,0 +1,37 @@
+% nswissgerman-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{nswissgerman-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist Swiss German localisation (JSP)]
+
+% Inherit swissgerman
+\InheritBibliographyStrings{swissgerman}
+\InheritBibliographyExtras{swissgerman}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/lbx/swissgerman-publist.lbx b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/swissgerman-publist.lbx
new file mode 100644
index 00000000000..9bc6f051187
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/lbx/swissgerman-publist.lbx
@@ -0,0 +1,58 @@
+% swissgerman-publist.lbx, extra localizations for biblatex-publist
+%
+% 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 "maintained".
+%
+% This Current Maintainer of this work is Jürgen Spitzmüller.
+%
+% This work consists of the file publist.bbx
+%
+%
+% This file adds some additional localizations that are used by
+% the biblatex-publist bibliography style
+%
+% Please send suggestions and bug reports to
+% https://github.com/jspitz/biblatex-publist
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
+
+\ProvidesFile{swissgerman-publist.lbx}[\bpl@rdate\space v.\bpl@version\space
+ biblatex-publist Swiss German localisation (JSP)]
+
+% Inherit general localization
+\InheritBibliographyExtras{swissgerman}
+
+% Localizations
+\DeclareBibliographyStrings{%
+ inherit = {swissgerman},
+ parttranslationof = {{Teil\"ubersetzung von}{Teil\"ubers\adddotspace von}},
+ with = {{mit}{mit}},
+ citations = {{Zitationen}{Zit\adddot}},
+ impactfactor = {{Impactfaktor}{JIF}},
+ openaccess:true = {{OpenAccess}{OA}},
+ openaccess:gold = {{OpenAccess (gold)}{OA (gold)}},
+ openaccess:green = {{OpenAccess (gr\"un)}{OA (gr\"un)}},
+ peerreview:sb = {{Blindbegutachtung}{Blindbeg\adddot}},
+ peerreview:db = {{Doppelblindbegutachtung}{Doppelblindbeg\adddot}},
+ peerreview:op = {{Offene Begutachtung}{Offene Beg\adddot}},
+ peerreview:co = {{Kollaborative Begutachtung}{Kollab\adddotespace Beg\adddot}},
+ peerreview:cc = {{Cascading-Begutachtung}{Cascading-Beg\adddot}},
+ peerreview:tp = {{Begutachtung durch Dritte}{Beg\adddotspace durch Dritte}},
+ peerreview:pp = {{Post-Publication-Begutachtung}{Post-Pub\adddot-Beg\adddot}},
+ peerreview:no = {{keine Begutachtung}{keine Beg\adddot}},
+ annot:main = {{Hauptautor}{Hauptaut\adddot}},
+ annot:corresponding = {{Korrespondenzautor}{Korr.-aut\adddot}}
+}
+
+\endinput
+
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx b/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx
index 074acd53943..d3f31a7a03c 100644
--- a/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx
@@ -25,8 +25,8 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{2.10}
-\def\bpl@rdate{2024/06/17}
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
\ProvidesFile{publist.bbx}[\bpl@rdate\space v.\bpl@version\space
biblatex bibliography style (JSP)]
@@ -61,13 +61,14 @@
\newtoggle{bpl@linktitleissn}
\newtoggle{bpl@linktitleurl}
\newtoggle{bpl@linktitledoi}
+\newtoggle{bpl@citinfo}
\newtoggle{bpl@jifinfo}
\newtoggle{bpl@prinfo}
\toggletrue{bpl@prinfo}
\newtoggle{bpl@oainfo}
\newtoggle{bpl@oainfosimple}
\newif\if@bpl@reversenum\@bpl@reversenumfalse
-
+\def\bpl@annots{}
% Valid options
%
@@ -188,6 +189,9 @@
},
plnumbering.default:n = { global },
plnumbering.usage:n = preamble,
+ % annotations=<csv>
+ % Store author name prefix
+ annotations.tl_set:N = \bpl@annots,
% linktitles=<all|url|doi|isbn|issn|none>
linktitles .multichoice:,
% Link all titles
@@ -233,6 +237,18 @@
\toggletrue{bpl@linktitle}
},
linktitles.default:n = { all },
+ % citinfo=<true|false>
+ % Information about citation numbers
+ citinfo.code:n =
+ {
+ \str_if_eq:nnTF { #1 } { true }
+ {
+ \toggletrue{bpl@citinfo}
+ }{
+ \togglefalse{bpl@citinfo}
+ }
+ },
+ citinfo.default:n = { true },
% jifinfo=<true|false>
% Impact factor information
jifinfo.code:n =
@@ -428,6 +444,7 @@
\DeclareBibliographyOption{plauthorhandling}[omit]{\ExecutePublistOptions{plauthorhandling=#1}}
\DeclareBibliographyOption{nameorder}[family-given]{\ExecutePublistOptions{nameorder=#1}}
\DeclareBibliographyOption{plsorting}[ydt]{\ExecutePublistOptions{plsorting=#1}}
+\DeclareBibliographyOption{annotations}{\ExecutePublistOptions{annotations={#1}}}
\DeclareBibliographyOption{plnumbering}[global]{\ExecutePublistOptions{plnumbering=#1}}
\DeclareBibliographyOption{marginyear}[true]{\ExecutePublistOptions{marginyear=#1}}
@@ -437,6 +454,7 @@
\DeclareBibliographyOption{jifinfo}[true]{\ExecutePublistOptions{jifinfo=#1}}
\DeclareBibliographyOption{oainfo}[simple]{\ExecutePublistOptions{oainfo=#1}}
\DeclareBibliographyOption{prinfo}[true]{\ExecutePublistOptions{prinfo=#1}}
+\DeclareBibliographyOption{citinfo}[true]{\ExecutePublistOptions{citinfo=#1}}
\DeclareBibliographyOption{linktitles}[all]{\ExecutePublistOptions{linktitles={#1}}}% Extra braces needed (multichoice)
@@ -552,16 +570,31 @@
{}{\PackageWarning{biblatex-publist}{Patching refsection failed!}}
}{}
-\newcommand*\GetSectionCount[1][\empty]{%
- \edef\bpl@secno{#1}%
- \ifx\bpl@secno\empty%
- \csnumdef{bpltmprefsection}{\c@refsection}%
- \csuse{bpl@secitems:\bpltmprefsection}%
- \else%
- \csuse{bpl@secitems:#1}%
- \fi%
+% Section count. We use l3 here to split the argument and do calculations
+\ExplSyntaxOn
+
+\int_new:N \l_bpl_sec_cnt_int
+
+\NewDocumentCommand \GetSectionCount { >{\SplitList{,}} o }
+{
+ \IfNoValueTF{#1}{%
+ \csnumdef{bpltmprefsection}{\c@refsection}
+ \ifcsdef{bpl@secitems:\bpltmprefsection}{\csuse{bpl@secitems:\bpltmprefsection}}{}%
+ }{
+ \int_zero:N \l_bpl_sec_cnt_int
+ \ProcessList{#1}{\__bpl_add_section_count}
+ \int_use:N \l_bpl_sec_cnt_int
+ }
}
+\cs_new:Npn \__bpl_add_section_count #1
+{
+ \cs_if_exist:cT {bpl@secitems:#1}
+ { \int_add:Nn \l_bpl_sec_cnt_int { \use:c{bpl@secitems:#1} } }
+}
+
+\ExplSyntaxOff
+
\newcommand*\GetTotalCount{%
\csuse{bpl@items}%
}
@@ -897,7 +930,15 @@
\newrobustcmd{\mkbibdesc}[1]{%
% Print labelnumber as actual number, plus item total
- \number\numexpr\csuse{bpl@itemtotal}+#1+\csuse{bpl@shift@itemtotal}\relax%
+ \edef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}+#1+\csuse{bpl@shift@itemtotal}\relax}%
+ \bpl@current@item@no%
+ % Store number in pbx file
+ \if@filesw%
+ \protected@write\bpl@bpxfile{}{%
+ \csedef{bpl@itemnumber:\thefield{entrykey}}{\bpl@current@item@no}%
+ \csedef{bpl@itemsec:\thefield{entrykey}}{\therefsection}%
+ }%
+ \fi%
}%
% Way to manually shift the numbering
@@ -963,23 +1004,37 @@
% Print the labelnumber as the total number of entries in the
% current refsection, minus the actual labelnumber, plus one
\ifbool{plnumgroup}{%
- \number\numexpr\csuse{bpl@itemtotal}-#1+1\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}-#1+1\relax}%
+ \bpl@current@item@no%
}{%
\ifcsdef{bpl@secitems:\therefsection}{%
- \number\numexpr\csuse{bpl@secitems:\therefsection}-#1+1%
- +\csuse{bpl@shift@itemtotal}\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@secitems:\therefsection}-#1+1%
+ +\csuse{bpl@shift@itemtotal}\relax}%
+ \bpl@current@item@no%
}{%
- \number\numexpr\csuse{bpl@itemtotal}-#1+1\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}-#1+1\relax}%
+ \bpl@current@item@no%
}%
}%
}{%
% Use decreasing counter
\ifcsdef{bpl@items:\theprevrefsection}{%
- \number\numexpr\csuse{bpl@itemtotal}-#1+1-\csuse{bpl@items:\theprevrefsection}\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}-#1+1%
+ -\csuse{bpl@items:\theprevrefsection}\relax}%
+ \bpl@current@item@no%
}{%
- \number\numexpr\csuse{bpl@itemtotal}-#1+1\relax%
+ \xdef\bpl@current@item@no{\number\numexpr\csuse{bpl@itemtotal}-#1+1\relax}%
+ \bpl@current@item@no%
}%
}%
+ % Store number in pbx file
+ \if@filesw%
+ \protected@write\bpl@bpxfile{}{%
+ \csedef{bpl@itemnumber:\thefield{entrykey}}{\bpl@current@item@no}%
+ \csedef{bpl@itemsec:\thefield{entrykey}}{\therefsection}%
+ \csedef{bpl@itemtotal}{\csuse{bpl@itemtotal}}%
+ }%
+ \fi%
}%
\renewrobustcmd{\mkbibsecstart}[1]{%
\setcounter{prevrefsection}{\therefsection}%
@@ -1014,6 +1069,64 @@
\fi
}%
+%
+% Data annotation
+%
+
+\newcommand*\mkbplannot[1]{\textsuperscript{#1}}
+
+% Symbol helpers
+\ExplSyntaxOn
+ \clist_new:N \l_bpl_annot_symbols
+ \cs_new_nopar:Npn \SetAnnotSymbols #1
+ {
+ \clist_gset:Nn \l_bpl_annot_symbols { #1 }
+ }
+ \SetAnnotSymbols
+ { \textasteriskcentered, \textdaggerdbl, \textsection, \textparagraph,
+ \textbardbl, \textdagger, {\textasteriskcentered\textasteriskcentered},
+ {\textdaggerdbl\textdaggerdbl}, {\textdagger\textdagger}
+ }
+ % get symbol by position (int)
+ \cs_new_nopar:Npn \bpl@get@annot@symbol #1
+ {
+ \clist_item:Nn \l_bpl_annot_symbols { #1 }
+ }
+\ExplSyntaxOff
+
+% get symbol by category name
+\NewDocumentCommand\GetAnnotSymbol { s m }{
+ \edef\tmpa{}%
+ \setcounter{annotsymb}{1}%
+ \renewcommand*{\do}[1]{%
+ \ifstrequal{#2}{##1}
+ {\edef\tmpa{\bpl@get@annot@symbol{\theannotsymb}}}%
+ {}%
+ \stepcounter{annotsymb}%
+ }%
+ \expandafter\docsvlist\expandafter{\bpl@annots}%
+ \IfBooleanTF{#1}{\tmpa}{\mkbplannot{\tmpa}}%
+}
+
+% handle the annotations as passed by annotations option
+\AtEndOfPackage{%
+\ifx\bpl@annots\empty\else
+ % helper function for annotations
+ \newcounter{annotsymb}
+ \newcommand*\bplannot{%
+ \setcounter{annotsymb}{1}%
+ \renewcommand*{\do}[1]{%
+ \ifitemannotation{##1}
+ {\mkbplannot{\bpl@get@annot@symbol{\theannotsymb}}}%
+ {}%
+ \stepcounter{annotsymb}%
+ }%
+ \expandafter\docsvlist\expandafter{\bpl@annots}%
+ }
+ % do annotation in family names
+ \renewcommand*{\mkbibnamefamily}[1]{\bplannot #1}
+\fi
+}
%
% New environment for (foreign) reviews
@@ -1055,6 +1168,13 @@
}
%
+% Citation info
+%
+\DeclareFieldFormat{citations}{%
+ \bibstring{citations}\addcolon\addspace#1%
+}
+
+%
% Impact factor
%
\DeclareFieldFormat{impactfactor}{%
@@ -1356,6 +1476,26 @@
\iftoggle{isplauthor}%
{% <- TRUE condition
\global\toggletrue{hadplauthor}%
+ \ifx\bpl@annots\empty\else
+ \gdef\bpl@extra@annots{}%
+ \renewcommand*{\do}[1]{%
+ \ifitemannotation{##1}
+ {%
+ \iftoggle{bpl@have@extrainfo}%
+ {\gappto\bpl@extra@annots{\plextrainfosep\ifbibstring{annot:##1}%
+ {\bibstring{annot:##1}}%
+ {##1}}%
+ }%
+ {\gappto\bpl@extra@annots{\ifbibstring{annot:##1}%
+ {\bibstring{annot:##1}}%
+ {##1}}%
+ }%
+ \toggletrue{bpl@have@extrainfo}%
+ }%
+ {}%
+ }%
+ \expandafter\docsvlist\expandafter{\bpl@annots}%
+ \fi%
}% <- end TRUE condition
{% <- FALSE condition
\stepcounter{nonpl#1}%
@@ -1379,7 +1519,7 @@
{\ifdefvoid{\namepartgiven}{}{\mkbibnamegiven{\namepartgiven}\addspace}}%
\ifdefvoid{\namepartprefix}{}{\mkbibnameprefix{\namepartprefix}\addspace}%
\global\togglefalse{plauthorprecedes}%
- \namepartfamily%
+ \mkbibnamefamily{\namepartfamily}%
}%
}% <- end FALSE condition
%
@@ -1718,6 +1858,12 @@
}%
}
+%
+% Extra information
+%
+
+\def\bpl@extra@annots{}
+
\newtoggle{bpl@have@extrainfo}
\renewbibmacro*{addendum+pubstate}{%
@@ -1739,14 +1885,35 @@
not test {\iffieldundef{impactfactor}}
and test {\iftoggle{bpl@jifinfo}}
)
+ or
+ (
+ not test {\iffieldundef{citations}}
+ and test {\iftoggle{bpl@citinfo}}
+ )
+ or
+ (
+ not test {\ifcsvoid{bpl@extra@annots}}
+ )
}{%
\newunit\newblock%
\printtext[plextrainfo]{%
+ \ifx\bpl@extra@annots\empty\else
+ \bpl@extra@annots%
+ \toggletrue{bpl@have@extrainfo}%
+ \fi
\ifboolexpr{ not test {\iffieldundef{peerreview}}
and test {\iftoggle{bpl@prinfo}}
}{%
- \toggletrue{bpl@have@extrainfo}%
+ \iftoggle{bpl@have@extrainfo}{\plextrainfosep}{}%
\printfield{peerreview}%
+ \toggletrue{bpl@have@extrainfo}%
+ }{}%
+ \ifboolexpr{ not test {\iffieldundef{citations}}
+ and test {\iftoggle{bpl@citinfo}}
+ }{%
+ \iftoggle{bpl@have@extrainfo}{\plextrainfosep}{}%
+ \printfield{citations}%
+ \toggletrue{bpl@have@extrainfo}%
}{}%
\ifboolexpr{ not test {\iffieldundef{openaccess}}
and test {\iftoggle{bpl@oainfo}}
@@ -1768,6 +1935,11 @@
%
% l7n
%
+
+\DeclareLanguageMappingSuffix{-publist}
+
+% publist-specific bibstrings
+\NewBibliographyString{citations}
\NewBibliographyString{with}
\NewBibliographyString{parttranslationof}
\NewBibliographyString{impactfactor}
@@ -1782,54 +1954,8 @@
\NewBibliographyString{peerreview:tp}
\NewBibliographyString{peerreview:pp}
\NewBibliographyString{peerreview:no}
-\DefineBibliographyStrings{english}{%
- parttranslationof = {partial translation of},
- with = {with},
- impactfactor = {impact factor},
- openaccess:true = {OpenAccess},
- openaccess:gold = {OpenAccess (gold)},
- openaccess:green = {OpenAccess (green)},
- peerreview:sb = {single blind peer review},
- peerreview:db = {double blind peer review},
- peerreview:op = {open peer review},
- peerreview:co = {collaborative peer review},
- peerreview:cc = {cascading peer review},
- peerreview:tp = {third-party peer review},
- peerreview:pp = {post-publication peer review},
- peerreview:no = {no peer review}
-}
-\DefineBibliographyStrings{french}{%
- parttranslationof = {traduction partielle de},
- with = {avec},
- impactfactor = {facteur d'impact},
- openaccess:true = {libre acc\`es},
- openaccess:gold = {libre acc\`es (dorée)},
- openaccess:green = {libre acc\`es (verte)},
- peerreview:sb = {\'{e}valuation par des pairs anonymis\'{e}s},
- peerreview:db = {\'{e}valuation par les pairs en double aveugle},
- peerreview:op = {\'{e}valuation par les pairs ouverte},
- peerreview:co = {\'{e}valuation par les pairs collaborative},
- peerreview:cc = {\'{e}valuation par les pairs en cascade},
- peerreview:tp = {\'{e}valuation par des pairs ext\'{e}rieurs},
- peerreview:pp = {\'{e}valuation par les pairs apr\`{e}s publication},
- peerreview:no = {pas d'\'{e}valuation par les pairs}
-}
-\DefineBibliographyStrings{german}{%
- parttranslationof = {Teil\"ubersetzung von},
- with = {mit},
- impactfactor = {Impactfaktor},
- openaccess:true = {OpenAccess},
- openaccess:gold = {OpenAccess (gold)},
- openaccess:green = {OpenAccess (gr\"un)},
- peerreview:sb = {Blindbegutachtung},
- peerreview:db = {Doppelblindbegutachtung},
- peerreview:op = {Offene Begutachtung},
- peerreview:co = {Kollaborative Begutachtung},
- peerreview:cc = {Cascading-Begutachtung},
- peerreview:tp = {Begutachtung durch Dritte},
- peerreview:pp = {Post-Publication-Begutachtung},
- peerreview:no = {keine Begutachtung}
-}
+\NewBibliographyString{annot:main}
+\NewBibliographyString{annot:corresponding}
%
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx b/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx
index 78d144e32b5..d384445d635 100644
--- a/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx
@@ -26,14 +26,50 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\bpl@version{2.10}
-\def\bpl@rdate{2024/06/17}
+\def\bpl@version{2.13}
+\def\bpl@rdate{2024/08/21}
\ProvidesFile{publist.cbx}[\bpl@rdate\space v.\bpl@version\space
biblatex citation style (JSP)]
\RequireCitationStyle{numeric}
+\DeclareCiteCommand{\citesecitem}
+ {\defcounter{maxnames}{999}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{bpl:cite:secitem}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand*{\citesecitem}
+ {\defcounter{maxnames}{999}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{bpl:cite:secitem}%
+ \usebibmacro{bpl:cite:secitemsec}%
+ }
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\newbibmacro*{bpl:cite:secitem}{%
+ \ifcsdef{bpl@itemnumber:\thefield{entrykey}}%
+ {\mkbibbrackets{\csuse{bpl@itemnumber:\thefield{entrykey}}}}%
+ {\textbf{\mkbibbrackets{???}}}%
+}
+
+\newcommand*\secitemsecref[1]{%
+ \mkbibparens{\bibstring{section}\addnbspace\ref{refsection:#1}}%
+}
+
+\newbibmacro*{bpl:cite:secitemsec}{%
+ \ifcsdef{bpl@itemsec:\thefield{entrykey}}%
+ {\addspace\secitemsecref{\csuse{bpl@itemsec:\thefield{entrykey}}}}%
+ {}%
+}
+
\DeclareCiteCommand{\citeitem}
{\defcounter{maxnames}{999}%
\boolfalse{citetracker}%
@@ -55,6 +91,28 @@
\printtext[labelnumberwidth]{\mkrefdesc{\thefield{labelnumber}}}%
}
+\newcommand*\itemrangesep{\bibrangedash}
+
+\newcommand*\citeitemrange[2]{%
+ \citeitem{#1}\itemrangesep\citeitem{#2}%
+}
+
+\NewDocumentCommand\citesecitemrange{s m m}
+{%
+ \IfBooleanTF{#1}%
+ {\ifcsdef{bpl@itemsec:#2}%
+ {\ifcsdef{bpl@itemsec:#3}%
+ {\ifcsequal{bpl@itemsec:#2}{bpl@itemsec:#3}%
+ {\citesecitem{#2}\itemrangesep}%
+ {\citesecitem*{#2}\,\itemrangesep\,}%
+ \citesecitem*{#3}}%
+ {\citesecitem*{#2}\itemrangesep\citesecitem*{#3}}%
+ }%
+ {\citesecitem{#2}\itemrangesep\citesecitem*{#3}}%
+ }%
+ {\citesecitem{#2}\itemrangesep\citesecitem{#3}}%
+}
+
% Manual way to adjust numbering
\csdef{bpl@secstartshift}{0}
\newcommand*\shiftciteitem[1]{\csdef{bpl@secstartshift}{#1}}
diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/publist.dbx b/Master/texmf-dist/tex/latex/biblatex-publist/publist.dbx
index 874cb3c8013..27cb4068f5f 100644
--- a/Master/texmf-dist/tex/latex/biblatex-publist/publist.dbx
+++ b/Master/texmf-dist/tex/latex/biblatex-publist/publist.dbx
@@ -1,5 +1,5 @@
% publist.dbx, biblatex data model specification for the biblatex-publist
-% package, version 2.10 (2024/06/17).
+% package, version 2.13 (2024/08/21).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -22,11 +22,13 @@
% Add peerreview and openaccess (literal) field
\DeclareDatamodelFields[type=field, datatype=literal]{
+ citations,
impactfactor,
openaccess,
peerreview}
\DeclareDatamodelEntryfields{
+ citations,
impactfactor,
openaccess,
peerreview}
diff --git a/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls b/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls
index 2e500887306..481ff09cfa0 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}
+{2024-10-07}{3.8.0}{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..4cdb085a59c 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}
+{2024-10-07}{3.8.0}{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}
+ \vspace{0.5em plus 1fill}
- \zihao{2}\textbf{\xihei:n \l__bithesis_value_title_tl}\par
-
- \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}
diff --git a/Master/texmf-dist/tex/latex/bithesis/bitreport.cls b/Master/texmf-dist/tex/latex/bithesis/bitreport.cls
index 80b5485ff21..c08602e6116 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}
+{2024-10-07}{3.8.0}{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/16-IU8-references.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/16-IU8-references.sty
deleted file mode 100644
index 7a51a9235af..00000000000
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/16-IU8-references.sty
+++ /dev/null
@@ -1,18 +0,0 @@
-% Author: CatInCosmicSpace
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{16-IU8-references}[2021/03/21 v1.2 Список использованных источников]
-
-% Сведения об источниках следует располагать в порядке появления ссылок на
-% источники в тексте отчета и нумеровать арабскими цифрами с точкой и печатать
-% с абзацного отступа.
-\usepackage[
- backend=biber,
- style=gost-numeric,
- sorting=none,
- % refsection=structure,
- % sorting=ynt,
-]{biblatex}
-\defbibheading{bibliography}[СПИСОК~ИСПОЛЬЗОВАННЫХ~ИСТОЧНИКОВ]{\structure{#1}}
-\addto{\captionsrussian}{%
- \renewcommand{\contentsname}{СОДЕРЖАНИЕ}
-}
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 e50cde4c75e..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}[2020/06/01 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
@@ -26,28 +34,28 @@
\RequirePackage[russian]{babel}
\RequirePackage{hyphsubst}
-\RequirePackage{01-IU8-base}
-\RequirePackage{02-IU8-construction}
-\RequirePackage{03-IU8-numbering}
-\RequirePackage{04-IU8-section-numbering}
-\RequirePackage{05-IU8-figures}
-\RequirePackage{06-IU8-tables}
-\RequirePackage{07-IU8-footnotes}
-\RequirePackage{08-IU8-formulas}
-\RequirePackage{09-IU8-cites}
-\RequirePackage{10-IU8-titlepage}
-\RequirePackage{11-IU8-performers}
-\RequirePackage{12-IU8-abstract}
-\RequirePackage{13-IU8-contents}
-\RequirePackage{14-IU8-terms-and-definitions}
-\RequirePackage{15-IU8-list-of-abbreviations}
-\RequirePackage{16-IU8-references}
-\RequirePackage{17-IU8-appendices}
-\RequirePackage{18-IU8-extra}
-\RequirePackage{19-IU8-counters}
-\RequirePackage{20-IU8-listing}
-\RequirePackage{21-IU8-math}
-\RequirePackage{22-IU8-algorithms}
+\RequirePackage{IU8-01-base}
+\RequirePackage{IU8-02-construction}
+\RequirePackage{IU8-03-numbering}
+\RequirePackage{IU8-04-section-numbering}
+\RequirePackage{IU8-05-figures}
+\RequirePackage{IU8-06-tables}
+\RequirePackage{IU8-07-footnotes}
+\RequirePackage{IU8-08-formulas}
+\RequirePackage{IU8-09-cites}
+\RequirePackage{IU8-10-titlepage}
+\RequirePackage{IU8-11-performers}
+\RequirePackage{IU8-12-abstract}
+\RequirePackage{IU8-13-contents}
+\RequirePackage{IU8-14-terms-and-definitions}
+\RequirePackage{IU8-15-list-of-abbreviations}
+\RequirePackage{IU8-16-references}
+\RequirePackage{IU8-17-appendices}
+\RequirePackage{IU8-18-extra}
+\RequirePackage{IU8-19-counters}
+\RequirePackage{IU8-20-listing}
+\RequirePackage{IU8-21-math}
+\RequirePackage{IU8-22-algorithms}
\RequirePackage{csquotes}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/01-IU8-base.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-01-base.sty
index f3df2d3f5ed..80db377148f 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/01-IU8-base.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-01-base.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{01-IU8-base}[2021/03/21 v1.2 Общие требования]
+\ProvidesPackage{IU8-01-base}[2024/10/28 v1.5 Общие требования]
% 6.1.1 Изложение текста и оформление отчета выполняют в соответствии с
% требованиями настоящего стандарта. Страницы текста отчета о НИР и включенные в
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/02-IU8-construction.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-02-construction.sty
index b94615c0039..a99bad8db76 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/02-IU8-construction.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-02-construction.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{02-IU8-construction}[2021/03/21 v1.2 Построение отчета]
+\ProvidesPackage{IU8-02-construction}[2024/10/28 v1.5 Построение отчета]
% 6.2.1 Наименования структурных элементов отчета:
% "СПИСОК ИСПОЛНИТЕЛЕЙ", % у нас не используется
@@ -25,10 +25,11 @@
\renewcommand{\thestructure}{} % Убрать появление счётчика в содержании
\titleclass{\structure}{straight}[\section]
\titleformat{\structure}[hang]{\clearpage\normalfont\bfseries\centering}{}{0em}{}
-\titlespacing*{\structure}{0pt}{0pt}{2\baselineskip}
+\titlespacing*{\structure}{0pt}{0pt}{1em}
\titlecontents{structure}{}{}{}{}
\renewcommand*\l@structure{\@dottedtocline{0}{0mm}{0em}}
+
\newcommand{\structurebreak}{\clearpage}
\newcommand{\sectionbreak}{\clearpage}
@@ -54,6 +55,14 @@
\titlespacing*{\paragraph}{0pt}{2ex}{2ex}[2ex]
\titlespacing*{\subparagraph}{0pt}{2ex}{2ex}[2ex]
+\makeatletter
+\renewcommand*\l@section{\@dottedtocline{0}{12.5mm}{2em}}
+\renewcommand*\l@structure{\@dottedtocline{0}{12.5mm}{0em}}
+\renewcommand*\l@subsection{\@dottedtocline{1}{12.5mm}{3em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{2}{12.5mm}{4em}}
+\renewcommand*\l@paragraph{\@dottedtocline{3}{12.5mm}{5em}}
+\makeatother
+
% 6.2.4 Если заголовок включает несколько предложений, их разделяют точками.
% Переносы слов в заголовках не допускаются.
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/03-IU8-numbering.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-03-numbering.sty
index b8696c01f3b..8624f70dc34 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/03-IU8-numbering.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-03-numbering.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{03-IU8-numbering}[2021/03/21 v1.2 Нумерация страниц отчета]
+\ProvidesPackage{IU8-03-numbering}[2024/10/28 v1.5 Нумерация страниц отчета]
% 6.3.1 Страницы отчета следует нумеровать арабскими цифрами, соблюдая сквозную
% нумерацию по всему тексту отчета, включая приложения. Номер страницы
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/04-IU8-section-numbering.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-04-section-numbering.sty
index 839c34816e4..a44c787a3f1 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/04-IU8-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{04-IU8-section-numbering}[2021/03/21 v1.2 Нумерация разделов, подразделов, пунктов, подпунктов и книг отчета]
+\ProvidesPackage{IU8-04-section-numbering}[2024/10/28 v1.5 Нумерация разделов, подразделов, пунктов, подпунктов и книг отчета]
% 6.4.1 Разделы должны иметь порядковые номера в пределах всего отчета,
% обозначенные арабскими цифрами без точки и расположенные с абзацного отступа.
@@ -10,7 +10,7 @@
% подразделы, могут состоять из одного или нескольких пунктов.
% Это настройка по умолчанию, так что её не меняю
-% Про абзацный отступ учетно в 02-IU8-construction
+% Про абзацный отступ учетно в IU8-02-construction
% 6.4.2 Если отчет не имеет подразделов, то нумерация пунктов в нем должна
% быть в пределах каждого раздела и номер пункта должен состоять из номеров
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/05-IU8-figures.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-05-figures.sty
index 7210da52453..e5b92cd6ac7 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/05-IU8-figures.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-05-figures.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{05-IU8-figures}[2021/03/21 v1.2 Иллюстрации]
+\ProvidesPackage{IU8-05-figures}[2024/10/28 v1.5 Иллюстрации]
% 6.5.1 Иллюстрации (чертежи, графики, схемы, компьютерные распечатки, диаграммы,
% фотоснимки) следует располагать в отчете непосредственно после текста отчета,
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/06-IU8-tables.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-06-tables.sty
index eedb9d94df9..bd5b3f046e1 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/06-IU8-tables.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-06-tables.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{06-IU8-tables}[2021/03/21 v1.2 Таблицы]
+\ProvidesPackage{IU8-06-tables}[2024/10/28 v1.5 Таблицы]
% Пакеты, которые скорее всего пригодятся
\RequirePackage{tabularx}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/07-IU8-footnotes.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-07-footnotes.sty
index 689cdd0337e..c6163edaf3f 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/07-IU8-footnotes.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-07-footnotes.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{07-IU8-footnotes}[2021/03/21 v1.2 Примечания и сноски]
+\ProvidesPackage{IU8-07-footnotes}[2024/10/28 v1.5 Примечания и сноски]
% 6.7.1 Примечания приводят в отчете, если необходимы пояснения или справочные
% данные к содержанию текста, таблиц или графического материала.
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/08-IU8-formulas.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-08-formulas.sty
index aa65770e77e..116fff2896a 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/08-IU8-formulas.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-08-formulas.sty
@@ -1,5 +1,5 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{08-IU8-formulas}[2021/03/21 v1.2 Формулы]
+\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/09-IU8-cites.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-09-cites.sty
index 651f2a3e4e0..4c8d2b56353 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/09-IU8-cites.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-09-cites.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{09-IU8-cites}[2021/03/21 v1.2 Ссылки]
+\ProvidesPackage{IU8-09-cites}[2024/10/28 v1.5 Ссылки]
% 6.9.1 В отчете о НИР рекомендуется приводить ссылки на использованные
% источники. При нумерации ссылок на документы, использованные при составлении
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/10-IU8-titlepage.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-10-titlepage.sty
index e9834bc07b2..f4c856db33f 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/10-IU8-titlepage.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-10-titlepage.sty
@@ -1,6 +1,13 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{10-IU8-titlepage}[2021/03/21 v1.2 Титульный лист]
+\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/11-IU8-performers.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-11-performers.sty
index 14b659de63c..7c29e314bbd 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/11-IU8-performers.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-11-performers.sty
@@ -1,5 +1,5 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{11-IU8-performers}[2021/03/21 v1.2 Список исполниетелей]
+\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/12-IU8-abstract.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-12-abstract.sty
index 946d3360bce..ac71c7472eb 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/12-IU8-abstract.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-12-abstract.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{12-IU8-abstract}[2021/03/21 v1.2 Реферат]
+\ProvidesPackage{IU8-12-abstract}[2024/10/28 v1.5 Реферат]
% 6.12.1 Сведения об общем объеме отчета, количестве книг отчета, иллюстраций,
% таблиц, использованных источников, приложений являются первой компонентой
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/13-IU8-contents.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-13-contents.sty
index bf51955ac00..2f8f4e7dd62 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/13-IU8-contents.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-13-contents.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{13-IU8-contents}[2021/03/21 v1.2 Содержание]
+\ProvidesPackage{IU8-13-contents}[2024/10/28 v1.5 Содержание]
% Каждую запись содержания оформляют как отдельный абзац, выровненный влево.
% Номера страниц указывают выровненными по правому краю поля и соединяют
@@ -17,13 +17,16 @@
% ГОСТ 7.32-2017. Пункт 5.4.1:
% Обозначения подразделов приводят после абзацного отступа,
% равного двум знакам, относительно обозначения разделов.
-\renewcommand*\l@subsection{\@dottedtocline{1}{5mm}{3em}}
+\renewcommand*\l@section{\@dottedtocline{1}{5mm}{3em}}
+\renewcommand*\l@subsection{\@dottedtocline{1}{10mm}{3em}}
% ГОСТ 7.32-2017. Пункт 5.4.1:
% Обозначения пунктов приводят после абзацного отступа,
% равного четырем знакам, относительно обозначения разделов.
-\renewcommand*\l@subsubsection{\@dottedtocline{2}{10mm}{4em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{2}{15mm}{4em}}
% Остальное - индуктивно
\renewcommand*\l@paragraph{\@dottedtocline{3}{15mm}{5em}}
+
\setcounter{secnumdepth}{5} % Глубина заголовков - до пятого уровня
\setcounter{tocdepth}{2} % Глубина содержания - до второго уровня
+
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/14-IU8-terms-and-definitions.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-14-terms-and-definitions.sty
index e3e15e2d2e7..5f7a0d59340 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/14-IU8-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{14-IU8-terms-and-definitions}[2021/03/21 v1.2 Содержание]
+\ProvidesPackage{IU8-14-terms-and-definitions}[2024/10/28 v1.5 Содержание]
\RequirePackage[
acronym,
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/15-IU8-list-of-abbreviations.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-15-list-of-abbreviations.sty
index d8345fdd1fe..951e61f8299 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/15-IU8-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{15-IU8-list-of-abbreviations}[2021/03/21 v1.2 Содержание]
+\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
new file mode 100644
index 00000000000..af759707e90
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-16-references.sty
@@ -0,0 +1,39 @@
+% Author: CatInCosmicSpace
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{IU8-16-references}[2024/10/28 v1.5 Список использованных источников]
+
+% Сведения об источниках следует располагать в порядке появления ссылок на
+% источники в тексте отчета и нумеровать арабскими цифрами с точкой и печатать
+% с абзацного отступа.
+\usepackage[
+ backend=biber,
+ style=gost-numeric,
+ sorting=none,
+ % refsection=structure,
+ % sorting=ynt,
+]{biblatex}
+
+\defbibenvironment{bibliography}
+ {\list
+ {}
+ {\setlength{\leftmargin}{1.25cm}
+ \setlength{\itemindent}{0em}
+ \setlength{\itemsep}{\bibitemsep}
+ \setlength{\parsep}{\bibparsep}}}
+ {\endlist}
+ {\item\printtext[labelnumberwidth]{\printfield{labelprefix}\printfield{labelnumber}}\addspace}
+
+\defbibheading{bibliography}[СПИСОК~ИСПОЛЬЗОВАННЫХ~ИСТОЧНИКОВ]{\structure{#1}}
+\addto{\captionsrussian}{%
+ \renewcommand{\contentsname}{СОДЕРЖАНИЕ}
+}
+
+\DefineBibliographyStrings{russian}{%
+ urlseen = {дата обращения},
+}
+
+% Специально изменим шрифт для URL, чтобы он соответсвовал ГОСТ и остальному тексту документа
+\renewcommand{\UrlFont}{\normalfont}
+
+% Изменяем шрифт для авторов в списке литературы на обычный
+\renewcommand{\mkgostheading}[1]{\normalfont{#1}} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/17-IU8-appendices.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-17-appendices.sty
index 025e70b5c8f..88033132f7b 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/17-IU8-appendices.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-17-appendices.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{17-IU8-appendices}[2021/03/21 v1.2 Приложения]
+\ProvidesPackage{IU8-17-appendices}[2024/10/28 v1.5 Приложения]
\newcommand{\appendixsection}[1]{
\stepcounter{apps}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/18-IU8-extra.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-18-extra.sty
index 6fb1570340a..9f84d4b8d85 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/18-IU8-extra.sty
+++ b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-18-extra.sty
@@ -1,6 +1,6 @@
% Author: CatInCosmicSpace
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{18-IU8-extra}[2021/03/21 v1.2 Разные улучшения]
+\ProvidesPackage{IU8-18-extra}[2024/10/28 v1.5 Разные улучшения]
\RequirePackage{graphicx}
@@ -23,3 +23,18 @@
} % Кликабельные ссылки в pdf
\hbadness=10000
+
+\setlist[enumerate]{
+ leftmargin=\parindent,
+ labelindent=\parindent,
+ align=left,
+ nosep,
+}
+
+\setlist[itemize]{
+ label=\textendash,
+ leftmargin=\parindent,
+ labelindent=\parindent,
+ align=left,
+ nosep,
+}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/19-IU8-counters.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-19-counters.sty
index 991f9f4d43f..07c7ef9e475 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/19-IU8-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{19-IU8-counters}[2021/03/21 v1.2 Счётчики]
+\ProvidesPackage{IU8-19-counters}[2024/10/28 v1.5 Счётчики]
\RequirePackage{calc}
\RequirePackage{xassoccnt}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/20-IU8-listing.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-20-listing.sty
index c90194a1d25..56aa4cb3493 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/20-IU8-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{20-IU8-listing}[2021/03/21 v1.2 Листинги]
+\ProvidesPackage{IU8-20-listing}[2024/10/28 v1.5 Листинги]
\RequirePackage{listings}
\RequirePackage{xcolor}
@@ -10,7 +10,7 @@
\lstdefinestyle{IU8}{
frame=single,
- backgroundcolor=\color{seashell},
+ % backgroundcolor=\color{seashell},
commentstyle=\color{blue},
keywordstyle=\color{magenta},
basicstyle=\ttfamily\footnotesize,
@@ -36,3 +36,25 @@
\newcommand{\listing}[2][]{%
\lstinputlisting[caption={\texttt{\detokenize{#2}}},#1]{#2}%
}
+
+\lstnewenvironment{codelisting}[1][]
+{
+\lstset{
+ frame=single,
+ % backgroundcolor=\color{seashell},
+ commentstyle=\color{blue},
+ keywordstyle=\color{magenta},
+ basicstyle=\ttfamily\footnotesize,
+ breakatwhitespace=false,
+ breaklines=true,
+ captionpos=tl,
+ keepspaces=false,
+ showspaces=false,
+ showstringspaces=false,
+ showtabs=false,
+ extendedchars=\true,
+ tabsize=2,
+ #1
+}
+}
+{} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/21-IU8-math.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-21-math.sty
index b60a4fd6d2c..91d6c7cdffd 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/21-IU8-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{21-IU8-math}[2021/03/21 v1.2 Математика]
+\ProvidesPackage{IU8-21-math}[2024/10/28 v1.5 Математика]
\RequirePackage{amsthm}
\theoremstyle{definition}
diff --git a/Master/texmf-dist/tex/latex/bmstu-iu8/22-IU8-algorithms.sty b/Master/texmf-dist/tex/latex/bmstu-iu8/IU8-22-algorithms.sty
index f3fdcee25ef..9fd0c3c5cb7 100644
--- a/Master/texmf-dist/tex/latex/bmstu-iu8/22-IU8-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{22-IU8-algorithms}[2021/03/21 v1.2 Алгоритмы]
+\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..d55b78e1669
--- /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/11 v1.0]
+
+%--------------------------------------- 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..074d61caa31
--- /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/11 v1.0]
+\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}{twemoji-pdf}
+\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/bxjatoucs/bxjatoucs.sty b/Master/texmf-dist/tex/latex/bxjatoucs/bxjatoucs.sty
index b387872640d..04fb01765a4 100644
--- a/Master/texmf-dist/tex/latex/bxjatoucs/bxjatoucs.sty
+++ b/Master/texmf-dist/tex/latex/bxjatoucs/bxjatoucs.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'bxjatoucs.sty'.
%%
-%% Copyright (c) 2019 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2019-2024 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -53,7 +53,7 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bxjatoucs}[2019/10/20 v0.2]
+\ProvidesPackage{bxjatoucs}[2024/07/22 v0.3a]
\def\bxju@pkgname{bxjatoucs}
%--------------------------------------- "check-avail"
@@ -167,6 +167,22 @@
\bxju@ifdefinable\bxjaFastJscToUcsHex{%
\def\bxjaFastJscToUcsHex{%
\bxju@burst-`>\bxju@in@hex\bxju@fast@jsc@to@ucs}}
+%%<*> \bxjaUcsToJis{<ucs>}
+\bxju@ifdefinable\bxjaUcsToJis{%
+ \def\bxjaUcsToJis{%
+ \bxju@burst-`>\bxju@ucs@to@jis}}
+%%<*> \bxjaUcsToEuc{<ucs>}
+\bxju@ifdefinable\bxjaUcsToEuc{%
+ \def\bxjaUcsToEuc{%
+ \bxju@burst-`>\bxju@ucs@to@euc}}
+%%<*> \bxjaUcsToSjis{<ucs>}
+\bxju@ifdefinable\bxjaUcsToSjis{%
+ \def\bxjaUcsToSjis{%
+ \bxju@burst-`>\bxju@ucs@to@sjis}}
+%%<*> \bxjaFastUcsToJsc{<ucs>}
+\bxju@ifdefinable\bxjaFastUcsToJsc{%
+ \def\bxjaFastUcsToJsc{%
+ \bxju@burst-`>\bxju@fast@ucs@to@jsc}}
%--------------------------------------- auxiliary
@@ -195,6 +211,16 @@
\expandafter\bxju@decomp@b\the\numexpr#2-#1*256:#1:}
\def\bxju@decomp@b#1:#2:#3{#3{#2}{#1}}
+%% \bxju@decomp@int{<number>}\CScont
+% Divides the <number> by 94 and returns the quotient and
+% the remainder as \CScont{<high>}{<low>}.
+\def\bxju@decomp@int#1{%
+ \expandafter\bxju@decomp@int@a
+ \number\numexpr\ifnum#1>\ltx@zero(#1-47)/94\else0\fi:#1:}
+\def\bxju@decomp@int@a#1:#2:{%
+ \expandafter\bxju@decomp@int@b\the\numexpr#2-#1*94:#1:}
+\def\bxju@decomp@int@b#1:#2:#3{#3{#2}{#1}}
+
%% \bxju@in@hex\CSconv{<arg>}
\def\bxju@in@hex#1#2{%
\expandafter\bxju@in@hex@a\bxju@burst-`>#1{#2}:>}
@@ -231,6 +257,7 @@
%% umbralist fontdefs
\font\bxju@ul@cid=bxjatoucs-cid
\font\bxju@ul@jis=bxjatoucs-jis
+\font\bxju@ul@tojis=bxjatoucs-tojis
%% \bxju@cid@to@ucs{<cid>}
\def\bxju@cid@to@ucs#1{%
@@ -284,6 +311,55 @@
\def\bxju@fast@jsc@to@ucs#1{%
\number\fontdimen\numexpr(#1)+8\bxju@ul@jis}
+%% \bxju@conv@ucs@to@jsc{<ucs>}\CScont
+% Converts a UCS value <ucs> to JSC and returns the result.
+% If no corresponding JSC codepoint exists, returns 9999.
+\def\bxju@conv@ucs@to@jsc#1{%
+ \expandafter\bxju@conv@ucs@to@jsc@a\number\numexpr#1\bxju@mk}
+\def\bxju@conv@ucs@to@jsc@a#1\bxju@mk{%
+ \bxju@cond\ifnum#1<"10000 \fi{%
+ \expandafter\bxju@conv@ucs@to@jsc@b
+ \number\fontdimen\numexpr(#1+480)/64\bxju@ul@tojis:#1\bxju@mk
+ }{\bxju@conv@ucs@to@jsc@a0\bxju@mk}}
+\def\bxju@conv@ucs@to@jsc@b#1:#2\bxju@mk{%
+ \expandafter\bxju@conv@ucs@to@jsc@c
+ \number\fontdimen\numexpr#2+1088-#1\bxju@ul@tojis\bxju@mk}
+\def\bxju@conv@ucs@to@jsc@c#1\bxju@mk#2{#2{#1}}
+
+%% \bxju@ucs@to@jis{<ucs>}
+\def\bxju@ucs@to@jis#1{%
+ \bxju@check@number{#1}\bxju@ucs@to@jiseuc{8481}}
+\def\bxju@ucs@to@jiseuc#1{%
+ \bxju@conv@ucs@to@jsc{#1}\bxju@ucs@to@jiseuc@a}
+\def\bxju@ucs@to@jiseuc@a#1{%
+ \bxju@cond\ifnum#1=9999 \fi{\ltx@firstoftwo{0}}{%else
+ \bxju@decomp@int{#1}\bxju@ucs@to@jiseuc@b}}
+\def\bxju@ucs@to@jiseuc@b#1#2#3{%
+ \number\numexpr#1*256+#2+#3\relax}
+
+%% \bxju@ucs@to@euc{<ucs>}
+\def\bxju@ucs@to@euc#1{%
+ \bxju@check@number{#1}\bxju@ucs@to@jiseuc{41377}}
+
+%% \bxju@ucs@to@sjis{<ucs>}
+\def\bxju@ucs@to@sjis#1{%
+ \bxju@check@number{#1}\bxju@ucs@to@sjis@a}
+\def\bxju@ucs@to@sjis@a#1{%
+ \bxju@conv@ucs@to@jsc{#1}\bxju@ucs@to@sjis@b}
+\def\bxju@ucs@to@sjis@b#1{%
+ \bxju@cond\ifnum#1=9999 \fi{0}{%else
+ \bxju@decomp@int{#1}\bxju@ucs@to@sjis@c}}
+\def\bxju@ucs@to@sjis@c#1#2{%
+ \number\numexpr#1*128+#2 %
+ \ifodd#1 -33 \else\ifnum#2>62 +1 \fi\fi
+ \ifnum#1<62 +33088 \else +49472 \fi\relax}
+
+%% \bxju@fast@ucs@to@jsc{<ucs>}
+\def\bxju@fast@ucs@to@jsc#1{%
+ \bxju@conv@ucs@to@jsc{#1}\bxju@fast@ucs@to@jsc@a}
+\def\bxju@fast@ucs@to@jsc@a#1{%
+ \bxju@cond\ifnum#1=9999 \fi{-1}{#1}}
+
%--------------------------------------- all done
\let\bxju@next\@undefined
\let\bxju@ifdefinable\@undefined
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
index 0595b52b4ec..fb1b96a2ebd 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{bxjsarticle}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
%% このファイルは日本語文字を含みます.
\def\bxjs@clsname{bxjsarticle}
\newif\ifjsc@needsp@tch
@@ -1431,6 +1431,12 @@
\let\sectionmark\@gobble
\let\subsectionmark\@gobble
}
+\let\bxjs@phantomsection\relax
+\g@addto@macro\bxjs@begin@document@hook{%
+ \@ifpackageloaded{hyperref}{%
+ \let\bxjs@phantomsection\phantomsection
+ }{}%
+}
\newcommand*{\jsSubtitle}[1]{\gdef\bxjs@subtitle{#1}}
\renewcommand*{\title}[1]{\bxjs@decl@subtitle\gdef\@title{#1}}
\g@addto@macro\bxjs@begin@document@hook{\bxjs@decl@subtitle}
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
index ed06d493e4e..a107f3a6f74 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{bxjsbook}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
%% このファイルは日本語文字を含みます.
\def\bxjs@clsname{bxjsbook}
\newif\ifjsc@needsp@tch
@@ -1467,6 +1467,12 @@
\let\chaptermark\@gobble
\let\sectionmark\@gobble
}
+\let\bxjs@phantomsection\relax
+\g@addto@macro\bxjs@begin@document@hook{%
+ \@ifpackageloaded{hyperref}{%
+ \let\bxjs@phantomsection\phantomsection
+ }{}%
+}
\newcommand*{\jsSubtitle}[1]{\gdef\bxjs@subtitle{#1}}
\renewcommand*{\title}[1]{\bxjs@decl@subtitle\gdef\@title{#1}}
\g@addto@macro\bxjs@begin@document@hook{\bxjs@decl@subtitle}
@@ -2302,8 +2308,9 @@
\fi
\columnseprule.4pt \columnsep 2\jsZw
\ifx\multicols\@undefined
- \twocolumn[\@makeschapterhead{\indexname}%
- \addcontentsline{toc}{chapter}{\indexname}]%
+ \twocolumn[\bxjs@phantomsection
+ \addcontentsline{toc}{chapter}{\indexname}%
+ \@makeschapterhead{\indexname}]%
\else
\ifdim\textwidth<\fullwidth
\setlength{\evensidemargin}{\oddsidemargin}
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty
index ba235ec3ba8..d5c4e72f6ae 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bxjscjkcat}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
\def\bxjx@pkgname{bxjscjkcat}
\newcount\bxjx@cnta
\@onlypreamble\bxjx@tmpdo
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty
index a621868b9d0..b6ca0c76d8b 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bxjscompat}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
\def\bxac@pkgname{bxjscompat}
\let\bxac@engine=n
\def\bxac@do#1#2{%
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def
index 44e1b044b0c..7ff3ed48a3f 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def
@@ -21,7 +21,7 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
\ProvidesFile{bxjsja-minimal.def}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
%% このファイルは日本語文字を含みます
\let\bxjs@tmpa\relax
\ifx J\jsEngine \def\bxjs@tmpa{NTT-jTeX}\fi
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def
index 799fd1e7cdf..adf5d66c4b2 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def
@@ -21,7 +21,7 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
\ProvidesFile{bxjsja-modern.def}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
\input{bxjsja-standard.def}
\ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi=\z@
\def\encodingdefault{T1}%
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def
index c4f3bf7a64f..bd595cff6e1 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def
@@ -21,7 +21,7 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
\ProvidesFile{bxjsja-pandoc.def}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
\if x\jsEngine
\PassOptionsToPackage{nospace}{xeCJK}
\fi
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
index b8862a44301..bc05f69e940 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def
@@ -21,7 +21,7 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
\ProvidesFile{bxjsja-standard.def}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
%% このファイルは日本語文字を含みます
\input{bxjsja-minimal.def}
\bxjs@simplejasetupfalse
@@ -240,6 +240,14 @@
\DeclareHookRule{shipout/firstpage}{pxjahyper/enc}{<}{hyperref}%
\global\let\bxjs@urgent@special@a\relax}
\fi
+\@onlypreamble\bxjs@patch@RDMA@for@bm
+\def\bxjs@patch@RDMA@for@bm{%
+ \let\bxjs@org@DualLang@mathalph@bet\DualLang@mathalph@bet
+ \def\DualLang@mathalph@bet{%
+ \ifx\bm\@firstofone \expandafter\@firstoftwo
+ \else \expandafter\bxjs@org@DualLang@mathalph@bet
+ \fi}%
+}
\if j\jsEngine
\newcommand*{\setkanjiskip}{\jsSetKanjiSkip}
\newcommand*{\getkanjiskip}{\jsGetKanjiSkip}
@@ -386,11 +394,10 @@
\DeclareMathAlphabet{\mathgt}{\jsc@JYn}{gt}{m}{n}
\g@addto@macro\bxjs@begin@document@hook{%
\ifx\reDeclareMathAlphabet\@undefined\else
- \@ifpackageloaded{bm}{}{%else
+ \@ifpackageloaded{bm}{\bxjs@patch@RDMA@for@bm}{}%
\reDeclareMathAlphabet{\mathrm}{\@mathrm}{\@mathmc}%
\reDeclareMathAlphabet{\mathbf}{\@mathbf}{\@mathgt}%
\reDeclareMathAlphabet{\mathsf}{\@mathsf}{\@mathgt}%
- }%
\fi}
\fi
\else\if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T
@@ -606,6 +613,7 @@
\@ltj@match@familytrue
\fi
\g@addto@macro\bxjs@begin@document@hook{%
+ \@ifpackageloaded{bm}{\bxjs@patch@RDMA@for@bm}{}%
\reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}%
\reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}%
\reDeclareMathAlphabet{\mathsf}{\mathsf}{\mathgt}}%
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty
index 04a51b3ed3d..09990c0acaa 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bxjspandoc}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
%% このファイルは日本語文字を含みます.
\def\bxjsp@pkgname{bxjspandoc}
\let\bxjsp@engine=n
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
index b3c7753c1d3..51568cfaa5c 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{bxjsreport}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
%% このファイルは日本語文字を含みます.
\def\bxjs@clsname{bxjsreport}
\newif\ifjsc@needsp@tch
@@ -1441,6 +1441,12 @@
\let\chaptermark\@gobble
\let\sectionmark\@gobble
}
+\let\bxjs@phantomsection\relax
+\g@addto@macro\bxjs@begin@document@hook{%
+ \@ifpackageloaded{hyperref}{%
+ \let\bxjs@phantomsection\phantomsection
+ }{}%
+}
\newcommand*{\jsSubtitle}[1]{\gdef\bxjs@subtitle{#1}}
\renewcommand*{\title}[1]{\bxjs@decl@subtitle\gdef\@title{#1}}
\g@addto@macro\bxjs@begin@document@hook{\bxjs@decl@subtitle}
@@ -2324,8 +2330,9 @@
\fi
\columnseprule.4pt \columnsep 2\jsZw
\ifx\multicols\@undefined
- \twocolumn[\@makeschapterhead{\indexname}%
- \addcontentsline{toc}{chapter}{\indexname}]%
+ \twocolumn[\bxjs@phantomsection
+ \addcontentsline{toc}{chapter}{\indexname}%
+ \@makeschapterhead{\indexname}]%
\else
\ifdim\textwidth<\fullwidth
\setlength{\evensidemargin}{\oddsidemargin}
diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls
index d4b76d37c83..95ff31ff333 100644
--- a/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls
+++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{bxjsslide}
- [2024/01/22 v2.9b BXJS document classes]
+ [2024/07/19 v2.9c BXJS document classes]
%% このファイルは日本語文字を含みます.
\def\bxjs@clsname{bxjsslide}
\newif\ifjsc@needsp@tch
@@ -1429,6 +1429,12 @@
\let\sectionmark\@gobble
\let\subsectionmark\@gobble
}
+\let\bxjs@phantomsection\relax
+\g@addto@macro\bxjs@begin@document@hook{%
+ \@ifpackageloaded{hyperref}{%
+ \let\bxjs@phantomsection\phantomsection
+ }{}%
+}
\newcommand*{\jsSubtitle}[1]{\gdef\bxjs@subtitle{#1}}
\renewcommand*{\title}[1]{\bxjs@decl@subtitle\gdef\@title{#1}}
\g@addto@macro\bxjs@begin@document@hook{\bxjs@decl@subtitle}
diff --git a/Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty b/Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty
index ccc9825f6fb..296774068c6 100644
--- a/Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty
+++ b/Master/texmf-dist/tex/latex/bxpdfver/bxpdfver.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'bxpdfver.sty'.
%%
-%% Copyright (c) 2014-2022 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2014-2024 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,12 +10,8 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bxpdfver}[2022/04/28 v0.6]
+\ProvidesPackage{bxpdfver}[2024/08/03 v0.8]
\def\bxpv@pkgname{bxpdfver}
-
-%% preparations
-\RequirePackage{ifthen}[]% for \newboolean
-\newif\ifbxpv@ok
\providecommand\bxDebug[1]{}
%--------------------------------------- package options
@@ -124,13 +120,23 @@
\fi
\fi
-%--------------------------------------- helpers
+%--------------------------------------- general
+
+%% packages
+\RequirePackage{ifthen}[]% for \newboolean
+
+%% variables
+\newif\ifbxpv@ok
%% unique tokens
\def\bxpv@end{\bxpv@end@}
\def\bxpv@mt{\bxpv@mt@}
\let\bxpv@mk\noindent
+%% \ifbxpv@read@file@ok
+% Whether or not the last \bxpv@read@file succeeded.
+\newif\ifbxpv@read@file@ok
+
%% \bxpv@csletcs
\def\bxpv@csletcs#1#2{%
\expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname
@@ -144,6 +150,13 @@
\def#3{#2}%
}
+%% \bxpv@info{<message>}
+% Issues an info message.
+\@onlypreamble\bxpv@info
+\def\bxpv@info#1{%
+ \PackageInfo\bxpv@pkgname{#1\@gobble}%
+}
+
%% \bxpv@warn{<message>}
% Issues a warning.
\@onlypreamble\bxpv@warn
@@ -175,17 +188,61 @@
}
%% \ifbxpv@defined
-\let\ifbxpv@defined\ifdefined
-\ifx\ifbxpv@defined\@undefined \expandafter\@firstofone
-\else \expandafter\@gobble
-\fi{\let\ifbxpv@defined\iffalse}
+% Identical to \ifdefined, and is used only in e-TeX-aware code.
+% On non-e-TeX engines it is made \iffalse to keep \if-balancedness.
+\bxpv@csletcs{ifbxpv@defined}{%
+ if\ifx\ifdefined\@undefined false\else defined\fi}
+
+%% \bxpv@begin@document@hook
+% The begin-document hook.
+\@onlypreamble\bxpv@begin@document@hook
+\let\bxpv@begin@document@hook\@empty
+\AtBeginDocument{\bxpv@begin@document@hook}
+
+%--------------------------------------- environment check
%% \ifbxpv@old@hook@system
\newif\ifbxpv@old@hook@system
\@ifl@t@r\fmtversion{2020/10/01}{}{\bxpv@old@hook@systemtrue}
+%% \ifbxpv@pdfmanagement@ok
+% Whether this package is supporting the LaTeX PDF management
+% of the current kernel.
+% (If the PDF management is active but this switch is off,
+% then this package will switch to no-op mode.)
+\newif\ifbxpv@pdfmanagement@ok
+
+%% check for new PDF management
+\if t\bxpv@ignore@pdfmanagement\else
+ \ifx\IfPDFManagementActiveTF\@undefined\else
+ \IfPDFManagementActiveTF{%
+ \let\bxpv@drv@type=m%
+ \def\bxpv@drv@name{latex-pdf}%
+ \@ifl@t@r\fmtversion{2022/06/01}{%
+ \bxpv@pdfmanagement@oktrue
+ }{}
+ }{}
+ \fi
+\fi
+\ifx m\bxpv@drv@type
+ \ifbxpv@pdfmanagement@ok
+ \bxpv@warn
+ {New PDF management is active.\MessageBreak
+ The driver is set to '\bxpv@drv@name'}%
+ % Here \ExplSyntaxOn should be available.
+ \else
+ \bxpv@warn
+ {New PDF management is active, but\MessageBreak
+ the kernel is too old (before 2022/06/01).\MessageBreak
+ Thus this package will not work}%
+ \fi
+\fi
+
%--------------------------------------- internal dispatchers
+% Initially all dispatchers are "unavailable".
+% They are later redefined according to the driver type.
+
%% \bxpv@suppress@compress
\@onlypreamble\bxpv@suppress@compress
\def\bxpv@suppress@compress{%
@@ -224,25 +281,11 @@
\@onlypreamble\bxpv@cancel@obj@compress
\let\bxpv@cancel@obj@compress\relax
-%% \bxpv@begin@document@hook
-% The begin-document hook.
-\@onlypreamble\bxpv@begin@document@hook
-\let\bxpv@begin@document@hook\@empty
-\AtBeginDocument{\bxpv@begin@document@hook}
\g@addto@macro\bxpv@begin@document@hook{%
\bxpv@check@hyperref % must come first
}
-%% check for new PDF management
-\if t\bxpv@ignore@pdfmanagement\else
- \ifx\IfPDFManagementActiveTF\@undefined\else
- \IfPDFManagementActiveTF{%
- \global\let\bxpv@drv@type=m%
- }{}
- \fi
-\fi
-
-%% adjust internal dispatchers
+%% Redefine internal dispatchers.
\ifx 0\bxpv@drv@type\else %--------
\begingroup
@@ -264,9 +307,31 @@
%% switch
\if m\bxpv@drv@type
- %% when in new PDF management
- \bxpv@warn
- {New PDF management is active}%
+ \ifbxpv@pdfmanagement@ok
+ % Here all l3pdf function is assumed to be available.
+ \gdef\bxpv@check@version{\bxpv@oktrue}
+ \ExplSyntaxOn %!!!!!!
+ \tl_new:N \g__bxpv_org_version
+ \exp_args:NNe \tl_gset:Nn \g__bxpv_org_version { \pdf_version: }
+ \cs_gset:Npn \bxpv@set@version
+ {
+ \token_if_eq_meaning:NNTF \bxpdfverMinorVersion \relax
+ { \pdf_version_gset:n { \g__bxpv_org_version } }
+ {
+ \pdf_version_gset:n
+ {
+ \int_use:N \bxpdfverMajorVersion
+ . \int_use:N \bxpdfverMinorVersion
+ }
+ }
+ }
+ % \pdf_uncompress: does both.
+ \cs_gset:Npn \bxpv@suppress@compress
+ { \pdf_uncompress: }
+ \cs_gset:Npn \bxpv@suppress@obj@compress
+ { \pdf_uncompress: }
+ \ExplSyntaxOff %!!!!!!
+ \fi
\else\ifnum\bxpv@pdfoutput>\z@
%% when in PDF mode
\global\let\bxpv@drv@type=p
@@ -386,12 +451,14 @@
\bxpv@warn
{Unsupported engine}%
\else\if d\bxpv@drv@type % 'dvipdfmx'
+ % All the real settings are done in the begin-document hook,
+ % so the dispatchers themselves will do nothing (if available).
\global\let\bxpv@suppress@compress\relax
\global\let\bxpv@suppress@obj@compress\relax
\global\let\bxpv@check@version\relax
\global\let\bxpv@set@version\relax
\global\let\bxpv@set@decimaldigits\relax
- %\global\let\bxpv@set@pkresolution\relax
+ \global\let\bxpv@set@pkresolution\relax
\global\let\bxpv@preserve@destinations\relax
\g@addto@macro\bxpv@begin@document@hook{%
\bxpv@begin@document@dvipdfmx
@@ -671,6 +738,7 @@
\fi
%% variables
+\let\bxpv@dvipdfmx@known@min\relax % minimum known dviodfmx version
\let\bxpv@C@value\relax
%% \bxpv@C@bits
@@ -689,6 +757,7 @@
%% \bxpv@begin@document@dvipdfmx
\@onlypreamble\bxpv@begin@document@dvipdfmx
\def\bxpv@begin@document@dvipdfmx{%
+ \bxpv@get@dvipdfmx@known@min
% PDF version
\ifx\bxpdfverMajorVersion\tw@
\bxpv@check@dvipdfmx@version{20180217}%
@@ -701,8 +770,8 @@
\bxpv@put@special{pdf:minorversion \the\bxpdfverMinorVersion}%
\fi
\ifx\bxpdfverMinorVersion\relax\else
- \bxpv@cache@fetch{dvipdfmxver}%
- \ifnum\bxpv@cache@@dvipdfmxver<20180217 \else
+ \bxpv@at@least@dvipdfmx@version{20180217}%
+ \ifbxpv@ok
\bxpv@put@special{pdf:majorversion \the\bxpdfverMajorVersion}%
\fi
\fi
@@ -734,7 +803,9 @@
\fi
% PK resolution
\ifx\bxpdfverPkResolution\relax\else
- \iffalse % This will never work....
+ \bxpv@check@dvipdfmx@version{20211016}%
+ {Cannot set PK resolution}%
+ \ifbxpv@ok
\bxpv@put@special{dvipdfmx:config r \the\bxpdfverPkResolution}%
\fi
\fi
@@ -748,10 +819,9 @@
\fi
% C option value
\ifx\bxpv@C@bits\@empty\else
- \bxpv@cache@fetch{dvipdfmxcfg}%
- \def\bxpv@next##1##2\bxpv@mk{\def\bxpv@C@value{##1}}%
- \expandafter\bxpv@next\bxpv@cache@@dvipdfmxcfg{0}\bxpv@mk
- \bxpv@rc@bitset{\bxpv@C@value}{64}%
+ % When C option is used, its value is automatically OR'ed with
+ % the current value, so we need not read the config for that.
+ \def\bxpv@C@value{0}%
\def\do##1{%
\bxpv@rc@bitset{\bxpv@C@value}{##1}%
\let\bxpv@C@value\bxpv@rc@num}%
@@ -776,25 +846,67 @@
\fi
}
+%% \bxpv@get@dvipdfmx@known@min
+% Gathers the information and sets \bxpv@dvipdfmx@known@min,
+% without actually spawning extractbb.
+% (Called in the begin-document hook.)
+\@onlypreamble\bxpv@get@dvipdfmx@known@min
+\def\bxpv@get@dvipdfmx@known@min{%
+ % initially no information
+ \def\bxpv@dvipdfmx@known@min{0}%
+ % l3backend-dvipdfmx of revision 2022-04-10 or later requires
+ % dvipdfmx of version 20201111 or later.
+ \def\bxpv@tmpa{def}%
+ \let\bxpv@tmpb\@gobbletwo
+ \@ifl@aded\bxpv@tmpa{l3backend-dvipdfmx}{%
+ \def\bxpv@tmpb{\@ifl@ter\bxpv@tmpa{l3backend-dvipdfmx}}%
+ }{}%
+ % Just in case....
+ \@ifl@aded\bxpv@tmpa{l3backend-dvips}{%
+ \def\bxpv@tmpb{\@ifl@ter\bxpv@tmpa{l3backend-dvips}}%
+ }{}%
+ \bxpv@tmpb{2022/04/10}{%
+ % Now the version is known to be 20201111 or later.
+ % This information can save much need for spawning extractbb.
+ \def\bxpv@dvipdfmx@known@min{20201111}%
+ }{}%
+ \bxDebug{dvipdfmx-known-min:\bxpv@dvipdfmx@known@min}%
+}
+
+%% \bxpv@at@least@dvipdfmx@version{<version>}
+% Checks if dvipdfmx >= <version> and sets bxpv@ok.
+\@onlypreamble\bxpv@at@least@dvipdfmx@version
+\def\bxpv@at@least@dvipdfmx@version#1{%
+ % first check using known-min
+ \ifnum\bxpv@dvipdfmx@known@min<#1
+ % get real version
+ \bxpv@cache@fetch{dvipdfmxver}%
+ \bxpv@info
+ {dvipdfmx version is \bxpv@cache@@dvipdfmxver}%
+ \bxpv@oktrue
+ \ifnum\bxpv@cache@@dvipdfmxver<#1
+ \bxpv@okfalse
+ \fi
+ \else % new enough
+ \bxpv@oktrue
+ \fi
+}
+
%% \bxpv@check@dvipdfmx@version
\@onlypreamble\bxpv@check@dvipdfmx@version
\def\bxpv@check@dvipdfmx@version#1#2{%
- \bxpv@cache@fetch{dvipdfmxver}%
- \bxpv@okfalse
- \ifnum\bxpv@cache@@dvipdfmxver=\z@
+ \bxpv@at@least@dvipdfmx@version{#1}%
+ \ifbxpv@ok % no-op
+ \else\ifnum\bxpv@cache@@dvipdfmxver=\z@
\bxpv@fail
{#2, because the\MessageBreak
version of dvipdfmx in use is unknown
\MessageBreak (v.#1 or later is required)}%
- \else\ifnum\bxpv@cache@@dvipdfmxver<#1
+ \else
\bxpv@fail
{#2, because the\MessageBreak
version of dvipdfmx in use (v.\bxpv@cache@@dvipdfmxver) is too old
\MessageBreak (v.#1 or later is required)}%
- \else
- \PackageInfo\bxpv@pkgname
- {dvipdfmx version is \bxpv@cache@@dvipdfmxver\@gobble}%
- \bxpv@oktrue
\fi\fi
}
@@ -950,10 +1062,6 @@
\let\bxpv@rf@line\relax % line content
\let\bxpv@rf@cont\relax % continue to read?
-%% \ifbxpv@read@file@ok
-% Whether or not the last \bxpv@read@file succeeded.
-\newboolean{bxpv@read@file@ok}
-
%% \bxpv@read@file{<file-name>}{<line-parser-code>}
% Reads from a text file. The line parser takes as #1 the
% content of each line.
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..839e9863ef6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/calculatoritems/calculatoritems.sty
@@ -0,0 +1,401 @@
+% 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}[2024/11/11 0.1.0 Menus from classic calculators]
+
+%====HISTORIQUE
+% v 0.1.0 Initial version
+
+%====OPTION
+\newif\if@xelua \@xeluafalse
+\newif\if@amssymb \@amssymbtrue
+\DeclareOption{xelua}{\@xeluatrue}
+\DeclareOption{noamssymb}{\@amssymbfalse}
+\DeclareOption*{}
+\ProcessOptions\relax
+
+%====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
+ }
+}
+
+%====SPECIAL
+\if@xelua
+ \newfontfamily\fontNWKS{SourceCodePro-Medium} %numworks
+ \newfontfamily\fontCASIOA{AnonymousPro} %casio35
+ \newfontfamily\fontCASIOB{AlegreyaSans} %casio90
+ \newfontfamily\fontTI{AnonymousPro} %ti
+ \newfontfamily\fontHP{AlegreyaSans} %ti
+\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
+\fi
+
+%====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}
+}
+\setKVdefault[calcsimmenus]{%
+ model={},%
+ type={},%
+ fsep=0.5pt,%
+ font={\bfseries\ttfamily},%
+ len=auto,%
+ bg=white,%
+ rightsymb={}
+}
+
+\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 XXXX}}%
+ \addtolength{\calcsimmenusmenutc}{2pt}%
+ \settowidth{\calcsimmenusitemtc}{\hbox{\calcsimmenusfont XXXXXXXXXXXXXXXXXXX}}%
+ \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 XXXXX}}%
+ \addtolength{\calcsimmenusmenutc}{2pt}%
+ \settowidth{\calcsimmenusitemtc}{\hbox{\calcsimmenusfont XXXXXXXXXXXXXXXXXXXXXX}}%
+ \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 XXXXX}}%
+ \addtolength{\calcsimmenusmenutc}{2pt}%
+ \settowidth{\calcsimmenusitemtc}{\hbox{\calcsimmenusfont XXXXXXXXXXXXXXXXXXXX}}%
+ \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{X\tmplengthmenunwks}}%
+ }%
+ {%
+ \foreach \i in {1,...,\calcsimmenuslen}{\xdef\tmplengthmenunwks{X\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 XXXXX}}%
+ \addtolength{\calcsimmenusmenutc}{2pt}%
+ \settowidth{\calcsimmenusitemtc}{\hbox{\calcsimmenusfont XXXXXXXXXXXXXXXXXXXXX}}%
+ \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}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+ }%
+ {}%
+}
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/catppuccinpalette/catppuccinpalette.sty b/Master/texmf-dist/tex/latex/catppuccinpalette/catppuccinpalette.sty
index 4a907a6c0d2..7d9677428d1 100644
--- a/Master/texmf-dist/tex/latex/catppuccinpalette/catppuccinpalette.sty
+++ b/Master/texmf-dist/tex/latex/catppuccinpalette/catppuccinpalette.sty
@@ -8,19 +8,29 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2024 by Lukas Heindl <oss.heindl+latex@protonmail.com>
-%% --------------------------------------------------------------------------
-%% 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.
+%% Copyright (c) 2021 Catppuccin
+%%
+%% Permission is hereby granted, free of charge, to any person obtaining a copy
+%% of this software and associated documentation files (the "Software"), to deal
+%% in the Software without restriction, including without limitation the rights
+%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+%% copies of the Software, and to permit persons to whom the Software is
+%% furnished to do so, subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in all
+%% copies or substantial portions of the Software.
+%%
+%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+%% SOFTWARE.
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{catppuccinpalette}
- [2024/05/22 v1.0.2 catppuccin xcolor palette]
+ [2024/08/13 v1.1.0 catppuccin xcolor palette]
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\RequirePackage{pgfopts}
\RequirePackage{xcolor}
@@ -28,16 +38,24 @@
\newif\ifcatppuccinpalette@textcolor
\pgfkeys{
/catppuccinPalette/.cd,
+Latte/.style={style=Latte},
+latte/.style={style=Latte},
+Frappe/.style={style=Frappe},
+frappe/.style={style=Frappe},
+Macchiato/.style={style=Macchiato},
+macchiato/.style={style=Macchiato},
+Mocha/.style={style=Mocha},
+mocha/.style={style=Mocha},
style/.is choice,
style/.value required,
style/Latte/.code = {\def\catppuccinpalette@style{Latte}},
-style/latte/.forward to = /catppuccinPalette/style/Latte,
+style/latte/.style = {style=Latte},
style/Frappe/.code = {\def\catppuccinpalette@style{Frappe}},
-style/frappe/.forward to = /catppuccinPalette/style/frappe,
+style/frappe/.style = {style=Frappe},
style/Macchiato/.code = {\def\catppuccinpalette@style{Macchiato}},
-style/macchiato/.forward to = /catppuccinPalette/style/Macchiato,
+style/macchiato/.style = {style=Macchiato},
style/Mocha/.code = {\def\catppuccinpalette@style{Mocha}},
-style/mocha/.forward to = /catppuccinPalette/style/Mocha,
+style/mocha/.style = {style=Mocha},
textcolor/.is if = catppuccinpalette@textcolor,
textcolor/.default = true,
pagecolor/.is if = catppuccinpalette@pagecolor,
@@ -47,7 +65,7 @@ textcolor = false,
pagecolor = false,
style = Latte,
}
-\ProcessPgfOptions*
+\ProcessPgfOptions{catppuccinPalette}
\preparecolorset{RGB/HTML}{CatLatte}{}{%
Rosewater,220,138,120/DC8A78;%
Flamingo,221,120,120/DD7878;%
@@ -81,6 +99,40 @@ Crust,220,224,232/DCE0E8%
\colorlet{CatLatteSuccess}{CatLatteGreen}
\colorlet{CatLatteWarning}{CatLatteYellow}
\colorlet{CatLatteError}{CatLatteRed}
+
+\preparecolorset{RGB/HTML}{CtpLatte}{}{%
+Rosewater,220,138,120/DC8A78;%
+Flamingo,221,120,120/DD7878;%
+Pink,234,118,203/EA76CB;%
+Mauve,136,57,239/8839EF;%
+Red,210,15,57/D20F39;%
+Maroon,230,69,83/E64553;%
+Peach,254,100,11/FE640B;%
+Yellow,223,142,29/DF8E1D;%
+Green,64,160,43/40A02B;%
+Teal,23,146,153/179299;%
+Sky,4,165,229/04A5E5;%
+Sapphire,32,159,181/209FB5;%
+Blue,30,102,245/1E66F5;%
+Lavender,114,135,253/7287FD;%
+Text,76,79,105/4C4F69;%
+Subtext1,92,95,119/5C5F77;%
+Subtext0,108,111,133/6C6F85;%
+Overlay2,124,127,147/7C7F93;%
+Overlay1,140,143,161/8C8FA1;%
+Overlay0,156,160,176/9CA0B0;%
+Surface2,172,176,190/ACB0BE;%
+Surface1,188,192,204/BCC0CC;%
+Surface0,204,208,218/CCD0DA;%
+Base,239,241,245/EFF1F5;%
+Mantle,230,233,239/E6E9EF;%
+Crust,220,224,232/DCE0E8%
+}
+\colorlet{CtpLatteBackground}{CtpLatteBase}
+\colorlet{CtpLatteLink}{CtpLatteBlue}
+\colorlet{CtpLatteSuccess}{CtpLatteGreen}
+\colorlet{CtpLatteWarning}{CtpLatteYellow}
+\colorlet{CtpLatteError}{CtpLatteRed}
\preparecolorset{RGB/HTML}{CatFrappe}{}{%
Rosewater,242,213,207/F2D5CF;%
Flamingo,238,190,190/EEBEBE;%
@@ -114,6 +166,41 @@ Crust,35,38,52/232634%
\colorlet{CatFrappeSuccess}{CatFrappeGreen}
\colorlet{CatFrappeWarning}{CatFrappeYellow}
\colorlet{CatFrappeError}{CatFrappeRed}
+
+\preparecolorset{RGB/HTML}{CtpFrappe}{}{%
+Rosewater,242,213,207/F2D5CF;%
+Flamingo,238,190,190/EEBEBE;%
+Pink,244,184,228/F4B8E4;%
+Mauve,202,158,230/CA9EE6;%
+Red,231,130,132/E78284;%
+Maroon,234,153,156/EA999C;%
+Peach,239,159,118/EF9F76;%
+Yellow,229,200,144/E5C890;%
+Green,166,209,137/A6D189;%
+Teal,129,200,190/81C8BE;%
+Sky,153,209,219/99D1DB;%
+Sapphire,133,193,220/85C1DC;%
+Blue,140,170,238/8CAAEE;%
+Lavender,186,187,241/BABBF1;%
+Text,198,208,245/C6D0F5;%
+Subtext1,181,191,226/B5BFE2;%
+Subtext0,165,173,206/A5ADCE;%
+Overlay2,148,156,187/949CBB;%
+Overlay1,131,139,167/838BA7;%
+Overlay0,115,121,148/737994;%
+Surface2,98,104,128/626880;%
+Surface1,81,87,109/51576D;%
+Surface0,65,69,89/414559;%
+Base,48,52,70/303446;%
+Mantle,41,44,60/292C3C;%
+Crust,35,38,52/232634%
+}
+\colorlet{CtpFrappeBackground}{CtpFrappeBase}
+\colorlet{CtpFrappeLink}{CtpFrappeBlue}
+\colorlet{CtpFrappeSuccess}{CtpFrappeGreen}
+\colorlet{CtpFrappeWarning}{CtpFrappeYellow}
+\colorlet{CtpFrappeError}{CtpFrappeRed}
+
\preparecolorset{RGB/HTML}{CatMacchiato}{}{%
Rosewater,244,219,214/F4DBD6;%
Flamingo,240,198,198/F0C6C6;%
@@ -147,6 +234,41 @@ Crust,24,25,38/181926%
\colorlet{CatMacchiatoSuccess}{CatMacchiatoGreen}
\colorlet{CatMacchiatoWarning}{CatMacchiatoYellow}
\colorlet{CatMacchiatoError}{CatMacchiatoRed}
+
+\preparecolorset{RGB/HTML}{CtpMacchiato}{}{%
+Rosewater,244,219,214/F4DBD6;%
+Flamingo,240,198,198/F0C6C6;%
+Pink,245,189,230/F5BDE6;%
+Mauve,198,160,246/C6A0F6;%
+Red,237,135,150/ED8796;%
+Maroon,238,153,160/EE99A0;%
+Peach,245,169,127/F5A97F;%
+Yellow,238,212,159/EED49F;%
+Green,166,218,149/A6DA95;%
+Teal,139,213,202/8BD5CA;%
+Sky,145,215,227/91D7E3;%
+Sapphire,125,196,228/7DC4E4;%
+Blue,138,173,244/8AADF4;%
+Lavender,183,189,248/B7BDF8;%
+Text,202,211,245/CAD3F5;%
+Subtext1,184,192,224/B8C0E0;%
+Subtext0,165,173,203/A5ADCB;%
+Overlay2,147,154,183/939AB7;%
+Overlay1,128,135,162/8087A2;%
+Overlay0,110,115,141/6E738D;%
+Surface2,91,96,120/5B6078;%
+Surface1,73,77,100/494D64;%
+Surface0,54,58,79/363A4F;%
+Base,36,39,58/24273A;%
+Mantle,30,32,48/1E2030;%
+Crust,24,25,38/181926%
+}
+\colorlet{CtpMacchiatoBackground}{CtpMacchiatoBase}
+\colorlet{CtpMacchiatoLink}{CtpMacchiatoBlue}
+\colorlet{CtpMacchiatoSuccess}{CtpMacchiatoGreen}
+\colorlet{CtpMacchiatoWarning}{CtpMacchiatoYellow}
+\colorlet{CtpMacchiatoError}{CtpMacchiatoRed}
+
\preparecolorset{RGB/HTML}{CatMocha}{}{%
Rosewater,245,224,220/F5E0DC;%
Flamingo,242,205,205/F2CDCD;%
@@ -180,43 +302,117 @@ Crust,17,17,27/11111B%
\colorlet{CatMochaSuccess}{CatMochaGreen}
\colorlet{CatMochaWarning}{CatMochaYellow}
\colorlet{CatMochaError}{CatMochaRed}
-\colorlet{CatRosewater}{Cat\catppuccinpalette@style Rosewater}
-\colorlet{CatFlamingo}{Cat\catppuccinpalette@style Flamingo}
-\colorlet{CatPink}{Cat\catppuccinpalette@style Pink}
-\colorlet{CatMauve}{Cat\catppuccinpalette@style Mauve}
-\colorlet{CatRed}{Cat\catppuccinpalette@style Red}
-\colorlet{CatMaroon}{Cat\catppuccinpalette@style Maroon}
-\colorlet{CatPeach}{Cat\catppuccinpalette@style Peach}
-\colorlet{CatYellow}{Cat\catppuccinpalette@style Yellow}
-\colorlet{CatGreen}{Cat\catppuccinpalette@style Green}
-\colorlet{CatTeal}{Cat\catppuccinpalette@style Teal}
-\colorlet{CatSky}{Cat\catppuccinpalette@style Sky}
-\colorlet{CatSapphire}{Cat\catppuccinpalette@style Sapphire}
-\colorlet{CatBlue}{Cat\catppuccinpalette@style Blue}
-\colorlet{CatLavender}{Cat\catppuccinpalette@style Lavender}
-\colorlet{CatText}{Cat\catppuccinpalette@style Text}
-\colorlet{CatSubtext1}{Cat\catppuccinpalette@style Subtext1}
-\colorlet{CatSubtext0}{Cat\catppuccinpalette@style Subtext0}
-\colorlet{CatOverlay2}{Cat\catppuccinpalette@style Overlay2}
-\colorlet{CatOverlay1}{Cat\catppuccinpalette@style Overlay1}
-\colorlet{CatOverlay0}{Cat\catppuccinpalette@style Overlay0}
-\colorlet{CatSurface2}{Cat\catppuccinpalette@style Surface2}
-\colorlet{CatSurface1}{Cat\catppuccinpalette@style Surface1}
-\colorlet{CatSurface0}{Cat\catppuccinpalette@style Surface0}
-\colorlet{CatBase}{Cat\catppuccinpalette@style Base}
-\colorlet{CatMantle}{Cat\catppuccinpalette@style Mantle}
-\colorlet{CatCrust}{Cat\catppuccinpalette@style Crust}
-\colorlet{CatBackground}{Cat\catppuccinpalette@style Base}
-\colorlet{CatLink}{Cat\catppuccinpalette@style Blue}
-\colorlet{CatSuccess}{Cat\catppuccinpalette@style Green}
-\colorlet{CatWarning}{Cat\catppuccinpalette@style Yellow}
-\colorlet{CatError}{Cat\catppuccinpalette@style Red}
-\ifcatppuccinpalette@pagecolor
-\pagecolor{CatBackground}
-\fi
-\ifcatppuccinpalette@textcolor
-\color{CatText}
-\fi
+
+\preparecolorset{RGB/HTML}{CtpMocha}{}{%
+Rosewater,245,224,220/F5E0DC;%
+Flamingo,242,205,205/F2CDCD;%
+Pink,245,194,231/F5C2E7;%
+Mauve,203,166,247/CBA6F7;%
+Red,243,139,168/F38BA8;%
+Maroon,235,160,172/EBA0AC;%
+Peach,250,179,135/FAB387;%
+Yellow,249,226,175/F9E2AF;%
+Green,166,227,161/A6E3A1;%
+Teal,148,226,213/94E2D5;%
+Sky,137,220,235/89DCEB;%
+Sapphire,116,199,236/74C7EC;%
+Blue,137,180,250/89B4FA;%
+Lavender,180,190,254/B4BEFE;%
+Text,205,214,244/CDD6F4;%
+Subtext1,186,194,222/BAC2DE;%
+Subtext0,166,173,200/A6ADC8;%
+Overlay2,147,153,178/9399B2;%
+Overlay1,127,132,156/7F849C;%
+Overlay0,108,112,134/6C7086;%
+Surface2,88,91,112/585B70;%
+Surface1,69,71,90/45475A;%
+Surface0,49,50,68/313244;%
+Base,30,30,46/1E1E2E;%
+Mantle,24,24,37/181825;%
+Crust,17,17,27/11111B%
+}
+\colorlet{CtpMochaBackground}{CtpMochaBase}
+\colorlet{CtpMochaLink}{CtpMochaBlue}
+\colorlet{CtpMochaSuccess}{CtpMochaGreen}
+\colorlet{CtpMochaWarning}{CtpMochaYellow}
+\colorlet{CtpMochaError}{CtpMochaRed}
+
+\colorlet{CatRosewater}{Ctp\catppuccinpalette@style Rosewater}
+\colorlet{CatFlamingo}{Ctp\catppuccinpalette@style Flamingo}
+\colorlet{CatPink}{Ctp\catppuccinpalette@style Pink}
+\colorlet{CatMauve}{Ctp\catppuccinpalette@style Mauve}
+\colorlet{CatRed}{Ctp\catppuccinpalette@style Red}
+\colorlet{CatMaroon}{Ctp\catppuccinpalette@style Maroon}
+\colorlet{CatPeach}{Ctp\catppuccinpalette@style Peach}
+\colorlet{CatYellow}{Ctp\catppuccinpalette@style Yellow}
+\colorlet{CatGreen}{Ctp\catppuccinpalette@style Green}
+\colorlet{CatTeal}{Ctp\catppuccinpalette@style Teal}
+\colorlet{CatSky}{Ctp\catppuccinpalette@style Sky}
+\colorlet{CatSapphire}{Ctp\catppuccinpalette@style Sapphire}
+\colorlet{CatBlue}{Ctp\catppuccinpalette@style Blue}
+\colorlet{CatLavender}{Ctp\catppuccinpalette@style Lavender}
+\colorlet{CatText}{Ctp\catppuccinpalette@style Text}
+\colorlet{CatSubtext1}{Ctp\catppuccinpalette@style Subtext1}
+\colorlet{CatSubtext0}{Ctp\catppuccinpalette@style Subtext0}
+\colorlet{CatOverlay2}{Ctp\catppuccinpalette@style Overlay2}
+\colorlet{CatOverlay1}{Ctp\catppuccinpalette@style Overlay1}
+\colorlet{CatOverlay0}{Ctp\catppuccinpalette@style Overlay0}
+\colorlet{CatSurface2}{Ctp\catppuccinpalette@style Surface2}
+\colorlet{CatSurface1}{Ctp\catppuccinpalette@style Surface1}
+\colorlet{CatSurface0}{Ctp\catppuccinpalette@style Surface0}
+\colorlet{CatBase}{Ctp\catppuccinpalette@style Base}
+\colorlet{CatMantle}{Ctp\catppuccinpalette@style Mantle}
+\colorlet{CatCrust}{Ctp\catppuccinpalette@style Crust}
+\colorlet{CatBackground}{Ctp\catppuccinpalette@style Base}
+\colorlet{CatLink}{Ctp\catppuccinpalette@style Blue}
+\colorlet{CatSuccess}{Ctp\catppuccinpalette@style Green}
+\colorlet{CatWarning}{Ctp\catppuccinpalette@style Yellow}
+\colorlet{CatError}{Ctp\catppuccinpalette@style Red}
+
+\NewDocumentCommand\CtpReinit{O{}}{%
+\pgfkeys{%
+/catppuccinPalette/.cd,%
+#1%
+}%
+\colorlet{CtpRosewater}{Ctp\catppuccinpalette@style Rosewater}%
+\colorlet{CtpFlamingo}{Ctp\catppuccinpalette@style Flamingo}%
+\colorlet{CtpPink}{Ctp\catppuccinpalette@style Pink}%
+\colorlet{CtpMauve}{Ctp\catppuccinpalette@style Mauve}%
+\colorlet{CtpRed}{Ctp\catppuccinpalette@style Red}%
+\colorlet{CtpMaroon}{Ctp\catppuccinpalette@style Maroon}%
+\colorlet{CtpPeach}{Ctp\catppuccinpalette@style Peach}%
+\colorlet{CtpYellow}{Ctp\catppuccinpalette@style Yellow}%
+\colorlet{CtpGreen}{Ctp\catppuccinpalette@style Green}%
+\colorlet{CtpTeal}{Ctp\catppuccinpalette@style Teal}%
+\colorlet{CtpSky}{Ctp\catppuccinpalette@style Sky}%
+\colorlet{CtpSapphire}{Ctp\catppuccinpalette@style Sapphire}%
+\colorlet{CtpBlue}{Ctp\catppuccinpalette@style Blue}%
+\colorlet{CtpLavender}{Ctp\catppuccinpalette@style Lavender}%
+\colorlet{CtpText}{Ctp\catppuccinpalette@style Text}%
+\colorlet{CtpSubtext1}{Ctp\catppuccinpalette@style Subtext1}%
+\colorlet{CtpSubtext0}{Ctp\catppuccinpalette@style Subtext0}%
+\colorlet{CtpOverlay2}{Ctp\catppuccinpalette@style Overlay2}%
+\colorlet{CtpOverlay1}{Ctp\catppuccinpalette@style Overlay1}%
+\colorlet{CtpOverlay0}{Ctp\catppuccinpalette@style Overlay0}%
+\colorlet{CtpSurface2}{Ctp\catppuccinpalette@style Surface2}%
+\colorlet{CtpSurface1}{Ctp\catppuccinpalette@style Surface1}%
+\colorlet{CtpSurface0}{Ctp\catppuccinpalette@style Surface0}%
+\colorlet{CtpBase}{Ctp\catppuccinpalette@style Base}%
+\colorlet{CtpMantle}{Ctp\catppuccinpalette@style Mantle}%
+\colorlet{CtpCrust}{Ctp\catppuccinpalette@style Crust}%
+\colorlet{CtpBackground}{Ctp\catppuccinpalette@style Base}%
+\colorlet{CtpLink}{Ctp\catppuccinpalette@style Blue}%
+\colorlet{CtpSuccess}{Ctp\catppuccinpalette@style Green}%
+\colorlet{CtpWarning}{Ctp\catppuccinpalette@style Yellow}%
+\colorlet{CtpError}{Ctp\catppuccinpalette@style Red}%
+\ifcatppuccinpalette@pagecolor%
+\pagecolor{CtpBackground}%
+\fi%
+\ifcatppuccinpalette@textcolor%
+\color{CtpText}%
+\fi%
+}
+\CtpReinit[]
\endinput
%%
%% End of file `catppuccinpalette.sty'.
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/changebar/changebar.sty b/Master/texmf-dist/tex/latex/changebar/changebar.sty
index 2de6b8218f0..c3da9e8eca8 100644
--- a/Master/texmf-dist/tex/latex/changebar/changebar.sty
+++ b/Master/texmf-dist/tex/latex/changebar/changebar.sty
@@ -37,7 +37,7 @@
%% Copyright 1994-2024 (C) Johannes Braams. All rights reserved.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{changebar}
- [2024/01/09 v3.7d Indicate changes with marginal bars]
+ [2024/07/17 v3.7e Indicate changes with marginal bars]
\def\cb@maxpoint{80}
\def\cb@minpoint{1}
\def\cb@nil{0}
@@ -111,7 +111,7 @@
\immediate\openout\cb@writexy=\jobname.cb2\relax
\fi
\gdef\cb@pdfxy##1##2##3##4##5{%
- \immediate\write\cb@writexy{##1.##2p##3;##4;##5}%
+ \immediate\write\cb@writexy{##1.##2p##3/##4/##5}%
\expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}}
\else\cb@pdftexerror\fi\fi\fi}
\def\cb@pdftexerror{\PackageError
@@ -131,7 +131,7 @@
\immediate\openout\cb@writexy=\jobname.cb2\relax
\fi
\gdef\cb@pdfxy##1##2##3##4##5{%
- \immediate\write\cb@writexy{##1.##2p##3;##4;##5}%
+ \immediate\write\cb@writexy{##1.##2p##3/##4/##5}%
\expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}}
\gdef\sec@nd@ftw@##1 ##2{##2}
\fi}
@@ -151,7 +151,7 @@
\immediate\openout\cb@writexy=\jobname.cb2\relax
\fi
\gdef\cb@pdfxy##1##2##3##4##5{%
- \immediate\write\cb@writexy{##1.##2p##3;##4;##5}%
+ \immediate\write\cb@writexy{##1.##2p##3/##4/##5}%
\expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}}
\fi}
\def\cb@luatexerror{\PackageError
@@ -384,9 +384,9 @@
\fi
\fi
}
- \def\cb@pdffind##1##2##3.##4p##5;##6;##7pt##8\relax##9{%
+ \def\cb@pdffind##1##2##3.##4p##5/##6/##7pt##8\relax##9{%
\def\cb@next{%
- \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5;##6;##7pt}}%
+ \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5/##6/##7pt}}%
\ifnum ##1=##3
\ifnum ##2=##4
\def\cb@pdfx{##5sp}%
@@ -422,7 +422,7 @@
\fi
\cb@next
}%
- \def\cb@pdfparsexy##1.##2p##3;##4;##5pt{%
+ \def\cb@pdfparsexy##1.##2p##3/##4/##5pt{%
\def\cb@pdfpg{##2}}%
\def\cb@defpoint##1##2{%
\if@filesw
@@ -443,7 +443,7 @@
\ifnum##1>99 1\else
\ifnum##1<10 0.0\the##1\else
0.\the##1\fi\fi\fi}
-\def\cb@pdf@scale{0.996264009963}
+ \def\cb@pdf@scale{0.996264009963}
\def\cb@connect##1##2##3{%
\cb@findpdfpoint{##1}\cb@pagecount
\ifx\cb@pdfx\relax\cb@rerun
@@ -524,9 +524,9 @@
\fi
\fi
}
- \def\cb@pdffind##1##2##3.##4p##5;##6;##7pt##8\relax##9{%
+ \def\cb@pdffind##1##2##3.##4p##5/##6/##7pt##8\relax##9{%
\def\cb@next{%
- \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5;##6;##7pt}}%
+ \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5/##6/##7pt}}%
\ifnum ##1=##3
\ifnum ##2=##4
\def\cb@pdfx{##5sp}%
@@ -562,7 +562,7 @@
\fi
\cb@next
}%
- \def\cb@pdfparsexy##1.##2p##3;##4;##5pt{%
+ \def\cb@pdfparsexy##1.##2p##3/##4/##5pt{%
\def\cb@pdfpg{##2}}%
\def\cb@defpoint##1##2{%
\if@filesw
@@ -583,7 +583,7 @@
\ifnum##1>99 1\else
\ifnum##1<10 0.0\the##1\else
0.\the##1\fi\fi\fi}
-\def\cb@pdf@scale{0.996264009963}
+ \def\cb@pdf@scale{0.996264009963}
\def\cb@connect##1##2##3{%
\cb@findpdfpoint{##1}\cb@pagecount
\ifx\cb@pdfx\relax\cb@rerun
@@ -665,9 +665,9 @@
\fi
\fi
}
- \def\cb@pdffind##1##2##3.##4p##5;##6;##7pt##8\relax##9{%
+ \def\cb@pdffind##1##2##3.##4p##5/##6/##7pt##8\relax##9{%
\def\cb@next{%
- \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5;##6;##7pt}}%
+ \cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5/##6/##7pt}}%
\ifnum ##1=##3
\ifnum ##2=##4
\def\cb@pdfx{##5sp}%
@@ -703,7 +703,7 @@
\fi
\cb@next
}%
- \def\cb@pdfparsexy##1.##2p##3;##4;##5pt{%
+ \def\cb@pdfparsexy##1.##2p##3/##4/##5pt{%
\def\cb@pdfpg{##2}}%
\def\cb@defpoint##1##2{%
\if@filesw
@@ -724,7 +724,7 @@
\ifnum##1>99 1\else
\ifnum##1<10 0.0\the##1\else
0.\the##1\fi\fi\fi}
-\def\cb@pdf@scale{0.996264009963}
+ \def\cb@pdf@scale{0.996264009963}
\def\cb@connect##1##2##3{%
\cb@findpdfpoint{##1}\cb@pagecount
\ifx\cb@pdfx\relax\cb@rerun
@@ -802,7 +802,7 @@
\newcommand*{\nochangebars}{%
\def\cb@start[##1]{\ignorespaces}%
\def\cb@delete[##1]{}%
- \def\cb@end{\ignorespacesafterend}
+ \def\cb@end{\ignorespacesafterend}%
}
\newlength{\changebarwidth}
\setlength{\changebarwidth}{2pt}
diff --git a/Master/texmf-dist/tex/latex/changelog/changelog.sty b/Master/texmf-dist/tex/latex/changelog/changelog.sty
index 4c95edd8051..b58e33479a7 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/09/17}{2.5.1}{Typesetting changelogs}
% Description: Provides the changelog environment for typesetting changelogs
% License: LPPL 1.3c
% Homepage: https://github.com/9999years/latex-changelog
@@ -210,24 +210,28 @@
{}
}
-\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 +251,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 +321,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/chemformula-ru/chemformula-ru.sty b/Master/texmf-dist/tex/latex/chemformula-ru/chemformula-ru.sty
index f1df3002c11..32b6e23fa15 100644
--- a/Master/texmf-dist/tex/latex/chemformula-ru/chemformula-ru.sty
+++ b/Master/texmf-dist/tex/latex/chemformula-ru/chemformula-ru.sty
@@ -1,5 +1,5 @@
%% The chemformula-ru package eliminates an incompatibility
-%% between the chemformula package and Russian settings (russian.ldf) of the babel package.
+%% between the chemformula package and Russian settings (russian.ldf) for the babel package.
%%
%% Copyright (c) 2024 by Alexey Kuznetsov (mailtokuznetsov at gmail.com)
%%
@@ -12,21 +12,21 @@
%% version 2008/05/04 or later.
%%
-\ProvidesPackage{chemformula-ru}[2024-03-01 Using chemformula package with babel-russian]
+\ProvidesPackage{chemformula-ru}[2024-07-10 Using chemformula package with babel-russian]
\DeclareOption{cosh2ch}{\def\cosh@ch{\DeclareRobustCommand\cosh{\mathop{\operator@font ch}\nolimits}}}
\DeclareOption{ch2Ch}{\def\ch@Ch{\DeclareRobustCommand\Ch{\mathop{\operator@font ch}\nolimits}}}
+\DeclareOption*{\PassOptionsToPackage\CurrentOption{chemformula}}
\ProcessOptions\relax
+\RequirePackage{chemformula}
+
\BeforeBeginEnvironment{document}{
- \IfPackageLoadedTF{chemformula}{
- \IfPackageLoadedWithOptionsTF{babel}{russian}{
- \let\@Chem@Formula\ch \let\ch\undefined
- \AtBeginDocument{ \let\ch\@Chem@Formula
- \@ifundefined{cosh@ch}{\relax}{\cosh@ch}
- \@ifundefined{ch@Ch}{\relax}{\ch@Ch}
- }
- } { \relax }
- } { \relax }
-}
+ \let\@Chem@Formula\ch \let\ch\undefined
+ \AtBeginDocument{
+ \let\ch\@Chem@Formula
+ \@ifundefined{cosh@ch}{\relax}{\cosh@ch}
+ \@ifundefined{ch@Ch}{\relax}{\ch@Ch}
+ } }
+
\endinput
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/circledtext/circledtext.sty b/Master/texmf-dist/tex/latex/circledtext/circledtext.sty
index f70b7168141..47c62817e77 100644
--- a/Master/texmf-dist/tex/latex/circledtext/circledtext.sty
+++ b/Master/texmf-dist/tex/latex/circledtext/circledtext.sty
@@ -19,7 +19,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{expl3}
-\ProvidesExplPackage{circledtext}{2022-04-28}{v1.1.0}
+\ProvidesExplPackage{circledtext}{2024-09-09}{v1.1.1}
{Typeset circled text with l3draw}
\RequirePackage { xtemplate, l3keys2e, l3draw, xparse }
@@ -187,18 +187,18 @@
% 正方形边长
\dim_compare:nNnTF \l_tmpa_dim > \l_tmpb_dim
{
- \dim_gset_eq:NN \l__circledtext_char_box_size_dim \l_tmpa_dim
+ \dim_set_eq:NN \l__circledtext_char_box_size_dim \l_tmpa_dim
}
{
- \dim_gset_eq:NN \l__circledtext_char_box_size_dim \l_tmpb_dim
+ \dim_set_eq:NN \l__circledtext_char_box_size_dim \l_tmpb_dim
}
% 设置基字符盒子正方形宽和高(相等)
- \dim_gset_eq:NN \charboxwd \l__circledtext_char_box_size_dim
- \dim_gset_eq:NN \charboxht \l__circledtext_char_box_size_dim
+ \dim_set_eq:NN \charboxwd \l__circledtext_char_box_size_dim
+ \dim_set_eq:NN \charboxht \l__circledtext_char_box_size_dim
% 外接圆半径
- \dim_gset:Nn \l__circledtext_char_box_radius_dim
+ \dim_set:Nn \l__circledtext_char_box_radius_dim
{
\fp_to_dim:n
{
@@ -244,6 +244,8 @@
% 类似\cs_new:cn __circledtext_char_box_construct_type_none:nnnnnn
\cs_new:cn { \__circledtext_char_box_type:n {#1} }
}
+\cs_generate_variant:Nn \__circledtext_new_char_box_construct:nn { V }
+\cs_generate_variant:Nn \__circledtext_new_char_box_construct:nn { x }
% 定义字符边框盒子类型
@@ -328,6 +330,105 @@
}
}
+% 无反色底层填充正方形
+\__circledtext_new_char_box_construct:nn { __lowerfilledsquare }
+ {
+ \draw_scope_begin:
+ \color_fill:n { lowerbgboxfill }
+ \draw_transform_shift:n { (#3-#3*#5)/2, (#4-#4*#6)/2 }
+ \draw_path_rectangle:nn { #1, #2 } { #3*#5, #4*#6 }
+ \draw_path_use_clear:n { fill }
+ \draw_scope_end:
+ }
+
+% 无反色上层填充正方形
+\__circledtext_new_char_box_construct:nn { __upperfilledsquare }
+ {
+ \draw_scope_begin:
+ \color_fill:n { upperbgboxfill }
+ \draw_transform_shift:n { (#3-#3*#5)/2, (#4-#4*#6)/2 }
+ \draw_path_rectangle:nn { #1, #2 } { #3*#5, #4*#6 }
+ \draw_path_use_clear:n { fill }
+ \draw_scope_end:
+ }
+
+% 无反色阴影填充正方形
+\__circledtext_new_char_box_construct:nn { __shadowfilledsquare }
+ {
+ \draw_scope_begin:
+ \color_fill:n { shadowboxfill }
+ \draw_transform_shift:n { (#3-#3*#5)/2 + \charboxwd * 0.1,
+ (#4-#4*#6)/2 - \charboxht * 0.1 }
+ \draw_path_rectangle:nn { #1, #2 } { #3*#5, #4*#6 }
+ \draw_path_use_clear:n { fill }
+ \draw_scope_end:
+ }
+
+% 无反色底层填充内切圆
+\__circledtext_new_char_box_construct:nn { __innerlowerfilledcircle }
+ {
+ \draw_scope_begin:
+ \color_fill:n { lowerbgboxfill }
+ \draw_path_circle:nn { #3/2, #4/2 } { #3*#5/2 }
+ \draw_path_use_clear:n { fill }
+ \draw_scope_end:
+ }
+
+% 无反色上层填充内切圆
+\__circledtext_new_char_box_construct:nn { __innerupperfilledcircle }
+ {
+ \draw_scope_begin:
+ \color_fill:n { upperbgboxfill }
+ \draw_path_circle:nn { #3/2, #4/2 } { #3*#5/2 }
+ \draw_path_use_clear:n { fill }
+ \draw_scope_end:
+ }
+
+% 无反色阴影填充内切圆
+\__circledtext_new_char_box_construct:nn { __innershadowfilledcircle }
+ {
+ \draw_scope_begin:
+ \color_fill:n { shadowboxfill }
+ \draw_transform_shift:n { \charboxwd*0.1, -\charboxht*0.1 }
+ \draw_path_circle:nn { #3/2, #4/2 } { #3*#5/2 }
+ \draw_path_use_clear:n { fill }
+ \draw_scope_end:
+ }
+
+% 无反色底层填充外接圆
+\__circledtext_new_char_box_construct:nn { __outerlowerfilledcircle }
+ {
+ \draw_scope_begin:
+ \color_fill:n { lowerbgboxfill }
+ \draw_path_circle:nn { #3/2, #4/2 }
+ { \l__circledtext_char_box_radius_dim*#5 }
+ \draw_path_use_clear:n { fill }
+ \draw_scope_end:
+ }
+
+% 无反色上层填充外接圆
+\__circledtext_new_char_box_construct:nn { __outerupperfilledcircle }
+ {
+ \draw_scope_begin:
+ \color_fill:n { upperbgboxfill }
+ \draw_path_circle:nn { #3/2, #4/2 }
+ { \l__circledtext_char_box_radius_dim*#5 }
+ \draw_path_use_clear:n { fill }
+ \draw_scope_end:
+ }
+
+% 无反色阴影填充外接圆
+\__circledtext_new_char_box_construct:nn { __outershadowfilledcircle }
+ {
+ \draw_scope_begin:
+ \color_fill:n { shadowboxfill }
+ \draw_transform_shift:n { \charboxwd*0.1, -\charboxht*0.1 }
+ \draw_path_circle:nn { #3/2, #4/2 }
+ { \l__circledtext_char_box_radius_dim*#5 }
+ \draw_path_use_clear:n { fill }
+ \draw_scope_end:
+ }
+
% 正方形边框
\__circledtext_new_char_box_construct:nn { __squarebox }
{
@@ -499,35 +600,47 @@
}
% 填充内切圆叠加正方形正十字线与内切圆边框
-\__circledtext_new_char_box_construct:nn { o+ }
+\clist_map_variable:nNn {o+,+o} \l_tmpa_tl
{
- \__circledtext_char_box_type_c:n { __innerfilledcircle } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __innercirclebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_new_char_box_construct:Vn \l_tmpa_tl
+ {
+ \__circledtext_char_box_type_c:n { __innerfilledcircle } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __innercirclebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
}
% 填充内切圆叠加内切圆斜十字线与内切圆边框
-\__circledtext_new_char_box_construct:nn { ox }
+\clist_map_variable:nNn {ox,xo} \l_tmpa_tl
{
- \__circledtext_char_box_type_c:n { __innerfilledcircle } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __innerdcross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __innercirclebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_new_char_box_construct:Vn \l_tmpa_tl
+ {
+ \__circledtext_char_box_type_c:n { __innerfilledcircle } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __innerdcross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __innercirclebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
}
% 填充内切圆叠加内切圆正斜十字线与内切圆边框
-\__circledtext_new_char_box_construct:nn { ox+ }
+\clist_map_variable:nNn {ox+,o+x,xo+,x+o,+ox,+xo} \l_tmpa_tl
{
- \__circledtext_char_box_type_c:n { __innerfilledcircle } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __innerdcross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __innercirclebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_new_char_box_construct:Vn \l_tmpa_tl
+ {
+ \__circledtext_char_box_type_c:n { __innerfilledcircle } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __innerdcross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __innercirclebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
}
% 内切圆斜十字线叠加正十字线
-\__circledtext_new_char_box_construct:nn { x+ }
+\clist_map_variable:nNn {x+,+x} \l_tmpa_tl
{
- \__circledtext_char_box_type_c:n { __innerdcross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_new_char_box_construct:Vn \l_tmpa_tl
+ {
+ \__circledtext_char_box_type_c:n { __innerdcross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
}
% 填充正方形叠加正方形边框
@@ -538,35 +651,47 @@
}
% 填充正方形叠加正方形正十字线与正方形边框
-\__circledtext_new_char_box_construct:nn { O+ }
+\clist_map_variable:nNn {O+,+O} \l_tmpa_tl
{
- \__circledtext_char_box_type_c:n { __filledsquare } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_new_char_box_construct:Vn \l_tmpa_tl
+ {
+ \__circledtext_char_box_type_c:n { __filledsquare } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
}
% 填充正方形叠加正方形斜十字线与正方形边框
-\__circledtext_new_char_box_construct:nn { OX }
+\clist_map_variable:nNn {OX,XO} \l_tmpa_tl
{
- \__circledtext_char_box_type_c:n { __filledsquare } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __dcross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_new_char_box_construct:Vn \l_tmpa_tl
+ {
+ \__circledtext_char_box_type_c:n { __filledsquare } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __dcross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
}
% 填充正方形叠加正方形斜正十字线与正方形边框
-\__circledtext_new_char_box_construct:nn { OX+ }
+\clist_map_variable:nNn {OX+,O+X,XO+,X+O,+OX,+XO} \l_tmpa_tl
{
- \__circledtext_char_box_type_c:n { __filledsquare } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __dcross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_new_char_box_construct:Vn \l_tmpa_tl
+ {
+ \__circledtext_char_box_type_c:n { __filledsquare } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __dcross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
}
% 正方形斜十字线叠加正十字线
-\__circledtext_new_char_box_construct:nn { X+ }
+\clist_map_variable:nNn {X+,+X} \l_tmpa_tl
{
- \__circledtext_char_box_type_c:n { __dcross } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_new_char_box_construct:Vn \l_tmpa_tl
+ {
+ \__circledtext_char_box_type_c:n { __dcross } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __scross } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
}
% 内切圆叠加同心82%内切圆边框
@@ -578,11 +703,14 @@
}
% 反色正方形叠加内切填充圆
-\__circledtext_new_char_box_construct:nn { Oo }
+\clist_map_variable:nNn {Oo,oO} \l_tmpa_tl
{
- \__circledtext_char_box_type_c:n { __negfilledsquare } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __innerfilledcircle } {#1} {#2} {#3} {#4} {#5} {#6}
- \__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_new_char_box_construct:Vn \l_tmpa_tl
+ {
+ \__circledtext_char_box_type_c:n { __negfilledsquare } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __innerfilledcircle } {#1} {#2} {#3} {#4} {#5} {#6}
+ \__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {#5} {#6}
+ }
}
% 正方形叠加同心82%正方形边框
@@ -592,6 +720,53 @@
\__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {#5} {#6}
\__circledtext_char_box_type_c:n { __squarebox } {#1} {#2} {#3} {#4} {0.82} {0.82}
}
+
+% 3同心圆叠加(类似中国象棋棋子形状)
+\__circledtext_new_char_box_construct:nn { ooo }
+ {
+ % 绘制填充外接圆阴影
+ \__circledtext_char_box_type_c:n { __outershadowfilledcircle }
+ {#1} {#2} {#3} {#4} {1.0} {1.0}
+ % 绘制填充外接圆外圈背景
+ \__circledtext_char_box_type_c:n { __outerlowerfilledcircle }
+ {#1} {#2} {#3} {#4} {#5} {#6}
+ % 绘制填充外接边环背景
+ \__circledtext_char_box_type_c:n { __outerupperfilledcircle }
+ {#1} {#2} {#3} {#4} {0.88} {0.88}
+ % 绘制填充外接圆内圈背景
+ \__circledtext_char_box_type_c:n { __outerlowerfilledcircle }
+ {#1} {#2} {#3} {#4} {0.72} {0.72}
+ % 绘制双边刻环线
+ \__circledtext_char_box_type_c:n { __outercirclebox }
+ {#1} {#2} {#3} {#4} {0.88} {0.88}
+ \__circledtext_char_box_type_c:n { __outercirclebox }
+ {#1} {#2} {#3} {#4} {0.72} {0.72}
+
+ }
+
+% 3同心正方形叠加
+\__circledtext_new_char_box_construct:nn { OOO }
+ {
+ % 绘制填充正方形阴影
+ \__circledtext_char_box_type_c:n { __shadowfilledsquare }
+ {#1} {#2} {#3} {#4} {1.0} {1.0}
+ % 绘制填充正方形外圈背景
+ \__circledtext_char_box_type_c:n { __lowerfilledsquare}
+ {#1} {#2} {#3} {#4} {#5} {#6}
+ % 绘制填充正方形边环背景
+ \__circledtext_char_box_type_c:n { __upperfilledsquare}
+ {#1} {#2} {#3} {#4} {0.88} {0.88}
+ % 绘制填充正方形内圈背景
+ \__circledtext_char_box_type_c:n { __lowerfilledsquare}
+ {#1} {#2} {#3} {#4} {0.72} {0.72}
+ % 绘制双边刻环线
+ \__circledtext_char_box_type_c:n { __squarebox }
+ {#1} {#2} {#3} {#4} {0.88} {0.88}
+ \__circledtext_char_box_type_c:n { __squarebox }
+ {#1} {#2} {#3} {#4} {0.72} {0.72}
+
+ }
+
\msg_new:nnn { circledtext } { box-exists } { The~ box~ type~ `#1~ not~ exists. }
% 缩放类型名称生成函数
@@ -874,6 +1049,49 @@
\cs_set_nopar:Npn \__circledtext_aux_color_boxfill:
{ \color_fill:nn #1 }
} ,
+
+ % 无反色时底层盒子背景填充颜色
+ lowerbgcolor .code:n = { \exp_args:Nx \tl_if_empty:nTF {#1}
+ {
+ \__circledtext_color_select:nn { lowerbgboxfill }
+ { yellow!70!red }
+ \cs_set_nopar:Npn \__circledtext_aux_color_boxfill:
+ { \color_fill:n { yellow!70!red } }
+ }{ \__circledtext_color_select:nn { lowerbgboxfill } { #1 }
+ \cs_set_nopar:Npn \__circledtext_aux_color_boxfill:
+ { \color_fill:n { #1 } }
+ }
+ } ,
+ lowerbgcolor .initial:n = {} ,
+
+ % 无反色时上层盒子背景填充颜色
+ upperbgcolor .code:n = { \exp_args:Nx \tl_if_empty:nTF {#1}
+ {
+ \__circledtext_color_select:nn { upperbgboxfill }
+ { yellow!80!black }
+ \cs_set_nopar:Npn \__circledtext_aux_color_boxfill:
+ { \color_fill:n { yellow!80!black } }
+ }{ \__circledtext_color_select:nn { upperbgboxfill } { #1 }
+ \cs_set_nopar:Npn \__circledtext_aux_color_boxfill:
+ { \color_fill:n { #1 } }
+ }
+ } ,
+ upperbgcolor .initial:n = {} ,
+
+ % 盒子阴影填充颜色
+ shadowcolor .code:n = { \exp_args:Nx \tl_if_empty:nTF {#1}
+ {
+ \__circledtext_color_select:nn { shadowboxfill }
+ { black!35!white }
+ \cs_set_nopar:Npn \__circledtext_aux_color_boxfill:
+ { \color_fill:n { black!35!white } }
+ }{ \__circledtext_color_select:nn { shadowboxfill } { #1 }
+ \cs_set_nopar:Npn \__circledtext_aux_color_boxfill:
+ { \color_fill:n { #1 } }
+ }
+ } ,
+ shadowcolor .initial:n = {} ,
+
% 笔画参数
charstroke .choice:,
charstroke .value_required:n = true,
@@ -965,17 +1183,17 @@
% 复制盒子准备缩放与输出
\coffin_set_eq:NN \l__circledtext_box_coffin \l__circledtext_char_coffin
- % % 测量盒子容器总高度(用内切圆则不需要)
- % \dim_set:Nn \l_tmpa_dim
- % { \__circledtext_coffin_ht_plus_dp:N \l__circledtext_box_coffin }
- % % 缩放字符盒子容器到字符大小
- % \coffin_scale:Nnn \l__circledtext_box_coffin
- % {
- % \dim_ratio:nn { \charboxht } { \l_tmpa_dim }
- % }
- % {
- % \dim_ratio:nn { \charboxht } { \l_tmpa_dim }
- % }
+ % 测量盒子容器总高度(用内切圆则不需要)
+ \dim_set:Nn \l_tmpa_dim
+ { \__circledtext_coffin_ht_plus_dp:N \l__circledtext_box_coffin }
+ % 缩放字符盒子容器到字符大小
+ \coffin_scale:Nnn \l__circledtext_box_coffin
+ {
+ \dim_ratio:nn { \charboxht } { \l_tmpa_dim }
+ }
+ {
+ \dim_ratio:nn { \charboxht } { \l_tmpa_dim }
+ }
% 根据指定的方式缩放盒子
\__circledtext_resize_c:n { \l__circledtext_resize_method_tl }
diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
index afa91d4b2b1..4f5ce00a0fc 100644
--- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
+++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
@@ -16,8 +16,8 @@
\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}
-\def\pgfcircversion{1.6.9}
-\def\pgfcircversiondate{2024/05/25}
+\def\pgfcircversion{1.7.0}
+\def\pgfcircversiondate{2024/08/03}
\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 19619e1f5b1..2a2af3a7d2b 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
@@ -34,7 +34,7 @@
\__csl_collect_bibliography:n
{
\lua_now:e
- { csl.bibliography("\l__csl_bib_filter_tl") }
+ { csl_citation_manager:bibliography("\l__csl_bib_filter_tl") }
}
}
}
@@ -53,11 +53,11 @@
}
\tl_use:N \l__csl_bibliography_tl
}
- { \msg_warning:nn { citation-style-language } { bibliography / empty } }
+ { \msg_warning:nn { citation-style-language } { empty-bibliography } }
\group_end:
}
-\msg_new:nnn { citation-style-language } { bibliography / empty }
+\msg_new:nnn { citation-style-language } { empty-bibliography }
{ The~ bibliography~ is~ empty. }
\DeclareDocumentCommand \bibliography { m }
@@ -108,11 +108,16 @@
\cs_new:Npn \__csl_write_aux_bibliography:n #1
{
\if@filesw
- \iow_now:Nn \@auxout { \csl@aux@bibliography {#1} }
+ \iow_now:Nx \@auxout
+ {
+ \token_to_str:N \csl@aux@bibliography
+ { \int_use:N \g__csl_ref_section_index_int }
+ {#1}
+ }
\fi
}
-\cs_new:Npn \csl@aux@bibliography #1 { }
+\cs_new:Npn \csl@aux@bibliography #1#2 { }
\tl_new:N \l__csl_bib_index_tl
@@ -182,7 +187,7 @@
}
{
\tl_set:Nn \@noitemerr
- { \msg_warning:nn { citation-style-language } { bibliography / empty } }
+ { \msg_warning:nn { citation-style-language } { empty-bibliography } }
\endlist
\group_end:
\exp_args:NV \__csl_print_bib_note:n \l__csl_bib_post_note_tl
@@ -355,6 +360,96 @@
}
+% ### Bibliography sections and segments
+
+
+\int_new:N \g__csl_ref_section_index_int
+\int_new:N \g__csl_max_ref_section_index_int
+\int_gset:Nn \g__csl_ref_section_index_int { 0 }
+\int_gset:Nn \g__csl_max_ref_section_index_int { 0 }
+
+\keys_define:nn { csl / ref-section }
+ {
+ style .code:n =
+ {
+ \tl_set:Nn \l__csl_style_tl {#1}
+ \renewcommand \csl@style {#1}
+ } ,
+ bib-resource .clist_set:N = \l__csl_bib_resources_clist ,
+ locale .tl_set:N = \l__csl_locale_tl ,
+ }
+
+\NewDocumentCommand \refsection { O { } }
+ {
+ \int_gincr:N \g__csl_max_ref_section_index_int
+ \int_gset_eq:NN \g__csl_ref_section_index_int \g__csl_max_ref_section_index_int
+
+ \tl_clear:N \l__csl_style_tl
+ \clist_clear:N \l__csl_bib_resources_clist
+ \tl_clear:N \l__csl_locale_tl
+ \keys_set:nn { csl / ref-section } { #1 }
+ \tl_if_empty:NTF \l__csl_style_tl
+ {
+ \tl_set_eq:NN \l__csl_style_tl \g__csl_global_style_tl
+ \tl_set_eq:NN \csl@style \l__csl_style_tl
+ }
+ {
+ \tl_set_eq:NN \csl@style \l__csl_style_tl
+ \exp_args:NV \__csl_write_aux_bibstyle:n \l__csl_style_tl
+ }
+ \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
+ { \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
+ { locale = \l__csl_locale_tl }
+ }
+ \sys_if_engine_luatex:TF
+ {
+ \lua_now:e
+ {
+ csl_citation_manager:begin_ref_section(
+ "\l__csl_style_tl",
+ "\clist_use:Nn \l__csl_bib_resources_clist { , }",
+ "\l__csl_locale_tl"
+ )
+ }
+ \str_if_eq:eeTF
+ {
+ \lua_now:n
+ {
+ tex.print(tostring(
+ csl_citation_manager.ref_section.initialized
+ ))
+ }
+ }
+ { true }
+ { \bool_set_true:N \l__csl_engine_initialized_bool }
+ { \bool_set_false:N \l__csl_engine_initialized_bool }
+ \__csl_get_style_class_luatex:
+ }
+ {
+ \__csl_get_style_class:
+ }
+ }
+
+\cs_set_eq:NN \newrefsection \refsection
+
+\cs_new:Npn \endrefsection {
+ \int_compare:nNnT { \g__csl_ref_section_index_int } > { 0 }
+ {
+ \int_gzero:N \g__csl_ref_section_index_int
+ \sys_if_engine_luatex:T
+ { \lua_now:n { csl_citation_manager:end_ref_section() } }
+ }
+}
+
+
% ### Bibliography Headings and Environments
\prop_new:N \l__csl_bib_env_begin_prop
@@ -381,7 +476,7 @@
{
\cs_if_exist:cF { __csl_head_ #1 :n }
{
- \msg_error:nnn { citation-style-language } { bib-heading-undefined }
+ \msg_error:nnn { citation-style-language } { undefined-bib-heading }
{#1}
}
\tl_if_blank:nTF {#2}
@@ -393,7 +488,7 @@
{ \exp_args:NV \label \l__csl_bib_head_label_tl }
}
-\msg_new:nnn { citation-style-language } { bib-heading-undefined }
+\msg_new:nnn { citation-style-language } { undefined-bib-heading }
{ Bibliography~ heading~ '#1'~ undefined. }
\keys_define:nn { csl / bib-heading }
@@ -426,6 +521,10 @@
\expandafter \newcommand \csname __csl_head_ #1 :n \endcsname [1] [ {#2} ]
}
+
+\cs_if_exist:NF \refname
+ { \cs_set:Npn \refname { References } }
+
\cs_if_exist:NTF \chapter
{
% `book` or `report`
@@ -437,19 +536,19 @@
\defbibheading { biblist } [ \biblistname ]
{
\chapter* {#1}
- \@mkboth { \MakeMarkcase {#1} } { \MakeMarkcase {#1} }
+ \@mkboth { \MakeUppercase {#1} } { \MakeUppercase {#1} }
}
\defbibheading { bibintoc } [ \bibname ]
{
\chapter* {#1}
\addcontentsline { toc } { chapter } {#1}
- \@mkboth { \MakeMarkcase {#1} } { \MakeMarkcase {#1} }
+ \@mkboth { \MakeUppercase {#1} } { \MakeUppercase {#1} }
}
\defbibheading { biblistintoc } [ \biblistname ]
{
\chapter* {#1}
\addcontentsline { toc } { chapter } {#1}
- \@mkboth { \MakeMarkcase {#1} } { \MakeMarkcase {#1} }
+ \@mkboth { \MakeUppercase {#1} } { \MakeUppercase {#1} }
}
\defbibheading { bibnumbered } [ \bibname ]
{ \chapter {#1} }
@@ -459,7 +558,7 @@
{
\section* {#1}
\if@twoside
- \markright { \MakeMarkcase {#1} }
+ \markright { \MakeUppercase {#1} }
\fi
}
\defbibheading { subbibintoc } [ \refname ]
@@ -467,7 +566,7 @@
\section* {#1}
\addcontentsline { toc } { section } {#1}
\if@twoside
- \markright { \MakeMarkcase {#1} }
+ \markright { \MakeUppercase {#1} }
\fi
}
\defbibheading { subbibnumbered } [ \refname ]
@@ -483,19 +582,19 @@
\defbibheading { biblist } [ \biblistname ]
{
\section* {#1}
- \@mkboth { \MakeMarkcase {#1} } { \MakeMarkcase {#1} }
+ \@mkboth { \MakeUppercase {#1} } { \MakeUppercase {#1} }
}
\defbibheading { bibintoc } [ \refname ]
{
\section* {#1}
\addcontentsline { toc } { section } {#1}
- \@mkboth { \MakeMarkcase {#1} } { \MakeMarkcase {#1} }
+ \@mkboth { \MakeUppercase {#1} } { \MakeUppercase {#1} }
}
\defbibheading { biblistintoc } [ \biblistname ]
{
\section* {#1}
\addcontentsline { toc } { section } {#1}
- \@mkboth { \MakeMarkcase {#1} } { \MakeMarkcase {#1} }
+ \@mkboth { \MakeUppercase {#1} } { \MakeUppercase {#1} }
}
\defbibheading { bibnumbered } [ \refname ]
{ \section {#1} }
@@ -531,7 +630,7 @@
{
\prop_get:NnNF \l__csl_bib_notes_prop {#1} \l_tmpa_tl
{
- \msg_error:nnn { citation-style-language } { bib-note-undefined }
+ \msg_error:nnn { citation-style-language } { undefined-bib-note }
{#1}
}
\tl_if_empty:NF \l_tmp_tl
@@ -547,7 +646,7 @@
}
}
-\msg_new:nnn { citation-style-language } { bib-note-undefined }
+\msg_new:nnn { citation-style-language } { undefined-bib-note }
{ Bibliography~ note~ '#1'~ undefined. }
@@ -593,7 +692,7 @@
\tl_put_right:Nn \l_tmpa_tl { ##1 = {##2} }
}
\sys_if_engine_luatex:T
- { \lua_now:e { csl.set_categories("\l_tmpa_tl") } }
+ { \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_right:NV \l_tmpa_tl \c_right_brace_str
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 e7683b5a900..38128a99d82 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
@@ -7,13 +7,33 @@
% ## Citation commands
\DeclareDocumentCommand \cite { s o o m }
- { \__csl_cite:nnnn {#1} {#2} {#3} {#4} }
+ {
+ \IfBooleanTF {#1}
+ {
+ \bool_if:NTF \l__csl_note_bool
+ { \__csl_cite_in_text:nnnn {#2} {#3} {#4} { } }
+ { \__csl_cite_in_text:nnnn {#2} {#3} {#4} { suppress-author } }
+ }
+ {
+ \bool_if:NTF \l__csl_note_bool
+ { \__csl_cite_note:nnnn {#2} {#3} {#4} { } }
+ { \__csl_cite_in_text:nnnn {#2} {#3} {#4} { } }
+ }
+ }
\NewDocumentCommand \parencite { s o o m }
- { \__csl_cite:nnnn {#1} {#2} {#3} {#4} }
+ {
+ \IfBooleanTF {#1}
+ {
+ \bool_if:NTF \l__csl_note_bool
+ { \__csl_cite_in_text:nnnn {#2} {#3} {#4} { } }
+ { \__csl_cite_in_text:nnnn {#2} {#3} {#4} { suppress-author } }
+ }
+ { \__csl_cite_parens:nnn {#2} {#3} {#4} }
+ }
\NewDocumentCommand \citep { o o m }
- { \__csl_cite:nnnn { \BooleanFalse } {#1} {#2} {#3} }
+ { \__csl_cite_parens:nnn {#1} {#2} {#3} }
\NewDocumentCommand \textcite { o o m }
{ \__csl_text_cite:nnn {#1} {#2} {#3} }
@@ -22,7 +42,7 @@
{ \__csl_text_cite:nnn {#1} {#2} {#3} }
\NewDocumentCommand \footcite { o o m }
- { \__csl_cite:nnnn { \BooleanFalse } {#1} {#2} {#3} }
+ { \__csl_cite_note:nnnn {#1} {#2} {#3} { } }
% \cites[⟨prenote⟩][⟨postnote⟩]{⟨key⟩}...[⟨prenote⟩][⟨postnote⟩]{⟨key⟩}
@@ -30,23 +50,16 @@
{ \__csl_cites: }
\NewDocumentCommand \citeauthor { o o m }
- { \__csl_cite_author:nnn {#1} {#2} {#3} }
+ { \__csl_cite_in_text:nnnn {#1} {#2} {#3} { author-only } }
% TODO: \citeyear
-% ATM the starred form is the same as non-star form.
-\NewDocumentCommand \citeyearpar { s o o m }
- {
- \IfBooleanT {#1}
- {
- \bool_if:NTF \l__csl_note_bool
- { \msg_error:nn { citation-style-language } { starred-cite-in-note-style } }
- }
- \__csl_cite_suppress_author:nnn {#2} {#3} {#4}
- }
+% Suppresses the author (from `natbib`).
+\NewDocumentCommand \citeyearpar { o o m }
+ { \__csl_cite_in_text:nnnn {#1} {#2} {#3} { suppress-author } }
\NewDocumentCommand \fullcite { o o m }
- { \__csl_full_cite:nnn {#1} {#2} {#3} }
+ { \__csl_cite_in_text:nnnn {#1} {#2} {#3} { full-cite } }
\seq_new:N \l__csl_cite_keys_seq
@@ -54,36 +67,77 @@
\prop_new:N \l__csl_citation_properties_prop
\prop_new:N \l__csl_citation_info_prop
-% \__csl_cite:nnnn #1#2#3#
-% #1: boolean of star form
-% #2: prenote
-% #3: postnote
-% #4: cite keys
-\cs_new:Npn \__csl_cite:nnnn #1#2#3#4
+% #1: prenote
+% #2: postnote
+% #3: cite keys
+% #4: mode
+\cs_new:Npn \__csl_cite_in_text:nnnn #1#2#3#4
{
- \tl_if_blank:nTF {#4}
- { \__csl_print_undefined_citation:n {#4} }
+ \tl_if_blank:nTF {#3}
+ { \__csl_print_undefined_citation:n {#3} }
{
- \seq_clear:N \l__csl_cite_keys_seq
- \seq_clear:N \l__csl_citation_items_seq
- \prop_clear:N \l__csl_citation_properties_prop
- \__csl_process_cite_input:nnn {#2} {#3} {#4}
- \__csl_process_citation_info:NN \l__csl_cite_keys_seq \l__csl_citation_items_seq
- \IfBooleanT {#1}
+ \__csl_cite_init:
+ \__csl_collect_citation_items:nnn {#1} {#2} {#3}
+ \__csl_process_citation_info:
+ \prop_put:Nnn \l__csl_citation_properties_prop { noteIndex } { 0 }
+ \tl_if_empty:nF {#4}
{
- \bool_if:NTF \l__csl_note_bool
- { \msg_warning:nn { citation-style-language } { starred-cite-in-note-style } }
+ \prop_put:Nnn \l__csl_citation_properties_prop { mode } {#4}
+ }
+ \__csl_make_citation:
+ }
+ }
+
+% #1: prenote
+% #2: postnote
+% #3: cite keys
+% #4: mode
+\cs_new:Npn \__csl_cite_note:nnnn #1#2#3#4
+ {
+ \bool_if:NTF \l__csl_in_note_bool
+ {
+ \tl_if_blank:nTF {#3}
+ { \__csl_print_undefined_citation:n {#3} }
+ {
+ \__csl_cite_init:
+ \__csl_collect_citation_items:nnn {#1} {#2} {#3}
+ \__csl_process_citation_info:
+ \tl_if_empty:nF {#4}
+ {
+ \prop_put:Nnn \l__csl_citation_properties_prop { mode } {#4}
+ }
+ \__csl_make_citation:
+ }
+ }
+ {
+ \footnote
+ {
+ \tl_if_blank:nTF {#3}
+ { \__csl_print_undefined_citation:n {#3} }
{
- \prop_put:Nnn \l__csl_citation_properties_prop { noteIndex } { 0 }
- \prop_put:Nnn \l__csl_citation_properties_prop { mode } { suppress-author }
+ \__csl_cite_init:
+ \__csl_collect_citation_items:nnn {#1} {#2} {#3}
+ \__csl_process_citation_info:
+ \tl_if_empty:nF {#4}
+ {
+ \prop_put:Nnn \l__csl_citation_properties_prop { mode } {#4}
+ }
+ \__csl_make_citation:
}
}
- \__csl_make_citation:N \l__csl_citation_info_prop
}
}
-\msg_new:nnn { citation-style-language } { starred-cite-in-note-style }
- { Starred~ variant~ of~ cite~ command~ does~ not~ work~ with~ note~ styles. }
+
+% #1: prenote
+% #2: postnote
+% #3: cite keys
+\cs_new:Npn \__csl_cite_parens:nnn #1#2#3
+ {
+ \bool_if:NTF \l__csl_note_bool
+ { ( \__csl_cite_in_text:nnnn {#1} {#2} {#3} { } ) }
+ { \__csl_cite_in_text:nnnn {#1} {#2} {#3} { } }
+ }
\cs_new:Npn \__csl_text_cite:nnn #1#2#3
@@ -91,29 +145,19 @@
\bool_if:NTF \l__csl_note_bool
{
% In note styles, the authors are printed in-text followed by a note.
- \bool_set_false:N \l__csl_note_bool
- \__csl_cite_author:nnn {#1} {#2} {#3}
- \bool_set_true:N \l__csl_note_bool
- \__csl_cite:nnnn { \BooleanFalse } {#1} {#2} {#3}
- }
- {
- \seq_clear:N \l__csl_cite_keys_seq
- \seq_clear:N \l__csl_citation_items_seq
- \prop_clear:N \l__csl_citation_properties_prop
- \__csl_process_cite_input:nnn {#1} {#2} {#3}
- \__csl_process_citation_info:NN \l__csl_cite_keys_seq \l__csl_citation_items_seq
- \prop_put:Nnn \l__csl_citation_properties_prop { noteIndex } { 0 }
- \prop_put:Nnn \l__csl_citation_properties_prop { mode } { composite }
- \__csl_make_citation:N \l__csl_citation_info_prop
+ \__csl_cite_in_text:nnnn {#1} {#2} {#3} { author-only }
+ \__csl_cite_note:nnnn {#1} {#2} {#3} { }
}
+ { \__csl_cite_in_text:nnnn {#1} {#2} {#3} { composite } }
}
+\bool_new:N \l__csl_multi_cite_bool
+
\cs_new:Npn \__csl_cites:
{
- \seq_clear:N \l__csl_cite_keys_seq
- \seq_clear:N \l__csl_citation_items_seq
- \prop_clear:N \l__csl_citation_properties_prop
+ \__csl_cite_init:
+ \bool_set_true:N \l__csl_multi_cite_bool
\__csl_next_cites:nnn
}
@@ -121,55 +165,35 @@
{
\tl_if_novalue:nTF {#3}
{
- \__csl_process_citation_info:NN \l__csl_cite_keys_seq \l__csl_citation_items_seq
- \__csl_make_citation:N \l__csl_citation_info_prop
+ \bool_if:NTF \l__csl_note_bool
+ {
+ \footnote
+ {
+ \__csl_process_citation_info:
+ \__csl_make_citation:
+ }
+ }
+ {
+ \__csl_process_citation_info:
+ \__csl_make_citation:
+ }
}
{
- \__csl_process_cite_input:nnn {#1} {#2} {#3}
+ \__csl_collect_citation_items:nnn {#1} {#2} {#3}
\__csl_next_cites:nnn
}
}
-\cs_new:Npn \__csl_cite_author:nnn #1#2#3
- {
- \seq_clear:N \l__csl_cite_keys_seq
- \seq_clear:N \l__csl_citation_items_seq
- \prop_clear:N \l__csl_citation_properties_prop
- \__csl_process_cite_input:nnn {#1} {#2} {#3}
- \__csl_process_citation_info:NN \l__csl_cite_keys_seq \l__csl_citation_items_seq
- \prop_put:Nnn \l__csl_citation_properties_prop { noteIndex } { 0 }
- \prop_put:Nnn \l__csl_citation_properties_prop { mode } { author-only }
- \bool_set_false:N \l__csl_note_bool
- \__csl_make_citation:N \l__csl_citation_info_prop
- }
-
-
-\cs_new:Npn \__csl_cite_suppress_author:nnn #1#2#3
- {
- \seq_clear:N \l__csl_cite_keys_seq
- \seq_clear:N \l__csl_citation_items_seq
- \prop_clear:N \l__csl_citation_properties_prop
- \__csl_process_cite_input:nnn {#1} {#2} {#3}
- \__csl_process_citation_info:NN \l__csl_cite_keys_seq \l__csl_citation_items_seq
- \prop_put:Nnn \l__csl_citation_properties_prop { noteIndex } { 0 }
- \prop_put:Nnn \l__csl_citation_properties_prop { mode } { suppress-author }
- \bool_set_false:N \l__csl_note_bool
- \__csl_make_citation:N \l__csl_citation_info_prop
- }
-
-
-\cs_new:Npn \__csl_full_cite:nnn #1#2#3
+\cs_new:Npn \__csl_cite_init:
{
+ \bool_set_false:N \l__csl_multi_cite_bool
+ \prop_clear:N \l__csl_citation_info_prop
\seq_clear:N \l__csl_cite_keys_seq
\seq_clear:N \l__csl_citation_items_seq
\prop_clear:N \l__csl_citation_properties_prop
- \__csl_process_cite_input:nnn {#1} {#2} {#3}
- \__csl_process_citation_info:NN \l__csl_cite_keys_seq \l__csl_citation_items_seq
- \prop_put:Nnn \l__csl_citation_properties_prop { noteIndex } { 0 }
- \prop_put:Nnn \l__csl_citation_properties_prop { mode } { full-cite }
- \bool_set_false:N \l__csl_note_bool
- \__csl_make_citation:N \l__csl_citation_info_prop
+ \tl_clear:N \l__csl_cite_prefix_tl
+ \tl_clear:N \l__csl_cite_suffix_tl
}
@@ -177,7 +201,7 @@
% \l__csl_citation_items_seq
% #1, #2: prenote/postnote
% #3: keys
-\cs_new:Npn \__csl_process_cite_input:nnn #1#2#3
+\cs_new:Npn \__csl_collect_citation_items:nnn #1#2#3
{
\tl_if_novalue:nTF {#2}
{
@@ -205,12 +229,13 @@
\prop_new:N \l__csl_cite_item_prop
-\tl_new:N \l__csl_prefix_tl
-\tl_new:N \l__csl_suffix_tl
+% Collect citation items into \l__csl_citation_items_seq
+% Append "{id={ITEM},locator={42},label={page}}" into \l__csl_citation_items_seq
+% #1: prenote
+% #2: postnote
+% #3: key
\cs_new:Npn \__csl_process_cite_item:nnn #1#2#3
- % #1: prenote, #2: postnote, #3: key
- % Save "{id={ITEM},locator={42},label={page}}" into \l__csl_citation_items_seq
{
\prop_clear:N \l__csl_cite_item_prop
\prop_put:Nnn \l__csl_cite_item_prop { id } {#3}
@@ -218,11 +243,12 @@
% { \prop_put:Nnn \l__csl_cite_item_prop { suppress-author } { true } }
% \bool_if:T \l__csl_author_only_bool
% { \prop_put:Nnn \l__csl_cite_item_prop { author-only } { true } }
+ \tl_clear:N \l__csl_cite_prefix_tl
+ \tl_clear:N \l__csl_cite_suffix_tl
\tl_if_empty:nF {#1}
{
- \tl_set:Nn \l__csl_prefix_tl {#1}
- \tl_put_right:NV \l__csl_prefix_tl \l__csl_prefix_separator_tl
- \prop_put:NnV \l__csl_cite_item_prop { prefix } \l__csl_prefix_tl
+ \tl_set:Nn \l__csl_cite_prefix_tl {#1}
+ \tl_put_right:NV \l__csl_cite_prefix_tl \l__csl_prefix_separator_tl
}
\tl_if_empty:nF {#2}
{
@@ -232,12 +258,26 @@
\regex_match:nnTF { \d+ } {#2}
{ \__csl_set_locator:nn { page } {#2} }
{
- \tl_set:Nn \l__csl_suffix_tl {#2}
- \tl_put_left:NV \l__csl_suffix_tl \l__csl_suffix_separator_tl
- \prop_put:NnV \l__csl_cite_item_prop { suffix } \l__csl_suffix_tl
+ \tl_set:Nn \l__csl_cite_suffix_tl {#2}
+ \tl_put_left:NV \l__csl_cite_suffix_tl \l__csl_suffix_separator_tl
}
}
}
+ % The affixes are treated as cite item affixes in a multi-cite command
+ % (like `\cites`). Otherwise they are citation affixes.
+ \bool_if:NTF \l__csl_multi_cite_bool
+ {
+ \tl_if_empty:NF \l__csl_cite_prefix_tl
+ { \prop_put:NnV \l__csl_cite_item_prop { prefix } \l__csl_cite_prefix_tl }
+ \tl_if_empty:NF \l__csl_cite_suffix_tl
+ { \prop_put:NnV \l__csl_cite_item_prop { suffix } \l__csl_cite_suffix_tl }
+ }
+ {
+ \tl_if_empty:NF \l__csl_cite_prefix_tl
+ { \prop_put:NnV \l__csl_citation_properties_prop { prefix } \l__csl_cite_prefix_tl }
+ \tl_if_empty:NF \l__csl_cite_suffix_tl
+ { \prop_put:NnV \l__csl_citation_properties_prop { suffix } \l__csl_cite_suffix_tl }
+ }
\__csl_serialize_prop:NN \l__csl_cite_item_prop \l_tmpa_tl
\tl_put_left:NV \l_tmpa_tl { \c_left_brace_str }
\tl_put_right:NV \l_tmpa_tl { \c_right_brace_str }
@@ -246,14 +286,24 @@
\cs_new:Npn \__csl_set_locator:nn #1#2
{
- \prop_put:Nnn \l__csl_cite_item_prop { label } {#1}
- \prop_put:Nnn \l__csl_cite_item_prop { locator } {#2}
+ \tl_if_empty:nTF {#2}
+ { \msg_warning:nnn { citation-style-language } { empty-locator } {#1} }
+ {
+ \prop_put:Nnn \l__csl_cite_item_prop { label } {#1}
+ \prop_put:Nnn \l__csl_cite_item_prop { locator } {#2}
+ }
}
+\msg_new:nnn { citation-style-language } { empty-locator }
+ { Empty~ '#1'~ locator. }
+
+\tl_new:N \l__csl_cite_prefix_tl
+\tl_new:N \l__csl_cite_suffix_tl
+
\keys_define:nn { csl / cite-item }
{
- prefix .prop_put:N = \l__csl_cite_item_prop,
- suffix .prop_put:N = \l__csl_cite_item_prop,
+ prefix .tl_set:N = \l__csl_cite_prefix_tl,
+ suffix .tl_set:N = \l__csl_cite_suffix_tl,
locator .prop_put:N = \l__csl_cite_item_prop,
label .prop_put:N = \l__csl_cite_item_prop,
suppress-author .prop_put:N = \l__csl_cite_item_prop,
@@ -301,17 +351,24 @@
% Load the cite keys and prepare:
% - \l__csl_citation_id_tl
% - \l__csl_citation_properties_prop
-%
-% #1: \l__csl_cite_keys_seq
-% #2: \l__csl_citation_items_seq
-\cs_new:Npn \__csl_process_citation_info:NN #1#2
+\cs_new:Npn \__csl_process_citation_info:
{
- \__csl_process_citation_id:NN \l__csl_citation_id_tl #1
- \__csl_get_note_index:N \l__csl_note_index_tl
+ \__csl_process_citation_id:
+ \__csl_get_note_index:
\prop_put:NnV \l__csl_citation_properties_prop { noteIndex } \l__csl_note_index_tl
+ \__csl_make_chapter_property:
\__csl_add_back_ref_info:
}
+\cs_new:Npn \__csl_make_chapter_property:
+ {
+ \int_if_exist:NT \c@chapter
+ {
+ \prop_put:Nnx \l__csl_citation_properties_prop { chapterIndex }
+ { \int_use:N \c@chapter }
+ }
+ }
+
\tl_new:N \l__csl_back_ref_tl
\prop_new:N \g__csl_back_ref_info_prop
@@ -361,8 +418,7 @@
\tl_new:N \l__csl_citation_properties_tl
% Write citation info to aux and print the citation contents.
-% #1: \l__csl_citation_info_prop
-\cs_new:Npn \__csl_make_citation:N #1
+\cs_new:Npn \__csl_make_citation:
{
\prop_clear:N \l__csl_citation_info_prop
% citationID
@@ -376,13 +432,13 @@
\__csl_serialize_prop:NN \l__csl_citation_info_prop \l__csl_citation_info_tl
% Write to .aux file
% \tl_show:N \l__csl_citation_info_tl
- \exp_args:NV \__csl_write_aux_citation:n \l__csl_citation_info_tl
+ \exp_args:NVV \__csl_write_aux_citation:nn \g__csl_ref_section_index_int \l__csl_citation_info_tl
\bool_if:NT \l__csl_regression_test_bool
{ \tl_show:N \l__csl_citation_info_tl }
% Print the citation string
\prop_get:NVNTF \g__csl_citations_prop \l__csl_citation_id_tl
\l__csl_citation_tl
- { \__csl_print_citation:N \l__csl_citation_tl }
+ { \__csl_print_citation: }
{
\bool_if:NTF \l__csl_engine_initialized_bool
{
@@ -393,7 +449,7 @@
\char_set_catcode_other:N \%
\char_set_catcode_other:N \#
\exp_args:NV \__csl_cite_aux:n \l__csl_citation_info_tl
- \__csl_print_citation:N \l__csl_citation_tl
+ \__csl_print_citation:
\group_end:
}
{
@@ -404,7 +460,7 @@
}
\cs_new:Npn \__csl_cite_aux:n #1
- { \lua_now:e { csl.cite("\lua_escape:n {#1}") } }
+ { \lua_now:e { csl_citation_manager:cite("\lua_escape:n {#1}") } }
% #1: seq
% #2: tl
@@ -437,13 +493,12 @@
\int_new:N \l__csl_citation_count_int
\prop_new:N \g__csl_citations_count_prop
-\cs_new:Npn \__csl_process_citation_id:NN #1#2
- % #1: \l__csl_citation_id_tl
- % #2: \l__csl_cite_keys_seq
- % Set \l__csl_citation_id_tl = "ITEM-1,ITEM-2@4".
+% Load cite keys from `\l__csl_cite_keys_seq` and make `\l__csl_citation_id_tl`.
+% 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
- { \seq_use:Nn #2 { , } }
+ { \seq_use:Nn \l__csl_cite_keys_seq { , } }
% \prop_show:N \g__csl_citations_count_prop
% \tl_show:N \l__csl_cite_keys_tl
\prop_get:NVNTF \g__csl_citations_count_prop \l__csl_cite_keys_tl
@@ -455,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 #1
+ \tl_set:Nx \l__csl_citation_id_tl
{ \l__csl_cite_keys_tl @ \int_use:N \l__csl_citation_count_int }
}
@@ -465,15 +520,11 @@
% Save the note number to \l__csl_note_index_tl
% TODO: multiple citations in a note
-\cs_new:Npn \__csl_get_note_index:N #1
+\cs_new:Npn \__csl_get_note_index:
% #1: \l__csl_note_index_tl
{
\bool_if:NTF \l__csl_note_bool
- {
- \int_set_eq:Nc \l_tmpa_int { c@ \@mpfn }
- \int_incr:N \l_tmpa_int
- \tl_set:Nx #1 { \int_use:N \l_tmpa_int }
- }
+ { \tl_set:Nx \l__csl_note_index_tl { \int_use:c { c@ \@mpfn } } }
{
\tl_if_empty:NTF \l__csl_class_tl
{
@@ -481,18 +532,19 @@
\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 #1 { \int_use:N \l_tmpa_int }
+ \tl_set:Nx \l__csl_note_index_tl { \int_use:N \l_tmpa_int }
}
- { \tl_set:Nx #1 { 0 } }
+ { \tl_set:Nn \l__csl_note_index_tl { 0 } }
}
}
-\cs_new:Npn \__csl_write_aux_citation:n #1
- % #1: citation info "{<citationID>}{{id=ITEM-1},{id=ITEM-2}}{<noteIndex>}"
+\cs_new:Npn \__csl_write_aux_citation:nn #1#2
+ % #1: refsection index (already converted to tl)
+ % #2: citation info "{<citationID>}{{id=ITEM-1},{id=ITEM-2}}{<noteIndex>}"
{
\if@filesw
- \iow_now:Nn \@auxout { \csl@aux@cite {#1} }
+ \iow_now:Nn \@auxout { \csl@aux@cite {#1} {#2} }
\fi
}
@@ -507,17 +559,11 @@
% #1: \l__csl_citation_tl
-\cs_new:Npn \__csl_print_citation:N #1
+\cs_new:Npn \__csl_print_citation:
{
\bool_if:NT \l__csl_regression_test_bool
- { \tl_show:N #1 }
- \bool_if:NTF \l__csl_note_bool
- {
- \bool_if:NTF \l__csl_in_note_bool
- {#1}
- { \footnote {#1} }
- }
- {#1}
+ { \tl_show:N \l__csl_citation_tl }
+ \l__csl_citation_tl
}
@@ -539,9 +585,7 @@
\bool_if:NT \l__csl_regression_test_bool
{ \tl_show:N \l__csl_citation_tl }
\group_begin:
- \bool_if:NTF \l__csl_note_bool
- { \footnote { \reset@font \l__csl_citation_tl } }
- { \reset@font \l__csl_citation_tl }
+ \reset@font \l__csl_citation_tl
\group_end:
}
@@ -550,8 +594,8 @@
\tl_set:Nn \l__csl_citation_tl { [ \textbf {#1} ] }
}
-% \msg_new:nnn { citation-style-language } { citation / undefined }
-% { Citation~ `#1'~ on~ page~ \thepage \space undefined~ \msg_line_context: . }
+% \msg_new:nnn { citation-style-language } { undefined-citation }
+% { Citation~ '#1'~ on~ page~ \thepage \space undefined~ \msg_line_context: . }
\cs_new:Npn \__csl_warn_citation_undefined:n #1
{
@@ -567,36 +611,39 @@
\cs_new:Npn \__csl_no_cite:n #1
{
- \seq_clear:N \l__csl_cite_keys_seq
- \seq_clear:N \l__csl_citation_items_seq
- \__csl_process_cite_input:nnn { } { } {#1}
+ \__csl_cite_init:
+ \__csl_collect_citation_items:nnn { } { } {#1}
\tl_set:Nx \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
{
citationID = { @nocite } ,
- citationItems = { \l__csl_cite_items_tl } ,
- properties = { noteIndex = { 0 } }
+ citationItems = { \tl_use:N \l__csl_cite_items_tl } ,
+ properties = { \tl_use:N \l__csl_citation_properties_tl }
}
\bool_if:NT \l__csl_regression_test_bool
{ \tl_show:N \l__csl_citation_info_tl }
- \exp_args:NV \__csl_no_cite_write_aux:n \l__csl_citation_info_tl
+ \exp_args:NVV \__csl_no_cite_write_aux:nn \g__csl_ref_section_index_int \l__csl_citation_info_tl
\sys_if_engine_luatex:T
- { \lua_now:n { csl.nocite("#1") } }
+ { \lua_now:n { csl_citation_manager:nocite("#1") } }
\tl_clear:N \l__csl_citation_tl
\bool_if:NT \l__csl_regression_test_bool
{ \tl_show:N \l__csl_citation_tl }
}
-\cs_new:Npn \__csl_no_cite_write_aux:n #1
+\cs_new:Npn \__csl_no_cite_write_aux:nn #1#2
{
\__csl_if_preamble:TF
{
\hook_gput_code:nnn { begindocument } { . }
- { \exp_args:Nx \__csl_write_aux_citation:n { #1 } }
+ { \__csl_write_aux_citation:nn {#1} {#2} }
}
- { \exp_args:Nx \__csl_write_aux_citation:n { #1 } }
+ { \__csl_write_aux_citation:nn {#1} {#2} }
}
@@ -612,10 +659,10 @@
% Used in aux files to register cite items.
% #1: a citation object
-\cs_set:Npn \csl@aux@cite #1
+\cs_set:Npn \csl@aux@cite #1#2
{
\sys_if_engine_luatex:T
- { \lua_now:e { csl.register_citation_info("\lua_escape:n {#1}") } }
+ { \lua_now:e { csl_citation_manager:register_citation_info(#1, "\lua_escape:n {#2}") } }
}
@@ -627,3 +674,10 @@
% #1: cite id
% #2: cite contents
\cs_new:Npn \cslcite #1#2 {#2}
+
+% This command is for use with hyperref.
+% #1: cite id
+\cs_new:Npn \cslundefinedcite #1 {
+ \textbf {#1}
+ \__csl_warn_citation_undefined:n {#1}
+}
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 ca44d0e4579..8de98b6a9c6 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
@@ -89,8 +89,8 @@
{
\BlockquoteDisable
{
- \cs_set_eq:NN \__csl_process_citation_info:NN \use_none:nn
- \cs_set_eq:NN \__csl_make_citation:N \use_none:n
+ \cs_set_eq:NN \__csl_process_citation_info: \relax
+ \cs_set_eq:NN \__csl_make_citation: \relax
}
}
@@ -98,25 +98,33 @@
% ### `hyperref`
\cs_set:Npn \__csl_hyperref_cite_item:nn #1#2
- { \hyper@@link [ cite ] { } { cite. #1 \@extra@b@citeb } { #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[%
- \ifx\Hy@raisedlink\@empty
- \hyper@anchorstart{cite.#2\@extra@b@citeb}%
- \@BIBLABEL{#1}%
- \hyper@anchorend
- \else
- \Hy@raisedlink{%
- \hyper@anchorstart{cite.#2\@extra@b@citeb}\hyper@anchorend
- }%
- \@BIBLABEL{#1}%
- \fi
- \hfill
- ]%
+ \H@item
+ [
+ \ifx \Hy@raisedlink \@empty
+ \hyper@anchorstart
+ { cite \int_use:N \g__csl_ref_section_index_int . #2 \@extra@b@citeb }
+ \@BIBLABEL {#1}
+ \hyper@anchorend
+ \else
+ \Hy@raisedlink
+ {
+ \hyper@anchorstart
+ { cite \int_use:N \g__csl_ref_section_index_int . #2 \@extra@b@citeb }
+ \hyper@anchorend
+ }
+ \@BIBLABEL {#1}
+ \fi
+ \hfill
+ ]
\@skiphyperreffalse
\ignorespaces
}
@@ -128,7 +136,8 @@
\Hy@raisedlink
{
\hyper@anchorstart
- { cite. #1 \@extra@b@citeb } \relax
+ { cite \int_use:N \g__csl_ref_section_index_int . #1 \@extra@b@citeb }
+ \relax
\hyper@anchorend
}
\ignorespaces
@@ -153,3 +162,21 @@
\cs_gset_eq:NN \cslcite \__csl_hyperref_cite_item:nn
}
}
+
+
+% ### `perpage`
+
+\hook_gput_code:nnn { package / perpage / after } { . }
+ {
+ \hook_gput_code:nnn { begindocument } { . }
+ {
+ \cs_if_exist:cT { c@pchk@footnote }
+ {
+ \cs_set:Npn \__csl_make_chapter_property:
+ {
+ \prop_put:Nnx \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-init.sty b/Master/texmf-dist/tex/latex/citation-style-language/citation-style-language-init.sty
index db83bced06c..9032b60fee8 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
@@ -16,8 +16,9 @@
{ \__csl_initialize_lua_module: }
{
\__csl_load_bbl:
- \__csl_read_style_class:
+ \__csl_get_style_class:
}
+ \__csl_set_ref_section_level:
}
@@ -25,19 +26,20 @@
\cs_new:Npn \__csl_write_aux_info:
{
+ \tl_if_empty:NF \l__csl_style_tl
+ { \exp_args:NV \__csl_write_aux_bibstyle:n \l__csl_style_tl }
+ \tl_if_empty:NT \l__csl_style_tl
+ { \tl_set_eq:NN \l__csl_style_tl \g__csl_aux_bibstyle_tl }
\tl_if_empty:NT \l__csl_style_tl
- {
- \tl_set_eq:NN \l__csl_style_tl \g__csl_aux_bibstyle_tl
- \edef \csl@style { \g__csl_aux_bibstyle_tl }
- }
- \tl_if_empty:VTF \l__csl_style_tl
{
\msg_warning:nn { citation-style-language } { missing-style-name }
\tl_set:Nn \l__csl_style_tl { apa }
}
- { \exp_args:NV \__csl_write_aux_bibstyle:n \l__csl_style_tl }
- \clist_if_empty:NTF \l__csl_bib_resources_clist
+ \tl_set_eq:NN \csl@style \l__csl_style_tl
+ \clist_if_empty:NT \l__csl_bib_resources_clist
{ \clist_set_eq:NN \l__csl_bib_resources_clist \g__csl_aux_bib_files_clist }
+ \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
{ \clist_use:Nn \l__csl_bib_resources_clist { , } }
@@ -48,7 +50,11 @@
\cs_new:Npn \__csl_write_aux_bibstyle:n #1
{
\if@filesw
- \iow_now:Nx \@auxout { \token_to_str:N \csl@aux@style {#1} }
+ \iow_now:Nx \@auxout
+ {
+ \token_to_str:N \csl@aux@style
+ { \int_use:N \g__csl_ref_section_index_int } {#1}
+ }
\fi
}
@@ -56,42 +62,60 @@
{
\if@filesw
% Full expansion for files like \jobname.bib
- \iow_now:Nx \@auxout { \token_to_str:N \csl@aux@data {#1} }
+ \iow_now:Nx \@auxout
+ {
+ \token_to_str:N \csl@aux@data
+ { \int_use:N \g__csl_ref_section_index_int } {#1}
+ }
\fi
}
% In earlier time, \bibdata{xxx.json} was used but this causes latexmk unable
% to find xxx.json.bib and it refuses to run the $bibtex procedure.
% John Collins suggests using a different command than \bibdata.
-\cs_new:Npn \csl@aux@data #1
- { \clist_gput_right:Nn \g__csl_aux_bib_files_clist {#1} }
+\cs_new:Npn \csl@aux@data #1#2
+ {
+ \str_if_eq:nnT {#1} { 0 }
+ { \clist_gput_right:Nn \g__csl_aux_bib_files_clist {#2} }
+ }
\cs_new:Npn \__csl_initialize_lua_module:
{
- \clist_if_empty:NT \l__csl_bib_resources_clist
- { \msg_warning:nn { citation-style-language } { empty-bib-resources } }
+ \bool_if:NT \l__csl_regression_test_bool
+ {
+ \lua_now:n { csl_citation_manager.regression_test = true }
+ }
+ \tl_set:Nx \l_tmpa_tl { \clist_use:Nn \l__csl_bib_resources_clist { , } }
\lua_now:e
{
- csl.init(
+ csl_citation_manager:init(
"\l__csl_style_tl",
- "\l__csl_bib_resources_clist",
+ "\l_tmpa_tl",
"\l__csl_locale_tl"
)
}
-
-
- \str_if_eq:eeT { \lua_now:n { tex.print(csl.initialized) } } { true }
+ \str_if_eq:eeTF
+ {
+ \lua_now:n
+ {
+ tex.print(tostring(
+ csl_citation_manager.ref_section.initialized
+ ))
+ }
+ }
+ { true }
{ \bool_set_true:N \l__csl_engine_initialized_bool }
- \__csl_get_style_class:
+ { \bool_set_false:N \l__csl_engine_initialized_bool }
+ \__csl_get_style_class_luatex:
\@ifpackageloaded { hyperref }
- { \lua_now:n { csl.enable_linking() } }
+ { \lua_now:n { csl_citation_manager:enable_linking() } }
{ }
}
\msg_new:nnn { citation-style-language } { missing-style-name }
- { Missing~ style~ name.\\Will~ use~ default~ APA~ style. }
+ { Missing~ style~ name.~ Will~ use~ default~ APA~ style. }
\msg_new:nnn { citation-style-language } { empty-bib-resources }
{ Empty~ bibliographic~ resources.~ Use~ \token_to_str:N \addbibresource. }
@@ -101,13 +125,16 @@
% In-text (including numeric or author-date) or note style
% \bool_new:N \l__csl_note_style_bool
-\cs_new:Npn \__csl_get_style_class: {
+\cs_new:Npn \__csl_get_style_class_luatex: {
+ \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 { csl.get_style_class() } }
+ \tl_set:Nx \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 }
}
+ \int_compare:nNnT { \g__csl_ref_section_index_int } = { 0 }
+ { \bool_gset_eq:NN \g__csl_global_note_class_bool \l__csl_note_bool }
}
@@ -225,7 +252,7 @@
turkmen = tk-TM,
ukrainian = uk-UA,
urdu = ur-IN,
- UKenglish = en-UK,
+ UKenglish = en-GB,
uppersorbian = hsb-DE,
USenglish = en-US,
usorbian = hsb-DE,
@@ -266,14 +293,16 @@
\cs_new:Npn \__csl_write_aux_options:n #1
{
\if@filesw
- \iow_now:Nn \@auxout { \csl@aux@options {#1} }
+ \iow_now:Nx \@auxout
+ {
+ \token_to_str:N \csl@aux@options
+ { \int_use:N \g__csl_ref_section_index_int } {#1}
+ }
\fi
}
-\cs_new:Npn \csl@aux@options #1 { }
-
+\cs_new:Npn \csl@aux@options #1#2 { }
-\tl_new:N \g__csl_bibliography_setup_tl
% Load .bbl at the beginning of document to save one pass of latex.
% In this procedure, the \cslcitation command is processed and the contents
@@ -283,10 +312,6 @@
% The \@input@ prints "No file ....bbl" in the .log file from which
% the latexmk decides to run $bibtex or not.
\__csl_collect_bibliography:n { \@input@ { \jobname .bbl } }
- % Execute the \cslsetup part to set the style class.
- % \tl_show:N \g__csl_bibliography_setup_tl
- \tl_use:N \g__csl_bibliography_setup_tl
- % \bool_show:N \l__csl_note_bool
}
@@ -302,8 +327,6 @@
% URLs may contain "%" and "#" characters.
\char_set_catcode_other:N \%
\char_set_catcode_other:N \#
- \RenewDocumentCommand \cslsetup { m }
- { \tl_gset:Nn \g__csl_bibliography_setup_tl { \cslsetup { ##1 } } }
\RenewDocumentEnvironment { thebibliography } { m +b }
{
\tl_set:Nn \l__csl_bib_index_tl { 1 }
@@ -321,29 +344,121 @@
\group_end:
}
+% At the moment, the `\csloptions` only reads the style class from `.bbl`
+% generated by `citeproc-lua`.
+% #1: refsection index
+% #2: refsection options
+\NewDocumentCommand \csloptions { m m }
+ { \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} },
+ }
+
+\prop_new:N \g__csl_style_class_prop
% The `\textcite` bahaves differently with note styles.
% Thus we read the style class from the `.csl` file with non-LuaTeX engines.
\ior_new:N \l__csl_style_ior
-\cs_new:Npn \__csl_read_style_class:
+\cs_new:Npn \__csl_get_style_class:
{
+ \tl_clear:N \l__csl_class_tl
\bool_set_false:N \l__csl_note_bool
+ \prop_get:NVNF \g__csl_style_class_prop \l__csl_style_tl \l__csl_class_tl
+ { \__csl_read_style_class: }
+ \tl_if_empty:NF \l__csl_class_tl
+ {
+ \str_case:VnTF \l__csl_class_tl
+ {
+ { note } { \bool_set_true:N \l__csl_note_bool }
+ { in-text } { \bool_set_false:N \l__csl_note_bool }
+ }
+ {
+ \int_compare:nNnT { \g__csl_ref_section_index_int } = { 0 }
+ {
+ \bool_gset_eq:NN \g__csl_global_note_class_bool \l__csl_note_bool
+ }
+ }
+ {
+ \msg_error:nnV { citation-style-language } { invalid-style-class }
+ \l__csl_class_tl
+ }
+ }
+ }
+
+\cs_new:Npn \__csl_read_style_class:
+ {
\tl_if_blank:VF \l__csl_style_tl
{
\exp_args:NNx \ior_open:Nn \l__csl_style_ior { \l__csl_style_tl .csl }
\ior_map_inline:Nn \l__csl_style_ior
{
% \tl_show:n {##1}
- \tl_if_in:nnT {##1} { class="note" }
+ \tl_if_in:nnTF {##1} { class="note" }
{
\tl_set:Nn \l__csl_class_tl { note }
\bool_set_true:N \l__csl_note_bool
+ \prop_gput:NVn \g__csl_style_class_prop \l__csl_style_tl { note }
\ior_map_break:
}
+ {
+ \tl_if_in:nnT {##1} { class="in-text" }
+ {
+ \tl_set:Nn \l__csl_class_tl { in-text }
+ \bool_set_false:N \l__csl_note_bool
+ \prop_gput:NVn \g__csl_style_class_prop \l__csl_style_tl { in-text }
+ \ior_map_break:
+ }
+ }
}
\ior_close:N \l__csl_style_ior
}
}
-% \msg_new:nnn { citation-style-language } { file / non-exist }
+\msg_new:nnn { citation-style-language } { invalid-style-class }
+ { Invalid~ style~ class~ '#1'. }
+
+% \msg_new:nnn { citation-style-language } { file-non-exist }
% { No~ file~ #1. }
+
+\cs_new:Npn \__csl_set_ref_section_level:
+ {
+ \str_case:Vn \l__csl_bib_ref_section_str
+ {
+ { none } { }
+ { part }
+ { \__csl_patch_ref_section:n { part } }
+ { chapter }
+ { \__csl_patch_ref_section:n { chapter } }
+ { chapter+ }
+ {
+ \__csl_patch_ref_section:n { part }
+ \__csl_patch_ref_section:n { chapter }
+ }
+ { section }
+ { \__csl_patch_ref_section:n { section } }
+ { section+ }
+ {
+ \__csl_patch_ref_section:n { part }
+ \__csl_patch_ref_section:n { chapter }
+ \__csl_patch_ref_section:n { section }
+ }
+ { subsection }
+ { \__csl_patch_ref_section:n { subsection } }
+ { subsection+ }
+ {
+ \__csl_patch_ref_section:n { part }
+ \__csl_patch_ref_section:n { chapter }
+ \__csl_patch_ref_section:n { section }
+ \__csl_patch_ref_section:n { subsection }
+ }
+ }
+ }
+
+\cs_new:Npn \__csl_patch_ref_section:n #1
+ {
+ \hook_gput_code:nnn { cmd / #1 / before } { . } { \newrefsection }
+ }
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 ebd497bcb71..c2c7ef8b64a 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
@@ -9,16 +9,23 @@
\RequirePackage{expl3}
\RequirePackage{xparse}
-\ProvidesExplPackage {citation-style-language} {2024-06-09} {0.5.0}
+\ProvidesExplPackage {citation-style-language} {2024-10-05} {0.6.5}
{Citation Style Language for LaTeX}
\RequirePackage { l3keys2e }
\RequirePackage { url }
+\prop_gput:Nnn \g_msg_module_name_prop { citation-style-language } { CSL }
+\prop_gput:Nnn \g_msg_module_type_prop { citeproc } { Module }
+
+\msg_new:nnn { citeproc } { citeproc-error } {#1}
+\msg_new:nnn { citeproc } { citeproc-warning } {#1}
+
+
% Check incompatible packages
\msg_new:nnn { citation-style-language } { incompatible-package }
- { The~ `#1'~ package~ is~ incompatible~ with~ `citation-style-language'. }
+ { Package~ '#1'~ is~ incompatible~ with~ 'citation-style-language'. }
\clist_map_inline:nn
{
@@ -34,7 +41,13 @@
% Load Lua module in LuaTeX
\sys_if_engine_luatex:T
- { \lua_now:n { csl = require("citeproc-latex") } }
+ {
+ \lua_now:n
+ {
+ citeproc_manager = require("citeproc-manager")
+ csl_citation_manager = citeproc_manager.CslCitationManager:new()
+ }
+ }
% Global options
@@ -44,11 +57,15 @@
\bool_new:N \l__csl_regression_test_bool
+\tl_new:N \g__csl_global_style_tl
\tl_new:N \l__csl_style_tl
\newcommand \csl@style {} % For latex2e interface
\tl_new:N \l__csl_class_tl % TODO: This should be removed
+\bool_new:N \g__csl_global_note_class_bool
\bool_new:N \l__csl_note_bool
+\clist_new:N \g__csl_global_bib_resources_clist
\clist_new:N \l__csl_bib_resources_clist
+\tl_new:N \g__csl_global_locale_tl
\tl_new:N \l__csl_locale_tl
\bool_new:N \l__csl_back_ref_bool
\str_new:N \l__csl_back_ref_type_str
@@ -62,6 +79,7 @@
\tl_new:N \l__csl_bib_item_sep_tl
\tl_new:N \l__csl_bib_par_indent_tl
\tl_new:N \l__csl_bib_hang_tl
+\str_new:N \l__csl_bib_ref_section_str
\keys_define:nn { csl }
@@ -71,14 +89,19 @@
{
\tl_set:Nn \l__csl_style_tl {#1}
\renewcommand \csl@style {#1}
+ \tl_gset:Nn \g__csl_global_style_tl {#1}
} ,
- class .code:n =
+ class .code:n = {} , % Deprecated, should be removed in the next release.
+ bib-resource .code:n =
{
- \tl_set:Nn \l__csl_class_tl {#1}
- \tl_if_eq:NnT \l__csl_class_tl { note }
- { \bool_set_true:N \l__csl_note_bool }
+ \clist_set:Nn \l__csl_bib_resources_clist {#1}
+ \clist_gset_eq:NN \g__csl_global_bib_resources_clist \l__csl_bib_resources_clist
+ } ,
+ locale .code:n =
+ {
+ \tl_set:Nn \l__csl_locale_tl {#1}
+ \tl_gset:Nn \g__csl_global_locale {#1}
} ,
- locale .tl_set:N = \l__csl_locale_tl ,
backref .choices:nn =
{ true, page, section, false }
{ \exp_args:NV \__csl_set_back_ref:n \l_keys_choice_tl } ,
@@ -92,13 +115,10 @@
bib-item-sep .tl_set:N = \l__csl_bib_item_sep_tl ,
bib-par-indent .tl_set:N = \l__csl_bib_par_indent_tl ,
bib-hang .tl_set:N = \l__csl_bib_hang_tl ,
- % The following keys are for easier interaction between LaTeX and
- % citeproc-lua engine and they are not designed for end-users.
- undefined-cites .code:n =
- {
- \clist_map_inline:nn {#1}
- { \__csl_warn_citation_undefined:n {##1} }
- } ,
+ % ref section
+ ref-section .choices:nn =
+ { none, part, chapter, chapter+, section, section+, subsection, subsection+ }
+ { \str_set:NV \l__csl_bib_ref_section_str \l_keys_choice_tl } ,
}
\cs_new:Npn \__csl_set_back_ref:n #1
@@ -124,6 +144,7 @@
bib-entry-page-break = true ,
bib-par-indent = { \parindent } ,
bib-hang = { 1 em } ,
+ ref-section = none ,
}
@@ -138,8 +159,11 @@
}
\tl_new:N \g__csl_aux_bibstyle_tl
-\cs_set:Npn \csl@aux@style #1
- { \tl_gset:Nn \g__csl_aux_bibstyle_tl {#1} }
+\cs_set:Npn \csl@aux@style #1#2
+ {
+ \str_if_eq:nnT {#1} { 0 }
+ { \tl_gset:Nn \g__csl_aux_bibstyle_tl {#2} }
+ }
% Write to an empty `.ccf` file for use with latexmk
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..2d27ec8635d 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
@@ -20,7 +20,7 @@
<name>Frank Bennett</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-08-27T14:30:55-04:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
@@ -46,7 +46,7 @@
<term name="no-publisher" form="short">n.p.</term>
<term name="on">on</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>
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..9edebba8375 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
@@ -14,7 +14,7 @@
<name>Sebastian Karcher</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-08-27T14:30:55-04:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
@@ -40,7 +40,7 @@
<term name="no-publisher" form="short">n.p.</term>
<term name="on">on</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>
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..903378388a3 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
@@ -17,7 +17,7 @@
<name>jakov</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-08-27T14:30:55-04:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
@@ -43,7 +43,7 @@
<term name="no-publisher" form="short">n.p.</term>
<term name="on">on</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>
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 93e874ce367..d9dd7552501 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-03-12T12:31:23-04:00</updated>
+ <updated>2024-08-12T16:22:23-04:00</updated>
</info>
<style-options punctuation-in-quote="true"/>
<date form="text">
@@ -685,7 +685,6 @@
</term>
<!-- VERB ROLE FORMS -->
- <term name="author" form="verb">by</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>
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 e4a0e9ef05d..acd44019875 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-03-09T15:20:54-05:00</updated>
+ <updated>2024-08-12T16:22:23-04:00</updated>
</info>
<style-options punctuation-in-quote="false"/>
<date form="text">
@@ -433,7 +433,6 @@
<single>series creator</single>
<multiple>series creators</multiple>
</term>
- <term name="author">作者</term>
<term name="director">導演</term>
<term name="editor">編輯</term>
<term name="editorial-director">主編</term>
@@ -485,7 +484,6 @@
<single>cre.</single>
<multiple>cres.</multiple>
</term>
- <term name="author" form="short">作者</term>
<term name="director" form="short">導演</term>
<term name="editor" form="short">編輯</term>
<term name="editorial-director" form="short">主編</term>
@@ -511,7 +509,6 @@
<term name="producer" form="verb">produced by</term>
<term name="script-writer" form="verb">written by</term>
<term name="series-creator" form="verb">created by</term>
- <term name="author" form="verb">著</term>
<term name="container-author" form="verb">著</term>
<term name="director" form="verb">指導</term>
<term name="editor" form="verb">編輯</term>
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/styles/american-medical-association.csl b/Master/texmf-dist/tex/latex/citation-style-language/styles/american-medical-association.csl
index 86dd573abcc..2b84d6e57a1 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/styles/american-medical-association.csl
+++ b/Master/texmf-dist/tex/latex/citation-style-language/styles/american-medical-association.csl
@@ -27,7 +27,7 @@
<category citation-format="numeric"/>
<category field="medicine"/>
<summary>The American Medical Association style as used in JAMA. Version 11 as per November-2019.</summary>
- <updated>2022-09-28T07:33:04-04:00</updated>
+ <updated>2024-08-04T17:48:30-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">
@@ -66,7 +66,7 @@
<group delimiter=". ">
<choose>
<if type="webpage post post-weblog" match="any">
- <date variable="issued" prefix="Published " form="text"/>
+ <date variable="issued" form="text"/>
</if>
</choose>
<group>
@@ -173,7 +173,7 @@
<if variable="URL">
<group delimiter=". " suffix=".">
<text variable="URL"/>
- <group prefix="Published ">
+ <group>
<date variable="issued">
<date-part name="month" suffix=" "/>
<date-part name="day" suffix=", "/>
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 79208912e77..97fc1afd6cf 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-06-06T05:59:25+00:00</updated>
+ <updated>2024-08-27T14:44:31-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">
@@ -23,6 +23,10 @@
<single>ed. &amp; trans.</single>
<multiple>eds. &amp; trans.</multiple>
</term>
+ <term name="editor-translator" form="short">
+ <single>ed. &amp; trans.</single>
+ <multiple>eds. &amp; trans.</multiple>
+ </term>
<term name="translator" form="short">trans.</term>
<term name="interviewer" form="short">
<single>interviewer</single>
@@ -32,6 +36,7 @@
<single>ed.</single>
<multiple>eds.</multiple>
</term>
+ <term name="performer" form="verb">recorded by</term>
<term name="circa" form="short">ca.</term>
<term name="bc"> B.C.E.</term>
<term name="ad"> C.E.</term>
@@ -41,7 +46,12 @@
</term>
<term name="software">computer software</term>
<term name="at" form="long">before the</term>
+ <term name="collection">archival collection</term>
+ <term name="post">online post</term>
+ <term name="at" form="long">before the</term>
<term name="hearing" form="verb">testimony of</term>
+ <term name="review-of" form="long">review of the</term>
+ <term name="review-of" form="short">review of</term>
</terms>
</locale>
<locale xml:lang="da">
@@ -82,101 +92,172 @@
<term name="et-al">et al.</term>
</terms>
</locale>
- <!-- TODO: New types: classic collection document event hearing performance periodical regulation -software- standard -->
- <!-- TODO: New creator roles: chair compiler contributor curator executive-producer guest host narrator organizer performer producer script-writer series-creator -->
- <!-- TODO: New variables:
- available-date submitted
- part-number printing-number supplement-number
- part-title volume-title
- archive_collection
- division jurisdiction
- event-title
- language
- license
- reviewed-genre
+ <!-- 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`
+ cf. https://libguides.norquest.ca/c.php?g=314831&p=5188823.
+ If the item is stored as `interview`, assume that Nation/Community, treat, and topic
+ are stored in `title`, 'Oral teaching' or similar is stored in `archive`, and where
+ the Elder lives is stored in `archive-place`.
-->
- <!-- TODO: New terms:
- advance-online-publication
- album on audio-recording
- original-work-published
- personal-communication
- preprint
- review-of
- item types
+ <!-- Reviews are detected if an item has type `review` or `review-book` or if it has any of the variables
+ `reviewed-title`, `reviewed-author`, or `reviewed-genre`. For the latter case, reviews are commonly
+ stored as types `article-journal`, `article-magazine`, `article-newspaper`, `post-weblog`, or `webpage`
-->
- <!-- TODO: Check Indigeneous Knowledge format -->
<!-- General categories of item types:
- Periodical: article-journal article-magazine article-newspaper post-weblog review review-book
+ Periodical: article-journal article-magazine article-newspaper periodical post-weblog review review-book
Periodical or Booklike: paper-conference
Booklike: article book broadcast chapter classic collection dataset document
entry entry-dictionary entry-encyclopedia event figure
- graphic interview manuscript map motion_picture musical_score pamphlet patent
- performance periodical personal_communication post report
+ graphic interview manuscript map motion_picture musical_score
+ pamphlet patent performance personal_communication post report
software song speech standard thesis webpage
Legal: bill hearing legal_case legislation regulation treaty
-->
+ <!-- Equivalencies:
+ classic == book
+ document == report, but give full date
+ standard == report
+ performance == speech
+ event == speech
+ collection == book, but give full date
+ -->
+ <!-- Role equivalencies:
+ compiler == editor
+ organizer, curator == chair
+ script-writer == director
+ producer == director (but don't print both)
+ guest, host == director
+ series-creator, executive-producer == editor
+ -->
<!-- APA references contain four parts: author, date, title, source -->
<macro name="author-bib">
- <!-- TODO: New creator roles (media, contributor) -->
- <!-- TODO: Add new item types -->
- <names variable="composer" delimiter=", ">
- <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
- <substitute>
- <names variable="author"/>
- <names variable="illustrator"/>
- <names variable="director">
- <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>
- <choose>
- <if variable="container-title">
- <choose>
- <if type="book entry entry-dictionary entry-encyclopedia" match="any">
- <choose>
- <if variable="title">
- <group delimiter=" ">
- <text macro="title"/>
- <text macro="parenthetical"/>
- </group>
- </if>
- <else>
- <text macro="title-and-descriptions"/>
- </else>
- </choose>
- </if>
- </choose>
- </if>
- </choose>
- <!-- TODO: Test for editortranslator and put that first as that becomes available -->
- <names variable="editor" delimiter=", ">
- <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
- <label form="short" prefix=" (" suffix=")" text-case="title"/>
- </names>
- <names variable="editorial-director">
- <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
- <label form="short" prefix=" (" suffix=")" text-case="title"/>
- </names>
- <names variable="collection-editor">
- <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
- <label form="short" prefix=" (" suffix=")" text-case="title"/>
- </names>
- <choose>
- <if variable="title">
- <group delimiter=" ">
- <text macro="title"/>
- <text macro="parenthetical"/>
- </group>
- </if>
- <else>
- <text macro="title-and-descriptions"/>
- </else>
- </choose>
- </substitute>
- </names>
+ <group delimiter=" ">
+ <names variable="composer" delimiter=", ">
+ <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
+ <substitute>
+ <names variable="author"/>
+ <!-- Note: `narrator` only cited in secondary-contributors -->
+ <names variable="illustrator"/>
+ <!-- TODO: Replace `delimiter` with `collapse` to combine names variables when that becomes available. -->
+ <choose>
+ <if type="broadcast">
+ <names variable="script-writer director" delimiter=", &amp; ">
+ <!-- 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"/>
+ </names>
+ </if>
+ </choose>
+ <names variable="director">
+ <!-- For non-broadcast items, APA only cites directors and not writers. -->
+ <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>
+ <!-- TODO: Replace `delimiter` with `collapse` to combine names variables when that becomes available. -->
+ <names variable="guest host" delimiter=", &amp; ">
+ <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>
+ <names variable="producer">
+ <!-- Note: Producers not cited if there is a writer/director, but use if they are the principle creator. -->
+ <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>
+ <choose>
+ <if variable="container-title">
+ <choose>
+ <if type="book classic collection entry entry-dictionary entry-encyclopedia" match="any">
+ <!-- Items with book-like container-title substitute with their title and parenthetical,
+ but leave bracketed after container-title. This mimics the `container-booklike` formatting. -->
+ <choose>
+ <if variable="title">
+ <group delimiter=" ">
+ <text macro="title"/>
+ <text macro="parenthetical"/>
+ </group>
+ </if>
+ <else>
+ <text macro="title-and-descriptions"/>
+ </else>
+ </choose>
+ </if>
+ </choose>
+ </if>
+ </choose>
+ <names variable="executive-producer">
+ <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>
+ <names variable="series-creator">
+ <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>
+ <names variable="editor-translator">
+ <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
+ <label form="short" prefix=" (" suffix=")" text-case="title"/>
+ </names>
+ <!-- Note: Translator is not cited as a primary creator (only as Ed. & Trans.). -->
+ <names variable="editor">
+ <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
+ <label form="short" prefix=" (" suffix=")" text-case="title"/>
+ </names>
+ <names variable="editorial-director">
+ <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
+ <label form="short" prefix=" (" suffix=")" text-case="title"/>
+ </names>
+ <names variable="compiler">
+ <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>
+ <choose>
+ <if type="event performance speech" match="any">
+ <names variable="chair">
+ <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>
+ <names variable="organizer">
+ <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>
+ </if>
+ </choose>
+ <names variable="curator">
+ <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>
+ <names variable="collection-editor">
+ <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
+ <label form="short" prefix=" (" suffix=")" text-case="title"/>
+ </names>
+ <choose>
+ <if variable="title">
+ <!-- If an item has a title, substitute missing author with title and parenthetical, but leave bracketed
+ after the date (in the 'title' position). -->
+ <group delimiter=" ">
+ <text macro="title"/>
+ <text macro="parenthetical"/>
+ </group>
+ </if>
+ <else>
+ <!-- If an item has no title, substitute with bracketed followed by parenthetical. -->
+ <text macro="title-and-descriptions"/>
+ </else>
+ </choose>
+ </substitute>
+ </names>
+ <choose>
+ <!-- Print "with" contributor for books, but not for other types that commonly have them (eg, thesis, software) -->
+ <if type="book classic collection" match="any">
+ <names variable="contributor" prefix="(" suffix=")">
+ <label form="verb" suffix=" "/>
+ <name name-as-sort-order="all" and="symbol" sort-separator=", " initialize-with=". " delimiter=", " delimiter-precedes-last="always"/>
+ </names>
+ </if>
+ </choose>
+ </group>
</macro>
<macro name="author-intext">
- <!-- TODO: New creator roles -->
- <!-- TODO: Add new item types -->
<choose>
<if type="bill hearing legal_case legislation regulation treaty" match="any">
<text macro="title-intext"/>
@@ -212,18 +293,37 @@
<substitute>
<names variable="author"/>
<names variable="illustrator"/>
+ <!-- TODO: Replace `delimiter` with `collapse` to combine names variables when that becomes available. -->
+ <choose>
+ <if type="broadcast">
+ <names variable="script-writer director" delimiter=", &amp; "/>
+ </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="producer"/>
<choose>
<if variable="container-title">
<choose>
- <if type="book entry entry-dictionary entry-encyclopedia" match="any">
+ <if type="book classic collection entry entry-dictionary entry-encyclopedia" match="any">
<text macro="title-intext"/>
</if>
</choose>
</if>
</choose>
+ <names variable="executive-producer"/>
+ <names variable="series-creator"/>
<names variable="editor"/>
<names variable="editorial-director"/>
+ <names variable="compiler"/>
+ <choose>
+ <if type="event performance speech" match="any">
+ <names variable="chair"/>
+ <names variable="organizer"/>
+ </if>
+ </choose>
+ <names variable="curator"/>
<text macro="title-intext"/>
</substitute>
</names>
@@ -241,7 +341,6 @@
</choose>
</macro>
<macro name="date-bib">
- <!-- TODO: Add new item types -->
<group delimiter=" " prefix="(" suffix=")">
<choose>
<if is-uncertain-date="issued">
@@ -257,7 +356,7 @@
<text variable="year-suffix"/>
</group>
<choose>
- <if type="article-magazine article-newspaper broadcast interview motion_picture pamphlet personal_communication post post-weblog song speech webpage" match="any">
+ <if type="article-magazine article-newspaper broadcast collection document event interview motion_picture pamphlet performance personal_communication post post-weblog song speech webpage" match="any">
<!-- Many video and audio examples in manual give full dates. Err on the side of too much information. -->
<date variable="issued">
<date-part name="month"/>
@@ -267,7 +366,7 @@
<else-if type="paper-conference">
<!-- Capture 'speech' stored as 'paper-conference' -->
<choose>
- <if variable="collection-editor editor editorial-director issue page volume" match="none">
+ <if variable="collection-editor compiler editor editorial-director issue page volume" match="none">
<date variable="issued">
<date-part name="month"/>
<date-part name="day" prefix=" "/>
@@ -275,14 +374,14 @@
</if>
</choose>
</else-if>
- <!-- Only year: article article-journal book chapter entry entry-dictionary entry-encyclopedia dataset figure graphic
- manuscript map musical_score paper-conference[published] patent report review review-book thesis -->
+ <!-- Only year: article article-journal book chapter classic entry entry-dictionary entry-encyclopedia dataset figure graphic
+ manuscript map musical_score paper-conference[published] patent periodical report review review-book software standard thesis -->
</choose>
</group>
</if>
<else-if variable="status">
<group>
- <!-- TODO: Should I print status as-is, or should I print the in-press term? -->
+ <!-- We print the status variable directly rather than using in-press, etc. terms. -->
<text variable="status" text-case="lowercase"/>
<text variable="year-suffix" prefix="-"/>
</group>
@@ -296,6 +395,7 @@
</group>
</macro>
<macro name="date-sort">
+ <!-- This is necessary to ensure that citeproc sorts all item types chonologically in the same list. -->
<choose>
<if type="article article-journal book chapter entry entry-dictionary entry-encyclopedia dataset figure graphic manuscript map musical_score patent report review review-book thesis" match="any">
<date variable="issued" date-parts="year" form="numeric"/>
@@ -303,7 +403,7 @@
<else-if type="paper-conference">
<!-- Capture 'speech' stored as 'paper-conference' -->
<choose>
- <if variable="collection-editor editor editorial-director issue page volume" match="any">
+ <if variable="collection-editor compiler editor editorial-director issue page volume" match="any">
<date variable="issued" date-parts="year" form="numeric"/>
</if>
<else>
@@ -339,7 +439,6 @@
</choose>
</macro>
<macro name="date-intext">
- <!-- TODO: Add new item types -->
<choose>
<if variable="issued">
<group delimiter="/">
@@ -387,7 +486,7 @@
</group>
</if>
<else-if variable="status">
- <!-- TODO: Should I print status as-is, or should I print the in-press term? -->
+ <!-- We print the status variable directly rather than using in-press, etc. terms. -->
<text variable="status" text-case="lowercase"/>
<text variable="year-suffix" prefix="-"/>
</else-if>
@@ -398,7 +497,7 @@
</choose>
</macro>
<!-- APA has two description elements following the title:
- title (parenthetical) [bracketed] -->
+ title (parenthetical) [bracketed] -->
<macro name="title-and-descriptions">
<choose>
<if variable="title">
@@ -412,7 +511,7 @@
<choose>
<if type="bill report" match="any">
<!-- Bills, resolutions, and congressional reports are not italicized and substitute bill number if no title. -->
- <!-- Can't distinguish congressional reports from other reports,
+ <!-- Can't distinguish congressional reports from other reports,
but giving the genre and number seems fine for other reports too. -->
<text macro="number"/>
<text macro="bracketed"/>
@@ -429,68 +528,125 @@
</choose>
</macro>
<macro name="title">
- <!-- TODO: Add new item types -->
<choose>
<if type="post webpage" match="any">
<!-- Webpages are always italicized -->
- <text variable="title" font-style="italic"/>
+ <text macro="title-plus-part-title" font-style="italic"/>
</if>
- <else-if variable="container-title" match="any">
- <!-- Other types are italicized based on presence of container-title.
+ <!-- Other types are italicized based on presence of container-title.
Assume that review and review-book are published in periodicals/blogs,
not just on a web page (ex. 69) -->
- <text variable="title"/>
+ <else-if type="article-journal article-magazine article-newspaper periodical post-weblog review review-book" match="any">
+ <text macro="periodical-title"/>
</else-if>
- <else>
+ <else-if type="paper-conference">
+ <!-- Treat paper-conference as book-like if it has an editor, otherwise as periodical-like -->
<choose>
- <if type="article-journal article-magazine article-newspaper post-weblog review review-book" match="any">
- <text variable="title" font-style="italic"/>
+ <if variable="collection-editor compiler editor editorial-director" match="any">
+ <text macro="booklike-title"/>
</if>
- <else-if type="paper-conference">
- <choose>
- <if variable="collection-editor editor editorial-director" match="any">
- <group delimiter=": " font-style="italic">
- <text variable="title"/>
- <!-- TODO: Replace with volume-title -->
- <choose>
- <if is-numeric="volume" match="none">
- <group delimiter=" ">
- <label variable="volume" form="short" text-case="capitalize-first"/>
- <text variable="volume"/>
- </group>
- </if>
- </choose>
- </group>
- </if>
- <else>
- <text variable="title" font-style="italic"/>
- </else>
- </choose>
- </else-if>
<else>
- <group delimiter=": " font-style="italic">
+ <text macro="periodical-title"/>
+ </else>
+ </choose>
+ </else-if>
+ <else>
+ <text macro="booklike-title"/>
+ </else>
+ </choose>
+ </macro>
+ <macro name="periodical-title">
+ <!-- For periodicals, assume that part-number and part-title refer to the article and append to title -->
+ <choose>
+ <if variable="container-title" match="any">
+ <text macro="title-plus-part-title"/>
+ </if>
+ <else>
+ <!-- for periodical items without container titles, don't append volume-title to title -->
+ <text macro="title-plus-part-title" font-style="italic"/>
+ </else>
+ </choose>
+ </macro>
+ <macro name="booklike-title">
+ <!-- For book-like items, assume part-number and part-title refer to the book/volume. -->
+ <choose>
+ <if variable="container-title" match="any">
+ <text variable="title"/>
+ </if>
+ <else>
+ <!-- For book-like items without container titles and with volume-title, append volume-title to title (ex. 30) -->
+ <text macro="title-plus-volume-title" font-style="italic"/>
+ </else>
+ </choose>
+ </macro>
+ <macro name="title-plus-part-title">
+ <choose>
+ <if variable="reviewed-author reviewed-genre reviewed-title" type="review review-book" match="any">
+ <!-- If a review has no `reviewed-title`, assume that `title` contains the title of the reviewed work
+ and omit it here; it is printed in the `reviewed-item` macro. -->
+ <choose>
+ <if variable="reviewed-title" match="none"/>
+ <else>
+ <group delimiter=": ">
<text variable="title"/>
- <!-- TODO: Replace with volume-title -->
- <choose>
- <if is-numeric="volume" match="none">
- <group delimiter=" ">
- <label variable="volume" form="short" text-case="capitalize-first"/>
- <text variable="volume"/>
- </group>
- </if>
- </choose>
+ <text macro="part-title"/>
</group>
</else>
</choose>
+ </if>
+ <else>
+ <group delimiter=": ">
+ <text variable="title"/>
+ <text macro="part-title"/>
+ </group>
</else>
</choose>
</macro>
+ <macro name="part-title">
+ <group delimiter=". ">
+ <group delimiter=" ">
+ <label variable="part-number" form="short" text-case="capitalize-first"/>
+ <text variable="part-number"/>
+ </group>
+ <text variable="part-title" text-case="capitalize-first"/>
+ </group>
+ </macro>
+ <macro name="title-plus-volume-title">
+ <group delimiter=": ">
+ <text variable="title"/>
+ <text macro="volume-title"/>
+ </group>
+ </macro>
+ <macro name="volume-title">
+ <group delimiter=": ">
+ <choose>
+ <if variable="volume-title">
+ <group delimiter=" ">
+ <group delimiter=". ">
+ <group delimiter=" ">
+ <label variable="volume" form="short" text-case="capitalize-first"/>
+ <text variable="volume"/>
+ </group>
+ <text variable="volume-title"/>
+ </group>
+ </group>
+ </if>
+ <else-if is-numeric="volume" match="none">
+ <group delimiter=" ">
+ <label variable="volume" form="short" text-case="capitalize-first"/>
+ <text variable="volume"/>
+ </group>
+ </else-if>
+ </choose>
+ <!-- For book-like items, assume part-number and part-title refer to the book/volume. -->
+ <text macro="part-title"/>
+ </group>
+ </macro>
<macro name="title-intext">
- <!-- TODO: Add new item types -->
<choose>
<if type="bill report">
<!-- Bills, resolutions, and congressional reports are not italicized and substitute bill number if no title. -->
- <!-- Can't distinguish congressional reports from other reports,
+ <!-- Can't distinguish congressional reports from other reports,
but giving the genre and number seems fine for other reports too. -->
<choose>
<if variable="title">
@@ -544,7 +700,6 @@
</choose>
</macro>
<macro name="parenthetical">
- <!-- TODO: Add new item types -->
<!-- (Secondary contributors; Database location; Genre no. 123; Report Series 123, Version, Edition, Volume, Page) -->
<group prefix="(" suffix=")">
<choose>
@@ -604,7 +759,7 @@
<text macro="secondary-contributors"/>
<choose>
<if type="broadcast graphic map motion_picture song" match="any">
- <!-- For audiovisual media, number information comes after title, not container-title -->
+ <!-- For audiovisual media, number information comes after title, not container-title (ex. 94) -->
<text macro="number"/>
</if>
</choose>
@@ -622,7 +777,6 @@
</group>
</macro>
<macro name="parenthetical-container">
- <!-- TODO: Add new item types -->
<choose>
<if variable="container-title" match="any">
<group prefix="(" suffix=")">
@@ -630,7 +784,7 @@
<text macro="database-location"/>
<choose>
<if type="broadcast graphic map motion_picture song" match="none">
- <!-- For audiovisual media, number information comes after title, not container-title -->
+ <!-- For audiovisual media, number information comes after title, not container-title (ex. 94) -->
<text macro="number"/>
</if>
</choose>
@@ -641,65 +795,12 @@
</choose>
</macro>
<macro name="bracketed">
- <!-- TODO: Add new item types -->
<!-- [Descriptive information] -->
<!-- If there is a number, genre is already printed in macro="number" -->
<group prefix="[" suffix="]">
<choose>
- <if variable="reviewed-author reviewed-title" type="review review-book" match="any">
- <!-- Reviewed item -->
- <group delimiter="; ">
- <group delimiter=", ">
- <group delimiter=" ">
- <!-- Assume that genre is entered as 'Review of the book' or similar -->
- <choose>
- <if variable="number" match="none">
- <choose>
- <if variable="genre">
- <text variable="genre" text-case="capitalize-first"/>
- </if>
- <else-if variable="medium">
- <text variable="medium" text-case="capitalize-first"/>
- </else-if>
- <else>
- <!-- TODO: Replace with term="review" -->
- <!-- TODO: Handle review vs review-of depending on presence of reviewed-title -->
- <!-- TODO: Add reviewed-genre -->
- <text value="Review of"/>
- </else>
- </choose>
- </if>
- <else>
- <choose>
- <if variable="medium">
- <text variable="medium" text-case="capitalize-first"/>
- </if>
- <else>
- <!-- TODO: Replace with term="review" -->
- <!-- TODO: Handle review vs review-of depending on presence of reviewed-title -->
- <!-- TODO: Add reviewed-genre -->
- <text value="Review of"/>
- </else>
- </choose>
- </else>
- </choose>
- <text macro="reviewed-title"/>
- </group>
- <names variable="reviewed-author">
- <label form="verb-short" suffix=" "/>
- <name and="symbol" initialize-with=". " delimiter=", "/>
- </names>
- </group>
- <choose>
- <if variable="genre" match="any">
- <choose>
- <if variable="number" match="none">
- <text variable="medium" text-case="capitalize-first"/>
- </if>
- </choose>
- </if>
- </choose>
- </group>
+ <if variable="reviewed-author reviewed-genre reviewed-title" type="review review-book" match="any">
+ <text macro="reviewed-item"/>
</if>
<else-if type="thesis">
<!-- Thesis type and institution -->
@@ -731,7 +832,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>
@@ -814,22 +915,35 @@
<choose>
<if variable="genre">
<text variable="genre" text-case="capitalize-first"/>
- <!-- TODO: Replace prefix with performer label -->
- <names variable="author" prefix="recorded by ">
- <name and="symbol" initialize-with=". " delimiter=", "/>
- </names>
+ <group delimiter=" ">
+ <text term="performer" form="verb"/>
+ <names variable="author">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <substitute>
+ <names variable="performer"/>
+ </substitute>
+ </names>
+ </group>
</if>
<else-if variable="medium">
<text variable="medium" text-case="capitalize-first"/>
- <!-- TODO: Replace prefix with performer label -->
- <names variable="author" prefix="recorded by ">
- <name and="symbol" initialize-with=". " delimiter=", "/>
- </names>
+ <group delimiter=" ">
+ <text term="performer" form="verb"/>
+ <names variable="author">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <substitute>
+ <names variable="performer"/>
+ </substitute>
+ </names>
+ </group>
</else-if>
<else>
- <!-- TODO: Replace prefix with performer label -->
- <names variable="author" prefix="Recorded by ">
+ <text term="performer" form="verb" text-case="capitalize-first"/>
+ <names variable="author">
<name and="symbol" initialize-with=". " delimiter=", "/>
+ <substitute>
+ <names variable="performer"/>
+ </substitute>
</names>
</else>
</choose>
@@ -840,15 +954,23 @@
<choose>
<if variable="medium">
<text variable="medium" text-case="capitalize-first"/>
- <!-- TODO: Replace prefix with performer label -->
- <names variable="author" prefix="recorded by ">
- <name and="symbol" initialize-with=". " delimiter=", "/>
- </names>
+ <group delimiter=" ">
+ <text term="performer" form="verb"/>
+ <names variable="author">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <substitute>
+ <names variable="performer"/>
+ </substitute>
+ </names>
+ </group>
</if>
<else>
- <!-- TODO: Replace prefix with performer label -->
- <names variable="author" prefix="Recorded by ">
+ <text term="performer" form="verb" text-case="capitalize-first"/>
+ <names variable="author">
<name and="symbol" initialize-with=". " delimiter=", "/>
+ <substitute>
+ <names variable="performer"/>
+ </substitute>
</names>
</else>
</choose>
@@ -871,16 +993,17 @@
<text macro="format"/>
</else-if>
<else>
- <!-- For conference presentations, chapters in reports, software, place bracketed after the container title -->
+ <!-- For conference presentations/performances/events, chapters in reports/standards/generic documents, software,
+ place bracketed after the container title -->
<choose>
- <if type="paper-conference speech" match="any">
+ <if type="event paper-conference performance speech" match="any">
<choose>
- <if variable="collection-editor editor editorial-director issue page volume" match="any">
+ <if variable="collection-editor compiler editor editorial-director issue page volume" match="any">
<text macro="format"/>
</if>
</choose>
</if>
- <else-if type="report software" match="none">
+ <else-if type="document report software standard" match="none">
<text macro="format"/>
</else-if>
</choose>
@@ -889,10 +1012,9 @@
</group>
</macro>
<macro name="bracketed-intext">
- <!-- TODO: Add new item types -->
<group prefix="[" suffix="]">
<choose>
- <if variable="reviewed-author reviewed-title" type="review review-book" match="any">
+ <if variable="reviewed-title" match="any">
<group delimiter=" ">
<text term="review-of" text-case="capitalize-first"/>
<text macro="reviewed-title-intext"/>
@@ -937,14 +1059,80 @@
</choose>
</group>
</macro>
+ <macro name="reviewed-item">
+ <!-- Reviewed item -->
+ <group delimiter="; ">
+ <group delimiter=", ">
+ <group delimiter=" ">
+ <choose>
+ <if variable="reviewed-genre">
+ <group delimiter=" ">
+ <text term="review-of" form="long" text-case="capitalize-first"/>
+ <text variable="reviewed-genre" text-case="lowercase"/>
+ </group>
+ </if>
+ <!-- If no `reviewed-genre`, assume that `genre` or `medium` is entered as 'Review of the book' or similar -->
+ <else-if variable="number" match="none">
+ <choose>
+ <if variable="genre">
+ <text variable="genre" text-case="capitalize-first"/>
+ </if>
+ <else-if variable="medium">
+ <text variable="medium" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="review-book">
+ <group delimiter=" ">
+ <text term="review-of" form="long" text-case="capitalize-first"/>
+ <text term="book" form="long" text-case="lowercase"/>
+ </group>
+ </else-if>
+ <else>
+ <text term="review-of" form="short" text-case="capitalize-first"/>
+ </else>
+ </choose>
+ </else-if>
+ <else>
+ <choose>
+ <if variable="medium">
+ <text variable="medium" text-case="capitalize-first"/>
+ </if>
+ <else-if type="review-book">
+ <group delimiter=" ">
+ <text term="review-of" form="long" text-case="capitalize-first"/>
+ <text term="book" form="long" text-case="lowercase"/>
+ </group>
+ </else-if>
+ <else>
+ <text term="review-of" form="short" text-case="capitalize-first"/>
+ </else>
+ </choose>
+ </else>
+ </choose>
+ <text macro="reviewed-title"/>
+ </group>
+ <names variable="reviewed-author">
+ <label form="verb-short" suffix=" "/>
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ </names>
+ </group>
+ <choose>
+ <if variable="genre" match="any">
+ <choose>
+ <if variable="number" match="none">
+ <text variable="medium" text-case="capitalize-first"/>
+ </if>
+ </choose>
+ </if>
+ </choose>
+ </group>
+ </macro>
<macro name="bracketed-container">
- <!-- TODO: Add new item types -->
<group prefix="[" suffix="]">
<choose>
- <if type="paper-conference speech" match="any">
+ <if type="event paper-conference performance speech" match="any">
<!-- Conference presentations should describe the session [container] in bracketed unless published in a proceedings -->
<choose>
- <if variable="collection-editor editor editorial-director issue page volume" match="none">
+ <if variable="collection-editor compiler editor editorial-director issue page volume" match="none">
<text macro="format"/>
</if>
</choose>
@@ -953,23 +1141,21 @@
<!-- For entries in mobile app reference works, place bracketed after the container-title -->
<text macro="format"/>
</else-if>
- <else-if type="report">
- <!-- For chapters in reports, place bracketed after the container title -->
+ <else-if type="document report standard">
+ <!-- For chapters in report, standards, and generic documents, place bracketed after the container title -->
<text macro="format"/>
</else-if>
</choose>
</group>
</macro>
<macro name="secondary-contributors">
- <!-- TODO: Add new item types -->
- <!-- TODO: Add new creator roles -->
<choose>
- <if type="article-journal article-magazine article-newspaper post-weblog review review-book" match="any">
+ <if type="article-journal article-magazine article-newspaper periodical post-weblog review review-book" match="any">
<text macro="secondary-contributors-periodical"/>
</if>
<else-if type="paper-conference">
<choose>
- <if variable="collection-editor editor editorial-director" match="any">
+ <if variable="collection-editor compiler editor editorial-director" match="any">
<text macro="secondary-contributors-booklike"/>
</if>
<else>
@@ -992,14 +1178,13 @@
</names>
</if>
</choose>
- <names variable="translator" delimiter="; ">
+ <names variable="translator narrator" delimiter="; ">
<name and="symbol" initialize-with=". " delimiter=", "/>
<label form="short" prefix=", " text-case="title"/>
</names>
</group>
</macro>
<macro name="secondary-contributors-booklike">
- <!-- TODO: Add new item types -->
<group delimiter="; ">
<choose>
<if variable="title">
@@ -1009,24 +1194,44 @@
</names>
</if>
</choose>
- <!-- TODO: When editortranslator becomes available, add a test: variable="editortranslator" match="none"; then print translator -->
<choose>
<if type="post webpage" match="none">
<!-- Webpages treat container-title like publisher -->
- <choose>
- <if variable="container-title" match="none">
- <group delimiter="; ">
- <names variable="container-author">
- <label form="verb-short" suffix=" " text-case="title"/>
- <name and="symbol" initialize-with=". " delimiter=", "/>
- </names>
- <names variable="editor translator" delimiter="; ">
- <name and="symbol" initialize-with=". " delimiter=", "/>
- <label form="short" prefix=", " text-case="title"/>
- </names>
- </group>
- </if>
- </choose>
+ <group delimiter="; ">
+ <names variable="illustrator narrator" delimiter="; ">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="short" prefix=", " text-case="title"/>
+ </names>
+ <choose>
+ <if variable="container-title" match="none">
+ <group delimiter="; ">
+ <names variable="container-author">
+ <label form="verb-short" suffix=" " text-case="title"/>
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ </names>
+ <names variable="editor translator" delimiter="; ">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="short" prefix=", " text-case="title"/>
+ </names>
+ <names variable="compiler chair organizer curator series-creator executive-producer" delimiter="; ">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="long" prefix=", " text-case="title"/>
+ </names>
+ </group>
+ </if>
+ <else>
+ <choose>
+ <!-- TODO: Check logic once processors start to automatically populate editor-translator. -->
+ <if variable="editor-translator" match="none">
+ <names variable="translator" delimiter="; ">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="short" prefix=", " text-case="title"/>
+ </names>
+ </if>
+ </choose>
+ </else>
+ </choose>
+ </group>
</if>
<else>
<group delimiter="; ">
@@ -1038,6 +1243,14 @@
<name and="symbol" initialize-with=". " delimiter=", "/>
<label form="short" prefix=", " text-case="title"/>
</names>
+ <names variable="illustrator narrator" delimiter="; ">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="short" prefix=", " text-case="title"/>
+ </names>
+ <names variable="compiler chair organizer curator series-creator executive-producer" delimiter="; ">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="long" prefix=", " text-case="title"/>
+ </names>
</group>
</else>
</choose>
@@ -1047,13 +1260,11 @@
<choose>
<if variable="archive-place" match="none">
<!-- With `archive-place`: physical archives. Without: online archives. -->
- <!-- TODO: Add archive_collection -->
<text variable="archive_location"/>
</if>
</choose>
</macro>
<macro name="number">
- <!-- TODO: Add new item types -->
<choose>
<if variable="number">
<group delimiter=", ">
@@ -1079,12 +1290,11 @@
</choose>
</macro>
<macro name="locators-booklike">
- <!-- TODO: Add new item types -->
<choose>
- <if type="article-journal article-magazine article-newspaper broadcast interview patent post post-weblog review review-book speech webpage" match="any"/>
+ <if type="article-journal article-magazine article-newspaper broadcast event interview patent performance periodical post post-weblog review review-book speech webpage" match="any"/>
<else-if type="paper-conference">
<choose>
- <if variable="collection-editor editor editorial-director" match="any">
+ <if variable="collection-editor compiler editor editorial-director" match="any">
<group delimiter=", ">
<text macro="version"/>
<text macro="edition"/>
@@ -1103,17 +1313,10 @@
</choose>
</macro>
<macro name="version">
- <choose>
- <if is-numeric="version">
- <group delimiter=" ">
- <label variable="version" text-case="capitalize-first"/>
- <text variable="version"/>
- </group>
- </if>
- <else>
- <text variable="version"/>
- </else>
- </choose>
+ <group delimiter=" ">
+ <label variable="version" text-case="capitalize-first"/>
+ <text variable="version"/>
+ </group>
</macro>
<macro name="edition">
<choose>
@@ -1129,23 +1332,26 @@
</choose>
</macro>
<macro name="volume-booklike">
- <!-- TODO: Add new item types -->
<group delimiter=", ">
<!-- Report series [ex. 52] -->
<choose>
- <if type="report">
+ <if type="document report standard">
<group delimiter=" ">
<text variable="collection-title" text-case="title"/>
<text variable="collection-number"/>
</group>
</if>
</choose>
+ <group delimiter=" ">
+ <label variable="supplement-number" text-case="capitalize-first"/>
+ <text variable="supplement-number"/>
+ </group>
<choose>
<if variable="volume" match="any">
- <!-- TODO: Update using volume-title -->
<choose>
<!-- Non-numeric volumes are already printed as part of the book title -->
- <if is-numeric="volume" match="none"/>
+ <if variable="volume-title"/>
+ <else-if is-numeric="volume" match="none"/>
<else>
<group delimiter=" ">
<label variable="volume" form="short" text-case="capitalize-first"/>
@@ -1176,7 +1382,8 @@
<choose>
<if variable="reviewed-title">
<!-- Not possible to distinguish TV series episode from other reviewed
- works [Ex. 69] -->
+ works without reviewed-container-title [Ex. 69] -->
+ <!-- Adapt for reviewed-container-title if that becomes available -->
<text variable="reviewed-title" font-style="italic"/>
</if>
<else>
@@ -1188,7 +1395,9 @@
<macro name="reviewed-title-intext">
<choose>
<if variable="reviewed-title">
- <!-- Not possible to distinguish TV series episode from other reviewed works [Ex. 69] -->
+ <!-- Not possible to distinguish TV series episode from other reviewed
+ works without reviewed-container-title [Ex. 69] -->
+ <!-- Adapt for reviewed-container-title if that becomes available -->
<text variable="reviewed-title" form="short" font-style="italic" text-case="title"/>
</if>
<else>
@@ -1198,7 +1407,6 @@
</choose>
</macro>
<macro name="format">
- <!-- TODO: Add new item types -->
<choose>
<if variable="genre medium" match="any">
<group delimiter="; ">
@@ -1210,31 +1418,12 @@
<text variable="medium" text-case="capitalize-first"/>
</group>
</if>
- <!-- Generic labels for specific types -->
- <!-- TODO: Add terms for other types? -->
- <else-if type="dataset">
- <text term="dataset"/>
- </else-if>
- <else-if type="software">
- <text term="software" text-case="capitalize-first"/>
- </else-if>
- <else-if type="interview personal_communication" match="any">
- <choose>
- <if variable="archive container-title DOI publisher URL" match="none">
- <text term="personal-communication" text-case="capitalize-first"/>
- </if>
- <else-if type="interview">
- <text term="interview" text-case="capitalize-first"/>
- </else-if>
- </choose>
- </else-if>
- <else-if type="map">
- <text term="map" text-case="capitalize-first"/>
- </else-if>
+ <else>
+ <text macro="generic-type-label"/>
+ </else>
</choose>
</macro>
<macro name="format-intext">
- <!-- TODO: Add new item types -->
<choose>
<if variable="genre" match="any">
<text variable="genre" text-case="capitalize-first"/>
@@ -1242,11 +1431,17 @@
<else-if variable="medium">
<text variable="medium" text-case="capitalize-first"/>
</else-if>
- <!-- Generic labels for specific types -->
- <!-- TODO: Add terms for other types? -->
- <else-if type="dataset">
- <text term="dataset"/>
- </else-if>
+ <else>
+ <text macro="generic-type-label"/>
+ </else>
+ </choose>
+ </macro>
+ <macro name="generic-type-label">
+ <!-- Generic labels for specific types -->
+ <choose>
+ <if type="dataset">
+ <text term="dataset" text-case="capitalize-first"/>
+ </if>
<else-if type="software">
<text term="software" text-case="capitalize-first"/>
</else-if>
@@ -1261,21 +1456,47 @@
</choose>
</else-if>
<else-if type="map">
- <text term="map"/>
+ <text term="map" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="collection">
+ <text term="collection" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="song">
+ <text term="song" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="motion_picture">
+ <text term="motion_picture" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="post">
+ <text term="post" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="review">
+ <text term="review" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="review-book">
+ <text term="review-book" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="broadcast">
+ <text term="broadcast" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="figure">
+ <text term="figure" text-case="capitalize-first"/>
+ </else-if>
+ <else-if type="graphic">
+ <text term="graphic" text-case="capitalize-first"/>
</else-if>
</choose>
</macro>
<!-- APA 'source' element contains four parts:
container, event, publisher, access -->
<macro name="container">
- <!-- TODO: Add new item types -->
<choose>
- <if type="article-journal article-magazine article-newspaper post-weblog review review-book" match="any">
+ <if type="article-journal article-magazine article-newspaper periodical post-weblog review review-book" match="any">
<!-- Periodical items -->
<text macro="container-periodical"/>
</if>
<else-if type="paper-conference">
- <!-- Determine if paper-conference is a periodical or booklike -->
+ <!-- Determine if paper-conference is a periodical- or book-like -->
<choose>
<if variable="editor editorial-director collection-editor container-author" match="any">
<text macro="container-booklike"/>
@@ -1309,7 +1530,6 @@
<choose>
<if variable="number">
<!-- Ex. 6: Journal article with article number or eLocator -->
- <!-- This should be localized -->
<group delimiter=" ">
<text term="article-locator" text-case="capitalize-first"/>
<text variable="number"/>
@@ -1323,8 +1543,8 @@
<choose>
<if variable="issued">
<choose>
- <if variable="issue page volume" match="none">
- <!-- TODO: Should I print status as-is, or should I print the in-press term? -->
+ <if variable="issue number page volume" match="none">
+ <!-- We print the status variable directly rather than using in-press, etc. terms. -->
<text variable="status" text-case="capitalize-first"/>
</if>
</choose>
@@ -1333,33 +1553,56 @@
</group>
</macro>
<macro name="container-booklike">
- <!-- TODO: Add new item types -->
<choose>
<if variable="container-title" match="any">
<group delimiter=" ">
- <text term="in" text-case="capitalize-first"/>
+ <choose>
+ <if type="song">
+ <text term="on" text-case="capitalize-first"/>
+ </if>
+ <else>
+ <text term="in" text-case="capitalize-first"/>
+ </else>
+ </choose>
<group delimiter=", ">
- <names variable="editor translator" delimiter=", &amp; ">
- <!-- TODO: Change to editortranslator and move editor to substitute -->
+ <names variable="executive-producer">
<name and="symbol" initialize-with=". " delimiter=", "/>
- <label form="short" text-case="title" prefix=" (" suffix=")"/>
+ <label form="long" text-case="title" prefix=" (" suffix=")"/>
<substitute>
- <names variable="editorial-director"/>
- <names variable="collection-editor"/>
+ <names variable="series-creator"/>
+ <names variable="editor-translator">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="short" text-case="title" prefix=" (" suffix=")"/>
+ </names>
+ <!-- TODO: Translator omitted here on the assumption that editor-translators are uncommon
+ for chapter citations. If needed, direct entry or automatic population of
+ `editor-translator` can produce combined labels. -->
+ <names variable="editor">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="short" text-case="title" prefix=" (" suffix=")"/>
+ </names>
+ <names variable="editorial-director">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="short" text-case="title" prefix=" (" suffix=")"/>
+ </names>
+ <names variable="compiler"/>
+ <choose>
+ <if type="event performance speech" match="any">
+ <names variable="chair"/>
+ <names variable="organizer"/>
+ </if>
+ </choose>
+ <names variable="curator"/>
+ <names variable="collection-editor">
+ <name and="symbol" initialize-with=". " delimiter=", "/>
+ <label form="short" text-case="title" prefix=" (" suffix=")"/>
+ </names>
<names variable="container-author"/>
</substitute>
</names>
<group delimiter=": " font-style="italic">
<text variable="container-title"/>
- <!-- TODO: Replace with volume-title -->
- <choose>
- <if is-numeric="volume" match="none">
- <group delimiter=" ">
- <label variable="volume" form="short" text-case="capitalize-first"/>
- <text variable="volume"/>
- </group>
- </if>
- </choose>
+ <text macro="volume-title"/>
</group>
</group>
<text macro="parenthetical-container"/>
@@ -1369,7 +1612,6 @@
</choose>
</macro>
<macro name="publisher">
- <!-- TODO: Add new item types -->
<group delimiter="; ">
<choose>
<if type="thesis">
@@ -1389,12 +1631,12 @@
<else-if type="paper-conference">
<!-- For paper-conference, don't print publisher if in a journal-like proceedings -->
<choose>
- <if variable="collection-editor editor editorial-director" match="any">
+ <if variable="collection-editor compiler editor editorial-director" match="any">
<text variable="publisher"/>
</if>
</choose>
</else-if>
- <else-if type="article-journal article-magazine article-newspaper post-weblog" match="none">
+ <else-if type="article-journal article-magazine article-newspaper periodical post-weblog review review-book" match="none">
<text variable="publisher"/>
</else-if>
</choose>
@@ -1404,16 +1646,32 @@
<!-- With `archive-place`: physical archives. Without: online archives. -->
<!-- For physical archives, print the location before the archive name.
For electronic archives, these are printed in macro="description". -->
- <!-- TODO: Split "archive_location" into "archive_collection" and "archive_location" -->
<!-- Must test for archive_collection:
With collection: archive_collection (archive_location), archive, archive-place
No collection: archive (archive_location), archive-place
-->
- <text variable="archive_location"/>
+ <choose>
+ <if variable="archive_collection">
+ <group delimiter=" ">
+ <text variable="archive_collection"/>
+ <text variable="archive_location" prefix="(" suffix=")"/>
+ </group>
+ <text variable="archive"/>
+ <text variable="archive-place"/>
+ </if>
+ <else>
+ <group delimiter=" ">
+ <text variable="archive"/>
+ <text variable="archive_location" prefix="(" suffix=")"/>
+ </group>
+ <text variable="archive-place"/>
+ </else>
+ </choose>
</if>
+ <else>
+ <text variable="archive"/>
+ </else>
</choose>
- <text variable="archive"/>
- <text variable="archive-place"/>
</group>
</group>
</macro>
@@ -1439,19 +1697,30 @@
</choose>
</macro>
<macro name="event">
- <!-- TODO: Add new item types (e.g., event, collection, performance) -->
<choose>
<if variable="event event-title" match="any">
<!-- To prevent Zotero from printing event-place due to its double-mapping of all 'place' to
both publisher-place and event-place. Remove this 'choose' when that is changed. -->
<choose>
- <if variable="collection-editor editor editorial-director issue page volume" match="none">
- <!-- Don't print event info if published in a proceedings -->
+ <if type="paper-conference">
+ <choose>
+ <if variable="collection-editor compiler editor editorial-director issue page volume" match="none">
+ <!-- Don't print event info for conference papers published in a proceedings -->
+ <group delimiter=", ">
+ <text macro="event-title"/>
+ <text variable="event-place"/>
+ </group>
+ </if>
+ </choose>
+ </if>
+ <else>
+ <!-- For other item types, print event info even if published (e.g., for collection catalogs, performance programs.
+ These items aren't given explicit examples in the APA manual, so err on the side of providing too much information. -->
<group delimiter=", ">
<text macro="event-title"/>
<text variable="event-place"/>
</group>
- </if>
+ </else>
</choose>
</if>
</choose>
@@ -1472,19 +1741,30 @@
</macro>
<!-- After 'source', APA also prints publication history (original publication, reprint info, retraction info) -->
<macro name="publication-history">
- <!-- TODO: Add new item types -->
<choose>
- <if type="patent" match="none">
- <group prefix="(" suffix=")">
+ <if type="patent">
+ <text variable="references" prefix="(" suffix=")"/>
+ </if>
+ <else>
+ <group delimiter="; " prefix="(" suffix=")">
+ <!-- Print `status` here for things like "retracted" if it's not printed elsewhere already. -->
+ <choose>
+ <if variable="issued">
+ <choose>
+ <if variable="issue number page volume" match="any">
+ <text variable="status" text-case="capitalize-first"/>
+ </if>
+ </choose>
+ </if>
+ </choose>
<choose>
<if variable="references">
<!-- This provides the option for more elaborate description
- of publication history, such as full "reprinted" references
- (examples 11, 43, 44) or retracted references -->
+ of publication history, such as full "reprinted" references
+ (examples 11, 43, 44) -->
<text variable="references"/>
</if>
<else>
- <!-- TODO: Replace these with terms -->
<group delimiter=" ">
<text term="original-work-published" text-case="capitalize-first"/>
<choose>
@@ -1499,9 +1779,6 @@
</else>
</choose>
</group>
- </if>
- <else>
- <text variable="references" prefix="(" suffix=")"/>
</else>
</choose>
</macro>
@@ -1510,24 +1787,24 @@
<!-- `treaty`: for treaties -->
<!-- `legal_case`: for all legal and court cases -->
<!-- `bill`: for bills, resolutions, federal reports -->
- <!-- `hearing`: TODO for hearings and testimony -->
+ <!-- `hearing`: for hearings and testimony -->
<!-- `legislation`: for statutes, constitutional items, and charters -->
- <!-- `regulation`: TODO codified regulations, uncodified regulations, executive orders -->
+ <!-- `regulation`: codified regulations, uncodified regulations, executive orders -->
<group delimiter=" ">
<choose>
<if type="treaty">
<group delimiter=", " suffix=".">
<!-- APA generally defers to Bluebook for legal citations, but diverges without
- explanation for treaty items. We follow the Bluebook format that was used
+ explanation for treaty items. We follow the Bluebook format that was used
in APA 6th ed. -->
- <!-- APA manual omits treaty parties/authors, but per Bluebook
+ <!-- APA manual omits treaty parties/authors, but per Bluebook
they should be included at least for bilateral treaties. -->
<names variable="author">
<name initialize-with="." form="short" delimiter="-"/>
</names>
<text macro="date-legal"/>
- <!-- APA manual omits treaty source/report called for by Bluebook in favor of just URL.
- Both are included here, following the APA style used for all other item types
+ <!-- APA manual omits treaty source/report called for by Bluebook in favor of just URL.
+ Both are included here, following the APA style used for all other item types
to end the reference with a period, then give the URL afterward. -->
<text macro="container-legal"/>
</group>
@@ -1553,7 +1830,7 @@
<text variable="title" text-case="title"/>
</if>
<else-if type="hearing">
- <!-- APA uses a comma delimiter and omits "hearing before the" for hearings with testimony,
+ <!-- APA uses a comma delimiter and omits "hearing before the" for hearings with testimony,
but follows Bluebook rules (colon delimiter, prefix before the committee name) for
references to the whole hearing. We simply follow the Bluebook rules for both, but
use APA style capitalization (not capitalizing "Before" or the title of the hearing). -->
@@ -1609,14 +1886,14 @@
</group>
<choose>
<if variable="issued">
- <!-- APA manual includes "rev." before the revision year,
+ <!-- APA manual includes "rev." before the revision year,
but this isn't part of the Bluebook rules. -->
<date variable="issued">
<date-part name="year"/>
</date>
</if>
<else>
- <!-- Show proposal date for uncodified regualtions.
+ <!-- Show proposal date for uncodified regualtions.
Assume date is entered literally ala "proposed May 23, 2016".
TODO: Add 'proposed' term here if that becomes available -->
<date variable="submitted" form="text"/>
@@ -1682,10 +1959,10 @@
<text variable="genre"/>
<group delimiter=" ">
<choose>
- <!-- TODO: What was the logic for this? Do we still need this? -->
- <!-- If there is no session number or code/record title, print number.
- Is that trying to capture congressional reports/documents? -->
+ <!-- If there is no session number or code/record title, assume
+ assume the item is a congressional report and include 'No.' term. -->
<if variable="chapter-number container-title" match="none">
+ <!-- The item is a congressional report, rather than a bill or resultion. -->
<label variable="number" form="short" text-case="capitalize-first"/>
</if>
</choose>
@@ -1789,14 +2066,14 @@
</choose>
</macro>
<macro name="citation-locator">
- <!-- TODO: Add new locator types? -->
+ <!-- Abbreviate page and paragraph, leave other locator labels in long form, cf. Rule 8.13 -->
<group delimiter=" ">
<choose>
- <if locator="chapter">
- <label variable="locator" text-case="capitalize-first"/>
+ <if locator="page paragraph" match="any">
+ <label variable="locator" form="short"/>
</if>
<else>
- <label variable="locator" form="short"/>
+ <label variable="locator" text-case="capitalize-first"/>
</else>
</choose>
<text variable="locator"/>
@@ -1827,17 +2104,9 @@
</sort>
<layout>
<choose>
- <!-- TODO: Add new item types -->
<if type="bill hearing legal_case legislation regulation treaty" match="any">
<!-- Legal items have different orders and delimiters -->
- <choose>
- <if variable="DOI URL" match="any">
- <text macro="legal-cites"/>
- </if>
- <else>
- <text macro="legal-cites" suffix="."/>
- </else>
- </choose>
+ <text macro="legal-cites"/>
</if>
<else>
<group delimiter=" ">
diff --git a/Master/texmf-dist/tex/latex/citation-style-language/styles/ieee.csl b/Master/texmf-dist/tex/latex/citation-style-language/styles/ieee.csl
index 9ac71c63eaf..98b666b83e9 100644
--- a/Master/texmf-dist/tex/latex/citation-style-language/styles/ieee.csl
+++ b/Master/texmf-dist/tex/latex/citation-style-language/styles/ieee.csl
@@ -44,8 +44,8 @@
<category citation-format="numeric"/>
<category field="engineering"/>
<category field="generic-base"/>
- <summary>IEEE style as per the 2021 guidelines, V 01.29.2021.</summary>
- <updated>2024-01-11T14:39:58-05:00</updated>
+ <summary>IEEE style as per the 2023 guidelines, V 11.29.2023.</summary>
+ <updated>2024-07-15T10:30:07-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">
@@ -56,6 +56,7 @@
</date>
<terms>
<term name="chapter" form="short">ch.</term>
+ <term name="chapter-number" form="short">ch.</term>
<term name="presented at">presented at the</term>
<term name="available at">available</term>
</terms>
@@ -120,6 +121,7 @@
<substitute>
<names variable="editor"/>
<names variable="translator"/>
+ <text macro="director"/>
</substitute>
</names>
</macro>
@@ -129,6 +131,12 @@
<label form="short" prefix=", " text-case="capitalize-first"/>
</names>
</macro>
+ <macro name="director">
+ <names variable="director">
+ <name and="text" et-al-min="7" et-al-use-first="1" initialize-with=". "/>
+ <et-al font-style="italic"/>
+ </names>
+ </macro>
<macro name="locators">
<group delimiter=", ">
<text macro="edition"/>
@@ -148,7 +156,7 @@
</macro>
<macro name="title">
<choose>
- <if type="bill book graphic legal_case legislation motion_picture song" match="any">
+ <if type="bill book graphic legal_case legislation motion_picture song standard software" match="any">
<text variable="title" font-style="italic"/>
</if>
<else>
@@ -374,6 +382,10 @@
<text macro="collection"/>
<text macro="publisher"/>
<text macro="issued"/>
+ <group delimiter=" ">
+ <label variable="chapter-number" form="short"/>
+ <text variable="chapter-number"/>
+ </group>
<text macro="page"/>
</group>
<text macro="access"/>
@@ -399,6 +411,26 @@
</group>
<text macro="access"/>
</else-if>
+ <else-if type="software">
+ <group delimiter=". " suffix=".">
+ <text macro="title"/>
+ <text macro="issued" prefix="(" suffix=")"/>
+ <text variable="genre"/>
+ <text macro="publisher"/>
+ </group>
+ <text macro="access"/>
+ </else-if>
+ <else-if type="article">
+ <group delimiter=", " suffix=".">
+ <text macro="title"/>
+ <text macro="issued"/>
+ <group delimiter=": ">
+ <text macro="publisher" font-style="italic"/>
+ <text variable="number"/>
+ </group>
+ </group>
+ <text macro="access"/>
+ </else-if>
<else-if type="webpage post-weblog post" match="any">
<group delimiter=", " suffix=".">
<text macro="title"/>
@@ -423,6 +455,18 @@
</group>
<text macro="access"/>
</else-if>
+ <else-if type="standard">
+ <group delimiter=", " suffix=".">
+ <text macro="title"/>
+ <group delimiter=" ">
+ <text variable="genre"/>
+ <text variable="number"/>
+ </group>
+ <text macro="geographic-location"/>
+ <text macro="issued"/>
+ </group>
+ <text macro="access"/>
+ </else-if>
<!-- Generic/Fallback Formats -->
<else-if type="bill book graphic legal_case legislation report song" match="any">
<group delimiter=", " suffix=". ">
diff --git a/Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls b/Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls
index 7a2093a2d49..1d4c0f01c12 100644
--- a/Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls
+++ b/Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2023 Statistical Society of Canada | Société
+%% Copyright (C) 2023-2024 Statistical Society of Canada | Société
%% canadienne de statistique
%%
%% This file may be distributed and/or modified under the conditions
@@ -30,9 +30,9 @@
%% files cjs-rcs-article.cls, cjs-rcs-article-fr.tex, cjs-template.tex
%% and rcs-gabarit.tex.
%%
-\NeedsTeXFormat{LaTeX2e}[2009/09/24]
+\NeedsTeXFormat{LaTeX2e}[2021/06/01]
\ProvidesClass{cjs-rcs-article}%
- [2023/11/29 v1.0 Article class for The Canadian Journal of
+[2024/07/30 v1.1a Article class for The Canadian Journal of
Statistics | La revue canadienne de statistique]
\newif\ifCJS@review \CJS@reviewfalse % review version?
\newif\ifCJS@supplement \CJS@supplementfalse % supplementary material?
@@ -40,6 +40,7 @@
\newif\ifCJS@final \CJS@finalfalse % final version?
\newif\ifCJS@titlingfooter \CJS@titlingfooterfalse % footer on title page?
\newif\ifCJS@journalinfo \CJS@journalinfotrue % display journal info?
+\newif\ifCJS@specialack \CJS@specialackfalse % special acknowledgement?
\newif\ifCJS@fancybreak \CJS@fancybreaktrue % display fancy break?
\newif\ifCJS@history \CJS@historyfalse % history present?
\newif\ifCJS@corrauth \CJS@corrauthfalse % corresponding author?
@@ -60,7 +61,6 @@
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{memoir}}
\ProcessOptions\relax
\LoadClass[letterpaper,10pt,article,twoside]{memoir}
-\RequirePackage{iflang}
\RequirePackage[round,semicolon,authoryear,sectionbib]{natbib}
\RequirePackage{babel}
\RequirePackage[autolanguage]{numprint}
@@ -142,7 +142,7 @@
[
Extension = .otf,
Scale = 1,
- Ligatures = TeX
+ bold-style = TeX
]
\setmathfont{FiraMath-Regular}
[
@@ -176,12 +176,12 @@
\def\CJS@journalname@en{The Canadian Journal of Statistics}
\def\CJS@journalname@fr{La revue canadienne de statistique}
\def\CJS@journalname{\CJS@journalname@en~{\textbar}~\CJS@journalname@fr}
-\setbox\z@=\vbox{\sffamily\hbox{\CJS@journalname}\hbox{\bfseries V,}}
\newsavebox\CJS@journalornament
\setbox\CJS@journalornament=\vbox{%
+ \setbox\z@=\vbox{\sffamily\hbox{\CJS@journalname}\hbox{\bfseries V,}}
\setbox\tw@\hbox{\vrule \@width4pt\@height\ht\z@\@depth\dp\z@}
- \hbox{\textcolor{CJSpink}{\copy\tw@}\kern2pt%
- \textcolor{CJSred}{\copy\tw@}\kern2pt%
+ \hbox{\textcolor{CJSpink}{\copy\tw@}\kern2pt
+ \textcolor{CJSred}{\copy\tw@}\kern2pt
\textcolor{CJSyellow}{\copy\tw@}\kern6pt}}
\newcommand*\makejournalinfo{%
\mbox{%
@@ -193,12 +193,12 @@
No.~\CJS@issue, %
\CJS@year, %
\CJS@firstpage--\thelastpage}}}}
-\newcommand*\CJS@setheadfootfont{%
+\def\CJS@setheadfootfont{%
\firalining\fontsize{9}{13}\selectfont}
\newlength\CJS@headdivheight
\settoheight\CJS@headdivheight{\CJS@setheadfootfont 1}
\setlength\CJS@headdivheight{0.9\CJS@headdivheight}
-\newcommand*\CJS@headdivrule{%
+\def\CJS@headdivrule{%
\rule[0.05\CJS@headdivheight]{0.75\normalrulethickness}{\CJS@headdivheight}}
\newlength\CJS@pagenumwidth
\settowidth\CJS@pagenumwidth{9\qquad}
@@ -480,15 +480,38 @@
\iflanguage{french}{Futur emplacement de la déclaration de licence.}%
{Licence statement to appear here.}}
\begin{figure}[!b]
- \raisebox{0pt}[0pt][\footskip]{%
+ \raisebox{0pt}[0pt][\dimexpr\CJS@licenceht-\footskip\relax]{%
\vbox{%
\CJS@setlicencefont
\rule{\textwidth}{\normalrulethickness}
\parbox[t][\CJS@licenceht][t]{\textwidth}{%
+ \ifCJS@specialack\CJS@specialackstatement\fi
\ifCJS@final\CJS@licence \else\textit\CJS@notice \fi}}}
\end{figure}
\fi
}}
+\newcommand*\CJS@adnibyline{for the Alzheimer’s Disease Neuroimaging Initiative}
+\newcommand*\CJS@adnistatement{%
+ Data used in preparation of this article were obtained
+ from the \href{https://adni.loni.usc.edu}{Alzheimer’s Disease Neuroimaging Initiative}
+ (ADNI) database. As such, the investigators within the ADNI
+ contributed to the design and implementation of ADNI and/or provided
+ data but did not participate in the analysis or writing of this
+ report. A complete listing of ADNI investigators can be found at:
+ \url{https://adni.loni.usc.edu/wp-content/uploads/how_to_apply/ADNI_Acknowledgement_List.pdf}.}
+\newcommand*\CJS@admcbyline{for the Alzheimer’s Disease Metabolomics Consortium}
+\newcommand*\CJS@admcstatement{%
+ Data used in preparation of this article were generated by the
+ Alzheimer’s Disease Metabolomics Consortium (ADMC). As such, the
+ investigators within the ADMC provided data but did not participate
+ in analysis or writing of this report. A complete listing of ADMC
+ investigators can be found at:
+ \url{https://sites.duke.edu/adnimetab/team/}.}
+\newcommand*\ADNIacknowledgement{%
+ \specialack{\CJS@adnibyline}{\CJS@adnistatement}}
+\newcommand*\ADMCacknowledgement{%
+ \renewcommand*\CJS@specialackmark{\textsuperscript{\ensuremath{**}}}
+ \specialack{\CJS@admcbyline}{\CJS@admcstatement}}
\def\CJS@supplement{}
\def\CJS@supplementname@en{Supplementary material}
\def\CJS@supplementname@fr{Matériel additionnel}
@@ -535,10 +558,10 @@
\endgroup}
\fi
\fi}
-\newcommand*\CJS@setlicencefont{%
+\def\CJS@setlicencefont{%
\firalining\fontsize{8pt}{9pt}\selectfont}
\newlength\CJS@licenceht
-\newcommand\CJS@licencesample{%
+\def\CJS@licencesample{%
{\ccbyncnd*} 2023 The Authors. The Canadian Journal of
Statistics~{\textbar}~La revue canadienne de statistique published
by Wiley Periodicals LLC on behalf of Statistical Society of
@@ -552,41 +575,43 @@
\newcommand\CJS@measurelicence{%
\setbox\CJS@licencebox=\vbox{%
\CJS@setlicencefont
- \ifdefempty{\CJS@licence}{\CJS@licencesample}{\CJS@licence}}
+ \ifCJS@specialack\CJS@specialackstatement\fi
+ \ifdefempty{\CJS@licence}{\CJS@licencesample}{\CJS@licence}}%
\setlength\CJS@licenceht{\dimexpr\ht\CJS@licencebox+\dp\CJS@licencebox}}
\def\CJS@licence{}
\newcommand\licence[1]{\renewcommand*\CJS@licence{#1}}
\let\license\licence
\newcommand*\ccby{\ccby@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccby@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em}}
+\def\CJS@fakern{\kern0.1em}
+\def\ccby@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern}}
\newcommand*\ccbysa{\ccbysa@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbysa@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
+\def\ccbysa@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
\faCreativeCommonsSa}}
\newcommand*\ccbync{\ccbync@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbync@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
+\def\ccbync@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
\faCreativeCommonsNc}}
\newcommand*\ccbyncsa{\ccbyncsa@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbyncsa@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
- \faCreativeCommonsNc\kern0.1em%
+\def\ccbyncsa@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
+ \faCreativeCommonsNc\CJS@fakern
\faCreativeCommonsSa}}
\newcommand*\ccbynd{\ccbynd@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbynd@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
+\def\ccbynd@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
\faCreativeCommonsNd}}
\newcommand*\ccbyncnd{\ccbyncnd@\@ifstar{~\faCopyright[regular]}\relax}
-\newcommand*\ccbyncnd@{\mbox{%
- \faCreativeCommons\kern0.1em%
- \faCreativeCommonsBy\kern0.1em%
- \faCreativeCommonsNc\kern0.1em%
+\def\ccbyncnd@{\mbox{%
+ \faCreativeCommons\CJS@fakern
+ \faCreativeCommonsBy\CJS@fakern
+ \faCreativeCommonsNc\CJS@fakern
\faCreativeCommonsNd}}
\let\Pr\relax
\DeclareMathOperator{\Pr}{P}
@@ -600,10 +625,12 @@
\let\prdist\mathcal
\fi
\iftutex
- \newcommand*\mat[1]{\symbf{#1}}
+ \let\mat\symbf
+ \let\matit\symbfit
\newcommand*\trsp{^{\mkern-1.5mu\symsfup{T}}}
\else
- \newcommand*\mat[1]{\mathbf{#1}}
+ \let\mat\mathbf
+ \let\matit\mathbfit
\newcommand*\trsp{^{\mkern-1.5mu\mathsf{T}}}
\fi
\DeclareMathOperator{\tr}{tr}
@@ -646,7 +673,7 @@
\theoremstyle{remark}
\newtheorem{remark}{\iflanguage{french}{\CJS@remarkname@fr}{\CJS@remarkname@en}}
\renewcommand*\eqref[1]{\hyperref[{#1}]{\textup{(\ref*{#1})}}}
-\newcommand*\proglang[1]{{\hyphenchar\font=-1 #1}}
+\newrobustcmd*\proglang[1]{\mbox{#1}}
\newcommand*\Rlang{\proglang{R}}
\newcommand*\SASlang{\proglang{SAS}}
\newcommand*\SPSSlang{\proglang{SPSS}}
@@ -654,20 +681,23 @@
\newcommand*\Pylang{\proglang{Python}}
\newcommand*\Julialang{\proglang{Julia}}
\newcommand*\Clang{\proglang{C}}
-\newcommand*\CJS@plus{%
+\newcommand*\Cpplang{\proglang{C\CJS@plus\CJS@plus}}
+\def\CJS@plus{%
\ifx\f@family\sfdefault%
\protect\hspace{-.04em}\protect\raisebox{-.125ex}{\larger+}%
\else%
\protect\hspace{-.03em}\protect\raisebox{.25ex}{\smaller+}%
\fi}
-\newcommand*\Cpplang{\proglang{C\CJS@plus\CJS@plus}}
\let\pkg\textbf
\newcommand\code{\bgroup\@makeother\_\@makeother\~\@makeother\$\code@}
\def\code@#1{{\normalfont\ttfamily\hyphenchar\font=-1 #1}\egroup}
\renewcommand*\appendix{\par
\setcounter{section}{0}
\gdef\thesection{\@Alph\c@section}}
-\renewcommand{\@memb@bsec}{\section*{\bibname}\prebibhook}
+\renewcommand{\@memb@bsec}{%
+ \section*{\bibname}%
+ \addcontentsline{toc}{section}{\bibname}%
+ \prebibhook}
\setlocalecaption{english}{bib}{References}
\setlocalecaption{french}{bib}{Références}
\bibliographystyle{\iflanguage{french}{cjs-rcs-fr}{cjs-rcs-en}}
@@ -741,15 +771,25 @@
\item[\iflanguage{french}{\CJS@acceptedname@fr}{\CJS@acceptedname@en}]
\DTMusedate{accepted}}{\relax}%
\end{CJS@historylist}\par}
-\setbox\@ne=\vbox{\hbox{\firaoldstyle\small l4}}
\newsavebox\CJS@historyornament
\setbox\CJS@historyornament=\vbox{%
- \setbox\thr@@\hbox{\vrule \@width1.5pt\@height\ht\@ne\@depth\dp\@ne}
- \hbox{\textcolor{CJSpink}{\copy\thr@@}\kern.75pt%
- \textcolor{CJSred}{\copy\thr@@}\kern.75pt%
- \textcolor{CJSyellow}{\copy\thr@@}\kern3pt}}
-\newcommand*\CJS@historybox{
+ \setbox\z@=\vbox{\hbox{\firaoldstyle\small l4}}
+ \setbox\tw@\hbox{\vrule \@width1.5pt\@height\ht\z@\@depth\dp\z@}
+ \hbox{\textcolor{CJSpink}{\copy\tw@}\kern.75pt
+ \textcolor{CJSred}{\copy\tw@}\kern.75pt
+ \textcolor{CJSyellow}{\copy\tw@}\kern3pt}}
+\def\CJS@historybox{
\par\addvspace{2\baselineskip}\noindent%
\smash{\box\CJS@historyornament \CJS@history}\par%
\vspace*{40pt}}
\AtEndDocument{\ifCJS@journalinfo\ifCJS@history\CJS@historybox\fi\fi}
+\def\CJS@specialackstatement{}
+\newcommand*\specialack[2]{%
+ \ifstrempty{#1}{}{%
+ \author{#1\CJS@specialackmark}}
+ \ifstrempty{#2}{}{%
+ \CJS@specialacktrue
+ \renewcommand*\CJS@specialackstatement{\CJS@specialackmark\,#2\medskip\newline}}}
+\def\CJS@specialackmark{\textsuperscript{\ensuremath{*}}}
+\newcommand*\specialackmark[1]{%
+ \renewcommand*\CJS@specialackmark{#1}}
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 4e128bf80bb..4d24f770564 100644
--- a/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty
+++ b/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty
@@ -14,7 +14,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020/06/01]
\ProvidesPackage{coloredtheorem}
- [2024/04/03 v1.0.2 - A colorful boxed theorem environment]
+ [2024/09/15 v1.0.4 - A colorful boxed theorem environment]
\RequirePackage{tcolorbox}
\tcbuselibrary{breakable}
@@ -27,10 +27,11 @@
\expandafter\gdef\csname\tcbth list#1name\endcsname{List of #2s}%
\expandafter\gdef\csname#1autorefname\endcsname{#2}%
\AtEndPreamble{%
- \ifdefined\crefname\expandafter\crefname\csname\tcbth#1\endcsname{#2}{#2s}\fi}%
+ \ifdefined\crefname\expandafter\crefname\expandafter{\tcbth#1}{#2}{#2s}\fi}%
\expandafter\gdef\csname\tcbth listof#1s\endcsname
{%
- \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{}}%
@@ -53,6 +54,9 @@
~\csname the\tcbth#1\endcsname\fi}~~##2},
#3, ##3,
]%
+ \let\origpar=\par%
+ \def\par{\origpar\medskip}%
+ \ignorespaces%
}{% \end{tcb<SOMETHING>}
\end{tcolorbox}%
\end{center}%
diff --git a/Master/texmf-dist/tex/latex/colortbl/colortbl.sty b/Master/texmf-dist/tex/latex/colortbl/colortbl.sty
index 49b7ef6e9ed..092775d1da8 100644
--- a/Master/texmf-dist/tex/latex/colortbl/colortbl.sty
+++ b/Master/texmf-dist/tex/latex/colortbl/colortbl.sty
@@ -15,7 +15,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
\ProvidesPackage{colortbl}
- [2024/05/26 v1.0h Color table columns (DPC)]
+ [2024/07/06 v1.0i Color table columns (DPC)]
\edef\@tempa{%
\noexpand\AtEndOfPackage{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax}}
@@ -375,8 +375,12 @@
\next}
\lowercase{\def\HH@spacelet} {\futurelet\@tempb \HH@loop}
\fi}
+\ExplSyntaxOn
+\cs_if_exist:NF\tag_mc_begin:n{
+ \cs_new:Npn\tag_mc_begin:n#1{}
+ \cs_new:Npn\tag_mc_end:{}
+}
\AtBeginDocument{
- \ifx\longtable\@undefined\else
\def\LT@@hline{%
\ifx\LT@next\hline
\global\let\LT@next\@gobble
@@ -386,7 +390,10 @@
\else
\gdef\CT@LT@sep{%
\multispan\LT@cols{%
- \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}%
+ \tag_mc_begin:n{artifact}
+ \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill
+ \tag_mc_end: \int_gdecr:N \g__tbl_row_int
+ }\cr}%
\fi
\else
\global\let\LT@next\empty
@@ -395,13 +402,20 @@
\fi
\ifnum0=`{\fi}%
\multispan\LT@cols
- {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr
+ {\tag_mc_begin:n{artifact}
+ \CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill
+ \tag_mc_end: \int_gdecr:N \g__tbl_row_int
+ }\cr
\CT@LT@sep
\multispan\LT@cols
- {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr
+ {\tag_mc_begin:n{artifact}
+ \CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill
+ \tag_mc_end: \int_gdecr:N \g__tbl_row_int
+ }\cr
\noalign{\penalty\@M}%
\LT@next}
- \fi}
+ }
+\ExplSyntaxOff
\endinput
%%
%% End of file `colortbl.sty'.
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/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/cora-macs/cora-macs.sty b/Master/texmf-dist/tex/latex/cora-macs/cora-macs.sty
new file mode 100644
index 00000000000..3fcee03d457
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/cora-macs/cora-macs.sty
@@ -0,0 +1,198 @@
+
+% package information --------------------------------------------------------------------------------------------------
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{cora-macs}[2024-10-25]
+
+% 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 ----------------------------------------------------------------------------------------------------
+
+\RequirePackage{xifthen}
+\RequirePackage{xstring}
+\RequirePackage{amsfonts}
+\RequirePackage{xcolor}
+
+% 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}}}
+
+% process 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
+ \newcommand{\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_{#1}^\text{#2}}}
+ \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}}
+
+ % other
+ \newcommand{\nnPertRadius}{\epsilon}
+
+ % specification
+ \newcommand{\unsafeSet}[0]{\contSet{S}}
+
+}
+
+% --- colors
+
+\DeclareCORAOption{colors}{ % --- cora colors
+
+ % cora colors (see CORAcolor in cora)
+ \definecolor{CORAcolorReachSet}{rgb}{0.2706, 0.5882, 1.0000} % blue
+ \definecolor{CORAcolorReachSet2}{rgb}{0.6902, 0.8235, 1.0000} % light-blue
+ \definecolor{CORAcolorOnitialSet}{rgb}{1, 1, 1} % white
+ \definecolor{CORAcolorFinalSet}{rgb}{0.9000, 0.9000, 0.9000} % light-gray
+ \definecolor{CORAcolorSimulations}{rgb}{0.9000, 0.9000, 0.9000} % 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
+ \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)'
+}
+
+\DeclareCORAOption{tumcolors}{ % ---- 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}
+
+}
+
+
+% process all 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/cs-techrep/cs-techrep.cls b/Master/texmf-dist/tex/latex/cs-techrep/cs-techrep.cls
index d84b85a3bca..285574dd22f 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}[2024/10/24 Technical Reports in Computer Science and Software Engineering v0.5]
+
+\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,7 @@
\RequirePackage[cmyk, table]{xcolor}
-\RequirePackage[nolist]{acronym}
+\RequirePackage[nolist,smaller]{acronym}
\RequirePackage{listings}
@@ -98,31 +113,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 +196,7 @@
\RequirePackage{booktabs}
-\RequirePackage{paralist}
+\RequirePackage[alwaysadjust]{paralist}
\RequirePackage[
@@ -214,7 +229,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 +245,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
@@ -241,8 +255,13 @@
\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{\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}}
@@ -308,7 +327,6 @@
\newcommand{\hydash}{\penalty\@M-\hskip\z@skip}
\makeatother
-
\input glyphtounicode
\pdfgentounicode=1
@@ -316,7 +334,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 +345,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 +378,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 +400,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
new file mode 100644
index 00000000000..e12fbdc192e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/csthm/csthm.sty
@@ -0,0 +1,146 @@
+%%
+%% This is file `csthm.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% csthm.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2024 by Agni Datta <agnidatta.org@gmail.com>
+%%
+%% 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 2008/05/04 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{csthm}
+ [2024/08/31 v1.2 Theorem Environments for Computer Science]
+\newif\if@csthm@loadcleveref
+\DeclareOption{cleveref}{\@csthm@loadclevereftrue}
+\ProcessOptions\relax
+
+\RequirePackage{amsmath}
+\RequirePackage{amssymb}
+\RequirePackage{amsthm}
+\RequirePackage{enumitem}
+\RequirePackage{thmtools}
+
+\if@csthm@loadcleveref
+\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={.}
+]{thmstyle}
+
+\declaretheoremstyle[
+spaceabove=\topsep,
+spacebelow=\topsep,
+headfont=\bfseries,
+notefont=\bfseries,
+bodyfont=\normalfont,
+postheadspace=5pt,
+numberwithin=section,
+qed=$\scriptstyle\maltese$,
+headpunct={.}
+]{defstyle}
+
+\declaretheoremstyle[
+spaceabove=\topsep,
+spacebelow=\topsep,
+headfont=\itshape,
+notefont=\itshape,
+bodyfont=\normalfont,
+postheadspace=5pt,
+numberwithin=section,
+qed=$\scriptstyle\maltese$,
+headpunct={.}
+]{remarkstyle}
+
+\declaretheoremstyle[
+spaceabove=\topsep,
+spacebelow=\topsep,
+headfont=\sffamily\scshape,
+notefont=\sffamily\scshape,
+bodyfont=\normalfont\sffamily,
+postheadspace=5pt,
+numberwithin=section,
+qed=$\scriptstyle\maltese$,
+headpunct={.}
+]{hltstyle}
+
+\declaretheorem[style=thmstyle,name=Theorem]{theorem}
+\declaretheorem[style=defstyle,sibling=theorem]{fact}
+\declaretheorem[style=thmstyle,sibling=theorem]{assumption}
+\declaretheorem[style=thmstyle,sibling=theorem]{claim}
+\declaretheorem[style=thmstyle,sibling=theorem]{conjecture}
+\declaretheorem[style=thmstyle,sibling=theorem]{corollary}
+\declaretheorem[style=thmstyle,sibling=theorem]{lemma}
+\declaretheorem[style=thmstyle,sibling=theorem]{property}
+\declaretheorem[style=thmstyle,sibling=theorem]{proposition}
+
+\declaretheorem[style=defstyle,sibling=theorem]{definition}
+\declaretheorem[style=defstyle,sibling=theorem]{example}
+\declaretheorem[style=defstyle,sibling=theorem]{exercise}
+\declaretheorem[style=defstyle,sibling=theorem]{problem}
+\declaretheorem[style=defstyle,sibling=theorem]{question}
+
+\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}
+
+\newlist{caseList}{enumerate}{1}
+\setlist[caseList]{label=\textbf{Case~\arabic*:},leftmargin=*}
+
+\NewDocumentEnvironment{case}{O{}}{%
+\begin{caseList}[#1]%
+}{%
+\end{caseList}%
+}
+
+\newlist{axiomList}{enumerate}{1}
+\setlist[axiomList]{label=\textbf{Axiom~\Alph*:}, leftmargin=*}
+
+\NewDocumentEnvironment{axiom}{O{}}{%
+\begin{axiomList}[#1]%
+}{%
+\end{axiomList}%
+}
+
+\renewcommand\qedsymbol{$\scriptstyle\blacksquare$}
+
+\providecommand{\accentcolor}{black}
+
+\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 e63ea57f846..ef5f36f42f0 100644
--- a/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
+++ b/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
@@ -3,9 +3,18 @@
% 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/06/03 0.1.7 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)
+% v 0.1.9 tkzBanner + tkzBannerTri + includegraphicsfill
+% v 0.1.8 Nutriscore
% v 0.1.7 Style perso pour les vignettes
% v 0.1.6 DisplaySkip patch + Patchs pas-tableur
% v 0.1.5 Boxes for exam title + circled numbers + Vignettes + Small simple boxes creation
@@ -676,7 +685,155 @@
}
%====EXERCICE PERSO
+\newlength{\largstarsempty}
+\newlength{\largstarsmid}
+\newlength{\largstarfull}
+\newlength{\largmaxstars}
+
+%commande annexe tkzlevelstars [en] + [fr]
+\usetikzlibrary{shapes.geometric}
+
+\newlength{\tmphauteuretoiles}
+\newlength{\tmpprofondeuretoiles}
+\newlength{\tmpoffsetetoiles}\setlength{\tmpoffsetetoiles}{0.25pt}
+
+\defKV[levelstars]{%
+ colframe=\def\tkzLevelStarsColor{#1},
+ colback=\def\tkzLevelStarsColorBg{#1},
+ offset=\setlength{\tmpoffsetetoiles}{#1},
+ maxlevel=\def\tkzLevelStarsMaxLevel{#1}
+}
+
+\setKVdefault[levelstars]{%
+ colframe=black,
+ colback=gray,
+ offset={0.025em},
+ maxlevel=3,
+ valign=true
+}
+
+\NewDocumentCommand{\tkzLevelStars}{ O{} m }{%
+ %lectures des clés
+ \restoreKV[levelstars]%
+ \setKV[levelstars]{#1}%
+ %dimensions
+ \settototalheight{\tmphauteuretoiles}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \setlength{\tmphauteuretoiles}{0.95\tmphauteuretoiles}%
+ \ifboolKV[levelstars]{valign}%
+ {%
+ \settodepth{\tmpprofondeuretoiles}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \begin{tikzpicture}[baseline={-1.25\tmpprofondeuretoiles},fill=\tkzLevelStarsColorBg,draw=\tkzLevelStarsColor,rounded corners={0.05\tmphauteuretoiles},line width={0.04\tmphauteuretoiles}]
+ }%
+ {%
+ \begin{tikzpicture}[fill=\tkzLevelStarsColorBg,draw=\tkzLevelStarsColor,rounded corners={0.05\tmphauteuretoiles},line width={0.04\tmphauteuretoiles}]
+ }%
+ \foreach \X in {1,...,\tkzLevelStarsMaxLevel}{%
+ \xdef\tmpxfill{\xintfloateval{min(1,max(1+#2-\X,0))}}%
+ %\pgfmathsetmacro{\tmpxfill}{min(1,max(1+#2-\X,0))}
+ \path ({\X*(\tmphauteuretoiles+\tmpoffsetetoiles)},0) node[star,draw,star point height={0.25\tmphauteuretoiles},minimum size={\tmphauteuretoiles},inner sep=0pt,path picture={\fill (path picture bounding box.south west) rectangle ([xshift=\tmpxfill*0.9515*\tmphauteuretoiles]path picture bounding box.north west);}]{};
+ }
+ \end{tikzpicture}%
+}
+
+\defKV[tkznivetoiles]{%
+ Couleur=\def\tkzLevelStarsColor{#1},
+ CouleurFond=\def\tkzLevelStarsColorBg{#1},
+ Offset=\setlength{\tmpoffsetetoiles}{#1},
+ NiveauMax=\def\tkzLevelStarsMaxLevel{#1}
+}
+
+\setKVdefault[tkznivetoiles]{%
+ Couleur=black,
+ CouleurFond=gray,
+ Offset={0.025em},
+ NiveauMax=3,
+ AlignV=true
+}
+
+\NewDocumentCommand{\tkzEtoiles}{ O{} m }{%
+ %lectures des clés
+ \restoreKV[tkznivetoiles]%
+ \setKV[tkznivetoiles]{#1}%
+ %dimensions
+ \settototalheight{\tmphauteuretoiles}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \setlength{\tmphauteuretoiles}{0.95\tmphauteuretoiles}%
+ \ifboolKV[tkznivetoiles]{AlignV}%
+ {%
+ \settodepth{\tmpprofondeuretoiles}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \begin{tikzpicture}[baseline={-1.25\tmpprofondeuretoiles},fill=\tkzLevelStarsColorBg,draw=\tkzLevelStarsColor,rounded corners={0.05\tmphauteuretoiles},line width={0.04\tmphauteuretoiles}]
+ }%
+ {%
+ \begin{tikzpicture}[fill=\tkzLevelStarsColorBg,draw=\tkzLevelStarsColor,rounded corners={0.05\tmphauteuretoiles},line width={0.04\tmphauteuretoiles}]
+ }%
+ \foreach \X in {1,...,\tkzLevelStarsMaxLevel}{%
+ \xdef\tmpxfill{\xintfloateval{min(1,max(1+#2-\X,0))}}%
+ %\pgfmathsetmacro{\tmpxfill}{min(1,max(1+#2-\X,0))}
+ \path ({\X*(\tmphauteuretoiles+\tmpoffsetetoiles)},0) node[star,draw,star point height={0.25\tmphauteuretoiles},minimum size={\tmphauteuretoiles},inner sep=0pt,path picture={\fill (path picture bounding box.south west) rectangle ([xshift=\tmpxfill*0.9515*\tmphauteuretoiles]path picture bounding box.north west);}]{};
+ }
+ \end{tikzpicture}%
+}
+
+%commande annexe ;-)
+\NewDocumentCommand\NiveauDiffExos{ O{3} m }{%avec des demis ??
+ %les tailles de boîtes
+ \settowidth{\largstarsempty}{{\faStar[regular]}}%
+ \settowidth{\largstarsmid}{{\faIcon{star-half-alt}}}%
+ \settowidth{\largstarfull}{{\faStar}}%
+ \pgfmathsetlength{\largmaxstars}{max(\largstarsempty,\largstarsmid,\largstarfull)}%
+ %les calculs intermédiaires
+ \xintifboolexpr{#1 < 0}{\xdef\tmpstarsmax{3}}{\xdef\tmpstarsmax{#1}}%on met à 3 si pas valide
+ \xintifboolexpr{#2 >= 0 'and' #2 <= \tmpstarsmax 'and' isint(2*#2) == 1}{\xdef\tmpstars{#2}}{\xdef\tmpstars{0}}%on met à zéro si pas valide
+ %
+ \xintifboolexpr{isint(\tmpstars) == 1}%
+ {%
+ \xdef\tmpstarsexosfull{\tmpstars}%
+ \xdef\tmpstarsexosmid{0}%
+ \xdef\tmpstarsexosempty{\xinteval{\tmpstarsmax-\tmpstars}}%
+ }%
+ {%
+ \xdef\tmpstarsexosmid{1}%
+ \xdef\tmpstarsexosfull{\xinteval{(\tmpstars-0.5)}}%
+ \xdef\tmpstarsexosempty{\xinteval{\tmpstarsmax-1-\tmpstarsexosfull}}%
+ }%
+ %affichage des full
+ \xintifboolexpr{\tmpstarsexosfull > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosfull}}\do{\makebox[\largmaxstars][c]{\faStar}}}{}%
+ %affichage des mid
+ \xintifboolexpr{\tmpstarsexosmid > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosmid}}\do{\makebox[\largmaxstars][c]{\faIcon{star-half-alt}}}}{}%
+ %affichage des vides
+ \xintifboolexpr{\tmpstarsexosempty > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosempty}}\do{\makebox[\largmaxstars][c]{\faStar[regular]}}}{}%
+}
+
+%commande annexe [en] ;-)
+\NewDocumentCommand\DiffLevelStars{ O{3} m }{%avec des demis ??
+ %les tailles de boîtes
+ \settowidth{\largstarsempty}{{\faStar[regular]}}%
+ \settowidth{\largstarsmid}{{\faIcon{star-half-alt}}}%
+ \settowidth{\largstarfull}{{\faStar}}%
+ \pgfmathsetlength{\largmaxstars}{max(\largstarsempty,\largstarsmid,\largstarfull)}%
+ %les calculs intermédiaires
+ \xintifboolexpr{#1 < 0}{\xdef\tmpstarsmax{3}}{\xdef\tmpstarsmax{#1}}%on met à 3 si pas valide
+ \xintifboolexpr{#2 >= 0 'and' #2 <= \tmpstarsmax 'and' isint(2*#2) == 1}{\xdef\tmpstars{#2}}{\xdef\tmpstars{0}}%on met à zéro si pas valide
+ %
+ \xintifboolexpr{isint(\tmpstars) == 1}%
+ {%
+ \xdef\tmpstarsexosfull{\tmpstars}%
+ \xdef\tmpstarsexosmid{0}%
+ \xdef\tmpstarsexosempty{\xinteval{\tmpstarsmax-\tmpstars}}%
+ }%
+ {%
+ \xdef\tmpstarsexosmid{1}%
+ \xdef\tmpstarsexosfull{\xinteval{(\tmpstars-0.5)}}%
+ \xdef\tmpstarsexosempty{\xinteval{\tmpstarsmax-1-\tmpstarsexosfull}}%
+ }%
+ %affichage des full
+ \xintifboolexpr{\tmpstarsexosfull > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosfull}}\do{\makebox[\largmaxstars][c]{\faStar}}}{}%
+ %affichage des mid
+ \xintifboolexpr{\tmpstarsexosmid > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosmid}}\do{\makebox[\largmaxstars][c]{\faIcon{star-half-alt}}}}{}%
+ %affichage des vides
+ \xintifboolexpr{\tmpstarsexosempty > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosempty}}\do{\makebox[\largmaxstars][c]{\faStar[regular]}}}{}%
+}
+%code ppal
\newcounter{numeroexo}
\setcounter{numeroexo}{0}
\newlength{\eptraitexo}
@@ -687,6 +844,8 @@
\newlength{\tmp@image@profondeur}
\colorlet{macouleurexo}{blue!50!black}
+\colorlet{macouleurexodeco}{blue!50!black}
+\colorlet{macouleurexodecofond}{blue!50!black}
\newcommand\tmpstyleexo{\bfseries\LARGE\sffamily}%
\newcommand\tmplabelexo{Exercice~}%
@@ -694,15 +853,21 @@
\defKV[globalstyleexo]{%
Libelle=\renewcommand\tmplabelexo{#1},%
Couleur=\colorlet{macouleurexo}{#1},%
+ CouleurDeco=\colorlet{macouleurexodeco}{#1},%
+ CouleurFondDeco=\colorlet{macouleurexodecofond}{#1},%
Police=\renewcommand\tmpstyleexo{#1},%
- EpTrait=\setlength{\eptraitexo}{#1}
+ EpTrait=\setlength{\eptraitexo}{#1},%
+ EchelleEtoiles=\def\tmpscalestarsexos{#1}
}
\setKVdefault[globalstyleexo]{%
Libelle={Exercice~},%
Couleur={blue!50!black},%
+ CouleurDeco={blue!50!black},%
+ CouleurFondDeco={macouleurexodeco!50},%
Police={\bfseries\LARGE\sffamily},%
- EpTrait={1.1pt}
+ EpTrait={1.1pt},%
+ EchelleEtoiles=0.85
}
\NewDocumentCommand\StyleEnvtExo{ O{} }{%
@@ -717,20 +882,20 @@
Type=\def\EnvtExoType{#1},%
ComplementTitre=\def\EnvtExoCpltTitre{#1},%
CodeDebut=\def\EnvtExoCodeAvant{#1},%
- %Couleur=\def\EnvtExoCouleur{#1},%
EchelleImage=\def\EnvtExoScaleImg{#1},%
Decoration=\def\EnvtExoDeco{#1},%
- Trait=\def\EnvtExoTrait{#1}
+ Trait=\def\EnvtExoTrait{#1},%
+ Etoiles=\def\EnvtExoEtoiles{#1}
}
\setKVdefault[EnvtExercice]{
Type=Classique,%
ComplementTitre={},%
CodeDebut={},%
- %Couleur=macouleurexo,%
EchelleImage=1.15,%
Compteur=true,%
Decoration={},%
- Trait=plein
+ Trait=plein,%
+ Etoiles={}
}
\NewDocumentEnvironment{EnvtExo}{ !O{} }%
@@ -745,18 +910,32 @@
{%
%label avec numéro et complément
\tmpstyleexo\tmplabelexo\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre%
+ %étoiles eventuelles
+ \IfStrEq{\EnvtExoEtoiles}{}{}%
+ {%
+ \,(\IfSubStr{\EnvtExoEtoiles}{§}%
+ {%
+ \StrCut{\EnvtExoEtoiles}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond,NiveauMax=\EnvtExoStarTot]{\EnvtExoStarNb}%
+ }%
+ {%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond]{\EnvtExoEtoiles}%
+ }%
+ )%
+ }%
%trait éventuel
\IfStrEqCase{\EnvtExoTrait}{%
{plein}{\,\hrulefill}%
{pointilles}{\,\dotfill}%
{dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}%
{non}{\hfill}%
+ {aucun}{~}%
}%
%décoration éventuelle
\IfSubStr{\EnvtExoDeco}{Icone}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]%
- \,\scalebox{0.85}[0.85]{\EnvtExoIcon}%
+ \,\textcolor{macouleurexodeco}{\scalebox{0.85}[0.85]{\EnvtExoIcon}}%
}{}%
\IfSubStr{\EnvtExoDeco}{Ceinture}%
{%
@@ -766,13 +945,15 @@
\IfSubStr{\EnvtExoDeco}{Chrono}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]%
- \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}%
+ \,\pictochrono[ColTime=macouleurexodeco!50]{\EnvtExoChrono}%
}{}%
\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}}%
+ %\IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ %\,\textcolor{macouleurexodeco}{(\num{\EnvtExoPts} \pts)}%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -780,12 +961,55 @@
\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]%
+ \IfSubStr{\EnvtExoStars}{§}%
+ {%
+ \StrCut{\EnvtExoStars}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \textcolor{macouleurexodeco}{\scalebox{\tmpscalestarsexos}[\tmpscalestarsexos]{\NiveauDiffExos[\EnvtExoStarTot]{\EnvtExoStarNb}}}%
+ }%
+ {%
+ \textcolor{macouleurexodeco}{\scalebox{\tmpscalestarsexos}[\tmpscalestarsexos]{\NiveauDiffExos{\EnvtExoStars}}}%
+ }%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{tkzEtoiles}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoStars]%
+ \IfSubStr{\EnvtExoStars}{§}%
+ {%
+ \StrCut{\EnvtExoStars}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond,NiveauMax=\EnvtExoStarTot]{\EnvtExoStarNb}%
+ }%
+ {%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond]{\EnvtExoStars}%
+ }%
+ }{}%
}{}%
\IfSubStr{\EnvtExoType}{Perso}%OK perso____déco
{%
\StrBehind{\EnvtExoType}{/}[\EnvtExoLabel]%
%label avec numéro et complément
\tmpstyleexo\EnvtExoLabel\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre%
+ %étoiles eventuelles
+ \IfStrEq{\EnvtExoEtoiles}{}{}%
+ {%
+ \,(\IfSubStr{\EnvtExoEtoiles}{§}%
+ {%
+ \StrCut{\EnvtExoEtoiles}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond,NiveauMax=\EnvtExoStarTot]{\EnvtExoStarNb}%
+ }%
+ {%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond]{\EnvtExoEtoiles}%
+ }%
+ )%
+ }%
%trait éventuel
\IfStrEqCase{\EnvtExoTrait}{%
{plein}{\,\hrulefill}%
@@ -797,7 +1021,7 @@
\IfSubStr{\EnvtExoDeco}{Icone}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]%
- \,\scalebox{0.85}[0.85]{\EnvtExoIcon}%
+ \,\textcolor{macouleurexodeco}{\scalebox{0.85}[0.85]{\EnvtExoIcon}}%
}{}%
\IfSubStr{\EnvtExoDeco}{Ceinture}%
{%
@@ -807,13 +1031,15 @@
\IfSubStr{\EnvtExoDeco}{Chrono}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]%
- \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}%
+ \,\pictochrono[ColTime=macouleurexodeco!50]{\EnvtExoChrono}%
}{}%
\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}}%
+ %\IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ %\,\textcolor{macouleurexodeco}{(\num{\EnvtExoPts} \pts)}%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -821,6 +1047,30 @@
\settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}%
\,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$%
}{}%
+ \IfSubStr{\EnvtExoDeco}{faEtoiles}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoStars]%
+ \IfSuStr{\EnvtExoStars}{§}%
+ {%
+ \StrCut{\EnvtExoStars}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \textcolor{macouleurexodeco}{\scalebox{\tmpscalestarsexos}[\tmpscalestarsexos]{\NiveauDiffExos[\EnvtExoStarTot]{\EnvtExoStarNb}}}%
+ }%
+ {%
+ \textcolor{macouleurexodeco}{\scalebox{\tmpscalestarsexos}[\tmpscalestarsexos]{\NiveauDiffExos{\EnvtExoStars}}}%
+ }%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{tkzEtoiles}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoStars]%
+ \IfSubStr{\EnvtExoStars}{§}%
+ {%
+ \StrCut{\EnvtExoStars}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond,NiveauMax=\EnvtExoStarTot]{\EnvtExoStarNb}%
+ }%
+ {%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond]{\EnvtExoStars}%
+ }%
+ }{}%
}{}%
\endgroup%
\def\hrulefill{\leavevmode\leaders\hrule height 0.4pt\hfill\kern\z@}%
@@ -840,6 +1090,19 @@
{%
%label avec numéro et complément
\tmpstyleexo\tmplabelexo\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre%
+ %étoiles eventuelles
+ \IfStrEq{\EnvtExoEtoiles}{}{}%
+ {%
+ \,(\IfSubStr{\EnvtExoEtoiles}{§}%
+ {%
+ \StrCut{\EnvtExoEtoiles}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond,NiveauMax=\EnvtExoStarTot]{\EnvtExoStarNb}%
+ }%
+ {%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond]{\EnvtExoEtoiles}%
+ }%
+ )%
+ }%
%trait éventuel
\IfStrEqCase{\EnvtExoTrait}{%
{plein}{\,\hrulefill}%
@@ -866,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}%
{%
@@ -875,12 +1139,49 @@
\settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}%
\,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$%
}{}%
+ \IfSubStr{\EnvtExoDeco}{faEtoiles}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoStars]%
+ \IfSuStr{\EnvtExoStars}{§}%
+ {%
+ \StrCut{\EnvtExoStars}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \textcolor{macouleurexodeco}{\scalebox{\tmpscalestarsexos}[\tmpscalestarsexos]{\NiveauDiffExos[\EnvtExoStarTot]{\EnvtExoStarNb}}}%
+ }%
+ {%
+ \textcolor{macouleurexodeco}{\scalebox{\tmpscalestarsexos}[\tmpscalestarsexos]{\NiveauDiffExos{\EnvtExoStars}}}%
+ }%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{tkzEtoiles}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoStars]%
+ \IfSubStr{\EnvtExoStars}{§}%
+ {%
+ \StrCut{\EnvtExoStars}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond,NiveauMax=\EnvtExoStarTot]{\EnvtExoStarNb}%
+ }%
+ {%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond]{\EnvtExoStars}%
+ }%
+ }{}%
}{}%
\IfSubStr{\EnvtExoType}{Perso}%OK perso____déco
{%
\StrBehind{\EnvtExoType}{/}[\EnvtExoLabel]%
%label avec numéro et complément
\tmpstyleexo\EnvtExoLabel\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre%
+ %étoiles eventuelles
+ \IfStrEq{\EnvtExoEtoiles}{}{}%
+ {%
+ \,(\IfSubStr{\EnvtExoEtoiles}{§}%
+ {%
+ \StrCut{\EnvtExoEtoiles}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond,NiveauMax=\EnvtExoStarTot]{\EnvtExoStarNb}%
+ }%
+ {%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond]{\EnvtExoEtoiles}%
+ }%
+ )%
+ }%
%trait éventuel
\IfStrEqCase{\EnvtExoTrait}{%
{plein}{\,\hrulefill}%
@@ -907,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}%
{%
@@ -916,6 +1218,30 @@
\settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}%
\,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$%
}{}%
+ \IfSubStr{\EnvtExoDeco}{faEtoiles}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoStars]%
+ \IfSuStr{\EnvtExoStars}{§}%
+ {%
+ \StrCut{\EnvtExoStars}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \textcolor{macouleurexodeco}{\scalebox{\tmpscalestarsexos}[\tmpscalestarsexos]{\NiveauDiffExos[\EnvtExoStarTot]{\EnvtExoStarNb}}}%
+ }%
+ {%
+ \textcolor{macouleurexodeco}{\scalebox{\tmpscalestarsexos}[\tmpscalestarsexos]{\NiveauDiffExos{\EnvtExoStars}}}%
+ }%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{tkzEtoiles}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoStars]%
+ \IfSubStr{\EnvtExoStars}{§}%
+ {%
+ \StrCut{\EnvtExoStars}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond,NiveauMax=\EnvtExoStarTot]{\EnvtExoStarNb}%
+ }%
+ {%
+ \tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond]{\EnvtExoStars}%
+ }%
+ }{}%
}{}%
\endgroup%
\def\hrulefill{\leavevmode\leaders\hrule height 0.4pt\hfill\kern\z@}%
@@ -1095,6 +1421,93 @@
title={\@ifpackageloaded{babel}{\NoAutoSpacing#2}{#2}\IfBooleanTF{#1}{}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircle[regular]\!\faCheckCircle[regular]}~}},left=1mm,right=1mm,boxsep=0mm]{#3}%
}
+%====Nutriscore
+\definecolor{couleurNS1}{RGB}{45,126,67}
+\definecolor{couleurNS2}{RGB}{151,186,56}
+\definecolor{couleurNS3}{RGB}{240,202,13}
+\definecolor{couleurNS4}{RGB}{213,123,26}
+\definecolor{couleurNS5}{RGB}{197,52,25}
+\tikzset{noeudNS/.style={pos=0.5,xscale=\echellexNS*\hauteurNS,yscale=\echelleyNS*\hauteurNS}}
+
+\defKV[NUTRISCORE]{%
+ Hauteur=\pgfmathsetmacro{\hauteurNS}{#1},%
+ Ratio=\pgfmathsetmacro{\ratiolargeurbandeNS}{#1},%
+ Symboles=\def\lettresNS{#1},%
+ Legende=\def\legendeNS{#1},%
+ Police=\def\fonteNS{#1},%
+ Couleurs=\def\couleursNS{#1},%
+ EchelleSymboles=\def\echellesymbNS{#1},%
+ CouleurFond=\def\coulbgNS{#1}
+}
+\setKVdefault[NUTRISCORE]{%
+ Hauteur=1,%
+ Ratio={0.6},%
+ Symboles={A,B,C,D,E},%
+ Legende={score},%
+ Police=\sffamily\bfseries,%
+ AffLegende=true,%
+ Couleurs={couleurNS1,couleurNS2,couleurNS3,couleurNS4,couleurNS5},%
+ EchelleSymboles={1.25,1.65},%
+ CouleurFond=white
+}
+
+\NewDocumentCommand\BandeauScore{ O{} D<>{} m }{%
+ \restoreKV[NUTRISCORE]%
+ \setKV[NUTRISCORE]{#1}%
+ \IfEq{#3}{}%
+ {%
+ \xdef\numcasNS{0}%
+ }%
+ {%
+ \xdef\numcasNS{#3}%
+ }%
+ \readlist\letterListNS{\lettresNS}%
+ \xdef\nbcasesNS{\letterListNSlen}%
+ \readlist\colorListNS{\couleursNS}%
+ \xdef\nbcouleursNS{\colorListNSlen}%
+ \pgfmathsetmacro{\largeurcaseNS}{\hauteurNS*\ratiolargeurbandeNS}%
+ \pgfmathsetmacro{\largeurbandeNS}{\largeurcaseNS*\nbcasesNS}%
+ \pgfmathsetmacro{\margeNS}{0.225*\largeurcaseNS/2.4}%
+ \IfSubStr{\echellesymbNS}{,}%
+ {%
+ \StrCut{\echellesymbNS}{,}{\echellexNS}{\echelleyNS}%
+ }%
+ {%
+ \xdef\echellexNS{\echellesymbNS}\xdef\echelleyNS{\echellesymbNS}%
+ }%
+ \begin{tikzpicture}[font=\fonteNS,#2]
+ %---test
+ \filldraw[white,rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,opacity=0] ({-\margeNS},{-\margeNS}) rectangle++ (\nbcasesNS*\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) ;
+ %---testfin
+ \begin{scope}
+ \clip[rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm] (0,0) rectangle (\largeurbandeNS,\hauteurNS);
+ \foreach \tmpiii in {1,...,\letterListNSlen}{%
+ \ifnum\tmpiii=\numcasNS
+ \else
+ \ifnum\tmpiii>\nbcouleursNS
+ \fill[draw=none,lightgray] ({(\tmpiii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\tmpiii]};
+ \else
+ \fill[draw=none,{\colorListNS[\tmpiii]}] ({(\tmpiii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\tmpiii]};
+ \fi
+ \fi
+ }%
+ \end{scope}
+ \xintifboolexpr{\numcasNS >=1 'and' \numcasNS <= \nbcasesNS }%
+ {%
+ \begin{scope}
+ %\clip (-\margeNS,-\margeNS) rectangle++ (\largeurbandeNS+2*\margeNS,\hauteurNS+2*\margeNS);
+ \draw[draw=\coulbgNS,rounded corners=\fpeval{7.25*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,fill={\colorListNS[#3]}] ({(\numcasNS-1)*\largeurcaseNS-\margeNS},{-\margeNS}) rectangle++ (\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) node[noeudNS,white]{\letterListNS[\numcasNS]};
+ \end{scope}
+ }%
+ {%
+ }%
+ %légende
+ \ifboolKV[NUTRISCORE]{AffLegende}%
+ {%
+ \node[above right=1pt,gray,scale=\fpeval{0.5*\hauteurNS},inner sep=1pt] at ({0.125*\margeNS},1.02*\hauteurNS) {\vphantom{QÉ}\MakeUppercase{\legendeNS}};
+ }{}%
+ \end{tikzpicture}%
+}
%%----COMMANDES EN
@@ -1932,4 +2345,1197 @@
\fi
+%====BannerScore
+\definecolor{colorNS1}{RGB}{45,126,67}
+\definecolor{colorNS2}{RGB}{151,186,56}
+\definecolor{colorNS3}{RGB}{240,202,13}
+\definecolor{colorNS4}{RGB}{213,123,26}
+\definecolor{colorNS5}{RGB}{197,52,25}
+\tikzset{nodeNS/.style={pos=0.5,xscale=\echellexNS*\hauteurNS,yscale=\echelleyNS*\hauteurNS}}
+
+\defKV[NUTRISCOREEN]{%
+ Height=\pgfmathsetmacro{\hauteurNS}{#1},%
+ Ratio=\pgfmathsetmacro{\ratiolargeurbandeNS}{#1},%
+ Symbols=\def\lettresNS{#1},%
+ Legend=\def\legendeNS{#1},%
+ Font=\def\fonteNS{#1},%
+ Colors=\def\couleursNS{#1},%
+ ScaleSymbols=\def\echellesymbNS{#1},%
+ Colbg=\def\coulbgNS{#1}
+}
+\setKVdefault[NUTRISCOREEN]{%
+ Height=1,%
+ Ratio={0.6},%
+ Symbols={A,B,C,D,E},%
+ Legend={score},%
+ Font=\sffamily\bfseries,%
+ ShowLegend=true,%
+ Colors={colorNS1,colorNS2,colorNS3,colorNS4,colorNS5},%
+ ScaleSymbols={1.25,1.65},%
+ Colbg=white
+}
+
+\NewDocumentCommand\ScoreBanner{ O{} D<>{} m }{%
+ \restoreKV[NUTRISCOREEN]%
+ \setKV[NUTRISCOREEN]{#1}%
+ \IfEq{#3}{}%
+ {%
+ \xdef\numcasNS{0}%
+ }%
+ {%
+ \xdef\numcasNS{#3}%
+ }%
+ \readlist\letterListNS{\lettresNS}%
+ \xdef\nbcasesNS{\letterListNSlen}%
+ \readlist\colorListNS{\couleursNS}%
+ \xdef\nbcouleursNS{\colorListNSlen}%
+ \pgfmathsetmacro{\largeurcaseNS}{\hauteurNS*\ratiolargeurbandeNS}%
+ \pgfmathsetmacro{\largeurbandeNS}{\largeurcaseNS*\nbcasesNS}%
+ \pgfmathsetmacro{\margeNS}{0.225*\largeurcaseNS/2.4}%
+ \IfSubStr{\echellesymbNS}{,}%
+ {%
+ \StrCut{\echellesymbNS}{,}{\echellexNS}{\echelleyNS}%
+ }%
+ {%
+ \xdef\echellexNS{\echellesymbNS}\xdef\echelleyNS{\echellesymbNS}%
+ }%
+ \begin{tikzpicture}[font=\fonteNS,#2]
+ %---test
+ \filldraw[white,rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,opacity=0] ({-\margeNS},{-\margeNS}) rectangle++ (\nbcasesNS*\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) ;
+ %---testfin
+ \begin{scope}
+ \clip[rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm] (0,0) rectangle (\largeurbandeNS,\hauteurNS);
+ \foreach \iii in {1,...,\letterListNSlen}{%
+ \ifnum\iii=\numcasNS
+ \else
+ \ifnum\iii>\nbcouleursNS
+ \fill[draw=none,lightgray] ({(\iii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\iii]};
+ \else
+ \fill[draw=none,{\colorListNS[\iii]}] ({(\iii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\iii]};
+ \fi
+ \fi
+ }%
+ \end{scope}
+ \xintifboolexpr{\numcasNS >=1 'and' \numcasNS <= \nbcasesNS }%
+ {%
+ \begin{scope}
+ %\clip (-\margeNS,-\margeNS) rectangle++ (\largeurbandeNS+2*\margeNS,\hauteurNS+2*\margeNS);
+ \draw[draw=\coulbgNS,rounded corners=\fpeval{7.25*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,fill={\colorListNS[#3]}] ({(\numcasNS-1)*\largeurcaseNS-\margeNS},{-\margeNS}) rectangle++ (\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) node[noeudNS,white]{\letterListNS[#3]};
+ \end{scope}
+ }%
+ {}%
+ %légende
+ \ifboolKV[NUTRISCOREEN]{ShowLegend}%
+ {%
+ \node[above right=1pt,gray,scale=\fpeval{0.5*\hauteurNS},inner sep=1pt] at ({0.125*\margeNS},1.02*\hauteurNS) {\MakeUppercase{\legendeNS}};
+ }{}%
+ \end{tikzpicture}%
+}
+
+%====vincludegraphics [fr]
+\newlength{\tmp@includegraphics@vfill@offset}
+
+\defKV[vfillincludegphcs]{vOffset=\setlength\tmp@includegraphics@vfill@offset{#1},vCentrer=\def\tmpincludegpvcenter{#1}}
+\setKVdefault[vfillincludegphcs]{vRemplir=false,vOffset=0pt,vCentrer=n}
+
+\NewDocumentCommand\InsererImage{ D<>{} O{} m }{%
+ \restoreKV[vfillincludegphcs]%
+ \setKV[vfillincludegphcs]{#1}%
+ \ifboolKV[vfillincludegphcs]{vRemplir}%
+ {%
+ \IfStrEqCase{\tmpincludegpvcenter}{%
+ {m}{\vfill\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}\vfill}%
+ {h}{\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}\vfill}%
+ {b}{\vfill\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}}%
+ {n}{\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}}%
+ }[{\includegraphics[height=\dimexpr\pagegoal-\pagetotal-\tmp@includegraphics@vfill@offset\relax,#2]{#3}}]%
+ }%
+ {%
+ \includegraphics[#2]{#3}%
+ }%
+}
+
+%===tkzBanner mixte
+\defKV[tkzBannerKeys]{%
+ maincolor=\def\tkzBannermaincol{#1}
+}
+
+\setKVdefault[tkzBannerKeys]{%
+ height=2.1cm,%
+ width=\linewidth,%
+ collight=teal!25,%
+ colmedium=teal!75,%
+ coldark=teal,%
+ coltxt=white,%
+ fonttxt=\sffamily\bfseries,%
+ swap=false,%
+ maincolor={},%
+ num=true
+}
+
+\NewDocumentCommand\tkzBanner{ O{} m m }{%
+ \noindent%
+ \restoreKV[tkzBannerKeys]%
+ \setKV[tkzBannerKeys]{#1}%
+ \pgfmathsetmacro{\tkzBannerscale}{\useKV[tkzBannerKeys]{width}/\linewidth}%
+ \begin{tikzpicture}
+ \IfEq{\tkzBannermaincol}{}%
+ {%
+ \tikzset{tkzbannerdark/.style={\useKV[tkzBannerKeys]{coldark}}}
+ \tikzset{tkzbannermedium/.style={\useKV[tkzBannerKeys]{colmedium}}}
+ \tikzset{tkzbannerlight/.style={\useKV[tkzBannerKeys]{collight}}}
+ }%
+ {%
+ \tikzset{tkzbannerdark/.style={\tkzBannermaincol}}
+ \tikzset{tkzbannermedium/.style={\tkzBannermaincol!75}}
+ \tikzset{tkzbannerlight/.style={\tkzBannermaincol!25}}
+ }%
+ %coordinates
+ \coordinate (tkzBanner-NW) at (0,{\useKV[tkzBannerKeys]{height}}) ;
+ \coordinate (tkzBanner-SW) at (0,0) ;
+ \coordinate (tkzBanner-NE) at ({\useKV[tkzBannerKeys]{width}},{\useKV[tkzBannerKeys]{height}}) ;
+ \coordinate (tkzBanner-SE) at ({\useKV[tkzBannerKeys]{width}},0) ;%
+ %swap or note
+ \ifboolKV[tkzBannerKeys]{swap}%
+ {%
+ \coordinate (tkzBanner-A) at ($(tkzBanner-SE)!0.57!(tkzBanner-SW)$) ;
+ \coordinate (tkzBanner-B) at ($(tkzBanner-NE)!0.91!(tkzBanner-NW)$) ;
+ \coordinate (tkzBanner-C) at ($(tkzBanner-NE)!0.92!(tkzBanner-NW)$) ;
+ \coordinate (tkzBanner-D) at ($(tkzBanner-SE)!0.63!(tkzBanner-SW)$) ;
+ }%
+ {%
+ \coordinate (tkzBanner-A) at ($(tkzBanner-SW)!0.57!(tkzBanner-SE)$) ;
+ \coordinate (tkzBanner-B) at ($(tkzBanner-NW)!0.91!(tkzBanner-NE)$) ;
+ \coordinate (tkzBanner-C) at ($(tkzBanner-NW)!0.92!(tkzBanner-NE)$) ;
+ \coordinate (tkzBanner-D) at ($(tkzBanner-SW)!0.63!(tkzBanner-SE)$) ;
+ }%
+ %drawing
+ \fill[tkzbannerdark] (0,0) rectangle ({\useKV[tkzBannerKeys]{width}},{\useKV[tkzBannerKeys]{height}});
+ \ifboolKV[tkzBannerKeys]{swap}%
+ {%
+ \fill[tkzbannerlight] (tkzBanner-A) to[bend left=8] (tkzBanner-B) -- (tkzBanner-C) to[bend right=7] (tkzBanner-D) -- cycle ;
+ \fill[tkzbannermedium] (tkzBanner-C) to[bend right=7] (tkzBanner-D) -- (tkzBanner-SW) |- cycle ;
+ }%
+ {%
+ \fill[tkzbannerlight] (tkzBanner-A) to[bend right=8] (tkzBanner-B) -- (tkzBanner-C) to[bend left=7] (tkzBanner-D) -- cycle ;
+ \fill[tkzbannermedium] (tkzBanner-C) to[bend left=7] (tkzBanner-D) -- (tkzBanner-SE) |- cycle ;
+ }%
+ %nodes
+ \ifboolKV[tkzBannerKeys]{swap}%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},below left,font={\useKV[tkzBannerKeys]{fonttxt}},scale={2*\tkzBannerscale}] at (tkzBanner-NE) {\vphantom{qÉ}#2};
+ \ifboolKV[tkzBannerKeys]{num}%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},above right,font={\useKV[tkzBannerKeys]{fonttxt}},scale={1.25*\tkzBannerscale}] at (tkzBanner-SW) {\vphantom{qÉ}#3};
+ }%
+ {}%
+ }%
+ {%
+ \ifboolKV[tkzBannerKeys]{num}%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},above left,font={\useKV[tkzBannerKeys]{fonttxt}},scale={1.25*\tkzBannerscale}] at (tkzBanner-SE) {\vphantom{qÉ}#3};
+ }%
+ {}%
+ \node[inner sep=2pt,text={\useKV[tkzBannerKeys]{coltxt}},below right,font={\useKV[tkzBannerKeys]{fonttxt}},scale={2*\tkzBannerscale}] at (tkzBanner-NW) {\vphantom{qÉ}#2};
+ }%
+ \end{tikzpicture}%
+}
+
+%====titre stylisé [fr], à voir avec part ??
+\newlength{\tmp@tkzbanner@autowidthtype}
+\setlength\tmp@tkzbanner@autowidthtype{2.5em}
+\newlength{\tmp@tkzbanner@autowidthnum}
+\setlength\tmp@tkzbanner@autowidthnum{2em}
+\newlength{\tmp@tkzbanner@marginoffsetbanner}
+\setlength\tmp@tkzbanner@marginoffsetbanner{2pt}
+\newlength{\tmp@tkzbanner@autowidth}
+\setlength\tmp@tkzbanner@autowidth{2.5em}
+
+\defKV[tkzBannerpartKeys]{%
+ maincolor=\def\tkzBannermaintricol{#1},%
+ logo=\def\tkzBannermaintrilogo{#1},%
+ type=\def\tkzBannermaintritype{#1},%
+ blockwidth=\def\tkzBannermaintriblockwidth{#1},%
+ customtype=\def\tkzBannermaintritypelibre{#1}
+}
+
+\setKVdefault[tkzBannerpartKeys]{%
+ height=2.5em,%
+ width={\linewidth-0.5pt},%
+ blockwidth=2.75em,%
+ collight=darkgray!25,%
+ colmedium=darkgray!50,%
+ coldark=darkgray,%
+ coltxt=white,%
+ fonttxt=\sffamily\bfseries,%
+ swap=false,%
+ maincolor={},%
+ logo={},%
+ type={},%
+ num=true,
+ dispblock=true,%
+ customtype={}
+}
+
+\NewDocumentCommand\tkzBannerTri{ O{} m m }{%
+ %#1 := clés
+ %#2 := numéro
+ %#3 := titre
+ \noindent%
+ \restoreKV[tkzBannerpartKeys]%
+ \setKV[tkzBannerpartKeys]{#1}%
+ \pgfmathsetmacro{\tkzBannertriscale}{0.75*(\useKV[tkzBannerpartKeys]{height})/1.25cm}%
+ \pgfmathsetmacro{\scaletypedoctribanner}{1.05*0.75*(\useKV[tkzBannerpartKeys]{height})/1.25cm}%
+ \pgfmathsetmacro{\scaletypedoctribannernum}{2.5*0.75*(\useKV[tkzBannerpartKeys]{height})/1.25cm}%
+ \pgfmathsetmacro{\tkzBannertriangle}{0.10*(\useKV[tkzBannerpartKeys]{height})/(\useKV[tkzBannerpartKeys]{width})}%
+ \IfEq{\tkzBannermaintriblockwidth}{auto}%
+ {%
+ \settowidth{\tmp@tkzbanner@autowidthtype}{\scalebox{\scaletypedoctribanner}[\scaletypedoctribanner]{\sffamily\bfseries\vphantom{qÉ}\tkzBannermaintritype}}%
+ \addtolength{\tmp@tkzbanner@autowidthtype}{4pt}%
+ \settowidth{\tmp@tkzbanner@autowidthnum}{\scalebox{\scaletypedoctribannernum}[\scaletypedoctribannernum]{\sffamily\bfseries\vphantom{qÉ}00}}%
+ \addtolength{\tmp@tkzbanner@autowidthnum}{4pt}%
+ \pgfmathsetlength{\tmp@tkzbanner@autowidth}{max(\tmp@tkzbanner@autowidthtype,\tmp@tkzbanner@autowidthnum)}%
+ }%
+ {%
+ \setlength\tmp@tkzbanner@autowidth{\tkzBannermaintriblockwidth}%
+ }%
+ \begin{tikzpicture}
+ \IfEq{\tkzBannermaintricol}{}%
+ {%
+ \tikzset{tkzbannertridark/.style={\useKV[tkzBannerpartKeys]{coldark}}}
+ \tikzset{tkzbannertrimedium/.style={\useKV[tkzBannerpartKeys]{colmedium}}}
+ \tikzset{tkzbannertrilight/.style={\useKV[tkzBannerpartKeys]{collight}}}
+ }%
+ {%
+ \tikzset{tkzbannertridark/.style={\tkzBannermaintricol}}
+ \tikzset{tkzbannertrimedium/.style={\tkzBannermaintricol!50}}
+ \tikzset{tkzbannertrilight/.style={\tkzBannermaintricol!25}}
+ }%
+ %coordinates
+ \coordinate (tkzBannerTri-NW) at (0,{\useKV[tkzBannerpartKeys]{height}}) ;
+ \coordinate (tkzBannerTri-SW) at (0,0) ;
+ \coordinate (tkzBannerTri-NE) at ({\useKV[tkzBannerpartKeys]{width}},{\useKV[tkzBannerpartKeys]{height}}) ;
+ \coordinate (tkzBannerTri-SE) at ({\useKV[tkzBannerpartKeys]{width}},0) ;%
+ \coordinate (tkzBannerTri-SWd) at ($(tkzBannerTri-SW)!0.05!(tkzBannerTri-NW)$) ;%
+ \coordinate (tkzBannerTri-SEd) at ($(tkzBannerTri-SE)!0.15!(tkzBannerTri-NE)$) ;%
+ %drawing & shadow
+ \fill[lightgray!75] ([yshift=-1pt]tkzBannerTri-SWd) -- ([yshift=-1pt]tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+ \ifboolKV[tkzBannerpartKeys]{swap}%
+ {%
+ \fill[white] (tkzBannerTri-SWd) -- (tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+ \draw[line width=1pt,tkzbannertridark] ([shift={(0.5pt,-0.5pt)}]tkzBannerTri-NW) -| ([shift={(-0.5pt,0)}]tkzBannerTri-SEd) -- (tkzBannerTri-SWd) ;
+ }%
+ {%
+ \fill[tkzbannertrimedium] (tkzBannerTri-SWd) -- (tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+ }%
+ \ifboolKV[tkzBannerpartKeys]{dispblock}%
+ {%
+ \begin{scope}
+ \clip ($(tkzBannerTri-SW)!0.0375!(tkzBannerTri-NW)$) -- ($(tkzBannerTri-SE)!0.1375!(tkzBannerTri-NE)$) -- (tkzBannerTri-NE) -| cycle ;
+ %light
+ \fill[tkzbannertrilight] (tkzBannerTri-NW) --++ ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner},0) -- ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner+1em},{0.5*(\useKV[tkzBannerpartKeys]{height})}) -- ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner},0) -- (tkzBannerTri-SW) -- cycle ;
+ \end{scope}
+ \begin{scope}
+ \clip ($(tkzBannerTri-SW)!0.025!(tkzBannerTri-NW)$) -- ($(tkzBannerTri-SE)!0.125!(tkzBannerTri-NE)$) -- (tkzBannerTri-NE) -| cycle ;
+ %medium
+ \fill[tkzbannertrimedium] (tkzBannerTri-NW) --++ ({\tmp@tkzbanner@autowidth+\tmp@tkzbanner@marginoffsetbanner},0) -- ({\tmp@tkzbanner@autowidth+\tmp@tkzbanner@marginoffsetbanner+1em},{0.5*(\useKV[tkzBannerpartKeys]{height})}) -- ({\tmp@tkzbanner@autowidth+\tmp@tkzbanner@marginoffsetbanner},0) -- (tkzBannerTri-SW) -- cycle ;
+ \end{scope}
+ \begin{scope}
+ \clip ($(tkzBannerTri-SW)!0.0125!(tkzBannerTri-NW)$) -- ($(tkzBannerTri-SE)!0.1125!(tkzBannerTri-NE)$) -- (tkzBannerTri-NE) -| cycle ;
+ %dark
+ \fill[tkzbannertridark] (tkzBannerTri-NW) --++ ({\tmp@tkzbanner@autowidth},0) -- ({\tmp@tkzbanner@autowidth+1em},{0.5*(\useKV[tkzBannerpartKeys]{height})}) -- ({\tmp@tkzbanner@autowidth},0) -- (tkzBannerTri-SW) -- cycle ;
+ \IfEq{\tkzBannermaintritypelibre}{}%
+ {%
+ \ifboolKV[tkzBannerpartKeys]{num}%
+ {%
+ \IfEq{\tkzBannermaintritype}{}%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp@tkzbanner@autowidth},{0.5*(\useKV[tkzBannerpartKeys]{height})}) {\vphantom{qÉ}#2};
+ }%
+ {%
+ \node[inner sep=2pt,below=1pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={1.05*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp@tkzbanner@autowidth},{\useKV[tkzBannerpartKeys]{height}}) {\vphantom{qÉ}\tkzBannermaintritype};
+ \node[inner sep=2pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp@tkzbanner@autowidth},{0.425*(\useKV[tkzBannerpartKeys]{height})}) {\vphantom{qÉ}#2};
+ }%
+ }%
+ {}%
+ }%
+ {%
+ \node[inner sep=2pt,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({0.5*\tmp@tkzbanner@autowidth},{0.5*(\useKV[tkzBannerpartKeys]{height})}) {\vphantom{qÉ}\tkzBannermaintritypelibre};
+ }%
+ \end{scope}
+ }%
+ {}%
+ %nodes
+ \begin{scope}
+ \clip (tkzBannerTri-SWd) -- (tkzBannerTri-SEd) -- (tkzBannerTri-NE) -| cycle ;
+ \ifboolKV[tkzBannerpartKeys]{swap}%
+ {%
+ \node[inner sep=2pt,right,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.75*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner+1.25em},{0.5*(\useKV[tkzBannerpartKeys]{height})}) {\vphantom{qÉ}#3};
+ %logo
+ \IfEq{\tkzBannermaintrilogo}{}%
+ {}%
+ {%
+ \node[inner sep=2pt,left,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartKeys]{width}},{0.55*(\useKV[tkzBannerpartKeys]{height})}) {\vphantom{qÉ}\tkzBannermaintrilogo};
+ }%
+ }%
+ {%
+ \node[inner sep=2pt,right,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.75*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\tmp@tkzbanner@autowidth+2*\tmp@tkzbanner@marginoffsetbanner+1.25em},{0.5*(\useKV[tkzBannerpartKeys]{height})}) {\vphantom{qÉ}#3};
+ %logo
+ \IfEq{\tkzBannermaintrilogo}{}%
+ {}%
+ {%
+ \node[inner sep=2pt,left,text={\useKV[tkzBannerpartKeys]{coltxt}},font={\useKV[tkzBannerpartKeys]{fonttxt}},scale={2.5*\tkzBannertriscale},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartKeys]{width}},{0.55*(\useKV[tkzBannerpartKeys]{height})}) {\vphantom{qÉ}\tkzBannermaintrilogo};
+ }%
+ }%
+ \end{scope}
+ \end{tikzpicture}%
+}
+
+%====grille automatique tikz ?
+\NewDocumentCommand\tkzGrilleAuto{ s O{thin,lightgray} m }{%
+ \IfBooleanT{#1}{\filldraw (0,0) circle[radius=2pt] ;}
+ \StrCut{#3}{§}{\tkzautogridx}{\tkzautogridy}%
+ \draw[xstep=\tkzautogridx,ystep=\tkzautogridy,#2] (current bounding box.south west) grid (current bounding box.north east) ;
+}
+\NewDocumentCommand\tkzAutoGrid{ s O{thin,lightgray} m }{%
+ \IfBooleanT{#1}{\filldraw (0,0) circle[radius=2pt] ;}
+ \StrCut{#3}{§}{\tkzautogridx}{\tkzautogridy}%
+ \draw[xstep=\tkzautogridx,ystep=\tkzautogridy,#2] (current bounding box.south west) grid (current bounding box.north east) ;
+}
+
+\tikzset{grilleauto/.store in=\tkzautogrid,grilleauto/.default={},grilleauto={}}
+\tikzset{autogrid/.store in=\tkzautogrid,autogrid/.default={},autogrid={}}
+
+\NewDocumentCommand\tkzAutoGridActivate{ s }{%
+ \@ifundefined{tkzautogrid}%
+ {}%
+ {%
+ \tikzset{every picture/.style={%
+ execute at end picture={%
+ \IfEq{\tkzautogrid}{}{}{\IfBooleanTF{#1}{\tkzGrilleAuto*{\tkzautogrid}}{\tkzGrilleAuto{\tkzautogrid}}}%
+ },
+ },
+ }%
+ }%
+}
+
+\NewDocumentCommand\tkzAutoGridLocal{ s }{%
+ \@ifundefined{tkzautogrid}%
+ {}%
+ {%
+ \tikzset{execute at end picture={%
+ \IfEq{\tkzautogrid}{}{}{\IfBooleanTF{#1}{\tkzGrilleAuto*{\tkzautogrid}}{\tkzGrilleAuto{\tkzautogrid}}}%
+ },
+ },
+ }%
+}
+
+%====FLÈCHE ÉVASÉE [FR]
+\usetikzlibrary{arrows,arrows.meta}
+
+\defKV[FlecheEvasee]{%
+ Couleur=\def\FlecheEvaseeCouleur{#1},%
+ TailleFleche=\def\FlecheEvaseeFleche{#1},%
+ Direction=\def\FlecheEvaseeDirectionAngle{#1},%
+ Coeff=\def\FlecheEvaseeCoeff{#1},%
+ TypeFleche=\def\FlecheEvaseeType{#1},%
+ Epaisseur=\def\FlecheEvaseeEpaisseur{#1},%
+ LineCap=\def\FlecheEvaseeLineCap{#1}
+}
+\setKVdefault[FlecheEvasee]{%
+ Couleur=black,%
+ TailleFleche=auto,%
+ Direction={},%
+ Coeff=4,%
+ TypeFleche=Latex,%
+ Deplacement=false,%
+ Epaisseur=0.5mm,%
+ LineCap=butt
+}
+
+\NewDocumentCommand\tkzFlecheEvasee{ O{} m m }{%1=options,2=début,3=fin
+ \restoreKV[FlecheEvasee]%
+ \setKV[FlecheEvasee]{#1}%
+ \begin{scope}[line width=0.05mm]
+ \IfStrEq{\FlecheEvaseeFleche}{auto}%
+ {%
+ \xdef\FlecheEvaseeH{2*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur}%
+ \xdef\FlecheEvaseeW{2.1*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur}%
+ }%
+ {%
+ \StrCut{\FlecheEvaseeFleche}{/}{\FlecheEvaseeH}{\FlecheEvaseeW}%
+ }%
+ \IfEq{\FlecheEvaseeDirectionAngle}{}%
+ {%
+ \xdef\FlecheEvaseeDirection{}\xdef\FlecheEvaseeAngle{0}%
+ }%
+ {%
+ \StrCut{\FlecheEvaseeDirectionAngle}{/}{\FlecheEvaseeDirection}{\FlecheEvaseeAngle}%
+ }%
+ %coordonnées
+ \coordinate (TMPDEPART) at (#2) ;
+ \ifboolKV[FlecheEvasee]{Deplacement}%
+ {%
+ \coordinate (TMPARRIVEE) at ($(TMPDEPART)+(#3)$) ;
+ }%
+ {%
+ \coordinate (TMPARRIVEE) at (#3) ;
+ }
+ \pgfmathanglebetweenpoints{\pgfpointanchor{TMPDEPART}{center}}{\pgfpointanchor{TMPARRIVEE}{center}}%
+ \edef\tmpangle{\pgfmathresult}%
+ %nœuds
+ \IfEq{\FlecheEvaseeDirection}{right}%
+ {%
+ \coordinate (TMPDG) at ([shift={({90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPDD) at ([shift={({-90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPF) at ($(TMPARRIVEE)+({\FlecheEvaseeAngle+\tmpangle+180}:\FlecheEvaseeH)$) ;
+ \coordinate (TMPFG) at ($(TMPARRIVEE)+({\FlecheEvaseeAngle+\tmpangle+180}:\FlecheEvaseeH)+({\FlecheEvaseeAngle+\tmpangle-90}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \coordinate (TMPFD) at ($(TMPARRIVEE)+({\FlecheEvaseeAngle+\tmpangle+180}:\FlecheEvaseeH)+({\FlecheEvaseeAngle+\tmpangle+90}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \IfStrEq{\FlecheEvaseeType}{Stealth}%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length={1.5*\FlecheEvaseeH},width={1.1*\FlecheEvaseeW}]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length=\FlecheEvaseeH,width=\FlecheEvaseeW]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ \filldraw[line cap=\FlecheEvaseeLineCap,\FlecheEvaseeCouleur] (TMPDD) to[bend right=\FlecheEvaseeAngle] (TMPFG) -- (TMPFD) to[bend left=\FlecheEvaseeAngle] (TMPDG) --cycle ;
+ }%
+ {}%
+ \IfEq{\FlecheEvaseeDirection}{left}%
+ {%
+ \coordinate (TMPDG) at ([shift={({90+\tmpangle+\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPDD) at ([shift={({-90+\tmpangle+\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPF) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)$) ;
+ \coordinate (TMPFG) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)+({180+\tmpangle-\FlecheEvaseeAngle+90}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \coordinate (TMPFD) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)+({180+\tmpangle-\FlecheEvaseeAngle-90}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \IfStrEq{\FlecheEvaseeType}{Stealth}%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length={1.5*\FlecheEvaseeH},width={1.1*\FlecheEvaseeW}]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length=\FlecheEvaseeH,width=\FlecheEvaseeW]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ \filldraw[line cap=\FlecheEvaseeLineCap,\FlecheEvaseeCouleur] (TMPDD) to[bend left=\FlecheEvaseeAngle] (TMPFG) -- (TMPFD) to[bend right=\FlecheEvaseeAngle] (TMPDG) --cycle ;
+ }%
+ {}%
+ \IfEq{\FlecheEvaseeDirection}{}%
+ {%
+ \coordinate (TMPF) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)$) ;
+ \coordinate (TMPDG) at ([shift={({90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPFG) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)+({-90+\tmpangle-\FlecheEvaseeAngle}:{-0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \coordinate (TMPFD) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)+({-90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \coordinate (TMPDD) at ([shift={({-90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \IfStrEq{\FlecheEvaseeType}{Stealth}%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length={1.5*\FlecheEvaseeH},width={1.1*\FlecheEvaseeW}]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length=\FlecheEvaseeH,width=\FlecheEvaseeW]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ \filldraw[line cap=\FlecheEvaseeLineCap,\FlecheEvaseeCouleur] (TMPDG) to (TMPFG) -- (TMPFD) to (TMPDD) --cycle ;
+ }%
+ {}%
+ \end{scope}
+}
+
+%====FLÈCHE ÉVASÉE [EN]
+\defKV[flaredarrow]{%
+ color=\def\FlecheEvaseeCouleur{#1},%
+ arrowsize=\def\FlecheEvaseeFleche{#1},%
+ bend=\def\FlecheEvaseeDirectionAngle{#1},%
+ factor=\def\FlecheEvaseeCoeff{#1},%
+ arrowstyle=\def\FlecheEvaseeType{#1},%
+ thickness=\def\FlecheEvaseeEpaisseur{#1},%
+ linecap=\def\FlecheEvaseeLineCap{#1}
+}
+\setKVdefault[flaredarrow]{%
+ color=black,%
+ arrowsize=auto,%
+ bend={},%
+ factor=4,%
+ arrowstyle=Latex,%
+ move=false,%
+ thickness=0.5mm,%
+ linecap=butt
+}
+
+\NewDocumentCommand\tkzFlaredArrow{ O{} m m }{%1=options,2=début,3=fin
+ \restoreKV[flaredarrow]%
+ \setKV[flaredarrow]{#1}%
+ \begin{scope}[line width=0.05mm]
+ \IfStrEq{\FlecheEvaseeFleche}{auto}%
+ {%
+ \xdef\FlecheEvaseeH{2*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur}%
+ \xdef\FlecheEvaseeW{2.1*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur}%
+ }%
+ {%
+ \StrCut{\FlecheEvaseeFleche}{/}{\FlecheEvaseeH}{\FlecheEvaseeW}%
+ }%
+ \IfEq{\FlecheEvaseeDirectionAngle}{}%
+ {%
+ \xdef\FlecheEvaseeDirection{}\xdef\FlecheEvaseeAngle{0}%
+ }%
+ {%
+ \StrCut{\FlecheEvaseeDirectionAngle}{/}{\FlecheEvaseeDirection}{\FlecheEvaseeAngle}%
+ }%
+ %coordonnées
+ \coordinate (TMPDEPART) at (#2) ;
+ \ifboolKV[flaredarrow]{move}%
+ {%
+ \coordinate (TMPARRIVEE) at ($(TMPDEPART)+(#3)$) ;
+ }%
+ {%
+ \coordinate (TMPARRIVEE) at (#3) ;
+ }
+ \pgfmathanglebetweenpoints{\pgfpointanchor{TMPDEPART}{center}}{\pgfpointanchor{TMPARRIVEE}{center}}%
+ \edef\tmpangle{\pgfmathresult}%
+ %nœuds
+ \IfEq{\FlecheEvaseeDirection}{right}%
+ {%
+ \coordinate (TMPDG) at ([shift={({90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPDD) at ([shift={({-90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPF) at ($(TMPARRIVEE)+({\FlecheEvaseeAngle+\tmpangle+180}:\FlecheEvaseeH)$) ;
+ \coordinate (TMPFG) at ($(TMPARRIVEE)+({\FlecheEvaseeAngle+\tmpangle+180}:\FlecheEvaseeH)+({\FlecheEvaseeAngle+\tmpangle-90}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \coordinate (TMPFD) at ($(TMPARRIVEE)+({\FlecheEvaseeAngle+\tmpangle+180}:\FlecheEvaseeH)+({\FlecheEvaseeAngle+\tmpangle+90}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \IfStrEq{\FlecheEvaseeType}{Stealth}%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length={1.5*\FlecheEvaseeH},width={1.1*\FlecheEvaseeW}]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length=\FlecheEvaseeH,width=\FlecheEvaseeW]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ \filldraw[line cap=\FlecheEvaseeLineCap,\FlecheEvaseeCouleur] (TMPDD) to[bend right=\FlecheEvaseeAngle] (TMPFG) -- (TMPFD) to[bend left=\FlecheEvaseeAngle] (TMPDG) --cycle ;
+ }%
+ {}%
+ \IfEq{\FlecheEvaseeDirection}{left}%
+ {%
+ \coordinate (TMPDG) at ([shift={({90+\tmpangle+\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPDD) at ([shift={({-90+\tmpangle+\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPF) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)$) ;
+ \coordinate (TMPFG) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)+({180+\tmpangle-\FlecheEvaseeAngle+90}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \coordinate (TMPFD) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)+({180+\tmpangle-\FlecheEvaseeAngle-90}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \IfStrEq{\FlecheEvaseeType}{Stealth}%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length={1.5*\FlecheEvaseeH},width={1.1*\FlecheEvaseeW}]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length=\FlecheEvaseeH,width=\FlecheEvaseeW]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ \filldraw[line cap=\FlecheEvaseeLineCap,\FlecheEvaseeCouleur] (TMPDD) to[bend left=\FlecheEvaseeAngle] (TMPFG) -- (TMPFD) to[bend right=\FlecheEvaseeAngle] (TMPDG) --cycle ;
+ }%
+ {}%
+ \IfEq{\FlecheEvaseeDirection}{}%
+ {%
+ \coordinate (TMPF) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)$) ;
+ \coordinate (TMPDG) at ([shift={({90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \coordinate (TMPFG) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)+({-90+\tmpangle-\FlecheEvaseeAngle}:{-0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \coordinate (TMPFD) at ($(TMPARRIVEE)+({180+\tmpangle-\FlecheEvaseeAngle}:\FlecheEvaseeH)+({-90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeCoeff*\FlecheEvaseeEpaisseur})$) ;
+ \coordinate (TMPDD) at ([shift={({-90+\tmpangle-\FlecheEvaseeAngle}:{0.5*\FlecheEvaseeEpaisseur})}]TMPDEPART) ;
+ \IfStrEq{\FlecheEvaseeType}{Stealth}%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length={1.5*\FlecheEvaseeH},width={1.1*\FlecheEvaseeW}]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ {%
+ \draw[\FlecheEvaseeCouleur,->,-{\FlecheEvaseeType[length=\FlecheEvaseeH,width=\FlecheEvaseeW]}] (TMPF)--(TMPARRIVEE) ;
+ }%
+ \filldraw[line cap=\FlecheEvaseeLineCap,\FlecheEvaseeCouleur] (TMPDG) to (TMPFG) -- (TMPFD) to (TMPDD) --cycle ;
+ }%
+ {}%
+ \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 915d61a0d1e..db7a7b89180 100644
--- a/Master/texmf-dist/tex/latex/dashrulex/dashrulex.sty
+++ b/Master/texmf-dist/tex/latex/dashrulex/dashrulex.sty
@@ -9,22 +9,23 @@
% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}[2012/02/12]
\RequirePackage{xparse}
-\ProvidesExplPackage{dashrulex}{2024/03/25}{1.00c}
+\ProvidesExplPackage{dashrulex}{2024/10/22}{1.01d}
{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
+ \mbox
{
- \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{}
}
}
\NewDocumentCommand{\drx@parse@dash}
@@ -38,11 +39,12 @@
}
\NewDocumentCommand{\hanyrule}{O{x}mm}
{
- \mbox{}
- \use:c { #1leaders }
- \hbox:n { \clist_map_inline:nn {#3} {##1} }
- \skip_horizontal:n {#2}
- \mbox{}
+ \mbox
+ {
+ \use:c { #1leaders }
+ \hbox:n { \clist_map_inline:nn {#3} {##1} }
+ \skip_horizontal:n {#2}
+ }
}
\int_new:N \l__drx_vrule_counter_int
@@ -72,7 +74,7 @@
\int_if_even:nTF { \l__drx_vrule_counter_int }
{ \drx@step@counter@height{##1} }
{
- \kern -#4
+ \tex_kern:D -#4
\exp_args:NV
\raisebox\l__drx_vrule_height_dim{\rule{#4}{##1}}
\drx@step@counter@height{##1}
diff --git a/Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.sty b/Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.sty
index 5e2af203063..3a5f08ca8c5 100644
--- a/Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.sty
+++ b/Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.sty
@@ -14,7 +14,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/08/11 v2.4}
+\def\Version{2024/08/23 v2.5}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{dccpaper-base}
[\Version\space Common class code for IJDC and IDCC papers.]
@@ -818,7 +818,7 @@
}
\endgroup
%%
-%% Copyright (C) 2023 Digital Curation Centre, University of Edinburgh
+%% Copyright (C) 2024 Digital Curation Centre, University of Edinburgh
%% <info@dcc.ac.uk>
%%
%% End of file `dccpaper-base.sty'.
diff --git a/Master/texmf-dist/tex/latex/dccpaper/idcc.cls b/Master/texmf-dist/tex/latex/dccpaper/idcc.cls
index 0e8345f25cb..bbc5329095b 100644
--- a/Master/texmf-dist/tex/latex/dccpaper/idcc.cls
+++ b/Master/texmf-dist/tex/latex/dccpaper/idcc.cls
@@ -14,7 +14,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/08/11 v2.4}
+\def\Version{2024/08/23 v2.5}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{idcc}
[\Version\space Class for submissions to the International Digital Curation Conference.]
@@ -109,9 +109,15 @@
\DeclareOption{24}{%
\def\dccp@publ@short{IDCC}
\def\dccp@publ@msg{The 18th \dccp@publ@long\ takes place on 19--21 February
- 2024 in Edinburgh, Scotland.\par\bigskip URL: \url{https://www.dcc.ac.uk/events/18th-international-digital-curation-conference}}
+ 2024 in Edinburgh, Scotland.\par\bigskip URL: \url{https://www.dcc.ac.uk/events/idcc24}}
\def\dccp@subject{18th \dccp@publ@long, 2024}
}
+\DeclareOption{25}{%
+ \def\dccp@publ@short{IDCC25}
+ \def\dccp@publ@msg{The 19th \dccp@publ@long\ takes place on 17--19 February
+ 2025 in The Hague, Netherlands.\par\bigskip URL: \url{https://www.dcc.ac.uk/events/idcc25}}
+ \def\dccp@subject{19th \dccp@publ@long, 2025}
+}
\ProcessOptions\relax
\def\@clearglobaloption#1{%
@@ -135,7 +141,7 @@
\RequirePackage{dccpaper-base}
%%
-%% Copyright (C) 2023 Digital Curation Centre, University of Edinburgh
+%% Copyright (C) 2024 Digital Curation Centre, University of Edinburgh
%% <info@dcc.ac.uk>
%%
%% End of file `idcc.cls'.
diff --git a/Master/texmf-dist/tex/latex/dccpaper/ijdc-v14.cls b/Master/texmf-dist/tex/latex/dccpaper/ijdc-v14.cls
index 1d88c3e3bfb..bccd3b5f7a9 100644
--- a/Master/texmf-dist/tex/latex/dccpaper/ijdc-v14.cls
+++ b/Master/texmf-dist/tex/latex/dccpaper/ijdc-v14.cls
@@ -14,7 +14,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/08/11 v2.4}
+\def\Version{2024/08/23 v2.5}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{ijdc-v14}
[\Version\space Class for submissions to the International Journal of Digital Curation, volume 14 onwards.]
@@ -58,7 +58,7 @@ the University of Edinburgh on behalf of the Digital Curation Centre. ISSN:
\RequirePackage{dccpaper-base}
%%
-%% Copyright (C) 2023 Digital Curation Centre, University of Edinburgh
+%% Copyright (C) 2024 Digital Curation Centre, University of Edinburgh
%% <info@dcc.ac.uk>
%%
%% End of file `ijdc-v14.cls'.
diff --git a/Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls b/Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls
index 8f4d08311bd..4c60ec50b0d 100644
--- a/Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls
+++ b/Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls
@@ -14,7 +14,7 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2023/08/11 v2.4}
+\def\Version{2024/08/23 v2.5}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{ijdc-v9}
[\Version\space Class for submissions to the International Journal of Digital Curation, volumes 9--13 inclusive.]
@@ -58,7 +58,7 @@ the University of Edinburgh on behalf of the Digital Curation Centre. ISSN:
\RequirePackage{dccpaper-base}
%%
-%% Copyright (C) 2023 Digital Curation Centre, University of Edinburgh
+%% Copyright (C) 2024 Digital Curation Centre, University of Edinburgh
%% <info@dcc.ac.uk>
%%
%% End of file `ijdc-v9.cls'.
diff --git a/Master/texmf-dist/tex/latex/delimset/delimset.sty b/Master/texmf-dist/tex/latex/delimset/delimset.sty
index 3646c0d17bc..28ba8ba53e3 100644
--- a/Master/texmf-dist/tex/latex/delimset/delimset.sty
+++ b/Master/texmf-dist/tex/latex/delimset/delimset.sty
@@ -6,7 +6,7 @@
%%
%% delimset.dtx (with options: `package')
%%
-%% Copyright (C) 2016-2018 Niklas Beisert
+%% Copyright (C) 2016-2024 Niklas Beisert
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -17,7 +17,7 @@
%% version 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[1996/12/01]
-\ProvidesPackage{delimset}[2018/12/30 v1.1 convenient size control for delimiter sets]
+\ProvidesPackage{delimset}[2024/07/17 v2.0 convenient size control for delimiter sets]
\RequirePackage{amsmath}
\RequirePackage{keyval}
@@ -47,106 +47,220 @@
{\bBigg@choice{\scriptscriptstyle}{0.5}{#1}{#2}}}}
\fi
-\newcommand{\bigp}{\mathpunct\big}
-\newcommand{\Bigp}{\mathpunct\Big}
-\newcommand{\biggp}{\mathpunct\bigg}
-\newcommand{\Biggp}{\mathpunct\Bigg}
-\newcommand{\bigb}{\mathbin\big}
-\newcommand{\Bigb}{\mathbin\Big}
-\newcommand{\biggb}{\mathbin\bigg}
-\newcommand{\Biggb}{\mathbin\Bigg}
+\providecommand{\bigp}{\mathpunct\big}
+\providecommand{\Bigp}{\mathpunct\Big}
+\providecommand{\biggp}{\mathpunct\bigg}
+\providecommand{\Biggp}{\mathpunct\Bigg}
+\providecommand{\bigb}{\mathbin\big}
+\providecommand{\Bigb}{\mathbin\Big}
+\providecommand{\biggb}{\mathbin\bigg}
+\providecommand{\Biggb}{\mathbin\Bigg}
+\providecommand{\bigi}{\mathinner\big}
+\providecommand{\Bigi}{\mathinner\Big}
+\providecommand{\biggi}{\mathinner\bigg}
+\providecommand{\Biggi}{\mathinner\Bigg}
+\newlength\delimsize
+\newcommand{\dlm@setvar}{\let\dlm@ifvar\@firstoftwo\delimsize1.5\big@size}
+\newcommand{\dlm@setsize}[1]{\let\dlm@ifvar\@secondoftwo%
+ \delimsize#1\big@size\advance\delimsize by\big@size\delimsize0.5\delimsize}
+\newcommand{\dlm@setabssize}[1]{\let\dlm@ifvar\@secondoftwo\delimsize#1\relax}
+\newcommand{\dlm@big@}[1]{{\mathchoice%
+ {\dlm@big@choice{\displaystyle}{1}{#1}}%
+ {\dlm@big@choice{\textstyle}{1}{#1}}%
+ {\dlm@big@choice{\scriptstyle}{0.7}{#1}}%
+ {\dlm@big@choice{\scriptscriptstyle}{0.5}{#1}}}}
+\newcommand{\dlm@big@choice}[3]{\@mathmeasure\z@{\nulldelimiterspace\z@}%
+ {#1\left#3\vcenter to#2\delimsize{}\right.}\box\z@}
+\newcommand{\kerndelim}[1]{{\delimsize#1\delimsize%
+ \mkern\muexpr1.2mu*\delimsize/\big@size\relax}}
+
+\newcommand{\dlm@big}[2]{\dlm@plain{#1}{\dlm@big@#2}}
+\newcommand{\dlm@plain}[2]{\dlm@class{#1}{\dlm@phantom{#2}}}
\newcommand{\dlm@class}[1]{\csname dlm@class@#1\endcsname}
-\newcommand{\dlm@class@}{}
-\newcommand{\dlm@class@l}{\mathopen}
-\newcommand{\dlm@class@r}{\mathclose}
-\newcommand{\dlm@class@o}{\mathopen}
-\newcommand{\dlm@class@c}{\mathclose}
-\newcommand{\dlm@class@m}{\mathrel}
-\newcommand{\dlm@class@p}{\mathpunct}
-\newcommand{\dlm@class@b}{\mathbin}
-\newcommand{\dlm@norm}[1]{\dlm@class{#1}\bBigg@{0.0}}
-\newcommand{\dlm@big}[1]{\dlm@class{#1}\big}
-\newcommand{\dlm@Big}[1]{\dlm@class{#1}\Big}
-\newcommand{\dlm@bigg}[1]{\dlm@class{#1}\bigg}
-\newcommand{\dlm@Bigg}[1]{\dlm@class{#1}\Bigg}
+\let\dlm@class@\@firstofone
+\let\dlm@class@o\mathord
+\let\dlm@class@c\mathord
+\let\dlm@class@p\mathpunct
+\let\dlm@class@i\mathinner
+\let\dlm@class@b\mathbin
+\let\dlm@class@m\mathrel
+
+\newcommand{\dlm@var@null}[1]{\if.#1\kern-\nulldelimiterspace\fi}
+\newcommand{\dlm@var@kern}[1]{\nonscript\mkern#1}
\newcommand{\dlm@var}[1]{\csname dlm@var@#1\endcsname}
-\newcommand{\dlm@var@}[1]{\middle#1}
-\newcommand{\dlm@var@l}[1]{\mathopen{}\mathclose\bgroup\left#1}
-\newcommand{\dlm@var@r}[1]{\right#1\egroup}
-\newcommand{\dlm@var@o}[1]{\mathopen{}\middle#1\mathopen{}}
-\newcommand{\dlm@var@c}[1]{\mathclose{}\middle#1\mathclose{}}
-\newcommand{\dlm@var@m}[1]{\mathrel{}\middle#1\mathrel{}}
-\newcommand{\dlm@var@p}[1]{\middle#1\mathpunct{}}
-\newcommand{\dlm@var@b}[1]{\mathbin{}{}\mkern-\medmuskip%
- \middle#1\mkern-\medmuskip{}\mathbin{}}
-
-\newcommand{\dlm@parsesize}[1]{\@ifnextchar\bgroup%
- {\dlm@parsesize@{#1}{0}}{\dlm@parsesize@{#1}}}
-\newcommand{\dlm@parsesize@}[2]{\let\dlm@arg\dlm@norm%
- \if0#2\let\dlm@arg\dlm@norm\fi%
- \if1#2\let\dlm@arg\dlm@big\fi%
- \if+#2\let\dlm@arg\dlm@big\fi%
- \if!#2\let\dlm@arg\dlm@big\fi%
- \if2#2\let\dlm@arg\dlm@Big\fi%
- \if3#2\let\dlm@arg\dlm@bigg\fi%
- \if4#2\let\dlm@arg\dlm@Bigg\fi%
- \if*#2\let\dlm@arg\dlm@var\fi%
- #1}
-
-\newcommand{\selectdelim}[2][]{\if.#1#2\else\dlm@arg{#1}#2\fi}
+\newcommand{\dlm@var@}[1]{\dlm@var@null#1\middle#1}
+\let\dlm@var@o\dlm@var@
+\let\dlm@var@c\dlm@var@
+\newcommand{\dlm@var@p}[1]{\dlm@var@#1\dlm@var@kern\thinmuskip}
+\newcommand{\dlm@var@i}[1]{\dlm@var@kern\thinmuskip%
+ \dlm@var@#1\dlm@var@kern\thinmuskip}
+\newcommand{\dlm@var@b}[1]{\dlm@var@kern\medmuskip%
+ \dlm@var@#1\dlm@var@kern\medmuskip}
+\newcommand{\dlm@var@m}[1]{\dlm@var@kern\thickmuskip%
+ \dlm@var@#1\dlm@var@kern\thickmuskip}
+
+\newcommand{\dlm@open@i}{\mathinner{}\mathclose{}\mathopen}
+\newcommand{\dlm@close@i}{\mathclose{}\mathopen{}\mathinner}
+\newcommand{\dlm@inner@oc}{\mathopen{}\mathclose}
+\newcommand{\dlm@enclose@openclose}{%
+ \let\dlm@open\mathopen\let\dlm@close\mathclose\let\dlm@inner\dlm@inner@oc}
+\newcommand{\dlm@enclose@inner}{%
+ \let\dlm@open\dlm@open@i\let\dlm@close\dlm@close@i\let\dlm@inner\mathinner}
+
+\newcommand{\dlm@inline@l}[1]{\dlm@open{#1}}
+\newcommand{\dlm@inline@r}[1]{\dlm@close{#1}}
+\newcommand{\dlm@block@l}[1]{\dlm@inner\bgroup\mathopen{#1}}
+\newcommand{\dlm@block@r}[1]{\mathclose{#1}\egroup}
+\newcommand{\dlm@enclose@inline}{%
+ \let\dlm@class@l\dlm@inline@l\let\dlm@class@r\dlm@inline@r}
+\newcommand{\dlm@enclose@block}{%
+ \let\dlm@class@l\dlm@block@l\let\dlm@class@r\dlm@block@r}
+
+\newcommand{\dlm@plain@l}[1]{\dlm@class@l{\dlm@phantom{#1}}}
+\newcommand{\dlm@plain@r}[1]{\dlm@class@r{\dlm@phantom{#1}}}
+\newcommand{\dlm@big@l}[1]{\dlm@plain@l{\dlm@big@#1}}
+\newcommand{\dlm@big@r}[1]{\dlm@plain@r{\dlm@big@#1}}
+\newcommand{\dlm@var@l}[1]{\dlm@inner\bgroup\dlm@var@null#1\left#1}
+\newcommand{\dlm@var@r}[1]{\right#1\dlm@var@null#1\egroup}
+\newcommand{\dlm@var@pl}[1]{\dlm@var@l.\mathopen{#1}}
+\newcommand{\dlm@var@pr}[1]{\mathclose{#1}\dlm@var@r.}
+
+\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{\parsedelimflags}{\dlm@setsize{0.6}\let\dlm@phantom\@firstofone%
+ \dlm@enclose@openclose\dlm@enclose@inline\dlm@parseflags}
+\newcommand{\dlm@parseflags}[2]{%
+ \@ifnextchar\bgroup{#1}{\dlm@parseflag{#1}{#2}}}
+\newcommand{\dlm@parseflag}[3]{\begingroup%
+ \ifcsname dlm@parseflag@\string#3\endcsname%
+ \def\dlm@do{\csname dlm@parseflag@\string#3\endcsname{#1}{#2}}\else%
+ \def\dlm@do{\PackageError{delimset}%
+ {unknown delimiter set flag `\string#3'}{}#1}%
+ \fi\expandafter\endgroup\dlm@do}
+\newcommand{\dlm@parsedef}[3]{%
+ \expandafter\def\csname dlm@parseflag@\string#1\endcsname ##1##2#2{#3}}
+
+\dlm@parsedef{!}{}{\dlm@setsize{1}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{+}{}{\dlm@setsize{1}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{0}{}{\dlm@setsize{0.6}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{1}{}{\dlm@setsize{1}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{2}{}{\dlm@setsize{2}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{3}{}{\dlm@setsize{3}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{4}{}{\dlm@setsize{4}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{^}{#3}{\dlm@setsize{#3}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{_}{#3}{\dlm@setabssize{#3}\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{*}{}{\dlm@setvar\dlm@parseflags{#1}{#2}}
+
+\dlm@parsedef{(}{}{\def\selecteddelim{0}#2}
+\dlm@parsedef{|}{}{\def\selecteddelim{1}#2}
+\dlm@parsedef{,}{}{\def\selecteddelim{1}#2}
+\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{>}{#3}{\dlm@reg@save{#3}{#2}}
+\dlm@parsedef{<}{#3}{\dlm@reg@init{#3}\dlm@parseflags%
+ {\PackageError{delimset}{must select delimiter}{}}{\dlm@reg@sel{#3}}}
+
+\dlm@parsedef{.}{}{#1}
+\dlm@parsedef{:}{}{\dlm@enclose@block\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{'}{}{\dlm@enclose@openclose\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{"}{}{\dlm@enclose@inner\dlm@parseflags{#1}{#2}}
+\dlm@parsedef{-}{}{\let\dlm@phantom\phantom\dlm@parseflags{#1}{#2}}
+
+\newcommand{\selectdelim}[1][]{\begingroup\def\dlm@do{\@ifstar{\dlm@plain{#1}}%
+ {\dlm@ifvar{\dlm@var{#1}}{\dlm@big{#1}}}}%
+ \if.#1\let\dlm@do\@empty\fi\expandafter\endgroup\dlm@do}
+\newcommand{\selectdeliml}{\@ifstar%
+ {\dlm@ifvar\dlm@var@pl\dlm@plain@l}{\dlm@ifvar\dlm@var@l\dlm@big@l}}
+\newcommand{\selectdelimr}{\@ifstar%
+ {\dlm@ifvar\dlm@var@pr\dlm@plain@r}{\dlm@ifvar\dlm@var@r\dlm@big@r}}
\newcommand{\DeclareMathDelimiterSet}[1]{\expandafter\dlm@declare%
\csname dlm@dcl@\expandafter\@gobble\string#1\endcsname{#1}}
-\def\dlm@declare#1#2{\newcommand{#2}{\dlm@parsesize{#1}}\newcommand{#1}}
+\def\dlm@declare#1#2{\expandafter\dlm@declare@%
+ \csname dlm@sel@\expandafter\@gobble\string#2\endcsname{#1}{#2}}
+\def\dlm@declare@#1#2#3{\newcommand{#3}{\parsedelimflags{#2}{#1}}%
+ \providecommand{#1}{}\newcommand{#2}}
+\newcommand{\DeclareMathDelimiterSel}[3]{\expandafter\def%
+ \csname dlm@sel@\expandafter\@gobble\string#1\endcsname%
+ {\ifcase\selecteddelim#2\else#3\fi}}
+
+\newcommand{\delim}[2]{%
+ \parsedelimflags{\dlm@dcl@delim{#1}{#2}}{\dlm@sel@delim{#1}{#2}}}
+\newcommand{\dlm@dcl@delim}[3]{%
+ \selectdeliml#1{#3}\selectdelimr#2}
+\newcommand{\dlm@sel@delim}[2]{\ifcase\selecteddelim\selectdeliml#1%
+ \else\selectdelimr#2\fi}
-\newcommand{\delim}[2]
- {\dlm@parsesize{\dlm@dcl@delim{#1}{#2}}}
-\newcommand{\dlm@dcl@delim}[3]
- {\selectdelim[l]#1{#3}\selectdelim[r]#2}
+\newcommand{\delimpair}[3]{%
+ \parsedelimflags{\dlm@dcl@delimpair{#1}{#2}{#3}}%
+ {\dlm@sel@delimpair{#1}{#2}{#3}}}
+\newcommand{\dlm@dcl@delimpair}[5]{%
+ \selectdeliml#1{#4}\selectdelim#2{#5}\selectdelimr#3}
+\newcommand{\dlm@sel@delimpair}[3]{\ifcase\selecteddelim\selectdeliml#1%
+ \or\selectdelim#2\else\selectdelimr#3\fi}
-\newcommand{\delimpair}[3]
- {\dlm@parsesize{\dlm@dcl@delimpair{#1}{#2}{#3}}}
-\newcommand{\dlm@dcl@delimpair}[5]
- {\selectdelim[l]#1{#4}\selectdelim#2{#5}\selectdelim[r]#3}
+\newcommand{\delimtriple}[4]{%
+ \parsedelimflags{\dlm@dcl@delimtriple{#1}{#2}{#3}{#4}}%
+ {\dlm@sel@delimtriple{#1}{#2}{#3}{#4}}}
+\newcommand{\dlm@dcl@delimtriple}[7]{%
+ \selectdeliml#1{#5}\selectdelim#2{#6}\selectdelim#3{#7}\selectdelimr#4}
+\newcommand{\dlm@sel@delimtriple}[4]{\ifcase\selecteddelim\selectdeliml#1%
+ \or\selectdelim#2\or\selectdelim#3\else\selectdelimr#4\fi}
-\newcommand{\delimtriple}[4]
- {\dlm@parsesize{\dlm@dcl@delimtriple{#1}{#2}{#3}{#4}}}
-\newcommand{\dlm@dcl@delimtriple}[7]
- {\selectdelim[l]#1{#5}\selectdelim#2{#6}\selectdelim#3{#7}\selectdelim[r]#4}
+\newcommand{\usedelim}{\@ifnextchar]{\parsedelimflags{}{}}{\parsedelimflags%
+ {\PackageError{delimset}{must select delimiter}{}}{}<}}
\ifdlm@std
\providecommand{\brk}[1][r]{\begingroup\def\dlm@use{\delim()}%
- \if r#1 \def\dlm@use{\delim()}\fi%
- \if s#1 \def\dlm@use{\delim[]}\fi%
- \if c#1 \def\dlm@use{\delim\{\}}\fi%
- \if a#1 \def\dlm@use{\delim<>}\fi%
+ \if r#1\def\dlm@use{\delim()}\fi%
+ \if s#1\def\dlm@use{\delim[]}\fi%
+ \if c#1\def\dlm@use{\delim\{\}}\fi%
+ \if a#1\def\dlm@use{\delim<>}\fi%
\expandafter\endgroup\dlm@use}
\providecommand{\eval}[1][v]{\begingroup\def\dlm@use{\delim.\rvert}%
- \if v#1 \def\dlm@use{\delim.\rvert}\fi%
- \if s#1 \def\dlm@use{\delim[]}\fi%
+ \if v#1\def\dlm@use{\delim.\rvert}\fi%
+ \if s#1\def\dlm@use{\delim[]}\fi%
\expandafter\endgroup\dlm@use}
\providecommand{\abs}{\delim\lvert\rvert}
\providecommand{\norm}{\delim\lVert\rVert}
\fi
\ifdlm@ext
-\providecommand{\pair}{\delimpair({[.],})}
+\providecommand{\pair}{\delimpair({[p]*,})}
\providecommand{\set}{\delim\{\}}
\providecommand{\setcond}{\delimpair\{|\}}
-\providecommand{\intv}[1][c]{\begingroup\def\dlm@use{\delimpair[{[.],}]}%
- \if c#1 \def\dlm@use{\delimpair[{[.],}]}\fi%
- \if l#1 \def\dlm@use{\delimpair]{[.],}]}\fi%
- \if r#1 \def\dlm@use{\delimpair[{[.],}[}\fi%
- \if o#1 \def\dlm@use{\delimpair]{[.],}[}\fi%
+\providecommand{\intv}[1][c]{\begingroup%
+ \def\dlm@use{\delimpair[{[p]*,}]}%
+ \if c#1\def\dlm@use{\delimpair[{[p]*,}]}\fi%
+ \if l#1\def\dlm@use{\delimpair]{[p]*,}]}\fi%
+ \if r#1\def\dlm@use{\delimpair[{[p]*,}[}\fi%
+ \if o#1\def\dlm@use{\delimpair]{[p]*,}[}\fi%
\expandafter\endgroup\dlm@use}
\providecommand{\avg}{\delim<>}
\providecommand{\corr}{\delim<>}
-\providecommand{\comm}{\delimpair[{[.],}]}
-\providecommand{\acomm}{\delimpair\{{[.],}\}}
+\providecommand{\comm}{\delimpair[{[p]*,}]}
+\providecommand{\acomm}{\delimpair\{{[p]*,}\}}
\providecommand{\bra}{\delim<|}
\providecommand{\ket}{\delim|>}
\providecommand{\braket}{\delimpair<|>}
+\providecommand{\lfrac}[1][]{\begingroup%
+ \def\dlm@use{\delimpair./.}%
+ \if r#1\def\dlm@use{\delimpair(/)}\fi%
+ \if s#1\def\dlm@use{\delimpair[/]}\fi%
+ \if c#1\def\dlm@use{\delimpair\{/\}}\fi%
+ \if a#1\def\dlm@use{\delimpair</>}\fi%
+ \expandafter\endgroup\dlm@use}
\fi
\endinput
diff --git a/Master/texmf-dist/tex/latex/doibanner/doibanner.sty b/Master/texmf-dist/tex/latex/doibanner/doibanner.sty
new file mode 100644
index 00000000000..986b52ad11e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/doibanner/doibanner.sty
@@ -0,0 +1,98 @@
+%%
+%% This is file `doibanner.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% doibanner.dtx (with options: `package')
+%%
+%% Copyright (C) 2024 Christian Schreinemachers
+%%
+%% 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 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The current maintainer of this work is
+%% Christian Schreinemachers.
+%%
+%% This work consists of the files
+%% doibanner.dtx
+%% doibanner.ins
+%% and the derived files
+%% doibanner.sty
+%% doibanner.pdf
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{doibanner}
+ [2024-07-28 v0.3 Generate DOI banners and links]
+\RequirePackage{adjustbox}
+\RequirePackage{hyperref}
+\RequirePackage{tikz}
+\definecolor{leftcolor}{RGB}{82,82,82}
+\definecolor{rightcolor}{RGB}{6,119,183}
+\definecolor{toptextcolor}{RGB}{235,235,235}
+\definecolor{bottomtextcolor}{RGB}{59,59,59}
+\tikzstyle{toptextstyle} = [
+ font=\fontfamily{\sfdefault}\selectfont\bfseries\Large,toptextcolor]
+\tikzstyle{bottomtextstyle} = [
+ font=\fontfamily{\sfdefault}\selectfont\bfseries\Large,bottomtextcolor]
+\DeclareKeys[@doibanner]{
+ label.store = \@doibanner@label,
+ label.usage = load,
+ urlbase.store = \@doibanner@urlbase,
+ urlbase.usage = load,
+ width.store = \@doibanner@width,
+ width.usage = load,
+}
+\SetKeys[@doibanner]{
+ label=DOI,
+ urlbase=https://doi.org/,
+ width=3.6cm,
+}
+\ProcessKeyOptions[@doibanner]\relax
+\NewDocumentCommand\doiurl{s m}{%
+ \IfBooleanTF#1
+ {\@doibanner@urlbase#2}%
+ {\href{\@doibanner@urlbase#2}{#2}}%
+}
+\NewDocumentCommand\@doibanner@draw{o m}{%
+ \adjustbox{#1}{%
+ \begin{tikzpicture}
+ \fill [leftcolor,draw]
+ (1.5,0) --
+ ++(0,.8) {[rounded corners=5] --
+ ++(-1.5,0) --
+ ++(0,-.8)} --
+ cycle
+ {};
+ \node[bottomtextstyle] at (.75,.35) {\@doibanner@label};
+ \node[toptextstyle] at (.75,.4) {\@doibanner@label};
+ \fill [rightcolor,draw]
+ (1.5,0) {[rounded corners=5] --
+ ++(6.5,0) --
+ ++(0,.8)} --
+ ++(-6.5,0) --
+ cycle
+ {};
+ \node[bottomtextstyle] at (4.75,.35) {#2};
+ \node[toptextstyle] at (4.75,.4) {#2};
+ \end{tikzpicture}%
+ }%
+}
+\NewDocumentCommand\doibanner{s O{width=\@doibanner@width} m}{%
+ \IfBooleanTF#1
+ {\@doibanner@draw[#2]{#3}}%
+ {\href{\@doibanner@urlbase#3}{\@doibanner@draw[#2]{#3}}}%
+}
+\endinput
+%%
+%% End of file `doibanner.sty'.
diff --git a/Master/texmf-dist/tex/latex/dtk/dtk-url.sty b/Master/texmf-dist/tex/latex/dtk/dtk-url.sty
index dbae3ce9b8c..3387c280797 100644
--- a/Master/texmf-dist/tex/latex/dtk/dtk-url.sty
+++ b/Master/texmf-dist/tex/latex/dtk/dtk-url.sty
@@ -2,7 +2,7 @@
%%
%% LaTeX Class for ``Die TeXnische Komoedie''.
%%
-%% Copyright (C) 2015-2023
+%% Copyright (C) 2015-2024
%% Rolf Niepraschk, Herbert Voss
%%
%% It may be distributed and/or modified under the
@@ -14,7 +14,7 @@
%% version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{dtk-url}[2024/02/12 v1.8 Urls (qrcode) for DTK (HO,hv,rn)]
+\ProvidesPackage{dtk-url}[2024/06/26 v1.9 Urls (qrcode) for DTK (HO,hv,rn)]
\RequirePackage{url}[2006/04/12]
\RequirePackage{xcolor}
@@ -40,6 +40,8 @@
\let\URL\url
\let\CTANurl\ctanurl
+\DeclareUrlCommand\File{\urlstyle{tt}}
+
\DeclareUrlCommand\DTK@Url{%
\DTK@UrlSetup
\def\UrlLeft{}%
diff --git a/Master/texmf-dist/tex/latex/dtk/dtk.cls b/Master/texmf-dist/tex/latex/dtk/dtk.cls
index cc314c4a1ad..15507b11044 100644
--- a/Master/texmf-dist/tex/latex/dtk/dtk.cls
+++ b/Master/texmf-dist/tex/latex/dtk/dtk.cls
@@ -23,8 +23,8 @@
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\def\DTKversion{2.10e}
-\def\DTKversiondate{2024/02/22}
+\def\DTKversion{2.10f}
+\def\DTKversiondate{2024/06/27}
\ProvidesClass{dtk}[\DTKversiondate v\DTKversion dtk documentclass (RN)]
\RequirePackage{iftex}
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 e45f21ee182..7a92e22048e 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 4
+% Version 3.141 592 653 589 793 238 46
%
% 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}[2023/06/02 Dynkin diagrams]
+\ProvidesPackage{dynkin-diagrams}[2024/07/05 Dynkin diagrams]
\RequirePackage{tikz}
\RequirePackage{xstring}
\RequirePackage{etoolbox}
@@ -1873,6 +1873,7 @@
}%
+
%% \dynkinQuadrupleEdge{<p>}{<q>}
%% \dynkinQuadrupleEdge*{<p>}{<q>}
%% Draws an oriented edge of valence 4 from root <p> to root <q> on the current Dynkin diagram.
@@ -2041,6 +2042,8 @@
% Is the right side of the Dynkin diagram folded?
\newif\ifdynkin@Coxeter
% Should we draw Coxeter diagrams?
+\newif\ifdynkin@Coxeter@above
+% Should we draw Coxeter diagram extra labels above or below?
\newif\ifdynkin@Kac@arrows
% Should we draw arrows following Kac?
\newif\ifdynkin@odd
@@ -2097,6 +2100,8 @@
},
Coxeter/.is if = dynkin@Coxeter,
Coxeter=false,
+ Coxeter above/.is if = dynkin@Coxeter@above,
+ Coxeter above=true,
double edges/.style = {
fold style/.style = {
draw=black,
@@ -2598,6 +2603,10 @@
{%
\global\dynkin@rank=\dynkin@string\relax%
\global\dynkin@nodes=\dynkin@string\relax%
+ \ifWitt@symbol%
+ \global\advance\dynkin@rank by -1\relax%
+ \global\advance\dynkin@nodes by -1\relax%
+ \fi
\ifdynkin@is@twisted%
\IfStrEqCase{\dynkin@series}%
{%
@@ -2800,7 +2809,6 @@
% Turn Satake codes into Dynkin diagram expressions in \dynkin@string.
\dynkin@grok@Satake@codes%
}%
-
% Expand out any digits in \dynkin@string into multiples of the various root marks.
\expand@Dynkin@Roots@Digits%
% Assign to \dynkin@roots the input string \dynkin@string with all . symbols removed,
@@ -2881,20 +2889,41 @@
\global\dynkin@rank@minus@three\the\dynkin@rank@minus@two\relax%
\global\advance\dynkin@rank@minus@three by -1\relax%
}%
+
+\newif\ifWitt@symbol
\newcount\dynkin@lenny%
%% \dynkin@grok@series
%% Interprets the dynkin@series, to see if it is extended, twisted, and what twisted series it is.
\NewDocumentCommand\dynkin@grok@series{}%
{%
- \StrLen{\dynkin@series}[\dynkin@lenny]
+ \StrLen{\dynkin@series}[\dynkin@lenny]\relax%
\ifnum\dynkin@lenny>1\relax%
\dynkin@error@series%
\fi%
+% We need to check if the series is a Witt symbol.
+ \IfSubStr{PSRQTUVW}{\dynkin@series}%
+ {%
+ \global\Witt@symboltrue%
+ \IfStrEqCase{\dynkin@series}%
+ {%
+ {P}{\global\xdef\dynkin@series{A}}%
+ {S}{\global\xdef\dynkin@series{B}}%
+ {R}{\global\xdef\dynkin@series{C}}%
+ {Q}{\global\xdef\dynkin@series{D}}%
+ {T}{\global\xdef\dynkin@series{E}}%
+ {U}{\global\xdef\dynkin@series{F}}%
+ {V}{\global\xdef\dynkin@series{G}}%
+ {W}{\global\xdef\dynkin@series{I}}%
+ }%
+ }%
+ {%
+ \global\Witt@symbolfalse%
+ }%
\edef\series{\dynkin@series}%
\IfStrEqCase{\dynkin@twisted@series}%
{%
{0}{}%
- {1}{ \global\dynkin@is@extendedtrue}%
+ {1}{\global\dynkin@is@extendedtrue}%
{2}{%
\IfSubStr{ADE}{\dynkin@series}%
{%
@@ -3459,19 +3488,6 @@
}%
[\global#5=#4\relax]%
}%
- {G}%
- {%
- \IfStrEqCase{#3}%
- {%
- {Carter}{\global#5=%
- \stringCharacterInPosition{21}{#4}%
- \relax}%
- {Dynkin}{\global#5=%
- \stringCharacterInPosition{21}{#4}%
- \relax}%
- }%
- [\global#5=#4\relax]%
- }%
}%
[\global#5=#4\relax]%
}%
@@ -3640,25 +3656,6 @@
}%
[\global#5=#3\relax]%
}%
- {G}%
- {%
- \IfStrEqCase{#4}%
- {%
- {Carter}%
- {%
- \global#5=%
- \stringCharacterInPosition{21}{#3}%
- \relax%
- }%
- {Dynkin}%
- {%
- \global#5=%
- \stringCharacterInPosition{21}{#3}%
- \relax%
- }%
- }%
- [\global#5=#3\relax]%
- }%
}%
[\global#5=#3\relax]%
}%
@@ -3777,12 +3774,14 @@
}%
{G}%
{%
- \IfStrEqCase{\dynkin@ordering}%
- {%
- {Carter}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
- {Dynkin}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
- }%
- [\global\dynkin@Root@Number=#1\relax]%
+ \global\dynkin@Root@Number=#1\relax%
+% \IfStrEqCase{\dynkin@ordering}%
+% {%
+% {Carter}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
+% {Dynkin}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
+% {Kac}{\global\dynkin@Root@Number=\stringCharacterInPosition{21}{#1}\relax}%
+% }%
+% [\global\dynkin@Root@Number=#1\relax]%
}%
}%
[\global\dynkin@Root@Number=#1\relax]%
@@ -4338,9 +4337,15 @@
\else%
\ifdynkin@Coxeter%
\Adynkin%
- \dynkinEdgeLabel%
- {\the\dynkin@rank@minus@one}%
- {\the\dynkin@rank}{4}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel%
+ {\the\dynkin@rank@minus@one}%
+ {\the\dynkin@rank}{4}%
+ \else%
+ \dynkinEdgeLabel*%
+ {\the\dynkin@rank@minus@one}%
+ {\the\dynkin@rank}{4}%
+ \fi%
\else
% Create the roots.
\ifnum\dynkin@ply>1\relax%
@@ -4994,7 +4999,11 @@
\dynkinEdge*{SingleEdge}{1}{2}%
\dynkinEdge*{SingleEdge}{2}{3}%
\dynkinEdge*{SingleEdge}{3}{4}%
- \dynkinEdgeLabel{2}{3}{4}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{2}{3}{4}%
+ \else%
+ \dynkinEdgeLabel*{2}{3}{4}%
+ \fi%
\else%
\dynkinEdge*{SingleEdge}{1}{2}%
\dynkinEdge*{SingleEdge}{3}{4}%
@@ -5002,6 +5011,9 @@
\fi%
\fi%
}%
+
+\newif\ifGtwo@old@dynkin@reverse@arrows
+
%% \Gdynkin
%% Draws a G series Dynkin diagram.
\NewDocumentCommand\Gdynkin{}%
@@ -5013,14 +5025,72 @@
\dynkin@jump{1}%
\dynkinPlaceRootHere*{1}{left}{above}%
\dynkinPlaceRootRelativeTo*{2}{1}{southfold}{left}{below}%
+ \ifdynkin@reverse@arrows%
+ \global\Gtwo@old@dynkin@reverse@arrowstrue\relax%
+ \else%
+ \global\Gtwo@old@dynkin@reverse@arrowsfalse\relax%
+ \fi%
+ \IfStrEqCase{\dynkin@ordering}%
+ {%
+ {Adams}{%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi\relax}%
+ {Bourbaki}{%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi\relax}%
+ {Carter}{\relax}%
+ {Dynkin}{\relax}%
+ {Kac}{\relax}%
+ }%
+ [\relax]%
\dynkinEdge*{TripleDownRightSemiCircle}{1}{2}%
+ \ifGtwo@old@dynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \else%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \fi%
\ifdynkin@arrows%
\dynkinLeftFold*{1}{2}%
\fi%
\else%
\dynkinPlaceRootHere*{1}{below}{above}%
\dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}%
- \dynkinTripleEdge*{1}{2}%
+ \ifdynkin@reverse@arrows%
+ \global\Gtwo@old@dynkin@reverse@arrowstrue\relax%
+ \else%
+ \global\Gtwo@old@dynkin@reverse@arrowsfalse\relax%
+ \fi%
+ \IfStrEqCase{\dynkin@ordering}%
+ {%
+ {Adams}{%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi\relax}%
+ {Bourbaki}{%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi\relax}%
+ {Carter}{\relax}%
+ {Dynkin}{\relax}%
+ {Kac}{\relax}%
+ }%
+ [\relax]%
+ \dynkinTripleEdge*{1}{2}\relax%
+ \ifGtwo@old@dynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \else%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \fi%
\fi%
\fi%
}%
@@ -5030,7 +5100,11 @@
\newcommand*{\Hdynkin}%
{%
\Adynkin%
- \dynkinEdgeLabel{1}{2}{5}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{1}{2}{5}%
+ \else%
+ \dynkinEdgeLabel*{1}{2}{5}%
+ \fi%
}%
%% \Idynkin
%% Draws an I series Coxeter diagram.
@@ -5038,7 +5112,11 @@
{%
\dynkin@rank=2\relax%
\Adynkin%
- \dynkinEdgeLabel{1}{2}{\dynkin@gonality}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{1}{2}{\dynkin@gonality}%
+ \else%
+ \dynkinEdgeLabel*{1}{2}{\dynkin@gonality}%
+ \fi%
}%
%% \extendedAdynkin
@@ -5183,9 +5261,15 @@
\dynkinEdge*{SingleEdge}%
{\the\dynkin@rank@minus@one}%
{\the\dynkin@rank}%
- \dynkinEdgeLabel%
- {\the\dynkin@rank@minus@one}%
- {\the\dynkin@rank}{4}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel%
+ {\the\dynkin@rank@minus@one}%
+ {\the\dynkin@rank}{4}%
+ \else%
+ \dynkinEdgeLabel*%
+ {\the\dynkin@rank@minus@one}%
+ {\the\dynkin@rank}{4}%
+ \fi%
\else%
\ifnum\dynkin@ply<3\relax%
\dynkinEdge*{DoubleEdge}%
@@ -5211,7 +5295,11 @@
\Cdynkin{}%
\ifdynkin@Coxeter%
\dynkinEdge*{SingleEdge}{0}{1}%
- \dynkinEdgeLabel{0}{1}{4}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{0}{1}{4}%
+ \else%
+ \dynkinEdgeLabel*{0}{1}{4}%
+ \fi%
\else%
\dynkinEdge*{DoubleEdge}{0}{1}%
\fi%
@@ -5391,8 +5479,11 @@
\xdef\dynkin@gonality{6}%
\dynkinPlaceRootHere*{0}{below}{above}%
\dynkinEast%
+ \let\extended@G@old@order\dynkin@ordering%
+ \xdef\dynkin@ordering{Carter}%
\Gdynkin%
\dynkinEdge*{SingleEdge}{0}{1}%
+ \xdef\dynkin@ordering{\extended@G@old@order}%
}%
%% \extendedHdynkin
@@ -5423,7 +5514,11 @@
\dynkin@rank=1\relax%
\Adynkin%
\dynkinEdge*{SingleEdge}{0}{1}%
- \dynkinEdgeLabel{0}{1}{\infty}%
+ \ifdynkin@Coxeter@above%
+ \dynkinEdgeLabel{0}{1}{\infty}%
+ \else%
+ \dynkinEdgeLabel*{0}{1}{\infty}%
+ \fi%
}%
\newcount\dynkin@height@minus@one%
%% \twistedAdynkin
@@ -5531,6 +5626,8 @@
\fi%
\fi%
}%
+
+\newif\iftwisted@D@old@dynkin@reverse@arrows
%% \twistedDdynkin
%% Draws a twisted D series affine Dynkin diagram.
\NewDocumentCommand\twistedDdynkin{}%
@@ -5546,7 +5643,17 @@
\dynkinPlaceRootRelativeTo*{1}{0}{east}{below}{above}%
\dynkinPlaceRootRelativeTo*{2}{1}{east}{below}{above}%
\dynkinEdge*{SingleEdge}{0}{1}%
- \dynkinTripleEdge*{2}{1}%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi%
+ \dynkinTripleEdge*{1}{2}%
+ \ifdynkin@reverse@arrows%
+ \global\dynkin@reverse@arrowsfalse\relax%
+ \else%
+ \global\dynkin@reverse@arrowstrue\relax%
+ \fi%
\else%
\ClassError%
{Dynkin diagrams}%
diff --git a/Master/texmf-dist/tex/latex/easybook/easybase.sty b/Master/texmf-dist/tex/latex/easybook/easybase.sty
index 21dfe653b4a..a25634d0d47 100644
--- a/Master/texmf-dist/tex/latex/easybook/easybase.sty
+++ b/Master/texmf-dist/tex/latex/easybook/easybase.sty
@@ -20,19 +20,16 @@
%% This work has the LPPL maintenance status `maintained'.
\NeedsTeXFormat{LaTeX2e}[2021/11/15]
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2024/06/22}{2024ci}
+\ProvidesExplPackage{easybase}{2024/11/11}{2024hd}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
\cs_generate_variant:Nn \dim_sign:n { V }
\cs_generate_variant:Nn \int_to_arabic:n { v }
\cs_generate_variant:Nn \msg_warning:nnn { nnV }
-\cs_generate_variant:Nn \prop_set_from_keyval:Nn { NV }
\cs_generate_variant:Nn \skip_set:Nn { NV }
-\cs_generate_variant:Nn \seq_set_from_clist:Nn { No }
\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 { on }
\cs_generate_variant:Nn \tl_if_novalue:nF { V }
\cs_set_protected:Npn \ctex_define:nn #1
@@ -46,12 +43,7 @@
{ \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_new_protected:Npn \eb_at_end_preamble:n
+\cs_set_protected:Npn \ctex_before_end_preamble:n
{ \BeforeBeginEnvironment{document} }
\cs_new_protected:Npn \eb_if_package_loaded:nnF #1#2#3
{
@@ -91,7 +83,11 @@
\IfNoValueTF{#1}
{\IfFileExists{#2.sty}{\RequirePackage{#2}[#3]}{}}
{\IfFileExists{#2.sty}{\RequirePackage[#1]{#2}[#3]}{}}
+ \IfFileExists{#2.sty}{}
+ {\msg_warning:nnn { easybase } { package-not-found } {#2}}
}
+\msg_new:nnn { easybase } { package-not-found }
+ { The~macro~package~'#1'~can't~be~found. }
\cs_new_protected:Npn \ebloadpackage #1
{
\int_compare:nTF { \clist_count:n {#1} <= 1 }
@@ -102,13 +98,14 @@
}
}
\providecommand{\NewHookWithArguments}[2]{}
-\ProvideDocumentCommand{\AddToHookWithArguments}{mom}{}
+\ProvideDocumentCommand{\AddToHookWithArguments}{mo+m}{}
\bool_set_true:N \l__eb_class_mode_book_bool
\bool_set_false:N \l__eb_compile_draft_bool
\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 }
{
@@ -120,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:,
@@ -131,15 +137,24 @@
{
\bool_set_true:N \l__eb_class_mode_book_bool
\eb_put_geometry:n { twoside }
+ \booltrue{@titlepage}
+ \booltrue{@openright}
},
class/article .code:n =
{
\bool_set_false:N \l__eb_class_mode_book_bool
\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
}
@@ -167,16 +182,16 @@
\seq_set_from_clist:Nn \l__eb_module_paths_seq
{
- tools,font,space,
- bib,thmt,toc,
- hdr,float,ref,geo
+ tools,font,space,bib,
+ thmt,toc,hdr,float,
+ ref,geo,cap
}
\seq_map_inline:Nn \l__eb_module_paths_seq
{
\ctex_define:n { #1 .meta:nn = { ctex/#1 } {##1} }
\cs_new_protected:cpn { eb#1set } ##1 { \ctex_set:nn {#1} {##1} }
}
-\RenewDocumentCommand{\ctexset}{om}
+\RenewDocumentCommand{\ctexset}{o+m}
{
\IfValueTF{#1}
{\ctex_set:nn {#1} {#2}}
@@ -224,13 +239,11 @@
\ebloadpackage
{
[text]{spbmark},
- [normalem]{ulem},
[{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
@@ -246,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,
@@ -343,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
@@ -364,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 }
@@ -382,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
@@ -390,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} },
@@ -414,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} }
@@ -477,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
{
@@ -521,64 +493,83 @@
\UseFntSymbsList{empty}
\cs_set_eq:NN \DefineFntSymbols \SetFntSymbsList
\cs_set_eq:NN \setfntsymbol \UseFntSymbsList
-\cs_new:Npn \eb_int_format_trans:NN #1
- {
- \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_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
{
- \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_new_protected:Npn \eb_fnmarktext_short_label_set:Nn #1#2
+\cs_generate_variant:Nn \msg_warning:nnnn { nnnV }
+\cs_new:Npn \eb_footnote_int_trans:n #1
{
- \tl_set:Nn \l__eb_fnmarktext_short_tokens_tl {#2}
+ \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
+ {
+ 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:nnT {##1} {#2}
+ \regex_match:nnTF {##1} {#2}
{
\regex_replace_once:nnN {##1}
- { \c{eb_int_format_trans:NN} ##1 \c{c@footnote} }
- \l__eb_fnmarktext_short_tokens_tl
- \seq_map_break:
+ { \c{eb_footnote_int_trans:n}\0 }
+ \l__eb_fnnormal_tmpb_tl
+ \cs_set:Npx #1 { \l__eb_fnnormal_tmpb_tl }
+ \clist_map_break:
+ }
+ {
+ \str_if_eq:nnT {##1} { s }
+ {
+ \str_if_eq:nnTF {#1} { \thefootnote }
+ { \str_set:Nn \l_tmpa_str { \thedownfootnote } }
+ { \str_set:Nn \l_tmpa_str { \theupfootnote } }
+ \msg_warning:nnnV { easybase } { unknown-fnt-type } {#2} \l_tmpa_str
+ }
}
}
- \cs_set_eq:NN #1 \l__eb_fnmarktext_short_tokens_tl
\cs_set_eq:NN \thedownfootnote \thefootnote
}
+\msg_new:nnn { easybase } { unknown-fnt-type }
+ {
+ The~'#1'~includes~unknown~footnote~numbering~type \\
+ in~#2.
+ }
\cs_new_protected:Npn \eb_footnote_value_handle:n #1
{
\str_case:nnF {#1}
{
{ bottom }
- { \bool_set_true:N \l__eb_fnpara_bottom_bool }
+ { \PushFntBottom }
{ flush }
{
\tl_set:Nn \l__eb_footnote_value_tl { plain }
@@ -592,7 +583,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 }
{
@@ -611,8 +602,7 @@
}
}
-\bool_new:N \l__eb_fnpara_bottom_bool
-\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 }
@@ -629,98 +619,137 @@
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 }
}
-\eb_at_end_preamble:n
+\ctex_before_end_preamble:n
{
\bool_if:NT \l__eb_chap_counter_withpart_bool
{ \counterwithin*{chapter}{part} }
\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} }
- \eb_fnpara_if_pos_bottom:
}
-\cs_new_protected:Npn \setspread #1 { \linespread{#1}\selectfont }
-\cs_new:Npn \eb@ifvoid #1#2#3 { \ifvoid #1#2\else #3\fi }
-\cs_new_protected:Npn \eb_fnpara_if_pos_bottom:
+
+\def\@if@footnotes@TF #1#2 {\ifvoid\footins #2\else #1\fi}
+\def\@outputbox@removebskip
+ {
+ \ifx\@textbottom\relax\else
+ \@outputbox@append
+ {
+ \@tempskipa\lastskip
+ \ifnum\gluestretchorder\@tempskipa>\z@
+ \vskip -\@tempskipa
+ \xdef\@outputbox@reinsertbskip
+ {\noexpand\@outputbox@append{\vskip\the\@tempskipa}}
+ \else
+ \global\let\@outputbox@reinsertbskip\relax
+ \fi
+ }
+ \fi
+ }
+\let\@outputbox@reinsertbskip\relax
+\def\@outputbox@append #1
{
- \bool_if:NT \l__eb_fnpara_bottom_bool
+ \setbox\@outputbox\vbox
{
- \IfPackageLoadedTF{footmisc}
- {\msg_warning:nn { easybase } { bottom-not-compatible }}
+ \boxmaxdepth\@maxdepth
+ \dimen@\dp\@outputbox
+ \unvbox\@outputbox
+ #1
+ }
+ }
+\def\@outputbox@attachfloats{\@combinefloats}
+\NewHook{makecol/footins/before}
+\NewHook{makecol/footins/begin}
+\def\@outputbox@appendfootnotes
+ {
+ \@if@footnotes@TF
+ {
+ \UseHook{makecol/footins/before}
+ \@outputbox@append
{
- \cs_set:Npn \@makecol
- {
- \setbox\@outputbox\box\@cclv
- \let\@elt\relax
- \xdef\@freelist{\@freelist\@midlist}
- \global\let\@midlist\@empty
- \@combinefloats
- \eb@ifvoid\footins{}
- {
- \setbox\@outputbox\vbox
- {
- \boxmaxdepth\@maxdepth
- \unvbox\@outputbox
- \vfill\relax
- \vskip\skip\footins
- \color@begingroup
- \normalcolor\footnoterule
- \unvbox\footins
- \color@endgroup
- }
- }
- \eb@ifvoid\@kludgeins
- {\@makespecialcolbox}
- {
- \setbox\@outputbox\vbox to\@colht
- {
- \@texttop\dimen@\dp\@outputbox
- \unvbox\@outputbox
- \vskip -\dimen@\@textbottom
- }
- }
- \global\maxdepth\@maxdepth
- }
+ \vskip\skip\footins
+ \UseHook{makecol/footins/begin}
+ \color@begingroup
+ \normalcolor
+ \footnoterule
+ \@nameuse{pdfcolfoot@current}
+ \unvbox\footins
+ \color@endgroup
}
+ }{}
+ }
+\def\@makenormalcolbox
+ {
+ \setbox\@outputbox\vbox to\@colht
+ {
+ \@texttop
+ \dimen@\dp\@outputbox
+ \unvbox\@outputbox
+ \vskip -\dimen@
+ \@textbottom
}
}
-\msg_new:nnn { easybase } { bottom-not-compatible }
+\cs_new_protected:Npn \PushFntBottom
{
- Not~compatible~with~the~'footmisc'~package. \\
- Please~use~the~'bottom'~option~of~'footmisc'~package.
+ \cs_set:Npn \@makecol
+ {
+ \setbox\@outputbox\box\@cclv
+ \@outputbox@removebskip
+ \let\@elt\relax
+ \xdef\@freelist{\@freelist\@midlist}
+ \global\let\@midlist\@empty
+ \@outputbox@attachfloats
+ \@if@footnotes@TF
+ {\@outputbox@append{\vfill}}
+ {\@outputbox@reinsertbskip}
+ \@outputbox@appendfootnotes
+ \ifvbox\@kludgeins
+ \@makespecialcolbox
+ \else
+ \@makenormalcolbox
+ \fi
+ \global\maxdepth\@maxdepth
+ }
}
+\@onlypreamble\PushFntBottom
\cs_new_protected:Npn \eb_footnote_direct_hang:
{
@@ -781,7 +810,7 @@
\eb_patch_cmd:Nnn #1
{ \reset@font }
{
- \setspread{\eb@spread@footnote}
+ \usestretch{\eb@spread@footnote}
\eb@font@footnote
}
}
@@ -791,12 +820,12 @@
\ctex_at_end_package:nn { footmisc }
{
\eb_package_date_check:nn { footmisc } { 2022/02/10 }
- \boolfalse{FN@setspace}
- \ifbool{FN@para}{}
+ \ifboolexpr{not (bool {FN@para} or bool {FN@sidefn})}
{
+ \boolfalse{FN@setspace}
\cs_set_eq:NN \@makefntext \eb@@makefntext
\cs_set_eq:NN \@footnotetext \eb@@footnotetext
- }
+ }{}
\ifboolexpr
{
bool {FN@hangfoot} or
@@ -819,6 +848,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
@@ -860,6 +890,7 @@
{ \@xfootnotemark }
{
\stepcounter{footnote}
+ \protected@xdef\@thefnmark{\thefootnote}
\protected@xdef\@the@up@fnmark{\theupfootnote}
\@footnotemark
}
@@ -869,7 +900,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
@@ -878,31 +910,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
@@ -913,18 +947,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
}
@@ -936,8 +970,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:
}
}
@@ -947,7 +981,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}
@@ -999,6 +1033,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 }. }
@@ -1008,12 +1067,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{bitocline/before}
+\DeclareHookRule{bitocline/before}{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{bitocline/before}[code]}
+ \AddToHook{bitocline/before}[code]{#2}
}
\cs_set_eq:NN \BeforeAddBitoc \BeforeAddtoBitoc
\cs_new_protected:Npn \CTEX@addbitocline #1#2
@@ -1022,7 +1081,7 @@
\def\CTEX@prechapter{\CTEX@prebichapter}
\def\CTEX@thechapter{\CTEX@bichapter@number}
\def\CTEX@postchapter{\CTEX@postbichapter}
- \eb@before@bitocline@hook
+ \UseHook{bitocline/before}
\tl_if_eq:NnTF \g__eb_bilist_permute_value_tl { mix }
{ \addcontentsline{toc}{#1} }
{ \addcontentsline{tec}{#1} }
@@ -1031,11 +1090,12 @@
}
\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}
{
- \use:c {#1}*{\phantomsection ##3}
+ \use:c {#1}*{##3}
\CTEX@addtocline{#1}{##2}
\tl_if_empty:oF {##4} { \CTEX@addbitocline{#1}{##4} }
\use:c { #1mark }{##2}
@@ -1057,22 +1117,22 @@
\skip_if_eq:nnF { \eb@toc@lol@skip } { \c_zero_skip }
{ \addtocontents{lol}{\protect\addvspace{\skip_use:N \eb@toc@lol@skip}} }
}
-\cs_new_protected:Npn \eb_title_base_set_eq:nn #1#2
- {
- \tl_set_eq:cc { CTEX@#2@beforeskip } { CTEX@#1@beforeskip }
- \tl_set_eq:cc { CTEX@#2@afterskip } { CTEX@#1@afterskip }
- \bool_set_eq:cc { CTEX@#2@numbering } { CTEX@#1@numbering }
- \bool_set_eq:cc { CTEX@#2@fixskip } { CTEX@#1@fixskip }
- \bool_set_eq:cc { CTEX@#2@hang } { CTEX@#1@hang }
- \bool_set_eq:cc { CTEX@#2@runin } { CTEX@#1@runin }
- \cs_set_eq:cc { CTEX@#2@tocline } { CTEX@#1@tocline }
- \tl_set_eq:cc { CTEX@#2@break } { CTEX@#1@break }
- \tl_set_eq:cc { CTEX@#2@format } { CTEX@#1@format }
- \tl_set_eq:cc { CTEX@#2@nameformat } { CTEX@#1@nameformat }
- \tl_set_eq:cc { CTEX@#2@numberformat } { CTEX@#1@numberformat }
- \tl_set_eq:cc { CTEX@#2@titleformat } { CTEX@#1@titleformat }
- \tl_set_eq:cc { CTEX@#2@aftername } { CTEX@#1@aftername }
- \tl_set_eq:cc { CTEX@#2@aftertitle } { CTEX@#1@aftertitle }
+\cs_new_protected:Npn \CopyTitleFormat #1#2
+ {
+ \tl_set_eq:cc { CTEX@#1@beforeskip } { CTEX@#2@beforeskip }
+ \tl_set_eq:cc { CTEX@#1@afterskip } { CTEX@#2@afterskip }
+ \bool_set_eq:cc { CTEX@#1@numbering } { CTEX@#2@numbering }
+ \bool_set_eq:cc { CTEX@#1@fixskip } { CTEX@#2@fixskip }
+ \bool_set_eq:cc { CTEX@#1@hang } { CTEX@#2@hang }
+ \bool_set_eq:cc { CTEX@#1@runin } { CTEX@#2@runin }
+ \cs_set_eq:cc { CTEX@#1@tocline } { CTEX@#2@tocline }
+ \tl_set_eq:cc { CTEX@#1@break } { CTEX@#2@break }
+ \tl_set_eq:cc { CTEX@#1@format } { CTEX@#2@format }
+ \tl_set_eq:cc { CTEX@#1@nameformat } { CTEX@#2@nameformat }
+ \tl_set_eq:cc { CTEX@#1@numberformat } { CTEX@#2@numberformat }
+ \tl_set_eq:cc { CTEX@#1@titleformat } { CTEX@#2@titleformat }
+ \tl_set_eq:cc { CTEX@#1@aftername } { CTEX@#2@aftername }
+ \tl_set_eq:cc { CTEX@#1@aftertitle } { CTEX@#2@aftertitle }
}
\NewDocumentCommand{\NewTitleCommand}{omm}
{
@@ -1094,7 +1154,7 @@
{ \CTEXnumberline{##1}##2 }
\exp_args:Nc \providecommand { ttll@#2 }{#3}
\exp_args:Nc \providecommand { toclevel@#2 }{#3}
- \IfValueT{#1}{\eb_title_base_set_eq:nn {#1} {#2}}
+ \IfValueT{#1}{\CopyTitleFormat{#2}{#1}}
}
\NewDocumentCommand{\NewTitleEntryCommand}{O{toc}m}
{
@@ -1103,85 +1163,123 @@
\bool_if:cTF { CTEX@#2@numbering }
{ \CTEX@ifnametrue }
{ \CTEX@ifnamefalse }
+ \CTEX@makeanchor{#2*}
\addcontentsline{#1}{#2}{\use:c { CTEX@#2@tocline }{#2}{##1}}
}
}
\ctex_define:nn { tools }
{
- hyphen-figure .tl_set:N = \l__eb_hyphen_figure_tl,
- hyphen-table .tl_set:N = \l__eb_hyphen_table_tl,
- hyphen-listing .tl_set:N = \l__eb_hyphen_listing_tl,
- hyphen-equation .tl_set:N = \l__eb_hyphen_equation_tl,
- hyphen-every .meta:n =
+ hyphen-figure .tl_set:N = \l__eb_hyphen_figure_tl,
+ hyphen-table .tl_set:N = \l__eb_hyphen_table_tl,
+ hyphen-lstlisting .tl_set:N = \l__eb_hyphen_lstlisting_tl,
+ hyphen-equation .tl_set:N = \l__eb_hyphen_equation_tl,
+ hyphen-every .meta:n =
{
- hyphen-figure = {#1},hyphen-table = {#1},
- hyphen-listing = {#1},hyphen-equation = {#1}
+ hyphen-figure = {#1},hyphen-table = {#1},
+ hyphen-lstlisting = {#1},hyphen-equation = {#1}
},
- hyphen-every .initial:n = .,
- unknown .code:n = \eb_msg_deprecated_option:n { tools }
+ hyphen-every .initial:n = .,
+ unknown .code:n = \eb_msg_deprecated_option:n { tools }
}
-\clist_map_inline:nn
- { figure,table,listing,equation }
+\AtBeginDocument
{
- \cs_set:cpn { the#1 }
+ \clist_map_inline:nn
+ { figure,table,lstlisting,equation }
{
- \int_compare:nNnT { \c@chapter } > { 0 }
+ \cs_set:cpn { the#1 }
{
- \thechapter
- \tl_use:c { l__eb_hyphen_#1_tl }
+ \int_compare:nNnT { \c@chapter } > { 0 }
+ {
+ \thechapter
+ \tl_use:c { l__eb_hyphen_#1_tl }
+ }
+ \int_to_arabic:v { c@#1 }
}
- \int_to_arabic:v { c@#1 }
}
}
-\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} }
+\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 }
+\cs_generate_variant:Nn \keys_define:nn { nx }
+\cs_generate_variant:Nn \ctex_set:nn { ox }
+\cs_new_protected:Npn \eb_toc_extract_level:
+ {
+ \regex_extract_all:noN { \cC. } { \eb@toc@title@level }
+ \l__eb_level_tmpa_seq
+ \seq_get_right:NN \l__eb_level_tmpa_seq \l__eb_level_tmpa_tl
+ \tl_set:Nx \l__eb_level_tmpa_tl
+ {
+ \exp_last_unbraced:No
+ \cs_to_str:N { \l__eb_level_tmpa_tl }
+ }
+ \regex_replace_case_once:nN
+ {
+ { ^bi(.*) } { \1 }
+ { .* } { \0 }
+ }
+ \l__eb_level_tmpa_tl
+ }
\keys_define:nn { eb/tocouter }
{
- level .tl_set:N = \eb@toc@title@level,
- level .initial:n =
+ level .code:n =
+ {
+ \tl_set:Nn \eb@toc@title@level {#1}
+ \eb_toc_extract_level:
+ },
+ level .initial:x =
{
\bool_if:NTF \l__eb_class_mode_book_bool
- { \bichapter* }
- { \bisection* }
+ { \exp_not:N \bichapter* }
+ { \exp_not:N \bisection* }
},
- section .meta:n = { level = \bisection* },
- chapter .meta:n = { level = \bichapter* },
- none .code:n =
+ section .meta:n = { level = \bisection* },
+ chapter .meta:n = { level = \bichapter* },
+ none .code:n =
{
\tl_set:Nn \eb@toc@title@level
{ \par\use_none:nn }
\bool_set_true:N \l__eb_toc_notitle_bool
},
- multoc .int_set:N = \l__eb_toc_columns_int,
- multoc .default:n = 2,
- multoc .initial:n = 1,
+ multoc .int_set:N = \l__eb_toc_columns_int,
+ multoc .default:n = 2,
+ multoc .initial:n = 1,
plan .choice:,
plan .value_required:n = true,
- plan/cn .code:n =
+ plan/cn .code:n =
{
\bool_set_true:N \l__eb_toc_plan_cn_bool
\bool_set_false:N \l__eb_toc_plan_bi_bool
},
- plan/bi .code:n =
+ plan/bi .code:n =
{
\bool_set_false:N \l__eb_toc_plan_cn_bool
\bool_set_true:N \l__eb_toc_plan_bi_bool
},
- plan/both .code:n =
+ plan/both .code:n =
{
\bool_set_true:N \l__eb_toc_plan_cn_bool
\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 =
+ plan .initial:n = cn,
+ columns .meta:n = { multoc = {#1} },
+ title .code:n = \eb_assign_toc_title:n {#1},
+ bilist .code:n =
{
\tl_gset:Nn \g__eb_bilist_permute_value_tl {#1}
\str_if_eq:nnTF {#1} { mix }
@@ -1199,12 +1297,16 @@
}
}
},
- name .tl_set:N = \l__eb_print_index_name_tl,
- name .initial:n = \imki@jobname
+ name .tl_set:N = \l__eb_print_index_name_tl,
+ name .initial:n = \imki@jobname,
+ unknown .code:n =
+ {
+ \ctex_set:ox { \l__eb_level_tmpa_tl }
+ { \eb_unknown_kv_handle: }
+ },
+ unknown .default:V = \c_novalue_tl
}
-\bool_if:NTF \l__eb_class_mode_book_bool
- { \keys_define:nn { } { eb/tocouter .inherit:n = ctex/chapter } }
- { \keys_define:nn { } { eb/tocouter .inherit:n = ctex/section } }
+
\NewDocumentCommand{\eb_assign_toc_title:n}
{>{\SplitArgument{1}{,}}m}
{\eb_toc_assign_title_judge:nn #1}
@@ -1240,10 +1342,17 @@
{ \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_list_struct_parse:nnnnn #1#2#3#4#5
{
\group_begin:
\tl_set_eq:Nc \eb@toc@title { list#4name }
+ \eb_toc_outer_kv_initial:n {#5}
\IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}}
\eb_toc_title_level_cmd:n {#1}
\eb_toc_if_title_between_hook:nn {#1} {#4}
@@ -1260,7 +1369,7 @@
}
\cs_new_protected:Npn \DeclareFloatList #1#2
{
- \exp_args:Nc \DeclareDocumentCommand { listof#1s }{st+o}
+ \exp_args:Nc \DeclareDocumentCommand { listof#1s }{st++o}
{\eb_toc_list_struct_parse:nnnnn {##1} {##2} {##3} {#1} {#2}}
\ctex_define:n
{
@@ -1283,14 +1392,20 @@
{ \protect\numberline{#3}{#4} }
}
}
-\cs_new_protected:Npn \AllotCaptionExt #1#2
+\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
{
bicontentsname .tl_set:N = \bicontentsname,
bicontentsname .initial:n = Contents
}
-\RenewDocumentCommand{\tableofcontents}{st+oD(){}}
+\RenewDocumentCommand{\tableofcontents}{st++o+D(){}}
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \contentsname
@@ -1304,6 +1419,7 @@
{ \section* }
}
}
+ \eb_toc_outer_kv_initial:n { toc }
\IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}}
\bool_if:NT \l__eb_toc_plan_cn_bool
{
@@ -1323,13 +1439,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 }
@@ -1346,7 +1478,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} },
@@ -1368,7 +1500,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 }
@@ -1377,13 +1509,20 @@
{
tocformat = \IfBooleanT{#1}{\contentsmargin{0pt}},
tocindent = 0pt,
- tocrule = \IfBooleanTF{#1}{,~\thecontentspage}{\tocrule{$\cdot$}},
+ 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 = .—,
@@ -1448,7 +1587,7 @@
\eb@register@every@toc@option
}
\RegisterEveryTocOption{tocafter,tocindent,tocrule}
-\NewDocumentCommand{\tocrule}{st-O{0.7pc}d()mO{}}
+\NewDocumentCommand{\tocrule}{st-O{0.6pc}d()mO{}}
{
\normalsize\normalfont
\ttl@row@i[#3]{\IfValueTF{#4}{\scalebox{#4}{#5}}{#5}}#6
@@ -1465,6 +1604,7 @@
}
}
}
+\cs_set:Npn \cdottocrule { \tocrule{\textperiodcentered} }
\ctex_define:nn { toc }
{
lolskip .skip_set:N = \eb@toc@lol@skip,
@@ -1501,24 +1641,30 @@
\group_begin:
\makeatletter
\file_if_exist_input:n { \jobname.#1 }
- \UseHookWithArguments{starttoc/after}{1}{#1}
+ \AddToHook{enddocument/afterlastpage}
+ {\UseHookWithArguments{starttoc/after}{1}{#1}}
\boolfalse{@nobreak}
\group_end:
}
{ \eb@starttoc{#1} }
}
-\AddToHook{enddocument/afterlastpage}
+\cs_set_protected:Npn \AssignPartialExt #1#2
{
- \IfHookEmptyTF{starttoc/after}{}
- {\iow_now:Nn \@mainaux { \RemoveFromHook{starttoc/after}[aux] }}
+ \tl_if_exist:cTF { ttl@partial#1 }
+ { \msg_warning:nnnn { easybase } { repeated-ptoc } {#1} {#2} }
+ {
+ \tl_set:cn { ttl@partial#1 } {#2}
+ \AddToHookWithArguments{cmd/ttl@writepartial/before}[ttl/#1]
+ {\ttl@topartial{#1}{##1}{##2}}
+ }
}
-\cs_set_protected:Npn \AllotPartialExt #1#2
+\cs_set_eq:NN \AllotPartialExt \AssignPartialExt
+\msg_new:nnn { easybase } { repeated-ptoc }
{
- \tl_set:cn { ttl@partial#1 } {#2}
- \AddToHookWithArguments{cmd/ttl@writepartial/before}
- {\ttl@topartial{#1}{##1}{##2}}
+ Local~directory~file~'#2'~of~directory~type~'#1'~is \\
+ repeatedly~allocated.
}
-\AllotPartialExt{lol}{pll}
+\AssignPartialExt{lol}{pll}
\cs_new_protected:Npn \RegisterTitleIfname #1
{
@@ -1542,16 +1688,25 @@
}
\RegisterTitleIfname{toc}
-\cs_set_eq:NN \eb@ctexsetii \ctex_set:nn
\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 }
- { \eb@ctexsetii{#1}{#3} }
+ { \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}{\@nameuse{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} }
}
\msg_new:nnn { easybase } { undefined-toc-style }
@@ -1570,7 +1725,7 @@
{
tocformat = \addvspace{1pc}\sffamily,
tocindent = 0pt,
- tocrule = \tocrule{$\cdot$}[\bfseries],
+ tocrule = \cdottocrule[\bfseries],
tocline = \CTEXnumberline{#1}#2
},
section =
@@ -1580,17 +1735,17 @@
tocrule =
{
\bool_if:NTF \l__eb_class_mode_book_bool
- { \tocrule{$\cdot$} }
- { \tocrule{$\cdot$}[\bfseries] }
+ { \cdottocrule }
+ { \cdottocrule[\bfseries] }
}
},
subsection =
- { tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.4em } }
+ { tocindent = \bool_if:NTF \l__eb_class_mode_book_bool { 3.8em } { 1.5em } }
}
\ctex_at_end_package:nn { imakeidx }
{
- \RenewDocumentCommand{\printindex}{st+od()}
+ \RenewDocumentCommand{\printindex}{st++o}
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \indexname
@@ -1620,7 +1775,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{bitocline/before}[chapter]
{
\def\CTEX@prechapter{\CTEX@prebiappendix}
\def\CTEX@thechapter{#2}
@@ -1648,19 +1803,19 @@
\ctex_define:nn { font }
{
- caption-table .tl_set:N = \l__eb_font_caption_table_tl,
- caption-figure .tl_set:N = \l__eb_font_caption_figure_tl,
- caption-listing .tl_set:N = \l__eb_font_caption_listing_tl,
- caption-every .meta:n =
+ caption-table .tl_set:N = \l__eb_font_caption_table_tl,
+ caption-figure .tl_set:N = \l__eb_font_caption_figure_tl,
+ caption-lstlisting .tl_set:N = \l__eb_font_caption_lstlisting_tl,
+ caption-every .meta:n =
{
- caption-table = {#1},caption-figure = {#1},
- caption-listing = {#1}
+ caption-table = {#1},caption-figure = {#1},
+ caption-lstlisting = {#1}
},
- caption-every .initial:n = \sffamily\small,
- footnote .tl_set:N = \eb@font@footnote,
- marginpar .tl_set:N = \marginfont,
- marginpar .initial:n = \footnotesize,
- unknown .code:n = \eb_msg_deprecated_option:n { font }
+ caption-every .initial:n = \sffamily\small,
+ footnote .tl_set:N = \eb@font@footnote,
+ marginpar .tl_set:N = \marginfont,
+ marginpar .initial:n = \footnotesize,
+ unknown .code:n = \eb_msg_deprecated_option:n { font }
}
\cs_new_protected:Npn \ebaddtofont #1#2
{
@@ -1670,13 +1825,13 @@
{ \tl_put_right:Nn \l__eb_font_caption_table_tl {#2} }
{ figure }
{ \tl_put_right:Nn \l__eb_font_caption_figure_tl {#2} }
- { listing }
- { \tl_put_right:Nn \l__eb_font_caption_listing_tl {#2} }
+ { lstlisting }
+ { \tl_put_right:Nn \l__eb_font_caption_lstlisting_tl {#2} }
{ every }
{
\tl_put_right:Nn \l__eb_font_caption_table_tl {#2}
\tl_put_right:Nn \l__eb_font_caption_figure_tl {#2}
- \tl_put_right:Nn \l__eb_font_caption_listing_tl {#2}
+ \tl_put_right:Nn \l__eb_font_caption_lstlisting_tl {#2}
}
{ footnote }
{ \tl_put_right:Nn \eb@font@footnote {#2} }
@@ -1686,26 +1841,53 @@
}
\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 }
},
fntspread .initial:n = 1.2,
captab-spread .fp_set:N = \l__eb_spread_caption_table_fp,
capfig-spread .fp_set:N = \l__eb_spread_caption_figure_fp,
- caplst-spread .fp_set:N = \l__eb_spread_caption_listing_fp,
+ caplst-spread .fp_set:N = \l__eb_spread_caption_lstlisting_fp,
caption-spread .meta:n =
{
captab-spread = {#1},capfig-spread = {#1},
@@ -1714,8 +1896,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}} },
@@ -1734,23 +1916,39 @@
\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 }}
+\cs_new_protected:Npn \eb@register@cap@options #1
+ {
+ \ctex_define:nn { cap }
+ {
+ #1/unknown .code:n =
+ {
+ \use:x
+ {
+ \exp_not:N \captionsetup[#1]
+ { \eb_unknown_kv_handle: }
+ }
+ },
+ #1/unknown .default:V = \c_novalue_tl,
+ #1 .meta:nn = { ctex/cap/#1 } {##1}
+ }
+ }
+\cs_new_protected:Npn \RegisterCapOptions #1
+ {
+ \clist_map_function:nN {#1}
+ \eb@register@cap@options
+ }
+\RegisterCapOptions{table,figure,lstlisting}
\clist_map_inline:nn
- { table,figure,listing }
+ { table,figure,lstlisting }
{
\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 }
}
}
@@ -1764,17 +1962,13 @@
}
\captionsetup[table]{font = eb@table@font}
\captionsetup[figure]{font = eb@figure@font}
-\captionsetup[lstlisting]{font = eb@listing@font}
+\captionsetup[lstlisting]{font = eb@lstlisting@font}
\ctex_at_end_package:nn { bicaption }
{
\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 }
@@ -1790,11 +1984,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
@@ -1851,7 +2040,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,
@@ -1923,21 +2112,35 @@
\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{}mO{}}
- {\eb@declaretheoremstyle@save[#1,#3]{#2}}
- \RenewDocumentCommand{\declaretheorem}{O{}mO{}}
+ \RenewDocumentCommand{\declaretheoremstyle}{+O{}m+O{}}
+ {\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 }
{
- \listnumberline{#2}
+ \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
+ \settheoremtocline{##2}
+ {
+ \listnumberline{##2}
\thmtname\thmtifnote{~(\thmtnote)}{}
}
+ \cs_gset:cpn { thmt@contentsline@##2 }
+ { \thmt@contentslineIfNamed }
+ \exp_args:Nc \providecommand { p@##2 }[1]{####1}
}
\ctex_define:nn { thmt }
{
@@ -1955,14 +2158,13 @@
bodyfont = \normalfont,
postheadspace = 1em
]
- \theoremstyle{default}
- \cs_undefine:N \proof
\DeclareFloatList{theorem}{loe}
- \AllotPartialExt{loe}{ple}
+ \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 }
@@ -1974,68 +2176,120 @@
\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}{##2}{##1}}
+ \def\thmtifnote ##1##2
{
\tl_if_empty:NTF \thmt@shortoptarg
- {#2}
- { \protect\thmtformatoptarg{#1} }
+ {##2}
+ { \protect\thmtformatoptarg{##1} }
}
\NewDocumentCommand{\settheoremtocline}{smm}
{
- \IfBooleanT{#1}{\def\thmt@contentslineIgnore{\thmt@contentsline}}
- \cs_set:cpn { ll@#2 } { \@bsphack #3\@esphack }
+ \IfBooleanT{##1}{\def\thmt@contentslineIgnore{\thmt@contentsline}}
+ \cs_set:cpn { ll@##2 } { \@bsphack ##3\@esphack }
}
}
-
-\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 } }
+\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_set_true:N \l__eb_backend_bibtex_bool
\ctex_define:nn { bib }
{
@@ -2051,7 +2305,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}
@@ -2069,7 +2322,7 @@
{ \exp_args:NV \bibliographystyle \l__eb_bib_both_style_tl }
\tl_if_blank:VF \l__eb_bib_cite_style_tl
{ \exp_args:NV \setcitestyle \l__eb_bib_cite_style_tl }
- \NewDocumentCommand{\printbibliography}{st+o}
+ \NewDocumentCommand{\printbibliography}{st++o}
{
\group_begin:
\tl_set_eq:NN \eb@toc@title \bibname
@@ -2117,7 +2370,7 @@
\setcounter{biburllcpenalty}{1}
\setcounter{biburlnumpenalty}{1}
}
-\eb_at_end_preamble:n
+\ctex_before_end_preamble:n
{
\providecommand{\bibname}{\refname}
\clist_if_empty:NF \l__eb_bib_datafile_clist
@@ -2180,21 +2433,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
@@ -2203,35 +2456,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}
+ }
+\clist_map_inline:nn
+ {
+ { none } { 000000,000000,000000 },
+ { seaside } { 333fb2,9932cc,09cc00 },
+ { energy } { f39800,00a0e9,893895 },
+ { cyberpunk } { 601986,eb6877,a4005b }
}
-\ctex_define:nx { tools }
+ { \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
@@ -2319,7 +2572,7 @@
}
\ctex_define:n
{
- lstlistlistingname .tl_set:N = \listlstlistingname,
+ listlstlistingname .tl_set:N = \listlstlistingname,
lstlistingname .tl_set:N = \lstlistingname,
listtheoremname .tl_set:N = \listtheoremname
}
@@ -2330,18 +2583,114 @@
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
}
}
+
+\cs_if_exist:NF \DeclareObjectType
+ { \RequirePackage{xtemplate} }
+\DeclareObjectType{easybook}{0}
+\DeclareTemplateInterface{easybook}{cover}{0}
+ {
+ content : tokenlist = \c_empty_tl,
+ beforecode : tokenlist = \c_empty_tl,
+ aftercode : tokenlist = \c_empty_tl,
+ align : choice {l,r,c,n} = c
+ }
+\DeclareTemplateCode{easybook}{cover}{0}
+ {
+ content = \l__eb_cover_content_tl,
+ beforecode = \l__eb_cover_before_code_tl,
+ aftercode = \l__eb_cover_after_code_tl,
+ align =
+ {
+ l = \cs_set_eq:NN \eb_cover_align: \raggedright,
+ r = \cs_set_eq:NN \eb_cover_align: \raggedleft,
+ c = \cs_set_eq:NN \eb_cover_align: \centering,
+ n = \cs_set:Npn \eb_cover_align: { }
+ }
+ }
+ {
+ \AssignTemplateKeys
+ \tl_use:N \l__eb_cover_before_code_tl
+ \group_begin:
+ \eb_cover_align:
+ \tl_use:N \l__eb_cover_content_tl
+ \tex_par:D
+ \group_end:
+ \tl_use:N \l__eb_cover_after_code_tl
+ }
+\DeclareInstance{easybook}{top}{cover}{}
+\DeclareInstance{easybook}{bottom}{cover}{}
+\DeclareInstance{easybook}{middle}{cover}
+ {
+ content =
+ {
+ \notbool{@titlepage}
+ {
+ \renewcommand{\theupfootnote}{\@fnsymbol\c@footnote}
+ \renewcommand{\thefootnote}{\@fnsymbol\c@footnote}
+ \let\footnote\thanks
+ }
+ {}
+ \bgroup\LARGE\@title\par\egroup
+ \notbool{@titlepage}{\vskip 1.5em}{\vskip 3em}
+ \bgroup\large
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}\par\egroup
+ \notbool{@titlepage}{\vskip 0.75em}{\vskip 1.5em}
+ \bgroup\large\@date\par\egroup
+ \notbool{@titlepage}{\vskip 1.5em}{}
+ \@thanks
+ },
+ beforecode =
+ {
+ \ifbool{@titlepage}
+ {
+ \begin{titlepage}
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let\footnote\thanks
+ \null\vfil\vskip 60\p@
+ }
+ {\null\vskip 20\p@}
+ },
+ aftercode =
+ {
+ \ifbool{@titlepage}
+ {
+ \vfil\null
+ \end{titlepage}
+ }
+ {\thispagestyle{plain}}
+ \setcounter{footnote}{0}
+ }
+ }
+\keys_define:nn { eb/cover }
+ {
+ title .tl_set:N = \@title,
+ author .tl_set:N = \@author,
+ date .tl_set:N = \@date
+ }
+\RenewDocumentCommand{\maketitle}{+O{}}
+ {
+ \keys_set:nn { eb/cover } {#1}
+ \UseInstance{easybook}{top}
+ \UseInstance{easybook}{middle}
+ \UseInstance{easybook}{bottom}
+ }
\endinput
%%
%% End of file `easybase.sty'.
diff --git a/Master/texmf-dist/tex/latex/easybook/easybook.cls b/Master/texmf-dist/tex/latex/easybook/easybook.cls
index 3a51dda0b81..ce35f95def3 100644
--- a/Master/texmf-dist/tex/latex/easybook/easybook.cls
+++ b/Master/texmf-dist/tex/latex/easybook/easybook.cls
@@ -19,7 +19,7 @@
%%
%% This work has the LPPL maintenance status `maintained'.
\NeedsTeXFormat{LaTeX2e}[2021/11/15]
-\ProvidesExplClass{easybook}{2024/06/22}{2024ci}
+\ProvidesExplClass{easybook}{2024/11/11}{2024hd}
{Easily typesetting Chinese theses or books}
\bool_new:N \l__eb_compile_draft_bool
@@ -48,6 +48,7 @@
class.code:n = { },
floatpage.code:n = { },
theorem .code:n = { },
+ chem .code:n = { },
unknown .code:n = \clist_gput_right:NV \g__eb_doc_options_clist \CurrentOption
}
diff --git a/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg b/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg
index e512bf05705..2eee82e4045 100644
--- a/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg
+++ b/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg
@@ -18,15 +18,13 @@
%% LaTeX version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/06/22}{2024ci}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/11/11}{2024hd}
{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/edmaths/edmaths.sty b/Master/texmf-dist/tex/latex/edmaths/edmaths.sty
new file mode 100644
index 00000000000..cbfd89a5bed
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/edmaths/edmaths.sty
@@ -0,0 +1,258 @@
+%% Package `edmaths' v0.99
+%% File edmaths.sty
+%% Copyright 2024 Josh Fogg
+%%
+%% edmaths.sty is a LaTeX style file for typesetting reports and theses in the
+%% School of Mathematics at the University of Edinburgh. Suitable for use for
+%% theses, yearly reports, and undergraduate projects. Part of the more general
+%% `edmaths' package. See README.md for usage instructions.
+%%
+%% 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://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' and the current
+%% maintainer of this work is Josh Fogg. Originally written by Thomas Koeppe in
+%% 2007/07, it has since been updated by Josh Fogg from 2020 onwards.
+%%
+%% This work consists of the file edmaths.sty.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{edmaths}[2024-08-30 Edinburgh maths thesis/report style v0.99]
+\RequirePackage{calc,ifthen,setspace,amsmath,amsthm,amscd,amssymb}
+
+
+
+% PAGE SIZE AND MARGINS
+% These settings control the size of the page and its margins. All measurements are
+% compliant wih the school's typesetting requirements.
+
+\setlength{\paperheight}{297mm} % A4 Paper
+\setlength{\paperwidth}{210mm} %
+\setlength{\oddsidemargin}{14.6mm} % Left/Inside: 4.0cm (rel. -1in)
+\setlength{\evensidemargin}{-.4mm} % Right/Outside: 2.5cm (rel. -1in)
+\setlength{\topmargin}{-17.4mm} % \
+\setlength{\headheight}{6mm} % | Top: 2.0cm (rel. -1in), out of which 6mm for the header
+\setlength{\headsep}{6mm} % /
+\setlength{\textwidth}{145mm} % Margins: 2.5cm + 4cm
+% Textheight delayed until we know the line spacing.
+
+% The following is removed in favour of the `report' class options "oneside/twoside".
+% \@twosidefalse \@mparswitchfalse % Single-sided by default
+
+
+
+% PACKAGE OPTIONS
+% These options can be selected wihin \usepackage[...]{edmaths} to modify the
+% appearance of different parts of the document.
+
+% Options relating to external packages
+\newboolean{with-fourier} % Use the `fourier' package for Adobe Utopia font
+\newboolean{with-cmbright} % Use the `cmbright' package for Computer Modern Bright (sans serif) font
+\newboolean{with-comicsans} % :)
+\newboolean{with-hyperref} % Use the `hyperref' package for hyperlinks and bookmarks, all black
+\newboolean{with-colour} % Add sane colours to the hyperref links
+\newboolean{with-fancyhdr} % Use the `fancyhdr' package to provide header and footer
+\DeclareOption{fourier}{\setboolean{with-fourier}{true}}
+\DeclareOption{cmbright}{\setboolean{with-cmbright}{true}}
+\DeclareOption{comicsans}{\setboolean{with-comicsans}{true}}
+\DeclareOption{hyperref}{\setboolean{with-hyperref}{true}}
+\DeclareOption{colour}{\setboolean{with-colour}{true}}
+\DeclareOption{fancyhdr}{\setboolean{with-fancyhdr}{true}}
+
+% Options relating to document type (thesis, report, etc)
+\ifthenelse{\isundefined{\degreetext}}{\newcommand{\degreetext}{Specify a degree option!}}{}
+\DeclareOption{phd}{\renewcommand{\degreetext}{Doctor of Philosophy}}
+\DeclareOption{firstyear}{\renewcommand{\degreetext}{First-Year Report\\Maxwell Institute Graduate School}}
+\DeclareOption{secondyear}{\renewcommand{\degreetext}{Second-Year Report\\Maxwell Institute Graduate School}}
+\DeclareOption{thirdyear}{\renewcommand{\degreetext}{Third-Year Report\\Maxwell Institute Graduate School}}
+\DeclareOption{y4project}{\renewcommand{\degreetext}{Year 4 Project\\School of Mathematics}}
+\DeclareOption{mmath}{\renewcommand{\degreetext}{Master of Mathematics with Honours \\ School of Mathematics}}
+\DeclareOption{masterph}{\renewcommand{\degreetext}{Master of Philosophy}}
+\DeclareOption{mastersc}{\renewcommand{\degreetext}{Master of Science by Research}}
+
+% Options relating to stretchfactor (used for margin spacing)
+\ifthenelse{\isundefined{\stretchfactor}}{\newcommand{\stretchfactor}{1}}{}
+\DeclareOption{single}{\renewcommand{\stretchfactor}{1}}
+\DeclareOption{onehalf}{\renewcommand{\stretchfactor}{1.5}}
+\DeclareOption{double}{\renewcommand{\stretchfactor}{2}}
+
+% Options relating to having single or double sided documents
+% \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} % Single-sided by default
+% \DeclareOption{twosides}{\@twosidetrue \@mparswitchtrue}
+
+
+\ProcessOptions
+
+% If with-fourier selected, use the Adobe Utopia font.
+\ifthenelse{\boolean{with-fourier}}{
+ \RequirePackage{cmap}
+ \RequirePackage{fourier}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{microtype}
+} {}
+
+% If with-cmbright selected, use the (sans-serif) Computer Modern Bright font.
+\ifthenelse{\boolean{with-cmbright}}{
+ % NOTE if it doesn't compile, make sure you have CM Bright installed!
+ \RequirePackage{cmap}
+ \RequirePackage{cmbright}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{microtype}
+} {}
+
+% :)
+\ifthenelse{\boolean{with-comicsans}}{
+ % NOTE must be compiled with xelatex or luatex
+ \usepackage{fontspec}
+ \setmainfont{Comic Sans MS}
+} {}
+
+% If with-hyperref selected, configure its default settings
+\ifthenelse{\boolean{with-hyperref}}{
+ \RequirePackage[dvipsnames]{xcolor}
+ \RequirePackage[pdftitle={\@title}, pdfauthor={\@author}, pdfcreator={PDFLaTeX with edmaths}, pdfpagelayout=OneColumn, colorlinks=true, linkcolor=black, urlcolor=black, citecolor=black]{hyperref}
+ % If with-colour selected, use it to make hyperlinks blue not black
+ \ifthenelse{\boolean{with-colour}}{
+ \hypersetup{linkcolor=Sepia, urlcolor=NavyBlue, citecolor=Sepia}
+ } {}
+} {}
+
+% If with-fancyhdr selected, use it to provide fancier headers and footers
+\ifthenelse{\boolean{with-fancyhdr}}{
+ \RequirePackage{fancyhdr}
+ % Define a short title for use in headers if title is too long. Default is the same as title. Usage: use command \shortitle{<your short title here>} *after* calling edmaths.
+ \newcommand\@shorttitle{\@title}
+ \newcommand\shorttitle[1]{\renewcommand\@shorttitle{#1}}
+ \pagestyle{fancy}
+ \fancyhf{}
+ % if \fancyhead or \fancyfoot are used without `twoside` in \documentclass{...} then
+ % fancyhdr will complain that the 'E' used here is useless, so need to condition.
+ \if@twoside%
+ %%% put the stuff for true here (twoside=true)
+ \fancyhead[RO,LE]{\thepage}
+ \fancyfoot[RO,LE]{\thepage}
+ \fancyhead[LO]{\it\@shorttitle}
+ \fancyhead[RE]{\@author}
+ \fancyfoot[RE,LO]{}
+ \else%
+ %%% put the stuff for false here (twoside=false)
+ \fancyhead[LO]{\it\@shorttitle~~$\cdot$~~\@author}
+ \fancyhead[R]{\thepage}
+ \fancyfoot[R,LO]{}
+ \fi%
+} {}
+
+
+
+% BODY HEIGHT
+% Set up the text body height. For the text height, we calculate the largest number of
+% lines that gives us no more than 4cm bottom margin. This depends on the line spacing,
+% which we need first.
+
+\setstretch{\stretchfactor}
+
+% Debug only: In the next line, \XXXfactor contains the number of lines on a text-only page.
+% \newlength{\XXXunit}\setlength{\XXXunit}{1pt}\newlength{\XXXfactor}\setlength{\XXXfactor}{1pt + ((672pt - \topskip) / \baselineskip) * \XXXunit}
+\newlength{\scratchlength}\setlength{\scratchlength}{\topskip + ((672pt - \topskip) / \baselineskip) * \baselineskip + \baselineskip}
+\setlength{\textheight}{\scratchlength}
+
+
+
+% DOCUMENT COMPONENTS
+% Provides the formatting for the required document components. Specifically, these are
+% the titlepage, declaration, dedication, abstract, and undergraduate project fulfilment.
+
+\renewcommand{\maketitle}{%
+ \begin{titlepage}
+ \singlespacing
+ \addtolength{\oddsidemargin}{-0.75cm}
+ \begin{center}
+ \null\vskip 4.1cm
+ \begin{minipage}[t][7.6cm]{10.5cm}
+ \begin{center}
+ {\LARGE\textbf{\@title}\par}
+ {\Large\textit{\@author}\par}
+ \end{center}
+ \end{minipage}
+ \vfill
+ {\Large\degreetext \par The University of Edinburgh \par\@date \par}
+ \end{center}
+ \end{titlepage}
+ % For two-sided documents it's required that a blank page follow the title page. For
+ % one-sided documents it's required that the title page contribute to the page count.
+ \if@twoside
+ \thispagestyle{empty}
+ \cleardoublepage
+ \else
+ \addtocounter{page}{1}
+ \fi
+}
+
+
+% Declaration style for everything except year 4 projects
+\newcommand{\declaration}[1]{
+ % Doesn't need a chapter number or adding to the contents page
+ \chapter*{Declaration}
+ % Must always be single spaced
+ \begin{singlespace}
+ \def\param{#1}
+ \ifx\param\empty
+ I declare that this thesis was composed by myself
+ and that the work contained therein is my own,
+ except where explicitly stated otherwise in the text.
+ \else
+ {#1}
+ \fi
+ \end{singlespace}
+ {\raggedleft\vspace{2cm}(\textit{\@author})}
+}
+
+
+% Declaration style for year 4 project, argument is degree programme (e.g. MMath)
+\newcommand{\yfourdeclaration}[1]{
+ \vfill
+ \noindent
+ This project report is submitted in partial fulfilment
+ of the requirements for the degree of \textit{#1}.
+}
+
+
+\renewenvironment{abstract}{
+ % Abstracts don't need a chapter number...
+ \chapter*{\abstractname}
+}{
+ % ...but do need adding to the contents page.
+ \addcontentsline{toc}{chapter}{\abstractname}
+}
+
+
+\newenvironment{laysummary}{
+ % A lay summary is required for PhD theses and is not included in the page count. We treat it in a similar way to the abstract here.
+ \chapter*{Lay Summary}
+}{
+ \addcontentsline{toc}{chapter}{Lay Summary}
+}
+
+
+\newenvironment{acknowledgements}{
+ % Acknowledgements environment similar to abtract and lay summary.
+ \chapter*{Acknowledgements}
+}{
+ \addcontentsline{toc}{chapter}{Acknowledgements}
+}
+
+
+\newcommand{\dedication}[1]{%
+ % Handled dedications (e.g. 'For Alex', not acknowledgements)
+ \clearpage
+ \thispagestyle{plain}
+ \vspace*{7cm}
+ \begin{center}
+ \Large\it #1
+ \end{center}
+} \ No newline at end of file
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/enumext/enumext.sty b/Master/texmf-dist/tex/latex/enumext/enumext.sty
new file mode 100644
index 00000000000..a810dde276c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/enumext/enumext.sty
@@ -0,0 +1,6115 @@
+%%
+%% 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-01} {1.0} {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
+\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
+\skip_new:N \g__enumext_keyans_pic_parsep_skip
+\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| 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
+\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}
+ \dim_set_eq:cN { l__enumext_labelwidth_v_dim }
+ \l__enumext_current_widest_dim
+ \__enumext_label_style:cvn { l__enumext_label_vi_tl }
+ { l__enumext_counter_vi_tl } {#1}
+ \dim_set_eq:cN { 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 } }
+ }
+ \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 keys associated with storage on first level of |enumext| and |enumext*|.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ 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,
+ wrap-opt .cs_set_protected:Np = \__enumext_keyans_wrapper_opt:n ##1,
+ wrap-opt .initial:n = [{##1}],
+ wrap-opt .value_required:n = true,
+ save-sep .tl_set:N = \l__enumext_store_keyans_item_opt_sep_tl,
+ save-sep .initial:n = {, ~ },
+ save-sep .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-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 / unknown .code:n =
+ \msg_error:nneee { enumext } { unknown-choice }
+ { mark-pos } { left, ~ right } { \exp_not:n {##1} },
+ mark-pos .initial:n = right,
+ mark-pos .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-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,
+ }
+ }
+\clist_map_inline:nn { level-1, enumext* } { \__enumext_tmp:n {#1} }
+%% Add keys |mark-pos|, |show-pos| and |show-ans| keys for |keyans| and |keyans*| environments.
+\cs_set_protected:Npn \__enumext_tmp:n #1
+ {
+ \keys_define:nn { enumext / #1 }
+ {
+ 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 .initial:n = right,
+ mark-pos .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, keyans* } { \__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 } {}
+ { wrap-ans } {} { mark-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 }
+ \makebox[0pt][ r ]
+ {
+ \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
+ {
+ \__enumext_print_keyans_box:NN
+ \l__enumext_labelwidth_vii_dim \l__enumext_labelsep_vii_dim
+ }
+ {
+ \__enumext_print_keyans_box:cc
+ { l__enumext_labelwidth_ \__enumext_level: _dim }
+ { l__enumext_labelsep_ \__enumext_level: _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 ans 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_tl
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl
+ {
+ \l__enumext_store_keyans_item_opt_sep_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_tl
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl
+ {
+ \l__enumext_store_keyans_item_opt_sep_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 |show-ans| and |show-pos| keys for |keyans| and |keyanspic| environments.
+\cs_new_protected:Npn \__enumext_keyans_show_left:n #1
+ {
+ \tl_if_novalue:nF { #1 }
+ {
+ \tl_set:Ne \l__enumext_store_current_opt_arg_tl { #1 }
+ }
+ \bool_if:NT \l__enumext_show_answer_bool
+ {
+ \__enumext_keyans_show_ans:
+ }
+ \bool_if:NT \l__enumext_show_position_bool
+ {
+ \__enumext_keyans_show_pos:
+ }
+ }
+\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:n { \l__enumext_store_current_opt_arg_tl } \c_space_tl
+ }
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_show_ans:
+ {
+ \bool_if:NT \l__enumext_starred_bool
+ {
+ \dim_set_eq:NN \l__enumext_labelwidth_i_dim \l__enumext_labelwidth_vii_dim
+ \dim_set_eq:NN \l__enumext_labelsep_i_dim \l__enumext_labelsep_vii_dim
+ }
+ \tl_put_left:Nn \l__enumext_label_v_tl
+ {
+ \__enumext_print_keyans_box:NN
+ \l__enumext_labelwidth_i_dim \l__enumext_labelsep_i_dim
+ }
+ }
+\cs_new_protected:Nn \__enumext_keyans_show_pos:
+ {
+ \bool_if:NT \l__enumext_starred_bool
+ {
+ \dim_set_eq:NN \l__enumext_labelwidth_i_dim \l__enumext_labelwidth_vii_dim
+ \dim_set_eq:NN \l__enumext_labelsep_i_dim \l__enumext_labelsep_vii_dim
+ }
+ \int_compare:nNnTF { \l__enumext_keyans_pic_level_int } = { 1 }
+ {
+ \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:
+ }
+ }
+ {
+ \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 } + 1
+ }
+ ]
+ \group_end:
+ }
+ }
+ \tl_put_left:Nn \l__enumext_label_v_tl
+ {
+ \__enumext_print_keyans_box:NN
+ \l__enumext_labelwidth_i_dim \l__enumext_labelsep_i_dim
+ }
+ }
+%% Internal function for |\item| whit 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]| whit check-answer mechanism in |enumext| environment.
+\cs_new_protected:Npn \__enumext_starred_item: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_star_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_starred_item: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 }
+ \tl_use:c { l__enumext_label_font_style_ \__enumext_level: _tl }
+ \bool_if:cTF { l__enumext_wrap_label_ \__enumext_level: _bool }
+ {
+ \__enumext_item_star_exec:
+ \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 } ]
+ {
+ \tl_use:c { l__enumext_label_font_style_ \__enumext_level: _tl }
+ \bool_if:cTF { l__enumext_wrap_label_ \__enumext_level: _bool }
+ {
+ \__enumext_item_star_exec:
+ \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 = {\textasteriskcentered},
+ 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 = { \__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:nnn { enumext } { keyans-unknown-key } {#1}
+ }
+ {
+ \msg_error:nnnn { 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
+ {
+ \tl_set_eq:NN \l__enumext_store_current_label_tmp_tl \l__enumext_label_v_tl
+ \__enumext_keyans_show_left: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:
+ \tl_set_eq:NN \l__enumext_label_v_tl \l__enumext_store_current_label_tmp_tl
+ \__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}
+ {
+ \peek_remove_spaces:n
+ {
+ \__enumext_keyans_starred_item:n {##2}
+ }
+ }
+ {
+ \__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:Nn \__enumext_keyans_make_label_std:
+ {
+ \RenewDocumentCommand \makelabel { m }
+ {
+ \tl_use:N \l__enumext_label_fill_left_v_tl
+ \tl_use:N \l__enumext_label_font_style_v_tl
+ \bool_if:NTF \l__enumext_wrap_label_v_bool
+ {
+ \__enumext_wrapper_label_v:n { ##1 }
+ }
+ { ##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 ]
+ {
+ \tl_use:N \l__enumext_label_font_style_v_tl
+ \bool_if:NTF \l__enumext_wrap_label_v_bool
+ {
+ \__enumext_wrapper_label_v:n { ##1 }
+ }
+ { ##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,
+ unknown .code:n = { \__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 { -\labelwidth - \labelsep }
+ \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:nT { #1 }
+ {
+ \__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
+ \bool_lazy_or:nnT
+ { \bool_if_p:N \l__enumext_show_answer_bool }
+ { \bool_if_p:N \l__enumext_show_position_bool }
+ {
+ \tl_set_eq:NN \l__enumext_label_v_tl \l__enumext_label_vi_tl
+ \__enumext_keyans_show_left:n { #2 }
+ \tl_set_eq:NN \l__enumext_label_vi_tl \l__enumext_label_v_tl
+ }
+ }
+ \tl_use:N \l__enumext_label_font_style_v_tl
+ \__enumext_wrapper_label_v:n { \l__enumext_label_vi_tl }
+ \__enumext_keyans_show_item_opt:
+ }
+ }
+%% 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 ans 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
+ \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_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_tl
+ {
+ \tl_put_right:Ne \l__enumext_store_current_label_tl
+ {
+ \l__enumext_store_keyans_item_opt_sep_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_starred_item_exec:
+ {
+ \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
+ \bool_if:NT \l__enumext_show_answer_bool
+ {
+ \__enumext_print_keyans_box:NN \l__enumext_labelwidth_i_dim \l__enumext_labelsep_i_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:
+ }
+ \__enumext_print_keyans_box:NN \l__enumext_labelwidth_i_dim \l__enumext_labelsep_i_dim
+ }
+ }
+%% Define a fake |\makelabel| for |keyans*| environment.
+\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_starred_item_exec:
+ }
+ \makebox[ \l__enumext_labelwidth_viii_dim ][ \l__enumext_align_label_viii_str ]
+ {
+ \tl_use:N \l__enumext_label_font_style_viii_tl
+ \bool_if:NTF \l__enumext_wrap_label_viii_bool
+ {
+ \__enumext_wrapper_label_viii:n {#1}
+ }
+ { #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:
+ }
+ \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 = { 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 = { 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 = { 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 = { 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 = { 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 = { 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/enverb/enverb.sty b/Master/texmf-dist/tex/latex/enverb/enverb.sty
new file mode 100644
index 00000000000..bb15d3fec61
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/enverb/enverb.sty
@@ -0,0 +1,380 @@
+%%
+%% This is file `enverb.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% enverb.dtx (with options: `pkg')
+%%
+%% --------------------------------------------------------------
+%% enverb -- read an environment verbatim
+%% E-mail: jspratte@yahoo.de
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% --------------------------------------------------------------
+%%
+%% Copyright (C) 2023-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
+%% (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
+%% Jonathan P. Spratte.
+%%
+%% This work consists of the files enverb.dtx
+%% enverb-doc.tex
+%% and the derived files enverb-doc.pdf
+%% enverb.sty
+%%
+\newcommand*\enverb@date{2024-08-28}
+\newcommand*\enverb@version{1.0}
+\ProvidesPackage{enverb}
+ [\enverb@date\space v\enverb@version\space read an environment verbatim]
+\providecommand\@thirdofthree[3]{#3}
+\providecommand\@firstofnine[9]{#1}
+\ExplSyntaxOn
+\cs_new_eq:NN \enverb@count \tl_count:n
+\cs_new_eq:NN \enverb@ifxTF \token_if_eq_meaning:NNTF
+\cs_new_eq:NN \enverb@chargen \char_generate:nn
+\cs_set:Npx \enverb@othercr { \char_generate:nn {13} {12} }
+\ExplSyntaxOff
+\RequirePackage{expkv-def}
+\ekvdefinekeys{enverb}
+ {
+ protect code ignore = \let\enverb@ifautoignore\@secondoftwo
+ ,also eint ignore = \enverb@ignore
+ ,boolTF auto-ignore = \enverb@ifautoignore
+ ,initial auto-ignore
+ ,eint more-ignore = \enverb@moreignore
+ ,initial more-ignore = 2
+ ,long store bol = \enverb@bol@content
+ ,long code bol+ = \enverb@add\enverb@bol@content{#1}
+ ,long code +bol = \enverb@pre\enverb@bol@content{#1}
+ ,long store eol = \enverb@eol@content
+ ,einitial eol = \enverb@othercr
+ ,long code eol+ = \enverb@add\enverb@eol@content{#1}
+ ,long code +eol = \enverb@pre\enverb@eol@content{#1}
+ ,protect code key-handler = \protected\long\def\enverb@keyhandler##1{#1}
+ ,protect code key-set = \protected\long\ekvsetdef\enverb@keyhandler{#1}
+ ,unknown code = \enverb@add\enverb@unknown@kv{, {#3} = {#2} }
+ ,unknown noval = \enverb@add\enverb@unknown@kv{, {#2} }
+ ,boolTF oarg-not-enverb = \enverb@ifoargtokeyhandler
+ }
+\protected\long\ekvsetdef\enverbsetup{enverb}
+\let\enverb@unknown@kv\@empty
+\long\def\enverb@stop#1\enverb@stop{}
+\protected\def\enverb@error{\PackageError{enverb}}
+\protected\def\enverb@misused
+ {%
+ \enverb@error
+ {Misused \string\enverb. Input already tokenised}%
+ {%
+ It seems you used the \string\enverb\space based environment
+ {\@currenvir} inside another\MessageBreak
+ macro's or a primitive's argument; that doesn't work.%
+ }%
+ }
+\protected\long\def\enverb@keyhandler#1%
+ {%
+ \if\relax\detokenize{#1}\relax
+ \expandafter\@gobbletwo
+ \fi
+ \@firstofone
+ {%
+ \enverb@error
+ {%
+ Unknown keys encountered:
+ \expanded
+ {%
+ \ekvparse
+ {\MessageBreak\@spaces\unexpanded}%
+ {\MessageBreak\@spaces\enverb@keyhandler@}%
+ {#1}%
+ }%
+ \@gobble
+ }%
+ {%
+ Perhaps you misspelled some key names? Or you forgot to set up
+ custom key\MessageBreak
+ parsing.%
+ }%
+ }%
+ }
+\long\def\enverb@keyhandler@#1{\unexpanded{#1} = \unexpanded}
+\begingroup
+\lccode`\~=`\^^M
+\catcode`\:=13
+\lccode`\:=`\ % <- space
+\catcode`\;=13
+\lccode`\;=`\^^I % <- tab
+\lowercase{\endgroup
+\def\enverb@body@space{}
+\def\enverb@body@tab{}
+\def\enverb@body@newline{\enverb@collect}
+\def\enverb@collect#1~%
+ {\enverb@ifnotend{#1}{\enverb@bol\unexpanded{#1}\enverb@eol\enverb@collect}}
+\protected\def\enverb@body@setup
+ {%
+ \let\enverbBody\@empty
+ \let\do\@makeother\dospecials
+ \endlinechar=`\^^M
+ \catcode`\^^M=13 \let~\enverb@body@newline
+ \catcode`\ =13 \let:\enverb@body@space
+ \catcode`\^^I=13 \let;\enverb@body@tab
+ \let\enverb@bol\relax
+ \let\enverb@eol\relax
+ }
+\long\def\enverb@ifxanyTF#1#2%
+ {\enverb@ifxanyTF@#1#2\enverb@ifxanyTF@}
+\long\def\enverb@ifxanyTF@#1#2%
+ {%
+ \enverb@ifxanyTF@ifdone#2\enverb@ifxanyTF@F\enverb@ifxanyTF@
+ \enverb@ifxTF#1#2\enverb@ifxanyTF@T{\enverb@ifxanyTF@#1}%
+ }
+\long\def\enverb@ifxanyTF@ifdone#1\enverb@ifxanyTF@{}
+\long\def\enverb@ifxanyTF@F
+ \enverb@ifxanyTF@\enverb@ifxTF#1\enverb@ifxanyTF@T#2#3#4%
+ {#4}
+\long\def\enverb@ifxanyTF@T#1\enverb@ifxanyTF@#2#3{#2}
+\def\enverb@search@oarg@ifx#1#2%
+ {%
+ \enverb@ifxTF#1\@let@token
+ {%
+ \ifenverb@firsteol#2\else\enverb@body@add{#1}\fi
+ \enverb@search@oarg@b
+ }%
+ }
+\protected\def\enverb@search@oarg@a
+ {%
+ \enverb@search@oarg@ifx:{}%
+ {%
+ \enverb@search@oarg@ifx;{}%
+ {%
+ \enverb@search@oarg@ifx~\enverb@firsteolfalse
+ {%
+ \enverb@ifxTF{[}\@let@token
+ {\enverb@oarg}%
+ {%
+ \enverb@ifxanyTF\@let@token
+ {%
+ \@sptoken\par\bgroup\egroup$&##^_% $
+ }
+ {%
+ \enverb@misused
+ \endgroup
+ }%
+ {%
+ \ifenverb@firsteol
+ \expandafter\enverb@body@after@begin
+ \else
+ \expandafter\enverb@body
+ \fi
+ }%
+ }%
+ }%
+ }%
+ }%
+ }
+\protected\def\enverb@body
+ {\edef\enverbBody{\iffalse}\fi\expandafter\enverb@collect\enverbBody}
+\def\enverb@body@after@oarg#1~%
+ {\enverb@ensure@blank{#1}{closing bracket}\enverb@body}
+\def\enverb@body@after@begin#1~%
+ {\enverb@ensure@blank{#1}{\string\begin}\enverb@body}
+}
+\newcommand\enverb@ensure@blank[2]
+ {%
+ \expandafter\enverb@ifempty\expanded{{#1}}{}%
+ {%
+ \expanded
+ {%
+ \noexpand\enverb@error
+ {%
+ Line after #2 not empty.\noexpand\MessageBreak
+ Contains: \detokenize\expandafter{\romannumeral`\^^@#1}%
+ }%
+ {%
+ \noexpand\enverb will try to ignore this. You should clean up
+ your input.%
+ }%
+ }%
+ }%
+ }
+\newcommand\enverb@ifempty[1]
+ {%
+ \enverb@ifempty@\enverb@ifempty@A#1\enverb@ifempty@B.\enverb@ifempty@true
+ \enverb@ifempty@A\enverb@ifempty@B
+ }
+\def\enverb@ifempty@#1\enverb@ifempty@A\enverb@ifempty@B#2#3{#3}
+\def\enverb@ifempty@true\enverb@ifempty@A\enverb@ifempty@B#1#2{#1}
+\protected\long\def\enverb@add#1#2{\edef#1{\unexpanded\expandafter{#1#2}}}
+\protected\long\def\enverb@pre#1#2%
+ {\edef#1{\unexpanded{#2}\unexpanded\expandafter{#1}}}
+\protected\def\enverb@body@add{\enverb@add\enverbBody}
+\NewDocumentCommand \enverb { s +m }
+ {%
+ \expandafter\enverb@ifnotend@setup@perhaps\expanded
+ {{\string{\@currenvir\string}}}%
+ \let\enverb@collected@oarg\@empty
+ \edef\enverb@collected@marg{\unexpanded{#2}}%
+ \begingroup
+ \enverb@body@setup
+ \IfBooleanTF{#1}%
+ {\enverb@body@after@begin}%
+ {%
+ \enverb@firsteoltrue
+ \enverb@search@oarg
+ }%
+ }
+\newif\ifenverb@firsteol
+\protected\def\enverb@search@oarg{\futurelet\@let@token\enverb@search@oarg@a}
+\protected\def\enverb@search@oarg@b{\expandafter\enverb@search@oarg\@gobble}
+\protected\def\enverb@oarg{\endgroup\enverb@oarg@}
+\NewDocumentCommand\enverb@oarg@{+O{}}
+ {%
+ \enverb@add\enverb@collected@oarg{#1}%
+ \begingroup
+ \enverb@body@setup
+ \enverb@body@after@oarg
+ }
+\newcommand\enverb@ifnotend[1]%
+ {%
+ \def\enverb@ifnotend##1%
+ {%
+ \enverb@ifnotend@
+ ##1\enverb@mark\enverb@ifnotend@maybe
+ #1\enverb@mark\@thirdofthree
+ \enverb@stop
+ }%
+ \def\enverb@ifnotend@##1#1##2\enverb@mark##3##4\enverb@stop{##3{##1}{##2}}%
+ }
+\expandafter\enverb@ifnotend\expanded{{\expandafter\@gobble\string\\end}}
+\newcommand\enverb@ifnotend@maybe[2]
+ {\expandafter\enverb@ifnotend@perhaps\expandafter{\romannumeral`\^^@#2}{#1}}
+\protected\def\enverb@ifnotend@setup@perhaps#1%
+ {%
+ \def\enverb@ifnotend@perhaps##1%
+ {%
+ \enverb@ifnotend@perhaps@\enverb@mark##1\enverb@mark\enverb@ifnotend@end
+ \enverb@mark#1\enverb@mark\@thirdofthree
+ \enverb@stop
+ }%
+ \def\enverb@ifnotend@perhaps@
+ ##1\enverb@mark#1##2\enverb@mark##3##4\enverb@stop
+ {##3{##2}}%
+ }
+\def\enverb@ifnotend@end#1#2#3%
+ {%
+ \iffalse{\fi}%
+ \enverb@ensure@blank{#1}{\string\end}%
+ \expandafter\enverb@finalise\expandafter{\enverbBody}{#2}%
+ }
+\protected\def\enverb@finalise#1#2%
+ {%
+ \endgroup
+ \expandafter\enverbsetup\expandafter{\enverb@collected@marg}%
+ \enverb@ifoargtokeyhandler
+ {%
+ \expandafter\enverb@keyhandler\expanded
+ {{%
+ \unexpanded\expandafter{\enverb@unknown@kv},%
+ \unexpanded\expandafter{\enverb@collected@oarg}%
+ }}%
+ }%
+ {%
+ \expandafter\enverbsetup\expandafter{\enverb@collected@oarg}%
+ \expandafter\enverb@keyhandler\expandafter{\enverb@unknown@kv}%
+ }%
+ \enverb@ifautoignore
+ {\enverb@setup@ignore{\enverb@count{#2}+\enverb@moreignore}}%
+ {\enverb@setup@ignore\enverb@ignore}%
+ \edef\enverb@line##1\enverb@eol
+ {%
+ \noexpand\unexpanded{##1}%
+ %\noexpand\detokenize{##1}% % TODO
+ \noexpand\unexpanded{\unexpanded\expandafter{\enverb@eol@content}}%
+ }%
+ \edef\enverbBody{#1}%
+ \expandafter\end\expandafter{\@currenvir}%
+ }
+\protected\def\enverb@setup@ignore#1%
+ {\expandafter\enverb@setup@ignore@\the\numexpr#1\relax;\enverb@line}
+\protected\def\enverb@setup@ignore@#1;#2%
+ {%
+ \ifnum#1>9
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\expandafter\enverb@setup@ignore@\the\numexpr#1-8;{\@firstofnine{#2}}}%
+ {%
+ \let\enverb@bol@gobble\@empty
+ \expanded
+ {%
+ \unexpanded{\renewcommand\enverb@bol@gobble}\ifnum#1>\z@[#1]\fi
+ {\unexpanded{#2}}%
+ \unexpanded{\def\enverb@bol##1\enverb@eol}%
+ {%
+ \noexpand\unexpanded
+ {\unexpanded\expandafter{\enverb@bol@content}}%
+ \unexpanded{\expandafter\enverb@ifempty\expanded}{{##1}}%
+ {\noexpand\enverb@line}%
+ {\noexpand\enverb@bol@gobble}%
+ ##1\noexpand\enverb@eol
+ }%
+ }%
+ }%
+ }
+\def\enverb@rmeol
+ {%
+ \ifnum\catcode`\%=14
+ \enverb@chargen{`\%}{12}%
+ \expandafter\enverb@stop
+ \fi
+ \enverb@rmeol@0;%
+ \enverb@stop
+ }
+\def\enverb@rmeol@#1;%
+ {%
+ \ifnum#1=128
+ \string\relax
+ \expandafter\enverb@stop
+ \fi
+ \@firstofone
+ {%
+ \ifnum\catcode`\%=14
+ \enverb@chargen{#1}{12}%
+ \expandafter\enverb@stop
+ \fi
+ \expandafter\enverb@rmeol@\the\numexpr#1+1;%
+ }%
+ }
+\NewDocumentCommand\enverbExecute{}
+ {%
+ \begingroup
+ \newlinechar=`\^^M
+ \expandafter
+ \endgroup
+ \scantokens\expanded
+ {{%
+ \detokenize\expandafter{\enverbBody}%
+ \enverb@rmeol
+ }}%
+ }
+\NewDocumentCommand \enverbListing { m m }
+ {%
+ \scantokens\expanded
+ {{%
+ \string\begin{#1}\detokenize{#2}\enverb@othercr
+ \detokenize\expandafter{\enverbBody}%
+ \string\end{#1}\enverb@othercr
+ \enverb@rmeol
+ }}%
+ }
+%%
+%%
+%% End of file `enverb.sty'.
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/esami/esami.sty b/Master/texmf-dist/tex/latex/esami/esami.sty
index 12bf7613794..d1f8757d56d 100644
--- a/Master/texmf-dist/tex/latex/esami/esami.sty
+++ b/Master/texmf-dist/tex/latex/esami/esami.sty
@@ -145,6 +145,7 @@
% | PACKAGES |
% +=============================+
+\usepackage{tagpdf-base}
\usepackage{graphicx}
\usepackage{enumerate}
\usepackage[nomessages]{fp}
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-100euro.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-100euro.pdf
new file mode 100644
index 00000000000..6899f2b2d37
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-100euro.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-100eurosimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-100eurosimple.pdf
new file mode 100644
index 00000000000..b021e90c2b0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-100eurosimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-100eurosimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-100eurosimplebw.pdf
new file mode 100644
index 00000000000..e3777a5c9d6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-100eurosimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-10cent.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-10cent.pdf
new file mode 100644
index 00000000000..ddeac2a07f2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-10cent.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-10centsimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-10centsimple.pdf
new file mode 100644
index 00000000000..8fad414db21
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-10centsimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-10centsimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-10centsimplebw.pdf
new file mode 100644
index 00000000000..46bfac9dbcd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-10centsimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-10euro.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-10euro.pdf
new file mode 100644
index 00000000000..0c67ef49821
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-10euro.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-10eurosimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-10eurosimple.pdf
new file mode 100644
index 00000000000..b07568d6fb1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-10eurosimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-10eurosimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-10eurosimplebw.pdf
new file mode 100644
index 00000000000..24928b831b9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-10eurosimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-1cent.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-1cent.pdf
new file mode 100644
index 00000000000..bb9d01c1d49
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-1cent.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-1centsimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-1centsimple.pdf
new file mode 100644
index 00000000000..1b32b897836
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-1centsimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-1centsimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-1centsimplebw.pdf
new file mode 100644
index 00000000000..5db25de626d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-1centsimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-1euro.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-1euro.pdf
new file mode 100644
index 00000000000..48f184fa19f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-1euro.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-1eurosimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-1eurosimple.pdf
new file mode 100644
index 00000000000..8c34a155355
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-1eurosimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-1eurosimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-1eurosimplebw.pdf
new file mode 100644
index 00000000000..d5346534b47
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-1eurosimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-200euro.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-200euro.pdf
new file mode 100644
index 00000000000..dc2c56bfb0f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-200euro.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-200eurosimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-200eurosimple.pdf
new file mode 100644
index 00000000000..dde3d6f2bb9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-200eurosimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-200eurosimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-200eurosimplebw.pdf
new file mode 100644
index 00000000000..78f052bd57e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-200eurosimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-20cent.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-20cent.pdf
new file mode 100644
index 00000000000..28f5f255a40
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-20cent.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-20centsimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-20centsimple.pdf
new file mode 100644
index 00000000000..c101540707d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-20centsimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-20centsimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-20centsimplebw.pdf
new file mode 100644
index 00000000000..38b77e36715
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-20centsimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-20euro.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-20euro.pdf
new file mode 100644
index 00000000000..2e3f409943b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-20euro.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-20eurosimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-20eurosimple.pdf
new file mode 100644
index 00000000000..4aadb8a293e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-20eurosimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-20eurosimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-20eurosimplebw.pdf
new file mode 100644
index 00000000000..a855a3128cc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-20eurosimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-2cent.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-2cent.pdf
new file mode 100644
index 00000000000..cee0ca1ffa1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-2cent.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-2centsimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-2centsimple.pdf
new file mode 100644
index 00000000000..e68cc465607
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-2centsimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-2centsimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-2centsimplebw.pdf
new file mode 100644
index 00000000000..2857426e694
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-2centsimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-2euro.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-2euro.pdf
new file mode 100644
index 00000000000..02ad7cd0e54
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-2euro.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-2eurosimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-2eurosimple.pdf
new file mode 100644
index 00000000000..85ee0ccdbad
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-2eurosimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-2eurosimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-2eurosimplebw.pdf
new file mode 100644
index 00000000000..bc3d2d84474
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-2eurosimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-500euro.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-500euro.pdf
new file mode 100644
index 00000000000..7c2c721a4e8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-500euro.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-500eurosimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-500eurosimple.pdf
new file mode 100644
index 00000000000..719d51c8e70
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-500eurosimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-500eurosimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-500eurosimplebw.pdf
new file mode 100644
index 00000000000..0d1bba9565a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-500eurosimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-50cent.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-50cent.pdf
new file mode 100644
index 00000000000..12d3a85bd96
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-50cent.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-50centsimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-50centsimple.pdf
new file mode 100644
index 00000000000..6fee6a828a0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-50centsimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-50centsimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-50centsimplebw.pdf
new file mode 100644
index 00000000000..65776d5d24d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-50centsimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-50euro.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-50euro.pdf
new file mode 100644
index 00000000000..9d262592879
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-50euro.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-50eurosimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-50eurosimple.pdf
new file mode 100644
index 00000000000..08b128d03f0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-50eurosimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-50eurosimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-50eurosimplebw.pdf
new file mode 100644
index 00000000000..dc2c5acbcf7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-50eurosimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-5cent.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-5cent.pdf
new file mode 100644
index 00000000000..dfd4c98914b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-5cent.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-5centsimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-5centsimple.pdf
new file mode 100644
index 00000000000..c8c4fa6dafa
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-5centsimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-5centsimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-5centsimplebw.pdf
new file mode 100644
index 00000000000..f108cf065f6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-5centsimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-5euro.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-5euro.pdf
new file mode 100644
index 00000000000..9fdb0301b27
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-5euro.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-5eurosimple.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-5eurosimple.pdf
new file mode 100644
index 00000000000..5608fd30856
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-5eurosimple.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney-5eurosimplebw.pdf b/Master/texmf-dist/tex/latex/euromoney/euromoney-5eurosimplebw.pdf
new file mode 100644
index 00000000000..a670f2ac2fb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney-5eurosimplebw.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/euromoney/euromoney.sty b/Master/texmf-dist/tex/latex/euromoney/euromoney.sty
new file mode 100644
index 00000000000..b49337f4129
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/euromoney/euromoney.sty
@@ -0,0 +1,549 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c
+% or later, see http://www.latex-project.org/lppl.txtf
+% pdf from domain public svg (user frankes in openclipart), see https://openclipart.org/artist/frankes
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{euromoney}[2024/09/07 0.1.1 Insert Euro coins and banknotes]
+
+%------History
+% 0.1.1 New filenames, according to TL rules
+% 0.1.0 Initial version
+
+%------Packages
+\RequirePackage{xstring}
+\RequirePackage{simplekv}
+\RequirePackage{graphicx}
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\RequirePackage{listofitems}
+
+%------Lengths
+\newlength{\tmphautmonnaies}
+\setlength{\tmphautmonnaies}{1em}
+\newlength{\tmpoffsethmonnaies}
+\setlength{\tmpoffsethmonnaies}{0pt}
+\newlength{\tmpoffsetvmonnaies}
+\setlength{\tmpoffsetvmonnaies}{5mm}
+
+%------Keys [fr]
+\defKV[Monnaies]{%
+ HauteurRef=\setlength{\tmphautmonnaies}{#1},%
+ Style=\def\piecebilletstyle{#1},%
+ DecalH=\setlength{\tmpoffsethmonnaies}{#1},%
+ DecalV=\setlength{\tmpoffsetvmonnaies}{#1},%
+ Empilage=\def\piecebilletempilage{#1},%
+ Angle=\def\piecebilletrotation{#1}
+}
+
+\setKVdefault[Monnaies]{%
+ HauteurRef=2cm,%
+ Style=simple,%
+ HauteurAuto=false,%
+ DecalH=0pt,%
+ DecalV=5mm,%
+ Empilage=H,%
+ Angle=10
+}
+
+%------Keys [en]
+\defKV[Moneys]{%
+ RefHeight=\setlength{\tmphautmonnaies}{#1},%
+ Style=\def\piecebilletstyle{#1},%
+ OffsetH=\setlength{\tmpoffsethmonnaies}{#1},%
+ OffsetV=\setlength{\tmpoffsetvmonnaies}{#1},%
+ Stack=\def\piecebilletempilage{#1},%
+ Angle=\def\piecebilletrotation{#1}
+}
+
+\setKVdefault[Moneys]{%
+ RefHeight=2cm,%
+ Style=simple,%
+ AutoHeight=false,%
+ OffsetH=0pt,%
+ OffsetV=5mm,%
+ Stack=H,%
+ Angle=10
+}
+
+%-----Macros billet(s) [fr]
+\NewDocumentCommand\BilletEuro{ D<>{} O{} m }{%
+ \restoreKV[Monnaies]%
+ \setKV[Monnaies]{#1}%
+ \IfStrEqCase{\piecebilletstyle}{%
+ {simple}{\def\monnaiessuffixe{simple}}%
+ {full}{\def\monnaiessuffixe{}}%
+ {nb}{\def\monnaiessuffixe{simplebw}}%
+ }%
+ \includegraphics[#2]{euromoney-#3euro\monnaiessuffixe}%
+}
+
+\NewDocumentCommand\BilletsEuro{ O{} m }{%
+ \restoreKV[Monnaies]%
+ \setKV[Monnaies]{#1}%
+ \IfStrEqCase{\piecebilletstyle}{%
+ {simple}{\def\monnaiessuffixe{simple}}%
+ {full}{\def\monnaiessuffixe{}}%
+ {nb}{\def\monnaiessuffixe{simplebw}}%
+ }%
+ %affichage
+ \IfStrEq{\piecebilletempilage}{H}%empilage vertical
+ {%
+ \setsepchar{+}%
+ \readlist*\listetmppieces{#2}%
+ \xdef\nbempilagespieces{\listetmppieceslen}%
+ \ifdim\tmpoffsethmonnaies=0pt\relax%
+ \foreach \i in {1,...,\listetmppieceslen}{%
+ %on découpe l'empilage
+ \itemtomacro\listetmppieces[\i]{\tmpempilpieces}%
+ \IfSubStr{\tmpempilpieces}{*}%
+ {%
+ \StrCut{\tmpempilpieces}{*}{\tmpnbpieces}{\tmptypepieces}%
+ }%
+ {%
+ \xdef\tmpnbpieces{1}%
+ \xdef\tmptypepieces{\tmpempilpieces}%
+ }%
+ \IfStrEqCase{\tmptypepieces}{%
+ {500}{\def\monnaiessomme{500euro}}%
+ {200}{\def\monnaiessomme{200euro}}%
+ {100}{\def\monnaiessomme{100euro}}%
+ {50}{\def\monnaiessomme{50euro}}%
+ {20}{\def\monnaiessomme{20euro}}%
+ {10}{\def\monnaiessomme{10euro}}%
+ {5}{\def\monnaiessomme{5euro}}%
+ }%
+ \ifboolKV[Monnaies]{HauteurAuto}%
+ {%
+ \IfStrEqCase{\tmptypepieces}{%
+ {500}{\def\monnaiesechellerelative{1}}%
+ {200}{\def\monnaiesechellerelative{1}}%
+ {100}{\def\monnaiesechellerelative{1}}%
+ {50}{\def\monnaiesechellerelative{0.9390}}%
+ {20}{\def\monnaiesechellerelative{0.8780}}%
+ {10}{\def\monnaiesechellerelative{0.8171}}%
+ {5}{\def\monnaiesechellerelative{0.7561}}%
+ }%
+ }%
+ {%
+ \def\monnaiesechellerelative{1}%
+ }%
+ \begin{tikzpicture}
+ \foreach \i in {1,...,\tmpnbpieces}{%
+ \draw (0,{(\i-1)*\tmpoffsetvmonnaies}) node[anchor=south west,inner sep=0pt] {\includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}} ;%
+ }%
+ \end{tikzpicture}%
+ }%
+ \else%
+ \begin{tikzpicture}
+ \foreach \i in {1,...,\listetmppieceslen}{%
+ %on découpe l'empilage
+ \itemtomacro\listetmppieces[\i]{\tmpempilpieces}%
+ \IfSubStr{\tmpempilpieces}{*}%
+ {%
+ \StrCut{\tmpempilpieces}{*}{\tmpnbpieces}{\tmptypepieces}%
+ }%
+ {%
+ \xdef\tmpnbpieces{1}\xdef\tmptypepieces{\tmpempilpieces}%
+ }%
+ \IfStrEqCase{\tmptypepieces}{%
+ {500}{\def\monnaiessomme{500euro}}%
+ {200}{\def\monnaiessomme{200euro}}%
+ {100}{\def\monnaiessomme{100euro}}%
+ {50}{\def\monnaiessomme{50euro}}%
+ {20}{\def\monnaiessomme{20euro}}%
+ {10}{\def\monnaiessomme{10euro}}%
+ {5}{\def\monnaiessomme{5euro}}%
+ }%
+ \ifboolKV[Monnaies]{HauteurAuto}%
+ {%
+ \IfStrEqCase{\tmptypepieces}{%
+ {500}{\def\monnaiesechellerelative{1}}%
+ {200}{\def\monnaiesechellerelative{1}}%
+ {100}{\def\monnaiesechellerelative{1}}%
+ {50}{\def\monnaiesechellerelative{0.9390}}%
+ {20}{\def\monnaiesechellerelative{0.8780}}%
+ {10}{\def\monnaiesechellerelative{0.8171}}%
+ {5}{\def\monnaiesechellerelative{0.7561}}%
+ }%
+ }%
+ {%
+ \def\monnaiesechellerelative{1}%
+ }%
+ \foreach \ii in {1,...,\tmpnbpieces}{%
+ \draw ({(\i-1)*\tmpoffsethmonnaies},{(\ii-1)*\tmpoffsetvmonnaies}) node[anchor=south west,inner sep=0pt] {\includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}} ;%
+ }%
+ }%
+ \end{tikzpicture}%
+ \fi%
+ }%
+ {}%
+ \IfStrEq{\piecebilletempilage}{eventail}%empilage eventail
+ {%
+ \setsepchar{+}%
+ \readlist*\listbilletseventail{#2}%
+ \xdef\nbeventailbillets{\listbilletseventaillen}%
+ \begin{tikzpicture}
+ \foreach \i in {1,...,\nbeventailbillets}{%
+ \itemtomacro\listbilletseventail[\i]{\tmpempilpieces}%
+ \IfStrEqCase{\tmpempilpieces}{%
+ {500}{\def\monnaiesechellerelative{1}}%
+ {200}{\def\monnaiesechellerelative{1}}%
+ {100}{\def\monnaiesechellerelative{1}}%
+ {50}{\def\monnaiesechellerelative{0.9390}}%
+ {20}{\def\monnaiesechellerelative{0.8780}}%
+ {10}{\def\monnaiesechellerelative{0.8171}}%
+ {5}{\def\monnaiesechellerelative{0.7561}}%
+ }%
+ \IfStrEqCase{\tmpempilpieces}{%
+ {500}{\def\monnaiessomme{500euro}}%
+ {200}{\def\monnaiessomme{200euro}}%
+ {100}{\def\monnaiessomme{100euro}}%
+ {50}{\def\monnaiessomme{50euro}}%
+ {20}{\def\monnaiessomme{20euro}}%
+ {10}{\def\monnaiessomme{10euro}}%
+ {5}{\def\monnaiessomme{5euro}}%
+ }%
+ \ifboolKV[Monnaies]{HauteurAuto}%
+ {%
+ \IfStrEqCase{\tmpempilpieces}{%
+ {500}{\def\monnaiesechellerelative{1}}%
+ {200}{\def\monnaiesechellerelative{1}}%
+ {100}{\def\monnaiesechellerelative{1}}%
+ {50}{\def\monnaiesechellerelative{0.9390}}%
+ {20}{\def\monnaiesechellerelative{0.8780}}%
+ {10}{\def\monnaiesechellerelative{0.8171}}%
+ {5}{\def\monnaiesechellerelative{0.7561}}%
+ }%
+ }%
+ {%
+ \def\monnaiesechellerelative{1}%
+ }%
+ \draw ({-\i*\tmpoffsethmonnaies},{-\i*\tmpoffsetvmonnaies}) node[above right=0pt,inner sep=0pt,outer sep=0pt,rotate={\fpeval{90-0.5*\piecebilletrotation*\nbeventailbillets+(\i-1)*\piecebilletrotation}}] {\includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}} ;%
+ }%
+ \end{tikzpicture}%
+ }%
+ {}%
+}
+
+%-----Macros billet(s) [en]
+\NewDocumentCommand\EuroBanknote{ D<>{} O{} m }{%
+ \restoreKV[Moneys]%
+ \setKV[Moneys]{#1}%
+ \IfStrEqCase{\piecebilletstyle}{%
+ {simple}{\def\monnaiessuffixe{simple}}%
+ {full}{\def\monnaiessuffixe{}}%
+ {bw}{\def\monnaiessuffixe{simplebw}}%
+ }%
+ \includegraphics[#2]{#3euro\monnaiessuffixe}%
+}
+
+\NewDocumentCommand\EuroBanknotes{ O{} m }{%
+ \restoreKV[Moneys]%
+ \setKV[Moneys]{#1}%
+ \IfStrEqCase{\piecebilletstyle}{%
+ {simple}{\def\monnaiessuffixe{simple}}%
+ {full}{\def\monnaiessuffixe{}}%
+ {bw}{\def\monnaiessuffixe{simplebw}}%
+ }%
+ %affichage
+ \IfStrEq{\piecebilletempilage}{H}%empilage vertical
+ {%
+ \setsepchar{+}%
+ \readlist*\listetmppieces{#2}%
+ \xdef\nbempilagespieces{\listetmppieceslen}%
+ \ifdim\tmpoffsethmonnaies=0pt\relax%
+ \foreach \i in {1,...,\listetmppieceslen}{%
+ %on découpe l'empilage
+ \itemtomacro\listetmppieces[\i]{\tmpempilpieces}%
+ \IfSubStr{\tmpempilpieces}{*}%
+ {%
+ \StrCut{\tmpempilpieces}{*}{\tmpnbpieces}{\tmptypepieces}%
+ }%
+ {%
+ \xdef\tmpnbpieces{1}%
+ \xdef\tmptypepieces{\tmpempilpieces}%
+ }%
+ \IfStrEqCase{\tmptypepieces}{%
+ {500}{\def\monnaiessomme{500euro}}%
+ {200}{\def\monnaiessomme{200euro}}%
+ {100}{\def\monnaiessomme{100euro}}%
+ {50}{\def\monnaiessomme{50euro}}%
+ {20}{\def\monnaiessomme{20euro}}%
+ {10}{\def\monnaiessomme{10euro}}%
+ {5}{\def\monnaiessomme{5euro}}%
+ }%
+ \ifboolKV[Moneys]{AutoHeight}%
+ {%
+ \IfStrEqCase{\tmptypepieces}{%
+ {500}{\def\monnaiesechellerelative{1}}%
+ {200}{\def\monnaiesechellerelative{1}}%
+ {100}{\def\monnaiesechellerelative{1}}%
+ {50}{\def\monnaiesechellerelative{0.9390}}%
+ {20}{\def\monnaiesechellerelative{0.8780}}%
+ {10}{\def\monnaiesechellerelative{0.8171}}%
+ {5}{\def\monnaiesechellerelative{0.7561}}%
+ }%
+ }%
+ {%
+ \def\monnaiesechellerelative{1}%
+ }%
+ \begin{tikzpicture}
+ \foreach \i in {1,...,\tmpnbpieces}{%
+ \draw (0,{(\i-1)*\tmpoffsetvmonnaies}) node[anchor=south west,inner sep=0pt] {\includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}} ;%
+ }%
+ \end{tikzpicture}%
+ }%
+ \else%
+ \begin{tikzpicture}
+ \foreach \i in {1,...,\listetmppieceslen}{%
+ %on découpe l'empilage
+ \itemtomacro\listetmppieces[\i]{\tmpempilpieces}%
+ \IfSubStr{\tmpempilpieces}{*}%
+ {%
+ \StrCut{\tmpempilpieces}{*}{\tmpnbpieces}{\tmptypepieces}%
+ }%
+ {%
+ \xdef\tmpnbpieces{1}\xdef\tmptypepieces{\tmpempilpieces}%
+ }%
+ \IfStrEqCase{\tmptypepieces}{%
+ {500}{\def\monnaiessomme{500euro}}%
+ {200}{\def\monnaiessomme{200euro}}%
+ {100}{\def\monnaiessomme{100euro}}%
+ {50}{\def\monnaiessomme{50euro}}%
+ {20}{\def\monnaiessomme{20euro}}%
+ {10}{\def\monnaiessomme{10euro}}%
+ {5}{\def\monnaiessomme{5euro}}%
+ }%
+ \ifboolKV[Moneys]{AutoHeight}%
+ {%
+ \IfStrEqCase{\tmptypepieces}{%
+ {500}{\def\monnaiesechellerelative{1}}%
+ {200}{\def\monnaiesechellerelative{1}}%
+ {100}{\def\monnaiesechellerelative{1}}%
+ {50}{\def\monnaiesechellerelative{0.9390}}%
+ {20}{\def\monnaiesechellerelative{0.8780}}%
+ {10}{\def\monnaiesechellerelative{0.8171}}%
+ {5}{\def\monnaiesechellerelative{0.7561}}%
+ }%
+ }%
+ {%
+ \def\monnaiesechellerelative{1}%
+ }%
+ \foreach \ii in {1,...,\tmpnbpieces}{%
+ \draw ({(\i-1)*\tmpoffsethmonnaies},{(\ii-1)*\tmpoffsetvmonnaies}) node[anchor=south west,inner sep=0pt] {\includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}} ;%
+ }%
+ }%
+ \end{tikzpicture}%
+ \fi%
+ }%
+ {}%
+ \IfStrEq{\piecebilletempilage}{fan}%empilage eventail
+ {%
+ \setsepchar{+}%
+ \readlist*\listbilletseventail{#2}%
+ \xdef\nbeventailbillets{\listbilletseventaillen}%
+ \begin{tikzpicture}
+ \foreach \i in {1,...,\nbeventailbillets}{%
+ \itemtomacro\listbilletseventail[\i]{\tmpempilpieces}%
+ \IfStrEqCase{\tmpempilpieces}{%
+ {500}{\def\monnaiesechellerelative{1}}%
+ {200}{\def\monnaiesechellerelative{1}}%
+ {100}{\def\monnaiesechellerelative{1}}%
+ {50}{\def\monnaiesechellerelative{0.9390}}%
+ {20}{\def\monnaiesechellerelative{0.8780}}%
+ {10}{\def\monnaiesechellerelative{0.8171}}%
+ {5}{\def\monnaiesechellerelative{0.7561}}%
+ }%
+ \IfStrEqCase{\tmpempilpieces}{%
+ {500}{\def\monnaiessomme{500euro}}%
+ {200}{\def\monnaiessomme{200euro}}%
+ {100}{\def\monnaiessomme{100euro}}%
+ {50}{\def\monnaiessomme{50euro}}%
+ {20}{\def\monnaiessomme{20euro}}%
+ {10}{\def\monnaiessomme{10euro}}%
+ {5}{\def\monnaiessomme{5euro}}%
+ }%
+ \ifboolKV[Moneys]{AutoHeight}%
+ {%
+ \IfStrEqCase{\tmpempilpieces}{%
+ {500}{\def\monnaiesechellerelative{1}}%
+ {200}{\def\monnaiesechellerelative{1}}%
+ {100}{\def\monnaiesechellerelative{1}}%
+ {50}{\def\monnaiesechellerelative{0.9390}}%
+ {20}{\def\monnaiesechellerelative{0.8780}}%
+ {10}{\def\monnaiesechellerelative{0.8171}}%
+ {5}{\def\monnaiesechellerelative{0.7561}}%
+ }%
+ }%
+ {%
+ \def\monnaiesechellerelative{1}%
+ }%
+ \draw ({-\i*\tmpoffsethmonnaies},{-\i*\tmpoffsetvmonnaies}) node[above right=0pt,inner sep=0pt,outer sep=0pt,rotate={\fpeval{90-0.5*\piecebilletrotation*\nbeventailbillets+(\i-1)*\piecebilletrotation}}] {\includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}} ;%
+ }%
+ \end{tikzpicture}%
+ }%
+ {}%
+}
+
+%-----Macro pièces [fr]
+\NewDocumentCommand\PiecesEuro{ O{} m }{%
+ \restoreKV[Monnaies]%
+ \setKV[Monnaies]{#1}%
+ \IfStrEqCase{\piecebilletstyle}{%
+ {simple}{\def\monnaiessuffixe{simple}}%
+ {full}{\def\monnaiessuffixe{}}%
+ {nb}{\def\monnaiessuffixe{simplebw}}%
+ }%
+ %boucle
+ \setsepchar{+}%
+ \readlist*\listetmppieces{#2}%
+ \xdef\nbempilagespieces{\listetmppieceslen}%
+ \foreach \i in {1,...,\listetmppieceslen}{%
+ %on découpe l'empilage
+ \itemtomacro\listetmppieces[\i]{\tmpempilpieces}%
+ \IfSubStr{\tmpempilpieces}{*}%
+ {%
+ \StrCut{\tmpempilpieces}{*}{\tmpnbpieces}{\tmptypepieces}%
+ }%
+ {%
+ \xdef\tmptypepieces{\tmpempilpieces}%
+ }%
+ \IfStrEqCase{\tmptypepieces}{%
+ {2}{\def\monnaiessomme{2euro}}%
+ {1}{\def\monnaiessomme{1euro}}%
+ {0.5}{\def\monnaiessomme{50cent}}%
+ {0.2}{\def\monnaiessomme{20cent}}%
+ {0.1}{\def\monnaiessomme{10cent}}%
+ {0.05}{\def\monnaiessomme{5cent}}%
+ {0.02}{\def\monnaiessomme{2cent}}%
+ {0.01}{\def\monnaiessomme{1cent}}%
+ }%
+ \ifboolKV[Monnaies]{HauteurAuto}%
+ {%
+ \IfStrEqCase{\tmptypepieces}{%
+ {2}{\def\monnaiesechellerelative{1}}%
+ {1}{\def\monnaiesechellerelative{0.9029}}%
+ {0.5}{\def\monnaiesechellerelative{0.9417}}%
+ {0.2}{\def\monnaiesechellerelative{0.8641}}%
+ {0.1}{\def\monnaiesechellerelative{0.7670}}%
+ {0.05}{\def\monnaiesechellerelative{0.8252}}%
+ {0.02}{\def\monnaiesechellerelative{0.7282}}%
+ {0.01}{\def\monnaiesechellerelative{0.6311}}%
+ }%
+ }%
+ {%
+ \def\monnaiesechellerelative{1}%
+ }%
+ %affichage
+ \IfStrEq{\piecebilletempilage}{H}%
+ {%
+ \IfSubStr{\tmpempilpieces}{*}%
+ {%
+ \includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}%
+ \ifnum\tmpnbpieces=1\else%
+ \foreach \i in {1,...,\inteval{\tmpnbpieces-1}}{%
+ \ifdim\tmpoffsethmonnaies>0pt\relax\hspace*{\dimexpr\tmpoffsethmonnaies-\monnaiesechellerelative\tmphautmonnaies\relax}\fi%
+ \includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}%
+ }%
+ \fi%
+ }%
+ {%
+ \includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}%
+ }%
+ \ifnum\i<\listetmppieceslen%
+ \ifdim\tmpoffsethmonnaies>0pt\relax\hspace*{\dimexpr\tmpoffsethmonnaies-\monnaiesechellerelative\tmphautmonnaies\relax}%
+ \fi%
+ \fi%
+ }%
+ {%
+ \begin{tikzpicture}
+ \foreach \i in {1,...,\tmpnbpieces}{%
+ \draw (0,{(\i-1)*\tmpoffsetvmonnaies}) node[inner sep=0pt] {\includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}} ;%
+ }%
+ \end{tikzpicture}%
+ }%
+ }%
+}
+
+%-----Macro pièces [en]
+\NewDocumentCommand\EuroCoins{ O{} m }{%
+ \restoreKV[Moneys]%
+ \setKV[Moneys]{#1}%
+ \IfStrEqCase{\piecebilletstyle}{%
+ {simple}{\def\monnaiessuffixe{simple}}%
+ {full}{\def\monnaiessuffixe{}}%
+ {bw}{\def\monnaiessuffixe{simplebw}}%
+ }%
+ %boucle
+ \setsepchar{+}%
+ \readlist*\listetmppieces{#2}%
+ \xdef\nbempilagespieces{\listetmppieceslen}%
+ \foreach \i in {1,...,\listetmppieceslen}{%
+ %on découpe l'empilage
+ \itemtomacro\listetmppieces[\i]{\tmpempilpieces}%
+ \IfSubStr{\tmpempilpieces}{*}%
+ {%
+ \StrCut{\tmpempilpieces}{*}{\tmpnbpieces}{\tmptypepieces}%
+ }%
+ {%
+ \xdef\tmptypepieces{\tmpempilpieces}%
+ }%
+ \IfStrEqCase{\tmptypepieces}{%
+ {2}{\def\monnaiessomme{2euro}}%
+ {1}{\def\monnaiessomme{1euro}}%
+ {0.5}{\def\monnaiessomme{50cent}}%
+ {0.2}{\def\monnaiessomme{20cent}}%
+ {0.1}{\def\monnaiessomme{10cent}}%
+ {0.05}{\def\monnaiessomme{5cent}}%
+ {0.02}{\def\monnaiessomme{2cent}}%
+ {0.01}{\def\monnaiessomme{1cent}}%
+ }%
+ \ifboolKV[Moneys]{AutoHeight}%
+ {%
+ \IfStrEqCase{\tmptypepieces}{%
+ {2}{\def\monnaiesechellerelative{1}}%
+ {1}{\def\monnaiesechellerelative{0.9029}}%
+ {0.5}{\def\monnaiesechellerelative{0.9417}}%
+ {0.2}{\def\monnaiesechellerelative{0.8641}}%
+ {0.1}{\def\monnaiesechellerelative{0.7670}}%
+ {0.05}{\def\monnaiesechellerelative{0.8252}}%
+ {0.02}{\def\monnaiesechellerelative{0.7282}}%
+ {0.01}{\def\monnaiesechellerelative{0.6311}}%
+ }%
+ }%
+ {%
+ \def\monnaiesechellerelative{1}%
+ }%
+ %affichage
+ \IfStrEq{\piecebilletempilage}{H}%
+ {%
+ \IfSubStr{\tmpempilpieces}{*}%
+ {%
+ \includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}%
+ \ifnum\tmpnbpieces=1\else%
+ \foreach \i in {1,...,\inteval{\tmpnbpieces-1}}{%
+ \ifdim\tmpoffsethmonnaies>0pt\relax\hspace*{\dimexpr\tmpoffsethmonnaies-\monnaiesechellerelative\tmphautmonnaies\relax}\fi%
+ \includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}%
+ }%
+ \fi%
+ }%
+ {%
+ \includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}%
+ }%
+ \ifnum\i<\listetmppieceslen%
+ \ifdim\tmpoffsethmonnaies>0pt\relax\hspace*{\dimexpr\tmpoffsethmonnaies-\monnaiesechellerelative\tmphautmonnaies\relax}%
+ \fi%
+ \fi%
+ }%
+ {%
+ \begin{tikzpicture}
+ \foreach \i in {1,...,\tmpnbpieces}{%
+ \draw (0,{(\i-1)*\tmpoffsetvmonnaies}) node[inner sep=0pt] {\includegraphics[height=\dimexpr\monnaiesechellerelative\tmphautmonnaies\relax]{euromoney-\monnaiessomme\monnaiessuffixe}} ;%
+ }%
+ \end{tikzpicture}%
+ }%
+ }%
+}
+
+\endinput \ No newline at end of file
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/ezedits/ezedits.sty b/Master/texmf-dist/tex/latex/ezedits/ezedits.sty
new file mode 100644
index 00000000000..94a7b3bd5c5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/ezedits/ezedits.sty
@@ -0,0 +1,221 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% 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/09/12]
+
+% \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
+
+%% edit record
+\newcounter{ez@editcount}
+\newcounter{ez@totalcount}
+\gdef\ez@editrecord{}
+\newcommand{\ez@addeditpage}{%
+ \ifx\ez@lastpage\undefined% first edit
+ \xdef\ez@lastpage{\thepage}% initialize "last page" variable
+ % counter starts at 0, so it does not need to be updated
+ \else% 2nd+ edit
+ \if\ez@lastpage\thepage% same page as last edit
+ \relax% handled after if
+ \else% new page
+ % add record
+ \xdef\ez@editrecord{\ez@editrecord \ez@lastpage & \arabic{ez@editcount} \\}%
+ % reset counter/page number
+ \setcounter{ez@editcount}{0}%
+ \xdef\ez@lastpage{\thepage}%
+ \fi%
+ \fi%
+ % Note stepping needs to be "protected" (counters do not always like being changed, since this can mess up, e.g., TOC)
+ \protect\stepcounter{ez@editcount}% update counter
+ \protect\stepcounter{ez@totalcount}%
+}
+%TODO there is an issue with \thepage not always being accurate
+% Possible solution: use \label{} (with generated unique labels) and \pageref{} instead of \thepage.
+% -> This solution may cause out-of-order problems with floating images.
+
+\newcommand{\makeeditreport}{%
+ \begin{tabular}{l|r}
+ %\hline\hline
+ Page & \# edits/notes \\
+ \hline
+ \ifx\ez@lastpage\undefined
+ \relax% no edits
+ \else%
+ \ez@editrecord
+ \ez@lastpage & \arabic{ez@editcount}% current state
+ \fi \\
+ \hline
+ Total & \arabic{ez@totalcount}
+ %\hline\hline
+ \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.sty b/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty
index f42afc04fbd..ab4ea7b0745 100644
--- a/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty
+++ b/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty
@@ -21,7 +21,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{extramarks}
- [2024/04/23 v4.2
+ [2024/07/23 v4.3.1
Extra marks for LaTeX]
% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty b/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty
index f6ef0762fcd..9030da7b18c 100644
--- a/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty
+++ b/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty
@@ -21,7 +21,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fancyhdr}%
- [2024/04/23 v4.2
+ [2024/07/23 v4.3.1
Extensive control of page headers and footers]%
% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -129,10 +129,6 @@
}%
}
\ProcessOptions*
-\newcommand\f@nch@errmsg[1]{%
- \f@nch@ifundefined{PackageError}{\errmessage{#1}}{\PackageError{fancyhdr}{#1}{}}}
-\newcommand\f@nch@warning[1]{%
- \f@nch@ifundefined{PackageWarning}{\errmessage{#1}}{\PackageWarning{fancyhdr}{#1}{}}}
\newcommand{\f@nch@forc}[3]{\expandafter\f@nchf@rc\expandafter#1\expandafter{#2}{#3}}
\newcommand{\f@nchf@rc}[3]{\def\temp@ty{#2}\ifx\@empty\temp@ty\else
\f@nch@rc#1#2\f@nch@rc{#3}\fi}
@@ -157,7 +153,7 @@
\if@twoside\else
\iff@nch@twoside\else
\if\f@nch@@eo e%
- \f@nch@warning {\string#1's `E' option without twoside option is useless.\MessageBreak
+ \PackageWarning{fancyhdr} {\string#1's `E' option without twoside option is useless.\MessageBreak
Please consider using the `twoside' option}%
\fi\fi\fi
}
@@ -166,8 +162,8 @@
\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 \f@nch@errmsg{Illegal char `\temp@c' in
- \string#1 argument: [#3]}%
+ \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}%
@@ -183,8 +179,8 @@
\f@nch@forc\tmpf@ra{#3}%
{\expandafter\f@nch@ifin\tmpf@ra{eolrhf,EOLRHF}%
{}{\edef\temp@c{\temp@c\tmpf@ra}}}%
- \ifx\@empty\temp@c\else \f@nch@errmsg{Illegal char `\temp@c' in
- \string#1 argument: [#3]}%
+ \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}%
@@ -231,9 +227,25 @@
\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
+ }
+ \ExplSyntaxOff
+\else
+ \let\f@nch@everypar\everypar
+ \newcommand\f@nch@resetpar{%
+ \f@nch@everypar{}%
+ }
+\fi
\newcommand\f@nch@noUppercase[2][]{#2}
-\def\f@nch@reset{\f@nch@everypar{}\restorecr\endlinechar=13
+\def\f@nch@reset{\f@nch@resetpar\restorecr\endlinechar=13
\catcode`\\=0\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4
\catcode`\#=6\catcode`\^=7\catcode`\_=8\catcode`\ =10\catcode`\@=11
\catcode`\:=11\catcode`\~=13\catcode`\%=14
@@ -249,10 +261,8 @@
\expandafter\def\csname MakeUppercase\space\space\space\endcsname
[####1]####2{####2}%
##1}}%
- \f@nch@ifundefined{@newbaseline} % NFSS not present; 2.09 or 2e
- {\f@nch@ifundefined{@normalsize} {\normalsize} % for ucthesis.cls
- {\@normalsize}}%
- {\@newbaseline}% NFSS (2.09) present
+ \f@nch@ifundefined{@normalsize} {\normalsize} % for ucthesis.cls
+ {\@normalsize}%
}
\newcommand*{\fancycenter}[1][1em]{%
\@ifnextchar[{\f@nch@center{#1}}{\f@nch@center{#1}[3]}%
@@ -302,7 +312,7 @@
\ifdim\ht0>#1\relax
\iff@nch@check
\dimen0=#1\advance\dimen0-\ht0
- \f@nch@warning{%
+ \PackageWarning{fancyhdr}{%
\string#1 is too small (\the#1): \MessageBreak
Make it at least \the\ht0, for example:\MessageBreak
\string\setlength{\string#1}{\the\ht0}%
@@ -476,8 +486,8 @@
\def\@makecol{\ifvoid\footins\f@nch@footnotefalse\else\f@nch@footnotetrue\fi
\let\topfloat\@toplist\let\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\topfloat\@empty #2\else #1\fi}%
+\newcommand\ifbotfloat[2]{\ifx\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]{%
@@ -485,10 +495,10 @@
}
\long\def\f@nch@pagestyle#1[#2]#3{%
\f@nch@ifundefined{ps@#2}{%
- \f@nch@errmsg{\string\fancypagestyle: Unknown base page style `#2'}%
+ \PackageError{fancyhdr}{\string\fancypagestyle: Unknown base page style `#2'}{}%
}{%
\f@nch@ifundefined{f@nch@ps@#2-is-fancyhdr}{%
- \f@nch@errmsg{\string\fancypagestyle: Base page style `#2' is not fancyhdr-based}%
+ \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}%
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-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..200fa7f3719 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/10/05 version v2.1 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}
@@ -145,57 +150,63 @@
\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\@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 +274,15 @@
\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}}
+% \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%
+}%
+}
\def\fancyqrset#1{\setkeys{qr,fancyqr}{#1}}
\fancyqrset{image padding=0,gradient=true,gradient angle=135,r color=teal,l color=purple}
@@ -275,12 +295,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/fillwith/fillwith.sty b/Master/texmf-dist/tex/latex/fillwith/fillwith.sty
new file mode 100644
index 00000000000..9e15d13bf81
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/fillwith/fillwith.sty
@@ -0,0 +1,349 @@
+%%
+%% This is file `fillwith.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% fillwith.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
+%% fillwith. You may however distribute the package fillwith without
+%% such generated files.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[2021-11-15]
+\RequirePackage{svn-prov}
+\ProvidesPackageSVN[\filebase.sty]{$Id: fillwith.dtx 10202 2024-08-08 15:33:47Z cfrees $}[v0.0 \revinfo][\filebase: fill vertically with non-space]
+\DefineFileInfoSVN
+\RequirePackage{xcolor}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@ifundefined{ExplLoaderFileDate}{%
+ \RequirePackage{expl3}%
+}{}
+\@ifl@t@r\ExplLoaderFileDate{2022-02-24}{%
+}{%
+ \PackageError{fillwith}{Support package expl3 too old}
+ {%
+ You need to update your installation of the bundles 'l3kernel' and
+ 'l3packages'.\MessageBreak
+ Loading~fillwith~will~abort!%
+ }%
+ \endinput
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ExplSyntaxOn
+\prop_gput:Nnn \g_msg_module_name_prop { fillwith } { fillwith }
+
+
+\keys_define:nn { fillwith }
+{
+ color .meta:n = {
+ colour = #1,
+ },
+ colour .code:n = {
+ \colorlet{fillwithcolour}{#1}
+ },
+ dotted ~ color .meta:n = {
+ dotted colour = #1,
+ },
+ dotted color .meta:n = {
+ dotted colour = #1,
+ },
+ dotted ~ colour .meta:n = {
+ dotted colour = #1,
+ },
+ dotted colour .code:n = {
+ \colorlet{fillwithdottedcolour}{#1}
+ },
+ lliw .meta:n = {
+ colour = #1,
+ },
+ colour .initial:n = gray,
+ dotted colour .initial:n = black,
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
+\IfFormatAtLeastTF { 2022-06-01 }
+{
+ \ProcessKeyOptions [ fillwith ]
+}{
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { fillwith }
+}
+\IfFormatAtLeastTF { 2020-10-01 }{
+}{
+ \RequirePackage { xparse }
+ \providecommand \ExpandArgs [1]
+ { \cs_if_exist_use:c { exp_args:N #1 } }
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\box_new:N \l__fillwith_adj_rule_box
+\box_new:N \l__fillwith_part_rule_box
+\box_new:N \l__fillwith_tmpa_box
+\box_new:N \l__fillwith_tmpb_box
+\coffin_new:N \l__fillwith_line_coffin
+\coffin_new:N \l__fillwith_lines_coffin
+\coffin_new:N \l__fillwith_part_coffin
+\coffin_new:N \l__fillwith_tmpa_coffin
+\dim_new:N \l__fillwith_ht_dim
+\dim_new:N \l__fillwith_dp_dim
+\dim_new:N \l__fillwith_rem_dim
+\dim_new:N \l__fillwith_line_ht_dim
+\dim_new:N \l__fillwith_line_adj_hsize_dim
+\dim_set:Nn \l__fillwith_line_ht_dim { 0.4pt }
+\dim_new:N \l__fillwith_line_madj_dim
+\dim_new:N \l__fillwith_line_vadj_dim
+\dim_set_eq:NN \l__fillwith_line_vadj_dim \c_zero_dim
+\dim_new:N \l__fillwith_goal_dim
+\dim_new:N \l__fillwith_tmpa_dim
+\int_new:N \g__fillwith_cnt_int
+\cs_new_protected_nopar:Nn \__fillwith_style: {}
+\cs_new_protected_nopar:Nn \__fillwith_coffin_tht:N
+{
+ \dim_eval:n { \coffin_ht:N #1 + \coffin_dp:N #1 }
+}
+\cs_new_protected_nopar:Npn \__fillwith_hrulefill_part:
+{
+ \vrule height \c_zero_dim depth \l__fillwith_line_ht_dim width 0.1pt
+}
+\cs_new_protected_nopar:Npn \__fillwith_hrulefill:
+{
+ \vrule height \c_zero_dim depth \l__fillwith_line_ht_dim width \l__fillwith_line_adj_hsize_dim
+}
+\cs_new_protected_nopar:Npn \__fillwith_dottedfill_part:
+{
+ \hbox to 0.33em {\hss .\hss}
+}
+\cs_new_protected_nopar:Npn \__fillwith_dottedfill:
+{
+ \leaders \hbox to 0.33em {\hss .\hss} \hfill \kern \c_zero_dim
+}
+\NewDocumentCommand\fillwithset { +m }{
+ \keys_set:nn { fillwith } { #1 }
+}
+\keys_define:nn { fillwith }
+{
+ cont .bool_set:N = \l__fillwith_cont_bool,
+ cont .default:n = true,
+ cont .initial:n = false,
+ fillwith~ht .tl_set:N = \l__fillwith_ht_tl,
+ fillwith~ht .initial:n = 2,
+ fillwith~ht .default:n = 2,
+ goal ~ ht .dim_set:N = \l__fillwith_goal_dim,
+ line nos .bool_set:N = \l__fillwith_nos_bool,
+ line ~ nos .bool_set:N = \l__fillwith_nos_bool,
+ line ~ nos .default:n = true,
+ line ~ nos .initial:n = false,
+ no ~ font .tl_set:N = \l__fillwith_no_font_tl,
+ no ~ font .initial:n = { \normalfont\normalsize },
+ no ~ font .default:n = { \normalfont\normalsize },
+ style .choices:nn =
+ {
+ rule, dots , line , lines , rules , unknown
+ }{
+ \if_case:w \l_keys_choice_int
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_hrulefill:
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_dottedfill:
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_hrulefill:
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_hrulefill:
+ \or: \cs_set_eq:NN \__fillwith_style: \__fillwith_hrulefill:
+ \else: \cs_set_protected_nopar:Nn \__fillwith_style: { \use:c { \l_keys_choice_tl } }
+ \fi:
+ \if_case:w \l_keys_choice_int
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_hrulefill_part:
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_dottedfill_part:
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_hrulefill_part:
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_hrulefill_part:
+ \or: \cs_set_eq:NN \__fillwith_style_part: \__fillwith_hrulefill_part:
+ \else: \cs_set_protected_nopar:Nn \__fillwith_style_part: { \use:c { \l_keys_choice_tl part } }
+ \fi:
+ },
+ style .default:n = dots,
+ style .initial:n = dots,
+}
+\cs_new_protected_nopar:Nn \__fillwith_fill:
+{
+ \__fillwith_measures:
+ \dim_set:Nn \l__fillwith_line_adj_hsize_dim { \hsize - \@totalleftmargin }
+ \vbox_set:Nn \l__fillwith_adj_rule_box
+ {
+ \parindent=0pt
+ \vrule height \l__fillwith_ht_dim depth \l__fillwith_dp_dim width \c_zero_dim
+ \skip_horizontal:n { \@totalleftmargin }
+ \__fillwith_style:
+ }
+ \if_mode_horizontal:
+ \bool_if:NT \l__fillwith_cont_bool
+ {
+ \leaders \box_use:N \l__fillwith_part_rule_box \hfill \kern \c_zero_dim
+ }{
+ \vrule height \l__fillwith_ht_dim depth \l__fillwith_dp_dim width \c_zero_dim
+ }
+ %^^A gweithio ond erbyn y rheolau
+ %^^A byddai'n achosi draferth, siwr o fod
+ % \tex_par:D
+ %^^A yn lle hynny, ceisio hyn - oes perygl hefyd?
+ \para_raw_end:
+ \else:
+ \unskip
+ \skip_vertical:n { \l__fillwith_dp_dim }
+ \fi:
+ \xleaders \box_use:N \l__fillwith_adj_rule_box \vfill
+ \para_end:
+ \normalcolor
+}
+\cs_new_protected_nopar:Nn \__fillwith_measures:
+{
+ \color{fillwithcolour}
+ \offinterlineskip
+ \hbox_set:Nn \l__fillwith_part_rule_box
+ {
+ \strut
+ \__fillwith_style_part:
+ \kern \c_zero_dim
+ }
+ \dim_set:Nn \l__fillwith_tmpa_dim { \box_ht:N \l__fillwith_part_rule_box }
+ \dim_set:Nn \l__fillwith_ht_dim { \l__fillwith_ht_tl \l__fillwith_tmpa_dim }
+ \box_set_ht:Nn \l__fillwith_part_rule_box { \l__fillwith_ht_dim }
+ \dim_set:Nn \l__fillwith_tmpa_dim { \box_dp:N \l__fillwith_part_rule_box }
+ % neu \fp_to_dim:n { \l__fillwith_ht_tl * \l__fillwith_tmpa_dim } ??
+ \dim_set:Nn \l__fillwith_dp_dim { \l__fillwith_ht_tl \l__fillwith_tmpa_dim }
+ \box_set_dp:Nn \l__fillwith_part_rule_box { \l__fillwith_dp_dim }
+}
+\NewDocumentCommand \fillwith { s o }
+{
+ \group_begin:
+ \IfValueT { #2 }
+ {
+ \keys_set:nn { fillwith } { #2 }
+ }
+ \IfBooleanTF { #1 }
+ {
+ \bool_set_true:N \l__fillwith_cont_bool
+ }{
+ \bool_set_false:N \l__fillwith_cont_bool
+ }
+ \__fillwith_fill:
+ \group_end:
+}
+\NewDocumentCommand \fillwithrules { s O { 2 } }
+{
+ \group_begin:
+ \IfBooleanTF { #1 }
+ {
+ \bool_set_true:N \l__fillwith_cont_bool
+ }{
+ \bool_set_false:N \l__fillwith_cont_bool
+ }
+ \keys_set:nn { fillwith } { style = rules, fillwith~ht=#2 }
+ \__fillwith_fill:
+ \group_end:
+}
+\NewDocumentCommand \fillwithdottedlines { s O { 2 } }
+{
+ \group_begin:
+ \IfBooleanTF { #1 }
+ {
+ \bool_set_true:N \l__fillwith_cont_bool
+ }{
+ \bool_set_false:N \l__fillwith_cont_bool
+ }
+ \colorlet{fillwithcolour}{fillwithdottedcolour}
+ \keys_set:nn { fillwith } { style = dots, fillwith~ht=#2 }
+ \__fillwith_fill:
+ \group_end:
+}
+\cs_new_protected:Nn \__fillwith_nos: % rhybudd: ARAF ! SLOW!
+{
+ \parindent=0pt
+ \__fillwith_measures:
+ \dim_set_eq:NN \l__fillwith_line_adj_hsize_dim \linewidth
+ \vcoffin_set:Nnn \l__fillwith_line_coffin { \l__fillwith_line_adj_hsize_dim }
+ {
+ \parindent=0pt
+ \vrule height \l__fillwith_ht_dim depth \l__fillwith_dp_dim width \c_zero_dim
+ \skip_horizontal:n \c_zero_skip
+ \__fillwith_style:
+ }
+ \coffin_set_eq:NN \l__fillwith_lines_coffin \l__fillwith_line_coffin
+ \if_mode_horizontal:
+ \bool_if:NTF \l__fillwith_cont_bool
+ {
+ \leaders \box_use:N \l__fillwith_part_rule_box \hfill \kern \c_zero_dim
+ \int_gincr:N \g__fillwith_cnt_int
+ % \vcoffin_set:Nnn \l__fillwith_tmpa_coffin { 1.5em}
+ % {
+ % \l__fillwith_no_font_tl \int_to_arabic:n { \g__fillwith_cnt_int }
+ % }
+ % \coffin_mark_handle:Nnnn \l__fillwith_tmpa_coffin {B} {l} { red }
+ % \coffin_mark_handle:Nnnn \l__fillwith_tmpa_coffin {b} {l} { green }
+ % \coffin_attach:NnnNnnnn \l__fillwith_lines_coffin {B} {r} \l__fillwith_tmpa_coffin {B} {l} {2.5pt} { \l__fillwith_ht_dim + \l__fillwith_dp_dim }
+ % \coffin_mark_handle:Nnnn \l__fillwith_lines_coffin {T} {r} { blue }
+ % \coffin_mark_handle:Nnnn \l__fillwith_lines_coffin {t} {r} { magenta }
+ \dim_set:Nn \l__fillwith_line_vadj_dim { \l__fillwith_dp_dim }
+ }{
+ \vrule height \l__fillwith_ht_dim depth \l__fillwith_dp_dim width \c_zero_dim
+ }
+ \dim_set:Nn \l__fillwith_line_madj_dim { \@totalleftmargin }
+ \para_raw_end:
+ \else:
+ \dim_set_eq:NN \l__fillwith_line_madj_dim \c_zero_dim
+ \unskip
+ \skip_vertical:n { \l__fillwith_dp_dim }
+ \fi:
+ \int_gincr:N \g__fillwith_cnt_int
+ \vcoffin_set:Nnn \l__fillwith_tmpa_coffin { 1.5em}
+ {
+ \l__fillwith_no_font_tl \int_to_arabic:n { \g__fillwith_cnt_int }
+ }
+ \coffin_attach:NnnNnnnn \l__fillwith_lines_coffin {B} {r} \l__fillwith_tmpa_coffin {B} {l} {2.5pt} {\c_zero_dim}
+ \dim_set:Nn \l__fillwith_rem_dim
+ {
+ \l__fillwith_goal_dim -\footskip - \pagetotal
+ }
+ \dim_until_do:nNnn { \__fillwith_coffin_tht:N \l__fillwith_lines_coffin } > { \l__fillwith_rem_dim - \l__fillwith_ht_dim - \l__fillwith_dp_dim }
+ {
+ \coffin_join:NnnNnnnn \l__fillwith_lines_coffin { b } { l } \l__fillwith_line_coffin { t } { l } { \c_zero_dim } { \c_zero_dim }
+ \int_gincr:N \g__fillwith_cnt_int
+ \vcoffin_set:Nnn \l__fillwith_tmpa_coffin {1.5em}
+ {
+ \l__fillwith_no_font_tl \int_to_arabic:n { \g__fillwith_cnt_int }
+ }
+ \coffin_attach:NnnNnnnn \l__fillwith_lines_coffin {B} {r} \l__fillwith_tmpa_coffin {B} {l} {2.5pt} {\c_zero_dim}
+ }
+ \coffin_typeset:Nnnnn \l__fillwith_lines_coffin { B } { l } { \l__fillwith_line_madj_dim } { \l__fillwith_line_vadj_dim }
+ \para_end:
+ \normalcolor
+}
+\NewDocumentCommand \fillwithnolines { s O { } }
+{
+ \group_begin:
+ \IfBooleanTF { #1 }
+ {
+ \bool_set_true:N \l__fillwith_cont_bool
+ }{
+ \bool_set_false:N \l__fillwith_cont_bool
+ }
+ \keys_set:nn { fillwith } { goal ~ ht = \pagegoal, #2 }
+ \__fillwith_nos:
+ \group_end:
+}
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `fillwith.sty'.
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 d2317b204af..5c9dc62b9b9 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/03/20}
-\def\LaTeXFirstAidVersion{v1.1e}
+\def\LaTeXFirstAidDate{2024/10/16}
+\def\LaTeXFirstAidVersion{v1.1g}
\ProvidesFile{latex2e-first-aid-for-external-files.ltx}
[\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space
LaTeX kernel fixes to external files and packages]
@@ -228,8 +228,41 @@
{[\@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
+ }
+ \AddToHook{label}[firstaid/cleveref]
+ {\ifx
+ \@currentcounter\@empty
+ \else
+ \firstaid@cref@updatelabeldata{\@currentcounter}
+ \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/fmtcount/fc-UKenglish.def b/Master/texmf-dist/tex/latex/fmtcount/fc-UKenglish.def
index f5b00b73e6c..0684f24160c 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-UKenglish.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-UKenglish.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-UKenglish.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-USenglish.def b/Master/texmf-dist/tex/latex/fmtcount/fc-USenglish.def
index 70c269f6d33..44adcd24081 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-USenglish.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-USenglish.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-USenglish.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-american.def b/Master/texmf-dist/tex/latex/fmtcount/fc-american.def
index 7b42aac4fe4..7110cffe419 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-american.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-american.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-american.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-brazilian.def b/Master/texmf-dist/tex/latex/fmtcount/fc-brazilian.def
index 5f0706a0885..160168c5b82 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-brazilian.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-brazilian.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-brazilian.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-british.def b/Master/texmf-dist/tex/latex/fmtcount/fc-british.def
index 7aaaa6afa0a..8cd55dce78a 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-british.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-british.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-british.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/regulatory/fc-dutch.def b/Master/texmf-dist/tex/latex/fmtcount/fc-dutch.def
index ee86d49a48c..78560f50401 100644
--- a/Master/texmf-dist/tex/latex/regulatory/fc-dutch.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-dutch.def
@@ -1,25 +1,57 @@
-%% fc-dutch.def
-%% Copyright 2024 E. Nijenhuis
-%
-% 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 E. Nijenhuis.
-%
-% This work consists of the files regulatory.tex,
-% regulatory-preamble.tex, regulatory-nl.tex, regulatory-en.tex,
-% example1.bib, example2.bib,
-% example1-nl.tex, example2-nl.tex,
-% example1-en.tex, example2-en.tex,
-% md-example.tex, example.md,
-% fc-dutch.def and regulatory.sty
+%%
+%% This is file `fc-dutch.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% fmtcount.dtx (with options: `fc-dutch.def,package')
+%%
+%% fmtcount.dtx
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
+%%
+%% 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 and Vincent Belaïche.
+%%
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\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 \~}
+%%\subsection{Prefixes}
+%%\label{sec:latin-prefixes}
+%%
+%%\begin{definition}[\DescribeMacro{\latinnumeralstring}]
+%%\cs{latinnumeralstring}\marg{counter}\oarg{prefix options}
+%%\end{definition}
+%%
+%%\begin{definition}[\DescribeMacro{\latinnumeralstringnum}]
+%%\cs{latinnumeralstringnum}\marg{number}\oarg{prefix options}
+%%\end{definition}
+%% Local Variables:
+%% coding: utf-8
+%% compile-command: "make -C ../dist fmtcount.pdf"
+%% End:
\ProvidesFCLanguage{dutch}[2024/01/27]%
\newcommand{\@ordinalMdutch}[2]{\edef#2{\number#1\relax.}}%
\global\let\@ordinalMdutch\@ordinalMdutch
@@ -28,7 +60,7 @@
\newcommand*\@@unitstringdutch[1]{%
\ifcase#1%
nul%
- \or een%
+ \or een% één and \'e\'en not working atm
\or twee%
\or drie%
\or vier%
@@ -117,7 +149,7 @@
\def#2{null}%
\else
\ifnum\@strctr=1\relax
- \appto#2{een}%
+ \appto#2{een}% één and \'e\'en not working atm
\else
\@@numberunderhundreddutch{\@strctr}{#2}%
\fi
@@ -129,7 +161,6 @@
\let\@teenstring=\@@teenstringdutch%
\let\@tenstring=\@@tenstringdutch%
\def\@hundred{honderd}\def\@thousand{duizend}%
- \def\@andname{en}%
\@@numberstringdutch{#1}{#2}%
}%
\global\let\@numberstringMdutch\@numberstringMdutch
@@ -145,7 +176,7 @@
\newcommand*\@@unitthstringdutch[1]{%
\ifcase#1%
nulde%
- \or eerste%
+ \or eerste% éérste and \'e\'erste not working atm
\or tweede%
\or derde%
\or vierde%
@@ -269,7 +300,6 @@
\global\let\@ordinalstringNdutch=\@ordinalstringMdutch
\newcommand*{\@OrdinalstringMdutch}[2]{%
\@ordinalstringMdutch{#1}{\@@num@str}%
- \def\@andname{en}%
\def\@hundred{Honderd}\def\@thousand{Duizend}%
\def\@hundredth{Honderdste}\def\@thousandth{Duizendste}%
\edef#2{\noexpand\MakeUppercase\expandonce\@@num@str}%
@@ -290,7 +320,11 @@
\else
\ifnum\@tmpstrctr=0\relax
\else
- \eappto#2{\@unitstring{\@tmpstrctr}en}%
+ \ifnum\@tmpstrctr=2\relax\def\@andname{ën}%
+ \else\ifnum\@tmpstrctr=3\relax\def\@andname{ën}%
+ \else\def\@andname{en}%
+ \fi\fi%
+ \eappto#2{\@unitstring{\@tmpstrctr}\@andname}%
\fi
\@tmpstrctr=#1\relax
\divide\@tmpstrctr by 10\relax
@@ -310,7 +344,11 @@
\else
\ifnum\@tmpstrctr=0\relax
\else
- \eappto#2{\@unitstring{\@tmpstrctr}-en-}%
+ \ifnum\@tmpstrctr=2\relax\def\@andname{ën}%
+ \else\ifnum\@tmpstrctr=3\relax\def\@andname{ën}%
+ \else\def\@andname{en}%
+ \fi\fi%
+ \eappto#2{\@unitstring{\@tmpstrctr}\@andname}%
\fi
\@tmpstrctr=#1\relax
\divide\@tmpstrctr by 10\relax
diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-english.def b/Master/texmf-dist/tex/latex/fmtcount/fc-english.def
index d6bd6a80a4f..cfd2c710e83 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-english.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-english.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-english.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-francais.def b/Master/texmf-dist/tex/latex/fmtcount/fc-francais.def
index 2e0cbb2eb8b..e7ade01d59d 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-francais.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-francais.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-francais.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-french.def b/Master/texmf-dist/tex/latex/fmtcount/fc-french.def
index 3247cd15851..ea963b6b57a 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-french.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-french.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-french.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -52,7 +52,7 @@
%% coding: utf-8
%% compile-command: "make -C ../dist fmtcount.pdf"
%% End:
-\ProvidesFCLanguage{french}[2020/02/24]%
+\ProvidesFCLanguage{french}[2017/06/15]%
\ifcsundef{fc@gl@let}{\global\let\fc@gl@let\let}{\PackageError{fmtcount}{Command already defined}{Command
\protect\fc@gl@let\space already defined.}}
\ifcsundef{fc@gl@def}{\global\let\fc@gl@def\def}{\PackageError{fmtcount}{Command already defined}{Command
diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-frenchb.def b/Master/texmf-dist/tex/latex/fmtcount/fc-frenchb.def
index 3eb9c340033..7f10f3a1aac 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-frenchb.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-frenchb.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-frenchb.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-german.def b/Master/texmf-dist/tex/latex/fmtcount/fc-german.def
index 3a44772de68..e0fa469a7df 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-german.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-german.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-german.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -72,7 +72,7 @@
\or zwei%
\or drei%
\or vier%
- \or f\"unf%
+ \or fünf%
\or sechs%
\or sieben%
\or acht%
@@ -84,9 +84,9 @@
\ifcase#1%
\or zehn%
\or zwanzig%
- \or drei{\ss}ig%
+ \or dreißig%
\or vierzig%
- \or f\"unfzig%
+ \or fünfzig%
\or sechzig%
\or siebzig%
\or achtzig%
@@ -103,10 +103,10 @@
\ifcase#1%
zehn%
\or elf%
- \or zw\"olf%
+ \or zwölf%
\or dreizehn%
\or vierzehn%
- \or f\"unfzehn%
+ \or fünfzehn%
\or sechzehn%
\or siebzehn%
\or achtzehn%
@@ -188,7 +188,7 @@
\or zweiter%
\or dritter%
\or vierter%
- \or f\"unfter%
+ \or fünfter%
\or sechster%
\or siebter%
\or achter%
@@ -200,9 +200,9 @@
\ifcase#1%
\or zehnter%
\or zwanzigster%
- \or drei{\ss}igster%
+ \or dreißigster%
\or vierzigster%
- \or f\"unfzigster%
+ \or fünfzigster%
\or sechzigster%
\or siebzigster%
\or achtzigster%
@@ -214,10 +214,10 @@
\ifcase#1%
zehnter%
\or elfter%
- \or zw\"olfter%
+ \or zwölfter%
\or dreizehnter%
\or vierzehnter%
- \or f\"unfzehnter%
+ \or fünfzehnter%
\or sechzehnter%
\or siebzehnter%
\or achtzehnter%
@@ -232,7 +232,7 @@
\or zweite%
\or dritte%
\or vierte%
- \or f\"unfte%
+ \or fünfte%
\or sechste%
\or siebte%
\or achte%
@@ -244,9 +244,9 @@
\ifcase#1%
\or zehnte%
\or zwanzigste%
- \or drei{\ss}igste%
+ \or dreißigste%
\or vierzigste%
- \or f\"unfzigste%
+ \or fünfzigste%
\or sechzigste%
\or siebzigste%
\or achtzigste%
@@ -258,10 +258,10 @@
\ifcase#1%
zehnte%
\or elfte%
- \or zw\"olfte%
+ \or zwölfte%
\or dreizehnte%
\or vierzehnte%
- \or f\"unfzehnte%
+ \or fünfzehnte%
\or sechzehnte%
\or siebzehnte%
\or achtzehnte%
@@ -276,7 +276,7 @@
\or zweites%
\or drittes%
\or viertes%
- \or f\"unftes%
+ \or fünftes%
\or sechstes%
\or siebtes%
\or achtes%
@@ -288,9 +288,9 @@
\ifcase#1%
\or zehntes%
\or zwanzigstes%
- \or drei{\ss}igstes%
+ \or dreißigstes%
\or vierzigstes%
- \or f\"unfzigstes%
+ \or fünfzigstes%
\or sechzigstes%
\or siebzigstes%
\or achtzigstes%
@@ -302,10 +302,10 @@
\ifcase#1%
zehntes%
\or elftes%
- \or zw\"olftes%
+ \or zwölftes%
\or dreizehntes%
\or vierzehntes%
- \or f\"unfzehntes%
+ \or fünfzehntes%
\or sechzehntes%
\or siebzehntes%
\or achtzehntes%
diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-germanb.def b/Master/texmf-dist/tex/latex/fmtcount/fc-germanb.def
index 45a5602b3a1..9d3c339e61d 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-germanb.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-germanb.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-germanb.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-italian.def b/Master/texmf-dist/tex/latex/fmtcount/fc-italian.def
index 16fe43e5eac..1b43776faf4 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-italian.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-italian.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-italian.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -57,42 +57,79 @@
\RequirePackage{itnumpar}
\newcommand{\@numberstringMitalian}[2]{%
- \edef#2{\noexpand\printnumeroinparole{#1}}%
+ \begingroup
+ \def\np@oa{o}%
+ \count@=#1
+ \edef\@tempa{\def\noexpand#2{\@numeroinparole{\count@}}}%
+ \expandafter
+ \endgroup\@tempa
}
\global\let\@numberstringMitalian\@numberstringMitalian
\newcommand{\@numberstringFitalian}[2]{%
- \edef#2{\noexpand\printnumeroinparole{#1}}}
+ \begingroup
+ \def\np@oa{a}%
+ \count@=#1
+ \edef\@tempa{\def\noexpand#2{\@numeroinparole{\count@}}}%
+ \expandafter
+ \endgroup\@tempa
+}
\global\let\@numberstringFitalian\@numberstringFitalian
\newcommand{\@NumberstringMitalian}[2]{%
- \edef#2{\noexpand\printNumeroinparole{#1}}%
+ \begingroup
+ \def\np@oa{o}%
+ \count@=#1
+ \edef\@tempa{\def\noexpand#2{\@Numeroinparole{\count@}}}%
+ \expandafter
+ \endgroup\@tempa
}
\global\let\@NumberstringMitalian\@NumberstringMitalian
\newcommand{\@NumberstringFitalian}[2]{%
- \edef#2{\noexpand\printNumeroinparole{#1}}%
+ \begingroup
+ \def\np@oa{a}%
+ \count@=#1
+ \edef\@tempa{\def\noexpand#2{\@Numeroinparole{\count@}}}%
+ \expandafter
+ \endgroup\@tempa
}
\global\let\@NumberstringFitalian\@NumberstringFitalian
\newcommand{\@ordinalstringMitalian}[2]{%
- \edef#2{\noexpand\printordinalem{#1}}%
+ \begingroup
+ \count@=#1
+ \edef\@tempa{\def\noexpand#2{\@ordinalem{\count@}}}%
+ \expandafter
+ \endgroup\@tempa
}
\global\let\@ordinalstringMitalian\@ordinalstringMitalian
\newcommand{\@ordinalstringFitalian}[2]{%
- \edef#2{\noexpand\printordinalef{#1}}%
+ \begingroup
+ \count@=#1
+ \edef\@tempa{\def\noexpand#2{\@ordinalef{\count@}}}%
+ \expandafter
+ \endgroup\@tempa
}
\global\let\@ordinalstringFitalian\@ordinalstringFitalian
\newcommand{\@OrdinalstringMitalian}[2]{%
- \edef#2{\noexpand\printOrdinalem{#1}}%
+ \begingroup
+ \count@=#1
+ \edef\@tempa{\def\noexpand#2{\@Ordinalem{\count@}}}%
+ \expandafter
+ \endgroup\@tempa
}
\global\let\@OrdinalstringMitalian\@OrdinalstringMitalian
\newcommand{\@OrdinalstringFitalian}[2]{%
- \edef#2{\noexpand\printOrdinalef{#1}}%
+ \begingroup
+ \count@=#1
+ \edef\@tempa{\def\noexpand#2{\@Ordinalef{\count@}}}%
+ \expandafter
+ \endgroup\@tempa
}
\global\let\@OrdinalstringFitalian\@OrdinalstringFitalian
diff --git a/Master/texmf-dist/tex/latex/fmtcount/fc-ngerman.def b/Master/texmf-dist/tex/latex/fmtcount/fc-ngerman.def
index 27a65543963..a25ce620709 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-ngerman.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-ngerman.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-ngerman.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-ngermanb.def b/Master/texmf-dist/tex/latex/fmtcount/fc-ngermanb.def
index c6797d56884..dc2048c7960 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-ngermanb.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-ngermanb.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-ngermanb.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-portuges.def b/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def
index 0a5e7fa968b..b561b1025a1 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-portuges.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-portuges.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -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/fc-portuguese.def b/Master/texmf-dist/tex/latex/fmtcount/fc-portuguese.def
index 480bf186075..864bf58ad2c 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-portuguese.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-portuguese.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-portuguese.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fc-spanish.def b/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def
index 4ac3cf1f359..78887dd24d8 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def
+++ b/Master/texmf-dist/tex/latex/fmtcount/fc-spanish.def
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fc-spanish.def,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -115,7 +115,7 @@
\or trece%
\or catorce%
\or quince%
- \or diecis\'eis%
+ \or dieciséis%
\or diecisiete%
\or dieciocho%
\or diecinueve%
@@ -126,11 +126,11 @@
\ifcase#1\relax
veinte%
\or veintiuno%
- \or veintid\'os%
- \or veintitr\'es%
+ \or veintidós%
+ \or veintitrés%
\or veinticuatro%
\or veinticinco%
- \or veintis\'eis%
+ \or veintiséis%
\or veintisiete%
\or veintiocho%
\or veintinueve%
@@ -141,11 +141,11 @@
\ifcase#1\relax
veinte%
\or veintiuna%
- \or veintid\'os%
- \or veintitr\'es%
+ \or veintidós%
+ \or veintitrés%
\or veinticuatro%
\or veinticinco%
- \or veintis\'eis%
+ \or veintiséis%
\or veintisiete%
\or veintiocho%
\or veintinueve%
@@ -233,7 +233,7 @@
\or Trece%
\or Catorce%
\or Quince%
- \or Diecis\'eis%
+ \or Dieciséis%
\or Diecisiete%
\or Dieciocho%
\or Diecinueve%
@@ -244,11 +244,11 @@
\ifcase#1\relax
Veinte%
\or Veintiuno%
- \or Veintid\'os%
- \or Veintitr\'es%
+ \or Veintidós%
+ \or Veintitrés%
\or Veinticuatro%
\or Veinticinco%
- \or Veintis\'eis%
+ \or Veintiséis%
\or Veintisiete%
\or Veintiocho%
\or Veintinueve%
@@ -259,11 +259,11 @@
\ifcase#1\relax
Veinte%
\or Veintiuna%
- \or Veintid\'os%
- \or Veintitr\'es%
+ \or Veintidós%
+ \or Veintitrés%
\or Veinticuatro%
\or Veinticinco%
- \or Veintis\'eis%
+ \or Veintiséis%
\or Veintisiete%
\or Veintiocho%
\or Veintinueve%
@@ -350,7 +350,7 @@
\let\@teenthstring=\@@teenthstringspanish
\let\@tenthstring=\@@tenthstringspanish
\let\@hundredthstring=\@@hundredthstringspanish
- \def\@thousandth{mil\'esimo}%
+ \def\@thousandth{milésimo}%
\@@ordinalstringspanish{#1}{#2}%
}%
\global\let\@ordinalstringMspanish\@ordinalstringMspanish
@@ -360,7 +360,7 @@
\let\@teenthstring=\@@teenthstringFspanish
\let\@tenthstring=\@@tenthstringFspanish
\let\@hundredthstring=\@@hundredthstringFspanish
- \def\@thousandth{mil\'esima}%
+ \def\@thousandth{milésima}%
\@@ordinalstringspanish{#1}{#2}%
}%
\global\let\@ordinalstringFspanish\@ordinalstringFspanish
@@ -371,7 +371,7 @@
\let\@teenthstring=\@@Teenthstringspanish
\let\@tenthstring=\@@Tenthstringspanish
\let\@hundredthstring=\@@Hundredthstringspanish
- \def\@thousandth{Mil\'esimo}%
+ \def\@thousandth{Milésimo}%
\@@ordinalstringspanish{#1}{#2}%
}
\global\let\@OrdinalstringMspanish\@OrdinalstringMspanish
@@ -381,7 +381,7 @@
\let\@teenthstring=\@@TeenthstringFspanish
\let\@tenthstring=\@@TenthstringFspanish
\let\@hundredthstring=\@@HundredthstringFspanish
- \def\@thousandth{Mil\'esima}%
+ \def\@thousandth{Milésima}%
\@@ordinalstringspanish{#1}{#2}%
}%
\global\let\@OrdinalstringFspanish\@OrdinalstringFspanish
@@ -395,7 +395,7 @@
\or cuarto%
\or quinto%
\or sexto%
- \or s\'eptimo%
+ \or séptimo%
\or octavo%
\or noveno%
\fi
@@ -403,28 +403,28 @@
\global\let\@@unitthstringspanish\@@unitthstringspanish
\newcommand*\@@tenthstringspanish[1]{%
\ifcase#1\relax
- \or d\'ecimo%
- \or vig\'esimo%
- \or trig\'esimo%
- \or cuadrag\'esimo%
- \or quincuag\'esimo%
- \or sexag\'esimo%
- \or septuag\'esimo%
- \or octog\'esimo%
- \or nonag\'esimo%
+ \or décimo%
+ \or vigésimo%
+ \or trigésimo%
+ \or cuadragésimo%
+ \or quincuagésimo%
+ \or sexagésimo%
+ \or septuagésimo%
+ \or octogésimo%
+ \or nonagésimo%
\fi
}%
\global\let\@@tenthstringspanish\@@tenthstringspanish
\newcommand*\@@teenthstringspanish[1]{%
\ifcase#1\relax
- d\'ecimo%
- \or und\'ecimo%
- \or duod\'ecimo%
+ décimo%
+ \or undécimo%
+ \or duodécimo%
\or decimotercero%
\or decimocuarto%
\or decimoquinto%
\or decimosexto%
- \or decimos\'eptimo%
+ \or decimoséptimo%
\or decimoctavo%
\or decimonoveno%
\fi
@@ -432,15 +432,15 @@
\global\let\@@teenthstringspanish\@@teenthstringspanish
\newcommand*\@@hundredthstringspanish[1]{%
\ifcase#1\relax
- \or cent\'esimo%
- \or ducent\'esimo%
- \or tricent\'esimo%
- \or cuadringent\'esimo%
- \or quingent\'esimo%
- \or sexcent\'esimo%
- \or septing\'esimo%
- \or octingent\'esimo%
- \or noningent\'esimo%
+ \or centésimo%
+ \or ducentésimo%
+ \or tricentésimo%
+ \or cuadringentésimo%
+ \or quingentésimo%
+ \or sexcentésimo%
+ \or septingésimo%
+ \or octingentésimo%
+ \or noningentésimo%
\fi
}%
\global\let\@@hundredthstringspanish\@@hundredthstringspanish
@@ -453,7 +453,7 @@
\or cuarta%
\or quinta%
\or sexta%
- \or s\'eptima%
+ \or séptima%
\or octava%
\or novena%
\fi
@@ -461,28 +461,28 @@
\global\let\@@unitthstringFspanish\@@unitthstringFspanish
\newcommand*\@@tenthstringFspanish[1]{%
\ifcase#1\relax
- \or d\'ecima%
- \or vig\'esima%
- \or trig\'esima%
- \or cuadrag\'esima%
- \or quincuag\'esima%
- \or sexag\'esima%
- \or septuag\'esima%
- \or octog\'esima%
- \or nonag\'esima%
+ \or décima%
+ \or vigésima%
+ \or trigésima%
+ \or cuadragésima%
+ \or quincuagésima%
+ \or sexagésima%
+ \or septuagésima%
+ \or octogésima%
+ \or nonagésima%
\fi
}%
\global\let\@@tenthstringFspanish\@@tenthstringFspanish
\newcommand*\@@teenthstringFspanish[1]{%
\ifcase#1\relax
- d\'ecima%
- \or und\'ecima%
- \or duod\'ecima%
+ décima%
+ \or undécima%
+ \or duodécima%
\or decimotercera%
\or decimocuarta%
\or decimoquinta%
\or decimosexta%
- \or decimos\'eptima%
+ \or decimoséptima%
\or decimoctava%
\or decimonovena%
\fi
@@ -490,15 +490,15 @@
\global\let\@@teenthstringFspanish\@@teenthstringFspanish
\newcommand*\@@hundredthstringFspanish[1]{%
\ifcase#1\relax
- \or cent\'esima%
- \or ducent\'esima%
- \or tricent\'esima%
- \or cuadringent\'esima%
- \or quingent\'esima%
- \or sexcent\'esima%
- \or septing\'esima%
- \or octingent\'esima%
- \or noningent\'esima%
+ \or centésima%
+ \or ducentésima%
+ \or tricentésima%
+ \or cuadringentésima%
+ \or quingentésima%
+ \or sexcentésima%
+ \or septingésima%
+ \or octingentésima%
+ \or noningentésima%
\fi
}%
\global\let\@@hundredthstringFspanish\@@hundredthstringFspanish
@@ -511,7 +511,7 @@
\or Cuarto%
\or Quinto%
\or Sexto%
- \or S\'eptimo%
+ \or Séptimo%
\or Octavo%
\or Noveno%
\fi
@@ -519,28 +519,28 @@
\global\let\@@Unitthstringspanish\@@Unitthstringspanish
\newcommand*\@@Tenthstringspanish[1]{%
\ifcase#1\relax
- \or D\'ecimo%
- \or Vig\'esimo%
- \or Trig\'esimo%
- \or Cuadrag\'esimo%
- \or Quincuag\'esimo%
- \or Sexag\'esimo%
- \or Septuag\'esimo%
- \or Octog\'esimo%
- \or Nonag\'esimo%
+ \or Décimo%
+ \or Vigésimo%
+ \or Trigésimo%
+ \or Cuadragésimo%
+ \or Quincuagésimo%
+ \or Sexagésimo%
+ \or Septuagésimo%
+ \or Octogésimo%
+ \or Nonagésimo%
\fi
}%
\global\let\@@Tenthstringspanish\@@Tenthstringspanish
\newcommand*\@@Teenthstringspanish[1]{%
\ifcase#1\relax
- D\'ecimo%
- \or Und\'ecimo%
- \or Duod\'ecimo%
+ Décimo%
+ \or Undécimo%
+ \or Duodécimo%
\or Decimotercero%
\or Decimocuarto%
\or Decimoquinto%
\or Decimosexto%
- \or Decimos\'eptimo%
+ \or Decimoséptimo%
\or Decimoctavo%
\or Decimonoveno%
\fi
@@ -548,15 +548,15 @@
\global\let\@@Teenthstringspanish\@@Teenthstringspanish
\newcommand*\@@Hundredthstringspanish[1]{%
\ifcase#1\relax
- \or Cent\'esimo%
- \or Ducent\'esimo%
- \or Tricent\'esimo%
- \or Cuadringent\'esimo%
- \or Quingent\'esimo%
- \or Sexcent\'esimo%
- \or Septing\'esimo%
- \or Octingent\'esimo%
- \or Noningent\'esimo%
+ \or Centésimo%
+ \or Ducentésimo%
+ \or Tricentésimo%
+ \or Cuadringentésimo%
+ \or Quingentésimo%
+ \or Sexcentésimo%
+ \or Septingésimo%
+ \or Octingentésimo%
+ \or Noningentésimo%
\fi
}%
\global\let\@@Hundredthstringspanish\@@Hundredthstringspanish
@@ -569,7 +569,7 @@
\or Cuarta%
\or Quinta%
\or Sexta%
- \or S\'eptima%
+ \or Séptima%
\or Octava%
\or Novena%
\fi
@@ -577,28 +577,28 @@
\global\let\@@UnitthstringFspanish\@@UnitthstringFspanish
\newcommand*\@@TenthstringFspanish[1]{%
\ifcase#1\relax
- \or D\'ecima%
- \or Vig\'esima%
- \or Trig\'esima%
- \or Cuadrag\'esima%
- \or Quincuag\'esima%
- \or Sexag\'esima%
- \or Septuag\'esima%
- \or Octog\'esima%
- \or Nonag\'esima%
+ \or Décima%
+ \or Vigésima%
+ \or Trigésima%
+ \or Cuadragésima%
+ \or Quincuagésima%
+ \or Sexagésima%
+ \or Septuagésima%
+ \or Octogésima%
+ \or Nonagésima%
\fi
}%
\global\let\@@TenthstringFspanish\@@TenthstringFspanish
\newcommand*\@@TeenthstringFspanish[1]{%
\ifcase#1\relax
- D\'ecima%
- \or Und\'ecima%
- \or Duod\'ecima%
+ Décima%
+ \or Undécima%
+ \or Duodécima%
\or Decimotercera%
\or Decimocuarta%
\or Decimoquinta%
\or Decimosexta%
- \or Decimos\'eptima%
+ \or Decimoséptima%
\or Decimoctava%
\or Decimonovena%
\fi
@@ -606,15 +606,15 @@
\global\let\@@TeenthstringFspanish\@@TeenthstringFspanish
\newcommand*\@@HundredthstringFspanish[1]{%
\ifcase#1\relax
- \or Cent\'esima%
- \or Ducent\'esima%
- \or Tricent\'esima%
- \or Cuadringent\'esima%
- \or Quingent\'esima%
- \or Sexcent\'esima%
- \or Septing\'esima%
- \or Octingent\'esima%
- \or Noningent\'esima%
+ \or Centésima%
+ \or Ducentésima%
+ \or Tricentésima%
+ \or Cuadringentésima%
+ \or Quingentésima%
+ \or Sexcentésima%
+ \or Septingésima%
+ \or Octingentésima%
+ \or Noningentésima%
\fi
}%
\global\let\@@HundredthstringFspanish\@@HundredthstringFspanish
diff --git a/Master/texmf-dist/tex/latex/fmtcount/fcnumparser.sty b/Master/texmf-dist/tex/latex/fmtcount/fcnumparser.sty
index f18155fb4c5..654a74c1ec7 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fcnumparser.sty
+++ b/Master/texmf-dist/tex/latex/fmtcount/fcnumparser.sty
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fcnumparser.sty,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fcprefix.sty b/Master/texmf-dist/tex/latex/fmtcount/fcprefix.sty
index 880e570cb76..1685bcfa21e 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fcprefix.sty
+++ b/Master/texmf-dist/tex/latex/fmtcount/fcprefix.sty
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fcprefix.sty,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\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/fmtcount/fmtcount.sty b/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty
index c60688b1004..0e382647ee0 100644
--- a/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty
+++ b/Master/texmf-dist/tex/latex/fmtcount/fmtcount.sty
@@ -7,7 +7,7 @@
%% fmtcount.dtx (with options: `fmtcount.sty,package')
%%
%% fmtcount.dtx
-%% Copyright 2020 Nicola Talbot and Vincent Belache
+%% Copyright 2024 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -19,9 +19,9 @@
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Nicola Talbot and Vincent Belache.
+%% The Current Maintainer of this work is Nicola Talbot and Vincent Belaïche.
%%
-%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
+%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fc-american.def, fc-brazilian.def, fc-british.def, fc-dutch.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-portuguese.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def, fcnumparser.sty, fcprefix.sty, fmtcount.sty.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -54,7 +54,7 @@
%% End:
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fmtcount}[2020/01/30 v3.07]
+\ProvidesPackage{fmtcount}[2024/10/18 v3.09]
\RequirePackage{ifthen}
\RequirePackage{xkeyval}
\RequirePackage{etoolbox}
@@ -119,7 +119,8 @@ german,%
germanb,%
ngerman,%
ngermanb,%
-italian}
+italian,%
+dutch}
\newcommand*\fc@iterate@on@languages[1]{%
\ifx\fc@supported@language@list\@empty
\PackageError{fmtcount}{Macro `\protect\@fc@iterate@on@languages' is empty}{You should never get here:
@@ -937,7 +938,7 @@ italian}
\protect\@numberstringM{#1}{\@fc@numstr}%
}%
}%
- \MakeUppercase{\@fc@numstr}%
+ \protect\MakeUppercase{\@fc@numstr}%
}%
}
\providecommand*{\binary}[1]{%
diff --git a/Master/texmf-dist/tex/latex/fontscale/fontscale.sty b/Master/texmf-dist/tex/latex/fontscale/fontscale.sty
index d032e49860a..276d1b6caa4 100644
--- a/Master/texmf-dist/tex/latex/fontscale/fontscale.sty
+++ b/Master/texmf-dist/tex/latex/fontscale/fontscale.sty
@@ -1,33 +1,35 @@
-% Package : fontscale -- A user interface for setting document font sizes
+% Package : fontscale -- A flexible interface for setting font sizes
% Copyright : 2024 (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
-% The 2022-06-01 LaTeX kernel update added \ProcessKeyOptions.
-\NeedsTeXFormat{LaTeX2e}[2022-06-01]
+% LaTeX2e version 2023-11-01 added \IfExplAtLeastTF.
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
\ProvidesExplPackage
{fontscale}
- {2024-05-17}
- {1.3.0}
- {A user interface for setting document font sizes}
+ {2024-10-20}
+ {3.0.1}
+ {A flexible interface for setting font sizes}
-% The 2023-10-10 l3kernel update added many 'e'-variants.
-\IfExplAtLeastTF { 2023-10-10 }
- { }
+% l3kernel version 2023-10-10 added many 'e'-variants.
+\IfExplAtLeastTF { 2023-10-10 } { }
{
\msg_new:nnn { fontscale } { expl3-out-of-date }
{
- The~ package~ could~ not~ load.~
- The~ fontscale~ package~ requires~
- L3~ programming~ layer~ version~ 2023-10-10~ or~ later.
+ The~ fontscale~ package~ could~ not~ load.~
+ This~ package~ requires~
+ L3~ programming~ layer~ version~ 2023-10-10~ or~ newer.
}
\msg_critical:nn { fontscale } { expl3-out-of-date }
}
% This package does not require any other packages!
-% DECLARE FONT PARAMETER VARIABLES
+% 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 }
@@ -74,32 +76,6 @@
\skip_new:N \l_fontscale_huge_baselineskip_skip
\skip_new:N \l_fontscale_Huge_baselineskip_skip
-\prop_new:N \l_fontscale_tiny_prop
-\prop_new:N \l_fontscale_scriptsize_prop
-\prop_new:N \l_fontscale_footnotesize_prop
-\prop_new:N \l_fontscale_small_prop
-\prop_new:N \l_fontscale_normalsize_prop
-\prop_new:N \l_fontscale_large_prop
-\prop_new:N \l_fontscale_Large_prop
-\prop_new:N \l_fontscale_LARGE_prop
-\prop_new:N \l_fontscale_huge_prop
-\prop_new:N \l_fontscale_Huge_prop
-
-\prop_put:Nnn \l_fontscale_tiny_prop { step } { -4 }
-\prop_put:Nnn \l_fontscale_scriptsize_prop { step } { -3 }
-\prop_put:Nnn \l_fontscale_footnotesize_prop { step } { -2 }
-\prop_put:Nnn \l_fontscale_small_prop { step } { -1 }
-\prop_put:Nnn \l_fontscale_normalsize_prop { step } { 0 }
-\prop_put:Nnn \l_fontscale_large_prop { step } { 1 }
-\prop_put:Nnn \l_fontscale_Large_prop { step } { 2 }
-\prop_put:Nnn \l_fontscale_LARGE_prop { step } { 3 }
-\prop_put:Nnn \l_fontscale_huge_prop { step } { 4 }
-\prop_put:Nnn \l_fontscale_Huge_prop { step } { 5 }
-
-\prop_put:Nnn \l_fontscale_normalsize_prop { scale } { 1 }
-
-% INITIALIZE FONT 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 }
@@ -132,177 +108,291 @@
\skip_set:Nn \l_fontscale_huge_baselineskip_skip { 19.2pt }
\skip_set:Nn \l_fontscale_Huge_baselineskip_skip { 21.6pt }
-\prop_put:Nnn \l_fontscale_tiny_prop { scale } { 0.6 }
-\prop_put:Nnn \l_fontscale_scriptsize_prop { scale } { 0.7 }
-\prop_put:Nnn \l_fontscale_footnotesize_prop { scale } { 0.8 }
-\prop_put:Nnn \l_fontscale_small_prop { scale } { 0.9 }
-\prop_put:Nnn \l_fontscale_large_prop { scale } { 1.1 }
-\prop_put:Nnn \l_fontscale_Large_prop { scale } { 1.2 }
-\prop_put:Nnn \l_fontscale_LARGE_prop { scale } { 1.4 }
-\prop_put:Nnn \l_fontscale_huge_prop { scale } { 1.6 }
-\prop_put:Nnn \l_fontscale_Huge_prop { scale } { 1.8 }
-
-\prop_put:Nnn \l_fontscale_tiny_prop { size } { 6pt }
-\prop_put:Nnn \l_fontscale_scriptsize_prop { size } { 7pt }
-\prop_put:Nnn \l_fontscale_footnotesize_prop { size } { 8pt }
-\prop_put:Nnn \l_fontscale_small_prop { size } { 9pt }
-\prop_put:Nnn \l_fontscale_normalsize_prop { size } { 10pt }
-\prop_put:Nnn \l_fontscale_large_prop { size } { 11pt }
-\prop_put:Nnn \l_fontscale_Large_prop { size } { 12pt }
-\prop_put:Nnn \l_fontscale_LARGE_prop { size } { 14pt }
-\prop_put:Nnn \l_fontscale_huge_prop { size } { 16pt }
-\prop_put:Nnn \l_fontscale_Huge_prop { size } { 18pt }
-
-\prop_put:Nnn \l_fontscale_tiny_prop { baselineskip } { 7.2pt }
-\prop_put:Nnn \l_fontscale_scriptsize_prop { baselineskip } { 8.4pt }
-\prop_put:Nnn \l_fontscale_footnotesize_prop { baselineskip } { 9.6pt }
-\prop_put:Nnn \l_fontscale_small_prop { baselineskip } { 10.8pt }
-\prop_put:Nnn \l_fontscale_normalsize_prop { baselineskip } { 12 pt }
-\prop_put:Nnn \l_fontscale_large_prop { baselineskip } { 13.2pt }
-\prop_put:Nnn \l_fontscale_Large_prop { baselineskip } { 14.4pt }
-\prop_put:Nnn \l_fontscale_LARGE_prop { baselineskip } { 16.8pt }
-\prop_put:Nnn \l_fontscale_huge_prop { baselineskip } { 19.2pt }
-\prop_put:Nnn \l_fontscale_Huge_prop { baselineskip } { 21.6pt }
-
-% SOME VARIABLES
-
-% Used for mapping.
-\tl_const:Nn \c__fontscale_names_tl
+% 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.
+\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:
{
- {tiny} {scriptsize} {footnotesize} {small} {normalsize}
- {large} {Large} {LARGE} {huge} {Huge}
+ \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: }
}
-\tl_const:Nn \c__fontscale_names_other_tl
+% For speed, \__fontscale_hook_selectfont_auxii: uses \f@size instead of
+% \l_fontscale_size_dim. The case where the base font size of the musical
+% typographic scale equals the font size of \normalsize is optimized further.
+\cs_new_protected:Npn \__fontscale_hook_selectfont_auxii:
{
- {tiny} {scriptsize} {footnotesize} {small}
- {large} {Large} {LARGE} {huge} {Huge}
+ \fp_set:Nn \l_fontscale_scale_fp
+ { \f@size / \l__fontscale_normalsize_size_fp }
+ \str_if_eq:VnTF \l__fontscale_typographic_scale_str { musical }
+ {
+ \dim_compare:nNnTF \l__fontscale_musical_base_dim =
+ \l_fontscale_normalsize_size_dim
+ {
+ \fp_set:Nn \l_fontscale_step_fp
+ {
+ \l__fontscale_musical_selectfont_fp
+ * ln ( \l_fontscale_scale_fp )
+ }
+ }
+ {
+ \fp_set:Nn \l_fontscale_step_fp
+ {
+ \l__fontscale_musical_selectfont_fp
+ * ln ( \f@size / \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
-% Temporary variables
-\tl_new:N \l__fontscale_step_tl
-\tl_new:N \l__fontscale_scale_tl
-\dim_new:N \l__fontscale_size_dim
+% Scratch variables
+\dim_new:N \l__fontscale_tmp_dim
+\skip_new:N \l__fontscale_tmp_skip
+\fp_new:N \l__fontscale_tmp_fp
-% SOME HELPER FUNCTIONS
+% SOME FUNCTIONS
-% Sets a dimen/skip variable from a dimen/skip expression, supplying a default
+% 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 any extra tokens.
+\cs_new_protected:Npn \__fontscale_dim_set_default_pt: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
+ {
+ \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 }
+% Argument processors. A default 'pt' is appended only in user-level commands,
+% not in internal programming functions.
+\cs_new_protected:Npn \__fontscale_arg_to_dim_default_pt:n #1
+ {
+ \__fontscale_dim_set_default_pt:Nn \l__fontscale_tmp_dim {#1}
+ \tl_set:NV \ProcessedArgument \l__fontscale_tmp_dim
+ }
+\cs_new_protected:Npn \__fontscale_arg_to_skip_default_pt:n #1
+ {
+ \__fontscale_skip_set_default_pt:Nn \l__fontscale_tmp_skip {#1}
+ \tl_set:NV \ProcessedArgument \l__fontscale_tmp_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_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 without appending a default
% unit of pt.
-\cs_new_protected:Npn \__fontscale_dim_set_with_default_pt:Nn #1#2
- { \@defaultunits #1 = \dimexpr #2 pt \relax \relax \@nnil }
-\cs_generate_variant:Nn \__fontscale_dim_set_with_default_pt:Nn { c }
-\cs_new_protected:Npn \__fontscale_skip_set_with_default_pt:Nn #1#2
- { \@defaultunits #1 = \glueexpr #2 pt \relax \@nnil }
-\cs_generate_variant:Nn \__fontscale_skip_set_with_default_pt:Nn { c }
-% Used to define \tiny to \Huge. Need \dim_use:N for compatibility with the
-% microtype package. Otherwise the following would do:
-% \cs_new_protected:Npn \__fontscale_fontsize:NNN { \@setfontsize }
-\cs_new_protected:Npn \__fontscale_fontsize:NNN #1#2
- { \@setfontsize #1 { \dim_use:N #2 } }
-% Similar to \fontsize + \selectfont, except that it takes dimen and skip
-% expressions as arguments and avoids the issue where \f@size is set to the new
-% font size before the second argument is expanded.
-\skip_new:N \l__fontscale_fontsize_skip
-\cs_new_protected:Npn \__fontscale_fontsize:nn #1#2
- {
- \__fontscale_skip_set_with_default_pt:Nn \l__fontscale_fontsize_skip {#2}
- \fontsize { = \dimexpr #1 pt \relax \relax } \l__fontscale_fontsize_skip
- \selectfont
- }
-% 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
- {
- \fontsize { = \dimexpr #1 pt \relax \relax }
- { \fp_to_dim:n { \f@size * \l__fontscale_baselineskip_size_ratio_fp } }
- \selectfont
+% (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.
+\cs_new_protected:Npn \__fontscale_set_font_size:nn #1#2
+ {
+ \use:e
+ {
+ \__fontscale_set_font_size_aux:nn { \dim_eval:n {#1} }
+ { \skip_eval:n {#2} }
+ }
+ }
+\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
+ { \use:e { \__fontscale_set_font_size_aux:n { \dim_to_decimal:n {#1} } } }
+\cs_new_protected:Npn \__fontscale_set_font_size_aux:n #1
+ {
+ \dim_compare:nNnTF { #1 pt } > \c_zero_dim
+ {
+ \fontsize { #1 pt }
+ { \fp_to_dim:n { #1 * \l__fontscale_baselineskip_size_ratio_fp } }
+ \selectfont
+ }
+ { \msg_error:nnn { fontscale } { font-size-out-of-bounds } { #1 pt } }
}
% MESSAGES
-\msg_new:nnn { fontscale } { modular-ratio-out-of-bounds }
+\msg_new:nnn { fontscale } { key-musical-base-out-of-bounds }
{
- The~ value~ for~ the~ key~ 'modular / ratio'~
- \msg_line_context: \c_space_tl
- must~ be~ greater~ than~ 1.
+ Invalid~ value~ '#1'~ \msg_line_context:. \\
+ The~ value~ of~ the~ key~ 'musical / base'~
+ must~ be~ a~ positive~ length.
}
-\msg_new:nnn { fontscale } { musical-ratio-out-of-bounds }
+\msg_new:nnn { fontscale } { key-musical-ratio-out-of-bounds }
{
- The~ value~ for~ the~ key~ 'musical / ratio'~
- \msg_line_context: \c_space_tl
+ Invalid~ value~ '#1'~ \msg_line_context:. \\
+ The~ value~ of~ the~ key~ 'musical / ratio'~
must~ be~ greater~ than~ 1.
}
-\msg_new:nnn { fontscale } { musical-notes-out-of-bounds }
+\msg_new:nnn { fontscale } { key-musical-notes-out-of-bounds }
{
- The~ value~ for~ the~ key~ 'musical / notes'~
- \msg_line_context: \c_space_tl
+ 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-ignored }
+\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 }
{
- Key~ '#1 / scale'~
- \msg_line_context: \c_space_tl
- ignored.~
- Setting~ the~ scale~ and~ size~ keys~ for~ the~ same~
- font~ size~ command~ ignores~ the~ scale~ key.
+ 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~
- \msg_line_context: \c_space_tl
- are~ not~ in~ the~ correct~ order.~
- The~ magnitude~ of~ the~ font~ sizes~ should~ be~ ordered~ from~
- '\iow_char:N \\tiny'~ to~ '\iow_char:N \\normalsize'~ to~
- '\iow_char:N \\Huge'.
+ 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.
}
-\msg_new:nnn { fontscale } { font-baselineskips-out-of-order }
+
+\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~ baselineskips~
- \msg_line_context: \c_space_tl
- are~ not~ in~ the~ correct~ order.~
- The~ magnitude~ of~ the~ font~ baselineskips~ should~ be~ ordered~ from~
- '\iow_char:N \\tiny'~ to~ '\iow_char:N \\normalsize'~ to~
- '\iow_char:N \\Huge'.
+ Invalid~ font~ size~ '#1'~ \msg_line_context:. \\
+ The~ font~ size~ must~ be~ a~ positive~ length.
}
\msg_new:nnn { fontscale } { font-step-out-of-bounds }
{
- The~ font~ step~
- \msg_line_context: \c_space_tl
- must~ be~ an~ integer~ from~ -4~ to~ 5,~
- unless~ the~ value~ for~ the~ choice~ key~ 'typographic-scale'~
- is~ 'modular'~ or~ 'musical'.
+ 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 }
{
- '\iow_char:N \\SetFontStep*'~
- \msg_line_context: \c_space_tl
- could~ not~ calculate~ the~ new~ font~ step~ because~
- the~ current~ font~ step~ is~ undefined.
+ The~ new~ font~ step~ could~ not~ be~ calculated~
+ because~ the~ current~ font~ step~ is~ undefined~ \msg_line_context:.
}
% DEFINE KEYS
\str_new:N \l__fontscale_typographic_scale_str
+\dim_new:N \l__fontscale_musical_base_dim
-\keys_define:nn { fontscale }
+\cs_new_protected:Npn \__fontscale_keys_name:n #1
{
- reset .choices:nn = { initial , preamble }
- { \use:c { __fontscale_keys_precompile_#1: } }
- , reset .default:n = initial
-
- , ignore-order .bool_set:N = \l__fontscale_ignore_order_bool
- , ignore-order .default:n = true
+ \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} }
+ }
+\cs_new_protected:Npn \__fontscale_keys_name_split: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}
+ }
- , baselineskip-size-ratio .fp_set:N =
+\keys_define:nn { fontscale }
+ {
+ baselineskip-size-ratio .fp_set:N =
\l__fontscale_baselineskip_size_ratio_fp
, baselineskip-size-ratio .value_required:n = true
, typographic-scale .choices:nn =
- { classic-10pt , classic-11pt , classic-12pt , modular , musical }
+ { classic-10pt , classic-11pt , classic-12pt , musical }
{ \str_set:Nn \l__fontscale_typographic_scale_str {#1} }
, typographic-scale .value_required:n = true
@@ -315,23 +405,29 @@
, classic-12pt .meta:n = { typographic-scale = classic-12pt }
, classic-12pt .value_forbidden:n = true
- , modular .meta:n = { typographic-scale = modular }
- , modular .value_forbidden:n = true
-
, musical .meta:n = { typographic-scale = musical }
, musical .value_forbidden:n = true
-
- , modular / ratio .fp_set:N = \l__fontscale_modular_ratio_fp
- , modular / ratio .value_required:n = true
}
\keys_define:nn { fontscale / musical }
{
- ratio .fp_set:N = \l__fontscale_musical_ratio_fp
+ base .code:n =
+ \__fontscale_dim_set_default_pt:Nn \l__fontscale_musical_base_dim {#1}
+ , 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 .value_required:n = true
}
+\keys_define:nn { fontscale / normalsize }
+ {
+ size .tl_set:N = \l__fontscale_normalsize_size_tl
+ , size .value_required:n = true
+
+ , baselineskip .tl_set:N = \l__fontscale_normalsize_baselineskip_tl
+ , baselineskip .value_required:n = true
+ }
\keys_define:nn { fontscale / tiny }
{
scale .tl_set:N = \l__fontscale_tiny_scale_tl
@@ -376,14 +472,6 @@
, baselineskip .tl_set:N = \l__fontscale_small_baselineskip_tl
, baselineskip .value_required:n = true
}
-\keys_define:nn { fontscale / normalsize }
- {
- size .tl_set:N = \l__fontscale_normalsize_size_tl
- , size .value_required:n = true
-
- , baselineskip .tl_set:N = \l__fontscale_normalsize_baselineskip_tl
- , baselineskip .value_required:n = true
- }
\keys_define:nn { fontscale / large }
{
scale .tl_set:N = \l__fontscale_large_scale_tl
@@ -441,185 +529,103 @@
}
\keys_define:nn { fontscale }
{
- tiny .code:n = \__fontscale_keys_name_code:n {#1}
+ tiny .code:n = \__fontscale_keys_name:n {#1}
, tiny .value_required:n = true
- , scriptsize .code:n = \__fontscale_keys_name_code:n {#1}
+ , scriptsize .code:n = \__fontscale_keys_name:n {#1}
, scriptsize .value_required:n = true
- , footnotesize .code:n = \__fontscale_keys_name_code:n {#1}
+ , footnotesize .code:n = \__fontscale_keys_name:n {#1}
, footnotesize .value_required:n = true
- , small .code:n = \__fontscale_keys_name_code:n {#1}
+ , small .code:n = \__fontscale_keys_name:n {#1}
, small .value_required:n = true
- , normalsize .code:n = \__fontscale_keys_name_code:n {#1}
+ , normalsize .code:n = \__fontscale_keys_name:n {#1}
, normalsize .value_required:n = true
- , large .code:n = \__fontscale_keys_name_code:n {#1}
+ , large .code:n = \__fontscale_keys_name:n {#1}
, large .value_required:n = true
- , Large .code:n = \__fontscale_keys_name_code:n {#1}
+ , Large .code:n = \__fontscale_keys_name:n {#1}
, Large .value_required:n = true
- , LARGE .code:n = \__fontscale_keys_name_code:n {#1}
+ , LARGE .code:n = \__fontscale_keys_name:n {#1}
, LARGE .value_required:n = true
- , huge .code:n = \__fontscale_keys_name_code:n {#1}
+ , huge .code:n = \__fontscale_keys_name:n {#1}
, huge .value_required:n = true
- , Huge .code:n = \__fontscale_keys_name_code:n {#1}
+ , Huge .code:n = \__fontscale_keys_name:n {#1}
, Huge .value_required:n = true
}
-\cs_new_protected:Npn \__fontscale_keys_name_code:n #1
- {
- \str_if_in:nnTF {#1} { / }
- { \__fontscale_keys_name_code_split:ww #1 \q_stop }
- { \tl_set:cn { l__fontscale_ \l_keys_key_str _size_tl } {#1} }
- }
-\cs_new_protected:Npn \__fontscale_keys_name_code_split: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}
- }
-
-% PRE-COMPILE KEYS
% Pre-compiles the keys with their initial values and then sets the keys to
-% their initial values. This is done by hand for speed.
-\cs_new_protected:Npn \__fontscale_keys_precompile_initial:
+% their initial values. This is significantly faster than using .initial:n and
+% \keys_precompile:nnN.
+\cs_new_protected:Npn \__fontscale_keys_set_initial:
{
- \bool_set_false:N \l__fontscale_ignore_order_bool
\fp_set:Nn \l__fontscale_baselineskip_size_ratio_fp { 1.2 }
\str_set:Nn \l__fontscale_typographic_scale_str { classic-10pt }
- \fp_set:Nn \l__fontscale_modular_ratio_fp { 1.125 }
+ \dim_set:Nn \l__fontscale_musical_base_dim { 10pt }
\fp_set:Nn \l__fontscale_musical_ratio_fp { 2 }
\int_set:Nn \l__fontscale_musical_notes_int { 5 }
- \tl_set:Nn \l__fontscale_tiny_scale_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_scriptsize_scale_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_footnotesize_scale_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_small_scale_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_large_scale_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_Large_scale_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_LARGE_scale_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_huge_scale_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_Huge_scale_tl { \q_no_value }
-
- \tl_set:Nn \l__fontscale_tiny_size_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_scriptsize_size_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_footnotesize_size_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_small_size_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_normalsize_size_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_large_size_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_Large_size_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_LARGE_size_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_huge_size_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_Huge_size_tl { \q_no_value }
-
- \tl_set:Nn \l__fontscale_tiny_baselineskip_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_scriptsize_baselineskip_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_footnotesize_baselineskip_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_small_baselineskip_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_normalsize_baselineskip_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_large_baselineskip_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_Large_baselineskip_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_LARGE_baselineskip_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_huge_baselineskip_tl { \q_no_value }
- \tl_set:Nn \l__fontscale_Huge_baselineskip_tl { \q_no_value }
- }
-\__fontscale_keys_precompile_initial:
-
-% Pre-compiles the keys with their values at the end of the preamble. The keys
-% are pre-compiled by hand for speed.
-\cs_new_eq:NN \__fontscale_keys_precompile_preamble: \prg_do_nothing:
-% \AddToHook is passed only a single token for speed.
-\AddToHook { begindocument / before }
- { \__fontscale_keys_precompile_preamble_set: }
-\cs_new_protected:Npn \__fontscale_keys_precompile_preamble_set:
- {
- \cs_set_protected:Npe \__fontscale_keys_precompile_preamble:
+ \tl_map_inline:nn
{
- \bool_if:NTF \l__fontscale_ignore_order_bool
- { \bool_set_true:N } { \bool_set_false:N }
- \exp_not:N \l__fontscale_ignore_order_bool
- \fp_set:Nn \exp_not:N \l__fontscale_baselineskip_size_ratio_fp
- { \exp_not:V \l__fontscale_baselineskip_size_ratio_fp }
- \str_set:Nn \exp_not:N \l__fontscale_typographic_scale_str
- { \l__fontscale_typographic_scale_str }
- \fp_set:Nn \exp_not:N \l__fontscale_modular_ratio_fp
- { \exp_not:V \l__fontscale_modular_ratio_fp }
- \fp_set:Nn \exp_not:N \l__fontscale_musical_ratio_fp
- { \exp_not:V \l__fontscale_musical_ratio_fp }
- \int_set:Nn \exp_not:N \l__fontscale_musical_notes_int
- { \int_use:N \l__fontscale_musical_notes_int }
-
- \tl_set:Nn \exp_not:N \l__fontscale_tiny_scale_tl
- { \exp_not:V \l__fontscale_tiny_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_scriptsize_scale_tl
- { \exp_not:V \l__fontscale_scriptsize_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_footnotesize_scale_tl
- { \exp_not:V \l__fontscale_footnotesize_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_small_scale_tl
- { \exp_not:V \l__fontscale_small_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_large_scale_tl
- { \exp_not:V \l__fontscale_large_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Large_scale_tl
- { \exp_not:V \l__fontscale_Large_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_LARGE_scale_tl
- { \exp_not:V \l__fontscale_LARGE_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_huge_scale_tl
- { \exp_not:V \l__fontscale_huge_scale_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Huge_scale_tl
- { \exp_not:V \l__fontscale_Huge_scale_tl }
-
- \tl_set:Nn \exp_not:N \l__fontscale_tiny_size_tl
- { \exp_not:V \l__fontscale_tiny_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_scriptsize_size_tl
- { \exp_not:V \l__fontscale_scriptsize_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_footnotesize_size_tl
- { \exp_not:V \l__fontscale_footnotesize_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_small_size_tl
- { \exp_not:V \l__fontscale_small_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_normalsize_size_tl
- { \exp_not:V \l__fontscale_normalsize_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_large_size_tl
- { \exp_not:V \l__fontscale_large_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Large_size_tl
- { \exp_not:V \l__fontscale_Large_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_LARGE_size_tl
- { \exp_not:V \l__fontscale_LARGE_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_huge_size_tl
- { \exp_not:V \l__fontscale_huge_size_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Huge_size_tl
- { \exp_not:V \l__fontscale_Huge_size_tl }
-
- \tl_set:Nn \exp_not:N \l__fontscale_tiny_baselineskip_tl
- { \exp_not:V \l__fontscale_tiny_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_scriptsize_baselineskip_tl
- { \exp_not:V \l__fontscale_scriptsize_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_footnotesize_baselineskip_tl
- { \exp_not:V \l__fontscale_footnotesize_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_small_baselineskip_tl
- { \exp_not:V \l__fontscale_small_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_normalsize_baselineskip_tl
- { \exp_not:V \l__fontscale_normalsize_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_large_baselineskip_tl
- { \exp_not:V \l__fontscale_large_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Large_baselineskip_tl
- { \exp_not:V \l__fontscale_Large_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_LARGE_baselineskip_tl
- { \exp_not:V \l__fontscale_LARGE_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_huge_baselineskip_tl
- { \exp_not:V \l__fontscale_huge_baselineskip_tl }
- \tl_set:Nn \exp_not:N \l__fontscale_Huge_baselineskip_tl
- { \exp_not:V \l__fontscale_Huge_baselineskip_tl }
+ \l__fontscale_tiny_scale_tl
+ \l__fontscale_scriptsize_scale_tl
+ \l__fontscale_footnotesize_scale_tl
+ \l__fontscale_small_scale_tl
+ \l__fontscale_large_scale_tl
+ \l__fontscale_Large_scale_tl
+ \l__fontscale_LARGE_scale_tl
+ \l__fontscale_huge_scale_tl
+ \l__fontscale_Huge_scale_tl
+
+ \l__fontscale_tiny_size_tl
+ \l__fontscale_scriptsize_size_tl
+ \l__fontscale_footnotesize_size_tl
+ \l__fontscale_small_size_tl
+ \l__fontscale_normalsize_size_tl
+ \l__fontscale_large_size_tl
+ \l__fontscale_Large_size_tl
+ \l__fontscale_LARGE_size_tl
+ \l__fontscale_huge_size_tl
+ \l__fontscale_Huge_size_tl
+
+ \l__fontscale_tiny_baselineskip_tl
+ \l__fontscale_scriptsize_baselineskip_tl
+ \l__fontscale_footnotesize_baselineskip_tl
+ \l__fontscale_small_baselineskip_tl
+ \l__fontscale_normalsize_baselineskip_tl
+ \l__fontscale_large_baselineskip_tl
+ \l__fontscale_Large_baselineskip_tl
+ \l__fontscale_LARGE_baselineskip_tl
+ \l__fontscale_huge_baselineskip_tl
+ \l__fontscale_Huge_baselineskip_tl
}
+ { \tl_set:Nn ##1 { \q_no_value } }
}
+\__fontscale_keys_set_initial:
-% PROCESS KEYS
+% SET AND PROCESS KEYS
-\NewDocumentCommand \fontscalesetup { m } { \__fontscale_keys_set:n {#1} }
+\NewDocumentCommand \fontscalesetup { s m }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \fontscalesetup }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_keys_reset:n {#2} }
+ { \__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}
@@ -630,53 +636,59 @@
}
\cs_new_protected:Npn \__fontscale_keys_process:
{
- \__fontscale_keys_process_check_modular_musical:
+ \__fontscale_keys_process_start:
\__fontscale_keys_process_normalsize:
\__fontscale_keys_process_other:
\__fontscale_keys_process_check_order:
}
-% Issues an error if the key 'modular/ratio', 'musical/ratio', or
-% 'musical/notes' is set to an impossible value.
-\cs_new_protected:Npn \__fontscale_keys_process_check_modular_musical:
+\cs_new_protected:Npn \__fontscale_keys_process_start:
{
- \fp_compare:nNnF \l__fontscale_modular_ratio_fp > \c_one_fp
+ \dim_compare:nNnF \l__fontscale_musical_base_dim > \c_zero_dim
{
- \msg_error:nn { fontscale } { modular-ratio-out-of-bounds }
+ \msg_error:nnV { fontscale } { key-musical-base-out-of-bounds }
+ \l__fontscale_musical_base_dim
\prg_break:
}
\fp_compare:nNnF \l__fontscale_musical_ratio_fp > \c_one_fp
{
- \msg_error:nn { fontscale } { musical-ratio-out-of-bounds }
+ \msg_error:nne { fontscale } { key-musical-ratio-out-of-bounds }
+ { \fp_use:N \l__fontscale_musical_ratio_fp }
\prg_break:
}
\int_compare:nNnF \l__fontscale_musical_notes_int > 0
{
- \msg_error:nn { fontscale } { musical-notes-out-of-bounds }
+ \msg_error:nnV { fontscale } { key-musical-notes-out-of-bounds }
+ \l__fontscale_musical_notes_int
\prg_break:
}
}
-% Sets the size and baselineskip of \normalsize and updates their property list
-% entries.
+% 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
{
\dim_set:Nn \l_fontscale_normalsize_size_dim
{
- \str_case:VnF \l__fontscale_typographic_scale_str
+ \str_case:Vn \l__fontscale_typographic_scale_str
{
+ { classic-10pt } { 10pt }
{ classic-11pt } { 11pt }
{ classic-12pt } { 12pt }
+ { musical } { \l__fontscale_musical_base_dim }
}
- { 10pt }
}
}
{
- \__fontscale_dim_set_with_default_pt:Nn
- \l_fontscale_normalsize_size_dim { \l__fontscale_normalsize_size_tl }
+ \__fontscale_dim_set_default_pt:Nn \l_fontscale_normalsize_size_dim
+ { \l__fontscale_normalsize_size_tl }
+ \dim_compare:nNnF \l_fontscale_normalsize_size_dim > \c_zero_dim
+ {
+ \msg_error:nnVn { fontscale } { key-font-size-out-of-bounds }
+ \l_fontscale_normalsize_size_dim { normalsize }
+ \prg_break:
+ }
}
- \prop_put:NnV \l_fontscale_normalsize_prop { size }
- \l_fontscale_normalsize_size_dim
\fp_set:Nn \l__fontscale_normalsize_size_fp
{ \l_fontscale_normalsize_size_dim }
\quark_if_no_value:NTF \l__fontscale_normalsize_baselineskip_tl
@@ -691,12 +703,10 @@
}
}
{
- \__fontscale_skip_set_with_default_pt:Nn
+ \__fontscale_skip_set_default_pt:Nn
\l_fontscale_normalsize_baselineskip_skip
{ \l__fontscale_normalsize_baselineskip_tl }
}
- \prop_put:NnV \l_fontscale_normalsize_prop { baselineskip }
- \l_fontscale_normalsize_baselineskip_skip
}
% Auxiliary functions that expand to the font size depending on the name of the
% font size command.
@@ -745,57 +755,60 @@
{ Huge } { 24pt }
}
}
-\cs_new:Npn \__fontscale_keys_process_other_modular:n #1
- {
- \fp_to_dim:n
- {
- \l__fontscale_normalsize_size_fp * \l__fontscale_modular_ratio_fp
- ^ \use:c { c_fontscale_#1_step_fp }
- }
- }
\cs_new:Npn \__fontscale_keys_process_other_musical:n #1
{
\fp_to_dim:n
{
- \l__fontscale_normalsize_size_fp * \l__fontscale_musical_ratio_fp
+ \l__fontscale_musical_base_fp * \l__fontscale_musical_ratio_fp
^ ( \use:c { c_fontscale_#1_step_fp }
/ \l__fontscale_musical_notes_fp )
}
}
-% Sets the size, scale, and baselineskip of the other font size commands and
-% updates their property list entries. Issues a warning if the user sets both
-% the scale and size keys for the same font size command.
+% Sets the font size, font scale, and font baselineskip of the other font size
+% commands.
\cs_new_protected:Npn \__fontscale_keys_process_other:
{
- \cs_set_eq:Nc \__fontscale_keys_process_other_typographic_scale:n
+ \str_case:Vn \l__fontscale_typographic_scale_str
{
- \str_case:Vn \l__fontscale_typographic_scale_str
- {
- { classic-10pt } { __fontscale_keys_process_other_classic_xpt:n }
- { classic-11pt } { __fontscale_keys_process_other_classic_xipt:n }
- { classic-12pt } { __fontscale_keys_process_other_classic_xiipt:n }
- { modular } { __fontscale_keys_process_other_modular:n }
- { musical } { __fontscale_keys_process_other_musical:n }
- }
+ { classic-10pt }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_fn_aux:n
+ \__fontscale_keys_process_other_classic_xpt:n
+ }
+ { classic-11pt }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_fn_aux:n
+ \__fontscale_keys_process_other_classic_xipt:n
+ }
+ { classic-12pt }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_fn_aux:n
+ \__fontscale_keys_process_other_classic_xiipt:n
+ }
+ { musical }
+ {
+ \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 }
+ \fp_set:Nn \l__fontscale_musical_notes_fp
+ { \l__fontscale_musical_notes_int }
+ \fp_set:Nn \l__fontscale_musical_selectfont_fp
+ {
+ \l__fontscale_musical_notes_fp
+ / ln ( \l__fontscale_musical_ratio_fp )
+ }
+ }
}
- \str_if_eq:VnT \l__fontscale_typographic_scale_str { musical }
+ \tl_map_function:nN
{
- \fp_set:Nn \l__fontscale_musical_notes_fp
- { \l__fontscale_musical_notes_int }
+ {tiny} {scriptsize} {footnotesize} {small}
+ {large} {Large} {LARGE} {huge} {Huge}
}
- \tl_map_function:NN \c__fontscale_names_other_tl
- \__fontscale_keys_process_other_aux:n
+ \__fontscale_keys_process_other_fn:n
}
-\cs_new_protected:Npn \__fontscale_keys_process_other_aux:n #1
+\cs_new_protected:Npn \__fontscale_keys_process_other_fn:n #1
{
- \quark_if_no_value:cF { l__fontscale_#1_size_tl }
- {
- \__fontscale_dim_set_with_default_pt:cn { l_fontscale_#1_size_dim }
- { \use:c { l__fontscale_#1_size_tl } }
- \quark_if_no_value:cF { l__fontscale_#1_scale_tl }
- { \msg_warning:nnn { fontscale } { key-font-scale-ignored } {#1} }
- \prg_break:
- }
\quark_if_no_value:cF { l__fontscale_#1_scale_tl }
{
\dim_set:cn { l_fontscale_#1_size_dim }
@@ -806,207 +819,271 @@
* ( \use:c { l__fontscale_#1_scale_tl } )
}
}
+ \dim_compare:nNnF { \use:c { l_fontscale_#1_size_dim } } > \c_zero_dim
+ {
+ \tl_map_break:n
+ {
+ \msg_error:nnen { fontscale } { key-font-scale-out-of-bounds }
+ { \fp_eval:n { \use:c { l__fontscale_#1_scale_tl } } } {#1}
+ \prg_break:
+ }
+ }
+ \quark_if_no_value:cT { l__fontscale_#1_size_tl } { \prg_break: }
+ }
+ \quark_if_no_value:cF { l__fontscale_#1_size_tl }
+ {
+ \__fontscale_dim_set_default_pt: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
+ {
+ \tl_map_break:n
+ {
+ \msg_error:nnvn { fontscale } { key-font-size-out-of-bounds }
+ { l_fontscale_#1_size_dim } {#1}
+ \prg_break:
+ }
+ }
+ \quark_if_no_value:cF { l__fontscale_#1_scale_tl }
+ {
+ \msg_warning:nnn { fontscale } { key-font-scale-overwritten } {#1}
+ }
\prg_break:
}
\dim_set:cn { l_fontscale_#1_size_dim }
- { \__fontscale_keys_process_other_typographic_scale:n {#1} }
+ { \__fontscale_keys_process_other_fn_aux:n {#1} }
\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 }
- \prop_put:cne { l_fontscale_#1_prop } { scale }
- { \fp_use:c { l_fontscale_#1_scale_fp } }
- \prop_put:cnv { l_fontscale_#1_prop } { size } { l_fontscale_#1_size_dim }
\quark_if_no_value:cTF { l__fontscale_#1_baselineskip_tl }
{
+ \fp_set:Nn \l__fontscale_tmp_fp { \use:c { l_fontscale_#1_size_dim } }
+ \fp_set:cn { l_fontscale_#1_scale_fp }
+ { \l__fontscale_tmp_fp / \l__fontscale_normalsize_size_fp }
\skip_set:cn { l_fontscale_#1_baselineskip_skip }
{
\fp_to_dim:n
{
- \use:c { l_fontscale_#1_size_dim }
- * \l__fontscale_baselineskip_size_ratio_fp
+ \l__fontscale_tmp_fp * \l__fontscale_baselineskip_size_ratio_fp
}
}
}
{
- \__fontscale_skip_set_with_default_pt:cn
+ \fp_set:cn { l_fontscale_#1_scale_fp }
+ {
+ \use:c { l_fontscale_#1_size_dim }
+ / \l__fontscale_normalsize_size_fp
+ }
+ \__fontscale_skip_set_default_pt:cn
{ l_fontscale_#1_baselineskip_skip }
{ \use:c { l__fontscale_#1_baselineskip_tl } }
}
- \prop_put:cnv { l_fontscale_#1_prop } { baselineskip }
- { l_fontscale_#1_baselineskip_skip }
}
-% Issues a warning if the font sizes or font baselineskips (ignoring the
-% stretch and shrink components) are not in the correct order unless the value
-% for the key 'ignore-order' is 'true'.
+% Issues a warning if the font sizes are not in the correct order.
\cs_new_protected:Npn \__fontscale_keys_process_check_order:
{
- \bool_if:NF \l__fontscale_ignore_order_bool
+ \dim_compare:nF
{
- \dim_compare:nF
- {
- \l_fontscale_tiny_size_dim
- < \l_fontscale_scriptsize_size_dim
- < \l_fontscale_footnotesize_size_dim
- < \l_fontscale_small_size_dim
- < \l_fontscale_normalsize_size_dim
- < \l_fontscale_large_size_dim
- < \l_fontscale_Large_size_dim
- < \l_fontscale_LARGE_size_dim
- < \l_fontscale_huge_size_dim
- < \l_fontscale_Huge_size_dim
- }
- { \msg_warning:nn { fontscale } { font-sizes-out-of-order } }
- \dim_compare:nF
- {
- \l_fontscale_tiny_baselineskip_skip
- < \l_fontscale_scriptsize_baselineskip_skip
- < \l_fontscale_footnotesize_baselineskip_skip
- < \l_fontscale_small_baselineskip_skip
- < \l_fontscale_normalsize_baselineskip_skip
- < \l_fontscale_large_baselineskip_skip
- < \l_fontscale_Large_baselineskip_skip
- < \l_fontscale_LARGE_baselineskip_skip
- < \l_fontscale_huge_baselineskip_skip
- < \l_fontscale_Huge_baselineskip_skip
- }
- { \msg_warning:nn { fontscale } { font-baselineskips-out-of-order } }
+ \l_fontscale_tiny_size_dim
+ < \l_fontscale_scriptsize_size_dim
+ < \l_fontscale_footnotesize_size_dim
+ < \l_fontscale_small_size_dim
+ < \l_fontscale_normalsize_size_dim
+ < \l_fontscale_large_size_dim
+ < \l_fontscale_Large_size_dim
+ < \l_fontscale_LARGE_size_dim
+ < \l_fontscale_huge_size_dim
+ < \l_fontscale_Huge_size_dim
}
+ { \msg_warning:nn { fontscale } { font-sizes-out-of-order } }
}
% DOCUMENT COMMANDS
-% The internal functions of each font size command are not used elsewhere in
-% the code for compatibility with user-defined hooks
-% (e.g. \AddToHook{cmd/normalsize/after}{<user-defined-function>}).
-\DeclareDocumentCommand \tiny { } { \__fontscale_tiny: }
+% Defines the standard LaTeX font size commands from \tiny to \Huge and
+% 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 { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \tiny }
+ }
+ { \__fontscale_tiny: }
+ }
\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 { } { \__fontscale_scriptsize: }
+\DeclareDocumentCommand \scriptsize { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \scriptsize }
+ }
+ { \__fontscale_scriptsize: }
+ }
\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 { } { \__fontscale_footnotesize: }
+\DeclareDocumentCommand \footnotesize { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \footnotesize }
+ }
+ { \__fontscale_footnotesize: }
+ }
\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 { } { \__fontscale_small: }
+\DeclareDocumentCommand \small { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \small }
+ }
+ { \__fontscale_small: }
+ }
\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 { } { \__fontscale_normalsize: }
+\DeclareDocumentCommand \normalsize { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \normalsize }
+ }
+ { \__fontscale_normalsize: }
+ }
\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 { } { \__fontscale_large: }
+\DeclareDocumentCommand \large { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \large }
+ }
+ { \__fontscale_large: }
+ }
\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 { } { \__fontscale_Large: }
+\DeclareDocumentCommand \Large { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \Large }
+ }
+ { \__fontscale_Large: }
+ }
\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 { } { \__fontscale_LARGE: }
+\DeclareDocumentCommand \LARGE { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \LARGE }
+ }
+ { \__fontscale_LARGE: }
+ }
\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 { } { \__fontscale_huge: }
+\DeclareDocumentCommand \huge { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \huge }
+ }
+ { \__fontscale_huge: }
+ }
\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 { } { \__fontscale_Huge: }
+\DeclareDocumentCommand \Huge { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \Huge }
+ }
+ { \__fontscale_Huge: }
+ }
\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
}
-% Initializes to \normalsize.
\normalsize
-\NewExpandableDocumentCommand \CurrentFontStep { }
- { \__fontscale_current_font_step: }
-\cs_new:Npn \__fontscale_current_font_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_case:Vn \l__fontscale_typographic_scale_str
- {
- { modular }
- {
- \fp_eval:n
- {
- ln ( \f@size / \l__fontscale_normalsize_size_fp )
- / ln ( \l__fontscale_modular_ratio_fp )
- }
- }
- { musical }
- {
- \fp_eval:n
- {
- \l__fontscale_musical_notes_fp
- * ln ( \f@size / \l__fontscale_normalsize_size_fp )
- / ln ( \l__fontscale_musical_ratio_fp )
- }
- }
- }
- }
- }
+\NewExpandableDocumentCommand \CurrentFontStep { } { \__fontscale_step: }
+\cs_new:Npn \__fontscale_step:
+ { \fp_if_nan:nF { \l_fontscale_step_fp } { \fp_use:N \l_fontscale_step_fp } }
-\NewExpandableDocumentCommand \CurrentFontScale { }
- { \__fontscale_current_font_scale: }
-\cs_new:Npn \__fontscale_current_font_scale:
- { \fp_eval:n { \f@size / \l__fontscale_normalsize_size_fp } }
+\NewExpandableDocumentCommand \CurrentFontScale { } { \__fontscale_scale: }
+\cs_new:Npn \__fontscale_scale: { \fp_use:N \l_fontscale_scale_fp }
-\NewExpandableDocumentCommand \CurrentFontSize { }
- { \__fontscale_current_font_size: }
-\cs_new:Npn \__fontscale_current_font_size: { \f@size pt }
+\NewExpandableDocumentCommand \CurrentFontSize { } { \__fontscale_size: }
+\cs_new:Npn \__fontscale_size: { \dim_use:N \l_fontscale_size_dim }
\NewExpandableDocumentCommand \CurrentFontBaselineskip { }
- { \__fontscale_current_font_baselineskip: }
-\cs_new:Npn \__fontscale_current_font_baselineskip: { \f@baselineskip }
+ { \__fontscale_baselineskip: }
+\cs_new:Npn \__fontscale_baselineskip:
+ { \skip_use:N \l_fontscale_baselineskip_skip }
\NewDocumentCommand \SetFontStep { s m }
{
- \IfBooleanTF #1
- { \__fontscale_add_font_step:n {#2} }
- { \__fontscale_set_font_step:n {#2} }
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \SetFontStep }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_add_font_step:n {#2} }
+ { \__fontscale_set_font_step:n {#2} }
+ }
+ }
+\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 } }
}
% Using \str_case: here is significantly faster (and easier to write) than
% repeatedly testing \fp_compare:.
\cs_new_protected:Npn \__fontscale_set_font_step:n #1
{
- \str_case:enF { \fp_eval:n {#1} }
+ \fp_set:Nn \l__fontscale_tmp_fp { round ( #1 , 5 ) }
+ \str_case:enF { \fp_use:N \l__fontscale_tmp_fp }
{
{ -4 } { \tiny }
{ -3 } { \scriptsize }
@@ -1020,243 +1097,233 @@
{ 5 } { \Huge }
}
{
- \str_case:VnF \l__fontscale_typographic_scale_str
+ \str_if_eq:VnTF \l__fontscale_typographic_scale_str { musical }
{
- { modular }
- {
- \__fontscale_fontsize:n
- {
- \fp_to_dim:n
- {
- \l__fontscale_normalsize_size_fp
- * \l__fontscale_modular_ratio_fp ^ (#1)
- }
- }
- }
- { musical }
- {
- \__fontscale_fontsize:n
- {
- \fp_to_dim:n
- {
- \l__fontscale_normalsize_size_fp
- * \l__fontscale_musical_ratio_fp
- ^ ( (#1) / \l__fontscale_musical_notes_fp )
- }
- }
- }
+ \__fontscale_set_font_size:n
+ {
+ \fp_to_dim:n
+ {
+ \l__fontscale_musical_base_fp
+ * \l__fontscale_musical_ratio_fp
+ ^ ( \l__fontscale_tmp_fp / \l__fontscale_musical_notes_fp )
+ }
+ }
+ }
+ {
+ \msg_error:nne { fontscale } { font-step-out-of-bounds }
+ { \fp_use:N \l__fontscale_tmp_fp }
}
- { \msg_error:nn { fontscale } { font-step-out-of-bounds } }
}
}
-\cs_new_protected:Npn \__fontscale_add_font_step:n #1
- {
- \tl_set:Ne \l__fontscale_step_tl { \__fontscale_current_font_step: }
- \tl_if_empty:NTF \l__fontscale_step_tl
- { \msg_error:nn { fontscale } { current-font-step-out-of-bounds } }
- { \__fontscale_add_font_step_aux:n { (#1) + \l__fontscale_step_tl } }
- }
-\cs_new_eq:NN \__fontscale_add_font_step_aux:n \__fontscale_set_font_step:n
\NewDocumentCommand \SetFontScale { s m }
{
- \IfBooleanTF #1
- { \__fontscale_add_font_scale:n {#2} }
- { \__fontscale_set_font_scale:n {#2} }
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \SetFontScale }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_add_font_scale:n {#2} }
+ { \__fontscale_set_font_scale:n {#2} }
+ }
}
+\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) } }
+ \__fontscale_set_font_size:n
+ { \fp_to_dim:n { (#1) * \l__fontscale_normalsize_size_fp } }
}
-\cs_new_protected:Npn \__fontscale_add_font_scale:n #1
+
+\NewDocumentCommand \SetFontSize
+ { s >{ \__fontscale_arg_to_dim_default_pt:n } m }
{
- \__fontscale_fontsize:n
- { \fp_to_dim:n { \l__fontscale_normalsize_size_fp * (#1) + \f@size } }
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \SetFontSize }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_add_font_size:n {#2} }
+ { \__fontscale_set_font_size:n {#2} }
+ }
}
+\cs_new_protected:Npn \__fontscale_add_font_size:n #1
+ { \__fontscale_set_font_size:n { (#1) + \l_fontscale_size_dim } }
-\NewDocumentCommand \SetFontSize { s m }
+\NewDocumentCommand \ScaleFont { m }
{
- \IfBooleanTF #1
- { \__fontscale_add_font_size:n {#2} }
- { \__fontscale_set_font_size:n {#2} }
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \ScaleFont }
+ }
+ { \__fontscale_scale_font:n {#1} }
}
-\cs_new_eq:NN \__fontscale_set_font_size:n \__fontscale_fontsize:n
-\cs_new_protected:Npn \__fontscale_add_font_size:n #1
+\cs_new_protected:Npn \__fontscale_scale_font:n #1
{
- \__fontscale_dim_set_with_default_pt:Nn \l__fontscale_size_dim {#1}
- \dim_add:Nn \l__fontscale_size_dim { \f@size pt }
- \__fontscale_fontsize:n { \l__fontscale_size_dim }
+ \fp_set:Nn \l__fontscale_tmp_fp {#1}
+ \__fontscale_set_font_size:nn
+ { \fp_to_dim:n { \l__fontscale_tmp_fp * \l_fontscale_size_dim } }
+ {
+ \fp_to_dim:n { \l__fontscale_tmp_fp * \l_fontscale_baselineskip_skip }
+ }
}
-\NewDocumentCommand \ScaleFont { m }
- { \__fontscale_scale_font_size_baselineskip:n {#1} }
-\cs_new_protected:Npn \__fontscale_scale_font_size_baselineskip:n #1
+\NewDocumentCommand \SetFontSizeBaselineskip
+ {
+ >{ \__fontscale_arg_to_dim_default_pt:n } m
+ >{ \__fontscale_arg_to_skip_default_pt:n } m
+ }
{
- \__fontscale_fontsize:nn
- { \fp_to_dim:n { \f@size * (#1) } }
- { \fp_to_dim:n { \dim_to_fp:n { \f@baselineskip } * (#1) } }
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \SetFontSizeBaselineskip }
+ }
+ { \__fontscale_set_font_size:nn {#1} {#2} }
}
-\NewDocumentCommand \SetFontSizeBaselineskip { m m }
- { \__fontscale_set_font_size_baselineskip:nn {#1} {#2} }
-\cs_new_eq:NN \__fontscale_set_font_size_baselineskip:nn
- \__fontscale_fontsize:nn
+\NewDocumentCommand \SetFontBaselineskip
+ { s >{ \__fontscale_arg_to_skip_default_pt:n } m }
+ {
+ \mode_if_math:TF
+ {
+ \msg_warning:nne { fontscale } { math-mode-warning }
+ { \token_to_str:N \SetFontBaselineskip }
+ }
+ {
+ \IfBooleanTF #1
+ { \__fontscale_add_font_baselineskip:n {#2} }
+ { \__fontscale_set_font_baselineskip:n {#2} }
+ }
+ }
+\cs_new_protected:Npn \__fontscale_add_font_baselineskip:n #1
+ {
+ \__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 \PrintFontParameters { }
- { \__fontscale_print_font_parameters: }
-\cs_new_protected:Npn \__fontscale_print_font_parameters:
+\NewDocumentCommand \PrintFontSizeParameters { }
+ { \__fontscale_print_font_size_parameters: }
+\cs_new_protected:Npn \__fontscale_print_font_size_parameters:
{
- step ~=~ \__fontscale_current_font_step: ,~
- scale ~=~ \__fontscale_current_font_scale: ,~
- size ~=~ \__fontscale_current_font_size: ,~
- baselineskip ~=~ \__fontscale_current_font_baselineskip:
+ step ~=~ \__fontscale_step: ,~
+ scale ~=~ \__fontscale_scale: ,~
+ size ~=~ \__fontscale_size: ,~
+ baselineskip ~=~ \__fontscale_baselineskip:
}
-\NewDocumentCommand \PrintAllFontParameters { }
- { \__fontscale_print_all_font_parameters: }
-\cs_new_protected:Npn \__fontscale_print_all_font_parameters:
+\NewDocumentCommand \PrintAllFontSizeParameters { }
{
- \tl_map_inline:Nn \c__fontscale_names_tl
+ \mode_if_math:TF
+ {
+ \msg_error:nne { fontscale } { math-mode-error }
+ { \token_to_str:N \PrintAllFontSizeParameters }
+ }
+ { \__fontscale_print_all_font_size_parameters: }
+ }
+\cs_new_protected:Npn \__fontscale_print_all_font_size_parameters:
+ {
+ \tl_map_inline:nn
+ {
+ {tiny} {scriptsize} {footnotesize} {small} {normalsize}
+ {large} {Large} {LARGE} {huge} {Huge}
+ }
{
- \prop_get:cnN { l_fontscale_##1_prop } { step } \l__fontscale_step_tl
- \prop_get:cnN { l_fontscale_##1_prop } { scale } \l__fontscale_scale_tl
\token_to_str:c {##1} \@ \c_colon_str \c_space_tl
- step ~=~ \l__fontscale_step_tl ,~
- scale ~=~ \l__fontscale_scale_tl ,~
- size ~=~ \dim_use:c { l_fontscale_##1_size_dim } ,~
- baselineskip ~=~ \skip_use:c { l_fontscale_##1_baselineskip_skip }
+ 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 } } ,~
+ 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 O
- {
- The~ \texttt { fontscale }~ package \c_colon_str \c_space_tl
- A~ user~ interface~ for~ setting~ document~ font~ sizes
- }
- }
+\NewDocumentCommand \PrintSampleText { >{ \ReverseBoolean } s +m }
{
- \IfBooleanTF #1
- { \__fontscale_print_sample_text_descending_order:n {#2} }
- { \__fontscale_print_sample_text_ascending_order:n {#2} }
+ \mode_if_math:TF
+ {
+ \msg_error:nne { fontscale } { math-mode-error }
+ { \token_to_str:N \PrintSampleText }
+ }
+ {
+ \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
{
- { \tiny #1 \par }
- { \scriptsize #1 \par }
- { \footnotesize #1 \par }
- { \small #1 \par }
- { \normalsize #1 \par }
- { \large #1 \par }
- { \Large #1 \par }
- { \LARGE #1 \par }
- { \huge #1 \par }
- { \Huge #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
{
- { \Huge #1 \par }
- { \huge #1 \par }
- { \LARGE #1 \par }
- { \Large #1 \par }
- { \large #1 \par }
- { \normalsize #1 \par }
- { \small #1 \par }
- { \footnotesize #1 \par }
- { \scriptsize #1 \par }
- { \tiny #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 { } { \__fontscale_print_name: }
+\NewDocumentCommand \PrintFontSizeCommand { }
+ {
+ \mode_if_math:TF
+ {
+ \msg_error:nne { fontscale } { math-mode-error }
+ { \token_to_str:N \PrintFontSizeCommand }
+ }
+ { \__fontscale_print_name: }
+ }
\cs_new_protected:Npn \__fontscale_print_name:
{
- \dim_case:nn { \f@size pt }
+ \token_to_str:c
{
- { \l_fontscale_tiny_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_tiny_baselineskip_skip }
- { \token_to_str:N \tiny \prg_break: }
- }
- { \l_fontscale_scriptsize_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_scriptsize_baselineskip_skip }
- { \token_to_str:N \scriptsize \prg_break: }
- }
- { \l_fontscale_footnotesize_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_footnotesize_baselineskip_skip }
- { \token_to_str:N \footnotesize \prg_break: }
- }
- { \l_fontscale_small_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_small_baselineskip_skip }
- { \token_to_str:N \small \prg_break: }
- }
- { \l_fontscale_normalsize_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_normalsize_baselineskip_skip }
- { \token_to_str:N \normalsize \prg_break: }
- }
- { \l_fontscale_large_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_large_baselineskip_skip }
- { \token_to_str:N \large \prg_break: }
- }
- { \l_fontscale_Large_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_Large_baselineskip_skip }
- { \token_to_str:N \Large \prg_break: }
- }
- { \l_fontscale_LARGE_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_LARGE_baselineskip_skip }
- { \token_to_str:N \LARGE \@ \prg_break: }
- }
- { \l_fontscale_huge_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_huge_baselineskip_skip }
- { \token_to_str:N \huge \prg_break: }
- }
- { \l_fontscale_Huge_size_dim }
- {
- \skip_if_eq:nnT { \f@baselineskip }
- { \l_fontscale_Huge_baselineskip_skip }
- { \token_to_str:N \Huge \prg_break: }
- }
+ \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 }
}
- UNDEFINED \@
- \prg_break:
- \prg_break_point:
+ \@
}
% TEXT PURIFY
-\cs_new:Npn \__fontscale_text_purify_equivalent:n #1
+\NewExpandableDocumentCommand \__fontscale_use_none_sm:w { s m } { }
+\tl_map_inline:nn
{
- \bool_lazy_all:nT
- {
- { \tl_if_single_p:n {#1} }
- { \tl_if_single_token_p:n #1 }
- { \token_if_eq_meaning_p:NN #1 * }
- }
- { \use_none:n }
- }
-\text_declare_purify_equivalent:Nn \SetFontStep
- { \__fontscale_text_purify_equivalent:n }
-\text_declare_purify_equivalent:Nn \SetFontScale
- { \__fontscale_text_purify_equivalent:n }
-\text_declare_purify_equivalent:Nn \SetFontSize
- { \__fontscale_text_purify_equivalent:n }
+ \fontscalesetup
+ \SetFontStep
+ \SetFontScale
+ \SetFontSize
+ \SetFontBaselineskip
+ }
+ { \text_declare_purify_equivalent:Nn #1 { \__fontscale_use_none_sm:w } }
\text_declare_purify_equivalent:Nn \ScaleFont { \use_none:n }
\text_declare_purify_equivalent:Nn \SetFontSizeBaselineskip { \use_none:nn } \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/fontsetup/fontsetup.sty b/Master/texmf-dist/tex/latex/fontsetup/fontsetup.sty
index 6656d2a95ff..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/2/24 v2.1.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,32 +46,91 @@
\if@varnothing
\if@newcmbb
\setmathfont[StylisticSet=2,StylisticSet=3,CharacterVariant=1]{NewCMMath-\regularorbook.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{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{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{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{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[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{NewCMMath-Bold.otf}[version=bold,StylisticSet=3]%
+ \setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-\regularorbook.otf}
\else
\setmathfont{NewCMMath-\regularorbook.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}
@@ -91,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 05a40a7f019..6453568639f 100644
--- a/Master/texmf-dist/tex/latex/fontsetup/fspdefault.tex
+++ b/Master/texmf-dist/tex/latex/fontsetup/fspdefault.tex
@@ -94,6 +94,7 @@ SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Book.otf}
]{NewCMUncial10-Book.otf}
\newcommand{\textuncial}[1]{{\uncial #1}}
\setmathfont{NewCMMath-Book.otf}
+\setmathfont{NewCMMath-Bold.otf}[version=bold]
\setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-Book.otf}
\newcommand{\tttextsc}[1]{{\ttscshape#1}}
%
@@ -299,6 +300,12 @@ SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Book.otf}
% 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,%
diff --git a/Master/texmf-dist/tex/latex/fontsetup/fspebgaramondot.tex b/Master/texmf-dist/tex/latex/fontsetup/fspebgaramondot.tex
index 8d8802fbd66..7961849540b 100644
--- a/Master/texmf-dist/tex/latex/fontsetup/fspebgaramondot.tex
+++ b/Master/texmf-dist/tex/latex/fontsetup/fspebgaramondot.tex
@@ -2,4 +2,13 @@
\setmainfont[ItalicFont=EBGaramond-Italic.otf,
BoldFont=EBGaramond-Bold.otf,
BoldItalicFont=EBGaramond-BoldItalic.otf,SmallCapsFeatures={Numbers=OldStyle}]{EBGaramond-Regular.otf}
-\setmathfont{Garamond-Math.otf} \ No newline at end of file
+\setsansfont[ItalicFont=Ysabeau-Italic.otf,
+BoldFont=Ysabeau-Bold.otf,BoldItalicFont=Ysabeau-BoldItalic.otf,Scale=MatchLowercase,
+SmallCapsFeatures={Numbers=OldStyle}]{Ysabeau-Regular.otf}
+
+%\newfontfamily{\greekfont}[ItalicFont=EBGaramond-Italic.otf,
+%BoldFont=EBGaramond-Bold.otf,
+%BoldItalicFont=EBGaramond-BoldItalic.otf,SmallCapsFeatures={Numbers=OldStyle}]{EBGaramond-Regular.otf}
+%
+\setmathfont{Garamond-Math.otf}
+
diff --git a/Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex b/Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex
index 48f3bd948a7..796f3c21330 100644
--- a/Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex
+++ b/Master/texmf-dist/tex/latex/fontsetup/fspolddefault.tex
@@ -98,6 +98,7 @@ SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Regular.otf}
\newcommand{\textuncial}[1]{{\uncial #1}}
\setmathfont{NewCMMath-Regular.otf}
+\setmathfont{NewCMMath-Bold.otf}[version=bold]
\setmathfont[range={\mathscr,\mathbfscr},StylisticSet=1]{NewCMMath-Regular.otf}
\newcommand{\tttextsc}[1]{{\ttscshape#1}}
@@ -304,6 +305,12 @@ SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Regular.otf}
% 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,%
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/fourier/fourier-orns.sty b/Master/texmf-dist/tex/latex/fourier/fourier-orns.sty
index 265b33a70e7..e94e4de773a 100644
--- a/Master/texmf-dist/tex/latex/fourier/fourier-orns.sty
+++ b/Master/texmf-dist/tex/latex/fourier/fourier-orns.sty
@@ -1,6 +1,6 @@
\NeedsTeXFormat{LaTeX2e}
-\def\fileversion{2.3}
-\def\filedate{2022/02/05}
+\def\fileversion{2.4}
+\def\filedate{2024/09/08}
\ProvidesPackage{fourier-orns}%
[\filedate\space\fileversion\space fourier-ornaments package]
@@ -66,11 +66,21 @@
\newcommand*{\starredbullet}{\texorpdfstring{{\FourierOrns X}}{\textdagger}}
\newcommand*{\grimace}{\texorpdfstring{{\FourierOrns Y}}{\textdagger}}
\newcommand*{\textthing}{\texorpdfstring{{\FourierOrns Z}}{\textdagger}}
+\newcommand*{\aldinesmallup}{\texorpdfstring{{\FourierOrns c}}{\textdagger}}
+\newcommand*{\aldinesmallrevert}{\texorpdfstring{{\FourierOrns d}}{\textdagger}}
+\newcommand*{\leftblackhand}{\texorpdfstring{{\FourierOrns m}}{\textdagger}}
+\newcommand*{\rightblackhand}{\texorpdfstring{{\FourierOrns n}}{\textdagger}}
%
\newcommand*{\danger}{\PackageWarning{fourier-orns}{%
Command \protect\danger\space is deprecated.\MessageBreak
Use \protect\warning\space instead; reported}%
\warning}
%
+\ifFourier@TU
+\newcommand*{\grappe}{\texorpdfstring{{\FourierOrns \char"2766}}{\textdagger}}
+\newcommand*{\leftgrappe}{\texorpdfstring{{\FourierOrns \char"2619}}{\textdagger}}
+\newcommand*{\rightgrappe}{\texorpdfstring{{\FourierOrns \char"2767}}{\textdagger}}
+\fi
+%
%
\endinput
diff --git a/Master/texmf-dist/tex/latex/fourier/fourier.sty b/Master/texmf-dist/tex/latex/fourier/fourier.sty
index e29a07d07d9..2ebb35c77cb 100644
--- a/Master/texmf-dist/tex/latex/fourier/fourier.sty
+++ b/Master/texmf-dist/tex/latex/fourier/fourier.sty
@@ -1,5 +1,6 @@
-\def\fileversion{2.3}%
-\def\filedate{2022/02/05}%
+\def\fileversion{2.4}%
+\def\filedate{2024/09/08}%
+%new version number, but inchanged file : only fourier-orns have been updated.
\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{fourier}%
[\filedate\space\fileversion\space fourier-GUTenberg package]%
diff --git a/Master/texmf-dist/tex/latex/fourier/ufuts.fd b/Master/texmf-dist/tex/latex/fourier/ufuts.fd
index 533bbf61e14..71bcdf23059 100644
--- a/Master/texmf-dist/tex/latex/fourier/ufuts.fd
+++ b/Master/texmf-dist/tex/latex/fourier/ufuts.fd
@@ -5,7 +5,7 @@
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{ufuts.fd}
- [2021/11/24 Fontinst v1.933 font definitions for U/futs.]
+ [2024/07/22 Fontinst v1.933 font definitions for U/futs.]
\DeclareFontFamily{U}{futs}{}
@@ -39,7 +39,7 @@
\DeclareFontShape{U}{futs}{m}{it}{<->ssub * futs/m/sl}{}
\DeclareFontShape{U}{futs}{sb}{it}{<->ssub * futs/sb/sl}{}
-\DeclareFontShape{U}{futs}{b}{it}{<->ssub * futs/sb/it}{}
+\DeclareFontShape{U}{futs}{b}{it}{<->ssub * futs/b/sl}{}
\DeclareFontShape{U}{futs}{bx}{it}{<->ssub * futs/b/it}{}
\DeclareFontShape{U}{futs}{bx}{n}{<->ssub * futs/b/n}{}
\DeclareFontShape{U}{futs}{bx}{sl}{<->ssub * futs/b/sl}{}
diff --git a/Master/texmf-dist/tex/latex/framedsyntax/FramedSyntax.sty b/Master/texmf-dist/tex/latex/framedsyntax/FramedSyntax.sty
new file mode 100644
index 00000000000..42aed89ce90
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/framedsyntax/FramedSyntax.sty
@@ -0,0 +1,257 @@
+%%
+%% This is file `FramedSyntax.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% FramedSyntax.dtx (with options: `package')
+%%
+%% Copyright (C) 2024 Claudio Beccari all rights reserved.
+%%
+%% 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
+%%
+\NeedsTeXFormat{LaTeX2e}[2019/01/01]
+\ProvidesPackage{FramedSyntax}%
+ [2024-09-04 v.0.2.8 Typeset command syntax within a special frame]
+\IfPackageLoadedF{pict2e}{\RequirePackage{pict2e}}
+\IfPackageLoadedF{etoolbox}{\RequirePackage{etoolbox}}
+\IfPackageLoadedF{xkeyval}{\RequirePackage{xkeyval}}
+\IfPackageLoadedF{xcolor}{\RequirePackage{xcolor}}
+\providecommand*\FSmeta[1]{\textnormal{$\langle$\textit{#1}$\rangle$}}
+\providecommand*\FSmarg[1]%
+ {\textnormal{\texttt{\char123}\FSmeta{#1}\texttt{\char125}}}
+\providecommand*\FSoarg[1]{\textnormal{\texttt{[}\FSmeta{#1}\texttt{]}}}
+\providecommand*\FSArg[1]{\textnormal{\texttt{\{#1\}}}}
+\let\FSMarg\FSArg
+\providecommand*\FSOarg[1]{\textnormal{\texttt{[#1]}}}
+\def\GT@splitargs#1,#2!{\def\@tempA{#1}\def\@tempB{#2}}
+\providecommand\FSgarg[1]{\textnormal{\GT@splitargs#1!\%
+ \texttt{(}\FSmeta{\@tempA}\texttt{,}\FSmeta{\@tempB}\texttt{)}}}
+\providecommand*\FScomando[1]{\textnormal{\texttt{\string#1}}}
+\providecommand*{\FScs}[1]%
+{\textnormal{\texttt{\char92#1}\index{#1@\texttt{\char92#1}|textsc}}}
+\let\FScsindex\FScs
+\providecommand*\SFSambiente[2]{%
+\FScomando{\begin}\FSmarg{#1}\FSoarg{#2}\,\dots
+ \FScomando{\end}\FSmarg{#1}}
+\providecommand*\DFSambiente[3]{%
+ \FScomando{\begin}\FSmarg{#1}\FSoarg{#2}\FSoarg{#3}\,\dots
+ \FScomando{\end}\FSmarg{#1}}
+\providecommand*\BFSambiente[1]{\FScomando{\begin}\FSmarg{#1}}
+\providecommand*\EFSambiente[1]{\FScomando{\end}\FSmarg{#1}}
+\IfPackageLoadedF{cfr-lm}{\let\texttm\texttt \let\texttv\texttt}
+\DeclareRobustCommand*\FSambstyle[1]{%
+ {\normalfont\textsf{\slshape#1}}}
+\DeclareRobustCommand*\FSclassstyle[1]{%
+ {\normalfont\texttv{\itshape#1}}}
+\DeclareRobustCommand*\FSfilestyle[1]{%
+ {\normalfont\texttm{\texttt{#1}}}}
+\DeclareRobustCommand*\FSpackstyle[1]{%
+ {\normalfont\texttm{\ifbool{PDFTeX}{\textit}{\itshape}{#1}}}}%
+\DeclareRobustCommand*\FSprogstyle[1]{{\normalfont\textsf{#1}}}
+\DeclareRobustCommand*\FSprog[1]{\FSprogstyle{#1}%
+\iflanguage{english}{\index{program!#1@\FSprogstyle{#1}|textsc}}%
+ {\index{programma!#1@\FSprogstyle{#1}|textsc}}}%
+\DeclareRobustCommand*\FSpack[1]{\FSpackstyle{#1}%
+\iflanguage{english}{\index{package!#1@\FSpackstyle{#1}|textsc}}%
+ {\index{pacchetto!#1@\FSpackstyle{#1}|textsc}}}
+\DeclareRobustCommand*\FSclass[1]{\FSclassstyle{#1}%
+ \iflanguage{english}{\index{class!#1@\FSclassstyle{#1}|textsc}}%
+ {\index{classe!#1@\FSclassstyle{#1}|textsc}}}%
+\DeclareRobustCommand*\file[1]{\FSfilestyle{#1}%
+ \index{file!#1@\FSfilestyle{#1}|textsc}}%
+\DeclareRobustCommand*\FSamb[1]{\FSambstyle{#1}%
+ \iflanguage{english}%
+ {\index{environment!#1@\FSambstyle{#1}|textsc}}%
+ {\index{ambiente!#1@\FSambstyle{#1}|textsc}}}%
+\DeclareRobustCommand*\FSopzstyle[1]{%
+ {\normalfont\textsf{\slshape{#1}}}}%
+\DeclareRobustCommand*\FScontastyle[1]{{\normalfont\texttm{#1}}}
+\DeclareRobustCommand*\FSstilestyle[1]{{\normalfont\texttm{#1}}}
+\DeclareRobustCommand*\FSnumeristyle[1]{{\normalfont\texttm{#1}}}
+\DeclareRobustCommand*\FSumisurastyle[1]{{\normalfont\texttm{#1}}}
+\DeclareRobustCommand*\FSchiavestyle[1]{{\normalfont\texttm{#1}}}
+\DeclareRobustCommand*\FSdescrittorestyle[1]{{\normalfont\texttm{#1}}}
+\DeclareRobustCommand*\FSposizionestyle[1]{{\normalfont\texttm{#1}}}
+\DeclareRobustCommand*\FSallineamentostyle[1]{{\normalfont\texttm{#1}}}
+\DeclareRobustCommand*\FSopz[1]{\opzstyle{#1}%
+ \iflanguage{english}{\index{option!#1@\FSopzstyle{#1}|textsc}}%
+ {\index{opzione!#1@\opzstyle{#1}|textsc}}}%
+\DeclareRobustCommand*\FSconta[1]{\Fcontastyle{#1}%
+ \iflanguage{english}{\index{counter!#1@\FScontastyle{#1}|textsc}}%
+ {\index{contatore!#1@\FScontastyle{#1}|textsc}}}
+\DeclareRobustCommand*\FSstile[1]{\FSstilestyle{#1}%
+ \iflanguage{english}{\index{page style!#1@\FSstilestyle{#1}|textsc}}%
+ {\index{stile della pagina!#1@\FSstilestyle{#1}|textsc}}}
+\DeclareRobustCommand*\FSnumeri[1]{\FSnumeristyle{#1}%
+ \iflanguage{english}{\index{numbering!#1@\FSnumeristyle{#1}|textsc}}%
+ {\index{numerazione!#1@\FSnumeristyle{#1}|textsc}}}
+\DeclareRobustCommand*\FSumisura[1]{\FSumisurastyle{#1}%
+ \iflanguage{english}{measuring unit!#1@\FSumisurastyle{#1}|textsc}%
+ {\index{unità di misura!#1@\FSumisurastyle{#1}|textsc}}}
+\DeclareRobustCommand*\FSchiave[1]{\FSchiavestyle{#1}%
+ \iflanguage{english}{\index{key!#1@\FSchiavestyle{#1}|textsc}}%
+ {\index{chiave!#1@\chiavestyle{#1}|textsc}}}
+\DeclareRobustCommand*\FSdescrittore[1]{\FSdescrittorestyle{#1}%
+ \iflanguage{english}%
+ {\index{column descriptor!#1@\FSdescrittorestyle{#1}|textsc}}%
+ {\index{descrittore di colonna!#1@\FSdescrittorestyle{#1}|textsc}}}
+\DeclareRobustCommand*\FSposizione[1]{\FSposizionestyle{#1}%
+ \iflanguage{english}%
+ {\index{floating object position!#1@\FSposizionestyle{#1}|textsc}}%
+ {\index{posizione degli oggetti flottanti!#1@\FSposizionestyle{#1}|textsc}}}%
+\DeclareRobustCommand*\FSallineamento[1]{FS\allineamentostyle{#1}%
+ \iflanguage{english}%
+ {\index{allignment code!#1@\FSallineamentostyle{#1}|textsc}}%
+ {\index{codice di allineamento!#1@\FSallineamentostyle{#1}|textsc}}}
+\newlength\SIfrthick
+\newlength\SIfrgap
+\newlength\SIfrwidth
+\newlength\SIfrheight
+\ifcsdef{insertwidth}{}{\newlength\insertwidth}
+\newlength\SIXR \newlength\SIYD
+\newlength\SIXL \newlength\SIYU
+\newdimen\radius
+\newdimen\framewidth
+
+\definecolor{SIbackground}{rgb}{0.95,0.95,0.95}
+\definecolor{SIframe}{rgb}{0.1,0.1,0.1}
+\definecolor{SItext}{rgb}{0,0,0}
+
+\def\SetSIbgd#1{\colorlet{SIbackground}{#1}}
+\def\SetSIfrm#1{\colorlet{SIframe}{#1}}
+\def\SetSItxt#1{\colorlet{SItext}{#1}}
+
+\DeclareOptionX<sintassi>{fboxrule}[1pt]{\fboxrule=#1}
+\DeclareOptionX<sintassi>{fboxsep}[1ex]{\fboxsep=#1}
+\DeclareOptionX<sintassi>{framecolor}[SIframe]{\SetSIfrm{#1}}
+\DeclareOptionX<sintassi>{backgroundcolor}[SIbackground]{\SetSIbgd{#1}}
+\DeclareOptionX<sintassi>{fontstyle}[\normalfont]{#1}
+\DeclareOptionX<sintassi>{radius}[\fboxsep]{\radius=#1}
+\DeclareOptionX<sintassi>{insertionwidth}[\linewidth]{\insertwidth=#1}
+
+\DeclareOptionX*{%
+ \packageWarning{FramedSyntax}{`\CurrentOption' ignored}%
+}
+
+\ExecuteOptionsX<sintassi>{%
+ fboxrule,
+ fboxsep,
+ framecolor,
+ backgroundcolor,
+ fontstyle,
+ radius,
+ insertionwidth
+}
+\ProcessOptionsX*\relax
+
+\providecommand\setfontsize{}
+\RenewDocumentCommand\setfontsize{O{1.2} m O{#1}}{%
+ \fontsize{#2}{\fpeval{#1*#2}}\selectfont}
+
+\providecommand\strippt{}
+\renewcommand\strippt[1]{\csuse{strip@pt}#1}
+
+\providecommand\framedbox{}
+\RenewDocumentCommand\framedbox{m m m O{#3} m}{%
+\bgroup
+ \dimen2=#1\relax
+ \dimen0=\dimexpr#1-(#2+#3)*2\relax
+ \setbox0\hbox{\parbox{\dimen0}{#5}}%
+ \SIfrthick=#2\relax
+ \SIXR=\dimexpr\wd0/2\relax \SIXL=-\SIXR\relax
+ \SIYU=\dimexpr(\ht0+\dp0)/2\relax \SIYD=-\SIYU\relax
+ \dimen4=#1\relax % box total width
+ \dimen6=\dimexpr\ht0+\dp0+(#2+#3)*2\relax% box total height
+ \dimen8=#4\relax % corner arc radius
+ \edef\SIbase{\strippt{\dimen4}}
+ \edef\SIalt{\strippt{\dimen6}}
+ \edef\SIxoff{\strippt{\dimexpr0.5\dimen4}}
+ \edef\SIyoff{\strippt{\dimexpr0.5\dimen6}}
+ \unitlength=1pt
+ \begin{picture}(\SIbase,\SIalt)(-\SIxoff,-\SIyoff)
+ \Frame*{\dimen4}{\dimen6}{\dimen8}%
+ \ifdim\SIfrthick>0pt\Frame{\dimen4}{\dimen6}{\dimen8}\fi
+ \put(0,0){\makebox(0,0){\box0}}%
+ \end{picture}
+\egroup
+\ignorespaces}
+
+ \providecommand\Frame{}
+ \RenewDocumentCommand\Frame{s m m m}{%
+ \bgroup
+ \SIXR=\dimexpr#2/2\relax \SIXL=-\SIXR%
+ \SIYU=\dimexpr#3/2\relax \SIYD=-\SIYU%
+ \IfBooleanTF{#1}{\linethickness{0pt}\color{SIbackground}}%
+ {\linethickness{\SIfrthick}\color{SIframe}}%
+ \moveto(\SIXR,\SIYD+#4)%
+ \circlearc{\SIXR-#4}{\SIYU-#4}{#4}{0}{90}%
+ \circlearc{\SIXL+#4}{\SIYU-#4}{#4}{90}{180}%
+ \circlearc{\SIXL+#4}{\SIYD+#4}{#4}{180}{270}%
+ \circlearc{\SIXR-#4}{\SIYD+#4}{#4}{270}{360}%
+ \closepath
+ \IfBooleanTF{#1}{\fillpath}{\strokepath}%
+ \egroup\ignorespaces}
+
+
+\providecommand\includeframedtext{}
+\RenewDocumentCommand\includeframedtext{O{\insertwidth} m O{}}%
+{\bgroup
+ \ExecuteOptionsX<sintassi>{#3}%
+ \ifdimgreater{\insertwidth}{\linewidth}{\insertwidth=\linewidth}{}%
+ \framedbox{\insertwidth}{\fboxrule}{\fboxsep}[\radius]{#2}%
+\egroup}
+
+\ProvideDocumentEnvironment{FramedSyntax}{}{}{}
+\RenewDocumentEnvironment{FramedSyntax}{o D(){}}
+{% environment opening commands
+\IfValueT{#1}{\setfontsize{#1}}% font size setting
+\ExecuteOptionsX<sintassi>{#2}% key = value options
+ \ifdimgreater{\insertwidth}{\linewidth}% width corrrection
+ {\insertwidth=\linewidth}{}%
+\framewidth=\insertwidth
+\let\meta\FSmeta \let\marg\FSmarg \let\oarg\FSoarg
+\let\Arg\FSArg \let\Marg\FSMarg \let\Oarg\FSOarg
+\let\garg\FSgarg \let\comando\FScomando \let\cs\FScs
+\let\csindex\FScs \let\Sambiente\SFSambiente
+\let\Dambiente\DFSambiente
+\let\Bambiente\BFSambiente \let\Eambiente\EFSambiente
+\let\amb\FSamb \let\ambstyle\FSambstyle
+\let\class\FSclass \let\classstyle\FSclassstyle
+\let\file\FSfile \let\filestyle\FSfilestyle
+\let\pack\FSpack \let\packstyle\FSpackstyle
+\let\prog\FSprog \let\progstyle\FSprogstyle
+\let\opz\FSopz \let\opzstyle\FSopzstyle
+\let\conta\FSconta \let\contastyle\FScontastyle
+\let\stile\FSstile \let\stilestyle\FSstilestyle
+\let\numeri\FSnumeri \let\numerystyle\FSnumeristyle
+\let\umisura\FSumisura \let\umisurastyle\FSumisurastyle
+\let\chiave\FSchiave \let\chiavestyle\FSchiavestyle
+\let\descrittore\FSdescrittore
+\let\descrittorestyle\FSDescrittorestyle
+\let\posizione\FSposizione \let\posizionestyle\FSposizionestyle
+\let\allineamento\FSallineamento
+ \let\allineamentostyle\FSallineamentostyle
+
+\begin{lrbox}{2}% open the necessary boxes
+\begin{minipage}{%
+ \dimexpr\framewidth-2\fboxrule-2\fboxsep}\obeylines
+}{% environment closing commands
+\end{minipage}\end{lrbox}% close the above boxes
+\begin{flushleft}% set the syntax thext flush left
+\includeframedtext{\box2}[#2]
+\end{flushleft}}%
+
+\NewDocumentEnvironment{Sintassi}{o D(){}}%
+ {\begin{FramedSyntax}[#1](#2)}{\end{FramedSyntax}}
+
+%% This Work has the status of `maintained'
+%%
+%% The Current Maintainer is Claudio Beccari
+%%
+%% This work consists of this file FramedSyntax.dtx,
+%% and the derived files FramedSyntax.sty and FramedSyntax.pdf.
+%%
+%% End of file `FramedSyntax.sty'.
diff --git a/Master/texmf-dist/tex/latex/fvextra/fvextra.sty b/Master/texmf-dist/tex/latex/fvextra/fvextra.sty
index 03eb1dc27e3..14d494598a5 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/10/16 v1.9.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
@@ -1246,11 +1280,13 @@
\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,17 +1313,14 @@
\@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}}%
+ \setcounter{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
@@ -1298,8 +1331,7 @@
\FancyVerbFormatCom
\FV@Scan}
\def\FVE@VerbatimBuffer{%
- \expandafter\setcounter\expandafter{\FV@bufferlengthname}%
- {\value{FancyVerbBufferIndex}}%
+ \expandafter\xdef\FV@bufferlengthmacro{\theFancyVerbBufferIndex}%
\setcounter{FancyVerbBufferIndex}{0}%
\endgroup
\@esphack
@@ -1309,68 +1341,84 @@
\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
+ \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\value{FancyVerbBufferIndex}>\FV@bufferlengthmacro\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
- \FV@GetLine}%
+ \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
\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
- \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
+ \VerbatimInsertBuffer@i{#1}%
\setcounter{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}%
+ \setcounter{FancyVerbBufferIndex}{\FV@bufferlengthmacro}%
+ \expandafter\xdef\FV@bufferlengthmacro{0}%
\loop\unless\ifnum\value{FancyVerbBufferIndex}<1\relax
\expandafter\global\expandafter\let
\csname\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
@@ -1673,14 +1721,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 +1899,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 +2144,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 +2292,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 +2455,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 +3101,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 +3114,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/gelasiomath.sty b/Master/texmf-dist/tex/latex/gelasiomath/gelasiomath.sty
new file mode 100644
index 00000000000..e468d793de3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gelasiomath/gelasiomath.sty
@@ -0,0 +1,295 @@
+\NeedsTeXFormat{LaTeX2e}
+
+\def\fileversion{1.0}
+\def\filedate{2024/06/19}
+\ProvidesPackage{gelasiomath}[%
+\filedate\space v\fileversion (Michael Sharpe) Use xch small caps in gelasio text and supply matching math package]
+
+\message{`gelasiomath'v\fileversion,\space\filedate\space Load\space XCharter\space small\space caps\space as\space target\space for\space scshape\space and\space load\space newtx\space with\space appropriate\space options.\space (msharpe)}
+
+\RequirePackage{iftex,etoolbox,xkeyval,ifthen,xparse}
+\def\gelm@scale{1} % default value for scale option
+
+\DeclareOptionX{scale}{\def\gelm@scale{#1}}
+\newif\ifgelm@scosf
+\DeclareOptionX{scosf}{\gelm@scosftrue}
+%\newif\ifgelm@gelscfigs\gelm@gelscfigstrue
+%\DeclareOptionX{nogelfigs}{\gelm@gelscfigsfalse}
+
+\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{newtx}}
+
+\ProcessOptionsX \relax
+\@tempdima=\gelm@scale\p@
+\@tempdimb=.92\@tempdima % for gelasio text scale
+\@tempdimc=.938\@tempdima % for xcharter text
+\edef\gel@scale{\strip@pt\@tempdimb}
+\edef\XCharter@scale{\strip@pt\@tempdimc}
+\usepackage[gelasio,textscale=\gel@scale,mathscale=\gelm@scale]{newtx}
+%\AtBeginDocument{%
+% \expandafter\ifx\csname Gelasio@scale\endcsname\relax
+% \edef\Gelasio@scale{1}
+% \edef\XCharter@scale{1.02}
+% \else
+% \@tempdima=\Gelasio@scale\p@
+% \@tempdima=1.02\@tempdima%
+% \edef\XCharter@scale{\strip@pt\@tempdima}
+% \fi
+%} % AtBeginDocument
+\def\gelm@scit{scit}% for testing value of \f@shape
+\def\gelm@sc{sc}% for testing value of \f@shape
+
+\iftutex
+\AtBeginDocument{%
+\def\gelm@tufig{\addfontfeatures{RawFeature = -smcp , \ifgelm@scosf Numbers = OldStyle, \fi}}
+\addfontfeatures{UprightFeatures={SmallCapsFont={XCharter-Roman}, SmallCapsFeatures={%
+\ifgelm@scosf Numbers = OldStyle ,\fi
+ Letters=SmallCaps,
+Scale=\XCharter@scale}},%
+ItalicFeatures={SmallCapsFont={XCharter-Italic}, SmallCapsFeatures={%
+\ifgelm@scosf Numbers = OldStyle ,\fi
+Letters=SmallCaps, Scale=\XCharter@scale}},%
+BoldFeatures={SmallCapsFont={XCharter-Bold}, SmallCapsFeatures={%
+\ifgelm@scosf Numbers = OldStyle ,\fi
+Letters=SmallCaps, Scale=\XCharter@scale}},%
+BoldItalicFeatures={SmallCapsFont={XCharter-BoldItalic}, SmallCapsFeatures={%
+\ifgelm@scosf Numbers = OldStyle ,\fi
+Letters=SmallCaps, Scale=\XCharter@scale}}%
+}}
+\ifgelm@scosf
+ \AtBeginDocument{%
+ \xpretocmd{\scshape}
+ {\addfontfeatures{Numbers=OldStyle}}
+ {}{}%
+ }%
+\fi
+
+\else %not tutex
+ \AtBeginDocument{%
+ \ifgelm@scosf%
+ \def\gelm@fig{OsF}
+ \else % use default settings from gelasio.sty
+ \def\gelm@fig{\gelasio@figurealign\gelasio@figurestyle}
+ \fi
+ \edef\XCharter@@scale{s*[\csname XCharter@scale\endcsname]}%
+ \let\scshape\relax
+ \DeclareRobustCommand\scshape{%
+ \not@math@alphabet\scshape\relax
+ \fontfamily{XCharter-\gelm@fig}\fontshape\scdefault\selectfont}
+ %\DeclareTextCommand{\textsc}{\scshape}
+ }
+\fi
+
+%\newtoks\gel@SC % store for processed string
+%\newtoks\gel@src % store for source string
+%\def\gel@Append#1{% append #1 to token register \gel@SC
+%\toks0={#1}%
+%\edef\gel@tmpa{\noexpand\gel@SC={\the\gel@SC \the\toks0}}%
+%\gel@tmpa}
+%
+%\def\gel@Pop#1(into:)#2{%
+% \edef\gel@act{\noexpand\gel@SplitOff\the#1%
+% (gel@head:)\noexpand#2(gel@tail:)\noexpand#1}%
+% \gel@act}
+%\def\gel@SplitOff#1#2(gel@head:)#3(gel@tail:)#4{\def#3{\noexpand #1}#4={#2}}
+%
+%\def\nxt|#1#2\@nil{%
+%\toks0={#2}\edef\param{\the\toks0}%
+%\ifx\param\@empty%
+% \textsc{\the\gel@SC} % done
+%\else% continue parsing for capital letters
+% \ifthenelse{\isblank
+% \ifcat A#1 % #1 is letter
+% \if#1\uppercase{#1}%
+% \gel@Append{\textulc{#1}}%
+% \else
+% \gel@Append{#1}%
+% \fi
+% \else % not a letter
+% \gel@Append{#1}%
+% \fi
+% \nxt|#2\@nil%
+%\fi}
+%
+%\def\textSC#1{\gel@SC={}\nxt|#1\@nil}
+\def\textSC#1{\textsc{\capsescape{#1}}}
+\iftutex%
+ \def\textULC#1{{\gelasio\gelm@tufig%
+ \ifthenelse{\equal{\f@shape}{\gelm@scit}}{%shape is scit
+ \itshape}{% not so
+ \ifthenelse{\equal{\f@shape}{\gelm@sc}}{% shape is sc
+ \upshape}}%
+ \textulc{#1}}}
+
+\else
+ \def\textULC#1{{\fontfamily{Gelasio-\gelm@fig}%
+ \ifthenelse{\equal{\f@shape}{\gelm@scit}}{%shape is scit
+ \fontshape{it}}{% not so
+ \ifthenelse{\equal{\f@shape}{\gelm@sc}}{% shape is sc
+ \fontshape{n}}{}}%
+ \selectfont #1}}
+\fi
+\ExplSyntaxOn
+\NewDocumentCommand{\capsescape}{ m }
+ {
+ \gel_capsescape:n { #1 }
+ }
+
+\tl_new:N \l__gel_capsescape_input_tl
+\cs_new_protected:Npn \gel_capsescape:n #1
+ {
+ % store the string in a variable
+ \tl_set:Nn \l__gel_capsescape_input_tl {#1}
+ \regex_replace_all:nnN
+ % search for capital letters, figures and more
+ { ([A-Z\d]+|\cC.\{?[A-Z]+\}?) }
+ % replace the match with \textULC{<match>}
+ { \c{textULC}\cB\{\1\cE\} }
+ \l__gel_capsescape_input_tl
+ \tl_use:N \l__gel_capsescape_input_tl
+ }
+\ExplSyntaxOff
+
+
+% galasio.sty does not offer macros for numerators, denominators or inferiors
+\AtBeginDocument{%
+\ifgelasio@otf
+ \DeclareRobustCommand{\lfstyle}{%
+ \not@math@alphabet\lfstyle\relax
+ \addfontfeatures{Numbers={Proportional,Lining}}%
+ }
+
+ \DeclareRobustCommand{\tlfstyle}{%
+ \not@math@alphabet\tlfstyle\relax
+ \addfontfeatures{Numbers={Monospaced,Lining}}%
+ }
+ \DeclareRobustCommand{\osfstyle}{%
+ \not@math@alphabet\osfstyle\relax
+ \addfontfeatures{Numbers={Proportional,OldStyle}}%
+ }
+ \DeclareRobustCommand{\tosfstyle}{%
+ \not@math@alphabet\tosfstyle\relax
+ \addfontfeatures{Numbers={Monospaced,OldStyle}}%
+ }
+ \providecommand\nufigures{%
+ \addfontfeatures{VerticalPosition=Numerator}}
+ \providecommand\defigures{%
+ \addfontfeatures{VerticalPosition=Denominator}}
+ \providecommand\infigures{%
+ \addfontfeatures{VerticalPosition=Inferior}}
+
+ \DeclareTextFontCommand{\textnum}{\nufigures}
+ \DeclareTextFontCommand{\textde}{\defigures}
+ \DeclareTextFontCommand{\textinf}{\infigures}
+ \NewCommandCopy\textnu\textnum
+ \@ifundefined{tx@sfrSC}{}{%
+ \newcommand*{\textsmde}[1]{%
+ \setbox0=\hbox{\scalebox\tx@sfrSC{\textde{#1}}}\box0}}
+
+\else % type1 --we define \text.. by lowering \textsu
+ % missing font switches for type1
+ \DeclareRobustCommand{\lfstyle}{%
+ \not@math@alphabet\lfstyle\relax
+ \fontfamily{Gelasio-LF}\selectfont %
+ }
+ \DeclareRobustCommand{\tlfstyle}{%
+ \not@math@alphabet\tlfstyle\relax
+ \fontfamily{Gelasio-TLF}\selectfont %
+ }
+ \DeclareRobustCommand{\osfstyle}{%
+ \not@math@alphabet\osfstyle\relax
+ \fontfamily{Gelasio-OsF}\selectfont %
+ }
+ \DeclareRobustCommand{\tosfstyle}{%
+ \not@math@alphabet\tosfstyle\relax
+ \fontfamily{Gelasio-TOsF}\selectfont %
+ }
+ \newbox\tx@box
+ \newcommand*{\textde}[1]{{\setbox0=\hbox{\textsu{#1}}\setbox1=\hbox{\raise -.763ex \box0}\dp1=0pt\ht1=.977ex\box1\relax}}
+
+ \providecommand*\textnum[1]{\raisebox{.507ex}{\textde{#1}}}
+ \NewCommandCopy\textnu\textnum
+ \providecommand*\textinf[1]{\raisebox{-.237ex}{\textde{#1}}}
+ \let\textnu\textnum
+% \providecommand*\textde[1]{{\setbox0=\hbox{\textsu{#1}}%
+% \setbox1=\hbox{\lower.763ex\box0}\dp0=0pt\relax\box1\relax}}
+ %\raisebox{-.763ex}{\textsu{#1}}}
+ % the following will be used only by \textsfrac
+ \@ifundefined{tx@sfrSC}{}{%
+ \newcommand*{\textsmde}[1]{%
+ \setbox0=\hbox{\scalebox\tx@sfrSC{\textde{#1}}}\box0}%
+ }
+\fi
+\DeclareTextFontCommand{\textlf}{\lfstyle}
+\DeclareTextFontCommand{\texttlf}{\tlfstyle}
+\DeclareTextFontCommand{\textosf}{\osfstyle}
+\DeclareTextFontCommand{\texttosf}{\tosfstyle}
+} %\AtBeginDocument
+%\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
+% \ifnum\tx@debase=0
+% \newcommand*{\textsmde}[1]{%
+% \setbox0=\hbox{\scalebox\tx@sfrSC{\textde{#1}}}\box0}
+% \else
+% \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
+% \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
+\iftutex%
+ \def\gel@frslash{\symbol{"2044}}
+\else%
+ \def\gel@frslash{%
+ {\fontencoding{TS1}\selectfont\char"2F}}
+\fi
+
+\newcommand*{\geltextfrac}[3][]{% like \textfrac[1]{7}{8}
+ \mbox{%
+ \ifthenelse{\not\equal{#1}{}}%Test for integer portion [optional #1]
+ {\textlf{#1}\kern.02em}{}%
+ \textnum{#2}% numerator
+ \StrRight{#2}{1}[\@digit@]%
+ % look for 1, 2, 3, 7, 8
+ \ifcase\@digit@% 0
+ \or%\kern.03em% 1
+ \or\kern.04em% 2
+ \or%\kern-.01em% 3
+ \or\kern.02em% 4
+ \or\kern-.01em% 5
+ \or%\kern.01em% 6
+ \or\kern-.08em% 7
+ \or\kern.01em% 8
+ \or\kern-.02em% 9
+ \fi%
+% \kern\ntx@foresolidus{\fontencoding{TS1}\selectfont\char"2F}%
+% \kern\ntx@aftsolidus%
+ \gel@frslash%
+ \StrLeft{#3}{1}[\@digit@]%
+ % look for 1, 4, 7
+ \ifcase\@digit@% 0
+ \or\kern .01em% 1
+ \or\kern .01em% 2
+ \or\kern .01em% 3
+ \or\kern -.01em% 4
+ \or%\kern -.02em% 5
+ \or%\kern-.03em% 6
+ \or\kern .06em% 7
+ \or%\kern .01em% 8
+ \or\kern .01em% 9
+ \fi%
+ \textde{#3}% denominator [#3]
+ }%mbox
+} % \geltextfrac
+\@ifundefined{textfrac}{\NewCommandCopy\textfrac\geltextfrac}%
+{\RenewCommandCopy\textfrac\geltextfrac}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/gelasiomath/ly1mingelasio.fd b/Master/texmf-dist/tex/latex/gelasiomath/ly1mingelasio.fd
new file mode 100644
index 00000000000..5a76ba9518c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gelasiomath/ly1mingelasio.fd
@@ -0,0 +1,91 @@
+\ProvidesFile{ly1mingelasio.fd}
+ [2024/04/11 (msharpe) Font definitions for LY1/mingelasio.]
+
+\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
+\def\@textscalefactor{.92}
+%xgelasio must be reduced by factor .92 to match xheight of newtxmath
+
+
+\@ifundefined{ntxmath@scale}{\let\ntxmath@scaled\@empty}
+{\@tempdima\@textscalefactor\p@
+\@tempdima\ntxmath@scale\@tempdima
+\edef\ntxmath@scaled{s*[\strip@pt\@tempdima]}}% locally, not globally
+
+\DeclareFontFamily{LY1}{mingelasio}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{mingelasio}{m}{it}{
+ <-> \ntxmath@scaled Gelasio-Italic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{regular}{it}{
+ <-> alias * mingelasio/m/it
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{m}{n}{
+ <-> \ntxmath@scaled Gelasio-Regular-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{regular}{n}{
+ <-> alias * mingelasio/m/n
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{m}{sl}{
+ <-> ssub * mingelasio/m/it
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{regular}{sl}{
+ <-> ssub * mingelasio/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{mingelasio}{b}{n}{
+ <-> \ntxmath@scaled Gelasio-Bold-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{bold}{n}{
+ <-> alias * mingelasio/b/n
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{b}{it}{
+ <-> \ntxmath@scaled Gelasio-BoldItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{bold}{it}{
+ <-> alias * mingelasio/b/it
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{b}{sl}{
+ <-> ssub * mingelasio/b/it
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{bold}{sl}{
+ <-> ssub * mingelasio/bold/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{mingelasio}{bx}{n}{
+ <-> ssub * mingelasio/b/n
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{bx}{sl}{
+ <-> ssub * mingelasio/b/sl
+}{}
+
+\DeclareFontShape{LY1}{mingelasio}{bx}{it}{
+ <-> ssub * mingelasio/b/it
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/gelasiomath/omlzgelmi.fd b/Master/texmf-dist/tex/latex/gelasiomath/omlzgelmi.fd
new file mode 100644
index 00000000000..a9a6f612f47
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gelasiomath/omlzgelmi.fd
@@ -0,0 +1,30 @@
+%Filename: omlzgelmi.fd
+%Created by: tex zgel-drv
+%Created using msharpe
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{omlzgelmi.fd}
+ [2024/04/08 Fontinst v1.933 font definitions for OML/zgelmi.]
+
+\expandafter\ifx\csname ntxmath@scaled\endcsname\relax
+ \let\ntxmath@scaled\@empty%
+\fi
+
+
+\DeclareFontFamily{OML}{zgelmi}{\skewchar \font =127}
+
+\DeclareFontShape{OML}{zgelmi}{m}{it}{
+ <-> \ntxmath@scaled zgelmi
+}{}
+
+\DeclareFontShape{OML}{zgelmi}{b}{it}{
+ <-> \ntxmath@scaled zgelbmi
+}{}
+
+\DeclareFontShape{OML}{zgelmi}{m}{sl}{<->ssub * zgelmi/m/it}{}
+\DeclareFontShape{OML}{zgelmi}{bx}{it}{<->ssub * zgelmi/b/it}{}
+\DeclareFontShape{OML}{zgelmi}{b}{sl}{<->ssub * zgelmi/b/it}{}
+\DeclareFontShape{OML}{zgelmi}{bx}{sl}{<->ssub * zgelmi/b/sl}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/gelasiomath/ot1mingelasio.fd b/Master/texmf-dist/tex/latex/gelasiomath/ot1mingelasio.fd
new file mode 100644
index 00000000000..1bfed27c98b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gelasiomath/ot1mingelasio.fd
@@ -0,0 +1,78 @@
+\ProvidesFile{ot1mingelasio.fd}
+ [2024/04/11 (msharpe) Font definitions for OT1/mingelasio.]
+
+\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
+
+\def\@textscalefactor{.92}
+%xgelasio must be reduced by factor .92 to match xheight of newtxmath
+
+\@ifundefined{ntxmath@scale}{\let\ntxmath@scaled\@empty}
+{\@tempdima\@textscalefactor\p@
+\@tempdima\ntxmath@scale\@tempdima
+\edef\ntxmath@scaled{s*[\strip@pt\@tempdima]}}% locally, not globally
+
+\DeclareFontFamily{OT1}{mingelasio}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{mingelasio}{m}{n}{
+ <-> \ntxmath@scaled Gelasio-Regular-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{regular}{n}{
+ <-> alias * mingelasio/m/n
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{m}{it}{
+ <-> \ntxmath@scaled Gelasio-Italic-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{regular}{it}{
+ <-> alias * mingelasio/m/it
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{m}{sl}{
+ <-> ssub * mingelasio/m/it
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{regular}{sl}{
+ <-> ssub * mingelasio/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{mingelasio}{b}{n}{
+ <-> \ntxmath@scaled Gelasio-Bold-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{bold}{n}{
+ <-> alias * mingelasio/b/n
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{b}{it}{
+ <-> \ntxmath@scaled Gelasio-BoldItalic-tlf-ot1G
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{bold}{it}{
+ <-> alias * mingelasio/b/it
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{b}{sl}{
+ <-> ssub * mingelasio/b/it
+}{}
+
+\DeclareFontShape{OT1}{mingelasio}{bold}{sl}{
+ <-> ssub * mingelasio/bold/it
+}{}
+
+
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/gelasiomath/t1mingelasio.fd b/Master/texmf-dist/tex/latex/gelasiomath/t1mingelasio.fd
new file mode 100644
index 00000000000..da0a9da6553
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gelasiomath/t1mingelasio.fd
@@ -0,0 +1,51 @@
+\ProvidesFile{t1minelasio.fd}
+ [2024/04/14 (msharpe) Font definitions for T1/mingelasio.]
+
+%\def\@textscalefactor{.92}
+%xgelasio must be reduced by factor .92 to match xheight of newtxmath
+
+%\@ifundefined{newtxmathscale}{\def\newtxmathscale{1}}{}
+%\@tempdima\@textscalefactor\p@
+%\@tempdima\newtxmathscale\@tempdima
+%\xdef\newtxtext@scaled{s*[\strip@pt\@tempdima]}%global, not local
+
+\DeclareFontFamily{T1}{mingelasio}{}
+%\show\ntxtext@scaled
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{mingelasio}{b}{it}{
+ <-> \ntxtext@scaled Gelasio-BoldItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{mingelasio}{b}{n}{
+ <-> \ntxtext@scaled Gelasio-Bold-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{mingelasio}{b}{sl}{
+ <-> ssub * mingelasio/b/it
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{mingelasio}{m}{n}{
+ <-> \ntxtext@scaled Gelasio-Regular-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{mingelasio}{m}{it}{
+ <-> \ntxtext@scaled Gelasio-Italic-tlf-t1
+}{}
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{mingelasio}{bx}{n}{
+ <-> ssub * mingelasio/b/n
+}{}
+
+\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
new file mode 100644
index 00000000000..212e5b2386e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/gelasiomath/untxmia.fd
@@ -0,0 +1,139 @@
+%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/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/gridset/gridset.sty b/Master/texmf-dist/tex/latex/gridset/gridset.sty
index 00a11c2c83e..30ed1443293 100644
--- a/Master/texmf-dist/tex/latex/gridset/gridset.sty
+++ b/Master/texmf-dist/tex/latex/gridset/gridset.sty
@@ -12,7 +12,7 @@
%% without the source ot the work. See below about more informations
%% about the files the work consists of.
%%
-%% Copyright (C) 2008-2020 Markus Kohm
+%% Copyright (C) 2008-2024 Markus Kohm
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -34,7 +34,7 @@
%% the Work (see ``Important Recommendations'' at lppl.txt).
%%
\ProvidesPackage{gridset}
- [2020-02-12 v0.3 grid - a.k.a. in-register - setting]
+ [2024-08-17 v0.4 grid - a.k.a. in-register - setting]
\newcommand*{\gridset@luaorpdf}[1]{%
\expandafter\newcommand\csname gridset@#1\endcsname{}%
\ifcsname pdf#1\endcsname
@@ -137,7 +137,7 @@
\fi
}
\AtBeginDocument{%
- \global\let\grid@unique@test\@gobble
+ \global\let\grid@unique@test\@gobbletwo
}
\newcommand*\grid@ReRunMessage{}
\AtBeginDocument{%
diff --git a/Master/texmf-dist/tex/latex/harmony/harmony.sty b/Master/texmf-dist/tex/latex/harmony/harmony.sty
index ce528cf0853..1145113c4d9 100644
--- a/Master/texmf-dist/tex/latex/harmony/harmony.sty
+++ b/Master/texmf-dist/tex/latex/harmony/harmony.sty
@@ -1,29 +1,30 @@
-%% harmony.sty 2007/05/04
-%% Copyright 2005 - 2007
+%% harmony.sty 2024/08/01
+%% Copyright 2005 - 2024
%% Dagny Wegner <dagny.wegner@t-online.de>
-%% Arnim Wegner <arnim.wegner@t-online.de>
+%% Arnim Wegner <arnim.e.wegner@t-online.de>
%
% 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 Maintainers of this work are
-% Dagny Wegner and Arnim Wegner.
%
% This work consists of the files harmony.sty,
% harmony.tex, harmony.pdf, and Readme.
% ==================================================================================
+\ProvidesPackage{harmony}[2024/08/01]
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{harmony}[2007/05/04]
\RequirePackage{ifthen}
\RequirePackage{amssymb}
+\RequirePackage{mathtools} % contains \overbracket
+%
+\newcounter{notekorr}
+\DeclareOption{8pt}{\setcounter{notekorr}{800}}
+\DeclareOption{9pt}{\setcounter{notekorr}{900}}
+\DeclareOption{10pt}{\setcounter{notekorr}{1000}}
+\DeclareOption{11pt}{\setcounter{notekorr}{1100}}
+\DeclareOption{12pt}{\setcounter{notekorr}{1200}}
+\DeclareOption{13pt}{\setcounter{notekorr}{1300}}
+\DeclareOption{14pt}{\setcounter{notekorr}{1400}}
\DeclareOption{sf}{\def\FAM{\sffamily}}
\DeclareOption{rm}{\def\FAM{\rmfamily}}
\ExecuteOptions{sf}
@@ -43,14 +44,31 @@
\newbox\nbxg
\newbox\nbxh
\newbox\nbxi
-\newfont{\KREIS}{lcirclew10}
-\newfont{\NOTEN}{musix13}
-\newfont{\noten}{musix11}% 2007/05/03
+\newcounter{notescl}
+\newcounter{fontscl}
%
-\newcommand{\Ohne}[2][0em]{%
+\ifthenelse{\value{notekorr}=0}%
+{\ifthenelse{\@ptsize<-2}{\setcounter{notescl}{800}}{}
+\ifthenelse{\equal{\@ptsize}{-2}}{\setcounter{notescl}{800}}{}
+\ifthenelse{\equal{\@ptsize}{-1}}{\setcounter{notescl}{900}}{}
+\ifthenelse{\equal{\@ptsize}{0}}{\setcounter{notescl}{1000}}{}
+\ifthenelse{\equal{\@ptsize}{1}}{\setcounter{notescl}{1100}}{}
+\ifthenelse{\equal{\@ptsize}{2}}{\setcounter{notescl}{1200}}{}
+\ifthenelse{\equal{\@ptsize}{3}}{\setcounter{notescl}{1300}}{}
+\ifthenelse{\equal{\@ptsize}{4}}{\setcounter{notescl}{1400}}{}
+\ifthenelse{\@ptsize>4}{\setcounter{notescl}{1400}}{}}
+{\setcounter{notescl}{\value{notekorr}}}
+%
+\newfont{\NOTEN}{musix13 scaled \value{notescl}}
+\newfont{\noten}{musix11 scaled \value{notescl}}
+\setcounter{fontscl}{\value{notescl}}
+\addtocounter{fontscl}{1000}
+\newfont{\KREIS}{lcircle10 scaled \value{fontscl}}
+%
+\newcommand{\Ohne}[2][0.17em]{%
\setbox\nbxi=\hbox{%
\FAM%
-\setbox\nbxa=\hbox{\sl\large /}%
+\setbox\nbxa=\hbox{\textsl\large\raisebox{0.2ex}{/}}%
#2%
\kern-0.8em%
\kern#1%
@@ -60,8 +78,14 @@
}%
\unhbox\nbxi%
}
+\let\Sans\Ohne
%
\newcommand{\Dohne}{\Ohne{D}}
+\let\Dsans\Dohne
+\newcommand{\DohneR}{\framebox{\Dohne}}
+\let\DsansR\DohneR
+\newcommand{\Dohner}{\frame{\Dohne}}
+\let\Dsansr\Dohner
%
\newcommand{\DD}{%
\setbox\nbxi=\hbox{%
@@ -73,6 +97,9 @@
\unhbox\nbxi%
}
%
+\newcommand{\DDR}{\framebox{\DD}}
+\newcommand{\DDr}{\frame{\DD}}
+%
\newcommand{\DS}{%
\setbox\nbxi=\hbox{%
\FAM%
@@ -96,7 +123,7 @@
\newcommand{\DDohne}{%
\setbox\nbxi=\hbox{%
\FAM%
-\setbox\nbxa=\hbox{\sl\large /}%
+\setbox\nbxa=\hbox{\textsl\large\raisebox{0.25ex}{/}}%
\raise0.2ex\hbox{D}%
\kern-0.5em%
\lower0.2ex\hbox{D}%
@@ -107,17 +134,23 @@
}%
\box\nbxi%
}
+\let\DDsans\DDohne
+%
+\newcommand{\DDohneR}{\framebox{\DDohne}}
+\let\DDsansR\DDohneR
+\newcommand{\DDohner}{\frame{\DDohne}}
+\let\DDsansr\DDohner
%
\newcommand{\VM}{%
\setbox\nbxg=\hbox{>}%
\setbox\nbxh=\hbox to \wd\nbxg{%
-\raise0.24ex\hbox{{\boldmath$\scriptscriptstyle{>}$\unboldmath}\hss}}% 2005/05/10
+\raise0.24ex\hbox{{\boldmath$\scriptscriptstyle{>}$\unboldmath}\hss}}%
\box\nbxh}
%
\newcommand{\UB}{%
\setbox\nbxg=\hbox{<}%
\setbox\nbxh=\hbox to \wd\nbxg{%
-\raise0.24ex\hbox{\boldmath$\scriptscriptstyle{<}$\unboldmath\hss}}% 2005/05/10
+\raise0.24ex\hbox{\boldmath$\scriptscriptstyle{<}$\unboldmath\hss}}%
\box\nbxh}
%
\newcommand{\HAa}[3]{%
@@ -243,6 +276,9 @@
{\HAc{#1}{#2}{#3}{#4}{#5}}%
}
%
+\def\HHR.#1.#2.#3.#4.#5.{\framebox{\HH.#1.#2.#3.#4.#5.}}%
+\def\HHr.#1.#2.#3.#4.#5.{\frame{\HH.#1.#2.#3.#4.#5.\hspace{0.17em}}}%
+%
\newcommand{\FERM}[2][0.1pt]{%
\setbox\nbxi=\hbox{%
\FAM%
@@ -287,15 +323,13 @@
\kern-\tmpdima\box\nbxb%
}}
%
-\newcommand{\Kr}[1]{%
-\ifthenelse{\equal{\@ptsize}{2}}{\@tempcnta=110}%
-{\ifthenelse{\equal{\@ptsize}{1}}{\@tempcnta=109}%
-{\@tempcnta=108}}%
+\newcommand{\Kr}[2][102]{%
+\ifthenelse{#1>110}{\@tempcnta=110}%
+{\ifthenelse{#1<100}{\@tempcnta=100}{\@tempcnta=#1}}
\setbox\nbxi=\hbox{%
-\FAM\small%
\setbox\nbxa=\hbox{#1}%
\setbox\nbxb=\hbox{\KREIS\char\@tempcnta}%
-\setbox\nbxc=\hbox to \wd\nbxb{\hss #1\hss}%
+\setbox\nbxc=\hbox to \wd\nbxb{\hss #2\hss}%
\tmpdima=0.5\ht\nbxa%
\advance\tmpdima by -0.4\dp\nbxa\relax%
\copy\nbxc%
@@ -332,8 +366,8 @@
{\raisebox{0.58ex}[8pt][2pt]{\kern-1pt\NOTEN\symbol{82}\kern0.3em}}}%
{\kern0.05em\ueber{#1}{#2}\kern0.05em%
}}}
-%
-\newcommand{\Ganz}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{9}}\kern1.35em}}
+% Noten
+\newcommand{\Ganz}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{9}}\kern1.5em}}
\newcommand{\Halb}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{8}\kern0.936em%
\raisebox{0.55ex}{\symbol{16}}}\kern0.2em}}
\newcommand{\Vier}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{7}\kern0.955em%
@@ -343,7 +377,7 @@
\newcommand{\Sech}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{7}\kern0.955em%
\raisebox{0.55ex}{\symbol{16}}}\symbol{41}\kern0.9em}}
\newcommand{\Zwdr}{{\NOTEN\kern0.05em\raisebox{0.5ex}{\symbol{7}\kern0.955em%
-\raisebox{0.55ex}{\symbol{16}}}\symbol{42}\kern0.9em}}
+\raisebox{0.55ex}{\symbol{16}}\raisebox{1.3ex}{\symbol{16}}}\symbol{42}\kern0.9em}}
\newcommand{\GaPa}{{\NOTEN\kern0.055em\raisebox{0.25ex}{\symbol{60}}\kern0.05em}}
\newcommand{\HaPa}{{\NOTEN\kern0.055em\raisebox{0.25ex}{\symbol{60}}\kern0.05em}}
\newcommand{\ViPa}{{\NOTEN\kern0.05em\raisebox{-0.8ex}{\symbol{62}}\kern0.955em}}
@@ -351,28 +385,76 @@
\newcommand{\SePa}{{\NOTEN\kern0.15em\raisebox{-0.4ex}{\symbol{64}}\kern1.3em}}
\newcommand{\ZwPa}{{\NOTEN\kern0.25em\raisebox{-0.8ex}{\symbol{65}}\kern1.4em}}
\newcommand{\Pu}{{\NOTEN\kern-0.2em\raisebox{-0.5ex}{\symbol{24}}\kern1em}}
-\newcommand{\AAcht}{\Vier\kern0.1em\Vier{\NOTEN\kern-1.72em\raisebox{3.1ex}%
+\newcommand{\AAcht}{{\NOTEN\Vier\kern0.3em\Vier\kern-1.72em\raisebox{3.1ex}%
{\symbol{61}\kern-0.87em\symbol{61}}}}
-\newcommand{\AchtBL}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern0.09em}}
-\newcommand{\SechBL}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
+\newcommand{\AchtBL}{{\NOTEN\Vier\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}}}
+\newcommand{\AchtBR}{{\NOTEN\Vier\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}}}
+\newcommand{\SechBL}{{\NOTEN\Vier\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
\kern-1.63em\raisebox{2.3ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern0.09em}}
-\newcommand{\SechBl}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
+\newcommand{\SechBl}{{\NOTEN\Vier\kern-1.82em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
\kern-1.63em\raisebox{2.3ex}{{\noten\kern0.9em\symbol{61}}}\kern0.09em}}
-\newcommand{\AchtBR}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern-1em}}
-\newcommand{\SechBR}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
-\kern-1.63em\raisebox{2.3ex}{\symbol{61}\kern-0.87em\symbol{61}}\kern-1.01em}}
-\newcommand{\SechBr}% 2007/05/03
-{\kern0.135em\Vier%
-{\NOTEN\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
-\kern-1.63em\raisebox{2.3ex}{{\noten\kern-0.12em\symbol{61}}}\kern-0.3em}}
-% etc. ... ! Define your own commands! \ No newline at end of file
+\newcommand{\SechBR}{{\NOTEN\Vier\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
+\kern-1.63em\raisebox{2.3ex}{\symbol{61}\kern-0.87em\symbol{61}}}}
+\newcommand{\SechBr}{{\NOTEN\Vier\kern-0.1em\raisebox{3.05ex}{\symbol{61}\kern-0.87em\symbol{61}}%
+\kern-1.63em\raisebox{2.3ex}{{\noten\kern-0.12em\symbol{61}}}\kern0.87em}}
+%
+\newcommand{\Blkn}[2]{\raisebox{#2}{{\NOTEN\kern#1\symbol{61}}}}%
+%
+\newcommand{\Overset}[3][0pt]{\ensuremath{\overset{\raisebox{#1}{\scriptsize\ensuremath{#2}}}{#3}}}
+%
+\newcommand\achteltriole{%
+ \ensuremath{\NOTEN%
+ \Overset[-1ex]%
+ {\text{\itshape\tiny\kern0.7em 3}}%
+ {\AchtBR\kern-1.1em\Vier\kern0.4em\AchtBL}%
+ }%
+}
+%
+\newcommand\vierteltrioleA{%
+ \ensuremath{\NOTEN%
+ \Overset[-1ex]%
+ {\text{\itshape\tiny 3}}%
+ {\overbracket[0.45pt]{%
+ \rule{0pt}{2.4ex}\Vier\kern0.5em\Vier\kern0.5em\Vier\kern0.25em}%
+ }%
+ }%
+}
+%
+\newcommand\vierteltrioleB{%
+ \ensuremath{\NOTEN%
+ \Overset%
+ {\raisebox{1ex}{%
+ \rule{0.45pt}{1ex}%
+ \kern0.25em\raisebox{0.88ex}{\kern-0.3em\rule{1.15em}{0.45pt}}%
+ \raisebox{0.53ex}{\text{\itshape\tiny 3}}%
+ \raisebox{0.88ex}{\rule{1.15em}{0.45pt}}%
+ \kern-0.05em\rule{0.45pt}{1ex}%
+ }}%
+ {\Vier\kern0.5em\Vier\kern0.5em\Vier\kern0.3em}%
+ }%
+}
+%
+\newcommand\halbetrioleA{%
+ \ensuremath{\NOTEN%
+ \Overset[-1ex]%
+ {\text{\itshape\tiny 3}}%
+ {\overbracket[0.45pt]{%
+ \rule{0pt}{2.4ex}\Halb\kern0.5em\Halb\kern0.5em\Halb\kern0.25em}%
+ }%
+ }%
+}
+%
+\newcommand\halbetrioleB{%
+ \ensuremath{\NOTEN%
+ \Overset%
+ {\raisebox{1ex}{%
+ \rule{0.45pt}{1ex}%
+ \kern0.25em\raisebox{0.88ex}{\kern-0.3em\rule{1.15em}{0.45pt}}%
+ \raisebox{0.53ex}{\text{\itshape\tiny 3}}%
+ \raisebox{0.88ex}{\rule{1.15em}{0.45pt}}%
+ \kern-0.05em\rule{0.45pt}{1ex}%
+ }}%
+ {\Halb\kern0.5em\Halb\kern0.5em\Halb\kern0.3em}%
+ }%
+}
+% ================================================================================== \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/hebdomon/hebdomon.cls b/Master/texmf-dist/tex/latex/hebdomon/hebdomon.cls
new file mode 100644
index 00000000000..33277f76c3a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/hebdomon/hebdomon.cls
@@ -0,0 +1,412 @@
+% Hebdomon document class for use in report and assessment writing
+% Written by D. T. McGuiness: dtm@mci4me.at
+
+% v0.1 - Angry Avocado [WS2024]
+
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+\ProvidesClass{hebdomon}[2024/08/08 v0.1 Report and Documentation standard]
+
+% This document is based on the excellent KOMA Script scrreprt class
+% The following options are declared beforehand.
+
+\RequirePackage{ifthen} % require an if-else loop to
+% choose depending on the field
+
+% Allows students to choose which package for code printing.
+
+\newboolean{mnt} % set bool operator for minted
+\newboolean{lst} % set bool operator for lstlisting
+\newboolean{drw} % set bool operator for PGF/TikZ
+
+%-OPTION: set option to choose minted code printing package
+\DeclareOption{minted}{
+ \setboolean{mnt}{true}
+}
+
+%-OPTION: set option to choose lstlisting code printing package
+\DeclareOption{lstlisting}{
+ \setboolean{lst}{true}
+}
+
+%-OPTION: set option to choose PGF/TikZ plotting packages
+\DeclareOption{draw}{
+ \setboolean{drw}{true}
+}
+
+\DeclareOption*{
+ \PassOptionsToClass{\CurrentOption}{scrreprt}
+}
+\ExecuteOptions{}
+\ProcessOptions \relax
+
+% Load the base class to create the custom template
+\LoadClass[
+ bibliography = totoc,
+ headings = big,
+ captions = tableheading,
+ chapterprefix = true,
+]{scrreprt}
+
+% Page Geometry -----------------------------------------------------------
+% Define the default page geometry
+\RequirePackage[
+ left = 3.0cm,
+ right = 2.0cm,
+ top = 2.5cm,
+ bottom = 2.5cm]{geometry}
+
+% Required Packages -------------------------------------------------------
+\RequirePackage{nicematrix} % For modern table design
+\RequirePackage{booktabs} % To access \midrule \toprule \bottomrule
+
+% For use in referencing purposes
+\RequirePackage[
+ backend=bibtex]{biblatex}
+
+\RequirePackage{graphicx} % To enable image insertion
+\RequirePackage{environ} % To allow new environments with Environ
+
+
+\RequirePackage{lmodern}
+\RequirePackage[sfdefault]{FiraSans}
+
+\RequirePackage{minitoc}
+\RequirePackage{setspace}
+
+\RequirePackage{hyperref} % Allow the use of hyperlink within document
+
+\RequirePackage{enumitem}
+
+\RequirePackage{amsmath}
+
+\usepackage[labelfont=bf]{caption} % Set the caption style to bold
+
+\RequirePackage{titlesec}
+
+% %%%%% ----- Colour Definitions ------ %%%%%
+\RequirePackage{xcolor}
+
+% Define the MCI colours.
+\definecolor{mciRed}{HTML}{821131}
+\definecolor{mciBlue}{HTML}{004983}
+\definecolor{mciOrange}{HTML}{fe640b}
+\definecolor{quoteColour}{HTML}{CBA6F7}
+\definecolor{nord7}{HTML}{81a1c1}
+\definecolor{norda}{HTML}{bf616a}
+\definecolor{nord9}{HTML}{5e81ac}
+\definecolor{nord13}{HTML}{ebcb8b}
+\definecolor{nord14}{HTML}{a3be8c}
+
+% %%%%% ----- Code Presentation ----- %%%%%
+% To make this class more compatible and avoid questions about pygments,
+% the author has decided to use listings for code presentation, instead of
+% minted.
+\RequirePackage{listings}
+
+\lstset{
+ aboveskip={1.3\baselineskip},
+ basicstyle=\small\ttfamily\linespread{4},
+ breaklines=false,
+ backgroundcolor = \color[HTML]{eff1f5},
+ columns=flexible,
+ commentstyle=\color[HTML]{6c6f85}\ttfamily,
+ escapechar=@,
+ extendedchars=true,
+ identifierstyle=\color{black},
+ inputencoding=latin1,
+ keywordstyle=\color[HTML]{fe640b},
+ language=Python,
+ ndkeywordstyle=\color[HTML]{228B22},
+ numbers=left,
+ numberstyle=\tiny,
+ prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
+ showstringspaces=false,
+ stringstyle=\color[HTML]{40a02b}\ttfamily,
+ upquote=true,
+ emph={None},
+ emphstyle={\color[HTML]{FE640B}},
+ % keywordstyle=[1]{\color[HTML]{8839ef}},
+ % morekeywords={(,)},
+ keywordstyle=[2]\color[HTML]{D20F39},
+ keywordstyle={[3]\color[HTML]{8839ef}},
+ keywords=[3]{x},
+}
+
+% \lstset{style=mystyle}
+
+% New Environment Definitions ---------------------------------------------
+% To create environments tcolorbox package is required to make them
+% aesthetically pleasing.
+\RequirePackage{tcolorbox}
+\tcbuselibrary{breakable, minted, skins,theorems, hooks, most}
+
+% %%%%% ----- tcolorbox Templates ----- %%%%%
+
+% Define the excerpt environment style.
+\tcbset{%
+ quoteTemplate/.style={%
+ enhanced,
+ breakable,
+ arc=0pt,
+ outer arc=0pt,
+ toprule=0pt,
+ rightrule=0pt,
+ bottomrule=0pt,
+ leftrule=1mm,
+ colback=white,
+ colframe=mciRed,
+ detach title
+ }%
+}%
+
+\tcbset{%
+ blockTemplate/.style={%
+ enhanced,
+ breakable,
+ arc=0pt,
+ outer arc=0pt,
+ toprule=0pt,
+ rightrule=0pt,
+ bottomrule=0pt,
+ leftrule=1mm,
+ colback=#1!25,
+ colframe=#1,
+ coltitle=black,
+ detach title
+ }%
+}%
+
+% %%%%% --------------------------------%%%%%
+
+% Environment used to insert quotations.
+\NewEnviron{excerpt}[1][]{%
+ \begin{tcolorbox}[blockTemplate=nord7]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{example}[1][]{%
+ \begin{tcolorbox}[blockTemplate=nord14]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{highlight}[1][]{%
+ \begin{tcolorbox}[blockTemplate=nord13]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{theory}[1][]{%
+ \begin{tcolorbox}[blockTemplate=black]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{warning}[1][]{%
+ \begin{tcolorbox}[blockTemplate=norda]
+ \BODY
+ \end{tcolorbox}
+}%
+
+\NewEnviron{hgitemize}[1][]{%
+ \begin{itemize}[leftmargin=!,labelindent=-29.2pt]
+ \BODY
+ \end{itemize}
+}%
+
+
+
+
+
+% KOMA-Script Configuration -----------------------------------------------
+
+\addtokomafont{chapterprefix}{\raggedleft}
+\addtokomafont{chapter}{\fontsize{30}{38}\selectfont}
+\addtokomafont{section}{\huge}
+\addtokomafont{subsection}{\Large}
+\addtokomafont{subsubsection}{\large}
+
+% Set the fontstyle of minitoc to that of the document
+\renewcommand{\mtifont}{\large\sffamily}
+\renewcommand{\mtcfont}{\small\sffamily}
+\renewcommand{\mtcSfont}{\small\sffamily}
+\renewcommand{\mtcSSfont}{\small\sffamily}
+\renewcommand{\mtcSSSfont}{\small\sffamily}
+
+\newcommand{\StudentName}[1]{\author{#1}}
+
+% Set the depth of TOC
+\setcounter{secnumdepth}{3} % number subsubsections
+\setcounter{tocdepth}{3} % list subsubsections
+
+% Configure the document titles
+\newcommand{\Chapter}[1]{\chapter{\textcolor{mciBlue}{#1}}\minitoc}
+\newcommand{\Section}[1]{\section{\textcolor{mciBlue}{#1}}}
+\newcommand{\Subsection}[1]{\subsection{\textcolor{mciBlue}{#1}}}
+\newcommand{\Subsubsection}[1]{\subsubsection{\textcolor{mciBlue}{#1}}}
+
+\newcommand{\hlight}[1]{\textcolor{mciOrange}{#1}}
+
+
+% Configure the baseline of the document
+\renewcommand{\baselinestretch}{1.2}
+
+\renewcommand*{\chapterformat}{%
+ \mbox{\scalebox{1.5}{\chapappifchapterprefix{\nobreakspace}}%
+ \scalebox{4}{\color{mciRed}\thechapter\autodot}\enskip}}
+
+\newcommand{\heading}[1]{\subsubsection*{$\blacksquare$ #1}}
+\newcommand{\marginsecnumber}[1]{%
+ \makebox[0pt][r]{#1\hspace{6pt}}%
+}
+
+\titleformat{\section} {\normalfont\Large\bfseries}
+{\marginsecnumber\thesection} {0pt} {}
+\titleformat{\subsection} {\normalfont\large\bfseries}
+{\marginsecnumber\thesubsection} {0pt} {}
+\titleformat{\subsubsection}
+{\normalfont\normalsize\bfseries}
+{\marginsecnumber\thesubsubsection}
+{0pt} {}
+\titleformat{\paragraph}[runin]
+{\normalfont\normalsize\bfseries}
+{\marginsecnumber\theparagraph}
+{0pt} {}
+\titleformat{\subparagraph}[runin]
+{\normalfont\normalsize\bfseries}
+{\marginsecnumber\thesubparagraph}
+{0pt}
+{}
+
+\titlespacing*{\subsection}{0pt}{*3.25}{*1.5}%
+
+\setlength\parindent{0pt} % set no indent for the entire file
+
+\ifthenelse{\boolean{mnt}}{%
+ \RequirePackage{minted}
+
+ \newcommand{\pcode}[1]{%
+ {%
+ \colorbox{gray!10}{%
+ \mintinline[fontsize=\small]{text}{#1}%
+ }%
+ }%
+ }%
+
+ %\usemintedstyle{catppuccin-latte}
+
+ \definecolor{catback}{HTML}{585b70}
+ \definecolor{catground}{HTML}{eff1f5}
+
+ % Set box and font rules for inputminted command for paper
+ \newtcbinputlisting{\codeinputpaper}[4][]{%
+ listing file={#3},
+ minted language=#2,
+ minted options={
+ fontsize=\small,
+ tabsize=4,
+ xleftmargin=-2.25mm,
+ numbersep=5mm,
+ breaklines=true,
+ highlightcolor=orange!50,
+ %formatcom=orange!50
+ },% <-- put other minted options inside the brackets
+ overlay unbroken and first={%
+ \begin{tcbclipinterior}
+ \fill[catback] (frame.south west) rectangle
+ ([xshift=1mm]frame.north west);
+ \fill[catback] (frame.north east) rectangle
+ ([xshift=-4mm, yshift=-10mm]frame.north east);
+ \fill[catback]
+ ([xshift=-4mm, yshift=-10mm]frame.north east) --
+ ([xshift=0mm, yshift=-10mm]frame.north east) --
+ ([xshift=0mm, yshift=-12mm]frame.north east);
+ \end{tcbclipinterior}
+ \node[rotate=-90, minimum width=1cm, anchor=north,
+ font=\bfseries] at ([xshift=0mm, yshift=-4mm]frame.north
+ east) {\tiny \textcolor{white}{#2}}; },
+ sharp corners,
+ leftrule=1mm,
+ toprule=0pt,
+ rightrule=0pt,
+ bottomrule=0pt,
+ colback=catground,
+ colframe=black,
+ breakable,
+ enhanced,% <-- put other tcolorbox options here
+ arc=0mm,
+ boxrule=0pt,
+ frame hidden,
+ listing only,
+ minted options app={#1}}
+
+ \RequirePackage{xpatch}
+
+ \newenvironment{code}[1]
+ {%
+ \VerbatimEnvironment
+ \begin{minted}{#1}%
+}
+{%
+ \end{minted}%
+ }
+ %
+ \xpatchcmd{\mintinline}{\begingroup}{\begingroup\let\itshape\relax}{}{}
+ \xpatchcmd{\minted}{\VerbatimEnvironment}{\VerbatimEnvironment\let\itshape\relax}{}{}
+ \xpatchcmd{\inputminted}{\begingroup}{\begingroup\let\itshape\relax}{}{}
+}{}
+
+\ifthenelse{\boolean{lst}}{%
+ \RequirePackage{listings}%
+ \RequirePackage{xparse}
+
+ \NewDocumentCommand{\pcode}{v}{%
+ #1%
+ }
+
+ \newenvironment{code}[1]
+ {%
+ \VerbatimEnvironment
+ \begin{lstlisting}{language=#1}%
+}
+{%
+ \end{lstlisting}%
+ }
+}{}
+
+
+\ifthenelse{\boolean{drw}}{%
+ \RequirePackage{pgfplots} % Enable to draw plots in the documents
+ \usepackage{tikz} % Enable Tikz and its libraries
+ \pgfplotsset{compat=1.18} % Set the pgf compatibility.
+ %
+ \usepgfplotslibrary{polar} % To access polarplot
+ %
+ \pgfplotsset{
+ hebdomon/.style={
+ minor grid style={dotted, gray!50},
+ major grid style={dotted, gray!50},
+ %
+ grid = both,
+ minor tick num=2,
+ ytick align=outside,
+ xtick align=outside,
+ axis line style={draw=none},
+ axis lines = left,
+ %
+ line width=2pt,
+ %
+ legend style = {
+ line width=0.5pt
+ },
+ %
+ every non boxed x axis/.append style={x axis line style=-},
+ every non boxed y axis/.append style={y axis line style=-},
+ %
+ },
+ }
+}{}
+
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/heria/heria.cls b/Master/texmf-dist/tex/latex/heria/heria.cls
index ed545f9b84e..6853ae99d15 100644
--- a/Master/texmf-dist/tex/latex/heria/heria.cls
+++ b/Master/texmf-dist/tex/latex/heria/heria.cls
@@ -8,11 +8,11 @@
%%
%% This is a generated file.
%%
-%% Copyright 2023 Tristan Miller
+%% Copyright 2023, 2024 Tristan Miller
%% Copyright 2016 John Kormylo
%%
%% 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
@@ -21,7 +21,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{heria}
-[2023-12-04 v3.2.1.0 Class for Horizon Europe (R)IA proposals]
+[2024-09-03 v3.4.1.3 Class for Horizon Europe (R)IA proposals]
\LoadClass[11pt,a4paper]{article}
\RequirePackage[T1]{fontenc} % T1 font encoding
\RequirePackage[left=15mm,
@@ -60,6 +60,18 @@
\definecolor{footergrey}{HTML}{D8D8D8}
\definecolor{tablegrey}{HTML}{F2F2F2}
\definecolor{summaryblue}{HTML}{00B0F0}
+\gdef\@templateversion{3.4} % Default version
+\def\@supportedtemplateversions{3.2,3.3,3.4} % Supported versions
+\ExplSyntaxOn
+\NewDocumentCommand{\templateversion}{m}{%
+ \clist_if_in:NnTF {\@supportedtemplateversions} {#1}
+ {\gdef\@templateversion{#1}}
+ {\PackageError{heria}%
+ {unsupported~template~version}%
+ {Use~one~of~\@supportedtemplateversions}
+ }%
+}
+\ExplSyntaxOff
\newcommand{\callname}[1]{\gdef\@callname{#1}}%
\newcommand{\callidentifier}[1]{\gdef\@callidentifier{#1}}%
\newcommand{\calltopic}[1]{\gdef\@calltopic{#1}}%
@@ -125,7 +137,7 @@
& #2 & \getPnum{#3} & #3 & %
\@ifundefined{@wpTotalPersonMonths\arabic{@wp#1num}}%
{\textbf{??}}%
- {\disptoken{@wpTotalPersonMonths\arabic{@wp#1num}}}%
+ {\fpeval{\disptoken{@wpTotalPersonMonths\arabic{@wp#1num}}/2}}%
& #4 & #5}}%
\@esphack
\ifthenelse{\arabic{@wp#1num}=1}{}{\bigskip}
@@ -420,7 +432,7 @@
\whiledo{\value{@secolumn}<\value{@wpcount}}{%
\stepcounter{@secolumn}%
\edef\serowtemp{\serowtemp&\fpeval{round(\csname %
- @wpPersonMonths\arabic{@secolumn}\endcsname,0)}}%
+ @wpPersonMonths\arabic{@secolumn}\endcsname/2,0)}}%
\@bsphack
\protected@write\@auxout{}%
{\string\expandafter\string\expandafter\string\expandafter%
@@ -429,7 +441,7 @@
\arabic{@secolumn}},0)}}}%
\@esphack
}
- \serowtemp & \fpeval{round(\setotalpm,0)} \\
+ \serowtemp & \fpeval{round(\setotalpm/2,0)} \\
\hline
\end{xltabular}
\end{center}
@@ -718,7 +730,6 @@
}{%
\end{tcolorbox}%
}
-\RequirePackage{everypage}
\RequirePackage{environ}
\newcounter{abspage}% \thepage not reliab
\newcommand{\newSFPage}[1]% #1 = \theabspage
@@ -733,15 +744,17 @@
\rotatebox{90}{\parbox[c][\textwidth][c]{\textheight}{\BODY}}%
\fi
\end{figure}}
-\AddEverypageHook{% check if sideways figure on this page
- \ifdim\textwidth=\textheight
- \stepcounter{abspage}% already in landscape
- \else
- \@ifundefined{SFPage@\theabspage}{}{\global\pdfpageattr{/Rotate 0}}%
- \stepcounter{abspage}%
- \@ifundefined{SFPage@\theabspage}{}%
- {\global\pdfpageattr{/Rotate 90}}%
- \fi}
+\AddToHook{shipout/background}{% check if sideways figure on this page
+ \put(1in,-1in){%
+ \ifdim\textwidth=\textheight
+ \stepcounter{abspage}% already in landscape
+ \else
+ \@ifundefined{SFPage@\theabspage}{}{\global\pdfpageattr{/Rotate 0}}%
+ \stepcounter{abspage}%
+ \@ifundefined{SFPage@\theabspage}{}%
+ {\global\pdfpageattr{/Rotate 90}}%
+ \fi}%
+ }
\RequirePackage{newtxtext} % Use Times for main text
\RequirePackage{newtxmath} % Use Times for math
\renewcommand*\ttdefault{lmvtt} % Latin Modern Typewriter Proportional
diff --git a/Master/texmf-dist/tex/latex/heria/hi-methodology.tex b/Master/texmf-dist/tex/latex/heria/hi-methodology.tex
index 0ba1b503aab..b672aa0a834 100644
--- a/Master/texmf-dist/tex/latex/heria/hi-methodology.tex
+++ b/Master/texmf-dist/tex/latex/heria/hi-methodology.tex
@@ -31,7 +31,7 @@
environmental objectives of the EU Taxonomy Regulation.}
\item
\emph{If you plan to use, develop and/or deploy artificial
- intellingence (AI) based systems and/or techniques you must
+ intelligence (AI) based systems and/or techniques you must
demonstrate their technical robustness. AI-based systems or techniques
should be, or be developed to become:~}
diff --git a/Master/texmf-dist/tex/latex/heria/hi-workplan.tex b/Master/texmf-dist/tex/latex/heria/hi-workplan.tex
index 20070b17c37..db64e7da4eb 100644
--- a/Master/texmf-dist/tex/latex/heria/hi-workplan.tex
+++ b/Master/texmf-dist/tex/latex/heria/hi-workplan.tex
@@ -40,12 +40,33 @@ Please provide the following:
\item
\emph{Give full details. Base your account on the logical structure of
the project and the stages in which it is to be carried out.}
+\makeatletter
+\ifdim\@templateversion pt<3.4pt
\emph{The number of work packages should be proportionate to the scale
and complexity of the project.}
\item
\emph{You should give enough detail in each work package to justify
the proposed resources to be allocated and also quantified information
so that progress can be monitored, including by the Commission}
+\else
+ \emph{Each work package should be a substantial part of the work
+ plan, and the number of work packages should be proportionate to
+ the scale and complexity of the project.}
+\item \emph{Structure each work package by breaking it down into
+ tasks. If tasks are not appropriate, work packages can be
+ organised according to other criteria (e.g., according to the type
+ of work or thematically). For each task or element of the work
+ package, describe all activities to be carried out and quantify
+ them (e.g., number of protocols, tests, measurements,
+ combinations, study subjects, conferences, publications,
+ etc.). Provide enough detail to clarify who will do this work and
+ why it is needed for the project, (e.g., the level of
+ qualification and number of person-months for personnel, as well
+ as the requested equipment, consumables, meetings, etc.), to
+ justify the proposed resources and so that progress can be
+ monitored, including by the Commission.}
+\fi
+\makeatother
\item
\emph{Resources assigned to work packages should be in line with their
objectives and deliverables. You are advised to include a distinct
diff --git a/Master/texmf-dist/tex/latex/heria/hi-wp-description.tex b/Master/texmf-dist/tex/latex/heria/hi-wp-description.tex
index 4697c862162..1146119f66e 100644
--- a/Master/texmf-dist/tex/latex/heria/hi-wp-description.tex
+++ b/Master/texmf-dist/tex/latex/heria/hi-wp-description.tex
@@ -8,9 +8,15 @@
%%
%% This is a generated file.
%%
+\makeatletter
+\ifdim\@templateversion pt<3.4pt
(where appropriate, broken down into tasks), lead partner and role of
participants. Deliverables linked to each WP are listed in table 3.1c
(no need to repeat the information here).
+\else
+(where appropriate, broken down into tasks), lead partner and role of participants. For each task, quantify the amount of work. Provide enough detail to justify the resources requested and clarify why the work is needed and who will do it. Deliverables linked to each WP are listed in table 3.1c (no need to repeat the information here).
+\fi
+\makeatother
\endinput
%%
%% End of file `hi-wp-description.tex'.
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/huawei/huawei.cls b/Master/texmf-dist/tex/latex/huawei/huawei.cls
index 2f3df4b5a05..5b95674e5c1 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-10-25 0.19.0 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}
@@ -180,13 +199,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 +233,45 @@
}}\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)%
+ \large\textcolor{gray}{\thecompany{}}%
+ \end{textblock}%
+ \fi%
+ \ifdefined\huawei@nosecurity\else%
+ \begin{textblock}{8}[0.5,0.5](7,15.25)%
+ \large\centering\textcolor{gray}{\thesecurity}%
+ \end{textblock}%
+ \fi%
+ \ifdefined\huawei@nopaging\else%
+ \begin{textblock}{8}[1,0.5](12,15.25)%
+ \raggedleft\large%
+ \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 +310,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 +322,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 +333,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 +347,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 +359,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 +373,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 +386,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 +394,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 +427,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 +491,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 +606,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..f48ecab1ecd 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 ---||
@@ -96,21 +98,23 @@
\fi
\else% we have an even page
\hvfloat@typeout{do@hvFloat@doublePage:evenpage -> (\thepage)}%
- %\typeout{>>>>Setze hv@atPageBeginfalse}%
+ \test@typeout{>>>>Setze hv@atPageBeginfalse}%
\global\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 > \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
%---------
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..e7cf47c4832 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 1014 2024-10-03 08:22:14Z 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.51}
+\def\filedate{2024/10/02}
\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/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/oberdiek/hypcap.sty b/Master/texmf-dist/tex/latex/hypcap/hypcap.sty
index c9486d68fca..04f91fefea4 100644
--- a/Master/texmf-dist/tex/latex/oberdiek/hypcap.sty
+++ b/Master/texmf-dist/tex/latex/hypcap/hypcap.sty
@@ -9,11 +9,11 @@
%% This is a generated file.
%%
%% Project: hypcap
-%% Version: 2016/05/16 v1.12
+%% Version: 2024-07-26 v1.13
%%
%% Copyright (C)
%% 1999-2001, 2006-2008, 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
@@ -29,8 +29,7 @@
%%
%% The Current Maintainers of this work are
%% Heiko Oberdiek and the Oberdiek Package Support Group
-%% https://github.com/ho-tex/oberdiek/issues
-%%
+%% https://github.com/ho-tex/hypcap/issues
%%
%% This work consists of the main source file hypcap.dtx
%% and the derived files
@@ -38,7 +37,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hypcap}%
- [2016/05/16 v1.12 Adjusting the anchors of captions (HO)]
+ [2024-07-26 v1.13 Adjusting the anchors of captions (HO)]
\@ifundefined{hyper@@anchor}{%
\PackageError{hypcap}{You have to load 'hyperref' first}\@ehc
\endinput
@@ -116,7 +115,7 @@
\capstart
}{%
\if@capstart
- \PackageError{hypcap}{You have forgotten to use \string\caption}%
+ \PackageWarning{hypcap}{You have forgotten to use \string\caption}%
\global\@capstartfalse
\else
\fi
diff --git a/Master/texmf-dist/tex/latex/hypdestopt/hypdestopt.sty b/Master/texmf-dist/tex/latex/hypdestopt/hypdestopt.sty
index 8218f1c7711..d789eadad43 100644
--- a/Master/texmf-dist/tex/latex/hypdestopt/hypdestopt.sty
+++ b/Master/texmf-dist/tex/latex/hypdestopt/hypdestopt.sty
@@ -9,11 +9,11 @@
%% This is a generated file.
%%
%% Project: hypdestopt
-%% Version: 2020-09-02 v2.7
+%% Version: 2024-08-07 v2.8
%%
%% Copyright (C)
%% 2006-2008, 2011 Heiko Oberdiek
-%% 2016-2020 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
@@ -37,7 +37,19 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hypdestopt}%
- [2020-09-02 v2.7 Hyperref destination optimizer (HO)]%
+ [2024-08-07 v2.8 Hyperref destination optimizer (HO)]%
+\IfDocumentMetadataTF
+ {
+ \PackageWarning{hypdestopt}
+ {
+ \string\DocumentMetadata detected. \MessageBreak
+ The package will do nothing.
+ }{}
+ }{}
+\IfDocumentMetadataTF
+ {
+ \endinput
+ }{}
\newif\ifHypDest@Verbose
\DeclareOption{verbose}{\HypDest@Verbosetrue}
\def\HypDest@VerboseInfo#1{%
diff --git a/Master/texmf-dist/tex/latex/hyperref/hdvipdfm.def b/Master/texmf-dist/tex/latex/hyperref/hdvipdfm.def
index 90fda975d0d..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-05-23 v7.01i %
+ [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 2e388c458bd..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-05-23 v7.01i %
+ [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 dc9eb63e4dd..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-05-23 v7.01i %
+ [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 9e9f0fd3145..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-05-23 v7.01i %
+ [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 368215ec0e5..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-05-23 v7.01i %
+ [2024-11-05 v7.01l %
Hyperref driver for luaTeX]
\Hy@VersionCheck{hluatex.def}
-%% 2024-05-23 v7.01i
+%% 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 564e1a49c62..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-05-23 v7.01i %
+ [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 b95ece55426..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-05-23 v7.01i %
+ [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 7fbf313910a..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-05-23 v7.01i %
+ [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 217aaaadfec..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-05-23 v7.01i %
+ [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 d199e3464bc..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-05-23 v7.01i %
+ [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 9f8086bd72b..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-05-23 v7.01i %
+ [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 2efdf7b1c83..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-05-23 v7.01i %
+ [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 b9b74249035..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-05-23 v7.01i %
+ [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 960b63f31c0..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-05-23 v7.01i %
+ [2024-11-05 v7.01l %
Hypertext links for LaTeX]
\begingroup
\@makeother\`%
@@ -5903,6 +5903,8 @@
\Hy@temp{calculate}
\Hy@temp{onfocus}
\Hy@temp{onblur}
+\Hy@temp{onmousedown}
+\Hy@temp{onmouseup}
\Hy@temp{onenter}
\Hy@temp{onexit}
\let\Fld@calculate@sortkey\@empty
@@ -5923,8 +5925,6 @@
}%
\fi
\Hy@temp{ondblclick}
-\Hy@temp{onmousedown}
-\Hy@temp{onmouseup}
\Hy@temp{onmouseover}
\Hy@temp{onmousemove}
\Hy@temp{onmouseout}
@@ -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
@@ -7757,6 +7809,7 @@
\let\make@df@tag@@@\Hy@make@df@tag@@@
}{}
}{}
+\def\HyOrg@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
\@ifundefined{hyper@nopatch@counter}
{
\let\HyOrg@addtoreset\@addtoreset
diff --git a/Master/texmf-dist/tex/latex/hyperref/hypertex.def b/Master/texmf-dist/tex/latex/hyperref/hypertex.def
index 797bf880919..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-05-23 v7.01i %
+ [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 323af89e368..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-05-23 v7.01i %
+ [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 68a99aaccef..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-05-23 v7.01i %
+ [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 f8a881fc727..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-05-23 v7.01i %
+ [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 62cfb0b3495..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-05-23 v7.01i %
+ [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 6edb5ae80b2..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-05-23 v7.01i %
+ [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 18a3e21f4ff..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-05-23 v7.01i %
+ [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 820a7035565..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-05-23 v7.01i %
+ [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 b9920bead2e..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-05-23 v7.01i %
+ [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 6eb3708ccc5..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-05-23 v7.01i 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..03601033a78 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}[2024/10/24 unofficial IARIA-lite conference template v0.5]
+\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,16 @@
{}
\makeatother
+\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}
+ \captionsetup[subfigure]{labelformat=parens,font=footnotesize}
+\fi
+
\ifnum\value{iaria@pbalancetracker}=1
\typeout{iaria class: load pbalance package.}
\RequirePackage{pbalance}
diff --git a/Master/texmf-dist/tex/latex/iaria/iaria.cls b/Master/texmf-dist/tex/latex/iaria/iaria.cls
index a8e4a472a67..27f3b2d5744 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}[2024/10/24 unofficial IARIA conference template v0.5]
+\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,55 @@
\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*{\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 +120,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 +137,15 @@
{}
\makeatother
-\RequirePackage[shortcuts]{extdash} % Use \-/ for a breakable dash that does not prevent the remainer of the word to be hyphenated
+\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}
+ \captionsetup[subfigure]{labelformat=parens,font=footnotesize}
+\fi
\ifnum\value{iaria@pbalancetracker}=1
\typeout{iaria class: load pbalance package.}
@@ -129,6 +156,9 @@
\RequirePackage{flushend}
\fi
+
+\RequirePackage[shortcuts]{extdash}
+
\endinput
%%
%% End of file `iaria.cls'.
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/interlinear/interlinear.sty b/Master/texmf-dist/tex/latex/interlinear/interlinear.sty
new file mode 100644
index 00000000000..dd881b83dbc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/interlinear/interlinear.sty
@@ -0,0 +1,1176 @@
+% ^package_name="lingwrit-interlinear"_version="1.0"_container="lingwrit"
+% ^markup-language="WRIML"
+% ^purpose
+% This package processes interlinear gloss text, providing tools for handling and formatting glosses in linguistic documents.
+% It is based on the cgloss4e.sty package, but with significant modifications to avoid conflicts with other packages and to extend functionality.
+% As part of the lingwrit package, lingwrit-interlinear should not be loaded alongside it.
+% _purpose
+% ^base-program cgloss4e.sty _base-program
+
+% ^rem General Information
+% ^- lingwrit-interlinear is a modified version of cgloss4e.sty _-
+% ^- It primarily renames commands according to a customized syntax to prevent conflicts with other similar packages. _-
+% ^- Additional modifications include new commands and a new interlinear environment. _-
+% ^- Code added to the original has been marked with % ^added and % _added _-
+% _rem
+
+% ^module_name="interlinear"_container="lingwrit"
+% ^desc
+% This module is a modified version of the cgloss4e.sty.
+%
+% Modifications include:
+% - Command renaming: Commands have been renamed to avoid potential conflicts with other packages using similar names.
+% - Commands for processing four-lines interlinearization
+% - interlinear environment with its options
+% - markup commands and other functionalities
+%
+% Below is the list of new command names and their counterparts in cgloss:
+
+% ^list
+% ^cat Functions _cat
+
+% \more ^_becomes \lw_iln_process:words_queue
+% \lastword ^_becomes \lw_iln_fun_get:last_word
+% \testdone ^_becomes \lw_iln_check:queue_emptyness
+% \getwords ^_becomes \lw_iln_fun_get:line_words
+% \donewords ^_becomes \lw_iln_fun_exit:word_extraction
+% \twosent ^_becomes \lw_iln_fun_align:two_lines_words
+% \threesent ^_becomes \lw_iln_fun_align:three_lines_words
+% \glossglue ^_becomes \lw_iln_glue:inter_word_space
+% \gll ^_becomes \lw_iln_fun_enter:two_lines_interlinearization
+% \glll ^_becomes \lw_iln_fun_enter:three_lines_interlinearization
+% \glt ^_becomes \lw_iln_fun_insert:free_translation
+% \glend ^_becomes \lw_iln_fun_exit:interlinearization
+% \gl@stop ^_becomes \lw_iln_fun_exit:words_alignment
+
+% ^cat Boxes variables _cat
+
+% \lineone ^_becomes \lw_iln_var_box:line_one
+% \linetwo ^_becomes \lw_iln_var_box:line_two
+% \linethree ^_becomes \lw_iln_var_box:line_three
+% \linefour ^_becomes \lw_iln_var_box:line_four
+% \wordone ^_becomes \lw_iln_var_box:word_one
+% \wordtwo ^_becomes \lw_iln_var_box:word_two
+% \wordthree ^_becomes \lw_iln_var_box:word_three
+% \wordfour ^_becomes \lw_iln_var_box:word_four
+% \gline ^_becomes \lw_iln_var_box:iln_text_lines
+
+% ^cat Setting Appearence _cat
+
+% \eachwordone ^_becomes \lw_iln_fun_set:line_one_words_format
+% \eachwordtwo ^_becomes \lw_iln_fun_set:line_two_words_format
+% \eachwordthree ^_becomes \lw_iln_fun_set:line_three_words_format
+% \eachwordfour ^_becomes \lw_iln_fun_set:line_four_words_format
+% _list
+
+% The naming of the commands follows the following schema:
+
+% \<container>_<package>_<type>_<subtype>:<name/description>
+
+% <container> code is: lw (for lingwrit)
+% <package> code is: iln (for interlinear)
+% <type> code includes: "var" (for variables) and "fun" (for functions)
+
+% Variable Subtypes
+% box: for boxes
+
+% Function Subtypes
+% enter: initialize a process
+% exit: terminates a process
+% get: extract information
+% check: test if some condition is met
+% insert: inserts some stuff (i.e. the translation)
+% process: process given elements
+% calc: calculates the value of some variable
+% set: sets (manually) the values of some variable
+% _desc
+
+% ^code
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{lingwrit-interlinear}[2024/08/22 v1.0 (Linguistic Writing) Interlinear gloss text processing]
+
+% todo Required Packages
+\RequirePackage{marginnote} % ^rem for marginnotes _rem
+\RequirePackage{xifthen}
+\RequirePackage{xkeyval} % ^rem For key=val options
+\RequirePackage{xparse,etoolbox,enumitem}
+
+% todo 0. Utilities
+
+% todo a. LW Syntax Related Commands
+% Shortcut for some conditional statements
+\DeclareDocumentCommand{\IfValueArgTF}{mmmm}{\ifthenelse{\equal{#1}{#2}}{#3}{#4}}
+% Enabling the package syntax
+\providecommand{\switchlwsyntaxon}{\makeatletter\catcode `:=11 \catcode `_=11}
+\providecommand{\switchlwsyntaxoff}{\makeatother \catcode `:=12 \catcode `_=8}
+% if you want to modify some internal commands, check if your code is
+% surrounded by \switchlwsyntaxon and \switchlwsyntaxoff (LW Syntax enables "@", ":" and "_" to be used in csnames. So you need not using \makeatletter and \makeatother when you are using lwsyntax))
+
+
+% ^action_name="Enabling LingWrit Syntax"
+\switchlwsyntaxon
+% _action
+
+% todo b. Renaming of some TeX primitives
+\let\enter:group\bgroup\relax
+\let\exit:group\egroup\relax
+
+% todo c. Defining some helpers
+\def\lw_fun_helper:store#1{\expandafter\let\csname call:stored_#1\endcsname\expandafter\csname #1\endcsname}
+\def\lw_fun_helper:call#1{#1}
+\def\lw_fun_helper:clear#1{\RenewDocumentCommand{#1}{}{\relax}}%
+
+% todo d. Usefull Commands That are not used
+% The following commands are not used actually but may be usefull in some contexts
+% Fixing bugs with setspace package
+% If you encounter an error message using \singlespacing, \onehalfspacing or \doublespacing, use either of the following commands, according to your needs.
+
+\def\usedoublespacing{\lw_fun_helper:store{doublespacing}
+ \renewcommand\doublespacing{%
+ \call:stored_doublespacing%
+ \def\baselinestretch{1.69}}%
+}
+%
+\def\useonehalfspacing{%
+ \lw_fun_helper:store{onehalfspacing}
+ \renewcommand\onehalfspacing{%
+ \call:stored_onehalfspacing%
+ \def\baselinestretch{1.24}}%
+ }
+\def\usesinglespacing{%
+ \lw_fun_helper:store{singlespacing}
+ \renewcommand\singlespacing{%
+ \call:stored_singlespacing%
+ \def\baselinestretch{1}}%
+ }
+
+% Line Stretch Size Calculator
+
+% Enable LW Syntax
+%\switchlwsyntaxon
+%\newcounter{currentsize}
+%\setcounter{currentsize}{10}
+%\addtocounter{currentsize}{\@ptsize}
+%\newlength{\lw_iln_length:line_stretch_size}
+%\setlength{\lw_iln_length:line_stretch_size}{\dimexpr\baselinestretch pt * \thecurrentsize}
+%Current size: \thecurrentsize
+%Current interline size:
+%\the\lw_iln_length:line_stretch_size
+% Disable LW Syntax
+% \switchlwsyntaxoff
+
+% todo enter:cgloss4e modifications *
+
+% todo 1. Borrowings from covington
+
+% Forcing and disabling single spacing
+\let\@gsingle=1
+\def\lw_iln_fun_enable:force_single_spacing{\let\@gsingle=1}
+\def\lw_iln_fun_disable:force_single_spacing{\let\@gsingle=0}
+\@ifundefined{new@fontshape}%
+{\def\@selfnt{\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi}}
+{\def\@selfnt{\selectfont}}
+
+% todo a. 2-lines global interlinearization processing commands
+% ^modif_action="\begin{flushleft} removed"
+% ^rem inspired by Alexis Dimitriadis cgloss.sty _rem
+
+\def\lw_iln_fun_enter:two_lines_interlinearization% % Introduces 2-line text-and-gloss.
+{%\begin{flushleft}
+ \ifx\@gsingle1% conditionally force single spacing (hpk/MC)
+ \vskip\baselineskip\def\baselinestretch{1}%
+ \@selfnt\vskip-\baselineskip\fi%
+ \enter:group%
+ \lw_iln_fun_align:two_lines_words%
+ }
+% _modif
+
+% todo b. 3-lines global interlinearization processing commands
+% ^modif_action="\begin{flushleft} removed"
+% ^rem inspired by Alexis Dimitriadis cgloss.sty _rem
+ \def\lw_iln_fun_enter:three_lines_interlinearization% % Introduces 3-line text-and-gloss.
+ {%\begin{flushleft}
+ \ifx\@gsingle1% conditionally force single spacing (hpk/MC)
+ \vskip\baselineskip\def\baselinestretch{1}%
+ \@selfnt\vskip-\baselineskip\fi%
+ \enter:group
+ \lw_iln_fun_align:three_lines_words
+ }
+% _modif
+
+% todo c. 4-lines global interlinearization processing commands
+% ^added_action="\lw_iln_fun_enter:four_lines_interlinearization defined for initiating 4-lines interlinearization"
+ % ^rem inspired by Alexis Dimitriadis cgloss.sty _rem
+ \def\lw_iln_fun_enter:four_lines_interlinearization% % Introduces 3-line text-and-gloss.
+ {%\begin{flushleft}
+ \ifx\@gsingle1% conditionally force single spacing (hpk/MC)
+ \vskip\baselineskip\def\baselinestretch{1}%
+ \@selfnt\vskip-\baselineskip\fi%
+ \enter:group
+ \lw_iln_fun_align:four_lines_words
+ }
+ % _modif
+
+% todo d. Translation and interlinear end
+% ^modif_action="Is now obsolete"
+% \def\lw_iln_fun_insert:free_translation{} ^rem obsolete _rem
+% _modif
+% ^modif_action="Definition modified"
+ % Introduces a translation
+ \let\trans\relax% ^rem obsolete _rem
+% _modif
+
+ \def\lw_iln_fun_exit:interlinearization{%
+ \lw_iln_fun_insert:interlinear_bottom_skip%
+ }
+ % Ends the gloss environment.
+% _modif
+
+% todo 2. Adaptation of gloss.tex
+
+ % The following TeX code is adapted, with permission, from:
+ % gloss.tex: Macros for vertically aligning words in consecutive sentences.
+ % Version: 1.0 release: 26 November 1990
+ % Copyright (c) 1991 Marcel R. van der Goot (marcel@cs.caltech.edu).
+ % Original Midnight/gloss.tex and Midnight/gloss.doc are available from
+ % csvax.cs.caltech.edu [131.215.131.131] in pub/tex
+ % and many other anonymous ftp archives.
+
+% todo a. Box Variables Declaration
+ \newbox\lw_iln_var_box:line_one% boxes with words from first line
+ \newbox\lw_iln_var_box:line_two%
+ \newbox\lw_iln_var_box:line_three%
+ \newbox\lw_iln_var_box:line_four% ^rem ADDED _rem
+ \newbox\lw_iln_var_box:word_one% a word from the first line (hbox)
+ \newbox\lw_iln_var_box:word_two%
+ \newbox\lw_iln_var_box:word_three%
+ \newbox\lw_iln_var_box:word_four% ^rem ADDED _rem
+ \newbox\lw_iln_var_box:iln_text_lines% the constructed double line (hbox)
+
+% todo b. Skip Variable Declaration and setting
+ \newskip\lw_iln_glue:inter_word_space% extra glue between glossed pairs or triples
+ \lw_iln_glue:inter_word_space = 0pt plus 2pt minus 1pt % allow stretch/shrink between words
+ %\lw_iln_glue:inter_word_space = 5pt plus 2pt minus 1pt % allow stretch/shrink between words
+ \newlength{\lw_iln_length:base_line_stretch}
+ \setlength{\lw_iln_length:base_line_stretch}{.61ex}
+
+ \AtBeginDocument{%
+ \def\lw_iln_fun_calc:line_stretch_factor{%
+ \ifdim\baselinestretch\p@=1\p@%
+ \def\lw_iln_multiplier:line_stretch_factor{.5}
+ \else%
+ \ifdim\baselinestretch\p@<1.26\p@%
+ \def\lw_iln_multiplier:line_stretch_factor{.5}
+ \else%
+ \ifdim\baselinestretch\p@<1.6\p@
+ \def\lw_iln_multiplier:line_stretch_factor{1.6}
+ \else%
+ \ifdim\baselinestretch\p@>1.6\p@
+ \def\lw_iln_multiplier:line_stretch_factor{2.23}
+ \else%
+ \ifdim\baselinestretch\p@=1.6\p@
+ \def\lw_iln_multiplier:line_stretch_factor{2.23}
+ \else%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ }
+ \lw_iln_fun_calc:line_stretch_factor%
+ %
+ \newlength{\lw_iln_length:line_spread}
+ \setlength{\lw_iln_length:line_spread}{0ex}
+ \addtolength{\lw_iln_length:line_spread}{\lw_iln_multiplier:line_stretch_factor\lw_iln_length:base_line_stretch}
+ \addtolength{\lw_iln_length:line_spread}{.16\lw_iln_length:base_line_stretch}
+ }
+ %\addtolength{\lw_iln_length:line_spread}{\lw_iln_multiplier:line_stretch_factor\lw_iln_length:base_line_stretch}
+
+
+% todo c. Boolean Declaration
+ \newif\ifnotdone
+
+% todo d. \rmfamily font declaraton (for backward compatibility)
+ % For any REALLY old distributions without \rmfamily
+ \@ifundefined{rmfamily}{\let\rmfamily=\rm}
+
+% todo e. Définition functions controlling the appearance of words in each line of the interlinearized text
+% ^modified_action="Adding low level commands to format different aspects of the appearence of words"
+\@ifundefined{lw_iln_fun_set:line_one_words_format}%
+ {\newcommand\lw_iln_fun_set:line_one_words_format{%
+ \lw_iln_fun_set:line_one_words_font_size%
+ \lw_iln_fun_set:line_one_words_font_series%
+ \lw_iln_fun_set:line_one_words_font_shape%
+ \lw_iln_fun_set:line_one_words_font_color%
+ }
+ }{\relax}
+ % ^added
+ \let\lw_iln_fun_set:line_one_words_font_size=\normalsize
+ \let\lw_iln_fun_set:line_one_words_font_series=\mdseries%
+ \let\lw_iln_fun_set:line_one_words_font_shape=\upshape%
+ \let\lw_iln_fun_set:line_one_words_font_color=\normalcolor%
+ % _added
+ %
+\@ifundefined{lw_iln_fun_set:line_two_words_format}%
+ {\newcommand\lw_iln_fun_set:line_two_words_format{%
+ \lw_iln_fun_set:line_two_words_font_size%
+ \lw_iln_fun_set:line_two_words_font_series%
+ \lw_iln_fun_set:line_two_words_font_shape%
+ \lw_iln_fun_set:line_two_words_font_color}
+ }%
+ {\relax}
+%
+ % ^added
+ \let\lw_iln_fun_set:line_two_words_font_size=\normalsize
+ \let\lw_iln_fun_set:line_two_words_font_series=\mdseries%
+ \let\lw_iln_fun_set:line_two_words_font_shape=\upshape%
+ \let\lw_iln_fun_set:line_two_words_font_color=\normalcolor%
+ % _added
+ %
+\@ifundefined{lw_iln_fun_set:line_three_words_format}{%
+ \newcommand\lw_iln_fun_set:line_three_words_format{%
+ \lw_iln_fun_set:line_three_words_font_size%
+ \lw_iln_fun_set:line_three_words_font_series%
+ \lw_iln_fun_set:line_three_words_font_shape%
+ \lw_iln_fun_set:line_three_words_font_color}
+ }{\relax}
+ % ^added
+ \let\lw_iln_fun_set:line_three_words_font_size=\normalsize
+ \let\lw_iln_fun_set:line_three_words_font_series=\mdseries%
+ \let\lw_iln_fun_set:line_three_words_font_shape=\upshape%
+ \let\lw_iln_fun_set:line_three_words_font_color=\normalcolor%
+ % _added
+ %
+%
+\@ifundefined{lw_iln_fun_set:line_four_words_format}{%
+ \newcommand\lw_iln_fun_set:line_four_words_format{%
+ \lw_iln_fun_set:line_four_words_font_size%
+ \lw_iln_fun_set:line_four_words_font_series%
+ \lw_iln_fun_set:line_four_words_font_shape%
+ \lw_iln_fun_set:line_four_words_font_color}
+ }{\relax}% ^rem ADDED _rem
+ % ^added
+ \let\lw_iln_fun_set:line_four_words_font_size=\normalsize
+ \let\lw_iln_fun_set:line_four_words_font_series=\mdseries%
+ \let\lw_iln_fun_set:line_four_words_font_shape=\upshape%
+ \let\lw_iln_fun_set:line_four_words_font_color=\normalcolor%
+ % _added
+ %
+% _modified
+% todo f. General Interlinearization Functions Definition
+ \def\lw_iln_fun_get:last_word#1#2#3% #1 = \each, #2 = line box, #3 = word box
+ {\setbox#2=\vbox{\unvbox#2%
+ \global\setbox#3=\lastbox%
+ }%
+ \ifvoid#3\global\setbox#3=\hbox{#1\strut{} }\fi
+ % extra space following \strut in case #1 needs a space
+ }
+
+ \def\lw_iln_check:words_queue_emptyness
+ {\ifdim\ht\lw_iln_var_box:line_one=0pt
+ \ifdim\ht\lw_iln_var_box:line_two=0pt \notdonefalse % tricky space after pt
+ \else\notdonetrue
+ \fi
+ \else\notdonetrue
+ \fi
+ }
+
+ \gdef\lw_iln_fun_get:line_words(#1,#2)#3 #4\\% #1=linebox, #2=\each, #3=1st word, #4=remainder
+ {\setbox#1=\vbox{\hbox{#2{\strut#3} }% adds space
+ \unvbox#1%
+ }%
+ \def\lw_iln_process:words_queue{#4}%
+ \ifx\lw_iln_process:words_queue\empty\let\lw_iln_process:words_queue=\lw_iln_fun_exit:word_extraction
+ \else\let\lw_iln_process:words_queue=\lw_iln_fun_get:line_words
+ \fi
+ \lw_iln_process:words_queue(#1,#2)#4\\%
+ }
+
+ \gdef\lw_iln_fun_exit:word_extraction(#1,#2)\\{}%
+
+% todo g. Processing of 2-lines interlinear texts
+% ^modif_action"Rename \twosent into original twosent"
+ \gdef\lw_iln_fun_align:two_lines_words#1\\ #2\\{% #1 = first line, #2 = second line
+ \lw_iln_fun_get:line_words(\lw_iln_var_box:line_one,\lw_iln_fun_set:line_one_words_format)#1 \\%
+ \lw_iln_fun_get:line_words(\lw_iln_var_box:line_two,\lw_iln_fun_set:line_two_words_format)#2 \\%
+ \loop\lw_iln_fun_get:last_word{\lw_iln_fun_set:line_one_words_format}{\lw_iln_var_box:line_one}{\lw_iln_var_box:word_one}%
+ \lw_iln_fun_get:last_word{\lw_iln_fun_set:line_two_words_format}{\lw_iln_var_box:line_two}{\lw_iln_var_box:word_two}%
+ \global\setbox\lw_iln_var_box:iln_text_lines=\hbox{\unhbox\lw_iln_var_box:iln_text_lines
+ \hskip\lw_iln_glue:inter_word_space
+ \vtop{\box\lw_iln_var_box:word_one % vtop was vbox
+ \nointerlineskip
+ \box\lw_iln_var_box:word_two
+ }%
+ }%
+ \lw_iln_check:words_queue_emptyness
+ \ifnotdone
+ \repeat
+ \exit:group % matches \enter:group in \gloss
+ \lw_iln_fun_exit:words_alignment}
+% _modif
+
+
+% todo h. Processing of 3-lines interlinear texts
+ \gdef\lw_iln_fun_align:three_lines_words#1\\ #2\\ #3\\{% #1 = first line, #2 = second line, #3 = third
+ \lw_iln_fun_get:line_words(\lw_iln_var_box:line_one,\lw_iln_fun_set:line_one_words_format)#1 \\%
+ \lw_iln_fun_get:line_words(\lw_iln_var_box:line_two,\lw_iln_fun_set:line_two_words_format)#2 \\%
+ \lw_iln_fun_get:line_words(\lw_iln_var_box:line_three,\lw_iln_fun_set:line_three_words_format)#3 \\%
+ \loop\lw_iln_fun_get:last_word{\lw_iln_fun_set:line_one_words_format}{\lw_iln_var_box:line_one}{\lw_iln_var_box:word_one}%
+ \lw_iln_fun_get:last_word{\lw_iln_fun_set:line_two_words_format}{\lw_iln_var_box:line_two}{\lw_iln_var_box:word_two}%
+ \lw_iln_fun_get:last_word{\lw_iln_fun_set:line_three_words_format}{\lw_iln_var_box:line_three}{\lw_iln_var_box:word_three}%
+ \global\setbox\lw_iln_var_box:iln_text_lines=\hbox{\unhbox\lw_iln_var_box:iln_text_lines
+ \hskip\lw_iln_glue:inter_word_space
+ \vtop{\box\lw_iln_var_box:word_one % vtop was vbox
+ \nointerlineskip
+ \box\lw_iln_var_box:word_two
+ \nointerlineskip
+ \box\lw_iln_var_box:word_three
+ }%
+ }%
+ \lw_iln_check:words_queue_emptyness
+ \ifnotdone
+ \repeat
+ \exit:group % matches \enter:group in \gloss
+ \lw_iln_fun_exit:words_alignment}
+
+
+% todo i. Processing of 4-lines interlinear texts
+% ^added_action"Four lines interlinear processor, equivalent to an hypothetic \foursent for gloss.tex based interlinearization packages"
+\gdef\lw_iln_fun_align:four_lines_words#1\\ #2\\ #3\\ #4\\{% #1 = first line, #2 = second line, #3 = third
+ \lw_iln_fun_get:line_words(\lw_iln_var_box:line_one,\lw_iln_fun_set:line_one_words_format)#1 \\%
+ \lw_iln_fun_get:line_words(\lw_iln_var_box:line_two,\lw_iln_fun_set:line_two_words_format)#2 \\%
+ \lw_iln_fun_get:line_words(\lw_iln_var_box:line_three,\lw_iln_fun_set:line_three_words_format)#3 \\%
+ \lw_iln_fun_get:line_words(\lw_iln_var_box:line_four,\lw_iln_fun_set:line_four_words_format)#4 \\%
+ \loop\lw_iln_fun_get:last_word{\lw_iln_fun_set:line_one_words_format}{\lw_iln_var_box:line_one}{\lw_iln_var_box:word_one}%
+ \lw_iln_fun_get:last_word{\lw_iln_fun_set:line_two_words_format}{\lw_iln_var_box:line_two}{\lw_iln_var_box:word_two}%
+ \lw_iln_fun_get:last_word{\lw_iln_fun_set:line_three_words_format}{\lw_iln_var_box:line_three}{\lw_iln_var_box:word_three}%
+ \lw_iln_fun_get:last_word{\lw_iln_fun_set:line_four_words_format}{\lw_iln_var_box:line_four}{\lw_iln_var_box:word_four}%
+ \global\setbox\lw_iln_var_box:iln_text_lines=\hbox{\unhbox\lw_iln_var_box:iln_text_lines
+ \hskip\lw_iln_glue:inter_word_space
+ \vtop{\box\lw_iln_var_box:word_one % vtop was vbox
+ \nointerlineskip
+ \box\lw_iln_var_box:word_two
+ \nointerlineskip
+ \box\lw_iln_var_box:word_three
+ \nointerlineskip
+ \box\lw_iln_var_box:word_four
+ }%
+ }%
+ \lw_iln_check:words_queue_emptyness
+ \ifnotdone
+ \repeat
+ \exit:group % matches \enter:group in \gloss
+ \lw_iln_fun_exit:words_alignment}
+
+% _added
+
+
+% todo j. Ending interlinearization
+% ^modif_action="\end{flushleft} removed"
+% ^rem inspired by Alexis Dimitriadis cgloss.sty _rem
+ \def\lw_iln_fun_exit:words_alignment{{\hskip -\lw_iln_glue:inter_word_space}\unhbox\lw_iln_var_box:iln_text_lines}
+% _modif
+% todo * exit:cgloss4e modifications
+
+% todo 1. Other added features
+% todo a. Managing line spacing after interlinearization
+\def\baselinestretch{1}
+\def\lw_iln_fun_insert:interlinear_bottom_skip{\vskip \lw_iln_length:line_spread}%
+
+% todo b. Configuring ex-parts boxes
+
+% ^rem Examples will now be placed within boxes, alongside glosses lines (old genericx.tex's \mb and \gl lines), and hanging bracketed language informations (like LangSci jamboxes) _rem
+% todo i. Setting Lengths
+% ===============
+% Setting Lengths
+% ===============
+%
+
+\newlength{\lw_iln_var_dim:ex_box_width}
+\newlength{\lw_iln_var_dim:ex_box_right_margin}
+%\newlength{\lw_iln_var_dim:ex_box_bottom_sep}
+%\newlength{\lw_iln_var_dim:ex_box_top_sep}
+\newlength{\lw_iln_var_dim:iln_box_width}
+\newlength{\lw_iln_var_dim:iln_box_right_margin}
+%\newlength{\lw_iln_var_dim:iln_box_bottom_sep}
+%\newlength{\lw_iln_var_dim:iln_box_top_sep}
+\newlength{\lw_iln_var_dim:trans_box_width}
+\newlength{\lw_iln_var_dim:trans_box_right_margin}
+\newlength{\lw_iln_var_dim:gramjudg_len}
+\newlength{\lw_iln_var_dim:gramjudg_reserved_space}
+\newlength{\lw_iln_var_dim:langinfo_box_width}
+\newlength{\lw_iln_var_dim:langinfo_box_left_sep}
+\newlength{\lw_iln_var_dim:langinfo_box_right_sep}
+\newlength{\lw_iln_var_dim:langinfo_reserved_space}
+%\newlength{\lw_iln_var_dim:langinfo_left_margin}
+\newlength{\lw_iln_var_dim:extranote_box_width}
+\newlength{\lw_iln_var_dim:extranote_box_left_sep}
+\newlength{\lw_iln_var_dim:extranote_box_right_sep}
+\newlength{\lw_iln_var_dim:extranote_reserved_space}
+%\newlength{\lw_iln_var_dim:extranote_left_margin}
+
+% Initializing lengths
+\setlength{\lw_iln_var_dim:ex_box_width}{\linewidth}
+\setlength{\lw_iln_var_dim:ex_box_right_margin}{0ex}
+\setlength{\lw_iln_var_dim:iln_box_width}{\linewidth}
+\setlength{\lw_iln_var_dim:iln_box_right_margin}{0ex}
+\setlength{\lw_iln_var_dim:trans_box_width}{\linewidth}
+\setlength{\lw_iln_var_dim:trans_box_right_margin}{0ex}
+\addtolength{\lw_iln_var_dim:trans_box_width}{-\lw_iln_var_dim:trans_box_right_margin}
+\setlength{\lw_iln_var_dim:gramjudg_len}{0ex}% ^rem default value _rem
+\setlength{\lw_iln_var_dim:langinfo_box_width}{0ex}% ^rem default value _rem
+\setlength{\lw_iln_var_dim:langinfo_reserved_space}{0ex}
+\setlength{\lw_iln_var_dim:langinfo_box_left_sep}{3.4ex}
+\setlength{\lw_iln_var_dim:langinfo_box_right_sep}{3.4ex}
+\setlength{\lw_iln_var_dim:extranote_box_width}{0ex}% ^rem default value _rem
+\setlength{\lw_iln_var_dim:extranote_reserved_space}{0ex}
+\setlength{\lw_iln_var_dim:extranote_box_left_sep}{0pt}
+\setlength{\lw_iln_var_dim:extranote_box_right_sep}{0pt}
+
+% ===========================
+% Defining Booleans for Boxes
+% Opennings
+% ===========================
+\newif\ifnoglosslines%
+\noglosslinestrue
+% todo ii. Defining Opening CS for Boxes
+% =============================
+% Defining Opening CS for Boxes
+% =============================
+\NewDocumentCommand{\lw_iln_fun_open:ex_box}{}{%
+ % ^rem example box opening code _rem
+ % ^rem \lw_iln_fun_open:ex_box should be called after \label{key} to avoid linebreak _rem
+ % ^rem no_op command _rem
+ }
+\NewDocumentCommand{\lw_iln_fun_open:iln_box}{}{%
+ % ^rem interlinear text box opening code _rem
+ \addtolength{\lw_iln_var_dim:iln_box_width}{-1.15\lw_iln_var_dim:langinfo_reserved_space}%
+ \begin{itemize}[%
+ align=left,%
+ labelwidth=\lw_iln_var_dim:gramjudg_len,%
+ leftmargin=\lw_iln_var_dim:gramjudg_reserved_space]%
+ \item[\lw_iln_fun_print:gramjudg]%
+ \begin{minipage}[t]{\lw_iln_var_dim:iln_box_width}%
+}
+\NewDocumentCommand{\lw_iln_fun_open:langinfo_box}{}{%
+ % ^rem language info box opening code _rem
+ \begin{minipage}[t]{\lw_iln_var_dim:langinfo_box_width}
+}
+\NewDocumentCommand{\lw_iln_fun_open:trans_box}{}{%
+ \setlength{\lw_iln_var_dim:trans_box_width}{\linewidth}
+ \addtolength{\lw_iln_var_dim:trans_box_width}{-1.069\lw_iln_var_dim:extranote_reserved_space}%
+ \trans \begin{minipage}[b]{\lw_iln_var_dim:trans_box_width}
+}
+\NewDocumentCommand{\lw_iln_fun_open:extra_note_box}{}{%
+ \begin{minipage}[t]{\lw_iln_var_dim:extranote_box_width}%
+ \raggedright%
+ }
+
+% todo iii. Defining Closing CS for Boxes
+% =============================
+% Defining Closing CS for Boxes
+% =============================
+\def\lw_iln_fun_format:ex_text{\normalfont}%
+\NewDocumentCommand{\lw_iln_fun_close:ex_box}{}{%
+ % ^rem example box closing code _rem
+ \setlength{\lw_iln_var_dim:trans_box_width}{\linewidth}
+ \addtolength{\lw_iln_var_dim:trans_box_width}{-\lw_iln_var_dim:gramjudg_reserved_space}
+ \addtolength{\lw_iln_var_dim:trans_box_width}{-1.0618\lw_iln_var_dim:extranote_reserved_space}%
+ \IfValueArgTF{\lw_iln_var_stored:gramjudg_text}{}{\relax}%
+ {\begin{minipage}[t]{\lw_iln_var_dim:gramjudg_len}
+ \lw_iln_fun_print:gramjudg%
+ \end{minipage}}
+ \begin{minipage}[t]{\lw_iln_var_dim:trans_box_width}
+ \lw_iln_fun_format:ex_text%
+ \lw_iln_var_stored:free_trans_text\space%
+ \normalfont%
+ \IfValueArgTF{\lw_iln_var_stored:reference_text}{}{\relax}{\lw_iln_fun_print:reference}%
+ \end{minipage}
+ \IfValueArgTF{\lw_iln_var_stored:extranote_text}{}{\relax}%
+ {\vskip -2.6ex
+ \hfill%
+ \begin{minipage}[t]{\lw_iln_var_dim:extranote_box_width}
+ (\lw_iln_var_stored:extranote_text)%
+ \end{minipage}}%
+}
+\NewDocumentCommand{\lw_iln_fun_close:iln_box}{}{%
+ % ^rem interlinear text box closing code _rem
+ \lw_iln_fun_exit:interlinearization
+ \end{minipage}\lw_iln_fun_print:langinfo%
+ \end{itemize}
+}
+\NewDocumentCommand{\lw_iln_fun_close:langinfo_box}{}{%
+ % ^rem language info box closing code _rem
+ \end{minipage}%
+}
+\NewDocumentCommand{\lw_iln_fun_close:extranote_box}{}{%
+ \end{minipage}%
+}
+\NewDocumentCommand{\lw_iln_fun_close:trans_box}{}{%
+ \end{minipage}\hfill%
+}
+
+% todo iv. Defining CS for setting or inserting example parts or metadata
+\def\lw_iln_var_stored:langinfo_text{}
+% the * and : versions print the language name as a title.
+% If \lw_iln_fun_set:langinfo if followed by an ex_box, use the * version
+% If there is some text -- e.g. specifying the context for the data -- before the ex_box, use the : version
+% To print the language information as a margin note, use the "bear" version
+\NewDocumentCommand{\langinfo}{s t/ m }{%
+ \IfBooleanTF{#1}%
+ {{\normalfont #3}}%
+ {%
+ \IfBooleanTF{#2}%
+ {{\normalfont #3}\\}%
+ {\def\lw_iln_var_stored:langinfo_text{#3}
+ \settowidth{\lw_iln_var_dim:langinfo_box_width}{#3}
+ \setlength{\lw_iln_var_dim:langinfo_reserved_space}{\lw_iln_var_dim:langinfo_box_width}
+ \addtolength{\lw_iln_var_dim:langinfo_reserved_space}{\lw_iln_var_dim:langinfo_box_left_sep}
+ \addtolength{\lw_iln_var_dim:langinfo_reserved_space}{\lw_iln_var_dim:langinfo_box_right_sep}
+ }%
+ }%
+}%
+
+\NewDocumentCommand{\lw_iln_fun_set:langinfo}{m}{\langinfo{#1}}
+\NewDocumentCommand{\lw_iln_fun_make:langinfo_box}{}{%
+ \ifthenelse{\equal{\lw_iln_var_stored:langinfo_text}{}}{}{%
+ \marginnote{\hskip -\lw_iln_var_dim:langinfo_reserved_space\lw_iln_fun_open:langinfo_box%
+ {\normalfont(\lw_iln_var_stored:langinfo_text)}%
+ \lw_iln_fun_close:langinfo_box}[0cm]%
+ }%
+}
+\NewCommandCopy{\lw_iln_fun_print:langinfo}{\lw_iln_fun_make:langinfo_box}
+
+\def\lw_iln_var_stored:gramjudg_text{}
+\NewDocumentCommand{\lw_iln_fun_set:gramjudg}{m}{%
+ \def\lw_iln_var_stored:gramjudg_text{#1}%
+ \settowidth{\lw_iln_var_dim:gramjudg_len}{#1}%
+ \setlength{\lw_iln_var_dim:gramjudg_reserved_space}{\lw_iln_var_dim:gramjudg_len}%
+ \addtolength{\lw_iln_var_dim:gramjudg_reserved_space}{1ex}%
+}
+\NewDocumentCommand{\lw_iln_fun_print:gramjudg}{}{%
+ \ifthenelse{\equal{\lw_iln_var_stored:gramjudg_text}{}}{}{%
+ {\normalfont\lw_iln_var_stored:gramjudg_text}%
+ }%
+}
+\def\lw_iln_var_stored:extranote_text{}
+\def\lw_iln_var_token:extranote_left_punct{{(}}%
+\def\lw_iln_fun_format:extranote{\normalfont}
+\def\lw_iln_var_token:extranote_right_punct{{)}}%
+\NewDocumentCommand{\lw_iln_fun_add:extranote}{m}{%
+ \def\lw_iln_var_stored:extranote_text{#1}%
+ \settowidth{\lw_iln_var_dim:extranote_box_width}{#1}
+ \ifdimgreater{\lw_iln_var_dim:extranote_box_width}{113.2pt}%
+ {\setlength{\lw_iln_var_dim:extranote_box_width}{113.2pt}}%
+ {\settowidth{\lw_iln_var_dim:extranote_box_width}{#1}}%
+ \setlength{\lw_iln_var_dim:extranote_reserved_space}{\lw_iln_var_dim:extranote_box_width}%
+ \addtolength{\lw_iln_var_dim:extranote_reserved_space}{\lw_iln_var_dim:extranote_box_left_sep}
+ \addtolength{\lw_iln_var_dim:extranote_reserved_space}{\lw_iln_var_dim:extranote_box_right_sep}%
+}
+\NewDocumentCommand{\lw_iln_fun_make:extranote_box}{}{%
+ \IfValueArgTF{\lw_iln_var_stored:extranote_text}{}%
+ {}%
+ {\lw_iln_fun_open:extra_note_box%
+ \lw_iln_var_token:extranote_left_punct%
+ \lw_iln_fun_format:extranote%
+ \lw_iln_var_stored:extranote_text%
+ \normalfont%
+ \lw_iln_var_token:extranote_right_punct%
+ \lw_iln_fun_close:extranote_box}
+}
+
+\def\lw_iln_var_stored:free_trans_text{}
+\NewDocumentCommand{\lw_iln_fun_set:free_translation}{m}{%
+ \def\lw_iln_var_stored:free_trans_text{#1}
+}
+\def\lw_iln_var_stored:literal_trans_text{}
+\NewDocumentCommand{\lw_iln_fun_set:literal_trans_text}{m}{%
+ \def\lw_iln_var_stored:literal_trans_text{#1}
+}
+\def\lw_iln_var_stored:reference_text{}
+\NewDocumentCommand{\lw_iln_fun_set:reference}{m}{%
+ \def\lw_iln_var_stored:reference_text{#1}
+}
+\NewDocumentCommand{\lw_iln_fun_print:free_trans}{}{%
+ \IfValueArgTF{\lw_iln_var_stored:free_trans_text}{}{}%
+ {`\lw_iln_var_stored:free_trans_text'}}
+\NewDocumentCommand{\lw_iln_fun_print:literal_trans}{}{%
+ \IfValueArgTF{\lw_iln_var_stored:literal_trans_text}{}{}%
+ {(Lit.: `\lw_iln_var_stored:literal_trans_text')}}
+\NewDocumentCommand{\lw_iln_fun_print:reference}{}{%
+ \IfValueArgTF{\lw_iln_var_stored:reference_text}{}{}%
+ {{[}\lw_iln_var_stored:reference_text{]}}}
+%
+\NewDocumentCommand{\lw_iln_fun_make:trans_box}{}{%
+ \IfValueArgTF{\lw_iln_var_stored:extranote_text}{}%
+ {\lw_iln_fun_open:trans_box%
+ \lw_iln_fun_print:free_trans\space %
+ \lw_iln_fun_print:literal_trans\space %
+ \lw_iln_fun_print:reference\space %
+ \lw_iln_fun_close:trans_box}%
+ {\lw_iln_fun_open:trans_box%
+ \raggedright
+ \lw_iln_fun_print:free_trans\space %
+ \lw_iln_fun_print:literal_trans\space %
+ \lw_iln_fun_print:reference\space %
+ \lw_iln_fun_close:trans_box}
+}
+
+\def\lw_iln_fun_format:context_label{\normalfont}
+\def\lw_iln_var_name:context{Context:}
+\def\lw_iln_fun_insert:context#1{%
+ \IfValueArgTF{#1}{}{}%
+ {\lw_iln_fun_format:context_label\lw_iln_var_name:context\normalfont~#1\\[-1.3\baselineskip]}
+}
+
+\def\lw_iln_fun_reinitialize:markers_value{%
+ \def\lw_iln_var_stored:extranote_text{}
+ \def\lw_iln_var_stored:free_trans_text{}
+ \def\lw_iln_var_stored:gramjudg_text{}
+ \def\lw_iln_var_stored:langinfo_text{}
+ \def\lw_iln_var_stored:literal_trans_text{}
+ \def\lw_iln_var_stored:reference_text{}
+}
+
+% todo v. Defining long (internal commands)
+\def\lw_iln_var_num:interlinear_lines{2}
+
+\def\lw_iln_tag:line_one_marker{% LEV version
+ \IfValueArgTF{\lw_iln_var_num:interlinear_lines}{2}%
+ {\lw_iln_fun_open:iln_box
+ \lw_iln_fun_enter:two_lines_interlinearization}{}%
+ \IfValueArgTF{\lw_iln_var_num:interlinear_lines}{3}%
+ {\lw_iln_fun_open:iln_box
+ \lw_iln_fun_enter:three_lines_interlinearization}{}%
+ \IfValueArgTF{\lw_iln_var_num:interlinear_lines}{4}%
+ {\lw_iln_fun_open:iln_box
+ \lw_iln_fun_enter:four_lines_interlinearization}{}%
+}%
+
+\let\lw_iln_tag:Text_marker\lw_iln_tag:line_one_marker% ^rem is typeset in italics by default. The starred version introduces a two-line interlinear gloss text. ^caution Do not use it together with \lw_iln_MorphBreak_marker : they mean the same thing. So you will get error messages. _caution _rem
+%
+\def\lw_iln_tag:Morpheme_Break_marker% ^rem typeset in roman -- by default -- (intended to host API translations). Introduces a 2-line interlinear gloss text. _rem
+{\IfValueArgTF{\lw_iln_var_num:interlinear_lines}{2}%
+ {\lw_iln_tag:line_one_marker}%
+ {\relax}%
+}%
+
+\def\lw_iln_tag:Gloss_marker% ^rem \ge is already defined in LaTeX. \lw_iln_tag:Gloss_marker introduces a two-line interlinear gloss text. _rem
+{\relax}%
+%
+\def\lw_iln_tag:Part_of_speech_marker{\relax}
+
+% LEV Syntax sensitive CS
+\def\lw_iln_tag:Free_translation_marker#1\\%
+ {\IfValueArgTF{\lw_iln_var_num:interlinear_lines}{0}
+ {\lw_iln_fun_set:free_translation{#1}}
+ {\lw_iln_fun_close:iln_box%
+ \lw_iln_fun_set:free_translation{#1}}}% ^rem CAUTION: The Free Translation marker should be present even if there is actually no free translation provided. _rem
+%
+\def\lw_iln_tag:Literal_translation_marker#1\\%
+{\lw_iln_fun_set:literal_trans_text{#1}}
+\def\lw_iln_tag:Reference_marker#1\\%
+{\lw_iln_fun_set:reference{#1}}
+\def\lw_iln_tag:Language_information_marker#1\\%
+{\lw_iln_fun_set:langinfo{#1}}
+\def\lw_iln_tag:Grammaticality_Judgment_marker#1\\%
+{\lw_iln_fun_set:gramjudg{#1}}
+\newlength{\lw_iln_var_dim:context_voffset}
+\setlength{\lw_iln_var_dim:context_voffset}{-1em}
+\def\lw_iln_tag:Context_marker#1\\%
+{\lw_iln_fun_insert:context{#1}\\[\lw_iln_var_dim:context_voffset]}
+\def\lw_iln_tag:Extra_note_marker#1\\%
+ {\lw_iln_fun_add:extranote{#1}}
+
+
+% _cs-definitions
+
+% todo vi. Low-level commands
+
+% ^section_title="User Commands and Envs to Typeset Interlinear Gloss Texts"
+% DEFINE: interlinear environment
+% DEFINE: Text tagging cs
+% The cs are named after the standard tags used in Linguist's Field's Toolbox by SIL (see Interlinear macro in ToolboxInterlinearMacroText.docm)
+% ^important Please use the short versions (in brackets). The long versions are internal commands to be use for later eventual modifications _important
+% \lw_iln_tag:Text_marker (\tx) ^rem is typeset in italic either in tri-gloss or in di-gloss envs. In di-gloss env, \tx and \mb mean the same thing. _rem
+%\lw_iln_tag:MorphBreak_marker (\mb) ^rem typeset in roman -- by default -- (intended to host API translations) _rem
+%\lw_iln_tag:Gloss_marker (\gl) % \ge is already defined in LaTeX
+%\lw_iln_tag:FreeTranslation_marker (\ft)
+% \lw_iln_tag:Reference_marker (\rf) ^rem \ref is a primitive _rem
+% --------------------------------
+% Markers not present in Toolbox defaults
+% --------------------------------
+% \lw_iln_tag:Language_information_marker (\li)
+% \lw_iln_tag:Grammaticality_Judgment_marker (\gj)
+% \lw_iln_tag:Context_marker (\ct)
+%
+% \lw_iln_tag:Literal_translation_marker (\lt)
+% \lw_iln_tag:Extra_note_marker (\nt)
+%
+% ^cs-definitions
+%\let\tx\lw_iln_tag:Text_marker% ^rem is typeset in italic either in tri-gloss or in di-gloss envs. In di-gloss env, \tx and \mb mean the same thing. _rem
+\let\mb\lw_iln_tag:Morpheme_Break_marker% ^rem typeset in roman -- by default -- (intended to host API translations) _rem
+\let\gl\lw_iln_tag:Gloss_marker% ^rem \ge is already defined in LaTeX _rem
+%\let\ft\lw_iln_tag:Free_translation_marker%
+\let\ps\lw_iln_tag:Part_of_speech_marker
+%
+\NewCommandCopy{\li}%
+{\lw_iln_tag:Language_information_marker}%
+\NewCommandCopy{\rf}%
+{\lw_iln_tag:Reference_marker}%
+\NewCommandCopy{\gj}%
+{\lw_iln_tag:Grammaticality_Judgment_marker}
+\NewCommandCopy{\ct}%
+{\lw_iln_tag:Context_marker}
+\NewCommandCopy{\lt}%
+{\lw_iln_tag:Literal_translation_marker}%
+\NewCommandCopy{\nt}%
+ {\lw_iln_tag:Extra_note_marker}
+
+% todo c. Defining Interlinear Env. Options
+% ----------------------
+% | Describing options |
+% ----------------------
+
+% # Options:
+
+% - argendchar: (not available for the moment) return, par, lineend
+% return : takes the current line as argument, do not put anything else (e.g. {}, or \\)
+% lineend : idem
+% par : argument is ended by "\\" like e.g. in cgloss4e
+% (NOTE: this option scopes over all the markers, not only interlinear text markers \tx, \mb, \gl, \ps)
+
+% - linesnumber: full, 2, 3
+% full : 4-lines (By default it is disabled in the main text)
+% 2 : Only one gloss line is printed (\gl); \mb and \tx are then treated are incompatible to each other so
+% that only of them should be used. If this option is used, you should specifiy the first-line of the
+% interlinear text via first-line option
+% 3 : only \ps is not printedand all the other lines \tx, \mb and \gl should be non-empty
+
+% * Setting markers *
+
+% Sets the marker used for the different parts. Actually tells lingwrit-interlinear to define the corresponding command so as to fit the definition of the
+% default marker (e.g. text_marker=\ot tells lingwrit-interlinear to add the following: \let\ot\tx)
+% - textmarker=
+% - morphbreakmarker=
+% - glossmarker= (You shouldn't set it to \ge. But if this happens, note that lingwrit-interlinear will redefine \ge to equal to \gl, define a new
+% command \gteq to replace \ge and issue a warning message)
+% - partofspeechmarker=
+% - freetranslationmarker=
+% - literaltranslationmarker=
+% - grammaticalityjudgmentmarker=
+% - contextmarker=
+% - extranotemarker=
+% - languageinfomarker=
+% - referencemarker=
+
+% * Format specifications *
+
+% (May include font size, shape, series and color. If color command is used (e.g. \color{blue}), then make sure to have xcolor loaded)
+% - lineoneformat={}
+% - linetwoformat={}
+% - linethreeformat={}
+% - linefourformat={}
+% - extranoteformat={}
+% - contextnameformat={}
+
+% * Other specifications *
+
+% - contextname={} ^rem The displayed label for context. default value is "Context:" _rem
+% - extranoteleftpunct= ^rem the punctuation preceding the extra note. Default value: ( _rem
+% - extranoterightpunct= ^rem the punctuation following the extra note. Default value: ) _rem
+
+% todo i. Declaring Options
+\NewCommandCopy{\lw_iln_var_opt:textmarker}{\lw_iln_tag:Text_marker}
+\NewCommandCopy{\lw_iln_var_opt:morphbreakmarker}{\lw_iln_tag:Morpheme_Break_marker}
+\NewCommandCopy{\lw_iln_var_opt:glossmarker}{\lw_iln_tag:Gloss_marker}
+\NewCommandCopy{\lw_iln_var_opt:partofspeechmarker}{\lw_iln_tag:Part_of_speech_marker}
+\NewCommandCopy{\lw_iln_var_opt:freetranslationmarker}{\lw_iln_tag:Free_translation_marker}
+\NewCommandCopy{\lw_iln_var_opt:literaltranslationmarker}{\lw_iln_tag:Literal_translation_marker}
+\NewCommandCopy{\lw_iln_var_opt:extranotemarker}{\lw_iln_tag:Extra_note_marker}
+\NewCommandCopy{\lw_iln_var_opt:languageinfomarker}{\lw_iln_tag:Language_information_marker}
+\NewCommandCopy{\lw_iln_var_opt:gramjudgmarker}{\lw_iln_tag:Grammaticality_Judgment_marker}
+\NewCommandCopy{\lw_iln_var_opt:referencemarker}{\lw_iln_tag:Reference_marker}
+\NewCommandCopy{\lw_iln_var_opt:contextmarker}{\lw_iln_tag:Context_marker}
+
+\NewDocumentCommand{\lw_iln_var_opt:languageinfopos}{m}{%
+ \IfValueArgTF{#1}{head}{\RenewDocumentCommand{\lw_iln_fun_set:langinfo}{m}{\langinfo/{##1}}}{}
+ \IfValueArgTF{#1}{margin}{\RenewDocumentCommand{\lw_iln_fun_set:langinfo}{m}{\langinfo{##1}}}{}
+}
+
+\NewDocumentCommand{\lw_iln_var_opt:nointerlinear}{m}{%
+ \IfValueArgTF{#1}{true}%
+ {\def\lw_iln_var_num:interlinear_lines{0}}%
+ {\IfValueArgTF{#1}{false}%
+ {\relax}%
+ {\PackageWarning{interlinear}{nointerlinear option possible values: true, false}}%
+ }
+}
+\NewDocumentCommand{\lw_iln_var_opt:contextvoffset}{m}{\setlength{\lw_iln_var_dim:context_voffset}{#1}}
+
+% todo ii. Defining Default values
+
+%\def\lw_iln_var_opt:endchar{par}% possible values: par, lineend, return
+\def\lw_iln_var_opt:linesnumber{2}% possible values: 2, 3, full
+\def\lw_iln_var_num:interlinear_lines{\lw_iln_var_opt:linesnumber}
+% Setting markers
+\let\li\lw_iln_var_opt:languageinfomarker
+\let\rf\lw_iln_var_opt:referencemarker
+\let\gj\lw_iln_var_opt:gramjudgmarker
+\let\tx\lw_iln_var_opt:textmarker
+\let\mb\lw_iln_var_opt:morphbreakmarker
+\let\gl\lw_iln_var_opt:glossmarker
+\let\ps\lw_iln_var_opt:partofspeechmarker
+\let\ft\lw_iln_var_opt:freetranslationmarker
+\let\lt\lw_iln_var_opt:literaltranslationmarker
+\let\nt\lw_iln_var_opt:extranotemarker
+\def\lw_iln_var_opt:extranoteleftpunct#1{\def\lw_iln_var_token:extranote_left_punct{#1}}
+\def\lw_iln_var_opt:extranoterightpunct#1{\def\lw_iln_var_token:extranote_right_punct{#1}}
+
+% Setting formats (only available for interlinear/gloss lines, context name and extra notes)
+\def\lw_iln_var_opt:lineoneformat#1{\renewcommand{\lw_iln_fun_set:line_one_words_format}{#1}}
+\def\lw_iln_var_opt:linetwoformat#1{\renewcommand{\lw_iln_fun_set:line_two_words_format}{#1}}
+\def\lw_iln_var_opt:linethreeformat#1{\renewcommand{\lw_iln_fun_set:line_three_words_format}{#1}}
+\def\lw_iln_var_opt:linefourformat#1{\renewcommand{\lw_iln_fun_set:line_four_words_format}{#1}}
+\def\lw_iln_var_opt:exformat#1{\renewcommand{\lw_iln_fun_format:ex_text}{#1}}
+\def\lw_iln_var_opt:extranoteformat#1{\def\lw_iln_fun_format:extranote{#1}}
+\def\lw_iln_var_opt:contextnameformat#1{\def\lw_iln_fun_format:context_label{#1}}
+% Context label/name
+\def\lw_iln_var_opt:contextname#1{\def\lw_iln_var_name:context{#1}}
+
+% Defining CS for resetting default options (to be called at the begining of interlinear env)% ^rem the \setinterlinearstyle is meant to set globally the options for interlinear env. So don't use optional argument of interlinear env anymore since it will overwrite the values set up with this commands and the new values be considered the default ones. _rem
+\def\lw_iln_fun_reinitialize:interlinear_options{%
+ %\def\lw_iln_var_opt:endchar{par}% possible values: par, lineend, return
+ \def\lw_iln_var_opt:linesnumber{2}% possible values: 2, 3, full
+ % Setting markers
+ \let\li\lw_iln_var_opt:languageinfomarker%
+ \let\rf\lw_iln_var_opt:referencemarker%
+ \let\gj\lw_iln_var_opt:gramjudgmarker%
+ \let\tx\lw_iln_var_opt:textmarker
+ \let\mb\lw_iln_var_opt:morphbreakmarker%
+ \let\gl\lw_iln_var_opt:glossmarker%
+ \let\ps\lw_iln_var_opt:partofspeechmarker%
+ \let\ft\lw_iln_var_opt:freetranslationmarker%
+ \let\lt\lw_iln_var_opt:literaltranslationmarker%
+ \let\nt\lw_iln_var_opt:extranotemarker%
+ % Setting formats (only available for interlinear/gloss lines, context name and extra notes)
+ \lw_iln_var_opt:lineoneformat{\normalfont}%
+ \lw_iln_var_opt:linetwoformat{\normalfont}%
+ \lw_iln_var_opt:linethreeformat{\normalfont}%
+ \lw_iln_var_opt:linefourformat{\normalfont}%
+ \lw_iln_var_opt:exformat{\normalfont}
+ \lw_iln_var_opt:extranoteformat{\normalfont}%
+ \lw_iln_var_opt:contextnameformat{\normalfont}%
+ % Context label/name
+ \lw_iln_var_opt:contextname{Context:}%
+ \lw_iln_var_opt:extranoteleftpunct{{(}}%
+ \lw_iln_var_opt:extranoterightpunct{{)}}%
+ \lw_iln_var_opt:languageinfopos{margin}%
+ \lw_iln_var_opt:nointerlinear{false}%
+ \lw_iln_var_opt:contextvoffset{-1em}
+}
+
+% todo iii. Setting Options
+
+% Setting Ending Character for arguments (not yet available)
+%\define@key{interlinear}{endchar}{%
+ % ^action_name="Setting the value"
+% \def\lw_iln_var_opt:endchar{#1}
+ % _action
+ % ^action_name="Processing the option"
+ %
+ % _action
+%}
+
+% Setting the numbers of interlinear/gloss lines
+\define@key{interlinear}{linesnumber}{%
+ % ^action_name="Setting the value"
+ \def\lw_iln_var_opt:linesnumber{#1}
+ % _action
+}
+\define@key{interlinear}{nointerlinear}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:nointerlinear{#1}
+ % _action
+}
+
+% Setting the markers
+\define@key{interlinear}{textmarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:textmarker}}
+\define@key{interlinear}{morphbreakmarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:morphbreakmarker}}
+\define@key{interlinear}{glossmarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:glossmarker}}
+
+\define@key{interlinear}{partofspeechmarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:partofspeechmarker}}
+
+\define@key{interlinear}{freetranslationmarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:freetranslationmarker}}
+
+\define@key{interlinear}{literaltranslationmarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:literaltranslationmarker}}
+
+\define@key{interlinear}{extranotemarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:extranotemarker}}
+
+\define@key{interlinear}{languageinfomarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:languageinfomarker}}
+
+\define@key{interlinear}{gramjudgmarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:gramjudgmarker}}
+
+\define@key{interlinear}{referencemarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:referencemarker}}
+
+\define@key{interlinear}{contextmarker}{%
+ \NewCommandCopy{#1}{\lw_iln_var_opt:contextmarker}}
+
+
+% Setting formats
+\define@key{interlinear}{lineoneformat}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:lineoneformat{#1}
+ % _action
+}
+\define@key{interlinear}{linetwoformat}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:linetwoformat{#1}
+ % _action
+}
+\define@key{interlinear}{linethreeformat}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:linethreeformat{#1}
+ % _action
+}
+\define@key{interlinear}{linefourformat}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:linefourformat{#1}
+ % _action
+}
+\define@key{interlinear}{exformat}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:exformat{#1}
+ % _action
+}
+\define@key{interlinear}{extranoteformat}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:extranoteformat{#1}
+ % _action
+}
+\define@key{interlinear}{contextnameformat}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:contextnameformat{#1}
+ % _action
+}
+
+% Other specifications
+\define@key{interlinear}{contextname}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:contextname{#1}
+ % _action
+}
+\define@key{interlinear}{contextvoffset}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:contextvoffset{#1}
+ % _action
+}
+\define@key{interlinear}{extranoteleftpunct}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:extranoteleftpunct{#1}
+ % _action
+}
+\define@key{interlinear}{extranoterightpunct}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:extranoterightpunct{#1}
+ % _action
+}
+\define@key{interlinear}{languageinfopos}{%
+ % ^action_name="Setting the value"
+ \lw_iln_var_opt:languageinfopos{#1}
+ % _action
+}
+
+\newcommand{\interlinearstyle}[1]{%
+ \setkeys{interlinear}{#1}%
+ \lw_fun_helper:clear{\lw_iln_fun_reinitialize:interlinear_options}
+}
+\def\DeclareInterlinearStyle#1#2{%
+ \expandafter\def\csname lw_iln_var_sty:#1\endcsname{\interlinearstyle{#2}}}
+\def\UseInterlinearStyle#1{%
+ \expandafter\csname lw_iln_var_sty:#1\endcsname}
+\DeclareInterlinearStyle{default}{%
+ linesnumber=2,%
+ lineoneformat=\upshape,%
+ linetwoformat=\normalfont,%
+ linethreeformat=\normalfont,%
+ linefourformat=\normalfont,%
+ contextnameformat=\normalfont,%
+ extranoteformat=\normalfont,%
+ contextname={Context:},%
+ extranoteleftpunct={(},%
+ extranoterightpunct={)}%
+}
+\DeclareInterlinearStyle{nointerlinear}{%
+ nointerlinear=true,%
+ languageinfopos=head,%
+ freetranslationmarker=\ot,%
+ contextvoffset=.5em%
+}
+\DeclareInterlinearStyle{gsr}{%
+ linesnumber=2,%
+ lineoneformat=\itshape,%
+ linetwoformat=\normalfont,%
+ linethreeformat=\normalfont%
+}
+\DeclareInterlinearStyle{gsrnointerlinear}{%
+ nointerlinear=true,%
+ exformat=\itshape,%
+ languageinfopos=head,%
+ freetranslationmarker=\ot,%
+ contextvoffset=.5em%
+}
+
+\UseInterlinearStyle{gsr}% ^rem setting the default style to fit the GSR _rem
+
+\define@key{interlinear}{style}{%
+ % ^action_name="Setting the value"
+ \UseInterlinearStyle{#1}
+ % _action
+}
+
+
+% todo d. Defining Interlinear Env.
+\NewDocumentCommand{\lw_iln_fun_enter:interlinear}{}{\relax}% ^rem no_op command _rem
+\NewDocumentCommand{\lw_iln_fun_exit:interlinear}{}{%
+ \IfValueArgTF{\lw_iln_var_num:interlinear_lines}{0}%
+ {\lw_iln_fun_close:ex_box}%
+ {\lw_iln_fun_make:trans_box%
+ \lw_iln_fun_make:extranote_box%
+ \lw_iln_fun_reinitialize:markers_value}%
+ }
+
+\NewDocumentEnvironment{interlinear}{O{}}%
+ {% ^rem Beginning of the internlinear env _rem
+ \lw_iln_fun_enter:interlinear%
+ \lw_iln_fun_reinitialize:interlinear_options%
+ \setkeys{interlinear}{#1}
+ }%
+ {% ^rem End of the interlinear env _rem
+ \lw_iln_fun_exit:interlinear%
+ }
+
+\makeatother%
+
+% ^action_name="Disabling LingWrit Syntax"
+\switchlwsyntaxoff
+% _action
+% ^action_name="Ending the code"
+\endinput%
+% _action
+
+% _code
+
+% ^_*
+
+% _package
diff --git a/Master/texmf-dist/tex/latex/iran-bibtex/iran-bibtex.sty b/Master/texmf-dist/tex/latex/iran-bibtex/iran-bibtex.sty
index 1cc11bf54d3..9ee5b3525d7 100644
--- a/Master/texmf-dist/tex/latex/iran-bibtex/iran-bibtex.sty
+++ b/Master/texmf-dist/tex/latex/iran-bibtex/iran-bibtex.sty
@@ -1,5 +1,5 @@
%%
-%% This is file “iran-bibtex.sty”, v0.4.1 (2024-05-06)
+%% This is file “iran-bibtex.sty”, v0.4.3 (2024-08-04)
%%
%% __________________________________________________
%% Copyright (c) 2023-2024 Farshad Rasuli
@@ -26,10 +26,10 @@
% === Package structure: Identification
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{iran-bibtex}
- [2024-05-06 v0.4.1 Iran Manual of Style (1st edn, 2016)]
+ [2024-08-04 v0.4.3 Iran Manual of Style (1st edn, 2016)]
-\def\iranbibtex@version{0.4.1}
-\def\iranbibtexdate{2024-05-06} % May 6th, 2024
+\def\iranbibtex@version{0.4.3}
+\def\iranbibtexdate{2024-08-04} % August 4th, 2024
\def\iranbibtexfirstrelease{2023-12-12} % December 12th, 2023
\edef\@iranbibtex@info{%
***************************************************************%
@@ -168,9 +168,9 @@
%% provide command for bibliography environment
\newcommand{\enquote}[1]{``#1''}
\newcommand{\faquote}[1]{«#1»}
-\providecommand{\url}[1]{{\tt #1}}
-\providecommand{\doi}[1]{\url{#1}}
-\providecommand{\eprint}[2][]{\url{#2}}
+\providecommand{\url}[1]{\@ifpackageloaded{hyperref}{\href{#1}{#1}}{\tt #1}}
+\providecommand{\doi}[1]{\@ifpackageloaded{hyperref}{\href{https://doi.org/#1}{#1}}{\url{#1}}}
+\providecommand{\eprint}[2][]{\@ifpackageloaded{hyperref}{\href{#2}{#2}}{\url{#2}}}
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV003.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV003.pdf
new file mode 100644
index 00000000000..c3671853cca
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV003.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV004.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV004.pdf
new file mode 100644
index 00000000000..426766af28e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV004.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV009.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV009.pdf
new file mode 100644
index 00000000000..4371233c53b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV009.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV010.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV010.pdf
new file mode 100644
index 00000000000..4f7c7b0c4e3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV010.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV011.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV011.pdf
new file mode 100644
index 00000000000..b53137946cf
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV011.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV012.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV012.pdf
new file mode 100644
index 00000000000..ee3d79d2fe1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV012.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV013.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV013.pdf
new file mode 100644
index 00000000000..54a7ef44db2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV013.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV027.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV027.pdf
new file mode 100644
index 00000000000..c2c5f6e332c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV027.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV028.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV028.pdf
new file mode 100644
index 00000000000..005109c5c8b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV028.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV029.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV029.pdf
new file mode 100644
index 00000000000..070e7a2743b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV029.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV064.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV064.pdf
new file mode 100644
index 00000000000..9ef30ac6e6f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV064.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV067.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV067.pdf
new file mode 100644
index 00000000000..d0e63401149
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_CV067.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E001.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E001.pdf
new file mode 100644
index 00000000000..abc60c2691e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E001.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E002.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E002.pdf
new file mode 100644
index 00000000000..fbe80ce3f86
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E002.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E003.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E003.pdf
new file mode 100644
index 00000000000..4863d6ec073
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E003.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E004.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E004.pdf
new file mode 100644
index 00000000000..3663147e2eb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E004.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E007.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E007.pdf
new file mode 100644
index 00000000000..cd21e70dc46
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E007.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E008.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E008.pdf
new file mode 100644
index 00000000000..9d651b8d9ea
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E008.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E009.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E009.pdf
new file mode 100644
index 00000000000..93822c975eb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E009.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x}Tn1 +eD
+XPl}HrwHur(r8(`b~'^ϏG/.<#ᕲ=cf5{NZgP9W▼$A *;M6Q@ʪUeIp fAqr729݂JPQ%Y0,P!A˻.Ҽb0% * BCf%T#Od5Bve̲-GMdىy%zbq++ rm~|)Ĩ"ՕutegF\Όsk\}s0{1ካH0Q9uA.:[ѳWYo=$p@t*Y[f8ߴcgxHG̔8Mm[-(O'$.ɳ].㍛=!+Z }o5Oԡ\A[@ zT.zF%5e VK1?R܂uJxw17·.tޑ`Ɔ,RR:ݻ?J
+endstream
+endobj
+5 0 obj
+ 550
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180750+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000954 00000 n
+0000000736 00000 n
+0000000664 00000 n
+0000000015 00000 n
+0000000642 00000 n
+0000001019 00000 n
+0000001135 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1187
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E010.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E010.pdf
new file mode 100644
index 00000000000..ef0b21d5886
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E010.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E011.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E011.pdf
new file mode 100644
index 00000000000..127667563d4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E011.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E012.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E012.pdf
new file mode 100644
index 00000000000..98cb2bd8b4d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E012.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E013.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E013.pdf
new file mode 100644
index 00000000000..0d89ed3065c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E013.pdf
@@ -0,0 +1,71 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xuT[nU1 *Ll'q hh?K:VVc 㗦+p{BZ *?C07*+m~ ƽR9#ߣJ-M%@lC jTJp[`N4;1%(jN0L<
+RJ)FXQq:8ud^3lwD@Zdz,T0ooY cK}KTI[kAf1mf@rI4Q7}I|Zf,|ƴ{Lbbh[x<ggLǘVvh!,7х!bESxE lbvpaFUx1Y>|-{z hõjȪ0eOx4o.<V2-+7͕ "(WK8̱Tg~aeF,)n9y3Dw$D0;3D{@:B %W2",\Z:9nEfp.8ֲL\c8mHB'NP=P[nZ\u$[)D(439V!L%=)Y{:^'q
+QbEa
+eAlVZŲU S?K 9[]LKuXRO6{,qL}kN\ꀐyR@9f0K0u-Is<yg\zjWU\|ᒿ/
+endstream
+endobj
+5 0 obj
+ 750
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180750+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001154 00000 n
+0000000936 00000 n
+0000000864 00000 n
+0000000015 00000 n
+0000000842 00000 n
+0000001219 00000 n
+0000001335 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1387
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E014.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E014.pdf
new file mode 100644
index 00000000000..0a9e3829031
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E014.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E015.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E015.pdf
new file mode 100644
index 00000000000..d8e8f0e401c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E015.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E016.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E016.pdf
new file mode 100644
index 00000000000..06065e969e3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E016.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E017.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E017.pdf
new file mode 100644
index 00000000000..fc1ca1bdf0f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E017.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E018.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E018.pdf
new file mode 100644
index 00000000000..4b05b96f890
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E018.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E019.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E019.pdf
new file mode 100644
index 00000000000..45fe98dcd7b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E019.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E020.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E020.pdf
new file mode 100644
index 00000000000..7b85394d636
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E020.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E021.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E021.pdf
new file mode 100644
index 00000000000..187694547c1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E021.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E022.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E022.pdf
new file mode 100644
index 00000000000..2e772aa41a8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E022.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E023.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E023.pdf
new file mode 100644
index 00000000000..9a14e4d9012
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E023.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E024.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E024.pdf
new file mode 100644
index 00000000000..3fefa8edfd1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E024.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E025.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E025.pdf
new file mode 100644
index 00000000000..026668d438d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E025.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E026.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E026.pdf
new file mode 100644
index 00000000000..3c9979f5906
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E026.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E027.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E027.pdf
new file mode 100644
index 00000000000..fb532c645cc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E027.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E028.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E028.pdf
new file mode 100644
index 00000000000..affca9c7f59
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E028.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E029.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E029.pdf
new file mode 100644
index 00000000000..7faeee64644
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E029.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E030.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E030.pdf
new file mode 100644
index 00000000000..cf1a93fe95c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E030.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E031.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E031.pdf
new file mode 100644
index 00000000000..1b8b8f3b7c5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E031.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E032.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E032.pdf
new file mode 100644
index 00000000000..b70eefa5059
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E032.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E033.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E033.pdf
new file mode 100644
index 00000000000..a49b3fe4bff
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E033.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xmAn1E>( #GNHM/OfYX~`9U"0 B,jt*l-֐~
++TC%jѴr4CiXeW5dLЭOBS};HO慲8q8 wB]ɒU:z(Q]L.M3v>l-/ځG<v#RN
+endstream
+endobj
+5 0 obj
+ 258
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180753+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000662 00000 n
+0000000444 00000 n
+0000000372 00000 n
+0000000015 00000 n
+0000000350 00000 n
+0000000727 00000 n
+0000000843 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+895
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E034.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E034.pdf
new file mode 100644
index 00000000000..44341bd96b2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E034.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xmKn! Dc1Q,z_я.( cDH??^/!gU ,)Xda u)qT&b!3:A dS+{s4ؘ$^+(Üv79.`)vA١9
+p3k!%^$v 8Ԃ&*JvFn0T,-d*:/!D--M tK]z
+endstream
+endobj
+5 0 obj
+ 259
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 300 300 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180753+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000663 00000 n
+0000000445 00000 n
+0000000373 00000 n
+0000000015 00000 n
+0000000351 00000 n
+0000000728 00000 n
+0000000844 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+896
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E035.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E035.pdf
new file mode 100644
index 00000000000..c79abaa6000
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E035.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E036.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E036.pdf
new file mode 100644
index 00000000000..0bdad717baf
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E036.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E037.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E037.pdf
new file mode 100644
index 00000000000..65d6a6f2f2f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E037.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E038.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E038.pdf
new file mode 100644
index 00000000000..a99e0485f3b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E038.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E039.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E039.pdf
new file mode 100644
index 00000000000..b8247de0819
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E039.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E040.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E040.pdf
new file mode 100644
index 00000000000..f49aabdf1e0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E040.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E041.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E041.pdf
new file mode 100644
index 00000000000..9cfa31db6cb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E041.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E042.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E042.pdf
new file mode 100644
index 00000000000..917e764de5d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E042.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E043.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E043.pdf
new file mode 100644
index 00000000000..7b126756d46
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E043.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E044.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E044.pdf
new file mode 100644
index 00000000000..8049c34a95f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E044.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E045.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E045.pdf
new file mode 100644
index 00000000000..7f57b529fe8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E045.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E046.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E046.pdf
new file mode 100644
index 00000000000..3af4a0a9b91
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E046.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E047.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E047.pdf
new file mode 100644
index 00000000000..823f7704fe0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E047.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E048.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E048.pdf
new file mode 100644
index 00000000000..2cd85b1273c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E048.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E049.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E049.pdf
new file mode 100644
index 00000000000..67ae74aeb9f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E049.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E050.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E050.pdf
new file mode 100644
index 00000000000..1c0120948d0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E050.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E051.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E051.pdf
new file mode 100644
index 00000000000..9ac16abe7e2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E051.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E052.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E052.pdf
new file mode 100644
index 00000000000..057a6590adf
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E052.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E053.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E053.pdf
new file mode 100644
index 00000000000..b050874db93
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E053.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E054.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E054.pdf
new file mode 100644
index 00000000000..f4de9c9b1f0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E054.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E055.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E055.pdf
new file mode 100644
index 00000000000..a05639bfd2b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E055.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E056.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E056.pdf
new file mode 100644
index 00000000000..015f18e06d4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E056.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E057.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E057.pdf
new file mode 100644
index 00000000000..c3da1ac56b0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E057.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E058.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E058.pdf
new file mode 100644
index 00000000000..fac59cd6934
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E058.pdf
@@ -0,0 +1,68 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xmAn EJu=B5LEjD͢ o ȥFpp˽|М}~wS']0ڨ$åEnZZLswE[۲h01mT?' ;s,IdAlQ}Svԓ,pY5ZRZ*"kh lӂ%{ҍ٥JPTJIc$l4d0=)9:UwG[:X,s]Y1JG>x Z/l
+endstream
+endobj
+5 0 obj
+ 274
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 299.982663 299.999986 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109180755+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000692 00000 n
+0000000460 00000 n
+0000000388 00000 n
+0000000015 00000 n
+0000000366 00000 n
+0000000757 00000 n
+0000000873 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+925
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E059.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E059.pdf
new file mode 100644
index 00000000000..45a8ae2bd20
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E059.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E060.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E060.pdf
new file mode 100644
index 00000000000..7a0e488172e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E060.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E061.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E061.pdf
new file mode 100644
index 00000000000..2e3b5992b3f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E061.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E062.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E062.pdf
new file mode 100644
index 00000000000..69fb85f9568
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E062.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E063.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E063.pdf
new file mode 100644
index 00000000000..5eea8873cc2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E063.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E064.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E064.pdf
new file mode 100644
index 00000000000..ad4fdc70349
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E064.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E065.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E065.pdf
new file mode 100644
index 00000000000..60400eaa5ec
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E065.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E067.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E067.pdf
new file mode 100644
index 00000000000..2784052b1bb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E067.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E068.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E068.pdf
new file mode 100644
index 00000000000..0d74c205c88
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E068.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E069.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E069.pdf
new file mode 100644
index 00000000000..b5e6b2c220c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E069.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E070.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E070.pdf
new file mode 100644
index 00000000000..7554106d64b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_E070.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F001.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F001.pdf
new file mode 100644
index 00000000000..349878fd5ff
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F001.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F002.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F002.pdf
new file mode 100644
index 00000000000..2ba7a82fbc4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F002.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F003.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F003.pdf
new file mode 100644
index 00000000000..54b6f5da2c2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F003.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F004.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F004.pdf
new file mode 100644
index 00000000000..ed273764dbf
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F004.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F005.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F005.pdf
new file mode 100644
index 00000000000..1e8a6103e0b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F005.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F006.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F006.pdf
new file mode 100644
index 00000000000..c9f1f7bccb4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F006.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F007.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F007.pdf
new file mode 100644
index 00000000000..b0e5f32cbe3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F007.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F008.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F008.pdf
new file mode 100644
index 00000000000..ba9cfa7c4bd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F008.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F009.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F009.pdf
new file mode 100644
index 00000000000..cc4b7f52b03
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F009.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F010.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F010.pdf
new file mode 100644
index 00000000000..785c5f9122d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F010.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F011.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F011.pdf
new file mode 100644
index 00000000000..12ff257deb9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F011.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F012.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F012.pdf
new file mode 100644
index 00000000000..ddd57064190
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F012.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F013.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F013.pdf
new file mode 100644
index 00000000000..2772821d84c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F013.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F014.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F014.pdf
new file mode 100644
index 00000000000..2aaf0826af5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F014.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F015.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F015.pdf
new file mode 100644
index 00000000000..cf3ae1c46f5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F015.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F016.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F016.pdf
new file mode 100644
index 00000000000..06ff3352a35
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F016.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F017.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F017.pdf
new file mode 100644
index 00000000000..c9a67b8129c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F017.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F018.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F018.pdf
new file mode 100644
index 00000000000..57aa49d669a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F018.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F019.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F019.pdf
new file mode 100644
index 00000000000..a331b56a36d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_F019.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M001.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M001.pdf
new file mode 100644
index 00000000000..bf8ac9665da
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M001.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]RN! =X)-|`6ыOXh6yva2G`t}ϔYLeM덞^2}L[/j^$ո;b.ʵ wy)n{y':.zM iaE +$7qE®i(,r _P+lc'DO_tir-ʦT:li.48␂KFGʰ?b'* Cm
+@D :ʛG=y,pkC0ob:rUs,kD|hjBEW׽ج0\7<
+endstream
+endobj
+5 0 obj
+ 344
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109193356+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000754 00000 n
+0000000530 00000 n
+0000000458 00000 n
+0000000015 00000 n
+0000000436 00000 n
+0000000819 00000 n
+0000000935 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+987
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M002.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M002.pdf
new file mode 100644
index 00000000000..6fe904c927b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M002.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M003.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M003.pdf
new file mode 100644
index 00000000000..caaddd06b5f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M003.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M004.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M004.pdf
new file mode 100644
index 00000000000..28795830dc4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M004.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M005.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M005.pdf
new file mode 100644
index 00000000000..d3f23bd6625
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M005.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M006.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M006.pdf
new file mode 100644
index 00000000000..5da66c41a2f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M006.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M007.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M007.pdf
new file mode 100644
index 00000000000..5cc9f1a019e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M007.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M008.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M008.pdf
new file mode 100644
index 00000000000..e8de5ffce97
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M008.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M009.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M009.pdf
new file mode 100644
index 00000000000..c915a508c28
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M009.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M010.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M010.pdf
new file mode 100644
index 00000000000..90334f320f6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M010.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M011.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M011.pdf
new file mode 100644
index 00000000000..795558d1b57
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M011.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M012.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M012.pdf
new file mode 100644
index 00000000000..33f20feb1ae
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M012.pdf
@@ -0,0 +1,71 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xUTA!
+>1<!jiw$Re^Fr.\eK2-__OE_̆5K5U[W{~>|e^h)ڃYz݁Xo;y:#}'[H)fE}&EgRY]@";UzRʳ2{{ 8tgLw9_^# R
+Ztg`ŀK۰mH&d)/+M{^,\2pͲ<;JiҼ,<?(ՙT-H/DV0c'*8P{K\hҲF3i^-,>\o~k)OGMnuzX)(NAn}q` JL 8<WxC 5V`Iaɟ)A<=J'Չq)6+n>ULc@a65($ݔr#uحeLH![DMª۾,v"}<C]Did4uВAH5J-ZiLB . [
+)5ti3z VdDl4^;hwoNM!A0@@jcCVn5FBS25!ݶ/dw_x'A!qv>{pD5rHc[ 2+_A'tEjAqմ(fX DCBLKjq :݃f5n]AUcv٣tY`Wh Ax(ƍHz)_?N
+endstream
+endobj
+5 0 obj
+ 766
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109193357+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001176 00000 n
+0000000952 00000 n
+0000000880 00000 n
+0000000015 00000 n
+0000000858 00000 n
+0000001241 00000 n
+0000001357 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1409
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M013.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M013.pdf
new file mode 100644
index 00000000000..a9133b9fbea
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M013.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M014.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M014.pdf
new file mode 100644
index 00000000000..8731ca26ff0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M014.pdf
@@ -0,0 +1,72 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xeUI$7 @"%J3|HCpP[Mh#Rd
+e}~d8w+}Oai Y6,]
+lrc˅:gJP kDXVoA:9lwc7;e*e.Џo<CZer*DXC6({mմ|Aqttb:u{9;s{%2*4G3$;&t6kz۱q^Fs8W@$px=w{ĐHcJݹUG҄M$SإAL;uF@(lSB
+M}iWD KaQOMBٚFdy8ʈ-tQSPj)2,X{5sF"^tTc9C
+8x;x.Vl@M0lA:9lwc_S_͉Ig- ^xtld&X+ 1GvD+BJm1;gt{C.`, gX!Rt,EX_kWŀhk^5dACZmEUM|RoDǎXl酗W>C#t yb%C;@m<BP@+ O)R.pXF"mڟﱔ0GUbdv^!ڏ>^l1qZW*$0c7l՘Hmi㈳8;Xd 긯 qQd7|C t]|Z%s6Gژl3W6Aub] : > KER!+skqUs7)ؐy D́}5Xa160mQUIF'_-k[WZ?vCc 㡿CNӿ鐱g
+endstream
+endobj
+5 0 obj
+ 921
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109193357+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001331 00000 n
+0000001107 00000 n
+0000001035 00000 n
+0000000015 00000 n
+0000001013 00000 n
+0000001396 00000 n
+0000001512 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1564
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M015.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M015.pdf
new file mode 100644
index 00000000000..1e0e1991bac
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M015.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M016.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M016.pdf
new file mode 100644
index 00000000000..c301799f8c0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M016.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M017.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M017.pdf
new file mode 100644
index 00000000000..403e4af957f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M017.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M018.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M018.pdf
new file mode 100644
index 00000000000..c1684c56123
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M018.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M019.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M019.pdf
new file mode 100644
index 00000000000..899dc343f73
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M019.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M020.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M020.pdf
new file mode 100644
index 00000000000..a05f2f9c281
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M020.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M021.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M021.pdf
new file mode 100644
index 00000000000..e8e9b4444b1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M021.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M022.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M022.pdf
new file mode 100644
index 00000000000..e8c5b7be318
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M022.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M023.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M023.pdf
new file mode 100644
index 00000000000..422ada6ac3e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M023.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M024.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M024.pdf
new file mode 100644
index 00000000000..48cf114099d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M024.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M025.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M025.pdf
new file mode 100644
index 00000000000..95cacc24f2c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M025.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M026.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M026.pdf
new file mode 100644
index 00000000000..96d5a968206
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M026.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M027.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M027.pdf
new file mode 100644
index 00000000000..57ff5fc421f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M027.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M028.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M028.pdf
new file mode 100644
index 00000000000..24fb157422b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M028.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M029.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M029.pdf
new file mode 100644
index 00000000000..8c0888c9983
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M029.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M030.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M030.pdf
new file mode 100644
index 00000000000..b23dff04e07
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M030.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M031.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M031.pdf
new file mode 100644
index 00000000000..58ecb0cda8c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M031.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M032.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M032.pdf
new file mode 100644
index 00000000000..7fd3c279dcb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M032.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M033.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M033.pdf
new file mode 100644
index 00000000000..5800fc4b444
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M033.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M034.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M034.pdf
new file mode 100644
index 00000000000..aed2ce39674
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M034.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M035.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M035.pdf
new file mode 100644
index 00000000000..d419f6aeeb4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M035.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M036.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M036.pdf
new file mode 100644
index 00000000000..b3c84ef0227
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M036.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M037.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M037.pdf
new file mode 100644
index 00000000000..a8088da27fb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M037.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M038.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M038.pdf
new file mode 100644
index 00000000000..32f5f03eab2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M038.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M039.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M039.pdf
new file mode 100644
index 00000000000..bbe60d2b2c1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M039.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M040.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M040.pdf
new file mode 100644
index 00000000000..c5be6a8394c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M040.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M041.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M041.pdf
new file mode 100644
index 00000000000..7f6c9cac5bc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M041.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M042.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M042.pdf
new file mode 100644
index 00000000000..240f54561f7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M042.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M043.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M043.pdf
new file mode 100644
index 00000000000..3cec333117d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M043.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M044.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M044.pdf
new file mode 100644
index 00000000000..c4e9b90c422
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M044.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M045.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M045.pdf
new file mode 100644
index 00000000000..e18044d5f1c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M045.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M046.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M046.pdf
new file mode 100644
index 00000000000..1c7dc014f09
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M046.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M047.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M047.pdf
new file mode 100644
index 00000000000..96c4433dcb7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M047.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M048.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M048.pdf
new file mode 100644
index 00000000000..a738ce3b0cd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M048.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M049.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M049.pdf
new file mode 100644
index 00000000000..913fe8388af
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M049.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M050.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M050.pdf
new file mode 100644
index 00000000000..c2e3ba295e9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M050.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M051.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M051.pdf
new file mode 100644
index 00000000000..841dcfc7998
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M051.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M052.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M052.pdf
new file mode 100644
index 00000000000..5d9fb414b99
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M052.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M053.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M053.pdf
new file mode 100644
index 00000000000..3124ec47c6f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M053.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M054.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M054.pdf
new file mode 100644
index 00000000000..e146dadce7a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M054.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M055.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M055.pdf
new file mode 100644
index 00000000000..b744fbd6bdf
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M055.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M056.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M056.pdf
new file mode 100644
index 00000000000..42b1a3d4757
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M056.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M057.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M057.pdf
new file mode 100644
index 00000000000..8a0fa9e817b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M057.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M058.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M058.pdf
new file mode 100644
index 00000000000..d16a09083f3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M058.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M059.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M059.pdf
new file mode 100644
index 00000000000..f97c260b8a8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M059.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M060.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M060.pdf
new file mode 100644
index 00000000000..373633588c5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_M060.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P001.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P001.pdf
new file mode 100644
index 00000000000..4204639a366
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P001.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P002.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P002.pdf
new file mode 100644
index 00000000000..cbff0bd974f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P002.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P003.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P003.pdf
new file mode 100644
index 00000000000..3d70a21875f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P003.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P004.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P004.pdf
new file mode 100644
index 00000000000..7557ddb6b33
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P004.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P005.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P005.pdf
new file mode 100644
index 00000000000..47f4f065432
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P005.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P006.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P006.pdf
new file mode 100644
index 00000000000..d81b6c5e1af
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P006.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P007.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P007.pdf
new file mode 100644
index 00000000000..7ef93afe83b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P007.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P008.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P008.pdf
new file mode 100644
index 00000000000..16b5b94fbb9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P008.pdf
@@ -0,0 +1,72 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]VI$7 :,g F9TfRݍ2\39R|_A"~8gR|#3´G<8: <[c~>~z೵•eFM}ZS@0*#5MHCRUG5x3Y^{O3776iC;^=Lf.`eeg#$SskCtnOvѹtM8R`3 %d>Rᨈxt[LP2Β2kUPްfOy b[[A y"CpSkoA\ p$
+GfaK!mSj,h d9AcUȠ2!
+Ad@Gi啤=[%h,+߉n܊Hۋ0xDrm7:+,1{; ~5NPbxK4~KKNZa#mFRX*{ xKSC3@A@Y&EON86-R^a*FFM6ZMٜ-שQ I)| 8a(}&| ^W0mOӶ,XNqq
+wmex.=8W,L$Ol<*sn9 ?!%lPgbA'7Ɩ FR㞚B>tk-qG1#'Eg>%VBl\9WbJ%ؼWe)N+ljՂÉYxoH_)-@Kpc8Q}ſtV%rP
++\r&P{{aF`|l}͍s\("|0;ʚr %]P~ r'C7-L'eҍi|x0/N|2$;1ܬ5:>D8_7Wk ϒoVwѶƸ
+endstream
+endobj
+5 0 obj
+ 949
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195038+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001359 00000 n
+0000001135 00000 n
+0000001063 00000 n
+0000000015 00000 n
+0000001041 00000 n
+0000001424 00000 n
+0000001540 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1592
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P009.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P009.pdf
new file mode 100644
index 00000000000..8aedd6064b6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P009.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P010.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P010.pdf
new file mode 100644
index 00000000000..494c68d1df8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P010.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P011.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P011.pdf
new file mode 100644
index 00000000000..42d5f63ddec
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P011.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P012.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P012.pdf
new file mode 100644
index 00000000000..b196406cb82
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P012.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P013.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P013.pdf
new file mode 100644
index 00000000000..6f94e89b1f6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P013.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P014.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P014.pdf
new file mode 100644
index 00000000000..40f30b66a38
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P014.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P015.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P015.pdf
new file mode 100644
index 00000000000..7de907b4972
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P015.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P016.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P016.pdf
new file mode 100644
index 00000000000..26f222085ef
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P016.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P017.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P017.pdf
new file mode 100644
index 00000000000..07dc17d10e2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P017.pdf
@@ -0,0 +1,73 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]TK! s
+֑8F3$R_hmɌwN$/IET`̧2K?mpl%uU⎴þf=c[Ksȿ%DH4TVPo*7YțrgKr51 F>@ީ
+2֑89+Ը@\@mAPj!Z'
+'I3Zp1ܕT\R<rĊ赑pD <7 l* n]GLj_Q6~Ս]>k$57=D{/UfJFX"1
+K0̳Ehp7\ j(#!zՂBDAL'KIGDcϵ_ V,Kźʎ9`2arGޗih2!ԑΤ]_Ю(9Wѹ b'mu8k
+iƮkזtD1|VSv T6tbju6`Z7%ƶ\_0Yo44 ]@!D5 oSބE5)F L,HQbo_\2P FZ;^mxt|/8Mo^s.~2U%2
+endstream
+endobj
+5 0 obj
+ 630
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195039+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001040 00000 n
+0000000816 00000 n
+0000000744 00000 n
+0000000015 00000 n
+0000000722 00000 n
+0000001105 00000 n
+0000001221 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1273
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P018.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P018.pdf
new file mode 100644
index 00000000000..1649aaaed1d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P018.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P019.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P019.pdf
new file mode 100644
index 00000000000..567db7aa6f0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P019.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P020.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P020.pdf
new file mode 100644
index 00000000000..1a93bf6a57f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P020.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P021.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P021.pdf
new file mode 100644
index 00000000000..52a34861985
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P021.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P022.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P022.pdf
new file mode 100644
index 00000000000..b3221c84d7f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P022.pdf
@@ -0,0 +1,71 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]TK! s
+֑`0#DHyo1x/R7ݣܶ?nJ{}_V}k Z,-n մ+J{gݰ//w,9ÅQ(*JrBuTG)Mt 
+CٰP +ȹPP591R=KʤZODJ|w>OA;xuv骒XwS!}T ?7A"i}Tcu6+(-eð"ҵ/r_,|,`*gZ.rVĒhccL_b-<<J #ՀBfEl9ljnnXxe0ҥkL2|%VNEe6{!hv\2L9b(F4Q5Pk:d5!\Q,0`k5 `/Am03[MyfGaE
+kӘ4%nU$FtS7^Sd>dd(?pPB!;,dѡo݂nN,B^p1p/7}e؏iuoQJ<
+endstream
+endobj
+5 0 obj
+ 550
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195039+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000960 00000 n
+0000000736 00000 n
+0000000664 00000 n
+0000000015 00000 n
+0000000642 00000 n
+0000001025 00000 n
+0000001141 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1193
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P023.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P023.pdf
new file mode 100644
index 00000000000..bc61ff39572
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P023.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P024.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P024.pdf
new file mode 100644
index 00000000000..cfdcc656020
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P024.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P025.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P025.pdf
new file mode 100644
index 00000000000..0f630528299
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P025.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P026.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P026.pdf
new file mode 100644
index 00000000000..14622fd4740
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P026.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P027.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P027.pdf
new file mode 100644
index 00000000000..287fa92485a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P027.pdf
@@ -0,0 +1,74 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xuVK! s
+֑B0`>"Y$2`wDѓ^wUcl_ hϧG:%?FXJFT`<s5̳b#w꬞OkTrs[M+QdDk \j0-c!>JaEYC+gGy zAjbۃ1QMn: Db-lF'Ҁ D d#x{el&PKHm9赭<X{ N!jJ88;ClX͋73Hr8KLKZ
+QkE ԁ;V
+O[V_b w]F5R[="
+e{lA۱Lcڀ,QiňL]d*~ž?fj8QKkn9q|:
+pav6~!#$[H#L!I\0dtU^!'05qm l9U?8P:}/U3\BqB s!]Fb(E.ⴚۄQM茛2⺦E`E& 9M0|+1[ 34¸@1qBM}J^0"n^#uBEĐ&rf :hÀ*eQnX"u9](vqCI:
+E2*h*ET|rks`(7Y 9";N!h.}U͍K^ = \\Lu4#ApتCcj_ܑ
+endstream
+endobj
+5 0 obj
+ 802
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195039+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001212 00000 n
+0000000988 00000 n
+0000000916 00000 n
+0000000015 00000 n
+0000000894 00000 n
+0000001277 00000 n
+0000001393 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1445
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P028.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P028.pdf
new file mode 100644
index 00000000000..fbc0e109ac4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P028.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P029.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P029.pdf
new file mode 100644
index 00000000000..cb3e49f544d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P029.pdf
@@ -0,0 +1,73 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+x]VI$7 :0-j3 F3s>?H*3tUE2(qLkh
+WxNZT+.Z3r]Qp
+EA&[}He±owşBJiMrnD΅F*nviUV8ZRشmPj TZL? $& ¹DZ2IkAWϔpI4rNĭ+.Px7|bi4C)NVy FrMp=؛:-%[a+WS/]+Z;ј
+mh3xQvp N-A ݆Bwܨ[Ç c/*xcPF bghmß Uct.C/1 "<
+W"z/5'lj˭>},V.Ʃ/J}Gf)Hx,A 7wç&Ef!r<ʱ=[K].u*Іy;᧺ĸ5C㸬v"ySSY]|&SO!6{g{vXReg@ ˚jvу[۸VSpt8Cf+>D LMN{i8#3̼Ø!}9jo=1\KG~ ʕ&݂ܐ7=jIdMALj$7Wv KS徛Vv:cuwxųaFC3)į͎R\нCEWvWf\H}=}/]'[y}JMθ>`Fʻ`a<8fh@rVdЄ&qBWy9=YFu'G Hu=̺g2dwp#/BdL %XYSD/Ɨcw: ҵ@;
+MhY2b}MT!w7 6"I^?yNc225|}#!F
+endstream
+endobj
+5 0 obj
+ 972
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 198.75 198.75 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109195039+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000001382 00000 n
+0000001158 00000 n
+0000001086 00000 n
+0000000015 00000 n
+0000001064 00000 n
+0000001447 00000 n
+0000001563 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1615
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P030.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P030.pdf
new file mode 100644
index 00000000000..021c0b97952
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P030.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P031.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P031.pdf
new file mode 100644
index 00000000000..421ee50f92c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P031.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P032.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P032.pdf
new file mode 100644
index 00000000000..584f20d8e77
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P032.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P033.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P033.pdf
new file mode 100644
index 00000000000..f7d6e8f9445
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P033.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P034.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P034.pdf
new file mode 100644
index 00000000000..d8ee13c5fd8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P034.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P035.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P035.pdf
new file mode 100644
index 00000000000..d42d57242c4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P035.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P036.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P036.pdf
new file mode 100644
index 00000000000..555a6afe24b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P036.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P037.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P037.pdf
new file mode 100644
index 00000000000..6a6563ca972
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P037.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P038.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P038.pdf
new file mode 100644
index 00000000000..ddaf05f9edc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P038.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P039.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P039.pdf
new file mode 100644
index 00000000000..0a41c0d8b65
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P039.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P040.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P040.pdf
new file mode 100644
index 00000000000..bfeec12e1e6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P040.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P041.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P041.pdf
new file mode 100644
index 00000000000..6da07255e5b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P041.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P042.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P042.pdf
new file mode 100644
index 00000000000..8a77221585f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P042.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P043.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P043.pdf
new file mode 100644
index 00000000000..a4e069ba9a0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P043.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P044.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P044.pdf
new file mode 100644
index 00000000000..81cf8f71892
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P044.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P045.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P045.pdf
new file mode 100644
index 00000000000..16726e7cf2b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P045.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P046.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P046.pdf
new file mode 100644
index 00000000000..320c0f6c5d5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P046.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P047.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P047.pdf
new file mode 100644
index 00000000000..de38a973bde
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P047.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P048.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P048.pdf
new file mode 100644
index 00000000000..30b9137f542
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P048.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P049.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P049.pdf
new file mode 100644
index 00000000000..e7ebbd12021
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P049.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P050.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P050.pdf
new file mode 100644
index 00000000000..c0cb30329d3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P050.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P051.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P051.pdf
new file mode 100644
index 00000000000..c4f90329534
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P051.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P052.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P052.pdf
new file mode 100644
index 00000000000..1aa30711be7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P052.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P053.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P053.pdf
new file mode 100644
index 00000000000..5e75ac56a26
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P053.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P054.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P054.pdf
new file mode 100644
index 00000000000..39fbd4b6af9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P054.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P055.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P055.pdf
new file mode 100644
index 00000000000..561d15386bd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P055.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P056.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P056.pdf
new file mode 100644
index 00000000000..2c984d0b7e8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P056.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P057.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P057.pdf
new file mode 100644
index 00000000000..886365621e1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P057.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P058.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P058.pdf
new file mode 100644
index 00000000000..e82cdeceadd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P058.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P059.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P059.pdf
new file mode 100644
index 00000000000..46a6dc0b1cb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P059.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P060.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P060.pdf
new file mode 100644
index 00000000000..b152234d174
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P060.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P061.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P061.pdf
new file mode 100644
index 00000000000..04327846dd9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P061.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P062.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P062.pdf
new file mode 100644
index 00000000000..a3a86b12522
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P062.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P063.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P063.pdf
new file mode 100644
index 00000000000..bc4e823a184
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P063.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P064.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P064.pdf
new file mode 100644
index 00000000000..feaf4db700e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P064.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P065.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P065.pdf
new file mode 100644
index 00000000000..f0a3cf25b65
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P065.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P066.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P066.pdf
new file mode 100644
index 00000000000..ca0ad4180a6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P066.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P067.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P067.pdf
new file mode 100644
index 00000000000..f8de06dbd8e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P067.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P068.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P068.pdf
new file mode 100644
index 00000000000..9de356ab4dc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P068.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P069.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P069.pdf
new file mode 100644
index 00000000000..93c6e07dd2b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P069.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P070.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P070.pdf
new file mode 100644
index 00000000000..34b973fa36e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P070.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P071.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P071.pdf
new file mode 100644
index 00000000000..882eec69821
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P071.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P072.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P072.pdf
new file mode 100644
index 00000000000..85c8329f272
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P072.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P073.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P073.pdf
new file mode 100644
index 00000000000..a70fc013681
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P073.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P074.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P074.pdf
new file mode 100644
index 00000000000..b0dcdbdd31e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P074.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P075.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P075.pdf
new file mode 100644
index 00000000000..dbd0eece862
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_P075.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W001.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W001.pdf
new file mode 100644
index 00000000000..93e4ff1096c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W001.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xMPN1 L8 h:!V<E|7_ꉎp {-Vqɭa}HtOgx~:[0z DL&5<|\wtXӬ\10dڸԂ "ay<Ej b63YT58Q3|)sm eNI/X!%l1_ ^Mcw@9 Zܱ1\mŷY
+Cp&źȭ =rm
+endstream
+endobj
+5 0 obj
+ 279
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 450 393 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109200440+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000683 00000 n
+0000000465 00000 n
+0000000393 00000 n
+0000000015 00000 n
+0000000371 00000 n
+0000000748 00000 n
+0000000864 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+916
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W002.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W002.pdf
new file mode 100644
index 00000000000..cd4e5efe716
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W002.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W003.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W003.pdf
new file mode 100644
index 00000000000..e9718ec0b9e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W003.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xmQN1 Bl hZġmqPLZcg0Ҳ Jg>Z%y@/z=1 ؁\Gw҈IB+EH>;:Ly|+ 5 t7ˤ^c%pO!.r}XUd'sv] ķY6Zc<3#
+I^kluY7v뫯sF&Q_mͥaA6![ n-v&s(ɽuЯ#8n
+endstream
+endobj
+5 0 obj
+ 280
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 450 393 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /CreationDate (D:20231109200440+01'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000684 00000 n
+0000000466 00000 n
+0000000394 00000 n
+0000000015 00000 n
+0000000372 00000 n
+0000000749 00000 n
+0000000865 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+917
+%%EOF
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W004.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W004.pdf
new file mode 100644
index 00000000000..52821d3ee2c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W004.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W005.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W005.pdf
new file mode 100644
index 00000000000..e0af280633e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W005.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W006.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W006.pdf
new file mode 100644
index 00000000000..5a8cd083401
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W006.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W007.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W007.pdf
new file mode 100644
index 00000000000..5aee6b6eebd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W007.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W008.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W008.pdf
new file mode 100644
index 00000000000..2279b4802e8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W008.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W009.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W009.pdf
new file mode 100644
index 00000000000..9dda0f4ee9b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W009.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W010.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W010.pdf
new file mode 100644
index 00000000000..8a70dd40fcc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W010.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W011.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W011.pdf
new file mode 100644
index 00000000000..5feeebec8db
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W011.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W012.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W012.pdf
new file mode 100644
index 00000000000..6edd5cce7c2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W012.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W013.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W013.pdf
new file mode 100644
index 00000000000..22e6c03d157
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W013.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W014.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W014.pdf
new file mode 100644
index 00000000000..0ffc581a813
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W014.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W015.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W015.pdf
new file mode 100644
index 00000000000..0a8f3c6a98a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W015.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W016.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W016.pdf
new file mode 100644
index 00000000000..1635032be16
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W016.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W017.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W017.pdf
new file mode 100644
index 00000000000..e7f3eaa7e34
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W017.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W018.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W018.pdf
new file mode 100644
index 00000000000..f56cfa12f4c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W018.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W019.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W019.pdf
new file mode 100644
index 00000000000..37445e7a281
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W019.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W020.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W020.pdf
new file mode 100644
index 00000000000..1e06b95eab5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W020.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W021.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W021.pdf
new file mode 100644
index 00000000000..d60016dc805
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W021.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W022.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W022.pdf
new file mode 100644
index 00000000000..bf13211210e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W022.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W023.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W023.pdf
new file mode 100644
index 00000000000..d7b080a243d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W023.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W024.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W024.pdf
new file mode 100644
index 00000000000..c1148bf3e6a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W024.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W025.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W025.pdf
new file mode 100644
index 00000000000..1f94d88dde6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W025.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W026.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W026.pdf
new file mode 100644
index 00000000000..b51f591e19d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W026.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W027.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W027.pdf
new file mode 100644
index 00000000000..299c473c610
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W027.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W028.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W028.pdf
new file mode 100644
index 00000000000..06a2a1730e0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W028.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W029.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W029.pdf
new file mode 100644
index 00000000000..b26c8d242ec
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W029.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W030.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W030.pdf
new file mode 100644
index 00000000000..6991d20397c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W030.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W031.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W031.pdf
new file mode 100644
index 00000000000..3b04fca386c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W031.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W032.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W032.pdf
new file mode 100644
index 00000000000..874d5d18561
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W032.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W033.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W033.pdf
new file mode 100644
index 00000000000..954c565b074
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W033.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W034.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W034.pdf
new file mode 100644
index 00000000000..e05340bf572
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W034.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W035.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W035.pdf
new file mode 100644
index 00000000000..b519520de20
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W035.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W036.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W036.pdf
new file mode 100644
index 00000000000..8b3c75efa44
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W036.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W037.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W037.pdf
new file mode 100644
index 00000000000..82fdb9e25ae
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W037.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W038.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W038.pdf
new file mode 100644
index 00000000000..20d7fecebf4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W038.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W039.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W039.pdf
new file mode 100644
index 00000000000..1c99515ed9b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W039.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W040.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W040.pdf
new file mode 100644
index 00000000000..3941b250979
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W040.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W041.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W041.pdf
new file mode 100644
index 00000000000..c6416f08ea2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W041.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W042.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W042.pdf
new file mode 100644
index 00000000000..9321af66dba
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W042.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W043.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W043.pdf
new file mode 100644
index 00000000000..55ead516204
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W043.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W044.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W044.pdf
new file mode 100644
index 00000000000..e262f16d1d0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W044.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W045.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W045.pdf
new file mode 100644
index 00000000000..e6d68cba29b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W045.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W046.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W046.pdf
new file mode 100644
index 00000000000..d1d0f0b7812
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W046.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W047.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W047.pdf
new file mode 100644
index 00000000000..10b71d56d72
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W047.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W048.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W048.pdf
new file mode 100644
index 00000000000..ed0b84886fc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W048.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W049.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W049.pdf
new file mode 100644
index 00000000000..814955db230
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W049.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W050.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W050.pdf
new file mode 100644
index 00000000000..c2f4bcb9b80
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W050.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W051.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W051.pdf
new file mode 100644
index 00000000000..b0e7c09dc41
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W051.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W052.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W052.pdf
new file mode 100644
index 00000000000..9ad59817a55
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W052.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W053.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W053.pdf
new file mode 100644
index 00000000000..8013e0e9668
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W053.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W054.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W054.pdf
new file mode 100644
index 00000000000..2b3f5323d9c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W054.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W055.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W055.pdf
new file mode 100644
index 00000000000..c61a359de67
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W055.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W056.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W056.pdf
new file mode 100644
index 00000000000..6f3b5028814
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W056.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W057.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W057.pdf
new file mode 100644
index 00000000000..a4e2e379cc6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W057.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W058.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W058.pdf
new file mode 100644
index 00000000000..a6cc2f357e3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W058.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W059.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W059.pdf
new file mode 100644
index 00000000000..03037b8f9d5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W059.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W060.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W060.pdf
new file mode 100644
index 00000000000..4947b7f5294
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W060.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W061.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W061.pdf
new file mode 100644
index 00000000000..fa0dbad4ee8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W061.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W062.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W062.pdf
new file mode 100644
index 00000000000..38168b8b90b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W062.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W063.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W063.pdf
new file mode 100644
index 00000000000..0bc81af20e8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W063.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W064.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W064.pdf
new file mode 100644
index 00000000000..75f8625838a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W064.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W065.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W065.pdf
new file mode 100644
index 00000000000..f13b05c99f3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W065.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W066.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W066.pdf
new file mode 100644
index 00000000000..92afceab2f2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W066.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W067.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W067.pdf
new file mode 100644
index 00000000000..d891a4bdc73
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W067.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W068.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W068.pdf
new file mode 100644
index 00000000000..0da984a06f2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W068.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W069.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W069.pdf
new file mode 100644
index 00000000000..494ab14531a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W069.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W070.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W070.pdf
new file mode 100644
index 00000000000..4cd988cba70
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W070.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W071.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W071.pdf
new file mode 100644
index 00000000000..0e55001c941
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W071.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W072.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W072.pdf
new file mode 100644
index 00000000000..7b8a9c08391
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W072.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W073.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W073.pdf
new file mode 100644
index 00000000000..0f6f5fcd9b5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W073.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W074.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W074.pdf
new file mode 100644
index 00000000000..b6ec9d92f39
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W074.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W075.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W075.pdf
new file mode 100644
index 00000000000..6e8b28d2767
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W075.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W076.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W076.pdf
new file mode 100644
index 00000000000..32709b91446
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W076.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W077.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W077.pdf
new file mode 100644
index 00000000000..db62ce47beb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W077.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W078.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W078.pdf
new file mode 100644
index 00000000000..867eb1b6c1d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W078.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W079.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W079.pdf
new file mode 100644
index 00000000000..78e325ce3d4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W079.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W080.pdf b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W080.pdf
new file mode 100644
index 00000000000..b0b0b76b900
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety-pdfs/ISO_7010_W080.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/isosafety/isosafety.sty b/Master/texmf-dist/tex/latex/isosafety/isosafety.sty
index cab3cd68954..40cf3076281 100644
--- a/Master/texmf-dist/tex/latex/isosafety/isosafety.sty
+++ b/Master/texmf-dist/tex/latex/isosafety/isosafety.sty
@@ -1,14 +1,4 @@
-%%
-%% This is file `isosafety.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% isosafety.dtx (with options: `package')
-%%
-%% This is a generated file.
-%%
-%% Copyright (C) 2023 by BenSt099
+%% Copyright (C) 2024 by BenSt099
%%
%% 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,14 +12,17 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{isosafety}
- [2023/11/09 v1.1 ISO Safety Colors And Safety Signs]
+[2024/08/31 v1.4 ISO Safety Colors And Safety Signs]
\RequirePackage{graphicx}
\RequirePackage{xcolor}
+\RequirePackage{ifthen}
+\RequirePackage{xkeyval}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\definecolor{Warning}{HTML}{F9A800}
+\definecolor{Caution}{HTML}{F9A800}
+\definecolor{Warning}{HTML}{D05D29}
\definecolor{Prohibition}{HTML}{9B2423}
\definecolor{Mandatory}{HTML}{005387}
\definecolor{Rescue}{HTML}{237F52}
@@ -38,11 +31,17 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\isosafetypath}{false}
+\DeclareOptionX{fullpath}{\renewcommand{\isosafetypath}{#1}}
+\ProcessOptionsX\relax
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newcommand{\Isosign}[1]{isosafety-pdfs/ISO_7010_#1.pdf}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifthenelse{\equal{\isosafetypath}{false}}
+{\newcommand{\Isosign}[1]{/isosafety-pdfs/ISO_7010_#1.pdf}}
+{\newcommand{\Isosign}[1]{\isosafetypath /isosafety-pdfs/ISO_7010_#1.pdf}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
%%
-%% End of file `isosafety.sty'.
+%% End of file `isosafety.sty'. \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/iwonamath/iwonamath.sty b/Master/texmf-dist/tex/latex/iwonamath/iwonamath.sty
index e4679f35cc5..96a879699f5 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/iwonamath.sty
+++ b/Master/texmf-dist/tex/latex/iwonamath/iwonamath.sty
@@ -21,7 +21,7 @@
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
\ProvidesExplPackage {iwonamath}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\keys_define:nn { iwonamath/options }
{
@@ -67,6 +67,7 @@
\SetSymbolFont{symbols2} {bold}{OMS}{cmsy}{b}{n}
\DeclareMathDelimiter{\lVert}{\mathopen} {symbols2}{"6B}{largesymbols}{"0D}
\DeclareMathDelimiter{\rVert}{\mathclose}{symbols2}{"6B}{largesymbols}{"0D}
+ \DeclareMathDelimiter{\|}{\mathclose}{symbols2}{"6B}{largesymbols}{"0D}
}
{}
\DeclareDocumentCommand \DefineIwonaMathVersion { m }
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omliwonamath.fd b/Master/texmf-dist/tex/latex/iwonamath/omliwonamath.fd
index eca19657e23..869b63021f1 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omliwonamath.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omliwonamath.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omliwonamath.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omliwonamathc.fd b/Master/texmf-dist/tex/latex/iwonamath/omliwonamathc.fd
index 452341075ff..567abb4d8c7 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omliwonamathc.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omliwonamathc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omliwonamathc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omliwonamathl.fd b/Master/texmf-dist/tex/latex/iwonamath/omliwonamathl.fd
index a0dba2a8290..c52bb24dcfd 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omliwonamathl.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omliwonamathl.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omliwonamathl.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omliwonamathlc.fd b/Master/texmf-dist/tex/latex/iwonamath/omliwonamathlc.fd
index 90d147d1ee2..ebfaea2b699 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omliwonamathlc.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omliwonamathlc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omliwonamathlc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamath.fd b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamath.fd
index 958053cd49a..7a0c889c7db 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamath.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamath.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omsiwonamath.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathc.fd b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathc.fd
index 02b892ffc55..22c17550110 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathc.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omsiwonamathc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathcmsy.fd b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathcmsy.fd
index 107011cf5a7..5a66a04ae6e 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathcmsy.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathcmsy.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omsiwonamathcmsy.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathl.fd b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathl.fd
index d291ba7eb08..3e0815ef80b 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathl.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathl.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omsiwonamathl.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathlc.fd b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathlc.fd
index 55a040e93eb..8cdb0f65035 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathlc.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omsiwonamathlc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omsiwonamathlc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omxiwonamath.fd b/Master/texmf-dist/tex/latex/iwonamath/omxiwonamath.fd
index 662121a6be4..8b33fd85b99 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omxiwonamath.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omxiwonamath.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omxiwonamath.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathc.fd b/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathc.fd
index fce676f1e8d..9738a6961d5 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathc.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omxiwonamathc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathl.fd b/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathl.fd
index 895f359e352..759ecad381b 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathl.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathl.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omxiwonamathl.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathlc.fd b/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathlc.fd
index 85f60415e32..fbe5cdc48cc 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathlc.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/omxiwonamathlc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{omxiwonamathlc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamath.fd b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamath.fd
index 20be53c3aff..789656bfa71 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamath.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamath.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamath.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathc.fd b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathc.fd
index a0b92a2b372..182d34be2f9 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathc.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathcm.fd b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathcm.fd
index a5e69e07ad4..4f49f9befbb 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathcm.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathcm.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathcm.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathl.fd b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathl.fd
index 82060b21d1c..504e9c87ad8 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathl.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathl.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathl.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlc.fd b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlc.fd
index c5b2f0024b2..5ad18477c78 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlc.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlc.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathlc.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlcm.fd b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlcm.fd
index 130c63822eb..c1b3f9bb442 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlcm.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlcm.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathlcm.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlm.fd b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlm.fd
index ab72419cd80..f15d880adc4 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlm.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathlm.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathlm.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathm.fd b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathm.fd
index 7a103a029b6..9f82d657344 100644
--- a/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathm.fd
+++ b/Master/texmf-dist/tex/latex/iwonamath/ot1iwonamathm.fd
@@ -22,7 +22,7 @@
%% in the same archive or directory.)
\ProvidesExplFile
{ot1iwonamathm.fd}
-{2023-08-31} {1.0}
+{2024-07-19} {1.1}
{Scaled Iwona math fonts}
\tl_if_exist:NTF \l__iwonamath_scale_tl
{}
diff --git a/Master/texmf-dist/tex/latex/jigsaw/jigsaw-doc-settings.sty b/Master/texmf-dist/tex/latex/jigsaw/jigsaw-doc-settings.sty
deleted file mode 100644
index 13a1498c38e..00000000000
--- a/Master/texmf-dist/tex/latex/jigsaw/jigsaw-doc-settings.sty
+++ /dev/null
@@ -1,196 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Personal helper theme for package documentations
-% Copyright samcarter
-%
-% This file may be distributed and/or modified
-% under the LaTeX Project Public License 1.3c or later
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Usage:
-% ln ~/Life/latex/beamertheme-sam/themesam.sty package-doc-settings.sty
-% \usepackage[
-% themecolor=samdblue
-% ]{\jobname-settings}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Colours
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{xcolor}
-\definecolor{samyellow}{RGB}{246,193,65}
-\definecolor{samorange}{RGB}{241,147,45}
-\definecolor{samred}{RGB}{191,26,46}% TikZbricks
-\definecolor{sammagenta}{RGB}{170,42,104}% TikZmarmots
-\definecolor{samviolet}{RGB}{136,46,114}% TikZlings
-\definecolor{samlila}{RGB}{101,67,159}% Rainbow beamer theme
-\definecolor{samdblue}{RGB}{0,51,134}% beamer theme
-\definecolor{samlblue}{RGB}{22,89,155}% TikZducks
-\definecolor{samteal}{RGB}{25,143,157}% Tcolorbox beamer theme
-\definecolor{samlgreen}{RGB}{68,170,153}% Jigsaw
-\definecolor{samdgreen}{RGB}{78,178,125}
-\definecolor{samlgray}{RGB}{160,160,185}
-\definecolor{samdgray}{RGB}{60,60,85}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Package options
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{xkeyval}
-\DeclareOptionX{themecolor}[samdblue]{\colorlet{themecolor}{#1}}
-\DeclareOptionX{listingcolor}[samlblue]{\colorlet{listingcolor}{#1}}
-\ExecuteOptionsX{themecolor,listingcolor}
-\ProcessOptionsX
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Packages
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\@ifclassloaded{beamer}{}{%
- \RequirePackage[english]{babel}
- \RequirePackage[paper=a4paper,margin=2.9cm]{geometry}
- \RequirePackage{scrlayer-scrpage}
- \let\hrulefillx\hrulefill
- \RequirePackage[bitstream-charter]{mathdesign}
- \let\hrulefill\hrulefillx
- \RequirePackage[hang,flushmargin,bottom]{footmisc}
- \RequirePackage{footnotehyper}
- \makesavenoteenv{tcolorbox}
- \RequirePackage[all]{nowidow}
- \RequirePackage[colorlinks=true,breaklinks=true,allcolors=themecolor,hyperfootnotes=false]{hyperref}
-}
-\RequirePackage[T1]{fontenc}
-\RequirePackage{xspace}
-\RequirePackage{inconsolata}% mono font with bold, but italic is missing
-% \RequirePackage[scale=0.85]{cascadia-code}
-% \AddToHook{cmd/ttfamily/before}{\fontseries{sl}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Listings
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage[
- cachedir=./build/
-]{minted}
-
-% smuggling custom pygmentize style in cache folder
-% (a real pygmentise style would need installtion in some python folder)
-\begin{filecontents*}[noheader]{./build/sam.pygstyle}
-\makeatletter
-\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
- \let\PYG@ul=\relax \let\PYG@tc=\relax%
- \let\PYG@bc=\relax \let\PYG@ff=\relax}
-\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
-\def\PYG@toks#1+{\ifx\relax#1\empty\else%
- \PYG@tok{#1}\expandafter\PYG@toks\fi}
-\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
- \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
-\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
-
-% optional arguments
-\expandafter\def\csname PYG@tok@na\endcsname{\def\PYG@tc##1{\textcolor{black}{##1}}}
-
-% macros
-\expandafter\def\csname PYG@tok@k\endcsname{\def\PYG@tc##1{\textcolor{listingcolor}{\bfseries ##1}}}
-% curly brakets
-\expandafter\def\csname PYG@tok@nb\endcsname{\def\PYG@tc##1{\textcolor{listingcolor}{\bfseries ##1}}}
-
-% comments (italics won't work with the inconsolata font)
-\expandafter\def\csname PYG@tok@c\endcsname{\def\PYG@tc##1{\textcolor{gray}{##1}}}
-
-\def\PYGZbs{\char`\\}
-\def\PYGZus{\char`\_}
-\def\PYGZob{\char`\{}
-\def\PYGZcb{\char`\}}
-\def\PYGZca{\char`\^}
-\def\PYGZam{\char`\&}
-\def\PYGZlt{\char`\<}
-\def\PYGZgt{\char`\>}
-\def\PYGZsh{\char`\#}
-\def\PYGZpc{\char`\%}
-\def\PYGZdl{\char`\$}
-\def\PYGZhy{\char`\-}
-\def\PYGZsq{\char`\'}
-\def\PYGZdq{\char`\"}
-\def\PYGZti{\char`\~}
-% for compatibility with earlier versions
-\def\PYGZat{@}
-\def\PYGZlb{[}
-\def\PYGZrb{]}
-\makeatother
-\end{filecontents*}
-
-\usemintedstyle{sam}
-\setminted{
- breaksymbolleft={},
- tabsize=2,
- breaklines=true,
-}
-\newminted[samcode]{latex}{}
-\newmintinline[saminline]{latex}{}
-
-% use non-bold and all coloured for inline code in articles
-\ifdefined\insertaspectratio\else
- \patchcmd{\minted@inputpyg@inline}{\minted@input}{\color{listingcolor}\renewcommand\textcolor[3][]{##3}\renewcommand\bfseries{}\minted@input}{}{}
-\fi
-
-\RequirePackage[most]{tcolorbox}
-\tcbuselibrary{minted}
-\tcbset{%
- colframe=themecolor,
- fonttitle=\bfseries,
- sidebyside,
- center lower,
- righthand width=5.7cm,
- bottom=2pt,
- top=2pt,
- left=3pt,
- right=3pt,
- sidebyside gap=10pt,
- lower separated=false,
- listing engine=minted,
- minted language=latex,
- colback=themecolor!10,
- sharp corners,
- boxrule=0pt,
- before title={\strut}
-}
-
-% avoid page breaks right in front of the tcolorbox
-\@ifclassloaded{beamer}{}{
- \tcbuselibrary{hooks}
- \tcbset{before pre={\nopagebreak[4]}}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% document settings
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\@ifclassloaded{scrartcl}{%
- \KOMAoptions{parskip=half}
- \addtokomafont{sectioning}{\color{themecolor}}
- \addtokomafont{date}{\normalsize}
- \addtokomafont{author}{\normalsize}
- \setlength{\footnotemargin}{0.7em}
-}{}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Custom macros
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\providecommand*{\CTAN}{\textsc{CTAN}\xspace}
-\providecommand*{\TikZ}{Ti\emph{k}Z\xspace}
-\providecommand*{\miktex}{MiK\TeX\xspace}
-\providecommand*{\texlive}{\TeX{}Live\xspace}
-\providecommand*{\tikzbrick}{Ti\emph{k}Zbrick\xspace}
-\providecommand*{\tikzducks}{Ti\emph{k}Zducks\xspace}
-\providecommand*{\tikzlings}{Ti\emph{k}Zlings\xspace}
-\providecommand*{\tikzmarmots}{Ti\emph{k}Zmarmots\xspace}
-\providecommand*{\ConTeXt}{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq-complements.sty b/Master/texmf-dist/tex/latex/jlreq/jlreq-complements.sty
index 80ab6206501..1dc817a1976 100644
--- a/Master/texmf-dist/tex/latex/jlreq/jlreq-complements.sty
+++ b/Master/texmf-dist/tex/latex/jlreq/jlreq-complements.sty
@@ -1,7 +1,6 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{jlreq-complements}[2022/11/28 jlreq-complements]
-\RequirePackage{jlreq-helpers}[2022/11/28]
-\RequirePackage{l3keys2e}
+\ProvidesPackage{jlreq-complements}[2024/08/23 jlreq-complements]
+\RequirePackage{jlreq-helpers}[2024/02/13]
\ExplSyntaxOn
@@ -9,7 +8,7 @@
\str_new:N \g__jlreq_complements_engine_str
\tl_new:N \g__jlreq_complements_finally
-\keys_define:nn { jlreq-complements } {
+\DeclareKeys [jlreq-complements] {
setupname .code:n = {
\str_set:Nn \g__jlreq_complements_setupname_str {#1}
},
@@ -20,8 +19,8 @@
lualatex .code:n = { \str_set:Nn \g__jlreq_complements_engine_str { lualatex } },
lualatex .value_forbidden:n = true,
}
-\keys_set:nn { jlreq-complements } { setupname = jlreqcomplementssetup }
-\ProcessKeysOptions { jlreq-complements }
+\SetKeys [jlreq-complements] { setupname = jlreqcomplementssetup }
+\ProcessKeyOptions [jlreq-complements]
\str_if_empty:NT \g__jlreq_complements_engine_str {
\jlreq@helper@guessengine
@@ -37,7 +36,8 @@
\str_if_eq:VnTF \g__jlreq_complements_engine_str { lualatex } {
\prg_new_conditional:Nnn \__jlreq_complements_iftdir: { T, F, TF} {
- \int_compare_p:n { (\ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8) == 3 }
+ \int_compare:nTF { (\ltjgetparameter{direction}-(\ltjgetparameter{direction}/8)*8) == 3 }
+ { \prg_return_true: } { \prg_return_false: }
}
}{
\prg_new_conditional:Nnn \__jlreq_complements_iftdir: { T, F, TF} { \iftdir \prg_return_true: \else \prg_return_false: \fi }
diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq-trimmarks.sty b/Master/texmf-dist/tex/latex/jlreq/jlreq-trimmarks.sty
index ec65cabae91..1cded80d8cb 100644
--- a/Master/texmf-dist/tex/latex/jlreq/jlreq-trimmarks.sty
+++ b/Master/texmf-dist/tex/latex/jlreq/jlreq-trimmarks.sty
@@ -1,6 +1,5 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{jlreq-trimmarks}[2024/02/13 jlreq-trimmarks]
-\RequirePackage{l3keys2e}
+\ProvidesPackage{jlreq-trimmarks}[2024/08/23 jlreq-trimmarks]
\RequirePackage{jlreq-helpers}[2024/02/13]
\ExplSyntaxOn
@@ -42,13 +41,13 @@
}
% dvipdfmx=f,dvips=s,dviout = o, lualatex = l
-\keys_define:nn { jlreq-trimmarks } {
+\DeclareKeys [jlreq-trimmarks] {
dvipdfmx .code:n = {\let\jlreq@trimmarks@driver=f}, .value_forbidden:n = true,
dvips .code:n = {\let\jlreq@trimmarks@driver=s}, .value_forbidden:n = true,
dviout .code:n = {\let\jlreq@trimmarks@driver=o}, .value_forbidden:n = true
}
\let\jlreq@trimmarks@engine=\jlreq@engine
-\keys_define:nn { jlreq-trimmarks } {
+\DeclareKeys [jlreq-trimmarks] {
lualatex .code:n = {\let\jlreq@trimmarks@engine=l}, .value_forbidden:n = true,
uplatex .code:n = {\let\jlreq@trimmarks@engine=u}, .value_forbidden:n = true,
platex .code:n = {\let\jlreq@trimmarks@engine=p}, .value_forbidden:n = true
@@ -156,7 +155,7 @@
}
\__jlreq_trimmarks_afterpkg_addtodeletecs:N \jlreq@trimmarks@analyzepapersize
-\keys_define:nn { jlreq-trimmarks } { trimmarks_paper .tl_set:N = \jlreq@trimmarks@option@papersize }
+\DeclareKeys [jlreq-trimmarks] { trimmarks_paper .tl_set:N = \jlreq@trimmarks@option@papersize }
\__jlreq_trimmarks_afterpkg_addtodeletecs:N \jlreq@trimmarks@option@papersize
\newif\ifjlreq@trimmarks@digital \jlreq@trimmarks@digitaltrue
@@ -166,7 +165,7 @@
% flag: `show` is specified or not
\newif\ifjlreq@trimmarks@option@show \jlreq@trimmarks@option@showfalse
-\keys_define:nn { jlreq-trimmarks } {
+\DeclareKeys [jlreq-trimmarks] {
show .code:n = {
\jlreq@trimmarks@option@showtrue
\jlreq@ifempty{#1}{
@@ -214,14 +213,14 @@
}
\newif\ifjlreq@trimmarks@landscape \jlreq@trimmarks@landscapefalse
-\keys_define:nn { jlreq-trimmarks } { landscape .code:n = {\jlreq@trimmarks@landscapetrue}, .value_forbidden:n = true }
+\DeclareKeys [jlreq-trimmarks] { landscape .code:n = {\jlreq@trimmarks@landscapetrue}, .value_forbidden:n = true }
\__jlreq_trimmarks_afterpkg_addtodeleteif:N \ifjlreq@trimmarks@landscape
-\keys_set:nn { jlreq-trimmarks } {
+\SetKeys [jlreq-trimmarks] {
trimmarks_paper = {+2in},
bleed_margin = { top = 3mm, bottom = 3mm, gutter = 3mm, fore-edge = 3mm },
}
-\ProcessKeysOptions { jlreq-trimmarks }
+\ProcessKeyOptions [jlreq-trimmarks]
\ifjlreq@trimmarks@option@show\else
\ifx o\jlreq@trimmarks@driver
diff --git a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
index b8e5c3dbcb1..efde6158b8c 100644
--- a/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
+++ b/Master/texmf-dist/tex/latex/jlreq/jlreq.cls
@@ -5,28 +5,39 @@
%%
% (based on JLReq 20200811 https://www.w3.org/TR/2020/NOTE-jlreq-20200811/)
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jlreq}[2024/02/16 jlreq]
-\RequirePackage{l3keys2e}
+\ProvidesClass{jlreq}[2024/10/04 jlreq]
\RequirePackage{etoolbox}
\RequirePackage{jlreq-helpers}[2024/02/13]
\ExplSyntaxOn
+\cs_new:Nn \l_jlreq_do: {}
\int_new:N \l__jlreq_tmpa_int
+\int_new:N \l__jlreq_tmpb_int
+\int_new:N \l__jlreq_tmpc_int
\tl_new:N \l__jlreq_tmpa_tl
\tl_new:N \l__jlreq_tmpb_tl
\tl_new:N \l__jlreq_tmpc_tl
-\cs_new:Nn \l_jlreq_do: {}
\str_new:N \l__jlreq_tmpa_str
\str_new:N \l__jlreq_tmpb_str
\str_new:N \l__jlreq_tmpc_str
-\bool_new:N \l_jlreq_tmpa_bool
-\clist_new:N \l_jlreq_tmpa_clist
+\bool_new:N \l__jlreq_tmpa_bool
+\bool_new:N \l__jlreq_tmpb_bool
+\bool_new:N \l__jlreq_tmpc_bool
+\clist_new:N \l__jlreq_tmpa_clist
+\clist_new:N \l__jlreq_tmpb_clist
+\clist_new:N \l__jlreq_tmpc_clist
\seq_new:N \l__jlreq_tmpa_seq
+\seq_new:N \l__jlreq_tmpb_seq
+\seq_new:N \l__jlreq_tmpc_seq
\dim_new:N \l__jlreq_tmpa_dim
-\skip_new:N \l_jlreq_tmpa_skip
-\box_new:N \l_jlreq_tmpa_box
-\box_new:N \l_jlreq_tmpb_box
-\box_new:N \l_jlreq_tmpc_box
+\dim_new:N \l__jlreq_tmpb_dim
+\dim_new:N \l__jlreq_tmpc_dim
+\skip_new:N \l__jlreq_tmpa_skip
+\skip_new:N \l__jlreq_tmpb_skip
+\skip_new:N \l__jlreq_tmpc_skip
+\box_new:N \l__jlreq_tmpa_box
+\box_new:N \l__jlreq_tmpb_box
+\box_new:N \l__jlreq_tmpc_box
\prop_new:N \l__jlreq_tmpa_prop
\prop_new:N \l__jlreq_tmpb_prop
\prop_new:N \l__jlreq_tmpc_prop
@@ -91,7 +102,8 @@
% ものは\jlreq@option@<key>に格納する.
% _とかは@に変換する.
% エンジン類
-\keys_define:nn { jlreq } {
+\DeclareKeys [jlreq] {
+ name.usage = load,
uplatex .code:n = { \let\jlreq@engine=u }, uplatex .value_forbidden:n = true,
platex .code:n = { \let\jlreq@engine=p }, platex .value_forbidden:n = true,
lualatex .code:n = { \let\jlreq@engine=l }, lualatex .value_forbidden:n = true,
@@ -115,13 +127,13 @@
\tl_gput_right:Nn \g__jlreq_papersizelist_tl { { ##1 } { \setlength{\paperwidth}{#3} \setlength{\paperheight}{#4} } }
}
\clist_map_inline:nn {#2} {
- \keys_define:nn { jlreq } {
+ \DeclareKeys [jlreq] {
##1 .code:n = { \setlength{\paperwidth}{#3} \setlength{\paperheight}{#4} },
##1 .value_forbidden:n = true
}
}
}
-\keys_define:nn { jlreq } {
+\DeclareKeys [jlreq] {
paper .code:n = {
\str_case:nVF {#1} \g__jlreq_papersizelist_tl {
\jlreq@helper@dividebycomma{#1}%
@@ -153,7 +165,7 @@
}
\clist_map_inline:nn {#2} {
\cs_set:Nx \l__jlreq_do: {
- \exp_not:N \keys_define:nn { jlreq } {
+ \exp_not:N \DeclareKeys [jlreq] {
##1 .code:n = {
\exp_not:o { \l__jlreq_tmpa:n {##1} }
\exp_not:n { \setlength{\paperwidth}{#3} \setlength{\paperheight}{#4} }
@@ -276,7 +288,7 @@
%.. フォントサイズ,行長,1ページあたりの行数で基本版面のサイズを決める(2.4.1.a)
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@fontsize
-\keys_define:nn { jlreq } {
+\DeclareKeys [jlreq] {
fontsize .tl_set:N = \jlreq@option@fontsize,
10pt .code:n = {\def\jlreq@option@fontsize{10pt}}, 10pt .value_forbidden:n = true,
11pt .code:n = {\def\jlreq@option@fontsize{11pt}}, 11pt .value_forbidden:n = true,
@@ -287,69 +299,68 @@
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@jafontsize
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@jafontscale
%.. 行の長さ
-\keys_define:nn { jlreq } { line_length .tl_set:N = \jlreq@option@line@length }
+\DeclareKeys [jlreq] { line_length .tl_set:N = \jlreq@option@line@length }
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@line@length
%.. 1ページあたりの行数
-\keys_define:nn { jlreq } { number_of_lines .tl_set:N = \jlreq@option@number@of@lines }
+\DeclareKeys [jlreq] { number_of_lines .tl_set:N = \jlreq@option@number@of@lines }
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@number@of@lines
% 地の空き量,のどの空き量で配置位置を決める(2.4.1.b)省略されたら中央配置.
%.. 天
-\keys_define:nn { jlreq } { head_space .tl_set:N = \jlreq@option@head@space }
+\DeclareKeys [jlreq] { head_space .tl_set:N = \jlreq@option@head@space }
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@head@space
%.. 地
-\keys_define:nn { jlreq } { foot_space .tl_set:N = \jlreq@option@foot@space }
+\DeclareKeys [jlreq] { foot_space .tl_set:N = \jlreq@option@foot@space }
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@foot@space
%.. のど
-\keys_define:nn { jlreq } { gutter .tl_set:N = \jlreq@option@gutter }
+\DeclareKeys [jlreq] { gutter .tl_set:N = \jlreq@option@gutter }
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@gutter
%.. 小口
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@fore@edge
-\keys_define:nn { jlreq } {
+\DeclareKeys [jlreq] {
fore_edge .tl_set:N = \jlreq@option@fore@edge,
fore-edge .tl_set:N = \jlreq@option@fore@edge
}
%.. 柱とノンブル
% 本文とヘッダ/フッタの間の空き
-\keys_define:nn { jlreq } { headfoot_verticalposition .tl_set:N = \jlreq@option@headfoot@verticalpos }
+\DeclareKeys [jlreq] { headfoot_verticalposition .tl_set:N = \jlreq@option@headfoot@verticalpos }
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@headfoot@verticalpos
% 柱やノンブルの左右の空き
-\keys_define:nn { jlreq } { headfoot_sidemargin .tl_set:N = \jlreq@headfoot@sidemargin }
+\DeclareKeys [jlreq] { headfoot_sidemargin .tl_set:N = \jlreq@headfoot@sidemargin }
%.. 段間
-\keys_define:nn { jlreq } { column_gap .tl_set:N = \jlreq@option@column@gap }
+\DeclareKeys [jlreq] { column_gap .tl_set:N = \jlreq@option@column@gap }
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@column@gap
%.. 行送り,指定無しの場合は文字サイズの1.7倍とする.(1.5から2倍が好ましい:2.4.2.d 注3)
-\keys_define:nn { jlreq } {
- baselineskip .tl_set:N = \jlreq@option@baselineskip,
- linegap .code:n = { \def\jlreq@option@baselineskip{1zw + #1} }
+\DeclareKeys [jlreq] {
+ baselineskip .tl_set:N = \jlreqbaselineskip,
+ linegap .code:n = { \def\jlreqbaselineskip{1zw + #1} }
}
-\__jlreq_aftercls_addtodeletecs:N \jlreq@option@baselineskip
%.. 組み方系
% 行頭に括弧が来たときの配置:3.1.5
% 段落頭指定_折り返し行頭指定 で与える.
-\keys_define:nn { jlreq } { open_bracket_pos .choices:nn = {zenkaku_tentsuki,zenkakunibu_nibu,nibu_tentsuki}{\def\jlreq@open@bracket@pos{#1}} }
+\DeclareKeys [jlreq] { open_bracket_pos .choices:nn = {zenkaku_tentsuki,zenkakunibu_nibu,nibu_tentsuki}{\def\jlreq@open@bracket@pos{#1}} }
% ぶら下げ組みをするか:3.8.2 注1
\newif\ifjlreq@burasage\jlreq@burasagefalse
-\keys_define:nn { jlreq } { hanging_punctuation .code:n = {\jlreq@burasagetrue}, hanging_punctuation .value_forbidden:n = true}
+\DeclareKeys [jlreq] { hanging_punctuation .code:n = {\jlreq@burasagetrue}, hanging_punctuation .value_forbidden:n = true}
% jsarticleと同じkanjiskipを使う
\newif\ifjlreq@narrow@kanjiskip\jlreq@narrow@kanjiskipfalse
-\keys_define:nn { jlreq } { narrow_kanjiskip .code:n = {\jlreq@narrow@kanjiskiptrue}, narrow_kanjiskip .value_forbidden:n = true}
+\DeclareKeys [jlreq] { narrow_kanjiskip .code:n = {\jlreq@narrow@kanjiskiptrue}, narrow_kanjiskip .value_forbidden:n = true}
\__jlreq_aftercls_addtodeleteif:N \ifjlreq@narrow@kanjiskip
%.. 注
% 傍注のタイプ
-\keys_define:nn { jlreq } { sidenote_length .tl_set:N = \jlreq@option@sidenote@length }
+\DeclareKeys [jlreq] { sidenote_length .tl_set:N = \jlreq@option@sidenote@length }
\__jlreq_aftercls_addtodeletecs:N \jlreq@option@sidenote@length
%.. 逆ノンブル
\newif\ifjlreq@option@use@reverse@pagination
\__jlreq_aftercls_addtodeleteif:N \ifjlreq@option@use@reverse@pagination
\jlreq@option@use@reverse@paginationfalse
-\keys_define:nn { jlreq } { use_reverse_pagination .code:n = {\jlreq@option@use@reverse@paginationtrue}, use_reverse_pagination .value_forbidden:n = true }
+\DeclareKeys [jlreq] { use_reverse_pagination .code:n = {\jlreq@option@use@reverse@paginationtrue}, use_reverse_pagination .value_forbidden:n = true }
%.. もろもろ
\newif\if@restonecol\@restonecolfalse
@@ -358,7 +369,7 @@
\newif\if@tate \@tatefalse
\newif\ifjlreq@option@titlepage \jlreq@option@titlepagefalse % titlepageかnotitlepageかが指定された
\__jlreq_aftercls_addtodeleteif:N \ifjlreq@option@titlepage
-\keys_define:nn { jlreq } {
+\DeclareKeys [jlreq] {
landscape .code:n = {\@landscapetrue}, landscape .value_forbidden:n = true,
tombo .code:n = {\ClassWarningNoLine{jlreq}{The~option~`tombo'~is~not~supported~by~jlreq~class.~Please~use~the~jlreq-trimmarks~package}},
tombow .code:n = {\ClassWarningNoLine{jlreq}{The~option~`tombow'~is~not~supported~by~jlreq~class.~Please~use~the~jlreq-trimmarks~package}},
@@ -368,7 +379,7 @@
\newif\ifjlreq@option@twoside\jlreq@option@twosidefalse % onesideかtwosideが指定された
\__jlreq_aftercls_addtodeleteif:N \ifjlreq@option@twoside
-\keys_define:nn { jlreq } {
+\DeclareKeys [jlreq] {
oneside .code:n = { \@twosidefalse\@mparswitchfalse\jlreq@option@twosidetrue }, oneside .value_forbidden:n = true,
twoside .code:n = { \@twosidetrue\@mparswitchtrue\jlreq@option@twosidetrue }, twoside .value_forbidden:n = true,
onecolumn .code:n = { \@twocolumnfalse }, onecolumn .value_forbidden:n = true,
@@ -381,7 +392,7 @@
\newif\if@openright
\newif\ifjlreq@option@open \jlreq@option@openfalse % openrightかopenanyが指定された
\__jlreq_aftercls_addtodeleteif:N \ifjlreq@option@open
-\keys_define:nn { jlreq } {
+\DeclareKeys [jlreq] {
openright .code:n = { \@openrighttrue\jlreq@option@opentrue }, openright .value_forbidden:n = true,
openany .code:n = { \@openrightfalse\jlreq@option@opentrue }, openany .value_forbidden:n = true,
leqno .code:n = { \input{leqno.clo } }, leqno .value_forbidden:n = true,
@@ -389,12 +400,12 @@
}
\newif\ifjlreq@option@enablejfam \jlreq@option@enablejfamtrue
\__jlreq_aftercls_addtodeleteif:N \ifjlreq@option@enablejfam
-\keys_define:nn { jlreq } { disablejfam .code:n = { \jlreq@option@enablejfamfalse }, disablejfam .value_forbidden:n = true}
+\DeclareKeys [jlreq] { disablejfam .code:n = { \jlreq@option@enablejfamfalse }, disablejfam .value_forbidden:n = true}
\def\jlreq@note#1{}
-\keys_define:nn { jlreq } { jlreq_notes .code:n = { \def\jlreq@note##1{\message{^^JJLReq note: ##1^^J}}}, jlreq_notes .value_forbidden:n = true}
+\DeclareKeys [jlreq] { jlreq_notes .code:n = { \def\jlreq@note##1{\message{^^JJLReq note: ##1^^J}}}, jlreq_notes .value_forbidden:n = true}
-\keys_set:nn { jlreq } {
+\SetKeys [jlreq] {
article_type=article,paper=a4,
number_of_lines={},line_length = {},
head_space={},foot_space={},gutter={},fore_edge={},
@@ -402,8 +413,9 @@
sidenote_length=0pt,column_gap={2zw},
headfoot_verticalposition = {},headfoot_sidemargin={0pt},
open_bracket_pos=zenkaku_tentsuki,
- onecolumn,final }
-\ProcessKeysOptions { jlreq }
+ onecolumn,final
+}
+\ProcessKeyOptions [jlreq]
\legacy_if:nF { jlreq@option@titlepage } {
\str_if_eq:VnTF \jlreq@article@type { article } { \@titlepagefalse } { \@titlepagetrue }
@@ -1189,23 +1201,22 @@
% \baselineskipの計算
% いったん文字サイズを変更((u)platexの際にzh/zwをきちんとするため)
\@setfontsize\normalsize{\jlreq@fontsize}{\jlreq@fontsize}%
-\newdimen\jlreq@baselineskip
+% 現在の\baselineskipを計算し#1に入れる
\ifx l\jlreq@engine
- \setlength{\jlreq@baselineskip}{%
- \dimexpr\directlua{
+ \edef\jlreqbaselineskip{
+ \directlua{
local~act = string.char(92)~
- local~s = [[\jlreq@option@baselineskip]]~
+ local~s = [[\jlreqbaselineskip]]~
s = s:gsub("[QH]",act .. "dimexpr 0.25mm" .. act .. "relax"):gsub("zh",act .. "zh"):gsub("zw",act .. "zw")~
- tex.print(s)~
- }\relax
- }%
-\else
- \setlength{\jlreq@baselineskip}{\dimexpr\jlreq@option@baselineskip\relax}
+ tex.print(act .. "unexpanded{" .. s .. "}")~
+ }
+ }
\fi
-\ifdim\jlreq@fontsize>\jlreq@baselineskip
+\dim_set:Nn \l__jlreq_tmpa_dim {\jlreqbaselineskip}
+\ifdim\jlreq@fontsize>\l__jlreq_tmpa_dim
\ClassError{jlreq}{The~baselineskip~is~less~than~fontsize}{\@ehc}%
\fi
-\bool_if:nT { \dim_compare_p:n { \jlreq@baselineskip < 1.5\zw } || \dim_compare_p:n { \jlreq@baselineskip > 2\zw } } {
+\bool_if:nT { \dim_compare_p:n { \l__jlreq_tmpa_dim < 1.5\zw } || \dim_compare_p:n { \l__jlreq_tmpa_dim > 2\zw } } {
\jlreq@note { 行間は二分以上全角以下が望ましい (2.4.2.d~注3).}
}
@@ -1266,7 +1277,7 @@
\fi
\renewcommand{\normalsize}{%
- \@setfontsize\normalsize{\jlreq@fontsize}{\jlreq@baselineskip}%
+ \@setfontsize\normalsize{\jlreq@fontsize}{\dimexpr\jlreqbaselineskip\relax}%
\abovedisplayskip 1.1\jlreq@fontsize \@plus .3\jlreq@fontsize \@minus .4\jlreq@fontsize
\abovedisplayshortskip \z@ \@plus .3\jlreq@fontsize
\belowdisplayskip .9\jlreq@fontsize \@plus.3\jlreq@fontsize \@minus.4\jlreq@fontsize
@@ -1286,26 +1297,49 @@
% 2.5.2 \baselineskipは一定の方がよい?
% \@listiは再定義しないようにした.(\normalsizeと共用でJLReq通りだと思う.)
\newcommand{\footnotesize}{%
- \@setfontsize\footnotesize{.8\jlreq@fontsize}{\dimexpr 115\jlreq@baselineskip/170\relax}% 脚注文字サイズの二分より少し小さい値を行間に: 4.2.5.e
+ \setlength{\jlreq@tempdima}{\dimexpr\jlreqbaselineskip\relax}
+ \@setfontsize\footnotesize{.8\jlreq@fontsize}{\dimexpr 115\jlreq@tempdima/170\relax}% 脚注文字サイズの二分より少し小さい値を行間に: 4.2.5.e
\abovedisplayskip .6\jlreq@fontsize \@plus.2\jlreq@fontsize \@minus.4\jlreq@fontsize
\abovedisplayshortskip \z@ \@plus.1\jlreq@fontsize
\belowdisplayshortskip .3\jlreq@fontsize \@plus.1\jlreq@fontsize \@minus.2\jlreq@fontsize
\belowdisplayskip \abovedisplayskip}
-% tsize10.cloの引数を,そのまま\jlreq@fontsize/\jlreq@baselineskipでスケーリングしているだけ.
+% tsize10.cloの引数を,そのまま\jlreq@fontsize/\jlreqbaselineskipでスケーリングしているだけ.
\newcommand{\small}{%
% jsarticleのもの
- \@setfontsize\small{.9\jlreq@fontsize}{\dimexpr 13\jlreq@baselineskip/17\relax}%
+ \setlength{\jlreq@tempdima}{\dimexpr\jlreqbaselineskip\relax}
+ \@setfontsize\small{.9\jlreq@fontsize}{\dimexpr 13\jlreq@tempdima/17\relax}%
\abovedisplayskip .9\jlreq@fontsize \@plus.3\jlreq@fontsize \@minus.4\jlreq@fontsize
\abovedisplayshortskip \z@ \@plus.3\jlreq@fontsize
\belowdisplayshortskip \abovedisplayshortskip
\belowdisplayskip \abovedisplayskip}
-\newcommand{\scriptsize}{\@setfontsize\scriptsize{\dimexpr 7\jlreq@fontsize/10\relax}{\dimexpr 8\jlreq@baselineskip/17\relax}}
-\newcommand{\tiny}{\@setfontsize\tiny{\dimexpr 5\jlreq@fontsize/10\relax}{\dimexpr 6\jlreq@baselineskip/17\relax}}
-\newcommand{\large}{\@setfontsize\large{\dimexpr12\jlreq@fontsize/10\relax}{\jlreq@baselineskip}}
-\newcommand{\Large}{\@setfontsize\Large{\dimexpr14\jlreq@fontsize/10\relax}{\dimexpr 21\jlreq@baselineskip/17\relax}}
-\newcommand{\LARGE}{\@setfontsize\LARGE{\dimexpr17\jlreq@fontsize/10\relax}{\dimexpr 25\jlreq@baselineskip/17\relax}}
-\newcommand{\huge}{\@setfontsize\huge{2\jlreq@fontsize}{\dimexpr 28\jlreq@baselineskip/17\relax}}
-\newcommand{\Huge}{\@setfontsize\Huge{\dimexpr 25\jlreq@fontsize/10\relax}{\dimexpr 33\jlreq@baselineskip/17\relax}}
+\newcommand{\scriptsize}{
+ \setlength{\jlreq@tempdima}{\dimexpr\jlreqbaselineskip\relax}
+ \@setfontsize\scriptsize{\dimexpr 7\jlreq@fontsize/10\relax}{\dimexpr 8\jlreq@tempdima/17\relax}
+}
+\newcommand{\tiny}{
+ \setlength{\jlreq@tempdima}{\dimexpr\jlreqbaselineskip\relax}
+ \@setfontsize\tiny{\dimexpr 5\jlreq@fontsize/10\relax}{\dimexpr 6\jlreq@tempdima/17\relax}
+}
+\newcommand{\large}{
+ \setlength{\jlreq@tempdima}{\dimexpr\jlreqbaselineskip\relax}
+ \@setfontsize\large{\dimexpr12\jlreq@fontsize/10\relax}{\jlreq@tempdima}
+}
+\newcommand{\Large}{
+ \setlength{\jlreq@tempdima}{\dimexpr\jlreqbaselineskip\relax}
+ \@setfontsize\Large{\dimexpr14\jlreq@fontsize/10\relax}{\dimexpr 21\jlreq@tempdima/17\relax}
+}
+\newcommand{\LARGE}{
+ \setlength{\jlreq@tempdima}{\dimexpr\jlreqbaselineskip\relax}
+ \@setfontsize\LARGE{\dimexpr17\jlreq@fontsize/10\relax}{\dimexpr 25\jlreq@tempdima/17\relax}
+}
+\newcommand{\huge}{
+ \setlength{\jlreq@tempdima}{\dimexpr\jlreqbaselineskip\relax}
+ \@setfontsize\huge{2\jlreq@fontsize}{\dimexpr 28\jlreq@tempdima/17\relax}
+}
+\newcommand{\Huge}{
+ \setlength{\jlreq@tempdima}{\dimexpr\jlreqbaselineskip\relax}
+ \@setfontsize\Huge{\dimexpr 25\jlreq@fontsize/10\relax}{\dimexpr 33\jlreq@tempdima/17\relax}
+}
%. plextから拝借
\def\jlreq@Kanji#1{\expandafter\kansuji\csname c@#1\endcsname}
@@ -1833,42 +1867,32 @@
%.. 別行見出し
% \jlreq@BlockHeading@start:別行見出しを出力する命令.
-% \jlreq@BlockHeading@start{1 = 命令名}{2 = レベル}{3 = スペース関連}{4 = カウンタ関連}{5 = フォーマット関連}{6 = 全体フォーマット}*{見出し}[副題]
+% \jlreq@BlockHeading@start{1 = 命令名}{2 = レベル}{3 = スペース関連}{4 = カウンタ関連}*[running head]{見出し}[副題]
% カウンタ関連=-,*,無し:-はカウンタ関連を処理しない.*はさらに目次に追加しない(星付き命令と同様).星付きで呼び出された時は常に*同等.
% スペース関連={配置:lcr(左中央右)}{字下げ(寸法)}{字上げ(寸法)}{前空き}{後空き}{行取りの行数}{空か*か,偶数ページでも改ページを許可するならば空}
% 前/後空きはprefixにa:/s:/r:が入る.r:は空きがその値そのものになる.a:/s:は行取りに加えて入る.a:で指定された空きはページ行頭では入らない
% 後空きの時はs:は指定できない.
-% フォーマット関連:
-% フォーマット関連={{ラベルのみのフォーマット}{ラベルフォーマット}{見出し文字列フォーマット}{見出し文字列フォーマット(ラベル無し)}{副題フォーマット}{副題フォーマット(ラベル無し)}}{{前フォーマットラベルあり}{前フォーマットラベルなし}{見出し全体のフォーマット}{後ろフォーマットラベルあり}{後ろフォーマットラベルなし}}
+% フォーマット関連:あらかじめマクロに入れておく
+% \jlreq@BlockHeading@start@eachformat: {ラベルのみのフォーマット}{ラベルフォーマット}{見出し文字列フォーマット}{見出し文字列フォーマット(ラベル無し)}{副題フォーマット}{副題フォーマット(ラベル無し)}
+% \jlreq@BlockHeading@start@format: {前フォーマットラベルあり}{前フォーマットラベルなし}{見出し全体のフォーマット}{後ろフォーマットラベルあり}{後ろフォーマットラベルなし}
+% \jlreq@BlockHeading@start@totalformat: 全体フォーマット
% 見出しそのものは「全体フォーマット」に従い出力される.パラメータトークン#1を含み,#1=見出し本体:スペース関連と上の「見出し全体のフォーマット」に基づいて整形される.
% 見出し全体のフォーマット内では#1=ラベル,#2=見出し文字列,#3=副題,それぞれ各々のフォーマットに基づき整形される.
% ラベルフォーマットでは#1=カウンタ名,見出し文字列フォーマットでは#1=見出し文字列,副題フォーマットでは#1=副題
% ラベルのみのフォーマットは目次に使われる.
-\long\def\jlreq@BlockHeading@start#1#2#3#4#5#6{%
- \if@noskipsec\leavevmode\fi
- % #5と#6は\parを含むかもしれないので引数渡しはしない(後の\@ifstarで詰まる)
- \edef\jlreq@BlockHeading@start@eachformat{\exp_not:o {\@firstoftwo#5}}%
- \edef\jlreq@BlockHeading@start@format{\exp_not:o {\@secondoftwo#5}}%
- \edef\jlreq@BlockHeading@start@totalformat{\unexpanded{#6}}%
- \jlreq@BlockHeading@start@{#1}{#2}{#3}{#4}%
-}
-% {1 = 命令}{2 = レベル}{3 = スペース関連}
-\long\def\jlreq@BlockHeading@start@#1#2#3#4{%
- \@ifstar{\@dblarg{\jlreq@BlockHeading@start@@{#1}{#2}{#3}{*}}}{\@dblarg{\jlreq@BlockHeading@start@@{#1}{#2}{#3}{#4}}}%
-}
% {1 = 命令}{2 = レベル}{3 = スペース関連}{4 = *}[5 = running head]{6 = 見出し}
-\long\def\jlreq@BlockHeading@start@@#1#2#3#4[#5]#6{%
- \@ifnextchar[{\jlreq@BlockHeading@start@@@{#1}{#2}{#3}{#4}{#5}{#6}}{\jlreq@BlockHeading@start@@@{#1}{#2}{#3}{#4}{#5}{#6}[]}%
+\long\def\jlreq@BlockHeading@start#1#2#3#4[#5]#6{%
+ \@ifnextchar[{\jlreq@BlockHeading@start@i{#1}{#2}{#3}{#4}{#5}{#6}}{\jlreq@BlockHeading@start@i{#1}{#2}{#3}{#4}{#5}{#6}[]}%
}
% {1 = 命令}{2 = レベル}{3 = スペース関連}{4 = *}{5 = running head}{6 = 見出し}[7 = 副題]
-\long\def\jlreq@BlockHeading@start@@@#1#2#3#4#5#6[#7]{%
- \edef\jlreq@do{\unexpanded{\jlreq@BlockHeading@start@@@@{#1}{#2}{#3}}{\exp_not:o {\jlreq@BlockHeading@start@totalformat}}}%
+\long\def\jlreq@BlockHeading@start@i#1#2#3#4#5#6[#7]{%
+ \edef\jlreq@do{\unexpanded{\jlreq@BlockHeading@start@ii{#1}{#2}{#3}}{\exp_not:o {\jlreq@BlockHeading@start@totalformat}}}%
\jlreq@do{#4}{#5}{#6}{#7}%
}
% {1 = 命令}{2 = レベル}{3 = スペース関連}{4 = 全フォーマット}{5 = *}{6 = running head}{7 = 見出し}{8 = 副題}
-\long\def\jlreq@BlockHeading@start@@@@#1#2#3#4#5#6#7#8{%
+\long\def\jlreq@BlockHeading@start@ii#1#2#3#4#5#6#7#8{%
\global\advance\jlreq@BlockHeading@spaces@current@count by 1
\tl_gput_right:Nn \jlreq@BlockHeading@spaces@current@sequence {_#1}%
\edef\jlreq@tempa##1##2##3##4##5##6##7{%
@@ -2200,18 +2224,12 @@
\jlreq@ifgluezero\jlreq@tempskipb{}{\vskip\jlreq@tempskipb}%
\edef\jlreq@do{%
\dim_compare:nF { \parskip=0pt } {
-% \exp_not:N \cs_set:Nn \exp_not:N \g__jlreq_gyodori_hook_par: {
-% \noexpand\parskip=\the\parskip\noexpand\relax
-% \exp_not:n { \cs_set:Nn \g__jlreq_gyodori_hook_par: {} }
-% }
\exp_not:N \AddToHook { para/before } { \noexpand\parskip=\the\parskip\noexpand\relax }
\noexpand\parskip=0pt
}
}%
\expandafter}\jlreq@do
}
-%\cs_set:Nn \g__jlreq_gyodori_hook_par: {}
-%\PushPostHook{par}{\g__jlreq_gyodori_hook_par:}
% 行取り情報をゲットだぜ
@@ -2498,34 +2516,46 @@
\def\jlreq@totalformat@after{}%
}%
\fi
+ % フォーマットを指定のマクロに入れる命令群
+ \tl_set:Nx \l__jlreq_tmpa_tl {
+ \exp_not:n {\edef\jlreq@BlockHeading@start@eachformat}{\exp_not:N \unexpanded{%
+ {\exp_not:o {\jlreq@label@format}}{\exp_not:o {\jlreq@label@format@modified}}%
+ {\exp_not:o {\jlreq@heading@text@format@wlabel}}{\exp_not:o {\jlreq@heading@text@format@wolabel}}%
+ {\exp_not:o {\jlreq@subtitle@format@wlabel}}{\exp_not:o {\jlreq@subtitle@format@wolabel}}%
+ }}%
+ \exp_not:n {\edef\jlreq@BlockHeading@start@format}{\exp_not:N \unexpanded{%
+ {\exp_not:o {\jlreq@pre@format@wlabel}}{\exp_not:o {\jlreq@pre@format@wolabel}}%
+ {\exp_not:o {\jlreq@format}}%
+ {}{}%
+ }}%
+ \exp_not:n {\edef\jlreq@BlockHeading@start@totalformat}{\exp_not:N \unexpanded{%
+ {\exp_not:n {
+ \par
+ \addpenalty\@secpenalty
+ \addvspace{0pt}\relax % 改ページ関係(#54,#100),よくわかっていない
+ }}
+ {\exp_not:o {\jlreq@totalformat}}{\exp_not:o {\jlreq@totalformat@after}}%
+ }}%
+ }
+ % \jlreq@BlockHeading@startの第四引数
+ \tl_set:Nx \l__jlreq_tmpb_tl {
+ {\exp_not:o {\jlreq@align}}{\exp_not:o {\jlreq@indent}}{\exp_not:o {\jlreq@end@indent}}\exp_not:o {\jlreq@spaceset}{\exp_not:o {\jlreq@allowbreak@evenpage}}
+ }
\edef\jlreq@do{%
\exp_not:o {\jlreq@do}%
\noexpand\edef\exp_not:c {jlreq@headingcs@#1}{\noexpand\unexpanded{%
\exp_not:N \g__jlreq_hook_beforeheading:n {#1}
\exp_not:o {\jlreq@pagebreak}%
\tl_if_empty:NF \l__jlreq_pagestyle_tl { \exp_not:N \thispagestyle {\exp_not:o { \l__jlreq_pagestyle_tl } } }
- \unexpanded{\jlreq@BlockHeading@start{#1}{#2}}%
- {{\exp_not:o {\jlreq@align}}{\exp_not:o {\jlreq@indent}}{\exp_not:o {\jlreq@end@indent}}\exp_not:o {\jlreq@spaceset}{\exp_not:o {\jlreq@allowbreak@evenpage}}}%
- {\ifjlreq@number\else -\fi}%
- {%
- {%
- {\exp_not:o {\jlreq@label@format}}{\exp_not:o {\jlreq@label@format@modified}}%
- {\exp_not:o {\jlreq@heading@text@format@wlabel}}{\exp_not:o {\jlreq@heading@text@format@wolabel}}%
- {\exp_not:o {\jlreq@subtitle@format@wlabel}}{\exp_not:o {\jlreq@subtitle@format@wolabel}}%
- }%
- {%
- {\exp_not:o {\jlreq@pre@format@wlabel}}{\exp_not:o {\jlreq@pre@format@wolabel}}%
- {\exp_not:o {\jlreq@format}}%
- {}{}%
- }%
- }%
- {{\exp_not:n {
- \par
- \addpenalty\@secpenalty
- \addvspace{0pt}\relax % 改ページ関係(#54,#100),よくわかっていない
- }}{\exp_not:o {\jlreq@totalformat}}{\exp_not:o {\jlreq@totalformat@after}}}%
- }}%
- \noexpand\def\exp_not:c {#1}{\exp_not:c {jlreq@headingcs@#1}}%
+ \exp_not:o \l__jlreq_tmpa_tl
+ \exp_not:N \@ifstar
+ {\exp_not:N \@dblarg{\exp_not:N \jlreq@BlockHeading@start{\exp_not:n {#1}}{\exp_not:n {#2}}{\exp_not:o {\l__jlreq_tmpb_tl}}{*}}}%
+ {\exp_not:N \@dblarg{\exp_not:N \jlreq@BlockHeading@start{\exp_not:n {#1}}{\exp_not:n {#2}}{\exp_not:o {\l__jlreq_tmpb_tl}}{\ifjlreq@number\else -\fi}}}%
+ }
+ }%
+ \noexpand\def\exp_not:c {#1}{
+ \exp_not:c {jlreq@headingcs@#1}
+ }%
}%
\expandafter\endgroup
\jlreq@do
@@ -3027,8 +3057,8 @@
\cs_set:Nn \__jlreq_CutinHeading_start_aux:nnnnnn{%
% 一行で処理したときの見出し長さを計測
\group_begin:
- \hbox_set:Nn \l_jlreq_tmpa_box {#1#6}
- \dim_set:Nn \l__jlreq_tmpa_dim { \box_wd:N \l_jlreq_tmpa_box}
+ \hbox_set:Nn \l__jlreq_tmpa_box {#1#6}
+ \dim_set:Nn \l__jlreq_tmpa_dim { \box_wd:N \l__jlreq_tmpa_box}
% 何行必要かを\l__jlreq_cutinheading_linecount_tlに入れる
\dim_compare:nTF { \l__jlreq_tmpa_dim > #5} {
\tl_set:Nn \l__jlreq_cutinheading_linecount_tl {3}
@@ -3038,31 +3068,31 @@
} { \tl_set:Nn \l__jlreq_cutinheading_linecount_tl {1} } }
% \l__jlreq_tmpa_dimが実際の一行の長さに近い
\dim_set:Nn \l__jlreq_tmpa_dim { \l__jlreq_tmpa_dim / \l__jlreq_cutinheading_linecount_tl }
- % \l_jlreq_tmpb_boxに見出し部分を,\l__jlreq_cutinheading_linecount_tlに見出し自身に何行使うかを入れる
+ % \l__jlreq_tmpb_boxに見出し部分を,\l__jlreq_cutinheading_linecount_tlに見出し自身に何行使うかを入れる
\int_compare:nTF { \l__jlreq_cutinheading_linecount_tl = 1 }{
- \vbox_set:Nn \l_jlreq_tmpb_box {\parindent=0pt\rightskip=0pt\leftskip=0pt\box_use_drop:N \l_jlreq_tmpa_box}
+ \vbox_set:Nn \l__jlreq_tmpb_box {\parindent=0pt\rightskip=0pt\leftskip=0pt\box_use_drop:N \l__jlreq_tmpa_box}
\tl_set:Nn \l__jlreq_cutinheading_linecount_tl {2}
}{
\jlreq@inlinenote@determinelength{#6}{#1}{}{\l__jlreq_cutinheading_linecount_tl}{\l__jlreq_cutinheading_linecount_tl}{\l__jlreq_tmpa_dim}{\linewidth}%
- \box_set_eq:NN \l_jlreq_tmpb_box \jlreq@resultbox
+ \box_set_eq:NN \l__jlreq_tmpb_box \jlreq@resultbox
\tl_set:Nn \l__jlreq_cutinheading_linecount_tl {3}
}
% 普通の一行の高さ/深さに合わせて見出しのボックスを作る
- \setbox\l_jlreq_tmpa_box =\vtop to \dimexpr\numexpr\l__jlreq_cutinheading_linecount_tl - 1\relax\baselineskip + 1\jlreq@zh\relax{\skip_vertical:n {0pt~plus~1fill~minus~1fill} \box_use_drop:N \l_jlreq_tmpb_box \skip_vertical:n {0pt~plus~1fill~minus~1fill}}%
+ \setbox\l__jlreq_tmpa_box =\vtop to \dimexpr\numexpr\l__jlreq_cutinheading_linecount_tl - 1\relax\baselineskip + 1\jlreq@zh\relax{\skip_vertical:n {0pt~plus~1fill~minus~1fill} \box_use_drop:N \l__jlreq_tmpb_box \skip_vertical:n {0pt~plus~1fill~minus~1fill}}%
% 高さを通常の一行のそれにする
- \hbox_set:Nn \l_jlreq_tmpc_box {阿}
- \box_set_dp:Nn \l_jlreq_tmpa_box { \box_ht:N \l_jlreq_tmpa_box + \box_dp:N \l_jlreq_tmpa_box - \box_ht:N \l_jlreq_tmpc_box }
- \box_set_ht:Nn \l_jlreq_tmpa_box { \box_ht:N \l_jlreq_tmpc_box }
+ \hbox_set:Nn \l__jlreq_tmpc_box {阿}
+ \box_set_dp:Nn \l__jlreq_tmpa_box { \box_ht:N \l__jlreq_tmpa_box + \box_dp:N \l__jlreq_tmpa_box - \box_ht:N \l__jlreq_tmpc_box }
+ \box_set_ht:Nn \l__jlreq_tmpa_box { \box_ht:N \l__jlreq_tmpc_box }
\noindent
\hspace*{#2}%
- \box_use:N \l_jlreq_tmpa_box
+ \box_use:N \l__jlreq_tmpa_box
\hspace*{#3}%
% でかい見出しボックスの分をキャンセルする空きを入れる
- % \baselineskip - box_ht:N \l_jlreq_tmpc_boxはTeXが挿入するスキップの分
+ % \baselineskip - box_ht:N \l__jlreq_tmpc_boxはTeXが挿入するスキップの分
\cs_set:Nx \l__jlreq_do:{
\exp_not:N \par
- \exp_not:N \skip_vertical:n {\dim_eval:n {-\box_ht:N \l_jlreq_tmpa_box - \box_dp:N \l_jlreq_tmpa_box - \baselineskip + \box_ht:N \l_jlreq_tmpc_box}}
- \exp_not:N\hangindent= \dim_eval:n {#2 + \box_wd:N \l_jlreq_tmpa_box + #3} \exp_not:N \relax
+ \exp_not:N \skip_vertical:n {\dim_eval:n {-\box_ht:N \l__jlreq_tmpa_box - \box_dp:N \l__jlreq_tmpa_box - \baselineskip + \box_ht:N \l__jlreq_tmpc_box}}
+ \exp_not:N\hangindent= \dim_eval:n {#2 + \box_wd:N \l__jlreq_tmpa_box + #3} \exp_not:N \relax
\exp_not:N\hangafter=-\l__jlreq_cutinheading_linecount_tl\relax
}%
\exp_after:wN \group_end:
@@ -3136,14 +3166,14 @@
\str_set:Nn \l__jlreq_tmpa_str {#2}
\str_case_e:nn { \jlreq@HeadingType {#1} } {
{ BlockHeading } {
- \bool_set_false:N \l_jlreq_tmpa_bool
- \str_if_in:NnT \l__jlreq_tmpa_str { before_space= } { \bool_set_true:N \l_jlreq_tmpa_bool }
- \str_if_in:NnT \l__jlreq_tmpa_str { before_space~= } { \bool_set_true:N \l_jlreq_tmpa_bool }
- \bool_if:NT \l_jlreq_tmpa_bool {\tl_put_left:Nn \l__jlreq_tmpa_tl {before_lines={},} }
- \bool_set_false:N \l_jlreq_tmpa_bool
- \str_if_in:NnT \l__jlreq_tmpa_str { after_space= } { \bool_set_true:N \l_jlreq_tmpa_bool }
- \str_if_in:NnT \l__jlreq_tmpa_str { after_space~= } { \bool_set_true:N \l_jlreq_tmpa_bool }
- \bool_if:NT \l_jlreq_tmpa_bool {\tl_put_left:Nn \l__jlreq_tmpa_tl {after_lines={},}}
+ \bool_set_false:N \l__jlreq_tmpa_bool
+ \str_if_in:NnT \l__jlreq_tmpa_str { before_space= } { \bool_set_true:N \l__jlreq_tmpa_bool }
+ \str_if_in:NnT \l__jlreq_tmpa_str { before_space~= } { \bool_set_true:N \l__jlreq_tmpa_bool }
+ \bool_if:NT \l__jlreq_tmpa_bool {\tl_put_left:Nn \l__jlreq_tmpa_tl {before_lines={},} }
+ \bool_set_false:N \l__jlreq_tmpa_bool
+ \str_if_in:NnT \l__jlreq_tmpa_str { after_space= } { \bool_set_true:N \l__jlreq_tmpa_bool }
+ \str_if_in:NnT \l__jlreq_tmpa_str { after_space~= } { \bool_set_true:N \l__jlreq_tmpa_bool }
+ \bool_if:NT \l__jlreq_tmpa_bool {\tl_put_left:Nn \l__jlreq_tmpa_tl {after_lines={},}}
}
}
\cs_set:Nx \l_jlreq_do: {
@@ -3998,7 +4028,7 @@
% \jlreq@resultboxに整形結果を返す(垂直ボックス).見つからなかったらvoid.\globalに設定する.
\long\def\jlreq@inlinenote@determinelength#1#2#3#4#5#6#7{%
\begingroup
- % \message{#1 の試行開始,行数 = #5, \the\dimexpr#6\relax から \the\dimexpr#7\relaxまで}%
+% \message{#1 の試行開始,行数 = #5, \the\dimexpr#6\relax から \the\dimexpr#7\relax まで(長さ\the\dimexpr #7 - #6\relax )}%
\@tempcnta=1\relax
\def\@tempa{}%
% 調整に使う行の\parshape指定を\@tempaに入れる.長さは\jlreq@tempdima.
@@ -4019,12 +4049,12 @@
\parindent=0pt\leftskip=0pt\rightskip=0pt
\parshape #5~#3~\@tempa 0pt~\the\maxdimen
#1\par\global\@tempcntb=\prevgraf}%
- % \message{\string\jlreq@tempdima = \the\jlreq@tempdima で試行,行数は\the\@tempcntb , 書式 #5 #3 \@tempa 0pt \the\maxdimen}%
+% \message{\string\jlreq@tempdima = \the\jlreq@tempdima で試行,行数は\the\@tempcntb , 書式~#5~#3~\@tempa~0pt~\the\maxdimen}%
\fi
\jlreq@getlastbox{\@tempboxa}%
\setbox\jlreq@tempboxa=\box\jlreq@resultbox
\ifnum\@tempcntb<#5\relax% 行数が達していないならOK
- % \message{行数 = \the\@tempcntb により確定}
+% \message{行数 = \the\@tempcntb により確定}
% #5行になるまで空の水平ボックスを加えていく.
\global\setbox\jlreq@resultbox=\vbox{#2%
\unvbox\@tempboxa\hbox{\unhbox\jlreq@tempboxa\unskip\unskip\unpenalty}%
@@ -4034,7 +4064,7 @@
% そうでない場合は最後の二行の長さを比較する
\jlreq@getlastbox{\@tempboxa}%
\setbox\jlreq@tempboxb=\box\jlreq@resultbox
- % \message{最終行の長さ \the\wd\jlreq@tempboxa, その前の長さ \the\wd\jlreq@tempboxb}%
+% \message{最終行の長さ \the\wd\jlreq@tempboxa, その前の長さ \the\wd\jlreq@tempboxb}%
\ifdim\wd\jlreq@tempboxa>\wd\jlreq@tempboxb
\advance\jlreq@tempdima by 0.3pt\relax% 0.3ptに意味はない
\else
@@ -6194,17 +6224,17 @@
\ltj@setpar@global
\cs_set:Nn \l_jlreq_do: {}
\tl_if_empty:nF {#1} {
- \skip_set:Nn \l_jlreq_tmpa_skip { #1 }
+ \skip_set:Nn \l__jlreq_tmpa_skip { #1 }
\cs_set:Nx \l_jlreq_do: { \exp_not:o \l_jlreq_do:
- \exp_not:N \cs_set:Npn \exp_not:N \jlreqkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
- \exp_not:N \ltjsetkanjiskip \skip_use:N \l_jlreq_tmpa_skip
+ \exp_not:N \cs_set:Npn \exp_not:N \jlreqkanjiskip { \skip_use:N \l__jlreq_tmpa_skip }
+ \exp_not:N \ltjsetkanjiskip \skip_use:N \l__jlreq_tmpa_skip
}
}
\tl_if_empty:nF {#2} {
- \skip_set:Nn \l_jlreq_tmpa_skip { #2 }
+ \skip_set:Nn \l__jlreq_tmpa_skip { #2 }
\cs_set:Nx \l_jlreq_do: { \exp_not:o \l_jlreq_do:
- \exp_not:N \cs_set:Npn \exp_not:N \jlreqxkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
- \exp_not:N \ltjsetxkanjiskip \skip_use:N \l_jlreq_tmpa_skip
+ \exp_not:N \cs_set:Npn \exp_not:N \jlreqxkanjiskip { \skip_use:N \l__jlreq_tmpa_skip }
+ \exp_not:N \ltjsetxkanjiskip \skip_use:N \l__jlreq_tmpa_skip
}
}
\exp_after:wN \group_end:
@@ -6215,17 +6245,17 @@
\group_begin:
\cs_set:Nn \l_jlreq_do: {}
\tl_if_empty:nF {#1} {
- \skip_set:Nn \l_jlreq_tmpa_skip { #1 }
+ \skip_set:Nn \l__jlreq_tmpa_skip { #1 }
\cs_set:Nx \l_jlreq_do: { \exp_not:o \l_jlreq_do:
- \exp_not:N \cs_set:Npx \exp_not:N \jlreqkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
- \exp_not:N \skip_set:Nn \exp_not:N \kanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
+ \exp_not:N \cs_set:Npx \exp_not:N \jlreqkanjiskip { \skip_use:N \l__jlreq_tmpa_skip }
+ \exp_not:N \skip_set:Nn \exp_not:N \kanjiskip { \skip_use:N \l__jlreq_tmpa_skip }
}
}
\tl_if_empty:nF {#2} {
- \skip_set:Nn \l_jlreq_tmpa_skip { #2 }
+ \skip_set:Nn \l__jlreq_tmpa_skip { #2 }
\cs_set:Nx \l_jlreq_do: { \exp_not:o \l_jlreq_do:
- \exp_not:N \cs_set:Npx \exp_not:N \jlreqxkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
- \exp_not:N \skip_set:Nn \exp_not:N \xkanjiskip { \skip_use:N \l_jlreq_tmpa_skip }
+ \exp_not:N \cs_set:Npx \exp_not:N \jlreqxkanjiskip { \skip_use:N \l__jlreq_tmpa_skip }
+ \exp_not:N \skip_set:Nn \exp_not:N \xkanjiskip { \skip_use:N \l__jlreq_tmpa_skip }
}
}
\exp_after:wN \group_end:
diff --git a/Master/texmf-dist/tex/latex/jnuexam/jnuexam.cls b/Master/texmf-dist/tex/latex/jnuexam/jnuexam.cls
index f5df9204692..086c55f2b01 100644
--- a/Master/texmf-dist/tex/latex/jnuexam/jnuexam.cls
+++ b/Master/texmf-dist/tex/latex/jnuexam/jnuexam.cls
@@ -6,7 +6,7 @@
% ----------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{jnuexam}[2024-02-18 v2024E An exam class for Jinan University]
+\ProvidesClass{jnuexam}[2024-07-09 v2024F An exam class for Jinan University]
%% 旧版本的 LaTeX 不能识别 2022-11-01 这种日期格式
%\@ifl@t@r\fmtversion{2022-11-01}{}{
@@ -521,9 +521,10 @@
\let\doscratchpaper=\doscratchpaperone
}
-% 在旧版本 ctex 宏包中不能用 \AtEndDocument 添加含中文的内容,即不能用 \appto 而要用 \preto
+%% 此时 \AtEndDocument{...} 等价于 \AddToHook{enddocument}[jnuexam]{...}
+%% 而且默认会在 \AddToHook{enddocument}[randexam]{...} 所加的代码之后执行
\newcommand{\addscratchpaper}{
- \preto{\@enddocumenthook}{\doscratchpaper}
+ \AtEndDocument{\doscratchpaper}
}
\IfExamBoolF{plain}{\IfExamBoolF{answer}{\addscratchpaper}}
@@ -534,6 +535,7 @@
\DeclareExamTheme{final-chinese}{
\SetExamOption{chinese}
+ \SetExamBoolTrue{evaluator}
\SelectExamTranslation{chinese}
\SetExamValue{exampart}{number=\Chinese}
\SelectExamTemplate{examtitle}{final-chinese}
diff --git a/Master/texmf-dist/tex/latex/joinbox/joinbox.sty b/Master/texmf-dist/tex/latex/joinbox/joinbox.sty
index 06077c23f12..68e54c3a204 100644
--- a/Master/texmf-dist/tex/latex/joinbox/joinbox.sty
+++ b/Master/texmf-dist/tex/latex/joinbox/joinbox.sty
@@ -7,7 +7,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\ProvidesExplPackage{joinbox}{2023-08-21}{v1.0.2}
+\ProvidesExplPackage{joinbox}{2024-09-09}{v1.0.3}
{Join figures to same height or width with LaTeX3}
\RequirePackage{xparse}
@@ -42,7 +42,6 @@
% 函数变体
\cs_generate_variant:Nn \hcoffin_set:Nn { Nx }
-
% 定义变量
\bool_new:N \l__joinbox_vertical_bool
\bool_new:N \l__joinbox_out_scale_bool
@@ -77,7 +76,8 @@
baseline .value_required:n = true,
baseline .choices:nn = { t, vc, H, b }
{
- \int_set_eq:NN \l__joinbox_baseline_int \l_keys_choice_int
+ \int_set_eq:NN \l__joinbox_baseline_int
+ \l_keys_choice_int
},
baseline .default:n = vc,
baseline .initial:n = b,
@@ -92,19 +92,19 @@
\bool_set_false:N \l__joinbox_out_scale_bool
}{
\bool_set_true:N \l__joinbox_out_scale_bool
- \dim_set:Nn \l__joinbox_out_length_dim { \dim_eval:n{ #1 } }
+ \dim_set:Nn \l__joinbox_out_length_dim
+ { \dim_eval:n{ #1 } }
}
}
},
outlen .default:n = 0pt,
outlen .initial:n = 0pt,
- % 拼音间距
+ % 拼接间距
sep .dim_set:N = \l__joinbox_sep_dim,
sep .default:n = 0pt,
sep .initial:n = 0pt,
- % unknown .code:n = { \__joinbox_error:n { unknown-option } }
unknown .code:n = \__joinbox_unknown_key:V \l_keys_key_str,
}
@@ -116,8 +116,7 @@
{ vc } { \int_set:Nn \l__joinbox_baseline_int { 2 } }
{ H } { \int_set:Nn \l__joinbox_baseline_int { 3 } }
{ b } { \int_set:Nn \l__joinbox_baseline_int { 4 } }
- }
- {
+ }{
% 转换为token
\tl_set_rescan:Nnn \l_tmpa_tl {} {#1}
% 计算尺寸
@@ -138,12 +137,9 @@
}
\cs_generate_variant:Nn \__joinbox_unknown_key:n { V }
-% \msg_new:nnn { joinbox } { unknown-option }
-% { package~ option~ "\l_keys_key_tl"~ is~ unknown. }
-
%% 参数设置用户接口
\NewDocumentCommand \joinset { m }
- { \keys_set:nn { joinset } {#1} }
+ { \keys_set:nn { joinbox } {#1} }
% 计算box盒子的总高度
% #1---盒子变量
@@ -208,7 +204,8 @@
\dim_set_eq:NN \l__joinbox_min_height_dim \l_tmpb_dim
}
- \bool_if:nT { !(\l__joinbox_only_first_bool) && !(\l__joinbox_only_second_bool) }
+ \bool_if:nT { !(\l__joinbox_only_first_bool) &&
+ !(\l__joinbox_only_second_bool) }
{
% 比较并记录最小宽度
\dim_set:Nn \l__joinbox_min_width_dim
@@ -274,10 +271,12 @@
{
\coffin_scale:Nnn \l__joinbox_out_coffin
{
- \dim_ratio:nn { \l__joinbox_min_width_dim }{ \coffin_wd:N \l__joinbox_out_coffin }
+ \dim_ratio:nn { \l__joinbox_min_width_dim }
+ { \coffin_wd:N \l__joinbox_out_coffin }
}
{
- \dim_ratio:nn { \l__joinbox_min_width_dim }{ \coffin_wd:N \l__joinbox_out_coffin }
+ \dim_ratio:nn { \l__joinbox_min_width_dim }
+ { \coffin_wd:N \l__joinbox_out_coffin }
}
}
@@ -286,10 +285,12 @@
{
\coffin_scale:Nnn \l__joinbox_tmpa_coffin
{
- \dim_ratio:nn { \l__joinbox_min_width_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_min_width_dim }
+ { \coffin_wd:N \l__joinbox_tmpa_coffin }
}
{
- \dim_ratio:nn { \l__joinbox_min_width_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_min_width_dim }
+ { \coffin_wd:N \l__joinbox_tmpa_coffin }
}
}
@@ -298,11 +299,13 @@
\coffin_set_eq:NN \l__joinbox_out_coffin \l__joinbox_tmpa_coffin
}
- \bool_if:nT { !(\l__joinbox_only_first_bool) && !(\l__joinbox_only_second_bool) }
+ \bool_if:nT { !(\l__joinbox_only_first_bool) &&
+ !(\l__joinbox_only_second_bool) }
{
% 将第2个盒子拼接到第一个盒子
\coffin_join:NnnNnnnn \l__joinbox_out_coffin
- { hc } { b } \l__joinbox_tmpa_coffin { hc } { t } { 0pt } { -\l__joinbox_sep_dim }
+ { hc } { b } \l__joinbox_tmpa_coffin { hc } { t }
+ { 0pt } { -\l__joinbox_sep_dim }
}
% 按指定输出宽度缩放输出盒子
@@ -310,10 +313,12 @@
{
\coffin_scale:Nnn \l__joinbox_out_coffin
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \l__joinbox_min_width_dim }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \l__joinbox_min_width_dim }
}
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \l__joinbox_min_width_dim }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \l__joinbox_min_width_dim }
}
}
@@ -329,10 +334,12 @@
% 按最小高度缩放第1个盒子
\coffin_scale:Nnn \l__joinbox_out_coffin
{
- \dim_ratio:nn { \l__joinbox_min_height_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_out_coffin }
+ \dim_ratio:nn { \l__joinbox_min_height_dim }
+ { \__joinbox_coffin_ht_plus_dp:N \l__joinbox_out_coffin }
}
{
- \dim_ratio:nn { \l__joinbox_min_height_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_out_coffin }
+ \dim_ratio:nn { \l__joinbox_min_height_dim }
+ { \__joinbox_coffin_ht_plus_dp:N \l__joinbox_out_coffin }
}
% 处理第2个盒子
@@ -344,25 +351,30 @@
% 按最小高度缩放第2个盒子
\coffin_scale:Nnn \l__joinbox_tmpa_coffin
{
- \dim_ratio:nn { \l__joinbox_min_height_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_min_height_dim }
+ { \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
}
{
- \dim_ratio:nn { \l__joinbox_min_height_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_min_height_dim }
+ { \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
}
% 将第2个盒子拼接到第1个盒子
\coffin_join:NnnNnnnn \l__joinbox_out_coffin
- { vc } { r } \l__joinbox_tmpa_coffin { vc } { l } { \l__joinbox_sep_dim } { 0pt }
+ { vc } { r } \l__joinbox_tmpa_coffin { vc } { l }
+ { \l__joinbox_sep_dim } { 0pt }
% 按指定输出高度缩放输出盒子
\bool_if:NT \l__joinbox_out_scale_bool
{
\coffin_scale:Nnn \l__joinbox_out_coffin
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \l__joinbox_min_height_dim }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \l__joinbox_min_height_dim }
}
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \l__joinbox_min_height_dim }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \l__joinbox_min_height_dim }
}
}
@@ -425,19 +437,23 @@
{
\coffin_scale:Nnn \l__joinbox_tmpa_coffin
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \coffin_wd:N \l__joinbox_tmpa_coffin }
}
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \coffin_wd:N \l__joinbox_tmpa_coffin }
}
}
{
\coffin_scale:Nnn \l__joinbox_tmpa_coffin
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
}
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
}
}
}
@@ -491,19 +507,23 @@
{
\coffin_scale:Nnn \l__joinbox_tmpa_coffin
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \coffin_wd:N \l__joinbox_tmpa_coffin }
}
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \coffin_wd:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \coffin_wd:N \l__joinbox_tmpa_coffin }
}
}
{
\coffin_scale:Nnn \l__joinbox_tmpa_coffin
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
}
{
- \dim_ratio:nn { \l__joinbox_out_length_dim }{ \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
+ \dim_ratio:nn { \l__joinbox_out_length_dim }
+ { \__joinbox_coffin_ht_plus_dp:N \l__joinbox_tmpa_coffin }
}
}
}
@@ -595,7 +615,7 @@
% 被拼接对象同时为空,无需拼接
\msg_new:nnn { joinbox } { empty-objs }
- { The~two~objects~which~was~joined~are~empty. }
+ { The~two~objects~which~were~joined~are~empty. }
% 图像拼接用户接口
% 将指定文件名列表中的图像拼接成一个盒子
diff --git a/Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty b/Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty
index 680e89bfcac..a477d1d35f5 100644
--- a/Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty
+++ b/Master/texmf-dist/tex/latex/jsonparse/jsonparse.sty
@@ -1,24 +1,25 @@
-% File: jsonparse.sty
+% File: jsonparse.sty
% Copyright 2024 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-04-28} {0.8.3}
- {JSON Parse}
+%
+\ProvidesExplPackage {jsonparse} {2024-11-05} {0.9.7}
+ {A handy way to parse, store and access JSON data from files or strings in LaTeX documents}
\bool_new:N \l__jsonparse_debug_mode_bool
-\keys_define:nn { jsonparse } {
+\keys_define:nn { jsonparse / global } {
debug .bool_set:N = \l__jsonparse_debug_mode_bool ,
debug .default:n = { true } ,
+ debug .initial:n = { false }
}
-\ProcessKeyOptions [ jsonparse ]
+\ProcessKeyOptions [ jsonparse / global ]
\msg_new:nnn { jsonparse } { debug-info } {
#1
@@ -27,13 +28,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 } {
@@ -56,9 +57,14 @@
Escape ~ character ~ #1 ~ not ~ found.
}
+\msg_new:nnn { jsonparse } { unknown-key } {
+ \msg_warning_text:n { jsonparse } \iow_newline:
+ Ignoring ~ unknown ~ key: ~ #1.
+}
+
\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 } {
@@ -66,15 +72,29 @@
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
\str_new:N \l__jsonparse_array_sep_right_str
\str_new:N \l__jsonparse_true_str
\str_new:N \l__jsonparse_false_str
\str_new:N \l__jsonparse_null_str
-\bool_new:N \l__jsonparse_array_index_zero_based_bool
+\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
\str_new:N \l__jsonparse_backspace_str
\str_new:N \l__jsonparse_formfeed_str
@@ -82,59 +102,76 @@
\str_new:N \l__jsonparse_carriage_return_str
\str_new:N \l__jsonparse_horizontal_tab_str
-\clist_new:N \l__jsonparse_escape_tex_chars_clist
-\clist_set:Nn \l__jsonparse_escape_tex_chars_clist {
+\clist_new:N \l__jsonparse_unused_keys_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 }
}
-\keys_define:nn { jsonparse } {
- array ~ index ~ zero-based .bool_set:N = \l__jsonparse_array_index_zero_based_bool ,
- array ~ index ~ zero-based .default:n = { true } ,
- array ~ index ~ zero-based .initial:n = { true } ,
- separator .code:n = { \keys_set:nn { jsonparse / separator } {#1} },
- separator / child .str_set:N = \l__jsonparse_child_sep_str ,
- separator / child .initial:n = { . } ,
- separator / array ~ left .str_set:N = \l__jsonparse_array_sep_left_str ,
- separator / array ~ left .initial:n = { [ } ,
- separator / array ~ right .str_set:N = \l__jsonparse_array_sep_right_str ,
- separator / array ~ right .initial:n = { ] } ,
- replacement .code:n = { \keys_set:nn { jsonparse / replacement } {#1} },
- replacement / true .str_set:N = \l__jsonparse_true_str ,
- replacement / true .initial:n = { true } ,
- replacement / false .str_set:N = \l__jsonparse_false_str ,
- replacement / false .initial:n = { false } ,
- replacement / null .str_set:N = \l__jsonparse_null_str ,
- replacement / null .initial:n = { null } ,
- replacement / backspace .str_set:N = \l__jsonparse_backspace_str ,
- replacement / backspace .initial:n = { ~ } ,
- replacement / formfeed .str_set:N = \l__jsonparse_formfeed_str ,
- replacement / formfeed .initial:n = { ~ } ,
- replacement / linefeed .str_set:N = \l__jsonparse_linefeed_str ,
- replacement / linefeed .initial:n = { ~ } ,
- replacement / carriage ~ return .str_set:N = \l__jsonparse_carriage_return_str ,
- replacement / carriage ~ return .initial:n = { ~ } ,
- replacement / horizontal ~ tab .str_set:N = \l__jsonparse_horizontal_tab_str ,
- replacement / horizontal ~ tab .initial:n = { ~ } ,
- escape .code:n = {
- \str_case:nnF {#1} {
+\keys_define:nn { jsonparse / parse } {
+ externalize .bool_set:N = \l__jsonparse_externalize_bool ,
+ externalize .default:n = { true } ,
+ externalize .initial:n = { false } ,
+ 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 = {
+ \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} } ,
+ separator / child .str_set:N = \l__jsonparse_child_sep_str ,
+ separator / child .initial:n = { . } ,
+ separator / array ~ left .str_set:N = \l__jsonparse_array_sep_left_str ,
+ separator / array ~ left .initial:n = { [ } ,
+ separator / array ~ right .str_set:N = \l__jsonparse_array_sep_right_str ,
+ separator / array ~ right .initial:n = { ] } ,
+ 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 }
+}
+
+\keys_define:nn { jsonparse / typeset } {
+ replace .code:n = { \keys_set:nn { jsonparse / typeset / replace } {#1} } ,
+ replace / backspace .str_set:N = \l__jsonparse_backspace_str ,
+ replace / backspace .initial:n = { ~ } ,
+ replace / formfeed .str_set:N = \l__jsonparse_formfeed_str ,
+ replace / formfeed .initial:n = { ~ } ,
+ replace / linefeed .str_set:N = \l__jsonparse_linefeed_str ,
+ replace / linefeed .initial:n = { ~ } ,
+ replace / carriage ~ return .str_set:N = \l__jsonparse_carriage_return_str ,
+ 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} {
{ 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 }
}
}
@@ -145,7 +182,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 }
}
@@ -168,19 +205,37 @@
}
}
}
+ } ,
+ escape .groups:n = { output } ,
+ rescan .bool_set:N = \l__jsonparse_rescan_bool ,
+ rescan .default:n = { true } ,
+ rescan .initial:n = { true } ,
+ rescan .groups:n = { output }
+}
+
+\cs_new: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:nn { jsonparse } {#1}
+ \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 / typeset } { \l__jsonparse_unused_keys_clist } \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
}
% ===
-\cs_if_exist:NF \str_casefold:n {
+\cs_if_exist:NF \str_casefold:n {
\cs_new:Npn \str_casefold:n { \str_foldcase:n }
}
+\cs_generate_variant:Nn \file_input:n { e }
+\cs_generate_variant:Nn \tl_gset:Nn { Ne , ce }
\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nne }
\cs_generate_variant:Nn \tl_range:nnn { nne , nen }
\cs_generate_variant:Nn \tl_range:Nnn { Nne , Nen }
@@ -193,18 +248,27 @@
\cs_generate_variant:Nn \str_case_e:nn { en }
\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 \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 }
+\cs_generate_variant:Nn \keys_set_known:nnN { noN }
\cs_generate_variant:Nn \iow_now:Nn { Ne }
+\cs_generate_variant:Nn \iow_open:Nn { Ne }
\cs_generate_variant:Nn \msg_error:nnn { nno }
\cs_generate_variant:Nn \msg_error:nnnn { nnoo }
+\cs_generate_variant:Nn \msg_info:nnn { nne }
\cs_generate_variant:Nn \msg_log:nnn { nne }
+\cs_generate_variant:Nn \msg_warning:nnn { nne }
-\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { en } { T }
+\prg_generate_conditional_variant:Nnn \file_if_exist:n { e } { T , TF }
\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 }
\prop_new:N \g_jsonparse_entries_prop
\prop_new:N \l__jsonparse_temp_prop
@@ -221,18 +285,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_load_external_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: }
@@ -241,72 +317,258 @@
% ===
+\tl_new:N \l__jsonparse_num_input_tl
+\tl_new:N \l__jsonparse_num_remainder_tl
+\tl_new:N \l__jsonparse_num_input_last_tl
+\bool_new:N \l__jsonparse_num_bool
+\bool_new:N \l__jsonparse_num_zero_seen_bool
+\bool_new:N \l__jsonparse_num_plus_minus_seen_bool
+\bool_new:N \l__jsonparse_num_fraction_seen_bool
+\bool_new:N \l__jsonparse_num_exponent_seen_bool
+
+\clist_const:Nn \c__jsonparse_num_digits_clist {
+ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
+}
+
+\clist_const:Ne \c__jsonparse_num_others_clist {
+ \tl_to_str:n { + } ,
+ \tl_to_str:n { - } ,
+ \tl_to_str:n { . } ,
+ \tl_to_str:n { e } ,
+ \tl_to_str:n { E }
+}
+
+\prg_new_conditional:Npnn \jsonparse_if_num:n #1 { p , T , F , TF } {
+ \bool_set_true:N \l__jsonparse_num_bool
+ \bool_set_false:N \l__jsonparse_num_zero_seen_bool
+ \bool_set_false:N \l__jsonparse_num_plus_minus_seen_bool
+ \bool_set_false:N \l__jsonparse_num_fraction_seen_bool
+ \bool_set_false:N \l__jsonparse_num_exponent_seen_bool
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { #1 }
+ \tl_if_empty:NTF \l__jsonparse_num_remainder_tl {
+ \bool_set_false:N \l__jsonparse_num_bool
+ } {
+ \__jsonparse_parse_num:n {#1}
+ }
+ \clist_if_in:NVT \c__jsonparse_num_others_clist \l__jsonparse_num_input_last_tl {
+ \bool_set_false:N \l__jsonparse_num_bool
+ }
+ \bool_if:NTF \l__jsonparse_num_bool {
+ \prg_return_true:
+ } {
+ \prg_return_false:
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num:n #1 {
+ \tl_set:Ne \l__jsonparse_num_input_tl { \tl_trim_spaces:e {#1} }
+ \tl_if_empty:NF \l__jsonparse_num_input_tl {
+ \cs_if_exist_use:cTF { __jsonparse_parse_num_ \str_head_ignore_spaces:o { \l__jsonparse_num_input_tl } :w } {
+ \l__jsonparse_num_input_tl \q_stop
+ } {
+ \exp_last_unbraced:No
+ \__jsonparse_parse_num_other:w \l__jsonparse_num_input_tl \q_stop
+ }
+ }
+}
+
+\cs_new:cpn { __jsonparse_parse_num_ + :w } #1 \q_stop {
+ \exp_last_unbraced:No
+ \__jsonparse_parse_num_plus_minus:w #1 \q_stop
+}
+
+\cs_new:cpn { __jsonparse_parse_num_ - :w } #1 \q_stop {
+ \exp_last_unbraced:No
+ \__jsonparse_parse_num_plus_minus:w #1 \q_stop
+}
+
+\cs_new:cpn { __jsonparse_parse_num_ . :w } #1 \q_stop {
+ \exp_last_unbraced:No
+ \__jsonparse_parse_num_fraction:w #1 \q_stop
+}
+
+\cs_new:cpn { __jsonparse_parse_num_ e :w } #1 \q_stop {
+ \exp_last_unbraced:No
+ \__jsonparse_parse_num_exponent:w #1 \q_stop
+}
+
+\cs_new:cpn { __jsonparse_parse_num_ E :w } #1 \q_stop {
+ \exp_last_unbraced:No
+ \__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 {
+ \exp_last_unbraced:No
+ \__jsonparse_parse_num_digit:w ##1 \q_stop
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_plus_minus:w #1 \q_stop {
+ \bool_if:NTF \l__jsonparse_num_plus_minus_seen_bool {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ } {
+ \tl_if_empty:NTF \l__jsonparse_num_input_last_tl {
+ \str_if_eq:enT { \tl_head:n {#1} } { + } {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ }
+ } {
+ \clist_if_in:NVT \c__jsonparse_num_others_clist \l__jsonparse_num_input_last_tl {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ }
+ }
+ }
+ \bool_set_true:N \l__jsonparse_num_plus_minus_seen_bool
+ \tl_set:Ne \l__jsonparse_num_input_last_tl { \tl_head:n {#1} }
+ \tl_set:Ne \l__jsonparse_num_remainder_tl { \tl_tail:n {#1} }
+ \__jsonparse_parse_num:n { \l__jsonparse_num_remainder_tl }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_fraction:w #1 \q_stop {
+ \bool_if:NTF \l__jsonparse_num_fraction_seen_bool {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ } {
+ \tl_if_empty:NTF \l__jsonparse_num_input_last_tl {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ } {
+ \clist_if_in:NVT \c__jsonparse_num_others_clist \l__jsonparse_num_input_last_tl {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ }
+ }
+ }
+ \bool_set_false:N \l__jsonparse_num_zero_seen_bool
+ \bool_set_true:N \l__jsonparse_num_plus_minus_seen_bool
+ \bool_set_true:N \l__jsonparse_num_fraction_seen_bool
+ \tl_set:Ne \l__jsonparse_num_input_last_tl { \tl_head:n {#1} }
+ \tl_set:Ne \l__jsonparse_num_remainder_tl { \tl_tail:n {#1} }
+ \__jsonparse_parse_num:n { \l__jsonparse_num_remainder_tl }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_exponent:w #1 \q_stop {
+ \bool_if:NTF \l__jsonparse_num_exponent_seen_bool {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ } {
+ \tl_if_empty:NTF \l__jsonparse_num_input_last_tl {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ } {
+ \clist_if_in:NVT \c__jsonparse_num_others_clist \l__jsonparse_num_input_last_tl {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ }
+ }
+ }
+ \bool_set_false:N \l__jsonparse_num_zero_seen_bool
+ \bool_set_false:N \l__jsonparse_num_plus_minus_seen_bool
+ \bool_set_true:N \l__jsonparse_num_fraction_seen_bool
+ \bool_set_true:N \l__jsonparse_num_exponent_seen_bool
+ \tl_set:Ne \l__jsonparse_num_input_last_tl { \tl_head:n {#1} }
+ \tl_set:Ne \l__jsonparse_num_remainder_tl { \tl_tail:n {#1} }
+ \__jsonparse_parse_num:n { \l__jsonparse_num_remainder_tl }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_digit:w #1 \q_stop {
+ \bool_lazy_any:nTF {
+ { \tl_if_empty_p:N \l__jsonparse_num_input_last_tl }
+ { \bool_lazy_and_p:nn
+ { \str_if_eq_p:Vn \l__jsonparse_num_input_last_tl { - } }
+ { \bool_not_p:n { \l__jsonparse_num_exponent_seen_bool } }
+ }
+ } {
+ \str_if_eq:enT { \tl_head:n {#1} } { 0 } {
+ \bool_set_true:N \l__jsonparse_num_zero_seen_bool
+ }
+ } {
+ \bool_if:NT \l__jsonparse_num_zero_seen_bool {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+ }
+ }
+ \tl_set:Ne \l__jsonparse_num_input_last_tl { \tl_head:n {#1} }
+ \tl_set:Ne \l__jsonparse_num_remainder_tl { \tl_tail:n {#1} }
+ \__jsonparse_parse_num:n { \l__jsonparse_num_remainder_tl }
+}
+
+\cs_new:Npn \__jsonparse_parse_num_other:w #1 \q_stop {
+ \tl_set:Nn \l__jsonparse_num_remainder_tl { }
+ \bool_set_false:N \l__jsonparse_num_bool
+}
+
+% ===
+
\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 ~ ...
- }
+ \iow_newline:
+ Parsing ~ JSON ~ ...
+ }
}
\prop_gclear:N \g_jsonparse_entries_prop
\jsonparse_parse:n {#2}
- \prop_gset_eq:NN #1 \g_jsonparse_entries_prop
+ \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:
- }
+ JSON ~ parsing ~ done. \iow_newline:
+ }
}
}
\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:cpn { __jsonparse_parse_ \c_left_brace_str :w } #1 \q_stop {
- \exp_last_unbraced:No
+ \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
+ \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
+ \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
+ \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
+ \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
- }
+ \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
}
}
}
@@ -318,11 +580,11 @@
% 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 }
@@ -332,27 +594,27 @@
}
\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 {
+ \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:
@@ -365,11 +627,11 @@
% 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_array_index_zero_based_bool {
+ \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
@@ -379,27 +641,27 @@
}
\cs_new:Npn \__jsonparse_parse_array_end:w ] #1 \q_stop {
- \tl_set:Ne \l__jsonparse_object_array_val_tl {
+ \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:
@@ -410,18 +672,18 @@
\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:
@@ -440,28 +702,41 @@
\cs_new: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 fp
+ \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 }
}
@@ -469,41 +744,41 @@
}
\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
+ \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
+ \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: {
\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
- }
+ }
}
}
@@ -515,24 +790,33 @@
\tl_if_empty:NF \l__jsonparse_remainder_tl {
\exp_args:No \jsonparse_parse:n { \l__jsonparse_remainder_tl }
}
-}
+}
-\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}
- }
+\cs_new: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_filter:Nn #1#2 {
+ \prop_clear:N \l__jsonparse_temp_prop
+ \str_set:Nn \l__jsonparse_filter_key_str {#2}
+ \prop_map_function:NN #1 \__jsonparse_filter:nn
\prop_set_eq:NN #1 \l__jsonparse_temp_prop
}
@@ -540,108 +824,132 @@
\NewDocumentCommand { \JSONParsePut } { m m +v } {
\prop_if_exist:NF #1 {
- \prop_new:N #1
- }
- \prop_gput:Nnn #1 { #2 } { #3 }
+ \prop_new:N #1
+ }
+ \prop_gput:Nnn #1 {#2} {#3}
}
\cs_new:Npn \__jsonparse_externalize:Nn #1#2 {
- \file_if_exist:nTF {#2} {
- \msg_error:nnn { jsonparse } { file-exists }
+ \file_if_exist:eTF {#2} {
+ \msg_error:nne { jsonparse } { file-exists }
{#2}
} {
- \iow_open:Nn \g__jsonparse_externalize_iow {#2}
+ \iow_open:Ne \g__jsonparse_externalize_iow {#2}
\prop_map_inline:Nn #1 {
\iow_now:Nn \g__jsonparse_externalize_iow {
\JSONParsePut {#1} {##1} {##2}
}
}
\iow_close:N \g__jsonparse_externalize_iow
- \msg_info:nnn { jsonparse } { saving-external }
+ \msg_info:nne { jsonparse } { saving-external }
{#2}
}
}
% ===
-\NewDocumentCommand { \JSONParse } { o m +v } {
- \bool_set_false:N \l__jsonparse_load_external_bool
- \tl_if_novalue:nF {#1} {
- \file_if_exist:nT { #1 .jsonparse } {
- \bool_set_true:N \l__jsonparse_load_external_bool
- }
+\cs_new:Npn \__json_nested_construct_cs:Nnn #1#2#3 {
+ \cs_set:Npn #1 #2 ##1 #3 #2 ##2 #3 {
+ \prop_item:ce {##1} {##2}
}
- \bool_if:NTF \l__jsonparse_load_external_bool {
- \msg_info:nnn { jsonparse } { loading-external }
- { #1 .jsonparse }
- \file_input:n { #1 .jsonparse }
- } {
- \prop_new:N #2
- \tl_gclear:N \g__jsonparse_json_tl
- \group_begin:
- \cs_set:Npn \" { \exp_not:N \" }
- \cs_set:Npn \/ { \exp_not:N \/ }
- \cs_set:Npn \\ { \exp_not:N \\ }
- \cs_set:Npn \b { \exp_not:N \b }
- \cs_set:Npn \f { \exp_not:N \f }
- \cs_set:Npn \n { \exp_not:N \n }
- \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} }
- \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:
- \tl_if_novalue:nF {#1} {
- \__jsonparse_externalize:Nn #2 { #1 .jsonparse }
- }
- }
-}
-
-\NewDocumentCommand { \JSONParseFromFile } { o m m } {
+}
+\cs_generate_variant:Nn \__json_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
+ \__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 } {
+ \bool_set_true:N \l__jsonparse_externalize_load_bool
+ }
+ }
+ \bool_if:NTF \l__jsonparse_externalize_load_bool {
+ \msg_info:nne { jsonparse } { loading-external }
+ { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ \file_input:e { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ } {
+ \prop_new:N #2
+ \tl_gclear:N \g__jsonparse_json_tl
+ \group_begin:
+ \cs_set:Npn \" { \exp_not:N \" }
+ \cs_set:Npn \/ { \exp_not:N \/ }
+ \cs_set:Npn \\ { \exp_not:N \\ }
+ \cs_set:Npn \b { \exp_not:N \b }
+ \cs_set:Npn \f { \exp_not:N \f }
+ \cs_set:Npn \n { \exp_not:N \n }
+ \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
+ \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 }
+ \group_end:
+ \bool_if:NT \l__jsonparse_externalize_bool {
+ \__jsonparse_externalize:Nn #2 { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ }
+ }
+ \group_end:
+}
+
+\NewDocumentCommand { \JSONParseFromFile } { O{} m m } {
\file_if_exist:nF {#3} {
\msg_error:nnn { jsonparse } { file-not-found }
{#3}
}
- \bool_set_false:N \l__jsonparse_load_external_bool
- \tl_if_novalue:nF {#1} {
- \file_if_exist:nT { #1 .jsonparse } {
- \bool_set_true:N \l__jsonparse_load_external_bool
+ \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:
+ \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 } {
+ \bool_set_true:N \l__jsonparse_externalize_load_bool
+ }
}
- }
- \bool_if:NTF \l__jsonparse_load_external_bool {
- \msg_info:nnn { jsonparse } { loading-external }
- { #1 .jsonparse }
- \file_input:n { #1 .jsonparse }
- } {
- \prop_new:N #2
- \tl_gclear:N \g__jsonparse_json_tl
- \group_begin:
- \cs_set:Npn \" { \exp_not:N \" }
- \cs_set:Npn \/ { \exp_not:N \/ }
- \cs_set:Npn \\ { \exp_not:N \\ }
- \cs_set:Npn \b { \exp_not:N \b }
- \cs_set:Npn \f { \exp_not:N \f }
- \cs_set:Npn \n { \exp_not:N \n }
- \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 }
- \group_end:
- \tl_if_novalue:nF {#1} {
- \__jsonparse_externalize:Nn #2 { #1 .jsonparse }
+ \bool_if:NTF \l__jsonparse_externalize_load_bool {
+ \msg_info:nne { jsonparse } { loading-external }
+ { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ \file_input:e { \l__jsonparse_externalize_file_name_tl .jsonparse }
+ } {
+ \prop_new:N #2
+ \tl_gclear:N \g__jsonparse_json_tl
+ \group_begin:
+ \cs_set:Npn \" { \exp_not:N \" }
+ \cs_set:Npn \/ { \exp_not:N \/ }
+ \cs_set:Npn \\ { \exp_not:N \\ }
+ \cs_set:Npn \b { \exp_not:N \b }
+ \cs_set:Npn \f { \exp_not:N \f }
+ \cs_set:Npn \n { \exp_not:N \n }
+ \cs_set:Npn \r { \exp_not:N \r }
+ \cs_set:Npn \t { \exp_not:N \t }
+ \cs_set:Npn \u { \exp_not:N \u }
+ \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 }
+ }
}
- }
+ \group_end:
}
\NewExpandableDocumentCommand { \JSONParseExpandableValue } { m m } {
- \prop_item:Ne #1 {#2}
+ \prop_item:Ne #1 {#2}
}
-\cs_set_eq:NN \__jsonparse_tex_quote \"
-\cs_set_eq:NN \__jsonparse_tex_backslash \\
+\cs_set_eq:NN \__jsonparse_tex_quote: \"
+\cs_set_eq:NN \__jsonparse_tex_backslash: \\
+
+\cs_new:Npn \__jsonparse_unicode_char:NNNN #1#2#3#4 {
+ \symbol{ " \str_uppercase:n { #1 #2 #3 #4 } } { }
+}
\cs_new:Npn \__jsonparse_rescan:n #1 {
\group_begin:
@@ -653,10 +961,10 @@
\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" }
+ \cs_set_eq:NN \u \__jsonparse_unicode_char:NNNN
\tl_set:Ne \l__jsonparse_temp_tl {#1}
- \cs_set_eq:NN \" \__jsonparse_tex_quote
- \cs_set_eq:NN \\ \__jsonparse_tex_backslash
+ \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 }
}
@@ -682,11 +990,26 @@
\group_end:
}
-\NewDocumentCommand { \JSONParseValue } { s m m } {
- \bool_if:NTF #1 {
- \prop_item:Ne #2 {#3}
- } {
- \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Ne #2 {#3} }
+\NewDocumentCommand { \JSONParseValue } { O{} m m } {
+ \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} }
+ } {
+ \prop_item:Ne #2 {#3}
+ }
+ \group_end:
+}
+
+\cs_new:Npn \__jsonparse_keys:n #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
+ } {
+ \tl_put_right:Nn \l__jsonparse_temp_tl { , }
+ }
+ \tl_put_right:Nn \l__jsonparse_temp_tl { " #1 " }
}
}
@@ -696,89 +1019,213 @@
}
\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
- } {
- \tl_put_right:Nn \l__jsonparse_temp_tl { , }
+ \prop_map_function:NN #1 \__jsonparse_keys:n
+ \tl_put_right:Nn \l__jsonparse_temp_tl { ] }
+ \tl_set_eq:NN #2 \l__jsonparse_temp_tl
+}
+
+\cs_new:Npn \__jsonparse_get_array_index:w [ #1 ] #2 \q_stop {
+ #1
+}
+
+\cs_new: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 } {
+ \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:
+}
+
+\cs_new: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 }
+ } {
+ #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 { " ##1 " }
}
}
- \tl_put_right:Nn \l__jsonparse_temp_tl { ] }
- \tl_set_eq:NN #2 \l__jsonparse_temp_tl
+ } {
+ \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
+ }
+ }
+ }
}
-\NewDocumentCommand { \JSONParseArrayValues } { s m m O{} m } {
+\NewDocumentCommand { \JSONParseArrayValues } { O{} m m O{} m } {
\group_begin:
- \tl_set:Nn \l__jsonparse_temp_tl {#2}
+ \keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
+ \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:Nn \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 #1 {
- ##2
- } {
- \__jsonparse_rescan:n {##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: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: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:Npn \__jsonparse_array_map_create_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 } { s m m O{} m } {
+\NewDocumentCommand { \JSONParseArrayValuesMap } { O{} m m O{} m O{} O{} } {
\group_begin:
- \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 #1 {
- \tl_set:Nn \JSONParseArrayValue { \prop_item:Nn #2 {##1} }
- } {
- \tl_set:Nn \JSONParseArrayValue { \exp_args:Ne \__jsonparse_rescan:n { \prop_item:Nn #2 {##1} } }
- }
- \use:c {#5}
- }
- }
+ \keys_set_known:nn { jsonparse / typeset } {#1} \l__jsonparse_unused_keys_clist
+ \__jsonparse_warning_unused_keys:
+ \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_create_cs:n
+ }
+ #6
+ \int_step_function:nN { \l__jsonparse_array_count_int }
+ \__jsonparse_array_values_map:n
+ #7
\group_end:
}
diff --git a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-Inf.fd b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-Inf.fd
index 1741a4af34c..966bf21d46a 100644
--- a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-Inf.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-Inf.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LGRJunicode-Inf.fd}
- [2024/06/03 (autoinst) Font definitions for LGR/Junicode-Inf.]
+ [2024/07/21 (autoinst) Font definitions for LGR/Junicode-Inf.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,6 +20,33 @@
\DeclareFontFamily{LGR}{Junicode-Inf}{}
+% ---- lsc = lightsemicondensed ----
+
+\DeclareFontShape{LGR}{Junicode-Inf}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-inf-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{lightsemicondensed}{n}{
+ <-> alias * Junicode-Inf/lsc/n
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-inf-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{lightsemicondensed}{it}{
+ <-> alias * Junicode-Inf/lsc/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{lsc}{sl}{
+ <-> ssub * Junicode-Inf/lsc/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-Inf/lightsemicondensed/it
+}{}
+
+
% ---- mediumexpanded ----
\DeclareFontShape{LGR}{Junicode-Inf}{mediumexpanded}{it}{
@@ -35,50 +62,43 @@
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- b = bold ----
-\DeclareFontShape{LGR}{Junicode-Inf}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-Inf/sbsx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{bold}{it}{
+ <-> alias * Junicode-Inf/b/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-Inf/sbsx/n
+\DeclareFontShape{LGR}{Junicode-Inf}{bold}{n}{
+ <-> alias * Junicode-Inf/b/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sbsx}{sl}{
- <-> ssub * Junicode-Inf/sbsx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{b}{sl}{
+ <-> ssub * Junicode-Inf/b/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiboldsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-Inf}{bold}{sl}{
+ <-> ssub * Junicode-Inf/bold/it
}{}
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-inf-lgr
-}{}
+% ---- x = expanded ----
-\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/mediumsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-Inf}{expanded}{it}{
+ <-> alias * Junicode-Inf/x/it
}{}
-
-% ---- x = expanded ----
-
\DeclareFontShape{LGR}{Junicode-Inf}{x}{n}{
<-> \Junicode@@scale Junicode-Exp-inf-lgr
}{}
@@ -87,14 +107,6 @@
<-> alias * Junicode-Inf/x/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-inf-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-Inf}{expanded}{it}{
- <-> alias * Junicode-Inf/x/it
-}{}
-
\DeclareFontShape{LGR}{Junicode-Inf}{x}{sl}{
<-> ssub * Junicode-Inf/x/it
}{}
@@ -104,6 +116,33 @@
}{}
+% ---- sbx = semiboldexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-Inf}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-inf-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{semiboldexpanded}{it}{
+ <-> alias * Junicode-Inf/sbx/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-inf-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{semiboldexpanded}{n}{
+ <-> alias * Junicode-Inf/sbx/n
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{sbx}{sl}{
+ <-> ssub * Junicode-Inf/sbx/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Inf}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiboldexpanded/it
+}{}
+
+
% ---- c = condensed ----
\DeclareFontShape{LGR}{Junicode-Inf}{c}{it}{
@@ -131,345 +170,306 @@
}{}
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-Inf}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-inf-lgr
-}{}
+% ---- sc = semicondensed ----
-\DeclareFontShape{LGR}{Junicode-Inf}{semiexpanded}{it}{
- <-> alias * Junicode-Inf/sx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{semicondensed}{n}{
+ <-> alias * Junicode-Inf/sc/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semiexpanded}{n}{
- <-> alias * Junicode-Inf/sx/n
+\DeclareFontShape{LGR}{Junicode-Inf}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sx}{sl}{
- <-> ssub * Junicode-Inf/sx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{semicondensed}{it}{
+ <-> alias * Junicode-Inf/sc/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semiexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiexpanded/it
+\DeclareFontShape{LGR}{Junicode-Inf}{sc}{sl}{
+ <-> ssub * Junicode-Inf/sc/it
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{LGR}{Junicode-Inf}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{semicondensed}{sl}{
+ <-> ssub * Junicode-Inf/semicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{regular}{it}{
- <-> alias * Junicode-Inf/m/it
-}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-inf-lgr
-}{}
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-Inf}{regular}{n}{
- <-> alias * Junicode-Inf/m/n
+\DeclareFontShape{LGR}{Junicode-Inf}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{m}{sl}{
- <-> ssub * Junicode-Inf/m/it
+\DeclareFontShape{LGR}{Junicode-Inf}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-Inf/bsx/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{regular}{sl}{
- <-> ssub * Junicode-Inf/regular/it
+\DeclareFontShape{LGR}{Junicode-Inf}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-inf-lgr
}{}
-
-% ---- medium ----
-
-\DeclareFontShape{LGR}{Junicode-Inf}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-Inf/bsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{bsx}{sl}{
+ <-> ssub * Junicode-Inf/bsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{medium}{sl}{
- <-> ssub * Junicode-Inf/medium/it
+\DeclareFontShape{LGR}{Junicode-Inf}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/boldsemiexpanded/it
}{}
-% ---- lsc = lightsemicondensed ----
-
-\DeclareFontShape{LGR}{Junicode-Inf}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-inf-lgr
-}{}
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-Inf}{lightsemicondensed}{it}{
- <-> alias * Junicode-Inf/lsc/it
+\DeclareFontShape{LGR}{Junicode-Inf}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-Inf/sbsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{lightsemicondensed}{n}{
- <-> alias * Junicode-Inf/lsc/n
+\DeclareFontShape{LGR}{Junicode-Inf}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{lsc}{sl}{
- <-> ssub * Junicode-Inf/lsc/it
+\DeclareFontShape{LGR}{Junicode-Inf}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-Inf/sbsx/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-Inf/lightsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-Inf}{sbsx}{sl}{
+ <-> ssub * Junicode-Inf/sbsx/it
}{}
-
-% ---- l = light ----
-
-\DeclareFontShape{LGR}{Junicode-Inf}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{light}{n}{
- <-> alias * Junicode-Inf/l/n
-}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-inf-lgr
-}{}
+% ---- mediumcondensed ----
-\DeclareFontShape{LGR}{Junicode-Inf}{light}{it}{
- <-> alias * Junicode-Inf/l/it
+\DeclareFontShape{LGR}{Junicode-Inf}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{l}{sl}{
- <-> ssub * Junicode-Inf/l/it
+\DeclareFontShape{LGR}{Junicode-Inf}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{light}{sl}{
- <-> ssub * Junicode-Inf/light/it
+\DeclareFontShape{LGR}{Junicode-Inf}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-Inf/mediumcondensed/it
}{}
-% ---- bx = boldexpanded ----
+% ---- sb = semibold ----
-\DeclareFontShape{LGR}{Junicode-Inf}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{boldexpanded}{it}{
- <-> alias * Junicode-Inf/bx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{semibold}{n}{
+ <-> alias * Junicode-Inf/sb/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{boldexpanded}{n}{
- <-> alias * Junicode-Inf/bx/n
+\DeclareFontShape{LGR}{Junicode-Inf}{semibold}{it}{
+ <-> alias * Junicode-Inf/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{bx}{sl}{
- <-> ssub * Junicode-Inf/bx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{sb}{sl}{
+ <-> ssub * Junicode-Inf/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{boldexpanded}{sl}{
- <-> ssub * Junicode-Inf/boldexpanded/it
+\DeclareFontShape{LGR}{Junicode-Inf}{semibold}{sl}{
+ <-> ssub * Junicode-Inf/semibold/it
}{}
-% ---- mediumcondensed ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{LGR}{Junicode-Inf}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{mediumcondensed}{sl}{
- <-> ssub * Junicode-Inf/mediumcondensed/it
+\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-Inf/mediumsemicondensed/it
}{}
-% ---- b = bold ----
+% ---- l = light ----
-\DeclareFontShape{LGR}{Junicode-Inf}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{bold}{it}{
- <-> alias * Junicode-Inf/b/it
+\DeclareFontShape{LGR}{Junicode-Inf}{light}{n}{
+ <-> alias * Junicode-Inf/l/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{bold}{n}{
- <-> alias * Junicode-Inf/b/n
+\DeclareFontShape{LGR}{Junicode-Inf}{light}{it}{
+ <-> alias * Junicode-Inf/l/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{b}{sl}{
- <-> ssub * Junicode-Inf/b/it
+\DeclareFontShape{LGR}{Junicode-Inf}{l}{sl}{
+ <-> ssub * Junicode-Inf/l/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{bold}{sl}{
- <-> ssub * Junicode-Inf/bold/it
+\DeclareFontShape{LGR}{Junicode-Inf}{light}{sl}{
+ <-> ssub * Junicode-Inf/light/it
}{}
-% ---- bsx = boldsemiexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-Inf}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-inf-lgr
-}{}
+% ---- sx = semiexpanded ----
-\DeclareFontShape{LGR}{Junicode-Inf}{boldsemiexpanded}{n}{
- <-> alias * Junicode-Inf/bsx/n
+\DeclareFontShape{LGR}{Junicode-Inf}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{semiexpanded}{n}{
+ <-> alias * Junicode-Inf/sx/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{boldsemiexpanded}{it}{
- <-> alias * Junicode-Inf/bsx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{bsx}{sl}{
- <-> ssub * Junicode-Inf/bsx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{semiexpanded}{it}{
+ <-> alias * Junicode-Inf/sx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/boldsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-Inf}{sx}{sl}{
+ <-> ssub * Junicode-Inf/sx/it
}{}
-
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{LGR}{Junicode-Inf}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{semiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{lightcondensed}{n}{
- <-> alias * Junicode-Inf/lc/n
-}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-inf-lgr
-}{}
+% ---- medium ----
-\DeclareFontShape{LGR}{Junicode-Inf}{lightcondensed}{it}{
- <-> alias * Junicode-Inf/lc/it
+\DeclareFontShape{LGR}{Junicode-Inf}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{lc}{sl}{
- <-> ssub * Junicode-Inf/lc/it
+\DeclareFontShape{LGR}{Junicode-Inf}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{lightcondensed}{sl}{
- <-> ssub * Junicode-Inf/lightcondensed/it
+\DeclareFontShape{LGR}{Junicode-Inf}{medium}{sl}{
+ <-> ssub * Junicode-Inf/medium/it
}{}
-% ---- sb = semibold ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LGR}{Junicode-Inf}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semibold}{it}{
- <-> alias * Junicode-Inf/sb/it
+\DeclareFontShape{LGR}{Junicode-Inf}{boldexpanded}{n}{
+ <-> alias * Junicode-Inf/bx/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semibold}{n}{
- <-> alias * Junicode-Inf/sb/n
+\DeclareFontShape{LGR}{Junicode-Inf}{boldexpanded}{it}{
+ <-> alias * Junicode-Inf/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sb}{sl}{
- <-> ssub * Junicode-Inf/sb/it
+\DeclareFontShape{LGR}{Junicode-Inf}{bx}{sl}{
+ <-> ssub * Junicode-Inf/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semibold}{sl}{
- <-> ssub * Junicode-Inf/semibold/it
+\DeclareFontShape{LGR}{Junicode-Inf}{boldexpanded}{sl}{
+ <-> ssub * Junicode-Inf/boldexpanded/it
}{}
-% ---- sc = semicondensed ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-Inf}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semicondensed}{n}{
- <-> alias * Junicode-Inf/sc/n
+\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/mediumsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semicondensed}{it}{
- <-> alias * Junicode-Inf/sc/it
-}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sc}{sl}{
- <-> ssub * Junicode-Inf/sc/it
-}{}
+% ---- m = regular ----
-\DeclareFontShape{LGR}{Junicode-Inf}{semicondensed}{sl}{
- <-> ssub * Junicode-Inf/semicondensed/it
+\DeclareFontShape{LGR}{Junicode-Inf}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-inf-lgr
}{}
+\DeclareFontShape{LGR}{Junicode-Inf}{regular}{n}{
+ <-> alias * Junicode-Inf/m/n
+}{}
-% ---- mediumsemicondensed ----
+\DeclareFontShape{LGR}{Junicode-Inf}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-inf-lgr
+}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{regular}{it}{
+ <-> alias * Junicode-Inf/m/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{m}{sl}{
+ <-> ssub * Junicode-Inf/m/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-Inf/mediumsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-Inf}{regular}{sl}{
+ <-> ssub * Junicode-Inf/regular/it
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LGR}{Junicode-Inf}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semiboldexpanded}{it}{
- <-> alias * Junicode-Inf/sbx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{lightcondensed}{n}{
+ <-> alias * Junicode-Inf/lc/n
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-inf-lgr
+\DeclareFontShape{LGR}{Junicode-Inf}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-inf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semiboldexpanded}{n}{
- <-> alias * Junicode-Inf/sbx/n
+\DeclareFontShape{LGR}{Junicode-Inf}{lightcondensed}{it}{
+ <-> alias * Junicode-Inf/lc/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{sbx}{sl}{
- <-> ssub * Junicode-Inf/sbx/it
+\DeclareFontShape{LGR}{Junicode-Inf}{lc}{sl}{
+ <-> ssub * Junicode-Inf/lc/it
}{}
-\DeclareFontShape{LGR}{Junicode-Inf}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiboldexpanded/it
+\DeclareFontShape{LGR}{Junicode-Inf}{lightcondensed}{sl}{
+ <-> ssub * Junicode-Inf/lightcondensed/it
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-LF.fd b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-LF.fd
index 5e4958c6c0f..da1c18dc7b9 100644
--- a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-LF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LGRJunicode-LF.fd}
- [2024/06/03 (autoinst) Font definitions for LGR/Junicode-LF.]
+ [2024/07/21 (autoinst) Font definitions for LGR/Junicode-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,161 +20,212 @@
\DeclareFontFamily{LGR}{Junicode-LF}{}
-% ---- bx = boldexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{LGR}{Junicode-LF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{it}{
- <-> alias * Junicode-LF/bx/it
+\DeclareFontShape{LGR}{Junicode-LF}{condensed}{sc}{
+ <-> alias * Junicode-LF/c/sc
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{scit}{
- <-> alias * Junicode-LF/bx/scit
+\DeclareFontShape{LGR}{Junicode-LF}{condensed}{scit}{
+ <-> alias * Junicode-LF/c/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{n}{
- <-> alias * Junicode-LF/bx/n
+\DeclareFontShape{LGR}{Junicode-LF}{condensed}{n}{
+ <-> alias * Junicode-LF/c/n
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{sc}{
- <-> alias * Junicode-LF/bx/sc
+\DeclareFontShape{LGR}{Junicode-LF}{condensed}{it}{
+ <-> alias * Junicode-LF/c/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{bx}{scsl}{
- <-> ssub * Junicode-LF/bx/scit
+\DeclareFontShape{LGR}{Junicode-LF}{c}{sl}{
+ <-> ssub * Junicode-LF/c/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-LF/boldexpanded/scit
+\DeclareFontShape{LGR}{Junicode-LF}{condensed}{sl}{
+ <-> ssub * Junicode-LF/condensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{bx}{sl}{
- <-> ssub * Junicode-LF/bx/it
+\DeclareFontShape{LGR}{Junicode-LF}{c}{scsl}{
+ <-> ssub * Junicode-LF/c/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{sl}{
- <-> ssub * Junicode-LF/boldexpanded/it
+\DeclareFontShape{LGR}{Junicode-LF}{condensed}{scsl}{
+ <-> ssub * Junicode-LF/condensed/scit
}{}
-% ---- l = light ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LGR}{Junicode-LF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{light}{n}{
- <-> alias * Junicode-LF/l/n
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-LF/sbx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{light}{sc}{
- <-> alias * Junicode-LF/l/sc
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-LF/sbx/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{light}{it}{
- <-> alias * Junicode-LF/l/it
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-LF/sbx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{light}{scit}{
- <-> alias * Junicode-LF/l/scit
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-LF/sbx/n
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{l}{scsl}{
- <-> ssub * Junicode-LF/l/scit
+\DeclareFontShape{LGR}{Junicode-LF}{sbx}{sl}{
+ <-> ssub * Junicode-LF/sbx/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{light}{scsl}{
- <-> ssub * Junicode-LF/light/scit
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiboldexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{l}{sl}{
- <-> ssub * Junicode-LF/l/it
+\DeclareFontShape{LGR}{Junicode-LF}{sbx}{scsl}{
+ <-> ssub * Junicode-LF/sbx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{light}{sl}{
- <-> ssub * Junicode-LF/light/it
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiboldexpanded/scit
}{}
-% ---- medium ----
+% ---- x = expanded ----
-\DeclareFontShape{LGR}{Junicode-LF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{expanded}{sc}{
+ <-> alias * Junicode-LF/x/sc
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{expanded}{scit}{
+ <-> alias * Junicode-LF/x/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{medium}{scsl}{
- <-> ssub * Junicode-LF/medium/scit
+\DeclareFontShape{LGR}{Junicode-LF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{medium}{sl}{
- <-> ssub * Junicode-LF/medium/it
+\DeclareFontShape{LGR}{Junicode-LF}{expanded}{n}{
+ <-> alias * Junicode-LF/x/n
}{}
+\DeclareFontShape{LGR}{Junicode-LF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-lf-lgr
+}{}
-% ---- lsc = lightsemicondensed ----
+\DeclareFontShape{LGR}{Junicode-LF}{expanded}{it}{
+ <-> alias * Junicode-LF/x/it
+}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{x}{sl}{
+ <-> ssub * Junicode-LF/x/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightsemicondensed}{n}{
- <-> alias * Junicode-LF/lsc/n
+\DeclareFontShape{LGR}{Junicode-LF}{expanded}{sl}{
+ <-> ssub * Junicode-LF/expanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{x}{scsl}{
+ <-> ssub * Junicode-LF/x/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-LF/lsc/sc
+\DeclareFontShape{LGR}{Junicode-LF}{expanded}{scsl}{
+ <-> ssub * Junicode-LF/expanded/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-lgr
+
+% ---- b = bold ----
+
+\DeclareFontShape{LGR}{Junicode-LF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightsemicondensed}{it}{
- <-> alias * Junicode-LF/lsc/it
+\DeclareFontShape{LGR}{Junicode-LF}{bold}{sc}{
+ <-> alias * Junicode-LF/b/sc
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-lf-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{bold}{it}{
+ <-> alias * Junicode-LF/b/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-lf-sc-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{bold}{scit}{
+ <-> alias * Junicode-LF/b/scit
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-lf-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{bold}{n}{
+ <-> alias * Junicode-LF/b/n
}{}
+\DeclareFontShape{LGR}{Junicode-LF}{b}{sl}{
+ <-> ssub * Junicode-LF/b/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{bold}{sl}{
+ <-> ssub * Junicode-LF/bold/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{b}{scsl}{
+ <-> ssub * Junicode-LF/b/scit
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{bold}{scsl}{
+ <-> ssub * Junicode-LF/bold/scit
+}{}
+
+
+% ---- lsc = lightsemicondensed ----
+
\DeclareFontShape{LGR}{Junicode-LF}{lsc}{scit}{
<-> \Junicode@@scale Junicode-SmCondLightItalic-lf-sc-lgr
}{}
@@ -183,12 +234,28 @@
<-> alias * Junicode-LF/lsc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lsc}{scsl}{
- <-> ssub * Junicode-LF/lsc/scit
+\DeclareFontShape{LGR}{Junicode-LF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-LF/lightsemicondensed/scit
+\DeclareFontShape{LGR}{Junicode-LF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-LF/lsc/n
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-LF/lsc/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-lf-sc-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-LF/lsc/sc
}{}
\DeclareFontShape{LGR}{Junicode-LF}{lsc}{sl}{
@@ -199,25 +266,44 @@
<-> ssub * Junicode-LF/lightsemicondensed/it
}{}
+\DeclareFontShape{LGR}{Junicode-LF}{lsc}{scsl}{
+ <-> ssub * Junicode-LF/lsc/scit
+}{}
-% ---- m = regular ----
+\DeclareFontShape{LGR}{Junicode-LF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-LF/lightsemicondensed/scit
+}{}
-\DeclareFontShape{LGR}{Junicode-LF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-lf-sc-lgr
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{regular}{scit}{
- <-> alias * Junicode-LF/m/scit
+\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{regular}{it}{
- <-> alias * Junicode-LF/m/it
+\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumexpanded/it
}{}
+\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-LF/mediumexpanded/scit
+}{}
+
+
+% ---- m = regular ----
+
\DeclareFontShape{LGR}{Junicode-LF}{m}{sc}{
<-> \Junicode@@scale Junicode-Regular-lf-sc-lgr
}{}
@@ -234,361 +320,334 @@
<-> alias * Junicode-LF/m/n
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{m}{scsl}{
- <-> ssub * Junicode-LF/m/scit
+\DeclareFontShape{LGR}{Junicode-LF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{regular}{scsl}{
- <-> ssub * Junicode-LF/regular/scit
+\DeclareFontShape{LGR}{Junicode-LF}{regular}{scit}{
+ <-> alias * Junicode-LF/m/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{m}{sl}{
- <-> ssub * Junicode-LF/m/it
+\DeclareFontShape{LGR}{Junicode-LF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{regular}{sl}{
- <-> ssub * Junicode-LF/regular/it
+\DeclareFontShape{LGR}{Junicode-LF}{regular}{it}{
+ <-> alias * Junicode-LF/m/it
}{}
-
-% ---- x = expanded ----
-
-\DeclareFontShape{LGR}{Junicode-LF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{m}{sl}{
+ <-> ssub * Junicode-LF/m/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{expanded}{n}{
- <-> alias * Junicode-LF/x/n
+\DeclareFontShape{LGR}{Junicode-LF}{regular}{sl}{
+ <-> ssub * Junicode-LF/regular/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{m}{scsl}{
+ <-> ssub * Junicode-LF/m/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{expanded}{sc}{
- <-> alias * Junicode-LF/x/sc
+\DeclareFontShape{LGR}{Junicode-LF}{regular}{scsl}{
+ <-> ssub * Junicode-LF/regular/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-lf-lgr
-}{}
-\DeclareFontShape{LGR}{Junicode-LF}{expanded}{it}{
- <-> alias * Junicode-LF/x/it
-}{}
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-LF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{expanded}{scit}{
- <-> alias * Junicode-LF/x/scit
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{x}{scsl}{
- <-> ssub * Junicode-LF/x/scit
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{expanded}{scsl}{
- <-> ssub * Junicode-LF/expanded/scit
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{x}{sl}{
- <-> ssub * Junicode-LF/x/it
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{expanded}{sl}{
- <-> ssub * Junicode-LF/expanded/it
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/mediumsemiexpanded/scit
}{}
-% ---- c = condensed ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LGR}{Junicode-LF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{condensed}{it}{
- <-> alias * Junicode-LF/c/it
+\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{sc}{
+ <-> alias * Junicode-LF/bx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{condensed}{scit}{
- <-> alias * Junicode-LF/c/scit
+\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{n}{
+ <-> alias * Junicode-LF/bx/n
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{condensed}{n}{
- <-> alias * Junicode-LF/c/n
+\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{scit}{
+ <-> alias * Junicode-LF/bx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{condensed}{sc}{
- <-> alias * Junicode-LF/c/sc
+\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{it}{
+ <-> alias * Junicode-LF/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{c}{scsl}{
- <-> ssub * Junicode-LF/c/scit
+\DeclareFontShape{LGR}{Junicode-LF}{bx}{sl}{
+ <-> ssub * Junicode-LF/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{condensed}{scsl}{
- <-> ssub * Junicode-LF/condensed/scit
+\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-LF/boldexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{c}{sl}{
- <-> ssub * Junicode-LF/c/it
+\DeclareFontShape{LGR}{Junicode-LF}{bx}{scsl}{
+ <-> ssub * Junicode-LF/bx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{condensed}{sl}{
- <-> ssub * Junicode-LF/condensed/it
+\DeclareFontShape{LGR}{Junicode-LF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-LF/boldexpanded/scit
}{}
-% ---- sx = semiexpanded ----
+% ---- medium ----
-\DeclareFontShape{LGR}{Junicode-LF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{sc}{
- <-> alias * Junicode-LF/sx/sc
+\DeclareFontShape{LGR}{Junicode-LF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{n}{
- <-> alias * Junicode-LF/sx/n
+\DeclareFontShape{LGR}{Junicode-LF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{medium}{sl}{
+ <-> ssub * Junicode-LF/medium/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{scit}{
- <-> alias * Junicode-LF/sx/scit
+\DeclareFontShape{LGR}{Junicode-LF}{medium}{scsl}{
+ <-> ssub * Junicode-LF/medium/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-lf-lgr
-}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{it}{
- <-> alias * Junicode-LF/sx/it
-}{}
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LGR}{Junicode-LF}{sx}{scsl}{
- <-> ssub * Junicode-LF/sx/scit
+\DeclareFontShape{LGR}{Junicode-LF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{it}{
+ <-> alias * Junicode-LF/lc/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sx}{sl}{
- <-> ssub * Junicode-LF/sx/it
+\DeclareFontShape{LGR}{Junicode-LF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiexpanded/it
+\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{scit}{
+ <-> alias * Junicode-LF/lc/scit
}{}
+\DeclareFontShape{LGR}{Junicode-LF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-lf-lgr
+}{}
-% ---- mediumsemiexpanded ----
+\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{n}{
+ <-> alias * Junicode-LF/lc/n
+}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{sc}{
+ <-> alias * Junicode-LF/lc/sc
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{lc}{sl}{
+ <-> ssub * Junicode-LF/lc/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-LF/lightcondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/mediumsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-LF}{lc}{scsl}{
+ <-> ssub * Junicode-LF/lc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-LF/lightcondensed/scit
}{}
-% ---- mediumexpanded ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-LF/mediumexpanded/scit
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-LF/mediumsemicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumexpanded/it
+\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-LF/mediumsemicondensed/scit
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-LF/sbsx/sc
+\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{it}{
+ <-> alias * Junicode-LF/sx/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-LF/sbsx/n
+\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{n}{
+ <-> alias * Junicode-LF/sx/n
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-LF/sbsx/scit
+\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{scit}{
+ <-> alias * Junicode-LF/sx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-LF/sbsx/it
+\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{sc}{
+ <-> alias * Junicode-LF/sx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{scsl}{
- <-> ssub * Junicode-LF/sbsx/scit
+\DeclareFontShape{LGR}{Junicode-LF}{sx}{sl}{
+ <-> ssub * Junicode-LF/sx/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiboldsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{sl}{
- <-> ssub * Junicode-LF/sbsx/it
+\DeclareFontShape{LGR}{Junicode-LF}{sx}{scsl}{
+ <-> ssub * Junicode-LF/sx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiboldsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-LF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiexpanded/scit
}{}
-% ---- sbx = semiboldexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-LF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-lf-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{n}{
- <-> alias * Junicode-LF/sbx/n
-}{}
+% ---- l = light ----
-\DeclareFontShape{LGR}{Junicode-LF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-LF/sbx/sc
+\DeclareFontShape{LGR}{Junicode-LF}{light}{sc}{
+ <-> alias * Junicode-LF/l/sc
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{it}{
- <-> alias * Junicode-LF/sbx/it
+\DeclareFontShape{LGR}{Junicode-LF}{light}{n}{
+ <-> alias * Junicode-LF/l/n
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-LF/sbx/scit
+\DeclareFontShape{LGR}{Junicode-LF}{light}{scit}{
+ <-> alias * Junicode-LF/l/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sbx}{scsl}{
- <-> ssub * Junicode-LF/sbx/scit
+\DeclareFontShape{LGR}{Junicode-LF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiboldexpanded/scit
+\DeclareFontShape{LGR}{Junicode-LF}{light}{it}{
+ <-> alias * Junicode-LF/l/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sbx}{sl}{
- <-> ssub * Junicode-LF/sbx/it
+\DeclareFontShape{LGR}{Junicode-LF}{l}{sl}{
+ <-> ssub * Junicode-LF/l/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-LF/semiboldexpanded/it
+\DeclareFontShape{LGR}{Junicode-LF}{light}{sl}{
+ <-> ssub * Junicode-LF/light/it
}{}
-
-% ---- mediumsemicondensed ----
-
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{l}{scsl}{
+ <-> ssub * Junicode-LF/l/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{light}{scsl}{
+ <-> ssub * Junicode-LF/light/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-lgr
-}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-sc-lgr
-}{}
+% ---- sb = semibold ----
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-LF/mediumsemicondensed/scit
+\DeclareFontShape{LGR}{Junicode-LF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-LF/mediumsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-LF}{semibold}{it}{
+ <-> alias * Junicode-LF/sb/it
}{}
-
-% ---- sb = semibold ----
-
\DeclareFontShape{LGR}{Junicode-LF}{sb}{scit}{
<-> \Junicode@@scale Junicode-SmBoldItalic-lf-sc-lgr
}{}
@@ -597,12 +656,12 @@
<-> alias * Junicode-LF/sb/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semibold}{it}{
- <-> alias * Junicode-LF/sb/it
+\DeclareFontShape{LGR}{Junicode-LF}{semibold}{n}{
+ <-> alias * Junicode-LF/sb/n
}{}
\DeclareFontShape{LGR}{Junicode-LF}{sb}{sc}{
@@ -613,12 +672,12 @@
<-> alias * Junicode-LF/sb/sc
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sb}{sl}{
+ <-> ssub * Junicode-LF/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semibold}{n}{
- <-> alias * Junicode-LF/sb/n
+\DeclareFontShape{LGR}{Junicode-LF}{semibold}{sl}{
+ <-> ssub * Junicode-LF/semibold/it
}{}
\DeclareFontShape{LGR}{Junicode-LF}{sb}{scsl}{
@@ -629,33 +688,36 @@
<-> ssub * Junicode-LF/semibold/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sb}{sl}{
- <-> ssub * Junicode-LF/sb/it
-}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semibold}{sl}{
- <-> ssub * Junicode-LF/semibold/it
-}{}
+% ---- mediumcondensed ----
+\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-lf-sc-lgr
+}{}
-% ---- sc = semicondensed ----
+\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-lf-lgr
+}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semicondensed}{scit}{
- <-> alias * Junicode-LF/sc/scit
+\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-LF/mediumcondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semicondensed}{it}{
- <-> alias * Junicode-LF/sc/it
+\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-LF/mediumcondensed/scit
}{}
+
+% ---- sc = semicondensed ----
+
\DeclareFontShape{LGR}{Junicode-LF}{sc}{sc}{
<-> \Junicode@@scale Junicode-SmCond-lf-sc-lgr
}{}
@@ -664,6 +726,14 @@
<-> alias * Junicode-LF/sc/sc
}{}
+\DeclareFontShape{LGR}{Junicode-LF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-lf-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-LF}{semicondensed}{it}{
+ <-> alias * Junicode-LF/sc/it
+}{}
+
\DeclareFontShape{LGR}{Junicode-LF}{sc}{n}{
<-> \Junicode@@scale Junicode-SmCond-lf-lgr
}{}
@@ -672,12 +742,12 @@
<-> alias * Junicode-LF/sc/n
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{sc}{scsl}{
- <-> ssub * Junicode-LF/sc/scit
+\DeclareFontShape{LGR}{Junicode-LF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{semicondensed}{scsl}{
- <-> ssub * Junicode-LF/semicondensed/scit
+\DeclareFontShape{LGR}{Junicode-LF}{semicondensed}{scit}{
+ <-> alias * Junicode-LF/sc/scit
}{}
\DeclareFontShape{LGR}{Junicode-LF}{sc}{sl}{
@@ -688,66 +758,74 @@
<-> ssub * Junicode-LF/semicondensed/it
}{}
+\DeclareFontShape{LGR}{Junicode-LF}{sc}{scsl}{
+ <-> ssub * Junicode-LF/sc/scit
+}{}
-% ---- lc = lightcondensed ----
+\DeclareFontShape{LGR}{Junicode-LF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-LF/semicondensed/scit
+}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-lf-lgr
+
+% ---- sbsx = semiboldsemiexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{it}{
- <-> alias * Junicode-LF/lc/it
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-LF/sbsx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{scit}{
- <-> alias * Junicode-LF/lc/scit
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-LF/sbsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-lf-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{n}{
- <-> alias * Junicode-LF/lc/n
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-LF/sbsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-lf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{sc}{
- <-> alias * Junicode-LF/lc/sc
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-LF/sbsx/n
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lc}{scsl}{
- <-> ssub * Junicode-LF/lc/scit
+\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{sl}{
+ <-> ssub * Junicode-LF/sbsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-LF/lightcondensed/scit
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lc}{sl}{
- <-> ssub * Junicode-LF/lc/it
+\DeclareFontShape{LGR}{Junicode-LF}{sbsx}{scsl}{
+ <-> ssub * Junicode-LF/sbsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{lightcondensed}{sl}{
- <-> ssub * Junicode-LF/lightcondensed/it
+\DeclareFontShape{LGR}{Junicode-LF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiboldsemiexpanded/scit
}{}
% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-LF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-lf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-LF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-LF/bsx/sc
+\DeclareFontShape{LGR}{Junicode-LF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-LF/bsx/scit
}{}
\DeclareFontShape{LGR}{Junicode-LF}{bsx}{n}{
@@ -758,14 +836,6 @@
<-> alias * Junicode-LF/bsx/n
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-LF/bsx/scit
-}{}
-
\DeclareFontShape{LGR}{Junicode-LF}{bsx}{it}{
<-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-lgr
}{}
@@ -774,12 +844,12 @@
<-> alias * Junicode-LF/bsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{bsx}{scsl}{
- <-> ssub * Junicode-LF/bsx/scit
+\DeclareFontShape{LGR}{Junicode-LF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-lf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/boldsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-LF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-LF/bsx/sc
}{}
\DeclareFontShape{LGR}{Junicode-LF}{bsx}{sl}{
@@ -790,82 +860,12 @@
<-> ssub * Junicode-LF/boldsemiexpanded/it
}{}
-
-% ---- b = bold ----
-
-\DeclareFontShape{LGR}{Junicode-LF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-lf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{bold}{scit}{
- <-> alias * Junicode-LF/b/scit
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-lf-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{bold}{it}{
- <-> alias * Junicode-LF/b/it
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-lf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{bold}{sc}{
- <-> alias * Junicode-LF/b/sc
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-lf-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{bold}{n}{
- <-> alias * Junicode-LF/b/n
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{b}{scsl}{
- <-> ssub * Junicode-LF/b/scit
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{bold}{scsl}{
- <-> ssub * Junicode-LF/bold/scit
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{b}{sl}{
- <-> ssub * Junicode-LF/b/it
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{bold}{sl}{
- <-> ssub * Junicode-LF/bold/it
-}{}
-
-
-% ---- mediumcondensed ----
-
-\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-lf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-lf-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-lf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-lf-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-LF/mediumcondensed/scit
+\DeclareFontShape{LGR}{Junicode-LF}{bsx}{scsl}{
+ <-> ssub * Junicode-LF/bsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-LF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-LF/mediumcondensed/it
+\DeclareFontShape{LGR}{Junicode-LF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/boldsemiexpanded/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-OsF.fd b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-OsF.fd
index e63959e9b76..129ac229558 100644
--- a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-OsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LGRJunicode-OsF.fd}
- [2024/06/03 (autoinst) Font definitions for LGR/Junicode-OsF.]
+ [2024/07/21 (autoinst) Font definitions for LGR/Junicode-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,363 +20,363 @@
\DeclareFontFamily{LGR}{Junicode-OsF}{}
-% ---- sx = semiexpanded ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{LGR}{Junicode-OsF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{scit}{
- <-> alias * Junicode-OsF/sx/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{n}{
+ <-> alias * Junicode-OsF/sc/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{it}{
- <-> alias * Junicode-OsF/sx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{scit}{
+ <-> alias * Junicode-OsF/sc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{sc}{
- <-> alias * Junicode-OsF/sx/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{it}{
+ <-> alias * Junicode-OsF/sc/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{n}{
- <-> alias * Junicode-OsF/sx/n
+\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{sc}{
+ <-> alias * Junicode-OsF/sc/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sx}{scsl}{
- <-> ssub * Junicode-OsF/sx/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{sc}{sl}{
+ <-> ssub * Junicode-OsF/sc/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{sl}{
+ <-> ssub * Junicode-OsF/semicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sx}{sl}{
- <-> ssub * Junicode-OsF/sx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{sc}{scsl}{
+ <-> ssub * Junicode-OsF/sc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiexpanded/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/semicondensed/scit
}{}
-% ---- c = condensed ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-OsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{n}{
- <-> alias * Junicode-OsF/c/n
+\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-OsF/bsx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{sc}{
- <-> alias * Junicode-OsF/c/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{it}{
- <-> alias * Junicode-OsF/c/it
+\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/bsx/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{scit}{
- <-> alias * Junicode-OsF/c/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-OsF/bsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{c}{scsl}{
- <-> ssub * Junicode-OsF/c/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{sl}{
+ <-> ssub * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{scsl}{
- <-> ssub * Junicode-OsF/condensed/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/boldsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{c}{sl}{
- <-> ssub * Junicode-OsF/c/it
+\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{scsl}{
+ <-> ssub * Junicode-OsF/bsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{sl}{
- <-> ssub * Junicode-OsF/condensed/it
+\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/boldsemiexpanded/scit
}{}
-% ---- x = expanded ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-OsF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{it}{
- <-> alias * Junicode-OsF/x/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-OsF/sbsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{scit}{
- <-> alias * Junicode-OsF/x/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-OsF/sbsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{n}{
- <-> alias * Junicode-OsF/x/n
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/sbsx/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{sc}{
- <-> alias * Junicode-OsF/x/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-OsF/sbsx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{x}{scsl}{
- <-> ssub * Junicode-OsF/x/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{sl}{
+ <-> ssub * Junicode-OsF/sbsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{scsl}{
- <-> ssub * Junicode-OsF/expanded/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{x}{sl}{
- <-> ssub * Junicode-OsF/x/it
+\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{scsl}{
+ <-> ssub * Junicode-OsF/sbsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{sl}{
- <-> ssub * Junicode-OsF/expanded/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiboldsemiexpanded/scit
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- sb = semibold ----
-\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/sbsx/n
+\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{sc}{
+ <-> alias * Junicode-OsF/sb/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-OsF/sbsx/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{n}{
+ <-> alias * Junicode-OsF/sb/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-OsF/sbsx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{scit}{
+ <-> alias * Junicode-OsF/sb/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-OsF/sbsx/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{it}{
+ <-> alias * Junicode-OsF/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{scsl}{
- <-> ssub * Junicode-OsF/sbsx/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{sb}{sl}{
+ <-> ssub * Junicode-OsF/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiboldsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{sl}{
+ <-> ssub * Junicode-OsF/semibold/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbsx}{sl}{
- <-> ssub * Junicode-OsF/sbsx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{sb}{scsl}{
+ <-> ssub * Junicode-OsF/sb/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiboldsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{scsl}{
+ <-> ssub * Junicode-OsF/semibold/scit
}{}
-% ---- mediumexpanded ----
+% ---- mediumcondensed ----
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-OsF/mediumexpanded/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumcondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumexpanded/it
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-OsF/mediumcondensed/scit
}{}
-% ---- mediumsemiexpanded ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/mediumsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/mediumsemicondensed/scit
}{}
-% ---- l = light ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{LGR}{Junicode-OsF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{light}{sc}{
- <-> alias * Junicode-OsF/l/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{sc}{
+ <-> alias * Junicode-OsF/sx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{light}{n}{
- <-> alias * Junicode-OsF/l/n
+\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{it}{
+ <-> alias * Junicode-OsF/sx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{light}{scit}{
- <-> alias * Junicode-OsF/l/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{n}{
+ <-> alias * Junicode-OsF/sx/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{light}{it}{
- <-> alias * Junicode-OsF/l/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{scit}{
+ <-> alias * Junicode-OsF/sx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{l}{scsl}{
- <-> ssub * Junicode-OsF/l/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{sx}{sl}{
+ <-> ssub * Junicode-OsF/sx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{light}{scsl}{
- <-> ssub * Junicode-OsF/light/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{l}{sl}{
- <-> ssub * Junicode-OsF/l/it
+\DeclareFontShape{LGR}{Junicode-OsF}{sx}{scsl}{
+ <-> ssub * Junicode-OsF/sx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{light}{sl}{
- <-> ssub * Junicode-OsF/light/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiexpanded/scit
}{}
-% ---- bx = boldexpanded ----
+% ---- l = light ----
-\DeclareFontShape{LGR}{Junicode-OsF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{n}{
- <-> alias * Junicode-OsF/bx/n
+\DeclareFontShape{LGR}{Junicode-OsF}{light}{n}{
+ <-> alias * Junicode-OsF/l/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{sc}{
- <-> alias * Junicode-OsF/bx/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{light}{scit}{
+ <-> alias * Junicode-OsF/l/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{it}{
- <-> alias * Junicode-OsF/bx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{light}{it}{
+ <-> alias * Junicode-OsF/l/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{scit}{
- <-> alias * Junicode-OsF/bx/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{light}{sc}{
+ <-> alias * Junicode-OsF/l/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bx}{scsl}{
- <-> ssub * Junicode-OsF/bx/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{l}{sl}{
+ <-> ssub * Junicode-OsF/l/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-OsF/boldexpanded/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{light}{sl}{
+ <-> ssub * Junicode-OsF/light/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bx}{sl}{
- <-> ssub * Junicode-OsF/bx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{l}{scsl}{
+ <-> ssub * Junicode-OsF/l/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{sl}{
- <-> ssub * Junicode-OsF/boldexpanded/it
+\DeclareFontShape{LGR}{Junicode-OsF}{light}{scsl}{
+ <-> ssub * Junicode-OsF/light/scit
}{}
@@ -414,14 +414,6 @@
<-> alias * Junicode-OsF/m/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{m}{scsl}{
- <-> ssub * Junicode-OsF/m/scit
-}{}
-
-\DeclareFontShape{LGR}{Junicode-OsF}{regular}{scsl}{
- <-> ssub * Junicode-OsF/regular/scit
-}{}
-
\DeclareFontShape{LGR}{Junicode-OsF}{m}{sl}{
<-> ssub * Junicode-OsF/m/it
}{}
@@ -430,55 +422,39 @@
<-> ssub * Junicode-OsF/regular/it
}{}
-
-% ---- lsc = lightsemicondensed ----
-
-\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-osf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-OsF/lsc/sc
-}{}
-
-\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{m}{scsl}{
+ <-> ssub * Junicode-OsF/m/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-OsF/lsc/n
+\DeclareFontShape{LGR}{Junicode-OsF}{regular}{scsl}{
+ <-> ssub * Junicode-OsF/regular/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-sc-lgr
-}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-OsF/lsc/scit
-}{}
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-OsF/lsc/it
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{scsl}{
- <-> ssub * Junicode-OsF/lsc/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-OsF/lightsemicondensed/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{sl}{
- <-> ssub * Junicode-OsF/lsc/it
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/lightsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/mediumsemiexpanded/scit
}{}
@@ -488,384 +464,408 @@
<-> \Junicode@@scale Junicode-Medium-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-osf-lgr
}{}
\DeclareFontShape{LGR}{Junicode-OsF}{medium}{scit}{
<-> \Junicode@@scale Junicode-MediumItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-osf-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-OsF}{medium}{scsl}{
- <-> ssub * Junicode-OsF/medium/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-osf-lgr
}{}
\DeclareFontShape{LGR}{Junicode-OsF}{medium}{sl}{
<-> ssub * Junicode-OsF/medium/it
}{}
+\DeclareFontShape{LGR}{Junicode-OsF}{medium}{scsl}{
+ <-> ssub * Junicode-OsF/medium/scit
+}{}
-% ---- b = bold ----
-\DeclareFontShape{LGR}{Junicode-OsF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-osf-sc-lgr
+% ---- bx = boldexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-OsF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bold}{scit}{
- <-> alias * Junicode-OsF/b/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{it}{
+ <-> alias * Junicode-OsF/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bold}{it}{
- <-> alias * Junicode-OsF/b/it
+\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{scit}{
+ <-> alias * Junicode-OsF/bx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bold}{sc}{
- <-> alias * Junicode-OsF/b/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{n}{
+ <-> alias * Junicode-OsF/bx/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bold}{n}{
- <-> alias * Junicode-OsF/b/n
+\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{sc}{
+ <-> alias * Junicode-OsF/bx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{b}{scsl}{
- <-> ssub * Junicode-OsF/b/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{bx}{sl}{
+ <-> ssub * Junicode-OsF/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bold}{scsl}{
- <-> ssub * Junicode-OsF/bold/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-OsF/boldexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{b}{sl}{
- <-> ssub * Junicode-OsF/b/it
+\DeclareFontShape{LGR}{Junicode-OsF}{bx}{scsl}{
+ <-> ssub * Junicode-OsF/bx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bold}{sl}{
- <-> ssub * Junicode-OsF/bold/it
+\DeclareFontShape{LGR}{Junicode-OsF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/boldexpanded/scit
}{}
-% ---- mediumcondensed ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{sc}{
+ <-> alias * Junicode-OsF/lc/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{scit}{
+ <-> alias * Junicode-OsF/lc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-OsF/mediumcondensed/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumcondensed/it
+\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{n}{
+ <-> alias * Junicode-OsF/lc/n
}{}
+\DeclareFontShape{LGR}{Junicode-OsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-osf-lgr
+}{}
-% ---- mediumsemicondensed ----
+\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{it}{
+ <-> alias * Junicode-OsF/lc/it
+}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lc}{sl}{
+ <-> ssub * Junicode-OsF/lc/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightcondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lc}{scsl}{
+ <-> ssub * Junicode-OsF/lc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-OsF/lightcondensed/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-OsF/mediumsemicondensed/scit
+
+% ---- lsc = lightsemicondensed ----
+
+\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-OsF/lsc/scit
}{}
+\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-osf-lgr
+}{}
-% ---- sbx = semiboldexpanded ----
+\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-OsF/lsc/n
+}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{it}{
- <-> alias * Junicode-OsF/sbx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-OsF/sbx/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-OsF/lsc/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{sl}{
+ <-> ssub * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-OsF/sbx/n
+\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightsemicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{lsc}{scsl}{
+ <-> ssub * Junicode-OsF/lsc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-OsF/sbx/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/lightsemicondensed/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{scsl}{
- <-> ssub * Junicode-OsF/sbx/scit
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiboldexpanded/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{sl}{
- <-> ssub * Junicode-OsF/sbx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiboldexpanded/it
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-lgr
}{}
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumexpanded/it
+}{}
-% ---- bsx = boldsemiexpanded ----
+\DeclareFontShape{LGR}{Junicode-OsF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/mediumexpanded/scit
+}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-osf-sc-lgr
+
+% ---- x = expanded ----
+
+\DeclareFontShape{LGR}{Junicode-OsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-OsF/bsx/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{n}{
+ <-> alias * Junicode-OsF/x/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/bsx/n
+\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{scit}{
+ <-> alias * Junicode-OsF/x/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-OsF/bsx/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{it}{
+ <-> alias * Junicode-OsF/x/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-OsF/bsx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{sc}{
+ <-> alias * Junicode-OsF/x/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{scsl}{
- <-> ssub * Junicode-OsF/bsx/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{x}{sl}{
+ <-> ssub * Junicode-OsF/x/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/boldsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{sl}{
+ <-> ssub * Junicode-OsF/expanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{bsx}{sl}{
- <-> ssub * Junicode-OsF/bsx/it
+\DeclareFontShape{LGR}{Junicode-OsF}{x}{scsl}{
+ <-> ssub * Junicode-OsF/x/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/boldsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-OsF}{expanded}{scsl}{
+ <-> ssub * Junicode-OsF/expanded/scit
}{}
-% ---- lc = lightcondensed ----
+% ---- b = bold ----
-\DeclareFontShape{LGR}{Junicode-OsF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{scit}{
- <-> alias * Junicode-OsF/lc/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{bold}{sc}{
+ <-> alias * Junicode-OsF/b/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{it}{
- <-> alias * Junicode-OsF/lc/it
+\DeclareFontShape{LGR}{Junicode-OsF}{bold}{it}{
+ <-> alias * Junicode-OsF/b/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{sc}{
- <-> alias * Junicode-OsF/lc/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{bold}{scit}{
+ <-> alias * Junicode-OsF/b/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{n}{
- <-> alias * Junicode-OsF/lc/n
+\DeclareFontShape{LGR}{Junicode-OsF}{bold}{n}{
+ <-> alias * Junicode-OsF/b/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lc}{scsl}{
- <-> ssub * Junicode-OsF/lc/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{b}{sl}{
+ <-> ssub * Junicode-OsF/b/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-OsF/lightcondensed/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{bold}{sl}{
+ <-> ssub * Junicode-OsF/bold/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lc}{sl}{
- <-> ssub * Junicode-OsF/lc/it
+\DeclareFontShape{LGR}{Junicode-OsF}{b}{scsl}{
+ <-> ssub * Junicode-OsF/b/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-OsF/lightcondensed/it
+\DeclareFontShape{LGR}{Junicode-OsF}{bold}{scsl}{
+ <-> ssub * Junicode-OsF/bold/scit
}{}
-% ---- sc = semicondensed ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LGR}{Junicode-OsF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{n}{
- <-> alias * Junicode-OsF/sc/n
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-OsF/sbx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{sc}{
- <-> alias * Junicode-OsF/sc/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-OsF/sbx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{it}{
- <-> alias * Junicode-OsF/sc/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-OsF/sbx/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{scit}{
- <-> alias * Junicode-OsF/sc/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-OsF/sbx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sc}{scsl}{
- <-> ssub * Junicode-OsF/sc/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{sl}{
+ <-> ssub * Junicode-OsF/sbx/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{scsl}{
- <-> ssub * Junicode-OsF/semicondensed/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiboldexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sc}{sl}{
- <-> ssub * Junicode-OsF/sc/it
+\DeclareFontShape{LGR}{Junicode-OsF}{sbx}{scsl}{
+ <-> ssub * Junicode-OsF/sbx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semicondensed}{sl}{
- <-> ssub * Junicode-OsF/semicondensed/it
+\DeclareFontShape{LGR}{Junicode-OsF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiboldexpanded/scit
}{}
-% ---- sb = semibold ----
+% ---- c = condensed ----
-\DeclareFontShape{LGR}{Junicode-OsF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{scit}{
- <-> alias * Junicode-OsF/sb/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{it}{
+ <-> alias * Junicode-OsF/c/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-osf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{it}{
- <-> alias * Junicode-OsF/sb/it
+\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{n}{
+ <-> alias * Junicode-OsF/c/n
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-osf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{sc}{
- <-> alias * Junicode-OsF/sb/sc
+\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{scit}{
+ <-> alias * Junicode-OsF/c/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-osf-lgr
+\DeclareFontShape{LGR}{Junicode-OsF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-osf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{n}{
- <-> alias * Junicode-OsF/sb/n
+\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{sc}{
+ <-> alias * Junicode-OsF/c/sc
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sb}{scsl}{
- <-> ssub * Junicode-OsF/sb/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{c}{sl}{
+ <-> ssub * Junicode-OsF/c/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{scsl}{
- <-> ssub * Junicode-OsF/semibold/scit
+\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{sl}{
+ <-> ssub * Junicode-OsF/condensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{sb}{sl}{
- <-> ssub * Junicode-OsF/sb/it
+\DeclareFontShape{LGR}{Junicode-OsF}{c}{scsl}{
+ <-> ssub * Junicode-OsF/c/scit
}{}
-\DeclareFontShape{LGR}{Junicode-OsF}{semibold}{sl}{
- <-> ssub * Junicode-OsF/semibold/it
+\DeclareFontShape{LGR}{Junicode-OsF}{condensed}{scsl}{
+ <-> ssub * Junicode-OsF/condensed/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-Sup.fd b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-Sup.fd
index 01cd3f1df7a..f9051a7c583 100644
--- a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-Sup.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LGRJunicode-Sup.fd}
- [2024/06/03 (autoinst) Font definitions for LGR/Junicode-Sup.]
+ [2024/07/21 (autoinst) Font definitions for LGR/Junicode-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,23 +20,16 @@
\DeclareFontFamily{LGR}{Junicode-Sup}{}
-% ---- mediumsemicondensed ----
-
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-sup-lgr
-}{}
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-Sup/mediumsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-Sup}{semiboldexpanded}{n}{
+ <-> alias * Junicode-Sup/sbx/n
}{}
-
-% ---- sbx = semiboldexpanded ----
-
\DeclareFontShape{LGR}{Junicode-Sup}{sbx}{it}{
<-> \Junicode@@scale Junicode-ExpSmBoldItalic-sup-lgr
}{}
@@ -45,14 +38,6 @@
<-> alias * Junicode-Sup/sbx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-sup-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-Sup}{semiboldexpanded}{n}{
- <-> alias * Junicode-Sup/sbx/n
-}{}
-
\DeclareFontShape{LGR}{Junicode-Sup}{sbx}{sl}{
<-> ssub * Junicode-Sup/sbx/it
}{}
@@ -62,111 +47,99 @@
}{}
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{LGR}{Junicode-Sup}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-sup-lgr
-}{}
+% ---- c = condensed ----
-\DeclareFontShape{LGR}{Junicode-Sup}{lightcondensed}{n}{
- <-> alias * Junicode-Sup/lc/n
+\DeclareFontShape{LGR}{Junicode-Sup}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{condensed}{n}{
+ <-> alias * Junicode-Sup/c/n
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{lightcondensed}{it}{
- <-> alias * Junicode-Sup/lc/it
+\DeclareFontShape{LGR}{Junicode-Sup}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{lc}{sl}{
- <-> ssub * Junicode-Sup/lc/it
+\DeclareFontShape{LGR}{Junicode-Sup}{condensed}{it}{
+ <-> alias * Junicode-Sup/c/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{lightcondensed}{sl}{
- <-> ssub * Junicode-Sup/lightcondensed/it
+\DeclareFontShape{LGR}{Junicode-Sup}{c}{sl}{
+ <-> ssub * Junicode-Sup/c/it
}{}
-
-% ---- bsx = boldsemiexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-Sup}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{condensed}{sl}{
+ <-> ssub * Junicode-Sup/condensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{boldsemiexpanded}{it}{
- <-> alias * Junicode-Sup/bsx/it
-}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-sup-lgr
-}{}
+% ---- mediumexpanded ----
-\DeclareFontShape{LGR}{Junicode-Sup}{boldsemiexpanded}{n}{
- <-> alias * Junicode-Sup/bsx/n
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{bsx}{sl}{
- <-> ssub * Junicode-Sup/bsx/it
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-Sup/boldsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-Sup/mediumexpanded/it
}{}
-% ---- sc = semicondensed ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{LGR}{Junicode-Sup}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semicondensed}{n}{
- <-> alias * Junicode-Sup/sc/n
+\DeclareFontShape{LGR}{Junicode-Sup}{lightsemicondensed}{n}{
+ <-> alias * Junicode-Sup/lsc/n
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semicondensed}{it}{
- <-> alias * Junicode-Sup/sc/it
+\DeclareFontShape{LGR}{Junicode-Sup}{lightsemicondensed}{it}{
+ <-> alias * Junicode-Sup/lsc/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{sc}{sl}{
- <-> ssub * Junicode-Sup/sc/it
+\DeclareFontShape{LGR}{Junicode-Sup}{lsc}{sl}{
+ <-> ssub * Junicode-Sup/lsc/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semicondensed}{sl}{
- <-> ssub * Junicode-Sup/semicondensed/it
+\DeclareFontShape{LGR}{Junicode-Sup}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-Sup/lightsemicondensed/it
}{}
-% ---- sb = semibold ----
+% ---- x = expanded ----
-\DeclareFontShape{LGR}{Junicode-Sup}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semibold}{it}{
- <-> alias * Junicode-Sup/sb/it
+\DeclareFontShape{LGR}{Junicode-Sup}{expanded}{n}{
+ <-> alias * Junicode-Sup/x/n
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semibold}{n}{
- <-> alias * Junicode-Sup/sb/n
+\DeclareFontShape{LGR}{Junicode-Sup}{expanded}{it}{
+ <-> alias * Junicode-Sup/x/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{sb}{sl}{
- <-> ssub * Junicode-Sup/sb/it
+\DeclareFontShape{LGR}{Junicode-Sup}{x}{sl}{
+ <-> ssub * Junicode-Sup/x/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semibold}{sl}{
- <-> ssub * Junicode-Sup/semibold/it
+\DeclareFontShape{LGR}{Junicode-Sup}{expanded}{sl}{
+ <-> ssub * Junicode-Sup/expanded/it
}{}
@@ -197,18 +170,30 @@
}{}
-% ---- mediumcondensed ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{semiexpanded}{it}{
+ <-> alias * Junicode-Sup/sx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumcondensed}{sl}{
- <-> ssub * Junicode-Sup/mediumcondensed/it
+\DeclareFontShape{LGR}{Junicode-Sup}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-sup-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Sup}{semiexpanded}{n}{
+ <-> alias * Junicode-Sup/sx/n
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Sup}{sx}{sl}{
+ <-> ssub * Junicode-Sup/sx/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Sup}{semiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiexpanded/it
}{}
@@ -239,30 +224,60 @@
}{}
-% ---- bx = boldexpanded ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{LGR}{Junicode-Sup}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{boldexpanded}{n}{
- <-> alias * Junicode-Sup/bx/n
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-Sup/mediumsemicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{boldexpanded}{it}{
- <-> alias * Junicode-Sup/bx/it
+
+% ---- lc = lightcondensed ----
+
+\DeclareFontShape{LGR}{Junicode-Sup}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{bx}{sl}{
- <-> ssub * Junicode-Sup/bx/it
+\DeclareFontShape{LGR}{Junicode-Sup}{lightcondensed}{n}{
+ <-> alias * Junicode-Sup/lc/n
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{boldexpanded}{sl}{
- <-> ssub * Junicode-Sup/boldexpanded/it
+\DeclareFontShape{LGR}{Junicode-Sup}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-sup-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Sup}{lightcondensed}{it}{
+ <-> alias * Junicode-Sup/lc/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Sup}{lc}{sl}{
+ <-> ssub * Junicode-Sup/lc/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Sup}{lightcondensed}{sl}{
+ <-> ssub * Junicode-Sup/lightcondensed/it
+}{}
+
+
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-sup-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-sup-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/mediumsemiexpanded/it
}{}
@@ -308,168 +323,153 @@
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LGR}{Junicode-Sup}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{lightsemicondensed}{n}{
- <-> alias * Junicode-Sup/lsc/n
+\DeclareFontShape{LGR}{Junicode-Sup}{boldexpanded}{it}{
+ <-> alias * Junicode-Sup/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{lightsemicondensed}{it}{
- <-> alias * Junicode-Sup/lsc/it
+\DeclareFontShape{LGR}{Junicode-Sup}{boldexpanded}{n}{
+ <-> alias * Junicode-Sup/bx/n
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{lsc}{sl}{
- <-> ssub * Junicode-Sup/lsc/it
+\DeclareFontShape{LGR}{Junicode-Sup}{bx}{sl}{
+ <-> ssub * Junicode-Sup/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-Sup/lightsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-Sup}{boldexpanded}{sl}{
+ <-> ssub * Junicode-Sup/boldexpanded/it
}{}
-% ---- c = condensed ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-Sup}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{condensed}{n}{
- <-> alias * Junicode-Sup/c/n
+\DeclareFontShape{LGR}{Junicode-Sup}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-Sup/bsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{condensed}{it}{
- <-> alias * Junicode-Sup/c/it
+\DeclareFontShape{LGR}{Junicode-Sup}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-Sup/bsx/n
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{c}{sl}{
- <-> ssub * Junicode-Sup/c/it
+\DeclareFontShape{LGR}{Junicode-Sup}{bsx}{sl}{
+ <-> ssub * Junicode-Sup/bsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{condensed}{sl}{
- <-> ssub * Junicode-Sup/condensed/it
+\DeclareFontShape{LGR}{Junicode-Sup}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/boldsemiexpanded/it
}{}
-% ---- x = expanded ----
-
-\DeclareFontShape{LGR}{Junicode-Sup}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-sup-lgr
-}{}
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-Sup}{expanded}{n}{
- <-> alias * Junicode-Sup/x/n
+\DeclareFontShape{LGR}{Junicode-Sup}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-Sup/sbsx/n
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{expanded}{it}{
- <-> alias * Junicode-Sup/x/it
+\DeclareFontShape{LGR}{Junicode-Sup}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{x}{sl}{
- <-> ssub * Junicode-Sup/x/it
+\DeclareFontShape{LGR}{Junicode-Sup}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-Sup/sbsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{expanded}{sl}{
- <-> ssub * Junicode-Sup/expanded/it
+\DeclareFontShape{LGR}{Junicode-Sup}{sbsx}{sl}{
+ <-> ssub * Junicode-Sup/sbsx/it
}{}
-
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-Sup}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semiexpanded}{it}{
- <-> alias * Junicode-Sup/sx/it
-}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-sup-lgr
-}{}
+% ---- sc = semicondensed ----
-\DeclareFontShape{LGR}{Junicode-Sup}{semiexpanded}{n}{
- <-> alias * Junicode-Sup/sx/n
+\DeclareFontShape{LGR}{Junicode-Sup}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{sx}{sl}{
- <-> ssub * Junicode-Sup/sx/it
+\DeclareFontShape{LGR}{Junicode-Sup}{semicondensed}{it}{
+ <-> alias * Junicode-Sup/sc/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semiexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiexpanded/it
+\DeclareFontShape{LGR}{Junicode-Sup}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-sup-lgr
}{}
-
-% ---- mediumexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{semicondensed}{n}{
+ <-> alias * Junicode-Sup/sc/n
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{sc}{sl}{
+ <-> ssub * Junicode-Sup/sc/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumexpanded}{sl}{
- <-> ssub * Junicode-Sup/mediumexpanded/it
+\DeclareFontShape{LGR}{Junicode-Sup}{semicondensed}{sl}{
+ <-> ssub * Junicode-Sup/semicondensed/it
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- sb = semibold ----
-\DeclareFontShape{LGR}{Junicode-Sup}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-Sup/sbsx/it
+\DeclareFontShape{LGR}{Junicode-Sup}{semibold}{it}{
+ <-> alias * Junicode-Sup/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-Sup/sbsx/n
+\DeclareFontShape{LGR}{Junicode-Sup}{semibold}{n}{
+ <-> alias * Junicode-Sup/sb/n
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{sbsx}{sl}{
- <-> ssub * Junicode-Sup/sbsx/it
+\DeclareFontShape{LGR}{Junicode-Sup}{sb}{sl}{
+ <-> ssub * Junicode-Sup/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiboldsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-Sup}{semibold}{sl}{
+ <-> ssub * Junicode-Sup/semibold/it
}{}
-% ---- mediumsemiexpanded ----
+% ---- mediumcondensed ----
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-sup-lgr
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-sup-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-Sup}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-Sup/mediumsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-Sup}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-Sup/mediumcondensed/it
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-TLF.fd b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-TLF.fd
index 64237086df5..d0970130c3d 100644
--- a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-TLF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LGRJunicode-TLF.fd}
- [2024/06/03 (autoinst) Font definitions for LGR/Junicode-TLF.]
+ [2024/07/21 (autoinst) Font definitions for LGR/Junicode-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,607 +20,626 @@
\DeclareFontFamily{LGR}{Junicode-TLF}{}
-% ---- lsc = lightsemicondensed ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TLF/lsc/it
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TLF/sbx/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-TLF/lsc/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-TLF/sbx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TLF/lsc/n
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TLF/sbx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-TLF/lsc/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-TLF/sbx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{scsl}{
- <-> ssub * Junicode-TLF/lsc/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{sl}{
+ <-> ssub * Junicode-TLF/sbx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-TLF/lightsemicondensed/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiboldexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{sl}{
- <-> ssub * Junicode-TLF/lsc/it
+\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{scsl}{
+ <-> ssub * Junicode-TLF/sbx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/lightsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiboldexpanded/scit
}{}
-% ---- medium ----
+% ---- c = condensed ----
-\DeclareFontShape{LGR}{Junicode-TLF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{n}{
+ <-> alias * Junicode-TLF/c/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{scit}{
+ <-> alias * Junicode-TLF/c/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{medium}{scsl}{
- <-> ssub * Junicode-TLF/medium/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{medium}{sl}{
- <-> ssub * Junicode-TLF/medium/it
+\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{it}{
+ <-> alias * Junicode-TLF/c/it
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{LGR}{Junicode-TLF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{regular}{sc}{
- <-> alias * Junicode-TLF/m/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{sc}{
+ <-> alias * Junicode-TLF/c/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{c}{sl}{
+ <-> ssub * Junicode-TLF/c/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{regular}{n}{
- <-> alias * Junicode-TLF/m/n
+\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{sl}{
+ <-> ssub * Junicode-TLF/condensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{c}{scsl}{
+ <-> ssub * Junicode-TLF/c/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{regular}{scit}{
- <-> alias * Junicode-TLF/m/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{scsl}{
+ <-> ssub * Junicode-TLF/condensed/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-tlf-lgr
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{regular}{it}{
- <-> alias * Junicode-TLF/m/it
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{m}{scsl}{
- <-> ssub * Junicode-TLF/m/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{regular}{scsl}{
- <-> ssub * Junicode-TLF/regular/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{m}{sl}{
- <-> ssub * Junicode-TLF/m/it
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{regular}{sl}{
- <-> ssub * Junicode-TLF/regular/it
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/mediumexpanded/scit
}{}
-% ---- bx = boldexpanded ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{LGR}{Junicode-TLF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{sc}{
- <-> alias * Junicode-TLF/bx/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-TLF/lsc/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{n}{
- <-> alias * Junicode-TLF/bx/n
+\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-TLF/lsc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{scit}{
- <-> alias * Junicode-TLF/bx/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TLF/lsc/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{it}{
- <-> alias * Junicode-TLF/bx/it
+\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TLF/lsc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bx}{scsl}{
- <-> ssub * Junicode-TLF/bx/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{sl}{
+ <-> ssub * Junicode-TLF/lsc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-TLF/boldexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightsemicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bx}{sl}{
- <-> ssub * Junicode-TLF/bx/it
+\DeclareFontShape{LGR}{Junicode-TLF}{lsc}{scsl}{
+ <-> ssub * Junicode-TLF/lsc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TLF/boldexpanded/it
+\DeclareFontShape{LGR}{Junicode-TLF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/lightsemicondensed/scit
}{}
-% ---- l = light ----
+% ---- x = expanded ----
-\DeclareFontShape{LGR}{Junicode-TLF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{light}{scit}{
- <-> alias * Junicode-TLF/l/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{sc}{
+ <-> alias * Junicode-TLF/x/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{light}{it}{
- <-> alias * Junicode-TLF/l/it
+\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{scit}{
+ <-> alias * Junicode-TLF/x/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{light}{sc}{
- <-> alias * Junicode-TLF/l/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{n}{
+ <-> alias * Junicode-TLF/x/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{light}{n}{
- <-> alias * Junicode-TLF/l/n
+\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{it}{
+ <-> alias * Junicode-TLF/x/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{l}{scsl}{
- <-> ssub * Junicode-TLF/l/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{x}{sl}{
+ <-> ssub * Junicode-TLF/x/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{light}{scsl}{
- <-> ssub * Junicode-TLF/light/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{sl}{
+ <-> ssub * Junicode-TLF/expanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{l}{sl}{
- <-> ssub * Junicode-TLF/l/it
+\DeclareFontShape{LGR}{Junicode-TLF}{x}{scsl}{
+ <-> ssub * Junicode-TLF/x/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{light}{sl}{
- <-> ssub * Junicode-TLF/light/it
+\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{scsl}{
+ <-> ssub * Junicode-TLF/expanded/scit
}{}
-% ---- mediumsemiexpanded ----
+% ---- b = bold ----
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{bold}{sc}{
+ <-> alias * Junicode-TLF/b/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{bold}{scit}{
+ <-> alias * Junicode-TLF/b/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/mediumsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-TLF}{bold}{n}{
+ <-> alias * Junicode-TLF/b/n
}{}
+\DeclareFontShape{LGR}{Junicode-TLF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tlf-lgr
+}{}
-% ---- sbsx = semiboldsemiexpanded ----
+\DeclareFontShape{LGR}{Junicode-TLF}{bold}{it}{
+ <-> alias * Junicode-TLF/b/it
+}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{b}{sl}{
+ <-> ssub * Junicode-TLF/b/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-TLF/sbsx/n
+\DeclareFontShape{LGR}{Junicode-TLF}{bold}{sl}{
+ <-> ssub * Junicode-TLF/bold/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{b}{scsl}{
+ <-> ssub * Junicode-TLF/b/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-TLF/sbsx/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{bold}{scsl}{
+ <-> ssub * Junicode-TLF/bold/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-lgr
+
+% ---- sx = semiexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-TLF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-TLF/sbsx/it
+\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{sc}{
+ <-> alias * Junicode-TLF/sx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-TLF/sbsx/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{n}{
+ <-> alias * Junicode-TLF/sx/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{scsl}{
- <-> ssub * Junicode-TLF/sbsx/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiboldsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{scit}{
+ <-> alias * Junicode-TLF/sx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{sl}{
- <-> ssub * Junicode-TLF/sbsx/it
+\DeclareFontShape{LGR}{Junicode-TLF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiboldsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{it}{
+ <-> alias * Junicode-TLF/sx/it
}{}
+\DeclareFontShape{LGR}{Junicode-TLF}{sx}{sl}{
+ <-> ssub * Junicode-TLF/sx/it
+}{}
-% ---- mediumexpanded ----
+\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiexpanded/it
+}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sx}{scsl}{
+ <-> ssub * Junicode-TLF/sx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiexpanded/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-lgr
+
+% ---- l = light ----
+
+\DeclareFontShape{LGR}{Junicode-TLF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{light}{scit}{
+ <-> alias * Junicode-TLF/l/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-TLF/mediumexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumexpanded/it
+\DeclareFontShape{LGR}{Junicode-TLF}{light}{n}{
+ <-> alias * Junicode-TLF/l/n
}{}
+\DeclareFontShape{LGR}{Junicode-TLF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-tlf-lgr
+}{}
-% ---- sx = semiexpanded ----
+\DeclareFontShape{LGR}{Junicode-TLF}{light}{it}{
+ <-> alias * Junicode-TLF/l/it
+}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{sc}{
- <-> alias * Junicode-TLF/sx/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{light}{sc}{
+ <-> alias * Junicode-TLF/l/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{l}{sl}{
+ <-> ssub * Junicode-TLF/l/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{n}{
- <-> alias * Junicode-TLF/sx/n
+\DeclareFontShape{LGR}{Junicode-TLF}{light}{sl}{
+ <-> ssub * Junicode-TLF/light/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{l}{scsl}{
+ <-> ssub * Junicode-TLF/l/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{scit}{
- <-> alias * Junicode-TLF/sx/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{light}{scsl}{
+ <-> ssub * Junicode-TLF/light/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tlf-lgr
+
+% ---- mediumsemicondensed ----
+
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{it}{
- <-> alias * Junicode-TLF/sx/it
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sx}{scsl}{
- <-> ssub * Junicode-TLF/sx/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sx}{sl}{
- <-> ssub * Junicode-TLF/sx/it
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiexpanded/it
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/mediumsemicondensed/scit
}{}
-% ---- c = condensed ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LGR}{Junicode-TLF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{it}{
- <-> alias * Junicode-TLF/c/it
+\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{scit}{
+ <-> alias * Junicode-TLF/lc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{scit}{
- <-> alias * Junicode-TLF/c/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{n}{
+ <-> alias * Junicode-TLF/lc/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{n}{
- <-> alias * Junicode-TLF/c/n
+\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{it}{
+ <-> alias * Junicode-TLF/lc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{sc}{
- <-> alias * Junicode-TLF/c/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{sc}{
+ <-> alias * Junicode-TLF/lc/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{c}{scsl}{
- <-> ssub * Junicode-TLF/c/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{lc}{sl}{
+ <-> ssub * Junicode-TLF/lc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{scsl}{
- <-> ssub * Junicode-TLF/condensed/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightcondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{c}{sl}{
- <-> ssub * Junicode-TLF/c/it
+\DeclareFontShape{LGR}{Junicode-TLF}{lc}{scsl}{
+ <-> ssub * Junicode-TLF/lc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{condensed}{sl}{
- <-> ssub * Junicode-TLF/condensed/it
+\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-TLF/lightcondensed/scit
}{}
-% ---- x = expanded ----
+% ---- m = regular ----
-\DeclareFontShape{LGR}{Junicode-TLF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{n}{
- <-> alias * Junicode-TLF/x/n
+\DeclareFontShape{LGR}{Junicode-TLF}{regular}{n}{
+ <-> alias * Junicode-TLF/m/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{sc}{
- <-> alias * Junicode-TLF/x/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{regular}{scit}{
+ <-> alias * Junicode-TLF/m/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{it}{
- <-> alias * Junicode-TLF/x/it
+\DeclareFontShape{LGR}{Junicode-TLF}{regular}{it}{
+ <-> alias * Junicode-TLF/m/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{scit}{
- <-> alias * Junicode-TLF/x/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{regular}{sc}{
+ <-> alias * Junicode-TLF/m/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{x}{scsl}{
- <-> ssub * Junicode-TLF/x/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{m}{sl}{
+ <-> ssub * Junicode-TLF/m/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{scsl}{
- <-> ssub * Junicode-TLF/expanded/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{regular}{sl}{
+ <-> ssub * Junicode-TLF/regular/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{x}{sl}{
- <-> ssub * Junicode-TLF/x/it
+\DeclareFontShape{LGR}{Junicode-TLF}{m}{scsl}{
+ <-> ssub * Junicode-TLF/m/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{expanded}{sl}{
- <-> ssub * Junicode-TLF/expanded/it
+\DeclareFontShape{LGR}{Junicode-TLF}{regular}{scsl}{
+ <-> ssub * Junicode-TLF/regular/scit
}{}
-% ---- sc = semicondensed ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-TLF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{n}{
- <-> alias * Junicode-TLF/sc/n
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{sc}{
- <-> alias * Junicode-TLF/sc/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{it}{
- <-> alias * Junicode-TLF/sc/it
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/mediumsemiexpanded/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tlf-sc-lgr
+
+% ---- medium ----
+
+\DeclareFontShape{LGR}{Junicode-TLF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{scit}{
- <-> alias * Junicode-TLF/sc/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sc}{scsl}{
- <-> ssub * Junicode-TLF/sc/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{scsl}{
- <-> ssub * Junicode-TLF/semicondensed/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sc}{sl}{
- <-> ssub * Junicode-TLF/sc/it
+\DeclareFontShape{LGR}{Junicode-TLF}{medium}{sl}{
+ <-> ssub * Junicode-TLF/medium/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{sl}{
- <-> ssub * Junicode-TLF/semicondensed/it
+\DeclareFontShape{LGR}{Junicode-TLF}{medium}{scsl}{
+ <-> ssub * Junicode-TLF/medium/scit
}{}
-% ---- sb = semibold ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LGR}{Junicode-TLF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{scit}{
- <-> alias * Junicode-TLF/sb/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{sc}{
+ <-> alias * Junicode-TLF/bx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{it}{
- <-> alias * Junicode-TLF/sb/it
+\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{scit}{
+ <-> alias * Junicode-TLF/bx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{sc}{
- <-> alias * Junicode-TLF/sb/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{n}{
+ <-> alias * Junicode-TLF/bx/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{n}{
- <-> alias * Junicode-TLF/sb/n
+\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{it}{
+ <-> alias * Junicode-TLF/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sb}{scsl}{
- <-> ssub * Junicode-TLF/sb/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{bx}{sl}{
+ <-> ssub * Junicode-TLF/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{scsl}{
- <-> ssub * Junicode-TLF/semibold/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/boldexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sb}{sl}{
- <-> ssub * Junicode-TLF/sb/it
+\DeclareFontShape{LGR}{Junicode-TLF}{bx}{scsl}{
+ <-> ssub * Junicode-TLF/bx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{sl}{
- <-> ssub * Junicode-TLF/semibold/it
+\DeclareFontShape{LGR}{Junicode-TLF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/boldexpanded/scit
}{}
% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-TLF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-tlf-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-TLF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-TLF/bsx/n
-}{}
-
\DeclareFontShape{LGR}{Junicode-TLF}{bsx}{sc}{
<-> \Junicode@@scale Junicode-SmExpBold-tlf-sc-lgr
}{}
@@ -645,12 +664,12 @@
<-> alias * Junicode-TLF/bsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bsx}{scsl}{
- <-> ssub * Junicode-TLF/bsx/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/boldsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-TLF/bsx/n
}{}
\DeclareFontShape{LGR}{Junicode-TLF}{bsx}{sl}{
@@ -661,211 +680,192 @@
<-> ssub * Junicode-TLF/boldsemiexpanded/it
}{}
-
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{LGR}{Junicode-TLF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{bsx}{scsl}{
+ <-> ssub * Junicode-TLF/bsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{scit}{
- <-> alias * Junicode-TLF/lc/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/boldsemiexpanded/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tlf-lgr
-}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{it}{
- <-> alias * Junicode-TLF/lc/it
-}{}
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-TLF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{sc}{
- <-> alias * Junicode-TLF/lc/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-TLF/sbsx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{n}{
- <-> alias * Junicode-TLF/lc/n
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-TLF/sbsx/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lc}{scsl}{
- <-> ssub * Junicode-TLF/lc/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-TLF/lightcondensed/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-TLF/sbsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lc}{sl}{
- <-> ssub * Junicode-TLF/lc/it
+\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TLF/lightcondensed/it
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-TLF/sbsx/it
}{}
-
-% ---- sbx = semiboldexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{sl}{
+ <-> ssub * Junicode-TLF/sbsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TLF/sbx/n
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sbsx}{scsl}{
+ <-> ssub * Junicode-TLF/sbsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-TLF/sbx/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiboldsemiexpanded/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-lgr
-}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TLF/sbx/it
-}{}
+% ---- sc = semicondensed ----
-\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-TLF/sbx/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{sc}{
+ <-> alias * Junicode-TLF/sc/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{scsl}{
- <-> ssub * Junicode-TLF/sbx/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiboldexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{n}{
+ <-> alias * Junicode-TLF/sc/n
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{sbx}{sl}{
- <-> ssub * Junicode-TLF/sbx/it
+\DeclareFontShape{LGR}{Junicode-TLF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiboldexpanded/it
+\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{scit}{
+ <-> alias * Junicode-TLF/sc/scit
}{}
-
-% ---- mediumsemicondensed ----
-
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{it}{
+ <-> alias * Junicode-TLF/sc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sc}{sl}{
+ <-> ssub * Junicode-TLF/sc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{sl}{
+ <-> ssub * Junicode-TLF/semicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-TLF/mediumsemicondensed/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{sc}{scsl}{
+ <-> ssub * Junicode-TLF/sc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-TLF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/semicondensed/scit
}{}
-% ---- mediumcondensed ----
+% ---- sb = semibold ----
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{sc}{
+ <-> alias * Junicode-TLF/sb/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{scit}{
+ <-> alias * Junicode-TLF/sb/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-TLF/mediumcondensed/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumcondensed/it
+\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{n}{
+ <-> alias * Junicode-TLF/sb/n
}{}
-
-% ---- b = bold ----
-
-\DeclareFontShape{LGR}{Junicode-TLF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bold}{scit}{
- <-> alias * Junicode-TLF/b/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{it}{
+ <-> alias * Junicode-TLF/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-tlf-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sb}{sl}{
+ <-> ssub * Junicode-TLF/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bold}{it}{
- <-> alias * Junicode-TLF/b/it
+\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{sl}{
+ <-> ssub * Junicode-TLF/semibold/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-tlf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TLF}{sb}{scsl}{
+ <-> ssub * Junicode-TLF/sb/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bold}{sc}{
- <-> alias * Junicode-TLF/b/sc
+\DeclareFontShape{LGR}{Junicode-TLF}{semibold}{scsl}{
+ <-> ssub * Junicode-TLF/semibold/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-tlf-lgr
+
+% ---- mediumcondensed ----
+
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bold}{n}{
- <-> alias * Junicode-TLF/b/n
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{b}{scsl}{
- <-> ssub * Junicode-TLF/b/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bold}{scsl}{
- <-> ssub * Junicode-TLF/bold/scit
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-tlf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{b}{sl}{
- <-> ssub * Junicode-TLF/b/it
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumcondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TLF}{bold}{sl}{
- <-> ssub * Junicode-TLF/bold/it
+\DeclareFontShape{LGR}{Junicode-TLF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-TLF/mediumcondensed/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-TOsF.fd b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-TOsF.fd
index 79de53f63f9..b402baf7106 100644
--- a/Master/texmf-dist/tex/latex/junicode/LGRJunicode-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LGRJunicode-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LGRJunicode-TOsF.fd}
- [2024/06/03 (autoinst) Font definitions for LGR/Junicode-TOsF.]
+ [2024/07/21 (autoinst) Font definitions for LGR/Junicode-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -30,14 +30,6 @@
<-> alias * Junicode-TOsF/l/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-tosf-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{light}{n}{
- <-> alias * Junicode-TOsF/l/n
-}{}
-
\DeclareFontShape{LGR}{Junicode-TOsF}{l}{scit}{
<-> \Junicode@@scale Junicode-LightItalic-tosf-sc-lgr
}{}
@@ -46,20 +38,20 @@
<-> alias * Junicode-TOsF/l/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{light}{it}{
- <-> alias * Junicode-TOsF/l/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{light}{n}{
+ <-> alias * Junicode-TOsF/l/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{l}{scsl}{
- <-> ssub * Junicode-TOsF/l/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{light}{scsl}{
- <-> ssub * Junicode-TOsF/light/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{light}{it}{
+ <-> alias * Junicode-TOsF/l/it
}{}
\DeclareFontShape{LGR}{Junicode-TOsF}{l}{sl}{
@@ -70,350 +62,302 @@
<-> ssub * Junicode-TOsF/light/it
}{}
-
-% ---- bx = boldexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{l}{scsl}{
+ <-> ssub * Junicode-TOsF/l/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{scit}{
- <-> alias * Junicode-TOsF/bx/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{light}{scsl}{
+ <-> ssub * Junicode-TOsF/light/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-lgr
-}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{it}{
- <-> alias * Junicode-TOsF/bx/it
-}{}
+% ---- sx = semiexpanded ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{sc}{
- <-> alias * Junicode-TOsF/bx/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{n}{
- <-> alias * Junicode-TOsF/bx/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{n}{
+ <-> alias * Junicode-TOsF/sx/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{scsl}{
- <-> ssub * Junicode-TOsF/bx/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/boldexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{it}{
+ <-> alias * Junicode-TOsF/sx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{sl}{
- <-> ssub * Junicode-TOsF/bx/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/boldexpanded/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sx/sc
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{sl}{
+ <-> ssub * Junicode-TOsF/sx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{n}{
- <-> alias * Junicode-TOsF/m/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{scsl}{
+ <-> ssub * Junicode-TOsF/sx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{sc}{
- <-> alias * Junicode-TOsF/m/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiexpanded/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-tosf-lgr
-}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{it}{
- <-> alias * Junicode-TOsF/m/it
-}{}
+% ---- mediumsemicondensed ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{scit}{
- <-> alias * Junicode-TOsF/m/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{m}{scsl}{
- <-> ssub * Junicode-TOsF/m/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{scsl}{
- <-> ssub * Junicode-TOsF/regular/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{m}{sl}{
- <-> ssub * Junicode-TOsF/m/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/mediumsemicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{sl}{
- <-> ssub * Junicode-TOsF/regular/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumsemicondensed/scit
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-TOsF/lsc/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{sc}{
+ <-> alias * Junicode-TOsF/lc/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TOsF/lsc/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{n}{
+ <-> alias * Junicode-TOsF/lc/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-TOsF/lsc/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{scit}{
+ <-> alias * Junicode-TOsF/lc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TOsF/lsc/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{it}{
+ <-> alias * Junicode-TOsF/lc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{scsl}{
- <-> ssub * Junicode-TOsF/lsc/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{sl}{
+ <-> ssub * Junicode-TOsF/lc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/lightsemicondensed/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightcondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{sl}{
- <-> ssub * Junicode-TOsF/lsc/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{scsl}{
+ <-> ssub * Junicode-TOsF/lc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/lightcondensed/scit
}{}
% ---- medium ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-tosf-lgr
}{}
\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{it}{
<-> \Junicode@@scale Junicode-MediumItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-tosf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{scsl}{
- <-> ssub * Junicode-TOsF/medium/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-tosf-sc-lgr
}{}
\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{sl}{
<-> ssub * Junicode-TOsF/medium/it
}{}
-
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{medium}{scsl}{
+ <-> ssub * Junicode-TOsF/medium/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{n}{
- <-> alias * Junicode-TOsF/sx/n
-}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-tosf-sc-lgr
-}{}
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{sc}{
- <-> alias * Junicode-TOsF/sx/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{sc}{
+ <-> alias * Junicode-TOsF/bx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{it}{
- <-> alias * Junicode-TOsF/sx/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{it}{
+ <-> alias * Junicode-TOsF/bx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{scit}{
- <-> alias * Junicode-TOsF/sx/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{scsl}{
- <-> ssub * Junicode-TOsF/sx/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{scit}{
+ <-> alias * Junicode-TOsF/bx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sx}{sl}{
- <-> ssub * Junicode-TOsF/sx/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{n}{
+ <-> alias * Junicode-TOsF/bx/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiexpanded/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{sl}{
+ <-> ssub * Junicode-TOsF/bx/it
}{}
-
-% ---- x = expanded ----
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/boldexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{it}{
- <-> alias * Junicode-TOsF/x/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{bx}{scsl}{
+ <-> ssub * Junicode-TOsF/bx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/boldexpanded/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{scit}{
- <-> alias * Junicode-TOsF/x/scit
-}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-tosf-lgr
-}{}
+% ---- m = regular ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{n}{
- <-> alias * Junicode-TOsF/x/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{n}{
+ <-> alias * Junicode-TOsF/m/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{sc}{
- <-> alias * Junicode-TOsF/x/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{x}{scsl}{
- <-> ssub * Junicode-TOsF/x/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{scit}{
+ <-> alias * Junicode-TOsF/m/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{scsl}{
- <-> ssub * Junicode-TOsF/expanded/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{x}{sl}{
- <-> ssub * Junicode-TOsF/x/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{it}{
+ <-> alias * Junicode-TOsF/m/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{sl}{
- <-> ssub * Junicode-TOsF/expanded/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-tosf-sc-lgr
}{}
-
-% ---- c = condensed ----
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{sc}{
+ <-> alias * Junicode-TOsF/m/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{sc}{
- <-> alias * Junicode-TOsF/c/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{m}{sl}{
+ <-> ssub * Junicode-TOsF/m/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{sl}{
+ <-> ssub * Junicode-TOsF/regular/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{n}{
- <-> alias * Junicode-TOsF/c/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{m}{scsl}{
+ <-> ssub * Junicode-TOsF/m/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{regular}{scsl}{
+ <-> ssub * Junicode-TOsF/regular/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{scit}{
- <-> alias * Junicode-TOsF/c/scit
-}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tosf-lgr
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{it}{
- <-> alias * Junicode-TOsF/c/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{c}{scsl}{
- <-> ssub * Junicode-TOsF/c/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{scsl}{
- <-> ssub * Junicode-TOsF/condensed/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{c}{sl}{
- <-> ssub * Junicode-TOsF/c/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{sl}{
- <-> ssub * Junicode-TOsF/condensed/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumsemiexpanded/scit
}{}
% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-sc-lgr
-}{}
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-TOsF/sbsx/sc
-}{}
-
\DeclareFontShape{LGR}{Junicode-TOsF}{sbsx}{n}{
<-> \Junicode@@scale Junicode-SmExpSmBold-tosf-lgr
}{}
@@ -438,12 +382,12 @@
<-> alias * Junicode-TOsF/sbsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sbsx}{scsl}{
- <-> ssub * Junicode-TOsF/sbsx/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiboldsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sbsx/sc
}{}
\DeclareFontShape{LGR}{Junicode-TOsF}{sbsx}{sl}{
@@ -454,345 +398,385 @@
<-> ssub * Junicode-TOsF/semiboldsemiexpanded/it
}{}
-
-% ---- mediumexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sbsx}{scsl}{
+ <-> ssub * Junicode-TOsF/sbsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiboldsemiexpanded/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-tosf-sc-lgr
+
+% ---- bsx = boldsemiexpanded ----
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/bsx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/mediumexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumexpanded/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-TOsF/bsx/n
}{}
+\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-sc-lgr
+}{}
-% ---- mediumsemiexpanded ----
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/bsx/scit
+}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-TOsF/bsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{sl}{
+ <-> ssub * Junicode-TOsF/bsx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/boldsemiexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/mediumsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{scsl}{
+ <-> ssub * Junicode-TOsF/bsx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/boldsemiexpanded/scit
}{}
-% ---- mediumsemicondensed ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{sc}{
+ <-> alias * Junicode-TOsF/sc/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{n}{
+ <-> alias * Junicode-TOsF/sc/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/mediumsemicondensed/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-TOsF/mediumsemicondensed/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{scit}{
+ <-> alias * Junicode-TOsF/sc/scit
}{}
-
-% ---- sbx = semiboldexpanded ----
-
-\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TOsF/sbx/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{it}{
+ <-> alias * Junicode-TOsF/sc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{sl}{
+ <-> ssub * Junicode-TOsF/sc/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-TOsF/sbx/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/semicondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{scsl}{
+ <-> ssub * Junicode-TOsF/sc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TOsF/sbx/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/semicondensed/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-sc-lgr
+
+% ---- mediumcondensed ----
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-TOsF/sbx/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{scsl}{
- <-> ssub * Junicode-TOsF/sbx/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiboldexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{sl}{
- <-> ssub * Junicode-TOsF/sbx/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/mediumcondensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiboldexpanded/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumcondensed/scit
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- sb = semibold ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-TOsF/bsx/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{it}{
+ <-> alias * Junicode-TOsF/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-TOsF/bsx/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{n}{
+ <-> alias * Junicode-TOsF/sb/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-TOsF/bsx/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{scit}{
+ <-> alias * Junicode-TOsF/sb/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-TOsF/bsx/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{sc}{
+ <-> alias * Junicode-TOsF/sb/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{scsl}{
- <-> ssub * Junicode-TOsF/bsx/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{sl}{
+ <-> ssub * Junicode-TOsF/sb/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/boldsemiexpanded/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{sl}{
+ <-> ssub * Junicode-TOsF/semibold/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bsx}{sl}{
- <-> ssub * Junicode-TOsF/bsx/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{scsl}{
+ <-> ssub * Junicode-TOsF/sb/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/boldsemiexpanded/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{scsl}{
+ <-> ssub * Junicode-TOsF/semibold/scit
}{}
-% ---- lc = lightcondensed ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{n}{
- <-> alias * Junicode-TOsF/lc/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sbx/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{sc}{
- <-> alias * Junicode-TOsF/lc/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sbx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{it}{
- <-> alias * Junicode-TOsF/lc/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TOsF/sbx/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{scit}{
- <-> alias * Junicode-TOsF/lc/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TOsF/sbx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{scsl}{
- <-> ssub * Junicode-TOsF/lc/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{sl}{
+ <-> ssub * Junicode-TOsF/sbx/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-TOsF/lightcondensed/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiboldexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lc}{sl}{
- <-> ssub * Junicode-TOsF/lc/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{sbx}{scsl}{
+ <-> ssub * Junicode-TOsF/sbx/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightcondensed/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiboldexpanded/scit
}{}
-% ---- sc = semicondensed ----
+% ---- c = condensed ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{scit}{
- <-> alias * Junicode-TOsF/sc/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{it}{
+ <-> alias * Junicode-TOsF/c/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{it}{
- <-> alias * Junicode-TOsF/sc/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{scit}{
+ <-> alias * Junicode-TOsF/c/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{sc}{
- <-> alias * Junicode-TOsF/sc/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{n}{
+ <-> alias * Junicode-TOsF/c/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{n}{
- <-> alias * Junicode-TOsF/sc/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{sc}{
+ <-> alias * Junicode-TOsF/c/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{scsl}{
- <-> ssub * Junicode-TOsF/sc/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{c}{sl}{
+ <-> ssub * Junicode-TOsF/c/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/semicondensed/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{sl}{
+ <-> ssub * Junicode-TOsF/condensed/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sc}{sl}{
- <-> ssub * Junicode-TOsF/sc/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{c}{scsl}{
+ <-> ssub * Junicode-TOsF/c/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semicondensed}{sl}{
- <-> ssub * Junicode-TOsF/semicondensed/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{condensed}{scsl}{
+ <-> ssub * Junicode-TOsF/condensed/scit
}{}
-% ---- sb = semibold ----
+% ---- mediumexpanded ----
-\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{n}{
- <-> alias * Junicode-TOsF/sb/n
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{sc}{
- <-> alias * Junicode-TOsF/sb/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumexpanded/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{it}{
- <-> alias * Junicode-TOsF/sb/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumexpanded/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-sc-lgr
+
+% ---- lsc = lightsemicondensed ----
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{scit}{
- <-> alias * Junicode-TOsF/sb/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TOsF/lsc/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{scsl}{
- <-> ssub * Junicode-TOsF/sb/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{scsl}{
- <-> ssub * Junicode-TOsF/semibold/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-TOsF/lsc/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{sb}{sl}{
- <-> ssub * Junicode-TOsF/sb/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{semibold}{sl}{
- <-> ssub * Junicode-TOsF/semibold/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TOsF/lsc/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tosf-sc-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-TOsF/lsc/sc
+}{}
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{sl}{
+ <-> ssub * Junicode-TOsF/lsc/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightsemicondensed/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{lsc}{scsl}{
+ <-> ssub * Junicode-TOsF/lsc/scit
+}{}
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/lightsemicondensed/scit
}{}
% ---- b = bold ----
+\DeclareFontShape{LGR}{Junicode-TOsF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-tosf-sc-lgr
+}{}
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{bold}{sc}{
+ <-> alias * Junicode-TOsF/b/sc
+}{}
+
\DeclareFontShape{LGR}{Junicode-TOsF}{b}{it}{
<-> \Junicode@@scale Junicode-BoldItalic-tosf-lgr
}{}
@@ -817,12 +801,12 @@
<-> alias * Junicode-TOsF/b/n
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{b}{sl}{
+ <-> ssub * Junicode-TOsF/b/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bold}{sc}{
- <-> alias * Junicode-TOsF/b/sc
+\DeclareFontShape{LGR}{Junicode-TOsF}{bold}{sl}{
+ <-> ssub * Junicode-TOsF/bold/it
}{}
\DeclareFontShape{LGR}{Junicode-TOsF}{b}{scsl}{
@@ -833,39 +817,55 @@
<-> ssub * Junicode-TOsF/bold/scit
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{b}{sl}{
- <-> ssub * Junicode-TOsF/b/it
+
+% ---- x = expanded ----
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{bold}{sl}{
- <-> ssub * Junicode-TOsF/bold/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{scit}{
+ <-> alias * Junicode-TOsF/x/scit
}{}
+\DeclareFontShape{LGR}{Junicode-TOsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-tosf-lgr
+}{}
-% ---- mediumcondensed ----
+\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{n}{
+ <-> alias * Junicode-TOsF/x/n
+}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tosf-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{it}{
+ <-> alias * Junicode-TOsF/x/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-tosf-sc-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-tosf-sc-lgr
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tosf-lgr
+\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{sc}{
+ <-> alias * Junicode-TOsF/x/sc
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-TOsF/mediumcondensed/scit
+\DeclareFontShape{LGR}{Junicode-TOsF}{x}{sl}{
+ <-> ssub * Junicode-TOsF/x/it
}{}
-\DeclareFontShape{LGR}{Junicode-TOsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TOsF/mediumcondensed/it
+\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{sl}{
+ <-> ssub * Junicode-TOsF/expanded/it
+}{}
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{x}{scsl}{
+ <-> ssub * Junicode-TOsF/x/scit
+}{}
+
+\DeclareFontShape{LGR}{Junicode-TOsF}{expanded}{scsl}{
+ <-> ssub * Junicode-TOsF/expanded/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-Inf.fd b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-Inf.fd
index ba4320e2d53..b442772ef0e 100644
--- a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-Inf.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-Inf.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LY1Junicode-Inf.fd}
- [2024/06/03 (autoinst) Font definitions for LY1/Junicode-Inf.]
+ [2024/07/21 (autoinst) Font definitions for LY1/Junicode-Inf.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,72 +20,57 @@
\DeclareFontFamily{LY1}{Junicode-Inf}{}
-% ---- mediumcondensed ----
-
-\DeclareFontShape{LY1}{Junicode-Inf}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-inf-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Inf}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-inf-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Inf}{mediumcondensed}{sl}{
- <-> ssub * Junicode-Inf/mediumcondensed/it
-}{}
-
-
-% ---- b = bold ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-Inf}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{bold}{n}{
- <-> alias * Junicode-Inf/b/n
+\DeclareFontShape{LY1}{Junicode-Inf}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-Inf/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{bold}{it}{
- <-> alias * Junicode-Inf/b/it
+\DeclareFontShape{LY1}{Junicode-Inf}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-Inf/bsx/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{b}{sl}{
- <-> ssub * Junicode-Inf/b/it
+\DeclareFontShape{LY1}{Junicode-Inf}{bsx}{sl}{
+ <-> ssub * Junicode-Inf/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{bold}{sl}{
- <-> ssub * Junicode-Inf/bold/it
+\DeclareFontShape{LY1}{Junicode-Inf}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/boldsemiexpanded/it
}{}
-% ---- sb = semibold ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-Inf}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semibold}{it}{
- <-> alias * Junicode-Inf/sb/it
+\DeclareFontShape{LY1}{Junicode-Inf}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-Inf/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semibold}{n}{
- <-> alias * Junicode-Inf/sb/n
+\DeclareFontShape{LY1}{Junicode-Inf}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-Inf/sbsx/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{sb}{sl}{
- <-> ssub * Junicode-Inf/sb/it
+\DeclareFontShape{LY1}{Junicode-Inf}{sbsx}{sl}{
+ <-> ssub * Junicode-Inf/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semibold}{sl}{
- <-> ssub * Junicode-Inf/semibold/it
+\DeclareFontShape{LY1}{Junicode-Inf}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiboldsemiexpanded/it
}{}
@@ -116,84 +101,99 @@
}{}
-% ---- lc = lightcondensed ----
+% ---- mediumcondensed ----
-\DeclareFontShape{LY1}{Junicode-Inf}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{lightcondensed}{n}{
- <-> alias * Junicode-Inf/lc/n
+\DeclareFontShape{LY1}{Junicode-Inf}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-Inf/mediumcondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{lightcondensed}{it}{
- <-> alias * Junicode-Inf/lc/it
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{LY1}{Junicode-Inf}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{lc}{sl}{
- <-> ssub * Junicode-Inf/lc/it
+\DeclareFontShape{LY1}{Junicode-Inf}{semibold}{it}{
+ <-> alias * Junicode-Inf/sb/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{lightcondensed}{sl}{
- <-> ssub * Junicode-Inf/lightcondensed/it
+\DeclareFontShape{LY1}{Junicode-Inf}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-inf-ly1
}{}
+\DeclareFontShape{LY1}{Junicode-Inf}{semibold}{n}{
+ <-> alias * Junicode-Inf/sb/n
+}{}
-% ---- bsx = boldsemiexpanded ----
+\DeclareFontShape{LY1}{Junicode-Inf}{sb}{sl}{
+ <-> ssub * Junicode-Inf/sb/it
+}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{semibold}{sl}{
+ <-> ssub * Junicode-Inf/semibold/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{boldsemiexpanded}{it}{
- <-> alias * Junicode-Inf/bsx/it
+
+% ---- l = light ----
+
+\DeclareFontShape{LY1}{Junicode-Inf}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{light}{n}{
+ <-> alias * Junicode-Inf/l/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{boldsemiexpanded}{n}{
- <-> alias * Junicode-Inf/bsx/n
+\DeclareFontShape{LY1}{Junicode-Inf}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{bsx}{sl}{
- <-> ssub * Junicode-Inf/bsx/it
+\DeclareFontShape{LY1}{Junicode-Inf}{light}{it}{
+ <-> alias * Junicode-Inf/l/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/boldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-Inf}{l}{sl}{
+ <-> ssub * Junicode-Inf/l/it
}{}
+\DeclareFontShape{LY1}{Junicode-Inf}{light}{sl}{
+ <-> ssub * Junicode-Inf/light/it
+}{}
-% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LY1}{Junicode-Inf}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-inf-ly1
+% ---- sx = semiexpanded ----
+
+\DeclareFontShape{LY1}{Junicode-Inf}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semiboldexpanded}{it}{
- <-> alias * Junicode-Inf/sbx/it
+\DeclareFontShape{LY1}{Junicode-Inf}{semiexpanded}{n}{
+ <-> alias * Junicode-Inf/sx/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semiboldexpanded}{n}{
- <-> alias * Junicode-Inf/sbx/n
+\DeclareFontShape{LY1}{Junicode-Inf}{semiexpanded}{it}{
+ <-> alias * Junicode-Inf/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{sbx}{sl}{
- <-> ssub * Junicode-Inf/sbx/it
+\DeclareFontShape{LY1}{Junicode-Inf}{sx}{sl}{
+ <-> ssub * Junicode-Inf/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiboldexpanded/it
+\DeclareFontShape{LY1}{Junicode-Inf}{semiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiexpanded/it
}{}
@@ -212,154 +212,134 @@
}{}
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-Inf}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-inf-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Inf}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-inf-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Inf}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/mediumsemiexpanded/it
-}{}
-
-
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LY1}{Junicode-Inf}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-Inf/sbsx/it
+\DeclareFontShape{LY1}{Junicode-Inf}{lightcondensed}{it}{
+ <-> alias * Junicode-Inf/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-Inf/sbsx/n
+\DeclareFontShape{LY1}{Junicode-Inf}{lightcondensed}{n}{
+ <-> alias * Junicode-Inf/lc/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{sbsx}{sl}{
- <-> ssub * Junicode-Inf/sbsx/it
+\DeclareFontShape{LY1}{Junicode-Inf}{lc}{sl}{
+ <-> ssub * Junicode-Inf/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiboldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-Inf}{lightcondensed}{sl}{
+ <-> ssub * Junicode-Inf/lightcondensed/it
}{}
-% ---- mediumexpanded ----
+% ---- medium ----
-\DeclareFontShape{LY1}{Junicode-Inf}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{mediumexpanded}{sl}{
- <-> ssub * Junicode-Inf/mediumexpanded/it
+\DeclareFontShape{LY1}{Junicode-Inf}{medium}{sl}{
+ <-> ssub * Junicode-Inf/medium/it
}{}
-% ---- sx = semiexpanded ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LY1}{Junicode-Inf}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semiexpanded}{n}{
- <-> alias * Junicode-Inf/sx/n
+\DeclareFontShape{LY1}{Junicode-Inf}{boldexpanded}{n}{
+ <-> alias * Junicode-Inf/bx/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semiexpanded}{it}{
- <-> alias * Junicode-Inf/sx/it
+\DeclareFontShape{LY1}{Junicode-Inf}{boldexpanded}{it}{
+ <-> alias * Junicode-Inf/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{sx}{sl}{
- <-> ssub * Junicode-Inf/sx/it
+\DeclareFontShape{LY1}{Junicode-Inf}{bx}{sl}{
+ <-> ssub * Junicode-Inf/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{semiexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiexpanded/it
+\DeclareFontShape{LY1}{Junicode-Inf}{boldexpanded}{sl}{
+ <-> ssub * Junicode-Inf/boldexpanded/it
}{}
-% ---- x = expanded ----
+% ---- m = regular ----
-\DeclareFontShape{LY1}{Junicode-Inf}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{expanded}{it}{
- <-> alias * Junicode-Inf/x/it
+\DeclareFontShape{LY1}{Junicode-Inf}{regular}{n}{
+ <-> alias * Junicode-Inf/m/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{expanded}{n}{
- <-> alias * Junicode-Inf/x/n
+\DeclareFontShape{LY1}{Junicode-Inf}{regular}{it}{
+ <-> alias * Junicode-Inf/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{x}{sl}{
- <-> ssub * Junicode-Inf/x/it
+\DeclareFontShape{LY1}{Junicode-Inf}{m}{sl}{
+ <-> ssub * Junicode-Inf/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{expanded}{sl}{
- <-> ssub * Junicode-Inf/expanded/it
+\DeclareFontShape{LY1}{Junicode-Inf}{regular}{sl}{
+ <-> ssub * Junicode-Inf/regular/it
}{}
-% ---- c = condensed ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-Inf}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{condensed}{it}{
- <-> alias * Junicode-Inf/c/it
+\DeclareFontShape{LY1}{Junicode-Inf}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/mediumsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{condensed}{n}{
- <-> alias * Junicode-Inf/c/n
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{LY1}{Junicode-Inf}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{c}{sl}{
- <-> ssub * Junicode-Inf/c/it
+\DeclareFontShape{LY1}{Junicode-Inf}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{condensed}{sl}{
- <-> ssub * Junicode-Inf/condensed/it
+\DeclareFontShape{LY1}{Junicode-Inf}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-Inf/mediumexpanded/it
}{}
% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{LY1}{Junicode-Inf}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-inf-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Inf}{lightsemicondensed}{it}{
- <-> alias * Junicode-Inf/lsc/it
-}{}
-
\DeclareFontShape{LY1}{Junicode-Inf}{lsc}{n}{
<-> \Junicode@@scale Junicode-SmCondLight-inf-ly1
}{}
@@ -368,6 +348,14 @@
<-> alias * Junicode-Inf/lsc/n
}{}
+\DeclareFontShape{LY1}{Junicode-Inf}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-inf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Junicode-Inf}{lightsemicondensed}{it}{
+ <-> alias * Junicode-Inf/lsc/it
+}{}
+
\DeclareFontShape{LY1}{Junicode-Inf}{lsc}{sl}{
<-> ssub * Junicode-Inf/lsc/it
}{}
@@ -377,99 +365,111 @@
}{}
-% ---- medium ----
+% ---- b = bold ----
-\DeclareFontShape{LY1}{Junicode-Inf}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{bold}{n}{
+ <-> alias * Junicode-Inf/b/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{medium}{sl}{
- <-> ssub * Junicode-Inf/medium/it
+\DeclareFontShape{LY1}{Junicode-Inf}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-inf-ly1
}{}
+\DeclareFontShape{LY1}{Junicode-Inf}{bold}{it}{
+ <-> alias * Junicode-Inf/b/it
+}{}
-% ---- m = regular ----
+\DeclareFontShape{LY1}{Junicode-Inf}{b}{sl}{
+ <-> ssub * Junicode-Inf/b/it
+}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{bold}{sl}{
+ <-> ssub * Junicode-Inf/bold/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{regular}{n}{
- <-> alias * Junicode-Inf/m/n
+
+% ---- x = expanded ----
+
+\DeclareFontShape{LY1}{Junicode-Inf}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{expanded}{it}{
+ <-> alias * Junicode-Inf/x/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{regular}{it}{
- <-> alias * Junicode-Inf/m/it
+\DeclareFontShape{LY1}{Junicode-Inf}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{m}{sl}{
- <-> ssub * Junicode-Inf/m/it
+\DeclareFontShape{LY1}{Junicode-Inf}{expanded}{n}{
+ <-> alias * Junicode-Inf/x/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{regular}{sl}{
- <-> ssub * Junicode-Inf/regular/it
+\DeclareFontShape{LY1}{Junicode-Inf}{x}{sl}{
+ <-> ssub * Junicode-Inf/x/it
}{}
+\DeclareFontShape{LY1}{Junicode-Inf}{expanded}{sl}{
+ <-> ssub * Junicode-Inf/expanded/it
+}{}
-% ---- bx = boldexpanded ----
-\DeclareFontShape{LY1}{Junicode-Inf}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-inf-ly1
+% ---- sbx = semiboldexpanded ----
+
+\DeclareFontShape{LY1}{Junicode-Inf}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{boldexpanded}{it}{
- <-> alias * Junicode-Inf/bx/it
+\DeclareFontShape{LY1}{Junicode-Inf}{semiboldexpanded}{it}{
+ <-> alias * Junicode-Inf/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{boldexpanded}{n}{
- <-> alias * Junicode-Inf/bx/n
+\DeclareFontShape{LY1}{Junicode-Inf}{semiboldexpanded}{n}{
+ <-> alias * Junicode-Inf/sbx/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{bx}{sl}{
- <-> ssub * Junicode-Inf/bx/it
+\DeclareFontShape{LY1}{Junicode-Inf}{sbx}{sl}{
+ <-> ssub * Junicode-Inf/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{boldexpanded}{sl}{
- <-> ssub * Junicode-Inf/boldexpanded/it
+\DeclareFontShape{LY1}{Junicode-Inf}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiboldexpanded/it
}{}
-% ---- l = light ----
+% ---- c = condensed ----
-\DeclareFontShape{LY1}{Junicode-Inf}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{light}{n}{
- <-> alias * Junicode-Inf/l/n
+\DeclareFontShape{LY1}{Junicode-Inf}{condensed}{n}{
+ <-> alias * Junicode-Inf/c/n
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-inf-ly1
+\DeclareFontShape{LY1}{Junicode-Inf}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-inf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{light}{it}{
- <-> alias * Junicode-Inf/l/it
+\DeclareFontShape{LY1}{Junicode-Inf}{condensed}{it}{
+ <-> alias * Junicode-Inf/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{l}{sl}{
- <-> ssub * Junicode-Inf/l/it
+\DeclareFontShape{LY1}{Junicode-Inf}{c}{sl}{
+ <-> ssub * Junicode-Inf/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-Inf}{light}{sl}{
- <-> ssub * Junicode-Inf/light/it
+\DeclareFontShape{LY1}{Junicode-Inf}{condensed}{sl}{
+ <-> ssub * Junicode-Inf/condensed/it
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-LF.fd b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-LF.fd
index 86852180b23..a225169dea5 100644
--- a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-LF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LY1Junicode-LF.fd}
- [2024/06/03 (autoinst) Font definitions for LY1/Junicode-LF.]
+ [2024/07/21 (autoinst) Font definitions for LY1/Junicode-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,312 +20,285 @@
\DeclareFontFamily{LY1}{Junicode-LF}{}
-% ---- mediumexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{condensed}{sc}{
+ <-> alias * Junicode-LF/c/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{condensed}{scit}{
+ <-> alias * Junicode-LF/c/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-LF/mediumexpanded/scit
+\DeclareFontShape{LY1}{Junicode-LF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumexpanded/it
+\DeclareFontShape{LY1}{Junicode-LF}{condensed}{n}{
+ <-> alias * Junicode-LF/c/n
}{}
-
-% ---- sbsx = semiboldsemiexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-LF/sbsx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{condensed}{it}{
+ <-> alias * Junicode-LF/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{c}{sl}{
+ <-> ssub * Junicode-LF/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-LF/sbsx/it
+\DeclareFontShape{LY1}{Junicode-LF}{condensed}{sl}{
+ <-> ssub * Junicode-LF/condensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{c}{scsl}{
+ <-> ssub * Junicode-LF/c/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-LF/sbsx/sc
+\DeclareFontShape{LY1}{Junicode-LF}{condensed}{scsl}{
+ <-> ssub * Junicode-LF/condensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-lf-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-LF/sbsx/n
-}{}
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{scsl}{
- <-> ssub * Junicode-LF/sbsx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiboldsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-LF/sbx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{sl}{
- <-> ssub * Junicode-LF/sbsx/it
+\DeclareFontShape{LY1}{Junicode-LF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiboldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-LF/sbx/n
}{}
+\DeclareFontShape{LY1}{Junicode-LF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-sc-ly1
+}{}
-% ---- mediumsemiexpanded ----
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-LF/sbx/scit
+}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-LF/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sbx}{sl}{
+ <-> ssub * Junicode-LF/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiboldexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/mediumsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-LF}{sbx}{scsl}{
+ <-> ssub * Junicode-LF/sbx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiboldexpanded/scit
}{}
-% ---- x = expanded ----
+% ---- b = bold ----
-\DeclareFontShape{LY1}{Junicode-LF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{expanded}{it}{
- <-> alias * Junicode-LF/x/it
+\DeclareFontShape{LY1}{Junicode-LF}{bold}{it}{
+ <-> alias * Junicode-LF/b/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{expanded}{scit}{
- <-> alias * Junicode-LF/x/scit
+\DeclareFontShape{LY1}{Junicode-LF}{bold}{scit}{
+ <-> alias * Junicode-LF/b/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{expanded}{n}{
- <-> alias * Junicode-LF/x/n
+\DeclareFontShape{LY1}{Junicode-LF}{bold}{n}{
+ <-> alias * Junicode-LF/b/n
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{expanded}{sc}{
- <-> alias * Junicode-LF/x/sc
+\DeclareFontShape{LY1}{Junicode-LF}{bold}{sc}{
+ <-> alias * Junicode-LF/b/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{x}{scsl}{
- <-> ssub * Junicode-LF/x/scit
+\DeclareFontShape{LY1}{Junicode-LF}{b}{sl}{
+ <-> ssub * Junicode-LF/b/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{expanded}{scsl}{
- <-> ssub * Junicode-LF/expanded/scit
+\DeclareFontShape{LY1}{Junicode-LF}{bold}{sl}{
+ <-> ssub * Junicode-LF/bold/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{x}{sl}{
- <-> ssub * Junicode-LF/x/it
+\DeclareFontShape{LY1}{Junicode-LF}{b}{scsl}{
+ <-> ssub * Junicode-LF/b/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{expanded}{sl}{
- <-> ssub * Junicode-LF/expanded/it
+\DeclareFontShape{LY1}{Junicode-LF}{bold}{scsl}{
+ <-> ssub * Junicode-LF/bold/scit
}{}
-% ---- c = condensed ----
-
-\DeclareFontShape{LY1}{Junicode-LF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-LF}{condensed}{scit}{
- <-> alias * Junicode-LF/c/scit
-}{}
+% ---- x = expanded ----
-\DeclareFontShape{LY1}{Junicode-LF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{condensed}{it}{
- <-> alias * Junicode-LF/c/it
+\DeclareFontShape{LY1}{Junicode-LF}{expanded}{sc}{
+ <-> alias * Junicode-LF/x/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{condensed}{sc}{
- <-> alias * Junicode-LF/c/sc
+\DeclareFontShape{LY1}{Junicode-LF}{expanded}{scit}{
+ <-> alias * Junicode-LF/x/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{condensed}{n}{
- <-> alias * Junicode-LF/c/n
+\DeclareFontShape{LY1}{Junicode-LF}{expanded}{n}{
+ <-> alias * Junicode-LF/x/n
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{c}{scsl}{
- <-> ssub * Junicode-LF/c/scit
+\DeclareFontShape{LY1}{Junicode-LF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{condensed}{scsl}{
- <-> ssub * Junicode-LF/condensed/scit
+\DeclareFontShape{LY1}{Junicode-LF}{expanded}{it}{
+ <-> alias * Junicode-LF/x/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{c}{sl}{
- <-> ssub * Junicode-LF/c/it
+\DeclareFontShape{LY1}{Junicode-LF}{x}{sl}{
+ <-> ssub * Junicode-LF/x/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{condensed}{sl}{
- <-> ssub * Junicode-LF/condensed/it
+\DeclareFontShape{LY1}{Junicode-LF}{expanded}{sl}{
+ <-> ssub * Junicode-LF/expanded/it
}{}
-
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-LF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{x}{scsl}{
+ <-> ssub * Junicode-LF/x/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{sc}{
- <-> alias * Junicode-LF/sx/sc
+\DeclareFontShape{LY1}{Junicode-LF}{expanded}{scsl}{
+ <-> ssub * Junicode-LF/expanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-lf-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{n}{
- <-> alias * Junicode-LF/sx/n
-}{}
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{LY1}{Junicode-LF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{scit}{
- <-> alias * Junicode-LF/sx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-LF/lsc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{it}{
- <-> alias * Junicode-LF/sx/it
+\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-LF/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sx}{scsl}{
- <-> ssub * Junicode-LF/sx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-LF/lsc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sx}{sl}{
- <-> ssub * Junicode-LF/sx/it
+\DeclareFontShape{LY1}{Junicode-LF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiexpanded/it
+\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-LF/lsc/n
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{LY1}{Junicode-LF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{lsc}{sl}{
+ <-> ssub * Junicode-LF/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{regular}{n}{
- <-> alias * Junicode-LF/m/n
+\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-LF/lightsemicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{lsc}{scsl}{
+ <-> ssub * Junicode-LF/lsc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{regular}{sc}{
- <-> alias * Junicode-LF/m/sc
+\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-LF/lightsemicondensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-lf-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-LF}{regular}{it}{
- <-> alias * Junicode-LF/m/it
-}{}
+% ---- mediumexpanded ----
-\DeclareFontShape{LY1}{Junicode-LF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{regular}{scit}{
- <-> alias * Junicode-LF/m/scit
+\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{m}{scsl}{
- <-> ssub * Junicode-LF/m/scit
+\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{regular}{scsl}{
- <-> ssub * Junicode-LF/regular/scit
+\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{m}{sl}{
- <-> ssub * Junicode-LF/m/it
+\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{regular}{sl}{
- <-> ssub * Junicode-LF/regular/it
+\DeclareFontShape{LY1}{Junicode-LF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-LF/mediumexpanded/scit
}{}
@@ -347,358 +320,404 @@
<-> \Junicode@@scale Junicode-Medium-lf-sc-ly1
}{}
+\DeclareFontShape{LY1}{Junicode-LF}{medium}{sl}{
+ <-> ssub * Junicode-LF/medium/it
+}{}
+
\DeclareFontShape{LY1}{Junicode-LF}{medium}{scsl}{
<-> ssub * Junicode-LF/medium/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{medium}{sl}{
- <-> ssub * Junicode-LF/medium/it
+
+% ---- bx = boldexpanded ----
+
+\DeclareFontShape{LY1}{Junicode-LF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-ly1
}{}
+\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{it}{
+ <-> alias * Junicode-LF/bx/it
+}{}
-% ---- lsc = lightsemicondensed ----
+\DeclareFontShape{LY1}{Junicode-LF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-lf-ly1
+}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{n}{
+ <-> alias * Junicode-LF/bx/n
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{n}{
- <-> alias * Junicode-LF/lsc/n
+\DeclareFontShape{LY1}{Junicode-LF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{scit}{
+ <-> alias * Junicode-LF/bx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-LF/lsc/sc
+\DeclareFontShape{LY1}{Junicode-LF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{sc}{
+ <-> alias * Junicode-LF/bx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{it}{
- <-> alias * Junicode-LF/lsc/it
+\DeclareFontShape{LY1}{Junicode-LF}{bx}{sl}{
+ <-> ssub * Junicode-LF/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-LF/boldexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-LF/lsc/scit
+\DeclareFontShape{LY1}{Junicode-LF}{bx}{scsl}{
+ <-> ssub * Junicode-LF/bx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lsc}{scsl}{
- <-> ssub * Junicode-LF/lsc/scit
+\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-LF/boldexpanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-LF/lightsemicondensed/scit
+
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lsc}{sl}{
- <-> ssub * Junicode-LF/lsc/it
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-LF/lightsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-ly1
}{}
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-lf-sc-ly1
+}{}
-% ---- l = light ----
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumsemiexpanded/it
+}{}
-\DeclareFontShape{LY1}{Junicode-LF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/mediumsemiexpanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{light}{sc}{
- <-> alias * Junicode-LF/l/sc
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{Junicode-LF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{regular}{sc}{
+ <-> alias * Junicode-LF/m/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{light}{n}{
- <-> alias * Junicode-LF/l/n
+\DeclareFontShape{LY1}{Junicode-LF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{regular}{it}{
+ <-> alias * Junicode-LF/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{light}{scit}{
- <-> alias * Junicode-LF/l/scit
+\DeclareFontShape{LY1}{Junicode-LF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{regular}{scit}{
+ <-> alias * Junicode-LF/m/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{light}{it}{
- <-> alias * Junicode-LF/l/it
+\DeclareFontShape{LY1}{Junicode-LF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{l}{scsl}{
- <-> ssub * Junicode-LF/l/scit
+\DeclareFontShape{LY1}{Junicode-LF}{regular}{n}{
+ <-> alias * Junicode-LF/m/n
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{light}{scsl}{
- <-> ssub * Junicode-LF/light/scit
+\DeclareFontShape{LY1}{Junicode-LF}{m}{sl}{
+ <-> ssub * Junicode-LF/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{l}{sl}{
- <-> ssub * Junicode-LF/l/it
+\DeclareFontShape{LY1}{Junicode-LF}{regular}{sl}{
+ <-> ssub * Junicode-LF/regular/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{light}{sl}{
- <-> ssub * Junicode-LF/light/it
+\DeclareFontShape{LY1}{Junicode-LF}{m}{scsl}{
+ <-> ssub * Junicode-LF/m/scit
}{}
+\DeclareFontShape{LY1}{Junicode-LF}{regular}{scsl}{
+ <-> ssub * Junicode-LF/regular/scit
+}{}
-% ---- bx = boldexpanded ----
-\DeclareFontShape{LY1}{Junicode-LF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-sc-ly1
+% ---- lc = lightcondensed ----
+
+\DeclareFontShape{LY1}{Junicode-LF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{scit}{
- <-> alias * Junicode-LF/bx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{sc}{
+ <-> alias * Junicode-LF/lc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{it}{
- <-> alias * Junicode-LF/bx/it
+\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{it}{
+ <-> alias * Junicode-LF/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{sc}{
- <-> alias * Junicode-LF/bx/sc
+\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{n}{
+ <-> alias * Junicode-LF/lc/n
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{n}{
- <-> alias * Junicode-LF/bx/n
+\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{scit}{
+ <-> alias * Junicode-LF/lc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bx}{scsl}{
- <-> ssub * Junicode-LF/bx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{lc}{sl}{
+ <-> ssub * Junicode-LF/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-LF/boldexpanded/scit
+\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-LF/lightcondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bx}{sl}{
- <-> ssub * Junicode-LF/bx/it
+\DeclareFontShape{LY1}{Junicode-LF}{lc}{scsl}{
+ <-> ssub * Junicode-LF/lc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldexpanded}{sl}{
- <-> ssub * Junicode-LF/boldexpanded/it
+\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-LF/lightcondensed/scit
}{}
-% ---- mediumcondensed ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-LF/mediumcondensed/scit
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-LF/mediumsemicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-LF/mediumcondensed/it
+\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-LF/mediumsemicondensed/scit
}{}
-% ---- b = bold ----
+% ---- l = light ----
-\DeclareFontShape{LY1}{Junicode-LF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bold}{sc}{
- <-> alias * Junicode-LF/b/sc
+\DeclareFontShape{LY1}{Junicode-LF}{light}{sc}{
+ <-> alias * Junicode-LF/l/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bold}{n}{
- <-> alias * Junicode-LF/b/n
+\DeclareFontShape{LY1}{Junicode-LF}{light}{it}{
+ <-> alias * Junicode-LF/l/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bold}{scit}{
- <-> alias * Junicode-LF/b/scit
+\DeclareFontShape{LY1}{Junicode-LF}{light}{n}{
+ <-> alias * Junicode-LF/l/n
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bold}{it}{
- <-> alias * Junicode-LF/b/it
+\DeclareFontShape{LY1}{Junicode-LF}{light}{scit}{
+ <-> alias * Junicode-LF/l/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{b}{scsl}{
- <-> ssub * Junicode-LF/b/scit
+\DeclareFontShape{LY1}{Junicode-LF}{l}{sl}{
+ <-> ssub * Junicode-LF/l/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bold}{scsl}{
- <-> ssub * Junicode-LF/bold/scit
+\DeclareFontShape{LY1}{Junicode-LF}{light}{sl}{
+ <-> ssub * Junicode-LF/light/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{b}{sl}{
- <-> ssub * Junicode-LF/b/it
+\DeclareFontShape{LY1}{Junicode-LF}{l}{scsl}{
+ <-> ssub * Junicode-LF/l/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bold}{sl}{
- <-> ssub * Junicode-LF/bold/it
+\DeclareFontShape{LY1}{Junicode-LF}{light}{scsl}{
+ <-> ssub * Junicode-LF/light/scit
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{LY1}{Junicode-LF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-LF/bsx/it
+\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{sc}{
+ <-> alias * Junicode-LF/sx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-LF/bsx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{scit}{
+ <-> alias * Junicode-LF/sx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-LF/bsx/n
+\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{n}{
+ <-> alias * Junicode-LF/sx/n
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-LF/bsx/sc
+\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{it}{
+ <-> alias * Junicode-LF/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bsx}{scsl}{
- <-> ssub * Junicode-LF/bsx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{sx}{sl}{
+ <-> ssub * Junicode-LF/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/boldsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{bsx}{sl}{
- <-> ssub * Junicode-LF/bsx/it
+\DeclareFontShape{LY1}{Junicode-LF}{sx}{scsl}{
+ <-> ssub * Junicode-LF/sx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/boldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-LF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiexpanded/scit
}{}
-% ---- lc = lightcondensed ----
+% ---- mediumcondensed ----
-\DeclareFontShape{LY1}{Junicode-LF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{scit}{
- <-> alias * Junicode-LF/lc/scit
+\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{it}{
- <-> alias * Junicode-LF/lc/it
+\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-LF/mediumcondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{sc}{
- <-> alias * Junicode-LF/lc/sc
+\DeclareFontShape{LY1}{Junicode-LF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-LF/mediumcondensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-lf-ly1
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{LY1}{Junicode-LF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{n}{
- <-> alias * Junicode-LF/lc/n
+\DeclareFontShape{LY1}{Junicode-LF}{semibold}{it}{
+ <-> alias * Junicode-LF/sb/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lc}{scsl}{
- <-> ssub * Junicode-LF/lc/scit
+\DeclareFontShape{LY1}{Junicode-LF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-LF/lightcondensed/scit
+\DeclareFontShape{LY1}{Junicode-LF}{semibold}{scit}{
+ <-> alias * Junicode-LF/sb/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lc}{sl}{
- <-> ssub * Junicode-LF/lc/it
+\DeclareFontShape{LY1}{Junicode-LF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{lightcondensed}{sl}{
- <-> ssub * Junicode-LF/lightcondensed/it
+\DeclareFontShape{LY1}{Junicode-LF}{semibold}{n}{
+ <-> alias * Junicode-LF/sb/n
}{}
+\DeclareFontShape{LY1}{Junicode-LF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-lf-sc-ly1
+}{}
-% ---- sc = semicondensed ----
+\DeclareFontShape{LY1}{Junicode-LF}{semibold}{sc}{
+ <-> alias * Junicode-LF/sb/sc
+}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sb}{sl}{
+ <-> ssub * Junicode-LF/sb/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semicondensed}{n}{
- <-> alias * Junicode-LF/sc/n
+\DeclareFontShape{LY1}{Junicode-LF}{semibold}{sl}{
+ <-> ssub * Junicode-LF/semibold/it
+}{}
+
+\DeclareFontShape{LY1}{Junicode-LF}{sb}{scsl}{
+ <-> ssub * Junicode-LF/sb/scit
}{}
+\DeclareFontShape{LY1}{Junicode-LF}{semibold}{scsl}{
+ <-> ssub * Junicode-LF/semibold/scit
+}{}
+
+
+% ---- sc = semicondensed ----
+
\DeclareFontShape{LY1}{Junicode-LF}{sc}{sc}{
<-> \Junicode@@scale Junicode-SmCond-lf-sc-ly1
}{}
@@ -723,12 +742,12 @@
<-> alias * Junicode-LF/sc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sc}{scsl}{
- <-> ssub * Junicode-LF/sc/scit
+\DeclareFontShape{LY1}{Junicode-LF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semicondensed}{scsl}{
- <-> ssub * Junicode-LF/semicondensed/scit
+\DeclareFontShape{LY1}{Junicode-LF}{semicondensed}{n}{
+ <-> alias * Junicode-LF/sc/n
}{}
\DeclareFontShape{LY1}{Junicode-LF}{sc}{sl}{
@@ -739,133 +758,114 @@
<-> ssub * Junicode-LF/semicondensed/it
}{}
-
-% ---- sb = semibold ----
-
-\DeclareFontShape{LY1}{Junicode-LF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-lf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-LF}{semibold}{sc}{
- <-> alias * Junicode-LF/sb/sc
-}{}
-
-\DeclareFontShape{LY1}{Junicode-LF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sc}{scsl}{
+ <-> ssub * Junicode-LF/sc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semibold}{n}{
- <-> alias * Junicode-LF/sb/n
+\DeclareFontShape{LY1}{Junicode-LF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-LF/semicondensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-lf-sc-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semibold}{scit}{
- <-> alias * Junicode-LF/sb/scit
-}{}
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-LF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semibold}{it}{
- <-> alias * Junicode-LF/sb/it
+\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-LF/bsx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sb}{scsl}{
- <-> ssub * Junicode-LF/sb/scit
+\DeclareFontShape{LY1}{Junicode-LF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semibold}{scsl}{
- <-> ssub * Junicode-LF/semibold/scit
+\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-LF/bsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sb}{sl}{
- <-> ssub * Junicode-LF/sb/it
+\DeclareFontShape{LY1}{Junicode-LF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semibold}{sl}{
- <-> ssub * Junicode-LF/semibold/it
+\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-LF/bsx/n
}{}
-
-% ---- mediumsemicondensed ----
-
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-LF/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{bsx}{sl}{
+ <-> ssub * Junicode-LF/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/boldsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-LF/mediumsemicondensed/scit
+\DeclareFontShape{LY1}{Junicode-LF}{bsx}{scsl}{
+ <-> ssub * Junicode-LF/bsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-LF/mediumsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-LF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/boldsemiexpanded/scit
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-LF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{n}{
- <-> alias * Junicode-LF/sbx/n
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-LF/sbsx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-LF/sbx/sc
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-LF/sbsx/n
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{it}{
- <-> alias * Junicode-LF/sbx/it
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-LF/sbsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-LF/sbx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-LF/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sbx}{scsl}{
- <-> ssub * Junicode-LF/sbx/scit
+\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{sl}{
+ <-> ssub * Junicode-LF/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiboldexpanded/scit
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{sbx}{sl}{
- <-> ssub * Junicode-LF/sbx/it
+\DeclareFontShape{LY1}{Junicode-LF}{sbsx}{scsl}{
+ <-> ssub * Junicode-LF/sbsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-LF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-LF/semiboldexpanded/it
+\DeclareFontShape{LY1}{Junicode-LF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiboldsemiexpanded/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-OsF.fd b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-OsF.fd
index fd942d07b1b..eb4595a4bf5 100644
--- a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-OsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LY1Junicode-OsF.fd}
- [2024/06/03 (autoinst) Font definitions for LY1/Junicode-OsF.]
+ [2024/07/21 (autoinst) Font definitions for LY1/Junicode-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,852 +20,852 @@
\DeclareFontFamily{LY1}{Junicode-OsF}{}
-% ---- medium ----
+% ---- mediumcondensed ----
-\DeclareFontShape{LY1}{Junicode-OsF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{medium}{scsl}{
- <-> ssub * Junicode-OsF/medium/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumcondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{medium}{sl}{
- <-> ssub * Junicode-OsF/medium/it
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-OsF/mediumcondensed/scit
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- sb = semibold ----
-\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-OsF/lsc/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{scit}{
+ <-> alias * Junicode-OsF/sb/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-OsF/lsc/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{n}{
+ <-> alias * Junicode-OsF/sb/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-OsF/lsc/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{it}{
+ <-> alias * Junicode-OsF/sb/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-OsF/lsc/n
+\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{sc}{
+ <-> alias * Junicode-OsF/sb/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{scsl}{
- <-> ssub * Junicode-OsF/lsc/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{sb}{sl}{
+ <-> ssub * Junicode-OsF/sb/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-OsF/lightsemicondensed/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{sl}{
+ <-> ssub * Junicode-OsF/semibold/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{sl}{
- <-> ssub * Junicode-OsF/lsc/it
+\DeclareFontShape{LY1}{Junicode-OsF}{sb}{scsl}{
+ <-> ssub * Junicode-OsF/sb/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/lightsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{scsl}{
+ <-> ssub * Junicode-OsF/semibold/scit
}{}
-% ---- m = regular ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-OsF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{regular}{sc}{
- <-> alias * Junicode-OsF/m/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-OsF/sbsx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{regular}{n}{
- <-> alias * Junicode-OsF/m/n
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-OsF/sbsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{regular}{scit}{
- <-> alias * Junicode-OsF/m/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/sbsx/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{regular}{it}{
- <-> alias * Junicode-OsF/m/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-OsF/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{m}{scsl}{
- <-> ssub * Junicode-OsF/m/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{sl}{
+ <-> ssub * Junicode-OsF/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{regular}{scsl}{
- <-> ssub * Junicode-OsF/regular/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{m}{sl}{
- <-> ssub * Junicode-OsF/m/it
+\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{scsl}{
+ <-> ssub * Junicode-OsF/sbsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{regular}{sl}{
- <-> ssub * Junicode-OsF/regular/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiboldsemiexpanded/scit
}{}
-% ---- bx = boldexpanded ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-OsF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{sc}{
- <-> alias * Junicode-OsF/bx/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-OsF/bsx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{n}{
- <-> alias * Junicode-OsF/bx/n
+\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-OsF/bsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{scit}{
- <-> alias * Junicode-OsF/bx/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/bsx/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{it}{
- <-> alias * Junicode-OsF/bx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bx}{scsl}{
- <-> ssub * Junicode-OsF/bx/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{sl}{
+ <-> ssub * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-OsF/boldexpanded/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/boldsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bx}{sl}{
- <-> ssub * Junicode-OsF/bx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{scsl}{
+ <-> ssub * Junicode-OsF/bsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{sl}{
- <-> ssub * Junicode-OsF/boldexpanded/it
+\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/boldsemiexpanded/scit
}{}
-% ---- l = light ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{LY1}{Junicode-OsF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{light}{scit}{
- <-> alias * Junicode-OsF/l/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{it}{
+ <-> alias * Junicode-OsF/sc/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{light}{it}{
- <-> alias * Junicode-OsF/l/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{scit}{
+ <-> alias * Junicode-OsF/sc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{light}{sc}{
- <-> alias * Junicode-OsF/l/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{n}{
+ <-> alias * Junicode-OsF/sc/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{light}{n}{
- <-> alias * Junicode-OsF/l/n
+\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{sc}{
+ <-> alias * Junicode-OsF/sc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{l}{scsl}{
- <-> ssub * Junicode-OsF/l/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{sc}{sl}{
+ <-> ssub * Junicode-OsF/sc/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{light}{scsl}{
- <-> ssub * Junicode-OsF/light/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{sl}{
+ <-> ssub * Junicode-OsF/semicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{l}{sl}{
- <-> ssub * Junicode-OsF/l/it
+\DeclareFontShape{LY1}{Junicode-OsF}{sc}{scsl}{
+ <-> ssub * Junicode-OsF/sc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{light}{sl}{
- <-> ssub * Junicode-OsF/light/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/semicondensed/scit
}{}
-% ---- mediumsemiexpanded ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{scit}{
+ <-> alias * Junicode-OsF/lc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{n}{
+ <-> alias * Junicode-OsF/lc/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/mediumsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{it}{
+ <-> alias * Junicode-OsF/lc/it
}{}
-
-% ---- mediumexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{sc}{
+ <-> alias * Junicode-OsF/lc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lc}{sl}{
+ <-> ssub * Junicode-OsF/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightcondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-OsF/mediumexpanded/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{lc}{scsl}{
+ <-> ssub * Junicode-OsF/lc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumexpanded/it
+\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-OsF/lightcondensed/scit
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- medium ----
-\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-OsF/sbsx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-OsF/sbsx/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{medium}{sl}{
+ <-> ssub * Junicode-OsF/medium/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/sbsx/n
+\DeclareFontShape{LY1}{Junicode-OsF}{medium}{scsl}{
+ <-> ssub * Junicode-OsF/medium/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-osf-sc-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-OsF/sbsx/sc
-}{}
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{scsl}{
- <-> ssub * Junicode-OsF/sbsx/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiboldsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{it}{
+ <-> alias * Junicode-OsF/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sbsx}{sl}{
- <-> ssub * Junicode-OsF/sbsx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiboldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{scit}{
+ <-> alias * Junicode-OsF/bx/scit
}{}
+\DeclareFontShape{LY1}{Junicode-OsF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-osf-ly1
+}{}
-% ---- c = condensed ----
+\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{n}{
+ <-> alias * Junicode-OsF/bx/n
+}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{n}{
- <-> alias * Junicode-OsF/c/n
+\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{sc}{
+ <-> alias * Junicode-OsF/bx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{bx}{sl}{
+ <-> ssub * Junicode-OsF/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{sc}{
- <-> alias * Junicode-OsF/c/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-OsF/boldexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{bx}{scsl}{
+ <-> ssub * Junicode-OsF/bx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{it}{
- <-> alias * Junicode-OsF/c/it
+\DeclareFontShape{LY1}{Junicode-OsF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/boldexpanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-osf-sc-ly1
+
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{scit}{
- <-> alias * Junicode-OsF/c/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{c}{scsl}{
- <-> ssub * Junicode-OsF/c/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{scsl}{
- <-> ssub * Junicode-OsF/condensed/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{c}{sl}{
- <-> ssub * Junicode-OsF/c/it
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{sl}{
- <-> ssub * Junicode-OsF/condensed/it
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/mediumsemiexpanded/scit
}{}
-% ---- x = expanded ----
+% ---- m = regular ----
-\DeclareFontShape{LY1}{Junicode-OsF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{it}{
- <-> alias * Junicode-OsF/x/it
+\DeclareFontShape{LY1}{Junicode-OsF}{regular}{scit}{
+ <-> alias * Junicode-OsF/m/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{scit}{
- <-> alias * Junicode-OsF/x/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{regular}{n}{
+ <-> alias * Junicode-OsF/m/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{n}{
- <-> alias * Junicode-OsF/x/n
+\DeclareFontShape{LY1}{Junicode-OsF}{regular}{it}{
+ <-> alias * Junicode-OsF/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{sc}{
- <-> alias * Junicode-OsF/x/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{regular}{sc}{
+ <-> alias * Junicode-OsF/m/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{x}{scsl}{
- <-> ssub * Junicode-OsF/x/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{m}{sl}{
+ <-> ssub * Junicode-OsF/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{scsl}{
- <-> ssub * Junicode-OsF/expanded/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{regular}{sl}{
+ <-> ssub * Junicode-OsF/regular/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{x}{sl}{
- <-> ssub * Junicode-OsF/x/it
+\DeclareFontShape{LY1}{Junicode-OsF}{m}{scsl}{
+ <-> ssub * Junicode-OsF/m/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{sl}{
- <-> ssub * Junicode-OsF/expanded/it
+\DeclareFontShape{LY1}{Junicode-OsF}{regular}{scsl}{
+ <-> ssub * Junicode-OsF/regular/scit
}{}
-% ---- sx = semiexpanded ----
+% ---- l = light ----
-\DeclareFontShape{LY1}{Junicode-OsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{it}{
- <-> alias * Junicode-OsF/sx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{light}{n}{
+ <-> alias * Junicode-OsF/l/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{scit}{
- <-> alias * Junicode-OsF/sx/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{light}{scit}{
+ <-> alias * Junicode-OsF/l/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{n}{
- <-> alias * Junicode-OsF/sx/n
+\DeclareFontShape{LY1}{Junicode-OsF}{light}{it}{
+ <-> alias * Junicode-OsF/l/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{sc}{
- <-> alias * Junicode-OsF/sx/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{light}{sc}{
+ <-> alias * Junicode-OsF/l/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sx}{scsl}{
- <-> ssub * Junicode-OsF/sx/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{l}{sl}{
+ <-> ssub * Junicode-OsF/l/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{light}{sl}{
+ <-> ssub * Junicode-OsF/light/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sx}{sl}{
- <-> ssub * Junicode-OsF/sx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{l}{scsl}{
+ <-> ssub * Junicode-OsF/l/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiexpanded/it
+\DeclareFontShape{LY1}{Junicode-OsF}{light}{scsl}{
+ <-> ssub * Junicode-OsF/light/scit
}{}
-% ---- sc = semicondensed ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{LY1}{Junicode-OsF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{it}{
- <-> alias * Junicode-OsF/sc/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{sc}{
+ <-> alias * Junicode-OsF/sx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{scit}{
- <-> alias * Junicode-OsF/sc/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{scit}{
+ <-> alias * Junicode-OsF/sx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{n}{
- <-> alias * Junicode-OsF/sc/n
+\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{n}{
+ <-> alias * Junicode-OsF/sx/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{sc}{
- <-> alias * Junicode-OsF/sc/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{it}{
+ <-> alias * Junicode-OsF/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sc}{scsl}{
- <-> ssub * Junicode-OsF/sc/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{sx}{sl}{
+ <-> ssub * Junicode-OsF/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{scsl}{
- <-> ssub * Junicode-OsF/semicondensed/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sc}{sl}{
- <-> ssub * Junicode-OsF/sc/it
+\DeclareFontShape{LY1}{Junicode-OsF}{sx}{scsl}{
+ <-> ssub * Junicode-OsF/sx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semicondensed}{sl}{
- <-> ssub * Junicode-OsF/semicondensed/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiexpanded/scit
}{}
-% ---- sb = semibold ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{LY1}{Junicode-OsF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{scit}{
- <-> alias * Junicode-OsF/sb/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{it}{
- <-> alias * Junicode-OsF/sb/it
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{sc}{
- <-> alias * Junicode-OsF/sb/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/mediumsemicondensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-osf-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{n}{
- <-> alias * Junicode-OsF/sb/n
-}{}
+% ---- b = bold ----
-\DeclareFontShape{LY1}{Junicode-OsF}{sb}{scsl}{
- <-> ssub * Junicode-OsF/sb/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{scsl}{
- <-> ssub * Junicode-OsF/semibold/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{bold}{sc}{
+ <-> alias * Junicode-OsF/b/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sb}{sl}{
- <-> ssub * Junicode-OsF/sb/it
+\DeclareFontShape{LY1}{Junicode-OsF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semibold}{sl}{
- <-> ssub * Junicode-OsF/semibold/it
+\DeclareFontShape{LY1}{Junicode-OsF}{bold}{it}{
+ <-> alias * Junicode-OsF/b/it
}{}
-
-% ---- bsx = boldsemiexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/bsx/n
+\DeclareFontShape{LY1}{Junicode-OsF}{bold}{n}{
+ <-> alias * Junicode-OsF/b/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-OsF/bsx/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{bold}{scit}{
+ <-> alias * Junicode-OsF/b/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{b}{sl}{
+ <-> ssub * Junicode-OsF/b/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-OsF/bsx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{bold}{sl}{
+ <-> ssub * Junicode-OsF/bold/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{b}{scsl}{
+ <-> ssub * Junicode-OsF/b/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-OsF/bsx/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{bold}{scsl}{
+ <-> ssub * Junicode-OsF/bold/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{scsl}{
- <-> ssub * Junicode-OsF/bsx/scit
+
+% ---- x = expanded ----
+
+\DeclareFontShape{LY1}{Junicode-OsF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/boldsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{scit}{
+ <-> alias * Junicode-OsF/x/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bsx}{sl}{
- <-> ssub * Junicode-OsF/bsx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/boldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{n}{
+ <-> alias * Junicode-OsF/x/n
}{}
+\DeclareFontShape{LY1}{Junicode-OsF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-osf-ly1
+}{}
-% ---- lc = lightcondensed ----
+\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{it}{
+ <-> alias * Junicode-OsF/x/it
+}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{scit}{
- <-> alias * Junicode-OsF/lc/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{sc}{
+ <-> alias * Junicode-OsF/x/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{x}{sl}{
+ <-> ssub * Junicode-OsF/x/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{it}{
- <-> alias * Junicode-OsF/lc/it
+\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{sl}{
+ <-> ssub * Junicode-OsF/expanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{x}{scsl}{
+ <-> ssub * Junicode-OsF/x/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{sc}{
- <-> alias * Junicode-OsF/lc/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{expanded}{scsl}{
+ <-> ssub * Junicode-OsF/expanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-osf-ly1
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{n}{
- <-> alias * Junicode-OsF/lc/n
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lc}{scsl}{
- <-> ssub * Junicode-OsF/lc/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-OsF/lightcondensed/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lc}{sl}{
- <-> ssub * Junicode-OsF/lc/it
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-OsF/lightcondensed/it
+\DeclareFontShape{LY1}{Junicode-OsF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/mediumexpanded/scit
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{it}{
- <-> alias * Junicode-OsF/sbx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-OsF/lsc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-OsF/sbx/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-OsF/sbx/n
+\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-OsF/lsc/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-OsF/sbx/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-OsF/lsc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{scsl}{
- <-> ssub * Junicode-OsF/sbx/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{sl}{
+ <-> ssub * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiboldexpanded/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightsemicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{sl}{
- <-> ssub * Junicode-OsF/sbx/it
+\DeclareFontShape{LY1}{Junicode-OsF}{lsc}{scsl}{
+ <-> ssub * Junicode-OsF/lsc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiboldexpanded/it
+\DeclareFontShape{LY1}{Junicode-OsF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/lightsemicondensed/scit
}{}
-% ---- mediumsemicondensed ----
+% ---- c = condensed ----
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{n}{
+ <-> alias * Junicode-OsF/c/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{scit}{
+ <-> alias * Junicode-OsF/c/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-OsF/mediumsemicondensed/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{it}{
+ <-> alias * Junicode-OsF/c/it
}{}
-
-% ---- mediumcondensed ----
-
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{sc}{
+ <-> alias * Junicode-OsF/c/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{c}{sl}{
+ <-> ssub * Junicode-OsF/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{sl}{
+ <-> ssub * Junicode-OsF/condensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-OsF/mediumcondensed/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{c}{scsl}{
+ <-> ssub * Junicode-OsF/c/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumcondensed/it
+\DeclareFontShape{LY1}{Junicode-OsF}{condensed}{scsl}{
+ <-> ssub * Junicode-OsF/condensed/scit
}{}
-% ---- b = bold ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LY1}{Junicode-OsF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bold}{scit}{
- <-> alias * Junicode-OsF/b/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-OsF/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bold}{it}{
- <-> alias * Junicode-OsF/b/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-OsF/sbx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-osf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-osf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bold}{sc}{
- <-> alias * Junicode-OsF/b/sc
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-OsF/sbx/n
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-osf-ly1
+\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-osf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bold}{n}{
- <-> alias * Junicode-OsF/b/n
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-OsF/sbx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{b}{scsl}{
- <-> ssub * Junicode-OsF/b/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{sl}{
+ <-> ssub * Junicode-OsF/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bold}{scsl}{
- <-> ssub * Junicode-OsF/bold/scit
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiboldexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{b}{sl}{
- <-> ssub * Junicode-OsF/b/it
+\DeclareFontShape{LY1}{Junicode-OsF}{sbx}{scsl}{
+ <-> ssub * Junicode-OsF/sbx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-OsF}{bold}{sl}{
- <-> ssub * Junicode-OsF/bold/it
+\DeclareFontShape{LY1}{Junicode-OsF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiboldexpanded/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-Sup.fd b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-Sup.fd
index 55a81ba0ea5..8de022b535c 100644
--- a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-Sup.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LY1Junicode-Sup.fd}
- [2024/06/03 (autoinst) Font definitions for LY1/Junicode-Sup.]
+ [2024/07/21 (autoinst) Font definitions for LY1/Junicode-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,57 +20,57 @@
\DeclareFontFamily{LY1}{Junicode-Sup}{}
-% ---- sx = semiexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{LY1}{Junicode-Sup}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semiexpanded}{it}{
- <-> alias * Junicode-Sup/sx/it
+\DeclareFontShape{LY1}{Junicode-Sup}{condensed}{n}{
+ <-> alias * Junicode-Sup/c/n
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semiexpanded}{n}{
- <-> alias * Junicode-Sup/sx/n
+\DeclareFontShape{LY1}{Junicode-Sup}{condensed}{it}{
+ <-> alias * Junicode-Sup/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{sx}{sl}{
- <-> ssub * Junicode-Sup/sx/it
+\DeclareFontShape{LY1}{Junicode-Sup}{c}{sl}{
+ <-> ssub * Junicode-Sup/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semiexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiexpanded/it
+\DeclareFontShape{LY1}{Junicode-Sup}{condensed}{sl}{
+ <-> ssub * Junicode-Sup/condensed/it
}{}
-% ---- c = condensed ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LY1}{Junicode-Sup}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{condensed}{it}{
- <-> alias * Junicode-Sup/c/it
+\DeclareFontShape{LY1}{Junicode-Sup}{semiboldexpanded}{it}{
+ <-> alias * Junicode-Sup/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{condensed}{n}{
- <-> alias * Junicode-Sup/c/n
+\DeclareFontShape{LY1}{Junicode-Sup}{semiboldexpanded}{n}{
+ <-> alias * Junicode-Sup/sbx/n
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{c}{sl}{
- <-> ssub * Junicode-Sup/c/it
+\DeclareFontShape{LY1}{Junicode-Sup}{sbx}{sl}{
+ <-> ssub * Junicode-Sup/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{condensed}{sl}{
- <-> ssub * Junicode-Sup/condensed/it
+\DeclareFontShape{LY1}{Junicode-Sup}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiboldexpanded/it
}{}
@@ -101,156 +101,114 @@
}{}
-% ---- mediumsemiexpanded ----
+% ---- b = bold ----
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{bold}{it}{
+ <-> alias * Junicode-Sup/b/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-Sup/mediumsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-Sup}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-sup-ly1
}{}
-
-% ---- sbsx = semiboldsemiexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-Sup}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{bold}{n}{
+ <-> alias * Junicode-Sup/b/n
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-Sup/sbsx/it
+\DeclareFontShape{LY1}{Junicode-Sup}{b}{sl}{
+ <-> ssub * Junicode-Sup/b/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{bold}{sl}{
+ <-> ssub * Junicode-Sup/bold/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-Sup/sbsx/n
-}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{sbsx}{sl}{
- <-> ssub * Junicode-Sup/sbsx/it
-}{}
+% ---- mediumexpanded ----
-\DeclareFontShape{LY1}{Junicode-Sup}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiboldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-sup-ly1
}{}
-
-% ---- mediumexpanded ----
-
\DeclareFontShape{LY1}{Junicode-Sup}{mediumexpanded}{n}{
<-> \Junicode@@scale Junicode-ExpMedium-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-sup-ly1
-}{}
-
\DeclareFontShape{LY1}{Junicode-Sup}{mediumexpanded}{sl}{
<-> ssub * Junicode-Sup/mediumexpanded/it
}{}
-% ---- bx = boldexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-Sup}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-sup-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Sup}{boldexpanded}{n}{
- <-> alias * Junicode-Sup/bx/n
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Sup}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-sup-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Sup}{boldexpanded}{it}{
- <-> alias * Junicode-Sup/bx/it
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Sup}{bx}{sl}{
- <-> ssub * Junicode-Sup/bx/it
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Sup}{boldexpanded}{sl}{
- <-> ssub * Junicode-Sup/boldexpanded/it
-}{}
-
-
-% ---- l = light ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{LY1}{Junicode-Sup}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{light}{it}{
- <-> alias * Junicode-Sup/l/it
+\DeclareFontShape{LY1}{Junicode-Sup}{lightsemicondensed}{n}{
+ <-> alias * Junicode-Sup/lsc/n
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{light}{n}{
- <-> alias * Junicode-Sup/l/n
+\DeclareFontShape{LY1}{Junicode-Sup}{lightsemicondensed}{it}{
+ <-> alias * Junicode-Sup/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{l}{sl}{
- <-> ssub * Junicode-Sup/l/it
+\DeclareFontShape{LY1}{Junicode-Sup}{lsc}{sl}{
+ <-> ssub * Junicode-Sup/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{light}{sl}{
- <-> ssub * Junicode-Sup/light/it
+\DeclareFontShape{LY1}{Junicode-Sup}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-Sup/lightsemicondensed/it
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LY1}{Junicode-Sup}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lightsemicondensed}{n}{
- <-> alias * Junicode-Sup/lsc/n
+\DeclareFontShape{LY1}{Junicode-Sup}{lightcondensed}{n}{
+ <-> alias * Junicode-Sup/lc/n
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lightsemicondensed}{it}{
- <-> alias * Junicode-Sup/lsc/it
+\DeclareFontShape{LY1}{Junicode-Sup}{lightcondensed}{it}{
+ <-> alias * Junicode-Sup/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lsc}{sl}{
- <-> ssub * Junicode-Sup/lsc/it
+\DeclareFontShape{LY1}{Junicode-Sup}{lc}{sl}{
+ <-> ssub * Junicode-Sup/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-Sup/lightsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-Sup}{lightcondensed}{sl}{
+ <-> ssub * Junicode-Sup/lightcondensed/it
}{}
-% ---- medium ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-Sup}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{medium}{sl}{
- <-> ssub * Junicode-Sup/medium/it
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/mediumsemiexpanded/it
}{}
@@ -281,127 +239,119 @@
}{}
-% ---- b = bold ----
+% ---- medium ----
-\DeclareFontShape{LY1}{Junicode-Sup}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{bold}{it}{
- <-> alias * Junicode-Sup/b/it
+\DeclareFontShape{LY1}{Junicode-Sup}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{medium}{sl}{
+ <-> ssub * Junicode-Sup/medium/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{bold}{n}{
- <-> alias * Junicode-Sup/b/n
-}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{b}{sl}{
- <-> ssub * Junicode-Sup/b/it
-}{}
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LY1}{Junicode-Sup}{bold}{sl}{
- <-> ssub * Junicode-Sup/bold/it
+\DeclareFontShape{LY1}{Junicode-Sup}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-sup-ly1
}{}
+\DeclareFontShape{LY1}{Junicode-Sup}{boldexpanded}{n}{
+ <-> alias * Junicode-Sup/bx/n
+}{}
-% ---- mediumcondensed ----
+\DeclareFontShape{LY1}{Junicode-Sup}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-sup-ly1
+}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{boldexpanded}{it}{
+ <-> alias * Junicode-Sup/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{bx}{sl}{
+ <-> ssub * Junicode-Sup/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumcondensed}{sl}{
- <-> ssub * Junicode-Sup/mediumcondensed/it
+\DeclareFontShape{LY1}{Junicode-Sup}{boldexpanded}{sl}{
+ <-> ssub * Junicode-Sup/boldexpanded/it
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{LY1}{Junicode-Sup}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semiboldexpanded}{n}{
- <-> alias * Junicode-Sup/sbx/n
+\DeclareFontShape{LY1}{Junicode-Sup}{semiexpanded}{n}{
+ <-> alias * Junicode-Sup/sx/n
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semiboldexpanded}{it}{
- <-> alias * Junicode-Sup/sbx/it
+\DeclareFontShape{LY1}{Junicode-Sup}{semiexpanded}{it}{
+ <-> alias * Junicode-Sup/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{sbx}{sl}{
- <-> ssub * Junicode-Sup/sbx/it
+\DeclareFontShape{LY1}{Junicode-Sup}{sx}{sl}{
+ <-> ssub * Junicode-Sup/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiboldexpanded/it
+\DeclareFontShape{LY1}{Junicode-Sup}{semiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiexpanded/it
}{}
-% ---- mediumsemicondensed ----
+% ---- l = light ----
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{light}{it}{
+ <-> alias * Junicode-Sup/l/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-Sup/mediumsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-Sup}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-sup-ly1
}{}
-
-% ---- sc = semicondensed ----
-
-\DeclareFontShape{LY1}{Junicode-Sup}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{light}{n}{
+ <-> alias * Junicode-Sup/l/n
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semicondensed}{n}{
- <-> alias * Junicode-Sup/sc/n
+\DeclareFontShape{LY1}{Junicode-Sup}{l}{sl}{
+ <-> ssub * Junicode-Sup/l/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{light}{sl}{
+ <-> ssub * Junicode-Sup/light/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semicondensed}{it}{
- <-> alias * Junicode-Sup/sc/it
+
+% ---- mediumsemicondensed ----
+
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{sc}{sl}{
- <-> ssub * Junicode-Sup/sc/it
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{semicondensed}{sl}{
- <-> ssub * Junicode-Sup/semicondensed/it
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-Sup/mediumsemicondensed/it
}{}
% ---- sb = semibold ----
-\DeclareFontShape{LY1}{Junicode-Sup}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-sup-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-Sup}{semibold}{it}{
- <-> alias * Junicode-Sup/sb/it
-}{}
-
\DeclareFontShape{LY1}{Junicode-Sup}{sb}{n}{
<-> \Junicode@@scale Junicode-SmBold-sup-ly1
}{}
@@ -410,6 +360,14 @@
<-> alias * Junicode-Sup/sb/n
}{}
+\DeclareFontShape{LY1}{Junicode-Sup}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{Junicode-Sup}{semibold}{it}{
+ <-> alias * Junicode-Sup/sb/it
+}{}
+
\DeclareFontShape{LY1}{Junicode-Sup}{sb}{sl}{
<-> ssub * Junicode-Sup/sb/it
}{}
@@ -419,6 +377,21 @@
}{}
+% ---- mediumcondensed ----
+
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{Junicode-Sup}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-Sup/mediumcondensed/it
+}{}
+
+
% ---- bsx = boldsemiexpanded ----
\DeclareFontShape{LY1}{Junicode-Sup}{bsx}{it}{
@@ -446,30 +419,57 @@
}{}
-% ---- lc = lightcondensed ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-Sup}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lightcondensed}{n}{
- <-> alias * Junicode-Sup/lc/n
+\DeclareFontShape{LY1}{Junicode-Sup}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-Sup/sbsx/n
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-sup-ly1
+\DeclareFontShape{LY1}{Junicode-Sup}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-sup-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lightcondensed}{it}{
- <-> alias * Junicode-Sup/lc/it
+\DeclareFontShape{LY1}{Junicode-Sup}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-Sup/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lc}{sl}{
- <-> ssub * Junicode-Sup/lc/it
+\DeclareFontShape{LY1}{Junicode-Sup}{sbsx}{sl}{
+ <-> ssub * Junicode-Sup/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-Sup}{lightcondensed}{sl}{
- <-> ssub * Junicode-Sup/lightcondensed/it
+\DeclareFontShape{LY1}{Junicode-Sup}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiboldsemiexpanded/it
+}{}
+
+
+% ---- sc = semicondensed ----
+
+\DeclareFontShape{LY1}{Junicode-Sup}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{Junicode-Sup}{semicondensed}{it}{
+ <-> alias * Junicode-Sup/sc/it
+}{}
+
+\DeclareFontShape{LY1}{Junicode-Sup}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{Junicode-Sup}{semicondensed}{n}{
+ <-> alias * Junicode-Sup/sc/n
+}{}
+
+\DeclareFontShape{LY1}{Junicode-Sup}{sc}{sl}{
+ <-> ssub * Junicode-Sup/sc/it
+}{}
+
+\DeclareFontShape{LY1}{Junicode-Sup}{semicondensed}{sl}{
+ <-> ssub * Junicode-Sup/semicondensed/it
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-TLF.fd b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-TLF.fd
index 9cabf8d170c..07d73da9c2c 100644
--- a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-TLF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LY1Junicode-TLF.fd}
- [2024/06/03 (autoinst) Font definitions for LY1/Junicode-TLF.]
+ [2024/07/21 (autoinst) Font definitions for LY1/Junicode-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,852 +20,852 @@
\DeclareFontFamily{LY1}{Junicode-TLF}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-TLF/sbsx/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{it}{
+ <-> alias * Junicode-TLF/sc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-TLF/sbsx/n
+\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{scit}{
+ <-> alias * Junicode-TLF/sc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-TLF/sbsx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{n}{
+ <-> alias * Junicode-TLF/sc/n
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-TLF/sbsx/it
+\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{sc}{
+ <-> alias * Junicode-TLF/sc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{scsl}{
- <-> ssub * Junicode-TLF/sbsx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{sc}{sl}{
+ <-> ssub * Junicode-TLF/sc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiboldsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{sl}{
+ <-> ssub * Junicode-TLF/semicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{sl}{
- <-> ssub * Junicode-TLF/sbsx/it
+\DeclareFontShape{LY1}{Junicode-TLF}{sc}{scsl}{
+ <-> ssub * Junicode-TLF/sc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiboldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/semicondensed/scit
}{}
-% ---- mediumexpanded ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-TLF/bsx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-TLF/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-TLF/mediumexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumexpanded/it
+\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-TLF/bsx/n
}{}
-
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-TLF/bsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{sl}{
+ <-> ssub * Junicode-TLF/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/boldsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/mediumsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{scsl}{
+ <-> ssub * Junicode-TLF/bsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/boldsemiexpanded/scit
}{}
-% ---- sx = semiexpanded ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-TLF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{it}{
- <-> alias * Junicode-TLF/sx/it
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-TLF/sbsx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{scit}{
- <-> alias * Junicode-TLF/sx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-TLF/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{n}{
- <-> alias * Junicode-TLF/sx/n
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-TLF/sbsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{sc}{
- <-> alias * Junicode-TLF/sx/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-TLF/sbsx/n
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sx}{scsl}{
- <-> ssub * Junicode-TLF/sx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{sl}{
+ <-> ssub * Junicode-TLF/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sx}{sl}{
- <-> ssub * Junicode-TLF/sx/it
+\DeclareFontShape{LY1}{Junicode-TLF}{sbsx}{scsl}{
+ <-> ssub * Junicode-TLF/sbsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiexpanded/it
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiboldsemiexpanded/scit
}{}
-% ---- c = condensed ----
+% ---- mediumcondensed ----
-\DeclareFontShape{LY1}{Junicode-TLF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{it}{
- <-> alias * Junicode-TLF/c/it
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{scit}{
- <-> alias * Junicode-TLF/c/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumcondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{n}{
- <-> alias * Junicode-TLF/c/n
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-TLF/mediumcondensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-tlf-sc-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{sc}{
- <-> alias * Junicode-TLF/c/sc
-}{}
+% ---- sb = semibold ----
-\DeclareFontShape{LY1}{Junicode-TLF}{c}{scsl}{
- <-> ssub * Junicode-TLF/c/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{scsl}{
- <-> ssub * Junicode-TLF/condensed/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{sc}{
+ <-> alias * Junicode-TLF/sb/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{c}{sl}{
- <-> ssub * Junicode-TLF/c/it
+\DeclareFontShape{LY1}{Junicode-TLF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{sl}{
- <-> ssub * Junicode-TLF/condensed/it
+\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{it}{
+ <-> alias * Junicode-TLF/sb/it
}{}
+\DeclareFontShape{LY1}{Junicode-TLF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-tlf-ly1
+}{}
-% ---- x = expanded ----
+\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{n}{
+ <-> alias * Junicode-TLF/sb/n
+}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{sc}{
- <-> alias * Junicode-TLF/x/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{scit}{
+ <-> alias * Junicode-TLF/sb/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sb}{sl}{
+ <-> ssub * Junicode-TLF/sb/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{n}{
- <-> alias * Junicode-TLF/x/n
+\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{sl}{
+ <-> ssub * Junicode-TLF/semibold/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sb}{scsl}{
+ <-> ssub * Junicode-TLF/sb/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{scit}{
- <-> alias * Junicode-TLF/x/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{scsl}{
+ <-> ssub * Junicode-TLF/semibold/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tlf-ly1
+
+% ---- mediumsemicondensed ----
+
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{it}{
- <-> alias * Junicode-TLF/x/it
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{x}{scsl}{
- <-> ssub * Junicode-TLF/x/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{scsl}{
- <-> ssub * Junicode-TLF/expanded/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{x}{sl}{
- <-> ssub * Junicode-TLF/x/it
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{sl}{
- <-> ssub * Junicode-TLF/expanded/it
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/mediumsemicondensed/scit
}{}
-% ---- m = regular ----
+% ---- l = light ----
-\DeclareFontShape{LY1}{Junicode-TLF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{regular}{it}{
- <-> alias * Junicode-TLF/m/it
+\DeclareFontShape{LY1}{Junicode-TLF}{light}{sc}{
+ <-> alias * Junicode-TLF/l/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{regular}{scit}{
- <-> alias * Junicode-TLF/m/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{light}{it}{
+ <-> alias * Junicode-TLF/l/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{regular}{n}{
- <-> alias * Junicode-TLF/m/n
+\DeclareFontShape{LY1}{Junicode-TLF}{light}{n}{
+ <-> alias * Junicode-TLF/l/n
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{regular}{sc}{
- <-> alias * Junicode-TLF/m/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{light}{scit}{
+ <-> alias * Junicode-TLF/l/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{m}{scsl}{
- <-> ssub * Junicode-TLF/m/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{l}{sl}{
+ <-> ssub * Junicode-TLF/l/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{regular}{scsl}{
- <-> ssub * Junicode-TLF/regular/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{light}{sl}{
+ <-> ssub * Junicode-TLF/light/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{m}{sl}{
- <-> ssub * Junicode-TLF/m/it
+\DeclareFontShape{LY1}{Junicode-TLF}{l}{scsl}{
+ <-> ssub * Junicode-TLF/l/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{regular}{sl}{
- <-> ssub * Junicode-TLF/regular/it
+\DeclareFontShape{LY1}{Junicode-TLF}{light}{scsl}{
+ <-> ssub * Junicode-TLF/light/scit
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TLF/lsc/n
+\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{sc}{
+ <-> alias * Junicode-TLF/sx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-TLF/lsc/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{it}{
+ <-> alias * Junicode-TLF/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TLF/lsc/it
+\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{scit}{
+ <-> alias * Junicode-TLF/sx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-TLF/lsc/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{n}{
+ <-> alias * Junicode-TLF/sx/n
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{scsl}{
- <-> ssub * Junicode-TLF/lsc/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{sx}{sl}{
+ <-> ssub * Junicode-TLF/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-TLF/lightsemicondensed/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{sl}{
- <-> ssub * Junicode-TLF/lsc/it
+\DeclareFontShape{LY1}{Junicode-TLF}{sx}{scsl}{
+ <-> ssub * Junicode-TLF/sx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/lightsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-TLF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiexpanded/scit
}{}
% ---- medium ----
-\DeclareFontShape{LY1}{Junicode-TLF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tlf-ly1
}{}
\DeclareFontShape{LY1}{Junicode-TLF}{medium}{n}{
<-> \Junicode@@scale Junicode-Medium-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-tlf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-TLF}{medium}{scsl}{
- <-> ssub * Junicode-TLF/medium/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tlf-sc-ly1
}{}
\DeclareFontShape{LY1}{Junicode-TLF}{medium}{sl}{
<-> ssub * Junicode-TLF/medium/it
}{}
+\DeclareFontShape{LY1}{Junicode-TLF}{medium}{scsl}{
+ <-> ssub * Junicode-TLF/medium/scit
+}{}
+
-% ---- l = light ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LY1}{Junicode-TLF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{light}{it}{
- <-> alias * Junicode-TLF/l/it
+\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{sc}{
+ <-> alias * Junicode-TLF/bx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{light}{scit}{
- <-> alias * Junicode-TLF/l/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{scit}{
+ <-> alias * Junicode-TLF/bx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{light}{n}{
- <-> alias * Junicode-TLF/l/n
+\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{n}{
+ <-> alias * Junicode-TLF/bx/n
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{light}{sc}{
- <-> alias * Junicode-TLF/l/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{it}{
+ <-> alias * Junicode-TLF/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{l}{scsl}{
- <-> ssub * Junicode-TLF/l/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{bx}{sl}{
+ <-> ssub * Junicode-TLF/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{light}{scsl}{
- <-> ssub * Junicode-TLF/light/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/boldexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{l}{sl}{
- <-> ssub * Junicode-TLF/l/it
+\DeclareFontShape{LY1}{Junicode-TLF}{bx}{scsl}{
+ <-> ssub * Junicode-TLF/bx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{light}{sl}{
- <-> ssub * Junicode-TLF/light/it
+\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/boldexpanded/scit
}{}
-% ---- bx = boldexpanded ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-TLF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{sc}{
- <-> alias * Junicode-TLF/bx/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{n}{
- <-> alias * Junicode-TLF/bx/n
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{scit}{
- <-> alias * Junicode-TLF/bx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/mediumsemiexpanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{it}{
- <-> alias * Junicode-TLF/bx/it
-}{}
+% ---- m = regular ----
-\DeclareFontShape{LY1}{Junicode-TLF}{bx}{scsl}{
- <-> ssub * Junicode-TLF/bx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-TLF/boldexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{regular}{it}{
+ <-> alias * Junicode-TLF/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bx}{sl}{
- <-> ssub * Junicode-TLF/bx/it
+\DeclareFontShape{LY1}{Junicode-TLF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TLF/boldexpanded/it
+\DeclareFontShape{LY1}{Junicode-TLF}{regular}{scit}{
+ <-> alias * Junicode-TLF/m/scit
}{}
+\DeclareFontShape{LY1}{Junicode-TLF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-tlf-ly1
+}{}
-% ---- mediumcondensed ----
+\DeclareFontShape{LY1}{Junicode-TLF}{regular}{n}{
+ <-> alias * Junicode-TLF/m/n
+}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{regular}{sc}{
+ <-> alias * Junicode-TLF/m/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{m}{sl}{
+ <-> ssub * Junicode-TLF/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{regular}{sl}{
+ <-> ssub * Junicode-TLF/regular/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-TLF/mediumcondensed/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{m}{scsl}{
+ <-> ssub * Junicode-TLF/m/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumcondensed/it
+\DeclareFontShape{LY1}{Junicode-TLF}{regular}{scsl}{
+ <-> ssub * Junicode-TLF/regular/scit
}{}
-% ---- b = bold ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LY1}{Junicode-TLF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bold}{n}{
- <-> alias * Junicode-TLF/b/n
+\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{it}{
+ <-> alias * Junicode-TLF/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bold}{sc}{
- <-> alias * Junicode-TLF/b/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{scit}{
+ <-> alias * Junicode-TLF/lc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bold}{it}{
- <-> alias * Junicode-TLF/b/it
+\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{n}{
+ <-> alias * Junicode-TLF/lc/n
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bold}{scit}{
- <-> alias * Junicode-TLF/b/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{sc}{
+ <-> alias * Junicode-TLF/lc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{b}{scsl}{
- <-> ssub * Junicode-TLF/b/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{lc}{sl}{
+ <-> ssub * Junicode-TLF/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bold}{scsl}{
- <-> ssub * Junicode-TLF/bold/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightcondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{b}{sl}{
- <-> ssub * Junicode-TLF/b/it
+\DeclareFontShape{LY1}{Junicode-TLF}{lc}{scsl}{
+ <-> ssub * Junicode-TLF/lc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bold}{sl}{
- <-> ssub * Junicode-TLF/bold/it
+\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-TLF/lightcondensed/scit
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-TLF/bsx/n
+\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TLF/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-TLF/bsx/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-TLF/lsc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-TLF/bsx/it
+\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TLF/lsc/n
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-TLF/bsx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-TLF/lsc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{scsl}{
- <-> ssub * Junicode-TLF/bsx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{sl}{
+ <-> ssub * Junicode-TLF/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/boldsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightsemicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{bsx}{sl}{
- <-> ssub * Junicode-TLF/bsx/it
+\DeclareFontShape{LY1}{Junicode-TLF}{lsc}{scsl}{
+ <-> ssub * Junicode-TLF/lsc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/boldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-TLF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/lightsemicondensed/scit
}{}
-% ---- lc = lightcondensed ----
+% ---- mediumexpanded ----
-\DeclareFontShape{LY1}{Junicode-TLF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{sc}{
- <-> alias * Junicode-TLF/lc/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{n}{
- <-> alias * Junicode-TLF/lc/n
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{scit}{
- <-> alias * Junicode-TLF/lc/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/mediumexpanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tlf-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{it}{
- <-> alias * Junicode-TLF/lc/it
-}{}
+% ---- b = bold ----
-\DeclareFontShape{LY1}{Junicode-TLF}{lc}{scsl}{
- <-> ssub * Junicode-TLF/lc/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-TLF/lightcondensed/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{bold}{sc}{
+ <-> alias * Junicode-TLF/b/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lc}{sl}{
- <-> ssub * Junicode-TLF/lc/it
+\DeclareFontShape{LY1}{Junicode-TLF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TLF/lightcondensed/it
+\DeclareFontShape{LY1}{Junicode-TLF}{bold}{n}{
+ <-> alias * Junicode-TLF/b/n
}{}
-
-% ---- sc = semicondensed ----
-
-\DeclareFontShape{LY1}{Junicode-TLF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{n}{
- <-> alias * Junicode-TLF/sc/n
+\DeclareFontShape{LY1}{Junicode-TLF}{bold}{scit}{
+ <-> alias * Junicode-TLF/b/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{sc}{
- <-> alias * Junicode-TLF/sc/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{bold}{it}{
+ <-> alias * Junicode-TLF/b/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{b}{sl}{
+ <-> ssub * Junicode-TLF/b/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{it}{
- <-> alias * Junicode-TLF/sc/it
+\DeclareFontShape{LY1}{Junicode-TLF}{bold}{sl}{
+ <-> ssub * Junicode-TLF/bold/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{b}{scsl}{
+ <-> ssub * Junicode-TLF/b/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{scit}{
- <-> alias * Junicode-TLF/sc/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{bold}{scsl}{
+ <-> ssub * Junicode-TLF/bold/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sc}{scsl}{
- <-> ssub * Junicode-TLF/sc/scit
-}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{scsl}{
- <-> ssub * Junicode-TLF/semicondensed/scit
-}{}
+% ---- x = expanded ----
-\DeclareFontShape{LY1}{Junicode-TLF}{sc}{sl}{
- <-> ssub * Junicode-TLF/sc/it
+\DeclareFontShape{LY1}{Junicode-TLF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semicondensed}{sl}{
- <-> ssub * Junicode-TLF/semicondensed/it
+\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{sc}{
+ <-> alias * Junicode-TLF/x/sc
}{}
+\DeclareFontShape{LY1}{Junicode-TLF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-tlf-ly1
+}{}
-% ---- sb = semibold ----
+\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{n}{
+ <-> alias * Junicode-TLF/x/n
+}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{sc}{
- <-> alias * Junicode-TLF/sb/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{scit}{
+ <-> alias * Junicode-TLF/x/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{n}{
- <-> alias * Junicode-TLF/sb/n
+\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{it}{
+ <-> alias * Junicode-TLF/x/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{x}{sl}{
+ <-> ssub * Junicode-TLF/x/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{scit}{
- <-> alias * Junicode-TLF/sb/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{sl}{
+ <-> ssub * Junicode-TLF/expanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{x}{scsl}{
+ <-> ssub * Junicode-TLF/x/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{it}{
- <-> alias * Junicode-TLF/sb/it
+\DeclareFontShape{LY1}{Junicode-TLF}{expanded}{scsl}{
+ <-> ssub * Junicode-TLF/expanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sb}{scsl}{
- <-> ssub * Junicode-TLF/sb/scit
+
+% ---- sbx = semiboldexpanded ----
+
+\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{scsl}{
- <-> ssub * Junicode-TLF/semibold/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-TLF/sbx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sb}{sl}{
- <-> ssub * Junicode-TLF/sb/it
+\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semibold}{sl}{
- <-> ssub * Junicode-TLF/semibold/it
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TLF/sbx/it
}{}
+\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tlf-ly1
+}{}
-% ---- mediumsemicondensed ----
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TLF/sbx/n
+}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-TLF/sbx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{sl}{
+ <-> ssub * Junicode-TLF/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiboldexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-TLF/mediumsemicondensed/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{scsl}{
+ <-> ssub * Junicode-TLF/sbx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiboldexpanded/scit
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-TLF/sbx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{scit}{
+ <-> alias * Junicode-TLF/c/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TLF/sbx/it
+\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{n}{
+ <-> alias * Junicode-TLF/c/n
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tlf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tlf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-TLF/sbx/sc
+\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{it}{
+ <-> alias * Junicode-TLF/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tlf-ly1
+\DeclareFontShape{LY1}{Junicode-TLF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-tlf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TLF/sbx/n
+\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{sc}{
+ <-> alias * Junicode-TLF/c/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{scsl}{
- <-> ssub * Junicode-TLF/sbx/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{c}{sl}{
+ <-> ssub * Junicode-TLF/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiboldexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{sl}{
+ <-> ssub * Junicode-TLF/condensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{sbx}{sl}{
- <-> ssub * Junicode-TLF/sbx/it
+\DeclareFontShape{LY1}{Junicode-TLF}{c}{scsl}{
+ <-> ssub * Junicode-TLF/c/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TLF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiboldexpanded/it
+\DeclareFontShape{LY1}{Junicode-TLF}{condensed}{scsl}{
+ <-> ssub * Junicode-TLF/condensed/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-TOsF.fd b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-TOsF.fd
index b9e848b1a19..8465d1cb00a 100644
--- a/Master/texmf-dist/tex/latex/junicode/LY1Junicode-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/LY1Junicode-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{LY1Junicode-TOsF.fd}
- [2024/06/03 (autoinst) Font definitions for LY1/Junicode-TOsF.]
+ [2024/07/21 (autoinst) Font definitions for LY1/Junicode-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,204 +20,215 @@
\DeclareFontFamily{LY1}{Junicode-TOsF}{}
-% ---- medium ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{sc}{
+ <-> alias * Junicode-TOsF/lc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{it}{
+ <-> alias * Junicode-TOsF/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{scsl}{
- <-> ssub * Junicode-TOsF/medium/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{sl}{
- <-> ssub * Junicode-TOsF/medium/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{scit}{
+ <-> alias * Junicode-TOsF/lc/scit
}{}
-
-% ---- lsc = lightsemicondensed ----
-
-\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TOsF/lsc/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{n}{
+ <-> alias * Junicode-TOsF/lc/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{sl}{
+ <-> ssub * Junicode-TOsF/lc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-TOsF/lsc/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightcondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{scsl}{
+ <-> ssub * Junicode-TOsF/lc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TOsF/lsc/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/lightcondensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-tosf-sc-ly1
+
+% ---- medium ----
+
+\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-TOsF/lsc/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{scsl}{
- <-> ssub * Junicode-TOsF/lsc/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/lightsemicondensed/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{sl}{
- <-> ssub * Junicode-TOsF/lsc/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{sl}{
+ <-> ssub * Junicode-TOsF/medium/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{medium}{scsl}{
+ <-> ssub * Junicode-TOsF/medium/scit
}{}
-% ---- m = regular ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{sc}{
- <-> alias * Junicode-TOsF/m/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{scit}{
+ <-> alias * Junicode-TOsF/bx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{n}{
- <-> alias * Junicode-TOsF/m/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{n}{
+ <-> alias * Junicode-TOsF/bx/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{scit}{
- <-> alias * Junicode-TOsF/m/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{it}{
+ <-> alias * Junicode-TOsF/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{it}{
- <-> alias * Junicode-TOsF/m/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{sc}{
+ <-> alias * Junicode-TOsF/bx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{m}{scsl}{
- <-> ssub * Junicode-TOsF/m/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{sl}{
+ <-> ssub * Junicode-TOsF/bx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{scsl}{
- <-> ssub * Junicode-TOsF/regular/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/boldexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{m}{sl}{
- <-> ssub * Junicode-TOsF/m/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{scsl}{
+ <-> ssub * Junicode-TOsF/bx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{sl}{
- <-> ssub * Junicode-TOsF/regular/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/boldexpanded/scit
}{}
-% ---- bx = boldexpanded ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{it}{
- <-> alias * Junicode-TOsF/bx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{scit}{
- <-> alias * Junicode-TOsF/bx/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{n}{
- <-> alias * Junicode-TOsF/bx/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumsemiexpanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-tosf-sc-ly1
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{Junicode-TOsF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{sc}{
- <-> alias * Junicode-TOsF/bx/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{it}{
+ <-> alias * Junicode-TOsF/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{scsl}{
- <-> ssub * Junicode-TOsF/bx/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/boldexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{n}{
+ <-> alias * Junicode-TOsF/m/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bx}{sl}{
- <-> ssub * Junicode-TOsF/bx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/boldexpanded/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{scit}{
+ <-> alias * Junicode-TOsF/m/scit
}{}
+\DeclareFontShape{LY1}{Junicode-TOsF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-tosf-sc-ly1
+}{}
-% ---- l = light ----
+\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{sc}{
+ <-> alias * Junicode-TOsF/m/sc
+}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{m}{sl}{
+ <-> ssub * Junicode-TOsF/m/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{light}{n}{
- <-> alias * Junicode-TOsF/l/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{sl}{
+ <-> ssub * Junicode-TOsF/regular/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{m}{scsl}{
+ <-> ssub * Junicode-TOsF/m/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{light}{sc}{
- <-> alias * Junicode-TOsF/l/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{regular}{scsl}{
+ <-> ssub * Junicode-TOsF/regular/scit
}{}
+
+% ---- l = light ----
+
\DeclareFontShape{LY1}{Junicode-TOsF}{l}{it}{
<-> \Junicode@@scale Junicode-LightItalic-tosf-ly1
}{}
@@ -234,12 +245,20 @@
<-> alias * Junicode-TOsF/l/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{l}{scsl}{
- <-> ssub * Junicode-TOsF/l/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{light}{scsl}{
- <-> ssub * Junicode-TOsF/light/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{light}{n}{
+ <-> alias * Junicode-TOsF/l/n
+}{}
+
+\DeclareFontShape{LY1}{Junicode-TOsF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-tosf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{Junicode-TOsF}{light}{sc}{
+ <-> alias * Junicode-TOsF/l/sc
}{}
\DeclareFontShape{LY1}{Junicode-TOsF}{l}{sl}{
@@ -250,283 +269,275 @@
<-> ssub * Junicode-TOsF/light/it
}{}
-
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{l}{scsl}{
+ <-> ssub * Junicode-TOsF/l/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{light}{scsl}{
+ <-> ssub * Junicode-TOsF/light/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tosf-ly1
+
+% ---- sx = semiexpanded ----
+
+\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/mediumsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{it}{
+ <-> alias * Junicode-TOsF/sx/it
}{}
+\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tosf-sc-ly1
+}{}
-% ---- mediumexpanded ----
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sx/scit
+}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{n}{
+ <-> alias * Junicode-TOsF/sx/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{sl}{
+ <-> ssub * Junicode-TOsF/sx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/mediumexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{scsl}{
+ <-> ssub * Junicode-TOsF/sx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumexpanded/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiexpanded/scit
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-TOsF/sbsx/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-TOsF/sbsx/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/mediumsemicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-TOsF/sbsx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumsemicondensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-sc-ly1
+
+% ---- mediumcondensed ----
+
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-TOsF/sbsx/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{scsl}{
- <-> ssub * Junicode-TOsF/sbsx/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiboldsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{sl}{
- <-> ssub * Junicode-TOsF/sbsx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/mediumcondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiboldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumcondensed/scit
}{}
-% ---- x = expanded ----
+% ---- sb = semibold ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{sc}{
- <-> alias * Junicode-TOsF/x/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{it}{
+ <-> alias * Junicode-TOsF/sb/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{n}{
- <-> alias * Junicode-TOsF/x/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{scit}{
+ <-> alias * Junicode-TOsF/sb/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{scit}{
- <-> alias * Junicode-TOsF/x/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{n}{
+ <-> alias * Junicode-TOsF/sb/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{it}{
- <-> alias * Junicode-TOsF/x/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{sc}{
+ <-> alias * Junicode-TOsF/sb/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{x}{scsl}{
- <-> ssub * Junicode-TOsF/x/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{sl}{
+ <-> ssub * Junicode-TOsF/sb/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{scsl}{
- <-> ssub * Junicode-TOsF/expanded/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{sl}{
+ <-> ssub * Junicode-TOsF/semibold/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{x}{sl}{
- <-> ssub * Junicode-TOsF/x/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{scsl}{
+ <-> ssub * Junicode-TOsF/sb/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{sl}{
- <-> ssub * Junicode-TOsF/expanded/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{scsl}{
+ <-> ssub * Junicode-TOsF/semibold/scit
}{}
-% ---- c = condensed ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{it}{
- <-> alias * Junicode-TOsF/c/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-TOsF/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{scit}{
- <-> alias * Junicode-TOsF/c/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sbsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{n}{
- <-> alias * Junicode-TOsF/c/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-TOsF/sbsx/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{sc}{
- <-> alias * Junicode-TOsF/c/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sbsx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{c}{scsl}{
- <-> ssub * Junicode-TOsF/c/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{sl}{
+ <-> ssub * Junicode-TOsF/sbsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{scsl}{
- <-> ssub * Junicode-TOsF/condensed/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{c}{sl}{
- <-> ssub * Junicode-TOsF/c/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbsx}{scsl}{
+ <-> ssub * Junicode-TOsF/sbsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{sl}{
- <-> ssub * Junicode-TOsF/condensed/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiboldsemiexpanded/scit
}{}
-% ---- sx = semiexpanded ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{it}{
- <-> alias * Junicode-TOsF/sx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/bsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{scit}{
- <-> alias * Junicode-TOsF/sx/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-TOsF/bsx/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{n}{
- <-> alias * Junicode-TOsF/sx/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-TOsF/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{sc}{
- <-> alias * Junicode-TOsF/sx/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/bsx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{scsl}{
- <-> ssub * Junicode-TOsF/sx/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{sl}{
+ <-> ssub * Junicode-TOsF/bsx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/boldsemiexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sx}{sl}{
- <-> ssub * Junicode-TOsF/sx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{scsl}{
+ <-> ssub * Junicode-TOsF/bsx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiexpanded/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/boldsemiexpanded/scit
}{}
% ---- sc = semicondensed ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-TOsF}{semicondensed}{n}{
- <-> alias * Junicode-TOsF/sc/n
-}{}
-
-\DeclareFontShape{LY1}{Junicode-TOsF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-tosf-sc-ly1
-}{}
-
-\DeclareFontShape{LY1}{Junicode-TOsF}{semicondensed}{sc}{
- <-> alias * Junicode-TOsF/sc/sc
-}{}
-
\DeclareFontShape{LY1}{Junicode-TOsF}{sc}{it}{
<-> \Junicode@@scale Junicode-SmCondItalic-tosf-ly1
}{}
@@ -535,6 +546,14 @@
<-> alias * Junicode-TOsF/sc/it
}{}
+\DeclareFontShape{LY1}{Junicode-TOsF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-tosf-ly1
+}{}
+
+\DeclareFontShape{LY1}{Junicode-TOsF}{semicondensed}{n}{
+ <-> alias * Junicode-TOsF/sc/n
+}{}
+
\DeclareFontShape{LY1}{Junicode-TOsF}{sc}{scit}{
<-> \Junicode@@scale Junicode-SmCondItalic-tosf-sc-ly1
}{}
@@ -543,12 +562,12 @@
<-> alias * Junicode-TOsF/sc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sc}{scsl}{
- <-> ssub * Junicode-TOsF/sc/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/semicondensed/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{semicondensed}{sc}{
+ <-> alias * Junicode-TOsF/sc/sc
}{}
\DeclareFontShape{LY1}{Junicode-TOsF}{sc}{sl}{
@@ -559,313 +578,294 @@
<-> ssub * Junicode-TOsF/semicondensed/it
}{}
-
-% ---- sb = semibold ----
-
-\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sc}{scsl}{
+ <-> ssub * Junicode-TOsF/sc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{n}{
- <-> alias * Junicode-TOsF/sb/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/semicondensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-tosf-sc-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{sc}{
- <-> alias * Junicode-TOsF/sb/sc
-}{}
+% ---- c = condensed ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{it}{
- <-> alias * Junicode-TOsF/sb/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{sc}{
+ <-> alias * Junicode-TOsF/c/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{scit}{
- <-> alias * Junicode-TOsF/sb/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{it}{
+ <-> alias * Junicode-TOsF/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{scsl}{
- <-> ssub * Junicode-TOsF/sb/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{scsl}{
- <-> ssub * Junicode-TOsF/semibold/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{n}{
+ <-> alias * Junicode-TOsF/c/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sb}{sl}{
- <-> ssub * Junicode-TOsF/sb/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semibold}{sl}{
- <-> ssub * Junicode-TOsF/semibold/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{scit}{
+ <-> alias * Junicode-TOsF/c/scit
}{}
-
-% ---- bsx = boldsemiexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{c}{sl}{
+ <-> ssub * Junicode-TOsF/c/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-TOsF/bsx/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{sl}{
+ <-> ssub * Junicode-TOsF/condensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{c}{scsl}{
+ <-> ssub * Junicode-TOsF/c/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-TOsF/bsx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{condensed}{scsl}{
+ <-> ssub * Junicode-TOsF/condensed/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-tosf-sc-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-TOsF/bsx/sc
-}{}
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-TOsF/bsx/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sbx/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{scsl}{
- <-> ssub * Junicode-TOsF/bsx/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/boldsemiexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TOsF/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bsx}{sl}{
- <-> ssub * Junicode-TOsF/bsx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/boldsemiexpanded/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TOsF/sbx/n
}{}
-
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{it}{
- <-> alias * Junicode-TOsF/lc/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sbx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{sl}{
+ <-> ssub * Junicode-TOsF/sbx/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{scit}{
- <-> alias * Junicode-TOsF/lc/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiboldexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{scsl}{
+ <-> ssub * Junicode-TOsF/sbx/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{n}{
- <-> alias * Junicode-TOsF/lc/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiboldexpanded/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-tosf-sc-ly1
-}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{sc}{
- <-> alias * Junicode-TOsF/lc/sc
-}{}
+% ---- b = bold ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{scsl}{
- <-> ssub * Junicode-TOsF/lc/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-TOsF/lightcondensed/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{n}{
+ <-> alias * Junicode-TOsF/b/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lc}{sl}{
- <-> ssub * Junicode-TOsF/lc/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightcondensed/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{scit}{
+ <-> alias * Junicode-TOsF/b/scit
}{}
-
-% ---- sbx = semiboldexpanded ----
-
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TOsF/sbx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{it}{
+ <-> alias * Junicode-TOsF/b/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-TOsF/sbx/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{sc}{
+ <-> alias * Junicode-TOsF/b/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{b}{sl}{
+ <-> ssub * Junicode-TOsF/b/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TOsF/sbx/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{sl}{
+ <-> ssub * Junicode-TOsF/bold/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{b}{scsl}{
+ <-> ssub * Junicode-TOsF/b/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-TOsF/sbx/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{scsl}{
+ <-> ssub * Junicode-TOsF/bold/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{scsl}{
- <-> ssub * Junicode-TOsF/sbx/scit
+
+% ---- x = expanded ----
+
+\DeclareFontShape{LY1}{Junicode-TOsF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiboldexpanded/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{sc}{
+ <-> alias * Junicode-TOsF/x/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{sbx}{sl}{
- <-> ssub * Junicode-TOsF/sbx/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiboldexpanded/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{n}{
+ <-> alias * Junicode-TOsF/x/n
}{}
+\DeclareFontShape{LY1}{Junicode-TOsF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tosf-sc-ly1
+}{}
-% ---- mediumsemicondensed ----
+\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{scit}{
+ <-> alias * Junicode-TOsF/x/scit
+}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{it}{
+ <-> alias * Junicode-TOsF/x/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{x}{sl}{
+ <-> ssub * Junicode-TOsF/x/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{sl}{
+ <-> ssub * Junicode-TOsF/expanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/mediumsemicondensed/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{x}{scsl}{
+ <-> ssub * Junicode-TOsF/x/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-TOsF/mediumsemicondensed/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{expanded}{scsl}{
+ <-> ssub * Junicode-TOsF/expanded/scit
}{}
-% ---- mediumcondensed ----
+% ---- mediumexpanded ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-TOsF/mediumcondensed/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumexpanded/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TOsF/mediumcondensed/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumexpanded/scit
}{}
-% ---- b = bold ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{LY1}{Junicode-TOsF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{n}{
- <-> alias * Junicode-TOsF/b/n
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TOsF/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{sc}{
- <-> alias * Junicode-TOsF/b/sc
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-TOsF/lsc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-tosf-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tosf-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{it}{
- <-> alias * Junicode-TOsF/b/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TOsF/lsc/n
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-tosf-sc-ly1
+\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tosf-sc-ly1
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{scit}{
- <-> alias * Junicode-TOsF/b/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-TOsF/lsc/sc
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{b}{scsl}{
- <-> ssub * Junicode-TOsF/b/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{sl}{
+ <-> ssub * Junicode-TOsF/lsc/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{scsl}{
- <-> ssub * Junicode-TOsF/bold/scit
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightsemicondensed/it
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{b}{sl}{
- <-> ssub * Junicode-TOsF/b/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{lsc}{scsl}{
+ <-> ssub * Junicode-TOsF/lsc/scit
}{}
-\DeclareFontShape{LY1}{Junicode-TOsF}{bold}{sl}{
- <-> ssub * Junicode-TOsF/bold/it
+\DeclareFontShape{LY1}{Junicode-TOsF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/lightsemicondensed/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-Inf.fd b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-Inf.fd
index bb6dc563984..10a023e6710 100644
--- a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-Inf.fd
+++ b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-Inf.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{OT1Junicode-Inf.fd}
- [2024/06/03 (autoinst) Font definitions for OT1/Junicode-Inf.]
+ [2024/07/21 (autoinst) Font definitions for OT1/Junicode-Inf.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,111 +20,99 @@
\DeclareFontFamily{OT1}{Junicode-Inf}{}
-% ---- sb = semibold ----
-
-\DeclareFontShape{OT1}{Junicode-Inf}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-inf-ot1
-}{}
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{OT1}{Junicode-Inf}{semibold}{it}{
- <-> alias * Junicode-Inf/sb/it
+\DeclareFontShape{OT1}{Junicode-Inf}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{lightsemicondensed}{n}{
+ <-> alias * Junicode-Inf/lsc/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{semibold}{n}{
- <-> alias * Junicode-Inf/sb/n
+\DeclareFontShape{OT1}{Junicode-Inf}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{sb}{sl}{
- <-> ssub * Junicode-Inf/sb/it
+\DeclareFontShape{OT1}{Junicode-Inf}{lightsemicondensed}{it}{
+ <-> alias * Junicode-Inf/lsc/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{semibold}{sl}{
- <-> ssub * Junicode-Inf/semibold/it
+\DeclareFontShape{OT1}{Junicode-Inf}{lsc}{sl}{
+ <-> ssub * Junicode-Inf/lsc/it
}{}
-
-% ---- sc = semicondensed ----
-
-\DeclareFontShape{OT1}{Junicode-Inf}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-Inf/lightsemicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{semicondensed}{n}{
- <-> alias * Junicode-Inf/sc/n
-}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-inf-ot1
-}{}
+% ---- mediumexpanded ----
-\DeclareFontShape{OT1}{Junicode-Inf}{semicondensed}{it}{
- <-> alias * Junicode-Inf/sc/it
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{sc}{sl}{
- <-> ssub * Junicode-Inf/sc/it
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{semicondensed}{sl}{
- <-> ssub * Junicode-Inf/semicondensed/it
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-Inf/mediumexpanded/it
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- b = bold ----
-\DeclareFontShape{OT1}{Junicode-Inf}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{boldsemiexpanded}{n}{
- <-> alias * Junicode-Inf/bsx/n
+\DeclareFontShape{OT1}{Junicode-Inf}{bold}{it}{
+ <-> alias * Junicode-Inf/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{boldsemiexpanded}{it}{
- <-> alias * Junicode-Inf/bsx/it
+\DeclareFontShape{OT1}{Junicode-Inf}{bold}{n}{
+ <-> alias * Junicode-Inf/b/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{bsx}{sl}{
- <-> ssub * Junicode-Inf/bsx/it
+\DeclareFontShape{OT1}{Junicode-Inf}{b}{sl}{
+ <-> ssub * Junicode-Inf/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/boldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-Inf}{bold}{sl}{
+ <-> ssub * Junicode-Inf/bold/it
}{}
-% ---- lc = lightcondensed ----
+% ---- x = expanded ----
-\DeclareFontShape{OT1}{Junicode-Inf}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lightcondensed}{it}{
- <-> alias * Junicode-Inf/lc/it
+\DeclareFontShape{OT1}{Junicode-Inf}{expanded}{it}{
+ <-> alias * Junicode-Inf/x/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lightcondensed}{n}{
- <-> alias * Junicode-Inf/lc/n
+\DeclareFontShape{OT1}{Junicode-Inf}{expanded}{n}{
+ <-> alias * Junicode-Inf/x/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lc}{sl}{
- <-> ssub * Junicode-Inf/lc/it
+\DeclareFontShape{OT1}{Junicode-Inf}{x}{sl}{
+ <-> ssub * Junicode-Inf/x/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lightcondensed}{sl}{
- <-> ssub * Junicode-Inf/lightcondensed/it
+\DeclareFontShape{OT1}{Junicode-Inf}{expanded}{sl}{
+ <-> ssub * Junicode-Inf/expanded/it
}{}
@@ -155,156 +143,168 @@
}{}
-% ---- mediumsemicondensed ----
+% ---- c = condensed ----
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{condensed}{it}{
+ <-> alias * Junicode-Inf/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-Inf/mediumsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-Inf}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-inf-ot1
}{}
-
-% ---- mediumcondensed ----
-
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{condensed}{n}{
+ <-> alias * Junicode-Inf/c/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{c}{sl}{
+ <-> ssub * Junicode-Inf/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumcondensed}{sl}{
- <-> ssub * Junicode-Inf/mediumcondensed/it
+\DeclareFontShape{OT1}{Junicode-Inf}{condensed}{sl}{
+ <-> ssub * Junicode-Inf/condensed/it
}{}
-% ---- b = bold ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{OT1}{Junicode-Inf}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{bold}{it}{
- <-> alias * Junicode-Inf/b/it
+\DeclareFontShape{OT1}{Junicode-Inf}{semicondensed}{it}{
+ <-> alias * Junicode-Inf/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{bold}{n}{
- <-> alias * Junicode-Inf/b/n
+\DeclareFontShape{OT1}{Junicode-Inf}{semicondensed}{n}{
+ <-> alias * Junicode-Inf/sc/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{b}{sl}{
- <-> ssub * Junicode-Inf/b/it
+\DeclareFontShape{OT1}{Junicode-Inf}{sc}{sl}{
+ <-> ssub * Junicode-Inf/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{bold}{sl}{
- <-> ssub * Junicode-Inf/bold/it
+\DeclareFontShape{OT1}{Junicode-Inf}{semicondensed}{sl}{
+ <-> ssub * Junicode-Inf/semicondensed/it
}{}
-% ---- medium ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-Inf}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-Inf/bsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{medium}{sl}{
- <-> ssub * Junicode-Inf/medium/it
+\DeclareFontShape{OT1}{Junicode-Inf}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-inf-ot1
}{}
+\DeclareFontShape{OT1}{Junicode-Inf}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-Inf/bsx/it
+}{}
-% ---- lsc = lightsemicondensed ----
+\DeclareFontShape{OT1}{Junicode-Inf}{bsx}{sl}{
+ <-> ssub * Junicode-Inf/bsx/it
+}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/boldsemiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lightsemicondensed}{it}{
- <-> alias * Junicode-Inf/lsc/it
+
+% ---- sbsx = semiboldsemiexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-Inf}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-Inf/sbsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lightsemicondensed}{n}{
- <-> alias * Junicode-Inf/lsc/n
+\DeclareFontShape{OT1}{Junicode-Inf}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lsc}{sl}{
- <-> ssub * Junicode-Inf/lsc/it
+\DeclareFontShape{OT1}{Junicode-Inf}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-Inf/sbsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-Inf/lightsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-Inf}{sbsx}{sl}{
+ <-> ssub * Junicode-Inf/sbsx/it
}{}
+\DeclareFontShape{OT1}{Junicode-Inf}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiboldsemiexpanded/it
+}{}
-% ---- m = regular ----
-\DeclareFontShape{OT1}{Junicode-Inf}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-inf-ot1
-}{}
+% ---- mediumcondensed ----
-\DeclareFontShape{OT1}{Junicode-Inf}{regular}{it}{
- <-> alias * Junicode-Inf/m/it
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{regular}{n}{
- <-> alias * Junicode-Inf/m/n
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-Inf/mediumcondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{m}{sl}{
- <-> ssub * Junicode-Inf/m/it
-}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{regular}{sl}{
- <-> ssub * Junicode-Inf/regular/it
+% ---- sb = semibold ----
+
+\DeclareFontShape{OT1}{Junicode-Inf}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-inf-ot1
}{}
+\DeclareFontShape{OT1}{Junicode-Inf}{semibold}{it}{
+ <-> alias * Junicode-Inf/sb/it
+}{}
-% ---- bx = boldexpanded ----
+\DeclareFontShape{OT1}{Junicode-Inf}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-inf-ot1
+}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{semibold}{n}{
+ <-> alias * Junicode-Inf/sb/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{boldexpanded}{it}{
- <-> alias * Junicode-Inf/bx/it
+\DeclareFontShape{OT1}{Junicode-Inf}{sb}{sl}{
+ <-> ssub * Junicode-Inf/sb/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{semibold}{sl}{
+ <-> ssub * Junicode-Inf/semibold/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{boldexpanded}{n}{
- <-> alias * Junicode-Inf/bx/n
+
+% ---- mediumsemicondensed ----
+
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{bx}{sl}{
- <-> ssub * Junicode-Inf/bx/it
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{boldexpanded}{sl}{
- <-> ssub * Junicode-Inf/boldexpanded/it
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-Inf/mediumsemicondensed/it
}{}
@@ -335,141 +335,141 @@
}{}
-% ---- mediumsemiexpanded ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{semiexpanded}{n}{
+ <-> alias * Junicode-Inf/sx/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/mediumsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-Inf}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-inf-ot1
}{}
-
-% ---- mediumexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{semiexpanded}{it}{
+ <-> alias * Junicode-Inf/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{sx}{sl}{
+ <-> ssub * Junicode-Inf/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{mediumexpanded}{sl}{
- <-> ssub * Junicode-Inf/mediumexpanded/it
+\DeclareFontShape{OT1}{Junicode-Inf}{semiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiexpanded/it
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- medium ----
-\DeclareFontShape{OT1}{Junicode-Inf}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-Inf/sbsx/n
+\DeclareFontShape{OT1}{Junicode-Inf}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{medium}{sl}{
+ <-> ssub * Junicode-Inf/medium/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-Inf/sbsx/it
-}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{sbsx}{sl}{
- <-> ssub * Junicode-Inf/sbsx/it
-}{}
+% ---- bx = boldexpanded ----
-\DeclareFontShape{OT1}{Junicode-Inf}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiboldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-Inf}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-inf-ot1
}{}
+\DeclareFontShape{OT1}{Junicode-Inf}{boldexpanded}{n}{
+ <-> alias * Junicode-Inf/bx/n
+}{}
-% ---- c = condensed ----
+\DeclareFontShape{OT1}{Junicode-Inf}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-inf-ot1
+}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{boldexpanded}{it}{
+ <-> alias * Junicode-Inf/bx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{condensed}{n}{
- <-> alias * Junicode-Inf/c/n
+\DeclareFontShape{OT1}{Junicode-Inf}{bx}{sl}{
+ <-> ssub * Junicode-Inf/bx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{boldexpanded}{sl}{
+ <-> ssub * Junicode-Inf/boldexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{condensed}{it}{
- <-> alias * Junicode-Inf/c/it
+
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{c}{sl}{
- <-> ssub * Junicode-Inf/c/it
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{condensed}{sl}{
- <-> ssub * Junicode-Inf/condensed/it
+\DeclareFontShape{OT1}{Junicode-Inf}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/mediumsemiexpanded/it
}{}
-% ---- x = expanded ----
+% ---- m = regular ----
-\DeclareFontShape{OT1}{Junicode-Inf}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{expanded}{n}{
- <-> alias * Junicode-Inf/x/n
+\DeclareFontShape{OT1}{Junicode-Inf}{regular}{it}{
+ <-> alias * Junicode-Inf/m/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{expanded}{it}{
- <-> alias * Junicode-Inf/x/it
+\DeclareFontShape{OT1}{Junicode-Inf}{regular}{n}{
+ <-> alias * Junicode-Inf/m/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{x}{sl}{
- <-> ssub * Junicode-Inf/x/it
+\DeclareFontShape{OT1}{Junicode-Inf}{m}{sl}{
+ <-> ssub * Junicode-Inf/m/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{expanded}{sl}{
- <-> ssub * Junicode-Inf/expanded/it
+\DeclareFontShape{OT1}{Junicode-Inf}{regular}{sl}{
+ <-> ssub * Junicode-Inf/regular/it
}{}
-% ---- sx = semiexpanded ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{OT1}{Junicode-Inf}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{semiexpanded}{n}{
- <-> alias * Junicode-Inf/sx/n
+\DeclareFontShape{OT1}{Junicode-Inf}{lightcondensed}{n}{
+ <-> alias * Junicode-Inf/lc/n
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-inf-ot1
+\DeclareFontShape{OT1}{Junicode-Inf}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-inf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{semiexpanded}{it}{
- <-> alias * Junicode-Inf/sx/it
+\DeclareFontShape{OT1}{Junicode-Inf}{lightcondensed}{it}{
+ <-> alias * Junicode-Inf/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{sx}{sl}{
- <-> ssub * Junicode-Inf/sx/it
+\DeclareFontShape{OT1}{Junicode-Inf}{lc}{sl}{
+ <-> ssub * Junicode-Inf/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-Inf}{semiexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiexpanded/it
+\DeclareFontShape{OT1}{Junicode-Inf}{lightcondensed}{sl}{
+ <-> ssub * Junicode-Inf/lightcondensed/it
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-LF.fd b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-LF.fd
index a04c33f8827..28dd9eb8717 100644
--- a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-LF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{OT1Junicode-LF.fd}
- [2024/06/03 (autoinst) Font definitions for OT1/Junicode-LF.]
+ [2024/07/21 (autoinst) Font definitions for OT1/Junicode-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,207 +20,210 @@
\DeclareFontFamily{OT1}{Junicode-LF}{}
-% ---- l = light ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{OT1}{Junicode-LF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{light}{scit}{
- <-> alias * Junicode-LF/l/scit
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{light}{it}{
- <-> alias * Junicode-LF/l/it
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-LF/mediumsemicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{light}{sc}{
- <-> alias * Junicode-LF/l/sc
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-LF/mediumsemicondensed/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-lf-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-LF}{light}{n}{
- <-> alias * Junicode-LF/l/n
-}{}
+% ---- sx = semiexpanded ----
-\DeclareFontShape{OT1}{Junicode-LF}{l}{scsl}{
- <-> ssub * Junicode-LF/l/scit
+\DeclareFontShape{OT1}{Junicode-LF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{light}{scsl}{
- <-> ssub * Junicode-LF/light/scit
+\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{n}{
+ <-> alias * Junicode-LF/sx/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{l}{sl}{
- <-> ssub * Junicode-LF/l/it
+\DeclareFontShape{OT1}{Junicode-LF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{light}{sl}{
- <-> ssub * Junicode-LF/light/it
+\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{scit}{
+ <-> alias * Junicode-LF/sx/scit
}{}
-
-% ---- bx = boldexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-LF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{n}{
- <-> alias * Junicode-LF/bx/n
+\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{it}{
+ <-> alias * Junicode-LF/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{sc}{
- <-> alias * Junicode-LF/bx/sc
+\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{sc}{
+ <-> alias * Junicode-LF/sx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sx}{sl}{
+ <-> ssub * Junicode-LF/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{it}{
- <-> alias * Junicode-LF/bx/it
+\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sx}{scsl}{
+ <-> ssub * Junicode-LF/sx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{scit}{
- <-> alias * Junicode-LF/bx/scit
+\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bx}{scsl}{
- <-> ssub * Junicode-LF/bx/scit
+
+% ---- l = light ----
+
+\DeclareFontShape{OT1}{Junicode-LF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-LF/boldexpanded/scit
+\DeclareFontShape{OT1}{Junicode-LF}{light}{sc}{
+ <-> alias * Junicode-LF/l/sc
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bx}{sl}{
- <-> ssub * Junicode-LF/bx/it
+\DeclareFontShape{OT1}{Junicode-LF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{sl}{
- <-> ssub * Junicode-LF/boldexpanded/it
+\DeclareFontShape{OT1}{Junicode-LF}{light}{scit}{
+ <-> alias * Junicode-LF/l/scit
}{}
+\DeclareFontShape{OT1}{Junicode-LF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-lf-ot1
+}{}
-% ---- m = regular ----
+\DeclareFontShape{OT1}{Junicode-LF}{light}{n}{
+ <-> alias * Junicode-LF/l/n
+}{}
-\DeclareFontShape{OT1}{Junicode-LF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{regular}{scit}{
- <-> alias * Junicode-LF/m/scit
+\DeclareFontShape{OT1}{Junicode-LF}{light}{it}{
+ <-> alias * Junicode-LF/l/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{l}{sl}{
+ <-> ssub * Junicode-LF/l/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{regular}{it}{
- <-> alias * Junicode-LF/m/it
+\DeclareFontShape{OT1}{Junicode-LF}{light}{sl}{
+ <-> ssub * Junicode-LF/light/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{l}{scsl}{
+ <-> ssub * Junicode-LF/l/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{regular}{sc}{
- <-> alias * Junicode-LF/m/sc
+\DeclareFontShape{OT1}{Junicode-LF}{light}{scsl}{
+ <-> ssub * Junicode-LF/light/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-lf-ot1
+
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{regular}{n}{
- <-> alias * Junicode-LF/m/n
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{m}{scsl}{
- <-> ssub * Junicode-LF/m/scit
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{regular}{scsl}{
- <-> ssub * Junicode-LF/regular/scit
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{m}{sl}{
- <-> ssub * Junicode-LF/m/it
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{regular}{sl}{
- <-> ssub * Junicode-LF/regular/it
+\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/mediumsemiexpanded/scit
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- m = regular ----
-\DeclareFontShape{OT1}{Junicode-LF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{n}{
- <-> alias * Junicode-LF/lsc/n
+\DeclareFontShape{OT1}{Junicode-LF}{regular}{n}{
+ <-> alias * Junicode-LF/m/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-LF/lsc/sc
+\DeclareFontShape{OT1}{Junicode-LF}{regular}{scit}{
+ <-> alias * Junicode-LF/m/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{it}{
- <-> alias * Junicode-LF/lsc/it
+\DeclareFontShape{OT1}{Junicode-LF}{regular}{it}{
+ <-> alias * Junicode-LF/m/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-LF/lsc/scit
+\DeclareFontShape{OT1}{Junicode-LF}{regular}{sc}{
+ <-> alias * Junicode-LF/m/sc
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lsc}{scsl}{
- <-> ssub * Junicode-LF/lsc/scit
+\DeclareFontShape{OT1}{Junicode-LF}{m}{sl}{
+ <-> ssub * Junicode-LF/m/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-LF/lightsemicondensed/scit
+\DeclareFontShape{OT1}{Junicode-LF}{regular}{sl}{
+ <-> ssub * Junicode-LF/regular/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lsc}{sl}{
- <-> ssub * Junicode-LF/lsc/it
+\DeclareFontShape{OT1}{Junicode-LF}{m}{scsl}{
+ <-> ssub * Junicode-LF/m/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-LF/lightsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-LF}{regular}{scsl}{
+ <-> ssub * Junicode-LF/regular/scit
}{}
@@ -230,177 +233,177 @@
<-> \Junicode@@scale Junicode-MediumItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-lf-sc-ot1
-}{}
-
\DeclareFontShape{OT1}{Junicode-LF}{medium}{n}{
<-> \Junicode@@scale Junicode-Medium-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{medium}{scsl}{
- <-> ssub * Junicode-LF/medium/scit
+\DeclareFontShape{OT1}{Junicode-LF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-lf-sc-ot1
}{}
\DeclareFontShape{OT1}{Junicode-LF}{medium}{sl}{
<-> ssub * Junicode-LF/medium/it
}{}
+\DeclareFontShape{OT1}{Junicode-LF}{medium}{scsl}{
+ <-> ssub * Junicode-LF/medium/scit
+}{}
-% ---- sx = semiexpanded ----
-\DeclareFontShape{OT1}{Junicode-LF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-lf-ot1
+% ---- bx = boldexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-LF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{it}{
- <-> alias * Junicode-LF/sx/it
+\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{sc}{
+ <-> alias * Junicode-LF/bx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{scit}{
- <-> alias * Junicode-LF/sx/scit
+\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{n}{
+ <-> alias * Junicode-LF/bx/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{n}{
- <-> alias * Junicode-LF/sx/n
+\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{scit}{
+ <-> alias * Junicode-LF/bx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{sc}{
- <-> alias * Junicode-LF/sx/sc
+\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{it}{
+ <-> alias * Junicode-LF/bx/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sx}{scsl}{
- <-> ssub * Junicode-LF/sx/scit
+\DeclareFontShape{OT1}{Junicode-LF}{bx}{sl}{
+ <-> ssub * Junicode-LF/bx/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-LF/boldexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sx}{sl}{
- <-> ssub * Junicode-LF/sx/it
+\DeclareFontShape{OT1}{Junicode-LF}{bx}{scsl}{
+ <-> ssub * Junicode-LF/bx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiexpanded/it
+\DeclareFontShape{OT1}{Junicode-LF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-LF/boldexpanded/scit
}{}
-% ---- c = condensed ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{OT1}{Junicode-LF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{condensed}{sc}{
- <-> alias * Junicode-LF/c/sc
+\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{it}{
+ <-> alias * Junicode-LF/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{condensed}{n}{
- <-> alias * Junicode-LF/c/n
+\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{scit}{
+ <-> alias * Junicode-LF/lc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{condensed}{scit}{
- <-> alias * Junicode-LF/c/scit
+\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{n}{
+ <-> alias * Junicode-LF/lc/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{condensed}{it}{
- <-> alias * Junicode-LF/c/it
+\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{sc}{
+ <-> alias * Junicode-LF/lc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{c}{scsl}{
- <-> ssub * Junicode-LF/c/scit
+\DeclareFontShape{OT1}{Junicode-LF}{lc}{sl}{
+ <-> ssub * Junicode-LF/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{condensed}{scsl}{
- <-> ssub * Junicode-LF/condensed/scit
+\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-LF/lightcondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{c}{sl}{
- <-> ssub * Junicode-LF/c/it
+\DeclareFontShape{OT1}{Junicode-LF}{lc}{scsl}{
+ <-> ssub * Junicode-LF/lc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{condensed}{sl}{
- <-> ssub * Junicode-LF/condensed/it
+\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-LF/lightcondensed/scit
}{}
-% ---- x = expanded ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{OT1}{Junicode-LF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{expanded}{sc}{
- <-> alias * Junicode-LF/x/sc
+\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{sc}{
+ <-> alias * Junicode-LF/sc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{expanded}{n}{
- <-> alias * Junicode-LF/x/n
+\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{n}{
+ <-> alias * Junicode-LF/sc/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{expanded}{scit}{
- <-> alias * Junicode-LF/x/scit
+\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{scit}{
+ <-> alias * Junicode-LF/sc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{expanded}{it}{
- <-> alias * Junicode-LF/x/it
+\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{it}{
+ <-> alias * Junicode-LF/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{x}{scsl}{
- <-> ssub * Junicode-LF/x/scit
+\DeclareFontShape{OT1}{Junicode-LF}{sc}{sl}{
+ <-> ssub * Junicode-LF/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{expanded}{scsl}{
- <-> ssub * Junicode-LF/expanded/scit
+\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{sl}{
+ <-> ssub * Junicode-LF/semicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{x}{sl}{
- <-> ssub * Junicode-LF/x/it
+\DeclareFontShape{OT1}{Junicode-LF}{sc}{scsl}{
+ <-> ssub * Junicode-LF/sc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{expanded}{sl}{
- <-> ssub * Junicode-LF/expanded/it
+\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-LF/semicondensed/scit
}{}
@@ -438,6 +441,14 @@
<-> alias * Junicode-LF/sbsx/it
}{}
+\DeclareFontShape{OT1}{Junicode-LF}{sbsx}{sl}{
+ <-> ssub * Junicode-LF/sbsx/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-LF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiboldsemiexpanded/it
+}{}
+
\DeclareFontShape{OT1}{Junicode-LF}{sbsx}{scsl}{
<-> ssub * Junicode-LF/sbsx/scit
}{}
@@ -446,93 +457,133 @@
<-> ssub * Junicode-LF/semiboldsemiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sbsx}{sl}{
- <-> ssub * Junicode-LF/sbsx/it
+
+% ---- bsx = boldsemiexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-LF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiboldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-LF/bsx/sc
}{}
+\DeclareFontShape{OT1}{Junicode-LF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-ot1
+}{}
-% ---- mediumexpanded ----
+\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-LF/bsx/it
+}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-LF/bsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-LF/bsx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-LF/mediumexpanded/scit
+\DeclareFontShape{OT1}{Junicode-LF}{bsx}{sl}{
+ <-> ssub * Junicode-LF/bsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumexpanded/it
+\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/boldsemiexpanded/it
}{}
+\DeclareFontShape{OT1}{Junicode-LF}{bsx}{scsl}{
+ <-> ssub * Junicode-LF/bsx/scit
+}{}
-% ---- mediumsemiexpanded ----
+\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/boldsemiexpanded/scit
+}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-sc-ot1
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{OT1}{Junicode-LF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{semibold}{n}{
+ <-> alias * Junicode-LF/sb/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{semibold}{scit}{
+ <-> alias * Junicode-LF/sb/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/mediumsemiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-LF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-LF}{semibold}{it}{
+ <-> alias * Junicode-LF/sb/it
}{}
+\DeclareFontShape{OT1}{Junicode-LF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-lf-sc-ot1
+}{}
-% ---- mediumsemicondensed ----
+\DeclareFontShape{OT1}{Junicode-LF}{semibold}{sc}{
+ <-> alias * Junicode-LF/sb/sc
+}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sb}{sl}{
+ <-> ssub * Junicode-LF/sb/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{semibold}{sl}{
+ <-> ssub * Junicode-LF/semibold/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sb}{scsl}{
+ <-> ssub * Junicode-LF/sb/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{semibold}{scsl}{
+ <-> ssub * Junicode-LF/semibold/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-LF/mediumsemicondensed/scit
+
+% ---- mediumcondensed ----
+
+\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-LF/mediumsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-lf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-lf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-lf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-LF/mediumcondensed/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-LF/mediumcondensed/scit
}{}
@@ -546,14 +597,6 @@
<-> alias * Junicode-LF/sbx/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-LF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-LF/sbx/scit
-}{}
-
\DeclareFontShape{OT1}{Junicode-LF}{sbx}{n}{
<-> \Junicode@@scale Junicode-ExpSmBold-lf-ot1
}{}
@@ -562,20 +605,20 @@
<-> alias * Junicode-LF/sbx/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-LF/sbx/sc
+\DeclareFontShape{OT1}{Junicode-LF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-LF/sbx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sbx}{scsl}{
- <-> ssub * Junicode-LF/sbx/scit
+\DeclareFontShape{OT1}{Junicode-LF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiboldexpanded/scit
+\DeclareFontShape{OT1}{Junicode-LF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-LF/sbx/sc
}{}
\DeclareFontShape{OT1}{Junicode-LF}{sbx}{sl}{
@@ -586,208 +629,192 @@
<-> ssub * Junicode-LF/semiboldexpanded/it
}{}
-
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{OT1}{Junicode-LF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{sbx}{scsl}{
+ <-> ssub * Junicode-LF/sbx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{scit}{
- <-> alias * Junicode-LF/lc/scit
+\DeclareFontShape{OT1}{Junicode-LF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiboldexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-lf-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{it}{
- <-> alias * Junicode-LF/lc/it
-}{}
+% ---- c = condensed ----
-\DeclareFontShape{OT1}{Junicode-LF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{sc}{
- <-> alias * Junicode-LF/lc/sc
+\DeclareFontShape{OT1}{Junicode-LF}{condensed}{it}{
+ <-> alias * Junicode-LF/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{n}{
- <-> alias * Junicode-LF/lc/n
+\DeclareFontShape{OT1}{Junicode-LF}{condensed}{n}{
+ <-> alias * Junicode-LF/c/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lc}{scsl}{
- <-> ssub * Junicode-LF/lc/scit
+\DeclareFontShape{OT1}{Junicode-LF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-LF/lightcondensed/scit
+\DeclareFontShape{OT1}{Junicode-LF}{condensed}{scit}{
+ <-> alias * Junicode-LF/c/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lc}{sl}{
- <-> ssub * Junicode-LF/lc/it
+\DeclareFontShape{OT1}{Junicode-LF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{lightcondensed}{sl}{
- <-> ssub * Junicode-LF/lightcondensed/it
+\DeclareFontShape{OT1}{Junicode-LF}{condensed}{sc}{
+ <-> alias * Junicode-LF/c/sc
}{}
-
-% ---- bsx = boldsemiexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-LF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{c}{sl}{
+ <-> ssub * Junicode-LF/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-LF/bsx/it
+\DeclareFontShape{OT1}{Junicode-LF}{condensed}{sl}{
+ <-> ssub * Junicode-LF/condensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{c}{scsl}{
+ <-> ssub * Junicode-LF/c/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-LF/bsx/scit
+\DeclareFontShape{OT1}{Junicode-LF}{condensed}{scsl}{
+ <-> ssub * Junicode-LF/condensed/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-lf-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-LF/bsx/n
-}{}
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{OT1}{Junicode-LF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-LF/bsx/sc
+\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-LF/lsc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bsx}{scsl}{
- <-> ssub * Junicode-LF/bsx/scit
+\DeclareFontShape{OT1}{Junicode-LF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/boldsemiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-LF/lsc/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bsx}{sl}{
- <-> ssub * Junicode-LF/bsx/it
+\DeclareFontShape{OT1}{Junicode-LF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/boldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-LF/lsc/scit
}{}
-
-% ---- sc = semicondensed ----
-
-\DeclareFontShape{OT1}{Junicode-LF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{it}{
- <-> alias * Junicode-LF/sc/it
+\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-LF/lsc/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{lsc}{sl}{
+ <-> ssub * Junicode-LF/lsc/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{scit}{
- <-> alias * Junicode-LF/sc/scit
+\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-LF/lightsemicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{lsc}{scsl}{
+ <-> ssub * Junicode-LF/lsc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{n}{
- <-> alias * Junicode-LF/sc/n
+\DeclareFontShape{OT1}{Junicode-LF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-LF/lightsemicondensed/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-lf-sc-ot1
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{sc}{
- <-> alias * Junicode-LF/sc/sc
+\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sc}{scsl}{
- <-> ssub * Junicode-LF/sc/scit
+\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{scsl}{
- <-> ssub * Junicode-LF/semicondensed/scit
+\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sc}{sl}{
- <-> ssub * Junicode-LF/sc/it
+\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semicondensed}{sl}{
- <-> ssub * Junicode-LF/semicondensed/it
+\DeclareFontShape{OT1}{Junicode-LF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-LF/mediumexpanded/scit
}{}
-% ---- sb = semibold ----
+% ---- x = expanded ----
-\DeclareFontShape{OT1}{Junicode-LF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semibold}{it}{
- <-> alias * Junicode-LF/sb/it
+\DeclareFontShape{OT1}{Junicode-LF}{expanded}{scit}{
+ <-> alias * Junicode-LF/x/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semibold}{scit}{
- <-> alias * Junicode-LF/sb/scit
+\DeclareFontShape{OT1}{Junicode-LF}{expanded}{n}{
+ <-> alias * Junicode-LF/x/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-lf-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-lf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semibold}{n}{
- <-> alias * Junicode-LF/sb/n
+\DeclareFontShape{OT1}{Junicode-LF}{expanded}{it}{
+ <-> alias * Junicode-LF/x/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semibold}{sc}{
- <-> alias * Junicode-LF/sb/sc
+\DeclareFontShape{OT1}{Junicode-LF}{expanded}{sc}{
+ <-> alias * Junicode-LF/x/sc
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sb}{scsl}{
- <-> ssub * Junicode-LF/sb/scit
+\DeclareFontShape{OT1}{Junicode-LF}{x}{sl}{
+ <-> ssub * Junicode-LF/x/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semibold}{scsl}{
- <-> ssub * Junicode-LF/semibold/scit
+\DeclareFontShape{OT1}{Junicode-LF}{expanded}{sl}{
+ <-> ssub * Junicode-LF/expanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{sb}{sl}{
- <-> ssub * Junicode-LF/sb/it
+\DeclareFontShape{OT1}{Junicode-LF}{x}{scsl}{
+ <-> ssub * Junicode-LF/x/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{semibold}{sl}{
- <-> ssub * Junicode-LF/semibold/it
+\DeclareFontShape{OT1}{Junicode-LF}{expanded}{scsl}{
+ <-> ssub * Junicode-LF/expanded/scit
}{}
@@ -801,12 +828,12 @@
<-> alias * Junicode-LF/b/n
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-lf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-LF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bold}{sc}{
- <-> alias * Junicode-LF/b/sc
+\DeclareFontShape{OT1}{Junicode-LF}{bold}{scit}{
+ <-> alias * Junicode-LF/b/scit
}{}
\DeclareFontShape{OT1}{Junicode-LF}{b}{it}{
@@ -817,20 +844,12 @@
<-> alias * Junicode-LF/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-LF}{bold}{scit}{
- <-> alias * Junicode-LF/b/scit
-}{}
-
-\DeclareFontShape{OT1}{Junicode-LF}{b}{scsl}{
- <-> ssub * Junicode-LF/b/scit
+\DeclareFontShape{OT1}{Junicode-LF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-lf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{bold}{scsl}{
- <-> ssub * Junicode-LF/bold/scit
+\DeclareFontShape{OT1}{Junicode-LF}{bold}{sc}{
+ <-> alias * Junicode-LF/b/sc
}{}
\DeclareFontShape{OT1}{Junicode-LF}{b}{sl}{
@@ -841,31 +860,12 @@
<-> ssub * Junicode-LF/bold/it
}{}
-
-% ---- mediumcondensed ----
-
-\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-lf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-LF/mediumcondensed/scit
+\DeclareFontShape{OT1}{Junicode-LF}{b}{scsl}{
+ <-> ssub * Junicode-LF/b/scit
}{}
-\DeclareFontShape{OT1}{Junicode-LF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-LF/mediumcondensed/it
+\DeclareFontShape{OT1}{Junicode-LF}{bold}{scsl}{
+ <-> ssub * Junicode-LF/bold/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-OsF.fd b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-OsF.fd
index 3c8fa652ba3..7cefdb7a0e1 100644
--- a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-OsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{OT1Junicode-OsF.fd}
- [2024/06/03 (autoinst) Font definitions for OT1/Junicode-OsF.]
+ [2024/07/21 (autoinst) Font definitions for OT1/Junicode-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,435 +20,446 @@
\DeclareFontFamily{OT1}{Junicode-OsF}{}
-% ---- mediumsemicondensed ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-OsF/bsx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/bsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-OsF/mediumsemicondensed/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-OsF/bsx/scit
}{}
-
-% ---- sbx = semiboldexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{it}{
- <-> alias * Junicode-OsF/sbx/it
+\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{sl}{
+ <-> ssub * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-OsF/sbx/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/boldsemiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{scsl}{
+ <-> ssub * Junicode-OsF/bsx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-OsF/sbx/n
+\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/boldsemiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-osf-sc-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-OsF/sbx/sc
-}{}
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{scsl}{
- <-> ssub * Junicode-OsF/sbx/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiboldexpanded/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-OsF/sbsx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{sl}{
- <-> ssub * Junicode-OsF/sbx/it
+\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiboldexpanded/it
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-OsF/sbsx/it
}{}
-
-% ---- bsx = boldsemiexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/bsx/n
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/sbsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-OsF/bsx/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-OsF/sbsx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{sl}{
+ <-> ssub * Junicode-OsF/sbsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-OsF/bsx/it
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{scsl}{
+ <-> ssub * Junicode-OsF/sbsx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-OsF/bsx/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiboldsemiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{scsl}{
- <-> ssub * Junicode-OsF/bsx/scit
+
+% ---- sc = semicondensed ----
+
+\DeclareFontShape{OT1}{Junicode-OsF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/boldsemiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{sc}{
+ <-> alias * Junicode-OsF/sc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bsx}{sl}{
- <-> ssub * Junicode-OsF/bsx/it
+\DeclareFontShape{OT1}{Junicode-OsF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/boldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{it}{
+ <-> alias * Junicode-OsF/sc/it
}{}
+\DeclareFontShape{OT1}{Junicode-OsF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-osf-ot1
+}{}
-% ---- lc = lightcondensed ----
+\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{n}{
+ <-> alias * Junicode-OsF/sc/n
+}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{sc}{
- <-> alias * Junicode-OsF/lc/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{scit}{
+ <-> alias * Junicode-OsF/sc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sc}{sl}{
+ <-> ssub * Junicode-OsF/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{n}{
- <-> alias * Junicode-OsF/lc/n
+\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{sl}{
+ <-> ssub * Junicode-OsF/semicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sc}{scsl}{
+ <-> ssub * Junicode-OsF/sc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{scit}{
- <-> alias * Junicode-OsF/lc/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/semicondensed/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-osf-ot1
+
+% ---- mediumcondensed ----
+
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{it}{
- <-> alias * Junicode-OsF/lc/it
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lc}{scsl}{
- <-> ssub * Junicode-OsF/lc/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-OsF/lightcondensed/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lc}{sl}{
- <-> ssub * Junicode-OsF/lc/it
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumcondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-OsF/lightcondensed/it
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-OsF/mediumcondensed/scit
}{}
-% ---- sc = semicondensed ----
+% ---- sb = semibold ----
-\DeclareFontShape{OT1}{Junicode-OsF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{scit}{
- <-> alias * Junicode-OsF/sc/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{sc}{
+ <-> alias * Junicode-OsF/sb/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{it}{
- <-> alias * Junicode-OsF/sc/it
+\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{n}{
+ <-> alias * Junicode-OsF/sb/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{sc}{
- <-> alias * Junicode-OsF/sc/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{scit}{
+ <-> alias * Junicode-OsF/sb/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{n}{
- <-> alias * Junicode-OsF/sc/n
+\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{it}{
+ <-> alias * Junicode-OsF/sb/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sc}{scsl}{
- <-> ssub * Junicode-OsF/sc/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{sb}{sl}{
+ <-> ssub * Junicode-OsF/sb/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{scsl}{
- <-> ssub * Junicode-OsF/semicondensed/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{sl}{
+ <-> ssub * Junicode-OsF/semibold/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sc}{sl}{
- <-> ssub * Junicode-OsF/sc/it
+\DeclareFontShape{OT1}{Junicode-OsF}{sb}{scsl}{
+ <-> ssub * Junicode-OsF/sb/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semicondensed}{sl}{
- <-> ssub * Junicode-OsF/semicondensed/it
+\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{scsl}{
+ <-> ssub * Junicode-OsF/semibold/scit
}{}
-% ---- sb = semibold ----
+% ---- l = light ----
-\DeclareFontShape{OT1}{Junicode-OsF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{scit}{
- <-> alias * Junicode-OsF/sb/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{light}{it}{
+ <-> alias * Junicode-OsF/l/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{it}{
- <-> alias * Junicode-OsF/sb/it
+\DeclareFontShape{OT1}{Junicode-OsF}{light}{n}{
+ <-> alias * Junicode-OsF/l/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{sc}{
- <-> alias * Junicode-OsF/sb/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{light}{scit}{
+ <-> alias * Junicode-OsF/l/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{n}{
- <-> alias * Junicode-OsF/sb/n
+\DeclareFontShape{OT1}{Junicode-OsF}{light}{sc}{
+ <-> alias * Junicode-OsF/l/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sb}{scsl}{
- <-> ssub * Junicode-OsF/sb/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{l}{sl}{
+ <-> ssub * Junicode-OsF/l/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{scsl}{
- <-> ssub * Junicode-OsF/semibold/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{light}{sl}{
+ <-> ssub * Junicode-OsF/light/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sb}{sl}{
- <-> ssub * Junicode-OsF/sb/it
+\DeclareFontShape{OT1}{Junicode-OsF}{l}{scsl}{
+ <-> ssub * Junicode-OsF/l/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semibold}{sl}{
- <-> ssub * Junicode-OsF/semibold/it
+\DeclareFontShape{OT1}{Junicode-OsF}{light}{scsl}{
+ <-> ssub * Junicode-OsF/light/scit
}{}
-% ---- b = bold ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{OT1}{Junicode-OsF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bold}{sc}{
- <-> alias * Junicode-OsF/b/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{scit}{
+ <-> alias * Junicode-OsF/sx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bold}{n}{
- <-> alias * Junicode-OsF/b/n
+\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{n}{
+ <-> alias * Junicode-OsF/sx/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bold}{scit}{
- <-> alias * Junicode-OsF/b/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{it}{
+ <-> alias * Junicode-OsF/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bold}{it}{
- <-> alias * Junicode-OsF/b/it
+\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{sc}{
+ <-> alias * Junicode-OsF/sx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{b}{scsl}{
- <-> ssub * Junicode-OsF/b/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{sx}{sl}{
+ <-> ssub * Junicode-OsF/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bold}{scsl}{
- <-> ssub * Junicode-OsF/bold/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{b}{sl}{
- <-> ssub * Junicode-OsF/b/it
+\DeclareFontShape{OT1}{Junicode-OsF}{sx}{scsl}{
+ <-> ssub * Junicode-OsF/sx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bold}{sl}{
- <-> ssub * Junicode-OsF/bold/it
+\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiexpanded/scit
}{}
-% ---- mediumcondensed ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-OsF/mediumcondensed/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumcondensed/it
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/mediumsemicondensed/scit
}{}
-% ---- l = light ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{OT1}{Junicode-OsF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{light}{scit}{
- <-> alias * Junicode-OsF/l/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{sc}{
+ <-> alias * Junicode-OsF/lc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{light}{it}{
- <-> alias * Junicode-OsF/l/it
+\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{n}{
+ <-> alias * Junicode-OsF/lc/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{light}{sc}{
- <-> alias * Junicode-OsF/l/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{scit}{
+ <-> alias * Junicode-OsF/lc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{light}{n}{
- <-> alias * Junicode-OsF/l/n
+\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{it}{
+ <-> alias * Junicode-OsF/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{l}{scsl}{
- <-> ssub * Junicode-OsF/l/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{lc}{sl}{
+ <-> ssub * Junicode-OsF/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{light}{scsl}{
- <-> ssub * Junicode-OsF/light/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightcondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{l}{sl}{
- <-> ssub * Junicode-OsF/l/it
+\DeclareFontShape{OT1}{Junicode-OsF}{lc}{scsl}{
+ <-> ssub * Junicode-OsF/lc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{light}{sl}{
- <-> ssub * Junicode-OsF/light/it
+\DeclareFontShape{OT1}{Junicode-OsF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-OsF/lightcondensed/scit
}{}
-% ---- bx = boldexpanded ----
+% ---- medium ----
-\DeclareFontShape{OT1}{Junicode-OsF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{boldexpanded}{scit}{
- <-> alias * Junicode-OsF/bx/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{boldexpanded}{it}{
- <-> alias * Junicode-OsF/bx/it
+\DeclareFontShape{OT1}{Junicode-OsF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-osf-sc-ot1
}{}
+\DeclareFontShape{OT1}{Junicode-OsF}{medium}{sl}{
+ <-> ssub * Junicode-OsF/medium/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-OsF}{medium}{scsl}{
+ <-> ssub * Junicode-OsF/medium/scit
+}{}
+
+
+% ---- bx = boldexpanded ----
+
\DeclareFontShape{OT1}{Junicode-OsF}{bx}{sc}{
<-> \Junicode@@scale Junicode-ExpBold-osf-sc-ot1
}{}
@@ -465,12 +476,20 @@
<-> alias * Junicode-OsF/bx/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{bx}{scsl}{
- <-> ssub * Junicode-OsF/bx/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-OsF/boldexpanded/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{boldexpanded}{scit}{
+ <-> alias * Junicode-OsF/bx/scit
+}{}
+
+\DeclareFontShape{OT1}{Junicode-OsF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-osf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Junicode-OsF}{boldexpanded}{it}{
+ <-> alias * Junicode-OsF/bx/it
}{}
\DeclareFontShape{OT1}{Junicode-OsF}{bx}{sl}{
@@ -481,15 +500,23 @@
<-> ssub * Junicode-OsF/boldexpanded/it
}{}
+\DeclareFontShape{OT1}{Junicode-OsF}{bx}{scsl}{
+ <-> ssub * Junicode-OsF/bx/scit
+}{}
+
+\DeclareFontShape{OT1}{Junicode-OsF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/boldexpanded/scit
+}{}
+
% ---- m = regular ----
-\DeclareFontShape{OT1}{Junicode-OsF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{regular}{it}{
- <-> alias * Junicode-OsF/m/it
+\DeclareFontShape{OT1}{Junicode-OsF}{regular}{n}{
+ <-> alias * Junicode-OsF/m/n
}{}
\DeclareFontShape{OT1}{Junicode-OsF}{m}{scit}{
@@ -500,12 +527,12 @@
<-> alias * Junicode-OsF/m/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{regular}{n}{
- <-> alias * Junicode-OsF/m/n
+\DeclareFontShape{OT1}{Junicode-OsF}{regular}{it}{
+ <-> alias * Junicode-OsF/m/it
}{}
\DeclareFontShape{OT1}{Junicode-OsF}{m}{sc}{
@@ -516,14 +543,6 @@
<-> alias * Junicode-OsF/m/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{m}{scsl}{
- <-> ssub * Junicode-OsF/m/scit
-}{}
-
-\DeclareFontShape{OT1}{Junicode-OsF}{regular}{scsl}{
- <-> ssub * Junicode-OsF/regular/scit
-}{}
-
\DeclareFontShape{OT1}{Junicode-OsF}{m}{sl}{
<-> ssub * Junicode-OsF/m/it
}{}
@@ -532,184 +551,168 @@
<-> ssub * Junicode-OsF/regular/it
}{}
-
-% ---- lsc = lightsemicondensed ----
-
-\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-OsF/lsc/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{m}{scsl}{
+ <-> ssub * Junicode-OsF/m/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{regular}{scsl}{
+ <-> ssub * Junicode-OsF/regular/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-OsF/lsc/n
-}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-OsF/lsc/scit
-}{}
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-OsF/lsc/it
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{scsl}{
- <-> ssub * Junicode-OsF/lsc/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-OsF/lightsemicondensed/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{sl}{
- <-> ssub * Junicode-OsF/lsc/it
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/lightsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/mediumsemiexpanded/scit
}{}
-% ---- medium ----
+% ---- mediumexpanded ----
-\DeclareFontShape{OT1}{Junicode-OsF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{medium}{scsl}{
- <-> ssub * Junicode-OsF/medium/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{medium}{sl}{
- <-> ssub * Junicode-OsF/medium/it
+\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/mediumexpanded/scit
}{}
-% ---- sx = semiexpanded ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{OT1}{Junicode-OsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{it}{
- <-> alias * Junicode-OsF/sx/it
+\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-OsF/lsc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{scit}{
- <-> alias * Junicode-OsF/sx/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{n}{
- <-> alias * Junicode-OsF/sx/n
+\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-OsF/lsc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{sc}{
- <-> alias * Junicode-OsF/sx/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-OsF/lsc/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sx}{scsl}{
- <-> ssub * Junicode-OsF/sx/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{sl}{
+ <-> ssub * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightsemicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sx}{sl}{
- <-> ssub * Junicode-OsF/sx/it
+\DeclareFontShape{OT1}{Junicode-OsF}{lsc}{scsl}{
+ <-> ssub * Junicode-OsF/lsc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiexpanded/it
+\DeclareFontShape{OT1}{Junicode-OsF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/lightsemicondensed/scit
}{}
-% ---- c = condensed ----
+% ---- b = bold ----
-\DeclareFontShape{OT1}{Junicode-OsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{it}{
- <-> alias * Junicode-OsF/c/it
+\DeclareFontShape{OT1}{Junicode-OsF}{bold}{scit}{
+ <-> alias * Junicode-OsF/b/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{scit}{
- <-> alias * Junicode-OsF/c/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{bold}{n}{
+ <-> alias * Junicode-OsF/b/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{n}{
- <-> alias * Junicode-OsF/c/n
+\DeclareFontShape{OT1}{Junicode-OsF}{bold}{it}{
+ <-> alias * Junicode-OsF/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{sc}{
- <-> alias * Junicode-OsF/c/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{bold}{sc}{
+ <-> alias * Junicode-OsF/b/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{c}{scsl}{
- <-> ssub * Junicode-OsF/c/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{b}{sl}{
+ <-> ssub * Junicode-OsF/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{scsl}{
- <-> ssub * Junicode-OsF/condensed/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{bold}{sl}{
+ <-> ssub * Junicode-OsF/bold/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{c}{sl}{
- <-> ssub * Junicode-OsF/c/it
+\DeclareFontShape{OT1}{Junicode-OsF}{b}{scsl}{
+ <-> ssub * Junicode-OsF/b/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{sl}{
- <-> ssub * Junicode-OsF/condensed/it
+\DeclareFontShape{OT1}{Junicode-OsF}{bold}{scsl}{
+ <-> ssub * Junicode-OsF/bold/scit
}{}
@@ -723,6 +726,14 @@
<-> alias * Junicode-OsF/x/scit
}{}
+\DeclareFontShape{OT1}{Junicode-OsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-osf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Junicode-OsF}{expanded}{n}{
+ <-> alias * Junicode-OsF/x/n
+}{}
+
\DeclareFontShape{OT1}{Junicode-OsF}{x}{it}{
<-> \Junicode@@scale Junicode-ExpItalic-osf-ot1
}{}
@@ -739,12 +750,12 @@
<-> alias * Junicode-OsF/x/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{x}{sl}{
+ <-> ssub * Junicode-OsF/x/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{expanded}{n}{
- <-> alias * Junicode-OsF/x/n
+\DeclareFontShape{OT1}{Junicode-OsF}{expanded}{sl}{
+ <-> ssub * Junicode-OsF/expanded/it
}{}
\DeclareFontShape{OT1}{Junicode-OsF}{x}{scsl}{
@@ -755,117 +766,106 @@
<-> ssub * Junicode-OsF/expanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{x}{sl}{
- <-> ssub * Junicode-OsF/x/it
-}{}
-
-\DeclareFontShape{OT1}{Junicode-OsF}{expanded}{sl}{
- <-> ssub * Junicode-OsF/expanded/it
-}{}
-
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-OsF/sbsx/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-OsF/sbx/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-OsF/sbsx/it
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-OsF/sbx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-OsF/sbsx/sc
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-OsF/sbx/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/sbsx/n
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-OsF/sbx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{scsl}{
- <-> ssub * Junicode-OsF/sbsx/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{sl}{
+ <-> ssub * Junicode-OsF/sbx/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiboldsemiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiboldexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{sbsx}{sl}{
- <-> ssub * Junicode-OsF/sbsx/it
+\DeclareFontShape{OT1}{Junicode-OsF}{sbx}{scsl}{
+ <-> ssub * Junicode-OsF/sbx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiboldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-OsF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiboldexpanded/scit
}{}
-% ---- mediumexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{it}{
+ <-> alias * Junicode-OsF/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-osf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{n}{
+ <-> alias * Junicode-OsF/c/n
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-OsF/mediumexpanded/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumexpanded/it
+\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{scit}{
+ <-> alias * Junicode-OsF/c/scit
}{}
-
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-osf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{sc}{
+ <-> alias * Junicode-OsF/c/sc
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{c}{sl}{
+ <-> ssub * Junicode-OsF/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{sl}{
+ <-> ssub * Junicode-OsF/condensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/mediumsemiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-OsF}{c}{scsl}{
+ <-> ssub * Junicode-OsF/c/scit
}{}
-\DeclareFontShape{OT1}{Junicode-OsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-OsF}{condensed}{scsl}{
+ <-> ssub * Junicode-OsF/condensed/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-Sup.fd b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-Sup.fd
index 3e51e57f5ae..337961822dd 100644
--- a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-Sup.fd
+++ b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{OT1Junicode-Sup.fd}
- [2024/06/03 (autoinst) Font definitions for OT1/Junicode-Sup.]
+ [2024/07/21 (autoinst) Font definitions for OT1/Junicode-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,168 +20,207 @@
\DeclareFontFamily{OT1}{Junicode-Sup}{}
-% ---- m = regular ----
+% ---- c = condensed ----
-\DeclareFontShape{OT1}{Junicode-Sup}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{regular}{n}{
- <-> alias * Junicode-Sup/m/n
+\DeclareFontShape{OT1}{Junicode-Sup}{condensed}{it}{
+ <-> alias * Junicode-Sup/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{regular}{it}{
- <-> alias * Junicode-Sup/m/it
+\DeclareFontShape{OT1}{Junicode-Sup}{condensed}{n}{
+ <-> alias * Junicode-Sup/c/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{m}{sl}{
- <-> ssub * Junicode-Sup/m/it
+\DeclareFontShape{OT1}{Junicode-Sup}{c}{sl}{
+ <-> ssub * Junicode-Sup/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{regular}{sl}{
- <-> ssub * Junicode-Sup/regular/it
+\DeclareFontShape{OT1}{Junicode-Sup}{condensed}{sl}{
+ <-> ssub * Junicode-Sup/condensed/it
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{OT1}{Junicode-Sup}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{lightsemicondensed}{it}{
- <-> alias * Junicode-Sup/lsc/it
+\DeclareFontShape{OT1}{Junicode-Sup}{semiboldexpanded}{n}{
+ <-> alias * Junicode-Sup/sbx/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{lightsemicondensed}{n}{
- <-> alias * Junicode-Sup/lsc/n
+\DeclareFontShape{OT1}{Junicode-Sup}{semiboldexpanded}{it}{
+ <-> alias * Junicode-Sup/sbx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{lsc}{sl}{
- <-> ssub * Junicode-Sup/lsc/it
+\DeclareFontShape{OT1}{Junicode-Sup}{sbx}{sl}{
+ <-> ssub * Junicode-Sup/sbx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-Sup/lightsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-Sup}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiboldexpanded/it
}{}
-% ---- medium ----
+% ---- x = expanded ----
-\DeclareFontShape{OT1}{Junicode-Sup}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{expanded}{it}{
+ <-> alias * Junicode-Sup/x/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{medium}{sl}{
- <-> ssub * Junicode-Sup/medium/it
+\DeclareFontShape{OT1}{Junicode-Sup}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-sup-ot1
}{}
+\DeclareFontShape{OT1}{Junicode-Sup}{expanded}{n}{
+ <-> alias * Junicode-Sup/x/n
+}{}
-% ---- l = light ----
+\DeclareFontShape{OT1}{Junicode-Sup}{x}{sl}{
+ <-> ssub * Junicode-Sup/x/it
+}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{expanded}{sl}{
+ <-> ssub * Junicode-Sup/expanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{light}{it}{
- <-> alias * Junicode-Sup/l/it
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{Junicode-Sup}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{bold}{it}{
+ <-> alias * Junicode-Sup/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{light}{n}{
- <-> alias * Junicode-Sup/l/n
+\DeclareFontShape{OT1}{Junicode-Sup}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{l}{sl}{
- <-> ssub * Junicode-Sup/l/it
+\DeclareFontShape{OT1}{Junicode-Sup}{bold}{n}{
+ <-> alias * Junicode-Sup/b/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{light}{sl}{
- <-> ssub * Junicode-Sup/light/it
+\DeclareFontShape{OT1}{Junicode-Sup}{b}{sl}{
+ <-> ssub * Junicode-Sup/b/it
}{}
+\DeclareFontShape{OT1}{Junicode-Sup}{bold}{sl}{
+ <-> ssub * Junicode-Sup/bold/it
+}{}
-% ---- bx = boldexpanded ----
-\DeclareFontShape{OT1}{Junicode-Sup}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-sup-ot1
+% ---- mediumexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-Sup}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{boldexpanded}{n}{
- <-> alias * Junicode-Sup/bx/n
+\DeclareFontShape{OT1}{Junicode-Sup}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-Sup/mediumexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{boldexpanded}{it}{
- <-> alias * Junicode-Sup/bx/it
+
+% ---- lsc = lightsemicondensed ----
+
+\DeclareFontShape{OT1}{Junicode-Sup}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{bx}{sl}{
- <-> ssub * Junicode-Sup/bx/it
+\DeclareFontShape{OT1}{Junicode-Sup}{lightsemicondensed}{it}{
+ <-> alias * Junicode-Sup/lsc/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{boldexpanded}{sl}{
- <-> ssub * Junicode-Sup/boldexpanded/it
+\DeclareFontShape{OT1}{Junicode-Sup}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-sup-ot1
}{}
+\DeclareFontShape{OT1}{Junicode-Sup}{lightsemicondensed}{n}{
+ <-> alias * Junicode-Sup/lsc/n
+}{}
-% ---- sbsx = semiboldsemiexpanded ----
+\DeclareFontShape{OT1}{Junicode-Sup}{lsc}{sl}{
+ <-> ssub * Junicode-Sup/lsc/it
+}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-Sup/lightsemicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-Sup/sbsx/it
+
+% ---- lc = lightcondensed ----
+
+\DeclareFontShape{OT1}{Junicode-Sup}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{lightcondensed}{n}{
+ <-> alias * Junicode-Sup/lc/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-Sup/sbsx/n
+\DeclareFontShape{OT1}{Junicode-Sup}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{sbsx}{sl}{
- <-> ssub * Junicode-Sup/sbsx/it
+\DeclareFontShape{OT1}{Junicode-Sup}{lightcondensed}{it}{
+ <-> alias * Junicode-Sup/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiboldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-Sup}{lc}{sl}{
+ <-> ssub * Junicode-Sup/lc/it
}{}
+\DeclareFontShape{OT1}{Junicode-Sup}{lightcondensed}{sl}{
+ <-> ssub * Junicode-Sup/lightcondensed/it
+}{}
-% ---- mediumexpanded ----
-\DeclareFontShape{OT1}{Junicode-Sup}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-sup-ot1
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{Junicode-Sup}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{regular}{n}{
+ <-> alias * Junicode-Sup/m/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{mediumexpanded}{sl}{
- <-> ssub * Junicode-Sup/mediumexpanded/it
+\DeclareFontShape{OT1}{Junicode-Sup}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{Junicode-Sup}{regular}{it}{
+ <-> alias * Junicode-Sup/m/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-Sup}{m}{sl}{
+ <-> ssub * Junicode-Sup/m/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-Sup}{regular}{sl}{
+ <-> ssub * Junicode-Sup/regular/it
}{}
@@ -200,138 +239,114 @@
}{}
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-Sup}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-sup-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-Sup}{semiexpanded}{it}{
- <-> alias * Junicode-Sup/sx/it
-}{}
-
-\DeclareFontShape{OT1}{Junicode-Sup}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-sup-ot1
-}{}
+% ---- medium ----
-\DeclareFontShape{OT1}{Junicode-Sup}{semiexpanded}{n}{
- <-> alias * Junicode-Sup/sx/n
+\DeclareFontShape{OT1}{Junicode-Sup}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{sx}{sl}{
- <-> ssub * Junicode-Sup/sx/it
+\DeclareFontShape{OT1}{Junicode-Sup}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{semiexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiexpanded/it
+\DeclareFontShape{OT1}{Junicode-Sup}{medium}{sl}{
+ <-> ssub * Junicode-Sup/medium/it
}{}
-% ---- x = expanded ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{OT1}{Junicode-Sup}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{expanded}{n}{
- <-> alias * Junicode-Sup/x/n
+\DeclareFontShape{OT1}{Junicode-Sup}{boldexpanded}{it}{
+ <-> alias * Junicode-Sup/bx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{expanded}{it}{
- <-> alias * Junicode-Sup/x/it
+\DeclareFontShape{OT1}{Junicode-Sup}{boldexpanded}{n}{
+ <-> alias * Junicode-Sup/bx/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{x}{sl}{
- <-> ssub * Junicode-Sup/x/it
+\DeclareFontShape{OT1}{Junicode-Sup}{bx}{sl}{
+ <-> ssub * Junicode-Sup/bx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{expanded}{sl}{
- <-> ssub * Junicode-Sup/expanded/it
+\DeclareFontShape{OT1}{Junicode-Sup}{boldexpanded}{sl}{
+ <-> ssub * Junicode-Sup/boldexpanded/it
}{}
-% ---- c = condensed ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{OT1}{Junicode-Sup}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{condensed}{it}{
- <-> alias * Junicode-Sup/c/it
+\DeclareFontShape{OT1}{Junicode-Sup}{semiexpanded}{it}{
+ <-> alias * Junicode-Sup/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{condensed}{n}{
- <-> alias * Junicode-Sup/c/n
+\DeclareFontShape{OT1}{Junicode-Sup}{semiexpanded}{n}{
+ <-> alias * Junicode-Sup/sx/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{c}{sl}{
- <-> ssub * Junicode-Sup/c/it
+\DeclareFontShape{OT1}{Junicode-Sup}{sx}{sl}{
+ <-> ssub * Junicode-Sup/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{condensed}{sl}{
- <-> ssub * Junicode-Sup/condensed/it
+\DeclareFontShape{OT1}{Junicode-Sup}{semiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiexpanded/it
}{}
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{OT1}{Junicode-Sup}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-sup-ot1
-}{}
+% ---- l = light ----
-\DeclareFontShape{OT1}{Junicode-Sup}{lightcondensed}{it}{
- <-> alias * Junicode-Sup/lc/it
+\DeclareFontShape{OT1}{Junicode-Sup}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{light}{it}{
+ <-> alias * Junicode-Sup/l/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{lightcondensed}{n}{
- <-> alias * Junicode-Sup/lc/n
+\DeclareFontShape{OT1}{Junicode-Sup}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{lc}{sl}{
- <-> ssub * Junicode-Sup/lc/it
+\DeclareFontShape{OT1}{Junicode-Sup}{light}{n}{
+ <-> alias * Junicode-Sup/l/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{lightcondensed}{sl}{
- <-> ssub * Junicode-Sup/lightcondensed/it
+\DeclareFontShape{OT1}{Junicode-Sup}{l}{sl}{
+ <-> ssub * Junicode-Sup/l/it
}{}
-
-% ---- bsx = boldsemiexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-Sup}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{light}{sl}{
+ <-> ssub * Junicode-Sup/light/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{boldsemiexpanded}{n}{
- <-> alias * Junicode-Sup/bsx/n
-}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-sup-ot1
-}{}
+% ---- mediumsemicondensed ----
-\DeclareFontShape{OT1}{Junicode-Sup}{boldsemiexpanded}{it}{
- <-> alias * Junicode-Sup/bsx/it
+\DeclareFontShape{OT1}{Junicode-Sup}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{bsx}{sl}{
- <-> ssub * Junicode-Sup/bsx/it
+\DeclareFontShape{OT1}{Junicode-Sup}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-Sup/boldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-Sup}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-Sup/mediumsemicondensed/it
}{}
@@ -362,114 +377,99 @@
}{}
-% ---- sc = semicondensed ----
+% ---- mediumcondensed ----
-\DeclareFontShape{OT1}{Junicode-Sup}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{semicondensed}{it}{
- <-> alias * Junicode-Sup/sc/it
+\DeclareFontShape{OT1}{Junicode-Sup}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-Sup/mediumcondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{semicondensed}{n}{
- <-> alias * Junicode-Sup/sc/n
-}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{sc}{sl}{
- <-> ssub * Junicode-Sup/sc/it
-}{}
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-Sup}{semicondensed}{sl}{
- <-> ssub * Junicode-Sup/semicondensed/it
+\DeclareFontShape{OT1}{Junicode-Sup}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-sup-ot1
}{}
-
-% ---- mediumsemicondensed ----
-
-\DeclareFontShape{OT1}{Junicode-Sup}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-Sup/bsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-Sup/mediumsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-Sup}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-Sup/bsx/it
}{}
-
-% ---- sbx = semiboldexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-Sup}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{bsx}{sl}{
+ <-> ssub * Junicode-Sup/bsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{semiboldexpanded}{n}{
- <-> alias * Junicode-Sup/sbx/n
+\DeclareFontShape{OT1}{Junicode-Sup}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/boldsemiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-sup-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{semiboldexpanded}{it}{
- <-> alias * Junicode-Sup/sbx/it
-}{}
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-Sup}{sbx}{sl}{
- <-> ssub * Junicode-Sup/sbx/it
+\DeclareFontShape{OT1}{Junicode-Sup}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiboldexpanded/it
+\DeclareFontShape{OT1}{Junicode-Sup}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-Sup/sbsx/it
}{}
+\DeclareFontShape{OT1}{Junicode-Sup}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-sup-ot1
+}{}
-% ---- mediumcondensed ----
-
-\DeclareFontShape{OT1}{Junicode-Sup}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-Sup/sbsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{sbsx}{sl}{
+ <-> ssub * Junicode-Sup/sbsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{mediumcondensed}{sl}{
- <-> ssub * Junicode-Sup/mediumcondensed/it
+\DeclareFontShape{OT1}{Junicode-Sup}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiboldsemiexpanded/it
}{}
-% ---- b = bold ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{OT1}{Junicode-Sup}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{bold}{it}{
- <-> alias * Junicode-Sup/b/it
+\DeclareFontShape{OT1}{Junicode-Sup}{semicondensed}{n}{
+ <-> alias * Junicode-Sup/sc/n
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-sup-ot1
+\DeclareFontShape{OT1}{Junicode-Sup}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-sup-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{bold}{n}{
- <-> alias * Junicode-Sup/b/n
+\DeclareFontShape{OT1}{Junicode-Sup}{semicondensed}{it}{
+ <-> alias * Junicode-Sup/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{b}{sl}{
- <-> ssub * Junicode-Sup/b/it
+\DeclareFontShape{OT1}{Junicode-Sup}{sc}{sl}{
+ <-> ssub * Junicode-Sup/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-Sup}{bold}{sl}{
- <-> ssub * Junicode-Sup/bold/it
+\DeclareFontShape{OT1}{Junicode-Sup}{semicondensed}{sl}{
+ <-> ssub * Junicode-Sup/semicondensed/it
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-TLF.fd b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-TLF.fd
index 47eb8d3cf5b..77ad7e0b311 100644
--- a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-TLF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{OT1Junicode-TLF.fd}
- [2024/06/03 (autoinst) Font definitions for OT1/Junicode-TLF.]
+ [2024/07/21 (autoinst) Font definitions for OT1/Junicode-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,86 +20,75 @@
\DeclareFontFamily{OT1}{Junicode-TLF}{}
-% ---- mediumsemicondensed ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{scit}{
+ <-> alias * Junicode-TLF/sc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{n}{
+ <-> alias * Junicode-TLF/sc/n
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-TLF/mediumsemicondensed/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{it}{
+ <-> alias * Junicode-TLF/sc/it
}{}
-
-% ---- sbx = semiboldexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TLF/sbx/n
+\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{sc}{
+ <-> alias * Junicode-TLF/sc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sc}{sl}{
+ <-> ssub * Junicode-TLF/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-TLF/sbx/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{sl}{
+ <-> ssub * Junicode-TLF/semicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sc}{scsl}{
+ <-> ssub * Junicode-TLF/sc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TLF/sbx/it
+\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/semicondensed/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-sc-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-TLF/sbx/scit
-}{}
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{scsl}{
- <-> ssub * Junicode-TLF/sbx/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiboldexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-TLF/bsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{sl}{
- <-> ssub * Junicode-TLF/sbx/it
+\DeclareFontShape{OT1}{Junicode-TLF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiboldexpanded/it
+\DeclareFontShape{OT1}{Junicode-TLF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-TLF/bsx/scit
}{}
-
-% ---- bsx = boldsemiexpanded ----
-
\DeclareFontShape{OT1}{Junicode-TLF}{bsx}{n}{
<-> \Junicode@@scale Junicode-SmExpBold-tlf-ot1
}{}
@@ -116,20 +105,12 @@
<-> alias * Junicode-TLF/bsx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TLF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-TLF/bsx/it
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TLF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{bsx}{sl}{
+ <-> ssub * Junicode-TLF/bsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-TLF/bsx/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/boldsemiexpanded/it
}{}
\DeclareFontShape{OT1}{Junicode-TLF}{bsx}{scsl}{
@@ -140,74 +121,66 @@
<-> ssub * Junicode-TLF/boldsemiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bsx}{sl}{
- <-> ssub * Junicode-TLF/bsx/it
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TLF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/boldsemiexpanded/it
-}{}
-
-% ---- lc = lightcondensed ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-TLF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{scit}{
- <-> alias * Junicode-TLF/lc/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-TLF/sbsx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{it}{
- <-> alias * Junicode-TLF/lc/it
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-TLF/sbsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{sc}{
- <-> alias * Junicode-TLF/lc/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-TLF/sbsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{n}{
- <-> alias * Junicode-TLF/lc/n
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-TLF/sbsx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lc}{scsl}{
- <-> ssub * Junicode-TLF/lc/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{sl}{
+ <-> ssub * Junicode-TLF/sbsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-TLF/lightcondensed/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lc}{sl}{
- <-> ssub * Junicode-TLF/lc/it
+\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{scsl}{
+ <-> ssub * Junicode-TLF/sbsx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TLF/lightcondensed/it
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiboldsemiexpanded/scit
}{}
% ---- sb = semibold ----
-\DeclareFontShape{OT1}{Junicode-TLF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semibold}{it}{
- <-> alias * Junicode-TLF/sb/it
+\DeclareFontShape{OT1}{Junicode-TLF}{semibold}{sc}{
+ <-> alias * Junicode-TLF/sb/sc
}{}
\DeclareFontShape{OT1}{Junicode-TLF}{sb}{scit}{
@@ -226,20 +199,12 @@
<-> alias * Junicode-TLF/sb/n
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-tlf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TLF}{semibold}{sc}{
- <-> alias * Junicode-TLF/sb/sc
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TLF}{sb}{scsl}{
- <-> ssub * Junicode-TLF/sb/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semibold}{scsl}{
- <-> ssub * Junicode-TLF/semibold/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{semibold}{it}{
+ <-> alias * Junicode-TLF/sb/it
}{}
\DeclareFontShape{OT1}{Junicode-TLF}{sb}{sl}{
@@ -250,146 +215,122 @@
<-> ssub * Junicode-TLF/semibold/it
}{}
-
-% ---- sc = semicondensed ----
-
-\DeclareFontShape{OT1}{Junicode-TLF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{n}{
- <-> alias * Junicode-TLF/sc/n
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TLF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sb}{scsl}{
+ <-> ssub * Junicode-TLF/sb/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{sc}{
- <-> alias * Junicode-TLF/sc/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{semibold}{scsl}{
+ <-> ssub * Junicode-TLF/semibold/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tlf-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{it}{
- <-> alias * Junicode-TLF/sc/it
-}{}
+% ---- mediumcondensed ----
-\DeclareFontShape{OT1}{Junicode-TLF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{scit}{
- <-> alias * Junicode-TLF/sc/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sc}{scsl}{
- <-> ssub * Junicode-TLF/sc/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{scsl}{
- <-> ssub * Junicode-TLF/semicondensed/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sc}{sl}{
- <-> ssub * Junicode-TLF/sc/it
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumcondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semicondensed}{sl}{
- <-> ssub * Junicode-TLF/semicondensed/it
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-TLF/mediumcondensed/scit
}{}
-% ---- b = bold ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{OT1}{Junicode-TLF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bold}{sc}{
- <-> alias * Junicode-TLF/b/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bold}{n}{
- <-> alias * Junicode-TLF/b/n
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bold}{scit}{
- <-> alias * Junicode-TLF/b/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/mediumsemicondensed/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-tlf-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bold}{it}{
- <-> alias * Junicode-TLF/b/it
-}{}
+% ---- sx = semiexpanded ----
-\DeclareFontShape{OT1}{Junicode-TLF}{b}{scsl}{
- <-> ssub * Junicode-TLF/b/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bold}{scsl}{
- <-> ssub * Junicode-TLF/bold/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{sc}{
+ <-> alias * Junicode-TLF/sx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{b}{sl}{
- <-> ssub * Junicode-TLF/b/it
+\DeclareFontShape{OT1}{Junicode-TLF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bold}{sl}{
- <-> ssub * Junicode-TLF/bold/it
+\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{n}{
+ <-> alias * Junicode-TLF/sx/n
}{}
+\DeclareFontShape{OT1}{Junicode-TLF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tlf-sc-ot1
+}{}
-% ---- mediumcondensed ----
+\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{scit}{
+ <-> alias * Junicode-TLF/sx/scit
+}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{it}{
+ <-> alias * Junicode-TLF/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sx}{sl}{
+ <-> ssub * Junicode-TLF/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-TLF/mediumcondensed/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{sx}{scsl}{
+ <-> ssub * Junicode-TLF/sx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumcondensed/it
+\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiexpanded/scit
}{}
% ---- l = light ----
-\DeclareFontShape{OT1}{Junicode-TLF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TLF}{light}{n}{
- <-> alias * Junicode-TLF/l/n
-}{}
-
\DeclareFontShape{OT1}{Junicode-TLF}{l}{sc}{
<-> \Junicode@@scale Junicode-Light-tlf-sc-ot1
}{}
@@ -406,20 +347,20 @@
<-> alias * Junicode-TLF/l/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{light}{scit}{
- <-> alias * Junicode-TLF/l/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{light}{n}{
+ <-> alias * Junicode-TLF/l/n
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{l}{scsl}{
- <-> ssub * Junicode-TLF/l/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{light}{scsl}{
- <-> ssub * Junicode-TLF/light/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{light}{scit}{
+ <-> alias * Junicode-TLF/l/scit
}{}
\DeclareFontShape{OT1}{Junicode-TLF}{l}{sl}{
@@ -430,297 +371,308 @@
<-> ssub * Junicode-TLF/light/it
}{}
+\DeclareFontShape{OT1}{Junicode-TLF}{l}{scsl}{
+ <-> ssub * Junicode-TLF/l/scit
+}{}
-% ---- bx = boldexpanded ----
+\DeclareFontShape{OT1}{Junicode-TLF}{light}{scsl}{
+ <-> ssub * Junicode-TLF/light/scit
+}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-sc-ot1
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{Junicode-TLF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{scit}{
- <-> alias * Junicode-TLF/bx/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{regular}{scit}{
+ <-> alias * Junicode-TLF/m/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{it}{
- <-> alias * Junicode-TLF/bx/it
+\DeclareFontShape{OT1}{Junicode-TLF}{regular}{n}{
+ <-> alias * Junicode-TLF/m/n
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{sc}{
- <-> alias * Junicode-TLF/bx/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{regular}{it}{
+ <-> alias * Junicode-TLF/m/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{n}{
- <-> alias * Junicode-TLF/bx/n
+\DeclareFontShape{OT1}{Junicode-TLF}{regular}{sc}{
+ <-> alias * Junicode-TLF/m/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bx}{scsl}{
- <-> ssub * Junicode-TLF/bx/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{m}{sl}{
+ <-> ssub * Junicode-TLF/m/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-TLF/boldexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{regular}{sl}{
+ <-> ssub * Junicode-TLF/regular/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{bx}{sl}{
- <-> ssub * Junicode-TLF/bx/it
+\DeclareFontShape{OT1}{Junicode-TLF}{m}{scsl}{
+ <-> ssub * Junicode-TLF/m/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TLF/boldexpanded/it
+\DeclareFontShape{OT1}{Junicode-TLF}{regular}{scsl}{
+ <-> ssub * Junicode-TLF/regular/scit
}{}
-% ---- m = regular ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-TLF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{regular}{scit}{
- <-> alias * Junicode-TLF/m/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{regular}{it}{
- <-> alias * Junicode-TLF/m/it
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{regular}{sc}{
- <-> alias * Junicode-TLF/m/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/mediumsemiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-tlf-ot1
+
+% ---- medium ----
+
+\DeclareFontShape{OT1}{Junicode-TLF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{regular}{n}{
- <-> alias * Junicode-TLF/m/n
+\DeclareFontShape{OT1}{Junicode-TLF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{m}{scsl}{
- <-> ssub * Junicode-TLF/m/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{regular}{scsl}{
- <-> ssub * Junicode-TLF/regular/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{m}{sl}{
- <-> ssub * Junicode-TLF/m/it
+\DeclareFontShape{OT1}{Junicode-TLF}{medium}{sl}{
+ <-> ssub * Junicode-TLF/medium/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{regular}{sl}{
- <-> ssub * Junicode-TLF/regular/it
+\DeclareFontShape{OT1}{Junicode-TLF}{medium}{scsl}{
+ <-> ssub * Junicode-TLF/medium/scit
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-TLF/lsc/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{it}{
+ <-> alias * Junicode-TLF/bx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TLF/lsc/n
+\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{n}{
+ <-> alias * Junicode-TLF/bx/n
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-TLF/lsc/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{scit}{
+ <-> alias * Junicode-TLF/bx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TLF/lsc/it
+\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{sc}{
+ <-> alias * Junicode-TLF/bx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{scsl}{
- <-> ssub * Junicode-TLF/lsc/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{bx}{sl}{
+ <-> ssub * Junicode-TLF/bx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-TLF/lightsemicondensed/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/boldexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{sl}{
- <-> ssub * Junicode-TLF/lsc/it
+\DeclareFontShape{OT1}{Junicode-TLF}{bx}{scsl}{
+ <-> ssub * Junicode-TLF/bx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/lightsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-TLF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/boldexpanded/scit
}{}
-% ---- medium ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{OT1}{Junicode-TLF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{sc}{
+ <-> alias * Junicode-TLF/lc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{it}{
+ <-> alias * Junicode-TLF/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{medium}{scsl}{
- <-> ssub * Junicode-TLF/medium/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{medium}{sl}{
- <-> ssub * Junicode-TLF/medium/it
+\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{scit}{
+ <-> alias * Junicode-TLF/lc/scit
}{}
-
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{OT1}{Junicode-TLF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{n}{
- <-> alias * Junicode-TLF/sx/n
+\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{n}{
+ <-> alias * Junicode-TLF/lc/n
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lc}{sl}{
+ <-> ssub * Junicode-TLF/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{sc}{
- <-> alias * Junicode-TLF/sx/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightcondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lc}{scsl}{
+ <-> ssub * Junicode-TLF/lc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{it}{
- <-> alias * Junicode-TLF/sx/it
+\DeclareFontShape{OT1}{Junicode-TLF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-TLF/lightcondensed/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tlf-sc-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{scit}{
- <-> alias * Junicode-TLF/sx/scit
-}{}
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{OT1}{Junicode-TLF}{sx}{scsl}{
- <-> ssub * Junicode-TLF/sx/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-TLF/lsc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sx}{sl}{
- <-> ssub * Junicode-TLF/sx/it
+\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiexpanded/it
+\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TLF/lsc/n
}{}
+\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-ot1
+}{}
-% ---- c = condensed ----
+\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TLF/lsc/it
+}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{sc}{
- <-> alias * Junicode-TLF/c/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-TLF/lsc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{sl}{
+ <-> ssub * Junicode-TLF/lsc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{n}{
- <-> alias * Junicode-TLF/c/n
+\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightsemicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{lsc}{scsl}{
+ <-> ssub * Junicode-TLF/lsc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{scit}{
- <-> alias * Junicode-TLF/c/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/lightsemicondensed/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tlf-ot1
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{it}{
- <-> alias * Junicode-TLF/c/it
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{c}{scsl}{
- <-> ssub * Junicode-TLF/c/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{scsl}{
- <-> ssub * Junicode-TLF/condensed/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{c}{sl}{
- <-> ssub * Junicode-TLF/c/it
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{sl}{
- <-> ssub * Junicode-TLF/condensed/it
+\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/mediumexpanded/scit
}{}
% ---- x = expanded ----
-\DeclareFontShape{OT1}{Junicode-TLF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{expanded}{it}{
- <-> alias * Junicode-TLF/x/it
+\DeclareFontShape{OT1}{Junicode-TLF}{expanded}{sc}{
+ <-> alias * Junicode-TLF/x/sc
}{}
\DeclareFontShape{OT1}{Junicode-TLF}{x}{scit}{
@@ -739,12 +691,20 @@
<-> alias * Junicode-TLF/x/n
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{expanded}{sc}{
- <-> alias * Junicode-TLF/x/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{expanded}{it}{
+ <-> alias * Junicode-TLF/x/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TLF}{x}{sl}{
+ <-> ssub * Junicode-TLF/x/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TLF}{expanded}{sl}{
+ <-> ssub * Junicode-TLF/expanded/it
}{}
\DeclareFontShape{OT1}{Junicode-TLF}{x}{scsl}{
@@ -755,117 +715,157 @@
<-> ssub * Junicode-TLF/expanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{x}{sl}{
- <-> ssub * Junicode-TLF/x/it
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{Junicode-TLF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{expanded}{sl}{
- <-> ssub * Junicode-TLF/expanded/it
+\DeclareFontShape{OT1}{Junicode-TLF}{bold}{scit}{
+ <-> alias * Junicode-TLF/b/scit
}{}
+\DeclareFontShape{OT1}{Junicode-TLF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-tlf-ot1
+}{}
-% ---- sbsx = semiboldsemiexpanded ----
+\DeclareFontShape{OT1}{Junicode-TLF}{bold}{n}{
+ <-> alias * Junicode-TLF/b/n
+}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-TLF/sbsx/it
+\DeclareFontShape{OT1}{Junicode-TLF}{bold}{it}{
+ <-> alias * Junicode-TLF/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-TLF/sbsx/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{bold}{sc}{
+ <-> alias * Junicode-TLF/b/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{b}{sl}{
+ <-> ssub * Junicode-TLF/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-TLF/sbsx/n
+\DeclareFontShape{OT1}{Junicode-TLF}{bold}{sl}{
+ <-> ssub * Junicode-TLF/bold/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{b}{scsl}{
+ <-> ssub * Junicode-TLF/b/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-TLF/sbsx/sc
+\DeclareFontShape{OT1}{Junicode-TLF}{bold}{scsl}{
+ <-> ssub * Junicode-TLF/bold/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{scsl}{
- <-> ssub * Junicode-TLF/sbsx/scit
+
+% ---- sbx = semiboldexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiboldsemiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-TLF/sbx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{sbsx}{sl}{
- <-> ssub * Junicode-TLF/sbsx/it
+\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiboldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TLF/sbx/it
}{}
+\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tlf-ot1
+}{}
-% ---- mediumexpanded ----
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TLF/sbx/n
+}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-TLF/sbx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{sl}{
+ <-> ssub * Junicode-TLF/sbx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiboldexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-TLF/mediumexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{sbx}{scsl}{
+ <-> ssub * Junicode-TLF/sbx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumexpanded/it
+\DeclareFontShape{OT1}{Junicode-TLF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiboldexpanded/scit
}{}
-% ---- mediumsemiexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{sc}{
+ <-> alias * Junicode-TLF/c/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-tlf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-ot1
+\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{scit}{
+ <-> alias * Junicode-TLF/c/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/mediumsemiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TLF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-tlf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TLF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{n}{
+ <-> alias * Junicode-TLF/c/n
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TLF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{it}{
+ <-> alias * Junicode-TLF/c/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TLF}{c}{sl}{
+ <-> ssub * Junicode-TLF/c/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{sl}{
+ <-> ssub * Junicode-TLF/condensed/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TLF}{c}{scsl}{
+ <-> ssub * Junicode-TLF/c/scit
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TLF}{condensed}{scsl}{
+ <-> ssub * Junicode-TLF/condensed/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-TOsF.fd b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-TOsF.fd
index 77547d3a2c7..d7caf690797 100644
--- a/Master/texmf-dist/tex/latex/junicode/OT1Junicode-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/OT1Junicode-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{OT1Junicode-TOsF.fd}
- [2024/06/03 (autoinst) Font definitions for OT1/Junicode-TOsF.]
+ [2024/07/21 (autoinst) Font definitions for OT1/Junicode-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,394 +20,394 @@
\DeclareFontFamily{OT1}{Junicode-TOsF}{}
-% ---- bx = boldexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{scit}{
- <-> alias * Junicode-TOsF/bx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{scit}{
+ <-> alias * Junicode-TOsF/c/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{it}{
- <-> alias * Junicode-TOsF/bx/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{n}{
+ <-> alias * Junicode-TOsF/c/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{sc}{
- <-> alias * Junicode-TOsF/bx/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{it}{
+ <-> alias * Junicode-TOsF/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{n}{
- <-> alias * Junicode-TOsF/bx/n
+\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{sc}{
+ <-> alias * Junicode-TOsF/c/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{scsl}{
- <-> ssub * Junicode-TOsF/bx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{c}{sl}{
+ <-> ssub * Junicode-TOsF/c/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/boldexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{sl}{
+ <-> ssub * Junicode-TOsF/condensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{sl}{
- <-> ssub * Junicode-TOsF/bx/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{c}{scsl}{
+ <-> ssub * Junicode-TOsF/c/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/boldexpanded/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{scsl}{
+ <-> ssub * Junicode-TOsF/condensed/scit
}{}
-% ---- l = light ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{light}{n}{
- <-> alias * Junicode-TOsF/l/n
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sbx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{light}{sc}{
- <-> alias * Junicode-TOsF/l/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TOsF/sbx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{light}{it}{
- <-> alias * Junicode-TOsF/l/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sbx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{light}{scit}{
- <-> alias * Junicode-TOsF/l/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TOsF/sbx/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{l}{scsl}{
- <-> ssub * Junicode-TOsF/l/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{sl}{
+ <-> ssub * Junicode-TOsF/sbx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{light}{scsl}{
- <-> ssub * Junicode-TOsF/light/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiboldexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{l}{sl}{
- <-> ssub * Junicode-TOsF/l/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{scsl}{
+ <-> ssub * Junicode-TOsF/sbx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{light}{sl}{
- <-> ssub * Junicode-TOsF/light/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiboldexpanded/scit
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- x = expanded ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TOsF/lsc/n
+\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{n}{
+ <-> alias * Junicode-TOsF/x/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-TOsF/lsc/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{scit}{
+ <-> alias * Junicode-TOsF/x/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TOsF/lsc/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{it}{
+ <-> alias * Junicode-TOsF/x/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-TOsF/lsc/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{sc}{
+ <-> alias * Junicode-TOsF/x/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{scsl}{
- <-> ssub * Junicode-TOsF/lsc/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{x}{sl}{
+ <-> ssub * Junicode-TOsF/x/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/lightsemicondensed/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{sl}{
+ <-> ssub * Junicode-TOsF/expanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{sl}{
- <-> ssub * Junicode-TOsF/lsc/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{x}{scsl}{
+ <-> ssub * Junicode-TOsF/x/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightsemicondensed/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{scsl}{
+ <-> ssub * Junicode-TOsF/expanded/scit
}{}
-% ---- medium ----
+% ---- b = bold ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{it}{
+ <-> alias * Junicode-TOsF/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{n}{
+ <-> alias * Junicode-TOsF/b/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{scsl}{
- <-> ssub * Junicode-TOsF/medium/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{sl}{
- <-> ssub * Junicode-TOsF/medium/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{scit}{
+ <-> alias * Junicode-TOsF/b/scit
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{OT1}{Junicode-TOsF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{it}{
- <-> alias * Junicode-TOsF/m/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{sc}{
+ <-> alias * Junicode-TOsF/b/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{b}{sl}{
+ <-> ssub * Junicode-TOsF/b/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{scit}{
- <-> alias * Junicode-TOsF/m/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{sl}{
+ <-> ssub * Junicode-TOsF/bold/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{b}{scsl}{
+ <-> ssub * Junicode-TOsF/b/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{n}{
- <-> alias * Junicode-TOsF/m/n
+\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{scsl}{
+ <-> ssub * Junicode-TOsF/bold/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-tosf-sc-ot1
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{sc}{
- <-> alias * Junicode-TOsF/m/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{m}{scsl}{
- <-> ssub * Junicode-TOsF/m/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{scsl}{
- <-> ssub * Junicode-TOsF/regular/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{m}{sl}{
- <-> ssub * Junicode-TOsF/m/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{sl}{
- <-> ssub * Junicode-TOsF/regular/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumexpanded/scit
}{}
-% ---- sx = semiexpanded ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{sc}{
- <-> alias * Junicode-TOsF/sx/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-TOsF/lsc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{n}{
- <-> alias * Junicode-TOsF/sx/n
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TOsF/lsc/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{scit}{
- <-> alias * Junicode-TOsF/sx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-TOsF/lsc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{it}{
- <-> alias * Junicode-TOsF/sx/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TOsF/lsc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{scsl}{
- <-> ssub * Junicode-TOsF/sx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{sl}{
+ <-> ssub * Junicode-TOsF/lsc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightsemicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{sl}{
- <-> ssub * Junicode-TOsF/sx/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{lsc}{scsl}{
+ <-> ssub * Junicode-TOsF/lsc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiexpanded/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/lightsemicondensed/scit
}{}
-% ---- c = condensed ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{it}{
- <-> alias * Junicode-TOsF/c/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{scit}{
+ <-> alias * Junicode-TOsF/lc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{scit}{
- <-> alias * Junicode-TOsF/c/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{n}{
+ <-> alias * Junicode-TOsF/lc/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{n}{
- <-> alias * Junicode-TOsF/c/n
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{it}{
+ <-> alias * Junicode-TOsF/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{sc}{
- <-> alias * Junicode-TOsF/c/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{sc}{
+ <-> alias * Junicode-TOsF/lc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{c}{scsl}{
- <-> ssub * Junicode-TOsF/c/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{sl}{
+ <-> ssub * Junicode-TOsF/lc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{scsl}{
- <-> ssub * Junicode-TOsF/condensed/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightcondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{c}{sl}{
- <-> ssub * Junicode-TOsF/c/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{scsl}{
+ <-> ssub * Junicode-TOsF/lc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{condensed}{sl}{
- <-> ssub * Junicode-TOsF/condensed/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/lightcondensed/scit
}{}
-% ---- x = expanded ----
+% ---- m = regular ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{n}{
- <-> alias * Junicode-TOsF/x/n
+\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{sc}{
+ <-> alias * Junicode-TOsF/m/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{sc}{
- <-> alias * Junicode-TOsF/x/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{it}{
+ <-> alias * Junicode-TOsF/m/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{it}{
- <-> alias * Junicode-TOsF/x/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{scit}{
+ <-> alias * Junicode-TOsF/m/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{scit}{
- <-> alias * Junicode-TOsF/x/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{n}{
+ <-> alias * Junicode-TOsF/m/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{x}{scsl}{
- <-> ssub * Junicode-TOsF/x/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{m}{sl}{
+ <-> ssub * Junicode-TOsF/m/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{scsl}{
- <-> ssub * Junicode-TOsF/expanded/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{sl}{
+ <-> ssub * Junicode-TOsF/regular/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{x}{sl}{
- <-> ssub * Junicode-TOsF/x/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{m}{scsl}{
+ <-> ssub * Junicode-TOsF/m/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{expanded}{sl}{
- <-> ssub * Junicode-TOsF/expanded/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{regular}{scsl}{
+ <-> ssub * Junicode-TOsF/regular/scit
}{}
% ---- mediumsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-ot1
}{}
\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemiexpanded}{n}{
@@ -418,145 +418,196 @@
<-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tosf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
}{}
\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemiexpanded}{scsl}{
<-> ssub * Junicode-TOsF/mediumsemiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
+
+% ---- medium ----
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-tosf-sc-ot1
}{}
+\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-tosf-ot1
+}{}
-% ---- sbsx = semiboldsemiexpanded ----
+\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tosf-sc-ot1
+}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-TOsF/sbsx/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{sl}{
+ <-> ssub * Junicode-TOsF/medium/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{medium}{scsl}{
+ <-> ssub * Junicode-TOsF/medium/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-TOsF/sbsx/n
+
+% ---- bx = boldexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{sc}{
+ <-> alias * Junicode-TOsF/bx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-TOsF/sbsx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{scit}{
+ <-> alias * Junicode-TOsF/bx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-TOsF/sbsx/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{scsl}{
- <-> ssub * Junicode-TOsF/sbsx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{n}{
+ <-> alias * Junicode-TOsF/bx/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiboldsemiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{sl}{
- <-> ssub * Junicode-TOsF/sbsx/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{it}{
+ <-> alias * Junicode-TOsF/bx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiboldsemiexpanded/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{sl}{
+ <-> ssub * Junicode-TOsF/bx/it
}{}
+\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/boldexpanded/it
+}{}
-% ---- mediumexpanded ----
+\DeclareFontShape{OT1}{Junicode-TOsF}{bx}{scsl}{
+ <-> ssub * Junicode-TOsF/bx/scit
+}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/boldexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tosf-ot1
+
+% ---- sx = semiexpanded ----
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{it}{
+ <-> alias * Junicode-TOsF/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/mediumexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{n}{
+ <-> alias * Junicode-TOsF/sx/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumexpanded/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tosf-sc-ot1
}{}
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sx/scit
+}{}
-% ---- sbx = semiboldexpanded ----
+\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-tosf-sc-ot1
+}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sx/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TOsF/sbx/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{sl}{
+ <-> ssub * Junicode-TOsF/sx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-TOsF/sbx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{sx}{scsl}{
+ <-> ssub * Junicode-TOsF/sx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TOsF/sbx/n
+
+% ---- l = light ----
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{light}{sc}{
+ <-> alias * Junicode-TOsF/l/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-TOsF/sbx/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{scsl}{
- <-> ssub * Junicode-TOsF/sbx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{light}{it}{
+ <-> alias * Junicode-TOsF/l/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiboldexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sbx}{sl}{
- <-> ssub * Junicode-TOsF/sbx/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{light}{n}{
+ <-> alias * Junicode-TOsF/l/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiboldexpanded/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-tosf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{light}{scit}{
+ <-> alias * Junicode-TOsF/l/scit
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{l}{sl}{
+ <-> ssub * Junicode-TOsF/l/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{light}{sl}{
+ <-> ssub * Junicode-TOsF/light/it
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{l}{scsl}{
+ <-> ssub * Junicode-TOsF/l/scit
+}{}
+
+\DeclareFontShape{OT1}{Junicode-TOsF}{light}{scsl}{
+ <-> ssub * Junicode-TOsF/light/scit
}{}
@@ -566,36 +617,28 @@
<-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-sc-ot1
-}{}
-
\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemicondensed}{n}{
<-> \Junicode@@scale Junicode-SmCondMedium-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/mediumsemicondensed/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tosf-sc-ot1
}{}
\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemicondensed}{sl}{
<-> ssub * Junicode-TOsF/mediumsemicondensed/it
}{}
-
-% ---- sb = semibold ----
-
-\DeclareFontShape{OT1}{Junicode-TOsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumsemicondensed/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semibold}{n}{
- <-> alias * Junicode-TOsF/sb/n
-}{}
+
+% ---- sb = semibold ----
\DeclareFontShape{OT1}{Junicode-TOsF}{sb}{sc}{
<-> \Junicode@@scale Junicode-SmBold-tosf-sc-ot1
@@ -605,12 +648,12 @@
<-> alias * Junicode-TOsF/sb/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semibold}{it}{
- <-> alias * Junicode-TOsF/sb/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{semibold}{n}{
+ <-> alias * Junicode-TOsF/sb/n
}{}
\DeclareFontShape{OT1}{Junicode-TOsF}{sb}{scit}{
@@ -621,12 +664,12 @@
<-> alias * Junicode-TOsF/sb/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sb}{scsl}{
- <-> ssub * Junicode-TOsF/sb/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semibold}{scsl}{
- <-> ssub * Junicode-TOsF/semibold/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{semibold}{it}{
+ <-> alias * Junicode-TOsF/sb/it
}{}
\DeclareFontShape{OT1}{Junicode-TOsF}{sb}{sl}{
@@ -637,66 +680,50 @@
<-> ssub * Junicode-TOsF/semibold/it
}{}
-
-% ---- sc = semicondensed ----
-
-\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{it}{
- <-> alias * Junicode-TOsF/sc/it
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sb}{scsl}{
+ <-> ssub * Junicode-TOsF/sb/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{scit}{
- <-> alias * Junicode-TOsF/sc/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{semibold}{scsl}{
+ <-> ssub * Junicode-TOsF/semibold/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-tosf-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{n}{
- <-> alias * Junicode-TOsF/sc/n
-}{}
+% ---- mediumcondensed ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{sc}{
- <-> alias * Junicode-TOsF/sc/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{scsl}{
- <-> ssub * Junicode-TOsF/sc/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/semicondensed/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{sl}{
- <-> ssub * Junicode-TOsF/sc/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/mediumcondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{sl}{
- <-> ssub * Junicode-TOsF/semicondensed/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumcondensed/scit
}{}
% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-TOsF/bsx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/bsx/sc
}{}
\DeclareFontShape{OT1}{Junicode-TOsF}{bsx}{it}{
@@ -707,14 +734,6 @@
<-> alias * Junicode-TOsF/bsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-tosf-sc-ot1
-}{}
-
-\DeclareFontShape{OT1}{Junicode-TOsF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-TOsF/bsx/sc
-}{}
-
\DeclareFontShape{OT1}{Junicode-TOsF}{bsx}{n}{
<-> \Junicode@@scale Junicode-SmExpBold-tosf-ot1
}{}
@@ -723,12 +742,12 @@
<-> alias * Junicode-TOsF/bsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bsx}{scsl}{
- <-> ssub * Junicode-TOsF/bsx/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/boldsemiexpanded/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/bsx/scit
}{}
\DeclareFontShape{OT1}{Junicode-TOsF}{bsx}{sl}{
@@ -739,133 +758,114 @@
<-> ssub * Junicode-TOsF/boldsemiexpanded/it
}{}
-
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{bsx}{scsl}{
+ <-> ssub * Junicode-TOsF/bsx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{sc}{
- <-> alias * Junicode-TOsF/lc/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/boldsemiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tosf-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{n}{
- <-> alias * Junicode-TOsF/lc/n
-}{}
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{scit}{
- <-> alias * Junicode-TOsF/lc/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-TOsF/sbsx/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{it}{
- <-> alias * Junicode-TOsF/lc/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sbsx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{scsl}{
- <-> ssub * Junicode-TOsF/lc/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-TOsF/lightcondensed/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-TOsF/sbsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lc}{sl}{
- <-> ssub * Junicode-TOsF/lc/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightcondensed/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sbsx/sc
}{}
-
-% ---- b = bold ----
-
-\DeclareFontShape{OT1}{Junicode-TOsF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{sl}{
+ <-> ssub * Junicode-TOsF/sbsx/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{sc}{
- <-> alias * Junicode-TOsF/b/sc
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sbsx}{scsl}{
+ <-> ssub * Junicode-TOsF/sbsx/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{n}{
- <-> alias * Junicode-TOsF/b/n
+\DeclareFontShape{OT1}{Junicode-TOsF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiboldsemiexpanded/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-tosf-sc-ot1
-}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{scit}{
- <-> alias * Junicode-TOsF/b/scit
-}{}
+% ---- sc = semicondensed ----
-\DeclareFontShape{OT1}{Junicode-TOsF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{it}{
- <-> alias * Junicode-TOsF/b/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{sc}{
+ <-> alias * Junicode-TOsF/sc/sc
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{b}{scsl}{
- <-> ssub * Junicode-TOsF/b/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{scsl}{
- <-> ssub * Junicode-TOsF/bold/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{it}{
+ <-> alias * Junicode-TOsF/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{b}{sl}{
- <-> ssub * Junicode-TOsF/b/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tosf-sc-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{bold}{sl}{
- <-> ssub * Junicode-TOsF/bold/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{scit}{
+ <-> alias * Junicode-TOsF/sc/scit
}{}
-
-% ---- mediumcondensed ----
-
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-tosf-ot1
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{n}{
+ <-> alias * Junicode-TOsF/sc/n
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-tosf-sc-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{sl}{
+ <-> ssub * Junicode-TOsF/sc/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tosf-ot1
+\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/semicondensed/it
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-TOsF/mediumcondensed/scit
+\DeclareFontShape{OT1}{Junicode-TOsF}{sc}{scsl}{
+ <-> ssub * Junicode-TOsF/sc/scit
}{}
-\DeclareFontShape{OT1}{Junicode-TOsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TOsF/mediumcondensed/it
+\DeclareFontShape{OT1}{Junicode-TOsF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/semicondensed/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/T1Junicode-Inf.fd b/Master/texmf-dist/tex/latex/junicode/T1Junicode-Inf.fd
index 847a5511252..8aa4e98b72b 100644
--- a/Master/texmf-dist/tex/latex/junicode/T1Junicode-Inf.fd
+++ b/Master/texmf-dist/tex/latex/junicode/T1Junicode-Inf.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{T1Junicode-Inf.fd}
- [2024/06/03 (autoinst) Font definitions for T1/Junicode-Inf.]
+ [2024/07/21 (autoinst) Font definitions for T1/Junicode-Inf.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,146 +20,85 @@
\DeclareFontFamily{T1}{Junicode-Inf}{}
-% ---- sbsx = semiboldsemiexpanded ----
-
-\DeclareFontShape{T1}{Junicode-Inf}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-inf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-Inf/sbsx/it
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-inf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-Inf/sbsx/n
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{sbsx}{sl}{
- <-> ssub * Junicode-Inf/sbsx/it
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiboldsemiexpanded/it
-}{}
-
-
-% ---- mediumexpanded ----
-
-\DeclareFontShape{T1}{Junicode-Inf}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-inf-t1
-}{}
+% ---- lc = lightcondensed ----
-\DeclareFontShape{T1}{Junicode-Inf}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{mediumexpanded}{sl}{
- <-> ssub * Junicode-Inf/mediumexpanded/it
+\DeclareFontShape{T1}{Junicode-Inf}{lightcondensed}{n}{
+ <-> alias * Junicode-Inf/lc/n
}{}
-
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{T1}{Junicode-Inf}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{lightcondensed}{it}{
+ <-> alias * Junicode-Inf/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/mediumsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-Inf}{lc}{sl}{
+ <-> ssub * Junicode-Inf/lc/it
}{}
-
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{T1}{Junicode-Inf}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{lightcondensed}{sl}{
+ <-> ssub * Junicode-Inf/lightcondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{semiexpanded}{n}{
- <-> alias * Junicode-Inf/sx/n
-}{}
-\DeclareFontShape{T1}{Junicode-Inf}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-inf-t1
-}{}
+% ---- medium ----
-\DeclareFontShape{T1}{Junicode-Inf}{semiexpanded}{it}{
- <-> alias * Junicode-Inf/sx/it
+\DeclareFontShape{T1}{Junicode-Inf}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{sx}{sl}{
- <-> ssub * Junicode-Inf/sx/it
+\DeclareFontShape{T1}{Junicode-Inf}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{semiexpanded}{sl}{
- <-> ssub * Junicode-Inf/semiexpanded/it
+\DeclareFontShape{T1}{Junicode-Inf}{medium}{sl}{
+ <-> ssub * Junicode-Inf/medium/it
}{}
-% ---- c = condensed ----
-
-\DeclareFontShape{T1}{Junicode-Inf}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-inf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{condensed}{it}{
- <-> alias * Junicode-Inf/c/it
-}{}
+% ---- bx = boldexpanded ----
-\DeclareFontShape{T1}{Junicode-Inf}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{condensed}{n}{
- <-> alias * Junicode-Inf/c/n
+\DeclareFontShape{T1}{Junicode-Inf}{boldexpanded}{it}{
+ <-> alias * Junicode-Inf/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{c}{sl}{
- <-> ssub * Junicode-Inf/c/it
+\DeclareFontShape{T1}{Junicode-Inf}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{condensed}{sl}{
- <-> ssub * Junicode-Inf/condensed/it
+\DeclareFontShape{T1}{Junicode-Inf}{boldexpanded}{n}{
+ <-> alias * Junicode-Inf/bx/n
}{}
-
-% ---- x = expanded ----
-
-\DeclareFontShape{T1}{Junicode-Inf}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{bx}{sl}{
+ <-> ssub * Junicode-Inf/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{expanded}{it}{
- <-> alias * Junicode-Inf/x/it
+\DeclareFontShape{T1}{Junicode-Inf}{boldexpanded}{sl}{
+ <-> ssub * Junicode-Inf/boldexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-inf-t1
-}{}
-\DeclareFontShape{T1}{Junicode-Inf}{expanded}{n}{
- <-> alias * Junicode-Inf/x/n
-}{}
+% ---- m = regular ----
-\DeclareFontShape{T1}{Junicode-Inf}{x}{sl}{
- <-> ssub * Junicode-Inf/x/it
+\DeclareFontShape{T1}{Junicode-Inf}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{expanded}{sl}{
- <-> ssub * Junicode-Inf/expanded/it
+\DeclareFontShape{T1}{Junicode-Inf}{regular}{it}{
+ <-> alias * Junicode-Inf/m/it
}{}
-
-% ---- m = regular ----
-
\DeclareFontShape{T1}{Junicode-Inf}{m}{n}{
<-> \Junicode@@scale Junicode-Regular-inf-t1
}{}
@@ -168,14 +107,6 @@
<-> alias * Junicode-Inf/m/n
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-inf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{regular}{it}{
- <-> alias * Junicode-Inf/m/it
-}{}
-
\DeclareFontShape{T1}{Junicode-Inf}{m}{sl}{
<-> ssub * Junicode-Inf/m/it
}{}
@@ -185,45 +116,18 @@
}{}
-% ---- lsc = lightsemicondensed ----
-
-\DeclareFontShape{T1}{Junicode-Inf}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-inf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{lightsemicondensed}{n}{
- <-> alias * Junicode-Inf/lsc/n
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-inf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{lightsemicondensed}{it}{
- <-> alias * Junicode-Inf/lsc/it
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{lsc}{sl}{
- <-> ssub * Junicode-Inf/lsc/it
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-Inf/lightsemicondensed/it
-}{}
-
-
-% ---- medium ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-Inf}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{medium}{sl}{
- <-> ssub * Junicode-Inf/medium/it
+\DeclareFontShape{T1}{Junicode-Inf}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/mediumsemiexpanded/it
}{}
@@ -254,30 +158,45 @@
}{}
-% ---- bx = boldexpanded ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{T1}{Junicode-Inf}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{boldexpanded}{n}{
- <-> alias * Junicode-Inf/bx/n
+\DeclareFontShape{T1}{Junicode-Inf}{semiexpanded}{it}{
+ <-> alias * Junicode-Inf/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{boldexpanded}{it}{
- <-> alias * Junicode-Inf/bx/it
+\DeclareFontShape{T1}{Junicode-Inf}{semiexpanded}{n}{
+ <-> alias * Junicode-Inf/sx/n
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{bx}{sl}{
- <-> ssub * Junicode-Inf/bx/it
+\DeclareFontShape{T1}{Junicode-Inf}{sx}{sl}{
+ <-> ssub * Junicode-Inf/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{boldexpanded}{sl}{
- <-> ssub * Junicode-Inf/boldexpanded/it
+\DeclareFontShape{T1}{Junicode-Inf}{semiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiexpanded/it
+}{}
+
+
+% ---- mediumsemicondensed ----
+
+\DeclareFontShape{T1}{Junicode-Inf}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-Inf/mediumsemicondensed/it
}{}
@@ -296,84 +215,84 @@
}{}
-% ---- b = bold ----
+% ---- sb = semibold ----
-\DeclareFontShape{T1}{Junicode-Inf}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{bold}{n}{
- <-> alias * Junicode-Inf/b/n
+\DeclareFontShape{T1}{Junicode-Inf}{semibold}{it}{
+ <-> alias * Junicode-Inf/sb/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{bold}{it}{
- <-> alias * Junicode-Inf/b/it
+\DeclareFontShape{T1}{Junicode-Inf}{semibold}{n}{
+ <-> alias * Junicode-Inf/sb/n
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{b}{sl}{
- <-> ssub * Junicode-Inf/b/it
+\DeclareFontShape{T1}{Junicode-Inf}{sb}{sl}{
+ <-> ssub * Junicode-Inf/sb/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{bold}{sl}{
- <-> ssub * Junicode-Inf/bold/it
+\DeclareFontShape{T1}{Junicode-Inf}{semibold}{sl}{
+ <-> ssub * Junicode-Inf/semibold/it
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-Inf}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{boldsemiexpanded}{n}{
- <-> alias * Junicode-Inf/bsx/n
+\DeclareFontShape{T1}{Junicode-Inf}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-Inf/sbsx/n
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{boldsemiexpanded}{it}{
- <-> alias * Junicode-Inf/bsx/it
+\DeclareFontShape{T1}{Junicode-Inf}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-Inf/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{bsx}{sl}{
- <-> ssub * Junicode-Inf/bsx/it
+\DeclareFontShape{T1}{Junicode-Inf}{sbsx}{sl}{
+ <-> ssub * Junicode-Inf/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-Inf/boldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-Inf}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/semiboldsemiexpanded/it
}{}
-% ---- lc = lightcondensed ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-Inf}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{lightcondensed}{n}{
- <-> alias * Junicode-Inf/lc/n
+\DeclareFontShape{T1}{Junicode-Inf}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-Inf/bsx/n
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{lightcondensed}{it}{
- <-> alias * Junicode-Inf/lc/it
+\DeclareFontShape{T1}{Junicode-Inf}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-Inf/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{lc}{sl}{
- <-> ssub * Junicode-Inf/lc/it
+\DeclareFontShape{T1}{Junicode-Inf}{bsx}{sl}{
+ <-> ssub * Junicode-Inf/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{lightcondensed}{sl}{
- <-> ssub * Junicode-Inf/lightcondensed/it
+\DeclareFontShape{T1}{Junicode-Inf}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Inf/boldsemiexpanded/it
}{}
@@ -404,50 +323,43 @@
}{}
-% ---- sb = semibold ----
+% ---- c = condensed ----
-\DeclareFontShape{T1}{Junicode-Inf}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{semibold}{n}{
- <-> alias * Junicode-Inf/sb/n
+\DeclareFontShape{T1}{Junicode-Inf}{condensed}{it}{
+ <-> alias * Junicode-Inf/c/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{semibold}{it}{
- <-> alias * Junicode-Inf/sb/it
+\DeclareFontShape{T1}{Junicode-Inf}{condensed}{n}{
+ <-> alias * Junicode-Inf/c/n
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{sb}{sl}{
- <-> ssub * Junicode-Inf/sb/it
+\DeclareFontShape{T1}{Junicode-Inf}{c}{sl}{
+ <-> ssub * Junicode-Inf/c/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{semibold}{sl}{
- <-> ssub * Junicode-Inf/semibold/it
+\DeclareFontShape{T1}{Junicode-Inf}{condensed}{sl}{
+ <-> ssub * Junicode-Inf/condensed/it
}{}
-% ---- mediumsemicondensed ----
-
-\DeclareFontShape{T1}{Junicode-Inf}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-inf-t1
-}{}
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{T1}{Junicode-Inf}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-inf-t1
+\DeclareFontShape{T1}{Junicode-Inf}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-inf-t1
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-Inf/mediumsemicondensed/it
+\DeclareFontShape{T1}{Junicode-Inf}{semiboldexpanded}{n}{
+ <-> alias * Junicode-Inf/sbx/n
}{}
-
-% ---- sbx = semiboldexpanded ----
-
\DeclareFontShape{T1}{Junicode-Inf}{sbx}{it}{
<-> \Junicode@@scale Junicode-ExpSmBoldItalic-inf-t1
}{}
@@ -456,14 +368,6 @@
<-> alias * Junicode-Inf/sbx/it
}{}
-\DeclareFontShape{T1}{Junicode-Inf}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-inf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-Inf}{semiboldexpanded}{n}{
- <-> alias * Junicode-Inf/sbx/n
-}{}
-
\DeclareFontShape{T1}{Junicode-Inf}{sbx}{sl}{
<-> ssub * Junicode-Inf/sbx/it
}{}
@@ -473,6 +377,102 @@
}{}
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{Junicode-Inf}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{bold}{it}{
+ <-> alias * Junicode-Inf/b/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{bold}{n}{
+ <-> alias * Junicode-Inf/b/n
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{b}{sl}{
+ <-> ssub * Junicode-Inf/b/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{bold}{sl}{
+ <-> ssub * Junicode-Inf/bold/it
+}{}
+
+
+% ---- x = expanded ----
+
+\DeclareFontShape{T1}{Junicode-Inf}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{expanded}{n}{
+ <-> alias * Junicode-Inf/x/n
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{expanded}{it}{
+ <-> alias * Junicode-Inf/x/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{x}{sl}{
+ <-> ssub * Junicode-Inf/x/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{expanded}{sl}{
+ <-> ssub * Junicode-Inf/expanded/it
+}{}
+
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{T1}{Junicode-Inf}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-Inf/mediumexpanded/it
+}{}
+
+
+% ---- lsc = lightsemicondensed ----
+
+\DeclareFontShape{T1}{Junicode-Inf}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{lightsemicondensed}{n}{
+ <-> alias * Junicode-Inf/lsc/n
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-inf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{lightsemicondensed}{it}{
+ <-> alias * Junicode-Inf/lsc/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{lsc}{sl}{
+ <-> ssub * Junicode-Inf/lsc/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-Inf}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-Inf/lightsemicondensed/it
+}{}
+
+
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
\endinput
diff --git a/Master/texmf-dist/tex/latex/junicode/T1Junicode-LF.fd b/Master/texmf-dist/tex/latex/junicode/T1Junicode-LF.fd
index e694d9fc06b..96a93a875c1 100644
--- a/Master/texmf-dist/tex/latex/junicode/T1Junicode-LF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/T1Junicode-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{T1Junicode-LF.fd}
- [2024/06/03 (autoinst) Font definitions for T1/Junicode-LF.]
+ [2024/07/21 (autoinst) Font definitions for T1/Junicode-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,178 +20,167 @@
\DeclareFontFamily{T1}{Junicode-LF}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{T1}{Junicode-LF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-LF/sbsx/scit
+\DeclareFontShape{T1}{Junicode-LF}{condensed}{scit}{
+ <-> alias * Junicode-LF/c/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-LF/sbsx/it
+\DeclareFontShape{T1}{Junicode-LF}{condensed}{n}{
+ <-> alias * Junicode-LF/c/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-LF/sbsx/sc
+\DeclareFontShape{T1}{Junicode-LF}{condensed}{it}{
+ <-> alias * Junicode-LF/c/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-LF/sbsx/n
+\DeclareFontShape{T1}{Junicode-LF}{condensed}{sc}{
+ <-> alias * Junicode-LF/c/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbsx}{scsl}{
- <-> ssub * Junicode-LF/sbsx/scit
+\DeclareFontShape{T1}{Junicode-LF}{c}{sl}{
+ <-> ssub * Junicode-LF/c/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiboldsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-LF}{condensed}{sl}{
+ <-> ssub * Junicode-LF/condensed/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbsx}{sl}{
- <-> ssub * Junicode-LF/sbsx/it
+\DeclareFontShape{T1}{Junicode-LF}{c}{scsl}{
+ <-> ssub * Junicode-LF/c/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiboldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-LF}{condensed}{scsl}{
+ <-> ssub * Junicode-LF/condensed/scit
}{}
-% ---- mediumexpanded ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-LF/sbx/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-LF/sbx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-LF/mediumexpanded/scit
+\DeclareFontShape{T1}{Junicode-LF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumexpanded/it
+\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-LF/sbx/scit
}{}
-
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-LF/sbx/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{sbx}{sl}{
+ <-> ssub * Junicode-LF/sbx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiboldexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/mediumsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-LF}{sbx}{scsl}{
+ <-> ssub * Junicode-LF/sbx/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiboldexpanded/scit
}{}
-% ---- sx = semiexpanded ----
+% ---- b = bold ----
-\DeclareFontShape{T1}{Junicode-LF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{scit}{
- <-> alias * Junicode-LF/sx/scit
+\DeclareFontShape{T1}{Junicode-LF}{bold}{scit}{
+ <-> alias * Junicode-LF/b/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{it}{
- <-> alias * Junicode-LF/sx/it
+\DeclareFontShape{T1}{Junicode-LF}{bold}{n}{
+ <-> alias * Junicode-LF/b/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{sc}{
- <-> alias * Junicode-LF/sx/sc
+\DeclareFontShape{T1}{Junicode-LF}{bold}{it}{
+ <-> alias * Junicode-LF/b/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{n}{
- <-> alias * Junicode-LF/sx/n
+\DeclareFontShape{T1}{Junicode-LF}{bold}{sc}{
+ <-> alias * Junicode-LF/b/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sx}{scsl}{
- <-> ssub * Junicode-LF/sx/scit
+\DeclareFontShape{T1}{Junicode-LF}{b}{sl}{
+ <-> ssub * Junicode-LF/b/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiexpanded/scit
+\DeclareFontShape{T1}{Junicode-LF}{bold}{sl}{
+ <-> ssub * Junicode-LF/bold/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sx}{sl}{
- <-> ssub * Junicode-LF/sx/it
+\DeclareFontShape{T1}{Junicode-LF}{b}{scsl}{
+ <-> ssub * Junicode-LF/b/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiexpanded/it
+\DeclareFontShape{T1}{Junicode-LF}{bold}{scsl}{
+ <-> ssub * Junicode-LF/bold/scit
}{}
% ---- x = expanded ----
-\DeclareFontShape{T1}{Junicode-LF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-lf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-LF}{expanded}{it}{
- <-> alias * Junicode-LF/x/it
-}{}
-
-\DeclareFontShape{T1}{Junicode-LF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{expanded}{scit}{
- <-> alias * Junicode-LF/x/scit
+\DeclareFontShape{T1}{Junicode-LF}{expanded}{sc}{
+ <-> alias * Junicode-LF/x/sc
}{}
\DeclareFontShape{T1}{Junicode-LF}{x}{n}{
@@ -202,20 +191,20 @@
<-> alias * Junicode-LF/x/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{expanded}{sc}{
- <-> alias * Junicode-LF/x/sc
+\DeclareFontShape{T1}{Junicode-LF}{expanded}{scit}{
+ <-> alias * Junicode-LF/x/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{x}{scsl}{
- <-> ssub * Junicode-LF/x/scit
+\DeclareFontShape{T1}{Junicode-LF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{expanded}{scsl}{
- <-> ssub * Junicode-LF/expanded/scit
+\DeclareFontShape{T1}{Junicode-LF}{expanded}{it}{
+ <-> alias * Junicode-LF/x/it
}{}
\DeclareFontShape{T1}{Junicode-LF}{x}{sl}{
@@ -226,166 +215,146 @@
<-> ssub * Junicode-LF/expanded/it
}{}
-
-% ---- c = condensed ----
-
-\DeclareFontShape{T1}{Junicode-LF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{x}{scsl}{
+ <-> ssub * Junicode-LF/x/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{condensed}{scit}{
- <-> alias * Junicode-LF/c/scit
+\DeclareFontShape{T1}{Junicode-LF}{expanded}{scsl}{
+ <-> ssub * Junicode-LF/expanded/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-lf-t1
-}{}
-\DeclareFontShape{T1}{Junicode-LF}{condensed}{it}{
- <-> alias * Junicode-LF/c/it
-}{}
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{T1}{Junicode-LF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{condensed}{sc}{
- <-> alias * Junicode-LF/c/sc
+\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-LF/lsc/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{condensed}{n}{
- <-> alias * Junicode-LF/c/n
+\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-LF/lsc/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{c}{scsl}{
- <-> ssub * Junicode-LF/c/scit
+\DeclareFontShape{T1}{Junicode-LF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{condensed}{scsl}{
- <-> ssub * Junicode-LF/condensed/scit
+\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-LF/lsc/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{c}{sl}{
- <-> ssub * Junicode-LF/c/it
+\DeclareFontShape{T1}{Junicode-LF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{condensed}{sl}{
- <-> ssub * Junicode-LF/condensed/it
+\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-LF/lsc/sc
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{T1}{Junicode-LF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{lsc}{sl}{
+ <-> ssub * Junicode-LF/lsc/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{regular}{it}{
- <-> alias * Junicode-LF/m/it
+\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-LF/lightsemicondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{lsc}{scsl}{
+ <-> ssub * Junicode-LF/lsc/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{regular}{scit}{
- <-> alias * Junicode-LF/m/scit
+\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-LF/lightsemicondensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-lf-t1
-}{}
-\DeclareFontShape{T1}{Junicode-LF}{regular}{n}{
- <-> alias * Junicode-LF/m/n
-}{}
+% ---- mediumexpanded ----
-\DeclareFontShape{T1}{Junicode-LF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{regular}{sc}{
- <-> alias * Junicode-LF/m/sc
+\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{m}{scsl}{
- <-> ssub * Junicode-LF/m/scit
+\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{regular}{scsl}{
- <-> ssub * Junicode-LF/regular/scit
+\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{m}{sl}{
- <-> ssub * Junicode-LF/m/it
+\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{regular}{sl}{
- <-> ssub * Junicode-LF/regular/it
+\DeclareFontShape{T1}{Junicode-LF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-LF/mediumexpanded/scit
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{T1}{Junicode-LF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{n}{
- <-> alias * Junicode-LF/lsc/n
+\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{sc}{
+ <-> alias * Junicode-LF/bx/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-LF/lsc/sc
+\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{it}{
+ <-> alias * Junicode-LF/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{it}{
- <-> alias * Junicode-LF/lsc/it
+\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{scit}{
+ <-> alias * Junicode-LF/bx/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-LF/lsc/scit
+\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{n}{
+ <-> alias * Junicode-LF/bx/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lsc}{scsl}{
- <-> ssub * Junicode-LF/lsc/scit
+\DeclareFontShape{T1}{Junicode-LF}{bx}{sl}{
+ <-> ssub * Junicode-LF/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-LF/lightsemicondensed/scit
+\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-LF/boldexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lsc}{sl}{
- <-> ssub * Junicode-LF/lsc/it
+\DeclareFontShape{T1}{Junicode-LF}{bx}{scsl}{
+ <-> ssub * Junicode-LF/bx/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-LF/lightsemicondensed/it
+\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-LF/boldexpanded/scit
}{}
% ---- medium ----
-\DeclareFontShape{T1}{Junicode-LF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-lf-t1
-}{}
-
\DeclareFontShape{T1}{Junicode-LF}{medium}{scit}{
<-> \Junicode@@scale Junicode-MediumItalic-lf-sc-t1
}{}
@@ -394,298 +363,356 @@
<-> \Junicode@@scale Junicode-Medium-lf-t1
}{}
+\DeclareFontShape{T1}{Junicode-LF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-lf-t1
+}{}
+
\DeclareFontShape{T1}{Junicode-LF}{medium}{sc}{
<-> \Junicode@@scale Junicode-Medium-lf-sc-t1
}{}
+\DeclareFontShape{T1}{Junicode-LF}{medium}{sl}{
+ <-> ssub * Junicode-LF/medium/it
+}{}
+
\DeclareFontShape{T1}{Junicode-LF}{medium}{scsl}{
<-> ssub * Junicode-LF/medium/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{medium}{sl}{
- <-> ssub * Junicode-LF/medium/it
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{Junicode-LF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-lf-t1
}{}
+\DeclareFontShape{T1}{Junicode-LF}{regular}{it}{
+ <-> alias * Junicode-LF/m/it
+}{}
-% ---- l = light ----
+\DeclareFontShape{T1}{Junicode-LF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-lf-t1
+}{}
-\DeclareFontShape{T1}{Junicode-LF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{regular}{n}{
+ <-> alias * Junicode-LF/m/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{light}{sc}{
- <-> alias * Junicode-LF/l/sc
+\DeclareFontShape{T1}{Junicode-LF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{regular}{scit}{
+ <-> alias * Junicode-LF/m/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{light}{n}{
- <-> alias * Junicode-LF/l/n
+\DeclareFontShape{T1}{Junicode-LF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{regular}{sc}{
+ <-> alias * Junicode-LF/m/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{light}{scit}{
- <-> alias * Junicode-LF/l/scit
+\DeclareFontShape{T1}{Junicode-LF}{m}{sl}{
+ <-> ssub * Junicode-LF/m/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{regular}{sl}{
+ <-> ssub * Junicode-LF/regular/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{light}{it}{
- <-> alias * Junicode-LF/l/it
+\DeclareFontShape{T1}{Junicode-LF}{m}{scsl}{
+ <-> ssub * Junicode-LF/m/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{l}{scsl}{
- <-> ssub * Junicode-LF/l/scit
+\DeclareFontShape{T1}{Junicode-LF}{regular}{scsl}{
+ <-> ssub * Junicode-LF/regular/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{light}{scsl}{
- <-> ssub * Junicode-LF/light/scit
+
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{l}{sl}{
- <-> ssub * Junicode-LF/l/it
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{light}{sl}{
- <-> ssub * Junicode-LF/light/it
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-lf-sc-t1
}{}
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumsemiexpanded/it
+}{}
-% ---- bx = boldexpanded ----
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/mediumsemiexpanded/scit
+}{}
-\DeclareFontShape{T1}{Junicode-LF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-sc-t1
+
+% ---- lc = lightcondensed ----
+
+\DeclareFontShape{T1}{Junicode-LF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{scit}{
- <-> alias * Junicode-LF/bx/scit
+\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{it}{
+ <-> alias * Junicode-LF/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{it}{
- <-> alias * Junicode-LF/bx/it
+\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{scit}{
+ <-> alias * Junicode-LF/lc/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{sc}{
- <-> alias * Junicode-LF/bx/sc
+\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{n}{
+ <-> alias * Junicode-LF/lc/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{n}{
- <-> alias * Junicode-LF/bx/n
+\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{sc}{
+ <-> alias * Junicode-LF/lc/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bx}{scsl}{
- <-> ssub * Junicode-LF/bx/scit
+\DeclareFontShape{T1}{Junicode-LF}{lc}{sl}{
+ <-> ssub * Junicode-LF/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-LF/boldexpanded/scit
+\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-LF/lightcondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bx}{sl}{
- <-> ssub * Junicode-LF/bx/it
+\DeclareFontShape{T1}{Junicode-LF}{lc}{scsl}{
+ <-> ssub * Junicode-LF/lc/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldexpanded}{sl}{
- <-> ssub * Junicode-LF/boldexpanded/it
+\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-LF/lightcondensed/scit
}{}
-% ---- mediumcondensed ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-LF/mediumcondensed/scit
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-LF/mediumsemicondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-LF/mediumcondensed/it
+\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-LF/mediumsemicondensed/scit
}{}
-% ---- b = bold ----
+% ---- l = light ----
-\DeclareFontShape{T1}{Junicode-LF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bold}{n}{
- <-> alias * Junicode-LF/b/n
+\DeclareFontShape{T1}{Junicode-LF}{light}{sc}{
+ <-> alias * Junicode-LF/l/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bold}{sc}{
- <-> alias * Junicode-LF/b/sc
+\DeclareFontShape{T1}{Junicode-LF}{light}{n}{
+ <-> alias * Junicode-LF/l/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bold}{it}{
- <-> alias * Junicode-LF/b/it
+\DeclareFontShape{T1}{Junicode-LF}{light}{scit}{
+ <-> alias * Junicode-LF/l/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bold}{scit}{
- <-> alias * Junicode-LF/b/scit
+\DeclareFontShape{T1}{Junicode-LF}{light}{it}{
+ <-> alias * Junicode-LF/l/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{b}{scsl}{
- <-> ssub * Junicode-LF/b/scit
+\DeclareFontShape{T1}{Junicode-LF}{l}{sl}{
+ <-> ssub * Junicode-LF/l/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bold}{scsl}{
- <-> ssub * Junicode-LF/bold/scit
+\DeclareFontShape{T1}{Junicode-LF}{light}{sl}{
+ <-> ssub * Junicode-LF/light/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{b}{sl}{
- <-> ssub * Junicode-LF/b/it
+\DeclareFontShape{T1}{Junicode-LF}{l}{scsl}{
+ <-> ssub * Junicode-LF/l/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bold}{sl}{
- <-> ssub * Junicode-LF/bold/it
+\DeclareFontShape{T1}{Junicode-LF}{light}{scsl}{
+ <-> ssub * Junicode-LF/light/scit
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{T1}{Junicode-LF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-LF/bsx/sc
+\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{sc}{
+ <-> alias * Junicode-LF/sx/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-LF/bsx/n
+\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{scit}{
+ <-> alias * Junicode-LF/sx/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-LF/bsx/scit
+\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{n}{
+ <-> alias * Junicode-LF/sx/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-LF/bsx/it
+\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{it}{
+ <-> alias * Junicode-LF/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bsx}{scsl}{
- <-> ssub * Junicode-LF/bsx/scit
+\DeclareFontShape{T1}{Junicode-LF}{sx}{sl}{
+ <-> ssub * Junicode-LF/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-LF/boldsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{bsx}{sl}{
- <-> ssub * Junicode-LF/bsx/it
+\DeclareFontShape{T1}{Junicode-LF}{sx}{scsl}{
+ <-> ssub * Junicode-LF/sx/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/boldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-LF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiexpanded/scit
}{}
-% ---- lc = lightcondensed ----
+% ---- mediumcondensed ----
-\DeclareFontShape{T1}{Junicode-LF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{n}{
- <-> alias * Junicode-LF/lc/n
+\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{sc}{
- <-> alias * Junicode-LF/lc/sc
+\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-LF/mediumcondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{it}{
- <-> alias * Junicode-LF/lc/it
+\DeclareFontShape{T1}{Junicode-LF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-LF/mediumcondensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-lf-sc-t1
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{T1}{Junicode-LF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{scit}{
- <-> alias * Junicode-LF/lc/scit
+\DeclareFontShape{T1}{Junicode-LF}{semibold}{n}{
+ <-> alias * Junicode-LF/sb/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lc}{scsl}{
- <-> ssub * Junicode-LF/lc/scit
+\DeclareFontShape{T1}{Junicode-LF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-LF/lightcondensed/scit
+\DeclareFontShape{T1}{Junicode-LF}{semibold}{scit}{
+ <-> alias * Junicode-LF/sb/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lc}{sl}{
- <-> ssub * Junicode-LF/lc/it
+\DeclareFontShape{T1}{Junicode-LF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{lightcondensed}{sl}{
- <-> ssub * Junicode-LF/lightcondensed/it
+\DeclareFontShape{T1}{Junicode-LF}{semibold}{it}{
+ <-> alias * Junicode-LF/sb/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-LF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-lf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-LF}{semibold}{sc}{
+ <-> alias * Junicode-LF/sb/sc
+}{}
+
+\DeclareFontShape{T1}{Junicode-LF}{sb}{sl}{
+ <-> ssub * Junicode-LF/sb/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-LF}{semibold}{sl}{
+ <-> ssub * Junicode-LF/semibold/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-LF}{sb}{scsl}{
+ <-> ssub * Junicode-LF/sb/scit
+}{}
+
+\DeclareFontShape{T1}{Junicode-LF}{semibold}{scsl}{
+ <-> ssub * Junicode-LF/semibold/scit
}{}
@@ -699,12 +726,12 @@
<-> alias * Junicode-LF/sc/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semicondensed}{sc}{
- <-> alias * Junicode-LF/sc/sc
+\DeclareFontShape{T1}{Junicode-LF}{semicondensed}{scit}{
+ <-> alias * Junicode-LF/sc/scit
}{}
\DeclareFontShape{T1}{Junicode-LF}{sc}{it}{
@@ -715,20 +742,12 @@
<-> alias * Junicode-LF/sc/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-LF}{semicondensed}{scit}{
- <-> alias * Junicode-LF/sc/scit
-}{}
-
-\DeclareFontShape{T1}{Junicode-LF}{sc}{scsl}{
- <-> ssub * Junicode-LF/sc/scit
+\DeclareFontShape{T1}{Junicode-LF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semicondensed}{scsl}{
- <-> ssub * Junicode-LF/semicondensed/scit
+\DeclareFontShape{T1}{Junicode-LF}{semicondensed}{sc}{
+ <-> alias * Junicode-LF/sc/sc
}{}
\DeclareFontShape{T1}{Junicode-LF}{sc}{sl}{
@@ -739,133 +758,114 @@
<-> ssub * Junicode-LF/semicondensed/it
}{}
-
-% ---- sb = semibold ----
-
-\DeclareFontShape{T1}{Junicode-LF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-lf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-LF}{semibold}{sc}{
- <-> alias * Junicode-LF/sb/sc
-}{}
-
-\DeclareFontShape{T1}{Junicode-LF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{sc}{scsl}{
+ <-> ssub * Junicode-LF/sc/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semibold}{n}{
- <-> alias * Junicode-LF/sb/n
+\DeclareFontShape{T1}{Junicode-LF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-LF/semicondensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-lf-sc-t1
-}{}
-\DeclareFontShape{T1}{Junicode-LF}{semibold}{scit}{
- <-> alias * Junicode-LF/sb/scit
-}{}
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-LF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semibold}{it}{
- <-> alias * Junicode-LF/sb/it
+\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-LF/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sb}{scsl}{
- <-> ssub * Junicode-LF/sb/scit
+\DeclareFontShape{T1}{Junicode-LF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semibold}{scsl}{
- <-> ssub * Junicode-LF/semibold/scit
+\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-LF/bsx/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sb}{sl}{
- <-> ssub * Junicode-LF/sb/it
+\DeclareFontShape{T1}{Junicode-LF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semibold}{sl}{
- <-> ssub * Junicode-LF/semibold/it
+\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-LF/bsx/scit
}{}
-
-% ---- mediumsemicondensed ----
-
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-LF/bsx/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{bsx}{sl}{
+ <-> ssub * Junicode-LF/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/boldsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-LF/mediumsemicondensed/scit
+\DeclareFontShape{T1}{Junicode-LF}{bsx}{scsl}{
+ <-> ssub * Junicode-LF/bsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-LF/mediumsemicondensed/it
+\DeclareFontShape{T1}{Junicode-LF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/boldsemiexpanded/scit
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-LF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{n}{
- <-> alias * Junicode-LF/sbx/n
+\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-LF/sbsx/n
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-LF/sbx/sc
+\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-LF/sbsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-t1
+\DeclareFontShape{T1}{Junicode-LF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{it}{
- <-> alias * Junicode-LF/sbx/it
+\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-LF/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-sc-t1
+\DeclareFontShape{T1}{Junicode-LF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-lf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-LF/sbx/scit
+\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-LF/sbsx/sc
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbx}{scsl}{
- <-> ssub * Junicode-LF/sbx/scit
+\DeclareFontShape{T1}{Junicode-LF}{sbsx}{sl}{
+ <-> ssub * Junicode-LF/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-LF/semiboldexpanded/scit
+\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-LF}{sbx}{sl}{
- <-> ssub * Junicode-LF/sbx/it
+\DeclareFontShape{T1}{Junicode-LF}{sbsx}{scsl}{
+ <-> ssub * Junicode-LF/sbsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-LF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-LF/semiboldexpanded/it
+\DeclareFontShape{T1}{Junicode-LF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-LF/semiboldsemiexpanded/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/T1Junicode-OsF.fd b/Master/texmf-dist/tex/latex/junicode/T1Junicode-OsF.fd
index 6af4216213e..0055076c6d7 100644
--- a/Master/texmf-dist/tex/latex/junicode/T1Junicode-OsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/T1Junicode-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{T1Junicode-OsF.fd}
- [2024/06/03 (autoinst) Font definitions for T1/Junicode-OsF.]
+ [2024/07/21 (autoinst) Font definitions for T1/Junicode-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,234 +20,312 @@
\DeclareFontFamily{T1}{Junicode-OsF}{}
-% ---- mediumsemicondensed ----
+% ---- b = bold ----
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{bold}{sc}{
+ <-> alias * Junicode-OsF/b/sc
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{bold}{scit}{
+ <-> alias * Junicode-OsF/b/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-OsF/mediumsemicondensed/scit
+\DeclareFontShape{T1}{Junicode-OsF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumsemicondensed/it
+\DeclareFontShape{T1}{Junicode-OsF}{bold}{n}{
+ <-> alias * Junicode-OsF/b/n
}{}
+\DeclareFontShape{T1}{Junicode-OsF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-osf-t1
+}{}
-% ---- sbx = semiboldexpanded ----
+\DeclareFontShape{T1}{Junicode-OsF}{bold}{it}{
+ <-> alias * Junicode-OsF/b/it
+}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{b}{sl}{
+ <-> ssub * Junicode-OsF/b/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-OsF/sbx/n
+\DeclareFontShape{T1}{Junicode-OsF}{bold}{sl}{
+ <-> ssub * Junicode-OsF/bold/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{b}{scsl}{
+ <-> ssub * Junicode-OsF/b/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-OsF/sbx/sc
+\DeclareFontShape{T1}{Junicode-OsF}{bold}{scsl}{
+ <-> ssub * Junicode-OsF/bold/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-t1
+
+% ---- x = expanded ----
+
+\DeclareFontShape{T1}{Junicode-OsF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{it}{
- <-> alias * Junicode-OsF/sbx/it
+\DeclareFontShape{T1}{Junicode-OsF}{expanded}{sc}{
+ <-> alias * Junicode-OsF/x/sc
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-OsF/sbx/scit
+\DeclareFontShape{T1}{Junicode-OsF}{expanded}{it}{
+ <-> alias * Junicode-OsF/x/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbx}{scsl}{
- <-> ssub * Junicode-OsF/sbx/scit
+\DeclareFontShape{T1}{Junicode-OsF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiboldexpanded/scit
+\DeclareFontShape{T1}{Junicode-OsF}{expanded}{scit}{
+ <-> alias * Junicode-OsF/x/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbx}{sl}{
- <-> ssub * Junicode-OsF/sbx/it
+\DeclareFontShape{T1}{Junicode-OsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiboldexpanded/it
+\DeclareFontShape{T1}{Junicode-OsF}{expanded}{n}{
+ <-> alias * Junicode-OsF/x/n
}{}
+\DeclareFontShape{T1}{Junicode-OsF}{x}{sl}{
+ <-> ssub * Junicode-OsF/x/it
+}{}
-% ---- lc = lightcondensed ----
+\DeclareFontShape{T1}{Junicode-OsF}{expanded}{sl}{
+ <-> ssub * Junicode-OsF/expanded/it
+}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{x}{scsl}{
+ <-> ssub * Junicode-OsF/x/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{sc}{
- <-> alias * Junicode-OsF/lc/sc
+\DeclareFontShape{T1}{Junicode-OsF}{expanded}{scsl}{
+ <-> ssub * Junicode-OsF/expanded/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-osf-t1
+
+% ---- lsc = lightsemicondensed ----
+
+\DeclareFontShape{T1}{Junicode-OsF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{n}{
- <-> alias * Junicode-OsF/lc/n
+\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-OsF/lsc/sc
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{scit}{
- <-> alias * Junicode-OsF/lc/scit
+\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-OsF/lsc/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{it}{
- <-> alias * Junicode-OsF/lc/it
+\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-OsF/lsc/n
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lc}{scsl}{
- <-> ssub * Junicode-OsF/lc/scit
+\DeclareFontShape{T1}{Junicode-OsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-OsF/lightcondensed/scit
+\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lc}{sl}{
- <-> ssub * Junicode-OsF/lc/it
+\DeclareFontShape{T1}{Junicode-OsF}{lsc}{sl}{
+ <-> ssub * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-OsF/lightcondensed/it
+\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightsemicondensed/it
}{}
+\DeclareFontShape{T1}{Junicode-OsF}{lsc}{scsl}{
+ <-> ssub * Junicode-OsF/lsc/scit
+}{}
-% ---- bsx = boldsemiexpanded ----
+\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/lightsemicondensed/scit
+}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-sc-t1
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-OsF/bsx/scit
+\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-OsF/bsx/it
+\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-OsF/bsx/sc
+\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/mediumexpanded/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-osf-t1
+
+% ---- c = condensed ----
+
+\DeclareFontShape{T1}{Junicode-OsF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/bsx/n
+\DeclareFontShape{T1}{Junicode-OsF}{condensed}{sc}{
+ <-> alias * Junicode-OsF/c/sc
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bsx}{scsl}{
- <-> ssub * Junicode-OsF/bsx/scit
+\DeclareFontShape{T1}{Junicode-OsF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/boldsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-OsF}{condensed}{scit}{
+ <-> alias * Junicode-OsF/c/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bsx}{sl}{
- <-> ssub * Junicode-OsF/bsx/it
+\DeclareFontShape{T1}{Junicode-OsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/boldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-OsF}{condensed}{n}{
+ <-> alias * Junicode-OsF/c/n
}{}
+\DeclareFontShape{T1}{Junicode-OsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-osf-t1
+}{}
-% ---- sc = semicondensed ----
+\DeclareFontShape{T1}{Junicode-OsF}{condensed}{it}{
+ <-> alias * Junicode-OsF/c/it
+}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{c}{sl}{
+ <-> ssub * Junicode-OsF/c/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{scit}{
- <-> alias * Junicode-OsF/sc/scit
+\DeclareFontShape{T1}{Junicode-OsF}{condensed}{sl}{
+ <-> ssub * Junicode-OsF/condensed/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{c}{scsl}{
+ <-> ssub * Junicode-OsF/c/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{it}{
- <-> alias * Junicode-OsF/sc/it
+\DeclareFontShape{T1}{Junicode-OsF}{condensed}{scsl}{
+ <-> ssub * Junicode-OsF/condensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-osf-sc-t1
+
+% ---- sbx = semiboldexpanded ----
+
+\DeclareFontShape{T1}{Junicode-OsF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{sc}{
- <-> alias * Junicode-OsF/sc/sc
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-OsF/sbx/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{n}{
- <-> alias * Junicode-OsF/sc/n
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-OsF/sbx/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sc}{scsl}{
- <-> ssub * Junicode-OsF/sc/scit
+\DeclareFontShape{T1}{Junicode-OsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{scsl}{
- <-> ssub * Junicode-OsF/semicondensed/scit
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-OsF/sbx/n
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sc}{sl}{
- <-> ssub * Junicode-OsF/sc/it
+\DeclareFontShape{T1}{Junicode-OsF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{sl}{
- <-> ssub * Junicode-OsF/semicondensed/it
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-OsF/sbx/sc
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{sbx}{sl}{
+ <-> ssub * Junicode-OsF/sbx/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiboldexpanded/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{sbx}{scsl}{
+ <-> ssub * Junicode-OsF/sbx/scit
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiboldexpanded/scit
+}{}
+
+
+% ---- mediumcondensed ----
+
+\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-osf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-osf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-osf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-osf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumcondensed/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-OsF/mediumcondensed/scit
}{}
@@ -261,6 +339,14 @@
<-> alias * Junicode-OsF/sb/scit
}{}
+\DeclareFontShape{T1}{Junicode-OsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-osf-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-OsF}{semibold}{n}{
+ <-> alias * Junicode-OsF/sb/n
+}{}
+
\DeclareFontShape{T1}{Junicode-OsF}{sb}{it}{
<-> \Junicode@@scale Junicode-SmBoldItalic-osf-t1
}{}
@@ -277,12 +363,12 @@
<-> alias * Junicode-OsF/sb/sc
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sb}{sl}{
+ <-> ssub * Junicode-OsF/sb/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semibold}{n}{
- <-> alias * Junicode-OsF/sb/n
+\DeclareFontShape{T1}{Junicode-OsF}{semibold}{sl}{
+ <-> ssub * Junicode-OsF/semibold/it
}{}
\DeclareFontShape{T1}{Junicode-OsF}{sb}{scsl}{
@@ -293,154 +379,162 @@
<-> ssub * Junicode-OsF/semibold/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sb}{sl}{
- <-> ssub * Junicode-OsF/sb/it
+
+% ---- sc = semicondensed ----
+
+\DeclareFontShape{T1}{Junicode-OsF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semibold}{sl}{
- <-> ssub * Junicode-OsF/semibold/it
+\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{sc}{
+ <-> alias * Junicode-OsF/sc/sc
}{}
+\DeclareFontShape{T1}{Junicode-OsF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-osf-t1
+}{}
-% ---- b = bold ----
+\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{it}{
+ <-> alias * Junicode-OsF/sc/it
+}{}
-\DeclareFontShape{T1}{Junicode-OsF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bold}{it}{
- <-> alias * Junicode-OsF/b/it
+\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{n}{
+ <-> alias * Junicode-OsF/sc/n
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bold}{scit}{
- <-> alias * Junicode-OsF/b/scit
+\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{scit}{
+ <-> alias * Junicode-OsF/sc/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sc}{sl}{
+ <-> ssub * Junicode-OsF/sc/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bold}{n}{
- <-> alias * Junicode-OsF/b/n
+\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{sl}{
+ <-> ssub * Junicode-OsF/semicondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sc}{scsl}{
+ <-> ssub * Junicode-OsF/sc/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bold}{sc}{
- <-> alias * Junicode-OsF/b/sc
+\DeclareFontShape{T1}{Junicode-OsF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/semicondensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{b}{scsl}{
- <-> ssub * Junicode-OsF/b/scit
+
+% ---- sbsx = semiboldsemiexpanded ----
+
+\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bold}{scsl}{
- <-> ssub * Junicode-OsF/bold/scit
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-OsF/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{b}{sl}{
- <-> ssub * Junicode-OsF/b/it
+\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bold}{sl}{
- <-> ssub * Junicode-OsF/bold/it
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/sbsx/n
}{}
+\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-sc-t1
+}{}
-% ---- mediumcondensed ----
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-OsF/sbsx/scit
+}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-OsF/sbsx/sc
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{sl}{
+ <-> ssub * Junicode-OsF/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-OsF/mediumcondensed/scit
+\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{scsl}{
+ <-> ssub * Junicode-OsF/sbsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumcondensed/it
+\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiboldsemiexpanded/scit
}{}
-% ---- l = light ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-OsF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{light}{sc}{
- <-> alias * Junicode-OsF/l/sc
+\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-OsF/bsx/sc
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{light}{n}{
- <-> alias * Junicode-OsF/l/n
+\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-OsF/bsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{light}{scit}{
- <-> alias * Junicode-OsF/l/scit
+\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/bsx/n
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{light}{it}{
- <-> alias * Junicode-OsF/l/it
+\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{l}{scsl}{
- <-> ssub * Junicode-OsF/l/scit
+\DeclareFontShape{T1}{Junicode-OsF}{bsx}{sl}{
+ <-> ssub * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{light}{scsl}{
- <-> ssub * Junicode-OsF/light/scit
+\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/boldsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{l}{sl}{
- <-> ssub * Junicode-OsF/l/it
+\DeclareFontShape{T1}{Junicode-OsF}{bsx}{scsl}{
+ <-> ssub * Junicode-OsF/bsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{light}{sl}{
- <-> ssub * Junicode-OsF/light/it
+\DeclareFontShape{T1}{Junicode-OsF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/boldsemiexpanded/scit
}{}
% ---- bx = boldexpanded ----
-\DeclareFontShape{T1}{Junicode-OsF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{boldexpanded}{sc}{
- <-> alias * Junicode-OsF/bx/sc
-}{}
-
\DeclareFontShape{T1}{Junicode-OsF}{bx}{n}{
<-> \Junicode@@scale Junicode-ExpBold-osf-t1
}{}
@@ -465,12 +559,12 @@
<-> alias * Junicode-OsF/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{bx}{scsl}{
- <-> ssub * Junicode-OsF/bx/scit
+\DeclareFontShape{T1}{Junicode-OsF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-OsF/boldexpanded/scit
+\DeclareFontShape{T1}{Junicode-OsF}{boldexpanded}{sc}{
+ <-> alias * Junicode-OsF/bx/sc
}{}
\DeclareFontShape{T1}{Junicode-OsF}{bx}{sl}{
@@ -481,55 +575,12 @@
<-> ssub * Junicode-OsF/boldexpanded/it
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{T1}{Junicode-OsF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-osf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{regular}{it}{
- <-> alias * Junicode-OsF/m/it
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{regular}{scit}{
- <-> alias * Junicode-OsF/m/scit
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-osf-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{regular}{n}{
- <-> alias * Junicode-OsF/m/n
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{regular}{sc}{
- <-> alias * Junicode-OsF/m/sc
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{m}{scsl}{
- <-> ssub * Junicode-OsF/m/scit
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{regular}{scsl}{
- <-> ssub * Junicode-OsF/regular/scit
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{m}{sl}{
- <-> ssub * Junicode-OsF/m/it
+\DeclareFontShape{T1}{Junicode-OsF}{bx}{scsl}{
+ <-> ssub * Junicode-OsF/bx/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{regular}{sl}{
- <-> ssub * Junicode-OsF/regular/it
+\DeclareFontShape{T1}{Junicode-OsF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/boldexpanded/scit
}{}
@@ -539,333 +590,282 @@
<-> \Junicode@@scale Junicode-MediumItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-osf-sc-t1
-}{}
-
\DeclareFontShape{T1}{Junicode-OsF}{medium}{n}{
<-> \Junicode@@scale Junicode-Medium-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{medium}{scsl}{
- <-> ssub * Junicode-OsF/medium/scit
+\DeclareFontShape{T1}{Junicode-OsF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-osf-sc-t1
}{}
\DeclareFontShape{T1}{Junicode-OsF}{medium}{sl}{
<-> ssub * Junicode-OsF/medium/it
}{}
-
-% ---- lsc = lightsemicondensed ----
-
-\DeclareFontShape{T1}{Junicode-OsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{medium}{scsl}{
+ <-> ssub * Junicode-OsF/medium/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-OsF/lsc/it
-}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-OsF/lsc/scit
-}{}
+% ---- m = regular ----
-\DeclareFontShape{T1}{Junicode-OsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-OsF/lsc/n
+\DeclareFontShape{T1}{Junicode-OsF}{regular}{it}{
+ <-> alias * Junicode-OsF/m/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-OsF/lsc/sc
+\DeclareFontShape{T1}{Junicode-OsF}{regular}{n}{
+ <-> alias * Junicode-OsF/m/n
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lsc}{scsl}{
- <-> ssub * Junicode-OsF/lsc/scit
+\DeclareFontShape{T1}{Junicode-OsF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-OsF/lightsemicondensed/scit
+\DeclareFontShape{T1}{Junicode-OsF}{regular}{scit}{
+ <-> alias * Junicode-OsF/m/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lsc}{sl}{
- <-> ssub * Junicode-OsF/lsc/it
+\DeclareFontShape{T1}{Junicode-OsF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/lightsemicondensed/it
+\DeclareFontShape{T1}{Junicode-OsF}{regular}{sc}{
+ <-> alias * Junicode-OsF/m/sc
}{}
-
-% ---- c = condensed ----
-
-\DeclareFontShape{T1}{Junicode-OsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{m}{sl}{
+ <-> ssub * Junicode-OsF/m/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{condensed}{it}{
- <-> alias * Junicode-OsF/c/it
+\DeclareFontShape{T1}{Junicode-OsF}{regular}{sl}{
+ <-> ssub * Junicode-OsF/regular/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{m}{scsl}{
+ <-> ssub * Junicode-OsF/m/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{condensed}{scit}{
- <-> alias * Junicode-OsF/c/scit
+\DeclareFontShape{T1}{Junicode-OsF}{regular}{scsl}{
+ <-> ssub * Junicode-OsF/regular/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-osf-t1
-}{}
-\DeclareFontShape{T1}{Junicode-OsF}{condensed}{n}{
- <-> alias * Junicode-OsF/c/n
-}{}
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-OsF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{condensed}{sc}{
- <-> alias * Junicode-OsF/c/sc
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{c}{scsl}{
- <-> ssub * Junicode-OsF/c/scit
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{condensed}{scsl}{
- <-> ssub * Junicode-OsF/condensed/scit
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{c}{sl}{
- <-> ssub * Junicode-OsF/c/it
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{condensed}{sl}{
- <-> ssub * Junicode-OsF/condensed/it
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/mediumsemiexpanded/scit
}{}
-% ---- x = expanded ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{T1}{Junicode-OsF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{expanded}{it}{
- <-> alias * Junicode-OsF/x/it
+\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{it}{
+ <-> alias * Junicode-OsF/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{expanded}{scit}{
- <-> alias * Junicode-OsF/x/scit
+\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{scit}{
+ <-> alias * Junicode-OsF/lc/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{expanded}{n}{
- <-> alias * Junicode-OsF/x/n
+\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{n}{
+ <-> alias * Junicode-OsF/lc/n
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{expanded}{sc}{
- <-> alias * Junicode-OsF/x/sc
+\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{sc}{
+ <-> alias * Junicode-OsF/lc/sc
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{x}{scsl}{
- <-> ssub * Junicode-OsF/x/scit
+\DeclareFontShape{T1}{Junicode-OsF}{lc}{sl}{
+ <-> ssub * Junicode-OsF/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{expanded}{scsl}{
- <-> ssub * Junicode-OsF/expanded/scit
+\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightcondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{x}{sl}{
- <-> ssub * Junicode-OsF/x/it
+\DeclareFontShape{T1}{Junicode-OsF}{lc}{scsl}{
+ <-> ssub * Junicode-OsF/lc/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{expanded}{sl}{
- <-> ssub * Junicode-OsF/expanded/it
+\DeclareFontShape{T1}{Junicode-OsF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-OsF/lightcondensed/scit
}{}
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{T1}{Junicode-OsF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-osf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{scit}{
- <-> alias * Junicode-OsF/sx/scit
-}{}
+% ---- mediumsemicondensed ----
-\DeclareFontShape{T1}{Junicode-OsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{it}{
- <-> alias * Junicode-OsF/sx/it
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{sc}{
- <-> alias * Junicode-OsF/sx/sc
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemicondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{n}{
- <-> alias * Junicode-OsF/sx/n
+\DeclareFontShape{T1}{Junicode-OsF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-OsF/mediumsemicondensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sx}{scsl}{
- <-> ssub * Junicode-OsF/sx/scit
-}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiexpanded/scit
-}{}
+% ---- l = light ----
-\DeclareFontShape{T1}{Junicode-OsF}{sx}{sl}{
- <-> ssub * Junicode-OsF/sx/it
+\DeclareFontShape{T1}{Junicode-OsF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiexpanded/it
+\DeclareFontShape{T1}{Junicode-OsF}{light}{sc}{
+ <-> alias * Junicode-OsF/l/sc
}{}
-
-% ---- mediumexpanded ----
-
-\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{light}{it}{
+ <-> alias * Junicode-OsF/l/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{light}{n}{
+ <-> alias * Junicode-OsF/l/n
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-OsF/mediumexpanded/scit
+\DeclareFontShape{T1}{Junicode-OsF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumexpanded/it
+\DeclareFontShape{T1}{Junicode-OsF}{light}{scit}{
+ <-> alias * Junicode-OsF/l/scit
}{}
-
-% ---- sbsx = semiboldsemiexpanded ----
-
-\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{l}{sl}{
+ <-> ssub * Junicode-OsF/l/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-OsF/sbsx/scit
+\DeclareFontShape{T1}{Junicode-OsF}{light}{sl}{
+ <-> ssub * Junicode-OsF/light/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{l}{scsl}{
+ <-> ssub * Junicode-OsF/l/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-OsF/sbsx/it
+\DeclareFontShape{T1}{Junicode-OsF}{light}{scsl}{
+ <-> ssub * Junicode-OsF/light/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-osf-sc-t1
-}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-OsF/sbsx/sc
-}{}
+% ---- sx = semiexpanded ----
-\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/sbsx/n
+\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{sc}{
+ <-> alias * Junicode-OsF/sx/sc
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{scsl}{
- <-> ssub * Junicode-OsF/sbsx/scit
+\DeclareFontShape{T1}{Junicode-OsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/semiboldsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{n}{
+ <-> alias * Junicode-OsF/sx/n
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{sbsx}{sl}{
- <-> ssub * Junicode-OsF/sbsx/it
+\DeclareFontShape{T1}{Junicode-OsF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-osf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiboldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{scit}{
+ <-> alias * Junicode-OsF/sx/scit
}{}
-
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-osf-t1
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{it}{
+ <-> alias * Junicode-OsF/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-t1
+\DeclareFontShape{T1}{Junicode-OsF}{sx}{sl}{
+ <-> ssub * Junicode-OsF/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-sc-t1
+\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-OsF/mediumsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-OsF}{sx}{scsl}{
+ <-> ssub * Junicode-OsF/sx/scit
}{}
-\DeclareFontShape{T1}{Junicode-OsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-OsF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-OsF/semiexpanded/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/T1Junicode-Sup.fd b/Master/texmf-dist/tex/latex/junicode/T1Junicode-Sup.fd
index dd152bd085e..86903276ad1 100644
--- a/Master/texmf-dist/tex/latex/junicode/T1Junicode-Sup.fd
+++ b/Master/texmf-dist/tex/latex/junicode/T1Junicode-Sup.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{T1Junicode-Sup.fd}
- [2024/06/03 (autoinst) Font definitions for T1/Junicode-Sup.]
+ [2024/07/21 (autoinst) Font definitions for T1/Junicode-Sup.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,126 +20,111 @@
\DeclareFontFamily{T1}{Junicode-Sup}{}
-% ---- sx = semiexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{T1}{Junicode-Sup}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semiexpanded}{n}{
- <-> alias * Junicode-Sup/sx/n
+\DeclareFontShape{T1}{Junicode-Sup}{condensed}{n}{
+ <-> alias * Junicode-Sup/c/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semiexpanded}{it}{
- <-> alias * Junicode-Sup/sx/it
+\DeclareFontShape{T1}{Junicode-Sup}{condensed}{it}{
+ <-> alias * Junicode-Sup/c/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{sx}{sl}{
- <-> ssub * Junicode-Sup/sx/it
+\DeclareFontShape{T1}{Junicode-Sup}{c}{sl}{
+ <-> ssub * Junicode-Sup/c/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semiexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiexpanded/it
+\DeclareFontShape{T1}{Junicode-Sup}{condensed}{sl}{
+ <-> ssub * Junicode-Sup/condensed/it
}{}
-% ---- x = expanded ----
-
-\DeclareFontShape{T1}{Junicode-Sup}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-sup-t1
-}{}
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{T1}{Junicode-Sup}{expanded}{n}{
- <-> alias * Junicode-Sup/x/n
+\DeclareFontShape{T1}{Junicode-Sup}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{semiboldexpanded}{it}{
+ <-> alias * Junicode-Sup/sbx/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{expanded}{it}{
- <-> alias * Junicode-Sup/x/it
+\DeclareFontShape{T1}{Junicode-Sup}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{x}{sl}{
- <-> ssub * Junicode-Sup/x/it
+\DeclareFontShape{T1}{Junicode-Sup}{semiboldexpanded}{n}{
+ <-> alias * Junicode-Sup/sbx/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{expanded}{sl}{
- <-> ssub * Junicode-Sup/expanded/it
+\DeclareFontShape{T1}{Junicode-Sup}{sbx}{sl}{
+ <-> ssub * Junicode-Sup/sbx/it
}{}
-
-% ---- c = condensed ----
-
-\DeclareFontShape{T1}{Junicode-Sup}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiboldexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{condensed}{n}{
- <-> alias * Junicode-Sup/c/n
-}{}
-\DeclareFontShape{T1}{Junicode-Sup}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-sup-t1
-}{}
+% ---- x = expanded ----
-\DeclareFontShape{T1}{Junicode-Sup}{condensed}{it}{
- <-> alias * Junicode-Sup/c/it
+\DeclareFontShape{T1}{Junicode-Sup}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{c}{sl}{
- <-> ssub * Junicode-Sup/c/it
+\DeclareFontShape{T1}{Junicode-Sup}{expanded}{n}{
+ <-> alias * Junicode-Sup/x/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{condensed}{sl}{
- <-> ssub * Junicode-Sup/condensed/it
+\DeclareFontShape{T1}{Junicode-Sup}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-sup-t1
}{}
-
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{T1}{Junicode-Sup}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{expanded}{it}{
+ <-> alias * Junicode-Sup/x/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{x}{sl}{
+ <-> ssub * Junicode-Sup/x/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-Sup/mediumsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-Sup}{expanded}{sl}{
+ <-> ssub * Junicode-Sup/expanded/it
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- b = bold ----
-\DeclareFontShape{T1}{Junicode-Sup}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-Sup/sbsx/n
+\DeclareFontShape{T1}{Junicode-Sup}{bold}{it}{
+ <-> alias * Junicode-Sup/b/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-Sup/sbsx/it
+\DeclareFontShape{T1}{Junicode-Sup}{bold}{n}{
+ <-> alias * Junicode-Sup/b/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{sbsx}{sl}{
- <-> ssub * Junicode-Sup/sbsx/it
+\DeclareFontShape{T1}{Junicode-Sup}{b}{sl}{
+ <-> ssub * Junicode-Sup/b/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiboldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-Sup}{bold}{sl}{
+ <-> ssub * Junicode-Sup/bold/it
}{}
@@ -158,84 +143,99 @@
}{}
-% ---- bx = boldexpanded ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{T1}{Junicode-Sup}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{boldexpanded}{it}{
- <-> alias * Junicode-Sup/bx/it
+\DeclareFontShape{T1}{Junicode-Sup}{lightsemicondensed}{it}{
+ <-> alias * Junicode-Sup/lsc/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{boldexpanded}{n}{
- <-> alias * Junicode-Sup/bx/n
+\DeclareFontShape{T1}{Junicode-Sup}{lightsemicondensed}{n}{
+ <-> alias * Junicode-Sup/lsc/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{bx}{sl}{
- <-> ssub * Junicode-Sup/bx/it
+\DeclareFontShape{T1}{Junicode-Sup}{lsc}{sl}{
+ <-> ssub * Junicode-Sup/lsc/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{boldexpanded}{sl}{
- <-> ssub * Junicode-Sup/boldexpanded/it
+\DeclareFontShape{T1}{Junicode-Sup}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-Sup/lightsemicondensed/it
}{}
-% ---- l = light ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{T1}{Junicode-Sup}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{light}{n}{
- <-> alias * Junicode-Sup/l/n
+\DeclareFontShape{T1}{Junicode-Sup}{lightcondensed}{it}{
+ <-> alias * Junicode-Sup/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{light}{it}{
- <-> alias * Junicode-Sup/l/it
+\DeclareFontShape{T1}{Junicode-Sup}{lightcondensed}{n}{
+ <-> alias * Junicode-Sup/lc/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{l}{sl}{
- <-> ssub * Junicode-Sup/l/it
+\DeclareFontShape{T1}{Junicode-Sup}{lc}{sl}{
+ <-> ssub * Junicode-Sup/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{light}{sl}{
- <-> ssub * Junicode-Sup/light/it
+\DeclareFontShape{T1}{Junicode-Sup}{lightcondensed}{sl}{
+ <-> ssub * Junicode-Sup/lightcondensed/it
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- m = regular ----
-\DeclareFontShape{T1}{Junicode-Sup}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lightsemicondensed}{n}{
- <-> alias * Junicode-Sup/lsc/n
+\DeclareFontShape{T1}{Junicode-Sup}{regular}{it}{
+ <-> alias * Junicode-Sup/m/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lightsemicondensed}{it}{
- <-> alias * Junicode-Sup/lsc/it
+\DeclareFontShape{T1}{Junicode-Sup}{regular}{n}{
+ <-> alias * Junicode-Sup/m/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lsc}{sl}{
- <-> ssub * Junicode-Sup/lsc/it
+\DeclareFontShape{T1}{Junicode-Sup}{m}{sl}{
+ <-> ssub * Junicode-Sup/m/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-Sup/lightsemicondensed/it
+\DeclareFontShape{T1}{Junicode-Sup}{regular}{sl}{
+ <-> ssub * Junicode-Sup/regular/it
+}{}
+
+
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{T1}{Junicode-Sup}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Sup}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-sup-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Sup}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/mediumsemiexpanded/it
}{}
@@ -254,99 +254,84 @@
}{}
-% ---- m = regular ----
-
-\DeclareFontShape{T1}{Junicode-Sup}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-sup-t1
-}{}
+% ---- bx = boldexpanded ----
-\DeclareFontShape{T1}{Junicode-Sup}{regular}{it}{
- <-> alias * Junicode-Sup/m/it
+\DeclareFontShape{T1}{Junicode-Sup}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{boldexpanded}{it}{
+ <-> alias * Junicode-Sup/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{regular}{n}{
- <-> alias * Junicode-Sup/m/n
+\DeclareFontShape{T1}{Junicode-Sup}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{m}{sl}{
- <-> ssub * Junicode-Sup/m/it
+\DeclareFontShape{T1}{Junicode-Sup}{boldexpanded}{n}{
+ <-> alias * Junicode-Sup/bx/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{regular}{sl}{
- <-> ssub * Junicode-Sup/regular/it
+\DeclareFontShape{T1}{Junicode-Sup}{bx}{sl}{
+ <-> ssub * Junicode-Sup/bx/it
}{}
-
-% ---- b = bold ----
-
-\DeclareFontShape{T1}{Junicode-Sup}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{boldexpanded}{sl}{
+ <-> ssub * Junicode-Sup/boldexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{bold}{it}{
- <-> alias * Junicode-Sup/b/it
-}{}
-\DeclareFontShape{T1}{Junicode-Sup}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-sup-t1
-}{}
+% ---- sx = semiexpanded ----
-\DeclareFontShape{T1}{Junicode-Sup}{bold}{n}{
- <-> alias * Junicode-Sup/b/n
+\DeclareFontShape{T1}{Junicode-Sup}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{b}{sl}{
- <-> ssub * Junicode-Sup/b/it
+\DeclareFontShape{T1}{Junicode-Sup}{semiexpanded}{n}{
+ <-> alias * Junicode-Sup/sx/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{bold}{sl}{
- <-> ssub * Junicode-Sup/bold/it
+\DeclareFontShape{T1}{Junicode-Sup}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-sup-t1
}{}
-
-% ---- mediumcondensed ----
-
-\DeclareFontShape{T1}{Junicode-Sup}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{semiexpanded}{it}{
+ <-> alias * Junicode-Sup/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{sx}{sl}{
+ <-> ssub * Junicode-Sup/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{mediumcondensed}{sl}{
- <-> ssub * Junicode-Sup/mediumcondensed/it
+\DeclareFontShape{T1}{Junicode-Sup}{semiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiexpanded/it
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- l = light ----
-\DeclareFontShape{T1}{Junicode-Sup}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semiboldexpanded}{it}{
- <-> alias * Junicode-Sup/sbx/it
+\DeclareFontShape{T1}{Junicode-Sup}{light}{n}{
+ <-> alias * Junicode-Sup/l/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semiboldexpanded}{n}{
- <-> alias * Junicode-Sup/sbx/n
+\DeclareFontShape{T1}{Junicode-Sup}{light}{it}{
+ <-> alias * Junicode-Sup/l/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{sbx}{sl}{
- <-> ssub * Junicode-Sup/sbx/it
+\DeclareFontShape{T1}{Junicode-Sup}{l}{sl}{
+ <-> ssub * Junicode-Sup/l/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-Sup/semiboldexpanded/it
+\DeclareFontShape{T1}{Junicode-Sup}{light}{sl}{
+ <-> ssub * Junicode-Sup/light/it
}{}
@@ -367,14 +352,6 @@
% ---- sb = semibold ----
-\DeclareFontShape{T1}{Junicode-Sup}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-sup-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-Sup}{semibold}{it}{
- <-> alias * Junicode-Sup/sb/it
-}{}
-
\DeclareFontShape{T1}{Junicode-Sup}{sb}{n}{
<-> \Junicode@@scale Junicode-SmBold-sup-t1
}{}
@@ -383,6 +360,14 @@
<-> alias * Junicode-Sup/sb/n
}{}
+\DeclareFontShape{T1}{Junicode-Sup}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Sup}{semibold}{it}{
+ <-> alias * Junicode-Sup/sb/it
+}{}
+
\DeclareFontShape{T1}{Junicode-Sup}{sb}{sl}{
<-> ssub * Junicode-Sup/sb/it
}{}
@@ -392,43 +377,50 @@
}{}
-% ---- sc = semicondensed ----
+% ---- mediumcondensed ----
-\DeclareFontShape{T1}{Junicode-Sup}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semicondensed}{n}{
- <-> alias * Junicode-Sup/sc/n
+\DeclareFontShape{T1}{Junicode-Sup}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-Sup/mediumcondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semicondensed}{it}{
- <-> alias * Junicode-Sup/sc/it
-}{}
-\DeclareFontShape{T1}{Junicode-Sup}{sc}{sl}{
- <-> ssub * Junicode-Sup/sc/it
+% ---- sbsx = semiboldsemiexpanded ----
+
+\DeclareFontShape{T1}{Junicode-Sup}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{semicondensed}{sl}{
- <-> ssub * Junicode-Sup/semicondensed/it
+\DeclareFontShape{T1}{Junicode-Sup}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-Sup/sbsx/n
}{}
+\DeclareFontShape{T1}{Junicode-Sup}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-sup-t1
+}{}
-% ---- bsx = boldsemiexpanded ----
+\DeclareFontShape{T1}{Junicode-Sup}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-Sup/sbsx/it
+}{}
-\DeclareFontShape{T1}{Junicode-Sup}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{sbsx}{sl}{
+ <-> ssub * Junicode-Sup/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{boldsemiexpanded}{n}{
- <-> alias * Junicode-Sup/bsx/n
+\DeclareFontShape{T1}{Junicode-Sup}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-Sup/semiboldsemiexpanded/it
}{}
+
+% ---- bsx = boldsemiexpanded ----
+
\DeclareFontShape{T1}{Junicode-Sup}{bsx}{it}{
<-> \Junicode@@scale Junicode-SmExpBoldItalic-sup-t1
}{}
@@ -437,6 +429,14 @@
<-> alias * Junicode-Sup/bsx/it
}{}
+\DeclareFontShape{T1}{Junicode-Sup}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-sup-t1
+}{}
+
+\DeclareFontShape{T1}{Junicode-Sup}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-Sup/bsx/n
+}{}
+
\DeclareFontShape{T1}{Junicode-Sup}{bsx}{sl}{
<-> ssub * Junicode-Sup/bsx/it
}{}
@@ -446,30 +446,30 @@
}{}
-% ---- lc = lightcondensed ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{T1}{Junicode-Sup}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lightcondensed}{n}{
- <-> alias * Junicode-Sup/lc/n
+\DeclareFontShape{T1}{Junicode-Sup}{semicondensed}{it}{
+ <-> alias * Junicode-Sup/sc/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-sup-t1
+\DeclareFontShape{T1}{Junicode-Sup}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-sup-t1
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lightcondensed}{it}{
- <-> alias * Junicode-Sup/lc/it
+\DeclareFontShape{T1}{Junicode-Sup}{semicondensed}{n}{
+ <-> alias * Junicode-Sup/sc/n
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lc}{sl}{
- <-> ssub * Junicode-Sup/lc/it
+\DeclareFontShape{T1}{Junicode-Sup}{sc}{sl}{
+ <-> ssub * Junicode-Sup/sc/it
}{}
-\DeclareFontShape{T1}{Junicode-Sup}{lightcondensed}{sl}{
- <-> ssub * Junicode-Sup/lightcondensed/it
+\DeclareFontShape{T1}{Junicode-Sup}{semicondensed}{sl}{
+ <-> ssub * Junicode-Sup/semicondensed/it
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/T1Junicode-TLF.fd b/Master/texmf-dist/tex/latex/junicode/T1Junicode-TLF.fd
index 1cf635bb8fe..014b2b6c696 100644
--- a/Master/texmf-dist/tex/latex/junicode/T1Junicode-TLF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/T1Junicode-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{T1Junicode-TLF.fd}
- [2024/06/03 (autoinst) Font definitions for T1/Junicode-TLF.]
+ [2024/07/21 (autoinst) Font definitions for T1/Junicode-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,656 +20,632 @@
\DeclareFontFamily{T1}{Junicode-TLF}{}
-% ---- sbx = semiboldexpanded ----
+% ---- l = light ----
-\DeclareFontShape{T1}{Junicode-TLF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TLF/sbx/n
+\DeclareFontShape{T1}{Junicode-TLF}{light}{sc}{
+ <-> alias * Junicode-TLF/l/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-TLF/sbx/sc
+\DeclareFontShape{T1}{Junicode-TLF}{light}{it}{
+ <-> alias * Junicode-TLF/l/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TLF/sbx/it
+\DeclareFontShape{T1}{Junicode-TLF}{light}{n}{
+ <-> alias * Junicode-TLF/l/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-TLF/sbx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{light}{scit}{
+ <-> alias * Junicode-TLF/l/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbx}{scsl}{
- <-> ssub * Junicode-TLF/sbx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{l}{sl}{
+ <-> ssub * Junicode-TLF/l/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiboldexpanded/scit
+\DeclareFontShape{T1}{Junicode-TLF}{light}{sl}{
+ <-> ssub * Junicode-TLF/light/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbx}{sl}{
- <-> ssub * Junicode-TLF/sbx/it
+\DeclareFontShape{T1}{Junicode-TLF}{l}{scsl}{
+ <-> ssub * Junicode-TLF/l/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiboldexpanded/it
+\DeclareFontShape{T1}{Junicode-TLF}{light}{scsl}{
+ <-> ssub * Junicode-TLF/light/scit
}{}
-% ---- mediumsemicondensed ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{sc}{
+ <-> alias * Junicode-TLF/sx/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{it}{
+ <-> alias * Junicode-TLF/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-TLF/mediumsemicondensed/scit
+\DeclareFontShape{T1}{Junicode-TLF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumsemicondensed/it
+\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{scit}{
+ <-> alias * Junicode-TLF/sx/scit
}{}
-
-% ---- sc = semicondensed ----
-
-\DeclareFontShape{T1}{Junicode-TLF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{sc}{
- <-> alias * Junicode-TLF/sc/sc
+\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{n}{
+ <-> alias * Junicode-TLF/sx/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sx}{sl}{
+ <-> ssub * Junicode-TLF/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{n}{
- <-> alias * Junicode-TLF/sc/n
+\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sx}{scsl}{
+ <-> ssub * Junicode-TLF/sx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{scit}{
- <-> alias * Junicode-TLF/sc/scit
+\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiexpanded/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tlf-t1
+
+% ---- mediumsemicondensed ----
+
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{it}{
- <-> alias * Junicode-TLF/sc/it
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sc}{scsl}{
- <-> ssub * Junicode-TLF/sc/scit
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{scsl}{
- <-> ssub * Junicode-TLF/semicondensed/scit
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sc}{sl}{
- <-> ssub * Junicode-TLF/sc/it
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemicondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{sl}{
- <-> ssub * Junicode-TLF/semicondensed/it
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/mediumsemicondensed/scit
}{}
-% ---- sb = semibold ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{T1}{Junicode-TLF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semibold}{it}{
- <-> alias * Junicode-TLF/sb/it
+\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{sc}{
+ <-> alias * Junicode-TLF/lc/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semibold}{scit}{
- <-> alias * Junicode-TLF/sb/scit
+\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{it}{
+ <-> alias * Junicode-TLF/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semibold}{n}{
- <-> alias * Junicode-TLF/sb/n
+\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{n}{
+ <-> alias * Junicode-TLF/lc/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semibold}{sc}{
- <-> alias * Junicode-TLF/sb/sc
+\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{scit}{
+ <-> alias * Junicode-TLF/lc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sb}{scsl}{
- <-> ssub * Junicode-TLF/sb/scit
+\DeclareFontShape{T1}{Junicode-TLF}{lc}{sl}{
+ <-> ssub * Junicode-TLF/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semibold}{scsl}{
- <-> ssub * Junicode-TLF/semibold/scit
+\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightcondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sb}{sl}{
- <-> ssub * Junicode-TLF/sb/it
+\DeclareFontShape{T1}{Junicode-TLF}{lc}{scsl}{
+ <-> ssub * Junicode-TLF/lc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semibold}{sl}{
- <-> ssub * Junicode-TLF/semibold/it
+\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-TLF/lightcondensed/scit
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{T1}{Junicode-TLF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-TLF/bsx/n
+\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{scit}{
+ <-> alias * Junicode-TLF/bx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-TLF/bsx/sc
+\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{n}{
+ <-> alias * Junicode-TLF/bx/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-TLF/bsx/it
+\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{it}{
+ <-> alias * Junicode-TLF/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-TLF/bsx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{sc}{
+ <-> alias * Junicode-TLF/bx/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bsx}{scsl}{
- <-> ssub * Junicode-TLF/bsx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{bx}{sl}{
+ <-> ssub * Junicode-TLF/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/boldsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/boldexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bsx}{sl}{
- <-> ssub * Junicode-TLF/bsx/it
+\DeclareFontShape{T1}{Junicode-TLF}{bx}{scsl}{
+ <-> ssub * Junicode-TLF/bx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/boldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/boldexpanded/scit
}{}
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{T1}{Junicode-TLF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-tlf-sc-t1
-}{}
-
-\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{sc}{
- <-> alias * Junicode-TLF/lc/sc
-}{}
+% ---- medium ----
-\DeclareFontShape{T1}{Junicode-TLF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{n}{
- <-> alias * Junicode-TLF/lc/n
+\DeclareFontShape{T1}{Junicode-TLF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{scit}{
- <-> alias * Junicode-TLF/lc/scit
+\DeclareFontShape{T1}{Junicode-TLF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{medium}{sl}{
+ <-> ssub * Junicode-TLF/medium/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{it}{
- <-> alias * Junicode-TLF/lc/it
+\DeclareFontShape{T1}{Junicode-TLF}{medium}{scsl}{
+ <-> ssub * Junicode-TLF/medium/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lc}{scsl}{
- <-> ssub * Junicode-TLF/lc/scit
-}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-TLF/lightcondensed/scit
-}{}
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-TLF}{lc}{sl}{
- <-> ssub * Junicode-TLF/lc/it
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TLF/lightcondensed/it
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-sc-t1
}{}
-
-% ---- b = bold ----
-
-\DeclareFontShape{T1}{Junicode-TLF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bold}{n}{
- <-> alias * Junicode-TLF/b/n
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bold}{sc}{
- <-> alias * Junicode-TLF/b/sc
+\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/mediumsemiexpanded/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-tlf-t1
-}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bold}{it}{
- <-> alias * Junicode-TLF/b/it
-}{}
+% ---- m = regular ----
-\DeclareFontShape{T1}{Junicode-TLF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bold}{scit}{
- <-> alias * Junicode-TLF/b/scit
+\DeclareFontShape{T1}{Junicode-TLF}{regular}{sc}{
+ <-> alias * Junicode-TLF/m/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{b}{scsl}{
- <-> ssub * Junicode-TLF/b/scit
+\DeclareFontShape{T1}{Junicode-TLF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bold}{scsl}{
- <-> ssub * Junicode-TLF/bold/scit
+\DeclareFontShape{T1}{Junicode-TLF}{regular}{it}{
+ <-> alias * Junicode-TLF/m/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{b}{sl}{
- <-> ssub * Junicode-TLF/b/it
+\DeclareFontShape{T1}{Junicode-TLF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bold}{sl}{
- <-> ssub * Junicode-TLF/bold/it
+\DeclareFontShape{T1}{Junicode-TLF}{regular}{n}{
+ <-> alias * Junicode-TLF/m/n
}{}
-
-% ---- mediumcondensed ----
-
-\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{regular}{scit}{
+ <-> alias * Junicode-TLF/m/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{m}{sl}{
+ <-> ssub * Junicode-TLF/m/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{regular}{sl}{
+ <-> ssub * Junicode-TLF/regular/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-TLF/mediumcondensed/scit
+\DeclareFontShape{T1}{Junicode-TLF}{m}{scsl}{
+ <-> ssub * Junicode-TLF/m/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumcondensed/it
+\DeclareFontShape{T1}{Junicode-TLF}{regular}{scsl}{
+ <-> ssub * Junicode-TLF/regular/scit
}{}
-% ---- bx = boldexpanded ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-TLF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{it}{
- <-> alias * Junicode-TLF/bx/it
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-TLF/sbsx/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{scit}{
- <-> alias * Junicode-TLF/bx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-TLF/sbsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{n}{
- <-> alias * Junicode-TLF/bx/n
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-TLF/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{sc}{
- <-> alias * Junicode-TLF/bx/sc
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-TLF/sbsx/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bx}{scsl}{
- <-> ssub * Junicode-TLF/bx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{sl}{
+ <-> ssub * Junicode-TLF/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-TLF/boldexpanded/scit
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{bx}{sl}{
- <-> ssub * Junicode-TLF/bx/it
+\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{scsl}{
+ <-> ssub * Junicode-TLF/sbsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TLF/boldexpanded/it
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiboldsemiexpanded/scit
}{}
-% ---- l = light ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-TLF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{light}{it}{
- <-> alias * Junicode-TLF/l/it
+\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-TLF/bsx/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{light}{scit}{
- <-> alias * Junicode-TLF/l/scit
+\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-TLF/bsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{light}{n}{
- <-> alias * Junicode-TLF/l/n
+\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-TLF/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{light}{sc}{
- <-> alias * Junicode-TLF/l/sc
+\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-TLF/bsx/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{l}{scsl}{
- <-> ssub * Junicode-TLF/l/scit
+\DeclareFontShape{T1}{Junicode-TLF}{bsx}{sl}{
+ <-> ssub * Junicode-TLF/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{light}{scsl}{
- <-> ssub * Junicode-TLF/light/scit
+\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/boldsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{l}{sl}{
- <-> ssub * Junicode-TLF/l/it
+\DeclareFontShape{T1}{Junicode-TLF}{bsx}{scsl}{
+ <-> ssub * Junicode-TLF/bsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{light}{sl}{
- <-> ssub * Junicode-TLF/light/it
+\DeclareFontShape{T1}{Junicode-TLF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/boldsemiexpanded/scit
}{}
-% ---- medium ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{T1}{Junicode-TLF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{n}{
+ <-> alias * Junicode-TLF/sc/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{scit}{
+ <-> alias * Junicode-TLF/sc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{medium}{scsl}{
- <-> ssub * Junicode-TLF/medium/scit
+\DeclareFontShape{T1}{Junicode-TLF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{medium}{sl}{
- <-> ssub * Junicode-TLF/medium/it
+\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{it}{
+ <-> alias * Junicode-TLF/sc/it
}{}
-
-% ---- lsc = lightsemicondensed ----
-
-\DeclareFontShape{T1}{Junicode-TLF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TLF/lsc/it
+\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{sc}{
+ <-> alias * Junicode-TLF/sc/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sc}{sl}{
+ <-> ssub * Junicode-TLF/sc/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-TLF/lsc/scit
+\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{sl}{
+ <-> ssub * Junicode-TLF/semicondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sc}{scsl}{
+ <-> ssub * Junicode-TLF/sc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TLF/lsc/n
+\DeclareFontShape{T1}{Junicode-TLF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/semicondensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-tlf-sc-t1
+
+% ---- mediumcondensed ----
+
+\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-TLF/lsc/sc
+\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lsc}{scsl}{
- <-> ssub * Junicode-TLF/lsc/scit
+\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-TLF/lightsemicondensed/scit
+\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lsc}{sl}{
- <-> ssub * Junicode-TLF/lsc/it
+\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumcondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/lightsemicondensed/it
+\DeclareFontShape{T1}{Junicode-TLF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-TLF/mediumcondensed/scit
}{}
-% ---- m = regular ----
+% ---- sb = semibold ----
-\DeclareFontShape{T1}{Junicode-TLF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{regular}{sc}{
- <-> alias * Junicode-TLF/m/sc
+\DeclareFontShape{T1}{Junicode-TLF}{semibold}{sc}{
+ <-> alias * Junicode-TLF/sb/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{regular}{n}{
- <-> alias * Junicode-TLF/m/n
+\DeclareFontShape{T1}{Junicode-TLF}{semibold}{n}{
+ <-> alias * Junicode-TLF/sb/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{regular}{scit}{
- <-> alias * Junicode-TLF/m/scit
+\DeclareFontShape{T1}{Junicode-TLF}{semibold}{scit}{
+ <-> alias * Junicode-TLF/sb/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{regular}{it}{
- <-> alias * Junicode-TLF/m/it
+\DeclareFontShape{T1}{Junicode-TLF}{semibold}{it}{
+ <-> alias * Junicode-TLF/sb/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{m}{scsl}{
- <-> ssub * Junicode-TLF/m/scit
+\DeclareFontShape{T1}{Junicode-TLF}{sb}{sl}{
+ <-> ssub * Junicode-TLF/sb/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{regular}{scsl}{
- <-> ssub * Junicode-TLF/regular/scit
+\DeclareFontShape{T1}{Junicode-TLF}{semibold}{sl}{
+ <-> ssub * Junicode-TLF/semibold/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{m}{sl}{
- <-> ssub * Junicode-TLF/m/it
+\DeclareFontShape{T1}{Junicode-TLF}{sb}{scsl}{
+ <-> ssub * Junicode-TLF/sb/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{regular}{sl}{
- <-> ssub * Junicode-TLF/regular/it
+\DeclareFontShape{T1}{Junicode-TLF}{semibold}{scsl}{
+ <-> ssub * Junicode-TLF/semibold/scit
}{}
-% ---- x = expanded ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{T1}{Junicode-TLF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{expanded}{scit}{
- <-> alias * Junicode-TLF/x/scit
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TLF/sbx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{expanded}{it}{
- <-> alias * Junicode-TLF/x/it
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-TLF/sbx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{expanded}{sc}{
- <-> alias * Junicode-TLF/x/sc
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TLF/sbx/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{expanded}{n}{
- <-> alias * Junicode-TLF/x/n
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-TLF/sbx/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{x}{scsl}{
- <-> ssub * Junicode-TLF/x/scit
+\DeclareFontShape{T1}{Junicode-TLF}{sbx}{sl}{
+ <-> ssub * Junicode-TLF/sbx/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{expanded}{scsl}{
- <-> ssub * Junicode-TLF/expanded/scit
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiboldexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{x}{sl}{
- <-> ssub * Junicode-TLF/x/it
+\DeclareFontShape{T1}{Junicode-TLF}{sbx}{scsl}{
+ <-> ssub * Junicode-TLF/sbx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{expanded}{sl}{
- <-> ssub * Junicode-TLF/expanded/it
+\DeclareFontShape{T1}{Junicode-TLF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/semiboldexpanded/scit
}{}
% ---- c = condensed ----
-\DeclareFontShape{T1}{Junicode-TLF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{condensed}{it}{
- <-> alias * Junicode-TLF/c/it
+\DeclareFontShape{T1}{Junicode-TLF}{condensed}{sc}{
+ <-> alias * Junicode-TLF/c/sc
}{}
\DeclareFontShape{T1}{Junicode-TLF}{c}{scit}{
@@ -688,12 +664,20 @@
<-> alias * Junicode-TLF/c/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{condensed}{sc}{
- <-> alias * Junicode-TLF/c/sc
+\DeclareFontShape{T1}{Junicode-TLF}{condensed}{it}{
+ <-> alias * Junicode-TLF/c/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-TLF}{c}{sl}{
+ <-> ssub * Junicode-TLF/c/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-TLF}{condensed}{sl}{
+ <-> ssub * Junicode-TLF/condensed/it
}{}
\DeclareFontShape{T1}{Junicode-TLF}{c}{scsl}{
@@ -704,168 +688,184 @@
<-> ssub * Junicode-TLF/condensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{c}{sl}{
- <-> ssub * Junicode-TLF/c/it
-}{}
-\DeclareFontShape{T1}{Junicode-TLF}{condensed}{sl}{
- <-> ssub * Junicode-TLF/condensed/it
-}{}
+% ---- mediumexpanded ----
+\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-t1
+}{}
-% ---- sx = semiexpanded ----
+\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-sc-t1
+}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{sc}{
- <-> alias * Junicode-TLF/sx/sc
+\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{n}{
- <-> alias * Junicode-TLF/sx/n
+\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-TLF/mediumexpanded/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tlf-sc-t1
+
+% ---- lsc = lightsemicondensed ----
+
+\DeclareFontShape{T1}{Junicode-TLF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{scit}{
- <-> alias * Junicode-TLF/sx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-TLF/lsc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{it}{
- <-> alias * Junicode-TLF/sx/it
+\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TLF/lsc/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sx}{scsl}{
- <-> ssub * Junicode-TLF/sx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiexpanded/scit
+\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TLF/lsc/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sx}{sl}{
- <-> ssub * Junicode-TLF/sx/it
+\DeclareFontShape{T1}{Junicode-TLF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiexpanded/it
+\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-TLF/lsc/sc
}{}
+\DeclareFontShape{T1}{Junicode-TLF}{lsc}{sl}{
+ <-> ssub * Junicode-TLF/lsc/it
+}{}
-% ---- mediumsemiexpanded ----
+\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightsemicondensed/it
+}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{lsc}{scsl}{
+ <-> ssub * Junicode-TLF/lsc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-TLF/lightsemicondensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-t1
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{Junicode-TLF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bold}{scit}{
+ <-> alias * Junicode-TLF/b/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/mediumsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-TLF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-TLF}{bold}{n}{
+ <-> alias * Junicode-TLF/b/n
}{}
+\DeclareFontShape{T1}{Junicode-TLF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tlf-t1
+}{}
-% ---- mediumexpanded ----
+\DeclareFontShape{T1}{Junicode-TLF}{bold}{it}{
+ <-> alias * Junicode-TLF/b/it
+}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bold}{sc}{
+ <-> alias * Junicode-TLF/b/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{b}{sl}{
+ <-> ssub * Junicode-TLF/b/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{bold}{sl}{
+ <-> ssub * Junicode-TLF/bold/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-TLF/mediumexpanded/scit
+\DeclareFontShape{T1}{Junicode-TLF}{b}{scsl}{
+ <-> ssub * Junicode-TLF/b/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumexpanded/it
+\DeclareFontShape{T1}{Junicode-TLF}{bold}{scsl}{
+ <-> ssub * Junicode-TLF/bold/scit
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- x = expanded ----
-\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-TLF/sbsx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{expanded}{scit}{
+ <-> alias * Junicode-TLF/x/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-TLF/sbsx/it
+\DeclareFontShape{T1}{Junicode-TLF}{expanded}{n}{
+ <-> alias * Junicode-TLF/x/n
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-sc-t1
+\DeclareFontShape{T1}{Junicode-TLF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tlf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-TLF/sbsx/sc
+\DeclareFontShape{T1}{Junicode-TLF}{expanded}{it}{
+ <-> alias * Junicode-TLF/x/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-t1
+\DeclareFontShape{T1}{Junicode-TLF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-tlf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-TLF/sbsx/n
+\DeclareFontShape{T1}{Junicode-TLF}{expanded}{sc}{
+ <-> alias * Junicode-TLF/x/sc
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{scsl}{
- <-> ssub * Junicode-TLF/sbsx/scit
+\DeclareFontShape{T1}{Junicode-TLF}{x}{sl}{
+ <-> ssub * Junicode-TLF/x/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TLF/semiboldsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-TLF}{expanded}{sl}{
+ <-> ssub * Junicode-TLF/expanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{sbsx}{sl}{
- <-> ssub * Junicode-TLF/sbsx/it
+\DeclareFontShape{T1}{Junicode-TLF}{x}{scsl}{
+ <-> ssub * Junicode-TLF/x/scit
}{}
-\DeclareFontShape{T1}{Junicode-TLF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiboldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-TLF}{expanded}{scsl}{
+ <-> ssub * Junicode-TLF/expanded/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/T1Junicode-TOsF.fd b/Master/texmf-dist/tex/latex/junicode/T1Junicode-TOsF.fd
index a2fcfe44b24..18e9f6fd8bd 100644
--- a/Master/texmf-dist/tex/latex/junicode/T1Junicode-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/T1Junicode-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{T1Junicode-TOsF.fd}
- [2024/06/03 (autoinst) Font definitions for T1/Junicode-TOsF.]
+ [2024/07/21 (autoinst) Font definitions for T1/Junicode-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,852 +20,852 @@
\DeclareFontFamily{T1}{Junicode-TOsF}{}
-% ---- lsc = lightsemicondensed ----
+% ---- mediumcondensed ----
-\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{sc}{
+ <-> \Junicode@@scale Junicode-CondMedium-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TOsF/lsc/it
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{scit}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{scit}{
- <-> alias * Junicode-TOsF/lsc/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/mediumcondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TOsF/lsc/n
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumcondensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{sc}{
- <-> \Junicode@@scale Junicode-SmCondLight-tosf-sc-t1
-}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{sc}{
- <-> alias * Junicode-TOsF/lsc/sc
-}{}
+% ---- sb = semibold ----
-\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{scsl}{
- <-> ssub * Junicode-TOsF/lsc/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{sb}{sc}{
+ <-> \Junicode@@scale Junicode-SmBold-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/lightsemicondensed/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{sc}{
+ <-> alias * Junicode-TOsF/sb/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{sl}{
- <-> ssub * Junicode-TOsF/lsc/it
+\DeclareFontShape{T1}{Junicode-TOsF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightsemicondensed/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{it}{
+ <-> alias * Junicode-TOsF/sb/it
}{}
+\DeclareFontShape{T1}{Junicode-TOsF}{sb}{scit}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-sc-t1
+}{}
-% ---- medium ----
+\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{scit}{
+ <-> alias * Junicode-TOsF/sb/scit
+}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{medium}{scit}{
- <-> \Junicode@@scale Junicode-MediumItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{n}{
+ <-> alias * Junicode-TOsF/sb/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sb}{sl}{
+ <-> ssub * Junicode-TOsF/sb/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{medium}{sc}{
- <-> \Junicode@@scale Junicode-Medium-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{sl}{
+ <-> ssub * Junicode-TOsF/semibold/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{medium}{scsl}{
- <-> ssub * Junicode-TOsF/medium/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{sb}{scsl}{
+ <-> ssub * Junicode-TOsF/sb/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{medium}{sl}{
- <-> ssub * Junicode-TOsF/medium/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{scsl}{
+ <-> ssub * Junicode-TOsF/semibold/scit
}{}
-% ---- m = regular ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{T1}{Junicode-TOsF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{regular}{it}{
- <-> alias * Junicode-TOsF/m/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{it}{
+ <-> alias * Junicode-TOsF/sc/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{m}{scit}{
- <-> \Junicode@@scale Junicode-Italic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{regular}{scit}{
- <-> alias * Junicode-TOsF/m/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{n}{
+ <-> alias * Junicode-TOsF/sc/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{regular}{n}{
- <-> alias * Junicode-TOsF/m/n
+\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{scit}{
+ <-> alias * Junicode-TOsF/sc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{m}{sc}{
- <-> \Junicode@@scale Junicode-Regular-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCond-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{regular}{sc}{
- <-> alias * Junicode-TOsF/m/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{sc}{
+ <-> alias * Junicode-TOsF/sc/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{m}{scsl}{
- <-> ssub * Junicode-TOsF/m/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{sc}{sl}{
+ <-> ssub * Junicode-TOsF/sc/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{regular}{scsl}{
- <-> ssub * Junicode-TOsF/regular/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/semicondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{m}{sl}{
- <-> ssub * Junicode-TOsF/m/it
+\DeclareFontShape{T1}{Junicode-TOsF}{sc}{scsl}{
+ <-> ssub * Junicode-TOsF/sc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{regular}{sl}{
- <-> ssub * Junicode-TOsF/regular/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/semicondensed/scit
}{}
-% ---- bx = boldexpanded ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-TOsF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{n}{
- <-> alias * Junicode-TOsF/bx/n
+\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/bsx/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bx}{sc}{
- <-> \Junicode@@scale Junicode-ExpBold-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{sc}{
- <-> alias * Junicode-TOsF/bx/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/bsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{it}{
- <-> alias * Junicode-TOsF/bx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-TOsF/bsx/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bx}{scit}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{scit}{
- <-> alias * Junicode-TOsF/bx/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-TOsF/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bx}{scsl}{
- <-> ssub * Junicode-TOsF/bx/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{sl}{
+ <-> ssub * Junicode-TOsF/bsx/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/boldexpanded/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/boldsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bx}{sl}{
- <-> ssub * Junicode-TOsF/bx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{scsl}{
+ <-> ssub * Junicode-TOsF/bsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/boldexpanded/it
+\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/boldsemiexpanded/scit
}{}
-% ---- l = light ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-TOsF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{light}{n}{
- <-> alias * Junicode-TOsF/l/n
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sbsx/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{l}{sc}{
- <-> \Junicode@@scale Junicode-Light-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{light}{sc}{
- <-> alias * Junicode-TOsF/l/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-TOsF/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{light}{it}{
- <-> alias * Junicode-TOsF/l/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-TOsF/sbsx/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{l}{scit}{
- <-> \Junicode@@scale Junicode-LightItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{light}{scit}{
- <-> alias * Junicode-TOsF/l/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sbsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{l}{scsl}{
- <-> ssub * Junicode-TOsF/l/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{sl}{
+ <-> ssub * Junicode-TOsF/sbsx/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{light}{scsl}{
- <-> ssub * Junicode-TOsF/light/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiboldsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{l}{sl}{
- <-> ssub * Junicode-TOsF/l/it
+\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{scsl}{
+ <-> ssub * Junicode-TOsF/sbsx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{light}{sl}{
- <-> ssub * Junicode-TOsF/light/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiboldsemiexpanded/scit
}{}
-% ---- mediumsemiexpanded ----
+% ---- medium ----
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{medium}{sc}{
+ <-> \Junicode@@scale Junicode-Medium-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{scit}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{sc}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{medium}{scit}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/mediumsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{medium}{sl}{
+ <-> ssub * Junicode-TOsF/medium/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-TOsF}{medium}{scsl}{
+ <-> ssub * Junicode-TOsF/medium/scit
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{bx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpBold-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{sc}{
- <-> alias * Junicode-TOsF/sbsx/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{sc}{
+ <-> alias * Junicode-TOsF/bx/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{bx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-TOsF/sbsx/n
+\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{scit}{
+ <-> alias * Junicode-TOsF/bx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{scit}{
- <-> alias * Junicode-TOsF/sbsx/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{n}{
+ <-> alias * Junicode-TOsF/bx/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-TOsF/sbsx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{it}{
+ <-> alias * Junicode-TOsF/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{scsl}{
- <-> ssub * Junicode-TOsF/sbsx/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{bx}{sl}{
+ <-> ssub * Junicode-TOsF/bx/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiboldsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/boldexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbsx}{sl}{
- <-> ssub * Junicode-TOsF/sbsx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{bx}{scsl}{
+ <-> ssub * Junicode-TOsF/bx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiboldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-TOsF}{boldexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/boldexpanded/scit
}{}
-% ---- mediumexpanded ----
+% ---- m = regular ----
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{m}{sc}{
+ <-> \Junicode@@scale Junicode-Regular-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{scit}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{regular}{sc}{
+ <-> alias * Junicode-TOsF/m/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{sc}{
- <-> \Junicode@@scale Junicode-ExpMedium-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{regular}{it}{
+ <-> alias * Junicode-TOsF/m/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/mediumexpanded/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumexpanded/it
+\DeclareFontShape{T1}{Junicode-TOsF}{regular}{n}{
+ <-> alias * Junicode-TOsF/m/n
}{}
-
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{T1}{Junicode-TOsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{m}{scit}{
+ <-> \Junicode@@scale Junicode-Italic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{n}{
- <-> alias * Junicode-TOsF/sx/n
+\DeclareFontShape{T1}{Junicode-TOsF}{regular}{scit}{
+ <-> alias * Junicode-TOsF/m/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sx}{sc}{
- <-> \Junicode@@scale Junicode-SmExp-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{m}{sl}{
+ <-> ssub * Junicode-TOsF/m/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{sc}{
- <-> alias * Junicode-TOsF/sx/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{regular}{sl}{
+ <-> ssub * Junicode-TOsF/regular/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{m}{scsl}{
+ <-> ssub * Junicode-TOsF/m/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{it}{
- <-> alias * Junicode-TOsF/sx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{regular}{scsl}{
+ <-> ssub * Junicode-TOsF/regular/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tosf-sc-t1
-}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{scit}{
- <-> alias * Junicode-TOsF/sx/scit
-}{}
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{T1}{Junicode-TOsF}{sx}{scsl}{
- <-> ssub * Junicode-TOsF/sx/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiexpanded/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sx}{sl}{
- <-> ssub * Junicode-TOsF/sx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiexpanded/it
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tosf-sc-t1
}{}
-
-% ---- x = expanded ----
-
-\DeclareFontShape{T1}{Junicode-TOsF}{x}{scit}{
- <-> \Junicode@@scale Junicode-ExpItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{scit}{
- <-> alias * Junicode-TOsF/x/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumsemiexpanded/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tosf-t1
-}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{it}{
- <-> alias * Junicode-TOsF/x/it
-}{}
+% ---- lc = lightcondensed ----
-\DeclareFontShape{T1}{Junicode-TOsF}{x}{sc}{
- <-> \Junicode@@scale Junicode-Exp-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{sc}{
- <-> alias * Junicode-TOsF/x/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{it}{
+ <-> alias * Junicode-TOsF/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{lc}{scit}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{n}{
- <-> alias * Junicode-TOsF/x/n
+\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{scit}{
+ <-> alias * Junicode-TOsF/lc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{x}{scsl}{
- <-> ssub * Junicode-TOsF/x/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{scsl}{
- <-> ssub * Junicode-TOsF/expanded/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{n}{
+ <-> alias * Junicode-TOsF/lc/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{x}{sl}{
- <-> ssub * Junicode-TOsF/x/it
+\DeclareFontShape{T1}{Junicode-TOsF}{lc}{sc}{
+ <-> \Junicode@@scale Junicode-CondLight-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{sl}{
- <-> ssub * Junicode-TOsF/expanded/it
+\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{sc}{
+ <-> alias * Junicode-TOsF/lc/sc
}{}
-
-% ---- c = condensed ----
-
-\DeclareFontShape{T1}{Junicode-TOsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{lc}{sl}{
+ <-> ssub * Junicode-TOsF/lc/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{n}{
- <-> alias * Junicode-TOsF/c/n
+\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightcondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{c}{sc}{
- <-> \Junicode@@scale Junicode-Cond-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{lc}{scsl}{
+ <-> ssub * Junicode-TOsF/lc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{sc}{
- <-> alias * Junicode-TOsF/c/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/lightcondensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tosf-t1
-}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{it}{
- <-> alias * Junicode-TOsF/c/it
-}{}
+% ---- mediumsemicondensed ----
-\DeclareFontShape{T1}{Junicode-TOsF}{c}{scit}{
- <-> \Junicode@@scale Junicode-CondItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{scit}{
- <-> alias * Junicode-TOsF/c/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{c}{scsl}{
- <-> ssub * Junicode-TOsF/c/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{scsl}{
- <-> ssub * Junicode-TOsF/condensed/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{c}{sl}{
- <-> ssub * Junicode-TOsF/c/it
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/mediumsemicondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{sl}{
- <-> ssub * Junicode-TOsF/condensed/it
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumsemicondensed/scit
}{}
-% ---- sc = semicondensed ----
+% ---- l = light ----
-\DeclareFontShape{T1}{Junicode-TOsF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{n}{
- <-> alias * Junicode-TOsF/sc/n
+\DeclareFontShape{T1}{Junicode-TOsF}{light}{n}{
+ <-> alias * Junicode-TOsF/l/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sc}{sc}{
- <-> \Junicode@@scale Junicode-SmCond-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{l}{scit}{
+ <-> \Junicode@@scale Junicode-LightItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{sc}{
- <-> alias * Junicode-TOsF/sc/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{light}{scit}{
+ <-> alias * Junicode-TOsF/l/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{it}{
- <-> alias * Junicode-TOsF/sc/it
+\DeclareFontShape{T1}{Junicode-TOsF}{light}{it}{
+ <-> alias * Junicode-TOsF/l/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sc}{scit}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{l}{sc}{
+ <-> \Junicode@@scale Junicode-Light-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{scit}{
- <-> alias * Junicode-TOsF/sc/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{light}{sc}{
+ <-> alias * Junicode-TOsF/l/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sc}{scsl}{
- <-> ssub * Junicode-TOsF/sc/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{l}{sl}{
+ <-> ssub * Junicode-TOsF/l/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/semicondensed/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{light}{sl}{
+ <-> ssub * Junicode-TOsF/light/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sc}{sl}{
- <-> ssub * Junicode-TOsF/sc/it
+\DeclareFontShape{T1}{Junicode-TOsF}{l}{scsl}{
+ <-> ssub * Junicode-TOsF/l/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semicondensed}{sl}{
- <-> ssub * Junicode-TOsF/semicondensed/it
+\DeclareFontShape{T1}{Junicode-TOsF}{light}{scsl}{
+ <-> ssub * Junicode-TOsF/light/scit
}{}
-% ---- sb = semibold ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{T1}{Junicode-TOsF}{sb}{scit}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{scit}{
- <-> alias * Junicode-TOsF/sb/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{it}{
+ <-> alias * Junicode-TOsF/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{it}{
- <-> alias * Junicode-TOsF/sb/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{n}{
+ <-> alias * Junicode-TOsF/sx/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sb}{sc}{
- <-> \Junicode@@scale Junicode-SmBold-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sx}{scit}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{sc}{
- <-> alias * Junicode-TOsF/sb/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sx}{sc}{
+ <-> \Junicode@@scale Junicode-SmExp-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{n}{
- <-> alias * Junicode-TOsF/sb/n
+\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sx/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sb}{scsl}{
- <-> ssub * Junicode-TOsF/sb/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{sx}{sl}{
+ <-> ssub * Junicode-TOsF/sx/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{scsl}{
- <-> ssub * Junicode-TOsF/semibold/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sb}{sl}{
- <-> ssub * Junicode-TOsF/sb/it
+\DeclareFontShape{T1}{Junicode-TOsF}{sx}{scsl}{
+ <-> ssub * Junicode-TOsF/sx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semibold}{sl}{
- <-> ssub * Junicode-TOsF/semibold/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semiexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiexpanded/scit
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- b = bold ----
-\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{b}{sc}{
+ <-> \Junicode@@scale Junicode-Bold-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-TOsF/bsx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{bold}{sc}{
+ <-> alias * Junicode-TOsF/b/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{scit}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{b}{scit}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{scit}{
- <-> alias * Junicode-TOsF/bsx/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{bold}{scit}{
+ <-> alias * Junicode-TOsF/b/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-TOsF/bsx/n
+\DeclareFontShape{T1}{Junicode-TOsF}{bold}{n}{
+ <-> alias * Junicode-TOsF/b/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{sc}{
- <-> \Junicode@@scale Junicode-SmExpBold-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{sc}{
- <-> alias * Junicode-TOsF/bsx/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{bold}{it}{
+ <-> alias * Junicode-TOsF/b/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{scsl}{
- <-> ssub * Junicode-TOsF/bsx/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{b}{sl}{
+ <-> ssub * Junicode-TOsF/b/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/boldsemiexpanded/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{bold}{sl}{
+ <-> ssub * Junicode-TOsF/bold/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bsx}{sl}{
- <-> ssub * Junicode-TOsF/bsx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{b}{scsl}{
+ <-> ssub * Junicode-TOsF/b/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/boldsemiexpanded/it
+\DeclareFontShape{T1}{Junicode-TOsF}{bold}{scsl}{
+ <-> ssub * Junicode-TOsF/bold/scit
}{}
-% ---- lc = lightcondensed ----
+% ---- x = expanded ----
-\DeclareFontShape{T1}{Junicode-TOsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{n}{
- <-> alias * Junicode-TOsF/lc/n
+\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{it}{
+ <-> alias * Junicode-TOsF/x/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lc}{sc}{
- <-> \Junicode@@scale Junicode-CondLight-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{sc}{
- <-> alias * Junicode-TOsF/lc/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{n}{
+ <-> alias * Junicode-TOsF/x/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{x}{scit}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{it}{
- <-> alias * Junicode-TOsF/lc/it
+\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{scit}{
+ <-> alias * Junicode-TOsF/x/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lc}{scit}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{x}{sc}{
+ <-> \Junicode@@scale Junicode-Exp-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{scit}{
- <-> alias * Junicode-TOsF/lc/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{sc}{
+ <-> alias * Junicode-TOsF/x/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lc}{scsl}{
- <-> ssub * Junicode-TOsF/lc/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{x}{sl}{
+ <-> ssub * Junicode-TOsF/x/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{scsl}{
- <-> ssub * Junicode-TOsF/lightcondensed/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{sl}{
+ <-> ssub * Junicode-TOsF/expanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lc}{sl}{
- <-> ssub * Junicode-TOsF/lc/it
+\DeclareFontShape{T1}{Junicode-TOsF}{x}{scsl}{
+ <-> ssub * Junicode-TOsF/x/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightcondensed/it
+\DeclareFontShape{T1}{Junicode-TOsF}{expanded}{scsl}{
+ <-> ssub * Junicode-TOsF/expanded/scit
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{sc}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TOsF/sbx/n
+\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{sc}{
+ <-> alias * Junicode-TOsF/lsc/sc
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{sc}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{sc}{
- <-> alias * Junicode-TOsF/sbx/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TOsF/lsc/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{scit}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TOsF/sbx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{scit}{
+ <-> alias * Junicode-TOsF/lsc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{scit}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{scit}{
- <-> alias * Junicode-TOsF/sbx/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TOsF/lsc/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{scsl}{
- <-> ssub * Junicode-TOsF/sbx/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{sl}{
+ <-> ssub * Junicode-TOsF/lsc/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{scsl}{
- <-> ssub * Junicode-TOsF/semiboldexpanded/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightsemicondensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{sl}{
- <-> ssub * Junicode-TOsF/sbx/it
+\DeclareFontShape{T1}{Junicode-TOsF}{lsc}{scsl}{
+ <-> ssub * Junicode-TOsF/lsc/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiboldexpanded/it
+\DeclareFontShape{T1}{Junicode-TOsF}{lightsemicondensed}{scsl}{
+ <-> ssub * Junicode-TOsF/lightsemicondensed/scit
}{}
-% ---- mediumsemicondensed ----
+% ---- mediumexpanded ----
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{sc}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{scit}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{scit}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{sc}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{scsl}{
- <-> ssub * Junicode-TOsF/mediumsemicondensed/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumexpanded/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-TOsF/mediumsemicondensed/it
+\DeclareFontShape{T1}{Junicode-TOsF}{mediumexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/mediumexpanded/scit
}{}
-% ---- mediumcondensed ----
+% ---- c = condensed ----
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{scit}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{it}{
+ <-> alias * Junicode-TOsF/c/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{c}{scit}{
+ <-> \Junicode@@scale Junicode-CondItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{sc}{
- <-> \Junicode@@scale Junicode-CondMedium-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{scit}{
+ <-> alias * Junicode-TOsF/c/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{scsl}{
- <-> ssub * Junicode-TOsF/mediumcondensed/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TOsF/mediumcondensed/it
+\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{n}{
+ <-> alias * Junicode-TOsF/c/n
}{}
+\DeclareFontShape{T1}{Junicode-TOsF}{c}{sc}{
+ <-> \Junicode@@scale Junicode-Cond-tosf-sc-t1
+}{}
-% ---- b = bold ----
+\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{sc}{
+ <-> alias * Junicode-TOsF/c/sc
+}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-tosf-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{c}{sl}{
+ <-> ssub * Junicode-TOsF/c/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bold}{n}{
- <-> alias * Junicode-TOsF/b/n
+\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{sl}{
+ <-> ssub * Junicode-TOsF/condensed/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{b}{sc}{
- <-> \Junicode@@scale Junicode-Bold-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{c}{scsl}{
+ <-> ssub * Junicode-TOsF/c/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bold}{sc}{
- <-> alias * Junicode-TOsF/b/sc
+\DeclareFontShape{T1}{Junicode-TOsF}{condensed}{scsl}{
+ <-> ssub * Junicode-TOsF/condensed/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-tosf-t1
+
+% ---- sbx = semiboldexpanded ----
+
+\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bold}{it}{
- <-> alias * Junicode-TOsF/b/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TOsF/sbx/it
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{b}{scit}{
- <-> \Junicode@@scale Junicode-BoldItalic-tosf-sc-t1
+\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{scit}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bold}{scit}{
- <-> alias * Junicode-TOsF/b/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{scit}{
+ <-> alias * Junicode-TOsF/sbx/scit
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{b}{scsl}{
- <-> ssub * Junicode-TOsF/b/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tosf-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bold}{scsl}{
- <-> ssub * Junicode-TOsF/bold/scit
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TOsF/sbx/n
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{b}{sl}{
- <-> ssub * Junicode-TOsF/b/it
+\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{sc}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tosf-sc-t1
}{}
-\DeclareFontShape{T1}{Junicode-TOsF}{bold}{sl}{
- <-> ssub * Junicode-TOsF/bold/it
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{sc}{
+ <-> alias * Junicode-TOsF/sbx/sc
+}{}
+
+\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{sl}{
+ <-> ssub * Junicode-TOsF/sbx/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiboldexpanded/it
+}{}
+
+\DeclareFontShape{T1}{Junicode-TOsF}{sbx}{scsl}{
+ <-> ssub * Junicode-TOsF/sbx/scit
+}{}
+
+\DeclareFontShape{T1}{Junicode-TOsF}{semiboldexpanded}{scsl}{
+ <-> ssub * Junicode-TOsF/semiboldexpanded/scit
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/TS1Junicode-LF.fd b/Master/texmf-dist/tex/latex/junicode/TS1Junicode-LF.fd
index 1e3cb0a31c4..80b213adcbd 100644
--- a/Master/texmf-dist/tex/latex/junicode/TS1Junicode-LF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/TS1Junicode-LF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{TS1Junicode-LF.fd}
- [2024/06/03 (autoinst) Font definitions for TS1/Junicode-LF.]
+ [2024/07/21 (autoinst) Font definitions for TS1/Junicode-LF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,89 +20,70 @@
\DeclareFontFamily{TS1}{Junicode-LF}{}
-% ---- l = light ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{TS1}{Junicode-LF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{light}{n}{
- <-> alias * Junicode-LF/l/n
+\DeclareFontShape{TS1}{Junicode-LF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-LF/sbx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{light}{it}{
- <-> alias * Junicode-LF/l/it
+\DeclareFontShape{TS1}{Junicode-LF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-LF/sbx/n
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{l}{sl}{
- <-> ssub * Junicode-LF/l/it
+\DeclareFontShape{TS1}{Junicode-LF}{sbx}{sl}{
+ <-> ssub * Junicode-LF/sbx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{light}{sl}{
- <-> ssub * Junicode-LF/light/it
+\DeclareFontShape{TS1}{Junicode-LF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiboldexpanded/it
}{}
-% ---- bx = boldexpanded ----
-
-\DeclareFontShape{TS1}{Junicode-LF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-LF}{boldexpanded}{it}{
- <-> alias * Junicode-LF/bx/it
-}{}
+% ---- c = condensed ----
-\DeclareFontShape{TS1}{Junicode-LF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{boldexpanded}{n}{
- <-> alias * Junicode-LF/bx/n
+\DeclareFontShape{TS1}{Junicode-LF}{condensed}{it}{
+ <-> alias * Junicode-LF/c/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{bx}{sl}{
- <-> ssub * Junicode-LF/bx/it
+\DeclareFontShape{TS1}{Junicode-LF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{boldexpanded}{sl}{
- <-> ssub * Junicode-LF/boldexpanded/it
+\DeclareFontShape{TS1}{Junicode-LF}{condensed}{n}{
+ <-> alias * Junicode-LF/c/n
}{}
-
-% ---- m = regular ----
-
-\DeclareFontShape{TS1}{Junicode-LF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{c}{sl}{
+ <-> ssub * Junicode-LF/c/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{regular}{it}{
- <-> alias * Junicode-LF/m/it
+\DeclareFontShape{TS1}{Junicode-LF}{condensed}{sl}{
+ <-> ssub * Junicode-LF/condensed/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-lf-ts1
-}{}
-\DeclareFontShape{TS1}{Junicode-LF}{regular}{n}{
- <-> alias * Junicode-LF/m/n
-}{}
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{TS1}{Junicode-LF}{m}{sl}{
- <-> ssub * Junicode-LF/m/it
+\DeclareFontShape{TS1}{Junicode-LF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{regular}{sl}{
- <-> ssub * Junicode-LF/regular/it
+\DeclareFontShape{TS1}{Junicode-LF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-LF/lsc/it
}{}
-
-% ---- lsc = lightsemicondensed ----
-
\DeclareFontShape{TS1}{Junicode-LF}{lsc}{n}{
<-> \Junicode@@scale Junicode-SmCondLight-lf-ts1
}{}
@@ -111,14 +92,6 @@
<-> alias * Junicode-LF/lsc/n
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-LF}{lightsemicondensed}{it}{
- <-> alias * Junicode-LF/lsc/it
-}{}
-
\DeclareFontShape{TS1}{Junicode-LF}{lsc}{sl}{
<-> ssub * Junicode-LF/lsc/it
}{}
@@ -128,58 +101,50 @@
}{}
-% ---- medium ----
+% ---- mediumexpanded ----
-\DeclareFontShape{TS1}{Junicode-LF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{medium}{sl}{
- <-> ssub * Junicode-LF/medium/it
+\DeclareFontShape{TS1}{Junicode-LF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumexpanded/it
}{}
-% ---- sx = semiexpanded ----
+% ---- b = bold ----
-\DeclareFontShape{TS1}{Junicode-LF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semiexpanded}{it}{
- <-> alias * Junicode-LF/sx/it
+\DeclareFontShape{TS1}{Junicode-LF}{bold}{it}{
+ <-> alias * Junicode-LF/b/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semiexpanded}{n}{
- <-> alias * Junicode-LF/sx/n
+\DeclareFontShape{TS1}{Junicode-LF}{bold}{n}{
+ <-> alias * Junicode-LF/b/n
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{sx}{sl}{
- <-> ssub * Junicode-LF/sx/it
+\DeclareFontShape{TS1}{Junicode-LF}{b}{sl}{
+ <-> ssub * Junicode-LF/b/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiexpanded/it
+\DeclareFontShape{TS1}{Junicode-LF}{bold}{sl}{
+ <-> ssub * Junicode-LF/bold/it
}{}
% ---- x = expanded ----
-\DeclareFontShape{TS1}{Junicode-LF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-LF}{expanded}{n}{
- <-> alias * Junicode-LF/x/n
-}{}
-
\DeclareFontShape{TS1}{Junicode-LF}{x}{it}{
<-> \Junicode@@scale Junicode-ExpItalic-lf-ts1
}{}
@@ -188,6 +153,14 @@
<-> alias * Junicode-LF/x/it
}{}
+\DeclareFontShape{TS1}{Junicode-LF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-LF}{expanded}{n}{
+ <-> alias * Junicode-LF/x/n
+}{}
+
\DeclareFontShape{TS1}{Junicode-LF}{x}{sl}{
<-> ssub * Junicode-LF/x/it
}{}
@@ -197,156 +170,156 @@
}{}
-% ---- c = condensed ----
-
-\DeclareFontShape{TS1}{Junicode-LF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-LF}{condensed}{n}{
- <-> alias * Junicode-LF/c/n
-}{}
-
-\DeclareFontShape{TS1}{Junicode-LF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-lf-ts1
-}{}
+% ---- mediumsemicondensed ----
-\DeclareFontShape{TS1}{Junicode-LF}{condensed}{it}{
- <-> alias * Junicode-LF/c/it
+\DeclareFontShape{TS1}{Junicode-LF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{c}{sl}{
- <-> ssub * Junicode-LF/c/it
+\DeclareFontShape{TS1}{Junicode-LF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{condensed}{sl}{
- <-> ssub * Junicode-LF/condensed/it
+\DeclareFontShape{TS1}{Junicode-LF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-LF/mediumsemicondensed/it
}{}
-% ---- sbsx = semiboldsemiexpanded ----
+% ---- l = light ----
-\DeclareFontShape{TS1}{Junicode-LF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-LF/sbsx/n
+\DeclareFontShape{TS1}{Junicode-LF}{light}{n}{
+ <-> alias * Junicode-LF/l/n
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-LF/sbsx/it
+\DeclareFontShape{TS1}{Junicode-LF}{light}{it}{
+ <-> alias * Junicode-LF/l/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{sbsx}{sl}{
- <-> ssub * Junicode-LF/sbsx/it
+\DeclareFontShape{TS1}{Junicode-LF}{l}{sl}{
+ <-> ssub * Junicode-LF/l/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/semiboldsemiexpanded/it
+\DeclareFontShape{TS1}{Junicode-LF}{light}{sl}{
+ <-> ssub * Junicode-LF/light/it
}{}
-% ---- mediumexpanded ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{TS1}{Junicode-LF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{semiexpanded}{it}{
+ <-> alias * Junicode-LF/sx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumexpanded/it
+\DeclareFontShape{TS1}{Junicode-LF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-lf-ts1
}{}
-
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{TS1}{Junicode-LF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{semiexpanded}{n}{
+ <-> alias * Junicode-LF/sx/n
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{sx}{sl}{
+ <-> ssub * Junicode-LF/sx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/mediumsemiexpanded/it
+\DeclareFontShape{TS1}{Junicode-LF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiexpanded/it
}{}
-% ---- mediumsemicondensed ----
+% ---- medium ----
-\DeclareFontShape{TS1}{Junicode-LF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-LF/mediumsemicondensed/it
+\DeclareFontShape{TS1}{Junicode-LF}{medium}{sl}{
+ <-> ssub * Junicode-LF/medium/it
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{TS1}{Junicode-LF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semiboldexpanded}{it}{
- <-> alias * Junicode-LF/sbx/it
+\DeclareFontShape{TS1}{Junicode-LF}{boldexpanded}{it}{
+ <-> alias * Junicode-LF/bx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semiboldexpanded}{n}{
- <-> alias * Junicode-LF/sbx/n
+\DeclareFontShape{TS1}{Junicode-LF}{boldexpanded}{n}{
+ <-> alias * Junicode-LF/bx/n
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{sbx}{sl}{
- <-> ssub * Junicode-LF/sbx/it
+\DeclareFontShape{TS1}{Junicode-LF}{bx}{sl}{
+ <-> ssub * Junicode-LF/bx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-LF/semiboldexpanded/it
+\DeclareFontShape{TS1}{Junicode-LF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-LF/boldexpanded/it
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- m = regular ----
-\DeclareFontShape{TS1}{Junicode-LF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-LF/bsx/n
+\DeclareFontShape{TS1}{Junicode-LF}{regular}{n}{
+ <-> alias * Junicode-LF/m/n
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-LF/bsx/it
+\DeclareFontShape{TS1}{Junicode-LF}{regular}{it}{
+ <-> alias * Junicode-LF/m/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{bsx}{sl}{
- <-> ssub * Junicode-LF/bsx/it
+\DeclareFontShape{TS1}{Junicode-LF}{m}{sl}{
+ <-> ssub * Junicode-LF/m/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-LF/boldsemiexpanded/it
+\DeclareFontShape{TS1}{Junicode-LF}{regular}{sl}{
+ <-> ssub * Junicode-LF/regular/it
+}{}
+
+
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{TS1}{Junicode-LF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-LF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-LF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/mediumsemiexpanded/it
}{}
@@ -404,75 +377,102 @@
}{}
-% ---- sb = semibold ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{TS1}{Junicode-LF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semibold}{it}{
- <-> alias * Junicode-LF/sb/it
+\DeclareFontShape{TS1}{Junicode-LF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-LF/sbsx/n
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semibold}{n}{
- <-> alias * Junicode-LF/sb/n
+\DeclareFontShape{TS1}{Junicode-LF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-LF/sbsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{sb}{sl}{
- <-> ssub * Junicode-LF/sb/it
+\DeclareFontShape{TS1}{Junicode-LF}{sbsx}{sl}{
+ <-> ssub * Junicode-LF/sbsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{semibold}{sl}{
- <-> ssub * Junicode-LF/semibold/it
+\DeclareFontShape{TS1}{Junicode-LF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/semiboldsemiexpanded/it
}{}
-% ---- b = bold ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{TS1}{Junicode-LF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{bold}{n}{
- <-> alias * Junicode-LF/b/n
+\DeclareFontShape{TS1}{Junicode-LF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-LF/bsx/n
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-lf-ts1
+\DeclareFontShape{TS1}{Junicode-LF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-lf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{bold}{it}{
- <-> alias * Junicode-LF/b/it
+\DeclareFontShape{TS1}{Junicode-LF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-LF/bsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{b}{sl}{
- <-> ssub * Junicode-LF/b/it
+\DeclareFontShape{TS1}{Junicode-LF}{bsx}{sl}{
+ <-> ssub * Junicode-LF/bsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-LF}{bold}{sl}{
- <-> ssub * Junicode-LF/bold/it
+\DeclareFontShape{TS1}{Junicode-LF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-LF/boldsemiexpanded/it
}{}
% ---- mediumcondensed ----
-\DeclareFontShape{TS1}{Junicode-LF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-lf-ts1
-}{}
-
\DeclareFontShape{TS1}{Junicode-LF}{mediumcondensed}{it}{
<-> \Junicode@@scale Junicode-CondMediumItalic-lf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-LF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-lf-ts1
+}{}
+
\DeclareFontShape{TS1}{Junicode-LF}{mediumcondensed}{sl}{
<-> ssub * Junicode-LF/mediumcondensed/it
}{}
+% ---- sb = semibold ----
+
+\DeclareFontShape{TS1}{Junicode-LF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-LF}{semibold}{n}{
+ <-> alias * Junicode-LF/sb/n
+}{}
+
+\DeclareFontShape{TS1}{Junicode-LF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-LF}{semibold}{it}{
+ <-> alias * Junicode-LF/sb/it
+}{}
+
+\DeclareFontShape{TS1}{Junicode-LF}{sb}{sl}{
+ <-> ssub * Junicode-LF/sb/it
+}{}
+
+\DeclareFontShape{TS1}{Junicode-LF}{semibold}{sl}{
+ <-> ssub * Junicode-LF/semibold/it
+}{}
+
+
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
\endinput
diff --git a/Master/texmf-dist/tex/latex/junicode/TS1Junicode-OsF.fd b/Master/texmf-dist/tex/latex/junicode/TS1Junicode-OsF.fd
index 8c49fdb846e..6f9d7fe6c58 100644
--- a/Master/texmf-dist/tex/latex/junicode/TS1Junicode-OsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/TS1Junicode-OsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{TS1Junicode-OsF.fd}
- [2024/06/03 (autoinst) Font definitions for TS1/Junicode-OsF.]
+ [2024/07/21 (autoinst) Font definitions for TS1/Junicode-OsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,31 +20,35 @@
\DeclareFontFamily{TS1}{Junicode-OsF}{}
-% ---- mediumsemicondensed ----
+% ---- c = condensed ----
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{condensed}{n}{
+ <-> alias * Junicode-OsF/c/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumsemicondensed/it
+\DeclareFontShape{TS1}{Junicode-OsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-osf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-OsF}{condensed}{it}{
+ <-> alias * Junicode-OsF/c/it
+}{}
-% ---- sbx = semiboldexpanded ----
-
-\DeclareFontShape{TS1}{Junicode-OsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{c}{sl}{
+ <-> ssub * Junicode-OsF/c/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-OsF/sbx/n
+\DeclareFontShape{TS1}{Junicode-OsF}{condensed}{sl}{
+ <-> ssub * Junicode-OsF/condensed/it
}{}
+
+% ---- sbx = semiboldexpanded ----
+
\DeclareFontShape{TS1}{Junicode-OsF}{sbx}{it}{
<-> \Junicode@@scale Junicode-ExpSmBoldItalic-osf-ts1
}{}
@@ -53,6 +57,14 @@
<-> alias * Junicode-OsF/sbx/it
}{}
+\DeclareFontShape{TS1}{Junicode-OsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-OsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-OsF/sbx/n
+}{}
+
\DeclareFontShape{TS1}{Junicode-OsF}{sbx}{sl}{
<-> ssub * Junicode-OsF/sbx/it
}{}
@@ -62,180 +74,168 @@
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- x = expanded ----
-\DeclareFontShape{TS1}{Junicode-OsF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-OsF/bsx/it
+\DeclareFontShape{TS1}{Junicode-OsF}{expanded}{it}{
+ <-> alias * Junicode-OsF/x/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/bsx/n
+\DeclareFontShape{TS1}{Junicode-OsF}{expanded}{n}{
+ <-> alias * Junicode-OsF/x/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{bsx}{sl}{
- <-> ssub * Junicode-OsF/bsx/it
+\DeclareFontShape{TS1}{Junicode-OsF}{x}{sl}{
+ <-> ssub * Junicode-OsF/x/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/boldsemiexpanded/it
+\DeclareFontShape{TS1}{Junicode-OsF}{expanded}{sl}{
+ <-> ssub * Junicode-OsF/expanded/it
}{}
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{TS1}{Junicode-OsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-osf-ts1
-}{}
+% ---- b = bold ----
-\DeclareFontShape{TS1}{Junicode-OsF}{lightcondensed}{n}{
- <-> alias * Junicode-OsF/lc/n
+\DeclareFontShape{TS1}{Junicode-OsF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{bold}{n}{
+ <-> alias * Junicode-OsF/b/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{lightcondensed}{it}{
- <-> alias * Junicode-OsF/lc/it
+\DeclareFontShape{TS1}{Junicode-OsF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{lc}{sl}{
- <-> ssub * Junicode-OsF/lc/it
+\DeclareFontShape{TS1}{Junicode-OsF}{bold}{it}{
+ <-> alias * Junicode-OsF/b/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-OsF/lightcondensed/it
+\DeclareFontShape{TS1}{Junicode-OsF}{b}{sl}{
+ <-> ssub * Junicode-OsF/b/it
}{}
-
-% ---- sb = semibold ----
-
-\DeclareFontShape{TS1}{Junicode-OsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{bold}{sl}{
+ <-> ssub * Junicode-OsF/bold/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{semibold}{n}{
- <-> alias * Junicode-OsF/sb/n
-}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-osf-ts1
-}{}
+% ---- mediumexpanded ----
-\DeclareFontShape{TS1}{Junicode-OsF}{semibold}{it}{
- <-> alias * Junicode-OsF/sb/it
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{sb}{sl}{
- <-> ssub * Junicode-OsF/sb/it
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{semibold}{sl}{
- <-> ssub * Junicode-OsF/semibold/it
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumexpanded/it
}{}
-% ---- sc = semicondensed ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{TS1}{Junicode-OsF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{semicondensed}{it}{
- <-> alias * Junicode-OsF/sc/it
+\DeclareFontShape{TS1}{Junicode-OsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{semicondensed}{n}{
- <-> alias * Junicode-OsF/sc/n
+\DeclareFontShape{TS1}{Junicode-OsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-OsF/lsc/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{sc}{sl}{
- <-> ssub * Junicode-OsF/sc/it
+\DeclareFontShape{TS1}{Junicode-OsF}{lsc}{sl}{
+ <-> ssub * Junicode-OsF/lsc/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{semicondensed}{sl}{
- <-> ssub * Junicode-OsF/semicondensed/it
+\DeclareFontShape{TS1}{Junicode-OsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightsemicondensed/it
}{}
-% ---- b = bold ----
+% ---- lc = lightcondensed ----
-\DeclareFontShape{TS1}{Junicode-OsF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{bold}{n}{
- <-> alias * Junicode-OsF/b/n
+\DeclareFontShape{TS1}{Junicode-OsF}{lightcondensed}{n}{
+ <-> alias * Junicode-OsF/lc/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{bold}{it}{
- <-> alias * Junicode-OsF/b/it
+\DeclareFontShape{TS1}{Junicode-OsF}{lightcondensed}{it}{
+ <-> alias * Junicode-OsF/lc/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{b}{sl}{
- <-> ssub * Junicode-OsF/b/it
+\DeclareFontShape{TS1}{Junicode-OsF}{lc}{sl}{
+ <-> ssub * Junicode-OsF/lc/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{bold}{sl}{
- <-> ssub * Junicode-OsF/bold/it
+\DeclareFontShape{TS1}{Junicode-OsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-OsF/lightcondensed/it
}{}
-% ---- mediumcondensed ----
+% ---- m = regular ----
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{regular}{it}{
+ <-> alias * Junicode-OsF/m/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-OsF/mediumcondensed/it
+\DeclareFontShape{TS1}{Junicode-OsF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-osf-ts1
}{}
-
-% ---- l = light ----
-
-\DeclareFontShape{TS1}{Junicode-OsF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{regular}{n}{
+ <-> alias * Junicode-OsF/m/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{light}{it}{
- <-> alias * Junicode-OsF/l/it
+\DeclareFontShape{TS1}{Junicode-OsF}{m}{sl}{
+ <-> ssub * Junicode-OsF/m/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{regular}{sl}{
+ <-> ssub * Junicode-OsF/regular/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{light}{n}{
- <-> alias * Junicode-OsF/l/n
+
+% ---- mediumsemiexpanded ----
+
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{l}{sl}{
- <-> ssub * Junicode-OsF/l/it
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{light}{sl}{
- <-> ssub * Junicode-OsF/light/it
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemiexpanded/it
}{}
@@ -266,173 +266,169 @@
}{}
-% ---- m = regular ----
+% ---- medium ----
-\DeclareFontShape{TS1}{Junicode-OsF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{medium}{n}{
+ <-> \Junicode@@scale Junicode-Medium-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{regular}{n}{
- <-> alias * Junicode-OsF/m/n
+\DeclareFontShape{TS1}{Junicode-OsF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{medium}{sl}{
+ <-> ssub * Junicode-OsF/medium/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{regular}{it}{
- <-> alias * Junicode-OsF/m/it
-}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{m}{sl}{
- <-> ssub * Junicode-OsF/m/it
-}{}
+% ---- sx = semiexpanded ----
-\DeclareFontShape{TS1}{Junicode-OsF}{regular}{sl}{
- <-> ssub * Junicode-OsF/regular/it
+\DeclareFontShape{TS1}{Junicode-OsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-osf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-OsF}{semiexpanded}{it}{
+ <-> alias * Junicode-OsF/sx/it
+}{}
-% ---- medium ----
+\DeclareFontShape{TS1}{Junicode-OsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-osf-ts1
+}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{semiexpanded}{n}{
+ <-> alias * Junicode-OsF/sx/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{medium}{n}{
- <-> \Junicode@@scale Junicode-Medium-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{sx}{sl}{
+ <-> ssub * Junicode-OsF/sx/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{medium}{sl}{
- <-> ssub * Junicode-OsF/medium/it
+\DeclareFontShape{TS1}{Junicode-OsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/semiexpanded/it
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- l = light ----
-\DeclareFontShape{TS1}{Junicode-OsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-OsF/lsc/n
+\DeclareFontShape{TS1}{Junicode-OsF}{light}{n}{
+ <-> alias * Junicode-OsF/l/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-OsF/lsc/it
+\DeclareFontShape{TS1}{Junicode-OsF}{light}{it}{
+ <-> alias * Junicode-OsF/l/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{lsc}{sl}{
- <-> ssub * Junicode-OsF/lsc/it
+\DeclareFontShape{TS1}{Junicode-OsF}{l}{sl}{
+ <-> ssub * Junicode-OsF/l/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-OsF/lightsemicondensed/it
+\DeclareFontShape{TS1}{Junicode-OsF}{light}{sl}{
+ <-> ssub * Junicode-OsF/light/it
}{}
-% ---- c = condensed ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{TS1}{Junicode-OsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{condensed}{it}{
- <-> alias * Junicode-OsF/c/it
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumsemicondensed/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{condensed}{n}{
- <-> alias * Junicode-OsF/c/n
-}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{c}{sl}{
- <-> ssub * Junicode-OsF/c/it
-}{}
+% ---- sb = semibold ----
-\DeclareFontShape{TS1}{Junicode-OsF}{condensed}{sl}{
- <-> ssub * Junicode-OsF/condensed/it
+\DeclareFontShape{TS1}{Junicode-OsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-osf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-OsF}{semibold}{n}{
+ <-> alias * Junicode-OsF/sb/n
+}{}
-% ---- x = expanded ----
+\DeclareFontShape{TS1}{Junicode-OsF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-osf-ts1
+}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{semibold}{it}{
+ <-> alias * Junicode-OsF/sb/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{expanded}{it}{
- <-> alias * Junicode-OsF/x/it
+\DeclareFontShape{TS1}{Junicode-OsF}{sb}{sl}{
+ <-> ssub * Junicode-OsF/sb/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{semibold}{sl}{
+ <-> ssub * Junicode-OsF/semibold/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{expanded}{n}{
- <-> alias * Junicode-OsF/x/n
+
+% ---- mediumcondensed ----
+
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{x}{sl}{
- <-> ssub * Junicode-OsF/x/it
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{expanded}{sl}{
- <-> ssub * Junicode-OsF/expanded/it
+\DeclareFontShape{TS1}{Junicode-OsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-OsF/mediumcondensed/it
}{}
-% ---- sx = semiexpanded ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{TS1}{Junicode-OsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{semiexpanded}{it}{
- <-> alias * Junicode-OsF/sx/it
+\DeclareFontShape{TS1}{Junicode-OsF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{semiexpanded}{n}{
- <-> alias * Junicode-OsF/sx/n
+\DeclareFontShape{TS1}{Junicode-OsF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/bsx/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{sx}{sl}{
- <-> ssub * Junicode-OsF/sx/it
+\DeclareFontShape{TS1}{Junicode-OsF}{bsx}{sl}{
+ <-> ssub * Junicode-OsF/bsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-OsF/semiexpanded/it
+\DeclareFontShape{TS1}{Junicode-OsF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-OsF/boldsemiexpanded/it
}{}
-% ---- mediumexpanded ----
-
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-osf-ts1
-}{}
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumexpanded/it
+\DeclareFontShape{TS1}{Junicode-OsF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-OsF/sbsx/n
}{}
-
-% ---- sbsx = semiboldsemiexpanded ----
-
\DeclareFontShape{TS1}{Junicode-OsF}{sbsx}{it}{
<-> \Junicode@@scale Junicode-SmExpSmBoldItalic-osf-ts1
}{}
@@ -441,14 +437,6 @@
<-> alias * Junicode-OsF/sbsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-OsF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-OsF/sbsx/n
-}{}
-
\DeclareFontShape{TS1}{Junicode-OsF}{sbsx}{sl}{
<-> ssub * Junicode-OsF/sbsx/it
}{}
@@ -458,18 +446,30 @@
}{}
-% ---- mediumsemiexpanded ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-osf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-osf-ts1
+\DeclareFontShape{TS1}{Junicode-OsF}{semicondensed}{n}{
+ <-> alias * Junicode-OsF/sc/n
}{}
-\DeclareFontShape{TS1}{Junicode-OsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-OsF/mediumsemiexpanded/it
+\DeclareFontShape{TS1}{Junicode-OsF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-OsF}{semicondensed}{it}{
+ <-> alias * Junicode-OsF/sc/it
+}{}
+
+\DeclareFontShape{TS1}{Junicode-OsF}{sc}{sl}{
+ <-> ssub * Junicode-OsF/sc/it
+}{}
+
+\DeclareFontShape{TS1}{Junicode-OsF}{semicondensed}{sl}{
+ <-> ssub * Junicode-OsF/semicondensed/it
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/TS1Junicode-TLF.fd b/Master/texmf-dist/tex/latex/junicode/TS1Junicode-TLF.fd
index 8ff70a59bb5..9d106c1467d 100644
--- a/Master/texmf-dist/tex/latex/junicode/TS1Junicode-TLF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/TS1Junicode-TLF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{TS1Junicode-TLF.fd}
- [2024/06/03 (autoinst) Font definitions for TS1/Junicode-TLF.]
+ [2024/07/21 (autoinst) Font definitions for TS1/Junicode-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,104 +20,85 @@
\DeclareFontFamily{TS1}{Junicode-TLF}{}
-% ---- sx = semiexpanded ----
-
-\DeclareFontShape{TS1}{Junicode-TLF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tlf-ts1
-}{}
+% ---- sb = semibold ----
-\DeclareFontShape{TS1}{Junicode-TLF}{semiexpanded}{n}{
- <-> alias * Junicode-TLF/sx/n
+\DeclareFontShape{TS1}{Junicode-TLF}{sb}{it}{
+ <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{semibold}{it}{
+ <-> alias * Junicode-TLF/sb/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semiexpanded}{it}{
- <-> alias * Junicode-TLF/sx/it
+\DeclareFontShape{TS1}{Junicode-TLF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{sx}{sl}{
- <-> ssub * Junicode-TLF/sx/it
+\DeclareFontShape{TS1}{Junicode-TLF}{semibold}{n}{
+ <-> alias * Junicode-TLF/sb/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiexpanded/it
+\DeclareFontShape{TS1}{Junicode-TLF}{sb}{sl}{
+ <-> ssub * Junicode-TLF/sb/it
}{}
-
-% ---- x = expanded ----
-
-\DeclareFontShape{TS1}{Junicode-TLF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{semibold}{sl}{
+ <-> ssub * Junicode-TLF/semibold/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{expanded}{it}{
- <-> alias * Junicode-TLF/x/it
-}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-tlf-ts1
-}{}
+% ---- mediumcondensed ----
-\DeclareFontShape{TS1}{Junicode-TLF}{expanded}{n}{
- <-> alias * Junicode-TLF/x/n
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{x}{sl}{
- <-> ssub * Junicode-TLF/x/it
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{expanded}{sl}{
- <-> ssub * Junicode-TLF/expanded/it
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumcondensed/it
}{}
-% ---- c = condensed ----
+% ---- bsx = boldsemiexpanded ----
-\DeclareFontShape{TS1}{Junicode-TLF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{bsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpBold-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{condensed}{n}{
- <-> alias * Junicode-TLF/c/n
+\DeclareFontShape{TS1}{Junicode-TLF}{boldsemiexpanded}{n}{
+ <-> alias * Junicode-TLF/bsx/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{bsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{condensed}{it}{
- <-> alias * Junicode-TLF/c/it
+\DeclareFontShape{TS1}{Junicode-TLF}{boldsemiexpanded}{it}{
+ <-> alias * Junicode-TLF/bsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{c}{sl}{
- <-> ssub * Junicode-TLF/c/it
+\DeclareFontShape{TS1}{Junicode-TLF}{bsx}{sl}{
+ <-> ssub * Junicode-TLF/bsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{condensed}{sl}{
- <-> ssub * Junicode-TLF/condensed/it
+\DeclareFontShape{TS1}{Junicode-TLF}{boldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/boldsemiexpanded/it
}{}
-% ---- mediumsemiexpanded ----
-
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tlf-ts1
-}{}
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumsemiexpanded/it
+\DeclareFontShape{TS1}{Junicode-TLF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-TLF/sbsx/n
}{}
-
-% ---- sbsx = semiboldsemiexpanded ----
-
\DeclareFontShape{TS1}{Junicode-TLF}{sbsx}{it}{
<-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tlf-ts1
}{}
@@ -126,14 +107,6 @@
<-> alias * Junicode-TLF/sbsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TLF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-TLF/sbsx/n
-}{}
-
\DeclareFontShape{TS1}{Junicode-TLF}{sbsx}{sl}{
<-> ssub * Junicode-TLF/sbsx/it
}{}
@@ -143,333 +116,360 @@
}{}
-% ---- mediumexpanded ----
+% ---- sc = semicondensed ----
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{sc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{semicondensed}{it}{
+ <-> alias * Junicode-TLF/sc/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TLF/mediumexpanded/it
+\DeclareFontShape{TS1}{Junicode-TLF}{sc}{n}{
+ <-> \Junicode@@scale Junicode-SmCond-tlf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-TLF}{semicondensed}{n}{
+ <-> alias * Junicode-TLF/sc/n
+}{}
-% ---- bx = boldexpanded ----
+\DeclareFontShape{TS1}{Junicode-TLF}{sc}{sl}{
+ <-> ssub * Junicode-TLF/sc/it
+}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{semicondensed}{sl}{
+ <-> ssub * Junicode-TLF/semicondensed/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{boldexpanded}{n}{
- <-> alias * Junicode-TLF/bx/n
+
+% ---- lc = lightcondensed ----
+
+\DeclareFontShape{TS1}{Junicode-TLF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{lightcondensed}{n}{
+ <-> alias * Junicode-TLF/lc/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{boldexpanded}{it}{
- <-> alias * Junicode-TLF/bx/it
+\DeclareFontShape{TS1}{Junicode-TLF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{bx}{sl}{
- <-> ssub * Junicode-TLF/bx/it
+\DeclareFontShape{TS1}{Junicode-TLF}{lightcondensed}{it}{
+ <-> alias * Junicode-TLF/lc/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TLF/boldexpanded/it
+\DeclareFontShape{TS1}{Junicode-TLF}{lc}{sl}{
+ <-> ssub * Junicode-TLF/lc/it
}{}
+\DeclareFontShape{TS1}{Junicode-TLF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightcondensed/it
+}{}
-% ---- l = light ----
-\DeclareFontShape{TS1}{Junicode-TLF}{l}{it}{
- <-> \Junicode@@scale Junicode-LightItalic-tlf-ts1
+% ---- m = regular ----
+
+\DeclareFontShape{TS1}{Junicode-TLF}{m}{it}{
+ <-> \Junicode@@scale Junicode-Italic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{light}{it}{
- <-> alias * Junicode-TLF/l/it
+\DeclareFontShape{TS1}{Junicode-TLF}{regular}{it}{
+ <-> alias * Junicode-TLF/m/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{l}{n}{
- <-> \Junicode@@scale Junicode-Light-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{m}{n}{
+ <-> \Junicode@@scale Junicode-Regular-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{light}{n}{
- <-> alias * Junicode-TLF/l/n
+\DeclareFontShape{TS1}{Junicode-TLF}{regular}{n}{
+ <-> alias * Junicode-TLF/m/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{l}{sl}{
- <-> ssub * Junicode-TLF/l/it
+\DeclareFontShape{TS1}{Junicode-TLF}{m}{sl}{
+ <-> ssub * Junicode-TLF/m/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{light}{sl}{
- <-> ssub * Junicode-TLF/light/it
+\DeclareFontShape{TS1}{Junicode-TLF}{regular}{sl}{
+ <-> ssub * Junicode-TLF/regular/it
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{TS1}{Junicode-TLF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TLF/lsc/n
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TLF/lsc/it
+
+% ---- bx = boldexpanded ----
+
+\DeclareFontShape{TS1}{Junicode-TLF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lsc}{sl}{
- <-> ssub * Junicode-TLF/lsc/it
+\DeclareFontShape{TS1}{Junicode-TLF}{boldexpanded}{it}{
+ <-> alias * Junicode-TLF/bx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/lightsemicondensed/it
+\DeclareFontShape{TS1}{Junicode-TLF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tlf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-TLF}{boldexpanded}{n}{
+ <-> alias * Junicode-TLF/bx/n
+}{}
-% ---- medium ----
+\DeclareFontShape{TS1}{Junicode-TLF}{bx}{sl}{
+ <-> ssub * Junicode-TLF/bx/it
+}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{medium}{it}{
- <-> \Junicode@@scale Junicode-MediumItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/boldexpanded/it
}{}
+
+% ---- medium ----
+
\DeclareFontShape{TS1}{Junicode-TLF}{medium}{n}{
<-> \Junicode@@scale Junicode-Medium-tlf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-TLF}{medium}{it}{
+ <-> \Junicode@@scale Junicode-MediumItalic-tlf-ts1
+}{}
+
\DeclareFontShape{TS1}{Junicode-TLF}{medium}{sl}{
<-> ssub * Junicode-TLF/medium/it
}{}
-% ---- m = regular ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{TS1}{Junicode-TLF}{m}{n}{
- <-> \Junicode@@scale Junicode-Regular-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{regular}{n}{
- <-> alias * Junicode-TLF/m/n
+\DeclareFontShape{TS1}{Junicode-TLF}{semiexpanded}{n}{
+ <-> alias * Junicode-TLF/sx/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{m}{it}{
- <-> \Junicode@@scale Junicode-Italic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{regular}{it}{
- <-> alias * Junicode-TLF/m/it
+\DeclareFontShape{TS1}{Junicode-TLF}{semiexpanded}{it}{
+ <-> alias * Junicode-TLF/sx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{m}{sl}{
- <-> ssub * Junicode-TLF/m/it
+\DeclareFontShape{TS1}{Junicode-TLF}{sx}{sl}{
+ <-> ssub * Junicode-TLF/sx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{regular}{sl}{
- <-> ssub * Junicode-TLF/regular/it
+\DeclareFontShape{TS1}{Junicode-TLF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiexpanded/it
}{}
-% ---- b = bold ----
+% ---- l = light ----
-\DeclareFontShape{TS1}{Junicode-TLF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{l}{it}{
+ <-> \Junicode@@scale Junicode-LightItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{bold}{n}{
- <-> alias * Junicode-TLF/b/n
+\DeclareFontShape{TS1}{Junicode-TLF}{light}{it}{
+ <-> alias * Junicode-TLF/l/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{l}{n}{
+ <-> \Junicode@@scale Junicode-Light-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{bold}{it}{
- <-> alias * Junicode-TLF/b/it
+\DeclareFontShape{TS1}{Junicode-TLF}{light}{n}{
+ <-> alias * Junicode-TLF/l/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{b}{sl}{
- <-> ssub * Junicode-TLF/b/it
+\DeclareFontShape{TS1}{Junicode-TLF}{l}{sl}{
+ <-> ssub * Junicode-TLF/l/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{bold}{sl}{
- <-> ssub * Junicode-TLF/bold/it
+\DeclareFontShape{TS1}{Junicode-TLF}{light}{sl}{
+ <-> ssub * Junicode-TLF/light/it
}{}
-% ---- mediumcondensed ----
+% ---- mediumsemicondensed ----
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumcondensed/it
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/mediumsemicondensed/it
}{}
-% ---- sbx = semiboldexpanded ----
+% ---- x = expanded ----
-\DeclareFontShape{TS1}{Junicode-TLF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TLF/sbx/n
+\DeclareFontShape{TS1}{Junicode-TLF}{expanded}{it}{
+ <-> alias * Junicode-TLF/x/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TLF/sbx/it
+\DeclareFontShape{TS1}{Junicode-TLF}{expanded}{n}{
+ <-> alias * Junicode-TLF/x/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{sbx}{sl}{
- <-> ssub * Junicode-TLF/sbx/it
+\DeclareFontShape{TS1}{Junicode-TLF}{x}{sl}{
+ <-> ssub * Junicode-TLF/x/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TLF/semiboldexpanded/it
+\DeclareFontShape{TS1}{Junicode-TLF}{expanded}{sl}{
+ <-> ssub * Junicode-TLF/expanded/it
}{}
-% ---- mediumsemicondensed ----
+% ---- b = bold ----
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{bold}{n}{
+ <-> alias * Junicode-TLF/b/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-TLF/mediumsemicondensed/it
+\DeclareFontShape{TS1}{Junicode-TLF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tlf-ts1
}{}
-
-% ---- sc = semicondensed ----
-
-\DeclareFontShape{TS1}{Junicode-TLF}{sc}{it}{
- <-> \Junicode@@scale Junicode-SmCondItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{bold}{it}{
+ <-> alias * Junicode-TLF/b/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semicondensed}{it}{
- <-> alias * Junicode-TLF/sc/it
+\DeclareFontShape{TS1}{Junicode-TLF}{b}{sl}{
+ <-> ssub * Junicode-TLF/b/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{sc}{n}{
- <-> \Junicode@@scale Junicode-SmCond-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{bold}{sl}{
+ <-> ssub * Junicode-TLF/bold/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semicondensed}{n}{
- <-> alias * Junicode-TLF/sc/n
+
+% ---- mediumexpanded ----
+
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{sc}{sl}{
- <-> ssub * Junicode-TLF/sc/it
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semicondensed}{sl}{
- <-> ssub * Junicode-TLF/semicondensed/it
+\DeclareFontShape{TS1}{Junicode-TLF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TLF/mediumexpanded/it
}{}
-% ---- sb = semibold ----
+% ---- lsc = lightsemicondensed ----
-\DeclareFontShape{TS1}{Junicode-TLF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semibold}{n}{
- <-> alias * Junicode-TLF/sb/n
+\DeclareFontShape{TS1}{Junicode-TLF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TLF/lsc/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{sb}{it}{
- <-> \Junicode@@scale Junicode-SmBoldItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semibold}{it}{
- <-> alias * Junicode-TLF/sb/it
+\DeclareFontShape{TS1}{Junicode-TLF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TLF/lsc/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{sb}{sl}{
- <-> ssub * Junicode-TLF/sb/it
+\DeclareFontShape{TS1}{Junicode-TLF}{lsc}{sl}{
+ <-> ssub * Junicode-TLF/lsc/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{semibold}{sl}{
- <-> ssub * Junicode-TLF/semibold/it
+\DeclareFontShape{TS1}{Junicode-TLF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TLF/lightsemicondensed/it
}{}
-% ---- bsx = boldsemiexpanded ----
+% ---- c = condensed ----
-\DeclareFontShape{TS1}{Junicode-TLF}{bsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpBoldItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{boldsemiexpanded}{it}{
- <-> alias * Junicode-TLF/bsx/it
+\DeclareFontShape{TS1}{Junicode-TLF}{condensed}{n}{
+ <-> alias * Junicode-TLF/c/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{bsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpBold-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{boldsemiexpanded}{n}{
- <-> alias * Junicode-TLF/bsx/n
+\DeclareFontShape{TS1}{Junicode-TLF}{condensed}{it}{
+ <-> alias * Junicode-TLF/c/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{bsx}{sl}{
- <-> ssub * Junicode-TLF/bsx/it
+\DeclareFontShape{TS1}{Junicode-TLF}{c}{sl}{
+ <-> ssub * Junicode-TLF/c/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{boldsemiexpanded}{sl}{
- <-> ssub * Junicode-TLF/boldsemiexpanded/it
+\DeclareFontShape{TS1}{Junicode-TLF}{condensed}{sl}{
+ <-> ssub * Junicode-TLF/condensed/it
}{}
-% ---- lc = lightcondensed ----
+% ---- sbx = semiboldexpanded ----
-\DeclareFontShape{TS1}{Junicode-TLF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lightcondensed}{n}{
- <-> alias * Junicode-TLF/lc/n
+\DeclareFontShape{TS1}{Junicode-TLF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TLF/sbx/n
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tlf-ts1
+\DeclareFontShape{TS1}{Junicode-TLF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tlf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lightcondensed}{it}{
- <-> alias * Junicode-TLF/lc/it
+\DeclareFontShape{TS1}{Junicode-TLF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TLF/sbx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lc}{sl}{
- <-> ssub * Junicode-TLF/lc/it
+\DeclareFontShape{TS1}{Junicode-TLF}{sbx}{sl}{
+ <-> ssub * Junicode-TLF/sbx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TLF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TLF/lightcondensed/it
+\DeclareFontShape{TS1}{Junicode-TLF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TLF/semiboldexpanded/it
}{}
diff --git a/Master/texmf-dist/tex/latex/junicode/TS1Junicode-TOsF.fd b/Master/texmf-dist/tex/latex/junicode/TS1Junicode-TOsF.fd
index 02b2f8fbda9..73d254e1220 100644
--- a/Master/texmf-dist/tex/latex/junicode/TS1Junicode-TOsF.fd
+++ b/Master/texmf-dist/tex/latex/junicode/TS1Junicode-TOsF.fd
@@ -1,7 +1,7 @@
-%% Generated by autoinst on 2024/06/03
+%% Generated by autoinst on 2024/07/21
%%
\ProvidesFile{TS1Junicode-TOsF.fd}
- [2024/06/03 (autoinst) Font definitions for TS1/Junicode-TOsF.]
+ [2024/07/21 (autoinst) Font definitions for TS1/Junicode-TOsF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,16 +20,23 @@
\DeclareFontFamily{TS1}{Junicode-TOsF}{}
-% ---- sb = semibold ----
+% ---- mediumcondensed ----
-\DeclareFontShape{TS1}{Junicode-TOsF}{sb}{n}{
- <-> \Junicode@@scale Junicode-SmBold-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumcondensed}{it}{
+ <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{semibold}{n}{
- <-> alias * Junicode-TOsF/sb/n
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumcondensed}{n}{
+ <-> \Junicode@@scale Junicode-CondMedium-tosf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/mediumcondensed/it
+}{}
+
+
+% ---- sb = semibold ----
+
\DeclareFontShape{TS1}{Junicode-TOsF}{sb}{it}{
<-> \Junicode@@scale Junicode-SmBoldItalic-tosf-ts1
}{}
@@ -38,6 +45,14 @@
<-> alias * Junicode-TOsF/sb/it
}{}
+\DeclareFontShape{TS1}{Junicode-TOsF}{sb}{n}{
+ <-> \Junicode@@scale Junicode-SmBold-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{semibold}{n}{
+ <-> alias * Junicode-TOsF/sb/n
+}{}
+
\DeclareFontShape{TS1}{Junicode-TOsF}{sb}{sl}{
<-> ssub * Junicode-TOsF/sb/it
}{}
@@ -74,33 +89,6 @@
}{}
-% ---- lc = lightcondensed ----
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{lc}{n}{
- <-> \Junicode@@scale Junicode-CondLight-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{lightcondensed}{n}{
- <-> alias * Junicode-TOsF/lc/n
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{lc}{it}{
- <-> \Junicode@@scale Junicode-CondLightItalic-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{lightcondensed}{it}{
- <-> alias * Junicode-TOsF/lc/it
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{lc}{sl}{
- <-> ssub * Junicode-TOsF/lc/it
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{lightcondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightcondensed/it
-}{}
-
-
% ---- bsx = boldsemiexpanded ----
\DeclareFontShape{TS1}{Junicode-TOsF}{bsx}{n}{
@@ -128,87 +116,30 @@
}{}
-% ---- sbx = semiboldexpanded ----
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{sbx}{it}{
- <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldexpanded}{it}{
- <-> alias * Junicode-TOsF/sbx/it
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{sbx}{n}{
- <-> \Junicode@@scale Junicode-ExpSmBold-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldexpanded}{n}{
- <-> alias * Junicode-TOsF/sbx/n
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{sbx}{sl}{
- <-> ssub * Junicode-TOsF/sbx/it
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiboldexpanded/it
-}{}
-
-
-% ---- mediumsemicondensed ----
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemicondensed}{n}{
- <-> \Junicode@@scale Junicode-SmCondMedium-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemicondensed}{it}{
- <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemicondensed}{sl}{
- <-> ssub * Junicode-TOsF/mediumsemicondensed/it
-}{}
-
-
-% ---- mediumcondensed ----
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumcondensed}{it}{
- <-> \Junicode@@scale Junicode-CondMediumItalic-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumcondensed}{n}{
- <-> \Junicode@@scale Junicode-CondMedium-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumcondensed}{sl}{
- <-> ssub * Junicode-TOsF/mediumcondensed/it
-}{}
-
-
-% ---- b = bold ----
+% ---- sbsx = semiboldsemiexpanded ----
-\DeclareFontShape{TS1}{Junicode-TOsF}{b}{n}{
- <-> \Junicode@@scale Junicode-Bold-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{sbsx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{bold}{n}{
- <-> alias * Junicode-TOsF/b/n
+\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldsemiexpanded}{it}{
+ <-> alias * Junicode-TOsF/sbsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{b}{it}{
- <-> \Junicode@@scale Junicode-BoldItalic-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{sbsx}{n}{
+ <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{bold}{it}{
- <-> alias * Junicode-TOsF/b/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldsemiexpanded}{n}{
+ <-> alias * Junicode-TOsF/sbsx/n
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{b}{sl}{
- <-> ssub * Junicode-TOsF/b/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{sbsx}{sl}{
+ <-> ssub * Junicode-TOsF/sbsx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{bold}{sl}{
- <-> ssub * Junicode-TOsF/bold/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiboldsemiexpanded/it
}{}
@@ -227,30 +158,30 @@
}{}
-% ---- lsc = lightsemicondensed ----
+% ---- bx = boldexpanded ----
-\DeclareFontShape{TS1}{Junicode-TOsF}{lsc}{n}{
- <-> \Junicode@@scale Junicode-SmCondLight-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{bx}{it}{
+ <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{lightsemicondensed}{n}{
- <-> alias * Junicode-TOsF/lsc/n
+\DeclareFontShape{TS1}{Junicode-TOsF}{boldexpanded}{it}{
+ <-> alias * Junicode-TOsF/bx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{lsc}{it}{
- <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{bx}{n}{
+ <-> \Junicode@@scale Junicode-ExpBold-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{lightsemicondensed}{it}{
- <-> alias * Junicode-TOsF/lsc/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{boldexpanded}{n}{
+ <-> alias * Junicode-TOsF/bx/n
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{lsc}{sl}{
- <-> ssub * Junicode-TOsF/lsc/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{bx}{sl}{
+ <-> ssub * Junicode-TOsF/bx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{lightsemicondensed}{sl}{
- <-> ssub * Junicode-TOsF/lightsemicondensed/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{boldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/boldexpanded/it
}{}
@@ -281,30 +212,60 @@
}{}
-% ---- bx = boldexpanded ----
+% ---- mediumsemiexpanded ----
-\DeclareFontShape{TS1}{Junicode-TOsF}{bx}{it}{
- <-> \Junicode@@scale Junicode-ExpBoldItalic-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemiexpanded}{it}{
+ <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{boldexpanded}{it}{
- <-> alias * Junicode-TOsF/bx/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemiexpanded}{n}{
+ <-> \Junicode@@scale Junicode-SmExpMedium-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{bx}{n}{
- <-> \Junicode@@scale Junicode-ExpBold-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{boldexpanded}{n}{
- <-> alias * Junicode-TOsF/bx/n
+
+% ---- lc = lightcondensed ----
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{lc}{n}{
+ <-> \Junicode@@scale Junicode-CondLight-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{bx}{sl}{
- <-> ssub * Junicode-TOsF/bx/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{lightcondensed}{n}{
+ <-> alias * Junicode-TOsF/lc/n
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{boldexpanded}{sl}{
- <-> ssub * Junicode-TOsF/boldexpanded/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{lc}{it}{
+ <-> \Junicode@@scale Junicode-CondLightItalic-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{lightcondensed}{it}{
+ <-> alias * Junicode-TOsF/lc/it
+}{}
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{lc}{sl}{
+ <-> ssub * Junicode-TOsF/lc/it
+}{}
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{lightcondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightcondensed/it
+}{}
+
+
+% ---- mediumsemicondensed ----
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemicondensed}{n}{
+ <-> \Junicode@@scale Junicode-SmCondMedium-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemicondensed}{it}{
+ <-> \Junicode@@scale Junicode-SmCondMediumItalic-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/mediumsemicondensed/it
}{}
@@ -335,141 +296,180 @@
}{}
-% ---- mediumsemiexpanded ----
+% ---- sx = semiexpanded ----
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemiexpanded}{it}{
- <-> \Junicode@@scale Junicode-SmExpMediumItalic-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{sx}{it}{
+ <-> \Junicode@@scale Junicode-SmExpItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemiexpanded}{n}{
- <-> \Junicode@@scale Junicode-SmExpMedium-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{semiexpanded}{it}{
+ <-> alias * Junicode-TOsF/sx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumsemiexpanded/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{sx}{n}{
+ <-> \Junicode@@scale Junicode-SmExp-tosf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-TOsF}{semiexpanded}{n}{
+ <-> alias * Junicode-TOsF/sx/n
+}{}
-% ---- mediumexpanded ----
+\DeclareFontShape{TS1}{Junicode-TOsF}{sx}{sl}{
+ <-> ssub * Junicode-TOsF/sx/it
+}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumexpanded}{it}{
- <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{semiexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiexpanded/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumexpanded}{n}{
- <-> \Junicode@@scale Junicode-ExpMedium-tosf-ts1
+
+% ---- b = bold ----
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{b}{n}{
+ <-> \Junicode@@scale Junicode-Bold-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{mediumexpanded}{sl}{
- <-> ssub * Junicode-TOsF/mediumexpanded/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{bold}{n}{
+ <-> alias * Junicode-TOsF/b/n
}{}
+\DeclareFontShape{TS1}{Junicode-TOsF}{b}{it}{
+ <-> \Junicode@@scale Junicode-BoldItalic-tosf-ts1
+}{}
-% ---- sbsx = semiboldsemiexpanded ----
+\DeclareFontShape{TS1}{Junicode-TOsF}{bold}{it}{
+ <-> alias * Junicode-TOsF/b/it
+}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{sbsx}{it}{
- <-> \Junicode@@scale Junicode-SmExpSmBoldItalic-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{b}{sl}{
+ <-> ssub * Junicode-TOsF/b/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldsemiexpanded}{it}{
- <-> alias * Junicode-TOsF/sbsx/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{bold}{sl}{
+ <-> ssub * Junicode-TOsF/bold/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{sbsx}{n}{
- <-> \Junicode@@scale Junicode-SmExpSmBold-tosf-ts1
+
+% ---- x = expanded ----
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{x}{n}{
+ <-> \Junicode@@scale Junicode-Exp-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldsemiexpanded}{n}{
- <-> alias * Junicode-TOsF/sbsx/n
+\DeclareFontShape{TS1}{Junicode-TOsF}{expanded}{n}{
+ <-> alias * Junicode-TOsF/x/n
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{sbsx}{sl}{
- <-> ssub * Junicode-TOsF/sbsx/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{x}{it}{
+ <-> \Junicode@@scale Junicode-ExpItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldsemiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiboldsemiexpanded/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{expanded}{it}{
+ <-> alias * Junicode-TOsF/x/it
}{}
+\DeclareFontShape{TS1}{Junicode-TOsF}{x}{sl}{
+ <-> ssub * Junicode-TOsF/x/it
+}{}
-% ---- c = condensed ----
+\DeclareFontShape{TS1}{Junicode-TOsF}{expanded}{sl}{
+ <-> ssub * Junicode-TOsF/expanded/it
+}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{c}{n}{
- <-> \Junicode@@scale Junicode-Cond-tosf-ts1
+
+% ---- lsc = lightsemicondensed ----
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{lsc}{it}{
+ <-> \Junicode@@scale Junicode-SmCondLightItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{condensed}{n}{
- <-> alias * Junicode-TOsF/c/n
+\DeclareFontShape{TS1}{Junicode-TOsF}{lightsemicondensed}{it}{
+ <-> alias * Junicode-TOsF/lsc/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{c}{it}{
- <-> \Junicode@@scale Junicode-CondItalic-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{lsc}{n}{
+ <-> \Junicode@@scale Junicode-SmCondLight-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{condensed}{it}{
- <-> alias * Junicode-TOsF/c/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{lightsemicondensed}{n}{
+ <-> alias * Junicode-TOsF/lsc/n
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{c}{sl}{
- <-> ssub * Junicode-TOsF/c/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{lsc}{sl}{
+ <-> ssub * Junicode-TOsF/lsc/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{condensed}{sl}{
- <-> ssub * Junicode-TOsF/condensed/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{lightsemicondensed}{sl}{
+ <-> ssub * Junicode-TOsF/lightsemicondensed/it
}{}
-% ---- x = expanded ----
+% ---- mediumexpanded ----
-\DeclareFontShape{TS1}{Junicode-TOsF}{x}{it}{
- <-> \Junicode@@scale Junicode-ExpItalic-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumexpanded}{it}{
+ <-> \Junicode@@scale Junicode-ExpMediumItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{expanded}{it}{
- <-> alias * Junicode-TOsF/x/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumexpanded}{n}{
+ <-> \Junicode@@scale Junicode-ExpMedium-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{x}{n}{
- <-> \Junicode@@scale Junicode-Exp-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{mediumexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/mediumexpanded/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{expanded}{n}{
- <-> alias * Junicode-TOsF/x/n
+
+% ---- c = condensed ----
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{c}{it}{
+ <-> \Junicode@@scale Junicode-CondItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{x}{sl}{
- <-> ssub * Junicode-TOsF/x/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{condensed}{it}{
+ <-> alias * Junicode-TOsF/c/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{expanded}{sl}{
- <-> ssub * Junicode-TOsF/expanded/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{c}{n}{
+ <-> \Junicode@@scale Junicode-Cond-tosf-ts1
}{}
+\DeclareFontShape{TS1}{Junicode-TOsF}{condensed}{n}{
+ <-> alias * Junicode-TOsF/c/n
+}{}
-% ---- sx = semiexpanded ----
+\DeclareFontShape{TS1}{Junicode-TOsF}{c}{sl}{
+ <-> ssub * Junicode-TOsF/c/it
+}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{sx}{it}{
- <-> \Junicode@@scale Junicode-SmExpItalic-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{condensed}{sl}{
+ <-> ssub * Junicode-TOsF/condensed/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{semiexpanded}{it}{
- <-> alias * Junicode-TOsF/sx/it
+
+% ---- sbx = semiboldexpanded ----
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{sbx}{it}{
+ <-> \Junicode@@scale Junicode-ExpSmBoldItalic-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{sx}{n}{
- <-> \Junicode@@scale Junicode-SmExp-tosf-ts1
+\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldexpanded}{it}{
+ <-> alias * Junicode-TOsF/sbx/it
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{semiexpanded}{n}{
- <-> alias * Junicode-TOsF/sx/n
+\DeclareFontShape{TS1}{Junicode-TOsF}{sbx}{n}{
+ <-> \Junicode@@scale Junicode-ExpSmBold-tosf-ts1
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{sx}{sl}{
- <-> ssub * Junicode-TOsF/sx/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldexpanded}{n}{
+ <-> alias * Junicode-TOsF/sbx/n
}{}
-\DeclareFontShape{TS1}{Junicode-TOsF}{semiexpanded}{sl}{
- <-> ssub * Junicode-TOsF/semiexpanded/it
+\DeclareFontShape{TS1}{Junicode-TOsF}{sbx}{sl}{
+ <-> ssub * Junicode-TOsF/sbx/it
+}{}
+
+\DeclareFontShape{TS1}{Junicode-TOsF}{semiboldexpanded}{sl}{
+ <-> ssub * Junicode-TOsF/semiboldexpanded/it
}{}
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 3b968ce12e7..b71a35a5b65 100644
--- a/Master/texmf-dist/tex/latex/jwjournal/jwjournal.cls
+++ b/Master/texmf-dist/tex/latex/jwjournal/jwjournal.cls
@@ -1,6 +1,6 @@
%%
-%% Copyright (C) 2023 by Jinwen XU
-%% -------------------------------
+%% Copyright (C) 2023-2024 by Jinwen XU
+%% ------------------------------------
%%
%% 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,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{jwjournal}
- {2023/12/19} {}
+ {2024/11/05} {}
{JW's journal class}
\keys_define:nn { jwjournal }
@@ -33,11 +33,11 @@
\sys_if_engine_pdftex:TF
{
- \PassOptionsToClass { use indent = false } { minimart }
+ % \PassOptionsToClass { use indent = false } { minimart }
\LoadClass { minimart }
}
{
- \PassOptionsToClass { use indent = false } { einfart }
+ % \PassOptionsToClass { use indent = false } { einfart }
\LoadClass { einfart }
}
@@ -554,14 +554,14 @@
}
\regex_replace_once:nnN { ❄️ (.*) ❄️ } { ❄️ \1 } \l_jwjournal_tmp_tl
- \regex_replace_once:nnN
- { ❄️ (\ *)? (\d{4}-\d{1,2}-\d{1,2}) (\ *)? (.*) }
- { \c{JWJournalEntry} {\2} {\4} }
- \l_jwjournal_tmp_tl
- \regex_replace_once:nnN
- { ❄️ (\ *)? (\d{1,2}-\d{1,2}-\d{4}) (\ *)? (.*) }
- { \c{JWJournalEntry} {\2} {\4} }
- \l_jwjournal_tmp_tl
+ % \regex_replace_once:nnN
+ % { ❄️ (\ *)? (\d{4}-\d{1,2}-\d{1,2}) (\ *)? (.*) }
+ % { \c{JWJournalEntry} {\2} {\4} }
+ % \l_jwjournal_tmp_tl
+ % \regex_replace_once:nnN
+ % { ❄️ (\ *)? (\d{1,2}-\d{1,2}-\d{4}) (\ *)? (.*) }
+ % { \c{JWJournalEntry} {\2} {\4} }
+ % \l_jwjournal_tmp_tl
\regex_replace_once:nnN
{ ❄️ (\ *)? (\d{4} \D \d{1,2} \D \d{1,2}) (\ *)? (.*) }
{ \c{JWJournalEntry} {\2} {\4} }
@@ -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/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..a7670685653
--- /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:nn
+ \exp_args:No \exp_not:o
+ {
+ \exp_after:wN \__keythms_use_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
new file mode 100644
index 00000000000..0c025cce0c7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/keytheorems/keytheorems.sty
@@ -0,0 +1,2735 @@
+% 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]
+\def\@keythms@date{2024-11-11}
+\def\@keythms@version{0.2.2}
+\ProvidesExplPackage{keytheorems}{\@keythms@date}{\@keythms@version}
+ {l3keys interface to amsthm}
+
+\IfFormatAtLeastTF { 2024-06-01 } { }
+ {
+ \RequirePackage{nameref} % to avoid ltproperties in code below
+ \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 }
+ \cs_generate_variant:Nn \tl_gput_right:Nn { ce }
+ \ProvideDocumentCommand \IfPackageLoadedT { m +m }
+ { \IfPackageLoadedTF{#1}{#2}{ } }
+ \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 %%%
+%%%%%%%%%%%%%%%%%%%%%%
+
+\msg_new:nnn { keytheorems } { thmtools-before }
+ {
+ keytheorems~is~not~compatible~with~thmtools.~
+ Try~replacing~\protect\usepackage{thmtools}~with~
+ \protect\usepackage[thmtools-compat]{keytheorems}.
+ }
+\msg_new:nnn { keytheorems } { thmtools-after }
+ {
+ keytheorems~is~not~compatible~with~thmtools.~
+ This~will~not~work~as~you~think!~
+ Try~replacing~\protect\usepackage{thmtools}~with~
+ \protect\usepackage[thmtools-compat]{keytheorems}.
+ }
+\msg_new:nnn { keytheorems } { no-stored-theorem }
+ {
+ No~stored~theorem~'#1'~found!~
+ 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.~
+ Should~be~one~of~'prehead',~'posthead',~'prefoot',~'postfoot',~or'restated'.
+ }
+\msg_new:nnn { keytheorems } { hyperref-Autoref }
+ {
+ You~have~not~loaded~hyperref.~The~\protect\Autoref\space command~needs~
+ hyperref~to~work.
+ }
+\msg_new:nnn { keytheorems } { no-Autorefname }
+ {
+ No~Autoref~name~for~'#1'.~
+ Please~define~\c_backslash_str #1Autorefname.
+ }
+\msg_new:nnn { keytheorems } { thmstyle-undefined }
+ {
+ Theorem~style~'#1'~undefined.~
+ Use~\protect\newkeytheoremstyle\space instead.
+ }
+\msg_new:nnn { keytheorems } { thmstyle-defined }
+ {
+ 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.
+\IfPackageLoadedTF { thmtools }
+ {
+ \msg_fatal:nn { keytheorems } { thmtools-before }
+ }
+ {
+ \hook_gput_code:nnn { package/thmtools/before } { . }
+ {
+ \msg_warning:nn { keytheorems } { thmtools-after }
+ }
+ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% 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
+\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 \g__keythms_thmuse_temprestatedata_tl
+\tl_new:N \g__keythms_thmuse_temprestatedatareversed_tl
+
+\newcounter{keythms_restate_dummyctr}
+\cs_gset:Npn \theHkeythms_restate_dummyctr
+ { restate.\arabic{keythms_restate_dummyctr} }
+\cs_gset:Npn \thekeythms_restate_dummyctr { }
+\newcounter{keythms_continues_dummyctr}
+\cs_gset:Npn \theHkeythms_continues_dummyctr
+ { continues.\arabic{keythms_continues_dummyctr} }
+\cs_gset:Npn \thekeythms_continues_dummyctr { }
+\newcounter{keythms_unnumbered_dummyctr}
+\cs_gset:Npn \theHkeythms_unnumbered_dummyctr
+ { unnumbered.\arabic{keythms_unnumbered_dummyctr} }
+\cs_gset:Npn \thekeythms_unnumbered_dummyctr { }
+
+\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 %%%
+%%%%%%%%%%%%%%
+
+\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
+ { % #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
+ { % #1 = key value
+ \tl_if_empty:NTF \l_keys_value_tl
+ {
+ \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 } }
+ }
+ }
+
+\keys_define:nn { keytheorems/thmstyle }
+ {
+ bodyfont .tl_set:N = \l__keythms_thmstyle_bodyfont_tl,
+ break .meta:n = { postheadspace = \newline }, % add error if postheadspace set
+ break .value_forbidden:n = true,
+ 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]{
+ \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
+ {
+ \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,
+ 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
+ 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} }
+
+\cs_new:Npn \keythms_thmstyle_headcmd_default:nnn #1#2#3
+ {
+ \keythms_thmstyle_thmname:n { #1 }
+ \keythms_thmstyle_thmnumber:n
+ { ~
+ \group_begin:
+ \exp_not:V \l__keythms_thmstyle_numberfont_tl
+ #2
+ \group_end:
+ }
+ \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:
+ }
+ }
+
+\prop_gset_from_keyval:Nn \g__keythms_thmstyle_defaultkeys_prop
+ { % support files may overwrite these defaults
+ bodyfont = \itshape,
+ headfont = \bfseries,
+ headindent = 0pt,
+ headpunct = {.},
+ headstyle = \keythms_thmstyle_headcmd_default:nnn{#1}{#2}{#3},
+ notebraces = {(}{)},
+ notefont = \fontseries\mddefault\upshape,
+ 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)
+ }
+\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
+ }
+
+\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 }
+ {
+ \cs_if_free:cTF { th@ #1 }
+ { \msg_error:nnn { keytheorems } { thmstyle-undefined } { #1 } }
+ { \keythms_thmstyle_declarestyle:nn { #1 } { #2 } }
+ }
+\NewDocumentCommand \providekeytheoremstyle { m +m }
+ {
+ \cs_if_free:cT { th@ #1 }
+ { \keythms_thmstyle_declarestyle:nn { #1 } { #2 } }
+ }
+\NewDocumentCommand \declarekeytheoremstyle { m +m }
+ {
+ \keythms_thmstyle_declarestyle:nn { #1 } { #2 }
+ }
+
+\@onlypreamble \newkeytheoremstyle
+\@onlypreamble \renewkeytheoremstyle
+\@onlypreamble \providekeytheoremstyle
+\@onlypreamble \declarekeytheoremstyle
+
+\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 }
+ \l__keythms_thmstyle_spaceabove_tl
+ \l__keythms_thmstyle_spacebelow_tl
+ \l__keythms_thmstyle_bodyfont_tl
+ \l__keythms_thmstyle_headindent_tl
+ \l__keythms_thmstyle_headfont_tl
+ \l__keythms_thmstyle_headpunct_tl
+ \l__keythms_thmstyle_postheadspace_tl
+ { \text_expand:n { \keythms_thmstyle_headcmd:nnn{##1}{##2}{##3} } }
+ % 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_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,
+ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Defining Theorems %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% FIX: reimplement these without \NewDocumentCommand and \SplitArgument
+\NewDocumentCommand \keythms_thm_setrefnames:nn
+ { 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
+ {
+ \cs_set:cpn { #1 autorefname } { #2 }
+ \IfPackageLoadedT { cleveref }
+ {
+ \tl_if_novalue:nTF { #3 }
+ { \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 }
+
+\NewDocumentCommand \keythms_thm_setRefnames:nn
+ { 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
+ {
+ \cs_set:cpn { #1 Autorefname } { #2 }
+ \IfPackageLoadedT { cleveref }
+ {
+ \tl_if_novalue:nTF { #3 }
+ { \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,
+ numbered .choice:,
+ numbered .default:n = true,
+ numbered / false .code:n = \bool_set_false:N \l__keythms_thm_numbered_bool,
+ 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 / yes .meta:n = { numbered = true },
+ numberlike .meta:n = { sibling = {#1} },
+ numberwithin .meta:n = { parent = {#1} },
+ parent .tl_set:N = \l__keythms_thm_parent_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,
+ preheadhook .tl_set:N = \l__keythms_thm_preheadhook_tl,
+ qed .tl_set:N = \l__keythms_thm_qed_tl,
+ qed .default:o = \c_novalue_tl,
+ % ^ distinguish between 'qed' and 'qed={}'
+ 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 .code:n =
+ {
+ \int_set:Nn \l__keythms_thm_tcbstate_int { 2 }
+ \tl_set:Nn \l__keythms_thm_tcbkeys_tl { #1 }
+ },
+ tcolorbox-no-titlebar .default:n = {},
+ title .meta:n = { name = {#1} },
+ within .meta:n = { parent = {#1} },
+ }
+
+\keys_precompile:nnN { keytheorems/thm }
+ {
+ leftmargin = 0pt,
+ name = \q_no_value,
+ numbered = true,
+ parent = {},
+ postfoothook = {},
+ postheadhook = {},
+ prefoothook = {},
+ preheadhook = {},
+ qed = \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_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 }
+
+\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_savedthmkeys_tl
+\tl_new:N \l__keythms_thmstyle_remark_savedthmkeys_tl
+\tl_new:N \l__keythms_thmstyle_definition_savedthmkeys_tl
+
+\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 }
+ % 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} }
+ }
+ {
+ % 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 _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 }
+ % 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
+ \tl_set:Ne \l__keythms_thm_name_tl
+ { \text_titlecase_first:n { #1 } }
+ }
+ % associate formatted name with envname in prop list
+ \prop_gput:NnV \g__keythms_thmnames_prop { #1 } \l__keythms_thm_name_tl
+ % Call correct \newtheorem variant
+ \bool_if:NTF \l__keythms_thm_unlessunique_bool
+ {
+ % [unq] is required since aux is read at begindocument
+ % (technically right before) which is after theorem is defined
+ \RequirePackage[unq]{unique}
+ \tl_if_empty:NTF \l__keythms_thm_parent_tl
+ {
+ \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 }
+ \bool_if:NTF \l__keythms_thm_numbered_bool
+ {
+ \tl_if_empty:NTF \l__keythms_thm_sibling_tl
+ {
+ \__keythms_thm_new_numbered:nV { #1 } \l__keythms_thm_name_tl
+ }
+ {
+ \exp_args:NnV \newaliascnt { #1 } \l__keythms_thm_sibling_tl
+ \__keythms_thm_new_sibling:nVn { #1 }
+ \l__keythms_thm_name_tl { #1 }
+ \aliascntresetthe { #1 }
+ }
+ }
+ {
+ \__keythms_thm_new_unnumbered:nV { #1 } \l__keythms_thm_name_tl
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_#1_tl }
+ {
+ \keythms_if_restating:F
+ { \refstepcounter{ keythms_unnumbered_dummyctr } }
+ }
+ }
+ }
+ {
+ \__keythms_thm_new_uuwithparent:nVV { #1 }
+ \l__keythms_thm_name_tl \l__keythms_thm_parent_tl
+ }
+ }
+ {
+ \bool_if:NTF \l__keythms_thm_numbered_bool
+ {
+ \tl_if_empty:NTF \l__keythms_thm_parent_tl
+ {
+ \tl_if_empty:NTF \l__keythms_thm_sibling_tl
+ {
+ \__keythms_thm_new_numbered:nV { #1 } \l__keythms_thm_name_tl
+ }
+ {
+ \exp_args:NnV \newaliascnt { #1 } \l__keythms_thm_sibling_tl
+ \__keythms_thm_new_sibling:nVn { #1 }
+ \l__keythms_thm_name_tl { #1 }
+ \aliascntresetthe { #1 }
+ }
+ }
+ {
+ \__keythms_thm_new_parent:nVV { #1 }
+ \l__keythms_thm_name_tl \l__keythms_thm_parent_tl
+ }
+ }
+ {
+ \__keythms_thm_new_unnumbered:nV { #1 } \l__keythms_thm_name_tl
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_#1_tl }
+ {
+ \keythms_if_restating:F
+ { \refstepcounter{ keythms_unnumbered_dummyctr } }
+ }
+ }
+ }
+ % Store theorem def and redefine it with keys
+ \keythms_keyify_theorem:n { #1 }
+ % define \<env>autorefname and \<env>Autorefname, might be redefined next
+ \exp_args:NnV \cs_set:cpn { #1 autorefname } \l__keythms_thm_name_tl
+ \exp_args:NnV \cs_set:cpn { #1 Autorefname } \l__keythms_thm_name_tl
+ % Set ref names
+ \quark_if_no_value:NF \l__keythms_thm_refname_tl
+ { \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
+ \int_compare:nNnTF { \l__keythms_thm_tcbstate_int } = { 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_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_margincode:nnn #1#2#3
+ {
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_#1_tl }
+ {
+ \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: }
+ }
+
+\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
+ }
+ \__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
+ \tcbset
+ {
+ 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 =
+ {
+ 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 }
+ }
+ }
+ }
+ }
+% what below is unnecessary? I really don't understand this code.
+\cs_new_protected:Npn \__keythms_thm_storedeferred@thm@head: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 % MB: if this is uncommented then spacing after sections is wrong
+ \everypar\dth@everypar
+ \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 }
+ {
+ \tl_if_novalue:nF { #2 } { \protected@edef\qedsymbol{#2} }
+ \pushQED{\qed}
+ }
+ \tl_gput_left:cn { g__keythms_thm_prefootfromkeys_#1_tl }
+ {
+ \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 }
+
+\cs_new_eq:NN \__keythms_thm_new:w \newtheorem
+
+\cs_new_protected:Npn \__keythms_thm_new_numbered:nn #1#2
+ { \__keythms_thm_new:w { #1 } { #2 } }
+\cs_generate_variant:Nn \__keythms_thm_new_numbered:nn { nV }
+
+\cs_new_protected:Npn \__keythms_thm_new_unnumbered:nn #1#2
+ { \__keythms_thm_new:w* { #1 } { #2 } }
+\cs_generate_variant:Nn \__keythms_thm_new_unnumbered:nn { nV }
+
+\cs_new_protected:Npn \__keythms_thm_new_parent:nnn #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
+ { \__keythms_thm_new:w { #1 } [ #3 ] { #2 } }
+\cs_generate_variant:Nn \__keythms_thm_new_sibling:nnn { nV }
+
+\cs_new_protected:Npn \__keythms_thm_new_uuwithparent:nnn #1#2#3
+ {
+ \cs_undefine:c { keythms_orig_nonumber_#1 } % for renew, declare
+ \__keythms_thm_new_unnumbered:nn { keythms_orig_nonumber_#1 } { #2 }
+ \__keythms_thm_new_parent:nnn { #1 } { #2 } { #3 }
+ \DeclareEnvironmentCopy { keythms_orig_withparent_#1 } { #1 }
+ \renewenvironment { #1 } % opt arg is implicit
+ {
+ \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}
+ }
+ {
+ \begin{keythms_orig_withparent_#1}
+ }
+ }
+ {
+ \ifuniq{ #1. \use:c {the #3} }
+ { \end{keythms_orig_nonumber_#1} }
+ { \end{keythms_orig_withparent_#1} }
+ }
+ }
+\cs_generate_variant:Nn \__keythms_thm_new_uuwithparent:nnn { nVV }
+
+% for getting notes with continues*, use nameref if available, otherwise ltproperties
+\hook_gput_code:nnn { begindocument } { . }
+ {
+ \IfPackageLoadedTF { nameref }
+ {
+ \cs_new:Npn \__keythms_thmuse_recordnote: { } % nameref takes care of this
+ \cs_new:Npn \__keythms_getrecordednote:n #1
+ {
+ \getrefbykeydefault{ #1 }{ name }{ }
+ }
+ }
+ {
+ \property_new:nnnn { keytheorems/recordednote } { now } { }
+ { \l__keythms_thmuse_note_tl }
+ \cs_new:Npn \__keythms_thmuse_recordnote:
+ {
+ \tl_if_empty:NF \l__keythms_thmuse_note_tl
+ {
+ \RecordProperties
+ { keythms_recordednote_\l__keythms_thmuse_label_tl }
+ { keytheorems/recordednote }
+ }
+ }
+ \cs_new:Npn \__keythms_getrecordednote:n #1
+ {
+ \property_ref:nn { keythms_recordednote_#1 }
+ { keytheorems/recordednote }
+ }
+ }
+ }
+
+\keys_define:nn { keytheorems/thmuse }
+ {
+ continues .tl_set:N = \l__keythms_thmuse_contlabel_tl,
+ continues* .code:n =
+ {
+ \keys_set:nn { keytheorems/thmuse } { continues = #1 }
+ \protected@edef \l__keythms_tmpa_tl { \__keythms_getrecordednote:n{#1} }
+ \tl_if_empty:NF \l__keythms_tmpa_tl
+ {
+ \keys_set:nn { keytheorems/thmuse }
+ { note = \l__keythms_tmpa_tl }
+ }
+ },
+ 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,
+ 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 = {},
+ 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 m +b }
+ { % ##1 = keys, ##2 = note, ##3 = theorem body
+ \__keythms_thm_prehead_code:n { #1 }
+ \begin{keythms_orig_#1}[{##2}]
+ \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 } { ##3 }
+ \__keythms_thm_tempstorerestatedata:nnn { #1 } { ##1 } { ##3 }
+ ##3
+ \__keythms_thm_prefoot_code:n { #1 }
+ \end{keythms_orig_#1}
+ \__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: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:nnn \__keythms_grab_begin:nnn
+ \cs_set_eq:NN \__keythms_withhooks_end:n \__keythms_grab_end:n
+ }
+ \__keythms_withhooks_begin:nnV { #1 } { ##1 } \l__keythms_thmuse_note_tl
+ }
+ {
+ \__keythms_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:nn
+ \exp_args:No \exp_not:o
+ {
+ \exp_after:wN \__keythms_use_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} }
+
+% 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
+ \begin{keythms_orig_#1}[{#3}]
+ \__keythms_thm_posthead_code:n { #1 }
+ \__keythms_thm_addcontentsdata:nnnn { #1 } { } { #2 } { }
+ \ignorespaces % I hope this is alright
+ }
+\cs_generate_variant:Nn \__keythms_withhooks_begin:nnn { nnV }
+\cs_new_protected:Npn \__keythms_withhooks_end:n #1
+ {
+ \__keythms_thm_prefoot_code:n { #1 }
+ \end{keythms_orig_#1}
+ \__keythms_thm_postfoot_code:n { #1 }
+ }
+\cs_new_protected:Npn \__keythms_grab_begin:nnn #1#2#3
+ { % #1 = theorem name, #2 = keys, #3 = note
+ \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_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} }
+
+%% 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_code:n #1
+ { % #1 = theorem name
+ \tl_if_empty:NF \l__keythms_thmuse_contlabel_tl
+ {
+ \tl_if_empty:NF \l__keythms_thmuse_note_tl
+ { \tl_put_right:Nn \l__keythms_thmuse_note_tl { , ~ } }
+ \tl_put_right:Ne \l__keythms_thmuse_note_tl
+ { \__keythms_thmuse_continues:V \l__keythms_thmuse_contlabel_tl }
+ \cs_set:cpn { the #1 }
+ {
+ \getrefnumber { \l__keythms_thmuse_contlabel_tl }
+ }
+ \cs_set_eq:cN { c@ #1 } \c@keythms_continues_dummyctr
+ \cs_set_eq:cN { theH #1 } \theHkeythms_continues_dummyctr
+ %\cs_set_eq:NN \setuniqmark \use_none:n % not the right fix
+ }
+ \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
+ \hook_use:n { keytheorems/#1/posthead }
+ \hook_use:n { keytheorems/allthms/posthead }
+ \tl_if_empty:NF \l__keythms_thmuse_label_tl
+ {
+ \label{ \l__keythms_thmuse_label_tl }
+ \__keythms_thmuse_recordnote:
+ }
+ \bool_if:NT \l__keythms_thmuse_listhack_bool
+ { % straight from thm-amsthm.sty
+ \leavevmode
+ \vspace{-\baselineskip}%
+ \par
+ \everypar{\setbox\z@\lastbox\everypar{}}%
+ }
+ }
+\cs_new_protected:Npn \__keythms_thm_prefoot_code:n #1
+ { % #1 = theorem name
+ \hook_use:n { keytheorems/allthms/prefoot }
+ \hook_use:n { keytheorems/#1/prefoot }
+ }
+\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 }
+ }
+\cs_new_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 }
+ { \exp_not:n { #3 } } % do we want any expansion here, perhaps
+ { \exp_not:n { #4 } } % with \text_expand:n ?
+ }
+ }
+ }
+\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
+ {
+ { #1 }
+ { \@currentlabel }
+ { \prop_to_keyval:N \g__keythms_thmuse_othercounters_prop }
+ { \exp_not:n { #2 } } % do we want any expansion here, perhaps
+ { \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 %%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\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 }
+ {
+ 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 { }
+% ^ initially a no-op, redefined where needed; important it's protected!
+\NewDocumentCommand \addtheoremcontentsline { m +m }
+ {
+ \addtocontents { thlist }
+ {
+ \KeyThmsContentsLine
+ { % copied from def of \addcontentsline
+ \protect\contentsline{#1}{#2}{\thepage}{}
+ \protected@file@percent
+ }
+ }
+ }
+\NewDocumentCommand \addtotheoremcontents { +m }
+ {
+ \addtocontents { thlist }
+ {
+ \KeyThmsContentsLine { #1 }
+ }
+ }
+
+\hook_gput_code:nnn { begindocument } { . }
+ {
+ \group_begin:
+ \cs_set_protected:Npn \KeyThmsSavedTheorem #1#2#3#4#5#6#7
+ {
+ \group_begin:
+ \keys_set:nn { keytheorems/storeatbegin } { #6 }
+ \tl_if_empty:NF \l__keythms_storeatbegin_store_tl
+ {
+ \cs_new_protected:cpn
+ { __keythms_getthm_ \l__keythms_storeatbegin_store_tl _theorem }
+ {
+ \__keythms_getthm_theorem:nnnnn
+ {#1}{#2}{#5}{#6}{#7}
+ }
+ \cs_new_protected:cpn
+ { __keythms_getthm_ \l__keythms_storeatbegin_store_tl _body }
+ {
+ \__keythms_getthm_body:nn {#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:nn {#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:
+ }
+
+\prg_new_conditional:Npnn \keythms_if_restating: { T, F, TF }
+ {
+ \bool_if:NTF \l__keythms_thmuse_restating_bool
+ { \prg_return_true: }
+ { \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
+ \group_begin:
+ \bool_set_true:N \l__keythms_thmuse_restating_bool
+ \prop_set_from_keyval:Nn \l__keythms_restate_counters_prop { #3 }
+ \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:nTF { #2 }
+ { \refstepcounter{keythms_restate_dummyctr} } % for unnumbered theorems
+ {
+ \cs_set:cpn { the #1 } { #2 }
+ \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
+ }
+ \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_orig_begin:nV { #1 } \l__keythms_thmuse_note_tl
+ \__keythms_thm_posthead_code:n { #1 }
+ #5
+ \__keythms_thm_prefoot_code:n { #1 }
+ \__keythms_orig_end:n { #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 }
+ }
+ \group_end:
+ }
+
+\cs_new_protected:Npn \__keythms_getthm_body:nn #1#2
+ { % #1 = restate counters, #2 = 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_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 }
+ }
+ \refstepcounter{keythms_restate_dummyctr}
+ % \hook_use:n { keytheorems/#1/restated } % FIX!
+ \hook_use:n { keytheorems/allthms/restated }
+ #2
+ \prop_map_inline:Nn \l__keythms_restate_counters_prop
+ {
+ \exp_args:Nnc \setcounter { ##1 }
+ { l_keythms_restate_current_##1_tl }
+ }
+ \group_end:
+ }
+
+\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:nn
+ \exp_args:No \exp_not:o
+ {
+ \exp_after:wN \__keythms_use_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 }
+ {
+ \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{??}
+ \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 } }
+ }
+ }
+
+%%%%%%%%%%%%%%%%%%%%%
+%%% Theorem Hooks %%%
+%%%%%%%%%%%%%%%%%%%%%
+
+\NewDocumentCommand \addtotheoremhook { O{allthms} m +m }
+ { % #1 = envname, #2 = hook, #3 = code
+ \__hook_if_declared:nTF { keytheorems/allthms/#2 }
+ {
+ \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.
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%%% List of Theorems %%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+\keys_define:nn { keytheorems/listof }
+ {
+ 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 } }
+ },
+ ignoreall .code:n =
+ { % in case called before theorem defined
+ \hook_gput_code:nnn { begindocument/before } { keytheorems }
+ {
+ \prop_map_inline:Nn \g__keythms_thmnames_prop
+ { \__keythms_listof_ignore_aux:n { ##1 } }
+ }
+ },
+ 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 =
+ {
+ \hook_gput_code:nnn { begindocument/before } { keytheorems }
+ { \keythms_listof_onlynumbered:n { #1 } }
+ },
+ onlynumbered .default:n = \q_no_value,
+ 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} }
+ }
+ },
+ seq .code:n =
+ {
+ \hook_gput_code:nnn { begindocument/before } { keytheorems }
+ { \keythms_listof_showseq:n { #1 } }
+ },
+ show .code:n =
+ {
+ \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 }
+ {
+ \prop_map_inline:Nn \g__keythms_thmnames_prop
+ { \__keythms_listof_show_aux:n { ##1 } }
+ }
+ },
+ 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
+ \keys_define:nn { keytheorems/listof }
+ {
+ 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 } }
+ },
+ 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 } }
+ },
+ }
+ }
+
+\NewDocumentCommand \keytheoremlistset { +m }
+ {
+ \keys_set:nn { keytheorems/listof } { #1 }
+ }
+
+\cs_new_protected:Npn \keythms_listof_ignore:n #1
+ {
+ \clist_map_inline:nn { #1 } { \__keythms_listof_ignore_aux:n { ##1 } }
+ }
+\cs_new_protected:Npn \__keythms_listof_ignore_aux:n #1
+ {
+ \cs_set_protected:cpn { __keythms_thmitem_#1:nnnnnn } ##1##2##3##4##5##6
+ { }
+ }
+
+\cs_new_protected:Npn \keythms_listof_show:n #1
+ {
+ \clist_map_inline:nn { #1 } { \__keythms_listof_show_aux:n { ##1 } }
+ }
+\cs_new_protected:Npn \__keythms_listof_show_aux:n #1
+ {
+ \cs_set_protected:cpn { __keythms_thmitem_#1:nnnnnn } ##1##2##3##4##5##6
+ {
+ \__keythms_listof_listcmd_setup:nn { ##5 }
+ {
+ \keythms_listof_listcmd:nnnnnnn
+ {#1}{##1}{##2}{##3}{##4}{##5}{##6}
+ }
+ }
+ }
+
+\cs_new_protected:Npn \keythms_listof_onlynamed:n #1
+ {
+ \quark_if_no_value:nTF { #1 }
+ {
+ \prop_map_inline:Nn \g__keythms_thmnames_prop
+ { \__keythms_listof_onlynamed_aux:n { ##1 } }
+ }
+ {
+ \clist_map_inline:nn { #1 }
+ { \__keythms_listof_onlynamed_aux:n { ##1 } }
+ }
+ }
+\cs_new_protected:Npn \__keythms_listof_onlynamed_aux:n #1
+ {
+ \cs_set_protected:cpn { __keythms_thmitem_#1:nnnnnn } ##1##2##3##4##5##6
+ {
+ \__keythms_listof_listcmd_setup:nn { ##5 }
+ {
+ \tl_if_empty:NF \l__keythms_listofheading_note_tl
+ {
+ \keythms_listof_listcmd:nnnnnnn
+ {#1}{##1}{##2}{##3}{##4}{##5}{##6}
+ }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \keythms_listof_onlynumbered:n #1
+ {
+ \quark_if_no_value:nTF { #1 }
+ {
+ \prop_map_inline:Nn \g__keythms_thmnames_prop
+ { \__keythms_listof_onlynumbered_aux:n { ##1 } }
+ }
+ {
+ \clist_map_inline:nn { #1 }
+ { \__keythms_listof_onlynumbered_aux:n { ##1 } }
+ }
+ }
+\cs_new_protected:Npn \__keythms_listof_onlynumbered_aux:n #1
+ {
+ \cs_set_protected:cpn { __keythms_thmitem_#1:nnnnnn } ##1##2##3##4##5##6
+ {
+ \__keythms_listof_listcmd_setup:nn { ##5 }
+ {
+ \tl_if_empty:nF { ##1 }
+ {
+ \keythms_listof_listcmd:nnnnnnn
+ {#1}{##1}{##2}{##3}{##4}{##5}{##6}
+ }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \keythms_listof_showseq:n #1
+ {
+ \prop_map_inline:Nn \g__keythms_thmnames_prop
+ { \__keythms_listof_showseq_aux:nn { #1 } { ##1 } }
+ }
+\cs_new_protected:Npn \__keythms_listof_showseq_aux:nn #1#2
+ { % #1 = seq name, #2 = theorem name
+ \cs_set_protected:cpn { __keythms_thmitem_#2:nnnnnn } ##1##2##3##4##5##6
+ {
+ \__keythms_listof_listcmd_setup:nn { ##5 }
+ {
+ \tl_if_eq:NnT \l__keythms_listofheading_seq_tl { #1 }
+ {
+ \keythms_listof_listcmd:nnnnnnn
+ {#2}{##1}{##2}{##3}{##4}{##5}{##6}
+ }
+ }
+ }
+ }
+
+% 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 }
+ {
+ 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} }
+ \tl_if_empty:NF \l__keythms_tmpa_tl
+ {
+ \keys_set:nn { keytheorems/listofheading }
+ { note = \l__keythms_tmpa_tl }
+ }
+ },
+ 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_printnote:
+ {
+ \tl_if_empty:NTF \l__keythms_listofheading_shortnote_tl
+ {
+ \tl_if_empty:NF \l__keythms_listofheading_note_tl
+ { \__keythms_listof_notecmd:n { \l__keythms_listofheading_note_tl } }
+ }
+ {
+ \__keythms_listof_notecmd:n { \l__keythms_listofheading_shortnote_tl }
+ }
+ }
+
+\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 }
+ {
+ \__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 }
+ {
+ \bool_if:NF \l__keythms_listof_nocont_bool
+ {
+ \tl_if_empty:NF \l__keythms_listofheading_note_tl
+ {
+ \tl_put_right:Nn \l__keythms_listofheading_note_tl { , ~ }
+ }
+ \tl_put_right:Nn \l__keythms_listofheading_note_tl
+ {
+ \__keythms_thmuse_continues:V \l__keythms_listofheading_contlabel_tl
+ }
+ \cs_set_eq:NN \pageref \__keythms_listof_pagerefnolink:w % always no link
+ #2
+ }
+ }
+ \group_end:
+ }
+
+\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} } }
+
+\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:
+
+\NewDocumentCommand \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_protected:Npn \KeyThmsAddvspace { \addvspace }
+ }
+ \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 }
+ }
+ \bool_if:NT \l__keythms_listof_swapnumber_bool
+ {
+ \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
+% things like marks, sectioning command, etc.
+
+\hook_gput_code:nnn { enddocument } { . }
+ {
+ \bool_if:NTF \g__keythms_listof_writefile_bool
+ {
+ \legacy_if:nT { @filesw }
+ {
+ \iow_new:N \tf@thlist
+ \iow_open:Nn \tf@thlist { \c_sys_jobname_str.thlist }
+ }
+ }
+ { % 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__keythms_tmpa_iow { \c_sys_jobname_str.thlist }
+ \iow_close:N \g__keythms_tmpa_iow
+ }
+ }
+ }
+
+% chaptervspacehack (code translated from thmtools)
+\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
+\cs_new_protected:Npn \keythms_listof_chaptervspacehack: { }
+\cs_if_exist:cT { c@chapter }
+ {
+ \cs_set_protected:Npn \keythms_listof_chaptervspacehack:
+ {
+ \int_compare:nNnF
+ { \value{chapter} } = { \g_keythms_listof_prevchapter_int }
+ {
+ \addtocontents{ thlist }
+ {
+ \KeyThmsAddvspace
+ { \keythms@listof@chaptervspace@dim }
+ }
+ \int_gset:Nn \g_keythms_listof_prevchapter_int { \value{chapter} }
+ }
+ }
+ }
+
+%%%%%%%%%%%%%%%%
+%%% \Autoref %%%
+%%%%%%%%%%%%%%%%
+
+\ProvideDocumentCommand { \Autoref } { s m }
+ {
+ \IfPackageLoadedTF { hyperref }
+ {
+ \group_begin:
+ \cs_set_eq:NN \HyRef@testreftype \__keythms_Autoref_testreftype:w
+ \IfBooleanTF { #1 } { \autoref*{#2} } { \autoref{#2} }
+ \group_end:
+ }
+ { \msg_error:nn { keytheorems } { hyperref-Autoref } }
+ }
+
+\cs_new_protected:Npn \__keythms_Autoref_testreftype:w #1.#2\\
+ {
+ \cs_if_exist:cTF { #1 Autorefname }
+ {
+ \cs_set:Npe \HyRef@currentHtag
+ {
+ \exp_not:N \use:c { #1 Autorefname }
+ \exp_not:N \c_space_token
+ }
+ }
+ { \msg_warning:nnn { keytheorems } { no-Autorefname } { #1 } }
+ }
+
+%%%%%%%%%%%%%%%%%%%
+%%% Global Keys %%%
+%%%%%%%%%%%%%%%%%%%
+
+\keys_define:nn { keytheorems }
+ {
+ 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,
+ 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 }
+ },
+ }
+ },
+ 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,
+ }
+
+\cs_generate_variant:Nn \__keythms_thmuse_continues:n { V }
+
+\NewDocumentCommand \keytheoremset { +m }
+ { % #1 = keys
+ \keys_set:nn { keytheorems } { #1 }
+ }
+
+\cs_new_protected:Npn \__keythms_overload_code:
+ {
+ \RenewDocumentCommand { \newtheorem } { s m o m o }
+ {
+ \IfBooleanTF { ##1 }
+ { \keythms_thm_newkeythm:nn { ##2 } { name=##4, numbered=no } }
+ {
+ \IfNoValueTF { ##3 }
+ {
+ \IfNoValueTF { ##5 }
+ { \keythms_thm_newkeythm:nn { ##2 } { name=##4 } }
+ { \keythms_thm_newkeythm:nn { ##2 } { name=##4, parent=##5 } }
+ }
+ { \keythms_thm_newkeythm:nn { ##2 } { name=##4, sibling=##3 } }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \__keythms_thmtoolscompat_code:
+ {
+ \bool_gset_true:N \g__keythms_thmtoolscompat_bool
+ \__keythms_overload_code: % since thmtools overwrites \newtheorem
+ \ProvideDocumentCommand { \declaretheoremstyle } { +O{} m }
+ {
+ \declarekeytheoremstyle { ##2 } { ##1 }
+ }
+ \ProvideDocumentCommand { \declaretheorem } { +O{} m }
+ {
+ \newkeytheorem { ##2 } [ ##1 ]
+ }
+ \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_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]
+ }
+ {
+ \end{##2}
+ \cs_new_protected:cpn { ##3 }
+ { % make \foo and \foo* identical
+ \peek_meaning_remove:NTF *
+ { \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 { \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 }
+ {
+ \addtotheoremhook [ ##1 ] { prehead } { ##2 }
+ }
+ \ProvideDocumentCommand { \addtotheorempostheadhook } { O{allthms} +m }
+ {
+ \addtotheoremhook [ ##1 ] { posthead } { ##2 }
+ }
+ \ProvideDocumentCommand { \addtotheoremprefoothook } { O{allthms} +m }
+ {
+ \addtotheoremhook [ ##1 ] { prefoot } { ##2 }
+ }
+ \ProvideDocumentCommand { \addtotheorempostfoothook } { O{allthms} +m }
+ {
+ \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 },
+ 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 },
+ }
+ \keys_define:nn { keytheorems/thm/thmbox }
+ {
+ L .code:n =
+ {
+ \clist_put_right:Nn \l__keythms_tcbthmbox_keys_clist
+ { keythms_tcbthmbox_L }
+ },
+ M .code:n =
+ {
+ \clist_put_right:Nn \l__keythms_tcbthmbox_keys_clist
+ { keythms_tcbthmbox_M }
+ },
+ S .code:n =
+ {
+ \clist_put_right:Nn \l__keythms_tcbthmbox_keys_clist
+ { keythms_tcbthmbox_S }
+ },
+ underline .choice:,
+ underline / true .code:n = {},
+ underline / false .code:n =
+ {
+ \clist_put_right:Nn \l__keythms_tcbthmbox_keys_clist
+ { boxed~title~style={bottomrule=0pt} }
+ },
+ underline .default:n = true,
+ nounderline .meta:n = { underline=false },
+ cut .choice:,
+ cut / true .code:n = {},
+ cut / false .code:n =
+ {
+ \clist_put_right:Nn \l__keythms_tcbthmbox_keys_clist { unbreakable }
+ },
+ cut .default:n = true,
+ nocut .meta:n = { cut=false },
+ 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 =
+ {
+ \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 =
+ {
+ \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 =
+ {
+ \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 =
+ {
+ \tl_gput_right:cn { g__keythms_thm_preheadfromkeys_ \l__keythms_thm_envname_tl _tl }
+ { \dim_set:Nn \l_keythms_tcbthmbox_vskip_dim { ##1 } }
+ },
+ }
+ \dim_new:N \l_keythms_tcbthmbox_thickness_dim
+ \dim_set:Nn \l_keythms_tcbthmbox_thickness_dim { 0.6pt }
+ \dim_new:N \l_keythms_tcbthmbox_leftmargin_dim
+ \dim_set:Nn \l_keythms_tcbthmbox_leftmargin_dim { 0.7\parindent } % use \parindent? thmbox does
+ \dim_new:N \l_keythms_tcbthmbox_rightmargin_dim
+ \dim_set:Nn \l_keythms_tcbthmbox_rightmargin_dim { 0pt }
+ \dim_new:N \l_keythms_tcbthmbox_hskip_dim
+ \dim_set:Nn \l_keythms_tcbthmbox_hskip_dim { 0.2em }
+ \dim_new:N \l_keythms_tcbthmbox_vskip_dim
+ \dim_set:Nn \l_keythms_tcbthmbox_vskip_dim { 0.2em }
+ \msg_new:nnn { keytheorems } { mdframed-undefined }
+ {
+ keytheorems~does~not~define~the~'mdframed'~key.~
+ Consider~using~the~'tcolorbox'~key~instead.
+ }
+ \keys_define:nn { keytheorems/thm }
+ {
+ shaded .code:n =
+ {
+ \clist_clear:N \l__keythms_tcbshaded_keys_clist
+ \keys_set:nn { keytheorems/thm/shaded } { ##1 }
+ % FIX: surely a better way to do this
+ \RequirePackage{tcolorbox}
+ \pgfkeysifdefined{/tcb/keythms_tcbshaded_default/.@cmd} % even worth it?
+ {}
+ {
+ \tcbset % wish I could do this outside of key but can't assume tcb loaded
+ {
+ keythms_tcbshaded_default/.style=
+ {
+ sharp~corners = all,
+ boxrule = 0pt,
+ left = 0pt, right = 0pt,
+ top = 0pt, bottom = 0pt,
+ parbox = false,
+ }
+ }
+ }
+ \keys_set:ne { keytheorems/thm }
+ {
+ tcolorbox-no-titlebar =
+ {
+ keythms_tcbshaded_default,
+ \l__keythms_tcbshaded_keys_clist
+ }
+ }
+ },
+ thmbox .code:n = % adapted from https://tex.stackexchange.com/a/236230/208544
+ {
+ \clist_clear:N \l__keythms_tcbthmbox_keys_clist
+ \keys_set:nn { keytheorems/thm/thmbox } { ##1 }
+ % FIX: surely a better way to do this
+ \RequirePackage{tcolorbox}
+ \tcbuselibrary{skins,breakable}
+ \pgfkeysifdefined{/tcb/keythms_tcbthmbox_default/.@cmd} % even worth it?
+ {}
+ {
+ \tcbset{
+ keythms_tcbthmbox_default/.style={
+ enhanced,
+ breakable,
+ sharp~corners=all,
+ right=\l_keythms_tcbthmbox_hskip_dim,
+ left=\l_keythms_tcbthmbox_hskip_dim,
+ top=\l_keythms_tcbthmbox_vskip_dim,
+ bottom=\l_keythms_tcbthmbox_vskip_dim,
+ coltitle=black,
+ frame~engine=empty,
+ interior~titled~engine=empty,
+ interior~engine=empty,
+ extras~broken={
+ frame~engine=empty,
+ interior~titled~engine=empty,
+ interior~engine=empty
+ },
+ parbox=false,
+ % even though frame isn't drawn, makes spacing correct
+ boxrule=0.5\l_keythms_tcbthmbox_thickness_dim,
+ attach~boxed~title~to~top~left={
+ xshift=-\l_keythms_tcbthmbox_leftmargin_dim,
+ },
+ boxed~title~style={
+ empty,
+ size=minimal,
+ bottom=0.3ex,
+ top=0ex,
+ % ditto
+ bottomrule=0.5\l_keythms_tcbthmbox_thickness_dim,
+ },
+ left~skip=\l_keythms_tcbthmbox_leftmargin_dim,
+ right~skip=\l_keythms_tcbthmbox_rightmargin_dim,
+ overlay~unbroken={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (title.south~west)
+ --
+ (title.south~east);
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ |-
+ ([xshift=10mm]frame.south~west);
+ },
+ overlay~first={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (title.south~west)
+ --
+ (title.south~east);
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ --
+ (frame.south~west);
+ },
+ overlay~middle={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ --
+ (frame.south~west);
+ },
+ overlay~last={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ |-
+ ([xshift=10mm]frame.south~west);
+ }
+ },
+ keythms_tcbthmbox_L/.style={
+ overlay~unbroken={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (title.south~west)
+ --
+ (title.south~east);
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ |-
+ (frame.south~east)
+ -|
+ (frame.north~east);
+ },
+ overlay~first={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (title.south~west)
+ --
+ (title.south~east);
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ --
+ (frame.south~west);
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~east)
+ --
+ (frame.south~east);
+ },
+ overlay~middle={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ --
+ (frame.south~west);
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~east)
+ --
+ (frame.south~east);
+ },
+ overlay~last={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ |-
+ (frame.south~east)
+ -|
+ (frame.north~east);
+ }
+ },
+ keythms_tcbthmbox_M/.style={},
+ keythms_tcbthmbox_S/.style={ % first and middle same as M
+ overlay~unbroken={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (title.south~west)
+ --
+ (title.south~east);
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ --
+ (frame.south~west);
+ },
+ overlay~last={
+ \draw[line~width=\l_keythms_tcbthmbox_thickness_dim]
+ (frame.north~west)
+ --
+ (frame.south~west);
+ }
+ },
+ }
+ }
+ \keys_set:ne { keytheorems/thm }
+ {
+ tcolorbox =
+ {
+ keythms_tcbthmbox_default,
+ \l__keythms_tcbthmbox_keys_clist
+ }
+ }
+ },
+ 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:nnn \__keythms_grab_begin:nnn
+ \cs_set_eq:NN \__keythms_withhooks_end:n \__keythms_grab_end:n
+ }
+
+\hook_gput_code:nnn { begindocument/before } { . }
+ { % use 'provide' in case user defines their own translation in preamble
+ \ProvideTranslationFallback { keythms_listof_title } { List~of~Theorems }
+ \ProvideTranslationFallback { keythms_continues } { continuing~from~p.\, }
+ \bool_if:NT \g__keythms_autotranslate_bool
+ {
+ \ProvideTranslation { English } { keythms_listof_title } { List~of~Theorems }
+ \ProvideTranslation { English } { keythms_continues } { continuing~from~p.\, }
+ % from DeepL; I don't know these languages!
+ \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 { Italian } { keythms_listof_title } { Elenco~dei~teoremi }
+ \ProvideTranslation { Italian } { keythms_continues } { continua~da~p.\, }
+ \ProvideTranslation { Spanish } { keythms_listof_title } { Lista~de~teoremas }
+ \ProvideTranslation { Spanish } { keythms_continues } { continúa~de~la~p.\, }
+ \ProvideTranslation { Portuguese } { keythms_listof_title } { Lista~de~teoremas }
+ \ProvideTranslation { Portuguese } { keythms_continues } { continua~da~p.\, }
+ }
+ }
+
+\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 } }
+ },
+ }
+ \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 }
+ {
+ \SetTemplateKeys{ block }{ display }
+ {
+ leftmargin = #2,
+ rightmargin = #3,
+ }
+ }
+ }
+ }
+ }
+ { }
+
+\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/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/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 95e0590b7bb..552e502f817 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-05-27}%
+\def\ExplFileDate{2024-11-02}%
\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
@@ -6138,6 +6135,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 +6468,8 @@ 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_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:
@@ -8385,8 +8383,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
\cs_new:Npn \__clist_remove_all:
{ \exp_after:wN \__clist_remove_all:w \__clist_tmp:w , }
\cs_new:Npn \__clist_remove_all:w #1 , \s__clist_mark , #2 , { \exp_not:n {#1} }
-\cs_generate_variant:Nn \clist_remove_all:Nn { c , NV , cV }
-\cs_generate_variant:Nn \clist_gremove_all:Nn { c , NV , cV }
+\cs_generate_variant:Nn \clist_remove_all:Nn { c , NV , cV , Ne , ce }
+\cs_generate_variant:Nn \clist_gremove_all:Nn { c , NV , cV , Ne , ce }
\cs_new_protected:Npn \clist_reverse:N #1
{ \__kernel_tl_set:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
\cs_new_protected:Npn \clist_greverse:N #1
@@ -12952,8 +12950,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 +13377,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 +13470,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 }
@@ -13859,8 +13857,8 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\bool_if:NTF \l__keys_no_value_bool
{
- \exp_after:wN \__keys_define_code:w
- \l__keys_property_str \s__keys_stop
+ \__keys_define_code:nnn
+ { \use:c { \c__keys_props_root_str \l__keys_property_str } {#1} }
{ \use:c { \c__keys_props_root_str \l__keys_property_str } }
{
\msg_error:nnee { keys } { property-requires-value }
@@ -13869,9 +13867,27 @@ Type H <return> for immediate help}\def~{\errmessage{%
}
{ \use:c { \c__keys_props_root_str \l__keys_property_str } {#1} }
}
-\exp_last_unbraced:NNNNo
- \cs_new:Npn \__keys_define_code:w #1 \c_colon_str #2 \s__keys_stop
- { \tl_if_empty:nTF {#2} }
+\cs_new:Npe \__keys_define_code:nnn
+ {
+ \exp_not:N \exp_after:wN \exp_not:N \__keys_define_code:w
+ \exp_not:N \l__keys_property_str
+ \c_colon_str \c_colon_str
+ \exp_not:N \s__keys_stop
+ }
+\use:e
+ {
+ \cs_new:Npn \exp_not:N \__keys_define_code:w
+ #1 \c_colon_str #2 \c_colon_str #3 \exp_not:N \s__keys_stop
+ }
+ {
+ \tl_if_empty:nTF {#3}
+ { \use_i:nnn }
+ {
+ \tl_if_empty:nTF {#2}
+ { \use_ii:nnn }
+ { \use_iii:nnn }
+ }
+ }
\cs_new_protected:Npn \__keys_bool_set:Nn #1#2
{ \__keys_bool_set:Nnnn #1 {#2} { true } { false } }
\cs_generate_variant:Nn \__keys_bool_set:Nn { c }
@@ -17419,8 +17435,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
@@ -32245,7 +32261,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 }
@@ -32257,7 +32273,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 }
@@ -32278,6 +32294,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
@@ -33722,15 +33740,17 @@ Type H <return> for immediate help}\def~{\errmessage{%
\tl_set:ce { l__codepoint_ #1 _block_tl }
{ \int_eval:n { \tl_use:c { l__codepoint_ #1 _block_tl } + 1 } }
}
- \prg_replicate:nn {#2}
+ \int_step_inline:nnn
+ { \tl_use:c { l__codepoint_ #1 _pos_tl } + 1 }
+ { \tl_use:c { l__codepoint_ #1 _pos_tl } + #2 }
{
- \tl_set:ce { l__codepoint_ #1 _pos_tl }
- { \int_eval:n { \tl_use:c { l__codepoint_ #1 _pos_tl } + 1 } }
\exp_args:Nc \__kernel_intarray_gset:Nnn
{ g__codepoint_ #1 _index_intarray }
- { \tl_use:c { l__codepoint_ #1 _pos_tl } }
+ {##1}
\l__codepoint_matched_block_tl
}
+ \tl_set:ce { l__codepoint_ #1 _pos_tl }
+ { \int_eval:n { \tl_use:c { l__codepoint_ #1 _pos_tl } + #2 } }
\clist_clear:c { l__codepoint_ #1 _block_clist }
}
\cs_set_protected:Npn \__codepoint_finalise_blocks:
@@ -37377,10 +37397,10 @@ Type H <return> for immediate help}\def~{\errmessage{%
{ \text_uppercase:nn {#1} {#2} }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:n }
\cs_new:Npn \tl_mixed_case:n #1
- { \text_titlecase_first:n {#1} }
+ { \text_titlecase_first:n { \text_lowercase:n {#1} } }
\__kernel_patch_deprecation:nnNNpn { 2020-01-03 } { \text_titlecase_first:nn }
\cs_new:Npn \tl_mixed_case:nn #1#2
- { \text_titlecase_first:nn {#1} {#2} }
+ { \text_titlecase_first:nn {#1} { \text_lowercase:n {#2} } }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:Nn }
\cs_new:Npn \tl_case:Nn { \token_case_meaning:Nn }
\__kernel_patch_deprecation:nnNNpn { 2022-05-23 } { \token_case_meaning:NnT }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 851886310a1..c0871d0daaa 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-05-27}%
+\def\ExplFileDate{2024-11-02}%
\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 d7d58039ca2..3eb3a3d63cc 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-05-27}%
+\def\ExplFileDate{2024-11-02}%
\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 cf17f7356be..15c04cee809 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-05-27}%
+\def\ExplFileDate{2024-11-02}%
\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 6c0cdc45d0f..78d83046291 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-05-27}{}{L3 Debugging support}
+\ProvidesExplFile{l3debug.def}{2024-11-02}{}{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 34540214876..8edacf2f0c4 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-05-27}{}
+\ProvidesExplClass{l3doc}{2024-11-02}{}
{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,23 @@
\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:
+ \bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }{ \sys_if_engine_xetex_p: }
+ {
+ \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
@@ -789,17 +800,20 @@
\cs_generate_variant:Nn \__codedoc_get_hyper_target:nN { o , e }
\cs_new_protected:Npn \__codedoc_names_get_seq:nN #1#2
{
- \__kernel_tl_set:Nx \l__codedoc_tmpa_tl { \tl_to_str:n {#1} }
\bool_if:NTF \l__codedoc_names_verb_bool
{
\seq_clear:N #2
- \seq_put_right:NV #2 \l__codedoc_tmpa_tl
+ \seq_put_right:No #2 { \tl_to_str:n {#1} }
}
{
+ \tl_set:Nn \l__codedoc_tmpa_tl {#1}
\tl_remove_all:Ne \l__codedoc_tmpa_tl
- { \iow_char:N \^^M \c_percent_str }
+ { \exp_not:N \obeyedline \c_percent_str }
+ \tl_remove_all:Ne \l__codedoc_tmpa_tl
+ { \exp_not:N \obeyedline }
+ \__kernel_tl_set:Nx \l__codedoc_tmpa_tl { \tl_to_str:N \l__codedoc_tmpa_tl }
\tl_remove_all:Ne \l__codedoc_tmpa_tl
- { \token_to_str:N \obeyedline \c_space_tl \c_percent_str }
+ { \iow_char:N \^^M \c_percent_str }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \tl_to_str:n { ^ ^ A } }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^I }
\tl_remove_all:Ne \l__codedoc_tmpa_tl { \iow_char:N \^^M }
@@ -1023,7 +1037,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:
@@ -1059,7 +1073,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 }
}
@@ -1087,7 +1101,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}
@@ -1136,7 +1150,6 @@
{ \__codedoc_typeset_variant_list:nN {#1} #2 }
\\
}
-\cs_generate_variant:Nn \__codedoc_typeset_function_block:nN { e }
\cs_new_protected:Npn \__codedoc_function_index:n #1
{
\seq_gput_right:Nn \g_doc_functions_seq {#1}
@@ -1234,7 +1247,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
@@ -1789,7 +1802,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}
}
}
@@ -1883,7 +1896,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 {}
@@ -2186,7 +2199,6 @@
{#2}
\l__codedoc_index_internal_bool
}
-\cs_generate_variant:Nn \__codedoc_special_index:nn { o }
\tl_new:N \l__codedoc_index_escaped_macro_tl
\tl_new:N \l__codedoc_index_escaped_key_tl
\cs_new_protected:Npn \__codedoc_special_index_module:nnnnN #1#2#3#4#5
diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
index 23dc455743d..0b83c0dd3f7 100644
--- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3keys2e}{2024-05-08}{}
+\ProvidesExplPackage{l3keys2e}{2024-08-16}{}
{LaTeX2e option processing using LaTeX3 keys}
\cs_if_exist:NT \ProcessKeysOptions
{ \file_input_stop: }
diff --git a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
index e63242d19ac..975f8bdd427 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{xfp}{2024-05-08}{}
+\ProvidesExplPackage{xfp}{2024-08-16}{}
{L3 Floating point unit}
\ProvideExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
\ProvideExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} }
diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
index e87a832432f..9a7eab1fe1a 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
@@ -60,7 +60,7 @@
}
}
\ExplSyntaxOff
-\ProvidesExplPackage{xparse}{2024-05-08}{}
+\ProvidesExplPackage{xparse}{2024-08-16}{}
{L3 Experimental document command parser}
\clist_new:N \l__cmd_options_clist
\DeclareOption* { \clist_put_right:NV \l__cmd_options_clist \CurrentOption }
@@ -239,7 +239,22 @@
{
\__kernel_cmd_if_xparse:NTF #1
{
- \tl_set:Ne \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
+ \tl_set:Ne \ArgumentSpecification
+ {
+ \exp_args:No \tl_if_head_eq_meaning:nNTF {#1} \__cmd_start_optimized:
+ {
+ \prg_replicate:nn
+ {
+ \str_count:e
+ {
+ \exp_args:Nc \cs_parameter_spec:N
+ { \cs_to_str:N #1 \c_space_tl code }
+ } / 2
+ }
+ { m }
+ }
+ { \tl_item:Nn #1 { 2 } }
+ }
#2
}
{#3}
diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
index 04c80418890..31aa3d9a5ee 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
@@ -25,7 +25,7 @@
\endinput
}
{%
- \ProvidesExplPackage{xtemplate}{2024-05-08}{}
+ \ProvidesExplPackage{xtemplate}{2024-08-16}{}
{L3 Experimental prototype document functions}
\long\protected\def\DeclareRestrictedTemplate#1#2#3#4{%
\DeclareTemplateCopy{#1}{#3}{#2}%
diff --git a/Master/texmf-dist/tex/latex/lastpage/lastpage.sty b/Master/texmf-dist/tex/latex/lastpage/lastpage.sty
index 154c0bdf712..ccbf32b59c4 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpage.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpage.sty
@@ -9,7 +9,7 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-04-27 v2.1a
+%% Version: 2024-07-07 v2.1c
%% Info: Refers to last page's name
%%
%% Copyright (C) 2010 - 2024 by
@@ -32,10 +32,9 @@
%%
%% This package was invented by Jeffrey P. Goldberg.
%% I thought that a replacement 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.
+%% 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.
%% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
%%
%% While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}"
@@ -60,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/04/27 v2.1a lastpage: 2.09 or 2e? (HMM)]\relax\RequirePackage{lastpage2e}}
+\def\loadlastpage{\ProvidesPackage{lastpage}[2024/07/07 v2.1c 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 f93a6d0f1ae..feb652121fa 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpage209.sty
@@ -9,7 +9,7 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-04-27 v2.1a
+%% Version: 2024-07-07 v2.1c
%% Info: Refers to last page's name
%%
%% Copyright (C) 2010 - 2024 by
@@ -32,10 +32,9 @@
%%
%% This package was invented by Jeffrey P. Goldberg.
%% I thought that a replacement 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.
+%% 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.
%% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
%%
%% While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}"
diff --git a/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty b/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty
index 50d8183d2a5..e3b40d7be58 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpage2e.sty
@@ -9,7 +9,7 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-04-27 v2.1a
+%% Version: 2024-07-07 v2.1c
%% Info: Refers to last page's name
%%
%% Copyright (C) 2010 - 2024 by
@@ -32,10 +32,9 @@
%%
%% This package was invented by Jeffrey P. Goldberg.
%% I thought that a replacement 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.
+%% 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.
%% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
%%
%% While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}"
@@ -59,7 +58,7 @@
%%
%% Part of the "lastpage" package
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{lastpage2e}[2024/04/27 v2.1a %
+\ProvidesPackage{lastpage2e}[2024/07/07 v2.1c %
Decide which 2e lastpage version to use (HMM)]
\@ifl@t@r\fmtversion{2023/06/01}{\RequirePackage{lastpagemodern}}{%
\RequirePackage{lastpageclassic}}
diff --git a/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty b/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty
index d7a4b6ce9af..88285efc2c6 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpageclassic.sty
@@ -9,7 +9,7 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-04-27 v2.1a
+%% Version: 2024-07-07 v2.1c
%% Info: Refers to last page's name
%%
%% Copyright (C) 2010 - 2024 by
@@ -32,10 +32,9 @@
%%
%% This package was invented by Jeffrey P. Goldberg.
%% I thought that a replacement 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.
+%% 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.
%% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
%%
%% While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}"
@@ -59,7 +58,7 @@
%%
%% Part of the "lastpage" package
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{lastpageclassic}[2024/04/27 v2.1a %
+\ProvidesPackage{lastpageclassic}[2024/07/07 v2.1c %
Refers to last page's name (HMM; JPG)]
%% allows for things like "Page \thepage{} of \pageref{LastPage}"
%% to get "Page 7 of 9"
diff --git a/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty b/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty
index efeedd84bb3..abdec5b0852 100644
--- a/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty
+++ b/Master/texmf-dist/tex/latex/lastpage/lastpagemodern.sty
@@ -9,7 +9,7 @@
%% This is a generated file.
%%
%% Project: lastpage
-%% Version: 2024-04-27 v2.1a
+%% Version: 2024-07-07 v2.1c
%% Info: Refers to last page's name
%%
%% Copyright (C) 2010 - 2024 by
@@ -32,10 +32,9 @@
%%
%% This package was invented by Jeffrey P. Goldberg.
%% I thought that a replacement 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.
+%% 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.
%% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
%%
%% While this package allows for things like "Page slash thepage{} of slash pageref{LastPage}"
@@ -59,7 +58,7 @@
%%
%% Part of the "lastpage" package
\NeedsTeXFormat{LaTeX2e}[2023-06-01]
-\ProvidesPackage{lastpagemodern}[2024-04-27 v2.1a %
+\ProvidesPackage{lastpagemodern}[2024-07-07 v2.1c %
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";
@@ -94,9 +93,43 @@
\if@nobreak\ifvmode\nobreak\fi\fi%
}
-%% similar to https://tex.stackexchange.com/a/12811/6865
-\def\lastpage@rmpage#1{\expandafter\lastpage@currentH#1\relax}
-\def\lastpage@currentH#1.#2\relax{#2}
+\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%
+ \fi%
+ \fi%
+ }%
+ \fi%
+ }{}%
+ }%
+
+%% Code provided by David Carlisle at https://tex.stackexchange.com/a/721877
+\def\lastpage@rmpage#1{%
+ \expandafter\xlastpage@rmpage\expanded{#1}\xlastpage@rmpage page.%
+ \xlastpage@rmpage\xxlastpage@rmpage{#1}}
+\def\xlastpage@rmpage #1page.#2\xlastpage@rmpage#3\xxlastpage@rmpage#4{%
+ \if$\detokenize{#1}$#2%\else#4
+ \fi}
\newcommand{\lastpage@putl@bel}{%
\IfPackageLoadedTF{pageslts}{\relax}{%
@@ -125,8 +158,7 @@
}%
\protected@iwrite\@auxout{}{%
\string\gdef\string\lastpage@lastpage{\thepage}}%
- \gdef\lastpage@Hy{\IfPackageLoadedTF{hyperref}{%
- \ifHy@pageanchor\lastpage@rmpage{\@currentHpage}\fi}{}}%
+ \lastpage@makeHy%
\protected@iwrite\@auxout{}{%
\string\gdef\string\lastpage@lastpageHy{\lastpage@Hy}}%
\addtocounter{page}{+1}%
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..2c5360fa948 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/10/16 v0.3.0 latex2pydata - write data to file in Python literal format]
\def\pydata@error#1{%
\PackageError{latex2pydata}{#1}{}%
\batchmode\read -1 to \pydata@exitnow}
@@ -164,13 +164,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
@@ -180,8 +182,7 @@
\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
+ \loop\unless\ifnum\value{pydata@bufferindex}>\pydata@bufferlengthmacro\relax
\immediate\write\pydata@filehandle{%
\csname\pydata@bufferlinename\arabic{pydata@bufferindex}\endcsname}%
\stepcounter{pydata@bufferindex}%
@@ -189,24 +190,24 @@
\setcounter{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
+ \loop\unless\ifnum\value{pydata@bufferindex}>\csname#1length\endcsname\relax
\expandafter\global\expandafter\let
\csname#1line\arabic{pydata@bufferindex}\endcsname\pydata@undefined
\stepcounter{pydata@bufferindex}%
\repeat
- \setcounter{#1length}{0}%
+ \expandafter\gdef\csname#1length\endcsname{0}%
\setcounter{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 +215,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 +373,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 +395,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 +429,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 +463,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 e6a2377fd9b..c7ab26fb3f0 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,9 +1,9 @@
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\fileversion{0.40}
-\def\filedate{2024-05-11}
+\def\fileversion{0.41}
+\def\filedate{2024-07-17}
\ProvidesPackage{lete-sans-math}[\filedate\space\fileversion]
-%Ensure luatex or xetex engine
+% Ensure luatex or xetex engine
\RequirePackage{iftex}[2019/10/24]
\RequireTUTeX
\RequirePackage{unicode-math}
@@ -63,6 +63,10 @@
\Umathchardef\mbfdotlessi = 0 0 "E043 \relax
\Umathchardef\mbfdotlessj = 0 0 "E044 \relax
\Umathchardef\mithbar = 0 0 "E048 \relax
+ \Umathchardef\mupvarg = 0 0 "E04B \relax
+ \Umathchardef\mbfvarg = 0 0 "E04C \relax
+ \Umathchardef\mitvarg = 0 0 "E04D \relax
+ \Umathchardef\mbfitvarg = 0 0 "E04E \relax
\Umathchardef\varemptyset = 0 0 "E04F \relax
\Umathchardef\BbbDelta = 0 0 "E050 \relax
\Umathchardef\BbbTheta = 0 0 "E051 \relax
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 b508a930299..21aa3290e51 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-01-20 v2.60 (Daniel Flipo)]
+ [2024-06-26 v2.61 (Daniel Flipo)]
\DeclareRelease{v1.6}{1999-03-03}{lettrine-2006-03-17.sty}
\DeclareRelease{v1.9}{2012-07-20}{lettrine-2015-08-31.sty}
@@ -96,10 +96,10 @@
{
lines.code = \setcounter{L@lines}{#1} ,
depth.code = \setcounter{L@depth}{#1} ,
- lhang.code = \renewcommand*{\L@hang}{#1} ,
- loversize.code = \renewcommand*{\L@oversize}{#1} ,
- lraise.code = \renewcommand*{\L@raise}{#1} ,
- ante.code = \renewcommand*{\L@ante}{#1} ,
+ lhang.store = \L@hang ,
+ loversize.store = \L@oversize ,
+ lraise.store = \L@raise ,
+ ante.store = \L@ante ,
findent.code = \setlength{\L@Findent}{#1} ,
nindent.code = \setlength{\L@Nindent}{#1} ,
slope.code = \setlength{\L@slope}{#1} ,
@@ -293,7 +293,7 @@
\fi
\noindent
\parshape=\L@parshape\relax
- \llap{\mbox{\L@ante}\smash{\raisebox{\L@lraise}{\usebox{\L@lbox}}}%
+ \llap{\smash{\mbox{\L@ante}\raisebox{\L@lraise}{\usebox{\L@lbox}}}%
\ifL@grid\else\rule{0pt}{\L@ruleht}\fi
\hskip \the\L@Findent}%
\unhcopy\L@tbox\relax
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..1db4c228d04 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 2024/09/22
%%
\ProvidesFile{LY1LibertinusMono-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/LibertinusMono-TLF.]
+ [2024/09/22 (autoinst) Font definitions for LY1/LibertinusMono-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -30,62 +30,7 @@
<-> alias * LibertinusMono-TLF/m/n
}{}
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{m}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-Oblique-tlf-ly1
-}{}
-
-\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
-}{}
-
-
-% ---- b = bold ----
-
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{b}{n}{
- <-> \LibertinusMono@@scale LibertinusMono-Bold-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{bold}{n}{
- <-> alias * LibertinusMono-TLF/b/n
-}{}
-
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{b}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-BoldOblique-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{bold}{sl}{
- <-> alias * LibertinusMono-TLF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{b}{it}{
- <-> ssub * LibertinusMono-TLF/b/sl
-}{}
-
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{bold}{it}{
- <-> ssub * LibertinusMono-TLF/bold/sl
-}{}
-
% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{bx}{n}{
- <-> ssub * LibertinusMono-TLF/b/n
-}{}
-
-\DeclareFontShape{LY1}{LibertinusMono-TLF}{bx}{it}{
- <-> 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
deleted file mode 100644
index b4e9517df7a..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-LF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LY1LibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/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{LY1}{LibertinusSerifDisplay-LF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LY1}{LibertinusSerifDisplay-LF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-lf-ly1
-}{}
-
-\DeclareFontShape{LY1}{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/LY1LibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-OsF.fd
deleted file mode 100644
index 18326283433..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-OsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LY1LibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/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{LY1}{LibertinusSerifDisplay-OsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LY1}{LibertinusSerifDisplay-OsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-osf-ly1
-}{}
-
-\DeclareFontShape{LY1}{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/LY1LibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-Sup.fd
deleted file mode 100644
index 69538630459..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-Sup.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LY1LibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/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{LY1}{LibertinusSerifDisplay-Sup}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LY1}{LibertinusSerifDisplay-Sup}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-sup-ly1
-}{}
-
-\DeclareFontShape{LY1}{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/LY1LibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TLF.fd
deleted file mode 100644
index 1fa7456ccd6..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LY1LibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/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{LY1}{LibertinusSerifDisplay-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LY1}{LibertinusSerifDisplay-TLF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tlf-ly1
-}{}
-
-\DeclareFontShape{LY1}{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/LY1LibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TOsF.fd
deleted file mode 100644
index 1d2ce714c30..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/LY1LibertinusSerifDisplay-TOsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{LY1LibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for LY1/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{LY1}{LibertinusSerifDisplay-TOsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{LY1}{LibertinusSerifDisplay-TOsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tosf-ly1
-}{}
-
-\DeclareFontShape{LY1}{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/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..fd29777b08f 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 2024/09/22
%%
\ProvidesFile{OT1LibertinusMono-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/LibertinusMono-TLF.]
+ [2024/09/22 (autoinst) Font definitions for OT1/LibertinusMono-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,33 +20,6 @@
\DeclareFontFamily{OT1}{LibertinusMono-TLF}{\hyphenchar\font=-1}
-% ---- b = bold ----
-
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{b}{n}{
- <-> \LibertinusMono@@scale LibertinusMono-Bold-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{bold}{n}{
- <-> alias * LibertinusMono-TLF/b/n
-}{}
-
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{b}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-BoldOblique-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{bold}{sl}{
- <-> alias * LibertinusMono-TLF/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{b}{it}{
- <-> ssub * LibertinusMono-TLF/b/sl
-}{}
-
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{bold}{it}{
- <-> ssub * LibertinusMono-TLF/bold/sl
-}{}
-
-
% ---- m = regular ----
\DeclareFontShape{OT1}{LibertinusMono-TLF}{m}{n}{
@@ -57,35 +30,7 @@
<-> alias * LibertinusMono-TLF/m/n
}{}
-\DeclareFontShape{OT1}{LibertinusMono-TLF}{m}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-Oblique-tlf-ot1
-}{}
-
-\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
-}{}
-
% ---- 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}{n}{
- <-> ssub * LibertinusMono-TLF/b/n
-}{}
-
\endinput
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
deleted file mode 100644
index b9ad0dd86ba..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-LF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{OT1LibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/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{OT1}{LibertinusSerifDisplay-LF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{OT1}{LibertinusSerifDisplay-LF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-lf-ot1
-}{}
-
-\DeclareFontShape{OT1}{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/OT1LibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-OsF.fd
deleted file mode 100644
index e0f64e3cdbf..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-OsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{OT1LibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/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{OT1}{LibertinusSerifDisplay-OsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{OT1}{LibertinusSerifDisplay-OsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-osf-ot1
-}{}
-
-\DeclareFontShape{OT1}{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/OT1LibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-Sup.fd
deleted file mode 100644
index 0e368df70ae..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-Sup.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{OT1LibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/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{OT1}{LibertinusSerifDisplay-Sup}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{OT1}{LibertinusSerifDisplay-Sup}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-sup-ot1
-}{}
-
-\DeclareFontShape{OT1}{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/OT1LibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TLF.fd
deleted file mode 100644
index 3430d6e7c8f..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{OT1LibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/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{OT1}{LibertinusSerifDisplay-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{OT1}{LibertinusSerifDisplay-TLF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tlf-ot1
-}{}
-
-\DeclareFontShape{OT1}{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/OT1LibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TOsF.fd
deleted file mode 100644
index a92cfe5fe3c..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/OT1LibertinusSerifDisplay-TOsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{OT1LibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for OT1/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{OT1}{LibertinusSerifDisplay-TOsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{OT1}{LibertinusSerifDisplay-TOsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tosf-ot1
-}{}
-
-\DeclareFontShape{OT1}{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/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..ba7f4efbc9a 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 2024/09/22
%%
\ProvidesFile{T1LibertinusMono-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/LibertinusMono-TLF.]
+ [2024/09/22 (autoinst) Font definitions for T1/LibertinusMono-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -22,14 +22,6 @@
% ---- m = regular ----
-\DeclareFontShape{T1}{LibertinusMono-TLF}{m}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-Oblique-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusMono-TLF}{regular}{sl}{
- <-> alias * LibertinusMono-TLF/m/sl
-}{}
-
\DeclareFontShape{T1}{LibertinusMono-TLF}{m}{n}{
<-> \LibertinusMono@@scale LibertinusMono-Regular-tlf-t1
}{}
@@ -38,54 +30,7 @@
<-> alias * LibertinusMono-TLF/m/n
}{}
-\DeclareFontShape{T1}{LibertinusMono-TLF}{m}{it}{
- <-> ssub * LibertinusMono-TLF/m/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusMono-TLF}{regular}{it}{
- <-> ssub * LibertinusMono-TLF/regular/sl
-}{}
-
-
-% ---- b = bold ----
-
-\DeclareFontShape{T1}{LibertinusMono-TLF}{b}{n}{
- <-> \LibertinusMono@@scale LibertinusMono-Bold-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusMono-TLF}{bold}{n}{
- <-> alias * LibertinusMono-TLF/b/n
-}{}
-
-\DeclareFontShape{T1}{LibertinusMono-TLF}{b}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-BoldOblique-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{LibertinusMono-TLF}{bold}{sl}{
- <-> alias * LibertinusMono-TLF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusMono-TLF}{b}{it}{
- <-> ssub * LibertinusMono-TLF/b/sl
-}{}
-
-\DeclareFontShape{T1}{LibertinusMono-TLF}{bold}{it}{
- <-> ssub * LibertinusMono-TLF/bold/sl
-}{}
-
% ---- 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}{n}{
- <-> ssub * LibertinusMono-TLF/b/n
-}{}
-
\endinput
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
deleted file mode 100644
index 4d1d656cb30..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-LF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T1LibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/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{T1}{LibertinusSerifDisplay-LF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T1}{LibertinusSerifDisplay-LF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-lf-t1
-}{}
-
-\DeclareFontShape{T1}{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/T1LibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-OsF.fd
deleted file mode 100644
index 4db691dfa04..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-OsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T1LibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/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{T1}{LibertinusSerifDisplay-OsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T1}{LibertinusSerifDisplay-OsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-osf-t1
-}{}
-
-\DeclareFontShape{T1}{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/T1LibertinusSerifDisplay-Sup.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-Sup.fd
deleted file mode 100644
index 2e0bb89039c..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-Sup.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T1LibertinusSerifDisplay-Sup.fd}
- [2022/11/07 (autoinst) Font definitions for T1/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{T1}{LibertinusSerifDisplay-Sup}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T1}{LibertinusSerifDisplay-Sup}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-sup-t1
-}{}
-
-\DeclareFontShape{T1}{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/T1LibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TLF.fd
deleted file mode 100644
index 22ca1f0e29f..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T1LibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/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{T1}{LibertinusSerifDisplay-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T1}{LibertinusSerifDisplay-TLF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tlf-t1
-}{}
-
-\DeclareFontShape{T1}{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/T1LibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TOsF.fd
deleted file mode 100644
index a311ff85802..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/T1LibertinusSerifDisplay-TOsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{T1LibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for T1/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{T1}{LibertinusSerifDisplay-TOsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{T1}{LibertinusSerifDisplay-TOsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tosf-t1
-}{}
-
-\DeclareFontShape{T1}{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/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..0ac2b3b4f9c 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 2024/09/22
%%
\ProvidesFile{TS1LibertinusMono-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/LibertinusMono-TLF.]
+ [2024/09/22 (autoinst) Font definitions for TS1/LibertinusMono-TLF.]
\ifcsname s@fct@alias\endcsname\else
\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
@@ -20,33 +20,6 @@
\DeclareFontFamily{TS1}{LibertinusMono-TLF}{\hyphenchar\font=-1}
-% ---- b = bold ----
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{b}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-BoldOblique-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{bold}{sl}{
- <-> alias * LibertinusMono-TLF/b/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{b}{n}{
- <-> \LibertinusMono@@scale LibertinusMono-Bold-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{bold}{n}{
- <-> alias * LibertinusMono-TLF/b/n
-}{}
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{b}{it}{
- <-> ssub * LibertinusMono-TLF/b/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{bold}{it}{
- <-> ssub * LibertinusMono-TLF/bold/sl
-}{}
-
-
% ---- m = regular ----
\DeclareFontShape{TS1}{LibertinusMono-TLF}{m}{n}{
@@ -57,35 +30,7 @@
<-> alias * LibertinusMono-TLF/m/n
}{}
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{m}{sl}{
- <-> \LibertinusMono@@scale LibertinusMono-Oblique-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{regular}{sl}{
- <-> alias * LibertinusMono-TLF/m/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{m}{it}{
- <-> ssub * LibertinusMono-TLF/m/sl
-}{}
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{regular}{it}{
- <-> ssub * LibertinusMono-TLF/regular/sl
-}{}
-
% ---- 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
-}{}
-
-\DeclareFontShape{TS1}{LibertinusMono-TLF}{bx}{sl}{
- <-> ssub * LibertinusMono-TLF/b/sl
-}{}
-
\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
deleted file mode 100644
index a0a7969b5ee..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-LF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{TS1LibertinusSerifDisplay-LF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/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{TS1}{LibertinusSerifDisplay-LF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{TS1}{LibertinusSerifDisplay-LF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-lf-ts1
-}{}
-
-\DeclareFontShape{TS1}{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/TS1LibertinusSerifDisplay-OsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-OsF.fd
deleted file mode 100644
index c5054d35c07..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-OsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{TS1LibertinusSerifDisplay-OsF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/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{TS1}{LibertinusSerifDisplay-OsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{TS1}{LibertinusSerifDisplay-OsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-osf-ts1
-}{}
-
-\DeclareFontShape{TS1}{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/TS1LibertinusSerifDisplay-TLF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TLF.fd
deleted file mode 100644
index df70e220c08..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TLF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{TS1LibertinusSerifDisplay-TLF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/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{TS1}{LibertinusSerifDisplay-TLF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{TS1}{LibertinusSerifDisplay-TLF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tlf-ts1
-}{}
-
-\DeclareFontShape{TS1}{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/TS1LibertinusSerifDisplay-TOsF.fd b/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TOsF.fd
deleted file mode 100644
index f7248d4a802..00000000000
--- a/Master/texmf-dist/tex/latex/libertinus-type1/TS1LibertinusSerifDisplay-TOsF.fd
+++ /dev/null
@@ -1,36 +0,0 @@
-%% Generated by autoinst on 2022/11/07
-%%
-\ProvidesFile{TS1LibertinusSerifDisplay-TOsF.fd}
- [2022/11/07 (autoinst) Font definitions for TS1/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{TS1}{LibertinusSerifDisplay-TOsF}{}
-
-
-% ---- m = regular ----
-
-\DeclareFontShape{TS1}{LibertinusSerifDisplay-TOsF}{m}{n}{
- <-> \LibertinusSerifDisplay@@scale LibertinusSerifDisplay-Regular-tosf-ts1
-}{}
-
-\DeclareFontShape{TS1}{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/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..0ace2a84ef8 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.]
+ 2024/09/22 (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}
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 d1050d88397..6d727c841cd 100644
--- a/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty
+++ b/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty
@@ -1,24 +1,20 @@
-% The Lie Hasse package.
+% The Lie Hasse package.
+% Version 1.01
%
-% Version 1.0
%
+% This package draws Hasse diagrams of root system posets of simple
+% Lie algebraS, in LaTeX documents, using the TikZ package.
%
-% This package draws Hasse diagrams of root system posets of simple
-% Lie algebraS, in LaTeX documents, using the TikZ package.
+% Benjamin McKay
+% b.mckay@ucc.ie
%
-% Benjamin McKay
-% b.mckay@ucc.ie
-%
-% Released under the LaTeX Project Public License v1.3c or later, see
+% 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}[2020/02/02 Lie Hasse]
+\ProvidesPackage{lie-hasse}[2024/07/09 Lie Hasse]
\RequirePackage[rgb]{xcolor}
\RequirePackage{dynkin-diagrams}
+\RequirePackage[outline]{contour}
\usetikzlibrary{
positioning,
fadings,
@@ -26,7 +22,7 @@
%%%
%%% Application programming interface:
%%%
-
+\NewDocumentCommand\edgeQuote{m}{\contour{white}{\(#1\)}}
\newif\iflie@hasse@threeD
\lie@hasse@threeDtrue
\xdef\lie@hasse@three@D@shift{.3}%
@@ -40,14 +36,27 @@
\lie@hasse@show@heightfalse
\newif\iflie@hasse@attach@dynkin@diagram
\lie@hasse@attach@dynkin@diagramfalse
-
+\newif\iflie@hasse@show@levi
+\lie@hasse@show@levitrue
+\newif\iflie@hasse@show@unipotent@radical
+\lie@hasse@show@unipotent@radicaltrue
\pgfkeys{
/Lie Hasse diagram/.is family,
/Lie Hasse diagram,
- attach Dynkin diagram/.is if = lie@hasse@attach@dynkin@diagram,
+ attach Dynkin diagram/.is if
+ = lie@hasse@attach@dynkin@diagram,
attach Dynkin diagram/.default = false,
- edge/.style={ultra thick},
- edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt},
+ edge/.style = {
+ ultra thick
+ },
+ edge length/.estore in
+ = \lie@hasse@edge@length,
+ edge length = 1cm,
+ edge quotes/.style={
+ /Dynkin diagram/text style,
+ auto,
+ inner sep=2pt
+ },
compact edge/.style={},
noncompact edge/.style={opacity=0},
compact root/.code={\dynkinDrawSolidRootMark{#1}},
@@ -67,7 +76,13 @@
show widths/.default = false,
show height/.is if = lie@hasse@show@height,
show height/.default = false,
- z shift/.estore in = \lie@hasse@three@D@shift,
+ show Levi/.is if = lie@hasse@show@levi,
+ show Levi/.default = true,
+ show unipotent radical/.is if
+ = lie@hasse@show@unipotent@radical,
+ show unipotent radical/.default = true,
+ z shift/.estore in
+ = \lie@hasse@three@D@shift,
z shift/.default = .3,
top/.style={black!20,opacity=.4},
left/.style={black!20,opacity=.9},
@@ -90,13 +105,17 @@
\dynkin@integer@rank%
}%
{%
- % Turn Satake codes into Dynkin diagram expressions in \dynkin@string.
+ % Turn Satake codes into Dynkin diagram
+ % expressions in \dynkin@string.
\dynkin@grok@Satake@codes%
}%
- % Expand out any digits in \dynkin@string into multiples of the various root marks.
+ % Expand out any digits in \dynkin@string
+ % into multiples of the various root marks.
\expand@Dynkin@Roots@Digits%
- % Assign to \dynkin@roots the input string \dynkin@string with all . symbols removed,
- % so we only get the symbols representing the marks for the various roots.
+ % Assign to \dynkin@roots the input string
+ % \dynkin@string with all . symbols removed,
+ % so we only get the symbols representing
+ % the marks for the various roots.
\StrDel{\dynkin@string}{.}[\temp]%
\xdef\dynkin@roots{\temp}%
\StrLen{\dynkin@roots}[\temp]%
@@ -115,58 +134,33 @@
{%
\pgfkeys{/Lie Hasse diagram/for all roots={#1}{#2}}%
}%
+\newif\iflie@hasse@B
+\newcount\dynkin@rank@plus@one%
\NewDocumentCommand\hasse{O{}mm}%
{%
\ifdefined\filldraw%
- \IfStrEq{#1}{}%
- {%
+ \ifx#1\empty\relax%
\studyHasseDiagramOfRootSystem{#2}{#3}%
- }%
- {%
+ \else%
\studyHasseDiagramOfRootSystem[#1]{#2}{#3}%
- }%
+ \fi%
\label@item@count 0\relax%
\expandafter\forcsvlist%
- \expandafter\add@label%
+ \expandafter\lie@hasse@add@label%
\expandafter{\dynkin@label@list}%
\ifnum\dynkin@rank=1%
\dynkin{A}{1}%
\else%
+ \global\dynkin@rank@plus@one\the\dynkin@rank\relax%
+ \global\advance\dynkin@rank@plus@one by 1\relax%
\add@compact@simple@roots@to@compact@roots{}%
\IfStrEqCase{#2}%
{%%
{A}{\hasse@A}%
- {B}{\hasse@BC}%
- {C}{\hasse@BC*}%
+ {B}{\global\lie@hasse@Btrue\hasse@BC}%
+ {C}{\global\lie@hasse@Bfalse\hasse@BC}%
{D}{\hasse@D}%
- {E}%
- {%
- \ifnum\dynkin@rank=6%
- \hasse@E@six%
- \else%
- \ifnum\dynkin@rank=7%
- \hasse@E@seven%
- \else%
- \ifnum\dynkin@rank=8%
- \hasse@E@eight%
- \else
- \ifnum\dynkin@rank>8%
- \ClassError%
- {Lie Hasse}%
- {Rank of E series Hasse diagram: #3{}%
- exceeds 8; not defined yet}%
- {}%
- \fi%
- \ifnum\dynkin@rank<6%
- \ClassError%
- {Lie Hasse}%
- {Rank of E series Hasse diagram: #3{} less than 6}%
- {}%
- \fi%
- \fi%
- \fi%
- \fi%
- }%
+ {E}{\hasse@E@series}%
{F}%
{%
\ifnum\dynkin@rank=4%
@@ -194,10 +188,11 @@
{Lie Hasse}%
{Lie algebra series #2{} not A,B,C,D,E,F or G}%
{}]%
+ \forAllPositiveRoots{\draw@lie@hasse@root}%
\draw@simple@root@labels%
\fi%
\lie@hasse@write@widths{}%
- \forAllPositiveRootsInHasseDiagram{\doRootThing}%
+ \forAllPositiveRoots{\doRootThing}%
\iflie@hasse@attach@dynkin@diagram%
\attachDynkin%
\fi%
@@ -205,13 +200,42 @@
\begin{tikzpicture}\hasse[#1]{#2}{#3}\end{tikzpicture}%
\fi%
}%
+\NewDocumentCommand\hasse@E@series{}%
+{%
+ \ifnum\dynkin@rank=6%
+ \hasse@E@six%
+ \else%
+ \ifnum\dynkin@rank=7%
+ \hasse@E@seven%
+ \else%
+ \ifnum\dynkin@rank=8%
+ \hasse@E@eight%
+ \else%
+ \ifnum\dynkin@rank>8%
+ \ClassError%
+ {Lie Hasse}%
+ {Rank of E series Hasse diagram: \the\dynkin@rank{}%
+ exceeds 8; not defined yet}%
+ {}%
+ \fi%
+ \ifnum\dynkin@rank<6%
+ \ClassError%
+ {Lie Hasse}%
+ {Rank of E series Hasse diagram: \the\dynkin@rank{}%
+ less than 6; not define yet}%
+ {}%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+}%
\NewDocumentCommand\drawRootAsDynkinSum{mm}%
{%
\rootSum{#1}{#2}{\rs}%
\node at (#1;#2)
{%
\dynkin[%
- labels=\rs,%
+ expand labels=\rs,%
/Lie Hasse diagram/embedded Dynkin diagram]%
{\dynkin@series}{\the\dynkin@rank}%
};%
@@ -239,25 +263,38 @@
}%
\fi%
}%
-
-\NewDocumentCommand\backwardsGtwo{}%
+\NewDocumentCommand\hasseAttachGtwo{}%
{%
- \dynkin[label,backwards,x shift in edge lengths=-1]{G}{\dynkin@roots}%
+ \dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
+% label,%
+% backwards,%
+% x shift in edge lengths=-1
+]{G}{\dynkin@roots}%
}%
-
\newcount\lie@hasse@E@shift%
\NewDocumentCommand\attachDynkin{}%
{%
\IfStrEqCase{\dynkin@series}{%
- {A}{\dynkin{A}{\dynkin@roots}}%
- {B}{\dynkin{B}{\dynkin@roots}}%
- {C}{\dynkin{C}{\dynkin@roots}}%
- {D}{\dynkin[y shift in edge lengths=-1.5,label]%
- {D}{\dynkin@roots}}%
+ {A}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {A}{\dynkin@roots}}%
+ {B}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {B}{\dynkin@roots}}%
+ {C}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {C}{\dynkin@roots}}%
+ {D}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
+ y shift in edge lengths=-1.5,label]%
+ {D}{\dynkin@roots}}%
{E}%
{%%
\ifnum\dynkin@rank=6%
\dynkin[%
+ vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
upsidedown,%
labels*={1,...,6},%
y shift in edge lengths=.5]%
@@ -266,6 +303,8 @@
\lie@hasse@E@shift\the\dynkin@rank\relax%
\advance\lie@hasse@E@shift by -2\relax%
\dynkin[%
+ vertical shift=0,%
+ edge length=\lie@hasse@edge@length,%
backwards,%
upsidedown,%
label,%
@@ -274,16 +313,17 @@
{E}{\dynkin@roots}%
\fi%
}%%
- {F}{\dynkin{F}{\dynkin@roots}}%
- {G}{\backwardsGtwo{}}%
+ {F}{\dynkin[vertical shift=0,%
+ edge length=\lie@hasse@edge@length]%
+ {F}{\dynkin@roots}}%
+ {G}{\hasseAttachGtwo}%
}%
[\ClassError%
{Lie Hasse}%
- {Lie algebra series \dynkin@series{} not A,B,C,D,E,F or G when attaching Dynkin diagram}%
+ {Lie algebra series \dynkin@series{} %
+ not A,B,C,D,E,F or G when attaching Dynkin diagram}%
{}]%
}%
-
-
\newif\iflie@hasse@multiple@diagrams
\newcommand\doHasseDiagram[1]%%
{%
@@ -291,8 +331,7 @@
\ %
\fi%
\begin{tikzpicture}%
- [show background rectangle,%
- baseline=(current bounding box.east)]]%
+ [show background rectangle,baseline=(current bounding box.east)]%
\hasse#1%
\iflie@hasse@show@height%
\rootSystemHeight{\lie@hasse@height}%
@@ -327,33 +366,25 @@
}%
\begin{center}%
\expandafter\forscsvlist%
- \expandafter\doHasseDiagram%
- \expandafter{#1}%
+ \expandafter\doHasseDiagram\expandafter{#1}%
\end{center}%
}%
-
-
%%%
%%% Package internals:
%%%
-
-
\pgfdeclarelayer{Dynkin middle}
\pgfdeclarelayer{Dynkin above}
\pgfsetlayers{background,Dynkin behind,Dynkin middle,Dynkin above,main}
-
-
\newcommand*\label@list@at[1]{\csname FOOBAR-#1\endcsname}
\newcommand*\defn@label@list@entry[1]{\expandafter\def\csname FOOBAR-#1\endcsname}
\def\add@to@label@list#1#2{\global\defn@label@list@entry{#1}{#2}}%
\newcount\label@item@count%
\label@item@count 0\relax%
-\newcommand\add@label[1]%
+\newcommand\lie@hasse@add@label[1]%
{%
- \advance\label@item@count by 1\relax%
+ \global\advance\label@item@count by 1\relax%
\global\add@to@label@list{\the\label@item@count}{#1}%
}%
-
\xdef\lie@hasse@compact@roots{}%
\NewDocumentCommand\if@compact@root{mmm}%
{%
@@ -369,9 +400,8 @@
\dynkinOrder{\dynkin@series}{\the\dynkin@rank}.Carter::#1->\dynkin@ordering.%
{\current@simple@root}%
\StrChar{\dynkin@roots}{\current@simple@root}[\lie@hasse@root@marker]%
-\IfStrEq{*}{\lie@hasse@root@marker}{#2}{#3}%
+\IfStrEq{x}{\lie@hasse@root@marker}{#3}{#2}%
}%
-
\NewDocumentCommand\add@compact@root{m}%
{%
\if@compact@root{#1}%
@@ -382,53 +412,65 @@
\xdef\lie@hasse@compact@roots{\temp@lie@hasse@compact@roots{ }(#1)}%
}%
}%
-
\newcount\lie@hasse@sr%
-\newcount\drpo%
\NewDocumentCommand\add@compact@simple@roots@to@compact@roots{}%
{%
-\lie@hasse@sr 1\relax%
-\drpo\the\dynkin@rank\relax%
-\advance\drpo by 1\relax%
-\loop%
- \if@compact@simple@root{\the\lie@hasse@sr}%
- {%%
- \add@compact@root{1;\the\lie@hasse@sr}%
- }%%
- {%%
- }%%
- \advance\lie@hasse@sr by 1\relax%
-\ifnum\lie@hasse@sr<\the\drpo%
-\repeat%
+ \lie@hasse@sr 1\relax%
+ \loop%
+ \if@compact@simple@root{\the\lie@hasse@sr}%
+ {%%
+ \add@compact@root{1;\the\lie@hasse@sr}%
+ }%%
+ {%%
+ }%%
+ \advance\lie@hasse@sr by 1\relax%
+ \ifnum\lie@hasse@sr<\the\dynkin@rank@plus@one%
+ \repeat%
}%
-
-\newcount\drmo%
\newcount\lie@hasse@root@count%
\newcount\lie@hasse@root@count@b%
\newcount\max@lie@hasse@root@count%
\newcount\lie@hasse@reorder
-
\NewDocumentCommand\lie@hasse@fix@order{mm}%
{%
\dynkinOrder{\dynkin@series}{\dynkin@rank}.Carter::{#1}->\dynkin@ordering.{#2}%
}%
-
\NewDocumentCommand\draw@one@simple@root@label{mm}%
%% \draw@one@simple@root@label{r}{s}, draw at Carter number r
%% the root with text s.
{%
- \node[below,%
- label=%
- {%
- [below,%
- lie@hasse@color,%
- /Lie Hasse diagram/edge quotes]%
- \(\pgfkeys{/Dynkin diagram/label macro=#2}\)%
- }%
- ]%
- at%
- (1;#1)%
- {};%
+ \if@compact@simple@root{#1}%
+ {%
+ \iflie@hasse@show@levi%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ }%
+ {%
+ \iflie@hasse@show@unipotent@radical%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ }%
+ \iflie@hasse@ok@root%
+ \node[%
+ below,%
+ label=%
+ {%
+ [%
+ below,%
+ lie@hasse@color,%
+ /Lie Hasse diagram/edge quotes%
+ ]%
+ \(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{#2}}}\)%
+ }%
+ ]%
+ at%
+ (1;#1)%
+ {};%
+ \fi%
}%
\NewDocumentCommand\draw@simple@root@labels{}%
{%
@@ -471,27 +513,56 @@
\pgfmathsetmacro{\lie@hasse@huenum}{#1/\the\dynkin@rank}%
\global\definecolor{lie@hasse@color}{hsb}{\lie@hasse@huenum,1,.6}%
}%
-\NewDocumentCommand\draw@lie@hasse@root{m}%
+\NewDocumentCommand\draw@lie@hasse@root{mm}%
{%
-\if@compact@root{#1}%
-{%%
-\pgfkeys{/Lie Hasse diagram/compact root=#1}%
-}%%
-{%%
-\pgfkeys{/Lie Hasse diagram/noncompact root=#1}%
-}%%
+ \if@compact@root{#1;#2}%
+ {%%
+ \iflie@hasse@show@levi%
+ \pgfkeys{/Lie Hasse diagram/compact root={#1;#2}}%
+ \fi%
+ }%%
+ {%%
+ \iflie@hasse@show@unipotent@radical%
+ \pgfkeys{/Lie Hasse diagram/noncompact root={#1;#2}}%
+ \fi%
+ }%%
}%
-\xdef\lie@hasse@grade@a{}
-\xdef\lie@hasse@grade@b{}
-\xdef\lie@hasse@index@a{}
-\xdef\lie@hasse@index@b{}
\newcount\root@gpo%
\xdef\label@text{}%
+\newif\iflie@hasse@is@levi
+\newif\iflie@hasse@ok@root
\NewDocumentCommand\draw@lie@hasse@edge{O{}mmmm}%
%[edge label options]{from grade}{from index}{to index}{simple root}
{%
\root@gpo #2\relax%
\advance\root@gpo by 1\relax%
+ \if@compact@root{#2;#3}%
+ {%
+ \if@compact@simple@root{#5}%
+ {%
+ \global\lie@hasse@is@levitrue%
+ \add@compact@root{\the\root@gpo;#4}%
+ }%
+ {%
+ \global\lie@hasse@is@levifalse%
+ }%
+ }%
+ {%
+ \global\lie@hasse@is@levifalse%
+ }%
+ \iflie@hasse@is@levi%
+ \iflie@hasse@show@levi%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ \else%
+ \iflie@hasse@show@unipotent@radical%
+ \global\lie@hasse@ok@roottrue%
+ \else%
+ \global\lie@hasse@ok@rootfalse%
+ \fi%
+ \fi%
\set@lie@hasse@color{#5}%
\lie@hasse@fix@order{#5}{\lie@hasse@root@count@b}%
\IfStrEq{\dynkin@label@list}{}%
@@ -505,31 +576,33 @@
}%
}%
\if@compact@simple@root{#5}%
- {%%% Compact
- \draw[%
- lie@hasse@color,%
- /Lie Hasse diagram/edge,%
- /Lie Hasse diagram/compact edge]%
- (#2;#3) --%
- node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]%
- {\(\pgfkeys{/Dynkin diagram/label macro=\label@text}\)}%
- (\the\root@gpo;#4);%
- \IfSubStr{\lie@hasse@compact@roots}{#2;#3}%
- {%% adding to a compact
- \add@compact@root{\the\root@gpo;#4}%
- }%%
- {%%
- }%%
+ {%%% Compact simple root, i.e. edge
+ \iflie@hasse@ok@root%
+ \draw[%
+ lie@hasse@color,%
+ /Lie Hasse diagram/edge,%
+ /Lie Hasse diagram/compact edge]%
+ (#2;#3)--%
+ node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]%
+ {\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label@text}}}\)}%
+ (\the\root@gpo;#4);%
+ \fi%
+ \iflie@hasse@is@levi%
+ \fi%
}%%%
{%%% Noncompact
- \draw[%
- lie@hasse@color,%
- /Lie Hasse diagram/edge,%
- /Lie Hasse diagram/noncompact edge]%
- (#2;#3) --%
+ \iflie@hasse@ok@root%
+ \draw
+ [%
+ lie@hasse@color,%
+ /Lie Hasse diagram/edge,%
+ /Lie Hasse diagram/noncompact edge%
+ ]%
+ (#2;#3)--%
node[lie@hasse@color,/Lie Hasse diagram/edge quotes,#1]%
- {\(\pgfkeys{/Dynkin diagram/label macro=\label@text}\)}%
+ {\(\pgfkeys{/Dynkin diagram/label macro={\edgeQuote{\label@text}}}\)}%
(\the\root@gpo;#4);%
+ \fi%
}%%%
}%
\newcount\A@series@grade%
@@ -555,8 +628,8 @@
\coordinate
(\the\A@series@grade;\the\A@series@j)
at
- ({.5*\the\A@series@x*\dynkin@edge@length},
- {.25*\the\A@series@y*\dynkin@edge@length})
+ ({.5*\the\A@series@x*\lie@hasse@edge@length},
+ {.25*\the\A@series@y*\lie@hasse@edge@length})
{};%
\advance\A@series@j by 1\relax%
\advance\A@series@x by 2\relax%
@@ -569,59 +642,35 @@
\ifnum\A@series@grade<\the\max@A@series@grade%
\repeat%
}%
-\newcount\A@series@grade%
-\newcount\max@A@series@grade%
-\NewDocumentCommand\draw@A@roots{}%
-{%
- \A@series@grade 1\relax%
- \max@A@series@grade \the\dynkin@rank\relax%
- \advance\max@A@series@grade by 1\relax%
- \loop%
- \max@A@series@j\the\dynkin@rank\relax%
- \advance\max@A@series@j by -\the\A@series@grade\relax%
- \advance\max@A@series@j by 2\relax%
- \A@series@j 1\relax%
- {%
- \loop%
- \draw@lie@hasse@root%
- {\the\A@series@grade;\the\A@series@j}%
- \advance\A@series@j by 1\relax%
- \ifnum\A@series@j<\the\max@A@series@j%
- \repeat%
- }%
- \advance\A@series@grade by 1\relax%
- \ifnum\A@series@grade<\the\max@A@series@grade%
- \repeat%
-}%
\newcount\maxA@i%
\newcount\maxA@j%
\newcount\A@lbl%
-\newcount\A@i%
-\newcount\A@j%
-\newcount\A@ipo%
+\newcount\lie@hasse@i%
+\newcount\lie@hasse@j%
+\newcount\lie@hasse@ipo%
\newcount\A@rj%
\newcount\A@rjmo%
\NewDocumentCommand\draw@A@edges{}%
{%
\maxA@i\the\dynkin@rank\relax%
- \A@i 1\relax%
+ \lie@hasse@i 1\relax%
\loop%
\maxA@j \the\dynkin@rank\relax%
- \advance\maxA@j by -\the\A@i\relax%
+ \advance\maxA@j by -\the\lie@hasse@i\relax%
\advance\maxA@j by 1\relax%
\ifnum\maxA@j>-1%
- \A@j 1\relax%
+ \lie@hasse@j 1\relax%
{%
\loop%
- \A@lbl\the\A@i\relax%
- \advance\A@lbl by \the\A@j\relax%
- \A@ipo \A@i\relax%
- \advance\A@ipo by 1\relax%
+ \A@lbl\the\lie@hasse@i\relax%
+ \advance\A@lbl by \the\lie@hasse@j\relax%
+ \lie@hasse@ipo \lie@hasse@i\relax%
+ \advance\lie@hasse@ipo by 1\relax%
\draw@lie@hasse@edge[left]%
- {\the\A@i}{\the\A@j}%
- {\the\A@j}{\the\A@lbl}%
+ {\the\lie@hasse@i}{\the\lie@hasse@j}%
+ {\the\lie@hasse@j}{\the\A@lbl}%
\A@rj\the\maxA@j\relax%
- \advance\A@rj by -\the\A@j\relax%
+ \advance\A@rj by -\the\lie@hasse@j\relax%
\advance\A@rj by 1\relax%
\A@rjmo\the\A@rj\relax%
\advance\A@rjmo by -1\relax%
@@ -629,15 +678,15 @@
\advance\A@lbl by \the\dynkin@rank%
\advance\A@lbl by 1%
\draw@lie@hasse@edge[right]%
- {\the\A@i}{\the\A@rj}%
+ {\the\lie@hasse@i}{\the\A@rj}%
{\the\A@rjmo}{\the\A@lbl}%
- \advance\A@j by 1\relax%
- \ifnum\A@j<\the\maxA@j%
+ \advance\lie@hasse@j by 1\relax%
+ \ifnum\lie@hasse@j<\the\maxA@j%
\repeat%
}%
\fi%
- \advance\A@i by 1\relax%
- \ifnum\A@i<\the\maxA@i%
+ \advance\lie@hasse@i by 1\relax%
+ \ifnum\lie@hasse@i<\the\maxA@i%
\repeat%
}%
%% \hasse@A@width@at@grade{g}{\w} sets the counter \w to
@@ -653,7 +702,6 @@
{%
\place@A@roots%
\draw@A@edges%
- \draw@A@roots%
}%
%% \hasse@BC@width@at@grade{g}{\w} sets the counter \w to
%% the value of the width (number of roots) at grade g of
@@ -666,138 +714,116 @@
\global\advance#2 by 1\relax%
\global\divide#2 by 2\relax%
}%
-\newcount\tdrmt%
-\newcount\tdrmo%
+\newcount\twice@dynkin@rank@minus@one%
\newcount\max@BC@r%
\newcount\BC@r%
\newcount\BC@series@x%
\newcount\BC@series@y%
\NewDocumentCommand\place@BC@roots{}%
{%
-\drmo \the\dynkin@rank\relax%
-\advance\drmo by -1\relax%
-\tdrmt \the\drmo\relax%
-\advance\tdrmt by \the\drmo\relax%
-\tdrmo \the\tdrmt\relax%
-\advance\tdrmo 1\relax%
-\max@BC@r \the\dynkin@rank\relax%
-\advance\max@BC@r by 1\relax%
-\BC@r 1\relax%
-\loop%
- \BC@series@x \the\BC@r\relax%
- \advance\BC@series@x by -1\relax%
- \advance\BC@series@x by \the\BC@series@x\relax%
- \BC@series@y 1\relax%
- {%%
+ \twice@dynkin@rank@minus@one \the\dynkin@rank\relax%
+ \advance\twice@dynkin@rank@minus@one by \the\dynkin@rank\relax%
+ \advance\twice@dynkin@rank@minus@one by -1\relax%
+ \max@BC@r \the\dynkin@rank\relax%
+ \advance\max@BC@r by 1\relax%
+ \BC@r 1\relax%
\loop%
- \coordinate
- (\the\BC@series@y;\the\BC@r)
- at
- ({.5*\the\BC@series@x*\dynkin@edge@length},
- {.5*(\the\BC@series@y-1)*\dynkin@edge@length})
- {};%
- \advance\BC@series@y by 1\relax%
- \advance\BC@series@x by 1\relax%
- \ifnum\BC@series@x<\the\tdrmo\repeat%
- }%%
- \advance\BC@r by 1\relax%
- \ifnum\BC@r<\the\max@BC@r%
-\repeat%
+ \BC@series@x \the\BC@r\relax%
+ \advance\BC@series@x by -1\relax%
+ \advance\BC@series@x by \the\BC@series@x\relax%
+ \BC@series@y 1\relax%
+ {%%
+ \loop%
+ \coordinate
+ (\the\BC@series@y;\the\BC@r)
+ at
+ ({.5*\the\BC@series@x*\lie@hasse@edge@length},
+ {.5*(\the\BC@series@y-1)*\lie@hasse@edge@length})
+ {};%
+ \advance\BC@series@y by 1\relax%
+ \advance\BC@series@x by 1\relax%
+ \ifnum\BC@series@x<\the\twice@dynkin@rank@minus@one\repeat%
+ }%%
+ \advance\BC@r by 1\relax%
+ \ifnum\BC@r<\the\max@BC@r%
+ \repeat%
+}%
+\newcount\BC@height%
+\newcount\BC@g%
+\NewDocumentCommand\draw@BC@edges{}%
+{%
+ \rootSystemHeight{\BC@height}%
+ \ifnum\BC@height>1%
+ \BC@g 1\relax%
+ \loop%
+ \draw@BC@edges@at@grade{\the\BC@g}%
+ \global\advance\BC@g by 1\relax%
+ \ifnum\BC@g<\BC@height%
+ \repeat%
+ \fi%
}%
-\newcount\max@BC@i%
\newcount\BC@i%
-\newcount\BC@series@x%
-\newcount\BC@series@y%
+\newcount\BC@width%
+\newcount\BC@width@plus@one%
+\NewDocumentCommand\draw@BC@edges@at@grade{m}%
+{%
+ \rootSystemWidthAtGrade{#1}{\BC@width}%
+ \BC@width@plus@one \BC@width\relax%
+ \advance \BC@width@plus@one by 1\relax%
+ \BC@i 1\relax%
+ {%
+ \loop%
+ \draw@BC@edges@at@root{#1}{\the\BC@i}%
+ \global\advance\BC@i by 1\relax%
+ \ifnum\BC@i<\BC@width@plus@one\repeat%
+ }%
+}%
+\newcount\BC@height%
\newcount\BC@ii%
-\newcount\BC@series@yy%
-\newcount\BC@series@yy%
-\newcount\lbl%
+\newif\ifBC@draw%
+\newcount\lie@hasse@lbl%
\newcount\temp@lbl%
-\NewDocumentCommand\draw@BC@edges{s}%
-{%
-\tdrmo \the\dynkin@rank\relax%
-\advance\tdrmo by \the\dynkin@rank\relax%
-\advance\tdrmo by -1\relax%
-\max@BC@i \the\dynkin@rank\relax%
-\advance\max@BC@i by 1\relax%
-\BC@i 1\relax%
-\loop%
- \BC@series@x \the\BC@i\relax%
- \advance\BC@series@x by \the\BC@i\relax%
- \advance\BC@series@x by -2\relax%
- \BC@series@y 1\relax%
- {%%
- \loop%
- \ifnum\BC@i>1%
- % draw an edge upward to the left
- \BC@ii \the\BC@i\relax%
- \advance\BC@ii by -1\relax%
- \BC@series@yy \the\BC@series@y\relax%
- \advance\BC@series@yy by 1\relax%
- \draw@lie@hasse@edge[right]%
- {\the\BC@series@y}{\the\BC@i}%
- {\the\BC@ii}%
- {\the\BC@ii}%
+\NewDocumentCommand\draw@BC@edges@at@root{mm}%
+{%
+ \ifnum#2>1%
+ % draw an edge upward to the left
+ \BC@ii #2\relax%
+ \advance\BC@ii by -1\relax%
+ \draw@lie@hasse@edge[right]%
+ {#1}{#2}%
+ {\the\BC@ii}
+ {\the\BC@ii}%
+ \fi%
+ \BC@drawtrue%
+ \ifodd#1
+ \ifnum#2=\the\BC@width%
+ \global\BC@drawfalse%
\fi%
- \ifnum\BC@series@y>1%
- % draw an edge downward to the left
- \BC@series@yy \the\BC@series@y\relax%
- \advance\BC@series@yy by -1\relax%
- \lbl \the\BC@i\relax%
- \advance\lbl by \the\BC@series@y\relax%
- \advance\lbl by -1\relax%
- \ifnum\dynkin@rank<\the\lbl%
- \temp@lbl \the\lbl\relax%
- \lbl \the\dynkin@rank\relax%
- \advance\lbl by \the\dynkin@rank%
- \advance\lbl by -\the\temp@lbl%
+ \fi%
+ \ifBC@draw%
+ % draw an edge upward to the right
+ \lie@hasse@lbl #2\relax%
+ \advance\lie@hasse@lbl by #1\relax%
+ \ifnum\dynkin@rank<\the\lie@hasse@lbl%
+ \temp@lbl \the\lie@hasse@lbl\relax%
+ \lie@hasse@lbl \the\dynkin@rank\relax%
+ \advance\lie@hasse@lbl by \the\dynkin@rank%
+ \advance\lie@hasse@lbl by -\the\temp@lbl%
%% For the B series:
- \IfBooleanF{#1}{\global\advance\lbl by 1\relax}%
- \draw@lie@hasse@edge[left]%
- {\the\BC@series@yy}{\the\BC@i}%
- {\the\BC@i}%
- {\the\lbl}%
- \else%
- \draw@lie@hasse@edge[left]%
- {\the\BC@series@yy}{\the\BC@i}%
- {\the\BC@i}%
- {\the\lbl}%
+ \iflie@hasse@B%
+ \global\advance\lie@hasse@lbl by 1\relax%
\fi%
+ \draw@lie@hasse@edge[left]%
+ {#1}{#2}%
+ {#2}%
+ {\the\lie@hasse@lbl}%
+ \else%
+ \draw@lie@hasse@edge[left]%
+ {#1}{#2}%
+ {#2}%
+ {\the\lie@hasse@lbl}%
\fi%
- \advance\BC@series@y by 1\relax%
- \advance\BC@series@x by 1\relax%
- \ifnum\BC@series@x<\the\tdrmo\repeat%
- }%%
- \advance\BC@i by 1\relax%
- \ifnum\BC@i<\the\max@BC@i%
-\repeat%
-}%
-\newcount\tdrpt%
-\newcount\BC@r%
-\newcount\BC@series@y%
-\newcount\maxy%
-\NewDocumentCommand\draw@BC@roots{}%
-{%
-\tdrpt \the\dynkin@rank\relax%
-\advance\tdrpt by \the\dynkin@rank\relax%
-\advance\tdrpt by 2\relax%
-\max@BC@r \the\dynkin@rank\relax%
-\advance\max@BC@r by 1\relax%
-\BC@r 1\relax%
-\loop%
- \BC@series@y 1\relax%
- \maxy \tdrpt\relax%
- \advance\maxy -\the\BC@r\relax%
- \advance\maxy -\the\BC@r\relax%
- {%%
- \loop%
- \draw@lie@hasse@root{\the\BC@series@y;\the\BC@r}%
- \advance\BC@series@y by 1\relax%
- \ifnum\BC@series@y<\the\maxy\repeat%
- }%%
- \advance\BC@r by 1\relax%
- \ifnum\BC@r<\the\max@BC@r%
-\repeat%
+ \fi%
}%
\NewDocumentCommand\hasse@BC{s}% star for C:
{%
@@ -809,7 +835,6 @@
{%
\draw@BC@edges%
}%
- \draw@BC@roots%
}%
\NewDocumentCommand\hasse@D{}%
{%
@@ -818,51 +843,45 @@
\iflie@hasse@threeD%
\draw@D@hasse@three@D%
\fi%
- \draw@D@roots%
}%
-\newcount\drmt%
\NewDocumentCommand\draw@D@hasse@three@D{}%
{%
- \drmo \the\dynkin@rank\relax%
- \advance\drmo by -1\relax%
- \drmt \the\dynkin@rank\relax%
- \advance\drmt by -2\relax%
\begin{pgfonlayer}{Dynkin middle}%
\fill[/Lie Hasse diagram/left]
- (\the\drmt;1) --
- (\the\drmo;1) --
+ (\the\dynkin@rank@minus@two;1) --
+ (\the\dynkin@rank@minus@one;1) --
(\the\dynkin@rank;1) --
- (\the\drmo;2) --
+ (\the\dynkin@rank@minus@one;2) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmt;1) --
- (1;\the\drmt) --
- (2;\the\drmo) --
- (\the\drmo;2) --
+ (\the\dynkin@rank@minus@two;1) --
+ (1;\the\dynkin@rank@minus@two) --
+ (2;\the\dynkin@rank@minus@one) --
+ (\the\dynkin@rank@minus@one;2) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmo;2) --
+ (\the\dynkin@rank@minus@one;2) --
(\the\dynkin@rank;1) --
- (3;\the\drmo) --
- (2;\the\drmo) --
+ (3;\the\dynkin@rank@minus@one) --
+ (2;\the\dynkin@rank@minus@one) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmo;1) --
+ (\the\dynkin@rank@minus@one;1) --
(\the\dynkin@rank;1) --
- (3;\the\drmo) --
- (2;\the\drmt) --
+ (3;\the\dynkin@rank@minus@one) --
+ (2;\the\dynkin@rank@minus@two) --
cycle;%
\fill[/Lie Hasse diagram/top]
- (\the\drmt;1) --
- (\the\drmo;1) --
- (2;\the\drmt) --
- (1;\the\drmt) --
+ (\the\dynkin@rank@minus@two;1) --
+ (\the\dynkin@rank@minus@one;1) --
+ (2;\the\dynkin@rank@minus@two) --
+ (1;\the\dynkin@rank@minus@two) --
cycle;%
\fill[/Lie Hasse diagram/left]
- (1;\the\drmt) --
- (2;\the\drmt) --
- (3;\the\drmo) --
- (2;\the\drmo) --
+ (1;\the\dynkin@rank@minus@two) --
+ (2;\the\dynkin@rank@minus@two) --
+ (3;\the\dynkin@rank@minus@one) --
+ (2;\the\dynkin@rank@minus@one) --
cycle;%
\end{pgfonlayer}%
}%
@@ -883,9 +902,7 @@
\newcount\D@g%
\newcount\maxD@grd%
\newcount\D@grd%
-\newcount\maxxD%
-\newcount\iD%
-\newcount\xxD%
+\newcount\lie@hasse@D@x%
\newcount\sum@D%
\NewDocumentCommand\place@D@roots{}%
{%
@@ -918,37 +935,34 @@
\repeat%
}%
}%
-\newcount\drpo%
\NewDocumentCommand\place@D@root@at{mm}%
{%
- \xxD #1\relax%
- \advance\xxD by #2\relax%
- \advance\xxD by #2\relax%
- \advance\xxD by -3\relax%
- \drpo \the\dynkin@rank\relax%
- \advance\drpo by 1\relax%
+ \lie@hasse@D@x #1\relax%
+ \advance\lie@hasse@D@x by #2\relax%
+ \advance\lie@hasse@D@x by #2\relax%
+ \advance\lie@hasse@D@x by -3\relax%
\sum@D #1\relax%
\advance\sum@D by #2\relax%
\ifnum\sum@D=\the\dynkin@rank%
\global\def\D@root@x%
- {\the\xxD-\lie@hasse@three@D@shift}%
+ {\the\lie@hasse@D@x-\lie@hasse@three@D@shift}%
\else%
- \ifnum\sum@D=\the\drpo%
+ \ifnum\sum@D=\the\dynkin@rank@plus@one%
\ifnum#1<\the\dynkin@rank%
\global\def\D@root@x%
- {\the\xxD-2+\lie@hasse@three@D@shift}%
+ {\the\lie@hasse@D@x-2+\lie@hasse@three@D@shift}%
\else%
- \global\def\D@root@x{\the\xxD}%
+ \global\def\D@root@x{\the\lie@hasse@D@x}%
\fi%
\else%
\ifnum\sum@D<\the\dynkin@rank%
- \global\def\D@root@x{\the\xxD}%
+ \global\def\D@root@x{\the\lie@hasse@D@x}%
\else%
% if \sum@D exceeds rank+1
\ifnum#1<\the\dynkin@rank%
- \global\def\D@root@x{\the\xxD-2}%
+ \global\def\D@root@x{\the\lie@hasse@D@x-2}%
\else%
- \global\def\D@root@x{\the\xxD}%
+ \global\def\D@root@x{\the\lie@hasse@D@x}%
\fi%
\fi%
\fi%
@@ -956,7 +970,7 @@
\coordinate
(#1;#2)
at
- ({(\D@root@x)*\dynkin@edge@length/2},{(#1-1)*\dynkin@edge@length/2})
+ ({(\D@root@x)*\lie@hasse@edge@length/2},{(#1-1)*\lie@hasse@edge@length/2})
{};%
}%
\NewDocumentCommand\draw@D@edges{}%
@@ -983,7 +997,8 @@
\D@r 1\relax%
{%
\loop%
- \draw@D@edges@at{#1}{\the\D@r}{\the\max@D@roots}%
+%%% \draw@D@edges@at{#1}{\the\D@r}{\the\max@D@roots}%
+ \draw@D@edges@at{#1}{\the\D@r}%
\advance\D@r by 1\relax%
\ifnum\D@r<\the\max@D@roots@plus@one%
\repeat%
@@ -1000,10 +1015,6 @@
\newcount\hasse@D@label%
\NewDocumentCommand\draw@D@edges@at{mm}%
{%
- \drmo\the\dynkin@rank\relax%
- \advance\drmo by -1\relax%
- \drpo \the\dynkin@rank\relax%
- \advance\drpo by 1\relax%
\hasse@D@gpo#1\relax%
\advance\hasse@D@gpo by 1\relax%
\hasse@D@gpi#1\relax%
@@ -1035,7 +1046,7 @@
\xdef\hasse@D@layer{Dynkin above}%
\else%
% below or middle.
- \ifnum\hasse@D@gpi=\the\drpo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@plus@one%
\xdef\hasse@D@layer{Dynkin behind}%
\fi%
\fi%
@@ -1045,7 +1056,7 @@
\fi%
\fi%
\ifnum\dynkin@rank>#1%
- \ifnum\hasse@D@gpi<\the\drpo%
+ \ifnum\hasse@D@gpi<\the\dynkin@rank@plus@one%
\else%
\global\advance\hasse@D@label -1\relax%
\fi%
@@ -1069,7 +1080,7 @@
\fi%
\fi%
\ifnum#1=1%
- \ifnum\drmo=#2%
+ \ifnum\dynkin@rank@minus@one=#2%
\global\hasse@Dfalse\relax%
\else%
\xdef\hasse@D@LR{right}%
@@ -1080,13 +1091,13 @@
\ifnum\hasse@D@label>\the\dynkin@rank%
\hasse@D@label -\hasse@D@label\relax%
\advance\hasse@D@label \the\dynkin@rank\relax%
- \advance\hasse@D@label \the\drmo\relax%
+ \advance\hasse@D@label \the\dynkin@rank@minus@one\relax%
\fi%
- \ifnum\drmo<#1%
+ \ifnum\dynkin@rank@minus@one<#1%
\else%
\ifnum#2=1%
\else%
- \ifnum\hasse@D@gpi<\the\drpo%
+ \ifnum\hasse@D@gpi<\the\dynkin@rank@plus@one%
\else%
\advance\hasse@D@label 1\relax%
\fi%
@@ -1099,11 +1110,11 @@
\global\advance\hasse@D@target by 1\relax%
\fi%
\else%
- \ifnum\drmo=#1%
+ \ifnum\dynkin@rank@minus@one=#1%
\global\advance\hasse@D@target by -1\relax%
\fi%
\fi%
- \ifnum\hasse@D@gpi=\the\drpo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@plus@one%
\ifnum#2>1%
\xdef\hasse@D@layer{Dynkin behind}%
\xdef\hasse@D@LR{right}%
@@ -1112,7 +1123,7 @@
\ifnum\hasse@D@gpi=\the\dynkin@rank%
\xdef\hasse@D@layer{Dynkin above}%
\else%
- \ifnum\hasse@D@gpi=\the\drmo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@minus@one%
\xdef\hasse@D@layer{Dynkin above}%
\else%
\xdef\hasse@D@layer{Dynkin middle}%
@@ -1129,7 +1140,7 @@
\end{pgfonlayer}%
\fi%
% % Draw any other edges.
- \ifnum\hasse@D@gpi=\the\drmo%
+ \ifnum\hasse@D@gpi=\the\dynkin@rank@minus@one%
\hasse@D@target#2\relax%
\advance\hasse@D@target by 1\relax%
\begin{pgfonlayer}{Dynkin behind}
@@ -1142,38 +1153,7 @@
}%
\newcount\maxD@grd%
\newcount\D@grd%
-\newcount\maxxD%
\newcount\sum@D%
-\NewDocumentCommand\draw@D@roots{}%
-{%
- \drmo \the\dynkin@rank\relax%
- \advance\drmo by -1\relax%
- \maxD@grd \the\dynkin@rank\relax%
- \advance\maxD@grd by \the\dynkin@rank\relax%
- \advance\maxD@grd by -2\relax%
- \D@grd 1\relax%
- \loop%
- % Construct the roots at grade \D@grd.
- \draw@D@roots@at@grade{\D@grd}%
- \advance\D@grd by 1\relax%
- \ifnum\D@grd<\the\maxD@grd%
- \repeat%
-}%
-\NewDocumentCommand\draw@D@roots@at@grade{m}%
-{%
- \hasse@D@width@at@grade{#1}{\max@D@roots}%
- \max@D@roots@plus@one \the\max@D@roots\relax%
- \advance\max@D@roots@plus@one 1\relax%
- \D@r 1\relax%
- {%
- \loop%
- \draw@lie@hasse@root{\the\D@grd;\the\D@r}%
- \advance\D@r by 1\relax%
- \ifnum\D@r<\the\max@D@roots@plus@one%
- \repeat%
- }%
-}%
-%}%
\newcount\lie@hasse@grade@no
\newcount\lie@hasse@root@no
\def\lie@hasse@XX{}
@@ -1205,14 +1185,14 @@
\coordinate
(\the\lie@hasse@grade@no;\the\lie@hasse@root@no)
at
- ({\lie@hasse@XX*\dynkin@edge@length/2},
- {(\the\lie@hasse@grade@no-1)*\dynkin@edge@length/2}) {};%
+ ({\lie@hasse@XX*\lie@hasse@edge@length/2},
+ {(\the\lie@hasse@grade@no-1)*\lie@hasse@edge@length/2}) {};%
\global\advance\lie@hasse@root@no by 1%
}%
\NewDocumentCommand\lie@hasse@place@root@list{m}%
{%
\global\lie@hasse@root@no 1\relax%
- \expandafter\forcsvlist\expandafter{\lie@hasse@place@root}{#1}%
+ \expandafter\forcsvlist\expandafter\lie@hasse@place@root{#1}%
\global\advance\lie@hasse@grade@no by 1%
}%
\NewDocumentCommand\lie@hasse@place@roots{m}%
@@ -1224,26 +1204,6 @@
}%
\expandafter\docsvlist\expandafter{#1}%
}%
-\NewDocumentCommand\lie@hasse@draw@root{m}%
-{%
- \draw@lie@hasse@root{\the\lie@hasse@grade@no;\the\lie@hasse@root@no}%
- \global\advance\lie@hasse@root@no by 1%
-}%
-\NewDocumentCommand\lie@hasse@root@draw@list{m}%
-{%
- \global\lie@hasse@root@no 1\relax%
- \expandafter\forcsvlist\expandafter{\lie@hasse@draw@root}{#1}%
- \global\advance\lie@hasse@grade@no by 1%
-}%
-\NewDocumentCommand\lie@hasse@draw@roots{m}%
-{%
- \global\lie@hasse@grade@no 1\relax%
- \renewcommand*{\do}[1]%
- {%
- \lie@hasse@root@draw@list{##1}%
- }%
- \expandafter\docsvlist\expandafter{#1}%
-}%
\newcount\lie@hasse@grade@no@plus@one%
\newcount\lie@hasse@edge@count%
\def\lie@hasse@edge@go{%
@@ -1256,7 +1216,8 @@
{%
\global\advance\lie@hasse@edge@count by 1\relax%
\begin{pgfonlayer}{Dynkin above}%
- \lie@hasse@finish@edge#1!%
+%%? \lie@hasse@finish@edge#1!%
+ \lie@hasse@finish@edge#1\relax%
\end{pgfonlayer}%
}%
\def\lie@hasse@process@edge@behind#1!%
@@ -1289,13 +1250,12 @@
\NewDocumentCommand\lie@hasse@process@edge@lists{m}%
{%
\global\lie@hasse@grade@no 1\relax%
- \expandafter\forcsvlist\expandafter{\lie@hasse@process@edge@list}{#1}%
+ \expandafter\forcsvlist\expandafter\lie@hasse@process@edge@list{#1}%
}%
\NewDocumentCommand\hasse@X{mm}%
{%
\lie@hasse@place@roots{#1}%
\lie@hasse@process@edge@lists{#2}%
- \lie@hasse@draw@roots{#1}%
}%
\NewDocumentCommand\hasse@E@six@width@at@grade{mm}%
{%
@@ -1323,7 +1283,11 @@
#2 1%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
-% In the following code, edges are described by grade: in grade g, the expression i+r<j. means an edge from g;i to (g+1);j labelled by root r, with a label on the left; use > instead of < to get the right. Use a star in front to get this edge on the higher layer.
+% In the following code, edges are described by grade:
+% in grade g, the expression i+r<j. means an edge from
+% g;i to (g+1);j labelled by root r, with a label on
+% the left; use > instead of < to get the right. Use a
+% star in front to get this edge on the higher layer.
\NewDocumentCommand\hasse@E@six{}%
{%
\hasse@X%
@@ -1353,13 +1317,45 @@
}%%%
\iflie@hasse@threeD%
\begin{pgfonlayer}{Dynkin middle}%
-\fill[/Lie Hasse diagram/top] (2;1) -- (5;3) -- (2;5) -- (1;5) -- (2;4) -- (1;3) -- (2;2) -- (1;2) -- cycle;%
-\fill[/Lie Hasse diagram/top] (2;3) -- (4;1) -- (6;2) -- (4;5) -- cycle;%
-\fill[/Lie Hasse diagram/right] (1;3) -- (2;3) -- (4;5) -- (3;5) -- cycle;%
-\fill[/Lie Hasse diagram/left] (3;1) -- (4;1) -- (2;3) -- (1;3) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;3) -- (5;1) -- (6;1) -- (5;2) -- cycle;%
-\fill[/Lie Hasse diagram/right] (4;3) -- (5;2) -- (6;3) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (5;2) -- (7;1) -- (9;1) -- (7;3) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (2;1) --
+ (5;3) --
+ (2;5) --
+ (1;5) --
+ (2;4) --
+ (1;3) --
+ (2;2) --
+ (1;2) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (2;3) --
+ (4;1) --
+ (6;2) --
+ (4;5) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (1;3) --
+ (2;3) --
+ (4;5) --
+ (3;5) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (3;1) --
+ (4;1) --
+ (2;3) --
+ (1;3) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (4;3) --
+ (5;1) --
+ (6;1) --
+ (5;2) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (4;3) --
+ (5;2) --
+ (6;3) --
+ (5;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (5;2) --
+ (7;1) --
+ (9;1) --
+ (7;3) -- cycle;%
\end{pgfonlayer}%
\fi%
}%
@@ -1399,7 +1395,6 @@
#2 1%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
}%
-
\NewDocumentCommand\hasse@E@seven{}%
{%
\hasse@X%
@@ -1457,20 +1452,64 @@
}%%%
\iflie@hasse@threeD%
\begin{pgfonlayer}{Dynkin middle}%
-\fill[/Lie Hasse diagram/top] (2;1) -- (6;3) -- (2;6) -- (1;6) -- (2;5) -- (1;4) -- (2;3) -- (1;3) --
- (2;2) -- (1;2) -- cycle;%
-\fill[/Lie Hasse diagram/top] (5;1) -- (7;3) -- (4;6) -- (2;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (7;1) -- (9;3) -- (7;5) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/top] (9;1) -- (12;1) -- (13;1) -- (14;1) -- (11;3) -- (7;2) -- cycle;%
-\fill[/Lie Hasse diagram/right] (1;4) -- (2;4) -- (4;6) -- (3;6) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;1) -- (5;1) -- (2;4) -- (1;4) -- cycle;%
-\fill[/Lie Hasse diagram/left] (4;4) -- (6;1) -- (8;1) -- (7;2) -- (6;2) -- (5;4) -- cycle;%
-\fill[/Lie Hasse diagram/right] (4;4) -- (5;4) -- (6;5) -- (5;6) -- cycle;%
-\fill[/Lie Hasse diagram/right] (6;2) -- (7;2) -- (9;4) -- (8;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (2;1) --
+ (6;3) --
+ (2;6) --
+ (1;6) --
+ (2;5) --
+ (1;4) --
+ (2;3) --
+ (1;3) --
+ (2;2) --
+ (1;2) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (5;1) --
+ (7;3) --
+ (4;6) --
+ (2;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (7;1) --
+ (9;3) --
+ (7;5) --
+ (5;4) -- cycle;%
+ \fill[/Lie Hasse diagram/top]
+ (9;1) --
+ (12;1) --
+ (13;1) --
+ (14;1) --
+ (11;3) --
+ (7;2) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (1;4) --
+ (2;4) --
+ (4;6) --
+ (3;6) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (4;1) --
+ (5;1) --
+ (2;4) --
+ (1;4) -- cycle;%
+ \fill[/Lie Hasse diagram/left]
+ (4;4) --
+ (6;1) --
+ (8;1) --
+ (7;2) --
+ (6;2) --
+ (5;4) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (4;4) --
+ (5;4) --
+ (6;5) --
+ (5;6) -- cycle;%
+ \fill[/Lie Hasse diagram/right]
+ (6;2) --
+ (7;2) --
+ (9;4) --
+ (8;4) -- cycle;%
\end{pgfonlayer}%
\fi%
}%
-
\NewDocumentCommand\hasse@E@eight@width@at@grade{mm}%
{%
\ifnum#1=1%
@@ -1527,7 +1566,6 @@
#2 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%
}%
-
\NewDocumentCommand\hasse@E@eight{}%
{%
\hasse@X{%
@@ -1754,11 +1792,11 @@
{{0,2,4,6},{1,3,5},{2,3:1,4},{2:1,3,4:1},{1:1,3:1,5:1},{2:1,4:1},{1:1,3:1},{2:1},{2:2},{2:3},{2:4}}%
{% grades:
{% 1
-1+2<1,*2+3<2,*3+4<3,*2+1>1,*3+2>2,4+3>3},
+1+2<1,*2+3>2,*3+4>3,*2+1<1,*3+2<2,4+3>3},
{% 2
-*1+3<1,*2+4<3,*2+3<2,*2+1<1,3+2>3},
+*1+3<1,*2+4>3,*2+1<1,*2+3>2,3+2>3},
{% 3
-*1+3<1,1+4<2,*2+4<3,*2+1<1,3+1>2,*3+3>3},
+*1+3<1,1+4>2,*2+4>3,*2+1<1,3+1>2,*3+3>3},
{% 4
*1+2<1,*1+4<2,2+3<2,*3+1>2,*3+4>3},
{% 5
@@ -2026,8 +2064,8 @@
}%
\global\root@sum@resetfalse%
}%
-\xdef\my@root@sum{}%
-\xdef\my@fixed@root@sum{}%
+\xdef\lie@hasse@root@sum{}%
+\xdef\lie@hasse@fixed@root@sum{}%
\NewDocumentCommand\rootSum{oommm}%
{%
\IfValueT{#1}%
@@ -2053,15 +2091,15 @@
\fi%
\IfStrEqCase{\dynkin@series}%
{%
- {A}{\hasse@A@root@sum{#3}{#4}{\my@root@sum}}%
- {B}{\hasse@B@root@sum{#3}{#4}{\my@root@sum}}%
- {C}{\hasse@C@root@sum{#3}{#4}{\my@root@sum}}%
- {D}{\hasse@D@root@sum{#3}{#4}{\my@root@sum}}%
- {E}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}%
- {F}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}%
- {G}{\xdef\my@root@sum{\exceptional@root@sum{#3;#4}}}%
+ {A}{\hasse@A@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {B}{\hasse@B@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {C}{\hasse@C@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {D}{\hasse@D@root@sum{#3}{#4}{\lie@hasse@root@sum}}%
+ {E}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}%
+ {F}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}%
+ {G}{\xdef\lie@hasse@root@sum{\exceptional@root@sum{#3;#4}}}%
}%
- \StrSubstitute{\my@root@sum}{.}{,}[#5]%
+ \StrSubstitute{\lie@hasse@root@sum}{.}{,}[#5]%
}%
%% \rootSystemHeight[G][2]{\h} sets the counter \h to the height of the poset
%% of the root system G2. \rootSystemHeight{\h} uses the current root system.
@@ -2451,7 +2489,7 @@
4;1=3.1,%
5;1=3.2}%
}%
-\NewDocumentCommand\forAllPositiveRootsInHasseDiagram{m}%
+\NewDocumentCommand\forAllPositiveRoots{m}%
{%
\rootSystemHeight{\lie@hasse@height}%
\foreach \root@grady in {1,...,\the\lie@hasse@height}%
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/litesolution/litesolution.cls b/Master/texmf-dist/tex/latex/litesolution/litesolution.cls
index 0f59d89630f..2b7a3ecb345 100644
--- a/Master/texmf-dist/tex/latex/litesolution/litesolution.cls
+++ b/Master/texmf-dist/tex/latex/litesolution/litesolution.cls
@@ -1,5 +1,5 @@
%% ***********************************************************
-%% Copyright 2024 by Mingyu Hsia <xiamyphys@hdu.edu.cn> *
+%% 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 *
@@ -11,19 +11,18 @@
%% *
%% This work has the LPPL maintenance status `maintained'. *
%% *
-%% The Current Maintainer of this work is Mingyu Hsia. *
+%% 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/litsolution *
+%% available at https://github.com/xiamyphys/litesolution *
%% ***********************************************************
% !Mode:: "TeX:UTF-8"
\NeedsTeXFormat{LaTeX2e}
\PassOptionsToPackage{no-math}{fontspec}
\PassOptionsToPackage{svgnames}{xcolor}
-\ProvidesClass{litesolution}[2024/05/07 v2.2b LiteSolution document class]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
+\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}}
@@ -39,7 +38,7 @@
\ProcessKeyvalOptions*\relax
\LoadClass[letterpaper,11pt]{book}
-\RequirePackage{setspace,datetime,caption,booktabs,multicol,diagbox,paracol}
+\RequirePackage{setspace,datetime,tabularx,caption,subcaption,anyfontsize,booktabs,multicol,diagbox,paracol}
\linespread{1.3}
\ddmmyyyydate
\captionsetup{labelsep=period,labelfont={bf,sf},font=small}
@@ -52,18 +51,18 @@
\setlist[enumerate]{itemsep=.5ex}
\setlist[itemize]{itemsep=.5ex}
\RequirePackage[notelinecolor=MidnightBlue,notemargin=.75in]{notebeamer}
-\geometry{margin=1in}
+\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{graphics,graphicx,wallpaper,pagecolor}
+\RequirePackage{graphicx,magicwatermark,pagecolor}
\graphicspath{{./figure/}{./figures/}{./image/}{./images/}{./graphics/}{./graphic/}{./pictures/}{./picture/}}
\RequirePackage{ifxetex}
\ifXeTeX
- \RequirePackage[quiet]{xeCJK}
+ \RequirePackage[quiet,CJKmath,CheckSingle,PlainEquation]{xeCJK}
\RequirePackage{zhlipsum}
\setlength{\parindent}{2em}
\fi
@@ -82,8 +81,7 @@
\RequirePackage[mono=false]{libertine}
}{\relax}
\let\openbox\relax\def\hmmax{0}\def\bmmax{0}
-\RequirePackage{amsthm,amssymb,mathtools,physics2,bm,fixdif,derivative,cancel,extarrows,siunitx,xfrac,nicematrix}
-\renewcommand\qedsymbol{$\color{gray}\blacksquare$}
+\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
@@ -109,6 +107,7 @@
\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={%
@@ -133,56 +132,77 @@
\def\mode#1{\textcolor{Indigo}{\textsf{#1}}}
\def\cmd#1{\textcolor{MidnightBlue}{\texttt{\string#1}}}
-\def\subtitle#1{\gdef\@subtitle{#1}}
-\def\bioinfo#1{\gdef\@bioinfo{#1}}
-\NewDocumentCommand\coverhead{ O{0} m }{
- \gdef\@coverheadrotate{#1}\gdef\@coverhead{#2}
+\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
}
-\NewDocumentCommand\cover{ o m }{
- \IfValueT{#1}{\gdef\@coverpattern{#1}}
- \gdef\@cover{#2}}
-\RenewDocumentCommand\maketitle{O{MidnightBlue}}{
+
+\renewcommand*\maketitle{
\begin{titlepage}
- \newgeometry{margin=0in}\newpagecolor{#1!15}
+ \newgeometry{margin=0in}
+ \newpagecolor{\@covercolor!15}
+ \gdef\@covercolor{DarkSlateGray}
\tikz[remember picture,overlay]{
- \ifcsname @coverhead\endcsname
- \node [rotate=\@coverheadrotate] at ($(current page.center)+(0,.35*\paperheight)$) {\includegraphics[width=\paperwidth]{\@coverhead}};
- \fi
\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);
- \ifcsname @cover\endcsname
- \node [opacity=.5] at ($(current page.south west)+(.65*\paperwidth,.3*\paperheight)$) {\includegraphics[height=.3\paperheight]{\@cover}};
- \ifcsname @coverpattern\endcsname
- \fill [pattern=\@coverpattern,pattern color=#1!15!white!25] ($(current page.south west)+(.3*\paperwidth,0)$) rectangle ++ (.7*\paperwidth,.6\paperheight);
- \fi\fi
\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}
+ \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
+ \restoregeometry
+ \restorepagecolor
\if@twoside
\clearpage%
- \newpagecolor{#1!15!white!50}
+ \newpagecolor{\@covercolor!15!white!25}
\thispagestyle{empty}%
\null\clearpage
- \fi\restorepagecolor
+ \fi
+ \restorepagecolor
}
\RequirePackage{tocloft}
\setlength{\cftbeforetoctitleskip}{6\p@}
\setlength{\cftaftertoctitleskip}{24\p@}
-\setlength{\cftbeforesecskip}{3\p@}
-\def\contentsname{\sffamily\scshape\hfill Contents\hfill}
+\AddToHook{cmd/tableofcontents/before}{
+ \begingroup
+ \setstretch{1.5}
+}
+\AddToHook{cmd/tableofcontents/after}{\endgroup}
+\renewcommand\contentsname{\sffamily\scshape Contents}
\setcounter{tocdepth}{1}
\let\@chapapptmp\@chapapp
-\def\@chapapp{\textsc{\@chapapptmp}}
+\gdef\@chapapp{\textsc{\@chapapptmp}}
\def\chapterimage#1{\gdef\@chapterimage{#1}}
-\def\HUGE{\@setfontsize\HUGE{30}{40}}
\def\@makechapterhead#1{%
\def\thesection{\arabic{chapter}.\arabic{section}}
\def\theproblem{\thechapter.\arabic{problem}}
@@ -194,8 +214,8 @@
\fi
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
- \parbox{6em}
- {\centering\HUGE\normalfont\bfseries\textcolor{darkgray}\thechapter\vskip4\p@\normalsize\bfseries\textcolor{darkgray}{\bfseries\sffamily\@chapapp}}%
+ \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}
@@ -203,20 +223,20 @@
\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@}}
+\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
+\renewcommand*\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
\ifnum \thechapter=0
\vspace*{\fill}
{\centering\itshape\Large This page was intentionally left blank.\par}
@@ -231,27 +251,38 @@
\RequirePackage{fancyhdr}
\pagestyle{fancy}
- \let\oldheadrule\headrule
- \renewcommand{\headrule}{{\color{gray}\oldheadrule}}
- \renewcommand{\headrulewidth}{1pt}
- \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
- \setlength{\headheight}{14pt}
+\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}
+\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}}
@@ -261,6 +292,7 @@
\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}
@@ -268,6 +300,7 @@
\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}
%%
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/lni/lni.cls b/Master/texmf-dist/tex/latex/lni/lni.cls
index 90eed28073c..8e8c9fae7e2 100644
--- a/Master/texmf-dist/tex/latex/lni/lni.cls
+++ b/Master/texmf-dist/tex/latex/lni/lni.cls
@@ -14,7 +14,7 @@
%% --------| -----------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{lni}
- [2024/01/08 v1.8.1 Official class for submissions to the ``Lecture Notes
+ [2024/07/23 v1.10 Official class for submissions to the ``Lecture Notes
in Informatics'']
\RequirePackage{iftex}\ifluatex\else\pdfoutput=1\fi%
\def\@clearglobaloption#1{%
@@ -291,7 +291,7 @@
\RequirePackage[hang]{footmisc}
\setlength{\footnotemargin}{1em}
\long\def\@makefntext#1{%
- \def\@makefnmark{\rlap{\normalfont\@thefnmark}}%
+ \def\@makefnmark{\rlap{\normalfont\textsuperscript{\@thefnmark}}}%
\ifFN@hangfoot
\bgroup
\setbox\@tempboxa\hbox{%
@@ -371,53 +371,71 @@
\renewcommand\Authsep{, }
\renewcommand\Authands{\iflanguage{ngerman}{ und }{, and }}
\renewcommand\Authand{\iflanguage{ngerman}{ und }{ and }}
-\renewcommand{\AB@authnote}[1]{$^{\text{\mbox{\normalfont\footnotesize #1}}}$}
+\NewDocumentCommand{\multiaffil}{ >{\SplitList{,}} m m m}{%
+ \gdef\@currEmail{#2}
+ \gdef\@currOrcid{#3}
+ \ProcessList{#1}{\@multiaffil}
+}
+
+\newcommand{\@multiaffil}[1]{%
+ \ifcsundef{@emailsandorcids#1}{\csgdef{@emailsandorcids#1}{}}{}%
+ \ifcsempty{@emailsandorcids#1}%
+ {\protected@csxappto{@emailsandorcids#1}{%
+ \if\relax\@currEmail\relax\else\email{\@currEmail}\fi\if\relax\@currOrcid\relax\else,\ \orcid{\@currOrcid}\fi}}%
+ {\protected@csxappto{@emailsandorcids#1}{%
+ \if\relax\@currEmail\relax\else;\ \email{\@currEmail}\fi\if\relax\@currOrcid\relax\else,\ \orcid{\@currOrcid}\fi}}%
+}
+
\renewcommand\author[4][]{%
\ifnewaffil\addtocounter{affil}{1}%
\edef\AB@thenote{\arabic{affil}}%
\fi%
\if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}%
- \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}%
\setcounter{Maxaffil}{0}\fi
\ifnum\value{authors}=0\def\@firstauthor{#2}\fi
\ifnum\value{authors}>1\relax
- \@namedef{@sep\number\c@authors}{\Authsep}\fi
+ \@namedef{@sep\number\c@authors}{\Authsep}\fi
\addtocounter{authors}{1}%
\begingroup
- \let\protect\@unexpandable@protect \let\and\AB@pand
- \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}%
- \@temptokena=\expandafter{\AB@authors}%
- \@temptokenb=\expandafter{\AB@authors}%
- {\def\\{\protect\\[\@affilsep]\protect\Affilfont
- \protect\AB@resetsep}%
- \xdef\AB@author{\AB@blk@and#2}%
- \ifnewaffil\gdef\AB@las{}\gdef\AB@lasx{\protect\Authand}\gdef\AB@as{}%
- \xdef\AB@authors{\the\@temptokena\AB@blk@and}%
- \else
- \xdef\AB@authors{\the\@temptokena\AB@as\AB@au@str}%
- \global\let\AB@las\AB@lasx\gdef\AB@lasx{\protect\Authands}%
- \gdef\AB@as{\Authsep}%
- \fi
- \gdef\AB@au@str{#2}}%
- \@temptokena=\expandafter{\AB@authlist}%
- \@temptokenb=\expandafter{\@authlisthead}%
- \let\\=\authorcr
- \xdef\AB@authlist{\the\@temptokena
- \protect\@nameuse{@sep\number\c@authors}%
- \protect\Authfont#2\if\relax#4\relax\else\,\orcidlink{#4}\fi\AB@authnote{\AB@note}}%
- \xdef\@authlisthead{\the\@temptokenb
- \protect\@nameuse{@sep\number\c@authors}%
- \protect\Authfont#2}%
+ \let\protect\@unexpandable@protect \let\and\AB@pand
+ \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}%
+ \@temptokena=\expandafter{\AB@authors}%
+ \@temptokenb=\expandafter{\AB@authors}%
+ {\def\\{\protect\\[\@affilsep]\protect\Affilfont
+ \protect\AB@resetsep}%
+ \xdef\AB@author{\AB@blk@and#2}%
+ \ifnewaffil\gdef\AB@las{}\gdef\AB@lasx{\protect\Authand}\gdef\AB@as{}%
+ \xdef\AB@authors{\the\@temptokena\AB@blk@and}%
+ \else
+ \xdef\AB@authors{\the\@temptokena\AB@as\AB@au@str}%
+ \global\let\AB@las\AB@lasx\gdef\AB@lasx{\protect\Authands}%
+ \gdef\AB@as{\Authsep}%
+ \fi
+ \gdef\AB@au@str{#2}}%
+ \@temptokena=\expandafter{\AB@authlist}%
+ \@temptokenb=\expandafter{\@authlisthead}%
+ \let\\=\authorcr
+ \xdef\AB@authlist{\the\@temptokena
+ \protect\@nameuse{@sep\number\c@authors}%
+ \protect\Authfont#2\if\relax#4\relax\else\,\orcidlink{#4}\fi\AB@authnote{\AB@note}}%
+ \xdef\@authlisthead{\the\@temptokenb
+ \protect\@nameuse{@sep\number\c@authors}%
+ \protect\Authfont#2}%
\endgroup
\ifnum\value{authors}>2\relax
\@namedef{@sep\number\c@authors}{\Authands}\fi
+ \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}%
+ \sbox\z@{\@tempcnta=0#1\relax}%
+ \expandafter\ifdim\wd\z@>\z@\relax
+ \multiaffil{#1}{#3}{#4}
+ \else
+ \ifcsundef{@emailsandorcids\AB@note}{\csgdef{@emailsandorcids\AB@note}{}}{}%
\ifcsempty{@emailsandorcids\AB@note}%
{\csgappto{@emailsandorcids\AB@note}{%
- \if\relax#3\relax\else\email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}%
- }%
+ \if\relax#3\relax\else\email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}}%
{\csgappto{@emailsandorcids\AB@note}{%
\if\relax#3\relax\else;\ \email{#3}\fi\if\relax#4\relax\else,\ \orcid{#4}\fi}}%
-
+ \fi%
\newaffilfalse
}
\renewcommand\@author{%
@@ -660,6 +678,7 @@
\renewcommand{\headrulewidth}{0.4pt} %Linie unter Kopfzeile
\fi%
\RequirePackage{url}
+\urlstyle{same}
\g@addto@macro{\UrlBreaks}{\UrlOrds}
\RequirePackage{xspace}
\AddToHook{env/document/begin}[lni/loadhyperref]{%
diff --git a/Master/texmf-dist/tex/latex/lstaddons/lstautogobble.sty b/Master/texmf-dist/tex/latex/lstaddons/lstautogobble.sty
index 8f065b4a5c2..26fdd51cc0f 100644
--- a/Master/texmf-dist/tex/latex/lstaddons/lstautogobble.sty
+++ b/Master/texmf-dist/tex/latex/lstaddons/lstautogobble.sty
@@ -1,4 +1,4 @@
-%% Copyright (C) 2011-2012 by Martin Scharrer <martin@scharrer-online.de>
+%% Copyright (c) 2011-2022 by Martin Scharrer <martin.scharrer@web.de>
%% -----------------------------------------------------------------------
%% 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/lstaddons/lstlinebgrd.sty b/Master/texmf-dist/tex/latex/lstaddons/lstlinebgrd.sty
index 66f42ab2c96..c02b062aaff 100644
--- a/Master/texmf-dist/tex/latex/lstaddons/lstlinebgrd.sty
+++ b/Master/texmf-dist/tex/latex/lstaddons/lstlinebgrd.sty
@@ -1,6 +1,6 @@
-%% Copyright (C) 2011-2012 by Martin Scharrer <martin@scharrer-online.de>
+%% Copyright (c) 2011-2024 by Martin Scharrer <martin.scharrer@web.de>
%% ----------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -18,8 +18,8 @@
%% and the derived filebase lstlinebgrd.sty.
%%
\ProvidesPackage{lstlinebgrd}[%
- 2012/05/03
- v0.1
+ 2014/08/18
+ v0.2
Provides 'listings' options to color the background of lines]
\RequirePackage{listings}
\RequirePackage{xcolor}
@@ -27,10 +27,10 @@
\lst@Key{numbers}{none}{%
\def\lst@PlaceNumber{\lst@linebgrd}%
\lstKV@SwitchCases{#1}%
- {none&\\%
- left&\def\lst@PlaceNumber{\llap{\normalfont
+ {none:\\%
+ left:\def\lst@PlaceNumber{\llap{\normalfont
\lst@numberstyle{\thelstnumber}\kern\lst@numbersep}\lst@linebgrd}\\%
- right&\def\lst@PlaceNumber{\rlap{\normalfont
+ right:\def\lst@PlaceNumber{\rlap{\normalfont
\kern\linewidth \kern\lst@numbersep
\lst@numberstyle{\thelstnumber}}\lst@linebgrd}%
}{\PackageError{Listings}{Numbers #1 unknown}\@ehc}}
diff --git a/Master/texmf-dist/tex/latex/luwiantype/luwiantype.sty b/Master/texmf-dist/tex/latex/luwiantype/luwiantype.sty
new file mode 100644
index 00000000000..ea33fb4fb59
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/luwiantype/luwiantype.sty
@@ -0,0 +1,1035 @@
+%% Copyright 2024 Jonathan Walls
+%
+% 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/lppl-1-3c.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 Jonathan Walls.
+%
+% This work consists of the files luwiantype.sty, luwiantype-doc.tex
+% and the derived file luwiantype-doc.pdf.
+%
+%
+% Version history:
+% 1.2 - updated to resolve some minor typos and command formatting
+% 1.1 - updated to comply with CTAN formatting requirements, adjustments to licensing
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{luwiantype}[2024/07/15 Luwian Hieroglyph Typing Package]
+
+%Required packages and declarations
+\usepackage{fontspec}
+\usepackage{graphicx}
+\usepackage{stackengine}
+\usepackage{moresize}
+
+%Commands for font selection and import
+\newcommand{\Luwian}{\setmainfont[ExternalLocation=Fonts/]{LuwianFont.ttf}\Large}
+\newcommand{\Lat}{\setmainfont{Charis SIL}\normalsize}
+
+%Formatting commands
+\newcommand{\badeq}{\char"2E17}
+\newcommand{\hl}{\char"2308}
+\newcommand{\hr}{\char"2309}
+\newcommand{\tsup}[1]{\textsuperscript{#1}}
+\newcommand{\tsub}[1]{\textsubscript{#1}}
+\newcommand{\boust}[1]{\reflectbox{#1}}
+\newcommand{\gstack}{\Shortunderstack}
+
+
+
+%Main sign commands
+\newcommand{\EGO}[1][]{
+ \ifx\relax#1\relax
+ {\char"14400}
+ \else \ifnum #1=2
+ {\char"14401}
+ \fi\fi
+}
+\newcommand{\LIII}{\char"14402}
+\newcommand{\MONS}[1][]{
+ \ifx\relax#1\relax
+ {\char"144EC}
+ \else \ifnum #1=2
+ {\char"14403}
+ \fi\fi
+}
+\newcommand{\LV}{\char"14404}
+\newcommand{\ADORARE}{\char"14405}
+\newcommand{\EDERE}{\char"14406}
+\newcommand{\BIBERE}{\char"14407}
+\newcommand{\AMPLECTI}{\char"14408}
+\newcommand{\CAPUT}{\char"14409}
+\newcommand{\CAPUTSCALPRUM}{\char"1440A}
+\newcommand{\LXI}{\char"1440B}
+\newcommand{\STATUA}{\char"1440C}
+\newcommand{\LXIII}{\char"1440D}
+\newcommand{\PRAE}{\char"1440E}
+\newcommand{\PARI}{\char"1440E}
+\newcommand{\DOMINA}{\char"1440F}
+\newcommand{\MAGNUSDOMINA}{\char"14410}
+\newcommand{\REX}{\char"14411}
+\newcommand{\MAGNUSREX}{\char"14412}
+\newcommand{\A}[1][]{
+ \ifx\relax#1\relax
+ {\char"145F7}
+ \else \ifnum #1=2
+ {\char"14413}
+ \fi\fi
+}
+\newcommand{\LXX}{\char"14414}
+\newcommand{\HEROS}{\char"14415}
+\newcommand{\LOQUI}{\char"14416}
+\newcommand{\LXXIII}{\char"14417}
+\newcommand{\LIS}{\char"14418}
+\newcommand{\OCULUS}{\char"14419}
+\newcommand{\FRONS}{\char"1441A}
+\newcommand{\VERSUS}{\char"1441B}
+\newcommand{\LIBARE}{\char"1441C}
+\newcommand{\FORTIS}{\char"1441D}
+\newcommand{\TA}[1][]{
+ \ifx\relax#1\relax
+ {\char"14470}
+ \else \ifnum #1=2
+ {\char"1441E}
+ \else \ifnum #1=3
+ {\char"1442C}
+ \else \ifnum #1=6
+ {\char"1445B}
+ \fi\fi\fi\fi
+}
+\newcommand{\LXXX}{\char"1441F}
+\newcommand{\LIGARE}{\char"14420}
+\newcommand{\PUGNUSPUGNUS}{\char"14420}
+\newcommand{\BRACCHIUM}{\char"14421}
+\newcommand{\LXXXIII}{\char"14422}
+\newcommand{\POST}{\char"14423}
+\newcommand{\NA}[1][]{
+ \ifx\relax#1\relax
+ {\char"14424}
+ \else \ifnum #1=2
+ {\char"1445D}
+ \fi\fi
+}
+\newcommand{\LITUUSNA}{\char"14425}
+\newcommand{\LXXXVII}{\char"14426}
+\newcommand{\LXXXVIII}{\char"14427}
+\newcommand{\PUGNUS}{\char"14428}
+\newcommand{\PUGNUSX}{\char"14429}
+\newcommand{\LXL}{\char"1442A}
+\newcommand{\CAPERE}[1][]{
+ \ifx\relax#1\relax
+ {\char"1442B}
+ \else \ifnum #1=2
+ {\char"1442E}
+ \fi\fi
+}
+\newcommand{\CAPEREIICAPEREII}{\char"1442D}
+\newcommand{\LXLIV}{\char"1442F}
+\newcommand{\INFANS}{\char"14430}
+\newcommand{\FILIUS}{\char"14430}
+\newcommand{\FILIA}{\char"14431}
+\newcommand{\REXINFANS}{\char"14432}
+\newcommand{\REXFILIUS}{\char"14432}
+\newcommand{\REXFILIA}{\char"14433}
+\newcommand{\MAGNUSFILIA}{\char"14434}
+\newcommand{\LXLVII}{\char"14435}
+\newcommand{\LXLVIII}{\char"14436}
+\newcommand{\ATAII}{\char"14437}
+\newcommand{\LL}{\char"14438}
+\newcommand{\LLI}{\char"14439}
+\newcommand{\MANUSCULTER}{\char"1443A}
+\newcommand{\ENSIS}{\char"1443B}
+\newcommand{\LLIV}{\char"1443C}
+\newcommand{\NI}[1][]{
+ \ifx\relax#1\relax
+ {\char"145D0}
+ \else \ifnum #1=2
+ {\char"144F5}
+ \else \ifnum #1=3
+ {\char"1443D}
+ \fi\fi\fi
+}
+\newcommand{\KA}[1][]{
+ \ifx\relax#1\relax
+ {\char"145E7}
+ \else \ifnum #1=2
+ {\char"1443E}
+ \fi\fi
+}
+\newcommand{\INFRA}{\char"1443F}
+\newcommand{\SUB}{\char"1443F}
+\newcommand{\CUM}{\char"14440}
+\newcommand{\MANUS}{\char"14441}
+\newcommand{\LLX}{\char"14442}
+\newcommand{\LLXI}{\char"14443}
+\newcommand{\LONGUS}{\char"14444}
+\newcommand{\LLXIII}{\char"14445}
+\newcommand{\LLXIV}{\char"14446}
+\newcommand{\PONERE}{\char"14447}
+\newcommand{\DARE}{\char"14448}
+\newcommand{\PI}[1][]{
+ \ifx\relax#1\relax
+ {\char"14449}
+ \fi
+}
+\newcommand{\MANDARE}[1][]{
+ \ifx\relax#1\relax
+ {\char"1444A}
+ \else \ifnum #1=2
+ {\char"1444B}
+ \fi\fi
+}
+\newcommand{\DAREDARE}{\char"1444A}
+\newcommand{\LLXVII}{\char"1444C}
+\newcommand{\LLXVIII}{\char"1444D}
+\newcommand{\LLXIX}{\char"1444E}
+\newcommand{\SUPER}{\char"1444F}
+\newcommand{\SARAI}{\char"14555}
+\newcommand{\LLXXI}{\char"14450}
+\newcommand{\LLXXII}{\char"14451}
+\newcommand{\AUDIRE}{\char"14452}
+\newcommand{\LLXXIV}{\char"14453}
+\newcommand{\LLXXV}{\char"14454}
+\newcommand{\LLXXVI}{\char"14455}
+\newcommand{\LLXXVII}{\char"14456}
+\newcommand{\ALA}{\char"14457}
+\newcommand{\FEMINA}{\char"14458}
+\newcommand{\MATER}{\char"14458}
+\newcommand{\SARMA}[1][]{
+ \ifx\relax#1\relax
+ {\char"14459}
+ \else \ifnum #1=2
+ {\char"1445A}
+ \fi\fi
+}
+\newcommand{\CRUS}[1][]{
+ \ifx\relax#1\relax
+ {\char"1445B}
+ \else \ifnum #1=2
+ {\char"1445D}
+ \fi\fi
+}
+\newcommand{\CRUSFLUMEN}{\char"1445C}
+\newcommand{\GENUFLECTERE}{\char"1445E}
+\newcommand{\CRUSCRUS}{\char"1445F}
+\newcommand{\LLXXXVII}{\char"14460}
+\newcommand{\LLXXXVIII}{\char"14461}
+\newcommand{\TU}[1][]{
+ \ifx\relax#1\relax
+ {\char"14462}
+ \else \ifnum #1=2
+ {\char"1456C}
+ \else \ifnum #1=3
+ {\char"1456D}
+ \else \ifnum #1=4
+ {\char"14506}
+ \fi\fi\fi\fi
+}
+\newcommand{\PES}[1][]{
+ \ifx\relax#1\relax
+ {\char"14463}
+ \else \ifnum #1=2
+ {\char"14466}
+ \fi\fi
+}
+\newcommand{\TI}[1][]{
+ \ifx\relax#1\relax
+ {\char"14463}
+ \else \ifnum #1=2
+ {\char"1461F}
+ \else \ifnum #1=3
+ {\char"14644}
+ \fi\fi\fi
+}
+\newcommand{\PESSCALAROTAE}{\char"14464}
+\newcommand{\LXCII}{\char"14465}
+\newcommand{\LXCIV}{\char"14467}
+\newcommand{\PESIIPESII}{\char"14468}
+\newcommand{\PESIIPES}{\char"14469}
+\newcommand{\LEO}[1][]{
+ \ifx\relax#1\relax
+ {\char"1446A}
+ \else \ifnum #1=2
+ {\char"1446B}
+ \fi\fi
+}
+\newcommand{\BESTIA}{\char"1446A}
+\newcommand{\CANIS}[1][]{
+ \ifx\relax#1\relax
+ {\char"1446C}
+ \else \ifnum #1=2
+ {\char"1446D}
+ \fi\fi
+}
+\newcommand{\EQUUS}{\char"1446E}
+\newcommand{\ASINUS}[1][]{
+ \ifx\relax#1\relax
+ {\char"1446F}
+ \else \ifnum #1=2
+ {\char"14471}
+ \fi\fi
+}
+\newcommand{\ASINUSIIA}{\char"14472}
+\newcommand{\CERVUS}[1][]{
+ \ifx\relax#1\relax
+ {\char"14473}
+ \else \ifnum #1=2
+ {\char"14474}
+ \else \ifnum #1=3
+ {\char"14475}
+ \fi\fi\fi
+}
+\newcommand{\RU}[1][]{
+ \ifx\relax#1\relax
+ {\char"145D1}
+ \else \ifnum #1=2
+ {\char"14473}
+ \fi\fi
+}
+\newcommand{\CAPRA}[1][]{
+ \ifx\relax#1\relax
+ {\char"14476}
+ \else \ifnum #1=2
+ {\char"14478}
+ \fi\fi
+}
+\newcommand{\SA}[1][]{
+ \ifx\relax#1\relax
+ {\char"145D4}
+ \else \ifnum #1=2
+ {\char"145E6}
+ \else \ifnum #1=3
+ {\char"14477}
+ \else \ifnum #1=4
+ {\char"145C6}
+ \else \ifnum #1=5
+ {\char"1456E}
+ \else \ifnum #1=6
+ {\char"14500}
+ \else \ifnum #1=7
+ {\char"14563}
+ \else \ifnum #1=8
+ {\char"145AD}
+ \fi\fi\fi\fi\fi\fi\fi\fi
+}
+\newcommand{\CAPRAIIA}{\char"14479}
+\newcommand{\BOS}[1][]{
+ \ifx\relax#1\relax
+ {\char"1447A}
+ \else \ifnum #1=2
+ {\char"1447C}
+ \fi\fi
+}
+\newcommand{\U}{\char"1447B}
+\newcommand{\LCVI}{\char"1447D}
+\newcommand{\BOSMI}{\char"1447E}
+\newcommand{\MU}{\char"1447F}
+\newcommand{\MUWA}{\char"14480}
+\newcommand{\BOSIIMI}{\char"14481}
+\newcommand{\CORNU}{\char"14482}
+\newcommand{\SU}[1][]{
+ \ifx\relax#1\relax
+ {\char"145A2}
+ \else \ifnum #1=2
+ {\char"14482}
+ \else \ifnum #1=3
+ {\char"145F5}
+ \fi\fi\fi
+}
+\newcommand{\VITELLUS}{\char"14483}
+\newcommand{\OVIS}[1][]{
+ \ifx\relax#1\relax
+ {\char"14484}
+ \else \ifnum #1=2
+ {\char"14486}
+ \else \ifnum #1=3
+ {\char"14487}
+ \fi\fi\fi
+}
+\newcommand{\MA}[1][]{
+ \ifx\relax#1\relax
+ {\char"14485}
+ \else \ifnum #1=2
+ {\char"14598}
+ \else \ifnum #1=3
+ {\char"14556}
+ \fi\fi\fi
+}
+\newcommand{\LINGERE}{\char"14488}
+\newcommand{\ZA}[1][]{
+ \ifx\relax#1\relax
+ {\char"145AA}
+ \else \ifnum #1=2
+ {\char"14579}
+ \else \ifnum #1=3
+ {\char"1457C}
+ \else \ifnum #1=4
+ {\char"14488}
+ \fi\fi\fi\fi
+}
+\newcommand{\LCXIII}{\char"14489}
+\newcommand{\LITUUSU}{\char"1448A}
+\newcommand{\LEPUS}[1][]{
+ \ifx\relax#1\relax
+ {\char"1448B}
+ \else \ifnum #1=2
+ {\char"1448C}
+ \fi\fi
+}
+\newcommand{\TAPA}{\char"1448C}
+\newcommand{\LCXVI}{\char"1448D}
+\newcommand{\LCXVII}{\char"1448E}
+\newcommand{\LCXVIII}{\char"1448F}
+\newcommand{\LCXIX}{\char"14490}
+\newcommand{\GRYLLUS}{\char"14491}
+\newcommand{\SPHINX}{\char"14492}
+\newcommand{\LCXXII}{\char"14493}
+\newcommand{\LCXXIII}{\char"14494}
+\newcommand{\LCXXIV}{\char"14495}
+\newcommand{\LI}[1][]{
+ \ifx\relax#1\relax
+ {\char"14539}
+ \else \ifnum #1=2
+ {\char"14496}
+ \else \ifnum #1=3
+ {\char"14547}
+ \fi\fi\fi
+}
+\newcommand{\UNGULA}{\char"14497}
+\newcommand{\LCXXVI}{\char"14498}
+\newcommand{\LCXXVII}{\char"14499}
+\newcommand{\AVIS}[1][]{
+ \ifx\relax#1\relax
+ {\char"1449A}
+ \else \ifnum #1=2
+ {\char"1449E}
+ \else \ifnum #1=3
+ {\char"1449C}
+ \else \ifnum #1=4
+ {\char"1449F}
+ \else \ifnum #1=5
+ {\char"1449D}
+ \fi\fi\fi\fi\fi
+}
+\newcommand{\ZI}[1][]{
+ \ifx\relax#1\relax
+ {\char"145A9}
+ \else \ifnum #1=2
+ {\char"14560}
+ \else \ifnum #1=3
+ {\char"1457B}
+ \else \ifnum #1=4
+ {\char"1449A}
+ \fi\fi\fi\fi
+}
+\newcommand{\LCXXIX}{\char"1449B}
+\newcommand{\AQUILA}{\char"1449F}
+\newcommand{\ARAI}{\char"144A0}
+\newcommand{\AVISX}{\char"144A1}
+\newcommand{\LCXXXVA}{\char"144A2}
+\newcommand{\LCXXXVI}{\char"144A3}
+\newcommand{\LIBATIO}{\char"144A4}
+\newcommand{\PISCIS}{\char"144A5}
+\newcommand{\LCXXXIX}{\char"144A6}
+\newcommand{\LCXL}{\char"144A7}
+\newcommand{\LCXLI}{\char"144A8}
+\newcommand{\LXCLII}{\char"144A9}
+\newcommand{\LCXLIII}{\char"144AA}
+\newcommand{\LCXLIV}{\char"144AB}
+\newcommand{\LCXLV}{\char"144AC}
+\newcommand{\LCXLVI}{\char"144AD}
+\newcommand{\LCXLVII}{\char"144AE}
+\newcommand{\JANUS}{\char"144AF}
+\newcommand{\LCXLIX}{\char"144B0}
+\newcommand{\LCL}{\char"144B1}
+\newcommand{\TELIPINU}{\char"144B2}
+\newcommand{\LCLII}{\char"144B3}
+\newcommand{\NU}[1][]{
+ \ifx\relax#1\relax
+ {\char"144B4}
+ \else \ifnum #1=2
+ {\char"145BF}
+ \fi\fi
+}
+\newcommand{\LCLIV}{\char"144B5}
+\newcommand{\LCLV}{\char"144B6}
+\newcommand{\LCLVI}{\char"144B7}
+\newcommand{\LCLVII}{\char"144B8}
+\newcommand{\LCLVIII}{\char"144B9}
+\newcommand{\LCLIX}{\char"144BA}
+\newcommand{\VITIS}{\char"144BB}
+\newcommand{\WIYA}{\char"144BB}
+\newcommand{\LCLXI}{\char"144BC}
+\newcommand{\LCLXII}{\char"144BD}
+\newcommand{\LCLXIII}{\char"144BE}
+\newcommand{\LCLXIV}{\char"144BF}
+\newcommand{\BONUS}[1][]{
+ \ifx\relax#1\relax
+ {\char"144C0}
+ \else \ifnum #1=2
+ {\char"145A2}
+ \fi\fi
+}
+\newcommand{\WAI}[1][]{
+ \ifx\relax#1\relax
+ {\char"145EC}
+ \else \ifnum #1=2
+ {\char"144C1}
+ \else \ifnum #1=3
+ {\char"144C0}
+ \else \ifnum #1=4
+ {\char"144EC}
+ \else \ifnum #1=5
+ {\char"144E9}
+ \else \ifnum #1=6
+ {\char"144E4}
+ \else \ifnum #1=7
+ {\char"14541}
+ \else \ifnum #1=9
+ {\char"1453B}
+ \fi\fi\fi\fi\fi\fi\fi\fi
+}
+\newcommand{\LCLXVII}{\char"144C2}
+\newcommand{\LCLXVIII}{\char"144C3}
+\newcommand{\LCLXIX}{\char"144C4}
+\newcommand{\LCLXX}{\char"144C5}
+\newcommand{\LCLXXI}{\char"144C6}
+\newcommand{\TAI}[1][]{
+ \ifx\relax#1\relax
+ {\char"}
+ \else \ifnum #1=4
+ {\char"14566}
+ \else \ifnum #1=5
+ {\char"144C7}
+ \fi\fi\fi
+}
+\newcommand{\LAI}[1][]{
+ \ifx\relax#1\relax
+ {\char"14566}
+ \else \ifnum #1=2
+ {\char"144C7}
+ \fi\fi
+}
+\newcommand{\HASTARIUS}{\char"144C8}
+\newcommand{\SI}[1][]{
+ \ifx\relax#1\relax
+ {\char"144C9}
+ \else \ifnum #1=2
+ {\char"145FE}
+ \fi\fi
+}
+\newcommand{\LINGUA}{\char"144CA}
+\newcommand{\LA}{\char"144CA}
+\newcommand{\LALA}{\char"144CB}
+\newcommand{\LINGUACLAVUS}{\char"144CC}
+\newcommand{\LARAA}{\char"144CD}
+\newcommand{\HORDEUM}{\char"144CE}
+\newcommand{\HWIX}{\char"144CE}
+\newcommand{\LCLXXX}{\char"144CF}
+\newcommand{\PANIS}{\char"144D0}
+\newcommand{\PAX}{\char"144D0}
+\newcommand{\CAELUM}{\char"144D1}
+\newcommand{\LCLXXXIII}{\char"144D2}
+\newcommand{\LCLXXXIV}{\char"144D3}
+\newcommand{\LCLXXXV}{\char"144D4}
+\newcommand{\LCLXXXVI}{\char"144D5}
+\newcommand{\LCLXXXVII}{\char"144D6}
+\newcommand{\LCLXXXVIII}{\char"144D7}
+\newcommand{\LCLXXXIX}{\char"144D8}
+\newcommand{\SOL}[1][]{
+ \ifx\relax#1\relax
+ {\char"144DA}
+ \else \ifnum #1=2
+ {\char"144D9}
+ \fi\fi
+}
+\newcommand{\ORIENS}{\char"144DB}
+\newcommand{\LUNA}{\char"144DC}
+\newcommand{\LCXCIV}{\char"144DD}
+\newcommand{\LCXCV}{\char"144DE}
+\newcommand{\HATTI}{\char"144DF}
+\newcommand{\HA}[1][]{
+ \ifx\relax#1\relax
+ {\char"144F7}
+ \else \ifnum #1=2
+ {\char"144DF}
+ \fi\fi
+}
+\newcommand{\HATTILI}{\char"144E0}
+\newcommand{\HATTUSILI}{\char"144E0}
+\newcommand{\HAIILI}{\char"144E0}
+\newcommand{\LCXCVIII}{\char"144E1}
+\newcommand{\TONITRUS}{\char"144E2}
+\newcommand{\FULGUR}{\char"144E3}
+\newcommand{\TERRA}{\char"144E4}
+\newcommand{\LOCUS}{\char"144E4}
+\newcommand{\VIATERRASCALPRUM}{\char"144E5}
+\newcommand{\VIATERRAPLUSSCALPRUM}{\char"144E6}
+\newcommand{\DEUSVIATERRA}{\char"144E7}
+\newcommand{\LCCIII}{\char"144E8}
+\newcommand{\LCCV}{\char"144EA}
+\newcommand{\LCCVI}{\char"144EB}
+\newcommand{\LEOMONSTULEO}{\char"144ED}
+\newcommand{\LCCVIII}{\char"144EE}
+\newcommand{\I}[1][]{
+ \ifx\relax#1\relax
+ {\char"144EF}
+ \else \ifnum #1=2
+ {\char"14550}
+ \fi\fi
+}
+\newcommand{\IRAI}{\char"144F0}
+\newcommand{\RII}{\char"144F0}
+\newcommand{\IA}[1][]{
+ \ifx\relax#1\relax
+ {\char"144F1}
+ \else \ifnum #1=2
+ {\char"14551}
+ \else \ifnum #1=3
+ {\char"145AC}
+ \fi\fi\fi
+}
+\newcommand{\LCCXI}{\char"144F2}
+\newcommand{\FLUMEN}{\char"144F3}
+\newcommand{\LCCXIII}{\char"144F4}
+\newcommand{\FONS}{\char"144F6}
+\newcommand{\FINES}{\char"144F8}
+\newcommand{\FINESHA}{\char"144F9}
+\newcommand{\ARHA}{\char"144F9}
+\newcommand{\LCCXVII}{\char"144FA}
+\newcommand{\LCCXVIII}{\char"144FB}
+\newcommand{\LCCXIX}{\char"144FC}
+\newcommand{\LCCXX}{\char"144FD}
+\newcommand{\VIA}{\char"144FE}
+\newcommand{\LCCXXII}{\char"144FF}
+\newcommand{\LCCXXIV}{\char"14501}
+\newcommand{\URBS}{\char"14502}
+\newcommand{\ISHUWA}{\char"14503}
+\newcommand{\URBSRAILI}{\char"14504}
+\newcommand{\URBSLI}{\char"14505}
+\newcommand{\MURSILI}{\char"14505}
+\newcommand{\REGIO}{\char"14506}
+\newcommand{\MIIIREGIO}{\char"14507}
+\newcommand{\LCCXXX}{\char"14508}
+\newcommand{\CASTRUM}{\char"14509}
+\newcommand{\LCCXXXII}{\char"1450A}
+\newcommand{\LCCXXXIII}{\char"1450B}
+\newcommand{\LCCXXXIV}{\char"1450C}
+\newcommand{\TURRIS}{\char"1450D}
+\newcommand{\LCCXXXV}{\char"1450D}
+\newcommand{\MURUS}{\char"1450E}
+\newcommand{\LCCXXXVI}{\char"1450E}
+\newcommand{\PORTA}[1][]{
+ \ifx\relax#1\relax
+ {\char"1450F}
+ \else \ifnum #1=2
+ {\char"14511}
+ \fi\fi
+}
+\newcommand{\LCCXXXVIII}{\char"14510}
+\newcommand{\LCCXL}{\char"14512}
+\newcommand{\KIX}{\char"14513}
+\newcommand{\LCCXLII}{\char"14514}
+\newcommand{\CUBITUM}{\char"14515}
+\newcommand{\AEDIFICIUM}{\char"14516}
+\newcommand{\VACUUS}{\char"14517}
+\newcommand{\AEDIFICIUMMINUS}{\char"14517}
+\newcommand{\AEDIFICARE}{\char"14518}
+\newcommand{\AEDIFICIUMPONERE}{\char"14518}
+\newcommand{\DOMUS}{\char"14519}
+\newcommand{\DELERE}{\char"1451A}
+\newcommand{\DOMUSMINUS}{\char"1451A}
+\newcommand{\DEUSDOMUS}{\char"1451B}
+\newcommand{\MAGNUSDOMUS}{\char"1451C}
+\newcommand{\DOMUSX}{\char"1451D}
+\newcommand{\DOMUSSCALA}{\char"1451E}
+\newcommand{\LCCLII}{\char"1451F}
+\newcommand{\EUNUCHUS}[1][]{
+ \ifx\relax#1\relax
+ {\char"14611}
+ \else \ifnum #1=2
+ {\char"14520}
+ \fi\fi
+}
+\newcommand{\HORREUM}{\char"14521}
+\newcommand{\LCCLVI}{\char"14522}
+\newcommand{\ARGENTUM}{\char"14523}
+\newcommand{\LCCLVIII}{\char"14524}
+\newcommand{\LCCLIX}{\char"14525}
+\newcommand{\LCCLX}{\char"14526}
+\newcommand{\LCCLXI}{\char"14527}
+\newcommand{\LCCLXII}{\char"14528}
+\newcommand{\LCCLXIII}{\char"14529}
+\newcommand{\PODIUM}{\char"1452A}
+\newcommand{\LCCLXV}{\char"1452B}
+\newcommand{\PESREGIO}{\char"1452C}
+\newcommand{\STELE}{\char"1452D}
+\newcommand{\LAPISSCALPRUM}{\char"1452D}
+\newcommand{\LAPIS}{\char"1452E}
+\newcommand{\SCALPRUM}{\char"1452F}
+\newcommand{\EXERCITUS}{\char"14530}
+\newcommand{\LCCLXX}{\char"14531}
+\newcommand{\LCCLXXI}{\char"14532}
+\newcommand{\SCUTUM}{\char"14533}
+\newcommand{\LCCLXXIII}{\char"14534}
+\newcommand{\LCCLXXIV}{\char"14535}
+\newcommand{\FRATER}[1][]{
+ \ifx\relax#1\relax
+ {\char"14430}
+ \else \ifnum #1=2
+ {\char"14537}
+ \fi\fi
+}
+\newcommand{\IUDEXLA}{\char"14538}
+\newcommand{\LCCLXXIX}{\char"1453A}
+\newcommand{\MALLEUS}{\char"1453B}
+\newcommand{\ASCIA}{\char"1453C}
+\newcommand{\LCCLXXXII}{\char"1453D}
+\newcommand{\TUZZI}{\char"1453E}
+\newcommand{\LCCLXXXIV}{\char"1453F}
+\newcommand{\IACULUM}{\char"14540}
+\newcommand{\ZU}[1][]{
+ \ifx\relax#1\relax
+ {\char"14540}
+ \else \ifnum #1=2
+ {\char"145F5}
+ \fi\fi
+}
+\newcommand{\ZUWA}{\char"14540}
+\newcommand{\LCCLXXXVII}{\char"14542}
+\newcommand{\CURRUS}{\char"14543}
+\newcommand{\AURIGA}[1][]{
+ \ifx\relax#1\relax
+ {\char"14544}
+ \else \ifnum #1=2
+ {\char"14545}
+ \fi\fi
+}
+\newcommand{\HARAI}{\char"14546}
+\newcommand{\ROTA}{\char"14548}
+\newcommand{\HALAI}{\char"14548}
+\newcommand{\LCCXCIII}{\char"14549}
+\newcommand{\THRONUS}[1][]{
+ \ifx\relax#1\relax
+ {\char"1454A}
+ \else \ifnum #1=2
+ {\char"1454F}
+ \fi\fi
+}
+\newcommand{\MENSA}[1][]{
+ \ifx\relax#1\relax
+ {\char"1454A}
+ \else \ifnum #1=2
+ {\char"1454B}
+ \fi\fi
+}
+\newcommand{\SARPA}{\char"1454B}
+\newcommand{\SOLIITHRONUS}{\char"1454C}
+\newcommand{\SOLIIMENSA}{\char"1454C}
+\newcommand{\DEUSMONSSARPA}{\char"1454D}
+\newcommand{\DEUSMONSMENSA}{\char"1454D}
+\newcommand{\LCCXCVII}{\char"1454E}
+\newcommand{\SOLIUM}{\char"14550}
+\newcommand{\NEPOS}{\char"14552}
+\newcommand{\LECTUS}{\char"14553}
+\newcommand{\LCCCII}{\char"14554}
+\newcommand{\FUSUS}{\char"14557}
+\newcommand{\HI}[1][]{
+ \ifx\relax#1\relax
+ {\char"145D2}
+ \else \ifnum #1=2
+ {\char"14558}
+ \fi\fi
+}
+\newcommand{\HU}[1][]{
+ \ifx\relax#1\relax
+ {\char"14559}
+ \else \ifnum #1=2
+ {\char"14588}
+ \fi\fi
+}
+\newcommand{\LCCCVIII}{\char"1455A}
+\newcommand{\CRUX}[1][]{
+ \ifx\relax#1\relax
+ {\char"1455B}
+ \else \ifnum #1=2
+ {\char"1455C}
+ \fi\fi
+}
+\newcommand{\LCCCX}{\char"1455D}
+\newcommand{\LCCCXI}{\char"1455E}
+\newcommand{\LCCCXII}{\char"1455F}
+\newcommand{\VIR}[1][]{
+ \ifx\relax#1\relax
+ {\char"14560}
+ \else \ifnum #1=2
+ {\char"145B5}
+ \fi\fi
+}
+\newcommand{\HAX}{\char"14561}
+\newcommand{\KAR}{\char"14562}
+\newcommand{\LCCCXVII}{\char"14564}
+\newcommand{\TESHUB}{\char"14565}
+\newcommand{\LCCCXX}{\char"14567}
+\newcommand{\LCCCXXI}{\char"14568}
+\newcommand{\PURUS}{\char"14569}
+\newcommand{\LCCCXXIII}{\char"1456A}
+\newcommand{\LCCCXXIV}{\char"1456B}
+\newcommand{\SCRIBA}{\char"1456D}
+\newcommand{\SIGILLUM}{\char"1456E}
+\newcommand{\PU}[1][]{
+ \ifx\relax#1\relax
+ {\char"1456F}
+ \else \ifnum #1=2
+ {\char"145E3}
+ \fi\fi
+}
+\newcommand{\REL}{\char"14570}
+\newcommand{\KWIA}{\char"14570}
+\newcommand{\LCCCXXIXA}{\char"14571}
+\newcommand{\CAPERESCALPRUM}{\char"14572}
+\newcommand{\AVUS}{\char"14573}
+\newcommand{\NEG}[1][]{
+ \ifx\relax#1\relax
+ {\char"14574}
+ \else \ifnum #1=2
+ {\char"14575}
+ \else \ifnum #1=3
+ {\char"14576}
+ \fi\fi\fi
+}
+\newcommand{\LCCCXXXIII}{\char"14577}
+\newcommand{\PA}{\char"14578}
+\newcommand{\ANNUS}{\char"1457A}
+\newcommand{\PITHOSSCUTELLA}{\char"1457A}
+\newcommand{\PITHOS}{\char"1457E}
+\newcommand{\ZAX}{\char"1457D}
+\newcommand{\CULTER}{\char"1457F}
+\newcommand{\LCCCXXXIX}{\char"14580}
+\newcommand{\ANNUSANNUS}{\char"14581}
+\newcommand{\VAS}{\char"14582}
+\newcommand{\LCCCXLII}{\char"14583}
+\newcommand{\PITHOSA}{\char"14584}
+\newcommand{\CONTRACTUS}{\char"14585}
+\newcommand{\URCEUS}{\char"14586}
+\newcommand{\POCULUM}{\char"14587}
+\newcommand{\LCCCXLVIII}{\char"14589}
+\newcommand{\LCCCXLIX}{\char"1458A}
+\newcommand{\LCCCL}{\char"1458B}
+\newcommand{\LCCCLI}{\char"1458C}
+\newcommand{\LCCCLII}{\char"1458D}
+\newcommand{\LCCCLIII}{\char"1458E}
+\newcommand{\LCCCLIV}{\char"1458F}
+\newcommand{\LCCCLVI}{\char"14591}
+\newcommand{\LCCCLVII}{\char"14592}
+\newcommand{\DIES}{\char"14593}
+\newcommand{\LCCCLIX}{\char"14594}
+\newcommand{\LCCCLIXA}{\char"14595}
+\newcommand{\DEUS}{\char"14596}
+\newcommand{\LCCCLXI}{\char"14597}
+\newcommand{\MAGNUS}{\char"14599}
+\newcommand{\UR}{\char"14599}
+\newcommand{\UA}{\char"1459A}
+\newcommand{\MUA}{\char"1459B}
+\newcommand{\LCCCLXV}{\char"1459C}
+\newcommand{\OMNIS}[1][]{
+ \ifx\relax#1\relax
+ {\char"1459D}
+ \else \ifnum #1=2
+ {\char"145E3}
+ \fi\fi
+}
+\newcommand{\OMNISMI}{\char"1459D}
+\newcommand{\TALA}{\char"1459E}
+\newcommand{\MALUS}[1][]{
+ \ifx\relax#1\relax
+ {\char"1459F}
+ \else \ifnum #1=2
+ {\char"145A0}
+ \fi\fi
+}
+\newcommand{\VITA}{\char"145A1}
+\newcommand{\IUSTITIA}{\char"145A3}
+\newcommand{\IUDEX}{\char"145A3}
+\newcommand{\IUDEXRAI}{\char"145A4}
+\newcommand{\TARAIX}{\char"145A4}
+\newcommand{\SACERDOS}[1][]{
+ \ifx\relax#1\relax
+ {\char"14590}
+ \else \ifnum #1=2
+ {\char"145A5}
+ \fi\fi
+}
+\newcommand{\LCCCLXXIII}{\char"145A6}
+\newcommand{\LCCCLXXIV}{\char"145A7}
+\newcommand{\LCCCLXXV}{\char"145A8}
+\newcommand{\ZIA}{\char"145A9}
+\newcommand{\LITUUS}{\char"145AB}
+\newcommand{\OCCIDENS}{\char"145AC}
+\newcommand{\ONE}{\char"145AD}
+\newcommand{\UNUS}{\char"145AD}
+\newcommand{\MINUS}{\char"145AE}
+\newcommand{\MORI}{\char"145AF}
+\newcommand{\VIRIIMINUS}{\char"145AF}
+\newcommand{\LIGNUM}{\char"145B0}
+\newcommand{\RAI}{\char"145B1}
+\newcommand{\PERS}{\char"145B2}
+\newcommand{\TWO}{\char"145B3}
+\newcommand{\WORD}{\char"145B5}
+\newcommand{\VIRIIA}{\char"145B6}
+\newcommand{\SERVUS}{\char"145B7}
+\newcommand{\MI}[1][]{
+ \ifx\relax#1\relax
+ {\char"145BB}
+ \else \ifnum #1=2
+ {\char"145D8}
+ \else \ifnum #1=3
+ {\char"145B7}
+ \fi\fi\fi
+}
+\newcommand{\THREE}{\char"145B8}
+\newcommand{\TARAI}{\char"145B9}
+\newcommand{\DOMINUS}{\char"145BA}
+\newcommand{\FOUR}{\char"145BB}
+\newcommand{\FIVE}{\char"145BC}
+\newcommand{\EIGHT}{\char"145BD}
+\newcommand{\LCCCXCIV}{\char"145BE}
+\newcommand{\NINE}{\char"145BF}
+\newcommand{\LCCCXCVI}{\char"145C0}
+\newcommand{\TEN}{\char"145C1}
+\newcommand{\DECEM}{\char"145C1}
+\newcommand{\LCCCXCVIII}{\char"145C2}
+\newcommand{\HUNDRED}{\char"145C3}
+\newcommand{\CENTUM}{\char"145C3}
+\newcommand{\THOUSAND}{\char"145C4}
+\newcommand{\MILLE}{\char"145C4}
+\newcommand{\LCDI}{\char"145C5}
+\newcommand{\SCUTELLA}{\char"145C6}
+\newcommand{\LCDIII}{\char"145C7}
+\newcommand{\ANIMAL}{\char"145C8}
+\newcommand{\LCDV}{\char"145C9}
+\newcommand{\LCDVI}{\char"145CA}
+\newcommand{\LCDVII}{\char"145CB}
+\newcommand{\LCDVIII}{\char"145CC}
+\newcommand{\LCDIX}{\char"145CD}
+\newcommand{\LCDX}{\char"145CE}
+\newcommand{\LOGS}{\char"145CE}
+\newcommand{\LCDXA}{\char"145CF}
+\newcommand{\LOGE}{\char"145CF}
+\newcommand{\LCDXIV}{\char"145D3}
+\newcommand{\LCDXVI}{\char"145D5}
+\newcommand{\SAX}{\char"145D6}
+\newcommand{\LCDXVIII}{\char"145D7}
+\newcommand{\URHI}{\char"145D8}
+\newcommand{\LCDXX}{\char"145D9}
+\newcommand{\US}{\char"145DA}
+\newcommand{\PANISSCUTELLA}{\char"145DB}
+\newcommand{\KU}{\char"145DC}
+\newcommand{\LCDXXIV}{\char"145DD}
+\newcommand{\LCDXXV}{\char"145DE}
+\newcommand{\LCDXXVI}{\char"145DF}
+\newcommand{\LCDXXVII}{\char"145E0}
+\newcommand{\LCDXXVIII}{\char"145E1}
+\newcommand{\TANA}{\char"145E2}
+\newcommand{\LCDXXXI}{\char"145E4}
+\newcommand{\LCDXXXII}{\char"145E5}
+\newcommand{\AX}{\char"145E8}
+\newcommand{\LCDXXXVI}{\char"145E9}
+\newcommand{\LCDXXXVII}{\char"145EA}
+\newcommand{\PASTOR}{\char"145EB}
+\newcommand{\LCDXL}{\char"145ED}
+\newcommand{\LCDXLI}{\char"145EE}
+\newcommand{\LCDXLII}{\char"145EF}
+\newcommand{\LCDXLIII}{\char"145F0}
+\newcommand{\LCDXLIV}{\char"145F1}
+\newcommand{\LAIU}{\char"145F2}
+\newcommand{\KI}{\char"145F3}
+\newcommand{\NIX}{\char"145F4}
+\newcommand{\LCDXLIX}{\char"145F7}
+\newcommand{\RAA}{\char"145F8}
+\newcommand{\HURU}{\char"145F9}
+\newcommand{\LCDLII}{\char"145FA}
+\newcommand{\LCDLIII}{\char"145FB}
+\newcommand{\LCDLIV}{\char"145FC}
+\newcommand{\LAX}{\char"145FD}
+\newcommand{\LCDLVII}{\char"145FF}
+\newcommand{\LCDLVIIA}{\char"14600}
+\newcommand{\LCDLVIII}{\char"14601}
+\newcommand{\LCDLIX}{\char"14602}
+\newcommand{\LCDLX}{\char"14603}
+\newcommand{\LCDLXI}{\char"14604}
+\newcommand{\MAX}{\char"14605}
+\newcommand{\LCDLXIII}{\char"14606}
+\newcommand{\LCDLXIV}{\char"14607}
+\newcommand{\LCDLXV}{\char"14608}
+\newcommand{\LCDLXVI}{\char"14609}
+\newcommand{\LCDLXVII}{\char"1460A}
+\newcommand{\LCDLXVIII}{\char"1460B}
+\newcommand{\LCDLXIX}{\char"1460C}
+\newcommand{\TWELVE}{\char"1460D}
+\newcommand{\LCDLXXI}{\char"1460E}
+\newcommand{\LCDLXXII}{\char"1460F}
+\newcommand{\LCDLXXIII}{\char"14610}
+\newcommand{\LCDLXXV}{\char"14612}
+\newcommand{\LCDLXXVI}{\char"14613}
+\newcommand{\FLAMMAE}{\char"14614}
+\newcommand{\LCDLXXVIII}{\char"14615}
+\newcommand{\LCDLXXIX}{\char"14616}
+\newcommand{\LCDLXXX}{\char"14617}
+\newcommand{\LCDLXXXI}{\char"14618}
+\newcommand{\LCDLXXXII}{\char"14619}
+\newcommand{\LCDXXXIII}{\char"1461A}
+\newcommand{\LCDLXXXIV}{\char"1461B}
+\newcommand{\LCDLXXXV}{\char"1461C}
+\newcommand{\FALX}{\char"1461D}
+\newcommand{\LCDLXXXVII}{\char"1461E}
+\newcommand{\LCDLXXXIX}{\char"14620}
+\newcommand{\LCDXC}{\char"14621}
+\newcommand{\LCDXCI}{\char"14622}
+\newcommand{\LCDXCII}{\char"14623}
+\newcommand{\LCDXCIII}{\char"14624}
+\newcommand{\LCDXCIV}{\char"14625}
+\newcommand{\LCDXCV}{\char"14626}
+\newcommand{\LCDXCVI}{\char"14627}
+\newcommand{\LCDXCVII}{\char"14628}
+\newcommand{\LDI}{\char"14629}
+\newcommand{\LDII}{\char"1462A}
+\newcommand{\LDIII}{\char"1462B}
+\newcommand{\LDIV}{\char"1462C}
+\newcommand{\LDV}{\char"1462D}
+\newcommand{\HANA}{\char"1462E}
+\newcommand{\LDVII}{\char"1462F}
+\newcommand{\CURRERE}{\char"14630}
+\newcommand{\HWIA}{\char"14630}
+\newcommand{\LDIX}{\char"14631}
+\newcommand{\LDXI}{\char"14633}
+\newcommand{\LDXII}{\char"14634}
+\newcommand{\LDXIII}{\char"14635}
+\newcommand{\LDXIV}{\char"14636}
+\newcommand{\LDXV}{\char"14637}
+\newcommand{\LDXVI}{\char"14638}
+\newcommand{\LDXVII}{\char"14639}
+\newcommand{\LDXVIII}{\char"1463A}
+\newcommand{\LDXIX}{\char"1463B}
+\newcommand{\LDXX}{\char"1463C}
+\newcommand{\LDXXI}{\char"1463D}
+\newcommand{\LDXXII}{\char"1463E}
+\newcommand{\LDXXIII}{\char"1463F}
+\newcommand{\CORNUCAPUT}{\char"14640}
+\newcommand{\PROPHETA}{\char"14640}
+\newcommand{\PRINCEPS}{\char"14641}
+\newcommand{\GCXCV}{\char"14642}
+\newcommand{\APER}{\char"14643}
+\newcommand{\LINGUAX}{\char"14645}
+\newcommand{\LDXXX}{\char"14646}
+
+
+
+
diff --git a/Master/texmf-dist/tex/latex/magicwatermark/magicwatermark.sty b/Master/texmf-dist/tex/latex/magicwatermark/magicwatermark.sty
index 7a466628722..e40af7ea0b0 100644
--- a/Master/texmf-dist/tex/latex/magicwatermark/magicwatermark.sty
+++ b/Master/texmf-dist/tex/latex/magicwatermark/magicwatermark.sty
@@ -1,290 +1,453 @@
-%%
-%% This is file `magicwatermark.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% magicwatermark.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 magicwatermark.sty.
-%%
-%% For distribution of the original source see the terms
-%% for copying and modification in the file magicwatermark.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}[2020/10/01]
-\ProvidesPackage{magicwatermark}[2021/12/22 v1.0.1 watermark for ljguo ]
-
-
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\PageSetup[
- rotate = 30, % 设置旋转角度
- color = red!80, % 设置水印内容颜色
- scale = 6 % 设置比例
-]{
- 水印内容
+\ProvidesExplPackage{magicwatermark}{2024/06/11}{1.2B}{magic watermark, author}
+
+
+\msg_new:nnn {magicwatermark}{ Unable to parse }
+{
+ Unable~to~parse~this~list~parameter.^^J
+ #1
}
-\Watermark % 全文生效
-\begin{document}
-...
-\end{document}
-\end{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\EvenPageSetup[color=cyan,showframe,scale=4]{偶数页} % 设置奇数页
-\OddPageSetup[color=purple,showframe,scale=4]{奇数页} % 设置偶数页
-\EvenWatermark % 显示水印
-\OddWatermark
-\begin{document}
-...
-\end{document}
-\end{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\PageSetup*{
- \begin{tikzpicture}[remember picture,overlay]
- \node[cyan,scale = 2,shift={(-1,-1)}] at
- (current page.north east){--~\thepage~--};
- \end{tikzpicture}
+
+\msg_new:nnn {magicwatermark}{ Enable TikZ }
+{
+ tikz~option~has~been~disabled,^^J
+ style~will~be~ignored.
}
-\begin{document}
-...
-\Watermark % 该命令之前不生效
-\end{document}
-\end{lstlisting}
-\documentclass{ctexart}
-\usepackage{magicwatermark}
-\NewWatermark{one} % 新建两个水印
-\NewWatermark{two}
-\MyPageSetup[scale=5,color=blue]{one}{水印内容一} % 设置水印
-\MyPageSetup[scale=5,color=red]{two}{水印内容二}
-\begin{document}
-\MyWatermark{one} % 使用第一个水印
-...
-\newpage
-\ClearWatermark{one} % 清除第一个水印
-\MyWatermark{two} % 使用第二个水印
-...
-\end{document}
-\end{lstlisting}
-\RequirePackage{everypage-1x,tikz,xparse,expl3}
-\ExplSyntaxOn
-\tl_new:N \l_mainpage_tl
-\tl_new:N \l_evenpage_tl
-\tl_new:N \l_oddpage_tl
-\tl_new:N \g_case_tl
-\tl_new:N \g_clear_all_tl
-\msg_new:nnn{clear}{not~have}{I~can~not~find~the~"\clear"~watermark~!}
-\NewDocumentCommand{\PageSetup}{sO{}+m}
+
+\msg_new:nnn {magicwatermark}{ Load TikZ }
{
- \IfBooleanTF{#1}
+ Please~load~tikz~package~before~magicwatermark.
+}
+
+\seq_new:N \l__mw_tmpa_seq
+\seq_new:N \l__mw_tmpb_seq
+\seq_new:N \l__mw_tmpc_seq
+\seq_new:N \l__mw_tmpd_seq
+
+
+\int_new:N \l__mw_tmpa_int
+\int_new:N \l__mw_tmpb_int
+\int_new:N \l__mw_tmpc_int
+\int_new:N \l__mw_tmpd_int
+\int_new:N \l__mw_tmpe_int
+
+\clist_new:N \l__mw_list_arabic_number_clist
+\clist_new:N \l__mw_list_roman_number_clist
+\clist_new:N \l__mw_list_range_clist
+\clist_new:N \l__mw_list_expression_clist
+
+
+
+
+\clist_new:N \l__mw_tmpa_clist
+\clist_new:N \l__mw_tmpb_clist
+\clist_new:N \l__mw_tmpc_clist
+
+
+\tl_new:N \l__mw_tmpa_tl
+\tl_new:N \l__mw_tmpb_tl
+\tl_new:N \l__mw_tmpc_tl
+\tl_new:N \g__mw_list_tl
+
+\tl_new:N \g__mw_style_tl
+\tl_new:N \g__mw_content_tl
+
+\bool_new:N \g__mw_is_append_bool
+\bool_set_false:N \g__mw_is_append_bool
+\bool_new:N \g__mw_tikz_bool
+\bool_set_true:N \g__mw_tikz_bool
+
+\regex_const:Nn \c__mw_arabic_numbers_regex { ^\d+$ }
+\regex_const:Nn \c__mw_roman_numbers_regex { ^[ivxlcdm]+$ }
+
+
+
+\int_new:N \g__mw_last_page_int
+
+\AtBeginDocument{
+ \int_compare:nTF { \@abspage@last = \number\maxdimen }
+ {
+ \int_gset:Nn \g__mw_last_page_int { 10 }
+ }
+ {
+ \int_gset:Nn \g__mw_last_page_int { \@abspage@last }
+ }
+}
+
+\cs_new_protected:Npn \__mw_clist_deduplicate:N #1
+{
+ \group_begin:
+ \clist_clear:N \l_tmpa_clist
+ \clist_map_inline:Nn #1
+ {
+ \clist_if_in:NnF \l_tmpa_clist { ##1 }
+ { \clist_put_right:Nn \l_tmpa_clist { ##1 } }
+ }
+ \clist_gset_eq:NN #1 \l_tmpa_clist
+ \group_end:
+}
+
+
+\cs_new:Npn \__mw_list_parser_aux:n #1 {
+
+ \clist_clear:N \l__mw_list_arabic_number_clist
+ \clist_clear:N \l__mw_list_roman_number_clist
+ \clist_clear:N \l__mw_list_range_clist
+ \clist_clear:N \l__mw_list_expression_clist
+
+ % split by commas
+ \group_begin:
+ \seq_set_split:Nnn \l__mw_tmpa_seq { , } { #1 }
+ \seq_map_inline:Nn \l__mw_tmpa_seq
+ {
+ \tl_if_eq:nnTF { ##1 } { odd } % odd, push 2X + 1
{
- \tl_set:Nn \l_mainpage_tl{#3}
+ \clist_gput_right:Nn \l__mw_list_expression_clist { 2X + 1 }
}
{
- \tl_set:Nn \l_mainpage_tl
+ \tl_if_eq:nnTF { ##1 } { even } % even, push 2X
+ {
+ \clist_gput_right:Nn \l__mw_list_expression_clist { 2X }
+ }
+ {
+ \tl_if_in:nnTF { ##1 } { X } % expression, push ##1
+ {
+ \clist_gput_right:Nn \l__mw_list_expression_clist { ##1 }
+ }
{
- \group_begin:
- \keys_set:nn{watermark}{#2}
- \begin{tikzpicture}[remember~picture,overlay]
- \node
- [
- scale = \fp_use:N\l_scale_fp,
- opacity = \fp_use:N\l_opacity_fp,
- shift = \tl_use:N\l_shift_tl,
- color = \tl_use:N \l_color_tl,
- rotate = \fp_use:N \l_rotate_fp,
- align = \tl_use:N \l_align_tl,
- \bool_if:NTF \l_showframe_bool{draw}{},
- ]
- at(current~page.center){#3};
- \end{tikzpicture}
- \group_end:
+ \tl_if_in:nnTF { ##1 } { - } % range, push ##1
+ {
+ \clist_gput_right:Nn \l__mw_list_range_clist { ##1 }
+ }
+ {
+ \__mw_if_arabic_number:nTF { ##1 }
+ {
+ \clist_gput_right:Nn \l__mw_list_arabic_number_clist { ##1 }
+ }
+ {
+ \__mw_if_roman_number:nTF { ##1 }
+ {
+ \clist_gput_right:Nn \l__mw_list_roman_number_clist { ##1 }
+ }
+ {
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
+ {
+ Error~list~parameter~``##1''.
+ }
+ }
+ }
+ }
}
+ }
}
+ }
+ \group_end:
}
-\NewDocumentCommand{\Watermark}{}
+
+\prg_new_conditional:Npnn \__mw_if_arabic_number:n #1 { p, T, F, TF }
{
- \AddEverypageHook{\tl_use:N \l_mainpage_tl}
+ \regex_match:NnTF \c__mw_arabic_numbers_regex { #1 }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
}
-\NewDocumentCommand{\EvenPageSetup}{sO{}+m}
+
+\prg_new_conditional:Npnn \__mw_if_roman_number:n #1 { p, T, F, TF }
{
- \IfBooleanTF{#1}
+ \regex_match:NnTF \c__mw_roman_numbers_regex { #1 }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+}
+
+\prg_generate_conditional_variant:Nnn \__mw_if_arabic_number:n { x } {p, T, F, TF}
+\prg_generate_conditional_variant:Nnn \__mw_if_roman_number:n { x } {p, T, F, TF}
+
+
+\cs_new:Npn \__mw_list_parser_for_arabic_number:n #1 {
+ % arabic number
+ \fp_compare:nTF { #1 <= \g__mw_last_page_int && #1 > 0 }
+ {
+ \clist_put_right:Nn \l__mw_tmpa_clist { #1 }
+ }
+ {
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
{
- \tl_set:Nn \l_evenpage_tl{#3}
+ Error~list~parameter~``#1''.^^J
+ Error~number~``#1''.
}
+ }
+}
+
+
+
+\cs_new:Npn \__mw_list_parser_for_roman_number:n #1 {
+ % roman number
+ \int_set:Nn \l__mw_tmpa_int { \g__mw_last_page_int - \int_from_roman:n { #1 } + 1 }
+ \fp_compare:nTF
+ {
+ \l__mw_tmpa_int <= \g__mw_last_page_int && \l__mw_tmpa_int > 0
+ }
+ {
+ \clist_put_right:NV \l__mw_tmpa_clist \l__mw_tmpa_int
+ }
+ {
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
{
- \tl_set:Nn \l_evenpage_tl
- {
- \group_begin:
- \keys_set:nn{watermark}{#2}
- \begin{tikzpicture}[remember~picture,overlay]
- \node
- [
- scale = \fp_use:N\l_scale_fp,
- opacity = \fp_use:N\l_opacity_fp,
- shift = \tl_use:N\l_shift_tl,
- color = \tl_use:N \l_color_tl,
- rotate = \fp_use:N \l_rotate_fp,
- align = \tl_use:N \l_align_tl,
- \bool_if:NTF \l_showframe_bool{draw}{},
- ]
- at(current~page.center){#3};
- \end{tikzpicture}
- \group_end:
- }
+ Error~list~parameter~``#1''.^^J
+ Error~roman~number~``#1''.
}
+ }
}
-\NewDocumentCommand{\EvenWatermark}{}
-{
- \AddEverypageHook
+
+
+\cs_new:Npn \__mw_list_parser_for_range:n #1 {
+ % range, 1-5, 3-i
+ \seq_set_split:Nnn \l__mw_tmpb_seq { - } { #1 }
+
+ \__mw_if_arabic_number:xTF { \seq_item:Nn \l__mw_tmpb_seq { 1 } }
+ {
+ \int_set:Nn \l__mw_tmpb_int { \seq_item:Nn \l__mw_tmpb_seq { 1 } }
+ }
+ {
+ \__mw_if_roman_number:xTF { \seq_item:Nn \l__mw_tmpb_seq { 1 } }
{
- \int_if_even:nT{\int_use:N \value{page}}
- {
- \tl_use:N \l_evenpage_tl
- }
+ \exp_args:NNx \int_set:Nn \l__mw_tmpb_int
+ {
+ \g__mw_last_page_int - \exp_not:N \int_from_roman:n { \seq_item:Nn \l__mw_tmpb_seq { 1 } } + 1
+ }
}
-}
-\NewDocumentCommand{\OddPageSetup}{sO{}+m}
-{
- \IfBooleanTF{#1}
{
- \tl_set:Nn \l_oddpage_tl{#3}
+ \int_set:Nn \l__mw_tmpb_int { -1 }
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
+ {
+ Error~list~parameter~``#1''.^^J
+ Error~range~left~``#1''.
+ }
}
+ }
+
+ \__mw_if_arabic_number:xTF { \seq_item:Nn \l__mw_tmpb_seq { 2 } }
+ {
+ \int_set:Nn \l__mw_tmpc_int { \seq_item:Nn \l__mw_tmpb_seq { 2 } }
+ }
+ {
+ \__mw_if_roman_number:xTF { \seq_item:Nn \l__mw_tmpb_seq { 2 } }
{
- \tl_set:Nn \l_oddpage_tl
+ \exp_args:NNx \int_set:Nn \l__mw_tmpc_int
+ {
+ \g__mw_last_page_int - \exp_not:N \int_from_roman:n { \seq_item:Nn \l__mw_tmpb_seq { 2 } } + 1
+ }
+ }
{
- \group_begin:
- \keys_set:nn{watermark}{#2}
- \begin{tikzpicture}[remember~picture,overlay]
- \node
- [
- scale = \fp_use:N\l_scale_fp,
- opacity = \fp_use:N\l_opacity_fp,
- shift = \tl_use:N\l_shift_tl,
- color = \tl_use:N \l_color_tl,
- rotate = \fp_use:N \l_rotate_fp,
- align = \tl_use:N \l_align_tl,
- \bool_if:NTF \l_showframe_bool{draw}{},
- ]
- at(current~page.center){#3};
- \end{tikzpicture}
- \group_end:
+ \int_set:Nn \l__mw_tmpc_int { -1 }
+ % error
+ \msg_error:nnn {magicwatermark}{ Unable to parse }
+ {
+ Error~list~parameter~``#1''.^^J
+ Error~range~right~``#1''.
+ }
}
+ }
+
+ \fp_compare:nT { \l__mw_tmpb_int > 0 && \l__mw_tmpc_int > 0}
+ {
+ \int_step_inline:nnn
+ { \int_min:nn { \l__mw_tmpb_int } { \l__mw_tmpc_int } }
+ { \int_max:nn { \l__mw_tmpb_int } { \l__mw_tmpc_int } }
+ {
+ \clist_put_right:Nn \l__mw_tmpa_clist { ##1 }
}
+ }
}
-\NewDocumentCommand{\OddWatermark}{}
-{
- \AddEverypageHook
+
+\cs_new:Npn \__mw_list_parser_for_expression:n #1 {
+ \int_zero:N \l__mw_tmpd_int
+ \int_zero:N \l__mw_tmpe_int
+ \group_begin:
+ \tl_set:Nn \l__mw_tmpa_tl { #1 }
+ \regex_replace_all:nnN { (\d+)X } { \1*\c{l__mw_tmpe_int} } \l__mw_tmpa_tl
+ \tl_replace_all:Nnn \l__mw_tmpa_tl { X } { \l__mw_tmpe_int }
+ % \tl_show:N \l__mw_tmpa_tl
+ \int_while_do:nn { \l__mw_tmpd_int < \g__mw_last_page_int }
{
- \int_if_odd:nT{\int_use:N \value{page}}
- {
- \tl_use:N \l_oddpage_tl
- }
+ \int_set:Nn \l__mw_tmpd_int
+ {
+ \fp_eval:n { \l__mw_tmpa_tl }
+ }
+ \clist_gput_right:NV \l__mw_tmpa_clist \l__mw_tmpd_int
+ \int_incr:N \l__mw_tmpe_int
}
+ \group_end:
}
-\NewDocumentCommand{\NewWatermark}{m}
-{
- \tl_new:c {l_#1_tl}
- \tl_put_right:Nn \g_case_tl {{#1}{\tl_clear:c {l_#1_tl}}}
- \tl_put_right:Nn \g_clear_all_tl {\tl_clear:c {l_#1_tl}}
+
+\cs_new_nopar:Npn \__mw_list_parser:nN #1#2 {
+
+ % case 1 -> odd, even
+ % case 2 -> number, 1
+ % case 3 -> roman, i
+ % case 4 -> range, 1-5, 3-ii
+ % case 5 -> expression, 3X + 1
+
+ \__mw_list_parser_aux:n { #1 }
+
+ \clist_clear:N \l__mw_tmpa_clist
+ \clist_map_inline:Nn \l__mw_list_arabic_number_clist
+ {
+ \__mw_list_parser_for_arabic_number:n { ##1 }
+ }
+
+ \clist_map_inline:Nn \l__mw_list_roman_number_clist
+ {
+ \__mw_list_parser_for_roman_number:n { ##1 }
+ }
+
+
+ \clist_map_inline:Nn \l__mw_list_range_clist
+ {
+ \__mw_list_parser_for_range:n { ##1 }
+ }
+
+
+ \clist_map_inline:Nn \l__mw_list_expression_clist
+ {
+ \__mw_list_parser_for_expression:n { ##1 }
+ }
+
+
+ \clist_sort:Nn \l__mw_tmpa_clist {
+ \int_compare:nNnTF { ##1 } > { ##2 }
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+ \__mw_clist_deduplicate:N \l__mw_tmpa_clist
+ \clist_set_eq:NN #2 \l__mw_tmpa_clist
}
-\NewDocumentCommand{\MyPageSetup}{O{} m +m}
-{
- \tl_set:cn {l_#2_tl}
+
+
+\cs_new:Npn \__mw_parser:nN #1#2 {
+ \clist_clear:N #2
+ \tl_if_eq:nnTF { #1 } { * }
+ {
+ \int_step_inline:nnn { 1 } { \g__mw_last_page_int }
{
- \group_begin:
- \keys_set:nn{watermark}{#1}
- \begin{tikzpicture}[remember~picture,overlay]
- \node
- [
- scale = \fp_use:N\l_scale_fp,
- opacity = \fp_use:N\l_opacity_fp,
- shift = \tl_use:N\l_shift_tl,
- color = \tl_use:N \l_color_tl,
- rotate = \fp_use:N \l_rotate_fp,
- align = \tl_use:N \l_align_tl,
- \bool_if:NTF \l_showframe_bool{draw}{},
- ]
- at(current~page.center){#3};
- \end{tikzpicture}
- \group_end:
+ \clist_put_right:Nn #2 { ##1 }
}
+ }
+ {
+ \__mw_list_parser:nN { #1 } #2
+ }
}
-\NewDocumentCommand{\MyWatermark}{m}
+
+
+
+\keys_define:nn { mw / new }
{
- \AddEverypageHook{\tl_use:c {l_#1_tl}}
+ pages .tl_set:N = \g__mw_list_tl,
+ style .tl_set:N = \g__mw_style_tl,
+ % style .code:n = \__mw_parse_style:n { #1 },
+ content .tl_set:N = \g__mw_content_tl,
+ is~append .bool_set:N = \g__mw_is_append_bool,
+ tikz .bool_set:N = \g__mw_tikz_bool
}
-\keys_define:nn{watermark}
-{
- scale.fp_set:N = \l_scale_fp,
- scale.initial:n = 1.0,
- scale.default:n = 1.0,
- opacity.fp_set:N = \l_opacity_fp,
- opacity.initial:n = 0.8,
- opacity.default:n = 0.8,
- shift.tl_set:N = \l_shift_tl,
- shift.initial:n = {(0,0)},
- shift.default:n = {(0,0)},
- color.tl_set:N = \l_color_tl,
- color.initial:n = black,
- color.default:n =black,
- rotate.fp_set:N =\l_rotate_fp,
- rotate.initial:n = 0.0,
- rotate.default:n = 0.0,
- align.tl_set:N = \l_align_tl,
- align.initial:n = center,
- align.default:n = center,
- showframe.bool_set:N = \l_showframe_bool,
- showframe.initial:n = false,
- showframe.default:n = true,
+
+\cs_new:Npn \__mw_parse_style: {
+ \tl_if_empty:NF \g__mw_style_tl
+ {
+ \bool_if:NTF \g__mw_tikz_bool
+ {
+ \IfPackageLoadedTF{tikz}
+ {
+ \tl_set_eq:NN \l__mw_tmpc_tl \g__mw_style_tl
+ }
+ {
+ \msg_error:nn {magicwatermark}{ Load TikZ }
+ }
+ }
+ {
+ \msg_warning:nn {magicwatermark}{ Enable TikZ }
+ }
+ }
}
-\tl_gset:Nn \g_clear_all_tl
+
+\keys_define:nn { mw }
{
- \tl_clear:N \l_mainpage_tl
- \tl_clear:N \l_evenpage_tl
- \tl_clear:N \l_oddpage_tl
+ setup .code:n = \__mw_new_watermark:n {#1}
}
-\tl_gset:Nn \g_case_tl{
- {all}
- {
- \tl_use:N\g_clear_all_tl
- }
- {even}
- {
- \tl_clear:N \l_evenpage_tl
- }
- {odd}
- {
- \tl_clear:N \l_oddpage_tl
- }
- {main}
+
+
+\cs_new:Npn \__mw_new_watermark:n #1 {
+ \group_begin:
+ \keys_set:nn { mw / new }{#1}
+
+ % parse style
+ \__mw_parse_style:
+
+ % parse pages
+ \exp_args:NV \__mw_parser:nN \g__mw_list_tl \l__mw_tmpc_clist
+
+ \clist_map_inline:Nn \l__mw_tmpc_clist {
+
+ \bool_if:NTF \g__mw_tikz_bool
+ {
+ \IfPackageLoadedTF{tikz}
+ {
+ \tl_set:Ne \l__mw_tmpb_tl
{
- \tl_clear:N \l_mainpage_tl
+ \exp_not:N \tikz[remember~picture, overlay]
+ {
+ \exp_not:N \node[inner~sep = 0pt, outer~sep = 0pt, opacity = .5, align = left, \exp_not:V \g__mw_style_tl] at (current~page.center)
+ {
+ \exp_not:V \g__mw_content_tl
+ };
+ }
}
+ }
+ {
+ \msg_error:nn {magicwatermark}{ Load TikZ }
+ }
+ }
+ {
+ \tl_set:NV \l__mw_tmpb_tl \g__mw_content_tl
+ }
+
+ \bool_if:nTF { \g__mw_is_append_bool && \tl_if_exist_p:c { g__mw_content_ \int_to_roman:n { ##1 } _tl } }
+ {
+ \tl_gput_right:cV { g__mw_content_ \int_to_roman:n { ##1 } _tl } \l__mw_tmpb_tl
+ }
+ {
+ \tl_gset:cV { g__mw_content_ \int_to_roman:n { ##1 } _tl } \l__mw_tmpb_tl
+ }
+ }
+ \group_end:
}
-\NewDocumentCommand{\ClearWatermark}{m}
-{
-\clist_gset:Nn \g_clear_clist{#1}
-\clist_map_variable:NNn \g_clear_clist \clear
-{
- \exp_args:NV \str_case:nVF \clear
- \g_case_tl
- {\msg_warning:nn{clear}{not~have}}
-}
+
+
+\NewDocumentCommand{\MagicWatermark}{m}{
+ \group_begin:
+ \AtBeginDocument{
+ \keys_set:nn { mw } { #1 }
+ \AddToHook{shipout/background}{
+ \put(.5\paperwidth,-.5\paperheight){
+ \tl_if_exist:cT { g__mw_content_ \int_to_roman:n { \value{page} }_tl }
+ {
+ \tl_use:c { g__mw_content_ \int_to_roman:n { \value{page} } _tl }
+ }
+ }
+ }
+ }
+ \group_end:
}
-\ExplSyntaxOff
-\endinput
-%%
-%% End of file `magicwatermark.sty'.
+
+\@onlypreamble\MagicWatermark \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/mailing/mailing.sty b/Master/texmf-dist/tex/latex/mailing/mailing.sty
index a1b445dafce..2dca395590d 100644
--- a/Master/texmf-dist/tex/latex/mailing/mailing.sty
+++ b/Master/texmf-dist/tex/latex/mailing/mailing.sty
@@ -6,18 +6,18 @@
%%
%% mailing.dtx (with options: `package')
%%
-%% Copyright (C) 1999-2004 Johannes Braams. All rights reserved.
+%% Copyright (C) 1999-2024 Johannes Braams. All rights reserved.
%%
%% This file was generated from file(s) of the mailing package.
%% ------------------------------------------------------------
%%
%% It 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 2003/12/01 or later.
+%% 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".
%%
@@ -28,17 +28,17 @@
%% without such generated files.
%%
%% The list of all files belonging to the mailing package is
-%% given in the file `manifest.txt.
+%% given in the file `MANIFEST'.
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
-%% Copyright (C) 1999-2004 Johannes L. Braams texniek at braams.cistron.nl
+%% Copyright (C) 1999-2024 Johannes L. Braams texniek at texniek.nl
%%
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mailing}
- [2004/02/20 v1.0b Send letters to multiple addresses]
+ [2024/07/20 v1.0c Send letters to multiple addresses]
\newcommand{\addressfile}[1]{%
\def\M@filename{#1}}
\long\def\mailingtext#1{\global\mailing@text={#1}}
diff --git a/Master/texmf-dist/tex/latex/markdown/markdown.sty b/Master/texmf-dist/tex/latex/markdown/markdown.sty
index e0e1f2f3748..b6c455d68f4 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ý
+%% 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
@@ -42,7 +42,6 @@
%%
%% The names of the source files used are shown above.
%%
-\RequirePackage{expl3}
\ExplSyntaxOn
\tl_const:Nn \c__markdown_option_layer_latex_tl { latex }
\cs_generate_variant:Nn
@@ -59,6 +58,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
@@ -75,10 +75,33 @@
\markdownLaTeXLoadedfalse
\AtEndOfPackage{
\markdownLaTeXLoadedtrue
- \markdownIfOption{noDefaults}{}{
- \markdownSetup{theme=witiko/markdown/defaults}
- }
}
+\ExplSyntaxOn
+\str_if_eq:VVT
+ \c__markdown_top_layer_tl
+ \c__markdown_option_layer_latex_tl
+ {
+ \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 }
+ }
+ }
+ }
+ \ExplSyntaxOn
+ }
+\ExplSyntaxOff
\def\markdownVersionSpace{ }%
\ProvidesPackage{markdown}[\markdownLastModified\markdownVersionSpace v%
\markdownVersion\markdownVersionSpace markdown renderer]%
@@ -108,6 +131,11 @@
\markdownSetup{#1}%
\markdownInputPlainTeX{#2}%
\endgroup}%
+\renewcommand\yamlInput[2][]{%
+ \begingroup
+ \yamlSetup{jekyllData, expectJekyllData, ensureJekyllData, #1}%
+ \markdownInputPlainTeX{#2}%
+ \endgroup}%
\ExplSyntaxOn
\renewenvironment
{ markdown }
@@ -121,11 +149,15 @@
\c { group_end: }
\c { tl_set_rescan:Nnn } \c { l_tmpa_tl } { } { \1 }
\c { __markdown_setup:V } \c { l_tmpa_tl }
- \c { markdownReadAndConvert@markdown } { }
+ \c { exp_args:NV }
+ \c { markdownReadAndConvert@ }
+ \c { @currenvir }
}
{
\group_end:
- \markdownReadAndConvert@markdown { }
+ \exp_args:NV
+ \markdownReadAndConvert@
+ \@currenvir
}
}
{ \markdownEnd }
@@ -133,15 +165,34 @@
{ 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 *
+ \markdownReadAndConvert@
+ { markdown* }
}
{ \markdownEnd }
+\renewenvironment
+ { yaml }
+ {
+ \group_begin:
+ \yamlSetup{jekyllData, expectJekyllData, ensureJekyllData}%
+ \markdown
+ }
+ { \yamlEnd }
\msg_new:nnn
{ markdown }
{ latex-markdown-star-deprecated }
@@ -149,25 +200,27 @@
The~markdown*~LaTeX~environment~has~been~deprecated~and~will~
be~removed~in~the~next~major~version~of~the~Markdown~package.
}
+\cs_generate_variant:Nn
+ \__markdown_setup:n
+ { V }
\ExplSyntaxOff
\begingroup
\catcode`\|=0\catcode`\<=1\catcode`\>=2%
\catcode`\\=12|catcode`|{=12|catcode`|}=12%
- |gdef|markdownReadAndConvert@markdown#1<%
- |markdownReadAndConvert<\end{markdown#1}>%
- <|end<markdown#1>>>%
+ |gdef|markdownReadAndConvert@#1<%
+ |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 }
+ { markdown theme #3.sty }
{
\msg_error:nnn
{ markdown }
@@ -175,37 +228,80 @@
{ #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 }
+ { markdown theme #3.sty }
{
- \msg_info:nnn
- { markdown }
- { loading-latex-theme }
+ \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
+ }
+ }
+ {
+ \msg_info:nnnn
+ { markdown }
+ { loading-latex-theme }
+ { #1 }
+ { #2 }
+ \prop_gput:Nnx
+ \g__markdown_latex_loaded_themes_linenos_prop
+ { #1 }
+ { \tex_the:D \tex_inputlineno:D }
+ \prop_gput:Nnn
+ \g__markdown_latex_loaded_themes_versions_prop
+ { #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
}
@@ -213,13 +309,27 @@
{ 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-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 }
@@ -247,6 +357,9 @@
\l_tmpa_tl
\l_tmpb_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
index a6ebbd6f1d9..f96ab1f5ccf 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_dot.sty
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `themes-witiko-dot')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný
+%% 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
@@ -59,7 +59,8 @@
fi}}%
\markdownRendererImage{Graphviz image}{#1.pdf}{#1.pdf}{##2}%
}{%
- \markdown@witiko@dot@oldRendererInputFencedCodePrototype{#1}{#2}{#3}%
+ \markdown@witiko@dot@oldRendererInputFencedCodePrototype
+ {#1}{#2}{#3}%
}%
}%
\next#2 \relax}%
diff --git a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty
index a962d1d8cd0..d6c2a7566a0 100644
--- a/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty
+++ b/Master/texmf-dist/tex/latex/markdown/markdownthemewitiko_graphicx_http.sty
@@ -6,7 +6,7 @@
%%
%% markdown.dtx (with options: `themes-witiko-graphicx-http')
%%
-%% Copyright (C) 2016-2024 Vít Starý Novotný
+%% 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
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 fca6079c579..6d5e2f993a7 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ý
+%% 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
@@ -42,67 +42,222 @@
%%
%% The names of the source files used are shown above.
%%
-\ProvidesPackage{markdownthemewitiko_markdown_defaults}[2024/01/03]%
+\ProvidesPackage{markdownthemewitiko_markdown_defaults}[2024/10/29]%
\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 }
- }
+ \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:
@@ -122,26 +277,7 @@
\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}
@@ -165,32 +301,9 @@
\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}
@@ -214,23 +327,25 @@
dlEndTight = {
\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}{
@@ -289,15 +404,6 @@
}
\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}},
@@ -405,11 +511,13 @@
\ltx@ifpackageloaded
{ minted }
{
+ \catcode`\%=14\relax
\catcode`\#=6\relax
\exp_args:NV
\inputminted
\l_tmpa_tl
{ #1 }
+ \catcode`\%=12\relax
\catcode`\#=12\relax
}
{
@@ -501,8 +609,9 @@
\advance\markdownLaTeXCitationsCounter by 1\relax
\ifx\relax#4\relax
\ifx\relax#5\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \cite{#1#2#6}% Without prenotes and postnotes, just accumulate cites
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
+ \cite{#1#2#6}% No prenotes/postnotes, just accumulate cites
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
\@gobblethree
@@ -512,7 +621,8 @@
\cite{#1}%
\fi
\cite[#5]{#6}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\else
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
@@ -539,7 +649,8 @@
\space % Insert a space before the prenote in later citations
\fi
#4~\expandafter\cite\ifx\relax#5\relax{#6}\else[#5]{#6}\fi
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\else
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
@@ -558,8 +669,9 @@
\advance\markdownLaTeXCitationsCounter by 1\relax
\ifx\relax#3\relax
\ifx\relax#4\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \citep{#1,#5}% Without prenotes and postnotes, just accumulate cites
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
+ \citep{#1,#5}% No prenotes/postnotes, just accumulate cites
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
\@gobbletwo
@@ -569,7 +681,8 @@
\citep{#1}%
\fi
\citep[][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\else
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
@@ -589,7 +702,8 @@
\citep{#1}%
\fi
\citep[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\else
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
@@ -604,8 +718,9 @@
\advance\markdownLaTeXCitationsCounter by 1\relax
\ifx\relax#3\relax
\ifx\relax#4\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
- \citet{#1,#5}% Without prenotes and postnotes, just accumulate cites
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
+ \citet{#1,#5}% No prenotes/postnotes, just accumulate cites
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter\expandafter
\@gobbletwo
@@ -615,10 +730,13 @@
\citet{#1}%
\fi
, \citet[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal
+ \relax
,
\else
- \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
+ \ifnum
+ \markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal
+ \relax
,
\fi
\fi
@@ -637,10 +755,13 @@
\citet{#1}%
\fi
, \citet[#3][#4]{#5}%
- \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter<\markdownLaTeXCitationsTotal
+ \relax
,
\else
- \ifnum\markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal\relax
+ \ifnum
+ \markdownLaTeXCitationsCounter=\markdownLaTeXCitationsTotal
+ \relax
,
\fi
\fi
@@ -654,13 +775,15 @@
\def\markdownLaTeXBibLaTeXCitations#1#2#3#4#5{%
\advance\markdownLaTeXCitationsCounter by 1\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\autocites#1[#3][#4]{#5}%
\expandafter\@gobbletwo
\fi\markdownLaTeXBibLaTeXCitations{#1[#3][#4]{#5}}}
\def\markdownLaTeXBibLaTeXTextCitations#1#2#3#4#5{%
\advance\markdownLaTeXCitationsCounter by 1\relax
- \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal\relax
+ \ifnum\markdownLaTeXCitationsCounter>\markdownLaTeXCitationsTotal
+ \relax
\textcites#1[#3][#4]{#5}%
\expandafter\@gobbletwo
\fi\markdownLaTeXBibLaTeXTextCitations{#1[#3][#4]{#5}}}
@@ -737,7 +860,8 @@
{
\markdownLaTeXRendererAutolink { #2 } { #3 }
}{
- \markdownLaTeXRendererDirectOrIndirectLink { #1 } { #2 } { #3 } { #4 }
+ \markdownLaTeXRendererDirectOrIndirectLink
+ { #1 } { #2 } { #3 } { #4 }
}
}
\def\markdownLaTeXRendererAutolink#1#2{%
@@ -885,38 +1009,127 @@
},
},
}
-\ExplSyntaxOff
-\markdownIfOption{strikeThrough}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- strikeThrough = {%
- \st{#1}%
- },
- }
+\__markdown_if_option:nT
+ { mark }
+ {
+ \sys_if_engine_luatex:TF
+ {
+ \RequirePackage
+ { luacolor }
+ \RequirePackage
+ { lua-ul }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ mark = {
+ \highLight
+ { #1 }
+ },
+ }
+ }
+ }
+ {
+ \RequirePackage
+ { xcolor }
+ % TODO: Use just package soul after TeX Live 2023.
+ \IfFormatAtLeastTF
+ { 2023-02-18 }
+ {
+ \RequirePackage
+ { soul }
+ }
+ {
+ \RequirePackage
+ { soulutf8 }
+ }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ mark = {
+ \hl
+ { #1 }
+ },
+ }
+ }
+ }
}
-}{}
-\markdownIfOption{mark}{%
- \RequirePackage{soulutf8}%
- \markdownSetup{
- rendererPrototypes = {
- mark = {%
- \hl{#1}%
- },
- }
+\__markdown_if_option:nT
+ { strikeThrough }
+ {
+ \sys_if_engine_luatex:TF
+ {
+ \RequirePackage
+ { lua-ul }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ strikeThrough = {
+ \strikeThrough
+ { #1 }
+ },
+ }
+ }
+ }
+ {
+ % TODO: Use just package soul after TeX Live 2023.
+ \IfFormatAtLeastTF
+ { 2023-02-18 }
+ {
+ \RequirePackage
+ { soul }
+ }
+ {
+ \RequirePackage
+ { soulutf8 }
+ }
+ \markdownSetup
+ {
+ rendererPrototypes = {
+ strikeThrough = {
+ \st
+ { #1 }
+ },
+ }
+ }
+ }
}
-}{}
\ExplSyntaxOn
+\seq_new:N
+ \l__markdown_image_identifiers_seq
+\markdownSetup {
+ rendererPrototypes = {
+ image = {
+ \begin { figure }
+ \begin { center }
+ \includegraphics
+ [ alt = { #1 } ]
+ { #3 }
+ \tl_if_empty:nF
+ { #4 }
+ { \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{
+ \RequirePackage { graphicx }
+ \markdownSetup {
rendererPrototypes = {
imageAttributeContextBegin = {
\group_begin:
- \markdownSetup{
+ \markdownSetup {
rendererPrototypes = {
+ attributeIdentifier = {
+ \seq_put_right:Nn
+ \l__markdown_image_identifiers_seq
+ { ##1 }
+ },
attributeKeyValue = {
\setkeys
{ Gin }
@@ -939,13 +1152,13 @@
{
{ latex }
{
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_inline:nn
{ #1 }
{ tex }
}
}
{
- \__markdown_plain_tex_default_input_raw_inline_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_inline:nn
{ #1 }
{ #2 }
}
@@ -958,13 +1171,13 @@
{
{ latex }
{
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_block:nn
{ #1 }
{ tex }
}
}
{
- \__markdown_plain_tex_default_input_raw_block_renderer_prototype:nn
+ \__markdown_plain_tex_default_input_raw_block:nn
{ #1 }
{ #2 }
}
diff --git a/Master/texmf-dist/tex/latex/mathastext/mathastext.sty b/Master/texmf-dist/tex/latex/mathastext/mathastext.sty
index 2bddf362229..b63a611e105 100644
--- a/Master/texmf-dist/tex/latex/mathastext/mathastext.sty
+++ b/Master/texmf-dist/tex/latex/mathastext/mathastext.sty
@@ -23,24 +23,21 @@
%%----------------------------------------------------------------
%% Package: mathastext
%% Info: Use the text font in math mode (JFB)
-%% Version: 1.3zb 2023/12/29
+%% 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, 2023 Jean-Francois Burnol
-%% <jfbu at free dot fr>
+%% Copyright (C) 2011-2019, 2022-2024 Jean-Francois Burnol
+%% <jfbu at free dot fr>
%% Examples of use of mathastext:
%% http://jf.burnol.free.fr/mathastext.html
%% http://jf.burnol.free.fr/showcase.html
%%----------------------------------------------------------------
-\NeedsTeXFormat{LaTeX2e}
+\NeedsTeXFormat{LaTeX2e}[2020/02/02]
\ProvidesPackage {mathastext}
- [2023/12/29 v1.3zb 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{}
\PackageInfo{mathastext}{Starting the math mode configuration\@gobble}
-\newif\ifmst@robust@obsessed@LaTeX@era
-\@ifl@t@r\fmtversion{2019/10/01}{\mst@robust@obsessed@LaTeX@eratrue}{}
-\edef\mst@robustifyingspace{\ifmst@robust@obsessed@LaTeX@era\space\fi}
\let\mst@Umathcharnumdef\Umathcharnumdef
\let\mst@Umathcodenum \Umathcodenum
\let\mst@Umathcode \Umathcode
@@ -75,20 +72,34 @@
\newif\ifmst@XeOrLua
\ifmst@LuaTeX\mst@XeOrLuatrue\fi
\ifmst@XeTeX \mst@XeOrLuatrue\fi
+\ifmst@XeTeX
+ \def\mst@activemathcodenum@space{"1FFFFF }%
+ \let\mst@mathcodenum\mst@Umathcodenum
+\else
+\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@eui{EU1}\def\mst@euii{EU2}\def\mst@tu{TU}
-\def\mst@OneifUniEnc {%
- \ifx \mst@tmp@enc\mst@tu 1\else
- \ifx \mst@tmp@enc\mst@eui 1\else
- \ifx \mst@tmp@enc\mst@euii 1\else 0\fi\fi\fi }
+\def\mst@tu{TU}
+\def\mst@OneifUniEnc{\ifx\mst@tmp@enc\mst@tu1\else0\fi}
\newif\ifmst@goahead
\newif\ifmst@abort
\def\mst@enc{\encodingdefault}
\def\mst@fam{\familydefault}
\def\mst@ser{\seriesdefault}
- \def\mst@opsh{\shapedefault} %% will be default shape for operator names
+ \def\mst@opsh{\shapedefault}
\def\mst@bold{\bfdefault}
- \def\mst@ltsh{\shapedefault} %% will be default shape for letters
+ \def\mst@ltsh{\shapedefault}
\edef\mst@greekfont{\familydefault}
\newif\ifmst@italic
\newif\ifmst@frenchmath
@@ -131,25 +142,26 @@
\newif\ifmst@noexclam
\DeclareOption{noexclam}{\mst@noexclamtrue}
\newif\ifmst@asterisk
- \DeclareOption{noasterisk}{\PackageWarningNoLine{mathastext}
- {option `noasterisk\string' is deprecated.^^J\space\space\space
- Check the documentation}}
\DeclareOption{asterisk}{\mst@asterisktrue}
\newif\ifmst@nospecials
\DeclareOption{nospecials}{\mst@nospecialstrue}
-\newif\ifmst@basic % 1.3 to avoid unnecessary patch of amsmath \newmcodes@
+\newif\ifmst@basic
\DeclareOption{basic}{\mst@basictrue
\ExecuteOptions{noparenthesis,nopunctuation,%
noplusnominus,noequal,noexclam,nospecials,nolessnomore}}
\newif\ifmst@nohbar
\DeclareOption{nohbar}{\mst@nohbartrue}
+\newif\ifmst@activedigits
+ \DeclareOption{activedigits}{\mst@activedigitstrue}
\newif\ifmst@nodigits
\DeclareOption{nodigits}{\mst@nodigitstrue}
\newif\ifmst@defaultimath
\DeclareOption{defaultimath}{\mst@defaultimathtrue}
+\newif\ifmst@noletters
+ \DeclareOption{noletters}{\mst@noletterstrue\ExecuteOptions{nohbar,defaultimath}}
\newif\ifmst@mathaccents
\DeclareOption{mathaccents}{\mst@mathaccentstrue}
-\newif\ifmst@unimathaccents % 1.3u
+\newif\ifmst@unimathaccents
\DeclareOption{unimathaccents}{\mst@mathaccentstrue\mst@unimathaccentstrue}
\newif\ifmst@needsymbol
\newif\ifmst@symboldelimiters
@@ -157,7 +169,7 @@
\newif\ifmst@symboldigits
\DeclareOption{symboldigits}{\mst@needsymboltrue\mst@symboldigitstrue}
\newif\ifmst@symbolgreek
-\newif\ifmst@customgreek %% new with 1.3d
+\newif\ifmst@customgreek
\DeclareOption{symbolgreek}{\mst@needsymboltrue\mst@symbolgreektrue
\mst@customgreektrue }
\newif\ifmst@symbolre
@@ -214,6 +226,13 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareOption{fouriervec}{\mst@fouriervectrue}
\newif\ifmst@subdued
\DeclareOption{subdued}{\mst@subduedtrue}
+\newif\ifmst@everymath
+ \DeclareOption{everymath}{\mst@everymathtrue
+\PackageWarningNoLine{mathastext}{%
+ `everymath\string' will be removed at next major release.\MessageBreak
+ Please report to the author the circumstances\MessageBreak
+ which mandated its use in the present document}%
+}
\def\mst@unicodeminus {2013}
\def\mst@checkoption #1unicodeminus#2\mst@#3\mst@@
{\ifx\\#3\\\PackageWarningNoLine{mathastext}
@@ -230,7 +249,20 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathAccent{#1}}
\def\mst@normalversionname{normal}%
\def\mst@boldversionname{bold}%
-\newmuskip\mst@exists@muskip %% v 1.15e
+\def\mst@OnlyIfNotSubdued#1{%
+ \ifmst@subdued
+ \ifx\math@version\mst@normalversionname
+ \else
+ \ifx\math@version\mst@boldversionname
+ \else
+ #1%
+ \fi
+ \fi
+ \else
+ #1%
+ \fi
+}%
+\newmuskip\mst@exists@muskip
\newmuskip\mst@forall@muskip
\def\mst@exists@skip{1mu}
\def\mst@forall@skip{.6667mu}
@@ -258,25 +290,37 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\newcommand*\MTexistsdoesskip {\AtBeginDocument {\MTexistsdoesskip }}
\newcommand*\MTnormalforall {\AtBeginDocument {\MTnormalforall }}
\newcommand*\MTforalldoesskip {\AtBeginDocument {\MTforalldoesskip }}
-\newmuskip\mst@prime@muskip %% v 1.2
+\newmuskip\mst@prime@muskip
\def\mst@prime@skip{.5mu}
\ifmst@italic\ifmst@frenchmath\else\def\mst@prime@skip{0mu}\fi\fi
+\def\mst@tmp#1{%
+\def\mst@mathactivateprime{%
+ \ifnum\catcode`#1=\active
+ \@ifundefined{active@char#1}
+ {}
+ {\mst@do@activecase #1{}{\mst@active@math@prime}}%
+ \else
+ \mst@@mathactivate #1{}{\mst@active@math@prime}%
+ \fi
+}%
+\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}
-{\catcode`\'=12
-\gdef\mst@@modifyprime{\mst@mathactivate'{}\mst@active@math@prime}}
-\newcommand*\MTnormalprime {\let\mst@modifyprime\@empty }
-\newcommand*\MTprimedoesskip {\let\mst@modifyprime\mst@@modifyprime}
-\ifmst@subdued
- \MTnormalprime
+\ifmst@everymath
+ \newcommand*\MTnormalprime {\let\mst@modifyprime\@empty}
+ \newcommand*\MTprimedoesskip{\let\mst@modifyprime\mst@mathactivateprime}%
+ \AtBeginDocument{%
+ \everymath\expandafter
+ {\the\everymath \mst@modifyprime \MTnormalprime}%
+ \everydisplay\expandafter
+ {\the\everydisplay \mst@modifyprime \MTnormalprime}%
+ \MTprimedoesskip
+ }
\else
- \MTprimedoesskip
+ \newcommand*\MTnormalprime {\mst@undo@mathactivateprime}
+ \newcommand*\MTprimedoesskip{\mst@mathactivateprime}
+ \AtBeginDocument{\MTprimedoesskip}
\fi
-\AtBeginDocument{%
- \everymath\expandafter
- {\the\everymath \mst@modifyprime \MTnormalprime}%
- \everydisplay\expandafter
- {\the\everydisplay \mst@modifyprime \MTnormalprime}%
-}
\newcommand*\MTexistsskip[1]{\edef\mst@exists@skip{#1}%
\mst@exists@muskip\mst@exists@skip\relax}
\newcommand*\MTforallskip[1]{\edef\mst@forall@skip{#1}%
@@ -290,47 +334,135 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\mathastextforallskip\MTforallskip
\let\mathastextprimeskip\MTprimeskip
\ifmst@noparen\else
-\AtBeginDocument{%
- \@ifundefined{resetMathstrut@}{% nothing to do, no amsmath
- }{% amsmath loaded, and possibly patched by things such as lualatex-math
- \let\mst@savedresetMathstrut@\resetMathstrut@
- \ifx\mst@the\the % means that \MTnonlettersobeymathxx was used in preamble
- \let\mst@the\@gobble\MTnonlettersobeymathxx
- \fi}}
+\AtEndOfPackage{%
+ \AtBeginDocument{%
+ \@ifundefined{resetMathstrut@}
+ {}%
+ {%
+ \let\mst@savedresetMathstrut@\resetMathstrut@
+ \ifx\mst@the\the
+ \let\mst@the\@gobble
+ \MTnonlettersobeymathxx
+ \fi
+ }%
+ }%
+}%
\fi
-\newtoks\mst@do@nonletters
-\newtoks\mst@do@easynonletters
-\newtoks\mst@do@az
-\newtoks\mst@do@AZ
-\let\mst@the\@gobble
-\newcommand*\MTnonlettersdonotobeymathxx{%
- \ifx\mst@the\@gobble
+\def\mst@magic@v #1#2#3#4#5{#1#3#4}
+\def\mst@magic@vi #1#2#3#4#5#6{#1#2#4#5}
+\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{%
+ \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
+ \expandafter\let\csname mst@orig@normal@char#1\expandafter\endcsname
+ \csname normal@char#1\endcsname
+ \ifmst@everymath\else}{}\fi
+ \def\mst@tmp##1##2{\def##1{\mst@fork{#2}{#3}##2}}%
+ \expandafter\mst@tmp\csname user@active#1\expandafter\endcsname
+ \csname mst@orig@user@active#1\endcsname
+ \def\mst@tmp##1##2{\def##1{\mst@safefork{#2}{#3}##2}}%
+ \expandafter\mst@tmp\csname normal@char#1\expandafter\endcsname
+ \csname mst@orig@normal@char#1\endcsname
+ \ifmst@everymath
\else
- \@ifundefined{mst@savedresetMathstrut@}{}{%
- \PackageInfo{mathastext}{restoring for this group or environment
- the original\MessageBreak
- amsmath \protect\resetMathstrut@}%
- \let\resetMathstrut@\mst@savedresetMathstrut@}%
+ \expandafter\let\csname mst@hackedshorthand@#1\endcsname\@empty
\fi
- \let\mst@the\@gobble
-}%
-\def\mst@OnlyIfNotSubdued#1{%
- \ifmst@subdued
- \ifx\math@version\mst@normalversionname
- \else
- \ifx\math@version\mst@boldversionname
- \else
- #1%
- \fi
- \fi
+}
+\begingroup
+ \catcode`\~=\active
+ \def\x{%
+\endgroup
+\ifmst@everymath
+ \def\mst@@mathactivate##1##2##3{%
+ \begingroup
+ \lccode`~=`##1
+ \lccode`##1=`##1
+ \lowercase{\endgroup
+ \mathcode`##1="8000
+ \def~{##2##3}%
+ }%
+ }%
+\else
+ \def\mst@@mathactivate##1##2##3{%
+ \begingroup
+ \lccode`~=`##1
+ \lccode`##1=`##1
+ \lowercase{\endgroup
+ \mathcode`##1="8000
+ \@ifundefined{mst@prioractivemeaning@##1}
+ {\expandafter\let
+ \csname mst@prioractivemeaning@##1\endcsname ~}
+ {}%
+ \def~{\ifmmode\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+ {##2##3}{##1}}%
+ }%
+ }%
+\fi
+}\x
+\def\mst@mathactivate#1#2#3{%
+ \ifnum\catcode`#1=\active
+ \@ifundefined{active@char#1}{}{\mst@do@activecase #1{#2}{#3}}%
\else
- #1%
+ \mst@OnlyIfNotMathActive{#1}{\mst@@mathactivate #1{#2}{#3}}%
\fi
+}
+\ifmst@everymath
+\else
+\def\mst@mathdeactivate#1#2{%
+ \if#1\string-\else\mst@mathcodenum`#1=#2\relax\fi
+ \@ifundefined{active@char#1}
+ {\@ifundefined{mst@prioractivemeaning@#1}
+ {}%
+ {\mst@restoreactivemeaning#1%
+ \expandafter\let\csname mst@prioractivemeaning@#1\endcsname\relax}%
+ }
+ {\@ifundefined{mst@hackedshorthand@#1}
+ {}
+ {\expandafter\let\csname user@active#1\expandafter\endcsname
+ \csname mst@orig@user@active#1\endcsname
+ \expandafter\let\csname normal@char#1\expandafter\endcsname
+ \csname mst@orig@normal@char#1\endcsname
+ \expandafter\let\csname mst@hackedshorthand@#1\endcsname\relax
+ }%
+ }%
}%
-\def\mst@nonlettersobeymathxx{%
- \ifx\mst@the\the
- \else
- \@ifundefined{mst@savedresetMathstrut@}{}{%
+\def\mst@restoreactivemeaning#1{%
+ \begingroup
+ \lccode`~=`#1
+ \lccode`#1=`#1
+ \lowercase{\endgroup
+ \expandafter\let\expandafter~\csname mst@prioractivemeaning@#1\endcsname
+ }%
+}
+\fi
+\newtoks\mst@do@nonletters
+\ifmst@everymath
+\else
+ \newtoks\mst@undo@nonletters
+\fi
+\ifmst@everymath
+ \def\mst@addtodo@nonletters#1#2#3{\mst@do@nonletters\expandafter
+ {\the\mst@do@nonletters\mst@mathactivate#1#2#3}%
+ }%
+\else
+ \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\mst@mathcodenum`#1}}%
+ \mst@undo@nonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@nonletters}%
+ }%
+\fi
+\let\mst@the\@gobble
+\def\mst@redefine@resetMathstrut@{%
+ \@ifundefined{mst@savedresetMathstrut@}
+ {}
+ {%
\ifmst@symboldelimiters
\def\resetMathstrut@{%
\setbox\z@\hbox{\the\textfont\symmtpsymbol\char40
@@ -343,117 +475,117 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\the\textfont\symoperators\char40}%
\ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@}%
\fi
- \PackageInfo{mathastext}{\string\resetMathstrut@\space
- from amsmath replaced for this\MessageBreak group or environment}}%
- \fi
- \let\mst@the\the
+ \PackageInfo{mathastext}{\string\resetMathstrut@\space
+ from amsmath replaced for this\MessageBreak group or environment}%
+ }%
}%
-\newcommand*\MTnonlettersobeymathxx
- {\mst@OnlyIfNotSubdued\mst@nonlettersobeymathxx}%
-\newcommand*\MTeasynonlettersdonotobeymathxx{\let\mst@theeasy\@gobble}%
-\def\mst@easynonlettersobeymathxx{\let\mst@theeasy\the}%
-\newcommand*\MTeasynonlettersobeymathxx
- {\mst@OnlyIfNotSubdued\mst@easynonlettersobeymathxx}%
-\MTeasynonlettersobeymathxx % no-op here if subdued mode
-\def\mst@mathactiveletters{\let\mst@thef\the \let\mst@theF\the}%
-\newcommand*\MTmathactiveletters
- {\mst@OnlyIfNotSubdued\mst@mathactiveletters}%
-\MTmathactiveletters % no-op here if subdued mode
-\def\mst@mathactiveLetters{\let\mst@theF\the}%
-\newcommand*\MTmathactiveLetters
- {\mst@OnlyIfNotSubdued\mst@mathactiveLetters}%
-\newcommand*\MTmathstandardletters{\let\mst@thef\@gobble \let\mst@theF\@gobble}%
-\newcommand*\MTicinmath{%
- \MTmathactiveletters
- \def\mst@itcorr{\ifnum\fam=\m@ne\/\fi}%
- \let\mst@ITcorr\mst@itcorr}
-\newcommand*\MTICinmath{%
- \MTmathactiveLetters
- \def\mst@ITcorr{\ifnum\fam=\m@ne\/\fi}}
-\newcommand*\MTnoicinmath{\let\mst@itcorr\@empty\let\mst@ITcorr\@empty}
-\newcommand*\MTnoICinmath{\let\mst@ITcorr\@empty}
-\newcommand*\MTicalsoinmathxx{%
- \ifx\mst@itcorr\@empty\else\def\mst@itcorr{\/}\fi
- \ifx\mst@ITcorr\@empty\else\def\mst@ITcorr{\/}\fi}
-\newcommand*\MTsetmathskips[3]{%
- \@namedef{mst@before#1}{\ifnum\fam=\m@ne\mskip#2\relax\fi }%
- \@namedef{mst@after#1}{\ifnum\fam=\m@ne\mskip#3\relax\fi }%
-}
-\newcommand*\MTunsetmathskips[1]{%
- \@namedef{mst@before#1}{}%
- \@namedef{mst@after#1}{}%
-}
-\def\mst@magic@v #1#2#3#4#5{#1#3#4}
-\def\mst@magic@vi #1#2#3#4#5#6{#1#2#4#5}
-\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{% #1 is a category 11 or 12 character token
- \@ifundefined{active@char#1}{}{%
- \ifcat #1a\mathcode`#1=#2\else
- \ifx\relax #2\relax\mathcode`#1=`#1 \else\mathcode`#1=#3\fi\fi
- \expandafter\expandafter\expandafter\let\expandafter\expandafter
- \csname mst@orig@user@active#1\endcsname
- \csname user@active#1\endcsname
- \expandafter\expandafter\expandafter\let\expandafter\expandafter
- \csname mst@orig@normal@char#1\endcsname
- \csname normal@char#1\endcsname
- \ifcat #1a%
- \expandafter\edef\csname user@active#1\endcsname
- {\noexpand\mst@fork {{#2\noexpand#3}}{}\expandafter
- \noexpand\csname mst@orig@user@active#1\endcsname
- }%
- \expandafter\edef\csname normal@char#1\endcsname
- {\noexpand\mst@safefork {{#2\noexpand#3}}{}\expandafter
- \noexpand\csname mst@orig@normal@char#1\endcsname
- }%
+\def\mst@restore@resetMathstrut@{%
+ \@ifundefined{mst@savedresetMathstrut@}{}{%
+ \PackageInfo{mathastext}{restoring for this group or environment
+ the original\MessageBreak
+ amsmath \protect\resetMathstrut@}%
+ \let\resetMathstrut@\mst@savedresetMathstrut@}%
+}%
+\ifmst@everymath
+ \newcommand*\MTnonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{%
+ \ifx\mst@the\the
+ \else
+ \mst@redefine@resetMathstrut@
+ \fi
+ \let\mst@the\the
+ }%
+ }%
+ \newcommand*\MTnonlettersdonotobeymathxx{%
+ \ifx\mst@the\@gobble
\else
- \expandafter\edef\csname user@active#1\endcsname
- {\noexpand\mst@fork {#2}\noexpand#3\expandafter
- \noexpand\csname mst@orig@user@active#1\endcsname
- }%
- \expandafter\edef\csname normal@char#1\endcsname
- {\noexpand\mst@safefork {#2}\noexpand#3\expandafter
- \noexpand\csname mst@orig@normal@char#1\endcsname
- }%
- \fi}}
-\begingroup
- \catcode`\~=\active
- \def\x{\endgroup
- \def\mst@mathactivate##1##2##3{% ##1 guaranteed of cat 11 or 12
- \begingroup
- \lccode`~=`##1
- \lccode`##1=`##1
- \lowercase{\endgroup
- \ifnum\catcode`##1=\active
- \mst@do@activecase ##1{##2}##3%
- % careful as ##2 is empty in the asterisk and
- % prime case!
- \else
- \mathcode`##1="8000
- % version 1.3 adds the possibility of extra skips around letters,
- % (only if non catcode active at the time of use).
- \ifcat##1a\edef~{% extra braces for a^b for example
- {\expandafter\noexpand\csname mst@before##1\endcsname
- ##2\noexpand##3%
- \expandafter\noexpand\csname mst@after##1\endcsname}}%
- \else\def~{##2##3}\fi
- \fi}}}
-\x
-\def\mst@addtodo@nonletters#1#2#3{%
- % #1 will be of cat 11 or 12.
- % #2 is empty for asterisk and right quote
- \mst@do@nonletters\expandafter
- {\the\mst@do@nonletters \mst@mathactivate#1{#2}#3}%
-}
-\def\mst@addtodo@easynonletters#1#2{% #1 is a one char control sequence
- \mst@do@easynonletters\expandafter{\the\mst@do@easynonletters\mathcode`#1=#2}%
-}
-\def\mst@addtodo@az#1#2{%
- \mst@do@az\expandafter{\the\mst@do@az\mst@mathactivate#1#2\mst@itcorr}
-}
-\def\mst@addtodo@AZ#1#2{%
- \mst@do@AZ\expandafter{\the\mst@do@AZ\mst@mathactivate#1#2\mst@ITcorr}%
-}
+ \mst@restore@resetMathstrut@
+ \fi
+ \let\mst@the\@gobble
+ }%
+\else
+ \newcommand*\MTnonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{%
+ \AtBeginDocument{\MTnonlettersobeymathxx}%
+ }%
+ }%
+ \newcommand*\MTnonlettersdonotobeymathxx{%
+ \AtBeginDocument{\MTnonlettersdonotobeymathxx}%
+ }%
+ \AtBeginDocument{%
+ \renewcommand*\MTnonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{%
+ \the\mst@do@nonletters
+ \ifx\mst@the\the
+ \else
+ \mst@redefine@resetMathstrut@
+ \fi
+ \let\mst@the\the
+ }%
+ }%
+ \renewcommand*\MTnonlettersdonotobeymathxx{%
+ \the\mst@undo@nonletters
+ \ifx\mst@the\@gobble
+ \else
+ \mst@restore@resetMathstrut@
+ \fi
+ \let\mst@the\@gobble
+ }%
+ }%
+\fi
+\newtoks\mst@do@easynonletters
+\ifmst@everymath
+ \newcommand*\MTeasynonlettersdonotobeymathxx{\let\mst@theeasy\@gobble}%
+ \newcommand*\MTeasynonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{\let\mst@theeasy\the}%
+ }%
+ \MTeasynonlettersobeymathxx
+\else
+ \newtoks\mst@undo@easynonletters
+ \newcommand*\MTeasynonlettersdonotobeymathxx{\the\mst@undo@easynonletters}
+ \newcommand*\MTeasynonlettersobeymathxx{%
+ \mst@OnlyIfNotSubdued{\the\mst@do@easynonletters}%
+ }%
+ \AtEndOfPackage{\MTeasynonlettersobeymathxx}%
+\fi
+\ifmst@everymath
+ \def\mst@addtodo@easynonletters#1#2{%
+ \mst@do@easynonletters\expandafter{%
+ \the\mst@do@easynonletters
+ \mst@OnlyIfNotMathActive{#1}{\mathcode`#1=#2}%
+ }%
+ }%
+ \def\mst@addtodo@easynonletters@U#1#2{%
+ \mst@do@easynonletters\expandafter{%
+ \the\mst@do@easynonletters
+ \mst@OnlyIfNotMathActive{#1}{\mst@Umathcodenum`#1=#2}%
+ }%
+ }%
+\else
+ \def\mst@addtodo@easynonletters#1#2{%
+ \mst@do@easynonletters\expandafter
+ {\the\mst@do@easynonletters
+ \mst@OnlyIfNotMathActive{#1}{\mathcode`#1=#2}}%
+ \def\mst@tmp##1\relax{%
+ \def\mst@tmp{\mst@OnlyIfNotMathActive{#1}{\mathcode`#1=##1\relax}}%
+ }%
+ \expandafter\mst@tmp\the\mathcode`#1\relax
+ \mst@undo@easynonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@easynonletters}%
+ }%
+ \def\mst@addtodo@easynonletters@U#1#2{%
+ \mst@do@easynonletters\expandafter{%
+ \the\mst@do@easynonletters
+ \mst@OnlyIfNotMathActive{#1}{\mst@Umathcodenum`#1=#2}%
+ }%
+ \def\mst@tmp##1\relax{%
+ \def\mst@tmp{\mst@OnlyIfNotMathActive{#1}{\mst@Umathcodenum`#1=##1\relax}}%
+ }%
+ \expandafter\mst@tmp\the\mst@Umathcodenum`#1\relax
+ \mst@undo@easynonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@easynonletters}%
+ }%
+\fi
\ifmst@basic
\else
\ifmst@XeOrLua
@@ -481,7 +613,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
}%
\let\mst@originalnewmcodes@\newmcodes@
\fi
- }% end of AtBeginDocument
+ }%
\else
\AtBeginDocument {%
\ifx\newmcodes@\@undefined\else
@@ -501,9 +633,9 @@ defaultbf,defaultit,defaultsf,defaulttt}}
}%
\let\mst@originalnewmcodes@\newmcodes@
\fi
- }% end of second AtBeginDocument
- \fi % mst@XeOrLua
-\fi % mst@basic
+ }%
+ \fi
+\fi
\newcommand*\MTresetnewmcodes{\ifx\mst@originalnewmcodes@\undefined\else
\let\newmcodes@\mst@originalnewmcodes@\fi}
\newcommand*\MTcustomizenewmcodes{\ifx\mst@originalnewmcodes@\undefined\else
@@ -515,35 +647,42 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\def\operator@font{\mathgroup\symmtoperatorfont}}
\MTmathoperatorsobeymathxx
\DeclareSymbolFont{mtletterfont}{\mst@enc}{\mst@fam}{\mst@ser}{\mst@ltsh}
-\begingroup
-\catcode`N 12
-\catcode`O 12
-\catcode`D 12
-\catcode`E 12
-\lowercase{\gdef\mst@fixmathfonts@ #1=NODE;#2#3\relax #4\@empty #5}%
- {\ifx#2\empty\else\font\mst@mathfont=#1=base;#2#3\relax#5=\mst@mathfont\fi}
-\lowercase{\gdef\MTfixmathfonts
-{\expandafter\mst@fixmathfonts@
- \fontname\textfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
- {\textfont\symmtoperatorfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\scriptfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
- {\scriptfont\symmtoperatorfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\scriptscriptfont\symmtoperatorfont\relax\relax=NODE;\empty\relax\@empty
- {\scriptscriptfont\symmtoperatorfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\textfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
- {\textfont\symmtletterfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\scriptfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
- {\scriptfont\symmtletterfont}%
- \expandafter\mst@fixmathfonts@
- \fontname\scriptscriptfont\symmtletterfont\relax\relax=NODE;\empty\relax\@empty
- {\scriptscriptfont\symmtletterfont}%
- }%
+\def\mst@fixmathfonts@#1.#2.#3.{%
+\def\mst@fixmathfonts@##1##2#1=##3;##4##5\relax##6\@empty##7{%
+ \ifx##3\empty\else
+ \if"##1%
+ \font\mst@mathfont=##1##2#1=base;##4##5\relax
+ \else
+ \mst@arrrrgh@fixmathfonts##1##2#1=base;##4##5#2\empty#3\relax
+ \fi
+ ##7=\mst@mathfont
+ \fi
}%
-\endgroup
+\def\mst@arrrrgh@fixmathfonts##1#2##2##3#3##4\relax{%
+ \ifx##2\empty
+ \font\mst@mathfont="##1"\relax
+ \else
+ \font\mst@mathfont="##1"#2##2##3#3\relax
+ \fi
+}%
+}%
+\expandafter\mst@fixmathfonts@\detokenize{mode. at.pt.}%
+\def\MTfixmathfonts#1{%
+\def\MTfixmathfonts{%
+ \expandafter\mst@fixmathfonts@\fontname\textfont\symmtoperatorfont
+ \relax\relax #1=;\empty\relax\@empty{\textfont\symmtoperatorfont}%
+ \expandafter\mst@fixmathfonts@\fontname\scriptfont\symmtoperatorfont
+ \relax\relax #1=;\empty\relax\@empty{\scriptfont\symmtoperatorfont}%
+ \expandafter\mst@fixmathfonts@\fontname\scriptscriptfont\symmtoperatorfont
+ \relax\relax #1=;\empty\relax\@empty{\scriptscriptfont\symmtoperatorfont}%
+ \expandafter\mst@fixmathfonts@\fontname\textfont\symmtletterfont
+ \relax\relax #1=;\empty\relax\@empty{\textfont\symmtletterfont}%
+ \expandafter\mst@fixmathfonts@\fontname\scriptfont\symmtletterfont
+ \relax\relax #1=;\empty\relax\@empty{\scriptfont\symmtletterfont}%
+ \expandafter\mst@fixmathfonts@\fontname\scriptscriptfont\symmtletterfont
+ \relax\relax #1=;\empty\relax\@empty{\scriptscriptfont\symmtletterfont}%
+}}%
+\expandafter\MTfixmathfonts\expandafter{\detokenize{mode}}%
\ifmst@LuaTeX
\everymath\expandafter{\the\everymath\mst@fixmathfonts}%
\everydisplay\expandafter{\the\everydisplay\mst@fixmathfonts}%
@@ -567,7 +706,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\mst@original@it\mathit
\let\mst@original@sf\mathsf
\let\mst@original@tt\mathtt
-\def\mst@restorealphabets{% for subdued
+\def\mst@restorealphabets{%
\let\mathnormal\mst@original@normal
\let\mathrm\mst@original@rm
\let\mathbf\mst@original@bf
@@ -614,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
@@ -638,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
@@ -653,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}
@@ -666,26 +802,31 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\ifmst@selfGreek
\DeclareSymbolFont{mtselfGreekfont}{OT1}{\mst@fam}{\mst@ser}{\mst@greek@ush}
\fi\fi
-\ifmst@needeuler\mst@infoline{will use Euler font; command \string\MTEulerScale}
-\DeclareSymbolFont{mteulervm}{U}{zeur}{m}{n}
-\DeclareSymbolFontAlphabet{\MathEuler}{mteulervm}
-\DeclareMathAlphabet{\MathEulerBold}{U}{zeur}{\mst@bold}{n}
+\ifmst@needeuler
+\mst@infoline{will use Euler font; command \string\MTEulerScale}
+ \DeclareSymbolFont{mteulervm}{U}{zeur}{m}{n}
+ \DeclareSymbolFontAlphabet{\MathEuler}{mteulervm}
+ \DeclareMathAlphabet{\MathEulerBold}{U}{zeur}{\mst@bold}{n}
\fi
\newcommand*\MTEulerScale[1]{\edef\zeu@Scale{#1}}
\let\MathastextEulerScale\MTEulerScale
-\ifmst@needsymbol\mst@infoline{will use Symbol font; command \string\MTSymbolScale}
- \def\psy@scale{1}
- \DeclareSymbolFont{mtpsymbol}{U}{psy}{m}{n}
- \DeclareSymbolFontAlphabet{\MathPSymbol}{mtpsymbol}
-\AtBeginDocument{%
- \DeclareFontFamily{U}{psy}{}%
- \DeclareFontShape{U}{psy}{m}{n}{<->s*[\psy@scale] psyr}{}%
-}
+\ifmst@needsymbol
+ \mst@infoline{will use Symbol font; command \string\MTSymbolScale}
+ \def\psy@scale{1}
+ \DeclareSymbolFont{mtpsymbol}{U}{psy}{m}{n}
+ \DeclareSymbolFontAlphabet{\MathPSymbol}{mtpsymbol}
+ \AtBeginDocument{%
+ \DeclareFontFamily{U}{psy}{}%
+ \DeclareFontShape{U}{psy}{m}{n}{<->s*[\psy@scale] psyr}{}%
+ }
\fi
\newcommand*\MTSymbolScale[1]{\edef\psy@scale{#1}}
\let\MathastextSymbolScale\MTSymbolScale
-\DeclareRobustCommand*\pmvec[1]{\mathord{\stackrel{\raisebox{-.5ex}%
-{\tiny\boldmath$\mathord{\rightarrow}$}}{{}#1}}}
+\protected\def\pmvec#1{%
+ \mathord{\stackrel{\raisebox{-.5ex}{\tiny\boldmath$\mathord{\rightarrow}$}}%
+ {{}#1}%
+ }%
+}
\ifmst@fouriervec
\DeclareFontEncoding{FML}{}{}
\DeclareFontSubstitution{FML}{futm}{m}{it}
@@ -715,40 +856,170 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\MathastextupGreek\MTupGreek
\newcommand*\MTgreekfont[1]{\def\mst@greekfont{#1}}
\let\Mathastextgreekfont\MTgreekfont
-\def\mst@DeclareMathLetter #1{%
+\ifmst@noletters
+ \let\MTmathactiveletters\@empty
+ \let\MTmathactiveLetters\@empty
+ \let\MTmathstandardletters\@empty
+\else
+\def\mst@DeclareMathLetter#1#2#3#4#5{%
\DeclareMathSymbol {#1}{\mathalpha}{mtletterfont}{`#1}%
- \expandafter
- \DeclareMathSymbol \csname mst@#1\endcsname{\mathalpha}{mtletterfont}{`#1}%
- \expandafter\mst@addtodo@az\expandafter #1\csname mst@#1\endcsname
+ \DeclareMathSymbol {#4}{\mathalpha}{mtletterfont}{`#1}%
+ \def#2{{#3#4#5\mst@itcorr}}%
+}%
+\@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do{%
+ \expandafter\expandafter\expandafter\mst@DeclareMathLetter
+ \expandafter\mst@tmp
+ \csname MTcommandletter\mst@tmp\expandafter\endcsname
+ \csname mst@before@\mst@tmp\expandafter\endcsname
+ \csname MTmathcharletter\mst@tmp\expandafter\endcsname
+ \csname mst@after@\mst@tmp\endcsname
}%
-\@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do
- {\expandafter\mst@DeclareMathLetter\mst@tmp}%
\ifmst@frenchmath \def\mst@font@tbu{mtoperatorfont}%
\else \def\mst@font@tbu{mtletterfont}%
\fi
-\def\mst@DeclareMathLetter #1{%
+\def\mst@DeclareMathLetter #1#2#3#4#5{%
\DeclareMathSymbol {#1}{\mathalpha}{\mst@font@tbu}{`#1}%
- \expandafter
- \DeclareMathSymbol \csname mst@#1\endcsname{\mathalpha}{\mst@font@tbu}{`#1}%
- \expandafter\mst@addtodo@AZ\expandafter #1\csname mst@#1\endcsname
+ \DeclareMathSymbol {#4}{\mathalpha}{\mst@font@tbu}{`#1}%
+ \def#2{{#3#4#5\mst@ITcorr}}%
+}%
+\@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\expandafter\expandafter\mst@DeclareMathLetter
+ \expandafter\mst@tmp
+ \csname MTcommandletter\mst@tmp\expandafter\endcsname
+ \csname mst@before@\mst@tmp\expandafter\endcsname
+ \csname MTmathcharletter\mst@tmp\expandafter\endcsname
+ \csname mst@after@\mst@tmp\endcsname
+}%
+\def\mst@mathactivate@lowercase{%
+ \@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do{%
+ \expandafter\expandafter\expandafter
+ \mst@mathactivate\expandafter\mst@tmp\csname MTcommandletter\mst@tmp\endcsname{}%
+ }%
+}%
+\def\mst@mathactivate@uppercase{%
+ \@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\expandafter\expandafter
+ \mst@mathactivate\expandafter\mst@tmp\csname MTcommandletter\mst@tmp\endcsname{}%
+ }%
+}%
+\def\mst@mathdeactivate@lowercase{%
+ \@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp=\csname MTmathcharletter\mst@tmp\endcsname
+ }%
+}%
+\def\mst@mathdeactivate@uppercase{%
+ \@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp=\csname MTmathcharletter\mst@tmp\endcsname
+ }%
}%
-\@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do
- {\expandafter\mst@DeclareMathLetter\mst@tmp}%
-\let\mst@DeclareMathLetter\relax
+\ifmst@everymath
+\else
+ \def\mst@mathdeactivate@lowercase{%
+ \@tfor\mst@tmp:=abcdefghijklmnopqrstuvwxyz\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp=
+ \csname MTmathcharletter\mst@tmp\endcsname
+ }%
+ }%
+ \def\mst@mathdeactivate@uppercase{%
+ \@tfor\mst@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp=
+ \csname MTmathcharletter\mst@tmp\endcsname
+ }%
+ }%
+\fi
+\def\mst@mathactivateletters{%
+ \mst@mathactivate@lowercase
+ \mst@mathactivate@uppercase
+}%
+\newcommand*\MTmathactiveletters{%
+ \mst@OnlyIfNotSubdued
+ \mst@mathactivateletters
+}%
+\AtEndOfPackage{\MTmathactiveletters}%
+\def\mst@mathactivateLetters{\mst@activate@uppercase}%
+\newcommand*\MTmathactiveLetters{%
+ \mst@OnlyIfNotSubdued
+ \mst@mathactivateLetters
+}%
+\newcommand*\MTmathstandardletters{%
+ \mst@mathdeactivate@lowercase
+ \mst@mathdeactivate@uppercase
+}%
+\fi
+\newcommand*\MTicinmath{%
+ \MTmathactiveletters
+ \def\mst@itcorr{\ifnum\fam=\m@ne\/\fi}%
+ \let\mst@ITcorr\mst@itcorr
+}
+\newcommand*\MTICinmath{%
+ \MTmathactiveLetters
+ \def\mst@ITcorr{\ifnum\fam=\m@ne\/\fi}%
+}
+\newcommand*\MTnoicinmath{\let\mst@itcorr\@empty\let\mst@ITcorr\@empty}
+\newcommand*\MTnoICinmath{\let\mst@ITcorr\@empty}
+\newcommand*\MTicalsoinmathxx{%
+ \ifx\mst@itcorr\@empty\else\def\mst@itcorr{\/}\fi
+ \ifx\mst@ITcorr\@empty\else\def\mst@ITcorr{\/}\fi
+}
+\newcommand*\MTsetmathskips[3]{%
+ \@namedef{mst@before@#1}{\ifnum\fam=\m@ne\mskip#2\relax\fi}%
+ \@namedef{mst@after@#1}{\ifnum\fam=\m@ne\mskip#3\relax\fi}%
+}
+\newcommand*\MTunsetmathskips[1]{%
+ \@namedef{mst@before@#1}{}%
+ \@namedef{mst@after@#1}{}%
+}
+\let\MTmathactivedigits\empty
+\let\MTmathstandarddigits\empty
\ifmst@nodigits\else
-\def\mst@font@tbu{mtoperatorfont}%
-\ifmst@symboldigits \def\mst@font@tbu{mtpsymbol} \fi
-\ifmst@eulerdigits \def\mst@font@tbu{mteulervm} \fi
-\DeclareMathSymbol{0}{\mathalpha}{\mst@font@tbu}{`0}%
-\DeclareMathSymbol{1}{\mathalpha}{\mst@font@tbu}{`1}%
-\DeclareMathSymbol{2}{\mathalpha}{\mst@font@tbu}{`2}%
-\DeclareMathSymbol{3}{\mathalpha}{\mst@font@tbu}{`3}%
-\DeclareMathSymbol{4}{\mathalpha}{\mst@font@tbu}{`4}%
-\DeclareMathSymbol{5}{\mathalpha}{\mst@font@tbu}{`5}%
-\DeclareMathSymbol{6}{\mathalpha}{\mst@font@tbu}{`6}%
-\DeclareMathSymbol{7}{\mathalpha}{\mst@font@tbu}{`7}%
-\DeclareMathSymbol{8}{\mathalpha}{\mst@font@tbu}{`8}%
-\DeclareMathSymbol{9}{\mathalpha}{\mst@font@tbu}{`9}%
+ \def\mst@font@tbu{mtoperatorfont}%
+ \ifmst@symboldigits \def\mst@font@tbu{mtpsymbol}\fi
+ \ifmst@eulerdigits \def\mst@font@tbu{mteulervm}\fi
+ \DeclareMathSymbol{0}{\mathalpha}{\mst@font@tbu}{`0}%
+ \DeclareMathSymbol{1}{\mathalpha}{\mst@font@tbu}{`1}%
+ \DeclareMathSymbol{2}{\mathalpha}{\mst@font@tbu}{`2}%
+ \DeclareMathSymbol{3}{\mathalpha}{\mst@font@tbu}{`3}%
+ \DeclareMathSymbol{4}{\mathalpha}{\mst@font@tbu}{`4}%
+ \DeclareMathSymbol{5}{\mathalpha}{\mst@font@tbu}{`5}%
+ \DeclareMathSymbol{6}{\mathalpha}{\mst@font@tbu}{`6}%
+ \DeclareMathSymbol{7}{\mathalpha}{\mst@font@tbu}{`7}%
+ \DeclareMathSymbol{8}{\mathalpha}{\mst@font@tbu}{`8}%
+ \DeclareMathSymbol{9}{\mathalpha}{\mst@font@tbu}{`9}%
+ \ifmst@activedigits
+ \def\mst@DeclareMathDigit #1#2#3{%
+ \DeclareMathSymbol{#3}{\mathalpha}{\mst@font@tbu}{`#1}%
+ \def#2{#3}%
+ }%
+ \@tfor\mst@tmp:=0123456789\do{%
+ \expandafter\expandafter\expandafter\mst@DeclareMathDigit
+ \expandafter\mst@tmp
+ \csname MTcommanddigit\romannumeral\mst@tmp\expandafter\endcsname
+ \csname MTmathchardigit\romannumeral\mst@tmp\endcsname
+ }%
+ \def\mst@mathactivatedigits{%
+ \@tfor\mst@tmp:=0123456789\do{%
+ \expandafter\expandafter\expandafter\mst@mathactivate
+ \expandafter\mst@tmp\csname MTcommanddigit\romannumeral\mst@tmp\endcsname{}%
+ }%
+ }%
+ \def\MTmathactivedigits{\mst@OnlyIfNotSubdued\mst@mathactivatedigits}%
+ \MTmathactivedigits
+ \ifmst@everymath
+ \def\MTmathstandarddigits{%
+ \@tfor\mst@tmp:=0123456789\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp
+ =\csname MTmathchardigit\romannumeral\mst@tmp\endcsname
+ }%
+ }%
+ \else
+ \def\MTmathstandarddigits{%
+ \@tfor\mst@tmp:=0123456789\do{%
+ \expandafter\mathcode\expandafter`\mst@tmp
+ =\csname MTmathchardigit\romannumeral\mst@tmp\endcsname
+ }%
+ }%
+ \fi
+ \fi
\fi
\ifmst@symboldelimiters
\def\mst@font@tbu{mtpsymbol}%
@@ -765,52 +1036,66 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathSymbol{\mst@varfam@question}{\mathalpha}{\mst@font@tbu}{"3F}%
\expandafter\mst@addtodo@nonletters\string?\mathclose\mst@varfam@question
\fi
-\def\mst@@doasterisk{\let\ast\mst@ast\mst@mathactivate*{}\mst@ast}%
-\newcommand*\MTnormalasterisk {\let\mst@doasterisk\relax}
-\newcommand*\MTactiveasterisk {\let\mst@doasterisk\mst@@doasterisk}
+\let\MTnormalasterisk\empty
+\let\MTactiveasterisk\empty
\ifmst@asterisk\mst@infoline{asterisk: \string\ast\space and *}
- \AtBeginDocument{%
- \everymath\expandafter
- {\the\everymath \mst@doasterisk \MTnormalasterisk }%
- \everydisplay\expandafter
- {\the\everydisplay\mst@doasterisk \MTnormalasterisk }}
\ifmst@symbolmisc
- \def\mst@bin@ast{%
- \mathbin{\mathchoice{\raisebox{-.1\height}%
- {\the\textfont\symmtpsymbol\char42}}%
- {\raisebox{-.1\height}%
- {\the\textfont\symmtpsymbol\char42}}%
- {\raisebox{-.1\height}%
- {\the\scriptfont\symmtpsymbol\char42}}%
- {\raisebox{-.1\height}%
- {\the\scriptscriptfont\symmtpsymbol\char42}}}}%
+ \protected\def\mst@bin@ast{\mathbin{\mathchoice
+ {\raisebox{-.1\height}{\the\textfont\symmtpsymbol\char42}}%
+ {\raisebox{-.1\height}{\the\textfont\symmtpsymbol\char42}}%
+ {\raisebox{-.1\height}{\the\scriptfont\symmtpsymbol\char42}}%
+ {\raisebox{-.1\height}{\the\scriptscriptfont\symmtpsymbol\char42}}}%
+ }%
\else
- \def\mst@bin@ast{%
- \mathbin{\mathchoice{\raisebox{-\mst@lowerast}%
- {\the\textfont\symmtoperatorfont\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\textfont\symmtoperatorfont\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\scriptfont\symmtoperatorfont\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\scriptscriptfont\symmtoperatorfont\char42}}}}%
+ \protected\def\mst@bin@ast{\mathbin{\mathchoice
+ {\raisebox{-\mst@lowerast}{\the\textfont\symmtoperatorfont\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\textfont\symmtoperatorfont\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\scriptfont\symmtoperatorfont\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\scriptscriptfont\symmtoperatorfont\char42}}}%
+ }%
\fi
- \def\mst@varfam@ast{\ifnum\fam=\m@ne\mst@bin@ast\else
- \mathbin{\mathchoice{\raisebox{-\mst@lowerast}%
- {\the\textfont\fam\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\textfont\fam\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\scriptfont\fam\char42}}%
- {\raisebox{-\mst@lowerast}%
- {\the\scriptscriptfont\fam\char42}}}\fi}%
- \MTactiveasterisk
- \DeclareRobustCommand*{\mst@ast}{\mst@bin@ast}
+ \protected\def\mst@varfam@ast{\ifnum\fam=\m@ne
+ \mst@bin@ast
+ \else
+ \mathbin{\mathchoice
+ {\raisebox{-\mst@lowerast}{\the\textfont\fam\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\textfont\fam\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\scriptfont\fam\char42}}%
+ {\raisebox{-\mst@lowerast}{\the\scriptscriptfont\fam\char42}}}%
+ \fi}%
+ \let\mst@ast\mst@bin@ast
\newcommand*\MTlowerast[1]{\def\mst@lowerast{#1}}
\MTlowerast{.3\height}
- \mst@do@easynonletters\expandafter\expandafter\expandafter
- {\expandafter\the\expandafter\mst@do@easynonletters
- \expandafter\def\csname mst@ast \endcsname{\mst@varfam@ast}}
+ \mst@do@easynonletters\expandafter{%
+ \the\mst@do@easynonletters\let\mst@ast\mst@varfam@ast
+ }%
+ \ifmst@everymath
+ \def\mst@@doasterisk {\let\ast\mst@ast\mst@mathactivate*{}\mst@ast}%
+ \def\MTnormalasterisk {\let\mst@doasterisk\relax}
+ \def\MTactiveasterisk {\let\mst@doasterisk\mst@@doasterisk}
+ \MTactiveasterisk
+ \AtBeginDocument{%
+ \everymath\expandafter
+ {\the\everymath \mst@doasterisk \MTnormalasterisk }%
+ \everydisplay\expandafter
+ {\the\everydisplay\mst@doasterisk \MTnormalasterisk }%
+ }%
+ \else
+ \def\MTnormalasterisk{\AtBeginDocument{\MTnormalasterisk}}
+ \def\MTactiveasterisk{\AtBeginDocument{\MTactiveasterisk}}
+ \mst@undo@easynonletters\expandafter{%
+ \the\mst@do@easynonletters\let\mst@ast\mst@bin@ast
+ }%
+ \AtBeginDocument{%
+ \let\mst@orig@abd@ast\ast
+ \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
+ }%
+ \MTactiveasterisk
+ }
+ \fi
\fi
\ifmst@nopunct\else\mst@infoline{punctuation\string: \string, \string. \string:
\string; and \string\colon}
@@ -831,7 +1116,13 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\mathcomma\mst@varfam@comma
\let\sm@rtcomma\mst@sm@rtcomma
}
- \else % end of decimalcomma branch
+ \ifmst@everymath
+ \else
+ \edef\mst@tmp{\mathchardef\mathcomma=\the\mathcode`\,\relax}%
+ \mst@undo@nonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@nonletters}%
+ \fi
+ \else
\ifmst@ncccomma
\mst@infoline{loading package ncccomma for `smart comma\string'}
\RequirePackage{ncccomma}%
@@ -851,26 +1142,38 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\mathcomma\mst@varfam@comma
\let\NCC@comma\mst@NCC@comma
}
- \else % neither ncccomma nor decimalcomma
+ \ifmst@everymath
+ \else
+ \edef\mst@tmp{\mathchardef\mathcomma=\the\mathcomma\relax}%
+ \mst@undo@nonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@nonletters}%
+ \fi
+ \else
\expandafter\mst@addtodo@nonletters\string,\mathpunct\mst@varfam@comma
\fi\fi
\DeclareMathSymbol{.}{\mathord}{\mst@font@tbu}{"2E}
\DeclareMathSymbol{\mst@varfam@dot}{\mathalpha}{\mst@font@tbu}{"2E}
\mst@addtodo@easynonletters\.\mst@varfam@dot
- \DeclareMathSymbol{:}{\mathrel}{\mst@font@tbu}{"3A} % relation spacing
+ \DeclareMathSymbol{:}{\mathrel}{\mst@font@tbu}{"3A}
\DeclareMathSymbol{\mst@varfam@colon}{\mathalpha}{\mst@font@tbu}{"3A}
\expandafter\mst@addtodo@nonletters\string:\mathrel\mst@varfam@colon
\@ifpackageloaded{amsmath}
- {} % \colon defined in amsmath.sty in terms of : with some enlarged explicit
- % spacing. No need to intervene.
- {% no amsmath, use standard punctuation spacing
+ {}
+ {%
\let\colon\undefined
- % the reason is if some package has redefined \colon which then
- % can not be used in \cs{DeclareMathSymbol} anymore (we
- % shamelessly overwrite...)
\DeclareMathSymbol{\colon}{\mathpunct}{\mst@font@tbu}{"3A}
- \mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \protected\def\colon{\mathpunct{\mst@varfam@colon}}}%
+ \let\mst@colon\colon
+ \mst@do@nonletters\expandafter{%
+ \the\mst@do@nonletters
+ \protected\def\colon{\mathpunct{\mst@varfam@colon}}%
+ }%
+ \ifmst@everymath
+ \else
+ \mst@undo@nonletters\expandafter{%
+ \the\mst@undo@nonletters
+ \let\colon\mst@colon
+ }%
+ \fi
}
\DeclareMathSymbol{\mst@varfam@pointvirgule}{\mathalpha}{\mst@font@tbu}{"3B}
\ifmst@binarysemicolon
@@ -880,8 +1183,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\else
\DeclareMathSymbol{;}{\mathpunct}{\mst@font@tbu}{"3B}
\expandafter\mst@addtodo@nonletters\string;\mathpunct\mst@varfam@pointvirgule
- \fi % binarysemicolno
-\fi % end \ifmst@nopunct else branch
+ \fi
+\fi
\ifmst@nominus
\else
\ifmst@XeOrLua
@@ -890,93 +1193,143 @@ 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}}}
- \ifmst@robust@obsessed@LaTeX@era\expandafter\DeclareRobustCommand
- \else\expandafter\def\fi
- \rightarrowfill{$\m@th\mathord{\relbar}\mkern-7mu%
+ \DeclareRobustCommand\rightarrowfill{$\m@th\mathord{\relbar}\mkern-7mu%
\cleaders\hbox{$\mkern-2mu\relbar\mkern-2mu$}\hfill
\mkern-7mu\mathord\rightarrow$}
- \ifmst@robust@obsessed@LaTeX@era\expandafter\DeclareRobustCommand
- \else\expandafter\def\fi
- \leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%
+ \DeclareRobustCommand\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%
\cleaders\hbox{$\mkern-2mu\relbar\mkern-2mu$}\hfill
\mkern-7mu\mathord{\relbar}$}
\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}
- \fi}% mst@dothe@endashstuff
-\def\mst@dothe@emdashstuff#1#2#3{%
+ \@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#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}
- \fi}% mst@dothe@emdashstuff
+ \@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}% self-delimiting
+ \@ifundefined{mst@minus@mv\mst@tmp@enc}
+ {\mst@subduedminus}
+ {\mathcode`\-=\mst@minus}%
\fi
- }% \mst@nonsubduedminus
+ }%
+ \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}% self-delimiting
- }% non Umathchardef \mst@minus@mv<mathversion> macros
+ \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 % Unicode engine and font
+ \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{\ }}\mst@h}%
+ \@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
-}% end of \mst@dothe@hbarstuff
+}%
\ifmst@noplus\else\mst@infoline{\string+ and \string=}
\DeclareMathSymbol{+}{\mathbin}{\mst@font@tbu}{"2B}
\DeclareMathSymbol{\mst@varfam@plus}{\mathalpha}{\mst@font@tbu}{"2B}
@@ -988,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}
@@ -1001,7 +1352,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
}
\expandafter\mst@addtodo@nonletters\string=\mathrel\mst@varfam@equal
\fi
-\ifmst@noparen\else\mst@infoline{parentheses \string( \string) \string[ \string] and slash \string/}
+\ifmst@noparen\else
+\mst@infoline{parentheses \string( \string) \string[ \string] and slash \string/}
\ifmst@nosmalldelims
\DeclareMathSymbol{(}{\mathopen}{\mst@font@tbu}{"28}
\DeclareMathSymbol{)}{\mathclose}{\mst@font@tbu}{"29}
@@ -1032,11 +1384,13 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\ifmst@nosmalldelims
\DeclareMathDelimiter{\mst@varfam@backslash}
{\mathalpha}{symbols}{"6E}{largesymbols}{"0F}
+ \let\mst@mathord@backslash\backslash
\else
\DeclareMathDelimiter{<}{\mathopen}{\mst@font@tbu}{"3C}{largesymbols}{"0A}
\DeclareMathDelimiter{>}{\mathclose}{\mst@font@tbu}{"3E}{largesymbols}{"0B}
- \DeclareMathDelimiter{\backslash}
+ \DeclareMathDelimiter{\mst@mathord@backslash}
{\mathord}{mtoperatorfont}{"5C}{largesymbols}{"0F}
+ \let\backslash\mst@mathord@backslash
\DeclareMathDelimiter{\mst@varfam@backslash}
{\mathalpha}{mtoperatorfont}{"5C}{largesymbols}{"0F}
\fi
@@ -1048,10 +1402,25 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\expandafter\mst@addtodo@nonletters\string>\mathrel\mst@varfam@more
\mst@do@easynonletters\expandafter{\the\mst@do@easynonletters
\let\backslash\mst@varfam@backslash}
+\ifmst@everymath
+\else
+ \mst@undo@easynonletters\expandafter{\the\mst@undo@easynonletters
+ \let\backslash\mst@mathord@backslash}
+\fi
\DeclareMathSymbol{\setminus}{\mathbin}{mtoperatorfont}{"5C}
+\let\mst@setminus\setminus
\DeclareMathSymbol{\mst@varfam@setminus}{\mathalpha}{mtoperatorfont}{"5C}
-\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \protected\def\setminus{\mathbin{\mst@varfam@setminus}}}
+\mst@do@nonletters\expandafter{%
+ \the\mst@do@nonletters
+ \protected\def\setminus{\mathbin{\mst@varfam@setminus}}%
+}
+\ifmst@everymath
+\else
+ \mst@undo@nonletters\expandafter{%
+ \the\mst@undo@nonletters
+ \let\setminus\mst@setminus
+ }
+\fi
\ifmst@XeOrLua
\mst@Umathcharnumdef\mst@vert@bar=\mst@Umathcodenum`\|\relax
\else
@@ -1066,10 +1435,20 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\protected\def\vert{|}
\DeclareMathSymbol{\mst@varfam@vbar}{\mathalpha}{\mst@font@tbu}{124}
\mst@addtodo@easynonletters\|\mst@varfam@vbar
-\let\mid\undefined % 1.3: to avoid problems with some packages
+\let\mid\undefined
\DeclareMathSymbol{\mid}{\mathrel}{\mst@font@tbu}{124}
-\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \protected\def\mid{\mathrel\mst@varfam@vbar}}
+\let\mst@mid\mid
+\mst@do@nonletters\expandafter{%
+ \the\mst@do@nonletters
+ \protected\def\mid{\mathrel\mst@varfam@vbar}%
+}
+\ifmst@everymath
+\else
+ \mst@undo@nonletters\expandafter{%
+ \the\mst@undo@nonletters
+ \let\mid\mst@mid
+ }
+\fi
\ifmst@nosmalldelims
\else
\let\lbrace\undefined \let\rbrace\undefined
@@ -1080,86 +1459,105 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
\DeclareMathSymbol{\mst@varfam@lbrace}{\mathalpha}{\mst@font@tbu}{123}
\DeclareMathSymbol{\mst@varfam@rbrace}{\mathalpha}{\mst@font@tbu}{125}
-\DeclareRobustCommand*{\mst@lbrace}
- {\ifmmode\mathopen\mst@varfam@lbrace\else\textbraceleft\fi}
-\DeclareRobustCommand*{\mst@rbrace}
- {\ifmmode\mathclose\mst@varfam@rbrace\else\textbraceright\fi}
-\mst@do@nonletters\expandafter{\the\mst@do@nonletters
- \mst@dobraces{\expandafter\let\csname\string{ \expandafter\endcsname
- \csname mst@lbrace \endcsname
- \expandafter\let\csname\string} \expandafter\endcsname
- \csname mst@rbrace \endcsname}}
-\fi % end of \ifmst@alldelims
+\protected\def\mst@lbrace{\ifmmode\mathopen\mst@varfam@lbrace\else\textbraceleft\fi}
+\protected\def\mst@rbrace{\ifmmode\mathclose\mst@varfam@rbrace\else\textbraceright\fi}
+\mst@do@nonletters\expandafter{%
+ \the\mst@do@nonletters
+ \mst@dobraces{\let\{\mst@lbrace\let\}\mst@rbrace}%
+}
+\fi
\newcommand*{\MTexplicitbracesobeymathxx}{\let\mst@dobraces\@firstofone}
\newcommand*{\MTexplicitbracesdonotobeymathxx}{\let\mst@dobraces\@gobble}
+\ifmst@everymath
+\else
+ \renewcommand*\MTexplicitbracesobeymathxx{%
+ \let\mst@dobraces\@firstofone
+ \MTnonlettersobeymathxx
+ }%
+ \renewcommand*\MTexplicitbracesdonotobeymathxx{%
+ \let\mst@dobraces\@gobble
+ \protected\def\{{\ifmmode \lbrace \else \textbraceleft \fi}%
+ \protected\def\}{\ifmmode \rbrace \else \textbraceright \fi}%
+ }%
+ \mst@undo@nonletters\expandafter{\the\mst@undo@nonletters
+ \protected\def\{{\ifmmode \lbrace \else \textbraceleft \fi}%
+ \protected\def\}{\ifmmode \rbrace \else \textbraceright \fi}%
+ }%
+\fi
\MTexplicitbracesdonotobeymathxx
\ifmst@nospecials
\else
- \mst@infoline{\string\#\space\string\mathdollar\space
- \string\%\space\string\&\space}
+ \mst@infoline{\string\#\space\string\mathdollar\space
+ \string\%\space\string\&\space}
\ifmst@XeOrLua
- \mst@Umathcode`\#=0 \symmtoperatorfont "23 \relax
- \mst@Umathchardef\mathdollar=0 \symmtoperatorfont "24 \relax
- \mst@Umathcode`\%=0 \symmtoperatorfont "25 \relax
- \mst@Umathcode`\&=0 \symmtoperatorfont "26 \relax
- \mst@do@easynonletters\expandafter{%
- \the\mst@do@easynonletters
- \mst@Umathcode`\#=7 \symmtoperatorfont "23 \relax
- \mst@Umathchardef\mathdollar=7 \symmtoperatorfont "24 \relax
- \mst@Umathcode`\%=7 \symmtoperatorfont "25 \relax
- \mst@Umathcode`\&=7 \symmtoperatorfont "26 \relax
- }
+ \mst@Umathcode`\#=0 \symmtoperatorfont "23 \relax
+ \mst@Umathchardef\mathdollar=0 \symmtoperatorfont "24 \relax
+ \mst@Umathcode`\%=0 \symmtoperatorfont "25 \relax
+ \mst@Umathcode`\&=0 \symmtoperatorfont "26 \relax
+ \mst@Umathchardef\mst@varfam@mathhash = 7 \symmtoperatorfont "23 \relax
+ \mst@Umathchardef\mst@varfam@mathdollar = 7 \symmtoperatorfont "24 \relax
+ \mst@Umathchardef\mst@varfam@mathpercent = 7 \symmtoperatorfont "25 \relax
+ \mst@Umathchardef\mst@varfam@mathampersand = 7 \symmtoperatorfont "26 \relax
+ \mst@addtodo@easynonletters@U\#\mst@varfam@mathhash
+ \mst@addtodo@easynonletters@U\%\mst@varfam@mathpercent
+ \mst@addtodo@easynonletters@U\&\mst@varfam@mathampersand
\else
- \count@=\symmtoperatorfont
- \multiply\count@ by \@cclvi
- \advance\count@ by 35
- \mathcode`\#\count@
- \advance\count@ by \@ne
- \mathchardef\mathdollar\count@
- \advance\count@ by \@ne
- \mathcode`\%\count@
- \advance\count@ by \@ne
- \mathcode`\&\count@
- \count@=\symmtoperatorfont
- \multiply\count@ by \@cclvi
- \advance\count@ by 28707 % = "7023
- \mathchardef\mst@varfam@mathhash\count@
- \advance\count@ by \@ne
- \mathchardef\mst@varfam@mathdollar\count@
- \advance\count@ by \@ne
- \mathchardef\mst@varfam@mathpercent\count@
- \advance\count@ by \@ne
- \mathchardef\mst@varfam@mathampersand\count@
+ \count@=\symmtoperatorfont
+ \multiply\count@ by \@cclvi
+ \advance\count@ by 35
+ \mathcode`\#\count@
+ \advance\count@ by \@ne
+ \mathchardef\mathdollar\count@
+ \advance\count@ by \@ne
+ \mathcode`\%\count@
+ \advance\count@ by \@ne
+ \mathcode`\&\count@
+ \count@=\symmtoperatorfont
+ \multiply\count@ by \@cclvi
+ \advance\count@ by 28707 % = "7023
+ \mathchardef\mst@varfam@mathhash\count@
+ \advance\count@ by \@ne
+ \mathchardef\mst@varfam@mathdollar\count@
+ \advance\count@ by \@ne
+ \mathchardef\mst@varfam@mathpercent\count@
+ \advance\count@ by \@ne
+ \mathchardef\mst@varfam@mathampersand\count@
+ \mst@addtodo@easynonletters\#\mst@varfam@mathhash
+ \mst@addtodo@easynonletters\%\mst@varfam@mathpercent
+ \mst@addtodo@easynonletters\&\mst@varfam@mathampersand
+ \fi
\mst@do@easynonletters\expandafter{\the\mst@do@easynonletters
- \mathcode`\#=\mst@varfam@mathhash
- \let\mathdollar\mst@varfam@mathdollar
- \mathcode`\%=\mst@varfam@mathpercent
- \mathcode`\&=\mst@varfam@mathampersand}
+ \let\mathdollar\mst@varfam@mathdollar}%
+ \ifmst@everymath\else
+ \edef\mst@tmp{\ifmst@XeOrLua\mst@Umathcharnumdef\else\mathchardef\fi
+ \mathdollar=\the\mathdollar\relax}%
+ \mst@undo@easynonletters\expandafter\expandafter\expandafter
+ {\expandafter\mst@tmp\the\mst@undo@easynonletters}%
\fi
\fi
-\ifmst@symbolmisc\mst@infoline{symbolmisc: miscellaneous math symbols from Symbol font}
-\let\mst@prod\prod
+\ifmst@symbolmisc
+\mst@infoline{symbolmisc: miscellaneous math symbols from Symbol font}
\let\MToriginalprod\prod
\DeclareMathSymbol{\prodpsy}{\mathop}{mtpsymbol}{213}
-\protected\def\prod{\ifinner\prodpsy\else\mst@prod\fi}
-\let\mst@sum\sum
+\protected\def\prod{\ifinner\prodpsy\else\MToriginalprod\fi}
\let\MToriginalsum\sum
\DeclareMathSymbol{\sumpsy}{\mathop}{mtpsymbol}{229}
-\protected\def\sum{\ifinner\sumpsy\else\mst@sum\fi}
+\protected\def\sum{\ifinner\sumpsy\else\MToriginalsum\fi}
\DeclareMathSymbol{\mst@implies}{\mathrel}{mtpsymbol}{222}
-\DeclareRobustCommand*{\implies}{\;\mst@implies\;}
+\protected\def\implies{\;\mst@implies\;}
\DeclareMathSymbol{\mst@impliedby}{\mathrel}{mtpsymbol}{220}
-\DeclareRobustCommand*{\impliedby}{\;\mst@impliedby\;}
-\DeclareRobustCommand*{\iff}{\;\mst@impliedby\mathrel{\mkern-3mu}\mst@implies\;}
+\protected\def\impliedby{\;\mst@impliedby\;}
+\protected\def\iff{\;\mst@impliedby\mathrel{\mkern-3mu}\mst@implies\;}
\DeclareMathSymbol{\mst@iff}{\mathrel}{mtpsymbol}{219}
-\DeclareRobustCommand*{\shortiff}{\;\mst@iff\;}
-\DeclareMathSymbol{\mst@to}{\mathrel}{mtpsymbol}{174}
+\protected\def\shortiff{\;\mst@iff\;}
+\let\to\relax
+\DeclareMathSymbol{\to}{\mathrel}{mtpsymbol}{174}
\DeclareMathSymbol{\mst@trait}{\mathrel}{mtpsymbol}{190}
-\DeclareRobustCommand*\to{\mst@to}
-\DeclareRobustCommand*\longto{\mkern2mu\mst@trait\mathrel{\mkern-10mu}\mst@to}
-\DeclareRobustCommand*\mapsto{\mapstochar\mathrel{\mkern0.2mu}\mst@to}
-\DeclareRobustCommand*\longmapsto{%
-\mapstochar\mathrel{\mkern2mu}\mst@trait\mathrel{\mkern-10mu}\mst@to}
+\protected\def\longto{\mkern2mu\mst@trait\mathrel{\mkern-10mu}\to}
+\protected\def\mapsto{\mapstochar\mathrel{\mkern0.2mu}\to}
+\protected\def\longmapsto{%
+ \mapstochar\mathrel{\mkern2mu}\mst@trait\mathrel{\mkern-10mu}\to
+}
\DeclareMathSymbol{\aleph}{\mathord}{mtpsymbol}{192}
\DeclareMathSymbol{\inftypsy}{\mathord}{mtpsymbol}{165}
\DeclareMathSymbol{\emptyset}{\mathord}{mtpsymbol}{198}
@@ -1208,7 +1606,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathDelimiter{\langle}
{\mathopen}{mtpsymbol}{225}{largesymbols}{"0A}
\fi
-\ifmst@symbolre\mst@infoline{symbolre: \string\Re\space and \string\Im\space from Symbol font}
+\ifmst@symbolre
+\mst@infoline{symbolre: \string\Re\space and \string\Im\space from Symbol font}
\DeclareMathSymbol{\Re}{\mathord}{mtpsymbol}{"C2}
\DeclareMathSymbol{\Im}{\mathord}{mtpsymbol}{"C1}
\DeclareMathSymbol{\DotTriangle}{\mathord}{mtpsymbol}{92}
@@ -1249,11 +1648,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathSymbol{\mst@Tau}{\mst@mathord}{\mst@font@tbu}{"54}
\DeclareMathSymbol{\mst@Chi}{\mst@mathord}{\mst@font@tbu}{"58}
\ifx\mst@mathord\mathord
-%% attention le P de Symbol est un \Pi pas un \Rho
\DeclareMathSymbol{\mst@Rho}{\mathord}{mtpsymbol}{"52}
-%% attention le X de Symbol est un \Xi pas un \Chi
\DeclareMathSymbol{\mst@Chi}{\mathord}{mtpsymbol}{"43}
-%% attention le F de Symbol est un \Phi. Il n'y a pas de \Digamma
\DeclareMathSymbol{\mst@Gamma}{\mathord}{mtpsymbol}{"47}
\DeclareMathSymbol{\mst@Delta}{\mathord}{mtpsymbol}{"44}
\DeclareMathSymbol{\mst@Theta}{\mathord}{mtpsymbol}{"51}
@@ -1265,7 +1661,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathSymbol{\mst@Phi}{\mathord}{mtpsymbol}{"46}
\DeclareMathSymbol{\mst@Psi}{\mathord}{mtpsymbol}{"59}
\DeclareMathSymbol{\mst@Omega}{\mathord}{mtpsymbol}{"57}
- \else % de \mst@mathord=\mathord
+ \else
\DeclareMathSymbol\mst@Digamma {\mathalpha}{\mst@font@tbu}{"46}
\DeclareMathSymbol\mst@Gamma {\mathalpha}{\mst@font@tbu}{"00}
\DeclareMathSymbol\mst@Delta {\mathalpha}{\mst@font@tbu}{"01}
@@ -1278,8 +1674,8 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\DeclareMathSymbol\mst@Phi {\mathalpha}{\mst@font@tbu}{"08}
\DeclareMathSymbol\mst@Psi {\mathalpha}{\mst@font@tbu}{"09}
\DeclareMathSymbol\mst@Omega {\mathalpha}{\mst@font@tbu}{"0A}
- \fi % de \mst@mathord=\mathord
-\fi % fin de goahead
+ \fi
+\fi
\ifmst@goahead
\ifmst@eulergreek
\DeclareMathSymbol{\mst@alpha} {\mathalpha}{mteulervm}{"0B}
@@ -1582,7 +1978,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\mst@origdigamma\digamma
\let\mst@origpartial\partial
\let\mst@origwp\wp
- \let\mst@origell\ell }% \MTrecordstandardgreek
+ \let\mst@origell\ell }%
\MTrecordstandardgreek
\renewcommand*{\MTstandardgreek}{%
\let\Alpha\mst@origAlpha
@@ -1644,7 +2040,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\partial\mst@origpartial
\let\wp\mst@origwp
\let\ell\mst@origell
-}% \MTstandardgreek
+}%
\ifmst@greekplus
\def\mst@define@lowergreekletter#1#2{%
\protected\def#1{\ifcase\mst@mathalph
@@ -1724,7 +2120,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@define@lowergreekletter\omega\mst@omega
\mst@define@lowergreekletter\varsigma\mst@varsigma
\mst@define@lowergreekletter\digamma\mst@digamma
-}% end of True branch of \ifmst@greekplus
+}%
\else
\renewcommand*{\MTcustomgreek}{%
\expanded{%
@@ -1741,7 +2137,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\noexpand\Rho\mst@Rho
\let\noexpand\Tau\mst@Tau
\let\noexpand\Chi\mst@Chi
- }% end of first big \expanded
+ }%
\ifmst@symbolgreek\else
\expanded{\let\noexpand\Digamma\mst@Digamma}%
\fi
@@ -1757,7 +2153,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\noexpand\Phi\mst@Phi
\let\noexpand\Psi\mst@Psi
\let\noexpand\Omega\mst@Omega
- }% end of second big \expanded
+ }%
\ifmst@selfGreek\else
\expanded{%
\let\noexpand\alpha\mst@alpha
@@ -1785,7 +2181,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\noexpand\psi\mst@psi
\let\noexpand\omega\mst@omega
\let\noexpand\varsigma\mst@varsigma
- }% end of third big \expanded
+ }%
\ifmst@LGRgreek
\expanded{\let\noexpand\digamma\mst@digamma}%
\fi
@@ -1800,12 +2196,16 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\ifmst@symbolgreek\else\let\ell\mst@ell\fi
\fi
\fi
-}% \MTcustomgreek
-\fi% end of else branch of \ifmst@greekplus
-\fi% end of \ifmst@customgreek
+}%
+\fi
+\fi
\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
@@ -1815,19 +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
- % Unicode engine and font
\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}% \mst@dothe@inodotstuff
+ \@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}%
@@ -1845,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
@@ -1855,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
@@ -1865,67 +2292,57 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\let\add@unicode@accent\@firstoftwo
\if1\mst@OneifUniEnc
\ifmst@unimathaccents
- % \` -> \grave
- \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}%
- % \' -> \acute
- \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}%
- % \v -> \check
- \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}%
- % \u -> \breve
- \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}%
- % \= -> \bar
- \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}%
- % \. -> \dot
- \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}%
- % \" -> \ddot
- \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}%
- % \r -> \mathring
- \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}%
- % \^ -> \hat
- \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}%
- % \~ -> \tilde
- \expandafter\xdef\csname mst@tilde@mv#1\mst@robustifyingspace\endcsname
+ \expandafter\xdef\csname mst@tilde@mv#1 \endcsname
{\mst@Umathaccent
7
\number\symmtoperatorfont\space
\csname#2\string\~\endcsname{}\relax}%
- \else % false branch of ifmst@unimathaccents
+ \else
\AtEndOfPackage{\AtBeginDocument{%
\@tfor\@tempa:={grave}{acute}{check}{breve}{bar}%
{dot}{ddot}{mathring}{hat}{tilde}%
@@ -1938,7 +2355,6 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\csname mst@original@\@tempa\space\endcsname}%
}}%
\fi
- \ifmst@robust@obsessed@LaTeX@era
\@tfor\@tempa:={grave}{acute}{check}{breve}{bar}%
{dot}{ddot}{mathring}{hat}{tilde}%
\do
@@ -1946,52 +2362,52 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\noexpand\protect
\expandafter\noexpand\csname mst@\@tempa @mv#1 \endcsname}%
}%
- \fi
- \else % false branch of ifUniEnc
- % \` -> \grave
+ \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{}}
- % \' -> \acute
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@acute@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\'\endcsname{}}
- % \v -> \check
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@check@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\v\endcsname{}}
- % \u -> \breve
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@breve@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\u\endcsname{}}
- % \= -> \bar
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@bar@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\=\endcsname{}}
- % \. -> \dot
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@dot@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\.\endcsname{}}
- % \" -> \ddot
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@ddot@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\"\endcsname{}}
- % \r -> \mathring
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@mathring@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\r\endcsname{}}
- % \^ -> \hat
\expandafter\mst@DeclareMathAccent\expandafter
{\csname mst@hat@mv#1\endcsname}{\mathalpha}{mtoperatorfont}%
{\csname#2\string\^\endcsname{}}
- % \~ -> \tilde
\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
}%
-\fi % \ifmst@mathaccents
+\fi
\newcommand*\MTDeclareVersion[6][]{%
\edef\mst@declareversionargs{{#1}{#2}{#3}{#4}{#5}{#6}}%
\edef\mst@version{#2}%
@@ -2002,14 +2418,14 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\MTDoNotDeclareVersion@\expandafter\@gobblefour
\fi
\relax\DeclareMathVersion{\mst@version}\MTDeclareVersion@
-}% \MTDeclareVersion
+}%
\newcommand*\MTDoNotDeclareVersion@[1][]{%
\PackageWarningNoLine{mathastext}{You asked to declare a version with name
`\mst@version'.^^J%
\@spaces Sorry but you are not allowed to do that.^^J%
\@spaces \ifmst@subdued Anyway the `subdued' option is in force\else
Use rather \string\Mathastext\space macro (with no optional argument)\fi
-}}%\MTDoNotDeclareVersion@
+}}%
\newcommand*\MTDeclareVersion@[1][]{%
\edef\mst@tmp{#1}%
\ifx\mst@tmp\empty\else
@@ -2021,7 +2437,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
inherits from `#1\string'\@gobble}%
\fi
\expandafter\MTDeclareVersion@@\mst@declareversionargs
-}% \MTDeclareVersion@
+}%
\newcommand*\MTDeclareVersion@@[6]{%
\expandafter\edef\csname mst@encoding@\mst@version\endcsname{#3}%
\expandafter\edef\csname mst@family@\mst@version\endcsname{#4}%
@@ -2042,36 +2458,56 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\ifx\mst@tmp\empty
\ifmst@italic
\SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{\mst@ltsh}%
-\immediate\write\m@ne{}%
-\PackageInfo{mathastext}{Latin letters in math version `#2\string'\MessageBreak
+ \immediate\write\m@ne{}%
+ \PackageInfo{mathastext}%
+ {\ifmst@noletters
+ \else
+ Latin letters in math version `#2\string'\MessageBreak
declared\on@line\MessageBreak
will use the font #3/#4/#5/\mst@ltsh
\ifmst@frenchmath\space(uppercase: #6)\fi\MessageBreak
+ \fi
Other characters (digits, ...) and \protect\log-like names\MessageBreak
- will be in `#6\string' shape\@gobble}%
-\immediate\write\m@ne{}%
+ \ifmst@noletters
+ will use the font #3/#4/#5/#6%
+ \else
+ will be in `#6\string' shape%
+ \fi\@gobble}%
+ \immediate\write\m@ne{}%
\expandafter\edef\csname mst@ltshape@\mst@version\endcsname{\mst@ltsh}%
\else
\SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{#6}%
-\immediate\write\m@ne{}%
-\PackageInfo{mathastext}{Latin letters in math version `#2\string'\MessageBreak
+ \ifmst@noletters
+ \else
+ \immediate\write\m@ne{}%
+ \PackageInfo{mathastext}%
+ {Latin letters in math version `#2\string'\MessageBreak
declared\on@line\MessageBreak
will use the fonts #3/#4/#5(\mst@bold)/#6\@gobble}%
-\immediate\write\m@ne{}%
+ \fi
+ \immediate\write\m@ne{}%
\expandafter\edef\csname mst@ltshape@\mst@version\endcsname{#6}%
\fi
- \else % #1 not empty
+ \else
\SetSymbolFont{mtletterfont}{#2}{#3}{#4}{#5}{#1}%
-\immediate\write\m@ne{}%
-\PackageInfo{mathastext}{Latin letters in math version `#2\string'\MessageBreak
+ \immediate\write\m@ne{}%
+ \PackageInfo{mathastext}%
+ {\ifmst@noletters
+ \else
+ Latin letters in math version `#2\string'\MessageBreak
declared\on@line\MessageBreak
will use the font #3/#4/#5/#1%
\ifmst@frenchmath\space(uppercase: #6)\fi\MessageBreak
+ \fi
Other characters (digits, ...) and
\protect\log-like names\MessageBreak
- will be in `#6\string' shape\@gobble}%
-\immediate\write\m@ne{}%
- \expandafter\edef\csname mst@ltshape@\mst@version\endcsname{#1}%
+ \ifmst@noletters
+ will use the font #3/#4/#5/#6%
+ \else
+ will be in `#6\string' shape%
+ \fi\@gobble}%
+ \immediate\write\m@ne{}%
+ \expandafter\edef\csname mst@ltshape@\mst@version\endcsname{#1}%
\fi
\SetMathAlphabet{\Mathnormalbold}{#2}{#3}{#4}{\mst@bold}%
{\csname mst@ltshape@\mst@version\endcsname}%
@@ -2083,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
@@ -2145,41 +2547,45 @@ 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
\fi
-}% \MTDeclareVersion@@
+}%
\let\MathastextDeclareVersion\MTDeclareVersion
-\newcommand*\MTversion {\@ifstar\MTversion@s\MTversion@ }
-\newcommand*\MTversion@s [1]{\mathversion{#1}\MTversion@@ }
+\newcommand*\MTversion {\@ifstar\MTversion@s\MTversion@}
+\newcommand*\MTversion@s [1]{\mathversion{#1}\MTversion@@}
\newcommand*\MTversion@ [2][]{%
- \mathversion{#2}% defines \math@version as expanded #2
+ \mathversion{#2}%
\edef\mst@tmpa{#1}%
\ifx\mst@tmpa\empty
\let\mst@tmp\math@version
@@ -2197,7 +2603,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\edef\ttdefault {\csname mst@ttdefault@\mst@tmp\endcsname}%
\usefont{\encodingdefault}{\familydefault}{\seriesdefault}{\shapedefault}%
\MTversion@@
-}% \MTversion@
+}%
\newcommand*\MTversion@@ {%
\MTexistsdoesskip
\MTforalldoesskip
@@ -2227,7 +2633,6 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@subduedhbar
\mst@subduedinodot
\mst@subduedmathaccents
- \mst@subduedminus
\else
\ifx\math@version\mst@boldversionname
\mst@restorealphabets
@@ -2240,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
@@ -2259,13 +2663,13 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\csname ifmst@greek@\math@version @upper@up\endcsname
\expandafter\let\csname ifmst@greek@lower@up\expandafter\endcsname
\csname ifmst@greek@\math@version @lower@up\endcsname
- \MTcustomgreek % new with 1.3d
+ \MTcustomgreek
\mst@nonsubduedhbar
\mst@nonsubduedinodot
\mst@nonsubduedmathaccents
\mst@nonsubduedminus
\fi
-}% \MTversion@@
+}%
\let\MathastextVersion\MTversion
\let\Mathastextversion\MTversion
\let\MTVersion\MTversion
@@ -2275,13 +2679,13 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\MTfamily{#3}
\MTseries{#4}
\MTshape{#5}
- \ifmst@italic\MTlettershape{\itdefault}\fi % was missing in v 1.14 and prior
+ \ifmst@italic\MTlettershape{\itdefault}\fi
\edef\mst@tmp{#1}
\ifx\mst@tmp\empty\else\MTlettershape{#1}\fi
\Mathastext}
\let\MathastextWillUse\MTWillUse
\let\Mathastextwilluse\MTWillUse
-\def\Mathastext {\@ifnextchar [\Mathastext@declare\Mathastext@ }
+\def\Mathastext {\@ifnextchar[\Mathastext@declare\Mathastext@}% ]
\def\Mathastext@declare [#1]{%
\edef\mst@tmp{#1}%
\ifx\mst@tmp\empty
@@ -2290,9 +2694,17 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
\Mathastext@
{\MTDeclareVersion[\mst@ltsh]{#1}{\mst@enc}{\mst@fam}{\mst@ser}{\mst@opsh}}%
-}% \Mathastext@declare
+}%
\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}%
@@ -2326,7 +2738,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\def\mst@exists@skip@bold{0mu}%
\def\mst@forall@skip@bold{0mu}%
\def\mst@prime@skip@bold{0mu}%
- \else % not subdued
+ \else
\ifmst@italic
\ifmst@frenchmath
\mst@exists@muskip\mst@exists@skip\relax
@@ -2403,7 +2815,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
{\mst@ttdefault@bold}%
{\mst@series@bold}%
{\mst@shape@bold}%
- \fi % de \ifmst@subdued
+ \fi
\ifmst@needeuler
\SetSymbolFont{mteulervm}{bold}{U}{zeur}{\mst@boldvariant@normal}{n}%
\SetMathAlphabet{\MathEulerBold}{normal}%
@@ -2467,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 % end of else branch \ifmst@subdued
+ \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 % minus
+ \fi % not subdued
+ \fi % not nominus
\ifmst@subdued
\mst@infoline{Subdued `normal\string' and `bold\string' math versions.}%
\fi
@@ -2510,7 +2928,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\mst@infoline{The \ifmst@frenchmath frenchmath \else
italic \fi option is in effect.}%
\fi
-}% \Mathastext@
+}%
\let\mathastext\Mathastext
\Mathastext
\ifmst@eulergreek
@@ -2562,6 +2980,7 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\MTnonlettersdonotobeymathxx
\MTeasynonlettersdonotobeymathxx
\MTmathstandardletters
+ \MTmathstandarddigits
\MTdonotfixfonts
}%
\AtBeginDocument {%
@@ -2574,19 +2993,22 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\MTprimedoesskip
\MTeasynonlettersobeymathxx
\MTicinmath
+ \MTmathactivedigits
\MTfixfonts
}%
+\ifmst@everymath
+ \AtBeginDocument{%
+ \everymath\expandafter{\the\everymath
+ \mst@the\mst@do@nonletters \let\mst@the\@gobble
+ \mst@theeasy\mst@do@easynonletters \let\mst@theeasy\@gobble
+ }%
+ \everydisplay\expandafter{\the\everydisplay
+ \mst@the\mst@do@nonletters \let\mst@the\@gobble
+ \mst@theeasy\mst@do@easynonletters \let\mst@theeasy\@gobble
+ }%
+ }
+\fi
\AtBeginDocument{%
- \everymath\expandafter{\the\everymath
- \mst@the\mst@do@nonletters \let\mst@the\@gobble
- \mst@theeasy\mst@do@easynonletters \let\mst@theeasy\@gobble
- \mst@thef\mst@do@az \let\mst@thef\@gobble
- \mst@theF\mst@do@AZ \let\mst@theF\@gobble}%
- \everydisplay\expandafter{\the\everydisplay
- \mst@the\mst@do@nonletters \let\mst@the\@gobble
- \mst@theeasy\mst@do@easynonletters \let\mst@theeasy\@gobble
- \mst@thef\mst@do@az \let\mst@thef\@gobble
- \mst@theF\mst@do@AZ \let\mst@theF\@gobble}%
\MTcustomizenewmcodes
\let\mst@original@hbar\hbar
\let\mst@original@imath\imath
@@ -2599,25 +3021,17 @@ 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
\MTnoicinmath
\MTmathoperatorsdonotobeymathxx
- %\mst@subduedhbar
\let\inodot\imath
\let\jnodot\jmath
- %\mst@subduedmathaccents
\mst@subduedminus
\else
\mst@nonsubduedhbar
- % \mst@nonsubduedmathaccents % will get executed later
\mst@nonsubduedminus
\ifx\mst@itcorr\@undefined
\def\mst@itcorr{\ifnum\fam=\m@ne\/\fi}%
@@ -2633,10 +3047,10 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\fi
\fi
\fi
-}% \AtBeginDocument
+}%
\AtEndOfPackage{\AtBeginDocument{\ifmst@subdued\else\mst@nonsubduedmathaccents\fi}}%
\ifmst@subdued
-\AtBeginDocument{%
+ \AtBeginDocument{%
\def\mst@reserved#1\getanddefine@fonts\symletters#2#3\@nil{%
\def\mst@normalmv@letter{#2}}%
\expandafter\mst@reserved\mv@normal\@nil
@@ -2675,15 +3089,19 @@ defaultbf,defaultit,defaultsf,defaulttt}}
\else
\mst@tmp@enc
\fi/\mst@reste\endcsname}%
- \expandafter\SetSymbolFont@ \expandafter\mv@normal\mst@normalmv@letter\symmtletterfont
- \expandafter\SetSymbolFont@ \expandafter\mv@bold\mst@boldmv@letter\symmtletterfont
- \expandafter\SetSymbolFont@ \expandafter\mv@normal\mst@normalmv@operator\symmtoperatorfont
- \expandafter\SetSymbolFont@ \expandafter\mv@bold\mst@boldmv@operator\symmtoperatorfont
-\immediate\write\m@ne{}%
+ \expandafter\SetSymbolFont@
+ \expandafter\mv@normal\mst@normalmv@letter\symmtletterfont
+ \expandafter\SetSymbolFont@
+ \expandafter\mv@bold\mst@boldmv@letter\symmtletterfont
+ \expandafter\SetSymbolFont@
+ \expandafter\mv@normal\mst@normalmv@operator\symmtoperatorfont
+ \expandafter\SetSymbolFont@
+ \expandafter\mv@bold\mst@boldmv@operator\symmtoperatorfont
+ \immediate\write\m@ne{}%
\PackageInfo{mathastext}{...entering subdued mode...\MessageBreak ...done}%
-\immediate\write\m@ne{}%
-}% \AtBeginDocument
-\fi % \ifmst@subdued
+ \immediate\write\m@ne{}%
+ }%
+\fi
\expandafter \gdef \expandafter \@preamblecmds \expandafter {\@preamblecmds
\do\MTitgreek
\do\MTupgreek
diff --git a/Master/texmf-dist/tex/latex/mathfixs/mathfixs.sty b/Master/texmf-dist/tex/latex/mathfixs/mathfixs.sty
index e59dd4b8f07..6d685e1b706 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/10/25 v1.11 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,185 @@
\expandafter\let\csname #1varsigma\endcsname=\mafx@varsigma
}
+\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}
+
+\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 c1e00febb4e..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{2022/08/04}
-\def\g@mix@version@tl{1.25}
+\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{2022/08/04}
-\def\g@mix@version@tl{1.25}
+\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 67ff708ad51..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{2022/08/04}
-\def\g@pbs@version@tl{0.55}
+\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.
}
@@ -220,11 +220,11 @@
{dvipdfmx}{
\bool_gset_true:N\g_pbs_dvipdfmx_bool
\bool_gset_false:N\g_pbs_dvisvgm_bool
- }
+ }
{dvisvgm}{
\bool_gset_false:N\g_pbs_dvipdfmx_bool
\bool_gset_true:N\g_pbs_dvisvgm_bool
- }
+ }
}{ % otherwise let the L3 backend code decide
\str_case_e:nn{\c_sys_backend_str}{
{dvisvgm}{
@@ -270,6 +270,12 @@
\seq_new:N\g_pbs_bop_seq
\seq_new:N\g_pbs_eop_seq
+% column (boc, eoc) hooks
+\cs_new_protected:Nn\pbs_boc_action:n{\seq_gput_right:Nn\g_pbs_boc_seq{#1}}
+\cs_new_protected:Nn\pbs_eoc_action:n{\seq_gput_right:Nn\g_pbs_eoc_seq{#1}}
+\seq_new:N\g_pbs_boc_seq
+\seq_new:N\g_pbs_eoc_seq
+
\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env
\bool_new:N\g_pbs_ocgbase_loaded_bool
\AtBeginDocument{
@@ -1105,8 +1111,8 @@
\mode_leave_vertical: % resources are managed automatically
%rescale box to fit within the papersize while distilling
\tl_gset:cx{scale_{pbs@obj\int_use:N\g_pbs_obj_int}}{\fp_eval:n{min(1.0,
- \dim_ratio:nn{\paperwidth}{\box_wd:N#5},
- \dim_ratio:nn{\paperheight}{\box_ht:N#5+\box_dp:N#5}
+ \dim_ratio:nn{\paperwidth}{\box_wd:N#5}/\the\mag*1000,
+ \dim_ratio:nn{\paperheight}{\box_ht:N#5+\box_dp:N#5}/\the\mag*1000
)}}
\box_scale:Nnn#5{
\tl_use:c{scale_{pbs@obj\int_use:N\g_pbs_obj_int}}
@@ -1302,33 +1308,38 @@
\tl_gput_left:Nx\g_pbs_fields_tl{#1\space}
}
-%modify output routine for output box insertions
-\bool_new:N\l_pbs_is_vertical_bool
+% modify page output routine for inserting actions at begin and end
\cs_set_eq:NN\pbs_outputpage_orig:\@outputpage
\cs_set_protected_nopar:Npn\@outputpage{
\int_gincr:N\g_pbs_page_int
- \box_if_vertical:cTF{@outputbox}{
- \bool_set_true:N\l_pbs_is_vertical_bool
- }{
- \bool_set_false:N\l_pbs_is_vertical_bool
- }
- \hbox_set:Nn\@outputbox{
+ \vbox_set:Nn\@outputbox{
%begin of page
- \hbox_overlap_right:n{\seq_map_inline:Nn\g_pbs_bop_seq{##1}}
+ \seq_map_inline:Nn\g_pbs_bop_seq{##1}
\box_use_drop:N\@outputbox
%end of page
- \hbox_overlap_right:n{\seq_map_inline:Nn\g_pbs_eop_seq{##1}}
- }
- \bool_if:NT\l_pbs_is_vertical_bool{
- \vbox_set:Nn\@outputbox{\box_use_drop:N\@outputbox}
+ \seq_map_inline:Nn\g_pbs_eop_seq{##1}
}
\pbs_outputpage_orig:
}
+% modify column making routine for inserting actions at begin and end
+\cs_set_eq:NN\pbs_makecol_orig:\@makecol
+\cs_set_protected_nopar:Npn\@makecol{
+ \vbox_set:Nn\@cclv{
+ %begin of column
+ \seq_map_inline:Nn\g_pbs_boc_seq{##1}
+ \vbox_unpack_drop:N\@cclv
+ %end of column
+ \seq_map_inline:Nn\g_pbs_eoc_seq{##1}
+ }
+ \pbs_makecol_orig:
+}
+
\AddToHook{shipout/foreground}{
%insert /Properties into current page's resources
\put(0,0){\pbs_insert_properties_entry:}
}
+
\AddToHook{shipout/background}{
% workaround for curious AR bug (pdf annot or link placed on
% OCG remains active although OCG is hidden)
@@ -1336,8 +1347,15 @@
% somewhere on the page.
\bool_if:NT\g_pbs_ocgbase_loaded_bool{
\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{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
+ /Ff~65537/FT/Btn/Subtype/Widget/F~4
+ /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)
}
}
@@ -1435,8 +1453,8 @@
% `fstream', then
% {stream attributes as PDF key-value dictionary}{file name}
%
-% if #3 && #1 are both empty, an object reference will be reserved for later
-% use as #1
+% if #3 && #1 are both empty, an object reference will be reserved for
+% later use as #1
%
% \pbs_pdflastobj:
% inserts object ID of PDF object created/processed during most recent call
@@ -1471,9 +1489,9 @@
% --------
%
% \pbs_pdfxform:nnnnn
-% #1: add pgf/tikz resources (transparency, shading)? (0|1) %dvipdfmx/xetex
+% #1: add pgf/tikz resources (transparency, shading)? (0|1); dvipdfmx/xetex
% #2: write immediately to PDF? (0|1); eg 1 for appearances; pdftex/luatex
-% #3: additional resources %all BUT dvips
+% #3: additional resources; all BUT dvips
% #4: additional dictionary entries
% #5: savebox number
% creates PDF Form XObject from savebox content
@@ -1539,8 +1557,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@pbs@date@tl{2022/08/04}
-\def\g@pbs@version@tl{0.55}
+\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}
@@ -1551,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.
}
@@ -1603,11 +1621,11 @@
{dvipdfmx}{
\bool_gset_true:N\g_pbs_dvipdfmx_bool
\bool_gset_false:N\g_pbs_dvisvgm_bool
- }
+ }
{dvisvgm}{
\bool_gset_false:N\g_pbs_dvipdfmx_bool
\bool_gset_true:N\g_pbs_dvisvgm_bool
- }
+ }
}{ % otherwise let the L3 backend code decide
\str_case_e:nn{\c_sys_backend_str}{
{dvisvgm}{
@@ -1653,8 +1671,16 @@
\seq_new:N\g_pbs_bop_seq
\seq_new:N\g_pbs_eop_seq
-\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env
+% column (boc, eoc) hooks
+\cs_new_protected:Nn\pbs_boc_action:n{\seq_gput_right:Nn\g_pbs_boc_seq{#1}}
+\cs_new_protected:Nn\pbs_eoc_action:n{\seq_gput_right:Nn\g_pbs_eoc_seq{#1}}
+\seq_new:N\g_pbs_boc_seq
+\seq_new:N\g_pbs_eoc_seq
+
\bool_new:N\g_pbs_ocgbase_loaded_bool
+\AddToHook{package/ocgbase/after}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}
+
+\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env
\AtBeginDocument{
\iow_now:Nx\@mainaux{
\token_to_str:N\providecommand\token_to_str:N\pbs@newkey[2]{}
@@ -1666,7 +1692,6 @@
\tl_put_right:Nn\landscape{\bool_gset_true:N\g_pbs_lscape_bool}
\tl_put_left:Nn\endlandscape{\bool_gset_false:N\g_pbs_lscape_bool}
}
- \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{}
}
% writing to core objects in the PDF, using the new pdfmanagement interface
@@ -1851,7 +1876,9 @@
\xsb_addto_props:n{/rm@oc\int_use:N\g_pbs_oc_int\space#2}
\int_gincr:N\g_pbs_oc_int
}{
- \pdf_bdcobject:nx{#1}{\tl_use:c{g_pbs_objname_#2_tl}}
+ \tl_if_exist:cT{g_pbs_objname_#2_tl}{
+ \exp_args:Nne\pdf_bdcobject:nn{#1}{\tl_use:c{g_pbs_objname_#2_tl}}
+ }
}
}
@@ -1868,9 +1895,7 @@
%pgf + transparency related settings
\bool_new:N\g_pbs_pgfloaded_bool
\bool_gset_false:N\g_pbs_pgfloaded_bool
- \AtBeginDocument{
- \@ifpackageloaded{pgf}{\bool_gset_true:N\g_pbs_pgfloaded_bool}{}
- }
+ \AddToHook{package/pgf/after}{\bool_gset_true:N\g_pbs_pgfloaded_bool}
\int_new:N\g_pbs_obj_int %object ID
\bool_if:NTF\g_pbs_dvipdfmx_bool{ %dvipdfmx/XeTeX
\AtBeginDocument{
@@ -2042,7 +2067,9 @@
}
\cs_new_protected_nopar:Nn\pbs_pdfbdc:nn{
- \pdf_bdcobject:nx{#1}{\tl_use:c{g_pbs_objname_#2_tl}}
+ \tl_if_exist:cT{g_pbs_objname_#2_tl}{
+ \exp_args:Nne\pdf_bdcobject:nn{#1}{\tl_use:c{g_pbs_objname_#2_tl}}
+ }
}
}{
\bool_if:NTF\g_pbs_dvisvgm_bool{
@@ -2436,8 +2463,8 @@
\mode_leave_vertical: % resources are managed automatically
%rescale box to fit within the papersize while distilling
\tl_gset:cx{scale_{pbs@obj\int_use:N\g_pbs_obj_int}}{\fp_eval:n{min(1.0,
- \dim_ratio:nn{\paperwidth}{\box_wd:N#5},
- \dim_ratio:nn{\paperheight}{\box_ht:N#5+\box_dp:N#5}
+ \dim_ratio:nn{\paperwidth}{\box_wd:N#5}/\the\mag*1000,
+ \dim_ratio:nn{\paperheight}{\box_ht:N#5+\box_dp:N#5}/\the\mag*1000
)}}
\box_scale:Nnn#5{
\tl_use:c{scale_{pbs@obj\int_use:N\g_pbs_obj_int}}
@@ -2602,7 +2629,6 @@
}
}
}
-\cs_generate_variant:Nn\pdf_bdcobject:nn{nx}
\cs_new_eq:NN\pbs_pdfemc:\pdf_emc:
\cs_new_nopar:Nn\pbs_pdflastobj:{\g_pbs_pdflastobj_tl}
@@ -2610,29 +2636,33 @@
\cs_new_nopar:Nn\pbs_pdflastxform:{\g_pbs_pdflastxform_tl}
\cs_new_nopar:Nn\pbs_pdflastximage:{\g_pbs_pdflastximage_tl}
-%modify output routine for output box insertions
-\bool_new:N\l_pbs_is_vertical_bool
+% modify page output routine for inserting actions at begin and end
\cs_set_eq:NN\pbs_outputpage_orig:\@outputpage
\cs_set_protected_nopar:Npn\@outputpage{
\int_gincr:N\g_pbs_page_int
- \box_if_vertical:cTF{@outputbox}{
- \bool_set_true:N\l_pbs_is_vertical_bool
- }{
- \bool_set_false:N\l_pbs_is_vertical_bool
- }
- \hbox_set:Nn\@outputbox{
+ \vbox_set:Nn\@outputbox{
%begin of page
- \hbox_overlap_right:n{\seq_map_inline:Nn\g_pbs_bop_seq{##1}}
+ \seq_map_inline:Nn\g_pbs_bop_seq{##1}
\box_use_drop:N\@outputbox
%end of page
- \hbox_overlap_right:n{\seq_map_inline:Nn\g_pbs_eop_seq{##1}}
- }
- \bool_if:NT\l_pbs_is_vertical_bool{
- \vbox_set:Nn\@outputbox{\box_use_drop:N\@outputbox}
+ \seq_map_inline:Nn\g_pbs_eop_seq{##1}
}
\pbs_outputpage_orig:
}
+% modify column making routine for inserting actions at begin and end
+\cs_set_eq:NN\pbs_makecol_orig:\@makecol
+\cs_set_protected_nopar:Npn\@makecol{
+ \vbox_set:Nn\@cclv{
+ %begin of column
+ \seq_map_inline:Nn\g_pbs_boc_seq{##1}
+ \vbox_unpack_drop:N\@cclv
+ %end of column
+ \seq_map_inline:Nn\g_pbs_eoc_seq{##1}
+ }
+ \pbs_makecol_orig:
+}
+
\AddToHook{shipout/background}{
% workaround for curious AR bug (pdf annot or link placed on
% OCG remains active although OCG is hidden)
@@ -2640,8 +2670,14 @@
% somewhere on the page.
\bool_if:NT\g_pbs_ocgbase_loaded_bool{
\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{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
+ /Ff~65537/FT/Btn/Subtype/Widget/F~4
+ /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/mercatormap/mercatormap.sty b/Master/texmf-dist/tex/latex/mercatormap/mercatormap.sty
index d2c8d61ae4c..b9f77b9715a 100644
--- a/Master/texmf-dist/tex/latex/mercatormap/mercatormap.sty
+++ b/Master/texmf-dist/tex/latex/mercatormap/mercatormap.sty
@@ -1,8 +1,8 @@
-%% The LaTeX package mercatormap - version 1.02 (2020/08/06)
+%% The LaTeX package mercatormap - version 1.2.0 (2024/08/05)
%% mercatormap.sty: geographic coordinates (Mercator projection) and map tiles for TikZ pictures
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2020-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,24 +17,11 @@
%%
%% This work consists of all files listed in README
%%
-\RequirePackage{expl3}[2020/02/25]
-\RequirePackage{xparse}
-\ProvidesExplPackage{mercatormap}{2020/08/06}{1.02}
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
+\ProvidesExplPackage{mercatormap}{2024/08/05}{1.2.0}
{A Web Mercator projection package with map tile support}
-\@ifpackagelater { expl3 } { 2020/02/25 }
- { }
- {
- \PackageError { mercatormap } { Support~package~expl3~too~old }
- {
- You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~
- 'l3packages'.\MessageBreak
- Loading~mercatormap~will~abort!
- }
- \tex_endinput:D
- }
-\RequirePackage{siunitx}
-\RequirePackage{graphicx,tikz,pdftexcmds}
+\RequirePackage{siunitx,graphicx,tikz}
\ExplSyntaxOff
% space character problem if within explSyntax
@@ -51,8 +38,23 @@
\NewDocumentCommand\mermapsetmarker{ m } { \keys_set:nn { mermap/marker } {#1} }
-%---- constants ----------------------------------------------------------------
+%---- scratch variables --------------------------------------------------------
+
+\box_new:N \l__mermap_tmpa_box
+
+\clist_new:N \l__mermap_tmpa_clist
+\dim_new:N \l__mermap_tmpa_dim
+\dim_new:N \l__mermap_tmpb_dim
+
+\fp_new:N \l__mermap_tmpa_fp
+\fp_new:N \l__mermap_tmpb_fp
+
+\tl_new:N \g__mermap_tmpa_tl
+\tl_new:N \l__mermap_tmpa_tl
+\tl_new:N \l__mermap_tmpb_tl
+
+%---- constants ----------------------------------------------------------------
\fp_const:Nn \c__mermap_scale_radius_fp { 6371*pi/180 }
\fp_const:Nn \c__mermap_mean_radius_fp { 637100000cm }
@@ -235,16 +237,16 @@
\cs_new_nopar:Npn \__mermap_longitude_to_x:n #1
{
- \fp_set:Nn \l_tmpa_fp { #1-\l__mermap_mapwest_fp }
- \fp_sub:Nn \l_tmpa_fp { 360*floor(\l_tmpa_fp/360) }
- \fp_set:Nn \l_tmpa_fp
- { \l_tmpa_fp>\l__mermap_westeast_fp
- ?(\l_tmpa_fp-\l__mermap_westeast_fp>360-\l_tmpa_fp
- ?\l_tmpa_fp-360
- :\l_tmpa_fp)
- :\l_tmpa_fp
+ \fp_set:Nn \l__mermap_tmpa_fp { #1-\l__mermap_mapwest_fp }
+ \fp_sub:Nn \l__mermap_tmpa_fp { 360*floor(\l__mermap_tmpa_fp/360) }
+ \fp_set:Nn \l__mermap_tmpa_fp
+ { \l__mermap_tmpa_fp>\l__mermap_westeast_fp
+ ?(\l__mermap_tmpa_fp-\l__mermap_westeast_fp>360-\l__mermap_tmpa_fp
+ ?\l__mermap_tmpa_fp-360
+ :\l__mermap_tmpa_fp)
+ :\l__mermap_tmpa_fp
}
- \fp_set:Nn \l__mermap_cs_x_fp { \l_tmpa_fp*\l__mermap_cs_xfactor_fp }
+ \fp_set:Nn \l__mermap_cs_x_fp { \l__mermap_tmpa_fp*\l__mermap_cs_xfactor_fp }
}
@@ -328,7 +330,7 @@
}
-\prg_new_conditional:Npnn \__mermap_if_in_map:nn #1#2 { p, TF }
+\prg_new_conditional:Npnn \__mermap_if_in_map:nn #1#2 { p, T, F, TF }
{
\fp_compare:nNnTF {#1} > \l__mermap_mapnorth_fp
{
@@ -340,14 +342,14 @@
\prg_return_false:
}
{
- \fp_set:Nn \l_tmpa_fp { #2-\l__mermap_mapwest_fp }
- \fp_sub:Nn \l_tmpa_fp { 360*floor(\l_tmpa_fp/360) }
- \fp_compare:nNnTF \l_tmpa_fp > \l__mermap_westeast_fp
+ \fp_set:Nn \l__mermap_tmpa_fp { #2-\l__mermap_mapwest_fp }
+ \fp_sub:Nn \l__mermap_tmpa_fp { 360*floor(\l__mermap_tmpa_fp/360) }
+ \fp_compare:nNnTF \l__mermap_tmpa_fp > \l__mermap_westeast_fp
{
\prg_return_false:
}
{
- \fp_set:Nn \l__mermap_cs_x_fp { \l_tmpa_fp*\l__mermap_cs_xfactor_fp }
+ \fp_set:Nn \l__mermap_cs_x_fp { \l__mermap_tmpa_fp*\l__mermap_cs_xfactor_fp }
\__mermap_latitude_to_y:n {#1}
\pgfnoderename{mrclastpos}{mrcpos}
\pgfcoordinate{mrcpos}{
@@ -366,7 +368,7 @@
}
-\prg_new_conditional:Npnn \__mermap_if_in_vicinity:nn #1#2 { p, TF }
+\prg_new_conditional:Npnn \__mermap_if_in_vicinity:nn #1#2 { p, T, F, TF }
{
\fp_compare:nNnTF {#1} > \l__mermap_vic_north_fp
{
@@ -378,14 +380,14 @@
\prg_return_false:
}
{
- \fp_set:Nn \l_tmpa_fp { #2-\l__mermap_vic_west_fp }
- \fp_sub:Nn \l_tmpa_fp { 360*floor(\l_tmpa_fp/360) }
- \fp_compare:nNnTF \l_tmpa_fp > \l__mermap_vic_westeast_fp
+ \fp_set:Nn \l__mermap_tmpa_fp { #2-\l__mermap_vic_west_fp }
+ \fp_sub:Nn \l__mermap_tmpa_fp { 360*floor(\l__mermap_tmpa_fp/360) }
+ \fp_compare:nNnTF \l__mermap_tmpa_fp > \l__mermap_vic_westeast_fp
{
\prg_return_false:
}
{
- \fp_set:Nn \l__mermap_cs_x_fp { \l_tmpa_fp*\l__mermap_cs_xfactor_fp - \l__mermap_vic_dim_fp }
+ \fp_set:Nn \l__mermap_cs_x_fp { \l__mermap_tmpa_fp*\l__mermap_cs_xfactor_fp - \l__mermap_vic_dim_fp }
\__mermap_latitude_to_y:n {#1}
\pgfnoderename{mrclastpos}{mrcpos}
\pgfcoordinate{mrcpos}{
@@ -443,19 +445,13 @@
\NewExpandableDocumentCommand \mrcNPlat { m }
{
- \cs_if_exist_use:cF{__mermap__lat__#1}
- {
- \msg_error:nnx{ mercatormap }{ np-undefined }{ #1 }
- }
+ \cs_if_exist_use:cF{ __mermap__lat__#1 }{ 0 }
}
\NewExpandableDocumentCommand \mrcNPlon { m }
{
- \cs_if_exist_use:cF{__mermap__lon__#1}
- {
- \msg_error:nnx{ mercatormap }{ np-undefined }{ #1 }
- }
+ \cs_if_exist_use:cF{ __mermap__lon__#1 }{ 0 }
}
@@ -465,15 +461,75 @@
}
+\prg_new_conditional:Npnn \__mermap_if_NP_exists:n #1 { p, TF }
+ {
+ \cs_if_exist:cTF{ __mermap__lat__#1 }
+ {
+ \cs_if_exist:cTF{ __mermap__lon__#1 }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+
+\NewDocumentCommand{\ifmrcNPexists}{ m }
+ {
+ \__mermap_if_NP_exists:nTF{ #1 }
+ }
+
+
+\prg_new_conditional:Npnn \__mermap_if_NP_in_map:n #1 { p, TF }
+ {
+ \__mermap_if_NP_exists:nTF { #1 }
+ {
+ \__mermap_if_in_map:nnTF{ \mrcNPlat{#1} }{ \mrcNPlon{#1} }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+ {
+ \prg_return_false:
+ }
+ }
+
+
\NewDocumentCommand{\ifmrcNPinmap}{ m }
{
- \__mermap_if_in_map:nnTF{\mrcNPlat{#1}}{\mrcNPlon{#1}}
+ \__mermap_if_NP_in_map:nTF { #1 }
+ }
+
+
+\prg_new_conditional:Npnn \__mermap_if_NP_in_vicinity:n #1 { p, TF }
+ {
+ \__mermap_if_NP_exists:nTF { #1 }
+ {
+ \__mermap_if_in_vicinity:nnTF{ \mrcNPlat{#1} }{ \mrcNPlon{#1} }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+ {
+ \prg_return_false:
+ }
}
\NewDocumentCommand{\ifmrcNPinvicinity}{ m }
{
- \__mermap_if_in_vicinity:nnTF{\mrcNPlat{#1}}{\mrcNPlon{#1}}
+ \__mermap_if_NP_in_vicinity:nTF{ #1 }
}
@@ -485,7 +541,7 @@
\char_set_catcode_other:n {`\"}
\tl_const:Nn \c__mermap_supply_call_boundaries_tl
- {%
+ {
\l__mermap_python_tl\c_space_tl boundaries
-u "\str_use:N\l__mermap_supply_url_str"
-at "\str_use:N\l__mermap_supply_attribution_str"
@@ -503,7 +559,7 @@
}
\tl_const:Nn \c__mermap_supply_call_reference_tl
- {%
+ {
\l__mermap_python_tl\c_space_tl reference
-u "\str_use:N\l__mermap_supply_url_str"
-at "\str_use:N\l__mermap_supply_attribution_str"
@@ -523,7 +579,7 @@
\tl_const:Nn \c__mermap_supply_call_areafit_tl
- {%
+ {
\l__mermap_python_tl\c_space_tl areafit
-u "\str_use:N\l__mermap_supply_url_str"
-at "\str_use:N\l__mermap_supply_attribution_str"
@@ -604,11 +660,11 @@
\cs_new:Npn \__mermap_supply_url_with_api_key:nnn #1#2#3
{
\str_set:Nn \l__mermap_supply_url_str {#1}
- \prop_get:NnNF \g__mermap_apikey_prop {#2} \l_tmpa_tl
+ \prop_get:NnNF \g__mermap_apikey_prop {#2} \l__mermap_tmpa_tl
{
\msg_error:nnx{ mercatormap }{ api-key-undefined }{ #2 }
}
- \str_put_right:NV \l__mermap_supply_url_str \l_tmpa_tl
+ \str_put_right:NV \l__mermap_supply_url_str \l__mermap_tmpa_tl
\str_put_right:Nn \l__mermap_supply_url_str {#3}
}
@@ -621,16 +677,16 @@
{
\msg_error:nnx{ mercatormap }{ np-undefined }{ ##1 }
}
- \fp_set:Nn \l_tmpa_fp { \mrcNPlat{##1} }
- \fp_compare:nNnT \l_tmpa_fp < \l__mermap_supply_south_fp
- { \fp_set_eq:NN \l__mermap_supply_south_fp \l_tmpa_fp }
- \fp_compare:nNnT \l_tmpa_fp > \l__mermap_supply_north_fp
- { \fp_set_eq:NN \l__mermap_supply_north_fp \l_tmpa_fp }
- \fp_set:Nn \l_tmpa_fp { \mrcNPlon{##1} }
- \fp_compare:nNnT \l_tmpa_fp < \l__mermap_supply_west_fp
- { \fp_set_eq:NN \l__mermap_supply_west_fp \l_tmpa_fp }
- \fp_compare:nNnT \l_tmpa_fp > \l__mermap_supply_east_fp
- { \fp_set_eq:NN \l__mermap_supply_east_fp \l_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { \mrcNPlat{##1} }
+ \fp_compare:nNnT \l__mermap_tmpa_fp < \l__mermap_supply_south_fp
+ { \fp_set_eq:NN \l__mermap_supply_south_fp \l__mermap_tmpa_fp }
+ \fp_compare:nNnT \l__mermap_tmpa_fp > \l__mermap_supply_north_fp
+ { \fp_set_eq:NN \l__mermap_supply_north_fp \l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { \mrcNPlon{##1} }
+ \fp_compare:nNnT \l__mermap_tmpa_fp < \l__mermap_supply_west_fp
+ { \fp_set_eq:NN \l__mermap_supply_west_fp \l__mermap_tmpa_fp }
+ \fp_compare:nNnT \l__mermap_tmpa_fp > \l__mermap_supply_east_fp
+ { \fp_set_eq:NN \l__mermap_supply_east_fp \l__mermap_tmpa_fp }
}
}
@@ -662,14 +718,14 @@
{
\msg_error:nnn { mercatormap }{ input-area-marker }{ #1 }
}
- \tl_gset:Nx \g_tmpa_tl
+ \tl_gset:Nx \g__mermap_tmpa_tl
{
\exp_not:N\fp_set:Nn \exp_not:N\l__mermap_supply_west_fp { \fp_to_decimal:N\l__mermap_supply_west_fp }
\exp_not:N\fp_set:Nn \exp_not:N\l__mermap_supply_east_fp { \fp_to_decimal:N\l__mermap_supply_east_fp }
\exp_not:N\fp_set:Nn \exp_not:N\l__mermap_supply_south_fp { \fp_to_decimal:N\l__mermap_supply_south_fp }
\exp_not:N\fp_set:Nn \exp_not:N\l__mermap_supply_north_fp { \fp_to_decimal:N\l__mermap_supply_north_fp }
}
- \group_insert_after:N \g_tmpa_tl
+ \group_insert_after:N \g__mermap_tmpa_tl
\group_end:
}
@@ -715,18 +771,18 @@
_source .choice:,
area .code:n =
{
- \clist_set:Nn \l_tmpa_clist { #1 }
+ \clist_set:Nn \l__mermap_tmpa_clist { #1 }
\fp_set:Nn \l__mermap_supply_west_fp { inf }
\fp_set:Nn \l__mermap_supply_east_fp { -inf }
\fp_set:Nn \l__mermap_supply_south_fp { 89 }
\fp_set:Nn \l__mermap_supply_north_fp { -89 }
- \__mermap_supply_add_area_clist:N \l_tmpa_clist
+ \__mermap_supply_add_area_clist:N \l__mermap_tmpa_clist
},
area .value_required:n = true,
add~area .code:n =
{
- \clist_set:Nn \l_tmpa_clist { #1 }
- \__mermap_supply_add_area_clist:N \l_tmpa_clist
+ \clist_set:Nn \l__mermap_tmpa_clist { #1 }
+ \__mermap_supply_add_area_clist:N \l__mermap_tmpa_clist
},
area~from~marker~input .code:n =
{
@@ -756,20 +812,20 @@
flex~area~fit .code:n = {
\fp_compare:nNnF \l__mermap_tile_size_dim = \l__mermap_flex_tile_size_dim
{
- \fp_set:Nn \l_tmpa_fp { \l__mermap_tile_size_dim/\l__mermap_flex_tile_size_dim }
- \fp_set:Nn \l__mermap_supply_width_fp{\l__mermap_supply_width_fp*\l_tmpa_fp}
- \fp_set:Nn \l__mermap_supply_height_fp{\l__mermap_supply_height_fp*\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_tmpa_fp { \l__mermap_tile_size_dim/\l__mermap_flex_tile_size_dim }
+ \fp_set:Nn \l__mermap_supply_width_fp{\l__mermap_supply_width_fp*\l__mermap_tmpa_fp}
+ \fp_set:Nn \l__mermap_supply_height_fp{\l__mermap_supply_height_fp*\l__mermap_tmpa_fp}
}
\fp_set:Nn \l__mermap_supply_width_fp{\l__mermap_supply_width_fp-(#1)/\l__mermap_flex_tile_size_dim}
\fp_set:Nn \l__mermap_supply_height_fp{\l__mermap_supply_height_fp-(#1)/\l__mermap_flex_tile_size_dim}
- \fp_set:Nn \l_tmpa_fp { min ( 180*\l__mermap_supply_width_fp / (\l__mermap_supply_east_fp-\l__mermap_supply_west_fp)
+ \fp_set:Nn \l__mermap_tmpa_fp { min ( 180*\l__mermap_supply_width_fp / (\l__mermap_supply_east_fp-\l__mermap_supply_west_fp)
, pi*\l__mermap_supply_height_fp / ln( tand(\l__mermap_supply_north_fp/2+45) / tand(\l__mermap_supply_south_fp/2+45) ) ) }
- \fp_set:Nn \l_tmpb_fp { ln(\l_tmpa_fp)/ln(2) }
- \fp_set:Nn \l_tmpb_fp { round(\l_tmpb_fp)/\l_tmpb_fp }
- \fp_set:Nn \l_tmpb_fp { \l_tmpa_fp^(\l_tmpb_fp-1+0.0000001) }
- \dim_set:Nn \l__mermap_tile_size_dim { \fp_to_dim:n { \l__mermap_flex_tile_size_dim / \l_tmpb_fp }}
- \fp_set:Nn \l__mermap_supply_width_fp { \l__mermap_supply_width_fp * \l_tmpb_fp + (#1)/\l__mermap_tile_size_dim }
- \fp_set:Nn \l__mermap_supply_height_fp { \l__mermap_supply_height_fp * \l_tmpb_fp + (#1)/\l__mermap_tile_size_dim }
+ \fp_set:Nn \l__mermap_tmpb_fp { ln(\l__mermap_tmpa_fp)/ln(2) }
+ \fp_set:Nn \l__mermap_tmpb_fp { round(\l__mermap_tmpb_fp)/\l__mermap_tmpb_fp }
+ \fp_set:Nn \l__mermap_tmpb_fp { \l__mermap_tmpa_fp^(\l__mermap_tmpb_fp-1+0.0000001) }
+ \dim_set:Nn \l__mermap_tile_size_dim { \fp_to_dim:n { \l__mermap_flex_tile_size_dim / \l__mermap_tmpb_fp }}
+ \fp_set:Nn \l__mermap_supply_width_fp { \l__mermap_supply_width_fp * \l__mermap_tmpb_fp + (#1)/\l__mermap_tile_size_dim }
+ \fp_set:Nn \l__mermap_supply_height_fp { \l__mermap_supply_height_fp * \l__mermap_tmpb_fp + (#1)/\l__mermap_tile_size_dim }
},
flex~area~fit .default:n = 0pt,
}
@@ -815,16 +871,13 @@
\msg_new:nnn { mercatormap }{ python-script }
- { Python~script~'maptiles.texpy'~is~created~(for~map~tile~download). }
+ { Python~script~'maptiles.texpy'~is~created~for~map~tile~download. }
\NewDocumentCommand \mrcactivatescript {}
{
\msg_info:nn { mercatormap }{ python-script }
- \group_begin:
- \def\@latex@warning@no@line##1{}% suppress filecontents warning
\file_input:n {\mrcpkgprefix mercatorpy.def}
- \group_end:
\bool_set_true:N \l__mermap_script_activated_bool
}
\@onlypreamble\mrcactivatescript
@@ -838,21 +891,21 @@
\cs_new:Npn \__mermap_create_definition_id:n #1
{
- \tl_set:Nx \l_tmpa_tl {#1}
- \tl_trim_spaces:N \l_tmpa_tl
- \str_set:Nx \l__mermap_definition_postfix_str {\tl_to_str:N \l_tmpa_tl}
+ \tl_set:Nx \l__mermap_tmpa_tl {#1}
+ \tl_trim_spaces:N \l__mermap_tmpa_tl
+ \str_set:Nx \l__mermap_definition_postfix_str {\tl_to_str:N \l__mermap_tmpa_tl}
\str_concat:NNN \l__mermap_definition_id_str
\l__mermap_definition_prefix_str \l__mermap_definition_postfix_str
}
\cs_new:Npn \__mermap_map:nn #1#2
{
- \tl_set:Nx \l_tmpa_tl {#2}
- \tl_trim_spaces:N \l_tmpa_tl
- \tl_if_empty:NT \l_tmpa_tl
+ \tl_set:Nx \l__mermap_tmpa_tl {#2}
+ \tl_trim_spaces:N \l__mermap_tmpa_tl
+ \tl_if_empty:NT \l__mermap_tmpa_tl
{
\int_gincr:N \g__mermap_automap_int
- \tl_set:Nx \l_tmpa_tl
+ \tl_set:Nx \l__mermap_tmpa_tl
{
automap-
\int_compare:nNnTF \g__mermap_automap_int<{10} {000}
@@ -865,7 +918,7 @@
\int_use:N \g__mermap_automap_int
}
}
- \str_set:Nx \l__mermap_definition_postfix_str {\tl_to_str:N \l_tmpa_tl}
+ \str_set:Nx \l__mermap_definition_postfix_str {\tl_to_str:N \l__mermap_tmpa_tl}
\str_concat:NNN \l__mermap_definition_id_str
\l__mermap_definition_prefix_str \l__mermap_definition_postfix_str
\__mermap_supplymap:n {#1}
@@ -886,12 +939,12 @@
{
\group_begin:
\keys_set:nn { mermap/supply } { #1 }
- \tl_set:Nx \l_tmpa_tl { \str_use:N\l__mermap_definition_id_str }
- \prop_if_in:NVT \g__mermap_definition_prop \l_tmpa_tl
+ \tl_set:Nx \l__mermap_tmpa_tl { \str_use:N\l__mermap_definition_id_str }
+ \prop_if_in:NVT \g__mermap_definition_prop \l__mermap_tmpa_tl
{
- \msg_warning:nnx { mercatormap }{ definition-id-used }{ \tl_use:N \l_tmpa_tl }
+ \msg_warning:nnx { mercatormap }{ definition-id-used }{ \tl_use:N \l__mermap_tmpa_tl }
}
- \prop_gput:NVn \g__mermap_definition_prop \l_tmpa_tl {}
+ \prop_gput:NVn \g__mermap_definition_prop \l__mermap_tmpa_tl {}
\bool_if:NT \l__mermap_script_activated_bool
{
\__mermap_supplymap_call:
@@ -927,10 +980,10 @@
\cs_new:Npn \__mermap_supplymap_call:
{
- \tl_set_eq:Nc \l_tmpa_tl {
+ \tl_set_eq:Nc \l__mermap_tmpa_tl {
c__mermap_supply_call_\l__mermap_supply_type_tl _tl }
- \tl_set:Nx \l__mermap_supply_call_tl \l_tmpa_tl
- \tl_set:Nx \l__mermap_mdfivesum_tl { \pdf@mdfivesum{\l__mermap_supply_call_tl} }
+ \tl_set:Nx \l__mermap_supply_call_tl \l__mermap_tmpa_tl
+ \tl_set:Nx \l__mermap_mdfivesum_tl { \str_mdfive_hash:e{\l__mermap_supply_call_tl} }
\file_if_exist:nTF {\l__mermap_definition_id_str.def}
{
\tl_clear:N \l__mermap_last_mdfivesum_tl
@@ -1031,8 +1084,8 @@
\cs_new_nopar:Npn \__mermap_set_flex_scale:nn #1#2
{
- \fp_set:Nn \l_tmpa_fp { 1+ln(\c__mermap_mean_radius_fp/#1*cosd(#2)*pi/\l__mermap_flex_tile_size_dim)/ln(2) }
- \keys_set:nn { mermap }{ flex~zoom=\l_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { 1+ln(\c__mermap_mean_radius_fp/#1*cosd(#2)*pi/\l__mermap_flex_tile_size_dim)/ln(2) }
+ \keys_set:nn { mermap }{ flex~zoom=\l__mermap_tmpa_fp }
}
\use:x
@@ -1323,19 +1376,19 @@
\cs_new_nopar:Npn \__mermap_compute_network_step:nn #1#2
{
- \fp_set:Nn \l_tmpa_fp
+ \fp_set:Nn \l__mermap_tmpa_fp
{
min ( \l__mermap_network_pieces_int, round((#1)/\l__mermap_network_distance_dim) )
}
- \fp_set:Nn \l_tmpb_fp { (#2)/\l_tmpa_fp }
- \fp_set:Nn \l_tmpa_fp { floor(ln(\l_tmpb_fp)/ln(10)) }
- \fp_compare:nNnTF {\l_tmpa_fp} < {0}
+ \fp_set:Nn \l__mermap_tmpb_fp { (#2)/\l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { floor(ln(\l__mermap_tmpb_fp)/ln(10)) }
+ \fp_compare:nNnTF {\l__mermap_tmpa_fp} < {0}
{
- \fp_compare:nNnTF {\l_tmpa_fp} > {-5}
+ \fp_compare:nNnTF {\l__mermap_tmpa_fp} > {-5}
{
\use:x
{
- \exp_not:N\keys_set:nn { mermap }{ format~angle=decimal\fp_to_int:N\l_tmpa_fp}
+ \exp_not:N\keys_set:nn { mermap }{ format~angle=decimal\fp_to_int:N\l__mermap_tmpa_fp}
}
}
{
@@ -1345,25 +1398,25 @@
{
\keys_set:nn { mermap }{ format~angle=decimal-0 }
}
- \fp_set:Nn \l_tmpa_fp { 10^\l_tmpa_fp }
- \fp_set:Nn \l_tmpb_fp { \l_tmpb_fp/\l_tmpa_fp }
- \fp_compare:nNnTF {abs(\l_tmpb_fp-1)} < {abs(\l_tmpb_fp-2)}
+ \fp_set:Nn \l__mermap_tmpa_fp { 10^\l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_tmpb_fp { \l__mermap_tmpb_fp/\l__mermap_tmpa_fp }
+ \fp_compare:nNnTF {abs(\l__mermap_tmpb_fp-1)} < {abs(\l__mermap_tmpb_fp-2)}
{
- \fp_compare:nNnTF {abs(\l_tmpb_fp-1)} < {abs(\l_tmpb_fp-5)}
+ \fp_compare:nNnTF {abs(\l__mermap_tmpb_fp-1)} < {abs(\l__mermap_tmpb_fp-5)}
{
- \fp_set:Nn \l__mermap_result_fp {\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_result_fp {\l__mermap_tmpa_fp}
}
{
- \fp_set:Nn \l__mermap_result_fp {5*\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_result_fp {5*\l__mermap_tmpa_fp}
}
}
{
- \fp_compare:nNnTF {abs(\l_tmpb_fp-2)} < {abs(\l_tmpb_fp-5)}
+ \fp_compare:nNnTF {abs(\l__mermap_tmpb_fp-2)} < {abs(\l__mermap_tmpb_fp-5)}
{
- \fp_set:Nn \l__mermap_result_fp {2*\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_result_fp {2*\l__mermap_tmpa_fp}
}
{
- \fp_set:Nn \l__mermap_result_fp {5*\l_tmpa_fp}
+ \fp_set:Nn \l__mermap_result_fp {5*\l__mermap_tmpa_fp}
}
}
}
@@ -1376,46 +1429,46 @@
\IfNoValueF {#1} { \keys_set:nn { mermap } {#1} }
\tl_use:N \l__mermap_tikz_map_clip_tl
\__mermap_compute_network_step:nn {\l__mermap_tex_height_fp}{\l__mermap_mapnorth_fp-\l__mermap_mapsouth_fp}
- \fp_set:Nn \l_tmpa_fp { ceil(\l__mermap_mapsouth_fp/\l__mermap_result_fp)*\l__mermap_result_fp}
- \fp_compare:nNnT {\l_tmpa_fp-\l__mermap_mapsouth_fp} < {1e-10}
+ \fp_set:Nn \l__mermap_tmpa_fp { ceil(\l__mermap_mapsouth_fp/\l__mermap_result_fp)*\l__mermap_result_fp}
+ \fp_compare:nNnT {\l__mermap_tmpa_fp-\l__mermap_mapsouth_fp} < {1e-10}
{
- \fp_add:Nn \l_tmpa_fp {\l__mermap_result_fp}
+ \fp_add:Nn \l__mermap_tmpa_fp {\l__mermap_result_fp}
}
- \fp_while_do:nNnn {\l_tmpa_fp} < {\l__mermap_mapnorth_fp}
+ \fp_while_do:nNnn {\l__mermap_tmpa_fp} < {\l__mermap_mapnorth_fp}
{
- \tl_set:Nn \l_tmpa_tl {\fp_use:N\l_tmpa_fp}
- \draw[gray,very~thin] (mrc~cs\c_colon_str lat=\l_tmpa_tl,lon=\mrcmapwest)
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_use:N\l__mermap_tmpa_fp}
+ \draw[gray,very~thin] (mrc~cs\c_colon_str lat=\l__mermap_tmpa_tl,lon=\mrcmapwest)
coordinate (mermap_temp)
node[right=1mm,inner~sep=0.5pt,black!50!gray,font=\l__mermap_network_font_tl,
fill=white,opacity=0.3,text~opacity=1,
- ]{\mrcformlat{\l_tmpa_tl}}
+ ]{\mrcformlat{\l__mermap_tmpa_tl}}
-- (mermap_temp -| mrcmap.east)
node[left=1mm,inner~sep=0.5pt,black!50!gray,font=\l__mermap_network_font_tl,
fill=white,opacity=0.3,text~opacity=1,
- ]{\mrcformlat{\l_tmpa_tl}}
+ ]{\mrcformlat{\l__mermap_tmpa_tl}}
;
- \fp_add:Nn \l_tmpa_fp {\l__mermap_result_fp}
+ \fp_add:Nn \l__mermap_tmpa_fp {\l__mermap_result_fp}
}
\__mermap_compute_network_step:nn {\l__mermap_tex_width_fp}{\l__mermap_mapeast_fp-\l__mermap_mapwest_fp}
- \fp_set:Nn \l_tmpa_fp { ceil(\l__mermap_mapwest_fp/\l__mermap_result_fp)*\l__mermap_result_fp}
- \fp_compare:nNnT {\l_tmpa_fp-\l__mermap_mapwest_fp} < {1e-10}
+ \fp_set:Nn \l__mermap_tmpa_fp { ceil(\l__mermap_mapwest_fp/\l__mermap_result_fp)*\l__mermap_result_fp}
+ \fp_compare:nNnT {\l__mermap_tmpa_fp-\l__mermap_mapwest_fp} < {1e-10}
{
- \fp_add:Nn \l_tmpa_fp {\l__mermap_result_fp}
+ \fp_add:Nn \l__mermap_tmpa_fp {\l__mermap_result_fp}
}
- \fp_while_do:nNnn {\l_tmpa_fp} < {\l__mermap_mapeast_fp}
+ \fp_while_do:nNnn {\l__mermap_tmpa_fp} < {\l__mermap_mapeast_fp}
{
- \tl_set:Nn \l_tmpa_tl {\fp_use:N\l_tmpa_fp}
- \draw[gray,very~thin] (mrc~cs\c_colon_str lon=\l_tmpa_tl,lat=\mrcmapsouth)
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_use:N\l__mermap_tmpa_fp}
+ \draw[gray,very~thin] (mrc~cs\c_colon_str lon=\l__mermap_tmpa_tl,lat=\mrcmapsouth)
coordinate (mermap_temp)
node[above=1mm,inner~sep=0.5pt,black!50!gray,font=\l__mermap_network_font_tl,
fill=white,opacity=0.3,text~opacity=1,
- ]{\mrcformlon{\l_tmpa_tl}}
+ ]{\mrcformlon{\l__mermap_tmpa_tl}}
-- (mermap_temp |- mrcmap.north)
node[below=1mm,inner~sep=0.5pt,black!50!gray,font=\l__mermap_network_font_tl,
fill=white,opacity=0.3,text~opacity=1,
- ]{\mrcformlon{\l_tmpa_tl}}
+ ]{\mrcformlon{\l__mermap_tmpa_tl}}
;
- \fp_add:Nn \l_tmpa_fp {\l__mermap_result_fp}
+ \fp_add:Nn \l__mermap_tmpa_fp {\l__mermap_result_fp}
}
\end{scope}
}
@@ -1488,26 +1541,26 @@
\cs_new_nopar:Npn \__mermap_pretty_distance:n #1
{
- \fp_set:Nn \l_tmpa_fp { #1 }
- \fp_compare:nNnTF \l_tmpa_fp < 5
+ \fp_set:Nn \l__mermap_tmpa_fp { #1 }
+ \fp_compare:nNnTF \l__mermap_tmpa_fp < 5
{
- \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:n{1000*\l_tmpa_fp}}{\meter}
+ \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:n{1000*\l__mermap_tmpa_fp}}{\meter}
}
{
- \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:N \l_tmpa_fp}{\kilo\meter}
+ \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:N \l__mermap_tmpa_fp}{\kilo\meter}
}
}
\cs_new_nopar:Npn \__mermap_pretty_length:n #1
{
- \fp_set:Nn \l_tmpa_fp { (#1)*\l__mermap_scale_fp }
- \fp_compare:nNnTF \l_tmpa_fp < 5
+ \fp_set:Nn \l__mermap_tmpa_fp { (#1)*\l__mermap_scale_fp }
+ \fp_compare:nNnTF \l__mermap_tmpa_fp < 5
{
- \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:n{1000*\l_tmpa_fp}}{\meter}
+ \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:n{1000*\l__mermap_tmpa_fp}}{\meter}
}
{
- \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:N \l_tmpa_fp}{\kilo\meter}
+ \SI[round-mode=figures,round-precision=3,detect-all]{\fp_to_decimal:N \l__mermap_tmpa_fp}{\kilo\meter}
}
}
@@ -1535,25 +1588,25 @@
\cs_new_nopar:Npn \__mermap_format_angle_minute:n #1
{
- \fp_set:Nn \l_tmpa_fp {floor(#1)}
- \fp_set:Nn \l_tmpb_fp {round((#1-\l_tmpa_fp)*60)}
+ \fp_set:Nn \l__mermap_tmpa_fp {floor(#1)}
+ \fp_set:Nn \l__mermap_tmpb_fp {round((#1-\l__mermap_tmpa_fp)*60)}
\ang[add-arc-degree-zero,add-arc-minute-zero]
{
- \fp_to_int:N \l_tmpa_fp ;
- \fp_to_int:N \l_tmpb_fp ;
+ \fp_to_int:N \l__mermap_tmpa_fp ;
+ \fp_to_int:N \l__mermap_tmpb_fp ;
}
}
\cs_new_nopar:Npn \__mermap_format_angle_second:n #1
{
- \fp_set:Nn \l_tmpa_fp {floor(#1)}
- \fp_set:Nn \l_tmpb_fp {floor((#1-\l_tmpa_fp)*60)}
+ \fp_set:Nn \l__mermap_tmpa_fp {floor(#1)}
+ \fp_set:Nn \l__mermap_tmpb_fp {floor((#1-\l__mermap_tmpa_fp)*60)}
\ang[add-arc-degree-zero,add-arc-minute-zero]
{
- \fp_to_int:N \l_tmpa_fp ;
- \fp_to_int:N \l_tmpb_fp ;
- \fp_to_int:n {round(((#1-\l_tmpa_fp)*60-\l_tmpb_fp)*60)}
+ \fp_to_int:N \l__mermap_tmpa_fp ;
+ \fp_to_int:N \l__mermap_tmpb_fp ;
+ \fp_to_int:n {round(((#1-\l__mermap_tmpa_fp)*60-\l__mermap_tmpb_fp)*60)}
}
}
@@ -1562,14 +1615,14 @@
\group_begin:
\IfNoValueF {#1}
{ \keys_set:nn { mermap } {#1} }
- \fp_set:Nn \l_tmpa_fp {#2}
- \fp_compare:nNnTF \l_tmpa_fp < 0
+ \fp_set:Nn \l__mermap_tmpa_fp {#2}
+ \fp_compare:nNnTF \l__mermap_tmpa_fp < 0
{
- \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:n{-\l_tmpa_fp}}
+ \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:n{-\l__mermap_tmpa_fp}}
\__mermap_format_south:n {\__mermap_format_angle:n{\l__mermap_temp_tl}}
}
{
- \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:N \l_tmpa_fp}
+ \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:N \l__mermap_tmpa_fp}
\__mermap_format_north:n {\__mermap_format_angle:n{\l__mermap_temp_tl}}
}
\group_end:
@@ -1580,14 +1633,14 @@
\group_begin:
\IfNoValueF {#1}
{ \keys_set:nn { mermap } {#1} }
- \fp_set:Nn \l_tmpa_fp {#2-360*floor((#2+180)/360)}
- \fp_compare:nNnTF \l_tmpa_fp < 0
+ \fp_set:Nn \l__mermap_tmpa_fp {#2-360*floor((#2+180)/360)}
+ \fp_compare:nNnTF \l__mermap_tmpa_fp < 0
{
- \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:n{-\l_tmpa_fp}}
+ \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:n{-\l__mermap_tmpa_fp}}
\__mermap_format_west:n{\__mermap_format_angle:n{\l__mermap_temp_tl}}
}
{
- \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:N \l_tmpa_fp}
+ \tl_set:Nx \l__mermap_temp_tl {\fp_to_decimal:N \l__mermap_tmpa_fp}
\__mermap_format_east:n {\__mermap_format_angle:n{\l__mermap_temp_tl}}
}
\group_end:
@@ -1608,22 +1661,22 @@
{
\tl_if_empty:nTF {#5}
{
- \fp_set:Nn \l_tmpa_fp {0}
- \fp_set:Nn \l_tmpb_fp {0}
+ \fp_set:Nn \l__mermap_tmpa_fp {0}
+ \fp_set:Nn \l__mermap_tmpb_fp {0}
}
{
- \fp_set:Nn \l_tmpa_fp {#3*(#5)}
+ \fp_set:Nn \l__mermap_tmpa_fp {#3*(#5)}
\tl_if_empty:nTF {#6}
{
- \fp_set:Nn \l_tmpb_fp {#4*(#5)}
+ \fp_set:Nn \l__mermap_tmpb_fp {#4*(#5)}
}
{
- \fp_set:Nn \l_tmpb_fp {#4*(#6)}
+ \fp_set:Nn \l__mermap_tmpb_fp {#4*(#6)}
}
}
\tl_set:Nx \l__mermap_scalebar_at_tl
{
- {([xshift=\fp_to_dim:N\l_tmpa_fp,yshift=\fp_to_dim:N\l_tmpb_fp]mrcmap.#1)}
+ {([xshift=\fp_to_dim:N\l__mermap_tmpa_fp,yshift=\fp_to_dim:N\l__mermap_tmpb_fp]mrcmap.#1)}
}
\tl_set:Nn \l__mermap_scalebar_placement_tl {#2}
}
@@ -1691,60 +1744,56 @@
\begin{scope}[shift=(mrcscalebar.south~west)]
\__mermap_tikz_path_begin:n { fill=black, mrcscalebarmajor }
\pgfseteorule
- \fp_set:Nn \l_tmpa_fp {\l__mermap_scalebar_width_fp/\l__mermap_scale_fp} % Breite
+ \fp_set:Nn \l__mermap_tmpa_fp {\l__mermap_scalebar_width_fp/\l__mermap_scale_fp} % Breite
\pgfpathrectangle{\pgfpoint{0pt}{0pt}}
- {\pgfpoint{\fp_to_dim:N\l_tmpa_fp}{\l__mermap_scalebar_height_dim}}
+ {\pgfpoint{\fp_to_dim:N\l__mermap_tmpa_fp}{\l__mermap_scalebar_height_dim}}
\bool_if:NF \l__mermap_scalebar_transparent_bool
{
\__mermap_tikz_path_end:
\__mermap_tikz_path_begin:n { fill=white, mrcscalebarminor }
- \fp_set:Nn \l_tmpa_fp {\l__mermap_scalebar_width_fp/\l__mermap_scale_fp}
+ \fp_set:Nn \l__mermap_tmpa_fp {\l__mermap_scalebar_width_fp/\l__mermap_scale_fp}
}
- \fp_set:Nn \l_tmpb_fp {\l_tmpa_fp/\l__mermap_scalebar_partitions_int}
+ \fp_set:Nn \l__mermap_tmpb_fp {\l__mermap_tmpa_fp/\l__mermap_scalebar_partitions_int}
\bool_if:NTF \l__mermap_scalebar_double_bool
{
- \int_set:Nn \l_tmpa_int {1}
- \dim_set:Nn \l_tmpb_dim {\l__mermap_scalebar_height_dim/2}
- \dim_set:Nn \l_tmpa_dim {0.2pt-\l_tmpb_dim}
+ \dim_set:Nn \l__mermap_tmpb_dim {\l__mermap_scalebar_height_dim/2}
+ \dim_set:Nn \l__mermap_tmpa_dim {0.2pt-\l__mermap_tmpb_dim}
\int_compare:nNnTF \l__mermap_scalebar_partitions_int = 1
{
- \pgfpathrectangle{\pgfpoint{0.2pt}{\l_tmpb_dim}}
- {\pgfpoint{\fp_to_dim:n{\l_tmpb_fp-0.4pt}}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{0.2pt}{\l__mermap_tmpb_dim}}
+ {\pgfpoint{\fp_to_dim:n{\l__mermap_tmpb_fp-0.4pt}}{\l__mermap_tmpa_dim}}
}
{
- \pgfpathrectangle{\pgfpoint{0.2pt}{\l_tmpb_dim}}
- {\pgfpoint{\fp_to_dim:n{\l_tmpb_fp-0.2pt}}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{0.2pt}{\l__mermap_tmpb_dim}}
+ {\pgfpoint{\fp_to_dim:n{\l__mermap_tmpb_fp-0.2pt}}{\l__mermap_tmpa_dim}}
}
- \int_while_do:nNnn \l_tmpa_int < \l__mermap_scalebar_partitions_int
+ \int_step_inline:nn { \l__mermap_scalebar_partitions_int-1 }
{
- \dim_set:Nn \l_tmpa_dim {-\l_tmpa_dim}
- \int_compare:nNnTF {\l_tmpa_int+1} = \l__mermap_scalebar_partitions_int
+ \dim_set:Nn \l__mermap_tmpa_dim {-\l__mermap_tmpa_dim}
+ \int_compare:nNnTF {##1+1} = \l__mermap_scalebar_partitions_int
{
- \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{\l_tmpa_int*\l_tmpb_fp}}{\l_tmpb_dim}}
- {\pgfpoint{\fp_to_dim:n{\l_tmpb_fp-0.2pt}}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{##1*\l__mermap_tmpb_fp}}{\l__mermap_tmpb_dim}}
+ {\pgfpoint{\fp_to_dim:n{\l__mermap_tmpb_fp-0.2pt}}{\l__mermap_tmpa_dim}}
}
{
- \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{\l_tmpa_int*\l_tmpb_fp}}{\l_tmpb_dim}}
- {\pgfpoint{\fp_to_dim:N\l_tmpb_fp}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{##1*\l__mermap_tmpb_fp}}{\l__mermap_tmpb_dim}}
+ {\pgfpoint{\fp_to_dim:N\l__mermap_tmpb_fp}{\l__mermap_tmpa_dim}}
}
- \int_incr:N \l_tmpa_int
}
}
{
- \int_set:Nn \l_tmpa_int {1}
- \dim_set:Nn \l_tmpa_dim {\l__mermap_scalebar_height_dim-0.4pt}
- \int_while_do:nNnn \l_tmpa_int < \l__mermap_scalebar_partitions_int
+ \dim_set:Nn \l__mermap_tmpa_dim {\l__mermap_scalebar_height_dim-0.4pt}
+ \int_step_inline:nnnn { 1 }{ 2 }{ \l__mermap_scalebar_partitions_int-1 }
{
- \int_compare:nNnTF {\l_tmpa_int+1} = \l__mermap_scalebar_partitions_int
+ \int_compare:nNnTF {##1+1} = \l__mermap_scalebar_partitions_int
{
- \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{\l_tmpa_int*\l_tmpb_fp}}{0.2pt}}
- {\pgfpoint{\fp_to_dim:n{\l_tmpb_fp-0.2pt}}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{##1*\l__mermap_tmpb_fp}}{0.2pt}}
+ {\pgfpoint{\fp_to_dim:n{\l__mermap_tmpb_fp-0.2pt}}{\l__mermap_tmpa_dim}}
}
{
- \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{\l_tmpa_int*\l_tmpb_fp}}{0.2pt}}
- {\pgfpoint{\fp_to_dim:N\l_tmpb_fp}{\l_tmpa_dim}}
+ \pgfpathrectangle{\pgfpoint{\fp_to_dim:n{##1*\l__mermap_tmpb_fp}}{0.2pt}}
+ {\pgfpoint{\fp_to_dim:N\l__mermap_tmpb_fp}{\l__mermap_tmpa_dim}}
}
- \int_add:Nn \l_tmpa_int {2}
}
}
\__mermap_tikz_path_end:
@@ -2032,53 +2081,53 @@
\__mermap_new_marker_type:nn {pin}
{
- \tl_set:Nx \l_tmpa_tl {\fp_to_dim:N \l__mermap_marker_distance_fp}
+ \tl_set:Nx \l__mermap_tmpa_tl {\fp_to_dim:N \l__mermap_marker_distance_fp}
\path[fill=mrcmarkerfill,draw=none,fill~opacity=0.7]
- (0,0) -- (0.1,\l_tmpa_tl) -- (-0.1,\l_tmpa_tl) -- cycle;
+ (0,0) -- (0.1,\l__mermap_tmpa_tl) -- (-0.1,\l__mermap_tmpa_tl) -- cycle;
\node[fill=white,draw=none,text=mrcmarkertext,
above,font=\mrcmarkerfont,inner~sep=0.5mm,align=center,
line~width=0mm,xshift=\mrcmarkershift,
fill~opacity=0.7,text~opacity=1,xshift=0mm,mrcnodestyle,mrchyperpath]
- (pin_node) at (0,\l_tmpa_tl) {\mrcmarkercontents};
+ (pin_node) at (0,\l__mermap_tmpa_tl) {\mrcmarkercontents};
\path[draw=mrcmarkerdraw,fill=none,line~join=round,mrcpathstyle]
- (0,0) -- (0.1,\l_tmpa_tl) -- (pin_node.south~east) -- (pin_node.north~east)
+ (0,0) -- (0.1,\l__mermap_tmpa_tl) -- (pin_node.south~east) -- (pin_node.north~east)
-- (pin_node.north~west) -- (pin_node.south~west)
- -- (-0.1,\l_tmpa_tl) [line~join=bevel] -- cycle;
+ -- (-0.1,\l__mermap_tmpa_tl) [line~join=bevel] -- cycle;
}
\__mermap_new_marker_type:nn {pinflip}
{
- \tl_set:Nx \l_tmpa_tl {\fp_to_dim:N \l__mermap_marker_distance_fp}
+ \tl_set:Nx \l__mermap_tmpa_tl {\fp_to_dim:N \l__mermap_marker_distance_fp}
\path[fill=mrcmarkerfill,draw=none,fill~opacity=0.7]
- (0,0) -- (-0.1,-\l_tmpa_tl) -- (0.1,-\l_tmpa_tl) -- cycle;
+ (0,0) -- (-0.1,-\l__mermap_tmpa_tl) -- (0.1,-\l__mermap_tmpa_tl) -- cycle;
\node[fill=white,draw=none,text=mrcmarkertext,
below,font=\mrcmarkerfont,inner~sep=0.5mm,align=center,
line~width=0mm,xshift=\mrcmarkershift,
fill~opacity=0.7,text~opacity=1,xshift=0mm,mrcnodestyle,mrchyperpath]
- (pin_node) at (0,-\l_tmpa_tl) {\mrcmarkercontents};
+ (pin_node) at (0,-\l__mermap_tmpa_tl) {\mrcmarkercontents};
\path[draw=mrcmarkerdraw,fill=none,line~join=round,mrcpathstyle]
- (0,0) -- (-0.1,-\l_tmpa_tl) -- (pin_node.north~west) -- (pin_node.south~west)
+ (0,0) -- (-0.1,-\l__mermap_tmpa_tl) -- (pin_node.north~west) -- (pin_node.south~west)
-- (pin_node.south~east) -- (pin_node.north~east)
- -- (0.1,-\l_tmpa_tl) [line~join=bevel] -- cycle;
+ -- (0.1,-\l__mermap_tmpa_tl) [line~join=bevel] -- cycle;
}
\cs_new_nopar:Npn \__mermap_tikz_drop_path:n #1
{
- \tl_set:Nn \l_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
- \tl_set:Nn \l_tmpb_tl {\fp_to_dim:n{\l__mermap_marker_radius_fp*0.552}}
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
+ \tl_set:Nn \l__mermap_tmpb_tl {\fp_to_dim:n{\l__mermap_marker_radius_fp*0.552}}
\__mermap_tikz_path_begin:n
{
line~join=bevel,draw=mrcmarkerdraw,fill=mrcmarkerfill,mrcpathstyle,mrchyperpath
}
\pgfpathmoveto{\pgfpoint{0pt}{\fp_to_dim:n{-2*\l__mermap_marker_radius_fp-\l__mermap_marker_shift_fp}}}
- \pgfpathcurveto{\pgfpoint{\l_tmpb_tl}{-\l_tmpa_tl}}{\pgfpoint{\l_tmpa_tl}{-\l_tmpb_tl}}
- {\pgfpoint{\l_tmpa_tl}{0pt}}
- \pgfpathcurveto{\pgfpoint{\l_tmpa_tl}{\l_tmpb_tl}}{\pgfpoint{\l_tmpb_tl}{\l_tmpa_tl}}
- {\pgfpoint{0pt}{\l_tmpa_tl}}
- \pgfpathcurveto{\pgfpoint{-\l_tmpb_tl}{\l_tmpa_tl}}{\pgfpoint{-\l_tmpa_tl}{\l_tmpb_tl}}
- {\pgfpoint{-\l_tmpa_tl}{0pt}}
- \pgfpathcurveto{\pgfpoint{-\l_tmpa_tl}{-\l_tmpb_tl}}{\pgfpoint{-\l_tmpb_tl}{-\l_tmpa_tl}}
+ \pgfpathcurveto{\pgfpoint{\l__mermap_tmpb_tl}{-\l__mermap_tmpa_tl}}{\pgfpoint{\l__mermap_tmpa_tl}{-\l__mermap_tmpb_tl}}
+ {\pgfpoint{\l__mermap_tmpa_tl}{0pt}}
+ \pgfpathcurveto{\pgfpoint{\l__mermap_tmpa_tl}{\l__mermap_tmpb_tl}}{\pgfpoint{\l__mermap_tmpb_tl}{\l__mermap_tmpa_tl}}
+ {\pgfpoint{0pt}{\l__mermap_tmpa_tl}}
+ \pgfpathcurveto{\pgfpoint{-\l__mermap_tmpb_tl}{\l__mermap_tmpa_tl}}{\pgfpoint{-\l__mermap_tmpa_tl}{\l__mermap_tmpb_tl}}
+ {\pgfpoint{-\l__mermap_tmpa_tl}{0pt}}
+ \pgfpathcurveto{\pgfpoint{-\l__mermap_tmpa_tl}{-\l__mermap_tmpb_tl}}{\pgfpoint{-\l__mermap_tmpb_tl}{-\l__mermap_tmpa_tl}}
{\pgfpoint{0pt}{\fp_to_dim:n{-2*\l__mermap_marker_radius_fp-\l__mermap_marker_shift_fp}}}
\pgfpathclose
#1
@@ -2089,14 +2138,14 @@
{
\node[circle,inner~sep=0pt,font=\mrcmarkerfont,text=mrcmarkertext,mrcnodestyle]
{
- \hbox_set:Nn \l_tmpa_box {\mrcmarkercontents}
- \fp_compare:nNnT {\box_wd:N \l_tmpa_box} > {1.5*\l__mermap_marker_radius_fp}
+ \hbox_set:Nn \l__mermap_tmpa_box {\mrcmarkercontents}
+ \fp_compare:nNnT {\box_wd:N \l__mermap_tmpa_box} > {1.5*\l__mermap_marker_radius_fp}
{
- \box_resize_to_wd_and_ht:Nnn \l_tmpa_box
+ \box_resize_to_wd_and_ht:Nnn \l__mermap_tmpa_box
{\fp_to_dim:n {1.5*\l__mermap_marker_radius_fp}}
- {\box_ht:N \l_tmpa_box}
+ {\box_ht:N \l__mermap_tmpa_box}
}
- \box_use_drop:N \l_tmpa_box
+ \box_use_drop:N \l__mermap_tmpa_box
};
}
@@ -2153,22 +2202,22 @@
\__mermap_new_marker_type:nn {ringx}
{
- \tl_set:Nn \l_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
\path[draw=mrcmarkerdraw,very~thin]
- (45 \c_colon_str \l_tmpa_tl)--(225\c_colon_str \l_tmpa_tl)
- (135\c_colon_str \l_tmpa_tl)--(315\c_colon_str \l_tmpa_tl);
+ (45 \c_colon_str \l__mermap_tmpa_tl)--(225\c_colon_str \l__mermap_tmpa_tl)
+ (135\c_colon_str \l__mermap_tmpa_tl)--(315\c_colon_str \l__mermap_tmpa_tl);
\path[draw=mrcmarkerdraw,fill=mrcmarkerfill,mrcpathstyle,mrchyperpath,even~odd~rule]
- circle (\l_tmpa_tl) circle (\fp_to_dim:N\l__mermap_marker_inner_radius_fp);
+ circle (\l__mermap_tmpa_tl) circle (\fp_to_dim:N\l__mermap_marker_inner_radius_fp);
}
\__mermap_new_marker_type:nn {markx}
{
- \tl_set:Nn \l_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
+ \tl_set:Nn \l__mermap_tmpa_tl {\fp_to_dim:N\l__mermap_marker_radius_fp}
\path[line~join=bevel,draw=mrcmarkerdraw,fill=mrcmarkerfill,mrcpathstyle,mrchyperpath]
- (0,0) -- (35 \c_colon_str \l_tmpa_tl) -- (55 \c_colon_str \l_tmpa_tl) -- cycle
- (0,0) -- (125 \c_colon_str \l_tmpa_tl) -- (145 \c_colon_str \l_tmpa_tl) -- cycle
- (0,0) -- (215 \c_colon_str \l_tmpa_tl) -- (235 \c_colon_str \l_tmpa_tl) -- cycle
- (0,0) -- (305 \c_colon_str \l_tmpa_tl) -- (325 \c_colon_str \l_tmpa_tl) -- cycle;
+ (0,0) -- (35 \c_colon_str \l__mermap_tmpa_tl) -- (55 \c_colon_str \l__mermap_tmpa_tl) -- cycle
+ (0,0) -- (125 \c_colon_str \l__mermap_tmpa_tl) -- (145 \c_colon_str \l__mermap_tmpa_tl) -- cycle
+ (0,0) -- (215 \c_colon_str \l__mermap_tmpa_tl) -- (235 \c_colon_str \l__mermap_tmpa_tl) -- cycle
+ (0,0) -- (305 \c_colon_str \l__mermap_tmpa_tl) -- (325 \c_colon_str \l__mermap_tmpa_tl) -- cycle;
}
@@ -2269,12 +2318,21 @@
\fp_new:N \l__mermap_b_x_fp
\fp_new:N \l__mermap_b_y_fp
\fp_new:N \l__mermap_b_z_fp
+\fp_new:N \l__mermap_alpha_fp
\fp_new:N \l__mermap_delta_lambda_fp
\fp_new:N \l__mermap_delta_phi_fp
+\fp_new:N \l__mermap_n_x_fp
+\fp_new:N \l__mermap_n_y_fp
+\fp_new:N \l__mermap_n_z_fp
\fp_new:N \l__mermap_psi_fp
+\fp_new:N \l__mermap_sin_psi_fp
+\fp_new:N \l__mermap_t_fp
+\fp_new:N \l__mermap_t_psi_fp
\fp_new:N \l__mermap_t_x_fp
\fp_new:N \l__mermap_t_y_fp
\fp_new:N \l__mermap_t_z_fp
+\fp_const:Nn \c__mermap_linearization_threshold_fp { 10e-9 }
+\bool_new:N \l__mermap_linearization_bool
\int_new:N \l__mermap_samples_int
@@ -2309,41 +2367,86 @@
}
-\cs_new:Npn \__mermap_draw_orthodrome:nnnnn #1#2#3#4#5
+\cs_new_protected:Npn \__mermap_draw_orthodrome:nnnnn #1#2#3#4#5
{
\__mermap_tikz_path_begin:n { draw,mermap_every_route,#1 }
- \fp_set:Nn \l__mermap_a_x_fp { cosd(#3)*cosd(#2) }
- \fp_set:Nn \l__mermap_a_y_fp { sind(#3)*cosd(#2) }
- \fp_set:Nn \l__mermap_a_z_fp { sind(#2) }
- \fp_set:Nn \l__mermap_b_x_fp { cosd(#5)*cosd(#4) }
- \fp_set:Nn \l__mermap_b_y_fp { sind(#5)*cosd(#4) }
- \fp_set:Nn \l__mermap_b_z_fp { sind(#4) }
-
- \fp_set:Nn \l_tmpa_fp { sind(#2)*sind(#4) + cosd(#2)*cosd(#4)*cosd(#5-(#3)) }
- \fp_set:Nn \l__mermap_psi_fp { acosd(\l_tmpa_fp) }
- \fp_set:Nn \l_tmpb_fp { sind(\l__mermap_psi_fp) }
-
- \fp_set:Nn \l__mermap_b_x_fp { (\l__mermap_b_x_fp - \l_tmpa_fp*\l__mermap_a_x_fp)/\l_tmpb_fp }
- \fp_set:Nn \l__mermap_b_y_fp { (\l__mermap_b_y_fp - \l_tmpa_fp*\l__mermap_a_y_fp)/\l_tmpb_fp }
- \fp_set:Nn \l__mermap_b_z_fp { (\l__mermap_b_z_fp - \l_tmpa_fp*\l__mermap_a_z_fp)/\l_tmpb_fp }
-
- \__mermap_pgf_moveto_point:nn {#2}{#3}
- \int_set:Nn \l_tmpa_int {1}
- \int_until_do:nNnn \l_tmpa_int > \l__mermap_samples_int
- {
- \fp_set:Nn \l_tmpa_fp { \l__mermap_psi_fp*\l_tmpa_int/\l__mermap_samples_int }
- \fp_set:Nn \l_tmpb_fp { sind(\l_tmpa_fp) }
- \fp_set:Nn \l_tmpa_fp { cosd(\l_tmpa_fp) }
- \fp_set:Nn \l__mermap_t_x_fp { \l_tmpa_fp*\l__mermap_a_x_fp + \l_tmpb_fp*\l__mermap_b_x_fp }
- \fp_set:Nn \l__mermap_t_y_fp { \l_tmpa_fp*\l__mermap_a_y_fp + \l_tmpb_fp*\l__mermap_b_y_fp }
- \fp_set:Nn \l__mermap_t_z_fp { \l_tmpa_fp*\l__mermap_a_z_fp + \l_tmpb_fp*\l__mermap_b_z_fp }
- \pgfpathlineto{\__mermap_unit_sphere_point:nnn {\l__mermap_t_x_fp}{\l__mermap_t_y_fp}{\l__mermap_t_z_fp}}
- \int_incr:N \l_tmpa_int
+ \__mermap_setup_orthodrome:nnnn { #2 }{ #3 }{ #4 }{ #5 }
+ \__mermap_pgf_moveto_point:nn { #2 }{ #3 }
+ \int_step_inline:nn { \l__mermap_samples_int }
+ {
+ \__mermap_point_on_orthodrome:n { ##1/\l__mermap_samples_int }
+ \__mermap_pgf_lineto_point:nn{ \l__mermap_cs_lat_fp }{ \l__mermap_cs_lon_fp }
}
\__mermap_tikz_path_end:
}
+\cs_new_protected:Npn \__mermap_setup_orthodrome:nnnn #1#2#3#4
+ {
+ \fp_set:Nn \l__mermap_a_x_fp { cosd(#2)*cosd(#1) }
+ \fp_set:Nn \l__mermap_a_y_fp { sind(#2)*cosd(#1) }
+ \fp_set:Nn \l__mermap_a_z_fp { sind(#1) }
+
+ \fp_set:Nn \l__mermap_b_x_fp { cosd(#4)*cosd(#3) }
+ \fp_set:Nn \l__mermap_b_y_fp { sind(#4)*cosd(#3) }
+ \fp_set:Nn \l__mermap_b_z_fp { sind(#3) }
+
+ \fp_set:Nn \l__mermap_psi_fp { acosd( sind(#1)*sind(#3) + cosd(#1)*cosd(#3)*cosd(#4-(#2)) ) }
+ \fp_set:Nn \l__mermap_sin_psi_fp { sind(\l__mermap_psi_fp) }
+
+ \bool_set:Nn \l__mermap_linearization_bool { \fp_compare_p:nNn \l__mermap_psi_fp < \c__mermap_linearization_threshold_fp }
+ }
+
+
+\cs_new_protected:Npn \__mermap_point_on_orthodrome:n #1
+ {
+ \fp_set:Nn \l__mermap_t_fp { #1 }
+
+ \bool_if:NTF \l__mermap_linearization_bool
+ {
+ \fp_set:Nn \l__mermap_tmpa_fp { 1 - \l__mermap_t_fp }
+ \fp_set_eq:NN \l__mermap_tmpb_fp \l__mermap_t_fp
+ }
+ {
+ \fp_set:Nn \l__mermap_t_psi_fp { \l__mermap_t_fp * \l__mermap_psi_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { sind( \l__mermap_psi_fp - \l__mermap_t_psi_fp ) / \l__mermap_sin_psi_fp }
+ \fp_set:Nn \l__mermap_tmpb_fp { sind( \l__mermap_t_psi_fp ) / \l__mermap_sin_psi_fp }
+ }
+
+ \fp_set:Nn \l__mermap_t_x_fp { \l__mermap_tmpa_fp*\l__mermap_a_x_fp + \l__mermap_tmpb_fp*\l__mermap_b_x_fp }
+ \fp_set:Nn \l__mermap_t_y_fp { \l__mermap_tmpa_fp*\l__mermap_a_y_fp + \l__mermap_tmpb_fp*\l__mermap_b_y_fp }
+ \fp_set:Nn \l__mermap_t_z_fp { \l__mermap_tmpa_fp*\l__mermap_a_z_fp + \l__mermap_tmpb_fp*\l__mermap_b_z_fp }
+
+ \fp_set:Nn \l__mermap_cs_lat_fp { asind(\l__mermap_t_z_fp) }
+ \fp_set:Nn \l__mermap_cs_lon_fp { sign(\l__mermap_t_y_fp)*acosd(\l__mermap_t_x_fp/sqrt(\l__mermap_t_x_fp^2+\l__mermap_t_y_fp^2)) }
+ }
+
+
+\cs_new_protected:Npn \__mermap_angle_at_orthodrome:
+ {
+ \bool_if:NTF \l__mermap_linearization_bool
+ {
+ \fp_set:Nn \l__mermap_alpha_fp { 90 }
+ }
+ {
+ \fp_set:Nn \l__mermap_tmpa_fp { cosd( \l__mermap_psi_fp - \l__mermap_t_psi_fp ) }
+ \fp_set:Nn \l__mermap_tmpb_fp { cosd( \l__mermap_t_psi_fp ) }
+ \fp_set:Nn \l__mermap_n_x_fp { \l__mermap_tmpb_fp*\l__mermap_b_x_fp - \l__mermap_tmpa_fp*\l__mermap_a_x_fp }
+ \fp_set:Nn \l__mermap_n_y_fp { \l__mermap_tmpb_fp*\l__mermap_b_y_fp - \l__mermap_tmpa_fp*\l__mermap_a_y_fp }
+ \fp_set:Nn \l__mermap_n_z_fp { \l__mermap_tmpb_fp*\l__mermap_b_z_fp - \l__mermap_tmpa_fp*\l__mermap_a_z_fp }
+ \fp_set:Nn \l__mermap_tmpa_fp { sqrt( \l__mermap_n_x_fp^2 + \l__mermap_n_y_fp^2 + \l__mermap_n_z_fp^2 ) }
+ \fp_set:Nn \l__mermap_n_x_fp { \l__mermap_n_x_fp / \l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_n_y_fp { \l__mermap_n_y_fp / \l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_n_z_fp { \l__mermap_n_z_fp / \l__mermap_tmpa_fp }
+ \fp_set:Nn \l__mermap_alpha_fp { acosd( \l__mermap_n_y_fp*cosd(\l__mermap_cs_lon_fp) - \l__mermap_n_x_fp*sind(\l__mermap_cs_lon_fp) ) }
+ \fp_compare:nNnT \l__mermap_n_z_fp < 0
+ {
+ \fp_set:Nn \l__mermap_alpha_fp { 360 - \l__mermap_alpha_fp }
+ }
+ }
+ }
+
+
\NewDocumentCommand \mrcdraworthodrome { O{} mmmm }
{
\__mermap_draw_orthodrome:nnnnn {#1}{#2}{#3}{#4}{#5}
@@ -2392,11 +2495,11 @@
\fp_set:Nn \l__mermap_delta_lambda_fp {(#4-(#2))/180*pi}
\fp_compare:nNnTF {abs(\l__mermap_delta_phi_fp)} < {1e-5}
{
- \fp_set:Nn \l_tmpa_fp { tand(#1) }
- \fp_set:Nn \l_tmpb_fp { \l__mermap_delta_lambda_fp*cosd(#1)
- /( 1 + (\l_tmpa_fp + (1+2*\l_tmpa_fp*\l_tmpa_fp)*\l__mermap_delta_phi_fp/3)*\l__mermap_delta_phi_fp/2 ) }
+ \fp_set:Nn \l__mermap_tmpa_fp { tand(#1) }
+ \fp_set:Nn \l__mermap_tmpb_fp { \l__mermap_delta_lambda_fp*cosd(#1)
+ /( 1 + (\l__mermap_tmpa_fp + (1+2*\l__mermap_tmpa_fp*\l__mermap_tmpa_fp)*\l__mermap_delta_phi_fp/3)*\l__mermap_delta_phi_fp/2 ) }
\fp_set:Nn \l__mermap_result_fp {
- sqrt( \l__mermap_delta_phi_fp*\l__mermap_delta_phi_fp + \l_tmpb_fp*\l_tmpb_fp ) }
+ sqrt( \l__mermap_delta_phi_fp*\l__mermap_delta_phi_fp + \l__mermap_tmpb_fp*\l__mermap_tmpb_fp ) }
}
{
\fp_set:Nn \l__mermap_result_fp { abs(\l__mermap_delta_phi_fp)
@@ -2422,11 +2525,314 @@
\NewDocumentCommand \mrcNPprettyloxodistance { mm }
{
- \__mermap_loxo_distance:nnnn {\mrcNPlat{#1}}{\mrcNPlon{#1}}{\mrcNPlat{#2}}{\mrcNPlon{#2}}
+ \__mermap_loxo_distance:nnnn { \mrcNPlat{#1} }{ \mrcNPlon{#1} }{ \mrcNPlat{#2} }{ \mrcNPlon{#2} }
\__mermap_pretty_distance:n { \l__mermap_result_fp }
}
+\cs_new_protected:Npn \__mermap_orthodrome_point:nnn #1#2#3
+ {
+ \__mermap_point_on_orthodrome:n { #3 }
+ \__mermap_set_named_position { #1 }{ \l__mermap_cs_lat_fp }{ \l__mermap_cs_lon_fp }
+ \IfNoValueF { #2 }
+ {
+ \__mermap_angle_at_orthodrome:
+ \cs_set:Npe #2 { \fp_to_decimal:N \l__mermap_alpha_fp }
+ }
+ }
+
+\NewDocumentCommand \mrcNPfromOrthoFraction { mo mm mm m }
+ {
+ \__mermap_setup_orthodrome:nnnn { #3 }{ #4 }{ #5 }{ #6 }
+ \__mermap_orthodrome_point:nnn { #1 }{ #2 }{ #7 }
+ }
+
+\NewDocumentCommand \mrcNPfromOrthoFractionNamed { mo m m m }
+ {
+ \__mermap_setup_orthodrome:nnnn { \mrcNPlat{#3} }{ \mrcNPlon{#3} }{ \mrcNPlat{#4} }{ \mrcNPlon{#4} }
+ \__mermap_orthodrome_point:nnn { #1 }{ #2 }{ #5 }
+ }
+
+\NewDocumentCommand \mrcNPfromOrthoDistance { mo mm mm m }
+ {
+ \__mermap_ortho_distance:nnnn { #3 }{ #4 }{ #5 }{ #6 }
+ \fp_compare:nNnTF \l__mermap_result_fp > { 0.001 }
+ {
+ \__mermap_setup_orthodrome:nnnn { #3 }{ #4 }{ #5 }{ #6 }
+ \__mermap_orthodrome_point:nnn { #1 }{ #2 }{ #7 / \l__mermap_result_fp }
+ }
+ {
+ \__mermap_set_named_position { #1 }{ #3 }{ #4 }
+ \IfNoValueF { #2 }
+ {
+ \cs_set:Npn #2 { 90 }
+ }
+ }
+ }
+
+\NewDocumentCommand \mrcNPfromOrthoDistanceNamed { mo m m m }
+ {
+ \__mermap_ortho_distance:nnnn { \mrcNPlat{#3} }{ \mrcNPlon{#3} }{ \mrcNPlat{#4} }{ \mrcNPlon{#4} }
+ \fp_compare:nNnTF \l__mermap_result_fp > { 0.001 }
+ {
+ \__mermap_setup_orthodrome:nnnn { \mrcNPlat{#3} }{ \mrcNPlon{#3} }{ \mrcNPlat{#4} }{ \mrcNPlon{#4} }
+ \__mermap_orthodrome_point:nnn { #1 }{ #2 }{ #5 / \l__mermap_result_fp }
+ }
+ {
+ \__mermap_set_named_position { #1 }{ \mrcNPlat{#3} }{ \mrcNPlon{#3} }
+ \IfNoValueF { #2 }
+ {
+ \cs_set:Npn #2 { 90 }
+ }
+ }
+ }
+
+
+%---- animations ---------------------------------------------------------------
+
+\bool_new:N \l__mermap_anim_drop_first_frame_bool
+\bool_new:N \l__mermap_anim_drop_last_frame_bool
+
+\fp_new:N \l__mermap_anim_a_lat_fp
+\fp_new:N \l__mermap_anim_a_lon_fp
+\fp_new:N \l__mermap_anim_a_scaledenom_fp
+\fp_new:N \l__mermap_anim_a_time_fp
+\fp_new:N \l__mermap_anim_b_lat_fp
+\fp_new:N \l__mermap_anim_b_lon_fp
+\fp_new:N \l__mermap_anim_b_scaledenom_fp
+\fp_new:N \l__mermap_anim_b_time_fp
+\fp_new:N \l_mermap_anim_angle_fp
+\fp_new:N \l_mermap_anim_lat_fp
+\fp_new:N \l_mermap_anim_lon_fp
+\fp_new:N \l_mermap_anim_scaledenom_fp
+\fp_new:N \l_mermap_anim_time_fp
+
+\int_new:N \l__mermap_anim_final_frame_int
+\int_new:N \l__mermap_anim_frames_int
+\int_new:N \l__mermap_anim_start_frame_int
+\int_new:N \l_mermap_anim_frame_int
+
+\seq_new:N \l__mermap_anim_scaledenom_seq
+
+\tl_new:N \l__mermap_anim_timescale_tl
+\tl_new:N \l__mermap_anim_timewarp_tl
+
+
+\NewExpandableDocumentCommand \mrcTimewarpIdentity { m }
+ {
+ #1
+ }
+
+\NewExpandableDocumentCommand \mrcTimewarpSlowStart { m m }
+ {
+ (#2)^(#1)
+ }
+
+\NewExpandableDocumentCommand \mrcTimewarpSlowFinal { m m }
+ {
+ 1 - (1-#2)^(#1)
+ }
+
+\NewExpandableDocumentCommand \mrcTimewarpSlowStartFinal { m m }
+ {
+ %1 - (1-#2)^(#1)
+ #2 <= 0.5
+ ? (2*(#2))^(#1) / 2
+ : 1 - (2-2*(#2))^(#1) / 2
+ }
+
+
+\NewDocumentEnvironment { mrcAnimation }{ m +b }
+ {
+ \keys_set:nn { mermap/anim }{ #1 }
+
+ \__mermap_anim_autocorrect_scaledenom_seq:
+ \int_compare:nNnT \l__mermap_anim_frames_int < 2
+ {
+ \int_set:Nn \l__mermap_anim_frames_int { 2 }
+ }
+ \bool_if:NTF \l__mermap_anim_drop_first_frame_bool
+ {
+ \int_set:Nn \l__mermap_anim_start_frame_int { 2 }
+ }
+ {
+ \int_set:Nn \l__mermap_anim_start_frame_int { 1 }
+ }
+ \bool_if:NTF \l__mermap_anim_drop_last_frame_bool
+ {
+ \int_set:Nn \l__mermap_anim_final_frame_int { \l__mermap_anim_frames_int-1 }
+ }
+ {
+ \int_set:Nn \l__mermap_anim_final_frame_int { \l__mermap_anim_frames_int }
+ }
+
+ \__mermap_setup_orthodrome:nnnn { \l__mermap_anim_a_lat_fp }{ \l__mermap_anim_a_lon_fp }
+ { \l__mermap_anim_b_lat_fp }{ \l__mermap_anim_b_lon_fp }
+
+ \__mermap_anim_pop_time_scale:NN \l__mermap_anim_a_time_fp \l__mermap_anim_a_scaledenom_fp
+ \__mermap_anim_pop_time_scale:NN \l__mermap_anim_b_time_fp \l__mermap_anim_b_scaledenom_fp
+
+ \int_step_variable:nnNn { \l__mermap_anim_start_frame_int }{ \l__mermap_anim_final_frame_int } \l_mermap_anim_frame_int
+ {
+ \fp_set:Nn \l_mermap_anim_time_fp { (\l_mermap_anim_frame_int-1)/(\l__mermap_anim_frames_int-1) }
+ \fp_set:Nn \l_mermap_anim_time_fp { \l__mermap_anim_timewarp_tl { \l_mermap_anim_time_fp } }
+
+ \__mermap_point_on_orthodrome:n { \l_mermap_anim_time_fp }
+ \fp_set_eq:NN \l_mermap_anim_lat_fp \l__mermap_cs_lat_fp
+ \fp_set_eq:NN \l_mermap_anim_lon_fp \l__mermap_cs_lon_fp
+ \__mermap_set_named_position{ AnimNP }{ \l_mermap_anim_lat_fp }{ \l_mermap_anim_lon_fp }
+
+ \__mermap_angle_at_orthodrome:
+ \fp_set_eq:NN \l_mermap_anim_angle_fp \l__mermap_alpha_fp
+
+ \fp_while_do:nNnn \l_mermap_anim_time_fp > \l__mermap_anim_b_time_fp
+ {
+ \fp_set_eq:NN \l__mermap_anim_a_time_fp \l__mermap_anim_b_time_fp
+ \fp_set_eq:NN \l__mermap_anim_a_scaledenom_fp \l__mermap_anim_b_scaledenom_fp
+ \__mermap_anim_pop_time_scale:NN \l__mermap_anim_b_time_fp \l__mermap_anim_b_scaledenom_fp
+ }
+ \fp_set:Nn \l_mermap_anim_scaledenom_fp
+ {
+ round ( exp (
+ ln(\l__mermap_anim_a_scaledenom_fp) +
+ ( ln(\l__mermap_anim_b_scaledenom_fp)-ln(\l__mermap_anim_a_scaledenom_fp) ) *
+ ( \l_mermap_anim_time_fp-\l__mermap_anim_a_time_fp ) / ( \l__mermap_anim_b_time_fp-\l__mermap_anim_a_time_fp )
+ ) )
+ }
+
+ #2
+ }
+ }{}
+
+
+\cs_new_protected:Npn \__mermap_anim_autocorrect_scaledenom_seq:
+ {
+ \seq_get_left:NN \l__mermap_anim_scaledenom_seq \l__mermap_anim_timescale_tl
+ \bool_lazy_any:nTF
+ {
+ { \seq_if_empty_p:N \l__mermap_anim_scaledenom_seq }
+ { \tl_if_empty_p:N \l__mermap_anim_timescale_tl }
+ { \quark_if_no_value_p:N \l__mermap_anim_timescale_tl }
+ }
+ {
+ \seq_set_split:Nnn \l__mermap_anim_scaledenom_seq { - }{ 0/25000 - 1/25000 },
+ }
+ {
+ \fp_compare:nNnF { \__mermap_anim_use_time:o \l__mermap_anim_timescale_tl } = 0
+ {
+ \seq_put_left:Ne \l__mermap_anim_scaledenom_seq { 0 / \__mermap_anim_use_scale:o \l__mermap_anim_timescale_tl }
+ }
+ }
+ \seq_get_right:NNF \l__mermap_anim_scaledenom_seq \l__mermap_anim_timescale_tl
+ {
+ \msg_error:nn{ mercatormap }{ anim-scaledenom-invalid }
+ }
+ \fp_compare:nNnF { \__mermap_anim_use_time:o \l__mermap_anim_timescale_tl } = 1
+ {
+ \seq_put_right:Ne \l__mermap_anim_scaledenom_seq { 1 / \__mermap_anim_use_scale:o \l__mermap_anim_timescale_tl }
+ }
+ \fp_set:Nn \l__mermap_anim_a_time_fp { -1 }
+ \seq_map_inline:Nn \l__mermap_anim_scaledenom_seq
+ {
+ \fp_set:Nn \l__mermap_anim_b_time_fp { \__mermap_anim_use_time:n { ##1 } }
+ \fp_compare:nNnTF \l__mermap_anim_a_time_fp < \l__mermap_anim_b_time_fp
+ {
+ \fp_set_eq:NN \l__mermap_anim_a_time_fp \l__mermap_anim_b_time_fp
+ }
+ {
+ \msg_error:nn{ mercatormap }{ anim-scaledenom-invalid }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \__mermap_anim_pop_time_scale:NN #1#2
+ {
+ \seq_pop_left:NN \l__mermap_anim_scaledenom_seq \l__mermap_anim_timescale_tl
+ \fp_set:Nn #1 { \__mermap_anim_use_time:o \l__mermap_anim_timescale_tl }
+ \fp_set:Nn #2 { \__mermap_anim_use_scale:o \l__mermap_anim_timescale_tl }
+ }
+
+\msg_new:nnnn{ mercatormap }{ anim-scaledenom-invalid }
+ { The~animation~scale~denominator~sequence~is~invalid. }
+ {
+ Check~\seq_use:Nn \l__mermap_anim_scaledenom_seq { ~-~ }~with~the~documentation.~
+ Time~values~are~not~strictly~monotonically~increasing.
+ }
+
+\cs_new_protected_nopar:Npn \__mermap_anim_set_position:w #1 #2 / #3 \q_stop
+ {
+ \fp_set:cn { l__mermap_anim_#1_lat_fp }{ #2 }
+ \fp_set:cn { l__mermap_anim_#1_lon_fp }{ #3 }
+ }
+
+\cs_new_nopar:Npn \__mermap_anim_use_time:w #1 / #2 \q_stop
+ {
+ #1
+ }
+\cs_new_nopar:Npn \__mermap_anim_use_time:n #1
+ {
+ \__mermap_anim_use_time:w #1 \q_stop
+ }
+\cs_generate_variant:Nn \__mermap_anim_use_time:n { o }
+
+\cs_new_nopar:Npn \__mermap_anim_use_scale:w #1 / #2 \q_stop
+ {
+ #2
+ }
+\cs_new_nopar:Npn \__mermap_anim_use_scale:n #1
+ {
+ \__mermap_anim_use_scale:w #1 \q_stop
+ }
+\cs_generate_variant:Nn \__mermap_anim_use_scale:n { o }
+
+\keys_define:nn { mermap/anim }
+ {
+ start-position .code:n = \__mermap_anim_set_position:w { a } #1 \q_stop,
+ final-position .code:n = \__mermap_anim_set_position:w { b } #1 \q_stop,
+ position .meta:n = { start-position = #1, final-position = #1 },
+ named-start-position .code:n =
+ {
+ \fp_set:Nn \l__mermap_anim_a_lat_fp { \mrcNPlat{ #1 } }
+ \fp_set:Nn \l__mermap_anim_a_lon_fp { \mrcNPlon{ #1 } }
+ },
+ named-final-position .code:n =
+ {
+ \fp_set:Nn \l__mermap_anim_b_lat_fp { \mrcNPlat{ #1 } }
+ \fp_set:Nn \l__mermap_anim_b_lon_fp { \mrcNPlon{ #1 } }
+ },
+ named-position .meta:n = { named-start-position = #1, named-final-position = #1 },
+ frames .int_set:N = \l__mermap_anim_frames_int,
+ drop-first-frame .bool_set:N = \l__mermap_anim_drop_first_frame_bool,
+ drop-last-frame .bool_set:N = \l__mermap_anim_drop_last_frame_bool,
+ drop-no-frame .meta:n = { drop-first-frame=false, drop-last-frame=false },
+ scale-denominators .code:n = \seq_set_split:Nnn \l__mermap_anim_scaledenom_seq { - }{ #1 },
+ common-scale-denominator .meta:n = { scale-denominators = 0/#1 - 1/#1 },
+ timewarp .tl_set:N = \l__mermap_anim_timewarp_tl,
+ timewarp-identity .meta:n = { timewarp = \mrcTimewarpIdentity },
+ timewarp-slow-start .meta:n = { timewarp = \mrcTimewarpSlowStart{#1} },
+ timewarp-slow-start .default:n = 2,
+ timewarp-slow-final .meta:n = { timewarp = \mrcTimewarpSlowFinal{#1} },
+ timewarp-slow-final .default:n = 2,
+ timewarp-slow-start-final .meta:n = { timewarp = \mrcTimewarpSlowStartFinal{#1} },
+ timewarp-slow-start-final .default:n = 2,
+ }
+
+\keys_set:nn { mermap/anim }
+ {
+ position = 51.4779 / 0,
+ frames = 20,
+ drop-no-frame,
+ common-scale-denominator = 25000,
+ timewarp-identity,
+ }
+
+\NewExpandableDocumentCommand\mrcAnimFrame{}{\int_to_arabic:n \l_mermap_anim_frame_int}
+\NewExpandableDocumentCommand\mrcAnimTime{}{\fp_to_decimal:N \l_mermap_anim_time_fp}
+\NewExpandableDocumentCommand\mrcAnimScaleDenom{}{\fp_to_decimal:N \l_mermap_anim_scaledenom_fp}
+\NewExpandableDocumentCommand\mrcAnimLatitude{}{\fp_to_decimal:N \l_mermap_anim_lat_fp}
+\NewExpandableDocumentCommand\mrcAnimLongitude{}{\fp_to_decimal:N \l_mermap_anim_lon_fp}
+\NewExpandableDocumentCommand\mrcAnimAngle{}{\fp_to_decimal:N \l_mermap_anim_angle_fp}
+
%---- supplier -----------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/mercatormap/mercatorpy.def b/Master/texmf-dist/tex/latex/mercatormap/mercatorpy.def
index 670d8fca3bd..0df48609bf9 100644
--- a/Master/texmf-dist/tex/latex/mercatormap/mercatorpy.def
+++ b/Master/texmf-dist/tex/latex/mercatormap/mercatorpy.def
@@ -1,19 +1,19 @@
-\begin{filecontents*}[overwrite]{maptiles.texpy}
+\begin{filecontents}[force,noheader,nowarn]{maptiles.texpy}
"""
-The LaTeX package mercatormap - version 1.02 (2020/08/06)
+The LaTeX package mercatormap - version 1.2.0 (2024/08/05)
maptiles.texpy: Python script for map tile download
-------------------------------------------------------------------------------------------
-Copyright (c) 2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+Copyright (c) 2020-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
-------------------------------------------------------------------------------------------
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-05-04 or later.
This work has the LPPL maintenance status `author-maintained'.
@@ -28,7 +28,7 @@ from pathlib import Path
from PIL import Image
-packageversion = '1.02 (2020/08/06)'
+packageversion = '1.2.0 (2024/08/05)'
def gd(x):
@@ -531,5 +531,5 @@ if __name__ == '__main__':
print('No url for download given')
mapdef.save_map(args.definition, tiles_success, merge_success, wms_success)
-\end{filecontents*}
+\end{filecontents}
diff --git a/Master/texmf-dist/tex/latex/mercatormap/mercatorsupplier.def b/Master/texmf-dist/tex/latex/mercatormap/mercatorsupplier.def
index 1bf7866b7aa..a8063f8135a 100644
--- a/Master/texmf-dist/tex/latex/mercatormap/mercatorsupplier.def
+++ b/Master/texmf-dist/tex/latex/mercatormap/mercatorsupplier.def
@@ -1,15 +1,15 @@
-%% The LaTeX package mercatormap - version 1.02 (2020/08/06)
+%% The LaTeX package mercatormap - version 1.2.0 (2024/08/05)
%% mercatorsupplier.def: predefined map supplier list
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2020-2024 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% 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.
%%
@@ -46,7 +46,7 @@
attribution = {
Kartendaten:~\textcopyright\nobreakspace\href{https://openstreetmap.org/copyright}{OpenStreetMap}
\ Mitwirkende,~SRTM\nobreakspace\textbar\nobreakspace
- Kartendarstellung:~\textcopyright\nobreakspace\href{http://opentopomap.org/}{OpenTopoMap}
+ Kartendarstellung:~\textcopyright\nobreakspace\href{https://opentopomap.org/}{OpenTopoMap}
\ (\href{https://creativecommons.org/licenses/by-sa/3.0/}{CC-BY-SA})
},
attribution~print = {
@@ -61,12 +61,12 @@
{
__attribution_topplusopen .meta:nn = {mermap/supply} {
attribution = {
- \textcopyright\nobreakspace\href{http://www.bkg.bund.de}{Bundesamt~f\mrcumlaut{u}r~Kartographie~und~Geod\mrcumlaut{a}sie}\nobreakspace\the\year,
- \ \href{http://sg.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf}{Datenquellen}
+ Kartendarstellung:\nobreakspace\textcopyright\nobreakspace\href{https://www.bkg.bund.de}{BKG\nobreakspace(\the\year)},
+ \ \href{https://sgx.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf}{Datenquellen}
},
attribution~print = {
- \textcopyright\nobreakspace Bundesamt~f\mrcumlaut{u}r~Kartographie~und~Geod\mrcumlaut{a}sie\nobreakspace\the\year,
- \ Datenquellen:~\detokenize{http://sg.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf}
+ \textcopyright\nobreakspace BKG\nobreakspace(\the\year),
+ \ Datenquellen:~\detokenize{https://sgx.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf}
}
}
}
@@ -85,29 +85,121 @@
basename = tiles/tpo_web_grau,
}
-\cs_new:Npn \__mermap_new_supply_source_topplusopen:n #1
+\__mermap_new_supply_source:nn { topplusopen~web~light }
+ {
+ url = {https://sgx.geodatenzentrum.de/wmts_topplus_open/tile/1.0.0/web_light/default/WEBMERCATOR/{z}/{y}/{x}.png},
+ __attribution_topplusopen,
+ basename = tiles/tpo_web_light,
+ }
+
+\__mermap_new_supply_source:nn { topplusopen~web~light~grau }
+ {
+ url = {https://sgx.geodatenzentrum.de/wmts_topplus_open/tile/1.0.0/web_light_grau/default/WEBMERCATOR/{z}/{y}/{x}.png},
+ __attribution_topplusopen,
+ basename = tiles/tpo_web_light_grau,
+ }
+
+
+\cs_new:Npn \__mermap_new_supply_source_topplusopen:nn #1#2
{
\keys_define:nn { mermap/supply/_source }
{
topplusopen~#1 .meta:nn = {mermap/supply}{
- url = {https://sgx.geodatenzentrum.de/wms_topplus_open?service=wms&version=1.3.0&request=GetMap&Layers=#1&STYLES=default&CRS=EPSG:3857&bbox={xmin},{ymin},{xmax},{ymax}&width={width}&height={height}&Format=image/png},
+ url = {https://sgx.geodatenzentrum.de/wms_topplus_open_#2?service=wms&version=1.3.0&request=GetMap&Layers=#1&STYLES=default&CRS=EPSG:3857&bbox={xmin},{ymin},{xmax},{ymax}&width={width}&height={height}&Format=image/png},
__attribution_topplusopen,
basename = tiles/tpo,
},
topplusopen~#1~grau .meta:nn = {mermap/supply}{
- url = {https://sgx.geodatenzentrum.de/wms_topplus_open?service=wms&version=1.3.0&request=GetMap&Layers=#1_grau&STYLES=default&CRS=EPSG:3857&bbox={xmin},{ymin},{xmax},{ymax}&width={width}&height={height}&Format=image/png},
+ url = {https://sgx.geodatenzentrum.de/wms_topplus_open_#2?service=wms&version=1.3.0&request=GetMap&Layers=#1&STYLES=grau&CRS=EPSG:3857&bbox={xmin},{ymin},{xmax},{ymax}&width={width}&height={height}&Format=image/png},
__attribution_topplusopen,
basename = tiles/tpo,
},
}
}
-\__mermap_new_supply_source_topplusopen:n { p5 }
-\__mermap_new_supply_source_topplusopen:n { p10 }
-\__mermap_new_supply_source_topplusopen:n { p17.5 }
-\__mermap_new_supply_source_topplusopen:n { p25 }
-\__mermap_new_supply_source_topplusopen:n { p50 }
-\__mermap_new_supply_source_topplusopen:n { p100 }
-\__mermap_new_supply_source_topplusopen:n { p250 }
+\__mermap_new_supply_source_topplusopen:nn { p5 }{ p5 }
+\__mermap_new_supply_source_topplusopen:nn { p10 }{ p10 }
+\__mermap_new_supply_source_topplusopen:nn { p17.5 }{ p17 }
+\__mermap_new_supply_source_topplusopen:nn { p25 }{ p25 }
+\__mermap_new_supply_source_topplusopen:nn { p50 }{ p50 }
+\__mermap_new_supply_source_topplusopen:nn { p100 }{ p100 }
+\__mermap_new_supply_source_topplusopen:nn { p250 }{ p250 }
+
+
+\keys_define:nn { mermap/supply }
+ {
+ __attribution_thunderforest .meta:nn = {mermap/supply} {
+ attribution = {
+ Maps~\textcopyright\nobreakspace\href{https://www.thunderforest.com/}{Thunderforest},
+ \ Data~\textcopyright\nobreakspace\href{https://openstreetmap.org/copyright}{OpenStreetMap~contributors}
+ },
+ attribution~print = {
+ Maps~\textcopyright\nobreakspace www.thunderforest.com,
+ \ Data~\textcopyright\nobreakspace www.osm.org/copyright
+ }
+ }
+ }
+\__mermap_new_supply_source:nn { thunderforest~opencyclemap }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/opencyclemap,
+ }
+\__mermap_new_supply_source:nn { thunderforest~transport }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/transport/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/transport,
+ }
+\__mermap_new_supply_source:nn { thunderforest~landscape }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/landscape,
+ }
+\__mermap_new_supply_source:nn { thunderforest~outdoors }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/outdoors,
+ }
+\__mermap_new_supply_source:nn { thunderforest~atlas }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/atlas/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/atlas,
+ }
+\__mermap_new_supply_source:nn { thunderforest~transport-dark }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/transport-dark,
+ }
+\__mermap_new_supply_source:nn { thunderforest~spinal-map }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/spinal-map/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/spinal-map,
+ }
+\__mermap_new_supply_source:nn { thunderforest~pioneer }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/pioneer/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/pioneer,
+ }
+\__mermap_new_supply_source:nn { thunderforest~mobile-atlas }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/mobile-atlas,
+ }
+\__mermap_new_supply_source:nn { thunderforest~neighbourhood }
+ {
+ url~with~api~key = {https://tile.thunderforest.com/neighbourhood/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
+ __attribution_thunderforest,
+ basename = tiles/neighbourhood,
+ }
+
+
%% openrouteservice mapsurfer is DISCONTINUED after June 2020
%% Therefore, the following source is DEPRECATED and will be removed in future
@@ -127,7 +219,7 @@
basename = tiles/mapsurfer,
}
-\keys_define:nn { mermap/supply }
+\keys_define:nn { mermap/supply }% DISCONTINUED after July 2023 and DEPRECATED
{
__attribution_stamen .meta:nn = {mermap/supply} {
attribution = {
@@ -144,67 +236,67 @@
}
}
}
-\__mermap_new_supply_source:nn { stamen~terrain }
+\__mermap_new_supply_source:nn { stamen~terrain }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/terrain,
}
-\__mermap_new_supply_source:nn { stamen~terrain-background }
+\__mermap_new_supply_source:nn { stamen~terrain-background }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/terrain-background/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/terrain-background,
}
-\__mermap_new_supply_source:nn { stamen~terrain-labels }
+\__mermap_new_supply_source:nn { stamen~terrain-labels }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/terrain-labels/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/terrain-labels,
}
-\__mermap_new_supply_source:nn { stamen~terrain-lines }
+\__mermap_new_supply_source:nn { stamen~terrain-lines }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/terrain-lines/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/terrain-lines,
}
-\__mermap_new_supply_source:nn { stamen~toner }
+\__mermap_new_supply_source:nn { stamen~toner }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner,
}
-\__mermap_new_supply_source:nn { stamen~toner-lite }
+\__mermap_new_supply_source:nn { stamen~toner-lite }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-lite,
}
-\__mermap_new_supply_source:nn { stamen~toner-hybrid }
+\__mermap_new_supply_source:nn { stamen~toner-hybrid }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-hybrid/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-hybrid,
}
-\__mermap_new_supply_source:nn { stamen~toner-background }
+\__mermap_new_supply_source:nn { stamen~toner-background }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-background/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-background,
}
-\__mermap_new_supply_source:nn { stamen~toner-labels }
+\__mermap_new_supply_source:nn { stamen~toner-labels }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-labels/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-labels,
}
-\__mermap_new_supply_source:nn { stamen~toner-lines }
+\__mermap_new_supply_source:nn { stamen~toner-lines }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/toner-lines/{z}/{x}/{y}.png},
__attribution_stamen,
basename = tiles/toner-lines,
}
-\__mermap_new_supply_source:nn { stamen~watercolor }
+\__mermap_new_supply_source:nn { stamen~watercolor }% DISCONTINUED after July 2023 and DEPRECATED
{
url = {https://stamen-tiles-a.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png},
attribution = {
@@ -221,72 +313,3 @@
},
basename = tiles/watercolor,
}
-
-\keys_define:nn { mermap/supply }
- {
- __attribution_thunderforest .meta:nn = {mermap/supply} {
- attribution = {
- Maps~\textcopyright\nobreakspace\href{https://www.thunderforest.com/}{Thunderforest},
- \ Data~\textcopyright\nobreakspace\href{https://openstreetmap.org/copyright}{OpenStreetMap~contributors}
- },
- attribution~print = {
- Maps~\textcopyright\nobreakspace www.thunderforest.com,
- \ Data~\textcopyright\nobreakspace www.osm.org/copyright
- }
- }
- }
-\__mermap_new_supply_source:nn { thunderforest~opencyclemap }
- {
- url~with~api~key = {https://tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/opencyclemap,
- }
-\__mermap_new_supply_source:nn { thunderforest~transport }
- {
- url~with~api~key = {https://tile.thunderforest.com/transport/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/transport,
- }
-\__mermap_new_supply_source:nn { thunderforest~landscape }
- {
- url~with~api~key = {https://tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/landscape,
- }
-\__mermap_new_supply_source:nn { thunderforest~outdoors }
- {
- url~with~api~key = {https://tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/outdoors,
- }
-\__mermap_new_supply_source:nn { thunderforest~transport-dark }
- {
- url~with~api~key = {https://tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/transport-dark,
- }
-\__mermap_new_supply_source:nn { thunderforest~spinal-map }
- {
- url~with~api~key = {https://tile.thunderforest.com/spinal-map/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/spinal-map,
- }
-\__mermap_new_supply_source:nn { thunderforest~pioneer }
- {
- url~with~api~key = {https://tile.thunderforest.com/pioneer/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/pioneer,
- }
-\__mermap_new_supply_source:nn { thunderforest~mobile-atlas }
- {
- url~with~api~key = {https://tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/mobile-atlas,
- }
-\__mermap_new_supply_source:nn { thunderforest~neighbourhood }
- {
- url~with~api~key = {https://tile.thunderforest.com/neighbourhood/{z}/{x}/{y}.png?apikey=}{thunderforest}{},
- __attribution_thunderforest,
- basename = tiles/neighbourhood,
- }
-
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Dnom.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Dnom.fd
new file mode 100644
index 00000000000..9c0cbcf3f51
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Dnom.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{LY1MFBOldstyle-Dnom.fd}
+ [2024/08/05 (autoinst) Font definitions for LY1/MFBOldstyle-Dnom.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{MFBOldstyle-Dnom}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Dnom}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-dnom-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Dnom}{bold}{n}{
+ <-> alias * MFBOldstyle-Dnom/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Dnom}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-dnom-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Dnom}{regular}{it}{
+ <-> alias * MFBOldstyle-Dnom/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Dnom}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-dnom-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Dnom}{regular}{n}{
+ <-> alias * MFBOldstyle-Dnom/m/n
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Dnom}{m}{sl}{
+ <-> ssub * MFBOldstyle-Dnom/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Dnom}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Dnom/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Dnom}{bx}{n}{
+ <-> ssub * MFBOldstyle-Dnom/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Inf.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Inf.fd
new file mode 100644
index 00000000000..19bae30bde1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Inf.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{LY1MFBOldstyle-Inf.fd}
+ [2024/08/05 (autoinst) Font definitions for LY1/MFBOldstyle-Inf.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{MFBOldstyle-Inf}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Inf}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-inf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Inf}{bold}{n}{
+ <-> alias * MFBOldstyle-Inf/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Inf}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-inf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Inf}{regular}{it}{
+ <-> alias * MFBOldstyle-Inf/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Inf}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-inf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Inf}{regular}{n}{
+ <-> alias * MFBOldstyle-Inf/m/n
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Inf}{m}{sl}{
+ <-> ssub * MFBOldstyle-Inf/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Inf}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Inf/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Inf}{bx}{n}{
+ <-> ssub * MFBOldstyle-Inf/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-LF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-LF.fd
new file mode 100644
index 00000000000..80eb1fae4fa
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-LF.fd
@@ -0,0 +1,75 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{LY1MFBOldstyle-LF.fd}
+ [2024/08/05 (autoinst) Font definitions for LY1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{MFBOldstyle-LF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-lf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{regular}{sc}{
+ <-> alias * MFBOldstyle-LF/m/sc
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{regular}{n}{
+ <-> alias * MFBOldstyle-LF/m/n
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{regular}{it}{
+ <-> alias * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{m}{sl}{
+ <-> ssub * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-LF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-lf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{bold}{n}{
+ <-> alias * MFBOldstyle-LF/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-LF}{bx}{n}{
+ <-> ssub * MFBOldstyle-LF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Numr.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Numr.fd
new file mode 100644
index 00000000000..acc9b87ad1d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Numr.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{LY1MFBOldstyle-Numr.fd}
+ [2024/08/05 (autoinst) Font definitions for LY1/MFBOldstyle-Numr.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{MFBOldstyle-Numr}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Numr}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-numr-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Numr}{bold}{n}{
+ <-> alias * MFBOldstyle-Numr/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Numr}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-numr-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Numr}{regular}{n}{
+ <-> alias * MFBOldstyle-Numr/m/n
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Numr}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-numr-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Numr}{regular}{it}{
+ <-> alias * MFBOldstyle-Numr/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Numr}{m}{sl}{
+ <-> ssub * MFBOldstyle-Numr/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Numr}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Numr/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Numr}{bx}{n}{
+ <-> ssub * MFBOldstyle-Numr/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-OsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-OsF.fd
new file mode 100644
index 00000000000..d3047c51edb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-OsF.fd
@@ -0,0 +1,44 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{LY1MFBOldstyle-OsF.fd}
+ [2024/08/05 (autoinst) Font definitions for LY1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{MFBOldstyle-OsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-OsF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-osf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-OsF}{regular}{sc}{
+ <-> alias * MFBOldstyle-OsF/m/sc
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-OsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-osf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-OsF}{regular}{n}{
+ <-> alias * MFBOldstyle-OsF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Sup.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Sup.fd
new file mode 100644
index 00000000000..b2d73b05161
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-Sup.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{LY1MFBOldstyle-Sup.fd}
+ [2024/08/05 (autoinst) Font definitions for LY1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{MFBOldstyle-Sup}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Sup}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Sup}{regular}{it}{
+ <-> alias * MFBOldstyle-Sup/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Sup}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Sup}{regular}{n}{
+ <-> alias * MFBOldstyle-Sup/m/n
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Sup}{m}{sl}{
+ <-> ssub * MFBOldstyle-Sup/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Sup}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Sup/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Sup}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-Sup}{bold}{n}{
+ <-> alias * MFBOldstyle-Sup/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-Sup}{bx}{n}{
+ <-> ssub * MFBOldstyle-Sup/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-TLF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-TLF.fd
new file mode 100644
index 00000000000..adfe1fd0d86
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-TLF.fd
@@ -0,0 +1,75 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{LY1MFBOldstyle-TLF.fd}
+ [2024/08/05 (autoinst) Font definitions for LY1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{MFBOldstyle-TLF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{regular}{it}{
+ <-> alias * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tlf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{regular}{sc}{
+ <-> alias * MFBOldstyle-TLF/m/sc
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{regular}{n}{
+ <-> alias * MFBOldstyle-TLF/m/n
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{m}{sl}{
+ <-> ssub * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-TLF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{bold}{n}{
+ <-> alias * MFBOldstyle-TLF/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-TLF}{bx}{n}{
+ <-> ssub * MFBOldstyle-TLF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-TOsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-TOsF.fd
new file mode 100644
index 00000000000..317443d5afd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/LY1MFBOldstyle-TOsF.fd
@@ -0,0 +1,44 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{LY1MFBOldstyle-TOsF.fd}
+ [2024/08/05 (autoinst) Font definitions for LY1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{MFBOldstyle-TOsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{LY1}{MFBOldstyle-TOsF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tosf-sc-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TOsF}{regular}{sc}{
+ <-> alias * MFBOldstyle-TOsF/m/sc
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TOsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tosf-ly1
+}{}
+
+\DeclareFontShape{LY1}{MFBOldstyle-TOsF}{regular}{n}{
+ <-> alias * MFBOldstyle-TOsF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Dnom.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Dnom.fd
new file mode 100644
index 00000000000..05863d4d529
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Dnom.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{OT1MFBOldstyle-Dnom.fd}
+ [2024/08/05 (autoinst) Font definitions for OT1/MFBOldstyle-Dnom.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{MFBOldstyle-Dnom}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Dnom}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-dnom-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Dnom}{regular}{it}{
+ <-> alias * MFBOldstyle-Dnom/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Dnom}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-dnom-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Dnom}{regular}{n}{
+ <-> alias * MFBOldstyle-Dnom/m/n
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Dnom}{m}{sl}{
+ <-> ssub * MFBOldstyle-Dnom/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Dnom}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Dnom/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Dnom}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-dnom-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Dnom}{bold}{n}{
+ <-> alias * MFBOldstyle-Dnom/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Dnom}{bx}{n}{
+ <-> ssub * MFBOldstyle-Dnom/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Inf.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Inf.fd
new file mode 100644
index 00000000000..664a74048be
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Inf.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{OT1MFBOldstyle-Inf.fd}
+ [2024/08/05 (autoinst) Font definitions for OT1/MFBOldstyle-Inf.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{MFBOldstyle-Inf}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Inf}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-inf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Inf}{regular}{n}{
+ <-> alias * MFBOldstyle-Inf/m/n
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Inf}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-inf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Inf}{regular}{it}{
+ <-> alias * MFBOldstyle-Inf/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Inf}{m}{sl}{
+ <-> ssub * MFBOldstyle-Inf/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Inf}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Inf/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Inf}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-inf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Inf}{bold}{n}{
+ <-> alias * MFBOldstyle-Inf/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Inf}{bx}{n}{
+ <-> ssub * MFBOldstyle-Inf/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-LF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-LF.fd
new file mode 100644
index 00000000000..2c468d897c7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-LF.fd
@@ -0,0 +1,75 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{OT1MFBOldstyle-LF.fd}
+ [2024/08/05 (autoinst) Font definitions for OT1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{MFBOldstyle-LF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-lf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{bold}{n}{
+ <-> alias * MFBOldstyle-LF/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-lf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{regular}{it}{
+ <-> alias * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-lf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{regular}{n}{
+ <-> alias * MFBOldstyle-LF/m/n
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-lf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{regular}{sc}{
+ <-> alias * MFBOldstyle-LF/m/sc
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{m}{sl}{
+ <-> ssub * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-LF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-LF}{bx}{n}{
+ <-> ssub * MFBOldstyle-LF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Numr.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Numr.fd
new file mode 100644
index 00000000000..c5df54304a2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Numr.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{OT1MFBOldstyle-Numr.fd}
+ [2024/08/05 (autoinst) Font definitions for OT1/MFBOldstyle-Numr.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{MFBOldstyle-Numr}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Numr}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-numr-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Numr}{regular}{it}{
+ <-> alias * MFBOldstyle-Numr/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Numr}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-numr-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Numr}{regular}{n}{
+ <-> alias * MFBOldstyle-Numr/m/n
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Numr}{m}{sl}{
+ <-> ssub * MFBOldstyle-Numr/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Numr}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Numr/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Numr}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-numr-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Numr}{bold}{n}{
+ <-> alias * MFBOldstyle-Numr/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Numr}{bx}{n}{
+ <-> ssub * MFBOldstyle-Numr/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-OsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-OsF.fd
new file mode 100644
index 00000000000..be09da5dfe6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-OsF.fd
@@ -0,0 +1,44 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{OT1MFBOldstyle-OsF.fd}
+ [2024/08/05 (autoinst) Font definitions for OT1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{MFBOldstyle-OsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-OsF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-osf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-OsF}{regular}{sc}{
+ <-> alias * MFBOldstyle-OsF/m/sc
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-OsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-osf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-OsF}{regular}{n}{
+ <-> alias * MFBOldstyle-OsF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Sup.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Sup.fd
new file mode 100644
index 00000000000..2351fc9901c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-Sup.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{OT1MFBOldstyle-Sup.fd}
+ [2024/08/05 (autoinst) Font definitions for OT1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{MFBOldstyle-Sup}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Sup}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Sup}{bold}{n}{
+ <-> alias * MFBOldstyle-Sup/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Sup}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Sup}{regular}{it}{
+ <-> alias * MFBOldstyle-Sup/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Sup}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Sup}{regular}{n}{
+ <-> alias * MFBOldstyle-Sup/m/n
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Sup}{m}{sl}{
+ <-> ssub * MFBOldstyle-Sup/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-Sup}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Sup/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-Sup}{bx}{n}{
+ <-> ssub * MFBOldstyle-Sup/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-TLF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-TLF.fd
new file mode 100644
index 00000000000..7eb5636a123
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-TLF.fd
@@ -0,0 +1,75 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{OT1MFBOldstyle-TLF.fd}
+ [2024/08/05 (autoinst) Font definitions for OT1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{MFBOldstyle-TLF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{bold}{n}{
+ <-> alias * MFBOldstyle-TLF/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{regular}{it}{
+ <-> alias * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{regular}{n}{
+ <-> alias * MFBOldstyle-TLF/m/n
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tlf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{regular}{sc}{
+ <-> alias * MFBOldstyle-TLF/m/sc
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{m}{sl}{
+ <-> ssub * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-TLF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-TLF}{bx}{n}{
+ <-> ssub * MFBOldstyle-TLF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-TOsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-TOsF.fd
new file mode 100644
index 00000000000..4d0db0317ac
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/OT1MFBOldstyle-TOsF.fd
@@ -0,0 +1,44 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{OT1MFBOldstyle-TOsF.fd}
+ [2024/08/05 (autoinst) Font definitions for OT1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{MFBOldstyle-TOsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{OT1}{MFBOldstyle-TOsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tosf-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TOsF}{regular}{n}{
+ <-> alias * MFBOldstyle-TOsF/m/n
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TOsF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tosf-sc-ot1
+}{}
+
+\DeclareFontShape{OT1}{MFBOldstyle-TOsF}{regular}{sc}{
+ <-> alias * MFBOldstyle-TOsF/m/sc
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Dnom.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Dnom.fd
new file mode 100644
index 00000000000..2c61008de9c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Dnom.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T1MFBOldstyle-Dnom.fd}
+ [2024/08/05 (autoinst) Font definitions for T1/MFBOldstyle-Dnom.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{MFBOldstyle-Dnom}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Dnom}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-dnom-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Dnom}{regular}{n}{
+ <-> alias * MFBOldstyle-Dnom/m/n
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Dnom}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-dnom-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Dnom}{regular}{it}{
+ <-> alias * MFBOldstyle-Dnom/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Dnom}{m}{sl}{
+ <-> ssub * MFBOldstyle-Dnom/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Dnom}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Dnom/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Dnom}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-dnom-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Dnom}{bold}{n}{
+ <-> alias * MFBOldstyle-Dnom/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Dnom}{bx}{n}{
+ <-> ssub * MFBOldstyle-Dnom/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Inf.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Inf.fd
new file mode 100644
index 00000000000..6f58c047b5b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Inf.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T1MFBOldstyle-Inf.fd}
+ [2024/08/05 (autoinst) Font definitions for T1/MFBOldstyle-Inf.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{MFBOldstyle-Inf}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Inf}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-inf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Inf}{bold}{n}{
+ <-> alias * MFBOldstyle-Inf/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Inf}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-inf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Inf}{regular}{n}{
+ <-> alias * MFBOldstyle-Inf/m/n
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Inf}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-inf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Inf}{regular}{it}{
+ <-> alias * MFBOldstyle-Inf/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Inf}{m}{sl}{
+ <-> ssub * MFBOldstyle-Inf/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Inf}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Inf/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Inf}{bx}{n}{
+ <-> ssub * MFBOldstyle-Inf/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-LF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-LF.fd
new file mode 100644
index 00000000000..8e904607902
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-LF.fd
@@ -0,0 +1,75 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T1MFBOldstyle-LF.fd}
+ [2024/08/05 (autoinst) Font definitions for T1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{MFBOldstyle-LF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-lf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{bold}{n}{
+ <-> alias * MFBOldstyle-LF/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-lf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{regular}{n}{
+ <-> alias * MFBOldstyle-LF/m/n
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-lf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{regular}{sc}{
+ <-> alias * MFBOldstyle-LF/m/sc
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-lf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{regular}{it}{
+ <-> alias * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{m}{sl}{
+ <-> ssub * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-LF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{MFBOldstyle-LF}{bx}{n}{
+ <-> ssub * MFBOldstyle-LF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Numr.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Numr.fd
new file mode 100644
index 00000000000..a8da7242611
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Numr.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T1MFBOldstyle-Numr.fd}
+ [2024/08/05 (autoinst) Font definitions for T1/MFBOldstyle-Numr.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{MFBOldstyle-Numr}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Numr}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-numr-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Numr}{regular}{it}{
+ <-> alias * MFBOldstyle-Numr/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Numr}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-numr-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Numr}{regular}{n}{
+ <-> alias * MFBOldstyle-Numr/m/n
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Numr}{m}{sl}{
+ <-> ssub * MFBOldstyle-Numr/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Numr}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Numr/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Numr}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-numr-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Numr}{bold}{n}{
+ <-> alias * MFBOldstyle-Numr/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Numr}{bx}{n}{
+ <-> ssub * MFBOldstyle-Numr/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-OsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-OsF.fd
new file mode 100644
index 00000000000..2332b388489
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-OsF.fd
@@ -0,0 +1,44 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T1MFBOldstyle-OsF.fd}
+ [2024/08/05 (autoinst) Font definitions for T1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{MFBOldstyle-OsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{MFBOldstyle-OsF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-osf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-OsF}{regular}{sc}{
+ <-> alias * MFBOldstyle-OsF/m/sc
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-OsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-osf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-OsF}{regular}{n}{
+ <-> alias * MFBOldstyle-OsF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Sup.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Sup.fd
new file mode 100644
index 00000000000..fd14ac5df23
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-Sup.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T1MFBOldstyle-Sup.fd}
+ [2024/08/05 (autoinst) Font definitions for T1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{MFBOldstyle-Sup}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Sup}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-sup-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Sup}{regular}{n}{
+ <-> alias * MFBOldstyle-Sup/m/n
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Sup}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Sup}{regular}{it}{
+ <-> alias * MFBOldstyle-Sup/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Sup}{m}{sl}{
+ <-> ssub * MFBOldstyle-Sup/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Sup}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Sup/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Sup}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-sup-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-Sup}{bold}{n}{
+ <-> alias * MFBOldstyle-Sup/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{MFBOldstyle-Sup}{bx}{n}{
+ <-> ssub * MFBOldstyle-Sup/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-TLF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-TLF.fd
new file mode 100644
index 00000000000..d7c80e2171b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-TLF.fd
@@ -0,0 +1,75 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T1MFBOldstyle-TLF.fd}
+ [2024/08/05 (autoinst) Font definitions for T1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{MFBOldstyle-TLF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{bold}{n}{
+ <-> alias * MFBOldstyle-TLF/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{regular}{it}{
+ <-> alias * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tlf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{regular}{sc}{
+ <-> alias * MFBOldstyle-TLF/m/sc
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{regular}{n}{
+ <-> alias * MFBOldstyle-TLF/m/n
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{m}{sl}{
+ <-> ssub * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-TLF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{MFBOldstyle-TLF}{bx}{n}{
+ <-> ssub * MFBOldstyle-TLF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-TOsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-TOsF.fd
new file mode 100644
index 00000000000..6f696037590
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T1MFBOldstyle-TOsF.fd
@@ -0,0 +1,44 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T1MFBOldstyle-TOsF.fd}
+ [2024/08/05 (autoinst) Font definitions for T1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{MFBOldstyle-TOsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T1}{MFBOldstyle-TOsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tosf-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TOsF}{regular}{n}{
+ <-> alias * MFBOldstyle-TOsF/m/n
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TOsF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tosf-sc-t1
+}{}
+
+\DeclareFontShape{T1}{MFBOldstyle-TOsF}{regular}{sc}{
+ <-> alias * MFBOldstyle-TOsF/m/sc
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Dnom.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Dnom.fd
new file mode 100644
index 00000000000..dd93afa56be
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Dnom.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T5MFBOldstyle-Dnom.fd}
+ [2024/08/05 (autoinst) Font definitions for T5/MFBOldstyle-Dnom.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T5}{MFBOldstyle-Dnom}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Dnom}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-dnom-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Dnom}{bold}{n}{
+ <-> alias * MFBOldstyle-Dnom/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Dnom}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-dnom-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Dnom}{regular}{it}{
+ <-> alias * MFBOldstyle-Dnom/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Dnom}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-dnom-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Dnom}{regular}{n}{
+ <-> alias * MFBOldstyle-Dnom/m/n
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Dnom}{m}{sl}{
+ <-> ssub * MFBOldstyle-Dnom/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Dnom}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Dnom/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Dnom}{bx}{n}{
+ <-> ssub * MFBOldstyle-Dnom/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Inf.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Inf.fd
new file mode 100644
index 00000000000..4aff4a0bf02
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Inf.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T5MFBOldstyle-Inf.fd}
+ [2024/08/05 (autoinst) Font definitions for T5/MFBOldstyle-Inf.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T5}{MFBOldstyle-Inf}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Inf}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-inf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Inf}{regular}{n}{
+ <-> alias * MFBOldstyle-Inf/m/n
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Inf}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-inf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Inf}{regular}{it}{
+ <-> alias * MFBOldstyle-Inf/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Inf}{m}{sl}{
+ <-> ssub * MFBOldstyle-Inf/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Inf}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Inf/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Inf}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-inf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Inf}{bold}{n}{
+ <-> alias * MFBOldstyle-Inf/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Inf}{bx}{n}{
+ <-> ssub * MFBOldstyle-Inf/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-LF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-LF.fd
new file mode 100644
index 00000000000..20b7b6cc8a8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-LF.fd
@@ -0,0 +1,75 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T5MFBOldstyle-LF.fd}
+ [2024/08/05 (autoinst) Font definitions for T5/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T5}{MFBOldstyle-LF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-lf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{bold}{n}{
+ <-> alias * MFBOldstyle-LF/b/n
+}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-lf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{regular}{it}{
+ <-> alias * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-lf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{regular}{n}{
+ <-> alias * MFBOldstyle-LF/m/n
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-lf-sc-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{regular}{sc}{
+ <-> alias * MFBOldstyle-LF/m/sc
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{m}{sl}{
+ <-> ssub * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-LF/regular/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T5}{MFBOldstyle-LF}{bx}{n}{
+ <-> ssub * MFBOldstyle-LF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Numr.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Numr.fd
new file mode 100644
index 00000000000..c5e53dd36e9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Numr.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T5MFBOldstyle-Numr.fd}
+ [2024/08/05 (autoinst) Font definitions for T5/MFBOldstyle-Numr.]
+
+\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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T5}{MFBOldstyle-Numr}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Numr}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-numr-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Numr}{regular}{n}{
+ <-> alias * MFBOldstyle-Numr/m/n
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Numr}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-numr-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Numr}{regular}{it}{
+ <-> alias * MFBOldstyle-Numr/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Numr}{m}{sl}{
+ <-> ssub * MFBOldstyle-Numr/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Numr}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Numr/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Numr}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-numr-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Numr}{bold}{n}{
+ <-> alias * MFBOldstyle-Numr/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Numr}{bx}{n}{
+ <-> ssub * MFBOldstyle-Numr/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-OsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-OsF.fd
new file mode 100644
index 00000000000..4b4bfd27399
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-OsF.fd
@@ -0,0 +1,44 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T5MFBOldstyle-OsF.fd}
+ [2024/08/05 (autoinst) Font definitions for T5/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T5}{MFBOldstyle-OsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T5}{MFBOldstyle-OsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-osf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-OsF}{regular}{n}{
+ <-> alias * MFBOldstyle-OsF/m/n
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-OsF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-osf-sc-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-OsF}{regular}{sc}{
+ <-> alias * MFBOldstyle-OsF/m/sc
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Sup.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Sup.fd
new file mode 100644
index 00000000000..c58149a46ef
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-Sup.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T5MFBOldstyle-Sup.fd}
+ [2024/08/05 (autoinst) Font definitions for T5/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T5}{MFBOldstyle-Sup}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Sup}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-sup-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Sup}{regular}{it}{
+ <-> alias * MFBOldstyle-Sup/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Sup}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-sup-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Sup}{regular}{n}{
+ <-> alias * MFBOldstyle-Sup/m/n
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Sup}{m}{sl}{
+ <-> ssub * MFBOldstyle-Sup/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Sup}{regular}{sl}{
+ <-> ssub * MFBOldstyle-Sup/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Sup}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-sup-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-Sup}{bold}{n}{
+ <-> alias * MFBOldstyle-Sup/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T5}{MFBOldstyle-Sup}{bx}{n}{
+ <-> ssub * MFBOldstyle-Sup/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-TLF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-TLF.fd
new file mode 100644
index 00000000000..5d4e067775c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-TLF.fd
@@ -0,0 +1,75 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T5MFBOldstyle-TLF.fd}
+ [2024/08/05 (autoinst) Font definitions for T5/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T5}{MFBOldstyle-TLF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-tlf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{regular}{it}{
+ <-> alias * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tlf-sc-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{regular}{sc}{
+ <-> alias * MFBOldstyle-TLF/m/sc
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tlf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{regular}{n}{
+ <-> alias * MFBOldstyle-TLF/m/n
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{m}{sl}{
+ <-> ssub * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-TLF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-tlf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{bold}{n}{
+ <-> alias * MFBOldstyle-TLF/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T5}{MFBOldstyle-TLF}{bx}{n}{
+ <-> ssub * MFBOldstyle-TLF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-TOsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-TOsF.fd
new file mode 100644
index 00000000000..e377aa052ee
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/T5MFBOldstyle-TOsF.fd
@@ -0,0 +1,44 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{T5MFBOldstyle-TOsF.fd}
+ [2024/08/05 (autoinst) Font definitions for T5/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T5}{MFBOldstyle-TOsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{T5}{MFBOldstyle-TOsF}{m}{sc}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tosf-sc-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TOsF}{regular}{sc}{
+ <-> alias * MFBOldstyle-TOsF/m/sc
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TOsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tosf-t5
+}{}
+
+\DeclareFontShape{T5}{MFBOldstyle-TOsF}{regular}{n}{
+ <-> alias * MFBOldstyle-TOsF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-LF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-LF.fd
new file mode 100644
index 00000000000..8a6b0384cc0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-LF.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{TS1MFBOldstyle-LF.fd}
+ [2024/08/05 (autoinst) Font definitions for TS1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{MFBOldstyle-LF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{TS1}{MFBOldstyle-LF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-LF}{regular}{n}{
+ <-> alias * MFBOldstyle-LF/m/n
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-LF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-LF}{regular}{it}{
+ <-> alias * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-LF}{m}{sl}{
+ <-> ssub * MFBOldstyle-LF/m/it
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-LF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-LF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{TS1}{MFBOldstyle-LF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-lf-ts1
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-LF}{bold}{n}{
+ <-> alias * MFBOldstyle-LF/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{TS1}{MFBOldstyle-LF}{bx}{n}{
+ <-> ssub * MFBOldstyle-LF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-OsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-OsF.fd
new file mode 100644
index 00000000000..e3f0e59f786
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-OsF.fd
@@ -0,0 +1,36 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{TS1MFBOldstyle-OsF.fd}
+ [2024/08/05 (autoinst) Font definitions for TS1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{MFBOldstyle-OsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{TS1}{MFBOldstyle-OsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-osf-ts1
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-OsF}{regular}{n}{
+ <-> alias * MFBOldstyle-OsF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-TLF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-TLF.fd
new file mode 100644
index 00000000000..f25231bec92
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-TLF.fd
@@ -0,0 +1,67 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{TS1MFBOldstyle-TLF.fd}
+ [2024/08/05 (autoinst) Font definitions for TS1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{MFBOldstyle-TLF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{TS1}{MFBOldstyle-TLF}{m}{it}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Italic-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-TLF}{regular}{it}{
+ <-> alias * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-TLF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-TLF}{regular}{n}{
+ <-> alias * MFBOldstyle-TLF/m/n
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-TLF}{m}{sl}{
+ <-> ssub * MFBOldstyle-TLF/m/it
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-TLF}{regular}{sl}{
+ <-> ssub * MFBOldstyle-TLF/regular/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{TS1}{MFBOldstyle-TLF}{b}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Bold-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-TLF}{bold}{n}{
+ <-> alias * MFBOldstyle-TLF/b/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{TS1}{MFBOldstyle-TLF}{bx}{n}{
+ <-> ssub * MFBOldstyle-TLF/b/n
+}{}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-TOsF.fd b/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-TOsF.fd
new file mode 100644
index 00000000000..b53f26148ef
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/TS1MFBOldstyle-TOsF.fd
@@ -0,0 +1,36 @@
+%% Generated by autoinst on 2024/08/05
+%%
+\ProvidesFile{TS1MFBOldstyle-TOsF.fd}
+ [2024/08/05 (autoinst) Font definitions for TS1/MFBOldstyle-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 MFBOldstyle@scale\endcsname\relax
+ \let\MFBOldstyle@@scale\@empty
+\else
+ \edef\MFBOldstyle@@scale{s*[\csname MFBOldstyle@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{MFBOldstyle-TOsF}{}
+
+
+% ---- m = regular ----
+
+\DeclareFontShape{TS1}{MFBOldstyle-TOsF}{m}{n}{
+ <-> \MFBOldstyle@@scale MFBOldstyle-Regular-tosf-ts1
+}{}
+
+\DeclareFontShape{TS1}{MFBOldstyle-TOsF}{regular}{n}{
+ <-> alias * MFBOldstyle-TOsF/m/n
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/mfb-oldstyle/mfb-oldstyle.sty b/Master/texmf-dist/tex/latex/mfb-oldstyle/mfb-oldstyle.sty
new file mode 100644
index 00000000000..4bfbde6a576
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mfb-oldstyle/mfb-oldstyle.sty
@@ -0,0 +1,93 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mfb-oldstyle}
+ [2024/08/05 (autoinst) Style file for MFBOldstyle fonts.]
+
+\RequirePackage{xkeyval}
+\newcommand*{\MFBOldstyle@scale}{1}
+\DeclareOptionX{scale}{\renewcommand*{\MFBOldstyle@scale}{#1}}
+\DeclareOptionX{scaled}{\renewcommand*{\MFBOldstyle@scale}{#1}}
+
+\DeclareOptionX{lining}{\edef\MFBOldstyle@figurestyle{LF}}
+\DeclareOptionX{oldstyle}{\edef\MFBOldstyle@figurestyle{OsF}}
+\DeclareOptionX{tabular}{\edef\MFBOldstyle@figurealign{T}}
+\DeclareOptionX{proportional}{\edef\MFBOldstyle@figurealign{}}
+\edef\MFBOldstyle@figurestyle{LF}
+\edef\MFBOldstyle@figurealign{}
+
+\DeclareOptionX{mainfont}{
+ \renewcommand{\familydefault}{\rmdefault}
+}
+\DeclareOptionX{bold}{\edef\bfseries@rm{bold}}
+\DeclareOptionX{regular}{\edef\mdseries@rm{regular}}
+
+\ProcessOptionsX\relax
+
+\RequirePackage[LY1,T1,T5]{fontenc}
+\RequirePackage{textcomp}
+\RequirePackage{ifthen}
+\RequirePackage{mweights}
+
+\IfFileExists{fontaxes.sty}{
+ \RequirePackage{fontaxes}
+ \fa@naming@exception{figures}{{superior}{proportional}}{Sup}
+ \fa@naming@exception{figures}{{superior}{tabular}}{Sup}
+ \def\supfigures{\@nomath\supfigures
+ \fontfigurestyle{superior}\selectfont}
+ \let\sufigures\supfigures
+ \DeclareTextFontCommand{\textsup}{\supfigures}
+ \let\textsu\textsup
+ \let\textsuperior\textsup
+ \let\@oldtextsuperscript\textsuperscript
+ \def\textsuperscript{\@ifstar\@oldtextsuperscript\textsup}
+ \def\@makefnmark{%
+ \mbox{\footnotemarkfont\textsuperscript{\@thefnmark}}}
+ \@ifundefined{ftntm@font}%
+ {\let\footnotemarkfont\normalfont}%
+ {\let\footnotemarkfont\ftntm@font}
+
+ \fa@naming@exception{figures}{{inferior}{proportional}}{Inf}
+ \fa@naming@exception{figures}{{inferior}{tabular}}{Inf}
+ \def\inffigures{\@nomath\inffigures
+ \fontfigurestyle{inferior}\selectfont}
+ \let\infigures\inffigures
+ \DeclareTextFontCommand{\textinf}{\inffigures}
+ \let\textin\textinf
+ \let\textinferior\textinf
+ \let\@oldtextsubscript\textsubscript
+ \def\textsubscript{\@ifstar\@oldtextsubscript\textinf}
+
+ \fa@naming@exception{figures}{{numerators}{proportional}}{Numr}
+ \fa@naming@exception{figures}{{numerator}{proportional}}{Numr}
+ \fa@naming@exception{figures}{{numerators}{tabular}}{Numr}
+ \fa@naming@exception{figures}{{numerator}{tabular}}{Numr}
+
+ \fa@naming@exception{figures}{{denominators}{proportional}}{Dnom}
+ \fa@naming@exception{figures}{{denominator}{proportional}}{Dnom}
+ \fa@naming@exception{figures}{{denominators}{tabular}}{Dnom}
+ \fa@naming@exception{figures}{{denominator}{tabular}}{Dnom}
+
+}{}
+
+% Here we implement the scale=MatchLowercase option.
+% If this is given, we must compute the correct value of
+% the "\MFBOldstyle@scale" parameter before loading the .fd files;
+% but to determine that value we of course need the font's x-height.
+% To avoid triggering the loading of .fd files,
+% we use plain TeX's \font primitive to load the testfont.
+% We then compute the ratio of the current x-height to our font's x-height;
+% this is the "\MFBOldstyle@scale" we will pass to the .fd files.
+\ifthenelse{\equal{\MFBOldstyle@scale}{MatchLowercase}}
+ { \newlength{\MFBOldstyle@currentx}
+ \settoheight{\MFBOldstyle@currentx}{x}
+ \newlength{\MFBOldstyle@xheight}
+ \settoheight{\MFBOldstyle@xheight}
+ {{\font\testfont=MFBOldstyle-Regular-osf-ot1 at \f@size pt\testfont x}}
+ \renewcommand*{\MFBOldstyle@scale}
+ {\strip@pt\dimexpr\number\numexpr\number\dimexpr\MFBOldstyle@currentx\relax*65536/\number\dimexpr\MFBOldstyle@xheight\relax\relax sp\relax}}
+ {}
+
+\renewcommand*
+ {\rmdefault}
+ {MFBOldstyle-\MFBOldstyle@figurealign\MFBOldstyle@figurestyle}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/minted/minted.sty b/Master/texmf-dist/tex/latex/minted/minted.sty
index bd7e756dcc5..a77cf5a1be4 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,1610 @@
%%
%% 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/10 v3.3.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
- \providecommand{\DeleteFile}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\IfFileExists{#2}{\ShellEscape{rm #2}}{}}%
- {\IfFileExists{#1/#2}{\ShellEscape{rm #1/#2}}{}}}
+ \xdef\minted@timestamp{\minted@creationdatetotimestamp{\creationdate}}
\fi
-\ifwindows
- \newcommand{\ProvideDirectory}[1]{%
- \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
- \ShellEscape{if not exist \minted@windir\space mkdir \minted@windir}}
+\expandafter\ifx\csname directlua\endcsname\relax
\else
- \newcommand{\ProvideDirectory}[1]{%
- \ShellEscape{mkdir -p #1}}
+ \begingroup
+ \outputmode=1
+ \xdef\minted@timestamp{\minted@creationdatetotimestamp{\pdffeedback creationdate}}%
+ \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}%
+\endgroup
+\ifcsname minted@timestamp\endcsname
+\else
+ \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
+\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,
}
-\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@frozencache}
+\minted@pgfopts{
+ frozencache/.is if=minted@frozencache,
}
-\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@lexerlinenos}
+\minted@pgfopts{
+ lexerlinenos/.is if=minted@lexerlinenos,
+ langlinenos/.is if=minted@lexerlinenos,
}
-\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@inputlexerlinenos}
+\minted@pgfopts{
+ inputlexerlinenos/.is if=minted@inputlexerlinenos,
+ inputlanglinenos/.is if=minted@inputlexerlinenos,
}
-\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}}%
+\newbool{minted@placeholder}
+\minted@pgfopts{
+ placeholder/.is if=minted@placeholder,
+}
+\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}}%
{}%
- \expandafter\fvset\expandafter{\minted@optlistfv@cmd}%
+ \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}}%
+ {}%
+ \global\let\minted@fasthighlightmode@checkend\relax}
+\minted@pgfopts{
+ finalizecache/.code=\minted@error{%
+ Package option "finalizecache" is no longer needed with minted v3+},
+}
+\minted@pgfopts{
+ kpsewhich/.code=\minted@error{%
+ Package option "kpsewhich" is no longer needed with minted v3+},
+}
+\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@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}}%
+\def\minted@outputdir{}
+\minted@pgfopts{
+ draft/.code=\minted@warning{%
+ Package option "draft" no longer has any effect 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{
+ final/.code=\minted@warning{%
+ Package option "final" no longer has any effect with minted v3+},
}
-\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]%
+\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}
+\newcounter{minted@tmpcnt}
+\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
- \let\minted@pygstylepath@save\minted@pygstylepath@load
+ \expandafter\def\csname#1\endcsname{}%
\fi
- \IfFileExists{\minted@pygstylepath@load}%
+ \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}
+\setcounter{minted@tmpcnt}{48}
+\loop\unless\ifnum\value{minted@tmpcnt}>57\relax
+ \expandafter\let\csname minted@isnum\arabic{minted@tmpcnt}\endcsname\relax
+ \expandafter\let\csname minted@isalphanum\arabic{minted@tmpcnt}\endcsname\relax
+ \expandafter\let
+ \csname minted@isalphanumhyphenunderscore\arabic{minted@tmpcnt}\endcsname\relax
+ \stepcounter{minted@tmpcnt}
+\repeat
+\setcounter{minted@tmpcnt}{65}
+\loop\unless\ifnum\value{minted@tmpcnt}>90\relax
+ \expandafter\let\csname minted@isalpha\arabic{minted@tmpcnt}\endcsname\relax
+ \expandafter\let\csname minted@isalphanum\arabic{minted@tmpcnt}\endcsname\relax
+ \expandafter\let
+ \csname minted@isalphanumhyphenunderscore\arabic{minted@tmpcnt}\endcsname\relax
+ \stepcounter{minted@tmpcnt}
+\repeat
+\setcounter{minted@tmpcnt}{97}
+\loop\unless\ifnum\value{minted@tmpcnt}>122\relax
+ \expandafter\let\csname minted@isalpha\arabic{minted@tmpcnt}\endcsname\relax
+ \expandafter\let\csname minted@isalphanum\arabic{minted@tmpcnt}\endcsname\relax
+ \expandafter\let
+ \csname minted@isalphanumhyphenunderscore\arabic{minted@tmpcnt}\endcsname\relax
+ \stepcounter{minted@tmpcnt}
+\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
+ \expandafter\minted@ifalphanumhyphenunderscore@false
+ \fi
+ \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{[}%
+ \setcounter{minted@tmpcnt}{1}%
+ \loop\unless\ifnum\value{minted@tmpcnt}>\minted@numcachefiles\relax
+ \expandafter\minted@savecachelist@writecachefile\expandafter{%
+ \csname minted@cachefile\arabic{minted@tmpcnt}\endcsname}%
+ \expandafter\global\expandafter
+ \let\csname minted@cachefile\arabic{minted@tmpcnt}\endcsname\minted@undefined
+ \stepcounter{minted@tmpcnt}%
+ \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
+ \setcounter{minted@tmpcnt}{1}%
+ \loop\unless\ifnum\value{minted@tmpcnt}>\minted@tmpcodebufferlength\relax
+ \expandafter\let\expandafter
+ \minted@tmp\csname minted@tmpcodebufferline\arabic{minted@tmpcnt}\endcsname
+ \expandafter\pydatabuffermlvalueline\expandafter{\minted@tmp}%
+ \stepcounter{minted@tmpcnt}%
+ \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}%
+ {\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
+ \setcounter{minted@tmpcnt}{1}%
+ \loop\unless\ifnum\value{minted@tmpcnt}>\minted@tmpcodebufferlength\relax
+ \expandafter\let\expandafter
+ \minted@tmp\csname minted@tmpcodebufferline\arabic{minted@tmpcnt}\endcsname
+ \expandafter\pydatabuffermlvalueline\expandafter{\minted@tmp}%
+ \stepcounter{minted@tmpcnt}%
+ \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 +1635,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 +1688,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
- \minted@configlang{#2}%
- \setkeys{minted@opt@cmd}{#1}%
- \minted@fvset
- \RobustMintProcess@i{#3}}
+ \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
+ \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 +1855,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 +1898,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 b48703d7456..d3bd68a2ad5 100644
--- a/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls
+++ b/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls
@@ -4,11 +4,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% This file provides the mitthesis LaTeX class for formatting theses according to
-%% MIT Libraries' requirements as of 2023.
+%% MIT Libraries' requirements as of 2024.
%%
%% This file's version and date:
- \def\versionno{1.11}
- \def\versiondate{2023/11/02\space}
+ \def\versionno{1.17}
+ \def\versiondate{2024/11/02\space}
%%
%% Author: John H. Lienhard, V
%% Department of Mechanical Engineering
@@ -25,7 +25,7 @@
%%
%% LICENSE:
%%
-%% Copyright (c) 2023 John H. Lienhard
+%% Copyright (c) 2024 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,
@@ -57,34 +57,24 @@
\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\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
+\providecommand\IfPDFManagementActiveTF{\@secondoftwo}% \If... added to latex 2021/07/23
+\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If... added to latex 2021/11/15
+\providecommand\ClassNoteNoLine[2]{\typeout{^^JClass Note #1: #2.^^J}}% log & terminal note... added to latex 2021/11/15
\IfFormatAtLeastTF{2020/10/01}{%
- \typeout{^^JYour LaTeX format is dated \fmtversion. LaTeX distributions from 2022/11/01 or later are strongly recommended for best results^^J}
+ \ClassNoteNoLine{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX distributions from 2022/11/01 or later are strongly recommended for best results}
}{%
\ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2022/11/01 or later are strongly recommended for this class. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now...}%
}
-% check whether pdfmanagement (\DocumentMetadata) has been loaded (if not, fall back to hyperxmp)
+% check whether pdfmanagement (\DocumentMetadata) has been loaded (if not, fall back to hyperxmp and bookmark packages after loading hyperref)
\newif\ifmit@pdfmanagement
-\ExplSyntaxOn
- \msg_new:nnn { \ClassName } { loading_hyperxmp } { pdfmanagement\ is\ not\ active.\ Will\ load\ hyperxmp\ instead. }
- % As of 2021/07/23 we could instead use \IfPDFManagementActiveTF{true code}{false code}
- \IfFormatAtLeastTF{2020/10/01}{
- \bool_if:nTF
- {
- \bool_lazy_and_p:nn
- { \cs_if_exist_p:N \pdfmanagement_if_active_p: }
- { \pdfmanagement_if_active_p: }
- }
- { \mit@pdfmanagementtrue }
- { \mit@pdfmanagementfalse
- \msg_warning:nn { \ClassName } { loading_hyperxmp }
- }
- }{ \mit@pdfmanagementfalse
- \msg_warning:nn { \ClassName } { loading_hyperxmp }
- }
-\ExplSyntaxOff
+\IfPDFManagementActiveTF{
+ \mit@pdfmanagementtrue
+}{
+ \mit@pdfmanagementfalse
+ \ClassWarningNoLine{\ClassName}{pdfmanagement is not active. Will load hyperxmp and bookmark packages instead}
+}
% Enable pre-2020/10 formats to access essential macros later moved into LaTeX kernel
\ifdefined\NewDocumentCommand\else
@@ -99,6 +89,7 @@
\IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
}
}
+% Most compatibility commands will be dropped as time goes by ...
%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -163,19 +154,42 @@
%%%%%%%%%%%%% Patch table of contents, list of figures, and list of tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% We'd like these sections to have pdf bookmarks and to have the two lists appear in the table of contents and have
+% pdf bookmarks. This is not automatic for \chapter*, which is the format of toc, lof, and lot.
+
\RequirePackage{etoolbox}% provides \patchcmd
-% We'd like these sections to have pdf bookmarks and to have the two lists appear in the table of contents
+\patchcmd{\tableofcontents}{\contentsname}{\pdfbookmark[0]{Table of Contents}{toc}\contentsname}{}{} % placement matters.
+
+%% 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.
+
+\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
+\providecommand*{\toclevel@frontmatter}{0}% prevent warning, see hyperref manual Sec. 13.3
+\providecommand*{\toclevel@backmatter}{0}
-\patchcmd{\tableofcontents}{\@starttoc{toc}}{\pdfbookmark[0]{Table of Contents}{toc}\@starttoc{toc}}{}{}
-\patchcmd{\listoffigures}{\chapter*{\listfigurename}}{\chapter*{\listfigurename}\addcontentsline{toc}{chapter}{\listfigurename}}{}{}
-\patchcmd{\listoftables}{\chapter*{\listtablename}}{\chapter*{\listtablename}\addcontentsline{toc}{chapter}{\listtablename}}{}{}
+%% if you want different formatting for front/back matter, change here (cf. report.cls).
+\patchcmd{\l@frontmatter}{\bfseries}{\itshape}{}{}
+\patchcmd{\l@frontmatter}{\nobreak\hfil}{\upshape\nobreak\hfil}{}{}
+\patchcmd{\l@frontmatter}{1.0em}{3pt}{}{}
+\patchcmd{\l@backmatter}{\bfseries}{\itshape}{}{}
+\patchcmd{\l@backmatter}{\nobreak\hfil}{\upshape\nobreak\hfil}{}{}
%%%%%%%%%%%%% 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
+%\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
\RequirePackage{mathtools}% loads and extends amsmath; must load before hyperref and unicode-math
@@ -198,16 +212,17 @@
https://ctan.org/tex-archive/macros/latex/contrib/mitthesis/MIT-thesis-template.}%
}%
\else
- \RequirePackage[hyperref,dvipsnames,svgnames,x11names]{xcolor}
+ \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)
% NOT every font includes a bold math version, so you may need to use other math macros in the headings to get bold math <==
- \titleformat{\section}{\mathversion{bold}\normalfont\Large\bfseries}{\thesection }{1em}{}
+ % 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}{}
+ \titleformat{\subsubsection}{\mathversion{bold}\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
%
\AtBeginDocument{
\hypersetup{
@@ -217,7 +232,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
@@ -226,21 +241,21 @@
\RequirePackage{iftex}[2019/11/07]% provides \ifpdftex, etc.
-\typeout{^^JFontset key is \mit@fontset.^^J}
+\ClassNoteNoLine{\ClassName}{Fontset key is \mit@fontset}
\IfFileExists{fontsets/\ClassName-\mit@fontset.tex}{% 2023/07/03
\input{fontsets/\ClassName-\mit@fontset.tex}
}{%
- \ClassWarning{\ClassName}{^^JFontset file \ClassName-\mit@fontset.tex or subdirectory fontsets not found, will look for \mit@fontset.tex in your working directory.}
+ \ClassWarning{\ClassName}{Fontset file \ClassName-\mit@fontset.tex or subdirectory fontsets not found, will look for \mit@fontset.tex in your working directory}
\IfFileExists{\mit@fontset.tex}{% 2023/08/30
\input{\mit@fontset.tex}
}{
- \ClassWarning{\ClassName}{^^JFontset file \mit@fontset.tex not found, using default fonts. You may need to place the fontset file into your working directory.}
+ \ClassWarning{\ClassName}{Fontset file \mit@fontset.tex not found, using default fonts. You may need to place the fontset file into your working directory}
\ifpdftex
- \typeout{^^JLoading Computer Modern text and math fonts (default for pdftex).^^J}
+ \ClassNoteNoLine{\ClassName}{Loading Computer Modern text and math fonts (default for pdftex)}
\RequirePackage[T1]{fontenc}
\RequirePackage{bm}
\else
- \typeout{^^JLoading Latin Modern text and math fonts (default for unicode engines).^^J}
+ \ClassNoteNoLine{\ClassName}{Loading Latin Modern text and math fonts (default for unicode engines)}
\RequirePackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
% suppress tiresome warnings about lack of integration between mathtools and unicode-math.
% Unicode-math loads fontspec package, but default fonts are not selected by fontspec in this case.
@@ -251,15 +266,18 @@
%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage[psdextra]{hyperref}
-% the new pdf-management scheme loads the bookmarks package internally.
% authors should use hypersetup to set details, in root .tex file
\urlstyle{same} % this changes font for \url to the current text font
-\providecommand\hrefurl[2]{\href{#1}{#2}}% in case \DocumentMetadata has not been loaded
\RequirePackage{doi} % create macro for hyperlinking doi numbers
+%% In case \DocumentMetadata was not loaded
+\providecommand\hrefurl[2]{\href{#1}{#2}}
+
+% pdfmanagement loads bookmarks package internally
\ifmit@pdfmanagement\else
\RequirePackage{hyperxmp}
+ \RequirePackage{bookmark}
\fi
% the user can alter these choices in the preamble, or by
@@ -284,12 +302,14 @@
%%%%%%%%%%%% PDF bookmark strings %%%%%%%%%%%%%%%%
-%%% Since \bm may be useful in headings, use this fix to reduce frequency with which alternate
-%%% bookmark strings must be given with commands such as \section{ \texorpdfstring{texstring}{pdfstring} }
+%%% By early 2024, \pdfstring removes all robust commands from bookmarks, so that such commands
+%%% don't cause errors; the following pdfstringdisables serve to suppress warnings.
+
+%% \bm may be useful in headings, but let's disable in the associated bookmarks
\pdfstringdefDisableCommands{%
\def\bm#1#{\relax}%
}
-%%% Let's disable \( and \) in pdf bookmarks
+%% Let's disable \( and \) in pdf bookmarks
\pdfstringdefDisableCommands{%
\def\({\relax}%
\def\){\relax}%
@@ -312,10 +332,22 @@
\def\footnote#1{}%
}
+%%% 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
+%\let\oldHyPsd@CatcodeWarning\HyPsd@CatcodeWarning
+%\renewcommand{\HyPsd@CatcodeWarning}[1]{%
+% \ifnum\pdfstrcmp{#1}{math shift}=0 % If 'math shift' is present, do nothing
+% \else
+% \oldHyPsd@CatcodeWarning{#1}% % else, keep usual warning.
+% \fi
+%}
\ExplSyntaxOn
%\debug_on:n {all}
+\prop_gput:Nnn \g_msg_module_type_prop { \ClassName } { Class }
+
%%%%%%%%%% Commas between successive footnotes %%%
\cs_new:Npn \__mitthesis_NoteComma:n { \peek_meaning:NT \footnote {\textsuperscript{\mdseries,}} }
@@ -327,6 +359,10 @@
%%%%%%%%%%%% MACROS FOR HANDLING TITLE AND ABSTRACT PAGES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\AtBeginDocument{
+ \providecommand{\textls}[2][]{#2}% in case microtype is not loaded
+}
+
%%%%%%%%%% Degree Date Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tl_new:N \g__dd_month_tl
@@ -346,11 +382,10 @@
}
\msg_new:nnnn { \ClassName } { wrong_month } {The\ degree\ month\ must\ be\ one\ of\ February,\ May,\ June,\ or\ September.} {You\ cannot\ use\ #1\ as\ the\ degree\ month.}
-\cs_generate_variant:Nn \text_titlecase:n {o,V}
\NewDocumentCommand\DegreeDate{mm}{% {month}{year}
\__dd_setdates:nn {#1}{#2}
- \cs_new:Npn \DegreeMonth { \text_titlecase:V { \g__dd_month_tl } }
- \cs_new:Npn \DegreeYear { \text_titlecase:V { \g__dd_year_tl } }
+ \cs_new:Npn \DegreeMonth { \text_titlecase_first:n { \text_lowercase:n \g__dd_month_tl } }
+ \cs_new:Npn \DegreeYear { \text_expand:n { \g__dd_year_tl } }% edited 2024/06/24
}
\msg_new:nnnn { \ClassName } { no_degree_date } {Missing\ degree\ date!}{
You\ MUST\ issue\ the\ \DegreeDate{month}{year}\ command\ between\ \string\begin{document}\ and\ \string\maketitle.}
@@ -412,6 +447,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
@@ -420,11 +458,11 @@
\int_incr:N \l__author_autcrcnt_int
\int_while_do:nNnn { \l__author_autcrcnt_int } < { \g_author_authorcnt_int }
{
- \tl_gput_right:Nx \g__author_ca_tl {,\ \seq_item:cn { g_author_name_seq } { \l__author_autcrcnt_int } }
+ \tl_gput_right:Nx \g__author_ca_tl {,~\seq_item:cn { g_author_name_seq } { \l__author_autcrcnt_int } }
\int_incr:N \l__author_autcrcnt_int
}
\int_compare:nNnT { \l__author_autcrcnt_int } = { \g_author_authorcnt_int } {
- \tl_gput_right:Nx \g__author_ca_tl {\ and\ \seq_item:cn { g_author_name_seq } { \l__author_autcrcnt_int } }
+ \tl_gput_right:Nx \g__author_ca_tl {~and~\seq_item:cn { g_author_name_seq } { \l__author_autcrcnt_int } }
}
\tl_set:Nn \l_tmpa_tl {\tl_item:Nn \g__author_ca_tl {-1} }% get last token
\str_case_e:nnT
@@ -432,6 +470,7 @@
{ {.}{} }
{ \__copyright_remove_period:N { \g__author_ca_tl } }% remove last token if it is a period
\__author_pdfcopyrightauthor:
+ \cs_gset:Npe \@author { \tl_use:N \g__author_ca_tl }% 2024/08/06
}
\cs_new:Nn \__copyright_remove_period:N
{
@@ -444,11 +483,11 @@
\int_until_do:nNnn { \l_tmpa_int } = { \g_author_authorcnt_int }
{
\int_incr:N \l_tmpa_int
- \tl_gput_right:Nx \g__author_pdfca_tl {,\ { \seq_item:cn { g_author_name_seq } { \l_tmpa_int } } }
- }
+ \tl_gput_right:Nx \g__author_pdfca_tl {;\ { \seq_item:cn { g_author_name_seq } { \l_tmpa_int } } }
+ % changed comma to semicolon for consistency with Dublin Core metadata format, 2024/08/30
+ }
}
-
\tl_new:N \g__author_namesize_tl
\tl_gset:Nn \g__author_namesize_tl { \large }
\cs_new:Nn \__author_block: {
@@ -516,7 +555,6 @@
\seq_new:N \g_supervisor_title_seq
\int_gzero_new:N \g_supervisor_supervisorcnt_int
-
\NewDocumentCommand\Supervisor{mm}{
\tl_if_blank:nTF{#1}{
\msg_error:nn { \ClassName } { blank_supervisor }
@@ -535,11 +573,27 @@
\cs_new_protected:Nn \__supervisor_data_add:nn
{
\int_gincr:N \g_supervisor_supervisorcnt_int
- \seq_gput_right:cx { g_supervisor_name_seq } { \tl_trim_spaces:n {#1} }
+ \seq_gput_right:cx { g_supervisor_name_seq } { \tl_trim_spaces:n {#1} }
\seq_gput_right:cx { g_supervisor_title_seq } { \tl_trim_spaces:n {#2} }
}
-
+\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
+
+% 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
+ { \cs_if_exist:NTF \text_titlecase_all:n % not def'd until 2023/07/08
+ { \text_titlecase_all:n { \text_lowercase:n { \tl_trim_spaces:n {#1} } } }
+ { \tl_trim_spaces:n {#1} }
+ }
+ \tl_gset:Nn \g_abstract_supervisor_designation_tl
+ { \text_titlecase_first:n { \text_lowercase:n { \tl_trim_spaces:n {#1} } } }
+ }
+
\cs_new:Nn \__supervisor_abstractblock: {
\int_zero_new:N \l__supervisor_supervisorno_int
\int_incr:N \l__supervisor_supervisorno_int
@@ -549,11 +603,13 @@
\msg_error:nn { \ClassName } { no_supervisor }
}
{\int_until_do:nNnn { \l__supervisor_supervisorno_int } = { \g_supervisor_supervisorcnt_int } {
- Thesis\ supervisor:\space \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par
+ \g_abstract_supervisor_designation_tl :\space
+ \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par
Title:\space \seq_item:cn { g_supervisor_title_seq } { \l__supervisor_supervisorno_int }\par\medskip
\int_incr:N \l__supervisor_supervisorno_int
}
- Thesis\ supervisor:\space \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par
+ \g_abstract_supervisor_designation_tl :\space
+ \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par
Title:\space \seq_item:cn { g_supervisor_title_seq } { \l__supervisor_supervisorno_int }\ignorespaces
}
}
@@ -593,8 +649,8 @@
{ Missing\ acceptor\ department,\ check\ for\ blank\ in\ \Acceptor{name}{department}{title}\ command. }{
You\ MUST\ provide\ the\ acceptor's\ department\ using\ the\ \Acceptor{name}{department}{title}\ command.}
\msg_new:nnn { \ClassName } { blank_acceptor_title }
- { Missing\ acceptor\ title\ (blank\ in\ \Acceptor{name}{department}{title}\ command).\ Perhaps\ you\ are\ trying\ to\ save\ vertical\ space?\
- You\ can\ put\ the\ acceptor\ title\ into\ department\ field\ instead.\ For\ consistency,\ I\ will\ omit\ titles\ of\ ALL\ acceptors.}
+ { Missing\ acceptor\ title\ (blank\ in\ \Acceptor{name}{department}{title}\ command).\space Perhaps\ you\ are\ trying\ to\ save\ vertical\ space?\space
+ You\ can\ put\ the\ acceptor\ title\ into\ department\ field\ instead.\space For\ consistency,\ I\ will\ omit\ titles\ of\ ALL\ acceptors.}
\cs_new_protected:Nn \__acceptor_data_add:nnn
{
@@ -607,36 +663,56 @@
%%%%%%%%%% End Acceptor Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% Degree Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%% Degree Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% extensive edits 2024/06/25
\seq_new:N \g_degree_name_seq
\seq_new:N \g_degree_department_seq
\int_gzero_new:N \g_degree_degreecnt_int
-\int_gzero_new:N \g__degree_degreeflag_int
+\int_gzero_new:N \g_degree_deptcnt_int
\NewDocumentCommand\Degree{mm}
{
- \tl_if_blank:nTF {#1} {
- \msg_error:nn { \ClassName } { blank_degree }
- }{
- \__degree_data_add:nn { #1 } { #2 }
- }
- \tl_if_blank:nT {#2} {
- \int_gset_eq:NN \g__degree_degreeflag_int \g_degree_degreecnt_int
- \msg_warning:nnx { \ClassName } { blank_degree_dep } { \int_to_arabic:n { \g__degree_degreeflag_int } }
- \tl_if_blank:nT {#1} { \int_gincr:N \g__degree_degreeflag_int }% in case both are blank
- }
+ \int_compare:nNnTF { \g_degree_deptcnt_int } = {0} {
+ \tl_if_blank:nTF {#1} {
+ \msg_error:nn { \ClassName } { no_degree_name }
+ }{
+ \__degree_data_add:nn { #1 } { #2 }
+ \int_gincr:N \g_degree_degreecnt_int
+ }
+ \tl_if_blank:nT {#2} {
+ \msg_error:nn { \ClassName } { no_degree_dep }
+ }{
+ \int_gincr:N \g_degree_deptcnt_int
+ }
+ }{
+ \tl_if_blank:nTF {#1} {
+ \msg_warning:nn { \ClassName } { blank_degree }
+ }{
+ \__degree_data_add:nn { #1 } { #2 }
+ \int_gincr:N \g_degree_degreecnt_int
+ }
+ \tl_if_blank:nTF {#2} {
+ \msg_warning:nn { \ClassName } { blank_degree_dep }
+ }{
+ \int_gincr:N \g_degree_deptcnt_int
+ \tl_if_blank:nT {#1} { % in case department is blank
+ \__degree_data_add:nn { #1 } { #2 }
+ }
+ }
+ }
}
+
\cs_new_protected:Nn \__degree_data_add:nn
{
- \int_gincr:N \g_degree_degreecnt_int
\seq_gput_right:cx { g_degree_name_seq } { \tl_trim_spaces:n {#1} }
\seq_gput_right:cx { g_degree_department_seq } { \tl_trim_spaces:n {#2} }
}
-\msg_new:nnnn { \ClassName } { blank_degree } {Missing\ degree\ name,\ check\ for\ blank\ in\ \Degree\ command.}
- {You\ MUST\ provide\ a\ degree\ name\ using\ the\ \Degree{name}{department}\ command.}
-\msg_new:nnnn { \ClassName } { blank_degree_dep } {Missing\ degree\ department\ for\ Degree\ command\ number\
- #1.\ Will\ treat\ as\ a\ duplicate\ of\ previous\ department.}{}
+\msg_new:nnnn { \ClassName } { no_degree_name } {Missing\ degree\ name,\ check\ for\ blank\ in\ \Degree\ command.}
+ {You\ MUST\ provide\ at\ least\ one\ degree\ name\ using\ the\ \Degree{name}{department}\ command.}
+\msg_new:nnnn { \ClassName } { no_degree_dep } {Missing\ degree\ department\ for\ Degree\ command.}
+ {You\ MUST\ provide\ at\ least\ one\ department\ name\ using\ the\ \Degree{name}{department}\ command.}
+\msg_new:nnnn { \ClassName } { blank_degree } {Missing\ degree\ name\ in\ second\ Degree\ command.\ Will\ treat\ as\ two\ departments\ issuing\ one\ degree.}{}
+\msg_new:nnnn { \ClassName } { blank_degree_dep } {Missing\ degree\ department\ in\ second\ \ Degree\ command.\ Will\ treat\ as\ one\ department\ issuing\ two\ degrees.}{}
\int_zero_new:N \l__degree_degreeno_int
\int_zero_new:N \l__degree_departmentno_int
@@ -651,25 +727,23 @@
\int_incr:N \l__degree_departmentno_int
\cs_new:Nx \__degree_prevdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } }
\cs_new:Nn \__degree_currdept: {}
- \mbox {Submitted\ to\ the\ } \mbox {\__degree_prevdept:}
- \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_degreecnt_int } {
+% \mbox {Submitted\ to\ the\ } \mbox {\__degree_prevdept:}
+ {Submitted\ to\ the\ \__degree_prevdept:}
+ \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_deptcnt_int } {
\int_incr:N \l__degree_departmentno_int
\cs_set:Nx \__degree_currdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } }
- \int_compare:nNnTF { \l__degree_departmentno_int } = {\g__degree_degreeflag_int } { \scan_stop: }
- {
- \mbox {\ and\ the}\linebreak
- \mbox {\__degree_currdept: }
- }
- }
+ \mbox {\ and}\linebreak
+ \mbox {the\ \__degree_currdept: }
+ }
\linebreak \mbox {in\ partial\ fulfillment\ of\ the\ requirements\ for\ the\
\int_compare:nNnTF { \g_degree_degreecnt_int } > {1} {degrees} {degree}
\ of}
- \par%\medskip, removed 2023/10/25 to work better with four block layout of title page
+ \par
\int_until_do:nNnn { \l__degree_degreeno_int } = { \g_degree_degreecnt_int } {
- \text_uppercase:n {\seq_item:cn { g_degree_name_seq } { \l__degree_degreeno_int }}\par and\par
+ \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
}
- \text_uppercase:n {\seq_item:cn { g_degree_name_seq } { \l__degree_degreeno_int }}\par
+ \textls[60]{\text_uppercase:n {\seq_item:cn { g_degree_name_seq } { \l__degree_degreeno_int }}}\par
}
\msg_new:nnnn { \ClassName } { no_degree }
{ Missing\ degree!\ You\ must\ issue\ the\ \Degree{name}{department}\ command. }{
@@ -681,25 +755,23 @@
\int_set:Nn \l__degree_departmentno_int {1}
\cs_set:Nx \__degree_prevdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } }
\cs_set:Nn \__degree_currdept: {}
- \mbox {Submitted\ to\ the\ }\mbox{\__degree_prevdept:}
- \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_degreecnt_int } {
- \int_incr:N \l__degree_departmentno_int
+% \mbox {Submitted\ to\ the\ }\mbox {\__degree_prevdept:} % changed 2024/4/20
+ {Submitted\ to\ the\ \__degree_prevdept:}
+ \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_deptcnt_int } {
+ \int_incr:N \l__degree_departmentno_int
\cs_set:Nx \__degree_currdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } }
- \int_compare:nNnTF { \g__degree_degreeflag_int } = { \g_degree_degreecnt_int } { \scan_stop: }
- {
- \mbox {\ and\ the}\linebreak
- \mbox { \__degree_currdept: }
- }
- }
+ \mbox {\ and}\linebreak
+ \mbox {the\ \__degree_currdept: }
+ }
\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
\int_until_do:nNnn { \l__degree_degreeno_int } = { \g_degree_degreecnt_int } {
- \text_uppercase:n {\seq_item:cn { g_degree_name_seq } { \l__degree_degreeno_int }}\par and\par
+ \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
}
- \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 }}}\par\medskip
}
%%%%%%%%%% End Degree Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -749,7 +821,8 @@
\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 },\ Thesis\ Supervisor\\[1em]
+ \> \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 } {
@@ -835,8 +908,9 @@
\RenewDocumentCommand{\title}{m}
{
\__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.
}
}
%
@@ -883,12 +957,12 @@
\tl_gset:Nn \g_copyright_copyrightlicencse_tl
{This\ work\ is\ licensed\ under\ a\ \mbox{\g_copyright_cclicensetext_tl}\ license.\par\g_copyright_mitpermission_tl}
\tl_gset:Nn \g_copyright_pdfrightstext_tl
- {This\ work\ is\ licensed\ under\ a\ \g_copyright_ccname_tl\ license.\ \g_copyright_mitpermission_tl}
+ {This\ work\ is\ licensed\ under\ a\ \g_copyright_ccname_tl\ license.\space \g_copyright_mitpermission_tl}
}{
\tl_gset:Nn \g_copyright_copyrightlicencse_tl
{All\ rights\ reserved. \par\g_copyright_mitpermission_tl}
\tl_gset:Nn \g_copyright_pdfrightstext_tl
- {All\ rights\ reserved.\ \g_copyright_mitpermission_tl}
+ {All\ rights\ reserved.\space \g_copyright_mitpermission_tl}
}
\int_compare:nNnTF {\g_author_authorcnt_int} > {1}
{
@@ -908,14 +982,16 @@
{\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}
- {\Large\textbf{\g_mitthesis_title_tl}\phantomsection\addcontentsline{toc}{chapter}{Title\ page}\par} % revise for tagging in future
- \__titlepage_blockskip:nn {12}{1.5}% new idea
+ \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
- \text_uppercase:n { \g_titlepage_institution_name_tl }\par
+ 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,...
@@ -925,7 +1001,7 @@
}
}
\hypersetup{
- pdfcopyright={Copyright\ \DegreeYear\ by\ \CopyrightAuthor.\ \g_copyright_pdfrightstext_tl},
+ pdfcopyright={Copyright\ \DegreeYear\ by\ \CopyrightAuthor.\space \g_copyright_pdfrightstext_tl},
pdfauthor={\g__author_pdfca_tl},
pdfcaptionwriter = {\g__author_pdfca_tl},
}
@@ -937,14 +1013,17 @@
%%%%%%%%%% Abstract page Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% to change abstract name, follow either of these approaches in your preamble:
+% to change abstract name (e.g., to "Summary"), follow either approach in your preamble:
% \RenewExpandableDocumentCommand\abstractname{}{Summary}
% \renewcommand\abstractname{Summary}
\RenewDocumentEnvironment{abstract}{+b}{
\newpage
\begin{center}
- {\large{\textbf{\g_mitthesis_title_tl}}\phantomsection\addcontentsline{toc}{chapter}{\abstractname}\par} % revise for tagging as LaTeX evolves further
+ \pdfbookmark[0]{Abstract}{abstract}
+ {\large{\textbf{\g_mitthesis_title_tl}}
+ %\phantomsection\addcontentsline{toc}{chapter}{\abstractname}
+ \par}
\setlength{\parskip}{0.5\baselineskip plus 2pt minus 2pt}
\__author_abstractblock:
\par
@@ -989,14 +1068,13 @@
\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.
\NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname} O{section}}{%
\setlength\columnsep{2em}
\setlength{\nomenwidth}{#1}
- \csname #3\endcsname *{#2}% this level will vary amongst users!
- \phantomsection\addcontentsline{toc}{#3}{#2}% tagged pdf may not capture both of these ... 2023/10/18
+ \MakeLinkTarget*{nomenclature}\csname #3\endcsname *{#2}\addcontentsline{toc}{#3}{#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/moderncv/moderncv.cls b/Master/texmf-dist/tex/latex/moderncv/moderncv.cls
index 44b9e359144..20cedc8b615 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncv.cls
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncv.cls
@@ -1,5 +1,5 @@
%% start of file `moderncv.cls'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{moderncv}[2022-02-21 v2.3.1 modern curriculum vitae and letter document class]
+\ProvidesClass{moderncv}[2024-07-18 v2.4.1 modern curriculum vitae and letter document class]
%-------------------------------------------------------------------------------
@@ -103,7 +103,8 @@
\urlstyle{tt}
\AtEndPreamble{
\pagenumbering{arabic}% has to be issued before loading hyperref, as to set \thepage and hence to avoid hyperref issuing a warning and setting pdfpagelabels=false
- \RequirePackage[unicode]{hyperref}% unicode is required for unicode pdf metadata
+ \PassOptionsToPackage{unicode}{hyperref}
+ \RequirePackage{hyperref}
\hypersetup{
breaklinks,
pdfborder = 0 0 0,
@@ -114,10 +115,16 @@
bookmarksopen = true,
bookmarksdepth= 2,% to show sections and subsections
pdfauthor = {\@firstname{}~\@lastname{}},
- pdftitle = {\@firstname{}~\@lastname{}\notblank{\@title}{ -- \@title}{}},
+ pdftitle =
+ {\@firstname{}~\@lastname{}\expandafter\notblank\expandafter{\@title}{ -- \@title}{}}, %\notblank does not expand argument automatically
pdfsubject = {R\'{e}sum\'{e} of \@firstname{}~\@lastname{}},
pdfkeywords = {\@firstname{}~\@lastname{}, curriculum vit\ae{}, r\'{e}sum\'{e}}}}
+% pdftex not using pdfmanagement-testphase requires T1 font encoding in order to handle links containing special characters somewhat properly
+\ifpdftex
+ \IfPDFManagementActiveTF{}{\RequirePackage[T1]{fontenc}}
+\fi
+
% graphics
\RequirePackage{graphicx}
@@ -138,9 +145,9 @@
\@ifundefined{r@lastpage}{}{%
\ifthenelse{\pageref{lastpage}>1}{%
\newlength{\pagenumberwidth}%
- \settowidth{\pagenumberwidth}{\color{color2}\addressfont\itshape\strut\thepage/\pageref{lastpage}}%
+ \settowidth{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\pageref{lastpage}}%
\fancypagestyle{plain}{%
- \fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\pageref{lastpage}}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style)
+ \fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\protect\NoHyper\pageref{lastpage}\protect\endNoHyper}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style)
\pagestyle{plain}}{}}\fi}%
\AtEndDocument{\label{lastpage}}}
\pagestyle{plain}
@@ -231,8 +238,9 @@
\newcommand*{\email}[1]{\def\@email{#1}}
% defines one's home page (optional)
-% usage: \homepage{<url>}
-\newcommand*{\homepage}[1]{\def\@homepage{#1}}
+% usage: \homepage[<optional protocol>]{<url>}
+% where <optional protocol> should be either "https" (default) or "http"
+\NewDocumentCommand{\homepage}{O{https}m}{\def\@homepageprotocol{#1}\def\@homepage{#2}}
% adds a fixed/mobile/fax number to one's personal information (optional)
% usage: \phone[<optional type>]{<number>}
@@ -247,11 +255,41 @@
% http://latex.org/forum/viewtopic.php?t=12239
\def\SplitMyMacro#1/#2{#2}
-
-
+
+
% adds a social link to one's personal information (optional)
% usage: \social[<optional type>][<optional url>]{<account name>}
-% where <optional type> should be either "linkedin", "xing", "twitter", "github", "gitlab", "bitbucket" or "skype"
+% where <optional type> should be either:
+% - "linkedin"
+% - "xing"
+% - "twitter"
+% - "mastodon"
+% - "github"
+% - "gitlab"
+% - "stackoverflow"
+% - "bitbucket"
+% - "skype"
+% - "orcid"
+% - "researchgate"
+% - "researcherid"
+% - "telegram"
+% - "whatsapp"
+% - "signal"
+% - "matrix"
+% - "googlescholar"
+% - "codeberg"
+% - "discord"
+% - "twitch"
+% - "youtube"
+% - "tiktok"
+% - "instagram"
+% - "soundcloud"
+% - "steam
+% - "xbox"
+% - "playstation"
+% - "battlenet"
+% - "arxiv"
+% - "inspire"
\collectionnew{socials}
\NewDocumentCommand{\social}{O{}O{}m}{%
\ifthenelse{\equal{#2}{}}%
@@ -259,6 +297,7 @@
\ifthenelse{\equal{#1}{linkedin}} {\collectionadd[linkedin]{socials} {\protect\httpslink[#3]{www.linkedin.com/in/#3}}} {}%
\ifthenelse{\equal{#1}{xing}} {\collectionadd[xing]{socials} {\protect\httpslink[#3]{www.xing.com/profile/#3}}} {}%
\ifthenelse{\equal{#1}{twitter}} {\collectionadd[twitter]{socials} {\protect\httpslink[#3]{twitter.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{mastodon}} {\collectionadd[mastodon]{socials} {\protect\httpslink[#3]{#3}}} {}%
\ifthenelse{\equal{#1}{github}} {\collectionadd[github]{socials} {\protect\httpslink[#3]{github.com/#3}}} {}%
\ifthenelse{\equal{#1}{gitlab}} {\collectionadd[gitlab]{socials} {\protect\httpslink[#3]{gitlab.com/#3}}} {}%
\ifthenelse{\equal{#1}{stackoverflow}}{\collectionadd[stackoverflow]{socials}{\protect\httpslink[#3]{stackoverflow.com/users/#3}}} {}%
@@ -271,7 +310,20 @@
\ifthenelse{\equal{#1}{whatsapp}} {\collectionadd[whatsapp]{socials} {\protect\httpslink[#3]{wa.me/#3}}} {}%
\ifthenelse{\equal{#1}{signal}} {\collectionadd[signal]{socials} {#3}} {}%
\ifthenelse{\equal{#1}{matrix}} {\collectionadd[matrix]{socials} {\httpslink[#3]{matrix.to/\#/#3}}} {}%
- \ifthenelse{\equal{#1}{googlescholar}}{\collectionadd[googlescholar]{socials}{\protect\httpslink[#3]{scholar.google.com/citations?user=#3}}} {}% {}%
+ \ifthenelse{\equal{#1}{googlescholar}}{\collectionadd[googlescholar]{socials}{\protect\httpslink[#3]{scholar.google.com/citations?user=#3}}} {}%
+ \ifthenelse{\equal{#1}{codeberg}} {\collectionadd[codeberg]{socials} {\protect\httpslink[#3]{codeberg.org/#3}}} {}%
+ \ifthenelse{\equal{#1}{discord}} {\collectionadd[discord]{socials} {#3}} {}%
+ \ifthenelse{\equal{#1}{twitch}} {\collectionadd[twitch]{socials} {\protect\httpslink[#3]{twitch.tv/#3}}} {}%
+ \ifthenelse{\equal{#1}{youtube}} {\collectionadd[youtube]{socials} {\protect\httpslink[#3]{youtube.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{tiktok}} {\collectionadd[tiktok]{socials} {\protect\httpslink[#3]{tiktok.com/@#3}}} {}%
+ \ifthenelse{\equal{#1}{instagram}} {\collectionadd[instagram]{socials} {\protect\httpslink[#3]{instagram.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{soundcloud}} {\collectionadd[soundcloud]{socials} {\protect\httpslink[#3]{soundcloud.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{steam}} {\collectionadd[steam]{socials} {\protect\httpslink[#3]{steamcommunity.com/id/#3}}} {}%
+ \ifthenelse{\equal{#1}{xbox}} {\collectionadd[xbox]{socials} {\protect\httpslink[#3]{account.xbox.com/profile?gamertag=#3}}} {}%
+ \ifthenelse{\equal{#1}{playstation}} {\collectionadd[playstation]{socials} {#3}} {}%
+ \ifthenelse{\equal{#1}{battlenet}} {\collectionadd[battlenet]{socials} {#3}} {}%
+ \ifthenelse{\equal{#1}{arxiv}} {\collectionadd[arxiv]{socials} {\protect\httpslink[#3]{arxiv.org/a/#3}}} {}%
+ \ifthenelse{\equal{#1}{inspire}} {\collectionadd[inspire]{socials} {\protect\httpslink[#3]{inspirehep.net/authoris/#3}}} {}%
}
{\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}%
@@ -312,6 +364,7 @@
\newcommand*{\linkedinsocialsymbol} {}
\newcommand*{\xingsocialsymbol} {}
\newcommand*{\twittersocialsymbol} {}
+\newcommand*{\mastodonsocialsymbol} {}
\newcommand*{\githubsocialsymbol} {}
\newcommand*{\gitlabsocialsymbol} {}
\newcommand*{\stackoverflowsocialsymbol}{}
@@ -325,6 +378,19 @@
\newcommand*{\whatsappsocialsymbol} {}
\newcommand*{\matrixsocialsymbol} {}
\newcommand*{\signalsocialsymbol} {}
+\newcommand*{\codebergsocialsymbol} {}
+\newcommand*{\discordsocialsymbol} {}
+\newcommand*{\twitchsocialsymbol} {}
+\newcommand*{\youtubesocialsymbol} {}
+\newcommand*{\tiktoksocialsymbol} {}
+\newcommand*{\instagramsocialsymbol} {}
+\newcommand*{\soundcloudsocialsymbol} {}
+\newcommand*{\steamsocialsymbol} {}
+\newcommand*{\xboxsocialsymbol} {}
+\newcommand*{\playstationsocialsymbol} {}
+\newcommand*{\battlenetsocialsymbol} {}
+\newcommand*{\arxivsocialsymbol} {}
+\newcommand*{\inspiresocialsymbol} {}
% other
%------
@@ -441,6 +507,8 @@
% styles
\newcommand*{\namestyle}[1]{{\namefont#1}}
+\NewDocumentCommand{\firstnamestyle}{+m}{{\namefont#1}}
+\NewDocumentCommand{\lastnamestyle}{+m}{{\namefont#1}}
\newcommand*{\titlestyle}[1]{{\titlefont#1}}
\newcommand*{\addressstyle}[1]{{\addressfont#1}}
\newcommand*{\quotestyle}[1]{{\quotefont#1}}
@@ -492,12 +560,16 @@
% usage: \cvdoubleitem[spacing]{header1}{text1}{header2}{text2}
\newcommand*{\cvdoubleitem}[5][.25em]{}
+% makes a resume line 3 headers and their corresponding text
+% usage: \cvtripleitem[spacing]{header1}{text1}{header2}{text2}{header3}{text3}
+\newcommand*{\cvtripleitem}[7][.1em]{}
+
% makes a resume line with a list item
-% usage: \cvlistitem[label]{item}
+% usage: \cvlistitem[spacing]{item}
\newcommand*{\cvlistitem}[2][\listitemsymbol]{}
% makes a resume line with 2 list items
-% usage: \cvlistdoubleitem[label]{item1}{item2}
+% usage: \cvlistdoubleitem[spacing]{item1}{item2}
\newcommand*{\cvlistdoubleitem}[3][\listitemsymbol]{}
% makes a typical resume job / education entry
@@ -510,25 +582,39 @@
% makes a generic hyperlink
% usage: \link[optional text]{link}
-\newcommand*{\link}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\href{#2}{#2}}%
- {\href{#2}{#1}}}
+% uses pdfmanagement-testphase when available, which provides url encoding of special characters
+\NewDocumentCommand{\link}{O{}m}{%
+ \IfPDFManagementActiveTF{%
+ \ifthenelse{\equal{#1}{}}%
+ {\hrefurl[urlencode]{#2}{#2}}%
+ {\hrefurl[urlencode]{#2}{#1}}}{%
+ \ifthenelse{\equal{#1}{}}%
+ {\href{#2}{#2}}%
+ {\href{#2}{#1}}}}
% makes a http hyperlink
% usage: \httplink[optional text]{link}
-\newcommand*{\httplink}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\href{http://#2}{#2}}%
- {\href{http://#2}{#1}}}
-
+% uses pdfmanagement-testphase when available, which provides url encoding of special characters
+\NewDocumentCommand{\httplink}{O{}m}{%
+ \IfPDFManagementActiveTF{%
+ \ifthenelse{\equal{#1}{}}%
+ {\hrefurl[urlencode]{http://#2}{#2}}%
+ {\hrefurl[urlencode]{http://#2}{#1}}}{%
+ \ifthenelse{\equal{#1}{}}%
+ {\href{http://#2}{#2}}%
+ {\href{http://#2}{#1}}}}
% makes an https hyperlink
% usage: \httpslink[optional text]{link}
-\newcommand*{\httpslink}[2][]{%
- \ifthenelse{\equal{#1}{}}%
- {\href{https://#2}{#2}}%
- {\href{https://#2}{#1}}}
+% uses pdfmanagement-testphase when available, which provides url encoding of special characters
+\NewDocumentCommand{\httpslink}{O{}m}{%
+ \IfPDFManagementActiveTF{%
+ \ifthenelse{\equal{#1}{}}%
+ {\hrefurl[urlencode]{https://#2}{#2}}%
+ {\hrefurl[urlencode]{https://#2}{#1}}}{%
+ \ifthenelse{\equal{#1}{}}%
+ {\href{https://#2}{#2}}%
+ {\href{https://#2}{#1}}}}
% makes an email hyperlink
% usage: \emaillink[optional text]{link}
@@ -712,8 +798,10 @@
% elements
\newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}}
\renewcommand*{\date}[1]{\def\@date{#1}}\date{\today}
+\newcommand*{\subject}[1]{\def\@subject{#1}}
\newcommand*{\opening}[1]{\def\@opening{#1}}
\newcommand*{\closing}[1]{\def\@closing{#1}}
+\newcommand*{\signature}[2]{\def\@signature{\includegraphics[scale=#1]{#2}}}
\newcommand*{\enclosure}[2][]{%
% if an optional argument is provided, use it to redefine \enclname
\ifthenelse{\equal{#1}{}}{}{\renewcommand*{\enclname}{#1}}%
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyi.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyi.sty
index 02ac2e3aa54..d3db954fef9 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyi.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyi.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvbodyi.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,13 +10,13 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyi}[2022-02-21 v2.3.1 modern curriculum vitae and letter body variant: 1]
+\ProvidesPackage{moderncvbodyi}[2024-07-18 v2.4.1 modern curriculum vitae and letter body variant: 1]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-% provides the commands for the skillmatrix as well as the command
+% provides the commands for the skillmatrix as well as the command
% \recompute@cvskillmatrix@lengths
\RequirePackage[moderncvbodyi]{moderncvskillmatrix}
@@ -29,9 +29,9 @@
\renewcommand*{\hintfont}{}
% styles
-\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -44,11 +44,14 @@
\@initializelength{\maincolumnwidth}
% used by \cvdoubleitem
\@initializelength{\doubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
% used by \cvlistitem
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
\@initializelength{\listitemcolumnwidth}
% used by \cvlistdoubleitem
\@initializelength{\listdoubleitemcolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars
\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}%
@@ -59,6 +62,8 @@
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\hintscolumnwidth-3\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
\recompute@cvskillmatrix@lengths
@@ -73,7 +78,7 @@
\par\addvspace{2.5ex}%
\phantomsection{}% reset the anchor for hyperrefs
\addcontentsline{toc}{section}{#2}%
- \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}%
+ \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{bodyrulecolor}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}%
\par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
\RenewDocumentCommand{\subsection}{sm}{%
@@ -97,15 +102,28 @@
\hspace*{\separatorcolumnwidth}%
\begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}}
+\renewcommand*{\cvtripleitem}[7][.1em]{%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#5\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#6}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#7\end{minipage}}}
+
+
\renewcommand*{\cvlistitem}[2][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\ifthenelse{\equal{#3}{}}%
{}%
- {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
\renewcommand*{\cventry}[7][.25em]{%
\cvitem[#1]{#2}{%
@@ -162,13 +180,14 @@
\recomputecvlengths%
\setlength{\parskip}{6\p@}}
-\renewcommand*{\makeletterclosing}{
- \@closing\\[3em]%
+\renewcommand*{\makeletterclosing}{%
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
{\bfseries\@firstname~\@lastname}%
\ifthenelse{\isundefined{\@enclosure}}{}{%
\\%
\vfil%
- {\color{color2}\itshape\enclname: \@enclosure}}%
+ {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
\vfil}
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyii.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyii.sty
index 02ac2e3aa54..d3db954fef9 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyii.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyii.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvbodyi.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,13 +10,13 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyi}[2022-02-21 v2.3.1 modern curriculum vitae and letter body variant: 1]
+\ProvidesPackage{moderncvbodyi}[2024-07-18 v2.4.1 modern curriculum vitae and letter body variant: 1]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-% provides the commands for the skillmatrix as well as the command
+% provides the commands for the skillmatrix as well as the command
% \recompute@cvskillmatrix@lengths
\RequirePackage[moderncvbodyi]{moderncvskillmatrix}
@@ -29,9 +29,9 @@
\renewcommand*{\hintfont}{}
% styles
-\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -44,11 +44,14 @@
\@initializelength{\maincolumnwidth}
% used by \cvdoubleitem
\@initializelength{\doubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
% used by \cvlistitem
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
\@initializelength{\listitemcolumnwidth}
% used by \cvlistdoubleitem
\@initializelength{\listdoubleitemcolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars
\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}%
@@ -59,6 +62,8 @@
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\hintscolumnwidth-3\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
\recompute@cvskillmatrix@lengths
@@ -73,7 +78,7 @@
\par\addvspace{2.5ex}%
\phantomsection{}% reset the anchor for hyperrefs
\addcontentsline{toc}{section}{#2}%
- \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}%
+ \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{bodyrulecolor}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}%
\par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
\RenewDocumentCommand{\subsection}{sm}{%
@@ -97,15 +102,28 @@
\hspace*{\separatorcolumnwidth}%
\begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}}
+\renewcommand*{\cvtripleitem}[7][.1em]{%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#5\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#6}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#7\end{minipage}}}
+
+
\renewcommand*{\cvlistitem}[2][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\ifthenelse{\equal{#3}{}}%
{}%
- {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
\renewcommand*{\cventry}[7][.25em]{%
\cvitem[#1]{#2}{%
@@ -162,13 +180,14 @@
\recomputecvlengths%
\setlength{\parskip}{6\p@}}
-\renewcommand*{\makeletterclosing}{
- \@closing\\[3em]%
+\renewcommand*{\makeletterclosing}{%
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
{\bfseries\@firstname~\@lastname}%
\ifthenelse{\isundefined{\@enclosure}}{}{%
\\%
\vfil%
- {\color{color2}\itshape\enclname: \@enclosure}}%
+ {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
\vfil}
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiii.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiii.sty
index 003f9f3e1b0..37d8d132009 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiii.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiii.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvbodyiii.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyiii}[2022-02-21 v2.3.1 modern curriculum vitae and letter body variant: 3]
+\ProvidesPackage{moderncvbodyiii}[2024-07-18 v2.4.1 modern curriculum vitae and letter body variant: 3]
% rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
\@initializeif{\if@fullrules}\@fullrulesfalse
@@ -37,7 +37,7 @@
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-% provides the commands for the skillmatrix as well as the command
+% provides the commands for the skillmatrix as well as the command
% \recompute@cvskillmatrix@lengths
\RequirePackage[moderncvbodyiii]{moderncvskillmatrix}
@@ -61,16 +61,16 @@
\renewcommand*{\sectionstyle}[1]{{%
\if@center\centering\else%
\if@right\raggedleft\fi\fi%
- \sectionfont\textcolor{color1}{#1}%
+ \sectionfont\textcolor{sectioncolor}{#1}%
\if@shortrules\else%
\par\fi}}
\renewcommand*{\subsectionstyle}[1]{{%
\if@center\centering\else%
\if@right\raggedleft\fi\fi%
- \subsectionfont\textcolor{color1}{#1}%
+ \subsectionfont\textcolor{subsectioncolor}{#1}%
\if@shortrules\else\if@mixedrules\else%
\par\fi\fi}}
-\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -83,11 +83,14 @@
\@initializelength{\maincolumnwidth}
% used by \cvdoubleitem
\@initializelength{\doubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
% used by \cvlistitem
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
\@initializelength{\listitemcolumnwidth}
% used by \cvlistdoubleitem
\@initializelength{\listdoubleitemcolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
% commands
\renewcommand*{\recomputecvbodylengths}{%
@@ -96,6 +99,8 @@
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
\recompute@cvskillmatrix@lengths
@@ -133,14 +138,14 @@
\newcommand*{\sectionrule}{}
\newcommand*{\subsectionrule}{}
\if@fullrules%
- \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
- \renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}
+ \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
+ \renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}
\if@shortrules%
- \renewcommand*{\sectionrule}{\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
- \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
+ \renewcommand*{\sectionrule}{\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
+ \renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
\if@mixedrules%
- \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
- \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
+ \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
+ \renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
\if@norules%
\renewcommand*{\sectionrule}{}
\renewcommand*{\subsectionrule}{}\fi
@@ -155,16 +160,24 @@
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifstrempty{#4}{}{\hintstyle{#4}: }#5\end{minipage}%
\par\addvspace{#1}}
+\renewcommand*{\cvtripleitem}[7][.1em]{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\ifstrempty{#6}{}{\hintstyle{#6}: }#7\end{minipage}%
+ \par\addvspace{#1}}
+
\renewcommand*{\cvlistitem}[2][.25em]{%
- \listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}%
+ \listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\par\addvspace{#1}}
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\ifstrempty{#3}%
{}%
- {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
\renewcommand*{\cventry}[7][.25em]{
\begin{tabular*}{\maincolumnwidth}{l@{\extracolsep{\fill}}r}%
@@ -231,13 +244,14 @@
\recomputecvbodylengths%
\setlength{\parskip}{6\p@}}
-\renewcommand*{\makeletterclosing}{
- \@closing\\[3em]%
+\renewcommand*{\makeletterclosing}{%
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
{\bfseries\@firstname~\@lastname}%
\ifthenelse{\isundefined{\@enclosure}}{}{%
\\%
\vfil%
- {\color{color2}\itshape\enclname: \@enclosure}}%
+ {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
\vfil}
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiv.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiv.sty
index 9127af18e8c..0d9fe6fb877 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiv.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiv.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvbodyiv.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,13 +10,13 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyiv}[2022-02-21 v2.3.1 modern curriculum vitae and letter body variant: 4]
+\ProvidesPackage{moderncvbodyiv}[2024-07-18 v2.4.1 modern curriculum vitae and letter body variant: 4]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-% provides the commands for the skillmatrix as well as the command
+% provides the commands for the skillmatrix as well as the command
% \recompute@cvskillmatrix@lengths
\RequirePackage[moderncvbodyiv]{moderncvskillmatrix}
@@ -29,9 +29,9 @@
\renewcommand*{\hintfont}{\bfseries}
% styles
-\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -49,6 +49,10 @@
\@initializelength{\listitemcolumnwidth}
% used by \cvlistdoubleitem
\@initializelength{\listdoubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
+
% commands
\renewcommand*{\recomputecvbodylengths}{%
@@ -57,6 +61,8 @@
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
\recompute@cvskillmatrix@lengths
@@ -87,15 +93,23 @@
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}%
\par\addvspace{#1}}
+\renewcommand*{\cvtripleitem}[7][.1em]{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\ifthenelse{\equal{#6}{}}{}{\hintstyle{#6}: }#7\end{minipage}%
+ \par\addvspace{#1}}
+
\renewcommand*{\cvlistitem}[2][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
- \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\ifthenelse{\equal{#3}{}}%
{}%
- {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
\@initializebox{\cventryyearbox}
\@initializelength{\cventrytitleboxwidth}
@@ -170,13 +184,14 @@
\recomputecvbodylengths%
\setlength{\parskip}{6\p@}}
-\renewcommand*{\makeletterclosing}{
- \@closing\\[3em]%
+\renewcommand*{\makeletterclosing}{%
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
{\bfseries\@firstname~\@lastname}%
\ifthenelse{\isundefined{\@enclosure}}{}{%
\\%
\vfil%
- {\color{color2}\itshape\enclname: \@enclosure}}%
+ {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}%
\vfil}
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyv.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyv.sty
index 1f49692984d..f29e57786b4 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyv.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyv.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvbodyv.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,13 +10,13 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyv}[2022-02-21 v2.3.1 modern curriculum vitae and letter body variant: 5]
+\ProvidesPackage{moderncvbodyv}[2024-07-18 v2.4.1 modern curriculum vitae and letter body variant: 5]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-% provides the commands for the skillmatrix as well as the command
+% provides the commands for the skillmatrix as well as the command
% \recompute@cvskillmatrix@lengths
\RequirePackage[moderncvbodyv]{moderncvskillmatrix}
@@ -34,9 +34,9 @@
\renewcommand*{\hintfont}{\bfseries}
% styles
-\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
-\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}}
% lengths
% used by \cvitem (and all children command)
@@ -46,6 +46,8 @@
\@initializelength{\maincolumnwidth}
% used by \cvdoubleitem
\@initializelength{\doubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
% used by \cvlistitem
\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
\@initializelength{\listitemcolumnwidth}
@@ -53,6 +55,7 @@
% used by \cvlistdoubleitem
\@initializelength{\listdoubleitemcolumnwidth}
%\@initializelength{\listdoubleitemmaincolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
% commands
\@initializecommand{\recomputecvbodylengths}{%
@@ -61,6 +64,8 @@
\setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
\setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
\setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
\setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
\setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
\recompute@cvskillmatrix@lengths
@@ -72,7 +77,8 @@
\addvspace{2.5ex}%
\phantomsection{}% reset the anchor for hyperrefs
\addcontentsline{toc}{section}{#2}%
- \noindent\rlap{\@cvitem{\raggedleft\sectionstyle{#2}}{}}%
+ % minipage for correct spacing with multiline sections #69
+ \noindent\rlap{\@cvitem{\begin{minipage}[t][1ex]{\hintscolumnwidth}\raggedleft\sectionstyle{#2}\end{minipage}}{}}%
\nobreak\@afterheading\@aftersectiontrue\ignorespaces}
%\@initializeif{\if@aftersubsection}\@aftersubsectionfalse%
@@ -83,7 +89,8 @@
\par\ignorespaces\fi%
\phantomsection{}% reset the anchor for hyperrefs
\addcontentsline{toc}{subsection}{#2}%
- \noindent\rlap{\@cvitem{\if@aftersection\else\@moderncvstrut{4pt}{24pt}\fi\raggedleft\subsectionstyle{#2}}{}}%
+ % minipage for correct spacing with multiline subsections #69
+ \noindent\rlap{\@cvitem{\begin{minipage}[t][1ex]{\hintscolumnwidth}\if@aftersection\else\@moderncvstrut{4pt}{24pt}\fi\raggedleft\subsectionstyle{#2}\end{minipage}}{}}%
\nobreak\@afterheading\@aftersectiontrue\ignorespaces}
\renewcommand*{\cvitem}[3][.5ex]{%
@@ -99,7 +106,7 @@
% underlying command to implement \cvitem, \subsection and \section
\newcommand*{\@cvitem}[3][.5ex]{%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\if@aftersection\else%
\vspace*{-\separatorrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
@@ -117,15 +124,23 @@
\hfill% fill of \separatorcolumnwidth
\begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}}}
+\renewcommand*{\cvtripleitem}[7][.1ex]{%
+ \@cvitem[#1]{}{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\hintstyle{#4}: #5\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\tripleitemcolumnwidth}\ifthenelse{\equal{#6}{}}{}{\hintstyle{#6}: }#7\end{minipage}}}
+
\renewcommand*{\cvlistitem}[2][.5ex]{%
- \@cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+ \@cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
\renewcommand*{\cvlistdoubleitem}[3][.5ex]{%
- \@cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \@cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
\hfill% fill of \separatorcolumnwidth
\ifthenelse{\equal{#3}{}}%
{}%
- {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
\@initializebox{\cventryyearbox}
\@initializelength{\cventrytitleboxwidth}
@@ -165,7 +180,7 @@
{%
\bibliographyhead{\refname}%
% \small%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\noindent%
\begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
@@ -206,13 +221,14 @@
\recomputecvbodylengths%
\setlength{\parskip}{6\p@}}
-\renewcommand*{\makeletterclosing}{
- \@closing\\[3em]%
+\renewcommand*{\makeletterclosing}{%
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
{\bfseries \@firstname~\@lastname}%
\ifthenelse{\isundefined{\@enclosure}}{}{%
\\%
\vfill%
- {\color{color2}\itshape\enclname: \@enclosure}}}
+ {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}}
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvbodyvi.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyvi.sty
new file mode 100644
index 00000000000..76e1a15c3ac
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvbodyvi.sty
@@ -0,0 +1,203 @@
+%% start of file `moderncvbodyvi.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% 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/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvbodyvi}[2023/11/21 v2.0.0 modern curriculum vitae and letter body variant: 6]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+\RequirePackage{moderncvverticaltimeline}
+% No customization currently exists for `modercvbodyvi`; just reuse
+% `moderncvbodyi`. We might consider supporting a short table format (only skill
+% name and rating) in the future.
+\RequirePackage[moderncvbodyi,circle]{moderncvskillmatrix}
+
+
+%-------------------------------------------------------------------------------
+% overall body definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\sectionfont}{\Large\upshape\bfseries}
+\renewcommand*{\subsectionfont}{\large\mdseries\upshape}
+\renewcommand*{\hintfont}{}
+
+% styles
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume body definition
+%-------------------------------------------------------------------------------
+% lengths
+% used by \cvitem (and all children command)
+\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.175\textwidth}
+\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
+\@initializelength{\maincolumnwidth}
+% used by \cvdoubleitem
+\@initializelength{\doubleitemcolumnwidth}
+% used by \cvtripleitem
+\@initializelength{\tripleitemcolumnwidth}
+% used by \cvlistitem
+\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
+\@initializelength{\listitemcolumnwidth}
+% used by \cvlistdoubleitem
+\@initializelength{\listdoubleitemcolumnwidth}
+\@initializelength{\listitemsymbolspace} \setlength{\listitemsymbolspace}{0pt}
+% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars
+\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}%
+
+% commands
+\renewcommand*{\recomputecvbodylengths}{%
+ % body lengths
+ \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\hintscolumnwidth}%
+ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
+ \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
+ \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{\maincolumnwidth-2\hintscolumnwidth-3\separatorcolumnwidth}%
+ \setlength{\tripleitemcolumnwidth}{0.33\tripleitemcolumnwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+ \recompute@cvskillmatrix@lengths
+ % regular lengths
+ \setlength{\parskip}{0\p@}}
+
+\@initializelength{\baseletterheight}
+\settoheight{\baseletterheight}{\sectionstyle{o}}
+\setlength{\baseletterheight}{\baseletterheight-0.95ex}
+% The optional argument can be used to place a small icon near the section name.
+% E.g. `\section[\faBookmark]{Education}`
+\RenewDocumentCommand{\section}{sO{}m}{%
+ \tl@resetchain%
+ \par\addvspace{2.5ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{section}{#3}%
+ \strut\sectionstyle{\textcolor{color1!55!white}{{#2}\rule{.75ex}{0pt}\rule{1pt}{\heightof{#3}}}%
+ \rule{.75ex}{0pt}#3}%
+ \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
+
+\RenewDocumentCommand{\subsection}{sm}{%
+ \par\addvspace{1ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{subsection}{#2}%
+ \cvitem[0ex]{}{\strut\subsectionstyle{#2}}%
+ \par\nobreak\addvspace{.5ex}\@afterheading}% to avoid a pagebreak after the heading
+
+\renewcommand*{\cvitem}[3][.25em]{%
+ \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
+ \raggedleft\hintstyle{#2} &{#3}%
+ \end{tabular}%
+ \par\addvspace{#1}}
+
+\renewcommand*{\cvdoubleitem}[5][.25em]{%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}#3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}}
+
+\renewcommand*{\cvtripleitem}[7][.1em]{%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#5\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#6}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\tripleitemcolumnwidth}#7\end{minipage}}}
+
+\renewcommand*{\cvlistitem}[2][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}}}
+
+\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#2\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \ifthenelse{\equal{#3}{}}%
+ {}%
+ {\listitemsymbol\hspace{\listitemsymbolspace}\begin{minipage}[t]{\listdoubleitemcolumnwidth-\listitemsymbolspace}#3\end{minipage}}}}
+
+\renewcommand*{\cventry}[7][.25em]{%
+ \cvitem[#1]{\tl@milestone{#2}}{%
+ {\bfseries#3}%
+ \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
+ \ifthenelse{\equal{#5}{}}{}{, #5}%
+ \ifthenelse{\equal{#6}{}}{}{, #6}%
+ \strut%
+ \ifx&#7&%
+ \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
+
+\@initializebox{\cvitemwithcommentbox}
+\@initializelength{\cvitemwithcommentskilllength}
+\@initializelength{\cvitemwithcommentcommentlength}
+\renewcommand*{\cvitemwithcomment}[4][.25em]{%
+ \savebox{\cvitemwithcommentbox}{{#3}}%
+ \setlength{\cvitemwithcommentskilllength}{\widthof{\usebox{\cvitemwithcommentbox}}}%
+ \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentskilllength}%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\cvitemwithcommentskilllength}\usebox{\cvitemwithcommentbox}\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}}
+
+\renewenvironment{thebibliography}[1]%
+ {%
+ \bibliographyhead{\refname}%
+% \small%
+ \begin{list}{\bibliographyitemlabel}%
+ {%
+ \setlength{\topsep}{0pt}%
+ \setlength{\labelwidth}{\hintscolumnwidth}%
+ \setlength{\labelsep}{\separatorcolumnwidth}%
+ \leftmargin\labelwidth%
+ \advance\leftmargin\labelsep%
+ \@openbib@code%
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty%
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy%
+ \clubpenalty4000%\@clubpenalty \clubpenalty%
+ \widowpenalty4000%
+ \sfcode`\.\@m%
+ \sfcode `\=1000\relax}%
+ {%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \end{list}}
+
+
+%-------------------------------------------------------------------------------
+% letter style definition
+%-------------------------------------------------------------------------------
+% commands
+\renewcommand*{\recomputeletterbodylengths}{%
+ \recomputecvlengths%
+ \setlength{\parskip}{6\p@}}
+
+\renewcommand*{\makeletterclosing}{
+ \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set
+ \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}}
+ {\bfseries\@firstname~\@lastname}%
+ \ifthenelse{\isundefined{\@enclosure}}{}{%
+ \\%
+ \vfil%
+ {\color{color2}\itshape\enclname: \@enclosure}}%
+ \vfil}
+
+
+\endinput
+
+
+%% end of file `moderncvbodyvi.sty'.
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcollection.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcollection.sty
index 5d3432e661e..bddc9a51776 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcollection.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcollection.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcollection.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcollection}[2022-02-21 v2.3.1 moderncv collections]
+\ProvidesPackage{moderncvcollection}[2024-07-18 v2.4.1 moderncv collections]
%-------------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblack.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblack.sty
index ea3653eacef..29ba5bd410c 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblack.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblack.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorblack.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorblack}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: black]
+\ProvidesPackage{moderncvcolorblack}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: black]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0,0,0}% black
-\definecolor{color2}{rgb}{0,0,0}% black
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{black}% black
+\colorlet{color2}{black}% black
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblue.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblue.sty
index b02992e1b39..779b3be956c 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblue.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblue.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorblue.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorblue}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: blue]
+\ProvidesPackage{moderncvcolorblue}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: blue]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.22,0.45,0.70}% light blue
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{lightblue}% light blue
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorburgundy.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorburgundy.sty
index 775f033f233..aeeccf5ef6b 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorburgundy.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorburgundy.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorburgundy.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorburgundy}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: burgundy]
+\ProvidesPackage{moderncvcolorburgundy}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: burgundy]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.596078,0,0}% burgundy: 139/255 (0.545098) or 152/255 (0.596078)
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{burgundy}% burgundy
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorcerulean.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorcerulean.sty
new file mode 100644
index 00000000000..1f7cce83c73
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorcerulean.sty
@@ -0,0 +1,32 @@
+%% start of file `moderncvcolorcerulean.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% 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/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolorcerulean}[2023/11/21 v2.0.0 modern curriculum vitae and letter color scheme: cerulean]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{HTML}{0081a7}% cerulean
+\definecolor{color2}{HTML}{4d908e}% dark cyan
+\definecolor{headTL}{HTML}{00afb9}% verdigris
+\colorlet{headBR}{color1}
+\definecolor{headtext}{HTML}{ffffff}% white
+\colorlet{headhr}{color2}
+
+
+\endinput
+
+
+%% end of file `moderncvcolorcerulean.sty'.
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgreen.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgreen.sty
index 891c3290b5d..03c026ea07d 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgreen.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgreen.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorgreen.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorgreen}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: green]
+\ProvidesPackage{moderncvcolorgreen}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: green]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.35,0.70,0.30}% green
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{green}% green
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgrey.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgrey.sty
index 37d2b57749d..6bd9184c0e6 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgrey.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgrey.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorgrey.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorgrey}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: grey]
+\ProvidesPackage{moderncvcolorgrey}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: grey]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.55,0.55,0.55}% dark grey
-\definecolor{color2}{rgb}{0.55,0.55,0.55}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{darkgrey}% dark grey
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolororange.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcolororange.sty
index f249fd7de9c..c4f612ab6db 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcolororange.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolororange.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolororange.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolororange}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: orange]
+\ProvidesPackage{moderncvcolororange}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: orange]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.95,0.55,0.15}% orange
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{orange}% orange
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorpurple.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorpurple.sty
index 22053d78493..d0110526f19 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorpurple.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorpurple.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorpurple.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorpurple}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: purple]
+\ProvidesPackage{moderncvcolorpurple}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: purple]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.50,0.33,0.80}% purple
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{purple}% purple
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorred.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorred.sty
index 68b1335c847..bc51d4adf53 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcolorred.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolorred.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcolorred.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,15 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorred}[2022-02-21 v2.3.1 modern curriculum vitae and letter color scheme: red]
+\ProvidesPackage{moderncvcolorred}[2024-07-18 v2.4.1 modern curriculum vitae and letter color scheme: red]
%-------------------------------------------------------------------------------
% color scheme definition
%-------------------------------------------------------------------------------
-\definecolor{color0}{rgb}{0,0,0}% black
-\definecolor{color1}{rgb}{0.95,0.20,0.20}% red
-\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+\input{moderncvcolors.tex}
+
+\colorlet{color0}{black}% black
+\colorlet{color1}{red}% red
+\colorlet{color2}{darkgrey}% dark grey
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcolors.tex b/Master/texmf-dist/tex/latex/moderncv/moderncvcolors.tex
new file mode 100644
index 00000000000..7f840ff059c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcolors.tex
@@ -0,0 +1,35 @@
+%-------------------------------------------------------------------------------
+% built-in colors
+%-------------------------------------------------------------------------------
+
+\definecolor{black}{RGB}{0, 0, 0}
+\definecolor{red}{rgb}{0.95, 0.20, 0.20}
+\definecolor{darkgrey}{rgb}{0.45, 0.45, 0.45}
+\definecolor{orange}{rgb}{0.95, 0.55, 0.15}
+\definecolor{burgundy}{rgb}{0.596078, 0, 0}% 139/255 (0.545098) or 152/255 (0.596078)
+\definecolor{purple}{rgb}{0.50, 0.33, 0.80}
+\definecolor{lightblue}{rgb}{0.22, 0.45, 0.70}
+\definecolor{green}{rgb}{0.35, 0.70, 0.30}
+
+%-------------------------------------------------------------------------------
+% default colors
+%-------------------------------------------------------------------------------
+
+\@ifundefined{\string\color@default-socialicon-color}{\colorlet{default-socialicon-color}{darkgrey}}{}
+
+%-------------------------------------------------------------------------------
+% colors for social icons
+%-------------------------------------------------------------------------------
+
+% \definecolor{weixin}{rgb}{.184, .533, .098}
+% \definecolor{linkedin}{HTML}{0a66c2}
+% \definecolor{orcid}{HTML}{a6ce39}
+% \definecolor{twitter}{RGB}{29, 155, 240}
+% \definecolor{facebook}{HTML}{1b74e4}
+% TODO: add more colors
+
+%-------------------------------------------------------------------------------
+% custom colors
+%-------------------------------------------------------------------------------
+
+% \definecolor{tsinghua}{HTML}{791CB5}
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvcompatibility.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvcompatibility.sty
index fb9a8c4363d..e8e0af713ff 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvcompatibility.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvcompatibility.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvcompatibility.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcompatibility}[2022-02-21 v2.3.1 modern curriculum vitae and letter compatibility patches]
+\ProvidesPackage{moderncvcompatibility}[2024-07-18 v2.4.1 modern curriculum vitae and letter compatibility patches]
%-------------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvdebugtools.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvdebugtools.sty
index b28e409b541..c19651ab05b 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvdebugtools.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvdebugtools.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvdebugtools.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvdebugtools}[2022-02-21 v2.3.1 modern curriculum vitae and letter debug tools]
+\ProvidesPackage{moderncvdebugtools}[2024-07-18 v2.4.1 modern curriculum vitae and letter debug tools]
%-------------------------------------------------------------------------------
@@ -32,7 +32,7 @@
\begin{tikzpicture}[remember picture,overlay]
\begin{pgfonlayer}{background}
\coordinate (a\thedebugrule);
- \draw[red,thin,#1]
+ \draw[red,thin,#1]
([xshift=#2]a\thedebugrule|-current page.north) -- ([xshift=#2]a\thedebugrule|-current page.south);
\end{pgfonlayer}
\end{tikzpicture}}
@@ -42,7 +42,7 @@
\begin{tikzpicture}[remember picture,overlay]
\begin{pgfonlayer}{background}
\coordinate (b\thedebugrule);
- \draw[red,thin,#1]
+ \draw[red,thin,#1]
([yshift=#2]b\thedebugrule-|current page.west) -- ([yshift=#2]b\thedebugrule-|current page.east);
\end{pgfonlayer}
\end{tikzpicture}}
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvfooti.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvfooti.sty
index 370365848fc..f1de51a44ef 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvfooti.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvfooti.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvfooti.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvfooti}[2022-02-21 v2.3.1 modern curriculum vitae and letter footer variant: 1]
+\ProvidesPackage{moderncvfooti}[2024-07-18 v2.4.1 modern curriculum vitae and letter footer variant: 1]
%-------------------------------------------------------------------------------
@@ -79,7 +79,7 @@
\fancyfoot[c]{%
\parbox[b]{\footwidth}{%
\centering%
- \color{color2}\addressfont%
+ \color{addresscolor}\addressfont%
\vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance)
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtofoot[]{\addresssymbol\@addressstreet}%
\ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
@@ -89,7 +89,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%
@@ -109,7 +110,7 @@
\fancyfoot[c]{%
\parbox[b]{\footwidth}{%
\centering%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance)
\vspace{-\baselineskip}% to cancel out the extra vertical space taken by the name (below) and ensure perfect alignment of letter and cv footers
\strut{\bfseries\upshape\@firstname~\@lastname}\\% the \strut is required to ensure the line is exactly \baselineskip tall
@@ -121,7 +122,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvheadi.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvheadi.sty
index 087cf776e20..9dfb35a06c1 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvheadi.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvheadi.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadi.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadi}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 1]
+\ProvidesPackage{moderncvheadi}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 1]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -23,6 +23,11 @@
\@initializeif{\if@right}\@rightfalse
\DeclareOption{right} {\@leftfalse\@righttrue}
+% top options: align header elements by their top instead of their bottom
+% default: bottom
+\@initializeif{\if@top}\@topfalse
+\DeclareOption{top}{\@toptrue}
+
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{details,left}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
@@ -43,10 +48,12 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -72,7 +79,7 @@
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\savebox{\makecvheaddetailsbox}{%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\if@left\begin{tabular}[b]{@{}r@{}}\fi%
\if@right\begin{tabular}[b]{@{}l@{}}\fi%
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
@@ -81,7 +88,8 @@
\ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}%
\phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
\end{tabular}
@@ -94,7 +102,7 @@
{%
\if@left%
\hspace*{\separatorcolumnwidth}\fi%
- \color{color1}%
+ \color{pictureframecolor}%
\setlength{\fboxrule}{\@photoframewidth}%
\ifdim\@photoframewidth=0pt%
\setlength{\fboxsep}{0pt}\fi%
@@ -112,9 +120,14 @@
\begin{minipage}[b]{\makecvheadnamewidth}%
\if@left\raggedright\fi%
\if@right\raggedleft\fi%
- \namestyle{\@firstname\ \@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
\end{minipage}}%
+ % raise boxes if top option is set
+ \if@top%
+ \savebox{\makecvheadnamebox}{\raisebox{-\height+\baselineskip}{\usebox{\makecvheadnamebox}}}%
+ \savebox{\makecvheaddetailsbox}{\raisebox{-\height+\baselineskip}{\usebox{\makecvheaddetailsbox}}}%
+ \savebox{\makecvheadpicturebox}{\raisebox{-\height+\baselineskip}{\usebox{\makecvheadpicturebox}}}\fi%
% rendering
\if@left%
\usebox{\makecvheadnamebox}%
@@ -126,11 +139,17 @@
\rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
\hfill%
\usebox{\makecvheadnamebox}\fi%
- \\[2.5em]%
% optional quote
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ {\vspace{2.5em}}%
+ {%
+ \\[2.5em]%
+ {%
+ \centering%
+ \begin{minipage}{\quotewidth}%
+ \centering%
+ \quotestyle{\@quote}%
+ \end{minipage}\\[2.5em]}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
@@ -150,7 +169,7 @@
% optional detailed information
\if@details%
\raggedleft%
- \addressfont\textcolor{color2}{%
+ \addressfont\textcolor{addresscolor}{%
{\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
% optional detailed information
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
@@ -159,9 +178,10 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
- \end{minipage}\\[1em]
+ \end{minipage}\\[2em]
% recipient block
\begin{minipage}[t]{.5\textwidth}
\raggedright%
@@ -173,6 +193,8 @@
\hfill% US style
% \\[1em]% UK style
\@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[2em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvheadii.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvheadii.sty
index b699242ed46..a36c8e1af4b 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvheadii.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvheadii.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadii.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadii}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 2]
+\ProvidesPackage{moderncvheadii}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 2]
% details options: "details" or "nodetails" (default)
\@initializeif{\if@details}\@detailsfalse
@@ -47,10 +47,10 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
% commands
\@initializecommand{\makeheaddetailssymbol}{%
@@ -110,7 +110,7 @@
\setlength\fboxrule{\@photoframewidth}%
\ifdim\@photoframewidth=0pt%
\setlength{\fboxsep}{0pt}\fi%
- {\color{color1}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}%
+ {\color{pictureframecolor}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}%
% name (pre-rendering)
\@initializelength{\makecvheadpicturewidth}%
\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
@@ -121,9 +121,9 @@
\if@right\raggedleft\fi%
\namefont%
\if@alternate% alternate design: first- and lastname in lowercase with no space in between (distinction is made by color difference)
- {\color{color2!50}\MakeLowercase\@firstname}{\color{color2}\MakeLowercase\@lastname}%
+ {\color{firstnamecolor}\MakeLowercase\@firstname}{\color{lastnamecolor}\MakeLowercase\@lastname}%
\else% default design: first- and lastname as given with a space in between
- {\color{color2!50}\@firstname} {\color{color2}\@lastname}\fi}}%
+ {\color{firstnamecolor}\@firstname} {\color{lastnamecolor}\@lastname}\fi}}%
% rendering
\if@left%
\usebox{\makecvheadnamebox}%
@@ -131,11 +131,11 @@
\if@right%
\usebox{\makecvheadpicturebox}%
\usebox{\makecvheadnamebox}\fi\\[-.35em]%
- {\color{color2!50}\rule{\textwidth}{.25ex}}%
+ {\color{headrulecolor}\rule{\textwidth}{.25ex}}%
% optional detailed information
\if@details{%
\\\null%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
@@ -144,7 +144,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
@@ -157,15 +158,18 @@
\titlestyle{\MakeLowercase\@title}%
\else%
\titlestyle{\@title}\fi%
- }\\[2.5em]%
+ }
% optional quote
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {{\null\hfill%
+ {\vspace{2.5em}}%
+ {%
+ \\[2.5em]%
+ {%
+ \centering%
\begin{minipage}{\quotewidth}%
\centering%
\quotestyle{\@quote}%
- \end{minipage}\hfill\null\\[2.5em]}}%
+ \end{minipage}\\[2.5em]}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle
@@ -189,7 +193,9 @@
% date
\hfill% US style
% \\[1em]% UK style
- \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ \@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvheadiii.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvheadiii.sty
index e4dbafd5ae8..51a3aa2444c 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvheadiii.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvheadiii.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadiii.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadiii}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 3]
+\ProvidesPackage{moderncvheadiii}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 3]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -36,10 +36,12 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
% commands
\@initializecommand{\makeheaddetailssymbol}{%
@@ -81,12 +83,12 @@
\parbox{\makeheaddetailswidth}{%
\centering%
% name and title
- \namestyle{\@firstname~\@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title)
% optional detailed information
\if@details{%
\\%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
@@ -95,11 +97,12 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
- \flushmakeheaddetails}\fi}\\[2.5em]}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
+ \flushmakeheaddetails}\fi}}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
%-------------------------------------------------------------------------------
@@ -117,8 +120,15 @@
\makehead%
% optional quote
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ {\vspace{2.5em}}%
+ {%
+ \\[2.5em]%
+ {%
+ \centering%
+ \begin{minipage}{\quotewidth}%
+ \centering%
+ \quotestyle{\@quote}%
+ \end{minipage}\\[2.5em]}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle}
@@ -132,9 +142,25 @@
\renewcommand*{\makeletterhead}{%
% recompute lengths (in case we are switching from letter to resume, or vice versa)
\recomputeletterlengths%
- % sender block
- \makehead%
- \par%
+ % sender contact info
+ \hfill%
+ \begin{minipage}{.5\textwidth}%
+ % optional detailed information
+ \if@details%
+ \raggedleft%
+ \addressfont\textcolor{color2}{%
+ {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
+ % optional detailed information
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
+ \end{minipage}\\[2em]
% recipient block
\begin{minipage}[t]{.5\textwidth}
\raggedright%
@@ -145,7 +171,9 @@
% date
\hfill% US style
% \\[1em]% UK style
- \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ \@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvheadiv.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvheadiv.sty
index 9b59dacb9be..5a088fdb732 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvheadiv.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvheadiv.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadiv.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadiv}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 4]
+\ProvidesPackage{moderncvheadiv}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 4]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -38,10 +38,12 @@
\renewcommand*{\quotefont}{\large\itshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -80,7 +82,7 @@
\ifthenelse{\isundefined{\@photo}}%
{}%
{%
- \color{color1}%
+ \color{pictureframecolor}%
\setlength\fboxrule{\@photoframewidth}%
\ifdim\@photoframewidth=0pt%
\setlength{\fboxsep}{0pt}\fi%
@@ -91,7 +93,7 @@
{\setlength{\makecvheadnamewidth}{\textwidth-\makecvheadpicturewidth}}%
{}%
\begin{minipage}[b]{\makecvheadnamewidth}%
- \namestyle{\@firstname\ \@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
\end{minipage}%
% optional photo
@@ -103,7 +105,7 @@
% optional details
\if@details%
\makecvheadinfo{%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
@@ -111,7 +113,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi}
@@ -143,13 +146,15 @@
\@recipientaddress}\\[1em]%
% date
\@date\\[2em]%
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[2em]}}
% opening
\@opening\\[1.5em]%
% sender contact info
\if@details%
\hspace{0pt}%
\marginpar{%
- \addressfont\textcolor{color2}{%
+ \addressfont\textcolor{addresscolor}{%
{\bfseries\@firstname~\@lastname}\@firstdetailselementfalse%
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
@@ -157,7 +162,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}}%
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvheadv.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvheadv.sty
index c4d40843240..e92233ef348 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvheadv.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvheadv.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadv.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadv}[2022-02-21 v2.3.1 modern curriculum vitae and letter header variant: 5]
+\ProvidesPackage{moderncvheadv}[2024-07-18 v2.4.1 modern curriculum vitae and letter header variant: 5]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -37,10 +37,12 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
%-------------------------------------------------------------------------------
@@ -61,7 +63,7 @@
\ifthenelse{\isundefined{\@photo}}%
{}%
{%
- \color{color1}%
+ \color{pictureframecolor}%
\setlength{\fboxrule}{\@photoframewidth}%
\ifdim\@photoframewidth=0pt%
\setlength{\fboxsep}{0pt}\fi%
@@ -75,7 +77,7 @@
% optional details
\if@details%
\ifthenelse{\isundefined{\@photo}}{}{\\[0.5em]}%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
@@ -83,7 +85,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\csname\collectionloopkey phonesymbol\endcsname~\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol~\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\makenewline\csname\collectionloopkey socialsymbol\endcsname~\collectionloopitem}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}\fi}%
@@ -91,23 +94,32 @@
% name and optional title
\newlength{\makecvheadpictureboxskip}%
\setlength{\makecvheadpictureboxskip}{\totalheightof{\usebox{\makecvheadpicturebox}}}%
- \namestyle{\@firstname\ \@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {\\[1.25em]\begin{minipage}{\quotewidth}\quotestyle{\@quote}\end{minipage}\\[2.5em]}
- }{
- \\[1.25em]\titlestyle{\@title}\\[2.5em]%
+ {}%
+ {%
+ \\[1.25em]%
+ \begin{minipage}{\quotewidth}%
+ \quotestyle{\@quote}%
+ \end{minipage}}%
+ }{%
+ \\[1.25em]%
+ \titlestyle{\@title}
% optional quote
\ifthenelse{\isundefined{\@quote}}%
- {}%
- {\begin{minipage}{\quotewidth}\quotestyle{\@quote}\end{minipage}\\[2.5em]}}}%
+ {\vspace{2.5em}}%
+ {%
+ \\[2.5em]%
+ \begin{minipage}{\quotewidth}%
+ \quotestyle{\@quote}
+ \end{minipage}}}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
% underlying command to implement \makecvtitle, identical to \@cvitem from moderncvbodyv
\let\standarddoublebackslash\\%
\newcommand*{\@makecvtitle}[3][.5ex]{%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{headrulecolor}%
\setlength\arrayrulewidth{1.2\p@}%
\if@aftersection\else%
\vspace*{-\arrayrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
@@ -137,7 +149,7 @@
% optional detailed information
\if@details%
\raggedleft%
- \addressfont\textcolor{color2}{%
+ \addressfont\textcolor{addresscolor}{%
{\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
% optional detailed information
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
@@ -146,9 +158,10 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
- \end{minipage}\\[1em]
+ \end{minipage}\\[2em]
% recipient block
\begin{minipage}[t]{.5\textwidth}
\raggedright%
@@ -159,7 +172,9 @@
% date
\hfill% US style
% \\[1em]% UK style
- \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ \@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[2em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvheadvi.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvheadvi.sty
index 8595901901d..ecd6dbb0411 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvheadvi.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvheadvi.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvheadvi.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadvi}[2022-02-21 v2.3.1 modern curriculum vitae and letter header: 6]
+\ProvidesPackage{moderncvheadvi}[2024-07-18 v2.4.1 modern curriculum vitae and letter header: 6]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -24,7 +24,7 @@
\DeclareOption{right} {\@leftfalse\@righttrue}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{details, left}
+\ExecuteOptions{details,left}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
@@ -43,20 +43,22 @@
\renewcommand*{\quotefont}{\large\slshape}
% styles
-\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}}
-\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}}
-\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
-\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}}
+\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}}
+\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}}
% commands
\@initializecommand{\makehead}{%
\setlength{\makeheaddetailswidth}{\textwidth}%
% name and title
\if@left\hfill\fi%
- \namestyle{\@firstname~\@lastname}%
+ \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}%
\ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}\\[-.35em]% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title)
% rule
- {\color{color1}\rule{\textwidth}{.25ex}}}
+ {\color{bodyrulecolor}\rule{\textwidth}{.25ex}}}
%-------------------------------------------------------------------------------
% resume head definition
@@ -107,7 +109,7 @@
% optional detailed information
\if@details{%
\\\null%
- \addressfont\color{color2}%
+ \addressfont\color{addresscolor}%
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
@@ -116,7 +118,8 @@
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
- \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httpslink{\@homepage}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol%
+ \ifthenelse{\equal{\@homepageprotocol}{http}}{\httplink{\@homepage}}{\httpslink{\@homepage}}}}%
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
\addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
@@ -154,7 +157,9 @@
% date
\hfill% US style
% \\[1em]% UK style
- \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ \@date\\[3em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
% opening
\raggedright%
\@opening\\[1.5em]%
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvheadvii.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvheadvii.sty
new file mode 100644
index 00000000000..f0c259ec050
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvheadvii.sty
@@ -0,0 +1,226 @@
+%% start of file `moderncvheadvii.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% 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/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvheadvii}[2023/11/21 v2.0.0 modern curriculum vitae and letter header variant: 7]
+
+% details options: "details" (default) or "nodetails"
+\@initializeif{\if@details}\@detailsfalse
+\DeclareOption{details} {\@detailstrue}
+\DeclareOption{nodetails} {\@detailsfalse}
+% QR options: "qr" (default) or "noqr". If "qr" is specified, a QR code is generated to point to the
+% homepage and placed near the details section
+\@initializeif{\if@headqr}\@headqrfalse
+\DeclareOption{qr} {\@headqrtrue}
+\DeclareOption{noqr} {\@headqrfalse}
+
+% left/right options: "left" (default) or "right"
+\@initializeif{\if@left} \@leftfalse
+\DeclareOption{left} {\@lefttrue\@rightfalse}
+\@initializeif{\if@right}\@rightfalse
+\DeclareOption{right} {\@leftfalse\@righttrue}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{details,qr,left}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+\RequirePackage{qrcode}
+\RequirePackage{tikz}
+\usetikzlibrary{tikzmark,fit}
+
+
+%-------------------------------------------------------------------------------
+% overall head definition
+%-------------------------------------------------------------------------------
+\@ifundefined{\string\color@headTL}{\colorlet{headTL}{color1}}{}
+\@ifundefined{\string\color@headBR}{\colorlet{headBR}{color1}}{}
+\@ifundefined{\string\color@headtext}{\colorlet{headtext}{color2}}{}
+\@ifundefined{\string\color@headhr}{\colorlet{headhr}{color2}}{}
+
+% fonts
+\renewcommand*{\namefont}{\fontsize{30}{32}\rmfamily\mdseries\upshape}
+\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
+\renewcommand*{\addressfont}{\small\mdseries\slshape}
+\renewcommand*{\quotefont}{\large\slshape}
+
+% styles
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{headtext}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{headtext}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{headtext}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color0}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume head definition
+%-------------------------------------------------------------------------------
+% lengths
+\@initializelength{\quotewidth}
+\@initializelength{\makecvheadnamewidth}% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
+\renewcommand*{\recomputecvheadlengths}{%
+ \setlength{\quotewidth}{0.65\textwidth}}
+
+% commands
+\renewcommand*{\makecvhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputecvlengths%
+ % optional detailed information (pre-rendering)
+ \@initializebox{\makecvheaddetailsbox}%
+ \if@details%
+ \def\phonesdetails{}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
+ \def\socialsdetails{}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
+ \savebox{\makecvheaddetailsbox}{%
+ \addressfont\color{headtext}%
+ \if@left\begin{tabular}[b]{@{}r@{}}\fi%
+ \if@right\begin{tabular}[b]{@{}l@{}}\fi%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+ \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
+ \end{tabular}
+ }\fi%
+ % optional photo (pre-rendering)
+ \@initializebox{\makecvheadpicturebox}%
+ \savebox{\makecvheadpicturebox}{%
+ \ifthenelse{\isundefined{\@photo}}%
+ {}%
+ {%
+ \if@right%
+ \hspace*{\separatorcolumnwidth}\fi%
+ \begin{tikzpicture}
+ \path[top color=headBR,bottom color=headTL,shading angle=45] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth*2);
+ \path[fill=white] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth);
+ \begin{scope}
+ \clip (0,0) circle (\dimexpr\@photowidth/2);
+ \node[inner sep=0pt] at (0,0) {\includegraphics[width=\@photowidth]{\@photo}};
+ \end{scope}
+ \end{tikzpicture}%
+ }%
+ \if@left%
+ \hspace*{\separatorcolumnwidth}\fi}%
+ % optional QR for homepage (pre-rendering)
+ \@initializebox{\makecvheadqrbox}%
+ \if@headqr%
+ \savebox{\makecvheadqrbox}{%
+ \ifthenelse{\isundefined{\@homepage}}{}{\tikz\node[inner sep=1ex,fill=white]{\qrcode[height=1.5cm]{\@homepage}};}%
+ }\fi%
+ % name and title (pre-rendering)
+ \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}%
+ \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
+ \ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt)
+ {\setlength{\makecvheadnamewidth}{\textwidth-\makecvheaddetailswidth-\makecvheadpicturewidth}}%
+ {}%
+ \@initializebox{\makecvheadnamebox}%
+ \savebox{\makecvheadnamebox}{%
+ \begin{minipage}[b]{\makecvheadnamewidth}%
+ \if@left\raggedright\fi%
+ \if@right\raggedleft\fi%
+ \namestyle{\@firstname\ {\scshape\@lastname}}%
+ \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
+ \end{minipage}}%
+ % rendering
+ \begin{tikzpicture}[remember picture,overlay]
+ \node(head-bg) [top color=headTL,bottom color=headBR,shading angle=45,inner sep=0pt,
+ fit={(current page.north west)(current page.north east)(pic cs:head-end)}] {};
+ % Users may define `\@moderncvheadBackground` for additional background decoration
+ \ifthenelse{\isundefined{\@moderncvheadBackground}}{}{\@moderncvheadBackground}
+
+ \path[draw,line width=\@photoframewidth]
+ (head-bg.south west) edge[color=headhr!85!black] ([xshift=8em]head-bg.south west)
+ ([xshift=8em]head-bg.south west) edge[color=headhr] ([xshift=-8em]head-bg.south east)
+ ([xshift=-8em]head-bg.south east) edge[color=headhr!85!black] (head-bg.south east);
+ \end{tikzpicture}%
+ \if@left%
+ \usebox{\makecvheadpicturebox}%
+ \usebox{\makecvheadnamebox}%
+ \hfill%
+ \llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
+ \usebox{\makecvheadqrbox}\fi%
+ \if@right%
+ \usebox{\makecvheadqrbox}%
+ \rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
+ \hfill%
+ \usebox{\makecvheadnamebox}%
+ \usebox{\makecvheadpicturebox}\fi%
+ \\[.15em]%
+ \tikzmark{head-end}\\[.15em]%
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[.15em]}}%
+ \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
+
+
+%-------------------------------------------------------------------------------
+% letter head definition
+%-------------------------------------------------------------------------------
+% lengths
+%\renewcommand*{\recomputeletterheadlengths}{}
+
+% commands
+\renewcommand*{\makeletterhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputeletterlengths%
+ % sender contact info
+ \hfill%
+ \begin{minipage}{.5\textwidth}%
+ % optional detailed information
+ \if@details%
+ \raggedleft%
+ \addressfont\textcolor{color2}{%
+ {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
+ % optional detailed information
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
+ \end{minipage}\\[1em]
+ % recipient block
+ \begin{minipage}[t]{.5\textwidth}
+ \raggedright%
+ \addressfont%
+ {\bfseries\upshape\@recipientname}\\%
+ \@recipientaddress%
+ \end{minipage}
+ % date
+ \hfill% US style
+% \\[1em]% UK style
+ \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % optional subject
+ \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}}
+ % opening
+ \raggedright%
+ \@opening\\[1.5em]%
+ % ensure no extra spacing after \makelettertitle due to a possible blank line
+% \ignorespacesafterend% not working
+ \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
+
+
+\endinput
+
+
+%% end of file `moderncvheadvii.sty'.
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncviconsacademic.sty b/Master/texmf-dist/tex/latex/moderncv/moderncviconsacademic.sty
index e1eae589aa6..cf7bbbb5365 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncviconsacademic.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncviconsacademic.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconsacademic.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsacademic}[2022-02-21 v2.3.1 modern curriculum vitae icons: academicons]
+\ProvidesPackage{moderncviconsacademic}[2024-07-18 v2.4.1 modern curriculum vitae icons: academicons]
%-------------------------------------------------------------------------------
@@ -18,7 +18,19 @@
%-------------------------------------------------------------------------------
% Package for academic icons
\RequirePackage{academicons}
+\RequirePackage{xcolor}
+%-------------------------------------------------------------------------------
+% set colors
+%-------------------------------------------------------------------------------
+\input{moderncvcolors.tex}
+
+\providecolor{orcid}{named}{default-socialicon-color}
+\providecolor{researchgate}{named}{default-socialicon-color}
+\providecolor{researcherid}{named}{default-socialicon-color}
+\providecolor{googlescholar}{named}{default-socialicon-color}
+\providecolor{arxiv}{named}{default-socialicon-color}
+\providecolor{inspire}{named}{default-socialicon-color}
%-------------------------------------------------------------------------------
% all symbols described in moderncv.cls
@@ -39,14 +51,16 @@
%\newcommand*{\stackoverflowsocialsymbol}{}
%\newcommand*{\bitbucketsocialsymbol} {}
%\newcommand*{\skypesocialsymbol} {}
-\renewcommand*{\orcidsocialsymbol} {{\small\aiOrcid}~}
-\renewcommand*{\researchgatesocialsymbol} {{\small\aiResearchGateSquare}~} % alternative: \aiResearchGate
-\renewcommand*{\researcheridsocialsymbol} {{\small\aiResearcherIDSquare}~} % alternative: \aiResearcherID
-\renewcommand*{\googlescholarsocialsymbol}{{\small\aiGoogleScholar}~}
+\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\aiOrcid}~}
+\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\aiResearchGateSquare}~} % alternative: \aiResearchGate
+\renewcommand*{\researcheridsocialsymbol} {{\color{researcherid}\small\aiResearcherIDSquare}~} % alternative: \aiResearcherID
+\renewcommand*{\googlescholarsocialsymbol}{{\color{googlescholar}\raisebox{-1pt}{\large\aiGoogleScholar}}~}
%\newcommand*{\telegramsocialsymbol} {}
%\newcommand*{\whatsappsocialsymbol} {}
%\newcommand*{\matrixsocialsymbol} {}
%\newcommand*{\signalsocialsymbol} {}
+\renewcommand*{\arxivsocialsymbol}{{\color{arxiv}{\small\aiarXiv}}~}
+\renewcommand*{\inspiresocialsymbol}{{\color{inspire}{\small\aiInspire}}~}
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncviconsawesome.sty b/Master/texmf-dist/tex/latex/moderncv/moderncviconsawesome.sty
index 2a0ea3a23cd..a51729faa6f 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncviconsawesome.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncviconsawesome.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconsawesome.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,13 +10,51 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsawesome}[2022-02-21 v2.3.1 modern curriculum vitae icons: awesome]
+\ProvidesPackage{moderncviconsawesome}[2024-07-18 v2.4.1 modern curriculum vitae icons: awesome]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
% Font Awesome font
\RequirePackage{fontawesome5}
+\RequirePackage{xcolor}
+
+%-------------------------------------------------------------------------------
+% set colors
+%-------------------------------------------------------------------------------
+\input{moderncvcolors.tex}
+
+\providecolor{address}{named}{default-socialicon-color}
+\providecolor{mobilephone}{named}{default-socialicon-color}
+\providecolor{fixedphone}{named}{default-socialicon-color}
+\providecolor{faxphone}{named}{default-socialicon-color}
+\providecolor{email}{named}{default-socialicon-color}
+\providecolor{homepage}{named}{default-socialicon-color}
+\providecolor{googlescholar}{named}{default-socialicon-color}
+\providecolor{linkedin}{named}{default-socialicon-color}
+\providecolor{xing}{named}{default-socialicon-color}
+\providecolor{twitter}{named}{default-socialicon-color}
+\providecolor{mastodon}{named}{default-socialicon-color}
+\providecolor{github}{named}{default-socialicon-color}
+\providecolor{gitlab}{named}{default-socialicon-color}
+\providecolor{stackoverflow}{named}{default-socialicon-color}
+\providecolor{bitbucket}{named}{default-socialicon-color}
+\providecolor{skype}{named}{default-socialicon-color}
+\providecolor{orcid}{named}{default-socialicon-color}
+\providecolor{researchgate}{named}{default-socialicon-color}
+\providecolor{telegram}{named}{default-socialicon-color}
+\providecolor{whatsapp}{named}{default-socialicon-color}
+\providecolor{discord}{named}{default-socialicon-color}
+\providecolor{twitch}{named}{default-socialicon-color}
+\providecolor{youtube}{named}{default-socialicon-color}
+\providecolor{tiktok}{named}{default-socialicon-color}
+\providecolor{instagram}{named}{default-socialicon-color}
+\providecolor{soundcloud}{named}{default-socialicon-color}
+\providecolor{steam}{named}{default-socialicon-color}
+\providecolor{xbox}{named}{default-socialicon-color}
+\providecolor{playstation}{named}{default-socialicon-color}
+\providecolor{battlenet}{named}{default-socialicon-color}
+\providecolor{born}{named}{default-socialicon-color}
%-------------------------------------------------------------------------------
% all symbols described in moderncv.cls
@@ -28,28 +66,41 @@
%\renewcommand*{\addresssymbol} {}
-\renewcommand*{\mobilephonesymbol} {{\small\faMobile*}~} % alternative: \faMobile (solid style)
-\renewcommand*{\fixedphonesymbol} {{\small\faPhone*}~} % alternative: \faPhone (reversed)
-\renewcommand*{\faxphonesymbol} {{\small\faFax}~} % alternative: \faPrint
-\renewcommand*{\emailsymbol} {{\small\faEnvelope[regular]}~} % alternative: \faInbox, \faEnvelope (solid style)
-\renewcommand*{\homepagesymbol} {{\small\faGlobeAmericas}~} % alternative: \faHome, \faGlobe, \faGlobeEurope, \faGlobeAfrica, \faGlobeAsia
-\renewcommand*{\linkedinsocialsymbol} {{\small\faLinkedinIn}~} % alternative: \faLinkedin
-\renewcommand*{\xingsocialsymbol} {{\small\faXing}~} % alternative: \faXingSquare
-\renewcommand*{\twittersocialsymbol} {{\small\faTwitter}~} % alternative: \faTwitterSquare
-\renewcommand*{\githubsocialsymbol} {{\small\faGithub}~} % alternative: \faGithubSquare, \faGithub*
-\renewcommand*{\gitlabsocialsymbol} {{\small\faGitlab}~}
-\renewcommand*{\stackoverflowsocialsymbol}{{\small\faStackOverflow}~}
-\renewcommand*{\bitbucketsocialsymbol} {{\small\faBitbucket}~}
-\renewcommand*{\skypesocialsymbol} {{\small\faSkype}~}
-\renewcommand*{\orcidsocialsymbol} {{\small\faOrcid}~}
-\renewcommand*{\researchgatesocialsymbol} {{\small\faResearchgate}~}
+\renewcommand*{\mobilephonesymbol} {{\color{mobilephone}\small\faMobile*}~} % alternative: \faMobile (solid style)
+\renewcommand*{\fixedphonesymbol} {{\color{fixedphone}\small\faPhone*}~} % alternative: \faPhone (reversed)
+\renewcommand*{\faxphonesymbol} {{\color{faxphone}\small\faFax}~} % alternative: \faPrint
+\renewcommand*{\emailsymbol} {{\color{email}\small\faEnvelope[regular]}~} % alternative: \faInbox, \faEnvelope (solid style)
+\renewcommand*{\homepagesymbol} {{\color{homepage}\small\faGlobeAmericas}~} % alternative: \faHome, \faGlobe, \faGlobeEurope, \faGlobeAfrica, \faGlobeAsia
+\renewcommand*{\linkedinsocialsymbol} {{\color{linkedin}\small\faLinkedinIn}~} % alternative: \faLinkedin
+\renewcommand*{\xingsocialsymbol} {{\color{xing}\small\faXing}~} % alternative: \faXingSquare
+\renewcommand*{\twittersocialsymbol} {{\color{twitter}\small\faTwitter}~} % alternative: \faTwitterSquare
+\renewcommand*{\mastodonsocialsymbol} {{\color{mastodon}\small\faMastodon}~}
+\renewcommand*{\githubsocialsymbol} {{\color{github}\small\faGithub}~} % alternative: \faGithubSquare, \faGithub*
+\renewcommand*{\gitlabsocialsymbol} {{\color{gitlab}\small\faGitlab}~}
+\renewcommand*{\stackoverflowsocialsymbol}{{\color{stackoverflow}\small\faStackOverflow}~}
+\renewcommand*{\bitbucketsocialsymbol} {{\color{bitbucket}\small\faBitbucket}~}
+\renewcommand*{\skypesocialsymbol} {{\color{skype}\small\faSkype}~}
+\renewcommand*{\orcidsocialsymbol} {{\color{orcid}\small\faOrcid}~}
+\renewcommand*{\researchgatesocialsymbol} {{\color{researchgate}\small\faResearchgate}~}
%\renewcommand*{\researcheridsocialsymbol} {}
%\renewcommand*{\googlescholarsocialsymbol}{}
-\renewcommand*{\telegramsocialsymbol} {{\small\faTelegram}~}
-\renewcommand*{\whatsappsocialsymbol} {{\small\faWhatsapp}~}
+\renewcommand*{\telegramsocialsymbol} {{\color{telegram}\small\faTelegram}~}
+\renewcommand*{\whatsappsocialsymbol} {{\color{whatsapp}\small\faWhatsapp}~}
+\renewcommand*{\discordsocialsymbol} {{\color{discord}\small\faDiscord}~}
+\renewcommand*{\twitchsocialsymbol} {{\color{twitch}\small\faTwitch}~}
+\renewcommand*{\youtubesocialsymbol} {{\color{youtube}\small\faYoutube}~}
+\renewcommand*{\tiktoksocialsymbol} {{\color{tiktok}\small\faTiktok}~}
+\renewcommand*{\instagramsocialsymbol} {{\color{instagram}\small\faInstagram}~}
+\renewcommand*{\soundcloudsocialsymbol} {{\color{soundcloud}\small\faSoundcloud}~}
+\renewcommand*{\steamsocialsymbol} {{\color{steam}\small\faSteam}~}
+\renewcommand*{\xboxsocialsymbol} {{\color{xbox}\small\faXbox}~}
+\renewcommand*{\playstationsocialsymbol} {{\color{playstation}\small\faPlaystation}~}
+\renewcommand*{\battlenetsocialsymbol} {{\color{battlenet}\small\faBattleNet}~}
%\renewcommand*{\signalsocialsymbol} {}
%\renewcommand*{\matrixsocialsymbol} {}
-\renewcommand*{\bornsymbol} {{\small\faAsterisk}~} % alternative: \faBabyCarriage
+% \renewcommand*{\arxivsocialsymbol} {{\color{arxiv}{\small\faarXiv}}~}
+% \renewcommand*{\inspiresocialsymbol} {{\color{inspire}{\small\faInspire}}~}
+\renewcommand*{\bornsymbol} {{\color{born}\small\faAsterisk}~} % alternative: \faBabyCarriage
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncviconsletters.sty b/Master/texmf-dist/tex/latex/moderncv/moderncviconsletters.sty
index 832e21035af..2dc6386d51d 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncviconsletters.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncviconsletters.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconsletters.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsletters}[2022-02-21 v2.3.1 modern curriculum vitae icons: letter]
+\ProvidesPackage{moderncviconsletters}[2024-07-18 v2.4.1 modern curriculum vitae icons: letter]
%-------------------------------------------------------------------------------
% symbols definition
@@ -31,6 +31,7 @@
\renewcommand*{\linkedinsocialsymbol} {\textbf{in}~}
\renewcommand*{\xingsocialsymbol} {\textbf{xi}~}
\renewcommand*{\twittersocialsymbol} {\textbf{tw}~}
+\renewcommand*{\mastodonsocialsymbol} {\textbf{ms}~}
\renewcommand*{\githubsocialsymbol} {\textbf{gh}~}
\renewcommand*{\gitlabsocialsymbol} {\textbf{gl}~}
\renewcommand*{\stackoverflowsocialsymbol}{\textbf{so}~}
@@ -45,6 +46,18 @@
\renewcommand*{\matrixsocialsymbol} {\textbf{ma}~}
\renewcommand*{\googlescholarsocialsymbol}{\textbf{gs}~}
\renewcommand*{\bornsymbol} {\textbf{B}~}
+\renewcommand*{\codebergsocialsymbol} {\textbf{cb}~}
+\renewcommand*{\twitchsocialsymbol} {\textbf{ttv}~}
+\renewcommand*{\youtubesocialsymbol} {\textbf{yt}~}
+\renewcommand*{\tiktoksocialsymbol} {\textbf{tok}~}
+\renewcommand*{\instagramsocialsymbol} {\textbf{insta}~}
+\renewcommand*{\soundcloudsocialsymbol} {\textbf{sc}~}
+\renewcommand*{\steamsocialsymbol} {\textbf{st}~}
+\renewcommand*{\xboxsocialsymbol} {\textbf{xb}~}
+\renewcommand*{\playstationsocialsymbol} {\textbf{psn}~}
+\renewcommand*{\battlenetsocialsymbol} {\textbf{bn}~}
+\renewcommand*{\arxivsocialsymbol} {\textbf{arx}~}
+\renewcommand*{\inspiresocialsymbol} {\textbf{ins}~}
\renewcommand*{\listitemsymbol} {\labelitemi~}
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncviconsmarvosym.sty b/Master/texmf-dist/tex/latex/moderncv/moderncviconsmarvosym.sty
index 0a1d8f107dc..2dbc71011ee 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncviconsmarvosym.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncviconsmarvosym.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconsmarvosym.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsmarvosym}[2022-02-21 v2.3.1 modern curriculum vitae icons: marvosym]
+\ProvidesPackage{moderncviconsmarvosym}[2024-07-18 v2.4.1 modern curriculum vitae icons: marvosym]
%-------------------------------------------------------------------------------
% all symbols described in moderncv.cls
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncviconssymbols.sty b/Master/texmf-dist/tex/latex/moderncv/moderncviconssymbols.sty
index 256304380e1..b6c1fb7b1d5 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncviconssymbols.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncviconssymbols.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconssymbols.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -17,7 +17,7 @@
\RequirePackage{moderncviconsawesome}
\RequirePackage{moderncviconsacademic}
\else
- \ClassWarningNoLine{moderncv}{"academicons requires xetex/luatex to work. Using alternatives."}
+ \typeout{^^Jmoderncv: academicons requires XeTeX/LuaTeX to work. Using alternatives.^^J}
\ifpdftex
\RequirePackage{moderncviconsawesome}
\else
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncviconstikz.sty b/Master/texmf-dist/tex/latex/moderncv/moderncviconstikz.sty
index c3e9f40b0d4..e1a0248924d 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncviconstikz.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncviconstikz.sty
@@ -1,5 +1,5 @@
%% start of file `moderncviconstikz.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconstikz}[2022-02-21 v2.3.1 modern curriculum vitae and letter icons: tickz]
+\ProvidesPackage{moderncviconstikz}[2024-07-18 v2.4.1 modern curriculum vitae and letter icons: tickz]
%-------------------------------------------------------------------------------
@@ -218,7 +218,7 @@
\protect\begin{tikzpicture}[x=0.11em, y=0.11em, xscale=0.015, yscale=-0.015, inner sep=0pt, outer sep=0pt]
\protect\begin{scope}[shift={(507,387)}]
\protect\path[fill=color2,line width=0.057pt]
- (105.2000,24.9000) .. controls (102.1000,16.0000) and (89.5000,16.0000) ..
+ (105.2000,24.9000) .. controls (102.1000,16.0000) and (89.5000,16.0000) ..
(86.3000,24.9000) -- (29.8000,199.7000) -- (161.7000,199.7000) .. controls
(161.7000,199.7000) and (105.2000,24.9000) .. (105.2000,24.9000) -- cycle
(0.9000,287.7000) .. controls (-1.7000,295.7000) and (1.2000,304.6000) ..
@@ -327,7 +327,7 @@
\protect\raisebox{-0.12em}{
\protect\begin{tikzpicture}[y=1.8pt, x=1.8pt, yscale=-0.15, xscale=0.15, inner sep=0pt, outer sep=0pt]
\protect\begin{scope}[shift={(507,387)}]
- \protect\path[fill=color2]
+ \protect\path[fill=color2]
(0.9360,0.7320) .. controls (0.9360,10.9053) and (0.9360,21.0787) ..
(0.9360,31.2520) .. controls (1.6673,31.2520) and (2.3987,31.2520) ..
(3.1300,31.2520) .. controls (3.3452,32.0075) and (2.8778,32.0803) ..
@@ -374,7 +374,7 @@
\protect\raisebox{-0.12em}{
\protect\begin{tikzpicture}[y=0.1pt, x=0.1pt, yscale=-0.13, xscale=0.13, inner sep=0pt, outer sep=0pt]
\protect\begin{scope}[shift={(507,387)}]
- \protect\path[fill=color2]
+ \protect\path[fill=color2]
(430.1000,180.9000) -- (437.8000,211.9000) .. controls (407.6000,219.3000)
and (378.7000,231.3000) .. (352.1000,247.3000) -- (335.7000,220.0000) ..
controls (365.0000,202.3000) and (396.9000,189.1000) .. (430.1000,180.9000) --
@@ -439,6 +439,25 @@
~}
}{}\par
+\ifdefempty{\codebergsocialsymbol} {
+ \renewcommand*{\codebergsocialsymbol} {
+ \protect\raisebox{-0.12em}{
+ \protect\begin{tikzpicture}[y=0.8pt, x=0.8pt, yscale=-1.0, xscale=1.0, inner sep=0pt, outer sep=0pt]
+ \protect\begin{scope}[shift={(507, 387)}]
+ \protect\path[scale=0.265, opacity=0.500, line cap=butt, line join=miter, line width=0.779pt, miter limit=2.00]
+ (11249.8942,-1872.9296)arc(269.285:169.240:0.201313 and 0.150) --
+ (11258.5852,-1839.4433)arc(66.699:32.084:23.067) --
+ (11250.0698,-1872.8557)arc(329.460:269.346:0.201313 and 0.150) -- cycle;
+
+ \protect\path[scale=0.265, fill=color2, line width=0.426pt]
+ (11249.3743,-1883.6959)arc(269.785:180.000:23.067)arc(180.001:147.920:23.067)
+ -- (11249.1480,-1873.2412)arc(209.929:330.071:0.360097 and 0.269) --
+ (11269.0053,-1848.3766)arc(32.082:-0.002:23.067)arc(360.000:270.000:23.067)arc(270.108:269.892:23.067)
+ -- cycle;
+ \protect\end{scope}
+ \protect\end{tikzpicture}}
+ ~}
+}{}\par
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty
index 68b8db9a0aa..9f03be117a7 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty
@@ -2,30 +2,30 @@
%% Copyright 2021 David Seus (cryptointerest@posteo.de).
%
% This package provides a skill matrix template for the moderncv package.
-% Some recruiting firms require applicants to rate their skills, computer
-% skills, management tools, or similar in a table involving a graphical
-% illustration of their skill level. This package implements this idea
-% and provides the following commands to use within the moderncv
+% Some recruiting firms require applicants to rate their skills, computer
+% skills, management tools, or similar in a table involving a graphical
+% illustration of their skill level. This package implements this idea
+% and provides the following commands to use within the moderncv
% package:
-%
-%
+%
+%
% PUBLIC COMMANDS
% \cvskill{<1-5>}
% Illustrate skill level with little colored boxes.
-% By default five skill levels are predefined.
-%
-% Input:
+% By default five skill levels are predefined.
+%
+% Input:
% input_1: integer between 0 and 5
-%
-% Example usages:
+%
+% Example usages:
% \cvskill{3}
-%
-%
+%
+%
% \cvskilllegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
% Print legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
-%
+%
% Input:
-% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
+% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
@@ -34,25 +34,25 @@
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% input_7: string giving a name to the legend, default: <>
-%
+%
% Example usages:
% \cvskilllegend{} print default legend
% \cvskilllegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''.
% \cvskilllegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines
-%
+%
% Note:
% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
-% -The design of the table is such that the <second_level> entry stands in the first column but
+% -The design of the table is such that the <second_level> entry stands in the first column but
% occupies rows two and three. This has been done to accomodate english and german defaults.
% An alternative is provided by \cvskillplainlegend
-%
-%
+%
+%
% \cvskillplainlegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
% Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
% In this legend, the first three skill levels are in one column
-%
+%
% Input:
-% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
+% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
@@ -61,40 +61,40 @@
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% input_7: string giving a name to the legend, default: <>
-%
+%
% Example usages:
% \cvskillplainlegend{} print default legend
% \cvskillplainlegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''.
% \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines
-%
+%
% Note:
% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
-%
-%
+%
+%
% \cvskillhead[<post_padding>][<Level>][<Skill>][<Years>][<Comment>]%
% add skill matrix line acting as header explaining the meaning of columns.
-%
+%
% Input:
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string naming the level column (2nd column), default: <Level>
% input_3 (optional): string naming the skill column (3nd column), default: <Skill>
% input_4 (optional): string naming the experience-in-years column (4th column), default: <Years>
% input_5 (optional): string naming the comment column (5th column), default: <Comment>
-%
+%
% Example usages:
% \cvskillhead print default head.
% \cvskillhead[0.5em] print default head, but adjust post padding.
% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung] Fully adjust head to German example
-%
-% Note:
+%
+% Note:
% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
-%
-%
+%
+%
% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
% add cvskill matrix row.
-%
+%
% Input:
-% asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style.
+% asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2: string, naming skill cathegory, default: <>
@@ -102,98 +102,98 @@
% input_4: string, naming the skill, default: <>
% input_5: positive real number, stating the number of years of experience with this skill , default: <>
% input_6: string, explaining details w.r.t. that particual skill default: <>
-%
+%
% Example usages:
% \cvskillentry*{Language:}{3}{Python}{2}{I have done a million projects with Python}
% \cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man I'm the best!}
% \cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX}
% \cvskillentry*[1.5em]{OS:}{3}{Linux}{2}{I only use Archlinux}
-%
-% Note:
+%
+% Note:
% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
-%
-%
+%
+%
% \setcvskillcolumns[<width>][<factor>][<exp_width>]
% adjust column width of skill table
-%
-% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns
-% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned
+%
+% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns
+% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned
% and actually yield a decent looking table. The defaults depend on the style used and are chosen reasonably.
-% However, depending on the user input and the style that is used some of the columns might need adjustments.
-% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth
+% However, depending on the user input and the style that is used some of the columns might need adjustments.
+% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth
% skill matrix column. The second column containg the output of \cvskill remains fixed width. The last column,
% the comment column gets recalculated according to the setting of the other columns.
-%
+%
% Input
% Input_1 (optional): width smaller than \textwidth, default <\skillmatrix@hintscolumnwidth>
-% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without
+% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without
% the first column is used columns two, three and four. Through this parameter
% the width of the 3rd column (skill name) can be adjusted, default <\skillmatrix@columnwidth>
-% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column
+% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column
% (Years of experience), default <\cvskill@experiencewidth>
-%
+%
% Example usage
% \setcvskillcolumns[5em][][]% adjust first column. Same as \setcvskillcolumns[5em]
% \setcvskillcolumns[][0.45][]% adjust third (skill) column. Same as \setcvskillcolumns[][0.45]
% \setcvskillcolumns[][][\widthof{``Year''}]% adjust fourth (years) column.
-% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]
+% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]
% \setcvskillcolumns[\widthof{``Management Tools''}][0.6][3em]% ajust all at once.
-%
+%
% Note
% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
-% it aligns with the rest of the entries. A readjustment of the first column should therefor
-% be avoided. It is recomended to only use \setcvskillcolumns in the form of
+% it aligns with the rest of the entries. A readjustment of the first column should therefor
+% be avoided. It is recomended to only use \setcvskillcolumns in the form of
% \setcvskillcolumns[][<factor>][<width>], thereby leaving the defaults in place for the first column.
-%
-%
+%
+%
% \setcvskilllegendcolumns[<width>][<factor>]
% adjust column width of legend
-%
-% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix
-% such that the default english and german examples look good.
-% However, depending on the user input (translation) and the style that is used some adjustment might be needed.
-% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing
+%
+% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix
+% such that the default english and german examples look good.
+% However, depending on the user input (translation) and the style that is used some adjustment might be needed.
+% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing
% \cvskill commands. The second column containg the output of \cvskill remains fixed width. The last column,
% the comment column gets recalculated according to the setting of the other columns.
-%
+%
% Input
-% Input_1 (optional): length smaller than \textwidth influencing the width of the first column
-% where depending on the style the legend_string gets printed. In case the
-% string is left empty adjusting this width allows moving the legend horizontally.
+% Input_1 (optional): length smaller than \textwidth influencing the width of the first column
+% where depending on the style the legend_string gets printed. In case the
+% string is left empty adjusting this width allows moving the legend horizontally.
% Default <\skilllegend@hintscolumnwidth>
-% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column,
-% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right,
+% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column,
+% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right,
% \cvskilllegend@rightdescriptorwidth is influenced by the factor 1-<factor>.
% Default <\skilllegend@leftdesriptorfactor>
-%
+%
% Example usage
% \setcvskilllegendcolumns[][0.45]%% adjust left desriptor column.
% \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]% adjust both left descriptor column and string column
-%
+%
% Note
-% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv)
+% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv)
% the first optional variable has no effect in this case.
% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
-% it aligns with the rest of the entries. A readjustment of the first column should therefor
-% be avoided. It is recomended to only use \cvskilllegend in the form of
+% it aligns with the rest of the entries. A readjustment of the first column should therefor
+% be avoided. It is recomended to only use \cvskilllegend in the form of
% \cvskilllegend[][<factor>], thereby leaving the defaults in place for the first column.
% - For style 'banking' the first column is set to align with the rest of the \cvskillentry entries
-% Therefor adjusting the first column can be used to widen the table while moving it around. If no
+% Therefor adjusting the first column can be used to widen the table while moving it around. If no
% legend string is used, setting \cvskilllegend[0em] maximises the real enstate for the legend.
-%
-%
+%
+%
% PRIVATE COMMANDS
-%
+%
% \recompute@cvskillmatrix@lengths
-% compute all lengths necessary for the skill matrix depending on
+% compute all lengths necessary for the skill matrix depending on
% the moderncv style (moderncvbody)
-%
+%
% Input: none
-%
+%
% Example usage (only internally in moderncvbody<i-v>.sty)
-% \recompute@cvskillmatrix@lengths
-%
-%
+% \recompute@cvskillmatrix@lengths
+%
+%
% 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/.
@@ -203,10 +203,10 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvskillmatrix}[2022-02-21 v2.3.1 modern curriculum vitae and letter skill matrix]
+\ProvidesPackage{moderncvskillmatrix}[2024-07-18 v2.4.1 modern curriculum vitae and letter skill matrix]
-% The definitions need to be adjusted depending on which moderncvbody<i-v>.sty style is usde.
-% body type options: "moderncvbodyi" (default), "moderncvbodyii", "moderncvbodyiii", "moderncvbodyiv" or "moderncvbodyv"
+% The definitions need to be adjusted depending on which moderncvbody<i-v>.sty style is usde.
+% body type options: "moderncvbodyi" (default), "moderncvbodyii", "moderncvbodyiii", "moderncvbodyiv" or "moderncvbodyv"
\@initializeif{\if@moderncvbodyi}\@moderncvbodyifalse
\DeclareOption{moderncvbodyi}{\@moderncvbodyitrue\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvfalse}
\@initializeif{\if@moderncvbodyii}\@moderncvbodyiifalse % this option is added in case moderncvbodyii gets implemented standalone
@@ -218,6 +218,10 @@
\@initializeif{\if@moderncvbodyv}\@moderncvbodyvfalse
\DeclareOption{moderncvbodyv}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvtrue}
+% If option `circle` is specified, use circles instead of small rectangles for rating skills
+\@initializeif{\if@cvskillcircle}\@cvskillcirclefalse
+\DeclareOption{circle}{\@cvskillcircletrue}
+
\DeclareOption*{}% avoid choking on unknown options
\ExecuteOptions{moderncvbodyi}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
@@ -239,23 +243,29 @@
% %-------------------------------------------------------------------------------
% The code for the Skilllevel illustration with the little boxes.
% This is idea stolen from the limecv package, see https://github.com/opieters/limecv.git
-\@initializelength{\cvSkill@RectangleSize}
-\setlength{\cvSkill@RectangleSize}{1.2ex}
+\@initializelength{\cvSkill@ShapeSize}
+\if@cvskillcircle%
+ \setlength{\cvSkill@ShapeSize}{.7ex}%
+ \def\cvSkill@Shape#1{\tikz\filldraw[#1] (0, 0) circle (\cvSkill@ShapeSize);}
+\else
+ \setlength{\cvSkill@ShapeSize}{1.2ex}
+ \def\cvSkill@Shape#1{\tikz\filldraw[#1] (0, 0) rectangle (\cvSkill@ShapeSize, \cvSkill@ShapeSize);}
+\fi
\newcount\my@repeat@count
\DeclareDocumentCommand{\cvskill}{m}{%
% Illustrate skill level with little colored boxes.
-% By default five skill levels are predefined.
-%
-% Input:
+% By default five skill levels are predefined.
+%
+% Input:
% integer between 0 and 5
-% Example usage:
+% Example usage:
% \cvskill{3}
\begingroup
\my@repeat@count=\z@
- \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[color1] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance%
+ \@whilenum\my@repeat@count<#1\do{\cvSkill@Shape{skillmatrixfullcolor}\advance%
\my@repeat@count\@ne\,}%
\my@repeat@count=\numexpr5-\z@\relax
- \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[color2!30] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance%
+ \@whilenum\my@repeat@count>#1\do{\cvSkill@Shape{skillmatrixemptycolor}\advance%
\my@repeat@count\m@ne\,}%
\endgroup
}% end \cvskill
@@ -279,10 +289,10 @@
\@initializelength{\skilllegend@padding}
\@initializelength{\skilllegend@bodylength}
-% \separatorrulewidth is defined in moderncvbodyv.sty and we need to
+% \separatorrulewidth is defined in moderncvbodyv.sty and we need to
% define it to not throw an error in the other cases
\if@moderncvbodyv%
-%
+%
\else%
\@initializelength{\separatorrulewidth}
\setlength{\separatorrulewidth}{1ex}
@@ -292,13 +302,13 @@
%% DEFINITION \recompute@cvskillmatrix@lengths
% declare the command \recompute@cvskillmatrix@lengths empty
\DeclareDocumentCommand{\recompute@cvskillmatrix@lengths}{}{}%
-% compute all lengths necessary for the skill matrix depending on
+% compute all lengths necessary for the skill matrix depending on
% the moderncv style (moderncvbody)
-%
+%
% Input: none
-%
+%
% Example usage (only internally in moderncvbody<i-v>.sty)
-% \recompute@cvskillmatrix@lengths
+% \recompute@cvskillmatrix@lengths
% Definition of \recompute@cvskillmatrix@lengths for moderncvbodyi
\if@moderncvbodyi%
@@ -332,7 +342,7 @@
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}%
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
% lengths and definitions needed for the legends
- % note that \skillmatrix@padding also affects the appearance of legends
+ % note that \skillmatrix@padding also affects the appearance of legends
\setlength{\skilllegend@padding}{0.25ex}%
\setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth}%
\setlength{\skilllegend@bodylength}{\skillmatrix@bodylength}%
@@ -352,7 +362,7 @@
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
% lengths and definitions needed for the legends
- % note that \skillmatrix@padding also affects the appearance of legends
+ % note that \skillmatrix@padding also affects the appearance of legends
\setlength{\skilllegend@padding}{0.25ex}
\setlength{\skilllegend@hintscolumnwidth}{0ex}%\skillmatrix@hintscolumnwidth
\setlength{\skilllegend@bodylength}{\maincolumnwidth}
@@ -371,7 +381,7 @@
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}%
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
% lengths and definitions needed for the legends
- % note that \skillmatrix@padding also affects the appearance of legends
+ % note that \skillmatrix@padding also affects the appearance of legends
\setlength{\skilllegend@padding}{0.25ex}%
\setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth}%
\setlength{\skilllegend@bodylength}{\maincolumnwidth}%
@@ -385,43 +395,43 @@
% \setcvskillcolumns[<width>][<factor>][<exp_width>]
\DeclareDocumentCommand{\setcvskillcolumns}{+O{\skillmatrix@hintscolumnwidth} +O{\skillmatrix@columnwidth} +O{\cvskill@experiencewidth}}{%
% adjust column width of skill table
-%
-% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns
-% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned
+%
+% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns
+% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned
% and actually yield a decent looking table. The defaults depend on the style used and are chosen reasonably.
-% However, depending on the user input and the style that is used some of the columns might need adjustments.
-% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth
+% However, depending on the user input and the style that is used some of the columns might need adjustments.
+% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth
% skill matrix column. The second column containg the output of \cvskill remains fixed width. The last column,
% the comment column gets recalculated according to the setting of the other columns.
-%
+%
% Input
% Input_1 (optional): width smaller than \textwidth, default <\skillmatrix@hintscolumnwidth>
-% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without
+% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without
% the first column is used columns two, three and four. Through this parameter
% the width of the 3rd column (skill name) can be adjusted, default <\skillmatrix@columnwidth>
-% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column
+% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column
% (Years of experience), default <\cvskill@experiencewidth>
-%
+%
% Example usage
% \setcvskillcolumns[5em][][]% adjust first column. Same as \setcvskillcolumns[5em]
% \setcvskillcolumns[][0.45][]% adjust third (skill) column. Same as \setcvskillcolumns[][0.45]
% \setcvskillcolumns[][][\widthof{``Year''}]% adjust fourth (years) column.
-% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]
+% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]
% \setcvskillcolumns[\widthof{``Management Tools''}][0.6][3em]% ajust all at once.
-%
+%
% Note
% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
-% it aligns with the rest of the entries. A readjustment of the first column should therefor
-% be avoided. It is recomended to only use \setcvskillcolumns in the form of
+% it aligns with the rest of the entries. A readjustment of the first column should therefor
+% be avoided. It is recomended to only use \setcvskillcolumns in the form of
% \setcvskillcolumns[][<factor>][<width>], thereby leaving the defaults in place for the first column.
-%
+%
\def\arg@new@hintscolumnwidth{#1}% <-- all these terminal % signs are necessary for the fancy style to not show weird spaces!!!
- \def\arg@new@bodyLengthFactor{#2}%
- \def\arg@new@experienceWidth{#3}%
- % Check for empty arguments. Defaults are given. Thus a call of \setcvskillcolumns
+ \def\arg@new@bodyLengthFactor{#2}%
+ \def\arg@new@experienceWidth{#3}%
+ % Check for empty arguments. Defaults are given. Thus a call of \setcvskillcolumns
% without any arguments leads to nonempty arguments \arg@new@hintscolumnwidth and
- % \def\arg@new@bodyLengthFactor{#2}. However, we need to take care of calls like
- % \setcvskillcolumns[], \setcvskillcolumns[][], \setcvskillcolumns[][][] or even
+ % \def\arg@new@bodyLengthFactor{#2}. However, we need to take care of calls like
+ % \setcvskillcolumns[], \setcvskillcolumns[][], \setcvskillcolumns[][][] or even
% \setcvskillcolumns[<somelength>][], \setcvskillcolumns[][<somefactor>] \setcvskillcolumns[][][<length>]
\ifdefempty{\arg@new@hintscolumnwidth}{%
% Case \setcvskillcolumns[], \setcvskillcolumns[][] or \setcvskillcolumns[][<somefactor>]
@@ -445,13 +455,13 @@
% \cvskill@descriptorwidth accordingly
\setlength{\cvskill@experiencewidth}{\arg@new@experienceWidth}%
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}%
- }%
+ }%
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}%
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
}%
% Case \setcvskillcolumns[] nothing needs to be done here recalculate lengths affected by the change
- }{%
- % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][]
+ }{%
+ % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][]
% or \setcvskillcolumns[<width>][<somefactor>]
\setlength{\skillmatrix@hintscolumnwidth}{\arg@new@hintscolumnwidth}%
\setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth}%
@@ -483,41 +493,41 @@
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}%
}%
}%
-%
+%
% \setcvskilllegendcolumns[<width>][<factor>]
\DeclareDocumentCommand{\setcvskilllegendcolumns}{+O{\skilllegend@hintscolumnwidth} +O{\skilllegend@leftdesriptorfactor}}{%
% adjust column width of legend
-%
-% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix
-% such that the default english and german examples look good.
-% However, depending on the user input (translation) and the style that is used some adjustment might be needed.
-% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing
+%
+% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix
+% such that the default english and german examples look good.
+% However, depending on the user input (translation) and the style that is used some adjustment might be needed.
+% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing
% \cvskill commands. The second column containg the output of \cvskill remains fixed width. The last column,
% the comment column gets recalculated according to the setting of the other columns.
-%
+%
% Input
-% Input_1 (optional): length smaller than \textwidth influencing the width of the first column
-% where depending on the style the legend_string gets printed. In case the
-% string is left empty adjusting this width allows moving the legend horizontally.
+% Input_1 (optional): length smaller than \textwidth influencing the width of the first column
+% where depending on the style the legend_string gets printed. In case the
+% string is left empty adjusting this width allows moving the legend horizontally.
% Default <\skilllegend@hintscolumnwidth>
-% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column,
-% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right,
+% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column,
+% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right,
% \cvskilllegend@rightdescriptorwidth is influenced by the factor 1-<factor>.
% Default <\skilllegend@leftdesriptorfactor>
-%
+%
% Example usage
% \setcvskilllegendcolumns[][0.45]%% adjust left desriptor column.
% \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]% adjust both left descriptor column and string column
-%
+%
% Note
-% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv)
+% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv)
% the first optional variable has no effect in this case.
% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
-% it aligns with the rest of the entries. A readjustment of the first column should therefor
-% be avoided. It is recomended to only use \cvskilllegend in the form of
+% it aligns with the rest of the entries. A readjustment of the first column should therefor
+% be avoided. It is recomended to only use \cvskilllegend in the form of
% \cvskilllegend[][<factor>], thereby leaving the defaults in place for the first column.
% - For style 'banking' the first column is set to align with the rest of the \cvskillentry entries
-% Therefor adjusting the first column can be used to widen the table while moving it around. If no
+% Therefor adjusting the first column can be used to widen the table while moving it around. If no
% legend string is used, setting \cvskilllegend[0em] maximises the real enstate for the legend.
%
\def\arg@new@legend@hintscolumnwidth{#1}%
@@ -532,8 +542,8 @@
\RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{\arg@new@legend@leftDescriptorFactor}%
}%
% % Case \setcvskilllegendcolumns[] nothing needs to be done here i.e. leave default values unaltered
- }{%
- % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[<width>], \setcvskilllegendcolumns[<width>][]
+ }{%
+ % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[<width>], \setcvskilllegendcolumns[<width>][]
% or \setcvskilllegendcolumns[<width>][<somefactor>]
\setlength{\skilllegend@hintscolumnwidth}{\arg@new@legend@hintscolumnwidth}%
\if@moderncvbodyi%
@@ -554,18 +564,18 @@
}%
}%
}%
-%
+%
% %-------------------------------------------------------------------------------
-% % \cvskilllegend
+% % \cvskilllegend
% %-------------------------------------------------------------------------------
% default legend style
% \cvskilllegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
\NewDocumentCommand\skillLegend@FontSize{}{\scriptsize}
\DeclareDocumentCommand\cvskilllegend{s +O{} +O{} +O{} +O{} +O{} +O{} +m}{}%
% Print legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
-%
+%
% Input:
-% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
+% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
@@ -574,15 +584,15 @@
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% input_7: string giving a name to the legend, default: <>
-%
+%
% Example usages:
% \cvskilllegend{} print default legend
% \cvskilllegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''.
% \cvskilllegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines
-%
+%
% Note:
% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
-% -The design of the table is such that the <second_level> entry stands in the first column but
+% -The design of the table is such that the <second_level> entry stands in the first column but
% occupies rows two and three. This has been done to accomodate english and german defaults.
% An alternative is provided by \cvskillplainlegend
@@ -596,7 +606,7 @@
\RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend@defaultLevelOne} +O{\skillLegend@defaultLevelTwo} +O{\skillLegend@defaultLevelThree} +O{\skillLegend@defaultLevelFour} +O{\skillLegend@defaultLevelFive} +m}{%
\IfBooleanTF#1{% if a star is given, add dashed line
\begingroup%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
% calculate descriptor widths
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}%
@@ -610,7 +620,7 @@
\raggedleft\hintstyle{#8} & \cvskill{1}& & {\skillLegend@FontSize #3} & \cvskill{3}& &{\skillLegend@FontSize #5 } \\%
%
& \cvskill{2} & & \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}& & {\skillLegend@FontSize #6 } \\%
- %
+ %
& & & & \cvskill{5}& & {\skillLegend@FontSize #7 }%
\end{tabular}%
\endgroup
@@ -629,7 +639,7 @@
\raggedleft\hintstyle{#8} & \cvskill{1}\, & \,{\skillLegend@FontSize #3} & \cvskill{3}\, &\,{\skillLegend@FontSize #5 } \\%
%
& \cvskill{2}\, & \,\multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}\, &\,{\skillLegend@FontSize #6 } \\%
- %
+ %
& & & \cvskill{5}\, &\,{\skillLegend@FontSize #7 }%
\end{tabular}%
\endgroup%
@@ -646,11 +656,11 @@
}%
\IfBooleanTF#1{% if a star is given, add dashed line
\begingroup%
- % recalculate desrciptor widths on the fly. Allows for different padding
+ % recalculate desrciptor widths on the fly. Allows for different padding
% in the stared and nonstared case
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}%
- \arrayrulecolor{color1}
+ \arrayrulecolor{bodyrulecolor}
\begin{tabular}{@{}p{\skilllegend@hintscolumnwidth}
@{\hspace{\separatorcolumnwidth}}p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}%
p{2\skilllegend@padding}%
@@ -660,13 +670,13 @@
\raggedleft\hintstyle{} & \cvskill{1} & & {\skillLegend@FontSize #3} & \cvskill{3} & & {\skillLegend@FontSize #5 } \\
%
& \cvskill{2} & & \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4} & &{\skillLegend@FontSize #6 } \\
- %
- & & & & \cvskill{5}& & {\skillLegend@FontSize #7 }
+ %
+ & & & & \cvskill{5}& & {\skillLegend@FontSize #7 }
\end{tabular}%
\endgroup%
\par\addvspace{#2}}{
\begingroup%
- % oddly enough, we should only need to subtract 2 paddings in the descritorwidths.
+ % oddly enough, we should only need to subtract 2 paddings in the descritorwidths.
% but while testing I got overflow of text into the margin
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-5\skilllegend@padding}%
@@ -678,8 +688,8 @@
\raggedleft\hintstyle{} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{3} & {\skillLegend@FontSize #5 } \\
%
& \cvskill{2} & \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4} &{\skillLegend@FontSize #6 } \\
- %
- & & & \cvskill{5} & {\skillLegend@FontSize #7 }
+ %
+ & & & \cvskill{5} & {\skillLegend@FontSize #7 }
\end{tabular}%
\endgroup%
\par\addvspace{#2}
@@ -697,7 +707,7 @@
}{%
\cvitem[-0.5em]{#8}{}%
}%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\RenewDocumentCommand{\@starIndependentTabular}{}{%
\begingroup%
@@ -713,32 +723,32 @@
\@moderncvstrut{4pt}{16pt} & \cvskill{1}& {\skillLegend@FontSize #3} & \cvskill{3}& {\skillLegend@FontSize #5 }\\%
%
& \cvskill{2}& \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}& {\skillLegend@FontSize #6 }\\%
- %
+ %
& & & \cvskill{5} & {\skillLegend@FontSize #7 }\\[#2]% the spacing needs to be inside the cell for the vertical rule to extend correctly
\end{tabular}%
\endgroup%
- \par\@aftersectionfalse\ignorespaces%
+ \par\@aftersectionfalse\ignorespaces%
}%
- % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines.
+ % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines.
\IfBooleanTF#1{%
\@starIndependentTabular%
- }{%
+ }{%
\@starIndependentTabular%
}%
}%
\fi
% %-------------------------------------------------------------------------------
-% % \cvskillplainlegend
+% % \cvskillplainlegend
% %-------------------------------------------------------------------------------
% alternative legend style
% \cvskillplainlegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
\DeclareDocumentCommand\cvskillplainlegend{s +O{} +O{} +O{} +O{} +O{} +O{} +m}{}%
% Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
% In this legend, the first three skill levels are in one column
-%
+%
% Input:
-% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
+% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
@@ -747,12 +757,12 @@
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% input_7: string giving a name to the legend, default: <>
-%
+%
% Example usages:
% \cvskillplainlegend{} print default legend
% \cvskillplainlegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''.
% \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines
-%
+%
% Note:
% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
@@ -766,7 +776,7 @@
\RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend@defaultLevelOne} +O{\skillPlainLegend@defaultLevelTwo} +O{\skillPlainLegend@defaultLevelThree} +O{\skillPlainLegend@defaultLevelFour} +O{\skillPlainLegend@defaultLevelFive} +m}{%
\IfBooleanTF#1{% if a star is given, add dashed line
\begingroup%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
% calculate descriptor widths
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}%
@@ -780,7 +790,7 @@
\raggedleft\hintstyle{#8} & \cvskill{1}& & {\skillLegend@FontSize #3} & \cvskill{4}& &{\skillLegend@FontSize #6} \\%
%
& \cvskill{2} & & {\skillLegend@FontSize #4} & \cvskill{5}& & {\skillLegend@FontSize #7} \\%
- %
+ %
& \cvskill{3} & & {\skillLegend@FontSize #5} & & & %
\end{tabular}%
\endgroup%
@@ -799,7 +809,7 @@
\raggedleft\hintstyle{#8} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{4} &{\skillLegend@FontSize #6} \\%
%
& \cvskill{2} & {\skillLegend@FontSize #4} & \cvskill{5} &{\skillLegend@FontSize #7} \\%
- %
+ %
& \cvskill{3} & {\skillLegend@FontSize #5 } & & %
\end{tabular}%
\endgroup%
@@ -816,7 +826,7 @@
}%
\IfBooleanTF#1{% if a star is given, add dashed line
\begingroup%
- \arrayrulecolor{color1}
+ \arrayrulecolor{bodyrulecolor}
\setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}%
\setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}%
\begin{tabular}{@{}p{\skilllegend@hintscolumnwidth}
@@ -828,8 +838,8 @@
\raggedleft\hintstyle{} & \cvskill{1} & & {\skillLegend@FontSize#3} & \cvskill{4} & & {\skillLegend@FontSize#6}\\%
%
& \cvskill{2} & &{\skillLegend@FontSize#4} & \cvskill{5} & &{\skillLegend@FontSize#7}\\%
- %
- & \cvskill{3} & &{\skillLegend@FontSize#5} & & &%
+ %
+ & \cvskill{3} & &{\skillLegend@FontSize#5} & & &%
\end{tabular}%
\endgroup%
\par\addvspace{#2}}{
@@ -845,7 +855,7 @@
\raggedleft\hintstyle{} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{4} & {\skillLegend@FontSize #6} \\
%
& \cvskill{2} & {\skillLegend@FontSize #4} & \cvskill{5} & {\skillLegend@FontSize #7} \\
- %
+ %
& \cvskill{3} & {\skillLegend@FontSize #5} & & %
\end{tabular}%
\endgroup
@@ -863,7 +873,7 @@
}{%
\cvitem[-0.5em]{#8}{}%
}%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\RenewDocumentCommand{\@starIndependentTabular}{}{%
\begingroup%
@@ -879,16 +889,16 @@
\@moderncvstrut{4pt}{16pt} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{4} & {\skillLegend@FontSize #6}\\%
%
& \cvskill{2} & {\skillLegend@FontSize #4} & \cvskill{5} & {\skillLegend@FontSize #7}\\%
- %
+ %
& \cvskill{3} & {\skillLegend@FontSize #5} & & \\[#2]% the spacing needs to be inside the cell for the vertical rule to extend correctly
\end{tabular}%
\endgroup%
- \par\@aftersectionfalse\ignorespaces%
+ \par\@aftersectionfalse\ignorespaces%
}%
- % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines.
+ % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines.
\IfBooleanTF#1{%
\@starIndependentTabular%
- }{%
+ }{%
\@starIndependentTabular%
}%
}%
@@ -900,20 +910,20 @@
\NewDocumentCommand\cvSkillMatrix@HeadFont{}{\normalfont}
\DeclareDocumentCommand\cvskillhead{+O{} +O{} +O{} +O{} +O{}}{}%
% add skill matrix line acting as header explaining the meaning of columns.
-%
+%
% Input:
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2 (optional): string naming the level column (2nd column), default: <Level>
% input_3 (optional): string naming the skill column (3nd column), default: <Skill>
% input_4 (optional): string naming the experience-in-years column (4th column), default: <Years>
% input_5 (optional): string naming the comment column (5th column), default: <Comment>
-%
+%
% Example usages:
% \cvskillhead print default head.
% \cvskillhead[0.5em] print default head, but adjust post padding.
% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung] Fully adjust head to German example
-%
-% Note:
+%
+% Note:
% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
\NewDocumentCommand\skillMatrix@HeaderDefaultOne{}{Level}
@@ -924,13 +934,13 @@
\RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{%
\begingroup
\renewcommand{\arraystretch}{1.25}
- \arrayrulecolor{color1}
+ \arrayrulecolor{bodyrulecolor}
\begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}%
p{\cvskill@width}@{\hspace{\skillmatrix@padding}}%
p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}%
p{\cvskill@experiencewidth}@{\hspace{\skillmatrix@padding}}
p{\skillmatrix@commentwidth}@{}}%
- & \centering{\cvSkillMatrix@HeadFont #2} & \centering{\cvSkillMatrix@HeadFont #3} & \centering{\cvSkillMatrix@HeadFont #4} & {\cvSkillMatrix@HeadFont #5}
+ & \centering{\cvSkillMatrix@HeadFont #2} & \centering{\cvSkillMatrix@HeadFont #3} & \centering{\cvSkillMatrix@HeadFont #4} & {\cvSkillMatrix@HeadFont #5}
\end{tabular}%
\endgroup
\par\addvspace{#1}
@@ -938,7 +948,7 @@
% Definition of \cvskillhead valid moderncvbodyv
\if@moderncvbodyv%
\RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
\begingroup%
@@ -954,19 +964,19 @@
& & \centering{\cvSkillMatrix@HeadFont#2} & \centering{\cvSkillMatrix@HeadFont#3} & \centering{\cvSkillMatrix@HeadFont#4} & {\cvSkillMatrix@HeadFont#5} \\[#1]% the spacing needs to be inside the cell for the vertical rule to extend correctly
\end{tabular}%
\endgroup%
- \par\@aftersectionfalse\ignorespaces%
+ \par\@aftersectionfalse\ignorespaces%
}%
\fi
% %-------------------------------------------------------------------------------
-% % \cvskillentry
+% % \cvskillentry
% %-------------------------------------------------------------------------------
% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
\DeclareDocumentCommand\cvskillentry{s +O{} +m +m +m +m +m}{}%
% add cvskill matrix row.
-%
+%
% Input:
-% asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style.
+% asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style.
% For the fancy style, the asterix has no meaning.
% input_1 (optional): padding length appended to the legend, default: <0.25em>
% input_2: string, naming skill cathegory, default: <>
@@ -974,14 +984,14 @@
% input_4: string, naming the skill, default: <>
% input_5: positive real number, stating the number of years of experience with this skill , default: <>
% input_6: string, explaining details w.r.t. that particual skill default: <>
-%
+%
% Example usages:
% \cvskillentry*{Language:}{3}{Python}{2}{I have done a million projects with Python}
% \cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man I'm the best!}
% \cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX}
% \cvskillentry*[1.5em]{OS:}{3}{Linux}{2}{I only use Archlinux}
-%
-% Note:
+%
+% Note:
% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
% Definition of \cvskillentry valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii, moderncvbodyiv
@@ -990,7 +1000,7 @@
\IfBooleanTF{#1}{% If a star is seen a dotted line is drawn above the entry
\begingroup
\renewcommand{\arraystretch}{1.25}
- \arrayrulecolor{color1}
+ \arrayrulecolor{bodyrulecolor}
\begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}%
p{\cvskill@width}@{\hspace{\skillmatrix@padding}}%
p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}%
@@ -1018,7 +1028,7 @@
\if@moderncvbodyv%
\DeclareDocumentCommand\@starIndependentMatrixEntry{}{}%
\RenewDocumentCommand\cvskillentry{s O{.25em} +m +m +m +m +m}{%
- \arrayrulecolor{color1}%
+ \arrayrulecolor{bodyrulecolor}%
\setlength\arrayrulewidth{\separatorrulewidth}%
\vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
%test for the star * in the command
@@ -1038,13 +1048,13 @@
}%
\IfBooleanTF{#1}{% the star does not do anything here
\@starIndependentMatrixEntry%
- }{%
+ }{%
\@starIndependentMatrixEntry%
}%
\par\@aftersectionfalse\ignorespaces%
}%
\fi
-%
+%
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvstylebanking.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvstylebanking.sty
index afc20e5399b..6398480ef98 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvstylebanking.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvstylebanking.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstylebanking.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylebanking}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: banking]
+\ProvidesPackage{moderncvstylebanking}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: banking]
% body rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
\@initializecommand{\moderncvstylebodyoptions}{}
@@ -24,6 +24,12 @@
\DeclareOption{center} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,center}}
\DeclareOption{right} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,right}}
+% head options
+\@initializecommand{\moderncvstyleheadoptions}{}
+\@initializeif{\if@datainhead}\@datainheadtrue
+\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
+
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
\DeclareOption{symbols} {\@symbolstrue}
@@ -55,19 +61,45 @@
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
-
+%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color1}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!60}
+\colorlet{titlecolor}{color2!85}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
-\moderncvhead{3}
+\moderncvhead[\moderncvstyleheadoptions]{3}
\moderncvbody[\moderncvstylebodyoptions]{3}
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvstylecasual.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvstylecasual.sty
index eba5df696e8..1192c8911c5 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvstylecasual.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvstylecasual.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstylecasual.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,12 +10,18 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylecasual}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: casual]
+\ProvidesPackage{moderncvstylecasual}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: casual]
% head section alignment options: "left" (default) or "right"
\@initializecommand{\moderncvstyleheadoptions}{}
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+% head options alternate, details and no details
+\DeclareOption{alternate}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,alternate}}
+\@initializeif{\if@datainhead}\@datainheadfalse
+\DeclareOption{details}{\@datainheadtrue\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
+
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
@@ -23,7 +29,7 @@
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{right,symbols}
+\ExecuteOptions{right,symbols,nodetails}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@@ -42,18 +48,46 @@
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
+%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color2}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
\moderncvhead[\moderncvstyleheadoptions]{2}
\moderncvbody{1}
-\moderncvfoot{1}
+% include foot only if nodetails option is active since otherwise we have two times the information
+% on the page
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvstyleclassic.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvstyleclassic.sty
index 3018cc67a79..07950bcfa58 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvstyleclassic.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvstyleclassic.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstyleclassic.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,12 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleclassic}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: classic]
+\ProvidesPackage{moderncvstyleclassic}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: classic]
% head section alignment options: "left" (default) or "right"
\@initializecommand{\moderncvstyleheadoptions}{}
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+\DeclareOption{top}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,top}}
+
+\@initializeif{\if@datainhead}\@datainheadtrue
+\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
@@ -23,7 +28,7 @@
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{left,symbols}
+\ExecuteOptions{left,symbols,details}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@@ -42,17 +47,46 @@
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
+%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color2}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
\moderncvhead[\moderncvstyleheadoptions]{1}
\moderncvbody{1}
+% include foot only if nodetails option is active since otherwise we have two times the information
+% on the page
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvstylecontemporary.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvstylecontemporary.sty
new file mode 100644
index 00000000000..32f02ceb37f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvstylecontemporary.sty
@@ -0,0 +1,63 @@
+%% start of file `moderncvstylecontemporary.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% 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/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvstylecontemporary}[2023/11/24 v2.0.0 modern curriculum vitae and letter style scheme: contemporary]
+
+% head section alignment options: "left" (default) or "right"
+\@initializecommand{\moderncvstyleheadoptions}{}
+\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
+\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+\DeclareOption{qr} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,qr}}
+\DeclareOption{noqr}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,noqr}}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{left,qr}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+%-------------------------------------------------------------------------------
+% fonts & icons
+%-------------------------------------------------------------------------------
+% Latin Modern fonts
+%\ifxetexorluatex
+% \setmainfont{Latin Modern Roman}
+% \setsansfont{Latin Modern Sans}
+% \setmathfont{Latin Modern Math}
+%\else
+ \IfFileExists{lmodern.sty}%
+ {\RequirePackage{lmodern}}%
+ {}
+%\fi
+
+% symbols
+\providecolor{default-socialicon-color}{named}{headtext}
+\moderncvicons{symbols}
+
+%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% skillmatrix
+\colorlet{bodyrulecolor}{color1}
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
+
+%-------------------------------------------------------------------------------
+% header, body & footer
+%-------------------------------------------------------------------------------
+\moderncvhead[\moderncvstyleheadoptions]{7}
+\moderncvbody{6}
+
+
+\endinput
+
+
+%% end of file `moderncvstylecontemporary.sty'.
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvstyleempty.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvstyleempty.sty
index a86560524c0..8dcce13aa5a 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvstyleempty.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvstyleempty.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstyleempty.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleempty}[2022-02-21 v2.3.1 modern curriculum vitae scheme: empty]
+\ProvidesPackage{moderncvstyleempty}[2024-07-18 v2.4.1 modern curriculum vitae scheme: empty]
%-------------------------------------------------------------------------------
% required packages
@@ -33,11 +33,34 @@
%-------------------------------------------------------------------------------
%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color2}
+% \colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
+
+%-------------------------------------------------------------------------------
% fonts & icons
%-------------------------------------------------------------------------------
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvstylefancy.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvstylefancy.sty
index 56de636100a..1ad8d8732f1 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvstylefancy.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvstylefancy.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstylefancy.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,13 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylefancy}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: fancy]
+\ProvidesPackage{moderncvstylefancy}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: fancy]
+
+% headoptions
+\@initializecommand{\moderncvstyleheadoptions}{}
+\@initializeif{\if@datainhead}\@datainheadtrue
+\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
@@ -18,10 +24,34 @@
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{symbols}
+\ExecuteOptions{symbols,details}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color1}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{color1}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
+
+
+%-------------------------------------------------------------------------------
% fonts & icons
%-------------------------------------------------------------------------------
% EB Garamond font
@@ -38,7 +68,7 @@
% symbols
\if@symbols
- \moderncvicons{symbols} % use symbols
+ \moderncvicons{symbols} % use symbols
\else
\moderncvicons{letters} % do not use symbols, use letters
\fi
@@ -47,9 +77,16 @@
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
-\moderncvhead{5}
+\moderncvhead[\moderncvstyleheadoptions]{5}
\moderncvbody{5}
+% include foot only if nodetails option is active since otherwise we have two times the information
+% on the page
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvstyleoldstyle.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvstyleoldstyle.sty
index 78225e0a58c..37de3c57b32 100644
--- a/Master/texmf-dist/tex/latex/moderncv/moderncvstyleoldstyle.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvstyleoldstyle.sty
@@ -1,5 +1,5 @@
%% start of file `moderncvstyleoldstyle.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,14 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleoldstyle}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: oldstyle]
+\ProvidesPackage{moderncvstyleoldstyle}[2024-07-18 v2.4.1 modern curriculum vitae and letter style scheme: oldstyle]
+
+% headoptions
+\@initializecommand{\moderncvstyleheadoptions}{}
+\@initializeif{\if@datainhead}\@datainheadtrue
+\DeclareOption{details}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,details}}
+\DeclareOption{nodetails}{\@datainheadfalse\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,nodetails}}
+
% toggle use of symbol fonts.
\@initializeif{\if@symbols}\@symbolsfalse
@@ -18,7 +25,7 @@
\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{symbols}
+\ExecuteOptions{symbols,details}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@@ -51,11 +58,41 @@
%-------------------------------------------------------------------------------
+% Colors
+%-------------------------------------------------------------------------------
+% head and footer
+\colorlet{lastnamecolor}{color2}
+\colorlet{namecolor}{lastnamecolor}
+\colorlet{headrulecolor}{lastnamecolor!50}
+\colorlet{firstnamecolor}{lastnamecolor!50}
+\colorlet{titlecolor}{color2}
+\colorlet{addresscolor}{color2}
+\colorlet{quotecolor}{color1}
+\colorlet{pictureframecolor}{color1}
+% body
+\colorlet{bodyrulecolor}{color1}
+\colorlet{sectioncolor}{color1}
+\colorlet{subsectioncolor}{color1}
+\colorlet{hintstylecolor}{color0}
+% letter
+\colorlet{letterclosingcolor}{color2}
+% skillmatrix
+\colorlet{skillmatrixfullcolor}{color1}
+\colorlet{skillmatrixemptycolor}{color2!30}
+
+
+%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
-\moderncvhead{4}
+\moderncvhead[\moderncvstyleheadoptions]{4}
\moderncvbody{4}
-
+% include foot only if nodetails option is active since otherwise we have two times the information
+% on the page
+\if@datainhead
+% if data is shown in head, do not include the footer
+\else
+ \moderncvfoot{1}
+\fi
\endinput
diff --git a/Master/texmf-dist/tex/latex/moderncv/moderncvverticaltimeline.sty b/Master/texmf-dist/tex/latex/moderncv/moderncvverticaltimeline.sty
new file mode 100644
index 00000000000..1ee94a5ef5a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/moderncv/moderncvverticaltimeline.sty
@@ -0,0 +1,79 @@
+%% start of file `moderncvverticaltimeline.sty'.
+%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me).
+%
+% 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/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvverticaltimeline}[2023/11/29 v2.0.0 modern curriculum vitae vertical timeline]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+\RequirePackage{tikz}
+
+%-------------------------------------------------------------------------------
+% vertical timeline implementation
+%-------------------------------------------------------------------------------
+\tikzset{
+ tl_milestone/.style={circle,inner sep=1.5pt,draw=color0!20,label={west:#1}},
+ tl_link/.style={thick,densely dotted,color0!20},
+}
+
+\newcounter{tl@chainidx}\setcounter{tl@chainidx}{0}
+\newcounter{tl@nodeidx}\setcounter{tl@nodeidx}{0}
+
+% Mark the end of the current chain; any `\tl@milestone` issued afterward will be on a new timeline.
+\def\tl@resetchain{%
+ \stepcounter{tl@chainidx}%
+ \setcounter{tl@nodeidx}{0}%
+}
+
+% Create a node in the current timeline and link it to the previous node; if the previous milestone
+% is on the last shipped out page, draw a line that extends until the top margin. The argument is laid out as a label (default left).
+\def\tl@milestone#1{%
+ \edef\@tl@prev{tl-\thetl@chainidx-\thetl@nodeidx}%
+ \stepcounter{tl@nodeidx}%
+ \edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}%
+ \tikz[remember picture,overlay] {
+ \node[tl_milestone={#1}] (\@tl@this) {};
+ \ifnum\thetl@nodeidx>1
+ \pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}}
+ \ifnum\pgf@y>0
+ \draw[tl_link] (\@tl@this) -- ([yshift=-1em] \@tl@this |- current page.north);
+ \else
+ \draw[tl_link] (\@tl@this) -- (\@tl@prev);
+ \fi
+ \fi
+ }
+}
+
+\AddToHook{shipout/background}{%
+ % If there are follow-up milestones in the current timeline, draw a line that extends until the bottom margin
+ \edef\@tl@prev{tl-\thetl@chainidx-\number\numexpr\thetl@nodeidx-1}%
+ \edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}%
+ \tikz[remember picture,overlay] {
+ \ifnum\thetl@nodeidx>1
+ \pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}}
+ \ifnum\pgf@y>0
+ \draw[tl_link] (\@tl@prev) -- ([yshift=1em] \@tl@prev |- current page.south);
+ \fi
+ \fi
+ }
+}
+
+\AtEndDocument{\tl@resetchain}
+
+\let\@old@section=\section%
+\RenewDocumentCommand{\section}{sm}{\tl@resetchain\@old@section{#1}}
+
+\endinput
+
+
+%% end of file `moderncvverticaltimeline.sty'.
diff --git a/Master/texmf-dist/tex/latex/moderncv/tweaklist.sty b/Master/texmf-dist/tex/latex/moderncv/tweaklist.sty
index 3739c95f92b..c5f58700004 100644
--- a/Master/texmf-dist/tex/latex/moderncv/tweaklist.sty
+++ b/Master/texmf-dist/tex/latex/moderncv/tweaklist.sty
@@ -1,6 +1,6 @@
%% start of file `tweaklist.sty'.
%% Original by Jakob Schiotz, downloaded from http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty; not found on ctan.
-%% Modified by Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv).
+%% Modified by Xavier Danaux (xdanaux@gmail.com), 2020-2024 moderncv maintainers (github.com/moderncv).
%
% The tweaklist.sty package redefines the itemize, enumerate and description packages, so that all parameters can be adjusted.
% This was done by copying the original definitions, and adding "hook commands" that are executed when entering the environment.
diff --git a/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch.sty b/Master/texmf-dist/tex/latex/moloch/beamercolorthememoloch.sty
index cf95d62b96b..b903f423afa 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-03-06 v0.3.0 Moloch color theme] % x-release-please-version
+\ProvidesPackage{beamercolorthememoloch}[2024-10-30 v0.5.0 Moloch color theme] % x-release-please-version
\RequirePackage{pgfopts}
\pgfkeys{
/moloch/color/block/.cd,
@@ -107,6 +107,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 +133,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 71b52aae8d7..93a3ffc156f 100644
--- a/Master/texmf-dist/tex/latex/moloch/beamerfontthememoloch.sty
+++ b/Master/texmf-dist/tex/latex/moloch/beamerfontthememoloch.sty
@@ -23,7 +23,8 @@
%% ---------------------------------------------------------------------------
%% Copyright 2024 Johan Larsson and contributors
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerfontthememoloch}[2024-03-06 v0.3.0 Moloch font theme] % x-release-please-version
+\ProvidesPackage{beamerfontthememoloch}[2024-10-30 v0.5.0 Moloch font theme] % x-release-please-version
+\RequirePackage{etoolbox}
\RequirePackage{pgfopts}
\setbeamerfont{title}{size=\Large, series=\bfseries}
\setbeamerfont{author}{size=\small}
@@ -38,6 +39,131 @@
\setbeamerfont{caption name}{series=\bfseries}
\setbeamerfont{description item}{series=\bfseries}
\setbeamerfont{standout}{size=\Large, series=\bfseries}
+\pgfkeys{
+ /moloch/font/titleformat title/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@titleformat\@empty%
+ \setbeamerfont{title}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@titleformat\@empty%
+ \setbeamerfont{title}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@titleformat\lowercase%
+ \setbeamerfont{title}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat title=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@titleformat\uppercase%
+ \setbeamerfont{title}{shape=\normalfont}
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat title=allcaps can lead to problems%
+ }
+ },
+}
+\pgfkeys{
+ /moloch/font/titleformat subtitle/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@subtitleformat\@empty%
+ \setbeamerfont{subtitle}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@subtitleformat\@empty%
+ \setbeamerfont{subtitle}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@subtitleformat\MakeLowercase%
+ \setbeamerfont{subtitle}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ 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%
+ }
+ },
+}
+\pgfkeys{
+ /moloch/font/titleformat section/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@sectiontitleformat\@empty%
+ \setbeamerfont{section title}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@sectiontitleformat\@empty%
+ \setbeamerfont{section title}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@sectiontitleformat\MakeLowercase%
+ \setbeamerfont{section title}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ 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%
+ }
+ },
+}
+\pgfkeys{
+ /moloch/font/titleformat frame/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@frametitleformat\@empty%
+ \setbeamerfont{frametitle}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@frametitleformat\@empty%
+ \setbeamerfont{frametitle}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@frametitleformat\MakeLowercase%
+ \setbeamerfont{frametitle}{shape=\scshape}%
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat frame=allsmallcaps can lead to problems%
+ }
+ },
+ allcaps/.code={%
+ \let\moloch@frametitleformat\MakeUppercase%
+ \setbeamerfont{frametitle}{shape=\normalfont}
+ \PackageNote{beamerthememoloch}{%
+ Be aware that titleformat frame=allcaps can lead to problems%
+ }
+ },
+}
+\pgfkeys{
+ /moloch/font/.cd,
+ titleformattitle/.code=\pgfkeysalso{titleformat title=#1},
+ titleformatsubtitle/.code=\pgfkeysalso{titleformat subtitle=#1},
+ titleformatsection/.code=\pgfkeysalso{titleformat section=#1},
+ titleformatframe/.code=\pgfkeysalso{titleformat frame=#1},
+}
+\newcommand{\moloch@font@setdefaults}{
+ \pgfkeys{/moloch/font/.cd,
+ titleformat title=regular,
+ titleformat subtitle=regular,
+ titleformat section=regular,
+ titleformat frame=regular,
+ }
+}
+\def\moloch@titleformat#1{#1}
+\def\moloch@subtitleformat#1{#1}
+\def\moloch@sectiontitleformat#1{#1}
+\def\moloch@frametitleformat#1{#1}
+\moloch@font@setdefaults
+\ProcessPgfPackageOptions{/moloch/font}
\endinput
%%
%% End of file `beamerfontthememoloch.sty'.
diff --git a/Master/texmf-dist/tex/latex/moloch/beamerinnerthememoloch.sty b/Master/texmf-dist/tex/latex/moloch/beamerinnerthememoloch.sty
index c64522e8a5b..5e95f48e5a7 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-03-06 v0.3.0 Moloch inner theme] % x-release-please-version
+\ProvidesPackage{beamerinnerthememoloch}[2024-10-30 v0.5.0 Moloch inner theme] % x-release-please-version
\RequirePackage{keyval}
\RequirePackage{calc}
\RequirePackage{pgfopts}
@@ -63,7 +63,7 @@
\setbeamertemplate{title page}{
\begin{minipage}[b][\paperheight]{\textwidth}
\null%
- \vfill%
+ \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 +73,7 @@
}
\ifx\insertinstitute\@empty\else\usebeamertemplate*{institute}\fi
\ifx\insertdate\@empty\else\usebeamertemplate*{date}\fi
- \vfill
+ \vfil%
\null
\end{minipage}%
}
@@ -94,13 +94,14 @@
}
\setbeamertemplate{title}{
\raggedright%
- \inserttitle%
+ \moloch@titleformat{\inserttitle}%
\par%
\vspace*{0.2em}
}
\setbeamertemplate{subtitle}{
+ \vspace*{0.1em}
\raggedright%
- \insertsubtitle%
+ \moloch@subtitleformat{\insertsubtitle}%
\par%
\vspace*{0.2em}
}
@@ -109,6 +110,7 @@
\setbeamertemplate{title separator}{
\tikzexternaldisable%
\begin{tikzpicture}
+ \mmzUnmemoizable%
\fill[fg] (0,0) rectangle (\textwidth, \moloch@titleseparator@linewidth);
\end{tikzpicture}%
\tikzexternalenable%
@@ -134,7 +136,7 @@
\begin{center}
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
- \insertsectionhead\par
+ \moloch@sectiontitleformat{\insertsectionhead}\par
\ifx\insertsubsectionhead\@empty\else
\usebeamercolor[fg]{subsection title}
\usebeamerfont{subsection title}
@@ -148,7 +150,7 @@
\raggedright
\usebeamercolor[fg]{section title}
\usebeamerfont{section title}
- \insertsectionhead\\[-1ex]
+ \moloch@sectiontitleformat{\insertsectionhead}\\[-1ex]
\usebeamertemplate*{progress bar in section page}
\par
\ifx\insertsubsectionhead\@empty\else%
@@ -197,9 +199,10 @@
\setbeamertemplate{progress bar in section page}{
\pgfmathsetlength{\moloch@progressonsectionpage}{
\textwidth * min(1,\insertframenumber/\inserttotalframenumber)
- }
- \tikzexternaldisable
+ }%
+ \tikzexternaldisable%
\begin{tikzpicture}
+ \mmzUnmemoizable%
\fill[bg]
(0,0)
rectangle
@@ -208,8 +211,8 @@
(0,0)
rectangle
(\moloch@progressonsectionpage, \moloch@progressonsectionpage@linewidth);
- \end{tikzpicture}
- \tikzexternalenable
+ \end{tikzpicture}%
+ \tikzexternalenable%
}
\def\inserttotalframenumber{100}
\setbeamertemplate{itemize item}{\(\bullet\)}
@@ -218,15 +221,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{}%
diff --git a/Master/texmf-dist/tex/latex/moloch/beamerouterthememoloch.sty b/Master/texmf-dist/tex/latex/moloch/beamerouterthememoloch.sty
index 311ef669812..59e18d1f008 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-03-06 v0.3.0 Moloch outer theme] % x-release-please-version
+\ProvidesPackage{beamerouterthememoloch}[2024-10-30 v0.5.0 Moloch outer theme] % x-release-please-version
\RequirePackage{calc}
\RequirePackage{pgfopts}
\pgfkeys{
@@ -90,23 +90,42 @@
\usebeamertemplate*{page number in head/foot}\vskip4pt%
\end{beamercolorbox}%
}
+\newlength{\moloch@frametitle@padding}
+\setlength{\moloch@frametitle@padding}{2.2ex}
+\newcommand{\moloch@frametitlestrut@start}{%
+ \rule{0pt}{\moloch@frametitle@padding +%
+ \totalheightof{%
+ \ifcsdef{moloch@frametitleformat}{\moloch@frametitleformat X}{X}%
+ }%
+ }%
+}
+
+\newcommand{\moloch@frametitlestrut@end}{%
+ \vphantom{\rule[-\moloch@frametitle@padding]{0pt}{\moloch@frametitle@padding}}
+}
\defbeamertemplate{frametitle}{plain}{%
\nointerlineskip%
\begin{beamercolorbox}[%
wd=\paperwidth,%
- sep=1.1ex,%
- leftskip=0.5ex,%
- rightskip=\the\glueexpr 0.5ex plus 1fill\relax,%
+ leftskip=1.6ex,%
+ rightskip=\the\glueexpr 1.6ex plus 1fil\relax,%
]{frametitle}%
\usebeamerfont{frametitle}%
- \vbox{}\vskip-0.4ex%
- \strut\insertframetitle\nolinebreak\strut\par%
+ \moloch@frametitlestrut@start%
+ \moloch@frametitleformat{\insertframetitle}%
{%
\ifx\insertframesubtitle\@empty%
\else%
- {\usebeamerfont{framesubtitle}\vspace{-0.8ex}\usebeamercolor[fg]{framesubtitle}\strut\insertframesubtitle\strut\par}%
+ {%
+ \par%
+ \usebeamerfont{framesubtitle}%
+ \vspace{-0.8ex}%
+ \usebeamercolor[fg]{framesubtitle}%
+ \insertframesubtitle%
+ }%
\fi
}%
+ \moloch@frametitlestrut@end%
\end{beamercolorbox}%
}
\setbeamertemplate{frametitle continuation}{\romannumeral\insertcontinuationcount}
@@ -114,13 +133,14 @@
\newlength{\moloch@progressinheadfoot@linewidth}
\setlength{\moloch@progressinheadfoot@linewidth}{0.4pt}
\setbeamertemplate{progress bar in head/foot}{
- \nointerlineskip
+ \nointerlineskip%
\pgfmathsetlength{\moloch@progressinheadfoot}{%
\paperwidth * min(1,\insertframenumber/\inserttotalframenumber)%
- }
+ }%
\begin{beamercolorbox}[wd=\paperwidth]{progress bar in head/foot}
- \tikzexternaldisable
+ \tikzexternaldisable%
\begin{tikzpicture}
+ \mmzUnmemoizable%
\fill[bg]
(0,0)
rectangle
@@ -130,7 +150,7 @@
rectangle
(\moloch@progressinheadfoot, \moloch@progressinheadfoot@linewidth);
\end{tikzpicture}
- \tikzexternalenable
+ \tikzexternalenable%
\end{beamercolorbox}
}
\moloch@outer@setdefaults
diff --git a/Master/texmf-dist/tex/latex/moloch/beamerthememoloch.sty b/Master/texmf-dist/tex/latex/moloch/beamerthememoloch.sty
index ff2a2df3b70..72d905d2f38 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-03-06 v0.3.0 Moloch Beamer theme] % x-release-please-version
+\ProvidesPackage{beamerthememoloch}[2024-10-30 v0.5.0 Moloch Beamer theme] % x-release-please-version
\RequirePackage{pgfopts}
\pgfkeys{/moloch/.cd,
.search also={
@@ -31,14 +31,50 @@
/moloch/font,
}
}
+\pgfkeys{
+ /moloch/titleformat plain/.cd,
+ .is choice,
+ regular/.code={%
+ \let\moloch@plaintitleformat\@empty%
+ \setbeamerfont{standout}{shape=\normalfont}%
+ },
+ smallcaps/.code={%
+ \let\moloch@plaintitleformat\@empty%
+ \setbeamerfont{standout}{shape=\scshape}%
+ },
+ allsmallcaps/.code={%
+ \let\moloch@plaintitleformat\MakeLowercase%
+ \setbeamerfont{standout}{shape=\scshape}%
+ },
+ allcaps/.code={%
+ \let\moloch@plaintitleformat\MakeUppercase%
+ \setbeamerfont{standout}{shape=\normalfont}%
+ },
+}
+\pgfkeys{
+ /moloch/titleformat/.code=\pgfkeysalso{
+ font/titleformat title=#1,
+ font/titleformat subtitle=#1,
+ font/titleformat section=#1,
+ font/titleformat frame=#1,
+ titleformat plain=#1,
+ }
+}
+\newcommand{\moloch@setdefaults}{
+ \pgfkeys{/moloch/.cd,
+ titleformat plain=regular,
+ }
+}
\providecommand{\tikzexternalenable}{}
\providecommand{\tikzexternaldisable}{}
+\providecommand{\mmzUnmemoizable}{}
\useinnertheme{moloch}
\useoutertheme{moloch}
\usecolortheme{moloch}
\usefonttheme{moloch}
\newcommand{\molochset}[1]{\pgfkeys{/moloch/.cd,#1}}
\newcommand{\mreducelistspacing}{\vspace{-\topsep}}
+\moloch@setdefaults
\ProcessPgfOptions{/moloch}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/moremath/moremath.sty b/Master/texmf-dist/tex/latex/moremath/moremath.sty
new file mode 100644
index 00000000000..cc63871489b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/moremath/moremath.sty
@@ -0,0 +1,1245 @@
+%%
+%% This is file `moremath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% moremath.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%%
+%% Copyright (C) 2024 Marcel Ilg
+%%
+%% 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 Marcel Ilg.
+%%
+%% This work consists of the files listed in MANIFEST.md.
+%%
+
+\NeedsTeXFormat{LaTeX2e}[2022-11-01]
+\DeclareCurrentRelease{v0}{2024-07-15}
+\ProvidesExplPackage{moremath}
+ {2024-08-20}{v0.5.0}{More Math Macros}
+\msg_new:nnn { moremath } {load / bm}
+{
+ Option~'bm'~given.\\
+ Loading~the~bm~package~\msg_line_context:.
+}
+\msg_new:nnn {moremath} { load / disabling }
+{
+ Option~'#1'~given.\\
+ Disabling~#2~\msg_line_context:.
+}
+\bool_new:N \l__moremath_predef_vector_op_bool
+\bool_new:N \l__moremath_predef_operators_bool
+\bool_new:N \l__moremath_predef_crvector_bool
+\bool_new:N \l__moremath_predef_matrix_bool
+\bool_new:N \l__moremath_predef_abs_bool
+\keys_define:nn { moremath / load }
+{
+ bm .code:n = {
+ \msg_info:nn {moremath} {load / bm}
+ \RequirePackage{bm}
+ },
+ bm .value_forbidden:n = true,
+ bm. usage:n = load,
+ no-vector .bool_set_inverse:N = \l__moremath_predef_vector_op_bool,
+ no-vector .default:n = true,
+ no-vector .initial:n = false,
+ no-vector .usage:n = load,
+ no-operators .bool_set_inverse:N = \l__moremath_predef_operators_bool,
+ no-operators .default:n = true,
+ no-operators .initial:n = false,
+ no-operators .usage:n = load,
+ no-abs-shorthands .bool_set_inverse:N = \l__moremath_predef_abs_bool,
+ no-abs-shorthands .default:n = true,
+ no-abs-shorthands .initial:n = false,
+ no-abs-shorthands .usage:n = load,
+ no-matrix .bool_set_inverse:N = \l__moremath_predef_matrix_bool,
+ no-matrix .initial:n = false,
+ no-matrix .default:n = true,
+ no-matrix .usage:n =load,
+ no-crvector .bool_set_inverse:N = \l__moremath_predef_crvector_bool,
+ no-crvector .default:n = true,
+ no-crvector .initial:n = false,
+ no-crvector .usage:n = load,
+ nopredef .multichoice:,
+ nopredef / operators .meta:nn = { moremath / load }
+ {
+ no-operators = true
+ },
+ nopredef / vector .meta:nn = { moremath / load }
+ {
+ no-vector = true
+ },
+ nopredef / abs .meta:nn = { moremath / load }
+ {
+ no-abs-shorthands = true,
+ },
+ noperdef / matrix .meta:nn = { moremath / load }
+ {
+ no-matrix = true,
+ },
+ nopredef / crvector .meta:nn = {moremath / load}
+ {
+ no-crvector = true,
+ },
+ nopredef / all .meta:nn = { moremath / load }
+ {
+ no-operators = true,
+ no-vector = true,
+ no-abs-shorthands = true
+ },
+ nopredef .usage:n = load,
+ unknown .code:n = {\PassOptionsToPackage{\CurrentOption}{mathtools}},
+ unknown .usage:n = load,
+}
+\tl_new:N \l__moremath_nabla_tl
+\bool_new:N \l__moremath_nabla_arrow_bool
+\bool_new:N \l__moremath_nabla_arrow_bold_bool
+\tl_new:N \l__moremath_grad_op_tl
+\tl_new:N \l__moremath_laplacian_symb_tl
+\bool_new:N \l__moremath_laplacian_delta_bool
+\bool_new:N \l__moremath_laplacian_arrow_bool
+\tl_new:N \l__moremath_laplacian_tl
+\tl_new:N \l__moremath_dalembert_symb_tl
+\bool_new:N \l__moremath_vcenter_bool
+\keys_define:nn { moremath }
+{
+ % Symbol to use for the nabla
+ nabla .tl_set:N = \l__moremath_nabla_tl,
+ nabla .initial:n = {\nabla},
+ nabla .value_required:n = true,
+ % shall the nabla have an arrow over it
+ arrownabla .bool_set:N = \l__moremath_nabla_arrow_bool,
+ arrownabla .default:n = {true},
+ arrownabla .initial:n = {false},
+ % shall the nabla be bold
+ boldnabla .bool_set:N = \l__moremath_nabla_bold_bool,
+ boldnabla .default:n = {true},
+ boldnabla .initial:n = {false},
+ % Symbol to use for the gradient operator
+ grad-op .tl_set:N = \l__moremath_grad_op_tl,
+ grad-op .value_required:n = true,
+ % Symbol to use for the laplacian
+ laplacian-symb .tl_set:N = \l__moremath_laplacian_symb_tl,
+ laplacian-symb .initial:n = {\l__moremath_nabla_tl},
+ % shall the Laplace operator be a delta
+ delta-laplace .bool_set:N = \l__moremath_laplacian_delta_bool,
+ delta-laplace .initial:n = {false},
+ % shall the laplace operator have an arrow over itself
+ arrowlaplace .bool_set:N = \l__moremath_laplacian_arrow_bool,
+ arrowlaplace .default:n = {true},
+ arrowlaplace .initial:n = {false},
+ % overwrite the laplace operator
+ laplacian .tl_set:N = \l__moremath_laplacian_tl,
+ laplacian .value_required:n = true,
+ dalembert-symb .tl_set:N = \l__moremath_dalembert_symb_tl,
+ dalembert-symb .initial:n = {\square},
+ vcenter .bool_set:N = \l__moremath_vcenter_bool,
+ vcenter .initial:n = true,
+ vcenter .value_required:n = true,
+}% \keys_define:nn
+\keys_define:nn { moremath / matrix }
+{
+ delimiter .tl_set:N = \l__moremath_matrix_delim_tl,
+ delimiter .initial:n = {},
+ fill .tl_set:N = \l__moremath_matrix_fill_tl,
+ fill .initial:n = {},
+ align .tl_set:N = \l__moremath_matrix_align_tl,
+ align .initial:n = {c},
+ align .value_required:n = true,
+}
+\cs_new_protected:Nn \moremath_setup:n
+{
+ \keys_set:nn {moremath} {#1}
+}
+\NewDocumentCommand \moremathsetup {m}
+{
+ \moremath_setup:n {#1}
+}
+\cs_new_protected:Nn \__moremath_load_time_setup:
+{
+ \ProcessKeyOptions[ moremath / load ]
+}
+\__moremath_load_time_setup:
+\msg_new:nnn { moremath } { load / loading-amssymb }
+{
+ Vector~calculus~commands~enabled.\\
+ Loading~amssymb~package~\msg_line_context:.
+}
+\bool_if:NT \l__moremath_predef_vector_op_bool
+{
+ \msg_info:nn { moremath } { load / loading-amssymb }
+ \RequirePackage{amssymb}
+}
+\RequirePackage{mathtools}[2004/06/05]
+\cs_new_protected:Nn \__moremath_tex_vcenter:n
+{
+ \tex_vcenter:D {#1}
+}
+\cs_new_protected:Nn \__moremath_tex_mathpalette:Nn
+{
+ \mathpalette #1 {#2}
+}
+\cs_new_protected_nopar:Nn \__moremath_tex_mathsurround:n
+{
+ \tex_mathsurround:D = #1
+}
+\cs_new_protected_nopar:Nn \__moremath_tex_mathop:n
+{
+ \tex_mathop:D {#1}
+}
+\cs_new_nopar:Nn \__moremath_matrix_star_begin:nn
+{
+ \begin{ #1 matrix* } [ #2 ]
+}
+\cs_generate_variant:Nn \__moremath_matrix_star_begin:nn { nV, Vn, VV }
+\cs_new_nopar:Nn \__moremath_matrix_star_end:n
+{
+ \end{ #1 matrix* }
+}
+\cs_generate_variant:Nn \__moremath_matrix_star_end:n {V}
+\cs_new_protected_nopar:Nn \moremath_vcenter:n
+{
+ \__moremath_tex_mathpalette:Nn \__moremath_vcenter:Nn {#1}
+}
+\cs_new_protected_nopar:Nn \__moremath_vcenter:Nn
+{
+ \__moremath_tex_vcenter:n
+ {
+ \hbox:n
+ {
+ $
+ \__moremath_tex_mathsurround:n {0pt}
+ #1 {#2}
+ $
+ }
+ }
+}
+\msg_new:nnn { moremath } { csname-already-defined }
+{
+ Control~sequence~' #1 '~is~already~ defined.\\
+ Skipping~definition~\msg_line_context:
+}
+\msg_new:nnnn { moremath } { vcenter / only-in-math-mode }
+{
+ Command~#1~used~outside~math~mode~\msg_line_context:.
+}
+{
+ The~command~#1~may~only~be~used~inside~math~mode.
+}
+\cs_if_free:NTF \VCenterMath
+{
+ \NewDocumentCommand \VCenterMath { m }
+ {
+ \mode_if_math:TF
+ {
+ \moremath_vcenter:n {#1}
+ }{% \mode_if_math:TF FALSE BRANCH
+ \msg_error:nnn { moremath } { vcenter / only-in-math-mode } {\VCenterMath}
+ }
+ }
+}{% \cs_if_free:NTF \VCenterMath FALSE BRANCH
+ \msg_warning:nnn { moremath } { csname-already-defined } {\VCenterMath}
+}
+\DeclarePairedDelimiter{\__moremath_inparent:w}{\lparen}{\rparen}
+\DeclarePairedDelimiter{\__moremath_inbrack:w}{\lbrack}{\rbrack}
+\DeclarePairedDelimiter{\__moremath_inbrace:w}{\lbrace}{\rbrace}
+\DeclarePairedDelimiter{\__moremath_in_vert:w}{\lvert}{\rvert}
+\DeclarePairedDelimiter{\__moremath_in_Vert:w}{\lVert}{\rVert}
+\cs_new_protected:Nn \__moremath_operator:Nnn
+{
+ #1
+ % add superscript if present
+ \tl_if_empty:nF {#2} {^{#2}}
+ % add subscript if present
+ \tl_if_empty:nF {#3} { \c_math_subscript_token {#3} }
+}
+\cs_new_protected_nopar:Nn \moremath_delim_op_noscale:NNnnn
+{
+ \__moremath_operator:Nnn #1 {#3} {#4}
+ % #2 is the paired delimiter
+ #2 {#5}
+}
+
+\cs_new_protected_nopar:Nn \moremath_delim_op_autoscale:NNnnn
+{
+ \__moremath_operator:Nnn #1 {#3} {#4}
+ % #2 is the paired delimiter
+ #2 * {#5}
+}
+\cs_new_protected_nopar:Nn \moremath_delim_op_manuscale:NNnnnn
+{
+ \__moremath_operator:Nnn #1 {#4} {#5}
+ % #2 is the paired delimiter
+ #2 [ #3 ] {#6}
+}
+\cs_generate_variant:Nn \moremath_delim_op_manuscale:NNnnnn {NNVnnn}
+\msg_new:nnn { moremath } { delimop / already-defined-skip }
+{
+ Control~sequence~'#1'~is~already~defined.\\
+ Skipping~definition~of~delimited~operator~'#1'~\msg_line_context:.
+}
+\msg_new:nnn { moremath } { delimop / auto-manu-scale-conflict }
+{
+ Both~star~and~scale~cmd~given~to~'#1'.\\
+ Automatic~scaling~will~be~preferred,~the~size~command~will~be~
+ ignored~\msg_line_context:.
+}
+\cs_new_protected:Nn \moremath_new_delim_op_command:NNN
+{
+ \cs_if_free:NTF #1
+ {
+ \exp_args:NNe \NewDocumentCommand #1
+ { s o E{ ^ \char_generate:nn {`_} {8} }{{}{}} m }
+ {
+ \tl_if_novalue:nTF {##2}
+ {
+ % second argument empty
+ \bool_if:nTF {##1}
+ {
+ % star given
+ \moremath_delim_op_autoscale:NNnnn #2 #3 {##3} {##4} {##5}
+ }{
+ % star not given
+ \moremath_delim_op_noscale:NNnnn #2 #3 {##3} {##4} {##5}
+ }
+ }{
+ % second argument present
+ % star given?
+ \bool_if:nTF {##1}
+ {
+ % Warn if both star and scaling factor are present
+ \msg_warning:nnn { moremath } { delimop / auto-manu-scale-conflict }
+ {#1}
+ \moremath_delim_op_autoscale:NNnnn #2 #3 {##3} {##4} {##5}
+ }{ % FALSE BRANCH
+ \moremath_delim_op_manuscale:NNnnnn #2 #3 {##2} {##3} {##4} {##5}
+ }
+ }
+ }
+ }{ % \cs_if_free:nTF #1 FALSE BRANCH
+ \msg_warning:nnn { moremath } { delimop / already-defined-skip }
+ {#1}
+ }
+}
+
+\cs_generate_variant:Nn \moremath_new_delim_op_command:NNN {cNN}
+\NewDocumentCommand\DeclareDelimitedOperator { m m m }
+{
+ \msg_redirect_name:nnn { moremath } { delimop / already-defined-skip } { error }
+ \moremath_new_delim_op_command:NNN #1 #2 #3
+ \msg_redirect_name:nnn { moremath } { delimop / already-defined-skip } {}
+}
+\cs_new_protected:Nn \__moremath_new_delim_op_cmds:nN
+{
+ \moremath_new_delim_op_command:cNN {p #1} #2 \__moremath_inparent:w
+ \moremath_new_delim_op_command:cNN {b #1} #2 \__moremath_inbrack:w
+ \moremath_new_delim_op_command:cNN {B #1} #2 \__moremath_inbrace:w
+ \moremath_new_delim_op_command:cNN {v #1} #2 \__moremath_in_vert:w
+ \moremath_new_delim_op_command:cNN {V #1} #2 \__moremath_in_Vert:w
+}
+\bool_if:NTF \l__moremath_predef_operators_bool
+{
+\__moremath_new_delim_op_cmds:nN {arccos} \arccos
+\__moremath_new_delim_op_cmds:nN {arcsin} \arcsin
+\__moremath_new_delim_op_cmds:nN {arctan} \arctan
+\__moremath_new_delim_op_cmds:nN {arg} \arg
+\__moremath_new_delim_op_cmds:nN {cos} \cos
+\__moremath_new_delim_op_cmds:nN {cosh} \cosh
+\__moremath_new_delim_op_cmds:nN {cot} \cot
+\__moremath_new_delim_op_cmds:nN {coth} \coth
+\__moremath_new_delim_op_cmds:nN {csc} \csc
+\__moremath_new_delim_op_cmds:nN {deg} \deg
+\__moremath_new_delim_op_cmds:nN {det} \det
+\__moremath_new_delim_op_cmds:nN {dim} \dim
+\__moremath_new_delim_op_cmds:nN {exp} \exp
+\__moremath_new_delim_op_cmds:nN {gcd} \gcd
+\__moremath_new_delim_op_cmds:nN {hom} \hom
+\__moremath_new_delim_op_cmds:nN {inf} \inf
+\__moremath_new_delim_op_cmds:nN {injlim} \injlim
+\__moremath_new_delim_op_cmds:nN {ker} \ker
+\__moremath_new_delim_op_cmds:nN {lg} \lg
+\__moremath_new_delim_op_cmds:nN {lim} \lim
+\__moremath_new_delim_op_cmds:nN {liminf} \liminf
+\__moremath_new_delim_op_cmds:nN {limsup} \limsup
+\__moremath_new_delim_op_cmds:nN {ln} \ln
+\__moremath_new_delim_op_cmds:nN {log} \log
+\__moremath_new_delim_op_cmds:nN {max} \max
+\__moremath_new_delim_op_cmds:nN {min} \min
+\__moremath_new_delim_op_cmds:nN {Pr} \Pr
+\__moremath_new_delim_op_cmds:nN {projlim} \projlim
+\__moremath_new_delim_op_cmds:nN {sec} \sec
+\__moremath_new_delim_op_cmds:nN {sin} \sin
+\__moremath_new_delim_op_cmds:nN {sinh} \sinh
+\__moremath_new_delim_op_cmds:nN {sup} \sup
+\__moremath_new_delim_op_cmds:nN {tan} \tan
+\__moremath_new_delim_op_cmds:nN {tanh} \tanh
+\__moremath_new_delim_op_cmds:nN {varinjlim} \varinjlim
+\__moremath_new_delim_op_cmds:nN {varprojlim} \varprojlim
+\__moremath_new_delim_op_cmds:nN {varliminf} \varliminf
+\__moremath_new_delim_op_cmds:nN {varlimsup} \varlimsup
+}{
+ \msg_info:nnnn {moremath} {load /disabling} {no-operators}
+ {
+ predefined~delimited~operator~macros
+ }
+} % End of the conditional
+\cs_new_protected_nopar:Nn \__moremath_maybe_vcenter:n
+{
+ \bool_if:NTF \l__moremath_vcenter_bool
+ {
+ \moremath_vcenter:n {#1}
+ }{
+ #1
+ }
+}
+\cs_new_protected:Nn \__moremath_gradient_operator_get:
+{
+ \tl_if_empty:NTF \l__moremath_grad_op_tl
+ {
+ \__moremath_tex_mathop:n
+ {
+ \bool_if:NTF \l__moremath_nabla_arrow_bool
+ {
+ \vec
+ {
+ \__moremath_maybe_vcenter:n
+ {
+ \bool_if:NT \l__moremath_nabla_bold_bool
+ {
+ \boldsymbol
+ }
+ \l__moremath_nabla_tl
+ }
+ }
+ }{
+ \bool_if:NTF \l__moremath_nabla_bold_bool
+ {
+ \__moremath_maybe_vcenter:n
+ {
+ \boldsymbol
+ \l__moremath_nabla_tl
+ }
+ }{
+ \l__moremath_nabla_tl
+ }
+ }
+ }% \__moremath_tex_mathop:n
+ \nolimits
+ }{
+ \l__moremath_grad_op_tl
+ }
+}
+\cs_new_protected:Nn \__moremath_laplace_operator_get:
+{
+ \tl_if_empty:NTF \l__moremath_laplacian_tl
+ {
+ \__moremath_tex_mathop:n
+ {
+ \bool_if:NTF \l__moremath_laplacian_delta_bool
+ {
+ \Delta
+ }{
+ \bool_if:NTF \l__moremath_laplacian_arrow_bool
+ {
+ \vec{
+ \__moremath_maybe_vcenter:n
+ {
+ \bool_if:NT \l__moremath_nabla_bold_bool {\boldsymbol}
+ \l__moremath_laplacian_symb_tl
+ }
+ }
+ }{
+ \bool_if:NTF \l__moremath_nabla_bold_bool
+ {
+ \__moremath_maybe_vcenter:n
+ {
+ \boldsymbol
+ \l__moremath_laplacian_symb_tl
+ }
+ }{
+ \l__moremath_laplacian_symb_tl
+ }
+ }
+ }
+ }\nolimits
+ \bool_if:NF \l__moremath_laplacian_delta_bool
+ {
+ \c_math_superscript_token
+ {
+ 2
+ }
+ }
+ }{
+ \l__moremath_laplacian_tl
+ }
+}
+\cs_new_protected:Nn \__moremath_dalembert_operator_get:
+{
+ \__moremath_tex_mathop:n
+ {
+ \l__moremath_dalembert_symb_tl
+ }% \__moremath_tex_mathop:n
+ \nolimits
+}
+\cs_new_protected_nopar:Nn \moremath_gradient_operator:n
+{
+ \__moremath_gradient_operator_get:
+ \tl_if_empty:nF {#1} {\c_math_subscript_token {#1}}
+}
+\cs_new_protected_nopar:Nn \moremath_laplace_operator:n
+{
+ \__moremath_laplace_operator_get:
+ \tl_if_empty:nF {#1} {\c_math_subscript_token {#1}}
+}
+\cs_new_protected_nopar:Nn \moremath_divergence_operator:n
+{
+ {
+ \moremath_gradient_operator:n {#1}
+ }
+ \cdot
+}
+
+\cs_new_protected_nopar:Nn \moremath_curl_operator:n
+{
+ {
+ \moremath_gradient_operator:n {#1}
+ }
+ \times
+}
+\cs_new_protected:Nn \moremath_dalembert_operator:n
+{
+ \__moremath_dalembert_operator_get:
+ \tl_if_empty:nF {#1}
+ {
+ \c_math_subscript_token {#1}
+ }
+}
+\cs_new_protected_nopar:Nn \moremath_delim_nabla_op_noscale:NNnn
+{
+ #1 {#3} #2{#4}
+}
+\cs_new_protected_nopar:Nn \moremath_delim_nabla_op_autoscale:NNnn
+{
+ #1 {#3} #2 * {#4}
+}
+\cs_new_protected_nopar:Nn \moremath_delim_nabla_op_manuscale:NNnnn
+{
+ #1 {#4} #2 [#3] {#5}
+}
+\cs_generate_variant:Nn \moremath_delim_nabla_op_manuscale:NNnnn {NNVnn}
+\cs_new_protected:Nn \__moremath_parse_kv_args:nN
+{
+ \prop_set_from_keyval:Nn \l_tmpa_prop {#1}
+
+ \prop_pop:NnNT \l_tmpa_prop {scale} #2 {}
+
+ \keys_set:ne {moremath} {\prop_to_keyval:N \l_tmpa_prop}
+}
+\msg_new:nnn { moremath } { vector-calc / scale-star-conflict }
+{
+ Both~star~and~scaling~factor~given~to~'#1'.\\
+ Automatic~scaling~will~be~preferred,~the~size~command~'#2'~will~be~
+ ignored~\msg_line_context:.
+}
+\cs_new_protected:Nn \__moremath_new_delim_nabla_doc_cmd:NNN
+{
+ \cs_if_free:NTF #1
+ {
+ \exp_args:NNe \NewDocumentCommand #1
+ {
+ s ={scale} o E{ \char_generate:nn {`_}{8} }{ {} } m
+ }
+ { % command code
+ \group_begin:
+ % optional arguments given?
+ \tl_if_novalue:nF {##2}
+ {
+ \__moremath_parse_kv_args:nN {##2} \l_tmpa_tl
+ }
+ % star given?
+ \bool_if:nTF {##1}
+ {
+ % scale factor given?
+ \tl_if_empty:NF \l_tmpa_tl
+ {
+ \msg_warning:nnnV { moremath } { vector-calc / scale-star-conflict }
+ {#1} \l_tmpa_tl
+ }
+ \moremath_delim_nabla_op_autoscale:NNnn #2 #3 {##3} {##4}
+ }{ % \bool_if:nTF {##1} FALSE BRANCH
+ % scale factor given?
+ \tl_if_empty:NTF \l_tmpa_tl
+ {
+ \moremath_delim_nabla_op_noscale:NNnn #2 #3 {##3} {##4}
+ }{ % FALSE BRANCH
+ \moremath_delim_nabla_op_manuscale:NNVnn #2 #3 \l_tmpa_tl {##3} {##4}
+ }
+ } % \bool_if:nTF {##1}
+ \group_end:
+ }
+ }{ % \cs_if_free:NTF #1 FALSE BRANCH
+ \msg_warning:nnn { moremath } { vector-calc / already-defined-skip } {#1}
+ } % \cs_if_free:NTF #1
+}
+\cs_generate_variant:Nn \__moremath_new_delim_nabla_doc_cmd:NNN {cNN}
+\cs_new_protected:Nn \__moremath_new_nabla_doc_cmds:nN
+{
+ \__moremath_new_delim_nabla_doc_cmd:cNN { p #1 } #2 \__moremath_inparent:w
+ \__moremath_new_delim_nabla_doc_cmd:cNN { b #1 } #2 \__moremath_inbrack:w
+ \__moremath_new_delim_nabla_doc_cmd:cNN { B #1 } #2 \__moremath_inbrace:w
+ \__moremath_new_delim_nabla_doc_cmd:cNN { v #1 } #2 \__moremath_in_vert:w
+ \__moremath_new_delim_nabla_doc_cmd:cNN { V #1 } #2 \__moremath_in_Vert:w
+}
+\bool_if:NTF \l__moremath_predef_vector_op_bool
+{
+\msg_new:nnn { moremath } { vector-calc / already-defined-skip }
+{
+ Control~sequence~'#1'~is~already~defined.\\
+ Skipping~definition~\msg_line_context:.
+}
+\cs_if_free:NTF \grad
+{
+ \exp_args:NNe \NewDocumentCommand \grad { !o E{ \char_generate:nn {`_}{8} }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath} {#1}
+ }
+ \moremath_gradient_operator:n {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} { vector-calc / already-defined-skip } {\grad}
+}
+
+\cs_if_free:NTF \divergence
+{
+ \exp_args:NNe \NewDocumentCommand \divergence
+ { !o E{ \char_generate:nn {`_} {8} }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath} {#1}
+ }
+ \moremath_divergence_operator:n {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} { vector-calc / already-defined-skip } {\divergence}
+}
+
+\cs_if_free:NTF \curl
+{
+ \exp_args:NNe \NewDocumentCommand \curl
+ { !o E{ \char_generate:nn {`_}{8} }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath} {#1}
+ }
+ \moremath_curl_operator:n {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} {vector-calc / already-defined-skip} {\curl}
+}
+
+\cs_if_free:NTF \laplacian
+{
+ \exp_args:NNe \NewDocumentCommand \laplacian
+ { !o E{ \char_generate:nn {`_}{8} }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath} {#1}
+ }
+ \moremath_laplace_operator:n {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} { vector-calc / already-defined-skip }
+ {\laplacian}
+}
+\cs_if_free:NTF \quabla
+{
+ \exp_args:NNe \NewDocumentCommand \quabla
+ { !o E{ \char_generate:nn {`_} { 8 } }{{}} }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath } {#1}
+ }
+ \moremath_dalembert_operator:n {#2}
+ \group_end:
+ }
+}{ % \cs_if_free:NTF \quabla FALSE BRANCH
+ \msg_warning:nnn { moremath } { vector-calc / already-defined-skip }
+ {\quabla}
+}
+\__moremath_new_nabla_doc_cmds:nN {grad} \moremath_gradient_operator:n
+\__moremath_new_nabla_doc_cmds:nN {div} \moremath_divergence_operator:n
+\__moremath_new_nabla_doc_cmds:nN {curl} \moremath_curl_operator:n
+\__moremath_new_nabla_doc_cmds:nN {laplacian} \moremath_laplace_operator:n
+\__moremath_new_nabla_doc_cmds:nN {quabla} \moremath_dalembert_operator:n
+}{ % IF NOT \l__moremath_predef_vector_op_bool
+ \msg_info:nnnn {moremath} { load /disabling } {no-vector}
+ {
+ predefined~vector~calculus~macros
+ }
+} % END \l__moremath_predef_vector_op_bool
+\seq_new:N \l__moremath_vector_entries_seq
+\cs_new_protected_nopar:Nn \__moremath_seq_to_column_vector:N
+{
+ \seq_use:Nn #1 {\\}
+}
+\cs_new_protected_nopar:Nn \__moremath_seq_to_row_vector:N
+{
+ \seq_use:Nn #1 {&}
+}
+\cs_new_protected_nopar:Nn \moremath_column_vector:nn
+{
+ \seq_clear:N \l__moremath_vector_entries_seq
+ \seq_set_from_clist:Nn \l__moremath_vector_entries_seq {#2}
+
+ \__moremath_matrix_star_begin:nV {#1} \l__moremath_matrix_align_tl
+ \__moremath_seq_to_column_vector:N \l__moremath_vector_entries_seq
+ \__moremath_matrix_star_end:n {#1}
+}
+\cs_new_protected_nopar:Nn \moremath_row_vector:nn
+{
+ \seq_clear:N \l__moremath_vector_entries_seq
+ \seq_set_from_clist:Nn \l__moremath_vector_entries_seq {#2}
+
+ \__moremath_matrix_star_begin:nV {#1} \l__moremath_matrix_align_tl
+ \__moremath_seq_to_row_vector:N \l__moremath_vector_entries_seq
+ \__moremath_matrix_star_end:n {#1}
+}
+\cs_generate_variant:Nn \moremath_column_vector:nn { Vn }
+\cs_generate_variant:Nn \moremath_row_vector:nn { Vn }
+\cs_new_protected_nopar:Nn \moremath_column_smallvector:nn
+{
+ \moremath_column_vector:nn {#1 small} {#2}
+}
+
+\cs_new_protected_nopar:Nn \moremath_row_smallvector:nn
+{
+ \moremath_row_vector:nn {#1 small} {#2}
+}
+\cs_generate_variant:Nn \moremath_column_smallvector:nn { Vn }
+\cs_generate_variant:Nn \moremath_row_smallvector:nn { Vn }
+\seq_clear_new:N \l__moremath_mat_diag_entries_seq
+\seq_clear_new:N \l__moremath_mat_row_entries_seq
+\cs_new_protected:Nn \__moremath_constr_diagmat_row:n
+{
+ \seq_clear:N \l__moremath_mat_row_entries_seq
+ \int_step_inline:nn {\seq_count:N \l__moremath_mat_diag_entries_seq}
+ {
+ \int_compare:nTF { #1 == ##1 }
+ {
+ \seq_put_right:Nx \l__moremath_mat_row_entries_seq
+ {
+ \seq_item:Nn \l__moremath_mat_diag_entries_seq { #1 }
+ }
+ }{ % false branch
+ \seq_put_right:NV \l__moremath_mat_row_entries_seq \l__moremath_matrix_fill_tl
+ } % \int_compare:nTF { #1 == ##1 }
+ }
+ \seq_use:Nn \l__moremath_mat_row_entries_seq { & } \\
+}
+
+\cs_new_protected:Nn \__moremath_constr_antidiagmat_row:n
+{
+ \seq_clear:N \l__moremath_mat_row_entries_seq
+ \int_step_inline:nn {\seq_count:N \l__moremath_mat_diag_entries_seq}
+ {
+ \int_compare:nTF { #1 == ##1 }
+ {
+ % as this is a anti diagonal matrix we put in the elements from the
+ % left so that the first entry is the right most entry
+ \seq_put_left:Nx \l__moremath_mat_row_entries_seq
+ {
+ \seq_item:Nn \l__moremath_mat_diag_entries_seq { #1 }
+ }
+ }{ % false branch
+ \seq_put_left:NV \l__moremath_mat_row_entries_seq \l__moremath_matrix_fill_tl
+ } % \int_compare:nTF { #1 == ##1 }
+ }
+ \seq_use:Nn \l__moremath_mat_row_entries_seq { & } \\
+}
+\cs_new_protected:Nn \moremath_diagonal_matrix:nn
+{
+ \seq_set_from_clist:Nn \l__moremath_mat_diag_entries_seq { #2 }
+ \__moremath_matrix_star_begin:nV { #1 } \l__moremath_matrix_align_tl
+ \int_step_function:nN { \seq_count:N \l__moremath_mat_diag_entries_seq }
+ \__moremath_constr_diagmat_row:n
+ \__moremath_matrix_star_end:n { #1 }
+}
+\cs_new_protected:Nn \moremath_antidiagonal_matrix:nn
+{
+ \seq_set_from_clist:Nn \l__moremath_mat_diag_entries_seq { #2 }
+ \__moremath_matrix_star_begin:nV { #1 } \l__moremath_matrix_align_tl
+ \int_step_function:nN { \seq_count:N \l__moremath_mat_diag_entries_seq }
+ \__moremath_constr_antidiagmat_row:n
+ \__moremath_matrix_star_end:n { #1 }
+}
+
+\cs_new_protected:Nn \moremath_diagonal_smallmatrix:nn
+{
+ \moremath_diagonal_matrix:nn {#1 small} {#2}
+}
+
+\cs_new_protected:Nn \moremath_antidiagonal_smallmatrix:nn
+{
+ \moremath_antidiagonal_matrix:nn {#1 small} {#2}
+}
+\cs_generate_variant:Nn \moremath_diagonal_matrix:nn { nV, Vn, VV }
+\cs_generate_variant:Nn \moremath_antidiagonal_matrix:nn { nV, Vn, VV }
+\cs_generate_variant:Nn \moremath_diagonal_smallmatrix:nn { nV, Vn, VV}
+\cs_generate_variant:Nn \moremath_antidiagonal_smallmatrix:nn { nV, Vn, VV }
+\cs_new_protected_nopar:Nn \__moremath_generate_one_filled_clist:Nn
+{
+ \seq_clear:N \l_tmpa_seq
+ \int_step_inline:nn {#2}
+ {
+ \seq_put_right:NV \l_tmpa_seq \c_one_int
+ }
+ \clist_set_from_seq:NN #1 \l_tmpa_seq
+}
+\cs_generate_variant:Nn \__moremath_generate_one_filled_clist:Nn { N V }
+\clist_new:N \l__moremath_id_entries_clist
+\cs_new_protected_nopar:Nn \moremath_id_matrix:n
+{
+ \clist_clear:N \l__moremath_id_entries_clist
+ \__moremath_generate_one_filled_clist:Nn \l__moremath_id_entries_clist {#1}
+ \moremath_diagonal_matrix:VV \l__moremath_matrix_delim_tl \l__moremath_id_entries_clist
+}
+\cs_new_protected_nopar:Nn \moremath_id_smallmatrix:n
+{
+ \clist_clear:N \l__moremath_id_entries_clist
+ \__moremath_generate_one_filled_clist:Nn \l__moremath_id_entries_clist {#1}
+ \moremath_diagonal_smallmatrix:VV \l__moremath_matrix_delim_tl \l__moremath_id_entries_clist
+}
+\cs_generate_variant:Nn \moremath_id_matrix:n { V }
+\cs_generate_variant:Nn \moremath_id_smallmatrix:n { V }
+\msg_new:nnnn { moremath } { matrix / already-defined-doc-cmd-skip }
+{
+ Control~sequence~'#1'~is~already~defined.\\
+ Skipping~definition~\msg_line_context:.
+}
+{
+ The~control~sequence~'#1'~has~already\\
+ been~defined~by~some~other~package.\\
+ And~I~am~refusing~to~overwrite~the~existing~definition,\\
+ therefore~I~am~skipping~the~definition~of~this~command.
+}
+\bool_if:nTF \l__moremath_predef_crvector_bool
+{
+\cs_if_free:NTF \cvector
+{
+ \NewDocumentCommand \cvector { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_column_vector:Vn \l__moremath_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ % issue a warning message if the csname is already taken.
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \cvector
+ }
+} % \cs_if_free:NTF \cvector
+\cs_if_free:NTF \rvector
+{
+ \NewDocumentCommand \rvector { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_row_vector:Vn \l__moremath_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ % warn if csname is already taken
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip}
+ {
+ \rvector
+ }
+} % \cs_if_free:NTF \rvector
+\cs_if_free:NTF \smallcvector
+{
+ \NewDocumentCommand \smallcvector { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn {moremath / matrix} {#1}
+ }
+ \moremath_column_smallvector:Vn \l__moremath_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ % Issue a warning message if the csname is already taken
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \smallcvector
+ }
+} % \cs_if_free:NTF \smallcvector
+
+\cs_if_free:NTF \smallrvector
+{
+ \NewDocumentCommand \smallrvector { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_row_smallvector:Vn \l__moremath_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ % warn if csname is taken
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \smallrvector
+ }
+}
+\cs_new_protected:Nn \__moremath_new_vector_shorth_doc_cmd:NNn
+{
+ \cs_if_free:NTF #1
+ {
+ \NewDocumentCommand #1 { o m }
+ {
+ \group_begin:
+ % set the delimiter key pre-set for this function
+ \keys_set:nn {moremath / matrix } {delimiter = #3}
+ \tl_if_novalue:nF {##1}
+ {
+ \keys_set:nn {moremath / matrix } {##1}
+ }
+ #2 \l__moremath_matrix_delim_tl {##2}
+ \group_end:
+ }
+ }{
+ % warn if csname is taken
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ #1
+ }
+ }
+}
+\__moremath_new_vector_shorth_doc_cmd:NNn \pcvector \moremath_column_vector:Vn {p}
+\__moremath_new_vector_shorth_doc_cmd:NNn \bcvector \moremath_column_vector:Vn {b}
+\__moremath_new_vector_shorth_doc_cmd:NNn \Bcvector \moremath_column_vector:Vn {B}
+\__moremath_new_vector_shorth_doc_cmd:NNn \vcvector \moremath_column_vector:Vn {v}
+\__moremath_new_vector_shorth_doc_cmd:NNn \Vcvector \moremath_column_vector:Vn {V}
+\__moremath_new_vector_shorth_doc_cmd:NNn \prvector \moremath_row_vector:Vn {p}
+\__moremath_new_vector_shorth_doc_cmd:NNn \brvector \moremath_row_vector:Vn {b}
+\__moremath_new_vector_shorth_doc_cmd:NNn \Brvector \moremath_row_vector:Vn {B}
+\__moremath_new_vector_shorth_doc_cmd:NNn \vrvector \moremath_row_vector:Vn {v}
+\__moremath_new_vector_shorth_doc_cmd:NNn \Vrvector \moremath_row_vector:Vn {V}
+\__moremath_new_vector_shorth_doc_cmd:NNn \psmallcvector \moremath_column_smallvector:Vn
+ {p}
+\__moremath_new_vector_shorth_doc_cmd:NNn \bsmallcvector \moremath_column_smallvector:Vn
+ {b}
+\__moremath_new_vector_shorth_doc_cmd:NNn \Bsmallcvector \moremath_column_smallvector:Vn
+ {B}
+\__moremath_new_vector_shorth_doc_cmd:NNn \vsmallcvector \moremath_column_smallvector:Vn
+ {v}
+\__moremath_new_vector_shorth_doc_cmd:NNn \Vsmallcvector \moremath_column_smallvector:Vn
+ {V}
+\__moremath_new_vector_shorth_doc_cmd:NNn \psmallrvector \moremath_row_smallvector:Vn {p}
+\__moremath_new_vector_shorth_doc_cmd:NNn \bsmallrvector \moremath_row_smallvector:Vn {b}
+\__moremath_new_vector_shorth_doc_cmd:NNn \Bsmallrvector \moremath_row_smallvector:Vn {B}
+\__moremath_new_vector_shorth_doc_cmd:NNn \vsmallrvector \moremath_row_smallvector:Vn {v}
+\__moremath_new_vector_shorth_doc_cmd:NNn \Vsmallrvector \moremath_row_smallvector:Vn {V}
+
+}{ % \bool_if:nTF \l__moremath_predef_crvector_bool FALSE PATH
+ \msg_info:nnnn {moremath} {load / disabling} {no-crvector}
+ {
+ commands~producing~row~and~column~vectors
+ }
+} % \bool_if:nTF \l__moremath_predef_crvector_bool
+\bool_if:nTF \l__moremath_predef_matrix_bool
+{
+\cs_if_free:NTF \diagmat
+{
+ \NewDocumentCommand \diagmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_diagonal_matrix:Vn \l__moremath_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn {moremath} {matrix / already-defined-doc-cmd-skip}
+ {
+ \diagmat
+ }
+} % \cs_if_free:nTF \diagmat
+
+\cs_if_free:NTF \antidiagmat
+{
+ \NewDocumentCommand \antidiagmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_antidiagonal_matrix:Vn \l__moremath_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \antidiagmat
+ }
+} % \cs_if_free:nTF \antidiagmat
+
+\cs_if_free:NTF \smalldiagmat
+{
+ \NewDocumentCommand \smalldiagmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_diagonal_smallmatrix:Vn \l__moremath_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \smalldiagmat
+ }
+}
+
+\cs_if_free:NTF \smallantidiagmat
+{
+ \NewDocumentCommand \smallantidiagmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_antidiagonal_smallmatrix:Vn \l__moremath_matrix_delim_tl {#2}
+ \group_end:
+ }
+}{
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ \smallantidiagmat
+ }
+}
+\cs_new_protected:Nn \__moremath_new_matrix_shorth_doc_cmd:NNn
+{
+ \cs_if_free:NTF #1
+ {
+ \NewDocumentCommand #1 { o m }
+ {
+ \group_begin:
+ \tl_if_empty:nF {#3}
+ {
+ \keys_set:nn { moremath / matrix }
+ {
+ delimiter = #3
+ }
+ } % \tl_if_empty:nF {#3}
+ \tl_if_novalue:nF {##1}
+ {
+ \keys_set:nn { moremath / matrix } {##1}
+ }
+ #2 \l__moremath_matrix_delim_tl {##2}
+ \group_end:
+ }
+ }{
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {
+ #1
+ }
+ }
+}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \pdiagmat \moremath_diagonal_matrix:Vn {p}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \bdiagmat \moremath_diagonal_matrix:Vn {b}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \Bdiagmat \moremath_diagonal_matrix:Vn {B}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \vdiagmat \moremath_diagonal_matrix:Vn {v}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \Vdiagmat \moremath_diagonal_matrix:Vn {V}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \pantidiagmat
+ \moremath_antidiagonal_matrix:Vn {p}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \bantidiagmat
+ \moremath_antidiagonal_matrix:Vn {b}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \Bantidiagmat
+ \moremath_antidiagonal_matrix:Vn {B}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \vantidiagmat
+ \moremath_antidiagonal_matrix:Vn {v}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \Vantidiagmat
+ \moremath_antidiagonal_matrix:Vn {V}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \psmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {p}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \bsmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {b}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \Bsmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {B}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \vsmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {v}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \Vsmalldiagmat
+ \moremath_diagonal_smallmatrix:Vn {V}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \psmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {p}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \bsmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {b}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \Bsmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {B}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \vsmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {v}
+\__moremath_new_matrix_shorth_doc_cmd:NNn \Vsmallantidiagmat
+ \moremath_antidiagonal_smallmatrix:Vn {V}
+\cs_if_free:NTF \idmat
+{
+ \NewDocumentCommand \idmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_id_matrix:n {#2}
+ \group_end:
+ }
+}{ % \cs_if_free:NTF \idmat FALSE BRANCH
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {\idmat}
+}
+\cs_if_free:NTF \smallidmat
+{
+ \NewDocumentCommand \smallidmat { o m }
+ {
+ \group_begin:
+ \tl_if_novalue:nF {#1}
+ {
+ \keys_set:nn { moremath / matrix } {#1}
+ }
+ \moremath_id_smallmatrix:n {#2}
+ \group_end:
+ }
+}{ % \cs_if_free:NTF \smallidmat FALSE BRANCH
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {\smallidmat}
+}
+\cs_new_protected:Nn \__moremath_new_id_matrix_doc_cmd:NNn
+{
+ \cs_if_free:NTF #1
+ {
+ \NewDocumentCommand #1 { o m }
+ {
+ \group_begin:
+ \tl_if_empty:nF {#3}
+ {
+ \keys_set:nn { moremath / matrix } {#3}
+ }
+ \tl_if_novalue:nF {##1}
+ {
+ \keys_set:nn { moremath / matrix } {##1}
+ }
+ #2 {##2}
+ \group_end:
+ }
+ }{ % \cs_if_free:NTF #1 FALSE BRANCH
+ \msg_warning:nnn { moremath } { matrix / already-defined-doc-cmd-skip }
+ {#1}
+ }
+}
+\__moremath_new_id_matrix_doc_cmd:NNn \pidmat \moremath_id_matrix:n { delimiter = p }
+\__moremath_new_id_matrix_doc_cmd:NNn \bidmat \moremath_id_matrix:n { delimiter = b }
+\__moremath_new_id_matrix_doc_cmd:NNn \Bidmat \moremath_id_matrix:n { delimiter = B }
+\__moremath_new_id_matrix_doc_cmd:NNn \vidmat \moremath_id_matrix:n { delimiter = v }
+\__moremath_new_id_matrix_doc_cmd:NNn \Vidmat \moremath_id_matrix:n { delimiter = V }
+\__moremath_new_id_matrix_doc_cmd:NNn \psmallidmat \moremath_id_smallmatrix:n
+ { delimiter = p }
+\__moremath_new_id_matrix_doc_cmd:NNn \bsmallidmat \moremath_id_smallmatrix:n
+ { delimiter = b }
+\__moremath_new_id_matrix_doc_cmd:NNn \Bsmallidmat \moremath_id_smallmatrix:n
+ { delimiter = B }
+\__moremath_new_id_matrix_doc_cmd:NNn \vsmallidmat \moremath_id_smallmatrix:n
+ { delimiter = v }
+\__moremath_new_id_matrix_doc_cmd:NNn \Vsmallidmat \moremath_id_smallmatrix:n
+ { delimiter = V }
+}{ % \bool_if:nTF \l__moremath_predef_matrix_bool FALSE BRANCH
+ \msg_info:nnnn {moremath} { load / disabling } { no-matrix }
+ {
+ (anti-)diagonal~matrix~commands
+ }
+} % \bool_if:nTF \l__moremath_predef_matrix_bool
+\msg_new:nnnn { moremath } { abs-shorth / csname-already-defined-skip }
+{
+ Control~sequence~'#1'~is~already~defined.\\
+ Skipping~declaration~of~paired~delimiter~\msg_line_context:.\\
+ Use~package~option~'no-abs-shorthands'~to~disable~the~paired\\
+ delimiter~shorthands.
+}{
+ The~control~sequence~'#1'~has~already~been\\
+ defined~by~something~else.\\
+ I~am~refusing~to~overwrite~its~existing~definition~and~instead~avoid\\
+ declaring~a~paired~delimiter.\\
+}
+\bool_if:NTF \l__moremath_predef_abs_bool
+{
+\cs_if_free:NTF \abs
+{
+ \DeclarePairedDelimiter \abs {\lvert} {\rvert}
+}{
+ % warn if the csname is taken
+ \msg_warning:nnn { moremath } { abs-shorth / csname-already-defined-skip }
+ {\abs}
+} % \cs_if_free:NTF \abs
+
+\cs_if_free:NTF \norm
+{
+ \DeclarePairedDelimiter \norm {\lVert} {\rVert}
+}{
+ % warn if csname is already taken
+ \msg_warning:nnn { moremath } { abs-shorth / csname-already-defined-skip }
+ {\norm}
+} % \cs_if_free:NTF
+}{
+ \msg_info:nnnn {moremath} {load / disabling} {no-abs-shorthands}
+ {
+ '\abs'~and~'\norm'~macros
+ }
+} % End of the conditional
+\endinput
+%%
+%% End of file `moremath.sty'.
diff --git a/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls b/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls
index 7f5955ab4a1..538a98da064 100644
--- a/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls
+++ b/Master/texmf-dist/tex/latex/msu-thesis/msu-thesis.cls
@@ -194,10 +194,11 @@
% Version 4.2 2024/02/18 Changed spacing for sections to address complaints about adjacent sectioning commands
% Version 4.2b 2024/05/16 Added version check for l3kernel.
% Version 4.3 2024/06/07 Fixed bug with TOCs when calc package was loaded; added \msuappendixdelim
+% Version 4.3b 2024/07/08 Fixed spurious page break with biblatex per chapter bibliographies
% Report bugs/problems/questions to <amunn@msu.edu>
%
-\def\msu@version{4.3}
-\def\msu@date{2024/06/07}
+\def\msu@version{4.3b}
+\def\msu@date{2024/07/08}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{msu-thesis}[\msu@date\space Michigan State University Thesis Class version \msu@version]
\@ifundefined{ExplLoaderFileDate}
@@ -837,9 +838,10 @@ chapterapp.code = {
% This code probably needs to be revisited since it’s a unholy amalgam of old and new code
% Removed clearpage from the document level code in response to issue #26.
% Problem seems to only arise with biblatex so more testing is needed
+% Added test for natbib here 7/8/2024 because biblatex produces extra page
\newcommand\msu@addbibheadtotoc{%
\ifmsu@chapterbib
- \clearpage\phantomsection\addcontentsline{toc}{\msu@bibsection}{\bibtocname}
+ \@ifpackageloaded{natbib}{\clearpage}{}\phantomsection\addcontentsline{toc}{\msu@bibsection}{\bibtocname}
\else
\phantomsection\addcontentsline{toc}{chapter}{\bibtocname}
\fi
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 5fd527fbf3a..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,8 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{naive-ebnf}
-[2023-08-11 0.0.15 EBNF in Plain Text]
+[2024/11/13 0.0.18 EBNF in Plain Text]
+
@@ -138,22 +139,27 @@
{ >([^\s]) } {\\textgreater{}\1} \ebnf_tmp%
\regex_replace_all:nnN
{ ([^\s])'([^\s]) } {\1\\textquotesingle{}\2} \ebnf_tmp%
+ \regex_replace_all:nnN { \|\|\| }%
+ {\c{makebox}[#1][r]{ }} \ebnf_tmp%
\regex_replace_all:nnN
{ ([^\s])\|([^\s]) } {\1\\textbar{}\2} \ebnf_tmp%
%
\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/newcomputermodern/newcomputermodern.sty b/Master/texmf-dist/tex/latex/newcomputermodern/newcomputermodern.sty
index 6318522d6ba..d5e1db18c41 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}[v5.2.0 NewCM fonts by Antonis Tsolomitis]
+\ProvidesPackage{newcomputermodern}[v7.0.0 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/newtx/newtx.sty b/Master/texmf-dist/tex/latex/newtx/newtx.sty
index 3c31a91788b..8d86b9aeaf4 100644
--- a/Master/texmf-dist/tex/latex/newtx/newtx.sty
+++ b/Master/texmf-dist/tex/latex/newtx/newtx.sty
@@ -1,6 +1,5 @@
\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}
@@ -298,6 +297,7 @@ propmathfigs,curlybraces,cochrho,cochf,alty,alth,liby,nochvw}
\or \def\tx@mathtotextfactor{.92} % 16, gel
\fi
+\def\tx@divide#1#2{\ntx@dima=\dimexpr 1pt * (\dimexpr #1 pt\relax) / \dimexpr #2pt\relax\relax}
%\show\ntx@Mopt
%\show\ntx@Topt
%\traceon
diff --git a/Master/texmf-dist/tex/latex/newtx/newtxmath.sty b/Master/texmf-dist/tex/latex/newtx/newtxmath.sty
index 020f9ff08cf..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.75}
-\def\filedate{2024/06/18}
+\def\fileversion{1.754}
+\def\filedate{2024/09/22}
\ProvidesPackage{newtxmath}[\filedate\space v\fileversion ]
\@ifundefined{newtxmathLoaded}{}{\endinput}
@@ -390,7 +390,7 @@ amssymbols,uprightGreek,nosubscriptcorrection}
\fi
\fi
\fi
-
+\iftx@gel\edef\rmdefaultB{mingelasio}\fi
\iftx@minion\edef\rmdefaultB{MinionPro-TLF}\fi
\iftx@noto\edef\rmdefaultB{NotoSerif-TLF}\fi
\iftx@notosans\edef\rmdefaultB{NotoSans-TLF}\fi
@@ -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 1cea989b188..eba6fc2e413 100644
--- a/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
+++ b/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty
@@ -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.28}
-\def\myfiledate{2024/05/29}
+\def\myfileversion{6.29b}
+\def\myfiledate{2024/11/12}
\RequirePackage{pgfcore}
\usepgfmodule{shapes}
\RequirePackage{l3keys2e}
@@ -28,11 +28,18 @@
{\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 { \cs_if_exist_p:N \ar@ialign }
+\bool_const:Nn \c__nicematrix_tagging_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 } }
@@ -53,7 +60,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 } }
@@ -76,50 +83,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
- }
-\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 / after } { . }
- {
- \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:
- }
- }
- }
+\hook_gput_code:nnn { begindocument / end } { . }
+ { \IfPackageLoadedT { mdwtab } { \__nicematrix_fatal:n { mdwtab~loaded } } }
\cs_new_protected:Npn \__nicematrix_collect_options:n #1
{
\peek_meaning:NTF [
@@ -144,19 +114,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_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 }
@@ -207,9 +177,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
{
@@ -222,8 +191,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 } }
@@ -269,6 +237,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 }
@@ -291,8 +260,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 }
@@ -302,24 +271,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
@@ -397,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 \} }
}
@@ -428,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
@@ -441,7 +411,7 @@
\seq_new:N \g__nicematrix_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
@@ -473,7 +443,6 @@
\bool_new:N \l__nicematrix_p_block_bool
\bool_new:N \l__nicematrix_nocolor_used_bool
\str_new:N \l__nicematrix_vpos_block_str
-\str_set:Nn \l__nicematrix_vpos_block_str { c }
\bool_new:N \l__nicematrix_draw_first_bool
\bool_new:N \l__nicematrix_vlines_block_bool
\bool_new:N \l__nicematrix_hlines_block_bool
@@ -507,7 +476,7 @@
}
\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
@@ -531,11 +500,13 @@
\dim_const:Nn \c__nicematrix_innersep_middle_dim { 0.17 em }
}
\newcounter { tabularnote }
+\int_new:N \g__nicematrix_tabularnote_int
+\cs_set:Npn \theHtabularnote { \int_use:N \g__nicematrix_tabularnote_int }
\seq_new:N \g__nicematrix_notes_seq
\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 }
@@ -618,7 +589,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 }
{
@@ -646,13 +617,14 @@
}
\int_gdecr:N \c@tabularnote
\int_set_eq:NN \l_tmpa_int \c@tabularnote
+ \int_gincr:N \g__nicematrix_tabularnote_int
\refstepcounter { tabularnote }
\int_compare:nNnT \l_tmpa_int = \c@tabularnote
{ \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 }
@@ -679,7 +651,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 } }
@@ -796,7 +768,7 @@
\tl_new:N \l__nicematrix_xdots_color_tl
\tl_new:N \l__nicematrix_delimiters_color_tl
\bool_new:N \l__nicematrix_delimiters_max_width_bool
-\keys_define:nn { NiceMatrix / xdots }
+\keys_define:nn { nicematrix / xdots }
{
shorten-start .code:n =
\hook_gput_code:nnn { begindocument } { . }
@@ -840,7 +812,7 @@
draw-first .code:n = \prg_do_nothing: ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~xdots }
}
-\keys_define:nn { NiceMatrix / rules }
+\keys_define:nn { nicematrix / rules }
{
color .tl_set:N = \l__nicematrix_rules_color_tl ,
color .value_required:n = true ,
@@ -848,10 +820,11 @@
width .value_required:n = true ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~rules }
}
-\keys_define:nn { NiceMatrix / Global }
+\keys_define:nn { nicematrix / Global }
{
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 =
\cs_set_protected:Npn \__nicematrix_node_for_cell:
{ \box_use_drop:N \l__nicematrix_cell_box } ,
@@ -859,7 +832,7 @@
rounded-corners .dim_set:N = \l__nicematrix_tab_rounded_corners_dim ,
rounded-corners .default:n = 4 pt ,
custom-line .code:n = \__nicematrix_custom_line:n { #1 } ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
standard-cline .bool_set:N = \l__nicematrix_standard_cline_bool ,
standard-cline .default:n = true ,
@@ -873,7 +846,7 @@
cell-space-bottom-limit = #1 ,
} ,
cell-space-limits .value_required:n = true ,
- xdots .code:n = \keys_set:nn { NiceMatrix / xdots } { #1 } ,
+ xdots .code:n = \keys_set:nn { nicematrix / xdots } { #1 } ,
light-syntax .code:n =
\bool_set_true:N \l__nicematrix_light_syntax_bool
\bool_set_false:N \l__nicematrix_light_syntax_expanded_bool ,
@@ -949,7 +922,7 @@
pgf-node-code .tl_set:N = \l__nicematrix_pgf_node_code_tl ,
pgf-node-code .value_required:n = true
}
-\keys_define:nn { NiceMatrix / Env }
+\keys_define:nn { nicematrix / environments }
{
corners .clist_set:N = \l__nicematrix_corners_clist ,
corners .default:n = { NW , SW , NE , SE } ,
@@ -968,17 +941,17 @@
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 ,
@@ -990,7 +963,7 @@
color-inside .value_forbidden:n = true ,
colortbl-like .meta:n = color-inside
}
-\keys_define:nn { NiceMatrix / notes }
+\keys_define:nn { nicematrix / notes }
{
para .bool_set:N = \l__nicematrix_notes_para_bool ,
para .default:n = true ,
@@ -1010,9 +983,8 @@
{
\hook_gput_code:nnn { begindocument } { . }
{
- \IfPackageLoadedTF { enumitem }
+ \IfPackageLoadedT { enumitem }
{ \setlist* [ tabularnotes ] { #1 } }
- { }
}
} ,
enumitem-keys .value_required:n = true ,
@@ -1020,9 +992,8 @@
{
\hook_gput_code:nnn { begindocument } { . }
{
- \IfPackageLoadedTF { enumitem }
+ \IfPackageLoadedT { enumitem }
{ \setlist* [ tabularnotes* ] { #1 } }
- { }
}
} ,
enumitem-keys-para .value_required:n = true ,
@@ -1030,62 +1001,62 @@
detect-duplicates .default:n = true ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~notes }
}
-\keys_define:nn { NiceMatrix / delimiters }
+\keys_define:nn { nicematrix / delimiters }
{
max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
max-width .default:n = true ,
color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
color .value_required:n = true ,
}
-\keys_define:nn { NiceMatrix }
+\keys_define:nn { nicematrix }
{
NiceMatrixOptions .inherit:n =
- { NiceMatrix / Global } ,
- NiceMatrixOptions / xdots .inherit:n = NiceMatrix / xdots ,
- NiceMatrixOptions / rules .inherit:n = NiceMatrix / rules ,
- NiceMatrixOptions / notes .inherit:n = NiceMatrix / notes ,
- NiceMatrixOptions / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- SubMatrix / rules .inherit:n = NiceMatrix / rules ,
- CodeAfter / xdots .inherit:n = NiceMatrix / xdots ,
- CodeBefore / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- CodeAfter / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
+ { nicematrix / Global } ,
+ NiceMatrixOptions / xdots .inherit:n = nicematrix / xdots ,
+ NiceMatrixOptions / rules .inherit:n = nicematrix / rules ,
+ NiceMatrixOptions / notes .inherit:n = nicematrix / notes ,
+ NiceMatrixOptions / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ SubMatrix / rules .inherit:n = nicematrix / rules ,
+ CodeAfter / xdots .inherit:n = nicematrix / xdots ,
+ CodeBefore / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ CodeAfter / sub-matrix .inherit:n = nicematrix / sub-matrix ,
NiceMatrix .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- NiceMatrix / xdots .inherit:n = NiceMatrix / xdots ,
- NiceMatrix / rules .inherit:n = NiceMatrix / rules ,
+ NiceMatrix / xdots .inherit:n = nicematrix / xdots ,
+ NiceMatrix / rules .inherit:n = nicematrix / rules ,
NiceTabular .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env
+ nicematrix / Global ,
+ nicematrix / environments
} ,
- NiceTabular / xdots .inherit:n = NiceMatrix / xdots ,
- NiceTabular / rules .inherit:n = NiceMatrix / rules ,
- NiceTabular / notes .inherit:n = NiceMatrix / notes ,
+ NiceTabular / xdots .inherit:n = nicematrix / xdots ,
+ NiceTabular / rules .inherit:n = nicematrix / rules ,
+ NiceTabular / notes .inherit:n = nicematrix / notes ,
NiceArray .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- NiceArray / xdots .inherit:n = NiceMatrix / xdots ,
- NiceArray / rules .inherit:n = NiceMatrix / rules ,
+ NiceArray / xdots .inherit:n = nicematrix / xdots ,
+ NiceArray / rules .inherit:n = nicematrix / rules ,
pNiceArray .inherit:n =
{
- NiceMatrix / Global ,
- NiceMatrix / Env ,
+ nicematrix / Global ,
+ nicematrix / environments ,
} ,
- pNiceArray / xdots .inherit:n = NiceMatrix / xdots ,
- pNiceArray / rules .inherit:n = NiceMatrix / rules ,
+ pNiceArray / xdots .inherit:n = nicematrix / xdots ,
+ pNiceArray / rules .inherit:n = nicematrix / rules ,
}
-\keys_define:nn { NiceMatrix / NiceMatrixOptions }
+\keys_define:nn { nicematrix / NiceMatrixOptions }
{
delimiters / color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
width .dim_set:N = \l__nicematrix_width_dim ,
width .value_required:n = true ,
@@ -1099,15 +1070,15 @@
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 =
\__nicematrix_msg_redirect_name:nn { Duplicate~name } { none } ,
allow-duplicate-names .value_forbidden:n = true ,
- notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
+ notes .code:n = \keys_set:nn { nicematrix / notes } { #1 } ,
notes .value_required:n = true ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
matrix / columns-type .tl_set:N = \l__nicematrix_columns_type_tl ,
matrix / columns-type .value_required:n = true ,
@@ -1116,8 +1087,8 @@
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceMatrixOptions }
}
\NewDocumentCommand \NiceMatrixOptions { m }
- { \keys_set:nn { NiceMatrix / NiceMatrixOptions } { #1 } }
-\keys_define:nn { NiceMatrix / NiceMatrix }
+ { \keys_set:nn { nicematrix / NiceMatrixOptions } { #1 } }
+\keys_define:nn { nicematrix / NiceMatrix }
{
last-col .code:n = \tl_if_empty:nTF { #1 }
{
@@ -1133,13 +1104,13 @@
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
small .bool_set:N = \l__nicematrix_small_bool ,
small .value_forbidden:n = true ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceMatrix }
}
-\keys_define:nn { NiceMatrix / NiceArray }
+\keys_define:nn { nicematrix / NiceArray }
{
small .bool_set:N = \l__nicematrix_small_bool ,
small .value_forbidden:n = true ,
@@ -1150,10 +1121,10 @@
l .code:n = \__nicematrix_error:n { r~or~l~with~preamble } ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceArray }
}
-\keys_define:nn { NiceMatrix / pNiceArray }
+\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 ,
@@ -1161,7 +1132,7 @@
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
small .bool_set:N = \l__nicematrix_small_bool ,
small .value_forbidden:n = true ,
@@ -1169,12 +1140,12 @@
l .code:n = \__nicematrix_error:n { r~or~l~with~preamble } ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceMatrix }
}
-\keys_define:nn { NiceMatrix / NiceTabular }
+\keys_define:nn { nicematrix / NiceTabular }
{
width .code:n = \dim_set:Nn \l__nicematrix_width_dim { #1 }
\bool_set_true:N \l__nicematrix_width_used_bool ,
width .value_required:n = true ,
- notes .code:n = \keys_set:nn { NiceMatrix / notes } { #1 } ,
+ notes .code:n = \keys_set:nn { nicematrix / notes } { #1 } ,
tabularnote .tl_gset:N = \g__nicematrix_tabularnote_tl ,
tabularnote .value_required:n = true ,
caption .tl_set:N = \l__nicematrix_caption_tl ,
@@ -1183,25 +1154,25 @@
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 } ,
l .code:n = \__nicematrix_error:n { r~or~l~with~preamble } ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~NiceTabular }
}
-\keys_define:nn { NiceMatrix / CodeAfter }
+\keys_define:nn { nicematrix / CodeAfter }
{
delimiters / color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
- xdots .code:n = \keys_set:nn { NiceMatrix / xdots } { #1 } ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ xdots .code:n = \keys_set:nn { nicematrix / xdots } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
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:
@@ -1216,22 +1187,19 @@
}
\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:
@@ -1263,16 +1231,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_zero_dim
+ { \dim_gset:Nn \g__nicematrix_ht_row_zero_dim { \box_ht:N \l__nicematrix_cell_box } }
}
}
}
@@ -1351,7 +1319,8 @@
{ \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
}
@@ -1437,7 +1406,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 }
@@ -1446,17 +1415,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_tagging_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:
@@ -1494,8 +1465,7 @@
\endpgfpicture
}
}
-\cs_new:Npn \__nicematrix_everycr: { \noalign { \__nicematrix_everycr_i: } }
-\cs_new_protected:Npn \__nicematrix_everycr_i:
+\cs_new_protected:Npn \__nicematrix_everycr:
{
\bool_if:NT \c__nicematrix_testphase_table_bool
{
@@ -1507,12 +1477,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 } }
}
@@ -1544,22 +1513,18 @@
{ \__nicematrix_error:n { without~color-inside } }
}
}
-\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 { colortbl }
+ {
+ \cs_set_protected:Npn \__nicematrix_redefine_everycr:
+ { \CT@everycr { \noalign { \__nicematrix_everycr: } } }
+ }
+ {
+ \cs_new_protected:Npn \__nicematrix_redefine_everycr:
+ { \everycr { \noalign { \__nicematrix_everycr: } } }
+ }
+ }
\hook_gput_code:nnn { begindocument } { . }
{
\IfPackageLoadedTF { booktabs }
@@ -1600,7 +1565,8 @@
{ \__nicematrix_env: - row - \int_use:N \c@iRow - base }
}
}
- \bool_if:NTF \c__nicematrix_tagging_array_bool
+ \bool_if:nTF
+ { \c__nicematrix_tagging_array_bool && ! \c__nicematrix_revtex_bool }
{
\cs_set_nopar:Npn \ar@ialign
{
@@ -1708,10 +1674,10 @@
{
\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
@@ -1752,7 +1718,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:
}
@@ -1782,7 +1748,7 @@
\bool_if:NT \g__nicematrix_recreate_cell_nodes_bool \__nicematrix_recreate_cell_nodes:
\endpgfpicture
\__nicematrix_create_blocks_nodes:
- \IfPackageLoadedTF { tikz }
+ \IfPackageLoadedT { tikz }
{
\tikzset
{
@@ -1790,7 +1756,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
@@ -1806,6 +1771,8 @@
}
\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
@@ -1813,7 +1780,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
@@ -1823,11 +1790,11 @@
\bool_if:NT \g__nicematrix_recreate_cell_nodes_bool
{ \tl_put_left:Nn \__nicematrix_node_for_cell: \__nicematrix_patch_node_for_cell: }
}
-\keys_define:nn { NiceMatrix / CodeBefore }
+\keys_define:nn { nicematrix / CodeBefore }
{
create-cell-nodes .bool_gset:N = \g__nicematrix_recreate_cell_nodes_bool ,
create-cell-nodes .default:n = true ,
- sub-matrix .code:n = \keys_set:nn { NiceMatrix / sub-matrix } { #1 } ,
+ sub-matrix .code:n = \keys_set:nn { nicematrix / sub-matrix } { #1 } ,
sub-matrix .value_required:n = true ,
delimiters / color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
@@ -1835,7 +1802,7 @@
}
\NewDocumentCommand \__nicematrix_CodeBefore_keys: { O { } }
{
- \keys_set:nn { NiceMatrix / CodeBefore } { #1 }
+ \keys_set:nn { nicematrix / CodeBefore } { #1 }
\__nicematrix_CodeBefore:w
}
\cs_new_protected:Npn \__nicematrix_CodeBefore:w #1 \q_stop
@@ -1917,18 +1884,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 }
@@ -1978,13 +1945,13 @@
\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 }
\bool_if:NTF \g__nicematrix_delims_bool
- { \keys_set:nn { NiceMatrix / pNiceArray } }
- { \keys_set:nn { NiceMatrix / NiceArray } }
+ { \keys_set:nn { nicematrix / pNiceArray } }
+ { \keys_set:nn { nicematrix / NiceArray } }
{ #3 , #5 }
\__nicematrix_set_CT@arc@:o \l__nicematrix_rules_color_tl
\bool_if:nTF { #6 } \__nicematrix_CodeBefore_Body:w \__nicematrix_pre_array:
@@ -1997,7 +1964,7 @@
\skip_horizontal:N \l__nicematrix_right_margin_dim
\skip_horizontal:N \l__nicematrix_extra_right_margin_dim
- % % awful workaround
+ % awful workaround
\int_compare:nNnT \g__nicematrix_col_total_int = \c_one_int
{
\dim_compare:nNnT \l__nicematrix_columns_width_dim > \c_zero_dim
@@ -2016,7 +1983,7 @@
}
\int_compare:nNnT \g__nicematrix_total_X_weight_int > \c_zero_int
{
- \tl_gput_right:Nx \g__nicematrix_aux_tl
+ \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
@@ -2064,10 +2031,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:
}
@@ -2128,7 +2095,7 @@
\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 }
@@ -2149,7 +2116,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 } }
@@ -2161,7 +2128,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:
}
@@ -2199,7 +2166,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 { @ { } } }
@@ -2214,7 +2181,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 { @ { } } }
@@ -2236,70 +2203,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 } }
}
@@ -2308,11 +2275,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
{
@@ -2323,10 +2290,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
@@ -2340,31 +2307,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 ,
@@ -2372,9 +2315,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
@@ -2391,7 +2334,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 } { }
}
@@ -2402,29 +2345,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
@@ -2440,9 +2391,15 @@
}
\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
@@ -2451,7 +2408,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
{
@@ -2475,34 +2432,24 @@
}
}
}
-\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:
- {
- \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 }
- }
-\cs_new_protected:Npn \__nicematrix_test_if_empty:w \ignorespaces
+\cs_new_protected:Npn \__nicematrix_test_if_empty: \ignorespaces
{
- \peek_meaning:NT \unskip
+ \group_align_safe_begin:
+ \peek_meaning:NTF &
{
+ \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
}
}
+ { \group_align_safe_end: }
}
\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:
{
@@ -2518,16 +2465,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 } }
}
@@ -2536,7 +2483,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 } { } }
@@ -2545,8 +2492,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 }
@@ -2561,7 +2508,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
@@ -2584,7 +2531,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
@@ -2604,7 +2551,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 [ }
@@ -2614,26 +2561,23 @@
{ \__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
- {
- > {
- \__nicematrix_cell_begin:w
- \keys_set:nn { siunitx } { #1 }
- \siunitx_cell_begin:w
- }
- c
- < { \siunitx_cell_end: \__nicematrix_cell_end: }
+ > {
+ \__nicematrix_cell_begin:
+ \keys_set:nn { siunitx } { #1 }
+ \siunitx_cell_begin:w
}
- \int_gincr:N \c@jCol
- \__nicematrix_rec_preamble_after_col:n
+ c
+ < { \siunitx_cell_end: \__nicematrix_cell_end: }
}
- { \__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
@@ -2655,7 +2599,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 }
{
@@ -2664,20 +2608,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
}
@@ -2685,7 +2630,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
}
@@ -2695,31 +2640,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 } { < }
@@ -2728,14 +2673,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 } }
@@ -2752,14 +2697,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 } }
@@ -2768,14 +2712,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 [ }
@@ -2801,7 +2745,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 }
@@ -2811,7 +2754,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
@@ -2835,13 +2778,13 @@
}
\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 }
@@ -2865,10 +2808,10 @@
{ \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
@@ -2885,6 +2828,18 @@
{ } % for the name of the block
}
}
+ \RenewDocumentCommand \cellcolor { O { } m }
+ {
+ \__nicematrix_test_color_inside:
+ \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 }
+ { \int_use:N \c@iRow - \int_eval:n { \c@jCol + #1 } }
+ }
+ \ignorespaces
+ }
\cs_set_nopar:Npn \@sharp { #3 }
\@arstrut
\@preamble
@@ -2919,7 +2874,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 } }
}
@@ -2929,7 +2884,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:
}
@@ -2950,7 +2905,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
@@ -2972,7 +2927,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
@@ -3002,7 +2957,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:
}
@@ -3026,10 +2981,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 }
}
@@ -3068,7 +3023,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 }
@@ -3107,9 +3062,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 ] }
@@ -3199,12 +3153,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
{
@@ -3281,7 +3235,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
}
}
}
@@ -3291,14 +3245,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
}
{
@@ -3335,8 +3287,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
@@ -3348,14 +3301,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 }
}
@@ -3675,6 +3627,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
@@ -3697,7 +3650,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 { } }
@@ -3709,8 +3661,8 @@
\bool_set_true:N \l__nicematrix_last_col_without_value_bool
\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
+ \keys_set:nn { nicematrix / NiceMatrix } { ##1 }
+ \__nicematrix_begin_of_NiceMatrix:no { #1 } \l__nicematrix_columns_type_tl
}
{ \use:c { end #1 NiceArray } }
}
@@ -3722,12 +3674,12 @@
\bool_set_true:N \l__nicematrix_last_col_without_value_bool
\int_set:Nn \l__nicematrix_last_col_int { -1 }
}
- \keys_set:nn { NiceMatrix / NiceMatrix } { #1 }
+ \keys_set:nn { nicematrix / NiceMatrix } { #1 }
\bool_lazy_or:nnT
{ \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:
@@ -3737,7 +3689,7 @@
\dim_compare:nNnT \l__nicematrix_width_dim = \c_zero_dim
{ \dim_set_eq:NN \l__nicematrix_width_dim \linewidth }
\str_gset:Nn \g__nicematrix_name_env_str { NiceTabular }
- \keys_set:nn { NiceMatrix / NiceTabular } { #1 , #3 }
+ \keys_set:nn { nicematrix / NiceTabular } { #1 , #3 }
\tl_if_empty:NF \l__nicematrix_short_caption_tl
{
\tl_if_empty:NT \l__nicematrix_caption_tl
@@ -3782,7 +3734,7 @@
\str_gset:Nn \g__nicematrix_name_env_str { NiceTabularX }
\dim_zero_new:N \l__nicematrix_width_dim
\dim_set:Nn \l__nicematrix_width_dim { #1 }
- \keys_set:nn { NiceMatrix / NiceTabular } { #2 , #4 }
+ \keys_set:nn { nicematrix / NiceTabular } { #2 , #4 }
\__nicematrix_settings_for_tabular:
\NiceArray { #3 }
}
@@ -3795,7 +3747,7 @@
{
\str_gset:Nn \g__nicematrix_name_env_str { NiceTabular* }
\dim_set:Nn \l__nicematrix_tabular_width_dim { #1 }
- \keys_set:nn { NiceMatrix / NiceTabular } { #2 , #4 }
+ \keys_set:nn { nicematrix / NiceTabular } { #2 , #4 }
\__nicematrix_settings_for_tabular:
\NiceArray { #3 }
}
@@ -3835,7 +3787,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
{
@@ -3849,7 +3801,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 , , , }
@@ -3857,7 +3809,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 , , , }
@@ -3920,12 +3872,12 @@
{ 0.6 \l__nicematrix_xdots_shorten_end_dim }
}
\__nicematrix_draw_dotted_lines:
- \__nicematrix_compute_corners:
+ \clist_if_empty:NF \l__nicematrix_corners_clist \__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
{
@@ -3937,7 +3889,6 @@
}
}
}
- { }
\bool_if:NT \c__nicematrix_tagging_array_bool
{ \cs_set_eq:NN \ar@ialign \__nicematrix_old_ar@ialign: }
\cs_set_eq:NN \SubMatrix \__nicematrix_SubMatrix
@@ -3950,8 +3901,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:
@@ -3960,7 +3911,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 }
@@ -3969,7 +3920,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 }
@@ -3981,10 +3932,10 @@
\cs_gset_eq:NN \CT@arc@ \__nicematrix_old_CT@arc@
}
\NewDocumentCommand \__nicematrix_CodeAfter_keys: { O { } }
- { \keys_set:nn { NiceMatrix / CodeAfter } { #1 } }
+ { \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
@@ -4005,7 +3956,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:
@@ -4037,14 +3988,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:
{
@@ -4089,7 +4042,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 }
@@ -4100,29 +4053,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 }
@@ -4151,7 +4102,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 -
@@ -4163,34 +4114,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 }
@@ -4219,7 +4169,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 -
@@ -4230,7 +4180,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 }
@@ -4242,41 +4192,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:
{
@@ -4343,8 +4292,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 }
@@ -4368,8 +4317,8 @@
\int_compare:nNnT { #1 } = \l__nicematrix_last_row_int
{ \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 } }
+ \keys_set:nn { nicematrix / xdots } { #3 }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Ldots:
\group_end:
}
@@ -4420,8 +4369,8 @@
\int_compare:nNnT { #1 } = \l__nicematrix_last_row_int
{ \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 } }
+ \keys_set:nn { nicematrix / xdots } { #3 }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Cdots:
\group_end:
}
@@ -4463,8 +4412,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 }
@@ -4491,8 +4440,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
@@ -4516,9 +4465,8 @@
\int_compare:nNnT { #2 } = \l__nicematrix_last_col_int
{ \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 } }
+ \keys_set:nn { nicematrix / xdots } { #3 }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Vdots:
\group_end:
}
@@ -4602,8 +4550,8 @@
\__nicematrix_find_extremities_of_line:nnnn { #1 } { #2 } 1 1
\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 } }
+ \keys_set:nn { nicematrix / xdots } { #3 }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Ddots:
\group_end:
}
@@ -4633,11 +4581,14 @@
{ \l__nicematrix_y_final_dim - \l__nicematrix_y_initial_dim }
}
{
- \dim_set:Nn \l__nicematrix_y_final_dim
+ \dim_compare:nNnF \g__nicematrix_delta_x_one_dim = \c_zero_dim
{
- \l__nicematrix_y_initial_dim +
- ( \l__nicematrix_x_final_dim - \l__nicematrix_x_initial_dim ) *
- \dim_ratio:nn \g__nicematrix_delta_y_one_dim \g__nicematrix_delta_x_one_dim
+ \dim_set:Nn \l__nicematrix_y_final_dim
+ {
+ \l__nicematrix_y_initial_dim +
+ ( \l__nicematrix_x_final_dim - \l__nicematrix_x_initial_dim ) *
+ \dim_ratio:nn \g__nicematrix_delta_y_one_dim \g__nicematrix_delta_x_one_dim
+ }
}
}
}
@@ -4651,8 +4602,8 @@
\__nicematrix_find_extremities_of_line:nnnn { #1 } { #2 } 1 { -1 }
\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 } }
+ \keys_set:nn { nicematrix / xdots } { #3 }
+ \__nicematrix_color:o \l__nicematrix_xdots_color_tl
\__nicematrix_actually_draw_Iddots:
\group_end:
}
@@ -4682,11 +4633,14 @@
{ \l__nicematrix_y_final_dim - \l__nicematrix_y_initial_dim }
}
{
- \dim_set:Nn \l__nicematrix_y_final_dim
+ \dim_compare:nNnF \g__nicematrix_delta_x_two_dim = \c_zero_dim
{
- \l__nicematrix_y_initial_dim +
- ( \l__nicematrix_x_final_dim - \l__nicematrix_x_initial_dim ) *
- \dim_ratio:nn \g__nicematrix_delta_y_two_dim \g__nicematrix_delta_x_two_dim
+ \dim_set:Nn \l__nicematrix_y_final_dim
+ {
+ \l__nicematrix_y_initial_dim +
+ ( \l__nicematrix_x_final_dim - \l__nicematrix_x_initial_dim ) *
+ \dim_ratio:nn \g__nicematrix_delta_y_two_dim \g__nicematrix_delta_x_two_dim
+ }
}
}
}
@@ -4708,6 +4662,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
@@ -4716,10 +4671,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
{
@@ -4732,8 +4686,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
@@ -4805,7 +4759,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:
@@ -5039,7 +4992,7 @@
\l__nicematrix_last_col_int { \__nicematrix_error:nn { in~last~col } \Ddots }
}
{
- \keys_set_known:nn { NiceMatrix / Ddots } { #1 }
+ \keys_set_known:nn { nicematrix / Ddots } { #1 }
\__nicematrix_instruction_of_type:nnn \l__nicematrix_draw_first_bool { Ddots }
{ #1 , down = #2 , up = #3 , middle = #4 }
}
@@ -5065,7 +5018,7 @@
\l__nicematrix_last_col_int { \__nicematrix_error:nn { in~last~col } \Iddots }
}
{
- \keys_set_known:nn { NiceMatrix / Ddots } { #1 }
+ \keys_set_known:nn { nicematrix / Ddots } { #1 }
\__nicematrix_instruction_of_type:nnn \l__nicematrix_draw_first_bool { Iddots }
{ #1 , down = #2 , up = #3 , middle = #4 }
}
@@ -5075,7 +5028,7 @@
\bool_gset_true:N \g__nicematrix_empty_cell_bool
}
}
-\keys_define:nn { NiceMatrix / Ddots }
+\keys_define:nn { nicematrix / Ddots }
{
draw-first .bool_set:N = \l__nicematrix_draw_first_bool ,
draw-first .default:n = true ,
@@ -5113,7 +5066,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 }
@@ -5185,12 +5138,12 @@
{ \color { nicematrix-last-row } }
}
- \keys_set:nn { NiceMatrix / xdots } { #4 }
- \tl_if_empty:oF \l__nicematrix_xdots_color_tl { \color { \l__nicematrix_xdots_color_tl } }
+ \keys_set:nn { nicematrix / xdots } { #4 }
+ \__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 } { . }
{
@@ -5201,7 +5154,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 }
@@ -5266,22 +5219,22 @@
\int_compare:nNnT { #2 } = \g__nicematrix_col_total_int
{ \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 } }
+ \keys_set:nn { nicematrix / xdots } { #4 }
+ \__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 { } }
{
\peek_remove_spaces:n
{
\bool_gset_true:N \g__nicematrix_rotate_bool
- \keys_set:nn { NiceMatrix / rotate } { #1 }
+ \keys_set:nn { nicematrix / rotate } { #1 }
}
}
-\keys_define:nn { NiceMatrix / rotate }
+\keys_define:nn { nicematrix / rotate }
{
c .code:n = \bool_gset_true:N \g__nicematrix_rotate_c_bool ,
c .value_forbidden:n = true ,
@@ -5303,14 +5256,14 @@
\exp_args:NNo \NewDocumentCommand \__nicematrix_line \l__nicematrix_argspec_tl
{
\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 }
- }
+ \keys_set:nn { nicematrix / xdots } { #1 , #4 , down = #5 , up = #6 }
+ \__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:
}
}
@@ -5326,7 +5279,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 }
@@ -5346,9 +5299,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
@@ -5356,8 +5310,7 @@
{ \exp_not:n { #1 } \scan_stop: }
}
}
-\cs_generate_variant:Nn \__nicematrix_put_in_row_style:n { e }
-\keys_define:nn { NiceMatrix / RowStyle }
+\keys_define:nn { nicematrix / RowStyle }
{
cell-space-top-limit .dim_set:N = \l_tmpa_dim ,
cell-space-top-limit .value_required:n = true ,
@@ -5373,7 +5326,7 @@
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 ,
@@ -5389,10 +5342,10 @@
\int_set_eq:NN \l__nicematrix_key_nb_rows_int \c_one_int
\dim_zero:N \l_tmpa_dim
\dim_zero:N \l_tmpb_dim
- \keys_set:nn { NiceMatrix / RowStyle } { #1 }
+ \keys_set:nn { nicematrix / RowStyle } { #1 }
\tl_if_empty:NF \l_tmpa_tl
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
+ \tl_gput_right:Ne \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 }
@@ -5400,7 +5353,7 @@
}
\int_compare:nNnT \l__nicematrix_key_nb_rows_int > \c_one_int
{
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_before_tl
{
\__nicematrix_exp_color_arg:No \__nicematrix_rowcolor \l_tmpa_tl
{
@@ -5413,7 +5366,7 @@
\__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
{
@@ -5424,7 +5377,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
{
@@ -5461,23 +5414,23 @@
\g__nicematrix_row_style_tl
\ignorespaces
}
+\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
@@ -5616,8 +5569,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 }
@@ -5644,7 +5597,7 @@
{ 1 - 1 }
{ \int_use:N \c@iRow - \int_use:N \c@jCol }
}
-\keys_define:nn { NiceMatrix / rowcolors }
+\keys_define:nn { nicematrix / rowcolors }
{
respect-blocks .bool_set:N = \l__nicematrix_respect_blocks_bool ,
respect-blocks .default:n = true ,
@@ -5660,7 +5613,7 @@
\seq_set_split:Nnn \l__nicematrix_colors_seq { , } { #3 }
\tl_clear_new:N \l__nicematrix_cols_tl
\cs_set_nopar:Npn \l__nicematrix_cols_tl { - }
- \keys_set:nn { NiceMatrix / rowcolors } { #4 }
+ \keys_set:nn { nicematrix / rowcolors } { #4 }
\int_zero_new:N \l__nicematrix_color_int
\int_set_eq:NN \l__nicematrix_color_int \c_one_int
\bool_if:NT \l__nicematrix_respect_blocks_bool
@@ -5694,7 +5647,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
{
@@ -5758,7 +5711,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:
}
@@ -5777,13 +5730,13 @@
\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@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
@@ -5804,19 +5757,19 @@
\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_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 }
@@ -5843,14 +5796,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 }
@@ -5869,7 +5821,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
@@ -5883,12 +5835,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 } }
@@ -5899,7 +5851,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 }
@@ -5909,7 +5861,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 }
@@ -5931,7 +5883,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 } }
@@ -5944,7 +5896,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 } ]
@@ -5969,7 +5921,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 }
@@ -6018,7 +5970,7 @@
}
}
}
-\keys_define:nn { NiceMatrix / Rules }
+\keys_define:nn { nicematrix / Rules }
{
position .int_set:N = \l__nicematrix_position_int ,
position .value_required:n = true ,
@@ -6026,11 +5978,11 @@
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 } }
}
-\keys_define:nn { NiceMatrix / RulesBis }
+\keys_define:nn { nicematrix / RulesBis }
{
multiplicity .int_set:N = \l__nicematrix_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -6057,7 +6009,7 @@
{
\group_begin:
\int_set_eq:NN \l__nicematrix_end_int \c@iRow
- \keys_set_known:nnN { NiceMatrix / Rules } { #1 } \l__nicematrix_other_keys_tl
+ \keys_set_known:nnN { nicematrix / Rules } { #1 } \l__nicematrix_other_keys_tl
\int_compare:nNnT \l__nicematrix_position_int < { \c@jCol + 2 }
\__nicematrix_vline_i:
\group_end:
@@ -6098,23 +6050,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 }
}
@@ -6124,7 +6071,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:
{
@@ -6209,7 +6156,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 }
@@ -6234,7 +6181,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 } }
}
@@ -6244,7 +6191,7 @@
\group_begin:
\int_zero_new:N \l__nicematrix_end_int
\int_set_eq:NN \l__nicematrix_end_int \c@jCol
- \keys_set_known:nnN { NiceMatrix / Rules } { #1 } \l__nicematrix_other_keys_tl
+ \keys_set_known:nnN { nicematrix / Rules } { #1 } \l__nicematrix_other_keys_tl
\__nicematrix_hline_i:
\group_end:
}
@@ -6257,8 +6204,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
@@ -6286,23 +6233,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 }
}
@@ -6312,7 +6254,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:
{
@@ -6411,7 +6353,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 }
@@ -6436,7 +6378,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 } }
}
@@ -6458,7 +6400,7 @@
{
\__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
{
@@ -6476,7 +6418,7 @@
\str_clear_new:N \l__nicematrix_ccommand_str
\str_clear_new:N \l__nicematrix_letter_str
\tl_clear_new:N \l__nicematrix_other_keys_tl
- \keys_set_known:nnN { NiceMatrix / custom-line } { #1 } \l__nicematrix_other_keys_tl
+ \keys_set_known:nnN { nicematrix / custom-line } { #1 } \l__nicematrix_other_keys_tl
\bool_lazy_all:nTF
{
{ \str_if_empty_p:N \l__nicematrix_letter_str }
@@ -6484,9 +6426,9 @@
{ \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 }
+\keys_define:nn { nicematrix / custom-line }
{
letter .str_set:N = \l__nicematrix_letter_str ,
letter .value_required:n = true ,
@@ -6495,16 +6437,16 @@
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
\bool_set_false:N \l__nicematrix_dotted_rule_bool
\bool_set_false:N \l__nicematrix_color_bool
- \keys_set:nn { NiceMatrix / custom-line-bis } { #1 }
+ \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 } }
@@ -6519,11 +6461,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 } }
}
}
@@ -6533,7 +6476,7 @@
}
\tl_const:Nn \c__nicematrix_forbidden_letters_tl { lcrpmbVX|()[]!@<> }
\str_const:Nn \c__nicematrix_forbidden_letters_str { lcrpmbVX|()[]!@<> }
-\keys_define:nn { NiceMatrix / custom-line-bis }
+\keys_define:nn { nicematrix / custom-line-bis }
{
multiplicity .int_set:N = \l__nicematrix_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -6555,7 +6498,7 @@
\bool_new:N \l__nicematrix_dotted_rule_bool
\bool_new:N \l__nicematrix_tikz_rule_bool
\bool_new:N \l__nicematrix_color_bool
-\keys_define:nn { NiceMatrix / custom-line-width }
+\keys_define:nn { nicematrix / custom-line-width }
{
multiplicity .int_set:N = \l__nicematrix_multiplicity_int ,
multiplicity .initial:n = 1 ,
@@ -6569,7 +6512,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
@@ -6591,10 +6534,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
{
@@ -6611,7 +6554,7 @@
\bool_set_false:N \l__nicematrix_tikz_rule_bool
\bool_set_false:N \l__nicematrix_total_width_bool
\bool_set_false:N \l__nicematrix_dotted_rule_bool
- \keys_set_known:nn { NiceMatrix / custom-line-width } { #1 }
+ \keys_set_known:nn { nicematrix / custom-line-width } { #1 }
\bool_if:NF \l__nicematrix_total_width_bool
{
\bool_if:NTF \l__nicematrix_dotted_rule_bool
@@ -6631,9 +6574,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
{
@@ -6706,7 +6649,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 }
@@ -6722,15 +6667,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
@@ -6738,13 +6698,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
@@ -6756,13 +6715,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
@@ -6774,50 +6732,27 @@
\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 }
+\keys_define:nn { nicematrix / NiceMatrixBlock }
{
auto-columns-width .code:n =
{
@@ -6830,14 +6765,13 @@
{
\int_gincr:N \g__nicematrix_NiceMatrixBlock_int
\dim_zero:N \l__nicematrix_columns_width_dim
- \keys_set:nn { NiceMatrix / NiceMatrixBlock } { #1 }
+ \keys_set:nn { nicematrix / NiceMatrixBlock } { #1 }
\bool_if:NT \l__nicematrix_block_auto_columns_width_bool
{
\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 }
@@ -6852,7 +6786,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 }
@@ -6863,8 +6797,6 @@
}
\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
@@ -6902,7 +6834,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 }
@@ -6910,7 +6842,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 }
@@ -7057,7 +6989,7 @@
{ \int_use:N \g__nicematrix_env_int - \__nicematrix_i: - \__nicematrix_j: \l__nicematrix_suffix_tl}
}
}
-\keys_define:nn { NiceMatrix / Block / FirstPass }
+\keys_define:nn { nicematrix / Block / FirstPass }
{
j .code:n = \str_set:Nn \l__nicematrix_hpos_block_str j
\bool_set_true:N \l__nicematrix_p_block_bool ,
@@ -7082,6 +7014,9 @@
b .value_forbidden:n = true ,
B .code:n = \str_set:Nn \l__nicematrix_vpos_block_str B ,
B .value_forbidden:n = true ,
+ m .code:n = \str_set:Nn \l__nicematrix_vpos_block_str c ,
+ m .value_forbidden:n = true ,
+ v-center .meta:n = m ,
p .code:n = \bool_set_true:N \l__nicematrix_p_block_bool ,
p .value_forbidden:n = true ,
color .code:n =
@@ -7119,23 +7054,23 @@
{
\bool_lazy_or:nnTF
{ \tl_if_blank_p:n { #1 } }
- { \str_if_eq_p:nn { #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:nn { #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
+ \keys_set_known:nn { nicematrix / Block / FirstPass } { #3 }
+ \tl_set:Ne \l_tmpa_tl
{
{ \int_use:N \c@iRow }
{ \int_use:N \c@jCol }
@@ -7145,34 +7080,25 @@
\bool_set_false:N \l_tmpa_bool
\bool_if:NT \l__nicematrix_amp_in_blocks_bool
{ \tl_if_in:nnT { #5 } { & } { \bool_set_true:N \l_tmpa_bool } }
- \bool_if:NTF \l_tmpa_bool
- { \exp_args:Nee \__nicematrix_Block_vii:nnnnn }
+ \bool_case:nF
{
- \bool_if:NTF \l__nicematrix_p_block_bool
- { \exp_args:Nee \__nicematrix_Block_vi:nnnnn }
- {
- \bool_if:nTF
- {
- (
- \int_compare_p:nNn \l_tmpa_int = \c_one_int
- ||
- \int_compare_p:nNn \l_tmpb_int = \c_one_int
- )
- && ! \tl_if_empty_p:n { #5 }
- && ! \l__nicematrix_X_bool
- }
- { \exp_args:Nee \__nicematrix_Block_iv:nnnnn }
- { \exp_args:Nee \__nicematrix_Block_v: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 }
}
+ { \__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 }
@@ -7194,10 +7120,16 @@
\int_compare:nNnT { #1 } = \c_one_int
{
\int_if_zero:nTF \c@iRow
- \l__nicematrix_code_for_first_row_tl
+ {
+ \cs_set_eq:NN \Block \__nicematrix_NullBlock:
+ \l__nicematrix_code_for_first_row_tl
+ }
{
\int_compare:nNnT \c@iRow = \l__nicematrix_last_row_int
- \l__nicematrix_code_for_last_row_tl
+ {
+ \cs_set_eq:NN \Block \__nicematrix_NullBlock:
+ \l__nicematrix_code_for_last_row_tl
+ }
}
\g__nicematrix_row_style_tl
}
@@ -7262,7 +7194,9 @@
}
}
}
- \int_compare:nNnT { #1 } = \c_one_int
+ \bool_lazy_and:nnT
+ { \int_compare_p:nNn { #1 } = \c_one_int }
+ { \str_if_empty_p:N \l__nicematrix_vpos_block_str }
{
\dim_gset:Nn \g__nicematrix_blocks_ht_dim
{
@@ -7283,7 +7217,7 @@
}
}
}
- \seq_gput_right:Nx \g__nicematrix_blocks_seq
+ \seq_gput_right:Ne \g__nicematrix_blocks_seq
{
\l_tmpa_tl
{
@@ -7295,7 +7229,6 @@
{ m }
{ \int_compare:nNnT \c@iRow = \l__nicematrix_last_row_int T }
}
-
}
{
\box_use_drop:c
@@ -7308,7 +7241,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 }
@@ -7350,9 +7283,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 } }
@@ -7399,9 +7333,10 @@
}
}
}
+\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 } }
@@ -7412,17 +7347,21 @@
}
}
}
+\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 } }
{ \exp_not:n { #4 #5 } }
}
}
-\keys_define:nn { NiceMatrix / Block / SecondPass }
+\keys_define:nn { nicematrix / Block / SecondPass }
{
+ 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 ,
tikz .code:n =
\IfPackageLoadedTF { tikz }
{ \seq_put_right:Nn \l__nicematrix_tikz_seq { { #1 } } }
@@ -7497,6 +7436,7 @@
{ \cs_set_eq:NN \ialign \__nicematrix_old_ialign: }
\seq_map_inline:Nn \g__nicematrix_blocks_seq { \__nicematrix_Block_iv:nnnnnn ##1 }
}
+\cs_generate_variant:Nn \__nicematrix_Block_v:nnnnnn { n n e e }
\cs_new_protected:Npn \__nicematrix_Block_iv:nnnnnn #1 #2 #3 #4 #5 #6
{
\int_zero_new:N \l__nicematrix_last_row_int
@@ -7525,7 +7465,15 @@
{
\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:nnnnnn { #1 } { #2 } { #3 } { #4 } { #5 } { #6 } }
+ {
+ \__nicematrix_Block_v:nneenn
+ { #1 }
+ { #2 }
+ { \int_use:N \l__nicematrix_last_row_int }
+ { \int_use:N \l__nicematrix_last_col_int }
+ { #5 }
+ { #6 }
+ }
}
}
\cs_new_protected:Npn \__nicematrix_Block_v:nnnnnn #1 #2 #3 #4 #5 #6
@@ -7533,13 +7481,13 @@
\group_begin:
\int_compare:nNnT { #1 } = { #3 }
{ \str_set:Nn \l__nicematrix_vpos_block_str { t } }
- \keys_set:nn { NiceMatrix / Block / SecondPass } { #5 }
+ \keys_set:nn { nicematrix / Block / SecondPass } { #5 }
\tl_if_in:nnT { #6 } { & } { \bool_set_true:N \l__nicematrix_ampersand_bool }
\bool_lazy_and:nnT
\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 } }
@@ -7549,7 +7497,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 } }
@@ -7561,7 +7509,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 } }
}
}
@@ -7569,7 +7517,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 } }
@@ -7581,7 +7529,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 } }
@@ -7593,23 +7541,23 @@
{
\tl_if_empty:NF \l__nicematrix_opacity_tl
{
- \tl_if_head_eq_meaning:nNTF \l__nicematrix_fill_tl [
+ \tl_if_head_eq_meaning:oNTF \l__nicematrix_fill_tl [
{
- \tl_set:Nx \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:Nx \l__nicematrix_fill_tl
- { [ opacity = \l__nicematrix_opacity_tl ] { \l__nicematrix_fill_tl } }
+ \tl_set:Ne \l__nicematrix_fill_tl
+ { [ opacity = \l__nicematrix_opacity_tl ] { \exp_not:o \l__nicematrix_fill_tl } }
}
}
- \tl_gput_right:Nx \g__nicematrix_pre_code_before_tl
+ \tl_gput_right:Ne \g__nicematrix_pre_code_before_tl
{
\exp_not:N \roundedrectanglecolor
- \exp_args:No \tl_if_head_eq_meaning:nNTF \l__nicematrix_fill_tl [
+ \tl_if_head_eq_meaning:oNTF \l__nicematrix_fill_tl [
{ \l__nicematrix_fill_tl }
{ { \l__nicematrix_fill_tl } }
{ #1 - #2 }
@@ -7619,26 +7567,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
@@ -7734,6 +7683,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 } }
@@ -7745,7 +7695,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 }
{
@@ -7778,20 +7728,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 }
{
@@ -7843,9 +7790,10 @@
\pgf@relevantforpicturesizefalse
\bool_lazy_any:nTF
{
- { \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_empty_p:N \l__nicematrix_vpos_block_str } % added 2024/06/29
+ { \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 }
@@ -7854,10 +7802,19 @@
\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
{
+ { } { % added 2024-06-29
+ \str_case:on \l__nicematrix_hpos_block_str
+ {
+ c { center }
+ l { west }
+ r { east }
+ j { center }
+ }
+ }
c {
\str_case:on \l__nicematrix_hpos_block_str
{
@@ -7899,11 +7856,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 }
@@ -7914,7 +7867,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
}
}
@@ -7952,18 +7905,30 @@
}
\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_stroke_block:nnn #1 #2 #3
{
\group_begin:
\tl_clear:N \l__nicematrix_draw_tl
\dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockStroke } { #1 }
+ \keys_set_known:nn { nicematrix / BlockStroke } { #1 }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\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 }
}
@@ -8003,11 +7968,11 @@
\endpgfpicture
\group_end:
}
-\keys_define:nn { NiceMatrix / BlockStroke }
+\keys_define:nn { nicematrix / BlockStroke }
{
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 ,
@@ -8016,13 +7981,13 @@
\cs_new_protected:Npn \__nicematrix_vlines_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\__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 } }
\int_step_inline:nnn \l__nicematrix_tmpd_tl \l_tmpb_tl
{
\use:e
@@ -8040,13 +8005,13 @@
\cs_new_protected:Npn \__nicematrix_hlines_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\__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 } }
\int_step_inline:nnn \l__nicematrix_tmpc_tl \l_tmpa_tl
{
\use:e
@@ -8064,26 +8029,26 @@
\cs_new_protected:Npn \__nicematrix_stroke_borders_block:nnn #1 #2 #3
{
\dim_set_eq:NN \l__nicematrix_line_width_dim \arrayrulewidth
- \keys_set_known:nn { NiceMatrix / BlockBorders } { #1 }
+ \keys_set_known:nn { nicematrix / BlockBorders } { #1 }
\dim_compare:nNnTF \l__nicematrix_rounded_corners_dim > \c_zero_dim
{ \__nicematrix_error:n { borders~forbidden } }
{
\tl_clear_new:N \l__nicematrix_borders_tikz_tl
- \keys_set:nV
- { NiceMatrix / OnlyForTikzInBorders }
+ \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:
@@ -8105,7 +8070,7 @@
\clist_if_in:NnT \l__nicematrix_borders_clist { top }
{ \__nicematrix_stroke_horizontal:n \l__nicematrix_tmpc_tl }
}
-\keys_define:nn { NiceMatrix / OnlyForTikzInBorders }
+\keys_define:nn { nicematrix / OnlyForTikzInBorders }
{
tikz .code:n =
\cs_if_exist:NTF \tikzpicture
@@ -8156,27 +8121,29 @@
( \l_tmpa_dim , \pgf@y ) -- ( \l_tmpb_dim , \pgf@y ) ;
}
}
-\keys_define:nn { NiceMatrix / BlockBorders }
+\keys_define:nn { nicematrix / BlockBorders }
{
borders .clist_set:N = \l__nicematrix_borders_clist ,
rounded-corners .dim_set:N = \l__nicematrix_rounded_corners_dim ,
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
+ \keys_set_known:nnN { nicematrix / SpecialOffset } { ##1 } \l_tmpa_tl
\use:e { \exp_not:N \path [ \l_tmpa_tl ] }
(
[
xshift = \dim_use:N \l__nicematrix_offset_dim ,
yshift = - \dim_use:N \l__nicematrix_offset_dim
]
- #1 -| #2
+ #2 -| #3
)
rectangle
(
@@ -8184,14 +8151,17 @@
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 }
+\keys_define:nn { nicematrix / SpecialOffset }
{ offset .dim_set:N = \l__nicematrix_offset_dim }
+\cs_new_protected:Npn \__nicematrix_NullBlock:
+ { \__nicematrix_collect_options:n { \__nicematrix_NullBlock_i: } }
+\NewExpandableDocumentCommand \__nicematrix_NullBlock_i: { m m D < > { } +m }
+ { }
\cs_set_protected:Npn \__nicematrix_renew_matrix:
{
\RenewDocumentEnvironment { pmatrix } { }
@@ -8210,7 +8180,7 @@
{ \BNiceMatrix }
{ \endBNiceMatrix }
}
-\keys_define:nn { NiceMatrix / Auto }
+\keys_define:nn { nicematrix / Auto }
{
columns-type .tl_set:N = \l__nicematrix_columns_type_tl ,
columns-type .value_required:n = true ,
@@ -8221,7 +8191,7 @@
delimiters / color .value_required:n = true ,
delimiters / max-width .bool_set:N = \l__nicematrix_delimiters_max_width_bool ,
delimiters / max-width .default:n = true ,
- delimiters .code:n = \keys_set:nn { NiceMatrix / delimiters } { #1 } ,
+ delimiters .code:n = \keys_set:nn { nicematrix / delimiters } { #1 } ,
delimiters .value_required:n = true ,
rounded-corners .dim_set:N = \l__nicematrix_tab_rounded_corners_dim ,
rounded-corners .default:n = 4 pt
@@ -8232,7 +8202,7 @@
\cs_new_protected:Npn \__nicematrix_auto_nice_matrix:nnnnnn #1 #2 #3 #4 #5 #6
{
\group_begin:
- \keys_set_known:nnN { NiceMatrix / Auto } { #6 } \l_tmpa_tl
+ \keys_set_known:nnN { nicematrix / Auto } { #6 } \l_tmpa_tl
\use:e
{
\exp_not:N \begin { NiceArrayWithDelims } { #1 } { #2 }
@@ -8265,7 +8235,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 }
}
}
@@ -8291,7 +8261,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 }
@@ -8301,7 +8271,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 }
@@ -8336,7 +8306,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 }
}
{ }
@@ -8347,7 +8317,7 @@
{
\begin { minipage } { 20 cm }
\raggedleft
- \__nicematrix_math_toggle: #6 \__nicematrix_math_toggle:
+ \__nicematrix_math_toggle: \scan_stop: #6 \__nicematrix_math_toggle:
\end { minipage }
}
{ }
@@ -8425,7 +8395,7 @@
{ }
\endpgfpicture
}
-\keys_define:nn { NiceMatrix / sub-matrix }
+\keys_define:nn { nicematrix / sub-matrix }
{
extra-height .dim_set:N = \l__nicematrix_submatrix_extra_height_dim ,
extra-height .value_required:n = true ,
@@ -8446,14 +8416,14 @@
hvlines .meta:n = { hlines, vlines } ,
hvlines .value_forbidden:n = true
}
-\keys_define:nn { NiceMatrix }
+\keys_define:nn { nicematrix }
{
- SubMatrix .inherit:n = NiceMatrix / sub-matrix ,
- NiceArray / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- pNiceArray / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
- NiceMatrixOptions / sub-matrix .inherit:n = NiceMatrix / sub-matrix ,
+ SubMatrix .inherit:n = nicematrix / sub-matrix ,
+ NiceArray / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ pNiceArray / sub-matrix .inherit:n = nicematrix / sub-matrix ,
+ NiceMatrixOptions / sub-matrix .inherit:n = nicematrix / sub-matrix ,
}
-\keys_define:nn { NiceMatrix / SubMatrix }
+\keys_define:nn { nicematrix / SubMatrix }
{
delimiters / color .tl_set:N = \l__nicematrix_delimiters_color_tl ,
delimiters / color .value_required:n = true ,
@@ -8479,7 +8449,7 @@
{ \__nicematrix_error:n { Invalid~name } }
} ,
name .value_required:n = true ,
- rules .code:n = \keys_set:nn { NiceMatrix / rules } { #1 } ,
+ rules .code:n = \keys_set:nn { nicematrix / rules } { #1 } ,
rules .value_required:n = true ,
code .tl_set:N = \l__nicematrix_code_tl ,
code .value_required:n = true ,
@@ -8489,7 +8459,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 }
[
@@ -8511,12 +8481,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 } { . }
@@ -8562,7 +8532,7 @@
{ \__nicematrix_error:nn { Construct~too~large } { \SubMatrix } }
{
\str_clear_new:N \l__nicematrix_submatrix_name_str
- \keys_set:nn { NiceMatrix / SubMatrix } { #5 }
+ \keys_set:nn { nicematrix / SubMatrix } { #5 }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
\pgf@relevantforpicturesizefalse
@@ -8577,15 +8547,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
@@ -8626,8 +8596,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
@@ -8654,7 +8624,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 }
{
@@ -8671,7 +8641,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 }
{
@@ -8737,7 +8707,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
@@ -8761,8 +8731,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 } }
}
@@ -8813,6 +8783,7 @@
{
\nullfont
\c_math_toggle_token
+ \colorlet { current-color } { . }
\__nicematrix_color:o \l__nicematrix_delimiters_color_tl
\left .
\vcenter
@@ -8824,7 +8795,7 @@
}
\right #1
\tl_if_empty:nF { #3 } { _ { \smash { #3 } } }
- ^ { \smash { #4 } }
+ ^ { \color { current-color } \smash { #4 } }
\c_math_toggle_token
}
{ #2 }
@@ -8840,13 +8811,16 @@
\peek_remove_spaces:n
{ \__nicematrix_brace:nnnnn { #2 } { #3 } { #4 } { #1 , #5 } { over } }
}
-\keys_define:nn { NiceMatrix / Brace }
+\keys_define:nn { nicematrix / Brace }
{
left-shorten .bool_set:N = \l__nicematrix_brace_left_shorten_bool ,
left-shorten .default:n = true ,
+ left-shorten .value_forbidden:n = true ,
right-shorten .bool_set:N = \l__nicematrix_brace_right_shorten_bool ,
- shorten .meta:n = { left-shorten , right-shorten } ,
right-shorten .default:n = true ,
+ right-shorten .value_forbidden:n = true ,
+ shorten .meta:n = { left-shorten , right-shorten } ,
+ shorten .value_forbidden:n = true ,
yshift .dim_set:N = \l__nicematrix_brace_yshift_dim ,
yshift .value_required:n = true ,
yshift .initial:n = \c_zero_dim ,
@@ -8862,13 +8836,13 @@
{ \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 } }
}
{
\tl_clear:N \l_tmpa_tl
- \keys_set:nn { NiceMatrix / Brace } { #4 }
+ \keys_set:nn { nicematrix / Brace } { #4 }
\tl_if_empty:NF \l_tmpa_tl { \color { \l_tmpa_tl } }
\pgfpicture
\pgfrememberpicturepositiononpagetrue
@@ -8882,8 +8856,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 }
}
}
}
@@ -8903,8 +8878,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 }
}
}
}
@@ -8916,7 +8891,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
@@ -8943,8 +8918,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
{
@@ -8990,8 +8967,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:
@@ -9002,7 +8981,7 @@
\bool_new:N \l__nicematrix_not_empty_bool
\bool_new:N \l__nicematrix_empty_bool
-\keys_define:nn { NiceMatrix / TikzEveryCell }
+\keys_define:nn { nicematrix / TikzEveryCell }
{
not-empty .code:n =
\bool_lazy_or:nnTF
@@ -9026,7 +9005,7 @@
\IfPackageLoadedTF { tikz }
{
\group_begin:
- \keys_set:nn { NiceMatrix / TikzEveryCell } { #1 }
+ \keys_set:nn { nicematrix / TikzEveryCell } { #1 }
\tl_set:Nn \l_tmpa_tl { { #2 } }
\seq_map_inline:Nn \g__nicematrix_pos_of_blocks_seq
{ \__nicematrix_for_a_block:nnnnn ##1 }
@@ -9041,13 +9020,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
@@ -9063,8 +9042,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
}
}
}
@@ -9076,8 +9055,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 }
}
@@ -9087,76 +9066,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
@@ -9263,11 +9175,10 @@
footnote,~
footnotehyper,~
messages-for-Overleaf,~
- no-test-for-array,~
renew-dots,~and~
renew-matrix.
}
-\keys_define:nn { NiceMatrix / Package }
+\keys_define:nn { nicematrix / Package }
{
renew-dots .bool_set:N = \l__nicematrix_renew_dots_bool ,
renew-dots .value_forbidden:n = true ,
@@ -9276,11 +9187,10 @@
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 = \prg_do_nothing: ,
unknown .code:n = \__nicematrix_error:n { Unknown~key~for~package }
}
-\ProcessKeysOptions { NiceMatrix / Package }
+\ProcessKeysOptions { nicematrix / Package }
\__nicematrix_msg_new:nn { footnote~with~footnotehyper~package }
{
You~can't~use~the~option~'footnote'~because~the~package~
@@ -9321,16 +9231,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
@@ -9345,24 +9253,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:
{
@@ -9416,7 +9318,7 @@
~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).
+ ~(plus~the~potential~exterior~ones).~
This~error~is~fatal.
}
\__nicematrix_msg_new:nn { columns~not~used }
@@ -9631,12 +9533,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.\\
@@ -9763,8 +9659,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.
}
@@ -9964,9 +9859,10 @@
\c__nicematrix_available_keys_str
}
{
- The~available~keys~are~(in~alphabetic~order):~b,~B,~borders,~c,~draw,~fill,~
- hlines,~hvlines,~l,~line-width,~name,~opacity,~rounded-corners,~r,~
- respect-arraystretch,~t,~T,~tikz,~transparent~and~vlines.
+ The~available~keys~are~(in~alphabetic~order):~&-in-blocks,~ampersand-in-blocks,~
+ b,~B,~borders,~c,~draw,~fill,~hlines,~hvlines,~l,~line-width,~name,~
+ opacity,~rounded-corners,~r,~respect-arraystretch,~t,~T,~tikz,~transparent~
+ and~vlines.
}
\__nicematrix_msg_new:nnn { Unknown~key~for~Brace }
{
@@ -10078,7 +9974,9 @@
}
{
The~available~keys~are~(in~alphabetic~order):~
+ &-in-blocks,~
allow-duplicate-names,~
+ ampersand-in-blocks,~
caption-above,~
cell-space-bottom-limit,~
cell-space-limits,~
@@ -10131,6 +10029,8 @@
}
{
The~available~keys~are~(in~alphabetic~order):~
+ &-in-blocks,~
+ ampersand-in-blocks,~
b,~
baseline,~
c,~
@@ -10188,6 +10088,8 @@
}
{
The~available~keys~are~(in~alphabetic~order):~
+ &-in-blocks,~
+ ampersand-in-blocks,~
b,~
baseline,~
c,~
@@ -10248,6 +10150,8 @@
}
{
The~available~keys~are~(in~alphabetic~order):~
+ &-in-blocks,~
+ ampersand-in-blocks,~
b,~
baseline,~
c,~
diff --git a/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls b/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls
index f48b30f0c5c..d03ef8dda25 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-2024 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}[2024/11/09 v1.11 (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..f2dc355469b 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-2024 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}[2024/11/09 v1.11 (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,19 @@
}
\MFUaddmap{\examplesref}{\Examplesref}
+\newrobustcmd{\mExampleref}[1]{\Exampleref{#1}\examplemarginref{#1}}
+\newrobustcmd{\mexampleref}[1]{\exampleref{#1}\examplemarginref{#1}}
+
+\newrobustcmd{\examplemarginref}[1]{%
+ \marginpar{\footnotesize\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 +600,10 @@
\newcommand{\unlimited}{$\infty$}
+{\catcode`\^^I12\relax
+\gdef\nlctliteraltabchar{^^I}
+}
+
\newcommand{\fnsymmark}[1]{\rlap{#1}}
\newcommand{\asteriskmarker}{\textasteriskcentered}
@@ -643,17 +806,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 +830,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 +879,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}%
@@ -791,7 +980,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 +1025,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 +1040,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 +1139,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 +1177,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 +1308,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 +1334,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 +1409,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 +1435,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 +1459,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 +1476,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 +1522,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 +1535,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 +1600,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 +1610,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 +1626,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 +1645,8 @@ halign upper=flush left,halign lower=justify,
\fi
\fi
}%
- \par\egroup\noindent
+ \nlctpostexampletitle
+ \egroup\noindent
}%
{%
\nlctexampletitlebox{\example@tex@title}\hfill
@@ -1280,11 +1654,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 +1743,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 +1764,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 +1780,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 +1841,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 +1861,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 +1949,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 +1982,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>}%
@@ -1593,6 +2021,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 +2085,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 +2126,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 +2168,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 +2245,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 +2306,30 @@ halign upper=flush left,halign lower=justify,
\glsxtrifhasfield{syntax}{opt.#2}{\dequals\glscurrentfieldvalue}{}}%
}
+\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{}%
+ \ifdefempty\nlctmodifierlist
+ {%
+ \ifdefempty\nlctvariantlist
+ {}%
+ {\tagsep\summarytagfmt{\nlctvarianttag}\nlctvariantlist\relax
+ \let\tagsep\space
+ }%
+ }%
{\tagsep\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist\relax
\let\tagsep\space
}%
@@ -1858,6 +2339,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 +2388,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 +2554,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}%
@@ -2086,6 +2617,7 @@ halign upper=flush left,halign lower=justify,
{\ifdefempty\postnote{}{\preto\postnote{\hfill}}}%
\postnote
\end{settingsbox}%
+ \egroup
\noindent\ignorespaces
}
@@ -2314,6 +2846,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 +2856,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 +2868,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 +2891,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 +2909,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 +2953,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 +3028,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 +3068,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 +3090,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,
@@ -2730,6 +3285,8 @@ halign upper=flush left,halign lower=justify,
}
\newcommand{\summaryentrycommand}[1]{%
+ \bgroup
+ \def\explTFsuffix{\@explboolsyntaxfmt{TF}}%
\textbf{\linkedentryname{#1}}%
\syntax{#1}%
\glsxtrifhasfield{initvalue}{#1}%
@@ -2739,12 +3296,31 @@ halign upper=flush left,halign lower=justify,
}%
{%
\gathermodifiers{#1}%
- \ifdefempty\nlctmodifierlist{}%
+ \ifdefempty\nlctmodifierlist
+ {%
+ \gathervariants{#1}%
+ \ifdefempty\nlctvariantlist
+ {}%
+ {%
+ \hfill\summarytagfmt{\nlctvarianttag}\nlctvariantlist
+ \gdef\summaryentry@post@fill{\quad }%
+ }%
+ }%
{%
\hfill\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}
@@ -2803,7 +3379,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 +3527,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 +3720,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 +3744,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/ocgx2/ocgbase.sty b/Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty
index bf4edf432b7..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{2022/08/04}
-\def\g@ocgbase@version@tl{0.22}
+\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}
@@ -167,10 +167,8 @@
%global Order list
\tl_new:N\l_ocgbase_ocgorderentry_tl
\tl_new:N\l_ocgbase_ocgorder_tl
- \tl_if_exist:cT{g_ocgbase_nd_0_chld_tl}{
- \ocgbase_build_order:Nn\l_ocgbase_ocgorder_tl{
- \tl_use:c{g_ocgbase_nd_0_chld_tl}
- }
+ \seq_if_empty:NF\g_ocgbase_order_root_seq{
+ \ocgbase_build_order:Nn\l_ocgbase_ocgorder_tl{root}
}
\tl_if_empty:NF\l_ocgbase_ocgorder_tl{
\pbs_pdfobj:nnn{}{array}{\l_ocgbase_ocgorder_tl}
@@ -228,98 +226,45 @@
\cs_new_nopar:Nn\ocgbase_last_ocg:{\g_ocgbase_last_ocg_tl}
-\int_new:N\g_ocgbase_nd_int %node id
-\seq_new:N\g_ocgbase_tree_nd_stack_seq %stack with open ocg node id
-\seq_new:N\g_ocgbase_tree_ocg_stack_seq %stack with open ocg obj number
-\seq_gpush:Nn\g_ocgbase_tree_nd_stack_seq{0} %push root node
-\seq_gpush:Nn\g_ocgbase_tree_ocg_stack_seq{null} %push root node
+\seq_new:N\g_ocgbase_open_ocg_seq %stack with open ocg ref
+\seq_new:N\g_ocgbase_order_root_seq %seq taking ocg ref /Order root
-%macro for starting OCG object (and nested children) insertion into Order
+%macro for starting OCG object (and nested children) insertion into order
%hierarchy (shown as tree structure in the viewers `Layers' tab
\cs_new_protected_nopar:Nn\ocgbase_tree_node_begin:n{ % #1: OCG obj
- %get the parent node from stack
- \seq_get:NN\g_ocgbase_tree_nd_stack_seq\l__ocgbase_prnt_tl
- \tl_if_exist:cTF{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}{
- %parent has >=1 children (i. e. my older siblings), traverse them
- \tl_set:Nv\l__ocgbase_prev_sbl_tl{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}
- \tl_set:Nx\l__ocgbase_cur_ocg_tl{#1}
- \ocgbase_traverse_siblings:NN\l__ocgbase_prev_sbl_tl\l__ocgbase_cur_ocg_tl
- \str_if_empty:NTF\l__ocgbase_cur_ocg_tl{
- %I am the first child of my parent to refer to OCG #1
- \int_gincr:N\g_ocgbase_nd_int
- \tl_set:Nx\l__ocgbase_cur_nd_tl{\int_use:N\g_ocgbase_nd_int}
- %set myself as my next-older sibling's `next sibling'
- \tl_gset:cV{
- g_ocgbase_nd_\l__ocgbase_prev_sbl_tl _sbl_tl}\l__ocgbase_cur_nd_tl
- }{
- %there is already a sibling referring to OCG #1; no new node needs be
- %created
- \tl_set:NV\l__ocgbase_cur_nd_tl\l__ocgbase_prev_sbl_tl
- }
- }{
- %I am the very first child of my parent
- \int_gincr:N\g_ocgbase_nd_int
- \tl_set:Nx\l__ocgbase_cur_nd_tl{\int_use:N\g_ocgbase_nd_int}
- %set myself as my parent's first child
- \tl_gset:cV{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}\l__ocgbase_cur_nd_tl
+ % get parent (either currently open ocg or root)
+ \seq_get:NNF\g_ocgbase_open_ocg_seq\l__ocgbase_prnt_tl{
+ \tl_set:Nn\l__ocgbase_prnt_tl{root}
}
- %set the OCG I am referring to
- \tl_gset:cx{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _ocg_tl}{#1}
- %push current node and its associated OCG obj on the stacks
- \seq_gpush:NV\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
- \seq_gpush:Nx\g_ocgbase_tree_ocg_stack_seq{#1}
-}
-
-%macro that ends insertion of OCG and sub-OCGs into Order tree
-\cs_new_protected:Nn\ocgbase_tree_node_end:{
- \seq_get:NN\g_ocgbase_tree_nd_stack_seq\l_tempa_tl
- \seq_get:NN\g_ocgbase_tree_ocg_stack_seq\l_tempb_tl
- \str_if_eq:eeT{
- \cs_if_exist_use:c{g_ocgbase_nd_\l_tempa_tl _ocg_tl}
- }{
- \l_tempb_tl
- }{
- \seq_gpop:NN\g_ocgbase_tree_nd_stack_seq\g_trash_tl
- \seq_gpop:NN\g_ocgbase_tree_ocg_stack_seq\g_trash_tl
+ %push current ocg ref on stack with open ocgs
+ \seq_gpush:Nx\g_ocgbase_open_ocg_seq{#1}
+ %create seq for current ocg if not yet existing and
+ %append ocg ref to its parent seq
+ \seq_if_exist:cF{g_ocgbase_order_#1_seq}{
+ \seq_new:c{g_ocgbase_order_#1_seq}
+ \seq_gput_right:cx{g_ocgbase_order_ \l__ocgbase_prnt_tl _seq}{#1}
}
}
-% helper macro (recursive); traverses siblings to find either
-% the node which refers to the same OCG (arg #2 remains un-modified), or
-% the last sibling inserted (arg #2 is cleared);
-% the node id of the sibling found is returned in arg #1
-\cs_new_protected:Nn\ocgbase_traverse_siblings:NN{
- % #1: current node (in/out), #2: OCG obj (in/out)
- \str_if_eq:eeF{#2}{\tl_use:c{g_ocgbase_nd_#1_ocg_tl}}{
- \tl_if_exist:cTF{g_ocgbase_nd_#1_sbl_tl}{
- \tl_set:Nv#1{g_ocgbase_nd_#1_sbl_tl}
- \ocgbase_traverse_siblings:NN#1#2
- }{
- \tl_clear:N#2
- }
- }
+%macro that ends insertion of current OCG into order tree
+\cs_new_protected:Nn\ocgbase_tree_node_end:{
+ %pop top ocg ref from stack with open ocgs
+ \seq_gpop:NN\g_ocgbase_open_ocg_seq\g_trash_tl
}
+%macro that builds global ocg order from hierarchy and saves it into tl var
\cs_new_protected_nopar:Nn\ocgbase_build_order:Nn{
% (recursive macro)
% #1: tl var to which the OCG order is written (output)
- % #2: starting node id (input; usually `1')
- \tl_set:Nx\l__ocgbase_cur_nd_tl{#2}
- % first, append the OCG obj the current node is referring to
- \tl_put_right:Nx#1{~\tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _ocg_tl}}
- % second, traverse the tree starting with the first child node
- \tl_if_exist:cT{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _chld_tl}{
- \seq_gpush:NV\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
- \tl_put_right:Nn#1{~[}
- \ocgbase_build_order:Nn#1{
- \tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _chld_tl}}
- \tl_put_right:Nn#1{~]}
- \seq_gpop:NN\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
- }
- % third, traverse the tree starting with the next sibling node
- \tl_if_exist:cT{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _sbl_tl}{
- \ocgbase_build_order:Nn#1{
- \tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _sbl_tl}}
+ % #2: starting node (input; usually `root')
+ \seq_map_inline:cn{g_ocgbase_order_#2_seq}{
+ % first, append ocg ref to result tl var
+ \tl_put_right:Nx#1{~##1}
+ \seq_if_empty:cF{g_ocgbase_order_##1_seq}{
+ \tl_put_right:Nn#1{~[}
+ \ocgbase_build_order:Nn#1{##1}
+ \tl_put_right:Nn#1{~]}
+ }
}
}
@@ -433,7 +378,7 @@
% \ocgbase@tree@node@end
% #1: OCG PDF object
% macro pair (begin and end) for inserting OCG object and its children
-% into Order hierarchy (shown as tree structure in the viewers `Layers' tab
+% into order hierarchy (shown as tree structure in the viewers `Layers' tab
%
% --------
%
@@ -479,8 +424,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@ocgbase@date@tl{2022/08/04}
-\def\g@ocgbase@version@tl{0.22}
+\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}
@@ -535,25 +480,23 @@
\AddToHook{shipout/lastpage}{
\tl_if_empty:NF\g_ocgbase_ocgs_tl{
%global OCG array
- \pbs_pdfobj:nnn{}{array}{\g_ocgbase_ocgs_tl}
- \tl_set:Nx\l_ocgbase_ocgarray_tl{\pbs_pdflastobj:}
- \tl_new:N\l_ocgbase_offocgentry_tl
+ \pdf_object_unnamed_write:ne{array}{\g_ocgbase_ocgs_tl}
+ \tl_set:Nx\l_ocgbase_ocgarray_tl{\pdf_object_ref_last:}
%global OFF list
+ \tl_new:N\l_ocgbase_offocgentry_tl
\seq_if_empty:NF\g_ocgbase_offocgs_seq{
- \pbs_pdfobj:nnn{}{array}{\seq_use:Nn\g_ocgbase_offocgs_seq{~}}
- \tl_set:Nx\l_ocgbase_offocgentry_tl{/OFF~\pbs_pdflastobj:}
+ \pdf_object_unnamed_write:ne{array}{\seq_use:Nn\g_ocgbase_offocgs_seq{~}}
+ \tl_set:Nx\l_ocgbase_offocgentry_tl{/OFF~\pdf_object_ref_last:}
}
%global Order list
\tl_new:N\l_ocgbase_ocgorderentry_tl
\tl_new:N\l_ocgbase_ocgorder_tl
- \tl_if_exist:cT{g_ocgbase_nd_0_chld_tl}{
- \ocgbase_build_order:Nn\l_ocgbase_ocgorder_tl{
- \tl_use:c{g_ocgbase_nd_0_chld_tl}
- }
+ \seq_if_empty:NF\g_ocgbase_order_root_seq{
+ \ocgbase_build_order:Nn\l_ocgbase_ocgorder_tl{root}
}
\tl_if_empty:NF\l_ocgbase_ocgorder_tl{
- \pbs_pdfobj:nnn{}{array}{\l_ocgbase_ocgorder_tl}
- \tl_set:Nx\l_ocgbase_ocgorderentry_tl{/Order~\pbs_pdflastobj:}
+ \pdf_object_unnamed_write:ne{array}{\l_ocgbase_ocgorder_tl}
+ \tl_set:Nx\l_ocgbase_ocgorderentry_tl{/Order~\pdf_object_ref_last:}
}
%generate RBGroups entry (radio button groups)
\tl_new:N\l_ocgbase_rbtn_groups_tl
@@ -566,16 +509,19 @@
}
\tl_new:N\l_ocgbase_rbgroupsentry_tl
\tl_if_empty:NF\l_ocgbase_rbtn_groups_tl{
- \pbs_pdfobj:nnn{}{array}{\l_ocgbase_rbtn_groups_tl}
- \tl_set:Nx\l_ocgbase_rbgroupsentry_tl{/RBGroups~\pbs_pdflastobj:}
+ \pdf_object_unnamed_write:ne{array}{\l_ocgbase_rbtn_groups_tl}
+ \tl_set:Nx\l_ocgbase_rbgroupsentry_tl{/RBGroups~\pdf_object_ref_last:}
}
\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
@@ -586,12 +532,10 @@
}
%macro for inserting new OCG object
-\cs_generate_variant:Nn\pdf_object_new:nn{xn}
-\cs_generate_variant:Nn\pdf_object_write:nn{xx}
\int_new:N\g_ocgbase_int
\cs_new_protected_nopar:Nn\ocgbase_new_ocg:nnn{
- \pdf_object_new:xn{g_object_\int_use:N\g_ocgbase_int _pdf}{dict}
- \pdf_object_write:xx{g_object_\int_use:N\g_ocgbase_int _pdf}{
+ \exp_args:Ne\pdf_object_new:n{g_object_\int_use:N\g_ocgbase_int _pdf}
+ \exp_args:Neee\pdf_object_write:nnn{g_object_ \int_use:N\g_ocgbase_int _pdf}{dict}{
/Type/OCG/Name~(#1)~\str_if_eq:eeF{#2}{}{/Usage<<#2>>}
}
\tl_gput_right:Nx\g_ocgbase_ocgs_tl{~\pdf_object_ref_last:}
@@ -612,98 +556,45 @@
\cs_new_nopar:Nn\ocgbase_last_ocg:{\g_ocgbase_last_ocg_tl}
-\int_new:N\g_ocgbase_nd_int %node id
-\seq_new:N\g_ocgbase_tree_nd_stack_seq %stack with open ocg node id
-\seq_new:N\g_ocgbase_tree_ocg_stack_seq %stack with open ocg obj number
-\seq_gpush:Nn\g_ocgbase_tree_nd_stack_seq{0} %push root node
-\seq_gpush:Nn\g_ocgbase_tree_ocg_stack_seq{null} %push root node
+\seq_new:N\g_ocgbase_open_ocg_seq %stack with open ocg ref
+\seq_new:N\g_ocgbase_order_root_seq %seq taking ocg ref /Order root
-%macro for starting OCG object (and nested children) insertion into Order
+%macro for starting OCG object (and nested children) insertion into order
%hierarchy (shown as tree structure in the viewers `Layers' tab
\cs_new_protected_nopar:Nn\ocgbase_tree_node_begin:n{ % #1: OCG obj
- %get the parent node from stack
- \seq_get:NN\g_ocgbase_tree_nd_stack_seq\l__ocgbase_prnt_tl
- \tl_if_exist:cTF{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}{
- %parent has >=1 children (i. e. my older siblings), traverse them
- \tl_set:Nv\l__ocgbase_prev_sbl_tl{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}
- \tl_set:Nx\l__ocgbase_cur_ocg_tl{#1}
- \ocgbase_traverse_siblings:NN\l__ocgbase_prev_sbl_tl\l__ocgbase_cur_ocg_tl
- \str_if_empty:NTF\l__ocgbase_cur_ocg_tl{
- %I am the first child of my parent to refer to OCG #1
- \int_gincr:N\g_ocgbase_nd_int
- \tl_set:Nx\l__ocgbase_cur_nd_tl{\int_use:N\g_ocgbase_nd_int}
- %set myself as my next-older sibling's `next sibling'
- \tl_gset:cV{
- g_ocgbase_nd_\l__ocgbase_prev_sbl_tl _sbl_tl}\l__ocgbase_cur_nd_tl
- }{
- %there is already a sibling referring to OCG #1; no new node needs be
- %created
- \tl_set:NV\l__ocgbase_cur_nd_tl\l__ocgbase_prev_sbl_tl
- }
- }{
- %I am the very first child of my parent
- \int_gincr:N\g_ocgbase_nd_int
- \tl_set:Nx\l__ocgbase_cur_nd_tl{\int_use:N\g_ocgbase_nd_int}
- %set myself as my parent's first child
- \tl_gset:cV{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}\l__ocgbase_cur_nd_tl
+ % get parent (either currently open ocg or root)
+ \seq_get:NNF\g_ocgbase_open_ocg_seq\l__ocgbase_prnt_tl{
+ \tl_set:Nn\l__ocgbase_prnt_tl{root}
}
- %set the OCG I am referring to
- \tl_gset:cx{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _ocg_tl}{#1}
- %push current node and its associated OCG obj on the stacks
- \seq_gpush:NV\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
- \seq_gpush:Nx\g_ocgbase_tree_ocg_stack_seq{#1}
-}
-
-%macro that ends insertion of OCG and sub-OCGs into Order tree
-\cs_new_protected:Nn\ocgbase_tree_node_end:{
- \seq_get:NN\g_ocgbase_tree_nd_stack_seq\l_tempa_tl
- \seq_get:NN\g_ocgbase_tree_ocg_stack_seq\l_tempb_tl
- \str_if_eq:eeT{
- \cs_if_exist_use:c{g_ocgbase_nd_\l_tempa_tl _ocg_tl}
- }{
- \l_tempb_tl
- }{
- \seq_gpop:NN\g_ocgbase_tree_nd_stack_seq\g_trash_tl
- \seq_gpop:NN\g_ocgbase_tree_ocg_stack_seq\g_trash_tl
+ %push current ocg ref on stack with open ocgs
+ \seq_gpush:Nx\g_ocgbase_open_ocg_seq{#1}
+ %create seq for current ocg if not yet existing and
+ %append ocg ref to its parent seq
+ \seq_if_exist:cF{g_ocgbase_order_#1_seq}{
+ \seq_new:c{g_ocgbase_order_#1_seq}
+ \seq_gput_right:cx{g_ocgbase_order_ \l__ocgbase_prnt_tl _seq}{#1}
}
}
-% helper macro (recursive); traverses siblings to find either
-% the node which refers to the same OCG (arg #2 remains un-modified), or
-% the last sibling inserted (arg #2 is cleared);
-% the node id of the sibling found is returned in arg #1
-\cs_new_protected:Nn\ocgbase_traverse_siblings:NN{
- % #1: current node (in/out), #2: OCG obj (in/out)
- \str_if_eq:eeF{#2}{\tl_use:c{g_ocgbase_nd_#1_ocg_tl}}{
- \tl_if_exist:cTF{g_ocgbase_nd_#1_sbl_tl}{
- \tl_set:Nv#1{g_ocgbase_nd_#1_sbl_tl}
- \ocgbase_traverse_siblings:NN#1#2
- }{
- \tl_clear:N#2
- }
- }
+%macro that ends insertion of current OCG into order tree
+\cs_new_protected:Nn\ocgbase_tree_node_end:{
+ %pop top ocg ref from stack with open ocgs
+ \seq_gpop:NN\g_ocgbase_open_ocg_seq\g_trash_tl
}
+%macro that builds global ocg order from hierarchy and saves it into tl var
\cs_new_protected_nopar:Nn\ocgbase_build_order:Nn{
% (recursive macro)
% #1: tl var to which the OCG order is written (output)
- % #2: starting node id (input; usually `1')
- \tl_set:Nx\l__ocgbase_cur_nd_tl{#2}
- % first, append the OCG obj the current node is referring to
- \tl_put_right:Nx#1{~\tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _ocg_tl}}
- % second, traverse the tree starting with the first child node
- \tl_if_exist:cT{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _chld_tl}{
- \seq_gpush:NV\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
- \tl_put_right:Nn#1{~[}
- \ocgbase_build_order:Nn#1{
- \tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _chld_tl}}
- \tl_put_right:Nn#1{~]}
- \seq_gpop:NN\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
- }
- % third, traverse the tree starting with the next sibling node
- \tl_if_exist:cT{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _sbl_tl}{
- \ocgbase_build_order:Nn#1{
- \tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _sbl_tl}}
+ % #2: starting node (input; usually `root')
+ \seq_map_inline:cn{g_ocgbase_order_#2_seq}{
+ % first, append ocg ref to result tl var
+ \tl_put_right:Nx#1{~##1}
+ \seq_if_empty:cF{g_ocgbase_order_##1_seq}{
+ \tl_put_right:Nn#1{~[}
+ \ocgbase_build_order:Nn#1{##1}
+ \tl_put_right:Nn#1{~]}
+ }
}
}
@@ -740,7 +631,7 @@
% OC-marked content
\cs_new_protected_nopar:Nn\ocgbase_oc_bdc:n{\pbs_pdfbdc:nn{OC}{#1}}
-\cs_new_protected_nopar:Nn\ocgbase_oc_emc:{\pbs_pdfemc:}
+\cs_new_eq:NN\ocgbase_oc_emc:\pbs_pdfemc:
%stack of PDF obj references of currently open OCGs
\seq_new:N\g_ocgbase_open_stack_seq
diff --git a/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty b/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty
index a1081f88ac5..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/03/18}
- \def\g@ocgxii@version@tl{0.57}
+ \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/03/18}
-\def\g@ocgxii@version@tl{0.57}
+\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}
@@ -1810,8 +1810,8 @@
\cs_set_eq:NN\And \ocgxii_protected_dummy_cs:n
\cs_set_eq:NN\Or \ocgxii_protected_dummy_cs:n
\ocgxii_ocmd_read_visbility:xN{#2}\l_ocgxii_ocmd_visibility_tl
- \pdf_object_new:xn{g_object_\int_use:N\g_ocgbase_int _pdf}{dict}
- \pdf_object_write:xx{g_object_\int_use:N\g_ocgbase_int _pdf}{
+ \exp_args:Ne\pdf_object_new:n{g_object_\int_use:N\g_ocgbase_int _pdf}
+ \exp_args:Neee\pdf_object_write:nnn{g_object_\int_use:N\g_ocgbase_int _pdf}{dict}{
/Type/OCMD\l_ocgxii_ocmd_visibility_tl
}
\tl_gset:cx{g_pbs_objname_\pdf_object_ref_last: _tl}{
@@ -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/orcidlink/orcidlink.sty b/Master/texmf-dist/tex/latex/orcidlink/orcidlink.sty
index 93191be3eee..cf8ba2af4a1 100644
--- a/Master/texmf-dist/tex/latex/orcidlink/orcidlink.sty
+++ b/Master/texmf-dist/tex/latex/orcidlink/orcidlink.sty
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2019-2023 by Leo C. Stein <leo.stein@gmail.com>
+%% Copyright (C) 2019-2024 by Leo C. Stein <leo.stein@gmail.com>
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,10 +20,11 @@
%%
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{orcidlink}
- [2023/12/30 v1.0.5 Linked ORCiD logo macro package]
+ [2024/06/26 v1.1.0 Support ORCID's three different ID formats.]
-%% All I did was package up Milo's code on TeX.SE,
-%% see https://tex.stackexchange.com/a/445583/34063
+%% This started out as Milo's code on TeX.SE,
+%% see https://tex.stackexchange.com/a/445583/34063.
+%% It has since been expanded with more commands.
\RequirePackage{hyperref}
\RequirePackage{tikz}
@@ -54,16 +55,23 @@
\tikzset{external/export next=false}\else\fi%
}
-\DeclareRobustCommand\orcidlink[1]{%
+\newcommand{\orcidlogo}{%
\texorpdfstring{%
\setlength{\@curXheight}{\fontcharht\font`X}%
-\href{https://orcid.org/#1}{\XeTeXLinkBox{\mbox{%
+\XeTeXLinkBox{%
\@preventExternalization%
\begin{tikzpicture}[yscale=-\@OrigHeightRecip*\@curXheight,
xscale=\@OrigHeightRecip*\@curXheight,transform shape]
\pic{orcidlogo};
\end{tikzpicture}%
-}}}}{}}
+}}{}}
+
+\DeclareRobustCommand\orcidlinkX[3]{\href{https://orcid.org/#2}{%
+\ifstrempty{#1}{}{#1\,}\orcidlogo\ifstrempty{#3}{}{\,#3}}}
+\newcommand{\orcidlinkf}[1]{\orcidlinkX{}{#1}{https://orcid.org/#1}}
+\newcommand{\orcidlinkc}[1]{\orcidlinkX{}{#1}{#1}}
+\newcommand{\orcidlinki}[2]{\orcidlinkX{#1}{#2}{}}
+\newcommand{\orcidlink}[1]{\orcidlinkX{}{#1}{}}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty b/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty
index bb79723d21a..5f6cd304105 100644
--- a/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty
+++ b/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.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{OutilsGeomTikz}[2023/12/13 v0.1.5 Outils geometriques en TikZ]
+\ProvidesPackage{OutilsGeomTikz}[2024/08/29 v0.1.6 Outils geometriques en TikZ]
+% 0.1.6 Correction de bugs avec pdflatex + amélioration de la gestion des rotations/échelles des labels (tks Cyril I. ^^)
% 0.1.5 Modification de la graduation intérieure pour les rapporteurs 180°
% 0.1.4 Possibilité de positionner les outils avec deux points (angle calculé automatiquement)
% 0.1.3 Ajout du pourcenteur
@@ -60,7 +61,8 @@
Origine=\xdef\REGLposOrigin{#1},%
Rotation=\def\REGLangle{#1},%
Opacite=\def\REGLopac{#1},%
- PosVal=\def\REGLposval{#1}
+ PosVal=\def\REGLposval{#1},%
+ EchelleValeurs=\def\REGLechlabel{#1}
}
\setKVdefault[RegleGeom]{%
@@ -74,7 +76,8 @@
AfficheValeurs=true,%
Fond=false,%
Opacite=0.5,%
- PosVal=m
+ PosVal=m,%
+ EchelleValeurs=0.8
}
\NewDocumentCommand{\tkzRegle}{ O{} }{%
@@ -88,7 +91,7 @@
}{}%
\xdef\REGLlongueur{\fpeval{max(3,\REGLlongueur)}}%valeurs mini
\xdef\REGLlargeur{\fpeval{max(1.5,\REGLlargeur)}}
- \begin{scope}[shift={(\REGLposOrigin)},rotate=\REGLangle,scale=\REGLechelle]
+ \begin{scope}[shift={(\REGLposOrigin)},rotate=\REGLangle,scale=\REGLechelle,transform shape]
\ifboolKV[RegleGeom]{Fond}
{%
\begin{scope}
@@ -104,13 +107,13 @@
\ifboolKV[RegleGeom]{AfficheValeurs}%
{%
\IfSubStr{\REGLposval}{h}
- {\foreach \i in {0,1,...,\REGLlongueur} \draw[\REGLcouleur] (\i,{-0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLangle,scale={0.8*\REGLechelle},font=\small,below] {$\i$} ;}
+ {\foreach \i in {0,1,...,\REGLlongueur} {\draw[\REGLcouleur] (\i,{-0.5}) node[inner sep=1pt,outer sep=1pt,scale={\REGLechlabel},font=\small,below] {$\i$} ;}}
{}
\IfSubStr{\REGLposval}{m}
- {\foreach \i in {0,1,...,\REGLlongueur} \draw[\REGLcouleur] (\i,{-0.5*\REGLlargeur}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLangle,scale={0.8*\REGLechelle},font=\small] {$\i$} ;}
+ {\foreach \i in {0,1,...,\REGLlongueur} {\draw[\REGLcouleur] (\i,{-0.5*\REGLlargeur}) node[inner sep=1pt,outer sep=1pt,scale={\REGLechlabel},font=\small] {$\i$} ;}}
{}
\IfSubStr{\REGLposval}{b}
- {\foreach \i in {0,1,...,\REGLlongueur} \draw[\REGLcouleur] (\i,{-\REGLlargeur+0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLangle,scale={0.8*\REGLechelle},font=\small,above] {\rotatebox{180}{$\fpeval{trunc(\REGLlongueur)-\i}$}} ;}
+ {\foreach \i in {0,1,...,\REGLlongueur} {\draw[\REGLcouleur] (\i,{-\REGLlargeur+0.5}) node[inner sep=1pt,outer sep=1pt,scale={\REGLechlabel},font=\small,above] {\rotatebox{180}{$\fpeval{trunc(\REGLlongueur)-\i}$}} ;}}
{}
}%
{}%
@@ -126,7 +129,8 @@
CouleurFond=\def\REGLREPcouleurfond{#1},%
Origine=\def\REGLREPposOrigin{#1},%
Rotation=\def\REGLREPangle{#1},%
- Opacite=\def\REGLREPopac{#1}
+ Opacite=\def\REGLREPopac{#1},%
+ EchelleValeurs=\def\REGLREPechlabel{#1}
}
\setKVdefault[RegleRepereGeom]{%
@@ -140,7 +144,8 @@
AfficheValeurs=true,%
Fond=false,%
Opacite=0.5,%
- Retourne=false
+ Retourne=false,%
+ EchelleValeurs=0.8
}
\NewDocumentCommand{\tkzRegleRepere}{ O{} }{%
@@ -154,7 +159,7 @@
\pgfmathanglebetweenpoints{\pgfpointanchor{\REGLREPposOrigin}{center}}{\pgfpointanchor{\tmppointdeux}{center}}%
\edef\REGLREPangle{\pgfmathresult}%
}{}%
- \begin{scope}[shift={(\REGLREPposOrigin)},rotate=\REGLREPangle,scale=\REGLREPechelle]
+ \begin{scope}[shift={(\REGLREPposOrigin)},rotate=\REGLREPangle,scale=\REGLREPechelle,transform shape]
%bases de la règle-repère
\ifboolKV[RegleRepereGeom]{Fond}%
{\draw[draw=none,fill=\REGLREPcouleurfond!10!white,fill opacity=\REGLREPopac,rounded corners] (-0.5,0) rectangle++ ({\REGLREPlongueur+1},{-\REGLREPlargeur}) ;}%
@@ -175,12 +180,12 @@
{%
\ifboolKV[RegleRepereGeom]{Retourne}%
{%
- {\foreach \i in {0,1,...,\REGLREPlongueur} \draw[\REGLREPcouleur] (\i,{-0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLREPangle,scale={0.8*\REGLREPechelle},font=\small,below] {$\fpeval{-trunc(0.5*\REGLREPlongueur)+\i}$} ;}
- {\foreach \i in {0,1,...,\REGLREPlongueur} \draw[\REGLREPcouleur] (\i,{-\REGLREPlargeur+0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLREPangle,scale={0.8*\REGLREPechelle},font=\small,above] {\rotatebox{180}{$\inteval{\REGLREPlongueur-\i}$}} ;}
+ {\foreach \i in {0,1,...,\REGLREPlongueur} {\draw[\REGLREPcouleur] (\i,{-0.5}) node[inner sep=1pt,outer sep=1pt,scale={\REGLREPechlabel},font=\small,below] {$\fpeval{-trunc(0.5*\REGLREPlongueur)+\i}$} ;}}
+ {\foreach \i in {0,1,...,\REGLREPlongueur} {\draw[\REGLREPcouleur] (\i,{-\REGLREPlargeur+0.5}) node[inner sep=1pt,outer sep=1pt,scale={\REGLREPechlabel},font=\small,above] {\rotatebox{180}{$\inteval{\REGLREPlongueur-\i}$}} ;}}
}%
{%
- {\foreach \i in {0,1,...,\REGLREPlongueur} \draw[\REGLREPcouleur] (\i,{-0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLREPangle,scale={0.8*\REGLREPechelle},font=\small,below] {$\i$} ;}
- {\foreach \i in {0,1,...,\REGLREPlongueur} \draw[\REGLREPcouleur] (\i,{-\REGLREPlargeur+0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLREPangle,scale={0.8*\REGLREPechelle},font=\small,above] {\rotatebox{180}{$\fpeval{trunc(0.5*\REGLREPlongueur)-\i}$}} ;}
+ {\foreach \i in {0,1,...,\REGLREPlongueur} {\draw[\REGLREPcouleur] (\i,{-0.5}) node[inner sep=1pt,outer sep=1pt,scale={\REGLREPechlabel},font=\small,below] {$\i$} ;}}
+ {\foreach \i in {0,1,...,\REGLREPlongueur} {\draw[\REGLREPcouleur] (\i,{-\REGLREPlargeur+0.5}) node[inner sep=1pt,outer sep=1pt,scale={\REGLREPechlabel},font=\small,above] {\rotatebox{180}{$\fpeval{trunc(0.5*\REGLREPlongueur)-\i}$}} ;}}
}%
}
{}%
@@ -196,7 +201,8 @@
CouleurFond=\def\REQcouleurfond{#1},%
Origine=\def\REQposOrigin{#1},%
Rotation=\def\REQangle{#1},%
- Opacite=\def\REQopac{#1}
+ Opacite=\def\REQopac{#1},%
+ EchelleValeurs=\def\REQechlabel{#1}
}
\setKVdefault[RequerreGeom]{%
@@ -209,7 +215,8 @@
Rotation=0,%
AfficheValeurs=true,%
Fond=false,%
- Opacite=0.5
+ Opacite=0.5,%
+ EchelleValeurs=0.8
}
\NewDocumentCommand{\tkzRequerre}{ O{} }{%
@@ -223,7 +230,7 @@
\pgfmathanglebetweenpoints{\pgfpointanchor{\REQposOrigin}{center}}{\pgfpointanchor{\tmppointdeux}{center}}%
\edef\REQangle{\pgfmathresult}%
}{}%
- \begin{scope}[shift={(\REQposOrigin)},rotate=\REQangle,scale=\REQechelle]
+ \begin{scope}[shift={(\REQposOrigin)},rotate=\REQangle,scale=\REQechelle,transform shape]
\ifboolKV[RequerreGeom]{Fond}
{
\fill[draw=none,rounded corners,fill=\REQcouleurfond!10!white,fill opacity=\REQopac] ({-\REQlongueur*0.5},0) rectangle ({\REQlongueur*0.5},{-\REQlargeur}) ;
@@ -243,10 +250,10 @@
\end{scope}
\ifboolKV[RequerreGeom]{AfficheValeurs}%
{%
- \draw[\REQcouleur] (0,-0.5) node[inner sep=1pt,outer sep=1pt,rotate=\REQangle,scale={0.8*\REQechelle},font=\small,below] {$0$} ;
+ \draw[\REQcouleur] (0,-0.5) node[inner sep=1pt,outer sep=1pt,scale={\REQechlabel},font=\small,below] {$0$} ;
\foreach \i in {1,2,...,\fpeval{0.5*\REQlongueur-0.5}}{%
- \draw[\REQcouleur] (\i,-0.5) node[inner sep=1pt,outer sep=1pt,rotate=\REQangle,scale={0.8*\REQechelle},font=\small,below] {$\i$} ;
- \draw[\REQcouleur] (-\i,-0.5) node[inner sep=1pt,outer sep=1pt,rotate=\REQangle,scale={0.8*\REQechelle},font=\small,below] {$-\i$} ;}
+ \draw[\REQcouleur] (\i,-0.5) node[inner sep=1pt,outer sep=1pt,scale={\REQechlabel},font=\small,below] {$\i$} ;
+ \draw[\REQcouleur] (-\i,-0.5) node[inner sep=1pt,outer sep=1pt,scale={\REQechlabel},font=\small,below] {$-\i$} ;}
}%
{}%
\end{scope}
@@ -260,7 +267,8 @@
CouleurFond=\def\EQcouleurfond{#1},%
Origine=\def\EQposOrigin{#1},%
Rotation=\def\EQangle{#1},%
- Opacite=\def\EQopac{#1}
+ Opacite=\def\EQopac{#1},%
+ EchelleValeurs=\def\EQechlabel{#1}
}
\setKVdefault[EquerreGeom]{%
@@ -273,7 +281,8 @@
AfficheValeurs=true,%
Fond=false,%
Opacite=0.5,%
- PetitCote=false
+ PetitCote=false,%
+ EchelleValeurs=0.8
}
\NewDocumentCommand{\tkzEquerre}{ O{} }{%
@@ -293,7 +302,7 @@
\edef\EQangle{\fpeval{\pgfmathresult-90}}%
}%
}{}%
- \begin{scope}[shift={(\EQposOrigin)},rotate=\EQangle,scale=\EQechelle]
+ \begin{scope}[shift={(\EQposOrigin)},rotate=\EQangle,scale=\EQechelle,transform shape]
\ifboolKV[EquerreGeom]{Fond}
{%
\begin{scope} %diff extérieur-intérieur
@@ -318,10 +327,12 @@
\foreach \y in {0,1,...,\fpeval{0.925*\EQlongueur}} {\draw[\EQcouleur] (0,\y)--(0.4,\y) ;}
\ifboolKV[EquerreGeom]{AfficheValeurs}%
{%
- \foreach \i in {1,2,...,\fpeval{0.9*\EQlongueur-1}}
- \draw[\EQcouleur] (0.4,\i) node[inner sep=1pt,outer sep=1pt,rotate=\EQangle,scale={0.8*\EQechelle},font=\small,right] {\rotatebox{90}{$\i$}} ;
- \foreach \i in {1,2,...,\fpeval{0.9*\EQlargeur-0.5}}
- \draw[\EQcouleur] (\i,0.4) node[inner sep=1pt,outer sep=1pt,rotate=\EQangle,scale={0.8*\EQechelle},font=\small,above] {\rotatebox{180}{$\i$}} ;
+ \foreach \i in {1,2,...,\fpeval{0.9*\EQlongueur-1}}{%
+ \draw[\EQcouleur] (0.4,\i) node[inner sep=1pt,outer sep=1pt,scale={\EQechlabel},font=\small,right] {\rotatebox{90}{$\i$}} ;
+ }%
+ \foreach \i in {1,2,...,\fpeval{0.9*\EQlargeur-0.5}}{%
+ \draw[\EQcouleur] (\i,0.4) node[inner sep=1pt,outer sep=1pt,scale={\EQechlabel},font=\small,above] {\rotatebox{180}{$\i$}} ;
+ }%
}%
{}%
\end{scope}
@@ -336,7 +347,8 @@
CouleurFond=\def\RAPPcouleurfond{#1},%
Origine=\def\RAPPposOrigin{#1},%
Rotation=\def\RAPPangle{#1},%
- Opacite=\def\RAPPopac{#1}
+ Opacite=\def\RAPPopac{#1},%
+ EchelleValeurs=\def\RAPPechlabel{#1}
}
\setKVdefault[RapporteurGeom]{%
@@ -350,13 +362,14 @@
Fond=false,%
Opacite=0.5,%
Complet=false,%
- GraduationsInt=false
+ GraduationsInt=false,%
+ EchelleValeurs=0.8
}
\NewDocumentCommand{\tkzRapporteur}{ O{} }{%
\useKVdefault[RapporteurGeom]%
\setKV[RapporteurGeom]{#1}%
- \begin{scope}[shift={(\RAPPposOrigin)},rotate=\RAPPangle,scale=\RAPPechelle,every node/.style={rotate=\RAPPangle}]
+ \begin{scope}[shift={(\RAPPposOrigin)},rotate=\RAPPangle,scale=\RAPPechelle,transform shape]
\ifboolKV[RapporteurGeom]{Complet}
{
%fond
@@ -382,27 +395,27 @@
%valeurs si booléen
\ifboolKV[RapporteurGeom]{AfficheAngles}
{%
- \draw[\RAPPcouleur] (0:2.75) node[rotate=90,scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$0$} ;
- \draw[\RAPPcouleur] (180:3.25) node[rotate=90,scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\pm 180$} ;
- \draw[\RAPPcouleur] (180:2.75) node[rotate=90,scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\pm \pi$} ;
+ \draw[\RAPPcouleur] (0:2.75) node[rotate=90,scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$0$} ;
+ \draw[\RAPPcouleur] (180:3.25) node[rotate=90,scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\pm 180$} ;
+ \draw[\RAPPcouleur] (180:2.75) node[rotate=90,scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\pm \pi$} ;
\foreach \i in {0,10,...,170}
- {\draw[\RAPPcouleur] (\i:3.25) node[rotate={\i-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\i$} ;}
- \draw[\RAPPcouleur] (30:2.75) node[rotate={30-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{6}$} ;
- \draw[\RAPPcouleur] (45:2.75) node[rotate={45-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{4}$} ;
- \draw[\RAPPcouleur] (60:2.75) node[rotate={60-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{3}$} ;
- \draw[\RAPPcouleur] (90:2.75) node[rotate={90-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{2}$} ;
- \draw[\RAPPcouleur] (120:2.75) node[rotate={120-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{2\pi}{3}$} ;
- \draw[\RAPPcouleur] (135:2.75) node[rotate={135-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{3\pi}{4}$} ;
- \draw[\RAPPcouleur] (150:2.75) node[rotate={150-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{5\pi}{6}$} ;
+ {\draw[\RAPPcouleur] (\i:3.25) node[rotate={\i-90},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\i$} ;}
+ \draw[\RAPPcouleur] (30:2.75) node[rotate={30-90},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{6}$} ;
+ \draw[\RAPPcouleur] (45:2.75) node[rotate={45-90},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{4}$} ;
+ \draw[\RAPPcouleur] (60:2.75) node[rotate={60-90},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{3}$} ;
+ \draw[\RAPPcouleur] (90:2.75) node[rotate={90-90},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{2}$} ;
+ \draw[\RAPPcouleur] (120:2.75) node[rotate={120-90},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{2\pi}{3}$} ;
+ \draw[\RAPPcouleur] (135:2.75) node[rotate={135-90},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{3\pi}{4}$} ;
+ \draw[\RAPPcouleur] (150:2.75) node[rotate={150-90},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{5\pi}{6}$} ;
\foreach \i in {10,20,...,170}
- {\draw[\RAPPcouleur] ({-\i}:3.25) node[rotate={270-\i},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$-\i$} ;}
- \draw[\RAPPcouleur] (-30:2.75) node[rotate={270-30},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{6}$} ;
- \draw[\RAPPcouleur] (-45:2.75) node[rotate={270-45},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{4}$} ;
- \draw[\RAPPcouleur] (-60:2.75) node[rotate={270-60},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{3}$} ;
- \draw[\RAPPcouleur] (-90:2.75) node[rotate={270-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{2}$} ;
- \draw[\RAPPcouleur] (-120:2.75) node[rotate={270-120},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-2\pi}{3}$} ;
- \draw[\RAPPcouleur] (-135:2.75) node[rotate={270-135},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-3\pi}{4}$} ;
- \draw[\RAPPcouleur] (-150:2.75) node[rotate={270-150},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-5\pi}{6}$} ;
+ {\draw[\RAPPcouleur] ({-\i}:3.25) node[rotate={270-\i},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$-\i$} ;}
+ \draw[\RAPPcouleur] (-30:2.75) node[rotate={270-30},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{6}$} ;
+ \draw[\RAPPcouleur] (-45:2.75) node[rotate={270-45},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{4}$} ;
+ \draw[\RAPPcouleur] (-60:2.75) node[rotate={270-60},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{3}$} ;
+ \draw[\RAPPcouleur] (-90:2.75) node[rotate={270-90},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{2}$} ;
+ \draw[\RAPPcouleur] (-120:2.75) node[rotate={270-120},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{-2\pi}{3}$} ;
+ \draw[\RAPPcouleur] (-135:2.75) node[rotate={270-135},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{-3\pi}{4}$} ;
+ \draw[\RAPPcouleur] (-150:2.75) node[rotate={270-150},scale=\fpeval{\RAPPechlabel*\RAPPechangle},font=\tiny] {$\nicefrac{-5\pi}{6}$} ;
}{}
}
{
@@ -440,9 +453,9 @@
\ifboolKV[RapporteurGeom]{AfficheAngles}
{%
\foreach \i in {0,10,...,180}
- {\draw[\RAPPcouleur] (\i:3.2) node[rotate={\i-90},scale=\fpeval{\RAPPechelle*\RAPPechangle},font=\tiny] {\i} ;}
+ {\draw[\RAPPcouleur] (\i:3.2) node[rotate={\i-90},scale=\fpeval{\RAPPechangle},font=\tiny] {\i} ;}
\foreach \i in {0,10,...,180}
- {\draw[\RAPPcouleur] (\i:2.7) node[rotate={\i-90},scale=\fpeval{\RAPPechelle*\RAPPechangle},font=\tiny] {\inteval{180-\i}} ;}
+ {\draw[\RAPPcouleur] (\i:2.7) node[rotate={\i-90},scale=\fpeval{\RAPPechangle},font=\tiny] {\inteval{180-\i}} ;}
}{}
}
\end{scope}
@@ -455,7 +468,8 @@
CouleurFond=\def\POURCcouleurfond{#1},%
Origine=\def\POURCposOrigin{#1},%
Rotation=\def\POURCangle{#1},%
- Opacite=\def\POURCopac{#1}
+ Opacite=\def\POURCopac{#1},%
+ EchelleValeurs=\def\POURCechlabel{#1}
}
\setKVdefault[Pourcenteur]{%
@@ -468,13 +482,14 @@
AfficheValeurs=true,%
Fond=false,%
Opacite=0.5,%
- Decoration=true
+ Decoration=true,%
+ EchelleValeurs=0.8
}
\NewDocumentCommand{\tkzPourcenteur}{ O{} }{%
\useKVdefault[Pourcenteur]%
\setKV[Pourcenteur]{#1}%
- \begin{scope}[shift={(\POURCposOrigin)},rotate=\POURCangle,scale=\POURCechelle,every node/.style={rotate=\POURCangle}]
+ \begin{scope}[shift={(\POURCposOrigin)},rotate=\POURCangle,scale=\POURCechelle,transform shape]
\ifboolKV[Pourcenteur]{Fond}
{%
\fill[draw=none,fill=\POURCcouleurfond!10!white,fill opacity=\POURCopac] (0,0) circle[radius=3] ;
@@ -483,7 +498,7 @@
\draw[\POURCcouleur,semithick] (0,0) circle[radius=3] ;
\draw[\POURCcouleur,semithick] ({-0.15*3},0)--({0.15*3},0) (0,{-0.15*3})--(0,{0.15*3}) ;
\foreach \pct in {0,1,...,199}
- {\draw[\POURCcouleur,thin] ({0.5*\pct*3.6}:{3})--({0.5*\pct*3.6}:{3-0.2}) ;}
+ {\draw[\POURCcouleur,thin] ({0.5*\pct*3.6}:{3})--({0.5*\pct*3.6}:{3-0.2}) ;}
\foreach \pct in {0,10,...,90}{%
\draw[\POURCcouleur,thin] ({(\pct+1)*3.6}:{3})--({(\pct+1)*3.6}:{3-0.35}) ;
\filldraw[\POURCcouleur] ({(\pct+1)*3.6}:{3-0.35}) circle[fill=\POURCcouleur,radius=0.75pt] ;
@@ -505,14 +520,14 @@
\foreach \pct in {5,10,15,20,30,35,40,45,55,60,65,70,80,85,90,95}{%
\draw[\POURCcouleur,semithick] ({\pct*3.6}:{3})--({\pct*3.6}:{3-0.5}) ;
\ifboolKV[Pourcenteur]{AfficheValeurs}
- {\draw ({-\pct*3.6+90}:{3-0.6}) node[\POURCcouleur,rotate={-3.6*\pct},scale=\fpeval{0.8*\POURCechelle*\POURCechangle},font=\tiny] {\pct\,\%} ;}{}
+ {\draw ({-\pct*3.6+90}:{3-0.6}) node[\POURCcouleur,rotate={-3.6*\pct},scale=\fpeval{\POURCechlabel*\POURCechangle},font=\tiny] {\pct\,\%} ;}{}
}
\foreach \pct in {0,25,50,75}{%
\draw[\POURCcouleur,semithick] ({\pct*3.6}:{3})--({\pct*3.6}:{3-0.5}) ;
\ifboolKV[Pourcenteur]{AfficheValeurs}
{%
- \draw ({-\pct*3.6+90}:{3-0.61}) node[\POURCcouleur,rotate={-3.6*\pct},scale=\fpeval{0.8*\POURCechelle*\POURCechangle},font=\scriptsize\bfseries] {\pct\,\%} ;
- \draw ({-\pct*3.6+90}:{2+0.15}) node[\POURCcouleur,rotate={-3.6*\pct},scale=\fpeval{0.8*\POURCechelle*\POURCechangle},font=\tiny\bfseries] {\pct\,\%} ;
+ \draw ({-\pct*3.6+90}:{3-0.61}) node[\POURCcouleur,rotate={-3.6*\pct},scale=\fpeval{\POURCechlabel*\POURCechangle},font=\scriptsize\bfseries] {\pct\,\%} ;
+ \draw ({-\pct*3.6+90}:{2+0.15}) node[\POURCcouleur,rotate={-3.6*\pct},scale=\fpeval{\POURCechlabel*\POURCechangle},font=\tiny\bfseries] {\pct\,\%} ;
}{}%
}
\draw[\POURCcouleur,semithick] (0,1)--(0,2) (1.6,0)--(2,0) (0,-1.6)--(0,-2) (-1.6,0)--(-2,0) ;
@@ -533,7 +548,7 @@
CouleurFond=\def\RAPPEQcouleurfond{#1},%
Origine=\def\RAPPEQposOrigin{#1},%
Rotation=\def\RAPPEQangle{#1},%
- Opacite=\def\RAPPEQopac{#1}
+ Opacite=\def\RAPPEQopac{#1},%
}
\setKVdefault[RapporteurEquerreGeom]{%
@@ -561,7 +576,7 @@
\pgfmathanglebetweenpoints{\pgfpointanchor{\RAPPEQposOrigin}{center}}{\pgfpointanchor{\tmppointdeux}{center}}%
\edef\RAPPEQangle{\pgfmathresult}%
}{}%
- \begin{scope}[shift={(\RAPPEQposOrigin)},rotate=\RAPPEQangle,scale=\RAPPEQechelle,every node/.style={rotate=\RAPPEQangle}]
+ \begin{scope}[shift={(\RAPPEQposOrigin)},rotate=\RAPPEQangle,scale=\RAPPEQechelle,transform shape]
%fond
\ifboolKV[RapporteurEquerreGeom]{Fond}
{%
@@ -591,16 +606,16 @@
\ifboolKV[RapporteurEquerreGeom]{AfficheAngles}
{%
\foreach \i in {10,20,...,170}
- {\draw[\RAPPEQcouleur] ({-\i}:{0.6125*\RAPPEQlargeur}) node[rotate={90-\i},scale=\fpeval{\RAPPEQlargeur/8*\RAPPEQechelle*\RAPPEQechangle},font=\tiny] {\i} ;}
+ {\draw[\RAPPEQcouleur] ({-\i}:{0.6125*\RAPPEQlargeur}) node[rotate={90-\i},scale=\fpeval{\RAPPEQlargeur/8*\RAPPEQechangle},font=\tiny] {\i} ;}
%angles "extérieurs"
\foreach \i in {10,20,...,170}
- {\draw[\RAPPEQcouleur] ({-\i}:{0.6375*\RAPPEQlargeur}) node[rotate={90-\i},scale=\fpeval{\RAPPEQlargeur/8*\RAPPEQechelle*\RAPPEQechangle},font=\tiny] {\inteval{180-\i}} ;}
+ {\draw[\RAPPEQcouleur] ({-\i}:{0.6375*\RAPPEQlargeur}) node[rotate={90-\i},scale=\fpeval{\RAPPEQlargeur/8*\RAPPEQechangle},font=\tiny] {\inteval{180-\i}} ;}
}%
{}%
\ifboolKV[RapporteurEquerreGeom]{AfficheValeurs}
{%
\foreach \i in {-1,0,1}
- {\draw[\RAPPEQcouleur] ({\i},-0.375) node[scale=\fpeval{\RAPPEQechelle*\RAPPEQechangle},font=\tiny] {$\i$} ;}
+ {\draw[\RAPPEQcouleur] ({\i},-0.375) node[scale=\fpeval{\RAPPEQechangle},font=\tiny] {$\i$} ;}
}%
{}%
%tracés intérieurs
diff --git a/Master/texmf-dist/tex/latex/overarrows/overarrows.sty b/Master/texmf-dist/tex/latex/overarrows/overarrows.sty
index f954f12b55b..db0b1b04322 100644
--- a/Master/texmf-dist/tex/latex/overarrows/overarrows.sty
+++ b/Master/texmf-dist/tex/latex/overarrows/overarrows.sty
@@ -17,10 +17,11 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{overarrows}
-[2023/02/15 v1.1 Custom extensible arrows over math expressions]
+[2024/07/11 v1.2 Custom extensible arrows over math expressions]
\newif\ifovar@option@oldarrows@
\newif\ifovar@option@esvect@ \ovar@option@esvect@true \PassOptionsToPackage{f}{esvect}
\newif\ifovar@option@tikz@
+\newif\ifovar@option@pstricks@
\newif\ifovar@option@pstarrows@
\newif\ifovar@detectsubscripts@
\newif\ifovar@option@subother@
@@ -54,6 +55,7 @@
\DeclareOption{esvecth}{\ovar@option@esvect@true\PassOptionsToPackage{h}{esvect}}
\DeclareOption{old-arrows}{\ovar@option@oldarrows@true}
\DeclareOption{tikz}{\ovar@option@tikz@true}
+\DeclareOption{pstricks}{\ovar@option@pstricks@true}
\DeclareOption{pstarrows}{\ovar@option@pstarrows@true}
\DeclareOption{subscripts}{\ovar@detectsubscripts@true}
\DeclareOption{subother}{\ovar@option@subother@true}
@@ -117,35 +119,70 @@
\ProcessOptions\relax
\RequirePackage{amsmath}
\RequirePackage{etoolbox}
-\let\ovar@rightarrow\rightarrow
-\let\ovar@leftarrow\leftarrow
+\def\ovar@rightarrow{\rightarrow}
+\def\ovar@leftarrow{\leftarrow}
\ifovar@option@oldarrows@
\RequirePackage[old]{old-arrows}
- \let\ovar@rightarrow\varrightarrow
- \let\ovar@leftarrow\varleftarrow
+ \def\ovar@rightarrow{\varrightarrow}
+ \def\ovar@leftarrow{\varleftarrow}
\fi
\ifovar@option@esvect@
\RequirePackage{esvect}
+ \DeclareFontFamily{U}{esvect}{}
+ \DeclareFontShape{U}{esvect}{m}{n}{
+ <-5.5> vect5
+ <5.5-6.5> vect6
+ <6.5-7.5> vect7
+ <7.5-8.5> vect8
+ <8.5-9.5> vect9
+ <9.5-> vect10
+ }{}
\fi
\ifovar@option@tikz@
\RequirePackage{tikz}
\usetikzlibrary{arrows.meta}
\fi
+\ifovar@option@pstricks@
+ \RequirePackage{pstricks-add}
+\fi
\ifovar@option@pstarrows@
\RequirePackage[pstarrows]{pict2e}
\fi
+\DeclareHookRule{begindocument}{overarrows}{after}{unicode-math-luatex}
+\DeclareHookRule{begindocument}{overarrows}{after}{unicode-math-xetex}
+\AddToHook{begindocument}[overarrows]
+ {%
+ \ifdef{\relbareda}
+ {%
+ \gdef\ovar@auto@middle{\relbareda}
+ \gdef\ovar@auto@trim@middle{1}
+ }
+ {%
+ \gdef\ovar@auto@middle{\relbar}
+ \gdef\ovar@auto@trim@middle{2.5}
+ }%
+ \@ifpackageloaded{unicode-math}
+ {%
+ \check@mathfonts
+ \iffontchar\textfont\tw@\string"23AF
+ \gdef\ovar@auto@middle{\mathrel\harrowextender}
+ \gdef\ovar@auto@trim@middle{0}
+ \fi
+ }
+ {}%
+ }
\newcommand{\SetOverArrowsSubscriptCommand}[1]{\global\let\ovar@subcmd=#1}
\SetOverArrowsSubscriptCommand{_}
\ifovar@option@subother@
\begingroup
\catcode `_=12
- \AddToHook{begindocument/end}{\SetOverArrowsSubscriptCommand{_}}
+ \SetOverArrowsSubscriptCommand{_}%
\endgroup
\fi
\ifovar@option@subactive@
\begingroup
\catcode `_=13
- \AddToHook{begindocument/end}{\SetOverArrowsSubscriptCommand{_}}
+ \SetOverArrowsSubscriptCommand{_}%
\endgroup
\fi
\RequirePackage{pgfkeys}
@@ -286,12 +323,17 @@
}
}
},
+ middle config/harrowextender/.code={%
+ \pgfkeysalso{%
+ middle={\harrowextender},
+ trim middle={0},
+ }
+ },
middle config/auto/.code={%
- \ifovar@option@esvect@
- \pgfkeysalso{middle config=relbareda}
- \else
- \pgfkeysalso{middle config=relbar}
- \fi
+ \pgfkeysalso{%
+ middle={\ovar@auto@middle},
+ trim middle={\ovar@auto@trim@middle},
+ }
},
amsmath/.is choice,%
amsmath/mimic/.code=\pgfkeysalso{%
@@ -369,6 +411,39 @@
shift right=-2,
min length=12,
}
+\SetOverArrowsMethod[lens]{pstricks}{%
+ no arrow macro hook/.code={%
+ \ovar@set{%
+ arrow macro/.expanded={%
+ $\noexpand\mkern \expandonce{\ovar@shift@left} mu\noexpand\relax$%
+ \noexpand\begin{pspicture}\expandonce{\ovar@pstricks@geometry}%
+ \noexpand\psset{linewidth=\expandonce{\ovar@pstricks@linethickness}}%
+ \noexpand\psset{\expandonce{\ovar@pstricks@psset}}%
+ \expandonce{\ovar@pstricks@command}%
+ \noexpand\end{pspicture}%
+ $\noexpand\mkern \expandonce{\ovar@shift@right} mu\noexpand\relax$%
+ }
+ }
+ },
+ pstricks command/.store in=\ovar@pstricks@command,
+ psset/.store in=\ovar@pstricks@psset,
+ geometry/.store in=\ovar@pstricks@geometry,
+ line thickness/.store in=\ovar@pstricks@linethickness,
+ pstricks command/.value required,
+ psset/.value required,
+ geometry/.value required,
+ line thickness/.value required,
+ arrow/.style={pstricks command={\psline{##1}(0,0)(\overarrowlength,0)}},%
+ arrow/.value required,%
+ thinner/.style={line thickness={\overarrowsmallerthickness}},%
+ thinner/.value forbidden,%
+ shift right=-2,
+ min length=12,
+ geometry={(0,-0.5ex)(\overarrowlength,0.5ex)},%
+ line thickness={\overarrowthickness},%
+ arrow={->},%
+ psset={},%
+}
\SetOverArrowsMethod[lens]{picture}{%
no arrow macro hook/.code={%
\ovar@set{%
@@ -413,28 +488,61 @@
\newlength{\overarrowlength}
\newlength{\overarrowthickness}
\newlength{\overarrowsmallerthickness}
-\newlength{\ovar@extralength}
\newlength{\ovar@tempdim}
\def\ovar@set@arrowlength#1#2#3{%
\settowidth{\ovar@tempdim}{$\m@th#2\mskip #1 mu\relax$}%
\settowidth{\overarrowlength}{$\m@th#2#3$}%
\ifdim \overarrowlength < \ovar@tempdim \overarrowlength=\ovar@tempdim\fi%
}
-\def\ovar@set@arrowthickness#1{% use rule thickness=\fontdimen 8 font family 3
+\def\ovar@rulethickness@fontdimen{8}
+\def\ovar@rulethickness@family{3}
+\def\ovar@set@arrowthickness#1{%
\ifx#1\displaystyle%
- \overarrowthickness = \fontdimen 8 \textfont 3%
- \overarrowsmallerthickness = \fontdimen 8 \scriptfont 3%
+ \overarrowthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \textfont \ovar@rulethickness@family%
+ \overarrowsmallerthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptfont \ovar@rulethickness@family%
\else\ifx#1\textstyle%
- \overarrowthickness = \fontdimen 8 \textfont 3%
- \overarrowsmallerthickness = \fontdimen 8 \scriptfont 3%
+ \overarrowthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \textfont \ovar@rulethickness@family%
+ \overarrowsmallerthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptfont \ovar@rulethickness@family%
\else\ifx#1\scriptstyle%
- \overarrowthickness = \fontdimen 8 \scriptfont 3%
- \overarrowsmallerthickness = \fontdimen 8 \scriptscriptfont 3%
+ \overarrowthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptfont \ovar@rulethickness@family%
+ \overarrowsmallerthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptscriptfont \ovar@rulethickness@family%
\else%
- \overarrowthickness = \fontdimen 8 \scriptscriptfont 3%
+ \overarrowthickness =
+ \fontdimen \ovar@rulethickness@fontdimen \scriptscriptfont \ovar@rulethickness@family%
\overarrowsmallerthickness = \overarrowthickness%
\fi\fi\fi%
}
+\def\ovar@set@arrowthickness@UM@lua#1{%
+ \overarrowthickness = \Umathoverbarrule #1
+ \ifx#1\displaystyle%
+ \overarrowsmallerthickness = \Umathoverbarrule \textstyle%
+ \else\ifx#1\textstyle%
+ \overarrowsmallerthickness = \Umathoverbarrule \scriptstyle%
+ \else%
+ \overarrowsmallerthickness = \Umathoverbarrule \scriptscriptstyle%
+ \fi\fi%
+}
+\AddToHook{begindocument}[overarrows]
+ {%
+ \@ifpackageloaded{unicode-math-luatex}
+ {%
+ \global\let\ovar@set@arrowthickness\ovar@set@arrowthickness@UM@lua
+ }
+ {%
+ \@ifpackageloaded{unicode-math-xetex}
+ {%
+ \gdef\ovar@rulethickness@fontdimen{54}
+ \gdef\ovar@rulethickness@family{2}
+ }
+ {}
+ }
+ }
\def\ovar@stackover@@#1#2#3#4#5#6{\vbox{\ialign{##\crcr%
$#5\mskip #1 mu\relax$\crcr%
\noalign{#2\nointerlineskip}#4\crcr%
@@ -467,16 +575,27 @@
\ovar@stackunder@{#2}{#3}{#4}{#5}{#6}%
}
\def\ovar@stack@lens{\ovar@stackover@lens}
-\NewDocumentCommand{\DeclareOverArrowCommand}{ O{symb} m m }{%
+\ExplSyntaxOn
+\cs_new_protected:Npn \__overarrows_processor_strip_escape_char:n #1
+ {
+ \regex_match:nnTF { ^\cC. } { #1 }
+ { \tl_set:Nx \ProcessedArgument { \cs_to_str:N #1 } }
+ { \tl_set:Nx \ProcessedArgument { #1 } }
+ }
+\cs_new_eq:NN \ovar@cmdname@processor \__overarrows_processor_strip_escape_char:n
+\ExplSyntaxOff
+\NewDocumentCommand{\DeclareOverArrowCommand}{
+ O{symb} >{\ovar@cmdname@processor} m m
+}{%
\begingroup
\ovar@set@common
\ifcsdef{ovar@set@#1}{%
\csuse{ovar@set@#1}
}{%
\PackageError{overarrows}{Unknown method #1}
- {Try with 'symb', 'tikz' or 'picture'}
+ {Try with 'symb', 'tikz', 'pstriks' or 'picture'}
}
- \ovar@set{#3 }
+ \ovar@set{#3}
\ifdef{\ovar@macro@arrow}{}{%
\ovar@set{no arrow macro hook}
}
@@ -519,12 +638,16 @@
\fi
\endgroup
}
-\NewDocumentCommand{\ProvideOverArrowCommand}{ O{symb} m m }{%
+\NewDocumentCommand{\ProvideOverArrowCommand}{
+ O{symb} >{\ovar@cmdname@processor} m m
+}{%
\ifcsdef{#2}{}{
\DeclareOverArrowCommand[#1]{#2}{#3}
}
}
-\NewDocumentCommand{\NewOverArrowCommand}{ O{symb} m m }{%
+\NewDocumentCommand{\NewOverArrowCommand}{
+ O{symb} >{\ovar@cmdname@processor} m m
+}{%
\ifcsdef{#2}{%
\PackageError{overarrows}{Command \csname #2\endcsname already defined}%
{You have used \protect\NewOverArrowCommand\space with a command that
@@ -534,7 +657,9 @@
\DeclareOverArrowCommand[#1]{#2}{#3}
}
}
-\NewDocumentCommand{\RenewOverArrowCommand}{ O{symb} m m }{%
+\NewDocumentCommand{\RenewOverArrowCommand}{
+ O{symb} >{\ovar@cmdname@processor} m m
+}{%
\ifcsundef{#2}{%
\PackageError{overarrows}{Command \csname #2\endcsname undefined}%
{You have used \protect\RenewOverArrowCommand\space with a command that was
@@ -544,148 +669,151 @@
\DeclareOverArrowCommand[#1]{#2}{#3}
}
}
+\newsavebox\ovar@tempbox
\def\ovar@starversion#1#2#3{%
- #1#2{#3}%
- \settowidth{\ovar@extralength}{$\m@th#1#2{#3}$}
- \settowidth{\ovar@tempdim}{$\m@th#2{#3}$}
- \deflength{\ovar@extralength}{0.5\ovar@extralength-0.5\ovar@tempdim}%
- \kern-\ovar@extralength%
+ \sbox{\ovar@tempbox}{$\m@th #1#2{#3}$}%
+ \usebox{\ovar@tempbox}%
+ \settowidth{\ovar@tempdim}{$\m@th #2{#3}$}%
+ \kern\dimeval{0.5\ovar@tempdim - 0.5\wd\ovar@tempbox}%
}
\ifovar@option@esvect@
\let\esvectvv\vv
\undef\vv
- \NewOverArrowCommand{vv}{esvect, middle config=auto}
-\fi
-\ifovar@option@overrightarrow@
- \DeclareOverArrowCommand{overrightarrow}{%
- amsmath, middle config=relbar,
- end=\ovar@rightarrow,
- right arrow,
- }
-\fi
-\ifovar@option@underrightarrow@
- \DeclareOverArrowCommand{underrightarrow}{%
- amsmath, middle config=relbar,
- end=\ovar@rightarrow,
- right arrow,
- arrow under,
- }
-\fi
-\ifovar@option@overleftarrow@
- \DeclareOverArrowCommand{overleftarrow}{%
- amsmath, middle config=relbar,
- start=\ovar@leftarrow,
- end=\relbar,
- left arrow,
- }
-\fi
-\ifovar@option@underleftarrow@
- \DeclareOverArrowCommand{underleftarrow}{%
- amsmath, middle config=relbar,
- start=\ovar@leftarrow,
- end=\relbar,
- left arrow,
- arrow under,
- }
-\fi
-\ifovar@option@overleftrightarrow@
- \DeclareOverArrowCommand{overleftrightarrow}{%
- amsmath, middle config=relbar,
- start=\ovar@leftarrow,
- end=\ovar@rightarrow,
- center arrow,
- }
-\fi
-\ifovar@option@underleftrightarrow@
- \DeclareOverArrowCommand{underleftrightarrow}{%
- amsmath, middle config=relbar,
- start=\ovar@leftarrow,
- end=\ovar@rightarrow,
- center arrow,
- arrow under,
- }
-\fi
-\ifovar@option@overrightharpoonup@
- \DeclareOverArrowCommand{overrightharpoonup}{%
- amsmath, middle config=relbar,
- end=\rightharpoonup,
- right arrow,
- }
-\fi
-\ifovar@option@underrightharpoonup@
- \DeclareOverArrowCommand{underrightharpoonup}{%
- amsmath, middle config=relbar,
- end=\rightharpoonup,
- right arrow,
- arrow under,
- }
+ \NewOverArrowCommand{\vv}{esvect, middle config = relbareda}
\fi
-\ifovar@option@overrightharpoondown@
- \DeclareOverArrowCommand{overrightharpoondown}{%
- amsmath, middle config=relbar,
- end=\rightharpoondown,
- right arrow,
- }
-\fi
-\ifovar@option@underrightharpoondown@
- \DeclareOverArrowCommand{underrightharpoondown}{%
- amsmath, middle config=relbar,
- end=\rightharpoondown,
- right arrow,
- arrow under,
- }
-\fi
-\ifovar@option@overleftharpoonup@
- \DeclareOverArrowCommand{overleftharpoonup}{%
- amsmath, middle config=relbar,
- start=\leftharpoonup,
- end=\relbar,
- left arrow,
- }
-\fi
-\ifovar@option@underleftharpoonup@
- \DeclareOverArrowCommand{underleftharpoonup}{%
- amsmath, middle config=relbar,
- start=\leftharpoonup,
- end=\relbar,
- left arrow,
- arrow under,
- }
-\fi
-\ifovar@option@overleftharpoondown@
- \DeclareOverArrowCommand{overleftharpoondown}{%
- amsmath, middle config=relbar,
- start=\leftharpoondown,
- end=\relbar,
- left arrow,
- }
-\fi
-\ifovar@option@underleftharpoondown@
- \DeclareOverArrowCommand{underleftharpoondown}{%
- amsmath, middle config=relbar,
- start=\leftharpoondown,
- end=\relbar,
- left arrow,
- arrow under,
- }
-\fi
-\ifovar@option@overbar@
- \DeclareOverArrowCommand{overbar}{%
- amsmath, middle config=relbar,
- start={\std@minus}, end={\std@minus},% \relbar is defined with \mathsm@sh
- shift leftright=0,
- space after arrow=-0.3ex,
- }
-\fi
-\ifovar@option@underbar@
- \DeclareOverArrowCommand{underbar}{%
- amsmath, middle config=relbar,
- start={\std@minus}, end={\std@minus},% \relbar is defined with \mathsm@sh
- shift leftright=0,
- arrow under,
- space before arrow=-0.3ex,
+\AddToHook{begindocument}[overarrows]
+ {
+ \ifovar@option@overrightarrow@
+ \DeclareOverArrowCommand{\overrightarrow}{%
+ amsmath, middle config=relbar,
+ end=\ovar@rightarrow,
+ right arrow,
+ }
+ \fi
+ \ifovar@option@underrightarrow@
+ \DeclareOverArrowCommand{\underrightarrow}{%
+ amsmath, middle config=relbar,
+ end=\ovar@rightarrow,
+ right arrow,
+ arrow under,
+ }
+ \fi
+ \ifovar@option@overleftarrow@
+ \DeclareOverArrowCommand{\overleftarrow}{%
+ amsmath, middle config=relbar,
+ start=\ovar@leftarrow,
+ end=\relbar,
+ left arrow,
+ }
+ \fi
+ \ifovar@option@underleftarrow@
+ \DeclareOverArrowCommand{\underleftarrow}{%
+ amsmath, middle config=relbar,
+ start=\ovar@leftarrow,
+ end=\relbar,
+ left arrow,
+ arrow under,
+ }
+ \fi
+ \ifovar@option@overleftrightarrow@
+ \DeclareOverArrowCommand{\overleftrightarrow}{%
+ amsmath, middle config=relbar,
+ start=\ovar@leftarrow,
+ end=\ovar@rightarrow,
+ center arrow,
+ }
+ \fi
+ \ifovar@option@underleftrightarrow@
+ \DeclareOverArrowCommand{\underleftrightarrow}{%
+ amsmath, middle config=relbar,
+ start=\ovar@leftarrow,
+ end=\ovar@rightarrow,
+ center arrow,
+ arrow under,
+ }
+ \fi
+ \ifovar@option@overrightharpoonup@
+ \DeclareOverArrowCommand{\overrightharpoonup}{%
+ amsmath, middle config=relbar,
+ end=\rightharpoonup,
+ right arrow,
+ }
+ \fi
+ \ifovar@option@underrightharpoonup@
+ \DeclareOverArrowCommand{\underrightharpoonup}{%
+ amsmath, middle config=relbar,
+ end=\rightharpoonup,
+ right arrow,
+ arrow under,
+ }
+ \fi
+ \ifovar@option@overrightharpoondown@
+ \DeclareOverArrowCommand{\overrightharpoondown}{%
+ amsmath, middle config=relbar,
+ end=\rightharpoondown,
+ right arrow,
+ }
+ \fi
+ \ifovar@option@underrightharpoondown@
+ \DeclareOverArrowCommand{\underrightharpoondown}{%
+ amsmath, middle config=relbar,
+ end=\rightharpoondown,
+ right arrow,
+ arrow under,
+ }
+ \fi
+ \ifovar@option@overleftharpoonup@
+ \DeclareOverArrowCommand{\overleftharpoonup}{%
+ amsmath, middle config=relbar,
+ start=\leftharpoonup,
+ end=\relbar,
+ left arrow,
+ }
+ \fi
+ \ifovar@option@underleftharpoonup@
+ \DeclareOverArrowCommand{\underleftharpoonup}{%
+ amsmath, middle config=relbar,
+ start=\leftharpoonup,
+ end=\relbar,
+ left arrow,
+ arrow under,
+ }
+ \fi
+ \ifovar@option@overleftharpoondown@
+ \DeclareOverArrowCommand{\overleftharpoondown}{%
+ amsmath, middle config=relbar,
+ start=\leftharpoondown,
+ end=\relbar,
+ left arrow,
+ }
+ \fi
+ \ifovar@option@underleftharpoondown@
+ \DeclareOverArrowCommand{\underleftharpoondown}{%
+ amsmath, middle config=relbar,
+ start=\leftharpoondown,
+ end=\relbar,
+ left arrow,
+ arrow under,
+ }
+ \fi
+ \ifovar@option@overbar@
+ \DeclareOverArrowCommand{\overbar}{%
+ amsmath, middle config=relbar,
+ start={\std@minus}, end={\std@minus},% \relbar is defined with \mathsm@sh
+ shift leftright=0,
+ space after arrow=-0.3ex,
+ }
+ \fi
+ \ifovar@option@underbar@
+ \DeclareOverArrowCommand{\underbar}{%
+ amsmath, middle config=relbar,
+ start={\vphantom{+}\std@minus}, end={\std@minus},% \relbar is defined with \mathsm@sh
+ shift leftright=0,
+ arrow under,
+ space before arrow=-0.3ex,
+ }
+ \fi
}
-\fi
\newcommand{\ovar@testmathstyles}[2][]{
\begingroup
\newcommand*{\ovar@row@teststyle}[1]{%
@@ -728,7 +856,9 @@
\end{displaymath}
}
\endgroup
-\NewDocumentCommand{\TestOverArrow}{ s o m }{
+\NewDocumentCommand{\TestOverArrow}{
+ s o >{\ovar@cmdname@processor} m
+}{%
\ifcsdef{#3}{}{%
\PackageWarning{overarrows}{Unknown name '#3' passed to
\protect\TestOverArrow}
diff --git a/Master/texmf-dist/tex/latex/pagelayout/pagelayout.cls b/Master/texmf-dist/tex/latex/pagelayout/pagelayout.cls
index 8e7d3616aef..655ed59bd2b 100644
--- a/Master/texmf-dist/tex/latex/pagelayout/pagelayout.cls
+++ b/Master/texmf-dist/tex/latex/pagelayout/pagelayout.cls
@@ -13,8 +13,8 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesClass{pagelayout}[2024/01/17 Layout graphic rich documents]
-\def\pagelayoutversion{1.1.0}
+\ProvidesClass{pagelayout}[2024/07/31 Layout graphic rich documents]
+\def\pagelayoutversion{1.1.1}
% packages
\RequirePackage{pgfopts}
@@ -372,7 +372,11 @@
\pal@outermargin=\ifdim\pal@gridoutermargin=\pal@undefdim\pal@gridmargin\else\pal@gridoutermargin\fi
\height=\dimexpr\pal@pageheight - \pal@topmargin - \pal@bottommargin\relax
- \width=\dimexpr\pal@pagewidth - \pal@innermargin - \pal@outermargin\relax
+ \ifpal@isdoublepage
+ \width=\dimexpr2\pal@pagewidth - 2\pal@outermargin\relax
+ \else
+ \width=\dimexpr\pal@pagewidth - \pal@innermargin - \pal@outermargin\relax
+ \fi
\ifdim\dimexpr\pal@gridoptionheight\relax=\pal@undefdim
\else
\pal@gridheightdiff=\dimexpr0.5\height - 0.5\dimexpr\pal@gridoptionheight\relax\relax
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/PanneauRouteB14_80.pdf b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB14_80.pdf
new file mode 100644
index 00000000000..890d68ee510
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/panneauxroute/Interdiction/PanneauRouteB14_80.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 d94943962b7..68021ef1486 100644
--- a/Master/texmf-dist/tex/latex/panneauxroute/PanneauxRoute.sty
+++ b/Master/texmf-dist/tex/latex/panneauxroute/PanneauxRoute.sty
@@ -5,7 +5,11 @@
% : Licence CC BY-SA 3.0 for svg source (http://sig974.free.fr/?p=1520)
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{PanneauxRoute}[2023/08/14 v0.1.0 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
%------Packages utiles
@@ -56,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
new file mode 100644
index 00000000000..3fb7a40605a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/passopt/passopt.sty
@@ -0,0 +1,56 @@
+%
+% ***************** THE PASSOPT PACKAGE *****************
+%
+% Copyright (C) 2024 by Qu Yi <toquyi@163.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the CC-BY 4.0 License.
+% The latest version of this license is in
+% https://creativecommons.org/licenses/by/4.0/legalcode
+\NeedsTeXFormat{LaTeX2e}[2021/11/15]
+\ProvidesExplPackage{passopt}{2024/10/22}{1.01c}
+ {Passing options to packages or classes}
+
+\cs_generate_variant:Nn \tl_if_blank:nTF { v }
+\cs_new_protected:Npn \po_add_before_hook:nnn #1#2
+ { \hook_gput_code:nnn { #1/#2/before } { passopt } }
+\cs_new_protected:Npn \po_set_options_list:nnnnn #1#2#3#4#5
+ {
+ \po_add_before_hook:nnn {#1} {#5}
+ {
+ \cs_set:cpx { @raw@opt@#5.#2 }
+ {
+ \IfBooleanTF{#3}
+ {\exp_not:o {#4}}
+ {
+ \tl_if_blank:vTF { @raw@opt@#5.#2 }
+ { \exp_not:o {#4} }
+ { \exp_not:v { @raw@opt@#5.#2 },\exp_not:o {#4} }
+ }
+ }
+ \exp_args:Nc \protected@edef { opt@#5.#2 }
+ {
+ \exp_last_unbraced:Nv
+ \zap@space { @raw@opt@#5.#2 }~\@empty
+ }
+ }
+ }
+\cs_new_protected:Npn \po_clear_options_list:nnn #1#2#3
+ {
+ \po_add_before_hook:nnn {#1} {#3}
+ {
+ \tl_clear:c { @raw@opt@#3.#2 }
+ \tl_clear:c { opt@#3.#2 }
+ }
+ }
+\NewDocumentCommand{\SetOptionsToPackage}{smm}
+ {\po_set_options_list:nnnnn { package } { sty } {#1} {#2} {#3}}
+\NewDocumentCommand{\SetOptionsToClass}{smm}
+ {\po_set_options_list:nnnnn { class } { cls } {#1} {#2} {#3}}
+\cs_new_protected:Npn \ClearPackageOptions #1
+ { \po_clear_options_list:nnn { package } { sty } {#1} }
+\cs_new_protected:Npn \ClearClassOptions #1
+ { \po_clear_options_list:nnn { class } { cls } {#1} }
+\endinput
+%
+% End of file `passopt.sty'. \ No newline at end of file
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 08170653e8d..1716e9f9b8f 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-05-23 v0.96i
+\ProvidesPackage{color-ltx}[2024-10-27 v0.96n
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 95a0b0a6120..599680b6c51 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,8 +19,9 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2024-05-23}{0.96i}
- {temporay patches to for the colorspace package to test pdfresource management ... UF}
+\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2024-10-27}{0.96n}
+ {temporary patches for the colorspace package to test pdfresource management ... UF}
+
% colorspace can define more models, that l3color can't yet handle.
\cs_set_protected:Npn \expl@color@set@@nnn #1#2#3
@@ -71,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 5f4fd80f487..dcaffb96faf 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-05-23 v0.96i %
+\ProvidesFile{hgeneric-testphase.def}[2024-10-27 v0.96n %
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 }
{
@@ -437,20 +437,27 @@
{
\define@key{BKM}{color}
{
- \__hyp_color_set:ne {__hyp/tmpa}{#1}
- \color_export:nVN
- {__hyp/tmpa}
- \g__hyp_bordercolormodel_str
- \BKM@color
+ \tl_if_blank:nTF {#1}
+ { \cs_set_eq:NN\BKM@color\@empty }
+ {
+ \__hyp_color_set:ne {__hyp/tmpa}{#1}
+ \color_export:nVN
+ {__hyp/tmpa}
+ \g__hyp_bordercolormodel_str
+ \BKM@color
+ }
}
}
-\legacy_if:nT { Hy@bookmarks }
+\legacy_if:nTF { Hy@bookmarks }
{
\AddToHook{begindocument/before}[hyperref/bookmark]
{
\RequirePackage{bookmark}
}
}
+ {
+ \AddToHook{begindocument/before}[hyperref/bookmark]{}
+ }
\legacy_if:nT {Hy@draft}
{
\PassOptionsToPackage{draft}{bookmark}
@@ -464,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
@@ -593,6 +601,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]>>}
@@ -2206,13 +2215,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 }
{
@@ -2232,45 +2244,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 90eab781036..178df5a68b7 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-05-23}{}
+ {l3backend-testphase-dvipdfmx.def}{2024-10-27}{}
{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 3d6b1557ff4..3b3211a4224 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-05-23}{}
+ {l3backend-testphase-dvips.def}{2024-10-27}{}
{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 b7a6718fc4e..1b2c0adb41d 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-05-23}{}
+ {l3backend-testphase-dvisvgm.def}{2024-10-27}{}
{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 e6a50bbf1f4..d56136ad8e5 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-05-23}{}
+ {l3backend-testphase-luatex.def}{2024-10-27}{}
{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 0ba773707fd..9b694bcbb93 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-05-23}{}
+ {l3backend-testphase-pdftex.def}{2024-10-27}{}
{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 dd1bdb8cc0d..3f8858d58cb 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-05-23}{}
+ {l3backend-testphase-xetex.def}{2024-10-27}{}
{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 8309f4c507d..5580ee0e22b 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-05-23}{0.96i}%
+\ProvidesExplPackage{l3pdffield-testphase}{2024-10-27}{0.96n}%
{form fields}
\csname HyField@NeedAppearancesfalse\endcsname % suppress NeedAppearances
\str_new:N \l__pdffield_tmpa_str
@@ -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
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 30be81ed8ec..0ed1866d0d9 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-05-23}{0.96i}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2024-10-27}{0.96n}
{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 8f56ce40317..63aa929d375 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-05-23}{0.96i}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2024-10-27}{0.96n}
{PDF~management~code~(testphase)}
\bool_new:N\l__pdfmanagement_delayed_shipout_bool
\msg_new:nnn {pdfmanagement}{delayed-shipout}
@@ -419,7 +419,7 @@
\pdfdict_if_exist:nTF { g__pdf_Core/#1 }
{
\cs_if_exist:cTF
- { __pdfmanagement_handler/#1/?_gput:nn } %general, name independant handler
+ { __pdfmanagement_handler/#1/?_gput:nn } %general, name independent handler
{ \use:c {__pdfmanagement_handler/#1/?_gput:nn} {#2} {#3} }
{
\cs_if_exist:cTF
@@ -455,7 +455,7 @@
\pdfdict_if_exist:nTF { g__pdf_Core/#1 }
{
\cs_if_exist:cTF
- { __pdfmanagement_handler/#1/?_gremove:n } %general, name independant handler
+ { __pdfmanagement_handler/#1/?_gremove:n } %general, name independent handler
{ \use:c {__pdfmanagement_handler/#1/?_gremove:n} {#2} }
{
\cs_if_exist:cTF
@@ -491,7 +491,7 @@
\cs_new_protected:Npn \__pdfmanagement_show:Nn #1#2
{
\cs_if_exist:cTF
- { __pdfmanagement_handler/#2/?_show: } %general, name independant handler
+ { __pdfmanagement_handler/#2/?_show: } %general, name independent handler
{ \use:c {__pdfmanagement_handler/#2/?_show:} }
{
\prop_if_exist:cTF { \__kernel_pdfdict_name:n { g__pdf_Core/#2 } }
@@ -1080,6 +1080,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,6 +1320,7 @@
%% 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'.}
@@ -1414,6 +1422,8 @@
{ \__pdf_backend_omit_info:n {1} }
\pdfmeta_standard_verify:nF { no_CharSet }
{ \__pdf_backend_omit_charset:n {1} }
+ \pdfmeta_standard_verify:nF { omit_CID }
+ { \__pdf_backend_omit_cidset:n {1} }
\pdfmeta_standard_verify:nnF { min_pdf_version }
{ \pdf_version: }
{ \msg_warning:nneee {pdf}{wrong-pdfversion}
@@ -1461,7 +1471,10 @@
%
%===============
% Rule 6.1.13-1 CosDocument, isOptionalContentPresent == false
- ,Catalog_no_OCProperties =
+ ,Catalog_no_OCProperties =
+ % Rule 6.9-4 The AS key shall not appear in any optional content configuration dictionary.
+ % actually only starting with A-2 but doesn't harm here either
+ ,Catalog_OCProperties_no_AS=
%===============
% Rule 6.6.1-1: PDAction, S == "GoTo" || S == "GoToR" || S == "Thread"
% || S == "URI" || S == "Named" || S == "SubmitForm"
@@ -1508,6 +1521,13 @@
{ embed_content}
\prop_gput:cnn
{ g__pdfmeta_standard_pdf/A-2B_prop }{max_pdf_version}{1.7}
+\prop_gput:cnn
+ { g__pdfmeta_standard_pdf/A-2B_prop }{omit_CID}{}
+\prop_gremove:cn
+ { g__pdfmeta_standard_pdf/A-2B_prop }
+ { Catalog_no_OCProperties }
+
+ %A-2u ==============
\prop_new:c { g__pdfmeta_standard_pdf/A-2U_prop }
\prop_gset_eq:cc
{ g__pdfmeta_standard_pdf/A-2U_prop }
@@ -1585,7 +1605,8 @@
{ g__pdfmeta_standard_pdf/A-4_prop }{conformance}
\prop_gremove:cn
{ g__pdfmeta_standard_pdf/A-4_prop }{max_pdf_version}
-
+\prop_gremove:cn
+ { g__pdfmeta_standard_pdf/A-4_prop }{Catalog_OCProperties_no_AS}
\prop_new:c { g__pdfmeta_standard_pdf/A-4F_prop }
\prop_gset_eq:cc
{ g__pdfmeta_standard_pdf/A-4F_prop }
@@ -1808,6 +1829,15 @@
_pdfstandard / UA-1 .code:n =
{
\AddToDocumentProperties [document]{pdfstandard-UA}{{1}{}}
+ \AddToHook{begindocument/before}
+ {
+ \pdf_version_compare:NnF < {2.0}
+ {
+ \msg_warning:nneee
+ {pdf}{wrong-pdfversion}
+ {\pdf_version:}{high}{UA-1}
+ }
+ }
},
_pdfstandard / UA-2 .code:n =
{
@@ -1818,6 +1848,12 @@
{
\__pdfmeta_xmp_wtpdf_accessibility_declaration:
\__pdfmeta_xmp_wtpdf_reuse_declaration:
+ \pdf_version_compare:NnT < {2.0}
+ {
+ \msg_warning:nneee
+ {pdf}{wrong-pdfversion}
+ {\pdf_version:}{low}{UA-2}
+ }
}
},
xmp .choice:,
@@ -1866,7 +1902,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: }
@@ -1945,7 +1982,7 @@
\tl_new:N \l__pdfmeta_xmp_currentdate_tl
\seq_new:N \l__pdfmeta_xmp_currentdate_seq
\cs_new_protected:Npn \__pdfmeta_xmp_date_get:nNN #1 #2 #3
- %#1 property, #2 tl var with PDF date, #3 seq for splitted date
+ %#1 property, #2 tl var with PDF date, #3 seq for split date
{
\tl_set:Ne #2 { \GetDocumentProperties{#1} }
\tl_if_blank:VTF #2
@@ -2187,63 +2224,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 %
@@ -2275,6 +2327,12 @@
{Integer}
{internal}
{Year~of~standard}
+\__pdfmeta_xmp_property_new:nnnnn
+ {pdfaid}
+ {rev}
+ {Integer}
+ {internal}
+ {Revision~year~of~standard}
\__pdfmeta_xmp_schema_new:nnn
{PDF/UA~Universal~Accessibility~Schema}
{pdfuaid}
@@ -2443,7 +2501,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}
@@ -2806,9 +2864,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:
@@ -2991,6 +3051,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
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 5eb909751ee..0d31a57e494 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-05-23}{0.96i}
+\ProvidesExplPackage{pdfmanagement-testphase}{2024-10-27}{0.96n}
{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 cc220aa313e..bde07318fdc 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-05-23 v0.96i patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2024-10-27 v0.96n 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 62890e82891..3c914b406fb 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/pdfpages.sty
+++ b/Master/texmf-dist/tex/latex/pdfpages/pdfpages.sty
@@ -24,12 +24,12 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6a}
+\def\AM@fileversion{v0.6c}
\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-05-29 13:40:24 +0200 $
-\AM@Git@SHA@process$SHA-1: 8248eea896cba74c6d712bddc3e4ae8d4c403081 $
+\AM@Git@Date@process$Date: 2024-10-28 16:42:54 +0100 $
+\AM@Git@SHA@process$SHA-1: 0245196e5b1316cbcdc0ca6a1e8bc634dce1f74e $
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pdfpages}
[\AM@Git@Date\space\AM@fileversion\space
@@ -137,6 +137,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}{}
@@ -717,7 +718,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
@@ -1146,6 +1150,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
@@ -1565,6 +1570,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}}
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def b/Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def
index 6f36c0a652b..bae3525d512 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppdvipdfmx.def
@@ -24,12 +24,12 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6a}
+\def\AM@fileversion{v0.6c}
\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-05-29 13:40:24 +0200 $
-\AM@Git@SHA@process$SHA-1: 8248eea896cba74c6d712bddc3e4ae8d4c403081 $
+\AM@Git@Date@process$Date: 2024-10-28 16:42:54 +0100 $
+\AM@Git@SHA@process$SHA-1: 0245196e5b1316cbcdc0ca6a1e8bc634dce1f74e $
\ProvidesFile{ppdvipdfmx.def}
[\AM@Git@Date\space\AM@fileversion\space
Pdfpages driver for dvipdfmx (AM)]
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppdvips.def b/Master/texmf-dist/tex/latex/pdfpages/ppdvips.def
index b44308c0fe7..08084aa00bd 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppdvips.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppdvips.def
@@ -24,12 +24,12 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6a}
+\def\AM@fileversion{v0.6c}
\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-05-29 13:40:24 +0200 $
-\AM@Git@SHA@process$SHA-1: 8248eea896cba74c6d712bddc3e4ae8d4c403081 $
+\AM@Git@Date@process$Date: 2024-10-28 16:42:54 +0100 $
+\AM@Git@SHA@process$SHA-1: 0245196e5b1316cbcdc0ca6a1e8bc634dce1f74e $
\ProvidesFile{ppdvips.def}
[\AM@Git@Date\space\AM@fileversion\space
Pdfpages driver for dvips (AM)]
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppluatex.def b/Master/texmf-dist/tex/latex/pdfpages/ppluatex.def
index d885101ed45..618dcd177e8 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppluatex.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppluatex.def
@@ -24,12 +24,12 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6a}
+\def\AM@fileversion{v0.6c}
\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-05-29 13:40:24 +0200 $
-\AM@Git@SHA@process$SHA-1: 8248eea896cba74c6d712bddc3e4ae8d4c403081 $
+\AM@Git@Date@process$Date: 2024-10-28 16:42:54 +0100 $
+\AM@Git@SHA@process$SHA-1: 0245196e5b1316cbcdc0ca6a1e8bc634dce1f74e $
\ProvidesFile{ppluatex.def}
[\AM@Git@Date\space\AM@fileversion\space
Pdfpages driver for LuaTeX (AM)]
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppnull.def b/Master/texmf-dist/tex/latex/pdfpages/ppnull.def
index 153a63b3a87..02341ba21a3 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppnull.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppnull.def
@@ -24,12 +24,12 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6a}
+\def\AM@fileversion{v0.6c}
\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-05-29 13:40:24 +0200 $
-\AM@Git@SHA@process$SHA-1: 8248eea896cba74c6d712bddc3e4ae8d4c403081 $
+\AM@Git@Date@process$Date: 2024-10-28 16:42:54 +0100 $
+\AM@Git@SHA@process$SHA-1: 0245196e5b1316cbcdc0ca6a1e8bc634dce1f74e $
\ProvidesFile{ppnull.def}
[\AM@Git@Date\space\AM@fileversion\space
Pdfpages dummy driver (AM)]
diff --git a/Master/texmf-dist/tex/latex/pdfpages/pppdftex.def b/Master/texmf-dist/tex/latex/pdfpages/pppdftex.def
index 442aae7e70e..d199bd207e2 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/pppdftex.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/pppdftex.def
@@ -24,12 +24,12 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6a}
+\def\AM@fileversion{v0.6c}
\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-05-29 13:40:24 +0200 $
-\AM@Git@SHA@process$SHA-1: 8248eea896cba74c6d712bddc3e4ae8d4c403081 $
+\AM@Git@Date@process$Date: 2024-10-28 16:42:54 +0100 $
+\AM@Git@SHA@process$SHA-1: 0245196e5b1316cbcdc0ca6a1e8bc634dce1f74e $
\ProvidesFile{pppdftex.def}
[\AM@Git@Date\space\AM@fileversion\space
Pdfpages driver for pdfTeX (AM)]
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppvtex.def b/Master/texmf-dist/tex/latex/pdfpages/ppvtex.def
index d5a2a88c130..b3683305d00 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppvtex.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppvtex.def
@@ -24,12 +24,12 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6a}
+\def\AM@fileversion{v0.6c}
\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-05-29 13:40:24 +0200 $
-\AM@Git@SHA@process$SHA-1: 8248eea896cba74c6d712bddc3e4ae8d4c403081 $
+\AM@Git@Date@process$Date: 2024-10-28 16:42:54 +0100 $
+\AM@Git@SHA@process$SHA-1: 0245196e5b1316cbcdc0ca6a1e8bc634dce1f74e $
\ProvidesFile{ppvtex.def}
[\AM@Git@Date\space\AM@fileversion\space
Pdfpages driver for VTeX (AM)]
diff --git a/Master/texmf-dist/tex/latex/pdfpages/ppxetex.def b/Master/texmf-dist/tex/latex/pdfpages/ppxetex.def
index b1bd4a1f989..62113db73a2 100644
--- a/Master/texmf-dist/tex/latex/pdfpages/ppxetex.def
+++ b/Master/texmf-dist/tex/latex/pdfpages/ppxetex.def
@@ -24,12 +24,12 @@
%% Please send error reports and suggestions for improvements to
%% Andreas MATTHIAS <andreas.matthias@gmail.com>.
%%
-\def\AM@fileversion{v0.6a}
+\def\AM@fileversion{v0.6c}
\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-05-29 13:40:24 +0200 $
-\AM@Git@SHA@process$SHA-1: 8248eea896cba74c6d712bddc3e4ae8d4c403081 $
+\AM@Git@Date@process$Date: 2024-10-28 16:42:54 +0100 $
+\AM@Git@SHA@process$SHA-1: 0245196e5b1316cbcdc0ca6a1e8bc634dce1f74e $
\ProvidesFile{ppxetex.def}
[\AM@Git@Date\space\AM@fileversion\space
Pdfpages driver for XeTeX (AM)]
@@ -47,10 +47,10 @@
}
\def\AM@getpagecount{%
\expandafter\filename@parse\expandafter{\AM@currentdocname}%
- \edef\type@ext{%
- \noexpand\lowercase{%
- \noexpand\def\noexpand\type@ext{.\filename@ext}}}%
- \type@ext
+ \begingroup\edef\x{%
+ \lowercase{\endgroup
+ \def\noexpand\type@ext{\expandafter\scantokens\expandafter{\filename@ext\noexpand}}}}%
+ \x
\ifx\type@ext\AM@pdf@ext
\ifdefined\subfix
\let\AM@import@path\@empty
@@ -68,7 +68,7 @@
\def\AM@pagecount{1}%
\fi
}
-\def\AM@pdf@ext{.pdf}
+\def\AM@pdf@ext{pdf}
\begingroup
\def\gobble@nil#1\@nil{}
\ifnum\XeTeXversion=0
diff --git a/Master/texmf-dist/tex/latex/pdfx/pdfx.sty b/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
index 00b7dcc0f5e..88936f4045f 100644
--- a/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
+++ b/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
@@ -6,9 +6,9 @@
%%
%% pdfx.dtx (with options: `package')
%%
-%% Copyright (c) 2019, CV Radhakrishnan <cvr@river-valley.org>,
+%% Copyright (c) 2019-2024, CV Radhakrishnan <cvr@river-valley.org>,
%% Han The Thanh <thanh@river-valley.org>,
-%% Ross Moore <ross.moore@mq.edu.au>,
+%% Ross Moore <ozross@icloud.com> - primary contact,
%% Peter Selinger <selinger@mathstat.dal.ca>
%%
%% This file may be distributed and/or modified under the conditions
@@ -31,7 +31,7 @@
}{}%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pdfx}
- [2019/02/27 v1.6.3 PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
+ [2024/06/24 v1.6.5f PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
\newif\ifpdfx@noBOM \pdfx@noBOMfalse % use a BOM in the XMP packet
\newif\ifpdfx@x \pdfx@xfalse % PDF/X mode
@@ -50,13 +50,28 @@
\def\xmp@ReleaseDate{2005} % 2001 for PDF/X-1, 2005 for PDF/A-1,
% 2010 for PDF/A-2, 2012 for PDF/A-3.
+%% with Beamer pgf will have written Resource objects already
+\newif\ifpdfx@luacheck@needed
+\@ifpackageloaded{pgfcore}{\pdfx@luacheck@neededtrue}{}
+%% thanks to Ryutaroh Matsumoto for reporting this issue
+
\newcount\pdfx@minorversion
+\newcount\pdfx@majorversion
+\expandafter\ifx\csname pdfmajorversion\endcsname\relax
+%% RRM: 20240614 LuaLaTeX may not have this defined
+ \newcount\pdfmajorversion
+ \pdfmajorversion=1\relax
+\fi
\expandafter\ifx\csname pdfminorversion\endcsname\relax
-\else
- \global\pdfx@minorversion=\the\pdfminorversion
+%% RRM: 20240614 this could be set in luatex85 package
+ \newcount\pdfminorversion
+ \pdfminorversion=3\relax
\fi
+%% options can change these from the defaults
+\global\pdfx@majorversion=\the\pdfmajorversion
+\global\pdfx@minorversion=\the\pdfminorversion
-\def\pdfx@ErrorWarning#1#2#3#4{%
+\def\pdfx@ErrorWarning #1#2#3#4{%
\ifpdfx@noerr \PackageWarning{pdfx}{#1.^^J #2#3.^^J}%
\else \PackageError{pdfx}{#1}{#2#4.^^J
Use option 'noerr' to avoid this message.^^J}%
@@ -237,6 +252,9 @@
\DeclareOption{pdf15}{\global\pdfx@minorversion=5 }% 2005 Acrobat 6
\DeclareOption{pdf16}{\global\pdfx@minorversion=6 }% 2006 Acrobat 7 (ISBN 0-321-30474-8)
\DeclareOption{pdf17}{\global\pdfx@minorversion=7 }% 2008 ISO 32000-1:2008
+\DeclareOption{pdf20}{% 2020 ISO 32000-2:2020
+ \global\pdfx@majorversion=2 \relax
+ \global\pdfx@minorversion=0 }%
%% inhibits writing the XMP byte-order marker
\DeclareOption{noBOM}{\pdfx@noBOMtrue}
@@ -301,6 +319,13 @@
\ExecuteOptions{noBOM,a-1b}
\ProcessOptions
+\RequirePackage{ifluatex}
+\ifpdfx@luacheck@needed
+ \ifluatex
+ \RequirePackage{luatex85}
+ \fi
+\fi
+
\ifpdfx@ua\ifpdfx@x\else
\expandafter\if\xmp@Conformance A\else
\pdfx@ErrorWarning{PDF/UA requires 'Tagged PDF' for any structure.^^J
@@ -313,19 +338,23 @@
\expandafter\ifx\csname pdflastobj\endcsname\relax
\else
- \ifnum\pdflastobj >\z@ % pdftex has already written objects
+ \ifnum\pdflastobj >\z@ % pdf/luatex has already written objects
+ % e.g. by pgfcore , called from Beamer or other class
\ifnum\pdfx@minorversion=\pdfminorversion\else
\PackageError{pdfx}%
{^^J(pdfx) Cannot change the \string\pdfminorversion^^J%
- (pdfx) PDF version remains at 1.\the\pdfminorversion.^^J%
- (pdfx) Use \string\pdfminorversion=\the\pdfx@minorversion\space
+ (pdfx) PDF version remains at \the\pdfmajorversion.\the\pdfminorversion.^^J%
+ (pdfx) Use \string\pdfmajorversion=\the\pdfx@majorversion\space^^J%
+ and \string\pdfminorversion=\the\pdfx@minorversion\space
before \string\documentclass}%
{(pdfx) Another package or document-class has written objects into the PDF.^^J%
- (pdfx) Hit return to continue with PDF version 1.\the\pdfminorversion.%
- }%
+ (pdfx) Hit return to continue with PDF version %
+ \the\pdfmajorversion.\the\pdfminorversion.}%
+ \global\pdfx@majorversion=\the\pdfmajorversion
\global\pdfx@minorversion=\the\pdfminorversion
\fi
\else
+ \global\pdfmajorversion\pdfx@majorversion
\global\pdfminorversion\pdfx@minorversion
\fi
\fi
@@ -333,6 +362,7 @@
\expandafter\ifx\csname thepdfminorversion\endcsname\relax
\expandafter\ifx\csname pdfminorversion\endcsname\relax
\else
+ \xdef\thepdfmajorversion{\the\pdfmajorversion}
\xdef\thepdfminorversion{\the\pdfminorversion}
\fi\fi
@@ -341,16 +371,21 @@
\def\pdf@minorversion@xetex=#1{\gdef\thepdfminorversion{#1}}%
\let\pdfminorversion\pdf@minorversion@xetex
\else
- \ifnum\pdfminorversion < 4\relax
- \ifpdfx@x
- % more testing needed with PDF/X
- \else
- \pdfminorversion=4\relax % assumed for PDF/A ; options may change this for PDF/X
- \gdef\thepdfminorversion{4}%
- \fi
+ \ifnum\pdfmajorversion > 1\relax
+ \pdfminorversion=3\relax
+ %% else some JPG graphics with DCT encoding will fail
\else
- \ifnum\pdfminorversion<\thepdfminorversion\relax
- \global\pdfminorversion=\thepdfminorversion\relax
+ \ifnum\pdfminorversion < 4\relax
+ \ifpdfx@x
+ % more testing needed with PDF/X
+ \else
+ \pdfminorversion=4\relax % assumed for PDF/A ; options may change this for PDF/X
+ \gdef\thepdfminorversion{4}%
+ \fi
+ \else
+ \ifnum\pdfminorversion<\thepdfminorversion\relax
+ \global\pdfminorversion=\thepdfminorversion\relax
+ \fi
\fi
\fi
\fi
@@ -358,7 +393,8 @@
\pdfresetpageorigin=0
\fi
-\expandafter\ifx\csname pdfomitcharset\endcsname\relax\else
+\expandafter\ifx\csname pdfomitcharset\endcsname\relax
+\else
\ifpdfx@omitcharset
\pdfomitcharset = 1 %
%% do not create /Charset listings of font glyphs;
@@ -427,7 +463,9 @@
}%
\RequirePackage{pdftexcmds}%
\let\pdfx@mdfivesum\pdf@mdfivesum
- \let\pdfescapestring\pdf@escapestring
+ \long\def\pdf@escapestring@byte #1{%
+ \directlua {oberdiek.pdftexcmds.escapestring("\luaescapestring {#1}", "byte")}}%
+ %\let\pdf@escapestring\pdf@escapestring@byte
\else
\ifxetex
\expandafter\ifx\csname mdfivesum\endcsname\relax
@@ -477,6 +515,13 @@
\pdfgeninterwordspace=0 \relax
\fi
\begingroup
+ \expandafter\ifx\csname stockwidth\endcsname\relax\else
+ \ifdim\stockwidth=\z@ %% 20240528
+ \else
+ %% 20231023 support for memoir's stockwidth/height
+ \let\paperwidth\stockwidth
+ \let\paperheight\stockheight
+ \fi \fi
\dimen0=0.996264009963\paperwidth\relax
\edef\pdfx@mwidth{\strip@pt\dimen0}%
\advance\dimen0 -25\p@
@@ -524,7 +569,8 @@
\else
\ifnum\thepdfminorversion >3 \relax
\expandafter\ifx\csname pdfsuppresswarningdupmap\endcsname\relax
- \expandafter\ifx\csname pdfmapline\endcsname\relax\else
+ \expandafter\ifx\csname pdfmapline\endcsname\relax
+ \else
\pdfmapline{+dummy-space <dummy-space.pfb}
\fi
\else
@@ -554,16 +600,31 @@
\@namedef{M@L8U}{}%
%% adjust to LaTeX's 2018 change to the default encoding
+\def\pdfx@utfencodingname{utf8}%
+\def\pdfx@RawInputEncoding{%
+ \UseRawInputEncoding
+}
\expandafter\ifx\csname inputencodingname\endcsname\relax
\else
\def\pdfx@restoreencoding#1{%
- \@tempcnta=128
+ \@tempcnta=1\relax
+ \loop
+ \advance\@tempcnta\@ne
+ \ifnum\@tempcnta<8\relax
+ \repeat
+ \catcode11=13 \relax
+ \@tempcnta=14\relax
+ \loop
+ \advance\@tempcnta\@ne
+ \ifnum\@tempcnta<31 \relax
+ \repeat
+ \@tempcnta=128\relax
\loop
- \catcode\@tempcnta=13
\advance\@tempcnta\@ne
\ifnum\@tempcnta<256
\repeat
- \inputencoding{#1}%
+ \let\inputencodingname\relax %% kill previous
+ \inputencoding{#1}%}%
\let\LastDeclaredEncoding\pdfx@LastDeclaredEncoding
\let\DeclareFontEncoding@\pdfx@DeclareFontEncoding@
\let\DeclareUnicodeCharacter\pdfx@DeclareUnicodeCharacter
@@ -572,7 +633,9 @@
\let\pdfx@inputencodingname\inputencodingname
\global\let\pdfx@DeclareUnicodeCharacter\DeclareUnicodeCharacter
\global\let\pdfx@DeclareFontEncoding@\DeclareFontEncoding@
- \UseRawInputEncoding
+%% \expandafter\showthe\catcode\@tempcnta
+%% if the encoding is utf8 then don't change it here – wrong!
+ \expandafter\pdfx@RawInputEncoding %\fi
\fi
\InputIfFileExists{\pdfx@encodingfile}{}{}
\expandafter\ifx\csname pdfx@inputencodingname\endcsname\relax
@@ -699,6 +762,9 @@
\ifx\relax#1\relax\else\gdef\xmp@lang@Identifier{#1}\fi
\def\afterxmp@parse{\let\Identifier\pdfx@extraIdentifier}%
\xmp@parse{\global\let\xmp@Identifier\@this}}
+\newcommand{\pdfx@Nickname}[1][]{%
+ \ifx\relax#1\relax\else\gdef\xmp@lang@Nickname{#1}\fi
+ \xmp@parse{\global\let\xmp@Nickname\@this}}
\newcommand{\pdfx@Thumbnails}{%
\def\afterxmp@parse{\let\Thumbnails\pdfx@extraThumbnails}%
\xmp@parse{\global\let\xmp@Thumbnails\@this}}
@@ -899,6 +965,8 @@
\xmp@parse{\global\let\xmp@extraIdentifier\@this}%
}%
+%% Nickname only supports a single usage, for PDF/X
+
\newcommand{\pdfx@extraThumbnails}[1][]{%
\ifx\relax#1\relax
\expandafter\expandafter\expandafter\gdef
@@ -1254,6 +1322,9 @@
%%----------------------------------------------------------------------
%% Alternative way to get the CreationDate using Lua for XeTeX
\ifdefined\pdfcreationdate\else
+ \ifdefined\creationdate %% added to XeTeX in 2019
+ \let\pdfcreationdate\creationdate
+ \else
\begingroup %% ensure correct catcodes, not done by \dospecials
\catcode`\:=12 \catcode`\.=12
\begin{filecontents*}{creationdate.lua}
@@ -1289,7 +1360,7 @@
\def\noexpand\pdfcreationdate{\string D:20181028075445+10'00'}}%
\x
\fi
-\fi
+\fi \fi
%%----------------------------------------------------------------------
\def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfx@mdfivesum{#1}}
@@ -1460,7 +1531,6 @@
\fi\fi
}%
\fi\fi
-\hypersetup{pdfencoding=auto}% unicode
\expandafter\ifx\csname KV@Hyp@psdextra\endcsname\relax\else
\hypersetup{psdextra}
\fi
@@ -2195,16 +2265,17 @@
%% encoding, and store the result in \toka As a special case, if \tokb
%% is \@empty, set \toka to \@empty.
-\def\pdfx@topdfstring#1#2{%
- \ifx#2\@empty
+\RequirePackage{stringenc}% prevent it loading later inside a group
+\def\pdfx@topdfstring #1#2{%
+ \ifx #2\@empty
\global\let#1\empty
\else
\begingroup
\ifluatex\else\ifxetex\else
\inputencoding{utf8}%
\fi\fi
- \hypersetup{pdfencoding=auto}%
- \pdfstringdef#1{#2}%
+ \@ifl@t@r\fmtversion{2022/06/01}{}{\hypersetup{pdfencoding=auto}}%
+ \pdfstringdef #1{#2}%
\endgroup
\fi
}
@@ -2474,7 +2545,7 @@
\spacefactor\accent@spacefactor
}
%% same for named accents in math-mode
-\def\pdfx@mathaccentV#1#2#3#4#5{%
+\def\pdfx@mathaccentV #1#2#3#4#5{%
#5{\mathsurround=\z@\relax
\everymath{}%
\mathchoice
@@ -2485,10 +2556,67 @@
}%
\AMS@mathaccentV{#1}{#2}{#3}{#4}{\phantom{#5}}%
}
+
+%%% the original AMS coding:
+%%\mathaccentV=macro: #1#2#3#4#5->\ifmmode
+%% \gdef \macc@tmp {\macc@depth \@ne }%
+%% \setbox \z@ \hbox {\let\mathaccentV \macc@test
+%% \let \use@mathgroup \@gobbletwo
+%% \let \select@group \@gobblethree \frozen@everymath {}$#5$}\macc@tmp
+%% \ifnum \macc@depth =\@ne
+%% \global \let \macc@nucleus \@empty
+%% \mathaccent "\accentclass@
+%% \else \@xp \macc@nested
+%% \fi #2#3#4{#5}\macc@nucleus
+%% \else
+%% \@xp \nonmatherr@ \csname #1\endcsname \fi .
+
+\def\pdfx@AMS@mathaccentV #1#2#3#4#5{%
+ \ifmmode
+ \gdef \macc@tmp {\macc@depth \@ne }%
+ \setbox \z@ \hbox {\let\mathaccentV \macc@test
+ \let \use@mathgroup \@gobbletwo
+ \let \select@group \@gobblethree \frozen@everymath {}$\phantom{#5}$}\macc@tmp
+ \ifnum \macc@depth =\@ne
+ \global \let \macc@nucleus \@empty
+ \mathaccent "\accentclass@
+ \else \@xp \macc@nested
+ \fi #2#3#4{#5}\macc@nucleus
+ \else
+ \@xp \nonmatherr@ \csname #1\endcsname
+ \fi
+}
+
+%% code supplied by Yuwsuke Kieda, 7 May 2019 :
+%% https://gist.github.com/yuw/a31936370647d0044eeb4e47f3ae913f
+%%
+\@ifpackageloaded{amsmath}{%
+ \def\pdfx@macc@a #1#2{%
+ \begingroup
+ \let\macc@style#1\relax
+ \def\macc@palette ##1{##1\macc@style}%
+ \advance\macc@depth\m@ne
+ \ifnum\macc@depth=\z@
+ \gdef\macc@nucleus{\phantom{#2}}%% <<< here
+ \setbox\z@\hbox{$#1#2\@empty{}\macc@skewchar$}%
+ \setbox\tw@\hbox{$#1#2\@empty\macc@skewchar$}%
+ \dimen@\tw@\wd\tw@ \advance\dimen@-\tw@\wd\z@
+ \xdef\macc@kerna{\the\dimen@\relax}%
+ \setbox4\hbox{$#1#2\acc@check\@empty$}%
+ \global\setbox\@ne\hbox to\wd4{}%
+ \ht\@ne\ht4 \dp\@ne\dp4
+ \xdef\macc@kernb{\the\wd4\relax}%
+ \mathaccent\macc@code{\box\@ne\kern\macc@kerna}%
+ \else
+ \mathaccent\macc@code{\let\macc@adjust\@empty #1#2\@empty}%
+ \macc@adjust
+ \fi
+ \endgroup
+ }}\relax
\AtBeginDocument{%
\@ifpackageloaded{amsmath}{%
\let\AMS@mathaccentV\mathaccentV
- \let\mathaccentV\pdfx@mathaccentV}%
+ }%
}%
%% How to support XeTeX here ?
@@ -2740,10 +2868,25 @@
%% it should be loaded outside the grouping, else biblatex may barf
%%
\RequirePackage{ifthen}
-\begingroup
+
+%% 2024-04-05: from July 2024 LaTeX will not allow packages to load
+%% within a grouping, so reorganise a bit.
+%%
%% override the \ifpdf check of xmpincl package, inside the grouping
- \pdftrue
- \RequirePackage{xmpincl}
+%% after saving its current value:
+\let\pdfx@ifpdf\ifpdf
+\pdftrue
+%% now load the packages, then enter the grouping:
+\RequirePackage{xmpincl}
+%%
+\begingroup
+%%% 20240405 revert the value of \ifpdf ...
+\pdfx@ifpdf
+\else
+ %% 20240624 ... outside the grouping
+ \aftergroup\pdffalse
+\fi
+
%% combine coding from xmpincl and hyperxml to support XeTeX
\def\pdfx@xmpincl@xetex#1{%
\IfFileExists{#1.xmp}{%
@@ -2799,6 +2942,13 @@
%%----------------------------------------------------------------------
\begingroup
+%% 20210706 we need a pointer to unexpandable \par
+ \expandafter\ifx\csname tex_par:D\endcsname \relax
+ \let\pdfx@par\par
+ \else
+%% using LaTeX 2021-06 or later
+ \expandafter\let\expandafter\pdfx@par\csname tex_par:D\endcsname
+ \fi
\ifpdfx@x
\ifpdfx@vt
\def\xmp@template{pdfvt}%
@@ -2852,9 +3002,11 @@
%% beware 128 space characters -- for padding end of XMP packet
\gdef\paddingline{ }%
\typeout{Using XMP template file: \xmp@template.xmp}%
+ %% 20210706 ensure \par is unexpandable
+ \let\par\pdfx@par
\includexmp{\xmp@template}%
\endgroup
-
+%%%
%%
%% revert active characters to previous encoding
%%
@@ -2918,13 +3070,27 @@
%%
%% controls the color model and conversions with xcolor package
%%
+\def\pdfx@selectcolormodel@doing #1{%% Warning
+ \PackageWarning{pdfx}{Setting all color commands to #1,^^J%
+ consistent with the Color Model for PDF/%
+ \ifpdfx@x X \else \ifpdfx@e E \else A \fi\fi}%
+ }%% 20240528 inhibit any changes
+\def\pdfx@selectcolormodel@done #1{%% Warning
+ \PackageWarning{pdfx}{Color Model already set for PDF/%
+ \ifpdfx@x X\else \ifpdfx@e E\else A\fi\fi,^^Jcannot change to #1 }%
+ }%% 20240528 inhibit any changes
+%%
\ifpdfx@cmyk
%
% this will have been done already for PDF/X
%
\PassOptionsToPackage{cmyk,hyperref}{xcolor}
- \def\pdfx@handlexcolor{\def\@@mod{cmyk}\selectcolormodel{cmyk}%
- \convertcolorsUtrue\convertcolorsDtrue}
+ \def\pdfx@handlexcolor{\def\@@mod{cmyk}%
+ \pdfx@selectcolormodel@doing{cmyk}%
+ \selectcolormodel{cmyk}%
+ \convertcolorsUtrue\convertcolorsDtrue
+ \let\selectcolormodel\pdfx@selectcolormodel@done
+ }
\ifpdfx@x
\else
%% \AtBeginDocument{%
@@ -2947,8 +3113,12 @@
\fi
\else
\PassOptionsToPackage{rgb,hyperref}{xcolor}
- \def\pdfx@handlexcolor{\def\@@mod{rgb}\selectcolormodel{rgb}%
- \convertcolorsUtrue\convertcolorsDtrue}
+ \def\pdfx@handlexcolor{\def\@@mod{rgb}%
+ \pdfx@selectcolormodel@doing{rgb}%
+ \selectcolormodel{rgb}%
+ \convertcolorsUtrue\convertcolorsDtrue
+ \let\selectcolormodel\pdfx@selectcolormodel@done
+ }
\fi
\@ifpackageloaded{xcolor}{\pdfx@handlexcolor
\ifpdfx@cmyk\else\color{black}\fi}{%
diff --git a/Master/texmf-dist/tex/latex/pgf-periodictable/pgf-PeriodicTable.sty b/Master/texmf-dist/tex/latex/pgf-periodictable/pgf-PeriodicTable.sty
index 3768fc4f249..41e135194ff 100644
--- a/Master/texmf-dist/tex/latex/pgf-periodictable/pgf-PeriodicTable.sty
+++ b/Master/texmf-dist/tex/latex/pgf-periodictable/pgf-PeriodicTable.sty
@@ -1,4 +1,8 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Hugo Gomes @ 09/09/2024 v2.1.4
+% Hugo Gomes @ 07/08/2024 v2.1.3
+% Hugo Gomes @ 01/08/2024 v2.1.2
+% Hugo Gomes @ 07/07/2024 v2.1.1
% Hugo Gomes @ 03/04/2024 v2.1.0a
% Hugo Gomes @ 14/02/2024 v2.1.0
% Hugo Gomes @ 29/05/2023 v2.0.1
@@ -7,7 +11,7 @@
% Hugo Gomes @ 10/10/2022 v1.0.0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}%
-\ProvidesPackage{pgf-PeriodicTable}[03/04/2024 pgf-PeriodicTable v2.1.0a]%%
+\ProvidesPackage{pgf-PeriodicTable}[08/09/2024 pgf-PeriodicTable v2.1.4]%%
\RequirePackage{tikz}%
\usetikzlibrary{fadings}%
\tikzfading[name=aumentax, left color=transparent!80, right color=transparent!1]%
@@ -16,11 +20,19 @@
\tikzfading[name=diminuiy, bottom color=transparent!80, top color=transparent!1]%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% check the engine and load font packages
-\ifx\pdfliteral\undefined\relax% XeLaTeX or LuaLaTeX
-\RequirePackage{fontspec}[2020/02/03]\edef\pgfPT@fontspec{1}%
-\else% pdfLaTeX
-\RequirePackage[T1]{fontenc}\edef\pgfPT@fontspec{0}%
-\fi%
+% changed in v2.1.3
+% pdfLaTeX --------------------------------------------------
+\ifx\pdftexversion\undefined\else%
+\RequirePackage[T1]{fontenc}\edef\pgfPT@fontspec{0}\edef\pgfPT@engine{0}%
+\fi% -----------------------------------------------------------
+% LuaLaTeX --------------------------------------------------
+\ifx\directlua\undefined\else%
+\RequirePackage{fontspec}[2020/02/03]\edef\pgfPT@fontspec{1}\edef\pgfPT@engine{1}%
+\fi% -----------------------------------------------------------
+% XeLaTeX ---------------------------------------------------
+\ifx\XeTeXrevision\undefined\else%
+\RequirePackage{fontspec}[2020/02/03]\edef\pgfPT@fontspec{1}\edef\pgfPT@engine{2}%
+\fi% -----------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ifs to user language and list of user translations available
\newif\ifpgfPT@user@lang\pgfPT@user@langfalse%
@@ -190,10 +202,10 @@ font,IUPAC,capitalize element names=false,show title,show period numbers,show gr
show legend,legend acronyms,legend back color,show legend pins,show extra legend,legend radio color,%
legend CS color,legend Z color,show blocks=false,show families=false,show MNM line,show periodic variations=false,%
show label LaAc,title font,title color,cell width,cell height,cell style,label font,period label color,group label color,%
-label LaAc font,Z list,CS solid, CS liquid,CS gas,CS synt,CS font,CS render mode,CS outline color,CS outline width,%
+label LaAc font,group numbers,Roman label color,Z list,CS solid, CS liquid,CS gas,CS synt,CS font,CS render mode,CS outline color,CS outline width,%
Z backcolor,Z color,Z font,Z align,Z padding,Z use box width=false,name color,name font,name align,Ar color,Ar font,Ar label,Ar precision,%
R color,R font,Rcov color,Rcov font,Rion color,Rion font,Ei color,Ei font,eneg color,eneg font,eaff color,eaff font,%
-O color,O font,Tmelt color,Tmelt font,TmeltC color,TmeltC font,Tboil color,Tboil font,TboilC color,TboilC font,%
+O color,O font,O Roman=false,Tmelt color,Tmelt font,TmeltC color,TmeltC font,Tboil color,Tboil font,TboilC color,TboilC font,%
eDist color,eDist font,eDist sep,eConfign color,eConfign font,eConfignl color,eConfignl font,d color,d font,Cp color,Cp font,%
kT color,kT font,ls color,ls font,ls align,ls,lsa color,lsa font,lsb color,lsb font,lsc color,lsc font,lsca color,lsca font,%
DiscY color,DiscY font,DiscY BC scale,DiscC color,DiscC font,spectra color,spectra font,MNM line color,MNM line width,%DiscC,
@@ -661,6 +673,16 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
\fi%
% O -> Oxidation States
\ifpgfPT@O\relax%
+ \ifpgfPTORoman% new in v2.1.1
+ \ifnum\Z=25\relax% Mn
+ \node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]%
+ at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\resizebox{.95\linewidth}{\height}{\pgfPT@data@ORoman}}
+ \vfil}};%
+ \else%
+ \node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]%
+ at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\pgfPT@data@ORoman}\vfil}};%
+ \fi%
+ \else%
\ifnum\Z=25\relax% Mn
\node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]%
at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\resizebox{.95\linewidth}{\height}{\pgfPT@data@O}}
@@ -669,6 +691,7 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
\node[font=\pgfPTOfont,text=\pgfPTOcolor,text width=\pgfPT@data@O@wd,text centered]%
at ([xshift=\pgfPT@data@O@x,yshift=-\pgfPT@data@O@y]\Z) {\vbox to\pgfPT@data@O@ht{\vfil\pgfPT@box@zerodepth{\pgfPT@data@O}\vfil}};%
\fi%
+ \fi%
\fi%
% Tmelt -> Melting Point (Kelvin)
\ifpgfPT@Tmelt\relax%
@@ -1188,15 +1211,21 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
% groups -->
\ifpgfPTgrlabels%
\global\pgfPTis@labeldrawnfalse%
+\pgfPT@gr@numbers{\pgfPTgrnum}% new in v2.1.1
\ifpgfPTIUPACMMIX%
\foreach \group in {1,2,4,5,...,18} {%
\edef\pgfPT@@grlist{\csname pgfPT@cells@G\@Roman\group\endcsname}%
\foreach \Zsearch in \pgfPT@@grlist{%
\foreach \Z in \pgfPT@@cellslist {%
\ifnum\Z=\Zsearch\global\pgfPTis@labeldrawntrue%
- {\pgfPTlabfont\pgfPTnumberfont\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else\let\pgfPT@printnum\relax\fi%
- \node[above,font=\pgfPTlabfont,text=\pgfPTlabgrcolor] at%
- ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};}\breakforeach\fi%
+ {\pgfPTlabfont\pgfPTnumberfont\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else%
+ \ifpgfPT@grRoman\let\pgfPT@printnum\pgfPT@gr@Roman\colorlet{pgfPT@grcolor}{\pgfPTRomanlabgrcolor}\else\let\pgfPT@printnum\relax\fi\fi%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};
+ \ifpgfPT@grarabic\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift+2ex]\Z) {\group};\fi}%
+ \breakforeach\fi%
}%
\ifpgfPTis@labeldrawn\global\pgfPTis@labeldrawnfalse\breakforeach\fi%
}%
@@ -1205,9 +1234,14 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
\foreach \Zsearch in \pgfPT@cells@GIIILaAc{%
\foreach \Z in \pgfPT@@cellslist {%
\ifnum\Z=\Zsearch\global\pgfPTis@labeldrawntrue%
- {\pgfPTlabfont\pgfPTnumberfont\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else\let\pgfPT@printnum\relax\fi%
- \node[above,font=\pgfPTlabfont,text=\pgfPTlabgrcolor] at%
- ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{3}};}\breakforeach\fi%
+ {\pgfPTlabfont\pgfPTnumberfont\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else%
+ \ifpgfPT@grRoman\let\pgfPT@printnum\pgfPT@gr@Roman\colorlet{pgfPT@grcolor}{\pgfPTRomanlabgrcolor}\else\let\pgfPT@printnum\relax\fi\fi%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{3}};
+ \ifpgfPT@grarabic\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift+2ex]\Z) {3};\fi}%
+ \breakforeach\fi%
}%
\ifpgfPTis@labeldrawn\global\pgfPTis@labeldrawnfalse\breakforeach\fi%
}%
@@ -1217,9 +1251,14 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
\foreach \Zsearch in \pgfPT@@grlist{%
\foreach \Z in \pgfPT@@cellslist {%
\ifnum\Z=\Zsearch\global\pgfPTis@labeldrawntrue%
- {\pgfPTlabfont\pgfPTnumberfont\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else\let\pgfPT@printnum\relax\fi%
- \node[above,font=\pgfPTlabfont,text=\pgfPTlabgrcolor] at%
- ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};}\breakforeach\fi%
+ {\pgfPTlabfont\pgfPTnumberfont\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}\ifpgfPT@zhnumbers@gr\let\pgfPT@printnum\zhnumber\else%
+ \ifpgfPT@grRoman\let\pgfPT@printnum\pgfPT@gr@Roman\colorlet{pgfPT@grcolor}{\pgfPTRomanlabgrcolor}\else\let\pgfPT@printnum\relax\fi\fi%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift]\Z) {\pgfPT@printnum{\group}};%
+ \ifpgfPT@grarabic\colorlet{pgfPT@grcolor}{\pgfPTlabgrcolor}%
+ \node[above,font=\pgfPTlabfont,text=pgfPT@grcolor] at%
+ ([xshift=\pgfPT@@xshift,yshift=\pgfPT@grlabel@yshift+2ex]\Z) {\group};\fi}%
+ \breakforeach\fi%
}%
\ifpgfPTis@labeldrawn\global\pgfPTis@labeldrawnfalse\breakforeach\fi%
}%
@@ -2408,7 +2447,7 @@ d unit,d precision,E precision,ls unit,ls precision,T precision,Cp precision,kT
\tikz{%
\node[text width=\pgfPT@boxwd,text centered,inner sep=0pt] (exFlag) at (0,0) {\includegraphics[height=\pgfPT@boxht]{flags/\pgfPT@country@flag.pdf}};%
\global\pgfPT@countc=0%
- \node[below right,text width=3.75*\pgfPTcellwd,inner xsep=0pt] at ([xshift=.025*\pgfPTcellwd]exFlag.north east) {%
+ \node[below right,text width=2.2*\pgfPTcellwd,inner xsep=0pt] at ([xshift=.025*\pgfPTcellwd]exFlag.north east) {%
\@for\pgfPT@tmp:=\pgfPTlanguages\do{%
\ifnum\pgfPT@countc=0\relax%
\pgfPT@box@zerodepth{\csname pgfPT@country@name@\pgfPT@tmp\endcsname}%
@@ -2979,7 +3018,9 @@ rectangle
\fi% \pgfPT@element@count=118
\fi\fi% min=1 & max 118
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\@pgfPT@resetlayers% Restoring pgf layers to those used in the document
+% corrected in v2.1.2: \@pgfPT@resetlayers -> \pgfsetlayers{\@pgfPT@resetlayers}
+% ... Warning: Missing character: There is no m (U+006D) in font nullfont! ...
+\pgfsetlayers{\@pgfPT@resetlayers}% Restoring pgf layers to those used in the document
\fontseries{\seriesdefault}\fontshape{\shapedefault}\fontfamily{\familydefault}\selectfont% Restoring the font settings to normal mode in the document
}% end tikz
}%
@@ -3054,15 +3095,14 @@ rectangle
% renders text via pdfliteral: -------------
% #1 outline width width #2 txt #3 #4 #5 rgb stroke color #6 #7 #8 rgb fill color -----------
% #9 txt render mode (0 - fill 1 - stroke 2 - fill then stroke ---------
-\ifx\pdfliteral\undefined\relax%
-\ifx\pdfextension\undefined\relax% XeLaTeX
-\def\pgfPT@lt[#1](#2)(#3,#4,#5)(#6,#7,#8)(#9){\special{pdf:literal direct #1 w #3 #4 #5 RG #6 #7 #8 rg #9 Tr}#2\special{pdf:literal direct 0 0 0 rg 1 w 0 Tr}}%
-\else% LuaLaTeX
-\protected\def\pdfliteral{\pdfextension literal}
+% changed in v2.1.3
+\ifcase\pgfPT@engine\relax% pdfLaTeX
\def\pgfPT@lt[#1](#2)(#3,#4,#5)(#6,#7,#8)(#9){\pdfliteral direct {#1 w #3 #4 #5 RG #6 #7 #8 rg #9 Tr}{#2}\pdfliteral direct {0 0 0 rg 1 w 0 Tr}}%
-\fi%
-\else% pdfLaTeX
+\or% LuaLaTeX
+\protected\def\pdfliteral{\pdfextension literal}%
\def\pgfPT@lt[#1](#2)(#3,#4,#5)(#6,#7,#8)(#9){\pdfliteral direct {#1 w #3 #4 #5 RG #6 #7 #8 rg #9 Tr}{#2}\pdfliteral direct {0 0 0 rg 1 w 0 Tr}}%
+\or% XeLaTeX
+\def\pgfPT@lt[#1](#2)(#3,#4,#5)(#6,#7,#8)(#9){\special{pdf:literal direct #1 w #3 #4 #5 RG #6 #7 #8 rg #9 Tr}#2\special{pdf:literal direct 0 0 0 rg 1 w 0 Tr}}%
\fi%
% END !! \pgfPT@lt --------------------------------------------------------------------------------
%
@@ -3073,9 +3113,10 @@ rectangle
% auxiliary macros to set the rgb components of one color ---------------------------------------
% with use of \extractcolorspecs from xcolor package ---------------------------------------------
% each component is stored in \pgfPT@r, g or b & s or f -------------------------------------
-\def\pgfPT@extract@rgb@stroke#1{\extractcolorspecs{#1}{\pgfPTcolmodel}{\pgfPTcolinfo}\expandafter\pgfPT@set@rgb@stroke\pgfPTcolinfo\relax}%
+% v3.1.3: added conversion of the color to rgb :: \colorlet{#1}[rgb]{#1}
+\def\pgfPT@extract@rgb@stroke#1{\colorlet{#1}[rgb]{#1}\extractcolorspecs{#1}{\pgfPTcolmodel}{\pgfPTcolinfo}\expandafter\pgfPT@set@rgb@stroke\pgfPTcolinfo\relax}%
\def\pgfPT@set@rgb@stroke#1,#2,#3\relax{\def\pgfPT@rs{#1}\def\pgfPT@gs{#2}\def\pgfPT@bs{#3}}%
-\def\pgfPT@extract@rgb@fill#1{\extractcolorspecs{#1}{\pgfPTcolmodel}{\pgfPTcolinfo}\expandafter\pgfPT@set@rgb@fill\pgfPTcolinfo\relax}%
+\def\pgfPT@extract@rgb@fill#1{\colorlet{#1}[rgb]{#1}\extractcolorspecs{#1}{\pgfPTcolmodel}{\pgfPTcolinfo}\expandafter\pgfPT@set@rgb@fill\pgfPTcolinfo\relax}%
\def\pgfPT@set@rgb@fill#1,#2,#3\relax{\def\pgfPT@rf{#1}\def\pgfPT@gf{#2}\def\pgfPT@bf{#3}}%
% END !! \pgfPT@color macros ------------------------------------------------------------------
%
diff --git a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.backcolors.keys.tex b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.backcolors.keys.tex
index 076f588ca02..b9e45c2b5ef 100644
--- a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.backcolors.keys.tex
+++ b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.backcolors.keys.tex
@@ -6,24 +6,25 @@
%
% defining PGF keys: the colors of the cells of the periodic table to be drawn -----------------
% list names available to use in key 'back color scheme', e.g. ----------------------------------
-% back color scheme=CPK or back color scheme=Wikipedia ------------------------------
+% v2.1.4 -> add prefix pgfPT to the built-in names
+% back color scheme=pgfPTCPK or back color scheme=pgfPTWikipedia ------------------
% if back color scheme=solid the back color key is used to fill the cells -------------------
-\def\pgfPT@backColorsScheme@default{.769/.812/.961,.678/.733/.925,.871/.89/.875,.922/.886/.71,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741}%
-\def\pgfPT@backColorsScheme@Soft{.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.945/.941/.918,.973/.945/.78,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.973/.945/.78,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.843/.839/.659,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918}%
-\def\pgfPT@backColorsScheme@Jmol{1/1/1,.851/1/1,.8/.502/1,.761/1/0,1/.71/.71,.565/.565/.565,.188/.314/.973,1/.051/.051,.565/.878/.314,.702/.89/.961,.671/.361/.949,.541/1/0,.749/.651/.651,.941/.784/.627,1/.502/0,1/1/.188,.122/.941/.122,.502/.82/.89,.561/.251/.831,.239/1/0,.902/.902/.902,.749/.761/.78,.651/.651/.671,.541/.6/.78,.612/.478/.78,.878/.4/.2,.941/.565/.627,.314/.816/.314,.784/.502/.2,.49/.502/.69,.761/.561/.561,.4/.561/.561,.741/.502/.89,1/.631/0,.651/.161/.161,.361/.722/.82,.439/.18/.69,0/1/0,.58/1/1,.58/.878/.878,.451/.761/.788,.329/.71/.71,.231/.62/.62,.141/.561/.561,.039/.49/.549,0/.412/.522,.753/.753/.753,1/.851/.561,.651/.459/.451,.4/.502/.502,.62/.388/.71,.831/.478/0,.58/0/.58,.259/.62/.69,.341/.09/.561,0/.788/0,.439/.831/1,1/1/.78,.851/1/.78,.78/1/.78,.639/1/.78,.561/1/.78,.38/1/.78,.271/1/.78,.188/1/.78,.122/1/.78,0/1/.612,0/.902/.459,0/.831/.322,0/.749/.22,0/.671/.141,.302/.761/1,.302/.651/1,.129/.58/.839,.149/.49/.671,.149/.4/.588,.09/.329/.529,.816/.816/.878,1/.82/.137,.722/.722/.816,.651/.329/.302,.341/.349/.38,.62/.31/.71,.671/.361/0,.459/.31/.271,.259/.51/.588,.259/0/.4,0/.49/0,.439/.671/.98,0/.729/1,0/.631/1,0/.561/1,0/.502/1,0/.42/1,.329/.361/.949,.471/.361/.89,.541/.31/.89,.631/.212/.831,.702/.122/.831,.702/.122/.729,.702/.051/.651,.741/.051/.529,.78/0/.4,.8/0/.349,.82/0/.31,.851/0/.271,.878/0/.22,.902/0/.18,.922/0/.149,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1}%
-\def\pgfPT@backColorsScheme@CPK{1/1/1,0/1/1,.467/0/1,0/.467/0,1/.667/.467,.133/.133/.133,.133/.2/1,1/.133/0,.122/.941/.122,0/1/1,.467/0/1,0/.467/0,.867/.467/1,.867/.467/1,1/.6/0,1/.898/.133,.122/.941/.122,0/1/1,.467/0/1,0/.467/0,1/.667/.467,.6/.6/.6,1/.667/.467,1/.667/.467,1/.667/.467,.867/.467/0,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.6/.133/0,0/1/1,.467/0/1,0/.467/0,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.4/0/.733,0/1/1,.467/0/1,0/.467/0,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.467/0/1,0/.467/0,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1}%
-\def\pgfPT@backColorsScheme@Rasmol{1/1/1,1/.753/.796,.698/.133/.133,1/.078/.576,0/1/0,.784/.784/.784,.561/.561/1,.941/0/0,.855/.647/.125,1/.078/.576,0/0/1,.133/.545/.133,.502/.502/.565,.855/.647/.125,1/.647/0,1/.784/.196,0/1/0,1/.078/.576,1/.078/.576,.502/.502/.565,1/.078/.576,.502/.502/.565,1/.078/.576,.502/.502/.565,.502/.502/.565,1/.647/0,1/.078/.576,.647/.165/.165,.647/.165/.165,.647/.165/.165,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.647/.165/.165,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.502/.502/.565,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.627/.125/.941,1/.078/.576,1/.078/.576,1/.647/0,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.855/.647/.125,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1}%
-\def\pgfPT@backColorsScheme@RasmolNew{1/1/1,1/.753/.796,.698/.129/.129,1/.078/.58,0/1/.004,.827/.827/.827,.529/.808/.902,1/0/0,.855/.647/.129,1/.078/.58,0/0/1,.133/.545/.137,.412/.412/.412,.855/.647/.129,1/.667/0,1/1/0,0/1/.004,1/.078/.576,1/.078/.576,.412/.412/.412,1/.078/.58,.412/.412/.412,1/.078/.58,.412/.412/.412,.412/.412/.412,1/.667/0,1/.078/.58,.502/.157/.157,.502/.157/.157,.502/.157/.157,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.502/.157/.157,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.412/.412/.412,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.627/.125/.945,1/.078/.576,1/.078/.576,1/.667/0,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.855/.647/.129,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576}%
-\def\pgfPT@backColorsScheme@Wikipedia{.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,.8/.8/.6,.941/1/.561,.941/1/.561,.941/1/.561,.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,.8/.8/.8,.8/.8/.6,.941/1/.561,.941/1/.561,.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,.8/.8/.8,.8/.8/.6,.8/.8/.6,.941/1/.561,.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,.8/.8/.8,.8/.8/.8,.8/.8/.6,.8/.8/.6,.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,.8/.8/.8,.8/.8/.8,.8/.8/.8,.8/.8/.8,.8/.8/.8,.753/1/1,1/.4/.4,1/.871/.678,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91}%
-\def\pgfPT@backColorsScheme@MNM{.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.878/.816/.753,.91/.839/.659,.91/.839/.659,.91/.839/.659,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.878/.816/.753,.91/.839/.659,.91/.839/.659,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.878/.816/.753,.878/.816/.753,.91/.839/.659,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.878/.816/.753,.878/.816/.753,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847}%
-\def\pgfPT@backColorsScheme@PS{.553/.706/.89,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.553/.706/.89,.553/.706/.89,.553/.706/.89,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.553/.706/.89,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.714/.867/.91,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.647/.647/.647,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.647/.647/.647,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.714/.867/.91,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647}%
-\def\pgfPT@backColorsScheme@Radio{.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.957/.933/0,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.957/.933/0,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0}%
-\def\pgfPT@backColorsScheme@Blocks{1/.937/.671,1/.937/.671,1/.937/.671,1/.937/.671,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.98/.667/.541,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.98/.667/.541,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635}%
+\def\pgfPT@backColorsScheme@pgfPTdefault{.769/.812/.961,.678/.733/.925,.871/.89/.875,.922/.886/.71,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.631/.6/.435,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.8/.878/.859,.706/.871/.827,.612/.859/.796,.42/.89/.769,.671/.608/.749,.588/.655/.89,.871/.89/.875,.922/.886/.71,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.522/.49/.329,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.62/.604/.522,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741,.78/.788/.741}%
+\def\pgfPT@backColorsScheme@pgfPTSoft{.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.945/.941/.918,.973/.945/.78,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.973/.945/.78,.843/.839/.659,.843/.839/.659,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.843/.839/.659,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.827/.824/1,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.843/.839/.659,.843/.839/.659,.945/.941/.918,.945/.941/.918,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.71/.706/1,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918,.945/.941/.918}%
+\def\pgfPT@backColorsScheme@pgfPTJmol{1/1/1,.851/1/1,.8/.502/1,.761/1/0,1/.71/.71,.565/.565/.565,.188/.314/.973,1/.051/.051,.565/.878/.314,.702/.89/.961,.671/.361/.949,.541/1/0,.749/.651/.651,.941/.784/.627,1/.502/0,1/1/.188,.122/.941/.122,.502/.82/.89,.561/.251/.831,.239/1/0,.902/.902/.902,.749/.761/.78,.651/.651/.671,.541/.6/.78,.612/.478/.78,.878/.4/.2,.941/.565/.627,.314/.816/.314,.784/.502/.2,.49/.502/.69,.761/.561/.561,.4/.561/.561,.741/.502/.89,1/.631/0,.651/.161/.161,.361/.722/.82,.439/.18/.69,0/1/0,.58/1/1,.58/.878/.878,.451/.761/.788,.329/.71/.71,.231/.62/.62,.141/.561/.561,.039/.49/.549,0/.412/.522,.753/.753/.753,1/.851/.561,.651/.459/.451,.4/.502/.502,.62/.388/.71,.831/.478/0,.58/0/.58,.259/.62/.69,.341/.09/.561,0/.788/0,.439/.831/1,1/1/.78,.851/1/.78,.78/1/.78,.639/1/.78,.561/1/.78,.38/1/.78,.271/1/.78,.188/1/.78,.122/1/.78,0/1/.612,0/.902/.459,0/.831/.322,0/.749/.22,0/.671/.141,.302/.761/1,.302/.651/1,.129/.58/.839,.149/.49/.671,.149/.4/.588,.09/.329/.529,.816/.816/.878,1/.82/.137,.722/.722/.816,.651/.329/.302,.341/.349/.38,.62/.31/.71,.671/.361/0,.459/.31/.271,.259/.51/.588,.259/0/.4,0/.49/0,.439/.671/.98,0/.729/1,0/.631/1,0/.561/1,0/.502/1,0/.42/1,.329/.361/.949,.471/.361/.89,.541/.31/.89,.631/.212/.831,.702/.122/.831,.702/.122/.729,.702/.051/.651,.741/.051/.529,.78/0/.4,.8/0/.349,.82/0/.31,.851/0/.271,.878/0/.22,.902/0/.18,.922/0/.149,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1}%
+\def\pgfPT@backColorsScheme@pgfPTCPK{1/1/1,0/1/1,.467/0/1,0/.467/0,1/.667/.467,.133/.133/.133,.133/.2/1,1/.133/0,.122/.941/.122,0/1/1,.467/0/1,0/.467/0,.867/.467/1,.867/.467/1,1/.6/0,1/.898/.133,.122/.941/.122,0/1/1,.467/0/1,0/.467/0,1/.667/.467,.6/.6/.6,1/.667/.467,1/.667/.467,1/.667/.467,.867/.467/0,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.6/.133/0,0/1/1,.467/0/1,0/.467/0,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.4/0/.733,0/1/1,.467/0/1,0/.467/0,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.467/0/1,0/.467/0,1/.667/.467,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,.867/.467/1,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/.667/.467,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1}%
+\def\pgfPT@backColorsScheme@pgfPTRasmol{1/1/1,1/.753/.796,.698/.133/.133,1/.078/.576,0/1/0,.784/.784/.784,.561/.561/1,.941/0/0,.855/.647/.125,1/.078/.576,0/0/1,.133/.545/.133,.502/.502/.565,.855/.647/.125,1/.647/0,1/.784/.196,0/1/0,1/.078/.576,1/.078/.576,.502/.502/.565,1/.078/.576,.502/.502/.565,1/.078/.576,.502/.502/.565,.502/.502/.565,1/.647/0,1/.078/.576,.647/.165/.165,.647/.165/.165,.647/.165/.165,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.647/.165/.165,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.502/.502/.565,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.627/.125/.941,1/.078/.576,1/.078/.576,1/.647/0,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.855/.647/.125,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1,1/1/1}%
+\def\pgfPT@backColorsScheme@pgfPTRasmolNew{1/1/1,1/.753/.796,.698/.129/.129,1/.078/.58,0/1/.004,.827/.827/.827,.529/.808/.902,1/0/0,.855/.647/.129,1/.078/.58,0/0/1,.133/.545/.137,.412/.412/.412,.855/.647/.129,1/.667/0,1/1/0,0/1/.004,1/.078/.576,1/.078/.576,.412/.412/.412,1/.078/.58,.412/.412/.412,1/.078/.58,.412/.412/.412,.412/.412/.412,1/.667/0,1/.078/.58,.502/.157/.157,.502/.157/.157,.502/.157/.157,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.502/.157/.157,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.412/.412/.412,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.627/.125/.945,1/.078/.576,1/.078/.576,1/.667/0,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,.855/.647/.129,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576,1/.078/.576}%
+\def\pgfPT@backColorsScheme@pgfPTWikipedia{.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,.8/.8/.6,.941/1/.561,.941/1/.561,.941/1/.561,.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,.8/.8/.8,.8/.8/.6,.941/1/.561,.941/1/.561,.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,.8/.8/.8,.8/.8/.6,.8/.8/.6,.941/1/.561,.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,.8/.8/.8,.8/.8/.8,.8/.8/.6,.8/.8/.6,.941/1/.561,.753/1/1,1/.4/.4,1/.871/.678,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.749/1,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,.8/.8/.8,.8/.8/.8,.8/.8/.8,.8/.8/.8,.8/.8/.8,.753/1/1,1/.4/.4,1/.871/.678,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.6/.8,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,1/.753/.753,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91,.91/.91/.91}%
+\def\pgfPT@backColorsScheme@pgfPTMNM{.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.878/.816/.753,.91/.839/.659,.91/.839/.659,.91/.839/.659,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.878/.816/.753,.91/.839/.659,.91/.839/.659,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.878/.816/.753,.878/.816/.753,.91/.839/.659,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.878/.816/.753,.878/.816/.753,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.91/.839/.659,.91/.839/.659,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847,.886/.886/.847}%
+\def\pgfPT@backColorsScheme@pgfPTPS{.553/.706/.89,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.553/.706/.89,.553/.706/.89,.553/.706/.89,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.553/.706/.89,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.714/.867/.91,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.647/.647/.647,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.647/.647/.647,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.714/.867/.91,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.553/.706/.89,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,1/.878/.718,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647,.647/.647/.647}%
+\def\pgfPT@backColorsScheme@pgfPTRadio{.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.957/.933/0,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.957/.933/0,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.761/.839/.604,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0,.957/.933/0}%
+\def\pgfPT@backColorsScheme@pgfPTBlocks{1/.937/.671,1/.937/.671,1/.937/.671,1/.937/.671,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.98/.667/.541,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,1/.937/.671,1/.937/.671,.98/.667/.541,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.757/.835/.914,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.98/.667/.541,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635,.718/.871/.635}%
% user defined color schemes(s): -----------------------------------------------------------------
% \pgfPTnewcolorscheme[<trailing color (default=1/1/1 e.g. white)>]{name}{list} -----
\def\pgfPTnewColorScheme{\@ifnextchar[\pgfPT@newColorScheme@withoptions{\pgfPT@newColorScheme@noptions}}%
\def\pgfPT@newColorScheme@withoptions[#1/#2/#3]#4#5{%
-\expandafter\def\csname pgfPT@backColorsScheme@#4\endcsname{#5,#1/#2/#3}%
+\expandafter\gdef\csname pgfPT@backColorsScheme@#4\endcsname{#5,#1/#2/#3}%
\definecolor{cpgfPTTMP}{rgb}{#1,#2,#3}%
\xglobal\colorlet{cpgfPTTMP}{cpgfPTTMP}%
}%
@@ -36,20 +37,20 @@
\pgfkeys{/pgfPerTable/.cd,%
back color scheme/.get=\pgfPTbcs,%
back color scheme/.store in=\pgfPTbcs,%
-back color scheme/.default=default,%
+back color scheme/.default=pgfPTdefault,%
back color/.get=\pgfPTbcsolid,%
back color/.store in=\pgfPTbcsolid,%
back color/.default=white,%
-csSoft/.style={back color scheme=Soft},%
-csJmol/.style={back color scheme=Jmol},%
-csCPK/.style={back color scheme=CPK},%
-csRasmol/.style={back color scheme=Rasmol},%
-csRasmolNew/.style={back color scheme=RasmolNew},%
-csWikipedia/.style={back color scheme=Wikipedia},%
-csMNM/.style={back color scheme=MNM},%
-csPS/.style={back color scheme=PS},%
-csRadio/.style={back color scheme=Radio},%
-csBlocks/.style={back color scheme=Blocks},%
+csSoft/.style={back color scheme=pgfPTSoft},%
+csJmol/.style={back color scheme=pgfPTJmol},%
+csCPK/.style={back color scheme=pgfPTCPK},%
+csRasmol/.style={back color scheme=pgfPTRasmol},%
+csRasmolNew/.style={back color scheme=pgfPTRasmolNew},%
+csWikipedia/.style={back color scheme=pgfPTWikipedia},%
+csMNM/.style={back color scheme=pgfPTMNM},%
+csPS/.style={back color scheme=pgfPTPS},%
+csRadio/.style={back color scheme=pgfPTRadio},%
+csBlocks/.style={back color scheme=pgfPTBlocks},%
csSolid/.style={back color scheme=solid,back color=#1}%
}% STYLES -> csSoft,csJmol,csCPK,csRasmol,csRasmolNew,csWikipedia,csMNM,csPS,csRadio,csBlocks,csSolid
% setting keys with default values ---------------------------------------------------------------
@@ -59,7 +60,7 @@ csSolid/.style={back color scheme=solid,back color=#1}%
\def\pgfPTcolorSchemeInfo{%
\global\pgfPT@dima=0pt\relax%
\foreach \Z in {1,...,118}{\path (-\pgfPTcellwd,-10pt*\Z) rectangle node[midway,font=\tiny\bfseries] {Z=\Z} ++(\pgfPTcellwd,-10pt);}%
-\foreach \cs in {default,Soft,Jmol,CPK,Rasmol,RasmolNew,Wikipedia,MNM,PS,Radio,Blocks}{%
+\foreach \cs in {pgfPTdefault,pgfPTSoft,pgfPTJmol,pgfPTCPK,pgfPTRasmol,pgfPTRasmolNew,pgfPTWikipedia,pgfPTMNM,pgfPTPS,pgfPTRadio,pgfPTBlocks}{%
\node[below right,text width=\pgfPTcellwd,text centered,font=\tiny,inner xsep=0pt] at (\pgfPT@dima,0pt) {\cs};%
\path (\pgfPTcellwd+\pgfPT@dima,0pt) rectangle node[midway,font=\tiny\bfseries] {(r,g,b)} ++(2*\pgfPTcellwd,-10pt);%
\edef\pgfPT@@colorlist{\csname pgfPT@backColorsScheme@\cs\endcsname}%
diff --git a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.buildcell.tex b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.buildcell.tex
index a9a3699c363..7684834830a 100644
--- a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.buildcell.tex
+++ b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.buildcell.tex
@@ -38,7 +38,9 @@
\newif\ifpgfPT@dot\pgfPT@dotfalse%
\newif\ifpgfPT@unnamedcell\pgfPT@unnamedcelltrue%
\newdimen\pgfPT@cell@collumnwd\pgfPT@cell@collumnwd=0pt%
+\newdimen\pgfPT@cell@collumnwd@unnamedcell\pgfPT@cell@collumnwd@unnamedcell=0pt%
\newdimen\pgfPT@cell@lineht\pgfPT@cell@lineht=0pt%
+\newdimen\pgfPT@cell@lineht@unnamedcell\pgfPT@cell@lineht@unnamedcell=0pt%
\newdimen\pgfPT@tmpx\pgfPT@tmpx=0pt%
\newdimen\pgfPT@tmpy\pgfPT@tmpy=0pt%
\newdimen\pgfPT@tmpwd\pgfPT@tmpwd=0pt%
@@ -47,10 +49,10 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\pgfPTbuildcellstyle#1(#2,#3)[#4]{\pgfPT@unnamedcellfalse\relax%
\pgfPTbuildcell(#2,#3)[#4]%
-\expandafter\edef\csname pgfPT@cellcontents@#1\endcsname{\pgfPT@cellcontents}%
-\expandafter\edef\csname ppfPT@thebuildcellcom@#1\endcsname{\textbackslash pgfPTbuildcell(\detokenize{#2},\detokenize{#3})\%\par[\detokenize{#4}]}%
-\expandafter\edef\csname pgfPT@nlinhas@#1\endcsname{#2}%
-\expandafter\edef\csname pgfPT@ncolunas@#1\endcsname{#3}%
+\expandafter\xdef\csname pgfPT@cellcontents@#1\endcsname{\pgfPT@cellcontents}%
+\expandafter\xdef\csname ppfPT@thebuildcellcom@#1\endcsname{\textbackslash pgfPTbuildcell(\detokenize{#2},\detokenize{#3})\%\par[\detokenize{#4}]}%
+\expandafter\xdef\csname pgfPT@nlinhas@#1\endcsname{#2}%
+\expandafter\xdef\csname pgfPT@ncolunas@#1\endcsname{#3}%
\pgfPT@unnamedcelltrue\relax%
}%
\def\pgfPT@builtincellstyle#1(#2,#3)[#4]{\pgfPT@unnamedcellfalse\relax%
@@ -66,7 +68,8 @@
% \pgfPTbuildcell(<lines>,<columns>)[<entries>]
%
\def\pgfPTbuildcell(#1,#2)[#3]{%
-\ifpgfPT@unnamedcell\gdef\ppfPT@thebuildcellcom{\textbackslash pgfPTbuildcell(\detokenize{#1},\detokenize{#2})\%\par[\detokenize{#3}]}\fi%
+\ifpgfPT@unnamedcell\gdef\pgfPT@numlinhas@unnamedcell{#1}\gdef\pgfPT@numcolunas@unnamedcell{#2}%
+\gdef\ppfPT@thebuildcellcom{\textbackslash pgfPTbuildcell(\detokenize{#1},\detokenize{#2})\%\par[\detokenize{#3}]}\fi%
\gdef\pgfPT@numlinhas{#1}\gdef\pgfPT@numcolunas{#2}%
\pgfPT@cellcontentssize=0%
\xdef\pgfPT@cellcontents{}% vanishes list contents
@@ -74,6 +77,10 @@
\pgfmathsetlength{\pgfPT@cell@lineht}{\pgfPTcellht/#1}%
\global\pgfPT@cell@lineht=\pgfPT@cell@lineht%
\global\pgfPT@cell@collumnwd=\pgfPT@cell@collumnwd%
+\ifpgfPT@unnamedcell%
+\global\pgfPT@cell@lineht@unnamedcell=\pgfPT@cell@lineht%
+\global\pgfPT@cell@collumnwd@unnamedcell=\pgfPT@cell@collumnwd%
+\fi%
\expandafter\pgfPTg@bblespaces#3\relax%
\@for\@tmp:=\pgfPT@listn@spaces\do{\expandafter\pgfPT@buildcellcontents\@tmp\relax}%
\ifpgfPT@unnamedcell\global\let\pgfPT@cellcontents@unnamed\pgfPT@cellcontents\relax\fi%
@@ -186,7 +193,7 @@
\@for\pgfPT@tmp:=\pgfPT@builtincells@names\do{\edef\pgfPT@tempb{\pgfPT@tmp}\ifx\pgfPT@tempa\pgfPT@tempb\relax\def\pgfPT@builtin{1}\fi}%
\ifnum\pgfPT@builtin=1\relax\textit{Built-in style}\else\textit{User style}\fi\ \textbf{#2}\relax%
\if\pgfPT@preview@cellcontents\@empty\relax%
-\textit{ doesn't exist!}%
+\textit{ doesn't exist!} (\pgfPT@preview@cellcontents)%
\else%
\edef\pgfPT@numlinhas{\csname pgfPT@nlinhas@#2\endcsname}%
\edef\pgfPT@numcolunas{\csname pgfPT@ncolunas@#2\endcsname}%
@@ -204,6 +211,8 @@
\\ [2pt]The build command:\\ \textcolor{green!70!black}{\footnotesize\ppfPT@thebuildcellcom}\\ %
\else\textbf{Using the last cell built}%
\edef\pgfPT@preview@cellcontents{\csname pgfPT@cellcontents@unnamed\endcsname}%
+\let\pgfPT@numlinhas\pgfPT@numlinhas@unnamedcell\let\pgfPT@numcolunas\pgfPT@numcolunas@unnamedcell%
+\let\pgfPT@cell@lineht\pgfPT@cell@lineht@unnamedcell\let\pgfPT@cell@collumnwd\pgfPT@cell@collumnwd@unnamedcell%
\\ [2pt]The build command:\\ \textcolor{green!70!black}{\footnotesize\ppfPT@thebuildcellcom}\\ %
\fi\fi%
\makebox[\linewidth][c]{%
@@ -354,7 +363,7 @@ at (-.5*\pgfPT@cell@collumnwd+\pgfPT@cell@collumnwd*\coluna,\pgfPT@cell@lineht)
% wd -> \pgfPT@<what>@wd
% ht -> \pgfPT@<what>@ht
% and turning the if<what> to true
-% what -> \@pgfPT@<what>rtue
+% what -> \@pgfPT@<what>true
\ifdim\pgfPTcellwd=34pt\relax%
\xdef\pgfPT@loadcell@scaleX{1}%
\else%
diff --git a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.data.tex b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.data.tex
index 62d62e0f898..0a87ee38dda 100644
--- a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.data.tex
+++ b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.data.tex
@@ -142,122 +142,122 @@
}%
% ############################ THE DATA #############################
%
-\def\pgfPT@data@i{H/CS,1.008/Ar,[1.0078\noexpand\pgfPT@virgula1.0082]/Arstar,0/radio,53/R,32/Rcov,139.9\noexpand\pgfPT@espaco(1-)/Rion,1312/Ei,2.2/eneg,72.77/eaff,\noexpand\pgfPT@pm1/O,13.99/Tmelt,-259.16/TmeltC,20.271/Tboil,-252.879/TboilC,1/eDist,::1s+1/eConfign,::1s+1/eConfignl,0.08988/d,28.836/Cp,0.1805/kT,hex/ls,470/lsa,470/lsb,340/lsc,0.72/lsca,1766/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@ii{He/CS,4.0026/Ar,4.0026/Arstar,0/radio,31/R,46/Rcov,---/Rion,2372.3/Ei,---/eneg,0/eaff,---/O,---/Tmelt,---/TmeltC,4.222/Tboil,-268.928/TboilC,2/eDist,::1s+2/eConfign,::1s+2/eConfignl,0.1786/d,20.786/Cp,0.1513/kT,fcc/ls,424.4/lsa,/lsb,/lsc,/lsca,1895/DiscY,19/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@iii{Li/CS,6.94/Ar,[6.938\noexpand\pgfPT@virgula6.997] /Arstar,0/radio,167/R,133/Rcov,76\noexpand\pgfPT@espaco(1+)/Rion,520.2/Ei,0.98/eneg,59.63/eaff,+1/O,453.65/Tmelt,180.5/TmeltC,1603/Tboil,1330/TboilC,2\noexpand\pgfPTeDistsep1/eDist,[He]::2s+1/eConfign,[He]::2s+1/eConfignl,534/d,24.86/Cp,84.8/kT,bcc/ls,350.93/lsa,/lsb,/lsc,/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@iv{Be/CS,9.0122/Ar,9.0122/Arstar,0/radio,112/R,10/Rcov,45\noexpand\pgfPT@espaco(2+)/Rion,899.5/Ei,1.57/eneg,0/eaff,+2/O,1560/Tmelt,1287/TmeltC,2742/Tboil,2469/TboilC,2\noexpand\pgfPTeDistsep2/eDist,[He]::2s+2/eConfign,[He]::2s+2/eConfignl,1850/d,16.443/Cp,200/kT,hcp/ls,228.56/lsa,/lsb,358.32/lsc,1.57/lsca,1798/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@v{B/CS,10.81/Ar,[10.806\noexpand\pgfPT@virgula10.821] /Arstar,0/radio,87/R,85/Rcov,27\noexpand\pgfPT@espaco(3+)/Rion,800.6/Ei,2.04/eneg,26.99/eaff,+3/O,2349/Tmelt,2076/TmeltC,4200/Tboil,3927/TboilC,2\noexpand\pgfPTeDistsep3/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfignl,2340/d,11.087/Cp,27.4/kT,rho/ls,505.66/lsa,/lsb,/lsc,/lsca,1808/DiscY,7/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@vi{C/CS,12.011/Ar,[12.009\noexpand\pgfPT@virgula12.012]/Arstar,0/radio,67/R,75/Rcov,16\noexpand\pgfPT@espaco(4+)/Rion,1086.5/Ei,2.55/eneg,121.78/eaff,0\noexpand\pgfPT@virgula\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,3823/Tmelt,3550/TmeltC,4300/Tboil,4027/TboilC,2\noexpand\pgfPTeDistsep4/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfignl,2267/d,8.517/Cp,140/kT,hex/ls,246.12/lsa,/lsb,670.79/lsc,2.73/lsca,3750\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@vii{N/CS,14.007/Ar,[14.006\noexpand\pgfPT@virgula14.008]/Arstar,0/radio,56/R,71/Rcov,146\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula16\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula13\noexpand\pgfPT@espaco(5+)/Rion,1402.3/Ei,3.04/eneg,0/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,63.15/Tmelt,-210/TmeltC,77.355/Tboil,-195.795/TboilC,2\noexpand\pgfPTeDistsep5/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfignl,1.251/d,29.124/Cp,0.02583/kT,hex/ls,386.1/lsa,386.1/lsb,626.5/lsc,1.62/lsca,1772/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@viii{O/CS,15.999/Ar,[15.999\noexpand\pgfPT@virgula16.000]/Arstar,0/radio,48/R,63/Rcov,140\noexpand\pgfPT@espaco(2-)/Rion,1313.9/Ei,3.44/eneg,140.98/eaff,--2/O,54.36/Tmelt,-218.79/TmeltC,90.188/Tboil,-182.962/TboilC,2\noexpand\pgfPTeDistsep6/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfignl,1.429/d,29.378/Cp,0.02658/kT,mono/ls,540.3/lsa,342.9/lsb,508.6/lsc,0.94/lsca,1771/DiscY,19/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@ix{F/CS,18.998/Ar,18.998/Arstar,0/radio,42/R,64/Rcov,133\noexpand\pgfPT@espaco(1-)/Rion,1681/Ei,3.98/eneg,328.16/eaff,--1/O,53.48/Tmelt,-219.67/TmeltC,85.04/Tboil,-188.11/TboilC,2\noexpand\pgfPTeDistsep7/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfignl,1.7/d,31.304/Cp,0.0277/kT,mono/ls,550/lsa,328/lsb,728/lsc,1.32/lsca,1886/DiscY,5/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@x{Ne/CS,20.18/Ar,20.18/Arstar,0/radio,38/R,67/Rcov,---/Rion,2080.7/Ei,---/eneg,0/eaff,---/O,24.56/Tmelt,-248.59/TmeltC,27.104/Tboil,-246.046/TboilC,2\noexpand\pgfPTeDistsep8/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfignl,0.9002/d,20.786/Cp,0.0491/kT,fcc/ls,442.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@xi{Na/CS,22.99/Ar,22.99/Arstar,0/radio,190/R,155/Rcov,102\noexpand\pgfPT@espaco(1+)/Rion,495.8/Ei,0.93/eneg,52.87/eaff,+1/O,370.944/Tmelt,97.794/TmeltC,1156.09/Tboil,882.94/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ne]::3s+1/eConfign,[Ne]::3s+1/eConfignl,968/d,28.23/Cp,142/kT,bcc/ls,429.06/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xii{Mg/CS,24.305/Ar,[24.304\noexpand\pgfPT@virgula24.307] /Arstar,0/radio,145/R,139/Rcov,72\noexpand\pgfPT@espaco(2+)/Rion,737.7/Ei,1.31/eneg,0/eaff,+2/O,923/Tmelt,650/TmeltC,1363/Tboil,1090/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ne]::3s+2/eConfign,[Ne]::3s+2/eConfignl,1738/d,24.869/Cp,156/kT,hcp/ls,320.94/lsa,/lsb,521.05/lsc,1.62/lsca,1755/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xiii{Al/CS,26.982/Ar,26.982/Arstar,0/radio,118/R,126/Rcov,53.5\noexpand\pgfPT@espaco(3+)/Rion,577.5/Ei,1.61/eneg,41.76/eaff,+3/O,933.47/Tmelt,660.32/TmeltC,2743/Tboil,2470/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfignl,2700/d,24.2/Cp,237/kT,fcc/ls,404.95/lsa,/lsb,/lsc,/lsca,1824/DiscY,2/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xiv{Si/CS,28.085/Ar,[28.084\noexpand\pgfPT@virgula28.086]/Arstar,0/radio,111/R,116/Rcov,40\noexpand\pgfPT@espaco(4+)/Rion,786.5/Ei,1.9/eneg,134.07/eaff,\noexpand\pgfPT@pm4/O,1687/Tmelt,1414/TmeltC,3538/Tboil,3265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep4/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfignl,2330/d,19.789/Cp,149/kT,dia/ls,543.095/lsa,/lsb,/lsc,/lsca,1823/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xv{P/CS,30.974/Ar,30.974/Arstar,0/radio,98/R,111/Rcov,212\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula38\noexpand\pgfPT@espaco(5+)/Rion,1011.8/Ei,2.19/eneg,72.04/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,317.3/Tmelt,44.15/TmeltC,550/Tboil,277/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep5/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfignl,1823/d,23.824/Cp,0.236/kT,tric/ls,1145/lsa,550.3/lsb,1126.1/lsc,0.98/lsca,1669/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xvi{S/CS,32.06/Ar,[32.059\noexpand\pgfPT@virgula32.076]/Arstar,0/radio,88/R,103/Rcov,184\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula37\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula29\noexpand\pgfPT@espaco(6+)/Rion,999.6/Ei,2.58/eneg,200.41/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,388.36/Tmelt,115.21/TmeltC,717.8/Tboil,444.6/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep6/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfignl,1960/d,22.75/Cp,0.205/kT,fcort/ls,1046.5/lsa,1286.6/lsb,2448.6/lsc,2.34/lsca,500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xvii{Cl/CS,35.45/Ar,[35.446\noexpand\pgfPT@virgula35.457]/Arstar,0/radio,79/R,99/Rcov,181\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula12\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula27\noexpand\pgfPT@espaco(7+)/Rion,1251.2/Ei,3.16/eneg,348.58/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,171.6/Tmelt,-101.5/TmeltC,239.11/Tboil,-34.04/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep7/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfignl,3.2/d,33.949/Cp,0.0089/kT,bcort/ls,622.35/lsa,445.61/lsb,817.85/lsc,1.31/lsca,1774/DiscY,18/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@xviii{Ar/CS,39.95/Ar,[39.792\noexpand\pgfPT@virgula39.963]/Arstar,0/radio,71/R,96/Rcov,---/Rion,1520.6/Ei,---/eneg,0/eaff,0/O,83.81/Tmelt,-189.34/TmeltC,87.302/Tboil,-185.848/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfignl,1.784/d,20.786/Cp,0.01772/kT,fcc/ls,525.6/lsa,/lsb,/lsc,/lsca,1894/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@xix{K/CS,39.098/Ar,39.098/Arstar,0/radio,243/R,196/Rcov,138\noexpand\pgfPT@espaco(1+)/Rion,418.8/Ei,0.82/eneg,48.38/eaff,+1/O,336.7/Tmelt,63.5/TmeltC,1032/Tboil,759/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ar]::4s+1/eConfign,[Ar]::4s+1/eConfignl,890/d,29.6/Cp,102.5/kT,bcc/ls,532.8/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xx{Ca/CS,40.078/Ar,40.078(4) /Arstar,0/radio,194/R,171/Rcov,100\noexpand\pgfPT@espaco(2+)/Rion,589.8/Ei,1/eneg,2.37/eaff,+2/O,1115/Tmelt,842/TmeltC,1757/Tboil,1484/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ar]::4s+2/eConfign,[Ar]::4s+2/eConfignl,1550/d,25.929/Cp,201/kT,fcc/ls,558.84/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxi{Sc/CS,44.956/Ar,44.956/Arstar,0/radio,184/R,148/Rcov,74.5\noexpand\pgfPT@espaco(3+)/Rion,633.1/Ei,1.36/eneg,18/eaff,+3/O,1814/Tmelt,1541/TmeltC,3109/Tboil,2836/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+1\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+1/eConfignl,2985/d,25.52/Cp,15.8/kT,hcp/ls,330.9/lsa,/lsb,527.33/lsc,1.59/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxii{Ti/CS,47.867/Ar,47.867/Arstar,0/radio,176/R,136/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60.5\noexpand\pgfPT@espaco(4+)/Rion,658.8/Ei,1.54/eneg,7.29/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4/O,1941/Tmelt,1668/TmeltC,3560/Tboil,3287/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+2\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+2/eConfignl,4506/d,25.06/Cp,21.9/kT,hcp/ls,295.03/lsa,/lsb,468.31/lsc,1.59/lsca,1791/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxiii{V/CS,50.942/Ar,50.942/Arstar,0/radio,171/R,134/Rcov,79\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula64\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula54\noexpand\pgfPT@espaco(5+)/Rion,650.9/Ei,1.63/eneg,50.91/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,2183/Tmelt,1910/TmeltC,3680/Tboil,3407/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+3\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+3/eConfignl,6110/d,24.89/Cp,30.7/kT,bcc/ls,302.31/lsa,/lsb,/lsc,/lsca,1830/DiscY,23/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxiv{Cr/CS,51.996/Ar,51.996/Arstar,0/radio,166/R,122/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(6+)/Rion,652.9/Ei,1.66/eneg,65.21/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+6/O,2180/Tmelt,1907/TmeltC,2755/Tboil,2482/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+5/eConfignl,7150/d,23.35/Cp,93.9/kT,bcc/ls,288.46/lsa,/lsb,/lsc,/lsca,1797/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxv{Mn/CS,54.938/Ar,54.938/Arstar,0/radio,161/R,119/Rcov,67\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula25.5\noexpand\pgfPT@espaco(6+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(7+)/Rion,717.3/Ei,1.55/eneg,0/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6\noexpand\pgfPT@virgula+7/O,1519/Tmelt,1246/TmeltC,2334/Tboil,2061/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+5/eConfignl,7210/d,26.32/Cp,7.81/kT,bcc/ls,891.39/lsa,/lsb,/lsc,/lsca,1774/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxvi{Fe/CS,55.845/Ar,55.845(2)/Arstar,0/radio,156/R,116/Rcov,61\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula55\noexpand\pgfPT@espaco(3+)/Rion,762.5/Ei,1.83/eneg,14.79/eaff,+2\noexpand\pgfPT@virgula+3/O,1811/Tmelt,1538/TmeltC,3134/Tboil,2861/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+6\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+6/eConfignl,7860/d,25.1/Cp,80.4/kT,bcc/ls,286.64/lsa,/lsb,/lsc,/lsca,2000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxvii{Co/CS,58.933/Ar,58.933/Arstar,0/radio,152/R,111/Rcov,65\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula54.5\noexpand\pgfPT@espaco(3+)/Rion,760.4/Ei,1.88/eneg,63.9/eaff,+2\noexpand\pgfPT@virgula+3/O,1768/Tmelt,1495/TmeltC,3200/Tboil,2927/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+7\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+7/eConfignl,8900/d,24.81/Cp,100/kT,hcp/ls,250.71/lsa,/lsb,406.95/lsc,1.62/lsca,1735/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxviii{Ni/CS,58.693/Ar,58.693/Arstar,0/radio,149/R,110/Rcov,69\noexpand\pgfPT@espaco(2+)/Rion,737.1/Ei,1.91/eneg,111.65/eaff,+2/O,1728/Tmelt,1455/TmeltC,3003/Tboil,2730/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+8\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+8/eConfignl,8908/d,26.07/Cp,90.9/kT,fcc/ls,352.4/lsa,/lsb,/lsc,/lsca,1751/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxix{Cu/CS,63.546/Ar,63.546(3)/Arstar,0/radio,145/R,112/Rcov,77\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula73\noexpand\pgfPT@espaco(2+)/Rion,745.5/Ei,1.9/eneg,119.24/eaff,+1\noexpand\pgfPT@virgula+2/O,1357.77/Tmelt,1084.62/TmeltC,2835/Tboil,2562/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+10/eConfignl,8960/d,24.44/Cp,401/kT,fcc/ls,361.47/lsa,/lsb,/lsc,/lsca,8000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxx{Zn/CS,65.38/Ar,65.38(2)/Arstar,0/radio,142/R,118/Rcov,74\noexpand\pgfPT@espaco(2+)/Rion,906.4/Ei,1.65/eneg,0/eaff,+2/O,692.68/Tmelt,419.53/TmeltC,1180/Tboil,907/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10/eConfignl,7140/d,25.39/Cp,116/kT,hcp/ls,266.49/lsa,/lsb,494.68/lsc,1.86/lsca,1746/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxi{Ga/CS,69.723/Ar,69.723/Arstar,0/radio,136/R,124/Rcov,62\noexpand\pgfPT@espaco(3+)/Rion,578.8/Ei,1.81/eneg,29.06/eaff,+3/O,302.9146/Tmelt,29.7646/TmeltC,2673/Tboil,2400/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+1/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+1/eConfignl,5910/d,25.86/Cp,40.6/kT,bcort/ls,452.58/lsa,451.86/lsb,765.7/lsc,1.69/lsca,1875/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxii{Ge/CS,72.63/Ar,72.630(8)/Arstar,0/radio,125/R,121/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)/Rion,762/Ei,2.01/eneg,118.94/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,1211.4/Tmelt,938.25/TmeltC,3106/Tboil,2833/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+2/eConfignl,5323/d,23.222/Cp,60.2/kT,dia/ls,565.791/lsa,/lsb,/lsc,/lsca,1886/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxiii{As/CS,74.922/Ar,74.922/Arstar,0/radio,114/R,121/Rcov,58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(5+)/Rion,947/Ei,2.18/eneg,77.65/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,1090/Tmelt,817/TmeltC,887/Tboil,614/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+3/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+3/eConfignl,5727/d,24.64/Cp,50.2/kT,rho/ls,375.98/lsa,375.98/lsb,1054.75/lsc,2.81/lsca,1250/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxiv{Se/CS,78.971/Ar,78.971(8)/Arstar,0/radio,103/R,116/Rcov,198\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula50\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula42\noexpand\pgfPT@espaco(6+)/Rion,941/Ei,2.55/eneg,194.96/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,494/Tmelt,221/TmeltC,958/Tboil,685/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+4/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+4/eConfignl,4810/d,25.363/Cp,0.519/kT,mono/ls,905.4/lsa,908.3/lsb,1160.1/lsc,1.28/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxv{Br/CS,79.904/Ar,[79.901\noexpand\pgfPT@virgula79.907]/Arstar,0/radio,94/R,114/Rcov,196\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula31\noexpand\pgfPT@espaco(5+)/Rion,1139.9/Ei,2.96/eneg,324.54/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5/O,265.8/Tmelt,-7.3/TmeltC,332/Tboil,58.8/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+5/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+5/eConfignl,3102.8/d,75.69/Cp,0.122/kT,bcort/ls,672.65/lsa,464.51/lsb,870.23/lsc,1.29/lsca,1825/DiscY,5/DiscC,1/spectra,liquido/cor}%
-\def\pgfPT@data@xxxvi{Kr/CS,83.798/Ar,83.798(2)/Arstar,0/radio,88/R,117/Rcov,---/Rion,1350.8/Ei,3/eneg,0/eaff,0/O,115.78/Tmelt,-157.37/TmeltC,119.735/Tboil,-153.415/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+6/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+6/eConfignl,3.749/d,20.786/Cp,0.00943/kT,fcc/ls,570.6/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@xxxvii{Rb/CS,85.468/Ar,85.468/Arstar,0/radio,265/R,210/Rcov,152\noexpand\pgfPT@espaco(1+)/Rion,403/Ei,0.82/eneg,46.88/eaff,+1/O,312.45/Tmelt,39.3/TmeltC,961/Tboil,688/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Kr]::5s+1/eConfign,[Kr]::5s+1/eConfignl,1532/d,31.06/Cp,58.2/kT,bcc/ls,558.5/lsa,/lsb,/lsc,/lsca,1861/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxviii{Sr/CS,87.62/Ar,87.62/Arstar,0/radio,219/R,185/Rcov,118\noexpand\pgfPT@espaco(2+)/Rion,549.5/Ei,0.95/eneg,5.02/eaff,+2/O,1050/Tmelt,777/TmeltC,1650/Tboil,1382/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Kr]::5s+2/eConfign,[Kr]::5s+2/eConfignl,2640/d,26.4/Cp,35.4/kT,fcc/ls,608.49/lsa,/lsb,/lsc,/lsca,1787/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xxxix{Y/CS,88.906/Ar,88.906/Arstar,0/radio,212/R,163/Rcov,90\noexpand\pgfPT@espaco(3+)/Rion,600/Ei,1.22/eneg,29.6/eaff,+3/O,1799/Tmelt,1526/TmeltC,3203/Tboil,2930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+1\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+1/eConfignl,4472/d,26.53/Cp,17.2/kT,hcp/ls,364.74/lsa,/lsb,573.06/lsc,1.57/lsca,1794/DiscY,4/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xl{Zr/CS,91.224/Ar,91.224(2)/Arstar,0/radio,206/R,154/Rcov,72\noexpand\pgfPT@espaco(4+)/Rion,640.1/Ei,1.33/eneg,41.81/eaff,+4/O,2128/Tmelt,1855/TmeltC,4650/Tboil,4377/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+2\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+2/eConfignl,6520/d,25.36/Cp,22.6/kT,hcp/ls,323.2/lsa,/lsb,514.7/lsc,1.59/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xli{Nb/CS,92.906/Ar,92.906/Arstar,0/radio,198/R,147/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,652.1/Ei,1.6/eneg,88.52/eaff,+5/O,2750/Tmelt,2477/TmeltC,5017/Tboil,4744/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+4\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+4/eConfignl,8570/d,24.6/Cp,53.7/kT,bcc/ls,330.04/lsa,/lsb,/lsc,/lsca,1801/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlii{Mo/CS,95.95/Ar,95.95/Arstar,0/radio,190/R,138/Rcov,65\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(6+)/Rion,684.3/Ei,2.16/eneg,72.1/eaff,+4\noexpand\pgfPT@virgula+6/O,2896/Tmelt,2623/TmeltC,4912/Tboil,4639/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+5/eConfignl,10280/d,24.06/Cp,138/kT,bcc/ls,314.69/lsa,/lsb,/lsc,/lsca,1781/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xliii{Tc/CS,[98]/Ar,/Arstar,1/radio,183/R,128/Rcov,64.5\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(7+)/Rion,702/Ei,1.9/eneg,53/eaff,+4\noexpand\pgfPT@virgula+7/O,2430/Tmelt,2157/TmeltC,4538/Tboil,4265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+5/eConfignl,11000/d,24.27/Cp,50.6/kT,hcp/ls,273.5/lsa,/lsb,438.8/lsc,1.6/lsca,1937/DiscY,11/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xliv{Ru/CS,101.07/Ar,101.07/Arstar,0/radio,178/R,125/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62\noexpand\pgfPT@espaco(4+)/Rion,710.2/Ei,2.2/eneg,100.96/eaff,+3\noexpand\pgfPT@virgula+4/O,2607/Tmelt,2334/TmeltC,4423/Tboil,4150/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+7\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+7/eConfignl,12450/d,24.06/Cp,117/kT,hcp/ls,270.55/lsa,/lsb,428.16/lsc,1.58/lsca,1844/DiscY,15/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlv{Rh/CS,102.91/Ar,102.91/Arstar,0/radio,173/R,125/Rcov,66.5\noexpand\pgfPT@espaco(3+)/Rion,719.7/Ei,2.28/eneg,110.27/eaff,+3/O,2237/Tmelt,1964/TmeltC,3968/Tboil,3695/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+8\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+8/eConfignl,12410/d,24.98/Cp,150/kT,fcc/ls,380.34/lsa,/lsb,/lsc,/lsca,1804/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlvi{Pd/CS,106.42/Ar,106.42/Arstar,0/radio,169/R,120/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(4+)/Rion,804.4/Ei,2.2/eneg,54.24/eaff,0\noexpand\pgfPT@virgula+2\noexpand\pgfPT@virgula+4/O,1828.05/Tmelt,1554.9/TmeltC,3236/Tboil,2963/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18/eDist,[Kr]::4d+10/eConfign,[Kr]::4d+10/eConfignl,12023/d,25.98/Cp,71.8/kT,fcc/ls,389.02/lsa,/lsb,/lsc,/lsca,1802/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlvii{Ag/CS,107.87/Ar,107.87/Arstar,0/radio,165/R,128/Rcov,115\noexpand\pgfPT@espaco(1+)/Rion,731/Ei,1.93/eneg,125.86/eaff,+1/O,1234.93/Tmelt,961.78/TmeltC,2483/Tboil,2210/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+10/eConfignl,10490/d,25.35/Cp,429/kT,fcc/ls,408.57/lsa,/lsb,/lsc,/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlviii{Cd/CS,112.41/Ar,112.41/Arstar,0/radio,161/R,136/Rcov,95\noexpand\pgfPT@espaco(2+)/Rion,867.8/Ei,1.69/eneg,0/eaff,+2/O,594.22/Tmelt,321.07/TmeltC,1040/Tboil,767/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10/eConfignl,8650/d,26.02/Cp,96.6/kT,hcp/ls,297.88/lsa,/lsb,561.67/lsc,1.89/lsca,1817/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xlix{In/CS,114.82/Ar,114.82/Arstar,0/radio,156/R,142/Rcov,80\noexpand\pgfPT@espaco(3+)/Rion,558.3/Ei,1.78/eneg,37.04/eaff,+3/O,429.75/Tmelt,156.6/TmeltC,2345/Tboil,2072/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+1/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+1/eConfignl,7310/d,26.74/Cp,81.8/kT,tetr/ls,325.17/lsa,/lsb,494.59/lsc,1.52/lsca,1863/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@l{Sn/CS,118.71/Ar,118.71/Arstar,0/radio,145/R,140/Rcov,118\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula69\noexpand\pgfPT@espaco(4+)/Rion,708.6/Ei,1.96/eneg,107.3/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,505.08/Tmelt,231.93/TmeltC,2875/Tboil,2602/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+2/eConfignl,7265/d,25.77/Cp,66.8/kT,ctetr/ls,583.1/lsa,/lsb,318.1/lsc,0.55/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@li{Sb/CS,121.76/Ar,121.76/Arstar,0/radio,133/R,140/Rcov,76\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(5+)/Rion,834/Ei,2.05/eneg,101.06/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,903.78/Tmelt,630.63/TmeltC,1908/Tboil,1635/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+3/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+3/eConfignl,6697/d,25.23/Cp,24.4/kT,rho/ls,430.7/lsa,/lsb,1127.3/lsc,2.62/lsca,815/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lii{Te/CS,127.6/Ar,127.60(3)/Arstar,0/radio,123/R,136/Rcov,221\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula97\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(6+)/Rion,869.3/Ei,2.1/eneg,190.16/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,722.66/Tmelt,449.51/TmeltC,1261/Tboil,988/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+4/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+4/eConfignl,6240/d,25.73/Cp,3/kT,rho/ls,445.72/lsa,/lsb,592.9/lsc,1.33/lsca,1782/DiscY,14/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@liii{I/CS,126.9/Ar,126.9/Arstar,0/radio,115/R,133/Rcov,220\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula95\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(7+)/Rion,1008.4/Ei,2.66/eneg,295.15/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,386.85/Tmelt,113.7/TmeltC,457.4/Tboil,184.3/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+5/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+5/eConfignl,4933/d,54.44/Cp,0.449/kT,bcort/ls,726.97/lsa,479.03/lsb,979.42/lsc,1.35/lsca,1811/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@liv{Xe/CS,131.29/Ar,131.29/Arstar,0/radio,108/R,131/Rcov,---/Rion,1170.4/Ei,2.6/eneg,0/eaff,0/O,161.4/Tmelt,-111.75/TmeltC,165.051/Tboil,-108.099/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+6/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+6/eConfignl,5.894/d,20.786/Cp,0.00565/kT,fcc/ls,620.23/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@lv{Cs/CS,132.91/Ar,132.91/Arstar,0/radio,298/R,232/Rcov,167\noexpand\pgfPT@espaco(1+)/Rion,375.7/Ei,0.79/eneg,45.51/eaff,+1/O,301.7/Tmelt,28.5/TmeltC,944/Tboil,671/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Xe]::6s+1/eConfign,[Xe]::6s+1/eConfignl,1930/d,32.21/Cp,35.9/kT,bcc/ls,614.1/lsa,/lsb,/lsc,/lsca,1860/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lvi{Ba/CS,137.33/Ar,137.33/Arstar,0/radio,253/R,196/Rcov,135\noexpand\pgfPT@espaco(2+)/Rion,502.9/Ei,0.89/eneg,13.95/eaff,+2/O,1000/Tmelt,727/TmeltC,1910/Tboil,1637/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::6s+2/eConfign,[Xe]::6s+2/eConfignl,3510/d,28.07/Cp,18.4/kT,bcc/ls,501.9/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lvii{La/CS,138.91/Ar,138.91/Arstar,0/radio,226/R,180/Rcov,103.2\noexpand\pgfPT@espaco(3+)/Rion,538.1/Ei,1.1/eneg,53.8/eaff,+3/O,1193/Tmelt,920/TmeltC,3737/Tboil,3464/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula5d+1/eConfignl,6162/d,27.11/Cp,13.4/kT,hex/ls,377.2/lsa,/lsb,1214.4/lsc,3.22/lsca,1838/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lviii{Ce/CS,140.12/Ar,140.12/Arstar,0/radio,210/R,163/Rcov,101\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)/Rion,534.4/Ei,1.12/eneg,55/eaff,+3\noexpand\pgfPT@virgula+4/O,1068/Tmelt,795/TmeltC,3716/Tboil,3443/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep19\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+1\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+1\noexpand\pgfPT@virgula5d+1/eConfignl,6770/d,26.94/Cp,11.3/kT,hex/ls,362/lsa,/lsb,599/lsc,1.65/lsca,1803/DiscY,9/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lix{Pr/CS,140.91/Ar,140.91/Arstar,0/radio,247/R,17/Rcov,99\noexpand\pgfPT@espaco(3+)/Rion,527/Ei,1.13/eneg,10.54/eaff,+3/O,1208/Tmelt,935/TmeltC,3403/Tboil,3130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+3/eConfignl,6770/d,27.2/Cp,12.5/kT,hex/ls,367.21/lsa,/lsb,1183.26/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lx{Nd/CS,144.24/Ar,144.24/Arstar,0/radio,206/R,17/Rcov,98.3\noexpand\pgfPT@espaco(3+)/Rion,533.1/Ei,1.14/eneg,9.41/eaff,+3/O,1297/Tmelt,1024/TmeltC,3347/Tboil,3074/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+4/eConfignl,7010/d,27.45/Cp,16.5/kT,hex/ls,365.82/lsa,/lsb,1179.66/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxi{Pm/CS,[145]/Ar,[145]/Arstar,1/radio,205/R,173/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,540/Ei,1.13/eneg,12.45/eaff,+3/O,1315/Tmelt,1042/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep23\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+5/eConfignl,7260/d,---/Cp,17.9/kT,hex/ls,365/lsa,/lsb,1165/lsc,3.19/lsca,1945/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@lxii{Sm/CS,150.36/Ar,150.36(2)/Arstar,0/radio,238/R,172/Rcov,95.8\noexpand\pgfPT@espaco(3+)/Rion,544.5/Ei,1.17/eneg,15.63/eaff,+3/O,1345/Tmelt,1072/TmeltC,2173/Tboil,1900/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+6/eConfignl,7520/d,29.54/Cp,13.3/kT,rho/ls,362.1/lsa,/lsb,2625/lsc,7.25/lsca,1879/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxiii{Eu/CS,151.96/Ar,151.96/Arstar,0/radio,231/R,168/Rcov,117\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula94.7\noexpand\pgfPT@espaco(3+)/Rion,547.1/Ei,1.2/eneg,11.2/eaff,+2\noexpand\pgfPT@virgula+3/O,1099/Tmelt,826/TmeltC,1802/Tboil,1529/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7/eConfignl,5244/d,27.66/Cp,13.9/kT,bcc/ls,458.1/lsa,/lsb,/lsc,/lsca,1901/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxiv{Gd/CS,157.25/Ar,157.25(3)/Arstar,0/radio,233/R,169/Rcov,93.5\noexpand\pgfPT@espaco(3+)/Rion,593.4/Ei,1.2/eneg,13.22/eaff,+3/O,1585/Tmelt,1312/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7\noexpand\pgfPT@virgula5d+1/eConfignl,7900/d,37.03/Cp,10.6/kT,hcp/ls,363.6/lsa,/lsb,578.26/lsc,1.59/lsca,1880/DiscY,20/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxv{Tb/CS,158.93/Ar,158.93/Arstar,0/radio,225/R,168/Rcov,92.3\noexpand\pgfPT@espaco(3+)/Rion,565.8/Ei,1.2/eneg,12.67/eaff,+3/O,1629/Tmelt,1356/TmeltC,3396/Tboil,3123/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+9\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+9/eConfignl,8230/d,28.91/Cp,11.1/kT,hcp/ls,360.1/lsa,/lsb,569.36/lsc,1.58/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxvi{Dy/CS,162.5/Ar,162.5/Arstar,0/radio,228/R,167/Rcov,91.2\noexpand\pgfPT@espaco(3+)/Rion,573/Ei,1.22/eneg,33.96/eaff,+3/O,1680/Tmelt,1407/TmeltC,2840/Tboil,2567/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+10/eConfignl,8540/d,27.7/Cp,10.7/kT,hcp/ls,359.3/lsa,/lsb,565.37/lsc,1.57/lsca,1886/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxvii{Ho/CS,164.93/Ar,164.93/Arstar,0/radio,226/R,166/Rcov,90.1\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.23/eneg,32.61/eaff,+3/O,1734/Tmelt,1461/TmeltC,2873/Tboil,2600/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+11\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+11/eConfignl,8790/d,27.15/Cp,16.2/kT,hcp/ls,357.73/lsa,/lsb,561.58/lsc,1.57/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxviii{Er/CS,167.26/Ar,167.26/Arstar,0/radio,226/R,165/Rcov,89\noexpand\pgfPT@espaco(3+)/Rion,589.3/Ei,1.24/eneg,30.1/eaff,+3/O,1802/Tmelt,1529/TmeltC,3141/Tboil,2868/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+12\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+12/eConfignl,9066/d,28.12/Cp,14.5/kT,hcp/ls,355.88/lsa,/lsb,558.74/lsc,1.57/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxix{Tm/CS,168.93/Ar,168.93/Arstar,0/radio,222/R,164/Rcov,88\noexpand\pgfPT@espaco(3+)/Rion,596.7/Ei,1.25/eneg,99/eaff,+3/O,1818/Tmelt,1545/TmeltC,2223/Tboil,1950/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+13\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+13/eConfignl,9320/d,27.03/Cp,16.9/kT,hcp/ls,353.75/lsa,/lsb,555.46/lsc,1.57/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxx{Yb/CS,173.05/Ar,173.05/Arstar,0/radio,222/R,170/Rcov,86.8\noexpand\pgfPT@espaco(3+)/Rion,603.4/Ei,1.1/eneg,0/eaff,+3/O,1097/Tmelt,824/TmeltC,1703/Tboil,1430/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14/eConfignl,6900/d,26.74/Cp,38.5/kT,fcc/ls,548.47/lsa,/lsb,/lsc,/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxi{Lu/CS,174.97/Ar,174.97/Arstar,0/radio,217/R,162/Rcov,86.1\noexpand\pgfPT@espaco(3+)/Rion,523.5/Ei,1.27/eneg,23.04/eaff,+3/O,1925/Tmelt,1652/TmeltC,3675/Tboil,3402/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+1/eConfignl,9841/d,26.86/Cp,16.4/kT,hcp/ls,350.31/lsa,/lsb,555.09/lsc,1.58/lsca,1906/DiscY,6/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxii{Hf/CS,178.49/Ar,178.49(2)/Arstar,0/radio,208/R,152/Rcov,71\noexpand\pgfPT@espaco(4+)/Rion,658.5/Ei,1.3/eneg,17.18/eaff,+4/O,2506/Tmelt,2233/TmeltC,4876/Tboil,4603/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+2\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+2/eConfignl,13310/d,25.73/Cp,23/kT,hcp/ls,319.64/lsa,/lsb,505.11/lsc,1.58/lsca,1922/DiscY,2/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxiii{Ta/CS,180.95/Ar,180.95/Arstar,0/radio,200/R,146/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,761/Ei,1.5/eneg,31/eaff,+5/O,3290/Tmelt,3017/TmeltC,5731/Tboil,5458/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+3/eConfignl,16690/d,25.36/Cp,57.5/kT,bcc/ls,330.26/lsa,/lsb,/lsc,/lsca,1802/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxiv{W/CS,183.84/Ar,183.84/Arstar,0/radio,193/R,137/Rcov,66\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(6+)/Rion,770/Ei,2.36/eneg,78.76/eaff,+4\noexpand\pgfPT@virgula+6/O,3695/Tmelt,3422/TmeltC,6203/Tboil,5930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+4/eConfignl,19250/d,24.27/Cp,173/kT,bcc/ls,316.52/lsa,/lsb,/lsc,/lsca,1783/DiscY,17/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxv{Re/CS,186.21/Ar,186.21/Arstar,0/radio,188/R,131/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,760/Ei,1.9/eneg,5.83/eaff,+4/O,3459/Tmelt,3186/TmeltC,5869/Tboil,5596/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+5/eConfignl,21020/d,25.48/Cp,48/kT,hcp/ls,276.1/lsa,/lsb,445.8/lsc,1.62/lsca,1925/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxvi{Os/CS,190.23/Ar,190.23(3)/Arstar,0/radio,185/R,129/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,840/Ei,2.2/eneg,103.99/eaff,+4/O,3306/Tmelt,3033/TmeltC,5285/Tboil,5012/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+6/eConfignl,22590/d,24.7/Cp,87.6/kT,hcp/ls,273.43/lsa,/lsb,431.73/lsc,1.58/lsca,1803/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxvii{Ir/CS,192.22/Ar,192.22/Arstar,0/radio,180/R,122/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,880/Ei,2.2/eneg,150.91/eaff,+3\noexpand\pgfPT@virgula+4/O,2719/Tmelt,2446/TmeltC,4403/Tboil,4130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+7/eConfignl,22560/d,25.1/Cp,147/kT,fcc/ls,383.92/lsa,/lsb,/lsc,/lsca,1803/DiscY,7/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxviii{Pt/CS,195.08/Ar,195.08/Arstar,0/radio,177/R,123/Rcov,80\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,870/Ei,2.28/eneg,205.04/eaff,+2\noexpand\pgfPT@virgula+4/O,2041.4/Tmelt,1768.3/TmeltC,4098/Tboil,3825/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+9\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+9/eConfignl,21450/d,25.86/Cp,71.6/kT,fcc/ls,392.35/lsa,/lsb,/lsc,/lsca,1735/DiscY,13/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxix{Au/CS,196.97/Ar,196.97/Arstar,0/radio,174/R,124/Rcov,137\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula85\noexpand\pgfPT@espaco(3+)/Rion,890.1/Ei,2.54/eneg,222.75/eaff,+1\noexpand\pgfPT@virgula+3/O,1337.33/Tmelt,1064.18/TmeltC,3243/Tboil,2970/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,19300/d,25.418/Cp,318/kT,fcc/ls,407.83/lsa,/lsb,/lsc,/lsca,4000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,100/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxx{Hg/CS,200.59/Ar,200.59/Arstar,0/radio,171/R,133/Rcov,119\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula102\noexpand\pgfPT@espaco(2+)/Rion,1007.1/Ei,2/eneg,0/eaff,+1\noexpand\pgfPT@virgula+2/O,234.32/Tmelt,-38.83/TmeltC,629.88/Tboil,356.73/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,13534/d,27.983/Cp,8.3/kT,rho/ls,300.9/lsa,/lsb,/lsc,/lsca,1500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,liquido/cor}%
-\def\pgfPT@data@lxxxi{Tl/CS,204.38/Ar,[204.38\noexpand\pgfPT@virgula204.39]/Arstar,0/radio,156/R,144/Rcov,150\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula88.5\noexpand\pgfPT@espaco(3+)/Rion,589.4/Ei,1.62/eneg,30.88/eaff,+1\noexpand\pgfPT@virgula+3/O,577/Tmelt,304/TmeltC,1746/Tboil,1473/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+1/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+1/eConfignl,11850/d,26.32/Cp,46.1/kT,hcp/ls,345.66/lsa,/lsb,552.48/lsc,1.6/lsca,1861/DiscY,21/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxii{Pb/CS,207.2/Ar,207.2/Arstar,0/radio,154/R,144/Rcov,119\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula77.5\noexpand\pgfPT@espaco(4+)/Rion,715.6/Ei,1.87/eneg,34.42/eaff,+2\noexpand\pgfPT@virgula+4/O,600.61/Tmelt,327.46/TmeltC,2022/Tboil,1749/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+2/eConfignl,11340/d,26.65/Cp,35.3/kT,fcc/ls,495.02/lsa,/lsb,/lsc,/lsca,3800\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxiii{Bi/CS,208.98/Ar,208.98/Arstar,0/radio,143/R,151/Rcov,103\noexpand\pgfPT@espaco(3+)/Rion,703/Ei,2.02/eneg,90.92/eaff,+3/O,544.7/Tmelt,271.5/TmeltC,1837/Tboil,1564/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+3/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+3/eConfignl,9780/d,25.52/Cp,7.97/kT,mono/ls,667.4/lsa,611.7/lsb,330.4/lsc,0.5/lsca,1400/DiscY,12/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxiv{Po/CS,[209]/Ar,/Arstar,1/radio,135/R,145/Rcov,223\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula94\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(6+)/Rion,812.1/Ei,2/eneg,136/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+6/O,527/Tmelt,254/TmeltC,1235/Tboil,962/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+4/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+4/eConfignl,9196/d,26.4/Cp,0/kT,sc/ls,335.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxv{At/CS,[210]/Ar,/Arstar,1/radio,127/R,147/Rcov,62\noexpand\pgfPT@espaco(7+)/Rion,899.003/Ei,2.2/eneg,233.09/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,575/Tmelt,302/TmeltC,503/Tboil,230/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+5/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+5/eConfignl,---/d,---/Cp,1.7/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1940/DiscY,22/DiscC,0/spectra,solido/cor}%
-\def\pgfPT@data@lxxxvi{Rn/CS,[222]/Ar,/Arstar,1/radio,120/R,142/Rcov,---/Rion,1037/Ei,2.2/eneg,0/eaff,+2\noexpand\pgfPT@virgula+6/O,202/Tmelt,-71/TmeltC,211.5/Tboil,-61.7/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+6/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+6/eConfignl,9.73/d,20.786/Cp,0.00361/kT,fcc/ls,---/lsa,/lsb,/lsc,/lsca,1899/DiscY,8/DiscC,1/spectra,gasoso/cor}%
-\def\pgfPT@data@lxxxvii{Fr/CS,[223]/Ar,/Arstar,1/radio,---/R,---/Rcov,180\noexpand\pgfPT@espaco(1+)/Rion,380/Ei,0.7/eneg,46.89/eaff,+1/O,281/Tmelt,8/TmeltC,890/Tboil,620/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Rn]::7s+1/eConfign,[Rn]::7s+1/eConfignl,---/d,31.8/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1939/DiscY,5/DiscC,0/spectra,solido/cor}%
-\def\pgfPT@data@lxxxviii{Ra/CS,[226]/Ar,/Arstar,1/radio,---/R,201/Rcov,148\noexpand\pgfPT@espaco(2+)/Rion,509.3/Ei,0.9/eneg,9.65/eaff,+2/O,973/Tmelt,700/TmeltC,2010/Tboil,1737/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::7s+2/eConfign,[Rn]::7s+2/eConfignl,5500/d,---/Cp,18.6/kT,bcc/ls,514.8/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@lxxxix{Ac/CS,[227]/Ar,/Arstar,1/radio,---/R,186/Rcov,106.5\noexpand\pgfPT@espaco(3+)/Rion,499/Ei,1.1/eneg,33.77/eaff,+3/O,1323/Tmelt,1050/TmeltC,3471/Tboil,3198/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+1/eConfignl,10000/d,27.2/Cp,12/kT,fcc/ls,587/lsa,/lsb,/lsc,/lsca,1902/DiscY,5/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xc{Th/CS,232.04/Ar,232.04/Arstar,1/radio,---/R,175/Rcov,/Rion,587/Ei,1.3/eneg,58.63/eaff,+4/O,2115/Tmelt,1842/TmeltC,5061/Tboil,4788/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+2/eConfignl,11700/d,26.23/Cp,54/kT,fcc/ls,508.42/lsa,/lsb,/lsc,/lsca,1829/DiscY,18/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xci{Pa/CS,231.04/Ar,231.04/Arstar,1/radio,---/R,169/Rcov,90\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula78\noexpand\pgfPT@espaco(5+)/Rion,568/Ei,1.5/eneg,53.03/eaff,+5/O,1841/Tmelt,1568/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep20\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+2\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+2\noexpand\pgfPT@virgula6d+1/eConfignl,15370/d,---/Cp,47/kT,tetr/ls,392.5/lsa,/lsb,323.8/lsc,0.82/lsca,1913/DiscY,10/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xcii{U/CS,238.03/Ar,238.03/Arstar,1/radio,---/R,170/Rcov,76\noexpand\pgfPT@espaco(5+)/Rion,597.6/Ei,1.38/eneg,30.39/eaff,+4\noexpand\pgfPT@virgula+6/O,1405.3/Tmelt,1132.2/TmeltC,4404/Tboil,4131/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+3\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+3\noexpand\pgfPT@virgula6d+1/eConfignl,19100/d,27.665/Cp,27.5/kT,bcort/ls,285.37/lsa,586.95/lsb,495.48/lsc,1.74/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}%
-\def\pgfPT@data@xciii{Np/CS,[237]/Ar,/Arstar,1/radio,---/R,171/Rcov,110\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(7+)/Rion,604.5/Ei,1.36/eneg,45.85/eaff,+5/O,917/Tmelt,644/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+4\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+4\noexpand\pgfPT@virgula6d+1/eConfignl,20200/d,29.46/Cp,6.3/kT,bcort/ls,666.3/lsa,472.3/lsb,488.7/lsc,0.73/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xciv{Pu/CS,[244]/Ar,/Arstar,1/radio,---/R,172/Rcov,100\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula74\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(6+)/Rion,584.7/Ei,1.28/eneg,0/eaff,+4/O,912.5/Tmelt,639.4/TmeltC,3501/Tboil,3228/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+6/eConfignl,19816/d,35.5/Cp,6.74/kT,mono/ls,618.3/lsa,482.2/lsb,1096.3/lsc,1.77/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcv{Am/CS,[243]/Ar,/Arstar,1/radio,---/R,166/Rcov,126\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula97.5\noexpand\pgfPT@espaco(3+)/Rion,578/Ei,1.13/eneg,9.93/eaff,+3/O,1449/Tmelt,1176/TmeltC,2880/Tboil,2607/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7/eConfignl,12000/d,62.7/Cp,10/kT,hex/ls,346.81/lsa,/lsb,1124.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcvi{Cm/CS,[247]/Ar,/Arstar,1/radio,---/R,166/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.28/eneg,27.17/eaff,+3/O,1613/Tmelt,1340/TmeltC,3383/Tboil,3110/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7\noexpand\pgfPT@virgula6d+1/eConfignl,13510/d,---/Cp,---/kT,hex/ls,349.6/lsa,/lsb,1133.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcvii{Bk/CS,[247]/Ar,/Arstar,1/radio,---/R,---/Rcov,96\noexpand\pgfPT@espaco(3+)/Rion,601/Ei,1.3/eneg,0/eaff,+3/O,1323/Tmelt,1050/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+9/eConfignl,14780/d,---/Cp,10/kT,hex/ls,341.6/lsa,/lsb,1106.9/lsc,3.24/lsca,1949/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcviii{Cf/CS,[251]/Ar,/Arstar,1/radio,---/R,---/Rcov,95\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula82.1\noexpand\pgfPT@espaco(4+)/Rion,608/Ei,1.3/eneg,0/eaff,+3/O,1173/Tmelt,900/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+10/eConfignl,15100/d,---/Cp,---/kT,hex/ls,338/lsa,/lsb,1102.5/lsc,3.26/lsca,1950/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@xcix{Es/CS,[252]/Ar,/Arstar,1/radio,---/R,---/Rcov,83.5\noexpand\pgfPT@espaco(3+)/Rion,619/Ei,1.3/eneg,0/eaff,+3/O,1133/Tmelt,860/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+11\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+11/eConfignl,8840/d,---/Cp,---/kT,fcc/ls,575/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,1/spectra,sintetico/cor}%
-\def\pgfPT@data@c{Fm/CS,[257]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,627/Ei,1.3/eneg,33.96/eaff,+3/O,1800/Tmelt,1527/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+12\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+12/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@ci{Md/CS,[258]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,635/Ei,1.3/eneg,93.91/eaff,+3/O,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+13\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+13/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1955/DiscY,22/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cii{No/CS,[259]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,642/Ei,1.3/eneg,0/eaff,+2/O,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1966/DiscY,24/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@ciii{Lr/CS,[266]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,470/Ei,1.3/eneg,0/eaff,+3/O,1900/Tmelt,1627/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1961/DiscY,22/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@civ{Rf/CS,[267]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-580/Ei,---/eneg,---/eaff,+4/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1969/DiscY,16/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cv{Db/CS,[268]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-665/Ei,---/eneg,---/eaff,+5/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+3\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1970/DiscY,16/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cvi{Sg/CS,[269]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-757/Ei,---/eneg,---/eaff,+6/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+4\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1974/DiscY,22/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cvii{Bh/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-740/Ei,---/eneg,---/eaff,+7/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+5\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1981/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cviii{Hs/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-730/Ei,---/eneg,---/eaff,+8/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1984/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cix{Mt/CS,[278]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-800/Ei,---/eneg,---/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+7/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1982/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cx{Ds/CS,[281]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-960/Ei,---/eneg,---/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+8\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+8/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxi{Rg/CS,[282]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1020/Ei,---/eneg,151/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+9/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxii{Cn/CS,[285]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1155/Ei,---/eneg,---/eaff,+2/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1996/DiscY,8/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxiii{Nh/CS,[286]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-707.2/Ei,---/eneg,66.6/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2004/DiscY,16/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxiv{Fl/CS,[289]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-832.2/Ei,---/eneg,---/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1998/DiscY,15/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxv{Mc/CS,[290]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-538.3/Ei,---/eneg,35.3/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+3/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2003/DiscY,16/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxvi{Lv/CS,[293]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-663.9/Ei,---/eneg,74.9/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+4/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2000/DiscY,15/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxvii{Ts/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-736.9/Ei,---/eneg,165.9/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+5/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2009/DiscY,100/DiscC,0/spectra,sintetico/cor}%
-\def\pgfPT@data@cxviii{Og/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-860.1/Ei,---/eneg,5.4/eaff,---/O,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+6/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2002/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@i{H/CS,1.008/Ar,[1.0078\noexpand\pgfPT@virgula1.0082]/Arstar,0/radio,53/R,32/Rcov,139.9\noexpand\pgfPT@espaco(1-)/Rion,1312/Ei,2.2/eneg,72.77/eaff,\noexpand\pgfPT@pm1/O,\noexpand\pgfPT@pm I/ORoman,13.99/Tmelt,-259.16/TmeltC,20.271/Tboil,-252.879/TboilC,1/eDist,::1s+1/eConfign,::1s+1/eConfignl,0.08988/d,28.836/Cp,0.1805/kT,hex/ls,470/lsa,470/lsb,340/lsc,0.72/lsca,1766/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@ii{He/CS,4.0026/Ar,4.0026/Arstar,0/radio,31/R,46/Rcov,---/Rion,2372.3/Ei,---/eneg,0/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,4.222/Tboil,-268.928/TboilC,2/eDist,::1s+2/eConfign,::1s+2/eConfignl,0.1786/d,20.786/Cp,0.1513/kT,fcc/ls,424.4/lsa,/lsb,/lsc,/lsca,1895/DiscY,19/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@iii{Li/CS,6.94/Ar,[6.938\noexpand\pgfPT@virgula6.997] /Arstar,0/radio,167/R,133/Rcov,76\noexpand\pgfPT@espaco(1+)/Rion,520.2/Ei,0.98/eneg,59.63/eaff,+1/O,+I/ORoman,453.65/Tmelt,180.5/TmeltC,1603/Tboil,1330/TboilC,2\noexpand\pgfPTeDistsep1/eDist,[He]::2s+1/eConfign,[He]::2s+1/eConfignl,534/d,24.86/Cp,84.8/kT,bcc/ls,350.93/lsa,/lsb,/lsc,/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@iv{Be/CS,9.0122/Ar,9.0122/Arstar,0/radio,112/R,10/Rcov,45\noexpand\pgfPT@espaco(2+)/Rion,899.5/Ei,1.57/eneg,0/eaff,+2/O,+II/ORoman,1560/Tmelt,1287/TmeltC,2742/Tboil,2469/TboilC,2\noexpand\pgfPTeDistsep2/eDist,[He]::2s+2/eConfign,[He]::2s+2/eConfignl,1850/d,16.443/Cp,200/kT,hcp/ls,228.56/lsa,/lsb,358.32/lsc,1.57/lsca,1798/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@v{B/CS,10.81/Ar,[10.806\noexpand\pgfPT@virgula10.821] /Arstar,0/radio,87/R,85/Rcov,27\noexpand\pgfPT@espaco(3+)/Rion,800.6/Ei,2.04/eneg,26.99/eaff,+3/O,+III/ORoman,2349/Tmelt,2076/TmeltC,4200/Tboil,3927/TboilC,2\noexpand\pgfPTeDistsep3/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+1/eConfignl,2340/d,11.087/Cp,27.4/kT,rho/ls,505.66/lsa,/lsb,/lsc,/lsca,1808/DiscY,7/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@vi{C/CS,12.011/Ar,[12.009\noexpand\pgfPT@virgula12.012]/Arstar,0/radio,67/R,75/Rcov,16\noexpand\pgfPT@espaco(4+)/Rion,1086.5/Ei,2.55/eneg,121.78/eaff,0\noexpand\pgfPT@virgula\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,0\noexpand\pgfPT@virgula\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula\noexpand\pgfPT@pm IV/ORoman,3823/Tmelt,3550/TmeltC,4300/Tboil,4027/TboilC,2\noexpand\pgfPTeDistsep4/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+2/eConfignl,2267/d,8.517/Cp,140/kT,hex/ls,246.12/lsa,/lsb,670.79/lsc,2.73/lsca,3750\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@vii{N/CS,14.007/Ar,[14.006\noexpand\pgfPT@virgula14.008]/Arstar,0/radio,56/R,71/Rcov,146\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula16\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula13\noexpand\pgfPT@espaco(5+)/Rion,1402.3/Ei,3.04/eneg,0/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+V/ORoman,63.15/Tmelt,-210/TmeltC,77.355/Tboil,-195.795/TboilC,2\noexpand\pgfPTeDistsep5/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+3/eConfignl,1.251/d,29.124/Cp,0.02583/kT,hex/ls,386.1/lsa,386.1/lsb,626.5/lsc,1.62/lsca,1772/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@viii{O/CS,15.999/Ar,[15.999\noexpand\pgfPT@virgula16.000]/Arstar,0/radio,48/R,63/Rcov,140\noexpand\pgfPT@espaco(2-)/Rion,1313.9/Ei,3.44/eneg,140.98/eaff,--2/O,--II/ORoman,54.36/Tmelt,-218.79/TmeltC,90.188/Tboil,-182.962/TboilC,2\noexpand\pgfPTeDistsep6/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+4/eConfignl,1.429/d,29.378/Cp,0.02658/kT,mono/ls,540.3/lsa,342.9/lsb,508.6/lsc,0.94/lsca,1771/DiscY,19/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@ix{F/CS,18.998/Ar,18.998/Arstar,0/radio,42/R,64/Rcov,133\noexpand\pgfPT@espaco(1-)/Rion,1681/Ei,3.98/eneg,328.16/eaff,--1/O,--I/ORoman,53.48/Tmelt,-219.67/TmeltC,85.04/Tboil,-188.11/TboilC,2\noexpand\pgfPTeDistsep7/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+5/eConfignl,1.7/d,31.304/Cp,0.0277/kT,mono/ls,550/lsa,328/lsb,728/lsc,1.32/lsca,1886/DiscY,5/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@x{Ne/CS,20.18/Ar,20.18/Arstar,0/radio,38/R,67/Rcov,---/Rion,2080.7/Ei,---/eneg,0/eaff,---/O,---/ORoman,24.56/Tmelt,-248.59/TmeltC,27.104/Tboil,-246.046/TboilC,2\noexpand\pgfPTeDistsep8/eDist,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfign,[He]::2s+2\noexpand\pgfPT@virgula2p+6/eConfignl,0.9002/d,20.786/Cp,0.0491/kT,fcc/ls,442.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@xi{Na/CS,22.99/Ar,22.99/Arstar,0/radio,190/R,155/Rcov,102\noexpand\pgfPT@espaco(1+)/Rion,495.8/Ei,0.93/eneg,52.87/eaff,+1/O,+I/ORoman,370.944/Tmelt,97.794/TmeltC,1156.09/Tboil,882.94/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ne]::3s+1/eConfign,[Ne]::3s+1/eConfignl,968/d,28.23/Cp,142/kT,bcc/ls,429.06/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xii{Mg/CS,24.305/Ar,[24.304\noexpand\pgfPT@virgula24.307] /Arstar,0/radio,145/R,139/Rcov,72\noexpand\pgfPT@espaco(2+)/Rion,737.7/Ei,1.31/eneg,0/eaff,+2/O,+II/ORoman,923/Tmelt,650/TmeltC,1363/Tboil,1090/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ne]::3s+2/eConfign,[Ne]::3s+2/eConfignl,1738/d,24.869/Cp,156/kT,hcp/ls,320.94/lsa,/lsb,521.05/lsc,1.62/lsca,1755/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xiii{Al/CS,26.982/Ar,26.982/Arstar,0/radio,118/R,126/Rcov,53.5\noexpand\pgfPT@espaco(3+)/Rion,577.5/Ei,1.61/eneg,41.76/eaff,+3/O,+III/ORoman,933.47/Tmelt,660.32/TmeltC,2743/Tboil,2470/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+1/eConfignl,2700/d,24.2/Cp,237/kT,fcc/ls,404.95/lsa,/lsb,/lsc,/lsca,1824/DiscY,2/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xiv{Si/CS,28.085/Ar,[28.084\noexpand\pgfPT@virgula28.086]/Arstar,0/radio,111/R,116/Rcov,40\noexpand\pgfPT@espaco(4+)/Rion,786.5/Ei,1.9/eneg,134.07/eaff,\noexpand\pgfPT@pm4/O,\noexpand\pgfPT@pm IV/ORoman,1687/Tmelt,1414/TmeltC,3538/Tboil,3265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep4/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+2/eConfignl,2330/d,19.789/Cp,149/kT,dia/ls,543.095/lsa,/lsb,/lsc,/lsca,1823/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xv{P/CS,30.974/Ar,30.974/Arstar,0/radio,98/R,111/Rcov,212\noexpand\pgfPT@espaco(3-)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula38\noexpand\pgfPT@espaco(5+)/Rion,1011.8/Ei,2.19/eneg,72.04/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+V/ORoman,317.3/Tmelt,44.15/TmeltC,550/Tboil,277/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep5/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+3/eConfignl,1823/d,23.824/Cp,0.236/kT,tric/ls,1145/lsa,550.3/lsb,1126.1/lsc,0.98/lsca,1669/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xvi{S/CS,32.06/Ar,[32.059\noexpand\pgfPT@virgula32.076]/Arstar,0/radio,88/R,103/Rcov,184\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula37\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula29\noexpand\pgfPT@espaco(6+)/Rion,999.6/Ei,2.58/eneg,200.41/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI/ORoman,388.36/Tmelt,115.21/TmeltC,717.8/Tboil,444.6/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep6/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+4/eConfignl,1960/d,22.75/Cp,0.205/kT,fcort/ls,1046.5/lsa,1286.6/lsb,2448.6/lsc,2.34/lsca,500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xvii{Cl/CS,35.45/Ar,[35.446\noexpand\pgfPT@virgula35.457]/Arstar,0/radio,79/R,99/Rcov,181\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula12\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula27\noexpand\pgfPT@espaco(7+)/Rion,1251.2/Ei,3.16/eneg,348.58/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VII/ORoman,171.6/Tmelt,-101.5/TmeltC,239.11/Tboil,-34.04/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep7/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+5/eConfignl,3.2/d,33.949/Cp,0.0089/kT,bcort/ls,622.35/lsa,445.61/lsb,817.85/lsc,1.31/lsca,1774/DiscY,18/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@xviii{Ar/CS,39.95/Ar,[39.792\noexpand\pgfPT@virgula39.963]/Arstar,0/radio,71/R,96/Rcov,---/Rion,1520.6/Ei,---/eneg,0/eaff,0/O,0/ORoman,83.81/Tmelt,-189.34/TmeltC,87.302/Tboil,-185.848/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8/eDist,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfign,[Ne]::3s+2\noexpand\pgfPT@virgula3p+6/eConfignl,1.784/d,20.786/Cp,0.01772/kT,fcc/ls,525.6/lsa,/lsb,/lsc,/lsca,1894/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@xix{K/CS,39.098/Ar,39.098/Arstar,0/radio,243/R,196/Rcov,138\noexpand\pgfPT@espaco(1+)/Rion,418.8/Ei,0.82/eneg,48.38/eaff,+1/O,+I/ORoman,336.7/Tmelt,63.5/TmeltC,1032/Tboil,759/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Ar]::4s+1/eConfign,[Ar]::4s+1/eConfignl,890/d,29.6/Cp,102.5/kT,bcc/ls,532.8/lsa,/lsb,/lsc,/lsca,1807/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xx{Ca/CS,40.078/Ar,40.078(4) /Arstar,0/radio,194/R,171/Rcov,100\noexpand\pgfPT@espaco(2+)/Rion,589.8/Ei,1/eneg,2.37/eaff,+2/O,+II/ORoman,1115/Tmelt,842/TmeltC,1757/Tboil,1484/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Ar]::4s+2/eConfign,[Ar]::4s+2/eConfignl,1550/d,25.929/Cp,201/kT,fcc/ls,558.84/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxi{Sc/CS,44.956/Ar,44.956/Arstar,0/radio,184/R,148/Rcov,74.5\noexpand\pgfPT@espaco(3+)/Rion,633.1/Ei,1.36/eneg,18/eaff,+3/O,+III/ORoman,1814/Tmelt,1541/TmeltC,3109/Tboil,2836/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+1\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+1/eConfignl,2985/d,25.52/Cp,15.8/kT,hcp/ls,330.9/lsa,/lsb,527.33/lsc,1.59/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxii{Ti/CS,47.867/Ar,47.867/Arstar,0/radio,176/R,136/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60.5\noexpand\pgfPT@espaco(4+)/Rion,658.8/Ei,1.54/eneg,7.29/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+IV/ORoman,1941/Tmelt,1668/TmeltC,3560/Tboil,3287/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+2\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+2/eConfignl,4506/d,25.06/Cp,21.9/kT,hcp/ls,295.03/lsa,/lsb,468.31/lsc,1.59/lsca,1791/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxiii{V/CS,50.942/Ar,50.942/Arstar,0/radio,171/R,134/Rcov,79\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula64\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula54\noexpand\pgfPT@espaco(5+)/Rion,650.9/Ei,1.63/eneg,50.91/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+V/ORoman,2183/Tmelt,1910/TmeltC,3680/Tboil,3407/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+3\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+3/eConfignl,6110/d,24.89/Cp,30.7/kT,bcc/ls,302.31/lsa,/lsb,/lsc,/lsca,1830/DiscY,23/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxiv{Cr/CS,51.996/Ar,51.996/Arstar,0/radio,166/R,122/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula44\noexpand\pgfPT@espaco(6+)/Rion,652.9/Ei,1.66/eneg,65.21/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+6/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+VI/ORoman,2180/Tmelt,1907/TmeltC,2755/Tboil,2482/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+5/eConfignl,7150/d,23.35/Cp,93.9/kT,bcc/ls,288.46/lsa,/lsb,/lsc,/lsca,1797/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxv{Mn/CS,54.938/Ar,54.938/Arstar,0/radio,161/R,119/Rcov,67\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula25.5\noexpand\pgfPT@espaco(6+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(7+)/Rion,717.3/Ei,1.55/eneg,0/eaff,+2\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6\noexpand\pgfPT@virgula+7/O,+II\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI\noexpand\pgfPT@virgula+VII/ORoman,1519/Tmelt,1246/TmeltC,2334/Tboil,2061/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+5\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+5/eConfignl,7210/d,26.32/Cp,7.81/kT,bcc/ls,891.39/lsa,/lsb,/lsc,/lsca,1774/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxvi{Fe/CS,55.845/Ar,55.845(2)/Arstar,0/radio,156/R,116/Rcov,61\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula55\noexpand\pgfPT@espaco(3+)/Rion,762.5/Ei,1.83/eneg,14.79/eaff,+2\noexpand\pgfPT@virgula+3/O,+II\noexpand\pgfPT@virgula+III/ORoman,1811/Tmelt,1538/TmeltC,3134/Tboil,2861/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+6\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+6/eConfignl,7860/d,25.1/Cp,80.4/kT,bcc/ls,286.64/lsa,/lsb,/lsc,/lsca,2000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxvii{Co/CS,58.933/Ar,58.933/Arstar,0/radio,152/R,111/Rcov,65\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula54.5\noexpand\pgfPT@espaco(3+)/Rion,760.4/Ei,1.88/eneg,63.9/eaff,+2\noexpand\pgfPT@virgula+3/O,+II\noexpand\pgfPT@virgula+III/ORoman,1768/Tmelt,1495/TmeltC,3200/Tboil,2927/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+7\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+7/eConfignl,8900/d,24.81/Cp,100/kT,hcp/ls,250.71/lsa,/lsb,406.95/lsc,1.62/lsca,1735/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxviii{Ni/CS,58.693/Ar,58.693/Arstar,0/radio,149/R,110/Rcov,69\noexpand\pgfPT@espaco(2+)/Rion,737.1/Ei,1.91/eneg,111.65/eaff,+2/O,+II/ORoman,1728/Tmelt,1455/TmeltC,3003/Tboil,2730/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+8\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+8/eConfignl,8908/d,26.07/Cp,90.9/kT,fcc/ls,352.4/lsa,/lsb,/lsc,/lsca,1751/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxix{Cu/CS,63.546/Ar,63.546(3)/Arstar,0/radio,145/R,112/Rcov,77\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula73\noexpand\pgfPT@espaco(2+)/Rion,745.5/Ei,1.9/eneg,119.24/eaff,+1\noexpand\pgfPT@virgula+2/O,+I\noexpand\pgfPT@virgula+II/ORoman,1357.77/Tmelt,1084.62/TmeltC,2835/Tboil,2562/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+1/eConfign,[Ar]::4s+1\noexpand\pgfPT@virgula3d+10/eConfignl,8960/d,24.44/Cp,401/kT,fcc/ls,361.47/lsa,/lsb,/lsc,/lsca,8000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxx{Zn/CS,65.38/Ar,65.38(2)/Arstar,0/radio,142/R,118/Rcov,74\noexpand\pgfPT@espaco(2+)/Rion,906.4/Ei,1.65/eneg,0/eaff,+2/O,+II/ORoman,692.68/Tmelt,419.53/TmeltC,1180/Tboil,907/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10/eConfignl,7140/d,25.39/Cp,116/kT,hcp/ls,266.49/lsa,/lsb,494.68/lsc,1.86/lsca,1746/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxi{Ga/CS,69.723/Ar,69.723/Arstar,0/radio,136/R,124/Rcov,62\noexpand\pgfPT@espaco(3+)/Rion,578.8/Ei,1.81/eneg,29.06/eaff,+3/O,+III/ORoman,302.9146/Tmelt,29.7646/TmeltC,2673/Tboil,2400/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+1/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+1/eConfignl,5910/d,25.86/Cp,40.6/kT,bcort/ls,452.58/lsa,451.86/lsb,765.7/lsc,1.69/lsca,1875/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxii{Ge/CS,72.63/Ar,72.630(8)/Arstar,0/radio,125/R,121/Rcov,73\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(4+)/Rion,762/Ei,2.01/eneg,118.94/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,+II\noexpand\pgfPT@virgula\noexpand\pgfPT@pm IV/ORoman,1211.4/Tmelt,938.25/TmeltC,3106/Tboil,2833/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+2/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+2/eConfignl,5323/d,23.222/Cp,60.2/kT,dia/ls,565.791/lsa,/lsb,/lsc,/lsca,1886/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxiii{As/CS,74.922/Ar,74.922/Arstar,0/radio,114/R,121/Rcov,58\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula46\noexpand\pgfPT@espaco(5+)/Rion,947/Ei,2.18/eneg,77.65/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+V/ORoman,1090/Tmelt,817/TmeltC,887/Tboil,614/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+3/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+3/eConfignl,5727/d,24.64/Cp,50.2/kT,rho/ls,375.98/lsa,375.98/lsb,1054.75/lsc,2.81/lsca,1250/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxiv{Se/CS,78.971/Ar,78.971(8)/Arstar,0/radio,103/R,116/Rcov,198\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula50\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula42\noexpand\pgfPT@espaco(6+)/Rion,941/Ei,2.55/eneg,194.96/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI/ORoman,494/Tmelt,221/TmeltC,958/Tboil,685/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+4/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+4/eConfignl,4810/d,25.363/Cp,0.519/kT,mono/ls,905.4/lsa,908.3/lsb,1160.1/lsc,1.28/lsca,1817/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxv{Br/CS,79.904/Ar,[79.901\noexpand\pgfPT@virgula79.907]/Arstar,0/radio,94/R,114/Rcov,196\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula31\noexpand\pgfPT@espaco(5+)/Rion,1139.9/Ei,2.96/eneg,324.54/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V/ORoman,265.8/Tmelt,-7.3/TmeltC,332/Tboil,58.8/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+5/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+5/eConfignl,3102.8/d,75.69/Cp,0.122/kT,bcort/ls,672.65/lsa,464.51/lsb,870.23/lsc,1.29/lsca,1825/DiscY,5/DiscC,1/spectra,liquido/cor}%
+\def\pgfPT@data@xxxvi{Kr/CS,83.798/Ar,83.798(2)/Arstar,0/radio,88/R,117/Rcov,---/Rion,1350.8/Ei,3/eneg,0/eaff,0/O,0/ORoman,115.78/Tmelt,-157.37/TmeltC,119.735/Tboil,-153.415/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Ar]::3d+10\noexpand\pgfPT@virgula4s+2\noexpand\pgfPT@virgula4p+6/eConfign,[Ar]::4s+2\noexpand\pgfPT@virgula3d+10\noexpand\pgfPT@virgula4p+6/eConfignl,3.749/d,20.786/Cp,0.00943/kT,fcc/ls,570.6/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@xxxvii{Rb/CS,85.468/Ar,85.468/Arstar,0/radio,265/R,210/Rcov,152\noexpand\pgfPT@espaco(1+)/Rion,403/Ei,0.82/eneg,46.88/eaff,+1/O,+I/ORoman,312.45/Tmelt,39.3/TmeltC,961/Tboil,688/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Kr]::5s+1/eConfign,[Kr]::5s+1/eConfignl,1532/d,31.06/Cp,58.2/kT,bcc/ls,558.5/lsa,/lsb,/lsc,/lsca,1861/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxviii{Sr/CS,87.62/Ar,87.62/Arstar,0/radio,219/R,185/Rcov,118\noexpand\pgfPT@espaco(2+)/Rion,549.5/Ei,0.95/eneg,5.02/eaff,+2/O,+II/ORoman,1050/Tmelt,777/TmeltC,1650/Tboil,1382/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Kr]::5s+2/eConfign,[Kr]::5s+2/eConfignl,2640/d,26.4/Cp,35.4/kT,fcc/ls,608.49/lsa,/lsb,/lsc,/lsca,1787/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xxxix{Y/CS,88.906/Ar,88.906/Arstar,0/radio,212/R,163/Rcov,90\noexpand\pgfPT@espaco(3+)/Rion,600/Ei,1.22/eneg,29.6/eaff,+3/O,+III/ORoman,1799/Tmelt,1526/TmeltC,3203/Tboil,2930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+1\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+1/eConfignl,4472/d,26.53/Cp,17.2/kT,hcp/ls,364.74/lsa,/lsb,573.06/lsc,1.57/lsca,1794/DiscY,4/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xl{Zr/CS,91.224/Ar,91.224(2)/Arstar,0/radio,206/R,154/Rcov,72\noexpand\pgfPT@espaco(4+)/Rion,640.1/Ei,1.33/eneg,41.81/eaff,+4/O,+IV/ORoman,2128/Tmelt,1855/TmeltC,4650/Tboil,4377/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+2\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+2/eConfignl,6520/d,25.36/Cp,22.6/kT,hcp/ls,323.2/lsa,/lsb,514.7/lsc,1.59/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xli{Nb/CS,92.906/Ar,92.906/Arstar,0/radio,198/R,147/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,652.1/Ei,1.6/eneg,88.52/eaff,+5/O,+V/ORoman,2750/Tmelt,2477/TmeltC,5017/Tboil,4744/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+4\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+4/eConfignl,8570/d,24.6/Cp,53.7/kT,bcc/ls,330.04/lsa,/lsb,/lsc,/lsca,1801/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlii{Mo/CS,95.95/Ar,95.95/Arstar,0/radio,190/R,138/Rcov,65\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula59\noexpand\pgfPT@espaco(6+)/Rion,684.3/Ei,2.16/eneg,72.1/eaff,+4\noexpand\pgfPT@virgula+6/O,+IV\noexpand\pgfPT@virgula+VI/ORoman,2896/Tmelt,2623/TmeltC,4912/Tboil,4639/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+5/eConfignl,10280/d,24.06/Cp,138/kT,bcc/ls,314.69/lsa,/lsb,/lsc,/lsca,1781/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xliii{Tc/CS,[98]/Ar,/Arstar,1/radio,183/R,128/Rcov,64.5\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(7+)/Rion,702/Ei,1.9/eneg,53/eaff,+4\noexpand\pgfPT@virgula+7/O,+IV\noexpand\pgfPT@virgula+VII/ORoman,2430/Tmelt,2157/TmeltC,4538/Tboil,4265/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+5\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+5/eConfignl,11000/d,24.27/Cp,50.6/kT,hcp/ls,273.5/lsa,/lsb,438.8/lsc,1.6/lsca,1937/DiscY,11/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xliv{Ru/CS,101.07/Ar,101.07/Arstar,0/radio,178/R,125/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62\noexpand\pgfPT@espaco(4+)/Rion,710.2/Ei,2.2/eneg,100.96/eaff,+3\noexpand\pgfPT@virgula+4/O,+III\noexpand\pgfPT@virgula+IV/ORoman,2607/Tmelt,2334/TmeltC,4423/Tboil,4150/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+7\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+7/eConfignl,12450/d,24.06/Cp,117/kT,hcp/ls,270.55/lsa,/lsb,428.16/lsc,1.58/lsca,1844/DiscY,15/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlv{Rh/CS,102.91/Ar,102.91/Arstar,0/radio,173/R,125/Rcov,66.5\noexpand\pgfPT@espaco(3+)/Rion,719.7/Ei,2.28/eneg,110.27/eaff,+3/O,+III/ORoman,2237/Tmelt,1964/TmeltC,3968/Tboil,3695/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+8\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+8/eConfignl,12410/d,24.98/Cp,150/kT,fcc/ls,380.34/lsa,/lsb,/lsc,/lsca,1804/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlvi{Pd/CS,106.42/Ar,106.42/Arstar,0/radio,169/R,120/Rcov,86\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula61.5\noexpand\pgfPT@espaco(4+)/Rion,804.4/Ei,2.2/eneg,54.24/eaff,0\noexpand\pgfPT@virgula+2\noexpand\pgfPT@virgula+4/O,0\noexpand\pgfPT@virgula+II\noexpand\pgfPT@virgula+IV/ORoman,1828.05/Tmelt,1554.9/TmeltC,3236/Tboil,2963/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18/eDist,[Kr]::4d+10/eConfign,[Kr]::4d+10/eConfignl,12023/d,25.98/Cp,71.8/kT,fcc/ls,389.02/lsa,/lsb,/lsc,/lsca,1802/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlvii{Ag/CS,107.87/Ar,107.87/Arstar,0/radio,165/R,128/Rcov,115\noexpand\pgfPT@espaco(1+)/Rion,731/Ei,1.93/eneg,125.86/eaff,+1/O,+I/ORoman,1234.93/Tmelt,961.78/TmeltC,2483/Tboil,2210/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+1/eConfign,[Kr]::5s+1\noexpand\pgfPT@virgula4d+10/eConfignl,10490/d,25.35/Cp,429/kT,fcc/ls,408.57/lsa,/lsb,/lsc,/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlviii{Cd/CS,112.41/Ar,112.41/Arstar,0/radio,161/R,136/Rcov,95\noexpand\pgfPT@espaco(2+)/Rion,867.8/Ei,1.69/eneg,0/eaff,+2/O,+II/ORoman,594.22/Tmelt,321.07/TmeltC,1040/Tboil,767/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10/eConfignl,8650/d,26.02/Cp,96.6/kT,hcp/ls,297.88/lsa,/lsb,561.67/lsc,1.89/lsca,1817/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xlix{In/CS,114.82/Ar,114.82/Arstar,0/radio,156/R,142/Rcov,80\noexpand\pgfPT@espaco(3+)/Rion,558.3/Ei,1.78/eneg,37.04/eaff,+3/O,+III/ORoman,429.75/Tmelt,156.6/TmeltC,2345/Tboil,2072/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+1/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+1/eConfignl,7310/d,26.74/Cp,81.8/kT,tetr/ls,325.17/lsa,/lsb,494.59/lsc,1.52/lsca,1863/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@l{Sn/CS,118.71/Ar,118.71/Arstar,0/radio,145/R,140/Rcov,118\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula69\noexpand\pgfPT@espaco(4+)/Rion,708.6/Ei,1.96/eneg,107.3/eaff,+2\noexpand\pgfPT@virgula\noexpand\pgfPT@pm4/O,+II\noexpand\pgfPT@virgula\noexpand\pgfPT@pm IV/ORoman,505.08/Tmelt,231.93/TmeltC,2875/Tboil,2602/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+2/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+2/eConfignl,7265/d,25.77/Cp,66.8/kT,ctetr/ls,583.1/lsa,/lsb,318.1/lsc,0.55/lsca,3000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,0/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@li{Sb/CS,121.76/Ar,121.76/Arstar,0/radio,133/R,140/Rcov,76\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(5+)/Rion,834/Ei,2.05/eneg,101.06/eaff,\noexpand\pgfPT@pm3\noexpand\pgfPT@virgula+5/O,\noexpand\pgfPT@pm III\noexpand\pgfPT@virgula+V/ORoman,903.78/Tmelt,630.63/TmeltC,1908/Tboil,1635/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+3/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+3/eConfignl,6697/d,25.23/Cp,24.4/kT,rho/ls,430.7/lsa,/lsb,1127.3/lsc,2.62/lsca,815/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lii{Te/CS,127.6/Ar,127.60(3)/Arstar,0/radio,123/R,136/Rcov,221\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula97\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula56\noexpand\pgfPT@espaco(6+)/Rion,869.3/Ei,2.1/eneg,190.16/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+VI/ORoman,722.66/Tmelt,449.51/TmeltC,1261/Tboil,988/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+4/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+4/eConfignl,6240/d,25.73/Cp,3/kT,rho/ls,445.72/lsa,/lsb,592.9/lsc,1.33/lsca,1782/DiscY,14/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@liii{I/CS,126.9/Ar,126.9/Arstar,0/radio,115/R,133/Rcov,220\noexpand\pgfPT@espaco(1-)\noexpand\pgfPT@virgula95\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula53\noexpand\pgfPT@espaco(7+)/Rion,1008.4/Ei,2.66/eneg,295.15/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VII/ORoman,386.85/Tmelt,113.7/TmeltC,457.4/Tboil,184.3/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+5/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+5/eConfignl,4933/d,54.44/Cp,0.449/kT,bcort/ls,726.97/lsa,479.03/lsb,979.42/lsc,1.35/lsca,1811/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@liv{Xe/CS,131.29/Ar,131.29/Arstar,0/radio,108/R,131/Rcov,---/Rion,1170.4/Ei,2.6/eneg,0/eaff,0/O,0/ORoman,161.4/Tmelt,-111.75/TmeltC,165.051/Tboil,-108.099/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Kr]::4d+10\noexpand\pgfPT@virgula5s+2\noexpand\pgfPT@virgula5p+6/eConfign,[Kr]::5s+2\noexpand\pgfPT@virgula4d+10\noexpand\pgfPT@virgula5p+6/eConfignl,5.894/d,20.786/Cp,0.00565/kT,fcc/ls,620.23/lsa,/lsb,/lsc,/lsca,1898/DiscY,21/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@lv{Cs/CS,132.91/Ar,132.91/Arstar,0/radio,298/R,232/Rcov,167\noexpand\pgfPT@espaco(1+)/Rion,375.7/Ei,0.79/eneg,45.51/eaff,+1/O,+I/ORoman,301.7/Tmelt,28.5/TmeltC,944/Tboil,671/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Xe]::6s+1/eConfign,[Xe]::6s+1/eConfignl,1930/d,32.21/Cp,35.9/kT,bcc/ls,614.1/lsa,/lsb,/lsc,/lsca,1860/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lvi{Ba/CS,137.33/Ar,137.33/Arstar,0/radio,253/R,196/Rcov,135\noexpand\pgfPT@espaco(2+)/Rion,502.9/Ei,0.89/eneg,13.95/eaff,+2/O,+II/ORoman,1000/Tmelt,727/TmeltC,1910/Tboil,1637/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::6s+2/eConfign,[Xe]::6s+2/eConfignl,3510/d,28.07/Cp,18.4/kT,bcc/ls,501.9/lsa,/lsb,/lsc,/lsca,1808/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lvii{La/CS,138.91/Ar,138.91/Arstar,0/radio,226/R,180/Rcov,103.2\noexpand\pgfPT@espaco(3+)/Rion,538.1/Ei,1.1/eneg,53.8/eaff,+3/O,+III/ORoman,1193/Tmelt,920/TmeltC,3737/Tboil,3464/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula5d+1/eConfignl,6162/d,27.11/Cp,13.4/kT,hex/ls,377.2/lsa,/lsb,1214.4/lsc,3.22/lsca,1838/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lviii{Ce/CS,140.12/Ar,140.12/Arstar,0/radio,210/R,163/Rcov,101\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)/Rion,534.4/Ei,1.12/eneg,55/eaff,+3\noexpand\pgfPT@virgula+4/O,+III\noexpand\pgfPT@virgula+IV/ORoman,1068/Tmelt,795/TmeltC,3716/Tboil,3443/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep19\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+1\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+1\noexpand\pgfPT@virgula5d+1/eConfignl,6770/d,26.94/Cp,11.3/kT,hex/ls,362/lsa,/lsb,599/lsc,1.65/lsca,1803/DiscY,9/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lix{Pr/CS,140.91/Ar,140.91/Arstar,0/radio,247/R,17/Rcov,99\noexpand\pgfPT@espaco(3+)/Rion,527/Ei,1.13/eneg,10.54/eaff,+3/O,+III/ORoman,1208/Tmelt,935/TmeltC,3403/Tboil,3130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+3/eConfignl,6770/d,27.2/Cp,12.5/kT,hex/ls,367.21/lsa,/lsb,1183.26/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lx{Nd/CS,144.24/Ar,144.24/Arstar,0/radio,206/R,17/Rcov,98.3\noexpand\pgfPT@espaco(3+)/Rion,533.1/Ei,1.14/eneg,9.41/eaff,+3/O,+III/ORoman,1297/Tmelt,1024/TmeltC,3347/Tboil,3074/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+4/eConfignl,7010/d,27.45/Cp,16.5/kT,hex/ls,365.82/lsa,/lsb,1179.66/lsc,3.22/lsca,1885/DiscY,1/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxi{Pm/CS,[145]/Ar,[145]/Arstar,1/radio,205/R,173/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,540/Ei,1.13/eneg,12.45/eaff,+3/O,+III/ORoman,1315/Tmelt,1042/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep23\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+5/eConfignl,7260/d,---/Cp,17.9/kT,hex/ls,365/lsa,/lsb,1165/lsc,3.19/lsca,1945/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@lxii{Sm/CS,150.36/Ar,150.36(2)/Arstar,0/radio,238/R,172/Rcov,95.8\noexpand\pgfPT@espaco(3+)/Rion,544.5/Ei,1.17/eneg,15.63/eaff,+3/O,+III/ORoman,1345/Tmelt,1072/TmeltC,2173/Tboil,1900/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+6/eConfignl,7520/d,29.54/Cp,13.3/kT,rho/ls,362.1/lsa,/lsb,2625/lsc,7.25/lsca,1879/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxiii{Eu/CS,151.96/Ar,151.96/Arstar,0/radio,231/R,168/Rcov,117\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula94.7\noexpand\pgfPT@espaco(3+)/Rion,547.1/Ei,1.2/eneg,11.2/eaff,+2\noexpand\pgfPT@virgula+3/O,+II\noexpand\pgfPT@virgula+III/ORoman,1099/Tmelt,826/TmeltC,1802/Tboil,1529/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7/eConfignl,5244/d,27.66/Cp,13.9/kT,bcc/ls,458.1/lsa,/lsb,/lsc,/lsca,1901/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxiv{Gd/CS,157.25/Ar,157.25(3)/Arstar,0/radio,233/R,169/Rcov,93.5\noexpand\pgfPT@espaco(3+)/Rion,593.4/Ei,1.2/eneg,13.22/eaff,+3/O,+III/ORoman,1585/Tmelt,1312/TmeltC,3273/Tboil,3000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+7\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+7\noexpand\pgfPT@virgula5d+1/eConfignl,7900/d,37.03/Cp,10.6/kT,hcp/ls,363.6/lsa,/lsb,578.26/lsc,1.59/lsca,1880/DiscY,20/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxv{Tb/CS,158.93/Ar,158.93/Arstar,0/radio,225/R,168/Rcov,92.3\noexpand\pgfPT@espaco(3+)/Rion,565.8/Ei,1.2/eneg,12.67/eaff,+3/O,+III/ORoman,1629/Tmelt,1356/TmeltC,3396/Tboil,3123/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+9\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+9/eConfignl,8230/d,28.91/Cp,11.1/kT,hcp/ls,360.1/lsa,/lsb,569.36/lsc,1.58/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxvi{Dy/CS,162.5/Ar,162.5/Arstar,0/radio,228/R,167/Rcov,91.2\noexpand\pgfPT@espaco(3+)/Rion,573/Ei,1.22/eneg,33.96/eaff,+3/O,+III/ORoman,1680/Tmelt,1407/TmeltC,2840/Tboil,2567/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+10/eConfignl,8540/d,27.7/Cp,10.7/kT,hcp/ls,359.3/lsa,/lsb,565.37/lsc,1.57/lsca,1886/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxvii{Ho/CS,164.93/Ar,164.93/Arstar,0/radio,226/R,166/Rcov,90.1\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.23/eneg,32.61/eaff,+3/O,+III/ORoman,1734/Tmelt,1461/TmeltC,2873/Tboil,2600/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+11\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+11/eConfignl,8790/d,27.15/Cp,16.2/kT,hcp/ls,357.73/lsa,/lsb,561.58/lsc,1.57/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxviii{Er/CS,167.26/Ar,167.26/Arstar,0/radio,226/R,165/Rcov,89\noexpand\pgfPT@espaco(3+)/Rion,589.3/Ei,1.24/eneg,30.1/eaff,+3/O,+III/ORoman,1802/Tmelt,1529/TmeltC,3141/Tboil,2868/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+12\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+12/eConfignl,9066/d,28.12/Cp,14.5/kT,hcp/ls,355.88/lsa,/lsb,558.74/lsc,1.57/lsca,1843/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxix{Tm/CS,168.93/Ar,168.93/Arstar,0/radio,222/R,164/Rcov,88\noexpand\pgfPT@espaco(3+)/Rion,596.7/Ei,1.25/eneg,99/eaff,+3/O,+III/ORoman,1818/Tmelt,1545/TmeltC,2223/Tboil,1950/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+13\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+13/eConfignl,9320/d,27.03/Cp,16.9/kT,hcp/ls,353.75/lsa,/lsb,555.46/lsc,1.57/lsca,1879/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxx{Yb/CS,173.05/Ar,173.05/Arstar,0/radio,222/R,170/Rcov,86.8\noexpand\pgfPT@espaco(3+)/Rion,603.4/Ei,1.1/eneg,0/eaff,+3/O,+III/ORoman,1097/Tmelt,824/TmeltC,1703/Tboil,1430/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14/eConfignl,6900/d,26.74/Cp,38.5/kT,fcc/ls,548.47/lsa,/lsb,/lsc,/lsca,1878/DiscY,20/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxi{Lu/CS,174.97/Ar,174.97/Arstar,0/radio,217/R,162/Rcov,86.1\noexpand\pgfPT@espaco(3+)/Rion,523.5/Ei,1.27/eneg,23.04/eaff,+3/O,+III/ORoman,1925/Tmelt,1652/TmeltC,3675/Tboil,3402/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+1\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+1/eConfignl,9841/d,26.86/Cp,16.4/kT,hcp/ls,350.31/lsa,/lsb,555.09/lsc,1.58/lsca,1906/DiscY,6/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxii{Hf/CS,178.49/Ar,178.49(2)/Arstar,0/radio,208/R,152/Rcov,71\noexpand\pgfPT@espaco(4+)/Rion,658.5/Ei,1.3/eneg,17.18/eaff,+4/O,+IV/ORoman,2506/Tmelt,2233/TmeltC,4876/Tboil,4603/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+2\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+2/eConfignl,13310/d,25.73/Cp,23/kT,hcp/ls,319.64/lsa,/lsb,505.11/lsc,1.58/lsca,1922/DiscY,2/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxiii{Ta/CS,180.95/Ar,180.95/Arstar,0/radio,200/R,146/Rcov,64\noexpand\pgfPT@espaco(5+)/Rion,761/Ei,1.5/eneg,31/eaff,+5/O,+V/ORoman,3290/Tmelt,3017/TmeltC,5731/Tboil,5458/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+3\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+3/eConfignl,16690/d,25.36/Cp,57.5/kT,bcc/ls,330.26/lsa,/lsb,/lsc,/lsca,1802/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxiv{W/CS,183.84/Ar,183.84/Arstar,0/radio,193/R,137/Rcov,66\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula60\noexpand\pgfPT@espaco(6+)/Rion,770/Ei,2.36/eneg,78.76/eaff,+4\noexpand\pgfPT@virgula+6/O,+IV\noexpand\pgfPT@virgula+VI/ORoman,3695/Tmelt,3422/TmeltC,6203/Tboil,5930/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+4\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+4/eConfignl,19250/d,24.27/Cp,173/kT,bcc/ls,316.52/lsa,/lsb,/lsc,/lsca,1783/DiscY,17/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxv{Re/CS,186.21/Ar,186.21/Arstar,0/radio,188/R,131/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,760/Ei,1.9/eneg,5.83/eaff,+4/O,+IV/ORoman,3459/Tmelt,3186/TmeltC,5869/Tboil,5596/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+5\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+5/eConfignl,21020/d,25.48/Cp,48/kT,hcp/ls,276.1/lsa,/lsb,445.8/lsc,1.62/lsca,1925/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxvi{Os/CS,190.23/Ar,190.23(3)/Arstar,0/radio,185/R,129/Rcov,63\noexpand\pgfPT@espaco(4+)/Rion,840/Ei,2.2/eneg,103.99/eaff,+4/O,+IV/ORoman,3306/Tmelt,3033/TmeltC,5285/Tboil,5012/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+6\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+6/eConfignl,22590/d,24.7/Cp,87.6/kT,hcp/ls,273.43/lsa,/lsb,431.73/lsc,1.58/lsca,1803/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxvii{Ir/CS,192.22/Ar,192.22/Arstar,0/radio,180/R,122/Rcov,68\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,880/Ei,2.2/eneg,150.91/eaff,+3\noexpand\pgfPT@virgula+4/O,+III\noexpand\pgfPT@virgula+IV/ORoman,2719/Tmelt,2446/TmeltC,4403/Tboil,4130/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+7\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+7/eConfignl,22560/d,25.1/Cp,147/kT,fcc/ls,383.92/lsa,/lsb,/lsc,/lsca,1803/DiscY,7/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxviii{Pt/CS,195.08/Ar,195.08/Arstar,0/radio,177/R,123/Rcov,80\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula62.5\noexpand\pgfPT@espaco(4+)/Rion,870/Ei,2.28/eneg,205.04/eaff,+2\noexpand\pgfPT@virgula+4/O,+II\noexpand\pgfPT@virgula+IV/ORoman,2041.4/Tmelt,1768.3/TmeltC,4098/Tboil,3825/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+9\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+9/eConfignl,21450/d,25.86/Cp,71.6/kT,fcc/ls,392.35/lsa,/lsb,/lsc,/lsca,1735/DiscY,13/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxix{Au/CS,196.97/Ar,196.97/Arstar,0/radio,174/R,124/Rcov,137\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula85\noexpand\pgfPT@espaco(3+)/Rion,890.1/Ei,2.54/eneg,222.75/eaff,+1\noexpand\pgfPT@virgula+3/O,+I\noexpand\pgfPT@virgula+III/ORoman,1337.33/Tmelt,1064.18/TmeltC,3243/Tboil,2970/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep1/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+1/eConfign,[Xe]::6s+1\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,19300/d,25.418/Cp,318/kT,fcc/ls,407.83/lsa,/lsb,/lsc,/lsca,4000\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,100/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxx{Hg/CS,200.59/Ar,200.59/Arstar,0/radio,171/R,133/Rcov,119\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula102\noexpand\pgfPT@espaco(2+)/Rion,1007.1/Ei,2/eneg,0/eaff,+1\noexpand\pgfPT@virgula+2/O,+I\noexpand\pgfPT@virgula+II/ORoman,234.32/Tmelt,-38.83/TmeltC,629.88/Tboil,356.73/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10/eConfignl,13534/d,27.983/Cp,8.3/kT,rho/ls,300.9/lsa,/lsb,/lsc,/lsca,1500\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,liquido/cor}%
+\def\pgfPT@data@lxxxi{Tl/CS,204.38/Ar,[204.38\noexpand\pgfPT@virgula204.39]/Arstar,0/radio,156/R,144/Rcov,150\noexpand\pgfPT@espaco(1+)\noexpand\pgfPT@virgula88.5\noexpand\pgfPT@espaco(3+)/Rion,589.4/Ei,1.62/eneg,30.88/eaff,+1\noexpand\pgfPT@virgula+3/O,+I\noexpand\pgfPT@virgula+III/ORoman,577/Tmelt,304/TmeltC,1746/Tboil,1473/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+1/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+1/eConfignl,11850/d,26.32/Cp,46.1/kT,hcp/ls,345.66/lsa,/lsb,552.48/lsc,1.6/lsca,1861/DiscY,21/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxii{Pb/CS,207.2/Ar,207.2/Arstar,0/radio,154/R,144/Rcov,119\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula77.5\noexpand\pgfPT@espaco(4+)/Rion,715.6/Ei,1.87/eneg,34.42/eaff,+2\noexpand\pgfPT@virgula+4/O,+II\noexpand\pgfPT@virgula+IV/ORoman,600.61/Tmelt,327.46/TmeltC,2022/Tboil,1749/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+2/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+2/eConfignl,11340/d,26.65/Cp,35.3/kT,fcc/ls,495.02/lsa,/lsb,/lsc,/lsca,3800\noexpand\pgfPT@scaletxt{\pgfPTDiscYBCscale}{\noexpand\pgfPT@espaco\noexpand\pgfPT@BClabel}/DiscY,3/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxiii{Bi/CS,208.98/Ar,208.98/Arstar,0/radio,143/R,151/Rcov,103\noexpand\pgfPT@espaco(3+)/Rion,703/Ei,2.02/eneg,90.92/eaff,+3/O,+III/ORoman,544.7/Tmelt,271.5/TmeltC,1837/Tboil,1564/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+3/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+3/eConfignl,9780/d,25.52/Cp,7.97/kT,mono/ls,667.4/lsa,611.7/lsb,330.4/lsc,0.5/lsca,1400/DiscY,12/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxiv{Po/CS,[209]/Ar,/Arstar,1/radio,135/R,145/Rcov,223\noexpand\pgfPT@espaco(2-)\noexpand\pgfPT@virgula94\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula67\noexpand\pgfPT@espaco(6+)/Rion,812.1/Ei,2/eneg,136/eaff,\noexpand\pgfPT@pm2\noexpand\pgfPT@virgula+4\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+6/O,\noexpand\pgfPT@pm II\noexpand\pgfPT@virgula+IV\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VI/ORoman,527/Tmelt,254/TmeltC,1235/Tboil,962/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+4/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+4/eConfignl,9196/d,26.4/Cp,0/kT,sc/ls,335.9/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxv{At/CS,[210]/Ar,/Arstar,1/radio,127/R,147/Rcov,62\noexpand\pgfPT@espaco(7+)/Rion,899.003/Ei,2.2/eneg,233.09/eaff,\noexpand\pgfPT@pm1\noexpand\pgfPT@virgula+3\noexpand\pgfPT@virgula+5\noexpand\pgfPT@virgula+7/O,\noexpand\pgfPT@pm I\noexpand\pgfPT@virgula+III\noexpand\pgfPT@virgula+V\noexpand\pgfPT@virgula+VII/ORoman,575/Tmelt,302/TmeltC,503/Tboil,230/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+5/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+5/eConfignl,---/d,---/Cp,1.7/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1940/DiscY,22/DiscC,0/spectra,solido/cor}%
+\def\pgfPT@data@lxxxvi{Rn/CS,[222]/Ar,/Arstar,1/radio,120/R,142/Rcov,---/Rion,1037/Ei,2.2/eneg,0/eaff,+2\noexpand\pgfPT@virgula+6/O,+II\noexpand\pgfPT@virgula+VI/ORoman,202/Tmelt,-71/TmeltC,211.5/Tboil,-61.7/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Xe]::4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6s+2\noexpand\pgfPT@virgula6p+6/eConfign,[Xe]::6s+2\noexpand\pgfPT@virgula4f+14\noexpand\pgfPT@virgula5d+10\noexpand\pgfPT@virgula6p+6/eConfignl,9.73/d,20.786/Cp,0.00361/kT,fcc/ls,---/lsa,/lsb,/lsc,/lsca,1899/DiscY,8/DiscC,1/spectra,gasoso/cor}%
+\def\pgfPT@data@lxxxvii{Fr/CS,[223]/Ar,/Arstar,1/radio,---/R,---/Rcov,180\noexpand\pgfPT@espaco(1+)/Rion,380/Ei,0.7/eneg,46.89/eaff,+1/O,+I/ORoman,281/Tmelt,8/TmeltC,890/Tboil,620/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep1/eDist,[Rn]::7s+1/eConfign,[Rn]::7s+1/eConfignl,---/d,31.8/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1939/DiscY,5/DiscC,0/spectra,solido/cor}%
+\def\pgfPT@data@lxxxviii{Ra/CS,[226]/Ar,/Arstar,1/radio,---/R,201/Rcov,148\noexpand\pgfPT@espaco(2+)/Rion,509.3/Ei,0.9/eneg,9.65/eaff,+2/O,+II/ORoman,973/Tmelt,700/TmeltC,2010/Tboil,1737/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::7s+2/eConfign,[Rn]::7s+2/eConfignl,5500/d,---/Cp,18.6/kT,bcc/ls,514.8/lsa,/lsb,/lsc,/lsca,1898/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@lxxxix{Ac/CS,[227]/Ar,/Arstar,1/radio,---/R,186/Rcov,106.5\noexpand\pgfPT@espaco(3+)/Rion,499/Ei,1.1/eneg,33.77/eaff,+3/O,+III/ORoman,1323/Tmelt,1050/TmeltC,3471/Tboil,3198/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+1/eConfignl,10000/d,27.2/Cp,12/kT,fcc/ls,587/lsa,/lsb,/lsc,/lsca,1902/DiscY,5/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xc{Th/CS,232.04/Ar,232.04/Arstar,1/radio,---/R,175/Rcov,/Rion,587/Ei,1.3/eneg,58.63/eaff,+4/O,+IV/ORoman,2115/Tmelt,1842/TmeltC,5061/Tboil,4788/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula6d+2/eConfignl,11700/d,26.23/Cp,54/kT,fcc/ls,508.42/lsa,/lsb,/lsc,/lsca,1829/DiscY,18/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xci{Pa/CS,231.04/Ar,231.04/Arstar,1/radio,---/R,169/Rcov,90\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula78\noexpand\pgfPT@espaco(5+)/Rion,568/Ei,1.5/eneg,53.03/eaff,+5/O,+V/ORoman,1841/Tmelt,1568/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep20\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+2\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+2\noexpand\pgfPT@virgula6d+1/eConfignl,15370/d,---/Cp,47/kT,tetr/ls,392.5/lsa,/lsb,323.8/lsc,0.82/lsca,1913/DiscY,10/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xcii{U/CS,238.03/Ar,238.03/Arstar,1/radio,---/R,170/Rcov,76\noexpand\pgfPT@espaco(5+)/Rion,597.6/Ei,1.38/eneg,30.39/eaff,+4\noexpand\pgfPT@virgula+6/O,+IV\noexpand\pgfPT@virgula+VI/ORoman,1405.3/Tmelt,1132.2/TmeltC,4404/Tboil,4131/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep21\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+3\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+3\noexpand\pgfPT@virgula6d+1/eConfignl,19100/d,27.665/Cp,27.5/kT,bcort/ls,285.37/lsa,586.95/lsb,495.48/lsc,1.74/lsca,1789/DiscY,8/DiscC,1/spectra,solido/cor}%
+\def\pgfPT@data@xciii{Np/CS,[237]/Ar,/Arstar,1/radio,---/R,171/Rcov,110\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula87\noexpand\pgfPT@espaco(4+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(7+)/Rion,604.5/Ei,1.36/eneg,45.85/eaff,+5/O,+V/ORoman,917/Tmelt,644/TmeltC,4273/Tboil,4000/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep22\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+4\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+4\noexpand\pgfPT@virgula6d+1/eConfignl,20200/d,29.46/Cp,6.3/kT,bcort/ls,666.3/lsa,472.3/lsb,488.7/lsc,0.73/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xciv{Pu/CS,[244]/Ar,/Arstar,1/radio,---/R,172/Rcov,100\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula74\noexpand\pgfPT@espaco(5+)\noexpand\pgfPT@virgula71\noexpand\pgfPT@espaco(6+)/Rion,584.7/Ei,1.28/eneg,0/eaff,+4/O,+IV/ORoman,912.5/Tmelt,639.4/TmeltC,3501/Tboil,3228/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep24\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+6/eConfignl,19816/d,35.5/Cp,6.74/kT,mono/ls,618.3/lsa,482.2/lsb,1096.3/lsc,1.77/lsca,1940/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcv{Am/CS,[243]/Ar,/Arstar,1/radio,---/R,166/Rcov,126\noexpand\pgfPT@espaco(2+)\noexpand\pgfPT@virgula97.5\noexpand\pgfPT@espaco(3+)/Rion,578/Ei,1.13/eneg,9.93/eaff,+3/O,+III/ORoman,1449/Tmelt,1176/TmeltC,2880/Tboil,2607/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7/eConfignl,12000/d,62.7/Cp,10/kT,hex/ls,346.81/lsa,/lsb,1124.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcvi{Cm/CS,[247]/Ar,/Arstar,1/radio,---/R,166/Rcov,97\noexpand\pgfPT@espaco(3+)/Rion,581/Ei,1.28/eneg,27.17/eaff,+3/O,+III/ORoman,1613/Tmelt,1340/TmeltC,3383/Tboil,3110/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep25\noexpand\pgfPTeDistsep9\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+7\noexpand\pgfPT@virgula6d+1\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+7\noexpand\pgfPT@virgula6d+1/eConfignl,13510/d,---/Cp,---/kT,hex/ls,349.6/lsa,/lsb,1133.1/lsc,3.24/lsca,1944/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcvii{Bk/CS,[247]/Ar,/Arstar,1/radio,---/R,---/Rcov,96\noexpand\pgfPT@espaco(3+)/Rion,601/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1323/Tmelt,1050/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep27\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+9/eConfignl,14780/d,---/Cp,10/kT,hex/ls,341.6/lsa,/lsb,1106.9/lsc,3.24/lsca,1949/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcviii{Cf/CS,[251]/Ar,/Arstar,1/radio,---/R,---/Rcov,95\noexpand\pgfPT@espaco(3+)\noexpand\pgfPT@virgula82.1\noexpand\pgfPT@espaco(4+)/Rion,608/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1173/Tmelt,900/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep28\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+10/eConfignl,15100/d,---/Cp,---/kT,hex/ls,338/lsa,/lsb,1102.5/lsc,3.26/lsca,1950/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@xcix{Es/CS,[252]/Ar,/Arstar,1/radio,---/R,---/Rcov,83.5\noexpand\pgfPT@espaco(3+)/Rion,619/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1133/Tmelt,860/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep29\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+11\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+11/eConfignl,8840/d,---/Cp,---/kT,fcc/ls,575/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,1/spectra,sintetico/cor}%
+\def\pgfPT@data@c{Fm/CS,[257]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,627/Ei,1.3/eneg,33.96/eaff,+3/O,+III/ORoman,1800/Tmelt,1527/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep30\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+12\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+12/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1952/DiscY,22/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@ci{Md/CS,[258]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,635/Ei,1.3/eneg,93.91/eaff,+3/O,+III/ORoman,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep31\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+13\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+13/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1955/DiscY,22/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cii{No/CS,[259]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,642/Ei,1.3/eneg,0/eaff,+2/O,+II/ORoman,1100/Tmelt,827/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1966/DiscY,24/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@ciii{Lr/CS,[266]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,470/Ei,1.3/eneg,0/eaff,+3/O,+III/ORoman,1900/Tmelt,1627/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1961/DiscY,22/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@civ{Rf/CS,[267]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-580/Ei,---/eneg,---/eaff,+4/O,+IV/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep10\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+2\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1969/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cv{Db/CS,[268]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-665/Ei,---/eneg,---/eaff,+5/O,+V/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep11\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+3\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1970/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cvi{Sg/CS,[269]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-757/Ei,---/eneg,---/eaff,+6/O,+VI/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep12\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+4\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1974/DiscY,22/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cvii{Bh/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-740/Ei,---/eneg,---/eaff,+7/O,+VII/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep13\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+5\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1981/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cviii{Hs/CS,[270]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-730/Ei,---/eneg,---/eaff,+8/O,+VIII/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep14\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+6\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1984/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cix{Mt/CS,[278]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-800/Ei,---/eneg,---/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep15\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+7\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+7/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1982/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cx{Ds/CS,[281]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-960/Ei,---/eneg,---/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep16\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+8\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+8/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxi{Rg/CS,[282]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1020/Ei,---/eneg,151/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep17\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+9\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+9/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1994/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxii{Cn/CS,[285]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-1155/Ei,---/eneg,---/eaff,+2/O,+II/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep2/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1996/DiscY,8/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxiii{Nh/CS,[286]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-707.2/Ei,---/eneg,66.6/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep3/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+1/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+1/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2004/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxiv{Fl/CS,[289]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-832.2/Ei,---/eneg,---/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep4/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+2/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+2/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,1998/DiscY,15/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxv{Mc/CS,[290]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-538.3/Ei,---/eneg,35.3/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep5/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+3/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+3/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2003/DiscY,16/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxvi{Lv/CS,[293]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-663.9/Ei,---/eneg,74.9/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep6/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+4/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+4/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2000/DiscY,15/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxvii{Ts/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-736.9/Ei,---/eneg,165.9/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep7/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+5/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+5/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2009/DiscY,100/DiscC,0/spectra,sintetico/cor}%
+\def\pgfPT@data@cxviii{Og/CS,[294]/Ar,/Arstar,1/radio,---/R,---/Rcov,---/Rion,-860.1/Ei,---/eneg,5.4/eaff,---/O,---/ORoman,---/Tmelt,---/TmeltC,---/Tboil,---/TboilC,2\noexpand\pgfPTeDistsep8\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep32\noexpand\pgfPTeDistsep18\noexpand\pgfPTeDistsep8/eDist,[Rn]::5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7s+2\noexpand\pgfPT@virgula7p+6/eConfign,[Rn]::7s+2\noexpand\pgfPT@virgula5f+14\noexpand\pgfPT@virgula6d+10\noexpand\pgfPT@virgula7p+6/eConfignl,---/d,---/Cp,---/kT,---/ls,---/lsa,/lsb,/lsc,/lsca,2002/DiscY,16/DiscC,0/spectra,sintetico/cor}%
\endinput
diff --git a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.drawing.keys.tex b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.drawing.keys.tex
index 8c09f620e15..140577bcce1 100644
--- a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.drawing.keys.tex
+++ b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.drawing.keys.tex
@@ -189,6 +189,12 @@ group label color/.default=blue!50!black,%
label LaAc font/.get=\pgfPTlabLaAcfont,%
label LaAc font/.store in=\pgfPTlabLaAcfont,%
label LaAc font/.default=\footnotesize\itshape,%
+group numbers/.get=\pgfPTgrnum,% new in v2.1.1
+group numbers/.store in=\pgfPTgrnum,%
+group numbers/.default=arabic,%
+Roman label color/.get=\pgfPTRomanlabgrcolor,% new in v2.1.1
+Roman label color/.store in=\pgfPTRomanlabgrcolor,%
+Roman label color/.default=blue!70!white,%
LaAc/.code=\pgfPT@LaAcstyle{#1},%
LaAc/.default={s=true,f=\footnotesize\itshape},%
per/.code=\pgfPT@perstyle{#1},%
@@ -199,7 +205,30 @@ per+gr/.code=\pgfPT@pergrstyle{#1},%
per+gr/.default={pc=red!50!black,gc=blue!50!black,f=\small\bfseries}%
}%
% setting keys with default values ---------------------------------------------------------------
-\pgfkeys{/pgfPerTable/.cd,label font,period label color,group label color,label LaAc font}%
+\pgfkeys{/pgfPerTable/.cd,label font,period label color,group label color,label LaAc font,group numbers,Roman label color}%
+% Groups in 'old' Roman numerals
+% CAS (USA) ; old IUPAC (Europe) ->
+\newif\ifpgfPT@grRoman@CAS\newif\ifpgfPT@grRoman\newif\ifpgfPT@grarabic%
+\def\pgfPT@gr@numbers#1{\edef\@pgfPT@grnum@atual{#1}\relax%
+\edef\@pgfPT@grnum@CAS{CAS}\edef\@pgfPT@grnum@IUPAC{IUPAC}%
+\edef\@pgfPT@grnum@CASarabic{CAS*}\edef\@pgfPT@grnum@IUPACarabic{IUPAC*}%
+\pgfPT@grRoman@CASfalse\pgfPT@grRomanfalse\pgfPT@grarabicfalse%
+\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@CAS\relax\pgfPT@grRoman@CAStrue\pgfPT@grRomantrue\else%
+\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@IUPAC\relax\pgfPT@grRomantrue\else%
+\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@CASarabic\relax\pgfPT@grRoman@CAStrue\pgfPT@grRomantrue\pgfPT@grarabictrue\else%
+\ifx\@pgfPT@grnum@atual\@pgfPT@grnum@IUPACarabic\relax\pgfPT@grRomantrue\pgfPT@grarabictrue\fi\fi\fi\fi%
+}%
+\def\pgfPT@gr@Roman#1{\edef\@pgfPT@Z@atual{#1}\relax%
+\ifpgfPT@grRoman@CAS% CAS
+\ifcase\@pgfPT@Z@atual\relax\or I\hspace{.1ex}A\or II\hspace{.1ex}A\or III\hspace{.1ex}B\or IV\hspace{.1ex}B\or V\hspace{.1ex}B\or VI\hspace{.1ex}B\or VII\hspace{.1ex}B\or%
+\tikz{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}\or VIII\hspace{.1ex}B\or\tikz[xscale=-1]{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}%
+\or I\hspace{.1ex}B\or II\hspace{.1ex}B\or III\hspace{.1ex}A\or IV\hspace{.1ex}A\or V\hspace{.1ex}A\or VI\hspace{.1ex}A\or VII\hspace{.1ex}A\or VIII\hspace{.1ex}A\fi%
+\else% old IUPAC
+\ifcase\@pgfPT@Z@atual\relax\or I\hspace{.1ex}A\or II\hspace{.1ex}A\or III\hspace{.1ex}A\or IV\hspace{.1ex}A\or V\hspace{.1ex}A\or VI\hspace{.1ex}A\or VII\hspace{.1ex}A\or
+\tikz{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}\or VIII\hspace{.1ex}A\or\tikz[xscale=-1]{\path (0,0);\draw[line width=.2ex] (.1*\pgfPTcellwd,-.55ex) -- (.1*\pgfPTcellwd,0) -- (1.2*\pgfPTcellwd,0);}%
+\or I\hspace{.1ex}B\or II\hspace{.1ex}B\or III\hspace{.1ex}B\or IV\hspace{.1ex}B\or V\hspace{.1ex}B\or VI\hspace{.1ex}B\or VII\hspace{.1ex}B\or0\fi%
+\fi%
+}%
% end !! PGF keys: labels of periods and groups ------------------------------------------------
%
% defining PGF keys: the cells of the periodic table to be drawn -------------------------------
@@ -347,7 +376,7 @@ name color/.store in=\pgfPTnamecolor,%
name color/.default=black,%
name font/.get=\pgfPTnamefont,%
name font/.store in=\pgfPTnamefont,%
-name font/.default=\fontseries{l}\selectfont\tiny,%
+name font/.default=\tiny,% \fontseries{l}\selectfont (removed @ v2.1.2)
name align/.get=\pgfPTnamealign,% new v1.0.0
name align/.store in=\pgfPTnamealign,% left|center|right
name align/.default=center%
@@ -444,16 +473,18 @@ eaff font/.default=\tiny\bfseries%
% setting keys with default values -----------------------------------------------------------------
\pgfkeys{/pgfPerTable/.cd,eaff color,eaff font}%
% end !!
+\newif\ifpgfPTORoman% new in v2.1.1
\pgfkeys{/pgfPerTable/.cd,%
O color/.get=\pgfPTOcolor,%
O color/.store in=\pgfPTOcolor,%
O color/.default=black,%
O font/.get=\pgfPTOfont,%
O font/.store in=\pgfPTOfont,%
-O font/.default=\tiny\bfseries%
+O font/.default=\tiny\bfseries,%
+O Roman/.is if=pgfPTORoman% new in v2.1.1
}%
% setting keys with default values -----------------------------------------------------------------
-\pgfkeys{/pgfPerTable/.cd,O color,O font}%
+\pgfkeys{/pgfPerTable/.cd,O color,O font,O Roman=false}%
% end !!
\pgfkeys{/pgfPerTable/.cd,%
Tmelt color/.get=\pgfPTTmeltcolor,%
diff --git a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.names.tex b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.names.tex
index 2c321dcd349..d4135f61b98 100644
--- a/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.names.tex
+++ b/Master/texmf-dist/tex/latex/pgf-periodictable/pgfPT.names.tex
@@ -27,7 +27,7 @@
\def\pgfPT@nomes@iii{l\'{i}tio/pt,lithium/en,lithium/fr,Lithium/de,litio/it,litio/es,l\'{i}tio/br,\pgfPT@user@CSname@Li/user}%
\def\pgfPT@nomes@iv{ber\'{i}lio/pt,beryllium/en,b\'{e}ryllium/fr,Beryllium/de,berillio/it,berilio/es,ber\'{i}lio/br,\pgfPT@user@CSname@Be/user}%
\def\pgfPT@nomes@v{boro/pt,boron/en,bore/fr,Bor/de,boro/it,boro/es,boro/br,\pgfPT@user@CSname@B/user}%
-\def\pgfPT@nomes@vi{carbono/pt,carbon/en,carbone/fr,Kohlenstoff/de,carbonio/it,carb\'{o}n/es,carbono/br,\pgfPT@user@CSname@C/user}%
+\def\pgfPT@nomes@vi{carbono/pt,carbon/en,carbone/fr,Kohlenstoff/de,carbonio/it,carbono/es,carbono/br,\pgfPT@user@CSname@C/user}%
\def\pgfPT@nomes@vii{azoto/pt,nitrogen/en,azote/fr,Stickstoff/de,azoto/it,nitr\'{o}geno/es,nitrog\^{e}nio/br,\pgfPT@user@CSname@N/user}%
\def\pgfPT@nomes@viii{oxig\'{e}nio/pt,oxygen/en,oxyg\`{e}ne/fr,Sauerstoff/de,ossigeno/it,ox\'{i}geno/es,oxig\^{e}nio/br,\pgfPT@user@CSname@O/user}%
\def\pgfPT@nomes@ix{fl\'{u}or/pt,fluorine/en,fluor/fr,Fluor/de,fluoro/it,fl\'{u}or/es,fl\'{u}or/br,\pgfPT@user@CSname@F/user}%
@@ -47,7 +47,7 @@
\def\pgfPT@nomes@xxiii{van\'{a}dio/pt,vanadium/en,vanadium/fr,Vanadium/de,vanadio/it,vanadio/es,van\'{a}dio/br,\pgfPT@user@CSname@V/user}%
\def\pgfPT@nomes@xxiv{cr\'{o}mio/pt,chromium/en,chrome/fr,Chrom/de,cromo/it,cromo/es,cr\^{o}mio/br,\pgfPT@user@CSname@Cr/user}%
\def\pgfPT@nomes@xxv{mangan\'{e}sio/pt,manganese/en,mangan\`{e}se/fr,Mangan/de,manganese/it,manganeso/es,mangan\^{e}s/br,\pgfPT@user@CSname@Mn/user}%
-\def\pgfPT@nomes@xxvi{ferro/pt,iron/en,fer/fr,Eisen/de,ferro/it,planchar/es,ferro/br,\pgfPT@user@CSname@Fe/user}%
+\def\pgfPT@nomes@xxvi{ferro/pt,iron/en,fer/fr,Eisen/de,ferro/it,hierro/es,ferro/br,\pgfPT@user@CSname@Fe/user}%
\def\pgfPT@nomes@xxvii{cobalto/pt,cobalt/en,cobalt/fr,Kobalt/de,cobalto/it,cobalto/es,cobalto/br,\pgfPT@user@CSname@Co/user}%
\def\pgfPT@nomes@xxviii{n\'{i}quel/pt,nickel/en,nickel/fr,Nickel/de,nichel/it,n\'{i}quel/es,n\'{i}quel/br,\pgfPT@user@CSname@Ni/user}%
\def\pgfPT@nomes@xxix{cobre/pt,copper/en,cuivre/fr,Kupfer/de,rame/it,cobre/es,cobre/br,\pgfPT@user@CSname@Cu/user}%
@@ -82,7 +82,7 @@
\def\pgfPT@nomes@lviii{c\'{e}rio/pt,cerium/en,c\'{e}rium/fr,Cer/de,cerio/it,cerio/es,c\'{e}rio/br,\pgfPT@user@CSname@Ce/user}%
\def\pgfPT@nomes@lix{praseod\'{i}mio/pt,praseodymium/en,pras\'{e}odyme/fr,Praseodym/de,praseodimio/it,praseodimio/es,praseod\'{i}mio/br,\pgfPT@user@CSname@Pr/user}%
\def\pgfPT@nomes@lx{neod\'{i}mio/pt,neodymium/en,n\'{e}odyme/fr,Neodym/de,neodimio/it,neodimio/es,neod\'{i}mio/br,\pgfPT@user@CSname@Nd/user}%
-\def\pgfPT@nomes@lxi{prom\'{e}cio/pt,promethium/en,prom\'{e}thium/fr,Promethium/de,prometeo/it,prometeo/es,prom\'{e}cio/br,\pgfPT@user@CSname@Pm/user}%
+\def\pgfPT@nomes@lxi{prom\'{e}cio/pt,promethium/en,prom\'{e}thium/fr,Promethium/de,prometeo/it,prometio/es,prom\'{e}cio/br,\pgfPT@user@CSname@Pm/user}%
\def\pgfPT@nomes@lxii{sam\'{a}rio/pt,samarium/en,samarium/fr,Samarium/de,samario/it,samario/es,sam\'{a}rio/br,\pgfPT@user@CSname@Sm/user}%
\def\pgfPT@nomes@lxiii{eur\'{o}pio/pt,europium/en,europium/fr,Europium/de,europium/it,europio/es,eur\'{o}pio/br,\pgfPT@user@CSname@Eu/user}%
\def\pgfPT@nomes@lxiv{gadol\'{i}nio/pt,gadolinium/en,gadolinium/fr,Gadolinium/de,gadolinio/it,gadolinio/es,gadol\'{i}nio/br,\pgfPT@user@CSname@Gd/user}%
@@ -124,20 +124,20 @@
\def\pgfPT@nomes@c{f\'{e}rmio/pt,fermium/en,fermium/fr,Rermium/de,fermium/it,fermio/es,f\'{e}rmio/br,\pgfPT@user@CSname@Fm/user}%
\def\pgfPT@nomes@ci{mendel\'{e}vio/pt,mendelevium/en,mendelevium/fr,Mendelevium/de,mendelevio/it,mendelevio/es,mendel\'{e}vio/br,\pgfPT@user@CSname@Md/user}%
\def\pgfPT@nomes@cii{nob\'{e}lio/pt,nobelium/en,nobelium/fr,Nobelium/de,nobelium/it,nobelio/es,nob\'{e}lio/br,\pgfPT@user@CSname@No/user}%
-\def\pgfPT@nomes@ciii{laur\^{e}ncio/pt,lawrencium/en,lawrencium/fr,Lawrencium/de,laurenzio/it,lawrencium/es,laur\^{e}ncio/br,\pgfPT@user@CSname@Lr/user}%
+\def\pgfPT@nomes@ciii{laur\^{e}ncio/pt,lawrencium/en,lawrencium/fr,Lawrencium/de,laurenzio/it,lawrencio/es,laur\^{e}ncio/br,\pgfPT@user@CSname@Lr/user}%
\def\pgfPT@nomes@civ{rutherf\'{o}rdio/pt,rutherfordium/en,rutherfordium/fr,Rutherfordium/de,rutherfordium/it,rutherfordio/es,rutherf\'{o}rdio/br,\pgfPT@user@CSname@Rf/user}%
-\def\pgfPT@nomes@cv{d\'{u}bnio/pt,dubnium/en,dubnium/fr,Dubnium/de,dubnio/it,dubnium/es,d\'{u}bnio/br,\pgfPT@user@CSname@Db/user}%
+\def\pgfPT@nomes@cv{d\'{u}bnio/pt,dubnium/en,dubnium/fr,Dubnium/de,dubnio/it,dubnio/es,d\'{u}bnio/br,\pgfPT@user@CSname@Db/user}%
\def\pgfPT@nomes@cvi{seab\'{o}rgio/pt,seaborgium/en,seaborgium/fr,Seaborgium/de,seaborgio/it,seaborgio/es,seab\'{o}rgio/br,\pgfPT@user@CSname@Sg/user}%
-\def\pgfPT@nomes@cvii{b\'{o}rio/pt,bohrium/en,bohrium/fr,Bohrium/de,bohrio/it,bohrium/es,b\'{o}hrio/br,\pgfPT@user@CSname@Bh/user}%
-\def\pgfPT@nomes@cviii{h\'{a}ssio/pt,hassium/en,hassium/fr,Hassium/de,hassio/it,hassium/es,h\'{a}ssio/br,\pgfPT@user@CSname@Hs/user}%
+\def\pgfPT@nomes@cvii{b\'{o}rio/pt,bohrium/en,bohrium/fr,Bohrium/de,bohrio/it,bohrio/es,b\'{o}hrio/br,\pgfPT@user@CSname@Bh/user}%
+\def\pgfPT@nomes@cviii{h\'{a}ssio/pt,hassium/en,hassium/fr,Hassium/de,hassio/it,hasio/es,h\'{a}ssio/br,\pgfPT@user@CSname@Hs/user}%
\def\pgfPT@nomes@cix{meitn\'{e}rio/pt,meitnerium/en,meitnerium/fr,Meitnerium/de,meitnerio/it,meitnerio/es,meitn\'{e}rio/br,\pgfPT@user@CSname@Mt/user}%
-\def\pgfPT@nomes@cx{darmst\'{a}dio/pt,darmstadtium/en,darmstadtium/fr,Darmstadtium/de,darmstadtium/it,darmstadtium/es,darmst\'{a}dtio/br,\pgfPT@user@CSname@Ds/user}%
+\def\pgfPT@nomes@cx{darmst\'{a}dio/pt,darmstadtium/en,darmstadtium/fr,Darmstadtium/de,darmstadtium/it,darmstatio/es,darmst\'{a}dtio/br,\pgfPT@user@CSname@Ds/user}%
\def\pgfPT@nomes@cxi{roentg\'{e}nio/pt,roentgenium/en,roentgenium/fr,R\"{o}ntgenium/de,roentgenio/it,roentgenio/es,roentg\^{e}nio/br,\pgfPT@user@CSname@Rg/user}%
\def\pgfPT@nomes@cxii{copern\'{i}cio/pt,copernicium/en,copernicium/fr,Copernicium/de,copernicium/it,copernicio/es,copern\'{i}cio/br,\pgfPT@user@CSname@Cn/user}%
\def\pgfPT@nomes@cxiii{nip\'{o}nio/pt,nihonium/en,nihonium/fr,Nihonium/de,nihonium/it,nihonio/es,nip\^{o}nio/br,\pgfPT@user@CSname@Nh/user}%
\def\pgfPT@nomes@cxiv{fler\'{o}vio/pt,flerovium/en,flerovium/fr,Flerovium/de,flerovio/it,flerovio/es,fler\'{o}vio/br,\pgfPT@user@CSname@Fl/user}%
\def\pgfPT@nomes@cxv{mosc\'{o}vio/pt,moscovium/en,moscovium/fr,Moscovium/de,moscovium/it,moscovio/es,mosc\'{o}vio/br,\pgfPT@user@CSname@Mc/user}%
-\def\pgfPT@nomes@cxvi{liverm\'{o}rio/pt,livermorium/en,livermorium/fr,Livermorium/de,livermorio/it,livermorium/es,liverm\'{o}rio/br,\pgfPT@user@CSname@Lv/user}%
+\def\pgfPT@nomes@cxvi{liverm\'{o}rio/pt,livermorium/en,livermorium/fr,Livermorium/de,livermorio/it,livermorio/es,liverm\'{o}rio/br,\pgfPT@user@CSname@Lv/user}%
\def\pgfPT@nomes@cxvii{tenesso/pt,tennessine/en,tennessine/fr,Tenness/de,tennessine/it,teneso/es,tenesso/br,\pgfPT@user@CSname@Ts/user}%
\def\pgfPT@nomes@cxviii{ogan\'{e}sson/pt,oganesson/en,oganesson/fr,Oganesson/de,oganesson/it,oganes\'{o}n/es,oganess\^{o}nio/br,\pgfPT@user@CSname@Og/user}%
\endinput%
diff --git a/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.data.LSE.tex b/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.data.LSE.tex
index 53303b35f6c..9bb4004bfb6 100644
--- a/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.data.LSE.tex
+++ b/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.data.LSE.tex
@@ -31,12 +31,12 @@
% (see Es, Bk...)
%
\protected\def\pgfspectra@elt@data#1{\relax\ignorespaces\global\pgfspectra@datanotfoundtrue\relax%
-\pgfspectra@elt@search{#1}{H}{[92.6226 15 0],[93.0748 20 0],[93.7803 30 0],[94.9743 50 0],[97.2537 100 0],[102.5722 300 0],[121.5668 1000 0],[121.5674 500 0],[383.5384 5 0],[388.9049 6 0],[397.0072 8 0],[410.174 15 0],[434.047 30 0],[486.133 80 0],[656.272 120 0],[656.2852 180 0],[954.597 5 0],[1004.94 7 0],[1093.81 12 0],[1281.81 20 0],[1875.1 40 0],[2165.5301 5 0],[2625.15 8 0],[4051.1602 15 0],[4652.5102 4 0],[7457.8 6 0],[12368.5 3 0]}{ALLx1000x1000x0x0x0x0x0}{UVx1000x1000x0x0x0x0x0}{VISx180x180x0x0x0x0x0}{IVx40x40x0x0x0x0x0}%
-\pgfspectra@elt@search{#1}{He}{[23.1454 15 1],[23.2584 20 1],[23.4347 30 1],[23.7331 50 1],[24.3027 100 1],[25.6317 300 1],[30.378 1000 1],[30.3786 500 1],[32.0293 10 0],[50.55 2 0],[50.5684 3 0],[50.5912 4 0],[50.62 5 0],[50.657 7 0],[50.7058 10 0],[50.7718 15 0],[50.8643 20 0],[50.9998 25 0],[51.2098 35 0],[51.5616 50 0],[52.2213 100 0],[53.703 400 0],[58.4334 1000 0],[59.1412 50 0],[95.87 5 1],[97.211 6 1],[99.236 8 1],[102.527 15 1],[108.494 30 1],[121.509 35 1],[121.517 50 1],[164.034 120 1],[164.047 180 1],[238.54 7 1],[251.12 9 1],[257.76 50 0],[272.319 1 0],[273.33 12 1],[276.38 2 0],[281.82 10 0],[282.908 4 0],[294.511 10 0],[301.37 40 0],[318.774 20 0],[320.296 3 1],[320.31 15 1],[335.455 1 0],[344.759 2 0],[358.727 1 0],[361.364 3 0],[363.423 2 0],[370.5 3 0],[373.286 1 0],[381.9607 10 0],[381.976 1 0],[388.865 500 0],[396.4729 20 0],[400.927 1 0],[402.6191 50 0],[402.636 5 0],[412.082 12 0],[412.099 2 0],[414.376 3 0],[438.7929 10 0],[443.755 3 0],[447.1479 200 0],[447.168 25 0],[468.54 6 1],[468.57 30 1],[471.3146 30 0],[471.338 4 0],[492.1931 20 0],[501.5678 100 0],[504.774 10 0],[541.152 5 1],[587.562 500 0],[587.597 100 0],[656.01 8 1],[667.815 100 0],[686.748 3 0],[706.519 200 0],[706.571 30 0],[728.135 50 0],[781.615 1 0],[836.169 2 0],[906.327 2 0],[921.034 2 0],[946.361 10 0],[951.66 4 0],[952.617 3 0],[952.927 1 0],[960.342 1 0],[970.26 3 0],[1002.773 6 0],[1003.116 2 0],[1012.36 15 1],[1013.85 1 0],[1031.123 10 0],[1031.154 2 0],[1066.765 3 0],[1082.909 300 0],[1083.025 1000 0],[1083.034 2000 0],[1091.305 9 0],[1091.71 3 0],[1162.64 4 1],[1196.912 30 0],[1252.752 20 0],[1278.499 50 0],[1279.057 20 0],[1284.596 7 0],[1296.845 10 0],[1298.489 2 0],[1508.364 12 0],[1700.2471 200 0],[1855.5551 1 0],[1863.6801 6 1],[1868.534 500 0],[1869.723 200 0],[1908.9381 100 0],[1954.308 20 0],[2058.1301 1000 0],[2112.007 80 0],[2112.143 10 0],[2113.2029 20 0],[3090.85 3 1],[4047.8898 4 0]}{ALLx2000x2000x1000x0x0x0x0}{UVx1000x1000x1000x0x0x0x0}{VISx500x500x30x0x0x0x0}{IVx2000x2000x15x0x0x0x0}%
+\pgfspectra@elt@search{#1}{H}{[92.6226 15 0],[93.0748 20 0],[93.7803 30 0],[94.9743 50 0],[97.2537 100 0],[102.5722 300 0],[121.5668 1000 0],[121.5674 500 0],[383.5384 5 0],[388.9049 6 0],[397.0072 8 0],[410.174 15 0],[434.047 30 0],[486.133 80 0],[656.272 120 0],[656.2852 180 0],[954.597 5 0],[1004.94 7 0],[1093.81 12 0],[1281.81 20 0],[1875.1 40 0],[2165.5301 5 0],[2625.15 8 0]}{ALLx1000x1000x0x0x0x0x0}{UVx1000x1000x0x0x0x0x0}{VISx180x180x0x0x0x0x0}{IVx40x40x0x0x0x0x0}%,[4051.1602 15 0],[4652.5102 4 0],[7457.8 6 0],[12368.5 3 0]
+\pgfspectra@elt@search{#1}{He}{[23.1454 15 1],[23.2584 20 1],[23.4347 30 1],[23.7331 50 1],[24.3027 100 1],[25.6317 300 1],[30.378 1000 1],[30.3786 500 1],[32.0293 10 0],[50.55 2 0],[50.5684 3 0],[50.5912 4 0],[50.62 5 0],[50.657 7 0],[50.7058 10 0],[50.7718 15 0],[50.8643 20 0],[50.9998 25 0],[51.2098 35 0],[51.5616 50 0],[52.2213 100 0],[53.703 400 0],[58.4334 1000 0],[59.1412 50 0],[95.87 5 1],[97.211 6 1],[99.236 8 1],[102.527 15 1],[108.494 30 1],[121.509 35 1],[121.517 50 1],[164.034 120 1],[164.047 180 1],[238.54 7 1],[251.12 9 1],[257.76 50 0],[272.319 1 0],[273.33 12 1],[276.38 2 0],[281.82 10 0],[282.908 4 0],[294.511 10 0],[301.37 40 0],[318.774 20 0],[320.296 3 1],[320.31 15 1],[335.455 1 0],[344.759 2 0],[358.727 1 0],[361.364 3 0],[363.423 2 0],[370.5 3 0],[373.286 1 0],[381.9607 10 0],[381.976 1 0],[388.865 500 0],[396.4729 20 0],[400.927 1 0],[402.6191 50 0],[402.636 5 0],[412.082 12 0],[412.099 2 0],[414.376 3 0],[438.7929 10 0],[443.755 3 0],[447.1479 200 0],[447.168 25 0],[468.54 6 1],[468.57 30 1],[471.3146 30 0],[471.338 4 0],[492.1931 20 0],[501.5678 100 0],[504.774 10 0],[541.152 5 1],[587.562 500 0],[587.597 100 0],[656.01 8 1],[667.815 100 0],[686.748 3 0],[706.519 200 0],[706.571 30 0],[728.135 50 0],[781.615 1 0],[836.169 2 0],[906.327 2 0],[921.034 2 0],[946.361 10 0],[951.66 4 0],[952.617 3 0],[952.927 1 0],[960.342 1 0],[970.26 3 0],[1002.773 6 0],[1003.116 2 0],[1012.36 15 1],[1013.85 1 0],[1031.123 10 0],[1031.154 2 0],[1066.765 3 0],[1082.909 300 0],[1083.025 1000 0],[1083.034 2000 0],[1091.305 9 0],[1091.71 3 0],[1162.64 4 1],[1196.912 30 0],[1252.752 20 0],[1278.499 50 0],[1279.057 20 0],[1284.596 7 0],[1296.845 10 0],[1298.489 2 0],[1508.364 12 0],[1700.2471 200 0],[1855.5551 1 0],[1863.6801 6 1],[1868.534 500 0],[1869.723 200 0],[1908.9381 100 0],[1954.308 20 0],[2058.1301 1000 0],[2112.007 80 0],[2112.143 10 0],[2113.2029 20 0],[3090.85 3 1]}{ALLx2000x2000x1000x0x0x0x0}{UVx1000x1000x1000x0x0x0x0}{VISx500x500x30x0x0x0x0}{IVx2000x2000x15x0x0x0x0}%,[4047.8898 4 0]
\pgfspectra@elt@search{#1}{Li}{[149.293 3 1],[149.297 5 1],[149.304 1 1],[165.308 3 1],[165.313 5 1],[165.321 1 1],[233.688 3 1],[233.691 5 1],[233.7 2 1],[239.439 1 0],[242.543 3 0],[247.506 10 0],[255.17 24 1],[256.231 15 0],[265.729 2 1],[265.73 3 1],[272.824 0 1],[272.829 5 1],[272.832 2 1],[273.047 3 1],[273.055 1 1],[274.12 5 0],[293.402 2 1],[293.407 2 1],[293.412 5 1],[293.425 1 1],[302.912 3 1],[302.914 3 1],[315.531 3 1],[315.533 4 1],[319.626 1 1],[319.633 9 1],[319.636 4 1],[319.933 5 1],[319.943 2 1],[323.266 17 0],[371.4 1 1],[371.416 5 1],[371.427 6 1],[371.429 8 1],[371.44 7 1],[371.441 10 1],[371.451 1 1],[371.458 0 1],[371.87 3 0],[379.472 6 0],[391.53 20 0],[391.535 20 0],[398.548 10 0],[398.554 10 0],[413.256 40 0],[413.262 40 0],[427.307 20 0],[427.313 20 0],[432.542 5 1],[432.547 5 1],[432.554 1 1],[460.283 13 0],[460.289 13 0],[467.151 0 1],[467.165 6 1],[467.17 2 1],[467.806 3 1],[467.829 1 1],[488.132 4 1],[488.139 4 1],[488.149 1 1],[497.166 8 0],[497.175 8 0],[548.355 600 1],[548.565 600 1],[610.354 320 0],[610.365 320 0],[670.776 3600 0],[670.791 3600 0],[812.623 48 0],[812.645 48 0]}{ALLx3600x3600x600x0x0x0x0}{UVx24x17x24x0x0x0x0}{VISx3600x3600x600x0x0x0x0}{IVx48x48x0x0x0x0x0}%
-\pgfspectra@elt@search{#1}{Be}{[7.61 1 2],[7.648 2 2],[7.853 3 2],[7.866 4 2],[7.892 1 2],[8.189 5 2],[8.238 10 2],[8.32 20 2],[8.476 30 2],[8.831 50 2],[10.025 100 2],[50.999 3 2],[54.931 2 2],[58.208 6 2],[66.132 4 2],[67.559 8 2],[72.559 4 2],[72.571 5 1],[74.358 5 1],[74.623 7 2],[76.775 2 2],[77.537 8 1],[84.206 20 1],[92.525 2 1],[94.356 10 1],[97.327 10 1],[102.693 8 1],[103.632 5 1],[104.823 15 1],[111.469 1 2],[114.303 20 1],[119.719 60 1],[121.312 2 2],[121.432 1 2],[136.225 2 2],[140.152 1 2],[142.126 10 2],[142.286 5 2],[143.517 1 2],[144.077 2 2],[151.23 20 1],[151.243 60 1],[166.149 100 0],[175.469 2 2],[177.612 15 1],[177.634 20 1],[191.703 3 2],[192.967 5 0],[194.368 10 0],[195.497 60 2],[196.459 50 0],[198.513 5 0],[199.801 60 0],[205.59 50 0],[205.601 100 0],[207.694 75 2],[208.038 60 2],[211.856 25 2],[212.227 15 2],[212.557 10 0],[212.568 20 0],[212.72 15 2],[213.725 5 2],[214.5 25 0],[217.499 55 0],[217.51 55 0],[219.157 5 2],[234.861 950 0],[235.066 20 0],[235.071 60 0],[235.083 200 0],[241.334 2 1],[241.346 16 1],[245.384 20 1],[249.454 35 0],[249.458 35 0],[249.473 100 0],[250.743 16 1],[261.799 5 1],[261.813 20 1],[265.045 100 0],[265.055 60 0],[265.062 200 0],[265.069 60 0],[265.076 100 0],[269.746 5 1],[269.758 20 1],[272.888 20 1],[273.805 30 0],[289.813 20 0],[289.819 10 0],[289.825 20 0],[298.606 30 0],[298.642 10 0],[301.933 60 0],[301.949 30 0],[301.953 30 0],[301.96 20 0],[304.652 10 1],[304.669 30 1],[311.081 10 0],[311.092 10 0],[311.099 20 0],[313.042 480 1],[313.107 320 1],[319.381 20 0],[319.71 20 1],[319.715 30 1],[320.86 20 0],[322.963 60 0],[323.352 2 1],[324.162 10 1],[324.183 30 1],[326.902 15 0],[327.458 100 1],[327.467 30 1],[328.291 30 0],[332.101 30 0],[332.109 30 0],[332.134 220 0],[334.543 20 0],[336.763 60 0],[345.137 5 0],[345.518 300 0],[347.656 20 0],[351.554 300 0],[355.5 10 0],[372.036 100 2],[373.63 100 0],[381.345 700 0],[386.513 40 0],[386.542 80 0],[386.551 1 0],[386.572 6 0],[386.603 100 0],[424.914 90 2],[425.305 100 0],[425.376 60 0],[436.066 300 1],[436.099 500 1],[440.794 400 0],[448.552 2 2],[448.73 100 2],[449.509 1 2],[449.78 140 2],[457.266 12 0],[467.333 700 1],[467.342 1000 1],[470.937 6 0],[482.816 200 1],[484.916 40 0],[485.822 2 1],[508.775 80 0],[521.812 8 1],[521.833 20 1],[525.586 3 1],[527.028 64 1],[527.081 500 1],[540.304 20 1],[541.021 20 1],[614.201 140 2],[622.911 10 0],[627.943 16 1],[627.973 30 1],[647.354 30 0],[654.789 60 1],[655.836 60 1],[656.452 30 0],[663.644 2 1],[675.672 1 1],[675.713 2 1],[678.656 30 0],[688.422 1 0],[688.444 6 0],[698.275 100 0],[715.44 6 0],[715.465 40 0],[720.913 100 0],[740.12 3 1],[740.143 2 1],[755.19 10 0],[761.868 10 0],[761.888 20 0],[809.006 60 0],[815.899 5 0],[815.924 10 0],[825.407 4 0],[828.707 10 0],[854.736 30 0],[854.767 60 0],[880.137 300 0],[888.218 6 0],[919.045 40 0],[924.392 20 0],[934.389 1 1],[939.274 40 0],[947.643 2 1],[947.703 16 1],[984.732 20 0],[989.563 10 0],[989.596 20 0],[993.978 80 0],[1009.552 16 1],[1009.573 20 1],[1011.992 60 1],[1033.103 80 0],[1106.646 30 0],[1117.373 1 1],[1149.639 120 0],[1162.516 2 1],[1166.025 2 1],[1209.536 100 1],[1209.818 30 1],[1464.392 100 0],[1464.475 60 0],[1615.772 200 0],[1785.5381 80 0],[1785.6631 120 0],[1814.3539 100 0],[3177.5051 160 0],[3177.8699 200 0]}{ALLx1000x950x1000x140x0x0x0}{UVx950x950x480x100x0x0x0}{VISx1000x700x1000x140x0x0x0}{IVx300x300x100x0x0x0x0}%
-\pgfspectra@elt@search{#1}{B}{[4.859 30 4],[5.268 10 3],[6.031 30 3],[34.4 160 3],[38.5 450 3],[41.18 40 2],[41.87 285 3],[51.077 20 2],[51.085 40 2],[51.824 150 2],[51.827 75 2],[67.7 110 2],[67.714 160 2],[69.395 70 1],[73.136 40 1],[73.144 40 1],[75.848 40 2],[75.867 70 2],[88.254 110 1],[88.268 110 1],[98.467 40 1],[108.188 110 1],[108.207 110 1],[111.22 70 3],[116.89 450 3],[117.09 70 3],[123.016 110 1],[136.246 220 1],[160.046 70 0],[160.073 120 0],[162.358 160 1],[162.377 110 1],[162.402 220 1],[162.416 70 1],[162.434 160 1],[166.304 100 0],[166.687 150 0],[166.729 200 0],[181.786 150 0],[181.837 200 0],[182.591 300 0],[182.641 300 0],[184.281 110 1],[195.383 20 2],[206.578 550 2],[206.638 250 0],[206.665 250 0],[206.693 100 0],[206.719 300 0],[206.723 450 2],[207.709 160 2],[208.891 500 0],[208.957 500 0],[222.03 70 1],[223.409 40 2],[223.459 70 2],[232.303 40 1],[232.867 40 1],[239.32 40 1],[239.505 220 1],[245.969 40 1],[245.99 40 1],[249.677 1000 0],[249.773 1000 0],[252.47 70 3],[253.03 160 3],[282.168 450 3],[282.457 70 3],[282.585 285 3],[291.808 160 1],[303.226 110 1],[317.933 70 1],[332.318 110 1],[332.36 110 1],[345.129 450 1],[412.193 285 1],[419.479 110 1],[424.298 40 2],[424.361 70 2],[447.21 110 1],[447.285 110 1],[448.705 220 2],[449.773 360 2],[478.421 70 1],[494.038 110 1],[608.044 110 1],[628.547 70 1],[703.02 70 1],[703.19 40 1],[783.525 110 2],[784.141 70 2],[866.722 20 0],[866.857 70 0],[1166.004 800 0],[1166.247 570 0],[1562.908 125 0],[1624.038 200 0],[1624.467 250 0],[1899.433 235 0]}{ALLx1000x1000x450x550x450x30x0}{UVx1000x1000x450x550x450x30x0}{VISx360x0x285x360x0x0x0}{IVx800x800x0x110x0x0x0}%
-\pgfspectra@elt@search{#1}{C}{[3.4973 110 4],[4.0268 450 4],[22.719 110 4],[24.491 250 3],[24.866 160 4],[24.874 160 4],[28.914 200 3],[28.923 250 3],[31.242 570 3],[31.246 500 3],[37.169 250 2],[37.175 250 2],[37.178 150 2],[38.403 650 3],[38.418 700 3],[38.6203 500 2],[41.952 400 3],[41.971 500 3],[45.0734 200 2],[45.946 400 2],[45.952 500 2],[45.963 570 2],[51.1522 250 2],[53.5288 250 2],[53.808 300 2],[53.8149 350 2],[53.8312 400 2],[57.4281 350 2],[59.5022 9 1],[68.7053 30 1],[68.7345 50 1],[85.8092 10 1],[85.8559 20 1],[90.3624 30 1],[90.3962 60 1],[90.4142 150 1],[90.448 30 1],[97.703 800 2],[100.986 9 1],[101.008 10 1],[101.037 10 1],[103.6337 80 1],[103.7018 150 1],[115.791 150 0],[115.8019 150 0],[115.8035 150 0],[117.493 370 2],[117.526 350 2],[117.559 330 2],[117.571 500 2],[117.599 350 2],[117.637 370 2],[118.8992 150 0],[118.9447 150 0],[118.9631 200 0],[119.3009 300 0],[119.3031 300 0],[119.324 300 0],[119.3264 300 0],[119.3393 100 0],[119.3649 150 0],[119.3679 150 0],[119.4064 100 0],[119.4488 100 0],[126.1552 100 0],[127.7245 250 0],[127.7282 250 0],[127.7513 300 0],[127.755 300 0],[128.0333 200 0],[131.1363 100 0],[132.3951 9 1],[132.9578 120 0],[132.96 120 0],[133.4532 150 1],[133.5708 300 1],[135.4288 100 0],[135.584 150 0],[136.4164 120 0],[145.9032 100 0],[146.3336 200 0],[146.7402 120 0],[148.1764 150 0],[154.8202 1000 3],[155.0774 900 3],[156.031 150 0],[156.0683 400 0],[156.0708 400 0],[156.1341 100 0],[156.1438 400 0],[165.6266 150 0],[165.6928 120 0],[165.7008 300 0],[165.738 120 0],[165.7907 120 0],[165.8122 150 0],[175.1823 500 0],[193.0905 1000 0],[216.294 250 2],[227.091 40 4],[227.725 5 4],[227.792 20 4],[229.687 800 2],[247.856 800 0],[250.912 250 1],[251.206 350 1],[252.441 200 3],[252.998 300 3],[257.483 250 1],[269.775 150 2],[272.485 110 2],[272.53 150 2],[272.59 150 2],[274.128 350 1],[274.649 250 1],[283.671 1000 1],[283.76 800 1],[298.211 200 2],[299.262 800 1],[387.619 350 1],[387.641 350 1],[387.666 350 1],[391.898 570 1],[392.069 800 1],[405.606 150 2],[406.794 200 2],[406.891 250 2],[407.026 250 2],[407.452 250 1],[407.585 350 1],[416.286 150 2],[418.69 250 2],[426.7 800 1],[426.726 1000 1],[432.556 200 2],[464.742 600 2],[465.025 520 2],[465.147 375 2],[465.83 200 3],[466.586 200 2],[477.175 200 0],[493.205 200 0],[494.388 5 4],[494.456 5 4],[505.217 200 0],[513.294 350 1],[513.328 350 1],[514.349 350 1],[514.516 570 1],[515.109 400 1],[538.034 300 0],[564.807 250 1],[566.247 350 1],[569.592 450 2],[580.133 250 3],[581.198 200 3],[582.642 150 2],[588.977 570 1],[589.159 350 1],[600.113 200 0],[600.603 250 0],[600.718 110 0],[601.068 150 0],[601.322 300 0],[601.484 250 0],[657.805 800 1],[658.288 570 1],[658.761 200 0],[674.438 150 2],[678.39 250 1],[703.725 150 2],[711.318 250 0],[711.519 250 0],[711.563 250 1],[711.699 200 0],[711.99 350 1],[723.132 800 1],[723.642 1000 1],[761.265 150 2],[772.62 90 3],[786.089 200 0],[805.862 200 0],[819.648 300 2],[833.299 150 2],[833.515 520 0],[850.032 300 2],[906.143 250 0],[906.247 200 0],[907.828 200 0],[908.851 250 0],[909.483 450 0],[911.18 300 0],[940.573 800 0],[960.303 150 0],[962.08 250 0],[965.844 300 0],[1068.308 200 0],[1069.125 300 0],[1161.929 12 0],[1162.883 23 0],[1165.885 13 0],[1165.968 47 0],[1166.963 24 0],[1174.822 85 0],[1175.332 142 0],[1175.476 114 0],[1177.754 11 0],[1189.291 17 0],[1189.575 30 0],[1261.41 26 0],[1350.227 20 0],[1439.965 38 0],[1440.325 16 0],[1442.012 61 0],[1442.903 12 0],[1444.224 13 0],[1655.966 12 0],[1689.0381 50 0],[1733.8561 10 0],[1744.86 11 0],[1813.9801 13 0],[1972.199 23 0]}{ALLx1000x1000x1000x800x1000x450x0}{UVx1000x1000x1000x800x1000x450x0}{VISx1000x300x1000x600x250x5x0}{IVx800x800x0x300x0x0x0}%
+\pgfspectra@elt@search{#1}{Be}{[10.025 100 2],[50.999 3 2],[54.931 2 2],[58.208 6 2],[66.132 4 2],[67.559 8 2],[72.559 4 2],[72.571 5 1],[74.358 5 1],[74.623 7 2],[76.775 2 2],[77.537 8 1],[84.206 20 1],[92.525 2 1],[94.356 10 1],[97.327 10 1],[102.693 8 1],[103.632 5 1],[104.823 15 1],[111.469 1 2],[114.303 20 1],[119.719 60 1],[121.312 2 2],[121.432 1 2],[136.225 2 2],[140.152 1 2],[142.126 10 2],[142.286 5 2],[143.517 1 2],[144.077 2 2],[151.23 20 1],[151.243 60 1],[166.149 100 0],[175.469 2 2],[177.612 15 1],[177.634 20 1],[191.703 3 2],[192.967 5 0],[194.368 10 0],[195.497 60 2],[196.459 50 0],[198.513 5 0],[199.801 60 0],[205.59 50 0],[205.601 100 0],[207.694 75 2],[208.038 60 2],[211.856 25 2],[212.227 15 2],[212.557 10 0],[212.568 20 0],[212.72 15 2],[213.725 5 2],[214.5 25 0],[217.499 55 0],[217.51 55 0],[219.157 5 2],[234.861 950 0],[235.066 20 0],[235.071 60 0],[235.083 200 0],[241.334 2 1],[241.346 16 1],[245.384 20 1],[249.454 35 0],[249.458 35 0],[249.473 100 0],[250.743 16 1],[261.799 5 1],[261.813 20 1],[265.045 100 0],[265.055 60 0],[265.062 200 0],[265.069 60 0],[265.076 100 0],[269.746 5 1],[269.758 20 1],[272.888 20 1],[273.805 30 0],[289.813 20 0],[289.819 10 0],[289.825 20 0],[298.606 30 0],[298.642 10 0],[301.933 60 0],[301.949 30 0],[301.953 30 0],[301.96 20 0],[304.652 10 1],[304.669 30 1],[311.081 10 0],[311.092 10 0],[311.099 20 0],[313.042 480 1],[313.107 320 1],[319.381 20 0],[319.71 20 1],[319.715 30 1],[320.86 20 0],[322.963 60 0],[323.352 2 1],[324.162 10 1],[324.183 30 1],[326.902 15 0],[327.458 100 1],[327.467 30 1],[328.291 30 0],[332.101 30 0],[332.109 30 0],[332.134 220 0],[334.543 20 0],[336.763 60 0],[345.137 5 0],[345.518 300 0],[347.656 20 0],[351.554 300 0],[355.5 10 0],[372.036 100 2],[373.63 100 0],[381.345 700 0],[386.513 40 0],[386.542 80 0],[386.551 1 0],[386.572 6 0],[386.603 100 0],[424.914 90 2],[425.305 100 0],[425.376 60 0],[436.066 300 1],[436.099 500 1],[440.794 400 0],[448.552 2 2],[448.73 100 2],[449.509 1 2],[449.78 140 2],[457.266 12 0],[467.333 700 1],[467.342 1000 1],[470.937 6 0],[482.816 200 1],[484.916 40 0],[485.822 2 1],[508.775 80 0],[521.812 8 1],[521.833 20 1],[525.586 3 1],[527.028 64 1],[527.081 500 1],[540.304 20 1],[541.021 20 1],[614.201 140 2],[622.911 10 0],[627.943 16 1],[627.973 30 1],[647.354 30 0],[654.789 60 1],[655.836 60 1],[656.452 30 0],[663.644 2 1],[675.672 1 1],[675.713 2 1],[678.656 30 0],[688.422 1 0],[688.444 6 0],[698.275 100 0],[715.44 6 0],[715.465 40 0],[720.913 100 0],[740.12 3 1],[740.143 2 1],[755.19 10 0],[761.868 10 0],[761.888 20 0],[809.006 60 0],[815.899 5 0],[815.924 10 0],[825.407 4 0],[828.707 10 0],[854.736 30 0],[854.767 60 0],[880.137 300 0],[888.218 6 0],[919.045 40 0],[924.392 20 0],[934.389 1 1],[939.274 40 0],[947.643 2 1],[947.703 16 1],[984.732 20 0],[989.563 10 0],[989.596 20 0],[993.978 80 0],[1009.552 16 1],[1009.573 20 1],[1011.992 60 1],[1033.103 80 0],[1106.646 30 0],[1117.373 1 1],[1149.639 120 0],[1162.516 2 1],[1166.025 2 1],[1209.536 100 1],[1209.818 30 1],[1464.392 100 0],[1464.475 60 0],[1615.772 200 0],[1785.5381 80 0],[1785.6631 120 0],[1814.3539 100 0],[3177.5051 160 0],[3177.8699 200 0]}{ALLx1000x950x1000x140x0x0x0}{UVx950x950x480x100x0x0x0}{VISx1000x700x1000x140x0x0x0}{IVx300x300x100x0x0x0x0}%[7.61 1 2],[7.648 2 2],[7.853 3 2],[7.866 4 2],[7.892 1 2],[8.189 5 2],[8.238 10 2],[8.32 20 2],[8.476 30 2],[8.831 50 2],
+\pgfspectra@elt@search{#1}{B}{[34.4 160 3],[38.5 450 3],[41.18 40 2],[41.87 285 3],[51.077 20 2],[51.085 40 2],[51.824 150 2],[51.827 75 2],[67.7 110 2],[67.714 160 2],[69.395 70 1],[73.136 40 1],[73.144 40 1],[75.848 40 2],[75.867 70 2],[88.254 110 1],[88.268 110 1],[98.467 40 1],[108.188 110 1],[108.207 110 1],[111.22 70 3],[116.89 450 3],[117.09 70 3],[123.016 110 1],[136.246 220 1],[160.046 70 0],[160.073 120 0],[162.358 160 1],[162.377 110 1],[162.402 220 1],[162.416 70 1],[162.434 160 1],[166.304 100 0],[166.687 150 0],[166.729 200 0],[181.786 150 0],[181.837 200 0],[182.591 300 0],[182.641 300 0],[184.281 110 1],[195.383 20 2],[206.578 550 2],[206.638 250 0],[206.665 250 0],[206.693 100 0],[206.719 300 0],[206.723 450 2],[207.709 160 2],[208.891 500 0],[208.957 500 0],[222.03 70 1],[223.409 40 2],[223.459 70 2],[232.303 40 1],[232.867 40 1],[239.32 40 1],[239.505 220 1],[245.969 40 1],[245.99 40 1],[249.677 1000 0],[249.773 1000 0],[252.47 70 3],[253.03 160 3],[282.168 450 3],[282.457 70 3],[282.585 285 3],[291.808 160 1],[303.226 110 1],[317.933 70 1],[332.318 110 1],[332.36 110 1],[345.129 450 1],[412.193 285 1],[419.479 110 1],[424.298 40 2],[424.361 70 2],[447.21 110 1],[447.285 110 1],[448.705 220 2],[449.773 360 2],[478.421 70 1],[494.038 110 1],[608.044 110 1],[628.547 70 1],[703.02 70 1],[703.19 40 1],[783.525 110 2],[784.141 70 2],[866.722 20 0],[866.857 70 0],[1166.004 800 0],[1166.247 570 0],[1562.908 125 0],[1624.038 200 0],[1624.467 250 0],[1899.433 235 0]}{ALLx1000x1000x450x550x450x30x0}{UVx1000x1000x450x550x450x30x0}{VISx360x0x285x360x0x0x0}{IVx800x800x0x110x0x0x0}%[4.859 30 4],[5.268 10 3],[6.031 30 3],
+\pgfspectra@elt@search{#1}{C}{[22.719 110 4],[24.491 250 3],[24.866 160 4],[24.874 160 4],[28.914 200 3],[28.923 250 3],[31.242 570 3],[31.246 500 3],[37.169 250 2],[37.175 250 2],[37.178 150 2],[38.403 650 3],[38.418 700 3],[38.6203 500 2],[41.952 400 3],[41.971 500 3],[45.0734 200 2],[45.946 400 2],[45.952 500 2],[45.963 570 2],[51.1522 250 2],[53.5288 250 2],[53.808 300 2],[53.8149 350 2],[53.8312 400 2],[57.4281 350 2],[59.5022 9 1],[68.7053 30 1],[68.7345 50 1],[85.8092 10 1],[85.8559 20 1],[90.3624 30 1],[90.3962 60 1],[90.4142 150 1],[90.448 30 1],[97.703 800 2],[100.986 9 1],[101.008 10 1],[101.037 10 1],[103.6337 80 1],[103.7018 150 1],[115.791 150 0],[115.8019 150 0],[115.8035 150 0],[117.493 370 2],[117.526 350 2],[117.559 330 2],[117.571 500 2],[117.599 350 2],[117.637 370 2],[118.8992 150 0],[118.9447 150 0],[118.9631 200 0],[119.3009 300 0],[119.3031 300 0],[119.324 300 0],[119.3264 300 0],[119.3393 100 0],[119.3649 150 0],[119.3679 150 0],[119.4064 100 0],[119.4488 100 0],[126.1552 100 0],[127.7245 250 0],[127.7282 250 0],[127.7513 300 0],[127.755 300 0],[128.0333 200 0],[131.1363 100 0],[132.3951 9 1],[132.9578 120 0],[132.96 120 0],[133.4532 150 1],[133.5708 300 1],[135.4288 100 0],[135.584 150 0],[136.4164 120 0],[145.9032 100 0],[146.3336 200 0],[146.7402 120 0],[148.1764 150 0],[154.8202 1000 3],[155.0774 900 3],[156.031 150 0],[156.0683 400 0],[156.0708 400 0],[156.1341 100 0],[156.1438 400 0],[165.6266 150 0],[165.6928 120 0],[165.7008 300 0],[165.738 120 0],[165.7907 120 0],[165.8122 150 0],[175.1823 500 0],[193.0905 1000 0],[216.294 250 2],[227.091 40 4],[227.725 5 4],[227.792 20 4],[229.687 800 2],[247.856 800 0],[250.912 250 1],[251.206 350 1],[252.441 200 3],[252.998 300 3],[257.483 250 1],[269.775 150 2],[272.485 110 2],[272.53 150 2],[272.59 150 2],[274.128 350 1],[274.649 250 1],[283.671 1000 1],[283.76 800 1],[298.211 200 2],[299.262 800 1],[387.619 350 1],[387.641 350 1],[387.666 350 1],[391.898 570 1],[392.069 800 1],[405.606 150 2],[406.794 200 2],[406.891 250 2],[407.026 250 2],[407.452 250 1],[407.585 350 1],[416.286 150 2],[418.69 250 2],[426.7 800 1],[426.726 1000 1],[432.556 200 2],[464.742 600 2],[465.025 520 2],[465.147 375 2],[465.83 200 3],[466.586 200 2],[477.175 200 0],[493.205 200 0],[494.388 5 4],[494.456 5 4],[505.217 200 0],[513.294 350 1],[513.328 350 1],[514.349 350 1],[514.516 570 1],[515.109 400 1],[538.034 300 0],[564.807 250 1],[566.247 350 1],[569.592 450 2],[580.133 250 3],[581.198 200 3],[582.642 150 2],[588.977 570 1],[589.159 350 1],[600.113 200 0],[600.603 250 0],[600.718 110 0],[601.068 150 0],[601.322 300 0],[601.484 250 0],[657.805 800 1],[658.288 570 1],[658.761 200 0],[674.438 150 2],[678.39 250 1],[703.725 150 2],[711.318 250 0],[711.519 250 0],[711.563 250 1],[711.699 200 0],[711.99 350 1],[723.132 800 1],[723.642 1000 1],[761.265 150 2],[772.62 90 3],[786.089 200 0],[805.862 200 0],[819.648 300 2],[833.299 150 2],[833.515 520 0],[850.032 300 2],[906.143 250 0],[906.247 200 0],[907.828 200 0],[908.851 250 0],[909.483 450 0],[911.18 300 0],[940.573 800 0],[960.303 150 0],[962.08 250 0],[965.844 300 0],[1068.308 200 0],[1069.125 300 0],[1161.929 12 0],[1162.883 23 0],[1165.885 13 0],[1165.968 47 0],[1166.963 24 0],[1174.822 85 0],[1175.332 142 0],[1175.476 114 0],[1177.754 11 0],[1189.291 17 0],[1189.575 30 0],[1261.41 26 0],[1350.227 20 0],[1439.965 38 0],[1440.325 16 0],[1442.012 61 0],[1442.903 12 0],[1444.224 13 0],[1655.966 12 0],[1689.0381 50 0],[1733.8561 10 0],[1744.86 11 0],[1813.9801 13 0],[1972.199 23 0]}{ALLx1000x1000x1000x800x1000x450x0}{UVx1000x1000x1000x800x1000x450x0}{VISx1000x300x1000x600x250x5x0}{IVx800x800x0x300x0x0x0}%[3.4973 110 4],[4.0268 450 4],
\pgfspectra@elt@search{#1}{N}{[16.6947 52 4],[18.175 400 3],[18.6069 52 4],[18.6153 62 4],[19.17 400 3],[19.29 400 3],[19.687 500 3],[19.723 500 3],[20.26 500 3],[20.594 500 3],[20.597 500 3],[20.603 500 3],[20.9303 90 4],[21.72 500 3],[21.79 500 3],[22.34 500 3],[22.512 800 3],[22.521 800 3],[23.412 600 3],[23.42 600 3],[23.425 600 3],[23.607 550 3],[23.799 500 3],[23.87 500 3],[23.88 600 3],[23.962 500 3],[24.72 900 3],[24.7561 90 4],[24.7706 120 4],[24.843 500 3],[24.846 500 3],[24.848 500 3],[25.795 500 2],[25.85 650 2],[25.919 700 2],[26.009 800 2],[26.045 600 3],[26.128 800 2],[26.291 500 2],[26.523 500 2],[26.527 500 2],[26.6196 150 4],[26.6379 200 4],[26.87 500 2],[27.099 650 3],[28.342 250 3],[28.348 300 3],[28.358 350 3],[28.556 600 3],[29.77 600 3],[29.782 700 3],[30.032 650 3],[30.3123 90 3],[30.328 500 3],[31.4715 150 2],[31.485 200 2],[31.4877 90 2],[31.5053 150 3],[32.2503 120 3],[32.257 150 3],[32.2724 200 3],[32.3175 120 3],[32.326 600 2],[33.505 300 3],[33.835 500 2],[34.02 500 2],[35.193 500 3],[35.198 500 2],[35.306 700 3],[36.2833 120 2],[36.2881 150 2],[36.2946 150 2],[36.2985 90 2],[37.4204 300 2],[37.4441 350 2],[38.748 500 2],[42.077 500 3],[45.1869 250 2],[45.2226 300 2],[46.374 650 3],[64.4634 285 1],[64.4837 360 1],[64.5178 450 1],[64.75 140 0],[66.0286 360 1],[67.1016 170 1],[67.1386 285 1],[67.163 150 1],[67.1773 160 1],[67.2001 170 1],[68.4996 500 2],[68.5513 570 2],[68.5816 650 2],[68.6335 500 2],[69.27 350 0],[71.3518 90 4],[71.386 150 4],[74.6984 285 1],[74.8195 150 4],[74.8291 200 4],[76.3336 500 2],[76.4359 570 2],[76.5148 570 3],[77.1544 250 2],[77.1901 300 2],[77.2385 350 2],[77.2891 200 2],[77.2975 150 2],[77.5965 650 1],[88.567 90 0],[90.9697 90 0],[91.0278 80 0],[91.0645 40 0],[91.5612 450 1],[91.5962 450 1],[91.6012 550 1],[91.6701 650 1],[92.1992 520 3],[92.1992 520 3],[92.2519 500 3],[92.2519 500 3],[92.3057 480 3],[92.4283 520 3],[95.3415 90 0],[95.3655 100 0],[95.397 130 0],[95.5335 1000 3],[96.399 130 0],[96.4626 115 0],[96.5041 70 0],[97.9842 650 2],[97.9919 700 2],[98.979 900 2],[99.1514 700 2],[99.1579 1000 2],[103.616 150 3],[106.7614 90 0],[106.8612 60 0],[107.871 90 3],[108.399 450 1],[108.458 600 1],[108.5546 430 1],[108.5701 650 1],[109.7237 175 0],[109.8095 115 0],[109.826 115 0],[110.036 105 0],[110.0465 40 0],[110.1291 90 0],[113.4165 360 0],[113.4415 385 0],[113.498 410 0],[114.365 105 0],[116.3884 130 0],[116.4206 60 0],[116.4325 105 0],[116.7448 270 0],[116.8334 105 0],[116.8417 60 0],[116.8536 195 0],[117.651 230 0],[117.663 105 0],[117.7695 195 0],[118.3031 500 2],[118.455 570 2],[118.801 90 3],[119.955 410 0],[120.0223 385 0],[120.071 360 0],[122.5026 175 0],[122.537 160 0],[122.841 130 0],[122.879 160 0],[123.8821 1000 4],[124.2804 900 4],[124.3179 360 0],[124.3306 315 0],[131.054 290 0],[131.095 250 0],[131.9 230 0],[131.968 315 0],[132.657 115 0],[132.792 115 0],[138.7371 150 2],[141.194 360 0],[149.2625 700 0],[149.282 490 0],[149.4675 640 0],[154.9336 90 4],[161.633 200 4],[161.969 350 4],[171.855 1000 3],[172.9945 250 2],[174.2729 775 0],[174.5252 700 0],[174.7848 570 2],[175.1218 350 2],[175.1657 650 2],[180.4486 150 2],[180.5669 200 2],[184.642 150 2],[186.037 90 4],[188.506 350 2],[188.522 400 2],[190.799 200 2],[191.955 150 2],[191.977 150 2],[192.065 300 2],[192.084 150 2],[192.13 200 2],[206.401 200 2],[206.442 250 2],[206.868 120 2],[207.109 90 2],[208.034 90 3],[209.553 160 1],[209.62 70 1],[209.686 110 1],[211.759 90 2],[212.15 90 2],[213.018 110 1],[214.278 160 1],[214.731 90 2],[218.82 200 2],[218.838 150 2],[220.609 160 1],[228.669 160 1],[228.844 110 1],[231.649 220 1],[231.669 160 1],[231.705 285 1],[231.809 90 3],[246.127 160 1],[247.769 150 3],[249.683 110 1],[249.697 70 1],[252.022 110 1],[252.079 160 1],[252.223 220 1],[259.094 110 1],[264.565 250 3],[264.618 300 3],[264.696 350 3],[268.218 250 2],[268.92 90 2],[270.984 160 1],[279.922 110 1],[282.364 110 1],[285.916 60 4],[288.527 160 1],[297.452 90 4],[298.078 150 4],[298.131 250 4],[299.843 60 4],[300.683 220 1],[307.825 90 3],[336.734 120 2],[343.715 360 1],[346.337 90 3],[347.871 570 3],[348.299 500 3],[348.496 400 3],[374.754 90 3],[375.467 90 2],[377.105 120 2],[383.837 285 1],[391.9 360 1],[393.852 90 2],[395.585 450 1],[399.5 1000 1],[399.863 150 2],[400.358 200 2],[403.508 360 1],[404.131 550 1],[404.353 360 1],[405.776 150 3],[409.733 250 2],[409.994 140 0],[410.343 200 2],[410.995 185 0],[417.616 285 1],[419.576 120 2],[420.01 150 2],[422.774 285 1],[423.691 285 1],[423.705 220 1],[424.178 450 1],[433.291 90 2],[434.568 120 2],[437.911 300 2],[443.274 285 1],[444.703 650 1],[451.091 90 2],[451.486 120 2],[453.041 360 1],[460.148 550 1],[460.373 350 4],[460.633 90 3],[460.716 450 1],[461.387 360 1],[461.998 250 4],[462.139 450 1],[463.054 870 1],[463.414 90 2],[464.064 120 2],[464.308 550 1],[478.813 285 1],[480.329 450 1],[484.738 180 0],[485.882 90 2],[486.715 150 2],[489.511 285 1],[491.494 160 0],[493.512 210 0],[494.456 200 4],[495.023 160 0],[496.398 350 0],[498.737 285 1],[499.436 450 1],[500.148 650 1],[500.27 360 1],[500.515 870 1],[500.732 550 1],[501.062 450 1],[501.639 360 1],[502.566 360 1],[504.51 550 1],[528.12 185 0],[529.268 140 0],[531.435 90 2],[532.082 200 2],[532.718 150 2],[549.567 450 1],[553.536 285 1],[566.663 650 1],[567.602 550 1],[567.956 870 1],[568.621 450 1],[571.077 450 1],[574.73 285 1],[575.25 700 0],[576.475 240 0],[582.954 265 0],[585.404 235 0],[592.781 360 1],[593.178 550 1],[594.024 285 1],[594.165 650 1],[595.239 285 1],[599.943 160 0],[600.847 210 0],[616.776 285 1],[637.962 360 1],[638.077 150 3],[641.165 185 0],[642.064 210 0],[642.302 210 0],[642.832 210 0],[643.768 185 0],[644.094 235 0],[645.411 90 2],[645.79 185 0],[646.702 120 2],[646.844 300 0],[648.171 265 0],[648.205 750 1],[648.27 360 0],[648.375 300 0],[648.48 325 0],[649.122 160 0],[649.954 210 0],[650.631 185 0],[661.056 750 1],[662.254 185 0],[663.694 185 0],[664.496 235 0],[664.65 185 0],[665.346 235 0],[665.651 210 0],[672.262 185 0],[739.864 210 0],[740.612 160 0],[740.624 265 0],[742.364 685 0],[744.229 785 0],[746.831 900 0],[760.88 185 0],[761.846 60 4],[776.224 450 1],[818.487 400 0],[818.802 400 0],[820.036 250 0],[821.072 300 0],[821.634 570 0],[822.314 400 0],[824.239 400 0],[843.874 550 1],[856.774 500 0],[859.4 570 0],[862.924 650 0],[865.589 500 0],[867.608 220 1],[868.028 700 0],[868.34 650 0],[868.615 500 0],[868.743 110 1],[869.9 110 1],[870.325 500 0],[871.054 160 1],[871.17 570 0],[871.883 500 0],[872.889 250 0],[874.736 200 0],[938.68 500 0],[939.279 570 0],[946.068 250 0],[986.333 200 0],[986.541 160 1],[986.821 110 1],[988.739 160 1],[989.109 220 1],[996.186 160 1],[996.934 220 1],[1002.327 285 1],[1003.545 220 1],[1006.515 220 1],[1007.012 160 1],[1010.513 250 0],[1010.889 300 0],[1011.248 350 0],[1011.464 400 0],[1012.627 110 1],[1053.957 250 0],[1207.451 200 0],[1218.682 380 0],[1228.897 225 0],[1232.876 290 0],[1238.165 310 0],[1243.84 180 0],[1246.125 510 0],[1246.962 920 0],[1342.961 500 0],[1358.133 840 0],[1358.773 180 0],[1360.227 180 0],[1362.418 290 0],[1475.707 250 0],[1486.887 100 0],[1496.66 160 0],[1558.227 180 0],[1751.658 120 0],[1758.4859 100 0],[1787.826 100 0]}{ALLx1000x920x1000x1000x1000x1000x0}{UVx1000x775x650x1000x1000x1000x0}{VISx1000x900x1000x300x150x350x0}{IVx920x920x550x0x0x0x0}%
\pgfspectra@elt@search{#1}{O}{[12.4616 80 4],[13.5523 110 4],[13.8109 80 4],[13.9029 110 4],[15.1447 80 4],[15.1477 110 4],[15.1546 150 4],[16.4574 80 4],[16.4657 110 4],[16.4709 80 4],[16.6235 80 4],[16.799 150 4],[17.0219 110 4],[17.2169 450 4],[18.5745 250 4],[19.2751 375 4],[19.2799 450 4],[19.2906 520 4],[19.3003 80 4],[19.4593 200 4],[19.586 150 3],[19.601 200 3],[20.2161 80 4],[20.2224 80 4],[20.2283 80 4],[20.2334 80 4],[20.2393 150 4],[20.378 110 4],[20.382 150 4],[20.385 100 4],[20.389 200 4],[20.394 100 4],[20.718 110 3],[20.724 150 3],[20.7794 300 4],[21.504 150 4],[21.5103 200 4],[21.5245 250 4],[21.6018 250 4],[22.0352 520 4],[22.7372 80 4],[22.7469 80 4],[22.7511 150 4],[22.7549 80 4],[22.7634 80 4],[22.7689 80 4],[23.1823 150 4],[23.346 140 3],[23.35 150 3],[23.352 110 3],[23.356 200 3],[23.36 110 3],[23.836 90 3],[23.857 180 3],[24.8459 110 4],[25.256 110 3],[25.295 110 3],[25.308 150 3],[26.039 300 3],[26.056 250 3],[26.434 80 2],[26.448 110 2],[26.697 110 2],[26.698 150 2],[26.703 150 2],[27.738 150 2],[27.963 300 3],[27.994 375 3],[28.571 110 3],[28.584 150 3],[28.6448 110 4],[29.562 80 2],[29.566 110 2],[29.572 120 2],[30.341 150 2],[30.346 150 2],[30.352 140 2],[30.362 160 2],[30.369 160 2],[30.38 250 2],[30.56 200 2],[30.566 250 2],[30.57 190 2],[30.577 300 2],[30.584 190 2],[30.662 200 3],[30.688 150 3],[32.0979 450 2],[32.845 300 2],[32.874 250 2],[34.531 300 2],[35.514 110 2],[35.533 90 2],[35.547 80 2],[35.902 200 2],[35.922 190 2],[35.938 150 2],[37.38 210 2],[37.4 200 2],[37.408 300 2],[37.416 190 2],[37.433 200 2],[37.444 210 2],[39.5558 450 2],[43.498 300 2],[50.7391 800 2],[50.7683 900 2],[50.8182 1000 2],[52.5795 1000 2],[53.783 250 1],[53.826 300 1],[53.909 220 1],[53.955 200 1],[53.985 150 1],[55.333 700 3],[55.4075 775 3],[55.4514 850 3],[55.5261 700 3],[59.7818 700 2],[59.9598 1000 2],[60.8398 580 3],[60.97 110 2],[60.9829 640 3],[61.004 160 2],[61.075 200 2],[61.085 100 2],[61.6952 270 3],[61.7005 150 3],[61.7036 200 3],[62.4617 520 3],[62.513 580 3],[62.5852 640 3],[62.973 1000 4],[64.4148 150 1],[67.295 200 1],[67.377 150 1],[68.1272 230 4],[68.5544 70 0],[70.2332 800 2],[70.2822 800 2],[70.2899 900 2],[70.385 1000 2],[71.8484 900 1],[71.8562 600 1],[74.4794 70 0],[75.8678 700 4],[75.9441 640 4],[76.0228 580 4],[76.0445 775 4],[76.1128 640 4],[76.2003 700 4],[77.0793 70 0],[77.1056 90 0],[77.4518 520 4],[77.5321 70 0],[77.9734 200 3],[77.9821 315 3],[77.9912 360 3],[77.9997 200 3],[78.7711 640 3],[79.0109 520 3],[79.0199 700 3],[79.1973 70 0],[79.666 300 1],[80.22 200 3],[80.2255 160 3],[80.4267 90 0],[80.4848 70 0],[80.5295 70 0],[80.581 80 0],[83.2762 240 1],[83.2927 600 2],[83.3332 450 1],[83.3742 780 2],[83.4467 600 1],[83.5096 600 2],[83.5292 800 2],[87.7879 40 0],[92.1296 130 3],[92.1366 160 3],[92.2008 80 0],[92.3367 200 3],[92.3433 130 3],[93.5193 90 0],[94.8686 40 0],[97.1738 90 0],[97.6448 40 0],[98.8773 160 0],[99.0204 40 0],[102.5762 250 0],[102.7431 90 0],[103.923 160 0],[104.0942 60 0],[115.2152 40 0],[130.2168 900 0],[130.4858 600 0],[130.6029 300 0],[133.8612 200 3],[134.2992 130 3],[134.3512 230 3],[137.1292 640 4],[147.689 160 2],[150.672 160 4],[159.001 285 2],[159.133 160 2],[164.368 315 4],[170.7996 160 4],[176.012 220 2],[176.042 110 2],[176.322 220 2],[176.448 220 2],[176.778 750 2],[176.824 550 2],[177.167 360 2],[177.3 110 2],[177.385 110 2],[177.916 220 2],[178.103 160 2],[178.485 160 2],[178.966 220 2],[184.826 110 2],[185.662 110 2],[187.278 285 2],[187.287 285 2],[187.494 285 2],[192.004 160 2],[192.075 110 2],[192.152 110 2],[192.349 220 2],[192.382 110 2],[192.694 110 2],[201.327 360 2],[202.696 160 2],[204.567 220 2],[205.274 160 2],[228.342 30 1],[228.489 30 1],[229.332 110 1],[230.035 200 1],[231.305 30 1],[231.612 30 1],[231.679 30 1],[231.968 50 1],[232.215 30 1],[233.931 30 1],[239.044 200 2],[239.433 80 2],[241.16 110 1],[242.284 80 2],[242.555 80 1],[243.356 250 1],[243.606 80 1],[243.883 80 2],[244.426 80 1],[244.555 300 1],[244.9372 200 3],[245.004 200 3],[245.499 200 2],[249.344 200 3],[249.377 200 3],[250.773 200 3],[250.919 230 3],[251.72 200 3],[255.806 200 2],[268.753 80 2],[269.549 110 2],[273.334 300 1],[274.746 110 1],[278.101 1000 4],[278.699 920 4],[278.985 775 4],[283.626 160 3],[292.145 160 3],[294.133 200 4],[294.165 210 4],[295.968 80 2],[297.229 265 0],[298.378 250 2],[301.763 80 2],[302.345 80 2],[304.302 80 2],[304.713 200 2],[305.93 110 2],[306.342 460 3],[307.161 410 3],[312.171 80 2],[312.262 160 1],[312.944 220 1],[313.286 110 2],[313.482 450 1],[313.844 285 1],[314.466 160 4],[320.966 160 3],[323.857 80 2],[326.098 200 2],[326.546 300 2],[326.731 80 2],[327.098 220 1],[327.352 220 1],[327.769 220 1],[328.759 360 1],[330.515 160 1],[330.66 160 1],[331.23 80 2],[334.074 110 2],[334.808 230 3],[334.911 270 3],[335.427 160 3],[337.54 200 3],[337.72 220 1],[337.806 130 3],[338.12 360 3],[338.552 360 3],[339.025 285 1],[339.679 270 3],[340.352 360 3],[340.738 220 1],[340.966 230 3],[340.984 160 1],[341.169 410 3],[341.364 230 3],[344.41 80 2],[345.512 80 2],[347.081 285 1],[348.983 200 3],[349.224 160 3],[356.039 230 3],[356.333 270 3],[369.87 80 2],[370.275 80 2],[370.337 80 2],[370.724 110 2],[371.275 220 1],[371.508 110 2],[372.593 315 3],[372.733 285 1],[372.903 360 3],[373.685 410 3],[373.992 160 1],[374.4 110 2],[374.489 230 3],[374.949 360 1],[375.467 150 2],[375.721 80 2],[375.987 250 2],[379.126 110 2],[380.314 160 1],[382.341 120 0],[391.196 450 1],[391.929 160 1],[394.729 185 0],[394.748 160 0],[394.759 140 0],[395.437 220 1],[395.461 100 0],[396.159 200 2],[397.326 450 1],[398.22 220 1],[406.99 160 1],[407.216 285 1],[407.587 450 1],[408.391 80 1],[408.714 50 1],[408.927 150 1],[409.724 110 1],[410.5 220 1],[411.922 285 1],[412.399 100 4],[413.281 160 1],[414.606 50 1],[415.33 220 1],[418.546 285 1],[418.979 450 1],[423.327 80 0],[425.374 50 1],[425.398 50 1],[427.547 50 1],[430.378 50 1],[431.714 285 1],[433.686 160 1],[434.556 220 1],[434.943 285 1],[436.69 220 1],[436.825 100 0],[439.595 220 1],[441.491 450 1],[441.698 285 1],[444.821 160 1],[445.238 160 1],[446.545 50 1],[446.628 50 1],[446.783 50 1],[446.941 50 1],[459.097 360 1],[459.617 285 1],[460.939 80 1],[463.885 160 1],[464.181 360 1],[464.914 450 1],[465.084 160 1],[466.164 360 1],[467.623 285 1],[469.921 220 1],[470.536 285 1],[492.46 160 1],[493.027 230 4],[494.306 220 1],[532.91 135 0],[532.968 160 0],[533.074 190 0],[543.518 90 0],[543.578 110 0],[543.686 135 0],[557.734 120 0],[559.237 110 2],[559.791 130 4],[595.839 160 0],[595.858 190 0],[599.528 80 0],[604.623 160 0],[604.644 190 0],[604.649 110 0],[610.627 100 0],[615.598 400 0],[615.677 450 0],[615.818 490 0],[625.683 80 0],[626.155 100 0],[636.634 100 0],[637.432 100 0],[645.36 320 0],[645.444 360 0],[645.598 400 0],[650.024 130 4],[660.491 80 0],[665.383 100 0],[700.192 360 0],[700.223 450 0],[715.67 210 0],[725.415 400 0],[725.445 450 0],[725.453 320 0],[747.644 210 0],[747.724 100 0],[747.908 120 0],[748.067 120 0],[770.675 100 0],[777.194 870 0],[777.417 810 0],[777.539 750 0],[788.627 80 0],[794.315 100 0],[794.717 100 0],[794.755 235 0],[795.08 210 0],[795.216 185 0],[798.194 110 0],[798.24 135 0],[798.698 190 0],[798.733 135 0],[799.507 250 0],[822.182 400 0],[822.765 265 0],[823.002 265 0],[823.3 325 0],[823.535 120 0],[842.616 120 0],[844.625 810 0],[844.636 1000 0],[844.676 935 0],[882.043 325 0],[905.701 160 0],[911.829 120 0],[913.471 80 0],[915.014 80 0],[915.148 80 0],[915.601 235 0],[926.081 450 0],[926.084 490 0],[926.094 450 0],[926.258 400 0],[926.267 540 0],[926.277 590 0],[926.594 490 0],[926.601 640 0],[939.919 185 0],[948.116 120 0],[948.288 120 0],[948.743 235 0],[949.271 140 0],[949.797 265 0],[949.93 160 0],[950.559 235 0],[952.196 210 0],[952.336 120 0],[952.396 120 0],[952.828 100 0],[962.213 100 0],[962.529 120 0],[967.738 160 0],[969.466 80 0],[969.491 65 0],[974.15 235 0],[976.065 235 0],[990.905 120 0],[993.698 140 0],[994.041 120 0],[999.531 160 0],[1042.118 120 0],[1128.634 590 0],[1128.691 640 0],[1128.702 490 0],[1128.732 490 0],[1129.51 490 0],[1129.768 540 0],[1130.238 590 0],[1135.869 265 0],[1246.402 490 0],[1257.004 450 0],[1299.077 120 0],[1307.691 160 0],[1316.389 700 0],[1316.485 750 0],[1316.511 640 0],[1621.206 160 0],[1796.6699 120 0],[1802.1211 590 0],[1804.148 120 0],[1804.2189 120 0],[1804.623 120 0],[1822.923 140 0],[1824.3631 540 0],[2617.3561 140 0]}{ALLx1000x1000x900x1000x850x1000x0}{UVx1000x900x900x1000x850x1000x0}{VISx870x870x450x200x0x230x0}{IVx1000x1000x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{F}{[13.454 8 4],[14.795 8 4],[14.8 10 4],[15.251 8 4],[15.854 8 4],[16.227 8 4],[16.35 8 4],[16.356 10 4],[16.598 18 4],[16.618 20 4],[16.979 6 3],[16.984 6 3],[17.107 6 3],[17.47 8 4],[17.637 8 3],[17.843 10 4],[17.859 8 4],[18.152 8 3],[18.157 8 3],[18.298 8 4],[18.672 8 4],[18.679 8 4],[18.684 10 4],[18.697 8 4],[18.701 8 4],[18.724 6 3],[19.057 12 4],[19.084 14 4],[19.197 8 4],[19.639 10 3],[19.645 12 3],[19.976 10 3],[19.98 10 3],[19.985 10 3],[19.993 10 3],[20 10 3],[20.009 14 3],[20.101 12 3],[20.106 14 3],[20.11 12 3],[20.116 16 3],[20.122 12 3],[20.555 8 4],[20.825 18 3],[21.385 14 3],[21.406 14 3],[22.077 14 3],[22.694 12 3],[22.71 10 3],[23.012 10 2],[23.322 12 3],[23.339 10 3],[23.986 14 3],[24.002 14 3],[24.008 18 3],[24.015 14 3],[24.028 14 3],[24.037 14 3],[25.103 20 3],[25.572 10 2],[25.577 12 2],[25.586 14 2],[26.171 14 2],[26.175 12 2],[26.381 16 2],[27.023 12 3],[27.969 14 2],[31.522 16 2],[31.554 14 2],[31.575 12 2],[37.53 6 1],[38.09 6 1],[40.704 8 1],[41.965 28 3],[42.005 30 3],[42.073 32 3],[42.951 20 2],[43.015 22 2],[43.022 16 2],[43.076 30 3],[43.091 10 1],[43.155 8 1],[43.564 8 1],[45.718 14 1],[46.429 18 2],[46.437 20 4],[46.511 20 2],[46.537 22 4],[46.598 24 4],[46.699 20 4],[47.195 8 1],[47.2 12 1],[47.271 10 1],[47.302 8 1],[48.46 18 1],[49.057 26 3],[49.1 32 3],[49.738 10 3],[49.783 12 3],[49.88 14 3],[50.616 18 4],[50.808 20 4],[50.839 24 2],[51.364 10 1],[51.397 14 4],[51.408 12 4],[51.494 14 1],[52.459 16 4],[52.529 18 4],[52.63 20 4],[54.685 14 1],[54.787 12 1],[54.832 10 1],[54.852 8 1],[56.769 24 2],[56.775 22 2],[57.064 28 3],[57.13 28 3],[57.139 30 3],[57.266 32 3],[60.567 18 1],[60.629 16 1],[60.68 20 1],[60.692 14 1],[60.747 16 1],[60.806 18 1],[63.014 16 2],[63.02 18 2],[64.767 14 4],[64.777 20 4],[64.787 22 4],[64.797 14 4],[65.403 26 4],[65.612 24 2],[65.687 26 2],[65.723 22 4],[65.733 28 4],[65.833 28 2],[67.612 28 3],[67.715 26 3],[67.722 30 3],[67.899 26 3],[67.921 32 3],[75.704 12 4],[78.039 3 0],[78.052 2 0],[78.238 2 0],[79.188 2.4 0],[79.254 2 0],[79.442 2 0],[80.696 30 0],[80.96 25 0],[95.187 100 0],[95.483 200 0],[95.555 150 0],[95.852 100 0],[97.24 4 0],[97.39 70 0],[97.622 20 0],[97.651 8 0],[97.775 20 0],[108.231 12 4],[108.839 14 4],[112.976 8 1],[121.903 16 2],[126.687 16 2],[126.771 18 2],[129.754 14 2],[132.706 8 1],[132.811 10 1],[133.359 8 1],[134.36 10 1],[134.404 8 1],[135.992 14 2],[140.061 10 1],[140.714 8 1],[149.309 12 1],[149.324 10 1],[149.331 8 1],[149.893 22 2],[150.201 24 2],[150.418 22 2],[150.479 28 2],[150.63 26 2],[150.677 22 2],[155.302 20 2],[155.759 22 2],[156.373 20 2],[156.554 20 2],[162.34 20 2],[165.076 20 2],[167.039 26 2],[167.74 28 2],[170.213 8 1],[171.699 20 2],[174.475 8 1],[174.555 10 1],[174.739 12 1],[177.009 24 2],[177.067 30 2],[177.293 22 2],[177.336 28 2],[179.165 32 2],[180.303 22 2],[180.47 20 2],[180.59 34 2],[183.93 22 2],[183.997 24 2],[184.014 22 2],[190.076 16 2],[202.744 20 2],[203.032 24 2],[217.144 8 3],[221.717 24 2],[222.918 2 4],[225.272 4 4],[229.829 10 3],[245.063 4 4],[245.158 8 3],[245.207 24 2],[245.692 10 3],[246.133 2 4],[246.485 26 2],[247.029 26 2],[247.873 24 2],[248.437 30 2],[254.277 24 2],[255.611 20 1],[258.004 24 2],[258.381 26 2],[259.323 24 2],[259.553 26 2],[259.928 28 2],[262.501 26 2],[262.97 28 2],[265.644 24 2],[269.398 2 4],[270.23 2 4],[270.396 2 4],[270.717 4 4],[275.555 26 2],[275.963 32 2],[278.815 24 2],[281.145 32 2],[282.074 8 3],[282.613 10 3],[283.399 28 2],[283.563 30 2],[286.033 30 2],[286.286 24 2],[287.14 20 1],[288.758 28 2],[288.945 30 2],[290.53 24 2],[291.329 28 2],[291.634 32 2],[293.249 28 2],[299.428 28 2],[299.721 24 2],[299.753 26 2],[299.947 24 2],[303.925 26 2],[303.975 24 2],[304.28 32 2],[304.914 30 2],[305.999 24 1],[311.362 28 2],[311.57 32 2],[312.154 36 2],[312.479 28 2],[313.423 28 2],[314.699 28 2],[315.349 28 1],[317.417 36 2],[317.476 34 2],[320.276 34 1],[321.4 24 2],[326.408 28 1],[341.465 28 1],[341.645 30 1],[341.68 28 1],[341.7 32 1],[347.296 32 1],[347.331 30 1],[347.478 34 1],[350.139 38 1],[350.145 40 1],[350.157 40 1],[350.284 36 1],[350.296 40 1],[350.311 42 1],[350.537 34 1],[350.552 40 1],[350.563 44 1],[352.289 32 1],[353.687 30 1],[354.177 32 1],[359.052 32 1],[359.41 1.2 0],[359.869 34 1],[360.139 36 1],[360.284 38 1],[366.817 2.4 0],[370.453 36 1],[371.035 32 1],[373.957 32 1],[380.583 28 1],[384.709 54 1],[384.999 52 1],[385.167 50 1],[389.848 1 0],[389.883 38 1],[390.193 36 1],[390.382 34 1],[393.069 1.6 0],[393.426 1 0],[394.856 1 0],[397.204 30 1],[397.267 32 1],[397.478 34 1],[402.473 48 1],[402.501 44 1],[402.549 46 1],[408.391 32 1],[410.307 38 1],[410.322 34 1],[410.351 40 1],[410.371 36 1],[410.387 34 1],[410.916 34 1],[411.654 32 1],[411.921 30 1],[420.715 28 1],[422.516 34 1],[424.412 30 1],[424.623 40 1],[424.639 38 1],[424.659 36 1],[424.677 34 1],[424.684 32 1],[427.536 34 1],[427.753 32 1],[427.893 32 1],[429.917 40 1],[442.03 28 2],[442.735 24 2],[443.232 24 2],[444.653 32 1],[444.672 34 1],[444.719 36 1],[447.999 28 2],[473.438 28 1],[485.939 34 1],[493.326 32 1],[496.065 1.2 0],[500.2 28 1],[501.254 30 2],[511.099 32 2],[517.325 30 1],[523.041 3 0],[527.901 2.4 0],[554.052 3.6 0],[555.243 2.4 0],[557.733 2 0],[558.927 32 1],[562.406 4 0],[562.693 2.4 0],[565.915 3 0],[566.753 8 0],[567.167 18 0],[568.914 3.6 0],[570.082 5 0],[570.731 5 0],[575.317 28 2],[576.12 24 2],[595.015 2.4 0],[595.919 5 0],[596.528 14 0],[599.443 10 0],[601.583 30 0],[603.804 16 0],[604.754 180 0],[608.011 20 0],[609.182 30 2],[612.55 28 2],[614.976 160 0],[621.087 80 0],[623.357 26 2],[623.965 2600 0],[624.79 28 1],[634.851 2000 0],[636.305 28 2],[641.365 1600 0],[656.969 90 0],[658.039 60 0],[665.041 80 0],[669.048 360 0],[670.828 80 0],[677.398 1400 0],[679.553 300 0],[683.426 1800 0],[685.603 10000 0],[687.022 1600 0],[690.248 3000 0],[690.982 1200 0],[696.635 800 0],[703.747 9000 0],[712.789 6000 0],[717.99 26 1],[720.236 3000 0],[721.179 26 1],[730.903 200 0],[731.102 3000 0],[731.43 140 0],[733.196 1000 0],[733.677 24 2],[735.494 26 2],[739.869 2000 0],[742.565 800 0],[748.272 440 0],[748.916 500 0],[751.492 180 0],[755.224 1000 0],[757.338 1000 0],[760.717 1400 0],[775.47 3600 0],[780.021 3000 0],[787.918 60 0],[789.859 100 0],[793.631 70 0],[795.632 60 0],[801.601 16 1],[804.093 200 0],[807.552 180 0],[807.752 70 0],[812.656 70 0],[812.926 120 0],[815.951 60 0],[817.934 120 0],[819.124 60 0],[820.863 70 0],[821.473 500 0],[823.077 600 0],[823.219 100 0],[827.462 300 0],[829.858 400 0],[830.24 120 0],[880.758 180 0],[890.092 200 0],[891.278 60 0],[902.549 70 0],[904.21 80 0],[917.868 70 0],[943.367 40 0],[950.53 5 0],[966.204 2.4 0],[973.434 5 0],[982.211 3 0],[990.265 2.4 0],[1004.798 16 1],[1028.545 3 0],[1086.231 4 0]}{ALLx10000x10000x54x36x32x28x0}{UVx200x200x44x36x32x28x0}{VISx10000x10000x54x32x0x0x0}{IVx3000x3000x16x0x0x0x0}%
@@ -44,7 +44,7 @@
\pgfspectra@elt@search{#1}{Na}{[10.628 100 4],[10.63 100 4],[10.64 100 4],[10.649 100 4],[10.793 200 4],[10.802 200 4],[11.082 200 4],[11.088 200 4],[11.151 100 4],[11.201 300 4],[11.47 100 4],[11.474 100 4],[11.799 400 4],[12.004 100 4],[12.518 400 4],[12.522 400 4],[12.529 500 4],[12.543 300 4],[12.546 300 4],[12.59 200 4],[12.621 100 4],[12.656 200 4],[12.661 100 4],[12.744 400 4],[12.747 400 4],[12.803 400 4],[12.805 400 4],[13.068 200 4],[13.135 300 4],[13.141 200 4],[13.164 300 4],[13.316 500 4],[13.339 400 4],[13.427 200 4],[13.579 300 4],[13.585 300 4],[13.6551 4 3],[13.6854 4 3],[13.881 200 4],[13.892 300 4],[13.9961 4 3],[14.2232 7 3],[14.2359 6 3],[14.6064 8 3],[14.6302 7 3],[14.864 400 4],[14.886 300 4],[15.0298 9 3],[15.0543 7 3],[15.064 7 3],[15.0687 8 3],[15.113 400 4],[15.1299 7 3],[15.5083 7 3],[15.524 7 3],[15.5448 7 3],[15.551 8 3],[15.6537 8 3],[15.721 300 4],[16.2448 12 3],[16.319 10 3],[16.362 300 4],[16.8411 12 3],[16.8546 10 3],[18.395 5 2],[18.935 5 2],[19.0445 10 3],[19.38 5 2],[19.404 5 2],[19.417 5 2],[19.429 5 2],[19.468 6 2],[19.553 6 2],[19.9772 10 3],[20.215 6 2],[20.219 6 2],[20.249 8 2],[20.271 5 2],[20.272 7 2],[20.276 8 2],[20.306 8 2],[20.328 8 2],[20.333 8 2],[20.549 10 3],[20.73 10 2],[21.534 10 2],[21.586 12 2],[21.612 12 2],[22.987 15 2],[23.059 12 2],[25.052 50 2],[25.137 30 2],[26.69 25 2],[26.765 70 2],[26.787 50 2],[26.863 50 2],[27.208 20 2],[27.245 20 2],[30.015 160 1],[30.02 160 1],[30.132 90 1],[30.144 100 1],[30.245 60 1],[30.715 800 4],[30.826 1000 4],[31.9644 10 3],[33.255 800 4],[33.391 900 4],[36.032 800 4],[36.037 800 4],[36.076 10 3],[37.208 300 1],[37.638 350 1],[37.814 100 2],[38.01 70 2],[40.072 1000 4],[40.8684 12 3],[40.9614 10 3],[41.0372 15 3],[41.1334 10 3],[41.2242 13 3],[44.505 500 4],[44.519 600 4],[45.99 600 4],[46.105 850 4],[46.326 1000 4],[129.397 60 1],[132.774 50 1],[133.676 7 2],[133.736 7 2],[134.067 8 2],[134.239 9 2],[134.273 10 2],[134.754 45 1],[135.528 11 2],[136.19 12 2],[137.234 11 2],[137.469 90 1],[140.468 90 1],[142.089 10 2],[144.419 10 2],[144.931 12 2],[149.521 45 1],[149.601 40 1],[149.773 45 1],[150.641 80 1],[150.691 60 1],[151.31 70 1],[151.963 60 1],[156.287 11 2],[156.529 10 2],[158.05 10 3],[158.218 11 3],[158.233 10 3],[158.398 11 3],[158.414 12 3],[158.699 10 3],[158.705 12 3],[159.818 10 2],[161.395 10 3],[161.592 11 3],[161.857 12 3],[165.547 11 3],[165.792 60 1],[168.894 11 2],[169.929 10 2],[170.197 15 3],[170.241 10 3],[171.112 10 2],[172.827 11 2],[173.111 10 2],[175.548 10 2],[177.657 90 1],[177.824 40 1],[178.304 60 1],[178.719 80 1],[178.885 45 1],[179.841 80 1],[180.126 45 1],[180.707 15 2],[180.709 90 1],[180.838 60 1],[181.077 10 2],[181.167 11 2],[181.681 10 2],[182.17 50 1],[183.387 45 1],[183.522 10 2],[183.522 80 1],[183.789 45 1],[183.894 10 2],[184.182 60 1],[184.436 11 2],[184.502 70 1],[184.753 12 2],[184.759 10 2],[184.956 15 2],[185.015 45 1],[185.038 12 2],[185.119 70 1],[185.317 80 1],[185.592 10 2],[185.671 10 2],[186.121 10 2],[186.645 45 1],[187.337 45 1],[187.508 60 1],[188.066 10 2],[188.191 160 1],[188.509 50 1],[188.574 45 1],[188.739 10 2],[188.747 20 2],[189.075 15 2],[190.016 15 2],[191.845 10 2],[192.396 11 2],[192.626 14 2],[192.724 12 2],[193.274 12 2],[193.389 13 2],[194.352 10 2],[194.643 12 2],[195.091 12 2],[195.124 14 2],[196.076 12 3],[196.508 11 3],[196.76 10 3],[197.716 10 2],[198.557 13 2],[199.568 10 2],[200.421 10 2],[200.522 11 2],[200.847 11 2],[201.187 15 2],[201.417 11 2],[201.703 12 2],[201.839 10 3],[202.856 12 2],[203.113 12 2],[203.59 11 2],[204.166 12 2],[204.329 12 2],[204.482 10 2],[204.544 10 2],[205.148 11 2],[206.036 10 2],[206.66 15 2],[208.291 13 2],[210.633 12 3],[211.453 10 3],[214.072 15 2],[214.454 14 2],[215.576 10 3],[220.283 15 2],[222.593 15 2],[222.853 80 1],[223.033 30 2],[223.219 16 2],[224.67 20 2],[225.147 14 2],[227.842 15 2],[228.566 13 2],[230.358 80 1],[230.999 15 2],[231.565 300 1],[238.699 18 2],[239.328 130 1],[239.403 17 2],[240.101 100 1],[240.659 15 2],[242.099 300 1],[242.473 300 1],[243.914 200 1],[244.15 250 1],[244.872 200 1],[245.218 200 1],[245.931 25 2],[246.885 18 2],[247.473 20 2],[249.315 1000 1],[249.703 25 2],[250.284 300 1],[250.63 450 1],[251.026 17 2],[251.546 600 1],[253.025 15 2],[253.154 600 1],[254.28 14 2],[258.631 550 1],[259.496 600 1],[261.181 850 1],[262.741 300 1],[263.181 300 1],[264.853 160 1],[265.131 200 1],[265.981 200 1],[266.1 850 1],[266.346 200 1],[266.646 350 1],[267.183 1000 1],[267.404 200 1],[267.809 850 1],[280.871 650 1],[280.952 850 1],[281.829 350 1],[282.987 600 1],[283.956 800 1],[284.172 1000 1],[285.281 16 0],[285.301 15 0],[285.651 650 1],[285.949 800 1],[286.102 350 1],[287.128 750 1],[287.295 650 1],[288.115 900 1],[288.626 850 1],[289.395 700 1],[290.114 900 1],[290.472 800 1],[290.492 1100 1],[291.752 1100 1],[291.905 1100 1],[291.985 1200 1],[292.095 1300 1],[292.349 1000 1],[293.088 750 1],[293.408 850 1],[293.774 950 1],[294.266 450 1],[294.57 800 1],[294.75 950 1],[295.124 1200 1],[295.24 1100 1],[296.012 850 1],[296.574 450 1],[297.073 500 1],[297.424 600 1],[297.499 750 1],[297.713 1000 1],[297.966 1100 1],[298.063 1100 1],[298.419 1300 1],[300.415 550 1],[300.744 750 1],[300.914 750 1],[300.948 450 1],[301.54 600 1],[301.734 450 1],[302.907 400 1],[303.708 400 1],[304.56 400 1],[305.367 550 1],[305.535 550 1],[305.616 550 1],[305.738 550 1],[305.795 550 1],[305.872 550 1],[306.025 700 1],[306.135 800 1],[306.438 500 1],[306.622 500 1],[306.654 500 1],[307.433 550 1],[307.832 550 1],[308.025 550 1],[308.706 550 1],[308.826 450 1],[309.204 550 1],[309.273 550 1],[309.445 650 1],[309.555 650 1],[310.358 500 1],[310.44 500 1],[311.145 450 1],[311.369 500 1],[312.294 400 1],[312.442 1700 1],[312.521 600 1],[312.938 600 1],[313.548 2500 1],[313.786 1700 1],[314.571 950 1],[314.928 2000 1],[316.374 2000 1],[317.509 700 1],[317.906 1000 1],[318.979 1700 1],[321.219 1600 1],[323.493 700 1],[325.796 1500 1],[326.021 650 1],[327.422 950 1],[328.56 1700 1],[330.135 1700 1],[330.237 19 0],[330.298 18 0],[330.496 1500 1],[331.804 1000 1],[332.769 950 1],[342.686 6 0],[353.305 1500 1],[363.127 1200 1],[371.107 850 1],[408.137 200 1],[411.37 300 1],[412.308 250 1],[423.326 250 1],[423.899 2 0],[424.037 200 1],[424.09 250 1],[424.208 3 0],[427.364 4 0],[427.679 5 0],[428.784 2 0],[429.101 3 0],[429.248 250 1],[429.286 250 1],[430.881 250 1],[430.904 250 1],[432.091 250 1],[432.14 6 0],[432.462 7 0],[433.729 250 1],[434.149 4 0],[434.411 250 1],[434.474 5 0],[436.86 200 1],[437.522 200 1],[438.749 200 1],[439.003 8 0],[439.281 250 1],[439.334 9 0],[440.512 200 1],[441.989 6 0],[442.325 7 0],[444.67 200 1],[444.741 200 1],[445.474 200 1],[445.523 200 1],[445.721 200 1],[447.463 200 1],[447.88 200 1],[448.167 200 1],[449.015 200 1],[449.087 200 1],[449.418 10 0],[449.766 11 0],[449.962 200 1],[450.697 200 1],[451.921 200 1],[452.498 200 1],[453.332 200 1],[454.163 7 0],[454.519 8 0],[455.153 200 1],[459.092 160 1],[472.223 160 1],[473.11 160 1],[473.25 100 1],[474.167 160 1],[476.879 160 1],[478.879 100 1],[481.475 50 1],[483.526 50 1],[514.311 60 1],[519.165 100 1],[520.333 50 1],[520.855 80 1],[539.063 60 1],[540.046 70 1],[541.455 90 1],[568.2633 5 0],[568.8204 9 0],[588.995 32 0],[589.5924 16 0],[617.525 60 1],[619.926 70 1],[623.468 70 1],[626.001 80 1],[627.474 80 1],[631.08 60 1],[635.283 60 1],[635.805 60 1],[636.115 70 1],[636.641 70 1],[637.891 60 1],[647.529 50 1],[651.421 90 1],[652.468 80 1],[653.07 130 1],[654.404 130 1],[654.575 130 1],[655.243 80 1],[780.978 4 0],[781.024 3 0],[818.3256 5 0],[819.4824 9 0],[864.992 7 0],[865.089 6 0],[915.388 4 0],[946.594 6 0],[996.128 7 0],[1057.228 3 0],[1074.644 10 0],[1074.929 9 0],[1083.487 8 0],[1138.145 11 0],[1140.378 12 0],[1476.748 115 0],[2205.6439 30 0],[2208.367 27 0],[2334.841 24 0],[2337.9131 24 0]}{ALLx2500x115x2500x100x15x1000x0}{UVx2500x19x2500x100x15x1000x0}{VISx300x32x300x0x0x0x0}{IVx115x115x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Mg}{[11.816 40 3],[11.881 80 3],[12.359 70 3],[12.465 240 3],[12.986 300 3],[13.281 300 3],[14.695 400 3],[14.741 300 3],[14.754 300 3],[17.08 15 2],[17.139 15 2],[18.007 350 3],[18.062 400 3],[18.08 400 3],[18.134 350 3],[18.224 15 2],[18.297 12 2],[18.651 20 2],[18.72 20 2],[18.853 10 2],[23.173 100 2],[23.426 80 2],[25.158 5 4],[27.658 35 4],[31.23 10 4],[32.099 4000 3],[32.331 3000 3],[35.109 20 4],[35.22 18 4],[35.309 30 4],[35.33 15 4],[35.422 18 4],[35.533 20 4],[80.041 40 3],[85.729 150 3],[86.674 30 3],[91.903 50 3],[92.978 30 3],[94.67 8 1],[94.677 9 1],[100.876 40 3],[102.596 14 1],[102.611 12 1],[102.641 30 3],[103.741 250 3],[104.437 80 3],[105.576 60 3],[121.099 300 3],[123.994 25 1],[124.04 20 1],[124.851 6 1],[124.993 8 1],[127.124 8 1],[127.194 9 1],[127.272 8 1],[127.343 11 1],[127.483 10 2],[128.07 11 2],[130.671 11 1],[130.788 12 1],[130.828 12 1],[130.944 14 1],[134.219 300 3],[134.657 800 3],[134.668 300 3],[135.205 600 3],[136.545 14 1],[136.726 15 1],[136.77 15 1],[136.942 18 1],[138.446 900 3],[138.577 500 3],[138.753 800 3],[139.127 12 2],[139.339 15 2],[140.468 300 3],[140.936 1000 3],[143.114 10 2],[143.753 500 3],[143.764 1000 3],[144.742 300 3],[145.954 300 3],[145.962 400 3],[147.6 20 1],[147.801 25 1],[148.089 20 1],[148.151 400 3],[148.29 30 1],[149.045 350 3],[149.55 300 3],[157.271 16 2],[158.624 12 2],[160.711 300 3],[164.593 1 0],[165.116 1 0],[165.831 2 0],[166.843 5 0],[168.302 500 3],[168.341 10 0],[168.709 13 2],[169.728 13 2],[169.881 400 3],[170.706 15 0],[172.204 10 2],[173.484 40 1],[173.762 50 1],[173.884 22 2],[174.756 12 2],[174.78 20 0],[174.893 18 2],[175.065 40 1],[175.346 50 1],[177.298 15 2],[178.325 20 2],[179.458 14 2],[180.066 15 2],[182.793 30 0],[184.417 300 3],[185.819 13 2],[187.949 12 2],[190.85 10 2],[192.39 12 2],[193.067 13 2],[193.784 11 2],[202.582 9 0],[203.955 15 2],[205.549 15 2],[206.49 25 2],[208.59 15 2],[209.196 20 2],[209.793 13 2],[211.277 15 2],[213.406 16 2],[217.77 20 2],[232.958 3 1],[239.515 20 2],[244.957 6 1],[246.775 15 2],[249.054 10 2],[251.84 12 3],[252.919 10 2],[253.479 4 3],[255.723 1 0],[256.094 1 0],[256.226 1 0],[256.494 1 0],[257.091 1 0],[257.225 1 0],[257.494 2 0],[257.789 1 0],[258.059 1 0],[258.422 1 0],[258.556 2 0],[258.828 3 0],[259.189 1 0],[259.323 1 0],[259.597 2 0],[260.25 2 0],[260.385 4 0],[260.662 5 0],[261.336 1 0],[261.473 2 0],[261.751 3 0],[262.866 3 0],[263.005 6 0],[263.287 8 0],[264.48 2 0],[264.621 3 0],[264.906 4 0],[266.076 8 1],[266.082 8 1],[266.812 6 0],[266.955 8 0],[267.246 10 0],[269.372 3 0],[269.518 5 0],[269.814 6 0],[273.199 8 0],[273.349 10 0],[273.653 12 0],[276.522 5 0],[276.834 7 0],[277.669 38 0],[277.827 32 0],[277.983 90 0],[278.129 8 0],[278.142 32 0],[278.297 36 0],[279.079 13 1],[279.553 1000 1],[279.806 16 1],[280.27 600 1],[280.976 3 0],[281.111 2 0],[281.178 1 0],[284.672 12 0],[284.675 12 0],[284.834 14 0],[284.842 14 0],[285.165 16 0],[285.166 16 0],[285.213 6000 0],[290.292 2 0],[290.636 4 0],[291.545 3 0],[291.545 3 0],[292.875 2 1],[293.654 3 1],[293.674 10 0],[293.674 10 0],[293.847 12 0],[293.847 12 0],[294.2 2 0],[294.2 13 0],[296.787 1 1],[297.17 1 1],[309.108 20 0],[309.299 22 0],[309.69 14 0],[310.471 9 1],[310.481 8 1],[316.898 6 1],[317.271 6 1],[317.578 7 1],[319.762 2 0],[329.905 12 2],[330.639 13 2],[332.993 17 0],[333.215 6 0],[333.59 12 2],[333.668 9 0],[334.258 11 2],[336.141 12 2],[338.124 10 2],[338.29 11 2],[338.737 11 2],[353.504 7 1],[353.886 8 1],[354.952 7 1],[355.337 8 1],[370.674 10 2],[382.93 140 0],[383.23 300 0],[383.829 500 0],[384.824 8 1],[384.891 1 0],[385.04 7 1],[385.396 2 0],[385.496 1 0],[385.886 2 0],[387.831 3 0],[389.191 2 0],[389.33 2 0],[389.557 3 0],[390.386 4 0],[393.84 6 0],[398.421 1 0],[398.675 8 0],[405.469 2 0],[405.75 10 0],[407.506 3 0],[408.183 2 0],[416.51 4 0],[416.727 15 0],[435.191 20 0],[435.453 6 0],[438.038 6 0],[438.464 9 1],[439.059 10 1],[442.8 8 1],[443.399 9 1],[443.649 5 1],[443.66 4 1],[448.116 14 1],[448.133 13 1],[453.429 6 1],[457.11 28 0],[462.13 3 0],[470.299 7 0],[473.003 10 0],[473.959 6 1],[473.971 5 1],[485.11 7 1],[491.6 10 2],[516.733 75 0],[517.268 220 0],[518.361 400 0],[526.421 8 1],[526.437 7 1],[534.598 1 0],[540.154 9 1],[550.96 2 0],[552.841 6 0],[571.109 30 0],[578.531 5 0],[578.556 4 0],[583.982 10 2],[591.643 7 1],[591.816 6 1],[625.675 15 2],[631.872 10 0],[631.924 9 0],[631.949 7 0],[634.674 10 1],[634.696 9 1],[654.597 11 1],[662.044 5 1],[662.057 6 1],[663.083 2 0],[678.145 7 1],[678.785 8 1],[681.286 7 1],[681.927 8 1],[689.49 4 0],[696.54 6 0],[706.041 8 0],[719.317 10 0],[729.106 10 0],[738.7 5 0],[738.769 12 0],[758.076 4 1],[765.76 20 0],[765.915 19 0],[765.99 17 0],[769.016 8 0],[769.155 15 0],[772.261 1 0],[774.634 1 0],[775.93 1 0],[778.65 5 1],[779.098 4 1],[781.114 3 0],[787.705 12 1],[788.167 2 0],[789.637 13 1],[793.081 7 0],[804.773 3 0],[804.985 5 0],[805.423 7 0],[809.872 10 0],[811.522 9 1],[812.043 8 1],[815.464 1 0],[815.913 2 0],[820.984 10 0],[821.303 20 0],[821.399 10 1],[822.292 7 1],[823.319 7 1],[823.464 11 1],[830.331 7 0],[830.56 9 0],[831.026 10 0],[834.612 15 0],[846.648 2 0],[846.884 5 0],[847.369 7 0],[871.018 10 0],[871.269 12 0],[871.783 13 0],[873.499 10 1],[873.602 17 0],[874.566 11 1],[880.676 14 0],[882.432 10 1],[883.508 11 1],[892.357 20 0],[898.903 7 0],[899.169 9 0],[899.716 10 0],[921.825 14 1],[924.427 13 1],[924.65 12 0],[925.578 30 0],[932.754 10 1],[934.054 10 1],[941.496 25 0],[942.981 17 0],[943.276 19 0],[943.878 20 0],[950.245 8 0],[950.311 7 0],[950.343 5 0],[963.189 12 1],[963.243 11 1],[995.32 15 0],[998.32 15 0],[998.647 17 0],[999.321 18 0],[1009.216 14 1],[1039.176 5 1],[1039.223 6 1],[1081.108 35 0],[1091.423 11 1],[1091.527 7 1],[1095.178 10 1],[1095.332 25 0],[1095.73 27 0],[1096.545 28 0],[1103.21 15 0],[1103.366 14 0],[1125.593 5 1],[1125.635 4 1],[1182.818 45 0],[1208.366 30 0],[1487.762 28 0],[1502.499 35 0],[1504.024 30 0],[1504.77 25 0],[1574.071 6 0],[1574.899 8 0],[1576.584 10 0],[1710.866 30 0],[2639.29 5 0]}{ALLx6000x6000x1000x100x4000x35x0}{UVx6000x6000x1000x100x4000x35x0}{VISx500x500x14x15x0x0x0}{IVx45x45x14x0x0x0x0}%
\pgfspectra@elt@search{#1}{Al}{[10.38 300 4],[10.388 400 4],[10.407 250 4],[10.418 250 4],[10.795 600 4],[10.806 300 4],[10.811 300 4],[11.85 250 4],[12.403 400 3],[12.553 900 4],[12.607 800 4],[12.973 700 3],[13.041 800 4],[13.085 1000 4],[13.1 900 4],[13.144 900 4],[13.263 500 4],[16.007 800 3],[16.169 700 3],[27.869 1000 4],[28.139 900 4],[48.6884 70 2],[48.6912 30 2],[51.1138 250 2],[51.1191 150 2],[56.0317 500 2],[56.0433 200 2],[67.0068 100 2],[67.1118 200 2],[69.5829 500 2],[69.6217 400 2],[72.5683 200 2],[72.6915 300 2],[85.5034 400 2],[85.6746 500 2],[89.2024 400 2],[89.3887 50 2],[89.3897 450 2],[102.734 500 3],[104.217 800 3],[104.852 700 3],[105.89 500 3],[106.143 500 3],[106.489 600 3],[106.657 500 3],[106.826 250 4],[106.944 600 3],[108.867 500 4],[109.014 300 4],[110.574 400 3],[111.882 600 3],[112.561 500 3],[113.682 400 3],[115.03 300 4],[116.259 10 2],[116.262 5 2],[116.542 350 4],[116.848 250 4],[117.743 40 1],[119.1812 50 1],[119.85 400 3],[122.055 400 3],[123.719 900 3],[124.021 600 3],[124.086 700 3],[124.879 700 3],[125.762 900 3],[126.418 800 3],[127.276 1000 3],[128.77 500 4],[133.006 400 4],[133.79 400 3],[135.018 150 1],[135.052 400 4],[135.281 100 2],[135.282 5 2],[135.286 70 2],[136.335 400 4],[136.92 600 4],[137.37 300 4],[137.662 500 3],[137.967 600 2],[138.413 800 2],[138.879 500 3],[143.194 600 3],[144.182 700 3],[144.587 400 4],[144.751 800 3],[145.526 300 4],[145.796 600 3],[147.564 600 4],[148.605 300 4],[148.689 700 3],[149.479 800 3],[150.837 700 4],[151.907 400 3],[152.614 1000 4],[153.754 800 3],[153.912 500 4],[153.983 800 1],[155.019 500 3],[155.725 1000 3],[155.903 500 3],[156.416 700 3],[156.9385 100 1],[157.79 300 4],[158.204 900 3],[158.446 800 3],[158.928 400 3],[158.987 350 4],[159.6059 125 1],[160.5766 700 2],[160.665 400 3],[161.1814 100 2],[161.1874 800 2],[161.781 400 3],[162.5627 150 1],[162.754 600 3],[163.682 500 3],[163.906 800 3],[164.4235 100 1],[164.4809 100 1],[167.0787 1000 1],[168.625 100 1],[171.944 800 1],[172.1244 500 1],[172.1271 900 1],[172.4952 500 1],[172.4984 900 1],[176.0104 350 1],[176.1975 300 1],[176.3 290 0],[176.3869 500 1],[176.3952 700 1],[176.564 450 0],[176.5815 300 1],[176.638 450 0],[176.7731 400 1],[176.914 450 0],[181.856 1000 3],[182.8588 600 1],[183.2837 400 1],[183.4808 250 1],[185.4716 1000 2],[185.5929 300 1],[185.8026 700 1],[185.998 120 1],[186.2311 1000 1],[186.279 600 2],[188.116 700 3],[192.9978 200 1],[193.1048 150 1],[193.2377 200 1],[193.4503 400 1],[193.4713 150 1],[193.584 300 2],[193.5863 15 2],[193.5949 200 2],[193.6907 150 1],[193.9261 220 1],[199.0531 700 1],[201.6052 150 1],[201.6234 150 1],[201.6368 100 1],[207.4008 200 1],[209.4264 700 1],[209.4744 150 1],[209.4791 300 1],[209.5104 100 1],[209.5141 200 1],[215.07 60 0],[218.1 60 0],[226.91 400 0],[226.922 120 0],[231.249 60 0],[231.353 70 0],[231.748 90 0],[231.906 60 0],[232.156 140 0],[236.705 460 0],[236.761 110 0],[236.811 110 0],[236.93 180 0],[237.022 140 0],[237.073 70 0],[237.207 160 0],[237.312 850 0],[237.335 170 0],[237.357 110 0],[237.84 60 0],[239.9 110 2],[251.33 60 0],[251.587 400 3],[256.798 240 0],[257.51 480 0],[257.54 60 0],[263.155 80 1],[263.77 110 1],[265.248 150 0],[266.039 200 0],[266.917 160 1],[276.277 285 2],[276.287 220 2],[281.619 650 1],[283.796 90 0],[284.01 90 0],[290.693 450 2],[304.128 150 1],[305.007 360 0],[305.468 60 0],[305.714 450 0],[306.429 90 0],[306.614 60 0],[307.464 150 1],[308.2153 4500 0],[309.271 7200 0],[309.2839 1800 0],[320.82 500 3],[326.721 500 3],[328.513 600 3],[334.446 400 3],[334.852 360 2],[335.088 290 2],[342.892 150 1],[343.935 70 0],[344.364 150 0],[344.486 70 0],[345.822 70 0],[347.354 500 3],[347.981 60 0],[348.263 60 0],[349.223 900 3],[350.846 800 3],[351.128 500 3],[351.756 700 3],[352.703 400 3],[354.108 500 3],[358.656 450 1],[358.707 360 1],[358.745 290 1],[360.163 870 2],[360.193 550 2],[361.236 750 2],[365.106 220 1],[365.11 110 1],[365.498 150 1],[365.5 290 1],[370.211 450 2],[371.312 550 2],[390.068 450 1],[393.2 60 0],[394.4006 4500 0],[396.152 9000 0],[398.014 110 2],[399.586 110 1],[408.245 110 2],[408.861 150 2],[414.237 110 2],[414.992 650 2],[415.017 650 2],[422.681 290 1],[436.464 110 2],[447.989 650 2],[447.997 650 2],[451.256 760 2],[452.894 550 2],[452.919 870 2],[458.582 150 1],[458.819 110 1],[466.68 550 1],[470.115 110 2],[470.141 150 2],[489.876 110 1],[490.277 110 1],[490.41 110 2],[510.752 70 0],[515.101 110 2],[516.389 110 2],[528.021 150 1],[528.377 290 1],[528.585 150 1],[531.232 110 1],[531.607 220 1],[537.184 150 1],[555.706 180 0],[555.795 110 0],[559.323 450 1],[569.66 1200 2],[572.273 1000 2],[585.362 110 1],[597.194 220 1],[600.176 290 1],[600.188 220 1],[600.642 450 1],[605.521 110 2],[606.111 150 1],[606.843 290 1],[606.853 110 1],[607.323 450 1],[618.157 110 1],[618.168 150 1],[618.228 290 1],[618.245 220 1],[618.342 450 1],[620.152 450 1],[620.17 360 1],[622.618 290 1],[623.178 360 1],[624.336 450 1],[633.574 450 1],[669.602 360 0],[669.867 230 0],[708.397 60 0],[708.464 70 0],[736.157 110 0],[736.23 140 0],[760.616 60 0],[761.482 90 0],[763.537 220 2],[766.026 150 2],[768.197 220 2],[783.531 230 0],[783.613 290 0],[788.179 360 2],[788.252 150 2],[790.551 290 2],[799.305 60 0],[800.319 90 0],[806.597 70 0],[807.535 110 0],[824.359 290 2],[827.511 360 2],[864.07 290 1],[877.287 360 0],[877.39 450 0],[882.891 110 0],[884.128 180 0],[891.29 90 0],[892.356 140 0],[908.991 60 0],[913.995 70 0],[929.065 150 1],[929.075 110 1],[957.152 290 2],[960.599 360 2],[1007.629 150 1],[1076.836 110 0],[1078.204 140 0],[1087.298 110 0],[1089.173 230 0],[1125.319 450 0],[1125.488 570 0],[1312.341 570 0],[1315.076 450 0],[1671.8961 230 0],[1675.0561 300 0],[1676.3359 140 0],[2109.3039 300 0],[2116.375 360 0]}{ALLx9000x9000x1000x1200x1000x1000x0}{UVx7200x7200x1000x1000x1000x1000x0}{VISx9000x9000x550x1200x0x0x0}{IVx570x570x290x360x0x0x0}%
-\pgfspectra@elt@search{#1}{Si}{[7.861 1 4],[7.89 1 4],[8.081 2 4],[8.111 2 4],[8.518 10 4],[8.558 6 4],[9.045 4 4],[9.085 4 4],[9.644 15 4],[9.714 10 4],[9.821 2 4],[11.786 20 4],[11.897 20 4],[45.782 4 3],[45.816 3 3],[51.512 2 3],[51.635 3 3],[56.661 8 2],[64.576 2 3],[65.222 6 2],[65.333 8 2],[67.348 5 2],[74.994 5 3],[80.007 5 2],[80.51 10 1],[81.505 7 3],[81.813 8 3],[82.052 20 1],[82.341 9 2],[84.372 20 1],[84.577 40 1],[85.014 10 1],[88.34 5 2],[88.972 100 1],[89.2 200 1],[89.941 10 1],[90.174 20 1],[91.301 10 1],[91.385 20 1],[92.981 20 1],[93.909 7 2],[96.795 9 2],[98.987 100 1],[99.268 200 1],[99.352 10 2],[99.479 13 2],[99.739 16 2],[100.537 7 2],[102.07 25 1],[102.369 50 1],[103.116 7 2],[103.392 8 2],[103.705 7 2],[105.705 30 1],[105.75 15 1],[106.663 8 3],[108.322 6 2],[110.837 14 2],[110.997 16 2],[111.323 18 2],[112.249 8 3],[112.744 20 1],[112.791 40 1],[112.834 10 3],[114.055 6 2],[114.158 7 2],[114.228 6 2],[114.431 8 2],[114.496 6 2],[114.511 8 2],[114.518 7 2],[115.5 6 2],[115.596 6 2],[115.81 7 2],[116.026 6 2],[116.158 8 2],[117.437 5 2],[117.443 6 2],[117.8 8 2],[119.042 100 1],[119.328 200 1],[119.45 250 1],[119.739 100 1],[120.651 30 2],[120.653 30 2],[120.752 9 2],[121.046 10 2],[121.612 10 1],[122.391 20 1],[122.425 20 1],[122.497 10 1],[122.681 50 1],[122.689 20 1],[122.699 40 1],[122.76 100 1],[122.844 10 1],[122.862 25 1],[122.875 150 1],[122.939 200 1],[123.543 7 2],[123.592 10 1],[124.674 100 1],[124.843 150 1],[125.009 100 1],[125.043 150 1],[125.116 200 1],[125.528 10 0],[125.649 40 0],[125.88 50 0],[126.042 1000 1],[126.473 2000 1],[126.502 200 1],[128.035 6 2],[129.454 17 2],[129.673 14 2],[129.889 15 2],[129.896 18 2],[130.115 14 2],[130.332 16 2],[130.437 100 1],[130.559 50 1],[130.927 200 1],[130.946 20 1],[131.259 13 2],[134.147 8 2],[134.239 7 2],[134.339 6 2],[134.687 100 1],[134.854 100 1],[135.006 150 1],[135.052 20 1],[135.066 20 1],[135.264 100 1],[135.372 100 1],[136.16 8 2],[136.237 5 2],[136.347 7 2],[136.526 8 2],[136.705 7 2],[136.944 5 2],[137.303 5 2],[138.799 5 2],[139.376 15 3],[140.277 12 3],[140.907 10 1],[141.022 20 1],[141.697 10 1],[141.724 13 2],[143.369 6 2],[143.577 8 2],[143.617 7 2],[144.173 5 2],[144.72 6 2],[145.725 5 2],[147.465 15 1],[148.487 15 1],[148.502 90 1],[148.522 30 1],[148.551 100 1],[150.024 12 2],[150.119 10 2],[150.187 9 2],[150.606 6 2],[150.91 100 1],[151.207 50 1],[151.357 30 1],[151.691 60 1],[152.672 500 1],[153.345 1000 1],[156.245 10 1],[156.285 15 1],[156.377 10 1],[157.387 50 0],[157.482 50 0],[159.241 50 0],[159.455 150 0],[159.493 50 0],[159.795 30 0],[162.287 100 0],[162.571 30 0],[162.943 300 0],[162.992 200 0],[163.113 75 0],[163.398 50 0],[163.461 1 3],[165.335 30 0],[166.452 30 0],[166.637 50 0],[166.762 100 0],[166.852 100 0],[167.259 100 0],[167.332 7 2],[167.52 200 0],[168.268 30 0],[168.682 30 0],[168.929 50 0],[169.079 30 0],[169.329 50 0],[169.551 50 0],[169.62 200 0],[169.794 200 0],[170.042 50 0],[170.063 30 0],[170.286 30 0],[170.443 50 0],[171.083 10 1],[171.13 20 1],[172.253 6 3],[172.738 5 3],[174.388 30 0],[174.74 50 0],[175.311 30 0],[176.366 50 0],[176.503 40 0],[176.56 30 0],[176.606 30 0],[177.063 30 0],[177.092 100 0],[177.683 100 0],[178.323 50 0],[179.912 100 0],[180.8 150 1],[180.909 50 0],[181.407 500 0],[181.692 200 1],[181.745 10 1],[182.245 50 0],[183.651 200 0],[183.801 30 0],[184.115 100 0],[184.144 200 0],[184.255 9 2],[184.377 200 0],[184.551 300 0],[184.61 100 0],[184.747 400 0],[184.814 200 0],[184.874 100 0],[185.067 500 0],[185.179 30 0],[185.246 200 0],[185.315 50 0],[186.932 20 1],[187.023 15 1],[187.31 100 0],[187.484 500 0],[187.581 100 0],[188.185 200 0],[188.77 200 0],[189.325 200 0],[190.133 1000 0],[190.246 100 1],[190.466 50 0],[191.062 50 1],[194.167 50 1],[194.459 15 1],[194.933 10 1],[194.956 100 1],[195.497 100 0],[198.443 30 0],[199.185 50 0],[201.097 30 0],[205.483 50 0],[205.865 50 1],[205.901 50 1],[206.119 40 0],[206.552 30 0],[207.202 200 1],[207.27 200 1],[210.321 30 0],[211.463 30 0],[212.018 3 3],[212.412 100 0],[212.747 4 3],[213.399 10 1],[213.64 30 1],[213.656 50 1],[214.791 50 0],[217.689 5 2],[220.798 110 0],[221.089 115 0],[221.174 110 0],[221.667 120 0],[221.806 120 0],[221.891 50 0],[228.704 5 3],[229.103 35 0],[229.548 6 2],[229.687 10 2],[230.093 8 2],[230.306 55 0],[230.819 10 2],[232.856 2 3],[233.44 30 1],[233.461 30 1],[234.42 10 1],[234.954 10 1],[235.017 20 1],[235.309 20 1],[235.63 100 1],[235.718 30 1],[235.797 50 1],[236.02 10 1],[236.676 2 3],[236.697 30 1],[237.099 3 3],[237.426 20 1],[242.845 10 1],[243.515 300 0],[243.877 65 0],[244.336 65 0],[244.948 11 2],[245.212 70 0],[248.282 2 3],[248.32 6 2],[248.538 1 3],[250.69 425 0],[251.432 375 0],[251.6113 500 0],[251.751 7 3],[251.9202 350 0],[252.4108 425 0],[252.8509 450 0],[253.2381 110 0],[254.182 25 2],[254.609 10 2],[255.921 14 2],[256.3679 30 0],[256.8641 85 0],[257.7151 45 0],[263.1282 190 0],[264.079 11 2],[265.551 14 2],[267.219 1 3],[267.512 4 3],[267.525 4 3],[267.757 1 3],[268.221 10 1],[272.381 3 3],[281.711 9 2],[283.149 7 2],[283.962 5 2],[288.1579 1000 0],[288.751 10 1],[289.513 3 3],[290.428 300 1],[290.447 2 3],[290.569 500 1],[295.915 5 2],[297.0355 55 0],[297.152 1 3],[298.052 5 2],[298.7645 150 0],[300.6739 50 0],[301.309 5 2],[302.0004 75 0],[302.155 20 1],[303 100 1],[303.473 6 2],[303.729 8 2],[304.093 9 2],[304.157 20 1],[304.219 30 1],[304.369 100 1],[304.385 10 1],[304.393 7 2],[304.508 5 2],[304.577 10 1],[304.83 50 1],[305.318 150 1],[306.824 7 2],[308.624 25 2],[308.646 6 2],[309.342 20 2],[309.365 5 2],[309.683 16 2],[312.627 6 2],[314.737 7 2],[314.956 7 3],[316.161 8 2],[316.571 9 3],[318.513 16 2],[318.602 13 2],[318.897 150 1],[319.225 50 1],[319.309 150 1],[319.421 50 1],[319.469 50 1],[319.541 100 1],[319.65 14 2],[319.951 200 1],[320.249 20 1],[320.387 100 1],[321.003 200 1],[321.055 15 2],[321.466 75 1],[321.625 7 2],[321.799 15 1],[322.044 10 1],[322.301 20 1],[323.05 12 2],[323.395 14 2],[324.162 15 2],[324.419 1 3],[325.34 7 2],[325.374 5 2],[325.48 7 2],[325.866 12 2],[327.046 6 2],[327.626 10 2],[327.926 7 2],[333.314 300 1],[333.982 500 1],[348.691 15 2],[352.594 9 2],[356.967 8 2],[359.047 20 2],[362.254 8 2],[363.945 5 2],[364.512 6 2],[368.14 7 2],[368.215 5 2],[376.244 8 3],[377.315 6 3],[379.141 20 2],[379.611 25 2],[380.654 30 2],[384.246 7 2],[385.366 100 1],[385.602 500 1],[386.26 200 1],[390.5523 300 0],[392.447 20 2],[394.749 6 2],[395.574 10 1],[396.384 6 2],[397.746 10 1],[398.124 5 2],[399.177 15 1],[399.801 10 1],[403.139 1 3],[403.806 2 3],[407.545 20 1],[407.678 15 1],[408.885 10 3],[410.186 5 2],[410.242 8 2],[410.2936 70 0],[411.55 5 2],[411.61 9 3],[412.807 300 1],[413.089 500 1],[418.335 10 1],[419.072 100 1],[419.813 50 1],[421.241 7 3],[431.41 3 3],[432.818 5 3],[433.85 9 2],[434.14 8 2],[437.763 8 2],[440.373 2 3],[440.59 6 2],[440.672 8 2],[441.165 1 3],[449.405 6 2],[455.262 30 2],[455.4 8 2],[456.782 25 2],[457.476 20 2],[461.127 1 3],[461.966 7 2],[462.142 100 1],[462.172 150 1],[462.862 3 3],[463.124 9 3],[463.828 7 2],[465.432 10 3],[465.692 3 3],[466.587 8 2],[466.714 1 3],[467.33 2 3],[468.302 9 2],[468.38 7 2],[471.665 16 2],[473.052 7 2],[478.2991 50 0],[479.2212 35 0],[479.2324 80 0],[480.043 8 2],[481.333 15 2],[481.972 16 2],[482.897 18 2],[488.32 15 1],[490.699 20 1],[493.28 20 1],[494.745 1 3],[494.7607 30 0],[495.011 3 3],[500.6061 40 0],[504.103 1000 1],[505.598 1000 1],[509.142 10 2],[511.376 7 2],[511.412 8 2],[518.19 100 1],[518.525 100 1],[519.286 200 1],[519.726 5 2],[520.241 500 1],[529.519 30 1],[530.497 2 3],[530.949 1 3],[540.534 100 1],[541.724 15 1],[542.892 15 1],[543.289 15 1],[543.862 100 1],[544.726 20 1],[545.146 6 2],[545.449 15 1],[545.645 100 1],[546.643 500 1],[546.687 500 1],[546.921 100 1],[547.305 7 2],[549.323 40 0],[549.645 200 1],[551.7535 35 0],[554.074 100 1],[557.666 150 1],[562.2221 30 0],[563.297 100 1],[563.948 200 1],[564.5611 90 0],[566.066 150 1],[566.5554 80 0],[566.956 1000 1],[568.144 30 1],[568.4484 120 0],[568.881 300 1],[569.0425 100 0],[570.1105 90 0],[570.137 200 1],[570.46 7 2],[570.637 100 1],[570.8397 160 0],[571.629 8 2],[573.973 20 2],[574.7667 45 0],[575.3625 45 0],[575.422 45 0],[576.2977 45 0],[577.2145 70 0],[578.0384 70 0],[578.573 30 1],[579.3071 90 0],[579.49 30 1],[579.7859 100 0],[580.047 150 1],[580.674 200 1],[582.78 30 1],[584.613 50 1],[586.748 10 1],[586.84 300 1],[587.3764 40 0],[589.879 10 2],[591.522 150 1],[594.8545 200 0],[595.756 500 1],[597.893 500 1],[606.745 10 1],[608.006 20 1],[608.667 10 1],[612.5021 90 0],[613.1574 85 0],[613.185 90 0],[614.2487 100 0],[614.5015 100 0],[615.5134 160 0],[623.732 160 0],[623.8287 40 0],[624.3813 125 0],[624.4468 125 0],[625.4188 180 0],[631.446 7 2],[633.1954 45 0],[634.71 1000 1],[637.136 1000 1],[652.436 6 2],[652.6609 45 0],[652.7199 45 0],[655.5462 45 0],[666.052 50 1],[666.5 15 1],[666.756 5 3],[667.188 100 1],[669.938 20 1],[670.121 7 3],[671.704 50 1],[672.1853 100 0],[674.164 30 0],[675.028 20 1],[681.845 30 1],[682.982 50 1],[683.156 6 2],[684.8568 30 0],[685.165 7 2],[697.6523 80 0],[699.836 3 3],[700.3567 180 0],[700.5883 180 0],[701.728 30 0],[701.7646 90 0],[703.4903 250 0],[704.794 6 3],[706.841 4 3],[716.469 70 0],[716.5545 200 0],[718.489 70 0],[719.358 65 0],[719.39 30 0],[722.6206 100 0],[723.5326 100 0],[723.582 60 0],[725.0625 180 0],[727.5294 160 0],[728.281 40 0],[728.9173 400 0],[729.026 55 0],[737.3 35 0],[740.5774 375 0],[740.9082 200 0],[741.535 40 0],[741.5946 275 0],[742.3497 425 0],[742.46 85 0],[746.189 5 2],[746.262 8 2],[746.632 9 2],[761.236 12 2],[763.05 2 3],[765.456 4 3],[767.875 4 3],[768.0267 100 0],[771.879 5 3],[772.382 6 3],[772.564 2 3],[773.047 1 3],[774.271 40 0],[775.291 1 3],[780.0008 30 0],[784.88 400 1],[784.972 500 1],[784.9967 30 0],[791.8386 90 0],[793.2349 120 0],[794.4001 140 0],[797.0306 35 0],[803.5619 35 0],[809.3241 70 0],[810.286 9 2],[810.345 11 2],[819.043 7 2],[819.116 6 2],[819.168 8 2],[823.0642 35 0],[824.061 1 3],[826.257 9 2],[826.564 5 2],[826.932 8 2],[827.138 5 2],[827.194 6 2],[844.3982 40 0],[850.1547 40 0],[850.2221 60 0],[853.6165 40 0],[855.678 120 0],[864.8462 50 0],[872.8011 40 0],[874.2451 75 0],[875.2009 100 0],[879.0389 35 0],[895.725 2 3],[901.816 1 3],[941.272 100 1],[941.3506 100 0],[1037.1269 30 0],[1058.5141 120 0],[1060.3431 120 0],[1066.0975 120 0],[1069.4251 30 0],[1072.7408 30 0],[1074.9384 60 0],[1078.455 30 0],[1078.6856 80 0],[1082.7091 140 0],[1084.3854 60 0],[1086.879 30 0],[1086.9541 130 0],[1088.2802 30 0],[1088.5336 30 0],[1097.9308 80 0],[1098.2061 30 0],[1101.7965 80 0],[1118.76 13 0],[1128.984 12 0],[1161.109 12 0],[1198.419 370 0],[1199.157 220 0],[1203.151 440 0],[1210.353 150 0],[1227.068 120 0],[1317.69 11 0],[1588.839 190 0],[1596.004 40 0],[1606.003 95 0],[1609.48 20 0],[1616.371 60 0],[1621.568 11 0],[1638.155 16 0],[1668.077 29 0],[1732.7289 28 0],[1872.29 26 0],[1938.5939 15 0],[1943.2971 48 0],[1949.3381 13 0],[1972.25 110 0],[1992.8881 31 0],[2091.7131 12 0],[2135.424 21 0],[2206.2711 12 0]}{ALLx2000x1000x2000x30x15x20x0}{UVx2000x1000x2000x30x15x20x0}{VISx1000x425x1000x30x10x0x0}{IVx500x440x500x11x2x0x0}%
+\pgfspectra@elt@search{#1}{Si}{[11.786 20 4],[11.897 20 4],[45.782 4 3],[45.816 3 3],[51.512 2 3],[51.635 3 3],[56.661 8 2],[64.576 2 3],[65.222 6 2],[65.333 8 2],[67.348 5 2],[74.994 5 3],[80.007 5 2],[80.51 10 1],[81.505 7 3],[81.813 8 3],[82.052 20 1],[82.341 9 2],[84.372 20 1],[84.577 40 1],[85.014 10 1],[88.34 5 2],[88.972 100 1],[89.2 200 1],[89.941 10 1],[90.174 20 1],[91.301 10 1],[91.385 20 1],[92.981 20 1],[93.909 7 2],[96.795 9 2],[98.987 100 1],[99.268 200 1],[99.352 10 2],[99.479 13 2],[99.739 16 2],[100.537 7 2],[102.07 25 1],[102.369 50 1],[103.116 7 2],[103.392 8 2],[103.705 7 2],[105.705 30 1],[105.75 15 1],[106.663 8 3],[108.322 6 2],[110.837 14 2],[110.997 16 2],[111.323 18 2],[112.249 8 3],[112.744 20 1],[112.791 40 1],[112.834 10 3],[114.055 6 2],[114.158 7 2],[114.228 6 2],[114.431 8 2],[114.496 6 2],[114.511 8 2],[114.518 7 2],[115.5 6 2],[115.596 6 2],[115.81 7 2],[116.026 6 2],[116.158 8 2],[117.437 5 2],[117.443 6 2],[117.8 8 2],[119.042 100 1],[119.328 200 1],[119.45 250 1],[119.739 100 1],[120.651 30 2],[120.653 30 2],[120.752 9 2],[121.046 10 2],[121.612 10 1],[122.391 20 1],[122.425 20 1],[122.497 10 1],[122.681 50 1],[122.689 20 1],[122.699 40 1],[122.76 100 1],[122.844 10 1],[122.862 25 1],[122.875 150 1],[122.939 200 1],[123.543 7 2],[123.592 10 1],[124.674 100 1],[124.843 150 1],[125.009 100 1],[125.043 150 1],[125.116 200 1],[125.528 10 0],[125.649 40 0],[125.88 50 0],[126.042 1000 1],[126.473 2000 1],[126.502 200 1],[128.035 6 2],[129.454 17 2],[129.673 14 2],[129.889 15 2],[129.896 18 2],[130.115 14 2],[130.332 16 2],[130.437 100 1],[130.559 50 1],[130.927 200 1],[130.946 20 1],[131.259 13 2],[134.147 8 2],[134.239 7 2],[134.339 6 2],[134.687 100 1],[134.854 100 1],[135.006 150 1],[135.052 20 1],[135.066 20 1],[135.264 100 1],[135.372 100 1],[136.16 8 2],[136.237 5 2],[136.347 7 2],[136.526 8 2],[136.705 7 2],[136.944 5 2],[137.303 5 2],[138.799 5 2],[139.376 15 3],[140.277 12 3],[140.907 10 1],[141.022 20 1],[141.697 10 1],[141.724 13 2],[143.369 6 2],[143.577 8 2],[143.617 7 2],[144.173 5 2],[144.72 6 2],[145.725 5 2],[147.465 15 1],[148.487 15 1],[148.502 90 1],[148.522 30 1],[148.551 100 1],[150.024 12 2],[150.119 10 2],[150.187 9 2],[150.606 6 2],[150.91 100 1],[151.207 50 1],[151.357 30 1],[151.691 60 1],[152.672 500 1],[153.345 1000 1],[156.245 10 1],[156.285 15 1],[156.377 10 1],[157.387 50 0],[157.482 50 0],[159.241 50 0],[159.455 150 0],[159.493 50 0],[159.795 30 0],[162.287 100 0],[162.571 30 0],[162.943 300 0],[162.992 200 0],[163.113 75 0],[163.398 50 0],[163.461 1 3],[165.335 30 0],[166.452 30 0],[166.637 50 0],[166.762 100 0],[166.852 100 0],[167.259 100 0],[167.332 7 2],[167.52 200 0],[168.268 30 0],[168.682 30 0],[168.929 50 0],[169.079 30 0],[169.329 50 0],[169.551 50 0],[169.62 200 0],[169.794 200 0],[170.042 50 0],[170.063 30 0],[170.286 30 0],[170.443 50 0],[171.083 10 1],[171.13 20 1],[172.253 6 3],[172.738 5 3],[174.388 30 0],[174.74 50 0],[175.311 30 0],[176.366 50 0],[176.503 40 0],[176.56 30 0],[176.606 30 0],[177.063 30 0],[177.092 100 0],[177.683 100 0],[178.323 50 0],[179.912 100 0],[180.8 150 1],[180.909 50 0],[181.407 500 0],[181.692 200 1],[181.745 10 1],[182.245 50 0],[183.651 200 0],[183.801 30 0],[184.115 100 0],[184.144 200 0],[184.255 9 2],[184.377 200 0],[184.551 300 0],[184.61 100 0],[184.747 400 0],[184.814 200 0],[184.874 100 0],[185.067 500 0],[185.179 30 0],[185.246 200 0],[185.315 50 0],[186.932 20 1],[187.023 15 1],[187.31 100 0],[187.484 500 0],[187.581 100 0],[188.185 200 0],[188.77 200 0],[189.325 200 0],[190.133 1000 0],[190.246 100 1],[190.466 50 0],[191.062 50 1],[194.167 50 1],[194.459 15 1],[194.933 10 1],[194.956 100 1],[195.497 100 0],[198.443 30 0],[199.185 50 0],[201.097 30 0],[205.483 50 0],[205.865 50 1],[205.901 50 1],[206.119 40 0],[206.552 30 0],[207.202 200 1],[207.27 200 1],[210.321 30 0],[211.463 30 0],[212.018 3 3],[212.412 100 0],[212.747 4 3],[213.399 10 1],[213.64 30 1],[213.656 50 1],[214.791 50 0],[217.689 5 2],[220.798 110 0],[221.089 115 0],[221.174 110 0],[221.667 120 0],[221.806 120 0],[221.891 50 0],[228.704 5 3],[229.103 35 0],[229.548 6 2],[229.687 10 2],[230.093 8 2],[230.306 55 0],[230.819 10 2],[232.856 2 3],[233.44 30 1],[233.461 30 1],[234.42 10 1],[234.954 10 1],[235.017 20 1],[235.309 20 1],[235.63 100 1],[235.718 30 1],[235.797 50 1],[236.02 10 1],[236.676 2 3],[236.697 30 1],[237.099 3 3],[237.426 20 1],[242.845 10 1],[243.515 300 0],[243.877 65 0],[244.336 65 0],[244.948 11 2],[245.212 70 0],[248.282 2 3],[248.32 6 2],[248.538 1 3],[250.69 425 0],[251.432 375 0],[251.6113 500 0],[251.751 7 3],[251.9202 350 0],[252.4108 425 0],[252.8509 450 0],[253.2381 110 0],[254.182 25 2],[254.609 10 2],[255.921 14 2],[256.3679 30 0],[256.8641 85 0],[257.7151 45 0],[263.1282 190 0],[264.079 11 2],[265.551 14 2],[267.219 1 3],[267.512 4 3],[267.525 4 3],[267.757 1 3],[268.221 10 1],[272.381 3 3],[281.711 9 2],[283.149 7 2],[283.962 5 2],[288.1579 1000 0],[288.751 10 1],[289.513 3 3],[290.428 300 1],[290.447 2 3],[290.569 500 1],[295.915 5 2],[297.0355 55 0],[297.152 1 3],[298.052 5 2],[298.7645 150 0],[300.6739 50 0],[301.309 5 2],[302.0004 75 0],[302.155 20 1],[303 100 1],[303.473 6 2],[303.729 8 2],[304.093 9 2],[304.157 20 1],[304.219 30 1],[304.369 100 1],[304.385 10 1],[304.393 7 2],[304.508 5 2],[304.577 10 1],[304.83 50 1],[305.318 150 1],[306.824 7 2],[308.624 25 2],[308.646 6 2],[309.342 20 2],[309.365 5 2],[309.683 16 2],[312.627 6 2],[314.737 7 2],[314.956 7 3],[316.161 8 2],[316.571 9 3],[318.513 16 2],[318.602 13 2],[318.897 150 1],[319.225 50 1],[319.309 150 1],[319.421 50 1],[319.469 50 1],[319.541 100 1],[319.65 14 2],[319.951 200 1],[320.249 20 1],[320.387 100 1],[321.003 200 1],[321.055 15 2],[321.466 75 1],[321.625 7 2],[321.799 15 1],[322.044 10 1],[322.301 20 1],[323.05 12 2],[323.395 14 2],[324.162 15 2],[324.419 1 3],[325.34 7 2],[325.374 5 2],[325.48 7 2],[325.866 12 2],[327.046 6 2],[327.626 10 2],[327.926 7 2],[333.314 300 1],[333.982 500 1],[348.691 15 2],[352.594 9 2],[356.967 8 2],[359.047 20 2],[362.254 8 2],[363.945 5 2],[364.512 6 2],[368.14 7 2],[368.215 5 2],[376.244 8 3],[377.315 6 3],[379.141 20 2],[379.611 25 2],[380.654 30 2],[384.246 7 2],[385.366 100 1],[385.602 500 1],[386.26 200 1],[390.5523 300 0],[392.447 20 2],[394.749 6 2],[395.574 10 1],[396.384 6 2],[397.746 10 1],[398.124 5 2],[399.177 15 1],[399.801 10 1],[403.139 1 3],[403.806 2 3],[407.545 20 1],[407.678 15 1],[408.885 10 3],[410.186 5 2],[410.242 8 2],[410.2936 70 0],[411.55 5 2],[411.61 9 3],[412.807 300 1],[413.089 500 1],[418.335 10 1],[419.072 100 1],[419.813 50 1],[421.241 7 3],[431.41 3 3],[432.818 5 3],[433.85 9 2],[434.14 8 2],[437.763 8 2],[440.373 2 3],[440.59 6 2],[440.672 8 2],[441.165 1 3],[449.405 6 2],[455.262 30 2],[455.4 8 2],[456.782 25 2],[457.476 20 2],[461.127 1 3],[461.966 7 2],[462.142 100 1],[462.172 150 1],[462.862 3 3],[463.124 9 3],[463.828 7 2],[465.432 10 3],[465.692 3 3],[466.587 8 2],[466.714 1 3],[467.33 2 3],[468.302 9 2],[468.38 7 2],[471.665 16 2],[473.052 7 2],[478.2991 50 0],[479.2212 35 0],[479.2324 80 0],[480.043 8 2],[481.333 15 2],[481.972 16 2],[482.897 18 2],[488.32 15 1],[490.699 20 1],[493.28 20 1],[494.745 1 3],[494.7607 30 0],[495.011 3 3],[500.6061 40 0],[504.103 1000 1],[505.598 1000 1],[509.142 10 2],[511.376 7 2],[511.412 8 2],[518.19 100 1],[518.525 100 1],[519.286 200 1],[519.726 5 2],[520.241 500 1],[529.519 30 1],[530.497 2 3],[530.949 1 3],[540.534 100 1],[541.724 15 1],[542.892 15 1],[543.289 15 1],[543.862 100 1],[544.726 20 1],[545.146 6 2],[545.449 15 1],[545.645 100 1],[546.643 500 1],[546.687 500 1],[546.921 100 1],[547.305 7 2],[549.323 40 0],[549.645 200 1],[551.7535 35 0],[554.074 100 1],[557.666 150 1],[562.2221 30 0],[563.297 100 1],[563.948 200 1],[564.5611 90 0],[566.066 150 1],[566.5554 80 0],[566.956 1000 1],[568.144 30 1],[568.4484 120 0],[568.881 300 1],[569.0425 100 0],[570.1105 90 0],[570.137 200 1],[570.46 7 2],[570.637 100 1],[570.8397 160 0],[571.629 8 2],[573.973 20 2],[574.7667 45 0],[575.3625 45 0],[575.422 45 0],[576.2977 45 0],[577.2145 70 0],[578.0384 70 0],[578.573 30 1],[579.3071 90 0],[579.49 30 1],[579.7859 100 0],[580.047 150 1],[580.674 200 1],[582.78 30 1],[584.613 50 1],[586.748 10 1],[586.84 300 1],[587.3764 40 0],[589.879 10 2],[591.522 150 1],[594.8545 200 0],[595.756 500 1],[597.893 500 1],[606.745 10 1],[608.006 20 1],[608.667 10 1],[612.5021 90 0],[613.1574 85 0],[613.185 90 0],[614.2487 100 0],[614.5015 100 0],[615.5134 160 0],[623.732 160 0],[623.8287 40 0],[624.3813 125 0],[624.4468 125 0],[625.4188 180 0],[631.446 7 2],[633.1954 45 0],[634.71 1000 1],[637.136 1000 1],[652.436 6 2],[652.6609 45 0],[652.7199 45 0],[655.5462 45 0],[666.052 50 1],[666.5 15 1],[666.756 5 3],[667.188 100 1],[669.938 20 1],[670.121 7 3],[671.704 50 1],[672.1853 100 0],[674.164 30 0],[675.028 20 1],[681.845 30 1],[682.982 50 1],[683.156 6 2],[684.8568 30 0],[685.165 7 2],[697.6523 80 0],[699.836 3 3],[700.3567 180 0],[700.5883 180 0],[701.728 30 0],[701.7646 90 0],[703.4903 250 0],[704.794 6 3],[706.841 4 3],[716.469 70 0],[716.5545 200 0],[718.489 70 0],[719.358 65 0],[719.39 30 0],[722.6206 100 0],[723.5326 100 0],[723.582 60 0],[725.0625 180 0],[727.5294 160 0],[728.281 40 0],[728.9173 400 0],[729.026 55 0],[737.3 35 0],[740.5774 375 0],[740.9082 200 0],[741.535 40 0],[741.5946 275 0],[742.3497 425 0],[742.46 85 0],[746.189 5 2],[746.262 8 2],[746.632 9 2],[761.236 12 2],[763.05 2 3],[765.456 4 3],[767.875 4 3],[768.0267 100 0],[771.879 5 3],[772.382 6 3],[772.564 2 3],[773.047 1 3],[774.271 40 0],[775.291 1 3],[780.0008 30 0],[784.88 400 1],[784.972 500 1],[784.9967 30 0],[791.8386 90 0],[793.2349 120 0],[794.4001 140 0],[797.0306 35 0],[803.5619 35 0],[809.3241 70 0],[810.286 9 2],[810.345 11 2],[819.043 7 2],[819.116 6 2],[819.168 8 2],[823.0642 35 0],[824.061 1 3],[826.257 9 2],[826.564 5 2],[826.932 8 2],[827.138 5 2],[827.194 6 2],[844.3982 40 0],[850.1547 40 0],[850.2221 60 0],[853.6165 40 0],[855.678 120 0],[864.8462 50 0],[872.8011 40 0],[874.2451 75 0],[875.2009 100 0],[879.0389 35 0],[895.725 2 3],[901.816 1 3],[941.272 100 1],[941.3506 100 0],[1037.1269 30 0],[1058.5141 120 0],[1060.3431 120 0],[1066.0975 120 0],[1069.4251 30 0],[1072.7408 30 0],[1074.9384 60 0],[1078.455 30 0],[1078.6856 80 0],[1082.7091 140 0],[1084.3854 60 0],[1086.879 30 0],[1086.9541 130 0],[1088.2802 30 0],[1088.5336 30 0],[1097.9308 80 0],[1098.2061 30 0],[1101.7965 80 0],[1118.76 13 0],[1128.984 12 0],[1161.109 12 0],[1198.419 370 0],[1199.157 220 0],[1203.151 440 0],[1210.353 150 0],[1227.068 120 0],[1317.69 11 0],[1588.839 190 0],[1596.004 40 0],[1606.003 95 0],[1609.48 20 0],[1616.371 60 0],[1621.568 11 0],[1638.155 16 0],[1668.077 29 0],[1732.7289 28 0],[1872.29 26 0],[1938.5939 15 0],[1943.2971 48 0],[1949.3381 13 0],[1972.25 110 0],[1992.8881 31 0],[2091.7131 12 0],[2135.424 21 0],[2206.2711 12 0]}{ALLx2000x1000x2000x30x15x20x0}{UVx2000x1000x2000x30x15x20x0}{VISx1000x425x1000x30x10x0x0}{IVx500x440x500x11x2x0x0}%[7.861 1 4],[7.89 1 4],[8.081 2 4],[8.111 2 4],[8.518 10 4],[8.558 6 4],[9.045 4 4],[9.085 4 4],[9.644 15 4],[9.714 10 4],[9.821 2 4],
\pgfspectra@elt@search{#1}{P}{[25.559 80 4],[25.567 50 4],[28.2301 90 3],[30.4996 90 3],[31.058 110 4],[31.134 150 4],[32.847 300 4],[32.878 250 4],[34.723 150 4],[34.82 200 4],[35.9293 120 3],[35.9899 150 3],[36.1514 120 3],[36.1629 150 3],[37.1299 120 3],[37.1504 150 3],[37.2001 200 3],[37.856 110 4],[38.8318 500 3],[38.95 250 4],[39.07 300 4],[41.003 150 4],[41.4604 120 3],[41.4999 200 3],[41.5805 250 3],[44.4245 250 3],[44.5158 300 3],[47.1146 90 2],[47.56 375 4],[48.4278 90 2],[49.818 120 2],[53.463 110 4],[53.499 80 4],[54.257 520 4],[54.492 600 4],[56.8038 250 3],[56.9853 200 2],[58.1831 200 2],[62.9008 350 3],[62.9914 400 3],[63.1779 500 3],[64.8482 350 3],[67.39 450 4],[75.651 300 3],[77.6353 300 3],[81.024 10 1],[82.3179 650 3],[82.473 700 3],[82.7932 800 3],[84.4646 200 2],[84.5038 150 2],[84.5664 250 2],[84.7019 250 3],[84.7669 300 2],[84.8016 200 2],[84.8465 120 2],[84.8639 150 2],[84.9799 350 3],[85.0392 200 3],[85.2686 250 2],[85.5624 350 2],[85.9406 200 2],[85.9652 500 2],[85.9729 250 2],[86.544 10 1],[86.545 450 4],[87.139 600 4],[87.7476 700 3],[91.3971 300 2],[91.712 300 2],[91.8665 350 2],[92.1849 250 2],[95.0655 1000 3],[99.762 250 4],[99.7999 200 2],[100.038 150 4],[100.3598 250 2],[102.5563 570 3],[102.8096 500 3],[103.0517 570 3],[103.3111 500 3],[103.5517 500 3],[111.798 900 4],[111.8551 570 3],[112.801 700 4],[120.6422 200 3],[124.982 20 1],[130.187 20 1],[130.447 20 1],[130.468 15 1],[130.548 35 1],[130.987 25 1],[131.07 60 1],[133.4808 500 2],[133.5705 200 3],[134.4327 650 2],[134.4845 300 2],[136.6695 500 3],[137.2674 400 3],[137.349 20 0],[137.706 20 0],[137.7282 350 3],[137.793 20 0],[137.94 25 0],[137.962 150 4],[138.0463 250 2],[138.1089 150 2],[138.147 25 0],[138.505 250 4],[143.013 50 0],[144.783 375 4],[145.289 30 1],[148.4507 500 3],[148.7788 400 3],[148.9098 300 3],[149.136 50 0],[149.299 40 0],[150.2228 350 2],[150.4663 250 2],[153.251 80 1],[153.59 120 1],[153.639 80 1],[154.229 120 1],[154.843 60 0],[161.05 450 4],[161.8632 150 2],[161.8907 200 2],[167.107 70 0],[167.168 180 0],[167.248 90 0],[167.461 230 0],[167.971 300 0],[168.599 120 0],[169.406 100 0],[170.641 60 0],[177.499 250 0],[178.287 200 0],[178.768 180 0],[184.719 100 0],[185.122 80 0],[185.891 150 0],[185.943 150 0],[186.2762 250 3],[186.2893 120 3],[186.358 200 3],[188.8523 650 3],[191.0183 200 3],[198.5682 120 3],[198.5851 150 3],[198.6114 200 3],[198.7022 150 3],[202.348 100 0],[203.347 150 0],[213.547 100 0],[213.618 200 0],[214.914 200 0],[215.294 100 0],[215.408 150 0],[218.029 200 4],[218.642 150 4],[242.44 375 4],[244.093 450 4],[244.124 200 4],[247.7823 200 3],[247.807 150 3],[247.8256 250 3],[248.419 100 1],[253.399 500 0],[253.561 700 0],[255.325 600 0],[255.49 500 0],[260.5506 250 3],[260.606 150 1],[261.1147 200 2],[262.618 100 1],[263.2713 300 2],[263.676 90 1],[264.4295 400 3],[268.0133 200 2],[272.4764 300 3],[272.877 400 3],[272.912 200 3],[273.9309 500 3],[273.9872 250 3],[274.0223 200 3],[289.5241 250 2],[296.1 300 4],[296.1242 200 3],[297.855 450 4],[317.509 700 4],[318.6186 250 2],[320.404 520 4],[321.9307 300 2],[323.3536 150 2],[323.3602 400 2],[330.892 150 1],[334.7736 650 3],[336.4467 570 3],[337.1122 400 3],[341.3543 200 3],[341.934 125 1],[342.5 100 1],[355.6546 200 2],[357.7526 200 2],[373.3393 200 3],[390.4812 200 2],[391.4314 250 2],[395.7641 300 2],[397.8307 350 2],[405.744 200 2],[405.9312 400 2],[408.0084 300 2],[408.318 150 4],[409.495 110 4],[417.848 100 1],[422.2195 500 2],[424.672 350 2],[424.9656 300 3],[428.86 200 1],[438.535 200 1],[442.071 400 1],[442.8171 200 2],[445.246 100 1],[446.3 150 1],[446.3668 200 2],[446.798 120 1],[447.526 200 1],[447.9776 250 2],[449.924 200 1],[453.081 120 1],[454.0288 250 3],[454.1112 250 3],[454.8056 150 3],[454.8449 200 3],[455.483 120 1],[455.807 120 1],[458.171 120 1],[458.804 500 1],[458.986 500 1],[460.208 600 1],[462.67 300 1],[465.831 300 1],[486.442 200 1],[492.72 150 1],[494.353 500 1],[495.439 300 1],[496.971 300 1],[515.672 110 4],[519.141 150 1],[523.5499 150 3],[525.352 300 1],[529.613 400 1],[531.607 250 1],[534.475 300 1],[537.82 250 1],[538.688 300 1],[540.972 200 1],[542.591 400 1],[545.074 400 1],[545.831 100 0],[546.12 125 1],[547.775 200 0],[548.355 200 1],[549.973 200 1],[550.719 200 1],[554.114 200 1],[558.327 200 1],[558.834 250 1],[572.771 100 1],[598.9774 150 3],[602.418 500 1],[603.404 400 1],[604.312 500 1],[605.55 250 1],[605.786 100 1],[608.3409 150 2],[608.782 350 1],[609.768 150 0],[614.2605 150 3],[616.559 350 1],[619.901 180 0],[623.229 100 1],[636.727 200 1],[640.9204 150 2],[643.532 250 1],[643.631 130 1],[645.999 600 1],[648.444 150 2],[648.6381 150 2],[650.346 600 1],[650.797 600 1],[671.328 150 1],[671.3939 150 3],[671.5906 120 3],[671.742 120 0],[699.269 150 2],[716.545 100 0],[717.512 150 0],[717.666 120 0],[744.3657 200 3],[750.576 100 0],[784.563 250 1],[811.3528 150 2],[827.807 120 0],[836.784 150 0],[853.146 100 0],[861.385 100 0],[863.762 150 0],[874.154 250 0],[887.217 50 0],[952.578 30 0],[959.354 25 0],[973.474 20 0],[975.073 25 0],[979.679 50 0],[1008.422 25 0],[1052.945 6 0],[1058.152 8 0]}{ALLx1000x700x600x650x1000x900x0}{UVx1000x700x150x650x1000x900x0}{VISx600x200x600x500x300x150x0}{IVx250x250x250x150x0x0x0}%
\pgfspectra@elt@search{#1}{S}{[43.74 5 4],[43.82 5 4],[43.96 5 4],[51.93 20 3],[52.01 20 3],[52.08 40 3],[52.2 20 3],[52.25 20 3],[55.12 20 3],[65.25 40 3],[65.3 40 3],[65.36 70 3],[65.4 40 3],[65.56 70 3],[65.59 20 3],[65.73 110 3],[65.83 40 4],[65.98 70 4],[66.09 40 3],[66.14 160 3],[66.32 110 4],[66.37 40 3],[66.48 40 3],[66.61 70 3],[67.62 5 4],[67.73 5 4],[67.81 20 4],[68.03 40 4],[68.09 110 4],[68.16 40 4],[68.62 5 4],[68.69 5 4],[68.98 5 4],[69.17 5 4],[69.35 20 4],[72.95 70 2],[73.242 110 2],[73.52 70 2],[73.85 70 2],[74.49 110 3],[74.84 110 3],[75.02 110 3],[75.38 110 3],[78.65 285 4],[78.9 70 2],[79.67 70 2],[79.83 40 3],[80.05 70 3],[80.4 70 3],[80.97 70 3],[81.6 110 3],[82.49 70 2],[83.63 70 2],[84.92 160 4],[85.22 110 4],[85.48 220 4],[85.79 110 4],[86.05 110 4],[88.36 20 4],[88.45 20 4],[88.58 5 4],[90.09 20 4],[90.28 5 4],[90.59 20 4],[90.69 40 1],[91.05 40 1],[91.27 40 1],[93.74 40 1],[93.77 40 1],[99.6 20 1],[100.05 20 1],[101.44 20 1],[101.95 20 1],[106.27 160 3],[107.3 160 3],[107.35 70 3],[107.71 285 2],[109.66 20 1],[110.23 40 1],[110.84 20 3],[111.09 20 3],[113.1 20 1],[113.16 20 1],[119.4 70 2],[120.1 70 2],[123.41 40 1],[125.05 40 1],[125.38 110 1],[125.95 110 1],[127.0782 275 0],[127.7216 250 0],[129.5653 280 0],[130.2337 275 0],[130.2863 235 0],[130.311 235 0],[130.343 245 0],[130.5883 260 0],[131.0194 265 0],[131.6542 355 0],[131.6618 290 0],[132.3515 375 0],[132.6643 355 0],[138.1552 775 0],[138.551 710 0],[138.8435 960 0],[138.9154 640 0],[139.2588 775 0],[139.6112 1000 0],[140.9337 300 0],[142.503 510 0],[143.328 425 0],[143.6968 300 0],[144.8229 300 0],[147.2972 425 0],[147.3995 550 0],[147.438 300 0],[148.1665 355 0],[148.3039 485 0],[148.3233 300 0],[148.5622 330 0],[148.715 390 0],[162.4 20 3],[162.92 20 3],[166.6688 680 0],[168.753 640 0],[180.7311 710 0],[182.0343 680 0],[182.6245 640 0],[190.0286 710 0],[191.4698 550 0],[238.7 20 3],[239.89 40 3],[246.05 110 2],[248.96 110 2],[249.62 160 2],[249.91 160 2],[250.82 220 2],[262.91 20 1],[263.69 70 2],[266.54 220 2],[267 40 1],[268.05 70 2],[269.18 110 2],[270.28 110 2],[271.89 220 2],[272.14 110 2],[272.68 220 2],[273.11 220 2],[274.1 110 2],[275.69 285 2],[277.52 110 2],[278.55 160 2],[279.74 70 2],[284.77 40 1],[285.6 70 2],[286.35 110 2],[290.43 160 2],[296.48 70 2],[298.6 160 2],[309.75 110 3],[311.77 40 3],[323.42 70 2],[332.49 70 2],[349.73 110 2],[363.2 160 2],[366.2 70 2],[370.94 110 2],[371.78 160 2],[383.83 160 2],[386.76 285 0],[390.2 285 0],[392.86 160 2],[393.33 360 1],[412.08 450 0],[414.23 280 1],[414.51 360 1],[415.31 450 1],[416.27 450 1],[425.36 360 2],[428.5 110 2],[433.27 70 2],[469.41 450 0],[469.54 285 0],[469.62 160 0],[471.62 280 1],[481.55 450 1],[492.41 360 1],[492.53 450 1],[499.35 285 0],[542.86 360 1],[543.28 650 1],[545.38 1000 1],[547.36 1000 1],[550.97 1000 1],[556.49 280 1],[560.61 1000 1],[564 450 1],[564.03 450 1],[564.7 280 1],[565.99 650 1],[566.47 450 1],[570.61 160 0],[581.92 450 1],[605.27 450 0],[628.64 280 1],[628.71 450 1],[630.55 450 1],[631.27 450 1],[638.49 280 1],[639.73 280 1],[639.8 280 1],[641.37 360 1],[674.36 160 0],[674.88 285 0],[675.72 450 0],[757.9 450 0],[762.98 450 0],[768.61 285 0],[769.67 450 0],[792.4 1000 0],[792.88 160 0],[793.03 285 0],[793.17 450 0],[796.74 450 0],[796.74 450 1],[831.47 450 0],[831.47 450 1],[858.56 450 0],[868.05 285 0],[869.47 450 0],[887.45 360 0],[888.25 110 0],[888.42 220 0],[903.59 160 0],[921.29 450 0],[922.81 450 0],[923.75 450 0],[941.35 285 0],[942.19 285 0],[943.71 285 0],[964.99 650 0],[967.23 450 0],[968.08 450 0],[969.37 450 0],[969.73 285 0],[973.97 285 0],[974.19 110 0],[993.23 285 0],[994.98 285 0],[995.89 285 0],[1045.55 285 0],[1045.68 70 0],[1045.95 285 0]}{ALLx1000x1000x1000x360x160x285x0}{UVx1000x1000x110x285x160x285x0}{VISx1000x450x1000x360x0x0x0}{IVx1000x1000x450x0x0x0x0}%
\pgfspectra@elt@search{#1}{Cl}{[28.733 30 4],[31.962 30 3],[33.184 20 3],[37.378 30 4],[39.015 40 4],[39.243 50 4],[40.627 10 2],[41.137 40 2],[41.181 40 2],[43.783 40 3],[46.486 40 3],[48.617 80 3],[53.473 80 3],[53.567 70 3],[53.615 60 3],[53.653 30 4],[53.701 40 4],[53.746 30 4],[53.761 90 3],[53.803 50 4],[53.812 60 3],[53.868 40 4],[54.223 80 4],[54.23 60 4],[54.287 40 4],[54.511 100 4],[54.633 60 4],[54.763 100 4],[54.922 50 3],[55.002 40 3],[55.202 70 3],[55.33 60 3],[55.462 70 3],[55.623 60 2],[55.661 70 2],[55.712 70 2],[55.9305 35 1],[56.153 70 2],[56.168 70 2],[56.174 70 2],[57.1904 40 1],[57.4406 80 1],[58.624 50 1],[60.15 50 3],[60.459 50 3],[60.635 50 2],[60.89 40 3],[61.207 40 3],[61.8057 70 1],[61.9982 60 1],[62.0298 80 1],[62.128 40 2],[62.6735 70 1],[63.319 40 4],[63.532 40 4],[63.5881 80 1],[63.6626 100 1],[65.0894 100 1],[65.37 40 3],[65.9811 100 1],[66.1841 130 1],[66.3074 200 1],[67.038 30 2],[67.313 30 2],[68.192 40 4],[68.2053 150 1],[68.317 40 4],[68.7656 150 1],[68.893 40 4],[69.3594 150 1],[72.5271 200 1],[72.8951 250 1],[74.521 40 3],[77.7562 200 1],[78.758 500 1],[78.874 500 1],[79.3342 500 1],[83.143 40 3],[83.484 50 3],[83.497 50 3],[83.9297 600 1],[83.9599 800 1],[84.081 40 3],[84.093 60 3],[84.141 700 1],[85.1691 500 1],[88.313 40 4],[88.8026 200 1],[89.3549 200 1],[89.434 40 4],[89.491 10 4],[93.628 10 2],[96.1499 200 1],[96.992 3 0],[97.321 50 3],[97.756 60 3],[97.79 40 3],[97.8284 4 0],[98.495 70 3],[98.575 40 3],[99.8372 2.5 0],[99.8432 2.5 0],[100.2346 7.5 0],[100.528 50 2],[100.878 60 2],[101.3664 15 0],[101.502 70 2],[102.5553 9 0],[106.3831 600 1],[106.7945 300 1],[107.1036 900 1],[107.1767 600 1],[107.523 500 1],[107.908 500 1],[108.4667 20 0],[108.5171 20 0],[108.5304 25 0],[108.806 40 0],[109.0271 35 0],[109.0982 25 0],[109.2437 25 0],[109.4769 40 0],[109.5148 35 0],[109.5662 35 0],[109.5797 40 0],[109.681 25 0],[109.7369 30 0],[109.8068 20 0],[109.9523 20 0],[110.7528 50 0],[113.9214 80 1],[116.7148 80 0],[117.9293 300 0],[118.8774 120 0],[120.1353 90 0],[133.5726 300 0],[134.724 1000 0],[135.1657 500 0],[136.3447 1200 0],[137.3116 250 0],[137.9528 2000 0],[138.9693 2500 0],[138.9957 2000 0],[139.6527 1200 0],[144.147 50 1],[152.8569 50 1],[153.721 30 3],[153.93 20 3],[154.2942 50 1],[154.519 20 3],[154.915 20 3],[155.8144 50 1],[156.505 50 1],[162.286 20 3],[182.25 60 2],[182.84 50 2],[185.7488 50 1],[190.161 50 2],[198.361 50 2],[199.737 45 1],[200.684 40 2],[203.2116 45 1],[208.8583 35 1],[209.1458 35 1],[225.307 70 2],[226.895 50 2],[227.834 50 2],[228.393 70 2],[232.35 60 2],[233.645 50 2],[234.064 60 2],[235.967 60 2],[237.037 60 2],[241.642 70 2],[242.779 17 1],[243.407 36 1],[244.714 60 2],[244.858 60 2],[248.691 50 2],[249.853 34 1],[250.274 47 1],[253.248 50 2],[254.696 26 1],[254.988 50 1],[256.484 46 1],[258.067 60 2],[260.331 32 1],[260.359 50 2],[263.267 50 2],[263.318 50 2],[265.872 95 1],[266.554 60 2],[267.695 75 1],[268.804 120 1],[270.136 40 3],[271.037 70 2],[272.403 50 3],[275.123 50 3],[277.064 40 3],[278.247 70 3],[283.54 40 3],[291.205 41 1],[296.556 60 2],[299.665 95 1],[300.606 50 1],[305.796 95 1],[306.313 50 3],[307.132 130 1],[307.668 60 3],[309.219 140 1],[310.446 60 2],[312.372 120 1],[313.934 80 2],[316.787 20 3],[319.145 90 2],[328.98 70 2],[331.543 190 1],[332.057 70 2],[332.906 80 2],[332.91 120 1],[334.042 90 2],[335.335 250 1],[339.289 80 2],[339.345 80 2],[353.003 90 2],[356.068 80 2],[360.21 90 2],[361.285 80 2],[362.269 70 2],[365.695 70 2],[367.028 70 2],[368.205 70 2],[370.545 60 2],[370.734 60 2],[372.045 80 2],[372.654 2 0],[374.881 80 2],[374.996 120 1],[377.935 50 2],[378.117 100 1],[379.876 150 1],[380.518 190 1],[380.946 130 1],[382.02 170 1],[382.759 280 1],[383.335 450 1],[384.32 250 1],[384.537 310 1],[384.565 390 1],[384.58 150 1],[385.099 1000 1],[385.137 790 1],[385.165 120 1],[386.083 2500 1],[386.099 440 1],[386.137 100 1],[391.387 150 1],[391.663 110 1],[392.587 50 2],[394.482 2 0],[399.15 70 2],[401.85 60 2],[405.907 60 2],[410.423 50 2],[410.479 2 0],[410.683 50 2],[413.25 1000 1],[420.967 6.5 0],[422.642 5 0],[426.458 6 0],[436.327 10 0],[436.95 10 0],[437.091 40 2],[437.293 500 1],[437.99 10 0],[438.975 10 0],[439.04 9 0],[440.303 9 0],[443.849 10 0],[447.53 9 0],[448.991 150 1],[452.619 10 0],[460.098 8 0],[460.821 50 2],[462.3938 4 0],[465.404 5 0],[466.1208 8 0],[469.1523 4.5 0],[470.314 30 2],[472.1255 4 0],[474.0729 4.5 0],[476.865 430 1],[478.132 1300 1],[479.455 9900 1],[481.006 2900 1],[481.947 1600 1],[486.375 10 2],[489.677 8100 1],[490.478 4700 1],[491.773 2600 1],[497.164 1 2],[499.548 1000 1],[507.826 2600 1],[509.9789 3 0],[521.794 5600 1],[522.136 2300 1],[539.212 1500 1],[542.323 9900 1],[542.351 1000 1],[544.337 1900 1],[544.421 1000 1],[545.702 560 1],[553.2162 4 0],[579.6305 5 0],[579.9914 4.5 0],[585.6742 3 0],[594.858 10 0],[601.9812 5 0],[608.261 3.5 0],[609.469 190 1],[611.443 16 0],[614.0245 20 0],[619.4757 16 0],[639.866 16 0],[643.4833 15 0],[653.143 15 0],[666.167 140 1],[667.843 15 0],[668.602 130 1],[671.341 120 1],[684.029 15 0],[693.2903 30 0],[698.1886 30 0],[708.6814 60 0],[725.662 750 0],[741.411 500 0],[746.237 55 0],[748.947 55 0],[749.2118 70 0],[754.7072 1100 0],[767.242 230 0],[770.2828 45 0],[771.7581 700 0],[774.497 1000 0],[776.916 220 0],[777.109 65 0],[782.136 220 0],[783.075 170 0],[787.822 300 0],[789.334 22 0],[789.931 230 0],[791.508 180 0],[792.4645 300 0],[793.389 210 0],[793.5012 170 0],[795.252 65 0],[797.472 150 0],[797.697 130 0],[798.06 60 0],[799.785 290 0],[801.561 220 0],[802.333 110 0],[805.107 40 0],[808.451 170 0],[808.556 220 0],[808.667 300 0],[808.773 130 0],[809.467 25 0],[819.442 250 0],[819.913 220 0],[820.021 220 0],[820.378 80 0],[821.204 1800 0],[822.045 300 0],[822.174 2000 0],[833.331 1800 0],[836.071 100 1],[836.184 56 1],[837.594 9990 0],[838.267 18 1],[839.202 10 1],[840.6199 40 0],[842.825 1500 0],[846.734 220 0],[855.044 220 0],[857.524 2000 0],[857.802 75 0],[858.597 7500 0],[862.854 45 0],[864.171 30 0],[868.626 350 0],[891.292 220 0],[894.806 300 0],[903.8982 200 0],[904.543 250 0],[906.9656 100 0],[907.317 200 0],[912.115 750 0],[919.1731 300 0],[919.7596 50 0],[928.886 400 0],[939.3862 150 0],[945.21 350 0],[948.6964 50 0],[958.4801 100 0],[959.222 350 0],[963.2509 25 0],[970.2439 100 0],[974.4426 25 0],[980.7057 20 0],[987.597 40 0],[1039.2549 33.1 0],[1043.283 3.8 1],[1050.662 1 1],[1050.912 1.4 1],[1051.246 1.9 1],[1051.417 2.5 1],[1080.147 0.9 1],[1088.542 0.5 1],[1095.571 0.1 1],[1112.305 30 0],[1139.262 23.1 0],[1140.969 26.9 0],[1143.633 100 0],[1172.056 18 0],[1186.676 19.5 0],[1202.17 17.2 0],[1324.38 35 0],[1329.6 31 0],[1334.68 55 0],[1382.17 52.5 0],[1436.97 14.8 0],[1493.17 29.4 0],[1510.8 26.9 0],[1546.51 38.1 0],[1546.76 16.9 0],[1552.03 109.4 0],[1573.01 148.7 0],[1581.84 19.3 0],[1586.97 278 0],[1588.33 27.7 0],[1592.89 34.2 0],[1596 73.5 0],[1597.05 28.3 0],[1607.76 12.9 0],[1619.85 25.9 0],[1937.0301 22.7 0],[1975.5301 71.7 0],[1976.6801 18.5 0],[2019.94 22.7 0],[2037.01 8.5 0],[2447 10 0]}{ALLx9990x9990x9900x90x90x100x0}{UVx2500x2500x900x90x90x100x0}{VISx9900x1100x9900x70x0x0x0}{IVx9990x9990x100x0x0x0x0}%
@@ -66,7 +66,7 @@
\pgfspectra@elt@search{#1}{As}{[60.07 25 4],[61.6 40 4],[71.55 120 4],[73.48 150 4],[73.72 60 4],[76.124 165 1],[80.283 165 1],[84.99 185 2],[86.63 185 2],[87.17 510 2],[88.9 325 2],[92.75 325 2],[93.72 325 2],[95.36 325 2],[96.38 325 2],[98.77 250 4],[102.196 340 1],[102.95 250 4],[105.16 40 4],[105.66 60 4],[108.235 340 1],[113.94 500 1],[114.931 615 1],[117.22 120 2],[118.151 555 1],[118.987 555 1],[119.638 615 1],[119.656 615 1],[120.744 340 1],[120.93 185 2],[121.117 800 1],[121.81 800 1],[122.315 340 1],[124.131 760 1],[124.308 965 1],[124.567 870 1],[125.858 800 1],[126.377 965 1],[126.634 800 1],[126.759 800 1],[128.099 715 1],[128.754 715 1],[130.57 715 1],[130.774 340 1],[133.315 760 1],[134.155 965 1],[135.593 760 1],[136.977 965 1],[137.365 800 1],[137.507 1000 1],[137.578 760 1],[139.464 800 1],[140.031 800 1],[144.859 500 1],[155.888 500 1],[157.099 500 1],[159.36 100 0],[166.055 500 1],[175.86 100 0],[180.615 170 0],[186.034 340 1],[189.042 1000 0],[191.294 500 1],[193.759 800 0],[197.262 585 0],[199.035 170 0],[199.113 100 0],[199.543 100 0],[200.334 230 0],[200.919 100 0],[201.332 100 0],[211.299 100 0],[214.408 100 0],[216.552 135 0],[225.31 150 3],[226.32 200 3],[228.812 350 0],[230.1 200 3],[234.984 350 0],[237.077 100 0],[238.118 135 0],[241.75 250 3],[244.61 150 3],[245.4 250 3],[245.653 170 0],[246.14 200 3],[260.2 340 1],[278.022 170 0],[283.0359 300 1],[283.1164 300 1],[286.044 100 0],[288.4406 300 1],[292.63 80 2],[295.9572 615 1],[298.2 185 2],[300.3819 300 1],[310.88 150 3],[311.6516 300 1],[384.26 340 1],[392.26 325 2],[403.72 185 2],[419.0082 715 1],[419.74 615 1],[424.2982 615 1],[431.5657 500 1],[432.3867 500 1],[433.664 500 1],[435.2145 500 1],[435.2864 425 1],[437.117 375 1],[442.7106 615 1],[443.1562 615 1],[445.8469 715 1],[446.1075 340 1],[446.6348 715 1],[447.446 500 1],[449.423 800 1],[450.7659 850 1],[453.974 615 1],[454.3483 715 1],[460.2427 615 1],[462.9787 340 1],[470.7586 340 1],[473.067 340 1],[488.8557 340 1],[506.898 100 0],[510.558 340 1],[510.755 500 1],[512.134 100 0],[514.163 100 0],[523.138 425 1],[533.123 500 1],[540.813 100 0],[545.132 135 0],[549.7727 340 1],[555.809 425 1],[565.132 425 1],[611.007 425 1],[617.027 500 1],[651.174 300 1],[709.227 300 1],[710.272 300 1],[799.053 340 1],[817.451 300 1],[842.891 100 0],[856.471 100 0],[865.414 100 0],[882.173 135 0],[886.966 100 0],[926.728 135 0],[930.061 200 0],[959.795 230 0],[962.67 290 0],[983.376 230 0],[988.605 100 0],[990.055 140 0],[991.571 170 0],[992.305 290 0],[1001.063 100 0],[1002.404 290 0],[1045.309 100 0],[1057.502 100 0],[1061.407 170 0]}{ALLx1000x1000x1000x510x250x250x0}{UVx1000x1000x1000x510x250x250x0}{VISx850x135x850x325x0x0x0}{IVx340x290x340x0x0x0x0}%
\pgfspectra@elt@search{#1}{Se}{[59.6 285 4],[60.1 285 4],[60.87 220 4],[61.3 360 4],[61.43 285 4],[63.6 285 3],[65.27 360 3],[65.42 285 3],[67.01 450 3],[67.19 285 3],[70.92 220 2],[70.94 220 2],[72.06 220 2],[72.28 220 3],[72.43 360 2],[72.64 285 2],[73.46 285 3],[73.72 220 2],[74.19 220 2],[74.64 450 3],[75.9 285 3],[75.91 450 4],[77.65 285 3],[77.73 285 2],[78.58 285 4],[79.08 220 2],[80.38 285 3],[80.43 285 4],[80.87 360 4],[81.48 220 4],[82.07 220 4],[82.85 285 1],[83.03 360 4],[83.27 360 1],[83.95 450 4],[84.3 360 2],[84.58 360 4],[87.92 220 2],[90.66 285 1],[91.29 360 1],[95.37 285 2],[95.44 220 2],[95.47 220 2],[95.96 360 3],[97.41 160 2],[97.48 360 2],[99.67 450 3],[101.34 360 1],[101.4 360 1],[103.36 450 1],[104.96 450 1],[105.74 360 1],[107.98 285 2],[109.47 360 4],[109.78 285 1],[109.91 360 2],[111.92 450 2],[114.19 360 1],[115.1 220 4],[115.6 220 1],[115.69 285 1],[116.85 285 1],[119.23 450 1],[120.57 220 1],[122.76 450 4],[123.49 220 1],[129.1 285 1],[130.72 220 3],[130.89 285 1],[131.44 285 3],[140.54 100 0],[140.64 100 0],[140.66 100 0],[143.53 120 0],[143.58 120 0],[144.48 100 0],[144.68 100 0],[144.7 100 0],[144.92 150 0],[145.63 120 0],[150.09 150 0],[153.04 250 0],[153.13 150 0],[153.18 200 0],[154.71 120 0],[156.03 120 0],[157.53 150 0],[157.76 150 0],[157.79 150 0],[157.95 150 0],[158 200 0],[158.75 150 0],[159.32 150 0],[160.65 250 0],[161.07 100 0],[161.13 100 0],[161.74 200 0],[162.12 150 0],[162.27 100 0],[162.62 120 0],[164.34 150 0],[167.12 250 0],[167.53 250 0],[169.07 250 0],[179.33 250 0],[179.53 300 0],[185.52 300 0],[185.88 250 0],[189.86 400 0],[191.38 350 0],[191.92 300 0],[196.09 500 0],[199.51 150 0],[203.98 500 0],[205.75 285 2],[207.48 500 0],[209 220 3],[213.66 285 3],[216.42 500 0],[216.52 160 3],[216.66 160 3],[233.28 150 0],[241.35 600 0],[254.8 300 0],[266.55 360 3],[272.43 285 3],[276.72 285 2],[277.38 220 2],[295.16 160 3],[303.87 220 1],[304.13 220 1],[337.98 285 2],[338.72 450 2],[341.39 450 2],[342.84 285 2],[345.78 450 2],[354.36 360 2],[357.02 285 2],[363.76 450 2],[371.17 360 2],[373.87 450 2],[374.3 285 2],[380.09 450 2],[404.67 360 2],[407.02 285 1],[408.32 220 2],[416.91 450 2],[417.53 360 1],[418.09 450 1],[432.87 120 0],[433.03 100 0],[438.29 285 1],[444.6 285 1],[444.92 220 1],[446.76 285 1],[463.79 220 2],[473.08 500 0],[473.9 400 0],[474.22 300 0],[484.06 285 1],[484.5 360 1],[522.75 450 1],[530.54 360 1],[536.55 100 0],[536.99 120 0],[537.41 110 0],[552.24 285 1],[556.69 285 1],[586.63 285 1],[605.6 450 1],[630.38 285 2],[632.56 200 0],[644.42 360 1],[649.05 285 1],[653.5 285 1],[683.13 150 0],[699.069 120 0],[699.1792 100 0],[701.0809 200 0],[701.3875 150 0],[706.2065 300 0],[757.51 200 0],[758.34 250 0],[759.22 150 0],[760.68 120 0],[800.1 300 0],[803.64 200 0],[806.09 120 0],[806.53 120 0],[808.11 120 0],[809.32 150 0],[809.47 150 0],[814.93 180 0],[815.2 150 0],[815.77 200 0],[816.31 180 0],[818.29 150 0],[818.5 100 0],[819.46 120 0],[844.047 150 0],[845.038 150 0],[874.233 150 0],[891.886 300 0],[896.969 100 0],[900.197 200 0],[903.861 200 0],[908.314 80 0],[908.879 120 0],[914.083 80 0],[918.188 60 0],[927.112 60 0],[943.25 100 0],[982.558 60 0],[1021.725 200 0],[1030.745 377 0],[1032.726 900 0],[1038.636 640 0],[1065.03 124 0],[1193.456 125 0],[1194.687 275 0],[1194.792 100 0],[1195.227 105 0],[1195.264 170 0],[1196.604 100 0],[1197.293 205 0],[1197.307 115 0],[1481.793 315 0],[1491.747 410 0],[1515.144 500 0],[1546.906 115 0],[1547.1 320 0],[1552.097 265 0],[1561.84 395 0],[1562.038 115 0],[1665.9439 360 0],[1681.3779 505 0],[1681.776 165 0],[1686.6539 205 0],[1697.2711 115 0],[2137.424 235 0],[2144.2561 680 0],[2147.348 415 0],[2171.6359 270 0],[2173.06 240 0],[2313.366 105 0],[2338.885 150 0],[2362.817 110 0],[2414.818 265 0],[2415.923 170 0],[2420.4439 185 0],[2438.599 375 0],[2441.367 160 0],[2447.117 225 0],[2501.751 255 0],[2512.743 510 0]}{ALLx900x900x450x450x450x450x0}{UVx600x600x450x450x450x450x0}{VISx500x500x450x450x0x0x0}{IVx900x900x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Br}{[37.973 70 3],[40.037 70 3],[46.837 60 4],[48.211 80 4],[53.197 90 4],[54.543 100 3],[54.79 100 4],[54.977 70 4],[55.976 100 3],[56.919 100 3],[57.659 100 3],[58.51 100 3],[58.671 100 3],[59.751 100 3],[60.009 100 3],[60.127 100 3],[60.703 100 3],[61.11 45 2],[61.785 100 3],[61.987 100 3],[62.04 30 2],[62.103 80 4],[63.014 100 3],[63.222 80 4],[64.223 100 3],[64.544 70 4],[65.264 40 4],[65.754 80 4],[66.153 100 3],[66.554 50 2],[67.719 50 2],[67.78 30 2],[67.962 80 4],[68.351 100 3],[68.768 45 2],[69.02 40 2],[69.699 35 2],[69.772 100 3],[71.168 30 1],[71.539 100 3],[72.7 30 2],[73.1 100 3],[73.64 30 2],[76.963 25 2],[80.012 100 3],[81.295 70 4],[81.366 100 3],[81.548 25 1],[81.779 25 2],[85.081 100 4],[85.527 15 4],[85.619 35 1],[88.923 100 1],[89.664 50 1],[90.599 50 1],[92.256 30 1],[94.897 100 1],[94.9 35 2],[96.04 40 2],[98.49 45 2],[98.493 50 1],[101.21 50 1],[101.554 100 1],[103.702 50 1],[104.16 60 4],[104.9 100 1],[106.476 45 1],[106.915 100 4],[107.187 50 1],[108.054 50 4],[110.15 25 0],[111.213 90 4],[113.459 30 0],[113.629 25 0],[114.356 100 4],[117.723 25 0],[117.89 40 0],[118.928 100 0],[118.938 25 0],[118.95 100 0],[119.837 50 0],[120.976 80 0],[121.073 100 0],[121.601 75 0],[122.113 100 0],[122.187 90 0],[122.324 100 0],[122.441 120 0],[122.69 120 0],[122.805 75 0],[123.243 750 0],[124.39 120 0],[124.959 80 0],[125.166 150 0],[125.58 100 0],[125.92 150 0],[126.166 120 0],[126.62 120 0],[127.482 90 3],[127.948 100 0],[128.626 100 0],[130.991 300 0],[131.35 25 2],[131.674 300 0],[131.737 100 0],[131.77 200 0],[138.46 1200 0],[140.29 25 2],[142.975 15 4],[144.26 40 4],[144.99 300 0],[147.035 15 4],[148.845 5000 0],[153.174 3000 0],[154.065 2500 0],[157.484 3000 0],[157.639 2000 0],[158.231 2500 0],[163.34 7500 0],[170.351 100 3],[213.379 100 3],[214.502 100 3],[225.721 100 3],[227.273 100 3],[228.517 35 1],[228.76 35 1],[229.344 40 2],[230.74 100 3],[231.329 30 2],[231.73 50 1],[233.693 40 1],[238.645 35 1],[238.67 50 1],[238.869 30 1],[238.896 45 1],[238.969 50 1],[239.221 35 1],[239.242 40 1],[240.816 100 3],[241.158 100 3],[246.239 30 2],[248.26 30 2],[248.85 30 1],[249.114 70 3],[249.522 30 1],[249.925 35 2],[252.17 45 1],[252.949 35 2],[254.148 40 1],[255.109 35 2],[255.692 40 1],[257.083 35 2],[257.317 30 2],[258.119 100 3],[258.499 40 2],[258.914 50 2],[259.448 30 2],[259.598 40 2],[260.62 45 2],[260.815 35 2],[261.313 50 2],[261.626 35 2],[262.652 50 2],[262.923 35 2],[263.96 35 2],[266.14 60 3],[267.153 35 2],[269.017 35 1],[271.377 40 1],[273.583 35 2],[274.652 35 1],[277.05 30 2],[278.528 30 2],[280.416 30 2],[280.755 30 1],[282.087 70 3],[284.288 100 3],[289.34 40 1],[290.771 110 3],[291.718 40 1],[292.696 40 2],[293.622 30 2],[296.721 40 1],[296.9 35 2],[297.226 50 1],[298.186 30 1],[298.587 30 1],[298.653 30 1],[299.404 40 2],[301.648 30 1],[302.076 50 2],[303.363 30 2],[303.645 35 2],[304.118 50 3],[307.442 50 2],[309.194 35 2],[311.729 35 2],[314.781 30 2],[317.408 40 2],[332.108 30 2],[333.307 45 2],[334.964 50 2],[338.056 50 3],[338.525 30 2],[342.382 35 1],[344.736 45 2],[348.758 40 2],[350.647 30 2],[351.736 45 2],[354.016 50 2],[355.108 30 2],[356.243 50 2],[360.071 45 2],[360.68 30 1],[369.353 25 2],[371.43 35 1],[381.565 120 0],[382.026 45 2],[383.469 35 1],[387.121 30 1],[389.163 40 1],[390.124 30 1],[390.395 20 2],[391.42 30 1],[391.438 50 1],[391.951 35 1],[392.409 40 1],[392.955 30 1],[393.969 35 1],[395.061 35 1],[398.038 50 1],[399.236 150 0],[402.404 30 1],[413.566 30 1],[414.02 30 1],[417.963 40 1],[419.345 30 1],[422.389 100 1],[423.689 30 1],[429.139 30 1],[436.514 200 0],[436.56 100 1],[442.514 150 0],[444.174 1000 0],[447.261 1000 0],[447.772 2000 0],[449.042 100 0],[450.655 35 2],[451.344 300 0],[451.974 20 2],[452.559 1500 0],[452.96 30 1],[454.292 50 1],[457.574 300 0],[460.136 30 1],[461.458 250 0],[462.27 35 1],[464.202 30 1],[465.198 30 1],[467.87 50 1],[469.317 40 1],[470.485 50 1],[471.976 35 1],[472.036 40 1],[472.82 30 1],[473.541 30 1],[474.264 40 1],[475.228 250 0],[476.6 35 1],[477.94 40 1],[478.031 400 0],[478.519 160 0],[478.55 50 1],[480.233 30 1],[481.67 50 1],[481.846 30 1],[484.481 35 1],[484.875 35 1],[492.112 40 1],[492.879 40 1],[493.066 45 1],[494.551 30 1],[497.976 400 0],[503.874 30 1],[505.464 30 1],[516.438 40 1],[517.587 15 2],[518.001 30 1],[518.235 50 1],[519.39 30 1],[523.823 50 1],[527.268 30 1],[530.41 35 1],[533.057 40 1],[533.205 50 1],[539.548 120 0],[542.278 40 1],[542.499 35 1],[543.507 30 1],[544.68 10 2],[546.622 120 0],[547.847 35 1],[548.879 30 1],[549.506 30 1],[550.669 50 1],[558.994 35 1],[571.871 30 1],[583.078 30 1],[585.208 180 0],[594.048 160 0],[612.214 240 0],[614.86 4000 0],[616.174 30 1],[617.739 200 0],[633.548 150 0],[635.073 6000 0],[635.294 40 1],[641.032 250 0],[648.356 180 0],[651.462 100 0],[654.457 2000 0],[654.809 150 0],[655.98 5000 0],[657.131 100 0],[657.914 180 0],[658.217 2000 0],[662.047 150 0],[663.162 5000 0],[668.228 2000 0],[669.213 1000 0],[672.828 800 0],[676.006 200 0],[677.948 200 0],[678.674 220 0],[679.004 650 0],[679.148 160 0],[686.115 180 0],[700.519 1000 0],[719.28 10 2],[726.045 200 0],[734.851 1000 0],[751.296 4000 0],[759.161 160 0],[759.507 180 0],[761.641 200 0],[767.31 10 2],[780.302 3000 0],[782.723 120 0],[788.145 250 0],[788.157 250 0],[792.581 250 0],[793.868 3000 0],[794.794 300 0],[795.018 300 0],[797.844 800 0],[797.857 1000 0],[798.994 3000 0],[802.635 200 0],[802.654 250 0],[813.152 3000 0],[815.265 100 0],[815.375 1000 0],[815.4 2500 0],[824.686 500 0],[826.496 1500 0],[827.244 7500 0],[833.47 2000 0],[834.37 1000 0],[838.404 120 0],[844.655 4000 0],[847.745 400 0],[851.338 150 0],[855.773 100 0],[856.628 100 0],[863.866 2000 0],[869.853 400 0],[879.347 1000 0],[881.996 1500 0],[882.522 2500 0],[888.898 400 0],[889.762 3000 0],[893.24 600 0],[894.939 180 0],[896.4 900 0],[902.442 35 1],[916.606 3000 0],[917.363 1500 0],[917.816 2000 0],[926.542 4000 0],[932.086 1500 0],[943.404 30 1],[979.348 600 0],[989.64 1000 0],[1014.008 300 0],[1023.774 600 0],[1029.962 100 0],[1037.765 150 0],[1045.796 3000 0],[1074.214 100 0],[1075.592 300 0],[1321.717 170 0],[1435.457 180 0],[1488.87 125 0],[1673.1189 180 0],[1856.8311 120 0],[1973.3619 350 0],[2028.173 100 0],[2062.467 100 0],[2178.724 120 0],[2286.565 400 0],[2351.315 100 0],[2834.65 50 0],[3038.085 50 0],[3163.0131 60 0],[3269.39 12 0],[3418.1871 15 0],[3834.575 15 0],[3996.4359 12 0]}{ALLx7500x7500x100x50x110x100x0}{UVx7500x7500x100x50x110x100x0}{VISx6000x6000x100x45x0x0x0}{IVx7500x7500x35x0x0x0x0}%
-\pgfspectra@elt@search{#1}{Kr}{[46.735 30 2],[47.216 150 4],[48.439 100 4],[49.625 250 4],[50.077 120 4],[50.72 200 4],[54.086 30 2],[54.804 60 4],[56.564 30 2],[56.916 30 2],[57.198 30 2],[57.983 30 2],[58.514 30 2],[58.596 30 2],[59.37 30 2],[59.41 30 2],[59.641 30 2],[60.017 40 2],[60.367 30 2],[60.586 50 2],[60.647 35 2],[61.112 50 2],[61.672 35 2],[62.145 40 2],[62.28 45 2],[62.502 50 2],[62.576 30 2],[62.859 45 2],[63.004 50 2],[63.309 35 2],[63.787 120 4],[63.998 50 2],[64.641 60 2],[65.12 50 2],[65.972 50 2],[66.486 30 2],[67.234 40 2],[67.285 35 2],[67.657 35 2],[68.013 35 2],[68.368 35 2],[68.625 45 2],[68.798 45 2],[69.193 45 2],[69.561 50 2],[69.805 30 2],[70.836 50 2],[70.885 600 4],[71.4 50 2],[72.204 100 2],[72.94 60 1],[74.67 30 2],[76.118 200 1],[76.398 100 1],[76.62 60 1],[77.103 200 1],[77.369 60 1],[78.21 200 1],[78.372 100 1],[78.597 60 2],[80.576 7 3],[81.682 18 3],[81.815 60 1],[83.038 60 1],[83.766 50 2],[84.204 22 3],[84.406 100 1],[85.473 50 2],[86.258 60 2],[86.482 60 1],[86.887 60 1],[87.084 40 2],[87.608 50 2],[88.414 200 1],[88.63 1000 1],[89.101 400 1],[89.781 75 2],[91.139 200 1],[91.743 2000 1],[94.544 50 0],[94.654 50 0],[95.106 20 0],[95.34 50 0],[96.337 50 0],[96.497 2000 1],[98.729 50 2],[100.106 100 0],[100.355 100 0],[103.002 100 0],[115.874 30 2],[116.487 200 0],[123.584 650 0],[163.882 6 2],[191.409 6 2],[223.734 3 3],[229.126 6 3],[232.93 3 3],[233.675 4 3],[234.827 4 3],[235.85 3 3],[238.805 3 3],[239.394 40 2],[241.69 4 3],[242.804 3 3],[244.268 5 3],[245.17 4 3],[245.974 6 3],[246.477 100 1],[247.406 5 3],[249.248 60 1],[249.401 40 2],[251.7 4 3],[251.802 5 3],[251.938 6 3],[252.45 5 3],[254.6 5 3],[254.7 6 3],[255.808 4 3],[256.325 30 2],[258.69 3 3],[260.617 5 3],[260.95 10 3],[261.53 8 3],[262.111 7 3],[263.976 60 2],[268.032 30 2],[268.119 40 2],[271.24 80 1],[273.055 3 3],[274.818 8 3],[277.47 6 3],[282.96 3 3],[283.3 100 1],[283.608 3 3],[284.1 30 2],[285.116 30 2],[285.3 5 3],[285.93 3 3],[287.061 50 2],[289.218 100 2],[290.917 30 2],[295.256 50 2],[299.222 60 2],[302.23 50 2],[302.445 80 2],[304.693 50 2],[305.672 30 2],[306.313 60 2],[309.716 40 2],[311.225 60 2],[312.061 30 2],[312.439 100 2],[314.135 60 2],[314.201 3 3],[318.911 100 2],[319.121 80 2],[322.499 6 3],[323.952 40 2],[324.044 40 2],[324.569 300 2],[326.17 3 3],[326.481 150 2],[326.848 100 2],[327.165 30 2],[328.589 30 2],[330.475 30 2],[331.147 50 2],[332.575 200 2],[333.076 60 2],[334.248 50 2],[335.193 100 2],[337.496 40 2],[343.946 100 2],[347.465 70 2],[348.859 100 2],[350.742 200 2],[356.423 100 2],[360.788 100 1],[363.1889 200 1],[364.134 30 2],[365.3928 250 1],[366.5324 80 0],[366.901 150 1],[367.9559 100 0],[368.6182 80 1],[369.065 30 2],[371.802 300 1],[371.8595 200 1],[372.135 150 1],[374.1638 200 1],[374.48 150 1],[375.4245 80 1],[377.8089 500 1],[378.3095 500 1],[380.93 3 3],[386.058 5 3],[386.87 40 2],[387.544 150 1],[390.6177 150 1],[392.0081 200 1],[393.429 5 3],[399.484 100 1],[399.7793 100 1],[405.7037 300 1],[406.5128 300 1],[406.737 50 2],[408.8337 500 1],[409.8729 250 1],[410.9248 100 1],[413.133 40 2],[414.5122 250 1],[415.446 40 2],[425.058 150 1],[427.3969 1000 0],[428.2967 100 0],[429.2923 600 1],[430.049 200 1],[431.781 500 1],[431.8551 400 0],[431.9579 1000 0],[432.298 150 1],[435.1359 100 0],[435.5477 3000 1],[436.2641 500 0],[436.969 200 1],[437.6121 800 0],[438.654 300 1],[439.9965 200 0],[442.5189 100 0],[443.1685 500 1],[443.6812 600 1],[445.3917 600 0],[446.3689 800 0],[447.5014 800 1],[448.988 400 1],[450.2353 600 0],[452.314 400 1],[455.661 200 1],[457.7209 800 1],[458.2978 300 1],[459.28 150 1],[461.5292 500 1],[461.9166 1000 1],[463.3885 800 1],[465.8876 2000 1],[468.0406 500 1],[469.1301 100 1],[469.436 200 1],[473.9002 3000 1],[476.2435 300 1],[476.5744 1000 1],[481.176 300 1],[482.518 300 1],[483.2077 800 1],[484.6612 700 1],[485.72 150 1],[494.559 300 1],[501.645 20 2],[502.24 200 1],[508.652 250 1],[512.573 400 1],[520.832 500 1],[530.866 200 1],[533.341 500 1],[546.817 200 1],[550.143 10 2],[556.2224 500 0],[557.0288 2000 0],[558.0386 80 0],[564.9561 100 0],[568.189 400 1],[569.035 200 1],[583.2855 100 0],[587.0914 3000 0],[599.222 200 1],[599.3849 60 0],[603.717 10 2],[605.6125 60 0],[607.838 10 2],[631.022 10 2],[642.018 300 1],[642.1026 100 0],[645.6288 200 0],[657.007 150 1],[669.9228 60 0],[690.4678 100 0],[721.313 250 1],[722.4104 100 0],[728.7258 80 0],[728.978 400 1],[740.702 400 1],[742.5541 60 0],[743.578 200 1],[748.6862 100 0],[752.446 300 1],[758.7411 1000 0],[760.1544 2000 0],[764.116 150 1],[768.5244 1000 0],[769.4538 1200 0],[773.569 250 1],[774.6827 150 0],[785.4821 800 0],[791.3423 200 0],[792.8597 180 0],[793.322 200 1],[797.362 120 1],[798.2401 100 0],[805.9503 1500 0],[810.4364 4000 0],[811.2899 6000 0],[813.2967 60 0],[819.0054 3000 0],[820.272 200 1],[821.8365 80 0],[826.324 3000 0],[827.2353 100 0],[828.105 1500 0],[829.8107 5000 0],[841.243 100 0],[850.887 3000 0],[876.411 150 0],[877.6748 6000 0],[892.8692 2000 0],[923.848 500 1],[929.382 500 1],[932.099 200 1],[936.195 300 1],[936.2082 100 0],[940.282 200 1],[947.093 200 1],[957.752 500 1],[960.58 500 1],[961.961 400 1],[966.334 200 1],[971.16 200 1],[975.1758 2000 0],[980.314 500 1],[985.6314 500 0],[1022.146 1000 1],[1118.7108 100 0],[1125.7711 200 0],[1125.9126 150 0],[1145.7481 500 0],[1179.2425 150 0],[1181.9377 1500 0],[1199.7105 600 0],[1207.7224 160 0],[1286.1892 100 0],[1317.7412 1100 0],[1362.2415 1000 0],[1363.422 2400 0],[1365.8394 800 0],[1371.1036 200 0],[1373.8851 600 0],[1397.4027 150 0],[1404.5657 550 0],[1410.4298 140 0],[1440.222 180 0],[1442.6793 2000 0],[1451.784 100 0],[1473.4436 1600 0],[1476.2672 550 0],[1476.5472 450 0],[1496.1894 400 0],[1500.5307 120 0],[1520.9526 140 0],[1523.9615 1700 0],[1532.648 130 0],[1533.4958 1500 0],[1537.2037 700 0],[1547.4026 200 0],[1568.102 180 0],[1582.009 120 0],[1672.6514 200 0],[1678.5129 2000 0],[1685.3488 1000 0],[1689.0441 2400 0],[1689.6754 1600 0],[1693.5807 1800 0],[1709.8771 600 0],[1736.7605 700 0],[1740.4443 120 0],[1761.6854 150 0],[1784.2736 650 0],[1800.2229 700 0],[1816.7314 2600 0],[1839.9785 100 0],[1858.0896 150 0],[1869.6295 300 0],[1878.5461 170 0],[1879.7703 200 0],[2020.9879 140 0],[2042.3965 300 0],[2044.6971 140 0],[2116.5471 600 0],[2190.2514 1800 0],[2248.5775 120 0],[2334.0416 180 0],[2426.0506 120 0],[2429.2221 180 0],[2523.382 600 0],[2861.0551 180 0],[2865.5721 1000 0],[2876.9711 150 0],[2882.249 140 0],[2923.6689 300 0],[3066.3539 300 0],[3097.916 300 0],[3930.0602 500 0],[3948.652 1100 0],[3955.725 220 0],[3957.2602 100 0],[3958.8398 1400 0],[3958.9602 1100 0],[3995.4801 500 0],[3996.6602 300 0],[4030.6102 1300 0],[4068.516 250 0]}{ALLx6000x6000x3000x300x22x600x0}{UVx2000x650x2000x300x22x600x0}{VISx3000x3000x3000x50x5x0x0}{IVx6000x6000x1000x0x0x0x0}%
+\pgfspectra@elt@search{#1}{Kr}{[46.735 30 2],[47.216 150 4],[48.439 100 4],[49.625 250 4],[50.077 120 4],[50.72 200 4],[54.086 30 2],[54.804 60 4],[56.564 30 2],[56.916 30 2],[57.198 30 2],[57.983 30 2],[58.514 30 2],[58.596 30 2],[59.37 30 2],[59.41 30 2],[59.641 30 2],[60.017 40 2],[60.367 30 2],[60.586 50 2],[60.647 35 2],[61.112 50 2],[61.672 35 2],[62.145 40 2],[62.28 45 2],[62.502 50 2],[62.576 30 2],[62.859 45 2],[63.004 50 2],[63.309 35 2],[63.787 120 4],[63.998 50 2],[64.641 60 2],[65.12 50 2],[65.972 50 2],[66.486 30 2],[67.234 40 2],[67.285 35 2],[67.657 35 2],[68.013 35 2],[68.368 35 2],[68.625 45 2],[68.798 45 2],[69.193 45 2],[69.561 50 2],[69.805 30 2],[70.836 50 2],[70.885 600 4],[71.4 50 2],[72.204 100 2],[72.94 60 1],[74.67 30 2],[76.118 200 1],[76.398 100 1],[76.62 60 1],[77.103 200 1],[77.369 60 1],[78.21 200 1],[78.372 100 1],[78.597 60 2],[80.576 7 3],[81.682 18 3],[81.815 60 1],[83.038 60 1],[83.766 50 2],[84.204 22 3],[84.406 100 1],[85.473 50 2],[86.258 60 2],[86.482 60 1],[86.887 60 1],[87.084 40 2],[87.608 50 2],[88.414 200 1],[88.63 1000 1],[89.101 400 1],[89.781 75 2],[91.139 200 1],[91.743 2000 1],[94.544 50 0],[94.654 50 0],[95.106 20 0],[95.34 50 0],[96.337 50 0],[96.497 2000 1],[98.729 50 2],[100.106 100 0],[100.355 100 0],[103.002 100 0],[115.874 30 2],[116.487 200 0],[123.584 650 0],[163.882 6 2],[191.409 6 2],[223.734 3 3],[229.126 6 3],[232.93 3 3],[233.675 4 3],[234.827 4 3],[235.85 3 3],[238.805 3 3],[239.394 40 2],[241.69 4 3],[242.804 3 3],[244.268 5 3],[245.17 4 3],[245.974 6 3],[246.477 100 1],[247.406 5 3],[249.248 60 1],[249.401 40 2],[251.7 4 3],[251.802 5 3],[251.938 6 3],[252.45 5 3],[254.6 5 3],[254.7 6 3],[255.808 4 3],[256.325 30 2],[258.69 3 3],[260.617 5 3],[260.95 10 3],[261.53 8 3],[262.111 7 3],[263.976 60 2],[268.032 30 2],[268.119 40 2],[271.24 80 1],[273.055 3 3],[274.818 8 3],[277.47 6 3],[282.96 3 3],[283.3 100 1],[283.608 3 3],[284.1 30 2],[285.116 30 2],[285.3 5 3],[285.93 3 3],[287.061 50 2],[289.218 100 2],[290.917 30 2],[295.256 50 2],[299.222 60 2],[302.23 50 2],[302.445 80 2],[304.693 50 2],[305.672 30 2],[306.313 60 2],[309.716 40 2],[311.225 60 2],[312.061 30 2],[312.439 100 2],[314.135 60 2],[314.201 3 3],[318.911 100 2],[319.121 80 2],[322.499 6 3],[323.952 40 2],[324.044 40 2],[324.569 300 2],[326.17 3 3],[326.481 150 2],[326.848 100 2],[327.165 30 2],[328.589 30 2],[330.475 30 2],[331.147 50 2],[332.575 200 2],[333.076 60 2],[334.248 50 2],[335.193 100 2],[337.496 40 2],[343.946 100 2],[347.465 70 2],[348.859 100 2],[350.742 200 2],[356.423 100 2],[360.788 100 1],[363.1889 200 1],[364.134 30 2],[365.3928 250 1],[366.5324 80 0],[366.901 150 1],[367.9559 100 0],[368.6182 80 1],[369.065 30 2],[371.802 300 1],[371.8595 200 1],[372.135 150 1],[374.1638 200 1],[374.48 150 1],[375.4245 80 1],[377.8089 500 1],[378.3095 500 1],[380.93 3 3],[386.058 5 3],[386.87 40 2],[387.544 150 1],[390.6177 150 1],[392.0081 200 1],[393.429 5 3],[399.484 100 1],[399.7793 100 1],[405.7037 300 1],[406.5128 300 1],[406.737 50 2],[408.8337 500 1],[409.8729 250 1],[410.9248 100 1],[413.133 40 2],[414.5122 250 1],[415.446 40 2],[425.058 150 1],[427.3969 1000 0],[428.2967 100 0],[429.2923 600 1],[430.049 200 1],[431.781 500 1],[431.8551 400 0],[431.9579 1000 0],[432.298 150 1],[435.1359 100 0],[435.5477 3000 1],[436.2641 500 0],[436.969 200 1],[437.6121 800 0],[438.654 300 1],[439.9965 200 0],[442.5189 100 0],[443.1685 500 1],[443.6812 600 1],[445.3917 600 0],[446.3689 800 0],[447.5014 800 1],[448.988 400 1],[450.2353 600 0],[452.314 400 1],[455.661 200 1],[457.7209 800 1],[458.2978 300 1],[459.28 150 1],[461.5292 500 1],[461.9166 1000 1],[463.3885 800 1],[465.8876 2000 1],[468.0406 500 1],[469.1301 100 1],[469.436 200 1],[473.9002 3000 1],[476.2435 300 1],[476.5744 1000 1],[481.176 300 1],[482.518 300 1],[483.2077 800 1],[484.6612 700 1],[485.72 150 1],[494.559 300 1],[501.645 20 2],[502.24 200 1],[508.652 250 1],[512.573 400 1],[520.832 500 1],[530.866 200 1],[533.341 500 1],[546.817 200 1],[550.143 10 2],[556.2224 500 0],[557.0288 2000 0],[558.0386 80 0],[564.9561 100 0],[568.189 400 1],[569.035 200 1],[583.2855 100 0],[587.0914 3000 0],[599.222 200 1],[599.3849 60 0],[603.717 10 2],[605.6125 60 0],[607.838 10 2],[631.022 10 2],[642.018 300 1],[642.1026 100 0],[645.6288 200 0],[657.007 150 1],[669.9228 60 0],[690.4678 100 0],[721.313 250 1],[722.4104 100 0],[728.7258 80 0],[728.978 400 1],[740.702 400 1],[742.5541 60 0],[743.578 200 1],[748.6862 100 0],[752.446 300 1],[758.7411 1000 0],[760.1544 2000 0],[764.116 150 1],[768.5244 1000 0],[769.4538 1200 0],[773.569 250 1],[774.6827 150 0],[785.4821 800 0],[791.3423 200 0],[792.8597 180 0],[793.322 200 1],[797.362 120 1],[798.2401 100 0],[805.9503 1500 0],[810.4364 4000 0],[811.2899 6000 0],[813.2967 60 0],[819.0054 3000 0],[820.272 200 1],[821.8365 80 0],[826.324 3000 0],[827.2353 100 0],[828.105 1500 0],[829.8107 5000 0],[841.243 100 0],[850.887 3000 0],[876.411 150 0],[877.6748 6000 0],[892.8692 2000 0],[923.848 500 1],[929.382 500 1],[932.099 200 1],[936.195 300 1],[936.2082 100 0],[940.282 200 1],[947.093 200 1],[957.752 500 1],[960.58 500 1],[961.961 400 1],[966.334 200 1],[971.16 200 1],[975.1758 2000 0],[980.314 500 1],[985.6314 500 0],[1022.146 1000 1],[1118.7108 100 0],[1125.7711 200 0],[1125.9126 150 0],[1145.7481 500 0],[1179.2425 150 0],[1181.9377 1500 0],[1199.7105 600 0],[1207.7224 160 0],[1286.1892 100 0],[1317.7412 1100 0],[1362.2415 1000 0],[1363.422 2400 0],[1365.8394 800 0],[1371.1036 200 0],[1373.8851 600 0],[1397.4027 150 0],[1404.5657 550 0],[1410.4298 140 0],[1440.222 180 0],[1442.6793 2000 0],[1451.784 100 0],[1473.4436 1600 0],[1476.2672 550 0],[1476.5472 450 0],[1496.1894 400 0],[1500.5307 120 0],[1520.9526 140 0],[1523.9615 1700 0],[1532.648 130 0],[1533.4958 1500 0],[1537.2037 700 0],[1547.4026 200 0],[1568.102 180 0],[1582.009 120 0],[1672.6514 200 0],[1678.5129 2000 0],[1685.3488 1000 0],[1689.0441 2400 0],[1689.6754 1600 0],[1693.5807 1800 0],[1709.8771 600 0],[1736.7605 700 0],[1740.4443 120 0],[1761.6854 150 0],[1784.2736 650 0],[1800.2229 700 0],[1816.7314 2600 0],[1839.9785 100 0],[1858.0896 150 0],[1869.6295 300 0],[1878.5461 170 0],[1879.7703 200 0],[2020.9879 140 0],[2042.3965 300 0],[2044.6971 140 0],[2116.5471 600 0],[2190.2514 1800 0],[2248.5775 120 0],[2334.0416 180 0],[2426.0506 120 0],[2429.2221 180 0],[2523.382 600 0],[2861.0551 180 0],[2865.5721 1000 0],[2876.9711 150 0],[2882.249 140 0],[2923.6689 300 0],[3066.3539 300 0],[3097.916 300 0],[3930.0602 500 0],[3948.652 1100 0],[3955.725 220 0],[3957.2602 100 0],[3958.8398 1400 0],[3958.9602 1100 0],[3995.4801 500 0],[3996.6602 300 0]}{ALLx6000x6000x3000x300x22x600x0}{UVx2000x650x2000x300x22x600x0}{VISx3000x3000x3000x50x5x0x0}{IVx6000x6000x1000x0x0x0x0}%,[4030.6102 1300 0],[4068.516 250 0]
\pgfspectra@elt@search{#1}{Rb}{[46.585 3 2],[47.488 1 1],[48.1118 4 1],[48.243 3.5 2],[48.247 3 2],[48.283 50 2],[48.484 30 2],[48.966 50 2],[48.996 10 2],[49.348 60 2],[49.743 9 1],[49.782 5 2],[50.028 10 2],[50.833 3 2],[50.8434 2 1],[51.3266 15 1],[51.679 40 2],[53.0173 30 1],[53.364 80 2],[53.3801 7.5 1],[53.586 120 2],[54.2887 4 1],[55.5036 20 1],[55.619 120 2],[55.836 50 2],[56.477 70 2],[56.671 150 2],[57.282 100 2],[57.665 150 2],[57.963 250 2],[58.126 150 2],[58.234 50 2],[58.677 80 2],[58.9419 250 1],[59.142 10 2],[59.365 90 2],[59.494 100 2],[59.518 1 3],[59.588 130 2],[59.849 120 2],[60.209 45 2],[60.551 5 2],[60.728 50 2],[61.331 40 2],[61.967 50 2],[62.083 2 2],[62.224 10 2],[63.006 25 2],[64.3878 150 1],[64.567 50 2],[66.376 2.5 3],[67.481 2 2],[69.7049 300 1],[71.1187 600 1],[71.624 2.5 3],[73.341 2 3],[74.085 5 3],[74.1456 1000 1],[74.986 2 3],[75.375 2 3],[76.904 500 2],[77.154 1 3],[77.689 2.5 3],[81.528 250 2],[81.792 0.9 3],[85.018 1.5 3],[98.8 1 3],[160.412 100 1],[164.496 20 1],[170.752 20 1],[171.685 60 1],[176.05 500 1],[180.347 20 1],[180.968 50 1],[186.533 50 1],[188.942 50 1],[195.424 50 1],[195.654 30 1],[197.142 20 1],[198.319 50 1],[204.223 30 1],[205.221 30 1],[205.28 50 1],[206.892 200 1],[207.15 100 1],[207.595 1000 1],[209.029 100 1],[210.806 20 1],[211.65 30 1],[212.525 100 1],[212.982 40 1],[214.31 20 1],[214.383 3000 1],[215.321 10 2],[216.459 25 2],[219.036 20 1],[219.799 60 1],[219.826 60 1],[220.786 30 1],[221.708 1000 1],[222.379 20 1],[223.772 40 1],[225.065 50 1],[225.143 20 1],[225.419 80 1],[225.455 20 1],[226.354 20 1],[226.394 50 1],[226.8 10 2],[228.682 50 1],[229.171 500 1],[229.88 30 1],[230.012 15 2],[230.414 50 2],[230.445 15 2],[231.246 25 2],[233.301 25 1],[233.339 200 1],[233.707 20 2],[234.19 10 2],[234.537 20 2],[234.981 10 2],[235.311 35 1],[235.396 30 1],[235.697 40 1],[235.804 30 1],[236.427 30 1],[236.432 20 1],[236.515 20 1],[236.751 30 1],[237.321 20 1],[238.044 15 2],[238.129 10 2],[238.534 200 1],[240.594 25 1],[241.846 15 2],[243.417 40 1],[245.914 80 1],[247.22 5000 1],[248.456 30 1],[248.47 70 1],[249.638 200 1],[250.267 20 1],[251.418 25 1],[252.424 100 1],[256.186 30 2],[257.371 10 2],[257.707 10 2],[258.683 20 2],[259.456 20 1],[262.376 40 1],[263.175 100 2],[263.683 35 2],[264.558 40 1],[265.668 10 2],[268.41 100 1],[271.176 100 1],[271.386 10 2],[274.101 25 1],[279.886 50 2],[280.027 15 2],[280.758 50 2],[281.215 50 1],[283.851 35 1],[284.544 10 2],[286.977 15 2],[287.388 75 1],[290.369 50 2],[294.962 15 2],[295.101 10 2],[295.607 200 2],[296.745 50 2],[296.813 15 2],[297.074 50 2],[298.74 25 2],[302.361 35 2],[303.962 20 2],[304.148 20 2],[305.136 100 1],[307.07 25 2],[308.202 0.2 0],[308.684 50 2],[308.858 25 1],[309.849 10 2],[311.136 50 2],[311.257 1 0],[311.306 0.3 0],[311.482 25 2],[311.892 12 2],[314.89 500 1],[315.754 2.5 0],[315.826 0.5 0],[316.1 120 1],[316.934 10 2],[322.26 20 2],[322.798 5 0],[322.916 0.6 0],[327.099 200 1],[328.641 50 2],[332.149 150 1],[333.016 10 2],[334.055 120 1],[334.692 20 2],[334.872 6 0],[335.082 7.5 0],[335.389 75 1],[339.303 120 1],[341.558 75 1],[343.418 100 1],[343.926 25 2],[346.15 150 1],[349.268 10 2],[352.139 300 1],[353.155 300 1],[354.115 100 1],[358.705 10 0],[359.157 4 0],[360.06 500 1],[360.064 1000 1],[363.98 60 1],[364.626 40 1],[364.756 35 1],[366.274 100 1],[366.381 90 1],[366.672 35 1],[367.566 30 1],[369.958 250 1],[374.633 35 1],[379.681 350 1],[380.19 250 1],[382.666 100 1],[386.074 45 1],[390.729 25 1],[392.22 50 1],[392.644 250 1],[394.051 2500 1],[397.815 100 1],[402.949 170 1],[408.388 250 1],[410.428 200 1],[413.611 170 1],[419.308 350 1],[420.18 100 0],[421.553 50 0],[424.44 9000 1],[426.658 50 1],[427.025 25 1],[427.314 1500 1],[428.797 250 1],[429.397 150 1],[430.626 50 1],[434.696 100 1],[437.712 250 1],[444.01 30 1],[446.947 100 1],[449.392 40 1],[451.904 70 1],[453.034 300 1],[453.379 50 1],[454.074 40 1],[457.177 2000 1],[462.242 300 1],[463.189 35 1],[464.857 1000 1],[465.928 50 1],[473.045 100 1],[475.53 100 1],[475.782 40 1],[477.595 3000 1],[478.283 500 1],[485.534 30 1],[488.559 150 1],[508.7987 0.2 0],[513.2471 0.2 0],[515.0134 1 0],[515.208 1000 1],[516.458 30 1],[516.5023 0.1 0],[516.5142 0.2 0],[516.965 0.1 0],[519.5278 1.5 0],[523.3968 0.2 0],[526.0034 2 0],[526.0228 0.1 0],[527.051 20 1],[532.238 0.3 0],[536.2601 4 0],[539.0568 0.4 0],[543.1532 7.5 0],[543.183 0.3 0],[551.255 50 1],[552.278 500 1],[557.8788 0.6 0],[563.599 500 1],[564.7774 4 0],[565.375 2 0],[569.915 300 1],[572.4121 6 0],[572.4614 0.3 0],[573.964 20 1],[607.0755 7.5 0],[613.527 20 1],[615.9626 3 0],[619.908 100 1],[620.6309 7.5 0],[626.94 30 1],[629.8325 12 0],[629.9224 0.5 0],[645.833 1000 1],[655.562 100 1],[656.081 500 1],[677.507 300 1],[727.9997 10 0],[731.652 30 1],[740.8173 15 0],[761.8933 20 0],[775.7651 30 0],[775.9436 6 0],[780.027 9000 0],[792.526 0.5 0],[792.554 0.4 0],[794.76 4500 0],[827.141 4 0],[827.171 3 0],[860.396 200 1],[886.8512 4 0],[886.8852 3 0],[897.888 30 1],[902.177 30 1],[922.464 0.3 0],[923.425 0.2 0],[924.641 50 1],[933.887 30 1],[937.35 20 1],[939.136 30 1],[947.932 100 1],[949.372 70 1],[952.265 3 0],[952.305 0.5 0],[954.018 2 0],[961.299 30 1],[967.154 30 1],[968.905 200 1],[977.606 20 1],[993.476 20 1],[1007.5282 3.5 0],[1007.5708 3 0],[1323.517 10 0],[1344.281 2 0],[1344.357 3 0],[1366.501 7.5 0],[1475.241 100 0],[1528.843 80 0],[1528.948 15 0],[2252.965 2 0],[2293.2471 1 0],[2731.4311 0.4 0],[2790.5369 0.2 0]}{ALLx9000x9000x9000x500x5x0x0}{UVx5000x10x5000x500x5x0x0}{VISx9000x100x9000x0x0x0x0}{IVx9000x9000x200x0x0x0x0}%
\pgfspectra@elt@search{#1}{Sr}{[28.431 2.4 3],[29.109 2.4 3],[29.119 2.4 3],[29.322 2.4 3],[29.812 3 3],[30.012 3 3],[30.027 2.4 3],[30.167 2.4 3],[30.718 5 2],[31.611 10 2],[32.161 10 2],[33.067 25 2],[35.162 100 2],[35.88 15 2],[36.349 50 2],[37.121 30 2],[37.853 4 3],[39.244 15 3],[39.3 10 3],[39.49 9 3],[39.622 10 3],[39.992 8 3],[40.385 7 3],[40.694 7 3],[41.293 6 3],[41.307 8 3],[41.532 8 3],[41.978 6 3],[43.021 5 3],[43.065 6 3],[43.724 200 2],[44.273 5 3],[47.176 5 3],[48.42 5 3],[49.179 375 2],[50.704 250 2],[50.814 5 3],[51.438 750 2],[51.728 2 4],[53.419 5 3],[54.051 1.2 4],[56.275 500 2],[57.801 5 4],[62.493 6 4],[64.223 5 4],[64.921 10 4],[65.915 4 4],[66.094 5 4],[66.443 40 3],[66.993 1.8 4],[68.623 7 4],[71.035 20 3],[71.579 1.2 4],[74.782 2.4 4],[86.232 1.8 4],[96.837 4 2],[97.578 4 2],[99.298 5 2],[102.523 10 2],[104.491 7 2],[105.774 4 2],[106.02 5 2],[109.877 4 2],[112.549 7 2],[114.024 4 2],[116.827 4 2],[118.209 4 2],[118.921 4 3],[123.623 10 2],[124.414 6 3],[124.475 4 3],[124.487 4 3],[125.778 4 3],[126.862 4 3],[133.113 4 3],[134.79 6 3],[136.115 4 3],[140.867 5 3],[159.274 4 3],[167.703 5 3],[170.516 4 3],[172.423 4 3],[172.953 5 3],[173.212 4 3],[177.725 4 3],[194.058 4 2],[195.844 6 2],[196.692 6 2],[199.461 4 3],[206.863 5 2],[209.959 10 2],[210.438 4 3],[211.431 5 2],[211.79 4 3],[211.848 6 2],[211.952 10 2],[213.312 10 2],[214.28 6 2],[214.574 4 2],[215.284 280 1],[216.596 280 1],[217.891 6 2],[218.014 6 2],[219.088 10 2],[220.386 10 2],[221.799 4 3],[221.95 10 2],[222.005 10 2],[223.041 4 3],[224.049 4 3],[225.338 4 3],[226.703 10 2],[227.371 20 2],[227.787 10 2],[231.033 6 2],[231.495 10 2],[233.479 10 2],[234.013 20 2],[234.697 10 3],[235.734 4 3],[240.417 10 2],[241.052 6 2],[242.81 32 0],[243.893 4 3],[244.141 5 3],[245.403 10 2],[248.279 6 3],[248.357 5 3],[248.652 20 2],[250.057 3.6 3],[250.359 10 2],[250.802 4 3],[253.403 4 3],[254.802 3.6 3],[255.56 8 3],[256.947 24 0],[257.104 8 3],[257.158 5 3],[258.934 3 3],[259.91 6 2],[262.035 5 3],[262.116 4 3],[262.269 7 2],[264.216 4 3],[264.296 6 2],[264.851 6 2],[265.466 7 2],[272.247 8 2],[278.6 10 2],[282.142 10 2],[283.053 3 3],[287.486 6 2],[292.934 6 2],[293.183 40 0],[293.46 1.8 3],[298.3 6 2],[300.261 20 2],[301.232 40 2],[301.929 2 3],[302.173 20 2],[305.983 6 2],[306.143 10 2],[310.425 6 2],[318.261 10 2],[323.539 20 2],[326.652 1.8 3],[330.173 60 0],[330.272 6 2],[332.999 60 0],[335.125 80 0],[336.633 60 0],[338.071 130 1],[343.076 10 2],[346.446 190 1],[347.489 24 1],[356.643 1.8 3],[374.105 1.8 3],[387.426 6 2],[393.64 6 2],[393.672 6 2],[394.08 60 0],[395.875 6 2],[396.926 120 0],[397.004 60 0],[403.038 260 0],[403.238 60 0],[407.771 9200 1],[409.403 6 2],[409.702 6 2],[410.563 6 2],[416.18 40 1],[421.552 6400 1],[429.857 1.8 3],[430.545 68 1],[433.58 7 2],[443.804 70 0],[460.733 13000 0],[468.508 1.8 3],[472.228 640 0],[474.192 440 0],[478.432 280 0],[481.188 960 0],[483.208 720 0],[485.504 100 0],[486.87 120 0],[487.249 600 0],[487.606 120 0],[487.632 400 0],[489.198 200 0],[496.226 1600 0],[496.794 260 0],[507.109 6 2],[513.034 6 2],[515.607 160 0],[515.826 7 2],[522.22 280 0],[522.511 400 0],[522.927 400 0],[523.855 560 0],[525.69 960 0],[525.771 8 2],[526.221 6 2],[528.832 6 2],[532.982 70 0],[539.103 6 2],[544.348 8 2],[545.084 300 0],[546.39 6 2],[548.084 1400 0],[548.612 220 0],[550.417 700 0],[552.183 520 0],[553.481 400 0],[554.005 400 0],[554.336 50 0],[566.466 6 2],[568.972 6 2],[597.01 40 0],[634.575 50 0],[636.394 50 0],[636.996 70 0],[638.075 200 0],[638.65 180 0],[638.824 120 0],[640.847 1800 0],[644.668 50 0],[646.579 50 0],[650.4 1100 0],[654.679 200 0],[655.026 340 0],[661.726 600 0],[664.354 160 0],[679.105 360 0],[687.838 960 0],[689.259 240 0],[707.01 1100 0],[715.309 12 0],[716.724 50 0],[723.227 40 0],[730.941 500 0],[762.15 100 0],[767.306 80 0],[785 10 0],[786.69 6 0],[787.4 4 0],[842.28 40 0],[850.569 24 1],[868.891 40 1],[871.956 6 1],[917 8 0],[920.45 6 0],[928.39 4 0],[929.41 20 0],[930.66 3 0],[931.92 6 0],[938.045 12 0],[941.125 8 0],[944.895 80 0],[959.6 120 0],[962.47 60 0],[963.81 20 0],[964.77 20 1],[1003.666 60 1],[1032.731 200 1],[1087.27 1.4 1],[1091.488 40 1],[1098.4 2 0],[1122.457 2.6 1],[1124.125 140 0],[1201.476 20 1],[1223.62 4 0],[1244.59 12 1],[1247.96 4 0],[1249.5 8 0],[1265.22 3 0],[1297.47 15 1],[1312.38 20 1],[1352.28 3 0],[1714.09 3 0],[1717.05 6 0],[1744.74 10 0],[1762.6 0.8 1],[1774.3 6 0],[1975.96 3 0],[2026.14 46 0],[2070.0699 24 0],[2076.45 8 0],[2077.8699 3 0],[2602.36 6 0]}{ALLx13000x13000x9200x750x40x10x0}{UVx750x80x280x750x40x10x0}{VISx13000x13000x9200x8x1.8x0x0}{IVx200x140x200x0x0x0x0}%
\pgfspectra@elt@search{#1}{Y}{[21.18 0.3 3],[21.451 0.3 3],[21.597 0.6 3],[21.739 0.6 3],[22.171 1.2 3],[22.218 0.3 3],[22.298 0.6 3],[22.884 0.2 3],[22.894 2 3],[22.978 0.3 3],[23.517 0.3 3],[23.577 2.5 3],[24.212 0.1 3],[24.23 3 3],[24.414 0.3 3],[26.372 0.3 3],[26.464 15 3],[27.24 3 3],[27.303 15 3],[27.86 1 3],[28.918 0.5 4],[29.999 5 4],[31.289 0.3 4],[31.335 20 4],[32.047 4 4],[32.169 4 4],[32.558 15 4],[32.657 20 4],[32.834 17.5 4],[33.04 5 4],[33.309 90 4],[33.38 50 4],[33.512 10 4],[33.514 40 4],[33.662 50 4],[33.902 50 4],[34.002 20 4],[34.042 0.5 4],[34.459 50 4],[34.965 10 4],[34.975 0.2 4],[35.136 1 4],[35.398 10 4],[35.556 10 4],[35.586 90 3],[37.042 30 3],[37.205 30 4],[37.996 40 4],[38.682 50 3],[39.777 20 4],[40.345 30 4],[40.881 0.1 4],[40.931 20 4],[41.503 20 4],[41.818 10 4],[41.859 15 4],[41.979 5 4],[42.074 30 4],[42.503 60 3],[42.787 0.1 4],[43.075 5 4],[43.766 10 4],[44.162 0.3 4],[44.296 3 4],[45.197 0.2 4],[45.584 1.5 4],[45.784 8.5 4],[47.31 30 3],[58.498 400 4],[63.097 200 4],[64.368 0.1 2],[64.669 0.4 2],[65.387 0.6 2],[65.698 1 2],[66.874 2.5 2],[67.198 4 2],[69.172 10 2],[69.385 0.4 2],[69.52 20 2],[72.791 0.9 2],[72.847 0.4 2],[72.883 0.2 2],[72.973 2 2],[73.049 60 2],[73.27 1.5 2],[73.436 80 2],[77.078 1.5 2],[77.179 1 2],[80.426 2 2],[80.52 500 2],[80.618 7.5 2],[80.897 15 2],[80.992 700 2],[85.564 10 2],[85.782 6 2],[98.423 2.5 2],[98.796 1.5 2],[98.921 1500 2],[99.637 2500 2],[99.919 2 2],[100.056 15 2],[100.335 2.5 2],[100.658 100 2],[100.786 120 2],[107.752 12 2],[108.135 50 2],[108.463 7.5 2],[108.839 35 2],[109.525 25 2],[109.587 2.5 2],[110.321 15 2],[128.974 300 2],[130.696 250 2],[131.451 500 2],[131.61 150 2],[133.404 400 2],[154.908 0.8 2],[155.381 1.5 2],[163.514 3 2],[164.043 7.5 2],[177.98 20 2],[178.605 60 2],[204.193 1 2],[204.207 0.5 2],[206.058 150 2],[206.898 400 2],[212.798 1000 2],[219.116 1600 2],[220.076 800 2],[220.603 800 2],[224.306 35 1],[226.141 15 2],[226.157 8 2],[228.434 1000 2],[231.992 0.3 2],[232.731 1000 2],[235.42 5 0],[236.723 5000 2],[237.383 3 -1],[238.524 5 -1],[241.393 2.5 1],[241.464 4000 2],[242.22 56 1],[246.061 6 1],[249.042 2.5 0],[254.028 1.2 -1],[254.757 1.4 -1],[255.017 1 -1],[268.165 2 0],[269.421 6 0],[269.539 2.6 0],[271.03 10 2],[271.054 9 2],[272.3 9.5 0],[273.008 2.2 0],[273.485 2.2 1],[274.253 7 0],[276.01 14 0],[278.011 0.5 2],[278.521 3 1],[278.559 1.2 1],[279.12 1.2 0],[279.144 7 2],[280.011 3 1],[280.327 2 2],[280.7 10 2],[281.364 2.6 0],[281.704 9000 2],[281.886 1.8 0],[282.256 4.5 0],[282.537 2.2 1],[282.638 4.5 1],[285.443 7 1],[285.63 2.6 1],[285.787 1.1 1],[286.767 600 2],[288.648 9.5 0],[289.769 1.8 1],[289.882 1.4 1],[291.341 600 2],[291.774 150 2],[291.856 160 2],[291.905 16 0],[293.003 1.8 1],[294.053 1.5 2],[294.601 9900 2],[294.84 39 0],[294.848 2 2],[296.496 35 0],[297.042 600 2],[297.391 1.8 1],[297.459 48 0],[298.055 3 1],[298.426 75 0],[299.526 7 0],[299.694 14 0],[300.526 7 0],[301.393 140 2],[301.885 150 2],[301.895 5.5 0],[302.173 13 0],[302.228 9 0],[302.649 2.6 1],[303.659 3 1],[304.484 4.5 0],[304.537 19 0],[304.711 2.2 0],[305.522 6 1],[308.685 6 1],[309.17 5.5 0],[309.376 2.2 1],[309.588 9.5 1],[311.181 4.5 0],[311.204 5.5 1],[311.428 2.2 0],[312.877 6 1],[312.993 8 1],[313.517 9.5 1],[317.306 11 1],[317.941 22 1],[319.131 7 0],[319.562 230 1],[320.027 220 1],[320.332 220 1],[321.669 390 1],[324.228 620 1],[326.71 0.3 2],[327.68 2.5 2],[328.091 31 1],[330.847 1.9 1],[332.789 470 1],[334.038 5.5 0],[336.2 16 1],[338.859 8.5 0],[339.704 4.5 0],[341.247 8.5 0],[344.882 20 1],[345.095 7 0],[346.788 11 1],[348.573 17 0],[349.609 170 1],[352.153 8 0],[354.601 4.5 1],[354.901 390 1],[355.18 13 0],[355.269 54 0],[355.876 17 0],[357.143 19 0],[357.605 26 0],[358.452 330 1],[358.775 30 0],[358.969 10 0],[359.292 280 0],[360.073 1000 1],[360.192 620 1],[361.105 780 1],[362.094 430 0],[362.871 190 1],[363.312 780 1],[366.461 300 1],[366.849 4.5 1],[369.253 17 0],[371.03 1300 1],[371.812 6 0],[373.861 6 0],[374.755 120 1],[374.989 5 0],[377.433 1000 1],[377.656 140 1],[378.23 5 1],[378.87 740 1],[381.835 130 1],[383.288 400 1],[384.787 7 1],[386.696 50 2],[387.682 8 0],[387.828 48 1],[388.777 3 0],[390.074 300 2],[390.459 6 0],[391.458 400 2],[391.825 5 0],[393.011 6 0],[393.066 24 1],[395.036 440 1],[395.16 15 1],[395.509 6 0],[398.26 360 1],[398.75 4 0],[403.96 380 2],[403.983 94 0],[404.011 300 2],[404.764 240 0],[407.738 940 0],[408.122 9 0],[408.371 200 0],[410.238 990 0],[410.639 6 0],[411.081 8 0],[412.161 12 2],[412.492 32 1],[412.831 890 0],[414.285 750 0],[415.763 10 0],[416.752 240 0],[417.414 200 0],[417.754 800 1],[419.928 12 1],[420.47 38 1],[421.302 8 0],[421.354 4 0],[421.78 16 0],[422.063 28 0],[422.425 8 0],[423.573 60 1],[423.594 220 0],[425.12 30 0],[430.23 36 0],[430.963 280 1],[431.63 5 0],[433.078 11 0],[433.729 3 0],[434.465 6 0],[434.879 44 0],[435.233 6 0],[435.27 6 0],[435.773 12 0],[435.873 80 1],[436.603 12 0],[437.494 1200 1],[437.561 15 0],[437.933 8 0],[438.548 3 0],[438.774 10 0],[439.401 3 0],[439.467 3 0],[439.802 180 1],[442.259 89 1],[443.734 8 0],[444.366 10 0],[444.663 13 0],[446.527 2 0],[447.389 4 0],[447.572 17 0],[447.696 18 0],[447.745 16 0],[448.728 11 0],[448.747 30 0],[449.175 3 0],[449.242 2.5 0],[450.595 50 0],[451.358 5 0],[451.401 8 0],[452.205 4 0],[452.725 89 0],[452.78 44 0],[454.432 10 0],[455.937 10 0],[456.439 3 0],[457.356 6 0],[458.132 3.5 0],[458.177 3 0],[459.655 13 0],[460.48 9.5 0],[461.3 4 0],[464.37 200 0],[465.832 20 0],[465.889 7 0],[466.747 8.5 0],[467.082 6 0],[467.484 200 0],[467.835 6 0],[468.232 26 1],[468.977 8.5 0],[469.681 18 0],[470.885 3.5 0],[472.585 6 0],[472.853 17 0],[473.237 6 0],[473.762 200 2],[474.14 8.5 0],[475.279 16 0],[476.098 41 0],[478.018 1.7 0],[478.104 12 0],[478.658 16 1],[478.689 17 0],[479.93 18 0],[480.431 5 0],[480.481 7 0],[481.738 8.5 -1],[481.82 14 -1],[481.964 14 0],[482.213 12 0],[482.331 19 1],[483.915 6 0],[483.987 77 0],[484.568 55 0],[485.269 41 0],[485.425 12 0],[485.487 89 1],[485.67 5 0],[485.984 33 0],[487.965 5 0],[488.369 190 1],[488.628 5 0],[488.665 4 0],[489.344 9.5 0],[490.012 110 1],[490.611 10 0],[490.9 4.5 0],[492.187 15 0],[493.093 3.5 0],[495.066 4.5 0],[497.43 12 0],[498.213 12 1],[500.697 10 0],[507.021 7.5 0],[507.219 7.5 0],[508.742 110 1],[508.818 3 0],[510.288 750 2],[511.911 21 1],[512.04 130 2],[512.321 45 1],[513.52 18 0],[519.643 12 1],[520.041 96 1],[520.572 150 1],[523.81 1000 2],[524.081 18 0],[526.358 300 2],[528.982 6 1],[532.078 4.5 1],[538.062 7.5 0],[538.364 400 2],[540.278 22 1],[541.703 2.4 0],[542.437 9 0],[543.824 19 0],[546.646 71 0],[546.847 10 0],[547.339 9 1],[548.074 9 1],[549.317 6 0],[549.559 3.5 0],[549.741 24 1],[550.345 30 0],[550.99 25 1],[551.364 6 0],[552.163 12 0],[552.676 2.4 0],[552.754 74 0],[554.163 3.5 0],[554.45 12 0],[554.602 9 1],[555.643 7.5 0],[556.281 600 2],[556.727 60 2],[556.775 6 0],[557.224 400 2],[557.742 18 0],[558.108 2.4 0],[558.187 62 0],[559.096 2.1 0],[559.412 2.1 0],[559.548 40 2],[560.208 300 2],[560.633 12 0],[562.391 1.5 0],[563.013 56 0],[563.225 2.4 0],[563.289 2.1 0],[564.469 12 0],[564.847 12 0],[566.294 74 1],[567.527 9 0],[569.363 1.8 0],[570.673 16 0],[572.061 2.4 0],[572.889 7.5 1],[573.012 15 -1],[573.209 2.1 0],[574.385 9 0],[574.693 1.8 -1],[576.422 2.4 -1],[576.564 7.5 0],[577.395 3.5 0],[578.169 10 1],[580 1.5 -1],[581.858 1.5 -1],[582.187 3 0],[583.227 2.1 0],[583.807 0.9 -1],[585.883 1.5 -1],[587.183 1.5 0],[587.614 2.4 -1],[587.996 2.4 0],[589.394 2.4 -1],[590.296 3.5 0],[591.219 2.4 -1],[593.11 2.4 -1],[593.908 9 -1],[594.572 4.5 0],[595.002 2.4 0],[595.641 7.5 -1],[597.204 130 -1],[598.186 5 0],[598.764 100 -1],[600.36 74 -1],[600.465 12 -1],[600.919 12 0],[601.987 62 -1],[602.341 12 0],[603.66 50 -1],[605.381 42 -1],[607.278 13 -1],[608.8 5 0],[608.935 21 -1],[609.678 16 -1],[610.782 13 -1],[611.473 13 -1],[612.738 7.5 -1],[613.206 140 -1],[613.504 12 0],[613.843 15 0],[614.836 110 -1],[615.172 12 -1],[616.508 82 -1],[618.223 56 -1],[619.173 120 0],[619.982 59 -1],[621.796 45 -1],[622.259 30 0],[623.672 27 -1],[625.105 4.5 0],[627.501 12 -1],[629.546 6 -1],[631.62 2.4 -1],[633.81 2.4 -1],[635.948 1.5 -1],[636.987 1.5 -1],[640.201 7.5 0],[643.5 100 0],[643.718 2.4 0],[650.123 1.8 -1],[651.833 1.8 -1],[653.584 1.8 -1],[653.86 9 0],[655.384 1.2 -1],[655.739 7 0],[657.258 1.2 -1],[657.685 3.5 0],[658.487 2.3 0],[661.375 9.5 1],[662.249 1.4 0],[663.649 1.9 0],[665.061 4 0],[666.44 2.1 0],[668.758 15 0],[669.183 1.4 0],[669.475 0.7 0],[669.926 1.6 0],[670.071 7 0],[671.32 3.5 0],[673.599 4 0],[679.371 19 0],[679.541 7 1],[680.315 1.2 0],[681.516 2.1 0],[683.249 1.4 1],[684.524 4.5 0],[685.824 1.4 1],[688.722 2.9 0],[689.6 2.1 1],[690.826 0.9 0],[693.352 1.4 0],[695.031 2.4 0],[695.168 1 1],[695.804 1 0],[697.988 2.4 0],[700.897 1.3 0],[700.993 1 0],[703.518 1.9 0],[705.294 2.9 0],[705.428 1.3 0],[707.513 0.9 0],[712.792 1.1 0],[719.166 3.5 0],[719.593 1 0],[725.458 200 2],[726.417 3.5 1],[729.308 0.9 0],[733.062 0.9 0],[733.296 0.5 1],[734.646 5 0],[739.877 1.1 0],[745.03 2.9 1],[749.488 1.7 0],[753.671 0.7 0],[755.871 900 2],[756.313 3.5 0],[761.772 0.8 0],[762.294 1.9 0],[765.289 0.7 0],[768.949 0.5 0],[769.8 0.8 0],[771.989 1.9 0],[772.408 1.9 0],[778.842 1.3 0],[779.632 1.3 0],[780.252 0.6 0],[781.216 1.7 0],[785.552 2.9 0],[786.453 600 2],[788.19 11 1],[791.671 800 2],[798.941 40 2],[799.143 1000 2],[799.933 1 0],[817.141 800 2],[832.961 0.9 0],[834.443 2.4 0],[836.564 0.8 0],[845.036 1.7 0],[852.894 0.8 0],[864.509 400 2],[879.621 1000 2],[880.062 9.5 0],[883.585 1.9 1],[911.659 800 2]}{ALLx9900x990x1300x9900x90x400x140}{UVx9900x430x1300x9900x90x400x5}{VISx1200x990x1200x1000x0x0x140}{IVx1000x9.5x11x1000x0x0x0}%
@@ -80,10 +80,10 @@
\pgfspectra@elt@search{#1}{Ag}{[70.98 40 2],[71.385 40 2],[71.773 20 2],[71.853 40 2],[72.696 60 2],[73.004 70 2],[73.028 30 2],[73.083 5 1],[73.094 30 2],[73.657 40 2],[73.813 20 2],[74.098 40 2],[74.229 40 2],[74.83 40 2],[75.28 6 1],[75.573 30 2],[75.827 20 2],[76.719 40 2],[76.833 50 2],[76.961 30 2],[77.638 70 2],[78.291 40 2],[78.576 30 2],[78.908 40 2],[79.235 50 2],[79.654 40 2],[79.791 50 2],[79.941 80 2],[80.888 60 2],[81.612 30 2],[82.239 36 2],[83.811 40 2],[100.532 3 1],[106.549 2 1],[107.223 2.4 1],[107.422 50 1],[110.703 30 1],[111.246 30 1],[119.583 12 1],[122.333 10 1],[124.08 10 1],[124.687 10 1],[125.681 11 1],[125.755 11 1],[126.663 10 1],[127.367 14 1],[129.751 13 1],[131.12 17 1],[131.381 11 1],[131.461 10 1],[132.384 12 1],[134.209 12 1],[134.257 10 1],[134.662 14 1],[135.354 10 1],[136.45 30 1],[137.322 24 2],[137.476 24 2],[139.6 20 1],[140.493 22 2],[141.093 20 1],[141.39 24 2],[141.429 24 2],[141.972 18 1],[142.861 24 2],[143.26 19 1],[145.274 24 2],[145.641 40 2],[146.472 20 1],[146.623 10 1],[147.144 20 2],[148.901 60 2],[150.737 10 0],[151.508 30 2],[151.563 20 0],[152.423 20 2],[152.704 24 2],[154.114 30 2],[154.858 10 0],[155.089 30 2],[155.304 26 2],[155.516 20 1],[158.741 26 2],[158.928 24 2],[161.379 20 2],[161.914 26 2],[163.446 20 2],[164.45 20 1],[165.152 12 0],[165.21 10 0],[165.224 20 2],[165.36 26 2],[165.443 60 2],[165.618 140 2],[165.71 30 2],[166.154 20 2],[167.075 26 2],[167.614 30 2],[168.107 20 2],[168.282 24 1],[169.351 100 2],[170.506 40 2],[170.811 2 0],[170.886 30 2],[170.927 10 0],[171.768 26 2],[172.227 40 2],[172.676 30 2],[172.814 50 2],[173.644 25 1],[174.734 40 2],[174.964 24 2],[175.089 30 2],[175.103 150 2],[176.057 20 2],[176.262 30 2],[176.614 2 0],[176.87 30 2],[177.181 20 2],[178.385 20 2],[179.037 15 1],[179.17 20 2],[179.269 20 2],[179.39 30 2],[180.224 30 2],[180.226 30 2],[180.277 20 2],[180.823 60 2],[181.683 50 2],[182.245 30 2],[182.883 70 2],[183.233 50 2],[183.25 24 2],[183.431 20 2],[183.61 50 2],[183.864 30 2],[184.014 80 2],[184.696 20 2],[184.771 4 0],[184.993 24 2],[185.633 30 2],[185.891 24 2],[186.039 20 2],[186.064 20 2],[186.712 70 2],[186.81 30 2],[187.255 20 2],[187.345 80 2],[188.036 50 2],[188.957 60 2],[191.692 80 2],[191.708 120 2],[192.53 40 2],[194.632 30 2],[194.844 20 2],[195.762 140 2],[195.927 24 2],[196.086 20 2],[196.689 80 2],[196.738 20 1],[197.592 120 2],[197.703 100 2],[198.187 30 2],[198.702 40 2],[199.516 26 2],[200.024 120 2],[200.73 60 2],[201.149 40 2],[201.365 30 2],[201.596 30 1],[203.398 30 1],[204.133 30 2],[205.317 30 2],[205.383 30 2],[205.699 40 2],[206.117 40 0],[206.985 20 0],[208.104 40 2],[211.382 16 1],[214.56 12 1],[214.647 60 2],[214.919 30 2],[216.189 120 2],[216.621 30 2],[217 3 0],[218.676 10 1],[221.123 30 2],[222.953 12 1],[223.84 20 2],[224.643 20 1],[224.651 100 2],[224.874 15 1],[228.003 15 1],[228.65 20 2],[230.956 6 0],[231.004 140 2],[231.26 2 0],[231.705 14 1],[232.029 16 1],[232.468 14 1],[233.14 16 1],[235.792 14 1],[237.502 10 0],[238.685 20 2],[239.569 60 2],[241.141 15 1],[241.323 18 1],[243.781 20 1],[244.793 16 1],[246.962 20 2],[247.384 16 1],[250.663 12 1],[256.287 20 2],[257.563 10 0],[266.049 12 1],[272.177 12 0],[276.754 15 1],[282.439 20 0],[292.677 2 0],[293.842 4 0],[309.91 4 0],[313.002 6 0],[317.058 2 0],[318.07 18 1],[321.567 3 0],[322.515 2 0],[323.318 3 0],[326.735 20 1],[328.068 11000 0],[330.567 2 0],[338.289 5600 0],[340.378 2 0],[346.916 6 0],[347.582 14 1],[349.528 16 1],[350.192 4 0],[350.803 4 0],[351.338 3 0],[352.112 2 0],[354.261 10 0],[354.716 2 0],[355.701 2 0],[358.667 4 0],[362.349 2 0],[362.468 10 0],[368.246 15 1],[368.25 6 0],[368.334 16 1],[370.92 10 0],[372.742 2 0],[375.314 4 0],[381.094 40 0],[381.178 10 0],[384.074 20 0],[384.785 3 0],[390.741 10 0],[390.931 10 1],[391.44 10 0],[392.01 14 1],[392.801 2 0],[394.043 2 0],[394.297 2 0],[394.943 12 1],[398.158 20 0],[398.519 14 1],[399.215 2 0],[405.548 20 0],[408.343 2 0],[408.591 16 1],[418.548 20 1],[421.096 18 0],[421.282 20 0],[431.107 10 0],[439.623 4 0],[447.604 10 0],[455.6 4 0],[461.569 6 0],[462.004 16 1],[462.046 10 1],[466.848 12 0],[467.76 6 0],[478.84 20 1],[479.62 4 0],[484.782 6 0],[487.41 20 0],[488.821 4 0],[491.75 2 0],[493.575 2 0],[499.289 4 0],[502.735 16 1],[512.35 3 0],[520.908 200 0],[533.362 2 0],[546.55 200 0],[547.155 20 0],[547.538 4 0],[554.567 4 0],[555.958 2 0],[566.734 20 0],[608.378 2 0],[626.85 2 0],[662.108 4 0],[735.996 4 0],[768.778 64 0],[800.54 5 1],[825.47 3 1],[827.352 100 0],[832.44 4 1],[837.95 3 1],[840.38 5 1],[849.25 3 1],[864.57 6 0],[870.485 2 0],[874.76 2.4 1],[900.09 3 1],[1255.1 2 0],[1681.95 12 0],[1741.6699 4 0],[1830.79 3 0],[1838.2301 3 0]}{ALLx11000x11000x50x150x0x0x0}{UVx11000x11000x50x150x0x0x0}{VISx200x200x20x0x0x0x0}{IVx100x100x5x0x0x0x0}%
\pgfspectra@elt@search{#1}{Cd}{[42.701 50 3],[43.788 20 3],[44.785 50 3],[48.09 60 3],[48.949 10 3],[49.3 70 3],[49.513 70 3],[49.814 70 3],[49.853 70 3],[50.409 80 3],[50.42 70 3],[50.45 70 3],[50.631 80 3],[50.801 60 3],[50.895 50 3],[50.955 70 3],[50.981 25 3],[51.14 70 3],[51.3 80 3],[51.45 70 3],[51.942 60 3],[52.097 15 3],[52.441 80 3],[52.447 70 3],[52.477 50 3],[52.51 70 3],[52.519 60 3],[52.707 70 3],[53.079 50 3],[53.109 80 3],[53.151 80 3],[53.429 70 3],[53.677 70 3],[53.724 50 3],[54.09 60 3],[54.174 70 3],[54.26 80 3],[54.655 80 3],[54.801 40 3],[54.833 20 3],[54.89 15 3],[55.127 25 3],[55.29 20 3],[55.306 60 3],[55.405 80 3],[56.026 25 3],[56.416 10 3],[56.701 60 3],[67.739 8 2],[68.458 15 2],[72.07 10 2],[106.223 20 3],[111.816 150 3],[112.6 30 3],[113.408 20 3],[113.904 15 3],[115.464 20 3],[115.573 10 3],[116.465 100 3],[116.578 20 3],[116.73 40 3],[117.973 20 3],[118.307 15 3],[118.34 100 3],[119.413 40 3],[119.563 20 3],[119.647 30 3],[119.893 20 3],[121.538 15 3],[122.352 20 3],[124.606 20 3],[124.656 15 3],[124.994 15 3],[125.6 100 1],[126.647 30 3],[127.441 15 3],[128.563 20 3],[128.758 20 3],[129.643 150 1],[129.946 20 3],[130.436 40 3],[130.607 30 3],[131.689 15 3],[132.185 15 3],[132.555 20 3],[132.65 100 1],[134.097 30 3],[134.615 15 3],[135.478 30 3],[135.811 20 3],[136.255 30 3],[137.048 60 3],[137.091 150 1],[138.098 30 3],[138.36 5 2],[139.21 15 2],[139.678 10 2],[139.765 20 3],[140.368 30 3],[140.658 15 3],[141.628 25 2],[141.889 60 3],[142.029 5 2],[142.054 8 2],[142.983 15 3],[143.286 5 2],[144.608 20 2],[144.754 20 3],[144.755 25 2],[145.263 20 3],[145.574 30 2],[146.597 15 3],[146.614 8 2],[146.667 15 3],[147.197 5 2],[148.295 15 3],[149.179 20 3],[149.181 15 2],[151.101 5 2],[151.165 10 2],[151.313 5 2],[151.426 200 1],[152.355 10 2],[152.84 15 2],[152.93 30 2],[153.21 5 2],[154.517 50 2],[154.757 25 2],[155.007 10 2],[155.045 20 2],[155.089 15 2],[155.218 5 2],[155.648 5 2],[156.066 15 2],[156.603 5 2],[156.898 15 2],[157.02 20 3],[157.158 200 1],[158.239 10 2],[159.873 20 3],[160.042 20 3],[160.159 40 2],[160.487 20 2],[160.664 20 2],[160.728 10 2],[160.891 15 2],[160.961 10 2],[161.251 15 2],[162.287 15 3],[162.527 15 2],[162.854 25 2],[165.187 20 2],[165.563 25 2],[166.86 100 1],[167.815 30 2],[169.97 10 2],[170.247 50 1],[170.716 40 2],[172.193 10 2],[172.295 40 2],[172.441 50 1],[172.566 30 2],[173.9 25 2],[174.569 5 2],[174.767 40 2],[174.815 15 2],[176.882 30 2],[177.306 40 2],[178.584 100 1],[178.919 30 2],[179.34 75 2],[179.61 15 2],[180.057 5 2],[182.341 40 2],[182.77 100 1],[184.466 50 2],[185.113 40 2],[185.137 20 2],[185.585 40 2],[185.667 200 2],[187.408 150 2],[188.649 15 2],[190.348 15 2],[190.998 25 2],[191.057 15 2],[192.223 300 1],[193.959 10 2],[194.354 100 1],[196.554 40 1],[198.689 30 1],[198.881 15 2],[199.543 200 1],[200.06 20 2],[200.407 15 2],[200.749 100 1],[201.612 15 2],[203.245 50 1],[203.623 75 1],[203.983 40 2],[204.561 50 2],[206.125 10 2],[208.791 75 2],[209.6 150 1],[209.745 10 2],[210.047 5 2],[211.16 50 2],[214.441 1000 1],[215.506 50 1],[218.779 100 1],[218.813 5 2],[219.456 1000 1],[221.843 5 2],[222.443 5 2],[226.502 1000 1],[228.8022 1500 0],[231.277 1000 1],[232.107 200 1],[237.682 40 1],[241.824 7 2],[241.869 50 1],[242.636 10 2],[246.973 50 1],[248.793 40 1],[249.1 3 0],[249.558 40 1],[249.981 25 2],[250.891 10 0],[250.911 50 1],[251.622 30 1],[251.859 15 0],[252.5196 25 0],[254.4613 50 0],[255.198 50 1],[255.3465 25 0],[256.5789 3 0],[257.293 500 1],[258.0106 50 0],[258.487 3 0],[259.2026 30 0],[260.2048 25 0],[261.881 15 2],[262.8979 50 0],[263.056 5 2],[263.219 40 0],[263.942 75 0],[265.923 40 1],[266.0325 50 0],[266.82 25 1],[267.262 50 1],[267.754 100 0],[267.7748 25 0],[270.7 50 1],[271.2505 75 0],[273.382 50 0],[274.854 1000 1],[276.3894 100 0],[276.423 50 0],[276.699 20 2],[277.4958 50 0],[280.559 30 2],[282.319 30 1],[283.69 200 0],[285.646 25 1],[286.818 100 0],[288.0767 200 0],[288.1224 50 0],[291.467 200 1],[292.787 50 1],[292.927 200 1],[298.062 1000 0],[298.1362 200 0],[298.1845 50 0],[303.06 50 1],[303.572 10 2],[308.0822 150 0],[308.148 25 1],[308.2593 30 0],[309.234 100 1],[313.3167 200 0],[314.679 50 1],[325.033 150 1],[325.2524 300 0],[326.1055 300 0],[334.321 50 1],[338.549 50 1],[338.888 30 1],[340.3652 800 0],[341.749 50 1],[344.242 50 1],[346.443 100 1],[346.62 1000 0],[346.7655 800 0],[348.308 25 1],[349.544 150 1],[349.9952 25 0],[352.411 100 1],[353.569 100 1],[361.0508 1000 0],[361.2873 800 0],[361.4453 60 0],[364.9558 20 0],[398.1926 10 0],[402.912 100 1],[413.477 200 1],[414.149 50 1],[428.508 100 1],[430.6672 8 0],[441.241 100 1],[441.2989 3 0],[441.563 1000 1],[444.045 30 1],[466.2352 8 0],[467.8149 200 0],[474.469 30 1],[479.9912 300 0],[488.172 50 1],[502.55 50 1],[508.5822 1000 0],[515.466 6 0],[526.801 100 1],[527.16 100 1],[533.748 1000 1],[537.813 1000 1],[538.189 200 1],[584.33 40 1],[588.022 50 1],[609.9142 300 0],[611.149 100 0],[632.5166 100 0],[633.0013 30 0],[635.472 400 1],[635.998 500 1],[643.847 2000 0],[646.494 400 1],[656.765 25 1],[672.578 500 1],[675.919 100 1],[677.8116 30 0],[723.701 50 1],[728.438 100 1],[734.567 1000 0],[806.699 50 1],[820.0309 5 0],[929.2 20 0],[1165.5 15 0],[1449.1 35 0],[1571.2 80 0],[1912.5 55 0],[2437.8 25 0],[2545.5 35 0]}{ALLx2000x2000x1000x200x150x0x0}{UVx1500x1500x1000x200x150x0x0}{VISx2000x2000x1000x0x0x0x0}{IVx80x80x50x0x0x0x0}%
\pgfspectra@elt@search{#1}{In}{[36.867 3 4],[37.01 3 4],[37.282 5 4],[37.294 5 4],[37.495 1 4],[37.584 3 4],[37.607 3 4],[37.679 5 4],[37.861 8.5 4],[37.924 1.5 4],[38.027 4.5 4],[38.156 5.5 4],[38.214 4.5 4],[38.276 5.5 4],[38.305 5 4],[38.621 8.5 4],[38.67 5 4],[38.866 1.5 4],[38.891 7 4],[39.003 5.5 4],[39.092 5.5 4],[39.229 4.5 4],[39.246 4.5 4],[39.36 0.5 4],[39.389 12.5 4],[39.574 5.5 4],[39.773 1.5 4],[39.979 5 4],[40.005 4.5 4],[40.057 12.5 4],[40.239 12.5 4],[40.533 1.5 4],[40.728 4.5 4],[40.736 1.5 4],[40.795 4.5 4],[41.743 4.5 4],[41.845 1 4],[42.316 1 4],[67.733 4 3],[68.453 7.5 3],[68.531 3.5 2],[69.162 2.5 2],[72.064 4 3],[78.217 0.5 2],[88.224 5 2],[89.084 5 2],[91.587 5 2],[91.745 1 2],[92.683 2.5 2],[140.308 15 2],[143.485 15 2],[147.034 2 3],[148.77 10 2],[149.414 10 2],[151.262 2.5 3],[152.35 2.5 3],[152.478 5 2],[153.021 10 2],[153.203 3.5 3],[153.295 15 2],[156.892 4 3],[156.933 1.5 3],[160.15 6 3],[160.508 0.5 3],[160.659 3.5 3],[162.542 50 2],[162.848 5 3],[164.228 10 2],[164.8 1 0],[165.18 4 3],[165.562 5 3],[166.738 0.5 3],[167.064 2.5 3],[167.616 0.5 0],[167.807 6 3],[170.202 2 3],[170.253 10 2],[170.711 7.5 3],[171.154 2.5 0],[172.189 3.5 3],[174.123 1 0],[174.765 6 3],[174.81 5 3],[174.883 50 2],[175.849 0.5 0],[176.788 1 2],[176.877 5 3],[177.301 6 3],[178.915 4 3],[179.338 6 3],[181.071 0.5 2],[184.241 15 2],[184.467 6 3],[185.03 20 2],[185.11 4.5 3],[185.584 4.5 3],[185.664 7.5 3],[186.298 7.5 2],[187.408 7.5 3],[190.352 2.5 3],[193.958 2.5 3],[194.331 1.5 3],[200.473 3 3],[210.117 0.5 3],[210.389 5 1],[211.231 4 3],[215.408 15 2],[215.442 1 2],[216.688 5 1],[217.99 1 0],[218.24 1 0],[218.74 1 0],[219.084 1 0],[219.567 7.5 1],[219.741 1 0],[219.952 5 2],[220.224 1 0],[220.528 25 1],[221.114 1.5 0],[222.513 2 3],[223.07 2.5 0],[223.218 2.5 2],[224.166 1.5 0],[225.579 15 1],[225.999 5 0],[226.126 10 2],[226.626 2.5 2],[227.241 2.5 2],[227.284 2.5 2],[227.82 2.5 0],[228.164 20 1],[228.375 1 0],[229.833 1 0],[229.87 1 0],[230.09 5 2],[230.249 1 0],[230.605 50 1],[230.686 12.5 0],[230.932 1.5 0],[230.975 1 0],[231.321 45 1],[231.509 1 0],[232.34 15 1],[232.441 2.5 0],[232.492 1.5 0],[232.795 35 1],[233.276 1.5 0],[233.457 40 1],[234.019 5 0],[234.59 4 0],[234.656 2.5 0],[235.075 25 1],[235.87 2.5 0],[237.814 7.5 0],[237.9 5 0],[238.263 55 1],[238.954 20 0],[239.318 20 1],[239.918 5 0],[240.647 25 1],[240.876 25 1],[241.906 25 1],[241.92 25 1],[242.72 35 1],[242.986 10 0],[243.099 5 0],[243.273 25 1],[244.263 30 1],[244.79 50 1],[245.323 30 1],[246.008 30 0],[246.802 15 0],[248.615 35 1],[248.862 55 1],[248.895 45 1],[249.859 40 1],[249.96 50 1],[250.099 45 1],[250.816 30 1],[251.231 55 1],[252.137 50 0],[252.298 5 0],[252.741 50 2],[255.356 35 1],[255.444 80 1],[256.015 550 0],[256.513 35 1],[259.875 35 1],[260.176 100 0],[260.404 25 1],[265.47 45 1],[266.263 50 1],[266.865 70 1],[267.456 70 1],[268.312 40 1],[271.026 800 0],[271.394 150 0],[272.552 25 2],[272.615 40 2],[274.975 65 1],[275.388 350 0],[277.537 20 0],[279.876 30 1],[281.897 45 1],[283.692 90 0],[285.814 15 0],[286.568 40 1],[289.018 60 1],[293.263 550 0],[294.105 50 1],[295.701 10 0],[296.617 30 1],[298.28 50 2],[299.94 55 1],[300.808 50 2],[300.882 15 2],[303.936 4000 0],[305.115 4 0],[309.98 55 1],[310.18 90 1],[313.86 65 1],[314.275 40 1],[314.67 65 1],[315.577 75 1],[315.84 50 1],[317.63 45 1],[319.811 45 1],[325.609 6500 0],[325.856 1500 0],[329.355 15 2],[333.85 45 1],[335.091 4 2],[337.659 37.5 1],[340.428 50 1],[343.84 55 1],[356.232 2.5 2],[369.391 90 1],[370.813 47.5 1],[371.614 190 1],[371.83 60 1],[371.872 80 1],[372.34 80 1],[379.521 85 1],[379.921 115 1],[383.465 125 1],[384.218 100 1],[385.282 50 2],[388.978 50 1],[390.207 50 1],[392.212 30 1],[393.44 32.5 1],[396.235 125 1],[400.466 60 1],[401.392 70 1],[402.377 50 2],[403.232 75 2],[405.694 205 1],[406.23 25 2],[407.157 50 2],[407.293 50 2],[410.176 8500 0],[420.514 70 1],[421.304 50 1],[421.966 55 1],[425.268 50 2],[437.287 75 1],[450.078 75 1],[450.958 20 2],[451.131 9000 0],[454.901 55 1],[457.085 70 1],[457.802 90 1],[457.84 90 1],[461.608 70 1],[461.717 85 1],[462.014 125 1],[462.07 75 1],[462.73 85 1],[463.704 70 1],[463.816 190 1],[464.458 110 1],[465.562 180 1],[465.674 160 1],[468.111 95 1],[468.48 225 1],[487.837 1.5 0],[490.706 45 1],[492.493 35 1],[497.377 75 1],[510.936 40 1],[511.514 50 1],[511.74 70 1],[512.08 135 1],[512.175 100 1],[512.985 40 1],[517.542 120 1],[518.444 70 1],[524.877 100 2],[525.432 15 0],[526.274 6 0],[530.945 75 1],[541.141 40 1],[541.845 70 1],[543.67 110 1],[549.75 65 1],[550.708 70 1],[551.3 160 1],[552.328 125 1],[553.65 65 1],[555.545 95 1],[557.69 120 1],[563.67 100 1],[564.515 50 2],[570.85 80 1],[570.991 25 0],[572.18 50 1],[572.317 20 2],[572.768 25 0],[581.95 50 2],[585.315 105 1],[590.34 245 1],[591.54 130 1],[591.878 60 1],[606.29 65 1],[609.595 125 1],[610.866 105 1],[611.59 90 1],[612.87 115 1],[612.94 120 1],[613.21 160 1],[614 75 1],[614.323 45 1],[614.81 70 1],[614.95 95 1],[616.115 40 1],[616.245 90 1],[619.772 100 2],[622.428 50 1],[622.83 140 1],[623.11 70 1],[630.48 135 1],[636.23 145 1],[646.9 150 1],[654.12 105 1],[675.188 95 1],[676.59 90 1],[678.372 50 1],[684.744 4 0],[689.15 160 1],[690.013 2 0],[718.29 190 1],[725.5 90 1],[727.65 105 1],[730.34 90 1],[735.06 160 1],[763.27 50 1],[768.29 50 1],[774.07 105 1],[777.696 50 1],[778.9 90 1],[780.68 35 1],[781.45 35 1],[784.09 45 1],[805.078 10 0],[822.7 120 1],[823.866 15 0],[831.492 7.5 0],[843.455 25 1],[867.895 15 0],[868.263 10 0],[870.025 25 0],[881.35 50 1],[883.26 40 1],[889.447 20 0],[917.008 5 0],[919.77 60 1],[920.2 60 1],[921.3 110 1],[924.11 80 1],[934.983 20 0],[937.027 30 0],[942.799 10 0],[997.786 50 0],[1025.703 100 0],[1071.742 30 0],[1074.431 50 0],[1133.472 10 0],[1173.148 10 0],[1291.259 5 0],[1342.996 4.5 0],[1382.448 2.5 0],[1431.625 3 0],[1441.92 1.5 0],[1466.866 3 0],[1471.908 3.5 0],[1650.4311 1 0],[2229.1061 3 0],[2387.9131 3.5 0]}{ALLx9000x9000x245x100x7.5x12.5x0}{UVx6500x6500x190x50x7.5x12.5x0}{VISx9000x9000x245x100x0x0x0}{IVx120x100x120x0x0x0x0}%
-\pgfspectra@elt@search{#1}{Sn}{[1.6 7 1],[35.514 120 4],[36.101 150 4],[37.255 100 4],[60.523 50 3],[61.904 50 3],[62.873 50 3],[75.301 100 2],[76.062 50 2],[77.579 75 2],[78.468 50 2],[89.992 1 1],[90.822 50 3],[91.092 200 2],[91.74 2 1],[93.563 1 1],[94.583 3 1],[95.45 4 1],[95.625 500 3],[98.513 7 1],[99.721 4 1],[101.092 50 2],[101.626 2 1],[101.972 500 3],[104.078 4 1],[104.132 1 1],[104.449 1000 3],[104.884 50 2],[105.837 100 3],[105.859 50 3],[106.21 3 1],[107.341 1000 3],[108.75 200 3],[108.935 200 4],[109.692 300 3],[110.324 50 3],[110.819 8 1],[111.934 0 3],[112.068 200 3],[113.279 100 4],[113.929 1000 2],[115.833 1000 2],[115.905 4 1],[116.074 200 4],[116.109 200 2],[116.143 10 1],[116.158 100 2],[116.294 3 1],[117.626 100 4],[118.051 4 1],[118.062 100 2],[118.425 1000 2],[118.992 100 4],[118.999 200 2],[120.406 200 2],[120.572 100 4],[121.052 2000 2],[121.51 100 2],[121.814 100 2],[121.907 9 1],[122.37 13 1],[123.017 100 2],[123.138 100 2],[124.3 11 1],[124.363 500 2],[125.138 2000 4],[125.992 1000 2],[127.631 40 2],[128.381 100 4],[129.086 20 1],[129.436 200 4],[130.22 100 4],[130.597 1000 2],[131.455 1000 3],[131.659 20 1],[132.734 1000 2],[133.47 200 2],[134.605 200 2],[134.765 1000 2],[136.971 200 2],[138.674 1000 2],[140.052 25 1],[141.061 500 2],[143.752 1000 3],[144.977 200 2],[147.515 20 1],[148.922 9 1],[153.29 100 3],[157.036 1000 2],[167.429 50 2],[173.721 10 0],[175.146 15 0],[175.33 10 0],[175.8 7 1],[176.498 20 0],[177.34 20 0],[179.075 30 0],[180.46 80 0],[181.134 15 1],[181.171 500 2],[181.304 30 0],[181.574 40 0],[181.931 25 0],[182.3 120 0],[183.189 9 1],[184.875 50 0],[185.2 30 0],[186.032 200 0],[186.142 20 0],[186.552 20 0],[186.596 30 0],[187.329 15 0],[188.264 30 0],[188.605 80 0],[189.14 100 0],[189.729 20 0],[189.991 12 1],[190.93 50 0],[191.161 40 0],[191.352 20 0],[192.531 80 0],[192.677 20 0],[192.795 15 0],[192.89 40 0],[193.317 25 0],[194.186 500 2],[194.269 20 0],[195.215 150 0],[195.552 50 2],[196.021 15 0],[197.146 30 0],[197.76 50 0],[198.42 80 0],[199.188 15 0],[199.498 20 0],[200.805 25 0],[201.576 30 0],[202.698 30 0],[204.066 50 0],[204.09 20 0],[205.403 50 0],[205.831 70 0],[206.4 20 0],[206.858 80 0],[207.289 100 0],[207.308 100 0],[208.062 25 0],[209.158 30 0],[209.435 40 0],[209.639 200 0],[210.093 100 0],[211.393 100 0],[212.126 50 0],[214.073 25 0],[214.143 20 0],[214.846 15 0],[214.863 1 1],[214.873 40 0],[215.143 20 0],[215.154 30 1],[217.132 80 0],[219.449 150 0],[219.934 300 0],[220.965 400 0],[220.967 4 1],[221.105 40 0],[223.172 80 0],[224.605 400 0],[224.607 6 1],[225.117 60 0],[226.719 30 0],[226.891 400 0],[228.226 20 0],[228.668 200 0],[231.723 600 0],[233.48 300 0],[235.484 1000 0],[235.79 20 0],[236.034 3 1],[236.833 22 1],[238.072 60 0],[238.454 4 1],[240.815 100 0],[242.17 800 0],[242.949 1000 0],[243.352 1 1],[244.898 15 1],[245.524 60 0],[247.64 20 0],[248.339 300 0],[248.348 13 1],[248.699 10 1],[249.57 200 0],[252.261 5 1],[252.392 90 0],[253.117 80 0],[254.655 400 0],[255.801 40 0],[257.158 500 0],[259.442 200 0],[263.694 50 0],[266.124 200 0],[266.493 2 1],[270.651 700 0],[272.782 2 1],[276.178 20 0],[277.981 150 0],[278.503 80 0],[278.796 60 0],[281.259 60 0],[281.358 80 0],[282.552 2 1],[283.999 1400 0],[284.642 1 1],[285.062 200 0],[286.332 1000 0],[291.28 1 1],[291.354 200 0],[291.982 6 1],[299.1 3 1],[299.444 7 1],[300.914 700 0],[301.218 1 1],[302.394 8 1],[303.28 200 0],[303.412 850 0],[304.75 12 1],[309.469 6 1],[314.184 60 0],[317.505 550 0],[321.871 40 0],[326.234 550 0],[328.321 50 1],[333.062 110 0],[335.197 60 1],[340.748 2 1],[347.246 10 1],[353.757 7 1],[357.545 11 1],[358.239 3 1],[362.008 2 1],[362.054 6 1],[365.578 40 0],[371.523 6 1],[380.102 280 0],[384.144 4 1],[429.465 1 1],[452.474 40 0],[457.913 1 1],[458.029 1 1],[487.722 2 1],[494.431 3 1],[497.973 20 0],[507.114 2 1],[507.267 2 1],[517.454 20 0],[533.236 10 1],[556.195 20 1],[558.892 25 1],[559.62 2 1],[563.171 500 0],[575.359 15 0],[579.72 1 1],[579.918 15 1],[592.544 50 0],[597.03 100 0],[603.77 150 0],[605.486 200 -1],[606.9 250 0],[607.346 100 0],[607.748 6 1],[607.97 5 1],[614.971 400 0],[615.46 200 0],[617.15 150 0],[631.078 100 0],[635.435 40 0],[645.35 70 1],[676.145 8 1],[684.405 25 1],[719.14 20 1],[738.779 10 1],[739.86 20 0],[740.862 1 1],[768.53 30 0],[774.18 13 1],[775.497 100 0],[790.4 3 1],[803.05 100 0],[803.93 30 0],[811.409 200 0],[812.1 30 0],[834.935 30 0],[835.704 80 0],[842.272 300 0],[855.26 400 0],[868.17 50 0],[901.895 30 0],[941.086 50 0],[941.537 80 0],[961.64 150 0],[974.11 50 0],[974.28 100 0],[980.538 300 0],[985.052 500 0],[1045.647 25 0],[1080.758 11 0],[1089.4 54 0],[1119.185 70 0],[1127.766 56 0],[1133.697 17 0],[1145.459 200 0],[1161.626 200 0],[1167.077 76 0],[1169.445 25 0],[1173.978 258 0],[1182.518 96 0],[1183.582 106 0],[1193.299 254 0],[1200.95 48 0],[1231.324 111 0],[1233.56 33 0],[1253.087 42 0],[1253.65 42 0],[1278.82 37 0],[1288.85 89 0],[1298.17 187 0],[1300.03 20 0],[1301.85 187 0],[1308.15 68 0],[1346.02 378 0],[1360.82 144 0],[1501.82 13 0],[1546.42 30 0],[1700.05 20 0],[1780.75 10 0],[2062.2199 20 0],[2086.1699 40 0],[2168.6199 8 0],[2213.1699 4 0],[2299.7199 3 0],[2432.7199 4 0],[2473.8199 4 0]}{ALLx2000x1400x70x2000x1000x2000x200}{UVx2000x1400x60x2000x1000x2000x0}{VISx500x500x70x0x0x0x200}{IVx500x500x3x0x0x0x0}%
+\pgfspectra@elt@search{#1}{Sn}{[35.514 120 4],[36.101 150 4],[37.255 100 4],[60.523 50 3],[61.904 50 3],[62.873 50 3],[75.301 100 2],[76.062 50 2],[77.579 75 2],[78.468 50 2],[89.992 1 1],[90.822 50 3],[91.092 200 2],[91.74 2 1],[93.563 1 1],[94.583 3 1],[95.45 4 1],[95.625 500 3],[98.513 7 1],[99.721 4 1],[101.092 50 2],[101.626 2 1],[101.972 500 3],[104.078 4 1],[104.132 1 1],[104.449 1000 3],[104.884 50 2],[105.837 100 3],[105.859 50 3],[106.21 3 1],[107.341 1000 3],[108.75 200 3],[108.935 200 4],[109.692 300 3],[110.324 50 3],[110.819 8 1],[111.934 0 3],[112.068 200 3],[113.279 100 4],[113.929 1000 2],[115.833 1000 2],[115.905 4 1],[116.074 200 4],[116.109 200 2],[116.143 10 1],[116.158 100 2],[116.294 3 1],[117.626 100 4],[118.051 4 1],[118.062 100 2],[118.425 1000 2],[118.992 100 4],[118.999 200 2],[120.406 200 2],[120.572 100 4],[121.052 2000 2],[121.51 100 2],[121.814 100 2],[121.907 9 1],[122.37 13 1],[123.017 100 2],[123.138 100 2],[124.3 11 1],[124.363 500 2],[125.138 2000 4],[125.992 1000 2],[127.631 40 2],[128.381 100 4],[129.086 20 1],[129.436 200 4],[130.22 100 4],[130.597 1000 2],[131.455 1000 3],[131.659 20 1],[132.734 1000 2],[133.47 200 2],[134.605 200 2],[134.765 1000 2],[136.971 200 2],[138.674 1000 2],[140.052 25 1],[141.061 500 2],[143.752 1000 3],[144.977 200 2],[147.515 20 1],[148.922 9 1],[153.29 100 3],[157.036 1000 2],[167.429 50 2],[173.721 10 0],[175.146 15 0],[175.33 10 0],[175.8 7 1],[176.498 20 0],[177.34 20 0],[179.075 30 0],[180.46 80 0],[181.134 15 1],[181.171 500 2],[181.304 30 0],[181.574 40 0],[181.931 25 0],[182.3 120 0],[183.189 9 1],[184.875 50 0],[185.2 30 0],[186.032 200 0],[186.142 20 0],[186.552 20 0],[186.596 30 0],[187.329 15 0],[188.264 30 0],[188.605 80 0],[189.14 100 0],[189.729 20 0],[189.991 12 1],[190.93 50 0],[191.161 40 0],[191.352 20 0],[192.531 80 0],[192.677 20 0],[192.795 15 0],[192.89 40 0],[193.317 25 0],[194.186 500 2],[194.269 20 0],[195.215 150 0],[195.552 50 2],[196.021 15 0],[197.146 30 0],[197.76 50 0],[198.42 80 0],[199.188 15 0],[199.498 20 0],[200.805 25 0],[201.576 30 0],[202.698 30 0],[204.066 50 0],[204.09 20 0],[205.403 50 0],[205.831 70 0],[206.4 20 0],[206.858 80 0],[207.289 100 0],[207.308 100 0],[208.062 25 0],[209.158 30 0],[209.435 40 0],[209.639 200 0],[210.093 100 0],[211.393 100 0],[212.126 50 0],[214.073 25 0],[214.143 20 0],[214.846 15 0],[214.863 1 1],[214.873 40 0],[215.143 20 0],[215.154 30 1],[217.132 80 0],[219.449 150 0],[219.934 300 0],[220.965 400 0],[220.967 4 1],[221.105 40 0],[223.172 80 0],[224.605 400 0],[224.607 6 1],[225.117 60 0],[226.719 30 0],[226.891 400 0],[228.226 20 0],[228.668 200 0],[231.723 600 0],[233.48 300 0],[235.484 1000 0],[235.79 20 0],[236.034 3 1],[236.833 22 1],[238.072 60 0],[238.454 4 1],[240.815 100 0],[242.17 800 0],[242.949 1000 0],[243.352 1 1],[244.898 15 1],[245.524 60 0],[247.64 20 0],[248.339 300 0],[248.348 13 1],[248.699 10 1],[249.57 200 0],[252.261 5 1],[252.392 90 0],[253.117 80 0],[254.655 400 0],[255.801 40 0],[257.158 500 0],[259.442 200 0],[263.694 50 0],[266.124 200 0],[266.493 2 1],[270.651 700 0],[272.782 2 1],[276.178 20 0],[277.981 150 0],[278.503 80 0],[278.796 60 0],[281.259 60 0],[281.358 80 0],[282.552 2 1],[283.999 1400 0],[284.642 1 1],[285.062 200 0],[286.332 1000 0],[291.28 1 1],[291.354 200 0],[291.982 6 1],[299.1 3 1],[299.444 7 1],[300.914 700 0],[301.218 1 1],[302.394 8 1],[303.28 200 0],[303.412 850 0],[304.75 12 1],[309.469 6 1],[314.184 60 0],[317.505 550 0],[321.871 40 0],[326.234 550 0],[328.321 50 1],[333.062 110 0],[335.197 60 1],[340.748 2 1],[347.246 10 1],[353.757 7 1],[357.545 11 1],[358.239 3 1],[362.008 2 1],[362.054 6 1],[365.578 40 0],[371.523 6 1],[380.102 280 0],[384.144 4 1],[429.465 1 1],[452.474 40 0],[457.913 1 1],[458.029 1 1],[487.722 2 1],[494.431 3 1],[497.973 20 0],[507.114 2 1],[507.267 2 1],[517.454 20 0],[533.236 10 1],[556.195 20 1],[558.892 25 1],[559.62 2 1],[563.171 500 0],[575.359 15 0],[579.72 1 1],[579.918 15 1],[592.544 50 0],[597.03 100 0],[603.77 150 0],[605.486 200 -1],[606.9 250 0],[607.346 100 0],[607.748 6 1],[607.97 5 1],[614.971 400 0],[615.46 200 0],[617.15 150 0],[631.078 100 0],[635.435 40 0],[645.35 70 1],[676.145 8 1],[684.405 25 1],[719.14 20 1],[738.779 10 1],[739.86 20 0],[740.862 1 1],[768.53 30 0],[774.18 13 1],[775.497 100 0],[790.4 3 1],[803.05 100 0],[803.93 30 0],[811.409 200 0],[812.1 30 0],[834.935 30 0],[835.704 80 0],[842.272 300 0],[855.26 400 0],[868.17 50 0],[901.895 30 0],[941.086 50 0],[941.537 80 0],[961.64 150 0],[974.11 50 0],[974.28 100 0],[980.538 300 0],[985.052 500 0],[1045.647 25 0],[1080.758 11 0],[1089.4 54 0],[1119.185 70 0],[1127.766 56 0],[1133.697 17 0],[1145.459 200 0],[1161.626 200 0],[1167.077 76 0],[1169.445 25 0],[1173.978 258 0],[1182.518 96 0],[1183.582 106 0],[1193.299 254 0],[1200.95 48 0],[1231.324 111 0],[1233.56 33 0],[1253.087 42 0],[1253.65 42 0],[1278.82 37 0],[1288.85 89 0],[1298.17 187 0],[1300.03 20 0],[1301.85 187 0],[1308.15 68 0],[1346.02 378 0],[1360.82 144 0],[1501.82 13 0],[1546.42 30 0],[1700.05 20 0],[1780.75 10 0],[2062.2199 20 0],[2086.1699 40 0],[2168.6199 8 0],[2213.1699 4 0],[2299.7199 3 0],[2432.7199 4 0],[2473.8199 4 0]}{ALLx2000x1400x70x2000x1000x2000x200}{UVx2000x1400x60x2000x1000x2000x0}{VISx500x500x70x0x0x0x200}{IVx500x500x3x0x0x0x0}%[1.6 7 1],
\pgfspectra@elt@search{#1}{Sb}{[69.118 10 2],[69.12 1 1],[69.869 10 2],[69.922 3 4],[72.286 15 2],[72.481 8 2],[73.233 15 2],[74.606 1 4],[76.443 1 1],[81.485 1 1],[83.1 6 4],[84.939 1 1],[85.508 2 1],[87.684 4 1],[89.802 1 4],[92.107 4 1],[98.357 6 1],[99.962 15 2],[100.113 6 1],[100.943 6 1],[101.194 40 2],[105.221 6 1],[105.627 8 1],[105.658 10 2],[105.732 8 1],[106.59 40 2],[106.993 20 2],[107.043 20 2],[107.376 5 2],[107.381 6 1],[107.582 30 2],[107.81 5 2],[108.406 20 2],[109.834 10 2],[110.432 8 4],[113.543 10 2],[115.149 30 2],[115.774 40 2],[116.696 12 2],[120.52 50 2],[121.064 50 2],[122.6 12 4],[123.03 6 1],[127.498 8 1],[130.669 20 2],[132.74 8 1],[135.804 6 1],[137.958 8 2],[138.47 8 1],[140.418 20 2],[140.783 6 1],[142.957 10 2],[143.076 10 0],[143.649 8 1],[146.419 10 0],[148.657 20 0],[149.136 40 0],[150.57 12 4],[151.257 50 0],[152.447 12 4],[153.274 120 0],[153.506 80 0],[156.551 6 1],[157.611 8 1],[158.136 7 1],[159.996 80 0],[160.698 10 1],[161.28 200 0],[162.33 100 0],[165.12 50 0],[165.704 20 1],[166.26 100 0],[167.389 15 2],[169.885 50 0],[171.023 3 2],[171.184 15 2],[171.693 80 0],[171.745 150 0],[172.343 150 0],[172.533 15 2],[173.619 100 0],[173.643 8 1],[175.779 50 0],[176.23 12 2],[176.576 100 0],[178.087 100 0],[178.824 100 0],[180.018 150 0],[181.05 50 0],[181.42 80 0],[182.95 100 0],[183.932 12 2],[185.889 60 0],[186.817 50 0],[187.115 300 0],[188.256 150 0],[189.128 70 0],[189.939 70 0],[192.708 100 0],[194.613 10 2],[195.039 200 0],[196.43 80 0],[198.605 60 0],[199.06 6 1],[202.4 50 0],[202.949 60 0],[203.977 70 0],[204.957 150 0],[205.41 3 2],[206.343 50 0],[206.833 1000 0],[207.956 100 0],[209.185 2 2],[209.841 50 0],[211.848 80 0],[212.7 5 2],[212.739 100 0],[213.705 50 0],[213.969 100 0],[214.18 10 1],[214.183 50 0],[214.486 100 0],[215.891 50 0],[217.581 1500 0],[217.919 250 0],[217.925 6 1],[220.132 200 0],[220.845 300 0],[220.85 6 1],[222.073 150 0],[222.198 100 0],[222.493 120 0],[222.515 6 1],[226.251 300 0],[228.898 120 0],[229.344 150 0],[230.646 300 0],[231.147 2500 0],[231.589 150 0],[237.367 400 0],[238.364 300 0],[239.522 100 0],[242.213 150 0],[242.635 250 0],[244.551 400 0],[247.832 400 0],[248.044 150 0],[248.046 8 1],[250.771 5 2],[251.054 100 0],[252.852 2000 0],[252.854 15 1],[256.775 10 1],[257.406 150 0],[259.013 15 2],[259.805 1500 0],[259.809 500 0],[261.231 300 0],[261.42 1 2],[261.717 12 2],[261.763 1 2],[265.26 200 0],[265.655 12 1],[266.939 20 2],[267.064 300 0],[268.276 200 0],[269.225 120 0],[271.89 150 0],[276.995 400 0],[278.587 5 2],[279.027 20 2],[285.109 12 1],[285.111 100 0],[287.792 1000 0],[296.61 12 1],[298.096 15 1],[302.983 500 0],[303.401 12 1],[304.067 12 1],[323.252 600 0],[324.128 20 1],[326.751 700 0],[333.661 20 2],[338.309 12 1],[338.315 100 0],[349.846 15 1],[350.407 50 2],[351.906 15 2],[352.047 12 1],[353.345 15 2],[355.918 40 2],[356.625 40 2],[363.78 25 1],[363.783 250 0],[372.278 20 1],[372.279 200 0],[373.89 30 2],[385.022 20 1],[403.355 200 0],[403.356 20 1],[413.363 20 1],[414.054 15 1],[419.517 15 1],[421.907 20 1],[426.509 40 2],[431.432 20 1],[434.483 12 1],[435.216 50 2],[441.142 12 1],[444.648 12 1],[450.692 12 1],[451.45 15 1],[459.189 30 2],[459.69 30 1],[459.909 20 1],[460.477 15 1],[464.732 30 1],[467.574 20 1],[469.291 30 2],[471.126 40 1],[473.544 12 1],[475.781 20 1],[476.536 20 1],[476.691 12 1],[478.403 30 1],[480.201 20 1],[483.282 20 1],[487.724 20 1],[494.74 15 1],[504.456 15 1],[516.632 12 1],[517.655 15 1],[523.894 20 1],[524.771 1 2],[535.424 20 1],[546.408 15 1],[549.032 30 0],[555.61 40 0],[556.813 15 1],[560.219 30 0],[563.202 100 0],[563.975 30 1],[569.08 1 2],[571.73 1 2],[583.034 60 0],[584.55 3 2],[589.509 15 1],[600.521 100 1],[605.341 20 1],[607.98 30 1],[613.004 50 1],[615.494 20 1],[624.67 5 2],[628.76 3 2],[630.276 12 1],[661.149 20 0],[664.744 30 1],[668.801 15 1],[680.667 6 1],[764.828 30 0],[784.444 80 0],[792.465 200 0],[796.955 40 0],[841.169 60 0],[857.264 150 0],[861.955 100 0],[868.27 30 0],[913.221 30 0],[951.868 400 0],[986.678 30 0],[994.914 400 0],[1007.849 200 0],[1026.101 300 0],[1036.433 50 0],[1048.83 50 0],[1058.56 200 0],[1067.741 1000 0],[1074.194 800 0],[1079.411 80 0],[1083.973 600 0],[1086.858 200 0],[1087.955 400 0],[1101.279 300 0],[1107.995 40 0],[1108.498 30 0],[1110.484 50 0],[1110.852 50 0],[1118.961 30 0],[1126.623 150 0],[1186.337 30 0],[1195.77 1 0],[1211.606 5 0],[1227.66 2 0],[1246.675 2 0]}{ALLx2500x2500x100x50x0x12x0}{UVx2500x2500x25x50x0x12x0}{VISx200x200x100x50x0x0x0}{IVx1000x1000x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Te}{[79.96 3 1],[80.228 4 1],[94.262 3 1],[100.373 3 1],[100.78 3 1],[101.427 2.5 1],[102.279 2.5 1],[105.7 3 1],[105.951 4 1],[106.886 3 1],[107.766 4 1],[109.011 3 1],[114.404 3 1],[115.31 2.5 1],[116.142 5 1],[117.434 5 1],[117.579 6 1],[120.854 4.5 1],[121.3 2.5 1],[122.098 4.5 1],[125.362 4.5 1],[127.052 4.5 1],[127.476 3.5 1],[130.653 4 1],[132.492 5 1],[133.642 3.5 1],[134.52 3.5 1],[136.324 4.5 1],[136.673 4 1],[137.48 5 1],[139.522 3 1],[143.952 3 1],[146.525 3 1],[148.956 3.5 1],[160.799 4 1],[160.841 5 1],[161.315 5 1],[163.891 3 1],[165.54 2.5 0],[168.85 2.5 0],[170 3 0],[170.158 3 1],[170.8 2.5 0],[175.1 3 0],[175.94 2.5 0],[177.5 2.5 0],[179.57 3 0],[179.63 3 0],[182.24 5 0],[182.55 3 0],[185.06 3 0],[185.21 3 0],[185.38 3 0],[185.72 4 0],[186.04 3 0],[196.288 1.5 1],[199.483 3.5 0],[200.02 3 0],[200.202 13000 0],[207.09 4 0],[208.116 3250 0],[214.281 9000 0],[214.725 1600 0],[215.985 180 0],[220.874 4.5 0],[225.549 5 0],[225.902 250 0],[226.552 5 0],[237.306 10 1],[238.326 600 0],[238.578 750 0],[238.782 10 1],[240.163 5 1],[243.647 5 1],[243.869 25 1],[253.072 60 0],[256.782 10 1],[257.496 5 1],[257.61 2.5 1],[257.924 3.5 1],[259.112 5 1],[259.285 5 1],[260.572 5 1],[262.192 2.5 1],[262.486 5 1],[262.796 10 1],[264.189 10 1],[264.848 10 1],[264.966 50 1],[265.77 20 1],[266.11 40 1],[267.713 55 0],[271.158 10 1],[276.965 3 0],[284.117 5 1],[284.615 5 1],[285.829 50 1],[286.1 10 1],[286.882 20 1],[289.541 75 1],[291.989 15 1],[294.211 25 1],[294.668 25 1],[296.729 35 1],[297.367 10 1],[297.59 25 1],[299.704 7.5 1],[301.202 7.5 1],[301.758 25 1],[302.331 10 1],[304.7 35 1],[305.246 10 1],[306.316 5 1],[307.356 7.5 1],[310.444 4 1],[313.258 5 1],[316.066 10 1],[317.514 50 0],[318.983 5 1],[321.121 2.5 1],[325.68 30 1],[326.877 15 1],[328.263 15 1],[332.192 20 1],[332.311 20 1],[332.922 30 1],[335.21 30 1],[336.279 30 1],[337.41 12.5 1],[340.679 75 1],[341.963 10 1],[344.225 25 1],[345.512 20 1],[345.688 10 1],[348.032 10 1],[348.367 20 1],[348.611 10 1],[352.111 25 1],[355.219 25 1],[361.178 50 1],[361.757 25 1],[364.446 20 1],[367.926 10 1],[372.566 15 1],[379.722 20 1],[380.092 10 1],[390.567 10 1],[391.854 10 1],[393.149 15 1],[394.798 10 1],[396.922 20 1],[397.594 12.5 1],[398.177 10 1],[400.652 25 1],[401.169 10 1],[402.973 15 1],[404.717 20 1],[404.888 15 1],[407.348 7.5 1],[410.104 15 1],[412.732 35 1],[416.355 15 1],[416.977 50 1],[417.929 15 1],[421.131 12.5 1],[422.573 40 1],[424.647 15 1],[425.115 10 1],[426.111 50 1],[426.436 15 1],[427.343 30 1],[428.585 40 1],[432.09 20 1],[436.128 15 1],[436.4 75 1],[437.712 15 1],[438.51 37.5 1],[439.6 30 1],[447.863 85 1],[453.707 40 1],[455.778 50 1],[463.062 35 1],[464.112 50 1],[465.437 90 1],[468.691 100 1],[469.638 50 1],[470.653 50 1],[476.605 50 1],[477.156 35 1],[478.487 50 1],[482.714 50 1],[483.128 75 1],[484.29 75 1],[486.512 65 1],[486.624 100 1],[488.522 40 1],[490.444 40 1],[496.188 30 1],[500.082 30 1],[508.3 4 0],[514.87 3.5 0],[544.984 25 1],[548.795 25 1],[557.635 75 1],[564.926 75 1],[566.62 50 1],[570.812 100 1],[573.35 3.5 0],[575.585 75 1],[578.91 4 0],[593.615 25 1],[597.468 50 1],[627.35 4 0],[634.97 4 0],[636.713 25 1],[640.59 4 0],[645.67 3.5 0],[661.34 4 0],[664.858 5 1],[666.02 4 0],[669 4 0],[679 5 0],[683.76 10 0],[685.47 10 0],[701.606 5 1],[703.913 5 1],[719.11 7.5 0],[723.662 5 1],[726.35 10 0],[728.09 4 0],[728.926 5 1],[744.539 5 1],[746.098 6 1],[746.875 7.5 1],[748.126 5 1],[755.68 5 0],[768.861 3 1],[775.91 7.5 0],[781.879 4 1],[786.161 4 1],[792.169 7.5 1],[794.314 7.5 1],[795.034 5 1],[797.29 10 0],[805.615 3 1],[806.14 15 0],[808.25 5 0],[812.244 5 1],[813.039 4 1],[815.447 4 1],[818.644 10 1],[819.094 3 1],[825.15 5 0],[827.353 7.5 1],[827.66 5 0],[829.11 5 0],[835.58 7.5 0],[837.212 5 1],[846.98 3.5 0],[849.22 4 0],[850.08 4 0],[852.14 6 0],[853.568 5 1],[857.578 6 1],[860.463 5 1],[862.168 4 1],[863.21 3.5 0],[867.295 7.5 1],[870.109 6 0],[873.381 5 1],[875.818 102.5 0],[883.152 6 0],[885.115 9 0],[889.792 3 1],[900.437 40.5 0],[904.339 9 0],[919.68 6 0],[920.678 7.5 0],[920.764 8.5 0],[946.9 6 0],[972.274 2830 0],[978.554 92.5 0],[984.23 54.5 0],[986.892 266 0],[990.261 59 0],[995.63 344.5 0],[995.993 18.5 0],[997.713 162.5 0],[997.931 68 0],[998.585 22.5 0],[1005.141 2975 0],[1009.101 2048.5 0],[1009.957 52 0],[1010.605 139.5 0],[1011.808 190.5 0],[1015.106 148 0],[1030.056 198.5 0],[1032.305 102.5 0],[1049.357 372.5 0],[1050.986 98.5 0],[1091.834 940 0],[1100.78 149 0],[1108.956 5100 0],[1116.374 254 0],[1148.723 3310 0],[1197.896 140 0],[1256.624 94 0],[1258.919 194.5 0],[1280.55 80.5 0],[1310.418 200 0],[1324.775 790 0],[1331.663 241.5 0],[1403.709 108.5 0],[1407.253 72 0],[1433.574 217 0],[1441.746 110 0],[1451.351 525 0],[1455.468 64.5 0],[1545.245 740 0],[1554.623 1215 0],[1640.39 1880 0],[1730.3539 980 0],[1829.159 1390 0],[1877.7301 197 0],[1962.352 134.5 0],[2014.7539 119.5 0],[2104.373 510 0],[2160.25 232 0],[2179.9641 18.5 0],[2255.5289 37 0],[2275.566 24 0],[2329.4939 13.5 0],[2397.8699 8.5 0],[2405.9039 12.5 0],[2642.8619 6.5 0],[2653.917 19 0],[2655.374 7.5 0],[2717.926 3.5 0]}{ALLx13000x13000x100x0x0x0x0}{UVx13000x13000x75x0x0x0x0}{VISx100x10x100x0x0x0x0}{IVx5100x5100x10x0x0x0x0}%
-\pgfspectra@elt@search{#1}{I}{[36.378 3 4],[38.074 3.6 4],[56.553 4.5 4],[60.186 0.5 3],[60.757 5 4],[61.246 0.6 3],[61.517 0.4 3],[65.422 0.4 3],[65.456 0.4 3],[65.58 0.2 1],[65.9 0.6 1],[66.398 0.8 1],[66.452 0.8 1],[66.506 0.8 1],[66.57 15 1],[66.681 0.6 2],[70.511 0.8 2],[71.955 100 1],[72.298 100 1],[78.464 0.7 2],[78.48 0.7 2],[79.552 0.8 2],[79.816 100 1],[83.41 120 1],[84.78 60 1],[86.597 0.5 2],[87.349 150 1],[87.594 100 1],[87.984 200 1],[88.188 150 1],[89.1 100 1],[89.317 100 1],[91.928 0.7 3],[92.038 0.5 2],[96.117 0.6 2],[100.057 120 1],[100.335 100 1],[101.858 400 1],[103.466 1000 1],[105.474 150 1],[106.634 200 1],[107.521 300 1],[107.858 0.6 2],[109.42 0.8 2],[110.5 500 1],[111.116 250 1],[111.722 150 1],[112.525 350 1],[113.15 200 1],[113.975 120 1],[113.98 1000 1],[115.467 150 1],[115.987 100 1],[116.056 1000 1],[116.648 2000 1],[116.705 150 1],[117.584 500 1],[117.865 1000 1],[118.734 1500 1],[119.085 1000 1],[119.529 1.5 0],[119.888 500 1],[120.022 700 1],[121.841 20 0],[122.089 2000 1],[122.405 60 0],[122.408 60 0],[122.889 50 0],[123.406 2000 1],[124.466 0.4 2],[125.134 60 0],[125.235 0.8 2],[125.915 250 0],[125.951 300 0],[126.127 80 0],[126.757 60 0],[126.76 60 0],[127.526 150 0],[128.94 300 0],[130.034 1000 0],[130.298 300 0],[130.693 0.5 2],[131.395 300 0],[131.754 300 0],[133.019 200 0],[133.652 2000 1],[135.51 500 0],[135.797 300 0],[136.097 500 0],[136.111 300 0],[136.771 250 0],[136.822 250 0],[138.323 400 0],[139.075 300 0],[139.29 200 0],[140.001 200 0],[142.549 800 0],[144.626 500 0],[145.318 500 0],[145.739 500 0],[145.747 500 0],[145.798 1000 0],[145.879 250 0],[145.915 400 0],[146.583 250 0],[148.592 100 0],[149.289 500 0],[150.704 500 0],[151.468 500 0],[151.805 1500 0],[152.645 250 0],[159.358 500 0],[161.76 500 0],[164.078 250 0],[170.207 1500 0],[178.276 1200 0],[179.909 500 0],[183.038 7500 0],[184.445 1500 0],[206.163 200 0],[222.443 0.1 2],[223.812 0.1 2],[224.93 0.5 3],[224.931 0.3 2],[230.938 0.2 2],[234.084 0.4 3],[234.085 0.3 2],[235.043 0.3 2],[235.346 0.2 2],[236.113 0.7 3],[236.774 0.4 2],[236.775 0.5 3],[237.145 0.2 2],[237.245 0.3 2],[237.245 0.6 3],[237.646 0.7 3],[237.647 0.4 2],[238.528 0.4 3],[238.711 0.8 3],[238.712 0.4 2],[239.2 0.6 3],[239.201 0.3 2],[240.305 0.4 3],[240.306 0.2 2],[240.363 0.2 2],[240.801 10 1],[241.485 0.2 2],[241.845 0.2 3],[241.849 0.2 2],[241.885 0.2 2],[241.918 10 1],[242.389 0.3 3],[242.391 0.2 2],[242.61 0.9 3],[242.612 0.5 2],[243.485 0.6 3],[243.488 0.3 2],[246.25 0.2 2],[246.668 0.3 3],[246.669 0.3 2],[246.696 0.3 3],[246.699 0.3 2],[247.535 0.8 3],[247.536 0.6 2],[248.551 0.4 3],[248.924 0.5 3],[248.927 0.4 2],[249.32 0.4 3],[249.321 0.2 2],[249.427 0.2 2],[249.474 10 1],[249.516 0.3 2],[249.607 0.2 2],[250.138 0.2 3],[250.141 0.3 2],[251.374 0.3 3],[251.682 0.2 2],[251.974 0.8 3],[251.975 0.6 2],[252.172 0.4 2],[252.172 0.6 3],[253.198 0.4 3],[253.199 0.3 2],[253.36 10 1],[253.427 20 1],[253.754 0.5 3],[253.756 0.2 2],[254.567 0.8 3],[254.571 0.7 2],[256.624 100 1],[258.279 200 1],[259.346 30 1],[264.077 0.4 2],[264.077 0.4 3],[264.211 0.4 2],[264.211 0.5 3],[265.223 0.8 3],[265.225 0.6 2],[268.898 20 1],[273.012 50 1],[276.515 2 1],[280.859 20 1],[281.845 0.3 3],[281.848 0.2 2],[283.944 0.2 2],[286.467 0.4 2],[286.468 0.6 3],[287.863 150 1],[288.515 0.4 2],[291.097 0.4 3],[291.098 0.3 2],[291.733 0.5 3],[291.735 0.3 2],[293.111 0.2 2],[299.387 100 1],[300.568 0.2 2],[306.917 0.4 3],[306.923 0.3 2],[307.875 500 1],[315.388 0.3 2],[316.103 20 1],[317.011 0.4 3],[317.014 0.3 2],[317.507 100 1],[318.164 0.4 3],[318.166 0.3 2],[321.012 0.4 3],[321.014 0.3 2],[321.348 0.6 3],[321.349 0.4 2],[322.49 0.6 3],[322.493 0.4 2],[330.047 0.2 2],[335.553 30 1],[342.499 25 1],[347.953 0.2 2],[349.741 30 1],[352.69 50 1],[354.69 0.4 3],[354.692 0.3 2],[361.381 0.3 2],[374.214 20 1],[375.44 0.2 2],[375.455 0.2 2],[396.316 0.3 2],[407.714 0.3 2],[410.223 20 0],[412.921 20 0],[413.415 10 0],[432.184 50 0],[445.286 30 1],[459.977 20 1],[463.245 30 1],[466.648 50 1],[467.553 100 1],[476.331 25 0],[486.232 100 0],[491.694 20 0],[498.692 100 1],[506.537 40 1],[511.929 1000 0],[514.973 20 1],[516.12 300 1],[517.619 30 1],[521.627 60 1],[522.897 50 1],[523.457 100 0],[524.571 300 1],[526.936 50 1],[529.978 40 1],[532.28 40 1],[533.822 1000 1],[534.515 500 1],[536.986 100 1],[540.542 80 1],[540.736 80 1],[542.706 60 0],[543.583 300 1],[543.8 100 1],[546.462 200 1],[549.15 80 1],[549.694 100 1],[550.472 100 1],[552.206 60 1],[559.852 60 1],[560.032 100 1],[561.289 150 1],[562.569 1000 1],[567.808 100 1],[569.091 200 1],[570.205 50 1],[571.053 400 1],[573.827 100 1],[576.072 100 1],[576.433 100 0],[577.483 50 1],[578.702 50 1],[589.403 200 0],[595.025 500 1],[598.486 30 0],[602.408 200 0],[606.893 50 1],[607.498 200 1],[608.243 100 0],[612.749 200 1],[619.188 80 0],[620.486 100 1],[621.31 50 0],[624.448 80 0],[625.749 90 1],[629.398 100 0],[631.313 50 0],[633.037 80 0],[633.35 40 0],[633.785 200 0],[633.944 100 0],[635.916 50 0],[656.649 100 0],[658.375 200 0],[658.527 100 0],[661.966 500 0],[666.111 50 0],[666.596 60 1],[669.729 50 0],[671.883 30 1],[673.203 40 0],[681.257 400 1],[695.878 100 1],[698.978 50 0],[708.521 20 1],[712.005 50 0],[712.205 120 0],[714.206 200 0],[716.479 100 0],[719.166 40 0],[722.73 70 0],[723.678 100 0],[723.784 50 0],[735.135 50 1],[740.206 500 0],[741.05 100 0],[741.648 50 0],[746.899 500 0],[749.052 50 0],[755.418 200 0],[755.665 50 0],[770.02 200 0],[779.898 50 1],[789.798 60 0],[796.948 50 0],[800.363 100 0],[804.374 9900 0],[806.57 30 0],[809.076 100 0],[816.938 80 0],[822.257 50 0],[824.005 400 0],[839.33 1000 0],[841.46 15 1],[848.611 100 0],[866.495 150 0],[870.08 50 0],[874.822 25 0],[885.324 100 0],[885.38 200 0],[885.75 300 0],[889.85 100 0],[896.469 40 0],[899.313 40 0],[902.24 500 0],[905.833 1500 0],[909.886 100 0],[911.391 1200 0],[912.803 60 0],[919.53 3 1],[922.774 60 0],[933.505 100 0],[942.671 400 0],[942.715 300 0],[948.033 1 1],[959.822 200 0],[964.961 200 0],[965.306 300 0],[973.173 500 0],[1000.305 50 0],[1013.116 75 0],[1023.882 100 0],[1037.52 40 0],[1039.174 40 0],[1040.549 0.6 1],[1046.654 500 0],[1108.468 0.1 1],[1123.656 40 0],[1155.846 35 0],[1177.834 32 0],[1199.686 45 0],[1203.369 30 0],[1230.458 15 0],[1314.916 6 0],[1395.827 14 0],[1428.702 20 0],[1446 10 0],[1503.257 22.5 0],[1552.865 10.5 0],[1603.733 15 0],[1827.5711 1.5 0],[1834.852 2 0],[1898.241 1.5 0],[1907.017 3.5 0],[1910.5119 11 0],[1937.002 5 0],[2064.8689 1 0],[2218.3029 22 0],[2222.6529 15 0],[2230.9211 3 0],[2442.082 3.2 0],[2736.542 1.2 0],[2757.3051 0.9 0],[3036.193 1 0],[3038.3881 0.8 0],[3429.573 1 0],[3451.3109 0.9 0],[4022.8539 0.3 0],[4163.3801 0.2 0]}{ALLx9900x9900x2000x0.8x0.9x5x0}{UVx7500x7500x2000x0.8x0.9x5x0}{VISx1000x1000x1000x0.3x0x0x0}{IVx9900x9900x15x0x0x0x0}%
+\pgfspectra@elt@search{#1}{I}{[36.378 3 4],[38.074 3.6 4],[56.553 4.5 4],[60.186 0.5 3],[60.757 5 4],[61.246 0.6 3],[61.517 0.4 3],[65.422 0.4 3],[65.456 0.4 3],[65.58 0.2 1],[65.9 0.6 1],[66.398 0.8 1],[66.452 0.8 1],[66.506 0.8 1],[66.57 15 1],[66.681 0.6 2],[70.511 0.8 2],[71.955 100 1],[72.298 100 1],[78.464 0.7 2],[78.48 0.7 2],[79.552 0.8 2],[79.816 100 1],[83.41 120 1],[84.78 60 1],[86.597 0.5 2],[87.349 150 1],[87.594 100 1],[87.984 200 1],[88.188 150 1],[89.1 100 1],[89.317 100 1],[91.928 0.7 3],[92.038 0.5 2],[96.117 0.6 2],[100.057 120 1],[100.335 100 1],[101.858 400 1],[103.466 1000 1],[105.474 150 1],[106.634 200 1],[107.521 300 1],[107.858 0.6 2],[109.42 0.8 2],[110.5 500 1],[111.116 250 1],[111.722 150 1],[112.525 350 1],[113.15 200 1],[113.975 120 1],[113.98 1000 1],[115.467 150 1],[115.987 100 1],[116.056 1000 1],[116.648 2000 1],[116.705 150 1],[117.584 500 1],[117.865 1000 1],[118.734 1500 1],[119.085 1000 1],[119.529 1.5 0],[119.888 500 1],[120.022 700 1],[121.841 20 0],[122.089 2000 1],[122.405 60 0],[122.408 60 0],[122.889 50 0],[123.406 2000 1],[124.466 0.4 2],[125.134 60 0],[125.235 0.8 2],[125.915 250 0],[125.951 300 0],[126.127 80 0],[126.757 60 0],[126.76 60 0],[127.526 150 0],[128.94 300 0],[130.034 1000 0],[130.298 300 0],[130.693 0.5 2],[131.395 300 0],[131.754 300 0],[133.019 200 0],[133.652 2000 1],[135.51 500 0],[135.797 300 0],[136.097 500 0],[136.111 300 0],[136.771 250 0],[136.822 250 0],[138.323 400 0],[139.075 300 0],[139.29 200 0],[140.001 200 0],[142.549 800 0],[144.626 500 0],[145.318 500 0],[145.739 500 0],[145.747 500 0],[145.798 1000 0],[145.879 250 0],[145.915 400 0],[146.583 250 0],[148.592 100 0],[149.289 500 0],[150.704 500 0],[151.468 500 0],[151.805 1500 0],[152.645 250 0],[159.358 500 0],[161.76 500 0],[164.078 250 0],[170.207 1500 0],[178.276 1200 0],[179.909 500 0],[183.038 7500 0],[184.445 1500 0],[206.163 200 0],[222.443 0.1 2],[223.812 0.1 2],[224.93 0.5 3],[224.931 0.3 2],[230.938 0.2 2],[234.084 0.4 3],[234.085 0.3 2],[235.043 0.3 2],[235.346 0.2 2],[236.113 0.7 3],[236.774 0.4 2],[236.775 0.5 3],[237.145 0.2 2],[237.245 0.3 2],[237.245 0.6 3],[237.646 0.7 3],[237.647 0.4 2],[238.528 0.4 3],[238.711 0.8 3],[238.712 0.4 2],[239.2 0.6 3],[239.201 0.3 2],[240.305 0.4 3],[240.306 0.2 2],[240.363 0.2 2],[240.801 10 1],[241.485 0.2 2],[241.845 0.2 3],[241.849 0.2 2],[241.885 0.2 2],[241.918 10 1],[242.389 0.3 3],[242.391 0.2 2],[242.61 0.9 3],[242.612 0.5 2],[243.485 0.6 3],[243.488 0.3 2],[246.25 0.2 2],[246.668 0.3 3],[246.669 0.3 2],[246.696 0.3 3],[246.699 0.3 2],[247.535 0.8 3],[247.536 0.6 2],[248.551 0.4 3],[248.924 0.5 3],[248.927 0.4 2],[249.32 0.4 3],[249.321 0.2 2],[249.427 0.2 2],[249.474 10 1],[249.516 0.3 2],[249.607 0.2 2],[250.138 0.2 3],[250.141 0.3 2],[251.374 0.3 3],[251.682 0.2 2],[251.974 0.8 3],[251.975 0.6 2],[252.172 0.4 2],[252.172 0.6 3],[253.198 0.4 3],[253.199 0.3 2],[253.36 10 1],[253.427 20 1],[253.754 0.5 3],[253.756 0.2 2],[254.567 0.8 3],[254.571 0.7 2],[256.624 100 1],[258.279 200 1],[259.346 30 1],[264.077 0.4 2],[264.077 0.4 3],[264.211 0.4 2],[264.211 0.5 3],[265.223 0.8 3],[265.225 0.6 2],[268.898 20 1],[273.012 50 1],[276.515 2 1],[280.859 20 1],[281.845 0.3 3],[281.848 0.2 2],[283.944 0.2 2],[286.467 0.4 2],[286.468 0.6 3],[287.863 150 1],[288.515 0.4 2],[291.097 0.4 3],[291.098 0.3 2],[291.733 0.5 3],[291.735 0.3 2],[293.111 0.2 2],[299.387 100 1],[300.568 0.2 2],[306.917 0.4 3],[306.923 0.3 2],[307.875 500 1],[315.388 0.3 2],[316.103 20 1],[317.011 0.4 3],[317.014 0.3 2],[317.507 100 1],[318.164 0.4 3],[318.166 0.3 2],[321.012 0.4 3],[321.014 0.3 2],[321.348 0.6 3],[321.349 0.4 2],[322.49 0.6 3],[322.493 0.4 2],[330.047 0.2 2],[335.553 30 1],[342.499 25 1],[347.953 0.2 2],[349.741 30 1],[352.69 50 1],[354.69 0.4 3],[354.692 0.3 2],[361.381 0.3 2],[374.214 20 1],[375.44 0.2 2],[375.455 0.2 2],[396.316 0.3 2],[407.714 0.3 2],[410.223 20 0],[412.921 20 0],[413.415 10 0],[432.184 50 0],[445.286 30 1],[459.977 20 1],[463.245 30 1],[466.648 50 1],[467.553 100 1],[476.331 25 0],[486.232 100 0],[491.694 20 0],[498.692 100 1],[506.537 40 1],[511.929 1000 0],[514.973 20 1],[516.12 300 1],[517.619 30 1],[521.627 60 1],[522.897 50 1],[523.457 100 0],[524.571 300 1],[526.936 50 1],[529.978 40 1],[532.28 40 1],[533.822 1000 1],[534.515 500 1],[536.986 100 1],[540.542 80 1],[540.736 80 1],[542.706 60 0],[543.583 300 1],[543.8 100 1],[546.462 200 1],[549.15 80 1],[549.694 100 1],[550.472 100 1],[552.206 60 1],[559.852 60 1],[560.032 100 1],[561.289 150 1],[562.569 1000 1],[567.808 100 1],[569.091 200 1],[570.205 50 1],[571.053 400 1],[573.827 100 1],[576.072 100 1],[576.433 100 0],[577.483 50 1],[578.702 50 1],[589.403 200 0],[595.025 500 1],[598.486 30 0],[602.408 200 0],[606.893 50 1],[607.498 200 1],[608.243 100 0],[612.749 200 1],[619.188 80 0],[620.486 100 1],[621.31 50 0],[624.448 80 0],[625.749 90 1],[629.398 100 0],[631.313 50 0],[633.037 80 0],[633.35 40 0],[633.785 200 0],[633.944 100 0],[635.916 50 0],[656.649 100 0],[658.375 200 0],[658.527 100 0],[661.966 500 0],[666.111 50 0],[666.596 60 1],[669.729 50 0],[671.883 30 1],[673.203 40 0],[681.257 400 1],[695.878 100 1],[698.978 50 0],[708.521 20 1],[712.005 50 0],[712.205 120 0],[714.206 200 0],[716.479 100 0],[719.166 40 0],[722.73 70 0],[723.678 100 0],[723.784 50 0],[735.135 50 1],[740.206 500 0],[741.05 100 0],[741.648 50 0],[746.899 500 0],[749.052 50 0],[755.418 200 0],[755.665 50 0],[770.02 200 0],[779.898 50 1],[789.798 60 0],[796.948 50 0],[800.363 100 0],[804.374 9900 0],[806.57 30 0],[809.076 100 0],[816.938 80 0],[822.257 50 0],[824.005 400 0],[839.33 1000 0],[841.46 15 1],[848.611 100 0],[866.495 150 0],[870.08 50 0],[874.822 25 0],[885.324 100 0],[885.38 200 0],[885.75 300 0],[889.85 100 0],[896.469 40 0],[899.313 40 0],[902.24 500 0],[905.833 1500 0],[909.886 100 0],[911.391 1200 0],[912.803 60 0],[919.53 3 1],[922.774 60 0],[933.505 100 0],[942.671 400 0],[942.715 300 0],[948.033 1 1],[959.822 200 0],[964.961 200 0],[965.306 300 0],[973.173 500 0],[1000.305 50 0],[1013.116 75 0],[1023.882 100 0],[1037.52 40 0],[1039.174 40 0],[1040.549 0.6 1],[1046.654 500 0],[1108.468 0.1 1],[1123.656 40 0],[1155.846 35 0],[1177.834 32 0],[1199.686 45 0],[1203.369 30 0],[1230.458 15 0],[1314.916 6 0],[1395.827 14 0],[1428.702 20 0],[1446 10 0],[1503.257 22.5 0],[1552.865 10.5 0],[1603.733 15 0],[1827.5711 1.5 0],[1834.852 2 0],[1898.241 1.5 0],[1907.017 3.5 0],[1910.5119 11 0],[1937.002 5 0],[2064.8689 1 0],[2218.3029 22 0],[2222.6529 15 0],[2230.9211 3 0],[2442.082 3.2 0],[2736.542 1.2 0],[2757.3051 0.9 0],[3036.193 1 0],[3038.3881 0.8 0],[3429.573 1 0],[3451.3109 0.9 0]}{ALLx9900x9900x2000x0.8x0.9x5x0}{UVx7500x7500x2000x0.8x0.9x5x0}{VISx1000x1000x1000x0.3x0x0x0}{IVx9900x9900x15x0x0x0x0}%,[4022.8539 0.3 0],[4163.3801 0.2 0]
\pgfspectra@elt@search{#1}{Xe}{[65.78 8 2],[66.01 8 2],[67.38 9 2],[67.4 9 2],[67.66 9 2],[69.4 10 2],[69.85 20 2],[70.51 12 2],[72.12 10 2],[73.1 15 2],[73.33 10 2],[74.041 350 1],[74.26 15 2],[75.6 10 2],[76.15 10 2],[76.91 10 2],[77.91 25 2],[79.29 15 2],[79.61 12 2],[80.2 15 2],[80.307 350 1],[82.32 25 2],[82.49 30 2],[85.3 25 2],[88.08 600 1],[88.554 350 1],[88.93 15 2],[89.4 20 2],[89.6 20 2],[92.587 600 1],[93.54 250 1],[96.55 10 2],[97.277 800 1],[97.668 700 1],[100.34 35 2],[101.77 35 2],[103.244 500 1],[103.768 700 1],[104.131 1100 1],[104.78 10 2],[104.827 1000 1],[105.192 1200 1],[106.64 12 2],[107.448 2000 1],[108.386 600 1],[110.043 1200 1],[113.03 30 2],[115.847 600 1],[116.963 250 1],[118.305 800 1],[119.204 250 0],[123.21 25 2],[124.476 600 1],[125.02 250 0],[129.559 1000 0],[146.961 600 0],[266.898 80 2],[271.733 100 2],[281.445 30 2],[281.591 40 2],[282.745 30 2],[284.765 40 2],[286.24 30 2],[286.473 200 1],[287.11 80 2],[287.124 60 2],[287.17 30 2],[289.522 150 1],[289.662 30 2],[290.66 50 2],[291.189 40 2],[291.236 80 2],[294.02 40 2],[294.52 60 2],[294.75 40 2],[294.81 40 2],[297.047 80 2],[297.932 400 1],[299.287 40 2],[300.425 30 2],[301.743 100 1],[302.381 100 2],[308.35 40 2],[309.11 50 2],[310.646 30 2],[312.887 300 1],[313.83 100 2],[315.082 80 2],[318.52 40 2],[324.286 100 2],[326.898 80 2],[328.782 30 2],[330.155 80 2],[333.16 40 2],[335.8 30 2],[336.672 200 1],[338.412 80 2],[340.007 2 0],[341.837 2 0],[342 2 0],[344.266 3 0],[344.42 60 2],[345.42 70 2],[345.87 100 2],[346.126 100 1],[346.822 40 2],[346.981 4 0],[347.236 4 0],[350.674 5 0],[352.283 80 2],[354.23 50 2],[354.986 10 0],[355.21 50 2],[355.404 10 0],[356.14 40 2],[357.97 100 2],[358.36 80 2],[359.54 100 2],[360.606 100 2],[360.7 40 2],[361.032 15 0],[361.306 8 0],[361.59 100 2],[362.31 40 2],[362.408 600 2],[363.306 6 0],[366.991 10 0],[367.667 50 2],[368.59 40 0],[369.349 40 0],[377.63 40 2],[378.102 300 2],[384.15 100 2],[387.78 200 2],[388.05 60 2],[390.791 100 1],[392.255 500 2],[395.059 300 2],[403.759 100 1],[405.007 200 2],[405.746 200 1],[406.04 60 2],[409.889 100 1],[410.91 100 2],[414.57 100 2],[415.804 200 1],[418.01 1000 1],[419.315 500 1],[420.848 300 1],[420.947 100 1],[421.372 300 1],[421.56 100 1],[422.3 300 1],[423.825 400 1],[424.538 500 1],[425.157 100 1],[428.59 30 2],[429.64 500 1],[431.051 500 1],[433.052 1000 1],[436.92 200 1],[437.378 100 1],[439.32 500 1],[439.577 500 1],[440.688 200 1],[441.607 150 1],[443.42 50 2],[444.813 500 1],[446.21 100 2],[446.219 1000 1],[448.086 500 1],[452.186 100 1],[456.91 100 2],[457.01 100 2],[464.14 100 2],[467.37 30 2],[468.357 60 2],[472.36 30 2],[473.4152 600 0],[475.73 100 2],[479.2619 150 0],[480.702 500 0],[482.971 400 0],[484.329 300 0],[486.95 40 2],[491.651 500 0],[492.3152 500 0],[497.171 200 1],[497.271 400 1],[498.877 300 1],[499.117 100 1],[502.828 200 0],[504.492 200 1],[508.062 1000 1],[512.242 300 1],[512.57 100 1],[517.882 100 1],[518.804 300 1],[519.137 400 1],[519.21 100 1],[523.9 60 2],[526.044 500 1],[526.195 500 1],[529.222 2000 1],[530.927 300 1],[531.387 1000 1],[533.933 2000 1],[536.32 200 1],[536.71 30 2],[536.807 200 1],[537.239 500 1],[539.28 100 0],[540.1 50 2],[541.915 3000 1],[543.896 800 1],[544.545 300 1],[545.045 200 1],[546.039 400 1],[547.261 1000 1],[549.486 100 1],[552.44 40 2],[552.553 200 1],[553.107 600 1],[556.662 100 0],[561.667 300 1],[565.938 300 1],[566.756 600 1],[567.091 150 1],[569.575 100 0],[569.961 200 1],[571.61 200 1],[572.691 500 1],[575.103 500 1],[575.865 300 1],[577.639 300 1],[581.596 100 1],[582.389 300 0],[582.48 150 0],[587.502 100 0],[589.329 300 1],[589.499 100 0],[590.513 200 1],[593.417 100 0],[594.553 500 1],[597.113 300 1],[597.646 2000 1],[600.892 200 1],[603.62 1000 1],[605.115 2000 1],[609.35 600 1],[609.759 1500 1],[610.143 400 1],[611.508 100 1],[614.645 100 1],[617.83 150 0],[617.966 120 0],[618.242 300 0],[619.407 500 1],[619.826 100 0],[620.597 60 2],[622.002 100 1],[622.17 25 2],[623.82 60 2],[625.905 60 2],[627.082 500 1],[627.754 400 1],[628.441 100 1],[628.601 100 0],[630.086 250 1],[631.806 500 0],[634.396 400 1],[635.635 600 1],[637.528 200 1],[639.799 100 1],[646.97 300 0],[647.284 150 0],[648.776 120 0],[649.872 100 0],[650.418 200 0],[651.283 300 1],[652.865 200 1],[653.316 100 0],[659.501 1000 1],[659.556 100 0],[659.725 400 1],[659.884 100 1],[666.892 150 0],[669.432 300 1],[672.801 200 0],[678.871 150 1],[679.037 100 1],[680.574 1000 1],[682.732 200 0],[687.211 100 0],[688.216 300 0],[691.022 80 1],[692.553 100 0],[694.211 800 1],[697.618 100 0],[699.088 2000 1],[708.215 150 1],[711.96 500 0],[714.75 50 1],[714.903 200 1],[716.483 500 1],[728.434 100 1],[730.18 200 1],[733.93 200 1],[738.6 100 0],[739.379 150 0],[754.845 300 1],[758.468 200 0],[761.857 80 1],[764.202 500 0],[764.391 100 0],[767.066 200 1],[778.704 60 1],[780.265 100 0],[788.132 100 0],[788.74 300 0],[796.734 500 0],[802.967 100 0],[805.726 200 0],[806.134 150 0],[810.198 100 0],[815.18 150 1],[817.102 100 0],[820.634 700 0],[823.1635 10000 0],[826.652 500 0],[828.0116 7000 0],[834.682 2000 0],[834.724 100 1],[840.919 2000 0],[851.519 50 1],[857.601 200 0],[860.423 50 1],[864.854 250 0],[869.22 100 0],[869.686 200 0],[871.619 50 1],[873.939 300 0],[875.82 100 0],[881.941 5000 0],[886.232 300 0],[890.873 200 0],[893.083 200 0],[895.225 1000 0],[898.105 100 0],[898.757 200 0],[904.545 400 0],[916.265 500 0],[916.752 100 0],[937.476 100 0],[951.338 200 0],[959.135 50 1],[968.532 150 0],[969.868 50 1],[971.816 100 0],[979.97 2000 0],[992.319 3000 0],[1083.837 100 0],[1174.201 90 0],[1223.524 375 0],[1225.776 100 0],[1259.02 300 0],[1262.3391 2500 0],[1354.415 250 0],[1365.7055 2000 0],[1414.2444 1250 0],[1424.096 800 0],[1436.499 375 0],[1466.081 140 0],[1473.2806 3000 0],[1509.972 100 0],[1541.8394 2500 0],[1555.713 150 0],[1597.954 250 0],[1603.99 100 0],[1605.328 1000 0],[1655.449 125 0],[1672.815 1500 0],[1732.577 1500 0],[1878.8131 350 0],[2018.7189 150 0],[2026.2242 3000 0],[2147.009 250 0],[2319.333 1250 0],[2327.9539 110 0],[2482.4711 1800 0],[2514.584 175 0],[2626.908 2000 0],[2651.0859 2500 0],[2838.1539 250 0],[2858.225 750 0],[2938.441 300 0],[2944.8061 150 0],[2964.958 100 0],[2981.3619 100 0],[3025.3141 600 0],[3047.5461 1500 0],[3050.4119 100 0],[3079.418 500 0],[3106.923 6000 0],[3133.601 125 0],[3160.791 550 0],[3229.308 100 0],[3273.926 1800 0],[3366.6691 3500 0],[3401.4672 150 0],[3433.527 450 0],[3474.4 170 0],[3507.025 5000 0],[3524.6922 110 0],[3620.9211 250 0],[3623.1738 150 0],[3650.8359 450 0],[3678.8828 850 0],[3868.598 140 0],[3873.782 175 0],[3893.9602 270 0],[3995.5141 120 0]}{ALLx10000x10000x3000x600x0x0x0}{UVx2000x1000x2000x600x0x0x0}{VISx3000x600x3000x500x0x0x0}{IVx10000x10000x150x0x0x0x0}%
\pgfspectra@elt@search{#1}{Cs}{[55.691 15 2],[58.415 50 2],[58.44 10 2],[59.1044 5 1],[60.301 240 2],[60.7291 1 1],[60.785 120 2],[60.794 160 2],[61.2786 0.8 1],[61.401 2000 2],[62.115 300 2],[63.586 120 2],[63.767 60 2],[63.817 400 2],[63.9356 40 1],[65.7112 2 1],[65.794 5 2],[66.382 90 2],[66.46 90 2],[66.625 500 2],[66.8386 10 1],[67.306 360 2],[67.96 80 2],[68.755 160 2],[69.16 1000 2],[69.943 160 2],[70.34 30 3],[70.389 700 2],[71.025 200 2],[71.8138 300 1],[72.179 4000 2],[72.22 4000 2],[73.156 1000 2],[73.195 60 2],[73.666 200 2],[74.029 2400 2],[74.223 30 2],[74.994 200 2],[75.038 300 2],[75.518 300 2],[75.882 240 2],[75.99 1.2 2],[77.361 1.4 3],[78.773 60 2],[80.195 15 2],[80.8761 300 1],[81.3837 300 1],[81.402 40 2],[81.735 3 2],[82.034 160 2],[82.364 0.8 3],[82.48 30 3],[82.599 40 2],[83.039 1500 2],[83.739 20 2],[84.337 0.8 2],[84.792 50 2],[86.183 3 3],[87.484 40 3],[89.692 30 3],[90.127 700 1],[92.035 3000 2],[92.166 100 2],[92.302 20 3],[92.6657 800 1],[93.267 5 2],[98.614 40 3],[99.514 10 3],[105.479 5000 2],[106.891 30 3],[117.865 26 1],[119.155 16 1],[202.505 5 1],[203.515 12 1],[207.743 16 1],[208.005 16 1],[208.871 16 1],[209.197 16 1],[209.95 3 1],[211.265 5 1],[214.675 20 1],[217.96 26 1],[218.214 5 1],[218.947 26 1],[221.315 5 1],[222.051 20 1],[222.888 26 1],[225.458 50 1],[225.782 40 1],[225.835 5 1],[226.761 70 1],[227.383 70 1],[228.668 5 1],[230.771 5 1],[231.568 8 1],[232.107 26 1],[234.313 16 1],[235.444 26 1],[235.785 5 1],[236.481 26 1],[239.286 50 1],[241.489 16 1],[243.271 5 1],[244.324 5 1],[247.607 26 1],[248.041 8 1],[251.572 26 1],[252.366 3 1],[253.908 26 1],[253.917 5 1],[255.065 12 1],[255.117 26 1],[256.817 26 1],[256.869 50 1],[257.303 200 1],[257.454 26 1],[257.674 26 1],[259.009 26 1],[260.944 50 1],[261.627 26 1],[262.795 5 1],[263.714 16 1],[264.469 5 1],[264.807 26 1],[265.171 40 1],[266.024 5 1],[266.979 26 1],[267.117 3 1],[267.324 8 1],[268.66 26 1],[268.941 5 1],[270.119 3 1],[272.421 26 1],[273.007 5 1],[273.388 5 1],[274.823 50 1],[274.984 16 1],[275.781 12 1],[276.197 16 1],[276.61 5 1],[277.699 50 1],[278.824 26 1],[278.98 26 1],[279.332 5 1],[279.45 26 1],[279.941 26 1],[281.694 100 1],[282.027 5 1],[282.904 5 1],[282.942 5 1],[284.619 26 1],[285.242 16 1],[286.637 16 1],[288.119 50 1],[288.374 5 1],[289.975 16 1],[291.465 16 1],[293.109 100 1],[294.095 100 1],[294.225 16 1],[294.98 6 1],[296.838 4 1],[297.085 5 1],[300.127 20 1],[301.204 16 1],[302.037 3 1],[306.098 3 1],[306.66 20 1],[308.087 5 1],[309.231 20 1],[318.094 16 1],[326.592 160 1],[326.713 160 1],[327.163 100 1],[332.943 20 1],[336.856 160 1],[355.98 20 1],[356.511 20 1],[365.107 3 1],[368.01 3 1],[368.764 3 1],[369.948 20 1],[373.254 3 1],[373.434 20 1],[375.14 3 1],[378.542 70 1],[380.51 100 1],[387.016 3 1],[387.6143 30 0],[388.8608 16 0],[389.698 200 1],[390.693 70 1],[392.558 100 1],[395.95 70 1],[396.519 100 1],[397.8 30 1],[404.718 70 1],[405.396 40 1],[406.796 100 1],[406.877 100 1],[407.336 14 1],[411.929 12 1],[412.121 100 1],[413.2 20 1],[415.127 70 1],[415.861 70 1],[419.32 12 1],[421.313 100 1],[422.112 40 1],[423.219 100 1],[423.441 70 1],[424.197 20 1],[427.174 20 1],[427.71 400 1],[428.835 200 1],[429.2 40 1],[430.064 100 1],[430.794 10 1],[432.758 10 1],[433.024 70 1],[436.328 400 1],[437.302 100 1],[438.443 80 1],[438.876 20 1],[439.691 40 1],[439.95 70 1],[440.385 70 1],[440.525 200 1],[441.021 70 1],[442.405 20 1],[443.571 70 1],[444.4 20 1],[445.344 40 1],[445.768 40 1],[445.918 40 1],[449.366 20 1],[450.152 200 1],[450.671 40 1],[450.683 20 1],[451.55 20 1],[452.285 30 1],[452.672 200 1],[453.894 160 1],[455.5276 80 0],[456.698 30 1],[457.179 30 1],[459.3169 40 0],[460.376 500 1],[460.999 20 1],[461.613 30 1],[462.309 70 1],[464.651 100 1],[465.654 30 1],[467.028 70 1],[469.561 20 1],[470.179 100 1],[473.298 70 1],[473.966 70 1],[474.913 20 1],[476.362 100 1],[478.636 40 1],[483.016 160 1],[487.002 160 1],[495.284 160 1],[497.259 100 1],[504.38 160 1],[505.27 100 1],[505.987 100 1],[508.177 20 1],[509.66 80 1],[522.7 300 1],[524.937 160 1],[527.404 80 1],[530.661 70 1],[534.916 70 1],[537.097 160 1],[541.969 100 1],[546.5944 1 0],[550.2884 1 0],[556.302 200 1],[563.5212 2.2 0],[566.4018 6 0],[574.5724 1.6 0],[581.418 70 1],[583.116 100 1],[583.8835 1 0],[584.5141 6 0],[592.565 100 1],[601.049 16 0],[603.4089 6 0],[612.862 80 1],[621.31 24 0],[621.7599 3 0],[635.4555 10 0],[641.954 20 1],[643.1969 3 0],[647.2623 3 0],[649.553 40 1],[653.644 40 1],[658.602 6 0],[658.651 40 0],[662.866 7 0],[672.3284 40 0],[682.4652 20 0],[687.0455 20 0],[695.552 80 1],[697.3297 40 0],[698.3491 7 0],[722.8536 40 0],[727.99 12 0],[727.9957 40 0],[760.8903 30 0],[794.3882 60 0],[799.068 12 0],[801.5724 20 0],[805.335 12 0],[807.892 12 0],[807.9033 70 0],[852.1122 200 0],[876.1415 40 0],[894.346 120 0],[917.2322 70 0],[920.8538 20 0],[1002.4359 70 0],[1012.3414 20 0],[1012.3602 80 0],[1358.831 28 0],[1360.257 3 0],[1375.883 3 0],[1469.493 70 0],[1792.3619 2.4 0],[1792.4211 1.8 0],[1916.2529 5 0],[1916.3199 4 0],[2131.1461 10 0],[2131.2289 9 0],[2576.349 20 0],[2576.4699 18 0],[3942.1219 40 0],[3942.4078 36 0]}{ALLx5000x200x800x5000x40x0x0}{UVx5000x0x800x5000x40x0x0}{VISx500x80x500x0x0x0x0}{IVx200x200x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Ba}{[40.382 1 2],[40.712 0.4 2],[42.012 1.4 2],[42.384 0.8 2],[44.895 1.8 2],[45.696 1.6 2],[55.548 2.8 2],[58.757 2.8 2],[64.727 3.6 2],[65.336 1.8 2],[74.312 3 2],[79.489 8000 3],[92.374 10000 3],[109.741 2.4 2],[111.367 3 2],[111.601 2.2 2],[113.305 2.8 2],[115.176 2.4 2],[117.062 2.4 2],[120.729 2.6 2],[121.892 2.2 2],[122.455 2.4 2],[128.853 2.4 2],[129.918 2.2 2],[130.74 2.2 2],[130.887 2.4 2],[131.572 2.4 2],[133.401 2.4 2],[135.471 2.2 2],[136.953 2.2 2],[141.661 2.2 2],[147.885 2.4 2],[148.672 40 1],[150.401 80 1],[151.068 2.4 2],[151.422 2.4 2],[155.438 60 1],[156.561 2.4 2],[156.612 2.4 2],[157.273 40 1],[157.455 2.4 2],[159.68 2.4 2],[161.095 2.4 2],[161.578 2.4 2],[167.451 20 1],[169.437 80 1],[171.153 2.4 2],[186.174 2.4 2],[188.392 2.4 2],[190.415 20 1],[192.47 100 1],[197.476 2.2 2],[199.954 60 1],[200.13 2 2],[200.84 3 2],[202.245 2.6 2],[202.395 80 1],[203.884 2 2],[207.043 2.4 2],[207.168 2.4 2],[207.6 2 2],[208.135 2.4 2],[213.487 2 2],[215.637 3.2 2],[216.076 2 2],[221.47 100 1],[223.033 4 2],[224.561 160 1],[225.473 200 1],[228.068 6 2],[230.424 280 1],[232.351 7 2],[233.11 12 2],[233.527 400 1],[234.758 38 1],[247.673 5 2],[250.507 5 2],[251.228 8 2],[252.383 8 2],[252.851 12 1],[253.092 5 2],[255.954 10 2],[257.048 5 2],[259.664 1.6 0],[263.478 20 1],[268.189 8 2],[270.263 1.6 0],[274.578 6 2],[277.136 3.6 1],[278.528 3 0],[293.895 5 2],[296.005 5 2],[296.248 6 2],[301.422 4 2],[304.342 6 2],[307.158 20 0],[307.914 8 2],[310.392 6 2],[310.821 2 0],[311.922 6 2],[313.26 1.6 0],[313.572 1.6 0],[313.77 2 0],[315.27 6 2],[315.534 2 0],[315.567 2 0],[315.805 2.4 0],[315.854 2.4 0],[316.56 5 0],[317.369 3 0],[318.316 6 0],[318.396 3 0],[319.391 2 0],[319.517 5 2],[320.37 5 0],[322.163 6 0],[322.219 8 0],[323.504 5 2],[326.196 10 0],[326.234 12 0],[328.15 8 0],[328.165 5 2],[328.177 3 0],[328.679 4 2],[332.28 10 0],[335.68 16 0],[336.818 10 2],[336.968 6 2],[337.708 12 0],[337.739 4 0],[342.032 14 0],[342.101 5 0],[342.148 6 0],[346.374 8 0],[350.111 40 0],[352.497 16 0],[353.135 6 0],[354.466 16 0],[354.768 4 0],[355.245 20 1],[356.773 40 1],[357.628 20 1],[357.762 6 0],[357.967 16 0],[359.657 40 1],[363.064 8 0],[363.683 8 0],[364.918 5 2],[368.847 4 0],[373.575 80 1],[381.669 40 1],[384.28 40 1],[385.476 20 1],[388.933 4 0],[389.178 280 1],[389.265 4 0],[390.991 8 0],[391.473 100 1],[392.685 5 2],[393.572 10 0],[393.787 4 0],[393.967 40 1],[394.951 100 1],[399.306 5 2],[399.34 16 0],[399.566 6 0],[403.626 60 1],[405.371 3.6 2],[408.377 40 1],[408.486 6 0],[413.066 300 1],[413.243 4 0],[416.6 40 1],[421.604 100 1],[426.795 160 1],[428.31 20 0],[428.78 60 1],[429.76 40 1],[430.932 160 1],[432.3 4 0],[432.573 120 1],[432.674 40 1],[432.962 60 1],[435.033 16 0],[440.254 12 0],[440.523 80 1],[443.189 8 0],[448.898 12 0],[449.364 10 0],[450.592 8 0],[450.963 40 1],[452.317 12 0],[452.493 26 1],[455.403 13000 1],[457.385 8 0],[457.964 16 0],[459.975 6 0],[461.992 4 0],[462.833 5 0],[464.41 60 1],[467.362 6 0],[469.162 7 0],[469.744 3 2],[470.043 4 0],[470.894 160 1],[472.644 8 0],[484.346 160 1],[484.714 60 1],[485.084 40 1],[487.765 6 0],[489.997 80 1],[490.29 3 0],[493.409 4000 1],[494.735 1.6 0],[495.715 200 1],[499.781 60 1],[501.3 200 1],[504.955 2 2],[509.754 2 2],[510.225 2.4 2],[513.454 2 2],[515.994 4 0],[526.703 4 0],[536.135 160 1],[539.16 200 1],[542.105 40 1],[542.455 20 0],[542.879 40 1],[548.03 60 1],[551.905 40 0],[553.548 200 0],[562.04 4 0],[568.018 2 0],[577.762 80 0],[578.418 160 1],[580.023 20 0],[580.569 4 0],[582.628 30 0],[585.368 560 1],[590.764 3 0],[597.17 20 0],[598.125 160 1],[599.709 20 0],[599.8 2 2],[599.985 60 1],[601.947 20 0],[606.312 40 0],[610.199 2.6 2],[611.078 60 0],[613.583 80 1],[614.172 4000 1],[634.168 30 0],[637.711 2 2],[637.891 100 1],[638.376 2 2],[645.085 18 0],[648.291 30 0],[649.69 2400 1],[649.876 60 0],[652.617 1.6 2],[652.731 30 0],[659.533 600 0],[665.41 30 0],[667.527 300 0],[669.384 360 0],[676.962 200 1],[686.569 120 0],[686.785 60 0],[687.409 200 1],[705.994 1200 0],[709.549 1.6 2],[712.033 480 0],[719.524 120 0],[722.884 120 0],[728.03 600 0],[739.241 240 0],[741.753 60 0],[745.978 180 0],[748.808 120 0],[763.69 90 0],[764.291 120 0],[767.209 360 0],[778.048 240 0],[783.957 36 0],[790.575 300 0],[791.134 120 0],[821.024 180 0],[830.869 1.6 2],[855.997 360 0],[871.074 20 1],[873.771 20 1],[879.976 60 0],[886.098 60 0],[891.499 90 0],[921.969 60 0],[930.808 60 0],[932.458 60 0],[937.006 300 0],[945.592 60 0],[952.176 1.6 2],[958.937 90 0],[960.888 180 0],[964.572 60 0],[983.037 300 0],[1000.108 180 0],[1003.21 120 0],[1023.323 240 0],[1047.126 60 0],[1079.125 24 0],[1101.269 36 0],[1111.442 30 0],[1130.304 48 0],[1169.745 24 0],[1320.73 24 0],[1381.05 24 0],[1407.79 24 0],[1500.04 24 0],[2071.2 24 0],[2551.5699 30 0],[2922.39 30 0]}{ALLx13000x1200x13000x12x10000x0x0}{UVx10000x40x400x12x10000x0x0}{VISx13000x1200x13000x5x0x0x0}{IVx360x360x20x1.6x0x0x0}%
@@ -115,7 +115,7 @@
\pgfspectra@elt@search{#1}{Pb}{[36.74 0.2 4],[37.253 0.2 4],[38.787 0.2 4],[39.438 0.2 4],[42.464 0.5 4],[43.103 0.3 4],[43.66 0.3 4],[43.847 0.2 4],[43.891 0.6 4],[45.345 0.4 4],[46.17 0.3 4],[47.536 0.8 3],[47.835 0.7 3],[49.62 0.3 4],[49.638 1 3],[49.994 1.2 3],[51.507 0.9 3],[52.978 1.4 3],[57.016 2 3],[57.39 0.8 3],[58.452 0.8 3],[64.85 1 3],[65.61 0.9 3],[69.442 0.4 4],[69.62 0.8 4],[70.373 2 4],[70.629 0.4 4],[70.766 0.6 4],[73.085 0.5 4],[74.946 1.2 4],[75.252 1 4],[75.58 1 4],[76.109 1 3],[76.276 0.6 4],[76.587 1 4],[76.745 1.8 4],[76.949 1.8 4],[77.142 1.4 4],[78.279 1.4 4],[78.705 1 4],[79.702 1.5 4],[79.98 0.5 4],[80.207 1.8 3],[80.282 1.2 3],[80.963 1.8 4],[81.232 0.5 4],[81.259 1 3],[81.41 0.8 4],[82.009 0.8 4],[82.207 0.8 3],[82.552 0.5 4],[82.741 1 3],[82.932 0.8 4],[83.26 1.2 3],[84.099 0.8 3],[84.288 0.8 3],[84.594 1.2 3],[84.604 0.2 1],[84.988 0.2 1],[85.198 0.5 4],[85.557 0.3 1],[85.764 1.8 3],[85.902 0.8 3],[86.233 1.6 3],[86.3 0.3 1],[86.397 2 4],[86.71 1 4],[87.044 1.4 3],[87.371 0.6 1],[87.796 0.2 1],[87.996 1.2 3],[88.035 0.7 3],[88.05 0.6 4],[88.39 1.8 4],[88.496 1.4 3],[88.499 1.4 3],[88.837 1.4 4],[88.968 0.8 1],[89.072 1.6 3],[89.44 1.4 4],[89.608 1.2 4],[89.63 0.3 1],[90.851 1.2 3],[91.509 0.8 4],[91.571 1.4 4],[91.79 1.2 3],[91.809 1.2 4],[92.028 1.2 4],[92.066 1.2 4],[92.212 1 3],[92.249 1.2 3],[92.452 0.7 3],[92.644 0.5 1],[92.764 1 3],[93.22 1.4 3],[93.7 0.8 3],[94.074 0.6 4],[94.62 0.8 4],[95.093 0.6 4],[95.285 0.7 3],[95.435 1.2 4],[95.495 0.4 4],[95.528 1 4],[95.876 0.2 1],[96.021 0.2 1],[96.101 0.1 2],[96.438 0.4 4],[96.536 0.3 1],[96.723 1 1],[97.256 0.9 1],[98.217 0.8 1],[98.671 1 1],[98.914 0.6 4],[99.589 1 1],[100.181 0.6 1],[100.542 0.8 4],[101.244 0.8 3],[101.661 1 1],[102.861 1.4 3],[103.05 0.3 2],[103.205 2 3],[104.124 1.6 3],[104.414 1.8 3],[104.89 1.2 2],[104.982 1 1],[105.077 1 1],[105.126 1 4],[105.653 1.5 3],[105.926 0.4 4],[106.066 1 1],[106.558 0.9 1],[106.92 0.4 2],[107.209 1.2 3],[107.47 0.3 2],[107.988 0.7 3],[108.081 1.8 3],[108.417 2 3],[108.886 1 4],[108.994 0.6 3],[109.652 0.9 4],[109.947 0.7 3],[110.394 1 1],[110.479 0.6 4],[110.843 1 1],[110.984 1 1],[111.53 0.6 3],[111.608 2 3],[111.867 0.4 2],[111.957 1 1],[112.133 0.4 4],[112.136 1 1],[113.314 1 1],[113.75 1 4],[113.784 1.8 3],[114.277 0.8 3],[114.493 1.4 3],[114.591 0.4 1],[115.236 0.4 4],[115.788 1.2 4],[116.7 0.4 2],[118.543 1.4 4],[118.995 2 3],[120.363 1 1],[123.12 1 1],[123.35 1.1 4],[124.847 1 4],[125.06 0.4 2],[126.69 0.1 2],[126.755 0.8 3],[129.082 0.8 3],[129.11 1 3],[131.305 2 3],[132.392 0.8 3],[133.165 1 1],[133.52 1 1],[134.306 1.2 3],[134.837 1 1],[138.894 1.6 3],[139.702 0.6 3],[140.026 1.8 3],[140.434 1 3],[143.396 1 1],[144.935 0.3 1],[151.076 0.7 3],[151.242 1 1],[153.571 1.4 3],[155.31 2 2],[161.01 0.1 2],[163.575 0.8 4],[167.153 1 1],[168.215 1 1],[171.123 0.4 2],[172.675 2 1],[174 0.2 0],[176.664 0.2 0],[179.467 0.2 0],[179.667 1 1],[179.839 0.8 3],[180.287 0.2 4],[181.297 0.5 0],[182.205 1 1],[184.3 0.2 4],[186.876 0.4 0],[188.867 0.2 4],[189.319 0.8 3],[189.702 0.2 4],[190.477 1 0],[191.433 0.2 4],[191.974 0.4 4],[192.1471 0.7 1],[195.796 0.5 4],[195.934 1.2 3],[197.244 0.4 0],[197.316 1.6 3],[197.788 0.2 0],[199.16 0.2 0],[199.231 0.2 0],[199.858 0.2 4],[199.883 1 4],[202.202 0.5 0],[204.258 1 3],[204.934 1.2 3],[205.088 0.5 0],[205.328 0.8 0],[207.845 0.8 4],[207.922 1.2 3],[211.1758 0.6 0],[211.5066 1 0],[214.255 1 4],[215.196 0.8 3],[215.401 1.5 3],[216.797 1 4],[217 50 0],[217.558 0.7 0],[217.746 1.2 3],[218.7888 0.7 0],[218.9603 0.8 0],[220.3534 1 1],[223.7425 2 0],[224.686 2 0],[224.689 2.5 0],[225.901 2 4],[227.666 1 4],[230.149 0.8 4],[233.2418 15 0],[235.953 1.6 3],[238.8797 18 0],[239.3792 55 0],[239.9597 14 0],[240.194 32 0],[241.1734 32 0],[241.761 1.6 3],[242.481 1.5 4],[244.3829 15 0],[244.6181 16 0],[247.6378 13 0],[252.669 0.8 1],[257.66 0.8 1],[257.726 8 0],[260.838 0.2 1],[261.3655 50 0],[261.4175 90 0],[262.8262 16 0],[263.4256 0.4 1],[265.7094 1 0],[266.3154 70 0],[269.7541 1 0],[280.1995 2500 0],[282.258 10 0],[282.3189 1400 0],[283.3053 3500 0],[284.0557 0.6 1],[286.424 0.4 3],[286.45 0.4 3],[287.3311 1400 0],[288.73 0.3 1],[291.4442 0.3 1],[294.743 0.2 1],[294.853 0.3 1],[296.646 1.5 0],[297.2991 1.5 0],[297.814 0.4 3],[298.0157 1.5 0],[298.6876 0.4 1],[301.639 1 1],[304.385 1 2],[305.256 0.4 3],[308.908 0.4 2],[310.274 0.4 2],[311.8894 15 0],[313.781 1 2],[317.65 1 2],[322.0528 60 0],[322.117 0.4 3],[322.9613 10 0],[324.0186 40 0],[324.284 0.5 2],[326.2355 20 0],[353.017 0.1 2],[357.2729 3500 0],[358.987 0.7 2],[363.9568 5000 0],[367.1491 2000 0],[368.3462 7000 0],[368.931 0.7 2],[370.602 0.3 2],[371.3982 1 1],[372.869 0.5 2],[373.9935 2500 0],[385.408 1.2 2],[395.192 0.8 2],[396.248 0.4 3],[401.9632 1500 0],[403.116 0.3 2],[404.98 0.4 3],[405.7807 9500 0],[406.2136 1400 0],[409.454 0.3 2],[411.076 0.5 1],[411.335 0.4 1],[412.811 0.2 2],[415.282 1 1],[415.7814 1 0],[416.8033 1000 0],[424.214 0.9 1],[424.492 2 1],[427.266 0.8 2],[429.382 0.7 1],[429.665 0.6 1],[434.0413 20 0],[435.274 1 1],[438.646 2 1],[449.615 1 3],[449.934 0.6 2],[453.46 1.6 3],[457.121 0.7 2],[457.9051 1 1],[458.227 1 1],[459.645 0.1 2],[460.54 0.8 3],[476.112 0.6 2],[479.859 0.4 2],[480.936 0.4 4],[482.686 0.1 2],[485.506 0.2 2],[500.5416 100 0],[500.6572 10 0],[504.258 5 1],[506.512 0.3 2],[507.058 1 1],[507.453 1 1],[507.635 1 0],[508.9484 5 0],[509.001 2 0],[510.7242 1 0],[511.164 1 1],[519.156 0.4 2],[520.1437 200 0],[536.764 1 1],[537.2099 1 1],[552.397 0.5 2],[554.425 1 1],[560.885 2 1],[569.2346 4 0],[577.941 0.3 2],[585.796 0.6 2],[589.5624 20 0],[591.454 0.2 3],[600.1862 200 0],[600.958 0.9 1],[601.1667 50 0],[604.117 0.8 1],[605.9356 50 0],[607.574 4 1],[608.1409 4 1],[611.052 5 0],[615.989 1 1],[623.5266 10 0],[665.099 0.5 4],[666.02 5 1],[675.32 0.4 4],[689.211 1 0],[712.894 0.5 0],[719.36 2 1],[722.8965 2000 0],[730.468 0.5 0],[733.015 0.8 0],[734.6676 1 0],[755.897 1 1],[763.256 1 1],[773.296 0.4 1],[780.9259 2 0],[781.797 0.5 0],[782.901 0.6 0],[789.6737 0.5 0],[815.691 0.2 1],[816.8001 1 0],[819.1886 0.6 0],[821.7711 0.5 0],[825.561 0.8 0],[827.269 4 0],[833.554 0.6 1],[839.568 1 1],[840.9384 2 0],[847.8492 1 0],[853.217 0.8 0],[854.495 0.7 1],[870.99 0.7 1],[871.939 0.5 1],[872.281 0.5 0],[885.7457 1 0],[905.082 1 1],[906.343 1 1],[924.528 0.2 1],[929.3476 0.8 0],[938.435 0.5 0],[938.589 0.5 0],[943.805 1.5 0],[960.4297 1.5 0],[960.873 0.6 0],[967.4351 1.5 0],[1029.0458 20 0],[1043.432 0.5 0],[1049.8965 10 0],[1064.9249 5 0],[1075.941 0.5 0],[1075.974 0.7 0],[1088.6688 1.5 0],[1096.953 4 0],[1105.922 0.6 0],[1133.308 0.3 0],[1147.949 0.2 1],[1148.876 0.2 0],[1162.791 0.5 1],[1256.137 0.1 0]}{ALLx9500x9500x5x2x2x2x0}{UVx7000x7000x2x2x2x2x0}{VISx9500x9500x5x1.2x1.6x0.5x0}{IVx20x20x1x0x0x0x0}%
\pgfspectra@elt@search{#1}{Bi}{[35.577 1 4],[36.952 1 4],[42.07 6 3],[42.978 1 4],[43.12 6 3],[43.563 1 4],[48.839 2 4],[49.272 1 4],[56.362 3 4],[59.073 1 2],[67.076 5 2],[67.887 2 4],[68.688 6 4],[70.654 1 4],[73.071 5 4],[73.817 10 4],[77.516 4 2],[79.05 6 3],[79.06 6 3],[79.25 8 3],[80.365 6 2],[82.03 10 3],[82.29 9 3],[82.49 12 3],[84.986 6 4],[85.568 5 4],[86.445 15 4],[87.26 15 3],[87.68 8 3],[88.017 6 4],[91.67 9 3],[92.093 7 2],[92.39 12 3],[92.548 6 2],[92.981 6 4],[94.33 15 3],[96.76 9 3],[96.88 8 3],[98.98 8 3],[103.999 25 2],[104.576 50 2],[105.181 30 2],[105.888 15 1],[108.547 20 1],[109.92 10 1],[110.34 24 3],[112.88 7 3],[113.86 6 3],[113.901 20 2],[113.946 15 4],[113.98 6 3],[114.591 15 2],[114.97 7 3],[116.319 8 1],[116.706 8 1],[122.464 50 2],[122.543 10 1],[123.278 15 1],[124.105 10 1],[126.535 10 1],[128.373 15 1],[130.618 10 1],[131.7 60 3],[132.546 20 1],[132.684 40 2],[132.947 20 1],[134.612 60 2],[135.007 20 1],[137.261 25 1],[137.602 15 1],[139.392 20 1],[142.333 35 2],[142.352 35 2],[143.683 45 1],[144.794 25 1],[145.511 50 1],[146.1 60 2],[146.214 25 1],[148.693 35 1],[150.25 20 1],[152.057 40 1],[153.317 40 1],[153.677 30 1],[153.806 35 1],[156.367 20 1],[157.37 40 1],[159.179 60 1],[160.158 25 1],[160.64 60 2],[160.97 40 1],[161.138 40 1],[165.281 20 1],[169.15 20 2],[174.929 20 1],[177.711 80 1],[178.747 60 1],[179.193 70 1],[182.38 70 1],[183.432 20 2],[186.39 10 2],[190.241 100 1],[191 30 3],[191.212 10 2],[195.453 9000 0],[196.013 7000 0],[198.826 10 2],[198.935 25 1],[202.075 20 2],[202.115 20 2],[202.121 7000 0],[206.17 9000 0],[206.89 45 1],[207.322 10 2],[207.337 14 2],[209.3 30 3],[210.342 15 2],[211.026 4600 0],[213.363 2500 0],[214.34 15 1],[214.346 15 1],[218.69 60 1],[221.355 30 2],[221.4 40 1],[222.825 360 0],[223.061 1700 0],[227.658 340 0],[231.1 100 3],[232.6 100 3],[236.812 16 1],[236.825 12 1],[237.6 100 3],[240.088 190 0],[241.46 75 2],[243.76 10 2],[250.1 10 1],[251.569 25 0],[252.449 70 0],[254.45 20 1],[262.791 700 0],[262.9 100 3],[267.7 100 3],[269.3 12 1],[269.676 280 0],[271.33 20 1],[273.05 140 0],[276.7 100 3],[277.2 100 3],[278.052 360 0],[278.6 100 3],[280.342 15 1],[280.37 11 1],[280.53 12 1],[280.962 140 0],[284.2 100 3],[284.74 30 2],[285.56 80 2],[289.798 4000 0],[292.4 100 3],[293.3 100 3],[293.6 100 3],[293.67 15 1],[293.83 3200 0],[295.04 20 1],[296.34 12 1],[298.903 2800 0],[299.334 700 0],[301.2 100 3],[302.464 2400 0],[303.487 60 0],[304.2 100 3],[306.772 9000 0],[307.666 140 0],[311.5 35 2],[323.9 100 3],[339.721 550 0],[343.083 10 1],[343.123 12 1],[345.1 40 2],[347.38 40 2],[348.55 35 2],[351.085 500 0],[354.08 15 2],[359.611 380 0],[361.34 45 2],[364.3 100 3],[365.42 12 1],[368.2 100 3],[369.532 50 2],[369.568 50 2],[373.4 100 3],[379.25 70 1],[381.11 12 1],[381.58 20 1],[384.58 10 1],[386.39 30 1],[386.8 100 3],[407.91 40 1],[409.72 10 1],[412.153 140 0],[412.186 140 0],[422.46 12 2],[425.94 75 1],[427.2 25 1],[430.17 70 1],[432.78 25 2],[433.98 12 1],[434.05 25 1],[434.2 30 3],[437.94 12 1],[447.68 25 1],[456.084 30 2],[456.154 30 2],[470.53 60 1],[472.252 600 0],[473.03 30 1],[474.97 20 1],[479.74 40 2],[490.82 12 1],[491.66 10 1],[496.97 12 1],[499.36 20 1],[507.93 45 2],[509.16 10 1],[512.43 50 1],[514.43 60 1],[520.15 20 1],[520.92 75 1],[527.03 40 1],[534.7 30 3],[539.78 10 1],[555.235 10 0],[559.941 3 0],[565.52 20 1],[571.92 40 1],[574.255 6 0],[581.83 12 1],[586.02 20 1],[597.3 20 1],[605.91 15 1],[612.8 15 1],[613.482 6 0],[647.573 3 0],[647.624 3 0],[649.77 15 1],[657.72 10 1],[660.02 40 1],[662.34 12 2],[680.86 50 1],[699.112 4 0],[703.3 12 1],[703.615 2 0],[738.1 10 1],[738.1 10 2],[750.233 2 0],[755.1 12 2],[759.8 25 2],[763.7 10 1],[763.7 10 2],[775 10 1],[783.87 3 0],[784.033 2 0],[796.5 20 1],[800.8 40 2],[805 12 1],[807 50 2],[810 20 2],[832.8 15 1],[838.8 15 1],[853.2 30 1],[854.454 2 0],[857.974 1 0],[865.3 25 1],[867.1 15 2],[875.488 2 0],[876.154 3 0],[886.3 25 1],[890.781 2 0],[893.4 20 2],[965.704 2000 0],[982.778 40 0],[1010.45 20 0],[1013.88 15 0],[1030.06 20 0],[1053.619 20 0],[1107.244 50 0],[1155.16 15 0],[1171.037 1500 0],[1199.949 40 0],[1216.508 200 0],[1237.464 10 0],[1269.004 200 0],[1281.78 100 0],[1433.05 200 0],[1600.15 50 0],[2255.16 60 0]}{ALLx9000x9000x100x80x100x15x0}{UVx9000x9000x100x80x100x15x0}{VISx600x600x75x45x100x0x0}{IVx2000x2000x30x50x0x0x0}%
\pgfspectra@elt@search{#1}{Po}{[213.902 250 0],[220.38 300 -1],[222.067 300 0],[222.213 200 0],[228.422 200 -1],[234.461 250 0],[242.172 250 0],[242.609 300 0],[245.008 1500 0],[248.394 700 0],[249.053 700 0],[250.218 200 -1],[253.495 300 0],[255.733 300 0],[255.801 1500 0],[256.231 400 -1],[257.88 300 -1],[258.764 400 0],[263.701 200 -1],[264.536 300 0],[266.333 700 -1],[267.167 200 0],[276.192 600 0],[280.026 400 0],[282.411 250 0],[286.601 300 0],[291.931 400 0],[295.892 600 0],[300.321 2500 0],[306.931 450 0],[311.595 200 -1],[318.902 400 0],[324.024 600 0],[328.638 250 0],[332.86 600 0],[348.979 300 -1],[349.365 200 -1],[358.833 400 -1],[367.136 200 -1],[386.193 500 0],[405.198 200 -1],[417.052 1200 0],[423.613 250 -1],[441.558 200 -1],[449.321 800 0],[461.144 350 0],[486.712 200 -1],[487.624 400 0],[494.681 450 -1],[532.323 350 0],[574.485 300 0],[796.262 600 0],[843.387 300 0],[861.826 500 0],[922.787 250 -1]}{ALLx2500x2500x0x0x0x0x700}{UVx2500x2500x0x0x0x0x700}{VISx1200x1200x0x0x0x0x450}{IVx600x600x0x0x0x0x250}%
-\pgfspectra@elt@search{#1}{At}{[216.225 8 0],[224.401 10 0]}{ALLx10x10x0x0x0x0x0x0}{UVx10x10x0x0x0x0x0x0}{VISx0x0x0x0x0x0x0}{IVx0x0x0x0x0x0x0}
+\pgfspectra@elt@search{#1}{At}{[216.225 8 0],[224.401 10 0]}{ALLx10x10x0x0x0x0x0x0}{UVx10x10x0x0x0x0x0x0}{VISx0x0x0x0x0x0x0}{IVx0x0x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Rn}{[351.46 5 0],[373.989 10 0],[375.365 20 0],[391.72 10 0],[394.172 10 0],[395.236 10 0],[422.606 10 0],[430.776 80 0],[433.578 7 0],[434.96 100 0],[443.505 40 0],[445.925 50 0],[450.848 50 0],[457.772 50 0],[460.938 50 0],[472.176 30 0],[572.258 6 0],[606.192 10 0],[620.075 6 0],[638.045 6 0],[655.749 10 0],[660.643 10 0],[662.723 15 0],[666.96 6 0],[670.428 8 0],[675.181 20 0],[680.679 6 0],[683.695 8 0],[683.757 8 0],[689.116 10 0],[699.89 10 0],[705.542 200 0],[726.811 100 0],[729.1 20 0],[732.098 6 0],[741.904 10 0],[745 300 0],[747.089 8 0],[748.313 8 0],[751.413 8 0],[751.692 8 0],[752.393 6 0],[759.755 6 0],[760.128 8 0],[765.748 10 0],[773.843 10 0],[774.664 20 0],[780.982 100 0],[804.9 20 0],[809.951 100 0],[817.384 6 0],[827.096 100 0],[831.451 8 0],[834.974 6 0],[838.105 10 0],[848.748 10 0],[849.489 10 0],[852.095 20 0],[860.007 100 0],[863.976 10 0],[867.583 15 0],[880.775 10 0],[932.702 50 0],[994.857 6 0],[1010.613 5 0]}{ALLx300x300x0x0x0x0x0}{UVx20x20x0x0x0x0x0}{VISx300x300x0x0x0x0x0}{IVx100x100x0x0x0x0x0}%
\pgfspectra@elt@search{#1}{Ra}{[236.973 8 1],[246.055 8 1],[247.55 10 1],[258.661 8 1],[264.373 10 1],[270.896 20 1],[279.521 10 1],[281.376 30 1],[303.344 10 1],[310.18 5 0],[364.955 100 1],[381.442 200 1],[419.409 8 1],[424.472 8 1],[434.064 100 1],[443.627 20 1],[453.311 30 1],[464.129 8 0],[468.228 100 1],[469.928 8 0],[482.591 100 0],[485.607 10 0],[485.941 10 1],[492.753 10 1],[509.756 10 0],[520.593 10 0],[528.328 10 0],[532.029 10 0],[539.98 10 0],[540.023 20 0],[540.681 20 0],[548.213 8 0],[550.198 10 0],[555.357 10 0],[555.585 20 0],[561.666 10 0],[566.081 50 0],[581.363 20 1],[620.03 30 0],[633.69 10 0],[644.62 20 0],[648.732 20 0],[659.334 10 1],[671.932 10 1],[698.022 20 0],[711.85 20 0],[714.121 50 0],[722.516 20 0],[731.027 10 0],[783.812 20 0],[801.97 50 1],[817.731 6 0],[833.507 5 0],[993.221 5 0]}{ALLx200x100x200x0x0x0x0}{UVx100x5x100x0x0x0x0}{VISx200x100x200x0x0x0x0}{IVx50x20x50x0x0x0x0}%
\pgfspectra@elt@search{#1}{Ac}{[206.2 20 3],[210 8 1],[250.212 30 3],[255.808 100 3],[262.644 1000 2],[268.29 50 2],[271.25 20 1],[272.623 10 1],[276.018 10 1],[278.156 10 1],[279.083 5 3],[279.39 50 3],[279.759 20 1],[280.676 20 1],[283.347 8 1],[284.716 150 1],[289.52 8 1],[289.682 30 1],[292.302 30 1],[295.255 2000 2],[299.417 200 1],[304.33 500 1],[306.936 200 1],[307.807 100 1],[308.604 100 1],[308.737 100 1],[311.283 200 1],[312.016 100 1],[315.309 500 1],[315.441 600 1],[316.481 200 1],[322.47 20 3],[323.059 300 1],[323.77 150 1],[326.091 500 1],[331.801 100 1],[338.353 200 1],[339.278 2000 2],[341.384 200 1],[341.777 500 1],[348.116 500 1],[348.759 3000 2],[348.953 200 1],[352.924 100 1],[353.463 100 1],[355.499 200 1],[356.559 1000 1],[369.488 100 1],[375.667 300 1],[379.982 200 1],[386.312 2000 1],[391.447 100 1],[406.16 400 1],[408.844 3000 1],[416.84 3000 1],[417.998 100 0],[418.312 20 0],[419.44 20 0],[420.969 300 1],[435.913 300 1],[438.453 20 0],[438.641 1000 1],[439.671 20 0],[441.309 2000 2],[446.273 20 0],[450.72 1000 1],[456.987 3000 2],[460.545 500 1],[471.658 10 0],[472.016 400 1],[481.222 300 1],[494.518 100 1],[495.823 100 1],[496.087 100 1],[519.321 8 2],[544.638 150 1],[573.205 300 1],[575.897 400 1],[591.085 1000 1],[616.475 600 1],[616.783 200 1],[624.283 400 1],[635.986 20 0],[669.127 20 0],[729.04 6 0],[786.61 6 0]}{ALLx3000x100x3000x3000x100x0x0}{UVx3000x0x1000x3000x100x0x0}{VISx3000x100x3000x3000x0x0x0}{IVx6x6x0x0x0x0x0}%
diff --git a/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty b/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty
index 308c9bcc780..2135d346677 100644
--- a/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty
+++ b/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty
@@ -7,9 +7,10 @@
% Hugo Gomes @ 21/02/2023 (v2.2.0)
% Hugo Gomes @ 25/04/2023 (v3.0.0)
% Hugo Gomes @ 27/04/2023 (v3.0.1)
+% Hugo Gomes @ 07/07/2024 (v3.0.1a)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}%
-\ProvidesPackage{pgf-spectra}[27/04/2023 pgf-spectra v3.0.1]%
+\ProvidesPackage{pgf-spectra}[07/07/2024 pgf-spectra v3.0.1a]%
\RequirePackage{tikz}%
\DeclareOption{LSE}{\input{pgf-spectra.data.LSE.tex}\xdef\pgfspectra@DATASET{1}}%
\DeclareOption{NIST}{\input{pgf-spectra.data.NIST.tex}\xdef\pgfspectra@DATASET{0}}%
@@ -640,15 +641,15 @@ precision=1,unit={}% NEW v3.0.0 (for data library)
\fi%
}%
\def\pgfspectra@utils@put@label{\ignorespaces%
- \ifx\pgfspectra@elt@chemsym\undefined\def\pgfspectra@elt@chemsym{}\fi%
+ \ifx\pgfspectra@elt@chemsym\undefined\def\pgfspectra@elt@chemsym{}\else\fi%
\pgfspectra@get@label@position%
\ifnum\pgfspectra@begin>\pgfspectra@end%
\ifcase\pgfspectra@label@position%
%west
\ifpgfspectra@drawaxis%\ifpgfspectra@axislabel%
- \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (-2.5*\@pgfspectra@axis@height-\pgfspectra@width,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
+ \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (-2.5*\@pgfspectra@axis@height-\pgfspectra@width,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
\else%
- \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (-\pgfspectra@width,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
+ \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (-\pgfspectra@width,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
\fi%
\or%north west
\ifpgfspectra@drawaxis%
@@ -693,9 +694,9 @@ precision=1,unit={}% NEW v3.0.0 (for data library)
\ifcase\pgfspectra@label@position%
%west
\ifpgfspectra@drawaxis%
- \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (-2.5*\@pgfspectra@axis@height,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
+ \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (-2.5*\@pgfspectra@axis@height,0.5*\pgfspectra@height-1.25*\@pgfspectra@axis@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
\else%
- \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2em,align=right] at (0,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
+ \node[\pgfspectra@labelfontcolor,font=\pgfspectra@labelfont,left,minimum width=2.1em,align=right] at (0,0.5*\pgfspectra@height) {\pgfspectra@labelbtext\pgfspectra@elt@chemsym\pgfspectra@labelatext};%
\fi%
\or%north west
\ifpgfspectra@drawaxis%
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/pgfornament/pgfornament.sty b/Master/texmf-dist/tex/latex/pgfornament/pgfornament.sty
index 27406e8bbf1..fad27cbb742 100644
--- a/Master/texmf-dist/tex/latex/pgfornament/pgfornament.sty
+++ b/Master/texmf-dist/tex/latex/pgfornament/pgfornament.sty
@@ -17,7 +17,7 @@
% Inspired from psvectorian P Fradin H Voss
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{tikz,pgfopts}
-\ProvidesPackage{pgfornament}[2020/05/26 v1.2 vector ornaments]
+\ProvidesPackage{pgfornament}[2024/08/14 v1.3 vector ornaments]
\gdef\pgfOrnamentsObject{pgflibraryvectorian.code.tex}
\gdef\OrnamentsFamily{vectorian}
\pgfkeys{%
@@ -138,7 +138,7 @@ baseline={([yshift=\pgfornamentydelta]current bounding box.\pgfornamentanchor)},
\pgftransformscale{\pgfornamentscale}%
\pgf@@ornament{#2}%
\end{tikzpicture}%
-\tikzset{pgfornamentstyle/.style={cm={1,0,0,1,(0,0)}}}
+\tikzset{pgfornamentstyle/.style={cm={1,0,0,1,(0,0)}}}%
}% end pgfornament
\gdef\ornamenttopos{.5}
@@ -180,8 +180,8 @@ baseline={([yshift=\pgfornamentydelta]current bounding box.\pgfornamentanchor)},
\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{#3 west}}
\pgf@xb=\pgf@x
\advance\pgf@xb by -\pgf@xa
-\node[inner sep=0pt] at ($(#1.#3 east)!.5!(#2.#3 west)$) {\pgfornament[width=\pgf@xb]{#4}} ;
-}
+\node[inner sep=0pt] at ($(#1.#3 east)!.5!(#2.#3 west)$) {\pgfornament[width=\pgf@xb]{#4}};
+}%
\def\pgfornamentvline#1#2#3#4{%
\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{south #3}}
\pgf@ya=\pgf@y
@@ -203,7 +203,7 @@ baseline={([yshift=\pgfornamentydelta]current bounding box.\pgfornamentanchor)},
\pgfmathsetmacro{#1}{atan2(\pgf@x,\pgf@y)}%
}%
\makeatother
-\newcommand{\resetpgfornamentstyle}{\tikzset{pgfornamentstyle/.style={}}}
+\newcommand{\resetpgfornamentstyle}{\tikzset{pgfornamentstyle/.style={}}}%
% 2020 Changing vector objects
\def\newpgfornamentfamily#1{%
@@ -219,11 +219,10 @@ baseline={([yshift=\pgfornamentydelta]current bounding box.\pgfornamentanchor)},
/ornamentline/.search also={/tikz}}
\def\pgfornamentline{\pgfutil@ifnextchar[{\pgf@ornamentline}{\pgf@ornamentline[]}}%
\def\pgf@ornamentline[#1]#2#3#4#5{%
-
\pgfqkeys{/ornamentline}{#1}%
\pgfmathsetmacro\nbo{#4}
\path (#2) -- (#3) foreach \i in {0,...,\nbo} {coordinate[pos=\i/\nbo] (p\i)}
[color=\ornamentcolor] foreach \i [count=\j] in {0,...,\number\numexpr\nbo-1} { (p\i) to [ornament=#5] (p\j)};
-}
+}%
\makeatother
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/pgfplotsthemebeamer/pgfplotsthemebeamer.sty b/Master/texmf-dist/tex/latex/pgfplotsthemebeamer/pgfplotsthemebeamer.sty
new file mode 100644
index 00000000000..23006e89c57
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/pgfplotsthemebeamer/pgfplotsthemebeamer.sty
@@ -0,0 +1,37 @@
+% !TeX root = ./testing/test.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The pgfplotsthemebeamer package
+% Using colours from the current beamer theme in pgfplots
+% Maintained by samcarter
+%
+% Project repository and bug tracker:
+% https://github.com/samcarter/pgfplotstheme-beamer
+%
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesPackage{pgfplotsthemebeamer}[2024/08/02 version v0.2 PGFplots colours based the colours of the current beamer theme]
+
+% error if used with a class other than beamer
+\IfClassLoadedF{beamer}{%
+ \PackageError{pgfplotsthemebeamer}{This pgfplots theme needs to be used in conjunction with the beamer class}{}
+}
+
+% setting up colours
+\RequirePackage{pgfplots}
+\pgfplotsset{
+ beamercolors/.style={
+ cycle multi list={
+ mark=*\\mark=x\\mark=square*\\mark=o\\mark=+\\mark=square\\\nextlist
+ structure.fg\\alerted text.fg\\example text.fg\\
+ }
+ }
+}
+
+% making beamercolors default if package is loaded with `all` option
+\DeclareOption{all}{
+ \pgfplotsset{beamercolors}
+}
+\ProcessOptions\relax
diff --git a/Master/texmf-dist/tex/latex/photobook/photobook.cls b/Master/texmf-dist/tex/latex/photobook/photobook.cls
index a2a84809e8b..ae2ecac6b6c 100644
--- a/Master/texmf-dist/tex/latex/photobook/photobook.cls
+++ b/Master/texmf-dist/tex/latex/photobook/photobook.cls
@@ -38,6 +38,7 @@
%
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%
+%
% XXX ASAP: imagecell: photobook@imagecell@left and photobook@imagecell@top
% should explicitly account for clearence@left and clearence@top resp.
% XXX ASAP: imagecell: clearance should have the same semantics as cliptocell
@@ -88,12 +89,25 @@
% cell/cell* depend on absolute mode being set globally
%
%
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+%
+% Work around an issue with calc's \ratio{..}{..} breaking into an
+% "Arythmetic overflow" when working with large images.
+% (see Issues section for more info)
+%
+% NOTE: if the error persists just make this smaller but note that the
+% smaller this gets the greater the error can be for very small
+% images
+%
+\def\CalcOverflowFactor{0.1}%
+
+
%----------------------------------------------------------------------
%%% NOTE: \def\<module-name>@[A-Z]+ macros will be visible to both the
%%% code and the generated docs...
-\edef\photobook@FILEVERSION{v0.1.29}
-\edef\photobook@FILEDATE{2023-08-24}
+\edef\photobook@FILEVERSION{v0.1.31}
+\edef\photobook@FILEDATE{2024-07-19}
%% \documentclass{ltxdoc}
@@ -248,26 +262,27 @@
%% \begin{minipage}{\textwidth}
%% \begin{verbatim}
%%
+%% <-------------------------------------------------> paperwidth
%% <---> bleed <---> bleed
-%%
-%% + - - - - - - - - - - - - - - - - - - - - - - + - + ^
-%% . . . | bleed
-%% . +-----------------------------------------+----- v . . ---
-%% . | ^ . . = .
-%% . | . . . . . . | . . . = . ^
-%% . |<-- blockwidth ------------------------->= . |
-%% . | . | . . . = . |
-%% . | | . . = . textheight
-%% . | . Page | . . . = . |
-%% . | blockheight . . = . |
-%% . | . | . . <--> bindingoffset |
-%% . | | . . = . |
-%% . | . . . . . . | . <--> gutteroffset v
-%% . | v . . = .
-%% . +-----------------------------------------+----- ^ . . ---
-%% . . . . | bleed
-%% + - - - - - - - - - - - - - - - - - - - - - - + - + v
-%% . .
+%% paperheight v
+%% + - - - - - - - - - - - - - - - - - - - - - - + - + ^ . . . ---
+%% . . . | bleed .
+%% . +-----------------------------------------+----- v . . ---
+%% . | ^ . . = . .
+%% . | . . . . . . | . . . = . ^
+%% . |<-- blockwidth ------------------------->= . | .
+%% . | . | . . . = . |
+%% . | | . . = . textheight .
+%% . | . Page | . . . = . |
+%% . | blockheight . . = . | .
+%% . | . | . . <--> bindingoffset |
+%% . | | . . = . | .
+%% . | . . . . . . | . <--> gutteroffset v
+%% . | v . . = . .
+%% . +-----------------------------------------+----- ^ . . ---
+%% . . . . | bleed .
+%% + - - - - - - - - - - - - - - - - - - - - - - + - + v . . . ---
+%% . . ^
%% | <-- textwidth --------------> . |
%% ^ gutter
%%
@@ -278,6 +293,9 @@
%% account for |\gutteroffset|, namely macros that do not display content
%% with bleeds.
%%
+%% Also note that bleeds are included in \href{https://ctan.org/pkg/geometry}{geometry}'s
+%% |\paperwidth| and |\paperheight|.
+%%
% NOTE: if blockwidth/blockheight are set they will force recalculations
% and overriding of the paperwidth/paperheight if they were changed
% by the user code anywhere between \documentclass[..]{photobook}
@@ -917,7 +935,7 @@
%% \DescribeMacro{\imageblockoffsettop=<ratio>}
%
-%% The ration by which the image is raised in |\ImagePage{..}| and
+%% The ratio by which the image is raised in |\ImagePage{..}| and
%% derived templates.
%%
\edef\imageblockoffsettop{\photobook@imageblockoffsettop}
@@ -2515,8 +2533,9 @@
% NOTE: here we calculate image/cell eccentricity to decide
% to fit to width or heigh of cell...
% NOTE: did I say that I "love" how LaTeX does basic math??
+ % NOTE: \ratio{..}{..} here can break, see Issues for more info...
\setlength\photobook@imagecell@imgratio{%
- 1pt * \ratio{\wd\photobook@imagebox}{\ht\photobook@imagebox}}%
+ 1pt * \ratio{\CalcOverflowFactor\wd\photobook@imagebox}{\CalcOverflowFactor\ht\photobook@imagebox}}%
\setlength\photobook@imagecell@cellratio{%
1pt * \ratio{\cellwidth}{\cellheight}}%
\ifdim \photobook@imagecell@imgratio < \photobook@imagecell@cellratio%
@@ -2524,7 +2543,7 @@
\includegraphics[%
keepaspectratio,
width=\photobook@imagecell@scale\dimexpr
- + \cellwidth
+ \cellwidth
- \photobook@imagecell@clearance@left
- \photobook@imagecell@clearance@right \relax]{#3}}%
\else%
@@ -2532,7 +2551,7 @@
\includegraphics[%
keepaspectratio,
height=\photobook@imagecell@scale\dimexpr
- + \cellheight
+ \cellheight
- \photobook@imagecell@clearance@top
- \photobook@imagecell@clearance@bottom \relax]{#3}}%
\fi\fi\fi%
@@ -4848,8 +4867,9 @@
% align center -> check if image fits vertically...
\ifphotobook@ImagePageFit@centered\else%
\sbox{\photobook@imagebox}{\includegraphics{#3}}%
+ % NOTE: \ratio{..}{..} here can break, see Issues for more info...
\setlength\photobook@ImagePageFit@imgratio{%
- 1pt * \ratio{\wd\photobook@imagebox}{\ht\photobook@imagebox}}%
+ 1pt * \ratio{\CalcOverflowFactor\wd\photobook@imagebox}{\CalcOverflowFactor\ht\photobook@imagebox}}%
% NOTE: subtracting \bindingoffset from \cellwidth here makes sure that
% we avoid offsetting images close enough in ratio to the page and
% messing up bleeds...
@@ -5692,6 +5712,26 @@
%----------------------------------------------------------------------
+%%%% Issues
+%
+%% \subsection*{Large images can cause "Arythmetic overflow"}
+%
+%% \DescribeMacro{\CalcOverflowFactor=0.1}
+%
+%% If the issue occurs set |\CalcOverflowFactor| to a smaller value.
+%% But note, a value too small can lead to errors in the affected macros,
+%% a good value is between 0.1 and 0.01.
+%%
+%% Also note that it is recommended to pre-size images the print outside
+%% of \LaTeX.
+%%
+%% Affected macros: |\imagecell[fill]{..}{..}|, |\ImagePageFit|.
+%%
+% The issue occurs in the calc's |\ratio{..}{..}| macro when calculating
+% image proportions.
+%
+%
+%----------------------------------------------------------------------
% Index...
%
% XXX this prints trash at this point...
diff --git a/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty b/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty
index 711b0e919ae..aacfcb12414 100644
--- a/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty
+++ b/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.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{PixelArtTikz}[2024/04/16 v0.1.4 PixelArts with csv and TikZ]
+\ProvidesPackage{PixelArtTikz}[2024/10/31 v0.1.5 PixelArts with csv and TikZ]
+% 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,6 +24,7 @@
\RequirePackage{xstring}
\RequirePackage{multicol}
\RequirePackage{listofitems}
+\RequirePackage{ifthen}
%librairies tikz
%\usetikzlibrary{calc,shapes.geometric}
%cvs
@@ -33,6 +35,19 @@
\RequirePackage[l3]{csvsimple}
\fi
+\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 +75,43 @@
\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%
+ %\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%
+ %\xintifboolexpr{\pixcnt>0}%
+ % {%
+ % %\itemtomacro\LCPA[\pixcnt]\pixcol%
+ % \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}) ;}%
+ % }%
+ % {}%
}%
}%
}%
}%
{%
\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%
+ %\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}} ;%
}%
{}%
}%
@@ -145,11 +167,12 @@
\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ù
+ %\setsepchar{,}%
+ %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -165,16 +188,17 @@
}%
{%
\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%
+ %\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 +250,12 @@
\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%
+ %\setsepchar{,}%
+ %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -246,16 +271,17 @@
}%
{%
\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%
+ %\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 +337,12 @@
\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%
+ %\setsepchar{,}%
+ %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -331,16 +358,17 @@
}%
{%
\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%
+ %\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}} ;%
}%
{}%
}%
@@ -476,13 +504,14 @@
\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)}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
- \readlist*\LCPA\PATcouleurs%
+ %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -500,18 +529,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)}%
{%
\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}} ;%
}%
{}%
}%
@@ -629,13 +659,14 @@
\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)}%
{%
\StrDel{\l}{ }[\l]%
\setsepchar{,}%
- \readlist*\LCPA\PATcouleurs%
+ %\readlist*\LCPA\PATcouleurs%
\StrPosition{\PATlettres}{\l}[\pixcnt]%
\xintifboolexpr{\pixcnt>0}%
{%
@@ -653,18 +684,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)}%
{%
\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}} ;%
}%
{}%
}%
@@ -909,10 +941,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 +1034,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}} ;%
}%
}%
{%
diff --git a/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty b/Master/texmf-dist/tex/latex/pmdraw/pmdraw.sty
index 36f506b51fa..9819f848938 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}[2024-10-07 v1.5 pmdraw]
% *------------------------------*
-% |7````````````````````````````4|
+% |9````````````````````````````5|
% |`````____````____`````````````|
% |````|MFMF\ /MFMF|````````````|
% |````|MF|MF\/MF|MF|````````````|
@@ -14,7 +14,7 @@
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
% |``````````````|MF|````````````|
-% |3````````````````````````````4|
+% |3````````````````````````````1|
% *------------------------------*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -840,6 +840,98 @@
\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}{#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
+}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% For loop commands %
diff --git a/Master/texmf-dist/tex/latex/polyglossia/arabicnumbers.sty b/Master/texmf-dist/tex/latex/polyglossia/arabicnumbers.sty
index c45aa22a654..b5c37d61db3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/arabicnumbers.sty
+++ b/Master/texmf-dist/tex/latex/polyglossia/arabicnumbers.sty
@@ -43,24 +43,23 @@
\fi
}
\def\abjad@zero{}
-\def\abjad@three{ج\ifabjad@jim@notail\char"200D\fi}
+\def\abjad@one{ا}
+\def\abjad@three{ج\ifabjad@jim@notail\Uchar"200D\fi}
\def\abj@num@i@iso#1{%
- \ifcase#1\or ا\or ب\or\abjad@three\or د%
- \or ه\char"200D\or و\or ز\or ح\or ط\fi%
- \ifnum#1=\z@\abjad@zero\fi}
+ \ifcase#1\abjad@zero\or \abjad@one\or ب\or\abjad@three\or د%
+ \or ه\Uchar"200D\or و\or ز\or ح\or ط\fi}
\def\abj@num@i#1{%
- \ifcase#1\or ا\or ب\or\abjad@three\or د%
- \or ه\or و\or ز\or ح\or ط\fi%
- \ifnum#1=\z@\abjad@zero\fi}
+ \ifcase#1\abjad@zero\or\abjad@one\or ب\or\abjad@three\or د%
+ \or ه\or و\or ز\or ح\or ط\fi}
\def\abj@num@ii#1{%
\ifcase#1\or ي\or ك\or ل\or م\or ن%
- \or س\or ع\or ف\or ص\fi%
- \ifnum#1=\z@\fi\abj@num@i}
+ \or س\or ع\or ف\or ص\fi
+ \abj@num@i}
\def\abj@num@iii#1{%
\ifcase#1\or ق\or ر\or ش\or ت\or ث%
- \or خ\or ذ\or ض\or ظ\fi%
- \ifnum#1=\z@\fi\abj@num@ii}
+ \or خ\or ذ\or ض\or ظ\fi
+ \abj@num@ii}
\def\abj@num@iv#1{%
\ifcase#1\or غ\fi
- \ifnum#1=\z@\fi\abj@num@iii}
+ \abj@num@iii}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/cal-util.def b/Master/texmf-dist/tex/latex/polyglossia/cal-util.def
index 85576f39f71..fa6e325029e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/cal-util.def
+++ b/Master/texmf-dist/tex/latex/polyglossia/cal-util.def
@@ -45,7 +45,7 @@
%% This is an algorithm from Reingold & Dershowitz,
-%% Calendrical Calculations, The Millenium Edition
+%% Calendrical Calculations, The Millennium Edition
%%
\def\@FixedFromGregorian#1#2#3#4{%
\setcounter{tmpA}{(#1-1)*365}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-acadien.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-acadian.ldf
index 36d3136d29b..a2eaae84fab 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-acadien.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-acadian.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-acadien.ldf}[polyglossia: module for Canadian (Acadian) French]
% We provide this as a babel alias
-\xpg@load@master@language{french}
+\InheritGlossFile{french}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf
index 2e1a3a0719a..764c92b8f31 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-aeb.ldf}[polyglossia: module for aeb (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf
index f47e9adcbda..640399a7072 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-af.ldf}[polyglossia: module for af (Afrikaans)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{afrikaans}
+\InheritGlossFile{afrikaans}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf
index 7eb4a47a7dd..bb92a313eb2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-afb.ldf}[polyglossia: module for afb (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf
index 33d1f12831c..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-afrikaans.ldf}[polyglossia: module for Afrikaans]
@@ -16,22 +16,21 @@
% BCP-47 compliant aliases
\setlanguagealias*{afrikaans}{af}
-\define@boolkey{afrikaans}[afrikaans@]{babelshorthands}[true]{}
-
+\DeclareKeys[polyglossia/gloss/afrikaans]
+ {
+ babelshorthands.if = afrikaans@babelshorthands,
+ babelshorthands.default:n = true,
+ }
% Register default options
-\xpg@initialize@gloss@options{afrikaans}{babelshorthands=false}
+\InitializeGlossOptions{afrikaans}{babelshorthands=false}
\ifsystem@babelshorthands
- \setkeys{afrikaans}{babelshorthands=true}
+ \SetGlossOptions{afrikaans}{babelshorthands=true}
\else
- \setkeys{afrikaans}{babelshorthands=false}
+ \SetGlossOptions{afrikaans}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\afrikaans@shorthands{%
\xpg@activate@shorthands%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf
index 06a4cd6c681..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.1 -- 2024/03/07)
+% 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 649198b3789..a49b871c05b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-am.ldf}[polyglossia: module for am (Amharic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{amharic}
+\InheritGlossFile{amharic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf
index f456ab17a0e..57b5419eaae 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-american.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-american.ldf}[polyglossia: module for American English]
% We provide this as a babel alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf
index 38c225672ac..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.1 -- 2024/03/07)
+% 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 b52bfa6942c..8e2f1a39613 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-apd.ldf}[polyglossia: module for apd (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\endinput
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 22340aeff1c..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,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-IQ.ldf}[polyglossia: module for ar-IQ (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\SetLanguageKeys{arabic}{bcp47=ar-IQ,bcp47-language=ar,bcp47-region=IQ}%
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 83fd1b49ad9..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,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-JO.ldf}[polyglossia: module for ar-JO (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\SetLanguageKeys{arabic}{bcp47=ar-JO,bcp47-language=ar,bcp47-region=JO}%
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 69a13896196..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,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-LB.ldf}[polyglossia: module for ar-LB (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\SetLanguageKeys{arabic}{bcp47=ar-LB,bcp47-language=ar,bcp47-region=LB}%
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 6176cfabdcb..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,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-MR.ldf}[polyglossia: module for ar-MR (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\SetLanguageKeys{arabic}{bcp47=ar-MR,bcp47-language=ar,bcp47-region=MR}%
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 821d107bbc9..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,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-PS.ldf}[polyglossia: module for ar-PS (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\SetLanguageKeys{arabic}{bcp47=ar-PS,bcp47-language=ar,bcp47-region=PS}%
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 f736606934f..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,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-SY.ldf}[polyglossia: module for ar-SY (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\SetLanguageKeys{arabic}{bcp47=ar-SY,bcp47-language=ar,bcp47-region=SY}%
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 06759e39b51..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,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar-YE.ldf}[polyglossia: module for ar-YE (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\SetLanguageKeys{arabic}{bcp47=ar-YE,bcp47-language=ar,bcp47-region=YE}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf
index f35c8e67727..8d6e79bb471 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ar.ldf}[polyglossia: module for ar (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf
index 3d478f02757..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-arabic.ldf}[polyglossia: module for Arabic]
\RequireBidi
@@ -38,104 +38,112 @@
\setlanguagealias*[locale=default]{arabic}{apd}
\setlanguagealias*[locale=mashriq]{arabic}{ar-PS}
-\define@boolkey{arabic}[arabic@]{abjadalph}[true]{}
-
\newif\ifeastern@numerals
-\define@choicekey*+{arabic}{numerals}[\xpg@val\xpg@nr]{mashriq,maghrib,eastern,western}[mashriq]{%
- \ifcase\xpg@nr\relax
- % mashriq:
- \eastern@numeralstrue%
- \or
- % maghrib:
- \eastern@numeralsfalse
- \or
- % eastern:
- \eastern@numeralstrue%
- \or
- % western:
- \eastern@numeralsfalse
- \fi
- \xpg@info{Option: Arabic, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Arabic numerals option `#1'}}
-
-%this is needed for \abjad in arabicnumbers.sty
-\define@boolkey{arabic}[arabic@]{abjadjimnotail}[true]{%
- \ifarabic@abjadjimnotail
- \abjad@jim@notailtrue%
- \else
- \abjad@jim@notailfalse
- \fi}
-
-\define@choicekey*+{arabic}{locale}[\xpg@val\xpg@nr]{default,mashriq,libya,algeria,tunisia,morocco,mauritania}[default]{%
- \ifcase\xpg@nr\relax
- % default:
- \eastern@numeralstrue%
- \SetLanguageKeys{arabic}{bcp47=ar-YE,bcp47-language=ar}%
- \xpg@info{Option: arabic, locale=default}%
- \or
- % mashriq:
- \eastern@numeralstrue%
- \SetLanguageKeys{arabic}{bcp47=ar-IQ,bcp47-language=ar}%
- \xpg@info{Option: arabic, locale=mashriq}%
- \or
- % libya:
- \eastern@numeralstrue%
- \SetLanguageKeys{arabic}{bcp47=ayl,bcp47-language=ar,bcp47-region=LY}%
- \xpg@info{Option: arabic, locale=libya}%
- \or
- % algeria:
- \eastern@numeralsfalse%
- \SetLanguageKeys{arabic}{bcp47=arq,bcp47-language=ar,bcp47-region=DZ,bcp47-extension-u=nu-latn}%
- \xpg@info{Option: arabic, locale=algeria}%
- \or
- % tunisia:
- \eastern@numeralsfalse%
- \SetLanguageKeys{arabic}{bcp47=aeb,bcp47-language=ar,bcp47-region=TN,bcp47-extension-u=nu-latn}%
- \xpg@info{Option: arabic, locale=tunisia}%
- \or
- % morocco:
- \eastern@numeralsfalse%
- \SetLanguageKeys{arabic}{bcp47=ary,bcp47-language=ar,bcp47-region=MA,bcp47-extension-u=nu-latn}%
- \xpg@info{Option: arabic, locale=morocco}%
- \or
- % mauritania:
- \eastern@numeralstrue%
- \SetLanguageKeys{arabic}{bcp47=ar-MR,bcp47-language=ar,bcp47-region=MR}%
- \xpg@info{Option: arabic, locale=mauritania}%
- \fi
- \gdef\@@arabic@month{\@arabic@month{#1}}
- }{\xpg@warning{Unknown Arabic locale `#1'}}
-
\newif\if@hijrical
-\define@choicekey*+{arabic}{calendar}[\xpg@val\xpg@nr]{gregorian,hijri,islamic}[gregorian]{%
- \ifcase\xpg@nr\relax
- % gregorian:
- \@hijricalfalse
- \or
- % hijri:
- \@hijricaltrue
- \or
- % islamic:
- \@hijricaltrue
- \fi
- \xpg@info{Option: Arabic, calendar=\xpg@val}%
-}{\xpg@warning{Unknown Arabic calendar option `#1'}}
-
-
-\define@key{arabic}{hijricorrection}[0]{%
- \gdef\arabic@hijri@correction{#1}}%
-
\newif\ifarabic@customsep\arabic@customsepfalse
-\def\xpg@sepmark{}
-\define@key{arabic}{sectionsep}[.]{%
- \arabic@customseptrue%
- \gdef\xpg@sepmark{#1}%
-}
+
+\DeclareKeys[polyglossia/gloss/arabic]
+ {
+ hijricorrection.code = \gdef\arabic@hijri@correction{#1},
+ hijricorrection.default:n = 0,
+ sectionsep.code = \gdef\xpg@sepmark{#1}\arabic@customseptrue,
+ sectionsep.default:n = .,
+ abjadalph.if = arabic@abjadalph,
+ abjadalph.default:n = true,
+ abjadjimnotail.if = abjad@jim@notail,
+ abjadjimnotail.default:n = true,
+ numerals.choice:,
+ numerals / mashriq.code =
+ {%
+ \eastern@numeralstrue
+ },
+ numerals / maghrib.code =
+ {%
+ \eastern@numeralsfalse
+ },
+ numerals / eastern.code =
+ {%
+ \eastern@numeralstrue
+ },
+ numerals / western.code =
+ {%
+ \eastern@numeralsfalse
+ },
+ numerals.default:n = mashriq,
+ numerals/unknown.code = \xpg@warning{Unknown Arabic numerals option `#1'},
+ locale.choice:,
+ locale / default.code =
+ {%
+ \eastern@numeralstrue
+ \def\abjad@one{ا}%
+ \SetLanguageKeys{arabic}{bcp47=ar-YE,bcp47-language=ar}%
+ \gdef\@@arabic@month{\@arabic@month{#1}}%
+ },
+ locale / mashriq.code =
+ {%
+ \eastern@numeralstrue
+ \def\abjad@one{ا}%
+ \SetLanguageKeys{arabic}{bcp47=ar-IQ,bcp47-language=ar}%
+ \gdef\@@arabic@month{\@arabic@month{#1}}%
+ },
+ locale / libya.code =
+ {%
+ \eastern@numeralstrue
+ \def\abjad@one{ا}%
+ \SetLanguageKeys{arabic}{bcp47=ayl,bcp47-language=ar,bcp47-region=LY}%
+ \gdef\@@arabic@month{\@arabic@month{#1}}%
+ },
+ locale / algeria.code =
+ {%
+ \eastern@numeralsfalse
+ \def\abjad@one{أ}%
+ \SetLanguageKeys{arabic}{bcp47=arq,bcp47-language=ar,bcp47-region=DZ,bcp47-extension-u=nu-latn}%
+ \gdef\@@arabic@month{\@arabic@month{#1}}%
+ },
+ locale / tunisia.code =
+ {%
+ \eastern@numeralsfalse
+ \def\abjad@one{أ}%
+ \SetLanguageKeys{arabic}{bcp47=aeb,bcp47-language=ar,bcp47-region=TN,bcp47-extension-u=nu-latn}%
+ \gdef\@@arabic@month{\@arabic@month{#1}}%
+ },
+ locale / morocco.code =
+ {%
+ \eastern@numeralsfalse
+ \def\abjad@one{أ}%
+ \SetLanguageKeys{arabic}{bcp47=ary,bcp47-language=ar,bcp47-region=MA,bcp47-extension-u=nu-latn}%
+ \gdef\@@arabic@month{\@arabic@month{#1}}%
+ },
+ locale / mauritania.code =
+ {%
+ \eastern@numeralstrue
+ \def\abjad@one{ا}%
+ \SetLanguageKeys{arabic}{bcp47=ar-MR,bcp47-language=ar,bcp47-region=MR}%
+ \gdef\@@arabic@month{\@arabic@month{#1}}%
+ },
+ locale.default:n = default,
+ locale/unknown.code = \xpg@warning{Unknown Arabic locale `#1'},
+ calendar.choice:,
+ calendar / gregorian.code =
+ {%
+ \@hijricalfalse
+ },
+ calendar / hijri.code =
+ {%
+ \@hijricaltrue
+ },
+ calendar / islamic.code =
+ {%
+ \@hijricaltrue
+ },
+ calendar.default:n = gregorian,
+ calendar/unknown.code = \xpg@warning{Unknown Arabic calendar option `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{arabic}{locale=default,calendar=gregorian,numerals=mashriq,hijricorrection=0,abjadjimnotail=false}
+\InitializeGlossOptions{arabic}{locale=default,calendar=gregorian,numerals=mashriq,hijricorrection=0,abjadjimnotail=false}
% Register alias options
-\xpg@set@alias@values{arabic}{calendar}{islamic}{hijri}
+\SetLanguageAliasValues{arabic}{calendar}{islamic,hijri}
\def\arabicgregmonth@default#1{\ifcase#1%
% Egypt, Sudan, Yemen and Golf states
@@ -155,9 +163,12 @@
\def\arabicgregmonth@mauritania#1{\ifcase#1%
\or يناير\or فبراير\or مارس\or إبريل\or مايو\or يونيو\or يوليو\or أغشت\or شتمبر\or أكتوبر\or نوفمبر\or دجمبر\fi}
-\def\@arabic@month#1{\ifcsdef{arabicgregmonth@#1}{\expandafter\csname arabicgregmonth@#1\endcsname}%
-{\xpg@warning{Option `locale=#1' is not defined for Arabic: using `default' instead}%
-\arabicgregmonth@default}}
+\def\@arabic@month#1{%
+ \@ifundefined{arabicgregmonth@#1}%
+ {\xpg@warning{Option `locale=#1' is not defined for Arabic: using `default' instead}%
+ \arabicgregmonth@default}%
+ {\expandafter\csname arabicgregmonth@#1\endcsname}%
+}
%\Hijritoday is now locale-aware and will format the date with this macro:
\DefineFormatHijriDate{arabic}{\@ensure@RTL{\arabicnumber{\value{Hijriday}}%
@@ -189,18 +200,18 @@
}
\def\datearabic{%
\def\today{%
- \if@hijrical%
+ \if@hijrical
\Hijritoday[\arabic@hijri@correction]%
\else%
- \if@RTL%
+ \if@RTL
\arabicnumber\day\space\@@arabic@month{\month}%
\space\arabicnumber\year%
\else% in LR environment we format the gregorian date within \textenglish
- \ifcsdef{english@loaded}{\textenglish{\today}}%else US format
- {\normalfontlatin\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%
+ \iflanguageloaded{english}{\textenglish{\today}}%else US format
+ {\normalfontlatin\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,\space\number\year}%
- \fi%
+ \fi
\fi}}
% Use \providecommand here as the ldf file might
@@ -226,10 +237,9 @@
\or ح\or ط\or ي\or ك\or ل\or م\or ن%
\or س\or ع\or ف\or ص\or ق\or ر\or ش%
\or ت\or ث\or خ\or ذ\or ض\or ظ\or غ%
- \else\xpg@ill@value{#1}{arabic@abjad@alph}\fi%
+ \else\xpg@ill@value{#1}{arabic@abjad@alph}\fi
}
-
\def\abjadmaghribi#1{%
\ifnum#1>1999\xpg@ill@value{#1}{abjad}%
\else
@@ -252,111 +262,111 @@
%maghribi س -> ص ص -> ض ش -> س ض -> ظ ظ -> غ غ -> ش
\def\abj@maghribi@num@ii#1{%
- \ifcase#1\or ي\or ك\or ل\or م\or ن%
+ \ifcase#1\abjad@zero\or ي\or ك\or ل\or م\or ن%
\or ص\or ع\or ف\or ض\fi
- \ifnum#1=\z@\abjad@zero\fi\abj@num@i}
+ \abj@num@i}
\def\abj@maghribi@num@iii#1{%
\ifcase#1\or ق\or ر\or س\or ت\or ث%
\or خ\or ذ\or ظ\or غ\fi
- \ifnum#1=\z@\fi\abj@maghribi@num@ii}
+ \abj@maghribi@num@ii}
\def\abj@maghribi@num@iv#1{%
\ifcase#1\or ش\fi
- \ifnum#1=\z@\fi\abj@maghribi@num@iii}
+ \abj@maghribi@num@iii}
\def\arabic@numbers{%
\ifarabic@abjadalph
- \let\@alph\abjadalph%
- \let\@Alph\abjadalph%
+ \let\@alph\abjadalph
+ \let\@Alph\abjadalph
\else
- \let\@alph\abjad%
- \let\@Alph\abjad%
+ \let\@alph\abjad
+ \let\@Alph\abjad
\fi
}
\def\noarabic@numbers{%
- \let\@alph\latin@alph%
- \let\@Alph\latin@Alph%
+ \let\@alph\latin@alph
+ \let\@Alph\latin@Alph
}
% Store original definition
\let\xpg@save@arabic\@arabic
\def\arabic@globalnumbers{%
- \let\@arabic\arabicnumber%
+ \let\@arabic\arabicnumber
\renewcommand\thefootnote{\localnumeral*{footnote}}%
\renewcommand\theequation{\localnumeral*{equation}}%
}
\def\noarabic@globalnumbers{%
- \let\@arabic\xpg@save@arabic%
+ \let\@arabic\xpg@save@arabic
}
\def\arabic@xetex@capsformat{%
- \let\xpg@save@sepmark\@SepMark%
+ \let\xpg@save@sepmark\@SepMark
\SepMark{\xpg@sepmark}
}
\def\noarabic@xetex@capsformat{%
- \ifcsdef{xpg@save@sepmark}{%
+ \ifcsname xpg@save@sepmark\endcsname
\SepMark{\xpg@save@sepmark}
- }{}%
+ \fi
}
\def\arabic@luatex@capsformat{%
%
% change chapter and part headings
\ifarabic@customsep
- \ifcsdef{chapter}{%
- \let\xpg@save@thesection\thesection%
+ \ifcsname chapter\endcsname
+ \let\xpg@save@thesection\thesection
\renewcommand*\thesection{\thechapter\xpg@sepmark\@arabic\c@section}
- \let\xpg@save@theequation\theequation%
+ \let\xpg@save@theequation\theequation
\renewcommand*\theequation{%
\ifnum \c@chapter>\z@ \thechapter\xpg@sepmark\fi\@arabic\c@equation}
- \let\xpg@save@thefigure\thefigure%
+ \let\xpg@save@thefigure\thefigure
\renewcommand*\thefigure{%
\ifnum\c@chapter>\z@\thechapter\xpg@sepmark\fi\@arabic\c@figure}
- \let\xpg@save@thetable\thetable%
+ \let\xpg@save@thetable\thetable
\renewcommand*\thetable{%
\ifnum\c@chapter>\z@\thechapter\xpg@sepmark\fi\@arabic\c@table}
- }{}
- \let\xpg@save@thesubsection\thesubsection%
+ \fi
+ \let\xpg@save@thesubsection\thesubsection
\renewcommand\thesubsection
{\thesection\xpg@sepmark\@arabic\c@subsection}
- \let\xpg@save@thesubsubsection\thesubsubsection%
+ \let\xpg@save@thesubsubsection\thesubsubsection
\renewcommand\thesubsubsection{\thesubsection\xpg@sepmark\@arabic\c@subsubsection}
- \let\xpg@save@theparagraph\theparagraph%
+ \let\xpg@save@theparagraph\theparagraph
\renewcommand\theparagraph
{\thesubsubsection\xpg@sepmark\@arabic\c@paragraph}
- \let\xpg@save@thesubparagraph\thesubparagraph%
+ \let\xpg@save@thesubparagraph\thesubparagraph
\renewcommand\thesubparagraph{\theparagraph\xpg@sepmark\@arabic\c@subparagraph}
- \fi% (end \ifarabic@customsep)
+ \fi % (end \ifarabic@customsep)
}
\def\noarabic@luatex@capsformat{%
- \ifcsdef{xpg@save@thesection}{%
- \let\thesection\xpg@save@thesection%
- }{}%
- \ifcsdef{xpg@save@theequation}{%
- \let\theequation\xpg@save@theequation%
- }{}%
- \ifcsdef{xpg@save@thefigure}{%
- \let\thefigure\xpg@save@thefigure%
- }{}%
- \ifcsdef{xpg@save@thetable}{%
- \let\thetable\xpg@save@thetable%
- }{}%
- \ifcsdef{xpg@save@thesubsection}{%
- \let\thesubsection\xpg@save@thesubsection%
- \ifcsdef{xpg@save@thesubsubsection}{%
- \let\thesubsubsection\xpg@save@thesubsubsection%
- }{}%
- }{}%
- \ifcsdef{xpg@save@theparagraph}{%
- \let\theparagraph\xpg@save@theparagraph%
- }{}%
- \ifcsdef{xpg@save@thesubparagraph}{%
- \let\thesubparagraph\xpg@save@thesubparagraph%
- }{}%
+ \ifcsname xpg@save@thesection\endcsname
+ \let\thesection\xpg@save@thesection
+ \fi
+ \ifcsname xpg@save@theequation\endcsname
+ \let\theequation\xpg@save@theequation
+ \fi
+ \ifcsname xpg@save@thefigure\endcsname
+ \let\thefigure\xpg@save@thefigure
+ \fi
+ \ifcsname xpg@save@thetable\endcsname
+ \let\thetable\xpg@save@thetable
+ \fi
+ \ifcsname xpg@save@thesubsection\endcsname
+ \let\thesubsection\xpg@save@thesubsection
+ \ifcsname xpg@save@thesubsubsection\endcsname
+ \let\thesubsubsection\xpg@save@thesubsubsection
+ \fi
+ \fi
+ \ifcsname xpg@save@theparagraph\endcsname
+ \let\theparagraph\xpg@save@theparagraph
+ \fi
+ \ifcsname xpg@save@thesubparagraph\endcsname
+ \let\thesubparagraph\xpg@save@thesubparagraph
+ \fi
}
\def\blockextras@arabic{%
@@ -368,7 +378,7 @@
\fi
\fi
}
-%
+
\def\noextras@arabic{%
\ifarabic@customsep
\ifxetex
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf
index ea904ad5e3a..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-armenian.ldf}[polyglossia: module for Armenian]
@@ -21,43 +21,49 @@
\newif\if@eastern@armenian
\@eastern@armenianfalse
-\define@choicekey*+{armenian}{variant}[\xpg@val\xpg@nr]{western,eastern}[western]{%
- \ifcase\xpg@nr\relax
- % western:
- \@eastern@armenianfalse%
- \or
- % eastern:
- \@eastern@armeniantrue%
- \fi
- \xpg@info{Option: Armenian, variant=\xpg@val}%
-}{\xpg@warning{Unknown Armenian variant `#1'}}
\newif\if@armenian@numerals
\@armenian@numeralsfalse
-\define@key{armenian}{numerals}[armenian]{%
- \ifstrequal{#1}{arabic}{%
- \@armenian@numeralsfalse%
- \SetLanguageKeys{armenian}{bcp47-extension-u=nu-latn}%
- }{%
- \@armenian@numeralstrue%
- \SetLanguageKeys{armenian}{bcp47-extension-u={}}%
- }%
-}
-\define@boolkey{armenian}[armenian@]{capitalyiwn}[true]{%
- \ifarmenian@capitalyiwn
- % MakeUppercase capitalizes the ligature of letters ech and yiwn (U+0587)
- % to capital ech and yiwn (also the output if Armenian is not selected at all)
- \SetLanguageKeys{armenian}{bcp47-casing=hy-x-yiwn,bcp47-extension-x=yiwn}
- \else
- % Capitalize ech and yiwn ligature to capital ech and vew,
- % following Armenian spelling reform
- \SetLanguageKeys{armenian}{bcp47-casing=hy,bcp47-extension-x={}}
- \fi
-}
+\DeclareKeys[polyglossia/gloss/armenian]
+ {
+ variant.choice:,
+ variant / western.code =
+ {%
+ \@eastern@armenianfalse
+ },
+ variant / eastern.code =
+ {%
+ \@eastern@armeniantrue
+ },
+ variant.default:n = western,
+ variant/unknown.code = \xpg@warning{Unknown Armenian variant `#1'},
+ numerals.choice:,
+ numerals / armenian.code =
+ {%
+ \@armenian@numeralstrue
+ \SetLanguageKeys{armenian}{bcp47-extension-u={}}%
+ },
+ numerals / arabic.code =
+ {%
+ \@armenian@numeralsfalse
+ \SetLanguageKeys{armenian}{bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = armenian,
+ capitalyiwn.choice:,
+ capitalyiwn / true.code =
+ {%
+ \SetLanguageKeys{armenian}{bcp47-casing=hy-x-yiwn,bcp47-extension-x=yiwn}%
+ },
+ capitalyiwn / false.code =
+ {%
+ \SetLanguageKeys{armenian}{bcp47-casing=hy,bcp47-extension-x={}}%
+ },
+ capitalyiwn.default:n = true
+ }
% Register default options
-\xpg@initialize@gloss@options{armenian}{numerals=armenian,variant=western}
+\InitializeGlossOptions{armenian}{numerals=armenian,variant=western}
% Taken from ArmTeX. Audit!
\def\captionsarmenian{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf
index e2ef5273c56..64421d29059 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-arq.ldf}[polyglossia: module for arq (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf
index ad64804b5ee..aff989a8ed1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ary.ldf}[polyglossia: module for ary (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf
index 0dd998cbe5a..fe6defdfd98 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-arz.ldf}[polyglossia: module for arz (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf
index e9f5095fccf..0bd2d6607b4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ast.ldf}[polyglossia: module for ast (Asturian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{asturian}
+\InheritGlossFile{asturian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf
index 44babd93ef5..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.1 -- 2024/03/07)
+% 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 c624020f9ac..fd9506e201d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-australian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-australian.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-australian.ldf}[polyglossia: module for Australian English]
% We provide this as a babel alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf
index b7ef2e504b6..dd079ba151f 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-austrian.ldf}[polyglossia: module for Austrian German (old spelling)]
% We provide this as a babel alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf
index 815db99c2ec..9543ecd0cec 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ayl.ldf}[polyglossia: module for ayl (Arabic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{arabic}
+\InheritGlossFile{arabic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf
index b8a13680aa1..a966cf7cdad 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bahasa.ldf}[polyglossia: module for Bahasa Indonesia]
% We provide this as a babel alias
-\xpg@load@master@language{malay}
+\InheritGlossFile{malay}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf
index 37a604e050f..093f3bcd3a2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasai.ldf
@@ -1,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bahasai.ldf}[polyglossia: module for Bahasa Indonesia]
% We only provide this gloss for babel compatibility. Since bahasai is
% a malay variety, we use 'malay' with variant 'indonesian' now.
-\xpg@load@master@language{malay}
+\InheritGlossFile{malay}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf
index f879535507c..a333b16ea27 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasam.ldf
@@ -1,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bahasam.ldf}[polyglossia: module for Bahasa Melayu]
% We only provide this gloss for babel compatibility. Since bahasam is
% a malay variety, we use 'malay' with variant 'malaysian' now.
-\xpg@load@master@language{malay}
+\InheritGlossFile{malay}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf
index b4ab3525f5a..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.1 -- 2024/03/07)
+% 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 02d49ffff15..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-be-tarask.ldf}[polyglossia: module for be-tarask (Belarusian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{belarusian}
+\InheritGlossFile{belarusian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf
index efa0abbd949..39cf456b886 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-be.ldf}[polyglossia: module for be (Belarusian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{belarusian}
+\InheritGlossFile{belarusian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf
index b5eb8753728..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-belarusian.ldf}[polyglossia: module for Belarusian]
@@ -26,63 +26,68 @@
\setlanguagealias*{belarusian}{be}
\def\belarusian@spelling{modern}
-\define@choicekey*+{belarusian}{spelling}[\xpg@val\xpg@nr]{modern,classic,tarask}[modern]{%
- \ifcase\xpg@nr\relax
- % modern:
- \def\belarusian@spelling{modern}%
- \SetLanguageKeys{belarusian}{bcp47=be,bcp47-variant=1959acad}%
- \or
- % classic:
- \def\belarusian@spelling{tarask}%
- \SetLanguageKeys{belarusian}{bcp47=be-tarask,bcp47-variant=tarask}%
- \or
- % tarask:
- \def\belarusian@spelling{tarask}%
- \SetLanguageKeys{belarusian}{bcp47=be-tarask,bcp47-variant=tarask}%
- \fi
-}{\xpg@warning{Unknown Belarusian spelling `#1'}}
-
\newif\ifcyrillic@numerals
\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{belarusian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \fi
- \xpg@info{Option: Belarusian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Belarusian numerals value `#1'}}
-\define@boolkey{belarusian}[belarusian@]{babelshorthands}[true]{}
+\DeclareKeys[polyglossia/gloss/belarusian]
+ {
+ babelshorthands.if = belarusian@babelshorthands,
+ babelshorthands.default:n = true,
+ spelling.choice:,
+ spelling / modern.code =
+ {%
+ \def\belarusian@spelling{modern}%
+ \SetLanguageKeys{belarusian}{bcp47=be,bcp47-variant=1959acad}%
+ },
+ spelling / classic.code =
+ {%
+ \def\belarusian@spelling{tarask}%
+ \SetLanguageKeys{belarusian}{bcp47=be-tarask,bcp47-variant=tarask}%
+ },
+ spelling / tarask.code =
+ {%
+ \def\belarusian@spelling{tarask}%
+ \SetLanguageKeys{belarusian}{bcp47=be-tarask,bcp47-variant=tarask}%
+ },
+ spelling.default:n = modern,
+ spelling/unknown.code = \xpg@warning{Unknown Belarusian spelling `#1'},
+ numerals.choice:,
+ numerals / arabic.code =
+ {%
+ \cyrillic@numeralsfalse
+ \cyrillic@asbuk@numeralsfalse
+ },
+ numerals / cyrillic.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ },
+ numerals / cyrillic-trad.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ },
+ numerals / cyrillic-alph.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralstrue
+ },
+ numerals.default:n = arabic,
+ numerals/unknown.code = \xpg@warning{Unknown Belarusian numerals value `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{belarusian}{babelshorthands=false,numerals=arabic,spelling=modern}
+\InitializeGlossOptions{belarusian}{babelshorthands=false,numerals=arabic,spelling=modern}
% Register alias options
-\xpg@set@alias@values{belarusian}{spelling}{classic}{tarask}
+\SetLanguageAliasValues{belarusian}{spelling}{classic,tarask}
\ifsystem@babelshorthands
- \setkeys{belarusian}{babelshorthands=true}
+ \SetGlossOptions{belarusian}{babelshorthands=true}
\else
- \setkeys{belarusian}{babelshorthands=false}
+ \SetGlossOptions{belarusian}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\belarusian@shorthands{%
\xpg@activate@shorthands%
@@ -118,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 bbddce0fe8f..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% Translations provided by সাজেদুর রহিম জোয়ারদার <toshazed@gmail.com>
% TODO implement Bengali calendar
@@ -27,30 +27,36 @@
\newif\ifbengali@devanagari@numerals
\newif\ifbengali@bengali@numerals
-\define@choicekey*+{bengali}{numerals}[\xpg@val\xpg@nr]{Devanagari,Bengali,Western}[Devanagari]{%
- \ifcase\xpg@nr\relax
- % Devanagari:
- \bengali@bengali@numeralsfalse%
- \bengali@devanagari@numeralstrue%
- \or
- % Bengali:
- \bengali@bengali@numeralstrue%
- \bengali@devanagari@numeralsfalse%
- \or
- % Western:
- \bengali@bengali@numeralsfalse%
- \bengali@devanagari@numeralsfalse%
- \fi
- \xpg@info{Option: Bengali, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Bengali numeral `#1'}}
\def\extras@bengali{}
\def\noextras@bengali{}
-\define@boolkey{bengali}[bengali@]{changecounternumbering}[true]{}
+\DeclareKeys[polyglossia/gloss/bengali]
+ {
+ changecounternumbering.if = bengali@changecounternumbering,
+ changecounternumbering.default:n = true,
+ numerals.choice:,
+ numerals / devanagari.code =
+ {%
+ \bengali@bengali@numeralsfalse
+ \bengali@devanagari@numeralstrue
+ },
+ numerals / bengali.code =
+ {%
+ \bengali@bengali@numeralstrue
+ \bengali@devanagari@numeralsfalse
+ },
+ numerals / western.code =
+ {%
+ \bengali@bengali@numeralsfalse
+ \bengali@devanagari@numeralsfalse
+ },
+ numerals.default:n = devanagari,
+ numerals/unknown.code = \xpg@warning{Unknown Bengali numeral `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{bengali}{changecounternumbering=false,numerals=Devanagari}
+\InitializeGlossOptions{bengali}{changecounternumbering=false,numerals=Devanagari}
\def\captionsbengali{%
\def\refname{তথ্যসূত্রসমূহ}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf
index d75aff3a6e9..960b5027336 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bg.ldf}[polyglossia: module for bg (Bulgarian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{bulgarian}
+\InheritGlossFile{bulgarian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf
index 2c868f96eec..bcb64153926 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bn.ldf}[polyglossia: module for bn (Bengali)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{bengali}
+\InheritGlossFile{bengali}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf
index 0f590f9da3a..a87872198c1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bo.ldf}[polyglossia: module for bo (Tibetan)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{tibetan}
+\InheritGlossFile{tibetan}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf
index e94edab0a53..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.1 -- 2024/03/07)
+% 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 5ad3f56ef00..e6d50a9b8cb 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-br.ldf}[polyglossia: module for br (Breton)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{breton}
+\InheritGlossFile{breton}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-brazil.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-brazil.ldf
index f5c681c9f32..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-brazil.ldf}[polyglossia: module for Brazilian Portuguese]
@@ -6,6 +6,6 @@
% 'brazil' was selected in accordance with babel.
% Since brazil is a variety of portuguese, we use 'portuguese' now.
-\xpg@load@master@language{portuguese}
+\InheritGlossFile{portuguese}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf
index 3d0b34a99f9..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.1 -- 2024/03/07)
+% 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 ccf3a39ccfd..47de0faae4c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-british.ldf}[polyglossia: module for British English]
% We provide this as a babel alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf
index 335992a52e5..afbe48289e1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bs.ldf}[polyglossia: module for bs (Bosnian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{bosnian}
+\InheritGlossFile{bosnian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf
index c7976480e5b..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-bulgarian.ldf}[polyglossia: module for Bulgarian]
\PolyglossiaSetup{bulgarian}{
@@ -61,15 +61,15 @@
\def\figurename{Фигура}%
\def\tablename{Таблица}%
%\def\thepart{}%
- %\def\partname{}%
+ \def\partname{Част}%
\def\pagename{Стр.}%
\def\seename{вж.}%
\def\alsoname{вж.\ също и}%
\def\enclname{Приложения}%
\def\ccname{копия}%
- %\def\headtoname{}%
- \def\proofname{Proof}%
- \def\glossaryname{Glossary}%
+ \def\headtoname{За}%
+ \def\proofname{Доказателство}%
+ \def\glossaryname{Притурка}%
}
\def\datebulgarian{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf
index b8d173e11f1..bfa2f310766 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ca.ldf}[polyglossia: module for ca (Catalan)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{catalan}
+\InheritGlossFile{catalan}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf
index 249bd57c9f1..451529dff02 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadian.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-canadian.ldf}[polyglossia: module for Canadian English]
% We provide this as a babel alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf
index 8cfed1e4da2..47aa61e6a49 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-canadien.ldf}[polyglossia: module for Canadian French]
% We provide this as a babel alias
-\xpg@load@master@language{french}
+\InheritGlossFile{french}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf
index 37566fd974d..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-catalan.ldf}[polyglossia: module for Catalan]
\PolyglossiaSetup{catalan}{
@@ -16,21 +16,21 @@
% BCP-47 compliant aliases
\setlanguagealias*{catalan}{ca}
-\define@boolkey{catalan}[catalan@]{babelshorthands}[true]{}
+\DeclareKeys[polyglossia/gloss/catalan]
+ {
+ babelshorthands.if = catalan@babelshorthands,
+ babelshorthands.default:n = true,
+ }
\ifsystem@babelshorthands
- \setkeys{catalan}{babelshorthands=true}
+ \SetGlossOptions{catalan}{babelshorthands=true}
\else
- \setkeys{catalan}{babelshorthands=false}
+ \SetGlossOptions{catalan}{babelshorthands=false}
\fi
% Register default options
-\xpg@initialize@gloss@options{catalan}{babelshorthands=false}
+\InitializeGlossOptions{catalan}{babelshorthands=false}
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
%%% adapted from Babel's catalan.ldf
\newdimen\leftllkern \newdimen\rightllkern \newdimen\raiselldim
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-chinese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-chinese.ldf
index 05621e02298..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-chinese.ldf}[polyglossia: module for Chinese]
@@ -22,52 +22,75 @@
\setlanguagealias*[variant=simplified]{chinese}{zh-CN}
\setlanguagealias*[variant=traditional]{chinese}{zh-TW}
-\providebool{chinese@traditional}
+\@ifundefined{ifchinese@traditional}%
+ {\newif\ifchinese@traditional}{}
-\def\chinese@variant{chinese}
-
-\newif\ifchinese@numerals
-\define@key{chinese}{numerals}[arabic]{%
- \ifstrequal{#1}{chinese}%
- {\chinese@numeralstrue%
- \SetLanguageKeys{chinese}{bcp47-extension-u=nu-hant}%
- }{\chinese@numeralsfalse%
- \SetLanguageKeys{chinese}{bcp47-extension-u=nu-latn}%
- }%
-}
+\@ifundefined{ifchinese@numerals}%
+ {\newif\ifchinese@numerals}{}
+\def\chinese@variant{chinese}
-\define@choicekey*+{chinese}{variant}[\xpg@val\xpg@nr]{cn,simplified,tw,traditional}[cn]{%
- \ifcase\xpg@nr\relax
- % cn:
- \chinese@traditionalfalse
- \SetLanguageKeys{chinese}{language={Chinese Simplified},langtag=ZHS,bcp47=zh-CN,bcp47-language=zh,bcp47-region=CN,bcp47-script=Hans}%
- \xpg@info{Option: Chinese, variant=simplified}%
- \or
- % simplified:
- \chinese@traditionalfalse
- \SetLanguageKeys{chinese}{language={Chinese Simplified},langtag=ZHS,bcp47=zh-CN,bcp47-language=zh,bcp47-region=CN,bcp47-script=Hans}%
- \xpg@info{Option: Chinese, variant=simplified}%
- \or
- % tw:
- \chinese@traditionaltrue
- \SetLanguageKeys{chinese}{language={Chinese Traditional},langtag=ZHT,bcp47=zh-TW,bcp47-language=zh,bcp47-region=TW,bcp47-script=Hant}%
- \xpg@info{Option: Chinese, variant=traditional}%
- \or
- % traditional:
- \chinese@traditionaltrue
- \SetLanguageKeys{chinese}{language={Chinese Traditional},langtag=ZHT,bcp47=zh-TW,bcp47-language=zh,bcp47-region=TW,bcp47-script=Hant}%
- \xpg@info{Option: Chinese, variant=traditional}%
- \fi
-}{\xpg@warning{Unknown Chinese variant `#1'}}
+\DeclareKeys[polyglossia/gloss/chinese]
+ {
+ variant.choice:,
+ variant / cn.code =
+ {%
+ \chinese@traditionalfalse
+ \SetLanguageKeys{chinese}{language={Chinese Simplified},langtag=ZHS,bcp47=zh-CN,bcp47-language=zh,bcp47-region=CN,bcp47-script=Hans}%
+ },
+ variant / simplified.code =
+ {%
+ \chinese@traditionalfalse
+ \SetLanguageKeys{chinese}{language={Chinese Simplified},langtag=ZHS,bcp47=zh-CN,bcp47-language=zh,bcp47-region=CN,bcp47-script=Hans}%
+ },
+ variant / tw.code =
+ {%
+ \chinese@traditionaltrue
+ \SetLanguageKeys{chinese}{language={Chinese Traditional},langtag=ZHT,bcp47=zh-TW,bcp47-language=zh,bcp47-region=TW,bcp47-script=Hant}%
+ },
+ variant / traditional.code =
+ {%
+ \chinese@traditionaltrue
+ \SetLanguageKeys{chinese}{language={Chinese Traditional},langtag=ZHT,bcp47=zh-TW,bcp47-language=zh,bcp47-region=TW,bcp47-script=Hant}%
+ },
+ variant.default:n = cn,
+ variant/unknown.code = \xpg@warning{Unknown Chinese variant `#1'},
+ numerals.choice:,
+ numerals / arabic.code =
+ {%
+ \chinese@numeralsfalse
+ \SetLanguageKeys{chinese}{bcp47-extension-u=nu-latn}%
+ },
+ numerals / chinese.code =
+ {%
+ \chinese@numeralstrue
+ \SetLanguageKeys{chinese}{bcp47-extension-u=nu-hant}%
+ },
+ numerals.default:n = arabic,
+ numerals/unknown.code = \xpg@warning{Unknown Chinese numerals value `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{chinese}{variant=cn,numerals=arabic}
-%\xpg@initialize@gloss@options{chinese}{variant=tw,numerals=arabic}
+\InitializeGlossOptions{chinese}{variant=cn,numerals=arabic}
+%\InitializeGlossOptions{chinese}{variant=tw,numerals=arabic}
% Register alias options
-\xpg@set@alias@values{chinese}{variant}{cn}{simplified}
-\xpg@set@alias@values{chinese}{variant}{tw}{traditional}
+\SetLanguageAliasValues{chinese}{variant}{cn,simplified}
+\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{%
@@ -89,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
@@ -118,7 +151,7 @@
\def\enclname{附件}%
\def\ccname{抄送}%
\def\headtoname{收件人}%
- \def\\glossaryname{詞彙表}%
+ \def\glossaryname{詞彙表}%
}
\def\captions@chinese@simplified{%
\def\contentsname{目录}%
@@ -141,7 +174,7 @@
\def\enclname{附件}%
\def\ccname{抄送}%
\def\headtoname{收件人}%
- \def\\glossaryname{词汇表}%
+ \def\glossaryname{词汇表}%
}
\newcount\c@TempJNum%
@@ -267,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 f216864f4c6..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ckb-Arab.ldf}[polyglossia: module for ckb-Arab (Kurdish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
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 73db9067eff..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ckb-Latn.ldf}[polyglossia: module for ckb-Latn (Kurdish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf
index 360d484e8c2..0e98a403ba5 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ckb.ldf}[polyglossia: module for ckb (Kurdish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf
new file mode 100644
index 00000000000..bfb41cdbb00
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf
@@ -0,0 +1,9 @@
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
+%
+\ProvidesFile{gloss-classiclatin.ldf}[polyglossia: module for classic Latin]
+
+% We provide this as a babel alias
+
+\InheritGlossFile{latin}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf
index 2f7e8653738..2d77ac75545 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-cop.ldf}[polyglossia: module for cop (Coptic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{coptic}
+\InheritGlossFile{coptic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf
index 0cff5d46d13..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.1 -- 2024/03/07)
+% 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 15b7bc02a01..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-croatian.ldf}[polyglossia: module for Croatian]
\PolyglossiaSetup{croatian}{
@@ -20,40 +20,40 @@
\RequirePackage{luavlna}
\fi
-\define@boolkey{croatian}[croatian@]{babelshorthands}[true]{}
-
-\define@boolkey{croatian}[croatian@]{disabledigraphs}[true]{}
-
-% Alias kept for backwards compatibility. Please do not remove
-\define@boolkey{croatian}[croatian@]{disableligatures}[true]{%
- \xpg@warning{The option disableligatures is deprected.\MessageBreak
- Please use disabledigraphs instead}%
- \ifcroatian@disableligatures
- \croatian@disabledigraphstrue
- \else
- \croatian@disabledigraphsfalse
- \fi
-}
-
-\define@boolkey{croatian}[croatian@]{splithyphens}[true]{}
-
-\define@boolkey{croatian}[croatian@]{localalph}[true]{}
+\DeclareKeys[polyglossia/gloss/croatian]
+ {
+ babelshorthands.if = croatian@babelshorthands,
+ babelshorthands.default:n = true,
+ disabledigraphs.if = croatian@disabledigraphs,
+ disabledigraphs.default:n = true,
+ splithyphens.if = croatian@splithyphens,
+ splithyphens.default:n = true,
+ localalph.if = croatian@localalph,
+ localalph.default:n = true,
+ disableligatures.choices:nn = { true, false }
+ {%
+ \xpg@warning{The option disableligatures is deprecated.\MessageBreak
+ Please use disabledigraphs instead}%
+ \ifcase\UseName{l_keys_choice_int}\or
+ \croatian@disabledigraphstrue
+ \or
+ \croatian@disabledigraphsfalse
+ \fi
+ },
+ disableligatures.default:n = true,
+ }
% Register default options
-\xpg@initialize@gloss@options{croatian}{babelshorthands=false,disabledigraphs=false,
+\InitializeGlossOptions{croatian}{babelshorthands=false,disabledigraphs=false,
splithyphens=true,localalph=true}
\ifsystem@babelshorthands
- \setkeys{croatian}{babelshorthands=true}
+ \SetGlossOptions{croatian}{babelshorthands=true}
\else
- \setkeys{croatian}{babelshorthands=false}
+ \SetGlossOptions{croatian}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\let\xpg@hyphen@char-
\def\croatian@@splhyphen#1{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf
index bcf199e0747..5242ba58730 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-cy.ldf}[polyglossia: module for cy (Welsh)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{welsh}
+\InheritGlossFile{welsh}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf
index d3775620eed..164ebcd141b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-cz.ldf}[polyglossia: module for cz (Czech)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{czech}
+\InheritGlossFile{czech}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf
index 858f3d4ae6c..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-czech.ldf}[polyglossia: module for Czech]
@@ -21,26 +21,26 @@
\RequirePackage{luavlna}
\fi
-\define@boolkey{czech}[czech@]{babelshorthands}[true]{}
-
-\define@boolkey{czech}[czech@]{splithyphens}[true]{}
-
-\define@boolkey{czech}[czech@]{vlna}[true]{}
+\DeclareKeys[polyglossia/gloss/czech]
+ {
+ babelshorthands.if = czech@babelshorthands,
+ babelshorthands.default:n = true,
+ splithyphens.if = czech@splithyphens,
+ splithyphens.default:n = true,
+ vlna.if = czech@vlna,
+ vlna.default:n = true
+ }
% Register default options
-\xpg@initialize@gloss@options{czech}{babelshorthands=false,splithyphens=true,vlna=true}
+\InitializeGlossOptions{czech}{babelshorthands=false,splithyphens=true,vlna=true}
\ifsystem@babelshorthands
- \setkeys{czech}{babelshorthands=true}
+ \SetGlossOptions{czech}{babelshorthands=true}
\else
- \setkeys{czech}{babelshorthands=false}
+ \SetGlossOptions{czech}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\czech@@splithyphen#1{%
\def\czech@sh@tmp{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf
index ff3dda30d0a..75001758963 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-da.ldf}[polyglossia: module for da (Danish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{danish}
+\InheritGlossFile{danish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf
index 6126beaeb8b..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.1 -- 2024/03/07)
+% 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 6ec76bdff99..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 0354d8b16fc..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 5e016be933d..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-AT.ldf}[polyglossia: module for de-AT (Austrian German)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 1df826fee1d..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 7ccf3664967..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 d99f0594d75..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-CH.ldf}[polyglossia: module for de-CH (Swiss German)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 1f4a987a1b4..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 9114631dcf1..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 174cfc6ea0a..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-DE.ldf}[polyglossia: module for de-DE (Germany's German)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 97852bb8e02..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 a87e11a509c..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 41eb5a93b9b..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 05d331c364b..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 3e256710167..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 db4d3494874..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 4b7f9f97bad..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 a4324450320..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 19649f6f98b..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
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 2eddf761c4d..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de-Latf.ldf}[polyglossia: module for de-Latf (German)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf
index 5f15ee4e843..129984e5453 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-de.ldf}[polyglossia: module for de (German)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf
index 10debfabfa6..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.1 -- 2024/03/07)
+% 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 03e4a24986b..03e5af1f054 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-dsb.ldf}[polyglossia: module for dsb (Sorbian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{sorbian}
+\InheritGlossFile{sorbian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf
index f679e7f039c..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-dutch.ldf}[polyglossia: module for Dutch]
\PolyglossiaSetup{dutch}{
@@ -15,24 +15,24 @@
% BCP-47 compliant aliases
\setlanguagealias*{dutch}{nl}
-\define@boolkey{dutch}[dutch@]{babelshorthands}[true]{}
-
-\define@boolkey{dutch}[dutch@]{tremahyphenation}[true]{}
+\DeclareKeys[polyglossia/gloss/dutch]
+ {
+ babelshorthands.if = dutch@babelshorthands,
+ babelshorthands.default:n = true,
+ tremahyphenation.if = dutch@tremahyphenation,
+ tremahyphenation.default:n = true
+ }
% Register default options
-\xpg@initialize@gloss@options{dutch}{babelshorthands=false,tremahyphenation=true}
+\InitializeGlossOptions{dutch}{babelshorthands=false,tremahyphenation=true}
\ifsystem@babelshorthands
- \setkeys{dutch}{babelshorthands=true}
+ \SetGlossOptions{dutch}{babelshorthands=true}
\else
- \setkeys{dutch}{babelshorthands=false}
+ \SetGlossOptions{dutch}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\xpg@trema#1{\allowhyphens\discretionary{-}{#1}{\"{#1}}\allowhyphens}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf
index 95ba8b33b3c..226c2563bca 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-dv.ldf}[polyglossia: module for dv (Divehi)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{divehi}
+\InheritGlossFile{divehi}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ecclesiasticlatin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ecclesiasticlatin.ldf
new file mode 100644
index 00000000000..8341a31bffc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ecclesiasticlatin.ldf
@@ -0,0 +1,9 @@
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
+%
+\ProvidesFile{gloss-ecclesiasticlatin.ldf}[polyglossia: module for ecclesiastic Latin]
+
+% We provide this as a babel alias
+
+\InheritGlossFile{latin}
+
+\endinput
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 3b2763da549..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-el-monoton.ldf}[polyglossia: module for el-monoton (Greek)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{greek}
+\InheritGlossFile{greek}
\endinput
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 f36384c04de..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-el-polyton.ldf}[polyglossia: module for el-polyton (Greek)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{greek}
+\InheritGlossFile{greek}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf
index 23acc8b54cf..456bbff4257 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-el.ldf}[polyglossia: module for el (Greek)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{greek}
+\InheritGlossFile{greek}
\endinput
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 a75c84a3a61..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en-AU.ldf}[polyglossia: module for en-AU (Australian English)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
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 3253e418ab7..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
-\ProvidesFile{gloss-en-CA.ldf}[polyglossia: module for en-CA (Canadan English)]
+\ProvidesFile{gloss-en-CA.ldf}[polyglossia: module for en-CA (Canadian English)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
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 fb958322bf4..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en-GB.ldf}[polyglossia: module for en-GB (British English)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
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 15db1b4a330..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en-NZ.ldf}[polyglossia: module for en-NZ (Newzealand English)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
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 55e3c76b979..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en-US.ldf}[polyglossia: module for en-US (American English)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf
index 2fc32374054..ce078fd7059 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-en.ldf}[polyglossia: module for en (English)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf
index 87da24e5e21..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-english.ldf}[polyglossia: module for English]
@@ -30,9 +30,12 @@
\setlanguagealias[variant=canadian]{english}{canadian}
\setlanguagealias[variant=newzealand]{english}{newzealand}
-\providebool{british@hyphen}
-\providebool{english@ordinalmonthday}
-\providebool{british@dateformat}
+\@ifundefined{ifbritish@hyphen}%
+ {\newif\ifbritish@hyphen}{}
+\@ifundefined{ifenglish@ordinalmonthday}%
+ {\newif\ifenglish@ordinalmonthday}{}
+\@ifundefined{ifbritish@dateformat}%
+ {\newif\ifbritish@dateformat}{}
% US English (\l@english) is default
% Initialize its settings
@@ -41,49 +44,46 @@
\english@ordinalmonthdayfalse
\british@dateformatfalse
-% Option ordinalmonthday
-\define@boolkey{english}[english@]{ordinalmonthday}[true]{}
-
-\define@choicekey*+{english}{variant}[\xpg@val\xpg@nr]{uk,british,us,american,usmax,australian,newzealand,canadian}[us]{%
- \ifcase\xpg@nr\relax
+\DeclareKeys[polyglossia/gloss/english]
+ {
+ ordinalmonthday.if = english@ordinalmonthday,
+ ordinalmonthday.default:n = true,
+ variant.choices:nn = { uk, british, us, american, usmax, australian, newzealand, canadian }
+ {%
+ \ifcase\UseName{l_keys_choice_int}\or
% uk:
\british@hyphentrue
\british@dateformattrue
\english@ordinalmonthdaytrue
\SetLanguageKeys{english}{babelname=british,bcp47=en-GB,bcp47-language=en,bcp47-region=GB}%
- \xpg@info{Option: English, variant=british}%
\or
% british:
\british@hyphentrue
\british@dateformattrue
\english@ordinalmonthdaytrue
\SetLanguageKeys{english}{babelname=british,bcp47=en-GB,bcp47-language=en,bcp47-region=GB}%
- \xpg@info{Option: english variant=british}%
\or
% us:
\british@hyphenfalse
\british@dateformatfalse
\english@ordinalmonthdayfalse
\SetLanguageKeys{english}{babelname=american,bcp47=en-US,bcp47-language=en,bcp47-region=US}%
- \xpg@info{Option: English, variant=american}%
\or
% american:
\british@hyphenfalse
\british@dateformatfalse
\english@ordinalmonthdayfalse
\SetLanguageKeys{english}{babelname=american,bcp47=en-US,bcp47-language=en,bcp47-region=US}%
- \xpg@info{Option: English, variant=american}%
\or
% usmax:
\british@hyphenfalse
\british@dateformatfalse
\english@ordinalmonthdayfalse
\SetLanguageKeys{english}{babelname=american,bcp47=en-US,bcp47-language=en,bcp47-region=US}%
- \xpg@info{Option: english variant=american (with additional patterns)}%
- \xpg@ifdefined{usenglishmax}{}%
+ \IfLanguageDefinedF{usenglishmax}%
{\xpg@warning{No hyphenation patterns were loaded for "US English Max"\MessageBreak
I will use the standard patterns for US English instead}%
- \adddialect\l@usenglishmax\l@english\relax%
+ \adddialect\l@usenglishmax\l@english
}%
\def\english@variant{usenglishmax}%
\or
@@ -94,8 +94,7 @@
\british@dateformattrue
\english@ordinalmonthdayfalse
\SetLanguageKeys{english}{babelname=australian,bcp47=en-AU,bcp47-language=en,bcp47-region=AU}%
- \xpg@info{Option: English, variant=australian}%
- \adddialect\l@australian\l@english%
+ \adddialect\l@australian\l@english
\or
% newzealand:
% These use the british hyphenation patterns
@@ -104,8 +103,7 @@
\british@dateformattrue
\english@ordinalmonthdayfalse
\SetLanguageKeys{english}{babelname=newzealand,bcp47=en-NZ,bcp47-language=en,bcp47-region=NZ}%
- \xpg@info{Option: English, variant=newzealand}%
- \adddialect\l@newzealand\l@english%
+ \adddialect\l@newzealand\l@english
\or
% canadian:
% This is currently equivalent to usenglish (as in babel)
@@ -113,45 +111,35 @@
\british@dateformatfalse
\english@ordinalmonthdayfalse
\SetLanguageKeys{english}{babelname=canadian,bcp47=en-CA,bcp47-language=en,bcp47-region=CA}%
- \xpg@info{Option: English, variant=american}%
- \adddialect\l@canadian\l@english%
+ \adddialect\l@canadian\l@english
\fi
\ifbritish@hyphen
- \xpg@ifdefined{ukenglish}{}%
+ \IfLanguageDefinedF{ukenglish}%
{\xpg@warning{No hyphenation patterns were loaded for British English\MessageBreak
I will use the patterns for US English instead}%
- \adddialect\l@ukenglish\l@english\relax%
+ \adddialect\l@ukenglish\l@english
}%
\def\english@variant{ukenglish}%
\fi
-}{\xpg@warning{Unknown English variant `#1'}}
+ },
+ variant.default:n = us,
+ variant/unknown.code = \xpg@warning{Unknown English variant `#1'},
+ }
% Register default options
-\xpg@initialize@gloss@options{english}{variant=us,ordinalmonthday=false}
+\InitializeGlossOptions{english}{variant=us,ordinalmonthday=false}
% Register alias options
-\xpg@set@alias@values{english}{variant}{us}{american}
-\xpg@set@alias@values{english}{variant}{uk}{british}
+\SetLanguageAliasValues{english}{variant}{us,american}
+\SetLanguageAliasValues{english}{variant}{uk,british}
\ifxetex
% Check if \l@english is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{english}{}{%
- \def\do##1{%
- \xpg@ifdefined{#1}%
- {\csletcs{l@english}{l@#1}\listbreak}%
- {%
- \xpg@warning{No hyphenation patterns for English found"\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@english0
- }%
- }%
- \docsvlist{british, american, usenglishmax, australian, newzealand}
- \xpg@ifdefined{english}{}{}
- }%
+ % (specific order as in the csv list), or null language if everything fails
+ \TryPatternWithFallback{english}{british, american, usenglishmax, australian, newzealand}
\fi
\def\english@language{%
- \polyglossia@setup@language@patterns{\english@variant}%
+ \SetupPolyglossiaLangPatterns{\english@variant}%
}%
\def\captionsenglish{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf
index 6c0cb13ecdc..a5d24deeb0b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-eo.ldf}[polyglossia: module for eo (Esperanto)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{esperanto}
+\InheritGlossFile{esperanto}
\endinput
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 0b0555e3727..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-es-ES.ldf}[polyglossia: module for es-ES (Spain's Spanish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{spanish}
+\InheritGlossFile{spanish}
\endinput
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 9e459726429..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-es-MX.ldf}[polyglossia: module for es-MX (Mexican Spanish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{spanish}
+\InheritGlossFile{spanish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf
index fb470d36c9c..19e07362d82 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-es.ldf}[polyglossia: module for es (Spanish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{spanish}
+\InheritGlossFile{spanish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf
index bd4e63a4a40..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-esperanto.ldf}[polyglossia: module for Esperanto]
\PolyglossiaSetup{esperanto}{
@@ -29,10 +29,10 @@
\def\figurename{Figuro}%
\def\tablename{Tabelo}%
%\def\thepart{}%
- %\def\partname{}%
+ \def\partname{Parto}%
\def\pagename{Paĝo}%
\def\seename{vidu}%
- \def\alsoname{Parto}%
+ \def\alsoname{vidu ankaŭ}%
\def\enclname{Aldono(j)}%
\def\ccname{Kopie al}%
\def\headtoname{Al}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf
index 5dfb90ea569..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-estonian.ldf}[polyglossia: module for Estonian]
\PolyglossiaSetup{estonian}{
@@ -38,7 +38,7 @@
\def\ccname{Koopia(d)}%
%\def\headtoname{}%
\def\proofname{Korrektuur}%
- \def\glossaryname{Glossary}% <-- need translation
+ \def\glossaryname{Sõnastik}%
}
\def\dateestonian{%
\def\today{\number\day.\space\ifcase\month\or
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf
index 5ab0c3f3bae..43b2c150748 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-et.ldf}[polyglossia: module for et (Estonian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{estonian}
+\InheritGlossFile{estonian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf
index 98448839b1f..009c53cecce 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-eu.ldf}[polyglossia: module for eu (Basque)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{basque}
+\InheritGlossFile{basque}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf
index 08c337bdfb0..09cc80b5f3c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fa.ldf}[polyglossia: module for fa (Persian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{persian}
+\InheritGlossFile{persian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf
index 09ae993ea43..28ceff04ce6 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-farsi.ldf
@@ -1,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-farsi.ldf}[polyglossia: module for Farsi]
% We only provide this gloss for babel compatibility.
% The proper English language name is Persian.
-\xpg@load@master@language{persian}
+\InheritGlossFile{persian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf
index 3b03ab4b433..1624f23a2ce 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fi.ldf}[polyglossia: module for fi (Finnish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{finnish}
+\InheritGlossFile{finnish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf
index 3bd83a947d3..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-finnish.ldf}[polyglossia: module for Finnish]
\PolyglossiaSetup{finnish}{
@@ -16,51 +16,54 @@
% BCP-47 compliant aliases
\setlanguagealias*{finnish}{fi}
-\define@boolkey{finnish}[finnish@]{babelshorthands}[true]{}
-
\newif\if@finnish@schoolhyphens
\newif\if@finnish@babelhyphens
-\define@choicekey*+{finnish}{hyphens}[\xpg@val\xpg@nr]{default,school,babel}[default]{%
- \ifcase\xpg@nr\relax
- % default:
- \@finnish@schoolhyphensfalse
- \@finnish@babelhyphensfalse
- \or
- % school:
- \@finnish@schoolhyphenstrue
- \@finnish@babelhyphensfalse
- \or
- % babel:
- \@finnish@schoolhyphensfalse
- \@finnish@babelhyphenstrue
- \fi
- \xpg@info{Option: Finnish, hyphens=\xpg@val}%
-}{\xpg@warning{Unknown Finnish hyphens `#1'}}
-
-% backwards compatibility
-\define@boolkey{finnish}[finnish@]{schoolhyphens}[true]{%
- \iffinnish@schoolhyphens
- \@finnish@schoolhyphenstrue
- \@finnish@babelhyphensfalse
- \else
- \@finnish@schoolhyphensfalse
- \fi
-}
+
+\DeclareKeys[polyglossia/gloss/finnish]
+ {
+ babelshorthands.if = finnish@babelshorthands,
+ babelshorthands.default:n = true,
+ hyphens.choice:,
+ hyphens / default.code =
+ {%
+ \@finnish@schoolhyphensfalse
+ \@finnish@babelhyphensfalse
+ },
+ hyphens / school.code =
+ {%
+ \@finnish@schoolhyphenstrue
+ \@finnish@babelhyphensfalse
+ },
+ hyphens / babel.code =
+ {%
+ \@finnish@schoolhyphensfalse
+ \@finnish@babelhyphenstrue
+ },
+ hyphens.default:n = default,
+ hyphens/unknown.code = \xpg@warning{Unknown Finnish hyphens `#1'},
+ schoolhyphens.choice:,
+ schoolhyphens / true.code =
+ {%
+ \@finnish@schoolhyphenstrue
+ \@finnish@babelhyphensfalse
+ },
+ schoolhyphens / false.code =
+ {%
+ \@finnish@schoolhyphensfalse
+ },
+ schoolhyphens.default:n = true
+ }
% Register default options
-\xpg@initialize@gloss@options{finnish}{babelshorthands=false,hyphens=default}
+\InitializeGlossOptions{finnish}{babelshorthands=false,hyphens=default}
\ifsystem@babelshorthands
- \setkeys{finnish}{babelshorthands=true}
+ \SetGlossOptions{finnish}{babelshorthands=true}
\else
- \setkeys{finnish}{babelshorthands=false}
+ \SetGlossOptions{finnish}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\finnish@shorthands{%
\xpg@activate@shorthands%
@@ -105,15 +108,15 @@
\def\finnish@language{%
\if@finnish@schoolhyphens
- \xpg@ifdefined{schoolfinnish}{%
- \polyglossia@setup@language@patterns{schoolfinnish}%
+ \IfLanguageDefinedTF{schoolfinnish}{%
+ \SetupPolyglossiaLangPatterns{schoolfinnish}%
}{%
\xpg@warning{Finnish 'School' hyphenation patterns (schoolfinnish) not available.\MessageBreak
I will use the standard patterns for Finnish instead}%
- \polyglossia@setup@language@patterns{finnish}%
+ \SetupPolyglossiaLangPatterns{finnish}%
}%
\else
- \polyglossia@setup@language@patterns{finnish}%
+ \SetupPolyglossiaLangPatterns{finnish}%
\fi
}
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 49e1c088687..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{french}
+\InheritGlossFile{french}
\endinput
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 8c8058a00e9..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fr-CA.ldf}[polyglossia: module for fr-CA (Canadian French)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{french}
+\InheritGlossFile{french}
\endinput
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 b8c2126df7c..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fr-CH.ldf}[polyglossia: module for fr-CH (Swiss French)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{french}
+\InheritGlossFile{french}
\endinput
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 41f1eb0ad50..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fr-FR.ldf}[polyglossia: module for fr-FR (France's French)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{french}
+\InheritGlossFile{french}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf
index 672c6de8939..b42b42741f5 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fr.ldf}[polyglossia: module for fr (French)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{french}
+\InheritGlossFile{french}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf
index 2b0c795cdeb..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-french.ldf}[polyglossia: module for French]
@@ -28,43 +28,9 @@
\setlanguagealias[variant=canadian]{french}{canadien}
\def\french@variant{french}
-\define@choicekey*+{french}{variant}[\xpg@val\xpg@nr]{french,canadian,acadian,swiss}[french]{%
- \ifcase\xpg@nr\relax
- % french:
- \def\french@variant{french}%
- \SetLanguageKeys{french}{babelname=french,bcp47=fr-FR,bcp47-language=fr,bcp47-region=FR}%
- \french@thincolonspacefalse
- \or
- % canadian:
- \def\french@variant{canadien}%
- \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA,bcp47-language=fr,bcp47-region=CA,bcp47-extension-u=sd-caqc}%
- \xpg@ifdefined{canadien}{}%
- {\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak
- I will use the standard patterns for French instead}%
- \adddialect\l@canadien\l@french\relax}%
- \french@thincolonspacefalse
- \or
- % acadian:
- \def\french@variant{acadian}%
- \SetLanguageKeys{french}{babelname=acadian,bcp47=fr-CA-u-sd-canb,bcp47-language=fr,bcp47-region=CA,bcp47-extension-u=sd-canb}%
- \xpg@ifdefined{acadian}{}%
- {\xpg@warning{No hyphenation patterns were loaded for "French (Canada, Acadian)"\MessageBreak
- I will use the standard patterns for French instead}%
- \adddialect\l@acadian\l@french\relax}%
- \french@thincolonspacefalse
- \or
- % swiss:
- \def\french@variant{swissfrench}%
- \SetLanguageKeys{french}{babelname=french,bcp47=fr-CH,bcp47-language=fr,bcp47-region=CH}%
- \adddialect\l@swissfrench\l@french\relax%
- \french@thincolonspacetrue
- \fi
- \xpg@info{Option: French, variant=\xpg@val}%
-}{\xpg@warning{Unknown French variant `#1'}}
-
\def\french@language{%
- \polyglossia@setup@language@patterns{\french@variant}%
+ \SetupPolyglossiaLangPatterns{\french@variant}%
}%
\ifluatex
@@ -84,91 +50,103 @@
% Save original footnote definition
% Do this at the end of the preamble to catch other
% packages' footnote changes (#391)
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\let\xpg@orig@makefntext\@makefntext
}
-\define@boolkey{french}[french@]{frenchfootnote}[true]{}
-
-\define@boolkey{french}[french@]{autospacing}[true]{}
-\french@autospacingtrue
-
-\define@boolkey{french}[french@]{frenchpart}[true]{}
-\french@frenchparttrue
-
-\newif\iffrench@autospaceguillemets
-\define@boolkey{french}[french@]{autospaceguillemets}[true]{}
-\french@autospaceguillemetstrue
-
-\newif\iffrench@thincolonspace
-\define@boolkey{french}[french@]{thincolonspace}[true]{}
-\french@thincolonspacefalse
-
-% Backwards compatibility
-\define@boolkey{french}[french@]{automaticspacesaroundguillemets}[true]{%
- \iffrench@automaticspacesaroundguillemets
- \setkeys{french}{autospaceguillemets=true}%
- \else
- \setkeys{french}{autospaceguillemets=false}%
- \fi
-}
-
% name is for compatibility with babel
\let\french@ttfamilyORI\ttfamily
\DeclareRobustCommand\french@ttfamilyFB{\nofrench@punctuation\french@ttfamilyORI}
-% Allow to switch on autospacing in ttfamily context
-\define@boolkey{french}[french@]{autospacetypewriter}[true]{}
-\french@autospacetypewriterfalse
-
-% This is how babel-french has it
-\define@boolkey{french}[french@]{OriginalTypewriter}[true]{%
- \iffrench@OriginalTypewriter
- \setkeys{french}{autospacetypewriter=false}%
- \else
- \setkeys{french}{autospacetypewriter=true}%
- \fi
-}
-
% Configuration of item labels
\def\french@itemi{\textemdash}
\def\french@itemii{\textemdash}
\def\french@itemiii{\textemdash}
\def\french@itemiv{\textemdash}
-\define@key{french}{itemlabels}[\textemdash]{%
- \def\french@itemi{#1}
- \def\french@itemii{#1}
- \def\french@itemiii{#1}
- \def\french@itemiv{#1}
-}
-
-\define@key{french}{itemlabeli}[\textemdash]{%
- \def\french@itemi{#1}
-}
-
-\define@key{french}{itemlabelii}[\textemdash]{%
- \def\french@itemii{#1}
-}
-
-\define@key{french}{itemlabeliii}[\textemdash]{%
- \def\french@itemiii{#1}
-}
-
-\define@key{french}{itemlabeliv}[\textemdash]{%
- \def\french@itemiv{#1}
-}
+\newif\iffrench@autospacetypewriter
+\french@autospacetypewriterfalse
+\newif\iffrench@autospacing
+\french@autospacingtrue
+\newif\iffrench@frenchpart
+\french@frenchparttrue
+\newif\iffrench@autospaceguillemets
+\french@autospaceguillemetstrue
-\define@boolkey{french}[french@]{frenchitemlabels}[true]{}
+\DeclareKeys[polyglossia/gloss/french]
+ {
+ variant.choice:,
+ variant / french.code =
+ {%
+ \def\french@variant{french}%
+ \SetLanguageKeys{french}{babelname=french,bcp47=fr-FR,bcp47-language=fr,bcp47-region=FR}%
+ \french@thincolonspacefalse
+ },
+ variant / canadian.code =
+ {%
+ \def\french@variant{canadien}%
+ \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA,bcp47-language=fr,bcp47-region=CA,bcp47-extension-u=sd-caqc}%
+ \IfLanguageDefinedF{canadien}%
+ {\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak
+ I will use the standard patterns for French instead}%
+ \adddialect\l@canadien\l@french\relax}%
+ \french@thincolonspacefalse
+ },
+ variant / acadian.code =
+ {%
+ \def\french@variant{acadian}%
+ \SetLanguageKeys{french}{babelname=acadian,bcp47=fr-CA-u-sd-canb,bcp47-language=fr,bcp47-region=CA,bcp47-extension-u=sd-canb}%
+ \IfLanguageDefinedF{acadian}%
+ {\xpg@warning{No hyphenation patterns were loaded for "French (Canada, Acadian)"\MessageBreak
+ I will use the standard patterns for French instead}%
+ \adddialect\l@acadian\l@french\relax}%
+ \french@thincolonspacefalse
+ },
+ variant / swiss.code =
+ {%
+ \def\french@variant{swissfrench}%
+ \SetLanguageKeys{french}{babelname=french,bcp47=fr-CH,bcp47-language=fr,bcp47-region=CH}%
+ \adddialect\l@swissfrench\l@french\relax%
+ \french@thincolonspacetrue
+ },
+ variant.default:n = french,
+ variant/unknown.code = \xpg@warning{Unknown French variant `#1'},
+ frenchfootnote.if = french@frenchfootnote,
+ frenchfootnote.default:n = true,
+ autospacing.if = french@autospacing,
+ autospacing.default:n = true,
+ frenchpart.if = french@frenchpart,
+ frenchpart.default:n = true,
+ autospaceguillemets.if = french@autospaceguillemets,
+ autospaceguillemets.default:n = true,
+ thincolonspace.if = french@thincolonspace,
+ thincolonspace.default:n = true,
+ automaticspacesaroundguillemets.meta:n = {autospaceguillemets=#1},
+ autospacetypewriter.if = french@autospacetypewriter,
+ autospacetypewriter.default:n = true,
+ originaltypewriter.meta:n = {autospacetypewriter=#1},
+ itemlabeli.store = \french@itemi,
+ itemlabelii.store = \french@itemii,
+ itemlabeliii.store = \french@itemiii,
+ itemlabeliv.store = \french@itemiv,
+ frenchitemlabels.if = french@frenchitemlabels,
+ frenchitemlabels.default:n = true,
+ itemlabels.code =
+ \def\french@itemi{#1}%
+ \def\french@itemii{#1}%
+ \def\french@itemiii{#1}%
+ \def\french@itemiv{#1},
+ itemlabels.default:n = \textemdash
+ }
% Register default options
-\xpg@initialize@gloss@options{french}{variant=french,autospacing=true,thincolonspace=false,
+\InitializeGlossOptions{french}{variant=french,autospacing=true,thincolonspace=false,
autospaceguillemets=true,autospacetypewriter=false,
frenchfootnote=false,frenchitemlabels=false,
itemlabels=\textemdash,itemlabeli=\textemdash,itemlabelii=\textemdash,
itemlabeliii=\textemdash,itemlabeliv=\textemdash}
% Register alias options
-\xpg@set@alias@values{french}{variant}{canadian}{acadian}
+\SetLanguageAliasValues{french}{variant}{canadian,acadian}
\def\french@fontsetup{%
@@ -339,100 +317,100 @@
\def\french@capsformat{%
% Change part heading
% With titlesec
- \ifcsdef{titleformat}{%
- \ifcsdef{NR@part}{% Hyperref (nameref)
- \let\xpg@save@part@format\NR@part%
- \patchcmd{\NR@part}%
- {\partname\nobreakspace\thepart}%
- {\xpg@french@part\nobreakspace\partname}%
- {}%
- {\xpg@warning{Failed to patch part for French}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}%
+ \@ifundefined{titleformat}{%
+ % With KOMA
+ \@ifundefined{sectionformat}{%
+ % With memoir
+ \@ifundefined{@memptsize}{% (not \ifdefined\@memptsize)
+ % With standard classes
+ \@ifundefined{NR@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\xpg@french@part\nobreakspace\partname}%
+ {}%
+ {\@ifundefined{part}{}{\xpg@warning{Failed to patch part for French}}}%
+ }% (end \ifdefined \@part)
+ }{% Hyperref
+ \let\xpg@save@part@format\NR@part%
+ \patchcmd{\NR@part}%
{\partname\nobreakspace\thepart}%
{\xpg@french@part\nobreakspace\partname}%
{}%
{\xpg@warning{Failed to patch part for French}}%
- }{}%
- }%
- }{% (not \ifdefined\titleformat)
- % With KOMA
- \ifcsdef{sectionformat}{%
- \ifcsdef{partformat}{%
- \let\xpg@save@part@format\partformat%
- \renewcommand{\partformat}{\xpg@french@part~\partname}%
- }{}%
- }{% (not \ifdefined\sectionformat)
- % With memoir
- \ifcsdef{@memptsize}{%
- \ifcsdef{NR@part}{% Hyperref (nameref)
- \let\xpg@save@part@format\NR@part%
- \patchcmd{\NR@part}{\printpartname \partnamenum \printpartnum}%
- {\partnamefont\xpg@french@part\partnamenum\printpartname}%
- {}%
- {\xpg@warning{Failed to patch part for French}}%
- }{% not hyperref
- \ifcsdef{@part}{%
+ }% (end \ifdefined\NR@part)
+ }{%
+ \@ifundefined{NR@part}{% not hyperref
+ \@ifundefined{@part}{}{%
\let\xpg@save@part@format\@part%
\patchcmd{\@part}{\printpartname \partnamenum \printpartnum}%
{\partnamefont\xpg@french@part\partnamenum\printpartname}%
{}%
{\xpg@warning{Failed to patch part for French}}%
- }{}%
- }%
- }{% (not \ifdefined\@memptsize)
- % With standard classes
- \ifcsdef{NR@part}{% Hyperref
+ }%
+ }{% Hyperref (nameref)
\let\xpg@save@part@format\NR@part%
- \patchcmd{\NR@part}%
+ \patchcmd{\NR@part}{\printpartname \partnamenum \printpartnum}%
+ {\partnamefont\xpg@french@part\partnamenum\printpartname}%
+ {}%
+ {\xpg@warning{Failed to patch part for French}}%
+ }%
+ }% (end \ifdefined\@memptsize)
+ }{% (\ifdefined\sectionformat)
+ \@ifundefined{partformat}{}{%
+ \let\xpg@save@part@format\partformat%
+ \renewcommand{\partformat}{\xpg@french@part~\partname}%
+ }%
+ }% (end \ifdefined\sectionformat)
+ }{% (\ifdefined\titleformat)
+ \@ifundefined{NR@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}%
{\partname\nobreakspace\thepart}%
{\xpg@french@part\nobreakspace\partname}%
{}%
{\xpg@warning{Failed to patch part for French}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\xpg@french@part\nobreakspace\partname}%
- {}%
- {\ifcsdef{part}{\xpg@warning{Failed to patch part for French}}{}}%
- }{}% (end \ifdefined \NR@part)
- }% (end \ifdefined\@part)
- }% (end \ifdefined\@memptsize)
- }% (end \ifdefined\sectionformat)
+ }%
+ }{% Hyperref (nameref)
+ \let\xpg@save@part@format\NR@part%
+ \patchcmd{\NR@part}%
+ {\partname\nobreakspace\thepart}%
+ {\xpg@french@part\nobreakspace\partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for French}}%
+ }%
}% (end \ifdefined\titleformat)
}
\def\nofrench@capsformat{%
% Reset chapter and part heading
- \ifcsdef{titleformat}{%
- % With titlesec
- \ifcsdef{xpg@save@part@format}{%
- \ifcsdef{NR@part}{%
- \let\NR@part\xpg@save@part@format%
- }{%
- \let\@part\xpg@save@part@format%
- }%
- }{}%
- }{% (not \ifdefined\titleformat)
- \ifcsdef{sectionformat}{%
- % With KOMA
- \ifcsdef{xpg@save@part@format}{%
- \let\partformat\xpg@save@part@format
- }{}%
- }{%
+ \@ifundefined{titleformat}{%
+ \@ifundefined{sectionformat}{%
% With memoir and standard classes
- \ifcsdef{xpg@save@part@format}{%
- \ifcsdef{NR@part}{%
- \let\NR@part\xpg@save@part@format%
- }{%
+ \@ifundefined{xpg@save@part@format}{}{%
+ \@ifundefined{NR@part}{%
\let\@part\xpg@save@part@format%
+ }{%
+ \let\NR@part\xpg@save@part@format%
}%
- }{}%
+ }%
+ }{%
+ % With KOMA
+ \@ifundefined{xpg@save@part@format}{}{%
+ \let\partformat\xpg@save@part@format
+ }%
}% (end \ifdefined\sectionformat)
+ }{% (\ifdefined\titleformat)
+ % With titlesec
+ \@ifundefined{xpg@save@part@format}{}{%
+ \@ifundefined{NR@part}{%
+ \let\@part\xpg@save@part@format%
+ }{%
+ \let\NR@part\xpg@save@part@format%
+ }%
+ }%
}% (end \ifdefined\titleformat)
}
@@ -443,7 +421,7 @@
\if@xpg@french@footnote@set%
\else%
\iffrench@frenchfootnote%
- \ifdefstring{\xpg@main@language}{french}{%
+ \IfMainLanguageTF{french}{%
\ifx\@makefntext\undefined\else%
\long\def\french@makefntext##1{%
\parindent1em \noindent\quad%
@@ -467,7 +445,7 @@
\if@xpg@french@itemlabels@set%
\else%
\iffrench@frenchitemlabels
- \ifdefstring{\xpg@main@language}{french}{%
+ \IfMainLanguageTF{french}{%
\renewcommand{\labelitemi}{\french@itemi}%
\renewcommand{\labelitemii}{\french@itemii}%
\renewcommand{\labelitemiii}{\french@itemiii}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf
index 2db31a34152..70e3ae0d475 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-friulan.ldf
@@ -1,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-friulan.ldf}[polyglossia: module for Friulian]
% We only provide this gloss for babel compatibility.
-\xpg@load@master@language{friulian}
+\InheritGlossFile{friulian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf
index 49b69eaf9dd..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-friulian.ldf}[polyglossia: module for Friulian]
@@ -52,7 +52,7 @@
Lui\or Avost\or Setembar\or Otobar\or Novembar\or Dicembar%
\fi\space dal\space\number\year}}
-\AtEndPreamble{% the user or the class might define different values
+\AddToHook{begindocument/before}{% the user or the class might define different values
\edef\xpgfu@savedvalues{%
\clubpenalty=\the\clubpenalty\space
\@clubpenalty=\the\@clubpenalty\space
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf
index ca0671bbe9a..807487e9cc8 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-fur.ldf}[polyglossia: module for fur (Friulian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{friulian}
+\InheritGlossFile{friulian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf
index 02fd9e40091..4c9287deae4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ga.ldf}[polyglossia: module for ga (Gaelic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{gaelic}
+\InheritGlossFile{gaelic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf
index 2cbf5adbc5e..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-gaelic.ldf}[polyglossia: module for Gaelic]
@@ -22,23 +22,28 @@
\setlanguagealias[variant=scottish]{gaelic}{scottish}
\def\gaelic@variant{irish}
-\define@choicekey*+{gaelic}{variant}[\xpg@val\xpg@nr]{irish,scottish}[irish]{%
- \ifcase\xpg@nr\relax
- % irish:
- \gdef\gaelic@variant{irish}%
- \SetLanguageKeys{gaelic}{language=Irish,langtag=IRI,babelname=irish,bcp47=ga,bcp47-language=ga}%
- \xpg@fontsetup@latin{gaelic}%
- \or
- % scottish:
- \gdef\gaelic@variant{scottish}%
- \SetLanguageKeys{gaelic}{language=Gaelic,langtag=GAE,babelname=scottish,bcp47=gd,bcp47-language=gd}%
- \xpg@fontsetup@latin{gaelic}%
- \fi
- \xpg@info{Option: gaelic, variant=\xpg@val}%
-}{\xpg@warning{Unknown gaelic variant `#1'}}
+
+\DeclareKeys[polyglossia/gloss/gaelic]
+ {
+ variant.choice:,
+ variant / irish.code =
+ {%
+ \gdef\gaelic@variant{irish}%
+ \SetLanguageKeys{gaelic}{language=Irish,langtag=IRI,babelname=irish,bcp47=ga,bcp47-language=ga}%
+ \SetupLatinPolyglossiaFont{gaelic}%
+ },
+ variant / scottish.code =
+ {%
+ \gdef\gaelic@variant{scottish}%
+ \SetLanguageKeys{gaelic}{language=Gaelic,langtag=GAE,babelname=scottish,bcp47=gd,bcp47-language=gd}%
+ \SetupLatinPolyglossiaFont{gaelic}%
+ },
+ variant.default:n = irish,
+ variant/unknown.code = \xpg@warning{Unknown gaelic variant `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{gaelic}{variant=irish}
+\InitializeGlossOptions{gaelic}{variant=irish}
\def\captionsgaelic@irish{%
\def\refname{Tagairtí}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf
index 469af7e8cde..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.1 -- 2024/03/07)
+% 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 94842fd4d52..58045731450 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-gd.ldf}[polyglossia: module for gd (Gaelic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{gaelic}
+\InheritGlossFile{gaelic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf
index e58cede44b3..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-georgian.ldf}[polyglossia: module for Georgian]
@@ -18,34 +18,37 @@
\setlanguagealias*{georgian}{ka}
\newif\ifgeorgian@numerals
-\define@key{georgian}{numerals}[arabic]{%
- \ifstrequal{#1}{georgian}%
- {\georgian@numeralstrue%
- \SetLanguageKeys{georgian}{bcp47-extension-u=nu-geor}%
- }%
- {\georgian@numeralsfalse%
- \SetLanguageKeys{georgian}{bcp47-extension-u=nu-latn}%
- }%
-}
-
-\define@boolkey{georgian}[georgian@]{babelshorthands}[true]{}
-\define@boolkey{georgian}[georgian@]{oldmonthnames}[true]{}
+\DeclareKeys[polyglossia/gloss/georgian]
+ {
+ babelshorthands.if = georgian@babelshorthands,
+ babelshorthands.default:n = true,
+ oldmonthnames.if = georgian@oldmonthnames,
+ oldmonthnames.default:n = true,
+ numerals.choice:,
+ numerals / arabic.code =
+ {%
+ \georgian@numeralsfalse
+ \SetLanguageKeys{georgian}{bcp47-extension-u=nu-latn}%
+ },
+ numerals / georgian.code =
+ {%
+ \georgian@numeralstrue
+ \SetLanguageKeys{georgian}{bcp47-extension-u=nu-geor}%
+ },
+ numerals.default:n = arabic
+ }
% Register default options
-\xpg@initialize@gloss@options{georgian}{babelshorthands=false,oldmonthnames=false,numerals=arabic}
+\InitializeGlossOptions{georgian}{babelshorthands=false,oldmonthnames=false,numerals=arabic}
\ifsystem@babelshorthands
- \setkeys{georgian}{babelshorthands=true}
+ \SetGlossOptions{georgian}{babelshorthands=true}
\else
- \setkeys{georgian}{babelshorthands=false}
+ \SetGlossOptions{georgian}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\georgian@shorthands{%
\xpg@activate@shorthands%
@@ -80,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 918b759eb80..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-german.ldf}[polyglossia: module for German]
@@ -47,51 +47,11 @@
\newif\if@german@oldspelling
\@german@oldspellingfalse
-\define@choicekey*+{german}{spelling}[\xpg@val\xpg@nr]{new,old,1901,1996}[new]{%
- \ifcase\xpg@nr\relax
- % new:
- \@german@oldspellingfalse
- \or
- % old:
- \@german@oldspellingtrue
- \or
- % 1901:
- \@german@oldspellingtrue
- \or
- % 1996:
- \@german@oldspellingfalse
- \fi
- \german@set@babelname%
- \xpg@info{Option: German, spelling=\xpg@val}%
-}{\xpg@warning{Unknown German spelling `#1'}}
\newif\if@austrian@locale
\@austrian@localefalse
\newif\if@swiss@locale
\@swiss@localefalse
-\define@choicekey*+{german}{variant}[\xpg@val\xpg@nr]{german,austrian,swiss}[german]{%
- \ifcase\xpg@nr\relax
- % german:
- \@swiss@localefalse%
- \@austrian@localefalse%
- \or
- % austrian:
- \@austrian@localetrue%
- \@swiss@localefalse%
- \or
- % swiss:
- \@swiss@localetrue%
- \@austrian@localefalse%
- \xpg@ifdefined{swissgerman}{}%
- {%
- \xpg@warning{No hyphenation patterns were loaded for "Swiss German (Old Spelling)"\MessageBreak
- I will use the standard patterns for German (old spelling) instead}%
- \adddialect\l@swissgerman\l@german\relax%
- }%
- \fi
- \german@set@babelname%
- \xpg@info{Option: German, variant=\xpg@val}%
-}{\xpg@warning{Unknown German variant `#1'}}
\def\german@set@babelname{%
\if@german@oldspelling
@@ -140,58 +100,110 @@
}
\newif\if@german@blackletter
-\define@choicekey*+{german}{script}[\xpg@val\xpg@nr]{latin,blackletter,fraktur}[latin]{%
- \ifcase\xpg@nr\relax
- % latin:
- \@german@blackletterfalse%
- \or
- % blackletter:
- \@german@blacklettertrue%
- \or
- % fraktur:
- \@german@blacklettertrue%
- \fi
- \german@set@babelname%
- \xpg@info{Option: German, script=\xpg@val}%
-}{\xpg@warning{Unknown German script `#1'}}
-\define@boolkey{german}[german@]{capitaleszett}[true]{%
- \ifgerman@capitaleszett
- % MakeUppercase capitalizes the eszett (U+00DF) with U+1E9E
- \SetLanguageKeys{german}{bcp47-casing=de-x-eszett,bcp47-extension-x=eszett}
- \else
- % Capitalize eszett as <SS>
- \SetLanguageKeys{german}{bcp47-casing=de,bcp47-extension-x={}}
- \fi
-}
-
-
-% Option defunc'ed, as both XeTeX and LuaTeX meanwhile
-% use the experimental German hyphenation patterns by default.
-\define@boolkey{german}[german@]{latesthyphen}[true]{}
-
-\define@boolkey{german}[german@]{babelshorthands}[true]{}
+\DeclareKeys[polyglossia/gloss/german]
+ {
+ babelshorthands.if = german@babelshorthands,
+ babelshorthands.default:n = true,
+ latesthyphen.if = german@latesthyphen,
+ latesthyphen.default:n = true,
+ capitaleszett.choice:,
+ capitaleszett / true.code =
+ {% MakeUppercase capitalizes the eszett (U+00DF) with U+1E9E
+ \SetLanguageKeys{german}{bcp47-casing=de-x-eszett,bcp47-extension-x=eszett}%
+ },
+ capitaleszett / false.code =
+ {% Capitalize eszett as <SS>
+ \SetLanguageKeys{german}{bcp47-casing=de,bcp47-extension-x={}}%
+ },
+ capitaleszett.default:n = true,
+ script.choice:,
+ script / latin.code =
+ {%
+ \@german@blackletterfalse
+ \german@set@babelname
+ },
+ script / blackletter.code =
+ {%
+ \@german@blacklettertrue
+ \german@set@babelname
+ },
+ script / fraktur.code =
+ {%
+ \@german@blacklettertrue
+ \german@set@babelname
+ },
+ script.default:n = latin,
+ script/unknown.code = \xpg@warning{Unknown German script `#1'},
+ spelling.choice:,
+ spelling / new.code =
+ {%
+ \@german@oldspellingfalse
+ \german@set@babelname
+ },
+ spelling / old.code =
+ {%
+ \@german@oldspellingtrue
+ \german@set@babelname
+ },
+ spelling / 1901.code =
+ {%
+ \@german@oldspellingtrue
+ \german@set@babelname
+ },
+ spelling / 1996.code =
+ {%
+ \@german@oldspellingfalse
+ \german@set@babelname
+ },
+ spelling.default:n = new,
+ spelling/unknown.code = \xpg@warning{Unknown German spelling `#1'},
+ variant.choice:,
+ variant / german.code =
+ {%
+ \@swiss@localefalse
+ \@austrian@localefalse
+ \german@set@babelname
+ },
+ variant / austrian.code =
+ {%
+ \@austrian@localetrue
+ \@swiss@localefalse
+ \german@set@babelname
+ },
+ variant / swiss.code =
+ {%
+ \@swiss@localetrue
+ \@austrian@localefalse
+ \IfLanguageDefinedF{swissgerman}
+ {%
+ \xpg@warning{No hyphenation patterns were loaded for "Swiss German (Old Spelling)"\MessageBreak
+ I will use the standard patterns for German (old spelling) instead}%
+ \adddialect\l@swissgerman\l@german\relax
+ }%
+ \german@set@babelname
+ },
+ variant.default:n = german,
+ variant/unknown.code = \xpg@warning{Unknown German variant `#1'}
+ }
+
-\setkeys{german}{spelling,script,variant}
+\SetGlossOptions{german}{spelling,script,variant}
% Register default options
-\xpg@initialize@gloss@options{german}{variant=german,spelling=new,script=latin,babelshorthands=false}
+\InitializeGlossOptions{german}{variant=german,spelling=new,script=latin,babelshorthands=false}
% Register alias options
-\xpg@set@alias@values{german}{spelling}{new}{1996}
-\xpg@set@alias@values{german}{spelling}{old}{1901}
-\xpg@set@alias@values{german}{script}{blackletter}{fraktur}
+\SetLanguageAliasValues{german}{spelling}{new,1996}
+\SetLanguageAliasValues{german}{spelling}{old,1901}
+\SetLanguageAliasValues{german}{script}{blackletter,fraktur}
\ifsystem@babelshorthands
- \setkeys{german}{babelshorthands=true}
+ \SetGlossOptions{german}{babelshorthands=true}
\else
- \setkeys{german}{babelshorthands=false}
+ \SetGlossOptions{german}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\german@shorthands{%
\xpg@activate@shorthands%
@@ -313,15 +325,15 @@
\def\german@language{%
\if@german@oldspelling
\if@swiss@locale
- \polyglossia@setup@language@patterns{swissgerman}%
+ \SetupPolyglossiaLangPatterns{swissgerman}%
\else
- \polyglossia@setup@language@patterns{german}%
+ \SetupPolyglossiaLangPatterns{german}%
\fi
\if@austrian@locale
\adddialect\l@austrian\l@german%
\fi
\else
- \polyglossia@setup@language@patterns{ngerman}%
+ \SetupPolyglossiaLangPatterns{ngerman}%
\if@austrian@locale
\adddialect\l@naustrian\l@ngerman%
\fi
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf
index d5b6a8768b2..625478d0561 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-germanb.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-germanb.ldf}[polyglossia: module for German (old spelling)]
% We provide this as a babel alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf
index 11c6fdff929..9b8442935e3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-gl.ldf}[polyglossia: module for gl (Galician)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{galician}
+\InheritGlossFile{galician}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf
index 82184ffaaa4..17733e08e61 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-grc.ldf}[polyglossia: module for grc (Greek)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{greek}
+\InheritGlossFile{greek}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf
index 537379cb7f4..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-greek.ldf}[polyglossia: module for Greek]
@@ -22,7 +22,7 @@
% BCP-47 compliant aliases
\setlanguagealias*[variant=ancient]{greek}{grc}
-\setlanguagealias*[varant=polytonic]{greek}{el-polyton}
+\setlanguagealias*[variant=polytonic]{greek}{el-polyton}
\setlanguagealias*[variant=monotonic]{greek}{el-monoton}
\setlanguagealias*{greek}{el}
@@ -42,44 +42,9 @@
\newif\if@greek@ancient\@greek@ancientfalse
\newif\if@greek@poly\@greek@polyfalse
-\define@choicekey*+{greek}{variant}[\xpg@val\xpg@nr]{monotonic,mono,polytonic,poly,ancient,ancientgreek}[monotonic]{%
- \xpg@ifdefined{greek}{}{%
- \xpg@nopatterns{greek}%
- \adddialect\l@greek\l@nohyphenation
- }%
- \ifcase\xpg@nr\relax
- % monotonic:
- \@greek@polyfalse
- \@greek@ancientfalse
- \or
- % mono:
- \@greek@polyfalse
- \@greek@ancientfalse
- \or
- % polytonic:
- \@greek@polytrue
- \@greek@ancientfalse
- \or
- % poly:
- \@greek@polytrue
- \@greek@ancientfalse
- \or
- % ancient:
- \@greek@polyfalse
- \@greek@ancienttrue
- \or
- % ancientgreek:
- \@greek@polyfalse
- \@greek@ancienttrue
- \fi
- \greek@set@langdata
- \xpg@info{Option: Greek, variant=\xpg@val}%
-}{\xpg@warning{Unknown Greek variant `#1'}}
-
-
\def\greek@set@langdata{%
\if@greek@ancient
- \xpg@ifdefined{ancientgreek}{}%
+ \IfLanguageDefinedF{ancientgreek}%
{\xpg@warning{No hyphenation patterns were loaded for Ancient Greek\MessageBreak
I will use the patterns loaded for \string\l@greek\space instead}%
\adddialect\l@ancientgreek\l@greek\relax}%
@@ -89,7 +54,7 @@
\SetLanguageKeys{greek}{babelname=greek,bcp47=grc,bcp47-language=grc,bcp47-variant={}}%
\else
\if@greek@poly
- \xpg@ifdefined{polygreek}{}%
+ \IfLanguageDefinedF{polygreek}%
{\xpg@warning{No hyphenation patterns were loaded for Polytonic Greek\MessageBreak
I will use the patterns loaded for \string\l@greek\space instead}%
\adddialect\l@polygreek\l@greek\relax}%
@@ -98,7 +63,7 @@
\def\dategreek{\datepolygreek}%
\SetLanguageKeys{greek}{babelname=polutonikogreek,bcp47=el-polyton,bcp47-language=el,bcp47-variant=polyton}%
\else% monotonic greek
- \xpg@ifdefined{monogreek}{}%
+ \IfLanguageDefinedF{monogreek}%
{\xpg@warning{No hyphenation patterns were loaded for Monotonic Greek\MessageBreak
I will use the patterns loaded for \string\l@greek\space instead}%
\adddialect\l@monogreek\l@greek\relax}%
@@ -112,42 +77,85 @@
\def\greek@language{%
- \polyglossia@setup@language@patterns{\greek@variant}%
+ \SetupPolyglossiaLangPatterns{\greek@variant}%
}
\newif\if@greek@numerals
-\define@choicekey*+{greek}{numerals}[\xpg@val\xpg@nr]{greek,arabic}[greek]{%
- \ifcase\xpg@nr\relax
- % greek:
- \@greek@numeralstrue%
- \SetLanguageKeys{greek}{bcp47-extension-u=nu-grek}%
- \or
- % arabic:
- \@greek@numeralsfalse%
- \SetLanguageKeys{greek}{bcp47-extension-u=nu-latn}%
- \fi
- \xpg@info{Option: Greek, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Greek numerals value `#1'}}
-
-\define@boolkey{greek}[greek@]{capitaliota}[true]{%
- \ifgreek@capitaliota
- % \MakeUppercase converts the ypogegrammeni (subscript muted iota) to capital iota
- \SetLanguageKeys{greek}{bcp47-casing=el-x-iota,bcp47-extension-x=iota}
- \else
- % \MakeUppercase retains the subscript versions (default)
- \SetLanguageKeys{greek}{bcp47-casing=el,bcp47-extension-x={}}
- \fi
-}
-
-\define@boolkey{greek}{attic}[true]{\xpg@warning{Greek option `attic' is no longer required.}}
+\DeclareKeys[polyglossia/gloss/greek]
+ {
+ variant.choices:nn = { monotonic, mono,polytonic, poly,ancient, ancientgreek }
+ {%
+ \CheckHyphenationPatterns{greek}%
+ \ifcase\UseName{l_keys_choice_int}\or
+ % monotonic:
+ \@greek@polyfalse
+ \@greek@ancientfalse
+ \or
+ % mono:
+ \@greek@polyfalse
+ \@greek@ancientfalse
+ \or
+ % polytonic:
+ \@greek@polytrue
+ \@greek@ancientfalse
+ \or
+ % poly:
+ \@greek@polytrue
+ \@greek@ancientfalse
+ \or
+ % ancient:
+ \@greek@polyfalse
+ \@greek@ancienttrue
+ \or
+ % ancientgreek:
+ \@greek@polyfalse
+ \@greek@ancienttrue
+ \fi
+ \greek@set@langdata
+ },
+ variant.default:n = monotonic,
+ variant/unknown.code = \xpg@warning{Unknown Greek variant `#1'},
+ numerals.choice:,
+ numerals / greek.code =
+ {%
+ \@greek@numeralstrue
+ \SetLanguageKeys{greek}{bcp47-extension-u=nu-grek}%
+ },
+ numerals / arabic.code =
+ {%
+ \@greek@numeralsfalse
+ \SetLanguageKeys{greek}{bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = greek,
+ numerals/unknown.code = \xpg@warning{Unknown Greek numerals value `#1'},
+ capitaliota.choice:,
+ capitaliota / true.code =
+ {%
+ \@greek@capitaliotatrue
+ % \MakeUppercase converts the ypogegrammeni (subscript muted iota) to capital iota
+ \SetLanguageKeys{greek}{bcp47-casing=el-x-iota,bcp47-extension-x=iota}%
+ },
+ capitaliota / false.code =
+ {%
+ \@greek@capitaliotafalse
+ % \MakeUppercase retains the subscript versions (default)
+ \SetLanguageKeys{greek}{bcp47-casing=el,bcp47-extension-x={}}%
+ },
+ capitaliota.default:n = true,
+ attic.choices:nn = { true, false }
+ {%
+ \xpg@warning{Greek option `attic' is no longer required.}
+ },
+ capitaliota.default:n = true,
+ }
% Register default options
-\xpg@initialize@gloss@options{greek}{variant=monotonic,numerals=greek}
+\InitializeGlossOptions{greek}{variant=monotonic,numerals=greek}
% Register alias options
-\xpg@set@alias@values{greek}{variant}{monotonic}{mono}
-\xpg@set@alias@values{greek}{variant}{polytonic}{poly}
+\SetLanguageAliasValues{greek}{variant}{monotonic,mono}
+\SetLanguageAliasValues{greek}{variant}{polytonic,poly}
\def\monogreekcaptions{%
\def\refname{Αναφορές}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf
index 80a60baa797..ee5c85a6589 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-he.ldf}[polyglossia: module for he (Hebrew)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{hebrew}
+\InheritGlossFile{hebrew}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf
index 7ee62033e1d..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hebrew.ldf}[polyglossia: module for Hebrew]
@@ -24,41 +24,48 @@
% BCP-47 compliant aliases
\setlanguagealias*{hebrew}{he}
-% hebrewcal options
-\define@key{hebrew}{marcheshvan}[true]{\setkeys{hebrewcal}{marcheshvan=#1}}
-\define@key{hebrew}{transliteration}[alt]{\setkeys{hebrewcal}{transliteration=#1}}
-\define@key{hebrew}{fullyear}[true]{\setkeys{hebrewcal}{fullyear=#1}}
-
\newif\if@calendar@hebrew
-\define@choicekey*+{hebrew}{calendar}[\xpg@val\xpg@nr]{hebrew,gregorian}[gregorian]{%
- \ifcase\xpg@nr\relax
- % hebrew:
- \@calendar@hebrewtrue
- \or
- % gregorian:
- \@calendar@hebrewfalse
- \fi
- \xpg@info{Option: Hebrew, calendar=\xpg@val}%
-}{\xpg@warning{Unknown Hebrew calendar `#1'}}
-
\newif\if@hebrew@numerals
-\define@choicekey*+{hebrew}{numerals}[\xpg@val\xpg@nr]{hebrew,arabic}[arabic]{%
- \ifcase\xpg@nr\relax
- % hebrew:
- \@hebrew@numeralstrue
- \SetLanguageKeys{hebrew}{bcp47-extension-u=nu-hebr}%
- \or
- % arabic:
- \@hebrew@numeralsfalse
- \SetLanguageKeys{hebrew}{bcp47-extension-u=nu-latn}%
- \fi
- \xpg@info{Option: Hebrew, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Hebrew numerals value `#1'}}
-\setkeys{hebrew}{numerals}
+\DeclareKeys[polyglossia/gloss/hebrew]
+ {
+ marcheshvan.code = \setkeys{hebrewcal}{marcheshvan=#1},
+ marcheshvan.default:n = true,
+ transliteration.code = \setkeys{hebrewcal}{transliteration=#1},
+ transliteration.default:n = alt,
+ fullyear.code = \setkeys{hebrewcal}{fullyear=#1},
+ fullyear.default:n = true,
+ calendar.choice:,
+ calendar / hebrew.code =
+ {%
+ \@calendar@hebrewtrue
+ },
+ calendar / gregorian.code =
+ {%
+ \@calendar@hebrewfalse
+ },
+ calendar.default:n = gregorian,
+ calendar/unknown.code = \xpg@warning{Unknown Hebrew calendar `#1'},
+ numerals.choice:,
+ numerals / hebrew.code =
+ {%
+ \@hebrew@numeralstrue
+ \SetLanguageKeys{hebrew}{bcp47-extension-u=nu-hebr}%
+ },
+ numerals / arabic.code =
+ {%
+ \@hebrew@numeralsfalse
+ \SetLanguageKeys{hebrew}{bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = arabic,
+ numerals/unknown.code = \xpg@warning{Unknown Hebrew numerals value `#1'}
+ }
+
+
+\SetGlossOptions{hebrew}{numerals}
% Register default options
-\xpg@initialize@gloss@options{hebrew}{numerals=arabic,calendar=gregorian,marcheshvan=false,fullyear=false}
+\InitializeGlossOptions{hebrew}{numerals=arabic,calendar=gregorian,marcheshvan=false,fullyear=false}
\def\captionshebrew{%
\def\prefacename{מבוא}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf
index 24ac6a0ea58..f95ff044ad4 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hi.ldf}[polyglossia: module for hi (Hindi)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{hindi}
+\InheritGlossFile{hindi}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf
index 7803b17ef44..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.1 -- 2024/03/07)
+% 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
@@ -25,8 +25,7 @@
\ifx\l@hindi\@undefined%
\ifx\l@sanskrit\@undefined%
- \xpg@nopatterns{Hindi}%
- \adddialect\l@hindi\l@nohyphenation%
+ \XPGNoPatternsFallback{hindi}%
\else
\xpg@warning{No hyphenation patterns were loaded for Hindi\MessageBreak
I will use the patterns for Sanskrit instead}
@@ -35,26 +34,31 @@
\fi
\def\hindi@language{%
- \polyglossia@setup@language@patterns{hindi}%
+ \SetupPolyglossiaLangPatterns{hindi}%
}
\newif\ifhindi@devanagari@numerals
\hindi@devanagari@numeralstrue
-\define@choicekey*+{hindi}{numerals}[\xpg@val\xpg@nr]{Devanagari,Western}[Devanagari]{%
- \ifcase\xpg@nr\relax
- % Devanagari:
- \hindi@devanagari@numeralstrue%
- \SetLanguageKeys{hindi}{bcp47-extension-u=nu-deva}%
- \or
- % Western:
- \hindi@devanagari@numeralsfalse%
- \SetLanguageKeys{hindi}{bcp47-extension-u=nu-latn}%
- \fi
- \xpg@info{Option: Hindi, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Hindi numeral `#1'}}
+
+\DeclareKeys[polyglossia/gloss/hindi]
+ {
+ numerals.choice:,
+ numerals / devanagari.code =
+ {%
+ \hindi@devanagari@numeralstrue
+ \SetLanguageKeys{hindi}{bcp47-extension-u=nu-deva}%
+ },
+ numerals / western.code =
+ {%
+ \hindi@devanagari@numeralsfalse
+ \SetLanguageKeys{hindi}{bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = devanagari,
+ numerals/unknown.code = \xpg@warning{Unknown Hindi numeral `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{hindi}{numerals=devanagari}
+\InitializeGlossOptions{hindi}{numerals=devanagari}
\newcommand{\hindinumerals}[2]{\hindinumber{#2}}
@@ -74,6 +78,7 @@
\def\contentsname{विषय सूची}%
\def\enclname{}%
\def\figurename{चित्र}% रेखाचित्र
+ \def\glossaryname{शब्दार्थ सूची}%
\def\headpagename{पृष्ठ}%
\def\headtoname{}%
\def\indexname{सूची}%
@@ -85,6 +90,7 @@
\def\pagename{पृष्ठ}%
\def\partname{खण्ड}%
\def\prefacename{प्रस्तावना}% प्राक्कथन
+ \def\proofname{प्रमाण}%
\def\refname{हवाले}%
\def\tablename{तालिका}%
\def\seename{देखिए}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf
index 9354b06cadc..f0e1fa462f8 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hr.ldf}[polyglossia: module for hr (Croatian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{croatian}
+\InheritGlossFile{croatian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf
index f2c872c2c41..68e8b65c00d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hsb.ldf}[polyglossia: module for hsb (Higher Sorbian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{sorbian}
+\InheritGlossFile{sorbian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf
index 9700f33025b..47ed150e040 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hu.ldf}[polyglossia: module for hu (Hungarian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{hungarian}
+\InheritGlossFile{hungarian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf
index a846c750bb8..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hungarian.ldf}[polyglossia: module for Hungarian]
@@ -25,53 +25,61 @@
\newif\if@hungarian@swapcaptions
\newif\if@hungarian@swapheadings
\newif\if@hungarian@swapheaders
-\define@choicekey*+{hungarian}{swapstrings}[\xpg@val\xpg@nr]{all,captions,headings,headers,hheaders,none}[all]{%
- \ifcase\xpg@nr\relax
- % all:
- \@hungarian@swapcaptionstrue%
- \@hungarian@swapheadingstrue%
- \@hungarian@swapheaderstrue%
- \or
- % captions:
- \@hungarian@swapcaptionstrue%
- \@hungarian@swapheadingsfalse%
- \@hungarian@swapheadersfalse%
- \or
- % headings:
- \@hungarian@swapcaptionsfalse%
- \@hungarian@swapheadingstrue%
- \@hungarian@swapheadersfalse%
- \or
- % headers:
- \@hungarian@swapcaptionsfalse%
- \@hungarian@swapheadingsfalse%
- \@hungarian@swapheaderstrue%
- \or
- % hheaders:
- \@hungarian@swapcaptionsfalse%
- \@hungarian@swapheadingstrue%
- \@hungarian@swapheaderstrue%
- \or
- % none:
- \@hungarian@swapcaptionsfalse%
- \@hungarian@swapheadingsfalse%
- \@hungarian@swapheadersfalse%
- \fi
- \xpg@info{Option: Hungarian, swapstrings=\xpg@val}%
-}{\xpg@warning{Unknown Hungarian swapstrings value `#1'}}
-% Force punctuation: 1) after section type counters; 2) after @chapapp in the running head
-\define@boolkey{hungarian}[hungarian@]{forceheadingpunctuation}[true]{}
+\DeclareKeys[polyglossia/gloss/hungarian]
+ {
+ forceheadingpunctuation.if = hungarian@forceheadingpunctuation,
+ forceheadingpunctuation.default:n = true,
+ swapstrings.choice:,
+ swapstrings / all.code =
+ {%
+ \@hungarian@swapcaptionstrue
+ \@hungarian@swapheadingstrue
+ \@hungarian@swapheaderstrue
+ },
+ swapstrings / captions.code =
+ {%
+ \@hungarian@swapcaptionstrue
+ \@hungarian@swapheadingsfalse
+ \@hungarian@swapheadersfalse
+ },
+ swapstrings / headings.code =
+ {%
+ \@hungarian@swapcaptionsfalse
+ \@hungarian@swapheadingstrue
+ \@hungarian@swapheadersfalse
+ },
+ swapstrings / headers.code =
+ {%
+ \@hungarian@swapcaptionsfalse
+ \@hungarian@swapheadingsfalse
+ \@hungarian@swapheaderstrue
+ },
+ swapstrings / hheaders.code =
+ {%
+ \@hungarian@swapcaptionsfalse
+ \@hungarian@swapheadingstrue
+ \@hungarian@swapheaderstrue
+ },
+ swapstrings / none.code =
+ {%
+ \@hungarian@swapcaptionsfalse
+ \@hungarian@swapheadingsfalse
+ \@hungarian@swapheadersfalse
+ },
+ swapstrings.default:n = all,
+ swapstrings/unknown.code = \xpg@warning{Unknown Hungarian swapstrings value `#1'}
+ }
% Register default options
% forceheadinpunctuatin is recommended, but the default value is false for compatibility reasons
-\xpg@initialize@gloss@options{hungarian}{swapstrings=all,
+\InitializeGlossOptions{hungarian}{swapstrings=all,
forceheadingpunctuation=false}
\def\hungarian@language{%
- \polyglossia@setup@language@patterns{hungarian}%
- \xpg@ifdefined{hungarian}{\adddialect\l@magyar\l@hungarian}{}%
+ \SetupPolyglossiaLangPatterns{hungarian}%
+ \IfLanguageDefinedT{hungarian}{\adddialect\l@magyar\l@hungarian}%
}%
\def\captionshungarian{%
@@ -143,120 +151,104 @@
% change chapter and part headings
\if@hungarian@swapheadings
% With titlesec
- \ifcsdef{titleformat}{%
- \ifcsdef{NR@part}{% Hyperref (nameref)
- \let\xpg@save@part@format\NR@part%
- \patchcmd{\NR@part}%
- {\partname\nobreakspace\thepart}%
- {\thepart.\nobreakspace\partname}%
- {}%
- {\xpg@warning{Failed to patch part for Hungarian}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\thepart.\nobreakspace\partname}%
- {}%
- {\xpg@warning{Failed to patch part for Hungarian}}%
- }{}%
- }
- \ifcsdef{chapter}{%
- \titleformat\chapter[display]%
- {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
- {\thechapter.\space\@chapapp}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
- }{}%
- }{% (not \ifdefined\titleformat)
+ \@ifundefined{titleformat}{%
% With KOMA
- \ifcsdef{sectionformat}{%
- \ifcsdef{partformat}{%
- \let\xpg@save@part@format\partformat%
- \renewcommand{\partformat}{\thepart.~\partname}%
- }{}%
- \ifcsdef{chapterformat}{%
- \let\xpg@save@chap@format\chapterformat%
- \renewcommand{\chapterformat}{\mbox{\thechapter\autodot%
- \IfUsePrefixLine{\nobreakspace\chapapp}{\enskip}}}%
- }{}%
- }{% (not \ifdefined\sectionformat)
- % With memoir
- \ifcsdef{@memptsize}{%
- \ifcsdef{@makechapterhead}{%
- \let\xpg@save@chap@format\@makechapterhead%
- \patchcmd{\@makechapterhead}{\printchaptername \chapternamenum \printchapternum}%
- {\printchapternum.\chapternamenum\printchaptername}%
- {}%
- {\xpg@warning{Failed to patch chapter for Hungarian}}%
- }{}%
- \ifcsdef{NR@part}{% Hyperref (nameref)
- \let\xpg@save@part@format\NR@part%
- \patchcmd{\NR@part}{\printpartname \partnamenum \printpartnum}%
- {\printpartnum.\partnamenum\printpartname}%
- {}%
- {\xpg@warning{Failed to patch part for Hungarian}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}{\printpartname \partnamenum \printpartnum}%
- {\printpartnum.\partnamenum\printpartname}%
- {}%
- {\xpg@warning{Failed to patch part for Hungarian}}%
- }{}%
- }%
- }{% (not \ifdefined\@memptsize)
+ \@ifundefined{sectionformat}{%
+ % Memoir?
+ \@ifundefined{@memptsize}{%
% With standard classes
- \ifcsdef{@makechapterhead}{%
+ \@ifundefined{@makechapterhead}{}{%
\let\xpg@save@chap@format\@makechapterhead%
\patchcmd{\@makechapterhead}%
{\@chapapp\space \thechapter}%
{\thechapter.\space \@chapapp}%
{}%
{\xpg@warning{Failed to patch chapter for Hungarian}}%
- }{}%
- \ifcsdef{NR@part}{% Hyperref (nameref)
+ }%
+ \@ifundefined{NR@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\thepart.\nobreakspace\partname}%
+ {}%
+ {\@ifundefined{part}{}{\xpg@warning{Failed to patch part for Hungarian}}}%
+ }% (end \ifdefined\@part)
+ }{% Hyperref (nameref)
\let\xpg@save@part@format\NR@part%
\patchcmd{\NR@part}%
{\partname\nobreakspace\thepart}%
{\thepart.\nobreakspace\partname}%
{}%
{\xpg@warning{Failed to patch part for Hungarian}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\thepart.\nobreakspace\partname}%
- {}%
- {\ifcsdef{part}{\xpg@warning{Failed to patch part for Hungarian}}{}}%
- }{}% (end \ifdefined\@part)
}% (end not hyperref)
- }% (end \ifdefined\@memptsize)
- }% (end \ifdefined\sectionformat)
+ }{% with memoir (\ifdefined\@memptsize)
+ \@ifundefined{@makechapterhead}{}{%
+ \let\xpg@save@chap@format\@makechapterhead%
+ \patchcmd{\@makechapterhead}{\printchaptername \chapternamenum \printchapternum}%
+ {\printchapternum.\chapternamenum\printchaptername}%
+ {}%
+ {\xpg@warning{Failed to patch chapter for Hungarian}}%
+ }%
+ \@ifundefined{NR@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}{\printpartname \partnamenum \printpartnum}%
+ {\printpartnum.\partnamenum\printpartname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Hungarian}}%
+ }%
+ }{% Hyperref (nameref)
+ \let\xpg@save@part@format\NR@part%
+ \patchcmd{\NR@part}{\printpartname \partnamenum \printpartnum}%
+ {\printpartnum.\partnamenum\printpartname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Hungarian}}%
+ }%
+ }% (end \ifdefined\@memptsize)
+ }{% (\ifdefined\sectionformat)
+ \@ifundefined{partformat}{}{%
+ \let\xpg@save@part@format\partformat%
+ \renewcommand{\partformat}{\thepart.~\partname}%
+ }%
+ \@ifundefined{chapterformat}{}{%
+ \let\xpg@save@chap@format\chapterformat%
+ \renewcommand{\chapterformat}{\mbox{\thechapter\autodot%
+ \IfUsePrefixLine{\nobreakspace\chapapp}{\enskip}}}%
+ }%
+ }% (end \ifdefined\sectionformat)
+ }{% (\ifdefined\titleformat)
+ \@ifundefined{NR@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\thepart.\nobreakspace\partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Hungarian}}%
+ }%
+ }{% Hyperref (nameref)
+ \let\xpg@save@part@format\NR@part%
+ \patchcmd{\NR@part}%
+ {\partname\nobreakspace\thepart}%
+ {\thepart.\nobreakspace\partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Hungarian}}%
+ }%
+ \@ifundefined{chapter}{}{%
+ \titleformat\chapter[display]%
+ {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
+ {\thechapter.\space\@chapapp}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
+ }%
}% (end \ifdefined\titleformat)
\fi% (end \if@hungarian@swapheadings)
%
% Change running headers
\if@hungarian@swapheaders
- \ifcsdef{chapterformat}{%
- % With KOMA
- \let\xpg@save@chaptermark@format\chaptermarkformat%
- \renewcommand*\chaptermarkformat{%
- \thechapter\autodot\ \IfChapterUsesPrefixLine{\chapapp\@hungarian@forced@dot\enskip}{}}
- }{% (not \ifdefined\chapterformat)
- \ifcsdef{@memptsize}{%
- % With memoir
- \let\xpg@save@chaptermark@format\chaptermark%
- \renewcommand*\chaptermark[1]{%
- \markboth{\memUChead{%
- \ifnum \c@secnumdepth >\m@ne
- \ifbool{@mainmatter}{%
- \thechapter.\ \@chapapp\@hungarian@forced@dot\ %
- }{}%
- \fi
- ##1}}{}}%
- }{% (not \ifdefined\@memptsize)
+ \@ifundefined{chapterformat}{%
+ \@ifundefined{@memptsize}{%
% With standard classes
- \ifcsdef{chaptermark}{%
+ \@ifundefined{chaptermark}{}{%
\ifpatchable{\chaptermark}%
{\@chapapp\ \thechapter.}%
{\let\xpg@save@chaptermark@format\chaptermark%
@@ -266,8 +258,24 @@
{}%
{\xpg@warning{Failed to patch chaptermark for Hungarian}}}%
{}%
- }{}% (end \ifdefined\chaptermark)
+ }% (end \ifdefined\chaptermark)
+ }{% (\ifdefined\@memptsize)
+ % With memoir
+ \let\xpg@save@chaptermark@format\chaptermark%
+ \renewcommand*\chaptermark[1]{%
+ \markboth{\memUChead{%
+ \ifnum \c@secnumdepth >\m@ne
+ \ifbool{@mainmatter}{%
+ \thechapter.\ \@chapapp\@hungarian@forced@dot\ %
+ }{}%
+ \fi
+ ##1}}{}}%
}% (end \ifdefined\@memptsize)
+ }{% (\ifdefined\chapterformat)
+ % With KOMA
+ \let\xpg@save@chaptermark@format\chaptermarkformat%
+ \renewcommand*\chaptermarkformat{%
+ \thechapter\autodot\ \IfChapterUsesPrefixLine{\chapapp\@hungarian@forced@dot\enskip}{}}
}% (end \ifdefined\chapterformat)
\fi% (end \if@hungarian@swapheaders)
}
@@ -279,70 +287,70 @@
\let\fnum@figure\xpg@save@fnum@figure%
%
% Reset chapter and part heading
- \ifcsdef{titleformat}{%
+ \@ifundefined{titleformat}{%
+ \@ifundefined{sectionformat}{%
+ % With memoir and standard classes
+ \@ifundefined{xpg@save@part@format}{}{%
+ \@ifundefined{NR@part}{%
+ \let\@part\xpg@save@part@format%
+ }{%
+ \let\NR@part\xpg@save@part@format%
+ }%
+ }%
+ \@ifundefined{xpg@save@chap@format}{}{%
+ \let\@makechapterhead\xpg@save@chap@format
+ }%
+ }{%
+ % With KOMA
+ \@ifundefined{xpg@save@part@format}{}{%
+ \let\partformat\xpg@save@part@format
+ }%
+ \@ifundefined{xpg@save@chap@format}{}{%
+ \let\chapterformat\xpg@save@chap@format
+ }%
+ }% (end \ifdefined\sectionformat)
+ }{% (\ifdefined\titleformat)
% With titlesec
- \ifcsdef{xpg@save@part@format}{%
- \ifcsdef{NR@part}{%
- \let\NR@part\xpg@save@part@format%
- }{%
+ \@ifundefined{xpg@save@part@format}{}{%
+ \@ifundefined{NR@part}{%
\let\@part\xpg@save@part@format%
+ }{%
+ \let\NR@part\xpg@save@part@format%
}%
- }{}%
- \ifcsdef{chapter}{%
+ }%
+ \@ifundefined{chapter}{}{%
\titleformat\chapter[display]%
{\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
{\@chapapp\space\thechapter}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
- }{}%
- }{% (not \ifdefined\titleformat)
- \ifcsdef{sectionformat}{%
- % With KOMA
- \ifcsdef{xpg@save@part@format}{%
- \let\partformat\xpg@save@part@format
- }{}%
- \ifcsdef{xpg@save@chap@format}{%
- \let\chapterformat\xpg@save@chap@format
- }{}%
- }{%
- % With memoir and standard classes
- \ifcsdef{xpg@save@part@format}{%
- \ifcsdef{NR@part}{%
- \let\NR@part\xpg@save@part@format%
- }{%
- \let\@part\xpg@save@part@format%
- }%
- }{}%
- \ifcsdef{xpg@save@chap@format}{%
- \let\@makechapterhead\xpg@save@chap@format
- }{}%
- }% (end \ifdefined\sectionformat)
+ }%
}% (end \ifdefined\titleformat)
%
% Reset headers
- \ifcsdef{chaptermarkformat}{%
- % With KOMA
- \ifcsdef{xpg@save@chaptermark@format}{%
- \let\chaptermarkformat\xpg@save@chaptermark@format%
- }{}%
- }{%
- \ifcsdef{chaptermark}{%
+ \@ifundefined{chaptermarkformat}{%
+ \@ifundefined{chaptermark}{}{%
% With memoir and standard classes
- \ifcsdef{xpg@save@chaptermark@format}{%
+ \@ifundefined{xpg@save@chaptermark@format}{}{%
\let\chaptermark\xpg@save@chaptermark@format%
- }{}%
- }{}% (end \ifdefined\chaptermark)
- }% (end \ifdefined\chapterformat)
+ }%
+ }% (end \ifdefined\chaptermark)
+ }{%
+ % With KOMA
+ \@ifundefined{xpg@save@chaptermark@format}{}{%
+ \let\chaptermarkformat\xpg@save@chaptermark@format%
+ }%
+ }% (end \ifdefined\chaptermarkformat)
}
% 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%
@@ -368,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 ee335e8b4dd..b6f49d2b33a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-hy.ldf}[polyglossia: module for hy (Armenian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{armenian}
+\InheritGlossFile{armenian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf
index 1652403941d..5affad8c964 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ia.ldf}[polyglossia: module for ia (Interlingua)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{interlingua}
+\InheritGlossFile{interlingua}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf
index 4415bbab088..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.1 -- 2024/03/07)
+% 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 e72a43d5f51..a9f38697584 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-id.ldf}[polyglossia: module for id (Malay)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{malay}
+\InheritGlossFile{malay}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf
index d105dae74c7..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.1 -- 2024/03/07)
+% 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 ed1fc5af650..b1455f6242a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-irish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-irish.ldf
@@ -1,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-irish.ldf}[polyglossia: module for Irish]
% We only provide this gloss for babel compatibility. Since irish is
% a gaelic variety, we use 'gaelic' with variant 'irish' now.
-\xpg@load@master@language{gaelic}
+\InheritGlossFile{gaelic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf
index aed4195b8d1..e5f58354a9c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-is.ldf}[polyglossia: module for is (Icelandic)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{icelandic}
+\InheritGlossFile{icelandic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf
index e3bf7d00df8..92cccf90957 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-it.ldf}[polyglossia: module for it (Italian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{italian}
+\InheritGlossFile{italian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf
index edf9d4f79e9..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-italian.ldf}[polyglossia: module for Italian]
\PolyglossiaSetup{italian}{
@@ -18,24 +18,22 @@
% BCP-47 compliant aliases
\setlanguagealias*{italian}{it}
-
-%%% CHANGES START %%% by Enrico Gregorio
-\define@boolkey{italian}[italian@]{babelshorthands}[true]{}
+\DeclareKeys[polyglossia/gloss/italian]
+ {
+ babelshorthands.if = italian@babelshorthands,
+ babelshorthands.default:n = true,
+ }
% Register default options
-\xpg@initialize@gloss@options{italian}{babelshorthands=false}
+\InitializeGlossOptions{italian}{babelshorthands=false}
\ifsystem@babelshorthands
- \setkeys{italian}{babelshorthands=true}
+ \SetGlossOptions{italian}{babelshorthands=true}
\else
- \setkeys{italian}{babelshorthands=false}
+ \SetGlossOptions{italian}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\italian@shorthands{%
\xpg@activate@shorthands%
@@ -115,7 +113,7 @@
%%% CHANGES START %%% by Enrico Gregorio
\let\xpgit@savedvalues\empty
-\AtEndPreamble{% the user or the class might define different values
+\AddToHook{begindocument/before}{% the user or the class might define different values
\edef\xpgit@savedvalues{%
\clubpenalty=\the\clubpenalty\space
\@clubpenalty=\the\@clubpenalty\space
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf
index 7329e61bdc9..609950fc65c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ja.ldf}[polyglossia: module for ja (Japanese)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{japanese}
+\InheritGlossFile{japanese}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf
index 5d90a303747..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.1 -- 2024/03/07)
+% 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 dc0fb85531e..884d438d8f9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ka.ldf}[polyglossia: module for ka (Georgian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{georgian}
+\InheritGlossFile{georgian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf
index 1ea7dfce332..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.1 -- 2024/03/07)
+%% 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>,
@@ -53,12 +53,20 @@
\def\tmp@western{Western}
\newif\ifkannada@numerals
\kannada@numeralstrue
-
-\define@key{kannada}{numerals}[Kannada]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@western
- \kannada@numeralsfalse
- \fi}
+
+\DeclareKeys[polyglossia/gloss/kannada]
+ {
+ numerals.choice:,
+ numerals / kannada.code =
+ {%
+ \kannada@numeralstrue
+ },
+ numerals / western.code =
+ {%
+ \kannada@numeralsfalse
+ },
+ numerals.default:n = kannada
+ }
\def\captionskannada{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf
index 9c9ec53f328..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-khmer.ldf}[polyglossia: module for Khmer]
\PolyglossiaSetup{khmer}{
@@ -19,18 +19,24 @@
\newif\if@khmer@numerals
\def\tmp@khmer{khmer}
-\define@key{khmer}{numerals}[arabic]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@khmer%
- \@khmer@numeralstrue%
- \SetLanguageKeys{khmer}{bcp47-extension-u=nu-khmr}%
- \else%
- \@khmer@numeralsfalse%
- \SetLanguageKeys{khmer}{bcp47-extension-u=nu-latn}%
- \fi%
-}
-\setkeys{khmer}{numerals}
+\DeclareKeys[polyglossia/gloss/khmer]
+ {
+ numerals.choice:,
+ numerals / khmer.code =
+ {%
+ \@khmer@numeralstrue
+ \SetLanguageKeys{khmer}{bcp47-extension-u=nu-khmr}%
+ },
+ numerals / arabic.code =
+ {%
+ \@khmer@numeralsfalse
+ \SetLanguageKeys{khmer}{bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = arabic
+ }
+
+\SetGlossOptions{khmer}{numerals}
\def\captionskhmer{%
\def\prefacename{អារម្ភកថា}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf
index b37d1706ab6..8780f9607a1 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-km.ldf}[polyglossia: module for km (Khmer)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{khmer}
+\InheritGlossFile{khmer}
\endinput
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 523a68916e4..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kmr-Arab.ldf}[polyglossia: module for kmr-Arab (Kurdish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
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 dfc34ce7ee9..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kmr-Latn.ldf}[polyglossia: module for kmr-Latn (Kurdish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf
index a908ee2d815..08db6b0ca78 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kmr.ldf}[polyglossia: module for kmr (Kurdish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf
index 66c45035a90..04304f4d68c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kn.ldf}[polyglossia: module for kn (Kannada)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kannada}
+\InheritGlossFile{kannada}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf
index bf767b7cda9..69f94cc04bd 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ko.ldf}[polyglossia: module for ko (Korean)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{korean}
+\InheritGlossFile{korean}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf
index 48464c50d25..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-korean.ldf}[polyglossia: module for Korean]
@@ -18,40 +18,48 @@
% BCP-47 compliant aliases
\setlanguagealias*{korean}{ko}
-% variant : plain (0), classic (1), or modern (2)
-\define@choicekey{korean}{variant}[\xpg@val\xpg@nr]{plain,classic,modern}[plain]{%
- \let\xpg@korean@variant\xpg@nr
-}
-% captions : hangul (0) or hanja (1)
-\define@choicekey{korean}{captions}[\xpg@val\xpg@nr]{hangul,hanja}[hangul]{%
- \let\xpg@korean@captions\xpg@nr
-}
-% swapstrings: all (0), headings (1), headers (2), or none (3)
\newif\if@korean@swapheadings
\newif\if@korean@swapheaders
-\define@choicekey*+{korean}{swapstrings}[\xpg@val\xpg@nr]{all,headings,headers,none}[all]{%
- \ifcase\xpg@nr\relax
- % all:
- \@korean@swapheadingstrue%
- \@korean@swapheaderstrue%
- \or
- % headings:
- \@korean@swapheadingstrue%
- \@korean@swapheadersfalse%
- \or
- % headers:
- \@korean@swapheadingsfalse%
- \@korean@swapheaderstrue%
- \or
- % none:
- \@korean@swapheadingsfalse%
- \@korean@swapheadersfalse%
- \fi
- \xpg@info{Option: Korean, swapstrings=\xpg@val}%
-}{\xpg@warning{Unknown Korean swapstrings value `#1'}}
+
+\DeclareKeys[polyglossia/gloss/korean]
+ {
+ variant.choices:nn = { plain, classic, modern }
+ {%
+ \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}%
+ },
+ captions.default:n = hangul,
+ swapstrings.choice:,
+ swapstrings / all.code =
+ {%
+ \@korean@swapheadingstrue
+ \@korean@swapheaderstrue
+ },
+ swapstrings / headings.code =
+ {%
+ \@korean@swapheadingstrue
+ \@korean@swapheadersfalse
+ },
+ swapstrings / headers.code =
+ {%
+ \@korean@swapheadingsfalse
+ \@korean@swapheaderstrue
+ },
+ swapstrings / none.code =
+ {%
+ \@korean@swapheadingsfalse
+ \@korean@swapheadersfalse
+ },
+ swapstrings.default:n = all,
+ swapstrings/unknown.code = \xpg@warning{Unknown Korean swapstrings value `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{korean}{variant=plain,swapstrings=all,captions=hangul}
+\InitializeGlossOptions{korean}{variant=plain,swapstrings=all,captions=hangul}
\def\captionskorean{%
\ifcase\xpg@korean@captions\relax
@@ -113,60 +121,48 @@
% change chapter and part headings
\if@korean@swapheadings
% With titlesec
- \ifcsdef{titleformat}{%
- \ifcsdef{NR@part}{% Hyperref (nameref)
- \let\xpg@save@part@format\NR@part
- \patchcmd{\NR@part}%
- {\partname\nobreakspace\thepart}%
- {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
- {}%
- {\xpg@warning{Failed to patch part for Korean}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part
- \patchcmd{\@part}%
+ \@ifundefined{titleformat}{%
+ % With KOMA
+ \@ifundefined{sectionformat}{%
+ % With memoir
+ \@ifundefined{@memptsize}{%
+ % With standard classes
+ \@ifundefined{@makechapterhead}{}{%
+ \let\xpg@save@chap@format\@makechapterhead
+ \patchcmd{\@makechapterhead}%
+ {\@chapapp\space \thechapter}%
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \appendixname\space \thechapter
+ \else
+ \koreanTHEname\space \thechapter\space \@chapapp
+ \fi
+ }%
+ {}%
+ {\xpg@warning{Failed to patch chapter for Korean}}%
+ }%
+ \@ifundefined{NR@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \ifpatchable{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\let\xpg@save@part@format\@part
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
+ {}%
+ {\@ifundefined{part}{}{\xpg@warning{Failed to patch part for Korean}}}}%
+ {}%
+ }% (end \ifdefined\@part)
+ }{% Hyperref (nameref)
+ \let\xpg@save@part@format\NR@part
+ \patchcmd{\NR@part}%
{\partname\nobreakspace\thepart}%
{\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
{}%
{\xpg@warning{Failed to patch part for Korean}}%
- }{}%
- }
- \ifcsdef{chapter}{%
- \titleformat\chapter[display]%
- {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}%
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \appendixname\space \thechapter
- \else
- \koreanTHEname\space \thechapter\space \@chapapp
- \fi
- }{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}%
- }{}%
- }{% (not \ifdefined\titleformat)
- % With KOMA
- \ifcsdef{sectionformat}{%
- \ifcsdef{partformat}{%
- \let\xpg@save@part@format\partformat
- \renewcommand*{\partformat}{\koreanTHEname~\thepart~\partname}%
- }{}%
- \ifcsdef{chapterformat}{%
- \let\xpg@save@chap@format\chapterformat
- \renewcommand*{\chapterformat}{\mbox{%
- \IfChapterUsesPrefixLine
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \chapapp\nobreakspace \thechapter\autodot
- \else
- \koreanTHEname\nobreakspace \thechapter\nobreakspace \chapapp\autodot
- \fi
- }%
- {\thechapter\autodot\enskip}%
- }}%
- }{}%
- }{% (not \ifdefined\sectionformat)
- % With memoir
- \ifcsdef{@memptsize}{%
- \ifcsdef{@makechapterhead}{%
+ }% (end not hyperref)
+ }{% (\ifdefined\@memptsize)
+ \@ifundefined{@makechapterhead}{}{%
\let\xpg@save@chap@format\@makechapterhead
\patchcmd{\@makechapterhead}%
{\printchaptername \chapternamenum \printchapternum}%
@@ -184,19 +180,9 @@
\ifpatchable\printchaptername\@chapapp
{\chapnamefont\koreanTHEname\chapternamenum}{}}%
\fi
- }{}%
- \ifcsdef{NR@part}{% Hyperref (nameref)
- \let\xpg@save@part@format\NR@part
- \patchcmd{\NR@part}%
- {\printpartname \partnamenum \printpartnum}%
- {\printkoreanpartthe \printpartnum\partnamenum \printpartname}%
- {}%
- {\xpg@warning{Failed to patch part for Korean}}%
- \ifdefined\printkoreanpartthe\else
- \def\printkoreanpartthe{\partnamefont\koreanTHEname\partnamenum}%
- \fi
- }{% not hyperref
- \ifcsdef{@part}{%
+ }%
+ \@ifundefined{NR@part}{% not hyperref
+ \@ifundefined{@part}{}{%
\let\xpg@save@part@format\@part
\patchcmd{\@part}%
{\printpartname \partnamenum \printpartnum}%
@@ -206,84 +192,77 @@
\ifdefined\printkoreanpartthe\else
\def\printkoreanpartthe{\partnamefont\koreanTHEname\partnamenum}%
\fi
- }{}%
- }%
- }{% (not \ifdefined\@memptsize)
- % With standard classes
- \ifcsdef{@makechapterhead}{%
- \let\xpg@save@chap@format\@makechapterhead
- \patchcmd{\@makechapterhead}%
- {\@chapapp\space \thechapter}%
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \appendixname\space \thechapter
- \else
- \koreanTHEname\space \thechapter\space \@chapapp
- \fi
- }%
- {}%
- {\xpg@warning{Failed to patch chapter for Korean}}%
- }{}%
- \ifcsdef{NR@part}{% Hyperref (nameref)
+ }%
+ }{% Hyperref (nameref)
\let\xpg@save@part@format\NR@part
\patchcmd{\NR@part}%
- {\partname\nobreakspace\thepart}%
- {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
+ {\printpartname \partnamenum \printpartnum}%
+ {\printkoreanpartthe \printpartnum\partnamenum \printpartname}%
{}%
{\xpg@warning{Failed to patch part for Korean}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \ifpatchable{\@part}%
- {\partname\nobreakspace\thepart}%
- {\let\xpg@save@part@format\@part
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
- {}%
- {\ifcsdef{part}{\xpg@warning{Failed to patch part for Korean}}{}}}%
- {}%
- }{}% (end \ifdefined\@part)
- }% (end not hyperref)
+ \ifdefined\printkoreanpartthe\else
+ \def\printkoreanpartthe{\partnamefont\koreanTHEname\partnamenum}%
+ \fi
+ }%
}% (end \ifdefined\@memptsize)
+ }{% (\ifdefined\sectionformat)
+ \@ifundefined{partformat}{}{%
+ \let\xpg@save@part@format\partformat
+ \renewcommand*{\partformat}{\koreanTHEname~\thepart~\partname}%
+ }%
+ \@ifundefined{chapterformat}{}{%
+ \let\xpg@save@chap@format\chapterformat
+ \renewcommand*{\chapterformat}{\mbox{%
+ \IfChapterUsesPrefixLine
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \chapapp\nobreakspace \thechapter\autodot
+ \else
+ \koreanTHEname\nobreakspace \thechapter\nobreakspace \chapapp\autodot
+ \fi
+ }%
+ {\thechapter\autodot\enskip}%
+ }}%
+ }%
}% (end \ifdefined\sectionformat)
+ }{% (\ifdefined\titleformat)
+ \@ifundefined{NR@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \let\xpg@save@part@format\@part
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Korean}}%
+ }%
+ }{% Hyperref (nameref)
+ \let\xpg@save@part@format\NR@part
+ \patchcmd{\NR@part}%
+ {\partname\nobreakspace\thepart}%
+ {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Korean}}%
+ }%
+ \@ifundefined{chapter}{}{%
+ \titleformat\chapter[display]%
+ {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}%
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \appendixname\space \thechapter
+ \else
+ \koreanTHEname\space \thechapter\space \@chapapp
+ \fi
+ }{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}%
+ }%
}% (end \ifdefined\titleformat)
\fi % (end \if@korean@swapheadings)
%
% Change running headers
\if@korean@swapheaders
- \ifcsdef{chapterformat}{%
- % With KOMA
- \let\xpg@save@chaptermark@format\chaptermarkformat
- \renewcommand*\chaptermarkformat{%
- \IfChapterUsesPrefixLine
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \chapapp\ \thechapter\autodot
- \else
- \koreanTHEname\ \thechapter\ \chapapp\autodot
- \fi
- }%
- {\thechapter\autodot}%
- \enskip
- }%
- }{% (not \ifdefined\chapterformat)
- \ifcsdef{@memptsize}{%
- % With memoir
- \let\xpg@save@chaptermark@format\chaptermark
- \patchcmd{\chaptermark}%
- {\@chapapp\ \@nameuse{thechapter}}%
- {%
- \ifx\@chapapp\korean@appendix@chapapp
- \appendixname\ \@nameuse{thechapter}%
- \else
- \koreanTHEname\ \@nameuse{thechapter}\ \@chapapp
- \fi
- }%
- {}%
- {\xpg@warning{Failed to patch chaptermark for Korean}}%
- }{% (not \ifdefined\@memptsize)
+ \@ifundefined{chapterformat}{%
+ \@ifundefined{@memptsize}{%
% With standard classes
- \ifcsdef{chaptermark}{%
+ \@ifundefined{chaptermark}{}{%
\ifpatchable{\chaptermark}%
{\@chapapp\ \thechapter}%
{\let\xpg@save@chaptermark@format\chaptermark
@@ -299,65 +278,94 @@
{}%
{\xpg@warning{Failed to patch chaptermark for Korean}}}%
{}%
- }{}% (end \ifdefined\chaptermark)
+ }% (end \ifdefined\chaptermark)
+ }{% (\ifdefined\@memptsize)
+ % With memoir
+ \let\xpg@save@chaptermark@format\chaptermark
+ \patchcmd{\chaptermark}%
+ {\@chapapp\ \@nameuse{thechapter}}%
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \appendixname\ \@nameuse{thechapter}%
+ \else
+ \koreanTHEname\ \@nameuse{thechapter}\ \@chapapp
+ \fi
+ }%
+ {}%
+ {\xpg@warning{Failed to patch chaptermark for Korean}}%
}% (end \ifdefined\@memptsize)
+ }{% (\ifdefined\chapterformat)
+ % With KOMA
+ \let\xpg@save@chaptermark@format\chaptermarkformat
+ \renewcommand*\chaptermarkformat{%
+ \IfChapterUsesPrefixLine
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \chapapp\ \thechapter\autodot
+ \else
+ \koreanTHEname\ \thechapter\ \chapapp\autodot
+ \fi
+ }%
+ {\thechapter\autodot}%
+ \enskip
+ }%
}% (end \ifdefined\chapterformat)
\fi % (end \if@korean@swapheaders)
}
\def\nokorean@headingsformat{%
% Reset chapter and part heading
- \ifcsdef{titleformat}{%
+ \@ifundefined{titleformat}{%
+ \@ifundefined{sectionformat}{%
+ % With memoir and standard classes
+ \@ifundefined{xpg@save@part@format}{}{%
+ \@ifundefined{NR@part}{%
+ \let\@part\xpg@save@part@format
+ }{%
+ \let\NR@part\xpg@save@part@format
+ }%
+ }%
+ \@ifundefined{xpg@save@chap@format}{}{%
+ \let\@makechapterhead\xpg@save@chap@format
+ }%
+ }{%
+ % With KOMA
+ \@ifundefined{xpg@save@part@format}{}{%
+ \let\partformat\xpg@save@part@format
+ }%
+ \@ifundefined{xpg@save@chap@format}{}{%
+ \let\chapterformat\xpg@save@chap@format
+ }%
+ }% (end \ifdefined\sectionformat)
+ }{% (\ifdefined\titleformat)
% With titlesec
- \ifcsdef{xpg@save@part@format}{%
- \ifcsdef{NR@part}{%
- \let\NR@part\xpg@save@part@format
- }{%
+ \@ifundefined{xpg@save@part@format}{}{%
+ \@ifundefined{NR@part}{%
\let\@part\xpg@save@part@format
+ }{%
+ \let\NR@part\xpg@save@part@format
}%
- }{}%
- \ifcsdef{chapter}{%
+ }%
+ \@ifundefined{chapter}{}{%
\titleformat\chapter[display]%
{\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}%
{\@chapapp\space\thechapter}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}%
- }{}%
- }{% (not \ifdefined\titleformat)
- \ifcsdef{sectionformat}{%
- % With KOMA
- \ifcsdef{xpg@save@part@format}{%
- \let\partformat\xpg@save@part@format
- }{}%
- \ifcsdef{xpg@save@chap@format}{%
- \let\chapterformat\xpg@save@chap@format
- }{}%
- }{%
- % With memoir and standard classes
- \ifcsdef{xpg@save@part@format}{%
- \ifcsdef{NR@part}{%
- \let\NR@part\xpg@save@part@format
- }{%
- \let\@part\xpg@save@part@format
- }%
- }{}%
- \ifcsdef{xpg@save@chap@format}{%
- \let\@makechapterhead\xpg@save@chap@format
- }{}%
- }% (end \ifdefined\sectionformat)
+ }%
}% (end \ifdefined\titleformat)
%
% Reset headers
- \ifcsdef{chaptermarkformat}{%
- % With KOMA
- \ifcsdef{xpg@save@chaptermark@format}{%
- \let\chaptermarkformat\xpg@save@chaptermark@format
- }{}%
- }{%
- \ifcsdef{chaptermark}{%
+ \@ifundefined{chaptermarkformat}{%
+ \@ifundefined{chaptermark}{}{%
% With memoir and standard classes
- \ifcsdef{xpg@save@chaptermark@format}{%
+ \@ifundefined{xpg@save@chaptermark@format}{}{%
\let\chaptermark\xpg@save@chaptermark@format
- }{}%
- }{}% (end \ifdefined\chaptermark)
+ }%
+ }% (end \ifdefined\chaptermark)
+ }{%
+ % With KOMA
+ \@ifundefined{xpg@save@chaptermark@format}{}{%
+ \let\chaptermarkformat\xpg@save@chaptermark@format
+ }%
}% (end \ifdefined\chapterformat)
}
@@ -421,13 +429,18 @@
\XeTeXinterchartokenstate\z@
\XeTeXlinebreakpenalty\z@
\XeTeXlinebreakskip\z@skip
- \XeTeXlinebreaklocale "en"
+ \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@korean\xpg@korean@variant\relax}
+ \def\inlineextras@korean{\xpg@attr@cjkspacing\xpg@korean@variant\relax}
\def\noextras@korean{%
- \unsetattribute\xpg@attr@korean
+ \unsetattribute\xpg@attr@cjkspacing
\noextras@korean@common
}
\fi
@@ -447,7 +460,7 @@
\let\newattribute\newluatexattribute
\let\unsetattribute\unsetluatexattribute
\fi
-\newattribute\xpg@attr@korean
+\newattribute\xpg@attr@cjkspacing
\newattribute\xpg@attr@autojosa
% user commands for Josa
% Josa : particles in Korean grammar that immediately follow a noun or pronoun.
@@ -468,7 +481,7 @@
\protected\def\로{\으 로}
\def\xpg@reset@josa {\global\let\xpg@josa@zwang\z@}\xpg@reset@josa
% load lua file for korean
-\directlua{ require "polyglossia-korean" }
+\directlua{ require "polyglossia-cjk-spacing" }
\endinput\fi
% XeTeX
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 339368062c8..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ku-Arab.ldf}[polyglossia: module for ku-Arab (Kurdish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
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 31f0b817406..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ku-Latn.ldf}[polyglossia: module for ku-Latn (Kurdish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf
index 59805fb6261..2f8ccbff8b3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ku.ldf}[polyglossia: module for ku (Kurdish)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf
index e114fd118aa..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% Created on September 1, 2019
% Last updated on May 17, 2020
@@ -41,36 +41,9 @@
\newif\if@kurdish@kurmanji
\def\kurdish@variant{sorani}
-\define@choicekey*+{kurdish}{variant}[\xpg@val\xpg@nr]{sorani,kurmanji}[sorani]{%
- \ifcase\xpg@nr\relax
- % sorani:
- \def\kurdish@variant{sorani}%
- \@kurdish@kurmanjifalse%
- \or
- % kurmanji:
- \def\kurdish@variant{kurmanji}%
- \@kurdish@kurmanjitrue%
- \fi
- \kurdish@set@variety%
- \xpg@info{Option: kurdish, variant=\xpg@val}%
-}{\xpg@warning{Unknown Kurdish variant `#1'}}
\newif\if@kurdish@latin
\newif\if@kurdish@arabic
-\define@choicekey*+{kurdish}{script}[\xpg@val\xpg@nr]{arabic,latin}{%
- \ifcase\xpg@nr\relax
- % arabic:
- \@kurdish@latinfalse%
- \@kurdish@arabictrue%
- \or
- % latin:
- \@kurdish@latintrue%
- \@kurdish@arabicfalse%
- \fi
- \kurdish@set@variety%
- \xpg@info{Option: kurdish, script=\xpg@val}%
-}{\xpg@warning{Unknown Kurdish script `#1'}}
-
\newif\if@western@numerals
\newif\if@force@western@numerals
@@ -87,7 +60,7 @@
\SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurdish,bcp47=ckb-Arab,bcp47-language=ckb,bcp47-script=Arab,bcp47-casing=ckb-Arab}%
\fi
\def\kurdish@script{latin}
- \xpg@fontsetup@latin{kurdish}%
+ \SetupLatinPolyglossiaFont{kurdish}%
\else
\if@kurdish@arabic% arabic explicitly set
\if@kurdish@kurmanji
@@ -97,61 +70,84 @@
\else
\SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurdish,bcp47=ckb-Arab,bcp47-language=ckb,bcp47-script=Arab,bcp47-casing=ckb-Arab}%
\fi
- \xpg@fontsetup@nonlatin{kurdish}%
+ \SetupNonLatinPolyglossiaFont{kurdish}%
\else% sorani=arabic, kurmanji=latin
\if@kurdish@kurmanji
\@western@numeralstrue%
\SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurmanji,bcp47=kmr-Latn,bcp47-language=kmr,bcp47-script=Latn,bcp47-casing=kmr-Latn}%
- \xpg@fontsetup@latin{kurdish}%
+ \SetupLatinPolyglossiaFont{kurdish}%
\def\kurdish@script{latin}
\else
\SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurdish,bcp47=ckb-Arab,bcp47-language=ckb,bcp47-script=Arab,bcp47-casing=ckb-Arab}%
- \xpg@fontsetup@nonlatin{kurdish}%
+ \SetupNonLatinPolyglossiaFont{kurdish}%
\fi
\fi
\fi
}
\newif\if@western@numerals
-\define@choicekey*+{kurdish}{numerals}[\xpg@val\xpg@nr]{eastern,western}[eastern]{%
- \ifcase\xpg@nr\relax
- % eastern:
- \@western@numeralsfalse%
- \or
- % western:
- \@western@numeralstrue%
- \@force@western@numeralstrue%
- \fi
- \xpg@info{Option: Kurdish, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Kurdish numerals option `#1'}}
\newif\ifkurdish@customsep\kurdish@customsepfalse
\def\xpg@sepmark{}
-\define@key{kurdish}{sectionsep}[.]{%
- \kurdish@customseptrue%
- \gdef\xpg@sepmark{#1}%
-}
-
-%this is needed for \abjad in arabicnumbers.sty
-\define@boolkey{kurdish}[kurdish@]{abjadjimnotail}[true]{%
- \ifkurdish@abjadjimnotail
- \abjad@jim@notailtrue%
- \else
- \abjad@jim@notailfalse
- \fi%
-}
-
-% NOT YET USED
-\define@key{kurdish}{locale}[default]{%
- \def\@kurdish@locale{#1}}
%TODO add option for CALENDAR
+\DeclareKeys[polyglossia/gloss/kurdish]
+ {
+ variant.choice:,
+ variant / sorani.code =
+ {%
+ \def\kurdish@variant{sorani}%
+ \@kurdish@kurmanjifalse
+ \kurdish@set@variety
+ },
+ variant / kurmanji.code =
+ {%
+ \def\kurdish@variant{kurmanji}%
+ \@kurdish@kurmanjitrue
+ \kurdish@set@variety
+ },
+ variant.default:n = sorani,
+ variant/unknown.code = \xpg@warning{Unknown Kurdish variant `#1'},
+ script.choice:,
+ script / arabic.code =
+ {%
+ \@kurdish@latinfalse
+ \@kurdish@arabictrue
+ \kurdish@set@variety
+ },
+ script / latin.code =
+ {%
+ \@kurdish@latintrue
+ \@kurdish@arabicfalse
+ \kurdish@set@variety
+ },
+ script.default:n = sorani,
+ script/unknown.code = \xpg@warning{Unknown Kurdish script `#1'},
+ numerals.choice:,
+ numerals / eastern.code =
+ {%
+ \@western@numeralsfalse
+ },
+ numerals / western.code =
+ {%
+ \@western@numeralstrue
+ \@force@western@numeralstrue
+ },
+ numerals.default:n = eastern,
+ numerals/unknown.code = \xpg@warning{Unknown Kurdish numerals value `#1'},
+ sectionsep.code = \gdef\xpg@sepmark{#1}\kurdish@customseptrue,
+ sectionsep.default:n = .,
+ abjadjimnotail.if = abjad@jim@notail,
+ abjadjimnotail.default:n = true,
+ locale.store = \@kurdish@locale
+ }
+
% Register default options
-\xpg@initialize@gloss@options{kurdish}{variant=sorani,locale=default,script=arabic,abjadjimnotail=false,numerals=eastern}
+\InitializeGlossOptions{kurdish}{variant=sorani,locale=default,script=arabic,abjadjimnotail=false,numerals=eastern}
\def\kurdish@language{%
- \polyglossia@setup@language@patterns{\kurdish@pattern}%
+ \SetupPolyglossiaLangPatterns{\kurdish@pattern}%
}%
\def\kurdishNativemonth#1{\ifcase#1%
@@ -404,16 +400,16 @@
}
\def\nokurdish@xetex@capsformat{%
- \ifcsdef{xpg@save@sepmark}{%
+ \ifcsname xpg@save@sepmark\endcsname%
\SepMark{\xpg@save@sepmark}
- }{}%
+ \fi%
}
\def\kurdish@luatex@capsformat{%
%
% change chapter and part headings
\ifkurdish@customsep
- \ifcsdef{chapter}{%
+ \ifcsname chapter\endcsname%
\let\xpg@save@thesection\thesection%
\renewcommand*\thesection{\thechapter\xpg@sepmark\@arabic\c@section}
\let\xpg@save@theequation\theequation%
@@ -425,7 +421,7 @@
\let\xpg@save@thetable\thetable%
\renewcommand*\thetable{%
\ifnum\c@chapter>\z@\thechapter\xpg@sepmark\fi\@arabic\c@table}
- }{}
+ \fi%
\let\xpg@save@thesubsection\thesubsection%
\renewcommand\thesubsection
{\thesection\xpg@sepmark\@arabic\c@subsection}
@@ -440,30 +436,30 @@
}
\def\nokurdish@luatex@capsformat{%
- \ifcsdef{xpg@save@thesection}{%
+ \ifcsname xpg@save@thesection\endcsname%
\let\thesection\xpg@save@thesection%
- }{}%
- \ifcsdef{xpg@save@theequation}{%
+ \fi%
+ \ifcsname xpg@save@theequation\endcsname%
\let\theequation\xpg@save@theequation%
- }{}%
- \ifcsdef{xpg@save@thefigure}{%
+ \fi%
+ \ifcsname xpg@save@thefigure\endcsname%
\let\thefigure\xpg@save@thefigure%
- }{}%
- \ifcsdef{xpg@save@thetable}{%
+ \fi%
+ \ifcsname xpg@save@thetable\endcsname%
\let\thetable\xpg@save@thetable%
- }{}%
- \ifcsdef{xpg@save@thesubsection}{%
+ \fi%
+ \ifcsname xpg@save@thesubsection\endcsname%
\let\thesubsection\xpg@save@thesubsection%
- \ifcsdef{xpg@save@thesubsubsection}{%
+ \ifcsname xpg@save@thesubsubsection\endcsname%
\let\thesubsubsection\xpg@save@thesubsubsection%
- }{}%
- }{}%
- \ifcsdef{xpg@save@theparagraph}{%
+ \fi%
+ \fi%
+ \ifcsname xpg@save@theparagraph\endcsname%
\let\theparagraph\xpg@save@theparagraph%
- }{}%
- \ifcsdef{xpg@save@thesubparagraph}{%
+ \fi%
+ \ifcsname xpg@save@thesubparagraph\endcsname%
\let\thesubparagraph\xpg@save@thesubparagraph%
- }{}%
+ \fi%
}
\def\blockextras@kurdish{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf
index db4eabba41d..622cec28a9b 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-kurmanji.ldf}[polyglossia: module for Kurmanji Kurdish]
% We provide this gloss for babel compatibility.
-\xpg@load@master@language{kurdish}
+\InheritGlossFile{kurdish}
\endinput
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 abb9bc4bf2f..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-la-xclassic.ldf}[polyglossia: module for la-xclassic (Latin)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{latin}
+\InheritGlossFile{latin}
\endinput
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 b00755c8ace..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-la-xecclesiastic.ldf}[polyglossia: module for la-xecclesiastic (Latin)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{latin}
+\InheritGlossFile{latin}
\endinput
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 0d75aaf005a..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-la-xmedieval.ldf}[polyglossia: module for la-xmedieval (Latin)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{latin}
+\InheritGlossFile{latin}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf
index c1e3e26ece0..99600faf727 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-la.ldf}[polyglossia: module for la (Latin)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{latin}
+\InheritGlossFile{latin}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf
index 4d979bb93c1..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lao.ldf}[polyglossia: module for Lao]
@@ -22,14 +22,23 @@
\newif\if@lao@numerals
\def\tmp@lao{lao}
-\define@key{lao}{numerals}[arabic]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@lao\@lao@numeralstrue\else
- \@lao@numeralsfalse\fi
-}
+
+\DeclareKeys[polyglossia/gloss/lao]
+ {
+ numerals.choice:,
+ numerals / arabic.code =
+ {%
+ \@lao@numeralsfalse
+ },
+ numerals / lao.code =
+ {%
+ \@lao@numeralstrue
+ },
+ numerals.default:n = arabic
+ }
% Register default options
-\xpg@initialize@gloss@options{lao}{numerals=arabic}
+\InitializeGlossOptions{lao}{numerals=arabic}
% Translations provided by Brian Wilson <bountonw at gmail.com>
\def\captionslao{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latex.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latex.ldf
index 18d83e92114..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.1 -- 2024/03/07)
+% 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 2fc092c0638..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin]
@@ -33,6 +33,9 @@
\bool_new:N \l_polyglossia_latin_use_v_bool
\bool_new:N \l_polyglossia_latin_use_ligatures_bool
\bool_new:N \l_polyglossia_latin_capitalize_month_bool
+\bool_new:N \l_polyglossia_latin_babelshorthands_bool
+\bool_new:N \l_polyglossia_latin_prosodic_shorthands_bool
+\bool_new:N \l_polyglossia_latin_ecclesiastic_footnotes_bool
\cs_new:Npn \polyglossia_latin_classical_character_codes:
{
@@ -68,11 +71,11 @@
\cs_new:Npn \polyglossia_latin_use_modern_patterns:
{
- \xpg@ifdefined {latin}
+ \IfLanguageDefinedTF {latin}
{
\def \latin@language
{
- \polyglossia@setup@language@patterns {latin}
+ \SetupPolyglossiaLangPatterns {latin}
\str_case:Vn \l_polyglossia_latin_variant_str
{
{classic} { \adddialect \l@classiclatin \l@latin }
@@ -96,11 +99,11 @@
\cs_new:Npn \polyglossia_latin_set_patterns:n #1
% #1 may be "classiclatin" or "liturgicallatin"
{
- \xpg@ifdefined {#1}
+ \IfLanguageDefinedTF {#1}
{
\def \latin@language
{
- \polyglossia@setup@language@patterns {#1}
+ \SetupPolyglossiaLangPatterns {#1}
\str_case:Vn \l_polyglossia_latin_variant_str
{
{classic} {
@@ -316,7 +319,8 @@
% Save original footnote definition
% Do this at the end of the preamble to catch other
% packages' footnote changes (#391)
-\AtEndPreamble{%
+\hook_gput_code:nnn { begindocument / before } {.}
+{
\cs_if_exist:NT \@makefntext
{
\cs_set_eq:NN \polyglossia_latin_original_footnote:n \@makefntext
@@ -340,40 +344,27 @@
\cs_new:Npn \polyglossia_latin_apply_footnote_option:
{
- \str_if_eq:VnTF \xpg@main@language {latin}
+ \IfMainLanguageTF {latin}
{
\cs_if_exist:NT \@makefntext
{
- \iflatin@ecclesiasticfootnotes
+ \bool_if:NTF \l_polyglossia_latin_ecclesiastic_footnotes_bool
+ {
\let \@makefntext \polyglossia_latin_variant_footnote:n
- \else
+ }
+ {
\let \@makefntext \polyglossia_latin_original_footnote:n
- \fi
+ }
}
}
{
- \iflatin@ecclesiasticfootnotes
- \msg_warning:nn {polyglossia} {latin / ineffective footnote option}
- \fi
- }
- }
-
-\define@boolkey {latin} [latin@] {ecclesiasticfootnotes} [true]
- {
- \token_if_eq_meaning:NNTF \@onlypreamble \@notprerr
- {
- % within the document
- \polyglossia_latin_apply_footnote_option:
- }
- {
- % within the preamble
- % The application of the option has to be postponed as the main
- % language may be undefined when the option is called.
- \AtBeginDocument { \polyglossia_latin_apply_footnote_option: }
+ \bool_if:NT \l_polyglossia_latin_ecclesiastic_footnotes_bool
+ {
+ \msg_warning:nn {polyglossia} {latin / ineffective footnote option}
+ }
}
}
-
%%%%% Language variants: classic, medieval, modern, and ecclesiastic
\str_new:N \l_polyglossia_latin_variant_str
@@ -436,58 +427,6 @@
\polyglossia_latin_use_modern_patterns:
}
-\define@key{latin}{variant}
- {
- \str_case:nnF {#1}
- {
- {classic}
- {
- \msg_info:nnn {polyglossia} {latin / language variant} {classic}
- \polyglossia_latin_classic_settings:
- }
- {medieval}
- {
- \msg_info:nnn {polyglossia} {latin / language variant} {medieval}
- \polyglossia_latin_medieval_settings:
- }
- {modern}
- {
- \msg_info:nnn {polyglossia} {latin / language variant} {modern}
- \polyglossia_latin_modern_settings:
- }
- {ecclesiastic}
- {
- \msg_info:nnn {polyglossia} {latin / language variant} {ecclesiastic}
- \polyglossia_latin_ecclesiastic_settings:
- }
- }
- {
- \msg_warning:nnn {polyglossia} {latin / illegal language variant} {#1}
- }
- }
-
-
-%%%%% Boolean options concerning spelling
-
-\define@boolkey{latin}[latin@]{usej}[true]
- {
- \iflatin@usej
- \bool_set_true:N \l_polyglossia_latin_use_j_bool
- \else
- \bool_set_false:N \l_polyglossia_latin_use_j_bool
- \fi
- }
-
-\define@boolkey{latin}[latin@]{capitalizemonth}[true]
- {
- \iflatin@capitalizemonth
- \bool_set_true:N \l_polyglossia_latin_capitalize_month_bool
- \else
- \bool_set_false:N \l_polyglossia_latin_capitalize_month_bool
- \fi
- }
-
-
%%%%% Hyphenation variants: classic, liturgical, and modern
\msg_new:nnn {polyglossia} {latin / hyphenation variant}
@@ -500,23 +439,6 @@
The~Latin~hyphenation~variant~"#1"~is~undefined~\msg_line_context:.
}
-\define@key {latin} {hyphenation}
- {
- \str_case:nnTF {#1}
- {
- {classic} { \polyglossia_latin_set_patterns:n {classiclatin} }
- {liturgical} { \polyglossia_latin_set_patterns:n {liturgicallatin} }
- {modern} { \polyglossia_latin_use_modern_patterns: }
- }
- {
- \msg_info:nnn {polyglossia} {latin / hyphenation variant} {#1}
- }
- {
- \msg_warning:nnn {polyglossia} {latin / illegal hyphenation variant} {#1}
- }
- }
-
-
%%%%% Latin captions and date
\def \captionslatin
@@ -588,30 +510,89 @@
}
}
-
-%%%%% Latin shorthands
-
-\define@boolkey{latin}[latin@]{babelshorthands}[true]
- {
- }
-
-\define@boolkey{latin}[latin@]{prosodicshorthands}[true]
+\DeclareKeys[polyglossia/gloss/latin]
{
+ babelshorthands.bool_set:N = \l_polyglossia_latin_babelshorthands_bool,
+ babelshorthands.default:n = true,
+ prosodicshorthands.bool_set:N = \l_polyglossia_latin_prosodic_shorthands_bool,
+ prosodicshorthands.default:n = true,
+ usej.bool_set:N = \l_polyglossia_latin_use_j_bool,
+ capitalizemonth.bool_set:N = \l_polyglossia_latin_capitalize_month_bool,
+ hyphenation.code =
+ \str_case:nnTF {#1}
+ {
+ {classic} { \polyglossia_latin_set_patterns:n {classiclatin} }
+ {liturgical} { \polyglossia_latin_set_patterns:n {liturgicallatin} }
+ {modern} { \polyglossia_latin_use_modern_patterns: }
+ }
+ {
+ \msg_info:nnn {polyglossia} {latin / hyphenation variant} {#1}
+ }
+ {
+ \msg_warning:nnn {polyglossia} {latin / illegal hyphenation variant} {#1}
+ },
+ variant.code =
+ \str_case:nnF {#1}
+ {
+ {classic}
+ {
+ \msg_info:nnn {polyglossia} {latin / language variant} {classic}
+ \polyglossia_latin_classic_settings:
+ }
+ {medieval}
+ {
+ \msg_info:nnn {polyglossia} {latin / language variant} {medieval}
+ \polyglossia_latin_medieval_settings:
+ }
+ {modern}
+ {
+ \msg_info:nnn {polyglossia} {latin / language variant} {modern}
+ \polyglossia_latin_modern_settings:
+ }
+ {ecclesiastic}
+ {
+ \msg_info:nnn {polyglossia} {latin / language variant} {ecclesiastic}
+ \polyglossia_latin_ecclesiastic_settings:
+ }
+ }
+ {
+ \msg_warning:nnn {polyglossia} {latin / illegal language variant} {#1}
+ },
+ ecclesiasticfootnotes.choices:nn = { true, false }
+ {
+ \ifcase\UseName{l_keys_choice_int}\or
+ \bool_set_true:N \l_polyglossia_latin_ecclesiastic_footnotes_bool
+ \else
+ \bool_set_false:N \l_polyglossia_latin_ecclesiastic_footnotes_bool
+ \fi
+ \xpg_if_in_preamble:TF
+ {
+ % within the preamble
+ % The application of the option has to be postponed as the main
+ % language may be undefined when the option is called.
+ \AtBeginDocument { \polyglossia_latin_apply_footnote_option: }
+ }
+ {
+ % within the document
+ \polyglossia_latin_apply_footnote_option:
+ }
+ },
+ ecclesiasticfootnotes.default:n = true
}
% Register default options
-\xpg@initialize@gloss@options{latin}{variant=modern,hyphenation=modern,babelshorthands=false,
+\InitializeGlossOptions{latin}{variant=modern,hyphenation=modern,babelshorthands=false,
prosodicshorthands=false,ecclesiasticfootnotes=false,
usej=false,capitalizemonth=true}
\ifsystem@babelshorthands
- \setkeys{latin}{babelshorthands=true}
+ \SetGlossOptions{latin}{babelshorthands=true}
\else
- \setkeys{latin}{babelshorthands=false}
+ \SetGlossOptions{latin}{babelshorthands=false}
\fi
\ExplSyntaxOff % babelsh.def does not support expl3 syntax
-\ifcsundef{initiate@active@char}{\input{babelsh.def}}{}
+\@ifundefined{initiate@active@char}{\input{babelsh.def}}{}
\ExplSyntaxOn
\initiate@active@char {"}
@@ -637,19 +618,20 @@
% For the aux file:
\protected@write \@auxout { }
{
+ \ProvideDocumentCommand \shorthandoff{sm}{} % #643
\shorthandoff {=}
\shorthandoff* {^} % #582
}
\AtBeginDocument
{
- \str_if_eq:VnTF \xpg@main@language {latin}
+ \IfMainLanguageTF {latin}
{
- \iflatin@prosodicshorthands
- \else
+ \bool_if:NF \l_polyglossia_latin_prosodic_shorthands_bool
+ {
\shorthandoff {=}
\shorthandoff* {^}
- \fi
+ }
}
{
% The following command should not be called if the main language
@@ -1011,7 +993,7 @@
\let \xpgla@savedvalues \empty
-\AtEndPreamble
+\hook_gput_code:nnn { begindocument / before } {.}
{
\edef \xpgla@savedvalues
{
@@ -1024,12 +1006,14 @@
\def \noextras@latin
{
- \iflatin@babelshorthands
+ \bool_if:NT \l_polyglossia_latin_babelshorthands_bool
+ {
\polyglossia_latin_no_shorthands:
- \fi
- \iflatin@prosodicshorthands
+ }
+ \bool_if:NT \l_polyglossia_latin_prosodic_shorthands_bool
+ {
\polyglossia_latin_no_prosodic_shorthands:
- \fi
+ }
\xpgla@savedvalues
\polyglossia_latin_no_punctuation_spacing:
\polyglossia_latin_modern_character_codes:
@@ -1045,16 +1029,20 @@
{
\polyglossia_latin_punctuation_spacing:
}
- \iflatin@babelshorthands
+ \bool_if:NTF \l_polyglossia_latin_babelshorthands_bool
+ {
\polyglossia_latin_shorthands:
- \else
+ }
+ {
\polyglossia_latin_no_shorthands:
- \fi
- \iflatin@prosodicshorthands
+ }
+ \bool_if:NTF \l_polyglossia_latin_prosodic_shorthands_bool
+ {
\polyglossia_latin_prosodic_shorthands:
- \else
+ }
+ {
\polyglossia_latin_no_prosodic_shorthands:
- \fi
+ }
}
\def \blockextras@latin
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latinclassic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latinclassic.ldf
deleted file mode 100644
index 496d8356dde..00000000000
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-latinclassic.ldf
+++ /dev/null
@@ -1,9 +0,0 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
-%
-\ProvidesFile{gloss-latinclassic.ldf}[polyglossia: module for classic Latin]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{latin}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latinecclesiastic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latinecclesiastic.ldf
deleted file mode 100644
index aab9c456d44..00000000000
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-latinecclesiastic.ldf
+++ /dev/null
@@ -1,9 +0,0 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
-%
-\ProvidesFile{gloss-latinecclesiastic.ldf}[polyglossia: module for ecclesiastic Latin]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{latin}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latinmedieval.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latinmedieval.ldf
deleted file mode 100644
index 1f76e51ba2b..00000000000
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-latinmedieval.ldf
+++ /dev/null
@@ -1,9 +0,0 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
-%
-\ProvidesFile{gloss-latinmedieval.ldf}[polyglossia: module for medieval Latin]
-
-% We provide this as a babel alias
-
-\xpg@load@master@language{latin}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf
index 495a2384b07..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-latvian.ldf}[polyglossia: module for Latvian]
\PolyglossiaSetup{latvian}{
@@ -25,12 +25,12 @@
\def\contentsname{Saturs}%
\def\listfigurename{Attēlu saraksts}%
\def\listtablename{Tabulu saraksts}%
- \def\indexname{Index}%
+ \def\indexname{Priekšmetu rādītājs}%
\def\figurename{Att.}%
\def\tablename{Tabula}%
\def\partname{Daļa}%
- \def\enclname{encl}%
- \def\ccname{cc}%
+ \def\enclname{Pielikumā}%
+ \def\ccname{Kopija(s)}%
\def\headtoname{To}%
\def\pagename{lpp.}%
\def\seename{sk.}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf
index c3f389702bb..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.1 -- 2024/03/07)
+% 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 dbb6a3406a2..d6790701b6a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lo.ldf}[polyglossia: module for lo (Lao)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{lao}
+\InheritGlossFile{lao}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf
index a754a11e9e2..ef03f24ffe2 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lowersorbian.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lowersorbian.ldf}[polyglossia: module for Lower Sorbian]
% We provide this as a babel alias
-\xpg@load@master@language{sorbian}
+\InheritGlossFile{sorbian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf
index 4f054727f6e..cad1b920dcb 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lsorbian.ldf
@@ -1,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lsorbian.ldf}[polyglossia: module for Lower Sorbian]
% We only provide this gloss for babel compatibility. Since lsorbian is
% a sorbian variety, we use 'sorbian' with variant 'lower' now.
-\xpg@load@master@language{sorbian}
+\InheritGlossFile{sorbian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf
index a229c22f599..d1d2172128e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lt.ldf}[polyglossia: module for lt (Lithuanian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{lithuanian}
+\InheritGlossFile{lithuanian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf
index 872db3d41eb..83fe7ad2f75 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-lv.ldf}[polyglossia: module for lv (Latvian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{latvian}
+\InheritGlossFile{latvian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf
index 7d1465ee3d5..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.1 -- 2024/03/07)
+% 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 034802242c0..efdbca6fcb9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-magyar.ldf}[polyglossia: module for Hungarian (Magyar)]
% We only provide this gloss for babel compatibility.
-\xpg@load@master@language{hungarian}
+\InheritGlossFile{hungarian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf
index c890ffcd2b9..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-malay.ldf}[polyglossia: module for Malay]
@@ -26,65 +26,44 @@
% Backwards compat. alias
\setlanguagealias[variant=malaysian]{malay}{bahasam}
-\providebool{malay@melayu}
+\@ifundefined{ifmalay@melayu}%
+ {\newif\ifmalay@melayu}{}
\malay@melayufalse
\def\malay@variant{malay}
-\define@choicekey*+{malay}{variant}[\xpg@val\xpg@nr]{indonesian,malaysian}[malaysian]{%
- \ifcase\xpg@nr\relax
- % indonesian:
- \def\malay@variant{indonesian}%
- \malay@melayufalse
- \or
- % malaysian:
- \def\malay@variant{malay}%
- \malay@melayutrue
- \fi
- \ifmalay@melayu
- \SetLanguageKeys{malay}{language=Malay,langtag=MLY,babelname=bahasam,bcp47=zsm,bcp47-language=zsm}%
- \xpg@fontsetup@latin{malay}%
- % Check if \l@malay is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{malay}{}{%
- \def\do##1{%
- \xpg@ifdefined{##1}%
- {\csletcs{l@malay}{l@##1}\listbreak}%
- {}%
- }%
- \docsvlist{melayu,bahasam,bahasai,indonesian,indon,bahasa}
- \xpg@ifdefined{malay}{}{%
- \xpg@warning{No hyphenation patterns for Malay (Malaysian) found\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@malay0%
- }%
- }%
- \else
- \SetLanguageKeys{malay}{language=Indonesian,langtag=IND,babelname=bahasa,bcp47=id,bcp47-language=id}%
- \xpg@fontsetup@latin{malay}%
- % Check if \l@indonesian is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{indonesian}{}{%
- \def\do##1{%
- \xpg@ifdefined{##1}%
- {\csletcs{l@indonesian}{l@##1}\listbreak}%
- {}%
- }%
- \docsvlist{indon,bahasai,bahasam,malay,melayu,bahasa}
- \xpg@ifdefined{indonesian}{}{%
- \xpg@warning{No hyphenation patterns for Malay (Indonesian) found\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@indonesian0
- }%
- }%
- \fi
- \xpg@info{Option: malay, variant=\xpg@val}%
-}{\xpg@warning{Unknown malay variant `#1'}}
+
+\DeclareKeys[polyglossia/gloss/malay]
+ {
+ variant.choice:,
+ variant / indonesian.code =
+ {%
+ \def\malay@variant{indonesian}%
+ \malay@melayufalse
+ \SetLanguageKeys{malay}{language=Indonesian,langtag=IND,babelname=bahasa,bcp47=id,bcp47-language=id}%
+ \SetupLatinPolyglossiaFont{malay}%
+ % Check if \l@indonesian is defined. If not, try to set it to some variety
+ % (specific order as in the csv list), or null language if everything fails
+ \TryPatternWithFallback{indonesian}{indon,bahasai,bahasam,malay,melayu,bahasa}%
+ },
+ variant / malaysian.code =
+ {%
+ \def\malay@variant{malay}%
+ \malay@melayutrue
+ \SetLanguageKeys{malay}{language=Malay,langtag=MLY,babelname=bahasam,bcp47=zsm,bcp47-language=zsm}%
+ \SetupLatinPolyglossiaFont{malay}%
+ % Check if \l@malay is defined. If not, try to set it to some variety
+ % (specific order as in the csv list), or null language if everything fails
+ \TryPatternWithFallback{malay}{melayu,bahasam,bahasai,indonesian,indon,bahasa}%
+ },
+ variant.default:n = malaysian,
+ variant/unknown.code = \xpg@warning{Unknown malay variant `#1'},
+ }
% Register default options
-\xpg@initialize@gloss@options{malay}{variant=malaysian}
+\InitializeGlossOptions{malay}{variant=malaysian}
\def\malay@language{%
- \polyglossia@setup@language@patterns{\malay@variant}%
+ \SetupPolyglossiaLangPatterns{\malay@variant}%
}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf
index 44def596e77..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.1 -- 2024/03/07)
+% 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 79b48a24c5a..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.1 -- 2024/03/07)
+% 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
@@ -28,21 +28,25 @@
\newif\ifmarathi@devanagari@numerals
\marathi@devanagari@numeralstrue
-\define@choicekey*+{marathi}{numerals}[\xpg@val\xpg@nr]{Western,Devanagari}[Devanagari]{%
- \ifcase\xpg@nr\relax
- % Western:
- \marathi@devanagari@numeralsfalse%
- \SetLanguageKeys{marathi}{bcp47-extension-u=nu-latn}%
- \or
- % Devanagari:
- \marathi@devanagari@numeralstrue%
- \SetLanguageKeys{marathi}{bcp47-extension-u=nu-deva}%
- \fi
- \xpg@info{Option: Marathi, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Marathi numerals value `#1'}}
+\DeclareKeys[polyglossia/gloss/marathi]
+ {
+ numerals.choice:,
+ numerals / western.code =
+ {%
+ \marathi@devanagari@numeralsfalse
+ \SetLanguageKeys{marathi}{bcp47-extension-u=nu-latn}%
+ },
+ numerals / devanagari.code =
+ {%
+ \marathi@devanagari@numeralstrue
+ \SetLanguageKeys{marathi}{bcp47-extension-u=nu-deva}%
+ },
+ numerals.default:n = devanagari,
+ numerals/unknown.code = \xpg@warning{Unknown Marathi numerals value `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{marathi}{numerals=Devanagari}
+\InitializeGlossOptions{marathi}{numerals=Devanagari}
\newcommand{\marathinumerals}[2]{\marathinumber{#2}}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-medievallatin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-medievallatin.ldf
new file mode 100644
index 00000000000..204a0fc0643
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-medievallatin.ldf
@@ -0,0 +1,9 @@
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
+%
+\ProvidesFile{gloss-medievallatin.ldf}[polyglossia: module for medieval Latin]
+
+% We provide this as a babel alias
+
+\InheritGlossFile{latin}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf
index d5795bc39d3..f1956bdedb9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-mk.ldf}[polyglossia: module for mk (Macedonian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{macedonian}
+\InheritGlossFile{macedonian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf
index 74ebd5902fa..c3c8cccbba3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ml.ldf}[polyglossia: module for ml (Malayalam)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{malayalam}
+\InheritGlossFile{malayalam}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf
index f19bfb63f24..d4c39c4b607 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-mn.ldf}[polyglossia: module for mn (Mongolian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{mongolian}
+\InheritGlossFile{mongolian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf
index 04d4fe1e4da..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-mongolian.ldf}[polyglossia: module for Mongolian]
@@ -30,43 +30,46 @@
\newif\ifcyrillic@numerals
\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{mongolian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \fi
- \xpg@info{Option: Mongolian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Mongolian numerals value `#1'}}
-\define@boolkey{mongolian}[mongolian@]{babelshorthands}[true]{}
+\DeclareKeys[polyglossia/gloss/mongolian]
+ {
+ babelshorthands.if = mongolian@babelshorthands,
+ babelshorthands.default:n = true,
+ numerals.choice:,
+ numerals / arabic.code =
+ {%
+ \cyrillic@numeralsfalse
+ \cyrillic@asbuk@numeralsfalse
+ },
+ numerals / cyrillic.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ },
+ numerals / cyrillic-trad.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ },
+ numerals / cyrillic-alph.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralstrue
+ },
+ numerals.default:n = arabic,
+ numerals/unknown.code = \xpg@warning{Unknown Mongolian numerals value `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{mongolian}{babelshorthands=false,numerals=arabic}
+\InitializeGlossOptions{mongolian}{babelshorthands=false,numerals=arabic}
\ifsystem@babelshorthands
- \setkeys{mongolian}{babelshorthands=true}
+ \SetGlossOptions{mongolian}{babelshorthands=true}
\else
- \setkeys{mongolian}{babelshorthands=false}
+ \SetGlossOptions{mongolian}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\mongolian@shorthands{%
\xpg@activate@shorthands%
@@ -102,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}%
}
@@ -119,7 +122,7 @@
\def\bibname{Номзүй}%
\def\chaptername{Бүлэг}%
\def\appendixname{Хавсралт}%
- \ifcsundef{thechapter}%
+ \@ifundefined{thechapter}%
{\def\contentsname{Агуулга}}%
{\def\contentsname{Гарчиг}}%
\def\listfigurename{Зургийн жагсаалт}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf
index fa37ee180c0..c03ea34f8f5 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-mr.ldf}[polyglossia: module for mr (Marathi)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{marathi}
+\InheritGlossFile{marathi}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf
index 01cb9a28833..53b02f23a5c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-naustrian.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-naustrian.ldf}[polyglossia: module for Austrian German (current spelling)]
% We provide this as a babel alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf
index 715d6a22841..580eaea1594 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-nb.ldf}[polyglossia: module for nb (Norwegian)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{norwegian}
+\InheritGlossFile{norwegian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf
index 298913ccb8d..3fc12f2e3ba 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-newzealand.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-newzealand.ldf}[polyglossia: module for Newzealand English]
% We provide this as a babel alias
-\xpg@load@master@language{english}
+\InheritGlossFile{english}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf
index cb77aa6be8d..4e9f8e5b886 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ngerman.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ngerman.ldf}[polyglossia: module for German (current spelling)]
% We provide this as a babel alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf
index a7b7712520d..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.1 -- 2024/03/07)
+% 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 d000c9c1e38..e03f920d27a 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-norsk.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-norsk.ldf
@@ -1,11 +1,11 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-norsk.ldf}[polyglossia: module for Norwegian (Bokmal)]
% We only provide this gloss for babel compatibility. Since norsk is
% actually norwegian bokmal, we use 'norwegian' with variant 'bokmal' now.
-\xpg@load@master@language{norwegian}
+\InheritGlossFile{norwegian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf
index 544c8b7df79..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-norwegian.ldf}[polyglossia: module for Norwegian]
\PolyglossiaSetup{norwegian}{
@@ -20,28 +20,32 @@
\setlanguagealias[variant=nynorsk]{norwegian}{nynorsk}
\def\norwegian@variant{nynorsk}
-\define@choicekey*+{norwegian}{variant}[\xpg@val\xpg@nr]{nynorsk,bokmal}[nynorsk]{%
- \ifcase\xpg@nr\relax
- % nynorsk:
- \def\norwegian@variant{nynorsk}%
- \SetLanguageKeys{norwegian}{langtag=NYN,babelname=nynorsk,bcp47=nn,bcp47-language=nn}%
- \xpg@fontsetup@latin{norwegian}%
- \or
- % bokmal:
- \def\norwegian@variant{norsk}%
- \SetLanguageKeys{norwegian}{langtag=NOR,babelname=norsk,bcp47=nb,bcp47-language=nb}%
- \xpg@fontsetup@latin{norwegian}%
- \fi
- \xpg@info{Option: norwegian, variant=\xpg@val}%
-}{\xpg@warning{Unknown norwegian variant `#1'}}
+\DeclareKeys[polyglossia/gloss/norwegian]
+ {
+ variant.choice:,
+ variant / nynorsk.code =
+ {%
+ \def\norwegian@variant{nynorsk}%
+ \SetLanguageKeys{norwegian}{langtag=NYN,babelname=nynorsk,bcp47=nn,bcp47-language=nn}%
+ \SetupLatinPolyglossiaFont{norwegian}%
+ },
+ variant / bokmal.code =
+ {%
+ \def\norwegian@variant{norsk}%
+ \SetLanguageKeys{norwegian}{langtag=NOR,babelname=norsk,bcp47=nb,bcp47-language=nb}%
+ \SetupLatinPolyglossiaFont{norwegian}%
+ },
+ variant.default:n = nynorsk,
+ variant/unknown.code = \xpg@warning{Unknown norwegian variant `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{norwegian}{variant=nynorsk}
+\InitializeGlossOptions{norwegian}{variant=nynorsk}
\def\norwegian@language{%
- \polyglossia@setup@language@patterns{\norwegian@variant}%
+ \SetupPolyglossiaLangPatterns{\norwegian@variant}%
}%
\def\captionsnorwegian@nynorsk{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf
index 5fa656d2a50..b57f684c275 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-nswissgerman.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-nswissgerman.ldf}[polyglossia: module for Swiss German (current spelling)]
% We provide this as a babel alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf
index 648d2b346d4..e014dfbcf60 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-nynorsk.ldf
@@ -1,11 +1,11 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-nynorsk.ldf}[polyglossia: module for Norwegian (Nynorsk)]
% We only provide this gloss for babel compatibility. Since nynorsk is
% a norwegian variety, we use 'norwegian' with variant 'nynorsk' now.
-\xpg@load@master@language{norwegian}
+\InheritGlossFile{norwegian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf
index a383b92b28f..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
%%
%% This is file `gloss-occitan.ldf',
@@ -34,19 +34,19 @@
% BCP-47 compliant aliases
\setlanguagealias*{occitan}{oc}
-\define@boolkey{occitan}[occitan@]{babelshorthands}[true]{}
+\DeclareKeys[polyglossia/gloss/occitan]
+ {
+ babelshorthands.if = occitan@babelshorthands,
+ babelshorthands.default:n = true
+ }
\ifsystem@babelshorthands
- \setkeys{occitan}{babelshorthands=true}
+ \SetGlossOptions{occitan}{babelshorthands=true}
\else
- \setkeys{occitan}{babelshorthands=false}
+ \SetGlossOptions{occitan}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\occitan@shorthands{%
\xpg@activate@shorthands%
@@ -138,7 +138,7 @@
\def\today{\occitanday\space \occitanmonth\space de~\number\year}%
}
\let\xpgoc@savedvalues\empty
-\AtEndPreamble{% the user or the class might define different values
+\AddToHook{begindocument/before}{% the user or the class might define different values
\edef\xpgoc@savedvalues{%
\clubpenalty=\the\clubpenalty\space
\@clubpenalty=\the\@clubpenalty\space
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-odia.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-odia.ldf
index 7efbd533912..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.1 -- 2024/03/07)
+% 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
@@ -30,32 +30,37 @@
\newif\ifodia@devanagari@numerals
\newif\ifodia@odia@numerals
-\define@choicekey*+{odia}{numerals}[\xpg@val\xpg@nr]{Devanagari,Odia,Western}[Devanagari]{%
- \ifcase\xpg@nr\relax
- % Devanagari:
- \odia@odia@numeralsfalse%
- \odia@devanagari@numeralstrue%
- \SetLanguageKeys{odia}{bcp47=or,bcp47-language=or,bcp47-extension-u=nu-deva}%
- \or
- % Odia:
- \odia@odia@numeralstrue%
- \odia@devanagari@numeralsfalse%
- \or
- % Western:
- \odia@odia@numeralsfalse%
- \odia@devanagari@numeralsfalse%
- \SetLanguageKeys{odia}{bcp47=or,bcp47-language=or,bcp47-extension-u=nu-latn}%
- \fi
- \xpg@info{Option: Odia, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Odia numeral `#1'}}
-
\def\extras@odia{}
\def\noextras@odia{}
-\define@boolkey{odia}[odia@]{changecounternumbering}[true]{}
+\DeclareKeys[polyglossia/gloss/odia]
+ {
+ changecounternumbering.if = odia@changecounternumbering,
+ changecounternumbering.default:n = true,
+ numerals.choice:,
+ numerals / devanagari.code =
+ {%
+ \odia@odia@numeralsfalse
+ \odia@devanagari@numeralstrue
+ \SetLanguageKeys{odia}{bcp47=or,bcp47-language=or,bcp47-extension-u=nu-deva}%
+ },
+ numerals / odia.code =
+ {%
+ \odia@odia@numeralstrue
+ \odia@devanagari@numeralsfalse
+ },
+ numerals / western.code =
+ {%
+ \odia@odia@numeralsfalse
+ \odia@devanagari@numeralsfalse
+ \SetLanguageKeys{odia}{bcp47=or,bcp47-language=or,bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = devanagari,
+ numerals/unknown.code = \xpg@warning{Unknown Odia numeral `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{odia}{changecounternumbering=false,numerals=Devanagari}
+\InitializeGlossOptions{odia}{changecounternumbering=false,numerals=Devanagari}
\def\captionsodia{%
\def\refname{ସନ୍ଦର୍ଭ}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf
index a864d2040e0..3fb94208cac 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-or.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-odia.ldf}[polyglossia: module for or (Odia)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{odia}
+\InheritGlossFile{odia}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf
index c54ec572b9c..d91c55f137e 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-pa.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-pa.ldf}[polyglossia: module for pa (Punjabi)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{punjabi}
+\InheritGlossFile{punjabi}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf
index ae1a9b0d288..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-persian.ldf}[polyglossia: module for Persian]
@@ -27,42 +27,36 @@
\setlanguagealias{persian}{farsi}
\newif\if@western@numerals
-\define@choicekey*+{persian}{numerals}[\xpg@val\xpg@nr]{eastern,western}[eastern]{%
- \ifcase\xpg@nr\relax
- % eastern:
- \@western@numeralsfalse%
- \SetLanguageKeys{persian}{bcp47-extension-u=nu-arab}%
- \or
- % western:
- \@western@numeralstrue%
- \SetLanguageKeys{persian}{bcp47-extension-u=nu-latn}%
- \fi
- \xpg@info{Option: Persian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Persian numerals option `#1'}}
-
\newif\ifpersian@customsep\persian@customsepfalse
\def\xpg@sepmark{}
-\define@key{persian}{sectionsep}[.]{%
- \persian@customseptrue%
- \gdef\xpg@sepmark{#1}%
-}
-
-%this is needed for \abjad in arabicnumbers.sty
-\define@boolkey{persian}[persian@]{abjadjimnotail}[true]{%
- \ifpersian@abjadjimnotail
- \abjad@jim@notailtrue%
- \else
- \abjad@jim@notailfalse
- \fi}
-
-% NOT YET USED
-\define@key{persian}{locale}[default]{%
- \def\@persian@locale{#1}}
%TODO add option for CALENDAR
+\DeclareKeys[polyglossia/gloss/persian]
+ {
+ sectionsep.code = \gdef\xpg@sepmark{#1}\persian@customseptrue,
+ sectionsep.default:n = .,
+ abjadjimnotail.if = abjad@jim@notail,
+ abjadjimnotail.default:n = true,
+ locale.store = \@persian@locale,
+ locale.default:n = default,
+ numerals.choice:,
+ numerals / eastern.code =
+ {%
+ \@western@numeralsfalse
+ \SetLanguageKeys{persian}{bcp47-extension-u=nu-arab}%
+ },
+ numerals / western.code =
+ {%
+ \@western@numeralstrue
+ \SetLanguageKeys{persian}{bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = eastern,
+ numerals/unknown.code = \xpg@warning{Unknown Persian numerals option `#1'}
+ }
+
% Register default options
-\xpg@initialize@gloss@options{persian}{locale=default,numerals=eastern,abjadjimnotail=false}
+\InitializeGlossOptions{persian}{locale=default,numerals=eastern,abjadjimnotail=false}
\def\farsigregmonth#1{\ifcase#1%
\or ژانویه\or فوریه\or مارس\or آوریل\or مه\or ژوئن\or ژوئیه\or اوت\or سپتامبر\or اکتبر\or نوامبر\or دسامبر\fi}
@@ -147,16 +141,16 @@
}
\def\nopersian@xetex@capsformat{%
- \ifcsdef{xpg@save@sepmark}{%
+ \ifcsname xpg@save@sepmark\endcsname%
\SepMark{\xpg@save@sepmark}
- }{}%
+ \fi%
}
\def\persian@luatex@capsformat{%
%
% change chapter and part headings
\ifpersian@customsep
- \ifcsdef{chapter}{%
+ \ifcsname chapter\endcsname%
\let\xpg@save@thesection\thesection%
\renewcommand*\thesection{\thechapter\xpg@sepmark\@arabic\c@section}
\let\xpg@save@theequation\theequation%
@@ -168,7 +162,7 @@
\let\xpg@save@thetable\thetable%
\renewcommand*\thetable{%
\ifnum\c@chapter>\z@\thechapter\xpg@sepmark\fi\@arabic\c@table}
- }{}
+ \fi%
\let\xpg@save@thesubsection\thesubsection%
\renewcommand\thesubsection
{\thesection\xpg@sepmark\@arabic\c@subsection}
@@ -183,30 +177,30 @@
}
\def\nopersian@luatex@capsformat{%
- \ifcsdef{xpg@save@thesection}{%
+ \ifcsname xpg@save@thesection\endcsname%
\let\thesection\xpg@save@thesection%
- }{}%
- \ifcsdef{xpg@save@theequation}{%
+ \fi%
+ \ifcsname xpg@save@theequation\endcsname%
\let\theequation\xpg@save@theequation%
- }{}%
- \ifcsdef{xpg@save@thefigure}{%
+ \fi%
+ \ifcsname xpg@save@thefigure\endcsname%
\let\thefigure\xpg@save@thefigure%
- }{}%
- \ifcsdef{xpg@save@thetable}{%
+ \fi%
+ \ifcsname xpg@save@thetable\endcsname%
\let\thetable\xpg@save@thetable%
- }{}%
- \ifcsdef{xpg@save@thesubsection}{%
+ \fi%
+ \ifcsname xpg@save@thesubsection\endcsname%
\let\thesubsection\xpg@save@thesubsection%
- \ifcsdef{xpg@save@thesubsubsection}{%
+ \ifcsname xpg@save@thesubsubsection\endcsname%
\let\thesubsubsection\xpg@save@thesubsubsection%
- }{}%
- }{}%
- \ifcsdef{xpg@save@theparagraph}{%
+ \fi%
+ \fi%
+ \ifcsname xpg@save@theparagraph\endcsname%
\let\theparagraph\xpg@save@theparagraph%
- }{}%
- \ifcsdef{xpg@save@thesubparagraph}{%
+ \fi%
+ \ifcsname xpg@save@thesubparagraph\endcsname%
\let\thesubparagraph\xpg@save@thesubparagraph%
- }{}%
+ \fi%
}
\def\blockextras@persian{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf
index 1b6b9b537d1..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.1 -- 2024/03/07)
+% 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
@@ -17,19 +17,19 @@
% BCP-47 compliant aliases
\setlanguagealias*{piedmontese}{pms}
-\define@boolkey{piedmontese}[piedmontese@]{babelshorthands}[true]{}
+\DeclareKeys[polyglossia/gloss/piedmontese]
+ {
+ babelshorthands.if = piedmontese@babelshorthands,
+ babelshorthands.default:n = true
+ }
\ifsystem@babelshorthands
- \setkeys{piedmontese}{babelshorthands=true}
+ \SetGlossOptions{piedmontese}{babelshorthands=true}
\else
- \setkeys{piedmontese}{babelshorthands=false}
+ \SetGlossOptions{piedmontese}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\piedmontese@shorthands{%
\xpg@activate@shorthands%
@@ -93,7 +93,7 @@
ëd luj\or d'agost\or dë stèmber\or d'otóber\or ëd novèmber\or dë dzèmber%
\fi\space dal\space\number\year}}
-\AtEndPreamble{%
+\AddToHook{begindocument/before}{%
\edef\xpgpms@savedvalues{%
\clubpenalty=\the\clubpenalty\space
\@clubpenalty=\the\@clubpenalty\space
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf
index 48ceed5bbb6..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-polish.ldf}[polyglossia: module for Polish]
@@ -20,26 +20,26 @@
\RequirePackage{luavlna}
\fi
-\define@boolkey{polish}[polish@]{babelshorthands}[true]{}
-
-\define@boolkey{polish}[polish@]{splithyphens}[true]{}
-
-\define@boolkey{polish}[polish@]{vlna}[true]{}
+\DeclareKeys[polyglossia/gloss/polish]
+ {
+ babelshorthands.if = polish@babelshorthands,
+ babelshorthands.default:n = true,
+ splithyphens.if = polish@splithyphens,
+ splithyphens.default:n = true,
+ vlna.if = polish@vlna,
+ vlna.default:n = true,
+ }
% Register default options
-\xpg@initialize@gloss@options{polish}{babelshorthands=false,splithyphens=true,vlna=true}
+\InitializeGlossOptions{polish}{babelshorthands=false,splithyphens=true,vlna=true}
\ifsystem@babelshorthands
- \setkeys{polish}{babelshorthands=true}
+ \SetGlossOptions{polish}{babelshorthands=true}
\else
- \setkeys{polish}{babelshorthands=false}
+ \SetGlossOptions{polish}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\let\xpg@hyphen@char-
\def\polish@@splhyphen#1{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf
index 68f53eb1f22..9b6148cedd0 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-polutonikogreek.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-polutonikogreek.ldf}[polyglossia: module for polytonic Greek]
% We provide this as a babel alias
-\xpg@load@master@language{greek}
+\InheritGlossFile{greek}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-portuges.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-portuges.ldf
index 6111b581193..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-portuges.ldf}[polyglossia: module for Portuguese]
@@ -7,6 +7,6 @@
% introduced it in 8.3 filename times). Since polyglossia uses full
% English language names, we use 'portuguese' now.
-\xpg@load@master@language{portuguese}
+\InheritGlossFile{portuguese}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf
index bb03525be7e..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-portuguese.ldf}[polyglossia: module for Portuguese]
@@ -28,41 +28,42 @@
\fi
\def\portuguese@variant{portuges}
-\define@choicekey*+{portuguese}{variant}[\xpg@val\xpg@nr]{portuguese,brazilian}[portuguese]{%
- \ifcase\xpg@nr\relax
- % portuguese:
- \def\portuguese@variant{portuges}%
- \SetLanguageKeys{portuguese}{babelname=portuges,bcp47=pt-PT,bcp47-language=pt,bcp47-region=PT}%
- \or
- % brazilian:
- \def\portuguese@variant{brazil}%
- \SetLanguageKeys{portuguese}{babelname=brazil,bcp47=pt-BR,bcp47-language=pt,bcp47-region=BR}%
- % There are no specific brazil patterns
- \adddialect\l@brazil\l@portuges\relax%
- \fi
- \xpg@info{Option: portuguese, variant=\xpg@val}%
-}{\xpg@warning{Unknown portuguese variant `#1'}}
-
-\define@boolkey{portuguese}[portuguese@]{babelshorthands}[true]{}
-
-\define@boolkey{portuguese}[portuguese@]{splithyphens}[true]{}
+
+\DeclareKeys[polyglossia/gloss/portuguese]
+ {
+ babelshorthands.if = portuguese@babelshorthands,
+ babelshorthands.default:n = true,
+ splithyphens.if = portuguese@splithyphens,
+ splithyphens.default:n = true,
+ variant.choice:,
+ variant / portuguese.code =
+ {%
+ \def\portuguese@variant{portuges}%
+ \SetLanguageKeys{portuguese}{babelname=portuges,bcp47=pt-PT,bcp47-language=pt,bcp47-region=PT}%
+ },
+ variant / brazilian.code =
+ {%
+ \def\portuguese@variant{brazil}%
+ \SetLanguageKeys{portuguese}{babelname=brazil,bcp47=pt-BR,bcp47-language=pt,bcp47-region=BR}%
+ % There are no specific brazil patterns
+ \adddialect\l@brazil\l@portuges\relax
+ },
+ variant.default:n = portuguese,
+ variant/unknown.code = \xpg@warning{Unknown portuguese variant `#1'},
+ }
% Register default options
-\xpg@initialize@gloss@options{portuguese}{variant=portuguese,
+\InitializeGlossOptions{portuguese}{variant=portuguese,
babelshorthands=false,
splithyphens=true}
\ifsystem@babelshorthands
- \setkeys{portuguese}{babelshorthands=true}
+ \SetGlossOptions{portuguese}{babelshorthands=true}
\else
- \setkeys{portuguese}{babelshorthands=false}
+ \SetGlossOptions{portuguese}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\let\xpg@hyphen@char-
\def\portuguese@@splhyphen#1{%
@@ -131,7 +132,7 @@
}
\def\portuguese@language{%
- \polyglossia@setup@language@patterns{\portuguese@variant}%
+ \SetupPolyglossiaLangPatterns{\portuguese@variant}%
}%
\def\captionsportuguese@portuges{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-punjabi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-punjabi.ldf
index 48eacd30e7f..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
% UTF-8 strings kindly provided by
% Arvinder Singh Kang, <17-11-2022>
@@ -25,26 +25,31 @@
\def\punjabi@language{%
% patterns are spelled panjabi
- \polyglossia@setup@language@patterns{panjabi}%
+ \SetupPolyglossiaLangPatterns{panjabi}%
}
\newif\ifpunjabi@gurmukhi@numerals
\punjabi@gurmukhi@numeralstrue
-\define@choicekey*+{punjabi}{numerals}[\xpg@val\xpg@nr]{Gurmukhi,Western}[Gurmukhi]{%
- \ifcase\xpg@nr\relax
- % Gurmukhi:
- \punjabi@gurmukhi@numeralstrue%
- \SetLanguageKeys{punjabi}{bcp47-extension-u=nu-guru}%
- \or
- % Western:
- \punjabi@gurmukhi@numeralsfalse%
- \SetLanguageKeys{punjabi}{bcp47-extension-u=nu-latn}%
- \fi
- \xpg@info{Option: Punjabi, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Punjabi numeral `#1'}}
+
+\DeclareKeys[polyglossia/gloss/punjabi]
+ {
+ numerals.choice:,
+ numerals / gurmukhi.code =
+ {%
+ \punjabi@gurmukhi@numeralstrue
+ \SetLanguageKeys{punjabi}{bcp47-extension-u=nu-guru}%
+ },
+ numerals / western.code =
+ {%
+ \punjabi@gurmukhi@numeralsfalse
+ \SetLanguageKeys{punjabi}{bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = gurmukhi,
+ numerals/unknown.code = \xpg@warning{Unknown Punjabi numeral `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{punjabi}{numerals=gurmukhi}
+\InitializeGlossOptions{punjabi}{numerals=gurmukhi}
\newcommand{\punjabinumerals}[2]{\punjabinumber{#2}}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf
index 290dad9c71b..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.1 -- 2024/03/07)
+% 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 aa50a200003..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.1 -- 2024/03/07)
+% 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 8dcf535ebf5..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-russian.ldf}[polyglossia: module for Russian]
@@ -27,11 +27,6 @@
\setlanguagealias*[spelling=old]{russian}{ru-petr1708}
\newif\if@russian@modern
-\define@key{russian}{spelling}[modern]{%
- \ifstrequal{#1}{old}%
- {\@russian@modernfalse\SetLanguageKeys{russian}{bcp47=ru-petr1708,bcp47-variant=petr1708}}%
- {\@russian@moderntrue\SetLanguageKeys{russian}{bcp47=ru,bcp47-variant=luna1918}}%
-}
\def\captionsrussian{%
\if@russian@modern\captionsrussian@modern\else\captionsrussian@old\fi%
@@ -43,49 +38,68 @@
\newif\ifcyrillic@numerals
\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{russian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \SetLanguageKeys{russian}{bcp47-extension-u=nu-latn}%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \SetLanguageKeys{russian}{bcp47-extension-u=nu-cyrl}%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \SetLanguageKeys{russian}{bcp47-extension-u=nu-cyrl}%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \SetLanguageKeys{russian}{bcp47-extension-u=nu-cyrl}%
- \fi
- \xpg@info{Option: Russian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Russian numerals value `#1'}}
-
-\define@boolkey{russian}[russian@]{indentfirst}[true]{%
- \ifrussian@indentfirst
- \SetLanguageKeys{russian}{indentfirst=true}%
- \else
- \SetLanguageKeys{russian}{indentfirst=false}%
- \fi%
-}
-\define@boolkey{russian}[russian@]{babelshorthands}[true]{}
-
-% Force punctuation after heading number
-\define@boolkey{russian}[russian@]{forceheadingpunctuation}[true]{}
-
-% Define some math functions
-\define@boolkey{russian}[russian@]{mathfunctions}[true]{}
+\DeclareKeys[polyglossia/gloss/russian]
+ {
+ babelshorthands.if = russian@babelshorthands,
+ babelshorthands.default:n = true,
+ forceheadingpunctuation.if = russian@forceheadingpunctuation,
+ forceheadingpunctuation.default:n = true,
+ mathfunctions.if = russian@mathfunctions,
+ mathfunctions.default:n = true,
+ spelling.choice:,
+ spelling / modern.code =
+ {%
+ \@russian@moderntrue
+ \SetLanguageKeys{russian}{bcp47=ru,bcp47-variant=luna1918}%
+ },
+ spelling / old.code =
+ {%
+ \@russian@modernfalse
+ \SetLanguageKeys{russian}{bcp47=ru-petr1708,bcp47-variant=petr1708}%
+ },
+ spelling.default:n = modern,
+ numerals.choice:,
+ numerals / arabic.code =
+ {%
+ \cyrillic@numeralsfalse
+ \cyrillic@asbuk@numeralsfalse
+ \SetLanguageKeys{russian}{bcp47-extension-u=nu-latn}%
+ },
+ numerals / cyrillic.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ \SetLanguageKeys{russian}{bcp47-extension-u=nu-cyrl}%
+ },
+ numerals / cyrillic-trad.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ \SetLanguageKeys{russian}{bcp47-extension-u=nu-cyrl}%
+ },
+ numerals / cyrillic-alph.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralstrue
+ \SetLanguageKeys{russian}{bcp47-extension-u=nu-cyrl}%
+ },
+ numerals.default:n = arabic,
+ numerals/unknown.code = \xpg@warning{Unknown Russian numerals value `#1'},
+ indentfirst.choice:,
+ indentfirst / true.code =
+ {%
+ \SetLanguageKeys{russian}{indentfirst=true}%
+ },
+ indentfirst / false.code =
+ {%
+ \SetLanguageKeys{russian}{indentfirst=false}%
+ },
+ indentfirst.default:n = true,
+ }
% Register default options
-\xpg@initialize@gloss@options{russian}{babelshorthands=false,
+\InitializeGlossOptions{russian}{babelshorthands=false,
spelling=modern,
numerals=arabic,
indentfirst=true,
@@ -94,16 +108,12 @@
\ifsystem@babelshorthands
- \setkeys{russian}{babelshorthands=true}
+ \SetGlossOptions{russian}{babelshorthands=true}
\else
- \setkeys{russian}{babelshorthands=false}
+ \SetGlossOptions{russian}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\russian@shorthands{%
\xpg@activate@shorthands%
@@ -138,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}%
}
@@ -155,7 +165,7 @@
\def\bibname{Литература}%
\def\chaptername{Глава}%
\def\appendixname{Приложение}%
- \ifcsundef{thechapter}%
+ \@ifundefined{thechapter}%
{\def\contentsname{Содержание}}%
{\def\contentsname{Оглавление}}%
\def\listfigurename{Список иллюстраций}%
@@ -198,7 +208,7 @@
\def\bibname{Библіографія}%
\def\chaptername{Глава}%
\def\appendixname{Приложеніе}%
- \ifcsundef{thechapter}%
+ \@ifundefined{thechapter}%
{\def\contentsname{Содержаніе}}%
{\def\contentsname{Оглавленіе}}%
\def\listfigurename{Списокъ иллюстрацій}%
@@ -237,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
@@ -270,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 9efe055865f..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-sami.ldf}[polyglossia: module for Sami]
@@ -28,19 +28,19 @@
% % northern:
% \def\sami@variant{samin}%
% \SetLanguageKeys{sami}{language=Northern Sami,langtag=NSM}%
-% \xpg@fontsetup@latin{sami}%
+% \SetupLatinPolyglossiaFont{sami}%
% \or
% % other:
% \def\sami@variant{}%
% \SetLanguageKeys{sami}{language= Sami,langtag=}%
-% \xpg@fontsetup@latin{sami}%
+% \SetupLatinPolyglossiaFont{sami}%
% \fi
% \xpg@info{Option: sami, variant=\xpg@val}%
%}{\xpg@warning{Unknown sami variant `#1'}}
%\def\sami@language{%
-% \polyglossia@setup@language@patterns{\sami@variant}%
+% \SetupPolyglossiaLangPatterns{\sami@variant}%
%}%
\def\captionssami@northern{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf
index 0801e7423ab..48f923acf56 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-samin.ldf
@@ -1,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-samin.ldf}[polyglossia: module for Northern Sami]
% We only provide this gloss for babel compatibility. Since samin is
% a sami variety, we use 'sami' with variant 'northern' now.
-\xpg@load@master@language{sami}
+\InheritGlossFile{sami}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf
index 094c6f6691d..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-sanskrit.ldf}[polyglossia: module for Sanskrit]
@@ -27,56 +27,55 @@
\setlanguagealias*[script=gujarati]{sanskrit}{sa-Gujr}
\setlanguagealias*[script=latin]{sanskrit}{sa-Latn}
-\define@key{sanskrit}{Script}[devanagari]{%
- \ifcsdef{fontsetup@sanskrit@#1}%
- {\csname fontsetup@sanskrit@#1\endcsname}%
- {\xpg@error{`#1' is not a valid script for Sanskrit}%
- }%
-}
-
-\define@key{sanskrit}{script}[devanagari]{\setkeys{sanskrit}{Script=#1}}
-
\def\fontsetup@sanskrit@devanagari{%
- \SetLanguageKeys{sanskrit}{scripttag=deva,script=Devanagari,bcp47=sa-Deva,bcp47-language=sa,bcp47-script=Deva,bcp47-casing=sa-Deva}
- \xpg@fontsetup@nonlatin{sanskrit}}
+ \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}
- \xpg@fontsetup@nonlatin{sanskrit}}
+ \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}
- \xpg@fontsetup@nonlatin{sanskrit}}
+ \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}
- \xpg@fontsetup@nonlatin{sanskrit}}
+ \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}
- \xpg@fontsetup@nonlatin{sanskrit}}
+ \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}
- \xpg@fontsetup@nonlatin{sanskrit}}
+ \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}
- \xpg@fontsetup@latin{sanskrit}}
+ \SetLanguageKeys{sanskrit}{scripttag=latn,script=Latin,bcp47=sa-Latn,bcp47-language=sa,bcp47-script=Latn,bcp47-casing=sa-Latn}%
+ \SetupLatinPolyglossiaFont{sanskrit}}
\newif\ifsanskrit@devanagari@numerals
\sanskrit@devanagari@numeralstrue
-\define@choicekey*+{sanskrit}{numerals}[\xpg@val\xpg@nr]{devanagari,western}[devanagari]{%
- \ifcase\xpg@nr\relax
- % devanagari:
- \sanskrit@devanagari@numeralstrue%
- \SetLanguageKeys{sanskrit}{bcp47-extension-u=nu-deva}%
- \or
- % western:
- \sanskrit@devanagari@numeralsfalse%
- \SetLanguageKeys{sanskrit}{bcp47-extension-u=nu-latn}%
- \fi
- \xpg@info{Option: Sanskrit, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Sanskrit numeral `#1'}}
+\DeclareKeys[polyglossia/gloss/sanskrit]
+ {
+ script.code = \@ifundefined{fontsetup@sanskrit@#1}%
+ {\xpg@error{`#1' is not a valid script for Sanskrit}}%
+ {\csname fontsetup@sanskrit@#1\endcsname},
+ script.default:n = devanagari,
+ numerals.choice:,
+ numerals / devanagari.code =
+ {%
+ \sanskrit@devanagari@numeralstrue
+ \SetLanguageKeys{sanskrit}{bcp47-extension-u=nu-deva}%
+ },
+ numerals / western.code =
+ {%
+ \sanskrit@devanagari@numeralsfalse
+ \SetLanguageKeys{sanskrit}{bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = devanagari,
+ numerals/unknown.code = \xpg@warning{Unknown Sanskrit numeral `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{sanskrit}{script=devanagari,numerals=devanagari}
+\InitializeGlossOptions{sanskrit}{script=devanagari,numerals=devanagari}
% Use \providecommand here as the ldf file might
% be reloaded via BCP.
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf
index a53cd0c6d3f..a6a75400469 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-scottish.ldf
@@ -1,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-scottish.ldf}[polyglossia: module for Scottish Gaelic]
% We only provide this gloss for babel compatibility. Since scottish is
% a gaelic variety, we use 'gaelic' with variant 'scottish' now.
-\xpg@load@master@language{gaelic}
+\InheritGlossFile{gaelic}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf
index 3a80bdd1370..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.1 -- 2024/03/07)
+% 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
@@ -39,88 +39,96 @@
\fi
\newif\if@serbian@cyr
-\define@choicekey*+{serbian}{Script}[\xpg@val\xpg@nr]{cyrillic,latin}[cyrillic]{%
- \ifcase\xpg@nr\relax
- % cyrillic:
- \@serbian@cyrtrue
- \xpg@fontsetup@nonlatin{serbian}%
- \or
- % latin:
- \@serbian@cyrfalse
- \xpg@fontsetup@latin{serbian}%
- %TODO \def\serbian@language{\language=\l@serbianlat}%
- % or should we use Croatian patterns as a fallback for the time being???
- \fi
- \serbian@set@languagekeys%
- \xpg@info{Option: Serbian, script=\xpg@val}%
-}{\xpg@warning{Unknown Serbian script `#1'}}
-
-\define@key{serbian}{script}[cyrillic]{\setkeys{serbian}{Script=#1}}
-
\newif\if@serbian@ijekavian
-\define@choicekey*+{serbian}{variant}[\xpg@val\xpg@nr]{ekavian,ijekavian}[ekavian]{%
- \ifcase\xpg@nr\relax
- % ekavian:
- \@serbian@ijekavianfalse%
- \or
- % ijekavian:
- \@serbian@ijekaviantrue%
- \fi
- \serbian@set@languagekeys%
- \xpg@info{Option: Serbian, variant=\xpg@val}%
-}{\xpg@warning{Unknown Serbian variant `#1'}}
\newif\ifcyrillic@numerals
\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{serbian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \SetLanguageKeys{serbian}{bcp47-extension-u=nu-latn}%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \SetLanguageKeys{serbian}{bcp47-extension-u=nu-cyrl}%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \SetLanguageKeys{serbian}{bcp47-extension-u=nu-cyrl}%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \SetLanguageKeys{serbian}{bcp47-extension-u=nu-cyrl}%
- \fi
- \xpg@info{Option: Serbian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Serbian numerals value `#1'}}
-
-\define@boolkey{serbian}[serbian@]{splithyphens}[true]{}
-
-\define@boolkey{serbian}[serbian@]{datei}[true]{}
\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
}
-\setkeys{serbian}{Script,numerals}
+\DeclareKeys[polyglossia/gloss/serbian]
+ {
+ splithyphens.if = serbian@splithyphens,
+ splithyphens.default:n = true,
+ datei.if = serbian@datei,
+ datei.default:n = true,
+ variant.choice:,
+ variant / ekavian.code =
+ {%
+ \@serbian@ijekavianfalse
+ \serbian@set@languagekeys
+ },
+ variant / ijekavian.code =
+ {%
+ \@serbian@ijekaviantrue
+ \serbian@set@languagekeys
+ },
+ variant.default:n = ekavian,
+ variant/unknown.code = \xpg@warning{Unknown Serbian variant `#1'},
+ script.choice:,
+ script / cyrillic.code =
+ {%
+ \@serbian@cyrtrue
+ \SetupNonLatinPolyglossiaFont{serbian}%
+ \serbian@set@languagekeys
+ },
+ script / latin.code =
+ {%
+ \@serbian@cyrfalse
+ \SetupLatinPolyglossiaFont{serbian}%
+ %TODO \def\serbian@language{\language=\l@serbianlat}%
+ % or should we use Croatian patterns as a fallback for the time being???
+ \serbian@set@languagekeys
+ },
+ script.default:n = cyrillic,
+ script/unknown.code = \xpg@warning{Unknown Serbian script `#1'},
+ numerals.choice:,
+ numerals / arabic.code =
+ {%
+ \cyrillic@numeralsfalse
+ \cyrillic@asbuk@numeralsfalse
+ \SetLanguageKeys{serbian}{bcp47-extension-u=nu-latn}%
+ },
+ numerals / cyrillic.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ \SetLanguageKeys{serbian}{bcp47-extension-u=nu-cyrl}%
+ },
+ numerals / cyrillic-trad.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ \SetLanguageKeys{serbian}{bcp47-extension-u=nu-cyrl}%
+ },
+ numerals / cyrillic-alph.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralstrue
+ \SetLanguageKeys{serbian}{bcp47-extension-u=nu-cyrl}%
+ },
+ numerals.default:n = arabic,
+ numerals/unknown.code = \xpg@warning{Unknown Serbian numerals value `#1'}
+ }
+
+\SetGlossOptions{serbian}{script,numerals}
% Register default options
-\xpg@initialize@gloss@options{serbian}{script=cyrillic,numerals=arabic,splithyphens=true}
+\InitializeGlossOptions{serbian}{script=cyrillic,numerals=arabic,splithyphens=true}
\def\captionsserbian{%
\if@serbian@cyr\captionsserbian@cyr\else\captionsserbian@lat\fi
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf
index 7e395fbb602..6026ddd6098 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-serbianc.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-serbianc.ldf}[polyglossia: module for Serbian (cyrillic)]
% We provide this as a babel alias
-\xpg@load@master@language{serbian}
+\InheritGlossFile{serbian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf
index 863b9babde3..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-slovak.ldf}[polyglossia: module for Slovak]
@@ -19,26 +19,26 @@
\RequirePackage{luavlna}
\fi
-\define@boolkey{slovak}[slovak@]{babelshorthands}[true]{}
-
-\define@boolkey{slovak}[slovak@]{splithyphens}[true]{}
-
-\define@boolkey{slovak}[slovak@]{vlna}[true]{}
+\DeclareKeys[polyglossia/gloss/slovak]
+ {
+ babelshorthands.if = slovak@babelshorthands,
+ babelshorthands.default:n = true,
+ splithyphens.if = slovak@splithyphens,
+ splithyphens.default:n = true,
+ vlna.if = slovak@vlna,
+ vlna.default:n = true,
+ }
% Register default options
-\xpg@initialize@gloss@options{slovak}{babelshorthands=false,splithyphens=true,vlna=true}
+\InitializeGlossOptions{slovak}{babelshorthands=false,splithyphens=true,vlna=true}
\ifsystem@babelshorthands
- \setkeys{slovak}{babelshorthands=true}
+ \SetGlossOptions{slovak}{babelshorthands=true}
\else
- \setkeys{slovak}{babelshorthands=false}
+ \SetGlossOptions{slovak}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\let\xpg@hyphen@char-
\def\slovak@@splhyphen#1{%
@@ -214,7 +214,7 @@
\def\contentsname{Obsah}%
\def\listfigurename{Zoznam obrázkov}%
\def\listtablename{Zoznam tabuliek}%
- \def\indexname{Index}%
+ \def\indexname{Register}%
\def\figurename{Obrázok}%
\def\tablename{Tabuľka}%
%\def\thepart{}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf
index 4b932a45446..d8f84351b31 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovene.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-slovene.ldf}[polyglossia: module for Slovenian]
% We provide this as a babel alias
-\xpg@load@master@language{slovenian}
+\InheritGlossFile{slovenian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf
index 2b574559ead..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-slovenian.ldf}[polyglossia: module for Slovenian]
@@ -19,10 +19,14 @@
% Babel aliases
\setlanguagealias{slovenian}{slovene}
-\define@boolkey{slovenian}[slovenian@]{localalph}[true]{}
+\DeclareKeys[polyglossia/gloss/slovenian]
+ {
+ localalph.if = slovenian@localalph,
+ localalph.default:n = true
+ }
% Register default options
-\xpg@initialize@gloss@options{slovenian}{localalph=false}
+\InitializeGlossOptions{slovenian}{localalph=false}
\def\captionsslovenian{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf
index 27b0274d218..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-sorbian.ldf}[polyglossia: module for Sorbian]
@@ -26,60 +26,40 @@
\setlanguagealias[variant=upper]{sorbian}{uppersorbian}
\def\sorbian@variant{usorbian}
-\define@choicekey*+{sorbian}{variant}[\xpg@val\xpg@nr]{upper,lower}[upper]{%
- \ifcase\xpg@nr\relax
- % upper:
- \def\sorbian@variant{usorbian}%
- \SetLanguageKeys{sorbian}{language=Upper Sorbian,langtag=USB,babelname=uppersorbian,bcp47=hsb,bcp47-language=hsb}%
- \xpg@fontsetup@latin{sorbian}%
- % Check if \l@usorbian is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{usorbian}{}{%
- \def\do##1{%
- \xpg@ifdefined{##1}%
- {\csletcs{l@usorbian}{l@##1}\listbreak}%
- {}%
- }%
- \docsvlist{uppersorbian}
- \xpg@ifdefined{usorbian}{}{%
- \xpg@warning{No hyphenation patterns for Upper Sorbian found\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@usorbian0%
- }
- }%
- \or
- % lower:
- \def\sorbian@variant{lsorbian}%
- \SetLanguageKeys{sorbian}{language=Lower Sorbian,langtag=LSB,babelname=lowersorbian,bcp47=dsb,bcp47-language=dsb}%
- \xpg@fontsetup@latin{sorbian}%
- % Check if \l@lsorbian is defined. If not, try to set it to some variety
- % (specific order as in the csv list below), or null language if everything fails
- \xpg@ifdefined{lsorbian}{}{%
- \def\do##1{%
- \xpg@ifdefined{##1}%
- {\csletcs{l@lsorbian}{l@##1}\listbreak}%
- {}%
- }%
- \docsvlist{lowersorbian,Lsorbian,usorbian,uppersorbian}
- \xpg@ifdefined{lsorbian}{}{%
- \xpg@warning{No hyphenation patterns for Lower Sorbian found\MessageBreak
- I will use the 'null' language instead}%
- \adddialect\l@lsorbian0%
- }
- }%
- \fi
- \xpg@info{Option: sorbian, variant=\xpg@val}%
-}{\xpg@warning{Unknown sorbian variant `#1'}}
-
-
-\define@boolkey{sorbian}[sorbian@]{olddate}[true]{}
+
+\DeclareKeys[polyglossia/gloss/sorbian]
+ {
+ olddate.if = sorbian@olddate,
+ olddate.default:n = true,
+ variant.choice:,
+ variant / upper.code =
+ {%
+ \def\sorbian@variant{usorbian}%
+ \SetLanguageKeys{sorbian}{language=Upper Sorbian,langtag=USB,babelname=uppersorbian,bcp47=hsb,bcp47-language=hsb}%
+ \SetupLatinPolyglossiaFont{sorbian}%
+ % Check if \l@usorbian is defined. If not, try to set it to some variety
+ % (specific order as in the csv list), or null language if everything fails
+ \TryPatternWithFallback{usorbian}{uppersorbian}%
+ },
+ variant / lower.code =
+ {%
+ \def\sorbian@variant{lsorbian}%
+ \SetLanguageKeys{sorbian}{language=Lower Sorbian,langtag=LSB,babelname=lowersorbian,bcp47=dsb,bcp47-language=dsb}%
+ \SetupLatinPolyglossiaFont{sorbian}%
+ % Check if \l@lsorbian is defined. If not, try to set it to some variety
+ % (specific order as in the csv list), or null language if everything fails
+ \TryPatternWithFallback{lsorbian}{lowersorbian,Lsorbian,usorbian,uppersorbian}%
+ },
+ variant.default:n = upper,
+ variant/unknown.code = \xpg@warning{Unknown sorbian variant `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{sorbian}{variant=upper,olddate=false}
+\InitializeGlossOptions{sorbian}{variant=upper,olddate=false}
\def\sorbian@language{%
- \polyglossia@setup@language@patterns{\sorbian@variant}%
+ \SetupPolyglossiaLangPatterns{\sorbian@variant}%
}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf
index c7f6358f047..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-spanish.ldf}[polyglossia: module for Spanish]
@@ -27,52 +27,58 @@
\newif\if@spanish@mexico
\@spanish@mexicofalse
-\define@choicekey*+{spanish}{variant}[\xpg@val\xpg@nr]{spanish,mexican}[spanish]{%
- \ifcase\xpg@nr\relax
- % spanish:
- \@spanish@mexicofalse%
- \SetLanguageKeys{spanish}{babelname=spanish,bcp47=es-ES,bcp47-region=ES}%
- \or
- % mexican:
- \@spanish@mexicotrue%
- \SetLanguageKeys{spanish}{babelname=spanishmx,bcp47=es-MX,bcp47-region=MX}%
- \fi
- \xpg@info{Option: spanish, variant=\xpg@val}%
-}{\xpg@warning{Unknown spanish variant `#1'}}
% Localized math operators à la babel
\newif\ifspanish@accentedoperators
\newif\ifspanish@spacedoperators
\newif\ifspanish@locoperators
-\define@choicekey*+{spanish}{spanishoperators}[\xpg@val\xpg@nr]{all,accented,spaced,none}[all]{%
- \ifcase\xpg@nr\relax
- % all:
- \spanish@locoperatorstrue%
- \spanish@accentedoperatorstrue%
- \spanish@spacedoperatorstrue%
- \or
- % accented:
- \spanish@locoperatorsfalse%
- \spanish@accentedoperatorstrue%
- \spanish@spacedoperatorsfalse%
- \or
- % spaced:
- \spanish@locoperatorsfalse%
- \spanish@accentedoperatorsfalse%
- \spanish@spacedoperatorstrue%
- \or
- % none:
- \spanish@locoperatorsfalse%
- \spanish@accentedoperatorsfalse%
- \spanish@spacedoperatorsfalse%
- \fi
- \xpg@info{Option: Spanish, spanishoperators=\xpg@val}%
-}{\xpg@warning{Unknown spanishoperators value `#1'}}
-
+\DeclareKeys[polyglossia/gloss/spanish]
+ {
+ variant.choice:,
+ variant / spanish.code =
+ {%
+ \@spanish@mexicofalse
+ \SetLanguageKeys{spanish}{babelname=spanish,bcp47=es-ES,bcp47-region=ES}%
+ },
+ variant / mexican.code =
+ {%
+ \@spanish@mexicotrue
+ \SetLanguageKeys{spanish}{babelname=spanishmx,bcp47=es-MX,bcp47-region=MX}%
+ },
+ variant.default:n = spanish,
+ variant/unknown.code = \xpg@warning{Unknown spanish variant `#1'},
+ spanishoperators.choice:,
+ spanishoperators / all.code =
+ {%
+ \spanish@locoperatorstrue
+ \spanish@accentedoperatorstrue
+ \spanish@spacedoperatorstrue
+ },
+ spanishoperators / accented.code =
+ {%
+ \spanish@locoperatorsfalse
+ \spanish@accentedoperatorstrue
+ \spanish@spacedoperatorsfalse
+ },
+ spanishoperators / spaced.code =
+ {%
+ \spanish@locoperatorsfalse
+ \spanish@accentedoperatorsfalse
+ \spanish@spacedoperatorstrue
+ },
+ spanishoperators / none.code =
+ {%
+ \spanish@locoperatorsfalse
+ \spanish@accentedoperatorsfalse
+ \spanish@spacedoperatorsfalse
+ },
+ spanishoperators.default:n = all,
+ spanishoperators/unknown.code = \xpg@warning{Unknown spanishoperators value `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{spanish}{variant=spanish,spanishoperators=none}
+\InitializeGlossOptions{spanish}{variant=spanish,spanishoperators=none}
\let\xpg@save@lim\lim
\let\xpg@save@limsup\limsup
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf
index 850f5564ec5..8d126e739ac 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-spanishmx.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-spanishmx.ldf}[polyglossia: module for Mexican Spanish]
% We provide this as a babel alias
-\xpg@load@master@language{spanish}
+\InheritGlossFile{spanish}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf
index a47304f1291..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.1 -- 2024/03/07)
+% 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 fe679140556..08bed4a210d 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-swissgerman.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-swissgerman.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-swissgerman.ldf}[polyglossia: module for Swiss German (old spelling)]
% We provide this as a babel alias
-\xpg@load@master@language{german}
+\InheritGlossFile{german}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf
index 7bd32c3ddcd..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-syriac.ldf}[polyglossia: module for Syriac]
@@ -22,34 +22,37 @@
% BCP-47 compliant aliases
\setlanguagealias*{syriac}{syr}
-\def\syriacnumber#1{\@syriacnumber{#1}}%
+\def\syriacnumber#1{\@syriacnumber{#1}}
\newif\if@eastern@numerals
-\define@choicekey*+{syriac}{numerals}[\xpg@val\xpg@nr]{eastern,western,abjad}[eastern]{%
- \ifcase\xpg@nr\relax
- % eastern:
- \@eastern@numeralstrue
- \SetLanguageKeys{syriac}{bcp47-extension-u=nu-syrc}%
- \or
- % western:
- \@eastern@numeralsfalse
- \SetLanguageKeys{syriac}{bcp47-extension-u=nu-latn}%
- \or
- % abjad:
- \let\syriacnumber\abjadsyriac%
- \fi
- \xpg@info{Option: Syriac, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Syriac numerals option `#1'}}
-
\newif\ifsyriac@customsep\syriac@customsepfalse
\def\xpg@sepmark{}
-\define@key{syriac}{sectionsep}[.]{%
- \syriac@customseptrue%
- \gdef\xpg@sepmark{#1}%
-}
+
+\DeclareKeys[polyglossia/gloss/syriac]
+ {
+ sectionsep.code = \gdef\xpg@sepmark{#1}\syriac@customseptrue,
+ sectionsep.default:n = .,
+ numerals.choice:,
+ numerals / eastern.code =
+ {%
+ \@eastern@numeralstrue
+ \SetLanguageKeys{syriac}{bcp47-extension-u=nu-syrc}%
+ },
+ numerals / western.code =
+ {%
+ \@eastern@numeralsfalse
+ \SetLanguageKeys{syriac}{bcp47-extension-u=nu-latn}%
+ },
+ numerals / abjad.code =
+ {%
+ \let\syriacnumber\abjadsyriac
+ },
+ numerals.default:n = eastern,
+ numerals/unknown.code = \xpg@warning{Unknown Syriac numerals option `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{syriac}{numerals=western}
+\InitializeGlossOptions{syriac}{numerals=western}
%\define@key{polyglossia}{syriaclocale}[default]{%
% \def\@syriac@locale{#1}}
@@ -136,13 +139,13 @@
\IfCharIsAvailableTF{0661}%
{\@ensure@LTR{\protect\arabicdigits{\number#1}}}%
{\@ensure@LTR{\arabicdigits{\number#1}}
- \ifcsdef{arabicfont}%
- {\@ensure@LTR{\protect\arabicdigits{\number#1}}%
- \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs:
- I am using \string\arabicfont instead}}%
+ \@ifundefined{arabicfont}%
{\number#1%%% <---changed from \RL{\protect\reset@font\protect\number#1}%
\xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs:
since \string\arabicfont is not defined, we'll use Western numerals instead}}%
+ {\@ensure@LTR{\protect\arabicdigits{\number#1}}%
+ \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs:
+ I am using \string\arabicfont instead}}%
}%
\else
%%\RL{\protect\reset@font\number#1}%
@@ -180,16 +183,16 @@
}
\def\nosyriac@xetex@capsformat{%
- \ifcsdef{xpg@save@sepmark}{%
+ \ifcsname xpg@save@sepmark\endcsname%
\SepMark{\xpg@save@sepmark}
- }{}%
+ \fi%
}
\def\syriac@luatex@capsformat{%
%
% change chapter and part headings
\ifsyriac@customsep
- \ifcsdef{chapter}{%
+ \ifcsname chapter\endcsname%
\let\xpg@save@thesection\thesection%
\renewcommand*\thesection{\thechapter\xpg@sepmark\@arabic\c@section}
\let\xpg@save@theequation\theequation%
@@ -201,7 +204,7 @@
\let\xpg@save@thetable\thetable%
\renewcommand*\thetable{%
\ifnum\c@chapter>\z@\thechapter\xpg@sepmark\fi\@arabic\c@table}
- }{}
+ \fi%
\let\xpg@save@thesubsection\thesubsection%
\renewcommand\thesubsection
{\thesection\xpg@sepmark\@arabic\c@subsection}
@@ -216,30 +219,30 @@
}
\def\nosyriac@luatex@capsformat{%
- \ifcsdef{xpg@save@thesection}{%
+ \ifcsname xpg@save@thesection\endcsname%
\let\thesection\xpg@save@thesection%
- }{}%
- \ifcsdef{xpg@save@theequation}{%
+ \fi%
+ \ifcsname xpg@save@theequation\endcsname%
\let\theequation\xpg@save@theequation%
- }{}%
- \ifcsdef{xpg@save@thefigure}{%
+ \fi%
+ \ifcsname xpg@save@thefigure\endcsname%
\let\thefigure\xpg@save@thefigure%
- }{}%
- \ifcsdef{xpg@save@thetable}{%
+ \fi%
+ \ifcsname xpg@save@thetable\endcsname%
\let\thetable\xpg@save@thetable%
- }{}%
- \ifcsdef{xpg@save@thesubsection}{%
+ \fi%
+ \ifcsname xpg@save@thesubsection\endcsname%
\let\thesubsection\xpg@save@thesubsection%
- \ifcsdef{xpg@save@thesubsubsection}{%
+ \ifcsname xpg@save@thesubsubsection\endcsname%
\let\thesubsubsection\xpg@save@thesubsubsection%
- }{}%
- }{}%
- \ifcsdef{xpg@save@theparagraph}{%
+ \fi%
+ \fi%
+ \ifcsname xpg@save@theparagraph\endcsname%
\let\theparagraph\xpg@save@theparagraph%
- }{}%
- \ifcsdef{xpg@save@thesubparagraph}{%
+ \fi%
+ \ifcsname xpg@save@thesubparagraph\endcsname%
\let\thesubparagraph\xpg@save@thesubparagraph%
- }{}%
+ \fi%
}
\def\blockextras@syriac{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf
index 3d737cfe785..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.1 -- 2024/03/07)
+% 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 25f4b29971f..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.1 -- 2024/03/07)
+% 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 ed530fbac5c..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.1 -- 2024/03/07)
+% 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:
@@ -29,19 +29,25 @@
\newif\if@thai@numerals
\def\tmp@thai{thai}
-\define@key{thai}{numerals}[arabic]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@thai
- \@thai@numeralstrue%
- \SetLanguageKeys{thai}{bcp47-extension-u=nu-thai}%
- \else
- \@thai@numeralsfalse%
- \SetLanguageKeys{thai}{bcp47-extension-u=nu-latn}%
- \fi
-}
+
+\DeclareKeys[polyglossia/gloss/thai]
+ {
+ numerals.choice:,
+ numerals / arabic.code =
+ {%
+ \@thai@numeralsfalse
+ \SetLanguageKeys{thai}{bcp47-extension-u=nu-latn}%
+ },
+ numerals / thai.code =
+ {%
+ \@thai@numeralstrue
+ \SetLanguageKeys{thai}{bcp47-extension-u=nu-thai}%
+ },
+ numerals.default:n = arabic,
+ }
% Register default options
-\xpg@initialize@gloss@options{thai}{numerals=arabic}
+\InitializeGlossOptions{thai}{numerals=arabic}
\def\captionsthai{%
\def\refname{หนังสืออ้างอิง}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf
index 70de9a9ac24..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-tibetan.ldf}[polyglossia: module for Tibetan]
%% Copyright 2013 Elie Roux
@@ -24,20 +24,18 @@
\setlanguagealias*{tibetan}{bo}
\newif\if@tibetan@numerals
-\def\tmp@tibetan{tibetan}
-\define@key{tibetan}{numerals}[tibetan]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@tibetan
- \@tibetan@numeralstrue%
- \SetLanguageKeys{tibetan}{bcp47-extension-u=nu-tibt}%
- \else
- \@tibetan@numeralsfalse%
- \SetLanguageKeys{tibetan}{bcp47-extension-u=nu-latn}%
- \fi%
-}
+\DeclareKeys[polyglossia/gloss/tibetan]
+ {
+ numerals.choice:,
+ numerals/tibetan.code = \@tibetan@numeralstrue
+ \SetLanguageKeys{tibetan}{bcp47-extension-u=nu-tibt},
+ numerals/arabic.code = \@tibetan@numeralsfalse
+ \SetLanguageKeys{tibetan}{bcp47-extension-u=nu-latn},
+ numerals.default:n = tibetan
+ }
\ifluatex
- \newluatexattribute\xpg@tibteol %
+ \newattribute\xpg@tibteol %
\directlua{polyglossia.load_tibt_eol()}%
\fi
@@ -62,7 +60,7 @@
}
% Register default options
-\xpg@initialize@gloss@options{tibetan}{numerals=tibetan}
+\InitializeGlossOptions{tibetan}{numerals=tibetan}
% some are known, but very few
% a few come from "Standardizing Tibetan Terms of Information Technology"
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf
index a6784ae276b..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.1 -- 2024/03/07)
+% 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 9ec398470e3..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.1 -- 2024/03/07)
+% 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 8093324dd00..1958f48ef74 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ug.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ug.ldf
@@ -1,8 +1,8 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% 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
-\xpg@load@master@language{uyghur}
+\InheritGlossFile{uyghur}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf
index bf09149725d..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-ukrainian.ldf}[polyglossia: module for Ukrainian]
% Strings taken from Babel
@@ -26,51 +26,52 @@
\newif\ifcyrillic@numerals
\newif\ifcyrillic@asbuk@numerals
-\define@choicekey*+{ukrainian}{numerals}[\xpg@val\xpg@nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
- \ifcase\xpg@nr\relax
- % arabic:
- \cyrillic@numeralsfalse%
- \cyrillic@asbuk@numeralsfalse%
- \SetLanguageKeys{ukrainian}{bcp47-extension-u=nu-latn}%
- \or
- % cyrillic:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \SetLanguageKeys{ukrainian}{bcp47-extension-u=nu-cyrl}%
- \or
- % cyrillic-trad:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralsfalse%
- \SetLanguageKeys{ukrainian}{bcp47-extension-u=nu-cyrl}%
- \or
- % cyrillic-alph:
- \cyrillic@numeralstrue%
- \cyrillic@asbuk@numeralstrue%
- \SetLanguageKeys{ukrainian}{bcp47-extension-u=nu-cyrl}%
- \fi
- \xpg@info{Option: Ukrainian, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Ukrainian numerals value `#1'}}
-
-% Define some math functions
-\define@boolkey{ukrainian}[ukrainian@]{mathfunctions}[true]{}
+\DeclareKeys[polyglossia/gloss/ukrainian]
+ {
+ babelshorthands.if = ukrainian@babelshorthands,
+ babelshorthands.default:n = true,
+ mathfunctions.if = ukrainian@mathfunctions,
+ mathfunctions.default:n = true,
+ numerals.choice:,
+ numerals / arabic.code =
+ {%
+ \cyrillic@numeralsfalse
+ \cyrillic@asbuk@numeralsfalse
+ \SetLanguageKeys{ukrainian}{bcp47-extension-u=nu-latn}%
+ },
+ numerals / cyrillic.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ \SetLanguageKeys{ukrainian}{bcp47-extension-u=nu-cyrl}%
+ },
+ numerals / cyrillic-trad.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralsfalse
+ \SetLanguageKeys{ukrainian}{bcp47-extension-u=nu-cyrl}%
+ },
+ numerals / cyrillic-alph.code =
+ {%
+ \cyrillic@numeralstrue
+ \cyrillic@asbuk@numeralstrue
+ \SetLanguageKeys{ukrainian}{bcp47-extension-u=nu-cyrl}%
+ },
+ numerals.default:n = arabic,
+ numerals/unknown.code = \xpg@warning{Unknown Ukrainian numerals value `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{ukrainian}{numerals=arabic,mathfunctions=true}
-
-\define@boolkey{ukrainian}[ukrainian@]{babelshorthands}[true]{}
+\InitializeGlossOptions{ukrainian}{numerals=arabic,mathfunctions=true}
\ifsystem@babelshorthands
- \setkeys{ukrainian}{babelshorthands=true}
+ \SetGlossOptions{ukrainian}{babelshorthands=true}
\else
- \setkeys{ukrainian}{babelshorthands=false}
+ \SetGlossOptions{ukrainian}{babelshorthands=false}
\fi
-\ifcsundef{initiate@active@char}{%
- \input{babelsh.def}%
- \initiate@active@char{"}%
- \shorthandoff{"}%
-}{}
+\InitializeBabelShorthands
\def\ukrainian@shorthands{%
\xpg@activate@shorthands%
@@ -107,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 9ca440a885c..9e25f61d2ea 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-uppersorbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-uppersorbian.ldf
@@ -1,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-uppersorbian.ldf}[polyglossia: module for Upper Sorbian]
% We provide this as a babel alias
-\xpg@load@master@language{sorbian}
+\InheritGlossFile{sorbian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf
index f95459e7d5b..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.1 -- 2024/03/07)
+% 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]
@@ -25,52 +25,46 @@
\setlanguagealias*{urdu}{ur}
\newif\if@western@numerals
-\define@choicekey*+{urdu}{numerals}[\xpg@val\xpg@nr]{eastern,western}[eastern]{%
- \ifcase\xpg@nr\relax
- % eastern:
- \@western@numeralsfalse%
- \SetLanguageKeys{urdu}{bcp47-extension-u=nu-arab}%
- \or
- % western:
- \@western@numeralstrue%
- \SetLanguageKeys{urdu}{bcp47-extension-u=nu-latn}%
- \fi
- \xpg@info{Option: Urdu, numerals=\xpg@val}%
-}{\xpg@warning{Unknown Urdu numerals option `#1'}}
-
\newif\ifurdu@customsep\urdu@customsepfalse
\def\xpg@sepmark{}
-\define@key{urdu}{sectionsep}[.]{%
- \urdu@customseptrue%
- \gdef\xpg@sepmark{#1}%
-}
-
-%this is needed for \abjad in arabicnumbers.sty
-\define@boolkey{urdu}[urdu@]{abjadjimnotail}[true]{%
- \ifurdu@abjadjimnotail
- \abjad@jim@notailtrue%
- \else
- \abjad@jim@notailfalse
- \fi%
-}
-
\newif\if@hijrical
-\define@choicekey*+{urdu}{calendar}[\xpg@val\xpg@nr]{gregorian,hijri}[gregorian]{%
- \ifcase\xpg@nr\relax
- % gregorian:
- \@hijricalfalse
- \or
- % hijri:
- \@hijricaltrue
- \fi
- \xpg@info{Option: Urdu, calendar=\xpg@val}%
-}{\xpg@warning{Unknown Urdu calendar option `#1'}}
-\define@key{urdu}{hijricorrection}[0]{%
- \gdef\urdu@hijri@correction{#1}}%
+\DeclareKeys[polyglossia/gloss/urdu]
+ {
+ abjadjimnotail.if = abjad@jim@notail,
+ abjadjimnotail.default:n = true,
+ sectionsep.code = \gdef\xpg@sepmark{#1}\urdu@customseptrue,
+ sectionsep.default:n = .,
+ hijricorrection.code = \gdef\urdu@hijri@correction{#1},
+ hijricorrection.default:n = 0,
+ calendar.choice:,
+ calendar / gregorian.code =
+ {%
+ \@hijricalfalse
+ },
+ calendar / hijri.code =
+ {%
+ \@hijricaltrue
+ },
+ calendar.default:n = gregorian,
+ calendar/unknown.code = \xpg@warning{Unknown Urdu calendar option `#1'},
+ numerals.choice:,
+ numerals / eastern.code =
+ {%
+ \@western@numeralsfalse
+ \SetLanguageKeys{urdu}{bcp47-extension-u=nu-arab}%
+ },
+ numerals / western.code =
+ {%
+ \@western@numeralstrue
+ \SetLanguageKeys{urdu}{bcp47-extension-u=nu-latn}%
+ },
+ numerals.default:n = eastern,
+ numerals/unknown.code = \xpg@warning{Unknown Urdu numerals option `#1'}
+ }
% This should set the defaults
-\setkeys{urdu}{calendar,numerals,hijricorrection}
+\SetGlossOptions{urdu}{calendar,numerals,hijricorrection}
\def\urdugregmonth#1{\ifcase#1%
\or جنوری\or فروری\or مارچ\or اپریل\or مئی\or جون\or جولائی\or اگست\or ستمبر\or اکتوبر\or نومبر\or دسمبر\fi}
@@ -157,16 +151,16 @@
}
\def\nourdu@xetex@capsformat{%
- \ifcsdef{xpg@save@sepmark}{%
+ \ifcsname xpg@save@sepmark\endcsname%
\SepMark{\xpg@save@sepmark}
- }{}%
+ \fi%
}
\def\urdu@luatex@capsformat{%
%
% change chapter and part headings
\ifurdu@customsep
- \ifcsdef{chapter}{%
+ \ifcsname chapter\endcsname%
\let\xpg@save@thesection\thesection%
\renewcommand*\thesection{\thechapter\xpg@sepmark\@arabic\c@section}
\let\xpg@save@theequation\theequation%
@@ -178,7 +172,7 @@
\let\xpg@save@thetable\thetable%
\renewcommand*\thetable{%
\ifnum\c@chapter>\z@\thechapter\xpg@sepmark\fi\@arabic\c@table}
- }{}
+ \fi%
\let\xpg@save@thesubsection\thesubsection%
\renewcommand\thesubsection
{\thesection\xpg@sepmark\@arabic\c@subsection}
@@ -193,30 +187,30 @@
}
\def\nourdu@luatex@capsformat{%
- \ifcsdef{xpg@save@thesection}{%
+ \ifcsname xpg@save@thesection\endcsname%
\let\thesection\xpg@save@thesection%
- }{}%
- \ifcsdef{xpg@save@theequation}{%
+ \fi%
+ \ifcsname xpg@save@theequation\endcsname%
\let\theequation\xpg@save@theequation%
- }{}%
- \ifcsdef{xpg@save@thefigure}{%
+ \fi%
+ \ifcsname xpg@save@thefigure\endcsname%
\let\thefigure\xpg@save@thefigure%
- }{}%
- \ifcsdef{xpg@save@thetable}{%
+ \fi%
+ \ifcsname xpg@save@thetable\endcsname%
\let\thetable\xpg@save@thetable%
- }{}%
- \ifcsdef{xpg@save@thesubsection}{%
+ \fi%
+ \ifcsname xpg@save@thesubsection\endcsname%
\let\thesubsection\xpg@save@thesubsection%
- \ifcsdef{xpg@save@thesubsubsection}{%
+ \ifcsname xpg@save@thesubsubsection\endcsname%
\let\thesubsubsection\xpg@save@thesubsubsection%
- }{}%
- }{}%
- \ifcsdef{xpg@save@theparagraph}{%
+ \fi%
+ \fi%
+ \ifcsname xpg@save@theparagraph\endcsname%
\let\theparagraph\xpg@save@theparagraph%
- }{}%
- \ifcsdef{xpg@save@thesubparagraph}{%
+ \fi%
+ \ifcsname xpg@save@thesubparagraph\endcsname%
\let\thesubparagraph\xpg@save@thesubparagraph%
- }{}%
+ \fi%
}
\def\blockextras@urdu{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf
index 028f7987e0d..e9a9cf545eb 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-usorbian.ldf
@@ -1,10 +1,10 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-usorbian.ldf}[polyglossia: module for Upper Sorbian]
% We only provide this gloss for babel compatibility. Since usorbian is
% a sorbian variety, we use 'sorbian' with variant 'upper' now.
-\xpg@load@master@language{sorbian}
+\InheritGlossFile{sorbian}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-uyghur.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-uyghur.ldf
index 4d2c0bde96b..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.1 -- 2024/03/07)
+% 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)
@@ -22,62 +22,72 @@
\newif\if@uyghur@swapcaptions
\newif\if@uyghur@swapheadings
\newif\if@uyghur@swapheaders
-\define@choicekey*+{uyghur}{swapstrings}[\xpg@val\xpg@nr]{all,captions,headings,headers,hheaders,none}[all]{%
- \ifcase\xpg@nr\relax
- % all:
- \@uyghur@swapcaptionstrue%
- \@uyghur@swapheadingstrue%
- \@uyghur@swapheaderstrue%
- \or
- % captions:
- \@uyghur@swapcaptionstrue%
- \@uyghur@swapheadingsfalse%
- \@uyghur@swapheadersfalse%
- \or
- % headings:
- \@uyghur@swapcaptionsfalse%
- \@uyghur@swapheadingstrue%
- \@uyghur@swapheadersfalse%
- \or
- % headers:
- \@uyghur@swapcaptionsfalse%
- \@uyghur@swapheadingsfalse%
- \@uyghur@swapheaderstrue%
- \or
- % hheaders:
- \@uyghur@swapcaptionsfalse%
- \@uyghur@swapheadingstrue%
- \@uyghur@swapheaderstrue%
- \or
- % none:
- \@uyghur@swapcaptionsfalse%
- \@uyghur@swapheadingsfalse%
- \@uyghur@swapheadersfalse%
- \fi
- \xpg@info{Option: Uyghur, swapstrings=\xpg@val}%
-}{\xpg@warning{Unknown Uyghur swapstrings value `#1'}}
-
\newif\if@uyghur@ordchapter
\newif\if@uyghur@romchapter
-\define@choicekey*+{uyghur}{chapterformat}[\xpg@val\xpg@nr]{ordinal,roman,arabic}[ordinal]{%
- \ifcase\xpg@nr\relax
- % ordinal:
- \@uyghur@ordchaptertrue%
- \@uyghur@romchapterfalse%
- \or
- % roman:
- \@uyghur@ordchapterfalse%
- \@uyghur@romchaptertrue%
- \or
- % arabic:
- \@uyghur@ordchapterfalse%
- \@uyghur@romchapterfalse%
- \fi
- \xpg@info{Option: Uyghur, chapterformat=\xpg@val}%
-}{\xpg@warning{Unknown Uyghur chapterformat value `#1'}}
+
+\DeclareKeys[polyglossia/gloss/uyghur]
+ {
+ chapterformat.choice:,
+ chapterformat / ordinal.code =
+ {%
+ \@uyghur@ordchaptertrue
+ \@uyghur@romchapterfalse
+ },
+ chapterformat / roman.code =
+ {%
+ \@uyghur@ordchapterfalse
+ \@uyghur@romchaptertrue
+ },
+ chapterformat / arabic.code =
+ {%
+ \@uyghur@ordchapterfalse
+ \@uyghur@romchapterfalse
+ },
+ chapterformat.default:n = ordinal,
+ chapterformat/unknown.code = \xpg@warning{Unknown Uyghur chapterformat value `#1'},
+ swapstrings.choice:,
+ swapstrings / all.code =
+ {%
+ \@uyghur@swapcaptionstrue
+ \@uyghur@swapheadingstrue
+ \@uyghur@swapheaderstrue
+ },
+ swapstrings / captions.code =
+ {%
+ \@uyghur@swapcaptionstrue
+ \@uyghur@swapheadingsfalse
+ \@uyghur@swapheadersfalse
+ },
+ swapstrings / headings.code =
+ {%
+ \@uyghur@swapcaptionsfalse
+ \@uyghur@swapheadingstrue
+ \@uyghur@swapheadersfalse
+ },
+ swapstrings / headers.code =
+ {%
+ \@uyghur@swapcaptionsfalse
+ \@uyghur@swapheadingsfalse
+ \@uyghur@swapheaderstrue
+ },
+ swapstrings / hheaders.code =
+ {%
+ \@uyghur@swapcaptionsfalse
+ \@uyghur@swapheadingstrue
+ \@uyghur@swapheaderstrue
+ },
+ swapstrings / none.code =
+ {%
+ \@uyghur@swapcaptionsfalse
+ \@uyghur@swapheadingsfalse
+ \@uyghur@swapheadersfalse
+ },
+ swapstrings.default:n = all,
+ swapstrings/unknown.code = \xpg@warning{Unknown Uyghur swapstrings value `#1'}
+ }
% Register default options
-\xpg@initialize@gloss@options{uyghur}{swapstrings=all,chapterformat=ordinal}
+\InitializeGlossOptions{uyghur}{swapstrings=all,chapterformat=ordinal}
\def\captionsuyghur{%
@@ -125,120 +135,104 @@
% change chapter and part headings
\if@uyghur@swapheadings
% With titlesec
- \ifcsdef{titleformat}{%
- \ifcsdef{H@old@part}{% Hyperref
- \let\xpg@save@part@format\H@old@part%
- \patchcmd{\H@old@part}%
- {\partname\nobreakspace\thepart}%
- {\the@uyghur@part\nobreakspace\partname}%
- {}%
- {\xpg@warning{Failed to patch part for Uyghur}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\the@uyghur@part\nobreakspace\partname}%
- {}%
- {\xpg@warning{Failed to patch part for Uyghur}}%
- }{}%
- }
- \ifcsdef{chapter}{%
- \titleformat\chapter[display]%
- {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
- {\the@uyghur@chapter\space\@chapapp}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
- }{}%
- }{% (not \ifdefined\titleformat)
+ \@ifundefined{titleformat}{%
% With KOMA
- \ifcsdef{sectionformat}{%
- \ifcsdef{partformat}{%
- \let\xpg@save@part@format\partformat%
- \renewcommand{\partformat}{\the@uyghur@part~\partname}%
- }{}%
- \ifcsdef{chapterformat}{%
- \let\xpg@save@chap@format\chapterformat%
- \renewcommand{\chapterformat}{\mbox{\the@uyghur@chapter%
- \IfUsePrefixLine{\nobreakspace\chapapp}{\enskip}}}%
- }{}%
- }{% (not \ifdefined\sectionformat)
+ \@ifundefined{sectionformat}{%
% With memoir
- \ifcsdef{@memptsize}{%
- \ifcsdef{@makechapterhead}{%
- \let\xpg@save@chap@format\@makechapterhead%
- \patchcmd{\@makechapterhead}{\printchaptername \chapternamenum \printchapternum}%
- {\chapnumfont\the@uyghur@chapter\chapternamenum\printchaptername}%
- {}%
- {\xpg@warning{Failed to patch chapter for Uyghur}}%
- }{}%
- \ifcsdef{H@old@part}{% Hyperref
- \let\xpg@save@part@format\H@old@part%
- \patchcmd{\H@old@part}{\printpartname \partnamenum \printpartnum}%
- {\chapnumfont\the@uyghur@part\partnamenum\printpartname}%
- {}%
- {\xpg@warning{Failed to patch part for Uyghur}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}{\printpartname \partnamenum \printpartnum}%
- {\chapnumfont\the@uyghur@part\partnamenum\printpartname}%
- {}%
- {\xpg@warning{Failed to patch part for Uyghur}}%
- }{}%
- }%
- }{% (not \ifdefined\@memptsize)
+ \@ifundefined{@memptsize}{%
% With standard classes
- \ifcsdef{@makechapterhead}{%
+ \@ifundefined{@makechapterhead}{}{%
\let\xpg@save@chap@format\@makechapterhead%
\patchcmd{\@makechapterhead}%
{\@chapapp\space \thechapter}%
{\the@uyghur@chapter\space \@chapapp}%
{}%
{\xpg@warning{Failed to patch chapter for Uyghur}}%
- }{}%
- \ifcsdef{H@old@part}{% Hyperref
+ }%
+ \@ifundefined{H@old@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\the@uyghur@part\nobreakspace\partname}%
+ {}%
+ {\@ifundefined{part}{}{\xpg@warning{Failed to patch part for Uyghur}}}%
+ }% (end \ifdefined\@part)
+ }{% Hyperref
\let\xpg@save@part@format\H@old@part%
\patchcmd{\H@old@part}%
{\partname\nobreakspace\thepart}%
{\the@uyghur@part\nobreakspace\partname}%
{}%
{\xpg@warning{Failed to patch part for Uyghur}}%
- }{% not hyperref
- \ifcsdef{@part}{%
- \let\xpg@save@part@format\@part%
- \patchcmd{\@part}%
- {\partname\nobreakspace\thepart}%
- {\the@uyghur@part\nobreakspace\partname}%
- {}%
- {\ifcsdef{part}{\xpg@warning{Failed to patch part for Uyghur}}{}}%
- }{}% (end \ifdefined\@part)
}% (end not hyperref)
- }% (end \ifdefined\@memptsize)
- }% (end \ifdefined\sectionformat)
+ }{% (\ifdefined\@memptsize)
+ \@ifundefined{@makechapterhead}{}{%
+ \let\xpg@save@chap@format\@makechapterhead%
+ \patchcmd{\@makechapterhead}{\printchaptername \chapternamenum \printchapternum}%
+ {\chapnumfont\the@uyghur@chapter\chapternamenum\printchaptername}%
+ {}%
+ {\xpg@warning{Failed to patch chapter for Uyghur}}%
+ }%
+ \@ifundefined{H@old@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}{\printpartname \partnamenum \printpartnum}%
+ {\chapnumfont\the@uyghur@part\partnamenum\printpartname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Uyghur}}%
+ }%
+ }{% Hyperref
+ \let\xpg@save@part@format\H@old@part%
+ \patchcmd{\H@old@part}{\printpartname \partnamenum \printpartnum}%
+ {\chapnumfont\the@uyghur@part\partnamenum\printpartname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Uyghur}}%
+ }%
+ }% (end \ifdefined\@memptsize)
+ }{% (\ifdefined\sectionformat)
+ \@ifundefined{partformat}{}{%
+ \let\xpg@save@part@format\partformat%
+ \renewcommand{\partformat}{\the@uyghur@part~\partname}%
+ }%
+ \@ifundefined{chapterformat}{}{%
+ \let\xpg@save@chap@format\chapterformat%
+ \renewcommand{\chapterformat}{\mbox{\the@uyghur@chapter%
+ \IfUsePrefixLine{\nobreakspace\chapapp}{\enskip}}}%
+ }%
+ }% (end \ifdefined\sectionformat)
+ }{% (\ifdefined\titleformat)
+ \@ifundefined{H@old@part}{% not hyperref
+ \@ifundefined{@part}{}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\the@uyghur@part\nobreakspace\partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Uyghur}}%
+ }%
+ }{% Hyperref
+ \let\xpg@save@part@format\H@old@part%
+ \patchcmd{\H@old@part}%
+ {\partname\nobreakspace\thepart}%
+ {\the@uyghur@part\nobreakspace\partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Uyghur}}%
+ }%
+ \@ifundefined{chapter}{}{%
+ \titleformat\chapter[display]%
+ {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
+ {\the@uyghur@chapter\space\@chapapp}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
+ }%
}% (end \ifdefined\titleformat)
\fi% (end \if@uyghur@swapheadings)
%
% Change running headers
\if@uyghur@swapheaders
- \ifcsdef{chapterformat}{%
- % With KOMA
- \let\xpg@save@chaptermark@format\chaptermarkformat%
- \renewcommand*\chaptermarkformat{%
- \the@uyghur@chapter\ \IfChapterUsesPrefixLine{\chapapp\enskip}{}}
- }{% (not \ifdefined\chapterformat)
- \ifcsdef{@memptsize}{%
- % With memoir
- \let\xpg@save@chaptermark@format\chaptermark%
- \renewcommand*\chaptermark[1]{%
- \markboth{\memUChead{%
- \ifnum \c@secnumdepth >\m@ne
- \ifbool{@mainmatter}{%
- \the@uyghur@chapter\ \@chapapp\ %
- }{}%
- \fi
- ##1}}{}}%
- }{% (not \ifdefined\@memptsize)
+ \@ifundefined{chapterformat}{%
+ \@ifundefined{@memptsize}{%
% With standard classes
- \ifcsdef{chaptermark}{%
+ \@ifundefined{chaptermark}{}{%
\ifpatchable{\chaptermark}%
{\@chapapp\ \thechapter.}%
{\let\xpg@save@chaptermark@format\chaptermark%
@@ -248,21 +242,38 @@
{}%
{\xpg@warning{Failed to patch chaptermark for Uyghur}}}%
{}%
- }{}% (end \ifdefined\sectionmark)
- \ifcsdef{sectionmark}{%
- \ifpatchable{\sectionmark}%
- {\thesection.}%
- {\let\xpg@save@sectionmark@format\sectionmark%
- \patchcmd{\sectionmark}%
- {\thesection.}%
- {\thesection}%
- {}%
- {\xpg@warning{Failed to patch sectionmark for Uyghur}}}%
- {}%
- }{}% (end \ifdefined\chaptermark)
+ }% (end \ifdefined\sectionmark)
+ \@ifundefined{sectionmark}{}{%
+ \ifpatchable{\sectionmark}%
+ {\thesection.}%
+ {\let\xpg@save@sectionmark@format\sectionmark%
+ \patchcmd{\sectionmark}%
+ {\thesection.}%
+ {\thesection}%
+ {}%
+ {\xpg@warning{Failed to patch sectionmark for Uyghur}}%
+ }%
+ {}%
+ }% (end \ifdefined\chaptermark)
+ }{% (\ifdefined\@memptsize)
+ % With memoir
+ \let\xpg@save@chaptermark@format\chaptermark%
+ \renewcommand*\chaptermark[1]{%
+ \markboth{\memUChead{%
+ \ifnum \c@secnumdepth >\m@ne
+ \ifbool{@mainmatter}{%
+ \the@uyghur@chapter\ \@chapapp\ %
+ }{}%
+ \fi
+ ##1}}{}}%
}% (end \ifdefined\@memptsize)
+ }{% (\ifdefined\chapterformat)
+ % With KOMA
+ \let\xpg@save@chaptermark@format\chaptermarkformat%
+ \renewcommand*\chaptermarkformat{%
+ \the@uyghur@chapter\ \IfChapterUsesPrefixLine{\chapapp\enskip}{}}
}% (end \ifdefined\chapterformat)
- \fi% (end \if@uyghur@swapheaders)
+ \fi% (end \if@uyghur@swapheaders)
}
\def\nouyghur@capsformat{%
@@ -272,62 +283,62 @@
\let\fnum@figure\xpg@save@fnum@figure%
%
% Reset chapter and part heading
- \ifcsdef{titleformat}{%
+ \@ifundefined{titleformat}{%
+ \@ifundefined{sectionformat}{%
+ % With memoir and standard classes
+ \@ifundefined{xpg@save@part@format}{}{%
+ \@ifundefined{H@old@part}{%
+ \let\@part\xpg@save@part@format%
+ }{%
+ \let\H@old@part\xpg@save@part@format%
+ }%
+ }%
+ \@ifundefined{xpg@save@chap@format}{}{%
+ \let\@makechapterhead\xpg@save@chap@format
+ }%
+ }{%
+ % With KOMA
+ \@ifundefined{xpg@save@part@format}{}{%
+ \let\partformat\xpg@save@part@format
+ }%
+ \@ifundefined{xpg@save@chap@format}{}{%
+ \let\chapterformat\xpg@save@chap@format
+ }%
+ }% (end \ifdefined\sectionformat)
+ }{% (\ifdefined\titleformat)
% With titlesec
- \ifcsdef{xpg@save@part@format}{%
- \ifcsdef{H@old@part}{%
- \let\H@old@part\xpg@save@part@format%
- }{%
+ \@ifundefined{xpg@save@part@format}{}{%
+ \@ifundefined{H@old@part}{%
\let\@part\xpg@save@part@format%
+ }{%
+ \let\H@old@part\xpg@save@part@format%
}%
- }{}%
- \ifcsdef{chapter}{%
+ }%
+ \@ifundefined{chapter}{}{%
\titleformat\chapter[display]%
{\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
{\@chapapp\space\thechapter}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
- }{}%
- }{% (not \ifdefined\titleformat)
- \ifcsdef{sectionformat}{%
- % With KOMA
- \ifcsdef{xpg@save@part@format}{%
- \let\partformat\xpg@save@part@format
- }{}%
- \ifcsdef{xpg@save@chap@format}{%
- \let\chapterformat\xpg@save@chap@format
- }{}%
- }{%
- % With memoir and standard classes
- \ifcsdef{xpg@save@part@format}{%
- \ifcsdef{H@old@part}{%
- \let\H@old@part\xpg@save@part@format%
- }{%
- \let\@part\xpg@save@part@format%
- }%
- }{}%
- \ifcsdef{xpg@save@chap@format}{%
- \let\@makechapterhead\xpg@save@chap@format
- }{}%
- }% (end \ifdefined\sectionformat)
+ }%
}% (end \ifdefined\titleformat)
%
% Reset headers
- \ifcsdef{chaptermarkformat}{%
- % With KOMA
- \ifcsdef{xpg@save@chaptermark@format}{%
- \let\chaptermarkformat\xpg@save@chaptermark@format%
- }{}%
- }{%
- \ifcsdef{chaptermark}{%
+ \@ifundefined{chaptermarkformat}{%
+ \@ifundefined{chaptermark}{}{%
% With memoir and standard classes
- \ifcsdef{xpg@save@chaptermark@format}{%
+ \@ifundefined{xpg@save@chaptermark@format}{}{%
\let\chaptermark\xpg@save@chaptermark@format%
- }{}%
- }{}% (end \ifdefined\chaptermark)
- \ifcsdef{sectionmark}{%
- \ifcsdef{xpg@save@sectionmark@format}{%
+ }%
+ }% (end \ifdefined\chaptermark)
+ \@ifundefined{sectionmark}{}{%
+ \@ifundefined{xpg@save@sectionmark@format}{}{%
\let\sectionmark\xpg@save@sectionmark@format%
- }{}%
- }{}% (end \ifdefined\sectionmark)
+ }%
+ }% (end \ifdefined\sectionmark)
+ }{%
+ % With KOMA
+ \@ifundefined{xpg@save@chaptermark@format}{}{%
+ \let\chaptermarkformat\xpg@save@chaptermark@format%
+ }%
}% (end \ifdefined\chapterformat)
}
@@ -363,22 +374,22 @@
\let\the@uyghur@chapter\thechapter
\def\uyghur@chapterformat{%
- \ifcsdef{part}{%
+ \@ifundefined{part}{}{%
\if@uyghur@ordchapter%
\renewcommand{\the@uyghur@part}{\uyghurord{part}}%
\fi%
\if@uyghur@romchapter%
\renewcommand{\the@uyghur@part}{\Roman{part}}%
\fi%
- }{}%
- \ifcsdef{chapter}{%
+ }%
+ \@ifundefined{chapter}{}{%
\if@uyghur@ordchapter%
\renewcommand{\the@uyghur@chapter}{\uyghurord{chapter}}%
\fi%
\if@uyghur@romchapter%
\renewcommand{\the@uyghur@chapter}{\Roman{chapter}}%
\fi%
- }{}%
+ }%
}
\def\uyghur@numbers{%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf
index d223d38d3a2..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.1 -- 2024/03/07)
+% 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 5b68cfa9d9c..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.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-welsh.ldf}[polyglossia: module for Welsh]
@@ -15,21 +15,26 @@
% BCP-47 compliant aliases
\setlanguagealias*{welsh}{cy}
-\providebool{welsh@formaldate}
+\@ifundefined{ifwelsh@formaldate}%
+ {\newif\ifwelsh@formaldate}{}
-\define@choicekey*+{welsh}{date}[\xpg@val\xpg@nr]{long,short}[short]{%
- \ifcase\xpg@nr\relax
- % long:
- \welsh@formaldatetrue
- \or
- % accented:
- \welsh@formaldatefalse
- \fi
- \xpg@info{Option: Welsh, date=\xpg@val}%
-}{\xpg@warning{Unknown date value `#1'}}
+\DeclareKeys[polyglossia/gloss/welsh]
+ {
+ date.choice:,
+ date / long.code =
+ {%
+ \welsh@formaldatetrue
+ },
+ date / short.code =
+ {%
+ \welsh@formaldatefalse
+ },
+ date.default:n = short,
+ date/unknown.code = \xpg@warning{Unknown date value `#1'},
+ }
% Register default options
-\xpg@initialize@gloss@options{welsh}{date=short}
+\InitializeGlossOptions{welsh}{date=short}
\def\captionswelsh{%
\def\refname{Cyfeiriadau}%
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 13a85e1f67e..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-zh-CN.ldf}[polyglossia: module for zh-CN (Chinese)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{chinese}
+\InheritGlossFile{chinese}
\endinput
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 10792a0d386..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,9 +1,9 @@
-% Language definition file (part of polyglossia v2.1 -- 2024/03/07)
+% Language definition file (part of polyglossia v2.3 -- 2024/09/23)
%
\ProvidesFile{gloss-zh-TW.ldf}[polyglossia: module for zh-TW (Chinese)]
% We provide this as a bcp47-compliant alias
-\xpg@load@master@language{chinese}
+\InheritGlossFile{chinese}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/hebrewcal.sty b/Master/texmf-dist/tex/latex/polyglossia/hebrewcal.sty
index c949624724e..679d2bfe6dd 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/hebrewcal.sty
+++ b/Master/texmf-dist/tex/latex/polyglossia/hebrewcal.sty
@@ -73,7 +73,7 @@
\ifnum#1<5000
\Hebrewnumeral{#1}%
\else
- \ifnum#1<6000 % current millenium, print without thousands
+ \ifnum#1<6000 % current millennium, print without thousands
\@tempcnta=#1\relax
\if@xpg@hebrew@fullyear\else\advance\@tempcnta by -5000\fi
\Hebrewnumeral{\@tempcnta}%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/hijrical.sty b/Master/texmf-dist/tex/latex/polyglossia/hijrical.sty
index 79da8d0020b..2d396f5f71c 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/hijrical.sty
+++ b/Master/texmf-dist/tex/latex/polyglossia/hijrical.sty
@@ -16,7 +16,7 @@ l3calc. Please update expl3!
\@ifundefined{@Remainder}{\input{cal-util.def}}{}
%% The following functions are straightforward implementation
-%% of Reingold & Dershowitz, Calendrical Calculations, The Millenium Edition
+%% of Reingold & Dershowitz, Calendrical Calculations, The Millennium Edition
%%
\def\@FixedFromHijri#1#2#3#4{% year,month,day,counter
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-korean.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-cjk-spacing.lua
index 59ec736b49d..4c1ba185455 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-korean.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-cjk-spacing.lua
@@ -1,6 +1,6 @@
--
--- polyglossia-korean.lua
--- part of polyglossia v2.1 -- 2024/03/07
+-- polyglossia-cjk-spacing.lua
+-- part of polyglossia v2.3 -- 2024/09/23
--
local glyph_id = node.id"glyph"
@@ -8,13 +8,17 @@ local hbox_id = node.id"hlist"
local vbox_id = node.id"vlist"
local glue_id = node.id"glue"
local penalty_id = node.id"penalty"
-local disc_id = node.id"disc"
+local whatsit_id = node.id"whatsit"
+local math_id = node.id"math"
--
--- attr_korean: variant = plain (0), classic (1), modern (2)
+-- attr_cjk: variant = plain: 0, JP/classic: 1, KR/modern: 2, SC: 3, TC: 4
--
-local attr_korean = luatexbase.attributes["xpg@attr@korean"]
-local attr_josa = luatexbase.attributes["xpg@attr@autojosa"]
+local attr_cjk = luatexbase.attributes["xpg@attr@cjkspacing"]
+--
+-- attr_josa: ONLY For Korean. DO NOT declare \newattribute for other langs
+--
+local attr_josa = luatexbase.attributes["xpg@attr@autojosa"]
--
-- characters after which linebreak is not allowed
@@ -63,9 +67,9 @@ local nobr_after = {
-- characters before which linebreak is not allowed
-- (currently, not much differences among the followings)
-- 1: normal chars
--- 2: hangul jamo vowels and trailing consonants
+-- 2: hangul jamo vowels and trailing consonants plus combinings
-- 3: kana small letters
--- 0: dashes (supress visible spacing)
+-- 0: dashes (suppress visible spacing after this char)
--
local nobr_before = setmetatable({
[0x21] = 1, -- ! EXCLAMATION MARK
@@ -76,7 +80,7 @@ local nobr_before = setmetatable({
[0x2D] = 0, -- - HYPHEN-MINUS
[0x2E] = 1, -- . FULL STOP
[0x2F] = 0, -- / SOLIDUS
- [0x3A] = 0, -- : COLON
+ [0x3A] = 1, -- : COLON
[0x3B] = 1, -- ; SEMICOLON
[0x3E] = 1, -- > GREATER-THAN SIGN
[0x3F] = 1, -- ? QUESTION MARK
@@ -88,11 +92,11 @@ local nobr_before = setmetatable({
[0xBB] = 1, -- » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
[0x2013] = 0, -- – EN DASH
[0x2014] = 0, -- — EM DASH
- [0x2015] = 1, -- ― HORIZONTAL BAR
+ [0x2015] = 0, -- ― HORIZONTAL BAR
[0x2019] = 1, -- ’ RIGHT SINGLE QUOTATION MARK
[0x201D] = 1, -- ” RIGHT DOUBLE QUOTATION MARK
- [0x2025] = 1, -- ‥ TWO DOT LEADER
- [0x2026] = 1, -- … HORIZONTAL ELLIPSIS
+ [0x2025] = 0, -- ‥ TWO DOT LEADER
+ [0x2026] = 0, -- … HORIZONTAL ELLIPSIS
[0x232A] = 1, -- 〉 RIGHT-POINTING ANGLE BRACKET
[0x3001] = 1, -- 、 IDEOGRAPHIC COMMA
[0x3002] = 1, -- 。 IDEOGRAPHIC FULL STOP
@@ -124,10 +128,10 @@ local nobr_before = setmetatable({
[0x308E] = 3, -- ゎ HIRAGANA LETTER SMALL WA
[0x3095] = 3, -- ゕ HIRAGANA LETTER SMALL KA
[0x3096] = 3, -- ゖ HIRAGANA LETTER SMALL KE
- [0x3099] = 1, -- COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
- [0x309A] = 1, -- COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
- [0x309B] = 1, -- ゛ KATAKANA-HIRAGANA VOICED SOUND MARK
- [0x309C] = 1, -- ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ [0x3099] = 2, -- COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+ [0x309A] = 2, -- COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ [0x309B] = 2, -- ゛ KATAKANA-HIRAGANA VOICED SOUND MARK
+ [0x309C] = 2, -- ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
[0x309D] = 1, -- ゝ HIRAGANA ITERATION MARK
[0x309E] = 1, -- ゞ HIRAGANA VOICED ITERATION MARK
[0x30A0] = 1, -- ゠ KATAKANA-HIRAGANA DOUBLE HYPHEN
@@ -147,9 +151,9 @@ local nobr_before = setmetatable({
[0x30FC] = 1, -- ー KATAKANA-HIRAGANA PROLONGED SOUND MARK
[0x30FD] = 1, -- ヽ KATAKANA ITERATION MARK
[0x30FE] = 1, -- ヾ KATAKANA VOICED ITERATION MARK
- [0xFE30] = 1, -- ︰ PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
- [0xFE31] = 1, -- ︱ PRESENTATION FORM FOR VERTICAL EM DASH
- [0xFE32] = 1, -- ︲ PRESENTATION FORM FOR VERTICAL EN DASH
+ [0xFE30] = 0, -- ︰ PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+ [0xFE31] = 0, -- ︱ PRESENTATION FORM FOR VERTICAL EM DASH
+ [0xFE32] = 0, -- ︲ PRESENTATION FORM FOR VERTICAL EN DASH
[0xFE36] = 1, -- ︶ PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
[0xFE38] = 1, -- ︸ PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
[0xFE3A] = 1, -- ︺ PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
@@ -176,18 +180,18 @@ local nobr_before = setmetatable({
[0xFF63] = 1, -- 」 HALFWIDTH RIGHT CORNER BRACKET
[0xFF64] = 1, -- 、 HALFWIDTH IDEOGRAPHIC COMMA
[0xFF65] = 1, -- ・ HALFWIDTH KATAKANA MIDDLE DOT
- [0xFF9E] = 1, -- ゙ HALFWIDTH KATAKANA VOICED SOUND MARK
- [0xFF9F] = 1, -- ゚ HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ [0xFF9E] = 2, -- ゙ HALFWIDTH KATAKANA VOICED SOUND MARK
+ [0xFF9F] = 2, -- ゚ HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
}, { __index = function(_,c)
if c >= 0x1160 and c <= 0x11FF then return 2 end
if c >= 0xD7B0 and c <= 0xD7FF then return 2 end
- if c >= 0x302A and c <= 0x302F then return 1 end
+ if c >= 0x302A and c <= 0x302F then return 2 end -- tone marks
if c >= 0x31F0 and c <= 0x31FF then return 3 end
if c >= 0xFF67 and c <= 0xFF70 then return 3 end
- if c >= 0xFE00 and c <= 0xFE0F then return 1 end
+ if c >= 0xFE00 and c <= 0xFE0F then return 2 end -- variation selectors
if c >= 0xFE10 and c <= 0xFE19 and not (c == 0xFE17) then return 1 end
if c >= 0xFE50 and c <= 0xFE58 then return 1 end
- if c >= 0xE0100 and c <= 0xE01EF then return 1 end
+ if c >= 0xE0100 and c <= 0xE01EF then return 2 end -- variation selecters
end
})
@@ -205,6 +209,7 @@ local function is_cjk (c)
or c >= 0xFF00 and c <= 0xFFEF
or c >= 0x1F100 and c <= 0x1F2FF
or c >= 0x20000 and c <= 0x2FA1F
+ or c >= 0x30000 and c <= 0x323AF
or nobr_after[c] and c > 0x2014
or nobr_before[c] and c > 0x2014
end
@@ -244,8 +249,28 @@ local charclass = setmetatable({
}, { __index = function() return 0 end })
--
+-- get character class
+-- var : variant = plain, JP/classic, KR/modern, SC, TC
+-- c : codepoint
+--
+local function get_charclass (var, c)
+ if var < 3 then
+ return charclass[c]
+ elseif var == 3 then
+ -- SC : these are left aligned
+ return (c == 0xFF01 or c == 0xFF1F) and 4 -- FULLWIDTH EXCLAMATION/QUESTION MARK
+ or (c == 0xFF1A or c == 0xFF1B) and 2 -- FULLWIDTH COLON/SEMICOLON
+ or charclass[c]
+ end
+ -- TC : these are center aligned
+ return (c == 0x3001 or c == 0xFF0C) and 3 -- IDEOGRAPHIC/FULLWIDTH COMMA
+ or (c == 0x3002 or c == 0xFF0E) and 3 -- IDEOGRAPHIC/FULLWIDTH FULL STOP -- 5 ?
+ or charclass[c]
+end
+
+--
-- table for spacing between char classes
--- 1 stands for 0.5*fontsize when variant=classic
+-- 1 stands for 0.5*fontsize when variant = JP/classic or SC or TC
--
local intercharclass = { [0] =
{ [0] = nil, {1,1}, nil, {.5,.5} },
@@ -277,7 +302,7 @@ end
--
-- return 0.5*fontsize of given fontid
--- space: true if variant=modern; then 0.5*interword_space
+-- space: true if variant=KR/modern; then 0.5*interword_space
--
local function get_font_size (fid, space)
local size = font.getparameters(fid)
@@ -291,7 +316,7 @@ end
--
-- charclass 1 thru 4 will be packed in \hbox to 0.5em{\hss? curr \hss?}
--- when variant=classic/modern
+-- when variant ~= plain
--
local function glyph_to_box (head, curr, class)
local g, h = curr
@@ -320,7 +345,7 @@ end
--
-- insert spacing defined as charclass[a][b] between a and b
-- f: fontid
--- var: variant = plain, classic, modern
+-- var: variant = plain, JP/classic, KR/modern, SC, TC
-- cc: charclass of current char
-- nc: charclass of next char
-- nobr: linebreak is not allowed
@@ -339,12 +364,16 @@ end
--
-- insert inter-character spacing in other normal cases
--- f: fontid
--- var: variant = plain, classic, modern
--- x: true between cjk and non-cjk (a little more spacing)
+-- f: fontid
+-- var: variant = plain, JP/classic, KR/modern, SC, TC
+-- nobr: no linebreak
+-- x: true between cjk and non-cjk (a little more spacing)
--
-local function insert_penalty_glue (head, curr, f, var, x)
- if var ~= 1 then
+local function insert_penalty_glue (head, curr, f, var, nobr, x)
+ if nobr then
+ local penalty = get_new_penalty(10000)
+ head, curr = node.insert_after(head, curr, penalty)
+ elseif var == 0 or var == 2 then
local penalty = get_new_penalty(50)
head, curr = node.insert_after(head, curr, penalty)
end
@@ -360,53 +389,66 @@ end
--
-- main process for linebreak and inter-character spacing
--- lb: true if pre_linebreak_filter
--
-local function korean_break (head, lb)
+local function cjk_break (head)
local curr = head
while curr do
- if curr.id == glyph_id then
- local var = node.has_attribute(curr, attr_korean)
+ if attr_cjk and (curr.id == glyph_id or curr.id == math_id and curr.subtype == 1) then
+ local var = node.has_attribute(curr, attr_cjk)
if var then
- local c, f = curr.char or 0, curr.font or 0
- local cc, cjkc = charclass[c], is_cjk(c)
+ local c, f = curr.char or 0, curr.font
+ local cc, cjkc = get_charclass(var, c), is_cjk(c)
-- compress cjk punctuations when charclass is 1 thru 4
if var > 0 and cc > 0 and cc < 5 then
head, curr = glyph_to_box(head, curr, cc)
end
- local next = curr.next
- if next and next.id == glyph_id then
+ local next = node.getnext(curr)
+ while next and next.id == whatsit_id do -- skip whatsit nodes
+ curr, next = next, node.getnext(next)
+ end
+
+ 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
- local nc = charclass[n]
+ f = f or next.font or 0 -- in case of curr == math_off
+
+ -- skip combining. or dash+dash case to suppress stretching
+ if nobr_before[n] == 2 or (nobr_before[c] == 0 and nobr_before[n] == 0) then
+ goto skip_combining
+ end
+
+ local nc = get_charclass(var, n)
local nobr = nobr_before[n] or nobr_after[c]
-- insert spacing as of intercharclass
if var > 0 and intercharclass[cc][nc] then
head, curr = insert_cjk_penalty_glue(head, curr, f, var, cc, nc, nobr)
- -- or insert spacing when linebreak is allowed
- elseif not nobr then
+ else
local cjkn = is_cjk(n)
-- if curr or next is cjk char
if cjkc or cjkn then
- -- if between cjk and non-cjk
- if var > 0 and not (cjkc and cjkn) and nobr_before[c] ~= 0 then
- head, curr = insert_penalty_glue(head, curr, f, var, true)
+ -- plain variant / cjk+cjk / nobr cjk+noncjk / after dash
+ -- : insert a 0pt glue
+ if var == 0 or (cjkc and cjkn) or nobr or nobr_before[c] == 0 then
+ head, curr = insert_penalty_glue(head, curr, f, var, nobr)
- -- or under pre_linebreak_filter
- elseif lb then
- head, curr = insert_penalty_glue(head, curr, f, var)
+ -- other cases: insert a small glue
+ else
+ head, curr = insert_penalty_glue(head, curr, f, var, nobr, true)
end
end
end
end
end
end
- curr = curr.next
+ ::skip_combining::
+ curr = node.getnext(curr)
end
return head
end
@@ -420,7 +462,7 @@ end
local function reorder_tm (head)
local curr, tone = node.slide(head)
while curr do
- if curr.id == glyph_id and node.has_attribute(curr, attr_korean) then
+ if curr.id == glyph_id and node.has_attribute(curr, attr_cjk) then
local f = font.getfont(curr.font) or font.fonts[curr.font]
if f and f.hb then -- harfbuzz do the right thing
tone = nil
@@ -436,7 +478,7 @@ local function reorder_tm (head)
end
end
end
- curr = curr.prev
+ curr = node.getprev(curr)
end
return head
end
@@ -523,7 +565,7 @@ local function get_prev_char (p)
local pc = get_prev_char(node.slide(p.head))
if pc then return pc end
end
- p = p.prev
+ p = node.getprev(p)
end
end
@@ -538,10 +580,10 @@ local function auto_josa (head)
if josa then
local cc = curr.char or 0
if josa == 0 then
- josa = josa_code[get_prev_char(curr.prev) or 0x30]
+ josa = josa_code[get_prev_char(node.getprev(curr)) or 0x30]
end
if cc == 0xC774 then
- local n = curr.next
+ local n = node.getnext(curr)
if n and n.char and n.char >= 0xAC00 and n.char <= 0xD7A3 then
else
cc = 0xAC00
@@ -560,7 +602,7 @@ local function auto_josa (head)
node.unset_attribute(curr, attr_josa)
end
end
- curr = curr.next
+ curr = node.getnext(curr)
end
for _,v in ipairs(tofree) do node.free(v) end
return head
@@ -571,39 +613,13 @@ end
-- As char value of glyphs can be changed by opentype GSUB process,
-- we have to occupy the first position among callback functions.
--
-local prepend_to_callback
-if luatexbase.base_add_to_callback then
- prepend_to_callback = function(name, func, desc)
- luatexbase.add_to_callback(name, func, desc, 1)
- end
-else
- prepend_to_callback = function(name, func, desc)
- local t = { {func, desc} }
- for _,v in ipairs(luatexbase.callback_descriptions(name)) do
- table.insert(t, {luatexbase.remove_from_callback(name, v)})
- end
- for _,v in ipairs(t) do
- luatexbase.add_to_callback(name, v[1], v[2])
- end
- end
-end
-
-prepend_to_callback ("pre_linebreak_filter",
- function(head)
- head = auto_josa(head)
- head = korean_break(head, true)
- head = reorder_tm(head)
- return head
- end,
- "polyglossia.lang_korean")
-
-prepend_to_callback ("hpack_filter",
- function(head)
- head = auto_josa(head)
- head = korean_break(head)
- head = reorder_tm(head)
- return head
- end,
- "polyglossia.lang_korean")
+luatexbase.add_to_callback( "pre_shaping_filter",
+function(head)
+ if attr_josa then head = auto_josa(head) end
+ head = cjk_break(head)
+ if attr_josa then head = reorder_tm(head) end
+ return head
+end,
+"polyglossia.lang_cjk_spacing")
-- vim:ft=lua:tw=0:sw=4:ts=4:expandtab
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua
index c2a1a27bebe..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.1 -- 2024/03/07
+-- 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 982f6ba8d4f..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.1 -- 2024/03/07
+-- 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 99e538b1613..a19b2152b62 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua
@@ -1,13 +1,12 @@
--
-- polyglossia-punct.lua
--- part of polyglossia v2.1 -- 2024/03/07
+-- part of polyglossia v2.3 -- 2024/09/23
--
require('polyglossia') -- just in case...
local add_to_callback = luatexbase.add_to_callback
-local remove_from_callback = luatexbase.remove_from_callback
-local priority_in_callback = luatexbase.priority_in_callback
+local declare_callback_rule = luatexbase.declare_callback_rule
local new_attribute = luatexbase.new_attribute
local node = node
@@ -331,13 +330,16 @@ local function activate(lang)
-- important to be able to intermix languages with different spacings
-- in one paragraph.
tex.setattribute(punct_attr, id)
- for _, callback_name in ipairs{ "pre_linebreak_filter", "hpack_filter" } do
- if not priority_in_callback(callback_name, "polyglossia-punct.process") then
- add_to_callback(callback_name, process, "polyglossia-punct.process", 1)
- end
- end
end
+add_to_callback("pre_linebreak_filter",process,"polyglossia-punct.process")
+add_to_callback("hpack_filter",process,"polyglossia-punct.process")
+declare_callback_rule("pre_linebreak_filter",
+ "polyglossia-punct.process", "before", "luaotfload.node_processor")
+declare_callback_rule("hpack_filter",
+ "polyglossia-punct.process", "before", "luaotfload.node_processor")
+
+
local function deactivate()
tex.setattribute(punct_attr, -0x7FFFFFFF) -- this value means "unset"
-- Though it would make compilation slightly faster, it is not possible to
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua
index 61b891ac283..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.1 -- 2024/03/07
+-- 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 8247e2deb33..aa3a9e430e3 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-tibt.lua
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-tibt.lua
@@ -1,30 +1,28 @@
--
-- polyglossia-tibt.lua
--- part of polyglossia v2.1 -- 2024/03/07
+-- part of polyglossia v2.3 -- 2024/09/23
--
require('polyglossia') -- just in case...
local add_to_callback = luatexbase.add_to_callback
local remove_from_callback = luatexbase.remove_from_callback
+local declare_callback_rule = luatexbase.declare_callback_rule
local priority_in_callback = luatexbase.priority_in_callback
local next, type = next, type
-
-local nodes, fonts, node = nodes, fonts, node
-
-local nodecodes = nodes.nodecodes --- <= preloaded node.types()
+local node = node
local insert_node_before = node.insert_before
local insert_node_after = node.insert_after
-local remove_node = nodes.remove
+local remove_node = node.remove
local copy_node = node.copy
local has_attribute = node.has_attribute
local end_of_math = node.end_of_math
if not end_of_math then -- luatex < .76
local traverse_nodes = node.traverse_id
- local math_code = nodecodes.math
+ local math_code = node.id('math_char')
local end_of_math = function (n)
for n in traverse_nodes(math_code, n.next) do
return n
@@ -32,10 +30,10 @@ if not end_of_math then -- luatex < .76
end
end
--- node types as of April 2013
-local glyph_code = nodecodes.glyph
-local penalty_code = nodecodes.penalty
-local kern_code = nodecodes.kern
+-- node types as of April 2024
+local glyph_code = node.id('glyph')
+local penalty_code = node.id('penalty')
+local kern_code = node.id('kern')
-- we make a new node, so that we can copy it later on
local penalty_node = node.new(penalty_code)
@@ -66,7 +64,6 @@ local function process(head)
end
end
elseif id == math_code then
- -- warning: this is a feature of luatex > 0.76
start = end_of_math(start) -- weird, can return nil .. no math end?
end
if start then
@@ -79,15 +76,13 @@ end
local callback_name = "pre_linebreak_filter"
local function activate()
- if not priority_in_callback (callback_name, "polyglossia-tibt.process") then
- add_to_callback(callback_name, process, "polyglossia-tibt.process", 1)
- end
+ add_to_callback(callback_name, process, "polyglossia-tibt.process")
+ declare_callback_rule(callback_name,
+ "polyglossia-tibt.process", "before", "luaotfload.node_processor")
end
local function desactivate()
- if priority_in_callback (callback_name, "polyglossia-tibt.process") then
- remove_from_callback(callback_name, "polyglossia-tibt.process")
- end
+ remove_from_callback(callback_name, "polyglossia-tibt.process")
end
polyglossia.activate_tibt_eol = activate
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua
index c07d8d9ac49..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.1 -- 2024/03/07
+-- part of polyglossia v2.3 -- 2024/09/23
--
local module_name = "polyglossia"
@@ -76,7 +76,7 @@ local function newloader(langentry)
end
-- language info will be written into the .log file
- local s = { "Language data for " .. langentry }
+ local s = { }
for k, v in pairs(langdata) do
if type(v) == 'table' then -- for 'synonyms'
s[#s+1] = k .. "\t" .. table.concat(v,',')
@@ -84,7 +84,10 @@ local function newloader(langentry)
s[#s+1] = k .. "\t" .. tostring(v)
end
end
- log_info(table.concat(s,"\n"))
+ local a = {}
+ for _,n in pairs(s) do table.insert(a, n) end
+ table.sort(a)
+ log_info("Language data for " .. langentry .. "\n" .. table.concat(a,"\n"))
--
-- LaTeX's \newlanguage increases language register (count19),
@@ -94,7 +97,7 @@ local function newloader(langentry)
-- this possible situation, our newloader() function will
-- unfortunately overwrite the language \lang@xyz.
--
- -- Threfore here we will compare LaTeX's \newlanguage number with
+ -- Therefore here we will compare LaTeX's \newlanguage number with
-- LuaTeX's lang.new() id and select the bigger one for our new
-- language object. Also we will update LaTeX's language register
-- by this new id, so that another possible \newlanguage should not
@@ -109,7 +112,7 @@ local function newloader(langentry)
local newlangid = math.max(langcnt, langid)
-- set language register for possible \newlanguage
tex.setcount('global', lang_register, newlangid)
- -- get new lang object if needeed
+ -- get new lang object if needed
if langid ~= newlangid then
langobject = lang.new(newlangid)
end
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty
index 20f6538d448..0e8b8f1c302 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty
@@ -1,32 +1,27 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage
- {polyglossia} {2024/03/07} {v2.1}
+ {polyglossia} {2024/09/23} {v2.3}
{Modern multilingual typesetting with XeLaTeX and LuaLaTeX}
+% TODO Handle remaining uses in the gloss files (\patchcmd)
+% and remove package call afterwards
\RequirePackage{etoolbox}
-\RequirePackage{xkeyval}[2008/08/13]
% Will raise error if used with anything else than XeTeX or LuaTeX
\RequirePackage{fontspec}[2010/06/08]% v2.0
\RequirePackage{iftex}
\prg_generate_conditional_variant:Nnn \clist_if_in:Nn {Ne} {TF, T, F} % check if needed
-% correct a bug in tracklang
-\AddToHook{package/tracklang/after}{%
- \IfPackageAtLeastTF{tracklang}{2019/08/30}
- {}
- {\cs_gset_eq:NN \AddTrackedLangage \AddTrackedLanguage}
-}
-
%% The following is for compatibility with Babel-aware package:
% \languageshorthands is provided by babelsh.def, which is
% only loaded by some glosses, but some classes presuppose
% it is there generally. So let's provide a stub:
\ProvideDocumentCommand \languageshorthands { m } {}
% These have to be provided at the end of the preamble
-\AddToHook{begindocument/before}{
- \cs_gset_eq:NN \bbl@set@language \xpg@set@language@aux % for biblatex
- \cs_gset_eq:NN \bbl@main@language \xpg@main@language % for biblatex
+\hook_gput_code:nnn {begindocument/before} {.}
+{
+ \cs_gset_eq:NN \bbl@set@language \xpg_set_language_aux:nn % for biblatex
+ \cs_gset_eq:NN \bbl@main@language \xpg_main_language_tl % for biblatex
\ProvideDocumentCommand \texorpdfstring { m m } { #1 } % dummy command if hyperref is not loaded
}
@@ -35,16 +30,31 @@
%% \l@nohyphenation is defined in polyglossia.lua
\sys_if_engine_luatex:TF
{
- \RequirePackage{luatexbase} % already included by fontspec, but needed here
- \RequireLuaModule{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 boudary class? 4095 or 255
+% Which version of XeTeX do we use? What is the boundary class? 4095 or 255
\cs_if_exist:cTF { e@alloc@intercharclass@top }
- { \let\xpg@boundaryclass=\e@alloc@intercharclass@top }
+ { \cs_gset_eq:NN \xpg@boundaryclass \e@alloc@intercharclass@top }
{ \chardef\xpg@boundaryclass=\@cclv }
% Useful for getting list of loaded languages and variants. Like babel's bbl@loaded
@@ -71,135 +81,207 @@
}
%% 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
- \let\latin@alph\@alph % TODO rename when we have the C locale
- \let\latin@Alph\@Alph % TODO rename when we have the C locale
+ \cs_gset_eq:cc{latin@alph}{@alph}% TODO rename when we have the C locale
+ \cs_gset_eq:cc{latin@Alph}{@Alph}% TODO rename when we have the C locale
% push to C language gloss
- \let\polyglossia@Clang@@arabic\@arabic
- \let\polyglossia@Clang@arabic\arabic
+ \cs_gset_eq:cc{xpg_Clang_arabic}{@arabic}
\xpg_initial_setup:
% apply \familydefault changes
- \xpg@set@familydefault
-}
-
-\AddToHook{begindocument}{
- \__xpg_at_begin_document:
+ \xpg_set_familydefault:
}
% 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
-\AddToHook{begindocument/end}{
+\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 }
}
-%% custom message macros
-\providecommand*{\xpg@error}[1]{
- \PackageError{polyglossia}{#1}{}
+%
+% MESSAGES
+%
+
+% message templates
+\msg_new:nnn { polyglossia } { general } { #1 }
+
+\msg_new:nnn { polyglossia } { languagenotloaded }
+{
+ The~ language~ #1~ is~ not~ loaded.~ You~ must~ load~ it~ in~ order~ to~ use~ it.
+}
+\msg_redirect_name:nnn { polyglossia } { languagenotloaded } { critical }
+
+\msg_new:nnn { polyglossia } { languagenolongerloaded }
+{
+ The~ language~ #1~ is~ no~ longer~ loaded.~ Please~ rerun~ LaTeX.
}
+\msg_redirect_name:nnn { polyglossia } { languagenolongerloaded } { warning }
-\providecommand*{\xpg@warning}[1]{
- \PackageWarning{polyglossia}{#1}
+\msg_new:nnn { polyglossia } { unknownlocalnumeral }
+{
+ Unknown~ key~ "#1"~ in~ \string\localnumeral.
}
-\providecommand*{\xpg@info}[1]{
- \PackageInfo{polyglossia}
- {#1\@gobble}
-} %% the \@gobble is to prevent displaying the line nr
+\msg_new:nnn { polyglossia } { localnumeralemptyvalue }
+{
+ Keys~ of~ \string\localnumeral~ must~ have~ a~ value.
+}
-%TODO change all instances of \xpg@nopatterns in gloss-*.ldf files
-\providecommand*{\xpg@nopatterns@fallback}[2][nohyphenation]{
- \xpg@warning{No~ hyphenation~ patterns~ were~ loaded~ for~ `#2'\MessageBreak
- I~ will~ use~ \string\language=\string\l@ #1\space instead}
- \expandafter\adddialect\csname l@#2\expandafter\endcsname\csname l@#1\endcsname\relax}
+\msg_new:nnn { polyglossia } { illvalue }
+{
+ Illegal~ value~ (#1)~ for~ #2!
+}
-\providecommand*{\xpg@nopatterns}[1]{
- \xpg@warning{No~ hyphenation~ patterns~ were~ loaded~ for~ `#1'\MessageBreak
- I~ will~ use~ \string\language=\string\l@nohyphenation\space instead}
- %%TODO? \expandafter\adddialect\csname l@#1\endcsname\l@nohyphenation\relax
- }
+\msg_new:nnn { polyglossia } { illarg }
+{
+ Invalid~ argument~ (#1)~ for~ #2!
+}
-\def\xpg@ill@value#1#2{
- \xpg@warning{Illegal~ value~ (#1)~ for~ #2}}
+\msg_new:nnn { polyglossia } { nopatterns }
+{
+ No~ hyphenation~ patterns~ were~ loaded~ for~ `#2' \iow_newline:
+ I~ will~ use~ \string\language=\string\l@ #1\space instead.
+}
-% error out if lang is not loaded
-\cs_new_nopar:Nn \xpg_error_if_lang_not_loaded:n
+\msg_new:nnn { polyglossia } { undefcmd }
{
- \seq_if_in:NeF \__xpg_langs_loaded {#1}
- {
- \xpg@error{language~ #1~ is~ not~ loaded.~ Please~ load~ it~ before~ using~ it.}
- }
+ \tl_to_str:N {#1} ~ is~ not~ defined!
}
-\msg_new:nnn { polyglossia } { languagenotloaded }
+%% custom message macros
+\cs_new_nopar:Nn \xpg_error_msg:n
{
- The~ language~ #1~ is~ not~ loaded.~ You~ should~ load~ it.
+ \exp_args:Nnne \msg_error:nnn { polyglossia } { general } { #1 }
}
-\msg_redirect_name:nnn { polyglossia } { languagenotloaded } { critical }
-\msg_new:nnn { polyglossia } { languagenolongerloaded }
+\cs_new_nopar:Nn \xpg_warning_msg:n
{
- The~ language~ #1~ is~ no~ longer~ loaded.~ Please~ rerun~ LaTeX.
+ \exp_args:Nnne \msg_warning:nnn { polyglossia } { general } { #1 }
}
-\msg_redirect_name:nnn { polyglossia } { languagenolongerloaded } { warning }
-\msg_new:nnn { polyglossia } { unknownlocalnumeral }
+\cs_new_nopar:Nn \xpg_info_msg:n
{
- Unknown~ key~ "#1"~ in~ \string\localnumeral.
+ \exp_args:Nnne \msg_info:nnn { polyglossia } { general } { #1 }
}
-\msg_new:nnn { polyglossia } { localnumeralemptyvalue }
+\cs_new_nopar:Nn \xpg_no_patterns_msg:n
+{
+ \msg_warning:nnnn { polyglossia } { nopatterns } { nohyphenation } { #1 }
+}
+
+\cs_new_nopar:Nn \xpg_ill_value_msg:nn
+{
+ \msg_warning:nnnn { polyglossia } { illvalue } { #1 } { #2 }
+}
+
+\cs_new_nopar:Nn \xpg_ill_arg_msg:nn
{
- Keys~ of~ \string\localnumeral~ must~ have~ value.
+ \msg_error:nnnn { polyglossia } { illarg } { #1 } { #2 }
}
+% error out if lang is not loaded
+\cs_new_nopar:Nn \xpg_error_if_lang_not_loaded:n
+{
+ \seq_if_in:NeF \__xpg_langs_loaded {#1}
+ {
+ \msg_error:nnn { polyglossia } { languagenotloaded } { #1 }
+ }
+}
%% use macro if defined, else warn that it is not
\cs_new_nopar:Nn \__xpg_use_or_warn:N
{
\cs_if_exist_use:NF {#1}
{
- \xpg@warning { \tl_to_str:N {#1} ~ is~ not~ defined }
+ \msg_error:nnn { polyglossia } { undefcmd } { #1 }
}
}
\cs_generate_variant:Nn \__xpg_use_or_warn:N {c}
+% gloss message interface
+\cs_set_eq:cc { xpg@error } { xpg_error_msg:n }
+\cs_set_eq:cc { xpg@warning } { xpg_warning_msg:n }
+\cs_set_eq:cc { xpg@info } { xpg_info_msg:n }
+\cs_set_eq:cc { xpg@ill@value } { xpg_ill_value_msg:nn }
+
+
+\NewDocumentCommand \XPGNoPatternsFallback { O{ nohyphenation } m }
+{
+ \msg_warning:nnnn { polyglossia } { nopatterns } { #1 } { #2 }
+ \exp_args:Ncc \adddialect {l@#2} {l@#1}
+}
+
+\NewDocumentCommand \CheckHyphenationPatterns { m }
+{
+ \xpg_if_language_defined:nF {#1}
+ {
+ \XPGNoPatternsFallback{#1}
+ }
+}
+
+%
+% END MESSAGES
+
%% ensure directionality if bidi is loaded, else ignore
-\def\@@ensure@dir#1{\ifcsundef{@ensure@dir}{#1}{\@ensure@dir{#1}}}
-\def\@@ensure@maindir#1{\ifcsundef{@ensure@maindir}{#1}{\@ensure@maindir{#1}}}
+%%% FIXME still used?
+\cs_new_nopar:Npn \@@ensure@dir #1
+{
+ \cs_if_exist_use:c{@ensure@dir}{#1}
+}
-%% Used by the language definitions files for right-to-left languages
-\NewDocumentCommand \RequireBidi {}
+\cs_new_nopar:Npn \@@ensure@maindir #1
+{
+ \cs_if_exist_use:c{@ensure@maindir}{#1}
+}
+
+% if we are in the document preamble run T else F
+\prg_set_conditional:Nnn \xpg_if_in_preamble: {T, F, TF}
{
- \sys_if_engine_luatex:TF
- {\ifx\@onlypreamble\@notprerr\else\RequirePackage{luabidi}\fi}
- {\ifx\@onlypreamble\@notprerr\else\RequirePackage{bidi}\fi}
+ \cs_if_eq:NNTF { \@onlypreamble } { \@notprerr }
+ {
+ \prg_return_false:
+ }
+ {
+ \prg_return_true:
+ }
}
-% if #1 is LR run #2 else #3
+%% Used by the language definitions files for right-to-left languages
+\DeclareDocumentCommand \RequireBidi {}
+ {
+ \xpg_if_in_preamble:T
+ {
+ \sys_if_engine_luatex:TF
+ { \RequirePackage{luabidi} }
+ { \RequirePackage{bidi} }
+ }
+ \DeclareDocumentCommand \RequireBidi {} {}
+ }
+
+% if #1 is LR run T else F
\prg_set_conditional:Nnn \__xpg_if_LR_str:n {p, T, F, TF}
{
- \str_case_e:nnF{#1}{
+ \str_case_e:nnF{#1}
+ {
{LR}{\prg_return_true:}
{RL}{\prg_return_false:}
}
{
- \xpg@error{Unknown~ direction~#1}
+ \xpg_error_msg:n {Unknown~ direction~#1}
\prg_return_false:
}
}
@@ -212,17 +294,18 @@
{
\__xpg_if_LR_str:nF {#1}
{
- \xpg@error{right-to-left,~ but~ (lua)bidi~ package~ was~ not~ loaded!}
+ \xpg_error_msg:n {right-to-left,~ but~ (lua)bidi~ package~ was~ not~ loaded!}
}
}
\cs_new_nopar:Nn \__xpg_set_text_direction:n
{
\__xpg_if_LR_str:nF {#1}
{
- \xpg@error{right-to-left,~ but~ (lua)bidi~ package~ was~ not~ loaded!}
+ \xpg_error_msg:n {right-to-left,~ but~ (lua)bidi~ package~ was~ not~ loaded!}
}
}
-\AddToHook{package/bidi/after}{
+\hook_gput_code:nnn {package/bidi/after} {.}
+{
\cs_gset_nopar:Nn \__xpg_set_par_direction:n
{
\__xpg_if_LR_str:nTF{#1}
@@ -244,7 +327,8 @@
}
}
}
-\AddToHook{package/luabidi/after}{
+\hook_gput_code:nnn {package/luabidi/after} {.}
+{
\cs_gset_nopar:Nn \__xpg_set_par_direction:n
{
\__xpg_if_LR_str:nTF{#1}
@@ -273,13 +357,21 @@
{ \cs_new_nopar:Nn \__xpg_setRTLmain: { \@RTLmaintrue\setnonlatin } }
%% compatibility with babel
-\let\addto\gappto % gappto is defined in etoolbox
+\cs_set:Npn \addto #1 #2
+{
+ \cs_if_exist:NF { #1 }
+ { \cs_new:Npn { #1 } {} }
+ \tl_gput_right:Nn { #1 } { #2 }
+}
-%% NEW EXPERIMENTAL SETUP INTERFACE FOR GLOSS FILES
+%% SETUP INTERFACE FOR GLOSS FILES
%% options currently available:
%% language : the name of the language (as understood by fontspec)
%% hyphennames : the different hyphenation patterns to try (comma separated list)
-%%% TODO: if pattern is prefixed by !, then it should be loaded as a fallback, with \xpg@nopatterns@fallback - i.e. with a warning: e.g. sanskrit for hindi, or catalan for asturian. – Also for languages with variants! (English and German, etc.)
+%%% TODO: if pattern is prefixed by !, then it should be loaded as a fallback,
+%%%% with \CheckHyphenationPatterns - i.e. with a warning: e.g. sanskrit for hindi,
+%%%% or catalan for asturian. – Also for languages with variants!
+%%%% (English and German, etc.)
%% script : the name of the script (as understood by fontspec) – default is Latin
%% scripttag : the OpenType tag for the script
%% langtag : the OpenType tag for the language
@@ -287,19 +379,20 @@
%% frenchspacing : boolean
%% indentfirst : boolean
%% fontsetup : boolean
-%% TODO: nouppercase : boolean (for scripts like Arabic, Devanagari, etc which have no concept of uppercase/lowercase)
+%% TODO: nouppercase : boolean (for scripts like Arabic, Devanagari, etc which have
+%% no concept of uppercase/lowercase)
%% TODO: localalph = {<alph_csname>,<Alph_csname>}
%% TODO: localnumeral = <csname>
%% or even better localdigits = {0123456789} for fully automatic setup
-\newcommand*\PolyglossiaSetup[2]{
+\NewDocumentCommand \PolyglossiaSetup { m m }
+{
\__xpg_keys_define_lang:n{#1}
\keys_set:nn { polyglossia / #1 } { #2 }
\__xpg_setup_hyphen:n {#1}
%define booleans etoolbox style and set defaults
%% TODO ? \providetoggle{#1@setup@done}%
- % we initialize these so that we can use \gappto below
- \csgdef{init@extras@#1}{}
- \csgdef{init@noextras@#1}{} % we don't use this yet: remove?
+ % we initialize this so that we can append below
+ \cs_gset:cpn {init@extras@#1} {}
% here we do the fontsetup:
\__xpg_auto_setupfont:n { #1 }
%% TODO? \toggletrue{#1@setup@done}
@@ -318,35 +411,41 @@
\clist_map_inline:nn { #1 } { \keys_set:nn { polyglossia / ##1 } { #2 } }
}
-
+\bool_new:N \l__xpg_have_hyphen_bool
% setup hyphennames from a str list of hyphen
\cs_new:Nn \__xpg_setup_hyphen:n
{
- \clist_set:Ne{\l_tmpa_clist}{\prop_item:Nn \g_xpg_langsetup_prop {#1 / hyphennames}}
- \providebool{havehyphen}
- \boolfalse{havehyphen}
+ \clist_set:Ne{\l_tmpa_clist}{\prop_item:Nn \l_xpg_langsetup_prop {#1 / hyphennames}}
+ \bool_set_false:N \l__xpg_have_hyphen_bool
% for each hyphen in the set until we find one that works
- \clist_map_inline:Nn \l_tmpa_clist {
- \ifbool{havehyphen}{}{
+ \clist_map_inline:Nn \l_tmpa_clist
+ {
+ \bool_if:NF \l__xpg_have_hyphen_bool
+ {
% check if language hyphenname is defined
- \__xpg_check_if_exist_l@:nF{#1}{
+ \__xpg_pattern_check_if_exists:nF{#1}
+ {
% if not, first consider nohyphenation
\str_if_eq:nnTF{##1}{nohyphenation}
{
\cs_gset_eq:cc{l@#1}{l@##1}
- \global\booltrue{havehyphen}
- }{
+ \bool_gset_true:N \l__xpg_have_hyphen_bool
+ }
+ {
% then test if hyphenation is defined
- \xpg@ifdefined{##1}{
+ \xpg_if_language_defined:nT {##1}
+ {
% test if language hyphenation is nohyphenation
- \cs_if_eq:cNF{l@#1}{\l@nohyphenation}{\global\booltrue{havehyphen}}{%
+ \cs_if_eq:cNTF{l@#1}{\l@nohyphenation}
+ { \bool_gset_true:N \l__xpg_have_hyphen_bool }
+ {
% if false define language to hyphenation if it is not equal...
\str_if_eq:nnF{#1}{##1}{\cs_gset_eq:cc{l@#1}{l@##1}}
% ...and load
- \xpg@set@hyphenation@patterns{##1}
- \global\booltrue{havehyphen}
- }
- }{}
+ \xpg_set_hyphenation_patterns:n {##1}
+ \bool_gset_true:N \l__xpg_have_hyphen_bool
+ }
+ }
}
}
}
@@ -354,19 +453,17 @@
% if l@#1 does not yet exist,
% we assign it to nohyphenation
% we do this here in case and if the hyphennames key was omitted
- \ifbool{havehyphen}{}{
- \xpg@ifdefined{#1}{}
- {
- \xpg@nopatterns{#1}
- \expandafter\adddialect\csname l@#1\endcsname\l@nohyphenation\relax
- }
+ \bool_if:NF \l__xpg_have_hyphen_bool
+ {
+ \CheckHyphenationPatterns{#1}
}
- \csdef{#1@language}{
- \polyglossia@setup@language@patterns{#1}
+ \cs_gset:cpn {#1@language}
+ {
+ \SetupPolyglossiaLangPatterns{#1}
}
% setup hyphenmins
\clist_set:Ne \l_tmpa_clist
- { \prop_item:Nn \g_xpg_langsetup_prop {#1 / hyphenmins} }
+ { \prop_item:Nn \l_xpg_langsetup_prop {#1 / hyphenmins} }
\cs_if_eq:cNF {l@#1} \l@nohyphenation
{
\use:x
@@ -378,7 +475,8 @@
}
}
-\newcommand*\polyglossia@setup@language@patterns[1]{
+\NewDocumentCommand \SetupPolyglossiaLangPatterns { m }
+{
\bool_if:NTF \g__xpg_hyphenation_disabled_bool
{
\tl_gset:Ne \g__xpg_lastlanguage_tl {\the\csname l@#1\endcsname}
@@ -392,32 +490,29 @@
\language=\l@nohyphenation
}
{
- \xpg@set@hyphenation@patterns{#1}
+ \xpg_set_hyphenation_patterns:n {#1}
}
}
{
% Since this function is sometimes called from the gloss files
% directly, we need to check whether the requested hyphenname exists.
- \xpg@ifdefined{#1}{}
- {
- \xpg@nopatterns{#1}
- \expandafter\adddialect\csname l@#1\endcsname\l@nohyphenation\relax%
- }
- \xpg@set@hyphenation@patterns{#1}
+ \CheckHyphenationPatterns{#1}
+ \xpg_set_hyphenation_patterns:n {#1}
}
}
}
-\prop_new:N \g_xpg_langsetup_prop
+\prop_new_linked:N \l_xpg_langsetup_prop
\cs_new_protected:Npn \__xpg_keys_define_lang:n #1
{
- \keys_define:nn {polyglossia}{
+ \keys_define:nn {polyglossia}
+ {
% the script font
#1 / script
.code:n = {
- \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/script}{##1}
- \prop_gput:Nne{\g_xpg_langsetup_prop}{#1/lcscript}
+ \prop_put:Nnn \l_xpg_langsetup_prop {#1/script}{##1}
+ \prop_put:Nne \l_xpg_langsetup_prop {#1/lcscript}
{\tl_if_empty:nF{##1}{\str_lowercase:n{##1}}}
},
#1 / script
@@ -426,84 +521,89 @@
.initial:n = latin,
% the opentype script tag
#1 / scripttag
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/scripttag}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/scripttag}{##1}},
#1 / scripttag
.default:n = {},
#1 / scripttag
.initial:n = {},
% the language full name
#1 / language
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/language}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/language}{##1}},
#1 / language
.value_required:n = true,
#1 / language
.initial:x = {\str_uppercase:n#1},
% the language tag
#1 / langtag
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/langtag}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/langtag}{##1}},
#1 / langtag
.value_required:n = true,
#1 / langtag
.initial:n = {},
% the BCP-47 tag
#1 / bcp47
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/bcp47}{##1}},
#1 / bcp47
.value_required:n = true,
#1 / bcp47
.initial:n = {},
% the BCP-47 language tag
#1 / bcp47-language
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-language}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/bcp47-language}{##1}},
#1 / bcp47-language
.value_required:n = true,
#1 / bcp47-language
.initial:n = {},
% the BCP-47 region tag
#1 / bcp47-region
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-region}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/bcp47-region}{##1}},
#1 / bcp47-region
.value_required:n = false,
#1 / bcp47-region
.initial:n = {},
% the BCP-47 script tag
#1 / bcp47-script
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-script}{##1}},
+ .code:n =
+ {
+ \prop_put:Nnn \l_xpg_langsetup_prop {#1/bcp47-script}{##1}
+ \prop_put:Nne \l_xpg_langsetup_prop {#1/lc-bcp47-script}
+ {\tl_if_empty:nF{##1}{\str_lowercase:n{##1}}}
+ },
#1 / bcp47-script
.value_required:n = true,
#1 / bcp47-script
- .initial:n = {},
+ .initial:n = {Latn},
% the BCP-47 variant tag
#1 / bcp47-variant
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-variant}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/bcp47-variant}{##1}},
#1 / bcp47-variant
.value_required:n = false,
#1 / bcp47-variant
.initial:n = {},
% the BCP-47 extension-t tag
#1 / bcp47-extension-t
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-extension-t}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/bcp47-extension-t}{##1}},
#1 / bcp47-extension-t
.value_required:n = false,
#1 / bcp47-extension-t
.initial:n = {},
% the BCP-47 extension-u tag
#1 / bcp47-extension-u
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-extension-u}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/bcp47-extension-u}{##1}},
#1 / bcp47-extension-u
.value_required:n = false,
#1 / bcp47-extension-u
.initial:n = {},
% the BCP-47 extension-x tag
#1 / bcp47-extension-x
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-extension-x}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/bcp47-extension-x}{##1}},
#1 / bcp47-extension-x
.value_required:n = false,
#1 / bcp47-extension-x
.initial:n = {},
% the BCP-47 casing alias
#1 / bcp47-casing
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-casing}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/bcp47-casing}{##1}},
#1 / bcp47-casing
.value_required:n = false,
#1 / bcp47-casing
@@ -512,7 +612,7 @@
#1 / hyphennames
.code:n = {
\clist_set:Nn{\l_tmpa_clist}{##1}
- \prop_gput:Nne{\g_xpg_langsetup_prop}{#1/hyphennames}{\clist_use:Nn \l_tmpa_clist {,}}
+ \prop_put:Nne \l_xpg_langsetup_prop {#1/hyphennames}{\clist_use:Nn \l_tmpa_clist {,}}
},
#1 / hyphennames
.value_required:n = true,
@@ -525,8 +625,8 @@
{LR}{}
{RL}{\RequireBidi}
}
- {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/direction}{##1}}
- {\xpg@error{Unknown~ direction~ "##1"~ for~ language~ "#1"}}
+ { \prop_put:Nnn \l_xpg_langsetup_prop {#1/direction}{##1} }
+ { \xpg_error_msg:n {Unknown~ direction~ "##1"~ for~ language~ "#1"} }
},
#1 / direction
.value_required:n = true,
@@ -537,9 +637,9 @@
.code:n = {
% check syntax
\int_compare:nNnF { \clist_count:n {##1} } = {2}
- {\xpg@error{hypenmins~should~be~a~list~of~two~entries,~got~"##1"}}
+ { \xpg_error_msg:n {hypenmins~should~be~a~list~of~two~entries,~got~"##1"} }
% set prop
- \prop_gput:Nnn \g_xpg_langsetup_prop {#1/hyphenmins} {##1}
+ \prop_put:Nnn \l_xpg_langsetup_prop {#1/hyphenmins} {##1}
},
#1 / hyphenmins
.value_required:n = true,
@@ -550,9 +650,9 @@
.code:n = {
% check syntax
\int_compare:nNnF { \clist_count:n {##1} } = {1}
- {\xpg@error{totalhyphenhypenmin~should~be~a~single~entry,~got~"##1"}}
+ { \xpg_error_msg:n {totalhyphenhypenmin~should~be~a~single~entry,~got~"##1"} }
% set prop
- \prop_gput:Nnn \g_xpg_langsetup_prop {#1/totalhyphenmin} {##1}
+ \prop_put:Nnn \l_xpg_langsetup_prop {#1/totalhyphenmin} {##1}
},
#1 / totalhyphenmin
.value_required:n = false,
@@ -571,35 +671,35 @@
% environment name
#1 / envname
.code:n = {
- \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/envname}{##1}
+ \prop_put:Nnn \l_xpg_langsetup_prop {#1/envname}{##1}
},
#1/ envname.value_required:n = true,
#1/ envname.initial:n = {#1},
% babel name
#1 / babelname
.code:n = {
- \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/babelname}{##1}
+ \prop_put:Nnn \l_xpg_langsetup_prop {#1/babelname}{##1}
},
#1/ babelname.value_required:n = true,
#1/ babelname.initial:n = {#1},
% default numerals
#1 / localnumeral
. code:n = {
- \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/localnumeral}{##1}
- \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/Localnumeral}{##1}
+ \prop_put:Nnn \l_xpg_langsetup_prop {#1/localnumeral}{##1}
+ \prop_put:Nnn \l_xpg_langsetup_prop {#1/Localnumeral}{##1}
},
#1 / localnumeral.value_required:n = true,
- #1 / localnumeral.initial:n = {polyglossia@C@localnumeral},
+ #1 / localnumeral.initial:n = {xpg_C_localnumeral:nn},
% uppercased
#1 / Localnumeral
. code:n = {
- \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/Localnumeral}{##1}
+ \prop_put:Nnn \l_xpg_langsetup_prop {#1/Localnumeral}{##1}
},
#1 / Localnumeral.value_required:n = true,
- #1 / Localnumeral.initial:n = {polyglossia@C@localnumeral},
+ #1 / Localnumeral.initial:n = {xpg_C_localnumeral:nn},
% environment define command (by default create the environment)
#1 / DefineCommandsCmd
- .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/DefineCommandsCmd}{##1}},
+ .code:n = {\prop_put:Nnn \l_xpg_langsetup_prop {#1/DefineCommandsCmd}{##1}},
#1 / DefineCommandsCmd
.value_required:n = true,
#1 / DefineCommandsCmd
@@ -607,9 +707,20 @@
}
}
+\DeclareExpandableDocumentCommand \babelname { }
+ {
+ \prop_item:Ne \l_xpg_langsetup_prop { \languagename / babelname }
+ }
+
+\DeclareExpandableDocumentCommand \mainbabelname { }
+ {
+ \prop_item:Ne \l_xpg_langsetup_prop { \mainlanguagename / babelname }
+ }
+
% TODO move to C module
-\newcommand*{\polyglossia@C@localnumeral}[2]{
- \polyglossia@Clang@@arabic{#2}
+\cs_new:Nn \xpg_C_localnumeral:nn
+{
+ \xpg_Clang_arabic{#2}
}
\cs_new:Npn \__xpg_localnumeral_parse:nn #1 #2
@@ -633,7 +744,7 @@
\__xpg_localnumeral_parse:nn
} { #2 }
}
- { \use:c { \prop_item:Ne \g_xpg_langsetup_prop
+ { \use:c { \prop_item:Ne \l_xpg_langsetup_prop
{ \languagename / #3 } } { } { #1 } }
}
@@ -668,31 +779,31 @@
\cs_new_nopar:Npn \__xpg_indent_first:n #1
{
\bool_if:cTF { g__xpg_#1_if_bool }
- { \french@indent } { \nofrench@indent }
+ { \__xpg_french_indent: } { \__xpg_no_french_indent: }
}
\cs_new:Nn \__xpg_lang_set_par_direction:n
{
- \prop_get:NeNTF \g_xpg_langsetup_prop {#1/direction} \l_tmpa_tl
+ \prop_get:NeNTF \l_xpg_langsetup_prop {#1/direction} \l_tmpa_tl
{
\__xpg_set_par_direction:n{\l_tmpa_tl}
}
{
- \xpg@error{Could~ not~ retrieve~ key~ direction~ for~ language~ "#1"}
- \prop_show:N{\g_xpg_langsetup_prop}
+ \xpg_error_msg:n {Could~ not~ retrieve~ key~ direction~ for~ language~ "#1"}
+ \prop_show:N{\l_xpg_langsetup_prop}
}
}
\cs_new:Nn \__xpg_lang_set_text_direction:nn
{
- \prop_get:NeNTF \g_xpg_langsetup_prop {#1/direction} \l_tmpa_tl
+ \prop_get:NeNTF \l_xpg_langsetup_prop {#1/direction} \l_tmpa_tl
{
\__xpg_set_text_direction:n{\l_tmpa_tl}{#2}
}
{
- \xpg@error{Could~ not~ retrieve~ key~ direction~ for~ language~ "#1"}
- \prop_show:N{\g_xpg_langsetup_prop}
+ \xpg_error_msg:n {Could~ not~ retrieve~ key~ direction~ for~ language~ "#1"}
+ \prop_show:N{\l_xpg_langsetup_prop}
}
}
@@ -704,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:
@@ -723,7 +829,7 @@
{
\bool_gset_true:N \g__xpg_hyphenation_disabled_bool
\tl_gset:Ne \g__xpg_lastlanguage_tl { \the\language }
- % We do not call \xpg@set@hyphenation@patterns here to avoid a warning message.
+ % We do not call \xpg_set_hyphenation_patterns:n here to avoid a warning message.
% "nohyphenation" is not listed in language.dat.lua.
\language=\l@nohyphenation
}
@@ -735,19 +841,19 @@
{
\bool_gset_false:N \g__xpg_hyphenation_disabled_bool
\language=\tl_use:N{\g__xpg_lastlanguage_tl}
- }%
+ }
}
\cs_new:Npn \__xpg_auto_setupfont:n #1
{
\bool_if:cTF { g__xpg_#1_fontsetup_bool }
{
- \str_if_eq:eeTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript}}{latin}
- {\xpg@fontsetup@latin{#1}}
- {\xpg@fontsetup@nonlatin{#1}}
+ \str_if_eq:eeTF{\prop_item:Nn{\l_xpg_langsetup_prop}{#1/lcscript}}{latin}
+ {\SetupLatinPolyglossiaFont{#1}}
+ {\SetupNonLatinPolyglossiaFont{#1}}
}
{
- \xpg@info{Skipping~ automatic~ font~ setup~ for~ language~ #1}
+ \xpg_info_msg:n{Skipping~ automatic~ font~ setup~ for~ language~ #1}
}
}
@@ -759,44 +865,44 @@
\bool_if:nTF{\tl_if_empty_p:n{#1} || \tl_if_empty_p:n{#2}}
{
% maybe an error ?
- \xpg@warning{Asking~ to~ add~ empty~ feature~to~ main~ font~
+ \xpg_warning_msg:n{Asking~ to~ add~ empty~ feature~to~ main~ font~
(Language="#2"~ to~ langtag~ "#1")}
}
{
- \str_if_eq:nnTF{#2}{Turkish}{
+ \str_if_eq:nnTF{#2}{Turkish}
+ {
\fontspec_if_language:nTF {TRK}
{
\addfontfeature{Language=Turkish}
}
{
- \fontspec_if_language:nTF {TUR}
+ \fontspec_if_language:nT {TUR}
{
\addfontfeature{Language=Turkish}
- }{}
+ }
}
}{
- \fontspec_if_language:nTF{#1}
+ \fontspec_if_language:nT{#1}
{
\addfontfeature{Language=#2}
}
- {}
}
}
}
-\cs_generate_variant:Nn \__xpg_add_font_feature_language:nn { on , no, oo , Vn, nV, VV , xn, nx, xx}
+\cs_generate_variant:Nn \__xpg_add_font_feature_language:nn { ee }
-% add fontfeature Script=#2 to scripttag #1
-% do nothing if #1 or #2 is empty
+% add fontfeature Script=#3 to scripttag #2 for family #1
+% do nothing if #2 or #3 is empty
\cs_new:Nn \__xpg_add_font_feature_script:nnn
{
\bool_if:nTF{\tl_if_empty_p:n{#2} || \tl_if_empty_p:n{#3}}
{
% maybe an error ?
- \xpg@warning{Asking~ to~ add~ empty~ feature~to~ main~ font
+ \xpg_warning_msg:n{Asking~ to~ add~ empty~ feature~to~ main~ font
(Script="#3"~ to~ scripttag~ "#2")}
}
{
- \fontspec_if_script:nTF{#2}
+ \xpg_if_script:nTF{#2}
{\addfontfeature{Script=#3}}
{
\tl_set:Nn \xpg_ffamily_tl {}
@@ -817,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 /
@@ -828,118 +936,58 @@
\regex_replace_once:nnN { \.[^\.]* \Z } { } \xpg_fname_str
% ... and, finally, quotation marks
\regex_replace_once:nnN { " } { } \xpg_fname_str
- \xpg@error{
- The~ current~ main ~ \xpg_ffamily_tl\space font,~ \xpg_fname_str,~ does~ not~ contain~ the~"#3"~ script!\MessageBreak
- Please~ define~\csname\tl_if_empty:nF{#3}{\str_lowercase:n{#3}}font\xpg_ffamilysh_tl\endcsname~
- with~ \string\newfontfamily\space command
+ \xpg_error_msg:n
+ {
+ The~ current~ main ~ \xpg_ffamily_tl\space font,~ \xpg_fname_str,~ does~ not~ contain~ the~"#3"~ script! \iow_newline:
+ Please~ define~\csname\tl_if_empty:nF{#3}{\str_lowercase:n{#3}}font\xpg_ffamilysh_tl\endcsname~
+ with~ \string\newfontfamily\space command
}
}
}
}
-\cs_generate_variant:Nn \__xpg_add_font_feature_script:nnn { non , nno, noo , nVn, nnV, nVV , nxn, nnx, nxx}
-
-\def\xpg@fontsetup@latin#1{
- \begingroup
- \csgdef{#1@font@rm}{
- \cs_if_exist_use:cF{#1font}{
- \rmfamilylatin
- \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}}
- }
- }
- \csgdef{#1@font@sf}{
- \cs_if_exist_use:cF{#1fontsf}{
- \sffamilylatin
- \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}}
- }
- }
- \csgdef{#1@font@tt}{
- \cs_if_exist_use:cF{#1fonttt}{
- \ttfamilylatin
- \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}}
- }
- }
- \endgroup
-}
+\cs_generate_variant:Nn \__xpg_add_font_feature_script:nnn { nee }
-\def\xpg@fontsetup@nonlatin#1{
- \begingroup
- \csgdef{#1@font@rm}{
- \cs_if_exist_use:cF{#1font}
- {
- \providetoggle{#1@use@script@font}
- \str_if_eq:nnTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}}{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}}
- {\rmfamilylatin}
- {\cs_if_exist_use:cTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript} font}
- {
- \toggletrue{#1@use@script@font}
- }
- {
- \rmfamilylatin
- }
- }
- \iftoggle{#1@use@script@font}{}{
- \__xpg_add_font_feature_script:nxx{rm}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/scripttag}}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}}
- }%
- \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}}
- }%
- \def\familytype{rm}
- }%
- \csgdef{#1@font@sf}{
- \cs_if_exist_use:cF{#1fontsf}
+%% TODO: probably can be cleaned a little more
+\cs_new_protected:Npn \__xpg_setup_font:nnnnn #1 #2 #3 #4 #5 % #1 = lang, #2 = family, #3 = family, #4 = gobble, #5 gobble
+ {
+ \cs_set_protected_nopar:cpn { #1@font@#2 }
{
- \providetoggle{#1@use@script@fontsf}
- \str_if_eq:nnTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}}{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}}
- {\sffamilylatin}
- {\cs_if_exist_use:cTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript} fontsf}
+ \cs_if_exist_use:cF{ #1font#3 }
{
- \toggletrue{#1@use@script@fontsf}
- }
- {
- \sffamilylatin
- }
- }
- \iftoggle{#1@use@script@fontsf}{}{
- \__xpg_add_font_feature_script:nxx{sf}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/scripttag}}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}}
- }%
- \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}}
- }%
- \def\familytype{sf}
- }%
- \csgdef{#1@font@tt}{
- \cs_if_exist_use:cF{#1fonttt}
- {
- \providetoggle{#1@use@script@fonttt}
- \str_if_eq:nnTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}}{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}}
- {\ttfamilylatin}
- {\cs_if_exist_use:cTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript} fonttt}
- {
- \toggletrue{#1@use@script@fonttt}
- }
- {
- \ttfamilylatin
- }
- }
- \iftoggle{#1@use@script@fonttt}{}{
- \__xpg_add_font_feature_script:nxx{tt}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/scripttag}}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}}
- }
- \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}}
- {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}}
+ \cs_if_exist_use:cF { \prop_item:Nn \l_xpg_langsetup_prop { #1 / lc-bcp47-script } font#3 }
+ {
+ #4 { \prop_item:Nn \l_xpg_langsetup_prop { #1 / lcscript } font#3 }
+ {
+ \use:c { #2familylatin }
+ #5
+ {
+ \__xpg_add_font_feature_script:nee { #2 }
+ { \prop_item:Nn \l_xpg_langsetup_prop { #1 / scripttag } }
+ { \prop_item:Nn \l_xpg_langsetup_prop { #1 / script } }
+ }
+ }
+ }
+ \__xpg_add_font_feature_language:ee
+ { \prop_item:Nn \l_xpg_langsetup_prop { #1 / langtag } }
+ { \prop_item:Nn \l_xpg_langsetup_prop { #1 / language } }
+ }
+ \tl_set:Nn \familytype { #2 }
}
- \def\familytype{tt}
}
- \endgroup
-}
+
+\NewDocumentCommand \SetupLatinPolyglossiaFont { m }
+ {
+ \__xpg_setup_font:nnnnn { #1 } { rm } { } { \use_ii:nn } { \use_none:n }
+ \__xpg_setup_font:nnnnn { #1 } { sf } { sf } { \use_ii:nn } { \use_none:n }
+ \__xpg_setup_font:nnnnn { #1 } { tt } { tt } { \use_ii:nn } { \use_none:n }
+ }
+
+\NewDocumentCommand \SetupNonLatinPolyglossiaFont { m }
+ {
+ \__xpg_setup_font:nnnnn { #1 } { rm } { } { \cs_if_exist_use:cF } { \use:n }
+ \__xpg_setup_font:nnnnn { #1 } { sf } { sf } { \cs_if_exist_use:cF } { \use:n }
+ \__xpg_setup_font:nnnnn { #1 } { tt } { tt } { \cs_if_exist_use:cF } { \use:n }
+ }
%%% END OF PolyglossiaSetup
@@ -948,40 +996,53 @@
\cs_new_nopar:Nn \__xpg_local_marks:n { }
\cs_new_nopar:Nn \__xpg_enable_local_marks:
{
- \xpg@info{Option:~ localmarks}
+ \xpg_info_msg:n{Option:~ localmarks}
\cs_gset_nopar:Nn \__xpg_local_marks:n
{
- \def\xpg@tmp@lang{##1}
- \DeclareRobustCommand\markboth[2]{
- \begingroup
- \let\label\relax \let\index\relax \let\glossary\relax
- \unrestored@protected@xdef\@themark
- {
- {\lowercase{\foreignlanguage{\xpg@tmp@lang}}{\protect\@@ensure@maindir{####1}}}
- {\lowercase{\foreignlanguage{\xpg@tmp@lang}}{\protect\@@ensure@maindir{####2}}}
- }
- \@temptokena \expandafter{\@themark}
- \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
- {\lowercase{\foreignlanguage{\xpg@tmp@lang}}{\protect\@@ensure@maindir{####1}}}
- \@temptokena \expandafter{\@themark}
- \mark{\the\@temptokena}
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi
- }
+ \DeclareDocumentCommand \markboth { m m }
+ {
+ \group_begin:
+ \cs_set_eq:cc { label } { relax }
+ \cs_set_eq:cc { index } { relax }
+ \cs_set_eq:cc { glossary } { relax }
+ \unrestored@protected@xdef\@themark
+ {
+ {\foreignlanguage{##1}{\protect\@@ensure@maindir{####1}}}
+ {\foreignlanguage{##1}{\protect\@@ensure@maindir{####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}
+ \group_end:
+ \if@nobreak\ifvmode\nobreak\fi\fi
+ }
+ \DeclareDocumentCommand \markright { m }
+ {
+ \group_begin:
+ \cs_set_eq:cc { label } { relax }
+ \cs_set_eq:cc { index } { relax }
+ \cs_set_eq:cc { glossary } { relax }
+ \expandafter\@markright\@themark
+ {\foreignlanguage{##1}{\protect\@@ensure@maindir{####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}
+ \group_end:
+ \if@nobreak\ifvmode\nobreak\fi\fi
+ }
}
}
%we call this macro when a gloss file is not found for a given language
-\def\xpg@nogloss#1{
- \xpg@warning{File~ gloss-#1.ldf~ do~ not~ exists!\MessageBreak
- I~ will~ nevertheless~ try~ to~ use~ hyphenation~ patterns~ for~ #1.}
+\cs_new_nopar:Nn \__xpg_no_gloss:n
+{
+ \xpg_warning_msg:n
+ {File~ gloss-#1.ldf~ do~ not~ exists! \iow_newline:
+ I~ will~ nevertheless~ try~ to~ use~ hyphenation~ patterns~ for~ #1.}
+
\PolyglossiaSetup{#1}{hyphenmins={2,3},hyphennames={#1},fontsetup=true}
% the above amounts to:
%\ifcsundef{l@#1}%
@@ -990,59 +1051,64 @@
%\csdef{#1@language}{\language=\csname l@#1\endcsname}%
}
-\newcommand{\xpg@input}[1]{
+\cs_new_nopar:Nn \xpg_input:n
+{
% Store catcode of @ before making at letter
- \chardef\xpg@saved@at@catcode\catcode`\@
- \makeatletter
- \input{#1}
+ \cs_set_protected_nopar:Npx \__xpg_restore_at_catcode:
+ { \char_set_catcode:nn { `@ } { \char_value_catcode:n {`\@ } } }
+ \char_set_catcode_letter:N @
+ \file_input:n { #1 }
% restore former @ catcode
- \catcode`\@=\xpg@saved@at@catcode
+ \__xpg_restore_at_catcode:
}
% try to load a language file
-\cs_new:Nn \__xpg_load_lang_definition:nn {
- \file_if_exist:nTF{gloss-#2.ldf}
+\cs_new:Nn \__xpg_load_lang_definition:nn
+{
+ \file_if_exist:nTF{gloss-#2.ldf}
{
- % Temporarily force catcode of ~ to 13 since babelsh.def
+ \tl_set:Nn \xpg__tmp_default_options_tl { #1 }
+ % Temporarily force catcode of ~ to 13 (active) since babelsh.def
% requires it. This is needed particularly with LaTeX3
% packages which force \ExplSyntaxOn (#425)
- \protected\edef\xpg@restore@tilde@catcode{\catcode 126 = \the\catcode 126\relax}
- \catcode 126 = 13
- \xpg@input{gloss-#2.ldf}
- \setkeys{#2}{#1}
+ \cs_gset_protected:Npx \__xpg_restore_tilde_catcode:
+ { \char_set_catcode:nn { 126 } { \char_value_catcode:n { 126 } } }
+ \char_set_catcode_active:n { 126 }
+ \xpg_input:n {gloss-#2.ldf}
% restore former ~ catcode
- \xpg@restore@tilde@catcode
+ \__xpg_restore_tilde_catcode:
}
{
- \xpg@nogloss{#2}
+ \__xpg_no_gloss:n {#2}
}
}
\cs_generate_variant:Nn \__xpg_load_lang_definition:nn { ee }
% load a master language from an alias file
-\newcommand*\xpg@load@master@language[1] {
- \xpg@input{gloss-#1.ldf}
+\NewDocumentCommand \InheritGlossFile { m }
+{
\seq_if_in:NeF \__xpg_langs_loaded {#1}
{
+ \xpg_input:n {gloss-#1.ldf}
% define environment and command if not alias
\str_if_eq:eeT {\prop_item:Ne \__xpg_alias {#1/target}} {#1} {
- \use:c{\prop_item:Nn{\g_xpg_langsetup_prop}
+ \use:c{\prop_item:Nn{\l_xpg_langsetup_prop}
{#1/DefineCommandsCmd}}
{#1}
}
+ \seq_gput_right:Nn \__xpg_langs_loaded {#1}
}
\__xpg_register_language:nn{}{#1}
- \seq_gput_right:Nn \__xpg_langs_loaded {#1}
}
-\prop_new:N \__xpg_alias
+\prop_new_linked:N \__xpg_alias
% define environment and command if not alias
\cs_new:Nn \xpg_define_language_commands:n {
\str_if_eq:eeT {\prop_item:Ne \__xpg_alias {#1/target}} {#1}
{
\exp_args:Ne
- \NewDocumentEnvironment {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/envname}} { O{} }
+ \NewDocumentEnvironment {\prop_item:Nn{\l_xpg_langsetup_prop}{#1/envname}} { O{} }
{
\otherlanguage [ ##1 ] { #1 }
}
@@ -1070,7 +1136,7 @@
% target to self fall back to language table
\str_if_eq:eeTF { \prop_item:Ne \__xpg_alias {#1/target} } { #1 }
{
- \prop_item:Nn{\g_xpg_langsetup_prop} {#1/#2}
+ \prop_item:Nn{\l_xpg_langsetup_prop} {#1/#2}
}
% load alias by recursion
{
@@ -1193,20 +1259,29 @@
\clist_if_in:NeF \xpg@loaded {#2}{
\clist_gput_right:Ne \xpg@loaded {#2}
}
- % Register the language options
- \__xpg_set_language_options:nnn {#2} {#1} {@xpg@set@langvariant}
+ \group_begin:
+ % set language options
+ \__xpg_set_language_options:nn {#2} {#1}
% register babelname
- \prop_get:NeN \g_xpg_langsetup_prop {#2/babelname} \l_tmpa_tl
+ \prop_get:NeN \l_xpg_langsetup_prop {#2/babelname} \l_tmpa_tl
\clist_if_in:NeF \xpg@bloaded {\l_tmpa_tl}{
\clist_gput_right:Ne \xpg@bloaded {\l_tmpa_tl}
}
% register BCP-47 ID
- \prop_get:NeN \g_xpg_langsetup_prop {#2/bcp47} \l_tmpa_tl
+ \prop_get:NeN \l_xpg_langsetup_prop {#2/bcp47} \l_tmpa_tl
\clist_if_in:NeF \xpg@bcp@loaded {\l_tmpa_tl}{
\clist_gput_right:Ne \xpg@bcp@loaded {\l_tmpa_tl}
}
+ % register variant
+ \prop_get:NnNT \l_xpg_curropt_prop {#2/variant} \l_tmpa_tl {
+ \clist_if_in:NeF \xpg@vloaded {\l_tmpa_tl}{
+ \clist_gput_right:Ne \xpg@vloaded {\l_tmpa_tl}
+ }}
+ \group_end:
}
+\prop_new_linked:N \l_xpg_curropt_prop
+
\DeclareDocumentCommand \setdefaultlanguage { O{} m }
{
% latex is an internal language, so do not record
@@ -1221,12 +1296,13 @@
\__xpg_load_lang_definition:nn{#1}{#2}
% define environment and command if not alias
\str_if_eq:eeT {\prop_item:Ne \__xpg_alias {#2/target}} {#2} {
- \use:c{\prop_item:Ne{\g_xpg_langsetup_prop}
+ \use:c{\prop_item:Ne{\l_xpg_langsetup_prop}
{#2/DefineCommandsCmd}}
{#2}
}
\seq_gput_right:Ne \__xpg_langs_loaded {#2}
}
+ \cs_set_nopar:Npe \mainlanguagevariant { \prop_item:Ne \l_xpg_curropt_prop { \xpg_alias_base_lang:n{#2} / variant } }
\exp_args:Nee \__xpg_set_default_language:nn {\xpg_alias_add_to_option_i:nn{#2}{#1}}
{\xpg_alias_base_lang:n{#2}}
}
@@ -1234,70 +1310,23 @@
\cs_new:Nn \__xpg_set_default_language:nn
{
- \gdef\xpg@main@language{#2}
- \tl_if_blank:nTF {#1}
- {
- \cs_gset_nopar:Npn \mainlanguagevariant {}
- }
- {
- % Register the language options
- \__xpg_set_language_options:nnn {#2} {#1} {@xpg@main@langvariant}
- }
- \csgdef{#2@gvar}{\mainlanguagevariant}
+ \tl_gset:Nn \xpg_main_language_tl {#2}
%% The following settings are for the default language and script
% this tells bidi.sty or luabidi.sty that the document is RTL
- \__xpg_if_LR_str:eF{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/direction}}
+ \__xpg_if_LR_str:eF{\prop_item:Nn{\l_xpg_langsetup_prop}{#2/direction}}
{
\__xpg_setRTLmain:
}
- \cs_gset_nopar:Nn \__xpg_at_begin_document_selectlanguage: {
+ \cs_gset_nopar:Nn \__xpg_selectdefaultlanguage:
+ {
\selectbackgroundlanguage{#2}
- \selectlanguage[#1]{#2}%
+ \selectlanguage[#1]{#2}
}
- \xpg@info{Default~ language~ is~ #2}
- \polyglossia@set@language@name[#1]{#2}
+ \str_if_eq:eeF { #2 } { latex }
+ { \xpg_info_msg:n{Default~ language~ is~ #2} }
+ \xpg_set_language_name:n { #2 }
\cs_gset_nopar:Npn \mainlanguagename {#2}
- % Store babelname of main language (for external packages such as biblatex)
- \cs_gset_nopar:Npe \mainbabelname { \prop_item:Nn \g_xpg_langsetup_prop {#2/babelname} }
- % Store babelname of current language (for external packages such as biblatex)
- \cs_gset_eq:NN \babelname \mainbabelname
- \cs_gset_eq:cc{#2@gbabelname}{babelname}%
- % Store BCP-47 ID and subtags of main language:
- % 1. store main.* (sub)tags
- \cs_gset_nopar:cpe {bcp47.main.tag} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47 } }
- \cs_gset_nopar:cpe {bcp47.main.language} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-language } }
- \cs_gset_nopar:cpe {bcp47.main.region} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-region } }
- \cs_gset_nopar:cpe {bcp47.main.script} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-script } }
- \cs_gset_nopar:cpe {bcp47.main.variant} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-variant } }
- \cs_gset_nopar:cpe {bcp47.main.extension.t} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47extension-t } }
- \cs_gset_nopar:cpe {bcp47.main.extension.u} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-extension-u } }
- \cs_gset_nopar:cpe {bcp47.main.extension.x} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-extension-x } }
- % For casing, we fall back to language if bcp47-casing is not explicitly set
- \cs_set_nopar:cpx {tmpcasing} { \prop_item:Ne \g_xpg_langsetup_prop { #2 / bcp47-casing } }
- \str_if_empty:NTF \tmpcasing
- { \cs_gset_nopar:cpe {bcp47.main.casing} { \prop_item:Nn \g_xpg_langsetup_prop {#2 / bcp47-language} } }
- { \cs_gset_nopar:cpe {bcp47.main.casing} { \tmpcasing } }
- % 2. Store lang (sub)tags
- \cs_gset_eq:cc {bcp47.tag} {bcp47.main.tag}
- \cs_gset_eq:cc {bcp47.language} {bcp47.main.language}
- \cs_gset_eq:cc {bcp47.region} {bcp47.main.region}
- \cs_gset_eq:cc {bcp47.script} {bcp47.main.script}
- \cs_gset_eq:cc {bcp47.variant} {bcp47.main.variant}
- \cs_gset_eq:cc {bcp47.extension.t} {bcp47.main.extension.t}
- \cs_gset_eq:cc {bcp47.extension.u} {bcp47.main.extension.u}
- \cs_gset_eq:cc {bcp47.extension.x} {bcp47.main.extension.x}
- \cs_gset_eq:cc {bcp47.casing} {bcp47.main.casing}
- % 3. Store global language BCP47 settings (with default subtags as set by main language options)
- \cs_gset_eq:cc{#2@g.bcp47.tag}{bcp47.tag}
- \cs_gset_eq:cc{#2@g.bcp47.language}{bcp47.language}
- \cs_gset_eq:cc{#2@g.bcp47.region}{bcp47.region}
- \cs_gset_eq:cc{#2@g.bcp47.script}{bcp47.script}
- \cs_gset_eq:cc{#2@g.bcp47.variant}{bcp47.variant}
- \cs_gset_eq:cc{#2@g.bcp47.extension.t}{bcp47.extension.t}
- \cs_gset_eq:cc{#2@g.bcp47.extension.u}{bcp47.extension.u}
- \cs_gset_eq:cc{#2@g.bcp47.extension.x}{bcp47.extension.x}
- \cs_gset_eq:cc{#2@g.bcp47.casing}{bcp47.casing}
}
\DeclareCommandCopy \setmainlanguage \setdefaultlanguage
@@ -1308,11 +1337,11 @@
{
\str_case:nnF {#1}
{
- {bcp-47} { \csuse{bcp47.tag} }
- {bcp47} { \csuse{bcp47.tag} }
+ {bcp-47} { \use:c{bcp47.tag} }
+ {bcp47} { \use:c{bcp47.tag} }
}
{
- \xpg@error{Invalid~ \string\languageid\space argument:~ #1}
+ \xpg_ill_arg_msg:nn { #1 } { \languageid }
}
}
@@ -1322,11 +1351,11 @@
{
\str_case:nnF {#1}
{
- {bcp-47} { \csuse{bcp47.main.tag} }
- {bcp47} { \csuse{bcp47.main.tag} }
+ {bcp-47} { \use:c{bcp47.main.tag} }
+ {bcp47} { \use:c{bcp47.main.tag} }
}
{
- \xpg@error{Invalid~ \string\mainlanguageid\space argument:~ #1}
+ \xpg_ill_arg_msg:nn { #1 } { \mainlanguageid }
}
}
% Kernel command to access to BCP-47 data.
@@ -1346,281 +1375,205 @@
% and main.* variants thereof
% See https://github.com/latex3/latex2e/issues/1035
\DeclareExpandableDocumentCommand \BCPdata {m}
+ {
+ \cs_if_exist_use:cF{bcp47.#1}
+ { \xpg_ill_arg_msg:nn { #1 } { \BCPdata } }
+ }
+
+\clist_map_inline:nn
+ {
+ language, region, script, variant,
+ extension.t, extension.u, extension.x
+ }{
+ \tl_set:Nn \l_tmpa_tl { #1 }
+ \tl_replace_once:Nnn \l_tmpa_tl { . } { - }
+ \cs_gset_nopar:cpe { bcp47.#1 }
+ {
+ \exp_not:n { \prop_item:Ne \l_xpg_langsetup_prop } { \exp_not:N \languagename / bcp47-\l_tmpa_tl }
+ }
+ \cs_gset_nopar:cpe { bcp47.main.#1 }
+ {
+ \exp_not:n { \prop_item:Ne \l_xpg_langsetup_prop } { \exp_not:N \mainlanguagename / bcp47-\l_tmpa_tl }
+ }
+ }
+\cs_gset_nopar:cpn { bcp47.casing }
+ {
+ \tl_if_empty:eTF { \prop_item:Ne \l_xpg_langsetup_prop { \languagename / bcp47-casing } }
+ {
+ \prop_item:Ne \l_xpg_langsetup_prop { \languagename / bcp47-language }
+ }{
+ \prop_item:Ne \l_xpg_langsetup_prop { \languagename / bcp47-casing }
+ }
+ }
+\cs_gset_nopar:cpn { bcp47.main.casing }
+ {
+ \tl_if_empty:eTF { \prop_item:Ne \l_xpg_langsetup_prop { \mainlanguagename / bcp47-casing } }
+ {
+ \prop_item:Ne \l_xpg_langsetup_prop { \mainlanguagename / bcp47-language }
+ }{
+ \prop_item:Ne \l_xpg_langsetup_prop { \mainlanguagename / bcp47-casing }
+ }
+ }
+\cs_gset_nopar:cpn { bcp47.tag }
+ {
+ \prop_item:Ne \l_xpg_langsetup_prop { \languagename / bcp47 }
+ }
+\cs_gset_nopar:cpn { bcp47.main.tag }
+ {
+ \prop_item:Ne \l_xpg_langsetup_prop { \mainlanguagename / bcp47 }
+ }
+
+\cs_new_nopar:Npn \languagevariant
+ {
+ \prop_item:Ne \l_xpg_curropt_prop { \languagename / variant }
+ }
+
+\cs_new:Nn \xpg_set_language_name:n
{
- \cs_if_exist_use:cF{bcp47.#1}
- { \xpg@error{Invalid~ \string\BCPdata\space argument:~ #1} }
-}
-
-% main babel name
-\cs_new_nopar:Npn \mainlanguagename {}
-\cs_new_nopar:Npn \mainbabelname {}
-\cs_new_nopar:cpn {bcp47.main.tag} {}
-\cs_new_nopar:cpn {bcp47.main.language} {}
-\cs_new_nopar:cpn {bcp47.main.region} {}
-\cs_new_nopar:cpn {bcp47.main.script} {}
-\cs_new_nopar:cpn {bcp47.main.variant} {}
-\cs_new_nopar:cpn {bcp47.main.extension.t} {}
-\cs_new_nopar:cpn {bcp47.main.extension.u} {}
-\cs_new_nopar:cpn {bcp47.main.extension.x} {}
-\cs_new_nopar:cpn {bcp47.main.casing} {}
-\cs_new_nopar:Npn \mainlanguagevariant {}%
-% Store main language variant for external packages
-\define@key{xpg@main@langvariant}{variant}{
- \cs_gset_nopar:Npn \mainlanguagevariant {#1}
-}
-
-\cs_new_nopar:Npn \babelname {}
-\def\languagevariant{}
-% Store current language variant for external packages
-\define@key{xpg@set@langvariant}{variant}{
- \def\languagevariant{#1}
-}
-
-\newcommand*\polyglossia@set@language@name[2][]{
- \def\languagename{#2}
- \tl_if_blank:nTF {#1}{
- \ifcsundef{#2@gvar}{\def\languagevariant{}}{\def\languagevariant{\csuse{#2@gvar}}}
- }{
- % Register the language options
- \__xpg_set_language_options:nnn {#2} {#1} {@xpg@set@langvariant}
- \cs_set_eq:cc{#2@var}{languagevariant}
- }%
+ \cs_set:Npn \languagename { #1 }
}
-
-\newcommand*{\resetdefaultlanguage}[2][]{
+\NewDocumentCommand \resetdefaultlanguage { O{} m }
+{
\__xpg_reset_default_language:nn
{\xpg_alias_add_to_option_i:nn{#2}{#1}}
{\xpg_alias_base_lang:n{#2}}
}
-\cs_new:Nn \__xpg_store_bcp_info:nn
-{
- % Store BCP-47 ID and subtags of current language
- \tl_if_blank:nTF {#1}{
- % tag (e.g., en-US)
- \ifcsundef{#2@g.bcp47.tag}{
- \csedef{bcp47.tag}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47 } }
- }{
- \csedef{bcp47.tag}{\csuse{#2@g.bcp47.tag}}
- }
- % language (e.g., en)
- \ifcsundef{#2@g.bcp47.language}{
- \csedef{bcp47.language}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-language } }
- }{
- \csedef{bcp47.language}{\csuse{#2@g.bcp47.language}}
- }
- % region (e.g., US)
- \ifcsundef{#2@g.bcp47.region}{%
- \csedef{bcp47.region}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-region } }
- }{
- \csedef{bcp47.region}{\csuse{#2@g.bcp47.region}}%
- }
- % script (e.g., Latn)
- \ifcsundef{#2@g.bcp47.script}{
- \csedef{bcp47.script}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-script } }
- }{
- \csedef{bcp47.script}{\csuse{#2@g.bcp47.script}}
- }
- % variant (e.g., 1996)
- \ifcsundef{#2@g.bcp47.variant}{
- \csedef{bcp47.variant}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-variant } }
- }{
- \csedef{bcp47.variant}{\csuse{#2@g.bcp47.variant}}
- }
- % extension.t (tranformation)
- \ifcsundef{#2@g.bcp47.extension.t}{%
- \csedef{bcp47.extension.t}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-t } }
- }{
- \csedef{bcp47.extension.t}{\csuse{#2@g.bcp47.extension.t}}
- }
- % extension.u (additional locale information)
- \ifcsundef{#2@g.bcp47.extension.u}{%
- \csedef{bcp47.extension.u}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-u } }
- }{
- \csedef{bcp47.extension.u}{\csuse{#2@g.bcp47.extension.u}}
- }
- % extension.x (private use area)
- \ifcsundef{#2@g.bcp47.extension.x}{
- \csedef{bcp47.extension.x}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-x } }
- }{
- \csedef{bcp47.extension.x}{\csuse{#2@g.bcp47.extension.x}}
- }
- % casing
- \ifcsundef{#2@g.bcp47.casing}{
- % For casing, we fall back to language if bcp47-casing is not explicitly set
- \cs_set_nopar:cpx {tmpcasing} { \prop_item:Ne \g_xpg_langsetup_prop { #2 / bcp47-casing } }
- \str_if_empty:NTF \tmpcasing
- { \cs_gset_eq:cc {bcp47.casing} {bcp47.language} }
- { \csedef{bcp47.casing}{ \tmpcasing } }
- }{
- \csedef{bcp47.casing}{\csuse{#2@g.bcp47.casing}}
- }
- }{
- \csedef{bcp47.tag}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47 } }
- \csedef{bcp47.language}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-language } }
- \csedef{bcp47.region}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-region } }
- \csedef{bcp47.script}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-script } }
- \csedef{bcp47.variant}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-variant } }
- \csedef{bcp47.extension.t}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-t } }
- \csedef{bcp47.extension.u}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-u } }
- \csedef{bcp47.extension.x}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-x } }
- % For casing, we fall back to language if bcp47-casing is not explicitly set
- \cs_set_nopar:cpx {tmpcasing} { \prop_item:Ne \g_xpg_langsetup_prop { #2 / bcp47-casing } }
- \str_if_empty:NTF \tmpcasing
- { \cs_gset_eq:cc {bcp47.casing} {bcp47.language} }
- { \csedef{bcp47.casing}{ \tmpcasing } }
- }
-}
-
\cs_new:Nn \__xpg_reset_default_language:nn
{
\xpg_error_if_lang_not_loaded:n{#2}
% disable globalnumbers of previously defined default language
- \csuse{no\xpg@main@language @globalnumbers}
- \csuse{noextras@\xpg@main@language}%
+ \use:c{no\xpg_main_language_tl @globalnumbers}
+ \use:c{noextras@\xpg_main_language_tl}
% This is a hook for external packages which want to access variants
% via babelname (such as biblatex)
- \cs_if_exist_use:c{noextras@bbl@\mainbabelname}%
- \csuse{init@noextras@\xpg@main@language}%
- \polyglossia@set@language@name[#1]{#2}%
- \__xpg_if_LR_str:eF{\prop_item:Ne{\g_xpg_langsetup_prop}{#2/direction}}
+ \cs_if_exist_use:c{noextras@bbl@\mainbabelname}
+ \use:c{init@noextras@\xpg_main_language_tl}
+ \xpg_set_language_name:n { #2 }
+ \__xpg_if_LR_str:eF{\prop_item:Ne{\l_xpg_langsetup_prop}{#2/direction}}
{
\@rlmaintrue\@rl@footnotetrue
}
- \selectlanguage[#1]{#2}%
- \selectbackgroundlanguage{#2}%
- % Store babelname of current language (for external packages such as biblatex)
- \tl_if_blank:nTF {#1}{%
- \ifcsundef{#2@gbabelname}{
- \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}}
- }{
- \edef\babelname{\csuse{#2@gbabelname}}
- }
- }{
- \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}}
- }
- % Store variant
- \tl_if_blank:nTF {#1}
- {
- \cs_gset_nopar:Npn \mainlanguagevariant {}
- }
- {
- % Register the language options
- \__xpg_set_language_options:nnn {#2} {#1} {@xpg@main@langvariant}
- }
- \csgdef{#2@gvar}{\mainlanguagevariant}
- % Store BCP-47 id of current language
- \__xpg_store_bcp_info:nn {#1}{#2}
+ \selectlanguage[#1]{#2}
+ \selectbackgroundlanguage{#2}
+ \cs_set_nopar:Npe \mainlanguagevariant { \prop_item:Ne \l_xpg_curropt_prop { \xpg_alias_base_lang:n{#2} / variant } }
}
% This saves the normalfont for the latin script since we may change normalfont in other scripts
-\let\normalfontlatin=\normalfont
+\cs_set_eq:cc { normalfontlatin } { normalfont }
% Provide default fonts (as set with \setmainfont, \setsansfont and \setmonofont)
% for Latin scripts and as a fallback for non-Latin scripts.
-\DeclareRobustCommand\xpg@defaultfont@rm{
+\cs_set_protected:Nn \xpg_defaultfont_rm:
+{
\tl_if_empty:NF{\g__fontspec_nfss_enc_tl}{\fontencoding{\g__fontspec_nfss_enc_tl}}
\fontfamily\rmdefault
- \ifdefined\UseHook\UseHook{rmfamily}\fi
+ \hook_use:n { rmfamily }
\selectfont
}
-\DeclareRobustCommand\xpg@defaultfont@sf{
+
+\cs_set_protected:Nn \xpg_defaultfont_sf:
+{
\tl_if_empty:NF{\g__fontspec_nfss_enc_tl}{\fontencoding{\g__fontspec_nfss_enc_tl}}
\fontfamily\sfdefault
- \ifdefined\UseHook\UseHook{sffamily}\fi
+ \hook_use:n { sffamily }
\selectfont
}
-\DeclareRobustCommand\xpg@defaultfont@tt{
+
+\cs_set_protected:Nn \xpg_defaultfont_tt:
+{
\tl_if_empty:NF{\g__fontspec_nfss_enc_tl}{\fontencoding{\g__fontspec_nfss_enc_tl}}
\fontfamily\ttdefault
- \ifdefined\UseHook\UseHook{ttfamily}\fi
+ \hook_use:n { ttfamily }
\selectfont
}
-\def\xpg@patch@fontfamilies{
+\cs_new:Nn \__xpg_patch_fontfamilies:
+{
% This robustifies the redefinitions of \<xx>family (suggestion by Enrico Gregorio)
% e.g. to prevent expansion of the \familytype redefinition in auxiliary files
- \csgappto{rmfamily~}{\def\familytype{rm}}
- \csgappto{sffamily~}{\def\familytype{sf}}
- \csgappto{ttfamily~}{\def\familytype{tt}}
+ \tl_put_right:cn {rmfamily~} {\tl_set:Nn \familytype {rm}}
+ \tl_put_right:cn {sffamily~} {\tl_set:Nn \familytype {sf}}
+ \tl_put_right:cn {ttfamily~} {\tl_set:Nn \familytype {tt}}
}
% These switches activate the default fonts
% Note that a simple \let\rmfamilylatin=\rmfamily
% does not work reliably (see #24)
-\cs_gset_eq:cc{rmfamilylatin}{xpg@defaultfont@rm}
-\cs_gset_eq:cc{sffamilylatin}{xpg@defaultfont@sf}
-\cs_gset_eq:cc{ttfamilylatin}{xpg@defaultfont@tt}
-
-\def\xpg@set@familydefault{
- % We need the \edef route here in order
- % to detect both \renewcommand and \let
- % changes.
- \edef\tempa{\familydefault}
- \edef\tempb{\sfdefault}
- \ifcsequal{tempa}{tempb}
- {\def\familytype{sf}}
- {\edef\tempb{\ttdefault}
- \ifcsequal{tempa}{tempb}
- {\def\familytype{tt}}
- {\def\familytype{rm}}}
- \xpg@patch@fontfamilies
+\cs_set_eq:cc{rmfamilylatin}{xpg_defaultfont_rm:}
+\cs_set_eq:cc{sffamilylatin}{xpg_defaultfont_sf:}
+\cs_set_eq:cc{ttfamilylatin}{xpg_defaultfont_tt:}
+
+\cs_new:Nn \xpg_set_familydefault:
+{
+ \tl_set:Ne \l_tmpa_tl { \familydefault }
+ \tl_set:Ne \l_tmpb_tl { \sfdefault }
+ \tl_if_eq:NNTF \l_tmpa_tl \l_tmpb_tl
+ { \tl_set:Nn \familytype {sf} }
+ { \tl_set_eq:NN \l_tmpb_tl \ttdefault
+ \tl_if_eq:NNTF \l_tmpa_tl \l_tmpb_tl
+ { \tl_set:Nn \familytype {tt} }
+ { \tl_set:Nn \familytype {rm} }
+ }
+ \__xpg_patch_fontfamilies:
% This (re-)saves the normalfont for the latin script since we may
% change normalfont in other scripts
- \let\normalfontlatin=\normalfont
+ \cs_set_eq:cc{ normalfontlatin }{ normalfont }
% And for all cases, we also reset \<xx>familylatin
- \cs_gset_eq:cc{rmfamilylatin}{xpg@defaultfont@rm}
- \cs_gset_eq:cc{sffamilylatin}{xpg@defaultfont@sf}
- \cs_gset_eq:cc{ttfamilylatin}{xpg@defaultfont@tt}
-}
-
-\def\resetfontlatin{
- \DeclareRobustCommand\rmfamily{\xpg@defaultfont@rm}
- \DeclareRobustCommand\sffamily{\xpg@defaultfont@sf}
- \DeclareRobustCommand\ttfamily{\xpg@defaultfont@tt}
- \xpg@patch@fontfamilies
- \global\let\normalfont=\normalfontlatin
-}
-
-\def\selectfontfamilylatin{
- \def\tmp@tt{tt}\def\tmp@sf{sf}
- \ifx\familytype\tmp@tt
- \ttfamilylatin
- \else\ifx\familytype\tmp@sf
- \sffamilylatin
- \else\rmfamilylatin\fi\fi}
-
-\def\xpg@select@fontfamily#1{
- \def\tmp@tt{tt}\def\tmp@sf{sf}
- \ifx\familytype\tmp@tt
- \__xpg_use_or_warn:c{#1@font@tt}
- \else\ifx\familytype\tmp@sf
- \__xpg_use_or_warn:c{#1@font@sf}
- \else\__xpg_use_or_warn:c{#1@font@rm}\fi\fi}
-
-\def\xpg@set@normalfont#1{
- \letcs{\rmfamily}{#1@font@rm}
- \letcs{\sffamily}{#1@font@sf}
- \letcs{\ttfamily}{#1@font@tt}
- \robustify\rmfamily
- \robustify\sffamily
- \robustify\ttfamily
- \gdef\normalfont{\protect\xpg@select@fontfamily{#1}
- \fontseries{\seriesdefault}\selectfont
- \fontshape{\shapedefault}
- \ifdefined\UseHook\UseHook{normalfont}\fi
- \selectfont}
- \gdef\reset@font{\protect\normalfont}
-}
-
-\let\@@fterindentfalse\@afterindentfalse
-\def\french@indent{
- \let\@afterindentfalse\@afterindenttrue
+ \cs_set_eq:cc{ rmfamilylatin }{ xpg_defaultfont_rm: }
+ \cs_set_eq:cc{ sffamilylatin }{ xpg_defaultfont_sf: }
+ \cs_set_eq:cc{ ttfamilylatin }{ xpg_defaultfont_tt: }
+}
+
+\cs_set_nopar:Nn \xpg_select_fontfamily:n
+{
+ \str_if_eq:VnTF \familytype { tt }
+ { \__xpg_use_or_warn:c { #1@font@tt } }
+ { \str_if_eq:VnTF \familytype { sf }
+ { \__xpg_use_or_warn:c { #1@font@sf } }
+ { \__xpg_use_or_warn:c { #1@font@rm } }
+ }
+}
+
+\cs_set_protected:Npn \xpg_select_default_fontfamily:n #1
+ {
+ \tl_set:Ne \l_tmpa_tl { \familydefault }
+ \tl_set:Ne \l_tmpb_tl { \sfdefault }
+ \tl_if_eq:NNTF \l_tmpa_tl \l_tmpb_tl
+ { \tl_set:Nn \familytype {sf} }
+ { \tl_set_eq:NN \l_tmpb_tl \ttdefault
+ \tl_if_eq:NNTF \l_tmpa_tl \l_tmpb_tl
+ { \tl_set:Nn \familytype {tt} }
+ { \tl_set:Nn \familytype {rm} }
+ }
+ \xpg_select_fontfamily:n{#1}
+ }
+
+\cs_new_nopar:Nn \xpg_set_normalfont:n
+{
+ \cs_set_eq:cc { rmfamily } { #1@font@rm }
+ \cs_set_eq:cc { sffamily } { #1@font@sf }
+ \cs_set_eq:cc { ttfamily } { #1@font@tt }
+ \cs_set_nopar:Npn \normalfont
+ { \xpg_select_default_fontfamily:n {#1}
+ \fontseries{\seriesdefault}\selectfont
+ \fontshape{\shapedefault}
+ \hook_use:n { normalfont }
+ \selectfont
+ }
+ \cs_set_nopar:Npn \reset@font {\protect\normalfont}
+}
+
+\cs_gset_eq:cc { @@fterindentfalse } { @afterindentfalse }
+\cs_new_nopar:Nn \__xpg_french_indent:
+{
+ \cs_set_eq:cc { @afterindentfalse } { @afterindenttrue }
\@afterindenttrue
}
-\def\nofrench@indent{
- \let\@afterindentfalse\@@fterindentfalse
+\cs_new_nopar:Nn \__xpg_no_french_indent:
+{
+ \cs_set_eq:cc { @afterindentfalse } { @@fterindentfalse }
\@afterindentfalse
}
@@ -1631,10 +1584,10 @@
\cs_new:Nn \__xpg_select_background_language:n
{
- \str_if_eq:eeTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript}}{latin}
+ \str_if_eq:eeTF { \prop_item:Nn{\l_xpg_langsetup_prop}{#1/lcscript} } { latin }
{}
- {\xpg@set@normalfont{#1}}
- \csuse{#1@globalnumbers}
+ { \xpg_set_normalfont:n{#1} }
+ \use:c{#1@globalnumbers}
}
\cs_generate_variant:Nn \__xpg_select_background_language:n {e}
% Declare secondary language #2 with language options #1
@@ -1645,7 +1598,7 @@
\__xpg_load_lang_definition:ee {#1} {#2}
% define environment and command if not alias
\str_if_eq:eeT {\prop_item:Ne \__xpg_alias {#2/target}} {#2} {
- \use:c{\prop_item:Ne{\g_xpg_langsetup_prop}
+ \use:c{\prop_item:Ne{\l_xpg_langsetup_prop}
{#2/DefineCommandsCmd}}
{#2}
}
@@ -1658,28 +1611,13 @@
\cs_new:Nn \__xpg_set_otherlanguage:nn
{
\__xpg_register_language:nn{#1}{#2}
- % If a variant is set, store it.
- \gdef\otherlanguagevariant{}
- % Register the language options
- \__xpg_set_language_options:nnn {#2} {#1} {@xpg@other@langvariant}
-
- \csgdef{#2@gvar}{\otherlanguagevariant}
- \prop_get:NeNT \g_xpg_langsetup_prop {#2/babelname} \l_tmpa_tl
- { \xdef\otherlanguagebabelname{\l_tmpa_tl} }
- \cs_gset_eq:cc{#2@gbabelname}{otherlanguagebabelname}
}
\cs_generate_variant:Nn \__xpg_set_otherlanguage:nn { ee }
-
-% Store main language variant for external packages
-\define@key{xpg@other@langvariant}{variant}{
- \gdef\otherlanguagevariant{#1}
-}
-
\NewDocumentCommand \setotherlanguages { m }
- {
+{
\clist_map_function:eN { #1 } \setotherlanguage
- }
+}
\cs_set:Nn \xpg_common_language:
{% FIXME is this really needed???
@@ -1702,7 +1640,8 @@
% for specific (esp. tag-based) aliases
% where \text<alias> would cause clashes
% (e.g., \textit)
-\newcommand\textlang[3][]{
+\NewDocumentCommand \textlang { O{} m +m }
+{
\__xpg_textlanguage:een {#1} {#2} {#3}
}
@@ -1711,45 +1650,21 @@
% inside case changing commands (e.g. \MakeUppercase)
\tl_put_right:Nn \l_text_case_exclude_arg_tl { \textlang }
-% Alias to {<lang>}, but more suitable
-% for specific (esp. tag-based) aliases
-% where {<alias>} would cause clashes
-% (e.g., \fi)
-\DeclareEnvironmentCopy { lang } { otherlanguage }
-
% wrapper for foreignlanguage and otherlanguage*
-\newcommand*\polyglossia@setforeignlanguage[2][]{
- \select@@language[#1]{#2}
+\cs_new_nopar:Nn \xpg_set_foreign_language:nn
+{
+ \xpg_select_language:nn { #1 } { #2 }
\__xpg_register_language:nn{#1}{#2}
- % Store babelname of current language (for external packages such as biblatex)
- \tl_if_blank:nTF {#1}{
- \ifcsundef{#2@gbabelname}{
- \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}}
- }{
- \edef\babelname{\csuse{#2@gbabelname}}
- }
- }{
- \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}}
- }
- % Store BCP-47 id of current language
- \__xpg_store_bcp_info:nn {#1}{#2}
-}
-
-% Expandable lowercasing. We use this to assure keyval
-% options are lowercased (also when used in \MakeUppercase
-% contexts e.g. in headings)
-% Macro adapted from tudscr.sty
-\newcommand*\xpg@str@lowercase[2]{
- \protected@edef#1{
- \lowercase{\def\noexpand#1{#2}}
- }#1
}
% lowercase options before passing to setkeys
-\cs_new:Nn \__xpg_set_keys:nn
+\NewDocumentCommand \SetGlossOptions { m m }
{
- \xpg@str@lowercase{\xpg@tmp@opts}{#2}
- \exp_args:Nne \setkeys{#1}{\xpg@tmp@opts}
+ % \text_lowercase:n fully expands
+ % (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*
@@ -1759,56 +1674,25 @@
\cs_new:Nn \xpg_otherlanguage:nn
{
\xpg_error_if_lang_not_loaded:n{#2}
- \__xpg_set_keys:nn{#2}{#1}
- \polyglossia@setforeignlanguage[#1]{#2}
+ \SetGlossOptions{#2}{#1}
+ \xpg_set_foreign_language:nn { #1 } { #2 }
% Hook for external packages such as biblatex
\polyglossia@language@switched
% buggy restoration heure
- \csuse{inlineextras@#2}
+ \use:c{inlineextras@#2}
% This is a hook for external packages which want to access variants
% via babelname (such as biblatex)
\cs_if_exist_use:c{inlineextras@bbl@\babelname}
}
\DeclareDocumentCommand { \foreignlanguage } { O{} m +m }
- {
+{
\__xpg_foreignlanguage:eeen {#1} {#2} {\xpg_alias_base_lang:n{#2}} {#3}
- }
+}
% prevent case changing of language name in \foreignlanguage
\tl_put_right:Nn \l_text_case_exclude_arg_tl { \foreignlanguage }
-% Direct access to polyglossia@setforeignlanguage
-% used in captions
-\newcommand{\setforeignlanguage}[2][]
-{
- \polyglossia@setforeignlanguage[#1]{#2}
-}
-
-% Stack to store matrix languages
-\seq_new:N \__xpg_current_matrixlang_stack
-
-% Store embedding language when an embedded language is switched to
-\cs_new_nopar:Nn \__xpg_store_matrixlang:
-{
- \seq_gput_left:Nn \__xpg_current_matrixlang_stack \languagename
-}
-
-% When an embedded language is closed, reset to the embedding language
-% and remove stored matrix language from stack
-\cs_new_nopar:Nn \__xpg_reset_to_matrixlang:
-{
- % if stack is empty, use main language
- \seq_gpop_left:NNTF \__xpg_current_matrixlang_stack \l_tmpa_tl
- { \cs_set_eq:NN \__xpg_current_matrixlang \l_tmpa_tl }
- { \cs_set_eq:NN \__xpg_current_matrixlang \mainlanguagename }
- % Reset the language's/script's font families if the embedding script is latin
- \str_if_eq:eeT{\prop_item:Ne{\g_xpg_langsetup_prop}{\__xpg_current_matrixlang/lcscript}}{latin}
- {\resetfontlatin}
- % In case a \<lang>font is defined, re-activate that
- \exp_args:Ne \xpg@set@normalfont{\__xpg_current_matrixlang}
-}
-
% internal wrapper for foreign language
% #1 option
% #2 alias
@@ -1820,12 +1704,11 @@
{
\msg_show:nnn { polyglossia } { languagenotloaded } {#2}
}{
- \__xpg_store_matrixlang:
\group_begin:
\xpg_otherlanguage:nn{ \xpg_alias_add_to_option_i:nn{#2}{#1} }{ #3 }
\__xpg_lang_set_text_direction:nn{#3}{#4}
\group_end:
- \__xpg_reset_to_matrixlang:
+ \cs_if_exist_use:c{ nestedextras@\languagename }
}
}
\cs_generate_variant:Nn \__xpg_foreignlanguage:nnnn {eeen}
@@ -1834,11 +1717,10 @@
% otherlanguage* is the environment equivalent of \foreignlanguage
\DeclareDocumentEnvironment { otherlanguage* } { O{} m }
{
- \__xpg_store_matrixlang:
\__xpg_otherlanguage:eee { #1 } { #2 } { \xpg_alias_base_lang:n { #2 } }
}{
- \egroup% \group_end: does not work here!
- \__xpg_reset_to_matrixlang:
+ \c_group_end_token% \group_end: does not work here!
+ \cs_if_exist_use:c{ nestedextras@\languagename }
}
% internal wrapper
@@ -1853,7 +1735,7 @@
}{
\xpg_otherlanguage:nn{ \xpg_alias_add_to_option_i:nn{#2}{#1} }{ #3 }
\__xpg_lang_set_text_direction:nn{#3}%
- \bgroup% \group_begin: does not work here!
+ \c_group_begin_token% \group_begin: does not work here!
}
}
\cs_generate_variant:Nn \__xpg_otherlanguage:nnn { eee }
@@ -1869,9 +1751,6 @@
}
\cs_generate_variant:Nn \__xpg_textlanguage:nnn {een}
-% Track whether we are in an inline lang (\text...) switch
-\bool_new:N \l__xpg_inline_lang_bool
-
% use by \text<lang> and \textlang. Equivalent to \foreignlanguage,
% except that dates are localized.
% #1: option
@@ -1885,41 +1764,41 @@
\msg_show:nnn { polyglossia } { languagenotloaded } {#2}
}
{
- \__xpg_store_matrixlang:
\group_begin:
- \bool_set_true:N \l__xpg_inline_lang_bool
\xpg_otherlanguage:nn{#1}{#3}
- \csuse{date#3}
+ \use:c{date#3}
% This is a hook for external packages which want to access variants
% via babelname (such as biblatex)
\cs_if_exist_use:c{date@bbl@\babelname}
\__xpg_lang_set_text_direction:nn{#3}{#4}
\group_end:
- \__xpg_reset_to_matrixlang:
+ \cs_if_exist_use:c{ nestedextras@\languagename }
}
}
\cs_generate_variant:Nn \__xpg_textlanguage:nnnn {nnen}
% Define language-specific hyphenation exceptions
-\newcommand\pghyphenation[3][]{
- \bgroup
- \xpg_error_if_lang_not_loaded:n{#2}
- \setkeys{#2}{#1}
- \select@@language[#1]{#2}
- \hyphenation{#3}
- \egroup
-}
+\NewDocumentCommand \pghyphenation {O{} m m}
+ {
+ \begin{hyphenrules}[#1]{#2}
+ \hyphenation{#3}
+ \end{hyphenrules}
+ }
% Hook that other package authors can use
% (for instance biblatex):
% Do not rename!
-\newcommand*{\xpg@hook@setlanguage}{}
+\cs_set_nopar:Npn \xpg@hook@setlanguage {}
-\def\xpg@pop@language@i#1#2{
- \xpg@set@language@aux[#1]{#2}
+\cs_set_nopar:Nn \__xpg_pop_language:nn
+{
+ \xpg_set_language_aux:nn { #1 } { #2 }
\xpg@hook@setlanguage
- \let\emp@langname\@undefined}
+% FIXME This seems to be a very old relict.
+% The macro is nowhere used. Probably remove.
+% \let\emp@langname\@undefined
+}
\DeclareDocumentCommand \selectlanguage {s O{} m}
{
@@ -1938,131 +1817,125 @@
\cs_new:Nn \__xpg_select_language:nnn
{
% Register the language options
- \__xpg_set_language_options:nnn {#3} {#2} {@xpg@set@langvariant}
+ \__xpg_set_language_options:nn {#3} {#2}
\IfBooleanTF { #1 } % The starred variant does not write to the aux
{
- \xpg@set@language@nonaux[#2]{#3}
+ \xpg_set_language_nonaux:nn { #2 } { #3 }
}{
- \cs_set_nopar:Npe \xpg@pop@language { \exp_not:N \xpg@pop@language@i {#2} {#3} }
- \group_insert_after:N \xpg@pop@language
- \xpg@set@language@aux[#2]{#3}
+ \cs_set_nopar:Ne \xpg_pop_language: { \exp_not:N \__xpg_pop_language:nn { #2 } { #3 } }
+ \group_insert_after:N \xpg_pop_language:
+ \xpg_set_language_aux:nn { #2 } { #3 }
}
- \__xpg_register_language:nn{#2}{#3}
+ \__xpg_register_language:nn { #2 } { #3 }
}
\cs_generate_variant:Nn \__xpg_select_language:nnn { nee, nne }
-
% set lang option #2 for lang #1
-\cs_new:Nn \__xpg_set_language_options:nnn
+\cs_new:Nn \__xpg_set_language_options:nn
{
- \tl_if_blank:nF {#2}
+ \cs_if_exist:cT { xpg_#1_default_options_prop }
{
- % If the optional argument sets a value for the key “variant”, copy it to xpg@langvariant
- \clist_map_inline:nn { #2 } {
- \xpg@parsevariantkeyvalue##1=#3:#1\relax
- }%
- \__xpg_set_keys:nn{#1}{#2}
+ \prop_concat:ccc { l_xpg_curropt_prop } { l_xpg_curropt_prop }
+ { xpg_#1_default_options_prop }
}
+ \xpg__keyval_parser:eeN { #2 } { #1 } \l_xpg_curropt_prop
+ \SetGlossOptions{#1}{#2}
}
% Initialize default language options, so that
% \iflanguageoption has the info it needs also
% for default settings
-\newcommand*\xpg@initialize@gloss@options[2]{
- \__xpg_set_language_options:nnn {#1} {#2} {@xpg@set@langvariant}
-}
+\NewDocumentCommand \InitializeGlossOptions { m m }
+{
+ \tl_new:c { xpg_#1_default_options_tl }
+ \prop_new:c { xpg_#1_default_options_prop }
+ \keys_precompile:nec { polyglossia / gloss / #1 }
+ { \text_lowercase:n { #2, \xpg__tmp_default_options_tl } }
+ { xpg_#1_default_options_tl }
+ \xpg__keyval_parser:enc { #2, \xpg__tmp_default_options_tl } { #1 }
+ { xpg_#1_default_options_prop }
+ \prop_concat:ccc { l_xpg_curropt_prop } { l_xpg_curropt_prop }
+ { xpg_#1_default_options_prop }
+ \use:c { xpg_#1_default_options_tl }
+ \__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
-% Syntax: \xpg@set@alias@values{<lang>}{<key>}{<val>}{<alias vals, comma-separated>}
-\newcommand*\xpg@set@alias@values[4]{%
- \prop_if_exist:cF { xpg@alias@keyvals@#1@#3 }
- { \prop_new:c {xpg@alias@keyvals@#1@#3} }
- \prop_put:cnn { xpg@alias@keyvals@#1@#3 }
- {#2}{#4}
- \prop_if_exist:cF { xpg@alias@keyvals@#1@#4 }
- { \prop_new:c {xpg@alias@keyvals@#1@#4} }
- \prop_put:cnn { xpg@alias@keyvals@#1@#4 }
- {#2}{#3}
-}
-
-% Patch xkeyval to record default values of keys
-\pretocmd{\XKV@define@default}{%
- \csgdef{xpg@default@opt@\XKV@header #1}{#2}
-}{}{\xpg@warning{Patching xkeyval failed!}}
-
-% Helper to get and register option keyvals
-\def\xpg@parsevariantkeyvalue#1=#2@#3:#4\relax{
- \def\@tmpa{#1}
- \def\@tmpb{variant}
- % variant values are stored in specific macros
- % (\xpg@main@langvariant, \xpg@other@langvariant
- % and \xpg@set@langvariant)
- \ifx\@tmpa\@tmpb\setkeys{#3}{#1=#2}\fi
- \tl_if_empty:nTF{#2}
- {
- \ifcsdef{xpg@default@opt@KV@#4@#1}
- {\xpg@store@opt@keyval#1:\csuse{xpg@default@opt@KV@#4@#1}=:#4\relax}
- {}%
- }
- { \xpg@store@opt@keyval#1:#2:#4\relax }
-}%
-
-% Store option keys and values
-% This strips trailing '=' from values.
-\def\xpg@store@opt@keyval#1:#2=:#3\relax{
- \prop_if_exist:cF { xpg@current@options@#3 }
- { \prop_new:c {xpg@current@options@#3} }
- \prop_put:cnn { xpg@current@options@#3 }
- {#1}{#2}
+% Syntax: \SetLanguageAliasValues{<lang>}{<key>}{<alias vals, comma-separated>}
+\int_new:N \l_xpg_alias_keyvals_int
+\int_set:Nn \l_xpg_alias_keyvals_int { 2 }
+\NewDocumentCommand \SetLanguageAliasValues { m m m }
+{
+ \clist_map_inline:nn { #3 }
+ {
+ \int_const:cn { c_xpg_alias_keyvals_#1_#2_##1_int } { \l_xpg_alias_keyvals_int }
+ }
+ \int_incr:N \l_xpg_alias_keyvals_int
}
+\cs_new:Npn \xpg__keyval_parser:nnN #1 #2 #3 % #1 = key-vals, #2 = language, #3 = prop
+ {
+ \keyval_parse:nnn
+ { \xpg__keyval_parser_default:nnn { #2 } { #3 } }
+ { \xpg__keyval_parser_nondefault:nnnn { #2 } { #3 } }
+ { #1 }
+ }
+\cs_generate_variant:Nn \xpg__keyval_parser:nnN { eeN, enc }
+
+\cs_new:Npn \xpg__keyval_parser_default:nnn #1 #2 #3 % #1 = lang, #2 = prop, #3 = key
+ {
+ \str_set:Nn \l_tempa_str { #1 / #3 }
+ \str_concat:NNN \l_tempa_str \c__keys_default_root_str \l_tempa_str
+ \prop_put:Nne #2 { #1 / #3 } { \use:c { \l_tempa_str } }
+ }
+
+\cs_new:Npn \xpg__keyval_parser_nondefault:nnnn #1 #2 #3 #4 % #1 = lang, #2 = prop, #3 = key, #4 = value
+ {
+ \prop_put:Nnn #2 { #1 / #3 } { #4 }
+ }
\prg_set_conditional:Npnn \__xpg_check_option_value:NNN #1#2#3 { p , T , F , TF }
-{
- \prop_get:cnNTF {xpg@current@options@#1} {#2} \l_tmpa_tl
- {
- \str_if_eq:eeTF{\l_tmpa_tl}{#3}
- {\prg_return_true:}
+ {
+ \bool_lazy_or:nnTF
+ {
+ \str_if_eq_p:ee { \prop_item:Nn \l_xpg_curropt_prop { #1 / #2 } } { #3 }
+ } {
+ \int_compare_p:nNn
{
- \prop_get:cnNTF {xpg@alias@keyvals@#1@#3} {#2} \l_tmpb_tl
- {
- \clist_set:Ne{\l_tmpa_clist}{\l_tmpb_tl}
- \providetoggle{xpgvalfound}
- \togglefalse{xpgvalfound}
- \clist_map_inline:Nn \l_tmpa_clist {
- \str_if_eq:eeT{##1}{\l_tmpa_tl}
- { \toggletrue{xpgvalfound} }
- }
- \iftoggle{xpgvalfound}{\prg_return_true:}{\prg_return_false:}
- }
- {
- \prg_return_false:
- }
- }
- }
- {
- \prg_return_false:
- }
+ \cs_if_exist_use:cF { c_xpg_alias_keyvals_#1_#2_#3_int } { 0 }
+ } = {
+ \cs_if_exist_use:cF { c_xpg_alias_keyvals_#1_#2_\prop_item:Nn \l_xpg_curropt_prop { #1 / #2 }_int } { 1 }
+ }
+ } { \prg_return_true: } { \prg_return_false: }
+ }
+
+\prg_set_conditional:Npnn \xpg_if_main_language:n #1 { T, F, TF }
+{
+ \str_if_eq:VnTF \xpg_main_language_tl { #1 }
+ { \prg_return_true: }
+ { \prg_return_false: }
}
+\cs_set_eq:NN \IfMainLanguageTF \xpg_if_main_language:nTF
+
+\cs_set_eq:NN \IfMainLanguageT \xpg_if_main_language:nT
+
+\cs_set_eq:NN \IfMainLanguageF \xpg_if_main_language:nF
+
% Test if option value is set
\DeclareDocumentCommand \iflanguageoption { m m m m m }
{
\__xpg_check_option_value:NNNTF{#1}{#2}{#3}{#4}{#5}
}
-
-% Append any variant to csv list of variants
-\define@key{xpg@langvariant}{variant}{
- \clist_if_in:NeF \xpg@vloaded {#1}{
- \clist_gput_right:Ne \xpg@vloaded {#1}
- }
-}
-
% Test if language is loaded
\DeclareDocumentCommand \iflanguageloaded { m m m }
{
- \AddToHook{begindocument/end}{
+ \hook_gput_code:nnn {begindocument/end} {.}
+ {
\clist_if_in:NeTF \xpg@loaded{#1}{#2}{#3}
}
}
@@ -2070,7 +1943,8 @@
% Same for babellanguage is loaded
\DeclareDocumentCommand \ifbabellanguageloaded { m m m }
{
- \AddToHook{begindocument/end}{
+ \hook_gput_code:nnn {begindocument/end} {.}
+ {
\clist_if_in:NeTF \xpg@bloaded{#1}{#2}{#3}
}
}
@@ -2078,7 +1952,8 @@
% Same for languageid
\DeclareDocumentCommand \iflanguageidloaded { m m m m }
{
- \AddToHook{begindocument/end}{
+ \hook_gput_code:nnn {begindocument/end} {.}
+ {
\str_case:nnTF {#1}
{
{bcp-47} { \clist_if_in:NeTF \xpg@bcp@loaded{#2}{#3}{#4} }
@@ -2086,7 +1961,7 @@
}
{}
{
- \xpg@error{Invalid~ \string\iflanguageidloaded\space argument:~ #1}
+ \xpg_ill_arg_msg:nn { #1 } { \iflanguageidloaded }
}
}%
}
@@ -2116,53 +1991,51 @@
}
-\newcommand*{\xpg@set@language@nonaux}[2][]{
- \@select@language[#1]{#2}
+\cs_new_nopar:Nn \xpg_set_language_nonaux:nn
+{
+ \__xpg_start_language:nn { #1 } { #2 }
}
-\newcommand*{\xpg@set@language@aux}[2][]{
- % Store babelname of current language (for external packages such as biblatex)
- \tl_if_blank:nTF {#1}{
- \ifcsundef{#2@gbabelname}{
- \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}}
- }{
- \edef\babelname{\csuse{#2@gbabelname}}
- }
- }{
- \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}}
- }
- % Store BCP-47 id of current language
- \__xpg_store_bcp_info:nn {#1}{#2}
- \@select@language[#1]{#2}
+\cs_new_nopar:Nn \xpg_set_language_aux:nn
+{
+ \__xpg_start_language:nn { #1 } { #2 }
% Write to the aux
- \xpg@set@language@only@aux[#1]{#2}
+ \xpg_set_language_only_aux:nn { #1 } { #2 }
}
-\newcommand*{\xpg@set@language@only@aux}[2][]{
+\cs_new_nopar:Nn \xpg_set_language_only_aux:nn
+{
% Write to the aux (toc files)
\if@filesw
\addtocontents{toc}{\selectlanguage*[#1]{#2}}
\fi
}
-\AtBeginDocument{
- \if@filesw
- \immediate\write\@mainaux
- {\ProvideDocumentCommand\selectlanguage{sO{}m}{}}
- \fi
-}
+\hook_gput_code:nnn {begindocument} {.}
+ {
+ \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)
-\AddToHook{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_check_if_exist_l@:n #1 { F, TF }
+\prg_set_conditional:Npnn \__xpg_pattern_check_if_exists:n #1 { F, TF }
{
\bool_lazy_and:nnTF
{ \cs_if_exist_p:c { l@#1 } }
@@ -2171,82 +2044,125 @@
{ \prg_return_false: }
}
-\def\polyglossia@luatex@load@lang#1{
+\cs_new_nopar:Nn \__xpg_luatex_load_lang:n
+{
% if \l@#1 is not properly defined, call lua function newloader(#1),
% and assign the returned number to \l@#1
- \__xpg_check_if_exist_l@:nF {#1}
+ \__xpg_pattern_check_if_exists:nF {#1}
{
\directlua { token.set_char('l@#1', polyglossia.newloader'#1') }
}
}
-% This check is also used by biblatex, so don't
-% rename silently.
-\newcommand\xpg@ifdefined[3]{
+% check if language is defined
+\prg_set_conditional:Npnn \xpg_if_language_defined:n #1 { T, F, TF }
+{
% With luatex, we first need to define \l@#1.
\sys_if_engine_luatex:T
{
- \polyglossia@luatex@load@lang{#1}
+ \__xpg_luatex_load_lang:n {#1}
}
- \__xpg_check_if_exist_l@:nTF{#1}{#2}{#3}
+ \__xpg_pattern_check_if_exists:nTF{#1}
+ { \prg_return_true: }
+ { \prg_return_false: }
+}
+
+% Aliases for gloss files
+\cs_gset_eq:cc { IfLanguageDefinedTF } { xpg_if_language_defined:nTF }
+\cs_gset_eq:cc { IfLanguageDefinedT } { xpg_if_language_defined:nT }
+\cs_gset_eq:cc { IfLanguageDefinedF } { xpg_if_language_defined:nF }
+
+% Check if patterns for language #1 is defined. If not, try
+% the comma-separated list of fallbacks in #2
+\NewDocumentCommand \TryPatternWithFallback { m m }
+{
+ \xpg_if_language_defined:nF { #1 }
+ {
+ \clist_clear_new:N \l_xpg_lang_patterns
+ \clist_set:Ne \l_xpg_lang_patterns { #2 }
+ \bool_set_false:N \l_tmpa_bool
+ \clist_map_inline:Nn \l_xpg_lang_patterns
+ {
+ \xpg_if_language_defined:nT { ##1 }
+ {
+ \cs_gset_eq:cc { l@#1 } { l@##1 }
+ \bool_set_true:N \l_tmpa_bool
+ \clist_map_break:
+ }
+ }
+ \bool_if:NF \l_tmpa_bool
+ {
+ \xpg_warning_msg:n
+ {No~ hyphenation~ patterns~ for~ #1~ found \iow_newline:
+ Falling~ back~ to~ the~ default~ patterns~ (=~English)!}
+ \exp_args:Nc \adddialect {l@#1} 0
+ }
+ }
}
+% This old term is used by biblatex, so don't drop!
+\cs_gset_eq:cc { xpg@ifdefined } { xpg_if_language_defined:nTF }
+
% Set \bbl@hyphendata@\the\language, which is (lua)babel's
% hyphenation pattern hook
% FIXME Clarifiy why/when this is needed.
-\newcommand*\xpg@set@bbl@hyphendata[1]{
+\cs_new:Nn \xpg_set_bbl_hyphendata:n
+{
\sys_if_engine_luatex:T
{
- \ifcsdef{bbl@hyphendata@#1}{}{
- \global\@namedef{bbl@hyphendata@\the\language}{}
+ \cs_if_exist:cF {bbl@hyphendata@#1}
+ {
+ \cs_gset:cpn {bbl@hyphendata@\the\language} {}
}
}
}
% Set hyphenation patterns for a given language. This does the right
% thing both for XeTeX and LuaTeX
-\newcommand*\xpg@set@hyphenation@patterns[1]{
- \sys_if_engine_luatex:T { \polyglossia@luatex@load@lang{#1} }
+\cs_new:Nn \xpg_set_hyphenation_patterns:n
+{
+ \sys_if_engine_luatex:T { \__xpg_luatex_load_lang:n {#1} }
\language=\csname l@#1\endcsname
}
-\newcommand*\@select@language[2][]{
+\cs_new:Nn \__xpg_start_language:nn
+{
% hook for compatibility with biblatex
- \select@language{#2}
- \xpg@set@bbl@hyphendata{\the\language}
+ \select@language { #2 }
+ \xpg_set_bbl_hyphendata:n {\the\language}
\xpg_initial_setup:
- \select@@language[#1]{#2}%
+ \xpg_select_language:nn { #1 } { #2 }
% Hook for external packages such as biblatex
- \polyglossia@language@switched%
- \__xpg_lang_set_par_direction:n{#2}
- \csuse{captions#2}%
- \csuse{date#2}%
+ \polyglossia@language@switched
+ \__xpg_lang_set_par_direction:n {#2}
+ \use:c {captions#2}
+ \use:c {date#2}
% These are hooks for external packages which want to access variants
% via babelname (such as biblatex)
- \cs_if_exist_use:c{captions@bbl@\babelname}
- \cs_if_exist_use:c{date@bbl@\babelname}
- \__xpg_local_marks:n{#2}
- \csuse{init@extras@#2}%
+ \cs_if_exist_use:c {captions@bbl@\babelname}
+ \cs_if_exist_use:c {date@bbl@\babelname}
+ \__xpg_local_marks:n {#2}
+ \use:c {init@extras@#2}
\__xpg_indent_first:n { #2 }
- \csuse{blockextras@#2}%
+ \cs_if_exist_use:c {blockextras@#2}
% This is a hook for external packages which want to access variants
% via babelname (such as biblatex)
- \cs_if_exist_use:c{blockextras@bbl@\babelname}
- }
+ \cs_if_exist_use:c {blockextras@bbl@\babelname}
+}
% hook for compatibility with biblatex
% (probably no longer used due to the
% more general hook that follows, but
% we keep it for backwards comp.)
-\def\select@language#1{}
+\cs_set:Npn \select@language #1 {}
% Hook for external packages such as biblatex
% do not rename!
-\def\polyglossia@language@switched{}
+\cs_new:Npn \polyglossia@language@switched {}
-% remove all custumization for language #1
+% remove all customization for language #1
\cs_new:Npn \noextrascurrent #1
-{%
+{
\cs_if_exist_use:c{noextras@#1}%
% This is a hook for external packages which want to access variants
% via babelname (such as biblatex)
@@ -2254,160 +2170,105 @@
}
% Common code for `\select@language' and `\foreignlanguage'.
-\newcommand{\select@@language}[2][]{%
+\cs_new:Nn \xpg_select_language:nn
+{
% disable the extras and number settings of the previous language
\cs_if_exist:cT{languagename}
{
\noextrascurrent{\languagename}
\cs_if_exist_use:c{no\languagename @numbers}
\sys_if_engine_xetex:T{
- \__xpg_if_LR_str:eTF{\prop_item:Ne{\g_xpg_langsetup_prop}{\languagename/direction}}
+ \__xpg_if_LR_str:eTF{\prop_item:Ne{\l_xpg_langsetup_prop}{\languagename/direction}}
{
- \__xpg_if_LR_str:eF{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/direction}}
+ \__xpg_if_LR_str:eF{\prop_item:Nn{\l_xpg_langsetup_prop}{#2/direction}}
{\setnonlatin} % LTR -> RTL
}
{
- \__xpg_if_LR_str:eT{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/direction}}
+ \__xpg_if_LR_str:eT{\prop_item:Nn{\l_xpg_langsetup_prop}{#2/direction}}
{\setlatin} % RTL -> LTR
}
}
}
- \polyglossia@set@language@name[#1]{#2}
- % Set the language's/script's font families
- \str_if_eq:eeT{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/lcscript}} {latin}
- {
- \resetfontlatin
- }
- \bool_if:NF \l__xpg_inline_lang_bool
- { % This for non-inline font switches
- % in case a \<lang>font is defined
- \xpg@set@normalfont{#2}
- }
- \xpg@select@fontfamily{#2}
+ \xpg_set_language_name:n { #2 }
+ \xpg_set_normalfont:n { #2 }
+ \xpg_select_fontfamily:n { #2 }
\__xpg_use_or_warn:c{#2@language}
\cs_if_exist_use:c{#2@numbers}
- \use@localhyphenmins[#1]{#2}
+ \__xpg_use_localhyphenmins:nn { #1 } { #2 }
\__xpg_french_spacing:n { #2 }
}
-\let\xpg@pop@language\relax
+\cs_undefine:N \xpg_pop_language:
-%
-% Keep track of the active (nested) languages and options
-%
-\clist_new:N \l_xpg_lang_stack
-
-\cs_new:Nn \__xpg_stack_language:nn
-{
- \clist_gpush:Nn \l_xpg_lang_stack {#1:#2}
-}
+\DeclareDocumentEnvironment { otherlanguage } { O{} m }
+ {
+ \selectlanguage[#1]{#2}
+ } { }
-\cs_generate_variant:Nn \__xpg_stack_language:nn {nx}
+% Alias to {<lang>}, but more suitable
+% for specific (esp. tag-based) aliases
+% where {<alias>} would cause clashes
+% (e.g., \fi)
+\DeclareEnvironmentCopy { lang } { otherlanguage }
-\cs_new:Nn \__xpg_unstack_language:n
+\NewDocumentCommand \setlocalhyphenmins { m m m }
{
- \clist_gpop:NNTF \l_xpg_lang_stack \l_tmpa_tl {
- % Stored format = options:language => split:
- \seq_set_split:Nne \l_tmpa_seq {:} \l_tmpa_tl
- \seq_get_left:NN \l_tmpa_seq \l_tmpb_tl
- \seq_get_right:NN \l_tmpa_seq \l_tmpc_tl
- % Execute passed command with language and maybe options
- % and re-set stored language's keys
- \tl_if_empty:NTF \l_tmpb_tl {\cs_if_exist_use:c{#1}{\l_tmpc_tl}}
- {\__xpg_set_keys:nn{\l_tmpc_tl}{\l_tmpb_tl}
- \cs_if_exist_use:c{#1}[\l_tmpb_tl]{\l_tmpc_tl}
- }
- }
- {}
-}
-
-\DeclareDocumentEnvironment { otherlanguage } { O{} m }
- {
- % Get real current (pre-switch) options (incl. defaults)
- \clist_clear_new:N \l_xpg_current_options
- \prop_if_exist:cF { xpg@current@options@\languagename }
- { \prop_new:c {xpg@current@options@\languagename} }
- \prop_map_inline:cn {xpg@current@options@\languagename}
+ \xpg_if_language_defined:nTF{#1}
+ {
+ \cs_if_eq:ccTF { l@#1 } { l@nohyphenation }
{
- \clist_put_right:Nn \l_xpg_current_options {##1=##2}
+ \xpg_warning_msg:n {\string\setlocalhyphenmin\space~ useless~ for~ unhyphenated~ language~ #1}
+ }{
+ \providehyphenmins{#1}{#2#3}
}
- % Store current (pre-switch) options and language on stack
- \__xpg_stack_language:nx{\clist_use:Nn \l_xpg_current_options {,}}{\languagename}
- \selectlanguage[#1]{#2}
- }
- {
- % restore previous language in aux file and remove closed one from stack
- \__xpg_unstack_language:n{xpg@set@language@only@aux}
- }
-
-\newcommand{\setlocalhyphenmins}[3]{
- \xpg@ifdefined{#1}{
- \expandafter\ifx\csname l@#1\endcsname\l@nohyphenation
- \xpg@warning{\string\setlocalhyphenmin\space~ useless~ for~ unhyphenated~ language~ #1}
- \else
- \providehyphenmins{#1}{#2#3}
- \fi
}{
- \xpg@warning{\string\setlocalhyphenmin\space~ useless~ for~ unknown~ language~ #1}
+ \xpg_warning_msg:n {\string\setlocalhyphenmin\space~ useless~ for~ unknown~ language~ #1}
}
}
% \setlanghyphenmins[options]{lang}{l}{r}
-\newcommand*\setlanghyphenmins[4][]{%
+\NewDocumentCommand \setlanghyphenmins { O{} m m m }
+{
% Check for real language name and options
- \edef\xpg@tmp@opts{\xpg_alias_add_to_option_i:nn{#2}{#1}}
- \edef\xpg@tmp@lang{\xpg_alias_base_lang:n{#2}}
- \bgroup
- \xpg_error_if_lang_not_loaded:n{\xpg@tmp@lang}
- \__xpg_set_keys:nn{\xpg@tmp@lang}{\xpg@tmp@opts}
+ \tl_set:Nx \l_tmp_opts_tl { \xpg_alias_add_to_option_i:nn{#2}{#1} }
+ \tl_set:Nx \l_tmp_lang_tl { \xpg_alias_base_lang:n{#2} }
+ \c_group_begin_token
+ \xpg_error_if_lang_not_loaded:n{\l_tmp_lang_tl}
+ \SetGlossOptions{\l_tmp_lang_tl}{ \l_tmp_opts_tl }
% Store bcp47.tag@hypenmins
- \tl_if_blank:nTF {\xpg@tmp@opts}{%
- \ifcsundef{\csname xpg@tmp@lang\endcsname @g.bcp47.tag}{
- \csedef{tmp@bcp47.tag}{\prop_item:Ne{\g_xpg_langsetup_prop}{ \xpg@tmp@lang / bcp47 }}
- }{
- \csedef{tmp@bcp47.tag}{\csuse{#2@g.bcp47.tag}}
- }
- }{
- \csedef{tmp@bcp47.tag}{\prop_item:Ne{\g_xpg_langsetup_prop}{ \xpg@tmp@lang / bcp47 }}
- }
- \csgdef{\csname tmp@bcp47.tag\endcsname @hyphenmins}{{#3}{#4}}
- \egroup
+ \cs_set_nopar:cpe {tmp@bcp47.tag} { \prop_item:Ne{\l_xpg_langsetup_prop}{ \l_tmp_lang_tl / bcp47 } }
+ \cs_gset:cpn {\csname tmp@bcp47.tag\endcsname @hyphenmins} {{#3}{#4}}
+ \c_group_end_token
}
-% \use@localhypenmins[options]{lang}
-\newcommand*\use@localhyphenmins[2][]{
- \bgroup
- \xpg_error_if_lang_not_loaded:n{#2}
- \__xpg_set_keys:nn{#2}{#1}
+% \__xpg_use_localhyphenmins:nn {options}{lang}
+\cs_new_nopar:Nn \__xpg_use_localhyphenmins:nn
+{
+ \c_group_begin_token
+ \xpg_error_if_lang_not_loaded:n {#2}
+ \SetGlossOptions {#2} {#1}
% Use bcp47.tag@hypenmins
- \tl_if_blank:nTF {#1}{
- \ifcsundef{#2@g.bcp47.tag}{
- \csxdef{tmp@bcp47.tag}{\prop_item:Nn{\g_xpg_langsetup_prop}{ #2 / bcp47 }}
- }{
- \csxdef{tmp@bcp47.tag}{\csuse{#2@g.bcp47.tag}}
- }
- }{
- \csxdef{tmp@bcp47.tag}{\prop_item:Nn{\g_xpg_langsetup_prop}{ #2 / bcp47 }}
- }
- \egroup
- \ifcsundef{\csname tmp@bcp47.tag\endcsname @hyphenmins}{
- \ifcsundef{#2hyphenmins}{}
+ \cs_gset_nopar:cpe {tmp@bcp47.tag} { \prop_item:Nn{\l_xpg_langsetup_prop}{ #2 / bcp47 } }
+ \c_group_end_token
+ \cs_if_exist:cTF {\csname tmp@bcp47.tag\endcsname @hyphenmins}
+ {
+ \tl_set:Ne \l_tmpa_tl { \use:c{\csname tmp@bcp47.tag\endcsname @hyphenmins} }
+ \expandafter \set@hyphenmins \l_tmpa_tl
+ }{
+ \cs_if_exist:cT{#2hyphenmins}
{
\expandafter\expandafter\expandafter\set@hyphenmins\csname #2hyphenmins\endcsname\relax
}
- }{
- \edef\tmpa{\csuse{\csname tmp@bcp47.tag\endcsname @hyphenmins}}
- \expandafter\expandafter\expandafter\set@hyphenmins\tmpa\relax
}
- \sys_if_engine_luatex:T{
+ \sys_if_engine_luatex:T
+ {
% Set \totalhyphenmin if specified
- \prop_get:NeNTF \g_xpg_langsetup_prop {#2/totalhyphenmin} \l_tmpa_tl
+ \prop_get:NeNT \l_xpg_langsetup_prop {#2/totalhyphenmin} \l_tmpb_tl
{
- \xpg@info{totalhyphenmin: '\l_tmpa_tl'}
- \expandafter\hyphenationmin \l_tmpa_tl
+ \xpg_info_msg:n {totalhyphenmin: '\l_tmpb_tl'}
+ \expandafter\hyphenationmin \l_tmpb_tl
}
- {}
}
}
@@ -2419,23 +2280,26 @@
\DeclareDocumentEnvironment { hyphenrules } { O{} m }
{
% Check for real language name and options
- \edef\xpg@tmp@opts{\xpg_alias_add_to_option_i:nn{#2}{#1}}
- \edef\xpg@tmp@lang{\xpg_alias_base_lang:n{#2}}
+ \tl_set:Nx \l_tmp_opts_tl { \xpg_alias_add_to_option_i:nn{#2}{#1} }
+ \tl_set:Nx \l_tmp_lang_tl { \xpg_alias_base_lang:n{#2} }
% Register the language options
- \__xpg_set_language_options:nnn {\xpg@tmp@lang} {\xpg@tmp@opts} {@xpg@set@langvariant}
+ \__xpg_set_language_options:nn { \l_tmp_lang_tl } { \l_tmp_opts_tl }
% Now switch patterns
- \__xpg_use_or_warn:c{\use:c{xpg@tmp@lang}@language}
+ \__xpg_use_or_warn:c{\use:c{l_tmp_lang_tl}@language}
% And activate hyphenmins
- \use@localhyphenmins[\xpg@tmp@opts]{\xpg@tmp@lang}
+ \__xpg_use_localhyphenmins:nn { \l_tmp_opts_tl } { \l_tmp_lang_tl }
}
{ }
-\AddToHook{begindocument/before}{
- \IfPackageLoadedTF{bidi}{
- \providecommand*{\aemph}[1]{$\overline{\hboxR{#1}}$}
+\hook_gput_code:nnn {begindocument/before} {.}
+{
+ \IfPackageLoadedTF{bidi}
+ {
+ \ProvideDocumentCommand \aemph { m } { $\overline{\hboxR{#1}}$ }
}{}
- \IfPackageLoadedTF{luabidi}{
- \providecommand*{\aemph}[1]{$\overline{\hbox{\RL{#1}}}$}
+ \IfPackageLoadedTF{luabidi}
+ {
+ \ProvideDocumentCommand \aemph { m } { $\overline{\hbox{\RL{#1}}}$ }
}{}
}
@@ -2469,7 +2333,8 @@
.value_required:n = true,
}
-\keys_set:nn { polyglossia } {
+\keys_set:nn { polyglossia }
+{
localmarks = false,
verbose = true,
babelshorthands = false,
@@ -2486,23 +2351,35 @@
\sys_if_engine_luatex:T{
\str_if_eq:eeF{\g_xpg_luatex_renderer_str}{none}
{
- \xpg@info{Setting~ LuaTeX~ font~ renderer~ to~ \g_xpg_luatex_renderer_str}
+ \xpg_info_msg:n{Setting~ LuaTeX~ font~ renderer~ to~ \g_xpg_luatex_renderer_str}
\exp_args:Ne \defaultfontfeatures{Renderer=\g_xpg_luatex_renderer_str}
}
}
-\bool_if:nF \g_xpg_verbose_bool {
- \gdef\@latex@info#1{\relax} % no latex info
- \gdef\@font@info#1{\relax} % no latex font info
- \gdef\@font@warning#1{\relax} % no latex font warnings
- \gdef\zf@PackageInfo#1{\relax} % no fontspec info
- \gdef\xpg@info#1{\relax} % no polyglossia info
+\bool_if:nF \g_xpg_verbose_bool
+{
+ \cs_gset_nopar:Npn \@latex@info #1 { \relax } % no latex info
+ \cs_gset_nopar:Npn \@font@info #1 { \relax } % no latex font info
+ \cs_gset_nopar:Npn \@font@warning #1 { \relax } % no latex font warnings
+ \msg_redirect_module:nnn { fontspec } { info } { none } % no fontspec info
+ \msg_redirect_module:nnn { polyglossia } { info } { none } % no polyglossia info
}
\bool_if:nT \g_xpg_localmarks_bool {
\__xpg_enable_local_marks:
}
+% common code to initiate babelshordhands in glosses
+\cs_new:Npn \InitializeBabelShorthands
+{
+ \cs_if_exist:cF {initiate@active@char}
+ {
+ \file_input:n {babelsh.def}
+ \initiate@active@char{"}
+ \shorthandoff{"}
+ }
+}
+
% Control shorthand (de-)activation
% This checks that the shorthand char is only deactivated
% if we have activated it ourselves and hence keeps
@@ -2530,21 +2407,22 @@
% Inherit shorthands in other languages
\NewDocumentCommand \inheritbabelshorthands { m m }
{
- \AddToHook{begindocument/before}{
+ \hook_gput_code:nnn {begindocument/before} {.}
+ {
% Load the involved languages if necessary
% Error if they do not exist
\tl_set:Nn \l__xpg_tmpa_lang_tl { \xpg_alias_base_lang:n{#1} }
\clist_if_in:NeF \xpg@loaded {\l__xpg_tmpa_lang_tl}{
\file_if_exist:nTF{gloss-\l__xpg_tmpa_lang_tl .ldf}
{ \setotherlanguage{#1} }
- { \xpg@error{ Source~ language~ #1,~ used~ in~
+ { \xpg_error_msg:n { Source~ language~ #1,~ used~ in~
\string\inheritbabelshorthands,~ does~ not~ exist } }
}
\tl_set:Nn \l__xpg_tmpb_lang_tl { \xpg_alias_base_lang:n{#2} }
\clist_if_in:NeF \xpg@loaded {\l__xpg_tmpb_lang_tl}{
\file_if_exist:nTF{gloss-\l__xpg_tmpb_lang_tl .ldf}
{ \setotherlanguage{#2} }
- { \xpg@error{ Target~ language~ #2,~ used~ in~
+ { \xpg_error_msg:n { Target~ language~ #2,~ used~ in~
\string\inheritbabelshorthands,~ does~ not~ exist } }
}
% Test whether the requested shorthands exist
@@ -2556,7 +2434,7 @@
{ \bool_set_true:N \l__xpg_no_shorthands_bool }
\bool_if:nT { \l__xpg_no_shorthands_bool }
{
- \xpg@error{ No~ babel~ shorthands~ exist~ for~ language~ #1 }
+ \xpg_error_msg:n { No~ babel~ shorthands~ exist~ for~ language~ #1 }
}
% If so, apply:
\bool_if:nF { \l__xpg_no_shorthands_bool }
@@ -2581,7 +2459,7 @@
\iflanguageloaded{\l__xpg_tmpa_lang_tl}{
\use:c{\l__xpg_tmpa_lang_tl @shorthands}
}{
- \xpg@error{ Language~ #1,~ requested~ in~
+ \xpg_error_msg:n { Language~ #1,~ requested~ in~
\string\startbabelshorthands,~ is~ not~ loaded }
}
}
diff --git a/Master/texmf-dist/tex/latex/polyomino/polyomino.sty b/Master/texmf-dist/tex/latex/polyomino/polyomino.sty
new file mode 100644
index 00000000000..7a855901188
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/polyomino/polyomino.sty
@@ -0,0 +1,286 @@
+%% polyomino.sty
+%% Copyright 2024 Matthias Floré
+%
+% 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 Matthias Floré.
+%
+% This work consists of the files polyomino.pdf, polyomino.sty,
+% polyomino.tex and README.md.
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{tikz}
+\ProvidesExplPackage{polyomino}{2024/08/01}{1.0}{Polyominoes using TikZ and LaTeX3}
+
+%%> \subsection{Variables and variants}
+
+\bool_new:N \l__polyomino_grid_bool
+\bool_new:N \l__polyomino_pic_bool
+
+\int_new:N \l__polyomino_col_int
+\int_new:N \l__polyomino_dir_int
+\int_new:N \l__polyomino_max_int
+\int_new:N \l__polyomino_row_int
+\int_new:N \l__polyomino_x_int
+\int_new:N \l__polyomino_y_int
+
+\seq_new:N \l__polyomino_add_seq
+\seq_new:N \l__polyomino_cols_seq
+
+\tl_new:N \l__polyomino_path_tl
+\tl_new:N \l__polyomino_pic_tl
+
+\cs_generate_variant:Nn \tl_map_inline:nn { en }
+
+%%> \subsection{Pgfkeys}
+
+\pgfkeys
+ {
+ / polyomino /. is~family ,
+ / polyomino /. search~also = / polyomino / p_2 ,
+ / polyomino ,
+ at /. initial = { ( 0 , 0 ) } ,
+ empty~cell /. initial = . ,
+ grid /. code = \bool_set:Nn \l__polyomino_grid_bool { \cs:w c_#1_bool \cs_end: } ,
+ grid /. default = true ,
+ grid = false ,
+ grid~style /. style = { grid_style /. style = {#1} } ,
+ grid_style /. style = {} ,
+ row~sep /. initial = { , } ,
+ }
+
+\pgfkeys
+ {%a separate key family so that the second argument of the key p only accepts keys which apply to a separate polyomino
+ / polyomino / p_2 /. is~family ,
+ / polyomino / p_2 ,
+ connected /. code = \bool_set_false:N \l__polyomino_pic_bool ,
+ connected /. value~forbidden ,
+ discrete /. code = \bool_set_true:N \l__polyomino_pic_bool ,
+ discrete /. value~forbidden ,
+ p /. style~2~args = { #1__style /. style = {#2} } ,%2 underscores to avoid the same name as for example the key style_style
+ pic /. code =
+ {
+ \bool_set_true:N \l__polyomino_pic_bool
+ \tl_set:Nn \l__polyomino_pic_tl {#1}
+ } ,
+ style /. style = { style_style /. style = {#1} } ,
+ style_style /. style = {} ,
+ }
+
+%%> \subsection{The command \textbackslash polyomino}
+
+\NewDocumentCommand \polyomino { O {} m }
+ {
+ {%note the double braces {{...}} so that the contents is in a group and in particular, \pgfkeys is applied locally
+ \pgfkeys { / polyomino , #1 }
+ \int_zero:N \l__polyomino_col_int
+ \int_set:Nn \l__polyomino_row_int { 1 }
+ \seq_clear:N \l__polyomino_cols_seq
+ \tl_map_inline:en {#2}
+ %it is convenient that this ignores spaces in #2
+ %e argument specifier for the case that #2 is given by a command or contains a command
+ {
+ \tl_if_eq:neTF {##1} { \pgfkeysvalueof { / polyomino / row~sep } }
+ {
+ \seq_put_right:NV \l__polyomino_cols_seq \l__polyomino_col_int
+ \int_incr:N \l__polyomino_row_int
+ \int_zero:N \l__polyomino_col_int
+ }
+ {
+ \int_incr:N \l__polyomino_col_int
+ \tl_clear_new:c { l__polyomino_\int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int _tl }
+ \tl_if_eq:neF {##1} { \pgfkeysvalueof { / polyomino / empty~cell } }
+ { \tl_set:cn { l__polyomino_\int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int _tl } {##1} }
+ \tl_gclear_new:c { g__polyomino_\int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int _tl }
+ }
+ }
+ \seq_put_right:NV \l__polyomino_cols_seq \l__polyomino_col_int
+ \int_set:Nn \l__polyomino_max_int { \fp_eval:n { max ( \seq_use:Nn \l__polyomino_cols_seq { , } ) } }
+ \seq_map_indexed_inline:Nn \l__polyomino_cols_seq
+ {
+ \tl_clear_new:c { l__polyomino_##1_0_tl }
+ \int_step_inline:nnn { ##2 + 1 } { \l__polyomino_max_int + 1 }
+ { \tl_clear_new:c { l__polyomino_##1_####1_tl } }
+ }
+ \int_step_inline:nnn { 0 } { \l__polyomino_max_int + 1 }
+ {
+ \tl_clear_new:c { l__polyomino_0_##1_tl }
+ \tl_clear_new:c { l__polyomino_\int_eval:n { \l__polyomino_row_int + 1 }_##1_tl }
+ }
+ \pgfkeys
+ {
+ / tikz ,
+ shift /. expanded = { \pgfkeysvalueof { / polyomino / at } } ,
+ shift = { ( 0 , \seq_count:N \l__polyomino_cols_seq ) }
+ }
+ \seq_map_indexed_inline:Nn \l__polyomino_cols_seq
+ {
+ \int_step_inline:nn {##2}
+ {
+ \tl_if_empty:cF { l__polyomino_##1_####1_tl }
+ {
+ {%note the double braces {{...}} so that \pgfkeys is applied locally
+ \pgfkeys { / polyomino / p_2 , \cs:w l__polyomino_##1_####1_tl \cs_end: __style }
+ \bool_if:NTF \l__polyomino_pic_bool
+ { \pic [ / polyomino / p_2 / style_style ] at ( ####1 - 0.5 , 0.5 - ##1 ) { code = { \l__polyomino_pic_tl } } ; }
+ {
+ \seq_clear:N \l__polyomino_add_seq
+ \tl_if_eq:ccF { l__polyomino_##1_####1_tl } { l__polyomino_##1_\int_eval:n { ####1 - 1 }_tl }
+ {
+ \tl_if_empty:cT { g__polyomino_##1_####1_tl }
+ {
+ \int_set:Nn \l__polyomino_dir_int { 1 }
+ \int_set:Nn \l__polyomino_col_int {####1}
+ \int_set:Nn \l__polyomino_row_int {##1}
+ \int_set:Nn \l__polyomino_x_int {####1}
+ \int_set:Nn \l__polyomino_y_int { 1 - ##1 }
+ \tl_build_begin:N \l__polyomino_path_tl
+ \fp_do_until:nn { ####1 - 1 = \l__polyomino_x_int && 1 - ##1 = \l__polyomino_y_int }
+ {
+ %concerning \tl_build_put_right:Ne \l__polyomino_path_tl,
+ %for example (0,0)--(0,1)--(0,2) results in a larger file size than (0,0)--(0,2)
+ \tl_if_eq:ccTF
+ { l__polyomino_##1_####1_tl }
+ {
+ l__polyomino
+ _\int_eval:n
+ { \l__polyomino_row_int + \clist_item:nn { 0 , 1 , 0 , -1 } { \l__polyomino_dir_int } }
+ _\int_eval:n
+ { \l__polyomino_col_int + \clist_item:nn { 1 , 0 , -1 , 0 } { \l__polyomino_dir_int } }
+ _tl
+ }
+ {
+ \tl_if_eq:ccTF
+ { l__polyomino_##1_####1_tl }
+ {
+ l__polyomino
+ _\int_eval:n
+ { \l__polyomino_row_int + \clist_item:nn { -1 , 1 , 1 , -1 } { \l__polyomino_dir_int } }
+ _\int_eval:n
+ { \l__polyomino_col_int + \clist_item:nn { 1 , 1 , -1 , -1 } { \l__polyomino_dir_int } }
+ _tl
+ }
+ {
+ \tl_build_put_right:Ne \l__polyomino_path_tl
+ { -- ( \int_use:N \l__polyomino_x_int , \int_use:N \l__polyomino_y_int ) }
+ \int_add:Nn \l__polyomino_row_int
+ { \clist_item:nn { -1 , 1 , 1 , -1 } { \l__polyomino_dir_int } }
+ \int_add:Nn \l__polyomino_col_int
+ { \clist_item:nn { 1 , 1 , -1 , -1 } { \l__polyomino_dir_int } }
+ \int_compare:nNnTF { \l__polyomino_dir_int } = { 1 }
+ { \int_set:Nn \l__polyomino_dir_int { 4 } }
+ { \int_decr:N \l__polyomino_dir_int }
+ }
+ {
+ \int_add:Nn \l__polyomino_row_int
+ { \clist_item:nn { 0 , 1 , 0 , -1 } { \l__polyomino_dir_int } }
+ \int_add:Nn \l__polyomino_col_int
+ { \clist_item:nn { 1 , 0 , -1 , 0 } { \l__polyomino_dir_int } }
+ }
+ \tl_if_empty:cTF
+ { g__polyomino_\int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int _tl }
+ {
+ \seq_put_right:Ne \l__polyomino_add_seq
+ { \int_use:N \l__polyomino_row_int _\int_use:N \l__polyomino_col_int }
+ }
+ {
+ \bool_set_true:N \l__polyomino_pic_bool
+ \int_set:Nn \l__polyomino_x_int { ####1 - 1 }
+ \int_set:Nn \l__polyomino_y_int { 1 - ##1 }
+ }
+ }
+ {
+ \tl_build_put_right:Ne \l__polyomino_path_tl
+ { -- ( \int_use:N \l__polyomino_x_int , \int_use:N \l__polyomino_y_int ) }
+ \int_compare:nNnTF { \l__polyomino_dir_int } = { 4 }
+ { \int_set:Nn \l__polyomino_dir_int { 1 } }
+ { \int_incr:N \l__polyomino_dir_int }
+ }
+ \bool_if:NF \l__polyomino_pic_bool
+ {
+ \int_add:Nn \l__polyomino_x_int { \clist_item:nn { 1 , 0 , -1 , 0 } { \l__polyomino_dir_int } }
+ \int_add:Nn \l__polyomino_y_int { \clist_item:nn { 0 , -1 , 0 , 1 } { \l__polyomino_dir_int } }
+ }
+ }
+ \tl_build_end:N \l__polyomino_path_tl
+ \bool_if:NF \l__polyomino_pic_bool
+ { \fill [ / polyomino / p_2 / style_style ] ( ####1 - 1 , 1 - ##1 ) \l__polyomino_path_tl -- cycle ; }
+ }
+ }
+ \tl_gset:cn { g__polyomino_##1_####1_tl } { c }
+ \seq_map_inline:Nn \l__polyomino_add_seq
+ { \tl_gset:cn { g__polyomino_########1_tl } { c } }
+ }
+ }
+ }
+ }
+ }
+ \bool_if:NT \l__polyomino_grid_bool
+ {
+ \int_step_inline:nn { \seq_count:N \l__polyomino_cols_seq - 1 }
+ {
+ \int_zero:N \l__polyomino_col_int
+ \int_zero:N \l__polyomino_x_int
+ \int_set:Nn \l__polyomino_y_int
+ { \int_min:nn { \seq_item:Nn \l__polyomino_cols_seq {##1} } { \seq_item:Nn \l__polyomino_cols_seq { ##1 + 1 } } }
+ \int_while_do:nNnn { \l__polyomino_x_int } < { \l__polyomino_y_int }
+ {
+ \bool_do_while:nn
+ {
+ \tl_if_eq_p:cc
+ { l__polyomino_##1_\int_use:N \l__polyomino_x_int _tl }
+ { l__polyomino_\int_eval:n { ##1 + 1 }_\int_use:N \l__polyomino_x_int _tl }
+ &&
+ ! \tl_if_empty_p:c { g__polyomino_##1_\int_use:N \l__polyomino_x_int _tl }
+ &&
+ \int_compare_p:nNn { \l__polyomino_x_int } < { \l__polyomino_y_int + 1 }
+ }
+ { \int_incr:N \l__polyomino_x_int }
+ \int_compare:nNnT { \l__polyomino_x_int } > { \l__polyomino_col_int + 1 }
+ {
+ \draw [ / polyomino / grid_style ]
+ ( \int_use:N \l__polyomino_col_int , -##1 ) -- ( \int_use:N \l__polyomino_x_int - 1 , -##1 ) ;
+ }
+ \int_set_eq:NN \l__polyomino_col_int \l__polyomino_x_int
+ }
+ }
+ \int_set:Nn \l__polyomino_x_int { \seq_count:N \l__polyomino_cols_seq }
+ \int_step_inline:nn { \l__polyomino_max_int - 1 }
+ {
+ \int_zero:N \l__polyomino_row_int
+ \int_zero:N \l__polyomino_y_int
+ \int_while_do:nNnn { \l__polyomino_y_int } < { \l__polyomino_x_int }
+ {
+ \bool_do_while:nn
+ {
+ \tl_if_eq_p:cc
+ { l__polyomino_\int_use:N \l__polyomino_y_int _##1_tl }
+ { l__polyomino_\int_use:N \l__polyomino_y_int _\int_eval:n { ##1 + 1 }_tl }
+ &&
+ ! \tl_if_empty_p:c { g__polyomino_\int_use:N \l__polyomino_y_int _##1_tl }
+ &&
+ \int_compare_p:nNn { \l__polyomino_y_int } < { \l__polyomino_x_int + 1 }
+ &&
+ \int_compare_p:nNn {##1} < { \seq_item:Nn \l__polyomino_cols_seq { \l__polyomino_y_int } + 0 }
+ }
+ { \int_incr:N \l__polyomino_y_int }
+ \int_compare:nNnT { \l__polyomino_y_int } > { \l__polyomino_row_int + 1 }
+ {
+ \draw [ / polyomino / grid_style ]
+ ( ##1 , -\int_use:N \l__polyomino_row_int ) -- ( ##1 , 1 - \int_use:N \l__polyomino_y_int ) ;
+ }
+ \int_set_eq:NN \l__polyomino_row_int \l__polyomino_y_int
+ }
+ }
+ }
+ }
+ }
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/postnotes/postnotes.sty b/Master/texmf-dist/tex/latex/postnotes/postnotes.sty
index 185ea5968c6..a00df4eb733 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-11-04} {0.4.0}
{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 }
@@ -116,41 +117,104 @@
\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
+ {
+ \bool_lazy_any:nT
+ {
+ { \str_if_eq_p:nn {#1} { mark } }
+ { \str_if_eq_p:nn {#1} { section } }
+ { \str_if_eq_p:nn {#1} { preprint } }
+ }
+ { \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 } }
+ \iow_shipout_e:Nn \@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_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_text_page_label:n #1
- { \__postnotes_set_label:nn { text@ #1 } { \int_use:N \c@page } }
+ { \__postnotes_set_label:nnnn { 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 } }
+ { \__postnotes_set_label:nnnn { print } { #1 } { \int_use:N \c@page } { } }
\cs_generate_variant:Nn \__postnotes_set_print_page_label:n { e }
+\cs_new_protected:Npn \__postnotes_set_pre_print_label:n #1
+ { \__postnotes_set_label:nnnn { preprint } { #1 } { } { } }
+\cs_generate_variant:Nn \__postnotes_set_pre_print_label:n { e }
\cs_new_protected:Npn \__postnotes_get_pageref:Nn #1#2
{
\cs_if_exist:cTF { \c__postnotes_ref_prefix_tl @ #2 }
@@ -258,6 +322,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 +335,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 +419,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 +467,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 = { ~ } ,
- } ,
+ \iow_shipout_e:Nn \@auxout
+ { \token_to_str:N \postnote@setcounteraux { #1 } }
+ }
+ \@esphack
+ }
+\NewDocumentCommand \pnaddtocounteraux { m }
+ {
+ \@bsphack
+ \legacy_if:nT { @filesw }
+ {
+ \iow_shipout_e:Nn \@auxout
+ { \token_to_str:N \postnote@addtocounteraux { #1 } }
+ }
+ \@esphack
}
\NewDocumentCommand \postnotesetup { m }
{ \keys_set:nn { postnotes/setup } {#1} }
@@ -369,44 +536,80 @@
\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 }
\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
+ }
+ \tl_set:Ne \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 }
+ \cs_set:Npn \@currentcounter { postnote }
+ \cs_set:Npe \@currentlabel { \p@postnote \l__postnotes_mark_tl }
+ \__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
+ {
+ \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 +628,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 +643,83 @@
\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 }
+ \tl_set:Ne \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
+ \exp_args:NNNe
+ \group_end:
+ \tl_set:Nn \l__postnotes_mark_typeset_tl { \thepostnote }
}
+ \__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
{
- \__postnotes_typeset_mark_wrapper:n
+ \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 }
+ {
+ \tl_set:Ne #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:nnn
+ {
+ #3
\bool_if:NTF \l__postnotes_hyperlink_bool
{
\__postnotes_make_mark:nnn {#2}
@@ -474,72 +728,82 @@
}
{ \__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} }
+\tl_new:N \l__postnotes_note_ref_label_tl
\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} } { } { } }
- }
+ \tl_set:Nn \l__postnotes_note_ref_label_tl {#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
+ { \__postnotes_store_section:ne { \l_postnotes_note_id_tl } {#2} }
+ { \__postnotes_store_section:nn { \l_postnotes_note_id_tl } {#2} }
\group_end:
}
\tl_new:N \g__postnotes_section_name_tl
@@ -561,10 +825,12 @@
\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
@@ -578,138 +844,182 @@
\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_pre_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
+ \bool_gset_true:N \g__postnotes_header_vars_next_bool
+ \__postnotes_get_headers_data:N \g__postnotes_print_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_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 \pnthepage
+ { mark@ \l_postnotes_print_note_id_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 }
- {
+ \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 }
+ \tl_set:Nn \l__postnotes_print_typeset_mark_tl
+ {
+ \tag_socket_use:n { postnotes/printmark/begin }
+ \MakeLinkTarget*
+ { postnote. \l_postnotes_print_note_id_tl .text }
+ \__postnotes_set_text_page_label:e
+ { \l_postnotes_print_note_id_tl }
+ \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
+ }
+ \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
+ }
+ }
+ \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 } }
+ }
\group_end:
}
\msg_new:nnn { postnotes } { empty-printpostnotes }
@@ -727,61 +1037,191 @@
{ \__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:
+ {
+ \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
+ { { preprint } { \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_if:NTF \l__postnotes_print_as_list_bool
+ \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
{
- \group_begin:
- \seq_gsort:Nn #1
+ \bool_if:NT \l__postnotes_sort_bool
{
- \__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_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:
+ \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.
+ }
\tl_new:N \pnhdpagefirst
\tl_new:N \pnhdpagelast
\tl_new:N \pnhdchapfirst
@@ -811,169 +1251,169 @@
\cs_new_protected:Npn \__postnotes_get_headers_data:N #1
{
\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 }
- {
- \__postnotes_get_pageref:Nn
- \l__postnotes_curr_text_page_tl { text@ ##1 }
- \tl_if_empty:NF \l__postnotes_curr_text_page_tl
- {
- \tl_if_eq:NNTF
- \l__postnotes_prev_text_page_tl
- \l__postnotes_curr_text_page_tl
- {
- \__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_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
- }
- }
- }
- }
- \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 }
- }
+ \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 }
+ {
+ \__postnotes_get_pageref:Nn
+ \l__postnotes_curr_text_page_tl { text@ ##1 }
+ \tl_if_empty:NF \l__postnotes_curr_text_page_tl
+ {
+ \tl_if_eq:NNTF
+ \l__postnotes_prev_text_page_tl
+ \l__postnotes_curr_text_page_tl
+ {
+ \__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_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
+ }
+ }
+ }
+ }
+ \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 }
+ \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 ]
+\AddToHook { shipout/before } [ ./header ]
{ \__postnotes_set_headers_vars_next: }
\bool_new:N \g__postnotes_header_vars_next_bool
\cs_new_protected:Npn \__postnotes_set_headers_vars_next:
@@ -998,78 +1438,81 @@
{ \pnhdnotes{} ~ \pnhdtopages{} ~ \pnhdpagefirst -- \pnhdpagelast }
}
\tl_new:N \l__postnotes_restore_tmp_tl
-\AddToHook { postnotes/note/begin } [ postnotes ]
+\AddToHook { postnotes/note/begin } [ ./compat/caption ]
+ { \cs_if_exist:NT \@captype { \postnotesetup { maybemulti } } }
+\AddToHook { package/biblatex/after } [ ./compat/biblatex ]
{
- \cs_if_exist:NT \@captype
- { \bool_set_true:N \l__postnotes_maybe_multi_bool }
- }
-\AddToHook { package/biblatex/after }
- {
- \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} }
+ \tl_new:N \l__postnotes_note_zref_zlabel_tl
\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} } { } { } }
- }
+ \tl_set:Nn \l__postnotes_note_zref_zlabel_tl {#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 +1524,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 +1535,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 +1553,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 +1572,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 +1595,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 }
+ {
+ \tag_struct_begin:n
+ {
+ 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 ]
{
- \clist_map_inline:nn
+ \str_if_empty:NF \l__postnotes_note_label_str
{
- tblr , longtblr , talltblr , booktabs ,
- longtabs , talltabs , +array
+ \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_tl }
+ { postnotes/tagsup@noteid }
+ {
+ \tl_set:Ne \l__postnotes_tmpa_tl
+ {
+ \property_ref:ee
+ { postnote@label@innote. \l__postnotes_note_ref_label_tl }
+ { 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_tl }
+ { postnotes/tagsup@noteid }
+ {
+ \tl_set:Ne \l__postnotes_tmpa_tl
+ {
+ \property_ref:ee
+ { postnote@label@option. \l__postnotes_note_ref_label_tl }
+ { 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_tl }
+ { postnotes@tagsup@noteid }
+ {
+ \tl_set:Ne \l__postnotes_tmpa_tl
+ {
+ \zref@extract { \l__postnotes_note_zref_zlabel_tl }
+ { 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_tl }
+ { postnotes/tagsup@noteid }
+ {
+ \tl_set:Ne \l__postnotes_tmpa_tl
+ {
+ \property_ref:ee
+ {
+ postnote@zlabel@option.
+ \l__postnotes_note_zref_zlabel_tl
+ }
+ { 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/preview/prauctex.cfg b/Master/texmf-dist/tex/latex/preview/prauctex.cfg
index 39922c989a8..f9273829b11 100644
--- a/Master/texmf-dist/tex/latex/preview/prauctex.cfg
+++ b/Master/texmf-dist/tex/latex/preview/prauctex.cfg
@@ -26,11 +26,17 @@
\PreviewMacro*[?[{@{[]}}{}][#1]\item
\PreviewMacro*\emph
\PreviewMacro*\textrm
+\PreviewMacro*\textbf
\PreviewMacro*\textit
\PreviewMacro*\textsc
\PreviewMacro*\textsf
\PreviewMacro*\textsl
\PreviewMacro*\texttt
+\PreviewMacro*\textulc
+\PreviewMacro*\textmd
+\PreviewMacro*\textnormal
+\PreviewMacro*\textup
+\PreviewMacro*\textsw
\PreviewMacro*\textcolor
\PreviewMacro*\mbox
\PreviewMacro*[][#1{}]\author
diff --git a/Master/texmf-dist/tex/latex/preview/preview.sty b/Master/texmf-dist/tex/latex/preview/preview.sty
index 1002230ffb0..39895bea005 100644
--- a/Master/texmf-dist/tex/latex/preview/preview.sty
+++ b/Master/texmf-dist/tex/latex/preview/preview.sty
@@ -24,8 +24,8 @@
%% The preview style for extracting previews from LaTeX documents.
%% Developed as part of AUCTeX <URL:https://www.gnu.org/software/auctex/>.
\NeedsTeXFormat{LaTeX2e}
-\def\pr@version{13.3}
-\def\pr@date{2024/01/17}
+\def\pr@version{14.0.6}
+\def\pr@date{2024/06/30}
\ProvidesPackage{preview}[\pr@date\space \pr@version\space (AUCTeX/preview-latex)]
\let\ifPreview\iffalse
\let\preview@delay=\@gobble
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCAllumettes.tex b/Master/texmf-dist/tex/latex/profcollege/PfCAllumettes.tex
index f603c71f965..dea7c68cb9d 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCAllumettes.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCAllumettes.tex
@@ -1,6 +1,10 @@
%%%
% Allumettes
%%%
+\def\filedateAllu{2024/08/04}%
+\def\fileversionAllu{0.1}%
+\message{-- \filedateAllu\space v\fileversionAllu}
+%
\setKVdefault[Allumettes]{Impression=false,Echelles=false}%
\defKV[Allumettes]{Echelle=\setKV[Allumettes]{Echelles}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCArbreCalcul.tex b/Master/texmf-dist/tex/latex/profcollege/PfCArbreCalcul.tex
new file mode 100644
index 00000000000..347c56f6401
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCArbreCalcul.tex
@@ -0,0 +1,546 @@
+%%%
+% Arbre de calculs
+%%%
+\def\filedateArbreC{2024/08/04}%
+\def\fileversionArbreC{0.1}%
+\message{-- \filedateArbreC\space v\fileversionArbreC}%
+\newtoks\toklistearbre%
+\newtoks\toklistearbrefractions%
+\newtoks\toklistearbreexpressions%
+
+\def\UpdatetoksArbreCalcul#1\nil{\IfDecimal{#1}{\addtotok\toklistearbre{#1,}}{\addtotok\toklistearbre{"#1",}}}%
+\def\UpdatetoksArbreFractions#1\nil{\addtotok\toklistearbrefractions{"#1",}}%
+\def\UpdatetoksArbreExpressions#1\nil{\addtotok\toklistearbreexpressions{"#1",}}%
+
+\setKVdefault[ArbreCalcul]{Correction=false,Couleur=LightSteelBlue,Substitue=7,Litteral=false,Largeur=8mm,LargeurC=8mm,Ecart=1.5cm,Hauteur=10mm,Lettre="x",CouleurDepart=LightGreen,Fractions=false,Nombres={},Expressions={},Etape=infinity}%
+\defKV[ArbreCalcul]{Fraction=\setKV[ArbreCalcul]{Fractions}}%
+
+\NewDocumentCommand\ArbreCalcul{om}{%
+ \useKVdefault[ArbreCalcul]%
+ \setKV[ArbreCalcul]{#1}%
+ \toklistearbre{}%
+ \toklistearbrefractions{}%
+ \toklistearbreexpressions{}%
+ \infixtoRPN{#2}%
+ \setsepchar{ }\ignoreemptyitems%
+ \readlist*\ListeNombres{\RPN}%
+ \reademptyitems%
+ \foreachitem\compteur\in\ListeNombres{\expandafter\UpdatetoksArbreCalcul\compteur\nil}%
+ \ifboolKV[ArbreCalcul]{Fractions}{%
+ \xdef\Foo{\useKV[ArbreCalcul]{Nombres}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeFractions{\Foo}%
+ \reademptyitems
+ \foreachitem\compteur\in\ListeFractions{\expandafter\UpdatetoksArbreFractions\compteur\nil}%
+ \BuildArbreCalculFraction{\the\toklistearbre}{\the\toklistearbrefractions}%
+ }{%
+ \ifboolKV[ArbreCalcul]{Litteral}{
+ \xdef\Foo{\useKV[ArbreCalcul]{Nombres}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeFractions{\Foo}%
+ \reademptyitems
+ \foreachitem\compteur\in\ListeFractions{\expandafter\UpdatetoksArbreFractions\compteur\nil}%
+ \xdef\Foo{\useKV[ArbreCalcul]{Expressions}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeExpressions{\Foo}%
+ \reademptyitems
+ \foreachitem\compteur\in\ListeExpressions{\expandafter\UpdatetoksArbreExpressions\compteur\nil}%
+% listarbre : \the\toklistearbre%
+%
+% listfracions : \the\toklistearbrefractions
+%
+% listexpressions : \the\toklistearbreexpressions
+ \BuildArbreCalculLitteral{\the\toklistearbre}{\the\toklistearbrefractions}{\the\toklistearbreexpressions}%
+ }{%
+ \BuildArbreCalcul{\the\toklistearbre}%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\BuildArbreCalcul{m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ boolean Correction,Litteral,Allume[];
+ Correction=\useKV[ArbreCalcul]{Correction};
+ Litteral=\useKV[ArbreCalcul]{Litteral};
+
+ NombreSubstitue=\useKV[ArbreCalcul]{Substitue};
+
+ etape=0;
+ Etape=\useKV[ArbreCalcul]{Etape};
+
+ color Evidence,CoulDepart;
+ Evidence=\useKV[ArbreCalcul]{Couleur};
+ CoulDepart=\useKV[ArbreCalcul]{CouleurDepart};
+
+ pair pointprec;
+
+ path base[];
+ base1=unitsquare xscaled \useKV[ArbreCalcul]{Largeur} yscaled 5mm;
+ base2=fullcircle scaled 5mm;
+ base3=unitsquare xscaled \useKV[ArbreCalcul]{LargeurC} yscaled 5mm;
+
+ vardef BlocCalcul(expr Ba,Bb,op,cha,chb)=%
+ % Ba point gauche
+ % Bb point droite
+ % op opération à afficher
+ etape:=etape+1;
+ save $;
+ picture $;
+ path cc[];
+ pair Bc;
+ Bc=(0.5*(xpart(Ba)+xpart(Bb)),if ypart(Bb)<ypart(Ba):ypart(Bb) else:ypart(Ba) fi -0.75u);
+ pointprec:=Bc+u*(0,-0.75);
+ $=image(
+ if Allume[numeropoint-1]=true:
+ cc1=base3 shifted (Ba-center base3);
+ else:
+ cc1=base1 shifted (Ba-center base1);
+ fi;
+ if Allume[numeropoint]=true:
+ cc2=base3 shifted (Bb-center base3);
+ else:
+ cc2=base1 shifted (Bb-center base1);
+ fi;
+
+ cc3=(fullcircle scaled 5mm) shifted Bc;
+ cc4=base3 shifted (pointprec-center base3);
+ if op="mul":
+ label(TEX("$\times$"),Bc);
+ ValeurPile[numeropoint-1]:=cha*chb;
+ elseif op="add":
+ label(TEX("$+$"),Bc);
+ ValeurPile[numeropoint-1]:=cha+chb;
+ elseif op="sub":
+ label(TEX("$\_$"),Bc);
+ ValeurPile[numeropoint-1]:=cha-chb;
+ elseif op="div":
+ label(TEX("$\div$"),Bc);
+ ValeurPile[numeropoint-1]:=cha/chb;
+ fi;
+ if Correction:
+ if etape<Etape+1:
+ fill cc4 withcolor Evidence;
+ label(TEX("\num{"&decimal(ValeurPile[numeropoint-1])&"}"),pointprec);
+ fi;
+ fi;
+ for l=1 upto 4:
+ trace cc[l];
+ endfor;
+ draw (Ba--Bc) cutbefore cc1 cutafter cc3;
+ draw (Bb--Bc) cutbefore cc2 cutafter cc3;
+ draw (Bc--pointprec) cutbefore cc3 cutafter cc4;
+ );
+ $
+ enddef;
+
+ numeric Valeurs[];
+ numeric Valeursa[];
+
+ string Operations[];
+
+ numeric numeropoint;
+ numeropoint=0;
+
+ numeric ValeurPile[];
+
+ vardef RecupDonnees(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ if numeric p_:
+ Valeurs[n]=p_;
+ Operations[n]="";
+ else:
+ Valeurs[n]=infinity;
+ Operations[n]=p_;
+ fi;
+ endfor;
+ n:=n+1;
+ Operations[n]="stop";
+ nbtotal=n;
+ for k=1 upto nbtotal:
+ ValeurPile[k]=0;
+ endfor;
+ enddef;
+
+ pair A[];
+ ecart=\useKV[ArbreCalcul]{Ecart};
+
+ RecupDonnees(#1);
+
+ A[0]=(0,0);
+ k=0;
+ nbetape:=0;
+
+ for p_=#1:
+ k:=k+1;
+ if numeric p_:
+ numeropoint:=numeropoint+1;
+ if unknown A[numeropoint]:A[numeropoint]-A[numeropoint-1]=ecart*(1,0);Allume[numeropoint]=false; else:
+ A[numeropoint]:=A[numeropoint-1]+ecart*(1,0); Allume[numeropoint]:=false;
+ fi;
+ if Valeurs[k]=0:Valeursa[k]:=NombreSubstitue else: Valeursa[k]=Valeurs[k] fi;
+ if Operations[k+1]="neg":
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart; if Litteral:
+ label(TEX("$\useKV[ArbreCalcul]{Lettre}$"),A[numeropoint]);
+ else:
+ label(TEX("\num{"&decimal(-Valeursa[k])&"}"),A[numeropoint]);
+ fi;
+ else:
+ label(TEX("\num{"&decimal(-Valeursa[k])&"}"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=-Valeursa[k];
+ else:
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;if Litteral:
+ label(TEX("$\useKV[ArbreCalcul]{Lettre}$"),A[numeropoint]);
+ else:
+ label(TEX("\num{"&decimal(Valeursa[k])&"}"),A[numeropoint]);
+ fi;
+ else:
+ label(TEX("\num{"&decimal(Valeursa[k])&"}"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=Valeursa[k];
+ fi;
+ elseif string p_:
+ if p_<>"neg":
+ trace BlocCalcul(A[numeropoint-1],A[numeropoint],Operations[k],ValeurPile[numeropoint-1],ValeurPile[numeropoint]);
+ A[numeropoint-1]:=pointprec;
+ Allume[numeropoint-1]:=true;
+ numeropoint:=numeropoint-1;
+ fi;
+ fi;
+ endfor;
+ \end{mplibcode}
+ \fi
+}%
+
+\NewDocumentCommand\BuildArbreCalculFraction{mm}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ boolean Correction,Allume[];
+ Correction=\useKV[ArbreCalcul]{Correction};
+
+ string Fraction;
+ Fraction=\useKV[ArbreCalcul]{Fraction};
+
+ color Evidence,CoulDepart;
+ Evidence=\useKV[ArbreCalcul]{Couleur};
+ CoulDepart=\useKV[ArbreCalcul]{CouleurDepart};
+
+ pair pointprec;
+
+ path base[];
+ base1=unitsquare xscaled \useKV[ArbreCalcul]{Largeur} yscaled \useKV[ArbreCalcul]{Hauteur};
+ base2=fullcircle scaled 5mm;
+ base3=unitsquare xscaled \useKV[ArbreCalcul]{LargeurC} yscaled \useKV[ArbreCalcul]{Hauteur};
+
+ vardef BlocCalcul(expr Ba,Bb,op,cha,chb)=%
+ % Ba point gauche
+ % Bb point droite
+ % op opération à afficher
+ etape:=etape+1;
+ save $;
+ picture $;
+ path cc[];
+ pair Bc;
+ Bc=(0.5*(xpart(Ba)+xpart(Bb)),if ypart(Bb)<ypart(Ba):ypart(Bb) else:ypart(Ba) fi -0.75u);
+ pointprec:=Bc+u*(0,-1.25);
+ $=image(
+ if Allume[numeropoint-1]=true:
+ cc1=base3 shifted (Ba-center base3);
+ else:
+ cc1=base1 shifted (Ba-center base1);
+ fi;
+ if Allume[numeropoint]=true:
+ cc2=base3 shifted (Bb-center base3);
+ else:
+ cc2=base1 shifted (Bb-center base1);
+ fi;
+ cc3=(fullcircle scaled 5mm) shifted Bc;
+ cc4=base3 shifted (pointprec-center base3);
+ if op="mul":
+ label(TEX("$\times$\MulFraction[Seul][3]{"&cha&"}{"&chb&"}[\ResultatMul]"),Bc);
+ ValeurPile[numeropoint-1]:="\ResultatMul";
+ elseif op="add":
+ label(TEX("$+$\AddFraction[Seul][3]{"&cha&"}{"&chb&"}[\ResultatAdd]"),Bc);
+ ValeurPile[numeropoint-1]:="\ResultatAdd";
+ elseif op="sub":
+ label(TEX("$\_$\SousFraction[Seul][3]{"&cha&"}{"&chb&"}[\ResultatSous]"),Bc);
+ ValeurPile[numeropoint-1]:="\ResultatSous";
+ elseif op="div":
+ label(TEX("$\div$\DivFraction[Seul][3]{"&cha&"}{"&chb&"}[\ResultatDiv]"),Bc);
+ ValeurPile[numeropoint-1]:="\ResultatDiv";
+ fi;
+ if Correction:
+ if etape<Etape+1:
+ fill cc4 withcolor Evidence;
+ label(TEX("$\displaystyle\tofrac{"&ValeurPile[numeropoint-1]&"}$"),pointprec);
+ fi;
+ fi;
+ for l=1 upto 4:
+ trace cc[l];
+ endfor;
+ draw (Ba--Bc) cutbefore cc1 cutafter cc3;
+ draw (Bb--Bc) cutbefore cc2 cutafter cc3;
+ draw (Bc--pointprec) cutbefore cc3 cutafter cc4;
+ );
+ $
+ enddef;
+
+ numeric Valeurs[];
+ string Valeursa[];
+
+ string Operations[];
+
+ numeric numeropoint;
+ numeropoint=0;
+
+ string ValeurPile[];
+
+ vardef RecupDonnees(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ if numeric p_:
+ Valeurs[n]=p_;
+ Operations[n]="";
+ else:
+ Valeurs[n]=infinity;
+ Operations[n]=p_;
+ fi;
+ endfor;
+ n:=n+1;
+ Operations[n]="stop";
+ nbtotal=n;
+ for k=1 upto nbtotal:
+ ValeurPile[k]="0";
+ endfor;
+ enddef;
+
+ vardef RecupFractions(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Valeursa[n]=p_;
+ endfor;
+ enddef;
+
+ pair A[];
+ ecart=\useKV[ArbreCalcul]{Ecart};
+
+ RecupDonnees(#1);
+ RecupFractions(#2);
+
+ etape=0;
+ Etape=\useKV[ArbreCalcul]{Etape};
+
+ A[0]=(0,0);
+ k=0;
+ nbetape:=0;
+
+ for p_=#1:
+ k:=k+1;
+ if numeric p_:
+ numeropoint:=numeropoint+1;
+ if unknown A[numeropoint]:A[numeropoint]-A[numeropoint-1]=ecart*(1,0);Allume[numeropoint]=false; else:
+ A[numeropoint]:=A[numeropoint-1]+ecart*(1,0); Allume[numeropoint]:=false;
+ fi;
+ if Valeurs[k]=0:Valeursa[Valeurs[k]]:=\useKV[ArbreCalcul]{Fraction} fi;
+ if Operations[k+1]="neg":
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;
+ label(TEX("$\displaystyle\tofrac{"&-Valeursa[Valeurs[k]]&"}$"),A[numeropoint]);
+ else:
+ label(TEX("$\displaystyle\tofrac{"&-Valeursa[Valeurs[k]]&"}$"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=decimal(-Valeursa[Valeurs[k]]);
+ else:
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;
+ label(TEX("$\displaystyle\tofrac{"&Valeursa[Valeurs[k]]&"}$"),A[numeropoint]);
+ else:
+ label(TEX("$\displaystyle\tofrac{"&Valeursa[Valeurs[k]]&"}$"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=Valeursa[Valeurs[k]];
+ fi;
+ elseif string p_:
+ if p_<>"neg":
+ trace BlocCalcul(A[numeropoint-1],A[numeropoint],Operations[k],ValeurPile[numeropoint-1],ValeurPile[numeropoint]);
+ A[numeropoint-1]:=pointprec;
+ Allume[numeropoint-1]:=true;
+ numeropoint:=numeropoint-1;
+ fi;
+ fi;
+ endfor;
+ \end{mplibcode}
+ \fi
+}%
+
+\NewDocumentCommand\BuildArbreCalculLitteral{mmm}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ boolean Correction,Allume[];
+ Correction=\useKV[ArbreCalcul]{Correction};
+
+ color Evidence,CoulDepart;
+ Evidence=\useKV[ArbreCalcul]{Couleur};
+ CoulDepart=\useKV[ArbreCalcul]{CouleurDepart};
+
+ pair pointprec;
+
+ path base[];
+ base1=unitsquare xscaled \useKV[ArbreCalcul]{Largeur} yscaled \useKV[ArbreCalcul]{Hauteur};
+ base2=fullcircle scaled 5mm;
+ base3=unitsquare xscaled \useKV[ArbreCalcul]{LargeurC} yscaled \useKV[ArbreCalcul]{Hauteur};
+
+ vardef BlocCalcul(expr Ba,Bb,op,cha,chb)=%
+ % Ba point gauche
+ % Bb point droite
+ % op opération à afficher
+ etape:=etape+1;
+ save $;
+ picture $;
+ path cc[];
+ pair Bc;
+ Bc=(0.5*(xpart(Ba)+xpart(Bb)),if ypart(Bb)<ypart(Ba):ypart(Bb) else:ypart(Ba) fi -0.75u);
+ pointprec:=Bc+u*(0,-1.25);
+ $=image(
+ if Allume[numeropoint-1]=true:
+ cc1=base3 shifted (Ba-center base3);
+ else:
+ cc1=base1 shifted (Ba-center base1);
+ fi;
+ if Allume[numeropoint]=true:
+ cc2=base3 shifted (Bb-center base3);
+ else:
+ cc2=base1 shifted (Bb-center base1);
+ fi;
+ cc3=(fullcircle scaled 5mm) shifted Bc;
+ cc4=base3 shifted (pointprec-center base3);
+ if op="mul":
+ label(TEX("$\times$"),Bc);
+ ValeurPile[numeropoint-1]:="";
+ elseif op="add":
+ label(TEX("$+$"),Bc);
+ ValeurPile[numeropoint-1]:="";
+ elseif op="sub":
+ label(TEX("$\_$"),Bc);
+ ValeurPile[numeropoint-1]:="";
+ elseif op="div":
+ label(TEX("$\div$"),Bc);
+ ValeurPile[numeropoint-1]:="";
+ fi;
+ if Correction:
+ if etape<Etape+1:
+ fill cc4 withcolor Evidence;
+ label(TEX("$"&Valeursc[etape]&"$"),pointprec);
+ fi;
+ fi;
+ for l=1 upto 4:
+ trace cc[l];
+ endfor;
+ draw (Ba--Bc) cutbefore cc1 cutafter cc3;
+ draw (Bb--Bc) cutbefore cc2 cutafter cc3;
+ draw (Bc--pointprec) cutbefore cc3 cutafter cc4;
+ );
+ $
+ enddef;
+
+ numeric Valeurs[];
+ string Valeursa[];
+ string Valeursc[];
+
+ string Operations[];
+
+ numeric numeropoint;
+ numeropoint=0;
+
+ string ValeurPile[];
+
+ vardef RecupDonnees(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ if numeric p_:
+ Valeurs[n]=p_;
+ Operations[n]="";
+ else:
+ Valeurs[n]=infinity;
+ Operations[n]=p_;
+ fi;
+ endfor;
+ n:=n+1;
+ Operations[n]="stop";
+ nbtotal=n;
+ for k=1 upto nbtotal:
+ ValeurPile[k]="0";
+ endfor;
+ enddef;
+
+ vardef RecupFractions(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Valeursa[n]=p_;
+ endfor;
+ enddef;
+
+ vardef RecupCorrections(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Valeursc[n]=p_;
+ endfor;
+ enddef;
+
+ pair A[];
+ ecart=\useKV[ArbreCalcul]{Ecart};
+
+ RecupDonnees(#1);
+ RecupFractions(#2);
+ RecupCorrections(#3);
+
+ etape=0;
+ Etape=\useKV[ArbreCalcul]{Etape};
+
+ A[0]=(0,0);
+ k=0;
+ nbetape:=0;
+
+ for p_=#1:
+ k:=k+1;
+ if numeric p_:
+ numeropoint:=numeropoint+1;
+ if unknown A[numeropoint]:A[numeropoint]-A[numeropoint-1]=ecart*(1,0);Allume[numeropoint]=false; else:
+ A[numeropoint]:=A[numeropoint-1]+ecart*(1,0); Allume[numeropoint]:=false;
+ fi;
+ if Valeurs[k]=0:Valeursa[Valeurs[k]]:=\useKV[ArbreCalcul]{Lettre} fi;
+ if Operations[k+1]="neg":
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;
+ label(TEX("$"&-Valeursa[Valeurs[k]]&"$"),A[numeropoint]);
+ else:
+ label(TEX("$"&-Valeursa[Valeurs[k]]&"$"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=decimal(-Valeursa[Valeurs[k]]);
+ else:
+ if Valeurs[k]=0:fill (base1 shifted (A[numeropoint]-center base1)) withcolor CoulDepart;
+ label(TEX("$"&Valeursa[Valeurs[k]]&"$"),A[numeropoint]);
+ else:
+ label(TEX("$"&Valeursa[Valeurs[k]]&"$"),A[numeropoint]);
+ fi;
+ ValeurPile[numeropoint]:=Valeursa[Valeurs[k]];
+ fi;
+ elseif string p_:
+ if p_<>"neg":
+ trace BlocCalcul(A[numeropoint-1],A[numeropoint],Operations[k],ValeurPile[numeropoint-1],ValeurPile[numeropoint]);
+ A[numeropoint-1]:=pointprec;
+ Allume[numeropoint-1]:=true;
+ numeropoint:=numeropoint-1;
+ fi;
+ fi;
+ endfor;
+ \end{mplibcode}
+ \fi
+}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCArbreChiffre.tex b/Master/texmf-dist/tex/latex/profcollege/PfCArbreChiffre.tex
index f724c16fda8..26d5cb021af 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCArbreChiffre.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCArbreChiffre.tex
@@ -2,6 +2,9 @@
% ArbreChiffre
%%%
% https://tex.stackexchange.com/questions/112975/how-to-print-the-permutation-of-s-u-v-a-t-with-latex
+\def\filedateArbreCh{2024/08/04}%
+\def\fileversionArbreCh{0.1}%
+\message{-- \filedateArbreCh\space v\fileversionArbreCh}%
\def\recurse#1#2#3#4\endmarker{%
\dopermute{#1#3}#2#4\endmarker
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCAssemblagesSolides.tex b/Master/texmf-dist/tex/latex/profcollege/PfCAssemblagesSolides.tex
index 5521dbb4193..7f04a083238 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCAssemblagesSolides.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCAssemblagesSolides.tex
@@ -1,6 +1,10 @@
%%%
% Assemblages solides
%%%
+\def\filedateAssemblageS{2024/08/04}%
+\def\fileversionAssemblageS{0.1}%
+\message{-- \filedateAssemblageS\space v\fileversionAssemblageS}%
+%
\setKVdefault[Assemblage]{Phi=30,Theta=20,Distance=50,Anglez=0,Anglex=0,Largeur=1.5,Profondeur=0.75,Hauteur=1,RayonBoule=1,RayonCone=1,RayonCylindre=1,HauteurPrisme=1,HauteurPyramideA=1,HauteurPyramideB=1,HauteurConeA=1,HauteurConeB=1,HauteurCylindre=1,Cotes=3,Trace=false,Type=Pyramides}%
\defKV[Assemblage]{Traces=\setKV[Assemblage]{Trace}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCAutomatismes.tex b/Master/texmf-dist/tex/latex/profcollege/PfCAutomatismes.tex
index fbf80943d41..bb000dee6a5 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCAutomatismes.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCAutomatismes.tex
@@ -1,6 +1,10 @@
%%%
% Automatismes
%%%
+\def\filedateAutomatismes{2024/08/04}%
+\def\fileversionAutomatismes{0.1}%
+\message{-- \filedateAutomatismes\space v\fileversionAutomatismes}%
+%
\NewDocumentCommand\ChoixAleaMixold{mmmm}{%
\ChoixAlea{1}{2}{\Autograine}%
\ifnum\Autograine=1\relax%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex
index b75161ffcc9..3e72a725755 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex
@@ -1,4 +1,10 @@
-%%% Autonomie %%%
+%%%
+%Autonomie
+%%%
+\def\filedateAutonomie{2024/08/04}%
+\def\fileversionAutonomie{0.1}%
+\message{-- \filedateAutonomie\space v\fileversionAutonomie}%
+%
\setKVdefault[Autonomie]{AfficheMarge=false,TitreEnigme=Enigme,TitreAtoi=\`A toi,Enigme=false,TexteCorrection=\bfseries Correction,ARemplir=false,Deux=false,Landscape=false}%
\newcommand\Autonomie[3][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCBarreNiveaux.tex b/Master/texmf-dist/tex/latex/profcollege/PfCBarreNiveaux.tex
index 8ee730bbfb3..d56f096d7eb 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCBarreNiveaux.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCBarreNiveaux.tex
@@ -1,6 +1,10 @@
%%%
% Barres de niveaux
%%%
+\def\filedateBarreNiveaux{2024/08/04}%
+\def\fileversionBarreNiveaux{0.1}%
+\message{-- \filedateBarreNiveaux\space v\fileversionBarreNiveaux}%
+%
\setKVdefault[ClesBarre]{Niveau=false,LimiteI=25,LimiteF=50,LimiteS=75,TexteOrigine=0,TexteReference=100,CouleurGraduation=white,CouleurFond=gray!50,CouleurBarre=black,Graduation=false,Nom=D\'efaut,Pas=10,CouleurI=red,CouleurF=orange,CouleurS=yellow,CouleurM=green}
\newlength{\barrewidth}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCBarresCalculs.tex b/Master/texmf-dist/tex/latex/profcollege/PfCBarresCalculs.tex
index 12b50770251..47537abe92f 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCBarresCalculs.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCBarresCalculs.tex
@@ -1,6 +1,9 @@
%%%
% Barres de calculs
%%%
+\def\filedateBarresCalculs{2024/08/04}%
+\def\fileversionBarresCalculs{0.1}%
+\message{-- \filedateBarresCalculs\space v\fileversionBarresCalculs}%
\setKVdefault[SuiteBarre]{Litteral=false,Perso=false,Decimaux=false}
\NewDocumentCommand\BarresCalculs{o m m}{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCBillard.tex b/Master/texmf-dist/tex/latex/profcollege/PfCBillard.tex
index 6faf8038038..dc0082cef84 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCBillard.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCBillard.tex
@@ -1,6 +1,10 @@
%%%
% Billard
%%%
+\def\filedateBillard{2024/08/28}%
+\def\fileversionBillard{0.1a}%
+\message{-- \filedateBillard\space v\fileversionBillard}%
+%
\newtoks\tokPfCMotBillard{}%
\def\UpdateTokBillard#1\nil{\addtotok\tokPfCMotBillard{"#1"}}%
@@ -227,11 +231,9 @@
}%
\def\MPBillardSolution#1#2#3{%
- % \mplibcodeinherit{enable}%
\mplibforcehmode
\xdef\PfCNomBillard{\useKV[ClesBillard]{Nom}}
\begin{mplibcode}[\PfCNomBillard]
-% Figure(0,0,\useKV[ClesBillard]{Longueur}+2cm,\useKV[ClesBillard]{Largeur}+3cm);
trace rec;
% Tracés
drawarrow Pt[1]--(Pt[1]+1.5cm*unitvector(Pt[2]-Pt[1])) withpen pencircle scaled 1.25;
@@ -253,14 +255,16 @@
else:
dotlabel.bot(TEX(substring(0,1) of #1),Pt[1]);
fi;
+ path segmenttest;
for k=2 upto BLong:
- if (demidroite(1/1000[Pt[k-1],Pt[k]],Pt[k]) intersectiontimes cote[1])<>(-1,-1):
+ segmenttest:=(9/10)[Pt[k-1],Pt[k]]--(11/10)[Pt[k-1],Pt[k]];
+ if segmenttest intersectiontimes cote[1]<>(-1,-1):
dotlabel.bot(TEX(substring(k-1,k) of #1),Pt[k]);
- elseif (demidroite(1/1000[Pt[k-1],Pt[k]],Pt[k]) intersectiontimes cote[2])<>(-1,-1):
+ elseif segmenttest intersectiontimes cote[2]<>(-1,-1):
dotlabel.rt(TEX(substring(k-1,k) of #1),Pt[k]);
- elseif (demidroite(1/1000[Pt[k-1],Pt[k]],Pt[k]) intersectiontimes cote[3])<>(-1,-1):
+ elseif segmenttest intersectiontimes cote[3]<>(-1,-1):
dotlabel.top(TEX(substring(k-1,k) of #1),Pt[k]);
- elseif (demidroite(1/1000[Pt[k-1],Pt[k]],Pt[k]) intersectiontimes cote[4])<>(-1,-1):
+ elseif segmenttest intersectiontimes cote[4]<>(-1,-1):
dotlabel.lft(TEX(substring(k-1,k) of #1),Pt[k]);
fi;
endfor;
@@ -270,5 +274,4 @@
label.top(TEX(substring(k-1,k) of #1),((xpart(Co),5mm)-center Reponse)+(k-1)*(7mm,0)+(2.5mm,0));
endfor;
\end{mplibcode}%
-% \mplibcodeinherit{disable}%
}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCBonSortie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCBonSortie.tex
index 25408ad5fed..c783f90d8e3 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCBonSortie.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCBonSortie.tex
@@ -1,6 +1,10 @@
%%%
% Bon de sortie
%%%
+\def\filedateBonSortie{2024/08/04}%
+\def\fileversionBonSortie{0.1}%
+\message{-- \filedateBonSortie\space v\fileversionBonSortie}%
+%
\newcommand\BonSortieBandeau{%
Nom : \hfill Date : \hspace*{3cm}
}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCBonbon.tex b/Master/texmf-dist/tex/latex/profcollege/PfCBonbon.tex
index 08be71cd4f0..8c897fa4deb 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCBonbon.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCBonbon.tex
@@ -1,9 +1,13 @@
%%%
% Bonbon
%%%
+\def\filedateBonbon{2024/08/04}%
+\def\fileversionBonbon{0.1}%
+\message{-- \filedateBonbon\space v\fileversionBonbon}%
+%
\setKVdefault[Bonbon]{CouleurUn=red,Bicolore=false,Echelle=1}%
\defKV[Bonbon]{CouleurDeux=\setKV[Bonbon]{Bicolore}}%
-
+%
\NewDocumentCommand\Bonbon{o}{%
\useKVdefault[Bonbon]%
\setKV[Bonbon]{#1}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex
index f77aea497a2..cb8dd56fd27 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex
@@ -1,3 +1,10 @@
+%%%
+% CAN
+%
+\def\filedateCAN{2024/08/04}%
+\def\fileversionCAN{0.1}%
+\message{-- \filedateCAN\space v\fileversionCAN}%
+%
% Gestion de l'aléatoire (pour la CAN)
\newcommand\ChoixAlea[4][]{%
\ifx\bla#1\bla%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex
index d2a189e29b5..c97b32472fd 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex
@@ -1,6 +1,9 @@
%%%
% Calculatrice
%%%
+\def\filedateCalculatrice{2024/08/04}%
+\def\fileversionCalculatrice{0.1}%
+\message{-- \filedateCalculatrice\space v\fileversionCalculatrice}%
%https://tex.stackexchange.com/questions/290321/mimicking-a-calculator-inputs-and-screen
\definecolor{lightorange}{rgb}{0.9,0.4,0}%
\definecolor{lightestorange}{rgb}{1,0.8,0.5}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCalculsCroises.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCalculsCroises.tex
index d17a6c9f556..eb9b8b739d1 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCalculsCroises.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCalculsCroises.tex
@@ -1,6 +1,10 @@
%%%
% Calculs Croises
%%%
+\def\filedateCalculsCroises{2024/08/04}%
+\def\fileversionCalculsCroises{0.1}%
+\message{-- \filedateCalculsCroises\space v\fileversionCalculsCroises}%
+%
\setKVdefault[CalculsCroises]{Largeur=20pt,Solution=false,Inverse=false,Creation=false,Graines=false,Vide=false,Couleur=LightGray,Negatifs=false,Aide=false,CouleurS=blue}
\defKV[CalculsCroises]{Graine=\setKV[CalculsCroises]{Graines}}%
\defKV[CalculsCroises]{ListeNombres=\setKV[CalculsCroises]{Aide}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCalculsDetailles.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCalculsDetailles.tex
new file mode 100644
index 00000000000..df321d523a2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCalculsDetailles.tex
@@ -0,0 +1,147 @@
+%%%
+% Calculs détaillés
+%%%
+\def\filedateCDetailles{2024/08/24}%
+\def\fileversionCDetailles{0.1}%
+\message{-- \filedateCDetailles\space v\fileversionCDetailles}
+%
+\setKVdefault[CalculAuto]{Under=false,OverB=false,OverC=false,UnderB=false,UnderC=false,Cadre=false,Fluo=false,Evidence=false,Lettres={A,B,C,D,E},Couleur=Purple}
+
+\newcounter{PfCNbCalculs}
+\newcounter{PfCNbSousCalculs}
+\newcounter{PfCNbMarque}
+
+\NewDocumentCommand\PfCMarquePriorite{m}{%
+ \ifboolKV[CalculAuto]{OverB}{%
+ \Overbrace{#1}%
+ }{%
+ \ifboolKV[CalculAuto]{OverC}{%
+ \Overcrochet{#1}%
+ }{%
+ \ifboolKV[CalculAuto]{UnderC}{%
+ \Undercrochet{#1}%
+ }{%
+ \ifboolKV[CalculAuto]{UnderB}{%
+ \Underbrace{#1}%
+ }{%
+ \ifboolKV[CalculAuto]{Cadre}{%
+ \PfCFbox{CCalculAuto}{#1}
+ }{%
+ \ifboolKV[CalculAuto]{Fluo}{%
+ \Surligner[CCalculAuto]{#1}
+ }{%
+ \ifboolKV[CalculAuto]{Under}{%
+ \mathunderline{CCalculAuto}{#1}%
+ }{%
+ \ifboolKV[CalculAuto]{Evidence}{%
+ \mathcolor{CCalculAuto}{#1}%
+ }{%
+ #1%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\CalculDetaille{om}{%
+ \useKVdefault[CalculAuto]%
+ \setKV[CalculAuto]{#1}%
+ \colorlet{CCalculAuto}{\useKV[CalculAuto]{Couleur}}%
+ \setcounter{PfCNbCalculs}{0}%
+ \setsepchar{§}\ignoreemptyitems%
+ \readlist*\ListeNombresCalculs{#2}%
+ \reademptyitems%
+ \xdef\PfCFooListeLettres{\useKV[CalculAuto]{Lettres}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeLettres{\PfCFooListeLettres}%
+ \reademptyitems%
+ \xdef\PfCNbMaxLignesCalculs{0}%
+ \foreachitem\compteur\in\ListeNombresCalculs{%
+ \stepcounter{PfCNbCalculs}%
+ \itemtomacro\ListeNombresCalculs[\compteurcnt]\Titi%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeNombresCalculsDetails{\Titi}%
+ \reademptyitems%
+ \expandafter\xdef\csname NbLignesCalculs\Alph{PfCNbCalculs}\endcsname{\ListeNombresCalculsDetailslen}%
+ \xdef\PfCNbMaxLignesCalculs{\fpeval{max(\PfCNbMaxLignesCalculs,\ListeNombresCalculsDetailslen)}}%
+ \setcounter{PfCNbSousCalculs}{0}%
+ \foreachitem\compteura\in\ListeNombresCalculsDetails{%
+ \stepcounter{PfCNbSousCalculs}%
+ \StrSubstitute{\compteura}{*}{\times}[\PfCCalculAutoUn]%
+ \StrSubstitute{\PfCCalculAutoUn}{:}{\div}[\PfCCalculAutoDeux]%
+ \StrCount{\PfCCalculAutoDeux}{<}[\NbInf]%
+ \ifnum\fpeval{\NbInf}=0\relax%
+ \expandafter\xdef\csname NbMarqueLigneCalcul\Alph{PfCNbCalculs}\Alph{PfCNbSousCalculs}\endcsname{1}%
+ \expandafter\xdef\csname LigneCalcul\Alph{PfCNbCalculs}\Alph{PfCNbSousCalculs}A\endcsname{\PfCCalculAutoDeux}%
+ \else%
+ \xdef\PfCExpressionDepart{\PfCCalculAutoDeux}%
+ \setcounter{PfCNbMarque}{0}%
+ \foreach\xx in{1,...,\NbInf}{%
+ \StrBefore{\PfCExpressionDepart}{<}[\PfCDevant]%
+ \StrBetween{\PfCExpressionDepart}{<}{>}[\PfCAEncadrer]%
+ \stepcounter{PfCNbMarque}%
+ \expandafter\xdef\csname LigneCalcul\Alph{PfCNbCalculs}\Alph{PfCNbSousCalculs}\Alph{PfCNbMarque}\endcsname{\PfCDevant}%
+ \stepcounter{PfCNbMarque}%
+ \expandafter\xdef\csname LigneCalcul\Alph{PfCNbCalculs}\Alph{PfCNbSousCalculs}\Alph{PfCNbMarque}\endcsname{<\PfCAEncadrer}%
+ \StrBehind{\PfCExpressionDepart}{>}[\PfCExpressionDepartA]%
+ \xdef\PfCExpressionDepart{\PfCExpressionDepartA}%
+ }%
+ \stepcounter{PfCNbMarque}%
+ \expandafter\xdef\csname LigneCalcul\Alph{PfCNbCalculs}\Alph{PfCNbSousCalculs}\Alph{PfCNbMarque}\endcsname{\PfCExpressionDepart}%
+ \expandafter\xdef\csname NbMarqueLigneCalcul\Alph{PfCNbCalculs}\Alph{PfCNbSousCalculs}\endcsname{\thePfCNbMarque}%
+ \fi
+ }%
+ }%
+ %%%%%%%%%
+ \setcounter{PfCNbSousCalculs}{0}%
+ \[%
+ \begin{aligned}
+ \xintFor* ##2 in{\xintSeq{1}{\PfCNbMaxLignesCalculs}}\do{%
+ \stepcounter{PfCNbSousCalculs}%
+ \setcounter{PfCNbCalculs}{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeNombresCalculslen}}\do{%
+ \stepcounter{PfCNbCalculs}%
+ \ifnum##2>\fpeval{\csname NbLignesCalculs\Alph{PfCNbCalculs}\endcsname}\relax%
+ \uppercase{&}
+ \else
+ \ListeLettres[\thePfCNbCalculs]\uppercase{&}=\xdef\Tata{\csname NbMarqueLigneCalcul\Alph{PfCNbCalculs}\Alph{PfCNbSousCalculs}\endcsname}\setcounter{PfCNbMarque}{0}\xintFor*##3 in{\xintSeq{1}{\Tata}}\do{%
+ \stepcounter{PfCNbMarque}
+ \xdef\Toto{\csname LigneCalcul\Alph{PfCNbCalculs}\Alph{PfCNbSousCalculs}\Alph{PfCNbMarque}\endcsname}\StrChar{\Toto}{1}[\PfCATester]
+ \IfStrEq{\PfCATester}{<}{\StrBehind{\Toto}{<}[\PfCAEncadrer]\PfCMarquePriorite{\PfCAEncadrer}}{\Toto}
+ }
+ \fi\xintifForLast{&}{}
+ }\\
+ }
+ \end{aligned}
+ \]
+}%
+
+\def\Underbrace#1{%
+ \ifx#1\bla\bla\else\color{CCalculAuto}\underbrace{{\color{black}#1}}\color{black}\fi%
+}%
+\def\Undercrochet#1{%
+ \ifx#1\bla\bla\else\color{CCalculAuto}\underbracket{{\color{black}#1}}\color{black}\fi%
+}%
+\def\Overbrace#1{%
+ \ifx#1\bla\bla\else\color{CCalculAuto}\overbrace{{\color{black}#1}}\color{black}\fi%
+}%
+\def\Overcrochet#1{%
+ \ifx#1\bla\bla\else\color{CCalculAuto}\overbracket{{\color{black}#1}}\color{black}\fi%
+}%
+\def\PfCFbox#1#2{%
+ \ifx#2\bla\bla\else\setlength{\fboxrule}{1pt}\fcolorbox{#1}{white}{$\displaystyle#2$}\fi%
+}%
+
+\NewDocumentCommand{\Surligner}{O{yellow}m}{%
+ \ifx#2\bla\bla\else
+ \ifmmode%
+ \colorbox{#1}{$\displaystyle#2$}%
+ \else%
+ \colorbox{#1}{#2}%
+ \fi%
+ \fi
+}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCalculsFractions.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCalculsFractions.tex
index fdf037ef818..cc19c93e548 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCalculsFractions.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCalculsFractions.tex
@@ -1,4 +1,11 @@
-\setKVdefault[CalculsFractions]{Couleurs=false,Negatif=false}%
+%%%
+% Calculs fractions
+%
+\def\filedateCalculsFractions{2024/08/04}%
+\def\fileversionCalculsFractions{0.1}%
+\message{-- \filedateCalculsFractions\space v\fileversionCalculsFractions}%
+%
+\setKVdefault[CalculsFractions]{Couleurs=false,Negatif=false,Seul=false}%
\defKV[CalculsFractions]{Couleur=\setKV[CalculsFractions]{Couleurs}\setKV[ClesSimplification]{Couleur=#1}}%
\NewDocumentCommand\tofrac{m}{%
@@ -50,7 +57,7 @@
\xdef\PfCNumD{1}%
}{%
\StrCut{#5}{/}\PfCNumC\PfCNumD%
- }
+ }%
\xdef\PfCAddFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}%
\setsepchar[*]{,*/}\ignoreemptyitems%
\readlist*\ListeFractions{\PfCAddFoo}%
@@ -69,6 +76,7 @@
\xdef\PfCAddDenoSimp{\fpeval{\PfCAddDenoFin/\PfCAddPgcd}}%
\xdef\PfCAddSumSimp{\PfCAddNumSimp/\PfCAddDenoSimp}%
\IfValueT{#6}{\xdef#6{\PfCAddSumSimp}}%
+ \ifboolKV[CalculsFractions]{Seul}{}{%
% Partie affichage
\ensuremath{%
\IfValueTF{#3}{%
@@ -103,6 +111,7 @@
}{\tofrac{#4}\PfCFractionOp\tofrac{#5}
}%
}%
+ }%
}%
\NewDocumentCommand\SousFraction{oommo}{%
@@ -127,17 +136,18 @@
\xdef\PfCMulFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}%
\setsepchar[*]{,*/}\ignoreemptyitems%
\readlist*\ListeFractions{\PfCMulFoo}%
- \reademptyitems
+ \reademptyitems%
\setsepchar{,}%
% Calculs
- \xdef\PfCMulNumFin{\fpeval{(\ListeFractions[1,1])*(\ListeFractions[2,1])}}
- \xdef\PfCMulDenoFin{\fpeval{\ListeFractions[1,2]*\ListeFractions[2,2]}}
+ \xdef\PfCMulNumFin{\fpeval{(\ListeFractions[1,1])*(\ListeFractions[2,1])}}%
+ \xdef\PfCMulDenoFin{\fpeval{\ListeFractions[1,2]*\ListeFractions[2,2]}}%
\PGCD{\fpeval{abs(\PfCMulNumFin)}}{\fpeval{abs(\PfCMulDenoFin)}}\xdef\PfCMulPgcd{\pgcd}%
\xdef\PfCMulNumSimp{\fpeval{\PfCMulNumFin/\PfCMulPgcd}}%
\xdef\PfCMulDenoSimp{\fpeval{\PfCMulDenoFin/\PfCMulPgcd}}%
\xdef\PfCMulPdtSimp{\PfCMulNumSimp/\PfCMulDenoSimp}%
\IfValueT{#5}{\xdef#5{\PfCMulPdtSimp}}%
- \ensuremath{%
+ \ifboolKV[CalculsFractions]{Seul}{}{%
+ \ensuremath{%
\IfValueTF{#2}{%
\ifnum#2=3\relax
\ifboolKV[CalculsFractions]{Negatif}{%
@@ -154,7 +164,8 @@
\fi
\fi
}{\tofrac{#3}\times\tofrac{#4}
- }
+ }%
+ }%
}%
}%
@@ -186,6 +197,7 @@
\xdef\PfCDivDenoSimp{\fpeval{\PfCDivDenoFin/\PfCDivPgcd}}%
\xdef\PfCDivPdtSimp{\PfCDivNumSimp/\PfCDivDenoSimp}%
\IfValueT{#5}{\xdef#5{\PfCDivPdtSimp}}%
+ \ifboolKV[CalculsFractions]{Seul}{}{%
\ensuremath{%
\IfValueTF{#2}{%
\ifnum#2=4\relax
@@ -207,4 +219,5 @@
}{\tofrac{#3}\div\tofrac{#4}
}
}%
+ }%
}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex
index 929b1fb28e9..dd2fe56db37 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex
@@ -1,6 +1,10 @@
%%%
% Calisson
%%%
+\def\filedateCalisson{2024/08/04}%
+\def\fileversionCalisson{0.1}%
+\message{-- \filedateCalisson\space v\fileversionCalisson}%
+%
\setKVdefault[Calisson]{Taille=3,Solution=false,Rayon=5cm,Couleur=red,CouleurTrace=black}%
\def\UpdatetoksCalissong#1\nil{\addtotok\tokcalissonlistetracesg{,"#1"}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCartesJeux.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCartesJeux.tex
index 1e2075d91af..98bb4b8b3cf 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCartesJeux.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCartesJeux.tex
@@ -1,6 +1,10 @@
%%%
% Cards
%%%
+\def\filedateCartesJeux{2024/08/04}%
+\def\fileversionCartesJeux{0.1}%
+\message{-- \filedateCartesJeux\space v\fileversionCartesJeux}%
+%
\setKVdefault[Cards]{Formats=false,Largeur=165,Hauteur=250,HauteurTheme=40,Marge=12,Landscape=false,Couleur=Cornsilk,CouleurAr=Cornsilk,Theme=Th\'eor\`eme\\de
Pythagore,ThemeSol=Solution,AfficheTheme=false,Trame=false,Jointes=false,TrameVisible=false,RayonArc=5pt,Titre=false,NomTitre=Jeu 1,Loop,JaiQuia=false,Eleve=false,BackgroundAv=false,BackgroundAr=false,%ImageAv=4813762.jpg,ImageAr=4813762.jpg,
AffichageSolution=true,SolutionSeule=false,%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCartesMentales.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCartesMentales.tex
index ea9b30af037..90812c7e9ea 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCartesMentales.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCartesMentales.tex
@@ -1,6 +1,10 @@
%%%
% Cartes Mentales
%%%
+\def\filedateCarteMentale{2024/08/04}%
+\def\fileversionCarteMentale{0.1}%
+\message{-- \filedateCarteMentale\space v\fileversionCarteMentale}%
+%
\setKVdefault[ClesMentales]{Nom={Bulle}, Largeur=5cm, Ancre={0,0},Pointilles=false,CTrace=black,CFond=white,Epaisseur=1pt,Rayon=1}%
\newenvironment{Mind}{\begin{tikzpicture}}{\end{tikzpicture}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex
index 2b5ef28fbc2..4396dc6f87b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex
@@ -1,7 +1,11 @@
%%%
% Cartographie
%%%
-\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,VillesSupI=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2023/texmf-dist/metapost/profcollege/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2,Codes=false,Epaisseur=2,ModeleCouleur=5,Boussole=false,Allegee=1}
+\def\filedateCartographie{2024/08/04}%
+\def\fileversionCartographie{0.1}%
+\message{-- \filedateCartographie\space v\fileversionCartographie}%
+%
+\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,VillesSupI=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2024/texmf-dist/metapost/profcollege/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2,Codes=false,Epaisseur=2,ModeleCouleur=5,Boussole=false,Allegee=1,Maillage=false}
\defKV[Cartographie]{EchelleCarte=\setKV[Cartographie]{Carte}}
\defKV[Cartographie]{Pays=\setKV[Cartographie]{PaysSeul}}
\defKV[Cartographie]{Villes=\setKV[Cartographie]{VillesSup}}
@@ -13,8 +17,8 @@
\useKVdefault[Cartographie]%
\setKV[Cartographie]{#1}%
\mplibforcehmode%
+ \mplibnumbersystem{double}%
\ifboolKV[Cartographie]{Projection}{%
- \mplibnumbersystem{double}%
\begin{mplibcode}
input PfCMonde;
string arborescence;
@@ -217,9 +221,8 @@
Villes(\useKV[Cartographie]{VillesI});
fi;
\end{mplibcode}
- \mplibnumbersystem{scaled}%
}{%
-% \mplibforcehmode
+ % \mplibforcehmode
\begin{mplibcode}
input PfCMonde;
@@ -253,9 +256,11 @@
fi;
else:
couleurfond:=\useKV[Cartographie]{CouleurFond};
+ color couleurimpression;
+ couleurimpression:=Cornsilk;
if Impression:
noncolore:=true;
- payscolor:=0.85white;
+ payscolor:=couleurimpression;%0.85white
couleurfond:=white;
couleurfleuve:=couleurfond;
fi;
@@ -314,8 +319,7 @@
elseif t=8:lrt
fi
enddef;
-
-
+
if Carte:
Echelle:=\useKV[Cartographie]{AfficheEchelle};
figure(-0.5u*LargeurCadre,-0.5u*HauteurCadre,0.5u*LargeurCadre,0.5u*HauteurCadre);
@@ -365,11 +369,53 @@
fi;
else:
- draw(0,0)--(50,50);
- mappemonde(#2,#3);
+ boolean maillagecoord;
+ maillagecoord=\useKV[Cartographie]{Maillage};
+ if VillesSupI:
+ lacs:=false;
+ fi;
+
+ mappemonde(#2,#3);
+
+ vardef Villes(text t)=
+ pair CoordVille;
+ string NomVille;
+ n:=0;
+ for p_:=t:
+ n:=n+1;
+ if n=1:
+ %nblec:=p;
+ else:
+ if pair p_:
+ CoordVille:=Projgeo(rayon*(cosd(ypart(p_))*cosd(xpart(p_)),cosd(ypart(p_))*sind(xpart(p_)),sind(ypart(p_))));
+ elseif string p_:
+ NomVille:=p_;
+ else:
+ marque_p:="croix";
+ pointe(CoordVille);
+ label.position(p_)(TEX(""&NomVille&""),CoordVille);
+ fi;
+ fi;
+ endfor;
+ drawoptions();
+ enddef;
+
+
+ if Codes:
+ \useKV[Cartographie]{Traces};
+ fi;
+ if VillesSupI:
+ Villes(\useKV[Cartographie]{VillesI});
+ label.ulft(TEX("\tiny\ang{0}"),Projgeo(rayon*(1,0,0)));
+ label.ulft(TEX("\tiny\ang{10}"),Projgeo(rayon*(cosd(10),0,sind(10))));
+ fill (fullcircle scaled 0.75mm) shifted Projgeo(rayon*(cosd(10),0,sind(10)));
+ label.llft(TEX("\tiny\ang{10}"),Projgeo(rayon*(cosd(10),sind(10),0)));
+ fill (fullcircle scaled 0.75mm) shifted Projgeo(rayon*(cosd(10),sind(10),0));
+ fi;
fi;
\end{mplibcode}
}
+ \mplibnumbersystem{scaled}%
\else
\PackageWarning{ProfCollege}{"La commande Cartographie n'est compatible qu'avec LuaLaTeX."}
\fi
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCheque.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCheque.tex
new file mode 100644
index 00000000000..531af4efc12
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCheque.tex
@@ -0,0 +1,125 @@
+%%%
+% PfCCheque
+%%%
+\def\filedateCheque{2024/09/03}%
+\def\fileversionCheque{0.1}%
+\message{-- \filedateCheque\space v\fileversionCheque}%
+\newlength{\oldbaseline}
+\newlength{\PfCTailleCursive}
+
+\setKVdefault[Cheque]{Sigle=CMF,Banque=Crédit Mathématique de France,Date=\today,Lieu={},Lire=false,Destinataire=Institut Curie,Solution=false,Longueur=15,Taille=\normalsize,Ajust=0pt}
+
+%https://tex.stackexchange.com/questions/406015/defining-macro-gsetlength-as-global-setlength-reliable
+\makeatletter
+\gdef\gsetlength#1#2{%
+ \begingroup
+ \setlength\skip@{#2}% Local assignment to a scratch register.
+ \global#1=\skip@ % Global assignement to #1;
+ % \relax is not necessary because of the following \endgroup.
+ \endgroup % \skip@ is restored by end of group.
+}
+\makeatother
+
+\NewDocumentCommand{\Cheque}{om}{%
+ \useKVdefault[Cheque]%
+ \setKV[Cheque]{#1}%
+ \setbox1=\hbox{\useKV[Cheque]{Taille}\myfontCursive abcdefghijklmnopqrstuvwxyz}%
+ {\useKV[Cheque]{Taille}\myfontCursive\gsetlength{\oldbaseline}{\baselineskip}\normalsize}%
+ \setlength{\PfCTailleCursive}{0.5\ht1+\useKV[Cheque]{Ajust}}%
+ \BuildCheque{#2}%
+}%
+
+\NewDocumentCommand{\BuildCheque}{m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ boolean Solution,Lire;
+ Solution=\useKV[Cheque]{Solution};
+ Lire=\useKV[Cheque]{Lire};
+ Longueur=\useKV[Cheque]{Longueur};
+ baselinecp=\fpeval{\oldbaseline};
+ %
+ pair A,B,C,D,M[],N[];
+ A=(0,0);
+ B-A=u*(Longueur,0);
+ C-B=u*(0,5);
+ D-C=A-B;
+ %
+ M1=1/3[D,A];
+ %
+ picture Payez;
+ Payez=image(
+ label.rt(TEX("Payez contre ce chèque"),M1);
+ );
+ %
+ M20=(xpart(M1),ypart(llcorner Payez));
+ M2-M20=(0,-baselinecp);
+ M3-M2=u*(0,-0.5);
+ M4-M3=M2-M1;
+ M5-M4=u*(0.4*Longueur,-0.25);
+ M6-M4=u*(0,-0.25)+u*(0.5,0);
+ M7-M6=u*(2,0);
+ %
+ A:=(xpart(M4),ypart(M6)-1u);
+ B:=A+C-D;
+ %
+ N1=1/2[M1,M2]+0.8*(B-A);
+ N2-N1=M2-M1;
+ N3-N2=0.18*(B-A);
+ N4-N3=N1-N2;
+ drawoptions(withcolor NavyBlue);
+ picture BaseLettre;
+ %%%%%%%%%%%%%%%%
+ fill polygone(A,B,C,D) withcolor 0.8[LightSteelBlue,white];
+ trace polygone(A,B,C,D);
+ draw Payez;
+ label.rt(TEX("{\sffamily \Huge \useKV[Cheque]{Sigle}}"),D+u*(0,-0.5));
+ label.rt(TEX("{\sffamily \useKV[Cheque]{Banque}}"),D+u*(0,-1));
+ trace (lrcorner Payez)--(0.75[(xpart(M1),ypart(lrcorner Payez)),(xpart(M1+B-A),ypart(lrcorner Payez))]);
+ label.rt(TEX("\tiny non endossable sauf au profit d'une banque ou d'un établissement assimilé."),M1+u*(0,-0.300));
+ trace 1/90[M2,M2+B-A]--(0.75[M2,M2+B-A]);
+ label.rt(TEX("À \useKV[Cheque]{Destinataire}"),M3);
+ trace 1/45[M3+u*(0,-0.2),M3+u*(0,-0.2)+B-A]--(0.75[M3+u*(0,-0.2),M3+u*(0,-0.2)+B-A]);
+ fill polygone(N1,N2,N3,N4) withcolor white;
+ trace polygone(N1,N2,N3,N4) withpen pencircle scaled 1.2 withcolor NavyBlue;
+ if Lire=false:
+ label.rt(TEX("\si{\EuRo}~#1"),iso(N1,N2));
+ else:
+ if Solution:
+ label.rt(TEX("\si{\EuRo}~\num{#1}"),iso(N1,N2));
+ fi;
+ fi;
+ label.rt(TEX("À~\hbox to"&decimal(Longueur/5)&"cm{\hrulefill}\quad Le~\hbox to"&decimal(Longueur/5)&"cm{\hrulefill}"),M5);
+ label.top(TEX("\Huge \si{\EuRo}uro"),iso(N4,N1)+u*(0,1));
+ label(TEX("\tiny « à régler exclusivement en euros »"),iso(N4,N1)+u*(-0.5,1));
+ label(TEX("\ChoixAlea{100000}{999999}{\numcheque}\numcheque"),iso(M6,M7));
+ trace cotationmil(M6,M7,2.5mm,25,TEX("\scriptsize chèque \no"));
+ %%
+% drawoptions(withcolor red);
+% draw (llcorner Payez)--(llcorner Payez+B-A);
+% draw M2--(M2+B-A);
+% drawoptions();
+ picture Sous;
+ Sous=image(%
+ label(TEX("\begin{minipage}{\fpeval{0.75*"&decimal(Longueur)&"}cm}
+ \hspace{"&decimal(abs(lrcorner Payez-llcorner Payez))&"pt}\myfontCursive\useKV[Cheque]{Taille}\Ecriture{#1}~euros
+ \end{minipage}"),(0,0));
+ );
+ pair PointBase,PointTest,Decalage;
+ PointBase=1/2[M20,M2+(u*0.75Longueur,0)];
+ PointTest=(0,0);%
+ if abs(llcorner Sous-ulcorner Sous)>baselinecp:
+ Decalage=(8pt,\fpeval{\PfCTailleCursive});
+ else:
+ Decalage=(8pt,2*\fpeval{\PfCTailleCursive});
+ fi;
+ if Lire:
+ draw Sous shifted (PointBase-PointTest+Decalage);
+ else:
+ if Solution:
+ draw Sous shifted (PointBase-PointTest+Decalage);
+ fi;
+ fi;
+ \end{mplibcode}
+ \fi%
+}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCible.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCible.tex
index d29fdccf9de..91e8f28e042 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCible.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCible.tex
@@ -1,6 +1,10 @@
%%%
% Cibles
%%%
+\def\filedateCible{2024/08/04}%
+\def\fileversionCible{0.1}%
+\message{-- \filedateCible\space v\fileversionCible}%
+%
\newtoks\toklisteciblea%
\def\UpdatetoksCibleA#1\nil{\addtotok\toklisteciblea{"#1",}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCibleQOp.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCibleQOp.tex
index 336b10651d0..c33f5242b37 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCibleQOp.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCibleQOp.tex
@@ -1,3 +1,10 @@
+%%%
+% Cible 4 opérations
+%%%
+\def\filedateCibleQOp{2024/08/04}%
+\def\fileversionCibleQOp{0.1}%
+\message{-- \filedateCibleQOp\space v\fileversionCibleQOp}%
+
\newcount\anpcqo\newcount\bnpcqo\newcount\cnpcqo%
\NewDocumentCommand\PfCCQODiviseurs{m}{%#1 : le nombre entier \`a tester
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCColorilude.tex b/Master/texmf-dist/tex/latex/profcollege/PfCColorilude.tex
index 33a1ef2446e..9c446f6b435 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCColorilude.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCColorilude.tex
@@ -1,4 +1,10 @@
-%%% Colorilude %%%
+%%%
+% Colorilude
+%%%
+\def\filedateColorilude{2024/08/04}%
+\def\fileversionColorilude{0.1}%
+\message{-- \filedateColorilude\space v\fileversionColorilude}%
+%
\setKVdefault[Colorilude]{Largeur=10,Lignes=10,Legende=false,Coef=0.6,Solution=false,CartonReponse=false,Resultats=false}
\newcommand\dispogpfc[3][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCompteBon.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCompteBon.tex
index 1d5339b114c..bbf219e431a 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCompteBon.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCompteBon.tex
@@ -1,6 +1,10 @@
%%%
% Le compte est bon
%%%
+\def\filedateCompteBon{2024/08/04}%
+\def\fileversionCompteBon{0.1}%
+\message{-- \filedateCompteBon\space v\fileversionCompteBon}%
+%
\setKVdefault[CompteBon]{NombreCalculs=5,NombrePlaques=4,Solution=false,Relatifs=false,Original=false,Graines=false,Plaques=6,CDot=false}
\defKV[CompteBon]{Graine=\setKV[CompteBon]{Graines}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCConversion.tex b/Master/texmf-dist/tex/latex/profcollege/PfCConversion.tex
index e6ed80f0125..86da03a0784 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCConversion.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCConversion.tex
@@ -1,3 +1,10 @@
+%%%
+% Conversion
+%%%
+\def\filedateConversion{2024/08/04}%
+\def\fileversionConversion{0.1}%
+\message{-- \filedateConversion\space v\fileversionConversion}%
+
\setKVdefault[ClesConversion]{Longueur,Aire=false,Vol=false,Masses=false,Capas=false,Sans=false,Completes=false}%
\defKV[ClesConversion]{Complete=\setKV[ClesConversion]{Completes}}%
\defKV[ClesConversion]{Masse=\setKV[ClesConversion]{Longueur=false}\setKV[ClesConversion]{Masses}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCritere.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCritere.tex
index 34c96a9b069..4818b941c78 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCritere.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCritere.tex
@@ -1,6 +1,10 @@
%%%
% Criteres de divisibilite
%%%
+\def\filedateCritere{2024/08/04}%
+\def\fileversionCritere{0.1}%
+\message{-- \filedateCritere\space v\fileversionCritere}%
+%
\setKVdefault[Critere]{Div=2,Remarque=false,All=false,RemarqueAll=false}
\NewDocumentCommand\Critere{om}{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCryptarithme.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCryptarithme.tex
index bfa2e8c76af..1494c2adc6c 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCryptarithme.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCryptarithme.tex
@@ -1,6 +1,10 @@
%%%
% Cryptarithmes
%%%
+\def\filedateCrypta{2024/08/04}%
+\def\fileversionCrypta{0.1}%
+\message{-- \filedateCrypta\space v\fileversionCrypta}%
+%
\setKVdefault[Crypta]{Solution=false,ListeLettres={A,B,C,D,E,F,G,H,I,J},Tableau=false}%
\defKV[Crypta]{Indices=\setKV[Crypta]{Tableau}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDecDeci.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDecDeci.tex
index b2db7fd38b0..861821ce823 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDecDeci.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDecDeci.tex
@@ -1,6 +1,10 @@
%%%
% Décomposition décimale
%%
+\def\filedateDecDeci{2024/08/04}%
+\def\fileversionDecDeci{0.1}%
+\message{-- \filedateDecDeci\space v\fileversionDecDeci}%
+%
\setKVdefault[DecompDeci]{Parentheses,Colore=false,CouleurU=Blue,CouleurD=Red,CouleurC=Green,Fleches=false,Details=false,ResultatSeul=false,SansMul=false}
\newcounter{PfCNbDecDeci}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDecompFracDeci.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDecompFracDeci.tex
index b045c64f63b..1e627c2e3f7 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDecompFracDeci.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDecompFracDeci.tex
@@ -1,7 +1,12 @@
%%%
% D\'ecomposition de fractions d\'ecimales
%%%
-\setKVdefault[ClesFracDeci]{Complete=false,SansZero=false,Remediation=false,Longueur=1cm}
+\def\filedateDecompFracDeci{2024/08/13}%
+\def\fileversionDecompFracDeci{0.1a}%
+\message{-- \filedateDecompFracDeci\space v\fileversionDecompFracDeci}%
+%
+\setKVdefault[ClesFracDeci]{Complete=false,SansZero=false,Remediation=false,Longueur=1cm,Vides=false}%
+\defKV[ClesFracDeci]{Vide=\setKV[ClesFracDeci]{Remediation}\setKV[ClesFracDeci]{Vides}}%
\newlength{\PfCLongueurP}%
\newcommand\FractionDecimale[2][]{%
@@ -26,7 +31,7 @@
\xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieEntiereFractionDeci}}+}%
\xintFor* ##1 in {\xintSeq{1}{\LongueurPartieDecimale}}\do{%
\StrMid{\PartieDecimaleFractionDeci}{##1}{##1}[\ChiffrePartieDecimale]%
- \xintifForFirst{}{\xintifboolexpr{\ChiffrePartieDecimale == 0}{}{+}}\xintifboolexpr{\ChiffrePartieDecimale == 0}{}{\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**(\LongueurFracDeciDeno-1-\LongueurPartieDecimale+##1)}}}}%
+ \xintifForFirst{}{\xintifboolexpr{\ChiffrePartieDecimale == 0}{}{+}}\xintifboolexpr{\ChiffrePartieDecimale == 0}{}{\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\ifboolKV[ClesFracDeci]{Vides}{\pointilles[\PfCLongueurP]}{\num{\fpeval{10**(\LongueurFracDeciDeno-1-\LongueurPartieDecimale+##1)}}}}}%
}%
}%
}{%
@@ -38,20 +43,20 @@
\StrGobbleLeft{\FractionDeciNum}{\fpeval{\LongueurPartieEntiere}}[\DecompositionFracDeciComplete]%
% on affiche la partie décimale.
\xintFor* ##1 in {\xintSeq{1}{\fpeval{\LongueurFracDeciNum-\LongueurPartieEntiere}}}\do{%
- \xintifForFirst{}{+}\StrMid{\DecompositionFracDeciComplete}{##1}{##1}[\ChiffrePartieDecimale]\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**##1}}}%
+ \xintifForFirst{}{+}\StrMid{\DecompositionFracDeciComplete}{##1}{##1}[\ChiffrePartieDecimale]\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\ifboolKV[ClesFracDeci]{Vides}{\pointilles[\PfCLongueurP]}{\num{\fpeval{10**##1}}}}%
}%
}%
}{%
\ensuremath{%
\xintFor* ##1 in {\xintSeq{1}{\LongueurPartieDecimale}}\do{%
\StrMid{\PartieDecimaleFractionDeci}{##1}{##1}[\ChiffrePartieDecimale]%
- \xintifForFirst{}{+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**(\LongueurFracDeciDeno-1-\LongueurPartieDecimale+##1)}}}%
+ \xintifForFirst{}{+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\ifboolKV[ClesFracDeci]{Vides}{\pointilles[\PfCLongueurP]}{\num{\fpeval{10**(\LongueurFracDeciDeno-1-\LongueurPartieDecimale+##1)}}}}%
}%
}%
}%
}{%
\ensuremath{%
- \xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieEntiereFractionDeci}}+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieDecimaleFractionDeci}}}{\num{\FractionDeciDeno}}%
+ \xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieEntiereFractionDeci}}+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieDecimaleFractionDeci}}}{\ifboolKV[ClesFracDeci]{Vides}{\pointilles[\PfCLongueurP]}{\num{\FractionDeciDeno}}}%
}%
}%
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDecomposerNombrePremier.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDecomposerNombrePremier.tex
index bf1a28e3334..a741919482c 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDecomposerNombrePremier.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDecomposerNombrePremier.tex
@@ -1,10 +1,19 @@
%%%
% Nombre Premier
%%%
-\setKVdefault[ClesNombrePremier]{Tableau=false,TableauVide=false,TableauVertical=false,TableauVerticalVide=false,Exposant=false,Longue=false,All=false,Arbre=false,ArbreVide=false,ArbreComplet=false,ArbreDessine=false,ArbreDessineVide=false,Entoure=false,Entourefin=false,Diviseurs=false,DiviseursT=false,Dot=\dotfill,Impose=false,ImposeAll=false,Potence=false,Decalage=10,Vide=false,CouleurFeuillage=ForestGreen,CouleurTronc=BurlyWood,CouleurFruits=Red,CouleurTexte=white}%
+\def\filedateDecompNbPremier{2024/09/01}%
+\def\fileversionDecompNbPremier{0.1a}%
+\message{-- \filedateDecompNbPremier\space v\fileversionDecompNbPremier}%
+%
+\setKVdefault[ClesNombrePremier]{Tableau=false,TableauVide=false,TableauVertical=false,TableauVerticalVide=false,Exposant=false,Longue=false,All=false,Arbre=false,ArbreVide=false,ArbreComplet=false,ArbreDessine=false,ArbreDessineVide=false,Entoure=false,Entourefin=false,Diviseurs=false,DiviseursT=false,Dot=\dotfill,Impose=false,ImposeAll=false,Potence=false,Decalage=10,Vide=false,CouleurFeuillage=ForestGreen,CouleurTronc=BurlyWood,CouleurFruits=Red,CouleurTexte=white,Poisson=false,Echelle=1cm,AngleArete=45,CouleurPoisson=white,Visible=false,Solution=false}%
\defKV[ClesNombrePremier]{Nombre=\ifboolKV[ClesNombrePremier]{ArbreDessine}{}{\ifboolKV[ClesNombrePremier]{ArbreDessineVide}{}{\setKV[ClesNombrePremier]{Impose}}}}%
\defKV[ClesNombrePremier]{AllNombre=\setKV[ClesNombrePremier]{ImposeAll}}%
-\defKV[ClesNombrePremier]{Impression=\setKV[ClesNombrePremier]{CouleurFeuillage=white,CouleurTronc=white,CouleurFruits=gris,CouleurTexte=black}}
+\defKV[ClesNombrePremier]{Impression=\setKV[ClesNombrePremier]{CouleurFeuillage=white,CouleurTronc=white,CouleurFruits=gris,CouleurTexte=black}}%
+\defKV[ClesNombrePremier]{ElementsVisibles=\setKV[ClesNombrePremier]{Visible}\setKV[ClesNombrePremier]{Vide}}%
+\defKV[ClesNombrePremier]{CouleurSolution=\setKV[ClesNombrePremier]{Solution}}%
+
+\newtoks\tokNPElementsVisibles%
+\def\UpdatetoksElementAfficher#1\nil{\addtotok\tokNPElementsVisibles{#1,}}%
\newcommand\Decomposition[2][]{%
\useKVdefault[ClesNombrePremier]%
@@ -26,6 +35,136 @@
\ifboolKV[ClesNombrePremier]{ArbreDessineVide}{\setKV[ClesNombrePremier]{Vide=true}\MPArbreDessine{#2}{\useKV[ClesNombrePremier]{Nombre}}}{}%
\ifboolKV[ClesNombrePremier]{Diviseurs}{\ListeDiviseur{#2}}{}%
\ifboolKV[ClesNombrePremier]{DiviseursT}{\ListeDiviseurT{#2}}{}%
+ \ifboolKV[ClesNombrePremier]{Poisson}{%
+ \tokNPElementsVisibles{}%
+ \PfCTousLesDiviseurs{#2}%
+ \ifboolKV[ClesNombrePremier]{Visible}{%
+ \xdef\foo{\useKV[ClesNombrePremier]{ElementsVisibles}}%
+ \readlist*\ListeElementsAAfficher{\foo}%
+ }{%
+ \xdef\foo{-1}\readlist*\ListeElementsAAfficher{\foo}%
+ }%
+ \foreachitem\compteur\in\ListeElementsAAfficher{\expandafter\UpdatetoksElementAfficher\compteur\nil}%
+ \MPFish{\PfCPileDiviseurs}{#2}{\the\tokNPElementsVisibles}%
+ }{}%
+}%
+
+\newcommand\PfCTousLesDiviseurs[1]{%
+ %#1 : le nombre entier \`a tester
+ \xdef\anpl{#1}%\relax%
+ \xdef\bnpl{2}%\relax%
+ \xdef\pilebl{2}%\relax%
+ \xdef\PfCPileDiviseurs{1}%
+ \loop
+ \ifnum\fpeval{\bnpl}<\fpeval{\anpl}\relax
+ \modulo{\fpeval{\anpl}}{\fpeval{\bnpl}}
+ \ifnum\remainder=0\relax
+ \xdef\PfCPileDiviseurs{\PfCPileDiviseurs,\fpeval{\bnpl}}%
+ \fi
+ \xdef\bnpl{\fpeval{\bnpl+1}}%
+ \repeat
+ \xdef\PfCPileDiviseurs{\PfCPileDiviseurs,#1}%
+}%%
+
+\def\MPFish#1#2#3{
+ \ifluatex
+ \mplibforcehmode%
+ \mplibnumbersystem{double}%
+ \begin{mplibcode}
+ Echelle=\useKV[ClesNombrePremier]{Echelle};
+ AngleArete=\useKV[ClesNombrePremier]{AngleArete};
+
+ boolean Vide,Visible,Solution;
+ Vide=\useKV[ClesNombrePremier]{Vide};
+ Visible=\useKV[ClesNombrePremier]{Visible};
+ Solution=\useKV[ClesNombrePremier]{Solution};
+
+ color CoulTete,CoulSol;
+ CoulTete=\useKV[ClesNombrePremier]{CouleurPoisson};
+ if Solution:
+ CoulSol=\useKV[ClesNombrePremier]{CouleurSolution};
+ fi;
+
+ numeric Diviseurs[];
+ vardef LectureDiviseurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Diviseurs[n]=p_;
+ endfor;
+ enddef;
+
+ LectureDiviseurs(#1);
+ TotalDiviseurs:=n;
+
+ boolean RETOUR;
+ RETOUR=false;
+
+ vardef TestVisible(expr nrt)=
+ RETOUR:=false;
+ for p_=#3:
+ if p_=nrt:
+ RETOUR:=true;
+ fi;
+ endfor;
+ enddef;
+
+
+ pair Ah[],Ab[],O[],Ac;
+ O0=(0,0);
+ O[-1]=O0+Echelle*(0,1);
+ O[-2]=O0+Echelle*(0,-1);
+ fill (arccercle(O[-1],O[-2],O0)--cycle) withcolor CoulTete;
+ trace arccercle(O[-1],O[-2],O0)--cycle;
+ label.lft(TEX("\num{"&decimal(#2)&"}"),O0);
+ %
+ for k=1 upto (TotalDiviseurs div 2):
+ if k=1:Echelle:=Echelle/2;fi;
+ O[k]-O[k-1]=Echelle*(1,0);
+ if k=1:Echelle:=Echelle*2;fi;
+ Ah[k]-O[k]=Echelle*(cosd(AngleArete),sind(AngleArete));
+ Ab[k]-O[k]=Echelle*(cosd(AngleArete),-sind(AngleArete));
+ draw O[k-1]--O[k];
+ draw Ah[k]--O[k]--Ab[k];
+ if Vide=false:
+ label.top(TEX("\num{"&decimal(Diviseurs[k])&"}"),Ah[k]);
+ label.bot(TEX("\num{"&decimal(Diviseurs[TotalDiviseurs+1-k])&"}"),Ab[k]);
+ else:
+ if Visible:
+ TestVisible(Diviseurs[k]);
+ if RETOUR:
+ label.top(TEX("\num{"&decimal(Diviseurs[k])&"}"),Ah[k]);
+ else:
+ if Solution:
+ drawoptions(withcolor CoulSol);
+ label.top(TEX("\num{"&decimal(Diviseurs[k])&"}"),Ah[k]);
+ drawoptions();
+ fi;
+ fi;
+ TestVisible(Diviseurs[TotalDiviseurs+1-k]);
+ if RETOUR:
+ label.bot(TEX("\num{"&decimal(Diviseurs[TotalDiviseurs+1-k])&"}"),Ab[k]);
+ else:
+ if Solution:
+ drawoptions(withcolor CoulSol);
+ label.bot(TEX("\num{"&decimal(Diviseurs[TotalDiviseurs+1-k])&"}"),Ab[k]);
+ drawoptions();
+ fi;
+ fi;
+ fi;
+ fi;
+ endfor;
+ if (TotalDiviseurs mod 2)<>0:
+ Ac-O[TotalDiviseurs div 2]=Echelle*(1,0);
+ draw Ac--O[TotalDiviseurs div 2];
+ if Vide=false:
+ label.rt(TEX("\num{"&decimal(Diviseurs[(TotalDiviseurs+1) div 2])&"}"),Ac);
+ fi;
+ fi;
+ \end{mplibcode}
+ \else
+ %
+ \fi
}%
\def\MPArbre#1{%
@@ -824,13 +963,13 @@
\begin{tabular}{c|c}%
1&\num{#1}\\
\xintFor* ##1 in {\xintSeq {1}{\fpeval{(\cnpT+1)/2}}}\do{%
- \DiviseurNumero{#1}{##1}\num{\fpeval{\dnpT}}\uppercase{&}\DiviseurNumero{#1}{##1}\xintifboolexpr{\dnpT=\fpeval{#1/\dnpT}}{}{\num{\fpeval{#1/\dnpT}}}\\
+ \DiviseurNumero{#1}{##1}\num{\fpeval{\dnpT}}\uppercase{&}\DiviseurNumero{#1}{##1}\xintifboolexpr{\dnpT==\fpeval{#1/\dnpT}}{\num{\fpeval{\dnpT}}}{\num{\fpeval{#1/\dnpT}}}\\
}
\end{tabular}%
\else%
\begin{tabular}{c|c}
1&\num{#1}
- \ifnum\cnpT>2\relax\\
+ \ifnum\cnpT>1\relax\\
\xintFor* ##1 in {\xintSeq {1}{\fpeval{\cnpT/2}}}\do{%
\DiviseurNumero{#1}{##1}\num{\fpeval{\dnpT}}\uppercase{&}\DiviseurNumero{#1}{##1}\num{\fpeval{#1/\dnpT}}\\
}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDefiCalc.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDefiCalc.tex
index 6d850f80126..089b51658ab 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDefiCalc.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDefiCalc.tex
@@ -1,6 +1,10 @@
%%%
% Defi Calculatrice
%%%
+\def\filedateDefiCalc{2024/08/04}%
+\def\fileversionDefiCalc{0.1}%
+\message{-- \filedateDefiCalc\space v\fileversionDefiCalc}%
+%
\setKVdefault[DefiCalculatrice]{NbCasesNoires=6,ListeTouches={!},Impression=false}%
\newtoks\toktexteecran{}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDefiTables.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDefiTables.tex
index 340d598e2f8..79ad1064ebd 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDefiTables.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDefiTables.tex
@@ -1,7 +1,10 @@
%%%
% Defi Table
%%%
-
+\def\filedateDefiTables{2024/08/04}%
+\def\fileversionDefiTables{0.1}%
+\message{-- \filedateDefiTables\space v\fileversionDefiTables}%
+%
\setKVdefault[DefiTable]{Solution=false,Math=false,LargeurT=5mm,Graines=false,Creation=false,ValeurMin=1,ValeurMax=10,Restreint=false}
\defKV[DefiTable]{Graine=\setKV[DefiTable]{Graines}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDessinAlgo.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDessinAlgo.tex
index 85274cac81c..092aa5e8257 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDessinAlgo.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDessinAlgo.tex
@@ -1,6 +1,10 @@
%%%
% Dessin Algo
%%%
+\def\filedateDessinAlgo{2024/08/04}%
+\def\fileversionDessinAlgo{0.1}%
+\message{-- \filedateDessinAlgo\space v\fileversionDessinAlgo}%
+%
\newtoks\tokDessinAlgo%
\def\UpdatetoksDA#1\nil{\addtotok\tokDessinAlgo{#1,}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDessinGradue.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDessinGradue.tex
index 3bfacac68c2..bd83bb62404 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDessinGradue.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDessinGradue.tex
@@ -1,6 +1,10 @@
%%%
% Dessin Gradue
%%%
+\def\filedateDessinGradue{2024/08/04}%
+\def\fileversionDessinGradue{0.1}%
+\message{-- \filedateDessinGradue\space v\fileversionDessinGradue}%
+%
\setKVdefault[DessinGradue]{Lignes=10,Debut=-5,Fin=5,Pas=10,Solution=false,EcartVertical=1.5,LignesIdentiques,Longueur=10,Echelle=1,Droites=false,DemiDroites=false,OrigineVariable=false,Code=false}
\defKV[DessinGradue]{Traces=\setKV[DessinGradue]{Code}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex
index 27922bdd038..bbb24cb99cd 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex
@@ -1,6 +1,10 @@
%%%
% Lien : ratio
%%%
+\def\filedateDessinRatio{2024/08/04}%
+\def\fileversionDessinRatio{0.1}%
+\message{-- \filedateDessinRatio\space v\fileversionDessinRatio}%
+%
\setKVdefault[ClesRatio]{FigureCours=false,Figure=false,Longueur=5cm,TexteTotal=quantit\'e,TextePart=part,Tableau=false,GrandeurA=Grandeur A,GrandeurB=Part(s),Largeur=1cm,Stretch=1,Nom=false,CouleurUn=gris,CouleurDeux=0.5gris+0.5blanc,CouleurTrois=white,CouleurTab=gray!15,ModeleCouleur=5}
\newcommand\MPTest[9][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDiagrammeRadar.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDiagrammeRadar.tex
index cbed30414d5..70180f2a315 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDiagrammeRadar.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDiagrammeRadar.tex
@@ -1,6 +1,10 @@
%%%
% Radar
%%%
+\def\filedateRadar{2024/08/04}%
+\def\fileversionRadar{0.1}%
+\message{-- \filedateRadar\space v\fileversionRadar}%
+%
\setKVdefault[ClesRadar]{Rayon=3cm,Reference=20,MoyenneClasse=false,Disciplines=false,Pas=5}
\newtoks\toklisteradara%pour la moyenne de l'\'el\`eve
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex
index ad0dd8885d8..b8a9dc57fc5 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex
@@ -1,6 +1,9 @@
%%%
% Distributivit\'e
%%%
+\def\filedateDistributivite{2024/08/04}%
+\def\fileversionDistributivite{0.1}%
+\message{-- \filedateDistributivite\space v\fileversionDistributivite}%
% https://tex.stackexchange.com/questions/168972/draw-arrows-to-show-multiplication-pattern-distributive-property/169278?noredirect=1
\newcommand\Tikzmark[1]{%
\tikz[remember picture,baseline,inner sep=0pt]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDobble.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDobble.tex
index 2767a20c500..c00592b393f 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDobble.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDobble.tex
@@ -1,8 +1,10 @@
%%%
% dobble
%%%
+\def\filedateDobble{2024/08/04}%
+\def\fileversionDobble{0.1}%
+\message{-- \filedateDobble\space v\fileversionDobble}%
% by Maxime Chupin
-
\NewDocumentCommand\dobble{m}{%
\directlua{
require('PfCdobble.lua')
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDomino.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDomino.tex
index 49cf667c163..338dc07bb7b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDomino.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDomino.tex
@@ -1,6 +1,10 @@
%%%
% Domino
%%%
+\def\filedateDomino{2024/08/04}%
+\def\fileversionDomino{0.1}%
+\message{-- \filedateDomino\space v\fileversionDomino}%
+%
\newtcolorbox{MyDominoMini}[1][]{%
enhanced,
nobeforeafter,
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDontCountDots.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDontCountDots.tex
index e395500a3c3..ea6761035e2 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDontCountDots.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDontCountDots.tex
@@ -1,3 +1,9 @@
+%%%
+% Ne compte pas
+%%%
+\def\filedateDontCount{2024/08/04}%
+\def\fileversionDontCount{0.1}%
+\message{-- \filedateDontCount\space v\fileversionDontCount}%
% D'après twitter : https://twitter.com/DavidKButlerUoA/status/1700612346258002030/photo/1
\setKVdefault[NCPP]{Largeur=5,Longueur=7,Unite=5mm,Rayon=1mm,Multiple=3,Couleur=black,Solution=false,Graines=false}%
\defKV[NCPP]{Graine=\setKV[NCPP]{Graines}\PfCGraineAlea{#1}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEcrireunQCM.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEcrireunQCM.tex
index 6fc7a945935..372efa97842 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCEcrireunQCM.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCEcrireunQCM.tex
@@ -1,7 +1,11 @@
%%%
% QCM
%%%
-\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=60pt,Couleur=gray!15,Titre=false,Nom=R\'eponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false,Parties={Yeux,Nez,Bouche},CouleurAlt=gray!15,Seul=false}%
+\def\filedateQCM{2024/08/04}%
+\def\fileversionQCM{0.1}%
+\message{-- \filedateQCM\space v\fileversionQCM}%
+%
+\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=60pt,Couleur=gray!15,Titre=false,Nom=R\'eponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false,Parties={Yeux,Nez,Bouche},CouleurAlt=gray!15,Seul=false,ACompleter=false,AllSeul=false}%
\newlength{\LargeurQCM}%
\newlength{\PfCLargeurQCM}%
\newcounter{QuestionQCM}%
@@ -12,6 +16,8 @@
\setcounter{TotalQCMSeul}{0}%
\setcounter{TotalQCMSeulSol}{0}%
%
+\def\PfCTexteReponseEleve{Ma réponse}%
+%
\setKVdefault[QCMSeul]{Melange=false,Solution=false,EnColonne=false,LabelLettre=false}%
\defKV[QCMSeul]{Colonnes=\setKV[QCMSeul]{EnColonne}}%
%
@@ -32,6 +38,23 @@
\fi%
}%
+\NewDocumentCommand\PfCQCMSMultiChoixLabelSol{mm}{%
+ \xdef\PfCFooChoixLabel{\ListeQCM[#1,\fpeval{\NumeroReponse}]}%
+ \setsepchar{-}%
+ \readlist*\PfCSolListeReponses{\PfCFooChoixLabel}%
+ \xdef\RetiensSiSol{0}%
+ \xintFor* ##3 in{\xintSeq{1}{\PfCSolListeReponseslen}}\do{%
+ \ifnum#2=\PfCSolListeReponses[##3]\relax%
+ \xdef\RetiensSiSol{\fpeval{\RetiensSiSol+1}}%
+ \fi%
+ }%
+ \ifnum\RetiensSiSol>0\relax%
+ $\blacksquare$%
+ \else%
+ $\square$%
+ \fi%
+}%
+
\NewDocumentCommand\QCMSeul{om}{%
\useKVdefault[QCMSeul]%
\setKV[QCMSeul]{#1}%
@@ -90,150 +113,193 @@
%
\ifdef{\QCM}{%
\PackageWarning{ProfCollege}{La commande \noexpand\QCM étant définie par la classe du document, ProfCollege modifie sa commande \noexpand\QCM en \noexpand\QCMPfC.}%
- \newcommand\QCMPfC[2][]{%
- \useKVdefault[ClesQCM]%
- \setKV[ClesQCM]{#1}%
- \ifboolKV[ClesQCM]{Seul}{%
- \QCMSeul[#1]{#2}%
+\newcommand\QCMPfC[2][]{%
+ \useKVdefault[ClesQCM]%
+ \setKV[ClesQCM]{#1}%
+ \ifboolKV[ClesQCM]{Seul}{%
+ \QCMSeul[#1]{#2}%
+ }{%
+ \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
+ \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
+ \setcounter{TitreQCM}{0}
+ \setsepchar[*]{,*&}\ignoreemptyitems%
+ \readlist*\ListeQCM{#2}%
+ \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \ifboolKV[ClesQCM]{Multiple}{%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
+ \setsepchar[*]{/}%
+ \readlist*\ListeNomsMul{\ListeNom}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ \cline{2-\NBcases}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ListeNomsMul[##2]}%
+ \\
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
+ }%
+ \hline%
+ \end{tabular}%
+ \renewcommand{\arraystretch}{1}%
}{%
- \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
- \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
- \setcounter{TitreQCM}{0}
- \setsepchar[*]{,*&}\ignoreemptyitems%
- \readlist*\ListeQCM{#2}%
- \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \ifboolKV[ClesQCM]{Multiple}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
- \setsepchar[*]{/}%
- \readlist*\ListeNomsMul{\ListeNom}%
+ \ifboolKV[ClesQCM]{VF}{%
+ \setKV[ClesQCM]{Reponses=2}%
+ \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
+ \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
\begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ListeNomsMul[##2]}%
- \\
+ \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
\hline%
\xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
\stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
}%
\hline%
- \end{tabular}%
- \renewcommand{\arraystretch}{1}%
+ \end{tabular}
}{%
- \ifboolKV[ClesQCM]{VF}{%
- \setKV[ClesQCM]{Reponses=2}%
- % \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
- \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \cline{2-\NBcases}%
- \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
- }%
- \hline%
- \end{tabular}
+ \ifboolKV[ClesQCM]{ACompleter}{%
+ \xdef\PfCTotalCases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}%
- \\
- }{}
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,##2+1]%
- }\\
- }%
- \hline%
- \end{tabular}%
+ \xdef\PfCTotalCases{\useKV[ClesQCM]{Reponses}}%
}%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\PfCTotalCases*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\PfCTotalCases}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ % \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
+ \ifboolKV[ClesQCM]{Titre}{\cline{2-\fpeval{\PfCTotalCases+1}}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}\ifnum\fpeval{\PfCTotalCases-\useKV[ClesQCM]{Reponses}}>0\relax\uppercase{&}\PfCTexteReponseEleve\fi%
+ \\
+ }{}%
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]
+ }\ifnum\fpeval{\PfCTotalCases-\useKV[ClesQCM]{Reponses}}>0\relax\uppercase{&}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\fi\\
+ }%
+ \hline%
+ \end{tabular}%
}%
- \renewcommand{\arraystretch}{1}%
}%
+ \renewcommand{\arraystretch}{1}%
}%
+}%
}{%
- \newcommand\QCM[2][]{%
- \useKVdefault[ClesQCM]%
- \setKV[ClesQCM]{#1}%
- \ifboolKV[ClesQCM]{Seul}{%
- \QCMSeul[#1]{#2}%
+\newcommand\QCM[2][]{%
+ \useKVdefault[ClesQCM]%
+ \setKV[ClesQCM]{#1}%
+ \ifboolKV[ClesQCM]{AllSeul}{%
+ \setKV[QCMSeul]{#1}
+ \setsepchar[*]{,*&}\ignoreemptyitems%
+ \readlist*\ListeQCM{#2}%
+ \reademptyitems%
+ \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
+ \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}%
+ \begin{enumerate}
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \item\ListeQCM[##1,1]%
+ \ifboolKV[QCMSeul]{EnColonne}{\begin{multicols}{\useKV[QCMSeul]{Colonnes}}}{}%
+ \ifboolKV[QCMSeul]{LabelLettre}{
+ \begin{enumerate}[label=\Alph{*}/]
+ }{%
+ \begin{enumerate}[label=$\square$]
+ }%
+ \xintFor* ##2 in{\xintSeq{1}{\fpeval{\NumeroReponse-2}}}\do{%
+ \xdef\Titi{##2}
+ \ifboolKV[QCMSeul]{Solution}{%
+ \item[\PfCQCMSMultiChoixLabelSol{##1}{##2}]%
+ }{%
+ \item%
+ }%
+ \ListeQCM[##1,\fpeval{##2+1}]
+ }%
+ \end{enumerate}
+ \ifboolKV[QCMSeul]{EnColonne}{\end{multicols}}{}%
+ }%
+ \end{enumerate}
+ }{%
+ \ifboolKV[ClesQCM]{Seul}{%
+ \QCMSeul[#1]{#2}%
+ }{%
+ \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
+ \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
+ \setcounter{TitreQCM}{0}
+ \setsepchar[*]{,*&}\ignoreemptyitems%
+ \readlist*\ListeQCM{#2}%
+ \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \ifboolKV[ClesQCM]{Multiple}{%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
+ \setsepchar[*]{/}%
+ \readlist*\ListeNomsMul{\ListeNom}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ \cline{2-\NBcases}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ListeNomsMul[##2]}%
+ \\
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
+ }%
+ \hline%
+ \end{tabular}%
+ \renewcommand{\arraystretch}{1}%
}{%
- \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}%
- \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
- \setcounter{TitreQCM}{0}
- \setsepchar[*]{,*&}\ignoreemptyitems%
- \readlist*\ListeQCM{#2}%
- \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \ifboolKV[ClesQCM]{Multiple}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\ListeNom{\useKV[ClesQCM]{Noms}}%
- \setsepchar[*]{/}%
- \readlist*\ListeNomsMul{\ListeNom}%
+ \ifboolKV[ClesQCM]{VF}{%
+ \setKV[ClesQCM]{Reponses=2}%
+ \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
+ \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
\begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ListeNomsMul[##2]}%
- \\
+ \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
\hline%
\xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
\stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
}%
\hline%
- \end{tabular}%
- \renewcommand{\arraystretch}{1}%
+ \end{tabular}
}{%
- \ifboolKV[ClesQCM]{VF}{%
- \setKV[ClesQCM]{Reponses=2}%
- \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
- \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \cline{2-\NBcases}%
- \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
- }%
- \hline%
- \end{tabular}
+ \ifboolKV[ClesQCM]{ACompleter}{%
+ \xdef\PfCTotalCases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
}{%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}%
- \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
- \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
- \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}%
- \\
- }{}%
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]%
- }\\
- }%
- \hline%
- \end{tabular}%
+ \xdef\PfCTotalCases{\useKV[ClesQCM]{Reponses}}%
}%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\PfCTotalCases*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}%
+ \begin{tabular}{|p{\LargeurQCM}|*{\PfCTotalCases}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
+ % \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}%
+ \ifboolKV[ClesQCM]{Titre}{\cline{2-\fpeval{\PfCTotalCases+1}}%
+ \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}\ifnum\fpeval{\PfCTotalCases-\useKV[ClesQCM]{Reponses}}>0\relax\uppercase{&}\PfCTexteReponseEleve\fi%
+ \\
+ }{}%
+ \hline%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
+ &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]
+ }\ifnum\fpeval{\PfCTotalCases-\useKV[ClesQCM]{Reponses}}>0\relax\uppercase{&}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\fi\\
+ }%
+ \hline%
+ \end{tabular}%
}%
- \renewcommand{\arraystretch}{1}%
}%
+ \renewcommand{\arraystretch}{1}%
}%
}%
+}%
+}%
\NewDocumentCommand\PfCSolCellColor{mm}{%
\xdef\PfCFooSolColor{\ListeQCM[#1,\NumeroReponse]}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEcritureLettres.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEcritureLettres.tex
index 11ae58b5b71..f80bc938669 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCEcritureLettres.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCEcritureLettres.tex
@@ -1,6 +1,10 @@
%%%
% Ecriture des nombres en lettres
%%%
+\def\filedateEcrireLettres{2024/08/04}%
+\def\fileversionEcrireLettres{0.1}%
+\message{-- \filedateEcrireLettres\space v\fileversionEcrireLettres}%
+%
\setKVdefault[ClesEcriture]{Math=false,Majuscule=false,E=false,Tradition=false,Zero=false}%
\newcommand\EcriturePluriel[1]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEcritureUnites.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEcritureUnites.tex
index c4503954b3b..05e593623cd 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCEcritureUnites.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCEcritureUnites.tex
@@ -1,6 +1,10 @@
%%%
% Ecritures d'unit\'es
%%%
+\def\filedateEcrireUnites{2024/08/04}%
+\def\fileversionEcrireUnites{0.1}%
+\message{-- \filedateEcrireUnites\space v\fileversionEcrireUnites}%
+%
\setKVdefault[Unites]{m=false,km=false,hm=false,ha=false,dam=false,a=false,dm=false,cm=true,mm=false,um=false,nm=false,g=true,t=false,q=false,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,ug=false,ng=false,mmin=false,kmh=true,kms=false,ms=false,mh=false,kgm=false,gcm=true,L=true,kL=false,hL=false,daL=false,dL=false,cL=false,mL=false,l=true,kl=false,hl=false,dal=false,dl=false,cl=false,ml=false,Go=true,Mo=false,ko=false,To=false,o=false,kWh=true,C=true,K=false,F=false,Nombre,US=false,UK=false,CFA=false,CFP=false,CHF=false,Euro=false,Precision=2}%
\defKV[Unites]{Dots=\setKV[Unites]{Nombre=false}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex
index df5743e4399..58553f57f8b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex
@@ -1,22 +1,26 @@
%%%
% Engrenages
%%%
+\def\filedateEngrenages{2024/08/04}%
+\def\fileversionEngrenages{0.1}%
+\message{-- \filedateEngrenages\space v\fileversionEngrenages}%
+%
\newtoks\tokPfCEngrenages%
\def\UpdatetoksEngrenages#1/#2\nil{\addtotok\tokPfCEngrenages{#1,#2,}}%
-\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm,ListeCouleurs={LightSteelBlue}}
+\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm,ListeCouleurs={?}}%
\NewDocumentCommand\Engrenages{o m}{%
\newtoks\toklistecouleur%
\toklistecouleur{}%
- \tokPfCEngrenages{}
+ \tokPfCEngrenages{}%
\useKVdefault[Engrenages]%
\setKV[Engrenages]{#1}%
\setsepchar[*]{,*/}%
\ignoreemptyitems
\readlist*\ListePfCEngrenages{#2}%
- \setsepchar{,}
- \xdef\PfCFooEngrenages{}
+ \setsepchar{,}%
+ \xdef\PfCFooEngrenages{}%
\foreachitem\compteur\in\ListePfCEngrenages{%
\xdef\PfCFooEngrenages{\PfCFooEngrenages \ListePfCEngrenages[\compteurcnt,1],\ListePfCEngrenages[\compteurcnt,2],}%
}%
@@ -102,19 +106,19 @@
fi;
endfor;
);
-}
+}%
\NewDocumentCommand\BuildEngrenages{mm}{%
- \ifluatex
- \mplibforcehmode
- \begin{mplibcode}
+ \ifluatex%
+ \mplibforcehmode%
+ \begin{mplibcode}%
input PfCEngrenages;
\BuildEngrenagesCode{#1}{#2}
trace EngrenageFinal;
- \end{mplibcode}
- \else
+ \end{mplibcode}%
+ \else%
\begin{mpost}[mpsettings={input PfCEngrenages;\BuildEngrenagesCode{#1}{#2}}]
trace EngrenageFinal;
- \end{mpost}
- \fi
+ \end{mpost}%
+ \fi%
}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEnigmeAire.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEnigmeAire.tex
index 345f7416560..1840d8b0e39 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCEnigmeAire.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCEnigmeAire.tex
@@ -1,6 +1,10 @@
%%%
% Enigme Aire
%%%
+\def\filedateEnigmeAire{2024/08/04}%
+\def\fileversionEnigmeAire{0.1}%
+\message{-- \filedateEnigmeAire\space v\fileversionEnigmeAire}%
+%
\setKVdefault[EnigmeAire]{Modele=A,Couleur=LightSteelBlue,Echelle=7mm,Etape=1,Solution=false,Graines=false}
\defKV[EnigmeAire]{Graine=\setKV[EnigmeAire]{Graines}}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEnquete.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEnquete.tex
index 678b268c57d..5dfc36587cb 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCEnquete.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCEnquete.tex
@@ -1,6 +1,10 @@
%%%
% Enquête
%%%
+\def\filedateEnquete{2024/08/04}%
+\def\fileversionEnquete{0.1}%
+\message{-- \filedateEnquete\space v\fileversionEnquete}%
+%
\setKVdefault[ClesEnquete]{Perso=Qui ?,Objet=Quoi ?,Lieu=Où ?,Largeur=4.5cm}
\newcommand\Enquete[1][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEratosthene.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEratosthene.tex
index 192e470e66b..5374c485d2a 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCEratosthene.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCEratosthene.tex
@@ -1,3 +1,10 @@
+%%%
+% Crible Eratostene
+%%%
+\def\filedateEratos{2024/08/04}%
+\def\fileversionEratos{0.1}%
+\message{-- \filedateEratos\space v\fileversionEratos}%
+%
\setKVdefault[ClesEra]{Premier=false,Nombre=1,CouleurP=Cornsilk!50,CouleurNP=Crimson!15,Colonnes=10,Lignes=10,Hauteur=24pt}%
\NewDocumentCommand\TestPremier{m}{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFactorisation.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFactorisation.tex
index 823f2036237..bdcea30d9db 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCFactorisation.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCFactorisation.tex
@@ -1,3 +1,10 @@
+%%%
+% Factorisation
+%%%
+\def\filedateFactorisation{2024/08/04}%
+\def\fileversionFactorisation{0.1}%
+\message{-- \filedateFactorisation\space v\fileversionFactorisation}%
+%
\setKVdefault[Facto]{Aide=false,AideMul=false,Couleur=Crimson,NomExpression=A,Lettre=x,Details,Formel=false,VariableSup=false,ParenthesesFin=false,Finale=false,Type=0}
\defKV[Facto]{Litteral=\setKV[Facto]{Details=false}}
\defKV[Facto]{AutreVariable=\setKV[Facto]{VariableSup}}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFicheMemo.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFicheMemo.tex
index 511e47da2f1..e2dfc25f137 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCFicheMemo.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCFicheMemo.tex
@@ -1,6 +1,10 @@
%%%
% Fiche m\'emorisation active
%%%
+\def\filedateFicheMemo{2024/08/04}%
+\def\fileversionFicheMemo{0.1}%
+\message{-- \filedateFicheMemo\space v\fileversionFicheMemo}%
+%
\setKVdefault[ClesFicheMemo]{TexteReponses=Réponses,TexteQuestions=Questions,Solution=false,Largeur=\linewidth}
\newcommand\FicheMemo[3][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFonctionAffine.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFonctionAffine.tex
index 77c683b1486..26777eaac0e 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCFonctionAffine.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCFonctionAffine.tex
@@ -1,6 +1,10 @@
%%%
% Fonction Affine
%%%
+\def\filedateAffine{2024/08/04}%
+\def\fileversionAffine{0.1}%
+\message{-- \filedateAffine\space v\fileversionAffine}%
+%
\setKVdefault[ClesAffine]{Nom=f,Variable=x,CoefDir=a,OrdoOrig=b,Ligne=false,Image=false,Antecedent=false,Graphique=false,Retrouve=false,ProgCalcul=false,Unitex=1,Unitey=1,VoirCoef=false,ACoef=0,Redaction=false,Ecriture=false,Definition=false,Centre=false}%ACoefficient=false%: inutile ?
\newcommand\FonctionAffine[5][]{%
@@ -58,24 +62,30 @@
}%
}{%
\ifboolKV[ClesAffine]{Retrouve}{%
- On sait que $\useKV[ClesAffine]{Nom}$ est une fonction affine. Donc elle s'\'ecrit sous la forme : \[\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\useKV[ClesAffine]{CoefDir}\useKV[ClesAffine]{Variable}+\useKV[ClesAffine]{OrdoOrig}\]
- Or, $\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}$ et $\useKV[ClesAffine]{Nom}(\num{#4})=\num{#5}$. Par cons\'equent, d'apr\`es la propri\'et\'e des accroissements :
+ \xdef\OrdOrigine{\fpeval{#3-(#3-#5)*#2/(#2-#4)}}%%
+ On sait que $\useKV[ClesAffine]{Nom}$ est une fonction affine. Donc elle s'\'ecrit sous la forme : \[\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\useKV[ClesAffine]{CoefDir}\useKV[ClesAffine]{Variable}+\useKV[ClesAffine]{OrdoOrig}.\]
+ Or, $\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}$ et $\useKV[ClesAffine]{Nom}(\num{#4})=\num{#5}$. \ifnum\fpeval{#3-#5}=0
+ Les images de \num{#2} et \num{#4} sont égales à \num{#3}. La fonction affine cherchée est donc constante et s'écrit :
+ \[\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\num{\OrdOrigine}.\]
+ \else
+ Par cons\'equent, d'apr\`es la propri\'et\'e des accroissements :
\begin{align*}
\useKV[ClesAffine]{CoefDir}&=\frac{\useKV[ClesAffine]{Nom}(\num{#2})-\useKV[ClesAffine]{Nom}(\num{#4})}{\num{#2}-\xintifboolexpr{#4<0}{(\num{#4})}{\num{#4}}}\\
\useKV[ClesAffine]{CoefDir}&=\frac{\num{#3}-\xintifboolexpr{#5<0}{(\num{#5})}{\num{#5}}}{\num{\fpeval{#2-#4}}}\\
\useKV[ClesAffine]{CoefDir}&=\frac{\num{\fpeval{#3-#5}}}{\num{\fpeval{#2-#4}}}%\\
\SSimpliTest{\fpeval{#3-#5}}{\fpeval{#2-#4}}\ifthenelse{\boolean{Simplification}}{\\\useKV[ClesAffine]{CoefDir}&=\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}}{}%
\end{align*}
- La fonction $\useKV[ClesAffine]{Nom}$ s'\'ecrit alors sous la forme $\displaystyle\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}+\useKV[ClesAffine]{OrdoOrig}$.
+ \def\PfCQuotientAffine{\fpeval{(#3-#5)/(#2-#4)}}%
+ La fonction $\useKV[ClesAffine]{Nom}$ s'\'ecrit alors sous la forme $\displaystyle\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\ifnum\fpeval{abs(\PfCQuotientAffine)}=1\relax\Affichage[Lettre={\useKV[ClesAffine]{Variable}}]{0}{\PfCQuotientAffine}{0}\else\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}\fi+\useKV[ClesAffine]{OrdoOrig}$.
\\De plus, comme $\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}$, alors :
\begin{align*}
- \SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}+\useKV[ClesAffine]{OrdoOrig}&=\num{#3}\\
+ \ifnum\PfCQuotientAffine=1\relax\else\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}+\useKV[ClesAffine]{OrdoOrig}\uppercase{&}=\num{#3}\\\fi
\SSimplifie{\fpeval{(#3-#5)*#2}}{\fpeval{#2-#4}}+\useKV[ClesAffine]{OrdoOrig}&=\num{#3}\\
\useKV[ClesAffine]{OrdoOrig}&=\num{\fpeval{#3-(#3-#5)*#2/(#2-#4)}}
\end{align*}
- \xdef\OrdOrigine{\fpeval{#3-(#3-#5)*#2/(#2-#4)}}
La fonction affine $\useKV[ClesAffine]{Nom}$ cherch\'ee est :
- \[\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}\xintifboolexpr{\OrdOrigine==0}{}{\xintifboolexpr{\OrdOrigine>0}{+\num{\OrdOrigine}}{-\num{\fpeval{0-\OrdOrigine}}}}\]
+ \[\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\ifnum\fpeval{abs(\PfCQuotientAffine)}=1\relax\Affichage[Lettre={\useKV[ClesAffine]{Variable}}]{0}{\PfCQuotientAffine}{\OrdOrigine}\else\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}\xintifboolexpr{\OrdOrigine==0}{}{\xintifboolexpr{\OrdOrigine>0}{+\num{\OrdOrigine}}{-\num{\fpeval{0-\OrdOrigine}}}}\fi.\]
+ \fi
}{%
%
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFractionAireCarre.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFractionAireCarre.tex
index dbfe8109d21..8fe19930167 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCFractionAireCarre.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCFractionAireCarre.tex
@@ -1,6 +1,10 @@
%%%
% Fraction d'aire d'un carré
%%%
+\def\filedateFractionCarre{2024/08/04}%
+\def\fileversionFractionCarre{0.1}%
+\message{-- \filedateFractionCarre\space v\fileversionFractionCarre}%
+%
\setKVdefault[JeuAireCarre]{Couleur=LightSteelBlue,CouleurFond=Cornsilk,Perso=false,Graines=false,Parts=3,Longueur=4,NbPoints=2,Angle=0}%
\defKV[JeuAireCarre]{Graine=\setKV[JeuAireCarre]{Graines}\PfCGraineAlea{#1}}%
\defKV[JeuAireCarre]{ListeParts=\setKV[JeuAireCarre]{Perso}\xdef\PfCFooJeuAireCarre{#1}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFractionNombre.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFractionNombre.tex
index 52512fb83ef..20d1d1e93ac 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCFractionNombre.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCFractionNombre.tex
@@ -1,6 +1,10 @@
%%%
% Fraction Nombre
%%%
+\def\filedateFractionNombre{2024/08/04}%
+\def\fileversionFractionNombre{0.1}%
+\message{-- \filedateFractionNombre\space v\fileversionFractionNombre}%
+%
\newtoks\tokFractionNombrePerso%
\def\UpdatetoksFN#1\nil{\addtotok\tokFractionNombrePerso{"#1",}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFrise.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFrise.tex
index a07d2a931bd..c56b2c6f4f6 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCFrise.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCFrise.tex
@@ -1,6 +1,10 @@
%%%
% Frise temporelle
%%%
+\def\filedateFrise{2024/08/04}%
+\def\fileversionFrise{0.1}%
+\message{-- \filedateFrise\space v\fileversionFrise}%
+%
\setKVdefault[ClesFrise]{Longueur=8cm,Fleches=false,Ecart=5mm,Sup=false}%
\newtoks\toklistefrise%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFubuki.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFubuki.tex
index 0ce7af2ffa4..fd1f973bfd1 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCFubuki.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCFubuki.tex
@@ -1,3 +1,10 @@
+%%%
+% Fubuki
+%%%
+\def\filedateFubuki{2024/08/04}%
+\def\fileversionFubuki{0.1}%
+\message{-- \filedateFubuki\space v\fileversionFubuki}%
+%
\setKVdefault[Fubuki]{Largeur=20pt,Solution=false,Indice=false,Sommes=false,Couleur=LightSteelBlue,Perso=false,Vierge=false}%
\defKV[Fubuki]{Graine=\PfCGraineAlea{#1}}%
\defKV[Fubuki]{Indices=\setKV[Fubuki]{Indice}\xdef\PfCFooListeIndices{#1}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFutoshiki.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFutoshiki.tex
index 4603265e0e5..300bdd43d0c 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCFutoshiki.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCFutoshiki.tex
@@ -1,6 +1,10 @@
%%%
% Futoshiki
%%%
+\def\filedateFutoshiki{2024/08/04}%
+\def\fileversionFutoshiki{0.1}%
+\message{-- \filedateFutoshiki\space v\fileversionFutoshiki}%
+%
\setKVdefault[Futo]{Largeur=15pt,Solution=false,CouleurSolution=Black,CouleurCase=Cornsilk,StyleTexte={}}
\newlength\PfCFutoHeight
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCGaram.tex b/Master/texmf-dist/tex/latex/profcollege/PfCGaram.tex
index 7e04378a93b..fd5a97439cf 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCGaram.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCGaram.tex
@@ -1,17 +1,21 @@
%%%
% Garam
%%%
-\setKVdefault[Garam]{Taille=7,Largeur=15pt,Solution=false,CouleurSolution=Black}
+\def\filedateGaram{2024/08/04}%
+\def\fileversionGaram{0.1}%
+\message{-- \filedateGaram\space v\fileversionGaram}%
+%
+\setKVdefault[Garam]{Taille=7,Largeur=15pt,Solution=false}%
+\defKV[Garam]{CouleurSolution=\setKV[Garam]{Solution}\colorlet{PfCGaramCoulSol}{#1}}%
\newlength\PfCGaramHeight
\NewDocumentCommand\Garam{o m}{%
- \useKVdefault[Garam]
+ \useKVdefault[Garam]%
\setKV[Garam]{#1}%
\setlength{\PfCGaramHeight}{\useKV[Garam]{Largeur}+\tabcolsep}%
\reademptyitems%
\setsepchar[*]{§*,*/}%
\readlist*\PfCListeGaram{#2}%
- \colorlet{PfCGaramCoulSol}{\useKV[Garam]{CouleurSolution}}%
\begin{NiceTabular}{*{\useKV[Garam]{Taille}}{m{\useKV[Garam]{Largeur}}}}
\CodeBefore
\xintFor* ##1 in{\xintSeq{2}{\fpeval{\useKV[Garam]{Taille}}}}\do{%
@@ -26,7 +30,7 @@
\rule{0pt}{\PfCGaramHeight}\xintFor* ##2 in {\xintSeq{1}{\useKV[Garam]{Taille}}}\do{%
\xintifForFirst{}{&}\StrChar{\PfCListeGaram[##1,##2,1]}{1}[\PfCCaracGaram]%
\IfStrEq{\PfCCaracGaram}{*}{\Block[draw,fill=black]{1-1}{}}{%
- \IfStrEq{\PfCCaracGaram}{!}{\Block{}{\ifboolKV[Garam]{Solution}{\StrGobbleLeft{\PfCListeGaram[##1,##2,1]}{1}}{}}}{\Block{}{\color{PfCGaramCoulSol}\PfCListeGaram[##1,##2,1]}}%
+ \IfStrEq{\PfCCaracGaram}{!}{\Block{}{\ifboolKV[Garam]{Solution}{\color{PfCGaramCoulSol}\StrGobbleLeft{\PfCListeGaram[##1,##2,1]}{1}}{}}}{\Block{}{\PfCListeGaram[##1,##2,1]}}%
}%
}\\
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex
index ad7e495f044..9bb83ad50d6 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex
@@ -1,6 +1,10 @@
%%%
% Geometrie
%%%
+\def\filedateGeometrie{2024/08/04}%
+\def\fileversionGeometrie{0.1}%
+\message{-- \filedateGeometrie\space v\fileversionGeometrie}%
+%
\setKVdefault[Geometrie]{CoinBG={(0,0)},CoinHD={(10u,10u)},TypeTrace="Instruments",Clip,Cadres=false,Epaisseur=1,Pointilles=false,Ombre=false,Couleur=black,Ecart=2,ModeleCouleur=5}%
\defKV[Geometrie]{Cadre=\setKV[Geometrie]{Cadres}\setKV[Geometrie]{Clip=false}}%
@@ -42,6 +46,9 @@
elseif \useKV[Geometrie]{TypeTrace}="Espace":
typetrace:="3D";
typerepre:="persp";
+ elseif \useKV[Geometrie]{TypeTrace}="Schema":
+ input PfCSketch;
+ sketchypaths;
fi;
xa:=xpart(Coinbg);
xb:=xpart(Coinhd);
@@ -120,6 +127,9 @@
elseif \useKV[Geometrie]{TypeTrace}="Espace":
typetrace:="3D";
typerepre:="persp";
+ elseif \useKV[Geometrie]{TypeTrace}="Schema":
+ input PfCSketch;
+ sketchypaths;
fi;}
]%
xa:=xpart(Coinbg);
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCGrades.tex b/Master/texmf-dist/tex/latex/profcollege/PfCGrades.tex
index 6155c43ca1d..d86c6e4e420 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCGrades.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCGrades.tex
@@ -1,8 +1,12 @@
%%%
% Grades
%%%
-\setKVdefault[Grades]{Solution=false,Longueur=9,Largeur=9,Echelle=8mm,Graines=false}
-\defKV[Grades]{Graine=\setKV[Grades]{Graines}}
+\def\filedateGrades{2024/08/04}%
+\def\fileversionGrades{0.1}%
+\message{-- \filedateGrades\space v\fileversionGrades}%
+%
+\setKVdefault[Grades]{Solution=false,Longueur=9,Largeur=9,Echelle=8mm,Graines=false}%
+\defKV[Grades]{Graine=\setKV[Grades]{Graines}}%
\NewDocumentCommand\Grades{o}{%
\useKVdefault[Grades]%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCGrimuku.tex b/Master/texmf-dist/tex/latex/profcollege/PfCGrimuku.tex
index 81e667533a3..9185b768929 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCGrimuku.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCGrimuku.tex
@@ -1,6 +1,10 @@
%%%
% Grimuku
%%%
+\def\filedateGrimuku{2024/08/04}%
+\def\fileversionGrimuku{0.1}%
+\message{-- \filedateGrimuku\space v\fileversionGrimuku}%
+%
\setKVdefault[Grimuku]{TLargeur=7,Solution=false,Largeur=30pt,CouleurCase=0.7white}%
\defKV[Grimuku]{CouleurSolution=\setKV[Grimuku]{Solution}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCHiddenMessage.tex b/Master/texmf-dist/tex/latex/profcollege/PfCHiddenMessage.tex
index f472e078443..65948f59498 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCHiddenMessage.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCHiddenMessage.tex
@@ -1,6 +1,10 @@
%%%
% Message caché
%%%
+\def\filedateHidden{2024/08/04}%
+\def\fileversionHidden{0.1}%
+\message{-- \filedateHidden\space v\fileversionHidden}%
+%
\setKVdefault[Hidden]{TLargeur=5,THauteur=3,Solution=false,Hauteur=70pt,Largeur=120pt,Jeu=false,Solution}
\defKV[Hidden]{Plateau=\setKV[Hidden]{Jeu}\setKV[Hidden]{Solution=false}}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCHorloge.tex b/Master/texmf-dist/tex/latex/profcollege/PfCHorloge.tex
index 1133714ecdc..01af381977a 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCHorloge.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCHorloge.tex
@@ -1,7 +1,11 @@
%%%
% Horloges
%%%
-\setKVdefault[ClesHorloge]{Aiguilles,Numerique=false,Secondes,Cadre,Rayon=1,Impression=false}
+\def\filedateHorloge{2024/08/12}%
+\def\fileversionHorloge{0.1a}%
+\message{-- \filedateHorloge\space v\fileversionHorloge}%
+%
+\setKVdefault[ClesHorloge]{Aiguilles,Numerique=false,Secondes,Cadre,Rayon=1,Impression=false,Sombre=false}
\NewDocumentCommand\Horloge{ }{%On désactive les :
\begingroup
@@ -62,13 +66,19 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
- boolean Secondes,Impression;
+ boolean Secondes,Impression,Sombre;
Secondes=\useKV[ClesHorloge]{Secondes};
Impression=\useKV[ClesHorloge]{Impression};
+ Sombre=\useKV[ClesHorloge]{Sombre};
if Impression:
+ if Sombre:
+ LightSteelBlue:=0.8*white;
+ Crimson:=black;
+ else:
LightSteelBlue:=0.9*white;
Crimson:=0.5*white;
fi;
+ fi;
u:=0.5u;
draw Afficheur(#1 div10,0);
draw Afficheur(#1 mod10,0) shifted(u*(1,0));
@@ -80,9 +90,21 @@
draw Afficheur(#3 div10,0) shifted(u*(6,0));
draw Afficheur(#3 mod10,0) shifted(u*(7,0));
fi;
+ if Sombre:
+ draw bbox currentpicture;
+ fi;
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={boolean Secondes;Secondes=\useKV[ClesHorloge]{Secondes};}]
+ \begin{mpost}[mpsettings={boolean Secondes,Impression,Sombre;Secondes=\useKV[ClesHorloge]{Secondes};Impression=\useKV[ClesHorloge]{Impression};Sombre=\useKV[ClesHorloge]{Sombre};}]
+ if Impression:
+ if Sombre:
+ LightSteelBlue:=0.8*white;
+ Crimson:=black;
+ else:
+ LightSteelBlue:=0.9*white;
+ Crimson:=0.5*white;
+ fi;
+ fi;
u:=0.5u;
draw Afficheur(#1 div10,0);
draw Afficheur(#1 mod10,0) shifted(u*(1,0));
@@ -94,6 +116,9 @@
draw Afficheur(#3 div10,0) shifted(u*(6,0));
draw Afficheur(#3 mod10,0) shifted(u*(7,0));
fi;
+ if Sombre:
+ draw bbox currentpicture;
+ fi;
\end{mpost}
\fi
}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCInfixRPN.sty b/Master/texmf-dist/tex/latex/profcollege/PfCInfixRPN.sty
new file mode 100644
index 00000000000..a0851a5dd5e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCInfixRPN.sty
@@ -0,0 +1,538 @@
+%%
+%% This is file `infix-RPN.tex',
+%%
+%% IMPORTANT NOTICE:
+%%
+%% Package `infix-RPN.tex'
+%%
+%% Main code:
+%% Jean-Côme Charpentier <jean-come.charpentier@wanadoo.fr>
+%%
+%% Contributions by
+%% Christophe Jorssen <christophe.jorssen@libre.fr.invalid>
+%% `libre' is the french word for `free' :-)
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives
+%% in directory CTAN:/macros/latex/base/lppl.txt.
+%%
+%% DESCRIPTION:
+%% `infix-RPN' is a package to convert infix expressions to
+%% Reverse Polish Notation
+%%
+%%
+\def\RCS$#1: #2 ${\expandafter\def\csname RCS#1\endcsname{#2}}
+\RCS$Revision: 1.7 $
+\RCS$Date: 2004-07-06 23:41:52+02 $
+
+\def\fileversion{0.11}
+\csname infixRPNLoaded\endcsname
+\let\infixRPNLoaded\endinput
+\message{`infix-RPN' v\fileversion\space (Rev \RCSRevision, \RCSDate), J.-C.Charpentier/C.Jorssen}
+
+\edef\PfCopAtCode{\the\catcode`\@}
+\edef\PfCopHatCode{\the\catcode`\^}
+\edef\PfCopUnderscoreCode{\the\catcode`\_}
+\catcode`\@=11\relax
+\catcode`\^=12\relax
+\catcode`\_=11\relax
+
+\def\s@pow{exp}
+\def\s@lpar{(}
+\def\s@rpar{)}
+\def\s@comma{,}
+
+\def\DeclareNewPSOperator{%
+ \bgroup
+ \catcode`\_=11\relax
+ \DeclareNewPSOperator@i
+}
+
+\def\DeclareNewPSOperator@i#1{%
+ \expandafter\ifx\csname PS@operator@list\endcsname\relax
+ \gdef\PS@operator@list{#1}%
+ \else
+ \xdef\PS@operator@list{#1,\PS@operator@list}%
+ \fi
+ \expandafter\gdef\csname s@#1\endcsname{#1}%
+ \egroup
+}
+
+\DeclareNewPSOperator{add}
+\DeclareNewPSOperator{sub}
+\DeclareNewPSOperator{mul}
+\DeclareNewPSOperator{div}
+\DeclareNewPSOperator{exp}
+\DeclareNewPSOperator{abs}
+\DeclareNewPSOperator{sin}
+\DeclareNewPSOperator{cos}
+\DeclareNewPSOperator{atan}
+\DeclareNewPSOperator{neg}
+\DeclareNewPSOperator{ceiling}
+\DeclareNewPSOperator{floor}
+\DeclareNewPSOperator{truncate}
+\DeclareNewPSOperator{sqrt}
+\DeclareNewPSOperator{ln}
+\DeclareNewPSOperator{log}
+
+
+\newcount\@parenthesis
+\newcount\token@cpt
+\newif\if@begin@token
+\newif\if@in@number
+\newif\if@in@decimal
+\newif\if@in@name
+\newif\if@sign
+\def\@tokencreate#1{%
+ \expandafter\xdef\csname PfCop@token\the\token@cpt\endcsname{#1}%
+ \global\advance\token@cpt\@ne
+ \expandafter\global
+ \expandafter\let\csname PfCop@token\the\token@cpt\endcsname\relax
+ \global\advance\token@cpt\m@ne
+}
+\def\@tokenappend#1{%
+ \expandafter\xdef\csname PfCop@token\the\token@cpt\endcsname
+ {\csname PfCop@token\the\token@cpt\endcsname#1}%
+}
+\def\@tokensingle#1{%
+ \edef\@arg{#1}%
+ \if@in@name
+ \global\advance\token@cpt\@ne
+ \@in@namefalse
+ \fi
+ \if@in@number
+ \global\advance\token@cpt\@ne
+ \@in@numberfalse
+ \@in@decimalfalse
+ \fi
+ \ifx\@arg\s@add
+ \if@sign
+ % ignore + sign
+ \global\advance\token@cpt\m@ne
+ \else
+ \@tokencreate{#1}%
+ \fi
+ \else\ifx\@arg\s@sub
+ \if@sign
+ \@tokencreate{\s@neg}%
+ \else
+ \@tokencreate{#1}%
+ \fi
+ \else
+ \@tokencreate{#1}%
+ \fi\fi
+ \global\advance\token@cpt\@ne
+}
+\def\@tokenuse#1{%
+ \expandafter\ifx\csname PfCop@token#1\endcsname\s@comma%
+ \else
+ \xdef\RPN{\RPN\space\csname PfCop@token#1\endcsname}%
+ \fi
+}
+
+\let\endscanline\relax
+\def\scan@line{%
+ \begingroup
+ \catcode`\ =12
+ \@parenthesis=\z@
+ \@in@numberfalse
+ \@in@decimalfalse
+ \@in@namefalse
+ \global\token@cpt=\@ne
+ \global\@signtrue
+ \scan@@line
+}
+\def\scan@@line#1{\scan@@@line#1\endscanline\endgroup}
+\def\scan@@@line#1#2\endscanline{%
+ \PfCop@testchar{#1}%
+ \ifPfCop@isdigit
+ \global\@signfalse
+ \if@in@number
+ \@tokenappend{#1}%
+ \else \if@in@name
+ \@in@namefalse
+ \@in@numbertrue
+ \@tokenappend{#1}%
+ \else
+ \@in@numbertrue
+ \@tokencreate{#1}%
+ \fi\fi
+ \fi
+ \ifPfCop@isplus
+ \@tokensingle{\s@add}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@isminus
+ \@tokensingle{\s@sub}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@ismultiply
+ \@tokensingle{\s@mul}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@isdivide
+ \@tokensingle{\s@div}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@ispower
+ \@tokensingle{\s@pow}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@isdecimalsep
+ \global\@signfalse
+ \if@in@decimal
+ \errmessage{Syntax error: number with multiple separators!}%
+ \else \if@in@number
+ \@in@decimaltrue
+ \@tokenappend{.}%
+ \else
+ \@tokencreate{.}%
+ \@in@numbertrue
+ \@in@decimaltrue
+ \fi\fi
+ \fi
+ \ifPfCop@iscomma
+ \@tokensingle{,}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@islparenthesis
+ \@tokensingle{(}%
+ \global\@signtrue
+ \fi
+ \ifPfCop@isrparenthesis
+ \global\@signfalse
+ \@tokensingle{)}%
+ \fi
+ \ifPfCop@isspace
+ \if@in@number
+ \@in@numberfalse
+ \@in@decimalfalse
+ \global\advance\token@cpt\@ne
+ \else \if@in@name
+ \@in@namefalse
+ \global\advance\token@cpt\@ne
+ \fi\fi
+ \fi
+ \ifPfCop@isother
+ \global\@signfalse
+ \if@in@name
+ \@tokenappend{#1}%
+ \else \if@in@number
+ \@in@numberfalse
+ \@in@decimalfalse
+ \@in@nametrue
+ \@tokenappend{#1}%
+ \else
+ \@in@nametrue
+ \@tokencreate{#1}%
+ \fi\fi
+ \fi
+ \def\arg{#2}%
+ \ifx\empty\arg
+ \let\next\relax
+ \else
+ \let\next\scan@@@line
+ \fi
+ \expandafter\next\arg\endscanline
+}
+\count255=`\0 \edef\PfCop@numbegin{\the\count255}
+\count255=`\9 \edef\PfCop@numend{\the\count255}
+\count255=`\+ \edef\PfCop@plus{\the\count255}
+\count255=`\- \edef\PfCop@minus{\the\count255}
+\count255=`\* \edef\PfCop@multiply{\the\count255}
+\count255=`\/ \edef\PfCop@divide{\the\count255}
+\count255=`\^ \edef\PfCop@power{\the\count255}
+\count255=`\. \edef\PfCop@dot{\the\count255}
+\count255=`\, \edef\PfCop@comma{\the\count255}
+\count255=`\( \edef\PfCop@lparenthesis{\the\count255}
+\count255=`\) \edef\PfCop@rparenthesis{\the\count255}
+\edef\PfCop@space{32}
+\newif\ifPfCop@isdigit
+\newif\ifPfCop@isplus
+\newif\ifPfCop@isminus
+\newif\ifPfCop@ismultiply
+\newif\ifPfCop@isdivide
+\newif\ifPfCop@ispower
+\newif\ifPfCop@isdecimalsep
+\newif\ifPfCop@iscomma
+\newif\ifPfCop@islparenthesis
+\newif\ifPfCop@isrparenthesis
+\newif\ifPfCop@isspace
+\newif\ifPfCop@isother
+\def\PfCop@testchar#1{%
+ \PfCop@isdigitfalse
+ \PfCop@isplusfalse
+ \PfCop@isminusfalse
+ \PfCop@ismultiplyfalse
+ \PfCop@isdividefalse
+ \PfCop@ispowerfalse
+ \PfCop@isdecimalsepfalse
+ \PfCop@iscommafalse
+ \PfCop@islparenthesisfalse
+ \PfCop@isrparenthesisfalse
+ \PfCop@isspacefalse
+ \PfCop@isotherfalse
+ \count255=`#1\relax
+ \ifnum\count255=\PfCop@plus \relax
+ \PfCop@isplustrue
+ \else \ifnum\count255=\PfCop@minus \relax
+ \PfCop@isminustrue
+ \else \ifnum\count255=\PfCop@multiply \relax
+ \PfCop@ismultiplytrue
+ \else \ifnum\count255=\PfCop@divide \relax
+ \PfCop@isdividetrue
+ \else \ifnum\count255=\PfCop@power \relax
+ \PfCop@ispowertrue
+ \else \ifnum\count255=\PfCop@dot \relax
+ \PfCop@isdecimalseptrue
+ \else \ifnum\count255=\PfCop@comma \relax
+ \PfCop@iscommatrue
+ \else \ifnum\count255=\PfCop@lparenthesis \relax
+ \PfCop@islparenthesistrue
+ \else \ifnum\count255=\PfCop@rparenthesis \relax
+ \PfCop@isrparenthesistrue
+ \else \ifnum\count255=\PfCop@space \relax
+ \PfCop@isspacetrue
+ \else \ifnum\count255<\PfCop@numbegin \relax
+ \PfCop@isothertrue
+ \else \ifnum\count255>\PfCop@numend \relax
+ \PfCop@isothertrue
+ \else \PfCop@isdigittrue
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+}
+
+\def\search@term#1#2{%
+ \begingroup
+ \count1=#1\relax
+ \count255=#2\relax
+ \ifnum\count1=\count255
+ \@tokenuse{#1}%
+ \else
+ \count5=\count255
+ \count7=\count1
+ \advance\count7\m@ne
+ \count3=\z@
+ \loop
+ \ifnum\count5>\count7
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@rpar\relax
+ \advance\@parenthesis\@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@lpar\relax
+ \advance\@parenthesis\m@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@add\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@sub\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@comma\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \advance\count5\m@ne
+ \repeat
+ \ifnum\count3=\z@
+ \ifnum\@parenthesis=\z@
+ \search@factor{\the\count1}{\the\count255}%
+ \else
+ \errmessage{Syntax error: unbalanced parenthesis!}%
+ \fi
+ \else
+ \advance\count3\m@ne
+ \search@term{\the\count1}{\the\count3}%
+ \advance\count3\tw@
+ \search@term{\the\count3}{\the\count255}%
+ \advance\count3\m@ne
+ \@tokenuse{\the\count3}%
+ \fi
+ \fi
+ \endgroup
+}
+\def\search@factor#1#2{%
+ \begingroup
+ \count1=#1\relax
+ \count255=#2\relax
+ \ifnum\count1=\count255
+ \@tokenuse{\the\count1}%
+ \else
+ \count5=\count255
+ \count7=\count1
+ \advance\count7\m@ne
+ \count3=\z@
+ \loop
+ \ifnum\count5>\count7
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@rpar\relax
+ \advance\@parenthesis\@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@lpar\relax
+ \advance\@parenthesis\m@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@mul\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@div\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \advance\count5\m@ne
+ \repeat
+ \ifnum\count3=\z@
+ \ifnum\@parenthesis=\z@
+ \search@power{\the\count1}{\the\count255}%
+ \else
+ \errmessage{! Syntax error: unbalanced parenthesis}%
+ \fi
+ \else
+ \advance\count3\m@ne
+ \search@factor{\the\count1}{\the\count3}%
+ \advance\count3\tw@
+ \search@factor{\the\count3}{\the\count255}%
+ \advance\count3\m@ne
+ \@tokenuse{\the\count3}%
+ \fi
+ \fi
+ \endgroup
+}
+\def\search@power#1#2{%
+ \begingroup
+ \count1=#1\relax
+ \count255=#2\relax
+ \ifnum\count1=\count255
+ \@tokenuse{#1}%
+ \else
+ \count5=\count255
+ \count7=\count1
+ \advance\count7\m@ne
+ \count3=\z@
+ \loop
+ \ifnum\count5>\count7
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@rpar\relax
+ \advance\@parenthesis\@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@lpar\relax
+ \advance\@parenthesis\m@ne
+ \fi
+ \expandafter\ifx\csname PfCop@token\the\count5\endcsname\s@pow\relax
+ \ifnum\@parenthesis=\z@
+ \count3=\count5
+ \count5=\z@
+ \fi
+ \fi
+ \advance\count5\m@ne
+ \repeat
+ \ifnum\count3=\z@
+ \ifnum\@parenthesis=\z@
+ \search@primary{\the\count1}{\the\count255}%
+ \else
+ \errmessage{Syntax error: unbalanced parenthesis}%
+ \fi
+ \else
+ \advance\count3\m@ne
+ \search@power{\the\count1}{\the\count3}%
+ \advance\count3\tw@
+ \search@power{\the\count3}{\the\count255}%
+ \advance\count3\m@ne
+ \@tokenuse{\the\count3}%
+ \fi
+ \fi
+ \endgroup
+}
+\def\search@primary#1#2{%
+ \begingroup
+ \count1=#1\relax
+ \count255=#2\relax
+ \ifnum\count1=\count255
+ \@tokenuse{#1}%
+ \else
+ \edef\current@cnt{#1}%
+ \expandafter\compare@PS@operator\PS@operator@list,\@nil
+ \expandafter\ifx\csname PfCop@token#1\endcsname\s@lpar\relax
+ \expandafter\ifx\csname PfCop@token#2\endcsname\s@rpar\relax
+ \advance\count1\@ne
+ \advance\count255\m@ne
+ \search@term{\the\count1}{\the\count255}%
+ \else
+ \errmessage{Syntax error: Garbage after parenthesis
+ (tokens '#1' to '#2')}%
+ \fi
+ \fi
+ \fi
+ \endgroup
+}
+
+%\let\@nil\relax
+%\let\@nil\@empty
+
+%\def\compare@PS@operator#1,#2\@nil{%
+% \def\@tempa{#1}%
+% \def\@tempb{#2}%
+% \expandafter\ifx\csname PfCop@token\current@cnt\endcsname\@tempa%
+% \advance\count1\@ne
+% \search@primary{\the\count1}{\the\count255}%
+% \advance\count1\m@ne
+% \@tokenuse{\the\count1}%
+% \fi
+% \ifx\@tempb\empty
+% \let\next\relax
+% \let\@tempb\relax
+% \else
+% \let\next\compare@PS@operator
+% \fi
+% \expandafter\next\@tempb\@nil
+%}
+
+\let\@nil\undefined
+
+\def\compare@PS@operator#1,#2\@nil{%
+ \def\@tempa{#1}%
+ \def\@tempb{#2}%
+ \expandafter\ifx\csname PfCop@token\current@cnt\endcsname\@tempa%
+ \advance\count1\@ne
+ \search@primary{\the\count1}{\the\count255}%
+ \advance\count1\m@ne
+ \@tokenuse{\the\count1}%
+ \fi
+ \ifx\@tempb\empty
+ \let\next\@gobble
+ \else
+ \let\next\compare@PS@operator
+ \fi
+ \expandafter\next\@tempb\@nil
+}
+
+
+\def\infixtoRPN{%
+ \begingroup
+ \catcode`\ =12
+ \catcode`\^=12
+ \infixt@RPN
+}
+\def\infixt@RPN#1{%
+ \xdef\@expression{#1}%
+ \endgroup
+ \def\RPN{}%
+ \expandafter\scan@line\expandafter{\@expression}%
+ \expandafter\ifx\csname PfCop@token\the\token@cpt\endcsname\relax
+ \advance\token@cpt\m@ne
+ \fi
+ \search@term{1}{\the\token@cpt}%
+}
+
+\catcode`\@=\PfCopAtCode\relax
+\catcode`\^=\PfCopHatCode\relax
+\catcode`\_=\PfCopUnderscoreCode\relax
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCJeton.tex b/Master/texmf-dist/tex/latex/profcollege/PfCJeton.tex
index e3012070f27..68523efce53 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCJeton.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCJeton.tex
@@ -1,6 +1,10 @@
%%%
% Jeton
%%%
+\def\filedateJeton{2024/08/04}%
+\def\fileversionJeton{0.1}%
+\message{-- \filedateJeton\space v\fileversionJeton}%
+%
\setKVdefault[Jeton]{Diametre=5mm,Impression=false}%
\NewDocumentCommand\Jeton{om}{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCJeuRangement.tex b/Master/texmf-dist/tex/latex/profcollege/PfCJeuRangement.tex
index 6508e6cd1a9..df2f709271b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCJeuRangement.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCJeuRangement.tex
@@ -1,3 +1,10 @@
+%%%
+% Jeu Rangement
+%%%
+\def\filedateJeuRangement{2024/08/04}%
+\def\fileversionJeuRangement{0.1}%
+\message{-- \filedateJeuRangement\space v\fileversionJeuRangement}%
+%
\setKVdefault[JeuRgt]{Creation=false,Deno=12,Graines=false,Largeur=15pt,Hauteur=20pt,Negatif=false,Decimaux=false,Solution=false,ValeurMin=2,ValeurMax=50,Exposants=false}
\defKV[JeuRgt]{Graine=\setKV[JeuRgt]{Graines}}%
\defKV[JeuRgt]{Exposant=\setKV[JeuRgt]{Exposants}\setKV[JeuRgt]{Deno=1}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCKakurasu.tex b/Master/texmf-dist/tex/latex/profcollege/PfCKakurasu.tex
index 944d295e8fe..d608320b3e5 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCKakurasu.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCKakurasu.tex
@@ -1,6 +1,10 @@
%%%
% Kakurasu
%%%
+\def\filedateKakurasu{2024/08/04}%
+\def\fileversionKakurasu{0.1}%
+\message{-- \filedateKakurasu\space v\fileversionKakurasu}%
+%
\setKVdefault[Kakurasu]{Solution=false,Longueur=6,Largeur=6,Echelle=8mm,Graines=false,Trace=false}
\defKV[Kakurasu]{Graine=\setKV[Kakurasu]{Graines}}
\defKV[Kakurasu]{Traces=\setKV[Kakurasu]{Trace}}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCKakuro.tex b/Master/texmf-dist/tex/latex/profcollege/PfCKakuro.tex
index adf0aba7d21..b480f442757 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCKakuro.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCKakuro.tex
@@ -1,6 +1,10 @@
%%%
% Kakuro
%%%
+\def\filedateKakuro{2024/08/04}%
+\def\fileversionKakuro{0.1}%
+\message{-- \filedateKakuro\space v\fileversionKakuro}%
+%
\setKVdefault[Kakuro]{CouleurCase=LightGray,TLargeur=5,THauteur=5,Solution=false,Largeur=2em,Aide=false,CouleurSolution=Black,Tailles=false}%,Taille=5
\defKV[Kakuro]{ListeNombres=\setKV[Kakuro]{Aide}}%
\defKV[Kakuro]{Taille=\setKV[Kakuro]{Tailles}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCKenKen.tex b/Master/texmf-dist/tex/latex/profcollege/PfCKenKen.tex
index e28efc379f5..21a16dbc783 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCKenKen.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCKenKen.tex
@@ -1,6 +1,10 @@
%%%
% KenKen
%%%
+\def\filedateKenken{2024/08/04}%
+\def\fileversionKenken{0.1}%
+\message{-- \filedateKenken\space v\fileversionKenken}%
+%
\setKVdefault[ClesKK]{Solution=false,Taille=3,Largeur=2em,Aide=false}%
\defKV[ClesKK]{Nombre=\setKV[ClesKK]{Aide}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheJeu.tex b/Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheJeu.tex
index 5922748104b..f60cbce35ec 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheJeu.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheJeu.tex
@@ -1,8 +1,12 @@
%%%
% Labyrinthe
%%%
-\setKVdefault[Labyrinthe]{Lignes=6,Colonnes=3,Longueur=4,Hauteur=2,Passages=false,EcartH=1,EcartV=1,CouleurF=gray!50,Texte=\color{black},SensImpose=false,Slop}
-
+\def\filedateLabyJeu{2024/08/04}%
+\def\fileversionLabyJeu{0.1}%
+\message{-- \filedateLabyJeu\space v\fileversionLabyJeu}%
+%
+\setKVdefault[Labyrinthe]{Lignes=6,Colonnes=3,Longueur=4,Hauteur=2,Passages=false,EcartH=1,EcartV=1,CouleurF=gray!50,Texte=\color{black},SensImpose=false,Slop}%
+%
\tikzset{FDirect/.style={-stealth}}
\tikzset{FIndirect/.style={stealth-}}
\tikzset{FBidirect/.style={stealth-stealth}}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheNombre.tex b/Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheNombre.tex
index b610849ea51..769617eb902 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheNombre.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCLabyrintheNombre.tex
@@ -1,6 +1,10 @@
%%%
% Labyrinthe Nombre
%%%
+\def\filedateLabyNombre{2024/08/04}%
+\def\fileversionLabyNombre{0.1}%
+\message{-- \filedateLabyNombre\space v\fileversionLabyNombre}%
+%
\setKVdefault[ClesLabyNb]{Multiple=5,XDepart=0,YDepart=0,Longueur=7,Largeur=4,Solution=false,Echelle=1,Angle=0,Couleur=red,Murs=false,Nom=Ex1,CouleurChemin=LightSteelBlue,DoubleOperation=false,Multiplication=false,Chemin=false,EntreeSortie=false,Entree="Nord",Sortie="Sud",SortieUnique=true,Graines=false,XArrivees=false,YArrivees=false,ArriveeX=5,ArriveeY=5}
\defKV[ClesLabyNb]{Graine=\setKV[ClesLabyNb]{Graines}}
\defKV[ClesLabyNb]{XArrivee=\setKV[ClesLabyNb]{XArrivees}\setKV[ClesLabyNb]{ArriveeX=#1}}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex b/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex
index 901eb0a54bb..80bc5ddc1a4 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex
@@ -1,6 +1,10 @@
%%%
% Lego
%%%
+\def\filedateLego{2024/09/01}%
+\def\fileversionLego{0.1a}%
+\message{-- \filedateLego\space v\fileversionLego}%
+%
\setKVdefault[Lego]{Echelle=1,Couleur=LightSteelBlue,Unite=8,Diviseur=2,Perso=false,Plaque=false,Largeura=2,Largeurb=2,Unique=false}%
\defKV[Lego]{ListePerso=\setKV[Lego]{Perso}\xdef\PfCFooLegoListePerso{#1}}%
@@ -27,10 +31,14 @@
}{%
\xdef\PfCNbCouleurs{\fpeval{floor(\useKV[Lego]{Unite}/\useKV[Lego]{Diviseur})}}%
}%
- \ChoixCouleur{\PfCNbCouleurs}%
\ifboolKV[Lego]{Perso}{%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeAvantChoixCouleurs{\PfCFooLegoListePerso}%
+ \ChoixCouleur{\ListeAvantChoixCouleurslen}%
+ \reademptyitems%
\BuildBarreLego{\FooCouleur}{\PfCFooLegoListePerso}%
}{%
+ \ChoixCouleur{\PfCNbCouleurs}%
\BuildBarreLego{\FooCouleur}{}%
}%
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMentalo.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMentalo.tex
index 84176c0d1ff..0c024facd2a 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMentalo.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMentalo.tex
@@ -1,6 +1,10 @@
%%%
% Mentalo
%%%
+\def\filedateMentalo{2024/08/04}%
+\def\fileversionMentalo{0.1}%
+\message{-- \filedateMentalo\space v\fileversionMentalo}%
+%
\NewDocumentCommand\PfCNumold{m}{%
\xintifboolexpr{#1<0}{(\num{#1})}{\num{#1}}%
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMidpoint.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMidpoint.tex
index 0813f66c446..4fea05dcbb7 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMidpoint.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMidpoint.tex
@@ -1,6 +1,10 @@
%%%
% Midpoint
%%%
+\def\filedateMidpoint{2024/08/04}%
+\def\fileversionMidpoint{0.1}%
+\message{-- \filedateMidpoint\space v\fileversionMidpoint}%
+%
\setKVdefault[MidPoint]{Solution=false,Graines=false,Hard=false}
\defKV[MidPoint]{Graine=\setKV[MidPoint]{Graines}}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex b/Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex
index a05ae0075b6..e894a9ebc6f 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex
@@ -1,6 +1,10 @@
%%%
% Modele en barre
%%%
+\def\filedateModeleBarre{2024/08/04}%
+\def\fileversionModeleBarre{0.1}%
+\message{-- \filedateModeleBarre\space v\fileversionModeleBarre}%
+%
\setKVdefault[ClesModeleBarre]{Hauteur=0.5cm,Largeur=1cm,Separation={0},Homogene=false,Multiplicatif=false,MultiplicatifH=false,MultiplicatifB=false}%Separation pour conserver le lien avec les équations.
\defKV[ClesModeleBarre]{Longueur=\setKV[ClesModeleBarre]{Homogene}}%
\defKV[ClesModeleBarre]{AccoladesH=\setKV[ClesModeleBarre]{MultiplicatifH}\setKV[ClesModeleBarre]{Multiplicatif}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMosaique.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMosaique.tex
index 91936d597b1..af964995ef7 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMosaique.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMosaique.tex
@@ -1,6 +1,10 @@
%%%
% Mosaique
%%%
+\def\filedateMosaique{2024/08/04}%
+\def\fileversionMosaique{0.1}%
+\message{-- \filedateMosaique\space v\fileversionMosaique}%
+%
\setKVdefault[ClesMosaique]{Largeur=2,Hauteur=2,Solution=false,Type=1,Label,Echelle=1cm}
\newcommand\DessineMosaique[2][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex
index 0929b761971..088f417c35d 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex
@@ -1,6 +1,10 @@
%%%
% Mots Cod\'es
%%%
+\def\filedateMotsCodes{2024/08/04}%
+\def\fileversionMotsCodes{0.1}%
+\message{-- \filedateMotsCodes\space v\fileversionMotsCodes}%
+%
\setKVdefault[MotsCodes]{LargeurT=1cm,Colonnes=5,Largeur=3cm,Solution=false,Math=false}%
\newcommand\MotsCodes[2][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMotsCroises.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMotsCroises.tex
index 4e6734dd7b4..5310516799b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMotsCroises.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMotsCroises.tex
@@ -1,6 +1,10 @@
%%%
% Mots croisés
%%%
+\def\filedateMotsCroises{2024/08/04}%
+\def\fileversionMotsCroises{0.1}%
+\message{-- \filedateMotsCroises\space v\fileversionMotsCroises}%
+%
\setKVdefault[ClesCroises]{Lignes=6,Colonnes=8,Solution=false,Croises=false,Couleur=gray,Largeur=1em}
\newcounter{PfCLettreHorizontal}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMotsEmpiles.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMotsEmpiles.tex
index 1c42d433a6a..c8ec37bc5d8 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMotsEmpiles.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMotsEmpiles.tex
@@ -1,6 +1,10 @@
%%%
% Mots empilés
%%%
+\def\filedateMotsEmpiles{2024/08/04}%
+\def\fileversionMotsEmpiles{0.1}%
+\message{-- \filedateMotsEmpiles\space v\fileversionMotsEmpiles}%
+%
\setKVdefault[ClesMotEmpile]{Colonne=4,Solution=false,Couleur=black}
\newcounter{CompteurMotEmpile}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex
index 27156c00b7f..99425418732 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex
@@ -1,6 +1,10 @@
%%%
% Mulart
%%%
+\def\filedateMulArt{2024/08/04}%
+\def\fileversionMulArt{0.1}%
+\message{-- \filedateMulArt\space v\fileversionMulArt}%
+%
\setKVdefault[TabMul]{Multiple=2,Cibles=false,Largeur=20pt,Couleurs=false,Graines=false,Operations=false,Enonce=false,SchemaEnonce=false}
\defKV[TabMul]{Couleur=\setKV[TabMul]{Couleurs}}
\defKV[TabMul]{Graine=\setKV[TabMul]{Graines}\PfCGraineAlea{#1}}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMulJal.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMulJal.tex
index befce7a1106..3f9ba37758d 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMulJal.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMulJal.tex
@@ -1,6 +1,10 @@
%%%
% Multiplication par jalousie
%%%
+\def\filedateMulJal{2024/08/04}%
+\def\fileversionMulJal{0.1}%
+\message{-- \filedateMulJal\space v\fileversionMulJal}%
+%
\setKVdefault[MulJal]{Solution=false,CouleurTab=gray!15}%
\defKV[MulJal]{CouleurSolution=\setKV[MulJal]{Solution}}%
%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMulJap.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMulJap.tex
index e0457471e18..8fdf37c5b30 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMulJap.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMulJap.tex
@@ -1,6 +1,10 @@
%%%
% Multiplication Japonaise
%%%
+\def\filedateMulJap{2024/08/04}%
+\def\fileversionMulJap{0.1}%
+\message{-- \filedateMulJap\space v\fileversionMulJap}%
+%
\setKVdefault[MulJap]{Couleur=Orange,Bloc=false,DessinSeul=false}
\defKV[MulJap]{CouleurBloc=\setKV[MulJap]{Bloc}}
@@ -229,5 +233,6 @@
endfor;
fi;
\end{mplibcode}
+ \mplibnumbersystem{scaled}
\fi
}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMulPiecesPuzzle.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMulPiecesPuzzle.tex
index 56a7ad6943b..aaf98ffe6ac 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMulPiecesPuzzle.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMulPiecesPuzzle.tex
@@ -1,12 +1,16 @@
%%%
% Pièces de puzzle pour multiplication
%%%
+\def\filedateMulPiecesPuzzle{2024/08/04}%
+\def\fileversionMulPiecesPuzzle{0.1}%
+\message{-- \filedateMulPiecesPuzzle\space v\fileversionMulPiecesPuzzle}%
+%
%https://mirror.gutenberg-asso.fr/tex.loria.fr/prod-graph/metafun.pdf
\newtoks\toklistepuzzlea%
\def\UpdatetoksPuzzleA#1\nil{\addtotok\toklistepuzzlea{"#1",}}%
-\setKVdefault[ClesPuzzleMul]{Solution=false,Unite=1cm,Couleur=LightSteelBlue}
+\setKVdefault[ClesPuzzleMul]{Solution=false,Unite=1cm,Couleur=LightSteelBlue,Cube=false}
\NewDocumentCommand\PuzzleMul{om}{%
\useKVdefault[ClesPuzzleMul]%
@@ -17,8 +21,12 @@
\xdef\HauteurPuzzle{\PfCListePuzzlelen}%
\toklistepuzzlea{}%
\foreachitem\compteur\in\PfCListePuzzle{\expandafter\UpdatetoksPuzzleA\compteur\nil}%
- \BuildPuzzle{\the\toklistepuzzlea}%
-}
+ \ifboolKV[ClesPuzzleMul]{Cube}{%
+ \BuildPuzzleEspace{\the\toklistepuzzlea}%
+ }{%
+ \BuildPuzzle{\the\toklistepuzzlea}%
+ }%
+}%
\def\BuildPuzzleCode{%
def PreDrawPuzzle ( expr ww, hh, uu ) =
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCNombreAstral.tex b/Master/texmf-dist/tex/latex/profcollege/PfCNombreAstral.tex
index 428cd8d37c7..df1903bc0ea 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCNombreAstral.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCNombreAstral.tex
@@ -1,6 +1,10 @@
%%%
% Nombre Astral
%%%
+\def\filedateNombreAstral{2024/08/04}%
+\def\fileversionNombreAstral{0.1}%
+\message{-- \filedateNombreAstral\space v\fileversionNombreAstral}%
+%
\setKVdefault[NombreAstral]{Solution=false,Graines=false,Echelle=1,Couleur=LightSteelBlue,Horizontal=false}
\defKV[NombreAstral]{Graine=\setKV[NombreAstral]{Graines}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCNonogramme.tex b/Master/texmf-dist/tex/latex/profcollege/PfCNonogramme.tex
index 8adfbd5654e..d63fd9c70f1 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCNonogramme.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCNonogramme.tex
@@ -1,3 +1,10 @@
+%%%
+% Nonogramme
+%%%
+\def\filedateNonogramme{2024/08/04}%
+\def\fileversionNonogramme{0.1}%
+\message{-- \filedateNonogramme\space v\fileversionNonogramme}%
+%
\setKVdefault[Nono]{Largeur=10pt,Taille=5,Unite=1cm,Solution=false,Enonce=true}
\newtoks\toklistenonoa%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex b/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex
index 117c2a09059..265beb92f9b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex
@@ -1,6 +1,10 @@
%%%
% Fonction
%%%
+\def\filedateFonction{2024/08/04}%
+\def\fileversionFonction{0.1}%
+\message{-- \filedateFonction\space v\fileversionFonction}%
+%
\setKVdefault[ClesFonction]{Nom=f,Variable=x,Calcul=x,Tableau=false,Largeur=5mm,Ecriture=false,Definition=false,Points=false,Tangentes=false,PasX=1,PasY=1,UniteX=1,UniteY=1,Prolonge=false,Trace=false,Catmull=false,Splines=false,Lagrange=false,Epaisseur=1,Couleur=black,CouleurTrace=black,PointsCourbe=true,Codes=false,Origine={(0,0)},Vide=false}
\defKV[ClesFonction]{Traces=\setKV[ClesFonction]{Codes}}%
@@ -22,18 +26,20 @@
\setKV[TraceG]{#1}%
\tokPfCListeDesFonctions{}%
\tokPfCListeDesNomsFonctions{}%
- \xdef\PfCFooFn{\useKV[ClesFonction]{Calcul}}
- \xdef\PfCFooNomFn{\useKV[TraceG]{NomCourbe}}
+ \xdef\PfCFooFn{\useKV[ClesFonction]{Calcul}}%
+ \xdef\PfCFooNomFn{\useKV[TraceG]{NomCourbe}}%
\ifx\bla\PfCFooFn\bla%
- \else
- \readlist*\ListeDesFonctions{\PfCFooFn}
+ \else%
+ \setsepchar{,}\ignoreemptyitems
+ \readlist*\ListeDesFonctions{\PfCFooFn}%
+ \reademptyitems
\foreachitem\compteur\in\ListeDesFonctions{\expandafter\UpdatePfCListeDesFonctions\compteur\nil}%
- \fi
- \ifx\bla\PfCFooNomFn\bla
- \else
- \readlist*\ListeDesNomsFonctions{\PfCFooNomFn}
+ \fi%
+ \ifx\bla\PfCFooNomFn\bla%
+ \else%
+ \readlist*\ListeDesNomsFonctions{\PfCFooNomFn}%
\foreachitem\compteur\in\ListeDesNomsFonctions{\expandafter\UpdatePfCListeDesNomsFonctions\compteur\nil}%
- \fi
+ \fi%
\tokPfCLabelX{}%
\tokPfCLabelY{}%
\addtotok\tokPfCLabelX{"\useKV[TraceG]{LabelX}"}%
@@ -79,7 +85,7 @@
\MPCourbeNew{\PfCFooListePoints}%
}%
}%
- }
+ }%
}{%
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeFonction{#2}%
@@ -1247,6 +1253,17 @@ vardef Lagrange(expr valeur)(text t)=
%
RetiensCouleur(\useKV[TraceG]{CouleurTrace});
%
+ numeric styletrace[];
+ vardef RetiensStyle(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ styletrace[n]=p_;
+ endfor;
+ enddef;
+ %
+ RetiensStyle(\useKV[TraceG]{StyleTrace});
+ %
pair Origine,DecalageOrigine;
Origine=(xmin,ymin)+\useKV[TraceG]{Origine};
DecalageOrigine=\useKV[TraceG]{Origine};
@@ -1303,6 +1320,19 @@ vardef Lagrange(expr valeur)(text t)=
n:=0;
for p_=texto:
n:=n+1;
+ if unknown styletrace[n]:
+ drawoptions();
+ else:
+ if styletrace[n]=1:
+ drawoptions(dashed evenly);
+ elseif styletrace[n]=2:
+ drawoptions(dashed withdots);
+ elseif styletrace[n]=3:
+ drawoptions(dashed dashpattern(on6 off3 on1.5 off3));
+ else:
+ drawoptions();
+ fi;
+ fi;
draw courbe[n](borneinf[n],bornesup[n],100)(scantokens p_) withpen (pencircle scaled Epaisseur) withcolor if unknown colortrace[n]:black else: colortrace[n] fi;
endfor;
enddef;
@@ -1417,6 +1447,9 @@ vardef Lagrange(expr valeur)(text t)=
trace u*(xmin-grillex,k)--u*(xmax+grillex,k);
endfor;
drawoptions();
+ else:
+ grillex:=0;
+ grilley:=0;
fi;
if Graduations:
for k=gradx step gradx until (((xmax-xmin)-xpart(DecalageOrigine))*pasx):
@@ -1468,11 +1501,12 @@ vardef Lagrange(expr valeur)(text t)=
else:
DessineCourbes(#1);
NommeCourbes(#2);
- if Grille:
clip currentpicture to polygone(u*(xmin-grillex,ymin-grilley),u*(xmax+grillex,ymin-grilley),u*(xmax+grillex,ymax+grilley),u*(xmin-grillex,ymax+grilley));
+ if Grille:
+ %clip currentpicture to polygone(u*(xmin-grillex,ymin-grilley),u*(xmax+grillex,ymin-grilley),u*(xmax+grillex,ymax+grilley),u*(xmin-grillex,ymax+grilley));
draw polygone(u*(xmin-grillex,ymin-grilley),u*(xmax+grillex,ymin-grilley),u*(xmax+grillex,ymax+grilley),u*(xmin-grillex,ymax+grilley)) withcolor 0.75white;
else:
- clip currentpicture to polygone(u*(xmin,ymin),u*(xmax,ymin),u*(xmax,ymax),u*(xmin,ymax));
+ %clip currentpicture to polygone(u*(xmin,ymin),u*(xmax,ymin),u*(xmax,ymax),u*(xmin,ymax));
fi;
%
if Code:
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCNumberHive.tex b/Master/texmf-dist/tex/latex/profcollege/PfCNumberHive.tex
index ee37a5b2f18..96019b3d831 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCNumberHive.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCNumberHive.tex
@@ -1,6 +1,10 @@
%%%
% Number Hive
%%%
+\def\filedateNumberHive{2024/08/04}%
+\def\fileversionNumberHive{0.1}%
+\message{-- \filedateNumberHive\space v\fileversionNumberHive}%
+%
\setKVdefault[NumberHive]{Negatif=false,Produit=false,Niveau=8,Double=false,ListeCouleurs={Cornsilk,LightSteelBlue},CouleurCase=false,Jeton=false,Graines=false,Aide=false,UniteHexa=6mm}%
\defKV[NumberHive]{Cases=\setKV[NumberHive]{CouleurCase}}%
\defKV[NumberHive]{Jetons=\setKV[NumberHive]{Jeton}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex b/Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex
index a864165fba1..b9560bb504b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex
@@ -1,3 +1,10 @@
+%%%
+% Numerations anciennes
+%%%
+\def\filedateNumAnciennes{2024/08/04}%
+\def\fileversionNumAnciennes{0.1}%
+\message{-- \filedateNumAnciennes\space v\fileversionNumAnciennes}%
+%
\setKVdefault[NumerationAncienne]{Couleur=black}%
\NewDocumentCommand\Chinoise{om}{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCOperationsTrou.tex b/Master/texmf-dist/tex/latex/profcollege/PfCOperationsTrou.tex
index 347ca499bcf..ca9f72976e9 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCOperationsTrou.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCOperationsTrou.tex
@@ -1,11 +1,11 @@
%%%
% Op\'erations pos\'es à trou
%%%
-%% D'après https://tex.stackexchange.com/questions/277246/drawing-a-circle-around-the-numbers-in-xlop-package
-
-%\begin{document}%
+\def\filedateOpTrou{2024/08/04}%
+\def\fileversionOpTrou{0.1}%
+\message{-- \filedateOpTrou\space v\fileversionOpTrou}%
%
-%\end{document}
+%% D'après https://tex.stackexchange.com/questions/277246/drawing-a-circle-around-the-numbers-in-xlop-package
\newcommand\PfCchiffre[2]{\tikz[remember picture] \node[inner sep=0pt](#1){#2};}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPapiers.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPapiers.tex
index 0bb41363ec6..3929600a6e6 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPapiers.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPapiers.tex
@@ -1,6 +1,10 @@
%%%
% Papiers
%%%
+\def\filedatePapiers{2024/08/04}%
+\def\fileversionPapiers{0.1}%
+\message{-- \filedatePapiers\space v\fileversionPapiers}%
+%
\setKVdefault[Papiers]{Cinq=true,Seyes=false,Echelle=8,Isometrique=false,IsometriquePointe=false,Millimetre=false,Triangle=false,Largeur=5,Hauteur=4,Couleur=black,Grille=-1,GrillePointe=-1,PageEntiere=false,ZoneTexte=false,Baseline=false,CodeAfter=false}%
\defKV[Papiers]{Traces=\setKV[Papiers]{CodeAfter}}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPatronPaves.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPatronPaves.tex
index dfbd3a5d233..904f272411a 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPatronPaves.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPatronPaves.tex
@@ -1,7 +1,13 @@
%%%
% Patrons de pavés droits et cubes
%%%
-\setKVdefault[ClesPatron]{Cube,Arete=1cm,ListeCouleurs={white},Pave=false,Largeur=2cm,Hauteur=1.5cm,Profondeur=1cm,Codes=false}%
+\def\filedatePatronspaves{2024/08/04}%
+\def\fileversionPatronspaves{0.1}%
+\message{-- \filedatePatronspaves\space v\fileversionPatronspaves}%
+%
+\setKVdefault[ClesPatron]{Cube,Arete=1cm,ListeCouleurs={white},Pave=false,Largeur=2cm,Hauteur=1.5cm,Profondeur=1cm,Codes=false,AColorier=false}%
+%EcartColorier est en nombre de parts pour le cube, en mm pour le pavé.
+\defKV[ClesPatron]{EcartColorier=\setKV[ClesPatron]{AColorier}}%
\defKV[ClesPatron]{Traces=\setKV[ClesPatron]{Codes}}%
\newtoks\toklistepatron%
@@ -30,7 +36,7 @@
}%
}%
-\setsepchar{,}\ignoreemptyitems
+\setsepchar{,}\ignoreemptyitems%
\readlist*\ListePatronsCube{%
{ooxo,xxxx,ooxo},%
{oxoo,xxxx,xooo},%
@@ -78,7 +84,7 @@
{poho,lpho,poho,lohp},%
{poho,loho,plhl,loho},%
{poho,loho,plho,lohp},%
- {poho,loho,poho,lphp},%
+ {poho,loho,poho,lphp},%20
{phlh,holo,polo,holo},%
{phlo,holp,polo,holo},%
{phlo,holo,polh,holo},%
@@ -88,17 +94,17 @@
{polo,hplo,polo,holp},%
{polo,holo,phlh,holo},%
{polo,holo,phlo,holp},%
- {polo,holo,polo,hplp},%
+ {polo,holo,polo,hplp},%30
{hlpo,lopo,hopl,pool},%
{hopo,lhpo,hopl,pool},%
{hopo,lopo,hlph,pool},%
{lhpo,hopo,loph,pooh},%
{lopo,hlpo,loph,pooh},%
- {lopo,hopo,lhoh,pooh},%
+ {lopo,hopo,lhph,pooh},%
{plho,loho,pohl,hool},%
{poho,lpho,pohl,hool},%
{poho,loho,plhl,hool},%
- {lpho,poho,lohp,hoop},%
+ {lpho,poho,lohp,hoop},%40
{loho,plho,lohp,hoop},%
{loho,poho,lphp,hoop},%
{phlo,holo,polh,looh},%
@@ -108,23 +114,23 @@
{holo,phlo,holp,loop},%
{holo,polo,hplp,loop},%
{hpo,lpo,hpl,pol,hol},%
- {lpo,hpo,lph,poh,loh},%
- {pho,plo,phl,hol,pol},%
+ {lpo,hpo,lph,poh,loh},%50
+ {pho,lho,phl,hol,pol},%
{hpoo,lpho,pohl,hool},%
{lpoo,hplo,polh,looh},%
- {phoo,lhpo,hopl,pool}
-}
+ {phoo,lhpo,hopl,pool}%
+}%
\readlist*\ListePatronsPaveCouleurs{%
- {Orange,Crimson,Orange,LightGreen,Crimson,LightGreen},
- {Orange,Crimson,LightGreen,Orange,Crimson,LightGreen},
- {Orange,Crimson,LightGreen,Crimson,Orange,LightGreen},
- {Orange,Crimson,LightGreen,Crimson,LightGreen,Orange},
- {Crimson,Orange,LightGreen,Orange,Crimson,LightGreen},
- {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen},
- {Crimson,Orange,LightGreen,Crimson,LightGreen,Orange},
- {Crimson,LightGreen,Orange,Crimson,Orange,LightGreen},
- {Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},
+ {Orange,Crimson,Orange,LightGreen,Crimson,LightGreen},%
+ {Orange,Crimson,LightGreen,Orange,Crimson,LightGreen},%
+ {Orange,Crimson,LightGreen,Crimson,Orange,LightGreen},%
+ {Orange,Crimson,LightGreen,Crimson,LightGreen,Orange},%
+ {Crimson,Orange,LightGreen,Orange,Crimson,LightGreen},%
+ {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen},%
+ {Crimson,Orange,LightGreen,Crimson,LightGreen,Orange},%
+ {Crimson,LightGreen,Orange,Crimson,Orange,LightGreen},%
+ {Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},%
{Crimson,LightGreen,Crimson,Orange,LightGreen,Orange},%10
{LightGreen,Crimson,LightGreen,Orange,Crimson,Orange},%
{LightGreen,Crimson,Orange,LightGreen,Crimson,Orange},%
@@ -169,9 +175,277 @@
{Crimson,Orange,Crimson,LightGreen,Orange,LightGreen},%
{Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},%
{LightGreen,Crimson,Orange,LightGreen,Crimson,Orange},%
- {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen}%
+ {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen}%
+}%
+\reademptyitems%
+
+\def\MPPatronPaveCode{%
+ Largeur=\useKV[ClesPatron]{Largeur};
+ Hauteur=\useKV[ClesPatron]{Hauteur};
+ Profondeur=\useKV[ClesPatron]{Profondeur};
+ %
+ pair C[],M[],N[],O[],P[];
+ %
+ color Col[],CoulDefaut;
+ CoulDefaut=white;
+ %
+ boolean Codes,Allume[][],AColorier;
+ Codes=\useKV[ClesPatron]{Codes};
+ AColorier=\useKV[ClesPatron]{AColorier};
+ if AColorier:
+ EcartColorier=\useKV[ClesPatron]{EcartColorier}*1mm;
+ fi;
+ %
+ numeric DecalCol[];
+ %
+ vardef Allumage(text t)=
+ nblignes:=0;
+ for p_=t:
+ Long:=length p_;
+ nblignes:=nblignes+1;
+ for k=0 upto Long-1:
+ Allume[nblignes][k]=false;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef LectureLargeur(text t)=
+ for p_=t:
+ Long:=length p_;
+ endfor;
+ for k=1 upto Long-1:
+ for p_=t:
+ if substring(k,k+1) of p_="o":
+ if k=1:
+ if (substring(0,1) of p_="h") and (substring(1,2) of p_="p"):
+ DecalCol[k]:=Largeur;
+ fi;
+ if (substring(0,1) of p_="h") and (substring(1,2) of p_="l"):
+ DecalCol[k]:=Profondeur;
+ fi;
+ if (substring(0,1) of p_="p") and (substring(1,2) of p_="h"):
+ DecalCol[k]:=Largeur;
+ fi;
+ if (substring(0,1) of p_="p") and (substring(1,2) of p_="l"):
+ DecalCol[k]:=Hauteur;
+ fi;
+ if (substring(0,1) of p_="l") and (substring(1,2) of p_="h"):
+ DecalCol[k]:=Profondeur;
+ fi;
+ if (substring(0,1) of p_="l") and (substring(1,2) of p_="p"):
+ DecalCol[k]:=Hauteur;
+ fi;
+ fi;
+ elseif substring(k,k+1) of p_="l":
+ DecalCol[k]:=Largeur;
+ elseif substring(k,k+1) of p_="h":
+ DecalCol[k]:=Hauteur;
+ elseif substring(k,k+1) of p_="p":
+ DecalCol[k]:=Profondeur;
+ fi;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef Patron(text t)=
+ path PathPave;
+ nblignes:=-1;
+ NBLignes:=0;
+ nbcol:=0;
+ nbfaces:=0;
+ for p_=t:
+ Long:=length p_;
+ nbcolonnes:=0;
+ NBColonnes:=0;
+ if substring(0,1) of p_="h":
+ YEchelle:=Hauteur;
+ elseif substring(0,1) of p_="l":
+ YEchelle:=Largeur;
+ elseif substring(0,1) of p_="p":
+ YEchelle:=Profondeur;
+ fi;
+ nblignes:=nblignes-YEchelle;
+ NBLignes:=NBLignes+1;
+ for k=1 upto Long-1:
+ if substring(k,k+1) of p_="o":
+ if k=1:
+ PathPave:=(unitsquare scaled 0) shifted ((0,-1));
+ fi;
+ elseif substring(k,k+1) of p_="l":
+ nbcol:=nbcol+1;
+ PathPave:=(unitsquare xscaled Largeur yscaled YEchelle) shifted ((nbcolonnes,nblignes));
+ Allume[NBLignes][NBColonnes]:=true;
+ nbfaces:=nbfaces+1;
+ C[nbfaces]=center PathPave;
+ M[nbfaces]=point(0) of PathPave;
+ N[nbfaces]=point(1) of PathPave;
+ O[nbfaces]=point(2) of PathPave;
+ P[nbfaces]=point(3) of PathPave;
+ elseif substring(k,k+1) of p_="h":
+ nbcol:=nbcol+1;
+ PathPave:=(unitsquare xscaled Hauteur yscaled YEchelle) shifted ((nbcolonnes,nblignes));
+ Allume[NBLignes][NBColonnes]:=true;
+ nbfaces:=nbfaces+1;
+ C[nbfaces]=center PathPave;
+ M[nbfaces]=point(0) of PathPave;
+ N[nbfaces]=point(1) of PathPave;
+ O[nbfaces]=point(2) of PathPave;
+ P[nbfaces]=point(3) of PathPave;
+ elseif substring(k,k+1) of p_="p":
+ nbcol:=nbcol+1;
+ PathPave:=(unitsquare xscaled Profondeur yscaled YEchelle) shifted ((nbcolonnes,nblignes));
+ Allume[NBLignes][NBColonnes]:=true;
+ nbfaces:=nbfaces+1;
+ C[nbfaces]=center PathPave;
+ M[nbfaces]=point(0) of PathPave;
+ N[nbfaces]=point(1) of PathPave;
+ O[nbfaces]=point(2) of PathPave;
+ P[nbfaces]=point(3) of PathPave;
+ fi;
+ if (unknown Col[nbcol]):
+ else:
+ if Col[nbcol]=white:
+ else:
+ if AColorier=false:
+ fill PathPave withcolor Col[nbcol];
+ fi;
+ fi;
+ fi;
+ if nbfaces>0:
+ trace M[nbfaces]--P[nbfaces];
+ trace N[nbfaces]--O[nbfaces];
+ trace P[nbfaces]--O[nbfaces];
+ trace M[nbfaces]--N[nbfaces];
+ fi;
+ nbcolonnes:=nbcolonnes+DecalCol[k];
+ NBColonnes:=NBColonnes+1;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef EffectuerTraces=
+ if Codes:
+ \useKV[ClesPatron]{Traces};
+ fi;
+ enddef;
+}%
+
+\def\MPPatronPave#1#2{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ \MPPatronPaveCode
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=CoulDefaut;
+ fi;
+ endfor;
+ %
+ LectureLargeur(#1);
+ Allumage(#1);
+ if AColorier:
+ drawoptions(dashed evenly);
+ fi;
+ Patron(#1);
+ if AColorier:
+ drawoptions();
+ toto:=0;
+ for l=1 upto NBLignes:
+ for k=0 upto NBColonnes-1:
+ if Allume[l][k]:
+ toto:=toto+1;
+ % trait vertical gauche
+ if k=0:
+% trace M[toto]--P[toto];
+ tpoints:=floor(abs(M[toto]-P[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[M[toto],P[toto]])--((t/tpoints)[M[toto],P[toto]]+(2*unitvector(P[toto]-M[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l][k-1]=false:
+ % trace M[toto]--P[toto] dashed evenly;
+ tpoints:=floor(abs(M[toto]-P[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[M[toto],P[toto]])--((t/tpoints)[M[toto],P[toto]]+(2*unitvector(P[toto]-M[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+% % trait vertical droit
+ if k=Long-1:
+ % trace N[toto]--O[toto] dashed evenly;
+ tpoints:=floor(abs(N[toto]-O[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[N[toto],O[toto]])--((t/tpoints)[N[toto],O[toto]]+(2*unitvector(O[toto]-N[toto])) rotated 90);
+ endfor;
+ else:
+ if Allume[l][k+1]=false:
+ %% trace N[toto]--O[toto] dashed evenly;
+ tpoints:=floor(abs(N[toto]-O[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[N[toto],O[toto]])--((t/tpoints)[N[toto],O[toto]]+(2*unitvector(O[toto]-N[toto])) rotated 90);
+ endfor;
+ fi;
+ fi;
+% % trait horizontal haut
+ if l=1:
+ % trace P[toto]--O[toto] dashed evenly;
+ tpoints:=floor(abs(P[toto]-O[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[P[toto],O[toto]])--((t/tpoints)[P[toto],O[toto]]+(2*unitvector(O[toto]-P[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l-1][k]=false:
+ % trace P[toto]--O[toto] dashed evenly;
+ tpoints:=floor(abs(P[toto]-O[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[P[toto],O[toto]])--((t/tpoints)[P[toto],O[toto]]+(2*unitvector(O[toto]-P[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+% % trait horizontal bas
+ if l=NBLignes:
+ %% trace M[toto]--N[toto] dashed evenly;
+ tpoints:=floor(abs(M[toto]-N[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[M[toto],N[toto]])--((t/tpoints)[M[toto],N[toto]]+(2*unitvector(M[toto]-N[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l+1][k]=false:
+ %% trace M[toto]--N[toto] dashed evenly;
+ tpoints:=floor(abs(M[toto]-N[toto])/EcartColorier);
+ for t=1 upto tpoints-1:
+ trace ((t/tpoints)[M[toto],N[toto]])--((t/tpoints)[M[toto],N[toto]]+(2*unitvector(M[toto]-N[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ fi;
+ EffectuerTraces;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={\MPPatronPaveCode;}]
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=CoulDefaut;
+ fi;
+ endfor;
+ %
+ LectureLargeur(#1);
+ Patron(#1);
+ EffectuerTraces;
+ \end{mpost}
+ \fi
}%
-\reademptyitems
\def\MPPatronCubeCode{%
Arete=\useKV[ClesPatron]{Arete};
@@ -181,6 +455,185 @@
color Col[],CoulDefaut;
CoulDefaut=white;
%
+ boolean Codes,Allume[][],AColorier;
+ Codes=\useKV[ClesPatron]{Codes};
+ AColorier=\useKV[ClesPatron]{AColorier};
+ if AColorier:
+ EcartColorier=\useKV[ClesPatron]{EcartColorier};
+ fi;
+ %
+ vardef Allumage(text t)=
+ nblignes:=-1;
+ for p_=t:
+ Long:=length p_;
+ nblignes:=nblignes+1;
+ for k=0 upto Long-1:
+ Allume[nblignes][k]=false;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef Patron(text t)=
+ nblignes:=-1;
+ nbcol:=0;
+ nbfaces:=0;
+ for p_=t:
+ Long:=length p_;
+ nblignes:=nblignes+1;
+ nbcolonnes:=0;
+ for k=0 upto Long-1:
+ nbcolonnes:=nbcolonnes+1;
+ if substring(k,k+1) of p_="x":
+ Allume[nblignes][k]:=true;
+ nbfaces:=nbfaces+1;
+ nbcol:=nbcol+1;
+ if (unknown Col[nbcol]):
+ else:
+ if Col[nbcol]=white:
+ else:
+ if AColorier=false:
+ fill ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes))) withcolor Col[nbcol];
+ fi;
+ fi;
+ fi;
+ C[nbfaces]=(center unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes));
+ M[nbfaces]=point(0) of ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes)));
+ N[nbfaces]=point(1) of ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes)));
+ O[nbfaces]=point(2) of ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes)));
+ P[nbfaces]=point(3) of ((unitsquare scaled Arete) shifted (Arete*(nbcolonnes,-nblignes)));
+ trace M[nbfaces]--P[nbfaces];
+ trace N[nbfaces]--O[nbfaces];
+ trace P[nbfaces]--O[nbfaces];
+ trace M[nbfaces]--N[nbfaces];
+ fi;
+ endfor;
+ endfor;
+ enddef;
+ %
+ vardef EffectuerTraces=
+ if Codes:
+ \useKV[ClesPatron]{Traces};
+ fi;
+ enddef;
+}%
+
+\def\MPPatronCube#1#2{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ \MPPatronCubeCode
+ %
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=CoulDefaut;
+ fi;
+ endfor;
+ %
+ Allumage(#1);
+ if AColorier:
+ drawoptions(dashed withdots scaled 0.5);
+ fi;
+ Patron(#1);
+ if AColorier:
+ drawoptions();
+ toto:=0;
+ for l=0 upto nblignes:
+ for k=0 upto Long-1:
+ if Allume[l][k]:
+ toto:=toto+1;
+ % trait vertical gauche
+ if k=0:
+% trace M[toto]--P[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[M[toto],P[toto]])--((t/EcartColorier)[M[toto],P[toto]]+(2*unitvector(P[toto]-M[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l][k-1]=false:
+% trace M[toto]--P[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[M[toto],P[toto]])--((t/EcartColorier)[M[toto],P[toto]]+(2*unitvector(P[toto]-M[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+ % trait vertical droit
+ if k=Long-1:
+ % trace N[toto]--O[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[N[toto],O[toto]])--((t/EcartColorier)[N[toto],O[toto]]+(2*unitvector(O[toto]-N[toto])) rotated 90);
+ endfor;
+ else:
+ if Allume[l][k+1]=false:
+% trace N[toto]--O[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[N[toto],O[toto]])--((t/EcartColorier)[N[toto],O[toto]]+(2*unitvector(O[toto]-N[toto])) rotated 90);
+ endfor;
+ fi;
+ fi;
+ % trait horizontal haut
+ if l=0:
+% trace P[toto]--O[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[P[toto],O[toto]])--((t/EcartColorier)[P[toto],O[toto]]+(2*unitvector(O[toto]-P[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l-1][k]=false:
+% trace P[toto]--O[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[P[toto],O[toto]])--((t/EcartColorier)[P[toto],O[toto]]+(2*unitvector(O[toto]-P[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+ % trait horizontal bas
+ if l=nblignes:
+% trace M[toto]--N[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[M[toto],N[toto]])--((t/EcartColorier)[M[toto],N[toto]]+(2*unitvector(M[toto]-N[toto])) rotated -90);
+ endfor;
+ else:
+ if Allume[l+1][k]=false:
+% trace M[toto]--N[toto] dashed evenly;
+ for t=1 upto EcartColorier-1:
+ trace ((t/EcartColorier)[M[toto],N[toto]])--((t/EcartColorier)[M[toto],N[toto]]+(2*unitvector(M[toto]-N[toto])) rotated -90);
+ endfor;
+ fi;
+ fi;
+ fi;
+ endfor;
+ endfor;
+ fi;
+ EffectuerTraces;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={\MPPatronCubeCode;}]
+ %
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=CoulDefaut;
+ fi;
+ endfor;
+ %
+ Patron(#1);
+ EffectuerTraces;
+ \end{mpost}
+ \fi
+}
+
+\def\MPPatronCubeCodeold{%
+ Arete=\useKV[ClesPatron]{Arete};
+ %
+ pair C[],M[],N[],O[],P[];
+ %
+ color Col[],CoulDefaut;
+ CoulDefaut=white;
+ %
boolean Codes;
Codes=\useKV[ClesPatron]{Codes};
vardef Patron(text t)=
@@ -221,7 +674,7 @@
enddef;
}%
-\def\MPPatronCube#1#2{%
+\def\MPPatronCubeold#1#2{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
@@ -259,7 +712,7 @@
\fi
}
-\def\MPPatronPaveCode{%
+\def\MPPatronPaveCodeold{%
Largeur=\useKV[ClesPatron]{Largeur};
Hauteur=\useKV[ClesPatron]{Hauteur};
Profondeur=\useKV[ClesPatron]{Profondeur};
@@ -330,7 +783,7 @@
for k=1 upto Long-1:
if substring(k,k+1) of p_="o":
if k=1:
- PathPave:=(unitsquare scaled 0);
+ PathPave:=(unitsquare scaled 0) shifted ((0,-1));
fi;
elseif substring(k,k+1) of p_="l":
nbcol:=nbcol+1;
@@ -380,7 +833,7 @@
enddef;
}%
-\def\MPPatronPave#1#2{%
+\def\MPPatronPaveold#1#2{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
@@ -397,7 +850,7 @@
%
LectureLargeur(#1);
Patron(#1);
- EffectuerTraces;
+ %EffectuerTraces;
\end{mplibcode}
\else
\begin{mpost}[mpsettings={\MPPatronPaveCode;}]
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPattern.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPattern.tex
index 29fa45c08fe..fb6f0bf9f3a 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPattern.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPattern.tex
@@ -1,6 +1,10 @@
%%%
% Visual Pattern
%%%
+\def\filedatePattern{2024/08/04}%
+\def\fileversionPattern{0.1}%
+\message{-- \filedatePattern\space v\fileversionPattern}%
+%
\setKVdefault[Pattern]{Type=1,Etape=3}
\NewDocumentCommand\VisualPattern{o}{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPavage.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPavage.tex
index 2d25df1b990..4dabb044116 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPavage.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPavage.tex
@@ -1,6 +1,10 @@
%%%
% Pavage
%%%
+\def\filedatePavage{2024/08/04}%
+\def\fileversionPavage{0.1}%
+\message{-- \filedatePavage\space v\fileversionPavage}%
+%
\setKVdefault[Pavage]{%
Before=false,
Niveau=3,
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPixelArt.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPixelArt.tex
index 77eecfcb428..503e2e1182d 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPixelArt.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPixelArt.tex
@@ -1,11 +1,16 @@
%%%
% PixelArt
%%%
+\def\filedatePixelArt{2024/08/04}%
+\def\fileversionPixelArt{0.1}%
+\message{-- \filedatePixelArt\space v\fileversionPixelArt}%
+%
\newtoks\toklistePANombre%
\def\UpdatetoksPANombre#1\nil{\addtotok\toklistePANombre{"#1",}}%
-\setKVdefault[ClesPixelArt]{Largeur=29,Hauteur=29,Solution=false,Lettres=ABCDEFGHIJK,Nombres=false,ListeCouleurs={Orange,Red,LightGray,Maroon,Purple,black,black,Plum,Orange,White,White},Unite=5mm,Geant=false,HauteurD=1,LargeurD=1,Complet=false,Numero=1,Separations=false}%
+\setKVdefault[ClesPixelArt]{Largeur=29,Hauteur=29,Solution=false,Lettres=ABCDEFGHIJK,Nombres=false,ListeCouleurs={Orange,Red,LightGray,Maroon,Purple,black,black,Plum,Orange,White,White},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[ClesPixelArt]{ListeNombres=\setKV[ClesPixelArt]{Nombres}}%
+\defKV[ClesPixelArt]{Graine=\setKV[ClesPixelArt]{Graines}}%
\NewDocumentCommand\PixelArt{o m}{%
\toklistePANombre{}%
@@ -26,17 +31,23 @@
}%
}%
}{%
- \quotient{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}%
- \modulo{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}%
-% quotient = \the\intquotient -- remainder = \the\remainder :
+% \quotient{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}%
+% \modulo{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Hauteur}/\useKV[ClesPixelArt]{HauteurD}}}%
+ \quotient{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Largeur}/\useKV[ClesPixelArt]{LargeurD}}}%
+ \modulo{\fpeval{\useKV[ClesPixelArt]{Numero}-1}}{\fpeval{\useKV[ClesPixelArt]{Largeur}/\useKV[ClesPixelArt]{LargeurD}}}%
+% quotient = \the\intquotient -- remainder = \the\remainder :\\
\BuildPixelArtGeant{#2}{\useKV[ClesPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePANombre}{\the\intquotient}{\the\remainder}%
}%
}{%
- \BuildPixelArt{#2}{\useKV[ClesPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePANombre}%
+ \ifboolKV[ClesPixelArt]{Deforme}{%
+ \BuildPixelArtDeforme{#2}{\useKV[ClesPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePANombre}%
+ }{%
+ \BuildPixelArt{#2}{\useKV[ClesPixelArt]{Lettres}}{\ListeAvantCouleurs}{\the\toklistePANombre}%
+ }%
}%
}%
-\NewDocumentCommand\BuildPixelArt{m m m m}{%
+\NewDocumentCommand\BuildPixelArtDeforme{m m m m}{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
@@ -46,6 +57,39 @@
hauteurd:=\useKV[ClesPixelArt]{HauteurD};
Unite:=\useKV[ClesPixelArt]{Unite};
+ %Deformation
+ Coefx=\useKV[ClesPixelArt]{Coefx};
+ Coefy=\useKV[ClesPixelArt]{Coefy};
+ boolean Borne,Graines;
+ Borne=\useKV[ClesPixelArt]{Borne};
+ Graines=\useKV[ClesPixelArt]{Graines};
+ if Graines:
+ randomseed:=\useKV[ClesPixelArt]{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[ClesPixelArt]{Solution};
Nombres:=\useKV[ClesPixelArt]{Nombres};
@@ -54,7 +98,7 @@
string BaseLettres;
BaseLettres=str #2;
numeric EchelleScale;
- EchelleScale=Unite/5mm;
+ EchelleScale=Unite/10mm;
color ColorEntier[],ColFond;
n:=0;
@@ -84,11 +128,107 @@
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));
+ 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,((l-1)*Unite,(h-1)*Unite));
+ 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");
+% 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;
+ \end{mplibcode}
+\fi
+}%
+
+\NewDocumentCommand\BuildPixelArt{m m m m}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ largeur:=\useKV[ClesPixelArt]{Largeur};
+ hauteur:=\useKV[ClesPixelArt]{Hauteur};
+ largeurd:=\useKV[ClesPixelArt]{LargeurD};
+ hauteurd:=\useKV[ClesPixelArt]{HauteurD};
+ Unite:=\useKV[ClesPixelArt]{Unite};
+
+ boolean Solution,Nombres,Separations;
+ Solution:=\useKV[ClesPixelArt]{Solution};
+ Nombres:=\useKV[ClesPixelArt]{Nombres};
+ Separations:=\useKV[ClesPixelArt]{Separations};
+
+ 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:
+ 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 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:
for m=0 upto (length BaseLettres-1):
@@ -99,7 +239,6 @@
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;
endfor;
closefrom nomfichier;
@@ -118,10 +257,12 @@
fi;
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={largeur:=\useKV[ClesPixelArt]{Largeur}; hauteur:=\useKV[ClesPixelArt]{Hauteur}; Unite:=\useKV[ClesPixelArt]{Unite}; boolean Solution,Nombres; Solution:=\useKV[ClesPixelArt]{Solution}; Nombres:=\useKV[ClesPixelArt]{Nombres};}]
+ \begin{mpost}[mpsettings={largeur:=\useKV[ClesPixelArt]{Largeur}; hauteur:=\useKV[ClesPixelArt]{Hauteur}; Unite:=\useKV[ClesPixelArt]{Unite}; boolean Solution,Nombres,Separations; Solution:=\useKV[ClesPixelArt]{Solution}; Nombres:=\useKV[ClesPixelArt]{Nombres}; Separations:=\useKV[ClesPixelArt]{Separations};}]
string BaseLettres;
BaseLettres=str #2;
-
+ numeric EchelleScale;
+ EchelleScale=Unite/5mm;
+
color ColorEntier[],ColFond;
n:=0;
for p_=#3:
@@ -131,13 +272,26 @@
string RetiensNombres[];
if Nombres:
- n:=0;
+ k:=0;
for p_=#4:
- n:=n+1;
- RetiensNombres[n]=p_;
+ 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(LATEX(RetiensNombres[k]) scaled EchelleScale,(0,0));
+ );
+ endfor;
+
vardef Lecturecsv(expr nomfichier)=
for h=hauteur downto 1:
string p_;
@@ -145,16 +299,15 @@
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:
- if Nombres:
for m=0 upto (length BaseLettres-1):
if (substring(p,p+1) of p_)=substring(m,m+1) of BaseLettres:
- label(LATEX(RetiensNombres[m+1]),((l-1)*Unite,(h-1)*Unite));
+ draw Etiquette[m+1] shifted((l-1)*Unite,(h-1)*Unite);
fi;
endfor;
- else:
- label(LATEX(substring(p,p+1) of p_),((l-1)*Unite,(h-1)*Unite));
+ fi;
fi;
if Solution:
for m=0 upto (length BaseLettres-1):
@@ -165,21 +318,30 @@
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;
endfor;
closefrom nomfichier;
enddef;
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;
\end{mpost}
\fi
-}
+}%
\NewDocumentCommand\BuildPixelArtGeant{m m m m m m}{%
- \ifluatex
- \mplibforcehmode
- \begin{mplibcode}
+ \ifluatex%
+ \mplibforcehmode%
+ \begin{mplibcode}%
largeur:=\useKV[ClesPixelArt]{Largeur};
hauteur:=\useKV[ClesPixelArt]{Hauteur};
largeurd:=\useKV[ClesPixelArt]{LargeurD};
@@ -251,5 +413,5 @@
Lecturecsv("#1");
\end{mplibcode}
- \fi
-} \ No newline at end of file
+ \fi%
+}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPourcentage.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPourcentage.tex
index 1f6f18b19b3..03177d14dc8 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPourcentage.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPourcentage.tex
@@ -1,6 +1,10 @@
%%%
% Application : pourcentage
%%%
+\def\filedatePourcentage{2024/08/04}%
+\def\fileversionPourcentage{0.1}%
+\message{-- \filedatePourcentage\space v\fileversionPourcentage}%
+%
\setKVdefault[ClesPourcentage]{Appliquer,Calculer=false,Augmenter=false,Reduire=false,Fractionnaire=false,Decimal,Formule=false,Concret=false,GrandeurA=Grandeur A,GrandeurB=Total,Largeur=1cm,MotReduction=diminution,AideTableau=false,ColorFill=white,CouleurTab=gray!15}
\defKV[ClesPourcentage]{Unite=\setKV[ClesPourcentage]{Concret}}
\newcommand\Pourcentage[3][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCProbaFrequence.tex b/Master/texmf-dist/tex/latex/profcollege/PfCProbaFrequence.tex
new file mode 100644
index 00000000000..e3a5f04b628
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCProbaFrequence.tex
@@ -0,0 +1,189 @@
+%%%
+% Probabilité et fréquence
+%%%
+\def\filedateProbaFrequence{2024/08/04}%
+\def\fileversionProbaFrequence{0.1}%
+\message{-- \filedateProbaFrequence\space v\fileversionProbaFrequence}%
+%
+\setKVdefault[PfCFrequence]{Couleur=false,Lancers=1,Legende=false}%
+\defKV[PfCFrequence]{ListeCouleurs=\setKV[PfCFrequence]{Couleur}}%
+\defKV[PfCFrequence]{Legendes=\setKV[PfCFrequence]{Legende}\setsepchar{,}\reademptyitems\readlist*\PfMListeLegendes{#1}\reademptyitems}%
+
+\newtoks\tokPfMListeObjets%
+\newtoks\tokPfMListeLegendes%
+\def\UpdatetoksObj#1\nil{\addtotok\tokPfMListeObjets{#1,}}%
+\def\UpdatetoksLegendes#1\nil{\addtotok\tokPfMListeLegendes{"#1",}}%
+
+\NewDocumentCommand\ProbaFrequence{om}{%
+ % #1 options
+ % #2 répartition
+ \tokPfMListeObjets{}%
+ \tokPfMListeLegendes{}%
+ \useKVdefault[PfCFrequence]%
+ \setKV[PfCFrequence]{#1}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\PfMListeObjets{#2}%
+ \reademptyitems%
+ \foreachitem\compteur\in\PfMListeObjets{\expandafter\UpdatetoksObj\compteur\nil}%
+ \ifboolKV[PfCFrequence]{Legende}{%
+ \foreachitem\compteur\in\PfMListeLegendes{\expandafter\UpdatetoksLegendes\compteur\nil}%
+ }{}%
+ \BuildFrequence{\the\tokPfMListeObjets}{\the\tokPfMListeLegendes}%
+}%
+
+\NewDocumentCommand\BuildFrequence{mm}{%
+ \ifluatex
+ \mplibnumbersystem{decimal}%
+ \begin{Geometrie}[CoinBG={u*(-5,0)},CoinHD={u*(7.5,7.5)}]%6 en ordonnee
+ Lancers = \useKV[PfCFrequence]{Lancers};
+ LegendeVide=0;
+ %
+ color Col[];
+ if \useKV[PfCFrequence]{Couleur}:
+ n:=0;
+ for p_=\useKV[PfCFrequence]{ListeCouleurs}:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ LegendeVide:=n;
+ fi;
+ endfor;
+ fi;
+ %
+ string Legende[];
+ vardef EcrireLegendes(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ if p_="":
+ LegendeVide:=n;
+ else:
+ Legende[n]=p_;
+ fi;
+ endfor;
+ n:=0;
+ enddef;
+ %
+ vardef LectureDonnees(text t)=
+ numeric A[];
+ numeric SommeTotale;
+ SommeTotale=0;
+ n:=0;
+ for p_=t:
+ n:=incr(n);
+ A[n]=p_;
+ SommeTotale:=SommeTotale+p_;
+ endfor;
+ total:=n;
+ enddef;
+ %
+ LectureDonnees(#1);
+ if \useKV[PfCFrequence]{Legende}:
+ EcrireLegendes(#2);
+ fi;
+ %
+ numeric borne[];
+ borne0=0;
+ for k=1 upto total:
+ borne[k]=borne[k-1]+A[k];
+ endfor;
+ %
+ x.u:=5mm;
+ y.u:=5mm;
+ quad.u:=5mm;
+ unites(1/(170*Lancers),5);
+ origine((1,4));
+ % grille
+ for k=1 upto 11:
+ draw (pp(0,0)--pp(0,1.1)) shifted(pp(k*Lancers*100,0)-pp(0,0)) withcolor gris;
+ draw (pp(0,0)--pp(Lancers*(1000+100),0)) shifted(pp(0,k/10)-pp(0,0)) withcolor gris;
+ endfor;
+ % axe
+ drawarrow pp(0,0)--pp(0,1.1);
+ drawarrow pp(0,0)--pp(Lancers*(1000+100),0);
+ % tiret
+ for k=1 upto 10:
+ draw (pp(k*Lancers*100,0)+u*(0,-0.05))--(pp(k*Lancers*100,0)+u*(0,0.05));
+ endfor;
+ numeric nb[],freq[];
+ pair Freq[][];
+ for k=1 upto total:
+ nb[k]:=0;
+ freq[k]=0;
+ endfor;
+ %
+ for k=1 upto (Lancers*1000):
+ nn:=floor(uniformdeviate(SommeTotale))+1;
+ if nn=0:
+ message("il est nul...");
+ fi;
+ for l=1 upto total:
+ if (nn>borne[l-1]) and (nn<borne[l]+1):
+ nb[l]:=nb[l]+1;
+ fi;
+ freq[l]:=nb[l]/k;
+ Freq[l][k]=pp(k,freq[l]);
+ endfor;
+ endfor;
+ %
+ def Style=enddef;
+ def Stylea=dashed evenly enddef;
+ def Styleb=dashed withdots scaled 1/2 enddef;
+ def Stylec=dashed dashpattern(on 1 off 1) enddef;
+ def Styled=dashed withdots scaled 1/4 enddef;
+ def Stylee=dashed dashpattern(on 6 off2) enddef;
+ parc:=0;
+ for l=1 upto total:
+ if \useKV[PfCFrequence]{Couleur}=false:
+ if (l mod 6)=1:
+ elseif (l mod 6)=2:
+ drawoptions(Stylea);
+ elseif (l mod 6)=3:
+ drawoptions(Styleb);
+ elseif (l mod 6)=4:
+ drawoptions(Stylec);
+ elseif (l mod 6)=5:
+ drawoptions(Styled);
+ else:
+ drawoptions(Stylee);
+ fi;
+ if \useKV[PfCFrequence]{Legende}:
+ parc:=incr(parc);
+ if l<>LegendeVide:
+ draw pp(Lancers*400*((parc-1) mod 3),-0.25-0.1*((parc-1) div 3))--pp(Lancers*400*((parc-1) mod 3)+125,-0.25-0.1*((parc-1) div 3));
+ label.rt(TEX(Legende[l]),pp(Lancers*400*((parc-1) mod 3)+125,-0.25-0.1*((parc-1) div 3)));
+ else:
+ parc:=parc-1;
+ fi;
+ fi;
+ fi;
+ %
+ if l<>LegendeVide:
+ if Lancers<1:
+ trace Freq[l][1]
+ for k=2 upto (1000*Lancers):
+ --Freq[l][k]
+ endfor withcolor if unknown Col[l]:black else:Col[l] fi;
+ else:
+ trace Freq[l][1]
+ for k=5 step 4 until (1000*Lancers):
+ --Freq[l][k]
+ endfor withcolor if unknown Col[l]:black else:Col[l] fi;
+ fi;
+ fi;
+ endfor;
+ drawoptions();
+ for k=1 upto 10 :
+ label.bot(TEX("\scriptsize\num{"&decimal((100*k)*Lancers)&"}"),pp(Lancers*100k,0));
+ endfor;
+ for k=2 step 2 until 10:
+ label.lft(TEX("\scriptsize\num{"&decimal(k/10)&"}"),pp(0,k/10));
+ endfor;
+ label.llft(TEX("\scriptsize 0"),pp(0,0));
+ label.urt(TEX("Fréquence"),pp(0,1));
+ label.bot(TEX("Nombre de lancers"),pp(0.5*Lancers*(1000+200),-0.075));
+ \end{Geometrie}
+ \mplibnumbersystem{scaled}
+ \fi
+}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCProbabilites.tex b/Master/texmf-dist/tex/latex/profcollege/PfCProbabilites.tex
index 7ed834a61ea..73bafa9ba27 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCProbabilites.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCProbabilites.tex
@@ -1,7 +1,11 @@
%%%
% Proba
%%%
-\setKVdefault[ClesProba]{Echelle=false,Arbre=false,Branche=2,Angle=60,Rayon=0.25,LongueurEchelle=5,Affichage=0,Grille=1,Incline}
+\def\filedateProba{2024/08/15}%
+\def\fileversionProba{0.1a}%
+\message{-- \filedateProba\space v\fileversionProba}%
+%
+\setKVdefault[ClesProba]{Echelle=false,Arbre=false,Branche=2,Angle=60,Rayon=0.25,LongueurEchelle=5,Affichage=0,Grille=1,Incline,SansProba=false}
\def\Updatetoksproba#1/#2\nil{\addtotok\toklistepointproba{"#1","\footnotesize #2",}}
\def\Updatetoksprobapdf#1/#2\nil{\addtotok\toklistepointproba{"#1","\noexpand\footnotesize #2",}}
@@ -35,6 +39,8 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ boolean SansProba;
+ SansProba=\useKV[ClesProba]{SansProba};
pair A,B,C[],D[];%les noeuds de l'arbre
%Figure(-10u,-10u,10u,10u);
A=u*(1,1);
@@ -58,8 +64,10 @@
fi;
marque_s:=marque_s*2;
labeloffset:=labeloffset*3;
+ if SansProba=false:
label.bot(btex 0 etex,A);
label.bot(btex 1 etex,B);
+ fi;
labeloffset:=labeloffset/3;
n:=1;%compter les informations
k:=1;% compter les informations noeud pour les placer
@@ -93,7 +101,7 @@
toto(#2);
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={input PfCGeometrie;}]
+ \begin{mpost}[mpsettings={input PfCGeometrie;boolean SansProba;SansProba=\useKV[ClesProba]{SansProba};}]
pair A,B,C[],D[];%les noeuds de l'arbre
Figure(-10u,-10u,10u,10u);
A=u*(1,1);
@@ -117,8 +125,10 @@
fi;
marque_s:=marque_s*2;
labeloffset:=labeloffset*3;
+ if SansProba=false:
label.bot(btex 0 etex,A);
label.bot(btex 1 etex,B);
+ fi;
labeloffset:=labeloffset/3;
n:=1;%compter les informations
k:=1;% compter les informations noeud pour les placer
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCProgrammeCalcul.tex b/Master/texmf-dist/tex/latex/profcollege/PfCProgrammeCalcul.tex
index f1bdc0307fe..871f80d6508 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCProgrammeCalcul.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCProgrammeCalcul.tex
@@ -1,6 +1,10 @@
%%%%
% Prog de calculs "simples"
%%%%
+\def\filedateProgCalcul{2024/08/04}%
+\def\fileversionProgCalcul{0.1}%
+\message{-- \filedateProgCalcul\space v\fileversionProgCalcul}%
+%
\setKVdefault[ClesProg]{%
Ecart=2em,%
Direct,%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex
index 1e6526f41b0..1c8aba3324b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex
@@ -1,6 +1,10 @@
%%%
% Proportionnalit\'e
%%%
+\def\filedatePropor{2024/09/04}%
+\def\fileversionPropor{0.1a}%
+\message{-- \filedatePropor\space v\fileversionPropor}%
+%
\setKVdefault[ClesPropor]{GrandeurA=Grandeur A,GrandeurB=Grandeur B,Largeur=1cm,Math=false,Stretch=1,ColorFill=white,CouleurTab=gray!15,Vertical=false,Simple=false,Condense=false}%
\tikzstyle{FlechePropor}=[-stealth]
@@ -201,49 +205,51 @@
\NewDocumentCommand\FlechePCG{mm}{%
\begin{tikzpicture}[remember picture,overlay,node distance=\getstrut\ht]%
- \node[inner sep=0pt] (MilieuH-#1) at ($(ProporG-#1)!0.25!(ProporD-#1)$) {};%
- \node[inner sep=0pt] (MilieuH-#2) at ($(ProporG-#2)!0.25!(ProporD-#2)$) {};%
- \node[inner sep=0pt] (MilieuB-#1) at ($(ProporG-#1)!0.75!(ProporD-#1)$) {};%
- \node[inner sep=0pt] (MilieuB-#2) at ($(ProporG-#2)!0.75!(ProporD-#2)$) {};%
+ \node[inner sep=0pt] (MilieuH-#1) at ($(ProporH-#1)!\PfCCoeffH!(ProporB-#1)$) {};%
+ \node[inner sep=0pt] (MilieuH-#2) at ($(ProporH-#2)!\PfCCoeffH!(ProporB-#2)$) {};%
+ \node[inner sep=0pt] (MilieuB-#1) at ($(ProporH-#1)!\PfCCoeffB!(ProporB-#1)$) {};%
+ \node[inner sep=0pt] (MilieuB-#2) at ($(ProporH-#2)!\PfCCoeffB!(ProporB-#2)$) {};%
\xintifboolexpr{#1<#2}{%
\coordinate[right of=MilieuH-#1] (aux1);%
- \coordinate[right of=MilieuH-#2] (aux2);%
- \coordinate[left of=MilieuB-#1] (aux3);%
+ \coordinate[left of=MilieuH-#2] (aux2);%
+ \coordinate[right of=MilieuB-#1] (aux3);%
\coordinate[left of=MilieuB-#2] (aux4);%
- \draw[out=30,in=-30,gray] (aux3) to (aux4);
+ \draw[FlechePropor,gray] (aux4) -- (aux1);
+ \draw[out=-30,in=30,gray] (aux2) to (aux4);
}{%
- \coordinate[right of=MilieuH-#1] (aux1);%
+ \coordinate[left of=MilieuH-#1] (aux1);%
\coordinate[right of=MilieuH-#2] (aux2);%
\coordinate[left of=MilieuB-#1] (aux3);%
- \coordinate[left of=MilieuB-#2] (aux4);%
- \draw[out=-30,in=30,gray] (aux3) to (aux4);
+ \coordinate[right of=MilieuB-#2] (aux4);%
+ \draw[FlechePropor,gray] (aux1) -- (aux4);
+ \draw[out=30,in=-30,gray] (aux3) to (aux1);
}%
\draw[gray] (aux2) -- (aux3);
- \draw[FlechePropor,gray] (aux4) -- (aux1);
\end{tikzpicture}%
}%
\NewDocumentCommand\FlechePCD{mm}{%
\begin{tikzpicture}[remember picture,overlay,node distance=\getstrut\ht]%
- \node[inner sep=0pt] (MilieuH-#1) at ($(ProporG-#1)!0.25!(ProporD-#1)$) {};%
- \node[inner sep=0pt] (MilieuH-#2) at ($(ProporG-#2)!0.25!(ProporD-#2)$) {};%
- \node[inner sep=0pt] (MilieuB-#1) at ($(ProporG-#1)!0.75!(ProporD-#1)$) {};%
- \node[inner sep=0pt] (MilieuB-#2) at ($(ProporG-#2)!0.75!(ProporD-#2)$) {};%
+ \node[inner sep=0pt] (MilieuH-#1) at ($(ProporH-#1)!\PfCCoeffH!(ProporB-#1)$) {};%
+ \node[inner sep=0pt] (MilieuH-#2) at ($(ProporH-#2)!\PfCCoeffH!(ProporB-#2)$) {};%
+ \node[inner sep=0pt] (MilieuB-#1) at ($(ProporH-#1)!\PfCCoeffB!(ProporB-#1)$) {};%
+ \node[inner sep=0pt] (MilieuB-#2) at ($(ProporH-#2)!\PfCCoeffB!(ProporB-#2)$) {};%
\xintifboolexpr{#1<#2}{%
\coordinate[right of=MilieuH-#1] (aux1);%
- \coordinate[right of=MilieuH-#2] (aux2);%
- \coordinate[left of=MilieuB-#1] (aux3);%
+ \coordinate[left of=MilieuH-#2] (aux2);%
+ \coordinate[right of=MilieuB-#1] (aux3);%
\coordinate[left of=MilieuB-#2] (aux4);%
- \draw[out=150,in=-150,gray] (aux1) to (aux2);
+ \draw[FlechePropor,gray] (aux3) -- (aux2);
+ \draw[out=-150,in=150,gray] (aux1) to (aux3);
}{%
- \coordinate[right of=MilieuH-#1] (aux1);%
+ \coordinate[left of=MilieuH-#1] (aux1);%
\coordinate[right of=MilieuH-#2] (aux2);%
\coordinate[left of=MilieuB-#1] (aux3);%
- \coordinate[left of=MilieuB-#2] (aux4);%
- \draw[out=-150,in=150,gray] (aux1) to (aux2);
+ \coordinate[right of=MilieuB-#2] (aux4);%
+ \draw[FlechePropor,gray] (aux2) -- (aux3);
+ \draw[out=-150,in=150,gray] (aux2) to (aux4);
}%
\draw[gray] (aux4) -- (aux1);
- \draw[FlechePropor,gray] (aux2) -- (aux3);
\end{tikzpicture}%
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCProprietesDroites.tex b/Master/texmf-dist/tex/latex/profcollege/PfCProprietesDroites.tex
index ad9f1b0edbe..fc74fea9c5a 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCProprietesDroites.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCProprietesDroites.tex
@@ -1,6 +1,10 @@
%%%
% Ppt\'es des droites (6eme)
%%%
+\def\filedatePptesDroites{2024/08/04}%
+\def\fileversionPptesDroites{0.1}%
+\message{-- \filedatePptesDroites\space v\fileversionPptesDroites}%
+%
\setKVdefault[ClesDroites]{Brouillon=false,CitePropriete=false,Num=1,Figure=false,Remediation=false,FigureSeule=false}
\newcommand\Redaction[4][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPuissanceQuatre.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPuissanceQuatre.tex
index 1d8a9299390..d51387cd78f 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPuissanceQuatre.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPuissanceQuatre.tex
@@ -1,30 +1,40 @@
%%%
% Puissances 4
%%%
-\setKVdefault[ClesPQuatre]{Couleur=Gray,Largeur=2cm,LargeurUn=2cm,Multiplication,Entier,Nombre,Exposant=false,Libre=false,Texte=false,Echelle=2}%
+\def\filedatePquatre{2024/08/04}%
+\def\fileversionPquatre{0.1}%
+\message{-- \filedatePquatre\space v\fileversionPquatre}%
+%
+\setKVdefault[ClesPQuatre]{Couleur=Gray,Largeur=2cm,LargeurUn=2cm,Multiplication,Entier,Nombre,Exposant=false,Libre=false,Texte=false,Echelle=2,Correction=false}%
\defKV[ClesPQuatre]{Addition=\setKV[ClesPQuatre]{Multiplication=false}}%
\defKV[ClesPQuatre]{Relatif=\setKV[ClesPQuatre]{Entier=false}}%
\defKV[ClesPQuatre]{Puissance=\setKV[ClesPQuatre]{Exposant}}%
\defKV[ClesPQuatre]{Autre=\setKV[ClesPQuatre]{Nombre=false}\setKV[ClesPQuatre]{Libre}}%
\defKV[ClesPQuatre]{Consignes=\setKV[ClesPQuatre]{Texte}}%
+\defKV[ClesPQuatre]{Solution=\setKV[ClesPQuatre]{Correction}\setsepchar{,}\ignoreemptyitems\readlist*\PQuatreListeS{#1}\reademptyitems}%
+\defKV[ClesPQuatre]{Graine=\PfCGraineAlea{#1}}%
\newtoks\toklistePQuatreh%
\newtoks\toklistePQuatrev%
+\newtoks\toklistePQuatres%
\def\UpdatetoksPQuatreh#1\nil{\addtotok\toklistePQuatreh{"#1",}}%
\def\UpdatetoksPQuatrev#1\nil{\addtotok\toklistePQuatrev{"#1",}}%
+\def\UpdatetoksPQuatres#1\nil{\addtotok\toklistePQuatres{"#1",}}%
\NewDocumentCommand\PQuatre{o +m}{%
\useKVdefault[ClesPQuatre]%
\toklistePQuatreh{}%
\toklistePQuatrev{}%
+ \toklistePQuatres{}%
\setKV[ClesPQuatre]{#1}%
\ifboolKV[ClesPQuatre]{Nombre}{%
\ifboolKV[ClesPQuatre]{Exposant}{%
- \def\PQuatreListe{$10^{-10}$,$10^{-9}$,$10^{-8}$,$10^{-7}$,$10^{-6}$,$10^{-5}$,$10^{-4}$,$10^{-3}$,$10^{-2}$,$10^{2}$,$10^{3}$,$10^{4}$,$10^{5}$,$10^{6}$,$10^{7}$,$10^{8}$,$10^{9}$,$10^{10}$}%
+ \def\PQuatreListe{-10,-9,-8,-7,-6,-5,-4,-3,-2,2,3,4,5,6,7,8,9,10}%
\MelangeListe{\PQuatreListe}{7}%
- \readlist*\PQuatreListeH{\faa}%
+ \ignoreemptyitems\readlist*\PQuatreListeH{\faa}%
\MelangeListe{\PQuatreListe}{7}%
- \readlist*\PQuatreListeV{\faa}%
+ \ignoreemptyitems\readlist*\PQuatreListeV{\faa}%
+ \reademptyitems
\foreachitem\compteur\in\PQuatreListeH{\expandafter\UpdatetoksPQuatreh\compteur\nil}%
\foreachitem\compteur\in\PQuatreListeV{\expandafter\UpdatetoksPQuatrev\compteur\nil}%
}{%
@@ -39,7 +49,7 @@
\foreachitem\compteur\in\PQuatreListeV{\expandafter\UpdatetoksPQuatrev\compteur\nil}%
}{%
% On choisit aléatoirement les listes de nombres de -10 à -2 union 2 à 10 en faisant deux listes : horizontale et verticale
- \def\PQuatreListe{$-10$,$-9$,$-8$,$-7$,$-6$,$-5$,$-4$,$-3$,$-2$,2,3,4,5,6,7,8,9,10}%
+ \def\PQuatreListe{-10,-9,-8,-7,-6,-5,-4,-3,-2,2,3,4,5,6,7,8,9,10}%
\MelangeListe{\PQuatreListe}{7}%
\readlist*\PQuatreListeH{\faa}%
\MelangeListe{\PQuatreListe}{7}%
@@ -55,6 +65,10 @@
\setsepchar{,}%
\foreachitem\compteur\in\PQuatreListes[1]{\expandafter\UpdatetoksPQuatrev\compteur\nil}%
\foreachitem\compteur\in\PQuatreListes[2]{\expandafter\UpdatetoksPQuatreh\compteur\nil}%
+ % On crée éventuellement la liste des solutions
+ \ifboolKV[ClesPQuatre]{Correction}{%
+ \foreachitem\compteur\in\PQuatreListeS{\expandafter\UpdatetoksPQuatres\compteur\nil}%
+ }{}%
}%
% Une fois les listes construites, on dessine et on place les listes.
\PQuatreGrille{\the\toklistePQuatrev}{\the\toklistePQuatreh}%
@@ -69,10 +83,12 @@
PQEchelle=\useKV[ClesPQuatre]{Echelle};
color PQfond;
PQfond=\useKV[ClesPQuatre]{Couleur};
- boolean PQLibre,PQMultiplication,PQTexte;
+ boolean PQLibre,PQMultiplication,PQTexte,Correction,Exposant;
PQLibre:=\useKV[ClesPQuatre]{Libre};
PQMultiplication=\useKV[ClesPQuatre]{Multiplication};
PQTexte:=\useKV[ClesPQuatre]{Texte};
+ Correction=\useKV[ClesPQuatre]{Correction};
+ Exposant=\useKV[ClesPQuatre]{Exposant};
if PQTexte:
string PQConsignes;
@@ -111,6 +127,12 @@
if PQLibre:
if PQTexte:
label.llft(TEX("\begin{minipage}{"&decimal(PQLargeurUn)&"pt}"&PQConsignes&"\end{minipage}") scaled PQEchelle,A);
+ else:
+ if PQMultiplication:
+ label.llft(TEX("$\times$") scaled PQEchelle,A);
+ else:
+ label.llft(TEX("$+$") scaled PQEchelle,A);
+ fi;
fi;
else:
if PQMultiplication:
@@ -119,24 +141,72 @@
label.llft(TEX("$+$") scaled PQEchelle,A);
fi;
fi;
+ %
+ string Textev[];
+ string Texteh[];
labeloffset:=labeloffset/2;
vardef Vertical(text t)=
n:=0;
for p_=t:
+ if PQLibre:
label.lft(TEX(p_) scaled PQEchelle,A+(0,n*PQLargeur+PQLargeur/2));
+ else:
+ if Exposant:
+ label.lft(TEX("$10^{"&p_&"}$") scaled PQEchelle,A+(0,n*PQLargeur+PQLargeur/2));
+ else:
+ label.lft(TEX("\num{"&p_&"}") scaled PQEchelle,A+(0,n*PQLargeur+PQLargeur/2));
+ fi;
+ Textev[n]=p_;
+ fi;
n:=n+1;
endfor;
enddef;
vardef Horizontal(text t)=
n:=0;
for p_=t:
+ if PQLibre:
label.bot(TEX(p_) scaled PQEchelle,A+(n*PQLargeur+PQLargeur/2,0));
+ else:
+ if Exposant:
+ label.bot(TEX("$10^{"&p_&"}$") scaled PQEchelle,A+(n*PQLargeur+PQLargeur/2,0));
+ else:
+ label.bot(TEX("\num{"&p_&"}") scaled PQEchelle,A+(n*PQLargeur+PQLargeur/2,0));
+ fi;
+ Texteh[n]=p_;
+ fi;
n:=n+1;
endfor;
enddef;
labeloffset:=labeloffset*4;
Vertical(#1);
Horizontal(#2);
+ % on affiche la solution
+ vardef AfficheSolution(text t)=
+ n:=0;
+ for p_=t:
+ label(TEX(p_),M[n mod nclargeur][n div nchauteur]);
+ n:=n+1;
+ endfor;
+ enddef;
+ if Correction:
+ if PQLibre=false:
+ for k=0 upto (nclargeur-1):
+ for l=0 upto (nchauteur-1):
+ if Exposant:
+ label(TEX("\Large$10^{\fpeval{"&Texteh[k]&"+"&Textev[l]&"}}$"),M[k][l]);
+ else:
+ if PQMultiplication:
+ label(TEX("\Huge\num{\fpeval{"&Texteh[k]&"*"&Textev[l]&"}}"),M[k][l]);
+ else:
+ label(TEX("\Huge\num{\fpeval{"&Texteh[k]&"+"&Textev[l]&"}}"),M[k][l]);
+ fi;
+ fi;
+ endfor;
+ endfor;
+ else:
+ AfficheSolution(\the\toklistePQuatres);
+ fi;
+ fi;
\end{mplibcode}
\else%
\begin{mpost}[mpsettings={Largeur=\useKV[ClesPQuatre]{Largeur};Largeur=\useKV[ClesPQuatre]{Largeur};LargeurUn=\useKV[ClesPQuatre]{LargeurUn};Echelle=\useKV[ClesPQuatre]{Echelle};color fond;fond=\useKV[ClesPQuatre]{Couleur};boolean Libre,Multiplication,Texte;Libre:=\useKV[ClesPQuatre]{Libre};Multiplication=\useKV[ClesPQuatre]{Multiplication};Texte:=\useKV[ClesPQuatre]{Texte};if Texte:string Consignes;Consignes=\useKV[ClesPQuatre]{Consignes};fi;}]
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPuzzleSommePyramide.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPuzzleSommePyramide.tex
index 7f00ac287e1..865982ee356 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPuzzleSommePyramide.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPuzzleSommePyramide.tex
@@ -1,6 +1,10 @@
%%%
% Puzzle Somme Pyramide
%%%
+\def\filedatePuzzleSommePyramide{2024/08/04}%
+\def\fileversionPuzzleSommePyramide{0.1}%
+\message{-- \filedatePuzzleSommePyramide\space v\fileversionPuzzleSommePyramide}%
+%
\setKVdefault[ClesPuzzleP]{Largeur=40pt,Etages=4,Graines=false,Solutions=false,Jeu,EnonceQuestion=false,NbLignes=7}
\defKV[ClesPuzzleP]{Graine=\setKV[ClesPuzzleP]{Graines}}%
\defKV[ClesPuzzleP]{Solution=\setKV[ClesPuzzleP]{Solutions}\setKV[ClesPuzzleP]{Jeu=false}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPyraVoca.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPyraVoca.tex
index bfda6963006..983a8b1eb95 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPyraVoca.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPyraVoca.tex
@@ -1,6 +1,10 @@
%%%
% PyraVoca
%%%
+\def\filedatePyraVoca{2024/08/04}%
+\def\fileversionPyraVoca{0.1}%
+\message{-- \filedatePyraVoca\space v\fileversionPyraVoca}%
+%
\newlength{\PfCPyraVocaHauteur}
\setKVdefault[PyraVoca]{Solution=false,Largeur=15pt}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPyramideCalculs.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPyramideCalculs.tex
index fdd5c7b6852..0b00e0e4acc 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPyramideCalculs.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPyramideCalculs.tex
@@ -1,6 +1,10 @@
%%%
% Pyramide de calculs
%%%
+\def\filedatePyraCalc{2024/08/04}%
+\def\fileversionPyraCalc{0.1}%
+\message{-- \filedatePyraCalc\space v\fileversionPyraCalc}%
+%
\newcommand\DessinePyramideNombreMul[1]{%
\ifluatex
\mplibforcehmode
@@ -241,7 +245,7 @@
\fi
}%
-\setKVdefault[ClesPyramide]{Etages=5,Largeur=2cm,Hauteur=1cm,Vide=false,Inverse=false,Double=false,Couleur=Crimson,Multiplication=false,CouleurNombre=blue,Produit=false,Solution=false,Aide=false,Cote=4cm}%
+\setKVdefault[ClesPyramide]{ToutesOperations=false,Etages=5,Largeur=2cm,Hauteur=1cm,Vide=false,Inverse=false,Double=false,Couleur=Crimson,Multiplication=false,CouleurNombre=blue,Produit=false,Solution=false,Aide=false,Cote=4cm}%
\newtoks\toklistecaseP%
\def\UpdatetoksPyramide#1\nil{\addtotok\toklistecaseP{"#1",}}%
@@ -250,6 +254,9 @@
\NewDocumentCommand\PyramideNombre{o m}{%
\useKVdefault[ClesPyramide]%
\setKV[ClesPyramide]{#1}%
+ \ifboolKV[ClesPyramide]{ToutesOperations}{%
+ \PyramideOp[#1]{#2}%
+ }{%
\ifboolKV[ClesPyramide]{Multiplication}{%
\ifx\bla#2\bla%
\setKV[ClesPyramide]{Vide=true}%
@@ -278,4 +285,302 @@
}{Le nombre d'éléments dans la liste des propositions n'est pas compatible avec le nombre d'étages choisi.}%
\fi%
}%
+}%
+}%
+
+\setKVdefault[PyramideOp]{Rayon=5mm,Graines=false,Etages=5,Solution=false,Relatifs=false,Case=-1}
+\defKV[PyramideOp]{Graine=\setKV[PyramideOp]{Graines}}
+\defKV[PyramideOp]{CouleurSolution=\setKV[PyramideOp]{Solution}}
+
+\NewDocumentCommand\PyramideOp{om}{%
+ \useKVdefault[PyramideOp]%
+ \setKV[PyramideOp]{#1}%
+ \ifboolKV[PyramideOp]{Relatifs}{%
+ \BuildPyramideOpRelatifs{#2}%
+ }{%
+ \BuildPyramideOp{#2}%
+ }%
+}%
+
+\NewDocumentCommand\BuildPyramideOp{m}{%
+ \ifluatex
+ \mplibforcehmode
+ \mplibnumbersystem{double}
+ \begin{mplibcode}
+ Etages=\useKV[PyramideOp]{Etages};
+ Rayon=\useKV[PyramideOp]{Rayon};
+ Case=\useKV[PyramideOp]{Case};
+
+ boolean Graines,Solution,Allume[][];
+
+ Graines=\useKV[PyramideOp]{Graines};
+ if Graines:
+ randomseed:=\useKV[PyramideOp]{Graine};
+ fi;
+
+ Solution=\useKV[PyramideOp]{Solution};
+ if Solution:
+ color CouleurSolution;
+ CouleurSolution=\useKV[PyramideOp]{CouleurSolution};
+ fi;
+
+ vardef ChoixOperation(expr Nba,Nbb)=
+ if (Nba<Nbb) or (Nba=Nbb):
+ if Nba*Nbb>200:
+ ChoixOp:=ceiling(uniformdeviate(1));
+ else:
+ ChoixOp:=ceiling(uniformdeviate(2));
+ fi;
+ else:
+ if (Nba mod Nbb)<>0:
+ if Nba*Nbb>200:
+ ChoixAlea:=uniformdeviate(1);
+ if ChoixAlea<0.5:
+ ChoixOp:=1;
+ else:
+ ChoixOp:=3;
+ fi;
+ else:
+ ChoixOp:=ceiling(uniformdeviate(3));
+ fi;
+ else:
+ if Nba*Nbb>200:
+ ChoixAlea:=uniformdeviate(1);
+ if ChoixAlea<0.5:
+ ChoixOp:=1;
+ else:
+ ChoixOp:=ceiling(2+uniformdeviate(2));
+ fi;
+ else:
+ ChoixOp:=ceiling(uniformdeviate(4));
+ fi;
+ fi;
+ fi;
+ enddef;
+
+ numeric Nb[][],ChoixOp[][];
+
+ pair M[][],N[][];
+
+ for k=0 upto Etages-1:
+ for l=0 upto Etages-1-k:
+ M[k][l]=Rayon*(1,1)+2*Rayon*(l,k)+k*2*Rayon*(0.5,-1+cosd(30));
+ Allume[k][l]=false;
+ endfor;
+ endfor;
+ for k=0 upto Etages-2:
+ for l=0 upto Etages-2-k:
+ N[k][l]=Rayon*(1,1)+(Rayon,0)+2*Rayon*(l,k)+k*2*Rayon*(0.5,-1+cosd(30));
+ endfor;
+ endfor;
+
+ n:=0;
+
+ for p_=#1:
+ Nb[0][n]=p_;
+ if n=Case:
+ if n<Etages-1:
+ Allume[1][n]:=true;
+ else:
+ Allume[1][n-1]:=true;
+ fi;
+ else:
+ Allume[0][n]:=true;
+ fi;
+ n:=n+1;
+ endfor;
+
+ string Op[][];
+
+ % Détermination des opérations et des valeurs à indiquer.
+ for k=0 upto Etages-1:
+ for l=0 upto Etages-2-k:
+ ChoixOperation(Nb[k][l],Nb[k][l+1]);
+ if ChoixOp=1:
+ Op[k][l]="$+$";
+ Nb[k+1][l]=Nb[k][l]+Nb[k][l+1];
+ elseif ChoixOp=2:
+ Op[k][l]="$\times$";
+ Nb[k+1][l]=Nb[k][l]*Nb[k][l+1];
+ elseif ChoixOp=3:
+ Op[k][l]="$\_$";
+ Nb[k+1][l]=Nb[k][l]-Nb[k][l+1];
+ elseif ChoixOp=4:
+ Op[k][l]="$\div$";
+ Nb[k+1][l]=Nb[k][l]/Nb[k][l+1];
+ fi;
+ endfor;
+ endfor;
+ %Affichage
+ for k=0 upto Etages-1:
+ for l=0 upto Etages-1-k:
+ if Allume[k][l]=false:
+ if Solution:
+ fill cercles(M[k][l],Rayon) withcolor CouleurSolution;
+ label(decimal(Nb[k][l]),M[k][l]);
+ fi;
+ else:
+ label(decimal(Nb[k][l]),M[k][l]);
+ fi;
+ trace cercles(M[k][l],Rayon);
+ endfor;
+ endfor;
+ for k=0 upto Etages-2:
+ for l=0 upto Etages-2-k:
+ fill cercles(N[k][l],2mm) withcolor 0.8white;
+ trace cercles(N[k][l],2mm);
+ label(TEX(Op[k][l]),N[k][l]);
+ endfor;
+ endfor;
+ \end{mplibcode}
+ \mplibnumbersystem{scaled}
+ \fi
+}
+
+\NewDocumentCommand\BuildPyramideOpRelatifs{m}{%
+ \ifluatex
+ \mplibforcehmode
+ \mplibnumbersystem{double}
+ \begin{mplibcode}
+ Etages=\useKV[PyramideOp]{Etages};
+ Rayon=\useKV[PyramideOp]{Rayon};
+ Case=\useKV[PyramideOp]{Case};
+
+ boolean Graines,Solution,Allume[][];
+
+ Graines=\useKV[PyramideOp]{Graines};
+ if Graines:
+ randomseed:=\useKV[PyramideOp]{Graine};
+ fi;
+
+ Solution=\useKV[PyramideOp]{Solution};
+ if Solution:
+ color CouleurSolution;
+ CouleurSolution=\useKV[PyramideOp]{CouleurSolution};
+ fi;
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ vardef ChoixOperation(expr Nba,Nbb)=
+ if (Nba=Nbb):
+ if Nba*Nbb>200:
+ ChoixOp:=ceiling(uniformdeviate(1));
+ else:
+ ChoixOp:=ceiling(uniformdeviate(2));
+ fi;
+ elseif (Nba+Nbb=0):
+ if abs(Nba*Nbb)>200:
+ ChoixOp:=3;
+ else:
+ ChoixAlea:=uniformdeviate(1);
+ if ChoixAlea<0.5:
+ ChoixOp:=2;
+ else:
+ ChoixOp:=3;
+ fi;
+ fi;
+ else:
+ if (abs(Nba) mod abs(Nbb))<>0:
+ if abs(Nba*Nbb)>200:
+ ChoixAlea:=uniformdeviate(1);
+ if ChoixAlea<0.5:
+ ChoixOp:=1;
+ else:
+ ChoixOp:=3;
+ fi;
+ else:
+ ChoixOp:=ceiling(uniformdeviate(3));
+ fi;
+ else:
+ if abs(Nba*Nbb)>200:
+ ChoixAlea:=uniformdeviate(1);
+ if ChoixAlea<0.5:
+ ChoixOp:=1;
+ else:
+ ChoixOp:=ceiling(2+uniformdeviate(2));
+ fi;
+ else:
+ ChoixOp:=ceiling(uniformdeviate(4));
+ fi;
+ fi;
+ fi;
+ enddef;
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ numeric Nb[][],ChoixOp[][];
+
+ pair M[][],N[][];
+
+ for k=0 upto Etages-1:
+ for l=0 upto Etages-1-k:
+ M[k][l]=Rayon*(1,1)+2*Rayon*(l,k)+k*2*Rayon*(0.5,-1+cosd(30));
+ Allume[k][l]=false;
+ endfor;
+ endfor;
+ for k=0 upto Etages-2:
+ for l=0 upto Etages-2-k:
+ N[k][l]=Rayon*(1,1)+(Rayon,0)+2*Rayon*(l,k)+k*2*Rayon*(0.5,-1+cosd(30));
+ endfor;
+ endfor;
+
+ n:=0;
+
+ for p_=#1:
+ Nb[0][n]=p_;
+ if n=Case:
+ if n<Etages-1:
+ Allume[1][n]:=true;
+ else:
+ Allume[1][n-1]:=true;
+ fi;
+ else:
+ Allume[0][n]:=true;
+ fi;
+ n:=n+1;
+ endfor;
+
+ string Op[][];
+
+ % Détermination des opérations et des valeurs à indiquer.
+ for k=0 upto Etages-1:
+ for l=0 upto Etages-2-k:
+ ChoixOperation(Nb[k][l],Nb[k][l+1]);
+ if ChoixOp=1:
+ Op[k][l]="$+$";
+ Nb[k+1][l]=Nb[k][l]+Nb[k][l+1];
+ elseif ChoixOp=2:
+ Op[k][l]="$\times$";
+ Nb[k+1][l]=Nb[k][l]*Nb[k][l+1];
+ elseif ChoixOp=3:
+ Op[k][l]="$\_$";
+ Nb[k+1][l]=Nb[k][l]-Nb[k][l+1];
+ elseif ChoixOp=4:
+ Op[k][l]="$\div$";
+ Nb[k+1][l]=Nb[k][l]/Nb[k][l+1];
+ fi;
+ endfor;
+ endfor;
+ %Affichage
+ for k=0 upto Etages-1:
+ for l=0 upto Etages-1-k:
+ if Allume[k][l]=false:
+ if Solution:
+ fill cercles(M[k][l],Rayon) withcolor CouleurSolution;
+ label(TEX("\num{"&decimal(Nb[k][l])&"}"),M[k][l]);
+ fi;
+ else:
+ label(TEX("\num{"&decimal(Nb[k][l])&"}"),M[k][l]);
+ fi;
+ trace cercles(M[k][l],Rayon);
+ endfor;
+ endfor;
+ for k=0 upto Etages-2:
+ for l=0 upto Etages-2-k:
+ fill cercles(N[k][l],2mm) withcolor 0.8white;
+ trace cercles(N[k][l],2mm);
+ label(TEX(Op[k][l]),N[k][l]);
+ endfor;
+ endfor;
+ \end{mplibcode}
+ \mplibnumbersystem{scaled}
+ \fi
}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex
index 5c922d98b04..f5c95d91e42 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex
@@ -1,6 +1,10 @@
%%%
% Le th\'eor\`eme de Pythagore
%%%
+\def\filedatePythagore{2024/08/04}%
+\def\fileversionPythagore{0.1}%
+\message{-- \filedatePythagore\space v\fileversionPythagore}%
+%
\setKVdefault[ClesPythagore]{Exact=false,AvantRacine=false,Racine=false,Entier=false,Egalite=false,Precision=2,Soustraction=false,Figure=false,FigureSeule=false,Angle=0,Echelle=1cm,Reciproque=false,ReciColonnes=false,Faible=false,Unite=cm,EnchaineA=false,EnchaineB=false,EnchaineC=false,Perso=false,AllPerso=false,SansMots=false,Decalage=5mm,ModeleCouleur=5}%
\defKV[ClesPythagore]{ValeurA=\setKV[ClesPythagore]{EnchaineA}}%
\defKV[ClesPythagore]{ValeurB=\setKV[ClesPythagore]{EnchaineB}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsFlash.tex b/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsFlash.tex
index 8edee39f164..5bcf626ddcf 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsFlash.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsFlash.tex
@@ -1,6 +1,10 @@
%%%
% Questions Flash
%%%
+\def\filedateQFlash{2024/08/04}%
+\def\fileversionQFlash{0.1}%
+\message{-- \filedateQFlash\space v\fileversionQFlash}%
+%
\tcbset{Expression/.style={colback=white,valign=center,left=0mm,right=0mm,top=1mm,bottom=1mm,colframe=white}}%
\tcbset{ExpressionSerie1/.style={colback=\useKV[ClesFlash]{Couleur1},left=0mm,right=0mm,top=1mm,bottom=1mm}}%
\tcbset{ExpressionSerie2/.style={colback=\useKV[ClesFlash]{Couleur2},left=0mm,right=0mm,top=1mm,bottom=1mm}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex b/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex
index 9745bb144c1..8aee438e624 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex
@@ -1,9 +1,16 @@
%%%
% R\'eponses \`a relier
%%%
+\def\filedateQRelier{2024/08/04}%
+\def\fileversionQRelier{0.1}%
+\message{-- \filedateQRelier\space v\fileversionQRelier}%
+%
\setKVdefault[ClesRelie]{Solution=false,LargeurG=5cm,LargeurD=2cm,Stretch=1.5,Ecart=2cm,Couleur=black}%
\defKV[ClesRelie]{Graine=\PfCGraineAlea{#1}}%
+\newcounter{NbRelie}%
+\newcounter{NbRelieD}
+
\NewDocumentCommand\Relie{som}{%
\useKVdefault[ClesRelie]%
\setKV[ClesRelie]{#2}%
@@ -33,7 +40,13 @@
\itemtomacro\ListeRelie[##1,1]\untest%
\ifx\bla\untest\bla%
\else%
- \tikz[remember picture,overlay]{\draw[PfCRelieCouleurTrace] (RelieG-##1) -- (RelieD-\ListeRelie[##1,3]);}%
+ \itemtomacro\ListeRelie[##1,3]\Foo
+ \setsepchar{-}\ignoreemptyitems%
+ \readlist*\ListeRelieReponses{\Foo}%
+ \reademptyitems
+ \foreachitem\compteur\in\ListeRelieReponses{%
+ \tikz[remember picture,overlay]{\draw[PfCRelieCouleurTrace] (RelieG-##1) -- (RelieD-\ListeRelieReponses[\compteurcnt]);}%
+ }
\fi
}%
}{%
@@ -41,49 +54,39 @@
}%
}%
-\newcommand\Relieold[2][]{%
- \useKVdefault[ClesRelie]%
- \setKV[ClesRelie]{#1}%
- \setsepchar[*]{,*/}\reademptyitems%
- \readlist*\ListeRelie{#2}%
- \ignoreemptyitems
- \buildtabrelie%
- \ifboolKV[ClesRelie]{Solution}{%
- \colorlet{PfCRelieCouleurTrace}{\useKV[ClesRelie]{Couleur}}%
- \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{%
- \itemtomacro\ListeRelie[##1,1]\untest
- \ifx\bla\untest\bla%
- \else
- \tikz[remember picture,overlay]{\draw[PfCRelieCouleurTrace] (RelieG-##1) -- (RelieD-\ListeRelie[##1,3]);}%
- \fi
- }%
- }{%
- }%
-}%
-
-\newcounter{NbRelie}%
-
\def\buildtabrelie{%
\setcounter{NbRelie}{0}%
+ \setcounter{NbRelieD}{0}%
\renewcommand{\arraystretch}{\useKV[ClesRelie]{Stretch}}%
- \begin{tabular}{p{\useKV[ClesRelie]{LargeurG}}cp{\useKV[ClesRelie]{Ecart}}>{\tikz[remember
- picture]{\node[name=RelieD-\theNbRelie,inner
- sep=0pt]{};\fill[] (RelieD-\theNbRelie) circle[radius=1.5pt]}}cp{\useKV[ClesRelie]{LargeurD}}}%
- \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{\ListeRelie[##1,1]\itemtomacro\ListeRelie[##1,1]\untest%
-\ifx\bla\untest\bla%
+ \begin{tabular}{p{\useKV[ClesRelie]{LargeurG}}cp{\useKV[ClesRelie]{Ecart}}cp{\useKV[ClesRelie]{LargeurD}}}%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{%
+ \ListeRelie[##1,1]\itemtomacro\ListeRelie[##1,1]\untest%
+ \ifx\bla\untest\bla%
\uppercase{&}\stepcounter{NbRelie}%
\else
\uppercase{&}\stepcounter{NbRelie}\tikz[remember
picture,overlay]{\node[name=RelieG-\theNbRelie,inner
sep=0pt]{};\fill[]
(RelieG-\theNbRelie) circle[radius=1.5pt];}
-\fi&&&\ListeRelie[##1,2]\\}%
+ \fi&&
+ \itemtomacro\ListeRelie[##1,2]\untest
+ \ifx\bla\untest\bla\else\stepcounter{NbRelieD}\tikz[remember
+ picture]{\node[name=RelieD-\theNbRelieD,inner
+ sep=0pt]{};\fill[] (RelieD-\theNbRelieD) circle[radius=1.5pt]}
+ \fi
+ &\itemtomacro\ListeRelie[##1,2]\untest%
+ \ifx\bla\untest\bla
+ \else
+ \ListeRelie[##1,2]
+ \fi\\}%
\end{tabular}%
- \setcounter{NbRelie}{0}%
+ %\setcounter{NbRelie}{0}%
+ %\setcounter{NbRelieD}{0}%
}%
\def\buildtabrelieauto{%
\setcounter{NbRelie}{0}%
+ \setcounter{NbRelieD}{0}%
\xdef\PfCFooListeNbQ{1}%
\xintFor* ##1 in{\xintSeq{2}{\ListeRelielen}}\do{%
\xdef\PfCFooListeNbQ{\PfCFooListeNbQ,##1}%
@@ -110,4 +113,5 @@
\fi&&&\itemtomacro\PfCListeReponsesMelangees[##1]\PfCNumReponses\ListeRelie[\PfCNumReponses,2]\\}%
\end{tabular}%
\setcounter{NbRelie}{0}%
-}% \ No newline at end of file
+}%
+
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCQuiSuisJe.tex b/Master/texmf-dist/tex/latex/profcollege/PfCQuiSuisJe.tex
index aa896d11856..119b5d0944c 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCQuiSuisJe.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCQuiSuisJe.tex
@@ -1,6 +1,10 @@
%%%
% Qui suis-je
%%%
+\def\filedateQsuisuisje{2024/08/04}%
+\def\fileversionQsuisuisje{0.1}%
+\message{-- \filedateQsuisuisje\space v\fileversionQsuisuisje}%
+%
\setKVdefault[Quisuisje]{Solution=false,Largeur=5mm,Colonnes=5,CodePerso=false,TexteA=Lettre,TexteB=R\'esultat du calcul}%
\newcommand\QuisuisjeEnonce{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRLE.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRLE.tex
index a8f035a577c..8fabde9116c 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRLE.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRLE.tex
@@ -1,6 +1,10 @@
%%%
% Codage RLE
%%%
+\def\filedateRLE{2024/08/04}%
+\def\fileversionRLE{0.1}%
+\message{-- \filedateRLE\space v\fileversionRLE}%
+%
\setKVdefault[RLE]{Largeur=10pt,Taille=5,Unite=1cm,Solution=false,Enonce=true}
\newtoks\toklisterle
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRangementNombres.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRangementNombres.tex
index 1c48ab8efcc..ca58c321fdb 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRangementNombres.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRangementNombres.tex
@@ -1,6 +1,10 @@
%%%
% Rangement des nombres
%%%
+\def\filedateRgtNb{2024/08/04}%
+\def\fileversionRgtNb{0.1}%
+\message{-- \filedateRgtNb\space v\fileversionRgtNb}%
+%
\setKVdefault[ClesRgt]{Croissant,Decroissant=false,Strict,Fraction=false,Details=false,Seul=false}%
\dtlexpandnewvalue%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRapido.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRapido.tex
index fa3a16bf7e7..cb24c2b4043 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRapido.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRapido.tex
@@ -1,6 +1,10 @@
%%%
% Rapido
%%%
+\def\filedateRapido{2024/08/04}%
+\def\fileversionRapido{0.1}%
+\message{-- \filedateRapido\space v\fileversionRapido}%
+%
%% D'après https://www.facebook.com/groups/994675223903586/user/100017057226847
%% et une programmation de Laurent Lassale-Carrere
\newcounter{PfCnexo}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRappelsFormules.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRappelsFormules.tex
index c2a4d959541..1d204baf909 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRappelsFormules.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRappelsFormules.tex
@@ -1,6 +1,10 @@
%%%
% Formules
%%%
+\def\filedateRapFormules{2024/08/04}%
+\def\fileversionRapFormules{0.1}%
+\message{-- \filedateRapFormules\space v\fileversionRapFormules}%
+%
\setKVdefault[ClesFormule]{Perimetre=false,Aire=false,Volume=false,Surface=carr\'e,Solide=pav\'e,Angle=0,Ancre={(0,0)},Largeur=5cm,Couleur=white,EchelleEspace=70,Echelle=1cm}
\def\MPFigureCarreCode{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRecyclage.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRecyclage.tex
index 371688f120c..f99ced507ff 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRecyclage.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRecyclage.tex
@@ -1,6 +1,10 @@
%%%
% Logos Recyclage
%%%
+\def\filedateRecyclage{2024/08/04}%
+\def\fileversionRecyclage{0.1}%
+\message{-- \filedateRecyclage\space v\fileversionRecyclage}%
+%
\setKVdefault[Recyclage]{Ticket,Papier=false,Verre=false,Bouteille=false,Carton=false,Couleurs}%
\defKV[Recyclage]{Couleur=\setKV[Recyclage]{Couleurs=false}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex b/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex
index 23e7bd2775b..d2dec508171 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex
@@ -1,6 +1,10 @@
%%%
% Reperage
%%%
+\def\filedateReperage{2024/08/04}%
+\def\fileversionReperage{0.1}%
+\message{-- \filedateReperage\space v\fileversionReperage}%
+%
\setKVdefault[ClesReperage]{Unitex=1,Pasx=1,Unitey=1,Pasy=1,Unitez=1,Pasz=1,DemiDroite=false,Droite=false,Plan=false,Trace=false,ListeSegment={},Espace=false,Sphere=false,AnglePhi=30,CouleurLa=white,CouleurLon=Tomato,AffichageUnites=true,MarquePrimaire=true,AffichageNom=false,AffichageGrad=false,AffichageAbs=0,AffichageCoord=false,LectureCoord=false,ValeurUnitex=1,ValeurUnitey=1,ValeurOrigine=0,NomOrigine=O,EchelleEspace=50,CouleurCoord=black,Thermometre=false,Mercure=false,CouleurMercure=black,Celsius,Kelvin=false,Farenheit=false,ValeurMin=-4000,ValeurMax=4000,ValeurMiny=-4000,ValeurMaxy=4000,Etages=4,Code=false,Globe=false,Rho=1500,Phi=22,Theta=10,CouleurE=orange,CouleurG=green,Axes=false,TypeProj="persp",Niveaux=false,Decale=false,Tiret=false,Cadre=false,ModeleCouleur=5,EchelleCroix=1,CouleurCroix=black}
\defKV[ClesReperage]{Traces=\setKV[ClesReperage]{Code}}%
\defKV[ClesReperage]{Niveau=\setKV[ClesReperage]{Etages=#1}\setKV[ClesReperage]{Niveaux}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRepresentationGraphique.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRepresentationGraphique.tex
index 390c1a9caac..47ed10c3761 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRepresentationGraphique.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRepresentationGraphique.tex
@@ -1,7 +1,11 @@
%%%
% Diff\'erentes représentations graphiques
%%%
-\setKVdefault[TraceG]{Millimetre=false,Grille=false,Graduations=false,PasGradX=1,PasGradY=1,PasGrilleX=1,PasGrilleY=1,Xmin=-5.5,Xmax=5.5,Xstep=1,Ymin=-5.5,Ymax=5.5,Ystep=1,Bornea=-5.5,Borneb=5.5,LabelX={},LabelY={},LegendeX=false,LegendeY=false,LabelC=0.5,NomCourbe={},Origine={(5.5,5.5)},Fonction=false,Points=false,Invisible=false,CouleurPoint=red,CouleurTrace=black,Epaisseur=1,Relie=false,RelieSegment=false,Marque=dot,Code=false,Vide=false,NbPointsCourbe=100,Tiret=false}%
+\def\filedateRepGraph{2024/08/20}%
+\def\fileversionRepGraph{0.1a}%
+\message{-- \filedateRepGraph\space v\fileversionRepGraph}%
+%
+\setKVdefault[TraceG]{Millimetre=false,Grille=false,Graduations=false,PasGradX=1,PasGradY=1,PasGrilleX=1,PasGrilleY=1,Xmin=-5.5,Xmax=5.5,Xstep=1,Ymin=-5.5,Ymax=5.5,Ystep=1,Bornea=-5.5,Borneb=5.5,LabelX={},LabelY={},LegendeX=false,LegendeY=false,LabelC=0.5,NomCourbe={},Origine={(5.5,5.5)},Fonction=false,Points=false,Invisible=false,CouleurPoint=red,CouleurTrace=black,Epaisseur=1,Relie=false,RelieSegment=false,Marque=dot,Code=false,Vide=false,NbPointsCourbe=100,Tiret=false,StyleTrace=0,Date=false}%
\defKV[TraceG]{Traces=\setKV[TraceG]{Code}}%
\defKV[TraceG]{LabelX=\setKV[TraceG]{LegendeX}}%
\defKV[TraceG]{LabelY=\setKV[TraceG]{LegendeY}}%
@@ -35,6 +39,8 @@
y.u=1cm/\useKV[TraceG]{Ystep};
grillex=\useKV[TraceG]{PasGrilleX};
grilley=\useKV[TraceG]{PasGrilleY};
+ pasgradx=\useKV[TraceG]{PasGradX};
+ pasgrady=\useKV[TraceG]{PasGradY};
pos=\useKV[TraceG]{LabelC};
marque_p:=str \useKV[TraceG]{Marque};
@@ -49,6 +55,9 @@
LegendeX:=\useKV[TraceG]{LegendeX};
LegendeY:=\useKV[TraceG]{LegendeY};
+ boolean Date;
+ Date=\useKV[TraceG]{Date};
+
boolean Relie;
Relie=\useKV[TraceG]{Relie};
@@ -73,12 +82,16 @@
fi;
if Graduations:
- for k=0 step grillex until (xmax-xmin):
+ for k=0 step pasgradx until (xmax-xmin):
trace ((0,-0.5mm)--(0,0.5mm)) shifted ((k*x.u,0) shifted Origine) withpen pencircle scaled1.25;
+ if Date:
+ label.bot(TEX(decimal(xmin+k)),(k*x.u,0) shifted Origine);
+ else:
label.bot(TEX("\num{"&decimal(xmin+k)&"}"),(k*x.u,0) shifted Origine);
+ fi;
endfor;
label.ulft(TEX("\num{"&decimal(ymin)&"}"),(0,0) shifted Origine);
- for k=grilley step grilley until (ymax-ymin):
+ for k=pasgrady step pasgrady until (ymax-ymin):
trace ((-0.5mm,0)--(0.5mm,0)) shifted ((0,k*y.u) shifted Origine) withpen pencircle scaled1.25;
label.lft(TEX("\num{"&decimal(ymin+k)&"}"),(0,k*y.u) shifted Origine);
endfor;
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterEntier.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterEntier.tex
index 9ab7b24341f..15f69191319 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterEntier.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterEntier.tex
@@ -1,6 +1,10 @@
%%%
% Représenter un entier dans une base
%%%
+\def\filedateRepEntier{2024/08/04}%
+\def\fileversionRepEntier{0.1}%
+\message{-- \filedateRepEntier\space v\fileversionRepEntier}%
+%
\setKVdefault[ClesRBase]{Base=10,Echelle=1,Unite=false,Compact=false,Impression=false,ListeCouleurs={Tomato,LightSteelBlue,LightGreen,Cornsilk}}%
\newcommand\RepresenterEntier[2][]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterFraction.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterFraction.tex
index 6660693348a..2beb3ee5ed3 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterFraction.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterFraction.tex
@@ -1,7 +1,11 @@
%%%
% Fractions
%%%
-\setKVdefault[ClesFraction]{Rayon=2cm,Disque,Regulier=false,Segment=false,Rectangle=false,Longueur=5cm,Largeur=2cm,Cotes=5,Triangle=false,Parts=3,Eprouvette=false,Couleur=green,Reponse=false,Multiple=1,Hachures=false,Epaisseur=1}
+\def\filedateRepFrac{2024/08/30}%
+\def\fileversionRepFrac{0.1a}%
+\message{-- \filedateRepFrac\space v\fileversionRepFrac}%
+%
+\setKVdefault[ClesFraction]{Rayon=2cm,Disque,Regulier=false,Segment=false,Rectangle=false,Longueur=5cm,Largeur=2cm,Cotes=5,Triangle=false,Parts=3,Eprouvette=false,Couleur=green,Reponse=false,Multiple=1,Hachures=false,Epaisseur=1,Aleatoire=false}
\def\MPFractionEprouvetteCode{%
Hauteur=\useKV[ClesFraction]{Longueur};
@@ -80,6 +84,7 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ % Pas d'aléa ici : l'eau ne peut pas être en lévitation :)
\MPFractionEprouvetteCode
trace eprouvette(#2,#1);
\end{mplibcode}
@@ -90,6 +95,107 @@
\fi
}
+\def\MPFractionRegulierCodeAlea{%
+ Rayon=\useKV[ClesFraction]{Rayon};
+ Cotes=\useKV[ClesFraction]{Cotes};
+ color ColPolyReg;
+ ColPolyReg=\useKV[ClesFraction]{Couleur};
+ boolean Hachures,Reponse;
+ Reponse=\useKV[ClesFraction]{Reponse};
+ Hachures=\useKV[ClesFraction]{Hachures};
+ Epaisseur=\useKV[ClesFraction]{Epaisseur};
+ pair O,A[],B[];
+ O=u*(0,0);
+ path cc,cd;
+ cc=cercles(O,Rayon);
+ for k=0 upto Cotes:
+ A[k]=pointarc(cc,k*(360/Cotes));
+ endfor;
+ cd=polygone(A0 for k=1 upto Cotes-1:,A[k] endfor);
+ path part[];
+ vardef FractionPolyReg(expr nume,deno)=
+ for k=0 upto deno:
+ B[k]=point(k*(Cotes/deno)) of cd;
+ dotlabel("",B[k]);
+ endfor;
+ for k=0 upto deno-1:
+ part[k]=O--B[k] for l=1 upto Cotes-1:if (B[k]--B[k+1]) intersectiontimes (O--A[l])<>(-1,-1):--A[l] fi endfor --B[k+1]--cycle;%O--arccercle(B[k],B[k+1],O)--cycle;
+ endfor;
+ m=(nume div deno);
+ if (nume mod deno)=0:m:=m-1; fi;
+ picture RetourFraction;
+ RetourFraction=image(%
+ Reste=((nume div deno)+1)*deno;
+ RetiensPart=0;
+ if Reponse:
+ if m>0:
+ for l=0 upto (m-1):
+ for k=0 upto deno-1:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(l*(2*Rayon+0.5cm,0)),1.5*360/deno,0.25,0) withcolor ColPolyReg;
+ else:
+ fill part[k] shifted(l*(2*Rayon+0.5cm,0)) withcolor ColPolyReg;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(l*(2*Rayon+0.5cm,0)),1.5*360/deno,0.25,0) withcolor ColPolyReg;
+ else:
+ fill part[k] shifted(l*(2*Rayon+0.5cm,0)) withcolor ColPolyReg;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ endfor;
+ fi;
+ for k=0 upto deno-1:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(m*(2*Rayon+0.5cm,0)),1.5*360/deno,0.25,0) withcolor ColPolyReg;
+ else:
+ fill part[k] shifted(m*(2*Rayon+0.5cm,0)) withcolor ColPolyReg;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(m*(2*Rayon+0.5cm,0)),1.5*360/deno,0.25,0) withcolor ColPolyReg;
+ else:
+ fill part[k] shifted(m*(2*Rayon+0.5cm,0)) withcolor ColPolyReg;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ fi;
+ drawoptions(withpen pencircle scaled Epaisseur);
+ for l=0 upto m:
+ draw cd shifted(l*(2*Rayon+0.5cm,0));
+ for k=0 upto (deno-1):
+ draw segment(O,B[k]) shifted(l*(2*Rayon+0.5cm,0));
+ endfor;
+ endfor;
+ drawoptions();
+ );
+ RetourFraction
+ enddef;
+}%
+
\def\MPFractionRegulierCode{%
Rayon=\useKV[ClesFraction]{Rayon};
Cotes=\useKV[ClesFraction]{Cotes};
@@ -168,7 +274,13 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ boolean Alea;
+ Alea=\useKV[ClesFraction]{Aleatoire};
+ if Alea:
+ \MPFractionRegulierCodeAlea;
+ else:
\MPFractionRegulierCode
+ fi;
trace FractionPolyReg(#1,#2);
\end{mplibcode}
\else
@@ -178,6 +290,122 @@
\fi
}%
+\def\MPFractionTriangleCodeAlea{%
+ Longueur:=\useKV[ClesFraction]{Longueur};
+ nbparts:=\useKV[ClesFraction]{Parts};
+ color ColTriangle;
+ ColTriangle=\useKV[ClesFraction]{Couleur};
+ boolean Hachures,Reponse;
+ Reponse=\useKV[ClesFraction]{Reponse};
+ Hachures=\useKV[ClesFraction]{Hachures};
+ Epaisseur=\useKV[ClesFraction]{Epaisseur};
+ nbtriangle=0;
+ %
+ vardef Ligne(expr longueur)=
+ for k=0 upto 2*(longueur-1):
+ nbtriangle:=nbtriangle+1;
+ if (k mod 2)=0:
+ M[nbtriangle]=(Tria shifted(0.5*k*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ else:
+ M[nbtriangle]=(Trir shifted(0.5*(k-1)*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ fi;
+ endfor;
+ enddef;
+ %
+ pair A,B,C;
+ A=u*(0.5,0.5);
+ B-A=(Longueur,0);
+ C=rotation(B,A,60);
+ %
+ path Tria,Trir,M[];
+ Tria=polygone(A,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+ Trir=symetrie(Tria,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+ %
+ for k=nbparts downto 1:
+ Ligne(k);
+ endfor;
+ %
+ picture FondTriangle;
+ FondTriangle=image(
+ for k=1 upto nbtriangle:
+ trace M[k];
+ endfor;
+ );
+ %
+ vardef FractionTriangle(expr nume,deno)=
+ m:=nume div deno;
+ if (nume mod deno)=0:
+ m:=m-1;
+ fi;
+ picture RetourFraction;
+ RetourFraction=image(
+ Reste=((nume div deno)+1)*deno;
+ RetiensPart=0;
+ if Reponse:
+ if m>0:
+ for l=0 upto (m-1):
+ for k=1 upto nbtriangle:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(M[k] shifted(l*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle;
+ else:
+ fill M[k] shifted(l*(Longueur+1cm,0)) withcolor ColTriangle;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(M[k] shifted(l*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle;
+ else:
+ fill M[k] shifted(l*(Longueur+1cm,0)) withcolor ColTriangle;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ endfor;
+ fi;
+ for k=1 upto nbtriangle:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(M[k] shifted(m*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle;
+ else:
+ fill M[k] shifted(m*(Longueur+1cm,0)) withcolor ColTriangle;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(M[k] shifted(m*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle;
+ else:
+ fill M[k] shifted(m*(Longueur+1cm,0)) withcolor ColTriangle;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ fi;
+ drawoptions(withpen pencircle scaled Epaisseur);
+ for l=0 upto m:
+ trace FondTriangle shifted(l*(Longueur+1cm,0));
+ endfor;
+ );
+ RetourFraction
+enddef;
+}%
+
\def\MPFractionTriangleCode{%
Longueur:=\useKV[ClesFraction]{Longueur};
nbparts:=\useKV[ClesFraction]{Parts};
@@ -241,7 +469,7 @@
trace hachurage(polygone(A,B,C) shifted(l*(Longueur+1cm,0)),90,0.2,0) withcolor ColTriangle;
drawoptions(withpen pencircle scaled Epaisseur);
else:
- remplis polygone(A,B,C) withcolor ColRectangle;
+ remplis polygone(A,B,C) withcolor ColTriangle;
fi;
fi;
for k=1 upto nbparts:
@@ -260,7 +488,13 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
- \MPFractionTriangleCode
+ boolean Alea;
+ Alea=\useKV[ClesFraction]{Aleatoire};
+ if Alea:
+ \MPFractionTriangleCodeAlea;
+ else:
+ \MPFractionTriangleCode;
+ fi;
draw FractionTriangle(#1,#2);
\end{mplibcode}
\else
@@ -270,6 +504,117 @@
\fi
}%
+\def\MPFractionRectangleCodeAlea{%
+ Longueur=\useKV[ClesFraction]{Longueur};
+ Largeur=\useKV[ClesFraction]{Largeur};
+ color ColRectangle;
+ ColRectangle=\useKV[ClesFraction]{Couleur};
+ boolean Hachures,Reponse;
+ Reponse=\useKV[ClesFraction]{Reponse};
+ Hachures=\useKV[ClesFraction]{Hachures};
+ Epaisseur=\useKV[ClesFraction]{Epaisseur};
+ Multiple=\useKV[ClesFraction]{Multiple};
+ %
+ pair A,B,C,D,M[],N[],R[],S[];
+ A=(0,0);
+ B-A=(Longueur,0);
+ C-B=(0,Largeur);
+ D-C=A-B;
+ vardef FractionRectangle(expr nume,deno)=
+ m=nume div deno;
+ if (nume mod deno)=0:
+ m:=m-1;
+ fi;
+ numeric parts;
+ parts=(deno div Multiple);
+ for k=0 upto parts:
+ M[k]=(k/parts)[A,B];
+ N[k]=(k/parts)[D,C];
+ endfor;
+ if Multiple>1:
+ for k=0 upto Multiple:
+ R[k]=(k/Multiple)[A,D];
+ S[k]=(k/Multiple)[B,C];
+ endfor;
+ fi;
+ picture FondRectangle;
+ FondRectangle=image(%
+ path case[];
+ for k=0 upto Multiple-1:
+ for l=0 step Multiple until (deno-1):
+ case[k*(deno div Multiple)+(l div Multiple)]=(unitsquare xscaled (Multiple*abs(A-B)/deno) yscaled (abs(D-A)/Multiple)) shifted (((l/deno)[A,B]-A)+((k/Multiple)[A,D]-A));
+ trace case[k*(deno div Multiple)+(l div Multiple)];
+ endfor;
+ endfor;
+ );
+ picture RetourRectangle;
+ RetourRectangle=image(
+ Reste=((nume div deno)+1)*deno;
+ RetiensPart=0;
+ if Reponse:
+ if m>0:
+ for l=0 upto (m-1):
+ for k=0 upto deno-1:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(case[k] shifted(l*(Longueur+1cm,0)),45,0.25,0) withcolor ColRectangle;
+ else:
+ fill case[k] shifted(l*(Longueur+1cm,0)) withcolor ColRectangle;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(case[k] shifted(l*(Longueur+1cm,0)),45,0.25,0) withcolor ColRectangle;
+ else:
+ fill case[k] shifted(l*(Longueur+1cm,0)) withcolor ColRectangle;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ endfor;
+ fi;
+ for k=0 upto deno-1:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(case[k] shifted(m*(Longueur+1cm,0)),45,0.25,0) withcolor ColRectangle;
+ else:
+ fill case[k] shifted(m*(Longueur+1cm,0)) withcolor ColRectangle;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(case[k] shifted(m*(Longueur+1cm,0)),45,0.25,0) withcolor ColRectangle;
+ else:
+ fill case[k] shifted(m*(Longueur+1cm,0)) withcolor ColRectangle;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ fi;
+ for l=0 upto m:
+ trace FondRectangle shifted(l*(Longueur+1cm,0));
+ endfor;
+ );
+ RetourRectangle
+ enddef;
+}%
+
\def\MPFractionRectangleCode{%
Longueur=\useKV[ClesFraction]{Longueur};
Largeur=\useKV[ClesFraction]{Largeur};
@@ -378,7 +723,13 @@
\ifluatex%
\mplibforcehmode%
\begin{mplibcode}
- \MPFractionRectangleCode
+ boolean Alea;
+ Alea=\useKV[ClesFraction]{Aleatoire};
+ if Alea:
+ \MPFractionRectangleCodeAlea;
+ else:
+ \MPFractionRectangleCode;
+ fi;
trace FractionRectangle(#1,#2);
\end{mplibcode}
\else%
@@ -388,6 +739,101 @@
\fi%
}%
+\def\MPFractionDisqueCodeAlea{%
+ Rayon=\useKV[ClesFraction]{Rayon};
+ Epaisseur=\useKV[ClesFraction]{Epaisseur};
+ color ColDisque;
+ ColDisque=\useKV[ClesFraction]{Couleur};
+ boolean Hachures,Reponse;
+ Hachures=\useKV[ClesFraction]{Hachures};
+ Reponse:=\useKV[ClesFraction]{Reponse};
+ %
+ pair A,B[];
+ A=(0,0);
+ path cc,part[];
+ cc=cercles(A,Rayon);
+ vardef FractionDisque(expr nume,deno)=
+ for k=0 upto deno+1:
+ B[k]=pointarc(cc,(360/deno)*k);
+ endfor;
+ for k=0 upto deno-1:
+ part[k]=A--arccercle(B[k],B[k+1],A)--cycle;
+ endfor;
+ m=(nume div deno);
+ if (nume mod deno)=0:m:=m-1; fi;
+ picture RetourFraction;
+ RetourFraction=image(%
+ Reste=((nume div deno)+1)*deno;
+ RetiensPart=0;
+ if Reponse:
+ if m>0:
+ for l=0 upto (m-1):
+ for k=0 upto deno-1:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(l*(2*Rayon+1cm,0)),1.5*360/deno,0.25,0) withcolor ColDisque;
+ else:
+ fill part[k] shifted(l*(2*Rayon+1cm,0)) withcolor ColDisque;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(l*(2*Rayon+1cm,0)),1.5*360/deno,0.25,0) withcolor ColDisque;
+ else:
+ fill part[k] shifted(l*(2*Rayon+1cm,0)) withcolor ColDisque;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ endfor;
+ fi;
+ for k=0 upto deno-1:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(m*(2*Rayon+1cm,0)),1.5*360/deno,0.25,0) withcolor ColDisque;
+ else:
+ fill part[k] shifted(m*(2*Rayon+1cm,0)) withcolor ColDisque;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(m*(2*Rayon+1cm,0)),1.5*360/deno,0.25,0) withcolor ColDisque;
+ else:
+ fill part[k] shifted(m*(2*Rayon+1cm,0)) withcolor ColDisque;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ fi;
+ drawoptions(withpen pencircle scaled Epaisseur);
+ for l=0 upto m:
+ draw cc shifted(l*(2*Rayon+1cm,0));
+ for k=0 upto (deno-1):
+ draw segment(A,B[k]) shifted(l*(2*Rayon+1cm,0));
+ endfor;
+ endfor;
+ drawoptions();
+ );
+ RetourFraction
+ enddef;
+}%
+
\def\MPFractionDisqueCode{%
Rayon=\useKV[ClesFraction]{Rayon};
Epaisseur=\useKV[ClesFraction]{Epaisseur};
@@ -444,7 +890,13 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ boolean Alea;
+ Alea=\useKV[ClesFraction]{Aleatoire};
+ if Alea:
+ \MPFractionDisqueCodeAlea;
+ else:
\MPFractionDisqueCode
+ fi;
trace FractionDisque(#1,#2);
\end{mplibcode}
\else
@@ -454,6 +906,115 @@
\fi
}
+\def\MPFractionSegmentCodeAlea{%
+ Longueur=\useKV[ClesFraction]{Longueur};
+ color ColSegment;
+ ColSegment=\useKV[ClesFraction]{Couleur};
+ boolean Hachures,Reponse;
+ Reponse=\useKV[ClesFraction]{Reponse};
+ Hachures=\useKV[ClesFraction]{Hachures};
+ Epaisseur=\useKV[ClesFraction]{Epaisseur};
+ %
+ pair A,C,B[];
+ A=(0,0);
+ C-A=(Longueur,0);
+ %
+ path part[];
+ %
+ vardef FractionSegment(expr nume,deno)=
+ for k=0 upto deno:
+ B[k]=(k/deno)[A,C];
+ endfor;
+ for k=0 upto deno-1:
+ part[k]=polygone(B[k]+u*(0,-0.15),B[k+1]+u*(0,-0.15),B[k+1]+u*(0,0.15),B[k]+u*(0,0.15));
+ endfor;
+ m=nume div deno;
+ picture RetourFraction;
+ RetourFraction=image(
+ Reste=((nume div deno)+1)*deno;
+ RetiensPart=0;
+ % Reponse
+ if Reponse:
+ if m>0:
+ for l=0 upto (m-1):
+ for k=0 upto deno-1:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(l*(Longueur+1cm,0)),120,0.2,0) withcolor ColSegment;
+ drawoptions();
+ else:
+ draw (segment(B[k],B[k+1]) shifted(l*(Longueur+1cm,0))) withpen pencircle scaled 2 withcolor ColSegment;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(l*(Longueur+1cm,0)),120,0.2,0) withcolor ColSegment;
+ drawoptions();
+ else:
+ draw (segment(B[k],B[k+1]) shifted(l*(Longueur+1cm,0))) withpen pencircle scaled 2 withcolor ColSegment;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ endfor;
+ fi;
+ for k=0 upto deno-1:
+ if RetiensPart<nume:
+ if Reste>(nume-RetiensPart):
+ test:=uniformdeviate(1);
+ if test>0.5:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(m*(Longueur+1cm,0)),120,0.2,0) withcolor ColSegment;
+ drawoptions();
+ else:
+ draw (segment(B[k],B[k+1]) shifted(m*(Longueur+1cm,0))) withpen pencircle scaled 2 withcolor ColSegment;
+ fi;
+ fi;
+ else:
+ RetiensPart:=RetiensPart+1;
+ if Hachures:
+ drawoptions(withpen pencircle scaled Epaisseur);
+ draw hachurage(part[k] shifted(m*(Longueur+1cm,0)),120,0.2,0) withcolor ColSegment;
+ else:
+ draw (segment(B[k],B[k+1]) shifted(m*(Longueur+1cm,0))) withpen pencircle scaled 2 withcolor ColSegment;
+ fi;
+ fi;
+ fi;
+ Reste:=Reste-1;
+ endfor;
+ fi;
+ %fin Reponse
+ if Hachures:drawoptions(withpen pencircle scaled Epaisseur);fi;
+ % draw (segment(B[0],B[nume mod deno]) shifted(m*(Longueur+1cm,0)));
+ for l=0 upto m:
+ draw segment(A,C) shifted(l*(Longueur+1cm,0));
+ endfor;
+ marque_p:="tiretv";
+ for l=0 upto m-1:
+ for k=0 upto deno:
+ pointe(B[k] shifted(l*(Longueur+1cm,0)));
+ endfor;
+ endfor;
+ if (nume mod deno)<>0:
+ for k=0 upto deno:
+ pointe(B[k] shifted(m*(Longueur+1cm,0)));
+ endfor;
+ fi;
+ );
+ RetourFraction
+ enddef;
+}
+
\def\MPFractionSegmentCode{%
Longueur=\useKV[ClesFraction]{Longueur};
color ColSegment;
@@ -525,7 +1086,13 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ boolean Alea;
+ Alea=\useKV[ClesFraction]{Aleatoire};
+ if Alea:
+ \MPFractionSegmentCodeAlea;
+ else:
\MPFractionSegmentCode
+ fi;
trace FractionSegment(#1,#2);
\end{mplibcode}
\else
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex
index 0e6162aa765..9b1bcaa8b1b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex
@@ -1,9 +1,15 @@
%%%
% Tableur
%%%
-\setKVdefault[Tableur]{Colonnes=4,Largeur=30pt,LargeurUn=30pt,Bandeau=true,Formule={},Cellule=A1,Ligne=0,Colonne=0,PasL=1,PasC=1,Selection=false,DebutColonnes=0,DebutLignes=0,LargeurNombre=10pt}%
+\def\filedateRepTab{2024/08/21}%
+\def\fileversionRepTab{0.1a}%
+\message{-- \filedateRepTab\space v\fileversionRepTab}%
+%
+\setKVdefault[Tableur]{Colonnes=4,Largeur=30pt,LargeurUn=30pt,Bandeau=true,Formule={},Cellule=A1,Ligne=0,Colonne=0,PasL=1,PasC=1,Selection=false,DebutColonnes=0,DebutLignes=0,LargeurNombre=10pt,Apres=false,ApresBandeau=false}%
%Idee de P. Nuns
\defKV[Tableur]{Couleur=\setKV[Tableur]{Selection}}%
+\defKV[Tableur]{CodeAfter=\setKV[Tableur]{Apres}}%
+\defKV[Tableur]{CodeAfterBandeau=\setKV[Tableur]{ApresBandeau}}%
%
%Bas\'e sur un code de Christian T\'ell\'ech\'ea.
@@ -20,6 +26,9 @@
\ifremain@lines#2\\\@nil{\addtot@b&\subst@eol#2\@nil}{\addtot@b{#2\CodeAfter\xintifboolexpr{\useKV[Tableur]{Ligne}==0 || \useKV[Tableur]{Colonne}==0}{}{%
\tikz\node at (row-\fpeval{\useKV[Tableur]{Ligne}+1+\useKV[Tableur]{PasL}}-|col-\fpeval{\useKV[Tableur]{Colonne}+1+\useKV[Tableur]{PasC}}) {\tiny$\blacksquare$};%
}%
+ \ifboolKV[Tableur]{Apres}{%
+ \useKV[Tableur]{CodeAfter}%
+ }{}%
\end{NiceTabular}}}}%
\long\def\collectcp@body#1\end{\subst@eol#1\@nil\end}%
@@ -103,6 +112,10 @@
\ifboolKV[Tableur]{Bandeau}{%
\begin{NiceTabular}{p{\PfCTableurLargeur}p{10pt}p{50pt}p{\PfCLongInter}}%
\Block[draw,l]{}{\useKV[Tableur]{Cellule}}&\Block[draw]{}{\scriptsize$\blacktriangledown$}&\Block{}{$f_x$\hfill$\sum$~\scriptsize$\blacktriangledown$\hfill$=$}&\Block[draw]{}{\useKV[Tableur]{Formule}\hfill\scriptsize$\blacktriangledown$}\\
+ \CodeAfter
+ \ifboolKV[Tableur]{ApresBandeau}{%
+ \useKV[Tableur]{CodeAfterBandeau}%
+ }{}%
\end{NiceTabular}%
\nopagebreak%
\\%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCReseauxSociaux.tex b/Master/texmf-dist/tex/latex/profcollege/PfCReseauxSociaux.tex
index 996e33c0265..2ccc0748f66 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCReseauxSociaux.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCReseauxSociaux.tex
@@ -1,6 +1,10 @@
%%%
% Twitter
%%%
+\def\filedateReseaux{2024/08/04}%
+\def\fileversionReseaux{0.1}%
+\message{-- \filedateReseaux\space v\fileversionReseaux}%
+%
\setKVdefault[Twitter]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Url=ViveLaTeX,EchelleLogo=0.035,Logo=DrStrange,Publie=false}%
\NewDocumentEnvironment{Twitter}{o+b}{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex b/Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex
index a5ce8ebf635..795a79e833e 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex
@@ -1,6 +1,10 @@
%%%
% Equations
%%%
+\def\filedateEquation{2024/08/04}%
+\def\fileversionEquation{0.1}%
+\message{-- \filedateEquation\space v\fileversionEquation}%
+%
\setKVdefault[ClesEquation]{Ecart=0.5,Fleches=false,FlecheDiv=false,Laurent=false,Decomposition=false,Terme=false,Composition=false,Symbole=false,ModeleBarre=false,Decimal=false,Entier=false,Lettre=x,Solution=false,LettreSol=true,Bloc=false,Simplification=false,CouleurTerme=black,CouleurCompo=black,CouleurSous=red,CouleurSymbole=orange,Verification=false,Nombre=0,Egalite=false,Produit=false,Facteurs=false,Carre=false,Exact=false,Pose=false,Equivalence=false}
\newcommand\rightcomment[4]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRondeInfernale.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRondeInfernale.tex
index 9fc7f3446d6..26a78fcc2f6 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRondeInfernale.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRondeInfernale.tex
@@ -1,6 +1,10 @@
%%%
% Ronde infernale
%%%
+\def\filedateRondeI{2024/08/04}%
+\def\fileversionRondeI{0.1}%
+\message{-- \filedateRondeI\space v\fileversionRondeI}%
+%
\newcommand\TestNombrePremier[1]{%
% #1 le nombre \`a tester
\newcount\anp\newcount\bnp\newcount\cnp%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRose.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRose.tex
index d6059cdd7ec..3798a26f748 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRose.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRose.tex
@@ -1,6 +1,10 @@
%%%
% Rose
%%%
+\def\filedateRose{2024/08/04}%
+\def\fileversionRose{0.1}%
+\message{-- \filedateRose\space v\fileversionRose}%
+%
\setKVdefault[ClesRose]{Vide=false,Couleur=white,Produits=false,Solution=false,Rayon=2cm,Petales=7,Aide=false,FacteurMin=2,FacteurMax=10,ProduitVide=false,CaseVide=false,Polygone=false,Nom=Rose1,Creation=false,Addition=false,Melange=false,CDot=false}%
\defKV[ClesRose]{LesNombres=\setKV[ClesRose]{Creation}}%
\defKV[ClesRose]{LesProduits=\setKV[ClesRose]{Creation}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex b/Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex
index 0315d8d3a87..778ee151749 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex
@@ -1,6 +1,10 @@
%%%%
% Scratch
%%%%
+\def\filedateScratch{2024/08/04}%
+\def\fileversionScratch{0.1}%
+\message{-- \filedateScratch\space v\fileversionScratch}%
+%
\newlength{\longbarreheight}
\setlength{\longbarreheight}{2.1ex+3pt}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCSerpent.tex b/Master/texmf-dist/tex/latex/profcollege/PfCSerpent.tex
index cd38bd90a25..e4352613d7e 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCSerpent.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCSerpent.tex
@@ -1,10 +1,14 @@
%%%
% Serpent
%%%
+\def\filedateSerpent{2024/08/04}%
+\def\fileversionSerpent{0.1}%
+\message{-- \filedateSerpent\space v\fileversionSerpent}%
+%
\newtoks\tokListeSerpentPerso{}%
\def\UpdatetoksSerpent#1\nil{\addtotok\tokListeSerpentPerso{"#1"}}%
-\setKVdefault[Serpent]{Cases=9,Case=1,Solution=false,PasQuad=7mm,ValeurMin=2,ValeurMax=10,Creation=false,Graines=false}
+\setKVdefault[Serpent]{Cases=9,Case=1,Solution=false,PasQuad=7mm,ValeurMin=2,ValeurMax=10,Creation=false,Graines=false,Direct=false,Disque=false,Spirale=false}
\defKV[Serpent]{CouleurSolution=\setKV[Serpent]{Solution}}%
\defKV[Serpent]{Perso=\setKV[Serpent]{Creation}\xdef\PfCFooCheminSerpent{#1}}%+Liste des déplacements
\defKV[Serpent]{Graine=\setKV[Serpent]{Graines}}%
@@ -19,7 +23,14 @@
\BuildSerpent{\the\tokListeSerpentPerso}%
\reademptyitems%
}{%
- \BuildSerpent{}%
+ \ifboolKV[Serpent]{Direct}{%
+ \BuildSerpentDirect{}%
+ }{\ifboolKV[Serpent]{Spirale}{%
+ %\BuildSerpentSpirale{}%
+ }{%
+ \BuildSerpent{}%
+ }%
+ }%
}%
}%
@@ -29,10 +40,11 @@
\mplibnumbersystem{double}%
\begin{mplibcode}
%
- boolean Solution,Perso,Graines;
+ boolean Solution,Perso,Graines,Disque;
Solution=\useKV[Serpent]{Solution};
Perso=\useKV[Serpent]{Creation};
Graines=\useKV[Serpent]{Graines};
+ Disque=\useKV[Serpent]{Disque};
%
if Graines:
randomseed:=\useKV[Serpent]{Graine};
@@ -210,7 +222,11 @@
fi;
fi;
for k=1 upto LongueurChemin:
+ if Disque:
+ trace (fullcircle scaled (2*PasQuad)) shifted (N[k]+PasQuad*(1,1));
+ else:
trace (unitsquare scaled (2*PasQuad)) shifted N[k];
+ fi;
endfor;
for k=1 upto LongueurChemin-1:
drawarrow (center (unitsquare scaled (2*PasQuad)) shifted N[k])--(center (unitsquare scaled (2*PasQuad)) shifted N[k+1]) cutbefore ((unitsquare scaled (2*PasQuad)) shifted N[k]) cutafter ((unitsquare scaled (2*PasQuad)) shifted N[k+1]);
@@ -363,4 +379,193 @@
\end{mplibcode}
\mplibnumbersystem{scaled}%
\fi
+}%
+
+\NewDocumentCommand\BuildSerpentDirect{m}{%
+ \ifluatex%
+ \mplibforcehmode%
+ \mplibnumbersystem{double}%
+ \begin{mplibcode}
+ %
+ boolean Solution,Graines,Disque;
+ Solution=\useKV[Serpent]{Solution};
+ Graines=\useKV[Serpent]{Graines};
+ Disque=\useKV[Serpent]{Disque};
+ %
+ if Graines:
+ randomseed:=\useKV[Serpent]{Graine};
+ fi;
+ %
+ color CoulSolution;
+ if Solution:
+ CoulSolution=\useKV[Serpent]{CouleurSolution};
+ fi;
+ %
+ numeric LongueurChemin,Depart;
+ LongueurChemin=\useKV[Serpent]{Cases};
+ ValeurMin=\useKV[Serpent]{ValeurMin};
+ ValeurMax=\useKV[Serpent]{ValeurMax};
+ CaseDepart=\useKV[Serpent]{Case};
+ Depart=ValeurMin+floor(uniformdeviate(ValeurMax-ValeurMin+1));
+ %
+ PasQuad=5mm;%\useKV[Serpent]{PasQuad};
+ %
+ pair N[];
+ N[1]:=4*PasQuad*(0,0);
+ for k=2 upto LongueurChemin:
+ N[k]=N[k-1]+4*PasQuad*(1,0);
+ endfor;
+ % Tracage
+ if CaseDepart=1:
+ label(TEX("\Large"&decimal(Depart)),N[1] shifted(PasQuad*(1,1)));
+ else:
+ if Solution:
+ label(TEX("\Large"&decimal(Depart)),N[1] shifted(PasQuad*(1,1))) withcolor CoulSolution;
+ fi;
+ fi;
+ for k=1 upto LongueurChemin:
+ if Disque:
+ trace (fullcircle scaled (2*PasQuad)) shifted (N[k]+PasQuad*(1,1));
+ else:
+ trace (unitsquare scaled (2*PasQuad)) shifted N[k];
+ fi;
+ endfor;
+ %
+ path cheminfleche[];
+ path CheminFlecheBase;
+ CheminFlecheBase=(0,2*PasQuad){dir45}..(4*PasQuad,2*PasQuad);
+ for k=1 upto LongueurChemin-1:
+ cheminfleche[k]=CheminFlecheBase shifted (N[k]+(PasQuad,0));
+ %cheminfleche[k]=(center (unitsquare scaled (2*PasQuad)) shifted N[k]){dir45}..(center (unitsquare scaled (2*PasQuad)) shifted N[k+1]) cutbefore ((unitsquare scaled (2*PasQuad)) shifted N[k]) cutafter ((unitsquare scaled (2*PasQuad)) shifted N[k+1]);
+ drawarrow cheminfleche[k];
+ endfor;
+ %%drawoptions();
+ boolean PremierChiffre;
+ PremierChiffre=true;
+ %% Test Premier
+ vardef TestPremier(expr nombre)=
+ nbdiviseur:=0;
+ nbdiv:=0;
+ for k=2 upto nombre:
+ if (nombre mod k)=0:
+ nbdiviseur:=nbdiviseur+1;
+ if k<11:
+ nbdiv:=nbdiv+1;
+ Diviseur[nbdiv]:=k;
+ fi;
+ fi;
+ endfor;
+ if nbdiviseur>1:
+ PremierChiffre:=false;
+ else:
+ PremierChiffre:=true;
+ fi;
+ enddef;
+ % Les opérations
+ numeric Chiffre[];
+ pair St[];
+ Chiffre[1]=Depart;
+ %
+ vardef EcrireSomme(expr tt)=
+ Somme:=5+ceiling(uniformdeviate(10));
+ Chiffre[tt]=Chiffre[tt-1]+Somme;
+ St[tt]=point(0.5*length cheminfleche[tt-1]) of cheminfleche[tt-1];
+ label.top(TEX("$+"&decimal(Somme)&"$"),St[tt]);
+ enddef;
+ %
+ vardef EcrireProduit(expr tt)=
+ Multiple:=1+ceiling(uniformdeviate(8));
+ Chiffre[tt]=Chiffre[tt-1]*Multiple;
+ St[tt]=point(0.5*length cheminfleche[tt-1]) of cheminfleche[tt-1];
+ label.top(TEX("$\PfCSymbolTimes"&decimal(Multiple)&"$"),St[tt]);
+ enddef;
+ %
+ vardef EcrireDifferenceCent(expr tt)=
+ Difference:=ceiling(Chiffre[tt-1]-15+uniformdeviate(10));
+ Chiffre[tt]=Chiffre[tt-1]-Difference;
+ St[tt]=point(0.5*length cheminfleche[tt-1]) of cheminfleche[tt-1];
+ label.top(TEX("$-"&decimal(Difference)&"$"),St[tt]);
+ enddef;
+ %
+ vardef EcrireDifference(expr tt)=
+ Difference:=if Chiffre[tt-1]<20:1+floor(uniformdeviate(Chiffre[tt-1]-1)) else: 5+ceiling(uniformdeviate(10)) fi;
+ Chiffre[tt]=Chiffre[tt-1]-Difference;
+ St[tt]=point(0.5*length cheminfleche[tt-1]) of cheminfleche[tt-1];
+ label.top(TEX("$-"&decimal(Difference)&"$"),St[tt]);
+ enddef;
+ %
+ vardef EcrireQuotient(expr tt)=
+ choixdiv:=ceiling(nbdiv);
+ Quotient:=Diviseur[choixdiv];
+ Chiffre[tt]=Chiffre[tt-1] div Quotient;
+ St[tt]=point(0.5*length cheminfleche[tt-1]) of cheminfleche[tt-1];
+ label.top(TEX("$\PfCSymbolDiv"&decimal(Quotient)&"$"),St[tt]);
+ enddef;
+ %
+ for k=2 upto LongueurChemin:
+ if (Chiffre[k-1]=1) or (Chiffre[k-1]=0):
+ % On additionne ou on multiplie si c'est un
+ if Chiffre[k-1]=1:
+ alea:=ceiling(uniformdeviate(2));
+ if alea=1:
+ EcrireSomme(k);
+ else:
+ EcrireProduit(k);
+ fi;
+ else:
+ EcrireSomme(k);
+ fi;
+ else:
+ TestPremier(Chiffre[k-1]);
+ if PremierChiffre:
+ if Chiffre[k-1]>100:
+ EcrireDifferenceCent(k);
+ else:
+ alea:=ceiling(uniformdeviate(3));
+ if alea=1:
+ EcrireSomme(k);
+ elseif alea=2:
+ EcrireDifference(k);
+ elseif alea=3:
+ EcrireProduit(k);
+ fi;
+ fi;
+ if k=CaseDepart:
+ label(TEX("\Large"&decimal(Chiffre[k])),N[k] shifted(PasQuad*(1,1)));
+ elseif Solution:
+ label(TEX("\Large"&decimal(Chiffre[k])),N[k] shifted(PasQuad*(1,1))) withcolor CoulSolution;
+ fi;
+ else:
+ if Chiffre[k-1]>100:
+ alea:=ceiling(uniformdeviate(2));
+ if alea=1:
+ EcrireDifferenceCent(k);
+ else:
+ EcrireQuotient(k);
+ fi;
+ else:
+ alea:=ceiling(uniformdeviate(4));
+ if alea=1:
+ EcrireSomme(k);
+ elseif alea=2:
+ EcrireDifference(k);
+ elseif alea=3:
+ EcrireProduit(k);
+ elseif alea=4:
+ EcrireQuotient(k);
+ fi;
+ fi;
+ fi;
+ fi;
+ if k=CaseDepart:
+ label(TEX("\Large"&decimal(Chiffre[k])),N[k] shifted(PasQuad*(1,1)));
+ else:
+ if Solution:
+ label(TEX("\Large"&decimal(Chiffre[k])),N[k] shifted(PasQuad*(1,1))) withcolor CoulSolution;
+ fi;
+ fi;
+ endfor;
+ \end{mplibcode}
+ \mplibnumbersystem{scaled}%
+ \fi
}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCShikaku.tex b/Master/texmf-dist/tex/latex/profcollege/PfCShikaku.tex
index 04084cadcae..8f6616ff3e0 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCShikaku.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCShikaku.tex
@@ -1,6 +1,10 @@
%%%
% Shikaku
%%%
+\def\filedateShikaku{2024/08/04}%
+\def\fileversionShikaku{0.1}%
+\message{-- \filedateShikaku\space v\fileversionShikaku}%
+%
\newcounter{PfCShikakuNom}
\setcounter{PfCShikakuNom}{0}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex b/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex
index 94429def365..9fb16f325df 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex
@@ -1,6 +1,10 @@
%%%
% Simplification
%%%
+\def\filedateSimpFraction{2024/08/13}%
+\def\fileversionSimpFraction{0.1a}%
+\message{-- \filedateSimpFraction\space v\fileversionSimpFraction}%
+%
\makeatletter%by christian Tellechea
% Calcul du PGCD de #1 et #2
\newcount\cnt@a\newcount\cnt@b\newcount\pgcd
@@ -160,7 +164,7 @@
\ifboolKV[ClesSimplification]{Debut}{%
\ensuremath{%
\whiledo{\PfCDivCom>1}{%
- \frac{\mathcolor{PfCSimpliCol}{\num{\the\PfCDivCom}}\times\num{\fpeval{\PfCNumerateurDiv/\the\PfCDivCom}}}{\mathcolor{PfCSimpliCol}{\num{\the\PfCDivCom}}\times\num{\fpeval{\PfCDenominateurDiv/\the\PfCDivCom}}}=\frac{\num{\fpeval{\PfCNumerateurDiv/\PfCDivCom}}}{\num{\fpeval{\PfCDenominateurDiv/\PfCDivCom}}}%
+ \frac{\mathcolor{PfCSimpliCol}{\num{\the\PfCDivCom}}\times\ifboolKV[ClesSimplification]{ACompleter}{\pointilles[20pt]}{\num{\fpeval{\PfCNumerateurDiv/\the\PfCDivCom}}}}{\mathcolor{PfCSimpliCol}{\num{\the\PfCDivCom}}\times\ifboolKV[ClesSimplification]{ACompleter}{\pointilles[20pt]}{\num{\fpeval{\PfCDenominateurDiv/\the\PfCDivCom}}}}=\frac{\ifboolKV[ClesSimplification]{ACompleter}{\pointilles[20pt]}{\num{\fpeval{\PfCNumerateurDiv/\PfCDivCom}}}}{\ifboolKV[ClesSimplification]{ACompleter}{\pointilles[20pt]}{\num{\fpeval{\PfCDenominateurDiv/\PfCDivCom}}}}%
\xdef\PfCNumerateurDiv{\fpeval{\PfCNumerateurDiv/\PfCDivCom}}%
\xdef\PfCDenominateurDiv{\fpeval{\PfCDenominateurDiv/\PfCDivCom}}%
\DiviseurCommun{\PfCNumerateurDiv}{\PfCDenominateurDiv}%
@@ -170,7 +174,7 @@
}{%
\ensuremath{%
\whiledo{\PfCDivCom>1}{%
- \frac{\num{\fpeval{\PfCNumerateurDiv/\the\PfCDivCom}}\times\mathcolor{PfCSimpliCol}{\num{\the\PfCDivCom}}}{\num{\fpeval{\PfCDenominateurDiv/\the\PfCDivCom}}\times\mathcolor{PfCSimpliCol}{\num{\the\PfCDivCom}}}=\frac{\num{\fpeval{\PfCNumerateurDiv/\PfCDivCom}}}{\num{\fpeval{\PfCDenominateurDiv/\PfCDivCom}}}%
+ \frac{\ifboolKV[ClesSimplification]{ACompleter}{\pointilles[20pt]}{\num{\fpeval{\PfCNumerateurDiv/\the\PfCDivCom}}}\times\mathcolor{PfCSimpliCol}{\num{\the\PfCDivCom}}}{\ifboolKV[ClesSimplification]{ACompleter}{\pointilles[20pt]}{\num{\fpeval{\PfCDenominateurDiv/\the\PfCDivCom}}}\times\mathcolor{PfCSimpliCol}{\num{\the\PfCDivCom}}}=\frac{\ifboolKV[ClesSimplification]{ACompleter}{\pointilles[20pt]}{\num{\fpeval{\PfCNumerateurDiv/\PfCDivCom}}}}{\ifboolKV[ClesSimplification]{ACompleter}{\pointilles[20pt]}{\num{\fpeval{\PfCDenominateurDiv/\PfCDivCom}}}}%
\xdef\PfCNumerateurDiv{\fpeval{\PfCNumerateurDiv/\PfCDivCom}}%
\xdef\PfCDenominateurDiv{\fpeval{\PfCDenominateurDiv/\PfCDivCom}}%
\DiviseurCommun{\PfCNumerateurDiv}{\PfCDenominateurDiv}%
@@ -180,7 +184,7 @@
}%
}%
-\setKVdefault[ClesSimplification]{Details=false,All=false,Longue=false,Fleches=false,Contraire=0,Couleur=black,Debut=false,Impose=false,Decomposition=false,DecompositionSeule=false}%
+\setKVdefault[ClesSimplification]{Details=false,All=false,Longue=false,Fleches=false,Contraire=0,Couleur=black,Debut=false,Impose=false,Decomposition=false,DecompositionSeule=false,ACompleter=false}%
\defKV[ClesSimplification]{Nombre=\setKV[ClesSimplification]{Impose}}%
\newcounter{NbFrac}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex b/Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex
index 9da7bce2594..8ed8899a371 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex
@@ -1,11 +1,127 @@
%%%
% Solide et sections
%%%
-\setKVdefault[ClesSolides]{Nom=cube,Aretes,Sommets,Pointilles,Largeur=1.5,Hauteur=1,Profondeur=0.75,ListeSommets={A,B,C,D,E,F,G,H},Rho=1500,Phi=30,Theta=20,Distance=50,Code=false,Couleur=white,Anglex=0,RayonCone=1,HauteurCone=2,HauteurPyramide=2,SommetsPyramide=5,Reguliere=false,DecalageSommet={(0,0,0)},RayonCylindre=1,HauteurCylindre=2,RayonSphere=1,AutoLabel=true,Sections=false,CoefSection=0.3,Axes=false,PointsSection={M,N,O,P},RemplisSection=false,ObjetSection={0.5,E,H,0.25,F,G,G,B}}%
+\def\filedateSolides{2024/08/20}%
+\def\fileversionSolides{0.1a}%
+\message{-- \filedateSolides\space v\fileversionSolides}%
+%
+\setKVdefault[ClesSolides]{Nom=cube,Aretes,Sommets,Pointilles,Largeur=1.5,Hauteur=1,Profondeur=0.75,ListeSommets={A,B,C,D,E,F,G,H},Rho=1500,Phi=30,Theta=20,Distance=50,Code=false,Couleur=white,Anglex=0,Arete=1,RayonCone=1,HauteurCone=2,HauteurPrisme=2,SommetsPrisme=6,HauteurPyramide=2,SommetsPyramide=5,Reguliere=false,DecalageSommet={(0,0,0)},RayonCylindre=1,HauteurCylindre=2,RayonSphere=1,AutoLabel=true,Sections=false,CoefSection=0.3,Axes=false,PointsSection={M,N,O,P},RemplisSection=false,ObjetSection={0.5,E,H,0.25,F,G,G,B}}%
\defKV[ClesSolides]{Traces=\setKV[ClesSolides]{Code}}%
\defKV[ClesSolides]{Section=\setKV[ClesSolides]{Sections}}%
\defKV[ClesSolides]{CouleurSection=\setKV[ClesSolides]{RemplisSection}}%
+\newcommand\MPSolidePrisme[4]{%
+ \ifluatex
+ \mplibnumbersystem{double}
+ \mplibforcehmode
+ \begin{mplibcode}
+ input PfCSolid;
+
+ boolean Pointilles,TraceArete,NommeSommets,Code,AutoLabel,Sections,RemplisSection;
+ AutoLabel:=\useKV[ClesSolides]{AutoLabel};
+ Pointilles=\useKV[ClesSolides]{Pointilles};
+ TraceArete=\useKV[ClesSolides]{Aretes};
+ NommeSommets=\useKV[ClesSolides]{Sommets};
+ Code=\useKV[ClesSolides]{Code};
+ Sections:=\useKV[ClesSolides]{Sections};
+ RemplisSection=\useKV[ClesSolides]{RemplisSection};
+ if RemplisSection:color CouleurSection;CouleurSection=\useKV[ClesSolides]{CouleurSection};fi;
+
+ color PfCOutColor;
+ PfCOutColor=Cornsilk;%\useKV[ClesSolides]{Couleur};
+
+ string Section;
+ if Sections:Section=\useKV[ClesSolides]{Section};fi;
+
+ %Initialisation
+ PfCRho=\useKV[ClesSolides]{Rho};
+ PfCPhi=\useKV[ClesSolides]{Phi};
+ PfCTheta=\useKV[ClesSolides]{Theta};
+ PfCDistance=\useKV[ClesSolides]{Distance};
+ anglerotationx=\useKV[ClesSolides]{Anglex};
+ hauteurprisme=\useKV[ClesSolides]{HauteurPrisme};
+ nombresommets=\useKV[ClesSolides]{SommetsPrisme};
+ Initialisation(PfCRho,PfCPhi,PfCTheta,PfCDistance);
+ typetrace:="3D";
+ typerepre:="persp";
+ eclairage:=false;
+ incolor:=white;
+ outcolor:=white;
+ if Pointilles=false:
+ pointilles:="non";
+ fi;
+
+ Ferme1:=true;
+
+ color A,B,C,D,E,F,G,H;
+ color Sommet[];
+
+ NbS:=nombresommets;
+
+ color TS[];
+
+ ecartangle=360/(NbS/2);
+ for k=1 upto (NbS/2):
+ repereangle:=(k-2)*ecartangle+(ecartangle*0.25+uniformdeviate(floor(ecartangle/2)));
+ TS[k]:=(cosd(repereangle),-sind(repereangle),0);
+ endfor;
+ TS[NbS/2+1]:=TS[1];
+
+ for k=1 upto (NbS/2):
+ TS[NbS/2+1+k]:=TS[k]+(0,0,hauteurprisme);
+ endfor;
+ TS[NbS+2]:=TS[NbS/2+2];
+
+ angx:=anglerotationx;
+ for k=1 upto (NbS+2):
+ TS[k]:=RotXYZ(TS[k]);
+ endfor;
+ angx:=0;
+
+ ObjetNew1(%
+ TS1, for k=2 upto (NbS+1):TS[k], endfor TS[NbS+2]
+ )(%
+ NbS/2, for p_=1 upto NbS/2:p_, endfor
+ NbS/2, for p_=NbS/2+1 downto NbS+2:p_, endfor
+ for p=1 upto NbS/2:
+ 4,p,p+1,NbS/2+1+p+1,NbS/2+1+p,%
+ endfor
+ );
+ %AffichageObjet1;
+
+ NF:=(NbS/2+2);
+ Fc[100*(NbS/2+1)]:=NbS/2;
+ for k=1 upto NbS/2:
+ Fc[100*(NbS/2+1)+k]:=k;
+ endfor;
+ Fc[100*(NbS/2+2)]:=NbS/2;
+ for k=1 upto NbS/2:
+ Fc[100*(NbS/2+2)+k]:=NbS+2-k;
+ endfor;
+ for l=1 upto NbS/2:
+ Fc[l*100]:=4;
+ %for k=1 upto 4:
+ Fc[l*100+1]:=l;Fc[l*100+4]:=l+1;Fc[l*100+3]:=NbS/2+1+l+1;Fc[l*100+2]:=NbS/2+1+l;
+ %Fc[101]:=1;Fc[102]:=2;Fc[103]:=6;Fc[104]:=5;
+ %endfor;
+ endfor;
+ DefinirSommets(#1);
+ DessineObjet;
+% picture Depart;
+% Depart=currentpicture;
+% currentpicture:=nullpicture;
+% for k=1 upto 8:
+% dotlabel.top(decimal(k),Projette(TS[k]));
+% endfor;
+ u:=1cm;
+ if Code:
+ \useKV[ClesSolides]{Traces};
+ fi;
+ \end{mplibcode}
+ \mplibnumbersystem{scaled}
+ \fi
+}
+
\newcommand\MPSolideCylindre[3]{%
\ifluatex
\mplibnumbersystem{double}
@@ -380,7 +496,6 @@
if Code:
\useKV[ClesSolides]{Traces};
fi;
-
\end{mplibcode}
\mplibnumbersystem{scaled}
\fi
@@ -622,7 +737,7 @@
% trace polygone(MSection1,MSection2,MSection3,MSection4);
color dcer,ccer;
% 1er cote -> ok
- DotLabel("",RetiensDefSection[4]);
+ %DotLabel("",RetiensDefSection[4]);
dcer:=Oeil-RetiensDefSection[4];
ccer:=Normal(RetiensDefSection[4],RetiensDefSection[2],RetiensDefSection[1]);
draw chemin(MSection1,MSection2) if (ProduitScalaire(dcer,ccer)<0):dashed evenly fi;
@@ -927,7 +1042,7 @@
\foreachitem\compteur\in\ListeNomSommet{\expandafter\UpdatetoksSolide\compteur\nil}%\the\toksolidelistesommets%
\IfStrEqCase{\useKV[ClesSolides]{Nom}}{%
{cube}{%
- \MPSolidePave{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{1,1,1}{\useKV[ClesSolides]{PointsSection}}{\useKV[ClesSolides]{ObjetSection}}%
+ \MPSolidePave{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{Arete},\useKV[ClesSolides]{Arete},\useKV[ClesSolides]{Arete}}{\useKV[ClesSolides]{PointsSection}}{\useKV[ClesSolides]{ObjetSection}}%
}%
{pave}{%
\MPSolidePave{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{Profondeur},\useKV[ClesSolides]{Largeur},\useKV[ClesSolides]{Hauteur}}{\useKV[ClesSolides]{PointsSection}}{\useKV[ClesSolides]{ObjetSection}}%
@@ -935,6 +1050,9 @@
{cone}{%
\MPSolideCone{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{PointsSection}}%
}%
+ {prisme}{%
+ \MPSolidePrisme{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{}{\useKV[ClesSolides]{PointsSection}}%
+ }%
{pyramide}{%
\MPSolidePyramide{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{DecalageSommet}}{\useKV[ClesSolides]{PointsSection}}%
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCSommeAngles.tex b/Master/texmf-dist/tex/latex/profcollege/PfCSommeAngles.tex
index df62edfbce7..f0a1e12cc9b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCSommeAngles.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCSommeAngles.tex
@@ -1,6 +1,10 @@
%%%
% Somme des angles
%%%
+\def\filedateSommeAngles{2024/08/04}%
+\def\fileversionSommeAngles{0.1}%
+\message{-- \filedateSommeAngles\space v\fileversionSommeAngles}%
+%
\setKVdefault[ClesSommeAngle]{Detail=true,Isocele=false,Rectangle=false,Figure=false,FigureSeule=false,Angle=0,Perso=false,Echelle=1cm}%
\def\MPFigureSommeAngle#1#2#3#4#5{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCSquaro.tex b/Master/texmf-dist/tex/latex/profcollege/PfCSquaro.tex
index 9de4a7afdf9..7afe0e55fb0 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCSquaro.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCSquaro.tex
@@ -1,10 +1,21 @@
%%%
% Squaro
%%%
-\setKVdefault[Squaro]{Solution=false,Longueur=8,Largeur=8,Echelle=8mm,Nom=Jeu1,Graines=false}
+\def\filedateSquarO{2024/08/04}%
+\def\fileversionSquarO{0.1}%
+\message{-- \filedateSquarO\space v\fileversionSquarO}%
+%
+\newtoks\tokPfCSquaro%
+\def\UpdatetoksSquaro#1\nil{\addtotok\tokPfCSquaro{#1,}}%
+
+\setKVdefault[Squaro]{Solution=false,Longueur=8,Largeur=8,Echelle=8mm,Nom=Jeu1,Graines=false,Persos=false}
\defKV[Squaro]{Graine=\setKV[Squaro]{Graines}}%
+\defKV[Squaro]{Perso=\setKV[Squaro]{Persos}\setsepchar{,}\ignoreemptyitems\readlist*\ListeSquaroPerso{#1}\reademptyitems%
+ \foreachitem\compteur\in\ListeSquaroPerso{\expandafter\UpdatetoksSquaro\compteur\nil}%
+}%
\NewDocumentCommand\SquarO{o}{%
+ \tokPfCSquaro{}%
\useKVdefault[Squaro]%
\setKV[Squaro]{#1}%
\BuildSquaro%
@@ -14,9 +25,10 @@
numeric Longueur,Largeur;
Longueur=\useKV[Squaro]{Longueur};
Largeur=\useKV[Squaro]{Largeur};
- boolean Solution,Graines;
+ boolean Solution,Graines,Persos;
Solution=\useKV[Squaro]{Solution};
Graines=\useKV[Squaro]{Graines};
+ Persos=\useKV[Squaro]{Persos};
if Graines:
randomseed:=\useKV[Squaro]{Graine};
fi;
@@ -26,13 +38,35 @@
p:=0;
pair A[];%centre des carrés.
boolean Allume[][];
-}
+ %
+ if Persos:
+ n:=0;
+ for p_=\the\tokPfCSquaro:
+ n:=n+1;
+ ligne:=(n-1) div (Largeur+2);
+ colonne:=(n-1) mod (Longueur+1);
+ Allume[ligne][colonne]=if p_=1:true else:false fi;
+ endfor;
+ else:
+ for k=0 upto Largeur:
+ for l=0 upto Longueur:
+ m:=uniformdeviate(1);
+ if m<0.5:
+ Allume[k][l]=true;
+ else:
+ Allume[k][l]=false;
+ fi;
+ endfor;
+ endfor;
+ fi;
+}%
\NewDocumentCommand\BuildSquaro{}{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
\BuildSquarobase
+ %
for k=0 upto Longueur-1:
for l=0 upto Largeur-1:
p:=p+1;
@@ -40,21 +74,18 @@
trace (unitsquare scaled u) shifted A[p];
endfor;
endfor;
-
+ %
for k=0 upto Largeur:
for l=0 upto Longueur:
- m:=uniformdeviate(1);
- if m<0.5:
- Allume[k][l]=true;
+ if Allume[k][l]:
fill cercles(u*(l,-k+1),1mm) if Solution=false:withcolor white fi;
else:
- Allume[k][l]=false;
fill cercles(u*(l,-k+1),1mm) withcolor white;
fi;
trace cercles(u*(l,-k+1),1mm);
endfor;
endfor;
-
+ %
for k=0 upto Largeur-1:
for l=0 upto Longueur-1:
Retiens:=0;
@@ -67,29 +98,28 @@
endfor;
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={\BuildSquarobase}]
- for k=0 upto Longueur-1:
+ \begin{mpost}[mpsettings={\BuildSquarobase}]
+ %
+ %
+ for k=0 upto Longueur-1:
for l=0 upto Largeur-1:
p:=p+1;
A[p]=u*(k,-l);
trace (unitsquare scaled u) shifted A[p];
- endfor;
- endfor;
-
- for k=0 upto Largeur:
- for l=0 upto Longueur:
- m:=uniformdeviate(1);
- if m<0.5:
- Allume[k][l]=true;
+ endfor;
+ endfor;
+ %
+ for k=0 upto Largeur:
+ for l=0 upto Longueur:
+ if Allume[k][l]:
fill cercles(u*(l,-k+1),1mm) if Solution=false:withcolor white fi;
else:
- Allume[k][l]=false;
fill cercles(u*(l,-k+1),1mm) withcolor white;
fi;
trace cercles(u*(l,-k+1),1mm);
- endfor;
- endfor;
-
+ endfor;
+ endfor;
+ %
for k=0 upto Largeur-1:
for l=0 upto Longueur-1:
Retiens:=0;
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex b/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex
index 98566be426a..5d7b786d8e4 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex
@@ -1,6 +1,10 @@
%%%
% Statistiques
%%%
+\def\filedateStat{2024/08/04}%
+\def\fileversionStat{0.1}%
+\message{-- \filedateStat\space v\fileversionStat}%
+%
\newcommand\NbDonnees{}%
\newcommand\SommeDonnees{}%
\newcommand\EffectifTotal{}%
@@ -18,7 +22,7 @@ Tableau=false,Stretch=1,Frequence=false,EffectifTotal=false,%
Etendue=false,Moyenne=false,SET=false,ValeurExacte=false,MoyenneA,Somme,Mediane=false,DetailsMediane=false,UneMediane=false,QuartileUn=false,QuartileTrois=false,Total=false,Concret=false,%
Largeur=1cm,Precision=2,PrecisionF=0,Donnee=Valeurs,Effectif=Effectif,Grille=false,Origine=0,Angle=false,SemiAngle=false,Qualitatif=false,Classes=false,TableauVide=false,ECC=false,Coupure=10,CouleurTab=gray!15,Graphique=false,Batons=true,Centre=false,CentreVide=false,Crochets=false,%
% Pour les diags batons
-EpaisseurBatons=1,ListeCouleursB={a},Lecture=false,LectureFine=false,AideLecture=false,Reponses=false,DonneesSup=false,AbscisseRotation=false,Tiret=false,AngleRotationAbscisse=0,Pasx=1,Pasy=1,Unitex=0.5,Unitey=0.5,Depart=0,CouleurDefaut=black,Date=false,GrandNombrey=false,GrandNombrex=false,PasGrillex=1,PasGrilley=1,%
+EpaisseurBatons=1,ListeCouleursB={a},Lecture=false,LectureFine=false,AideLecture=false,Reponses=false,DonneesSup=false,AbscisseRotation=false,Tiret=false,Pasx=1,Pasy=1,Unitex=0.5,Unitey=0.5,Depart=0,CouleurDefaut=black,Date=false,GrandNombrey=false,GrandNombrex=false,PasGrillex=1,PasGrilley=1,%
% Pour les diags circulaires
Rayon=3cm,AffichageAngle=false,AffichageDonnee=false,ListeCouleurs={white},Hachures=false,ListeHachures={60},LectureInverse=false,EcartHachures=0.25,EpaisseurHachures=1,Legende,LegendeVide=false,ACompleter=false,DebutAngle=0,%on utilisera également la clé CouleurDefaut
%Pour les représentations
@@ -466,7 +470,6 @@ ModeleCouleur=5%
unitex:=\useKV[ClesStat]{Unitex}*cm;
unitey:=\useKV[ClesStat]{Unitey}*cm;
xpartorigine:=\useKV[ClesStat]{Origine};
- AngleRotation=\useKV[ClesStat]{AngleRotationAbscisse};
boolean Rotation,Lecture,LectureFine,AideLecture,DonneesSup,Reponses,Qualitatif,Tiret,LegendeVide,Retour,GrandNombrex,GrandNombrey,Date,Grille;
GrandNombrex=\useKV[ClesStat]{GrandNombrex};
GrandNombrey=\useKV[ClesStat]{GrandNombrey};
@@ -478,6 +481,11 @@ ModeleCouleur=5%
fi;
Date:=\useKV[ClesStat]{Date};
Rotation=\useKV[ClesStat]{AbscisseRotation};
+ if Rotation:
+ AngleRotation=\useKV[ClesStat]{AngleRotationAbscisse};
+ else:
+ AngleRotation=0;
+ fi;
Lecture:=\useKV[ClesStat]{Lecture};
LectureFine:=\useKV[ClesStat]{LectureFine};
AideLecture:=\useKV[ClesStat]{AideLecture};
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTableauDoubleEntree.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTableauDoubleEntree.tex
new file mode 100644
index 00000000000..f13fe2fad5b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTableauDoubleEntree.tex
@@ -0,0 +1,62 @@
+%%%
+% Tableau Double Entree
+%%%
+\def\filedateTDE{2024/08/15}%
+\def\fileversionTDE{0.1a}%
+\message{-- \filedateTDE\space v\fileversionTDE}%
+
+\setKVdefault[TDE]{Colonnes=5,Lignes=4,Legende={},LegendesH={B,C,D,Total},LegendesV={1,2,Total},Couleur=Cornsilk,Vide=false,Totaux,Questions=false,Stretch=1}%
+
+\NewDocumentCommand\TableauDoubleEntree{om}{%
+ \useKVdefault[TDE]%
+ \setKV[TDE]{#1}%
+ \xdef\PfCFooH{\useKV[TDE]{LegendesH}}%
+ \xdef\PfCFooV{\useKV[TDE]{LegendesV}}%
+ \setsepchar{,}\reademptyitems%
+ \readlist*\ListeH{\PfCFooH}%
+ \readlist*\ListeV{\PfCFooV}%
+ \readlist*\ListeDonnees{#2}%
+ \ifboolKV[TDE]{Totaux}{}{%
+ % Vider les lignes du total
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{\ListeVlen-1}}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\fpeval{\ListeHlen-0}}}\do{%
+ \modulo{\fpeval{##2+(##1-1)*(\ListeHlen-0)}}{\fpeval{\ListeHlen-0}}%
+ \ifnum\remainder=0\relax%
+ \xdef\ListeDonneesSansTotauxAv{\ListeDonneesSansTotauxAv,}%
+ \else%
+ \ifnum\fpeval{##2+(##1-1)*(\ListeHlen-0)}=1\relax%
+ \xdef\ListeDonneesSansTotauxAv{\ListeDonnees[\fpeval{##2+(##1-1)*(\ListeHlen-0)}]}%
+ \else%
+ \xdef\ListeDonneesSansTotauxAv{\ListeDonneesSansTotauxAv,\ListeDonnees[\fpeval{##2+(##1-1)*(\ListeHlen-0)}]}%
+ \fi%
+ \fi%
+ }%
+ }%
+ % On ajoute la dernière ligne qui est vide
+ \xintFor* ##2 in{\xintSeq{1}{\fpeval{\ListeHlen-0}}}\do{%
+ \xdef\ListeDonneesSansTotauxAv{\ListeDonneesSansTotauxAv,}%
+ }%
+ % On relit la liste des données.
+ \setsepchar{,}\reademptyitems%
+ \readlist*\ListeDonnees{\ListeDonneesSansTotauxAv}%
+ \reademptyitems%
+ }%
+ %
+ % Pour vider le tableau, on utilise la clé <Vide>.
+ % On choisit quelques éléments ^^ à écrire
+ \ifboolKV[TDE]{Questions}{%
+ %en réflexion (voir v5)
+ }{}%
+ %
+ \colorlet{PfCColorTDE}{\useKV[TDE]{Couleur}}%
+ \renewcommand{\arraystretch}{\useKV[TDE]{Stretch}}%
+ \begin{tabular}{|*{\fpeval{\ListeHlen+1}}{c|}}
+ \hline
+ \cellcolor{PfCColorTDE}\useKV[TDE]{Legende}\xintFor*##1 in{\xintSeq{1}{\ListeHlen}}\do{\uppercase{&}\cellcolor{PfCColorTDE}\ListeH[##1]}\\
+ \hline
+ \xintFor* ##1 in{\xintSeq{1}{\ListeVlen}}\do{
+ \cellcolor{PfCColorTDE}\ListeV[##1]\xintFor*##2 in{\xintSeq{1}{\ListeHlen}}\do{\uppercase{&}\ifboolKV[TDE]{Vide}{}{\ListeDonnees[\fpeval{(##2-0)+(##1-1)*(\ListeHlen-0)}]}}\\
+ \hline
+ }
+ \end{tabular}
+}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTableauxUnites.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTableauxUnites.tex
index 75270180d37..933fcb80a2b 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTableauxUnites.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTableauxUnites.tex
@@ -1,7 +1,11 @@
%%%
% Tableaux d'unit\'es
%%%
-\setKVdefault[ClesTableaux]{Virgule=true,Incline=false,Entiers=false,Decimaux=false,Milliards=false,Millions=false,Micro=false,Nano=false,Partie=false,CouleurG=gray!15,CouleurM=gray!15,Couleurm=gray!15,Couleuru=gray!15,Couleurd=gray!15,Classes=false,Nombres=false,Puissances=false,NbLignes=2,Metre=false,Are=false,Capacite=false,Carre=false,CarreA=false,Cube=false,Litre=false,Gramme=false,Fleches=false,FlechesB=false,FlechesH=false,Colonnes=false,Prefixes=false,Escalier=false,CubeA=false,Taille=5,Largeur=4.75em,Nom=PfCTableau,CodeAfter={},PuissancesSeules=false,Colonne=-1,Octet=false,CouleurGN=white,CadreGN=black,Tabcolsep=0.275\tabcolsep,Exterieur=false,Condense=false}%
+\def\filedateTableaux{2024/08/15}%
+\def\fileversionTableaux{0.1a}%
+\message{-- \filedateTableaux\space v\fileversionTableaux}%
+\message{`PfCTableauxUnites.tex' v\fileversionTableaux\space (\filedateTableaux)}
+\setKVdefault[ClesTableaux]{Virgule=true,Incline=false,Entiers=false,Decimaux=false,Milliards=false,Millions=false,Micro=false,Nano=false,Partie=false,CouleurG=gray!15,CouleurM=gray!15,Couleurm=gray!15,Couleuru=gray!15,Couleurd=gray!15,Classes=false,Nombres=false,Puissances=false,NbLignes=2,Metre=false,Are=false,Capacite=false,Carre=false,CarreA=false,Cube=false,Litre=false,Gramme=false,Fleches=false,FlechesB=false,FlechesH=false,Colonnes=false,Prefixes=false,Escalier=false,CubeA=false,Taille=5,Largeur=4.75em,Nom=PfCTableau,CodeAfter={},PuissancesSeules=false,Colonne=-1,Octet=false,CouleurGN=white,CadreGN=black,Tabcolsep=0.275\tabcolsep,Exterieur=false,Condense=false,DoubleEntree=false}%
\defKV[ClesTableaux]{ColonnesSup=\setKV[ClesTableaux]{Exterieur}}%
%
\newcommand\PfCTBstrut{\rule[-1.2ex]{0pt}{3.8ex}}% Top and Bottom strut
@@ -52,7 +56,10 @@
\xdef\PfCCoefConversion{10}%
}{}%
\PfCTableauIncline%
- }{%
+ }{%Fin Escalier
+ \ifboolKV[ClesTableaux]{DoubleEntree}{%
+ \TableauDoubleEntree[#1]{#2}%
+ }{}%
%
%%% Clé Octet
%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTablesOperations.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTablesOperations.tex
index 3399cbecff9..df109d964a8 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTablesOperations.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTablesOperations.tex
@@ -1,6 +1,10 @@
%%%
% Tables Addition-Multiplication
%%%
+\def\filedateTableOp{2024/08/04}%
+\def\fileversionTableOp{0.1}%
+\message{-- \filedateTableOp\space v\fileversionTableOp}%
+%
\setKVdefault[Tables]{Addition=false,Soustraction=false,Multiplication,Seul=false,Debut=0,Fin=10,Couleur=white,Inverse=false}
% pour m\'emoire
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTectonic.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTectonic.tex
index df859b0453b..3026bf9be0a 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTectonic.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTectonic.tex
@@ -1,6 +1,10 @@
%%%
% Tectonic
%%%
+\def\filedateTectonic{2024/08/04}%
+\def\fileversionTectonic{0.1}%
+\message{-- \filedateTectonic\space v\fileversionTectonic}%
+%
\setKVdefault[ClesTectonic]{CouleurCase=LightGray,TLargeur=5,THauteur=5,Solution=false,Largeur=25pt,CouleurSolution=black,Tailles=false,Aide=false}%
\defKV[ClesTectonic]{Taille=\setKV[ClesTectonic]{Tailles}}%
\defKV[ClesTectonic]{ListeNombres=\setKV[ClesTectonic]{Aide}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex b/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex
index d4adb5be013..140bde3f234 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex
@@ -1,6 +1,10 @@
%%%
% Thales
%%%
+\def\filedateThales{2024/08/04}%
+\def\fileversionThales{0.1}%
+\message{-- \filedateThales\space v\fileversionThales}%
+%
\newcount\ppcm%
\newcommand\PPCM[2]{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTicketCaisse.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTicketCaisse.tex
index 1c460e36939..2286b083329 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTicketCaisse.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTicketCaisse.tex
@@ -1,8 +1,16 @@
%%%
% Ticket de caisse
%%%
+\def\filedateTicketCaisse{2024/08/04}%
+\def\fileversionTicketCaisse{0.1}%
+\message{-- \filedateTicketCaisse\space v\fileversionTicketCaisse}%
+%
\newcounter{PfCNbInsulte}%
+\newcounter{PfCChoixService}%
\setcounter{PfCNbInsulte}{0}%
+\setcounter{PfCChoixService}{0}%
+%
+\newlength\PfCTicketLarg
\NewDocumentCommand\PfCPrixInsulte{sm}{%
\setsepchar{,}\ignoreemptyitems%
@@ -67,15 +75,17 @@
}%
\makeatother
-\setKVdefault[TicketCaisse]{Largeur=222,Especes=50,Enseigne=Au comptoir des maths,DateAchat=\today,HeureAchat=15:13:34,Taches=false,Rendu,Total,UK=false,US=false,CFA=false,CFP=false,CHF=false,Euro=false,Solution=false}
+\setKVdefault[TicketCaisse]{Largeur=222pt,Especes=50,Simple=false,Taxes=false,SansRendu=false,Enseigne=Au comptoir des maths,DateAchat=\today,HeureAchat=15:13:34,Taches=false,Rendu,Total,SousTotal=false,UK=false,US=false,CFA=false,CFP=false,CHF=false,Euro=false,Solution=false}
\defKV[TicketCaisse]{Couleur=\colorlet{PfCTicketCouleurSolution}{#1}\setKV[TicketCaisse]{Solution}}
+\defKV[TicketCaisse]{Service=\setKV[TicketCaisse]{Taxes}}
-\NewDocumentCommand\TicketCaisse{om}{%
+\NewDocumentCommand\TicketCaisse{som}{%
\setcounter{PfCNbInsulte}{0}%
\useKVdefault[TicketCaisse]%
- \setKV[TicketCaisse]{#1}%
+ \setKV[TicketCaisse]{#2}%
+ \setlength{\PfCTicketLarg}{\useKV[TicketCaisse]{Largeur}}%
\setsepchar[*]{,*/}%
- \readlist*\ListeAchats{#2}%
+ \readlist*\ListeAchats{#3}%
% On fait trois listes pour les retenir
% Liste Quantités
\xdef\PfCFooQuantites{}%
@@ -122,9 +132,123 @@
\xintFor* ##1 in{\xintSeq{1}{\ListeAchatslen}}\do{%
\xdef\PfCTCTotal{\fpeval{\PfCTCTotal+\ListeQuantites[##1]*\ListePUnitaires[##1]}}%
}%
-% Le coût total est \PfCTCTotal\\
+ \ifboolKV[TicketCaisse]{Taxes}{%
+ % On décompose la clé
+ \StrChar{\useKV[TicketCaisse]{Service}}{1}[\MyLetter]%
+ % Si le premier caractère est !, il faut regarder si le deuxième caractère est une étoile
+ \IfStrEq{\MyLetter}{!}{%
+ \StrChar{\useKV[TicketCaisse]{Service}}{2}[\MyLettera]%
+ \IfStrEq{\MyLettera}{*}{%
+ \StrGobbleLeft{\useKV[TicketCaisse]{Service}}{2}[\PfCTCValeurService]
+ \setcounter{PfCChoixService}{3}%
+ }{%
+ \StrGobbleLeft{\useKV[TicketCaisse]{Service}}{1}[\PfCTCValeurService]
+ \setcounter{PfCChoixService}{1}%
+ }%
+ }{%il faut regarder si c'est une étoile
+ \StrChar{\useKV[TicketCaisse]{Service}}{1}[\MyLettera]%
+ \IfStrEq{\MyLettera}{*}{%
+ \StrGobbleLeft{\useKV[TicketCaisse]{Service}}{1}[\PfCTCValeurService]
+ \setcounter{PfCChoixService}{2}
+ }{%
+ \xdef\PfCTCValeurService{\useKV[TicketCaisse]{Service}}%
+ \setcounter{PfCChoixService}{0}
+ }%
+ }%
+ % On fait les calculs associés à la clé.
+ \xdef\PfCTCSousTotal{\PfCTCTotal}%
+ \xdef\PfCTCService{\fpeval{\PfCTCValeurService*\PfCTCSousTotal/100}}%
+ \xdef\PfCTCTotal{\fpeval{\PfCTCSousTotal+\PfCTCService}}%
+ }{}%
+ % Le coût total est \PfCTCTotal\\
+ \IfBooleanTF{#1}{%
+ \ttfamily
+ \begin{tabular}{|m{0.48\PfCTicketLarg}m{0.13\PfCTicketLarg}m{0.165\PfCTicketLarg}m{0.225\PfCTicketLarg}|}%
+ \hline
+ &&&\\%
+ \multicolumn{4}{|c|}{\Large\bfseries\useKV[TicketCaisse]{Enseigne}}\\%
+ &&&\\%
+ \hline%
+ &&&\\%
+ \footnotesize\sc Description&\centering \footnotesize\sc Qte.&\centering\footnotesize\sc P.u.&\hfill\footnotesize\sc Prix \ifboolKV[TicketCaisse]{Taxes}{H.T.}{Net}\\%
+ &&&\\%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeAchatslen}}\do{%
+ \ListeElements[##1]&%
+ \centering
+ \footnotesize%
+ \StrChar{\ListeAchats[##1,1]}{1}[\MyLetter]%
+ \IfStrEq{\MyLetter}{!}{\PfCPrixInsulte*{\ListeQuantites[##1]}}{\xintifboolexpr{\fpeval{\ListeQuantites[##1]}==1}{}{\num{\ListeQuantites[##1]}}}%
+ &
+ \hfill
+ \footnotesize
+ %Savoir si le nombre d'articles est affiché
+ \StrChar{\ListeAchats[##1,1]}{1}[\MyLetter]%
+ % Si le nombre d'articles n'est pas affiché, il faut impérativement afficher le prix unitaire
+ \IfStrEq{\MyLetter}{!}{%
+ \PrixTicket{\ListePUnitaires[##1]}%
+ }{%
+ % On regarde si on affiche le prix unitaire
+ \StrChar{\ListeAchats[##1,3]}{1}[\MyLettera]%
+ % Si c'est un !, on affiche pas
+ % Sinon, on affiche
+ \IfStrEq{\MyLettera}{!}{%
+ \PfCPrixInsulte*{\PrixTicket{\ListePUnitaires[##1]}}%
+ }{%
+ \xintifboolexpr{\fpeval{\ListeQuantites[##1]}==1}{}{%
+ \PrixTicket{\ListePUnitaires[##1]}%
+ }%
+ }%
+ }%
+ &\hfill
+ \StrChar{\ListeAchats[##1,3]}{1}[\MyLetter]%
+ % Si le premier caractère est !, il faut regarder si le deuxième caractère est une étoile
+ \IfStrEq{\MyLetter}{!}{%
+ \StrChar{\ListeAchats[##1,3]}{2}[\MyLettera]%
+ \IfStrEq{\MyLettera}{*}{%
+ \PfCPrixInsulte*{\PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}}%
+ }{%
+ \PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}%
+ }%
+ }{%il faut regarder si c'est une étoile
+ \StrChar{\ListeAchats[##1,3]}{1}[\MyLettera]%
+ \IfStrEq{\MyLettera}{*}{%
+ \PfCPrixInsulte{\PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}}%
+ }{%
+ \PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}%
+ }%
+ }%
+ \\
+ }%
+ &&&\\%
+ \hline%
+ &&&\\
+ % Partie Service
+ \ifboolKV[TicketCaisse]{Taxes}{%
+ Total H.T.\uppercase{&}\uppercase{&}\uppercase{&}\hfill\ifboolKV[TicketCaisse]{SousTotal}{\ifnum\thePfCNbInsulte=0\relax\PrixTicket{\PfCTCSousTotal}\else\PfCPrixInsulte*{\PrixTicket{\PfCTCSousTotal}}\fi}{\PfCPrixInsulte*{\PrixTicket{\PfCTCSousTotal}}}
+ \\%
+ Service %
+ \ifodd\thePfCChoixService\relax \PfCPrixInsulte{\num{\PfCTCValeurService}}\else\num{\PfCTCValeurService}\fi~\si{\percent}%
+ &&&\hfill
+ \ifnum\thePfCChoixService>1\relax \PfCPrixInsulte{\PrixTicket{\PfCTCService}}\else\PrixTicket{\PfCTCService}\fi%
+ \\
+ &&&\\
+ \hline
+ &&&\\
+ }{}%
+ \ifboolKV[TicketCaisse]{Simple}{}{%
+ Total\ifboolKV[TicketCaisse]{Taxes}{ T.T.C.}{}&&&\hfill\ifboolKV[TicketCaisse]{Total}{\ifnum\thePfCNbInsulte=0\relax\PrixTicket{\PfCTCTotal}\else\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}\fi}{\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}}\\%
+ \ifboolKV[TicketCaisse]{SansRendu}{}{%
+ Espèces&&&\hfill\PrixTicket{\useKV[TicketCaisse]{Especes}}\\%
+ Rendu&&&\hfill\ifboolKV[TicketCaisse]{Rendu}{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}{\PfCPrixInsulte*{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}}\\%
+ }
+ &&&\\%
+ }%
+ \multicolumn{4}{|c|}{\footnotesize\useKV[TicketCaisse]{DateAchat}\qquad\useKV[TicketCaisse]{HeureAchat}}\\%
+ \hline
+ \end{tabular}
+ }{%
{\ttfamily%
- \begin{NiceTabular}{m{107pt}m{29pt}m{36pt}m{50pt}}%
+ \begin{NiceTabular}{m{0.48\PfCTicketLarg}m{0.13\PfCTicketLarg}m{0.165\PfCTicketLarg}m{0.225\PfCTicketLarg}}%
\CodeBefore
\tikz\node[opacity=0.2,yshift=-1.5cm] at ($(1-|1)!0.5!(1-|last)$) {\Large\bfseries\reflectbox{
\begin{tabular}{c}
@@ -148,7 +272,7 @@
\\%
\Cdots\\%
\\%
- \Block[l]{}{\footnotesize\sc Description}&\Block{}{\footnotesize\sc Qte.}&\Block{}{\footnotesize\sc P.u.}&\Block[r]{}{\footnotesize\sc Prix Net}\\%
+ \Block[l]{}{\footnotesize\sc Description}&\Block{}{\footnotesize\sc Qte.}&\Block{}{\footnotesize\sc P.u.}&\Block[r]{}{\footnotesize\sc Prix \ifboolKV[TicketCaisse]{Taxes}{H.T.}{Net}}\\%
\\%
\xintFor* ##1 in{\xintSeq{1}{\ListeAchatslen}}\do{%
\ListeElements[##1]&%
@@ -200,11 +324,28 @@
}%
\\%
\Cdots\\%
- Total&&&\Block[r]{}{\ifboolKV[TicketCaisse]{Total}{\ifnum\thePfCNbInsulte=0\relax\PrixTicket{\PfCTCTotal}\else\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}\fi}{\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}}}\\%
- Espèces&&&\Block[r]{}{\PrixTicket{\useKV[TicketCaisse]{Especes}}}\\%
- Rendu&&&\Block[r]{}{\ifboolKV[TicketCaisse]{Rendu}{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}{\PfCPrixInsulte*{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}}}\\%
+ % Partie Service
+ \ifboolKV[TicketCaisse]{Taxes}{%
+ Total H.T.&&&\Block[r]{}{\ifboolKV[TicketCaisse]{SousTotal}{\ifnum\thePfCNbInsulte=0\relax\PrixTicket{\PfCTCSousTotal}\else\PfCPrixInsulte*{\PrixTicket{\PfCTCSousTotal}}\fi}{\PfCPrixInsulte*{\PrixTicket{\PfCTCSousTotal}}}
+ }\\%
+ Service %
+ \ifodd\thePfCChoixService\relax \PfCPrixInsulte{\num{\PfCTCValeurService}}\else\num{\PfCTCValeurService}\fi~\si{\percent}%
+ &&&\Block[r]{}{%
+ \ifnum\thePfCChoixService>1\relax \PfCPrixInsulte{\PrixTicket{\PfCTCService}}\else\PrixTicket{\PfCTCService}\fi%
+ }\\
+ \Cdots\\
+ \\
+ }{}%
+ \ifboolKV[TicketCaisse]{Simple}{}{%
+ Total\ifboolKV[TicketCaisse]{Taxes}{ T.T.C.}{}&&&\Block[r]{}{\ifboolKV[TicketCaisse]{Total}{\ifnum\thePfCNbInsulte=0\relax\PrixTicket{\PfCTCTotal}\else\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}\fi}{\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}}}\\%
+ \ifboolKV[TicketCaisse]{SansRendu}{}{%
+ Espèces&&&\Block[r]{}{\PrixTicket{\useKV[TicketCaisse]{Especes}}}\\%
+ Rendu&&&\Block[r]{}{\ifboolKV[TicketCaisse]{Rendu}{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}{\PfCPrixInsulte*{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}}}\\%
+ }
\\%
- \Block{1-4}{\footnotesize\useKV[TicketCaisse]{DateAchat}\qquad\useKV[TicketCaisse]{HeureAchat}}&&&\\%
+ }%
+ \Block{1-4}{\footnotesize\useKV[TicketCaisse]{DateAchat}\qquad\useKV[TicketCaisse]{HeureAchat}}&&&\\%
\end{NiceTabular}
}%
+ }
}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTortueBase.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTortueBase.tex
index 949c781ce78..05a6524e987 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTortueBase.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTortueBase.tex
@@ -1,6 +1,10 @@
%%%
% Tortue
%%%
+\def\filedateTortue{2024/08/04}%
+\def\fileversionTortue{0.1}%
+\message{-- \filedateTortue\space v\fileversionTortue}%
+%
\setKVdefault[Tortue]{%
Pas=0.2mm,%Déplacement,
Etapes=false,%Pour arrêter la construction à une étape particulière
@@ -18,9 +22,10 @@
Axes=false,%Affichage des axes ou pas
Origine={(0,0)},%Origine des axes
Cases=false,%Se déplace-t-on sur des cases ?
+ Trace=false%
}
\defKV[Tortue]{Etape=\setKV[Tortue]{Etapes}}%choix de l'étape d'arrêt
-
+\defKV[Tortue]{Traces=\setKV[Tortue]{Trace}}%
\newcounter{PfCTortue}
\setcounter{PfCTortue}{0}
@@ -178,6 +183,9 @@
\ifboolKV[Tortue]{Etapes}{%
\immediate\write\turtle@out{drawoptions(withcolor DarkGreen);label(btex \noexpand\Large\noexpand\ding{40} etex rotated RetiensAngle[Total] scaled 1.5,A[Total]);}%
}{\ifboolKV[Tortue]{TortueF}{\immediate\write\turtle@out{drawoptions(withcolor DarkGreen);label(btex \noexpand\Large\noexpand\ding{40} etex rotated RetiensAngle[k] scaled 1.5,A[k]);}}{}}%
+ \ifboolKV[Tortue]{Trace}{%
+ \immediate\write\turtle@out{\useKV[Tortue]{Traces}}%
+ }{}%
\immediate\closeout\turtle@out%
\restorecomparemode%
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex
index 38fe05ce606..0bd7a90da63 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex
@@ -1,6 +1,10 @@
%%%
% Trigonom\'etrie
%%%
+\def\filedateTrigo{2024/08/04}%
+\def\fileversionTrigo{0.1}%
+\message{-- \filedateTrigo\space v\fileversionTrigo}%
+%
\def\MPFigTrigo#1#2#3#4#5#6#7#8{%
\ifluatex
% \mplibcodeinherit{enable}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex
index 560258ff59d..06c0a77e3bc 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex
@@ -1,3 +1,10 @@
+%%%
+%Trio
+%%%
+\def\filedateTrio{2024/08/04}%
+\def\fileversionTrio{0.1}%
+\message{-- \filedateTrio\space v\fileversionTrio}%
+%
\newlength\PfCTrioHauteur%
\newcounter{PfCTrioLettre}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTriominos.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTriominos.tex
index efc6cd24b31..b2ece6c0d49 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTriominos.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTriominos.tex
@@ -1,6 +1,10 @@
%%%
% Triominos
%%%
+\def\filedateTriominos{2024/08/04}%
+\def\fileversionTriominos{0.1}%
+\message{-- \filedateTriominos\space v\fileversionTriominos}%
+%
\setKVdefault[ClesTriomino]{Longueur=5cm,Etages=3,Ecart=0.6,AffichagePiece=false,Hexagone=false,Recapitulatif=false,Colonnes=2}%
\defKV[ClesTriomino]{Piece=\setKV[ClesTriomino]{AffichagePiece=true}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCUrneProba.tex b/Master/texmf-dist/tex/latex/profcollege/PfCUrneProba.tex
new file mode 100644
index 00000000000..0d00e039c41
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCUrneProba.tex
@@ -0,0 +1,932 @@
+%%%
+% Urne et probabilités
+%%%
+\def\filedateUrneProba{2024/08/04}%
+\def\fileversionUrneProba{0.1}%
+\message{-- \filedateUrneProba\space v\fileversionUrneProba}%
+%
+\newtoks\tokUrneListeCouleurs%
+\newtoks\tokUrneListeColonnes%
+\newtoks\tokUrneListeNombres%
+
+\def\UpdatetoksUrneCouleurs#1\nil{\addtotok\tokUrneListeCouleurs{#1,}}%
+\def\UpdatetoksUrneNombres#1\nil{\addtotok\tokUrneListeNombres{"#1",}}%
+\def\UpdatetoksUrneColonnes#1\nil{\addtotok\tokUrneListeColonnes{"#1",}}%
+
+\setKVdefault[PfCUrne]{Couleurs=false,Nombres=false,Pas=4,Echelle=1,Repartition={1,2,3},Double=false,RepartitionC={1,2,3},RepartitionN={1,2,3},Roue=false,Rayon=3,Tableau=false,SansRemise=false,Solution=false,Codes=false,CouleurLigne=0.85white,CouleurColonne=0.85white,Different=false,RepartitionLigne={1,2,3},RepartitionColonne={1,2,3},Impression,Casino=false}%
+\defKV[PfCUrne]{Traces=\setKV[PfCUrne]{Codes}}%
+\defKV[PfCUrne]{ListeCouleurs=\setKV[PfCUrne]{Couleurs}\setsepchar{,}\ignoreemptyitems\readlist*\ListeCouleursAv{#1}\reademptyitems}%
+\defKV[PfCUrne]{ListeNombres=\setKV[PfCUrne]{Nombres}\setsepchar{,}\ignoreemptyitems\readlist*\ListeNombresAv{#1}\reademptyitems}%
+\defKV[PfCUrne]{ListeColonne=\setsepchar{,}\ignoreemptyitems\readlist*\ListeCouleursAv{#1}\reademptyitems}%
+\defKV[PfCUrne]{ListeLigne=\setsepchar{,}\ignoreemptyitems\readlist*\ListeNombresAv{#1}\reademptyitems}%
+
+\NewDocumentCommand\BuildRoulette{}{%
+ \ifluatex
+ \begin{Geometrie}[Cadre="aucun"]
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+
+ color colzero,colrouge,coltoura,coltourb,colbarre;
+
+ boolean Impression;
+ Impression=\useKV[PfCUrne]{Impression};
+
+ if Impression=false:
+ colzero=green;
+ colrouge=red;
+ coltoura=(179,103,0)/256;
+ coltourb=(179,111,48)/256;%(184,114,50)/256;
+ colbarre=0.7529white;
+ else:
+ colzero=white;
+ colrouge=white;
+ coltoura=black;
+ coltourb=black;
+ colbarre=black;
+ fi;
+ pair O,A[],B[],C[],D[];
+ path cc[];
+ O=(0,0);
+ cc1=cercles(O,2u);
+ cc2=cercles(O,2.75u);
+ cc3=cercles(O,3.5u);
+ cc4=cercles(O,3.7u);
+ cc5=cercles(O,4u);
+ cc6=cercles(O,3.125u);
+ cc7=cercles(O,2.375u);
+ if Impression=false:
+ fill cc5 withcolor coltoura;
+ fill cc4 withcolor coltourb;
+ fill cc1 withcolor coltoura;
+ trace cc1 withpen pencircle scaled 1.05;
+ trace cc5 withpen pencircle scaled 1.05;
+ trace cc4 withpen pencircle scaled 1.05;
+ trace cc3 withpen pencircle scaled 1.05;
+ else:
+ fill cc5;
+ fill cc4 withcolor white;
+ trace cc1;
+ trace cc3;
+ fi;
+ for k=0 upto 38:
+ A[k]=pointarc(cc3,90-k*(360/37));
+ B[k]=pointarc(cc1,90-k*(360/37));
+ endfor;
+ na:=1;
+ for p_=32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10,5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26,0:
+ if (na mod 2)=0:
+ fill arccercle(A[na],A[na-1],O)--B[na-1]--reverse(arccercle(B[na],B[na-1],O))--cycle;
+ drawoptions(withcolor white);
+ label(TEX("\textbf{"&decimal(p_)&"}") rotated (-na*(360/37)),pointarc(cc6,90+0.5*(360/37)-na*(360/37)));
+ drawoptions();
+ else:
+ if p_=0:
+ fill arccercle(A[na],A[na-1],O)--B[na-1]--reverse(arccercle(B[na],B[na-1],O))--cycle withcolor colzero;
+ else:
+ fill arccercle(A[na],A[na-1],O)--B[na-1]--reverse(arccercle(B[na],B[na-1],O))--cycle withcolor colrouge;
+ fi;
+ if Impression=false:
+ drawoptions(withcolor white);
+ fi;
+ label(TEX("\textbf{"&decimal(p_)&"}") rotated (-na*(360/37)),pointarc(cc6,90+0.5*(360/37)-na*(360/37)));
+ if Impression=false:
+ drawoptions();
+ fi;
+ fi;
+ trace arccercle(A[na],A[na-1],O)--B[na-1]--reverse(arccercle(B[na],B[na-1],O))--cycle;
+ na:=na+1;
+ endfor;
+ trace cc2;
+ fill cercles(pointarc(cc7,90+0.5*(360/37)),0.125u);%dotlabel("",);
+ % barre
+ cc8=cercles(O,1.5u);
+ cc9=cercles(O,0.25u);
+ fill cc9 withcolor colbarre;
+ pair E[];
+ anglebase=floor(uniformdeviate(360));
+ E1=pointarc(cc8,anglebase);
+ E4=pointarc(cc8,anglebase+6);
+ E3=symetrie(E1,O);
+ E2=symetrie(E4,O);
+ E5=pointarc(cc8,anglebase+90);
+ E8=pointarc(cc8,anglebase+6+90);
+ E7=symetrie(E5,O);
+ E6=symetrie(E8,O);
+ fill polygone(E1,E2,E3,E4) withcolor colbarre;
+ fill polygone(E5,E6,E7,E8) withcolor colbarre;
+ pair F[];
+ F1=(E1--iso(E1,E2)) intersectionpoint cc9;
+ F2=(E4--iso(E3,E4)) intersectionpoint cc9;
+ F3=(E5--iso(E6,E5)) intersectionpoint cc9;
+ F4=(E8--iso(E7,E8)) intersectionpoint cc9;
+ F5=(E3--iso(E4,E3)) intersectionpoint cc9;
+ F6=(E2--iso(E2,E1)) intersectionpoint cc9;
+ F7=(E7--iso(E8,E7)) intersectionpoint cc9;
+ F8=(E6--iso(E6,E5)) intersectionpoint cc9;
+ trace E1--E4--F2--arccercle(F2,F3,O)--E5--E8--F4--arccercle(F4,F5,O)--E3--E2--F6--arccercle(F6,F7,O)--E7--E6--F8--arccercle(F8,F1,O)--cycle;
+ \end{Geometrie}
+ \fi
+}%
+
+\NewDocumentCommand\BuildTableauDoubleEntreeDifferent{mmmm}{%
+ % #1 : les labels en colonne
+ % #2 : les labels en ligne
+ % #3 : la répartition en colonne
+ % #4 : la répartition en ligne
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+ numeric RetiensNumC[],RetiensNumL[];
+ %
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNumL[n]=p_;
+ n:=n+1;
+ endfor;
+ totallignes=n;
+ enddef;
+ %
+ vardef RecupRepartitionC(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNumC[n]=p_;
+ n:=n+1;
+ endfor;
+ totalcolonnes=n;
+ enddef;
+ %
+ string Colonnes[];
+ vardef RecuperationColonnes(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Colonnes[n]=p_;
+ endfor;
+ enddef;
+ %
+ string Lignes[];
+ vardef RecuperationLignes(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Lignes[n]=p_;
+ endfor;
+ enddef;
+ %
+ boolean Solution, Codes;
+ Solution=\useKV[PfCUrne]{Solution};
+ Codes=\useKV[PfCUrne]{Codes};
+ %
+ color ColLigne,ColColonne;
+ ColLigne=\useKV[PfCUrne]{CouleurLigne};
+ ColColonne=\useKV[PfCUrne]{CouleurColonne};
+ %
+ RecupRepartitionC(#3);
+ RecupRepartition(#4);
+ RecuperationColonnes(#1);
+ RecuperationLignes(#2);
+
+ pair A[][],C[][];
+ for k=0 upto totallignes+1:
+ for l=0 upto totalcolonnes+1:
+ A[k][l]=(0,0) shifted(u*(l,-k));
+ C[k][l]=A[k][l] shifted(u*(0.5,-0.5));
+ endfor;
+ endfor;
+
+ fill polygone(A[0][1],A[0][totalcolonnes+1],A[1][totalcolonnes+1],A[1][1]) withcolor ColLigne;
+ fill polygone(A[1][0],A[totallignes+1][0],A[totallignes+1][1],A[1][1]) withcolor ColColonne;
+ for k=1 upto totalcolonnes:
+ label(TEX(Colonnes[RetiensNumC[k-1]]),iso(A[1][k],A[0][k+1]));
+ endfor;
+ for k=1 upto totallignes:
+ label(TEX(Lignes[RetiensNumL[k-1]]),iso(A[k][0],A[k+1][1]));
+ endfor;
+ %
+ for k=1 upto totallignes:
+ trace segment(A[k][0],A[k][totalcolonnes+1]);
+ endfor;
+ for k=1 upto totalcolonnes:
+ trace segment(A[0][k],A[totallignes+1][k]);
+ endfor;
+ trace A[1][0]--A[totallignes+1][0]--A[totallignes+1][totalcolonnes+1]--A[0][totalcolonnes+1]--A[0][1];
+ labeloffset:=labeloffset*4;
+ label.top(TEX("Tirage 1"),iso(A[0][1],A[0][totalcolonnes+1]));
+ label.lft(TEX("Tirage 2") rotated 90,iso(A[totallignes+1][0],A[1][0]));
+ labeloffset:=labeloffset/4;
+
+ path ccsol[][];
+
+ if Solution:
+ for k=1 upto totallignes:
+ for l=1 upto totalcolonnes:
+ label(TEX(Colonnes[RetiensNumC[l-1]]&"--"&Lignes[RetiensNumL[k-1]]),iso(A[k][l],A[k+1][l+1]));
+ endfor;
+ endfor;
+ fi;
+
+ if Codes:
+ \useKV[PfCUrne]{Traces};
+ fi;
+ \end{mplibcode}
+ \fi
+}%
+
+\NewDocumentCommand\BuildTableauDoubleEntree{mmm}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+ numeric RetiensNum[];
+ %
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+ %
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+ %
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+ %
+ numeric Pas,Rayon;
+ Pas=\useKV[PfCUrne]{Pas};
+ Rayon=\useKV[PfCUrne]{Rayon};
+ %
+ boolean Couleurs, Nombres, Roue, Solution, SansRemise, Codes;
+ Couleurs=\useKV[PfCUrne]{Couleurs};
+ Nombres=\useKV[PfCUrne]{Nombres};
+ Roue=\useKV[PfCUrne]{Roue};
+ Solution=\useKV[PfCUrne]{Solution};
+ SansRemise=\useKV[PfCUrne]{SansRemise};
+ Codes=\useKV[PfCUrne]{Codes};
+
+ color ColLigne,ColColonne;
+ ColLigne=\useKV[PfCUrne]{CouleurLigne};
+ ColColonne=\useKV[PfCUrne]{CouleurColonne};
+
+ RecupRepartition(#3);
+ if Couleurs:
+ RecuperationCouleurs(#1);
+ fi;
+ if Nombres:
+ RecuperationNombres(#2);
+ fi;
+
+ pair O;
+ pair A[][],C[][];
+ for k=0 upto totalboules+1:
+ for l=0 upto totalboules+1:
+ A[k][l]:=(0,0) shifted(u*(l,-k));
+ endfor;
+ endfor;
+
+ for k=0 upto totalboules:
+ for l=0 upto totalboules:
+ C[k][l]=A[k][l] shifted(u*(0.5,-0.5));
+ endfor;
+ endfor;
+
+ if Couleurs:
+ drawoptions(withpen pencircle scaled 0.75);
+ for k=1 upto totalboules:
+ fill cercles(iso(A[1][k],A[0][k+1]),0.35u) withcolor Col[RetiensNum[k-1]];
+ fill cercles(iso(A[k][0],A[k+1][1]),0.35u) withcolor Col[RetiensNum[k-1]];
+ trace cercles(iso(A[1][k],A[0][k+1]),0.35u);
+ trace cercles(iso(A[k][0],A[k+1][1]),0.35u);
+ endfor;
+ drawoptions();
+ else:
+ fill polygone(A[0][1],A[0][totalboules+1],A[1][totalboules+1],A[1][1]) withcolor ColLigne;
+ fill polygone(A[1][0],A[totalboules+1][0],A[totalboules+1][1],A[1][1]) withcolor ColColonne;
+ for k=1 upto totalboules:
+ label(TEX(Nombres[RetiensNum[k-1]]),iso(A[1][k],A[0][k+1]));
+ label(TEX(Nombres[RetiensNum[k-1]]),iso(A[k][0],A[k+1][1]));
+ endfor;
+ fi;
+ if SansRemise:
+ for k=1 upto totalboules:
+ draw 1/8[A[k][k],A[k+1][k+1]]--7/8[A[k][k],A[k+1][k+1]];
+ draw 1/8[A[k+1][k],A[k][k+1]]--7/8[A[k+1][k],A[k][k+1]];
+ endfor;
+ fi;
+ for k=1 upto totalboules:
+ trace segment(A[k][0],A[k][totalboules+1]);
+ trace segment(A[0][k],A[totalboules+1][k]);
+ endfor;
+ trace A[1][0]--A[totalboules+1][0]--A[totalboules+1][totalboules+1]--A[0][totalboules+1]--A[0][1];
+ labeloffset:=labeloffset*4;
+ label.top(TEX("Tirage 1"),iso(A[0][1],A[0][totalboules+1]));
+ label.lft(TEX("Tirage 2") rotated 90,iso(A[totalboules+1][0],A[1][0]));
+ labeloffset:=labeloffset/4;
+
+ path ccsol[][];
+
+ if Solution:
+ if Couleurs:
+ drawoptions(withpen pencircle scaled 0.75);
+ for k=1 upto totalboules:
+ for l=1 upto totalboules:
+ ccsol[k][l]=cercles(iso(A[k][l],A[k+1][l+1]),0.25u);
+ if SansRemise:
+ if k<>l:
+ fill arccercle(pointarc(ccsol[k][l],315),pointarc(ccsol[k][l],135),iso(A[k][l],A[k+1][l+1]))--iso(A[k][l],A[k+1][l+1])--cycle withcolor Col[RetiensNum[l-1]];
+ fill arccercle(pointarc(ccsol[k][l],135),pointarc(ccsol[k][l],315),iso(A[k][l],A[k+1][l+1]))--iso(A[k][l],A[k+1][l+1])--cycle withcolor Col[RetiensNum[k-1]];
+ trace segment(pointarc(ccsol[k][l],135),pointarc(ccsol[k][l],315));
+ trace ccsol[k][l];
+ fi;
+ else:
+ fill arccercle(pointarc(ccsol[k][l],315),pointarc(ccsol[k][l],135),iso(A[k][l],A[k+1][l+1]))--iso(A[k][l],A[k+1][l+1])--cycle withcolor Col[RetiensNum[l-1]];
+ fill arccercle(pointarc(ccsol[k][l],135),pointarc(ccsol[k][l],315),iso(A[k][l],A[k+1][l+1]))--iso(A[k][l],A[k+1][l+1])--cycle withcolor Col[RetiensNum[k-1]];
+ trace segment(pointarc(ccsol[k][l],135),pointarc(ccsol[k][l],315));
+ trace ccsol[k][l];
+ fi;
+ endfor;
+ endfor;
+ drawoptions();
+ else:
+ for k=1 upto totalboules:
+ for l=1 upto totalboules:
+ if SansRemise:
+ if k<>l:
+ label(TEX(Nombres[RetiensNum[l-1]]&"--"&Nombres[RetiensNum[k-1]]),iso(A[k][l],A[k+1][l+1]));
+ fi;
+ else:
+ label(TEX(Nombres[RetiensNum[l-1]]&"--"&Nombres[RetiensNum[k-1]]),iso(A[k][l],A[k+1][l+1]));
+ fi;
+ endfor;
+ endfor;
+ fi;
+ fi;
+
+ if Codes:
+ \useKV[PfCUrne]{Traces};
+ fi;
+ \end{mplibcode}
+ \fi
+}%
+
+\NewDocumentCommand\BuildUrne{mmm}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+ numeric RetiensNum[];
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+
+ numeric Pas,Rayon;
+ Pas=\useKV[PfCUrne]{Pas};
+ Rayon=\useKV[PfCUrne]{Rayon};
+
+ boolean Couleurs, Nombres, Roue;
+ Couleurs=\useKV[PfCUrne]{Couleurs};
+ Nombres=\useKV[PfCUrne]{Nombres};
+ Roue=\useKV[PfCUrne]{Roue};
+
+ RecupRepartition(#3);
+ if Couleurs:
+ RecuperationCouleurs(#1);
+ fi;
+ if Nombres:
+ RecuperationNombres(#2);
+ fi;
+
+ pair O;
+ pair A[],B[];
+
+ if Roue:
+ O=(0,0);
+ path cc;
+ cc=cercles(O,Rayon*u);
+ angd=180/totalboules;
+ angr=360/totalboules;
+ for k=1 upto totalboules:
+ A[k]=17/20[O,pointarc(cc,angd+(k-1)*angr)];
+ endfor;
+ drawarrow rotation((O+u*(0,1.35*Rayon))--(O+u*(0,1.1*Rayon)),O,angd);
+ % trace cc;
+ B[0]=pointarc(cc,0);
+ for k=1 upto totalboules:
+ B[k]=pointarc(cc,k*angr);
+ if Couleurs:
+ fill O--arccercle(B[k-1],B[k],O)--cycle withcolor if unknown Col[RetiensNum[k-1]]:white else: Col[RetiensNum[k-1]] fi;
+ else:
+ label(TEX(Nombres[RetiensNum[k-1]]),A[k]);
+ fi;
+ endfor;
+ trace cc;
+ for k=1 upto totalboules:
+ trace O--B[k];
+ endfor;
+ else:
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ A[rang]=u*(0.5,0.5)+u*(l,k);
+ if Couleurs:
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensNum[rang]]:white else: Col[RetiensNum[rang]] fi;
+ else:
+ label(TEX(Nombres[RetiensNum[rang]]),A[rang]);
+ fi;
+ %trace cercles(A[k*Pas+l],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ A[rang]=u*(0.5,0.5)+u*(k+0.5,totalboules div Pas-1+cosd(30));
+ if Couleurs:
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensNum[rang]]:white else: Col[RetiensNum[rang]] fi;
+ else:
+ label(TEX(Nombres[RetiensNum[rang]]),A[rang]);
+ fi;
+ %trace cercles(A[(totalboules div Pas)*Pas+k],0.5u);
+ endfor;
+ %
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ %
+ drawoptions(withpen pencircle scaled 1.2);
+ if totalboules<Pas:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0-(1-cosd(30)))--u*(Pas,0-(1-cosd(30)))--u*(Pas,(totalboules div Pas)+1.15);
+ else:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0)--u*(Pas,0)--u*(Pas,(totalboules div Pas)+1.15);
+ fi;
+ fi;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={u:=\useKV[PfCUrne]{Echelle}*1cm;numeric Pas;Pas=\useKV[PfCUrne]{Pas}; boolean Couleurs, Nombres; Couleurs=\useKV[PfCUrne]{Couleurs}; Nombres=\useKV[PfCUrne]{Nombres};}]
+ numeric RetiensNum[];
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+
+ RecupRepartition(#3);
+ if Couleurs:
+ RecuperationCouleurs(#1);
+ fi;
+ if Nombres:
+ RecuperationNombres(#2);
+ fi;
+
+ pair A[];
+
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ A[rang]=u*(0.5,0.5)+u*(l,k);
+ if Couleurs:
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensNum[rang]]:white else: Col[RetiensNum[rang]] fi;
+ else:
+ label(LATEX(Nombres[RetiensNum[rang]]),A[rang]);
+ fi;
+ %trace cercles(A[k*Pas+l],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ A[rang]=u*(0.5,0.5)+u*(k+0.5,totalboules div Pas-1+cosd(30));
+ if Couleurs:
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensNum[rang]]:white else: Col[RetiensNum[rang]] fi;
+ else:
+ label(LATEX(Nombres[RetiensNum[rang]]),A[rang]);
+ fi;
+ %trace cercles(A[(totalboules div Pas)*Pas+k],0.5u);
+ endfor;
+ %
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ %
+ drawoptions(withpen pencircle scaled 1.2);
+ if totalboules<Pas:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0-(1-cosd(30)))--u*(Pas,0-(1-cosd(30)))--u*(Pas,(totalboules div Pas)+1.15);
+ else:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0)--u*(Pas,0)--u*(Pas,(totalboules div Pas)+1.15);
+ fi;
+ \end{mpost}
+ \fi
+}%
+
+\NewDocumentCommand\BuildUrneDouble{mmmm}{%
+ % #1 Liste Couleurs
+ % #2 Liste Nombres
+ % #3 Repartition des couleurs
+ % #4 Repartition des nombres
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=\useKV[PfCUrne]{Echelle}*1cm;
+ numeric RetiensC[],RetiensNum[];
+ vardef RecupRepartitionC(text t)=
+ n:=0;
+ for p_=t:
+ RetiensC[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ enddef;
+
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+
+ numeric Pas,Rayon;
+ Pas=\useKV[PfCUrne]{Pas};
+ Rayon=\useKV[PfCUrne]{Rayon};
+
+ boolean Roue;
+ Roue=\useKV[PfCUrne]{Roue};
+
+ RecupRepartitionC(#3);
+ RecupRepartition(#4);
+ RecuperationCouleurs(#1);
+ RecuperationNombres(#2);
+
+ pair O;
+ pair A[],B[];
+
+ if Roue:
+ O=(0,0);
+ path cc;
+ cc=cercles(O,Rayon*u);
+ angd=180/totalboules;
+ angr=360/totalboules;
+ for k=1 upto totalboules:
+ A[k]=17/20[O,pointarc(cc,angd+(k-1)*angr)];
+ endfor;
+ B[0]=pointarc(cc,0);
+ for k=1 upto totalboules:
+ B[k]=pointarc(cc,k*angr);
+ fill O--arccercle(B[k-1],B[k],O)--cycle withcolor if unknown Col[RetiensC[k-1]]:white else: Col[RetiensC[k-1]] fi;
+ label(TEX(Nombres[RetiensNum[k-1]]),A[k]);
+ endfor;
+ trace cc;
+ for k=1 upto totalboules:
+ trace O--B[k];
+ endfor;
+ drawarrow rotation((O+u*(0,1.35*Rayon))--(O+u*(0,1.1*Rayon)),O,angd);
+ else:
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ A[rang]=u*(0.5,0.5)+u*(l,k);
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensC[rang]]:white else: Col[RetiensC[rang]] fi;
+ label(TEX(Nombres[RetiensNum[rang]]),A[rang]);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ A[rang]=u*(0.5,0.5)+u*(k+0.5,totalboules div Pas-1+cosd(30));
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensC[rang]]:white else: Col[RetiensC[rang]] fi;
+ label(TEX(Nombres[RetiensNum[rang]]),A[rang]);
+ endfor;
+ %
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ %
+ drawoptions(withpen pencircle scaled 1.2);
+ if totalboules<Pas:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0-(1-cosd(30)))--u*(Pas,0-(1-cosd(30)))--u*(Pas,(totalboules div Pas)+1.15);
+ else:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0)--u*(Pas,0)--u*(Pas,(totalboules div Pas)+1.15);
+ fi;
+ fi;
+ \end{mplibcode}
+ \else
+ \begin{mpost}[mpsettings={u:=\useKV[PfCUrne]{Echelle}*1cm;numeric RetiensC[],RetiensNum[];numeric Pas,Rayon;Pas=\useKV[PfCUrne]{Pas};Rayon=\useKV[PfCUrne]{Rayon};boolean Roue;Roue=\useKV[PfCUrne]{Roue};}]
+ vardef RecupRepartitionC(text t)=
+ n:=0;
+ for p_=t:
+ RetiensC[n]=p_;
+ n:=n+1;
+ endfor;
+ totalboules=n;
+ enddef;
+
+ vardef RecupRepartition(text t)=
+ n:=0;
+ for p_=t:
+ RetiensNum[n]=p_;
+ n:=n+1;
+ endfor;
+ enddef;
+
+ color Col[];
+ vardef RecuperationCouleurs(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ enddef;
+
+ string Nombres[];
+ vardef RecuperationNombres(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ Nombres[n]=p_;
+ endfor;
+ enddef;
+
+ RecupRepartitionC(#3);
+ RecupRepartition(#4);
+ RecuperationCouleurs(#1);
+ RecuperationNombres(#2);
+
+ pair O;
+ pair A[],B[];
+
+ if Roue:
+ O=(0,0);
+ path cc;
+ cc=cercles(O,Rayon*1cm);
+ angd=180/totalboules;
+ angr=360/totalboules;
+ for k=1 upto totalboules:
+ A[k]=17/20[O,pointarc(cc,angd+(k-1)*angr)];
+ endfor;
+ B[0]=pointarc(cc,0);
+ for k=1 upto totalboules:
+ B[k]=pointarc(cc,k*angr);
+ fill O--arccercle(B[k-1],B[k],O)--cycle withcolor if unknown Col[RetiensC[k-1]]:white else: Col[RetiensC[k-1]] fi;
+ label(LATEX(Nombres[RetiensNum[k-1]]),A[k]);
+ endfor;
+ trace cc;
+ for k=1 upto totalboules:
+ trace O--B[k];
+ endfor;
+ else:
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ A[rang]=u*(0.5,0.5)+u*(l,k);
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensC[rang]]:white else: Col[RetiensC[rang]] fi;
+ label(LATEX(Nombres[RetiensNum[rang]]),A[rang]);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ A[rang]=u*(0.5,0.5)+u*(k+0.5,totalboules div Pas-1+cosd(30));
+ fill cercles(A[rang],0.5u) withcolor if unknown Col[RetiensC[rang]]:white else: Col[RetiensC[rang]] fi;
+ label(LATEX(Nombres[RetiensNum[rang]]),A[rang]);
+ endfor;
+ %
+ for k=0 upto (totalboules div Pas)-1:
+ for l=0 upto Pas-1:
+ rang:=k*Pas+l;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ endfor;
+ for k=0 upto (totalboules mod Pas)-1:
+ rang:=(totalboules div Pas)*Pas+k;
+ trace cercles(A[rang],0.5u);
+ endfor;
+ %
+ drawoptions(withpen pencircle scaled 1.2);
+ if totalboules<Pas:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0-(1-cosd(30)))--u*(Pas,0-(1-cosd(30)))--u*(Pas,(totalboules div Pas)+1.15);
+ else:
+ trace u*(0,(totalboules div Pas)+1.15)--u*(0,0)--u*(Pas,0)--u*(Pas,(totalboules div Pas)+1.15);
+ fi;
+ fi;
+ \end{mpost}
+ \fi
+}%
+
+\NewDocumentCommand\SchemaProba{o}{%
+ \useKVdefault[PfCUrne]%
+ \setKV[PfCUrne]{#1}%
+ \tokUrneListeCouleurs{}%
+ \tokUrneListeNombres{}%
+ \tokUrneListeColonnes{}%
+ \ifboolKV[PfCUrne]{Casino}{%
+ \BuildRoulette%
+ }{%
+ \ifboolKV[PfCUrne]{Tableau}{%
+ \ifboolKV[PfCUrne]{Different}{%
+ \xdef\PfCFooRepartitionC{\useKV[PfCUrne]{RepartitionColonne}}%
+ \xdef\PfCFooRepartitionL{\useKV[PfCUrne]{RepartitionLigne}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRepartitionCAv{\PfCFooRepartitionC}%
+ \readlist*\ListeRepartitionLAv{\PfCFooRepartitionL}%
+ % Repartition : \showitems\ListeRepartitionAv[]%
+ \xdef\PfCFooListeRepartitionC{}%
+ \xdef\PfCFooListeRepartitionL{}%
+ \xdef\PfCTotalC{0}%
+ \xdef\PfCTotalL{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionCAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionCAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartitionC{\PfCFooListeRepartitionC,##1}%
+ \xdef\PfCTotalC{\fpeval{\PfCTotalC+1}}%
+ }%
+ }%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionLAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionLAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartitionL{\PfCFooListeRepartitionL,##1}%
+ \xdef\PfCTotalL{\fpeval{\PfCTotalL+1}}%
+ }%
+ }%
+ \foreachitem\compteur\in\ListeCouleursAv{\expandafter\UpdatetoksUrneColonnes\compteur\nil}%
+ \foreachitem\compteur\in\ListeNombresAv{\expandafter\UpdatetoksUrneNombres\compteur\nil}%
+ \BuildTableauDoubleEntreeDifferent{\the\tokUrneListeColonnes}{\the\tokUrneListeNombres}{\PfCFooListeRepartitionC}{\PfCFooListeRepartitionL}%
+ }{%
+ \xdef\PfCFooRepartition{\useKV[PfCUrne]{Repartition}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRepartitionAv{\PfCFooRepartition}%
+ \xdef\PfCFooListeRepartition{}%
+ \xdef\PfCTotal{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartition{\PfCFooListeRepartition,##1}%
+ \xdef\PfCTotal{\fpeval{\PfCTotal+1}}%
+ }%
+ }%
+ \ifboolKV[PfCUrne]{Couleurs}{%
+ \foreachitem\compteur\in\ListeCouleursAv{\expandafter\UpdatetoksUrneCouleurs\compteur\nil}%
+ \BuildTableauDoubleEntree{\the\tokUrneListeCouleurs}{}{\PfCFooListeRepartition}%
+ }{%
+ \ifboolKV[PfCUrne]{Nombres}{%
+ \foreachitem\compteur\in\ListeNombresAv{\expandafter\UpdatetoksUrneNombres\compteur\nil}%
+ \BuildTableauDoubleEntree{}{\the\tokUrneListeNombres}{\PfCFooListeRepartition}%
+ }{}%
+ }%
+ }%
+ }{%
+ \ifboolKV[PfCUrne]{Double}{%
+ \xdef\PfCFooRepartitionC{\useKV[PfCUrne]{RepartitionC}}%
+ \xdef\PfCFooRepartitionN{\useKV[PfCUrne]{RepartitionN}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRepartitionCAv{\PfCFooRepartitionC}%
+ \readlist*\ListeRepartitionNAv{\PfCFooRepartitionN}%
+ % Repartition : \showitems\ListeRepartitionAv[]%
+ \xdef\PfCFooListeRepartitionC{}%
+ \xdef\PfCFooListeRepartitionN{}%
+ \xdef\PfCTotalC{0}%
+ \xdef\PfCTotalN{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionCAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionCAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartitionC{\PfCFooListeRepartitionC,##1}%
+ \xdef\PfCTotalC{\fpeval{\PfCTotalC+1}}%
+ }%
+ }%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionNAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionNAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartitionN{\PfCFooListeRepartitionN,##1}%
+ \xdef\PfCTotalN{\fpeval{\PfCTotalN+1}}%
+ }%
+ }%
+ \MelangeListe{\PfCFooListeRepartitionC}{\PfCTotalC}%
+ \xdef\ListeRepartitionCouleurs{\faa}%
+ \foreachitem\compteur\in\ListeCouleursAv{\expandafter\UpdatetoksUrneCouleurs\compteur\nil}%
+ \MelangeListe{\PfCFooListeRepartitionN}{\PfCTotalN}%
+ \xdef\ListeRepartitionNombres{\faa}%
+ \foreachitem\compteur\in\ListeNombresAv{\expandafter\UpdatetoksUrneNombres\compteur\nil}%
+ \BuildUrneDouble{\the\tokUrneListeCouleurs}{\the\tokUrneListeNombres}{\ListeRepartitionCouleurs}{\ListeRepartitionNombres}%
+ }{%
+ \xdef\PfCFooRepartition{\useKV[PfCUrne]{Repartition}}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRepartitionAv{\PfCFooRepartition}%
+ % Repartition : \showitems\ListeRepartitionAv[]%
+ \xdef\PfCFooListeRepartition{}%
+ \xdef\PfCTotal{0}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeRepartitionAvlen}}\do{%
+ \xintFor* ##2 in{\xintSeq{1}{\ListeRepartitionAv[##1]}}\do{%
+ \xdef\PfCFooListeRepartition{\PfCFooListeRepartition,##1}%
+ \xdef\PfCTotal{\fpeval{\PfCTotal+1}}%
+ }%
+ }%
+ \ifboolKV[PfCUrne]{Couleurs}{%
+ \MelangeListe{\PfCFooListeRepartition}{\PfCTotal}%
+ \xdef\ListeRepartitionCouleurs{\faa}%
+ \foreachitem\compteur\in\ListeCouleursAv{\expandafter\UpdatetoksUrneCouleurs\compteur\nil}%
+ % Couleurs :\\
+ % La répartition est : \ListeRepartitionCouleurs\\
+ % Les couleurs sont : \the\tokUrneListeCouleurs.\\
+ \BuildUrne{\the\tokUrneListeCouleurs}{}{\ListeRepartitionCouleurs}%
+ }{%
+ \ifboolKV[PfCUrne]{Nombres}{%
+ \MelangeListe{\PfCFooListeRepartition}{\PfCTotal}%
+ \xdef\ListeRepartitionNombres{\faa}%
+ \foreachitem\compteur\in\ListeNombresAv{\expandafter\UpdatetoksUrneNombres\compteur\nil}%
+ % Nombres :\\
+ % La répartition est : \ListeRepartitionNombres\\
+ % Les nombres sont : \the\tokUrneListeNombres.\\
+ \BuildUrne{}{\the\tokUrneListeNombres}{\ListeRepartitionNombres}%
+ }{}%
+ }%
+ }%
+}%
+}%
+}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCVisualisationMulDeci.tex b/Master/texmf-dist/tex/latex/profcollege/PfCVisualisationMulDeci.tex
index 54a1a079cc6..99024a43586 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCVisualisationMulDeci.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCVisualisationMulDeci.tex
@@ -1,6 +1,10 @@
%%%
% Visualisation Multiplication Décimaux
%%%
+\def\filedateVisuMulDeci{2024/08/04}%
+\def\fileversionVisuMulDeci{0.1}%
+\message{-- \filedateVisuMulDeci\space v\fileversionVisuMulDeci}%
+%
\setKVdefault[VisMulDec]{Couleur=Orange,CouleurUnite=DarkGreen,Dixiemes=false,Unite=2}%
\newtoks\toksvismuldec%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCVueCubes.tex b/Master/texmf-dist/tex/latex/profcollege/PfCVueCubes.tex
index 9365b7e6216..196358d9bf8 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCVueCubes.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCVueCubes.tex
@@ -1,6 +1,10 @@
%%%
% Vue Cubes
%%%
+\def\filedateVueCubes{2024/08/26}%
+\def\fileversionVueCubes{0.1a}%
+\message{-- \filedateVueCubes\space v\fileversionVueCubes}%
+%
\setKVdefault[VueCubes]{Solution=false,Hauteur=5,Profondeur=4,Largeur=3,Angle=60,Nom=Ex1,Trou=false,Echelle=0.25,CouleurCube=LightSteelBlue,CouleurFleche=LightGray,Face=false,Creation=false,Grilles=false,Seul=false,Perso=false,EclateX=0,EclateZ=0,EclateY=0}
\newtoks\toklisteVueCube%
@@ -30,9 +34,9 @@
\readlist*\PfCListeHauteursCubes{#2}%
\reademptyitems%
\foreachitem\compteur\in\PfCListeHauteursCubes{\expandafter\UpdatetoksVueCube\compteur\nil}%
- \BuildVueCubes{\useKV[VueCubes]{Angle}}{\the\toklisteVueCube}%
+ \BuildVueCubes{\useKV[VueCubes]{Angle}}{\the\toklisteVueCube}{\useKV[VueCubes]{Nom}}%
}{%
- \BuildVueCubes{\useKV[VueCubes]{Angle}}{}%
+ \BuildVueCubes{\useKV[VueCubes]{Angle}}{}{\useKV[VueCubes]{Nom}}%
}%
}%
}%
@@ -100,11 +104,13 @@
\fi
}
-\NewDocumentCommand\BuildVueCubes{m m}{%
+\NewDocumentCommand\BuildVueCubes{m m m}{%
\ifluatex
\mplibforcehmode
\xdef\PfCVueCubeNom{\useKV[VueCubes]{Nom}}%
\begin{mplibcode}[\PfCVueCubeNom]
+ string NomRetenu;
+ NomRetenu=str #3;
input PfCSolid;
intensite:=1.5;
@@ -176,6 +182,9 @@
endfor;
fi;
+ write decimal(TotalObj) to "PfCNombreCubes"&NomRetenu&".tex";%
+ write EOF to "PfCNombreCubes"&NomRetenu&".tex";%
+
% Pour la fleche
path Fleche;
color A[];
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCYohaku.tex b/Master/texmf-dist/tex/latex/profcollege/PfCYohaku.tex
index c710834b934..942e66c111c 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCYohaku.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCYohaku.tex
@@ -1,6 +1,10 @@
%%%
% Yohaku
%%%
+\def\filedateYohaku{2024/08/04}%
+\def\fileversionYohaku{0.1}%
+\message{-- \filedateYohaku\space v\fileversionYohaku}%
+%
\setKVdefault[Yohaku]{Taille=2,Largeur=1cm,Hauteur=1cm,Addition,Multiplication=false,Perso=false,Limite=50,Relatif=false,Negatif=false,Pair=false,Impair=false,Premier=false,Solution=false,Visible=false,Bordure=false,CouleurResultat=gray!15,Ligne=0,Colonne=0,PasL=0,PasC=0,CouleurZone=gray!25}%
\defKV[Yohaku]{Case=\setKV[Yohaku]{Visible}}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty b/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty
index ca3b52ba9ad..df794a8d866 100644
--- a/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty
+++ b/Master/texmf-dist/tex/latex/profcollege/ProfCollege.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/05/18}%
+\def\filedate{2024/09/04}%
\let\PfCfiledate\filedate%
-\def\fileversion{0.99-A-f}%
+\def\fileversion{0.99-A-j}%
\let\PfCfileversion\fileversion%
\ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]%
@@ -124,7 +124,6 @@
\RequirePackage{listofitems}%
\RequirePackage{datatool}%
\RequirePackage{multido}%
-
\RequirePackage{xlop}%
\RequirePackage{tcolorbox}%
@@ -341,6 +340,37 @@
\fi
}%
+\newlength{\PfCLongueurBarreHor}
+\setKVdefault[PfCLigneCompleter]{Ecart=20pt,Couleurs=false}%
+\defKV[PfCLigneCompleter]{Couleur=\setKV[PfCLigneCompleter]{Couleurs}}%
+
+\NewDocumentCommand\ListeACompleter{som}{%
+ \useKVdefault[PfCLigneCompleter]%
+ \setKV[PfCLigneCompleter]{#2}%
+ \ifboolKV[PfCLigneCompleter]{Couleurs}{\colorlet{PfCLC}{\useKV[PfCLigneCompleter]{Couleur}}}{}%
+ \setlength{\PfCLongueurBarreHor}{\useKV[PfCLigneCompleter]{Ecart}}%
+ \setsepchar{,}\reademptyitems%
+ \readlist*\ListeTiti{#3}%
+ \foreachitem\compteur\in\ListeTiti{%
+ \itemtomacro\ListeTiti[\compteurcnt]\PfCCaractere%
+ \StrChar{\PfCCaractere}{1}[\RetiensElmt]%
+ \IfStrEq{\RetiensElmt}{!}{%
+ \IfBooleanTF{#1}{%
+ \ifboolKV[PfCLigneCompleter]{Couleurs}{\colorlet{saved}{.}\color{PfCLC}}{}\StrGobbleLeft{\PfCCaractere}{1}\ifboolKV[PfCLigneCompleter]{Couleurs}{\color{saved}}{}%
+ }{%
+ \hbox to \PfCLongueurBarreHor{\hrulefill}%
+ }
+ }{%
+ \ListeTiti[\compteurcnt]%
+ }%
+ \ifnum\compteurcnt=\ListeTitilen\relax%
+ .%
+ \else%
+ ,
+ \fi%
+ }%
+}%
+
%https://tex.stackexchange.com/questions/128991/frac-or-inference-rule-with-dotted-line
\newcommand\PfCfrac[2]{%
\ooalign{$\genfrac{}{}{0pt}{0}{#1}{#2}$\cr\PfCdotover\cr}%
@@ -637,18 +667,18 @@
\tikzset{face/.style={shape=circle,minimum size=4ex,shading=radial,outer sep=0pt, inner color=white!50!yellow,outer color= yellow!70!orange}}
\newcommand\emoticon[2][]{%
-\scalebox{.5}{\begin{tikzpicture}
-\node[face,#1,draw,thick] (emoticon) {};
+\scalebox{.5}{\begin{tikzpicture}%
+\node[face,#1,draw,thick] (emoticon) {};%
%% The eyes are fixed.
\draw[fill=white] (-1ex,0ex) ..controls (-0.5ex,0.2ex)and(0.5ex,0.2ex)..(1ex,0.0ex) ..controls ( 1.5ex,1.5ex)and( 0.2ex,1.7ex)..(0ex,0.4ex) ..controls (-0.2ex,1.7ex)and(-1.5ex,1.5ex)..(-1ex,0ex)--cycle;
#2%
\end{tikzpicture}}%
-}
+}%
-\newcommand\pupils{
+\newcommand\pupils{%
%% standard pupils
-\fill[shift={(0.5ex,0.5ex)},rotate=80] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.5ex,0.5ex)},rotate=100] (0,0) ellipse (0.3ex and 0.15ex);}
+\fill[shift={(0.5ex,0.5ex)},rotate=80] (0,0) ellipse (0.3ex and 0.15ex);%
+\fill[shift={(-0.5ex,0.5ex)},rotate=100] (0,0) ellipse (0.3ex and 0.15ex);}%
\def\RKsmallsmile{%
\emoticon{%
@@ -656,14 +686,14 @@
%% mouth
\draw[thick] (-0.5ex,-1ex)..controls (-0.25ex,-1.25ex)and(0.25ex,-1.25ex)..(0.5ex,-1ex);
}%\emoticon
-}
+}%
\def\RKsmile{%
\emoticon{%
\pupils
\draw[thick] (-1ex,-1ex)..controls (-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
}%\emoticon
-}
+}%
\def\RKbigsmile{%
\emoticon{%
@@ -671,7 +701,7 @@
%% mouth
\draw[thick] (-1.5ex,-0.5ex)..controls (-0.7ex,-1.7ex)and(0.7ex,-1.7ex)..(1.5ex,-0.5ex);
}%\emoticon
-}
+}%
\def\RKsad{%
\emoticon{%
@@ -681,7 +711,7 @@
%% mouth
\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-0.5ex)and(0.5ex,-0.5ex)..(1ex,-1ex);
}%\emoticon
-}
+}%
\def\RKneutral{%
\emoticon{%
@@ -691,7 +721,7 @@
%% mouth
\draw[thick] (-0.5ex,-1ex)--(0.5ex,-1ex);
}%\emoticon
-}
+}%
\def\RKconfused{%
\emoticon{%
@@ -716,19 +746,19 @@
(-1.00ex,1.00ex)--(-1.20ex,1.10ex)
(-0.35ex,1.15ex)--(-0.25ex,1.35ex);
}%\emoticon
-}
+}%
\def\RKangry{%
\emoticon{%
%% pupils
-\fill[shift={( 0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
+\fill[shift={( 0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);%
+\fill[shift={(-0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);%
%% mouth
-\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-0.5ex)and(0.5ex,-0.5ex)..(1ex,-1ex);
+\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-0.5ex)and(0.5ex,-0.5ex)..(1ex,-1ex);%
%% eyebrows
-\draw[thick] (0.2ex,1.15ex)--(0.5ex,1.6ex)(-0.2ex,1.15ex)--(-0.5ex,1.6ex);
+\draw[thick] (0.2ex,1.15ex)--(0.5ex,1.6ex)(-0.2ex,1.15ex)--(-0.5ex,1.6ex);%
}%\emoticon
-}
+}%
\def\RKlookup{%
\emoticon{%
@@ -826,6 +856,11 @@
\def\PfCSymbolTimes{\times}%
\def\PfCSymbolDiv{\div}%
+\input{PfCCheque}
+\input{PfCCalculsDetailles}
+\input{PfCTableauDoubleEntree}
+\input{PfCUrneProba}
+\input{PfCProbaFrequence}
\input{PfCVisualisationMulDeci}
\input{PfCArbreChiffre}
\input{PfCAssemblagesSolides}
@@ -971,4 +1006,8 @@
\input{PfCDomino}
\input{PfCProgrammeCalcul}
\input{PfCPapiers}
-\input{PfCScratch} \ No newline at end of file
+\input{PfCScratch}
+
+\RequirePackage{PfCInfixRPN}
+
+\input{PfCArbreCalcul} \ 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 c13d91729ab..dbeb301429c 100644
--- a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
+++ b/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty
@@ -1,9 +1,23 @@
-% 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/05/31 3.04c 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
% 3.04b Travail sur la loi binomiale + Ajout de clés pour les environnements graphiques
% 3.04a Améliorations de la partie graphiques tikz (intégrales, axes) + Factorielle
@@ -97,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
@@ -111,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}
@@ -137,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}
@@ -167,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}
@@ -194,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
@@ -232,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 0a1555c4e96..7086b10b220 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-ecritures.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-ecritures.tex
@@ -10,6 +10,38 @@
\RequirePackage{mleftright} %pour une meilleure gestion des espacements avec \left \right :-)
%\RequirePackage{mathrsfs}%pour \mathscr (à voir...)
+%===UNITÉS
+
+\NewDocumentCommand\pflprix{ o m }{%
+ \IfValueTF{#1}%
+ {%
+ \num[round-mode=places,round-precision=#1]{#2}\,\text{€}%
+ }%
+ {%
+ \num{#2}\,\text{€}%
+ }%
+}
+
+\NewDocumentCommand\pflangle{ o m }{%
+ \IfValueTF{#1}%
+ {%
+ \num[round-mode=places,round-precision=#1]{#2}\text{\textdegree}%
+ }%
+ {%
+ \num{#2}\text{\textdegree}%
+ }%
+}
+
+\NewDocumentCommand\pflpcent{ o m }{%
+ \IfValueTF{#1}%
+ {%
+ \num[round-mode=places,round-precision=#1]{#2}\,\%%
+ }%
+ {%
+ \num{#2}\,\%%
+ }%
+}
+
%===ENSEMBLES CLASSIQUES
\ifthenelse{\isundefined{\N}}%
{%
@@ -179,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 418c5aa8cca..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,8 @@
% 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 (?)
%3.01e Correction du comportement de la console repl piton/pyluatex
@@ -41,7 +43,7 @@
BarreTitre=true,%
Titre={{\scriptsize\faCode}~~Code Python},%
EspacementV=0.5\baselineskip,%
- CouleurNombres=orange
+ CouleurNombres={orange!75!black}
}
%==Style Moderne
@@ -159,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,
{}%
@@ -220,6 +222,57 @@
\endtcolorbox%
}
+%inputfile
+\NewDocumentCommand\CodePitonFichier{ O{} m D<>{} }{%
+ {\tcbset{reset}
+ \useKVdefault[envpiton]%
+ \setKV[envpiton]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %------les styles piton
+ \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,
+ {}%
+ \PitonOptions{break-lines,indent-broken-lines,continuation-symbol={\;}}%,numbers-sep=0.65em}%language=Python}
+ %------les styles tcbox
+ \IfEq{\CODPITstyle}{Moderne}%style Moderne (défaut)
+ {%
+ \tcbset{cadre/.style={}}
+ \tcbset{titre/.style={}}
+ \tcbset{stylebase/.style={stylepiton,colframe=CouleurVertForet,colback=CouleurVertForet!5,width=\CODPITlargeur,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign,leftupper=0.75em}}
+ \ifboolKV[envpiton]{Filigrane}%si filigrane
+ {\tcbset{filigrane/.style={watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50}}}%
+ {\tcbset{filigrane/.style={}}}%
+ }
+ {}%
+ \IfEq{\CODPITstyle}{Classique}%style Classique
+ {%
+ \ifboolKV[envpiton]{Lignes}%si lignes=true
+ {\tcbset{stylebase/.style={thonnystylelineos,leftupper=0.75em,width=\CODPITlargeur,colframe=darkgray!50!black,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign}}}%
+ {\tcbset{stylebase/.style={thonnystyle,leftupper=0.4em,width=\CODPITlargeur,colframe=darkgray!50!black,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign}}}%
+ \ifboolKV[envpiton]{Filigrane}%si filigrane
+ {\tcbset{filigrane/.style={watermark text={\faPython},watermark opacity=0.25,watermark zoom=0.50}}}%
+ {\tcbset{filigrane/.style={}}}%
+ \ifboolKV[envpiton]{BarreTitre}%
+ {%
+ \ifboolKV[envpiton]{Cadre}
+ {\tcbset{cadre/.style={}}}%
+ {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}%
+ \tcbset{titre/.style={lefttitle=0.4em,title={\CODPITtitre},fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!black}}
+ }%
+ {%
+ \tcbset{titre/.style={notitle}}
+ \ifboolKV[envpiton]{Cadre}
+ {\tcbset{cadre/.style={}}}
+ {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}
+ }
+ }
+ {}%
+ %on crée la boîte
+ \tcolorbox[stylebase,filigrane,cadre,titre]
+ \PitonInputFile{#2}
+ \endtcolorbox}%
+}
+
%piton >= 2.4
\NewPitonEnvironment{PseudoCodePiton}{ O{} m D<>{} }%
{%
@@ -317,6 +370,86 @@
\endtcolorbox%
}
+%--inputfile
+\NewDocumentCommand\PseudoCodePitonFichier{ O{} m D<>{} }{%
+ {\tcbset{reset}
+ \useKVdefault[envpcpiton]%
+ \setKV[envpcpiton]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %------les styles piton
+ \ifboolKV[envpcpiton]{Lignes}%si lignes=true
+ {\PitonOptions{left-margin=0.75em,all-line-numbers}}%left-margin=auto,
+ {}%
+ \PitonOptions{break-lines,indent-broken-lines,language=minimal,continuation-symbol={\;}}%,numbers-sep=0.65em}%
+ \SetPitonStyle{ Number = }
+ \ifboolKV[envpcpiton]{Couleurs}%
+ {%
+ \SetPitonIdentifier[minimal]{Algorithme,Fonction,Début,Paramètre,Paramètres,Faire,Fin,Si,Pour,Tant,Que,que,alors,Alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue,Variable,Variables,Procédure}{\color{MotsClesPseudoCodeA}}
+ \SetPitonIdentifier[minimal]{Afficher,Renvoyer,Saisir}{\color{MotsClesPseudoCodeB}}
+ % \PitonOptions{
+ % identifiers =
+ % {
+ % names = {Algorithme,Fonction,Début,Paramètre,Paramètres,allant,Faire,Fin,Si,Pour,Tant,Que,que,alors,Alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue,Variable,Variables,Procédure},
+ % style = \color{MotsClesPseudoCodeA}
+ % } ,
+ % identifiers =
+ % {
+ % names = {Afficher,Retourner,Saisir},
+ % style = \color{MotsClesPseudoCodeB}
+ % }
+ % }%
+ \SetPitonStyle
+ {
+ String = \color{MotsClesPseudoCodeChaine},
+ Comment = \itshape\color{gray},
+ }
+ }%
+ {%
+ \SetPitonStyle
+ {
+ String = ,
+ Comment = \itshape
+ }
+ }%
+ %------les styles tcbox
+ \IfEq{\CODPITPCstyle}{Moderne}%style Moderne (défaut)
+ {%
+ \tcbset{cadre/.style={}}
+ \tcbset{titre/.style={}}
+ \tcbset{stylebase/.style={stylepcpiton,colframe=CouleurVertForet,colback=CouleurVertForet!5,width=\CODPITPClargeur,fontupper=\CODPITPCfonte,fontlower=\CODPITPCfonte,\CODPITPCalign,leftupper=0.75em}}
+ \ifboolKV[envpcpiton]{Filigrane}%si filigrane
+ {\tcbset{filigrane/.style={watermark text={\faCode},watermark opacity=0.175,watermark zoom=0.50}}}%
+ {\tcbset{filigrane/.style={}}}%
+ }
+ {}%
+ \IfEq{\CODPITPCstyle}{Classique}%style Classique
+ {%
+ \ifboolKV[envpcpiton]{Lignes}%si lignes=true
+ {\tcbset{stylebase/.style={thonnypcstylelineos,leftupper=0.75em,width=\CODPITPClargeur,colframe=darkgray!50!black,fontupper=\CODPITPCfonte,fontlower=\CODPITPCfonte,\CODPITPCalign}}}%
+ {\tcbset{stylebase/.style={thonnypcstyle,leftupper=0.4em,width=\CODPITPClargeur,colframe=darkgray!50!black,fontupper=\CODPITPCfonte,fontlower=\CODPITPCfonte,\CODPITPCalign}}}%
+ \ifboolKV[envpcpiton]{Filigrane}%si filigrane
+ {\tcbset{filigrane/.style={watermark text={\faCode},watermark opacity=0.25,watermark zoom=0.50}}}%
+ {\tcbset{filigrane/.style={}}}%
+ \ifboolKV[envpcpiton]{BarreTitre}%
+ {%
+ \ifboolKV[envpcpiton]{Cadre}
+ {\tcbset{cadre/.style={}}}%
+ {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}%
+ \tcbset{titre/.style={lefttitle=0.4em,title={\CODPITPCtitre},fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!black}}
+ }%
+ {%
+ \tcbset{titre/.style={notitle}}
+ \ifboolKV[envpcpiton]{Cadre}
+ {\tcbset{cadre/.style={}}}
+ {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}
+ }
+ }
+ {}%
+ %on crée la boîte
+ \tcolorbox[stylebase,filigrane,cadre,titre]
+ \PitonInputFile{#2}%
+ \endtcolorbox}%
+}
+
%======CONSOLE PYLUATEX (package à charger manuellement !!)
\tcbset{consolepylua/.style={%base de la boîte
enhanced,colback=white,colframe=CouleurVertForet,sharp corners,boxrule=1pt,%
@@ -345,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 }%
@@ -360,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
@@ -392,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 }%
@@ -407,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}{%
@@ -428,6 +567,19 @@
\endtcolorbox%
}%
+\NewDocumentCommand\PitonThonnyEditorFichier{ D<>{} O{\linewidth} m }{%
+ {\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,
+ attach boxed title to top left={yshift*=-0.4pt},fontupper=\footnotesize,bottom=-0.25mm,boxed title style={size=tight,colback=lightgray!15,sharp corners=all,boxrule=0.4pt,boxsep=2pt},boxrule=0.4pt,overlay={\begin{tcbclipinterior}\fill[draw=none,gray!25] ([shift={(0.4pt,0.4pt)}]frame.south west) rectangle ([shift={(\LargeurNumbersThonny+1mm+0.8pt,-0.4pt)}]frame.north west) ;\end{tcbclipinterior}}]%
+ \PitonInputFile{#3}
+ \endtcolorbox}%
+}%
+
\NewDocumentEnvironment{PitonThonnyConsole}{ D<>{} O{} m }%
{
\restoreKV[pitonthonny]%
@@ -435,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 cd01f4393b3..3a622b183d2 100644
--- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-stats.tex
+++ b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-stats.tex
@@ -75,6 +75,69 @@
\expandafter\def\csname\RegLinCoeffrd\endcsname{\fpeval{\csname\RegLinCoeffr\endcsname*\csname\RegLinCoeffr\endcsname}}
}
+\defKV[coeffregquad]{%
+ NomCoeffa=\def\RegQuadCoeffa{#1},%
+ NomCoeffb=\def\RegQuadCoeffb{#1},%
+ NomCoeffc=\def\RegQuadCoeffc{#1},%
+ NomXmin=\def\RegQuadCoeffXmin{#1},%
+ NomXmax=\def\RegQuadCoeffXmax{#1}
+}
+
+\setKVdefault[coeffregquad]{%
+ NomCoeffa=COEFFa,%
+ NomCoeffb=COEFFb,%
+ NomCoeffc=COEFFc,%
+ NomXmin=LXmin,%
+ NomXmax=LXmax
+}
+
+\newcommand\CalculsRegQuad[3][]{%
+ \useKVdefault[coeffregquad]%
+ \setKV[coeffregquad]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %xmin et xmax
+ \expandafter\def\csname\RegQuadCoeffXmin\endcsname{\xintfloateval{min(#2)}}%
+ \expandafter\def\csname\RegQuadCoeffXmax\endcsname{\xintfloateval{max(#2)}}%
+ %listes des données
+ \def\xliste{#2}%
+ \def\yliste{#3}%
+ \readlist*\LX{\xliste}%
+ \readlist*\LY{\yliste}%
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}
+ %somme importantes
+ \xdef\LXSomme{0}%
+ \xdef\LXCSomme{0}%
+ \xdef\LYSomme{0}%
+ \xdef\LXXSomme{0}%
+ \xdef\LXYSomme{0}%
+ \xdef\LXXCSomme{0}%
+ \xdef\LXCXCSomme{0}%
+ \xdef\LXCYSomme{0}%
+ %calculs
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}%
+ \xdef\LXCSomme{\xintfloateval{\LXCSomme+(\LX[\i])^2}}%
+ }%
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}%
+ }%
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}%
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}%
+ \xdef\LXCmoy{\xintfloateval{\LXCSomme/\LNB}}%
+ %calculs suites
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXXSomme{\xintfloateval{\LXXSomme+(\LX[\i]-\LXmoy)^2}}%
+ \xdef\LXYSomme{\xintfloateval{\LXYSomme+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}%
+ \xdef\LXXCSomme{\xintfloateval{\LXXCSomme+(\LX[\i]-\LXmoy)*((\LX[\i])*(\LX[\i])-\LXCmoy)}}%
+ \xdef\LXCXCSomme{\xintfloateval{\LXCXCSomme+((\LX[\i])^2-\LXCmoy)^2}}%
+ \xdef\LXCYSomme{\xintfloateval{\LXCYSomme+((\LX[\i])^2-\LXCmoy)*(\LY[\i]-\LYmoy)}}%
+ }%
+ %COEFFS OK
+ \expandafter\def\csname\RegQuadCoeffb\endcsname{\xintfloateval{(\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}%
+ \expandafter\def\csname\RegQuadCoeffa\endcsname{\xintfloateval{(\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}%
+ \expandafter\def\csname\RegQuadCoeffc\endcsname{\xintfloateval{\LYmoy-\csname\RegQuadCoeffb\endcsname*\LXmoy-\csname\RegQuadCoeffa\endcsname*\LXCmoy}}%
+}
+
%pour un nuage en TiKz
\defKV[nuagereglin]{%
Couleur=\def\RegLinNuageCouleur{#1},%
@@ -492,6 +555,7 @@
% \edef#3{\the\pgf@y}%
% }
+\makeatletter
\defKV[courbeECC]{%
Largeur=\def\ecc@larg@graph{#1},%
Hauteur=\def\ecc@haut@graph{#1},%
@@ -733,6 +797,7 @@
\end{tikzpicture}%
\CourbeECCStylesDefaut%
}
+\makeatother
%détermination 'simple' des paramètres
\NewDocumentCommand\MedianeQuartilesECC{ m m }{%
@@ -775,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 9aa462bb76f..c59cbfaeb8e 100644
--- a/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
+++ b/Master/texmf-dist/tex/latex/profmaquette/ProfMaquette.sty
@@ -2,20 +2,33 @@
% 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/05/02}%
+\def\filedate{2024/11/03}%
\let\PfMfiledate\filedate%
-\def\fileversion{0.94}%
+\def\fileversion{0.99-k}%
\let\PfMfileversion\fileversion%
\ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]%
\newif\if@Dyslexie \@Dyslexiefalse
+\newif\if@CAN \@CANfalse
+\newif\if@Revision \@Revisionfalse
+\newif\if@AssembleCorrections \@AssembleCorrectionsfalse
+\newif\if@Personnel \@Personnelfalse
\DeclareOption{Dyslexie}{\@Dyslexietrue}
+\DeclareOption{CAN}{\@CANtrue}
+\DeclareOption{Revision}{\@Revisiontrue}
+\DeclareOption{AssembleCorrections}{\@AssembleCorrectionstrue}
+\DeclareOption{Personnel}{\@Personneltrue}
\ProcessOptions\relax
+
+\if@AssembleCorrections
+ \AddToHook{env/document/end}[AC]{\PfMAffichageTousCorriges}%
+\fi
+
% packages nécessaires
\RequirePackage{verbatim}%
-
+\RequirePackage{xintexpr}
\RequirePackage{calc}%
\RequirePackage{xlop}%
@@ -34,31 +47,43 @@
\RequirePackage{modulus}%
\RequirePackage{ragged2e}%
-
+\RequirePackage{fontawesome5}
\makeatletter
\gdef\PfMFontSize{\@ptsize}
%\gdef\PfMFontSize{\f@size}
\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,CorrigeInverse=false,CorrigeSeul=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,Epaisseur=0pt,VersSolution=false,AvecEntrainement=false,Small=false,Footnotesize=false,Scriptsize=false,AllDirect=false,AllPouce=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}}%
-\setKVdefault[Cours]{Couleur=Crimson,Theme=Trace écrite,NomExercice=Exercice}%
+\defKV[Boulot]{EColonnes=\setKV[Boulot]{EntrainementColonnes}}%
+\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}%
-\setKVdefault[Contrat]{Theme=Les nombres décimaux,Date=\today,Niveau=6,Classe={},Code={},NomExercice=Exercice}%
-\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,TitreSol=false,NonUtilise=false,Profile=false,PasEntrainement=false}%
+\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}}%
@@ -69,18 +94,28 @@
\defKV[ClesExercices]{Stop=\setKV[ClesExercices]{Stops}}%
\defKV[ClesExercices]{Lignes=\setKV[ClesExercices]{Ligne}}%
\defKV[ClesExercices]{Encart=\setKV[ClesExercices]{Cadres}}%
+\defKV[ClesExercices]{CinqCinq=\setKV[ClesExercices]{Grilles}\setKV[ClesExercices]{Cinq}}%
+\defKV[ClesExercices]{Seyes=\setKV[ClesExercices]{Grilles}\setKV[ClesExercices]{Huit}}%
\def\PfMTexteEncart{Indique ton travail ci-dessous.}%
-\setKVdefault[SchemaParcours]{Colonnes=100,Rayon=2.5mm,Largeur=7.5mm,Couleur=LightSteelBlue,Csv=false}%
+\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=LightSteelBlue,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{}%
+% Commande pour passer des options à travers la clé Input. Elle remplace \input :)
+\NewDocumentCommand\Input{om}{%
+ \def\Relecture{\setKV[ClesExercices]{#1}}%
+ \input{#2}%
+ \def\Relecture{}%
+}%
% Sucres
\makeatletter%
\NewDocumentCommand\PfMDotfill{}{%
\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}}%
@@ -88,7 +123,15 @@
%
\NewDocumentCommand\PfMNbLignesRestantes{}{%
\edef\measurepage{\dimexpr\pagegoal-\pagetotal\relax}%
+ \edef\measurepagemax{\dimexpr\textheight\relax}%
+ % \edef\measurepage{\dimeval{\pagegoal-\pagetotal-\baselineskip}}%
\xdef\PfMResteLignes{\fpeval{trunc((\the\measurepage)/(\baselineskip),0)}}%
+ \xdef\PfMResteLignesMax{\fpeval{trunc((\the\measurepagemax)/(\baselineskip),0)}}%
+ \ifnum\PfMResteLignesMax<\PfMResteLignes\relax
+ \xdef\PfMResteLignes{\PfMResteLignesMax}
+ \fi
+ %\xdef\PfMResteLignes{\dimeval{trunc((\the\measurepage)/(\baselineskip),0)}}%
+ %Il reste \PfMResteLignes{} lignes alors que le nombre maximal de lignes sur une page est \PfMResteLignesMax{}.
}%
\NewDocumentCommand\PfMLignesFinales{}{%
@@ -110,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%
@@ -123,41 +169,58 @@
\newlength\PfMLargeurJury%
\newlength\PfMEspaceAvantLignes%
\newlength\PfMEspaceApresLignes%
-\newlength\PfMLargeurComp
+\newlength\PfMLargeurComp%
\newlength\CRRHauteur%
\newlength\PfMEcartSupInterMots%
-\setlength{\CRRHauteur}{10cm}
+\newlength\PfMCoefcompetences%
+\def\PfMCoefCompetences{0.85}%
+\setlength{\CRRHauteur}{10cm}%
\setlength{\PfMHauteurAppreciation}{5cm}%
\setlength{\PfMHauteurRemarque}{5cm}%
-\setlength{\PfMEspaceAvantLignes}{1em}
-\setlength{\PfMEspaceApresLignes}{1em}
+\setlength{\PfMEspaceAvantLignes}{1em}%
+\setlength{\PfMEspaceApresLignes}{1em}%
\setlength{\PfMEcartSupInterMots}{1pt}%
+\setlength{\PfMCoefcompetences}{0.7\linewidth}%
% définition des compteurs
\newcounter{PfMMaquette}%Pour compter le nombres de "travaux"
\setcounter{PfMMaquette}{0}%
+\newcounter{PfMMaquetteSol}[PfMMaquette]%Pour compter le nombres de "travaux" dans les corrections
+\setcounter{PfMMaquetteSol}{0}%
\newcounter{PfMSection}%Pour le barème et ne pas faire obstruction à section
\setcounter{PfMSection}{0}%
\newcounter{PfMExo}[PfMMaquette]%Numéro des exercices
\setcounter{PfMExo}{0}%
-\newcounter{PfMExoSol}%Pour repérer les valeurs aléatoires construites automatiquement dans la solution
+%\newcounter{PfMExoSolAlea}%Pour repérer les valeurs aléatoires construites automatiquement dans la solution
+%\setcounter{PfMExoSolAlea}{0}%
+\newcounter{PfMExoSol}[PfMMaquette]%
\setcounter{PfMExoSol}{0}%
\newcounter{PfMExoEntrai}%Pour repérer les entrainements
\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.
+\newcounter{RetiensIndic}%Pour l'affichage des indications.
+\newcounter{PfMRetiensQr}%Pour l'affichage des entrainements
\setcounter{RetiensSol}{0}%
\setcounter{RetiensRep}{0}%
\setcounter{RetiensInd}{0}%
+\setcounter{RetiensIndic}{0}%
+\setcounter{PfMRetiensQr}{0}%
\newcounter{PfMNbLogo}%Pour décaler les logos sur la ligne haute de tcolorbox
\setcounter{PfMNbLogo}{0}%
\newcount\Orientation%Pour le schéma des parcours
+\newcount\TotalParcoursTikz%Pour le total des exos à utiliser dans l'affichage des parcours tikz
\newcounter{PfMCNNumQ}%
\newcounter{Nbcolonnes}
@@ -166,6 +229,8 @@
\newif\ifPfMDeuxColonnes
\newif\ifPfMRectoVerso
+\newif\ifPfMRevision
+
\makeatletter
\if@twocolumn
\PfMDeuxColonnestrue
@@ -179,6 +244,11 @@
\else
\PfMRectoVersofalse
\fi
+\if@Revision
+ \PfMRevisiontrue
+\else
+ \PfMRevisionfalse
+\fi
\makeatother
% couleurs
@@ -228,6 +298,22 @@
\ifboolKV[Boulot]{CAN}{}{\end{tcolorbox}}%
}%
+\tcbset{%
+ indications/.style={
+ empty,
+ right=0pt,
+ left=0mm,
+ top=0pt,
+ bottom=0pt,
+ frame engine=path,
+ % colframe=Crimson!10,
+ frame hidden,
+ notitle,
+ sharp corners=west,
+ borderline west={3pt}{0pt}{black!50}
+ }
+}
+
%% Option french pour les mathématiques
% By CT
\NewDocumentCommand\TypoMathFrance{}{%
@@ -291,7 +377,7 @@
\NewDocumentCommand\RepartirEffectifTotal{mmm}{%
% #1 valeur de l'effectif total
% #2 nombre de valeurs à obtenir
- % #3 écart acceptable :) autour de la moyenen
+ % #3 écart acceptable :) autour de la moyenne
\xdef\PfCSLEffectifs{}%
\xdef\PfCValeurMoyenneTemp{\fpeval{floor(#1/#2)}}%
\xdef\PfCRetiensRETSomme{}%
@@ -383,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}}%
}%
@@ -405,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}{%
@@ -453,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}%
}%
@@ -468,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%
}%
@@ -495,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}%
@@ -628,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{%
@@ -766,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}%
}%
%%
@@ -791,7 +890,8 @@
\setcounter{Melquestions}{0}%
\setsepchar{\item}\ignoreemptyitems%
\readlist*\ListeTest{#2}%
-% La liste des éléments retenus est \showitems*\ListeTest[]
+ \reademptyitems
+ % La liste des éléments retenus est \showitems*\ListeTest[]\par
\IfNoValueTF{#1}{%
\ChoixAleaMultiMix{\ListeTestlen}{1}{\ListeTestlen}{0}{\ListeShuffleA}%
\xdef\MelangeValeurTotale{\ListeTestlen}%
@@ -802,6 +902,8 @@
\ExporteListe{ListeShuffle}{\ListeShuffleA}%
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeNumQ{\ListeShuffleA}%
+ \reademptyitems
+ % L'ordre des questions est \ListeNumQ[]
\setcounter{Comptequestions}{1}%
\begin{enumerate}
\loop%
@@ -815,11 +917,15 @@
\NewDocumentEnvironment{Enumelangesol}{b}{%
\setcounter{Melquestions}{0}%
- \setsepchar{\item}%
+ \setsepchar{\item}\ignoreemptyitems%
\readlist*\ListeTest{#1}%
+ \reademptyitems
\RestoreListe{ListeShuffle}%
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeNumQ{\ListeShuffle}%
+ \reademptyitems
+% la liste des éléments retenus est \showitems*\ListeTest[]\par
+% L'ordre des questions est \ListeNumQ[]\par
\setcounter{Comptequestions}{1}%
\begin{enumerate}
\loop%
@@ -882,7 +988,7 @@
}
\def\buildtabcompetences{%
- \[\begin{tabular}{|p{0.70\linewidth}|*{3}{>{\centering\arraybackslash}p{0.05\linewidth}|}}
+ \[\begin{tabular}{|p{\PfMCoefcompetences}|*{3}{>{\centering\arraybackslash}p{0.05\linewidth}|}}
\cline{2-4}
\multicolumn{1}{c|}{}&\PfMCompNA&\PfMCompECA&\PfMCompA\\
\hline
@@ -892,7 +998,7 @@
}%
\def\Buildtabcompetences#1#2{%
- \setlength{\PfMLargeurComp}{\fpeval{0.85-0.05*#1}\linewidth-\fpeval{2*(#1-3)}\tabcolsep}%
+ \setlength{\PfMLargeurComp}{\fpeval{\PfMCoefCompetences-0.05*#1}\linewidth-\fpeval{2*(#1-3)}\tabcolsep}%
\[\begin{tabular}{|p{\PfMLargeurComp}|*{#1}{>{\centering\arraybackslash}p{0.05\linewidth}|}}%
\cline{2-\fpeval{1+#1}}%
\multicolumn{1}{c|}{}\xintFor* ##1 in{\xintSeq{1}{#1}}\do{%
@@ -914,7 +1020,7 @@
\def\SolutionWrite{%
\setcounter{PfMAlea}{0}%
\@bsphack%
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.sol"%
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.sol"%
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
\def\verbatim@processline{%
@@ -924,7 +1030,7 @@
\def\SolutionWritePP{%
\@bsphack
- \immediate\openout \verbatim@out "\jobname-PPEx\thePfMExo.sol" %
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-PPEx\thePfMExo.sol" %
\let\do\@makeother\dospecials
\catcode`\^^M\active
\def\verbatim@processline{%
@@ -934,7 +1040,7 @@
\def\ReponseWrite{%
\@bsphack
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.rep" %
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.rep" %
\let\do\@makeother\dospecials
\catcode`\^^M\active
\def\verbatim@processline{%
@@ -944,7 +1050,7 @@
\def\IndiceWrite{%
\@bsphack
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.cdp" %coup de pouce
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.cdp" %coup de pouce
\let\do\@makeother\dospecials
\catcode`\^^M\active
\def\verbatim@processline{%
@@ -953,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}
+\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}
@@ -965,12 +1071,52 @@
\NewDocumentEnvironment{Solution}{}{}{}%
\NewDocumentEnvironment{Reponse}{}{}{}%
\NewDocumentEnvironment{Indice}{}{}{}%
+\NewDocumentEnvironment{PfMHide}{+b}{}{}%
+\NewDocumentEnvironment{PfMSeek}{+b}{#1}{}%
+
+\NewDocumentEnvironment{AideA}{+b}{%
+ \ifnum\fpeval{\useKV[ClesExercices]{Aide}}>0\relax%
+ \begin{PfMSeek}%
+ #1
+ \end{PfMSeek}%
+ \else%
+ \begin{PfMHide}%
+ #1
+ \end{PfMHide}
+ \fi%
+}{%
+}%
+\NewDocumentEnvironment{AideB}{+b}{%
+ \ifnum\fpeval{\useKV[ClesExercices]{Aide}}>1\relax%
+ \begin{PfMSeek}%
+ #1
+ \end{PfMSeek}
+ \else%
+ \begin{PfMHide}%
+ #1
+ \end{PfMHide}
+ \fi%
+}{%
+}%
+
+\NewDocumentEnvironment{Indications}{+b}{%
+ \ifnum\theRetiensIndic=1\relax%
+ \textbf{\PfMTexteDesIndications :}\par%
+ #1
+ \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
@@ -1010,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}%
@@ -1031,6 +1182,7 @@
\setcounter{RetiensInd}{0}%
}{}%
}%
+ \fi
\ifboolKV[ClesExercices]{PasCorrige}{%
\setcounter{RetiensSol}{0}%
\setcounter{RetiensRep}{0}%
@@ -1049,29 +1201,80 @@
}%
}%
}%
+\makeatother
+
+\NewDocumentCommand\PfMChoixEntrainement{}{%
+ \setcounter{PfMRetiensQr}{0}%
+ \ifboolKV[ClesExercices]{AEntretenir}{\setcounter{PfMRetiensQr}{1}}{}%
+}%
+
+\NewDocumentCommand\PfMChoixAffichageEntrainement{}{%
+ \ifnum\thePfMRetiensQr=1\relax%
+ \let\Entrainement\EntrainementWrite\let\endEntrainement\endEntrainementWrite%
+ \else%
+ \let\Entrainement\comment\let\endEntrainement\endcomment
+ \fi%
+}%
-\def\PfMTexteDuCorrige{Corrigé de l'exercice}
-\def\PfMTexteDeLEntrainement{Automatisme(s) lié(s) à l'exercice}
+\def\PfMTexteDuCorrige{Corrigé de l'exercice}%
+\def\PfMTexteDeLEntrainement{Automatisme(s) lié(s) à l'exercice}%
+\def\PfMTexteDesIndications{Indications}%
\NewDocumentCommand\PfMAffichageCorrige{}{%
\ifboolKV[Boulot]{CAN}{%
\xintFor* ##1 in{\xintSeq{1}{\PfMCANTotalExo}}\do{%
\setcounter{PfMExoSol}{##1}%
\setcounter{PfMAlea}{0}%
- \IfFileExists{\jobname-Ex##1.sol}{\textbf{Question\ifnum\PfMCANTotalExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{TestCAN-##1}}:\fi}~\input{\jobname-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}%
- \label{pagesol-\thePfMMaquette-\thePfMExoSol}
+ \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}{}%
+ }%
+ }%
+ \PfMshowitems%
+ }%
+ }%
+}%
+
+% Tous les corrigés
+\NewDocumentCommand\PfMAffichageTousCorriges{}{%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeNombreExoMq{\PfMRetiensLienExoMa}%
+ \reademptyitems%
+ \xdef\Tototaltal{\thePfMMaquette}%
+ \xintFor* ##2 in{\xintSeq{1}{\Tototaltal}}\do{%
+ \refstepcounter{PfMMaquetteSol}%
+ \setcounter{PfMMaquette}{##2}%
+ \setcounter{PfMExoSol}{0}%
+ %\setcounter{PfMExoSolAlea}{0}%
+ \ifPfMRectoVerso%
+ \cleardoublepage%
+ \else%
+ \clearpage%
+ \fi%
+ \input{\jobname-DefiMq-\thePfMMaquette}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeNombreExoMq[##2]}}\do{%
+ \stepcounter{PfMExoSol}%
+ %\stepcounter{PfMExoSolAlea}%
+ \label{pagesol-\thePfMMaquetteSol-\thePfMExoSol}%
\setcounter{PfMAlea}{0}%
- \IfFileExists{\jobname-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-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-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-Ex##1.rep}\par\goodbreak}{%
- \IfFileExists{\jobname-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-Ex##1.cdp}\par\goodbreak}{}%
+ \IfFileExists{\jobname-Ma##2-Ex##1.sol}{\PfMAffichageHideItemSolution\textbf{\PfMTexteDuCorrige\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-##2-##1}}\fi\PfMAffichageTitreSolution}\par\nopagebreak\input{\jobname-Ma##2-Ex##1.sol}\par\goodbreak}{\IfFileExists{\jobname-Ma##2-Ex##1.rep}{\PfMAffichageHideItemSolution\textbf{Réponse(s) seule(s) de l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-##2-##1}}\fi}\par\nopagebreak\input{\jobname-Ma##2-Ex##1.rep}\par\goodbreak}{%
+ \IfFileExists{\jobname-Ma##2-Ex##1.cdp}{\PfMAffichageHideItemSolution\textbf{Indice(s) pour l'exercice\ifnum\thePfMExo=1\relax\else~\ifboolKV[Boulot]{CorrigeSeul}{##1}{\ref{page-##2-##1}}\fi}\par\nopagebreak\input{\jobname-Ma##2-Ex##1.cdp}\par\goodbreak}{}%
}%
}%
\PfMshowitems%
}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
}%
}%
@@ -1080,28 +1283,40 @@
\makeatletter
\def\EntrainementWrite{%
\@bsphack%
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.qrc"%
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.qrc"%
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
\def\verbatim@processline{%
\immediate\write\verbatim@out{\the\verbatim@line}}%
\verbatim@start}%
\def\endEntrainementWrite{\immediate\closeout\verbatim@out\@esphack}%
-
-\let\Entrainement\EntrainementWrite\let\endEntrainement\endEntrainementWrite%
\makeatother
\NewDocumentCommand\PfMAffichageEntrainement{}{%
- \clearpage
+ \ifboolKV[Boulot]{ESansSaut}{\vfill}{%
+ \ifPfMDeuxColonnes
+ \newpage
+ \else
+ \ifPfMRectoVerso
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ \fi
+ }%
\TikzAutomatismes
+ \setlength{\columnseprule}{\useKV[Boulot]{EEpaisseur}}%
+ \ifboolKV[Boulot]{EntrainementColonnes}{\begin{multicols}{\useKV[Boulot]{EColonnes}}}{}%
\setcounter{PfMExoEntrai}{0}%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
\refstepcounter{PfMExoEntrai}%
- \IfFileExists{\jobname-Ex##1.qrc}{%
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.qrc}{%
\begin{center}
- \label{pageentrai-\thePfMMaquette-\thePfMExoEntrai}%
- \textbf{\PfMTexteDeLEntrainement\ifnum\thePfMExo=1\relax\else~\ref{page-\thePfMMaquette-##1}\fi}\par\nopagebreak\input{\jobname-Ex##1.qrc}\end{center}}{}%
+ \label{pageentrai-\thePfMMaquette-\thePfMExoEntrai}%
+ \textbf{\PfMTexteDeLEntrainement\ifnum\thePfMExo=1\relax\else~\ref{page-\thePfMMaquette-##1}\fi}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.qrc}\end{center}%
+ }{}%
}%
+ \ifboolKV[Boulot]{EntrainementColonnes}{\end{multicols}}{}%
}%
\NewDocumentCommand\TikzAutomatismes{}{%
@@ -1111,6 +1326,7 @@
\end{center}
\end{tcolorbox}%
}%
+
%%%%%%%% BAREME %%%%%%%%%%%
%% Bareme
\newlength{\brouillon}
@@ -1128,17 +1344,23 @@
\newcommand*\brm[1]{%
\ifboolKV[Boulot]{Fiche}{}{%
- \immediate\write\@auxout{%
- \string\opadd*{#1}%
- {total\the\c@PfMSection-\the\c@PfMExo}%
- {total\the\c@PfMSection-\the\c@PfMExo}%
- \string\opcopy{\thePfMExo}{TotalExo}%
+ \ifboolKV[Boulot]{FdR}{}{%
+ \ifboolKV[Boulot]{Contrat}{}{%
+ \ifboolKV[Boulot]{Parcours}{}{%
+ \immediate\write\@auxout{%
+ \string\opadd*{#1}%
+ {total\the\c@PfMSection-\the\c@PfMExo}%
+ {total\the\c@PfMSection-\the\c@PfMExo}%
+ \string\opcopy{\thePfMExo}{TotalExo}%
+ }%
+ \ifboolKV[ClesExercices]{BaremeDetaille}{%
+ \setlength{\brouillon}{\BaremeEspace@Marge-\linewidth+\textwidth}%
+ \makebox[0pt][r]{\footnotesize\FranPt{#1}\hspace*{\brouillon}}%
+ \ignorespaces%
+ }{}%
+ }%
+ }%
}%
- \ifboolKV[ClesExercices]{BaremeDetaille}{%
- \setlength{\brouillon}{\BaremeEspace@Marge-\linewidth+\textwidth}%
- \makebox[0pt][r]{\footnotesize\FranPt{#1}\hspace*{\brouillon}}%
- \ignorespaces%
- }{}%
}%
}%
@@ -1178,11 +1400,25 @@
\@ifundefined{Op@total#1}{recompilez}%
{%
\opunzero{total#1}% on ne sait jamais
- \opset{decimalsepsymbol={,}}
+ \opset{decimalsepsymbol={,}}%
\opprint{total#1}~%
- \opset{decimalsepsymbol={.}}
+ \opset{decimalsepsymbol={.}}%
+ \useKV[ClesExercices]{MotPoint}%
\opcmp{total#1}{2}%
- \ifopge \useKV[ClesExercices]{MotPoint}s\else \useKV[ClesExercices]{MotPoint}\fi
+ \ifopge s\fi%
+ }%
+}
+
+\newcommand\ScoreMaximal{%
+ \@ifundefined{Op@ScoreTotal\thePfMMaquette}{recompilez}%
+ {%
+ \opunzero{ScoreTotal\thePfMMaquette}% on ne sait jamais
+ \opset{decimalsepsymbol={,}}%
+ \opprint{ScoreTotal\thePfMMaquette}~%
+ \opset{decimalsepsymbol={.}}%
+ \useKV[ClesExercices]{MotPoint}%
+ \opcmp{ScoreTotal\thePfMMaquette}{2}%
+ \ifopge s\fi%
}%
}
@@ -1223,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}{%
@@ -1251,12 +1495,12 @@
\NewDocumentCommand{\PfMLienVersEntrainement}{}{%
\ifboolKV[Boulot]{AvecEntrainement}{%
- \ifboolKV[ClesExercices]{PasEntrainement}{}{%
+ \ifboolKV[ClesExercices]{AEntretenir}{%
\node[%
fill=tcbcolback,%
anchor=center,rotate=45%
] at ($(frame.north east)!0.75!(frame.south east)$){\hyperref[pageentrai-\thePfMMaquette-\thePfMExo]{\faDumbbell}};%
- }%
+ }{}%
}{}%
}%
@@ -1274,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
%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -1288,6 +1545,7 @@
colback=LightSteelBlue,
colbacklower=white,
frame hidden,
+ overlay=\useKV[ClesExercices]{Ajout}%
}%
}%
@@ -1300,6 +1558,7 @@
title=\ifboolKV[ClesExercices]{AffichageTitre}{\useKV[ClesExercices]{Titre}}{},%
coltitle=black,
frame hidden,
+ overlay=\useKV[ClesExercices]{Ajout}%
}
}
@@ -1307,7 +1566,6 @@
%%% Base des exercices DM
\tcbset{%
tikzdm/.style={%
- %lowerbox=ignored,
enhanced,
breakable,
colback=white,
@@ -1328,6 +1586,8 @@
},%
overlay unbroken and first={%
%
+ \useKV[ClesExercices]{Ajout}%
+ %
\PfMAffichageSource%
%
\ifboolKV[ClesExercices]{BaremeTotal}{%
@@ -1346,21 +1606,23 @@
}%
}%
-\NewDocumentEnvironment{exerciceDM}{so+b}{%
+\NewDocumentEnvironment{exerciceDM}{so}{%
\setcounter{PfMAlea}{0}%
+ % 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}%
}{}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{%
@@ -1376,12 +1638,12 @@
label=page-\thePfMMaquette-\thePfMExo,%
]%
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}%
\PfMApresLesExercices%
}%
@@ -1508,24 +1770,25 @@
\immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Roman{PfMMaquette}Contrat#1\endcsname{\csname \Roman{PfMMaquette}confiance#1\endcsname}}%
}%
-
-\NewDocumentEnvironment{exerciceContrat}{so+b}{%
+\NewDocumentEnvironment{exerciceContrat}{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}%
}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-ContratTotalExo}}%
@@ -1546,18 +1809,17 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}
\PfMApresLesExercices%
}%
}%
}%
-
%%% Contrat %%%
\tcbset{%
usercontrat/.style={%
@@ -1606,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%
@@ -1627,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.}%
{%
@@ -1774,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});%
@@ -1799,7 +2064,7 @@
\xdef\RetiensLeDepart{0}%
\xdef\RetiensLesReponses{0}%
\xdef\RetiensNonAffichees{0}%
- \xdef\RetiensEtage{0}
+ \xdef\RetiensEtage{0}%
\xintFor* ##1 in{\xintSeq{1}{\ListeRouteHautelen}}\do{%
\xintifboolexpr{\ListeRouteHaute[##1]==0}{%
\xdef\RetiensEtage{\fpeval{\RetiensEtage+1}}%
@@ -1814,7 +2079,7 @@
\xintifboolexpr{\fpeval{\RetiensLesReponses-1}==\RetiensNonAffichees}{%
% %
}{%
- \xintFor* ##2 in{\xintSeq{\fpeval{\RetiensLeDepart+1}}{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}}\do{
+ \xintFor* ##2 in{\xintSeq{\fpeval{\RetiensLeDepart+1}}{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}}\do{%
\xintifboolexpr{\ListeRouteHaute[##2]<0}{%
\draw (B-##2) to (B-\fpeval{##2+1});%
}{%
@@ -1863,24 +2128,28 @@
\fi
\immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Roman{PfMMaquette}FdR#1\endcsname{\csname \Roman{PfMMaquette}route#1\endcsname}}%
}%
-
-\NewDocumentEnvironment{exerciceFdR}{so+b}{%
+
+\def\Relecture{}%
+
+\NewDocumentEnvironment{exerciceFdR}{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}%
}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \stepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-FdRTotalExo}}%
@@ -1914,12 +2183,12 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}
\PfMApresLesExercices%
}%
@@ -1945,7 +2214,7 @@
\string\opcopy{\thePfMExo}{TotalExo}%
}%
\@bsphack%
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.can"%
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.can"%
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
\def\verbatim@processline{\immediate\write\verbatim@out{\the\verbatim@line}}%
@@ -1955,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%
@@ -1970,7 +2239,6 @@
\tcbset{%
usercan/.style={%
enhanced,
- % spread upwards=-1cm,colback=gray!5%
frame hidden,
colback=white,
middle=24pt,
@@ -2013,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
@@ -2030,7 +2304,6 @@
\Large\sffamily Course aux nombres (Correction)
\end{center}
\hfill\useKV[CAN]{Niveau}%
- %\par{\tiny\useKV[CAN]{Code}}\hfill{\scriptsize\useKV[CAN]{Date}}%
\end{tcolorbox}%
}
%%% FdR %%%
@@ -2080,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%
@@ -2112,19 +2387,33 @@
\reademptyitems%
\xdef\PfMFooTestA{\ListeExercicesPA[1]}%
\ifnum\ListeExercicesPAlen>1\relax%
- \xintFor* ##1 in{\xintSeq{2}{\ListeExercicesPAlen}}\do{%
- \xdef\PfMFooTestA{\PfMFooTestA,\ListeExercicesPA[##1]}%
- }%
+ \xintFor* ##1 in{\xintSeq{2}{\ListeExercicesPAlen}}\do{%
+ \xdef\PfMFooTestA{\PfMFooTestA,\ListeExercicesPA[##1]}%
+ }%
\fi%
- \ifboolKV[Parcours]{Vertical}{%
- \BuildParcoursTikzV{\ParcoursTotalExo}{\PfMFooTestA}%
+ \ifboolKV[Parcours]{Plan}{%
+ \BuildParcoursPlan{\ParcoursTotalExo}{\PfMFooTestA}%
}{%
- \BuildParcoursTikz{\ParcoursTotalExo}{\PfMFooTestA}%
+ \ifboolKV[Parcours]{Vertical}{%
+ \BuildParcoursTikzV{\ParcoursTotalExo}{\PfMFooTestA}%
+ }{%
+ \BuildParcoursTikz{\ParcoursTotalExo}{\PfMFooTestA}%
+ }%
}%
}%
}%
%\makeatother
+\NewDocumentCommand\BuildParcoursPlan{mm}{%
+ \setsepchar{,}%
+ \readlist*\ListeRetiens{#2}%
+ \begin{enumerate}
+ \foreachitem\compteur\in\ListeRetiens{%
+ \item[$\square$] Exercice \ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}%
+ }%
+ \end{enumerate}
+}%
+
\NewDocumentCommand\BuildParcoursTikzV{mm}{%
\setsepchar{,}%
\readlist*\ListeRetiens{#2}%
@@ -2155,8 +2444,13 @@
\begin{tikzpicture}[anchor=center,baseline=-1.25mm]
% On place les points
\Orientation=1\relax
+ \ifboolKV[Parcours]{Court}{%
+ \TotalParcoursTikz=\ListeRetienslen%
+ }{%
+ \TotalParcoursTikz=#1%
+ }%
\coordinate[anchor=base,baseline=-1.25mm] (A-1) at (0,0);%
- \xintFor* ##1 in{\xintSeq{2}{\fpeval{#1+1}}}\do{%
+ \xintFor* ##1 in{\xintSeq{2}{\fpeval{\the\TotalParcoursTikz+1}}}\do{%
\modulo{##1}{\useKV[SchemaParcours]{Colonnes}}%
\ifnum\remainder=0\relax%
\Orientation=\numexpr\Orientation*(-1)\relax%
@@ -2165,17 +2459,23 @@
\coordinate[xshift=\the\Orientation*\PfMLargeurSchemaParcours] (A-##1) at (A-\fpeval{##1-1});%
\fi%
}%
- \foreach\i in{2,...,#1}{%
- \draw[line width=1pt] (A-\fpeval{\i-1}) -- (A-\i);%
- }%
- %
- \draw[line width=1pt,>=latex,->] (A-#1)--(A-\fpeval{#1+1});
- %
- \xintFor* ##1 in{\xintSeq{1}{#1}}\do{%
- \draw[fill=white,dashed](A-##1) circle (2.5mm) node{##1};%
+ \foreach\i in{1,...,\the\TotalParcoursTikz}{%
+ \draw[line width=1pt] (A-\i) -- (A-\fpeval{\i+1});%
}%
- \foreachitem\compteur\in\ListeRetiens{%
- \draw[fill=PfMCouleurSP](A-\ListeRetiens[\compteurcnt]) circle (2.5mm) node{\ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};%
+% %
+ \draw[line width=1pt,>=latex,->] (A-\the\TotalParcoursTikz)--(A-\fpeval{\the\TotalParcoursTikz+1});
+% %
+ \ifboolKV[Parcours]{Court}{%
+ \foreachitem\compteur\in\ListeRetiens{%
+ \draw[fill=PfMCouleurSP](A-\compteurcnt) circle (2.5mm) node{\ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};%
+ }%
+ }{%
+ \xintFor* ##1 in{\xintSeq{1}{\the\TotalParcoursTikz}}\do{%
+ \draw[fill=white,dashed](A-##1) circle (2.5mm) node{##1};%
+ }%
+ \foreachitem\compteur\in\ListeRetiens{%
+ \draw[fill=PfMCouleurSP](A-\ListeRetiens[\compteurcnt]) circle (2.5mm) node{\ref{page-\thePfMMaquette-\ListeRetiens[\compteurcnt]}};%
+ }%
}%
\end{tikzpicture}%
}%
@@ -2195,7 +2495,7 @@
\stepcounter{PfMExo}%
\PfMChoixCorrection%
\@bsphack%
- \immediate\openout \verbatim@out "\jobname-PPEx\thePfMExo.tex" %
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-PPEx\thePfMExo.tex" %
\immediate\write\verbatim@out{\string\begin{exercice}}
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
@@ -2205,23 +2505,25 @@
\def\endexerciceParcoursPerso{\immediate\write\verbatim@out{\string\end{exercice}}\immediate\closeout\verbatim@out\@esphack}%
-\NewDocumentEnvironment{exerciceParcours}{so+b}{%
+\NewDocumentEnvironment{exerciceParcours}{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}%
}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{\string\opcopy{\thePfMExo}{\Roman{PfMMaquette}-ParcoursTotalExo}}%
@@ -2242,12 +2544,12 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}
\PfMApresLesExercices%
}%
@@ -2310,17 +2612,185 @@
}%
}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NewDocumentCommand\PfMScore{m}{%
+ \immediate\write\@auxout{%
+ \string\opadd*{#1}{ScoreTotal\thePfMMaquette}{ScoreTotal\thePfMMaquette}%
+ }%
+ \num{#1} pt\xintifboolexpr{#1>2 || #1==2}{s}{}%
+}%
+
+\def\PfMMPGrilleCode{%
+ PapierLargeur=floor(\mpdim{\linewidth}/(5mm));
+ color PapierCouleur;
+ PapierCouleur=0.8white;
+ %
+ vardef Papier(expr nb,score)=
+ path horizon,verticon;
+ horizon=(0,0)--(PapierLargeur*5mm,0);
+ verticon=(0,0)--(0,abs(nb)*5mm);
+ picture Papiers;
+ Papiers=image(
+ drawoptions(withcolor PapierCouleur);
+ for k=0 upto PapierLargeur:
+ draw verticon shifted((k*5mm,0));
+ endfor;
+ for k=0 upto abs(nb):
+ draw horizon shifted((0,k*5mm));
+ endfor;
+ drawoptions();
+ if nb<0:
+ path cc,cd,ce;
+ cd=(unitsquare xscaled (3*5mm) yscaled (abs(nb)*5mm)) shifted(5mm*(PapierLargeur-3,0));
+ ce=(unitsquare scaled (2*5mm)) shifted(5mm*(PapierLargeur-2.5,1));
+ cc=(unitsquare xscaled (6*5mm) yscaled (2*5mm)) shifted(5mm*(PapierLargeur-10,1));
+ fill cd withcolor PapierCouleur;
+ fill ce withcolor white;
+ fill cc withcolor white;
+ %drawoptions(withpen pencircle scaled 1);
+ draw ce;
+ draw cc;
+ draw cd;
+ draw polygone((0,0),(PapierLargeur*5mm,0),5mm*(PapierLargeur,abs(nb)),5mm*(0,abs(nb)));
+ if score>0:
+ label.bot(TEX("\PfMScore{"&decimal(score)&"}"),5mm*(PapierLargeur-1.5,1));
+ fi;
+ fi;
+ );
+ Papiers
+ enddef;
+}%
+
+\def\PfMPapierCinqCinq#1#2{%
+ \begin{center}
+ \ifluatex%
+ \mplibforcehmode%
+ \begin{mplibcode}%
+ \PfMMPGrilleCode
+ trace Papier(#1,#2);
+ \end{mplibcode}%
+ \else%
+ \begin{mpost}[mpsettings={\PfMMPGrilleCode}]
+ trace Papier(#1,#2);
+ \end{mpost}%
+ \fi%
+ \end{center}
+}%
+
+\def\PfMMPSeyesCode{%
+ u:=\useKV[ClesExercices]{EchelleSeyes}*1mm;
+ PapierLargeur=floor(\mpdim{\linewidth}/(u));
+ color PapierCouleur;
+ PapierCouleur=0.8white;%\useKV[Papiers]{Couleur};
+ vardef Seyes(expr nb,score)=
+ path horizon,verticon;
+ horizon=(0,0)--u*(PapierLargeur,0);
+ verticon=(0,0)--u*(0,abs(nb));
+ picture PapierSeyes;
+ PapierSeyes=image(
+ drawoptions(withcolor PapierCouleur);
+ for k=0 upto (PapierLargeur):
+ draw verticon shifted((k*u,0));
+ endfor;
+ for k=0 step 0.25 until abs(nb):
+ draw horizon shifted((0,k*u)) withpen pencircle scaled 0.5;
+ endfor;
+ for k=0 upto abs(nb):
+ draw horizon shifted((0,k*u)) withpen pencircle scaled 1.25;
+ endfor;
+ drawoptions();
+ if nb<0:
+ path cc,cd,ce;
+ cd=(unitsquare xscaled (2*u) yscaled (abs(nb)*u)) shifted(u*(PapierLargeur-2,0));
+ ce=(unitsquare scaled (1*u)) shifted(u*(PapierLargeur-1.5,1));
+ cc=(unitsquare xscaled (4*u) yscaled (1*u)) shifted(u*(PapierLargeur-7,1));
+ fill cd withcolor PapierCouleur;
+ fill ce withcolor white;
+ fill cc withcolor white;
+ draw cc;
+ draw cd;
+ draw ce;
+ draw polygone((0,0),(PapierLargeur*u,0),u*(PapierLargeur,abs(nb)),u*(0,abs(nb)));
+ if score>0:
+ label.bot(TEX("\PfMScore{"&decimal(score)&"}"),u*(PapierLargeur-1,1));
+ fi;
+ fi;
+ );
+ PapierSeyes
+ enddef;
+}%
+
+\def\PfMPapierSeyes#1#2{%
+ \begin{center}
+ \ifluatex%
+ \mplibforcehmode%
+ \begin{mplibcode}%
+ \PfMMPSeyesCode
+ trace Seyes(#1,#2);
+ \end{mplibcode}%
+ \else%
+ \begin{mpost}[mpsettings={\PfMMPSeyesCode}]%
+ trace Seyes(#1,#2);
+ \end{mpost}
+ \fi%
+ \end{center}
+}%
+
+\NewDocumentCommand\PfMJusteAvantLaFinDesExercices{}{%
+ \ifboolKV[ClesExercices]{Interieur}{%
+ \ifboolKV[ClesExercices]{Ligne}{%
+ \vspace*{\PfMEspaceAvantLignes}\par%
+ \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}}%
+ }{}%
+ }{}%
+ }{}%
+}%
+
\NewDocumentCommand\PfMApresLesExercices{}{%
- \ifboolKV[ClesExercices]{Ligne}{%
- % \vspace{\PfMEspaceAvantLignes}
+ \ifboolKV[ClesExercices]{Interieur}{}{%
+ \ifboolKV[ClesExercices]{Ligne}{%
+ \vspace*{\PfMEspaceAvantLignes}%
\PfMSetStretch\PfMLignespointilles{\useKV[ClesExercices]{Lignes}}%
- \par\vspace*{\PfMEspaceApresLignes}\par%
- }{}%
- \par%
- \ifboolKV[ClesExercices]{Cadres}{%
+ \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}[*]}{}%
+ \IfHookExistsTF{env/center/end}{\RemoveFromHook{env/center/end}[*]}{}%
+ \IfHookExistsTF{env/itemize/begin}{\RemoveFromHook{env/itemize/begin}[*]}{}%
+ \IfHookExistsTF{env/itemize/end}{\RemoveFromHook{env/itemize/end}[*]}{}%
+ \IfHookExistsTF{env/description/begin}{\RemoveFromHook{env/description/begin}[*]}{}%
+ \IfHookExistsTF{env/description/end}{\RemoveFromHook{env/description/end}[*]}{}%
}{}%
}%
@@ -2329,7 +2799,7 @@
\expandafter\xdef\csname PfMEcrireTitreSol\endcsname{\csname PfMTSol\Roman{PfMExoSol}\endcsname}%
\ifx\bla\PfMEcrireTitreSol\bla%
\else
- \PfMEcrireTitreSol%
+ ~:~\PfMEcrireTitreSol%
\fi%
}%
@@ -2342,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
@@ -2361,71 +2835,124 @@
\fi%
}%
-\newbox\PfMBoxSauvegarde%
+\NewDocumentCommand\PfMAvantLesExercices{}{%
+ \ifboolKV[ClesExercices]{AvecIndications}{\setcounter{RetiensIndic}{1}}{}%
+ \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
+ \refstepcounter{PfMSection}%
+ \PfMChoixCorrection%
+ \PfMChoixEntrainement%
+ \refstepcounter{PfMExo}%
+ \PfMChoixNomCorrection%
+ \ifboolKV[ClesExercices]{ACompleter}{%
+ \let\oldenumerate\enumerate%
+ \let\oldendenumerate\endenumerate%
+ \let\enumerate\autoenumerate%
+ \let\endenumerate\endautoenumerate%
+ \AddToHook{env/center/begin}[Bcenter]{\let\item\olditem}%
+ \AddToHook{env/center/end}[Ecenter]{\let\item\litem}%
+ \AddToHook{env/description/begin}[Bdescription]{\let\item\olditem}%
+ \AddToHook{env/description/end}[Edescription]{\let\item\litem}%
+ \AddToHook{env/itemize/begin}[Bitemize]{\let\item\olditem}%
+ \AddToHook{env/itemize/end}[Eitemize]{\let\item\litem}%
+ }{}%
+}%
-\NewDocumentEnvironment{exerciceFiche}{so+b}{%
+\NewDocumentEnvironment{exerciceFiche}{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}%
}{}%
- \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
\colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
\colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
- \PfMChoixTitreSolution%
- \PfMChoixHideItemSolution%
- \begin{tcolorbox}[%
- tikzfiche,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
- \ifboolKV[Boulot]{Dys}{\raggedright}{}%
- %
- #3
+ \PfMChoixTitreSolution%
+ \PfMChoixHideItemSolution%
+ \begin{tcolorbox}[%
+ tikzfiche,
+ label is label,
+ label=page-\thePfMMaquette-\thePfMExo
+ ]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}%
- \ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
\PfMApresLesExercices%
}%
}%
}%
+% \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%
+ \else%
+ \clearpage%
+ \fi%
+ \setKV[OlympiadesAPMEP]{#1}%
+ \begin{tcolorbox}[colback=colLogo]
+ \begin{Dispo}*{\normalsize\logoapmep{\scale@logo}}
+ \Large\sffamily \useKV[OlympiadesAPMEP]{Theme}
+
+ (Correction)%
+ \end{Dispo}
+ \end{tcolorbox}%
+}%
+%\makeatother
+
\NewDocumentEnvironment{exerciceOlympiadesAPMEP}{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}%
}{}%
- \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
\colorlet{ColExoFiche}{\useKV[ClesExercices]{Background}}%
- \colorlet{PfMCadreFiche}{\useKV[ClesExercices]{Cadre}}%
- \setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices%
+% \refstepcounter{PfMSection}%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\PfMChoixHideItemSolution%
@@ -2438,29 +2965,32 @@
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
- \end{tcolorbox}%
- \ifboolKV[ClesExercices]{Profile}{\PfMshowitems}{}%
- \PfMApresLesExercices%
- }
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
+ \end{tcolorbox}%
+ \PfMApresLesExercices%
+ }%
+ }%
}%
-\NewDocumentEnvironment{exerciceDS}{so+b}{%
+\NewDocumentEnvironment{exerciceDS}{so}{%
\setcounter{PfMAlea}{0}%
+ % 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}%
}{}%
- \ifboolKV[ClesExercices]{Profile}{\PfMhideitems}{}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
+ \PfMAvantLesExercices
\ifboolKV[Boulot]{CorrigeSeul}{}{%
\PfMChoixTitreSolution%
\immediate\write\@auxout{%
@@ -2476,12 +3006,12 @@
label=page-\thePfMMaquette-\thePfMExo
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
- #3
}%
}%
}{%
- \ifboolKV[ClesExercices]{NonUtilise}{}{%
+ \ifboolKV[ClesExercices]{NonUtilise}{\end{PfMHide}}{%
\ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}%
\PfMApresLesExercices%
}%
@@ -2490,8 +3020,11 @@
\NewDocumentEnvironment{ExerciceRecapBrevet}{so}{%
\setcounter{PfMAlea}{0}%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#2}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\IfBooleanTF{#1}{%
\setKV[ClesExercices]{Numerote=false}%
}{}%
@@ -2513,11 +3046,13 @@
]
\ifboolKV[Boulot]{Dys}{\raggedright}{}%
}{%
+ \PfMJusteAvantLaFinDesExercices%
\end{tcolorbox}
\PfMApresLesExercices%
}%
\makeatother
+
%%% Recap Brevet
%%% Style Brevet
\tcbset{%
@@ -2575,6 +3110,7 @@
at (frame.north east)%
{\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}};%
}{}%
+ \useKV[ClesExercices]{Ajout}%
}%
}%
}%
@@ -2608,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%
%
@@ -2655,8 +3193,11 @@
\newenvironment{exercicePdT}[1][]{%
\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{PfMSection}%
\PfMChoixCorrection%
@@ -2704,6 +3245,17 @@
\end{tikzpicture}%
}%
+\NewDocumentCommand\CheminNeutre{m}{%
+ \setsepchar[*]{,*/}%
+ \readlist*\ListeCheminVrai{#1}%
+ \setsepchar{,}%
+ \begin{tikzpicture}[remember picture,overlay]%
+ \foreachitem\compteur\in\ListeCheminVrai{%
+ \draw[cheminPdT] (\ListeCheminVrai[\compteurcnt,1]) to (\ListeCheminVrai[\compteurcnt,2]);%
+ }%
+ \end{tikzpicture}%
+}%
+
\NewDocumentCommand\CheminFaux{m}{%
\setsepchar[*]{,*/}%
\readlist*\ListeCheminVrai{#1}%
@@ -2785,8 +3337,11 @@
}%
\NewDocumentEnvironment{exerciceKholle}{o}{%
+ % Mettre les indications hors-jeu
+ \setcounter{RetiensIndic}{0}
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
+ \ifboolKV[Boulot]{Input}{\Relecture}{}%
\setKV[ClesExercices]{BaremeTotal=false,BaremeDetaille=false}%
\PfMChoixCorrection%
\refstepcounter{PfMExo}%
@@ -2803,8 +3358,11 @@
\newenvironment{exerciceBase}[1][]{%
\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}
\tcolorbox[%
@@ -2816,8 +3374,11 @@
\newenvironment{exerciceBaseHTML}[1][]{%
\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}
\tcolorbox[%
@@ -3056,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%
%
@@ -3080,17 +3643,30 @@
enhanced,
breakable,
colback=ColExoFiche,
- % colframe=PfMCadreFiche,
frame hidden,
overlay unbroken and first={%
- \draw[colLogo,line width=1pt] ([yshift=-10pt]frame.north west)--([yshift=-10pt]frame.north east);
+ \draw[colLogo,line width=1pt] ([yshift=-12pt]frame.north west)--([yshift=-12pt]frame.north east);
\node[%
name=A,
fill=ColExoFiche,
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%
@@ -3149,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%
@@ -3189,7 +3767,7 @@
\end{tcolorbox}%
}%
-\newcommand\TikzDSCor[1]{%
+\NewDocumentCommand\TikzDSCor{m}{%
\ifPfMRectoVerso%
\cleardoublepage%
\else%
@@ -3230,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}{%
@@ -3274,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}%
@@ -3299,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-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-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{}
- \textbf{Corrigé de l'exercice} : \input{\jobname-PPEx\ListeExercices[1].sol}\par\goodbreak%
- \else
+ \ifnum\fpeval{\ListeExerciceslen}=1\relax{}%
+ \textbf{Corrigé de l'exercice} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[1].sol}\par\goodbreak%
+ \else%
\foreach\i in{1,...,\ListeExerciceslen}{%
- \textbf{Corrigé de l'exercice \i} : \input{\jobname-PPEx\ListeExercices[\i].sol}\par\goodbreak%
+ \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%
+ }{}%
}%
}%
@@ -3344,7 +3936,7 @@
\TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}%
\readlist*\ListeExercices{\RecapListeExo}%
\foreach\i in{1,...,\ListeExerciceslen}{%
- \IfFileExists{\jobname-PPEx\ListeExercices[\i].sol}{\textbf{Corrigé de l'exercice \i} : \input{\jobname-PPEx\ListeExercices[\i].sol}\par\goodbreak}{}%
+ \IfFileExists{\jobname-PPEx\ListeExercices[\i].sol}{\textbf{Corrigé de l'exercice \i} : \input{\jobname-Ma\thePfMMaquette-PPEx\ListeExercices[\i].sol}\par\goodbreak}{}%
}%
}%
}%
@@ -3363,14 +3955,6 @@
}{%
\ifnum\thePfMMaquette=1\relax%
\else%
- %\ifnum\PfMFontSize=0\relax%
- % \fontsize{10}{\fpeval{1.2*10}}%
- %\else\ifnum\PfMFontSize=1\relax%
- % \fontsize{11}{\fpeval{1.2*11}}%
- % \else%
- % \fontsize{12}{\fpeval{1.2*12}}%
- % \fi%
- %\fi%
\fontsize{\fpeval{10+\PfMFontSize}}{\fpeval{1.2*(10+\PfMFontSize)}}%
\selectfont%
\renewcommand{\JustifyingParindent}{\parindent}
@@ -3395,9 +3979,17 @@
}%
%% Pour factoriser l'appel aux corrections dans l'environnement Maquette
+\makeatletter
\NewDocumentCommand\PfMPrepareCorrection{m}{%
\useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \if@CAN
+ \ifnum\thepage<5\relax
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{5-\thepage}}}\do{%
+ ~\clearpage%
+ }%
+ \fi%
+ \fi%
\if@Dyslexie%
\setKV[Boulot]{Dys}%
\fi%
@@ -3405,6 +3997,7 @@
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\PfMChangerTailleCorrection%
}%
+\makeatother
\NewDocumentCommand\PfMAffichageCorrectionColonnes{}{%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -3418,9 +4011,744 @@
\ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
}%
+% GameBook
+\tcbset{%
+ userlivreheros/.style={%
+ spread upwards=-1cm,colback=Ivory,colframe=black!25!Ivory%
+ }%
+}%
+
+\setKVdefault[LivreHeros]{Theme=Les nombres d\'ecimaux}
+
+\NewDocumentCommand\vaen{m}{\ref{#1}}%
+
+\NewDocumentCommand\TikzLivreHeros{}{%
+ \begin{tcolorbox}[userlivreheros]%
+ \begin{center}
+ \Large\sffamily \useKV[LivreHeros]{Theme}
+ \end{center}
+ \end{tcolorbox}%
+}%
+
+\tcbset{%
+ tikzLH/.style={%
+ before skip=1em,
+ enhanced,
+ coltitle=black,
+ colbacktitle=black!10!Ivory,
+ colframe=white,
+ colback=white,
+ attach boxed title to top center={yshift=-2mm},
+ label is label
+ }%
+}%
+
+\newcounter{PfMGameBook}[PfMMaquette]
+\setcounter{PfMGameBook}{0}
+
+\makeatletter
+\def\ExoGBWrite{%
+ \setcounter{PfMAlea}{0}%
+ \PfMChoixCorrection%
+ \stepcounter{PfMExo}%
+ \immediate\write\@auxout{%
+ \string\opcopy{\thePfMExo}{TotalExo}%
+ }%
+ \@bsphack%
+ \immediate\openout \verbatim@out "\jobname-Ma\thePfMMaquette-Ex\thePfMExo.gb"%
+ \let\do\@makeother\dospecials%
+ \catcode`\^^M\active%
+ \def\verbatim@processline{\immediate\write\verbatim@out{\the\verbatim@line}}%
+ \verbatim@start}%
+\def\endExoGBWrite{\immediate\closeout\verbatim@out\@esphack}%
+\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}%
@@ -3431,43 +4759,76 @@
\setcounter{PfMSOS}{0}%
% nouvelles valeurs.
\stepcounter{PfMMaquette}%
- % options de boulot
- \IfHookExistsTF{env/Maquette/after}{\RemoveFromHook{env/Maquette/after}[*]}{}%
- %\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]}{}%
- % \AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}%
+ \immediate\write\@auxout{%
+ \string\opcopy{0}{ScoreTotal\thePfMMaquette}
+ }%
+ %% \opadd*{#1}{ScoreTotal\thePfMMaquette}{ScoreTotal\thePfMMaquette}%
\useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
- \ifboolKV[Boulot]{CorrigeSeul}{\setKV[Boulot]{CorrigeFin}}{}%
- \if@Dyslexie
- \setKV[Boulot]{Dys}
+ \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}}}%
+ \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}%
+ \ifboolKV[Boulot]{CorrigeSeul}{\setKV[Boulot]{CorrigeFin}}{}%
+ \if@Dyslexie%
+ \setKV[Boulot]{Dys}%
+ \fi%
\PfMBasculeDys%
- \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}%
+ \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}{%
- \setKV[OlympiadesAPMEP]{#2}%\TikzOlympiadesAPMEP%
- \let\exercice\exerciceOlympiadesAPMEP\let\endexercice\endexerciceOlympiadesAPMEP%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \PfMAffichageCorrectionColonnes%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{CAN}{%
+ \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}%
+ \TikzOlympiadesAPMEPCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{CAN}{%
\setKV[CAN]{#2}%
- %\ifboolKV[Boulot]{CorrigeSeul}{}{\TikzCAN}%
\setcounter{PfMCNNumQ}{0}%
\setlength{\PfMLargeurQuestion}{\useKV[CAN]{CoefQ}\linewidth}\setlength{\PfMLargeurReponse}{\useKV[CAN]{CoefR}\linewidth}\setlength{\PfMLargeurJury}{\useKV[CAN]{CoefJ}\linewidth}%
\let\exercice\ExoCANWrite\let\endexercice\endExoCANWrite%
\AddToHook{env/exercice/begin}{\setcounter{PfMAlea}{0}}%
\AddToHook{env/Maquette/end}{%
- \xdef\PfMAncienneGraine{\PfMChoisisGraineAlea{123456789}}
+ \xdef\PfMAncienneGraine{\PfMChoisisGraineAlea{123456789}}%
\xdef\PfMCANTotalExo{\thePfMExo}%
\setbox\PfMSauvegardeBox\vbox{%
- \PfMGraineAlea{\thePfMMaquette}
+ \PfMGraineAlea{\thePfMMaquette}%
\setcounter{PfMExo}{0}%
\renewcommand{\arraystretch}{2}%
\begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
@@ -3476,21 +4837,21 @@
\hline%
\endhead%
\xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{%
- \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-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}%
\renewcommand{\arraystretch}{1}%
- }
+ }%
\ifboolKV[Boulot]{CorrigeInverse}{%
- \PfMPrepareCorrection{#1}%
- \TikzCANCor{#2}%
- \PfMAffichageCorrectionColonnes%
- \clearpage
- \normalsize%
- \TikzCAN%
- \PfMGraineAlea{\thePfMMaquette}%
- \setcounter{PfMCNNumQ}{0}%
+ \PfMPrepareCorrection{#1}%
+ \TikzCANCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ \clearpage
+ \normalsize%
+ \TikzCAN%
+ \PfMGraineAlea{\thePfMMaquette}%
+ \setcounter{PfMCNNumQ}{0}%
\setcounter{PfMExo}{0}%
\renewcommand{\arraystretch}{2}%
\begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
@@ -3499,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-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}%
@@ -3508,7 +4869,7 @@
\PfMGraineAlea{\PfMAncienneGraine}%
\TikzCAN%
\setcounter{PfMCNNumQ}{0}%
- \setcounter{PfMExo}{0}%
+ \setcounter{PfMExo}{0}%
\renewcommand{\arraystretch}{2}%
\begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
\hhline{~---}%
@@ -3516,233 +4877,517 @@
\hline%
\endhead%
\xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{%
- \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-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}%
\renewcommand{\arraystretch}{1}%
- \ifboolKV[Boulot]{CorrigeFin}{\ifboolKV[Boulot]{CorrigeInverse}{}{\clearpage
- \PfMPrepareCorrection{#1}%
- \TikzCANCor{#2}%
- \PfMAffichageCorrectionColonnes%
- }
- }{}
- }
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \ifboolKV[Boulot]{CorrigeInverse}{}{%
+ \clearpage
+ \PfMPrepareCorrection{#1}%
+ \TikzCANCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }%
}%
}{%
\ifboolKV[Boulot]{FdR}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[FdR]{#2}\TikzFdR%
- }
- \let\exercice\exerciceFdR\let\endexercice\endexerciceFdR%
- \ifboolKV[Boulot]{AvecEntrainement}{%
- \AddToHook{env/Maquette/end}[Haltere]{%
- \PfMAffichageEntrainementColonnes%
- }%
- }{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzFdRCor{#2}%
- \PfMAffichageCorrectionColonnes
+ % \input{PfMMaquetteFdR.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[FdR]{#2}\TikzFdR%
}%
- }{}%
- }{%
- \ifboolKV[Boulot]{Contrat}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[Contrat]{#2}\TikzContrat%
- }
- \let\exercice\exerciceContrat\let\endexercice\endexerciceContrat%
- \ifboolKV[Boulot]{AvecEntrainement}{%
- \AddToHook{env/Maquette/end}[Haltere]{%
- \PfMAffichageEntrainementColonnes%
- }%
- }{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
+ \let\exercice\exerciceFdR\let\endexercice\endexerciceFdR%
+ \ifboolKV[Boulot]{AvecEntrainement}{%
+ \AddToHook{env/Maquette/end}[Haltere]{%
+ \PfMAffichageEntrainementColonnes%
+ }%
+ }{}%
+ \ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
\PfMPrepareCorrection{#1}%
- \TikzContratCor{#2}%
- \PfMAffichageCorrectionColonnes%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{Cours}{%
- \setKV[Cours]{#2}%
- \TikzCours%
- \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzFicheCor{#2}%
- \PfMAffichageCorrectionColonnes
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{RecapBrevet}{%
- \setKV[RecapBrevet]{#2}%
- \TikzRecapBrevet%
- \let\exercice\ExerciceRecapBrevet\let\endexercice\endExerciceRecapBrevet%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzRecapBrevetCor{#2}%
- \PfMAffichageCorrectionColonnes%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{ParcoursPerso}{%
- \setKV[ParcoursPerso]{#2}%
- \DTLloaddb[noheader,keys={PrenomEleve,NomEleve,ListeExo}]{dataperso}{\useKV[ParcoursPerso]{Fichier}.csv}%
- \let\exercice\exerciceParcoursPerso\let\endexercice\endexerciceParcoursPerso%
- \ifboolKV[Boulot]{CorrigeFin}{\setcounter{PfMCorrigeParcoursPerso}{1}}{}%
- \setcounter{PfMExo}{0}%
- \AtEndDocument{%
- \Recapitulatif{#1}{#2}%
- }%
- }{%
- \ifboolKV[Boulot]{Parcours}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[Parcours]{#2}\TikzParcours%
- }
- \let\exercice\exerciceParcours\let\endexercice\endexerciceParcours%
- \ifboolKV[Boulot]{AvecEntrainement}{%
- \AddToHook{env/Maquette/end}[Haltere]{%
- \PfMAffichageEntrainementColonnes%
- }%
- }{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzParcoursCor{#2}
- \PfMAffichageCorrectionColonnes
- }%
+ \TikzFdRCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
}{}%
}{%
- \ifboolKV[Boulot]{PdT}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[PdT]{#2}\TikzPdT%
- }
- \let\exercice\exercicePdT\let\endexercice\endexercicePdT%
+ \ifboolKV[Boulot]{Contrat}{%
+ % \input{PfMMaquetteContrat.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[Contrat]{#2}\TikzContrat%
+ }%
+ \let\exercice\exerciceContrat\let\endexercice\endexerciceContrat%
+ \ifboolKV[Boulot]{AvecEntrainement}{%
+ \AddToHook{env/Maquette/end}[Haltere]{%
+ \PfMAffichageEntrainementColonnes%
+ }%
+ }{}%
\ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzPdTCor{#2}%
- \PfMAffichageCorrectionColonnes%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzContratCor{#2}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
}{%
- \ifboolKV[Boulot]{DM}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[DM]{#2}\TikzDM%
- }
- \let\exercice\exerciceDM\let\endexercice\endexerciceDM%
+ \ifboolKV[Boulot]{Cours}{%
+ % \input{PfMMaquetteCours.tex}%
+ \setKV[Cours]{#2}%
+ \TikzCours%
+ \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
\ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzDMCor{#2}%
- \PfMAffichageCorrectionColonnes%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzFicheCor{#2}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
}{%
- \ifboolKV[Boulot]{Fiche}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[Fiche]{#2}%
- \TikzFiche%
+ \ifboolKV[Boulot]{RecapBrevet}{%
+ % \input{PfMMaquetteRecapBrevet.tex}%
+ \setKV[RecapBrevet]{#2}%
+ \TikzRecapBrevet%
+ \let\exercice\ExerciceRecapBrevet\let\endexercice\endExerciceRecapBrevet%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzRecapBrevetCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{ParcoursPerso}{%
+ \setKV[ParcoursPerso]{#2}%
+ \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{%
+ \PfMRecapitulatif{#1}{#2}%
}%
- \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
- \ifboolKV[Boulot]{AvecEntrainement}{%
+ }{%
+ \ifboolKV[Boulot]{Parcours}{%
+ % \input{PfMMaquetteParcours.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[Parcours]{#2}\TikzParcours%
+ }%
+ \let\exercice\exerciceParcours\let\endexercice\endexerciceParcours%
+ \ifboolKV[Boulot]{AvecEntrainement}{%
\AddToHook{env/Maquette/end}[Haltere]{%
\PfMAffichageEntrainementColonnes%
}%
}{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \ifboolKV[Boulot]{CorrigeAll}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}%
- \TikzFicheCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
- \IfFileExists{\jobname-Ex##1.sol}{\textbf{Corrigé de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.sol}\par\goodbreak}{}%
- }%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
- \TikzFicheCorRep{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
- \IfFileExists{\jobname-Ex##1.rep}{\textbf{Réponse(s) de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.rep}\par\goodbreak}{}%
- }%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
- \TikzFicheCorInd{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
- \IfFileExists{\jobname-Ex##1.cdp}{\textbf{Indice(s) pour l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.cdp}\par\goodbreak}{}%
- }%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
- }%
- }{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \useKVdefault[Boulot]%
- \setKV[Boulot]{#1}%
- %%
- \if@Dyslexie
- \setKV[Boulot]{Dys}
- \fi
- \PfMBasculeDys%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzFicheCor{#2}%
- \PfMChangerTailleCorrection%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
- }%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{DS}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[DS]{#2}\TikzDS%
- }%
- \let\exercice\exerciceDS\let\endexercice\endexerciceDS%
- \ifboolKV[Boulot]{BaremeComplet}{%
- \begin{center}
- \TableauRecapitulatif
- \end{center}
- }{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
+ \ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}
- \TikzDSCor{#2}%
+ \PfMPrepareCorrection{#1}%
+ \TikzParcoursCor{#2}%
\PfMAffichageCorrectionColonnes%
- }%
- }{}%
- }{%
- \ifboolKV[Boulot]{IE}{%
- \ifboolKV[Boulot]{CorrigeSeul}{}{%
- \setKV[IE]{#2}\TikzIE%
- }
- \let\exercice\exerciceDS\let\endexercice\endexerciceDS%On garde exerciceDS
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \PfMPrepareCorrection{#1}
- \TikzIECor{#2}%
- \PfMAffichageCorrectionColonnes
}%
}{}%
}{%
- \ifboolKV[Boulot]{Kholle}{%
- \setKV[Kholle]{#2}%
- \TikzKholle%
- \let\exercice\exerciceKholle\let\endexercice\endexerciceKholle%
- \ifboolKV[Kholle]{CR}{}{%
+ \ifboolKV[Boulot]{PdT}{%
+ % \input{PfMMaquettePdT.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[PdT]{#2}\TikzPdT%
+ }%
+ \let\exercice\exercicePdT\let\endexercice\endexercicePdT%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzPdTCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{DM}{%
+ % \input{PfMMaquetteDM.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[DM]{#2}\TikzDM%
+ }%
+ \let\exercice\exerciceDM\let\endexercice\endexerciceDM%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \TikzKholleCor{#2}%
- \TikzKholleCor{#2}%
- \TikzKholleCor{#2}%
- \PfMAffichageCorrige%
+ \PfMPrepareCorrection{#1}%
+ \TikzDMCor{#2}%
+ \PfMAffichageCorrectionColonnes%
}%
}{}%
+ }{%
+ \ifboolKV[Boulot]{Fiche}{%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[Fiche]{#2}%
+ \TikzFiche%
+ }%
+ \let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
+ \ifboolKV[Boulot]{AvecEntrainement}{%
+ \AddToHook{env/Maquette/end}[Haltere]{%
+ \PfMAffichageEntrainementColonnes%
+ }%
+ }{}%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \ifboolKV[Boulot]{CorrigeAll}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzFicheCor{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.sol}{\textbf{Corrigé de l'exercice ##1}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.sol}\par\goodbreak}{}%
+ }%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \TikzFicheCorRep{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.rep}{\textbf{Réponse(s) de l'exercice ##1}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.rep}\par\goodbreak}{}%
+ }%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \TikzFicheCorInd{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
+ \IfFileExists{\jobname-Ma\thePfMMaquette-Ex##1.cdp}{\textbf{Indice(s) pour l'exercice ##1}\par\nopagebreak\input{\jobname-Ma\thePfMMaquette-Ex##1.cdp}\par\goodbreak}{}%
+ }%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ }%
+ }{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+% \useKVdefault[Boulot]%
+% \setKV[Boulot]{#1}%
+% %%
+% \if@Dyslexie
+% \setKV[Boulot]{Dys}%
+% \fi
+% \PfMBasculeDys%
+% \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \if@AssembleCorrections
+ \else
+ \PfMPrepareCorrection{#1}%
+ \TikzFicheCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ \fi%
+ }%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{DS}{%
+ % \input{PfMMaquetteDS.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[DS]{#2}\TikzDS%
+ }%
+ \let\exercice\exerciceDS\let\endexercice\endexerciceDS%
+ \ifboolKV[Boulot]{BaremeComplet}{%
+ \begin{center}
+ \TableauRecapitulatif
+ \end{center}
+ }{}%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \if@AssembleCorrections
+ \else
+ \PfMPrepareCorrection{#1}%
+ \TikzDSCor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ \fi%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{IE}{%
+ % \input{PfMMaquetteIE.tex}%
+ \ifboolKV[Boulot]{CorrigeSeul}{}{%
+ \setKV[IE]{#2}\TikzIE%
+ }%
+ \let\exercice\exerciceDS\let\endexercice\endexerciceDS%On garde exerciceDS
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \PfMPrepareCorrection{#1}%
+ \TikzIECor{#2}%
+ \PfMAffichageCorrectionColonnes%
+ }%
+ }{}%
+ }{%
+ \ifboolKV[Boulot]{Kholle}{%
+ % \input{PfMMaquetteKholle.tex}%
+ \setKV[Kholle]{#2}%
+ \TikzKholle%
+ \let\exercice\exerciceKholle\let\endexercice\endexerciceKholle%
+ \ifboolKV[Kholle]{CR}{}{%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \TikzKholleCor{#2}%
+ \TikzKholleCor{#2}%
+ \TikzKholleCor{#2}%
+ \PfMAffichageCorrige%
+ }%
+ }{}%
+ }%
+ }{%
+ \ifboolKV[Boulot]{LivreHeros}{%
+ \setKV[LivreHeros]{#2}%
+ \TikzLivreHeros%
+ \let\exercice\ExoGBWrite\let\endexercice\endExoGBWrite%
+ \AddToHook{env/Maquette/end}{%
+ \xdef\PfMListeExoGB{}%
+ \xintFor* ##1 in{\xintSeq{2}{\thePfMExo}}\do{%
+ \xdef\PfMListeExoGB{\PfMListeExoGB,##1}%
+ }%
+ \MelangeListe{\PfMListeExoGB}{\fpeval{\thePfMExo-1}}%
+ \xdef\PfMFooMelange{1,\faa}%
+ \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]%
+ \refstepcounter{PfMGameBook}%
+ \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}
+ }%
+ }{}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
}%
- }{}%
+ }%
}%
}%
}%
@@ -3753,9 +5398,6 @@
}%
}%
}%
-}%
-}%
-}%
}{}%
\makeatother
%D'après JCC
@@ -3770,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]{%
@@ -3971,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},%
@@ -3987,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{%
@@ -4010,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}%
}
@@ -4105,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
@@ -4135,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
@@ -4165,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
@@ -4182,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}
@@ -4195,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},%
@@ -4219,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},%
@@ -4391,8 +6033,17 @@
\BaremeEspaceMarge{-82pt}
}
-\AddToHook{env/multicols/begin}{\setcounter{Nbcolonnes}{2}}%
-\AddToHook{env/multicols/after}{\setcounter{Nbcolonnes}{4}}%
+%\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}{%
@@ -4468,4 +6119,567 @@
}%
\fi%
\end{align*}
-}{}% \ No newline at end of file
+}{}%
+
+\def\RetiensEchelle{1cm}
+\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}{%
+ \ProvidesPackage{ProfMaquette}[Mode CAN (CP)]%
+ \RequirePackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{4 on 2, book format}[a4paper,landscape]
+ }
+\fi
+
+\if@Revision
+ \AddToHook{env/document/before}{%
+ \ProvidesPackage{ProfMaquette}[Mode Revision (CP)]%
+ \setcounter{Nbcolonnes}{2}%
+ \def\RetiensEchelle{0.5cm}
+ \RequirePackage{pgfmorepages}
+ \pgfmorepagesloadextralayouts
+ \pgfpagesuselayout{4 on 2, book format}[a4paper]
+ }
+\fi
+
+\if@Personnel
+ \input{PfMPerso.cfg}
+\fi
+\makeatother
+
+\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
+
+\newlist{Test}{enumerate}{3}
+
+\def\PfMPar{\par}
+
+\NewDocumentCommand\litem{}{}
+
+\let\olditem\item% save the standard definition of \item in a macro, \olditem
+
+\setlist[Test,1]{%
+ leftmargin=*,
+ label=\arabic*.,
+ before={%
+ \setcounter{PfMProfondeur}{1}%
+ \setcounter{PfMNbLignesFinitem}{0}
+ \firstlegaltrue% set the toggle for first item in the list to true
+ \def\Primeitem{\iffirstlegal\olditem\stepcounter{PfMNbLignesFinitem}%
+ \firstlegalfalse
+ \else
+ \ifnum\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]>1\relax\PfMPar\Lignespointilles{\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]}\else\ifnum\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]=1\relax\PfMPar\pointilles\fi\fi%
+ \olditem\stepcounter{PfMNbLignesFinitem}%
+ \fi
+ }% new, temporary defition of \item
+ \let\litem\Primeitem
+ \let\item\litem
+ },
+ after={%
+ \ifnum\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]>0\relax\PfMPar\Lignespointilles{\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]}\else\ifnum\PfMListeDesAjoutsdeLignes[\thePfMNbLignesFinitem]=1\relax\PfMPar\pointilles\fi\fi%
+ % fill for final item in list
+ \let\litem\olditem% restore standard definition of \item
+ \let\item\olditem
+ \setcounter{PfMProfondeur}{0}%
+ }%
+}%
+
+\setlist[Test,2]{%
+ leftmargin=*,
+ label=(\alph*),
+ before={%
+ \setcounter{PfMProfondeur}{2}%
+ \setcounter{PfMNbLignesFinitemi}{0}
+ \firstlegaltrue%
+ \def\Seconditem{\iffirstlegal\olditem\stepcounter{PfMNbLignesFinitemi}\firstlegalfalse\else%
+ \ifnum\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]>1\relax\PfMPar\Lignespointilles{\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]}\else\ifnum\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]=1\relax\PfMPar\pointilles\fi
+ \fi%
+ \olditem\stepcounter{PfMNbLignesFinitemi}
+ \fi
+ }% new, temporary defition of \item
+ \let\litem\Seconditem
+ \let\item\litem
+ },
+ after={%
+ \ifnum\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]>1\relax\PfMPar\Lignespointilles{\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]}\else\ifnum\PfMListeDesAjoutsdeLignesi[\thePfMNbLignesFinitemi]=1\relax\PfMPar\pointilles\fi
+ \fi%
+% % fill for final item in list
+ \let\litem\Primeitem%
+ \let\item\litem
+ \setcounter{PfMProfondeur}{1}%
+ }%
+}
+
+\newcounter{PfMNbLignesFinitem}
+\newcounter{PfMNbLignesFinitemi}
+\newcounter{PfMProfondeur}
+\setcounter{PfMProfondeur}{0}%
+
+\NewDocumentEnvironment{autoenumerate}{O{}m +b}{%
+ \setsepchar{,}\ignoreemptyitems%
+ \ifnum\thePfMProfondeur=0\relax%
+ \readlist*\PfMListeDesAjoutsdeLignes{#2}%
+ \else%
+ \readlist*\PfMListeDesAjoutsdeLignesi{#2}%
+ \fi%
+ \begin{Test}[#1]%
+ #3
+ \end{Test}%
+}{}%
+}%
+
+%%%
+% 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/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/prtec/prtec.cls b/Master/texmf-dist/tex/latex/prtec/prtec.cls
index 9bd3af2237a..9bd46e5ba1c 100644
--- a/Master/texmf-dist/tex/latex/prtec/prtec.cls
+++ b/Master/texmf-dist/tex/latex/prtec/prtec.cls
@@ -1,12 +1,14 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% This file provides the prtec class for formatting conference papers according to
-%% the Pacific Rim Thermal Engineering Conference (PRTEC) requirements as of April 2019.
+%% the Pacific Rim Thermal Engineering Conference (PRTEC) requirements as of July 2024.
%%
%% The prtec.cls file should be used with the files prtec.bst (for citations) and prtec-template.tex.
%%
%%
-%% This file is version 1.06 dated 2019/08/20.
+%% This file is version and date:
+ \def\versionno{1.07}
+ \def\versiondate{2024/07/07\space}
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -34,7 +36,7 @@
%%
%% LICENSE:
%%
-%% Copyright (c) 2019 John H. Lienhard
+%% Copyright (c) 2024 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,
@@ -54,33 +56,14 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{prtec}[2019/08/20 PRTEC paper format]
+\ProvidesClass{prtec}[\versiondate\ PRTEC paper format]
-\LoadClass[twoside,11pt]{article}
-% Two-sided layout not used in PRTEC's specs, but is included anyway.
+\LoadClass[11pt]{article}
%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{ifthen}
-\newboolean{DefaultSups}
-\setboolean{DefaultSups}{true}
-
-\RequirePackage{kvoptions}
-\RequirePackage{kvsetkeys}
-\SetupKeyvalOptions{
- family=prtec,
- prefix=prtec@,
- setkeys=\kvsetkeys,
-}
-
-%%% set key nodefaultsups to obtain newtx superiors font for footnotes.
-\define@key{prtec}{nodefaultsups}[false]{%
- \setboolean{DefaultSups}{#1}
-}
-
-\ProcessKeyvalOptions*
-
%% option to omit PRTEC footer and header
\DeclareOption{nofoot}{%
@@ -96,13 +79,10 @@
%% Access many options from newtxmath
%% See newtxmath documentation for details
-\DeclareOption{upint,smallerops,varvw,varg,slantedGreek,frenchmath,varbb,cmbraces}{\PassOptionsToPackage{}{newtxmath}}
+\DeclareOption{upint,smallerops,varvw,varg,slantedGreek,frenchmath,varbb,cmbraces,subscriptcorrection}{\PassOptionsToPackage{}{newtxmath}}
%% Option for slightly larger small capitals font
-\DeclareOption{largesc}{\PassOptionsToPackage{}{newtxtext}}
-
-%% Option not to use latex default superscripts, instead using the newtxtext superiors font [nodefaultsups]
-\ifthenelse{\boolean{DefaultSups}}{\PassOptionsToPackage{defaultsups}{newtxtext}}{\relax}
+\DeclareOption{largesc}{\PassOptionsToPackage{largesc=true}{newtxtext}}
%% Suppress warnings about any omitted keys as unused global options
\DeclareOption*{}
@@ -112,8 +92,8 @@
%%%%%%%%%%%%% end options %%%%%%%%%%%%%%%%%%%
-\RequirePackage[a4paper, left=20mm, right=20mm, top=20mm, bottom = 20mm, footskip=10mm, includefoot, headsep=2mm]{geometry}
-% conforms to PRTEC 19 required margins
+\RequirePackage[a4paper, left=20mm, right=20mm, top=20mm, bottom=20mm, headsep=3mm, includefoot ]{geometry}
+% conforms to PRTEC24 required margins
\RequirePackage{parskip}
@@ -122,8 +102,9 @@
\renewcommand*{\bibfont}{\footnotesize}
\RequirePackage{graphicx}
-\RequirePackage[hyperref,fixpdftex,dvipsnames,svgnames,x11names]{xcolor}
-\RequirePackage{xparse}
+\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}
+
+\ifdefined\NewDocumentCommand\else\RequirePackage{xparse}\fi
%%%%%%%%%%%%%%%%%%%%%%%%
@@ -136,14 +117,10 @@
%%%% FONT related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{mathtools} % extends amsmath
-\RequirePackage[utf8]{inputenc}
\RequirePackage[]{newtxtext}
\RequirePackage[]{newtxmath}
% See package documentation
-%% override \textsu if using default superiors
-\ifthenelse{\boolean{DefaultSups}}{\let\textsu\textsuperscript}{\relax}
-
\RequirePackage{bm} % load after all other math packages, to give greater access to bold math
@@ -163,19 +140,19 @@
\RequirePackage{fancyhdr}
\pagestyle{fancy}
-\setlength{\headheight}{22.53pt}
+\setlength{\headheight}{24pt}
\fancyfoot{}
-\fancyfoot[CE,CO]{\thepage}
-\fancyfoot[RO,LE]{}
+\fancyfoot[C,C]{\thepage}
+\fancyfoot[R,L]{}
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancypagestyle{title}{%
\fancyhf{} % clear all header and footer fields
-\fancyfoot[LO,RE]{Copyright~\textcopyright~\the\year\ The Author(s). Distributed by JSME, KSME, and ASTFE with permission.}
-\fancyfoot[LE,RO]{\thepage}
-\fancyhead[LE,RO]{\bfseries\sffamily \HeaderConfName}
+\fancyfoot[L]{Copyright~\textcopyright~\the\year\ The Author(s). Distributed by JSME, KSME, and ASTFE with permission.}
+\fancyfoot[R]{\thepage}
+\fancyhead[R]{\bfseries\sffamily \HeaderConfName}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
@@ -196,10 +173,9 @@
\noindent\makebox[2ex][r]{\@makefnmark}#1}
-
%%%%%%%%% CAPTION RELATED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage[labelfont={sf,bf},hypcap=false]{caption}
+\RequirePackage[labelfont={bf},hypcap=false]{caption}
\RequirePackage[hypcap=false,list=true]{subcaption}
\captionsetup[figure]{name=Fig.,labelfont={bf},textfont={}, labelsep=quad} %textformat=period,
@@ -207,15 +183,12 @@
%%%%%%%%%%%%%%%%%% Section headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% wish to accommodate hyperref
-
-\RequirePackage{textcase} %% Allows uppercase titles and captions without errors from math and citations
\RequirePackage[raggedright,indentafter]{titlesec}
% PRTEC specifies 12 pt headings
-\titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{\thesection.}{0.5em}{\MakeTextUppercase}
-\titleformat{name=\section,numberless}{\bfseries\mathversion{bold}\large\centering}{}{0em}{\MakeTextUppercase}
+\titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{\thesection.}{0.5em}{\MakeUppercase}
+\titleformat{name=\section,numberless}{\bfseries\mathversion{bold}\large\centering}{}{0em}{\MakeUppercase}
\titleformat{\subsection}[runin]{\bfseries}{\thesubsection}{0.5em}{\mathversion{bold}\noindent}[\hspace*{0.5em}]
\titleformat{\subsubsection}[runin]{\itshape}{}{0em}{\noindent\underline}[.\hspace*{0.5em}]
@@ -230,88 +203,81 @@
\setcounter{section}{0}
\pdfbookmark[0]{Appendices}{appendices}
\renewcommand\thesection{\Alph{section}}
- \titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{APPENDIX \thesection:}{0.5em}{\MakeTextUppercase}
+ \titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{APPENDIX \thesection:}{0.5em}{\MakeUppercase}
}
%%%%%%%%%%%%% hyperref %%%%%%%%%%%%%%%%%%%
-\RequirePackage{hyperxmp} %% to fix transfer of metadata to Acrobat pdf
-
-\RequirePackage[%
- unicode, % Unicode encoded PDF strings
- psdextra, % additional support for math in pdf bookmarks
- pdfborder={0 0 0},%
- bookmarks=true, %
- bookmarksnumbered=true,%
- bookmarksopen=true,%
- bookmarksopenlevel=1,%
- colorlinks=true,%%% <=== set false to get black type, but do so in .tex file
+\RequirePackage[psdextra]{hyperref}
+
+\hypersetup{
+ colorlinks=true,
+ pdfborder={0 0 0},
+ bookmarksnumbered=true,
+ bookmarksopen=true,
+ bookmarksopenlevel=1,
+ pdfpagelayout=SinglePage,
+ pdfdisplaydoctitle=true,
+ pdfstartview=Fit,
+ pdfnewwindow=true,
linkcolor=blue, %
- citecolor=blue, % SeaGreen4,%
- urlcolor=blue, % Red3,%
- breaklinks=true,%
- pdftitle={}, % <=== add in .tex file
- pdfkeywords={}, % <=== add in .tex file
- pdfnewwindow=true,%
- pdfpagelayout=TwoPageRight,%
- pdfauthor={}, % <=== add in .tex file
- pdfdisplaydoctitle=true%
- ]{hyperref}
-
+ citecolor=blue, %
+ urlcolor=blue, %
+ filecolor=violet,%
+}
\urlstyle{same} % don't switch to typewriter font
\RequirePackage{doi} % provides hyperlinks for doi in bibliography
\renewcommand{\doitext}{doi:~} % change the default, {doi:}, to this for PRTEC specification
-%% Since \bm is useful in headings, this fix will reduce frequency with which
-%% alternate pdfstrings must be given in section command as \section[pdfstring]{texstring}
+%% Since \bm may be useful in headings, this fix will reduce frequency with which
+%% alternate pdfstrings must be given in revised section command as \section[pdfstring]{texstring}
\pdfstringdefDisableCommands{%
\def\bm#1#{\relax}%
}
-%% Let's also make sure \NoCaseChange in section headings won't break pdf bookmarks
+% Let's disable \( and \) in pdf bookmarks
+\pdfstringdefDisableCommands{%
+ \def\({\relax}%
+ \def\){\relax}%
+}
+
+% Let's also make sure \NoCaseChange in section headings won't break pdf bookmarks
\pdfstringdefDisableCommands{%
\let\NoCaseChange\relax%
}
-%% Let's just remove citations from pdf bookmarks
+% Let's just remove citations from pdf bookmarks
\pdfstringdefDisableCommands{%
\def\cite{\@gobble}%
}
-%% Let's make sure footnotes in section headings don't break pdf bookmarks.
+%% Ensure that tag color does not follow \eqref into bookmarks
+\pdfstringdefDisableCommands{%
+ \def\eqref#1{(\ref{#1})}%
+}
+
+% Let's make sure footnotes in section headings don't break pdf bookmarks.
+% Revised footnote command above is already robust
+
\RequirePackage{etoolbox}
-\robustify{\footnote}
+\robustify\footnote
\pdfstringdefDisableCommands{%
\def\footnote#1{}%
}
-
%% Let's also add \footnote to the \TextUppercase exception list, so that footnote text won't be capitalized
-%% if given in section headings
-\RequirePackage{xpatch}
-\xpatchcmd{\@uclcnotmath}{\@nonchangecase\ref}{\@nonchangecase\ref\@nonchangecase\footnote}{}{}
-
-
-%%% Create an optional argument for unnumbered sections and set pdf bookmark (thru \addcontentsline).
-%%% The optional argument will manually set the pdf bookmark for that section; can be used to avoid hyperref
-%%% errors when macros are in section titles.
-%%% There should not be errors for $$, \cite, \ref, \label, \footnote, or \bm with current construction.
-\let\svsection\section
-\RenewDocumentCommand{\section}{s o m}{%
- \IfBooleanTF {#1}
- {\svsection*{#3}\phantomsection
- {\IfNoValueTF {#2}
- {\addcontentsline{toc}{section}{#3} }
- {\addcontentsline{toc}{section}{#2} }
- }
- }
- {\IfNoValueTF {#2}
- {\svsection{#3}}
- {\svsection[#2]{#3}}
- }
-}
+%% if given in section headings. Ditto for \eqref
+%
+\ifx\AddToNoCaseChangeList\@undefined % see https://github.com/John02139/asmeconf/issues/5
+ \patchcmd{\@uclcnotmath}{\@nonchangecase\ref}{\@nonchangecase\ref\@nonchangecase\footnote}{\typeout{PRTEC patched textcase nonchangecase to include footnote.}}{}
+ \patchcmd{\@uclcnotmath}{\@nonchangecase\ref}{\@nonchangecase\ref\@nonchangecase\eqref}{\typeout{PRTEC patched textcase nonchangecase to include eqref.}}{}
+\else
+ \AddToNoCaseChangeList{\eqref \footnote}
+\fi
+
+%%% There should be no errors for section headings with \(, \), \cite, \ref, \eqref, \label, \footnote, \NoCaseChange, or \bm
%%%%%%%%%%%%% Define special environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -321,7 +287,7 @@
\providecommand{\@keywords}{\relax}
-\DeclareDocumentCommand{\keywords}{m}{%
+\NewDocumentCommand{\keywords}{m}{%
\IfNoValueTF{#1}{%
\relax}{%
\long\def\@keywords{\par\medskip\noindent{\bfseries\small KEYWORDS: }{\small #1}}%
@@ -331,7 +297,7 @@
\DeclareDocumentEnvironment{abstract}{}{%
\section*{Abstract}%
}
- {\@keywords\bigskip%
+ {\@keywords\ignorespacesafterend%
}
@@ -347,7 +313,7 @@
%% If the second argument of \entry is omitted, a bold section heading is produced, e.g. \entry{Greek Letters}
-\DeclareDocumentCommand{\entry}{m g}{%
+\NewDocumentCommand{\entry}{m g}{%
\IfNoValueTF{#2}{%
\item[\itshape#1\hfill]\smallskip
}{%
@@ -388,7 +354,7 @@
\providecommand\@ConfCity{\hbox{ }}
\newcommand{\HeaderConfName}{%
-\parbox{\linewidth}{\raggedleft\bfseries\sffamily%
+\parbox{\linewidth}{\raggedleft\bfseries\sffamily\small%
\@ConfName\linebreak[4]%\par%
\@ConfDate\@CDsep\@ConfCity%
}%
@@ -400,7 +366,7 @@
\newcommand{\PaperNo}{%
\vspace*{-4.7mm}%
\parbox{\linewidth}{\raggedleft\bfseries\sffamily\Large%
-\MakeTextUppercase{\@paperno}%
+\MakeUppercase{\@paperno}%
}%
}
@@ -410,7 +376,7 @@
\newcommand{\PaperTitle}{%
\par\vspace*{6mm}%
\parbox{\linewidth}{\centering{\bfseries\Large%
-\MakeTextUppercase{\@papertitle}%
+\MakeUppercase{\@papertitle}%
\thispagestyle{title}\par} %% <=== \par gets the font leading to stick so that lines space properly
}%
}
@@ -429,13 +395,13 @@
\NewCoffin{\AffiliationsBlock}
\SetHorizontalCoffin\AffiliationsBlock{}
-\DeclareDocumentCommand{\SetAuthors}{m}{%
+\NewDocumentCommand{\SetAuthors}{m}{%
\SetHorizontalCoffin\AuthorBlock{%
\parbox{\linewidth}{\centering\bfseries\ignorespaces#1\ignorespaces}%
}
}
-\DeclareDocumentCommand{\SetAffiliation}{m m}{%
+\NewDocumentCommand{\SetAffiliation}{m m}{%
\SetVerticalCoffin\AffiliationBlock{\textwidth}{%
\centering\footnotemark[#1]#2\ignorespaces%
}
@@ -448,7 +414,7 @@
\newif\ifCA\CAfalse
\newcommand{\CAemail}[1]{\gdef\@CAemail{#1}}
-\DeclareDocumentCommand{\CorrespondingAuthor}{m}{%
+\NewDocumentCommand{\CorrespondingAuthor}{m}{%
\global\CAtrue%
\CAemail{#1}%
$^\ast$%
@@ -457,13 +423,13 @@
%%% flag for joint first authors (two or more)
\newif\ifJA\JAfalse
-\DeclareDocumentCommand{\JointFirstAuthor}{}{%
+\NewDocumentCommand{\JointFirstAuthor}{}{%
\global\JAtrue%
$^\dagger$%
}
%%% Affiliation mark
-\DeclareDocumentCommand{\affil}{m}{%
+\NewDocumentCommand{\affil}{m}{%
{\mdseries\footnotemark[#1]}%
}
@@ -475,11 +441,11 @@
\oldaffil{#1}\futurelet\nextToken\isOthernote}
\newcommand\isOthernote{%
- \ifx\CorrespondingAuthor\nextToken\textsu{\mdseries,}%
+ \ifx\CorrespondingAuthor\nextToken\textsuperscript{\mdseries,}%
\else%
- \ifx\JointFirstAuthor\nextToken\textsu{\mdseries,}%
+ \ifx\JointFirstAuthor\nextToken\textsuperscript{\mdseries,}%
\else
- \ifx\affil\nextToken\textsu{\mdseries,}%
+ \ifx\affil\nextToken\textsuperscript{\mdseries,}%
\fi%
\fi%
\fi%
@@ -494,7 +460,7 @@
\renewcommand\JointFirstAuthor{%
\oldJointFirstAuthor\futurelet\nextToken\isOthernote}
-\DeclareDocumentCommand{\SetAuthorBlock}{}{%
+\NewDocumentCommand{\SetAuthorBlock}{}{%
\let\savethefootnote\thefootnote
\JoinCoffins\AuthorBlock[hc,b]\AffiliationsBlock[hc,t](0pt,-\baselineskip)
\centerline{\TypesetCoffin\AuthorBlock}
@@ -511,7 +477,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Make the title section
-\DeclareDocumentCommand{\MakeTitlePage}{}{%
+\NewDocumentCommand{\MakeTitlePage}{}{%
\PaperNo
\PaperTitle
\vspace*{2\baselineskip}
diff --git a/Master/texmf-dist/tex/latex/pst-coil/pst-coil.sty b/Master/texmf-dist/tex/latex/pst-coil/pst-coil.sty
index d5b0311532b..1def1526c09 100644
--- a/Master/texmf-dist/tex/latex/pst-coil/pst-coil.sty
+++ b/Master/texmf-dist/tex/latex/pst-coil/pst-coil.sty
@@ -1,4 +1,4 @@
-%% $Id: pst-coil.sty 539 2011-07-12 08:22:33Z herbert $
+%% $Id: pst-coil.sty 930 2024-08-13 18:19:44Z herbert $
\RequirePackage{pstricks}
\ProvidesPackage{pst-coil}[2010/02/01 package wrapper for
pst-coil.tex (hv)]
diff --git a/Master/texmf-dist/tex/latex/pst-diffraction/pst-diffraction.sty b/Master/texmf-dist/tex/latex/pst-diffraction/pst-diffraction.sty
index ab4962f6bce..35e81216447 100644
--- a/Master/texmf-dist/tex/latex/pst-diffraction/pst-diffraction.sty
+++ b/Master/texmf-dist/tex/latex/pst-diffraction/pst-diffraction.sty
@@ -1,7 +1,7 @@
\RequirePackage{pstricks}
\RequirePackage{pst-3dplot}
\RequirePackage{pst-xkey}
-\ProvidesPackage{pst-diffraction}[2009/09/04 package wrapper for
+\ProvidesPackage{pst-diffraction}[2024/06/29 package wrapper for
pst-diffraction.tex (hv)]
\input{pst-diffraction.tex}
\ProvidesFile{pst-diffraction.tex}
diff --git a/Master/texmf-dist/tex/latex/pst-node/pst-node.sty b/Master/texmf-dist/tex/latex/pst-node/pst-node.sty
index 43edb5aa2b0..4fe6a63aa2c 100644
--- a/Master/texmf-dist/tex/latex/pst-node/pst-node.sty
+++ b/Master/texmf-dist/tex/latex/pst-node/pst-node.sty
@@ -1,10 +1,10 @@
-% $Id: pst-node.sty 438 2022-01-31 17:45:26Z herbert $
+% $Id: pst-node.sty 919 2024-07-10 18:31:27Z herbert $
%%
%% This is file `pst-node.sty'.
%%
%% IMPORTANT NOTICE:
%%
-%% pst-node.sty Copyright (C) 2004-2017 Herbert Voss <voss@perce.de>
+%% pst-node.sty Copyright (C) 2004-2024 Herbert Voss <voss@perce.de>
%% Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
%%
%% This package may be distributed under the terms of the LaTeX Project
@@ -14,7 +14,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pst-node}
- [2012/09/18 v1.01 LaTeX wrapper for `pst-node' (HV)]
+ [2024/07/10 v1.02 LaTeX wrapper for `pst-node' (HV)]
%
\newif\ifpst@OldVersion\pst@OldVersionfalse
\DeclareOption{97}{\pst@OldVersiontrue}
@@ -32,13 +32,14 @@
\@addtofilelist{pst-node97.pro}}{}%
\else
\RequirePackage{pstricks}
-\ProvidesPackage{pst-node}[2010/04/22 package wrapper for pst-node.tex]
+\ProvidesPackage{pst-node}[2024/07/10 package wrapper for pst-node.tex]
\input{pst-node.tex}
\ProvidesFile{pst-node.tex}
[\filedate\space \fileversion\space `pst-node' (tvz,hv)]
\IfFileExists{pst-node.pro}{%
\ProvidesFile{pst-node.pro}
- [2011/09/18 v. 1.14, PostScript prologue file (hv)]
+ [2024/07/10 v. 1.15a, PostScript prologue file (hv)]
\@addtofilelist{pst-node.pro}}{}%
\fi
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/quizztex/quizztex.sty b/Master/texmf-dist/tex/latex/quizztex/quizztex.sty
index ee18c46d0d9..fc199309aeb 100644
--- a/Master/texmf-dist/tex/latex/quizztex/quizztex.sty
+++ b/Master/texmf-dist/tex/latex/quizztex/quizztex.sty
@@ -4,7 +4,9 @@
% : 'Tout le monde veut prendre sa place' is a Tradematk from Air Productions.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{quizztex}[2023/11/05 0.1.2 Construire des quizz 'comme dans les jeux' ]
+\ProvidesPackage{quizztex}[2024/09/10 0.1.4 Construire des quizz 'comme dans les jeux' ]
+%0.1.4 Macro pour modifier les paramètres par défaut des clés
+%0.1.3 Annulation du chargement de tikz.babel
%0.1.2 Passage \tikzstyle vers \tikzset (merci à Sam C.)
%0.1.1 Amélioration de la gestion des réponses dans WWTBAM + Position des Jokers (cc P. Bideault ;-))
%0.1.0 Version initiale
@@ -18,7 +20,8 @@
\RequirePackage{calc}
\RequirePackage{varwidth}
%------Librairies
-\usetikzlibrary{calc,positioning,shapes.geometric,babel,fadings}
+\usetikzlibrary{calc,positioning,shapes.geometric,fadings}
+%\usetikzlibrary{babel}
%------Longueurs globales
\newlength{\HauteurQuest}
@@ -120,6 +123,8 @@
PositionJokers=centre
}
+\newcommand\SetDefautMillions[1]{\setKVdefault[wwtbam]{#1}}
+
\NewDocumentCommand\LettreChoixMillions{ m }{%
\textcolor{\CouleurLettreWWTBAM}{\large\sffamily\bfseries{\vphantom{Q}#1}\,:}%
}
@@ -565,6 +570,8 @@
EchellePoints=1
}
+\newcommand\SetDefautPlace[1]{\setKVdefault[TLMVPSP]{#1}}
+
\NewDocumentCommand\QuizzPrendrePlace{ O{} m m m m m }{%clés + questions + 4 réponses
\useKVdefault[TLMVPSP]%
\setKV[TLMVPSP]{#1}%
diff --git a/Master/texmf-dist/tex/latex/quran/quran-transde.def b/Master/texmf-dist/tex/latex/quran/quran-transde.def
index ab355f920a2..b243a37ea86 100644
--- a/Master/texmf-dist/tex/latex/quran/quran-transde.def
+++ b/Master/texmf-dist/tex/latex/quran/quran-transde.def
@@ -1,6 +1,6 @@
%% This is file `quran-transde.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\let\qt@doqt@orig\qt@doqt
\let\ToggleBasmalah@orig\ToggleBasmalah
diff --git a/Master/texmf-dist/tex/latex/quran/quran-transen.def b/Master/texmf-dist/tex/latex/quran/quran-transen.def
index 7cdc00da00b..bc6ef6534d5 100644
--- a/Master/texmf-dist/tex/latex/quran/quran-transen.def
+++ b/Master/texmf-dist/tex/latex/quran/quran-transen.def
@@ -1,6 +1,6 @@
%% This is file `quran-transen.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\let\qt@doqt@orig\qt@doqt
\let\ToggleBasmalah@orig\ToggleBasmalah
diff --git a/Master/texmf-dist/tex/latex/quran/quran-transfa.def b/Master/texmf-dist/tex/latex/quran/quran-transfa.def
index 3fb57246611..3a0b0e2f44e 100644
--- a/Master/texmf-dist/tex/latex/quran/quran-transfa.def
+++ b/Master/texmf-dist/tex/latex/quran/quran-transfa.def
@@ -1,6 +1,6 @@
%% This is file `quran-transfa.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\let\qt@doqt@orig\qt@doqt%
\let\ToggleBasmalah@orig\ToggleBasmalah%
diff --git a/Master/texmf-dist/tex/latex/quran/quran-transfr.def b/Master/texmf-dist/tex/latex/quran/quran-transfr.def
index 15f36dc79e3..e4de0642941 100644
--- a/Master/texmf-dist/tex/latex/quran/quran-transfr.def
+++ b/Master/texmf-dist/tex/latex/quran/quran-transfr.def
@@ -1,6 +1,6 @@
%% This is file `quran-transfr.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\let\qt@doqt@orig\qt@doqt%
\let\ToggleBasmalah@orig\ToggleBasmalah%
diff --git a/Master/texmf-dist/tex/latex/quran/quran-translt.def b/Master/texmf-dist/tex/latex/quran/quran-translt.def
index 4517366824a..e4e1403d9fc 100644
--- a/Master/texmf-dist/tex/latex/quran/quran-translt.def
+++ b/Master/texmf-dist/tex/latex/quran/quran-translt.def
@@ -1,6 +1,6 @@
%% This is file `quran-translt.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\bidi@newrobustcmd\q@b[1]{\textbf{#1}}%
\bidi@newrobustcmd\q@i[1]{\textit{#1}}%
diff --git a/Master/texmf-dist/tex/latex/quran/quran.sty b/Master/texmf-dist/tex/latex/quran/quran.sty
index bbd4b9fec8a..f63cd80b3cb 100644
--- a/Master/texmf-dist/tex/latex/quran/quran.sty
+++ b/Master/texmf-dist/tex/latex/quran/quran.sty
@@ -1,6 +1,6 @@
%% This is file `quran.sty',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,11 +17,11 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\NeedsTeXFormat{LaTeX2e}
-\def\qurandate{2023/08/01}
-\def\quranversion{2.2}
+\def\qurandate{2024/09/07}
+\def\quranversion{2.3}
\ProvidesPackage{quran}[\qurandate\space v\quranversion^^JAn easy way to typeset the whole or any parts of the holy Quran]
\RequirePackage{ifxetex}
\RequirePackage{biditools}
diff --git a/Master/texmf-dist/tex/latex/quran/qurantext-de.translation.def b/Master/texmf-dist/tex/latex/quran/qurantext-de.translation.def
index ba64f29d5dd..9e2b2029227 100644
--- a/Master/texmf-dist/tex/latex/quran/qurantext-de.translation.def
+++ b/Master/texmf-dist/tex/latex/quran/qurantext-de.translation.def
@@ -1,6 +1,6 @@
%% This is file `qurantext-de.translation.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\qt@newcmd\qurantrans@de@i{Im Namen Allahs, des Allerbarmers, des Barmherzigen!\qt@no{(1)}}
\qt@newcmd\qurantrans@de@ii{Alles Lob gebührt Allah, dem Herrn der Welten\qt@no{(2)}}
diff --git a/Master/texmf-dist/tex/latex/quran/qurantext-en.translation.def b/Master/texmf-dist/tex/latex/quran/qurantext-en.translation.def
index b75d7b21eae..bdb5965e6fd 100644
--- a/Master/texmf-dist/tex/latex/quran/qurantext-en.translation.def
+++ b/Master/texmf-dist/tex/latex/quran/qurantext-en.translation.def
@@ -1,6 +1,6 @@
%% This is file `qurantext-en.translation.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\qt@newcmd\qurantrans@en@i{In the name of Allah, most benevolent, ever-merciful.\qt@no{(1)}}
\qt@newcmd\qurantrans@en@ii{ALL PRAISE BE to Allah, Lord of all the worlds,\qt@no{(2)}}
diff --git a/Master/texmf-dist/tex/latex/quran/qurantext-en.transliteration.def b/Master/texmf-dist/tex/latex/quran/qurantext-en.transliteration.def
index 33298a42d9d..efeab9a81e1 100644
--- a/Master/texmf-dist/tex/latex/quran/qurantext-en.transliteration.def
+++ b/Master/texmf-dist/tex/latex/quran/qurantext-en.transliteration.def
@@ -1,6 +1,6 @@
%% This is file `qurantext-de.transliteration.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\qt@newcmd\qurantrans@lt@i{Bismi All\q@u{a}hi a\q@b{l}rra\q@u{h}m\q@u{a}ni a\q@b{l}rra\q@u{h}eem\q@b{i}\qt@no{(1)}}
\qt@newcmd\qurantrans@lt@ii{Al\q@u{h}amdu lill\q@u{a}hi rabbi alAA\q@u{a}lameen\q@b{a}\qt@no{(2)}}
diff --git a/Master/texmf-dist/tex/latex/quran/qurantext-fa.translation.def b/Master/texmf-dist/tex/latex/quran/qurantext-fa.translation.def
index 4fd97196e7f..beaee873b88 100644
--- a/Master/texmf-dist/tex/latex/quran/qurantext-fa.translation.def
+++ b/Master/texmf-dist/tex/latex/quran/qurantext-fa.translation.def
@@ -1,6 +1,6 @@
%% This is file `qurantext-fa.translation.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\qt@newcmd\qurantrans@fa@i{به نام خداوند رحمتگر مهربان\qt@no{(1)}}
\qt@newcmd\qurantrans@fa@ii{ستايش خدايى را كه پروردگار جهانيان،\qt@no{(2)}}
diff --git a/Master/texmf-dist/tex/latex/quran/qurantext-fr.translation.def b/Master/texmf-dist/tex/latex/quran/qurantext-fr.translation.def
index b214969da28..d5b63cef6fd 100644
--- a/Master/texmf-dist/tex/latex/quran/qurantext-fr.translation.def
+++ b/Master/texmf-dist/tex/latex/quran/qurantext-fr.translation.def
@@ -1,6 +1,6 @@
%% This is file `qurantext-fr.translation.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\qt@newcmd\qurantrans@fr@i{Au nom d'Allah, le Tout Miséricordieux, le Très Miséricordieux.\qt@no{(1)}}
\qt@newcmd\qurantrans@fr@ii{Louange à Allah, Seigneur de l'univers.\qt@no{(2)}}
diff --git a/Master/texmf-dist/tex/latex/quran/qurantext-simple.def b/Master/texmf-dist/tex/latex/quran/qurantext-simple.def
index 6df9b7a3a41..71f1109b6ea 100644
--- a/Master/texmf-dist/tex/latex/quran/qurantext-simple.def
+++ b/Master/texmf-dist/tex/latex/quran/qurantext-simple.def
@@ -1,6 +1,6 @@
%% This is file `qurantext-simple.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\qt@newcmd\qurantext@i{بِسمِ اللَّهِ الرَّحمـٰنِ الرَّحيمِ\qt@no{﴿١﴾}}
\qt@newcmd\qurantext@ii{الحَمدُ لِلَّهِ رَبِّ العالَمينَ\qt@no{﴿٢﴾}}
diff --git a/Master/texmf-dist/tex/latex/quran/qurantext-uthmani-min.def b/Master/texmf-dist/tex/latex/quran/qurantext-uthmani-min.def
index 2d35cc582f7..0c3e6ea1861 100644
--- a/Master/texmf-dist/tex/latex/quran/qurantext-uthmani-min.def
+++ b/Master/texmf-dist/tex/latex/quran/qurantext-uthmani-min.def
@@ -1,6 +1,6 @@
%% This is file `qurantext-uthmani-min.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\qt@newcmd\qurantext@i{بِسمِ اللَّهِ الرَّحمـٰنِ الرَّحيمِ\qt@no{﴿١﴾}}
\qt@newcmd\qurantext@ii{الحَمدُ لِلَّهِ رَبِّ العـٰلَمينَ\qt@no{﴿٢﴾}}
diff --git a/Master/texmf-dist/tex/latex/quran/qurantext-uthmani.def b/Master/texmf-dist/tex/latex/quran/qurantext-uthmani.def
index 387ce7f3643..e5bc607cd38 100644
--- a/Master/texmf-dist/tex/latex/quran/qurantext-uthmani.def
+++ b/Master/texmf-dist/tex/latex/quran/qurantext-uthmani.def
@@ -1,6 +1,6 @@
%% This is file `qurantext-uthmani.def',
%%
-%% Copyright © 2015-2023
+%% Copyright © 2015-2024
%% Seiied-Mohammad-Javad Razavian <javadr@gmail.com>
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
%%
-%% to one who has devoted his life to Quran
+%% To one who has devoted his life to Quran
%%
\qt@newcmd\qurantext@i{بِسْمِ ٱللَّهِ ٱلرَّحْمَـٰنِ ٱلرَّحِيمِ\qt@no{﴿١﴾}}
\qt@newcmd\qurantext@ii{ٱلْحَمْدُ لِلَّهِ رَبِّ ٱلْعَـٰلَمِينَ\qt@no{﴿٢﴾}}
diff --git a/Master/texmf-dist/tex/latex/randexam/randexam.cls b/Master/texmf-dist/tex/latex/randexam/randexam.cls
index ec5d1c43c27..dacc079cb0a 100644
--- a/Master/texmf-dist/tex/latex/randexam/randexam.cls
+++ b/Master/texmf-dist/tex/latex/randexam/randexam.cls
@@ -6,7 +6,7 @@
% ----------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{randexam}[2024-02-18 v2024E Make an exam paper and its randomized variants]
+\ProvidesClass{randexam}[2024-07-09 v2024F Make an exam paper and its randomized variants]
%% Old LaTeX release could not recognize date format like 2022-11-01
%\@ifl@t@r\fmtversion{2022-11-01}{}{
@@ -786,7 +786,8 @@
\UseExamTemplate{examdata}{default}
}
-\preto{\@enddocumenthook}{\printquestions\rdxm@stop@random}
+%% this equals to \AddToHook{enddocument}[randexam]{...}
+\AtEndDocument{\printquestions\rdxm@stop@random}
\newcommand\ignorepars{\@ifnextchar\par{\expandafter\ignorepars\@gobble}{}}
@@ -1228,6 +1229,11 @@
\mbox{}\nobreak\hfill$\cdots\cdots$\solutionpointstext{#1}
\par\noindent\ignorespaces
}
+
+%% \eqno would cause extra space after a $$...$$ equation
+%% this bug was fixed in latex release 2023-06-01
+%% see https://github.com/latex3/latex2e/issues/1059
+%% \tag is used in a \[...\] equation hence no problem with it
\newcommand{\pointseqno}[1]{\eqno{\cdots\cdots\text{\solutionpointstext{#1}}}}
\newcommand{\pointstag}[1]{\tag*{$\cdots\cdots$\solutionpointstext{#1}}}
@@ -1374,6 +1380,9 @@
\RequirePackage{extarrows}
\newcommand{\e}{\mathrm{e}}
\newcommand{\R}{\mathbb{R}}
+ \newcommand{\jacobi}[2]{{\left(\frac{##1}{##2}\right)}}
+ \newcommand{\ii}{\mathrm{i}}
+ \newcommand{\Zi}{\mathbb{Z}[\ii]}
\DeclareMathOperator{\arccot}{arccot}
\DeclareMathOperator{\Corr}{\rho}
\DeclareMathOperator{\Cov}{Cov}
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..28fdb560e17
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/randintlist/randintlist.sty
@@ -0,0 +1,247 @@
+% 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{randintlist}[2024/10/24 0.1.2 Create a list of random numbers with or without multiple values]
+
+%------History
+% 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 }{%
+ \IfEq{#1}{/}%
+ {%
+ \setsepchar[.]{#1}%
+ }%
+ {%
+ \setsepchar{#1}%
+ }%
+ \readlist*\TMPLISTRANDINT{#2}%
+ \TMPLISTRANDINT[#3]%
+}
+
+%-----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 }{%
+ \IfEq{#1}{/}%
+ {%
+ \setsepchar[.]{#1}%
+ }%
+ {%
+ \setsepchar{#1}%
+ }%
+ \readlist*\TMPLISTRANDINT{#2}%
+ \TMPLISTRANDINT[#3]%
+}
+
+\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..e8615e966a5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/rebuttal/rebuttal.sty
@@ -0,0 +1,474 @@
+%%
+%% 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-01 v0.1.0 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
+ % Main content
+ #2%
+ \endgroup
+ \StrLeft{#1}{1}[\rebuttal@id]%
+ \ifx\tikzexternaldisable\@undefined\else
+ \tikzexternaldisable
+ \fi
+ % Shrink to text
+ \settowidth\rebuttal@textwidth{\rebuttal@reference{#1}}%
+ \tikzset{notestyleraw/.append style={text width=\rebuttal@textwidth}}%
+ % Place labels in left margin at the same distance as on the right
+ \setlength\rebuttal@hskip{\marginparwidth}%
+ \addtolength\rebuttal@hskip{-\rebuttal@textwidth}%
+ \let\old@xmpar\@xmpar
+ % Hook into LaTeX kernel command since \if@firstcolumn is not unreliable
+ % because margin notes are floats.
+ \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
+ % Execute user code
+ \pgfkeysvalueof{/rebuttal/execute on begin}%
+ \begingroup
+ \refstepcounter{rebuttal}%
+ \if@twocolumn
+ \onecolumn
+ % Remember the layout
+ \rebuttal@twocolumntrue
+ \else
+ \rebuttal@twocolumnfalse
+ \fi
+ \begingroup
+ \par
+ \addvspace{\bigskipamount}%
+ \ifstrempty{#1}{}{%
+ \ifx\subpdfbookmark\@undefined\else
+ \subpdfbookmark{#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.}%
+ }%
+ % Do not allow to place answers within a comment by undefining the answer
+ % environment
+ \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
+ % Restore the layout
+ \twocolumn
+ \fi
+ \endgroup
+ % Execute user code
+ \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/regulatory/regulatory.sty b/Master/texmf-dist/tex/latex/regulatory/regulatory.sty
index 2e89a19a376..2755a8ac9bd 100644
--- a/Master/texmf-dist/tex/latex/regulatory/regulatory.sty
+++ b/Master/texmf-dist/tex/latex/regulatory/regulatory.sty
@@ -19,9 +19,9 @@
% example1-nl.tex, example2-nl.tex,
% example1-en.tex, example2-en.tex,
% md-example.tex, example.md,
-% fc-dutch.def and regulatory.sty
+% regulatory.sty
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{regulatory}[2024/01/27 0.0.3 Xerdi's Regulatory Package]
+\ProvidesPackage{regulatory}[2024/09/04 0.0.4 Xerdi's Regulatory Package]
\RequirePackage{pgfopts}
\RequirePackage{xifthen}
diff --git a/Master/texmf-dist/tex/latex/reledmac/reledpar.sty b/Master/texmf-dist/tex/latex/reledmac/reledpar.sty
index 91b0c3f8394..96a1d832947 100644
--- a/Master/texmf-dist/tex/latex/reledmac/reledpar.sty
+++ b/Master/texmf-dist/tex/latex/reledmac/reledpar.sty
@@ -28,7 +28,7 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{reledpar}[2024/05/11 v2.25.6a reledmac extension for parallel texts]%
+\ProvidesPackage{reledpar}[2024/07/23 v2.25.7 reledmac extension for parallel texts]%
\RequirePackage{xspace}%
\RequirePackage{xkeyval}
@@ -2244,7 +2244,6 @@
\renewcommand{\thestanzaR}{%
\textbf{\arabic{stanzaR}}%
}
-\newif\ifl@dusedbabel
\patchcmd{\bbl@set@language}%
{\select@language{\languagename}}%
{\edef\languagename{#1}\select@language{\languagename}}%
@@ -2256,11 +2255,9 @@
\gdef\theledlanguageR{}
\AtBeginDocument{%
- \@ifundefined{xpg@main@language}{%
+ \@ifpackageloaded{babel}{%
\@ifundefined{bbl@main@language}{%
- \l@dusedbabelfalse
}{%
- \l@dusedbabeltrue
\let\l@doldselectlanguage\selectlanguage
\let\l@doldbbl@set@language\bbl@set@language
\renewcommand{\selectlanguage}[1]{%
@@ -2276,23 +2273,26 @@
\gdef\theledlanguageL{\bbl@main@language}%
\gdef\theledlanguageR{\bbl@main@language}%
}%
- }
- {%
- \@ifpackagelater{polyglossia}{2022/04/10}{}{\led@err@polyglossiaTooOld}%
- \let\old@otherlanguage\otherlanguage%
- \renewcommand{\otherlanguage}[2][]{%
- \selectlanguage[#1]{#2}%
- \xpg@set@language@only@aux[#1]{#2}%
- \ifledRcol \gdef\theledlanguageR{#2}%
- \else \gdef\theledlanguageL{#2}%
- \fi}%
+ }{}%
+ \@ifpackageloaded{polyglossia}{%
+ \@ifpackagelater{polyglossia}{2024/07/15}{}{\led@err@polyglossiaTooOld}%
\renewcommand{\l@duselanguage}[1]{%
\csuse{no\languagename @numbers}%
- \expandafter\@select@language\expandafter{#1}%
+ \selectlanguage*{#1}%
}%
- \xdef\theledlanguageL{\xpg@main@language}%
- \xdef\theledlanguageR{\xpg@main@language}%
- }%
+ \AddToHook{env/Leftside/begin}{%
+ \AddToHookNext{cmd/polyglossia@language@switched/after}{%
+ \xdef\theledlanguageL{\languagename}%
+ }%
+ }%
+ \AddToHook{env/Rightside/begin}{%
+ \AddToHookNext{cmd/polyglossia@language@switched/after}{%
+ \xdef\theledlanguageR{\languagename}%
+ }%
+ }%
+ \xdef\theledlanguageL{\mainlanguagename}%
+ \xdef\theledlanguageR{\mainlanguagename}%
+ }{}%
}%
\newcount\l@dc@maxchunks
\newcommand{\maxchunks}[1]{\l@dc@maxchunks=#1}
diff --git a/Master/texmf-dist/tex/latex/reptheorem/reptheorem.sty b/Master/texmf-dist/tex/latex/reptheorem/reptheorem.sty
index 2d12f462221..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-03-27 v1.0 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,60 +49,72 @@ 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\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\expandafter%
-\string\gdef\noexpand\csname thmdesc@#2\string\endcsname{#3}%
+\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 m +o }{
+\NewDocumentCommand{\repthm}{ m +o }{
\begingroup
-\setcounter{old@counter}{\value{#1}}
- \def\thetheorem{\ref{#2}}
+\ifcsname thmtype@#1\endcsname%
+\expandafter\let\expandafter\@@thmtype\csname thmtype@#1\endcsname%
+\else%
+\def\@@thmtype{theorem}%
+\fi%
+\setcounter{old@counter}{\value{\@@thmtype}}
+\setcounter{\@@thmtype}{-900}
+\expandafter\def\csname the\@@thmtype\endcsname{\ref{#1}}
\let\@@theoremnotdefined\relax
-\ifcsname thm@#2\endcsname% Check if theorem is even defined
-\expandafter\edef\expandafter\@@thmdesc{\csname thmdesc@#2\endcsname}%
-\expandafter\let\expandafter\@@thm\csname thm@#2\endcsname
-\IfValueTF{\@@thmdesc}{% Check if theorem has name
-\begin{#1}[\@@thmdesc]
+\ifcsname thm@#1\endcsname% Check if theorem is even defined
+\expandafter\let\expandafter\@@thm\csname thm@#1\endcsname
+\ifcsname thmdesc@#1\endcsname % Check if theorem has name
+\begin{\@@thmtype}[\csname thmdesc@#1\endcsname]
\@@thm
-\end{#1}
-}{% No optionals
-\begin{#1}
+\end{\@@thmtype}
+\else % No optionals
+\begin{\@@thmtype}
\@@thm
-\end{#1}
-}
+\end{\@@thmtype}
+\fi
\else
-\IfValueTF{#3}{
-\begin{#1}
-#3
-\end{#1}
+\IfValueTF{#2}{
+\begin{\@@thmtype}
+#2
+\end{\@@thmtype}
}{% No theorem or alt text provided: throw warning
-\begin{#1}
-\end{#1}
+\begin{\@@thmtype}
+\end{\@@thmtype}
\PackageWarning{reptheorem}{%
-Theorem #2 not defined; rebuild your project.
+Theorem #1 not defined; rebuild your project.
If the issue persists, create the theorem using
\begin{makethm} or consider adding alt text to \repthm
using the optional parameter%
}
}
\fi
-\setcounter{#1}{\value{old@counter}}
+\setcounter{\@@thmtype}{\value{old@counter}}
\endgroup
}
-
\endinput
%%
%% End of file `reptheorem.sty'.
diff --git a/Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.sty b/Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.sty
index a7e95078fa9..5a8d27b31c6 100644
--- a/Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.sty
+++ b/Master/texmf-dist/tex/latex/resolsysteme/ResolSysteme.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{ResolSysteme}[2024/06/22 v0.1.7 Quelques commandes pour travailler avec des matrices et des sytemes lineaires]
+\ProvidesPackage{ResolSysteme}[2024/07/04 v0.1.8 Quelques commandes pour travailler avec des matrices et des sytemes lineaires]
+% 0.1.8 Correction de bugs dans certains calculs, amélioration de la documentation
% 0.1.7 Correction de bugs dans certains calculs
% 0.1.6 Correction de bugs dans certains calculs
% 0.1.5 Inverse d'une matrice en 4x4 (même en normal !) + Système 4x4 (en normal !)
diff --git a/Master/texmf-dist/tex/latex/responsive/responsive.sty b/Master/texmf-dist/tex/latex/responsive/responsive.sty
index 65e5061f455..289f04ca8bb 100644
--- a/Master/texmf-dist/tex/latex/responsive/responsive.sty
+++ b/Master/texmf-dist/tex/latex/responsive/responsive.sty
@@ -3,7 +3,7 @@
\RequirePackage{expl3,l3keys2e}
\RequirePackage{kvoptions}
\ProvidesExplPackage{responsive}
-{2023-12-15}{0.1}{Responsive design for LaTeX}
+{2024-07-14}{v0.1a}{Responsive design for LaTeX}
%%%%%%%%%%%%%%%%%%%%%%
% keyval processing %
@@ -168,6 +168,10 @@
\@setfontsize#1{\resp_multiply_note:nnn\resp_font_size{#2}{1}}{\resp_multiply_note:nnn\resp_line_skip{#2}{\l_resp_lineheight_multiplier}}
}
+% This is a dummy definition. It should restore page dimensions using the Geometry package if it is loaded.
+% The correct definition is added in \AtBeginDocument
+\cs_set:Npn\resp_reset_geometry{}
+
% recalculate \textheight and \headheight with the changed font size
% this is necessary to prevent the underfull \vbox messages from the output rutine
\cs_set:Npn\resp_textheight:n {
@@ -182,6 +186,9 @@
\setlength\headheight{\resp_font_size}
\setlength\headsep {1.5\resp_font_size}
\setlength\footskip{\fp_to_dim:n{2*\resp_font_size+1}}
+ \setlength\topmargin{\fp_to_dim:n{(\paperheight-\textheight -\headheight-\headsep-\footskip)/2 - 1in}}
+ \resp_reset_geometry
+ % \addtolength\topmargin{\topskip}
}
% the functionality to fix the textheight should be available as a document command
@@ -355,6 +362,9 @@
% setup font sizes at the begin document, in order to support Geometry etc.
\AtBeginDocument{
+ \@ifpackageloaded{geometry}{
+ \cs_set:Npn\resp_reset_geometry{\Gm@process}
+ }{}
% set the default font size, based on numbers of characters we want to show on a line of text
% \fonttobox[32]\textwidth{\tl_range:Nnn\l_resp_charlist_tl{1}{\l_resp_charlines_int}}%
\bool_if:NTF\l_resp_no_execute {}{
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 3103502bf3c..cc33d61bf2f 100644
--- a/Master/texmf-dist/tex/latex/rpgicons/rpgicons-l3.sty
+++ b/Master/texmf-dist/tex/latex/rpgicons/rpgicons-l3.sty
@@ -10,8 +10,8 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-\ProvidesExplPackage {rpgicons-l3} {2024-05-15} {1.8.3}
- {rpg Icons Package (l3 Variant)}
+\ProvidesExplPackage {rpgicons-l3} {2024-08-08} {1.8.4}
+ {RPG Icons Package (l3 Variant)}
\bool_new:N \l__rpgicons_unicode_mode_bool
\sys_if_engine_luatex:T {
@@ -792,22 +792,22 @@
\draw_path_lineto:n { 0cm , -.425cm }
\draw_path_moveto:n { -.425cm , 0cm }
\draw_path_lineto:n { .425cm , 0cm }
- \draw_path_moveto:n { \draw_point_polar:nnn { 30 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 30 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 60 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 60 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 120 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 120 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 150 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 150 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 210 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 210 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 240 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 240 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 300 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 300 } { .4cm} }
- \draw_path_moveto:n { \draw_point_polar:nnn { 330 } { .325cm } { .225cm } }
- \draw_path_lineto:n { \draw_point_polar:nn { 330 } { .4cm} }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 30 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 30 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 60 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 60 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 120 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 120 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 150 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 150 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 210 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 210 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 240 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 240 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 300 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 300 } }
+ \draw_path_moveto:n { \draw_point_polar:nnn { .325cm } { .225cm } { 330 } }
+ \draw_path_lineto:n { \draw_point_polar:nn { .4cm } { 330 } }
}
\cs_new:Npn \rpgicons_draw_shape_illusion: {
@@ -1546,7 +1546,7 @@
}
\cs_new:Npn \rpgicons_draw_frame_damage: {
- \draw_path_circle:nn { 0cm , 0cm } { .45cm }
+ \draw_path_circle:nn { 0cm , 0cm } { .5cm }
}
% USER COMMANDS
@@ -1910,7 +1910,7 @@
}
\cs_if_exist:NF \spell { \cs_new_eq:NN \spell \RPGIconsSpell }
-\NewDocumentCommand { \RPGIconsSpellschool } { O{positive} m O{} } {
+\NewDocumentCommand { \RPGIconsSpellschool } { O{negative} m O{} } {
\group_begin:
\keys_set_groups:nne { rpgicons / local ~ options } { extra } {#3}
\keys_set:ne { rpgicons / local ~ options } { \clist_use:Nn \l_rpgicons_types_every_spellschool_style_clist { , } }
diff --git a/Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty b/Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty
index 0e0c0371874..dd75a7b4c0b 100644
--- a/Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty
+++ b/Master/texmf-dist/tex/latex/rpgicons/rpgicons-pgf.sty
@@ -11,7 +11,7 @@
% This work has the LPPL maintenance status `maintained'.
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{rpgicons-pgf}[2024-05-15 rpg Icons Package (PGF Variant) (1.8.3)]
+\ProvidesPackage{rpgicons-pgf}[2024-08-08 RPG Icons Package (PGF Variant) (1.8.4)]
% provide pics option
\newif\ifrpgicons@pics\rpgicons@picsfalse
diff --git a/Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty b/Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty
index 8079232a4fb..63a5fa2fc08 100644
--- a/Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty
+++ b/Master/texmf-dist/tex/latex/rpgicons/rpgicons.sty
@@ -10,8 +10,8 @@
%
% This work has the LPPL maintenance status `maintained'.
%
-\ProvidesExplPackage {rpgicons} {2024-05-15} {1.8.3}
- {rpg Icons Package}
+\ProvidesExplPackage {rpgicons} {2024-08-08} {1.8.4}
+ {RPG Icons Package}
\bool_new:N \l__rpgicons_use_legacy_variant_bool
\clist_new:N \l__rpgicons_forwarded_options_clist
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 ce7e04a509a..c33d0c8c31f 100644
--- a/Master/texmf-dist/tex/latex/rub-kunstgeschichte/rub-kunstgeschichte.cls
+++ b/Master/texmf-dist/tex/latex/rub-kunstgeschichte/rub-kunstgeschichte.cls
@@ -30,9 +30,46 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesClass{rub-kunstgeschichte}
- [2024-05-26 v0.1.0 RUB KGI class]
+ [2024-10-30 v0.3.0 RUB Kunstgeschichte class]
+%% Class options
+\DeclareKeys[rubkgi]{
+ biblatex.store = \@rubkgi@biblatexOptions,
+ biblatex.usage = load
+}
+\DeclareKeys[rubkgi]{
+ hyperref.code = \PassOptionsToPackage{#1}{hyperref},
+ hyperref.usage = load
+}
+%% TeX switch to decide wether to load the parskip package
+\newif\if@rubkgi@parskip
+\@rubkgi@parskiptrue
+\DeclareKeys[rubkgi]{
+ parskip.if = @rubkgi@parskip,
+ parskip.usage = load,
+ noparskip.ifnot = @rubkgi@parskip,
+ noparskip.usage = load
+}
+\ProcessKeyOptions[rubkgi]
%% Load base class with 12pt base font size
\LoadClass[12pt]{article}
+%% biblatex options
+\PassOptionsToPackage{
+ backend=biber,
+ singletitle=true,
+ autocite=footnote,
+ autopunct=true
+}{biblatex}
+%% biblatex-arthistory-bonn package
+\PassOptionsToPackage{
+ style=arthistory-bonn,
+ firstcitefull=true,
+ enddot=true,
+ namelinked=true
+}{biblatex}
+%% pass biblatex class options along
+\PassOptionsToPackage{\@rubkgi@biblatexOptions}{biblatex}
+%% load biblatex
+\RequirePackage{biblatex}
%% Set 1.5 times line spacing
\RequirePackage[onehalfspacing]{setspace}
%% Set a4 paper size and margins
@@ -40,6 +77,168 @@
a4paper,
top=2cm,left=2cm,bottom=2cm,right=4cm
]{geometry}
+%% Avoid paragraph indentation
+\if@rubkgi@parskip
+ \RequirePackage{parskip}
+\fi
+%% Hyperref
+\RequirePackage{hyperref}
+\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}%
+}
+\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
%%
%% End of file `rub-kunstgeschichte.cls'.
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..cfb901e2881
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty
@@ -0,0 +1,212 @@
+% Package : scaletextbullet -- Resize the \textbullet without changing its
+% vertical center
+% Copyright : 2024 (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}
+ {2024-11-12}
+ {1.0.1}
+ {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 }
+ }
+
+\tl_new:N \l__scaletextbullet_factor_tl
+\tl_set:Nn \l__scaletextbullet_factor_tl { 0.4 }
+
+% Used to speed up \ScaleTextBullets{2}, \ScaleTextBullets{3}, and
+% \ScaleTextBullets{4}.
+\fp_const:Nn \c__scaletextbullet_ii_fp { 2 ^ -0.5 }
+\fp_const:Nn \c__scaletextbullet_iii_fp { 3 ^ -0.5 }
+\fp_const:Nn \c__scaletextbullet_iv_fp { 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
+
+% 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 - \l__scaletextbullet_factor_tl \box_wd:N #1 }
+ \dim_set:Nn \l__scaletextbullet_center_dim
+ { ( \box_ht:N #1 + \l__scaletextbullet_bottom_dim ) / 2 }
+ \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 - 0.5 \box_ht:N #1 }
+ { \box_use:N #1 }
+ }
+ }
+
+\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:.
+ }
+
+% DOCUMENT COMMANDS
+
+\NewDocumentCommand \SetTextBulletFactor { m }
+ { \__scaletextbullet_set_factor:n {#1} }
+\cs_new_protected:Npn \__scaletextbullet_set_factor:n #1
+ {
+ \fp_set:Nn \l__scaletextbullet_tmp_fp {#1}
+ \fp_compare:nTF { \c_zero_fp < \l__scaletextbullet_tmp_fp <= \c_one_fp }
+ {
+ \tl_set:Ne \l__scaletextbullet_factor_tl
+ { \fp_use:N \l__scaletextbullet_tmp_fp }
+ }
+ {
+ \msg_error:nne { scaletextbullet } { factor-out-of-bounds }
+ { \fp_use:N \l__scaletextbullet_tmp_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_drop: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 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_ii_fp
+ }
+ { 3 }
+ {
+ \fp_set_eq:NN \l__scaletextbullet_tmp_fp
+ \c__scaletextbullet_iii_fp
+ }
+ { 4 }
+ {
+ \fp_set_eq:NN \l__scaletextbullet_tmp_fp
+ \c__scaletextbullet_iv_fp
+ }
+ }
+ {
+ \fp_set:Nn \l__scaletextbullet_tmp_fp
+ { \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_compare:nNnF \l__scaletextbullet_tmp_int = 0
+ {
+ \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_compare:nNnF \l__scaletextbullet_tmp_int = 0
+ {
+ \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_drop:N \l__scaletextbullet_tmp_box
+ }
+ \,
+ \group_begin:
+ \dim_set:Nn \fboxrule { 0.1pt }
+ \dim_zero:N \fboxsep
+ \framebox [ \l__scaletextbullet_factor_tl \width ] { \textbullet }
+ \group_end:
+ } \ No newline at end of file
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/scrhack.sty b/Master/texmf-dist/tex/latex/scrhack/scrhack-2023-07-07.sty
index b0d4b05ed65..9c5eb1b3b73 100644
--- a/Master/texmf-dist/tex/latex/koma-script/scrhack.sty
+++ b/Master/texmf-dist/tex/latex/scrhack/scrhack-2023-07-07.sty
@@ -1,87 +1,55 @@
%%
-%% This is file `scrhack.sty',
-%% generated with the docstrip utility, extended by scrdocstrip.
+%% This is file `scrhack-2023-07-07.sty',
+%% generated with the docstrip utility.
%%
%% 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')
+%% scrhack-2023-07-07.dtx (with options: `package,identify')
+%% scrhack-2023-07-07.dtx (with options: `package,option')
+%% scrhack-2023-07-07.dtx (with options: `package,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 scrhack-2023-07-07.sty.
%%
-%% 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 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
-\providecommand*{\scr@pkgextension}{\@pkgextension}
-\AtBeginDocument{%
- \let\scr@pkgextension\@pkgextension
-}
-%%% 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.)
%%% using: package,identify
\ProvidesPackage{scrhack}[%
- 2023/07/07 v3.41 KOMA-Script
- package (hacking other packages)%
+ 2024-04-17 v3.42
+ legacy version of package scrhack%
]
-%%% 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
+\RequirePackage{scrkbase}[2022-11-11]
+\@ifpackagelater{scrkbase}{2023-07-14}{%
+ \PackageInfo{scrhack}{KOMA-Script >= 3.42 detected.\MessageBreak
+ In this case you should not use this legacy version of\MessageBreak
+ scrhack, but should be able to use the current version\MessageBreak
+ or even replace loading scrhack by loading really\MessageBreak
+ needed third-party patches, e.g., floatbytocbasic.\MessageBreak
+ But you are the boss ..}%
+}{%
+ \@ifpackagelater{scrkbase}{2022-11-11}{%
+ \PackageWarningNoLine{scrhack}{KOMA-Script < 3.42 detected.\MessageBreak
+ In this case the original scrhack of that version\MessageBreak
+ should also be installed and used instead of this\MessageBreak
+ legacy package}%
+ }{%
+ \PackageError{scrhack}{incompatible KOMA-Script < v3.39 detected}{%
+ This error is fatal!\MessageBreak
+ Loading of scrhack will be aborted!}%
+ \expandafter\let\csname ver@scrhack.sty\endcsname\undefined
+ \endinput
+ }%
+}
\KOMA@ifkey{hyperref}{@scrhack@hyperref}%
\KOMAExecuteOptions{hyperref=true}%
\KOMA@ifkey{floatrow}{@scrhack@floatrow}
@@ -101,7 +69,6 @@
\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
@@ -151,7 +118,7 @@
\KOMAExecuteOptions[scrhack.sty]{hyperref=false}%
}{%
\AtEndOfPackage{%
- \KOMA@key[scrhack.sty]{hyperref}{%
+ \KOMA@key[scrhack.sty]{hyperref}[true]{%
\PackageWarning{scrhack}{option `hyperref=#1' ignored}%
\FamilyKeyStateProcessed
}%
@@ -177,11 +144,18 @@
\if@scrhack@float\scr@hack@load\@pkgextension{float}\fi
}
\AfterPackage*{listings}{%
- \KOMA@key[scrhack.sty]{listings}{%
- \PackageWarning{scrhack}{option `listings' ignored}%
+ \@ifpackagelater{lstmisc}{2024/02/15}{%
+ \PackageInfo{scrhack}{listings hack deactivated because of\MessageBreak
+ detection of listings version, that doesn't\MessageBreak
+ need that hack,}%
+ \KOMAExecuteOptions[scrhack.sty]{listings=false}%
+ }{%
+ \if@scrhack@listings\scr@hack@load\@pkgextension{listings}\fi
+ }%
+ \KOMA@key[scrhack.sty]{listings}[true]{%
+ \PackageWarning{scrhack}{option `listings=#1' ignored}%
\FamilyKeyStateProcessed
}%
- \if@scrhack@listings\scr@hack@load\@pkgextension{listings}\fi
}
\AfterPackage*{nomencl}{%
\KOMA@key[scrhack.sty]{nomencl}{%
@@ -211,8 +185,6 @@
\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'.
+%% End of file `scrhack-2023-07-07.sty'.
diff --git a/Master/texmf-dist/tex/latex/scrhack/scrhack.sty b/Master/texmf-dist/tex/latex/scrhack/scrhack.sty
new file mode 100644
index 00000000000..82ab328aaf5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/scrhack/scrhack.sty
@@ -0,0 +1,390 @@
+%%
+%% This is file `scrhack.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scrhack.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 scrhack.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file scrhack.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.)
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+\DeclareRelease{v3.41}{2023-07-07}{scrhack-2023-07-07.sty}
+\DeclareCurrentRelease{}{2023-07-15}
+\ProvidesPackage{scrhack}
+ [2024-09-04 v3.42
+ scrhack emulation package]
+\ifnum 0=\ifcsname IfFormatAtLeastTF\endcsname
+ \IfFormatAtLeastTF{2022-06-01}{1}{0}%
+ \else
+ 0%
+ \fi\relax
+ \PackageError{scrhack}{LaTeX kernel too old}{%
+ The package needs at least LaTeX 2022-06-01.\MessageBreak
+ This error is fatal. Loading will be aborted.%
+ }%
+ \endinput
+\fi
+\ExplSyntaxOn
+\msg_new:nnn { scrhack } { option-too-late }
+ {
+ option~`#1'~after~loading~package~`#2'~ignored.
+ }
+\msg_new:nnn { scrhack } { deprecated-option }
+ {
+ deprecated~option~`#1'~ignored.
+ }
+\DeclareKeys{%
+ float .code = \__scrhack_switch_float:n { #1 },
+ float .default:n = true,
+ float .usage = preamble,
+}
+\bool_new:N \__scrhack_float_bool
+
+\cs_new:Nn \__scrhack_switch_float:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { floatbytocbasic }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { float = true } { floatbytocbasic }
+ }
+ {
+ \bool_if:NF \__scrhack_float_bool
+ {
+ \hook_gput_code:nnn { package/float/after } { scrhack }
+ {
+ \RequirePackage { floatbytocbasic }
+ }
+ \bool_gset_true:N \__scrhack_float_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { floatbytocbasic }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { float=false } { floatbytocbasic }
+ }
+ {
+ \bool_if:NT \__scrhack_float_bool
+ {
+ \hook_gremove_code:nn { package/float/after } { scrhack }
+ }
+ \bool_gset_false:N \@s@_float_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { float }
+ }
+ }
+\SetKeys{float=true}
+\DeclareKeys{%
+ floatrow .code = \__scrhack_switch_floatrow:n { #1 },
+ floatrow .default:n = true,
+ floatrow .usage = preamble,
+}
+\bool_new:N \__scrhack_floatrow_bool
+
+\cs_new:Nn \__scrhack_switch_floatrow:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { floatrowbytocbasic }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { floatrow = true } { floatrowbytocbasic }
+ }
+ {
+ \bool_if:NF \__scrhack_floatrow_bool
+ {
+ \hook_gput_code:nnn { package/floatrow/after }
+ { scrhack }
+ {
+ \RequirePackage { floatrowbytocbasic }
+ }
+ \bool_gset_true:N \__scrhack_floatrow_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { floatrowbytocbasic }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { floatrow=false } { floatrowbytocbasic }
+ }
+ {
+ \bool_if:NT \__scrhack_floatrow_bool
+ {
+ \hook_gremove_code:nn { package/floatrow/after }
+ { scrhack }
+ }
+ \bool_gset_false:N \@s@_floatrow_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { floatrow }
+ }
+ }
+\SetKeys{floatrow=true}
+\DeclareKeys{%
+ hyperref .code = \__scrhack_switch_hyperref:n { #1 },
+ hyperref .default:n = true,
+ hyperref .usage = preamble,
+}
+\cs_new:Nn \__scrhack_switch_hyperref:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \msg_warning:nnn { scrhack } { deprecated-option }
+ { hyperref=#1 }
+ }
+ {false} {
+ \msg_info:nnn { scrhack } { deprecated-option }
+ { hyperref=#1 }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { hyperref }
+ }
+ }
+\DeclareKeys{%
+ listings .code = \__scrhack_switch_listings:n { #1 },
+ listings .default:n = true,
+ listings .usage = preamble,
+}
+\cs_new:Nn \__scrhack_switch_listings:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \msg_warning:nnn { scrhack } { deprecated-option }
+ { listings=#1 }
+ }
+ {false} {
+ \msg_info:nnn { scrhack } { deprecated-option }
+ { listings=#1 }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { listings }
+ }
+ }
+\DeclareKeys{%
+ lscape .code = \__scrhack_switch_lscape:n { #1 },
+ lscape .default:n = true,
+ lscape .usage = preamble,
+}
+\bool_new:N \__scrhack_lscape_bool
+
+\cs_new:Nn \__scrhack_switch_lscape:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { lscapeenhanced }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { lscape = true } { lscapeenhanced }
+ }
+ {
+ \bool_if:NF \__scrhack_lscape_bool
+ {
+ \hook_gput_code:nnn { package/lscape/after }
+ { scrhack }
+ {
+ \RequirePackage { lscapeenhanced }
+ }
+ \bool_gset_true:N \__scrhack_lscape_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { lscapeenhanced }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { lscape=false } { lscapeenhanced }
+ }
+ {
+ \bool_if:NT \__scrhack_lscape_bool
+ {
+ \hook_gremove_code:nn { package/lscape/after }
+ { scrhack }
+ }
+ \bool_gset_false:N \@s@_lscape_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { lscape }
+ }
+ }
+\SetKeys{lscape=true}
+\DeclareKeys{%
+ nomencl .code = \__scrhack_switch_nomencl:n { #1 },
+ nomencl .default:n = true,
+ nomencl .usage = preamble,
+}
+\cs_new:Nn \__scrhack_switch_nomencl:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \msg_warning:nnn { scrhack } { deprecated-option }
+ { nomencl=#1 }
+ }
+ {false} {
+ \msg_info:nnn { scrhack } { deprecated-option }
+ { nomencl=#1 }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { nomencl }
+ }
+ }
+\DeclareKeys{%
+ setspace .code = \__scrhack_switch_setspace:n { #1 },
+ setspace .default:n = true,
+ setspace .usage = preamble,
+}
+\bool_new:N \__scrhack_setspace_bool
+
+\cs_new:Nn \__scrhack_switch_setspace:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { setspaceenhanced }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { setspace = true } { setspaceenhanced }
+ }
+ {
+ \bool_if:NF \__scrhack_setspace_bool
+ {
+ \hook_gput_code:nnn { package/setspace/after } { scrhack }
+ {
+ \exp_last_unbraced:Ne \RequirePackage
+ {
+ [ \use:c { @raw@opt@setspace.sty },
+ byselectfont,
+ keepfontsize ]
+ }
+ { setspaceenhanced }
+ }
+ \bool_gset_true:N \__scrhack_setspace_bool
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { setspaceenhanced }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { setspace=false } { setspaceenhanced }
+ }
+ {
+ \bool_if:NT \__scrhack_setspace_bool
+ {
+ \hook_gremove_code:nn { package/setspace/after } { scrhack }
+ }
+ \bool_gset_false:N \@s@_setspace_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { setspace }
+ }
+ }
+\SetKeys{setspace=true}
+\DeclareKeys{%
+ standardsections .code = \__scrhack_switch_standardsectioning:n { #1 },
+ standardsections .default:n = true,
+ standardsections .usage = preamble,
+}
+\bool_new:N \__scrhack_standardsectioning_bool
+
+\cs_new:Nn \__scrhack_switch_standardsectioning:n
+ {
+ \str_case_e:nnF { \str_foldcase:n { #1 } }
+ {
+ {true} {
+ \@ifpackageloaded { standardsectioning }
+ {
+ \msg_info:nnnn { scrhack } { option-too-late }
+ { standardsectioning = true } { standardsectioning }
+ }
+ {
+ \bool_if:NF \__scrhack_standardsectioning_bool
+ {
+ \str_set:Nx \l_tmpa_str { \cs_meaning:N \normalsize }
+ \str_if_in:NnTF
+ \l_tmpa_str
+ { \@latex@error }
+ {
+ \hook_gput_code:nnn { class/after } { scrhack }
+ {
+ \RequirePackage { standardsectioning }
+ \exp_args:Nnnx \hook_gput_code:nnn
+ { begindocument/before } { scrhack }
+ {
+ \exp_not:N \cs_gset:Npn
+ \exp_after:wN \exp_not:N
+ \cs:w ver@standardsectioning.sty \cs_end:
+ {
+ \cs:w ver@standardsectioning.sty \cs_end:
+ }
+ }
+ \cs_undefine:c { var@standardsectioning.sty }
+ }
+ \bool_gset_true:N \__scrhack_standardsectioning_bool
+ }
+ {
+ \RequirePackage{ standardsectioning }
+ \bool_gset_false:N \__scrhack_standardsectioning_bool
+ }
+ }
+ }
+ }
+ {false} {
+ \@ifpackageloaded { standardsectioning }
+ {
+ \msg_warning:nnnn { scrhack } { option-too-late }
+ { standardsectioning=false } { standardsectioning }
+ }
+ {
+ \bool_if:NT \__scrhack_standardsectioning_bool
+ {
+ \hook_gremove_code:nn { class/after } { scrhack }
+ }
+ \bool_gset_false:N \@s@_standardsectioning_bool
+ }
+ }
+ }
+ {
+ \msg_warning:nnn { keys } { boolean-values-only } { standardsectioning }
+ }
+ }
+\ExplSyntaxOff
+\ProcessKeyOptions\relax
+\endinput
+%%
+%% End of file `scrhack.sty'.
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/se2thesis/se2colors.sty b/Master/texmf-dist/tex/latex/se2thesis/se2colors.sty
index 734018830e3..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-06-07} {4.1.0}
+\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 ca8a00d7848..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-06-07} {4.1.0}
+\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 0398c392fdd..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-06-07} {4.1.0}
+\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 f8335df3138..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-06-07} {4.1.0}
+\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}
@@ -459,7 +458,7 @@
\tl_if_eq:NnTF \l__slcd_thesis_type_tl { phdphil }
{
Dissertation~ zur~ Erlangung~ des~ Doktorgrades\\
- der~ Philosophie~ (Dr.\,phil.)\\
+ der~ Naturphilosophie~ (Dr.\,phil.\,nat.)\\
eingereicht~ an~ der~ Fakultät~ für~ Informatik~ und~ Mathematik\\
der~ Universität~ Passau\\
\rule{\textwidth}{.1pt}\\
@@ -467,7 +466,7 @@
the~ Faculty~ of~ Computer~ Science~ and~ Mathematics\\
of~ the~ University~ of~ Passau\\
in~ partial~ fulfillment~ of~ obtaining\\
- the~ degree~ of~ a~ Doctor~ of~ Philosophy
+ the~ degree~ of~ a~ Doctor~ of~ Natural~ Philosophy
} {
\tl_if_eq:NnT \l__slcd_thesis_type_tl { bachelor }
{ \GetTranslation{Bachelor-thesis} }
@@ -532,7 +531,10 @@
\renewcommand*{\@lowertitleback}{%
\group_begin:
\noindent\textbf{\@author}:\\
- \emph{\@title}\\
+ \group_begin:
+ \let\\\relax
+ \emph{\@title}
+ \group_end:\\
\tl_if_eq:NnT \l__slcd_thesis_type_tl { bachelor }
{ \GetTranslation{Bachelor-thesis},~ }
\tl_if_eq:NnT \l__slcd_thesis_type_tl { master }
diff --git a/Master/texmf-dist/tex/latex/se2thesis/se2translations-english.trsl b/Master/texmf-dist/tex/latex/se2thesis/se2translations-english.trsl
index cfbd9c6c70f..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/06/07]
+\ProvideDictionaryFor{English}{se2translations}[2024/10/16]
\ProvideDictTranslation{abstract}{abstract}
\ProvideDictTranslation{Abstract}{Abstract}
\ProvideDictTranslation{acknowledgement}{acknowledgement}
@@ -57,10 +57,10 @@
\ProvideDictTranslation{External}{External Examiner}
\ProvideDictTranslation{degreeprogramme}{programme}
\ProvideDictTranslation{Degreeprogramme}{Programme}
-\ProvideDictTranslation{Bachelor-thesis}{Bachelor Thesis}
-\ProvideDictTranslation{Bachelor-thesis-proposal}{Bachelor Thesis Proposal}
-\ProvideDictTranslation{Master-thesis}{Master Thesis}
-\ProvideDictTranslation{Master-thesis-proposal}{Master Thesis Proposal}
+\ProvideDictTranslation{Bachelor-thesis}{Bachelor's Thesis}
+\ProvideDictTranslation{Bachelor-thesis-proposal}{Bachelor's Thesis Proposal}
+\ProvideDictTranslation{Master-thesis}{Master's Thesis}
+\ProvideDictTranslation{Master-thesis-proposal}{Master's Thesis Proposal}
\ProvideDictTranslation{PhD-thesis}{PhD Thesis}
\ProvideDictTranslation{PhD-thesis-proposal}{PhD Thesis Proposal}
\ProvideDictTranslation{date}{date}
diff --git a/Master/texmf-dist/tex/latex/se2thesis/se2translations-german.trsl b/Master/texmf-dist/tex/latex/se2thesis/se2translations-german.trsl
index 9654f8f22ff..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/06/07]
+\ProvideDictionaryFor{German}{se2translations}[2024/10/16]
\ProvideDictTranslation{abstract}{Zusammenfassung}
\ProvideDictTranslation{Abstract}{Zusammenfassung}
\ProvideDictTranslation{acknowledgement}{Danksagung}
diff --git a/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty b/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty
index d953d300226..f99b9770c0a 100644
--- a/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty
+++ b/Master/texmf-dist/tex/latex/sepfootnotes/sepfootnotes.sty
@@ -1,4 +1,4 @@
-%% Copyright (C) 2013-2016 Eduardo C. Lourenço de Lima
+%% Copyright (C) 2013-2024 Eduardo C. Lourenço de Lima
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -11,19 +11,23 @@
%% version 2005/12/01 or later.
%%
\NeedsTeXFormat {LaTeX2e} [1996/06/01]
-\ProvidesPackage {sepfootnotes} [2016/07/18 v0.3c Footnotes in separate file]
+\ProvidesPackage {sepfootnotes} [2024/07/05 v0.3d Footnotes in separate file]
\newcommand\sep@packagename{sepfootnotes}
+%{% options
+
\DeclareOption {quiet} {\sep@opt@quiettrue}
\DeclareOption {warn} {\sep@opt@warntrue}
\DeclareOption {error} {\sep@opt@errortrue}
\DeclareOption {global} {\sep@opt@globaltrue}
+\DeclareOption {after} {\sep@opt@aftertrue}
\newif \ifsep@opt@quiet
\newif \ifsep@opt@warn
\newif \ifsep@opt@error
\newif \ifsep@opt@global
+\newif \ifsep@opt@after
\sep@opt@warntrue
@@ -38,10 +42,10 @@
\sep@opt@warnfalse
\fi
+%}%
+%{% public
-% ********************************* Public ************************************
-
-% ==================== shared by footnotes and endnotes =======================
+%{% footnotes and endnotes
\newcommand\sep@new [1]
{\newcounter{#1note}%
@@ -52,7 +56,8 @@
\expandafter\newcommand\csname #1quicknote\endcsname [1] {\sep@namereplace {#1} {sepfootnotes@tmp@quick} {##1}\csname #1note\endcsname{sepfootnotes@tmp@quick}}\relax
}
-% -------------------------------- footnotes ----------------------------------
+%}%
+%{% footnotes
\newcommand\newfootnotes{\@ifstar\sep@newfootnotesfree\sep@newfootnotes}
@@ -73,7 +78,8 @@
\@addtoreset {#2note} {#1}%
\expandafter\renewcommand\csname the#2mark\endcsname {\fnsymbol {#2note}}}
-% -------------------------------- endnotes -----------------------------------
+%}%
+%{% endnotes
\newcommand\newendnotes [1]
{\sep@new {#1}%
@@ -88,8 +94,8 @@
\expandafter\newcommand\csname #1notesize\endcsname {\footnotesize}%
\newenvironment {#1notes} {\csname #1notesize\endcsname\setlength\parskip\footnotesep} {}}
-
-% ------------------------------ commentnotes --------------------------------
+%}%
+%{% commentnotes
\newcommand\newcommentnotes [1]
{\newfootnotes*{#1}\relax
@@ -107,62 +113,114 @@
\@addtoreset {#2note} {#1}\relax
\expandafter\renewcommand\csname the#2mark\endcsname {\fnsymbol {#2note}}}
-% ********************************* Private ***********************************
+%}%
+
+%}%
+%{% private
-% ---------------------------------- files ------------------------------------
+%{% files
\newcommand\sep@filename [1] {\jobname.ent-#1}
\newcommand\sep@openout [1] {\expandafter \newwrite\csname sep@fileout#1\endcsname\immediate\expandafter\openout\csname sep@fileout#1\endcsname=\sep@filename#1\relax}
\newcommand\sep@write [2] {\immediate \write\csname sep@fileout#1\endcsname {#2}}
\newcommand\sep@close [1] {\immediate\expandafter\closeout\csname sep@fileout#1\endcsname\relax}
-% ---------------------------------- table ------------------------------------
+%}%
+%{% names
+
+%{% \sep@nameuse <prefix> <key>
\newcommand\sep@nameuse [2]
{\@ifundefined{sepfootnotes@text@#1@#2}
- {\ifsep@opt@error
- \PackageError {\sep@packagename} {`#2' has not been assigned a content}
- {`#2' has not been assigned a content.\MessageBreak
- Solution: Define `#2'\MessageBreak
- Try: \@backslashchar #1notecontent{#2}{<content>}}\relax
- \fi
- \ifsep@opt@warn
- \PackageWarning {\sep@packagename} {`#2' has not been assigned a content}\relax
- \fi}
+ {\sep@warning@undefined{#1}{#2}}
{\@nameuse{sepfootnotes@text@#1@#2}}}
+%}%
+%{% \sep@namedef <prefix> <key> <content>
+
\newcommand\sep@namedef [3]
-{\@ifundefined{sepfootnotes@text@#1@#2}
+{\ifsep@opt@after\sep@namereplace{#1}{#2}{#3}\else
+ \@ifundefined{sepfootnotes@text@#1@#2}
{\ifsep@opt@global\global\fi\@namedef{sepfootnotes@text@#1@#2}{#3}}
- {\ifsep@opt@error
- \PackageError {\sep@packagename} {`#2' is already in use}
- {`#2' is already in use.\MessageBreak
- Solution: Use another key.\MessageBreak
- Try: \@backslashchar #1notecontent{<key>}{<content>}}\relax
- \fi
- \ifsep@opt@warn
- \PackageWarning {\sep@packagename} {`#2' is already in use}
- \fi}}
+ {\sep@warning@already{#1}{#2}}\fi}
+
+%}%
+%{% \sep@namereplace <prefix> <key> <content>
+
+\newcommand\sep@namereplace [3]
+{%
+ \ifsep@opt@after
+ \global\@namedef{sepfootnotes@text@#1@#2}{#3}%
+ \write\@auxout{\expandafter\unexpanded\expandafter{\global\@namedef {sepfootnotes@text@#1@#2}{#3}}}%
+ \else
+ \ifsep@opt@global\global\fi\@namedef{sepfootnotes@text@#1@#2}{#3}%
+ \fi
+}
+
+%}%
+
+%{% \sep@warning@undefined <prefix> <key>
+
+\newcommand \sep@warning@undefined [2]
+{\ifsep@opt@error
+ \PackageError
+ {\sep@packagename}
+ {`#2' has not been assigned a content}
+ {`#2' has not been assigned a content.\MessageBreak
+ Solution: Define `#2'\MessageBreak
+ Try: \@backslashchar #1notecontent{#2}{<content>}}%
+ \fi
+ \ifsep@opt@warn
+ \PackageWarning
+ {\sep@packagename}
+ {`#2' has not been assigned a content}%
+ \fi
+}
-\newcommand\sep@namereplace [3] {\ifsep@opt@global\global\fi\@namedef{sepfootnotes@text@#1@#2}{#3}}
+%}%
+%{% \sep@warning@already <prefix> <key>
+
+\newcommand \sep@warning@already [2]
+{\ifsep@opt@error
+ \PackageError
+ {\sep@packagename}
+ {`#2' is already in use}
+ {`#2' is already in use.\MessageBreak
+ Solution: Use another key.\MessageBreak
+ Try: \@backslashchar #1notecontent{<key>}{<content>}}%
+ \fi
+ \ifsep@opt@warn
+ \PackageWarning
+ {\sep@packagename}
+ {`#2' is already in use}%
+ \fi
+}
-% ---------------------------------- marks ------------------------------------
+%}%
+
+%}%
+%{% marks
\newcommand\sep@markset [1] {\protected@xdef\@thefnmark{\csname the#1mark\endcsname}}
\newcommand\sep@mark [2] {\stepcounter {#1note}\sep@markset {#1}\@footnotemark}
-% ---------------------- cross-references and counters ------------------------
+%}%
+%{% cross-references and counters
\newcommand\sep@refsetcounter [2] {\setcounter{#1}{#2}\protected@edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}}
\newcommand\sep@refstepcounter [1] {\stepcounter {#1}\protected@edef\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}}
-% ********************************* Default ***********************************
+%}%
+
+%}%
+%{% default
-% ------------------------- footnotes: \sepfootnote ---------------------------
+%% The default \sepfootnote apparatus relies on \footnote
-%% Default: The default \sepfootnote family relies on \footnote
\newfootnotes{sepfoot}
+%}%
+
\endinput
%%
%% End of file `sepfootnotes.sty'.
diff --git a/Master/texmf-dist/tex/latex/setspaceenhanced/setspaceenhanced.sty b/Master/texmf-dist/tex/latex/setspaceenhanced/setspaceenhanced.sty
index ae0b94e9e0e..34bd75ab347 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-05}{1.03}
{%
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
diff --git a/Master/texmf-dist/tex/latex/sidenotes/caesar_book.cls b/Master/texmf-dist/tex/latex/sidenotes/caesar_book.cls
index 685f736aefa..c1f24a16ad3 100644
--- a/Master/texmf-dist/tex/latex/sidenotes/caesar_book.cls
+++ b/Master/texmf-dist/tex/latex/sidenotes/caesar_book.cls
@@ -1,20 +1,13 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{caesar_book.cls}[2020/03/24 v1.00a Caesar book]
-% Load the amsmath and the mhchem package before loading microtype
-\RequirePackage{amsmath}% better math handling
-\RequirePackage[version=3]{mhchem}% chemical formulas
+\ProvidesFile{caesar_book.cls}[2024/09/12 v1.20 Caesar book]
\LoadClassWithOptions{book}% this is derived from the book class
\RequirePackage{sidenotes}% put annotations, tables and figures in the margin
-\captionsetup{font=footnotesize, skip=4pt}
-\RequirePackage[maxfloats=45]{morefloats}% a lot of marginals need more float 'memory'
+\captionsetup{font=footnotesize, skip=4pt} % use values matching the style
+\extrafloats{45}% a lot of marginals need more float 'memory'
\RequirePackage{marginfix}% automatically adjust the side-floats nicely
-\newcommand{\caesar@letterspace}[1]{#1}% allow LuaLaTeX, LaTeX letterspacing
\RequirePackage{microtype}% microtypography
-\@ifpackagelater{microtype}{2011/08/18}% xxx allow LaTeX and earlier microtype
-{\renewcommand{\caesar@letterspace}[1]{\textls{#1}}}%
-{\AtEndDocument{\ClassWarningNoLine{caesar_book}{Need newest microtype for letterspacing.}}}
%
-% Set page layout geometry -- default is science-book format
+% Set page layout geometry - default is science-book format
% this means a (portrait) paper size of 170mm x 240mm
%
\RequirePackage{geometry}
@@ -24,7 +17,9 @@
%
\renewcommand{\normalsize}{\fontsize{10pt}{13pt}\selectfont}%
\renewcommand{\footnotesize}{\fontsize{8pt}{10pt}\selectfont}%
-% fullwidth environment, text across textwidth+marginparsep+marginparwidth
+%
+% fullwidth environment, text across textwidth + marginparsep + marginparwidth
+%
\newlength{\overhang}
\setlength{\overhang}{\marginparwidth}
\addtolength{\overhang}{\marginparsep}
@@ -38,7 +33,9 @@
{\end{adjustwidth*}}%
{\end{adjustwidth}}%
}
+%
% set up the fonts
+%
\RequirePackage{ifluatex}
\ifluatex% in LuaLateX we use fontspec
\RequirePackage{fontspec}%
@@ -47,14 +44,15 @@
\setmainfont[Ligatures=TeX, Numbers=OldStyle]{Tex Gyre Pagella}% free Palatino clone
\setmonofont{Tex Gyre Cursor}% works okay with palatino
\setsansfont{Tex Gyre Heros}% work okay with palatino
- \mhchemoptions{textfontcommand=\addfontfeature{Numbers=Lining}} % use lining numbers for chemical formulas
\else% in LaTeX we load fonts differently
\IfFileExists{mathpazo.sty}{\RequirePackage[osf,sc]{mathpazo}}{}% palatino clone for math
\IfFileExists{helvet.sty}{\RequirePackage[scaled=0.90]{helvet}}{}% helvetica is sans serif font
\IfFileExists{beramono.sty}{\RequirePackage[scaled=0.85]{beramono}}{}% beramono is tt font
\RequirePackage[T1]{fontenc}% finally load fontenc
\fi
-% nice headings and TOC
+%
+% nice headings, TOC, page numbering ...
+%
\RequirePackage{titlesec,titletoc}% load the helper package
\setcounter{secnumdepth}{-1}% no numbering at all
\titleformat{\chapter}[display]{\relax\itshape\huge}{}{0pt}{\huge\rmfamily\itshape}[]% chapter format
@@ -75,7 +73,7 @@
\renewcommand{\headrulewidth}{0pt}% The running heads and feet do not have rules
\renewcommand{\footrulewidth}{0pt}
\fancyhf{}% set up the page numbering
-{\fancyfoot[LE,RO]{\thepage}}
+\fancyfoot[LE,RO]{\thepage}
\fancypagestyle{plain}{%
\fancyhf{}
}
@@ -87,14 +85,13 @@
\@savemarbox\@marbox{\marginparstyle#1}% marginparstyle is a prefix to the marginpar text now
\global\setbox\@currbox\copy\@marbox % the rest of the definition is taken from original LaTeX
\@xympar}
-\renewcommand*{\marginfont}{\marginparstyle}
+\@ifpackageloaded{marginnote}{\renewcommand*{\marginfont}{\marginparstyle}}{} % adjust marginnote font in the same way
% setup itemize and enumerate
\RequirePackage{enumitem}
\setlist[itemize]{leftmargin=*}
-%\renewcommand{\labelitemi}{}
-% compatibility with T-L
%
% titlepage
+%
\RequirePackage{ifthen}
\newcommand{\publisher}[1]{\gdef\caesar@publisher{#1}}
\gdef\caesar@thesis{}
@@ -106,7 +103,7 @@
% first count the number of lines in the title
\begin{fullwidth}
\raggedright%
- \setbox0\vbox{\noindent\fontsize{30}{38}\selectfont\caesar@letterspace{\MakeTextUppercase{\@title}}\par
+ \setbox0\vbox{\noindent\fontsize{30}{38}\selectfont\textls{\MakeTextUppercase{\@title}}\par
\count@\z@
\loop
\unskip\unpenalty\unskip\unpenalty\unskip
@@ -124,12 +121,12 @@
\sffamily%
%\begin{fullwidth}%
\vspace*{0em}% one line extra space
- \noindent\LARGE\caesar@letterspace{\MakeTextUppercase{\@author}}\par
+ \noindent\LARGE\textls{\MakeTextUppercase{\@author}}\par
\vfill%
- \noindent\fontsize{30}{38}\selectfont\textcolor{darkgray}{\caesar@letterspace{\MakeTextUppercase{\@title}}}\par
+ \noindent\fontsize{30}{38}\selectfont\textcolor{darkgray}{\textls{\MakeTextUppercase{\@title}}}\par
\vfill%
\vspace{\caesar@titlespace}%
- \noindent\Large\caesar@letterspace{\MakeTextUppercase{\caesar@publisher}}\par
+ \noindent\Large\textls{\MakeTextUppercase{\caesar@publisher}}\par
%\end{fullwidth}%
}%
\thispagestyle{empty}%
@@ -146,6 +143,9 @@
\section*{\caesar@thesis\@author}
%
}
+%
+% higher level macros go here
+%
\newcommand\newthought[1]{%
\addvspace{1.0\baselineskip plus 0.5ex minus 0.2ex}%
\noindent\textsc{#1}%
diff --git a/Master/texmf-dist/tex/latex/sidenotes/sidenotes.sty b/Master/texmf-dist/tex/latex/sidenotes/sidenotes.sty
index 7b21e85bd06..c517b817c68 100644
--- a/Master/texmf-dist/tex/latex/sidenotes/sidenotes.sty
+++ b/Master/texmf-dist/tex/latex/sidenotes/sidenotes.sty
@@ -13,10 +13,10 @@
%% about the files the work consists of.
%%
\RequirePackage{l3keys2e}%
-\ProvidesExplPackage{sidenotes}{2016/04/21}{1.00}{rich text in the margin for LaTeX}
-\RequirePackage{marginnote} % provides an offset option for the marginals instead of a float
-\RequirePackage{caption} % handles the captions (in the margin)
-\RequirePackage{xparse} % new LaTeX3 syntax to define macros and environments
+\ProvidesExplPackage{sidenotes}{2024/09/12}{1.20}{Rich text in the margin for LaTeX}
+\RequirePackage{marginnote} % Provides an offset option for the marginals instead of a float
+\RequirePackage{caption} % Handles the captions (in the margin)
+\RequirePackage{xparse} % New LaTeX3 syntax to define macros and environments
\RequirePackage[strict]{changepage} % Changepage package for symmetric twoside handling
\ExplSyntaxOn
\keys_define:nn { sidenotes }
@@ -26,7 +26,7 @@
\ProcessKeysOptions { sidenotes }
\newcounter{sidenote} % make a counter
\setcounter{sidenote}{1} % init the counter
-\DeclareExpandableDocumentCommand{\IfNoValueOrEmptyTF}{ m m m }
+\DeclareExpandableDocumentCommand{\IfNoValueOrEmptyTF}{ m +m +m }
{
\IfNoValueTF{#1}
{#2}
@@ -57,7 +57,7 @@
{\@sidenotes@thesidenotemark{,}}
{}
}
-\NewDocumentCommand \@sidenotes@placemarginal { m m }
+\NewDocumentCommand \@sidenotes@placemarginal { +m +m }
{
\IfNoValueOrEmptyTF{#1}
{\marginpar{#2}}
@@ -159,9 +159,11 @@
{
\begin{figure}[#1]
\begin{autoadjustwidth}{}{-\@sidenotes@extrawidth}
+ \begin{minipage}{\linewidth}
\captionsetup{style=widefigure}
}
{
+\end{minipage}
\end{autoadjustwidth}
\end{figure}
}
@@ -170,9 +172,11 @@
{
\begin{table}[#1]
\begin{autoadjustwidth}{}{-\@sidenotes@extrawidth}
+ \begin{minipage}{\linewidth}
\captionsetup{style=widetable}
}
{
+\end{minipage}
\end{autoadjustwidth}
\end{table}
}
diff --git a/Master/texmf-dist/tex/latex/sillypage/sillypage.sty b/Master/texmf-dist/tex/latex/sillypage/sillypage.sty
index 2c304af0505..a78ae795dc8 100644
--- a/Master/texmf-dist/tex/latex/sillypage/sillypage.sty
+++ b/Master/texmf-dist/tex/latex/sillypage/sillypage.sty
@@ -22,8 +22,8 @@
%% and version 1.3c or later is part of all distributions of LaTeX version
%% 2005/12/01 or later.
%%
-\def\sillypageDate{2023-03-04}
-\def\sillypageVersion{1.6}
+\def\sillypageDate{2024-07-23}
+\def\sillypageVersion{1.7}
\ProvidesExplPackage
{sillypage} {\sillypageDate} {\sillypageVersion}
{The silly walk as page numbering style}
@@ -36,19 +36,45 @@
\newcommand*\@silly { \__silly_step:n }
\cs_new:Npn \__silly_step:n #1
{
+ \UseTaggingSocket{__silly/begin}{#1}
+ \SuspendTagging{__silly}
\__silly_step_aux:eN
{ \int_eval:n { \int_mod:nn { #1-1 } { \silly@steps } +1 } }
\c_false_bool
+ \ResumeTagging{__silly}
+ \UseTaggingSocket{__silly/end}
}
\NewDocumentCommand \sillynumeral { m } { \__silly_numeral:n {#1} }
\newcommand*\@sillynumeral { \__silly_numeral:n }
\cs_new:Npn \__silly_numeral:n #1
{
+ \UseTaggingSocket{__silly/begin}{#1}
+ \SuspendTagging{__silly}
\exp_args:Ne \str_map_function:nN
{ \int_to_base:nn {#1} { 12 } } \__silly_numeral_aux:n
+ \ResumeTagging{__silly}
+ \UseTaggingSocket{__silly/end}
}
\cs_new:Npn \__silly_numeral_aux:n #1
{ \__silly_step_aux:eN { "\char_uppercase:N #1+1 } \c_true_bool }
+
+\NewSocket{tagsupport/__silly/begin}{1}
+\NewSocket{tagsupport/__silly/end}{0}
+\NewSocketPlug{tagsupport/__silly/begin}{tagged}
+ {
+ \mode_leave_vertical:
+ \tag_mc_end_push:
+ \tag_struct_begin:n {tag=Span}
+ \tag_mc_begin:n {actualtext=#1}
+ }
+\NewSocketPlug{tagsupport/__silly/end}{tagged}
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ \tag_mc_begin_pop:n{}
+ }
+\AssignSocketPlug{tagsupport/__silly/begin}{tagged}
+\AssignSocketPlug{tagsupport/__silly/end}{tagged}
\cs_new:Npn \__silly_step_aux:nN #1 #2
{
\cs_if_exist_use:cF { texorpdfstring } { \use_i:nn }
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 ecabb5d4db5..9abb346d2ed 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/06/21 12.3.0 Simple Icons 12.3.0 Logos]
+\ProvidesPackage{simpleicons}[2024/11/08 13.16.0 Simple Icons 13.16.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 e944f9a637d..a708555b6ce 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-pdftex.tex
+++ b/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-pdftex.tex
@@ -1,3195 +1,3222 @@
\expandafter\def\csname simpleicon@1001tracklistsicon\endcsname {\simpleiconsmapone\symbol{0}}
- \expandafter\def\csname simpleicon@1panelicon\endcsname {\simpleiconsmapone\symbol{1}}
- \expandafter\def\csname simpleicon@1passwordicon\endcsname {\simpleiconsmapone\symbol{2}}
- \expandafter\def\csname simpleicon@2fasicon\endcsname {\simpleiconsmapone\symbol{3}}
- \expandafter\def\csname simpleicon@2kicon\endcsname {\simpleiconsmapone\symbol{4}}
- \expandafter\def\csname simpleicon@365datascienceicon\endcsname {\simpleiconsmapone\symbol{5}}
- \expandafter\def\csname simpleicon@3micon\endcsname {\simpleiconsmapone\symbol{6}}
- \expandafter\def\csname simpleicon@42icon\endcsname {\simpleiconsmapone\symbol{7}}
- \expandafter\def\csname simpleicon@4chanicon\endcsname {\simpleiconsmapone\symbol{8}}
- \expandafter\def\csname simpleicon@4dicon\endcsname {\simpleiconsmapone\symbol{9}}
- \expandafter\def\csname simpleicon@500pxicon\endcsname {\simpleiconsmapone\symbol{10}}
- \expandafter\def\csname simpleicon@7zipicon\endcsname {\simpleiconsmapone\symbol{11}}
- \expandafter\def\csname simpleicon@99designsicon\endcsname {\simpleiconsmapone\symbol{12}}
- \expandafter\def\csname simpleicon@9gagicon\endcsname {\simpleiconsmapone\symbol{13}}
- \expandafter\def\csname simpleicon@abbotticon\endcsname {\simpleiconsmapone\symbol{14}}
- \expandafter\def\csname simpleicon@abbrobotstudioicon\endcsname {\simpleiconsmapone\symbol{15}}
- \expandafter\def\csname simpleicon@abbvieicon\endcsname {\simpleiconsmapone\symbol{16}}
- \expandafter\def\csname simpleicon@aboutdotmeicon\endcsname {\simpleiconsmapone\symbol{17}}
- \expandafter\def\csname simpleicon@abstracticon\endcsname {\simpleiconsmapone\symbol{18}}
- \expandafter\def\csname simpleicon@abusedotchicon\endcsname {\simpleiconsmapone\symbol{19}}
- \expandafter\def\csname simpleicon@academiaicon\endcsname {\simpleiconsmapone\symbol{20}}
- \expandafter\def\csname simpleicon@accentureicon\endcsname {\simpleiconsmapone\symbol{21}}
- \expandafter\def\csname simpleicon@accusofticon\endcsname {\simpleiconsmapone\symbol{22}}
- \expandafter\def\csname simpleicon@acericon\endcsname {\simpleiconsmapone\symbol{23}}
- \expandafter\def\csname simpleicon@acmicon\endcsname {\simpleiconsmapone\symbol{24}}
- \expandafter\def\csname simpleicon@actigraphicon\endcsname {\simpleiconsmapone\symbol{25}}
- \expandafter\def\csname simpleicon@activisionicon\endcsname {\simpleiconsmapone\symbol{26}}
- \expandafter\def\csname simpleicon@activitypubicon\endcsname {\simpleiconsmapone\symbol{27}}
- \expandafter\def\csname simpleicon@actixicon\endcsname {\simpleiconsmapone\symbol{28}}
- \expandafter\def\csname simpleicon@acuraicon\endcsname {\simpleiconsmapone\symbol{29}}
- \expandafter\def\csname simpleicon@adafruiticon\endcsname {\simpleiconsmapone\symbol{30}}
- \expandafter\def\csname simpleicon@adblockicon\endcsname {\simpleiconsmapone\symbol{31}}
- \expandafter\def\csname simpleicon@adblockplusicon\endcsname {\simpleiconsmapone\symbol{32}}
- \expandafter\def\csname simpleicon@adguardicon\endcsname {\simpleiconsmapone\symbol{33}}
- \expandafter\def\csname simpleicon@adidasicon\endcsname {\simpleiconsmapone\symbol{34}}
- \expandafter\def\csname simpleicon@adminericon\endcsname {\simpleiconsmapone\symbol{35}}
- \expandafter\def\csname simpleicon@adobeicon\endcsname {\simpleiconsmapone\symbol{36}}
- \expandafter\def\csname simpleicon@adobeacrobatreadericon\endcsname {\simpleiconsmapone\symbol{37}}
- \expandafter\def\csname simpleicon@adobeaftereffectsicon\endcsname {\simpleiconsmapone\symbol{38}}
- \expandafter\def\csname simpleicon@adobeauditionicon\endcsname {\simpleiconsmapone\symbol{39}}
- \expandafter\def\csname simpleicon@adobecreativecloudicon\endcsname {\simpleiconsmapone\symbol{40}}
- \expandafter\def\csname simpleicon@adobedreamweavericon\endcsname {\simpleiconsmapone\symbol{41}}
- \expandafter\def\csname simpleicon@adobefontsicon\endcsname {\simpleiconsmapone\symbol{42}}
- \expandafter\def\csname simpleicon@adobeillustratoricon\endcsname {\simpleiconsmapone\symbol{43}}
- \expandafter\def\csname simpleicon@adobeindesignicon\endcsname {\simpleiconsmapone\symbol{44}}
- \expandafter\def\csname simpleicon@adobelightroomicon\endcsname {\simpleiconsmapone\symbol{45}}
- \expandafter\def\csname simpleicon@adobelightroomclassicicon\endcsname {\simpleiconsmapone\symbol{46}}
- \expandafter\def\csname simpleicon@adobephotoshopicon\endcsname {\simpleiconsmapone\symbol{47}}
- \expandafter\def\csname simpleicon@adobepremiereproicon\endcsname {\simpleiconsmapone\symbol{48}}
- \expandafter\def\csname simpleicon@adobexdicon\endcsname {\simpleiconsmapone\symbol{49}}
- \expandafter\def\csname simpleicon@adonisjsicon\endcsname {\simpleiconsmapone\symbol{50}}
- \expandafter\def\csname simpleicon@adpicon\endcsname {\simpleiconsmapone\symbol{51}}
- \expandafter\def\csname simpleicon@adrollicon\endcsname {\simpleiconsmapone\symbol{52}}
- \expandafter\def\csname simpleicon@adventofcodeicon\endcsname {\simpleiconsmapone\symbol{53}}
- \expandafter\def\csname simpleicon@adyenicon\endcsname {\simpleiconsmapone\symbol{54}}
- \expandafter\def\csname simpleicon@aegisauthenticatoricon\endcsname {\simpleiconsmapone\symbol{55}}
- \expandafter\def\csname simpleicon@aerlingusicon\endcsname {\simpleiconsmapone\symbol{56}}
- \expandafter\def\csname simpleicon@aerofloticon\endcsname {\simpleiconsmapone\symbol{57}}
- \expandafter\def\csname simpleicon@aeromexicoicon\endcsname {\simpleiconsmapone\symbol{58}}
- \expandafter\def\csname simpleicon@aerospikeicon\endcsname {\simpleiconsmapone\symbol{59}}
- \expandafter\def\csname simpleicon@aewicon\endcsname {\simpleiconsmapone\symbol{60}}
- \expandafter\def\csname simpleicon@affineicon\endcsname {\simpleiconsmapone\symbol{61}}
- \expandafter\def\csname simpleicon@affinityicon\endcsname {\simpleiconsmapone\symbol{62}}
- \expandafter\def\csname simpleicon@affinitydesignericon\endcsname {\simpleiconsmapone\symbol{63}}
- \expandafter\def\csname simpleicon@affinityphotoicon\endcsname {\simpleiconsmapone\symbol{64}}
- \expandafter\def\csname simpleicon@affinitypublishericon\endcsname {\simpleiconsmapone\symbol{65}}
- \expandafter\def\csname simpleicon@aframeicon\endcsname {\simpleiconsmapone\symbol{66}}
- \expandafter\def\csname simpleicon@afterpayicon\endcsname {\simpleiconsmapone\symbol{67}}
- \expandafter\def\csname simpleicon@agoraicon\endcsname {\simpleiconsmapone\symbol{68}}
- \expandafter\def\csname simpleicon@aibicon\endcsname {\simpleiconsmapone\symbol{69}}
- \expandafter\def\csname simpleicon@aidungeonicon\endcsname {\simpleiconsmapone\symbol{70}}
- \expandafter\def\csname simpleicon@aiohttpicon\endcsname {\simpleiconsmapone\symbol{71}}
- \expandafter\def\csname simpleicon@aiqfomeicon\endcsname {\simpleiconsmapone\symbol{72}}
- \expandafter\def\csname simpleicon@airasiaicon\endcsname {\simpleiconsmapone\symbol{73}}
- \expandafter\def\csname simpleicon@airbnbicon\endcsname {\simpleiconsmapone\symbol{74}}
- \expandafter\def\csname simpleicon@airbrakeicon\endcsname {\simpleiconsmapone\symbol{75}}
- \expandafter\def\csname simpleicon@airbusicon\endcsname {\simpleiconsmapone\symbol{76}}
- \expandafter\def\csname simpleicon@airbyteicon\endcsname {\simpleiconsmapone\symbol{77}}
- \expandafter\def\csname simpleicon@aircallicon\endcsname {\simpleiconsmapone\symbol{78}}
- \expandafter\def\csname simpleicon@aircanadaicon\endcsname {\simpleiconsmapone\symbol{79}}
- \expandafter\def\csname simpleicon@airchinaicon\endcsname {\simpleiconsmapone\symbol{80}}
- \expandafter\def\csname simpleicon@airfranceicon\endcsname {\simpleiconsmapone\symbol{81}}
- \expandafter\def\csname simpleicon@airindiaicon\endcsname {\simpleiconsmapone\symbol{82}}
- \expandafter\def\csname simpleicon@airplayaudioicon\endcsname {\simpleiconsmapone\symbol{83}}
- \expandafter\def\csname simpleicon@airplayvideoicon\endcsname {\simpleiconsmapone\symbol{84}}
- \expandafter\def\csname simpleicon@airtableicon\endcsname {\simpleiconsmapone\symbol{85}}
- \expandafter\def\csname simpleicon@airtelicon\endcsname {\simpleiconsmapone\symbol{86}}
- \expandafter\def\csname simpleicon@airtransaticon\endcsname {\simpleiconsmapone\symbol{87}}
- \expandafter\def\csname simpleicon@ajvicon\endcsname {\simpleiconsmapone\symbol{88}}
- \expandafter\def\csname simpleicon@akamaiicon\endcsname {\simpleiconsmapone\symbol{89}}
- \expandafter\def\csname simpleicon@akauntingicon\endcsname {\simpleiconsmapone\symbol{90}}
- \expandafter\def\csname simpleicon@akiflowicon\endcsname {\simpleiconsmapone\symbol{91}}
- \expandafter\def\csname simpleicon@alacrittyicon\endcsname {\simpleiconsmapone\symbol{92}}
- \expandafter\def\csname simpleicon@alamyicon\endcsname {\simpleiconsmapone\symbol{93}}
- \expandafter\def\csname simpleicon@albertheijnicon\endcsname {\simpleiconsmapone\symbol{94}}
- \expandafter\def\csname simpleicon@albyicon\endcsname {\simpleiconsmapone\symbol{95}}
- \expandafter\def\csname simpleicon@alchemyicon\endcsname {\simpleiconsmapone\symbol{96}}
- \expandafter\def\csname simpleicon@aldinordicon\endcsname {\simpleiconsmapone\symbol{97}}
- \expandafter\def\csname simpleicon@aldisudicon\endcsname {\simpleiconsmapone\symbol{98}}
- \expandafter\def\csname simpleicon@alfaromeoicon\endcsname {\simpleiconsmapone\symbol{99}}
- \expandafter\def\csname simpleicon@alfredicon\endcsname {\simpleiconsmapone\symbol{100}}
- \expandafter\def\csname simpleicon@algoliaicon\endcsname {\simpleiconsmapone\symbol{101}}
- \expandafter\def\csname simpleicon@algorandicon\endcsname {\simpleiconsmapone\symbol{102}}
- \expandafter\def\csname simpleicon@alibabacloudicon\endcsname {\simpleiconsmapone\symbol{103}}
- \expandafter\def\csname simpleicon@alibabadotcomicon\endcsname {\simpleiconsmapone\symbol{104}}
- \expandafter\def\csname simpleicon@alienwareicon\endcsname {\simpleiconsmapone\symbol{105}}
- \expandafter\def\csname simpleicon@aliexpressicon\endcsname {\simpleiconsmapone\symbol{106}}
- \expandafter\def\csname simpleicon@alipayicon\endcsname {\simpleiconsmapone\symbol{107}}
- \expandafter\def\csname simpleicon@allegroicon\endcsname {\simpleiconsmapone\symbol{108}}
- \expandafter\def\csname simpleicon@alliedmoddersicon\endcsname {\simpleiconsmapone\symbol{109}}
- \expandafter\def\csname simpleicon@allocineicon\endcsname {\simpleiconsmapone\symbol{110}}
- \expandafter\def\csname simpleicon@alltrailsicon\endcsname {\simpleiconsmapone\symbol{111}}
- \expandafter\def\csname simpleicon@almalinuxicon\endcsname {\simpleiconsmapone\symbol{112}}
- \expandafter\def\csname simpleicon@alpinedotjsicon\endcsname {\simpleiconsmapone\symbol{113}}
- \expandafter\def\csname simpleicon@alpinelinuxicon\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@antaicon\endcsname {\simpleiconsmapone\symbol{167}}
- \expandafter\def\csname simpleicon@antdesignicon\endcsname {\simpleiconsmapone\symbol{168}}
- \expandafter\def\csname simpleicon@antena3icon\endcsname {\simpleiconsmapone\symbol{169}}
- \expandafter\def\csname simpleicon@anthropicicon\endcsname {\simpleiconsmapone\symbol{170}}
- \expandafter\def\csname simpleicon@anycubicicon\endcsname {\simpleiconsmapone\symbol{171}}
- \expandafter\def\csname simpleicon@anydeskicon\endcsname {\simpleiconsmapone\symbol{172}}
- \expandafter\def\csname simpleicon@anytypeicon\endcsname {\simpleiconsmapone\symbol{173}}
- \expandafter\def\csname simpleicon@aolicon\endcsname {\simpleiconsmapone\symbol{174}}
- \expandafter\def\csname simpleicon@apacheicon\endcsname {\simpleiconsmapone\symbol{175}}
- \expandafter\def\csname simpleicon@apacheairflowicon\endcsname {\simpleiconsmapone\symbol{176}}
- \expandafter\def\csname simpleicon@apacheanticon\endcsname {\simpleiconsmapone\symbol{177}}
- \expandafter\def\csname simpleicon@apachecassandraicon\endcsname {\simpleiconsmapone\symbol{178}}
- \expandafter\def\csname simpleicon@apachecloudstackicon\endcsname {\simpleiconsmapone\symbol{179}}
- \expandafter\def\csname simpleicon@apachecordovaicon\endcsname {\simpleiconsmapone\symbol{180}}
- \expandafter\def\csname simpleicon@apachecouchdbicon\endcsname {\simpleiconsmapone\symbol{181}}
- \expandafter\def\csname simpleicon@apachedruidicon\endcsname {\simpleiconsmapone\symbol{182}}
- \expandafter\def\csname simpleicon@apacheechartsicon\endcsname {\simpleiconsmapone\symbol{183}}
- \expandafter\def\csname simpleicon@apacheflinkicon\endcsname {\simpleiconsmapone\symbol{184}}
- \expandafter\def\csname simpleicon@apachefreemarkericon\endcsname {\simpleiconsmapone\symbol{185}}
- \expandafter\def\csname simpleicon@apachegroovyicon\endcsname {\simpleiconsmapone\symbol{186}}
- \expandafter\def\csname simpleicon@apacheguacamoleicon\endcsname {\simpleiconsmapone\symbol{187}}
- \expandafter\def\csname simpleicon@apachehadoopicon\endcsname {\simpleiconsmapone\symbol{188}}
- \expandafter\def\csname simpleicon@apachehbaseicon\endcsname {\simpleiconsmapone\symbol{189}}
- \expandafter\def\csname simpleicon@apachehiveicon\endcsname {\simpleiconsmapone\symbol{190}}
- \expandafter\def\csname simpleicon@apachejmetericon\endcsname {\simpleiconsmapone\symbol{191}}
- \expandafter\def\csname simpleicon@apachekafkaicon\endcsname {\simpleiconsmapone\symbol{192}}
- \expandafter\def\csname simpleicon@apachekylinicon\endcsname {\simpleiconsmapone\symbol{193}}
- \expandafter\def\csname simpleicon@apachemavenicon\endcsname {\simpleiconsmapone\symbol{194}}
- \expandafter\def\csname simpleicon@apachenetbeansideicon\endcsname {\simpleiconsmapone\symbol{195}}
- \expandafter\def\csname simpleicon@apacheopenofficeicon\endcsname {\simpleiconsmapone\symbol{196}}
- \expandafter\def\csname simpleicon@apacheparqueticon\endcsname {\simpleiconsmapone\symbol{197}}
- \expandafter\def\csname simpleicon@apachepulsaricon\endcsname {\simpleiconsmapone\symbol{198}}
- \expandafter\def\csname simpleicon@apacherocketmqicon\endcsname {\simpleiconsmapone\symbol{199}}
- \expandafter\def\csname simpleicon@apachesolricon\endcsname {\simpleiconsmapone\symbol{200}}
- \expandafter\def\csname simpleicon@apachesparkicon\endcsname {\simpleiconsmapone\symbol{201}}
- \expandafter\def\csname simpleicon@apachestormicon\endcsname {\simpleiconsmapone\symbol{202}}
- \expandafter\def\csname simpleicon@apachesuperseticon\endcsname {\simpleiconsmapone\symbol{203}}
- \expandafter\def\csname simpleicon@apachetomcaticon\endcsname {\simpleiconsmapone\symbol{204}}
- \expandafter\def\csname simpleicon@aparaticon\endcsname {\simpleiconsmapone\symbol{205}}
- \expandafter\def\csname simpleicon@apifoxicon\endcsname {\simpleiconsmapone\symbol{206}}
- \expandafter\def\csname simpleicon@apmterminalsicon\endcsname {\simpleiconsmapone\symbol{207}}
- \expandafter\def\csname simpleicon@apollographqlicon\endcsname {\simpleiconsmapone\symbol{208}}
- \expandafter\def\csname simpleicon@apostropheicon\endcsname {\simpleiconsmapone\symbol{209}}
- \expandafter\def\csname simpleicon@appianicon\endcsname {\simpleiconsmapone\symbol{210}}
- \expandafter\def\csname simpleicon@appiumicon\endcsname {\simpleiconsmapone\symbol{211}}
- \expandafter\def\csname simpleicon@appleicon\endcsname {\simpleiconsmapone\symbol{212}}
- \expandafter\def\csname simpleicon@applearcadeicon\endcsname {\simpleiconsmapone\symbol{213}}
- \expandafter\def\csname simpleicon@applemusicicon\endcsname {\simpleiconsmapone\symbol{214}}
- \expandafter\def\csname simpleicon@applenewsicon\endcsname {\simpleiconsmapone\symbol{215}}
- \expandafter\def\csname simpleicon@applepayicon\endcsname {\simpleiconsmapone\symbol{216}}
- \expandafter\def\csname simpleicon@applepodcastsicon\endcsname {\simpleiconsmapone\symbol{217}}
- \expandafter\def\csname simpleicon@appletvicon\endcsname {\simpleiconsmapone\symbol{218}}
- \expandafter\def\csname simpleicon@appsignalicon\endcsname {\simpleiconsmapone\symbol{219}}
- \expandafter\def\csname simpleicon@appsmithicon\endcsname {\simpleiconsmapone\symbol{220}}
- \expandafter\def\csname simpleicon@appstoreicon\endcsname {\simpleiconsmapone\symbol{221}}
- \expandafter\def\csname simpleicon@appveyoricon\endcsname {\simpleiconsmapone\symbol{222}}
- \expandafter\def\csname simpleicon@appwriteicon\endcsname {\simpleiconsmapone\symbol{223}}
- \expandafter\def\csname simpleicon@aquaicon\endcsname {\simpleiconsmapone\symbol{224}}
- \expandafter\def\csname simpleicon@aralicon\endcsname {\simpleiconsmapone\symbol{225}}
- \expandafter\def\csname simpleicon@arangodbicon\endcsname {\simpleiconsmapone\symbol{226}}
- \expandafter\def\csname simpleicon@arcicon\endcsname {\simpleiconsmapone\symbol{227}}
- \expandafter\def\csname simpleicon@arcgisicon\endcsname {\simpleiconsmapone\symbol{228}}
- \expandafter\def\csname simpleicon@archicadicon\endcsname {\simpleiconsmapone\symbol{229}}
- \expandafter\def\csname simpleicon@archiveofourownicon\endcsname {\simpleiconsmapone\symbol{230}}
- \expandafter\def\csname simpleicon@archlinuxicon\endcsname {\simpleiconsmapone\symbol{231}}
- \expandafter\def\csname simpleicon@ardouricon\endcsname {\simpleiconsmapone\symbol{232}}
- \expandafter\def\csname simpleicon@arduinoicon\endcsname {\simpleiconsmapone\symbol{233}}
- \expandafter\def\csname simpleicon@argoicon\endcsname {\simpleiconsmapone\symbol{234}}
- \expandafter\def\csname simpleicon@argosicon\endcsname {\simpleiconsmapone\symbol{235}}
- \expandafter\def\csname simpleicon@ariakiticon\endcsname {\simpleiconsmapone\symbol{236}}
- \expandafter\def\csname simpleicon@arkecosystemicon\endcsname {\simpleiconsmapone\symbol{237}}
- \expandafter\def\csname simpleicon@arloicon\endcsname {\simpleiconsmapone\symbol{238}}
- \expandafter\def\csname simpleicon@armicon\endcsname {\simpleiconsmapone\symbol{239}}
- \expandafter\def\csname simpleicon@armkeilicon\endcsname {\simpleiconsmapone\symbol{240}}
- \expandafter\def\csname simpleicon@arstechnicaicon\endcsname {\simpleiconsmapone\symbol{241}}
- \expandafter\def\csname simpleicon@artifacthubicon\endcsname {\simpleiconsmapone\symbol{242}}
- \expandafter\def\csname simpleicon@artixlinuxicon\endcsname {\simpleiconsmapone\symbol{243}}
- \expandafter\def\csname simpleicon@artstationicon\endcsname {\simpleiconsmapone\symbol{244}}
- \expandafter\def\csname simpleicon@arxivicon\endcsname {\simpleiconsmapone\symbol{245}}
- \expandafter\def\csname simpleicon@asahilinuxicon\endcsname {\simpleiconsmapone\symbol{246}}
- \expandafter\def\csname simpleicon@asanaicon\endcsname {\simpleiconsmapone\symbol{247}}
- \expandafter\def\csname simpleicon@asciidoctoricon\endcsname {\simpleiconsmapone\symbol{248}}
- \expandafter\def\csname simpleicon@asciinemaicon\endcsname {\simpleiconsmapone\symbol{249}}
- \expandafter\def\csname simpleicon@asdaicon\endcsname {\simpleiconsmapone\symbol{250}}
- \expandafter\def\csname simpleicon@asepriteicon\endcsname {\simpleiconsmapone\symbol{251}}
- \expandafter\def\csname simpleicon@askfmicon\endcsname {\simpleiconsmapone\symbol{252}}
- \expandafter\def\csname simpleicon@assemblyscripticon\endcsname {\simpleiconsmapone\symbol{253}}
- \expandafter\def\csname simpleicon@asteriskicon\endcsname {\simpleiconsmapone\symbol{254}}
- \expandafter\def\csname simpleicon@astonmartinicon\endcsname {\simpleiconsmapone\symbol{255}}
- \expandafter\def\csname simpleicon@astraicon\endcsname {\simpleiconsmaptwo\symbol{0}}
- \expandafter\def\csname simpleicon@astralicon\endcsname {\simpleiconsmaptwo\symbol{1}}
- \expandafter\def\csname simpleicon@astroicon\endcsname {\simpleiconsmaptwo\symbol{2}}
- \expandafter\def\csname simpleicon@asusicon\endcsname {\simpleiconsmaptwo\symbol{3}}
- \expandafter\def\csname simpleicon@atandticon\endcsname {\simpleiconsmaptwo\symbol{4}}
- \expandafter\def\csname simpleicon@atariicon\endcsname {\simpleiconsmaptwo\symbol{5}}
- \expandafter\def\csname simpleicon@atlassianicon\endcsname {\simpleiconsmaptwo\symbol{6}}
- \expandafter\def\csname simpleicon@auchanicon\endcsname {\simpleiconsmaptwo\symbol{7}}
- \expandafter\def\csname simpleicon@audacityicon\endcsname {\simpleiconsmaptwo\symbol{8}}
- \expandafter\def\csname simpleicon@audiicon\endcsname {\simpleiconsmaptwo\symbol{9}}
- \expandafter\def\csname simpleicon@audibleicon\endcsname {\simpleiconsmaptwo\symbol{10}}
- \expandafter\def\csname simpleicon@audiobookshelficon\endcsname {\simpleiconsmaptwo\symbol{11}}
- \expandafter\def\csname simpleicon@audioboomicon\endcsname {\simpleiconsmaptwo\symbol{12}}
- \expandafter\def\csname simpleicon@audiomackicon\endcsname {\simpleiconsmaptwo\symbol{13}}
- \expandafter\def\csname simpleicon@audiotechnicaicon\endcsname {\simpleiconsmaptwo\symbol{14}}
- \expandafter\def\csname simpleicon@aureliaicon\endcsname {\simpleiconsmaptwo\symbol{15}}
- \expandafter\def\csname simpleicon@auth0icon\endcsname {\simpleiconsmaptwo\symbol{16}}
- \expandafter\def\csname simpleicon@autheliaicon\endcsname {\simpleiconsmaptwo\symbol{17}}
- \expandafter\def\csname simpleicon@authentikicon\endcsname {\simpleiconsmaptwo\symbol{18}}
- \expandafter\def\csname simpleicon@authyicon\endcsname {\simpleiconsmaptwo\symbol{19}}
- \expandafter\def\csname simpleicon@autocadicon\endcsname {\simpleiconsmaptwo\symbol{20}}
- \expandafter\def\csname simpleicon@autodeskicon\endcsname {\simpleiconsmaptwo\symbol{21}}
- \expandafter\def\csname simpleicon@autodeskmayaicon\endcsname {\simpleiconsmaptwo\symbol{22}}
- \expandafter\def\csname simpleicon@autodeskreviticon\endcsname {\simpleiconsmaptwo\symbol{23}}
- \expandafter\def\csname simpleicon@autohotkeyicon\endcsname {\simpleiconsmaptwo\symbol{24}}
- \expandafter\def\csname simpleicon@autoiticon\endcsname {\simpleiconsmaptwo\symbol{25}}
- \expandafter\def\csname simpleicon@automatticicon\endcsname {\simpleiconsmaptwo\symbol{26}}
- \expandafter\def\csname simpleicon@autoprefixericon\endcsname {\simpleiconsmaptwo\symbol{27}}
- \expandafter\def\csname simpleicon@autozoneicon\endcsname {\simpleiconsmaptwo\symbol{28}}
- \expandafter\def\csname simpleicon@avajsicon\endcsname {\simpleiconsmaptwo\symbol{29}}
- \expandafter\def\csname simpleicon@avasticon\endcsname {\simpleiconsmaptwo\symbol{30}}
- \expandafter\def\csname simpleicon@aviancaicon\endcsname {\simpleiconsmaptwo\symbol{31}}
- \expandafter\def\csname simpleicon@aviraicon\endcsname {\simpleiconsmaptwo\symbol{32}}
- \expandafter\def\csname simpleicon@awesomelistsicon\endcsname {\simpleiconsmaptwo\symbol{33}}
- \expandafter\def\csname simpleicon@awesomewmicon\endcsname {\simpleiconsmaptwo\symbol{34}}
- \expandafter\def\csname simpleicon@awsamplifyicon\endcsname {\simpleiconsmaptwo\symbol{35}}
- \expandafter\def\csname simpleicon@awselasticloadbalancingicon\endcsname {\simpleiconsmaptwo\symbol{36}}
- \expandafter\def\csname simpleicon@awsfargateicon\endcsname {\simpleiconsmaptwo\symbol{37}}
- \expandafter\def\csname simpleicon@awslambdaicon\endcsname {\simpleiconsmaptwo\symbol{38}}
- \expandafter\def\csname simpleicon@awsorganizationsicon\endcsname {\simpleiconsmaptwo\symbol{39}}
- \expandafter\def\csname simpleicon@awssecretsmanagericon\endcsname {\simpleiconsmaptwo\symbol{40}}
- \expandafter\def\csname simpleicon@awwwardsicon\endcsname {\simpleiconsmaptwo\symbol{41}}
- \expandafter\def\csname simpleicon@axiosicon\endcsname {\simpleiconsmaptwo\symbol{42}}
- \expandafter\def\csname simpleicon@azureartifactsicon\endcsname {\simpleiconsmaptwo\symbol{43}}
- \expandafter\def\csname simpleicon@azuredataexplorericon\endcsname {\simpleiconsmaptwo\symbol{44}}
- \expandafter\def\csname simpleicon@azuredevopsicon\endcsname {\simpleiconsmaptwo\symbol{45}}
- \expandafter\def\csname simpleicon@azurefunctionsicon\endcsname {\simpleiconsmaptwo\symbol{46}}
- \expandafter\def\csname simpleicon@azurepipelinesicon\endcsname {\simpleiconsmaptwo\symbol{47}}
- \expandafter\def\csname simpleicon@babelicon\endcsname {\simpleiconsmaptwo\symbol{48}}
- \expandafter\def\csname simpleicon@babelioicon\endcsname {\simpleiconsmaptwo\symbol{49}}
- \expandafter\def\csname simpleicon@babylondotjsicon\endcsname {\simpleiconsmaptwo\symbol{50}}
- \expandafter\def\csname simpleicon@backblazeicon\endcsname {\simpleiconsmaptwo\symbol{51}}
- \expandafter\def\csname simpleicon@backbonedotjsicon\endcsname {\simpleiconsmaptwo\symbol{52}}
- \expandafter\def\csname simpleicon@backendlessicon\endcsname {\simpleiconsmaptwo\symbol{53}}
- \expandafter\def\csname simpleicon@backstageicon\endcsname {\simpleiconsmaptwo\symbol{54}}
- \expandafter\def\csname simpleicon@badooicon\endcsname {\simpleiconsmaptwo\symbol{55}}
- \expandafter\def\csname simpleicon@baiduicon\endcsname {\simpleiconsmaptwo\symbol{56}}
- \expandafter\def\csname simpleicon@bakalariicon\endcsname {\simpleiconsmaptwo\symbol{57}}
- \expandafter\def\csname simpleicon@bambooicon\endcsname {\simpleiconsmaptwo\symbol{58}}
- \expandafter\def\csname simpleicon@bambulabicon\endcsname {\simpleiconsmaptwo\symbol{59}}
- \expandafter\def\csname simpleicon@bandcampicon\endcsname {\simpleiconsmaptwo\symbol{60}}
- \expandafter\def\csname simpleicon@bandlabicon\endcsname {\simpleiconsmaptwo\symbol{61}}
- \expandafter\def\csname simpleicon@bandrautomationicon\endcsname {\simpleiconsmaptwo\symbol{62}}
- \expandafter\def\csname simpleicon@bandsintownicon\endcsname {\simpleiconsmaptwo\symbol{63}}
- \expandafter\def\csname simpleicon@bankofamericaicon\endcsname {\simpleiconsmaptwo\symbol{64}}
- \expandafter\def\csname simpleicon@barclaysicon\endcsname {\simpleiconsmaptwo\symbol{65}}
- \expandafter\def\csname simpleicon@baremetricsicon\endcsname {\simpleiconsmaptwo\symbol{66}}
- \expandafter\def\csname simpleicon@barmeniaicon\endcsname {\simpleiconsmaptwo\symbol{67}}
- \expandafter\def\csname simpleicon@basecampicon\endcsname {\simpleiconsmaptwo\symbol{68}}
- \expandafter\def\csname simpleicon@basicattentiontokenicon\endcsname {\simpleiconsmaptwo\symbol{69}}
- \expandafter\def\csname simpleicon@bastyonicon\endcsname {\simpleiconsmaptwo\symbol{70}}
- \expandafter\def\csname simpleicon@baticon\endcsname {\simpleiconsmaptwo\symbol{71}}
- \expandafter\def\csname simpleicon@bataicon\endcsname {\simpleiconsmaptwo\symbol{72}}
- \expandafter\def\csname simpleicon@battledotneticon\endcsname {\simpleiconsmaptwo\symbol{73}}
- \expandafter\def\csname simpleicon@bazelicon\endcsname {\simpleiconsmaptwo\symbol{74}}
- \expandafter\def\csname simpleicon@beatporticon\endcsname {\simpleiconsmaptwo\symbol{75}}
- \expandafter\def\csname simpleicon@beatsicon\endcsname {\simpleiconsmaptwo\symbol{76}}
- \expandafter\def\csname simpleicon@beatsbydreicon\endcsname {\simpleiconsmaptwo\symbol{77}}
- \expandafter\def\csname simpleicon@beatstarsicon\endcsname {\simpleiconsmaptwo\symbol{78}}
- \expandafter\def\csname simpleicon@behanceicon\endcsname {\simpleiconsmaptwo\symbol{79}}
- \expandafter\def\csname simpleicon@beijingsubwayicon\endcsname {\simpleiconsmaptwo\symbol{80}}
- \expandafter\def\csname simpleicon@bemicon\endcsname {\simpleiconsmaptwo\symbol{81}}
- \expandafter\def\csname simpleicon@bentleyicon\endcsname {\simpleiconsmaptwo\symbol{82}}
- \expandafter\def\csname simpleicon@bentoicon\endcsname {\simpleiconsmaptwo\symbol{83}}
- \expandafter\def\csname simpleicon@bentoboxicon\endcsname {\simpleiconsmaptwo\symbol{84}}
- \expandafter\def\csname simpleicon@bentomlicon\endcsname {\simpleiconsmaptwo\symbol{85}}
- \expandafter\def\csname simpleicon@berealicon\endcsname {\simpleiconsmaptwo\symbol{86}}
- \expandafter\def\csname simpleicon@betfairicon\endcsname {\simpleiconsmaptwo\symbol{87}}
- \expandafter\def\csname simpleicon@betterstackicon\endcsname {\simpleiconsmaptwo\symbol{88}}
- \expandafter\def\csname simpleicon@bevyicon\endcsname {\simpleiconsmaptwo\symbol{89}}
- \expandafter\def\csname simpleicon@bigbasketicon\endcsname {\simpleiconsmaptwo\symbol{90}}
- \expandafter\def\csname simpleicon@bigbluebuttonicon\endcsname {\simpleiconsmaptwo\symbol{91}}
- \expandafter\def\csname simpleicon@bigcartelicon\endcsname {\simpleiconsmaptwo\symbol{92}}
- \expandafter\def\csname simpleicon@bigcommerceicon\endcsname {\simpleiconsmaptwo\symbol{93}}
- \expandafter\def\csname simpleicon@bilibiliicon\endcsname {\simpleiconsmaptwo\symbol{94}}
- \expandafter\def\csname simpleicon@billboardicon\endcsname {\simpleiconsmaptwo\symbol{95}}
- \expandafter\def\csname simpleicon@bimicon\endcsname {\simpleiconsmaptwo\symbol{96}}
- \expandafter\def\csname simpleicon@binanceicon\endcsname {\simpleiconsmaptwo\symbol{97}}
- \expandafter\def\csname simpleicon@biolinkicon\endcsname {\simpleiconsmaptwo\symbol{98}}
- \expandafter\def\csname simpleicon@biomeicon\endcsname {\simpleiconsmaptwo\symbol{99}}
- \expandafter\def\csname simpleicon@bisecthostingicon\endcsname {\simpleiconsmaptwo\symbol{100}}
- \expandafter\def\csname simpleicon@biticon\endcsname {\simpleiconsmaptwo\symbol{101}}
- \expandafter\def\csname simpleicon@bitbucketicon\endcsname {\simpleiconsmaptwo\symbol{102}}
- \expandafter\def\csname simpleicon@bitcoinicon\endcsname {\simpleiconsmaptwo\symbol{103}}
- \expandafter\def\csname simpleicon@bitcoincashicon\endcsname {\simpleiconsmaptwo\symbol{104}}
- \expandafter\def\csname simpleicon@bitcoinsvicon\endcsname {\simpleiconsmaptwo\symbol{105}}
- \expandafter\def\csname simpleicon@bitcometicon\endcsname {\simpleiconsmaptwo\symbol{106}}
- \expandafter\def\csname simpleicon@bitdefendericon\endcsname {\simpleiconsmaptwo\symbol{107}}
- \expandafter\def\csname simpleicon@bitlyicon\endcsname {\simpleiconsmaptwo\symbol{108}}
- \expandafter\def\csname simpleicon@bitriseicon\endcsname {\simpleiconsmaptwo\symbol{109}}
- \expandafter\def\csname simpleicon@bittorrenticon\endcsname {\simpleiconsmaptwo\symbol{110}}
- \expandafter\def\csname simpleicon@bitwardenicon\endcsname {\simpleiconsmaptwo\symbol{111}}
- \expandafter\def\csname simpleicon@bitwigicon\endcsname {\simpleiconsmaptwo\symbol{112}}
- \expandafter\def\csname simpleicon@blackberryicon\endcsname {\simpleiconsmaptwo\symbol{113}}
- \expandafter\def\csname simpleicon@blackmagicdesignicon\endcsname {\simpleiconsmaptwo\symbol{114}}
- \expandafter\def\csname simpleicon@blazemetericon\endcsname {\simpleiconsmaptwo\symbol{115}}
- \expandafter\def\csname simpleicon@blazoricon\endcsname {\simpleiconsmaptwo\symbol{116}}
- \expandafter\def\csname simpleicon@blendericon\endcsname {\simpleiconsmaptwo\symbol{117}}
- \expandafter\def\csname simpleicon@blockbenchicon\endcsname {\simpleiconsmaptwo\symbol{118}}
- \expandafter\def\csname simpleicon@blockchaindotcomicon\endcsname {\simpleiconsmaptwo\symbol{119}}
- \expandafter\def\csname simpleicon@bloggericon\endcsname {\simpleiconsmaptwo\symbol{120}}
- \expandafter\def\csname simpleicon@bloglovinicon\endcsname {\simpleiconsmaptwo\symbol{121}}
- \expandafter\def\csname simpleicon@blueprinticon\endcsname {\simpleiconsmaptwo\symbol{122}}
- \expandafter\def\csname simpleicon@blueskyicon\endcsname {\simpleiconsmaptwo\symbol{123}}
- \expandafter\def\csname simpleicon@bluesoundicon\endcsname {\simpleiconsmaptwo\symbol{124}}
- \expandafter\def\csname simpleicon@bluetoothicon\endcsname {\simpleiconsmaptwo\symbol{125}}
- \expandafter\def\csname simpleicon@bmcsoftwareicon\endcsname {\simpleiconsmaptwo\symbol{126}}
- \expandafter\def\csname simpleicon@bmwicon\endcsname {\simpleiconsmaptwo\symbol{127}}
- \expandafter\def\csname simpleicon@bnbchainicon\endcsname {\simpleiconsmaptwo\symbol{128}}
- \expandafter\def\csname simpleicon@boardgamegeekicon\endcsname {\simpleiconsmaptwo\symbol{129}}
- \expandafter\def\csname simpleicon@boaticon\endcsname {\simpleiconsmaptwo\symbol{130}}
- \expandafter\def\csname simpleicon@boehringeringelheimicon\endcsname {\simpleiconsmaptwo\symbol{131}}
- \expandafter\def\csname simpleicon@boeingicon\endcsname {\simpleiconsmaptwo\symbol{132}}
- \expandafter\def\csname simpleicon@bombardiericon\endcsname {\simpleiconsmaptwo\symbol{133}}
- \expandafter\def\csname simpleicon@bookalopeicon\endcsname {\simpleiconsmaptwo\symbol{134}}
- \expandafter\def\csname simpleicon@bookbubicon\endcsname {\simpleiconsmaptwo\symbol{135}}
- \expandafter\def\csname simpleicon@bookmetericon\endcsname {\simpleiconsmaptwo\symbol{136}}
- \expandafter\def\csname simpleicon@bookmyshowicon\endcsname {\simpleiconsmaptwo\symbol{137}}
- \expandafter\def\csname simpleicon@bookstackicon\endcsname {\simpleiconsmaptwo\symbol{138}}
- \expandafter\def\csname simpleicon@boosticon\endcsname {\simpleiconsmaptwo\symbol{139}}
- \expandafter\def\csname simpleicon@boostyicon\endcsname {\simpleiconsmaptwo\symbol{140}}
- \expandafter\def\csname simpleicon@bootsicon\endcsname {\simpleiconsmaptwo\symbol{141}}
- \expandafter\def\csname simpleicon@bootstrapicon\endcsname {\simpleiconsmaptwo\symbol{142}}
- \expandafter\def\csname simpleicon@borgbackupicon\endcsname {\simpleiconsmaptwo\symbol{143}}
- \expandafter\def\csname simpleicon@boschicon\endcsname {\simpleiconsmaptwo\symbol{144}}
- \expandafter\def\csname simpleicon@boseicon\endcsname {\simpleiconsmaptwo\symbol{145}}
- \expandafter\def\csname simpleicon@botblecmsicon\endcsname {\simpleiconsmaptwo\symbol{146}}
- \expandafter\def\csname simpleicon@boulangericon\endcsname {\simpleiconsmaptwo\symbol{147}}
- \expandafter\def\csname simpleicon@bowericon\endcsname {\simpleiconsmaptwo\symbol{148}}
- \expandafter\def\csname simpleicon@boxicon\endcsname {\simpleiconsmaptwo\symbol{149}}
- \expandafter\def\csname simpleicon@boxysvgicon\endcsname {\simpleiconsmaptwo\symbol{150}}
- \expandafter\def\csname simpleicon@braintreeicon\endcsname {\simpleiconsmaptwo\symbol{151}}
- \expandafter\def\csname simpleicon@brandfoldericon\endcsname {\simpleiconsmaptwo\symbol{152}}
- \expandafter\def\csname simpleicon@braveicon\endcsname {\simpleiconsmaptwo\symbol{153}}
- \expandafter\def\csname simpleicon@breakericon\endcsname {\simpleiconsmaptwo\symbol{154}}
- \expandafter\def\csname simpleicon@brenntagicon\endcsname {\simpleiconsmaptwo\symbol{155}}
- \expandafter\def\csname simpleicon@brevoicon\endcsname {\simpleiconsmaptwo\symbol{156}}
- \expandafter\def\csname simpleicon@brexicon\endcsname {\simpleiconsmaptwo\symbol{157}}
- \expandafter\def\csname simpleicon@bricksicon\endcsname {\simpleiconsmaptwo\symbol{158}}
- \expandafter\def\csname simpleicon@britishairwaysicon\endcsname {\simpleiconsmaptwo\symbol{159}}
- \expandafter\def\csname simpleicon@broadcomicon\endcsname {\simpleiconsmaptwo\symbol{160}}
- \expandafter\def\csname simpleicon@brunoicon\endcsname {\simpleiconsmaptwo\symbol{161}}
- \expandafter\def\csname simpleicon@bsdicon\endcsname {\simpleiconsmaptwo\symbol{162}}
- \expandafter\def\csname simpleicon@bspwmicon\endcsname {\simpleiconsmaptwo\symbol{163}}
- \expandafter\def\csname simpleicon@bticon\endcsname {\simpleiconsmaptwo\symbol{164}}
- \expandafter\def\csname simpleicon@buddyicon\endcsname {\simpleiconsmaptwo\symbol{165}}
- \expandafter\def\csname simpleicon@budibaseicon\endcsname {\simpleiconsmaptwo\symbol{166}}
- \expandafter\def\csname simpleicon@buefyicon\endcsname {\simpleiconsmaptwo\symbol{167}}
- \expandafter\def\csname simpleicon@buffericon\endcsname {\simpleiconsmaptwo\symbol{168}}
- \expandafter\def\csname simpleicon@bugattiicon\endcsname {\simpleiconsmaptwo\symbol{169}}
- \expandafter\def\csname simpleicon@bugcrowdicon\endcsname {\simpleiconsmaptwo\symbol{170}}
- \expandafter\def\csname simpleicon@bugsnagicon\endcsname {\simpleiconsmaptwo\symbol{171}}
- \expandafter\def\csname simpleicon@buhlicon\endcsname {\simpleiconsmaptwo\symbol{172}}
- \expandafter\def\csname simpleicon@buildkiteicon\endcsname {\simpleiconsmaptwo\symbol{173}}
- \expandafter\def\csname simpleicon@bukalapakicon\endcsname {\simpleiconsmaptwo\symbol{174}}
- \expandafter\def\csname simpleicon@bulmaicon\endcsname {\simpleiconsmaptwo\symbol{175}}
- \expandafter\def\csname simpleicon@bunicon\endcsname {\simpleiconsmaptwo\symbol{176}}
- \expandafter\def\csname simpleicon@bungieicon\endcsname {\simpleiconsmaptwo\symbol{177}}
- \expandafter\def\csname simpleicon@bunqicon\endcsname {\simpleiconsmaptwo\symbol{178}}
- \expandafter\def\csname simpleicon@burgerkingicon\endcsname {\simpleiconsmaptwo\symbol{179}}
- \expandafter\def\csname simpleicon@burpsuiteicon\endcsname {\simpleiconsmaptwo\symbol{180}}
- \expandafter\def\csname simpleicon@burtonicon\endcsname {\simpleiconsmaptwo\symbol{181}}
- \expandafter\def\csname simpleicon@buymeacoffeeicon\endcsname {\simpleiconsmaptwo\symbol{182}}
- \expandafter\def\csname simpleicon@buyselladsicon\endcsname {\simpleiconsmaptwo\symbol{183}}
- \expandafter\def\csname simpleicon@buzzfeedicon\endcsname {\simpleiconsmaptwo\symbol{184}}
- \expandafter\def\csname simpleicon@bvgicon\endcsname {\simpleiconsmaptwo\symbol{185}}
- \expandafter\def\csname simpleicon@byjusicon\endcsname {\simpleiconsmaptwo\symbol{186}}
- \expandafter\def\csname simpleicon@bytedanceicon\endcsname {\simpleiconsmaptwo\symbol{187}}
- \expandafter\def\csname simpleicon@cicon\endcsname {\simpleiconsmaptwo\symbol{188}}
- \expandafter\def\csname simpleicon@cacheticon\endcsname {\simpleiconsmaptwo\symbol{189}}
- \expandafter\def\csname simpleicon@caddyicon\endcsname {\simpleiconsmaptwo\symbol{190}}
- \expandafter\def\csname simpleicon@cadillacicon\endcsname {\simpleiconsmaptwo\symbol{191}}
- \expandafter\def\csname simpleicon@cafepressicon\endcsname {\simpleiconsmaptwo\symbol{192}}
- \expandafter\def\csname simpleicon@caffeineicon\endcsname {\simpleiconsmaptwo\symbol{193}}
- \expandafter\def\csname simpleicon@cairographicsicon\endcsname {\simpleiconsmaptwo\symbol{194}}
- \expandafter\def\csname simpleicon@cairometroicon\endcsname {\simpleiconsmaptwo\symbol{195}}
- \expandafter\def\csname simpleicon@cakephpicon\endcsname {\simpleiconsmaptwo\symbol{196}}
- \expandafter\def\csname simpleicon@caldotcomicon\endcsname {\simpleiconsmaptwo\symbol{197}}
- \expandafter\def\csname simpleicon@calendlyicon\endcsname {\simpleiconsmaptwo\symbol{198}}
- \expandafter\def\csname simpleicon@calibrewebicon\endcsname {\simpleiconsmaptwo\symbol{199}}
- \expandafter\def\csname simpleicon@campaignmonitoricon\endcsname {\simpleiconsmaptwo\symbol{200}}
- \expandafter\def\csname simpleicon@camundaicon\endcsname {\simpleiconsmaptwo\symbol{201}}
- \expandafter\def\csname simpleicon@canonicalicon\endcsname {\simpleiconsmaptwo\symbol{202}}
- \expandafter\def\csname simpleicon@canvaicon\endcsname {\simpleiconsmaptwo\symbol{203}}
- \expandafter\def\csname simpleicon@canvasicon\endcsname {\simpleiconsmaptwo\symbol{204}}
- \expandafter\def\csname simpleicon@capacitoricon\endcsname {\simpleiconsmaptwo\symbol{205}}
- \expandafter\def\csname simpleicon@cardanoicon\endcsname {\simpleiconsmaptwo\symbol{206}}
- \expandafter\def\csname simpleicon@carlsberggroupicon\endcsname {\simpleiconsmaptwo\symbol{207}}
- \expandafter\def\csname simpleicon@carrdicon\endcsname {\simpleiconsmaptwo\symbol{208}}
- \expandafter\def\csname simpleicon@carrefouricon\endcsname {\simpleiconsmaptwo\symbol{209}}
- \expandafter\def\csname simpleicon@carthrottleicon\endcsname {\simpleiconsmaptwo\symbol{210}}
- \expandafter\def\csname simpleicon@cartoicon\endcsname {\simpleiconsmaptwo\symbol{211}}
- \expandafter\def\csname simpleicon@cashappicon\endcsname {\simpleiconsmaptwo\symbol{212}}
- \expandafter\def\csname simpleicon@castboxicon\endcsname {\simpleiconsmaptwo\symbol{213}}
- \expandafter\def\csname simpleicon@castoramaicon\endcsname {\simpleiconsmaptwo\symbol{214}}
- \expandafter\def\csname simpleicon@castroicon\endcsname {\simpleiconsmaptwo\symbol{215}}
- \expandafter\def\csname simpleicon@caterpillaricon\endcsname {\simpleiconsmaptwo\symbol{216}}
- \expandafter\def\csname simpleicon@cbcicon\endcsname {\simpleiconsmaptwo\symbol{217}}
- \expandafter\def\csname simpleicon@cbsicon\endcsname {\simpleiconsmaptwo\symbol{218}}
- \expandafter\def\csname simpleicon@ccleanericon\endcsname {\simpleiconsmaptwo\symbol{219}}
- \expandafter\def\csname simpleicon@cdprojekticon\endcsname {\simpleiconsmaptwo\symbol{220}}
- \expandafter\def\csname simpleicon@celeryicon\endcsname {\simpleiconsmaptwo\symbol{221}}
- \expandafter\def\csname simpleicon@celestronicon\endcsname {\simpleiconsmaptwo\symbol{222}}
- \expandafter\def\csname simpleicon@centosicon\endcsname {\simpleiconsmaptwo\symbol{223}}
- \expandafter\def\csname simpleicon@cephicon\endcsname {\simpleiconsmaptwo\symbol{224}}
- \expandafter\def\csname simpleicon@cesiumicon\endcsname {\simpleiconsmaptwo\symbol{225}}
- \expandafter\def\csname simpleicon@chaiicon\endcsname {\simpleiconsmaptwo\symbol{226}}
- \expandafter\def\csname simpleicon@chainguardicon\endcsname {\simpleiconsmaptwo\symbol{227}}
- \expandafter\def\csname simpleicon@chainlinkicon\endcsname {\simpleiconsmaptwo\symbol{228}}
- \expandafter\def\csname simpleicon@chakrauiicon\endcsname {\simpleiconsmaptwo\symbol{229}}
- \expandafter\def\csname simpleicon@channel4icon\endcsname {\simpleiconsmaptwo\symbol{230}}
- \expandafter\def\csname simpleicon@charlesicon\endcsname {\simpleiconsmaptwo\symbol{231}}
- \expandafter\def\csname simpleicon@chartdotjsicon\endcsname {\simpleiconsmaptwo\symbol{232}}
- \expandafter\def\csname simpleicon@chartmogulicon\endcsname {\simpleiconsmaptwo\symbol{233}}
- \expandafter\def\csname simpleicon@chaseicon\endcsname {\simpleiconsmaptwo\symbol{234}}
- \expandafter\def\csname simpleicon@chatboticon\endcsname {\simpleiconsmaptwo\symbol{235}}
- \expandafter\def\csname simpleicon@chatwooticon\endcsname {\simpleiconsmaptwo\symbol{236}}
- \expandafter\def\csname simpleicon@checkioicon\endcsname {\simpleiconsmaptwo\symbol{237}}
- \expandafter\def\csname simpleicon@checkmarxicon\endcsname {\simpleiconsmaptwo\symbol{238}}
- \expandafter\def\csname simpleicon@checkmkicon\endcsname {\simpleiconsmaptwo\symbol{239}}
- \expandafter\def\csname simpleicon@chedrauiicon\endcsname {\simpleiconsmaptwo\symbol{240}}
- \expandafter\def\csname simpleicon@cheerioicon\endcsname {\simpleiconsmaptwo\symbol{241}}
- \expandafter\def\csname simpleicon@cheficon\endcsname {\simpleiconsmaptwo\symbol{242}}
- \expandafter\def\csname simpleicon@chemexicon\endcsname {\simpleiconsmaptwo\symbol{243}}
- \expandafter\def\csname simpleicon@chessdotcomicon\endcsname {\simpleiconsmaptwo\symbol{244}}
- \expandafter\def\csname simpleicon@chevroleticon\endcsname {\simpleiconsmaptwo\symbol{245}}
- \expandafter\def\csname simpleicon@chianetworkicon\endcsname {\simpleiconsmaptwo\symbol{246}}
- \expandafter\def\csname simpleicon@chinaeasternairlinesicon\endcsname {\simpleiconsmaptwo\symbol{247}}
- \expandafter\def\csname simpleicon@chinasouthernairlinesicon\endcsname {\simpleiconsmaptwo\symbol{248}}
- \expandafter\def\csname simpleicon@chocolateyicon\endcsname {\simpleiconsmaptwo\symbol{249}}
- \expandafter\def\csname simpleicon@chromaticicon\endcsname {\simpleiconsmaptwo\symbol{250}}
- \expandafter\def\csname simpleicon@chromecasticon\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@csharpicon\endcsname {\simpleiconsmapthree\symbol{144}}
- \expandafter\def\csname simpleicon@css3icon\endcsname {\simpleiconsmapthree\symbol{145}}
- \expandafter\def\csname simpleicon@cssdesignawardsicon\endcsname {\simpleiconsmapthree\symbol{146}}
- \expandafter\def\csname simpleicon@cssmodulesicon\endcsname {\simpleiconsmapthree\symbol{147}}
- \expandafter\def\csname simpleicon@csswizardryicon\endcsname {\simpleiconsmapthree\symbol{148}}
- \expandafter\def\csname simpleicon@ctsicon\endcsname {\simpleiconsmapthree\symbol{149}}
- \expandafter\def\csname simpleicon@cucumbericon\endcsname {\simpleiconsmapthree\symbol{150}}
- \expandafter\def\csname simpleicon@culturaicon\endcsname {\simpleiconsmapthree\symbol{151}}
- \expandafter\def\csname simpleicon@curlicon\endcsname {\simpleiconsmapthree\symbol{152}}
- \expandafter\def\csname simpleicon@curseforgeicon\endcsname {\simpleiconsmapthree\symbol{153}}
- \expandafter\def\csname simpleicon@custominkicon\endcsname {\simpleiconsmapthree\symbol{154}}
- \expandafter\def\csname simpleicon@cyberdefendersicon\endcsname {\simpleiconsmapthree\symbol{155}}
- \expandafter\def\csname simpleicon@cycling74icon\endcsname {\simpleiconsmapthree\symbol{156}}
- \expandafter\def\csname simpleicon@cypressicon\endcsname {\simpleiconsmapthree\symbol{157}}
- \expandafter\def\csname simpleicon@cytoscapedotjsicon\endcsname {\simpleiconsmapthree\symbol{158}}
- \expandafter\def\csname simpleicon@dicon\endcsname {\simpleiconsmapthree\symbol{159}}
- \expandafter\def\csname simpleicon@d3dotjsicon\endcsname {\simpleiconsmapthree\symbol{160}}
- \expandafter\def\csname simpleicon@daciaicon\endcsname {\simpleiconsmapthree\symbol{161}}
- \expandafter\def\csname simpleicon@daficon\endcsname {\simpleiconsmapthree\symbol{162}}
- \expandafter\def\csname simpleicon@dailydotdevicon\endcsname {\simpleiconsmapthree\symbol{163}}
- \expandafter\def\csname simpleicon@dailymotionicon\endcsname {\simpleiconsmapthree\symbol{164}}
- \expandafter\def\csname simpleicon@daimlericon\endcsname {\simpleiconsmapthree\symbol{165}}
- \expandafter\def\csname simpleicon@daisyuiicon\endcsname {\simpleiconsmapthree\symbol{166}}
- \expandafter\def\csname simpleicon@dapricon\endcsname {\simpleiconsmapthree\symbol{167}}
- \expandafter\def\csname simpleicon@darkreadericon\endcsname {\simpleiconsmapthree\symbol{168}}
- \expandafter\def\csname simpleicon@darticon\endcsname {\simpleiconsmapthree\symbol{169}}
- \expandafter\def\csname simpleicon@dartyicon\endcsname {\simpleiconsmapthree\symbol{170}}
- \expandafter\def\csname simpleicon@dasersteicon\endcsname {\simpleiconsmapthree\symbol{171}}
- \expandafter\def\csname simpleicon@dashicon\endcsname {\simpleiconsmapthree\symbol{172}}
- \expandafter\def\csname simpleicon@dashlaneicon\endcsname {\simpleiconsmapthree\symbol{173}}
- \expandafter\def\csname simpleicon@daskicon\endcsname {\simpleiconsmapthree\symbol{174}}
- \expandafter\def\csname simpleicon@dassaultsystemesicon\endcsname {\simpleiconsmapthree\symbol{175}}
- \expandafter\def\csname simpleicon@databricksicon\endcsname {\simpleiconsmapthree\symbol{176}}
- \expandafter\def\csname simpleicon@datacampicon\endcsname {\simpleiconsmapthree\symbol{177}}
- \expandafter\def\csname simpleicon@datadogicon\endcsname {\simpleiconsmapthree\symbol{178}}
- \expandafter\def\csname simpleicon@datadotaiicon\endcsname {\simpleiconsmapthree\symbol{179}}
- \expandafter\def\csname simpleicon@datagripicon\endcsname {\simpleiconsmapthree\symbol{180}}
- \expandafter\def\csname simpleicon@dataikuicon\endcsname {\simpleiconsmapthree\symbol{181}}
- \expandafter\def\csname simpleicon@datastaxicon\endcsname {\simpleiconsmapthree\symbol{182}}
- \expandafter\def\csname simpleicon@dataverseicon\endcsname {\simpleiconsmapthree\symbol{183}}
- \expandafter\def\csname simpleicon@datefnsicon\endcsname {\simpleiconsmapthree\symbol{184}}
- \expandafter\def\csname simpleicon@datevicon\endcsname {\simpleiconsmapthree\symbol{185}}
- \expandafter\def\csname simpleicon@datocmsicon\endcsname {\simpleiconsmapthree\symbol{186}}
- \expandafter\def\csname simpleicon@dattoicon\endcsname {\simpleiconsmapthree\symbol{187}}
- \expandafter\def\csname simpleicon@davinciresolveicon\endcsname {\simpleiconsmapthree\symbol{188}}
- \expandafter\def\csname simpleicon@dazhongdianpingicon\endcsname {\simpleiconsmapthree\symbol{189}}
- \expandafter\def\csname simpleicon@daznicon\endcsname {\simpleiconsmapthree\symbol{190}}
- \expandafter\def\csname simpleicon@dbeavericon\endcsname {\simpleiconsmapthree\symbol{191}}
- \expandafter\def\csname simpleicon@dblpicon\endcsname {\simpleiconsmapthree\symbol{192}}
- \expandafter\def\csname simpleicon@dbticon\endcsname {\simpleiconsmapthree\symbol{193}}
- \expandafter\def\csname simpleicon@dcentertainmenticon\endcsname {\simpleiconsmapthree\symbol{194}}
- \expandafter\def\csname simpleicon@debianicon\endcsname {\simpleiconsmapthree\symbol{195}}
- \expandafter\def\csname simpleicon@decapcmsicon\endcsname {\simpleiconsmapthree\symbol{196}}
- \expandafter\def\csname simpleicon@decentralandicon\endcsname {\simpleiconsmapthree\symbol{197}}
- \expandafter\def\csname simpleicon@dedgeicon\endcsname {\simpleiconsmapthree\symbol{198}}
- \expandafter\def\csname simpleicon@deepcoolicon\endcsname {\simpleiconsmapthree\symbol{199}}
- \expandafter\def\csname simpleicon@deepgramicon\endcsname {\simpleiconsmapthree\symbol{200}}
- \expandafter\def\csname simpleicon@deepinicon\endcsname {\simpleiconsmapthree\symbol{201}}
- \expandafter\def\csname simpleicon@deeplicon\endcsname {\simpleiconsmapthree\symbol{202}}
- \expandafter\def\csname simpleicon@deepnoteicon\endcsname {\simpleiconsmapthree\symbol{203}}
- \expandafter\def\csname simpleicon@deliciousicon\endcsname {\simpleiconsmapthree\symbol{204}}
- \expandafter\def\csname simpleicon@deliverooicon\endcsname {\simpleiconsmapthree\symbol{205}}
- \expandafter\def\csname simpleicon@dellicon\endcsname {\simpleiconsmapthree\symbol{206}}
- \expandafter\def\csname simpleicon@delonghiicon\endcsname {\simpleiconsmapthree\symbol{207}}
- \expandafter\def\csname simpleicon@delphiicon\endcsname {\simpleiconsmapthree\symbol{208}}
- \expandafter\def\csname simpleicon@deltaicon\endcsname {\simpleiconsmapthree\symbol{209}}
- \expandafter\def\csname simpleicon@delugeicon\endcsname {\simpleiconsmapthree\symbol{210}}
- \expandafter\def\csname simpleicon@denoicon\endcsname {\simpleiconsmapthree\symbol{211}}
- \expandafter\def\csname simpleicon@denonicon\endcsname {\simpleiconsmapthree\symbol{212}}
- \expandafter\def\csname simpleicon@dependaboticon\endcsname {\simpleiconsmapthree\symbol{213}}
- \expandafter\def\csname simpleicon@dependencycheckicon\endcsname {\simpleiconsmapthree\symbol{214}}
- \expandafter\def\csname simpleicon@depositphotosicon\endcsname {\simpleiconsmapthree\symbol{215}}
- \expandafter\def\csname simpleicon@derspiegelicon\endcsname {\simpleiconsmapthree\symbol{216}}
- \expandafter\def\csname simpleicon@designernewsicon\endcsname {\simpleiconsmapthree\symbol{217}}
- \expandafter\def\csname simpleicon@deutschebahnicon\endcsname {\simpleiconsmapthree\symbol{218}}
- \expandafter\def\csname simpleicon@deutschebankicon\endcsname {\simpleiconsmapthree\symbol{219}}
- \expandafter\def\csname simpleicon@deutscheposticon\endcsname {\simpleiconsmapthree\symbol{220}}
- \expandafter\def\csname simpleicon@devdottoicon\endcsname {\simpleiconsmapthree\symbol{221}}
- \expandafter\def\csname simpleicon@devexpressicon\endcsname {\simpleiconsmapthree\symbol{222}}
- \expandafter\def\csname simpleicon@deviantarticon\endcsname {\simpleiconsmapthree\symbol{223}}
- \expandafter\def\csname simpleicon@devposticon\endcsname {\simpleiconsmapthree\symbol{224}}
- \expandafter\def\csname simpleicon@devranticon\endcsname {\simpleiconsmapthree\symbol{225}}
- \expandafter\def\csname simpleicon@dgraphicon\endcsname {\simpleiconsmapthree\symbol{226}}
- \expandafter\def\csname simpleicon@dhlicon\endcsname {\simpleiconsmapthree\symbol{227}}
- \expandafter\def\csname simpleicon@diagramsdotneticon\endcsname {\simpleiconsmapthree\symbol{228}}
- \expandafter\def\csname simpleicon@dialogflowicon\endcsname {\simpleiconsmapthree\symbol{229}}
- \expandafter\def\csname simpleicon@diasporaicon\endcsname {\simpleiconsmapthree\symbol{230}}
- \expandafter\def\csname simpleicon@dictionarydotcomicon\endcsname {\simpleiconsmapthree\symbol{231}}
- \expandafter\def\csname simpleicon@diggicon\endcsname {\simpleiconsmapthree\symbol{232}}
- \expandafter\def\csname simpleicon@digikeyelectronicsicon\endcsname {\simpleiconsmapthree\symbol{233}}
- \expandafter\def\csname simpleicon@digitaloceanicon\endcsname {\simpleiconsmapthree\symbol{234}}
- \expandafter\def\csname simpleicon@dinersclubicon\endcsname {\simpleiconsmapthree\symbol{235}}
- \expandafter\def\csname simpleicon@dioricon\endcsname {\simpleiconsmapthree\symbol{236}}
- \expandafter\def\csname simpleicon@directusicon\endcsname {\simpleiconsmapthree\symbol{237}}
- \expandafter\def\csname simpleicon@discogsicon\endcsname {\simpleiconsmapthree\symbol{238}}
- \expandafter\def\csname simpleicon@discordicon\endcsname {\simpleiconsmapthree\symbol{239}}
- \expandafter\def\csname simpleicon@discourseicon\endcsname {\simpleiconsmapthree\symbol{240}}
- \expandafter\def\csname simpleicon@discovericon\endcsname {\simpleiconsmapthree\symbol{241}}
- \expandafter\def\csname simpleicon@disqusicon\endcsname {\simpleiconsmapthree\symbol{242}}
- \expandafter\def\csname simpleicon@disrooticon\endcsname {\simpleiconsmapthree\symbol{243}}
- \expandafter\def\csname simpleicon@distrokidicon\endcsname {\simpleiconsmapthree\symbol{244}}
- \expandafter\def\csname simpleicon@djangoicon\endcsname {\simpleiconsmapthree\symbol{245}}
- \expandafter\def\csname simpleicon@djiicon\endcsname {\simpleiconsmapthree\symbol{246}}
- \expandafter\def\csname simpleicon@dlibicon\endcsname {\simpleiconsmapthree\symbol{247}}
- \expandafter\def\csname simpleicon@dlnaicon\endcsname {\simpleiconsmapthree\symbol{248}}
- \expandafter\def\csname simpleicon@dmicon\endcsname {\simpleiconsmapthree\symbol{249}}
- \expandafter\def\csname simpleicon@dockericon\endcsname {\simpleiconsmapthree\symbol{250}}
- \expandafter\def\csname simpleicon@docsdotrsicon\endcsname {\simpleiconsmapthree\symbol{251}}
- \expandafter\def\csname simpleicon@docsifyicon\endcsname {\simpleiconsmapthree\symbol{252}}
- \expandafter\def\csname simpleicon@doctrineicon\endcsname {\simpleiconsmapthree\symbol{253}}
- \expandafter\def\csname simpleicon@docusaurusicon\endcsname {\simpleiconsmapthree\symbol{254}}
- \expandafter\def\csname simpleicon@docusignicon\endcsname {\simpleiconsmapthree\symbol{255}}
- \expandafter\def\csname simpleicon@dogecoinicon\endcsname {\simpleiconsmapfour\symbol{0}}
- \expandafter\def\csname simpleicon@doiicon\endcsname {\simpleiconsmapfour\symbol{1}}
- \expandafter\def\csname simpleicon@dolbyicon\endcsname {\simpleiconsmapfour\symbol{2}}
- \expandafter\def\csname simpleicon@doordashicon\endcsname {\simpleiconsmapfour\symbol{3}}
- \expandafter\def\csname simpleicon@dota2icon\endcsname {\simpleiconsmapfour\symbol{4}}
- \expandafter\def\csname simpleicon@dotenvicon\endcsname {\simpleiconsmapfour\symbol{5}}
- \expandafter\def\csname simpleicon@dotneticon\endcsname {\simpleiconsmapfour\symbol{6}}
- \expandafter\def\csname simpleicon@doubanicon\endcsname {\simpleiconsmapfour\symbol{7}}
- \expandafter\def\csname simpleicon@doubanreadicon\endcsname {\simpleiconsmapfour\symbol{8}}
- \expandafter\def\csname simpleicon@dovecoticon\endcsname {\simpleiconsmapfour\symbol{9}}
- \expandafter\def\csname simpleicon@dovetailicon\endcsname {\simpleiconsmapfour\symbol{10}}
- \expandafter\def\csname simpleicon@doxygenicon\endcsname {\simpleiconsmapfour\symbol{11}}
- \expandafter\def\csname simpleicon@dpdicon\endcsname {\simpleiconsmapfour\symbol{12}}
- \expandafter\def\csname simpleicon@dragonframeicon\endcsname {\simpleiconsmapfour\symbol{13}}
- \expandafter\def\csname simpleicon@draugiemdotlvicon\endcsname {\simpleiconsmapfour\symbol{14}}
- \expandafter\def\csname simpleicon@dreamstimeicon\endcsname {\simpleiconsmapfour\symbol{15}}
- \expandafter\def\csname simpleicon@dribbbleicon\endcsname {\simpleiconsmapfour\symbol{16}}
- \expandafter\def\csname simpleicon@drizzleicon\endcsname {\simpleiconsmapfour\symbol{17}}
- \expandafter\def\csname simpleicon@droneicon\endcsname {\simpleiconsmapfour\symbol{18}}
- \expandafter\def\csname simpleicon@droobleicon\endcsname {\simpleiconsmapfour\symbol{19}}
- \expandafter\def\csname simpleicon@dropboxicon\endcsname {\simpleiconsmapfour\symbol{20}}
- \expandafter\def\csname simpleicon@drupalicon\endcsname {\simpleiconsmapfour\symbol{21}}
- \expandafter\def\csname simpleicon@dsautomobilesicon\endcsname {\simpleiconsmapfour\symbol{22}}
- \expandafter\def\csname simpleicon@dtsicon\endcsname {\simpleiconsmapfour\symbol{23}}
- \expandafter\def\csname simpleicon@dtubeicon\endcsname {\simpleiconsmapfour\symbol{24}}
- \expandafter\def\csname simpleicon@ducatiicon\endcsname {\simpleiconsmapfour\symbol{25}}
- \expandafter\def\csname simpleicon@duckdbicon\endcsname {\simpleiconsmapfour\symbol{26}}
- \expandafter\def\csname simpleicon@duckduckgoicon\endcsname {\simpleiconsmapfour\symbol{27}}
- \expandafter\def\csname simpleicon@dungeonsanddragonsicon\endcsname {\simpleiconsmapfour\symbol{28}}
- \expandafter\def\csname simpleicon@dunkedicon\endcsname {\simpleiconsmapfour\symbol{29}}
- \expandafter\def\csname simpleicon@dunzoicon\endcsname {\simpleiconsmapfour\symbol{30}}
- \expandafter\def\csname simpleicon@duolingoicon\endcsname {\simpleiconsmapfour\symbol{31}}
- \expandafter\def\csname simpleicon@duplicatiicon\endcsname {\simpleiconsmapfour\symbol{32}}
- \expandafter\def\csname simpleicon@dvcicon\endcsname {\simpleiconsmapfour\symbol{33}}
- \expandafter\def\csname simpleicon@dwavesystemsicon\endcsname {\simpleiconsmapfour\symbol{34}}
- \expandafter\def\csname simpleicon@dwmicon\endcsname {\simpleiconsmapfour\symbol{35}}
- \expandafter\def\csname simpleicon@dynamics365icon\endcsname {\simpleiconsmapfour\symbol{36}}
- \expandafter\def\csname simpleicon@dynatraceicon\endcsname {\simpleiconsmapfour\symbol{37}}
- \expandafter\def\csname simpleicon@eicon\endcsname {\simpleiconsmapfour\symbol{38}}
- \expandafter\def\csname simpleicon@e3icon\endcsname {\simpleiconsmapfour\symbol{39}}
- \expandafter\def\csname simpleicon@eaicon\endcsname {\simpleiconsmapfour\symbol{40}}
- \expandafter\def\csname simpleicon@eagleicon\endcsname {\simpleiconsmapfour\symbol{41}}
- \expandafter\def\csname simpleicon@easyedaicon\endcsname {\simpleiconsmapfour\symbol{42}}
- \expandafter\def\csname simpleicon@easyjeticon\endcsname {\simpleiconsmapfour\symbol{43}}
- \expandafter\def\csname simpleicon@ebayicon\endcsname {\simpleiconsmapfour\symbol{44}}
- \expandafter\def\csname simpleicon@eboxicon\endcsname {\simpleiconsmapfour\symbol{45}}
- \expandafter\def\csname simpleicon@eclipseadoptiumicon\endcsname {\simpleiconsmapfour\symbol{46}}
- \expandafter\def\csname simpleicon@eclipsecheicon\endcsname {\simpleiconsmapfour\symbol{47}}
- \expandafter\def\csname simpleicon@eclipseideicon\endcsname {\simpleiconsmapfour\symbol{48}}
- \expandafter\def\csname simpleicon@eclipsejettyicon\endcsname {\simpleiconsmapfour\symbol{49}}
- \expandafter\def\csname simpleicon@eclipsemosquittoicon\endcsname {\simpleiconsmapfour\symbol{50}}
- \expandafter\def\csname simpleicon@eclipsevertdotxicon\endcsname {\simpleiconsmapfour\symbol{51}}
- \expandafter\def\csname simpleicon@ecovacsicon\endcsname {\simpleiconsmapfour\symbol{52}}
- \expandafter\def\csname simpleicon@edekaicon\endcsname {\simpleiconsmapfour\symbol{53}}
- \expandafter\def\csname simpleicon@edgeimpulseicon\endcsname {\simpleiconsmapfour\symbol{54}}
- \expandafter\def\csname simpleicon@editorconfigicon\endcsname {\simpleiconsmapfour\symbol{55}}
- \expandafter\def\csname simpleicon@edotleclercicon\endcsname {\simpleiconsmapfour\symbol{56}}
- \expandafter\def\csname simpleicon@educativeicon\endcsname {\simpleiconsmapfour\symbol{57}}
- \expandafter\def\csname simpleicon@edxicon\endcsname {\simpleiconsmapfour\symbol{58}}
- \expandafter\def\csname simpleicon@eggheadicon\endcsname {\simpleiconsmapfour\symbol{59}}
- \expandafter\def\csname simpleicon@egnyteicon\endcsname {\simpleiconsmapfour\symbol{60}}
- \expandafter\def\csname simpleicon@eighticon\endcsname {\simpleiconsmapfour\symbol{61}}
- \expandafter\def\csname simpleicon@eightsleepicon\endcsname {\simpleiconsmapfour\symbol{62}}
- \expandafter\def\csname simpleicon@ejsicon\endcsname {\simpleiconsmapfour\symbol{63}}
- \expandafter\def\csname simpleicon@elasticicon\endcsname {\simpleiconsmapfour\symbol{64}}
- \expandafter\def\csname simpleicon@elasticcloudicon\endcsname {\simpleiconsmapfour\symbol{65}}
- \expandafter\def\csname simpleicon@elasticsearchicon\endcsname {\simpleiconsmapfour\symbol{66}}
- \expandafter\def\csname simpleicon@elasticstackicon\endcsname {\simpleiconsmapfour\symbol{67}}
- \expandafter\def\csname simpleicon@elavonicon\endcsname {\simpleiconsmapfour\symbol{68}}
- \expandafter\def\csname simpleicon@electronicon\endcsname {\simpleiconsmapfour\symbol{69}}
- \expandafter\def\csname simpleicon@electronbuildericon\endcsname {\simpleiconsmapfour\symbol{70}}
- \expandafter\def\csname simpleicon@electronfiddleicon\endcsname {\simpleiconsmapfour\symbol{71}}
- \expandafter\def\csname simpleicon@elegooicon\endcsname {\simpleiconsmapfour\symbol{72}}
- \expandafter\def\csname simpleicon@elementicon\endcsname {\simpleiconsmapfour\symbol{73}}
- \expandafter\def\csname simpleicon@elementaryicon\endcsname {\simpleiconsmapfour\symbol{74}}
- \expandafter\def\csname simpleicon@elementoricon\endcsname {\simpleiconsmapfour\symbol{75}}
- \expandafter\def\csname simpleicon@eleventyicon\endcsname {\simpleiconsmapfour\symbol{76}}
- \expandafter\def\csname simpleicon@elgatoicon\endcsname {\simpleiconsmapfour\symbol{77}}
- \expandafter\def\csname simpleicon@elixiricon\endcsname {\simpleiconsmapfour\symbol{78}}
- \expandafter\def\csname simpleicon@eljuevesicon\endcsname {\simpleiconsmapfour\symbol{79}}
- \expandafter\def\csname simpleicon@elloicon\endcsname {\simpleiconsmapfour\symbol{80}}
- \expandafter\def\csname simpleicon@elmicon\endcsname {\simpleiconsmapfour\symbol{81}}
- \expandafter\def\csname simpleicon@elseviericon\endcsname {\simpleiconsmapfour\symbol{82}}
- \expandafter\def\csname simpleicon@embarcaderoicon\endcsname {\simpleiconsmapfour\symbol{83}}
- \expandafter\def\csname simpleicon@embarkicon\endcsname {\simpleiconsmapfour\symbol{84}}
- \expandafter\def\csname simpleicon@emberdotjsicon\endcsname {\simpleiconsmapfour\symbol{85}}
- \expandafter\def\csname simpleicon@embyicon\endcsname {\simpleiconsmapfour\symbol{86}}
- \expandafter\def\csname simpleicon@emiratesicon\endcsname {\simpleiconsmapfour\symbol{87}}
- \expandafter\def\csname simpleicon@emlakjeticon\endcsname {\simpleiconsmapfour\symbol{88}}
- \expandafter\def\csname simpleicon@empirekredicon\endcsname {\simpleiconsmapfour\symbol{89}}
- \expandafter\def\csname simpleicon@endeavourosicon\endcsname {\simpleiconsmapfour\symbol{90}}
- \expandafter\def\csname simpleicon@engadgeticon\endcsname {\simpleiconsmapfour\symbol{91}}
- \expandafter\def\csname simpleicon@enpassicon\endcsname {\simpleiconsmapfour\symbol{92}}
- \expandafter\def\csname simpleicon@enterprisedbicon\endcsname {\simpleiconsmapfour\symbol{93}}
- \expandafter\def\csname simpleicon@envatoicon\endcsname {\simpleiconsmapfour\symbol{94}}
- \expandafter\def\csname simpleicon@envoyproxyicon\endcsname {\simpleiconsmapfour\symbol{95}}
- \expandafter\def\csname simpleicon@epelicon\endcsname {\simpleiconsmapfour\symbol{96}}
- \expandafter\def\csname simpleicon@epicgamesicon\endcsname {\simpleiconsmapfour\symbol{97}}
- \expandafter\def\csname simpleicon@epsonicon\endcsname {\simpleiconsmapfour\symbol{98}}
- \expandafter\def\csname simpleicon@equinixmetalicon\endcsname {\simpleiconsmapfour\symbol{99}}
- \expandafter\def\csname simpleicon@erasericon\endcsname {\simpleiconsmapfour\symbol{100}}
- \expandafter\def\csname simpleicon@ericssonicon\endcsname {\simpleiconsmapfour\symbol{101}}
- \expandafter\def\csname simpleicon@erlangicon\endcsname {\simpleiconsmapfour\symbol{102}}
- \expandafter\def\csname simpleicon@erpnexticon\endcsname {\simpleiconsmapfour\symbol{103}}
- \expandafter\def\csname simpleicon@esbuildicon\endcsname {\simpleiconsmapfour\symbol{104}}
- \expandafter\def\csname simpleicon@eseaicon\endcsname {\simpleiconsmapfour\symbol{105}}
- \expandafter\def\csname simpleicon@eslgamingicon\endcsname {\simpleiconsmapfour\symbol{106}}
- \expandafter\def\csname simpleicon@eslinticon\endcsname {\simpleiconsmapfour\symbol{107}}
- \expandafter\def\csname simpleicon@esotericsoftwareicon\endcsname {\simpleiconsmapfour\symbol{108}}
- \expandafter\def\csname simpleicon@esphomeicon\endcsname {\simpleiconsmapfour\symbol{109}}
- \expandafter\def\csname simpleicon@espressificon\endcsname {\simpleiconsmapfour\symbol{110}}
- \expandafter\def\csname simpleicon@esriicon\endcsname {\simpleiconsmapfour\symbol{111}}
- \expandafter\def\csname simpleicon@etcdicon\endcsname {\simpleiconsmapfour\symbol{112}}
- \expandafter\def\csname simpleicon@ethereumicon\endcsname {\simpleiconsmapfour\symbol{113}}
- \expandafter\def\csname simpleicon@ethersicon\endcsname {\simpleiconsmapfour\symbol{114}}
- \expandafter\def\csname simpleicon@ethiopianairlinesicon\endcsname {\simpleiconsmapfour\symbol{115}}
- \expandafter\def\csname simpleicon@etihadairwaysicon\endcsname {\simpleiconsmapfour\symbol{116}}
- \expandafter\def\csname simpleicon@etsyicon\endcsname {\simpleiconsmapfour\symbol{117}}
- \expandafter\def\csname simpleicon@eventbriteicon\endcsname {\simpleiconsmapfour\symbol{118}}
- \expandafter\def\csname simpleicon@eventstoreicon\endcsname {\simpleiconsmapfour\symbol{119}}
- \expandafter\def\csname simpleicon@evernoteicon\endcsname {\simpleiconsmapfour\symbol{120}}
- \expandafter\def\csname simpleicon@excalidrawicon\endcsname {\simpleiconsmapfour\symbol{121}}
- \expandafter\def\csname simpleicon@exercismicon\endcsname {\simpleiconsmapfour\symbol{122}}
- \expandafter\def\csname simpleicon@exordoicon\endcsname {\simpleiconsmapfour\symbol{123}}
- \expandafter\def\csname simpleicon@exoscaleicon\endcsname {\simpleiconsmapfour\symbol{124}}
- \expandafter\def\csname simpleicon@expediaicon\endcsname {\simpleiconsmapfour\symbol{125}}
- \expandafter\def\csname simpleicon@expensifyicon\endcsname {\simpleiconsmapfour\symbol{126}}
- \expandafter\def\csname simpleicon@expertsexchangeicon\endcsname {\simpleiconsmapfour\symbol{127}}
- \expandafter\def\csname simpleicon@expoicon\endcsname {\simpleiconsmapfour\symbol{128}}
- \expandafter\def\csname simpleicon@expressicon\endcsname {\simpleiconsmapfour\symbol{129}}
- \expandafter\def\csname simpleicon@expressvpnicon\endcsname {\simpleiconsmapfour\symbol{130}}
- \expandafter\def\csname simpleicon@eyeemicon\endcsname {\simpleiconsmapfour\symbol{131}}
- \expandafter\def\csname simpleicon@f1icon\endcsname {\simpleiconsmapfour\symbol{132}}
- \expandafter\def\csname simpleicon@f5icon\endcsname {\simpleiconsmapfour\symbol{133}}
- \expandafter\def\csname simpleicon@facebookicon\endcsname {\simpleiconsmapfour\symbol{134}}
- \expandafter\def\csname simpleicon@facebookgamingicon\endcsname {\simpleiconsmapfour\symbol{135}}
- \expandafter\def\csname simpleicon@facebookliveicon\endcsname {\simpleiconsmapfour\symbol{136}}
- \expandafter\def\csname simpleicon@faceiticon\endcsname {\simpleiconsmapfour\symbol{137}}
- \expandafter\def\csname simpleicon@facepunchicon\endcsname {\simpleiconsmapfour\symbol{138}}
- \expandafter\def\csname simpleicon@fairphoneicon\endcsname {\simpleiconsmapfour\symbol{139}}
- \expandafter\def\csname simpleicon@falcoicon\endcsname {\simpleiconsmapfour\symbol{140}}
- \expandafter\def\csname simpleicon@falconicon\endcsname {\simpleiconsmapfour\symbol{141}}
- \expandafter\def\csname simpleicon@fampayicon\endcsname {\simpleiconsmapfour\symbol{142}}
- \expandafter\def\csname simpleicon@fandangoicon\endcsname {\simpleiconsmapfour\symbol{143}}
- \expandafter\def\csname simpleicon@fandomicon\endcsname {\simpleiconsmapfour\symbol{144}}
- \expandafter\def\csname simpleicon@fanfouicon\endcsname {\simpleiconsmapfour\symbol{145}}
- \expandafter\def\csname simpleicon@fantomicon\endcsname {\simpleiconsmapfour\symbol{146}}
- \expandafter\def\csname simpleicon@farcastericon\endcsname {\simpleiconsmapfour\symbol{147}}
- \expandafter\def\csname simpleicon@fareharboricon\endcsname {\simpleiconsmapfour\symbol{148}}
- \expandafter\def\csname simpleicon@farfetchicon\endcsname {\simpleiconsmapfour\symbol{149}}
- \expandafter\def\csname simpleicon@fastapiicon\endcsname {\simpleiconsmapfour\symbol{150}}
- \expandafter\def\csname simpleicon@fastifyicon\endcsname {\simpleiconsmapfour\symbol{151}}
- \expandafter\def\csname simpleicon@fastlaneicon\endcsname {\simpleiconsmapfour\symbol{152}}
- \expandafter\def\csname simpleicon@fastlyicon\endcsname {\simpleiconsmapfour\symbol{153}}
- \expandafter\def\csname simpleicon@fathomicon\endcsname {\simpleiconsmapfour\symbol{154}}
- \expandafter\def\csname simpleicon@faunaicon\endcsname {\simpleiconsmapfour\symbol{155}}
- \expandafter\def\csname simpleicon@favroicon\endcsname {\simpleiconsmapfour\symbol{156}}
- \expandafter\def\csname simpleicon@fdroidicon\endcsname {\simpleiconsmapfour\symbol{157}}
- \expandafter\def\csname simpleicon@feathubicon\endcsname {\simpleiconsmapfour\symbol{158}}
- \expandafter\def\csname simpleicon@fedexicon\endcsname {\simpleiconsmapfour\symbol{159}}
- \expandafter\def\csname simpleicon@fedoraicon\endcsname {\simpleiconsmapfour\symbol{160}}
- \expandafter\def\csname simpleicon@feedlyicon\endcsname {\simpleiconsmapfour\symbol{161}}
- \expandafter\def\csname simpleicon@ferrariicon\endcsname {\simpleiconsmapfour\symbol{162}}
- \expandafter\def\csname simpleicon@ferrarinvicon\endcsname {\simpleiconsmapfour\symbol{163}}
- \expandafter\def\csname simpleicon@ferretdbicon\endcsname {\simpleiconsmapfour\symbol{164}}
- \expandafter\def\csname simpleicon@ffmpegicon\endcsname {\simpleiconsmapfour\symbol{165}}
- \expandafter\def\csname simpleicon@fiicon\endcsname {\simpleiconsmapfour\symbol{166}}
- \expandafter\def\csname simpleicon@fiaticon\endcsname {\simpleiconsmapfour\symbol{167}}
- \expandafter\def\csname simpleicon@fidoallianceicon\endcsname {\simpleiconsmapfour\symbol{168}}
- \expandafter\def\csname simpleicon@fifaicon\endcsname {\simpleiconsmapfour\symbol{169}}
- \expandafter\def\csname simpleicon@figicon\endcsname {\simpleiconsmapfour\symbol{170}}
- \expandafter\def\csname simpleicon@figmaicon\endcsname {\simpleiconsmapfour\symbol{171}}
- \expandafter\def\csname simpleicon@figshareicon\endcsname {\simpleiconsmapfour\symbol{172}}
- \expandafter\def\csname simpleicon@filaicon\endcsname {\simpleiconsmapfour\symbol{173}}
- \expandafter\def\csname simpleicon@filedotioicon\endcsname {\simpleiconsmapfour\symbol{174}}
- \expandafter\def\csname simpleicon@filesicon\endcsname {\simpleiconsmapfour\symbol{175}}
- \expandafter\def\csname simpleicon@filezillaicon\endcsname {\simpleiconsmapfour\symbol{176}}
- \expandafter\def\csname simpleicon@finecoicon\endcsname {\simpleiconsmapfour\symbol{177}}
- \expandafter\def\csname simpleicon@fingicon\endcsname {\simpleiconsmapfour\symbol{178}}
- \expandafter\def\csname simpleicon@firebaseicon\endcsname {\simpleiconsmapfour\symbol{179}}
- \expandafter\def\csname simpleicon@firefishicon\endcsname {\simpleiconsmapfour\symbol{180}}
- \expandafter\def\csname simpleicon@fireflyiiiicon\endcsname {\simpleiconsmapfour\symbol{181}}
- \expandafter\def\csname simpleicon@firefoxicon\endcsname {\simpleiconsmapfour\symbol{182}}
- \expandafter\def\csname simpleicon@firefoxbrowsericon\endcsname {\simpleiconsmapfour\symbol{183}}
- \expandafter\def\csname simpleicon@fireshipicon\endcsname {\simpleiconsmapfour\symbol{184}}
- \expandafter\def\csname simpleicon@firewallaicon\endcsname {\simpleiconsmapfour\symbol{185}}
- \expandafter\def\csname simpleicon@firsticon\endcsname {\simpleiconsmapfour\symbol{186}}
- \expandafter\def\csname simpleicon@fishshellicon\endcsname {\simpleiconsmapfour\symbol{187}}
- \expandafter\def\csname simpleicon@fitbiticon\endcsname {\simpleiconsmapfour\symbol{188}}
- \expandafter\def\csname simpleicon@fivemicon\endcsname {\simpleiconsmapfour\symbol{189}}
- \expandafter\def\csname simpleicon@fiverricon\endcsname {\simpleiconsmapfour\symbol{190}}
- \expandafter\def\csname simpleicon@fizzicon\endcsname {\simpleiconsmapfour\symbol{191}}
- \expandafter\def\csname simpleicon@flashforgeicon\endcsname {\simpleiconsmapfour\symbol{192}}
- \expandafter\def\csname simpleicon@flaskicon\endcsname {\simpleiconsmapfour\symbol{193}}
- \expandafter\def\csname simpleicon@flaticon\endcsname {\simpleiconsmapfour\symbol{194}}
- \expandafter\def\csname simpleicon@flathubicon\endcsname {\simpleiconsmapfour\symbol{195}}
- \expandafter\def\csname simpleicon@flatpakicon\endcsname {\simpleiconsmapfour\symbol{196}}
- \expandafter\def\csname simpleicon@flickricon\endcsname {\simpleiconsmapfour\symbol{197}}
- \expandafter\def\csname simpleicon@flightawareicon\endcsname {\simpleiconsmapfour\symbol{198}}
- \expandafter\def\csname simpleicon@flipboardicon\endcsname {\simpleiconsmapfour\symbol{199}}
- \expandafter\def\csname simpleicon@flipkarticon\endcsname {\simpleiconsmapfour\symbol{200}}
- \expandafter\def\csname simpleicon@floatplaneicon\endcsname {\simpleiconsmapfour\symbol{201}}
- \expandafter\def\csname simpleicon@floodicon\endcsname {\simpleiconsmapfour\symbol{202}}
- \expandafter\def\csname simpleicon@fluentbiticon\endcsname {\simpleiconsmapfour\symbol{203}}
- \expandafter\def\csname simpleicon@fluentdicon\endcsname {\simpleiconsmapfour\symbol{204}}
- \expandafter\def\csname simpleicon@flukeicon\endcsname {\simpleiconsmapfour\symbol{205}}
- \expandafter\def\csname simpleicon@fluttericon\endcsname {\simpleiconsmapfour\symbol{206}}
- \expandafter\def\csname simpleicon@fluxicon\endcsname {\simpleiconsmapfour\symbol{207}}
- \expandafter\def\csname simpleicon@fluxusicon\endcsname {\simpleiconsmapfour\symbol{208}}
- \expandafter\def\csname simpleicon@flywayicon\endcsname {\simpleiconsmapfour\symbol{209}}
- \expandafter\def\csname simpleicon@fmodicon\endcsname {\simpleiconsmapfour\symbol{210}}
- \expandafter\def\csname simpleicon@fnacicon\endcsname {\simpleiconsmapfour\symbol{211}}
- \expandafter\def\csname simpleicon@foliumicon\endcsname {\simpleiconsmapfour\symbol{212}}
- \expandafter\def\csname simpleicon@fonomaicon\endcsname {\simpleiconsmapfour\symbol{213}}
- \expandafter\def\csname simpleicon@fontawesomeicon\endcsname {\simpleiconsmapfour\symbol{214}}
- \expandafter\def\csname simpleicon@fontbaseicon\endcsname {\simpleiconsmapfour\symbol{215}}
- \expandafter\def\csname simpleicon@fontforgeicon\endcsname {\simpleiconsmapfour\symbol{216}}
- \expandafter\def\csname simpleicon@foobar2000icon\endcsname {\simpleiconsmapfour\symbol{217}}
- \expandafter\def\csname simpleicon@foodpandaicon\endcsname {\simpleiconsmapfour\symbol{218}}
- \expandafter\def\csname simpleicon@fordicon\endcsname {\simpleiconsmapfour\symbol{219}}
- \expandafter\def\csname simpleicon@forgejoicon\endcsname {\simpleiconsmapfour\symbol{220}}
- \expandafter\def\csname simpleicon@formikicon\endcsname {\simpleiconsmapfour\symbol{221}}
- \expandafter\def\csname simpleicon@formspreeicon\endcsname {\simpleiconsmapfour\symbol{222}}
- \expandafter\def\csname simpleicon@formstackicon\endcsname {\simpleiconsmapfour\symbol{223}}
- \expandafter\def\csname simpleicon@fortineticon\endcsname {\simpleiconsmapfour\symbol{224}}
- \expandafter\def\csname simpleicon@fortranicon\endcsname {\simpleiconsmapfour\symbol{225}}
- \expandafter\def\csname simpleicon@fossaicon\endcsname {\simpleiconsmapfour\symbol{226}}
- \expandafter\def\csname simpleicon@fossilscmicon\endcsname {\simpleiconsmapfour\symbol{227}}
- \expandafter\def\csname simpleicon@foundryvirtualtabletopicon\endcsname {\simpleiconsmapfour\symbol{228}}
- \expandafter\def\csname simpleicon@foursquareicon\endcsname {\simpleiconsmapfour\symbol{229}}
- \expandafter\def\csname simpleicon@foursquarecityguideicon\endcsname {\simpleiconsmapfour\symbol{230}}
- \expandafter\def\csname simpleicon@foxicon\endcsname {\simpleiconsmapfour\symbol{231}}
- \expandafter\def\csname simpleicon@foxtelicon\endcsname {\simpleiconsmapfour\symbol{232}}
- \expandafter\def\csname simpleicon@fozzyicon\endcsname {\simpleiconsmapfour\symbol{233}}
- \expandafter\def\csname simpleicon@framericon\endcsname {\simpleiconsmapfour\symbol{234}}
- \expandafter\def\csname simpleicon@frameworkicon\endcsname {\simpleiconsmapfour\symbol{235}}
- \expandafter\def\csname simpleicon@framework7icon\endcsname {\simpleiconsmapfour\symbol{236}}
- \expandafter\def\csname simpleicon@franprixicon\endcsname {\simpleiconsmapfour\symbol{237}}
- \expandafter\def\csname simpleicon@frappeicon\endcsname {\simpleiconsmapfour\symbol{238}}
- \expandafter\def\csname simpleicon@fraunhofergesellschafticon\endcsname {\simpleiconsmapfour\symbol{239}}
- \expandafter\def\csname simpleicon@freebsdicon\endcsname {\simpleiconsmapfour\symbol{240}}
- \expandafter\def\csname simpleicon@freecadicon\endcsname {\simpleiconsmapfour\symbol{241}}
- \expandafter\def\csname simpleicon@freecodecampicon\endcsname {\simpleiconsmapfour\symbol{242}}
- \expandafter\def\csname simpleicon@freedesktopdotorgicon\endcsname {\simpleiconsmapfour\symbol{243}}
- \expandafter\def\csname simpleicon@freelancericon\endcsname {\simpleiconsmapfour\symbol{244}}
- \expandafter\def\csname simpleicon@freelancermapicon\endcsname {\simpleiconsmapfour\symbol{245}}
- \expandafter\def\csname simpleicon@freenasicon\endcsname {\simpleiconsmapfour\symbol{246}}
- \expandafter\def\csname simpleicon@freepikicon\endcsname {\simpleiconsmapfour\symbol{247}}
- \expandafter\def\csname simpleicon@frontendmentoricon\endcsname {\simpleiconsmapfour\symbol{248}}
- \expandafter\def\csname simpleicon@frontifyicon\endcsname {\simpleiconsmapfour\symbol{249}}
- \expandafter\def\csname simpleicon@fsecureicon\endcsname {\simpleiconsmapfour\symbol{250}}
- \expandafter\def\csname simpleicon@fsharpicon\endcsname {\simpleiconsmapfour\symbol{251}}
- \expandafter\def\csname simpleicon@fuboicon\endcsname {\simpleiconsmapfour\symbol{252}}
- \expandafter\def\csname simpleicon@fuelericon\endcsname {\simpleiconsmapfour\symbol{253}}
- \expandafter\def\csname simpleicon@fugacloudicon\endcsname {\simpleiconsmapfour\symbol{254}}
- \expandafter\def\csname simpleicon@fujifilmicon\endcsname {\simpleiconsmapfour\symbol{255}}
- \expandafter\def\csname simpleicon@fujitsuicon\endcsname {\simpleiconsmapfive\symbol{0}}
- \expandafter\def\csname simpleicon@funimationicon\endcsname {\simpleiconsmapfive\symbol{1}}
- \expandafter\def\csname simpleicon@furaffinityicon\endcsname {\simpleiconsmapfive\symbol{2}}
- \expandafter\def\csname simpleicon@furrynetworkicon\endcsname {\simpleiconsmapfive\symbol{3}}
- \expandafter\def\csname simpleicon@fusionauthicon\endcsname {\simpleiconsmapfive\symbol{4}}
- \expandafter\def\csname simpleicon@futurelearnicon\endcsname {\simpleiconsmapfive\symbol{5}}
- \expandafter\def\csname simpleicon@g2icon\endcsname {\simpleiconsmapfive\symbol{6}}
- \expandafter\def\csname simpleicon@g2aicon\endcsname {\simpleiconsmapfive\symbol{7}}
- \expandafter\def\csname simpleicon@g2gicon\endcsname {\simpleiconsmapfive\symbol{8}}
- \expandafter\def\csname simpleicon@galaxusicon\endcsname {\simpleiconsmapfive\symbol{9}}
- \expandafter\def\csname simpleicon@gameandwatchicon\endcsname {\simpleiconsmapfive\symbol{10}}
- \expandafter\def\csname simpleicon@gamebananaicon\endcsname {\simpleiconsmapfive\symbol{11}}
- \expandafter\def\csname simpleicon@gamedevelopericon\endcsname {\simpleiconsmapfive\symbol{12}}
- \expandafter\def\csname simpleicon@gamejolticon\endcsname {\simpleiconsmapfive\symbol{13}}
- \expandafter\def\csname simpleicon@gamelofticon\endcsname {\simpleiconsmapfive\symbol{14}}
- \expandafter\def\csname simpleicon@gamemakericon\endcsname {\simpleiconsmapfive\symbol{15}}
- \expandafter\def\csname simpleicon@garminicon\endcsname {\simpleiconsmapfive\symbol{16}}
- \expandafter\def\csname simpleicon@gatlingicon\endcsname {\simpleiconsmapfive\symbol{17}}
- \expandafter\def\csname simpleicon@gatsbyicon\endcsname {\simpleiconsmapfive\symbol{18}}
- \expandafter\def\csname simpleicon@gcoreicon\endcsname {\simpleiconsmapfive\symbol{19}}
- \expandafter\def\csname simpleicon@gdalicon\endcsname {\simpleiconsmapfive\symbol{20}}
- \expandafter\def\csname simpleicon@geanticon\endcsname {\simpleiconsmapfive\symbol{21}}
- \expandafter\def\csname simpleicon@geeksforgeeksicon\endcsname {\simpleiconsmapfive\symbol{22}}
- \expandafter\def\csname simpleicon@generalelectricicon\endcsname {\simpleiconsmapfive\symbol{23}}
- \expandafter\def\csname simpleicon@generalmotorsicon\endcsname {\simpleiconsmapfive\symbol{24}}
- \expandafter\def\csname simpleicon@geniusicon\endcsname {\simpleiconsmapfive\symbol{25}}
- \expandafter\def\csname simpleicon@gentooicon\endcsname {\simpleiconsmapfive\symbol{26}}
- \expandafter\def\csname simpleicon@geocachingicon\endcsname {\simpleiconsmapfive\symbol{27}}
- \expandafter\def\csname simpleicon@geodeicon\endcsname {\simpleiconsmapfive\symbol{28}}
- \expandafter\def\csname simpleicon@geopandasicon\endcsname {\simpleiconsmapfive\symbol{29}}
- \expandafter\def\csname simpleicon@gerriticon\endcsname {\simpleiconsmapfive\symbol{30}}
- \expandafter\def\csname simpleicon@getxicon\endcsname {\simpleiconsmapfive\symbol{31}}
- \expandafter\def\csname simpleicon@ghosticon\endcsname {\simpleiconsmapfive\symbol{32}}
- \expandafter\def\csname simpleicon@ghosteryicon\endcsname {\simpleiconsmapfive\symbol{33}}
- \expandafter\def\csname simpleicon@gimpicon\endcsname {\simpleiconsmapfive\symbol{34}}
- \expandafter\def\csname simpleicon@ginicon\endcsname {\simpleiconsmapfive\symbol{35}}
- \expandafter\def\csname simpleicon@giphyicon\endcsname {\simpleiconsmapfive\symbol{36}}
- \expandafter\def\csname simpleicon@giticon\endcsname {\simpleiconsmapfive\symbol{37}}
- \expandafter\def\csname simpleicon@gitbookicon\endcsname {\simpleiconsmapfive\symbol{38}}
- \expandafter\def\csname simpleicon@gitconnectedicon\endcsname {\simpleiconsmapfive\symbol{39}}
- \expandafter\def\csname simpleicon@giteaicon\endcsname {\simpleiconsmapfive\symbol{40}}
- \expandafter\def\csname simpleicon@giteeicon\endcsname {\simpleiconsmapfive\symbol{41}}
- \expandafter\def\csname simpleicon@gitextensionsicon\endcsname {\simpleiconsmapfive\symbol{42}}
- \expandafter\def\csname simpleicon@githubicon\endcsname {\simpleiconsmapfive\symbol{43}}
- \expandafter\def\csname simpleicon@githubactionsicon\endcsname {\simpleiconsmapfive\symbol{44}}
- \expandafter\def\csname simpleicon@githubcopiloticon\endcsname {\simpleiconsmapfive\symbol{45}}
- \expandafter\def\csname simpleicon@githubpagesicon\endcsname {\simpleiconsmapfive\symbol{46}}
- \expandafter\def\csname simpleicon@githubsponsorsicon\endcsname {\simpleiconsmapfive\symbol{47}}
- \expandafter\def\csname simpleicon@gitignoredotioicon\endcsname {\simpleiconsmapfive\symbol{48}}
- \expandafter\def\csname simpleicon@gitkrakenicon\endcsname {\simpleiconsmapfive\symbol{49}}
- \expandafter\def\csname simpleicon@gitlabicon\endcsname {\simpleiconsmapfive\symbol{50}}
- \expandafter\def\csname simpleicon@gitlfsicon\endcsname {\simpleiconsmapfive\symbol{51}}
- \expandafter\def\csname simpleicon@gitpodicon\endcsname {\simpleiconsmapfive\symbol{52}}
- \expandafter\def\csname simpleicon@gittericon\endcsname {\simpleiconsmapfive\symbol{53}}
- \expandafter\def\csname simpleicon@glassdooricon\endcsname {\simpleiconsmapfive\symbol{54}}
- \expandafter\def\csname simpleicon@glideicon\endcsname {\simpleiconsmapfive\symbol{55}}
- \expandafter\def\csname simpleicon@glitchicon\endcsname {\simpleiconsmapfive\symbol{56}}
- \expandafter\def\csname simpleicon@globusicon\endcsname {\simpleiconsmapfive\symbol{57}}
- \expandafter\def\csname simpleicon@glovoicon\endcsname {\simpleiconsmapfive\symbol{58}}
- \expandafter\def\csname simpleicon@gmailicon\endcsname {\simpleiconsmapfive\symbol{59}}
- \expandafter\def\csname simpleicon@gnomeicon\endcsname {\simpleiconsmapfive\symbol{60}}
- \expandafter\def\csname simpleicon@gnometerminalicon\endcsname {\simpleiconsmapfive\symbol{61}}
- \expandafter\def\csname simpleicon@gnuicon\endcsname {\simpleiconsmapfive\symbol{62}}
- \expandafter\def\csname simpleicon@gnubashicon\endcsname {\simpleiconsmapfive\symbol{63}}
- \expandafter\def\csname simpleicon@gnuemacsicon\endcsname {\simpleiconsmapfive\symbol{64}}
- \expandafter\def\csname simpleicon@gnuicecaticon\endcsname {\simpleiconsmapfive\symbol{65}}
- \expandafter\def\csname simpleicon@gnuprivacyguardicon\endcsname {\simpleiconsmapfive\symbol{66}}
- \expandafter\def\csname simpleicon@gnusocialicon\endcsname {\simpleiconsmapfive\symbol{67}}
- \expandafter\def\csname simpleicon@goicon\endcsname {\simpleiconsmapfive\symbol{68}}
- \expandafter\def\csname simpleicon@gocdicon\endcsname {\simpleiconsmapfive\symbol{69}}
- \expandafter\def\csname simpleicon@godaddyicon\endcsname {\simpleiconsmapfive\symbol{70}}
- \expandafter\def\csname simpleicon@godotengineicon\endcsname {\simpleiconsmapfive\symbol{71}}
- \expandafter\def\csname simpleicon@gofundmeicon\endcsname {\simpleiconsmapfive\symbol{72}}
- \expandafter\def\csname simpleicon@gogdotcomicon\endcsname {\simpleiconsmapfive\symbol{73}}
- \expandafter\def\csname simpleicon@gojekicon\endcsname {\simpleiconsmapfive\symbol{74}}
- \expandafter\def\csname simpleicon@golandicon\endcsname {\simpleiconsmapfive\symbol{75}}
- \expandafter\def\csname simpleicon@goldenlineicon\endcsname {\simpleiconsmapfive\symbol{76}}
- \expandafter\def\csname simpleicon@goldmansachsicon\endcsname {\simpleiconsmapfive\symbol{77}}
- \expandafter\def\csname simpleicon@goodreadsicon\endcsname {\simpleiconsmapfive\symbol{78}}
- \expandafter\def\csname simpleicon@googleicon\endcsname {\simpleiconsmapfive\symbol{79}}
- \expandafter\def\csname simpleicon@googleadmobicon\endcsname {\simpleiconsmapfive\symbol{80}}
- \expandafter\def\csname simpleicon@googleadsicon\endcsname {\simpleiconsmapfive\symbol{81}}
- \expandafter\def\csname simpleicon@googleadsenseicon\endcsname {\simpleiconsmapfive\symbol{82}}
- \expandafter\def\csname simpleicon@googleanalyticsicon\endcsname {\simpleiconsmapfive\symbol{83}}
- \expandafter\def\csname simpleicon@googleappsscripticon\endcsname {\simpleiconsmapfive\symbol{84}}
- \expandafter\def\csname simpleicon@googleassistanticon\endcsname {\simpleiconsmapfive\symbol{85}}
- \expandafter\def\csname simpleicon@googleauthenticatoricon\endcsname {\simpleiconsmapfive\symbol{86}}
- \expandafter\def\csname simpleicon@googlebigqueryicon\endcsname {\simpleiconsmapfive\symbol{87}}
- \expandafter\def\csname simpleicon@googlebigtableicon\endcsname {\simpleiconsmapfive\symbol{88}}
- \expandafter\def\csname simpleicon@googlecalendaricon\endcsname {\simpleiconsmapfive\symbol{89}}
- \expandafter\def\csname simpleicon@googlecampaignmanager360icon\endcsname {\simpleiconsmapfive\symbol{90}}
- \expandafter\def\csname simpleicon@googlecardboardicon\endcsname {\simpleiconsmapfive\symbol{91}}
- \expandafter\def\csname simpleicon@googlechaticon\endcsname {\simpleiconsmapfive\symbol{92}}
- \expandafter\def\csname simpleicon@googlechromeicon\endcsname {\simpleiconsmapfive\symbol{93}}
- \expandafter\def\csname simpleicon@googlechronicleicon\endcsname {\simpleiconsmapfive\symbol{94}}
- \expandafter\def\csname simpleicon@googleclassroomicon\endcsname {\simpleiconsmapfive\symbol{95}}
- \expandafter\def\csname simpleicon@googlecloudicon\endcsname {\simpleiconsmapfive\symbol{96}}
- \expandafter\def\csname simpleicon@googlecloudcomposericon\endcsname {\simpleiconsmapfive\symbol{97}}
- \expandafter\def\csname simpleicon@googlecloudspannericon\endcsname {\simpleiconsmapfive\symbol{98}}
- \expandafter\def\csname simpleicon@googlecloudstorageicon\endcsname {\simpleiconsmapfive\symbol{99}}
- \expandafter\def\csname simpleicon@googlecolabicon\endcsname {\simpleiconsmapfive\symbol{100}}
- \expandafter\def\csname simpleicon@googlecontaineroptimizedosicon\endcsname {\simpleiconsmapfive\symbol{101}}
- \expandafter\def\csname simpleicon@googledataflowicon\endcsname {\simpleiconsmapfive\symbol{102}}
- \expandafter\def\csname simpleicon@googledataprocicon\endcsname {\simpleiconsmapfive\symbol{103}}
- \expandafter\def\csname simpleicon@googledatastudioicon\endcsname {\simpleiconsmapfive\symbol{104}}
- \expandafter\def\csname simpleicon@googledisplayandvideo360icon\endcsname {\simpleiconsmapfive\symbol{105}}
- \expandafter\def\csname simpleicon@googledocsicon\endcsname {\simpleiconsmapfive\symbol{106}}
- \expandafter\def\csname simpleicon@googledomainsicon\endcsname {\simpleiconsmapfive\symbol{107}}
- \expandafter\def\csname simpleicon@googledriveicon\endcsname {\simpleiconsmapfive\symbol{108}}
- \expandafter\def\csname simpleicon@googleearthicon\endcsname {\simpleiconsmapfive\symbol{109}}
- \expandafter\def\csname simpleicon@googleearthengineicon\endcsname {\simpleiconsmapfive\symbol{110}}
- \expandafter\def\csname simpleicon@googlefiticon\endcsname {\simpleiconsmapfive\symbol{111}}
- \expandafter\def\csname simpleicon@googlefontsicon\endcsname {\simpleiconsmapfive\symbol{112}}
- \expandafter\def\csname simpleicon@googleformsicon\endcsname {\simpleiconsmapfive\symbol{113}}
- \expandafter\def\csname simpleicon@googlegeminiicon\endcsname {\simpleiconsmapfive\symbol{114}}
- \expandafter\def\csname simpleicon@googlehangoutsicon\endcsname {\simpleiconsmapfive\symbol{115}}
- \expandafter\def\csname simpleicon@googlehomeicon\endcsname {\simpleiconsmapfive\symbol{116}}
- \expandafter\def\csname simpleicon@googlekeepicon\endcsname {\simpleiconsmapfive\symbol{117}}
- \expandafter\def\csname simpleicon@googlelensicon\endcsname {\simpleiconsmapfive\symbol{118}}
- \expandafter\def\csname simpleicon@googlemapsicon\endcsname {\simpleiconsmapfive\symbol{119}}
- \expandafter\def\csname simpleicon@googlemarketingplatformicon\endcsname {\simpleiconsmapfive\symbol{120}}
- \expandafter\def\csname simpleicon@googlemeeticon\endcsname {\simpleiconsmapfive\symbol{121}}
- \expandafter\def\csname simpleicon@googlemessagesicon\endcsname {\simpleiconsmapfive\symbol{122}}
- \expandafter\def\csname simpleicon@googlemybusinessicon\endcsname {\simpleiconsmapfive\symbol{123}}
- \expandafter\def\csname simpleicon@googlenearbyicon\endcsname {\simpleiconsmapfive\symbol{124}}
- \expandafter\def\csname simpleicon@googlenewsicon\endcsname {\simpleiconsmapfive\symbol{125}}
- \expandafter\def\csname simpleicon@googleoptimizeicon\endcsname {\simpleiconsmapfive\symbol{126}}
- \expandafter\def\csname simpleicon@googlepayicon\endcsname {\simpleiconsmapfive\symbol{127}}
- \expandafter\def\csname simpleicon@googlephotosicon\endcsname {\simpleiconsmapfive\symbol{128}}
- \expandafter\def\csname simpleicon@googleplayicon\endcsname {\simpleiconsmapfive\symbol{129}}
- \expandafter\def\csname simpleicon@googlepodcastsicon\endcsname {\simpleiconsmapfive\symbol{130}}
- \expandafter\def\csname simpleicon@googlepubsubicon\endcsname {\simpleiconsmapfive\symbol{131}}
- \expandafter\def\csname simpleicon@googlescholaricon\endcsname {\simpleiconsmapfive\symbol{132}}
- \expandafter\def\csname simpleicon@googlesearchconsoleicon\endcsname {\simpleiconsmapfive\symbol{133}}
- \expandafter\def\csname simpleicon@googlesheetsicon\endcsname {\simpleiconsmapfive\symbol{134}}
- \expandafter\def\csname simpleicon@googleslidesicon\endcsname {\simpleiconsmapfive\symbol{135}}
- \expandafter\def\csname simpleicon@googlestreetviewicon\endcsname {\simpleiconsmapfive\symbol{136}}
- \expandafter\def\csname simpleicon@googletagmanagericon\endcsname {\simpleiconsmapfive\symbol{137}}
- \expandafter\def\csname simpleicon@googletasksicon\endcsname {\simpleiconsmapfive\symbol{138}}
- \expandafter\def\csname simpleicon@googletranslateicon\endcsname {\simpleiconsmapfive\symbol{139}}
- \expandafter\def\csname simpleicon@gotomeetingicon\endcsname {\simpleiconsmapfive\symbol{140}}
- \expandafter\def\csname simpleicon@grabicon\endcsname {\simpleiconsmapfive\symbol{141}}
- \expandafter\def\csname simpleicon@gradleicon\endcsname {\simpleiconsmapfive\symbol{142}}
- \expandafter\def\csname simpleicon@gradleplaypublishericon\endcsname {\simpleiconsmapfive\symbol{143}}
- \expandafter\def\csname simpleicon@grafanaicon\endcsname {\simpleiconsmapfive\symbol{144}}
- \expandafter\def\csname simpleicon@grammarlyicon\endcsname {\simpleiconsmapfive\symbol{145}}
- \expandafter\def\csname simpleicon@grandfraisicon\endcsname {\simpleiconsmapfive\symbol{146}}
- \expandafter\def\csname simpleicon@grapheneosicon\endcsname {\simpleiconsmapfive\symbol{147}}
- \expandafter\def\csname simpleicon@graphiteicon\endcsname {\simpleiconsmapfive\symbol{148}}
- \expandafter\def\csname simpleicon@graphqlicon\endcsname {\simpleiconsmapfive\symbol{149}}
- \expandafter\def\csname simpleicon@gravicon\endcsname {\simpleiconsmapfive\symbol{150}}
- \expandafter\def\csname simpleicon@gravataricon\endcsname {\simpleiconsmapfive\symbol{151}}
- \expandafter\def\csname simpleicon@graylogicon\endcsname {\simpleiconsmapfive\symbol{152}}
- \expandafter\def\csname simpleicon@greasyforkicon\endcsname {\simpleiconsmapfive\symbol{153}}
- \expandafter\def\csname simpleicon@greatlearningicon\endcsname {\simpleiconsmapfive\symbol{154}}
- \expandafter\def\csname simpleicon@greenhouseicon\endcsname {\simpleiconsmapfive\symbol{155}}
- \expandafter\def\csname simpleicon@greensockicon\endcsname {\simpleiconsmapfive\symbol{156}}
- \expandafter\def\csname simpleicon@griddotaiicon\endcsname {\simpleiconsmapfive\symbol{157}}
- \expandafter\def\csname simpleicon@gridsomeicon\endcsname {\simpleiconsmapfive\symbol{158}}
- \expandafter\def\csname simpleicon@groupmeicon\endcsname {\simpleiconsmapfive\symbol{159}}
- \expandafter\def\csname simpleicon@grouponicon\endcsname {\simpleiconsmapfive\symbol{160}}
- \expandafter\def\csname simpleicon@grubhubicon\endcsname {\simpleiconsmapfive\symbol{161}}
- \expandafter\def\csname simpleicon@grunticon\endcsname {\simpleiconsmapfive\symbol{162}}
- \expandafter\def\csname simpleicon@gskicon\endcsname {\simpleiconsmapfive\symbol{163}}
- \expandafter\def\csname simpleicon@gsmarenadotcomicon\endcsname {\simpleiconsmapfive\symbol{164}}
- \expandafter\def\csname simpleicon@gstreamericon\endcsname {\simpleiconsmapfive\symbol{165}}
- \expandafter\def\csname simpleicon@gtkicon\endcsname {\simpleiconsmapfive\symbol{166}}
- \expandafter\def\csname simpleicon@guangzhoumetroicon\endcsname {\simpleiconsmapfive\symbol{167}}
- \expandafter\def\csname simpleicon@guildedicon\endcsname {\simpleiconsmapfive\symbol{168}}
- \expandafter\def\csname simpleicon@gulpicon\endcsname {\simpleiconsmapfive\symbol{169}}
- \expandafter\def\csname simpleicon@gumroadicon\endcsname {\simpleiconsmapfive\symbol{170}}
- \expandafter\def\csname simpleicon@gumtreeicon\endcsname {\simpleiconsmapfive\symbol{171}}
- \expandafter\def\csname simpleicon@gunicornicon\endcsname {\simpleiconsmapfive\symbol{172}}
- \expandafter\def\csname simpleicon@gurobiicon\endcsname {\simpleiconsmapfive\symbol{173}}
- \expandafter\def\csname simpleicon@gutenbergicon\endcsname {\simpleiconsmapfive\symbol{174}}
- \expandafter\def\csname simpleicon@h3icon\endcsname {\simpleiconsmapfive\symbol{175}}
- \expandafter\def\csname simpleicon@habricon\endcsname {\simpleiconsmapfive\symbol{176}}
- \expandafter\def\csname simpleicon@hackadayicon\endcsname {\simpleiconsmapfive\symbol{177}}
- \expandafter\def\csname simpleicon@hackclubicon\endcsname {\simpleiconsmapfive\symbol{178}}
- \expandafter\def\csname simpleicon@hackerearthicon\endcsname {\simpleiconsmapfive\symbol{179}}
- \expandafter\def\csname simpleicon@hackernoonicon\endcsname {\simpleiconsmapfive\symbol{180}}
- \expandafter\def\csname simpleicon@hackeroneicon\endcsname {\simpleiconsmapfive\symbol{181}}
- \expandafter\def\csname simpleicon@hackerrankicon\endcsname {\simpleiconsmapfive\symbol{182}}
- \expandafter\def\csname simpleicon@hackstericon\endcsname {\simpleiconsmapfive\symbol{183}}
- \expandafter\def\csname simpleicon@hacktheboxicon\endcsname {\simpleiconsmapfive\symbol{184}}
- \expandafter\def\csname simpleicon@halicon\endcsname {\simpleiconsmapfive\symbol{185}}
- \expandafter\def\csname simpleicon@handlebarsdotjsicon\endcsname {\simpleiconsmapfive\symbol{186}}
- \expandafter\def\csname simpleicon@handmicon\endcsname {\simpleiconsmapfive\symbol{187}}
- \expandafter\def\csname simpleicon@handshakeicon\endcsname {\simpleiconsmapfive\symbol{188}}
- \expandafter\def\csname simpleicon@handshakeprotocolicon\endcsname {\simpleiconsmapfive\symbol{189}}
- \expandafter\def\csname simpleicon@happycowicon\endcsname {\simpleiconsmapfive\symbol{190}}
- \expandafter\def\csname simpleicon@harboricon\endcsname {\simpleiconsmapfive\symbol{191}}
- \expandafter\def\csname simpleicon@harmonyosicon\endcsname {\simpleiconsmapfive\symbol{192}}
- \expandafter\def\csname simpleicon@hashicorpicon\endcsname {\simpleiconsmapfive\symbol{193}}
- \expandafter\def\csname simpleicon@hashnodeicon\endcsname {\simpleiconsmapfive\symbol{194}}
- \expandafter\def\csname simpleicon@haskellicon\endcsname {\simpleiconsmapfive\symbol{195}}
- \expandafter\def\csname simpleicon@hasuraicon\endcsname {\simpleiconsmapfive\symbol{196}}
- \expandafter\def\csname simpleicon@hatenabookmarkicon\endcsname {\simpleiconsmapfive\symbol{197}}
- \expandafter\def\csname simpleicon@haveibeenpwnedicon\endcsname {\simpleiconsmapfive\symbol{198}}
- \expandafter\def\csname simpleicon@haxeicon\endcsname {\simpleiconsmapfive\symbol{199}}
- \expandafter\def\csname simpleicon@hboicon\endcsname {\simpleiconsmapfive\symbol{200}}
- \expandafter\def\csname simpleicon@hclicon\endcsname {\simpleiconsmapfive\symbol{201}}
- \expandafter\def\csname simpleicon@hdfcbankicon\endcsname {\simpleiconsmapfive\symbol{202}}
- \expandafter\def\csname simpleicon@headlessuiicon\endcsname {\simpleiconsmapfive\symbol{203}}
- \expandafter\def\csname simpleicon@headphonezoneicon\endcsname {\simpleiconsmapfive\symbol{204}}
- \expandafter\def\csname simpleicon@headspaceicon\endcsname {\simpleiconsmapfive\symbol{205}}
- \expandafter\def\csname simpleicon@hearthicon\endcsname {\simpleiconsmapfive\symbol{206}}
- \expandafter\def\csname simpleicon@hearthisdotaticon\endcsname {\simpleiconsmapfive\symbol{207}}
- \expandafter\def\csname simpleicon@hederaicon\endcsname {\simpleiconsmapfive\symbol{208}}
- \expandafter\def\csname simpleicon@heliumicon\endcsname {\simpleiconsmapfive\symbol{209}}
- \expandafter\def\csname simpleicon@hellofreshicon\endcsname {\simpleiconsmapfive\symbol{210}}
- \expandafter\def\csname simpleicon@hellyhansenicon\endcsname {\simpleiconsmapfive\symbol{211}}
- \expandafter\def\csname simpleicon@helmicon\endcsname {\simpleiconsmapfive\symbol{212}}
- \expandafter\def\csname simpleicon@helpdeskicon\endcsname {\simpleiconsmapfive\symbol{213}}
- \expandafter\def\csname simpleicon@helpscouticon\endcsname {\simpleiconsmapfive\symbol{214}}
- \expandafter\def\csname simpleicon@hepsiemlakicon\endcsname {\simpleiconsmapfive\symbol{215}}
- \expandafter\def\csname simpleicon@hereicon\endcsname {\simpleiconsmapfive\symbol{216}}
- \expandafter\def\csname simpleicon@herokuicon\endcsname {\simpleiconsmapfive\symbol{217}}
- \expandafter\def\csname simpleicon@hetznericon\endcsname {\simpleiconsmapfive\symbol{218}}
- \expandafter\def\csname simpleicon@hevyicon\endcsname {\simpleiconsmapfive\symbol{219}}
- \expandafter\def\csname simpleicon@hexleticon\endcsname {\simpleiconsmapfive\symbol{220}}
- \expandafter\def\csname simpleicon@hexoicon\endcsname {\simpleiconsmapfive\symbol{221}}
- \expandafter\def\csname simpleicon@heyicon\endcsname {\simpleiconsmapfive\symbol{222}}
- \expandafter\def\csname simpleicon@hibernateicon\endcsname {\simpleiconsmapfive\symbol{223}}
- \expandafter\def\csname simpleicon@hibobicon\endcsname {\simpleiconsmapfive\symbol{224}}
- \expandafter\def\csname simpleicon@hiltonicon\endcsname {\simpleiconsmapfive\symbol{225}}
- \expandafter\def\csname simpleicon@hiltonhotelsandresortsicon\endcsname {\simpleiconsmapfive\symbol{226}}
- \expandafter\def\csname simpleicon@hitachiicon\endcsname {\simpleiconsmapfive\symbol{227}}
- \expandafter\def\csname simpleicon@hiveicon\endcsname {\simpleiconsmapfive\symbol{228}}
- \expandafter\def\csname simpleicon@hiveblockchainicon\endcsname {\simpleiconsmapfive\symbol{229}}
- \expandafter\def\csname simpleicon@hivemqicon\endcsname {\simpleiconsmapfive\symbol{230}}
- \expandafter\def\csname simpleicon@homarricon\endcsname {\simpleiconsmapfive\symbol{231}}
- \expandafter\def\csname simpleicon@homeadvisoricon\endcsname {\simpleiconsmapfive\symbol{232}}
- \expandafter\def\csname simpleicon@homeassistanticon\endcsname {\simpleiconsmapfive\symbol{233}}
- \expandafter\def\csname simpleicon@homeassistantcommunitystoreicon\endcsname {\simpleiconsmapfive\symbol{234}}
- \expandafter\def\csname simpleicon@homebrewicon\endcsname {\simpleiconsmapfive\symbol{235}}
- \expandafter\def\csname simpleicon@homebridgeicon\endcsname {\simpleiconsmapfive\symbol{236}}
- \expandafter\def\csname simpleicon@homepageicon\endcsname {\simpleiconsmapfive\symbol{237}}
- \expandafter\def\csname simpleicon@homifyicon\endcsname {\simpleiconsmapfive\symbol{238}}
- \expandafter\def\csname simpleicon@hondaicon\endcsname {\simpleiconsmapfive\symbol{239}}
- \expandafter\def\csname simpleicon@honeyicon\endcsname {\simpleiconsmapfive\symbol{240}}
- \expandafter\def\csname simpleicon@honoicon\endcsname {\simpleiconsmapfive\symbol{241}}
- \expandafter\def\csname simpleicon@honoricon\endcsname {\simpleiconsmapfive\symbol{242}}
- \expandafter\def\csname simpleicon@hootsuiteicon\endcsname {\simpleiconsmapfive\symbol{243}}
- \expandafter\def\csname simpleicon@hoppscotchicon\endcsname {\simpleiconsmapfive\symbol{244}}
- \expandafter\def\csname simpleicon@hostingericon\endcsname {\simpleiconsmapfive\symbol{245}}
- \expandafter\def\csname simpleicon@hotelsdotcomicon\endcsname {\simpleiconsmapfive\symbol{246}}
- \expandafter\def\csname simpleicon@hotjaricon\endcsname {\simpleiconsmapfive\symbol{247}}
- \expandafter\def\csname simpleicon@hotwireicon\endcsname {\simpleiconsmapfive\symbol{248}}
- \expandafter\def\csname simpleicon@houdiniicon\endcsname {\simpleiconsmapfive\symbol{249}}
- \expandafter\def\csname simpleicon@houzzicon\endcsname {\simpleiconsmapfive\symbol{250}}
- \expandafter\def\csname simpleicon@hpicon\endcsname {\simpleiconsmapfive\symbol{251}}
- \expandafter\def\csname simpleicon@hsbcicon\endcsname {\simpleiconsmapfive\symbol{252}}
- \expandafter\def\csname simpleicon@html5icon\endcsname {\simpleiconsmapfive\symbol{253}}
- \expandafter\def\csname simpleicon@htmlacademyicon\endcsname {\simpleiconsmapfive\symbol{254}}
- \expandafter\def\csname simpleicon@htmxicon\endcsname {\simpleiconsmapfive\symbol{255}}
- \expandafter\def\csname simpleicon@htopicon\endcsname {\simpleiconsmapsix\symbol{0}}
- \expandafter\def\csname simpleicon@httpieicon\endcsname {\simpleiconsmapsix\symbol{1}}
- \expandafter\def\csname simpleicon@huaweiicon\endcsname {\simpleiconsmapsix\symbol{2}}
- \expandafter\def\csname simpleicon@hubspoticon\endcsname {\simpleiconsmapsix\symbol{3}}
- \expandafter\def\csname simpleicon@huggingfaceicon\endcsname {\simpleiconsmapsix\symbol{4}}
- \expandafter\def\csname simpleicon@hugoicon\endcsname {\simpleiconsmapsix\symbol{5}}
- \expandafter\def\csname simpleicon@humblebundleicon\endcsname {\simpleiconsmapsix\symbol{6}}
- \expandafter\def\csname simpleicon@hungryjacksicon\endcsname {\simpleiconsmapsix\symbol{7}}
- \expandafter\def\csname simpleicon@husqvarnaicon\endcsname {\simpleiconsmapsix\symbol{8}}
- \expandafter\def\csname simpleicon@hypericon\endcsname {\simpleiconsmapsix\symbol{9}}
- \expandafter\def\csname simpleicon@hyperskillicon\endcsname {\simpleiconsmapsix\symbol{10}}
- \expandafter\def\csname simpleicon@hypothesisicon\endcsname {\simpleiconsmapsix\symbol{11}}
- \expandafter\def\csname simpleicon@hyundaiicon\endcsname {\simpleiconsmapsix\symbol{12}}
- \expandafter\def\csname simpleicon@i18nexticon\endcsname {\simpleiconsmapsix\symbol{13}}
- \expandafter\def\csname simpleicon@i3icon\endcsname {\simpleiconsmapsix\symbol{14}}
- \expandafter\def\csname simpleicon@iataicon\endcsname {\simpleiconsmapsix\symbol{15}}
- \expandafter\def\csname simpleicon@ibeaconicon\endcsname {\simpleiconsmapsix\symbol{16}}
- \expandafter\def\csname simpleicon@iberiaicon\endcsname {\simpleiconsmapsix\symbol{17}}
- \expandafter\def\csname simpleicon@ibmicon\endcsname {\simpleiconsmapsix\symbol{18}}
- \expandafter\def\csname simpleicon@ibmcloudicon\endcsname {\simpleiconsmapsix\symbol{19}}
- \expandafter\def\csname simpleicon@ibmwatsonicon\endcsname {\simpleiconsmapsix\symbol{20}}
- \expandafter\def\csname simpleicon@icedicon\endcsname {\simpleiconsmapsix\symbol{21}}
- \expandafter\def\csname simpleicon@icelandicon\endcsname {\simpleiconsmapsix\symbol{22}}
- \expandafter\def\csname simpleicon@icicibankicon\endcsname {\simpleiconsmapsix\symbol{23}}
- \expandafter\def\csname simpleicon@icingaicon\endcsname {\simpleiconsmapsix\symbol{24}}
- \expandafter\def\csname simpleicon@icloudicon\endcsname {\simpleiconsmapsix\symbol{25}}
- \expandafter\def\csname simpleicon@icomoonicon\endcsname {\simpleiconsmapsix\symbol{26}}
- \expandafter\def\csname simpleicon@iconicon\endcsname {\simpleiconsmapsix\symbol{27}}
- \expandafter\def\csname simpleicon@iconfindericon\endcsname {\simpleiconsmapsix\symbol{28}}
- \expandafter\def\csname simpleicon@iconifyicon\endcsname {\simpleiconsmapsix\symbol{29}}
- \expandafter\def\csname simpleicon@iconjaricon\endcsname {\simpleiconsmapsix\symbol{30}}
- \expandafter\def\csname simpleicon@icons8icon\endcsname {\simpleiconsmapsix\symbol{31}}
- \expandafter\def\csname simpleicon@icqicon\endcsname {\simpleiconsmapsix\symbol{32}}
- \expandafter\def\csname simpleicon@ieeeicon\endcsname {\simpleiconsmapsix\symbol{33}}
- \expandafter\def\csname simpleicon@ifixiticon\endcsname {\simpleiconsmapsix\symbol{34}}
- \expandafter\def\csname simpleicon@ifoodicon\endcsname {\simpleiconsmapsix\symbol{35}}
- \expandafter\def\csname simpleicon@ifttticon\endcsname {\simpleiconsmapsix\symbol{36}}
- \expandafter\def\csname simpleicon@igdbicon\endcsname {\simpleiconsmapsix\symbol{37}}
- \expandafter\def\csname simpleicon@ignicon\endcsname {\simpleiconsmapsix\symbol{38}}
- \expandafter\def\csname simpleicon@iheartradioicon\endcsname {\simpleiconsmapsix\symbol{39}}
- \expandafter\def\csname simpleicon@ikeaicon\endcsname {\simpleiconsmapsix\symbol{40}}
- \expandafter\def\csname simpleicon@iledefrancemobilitesicon\endcsname {\simpleiconsmapsix\symbol{41}}
- \expandafter\def\csname simpleicon@imagedotscicon\endcsname {\simpleiconsmapsix\symbol{42}}
- \expandafter\def\csname simpleicon@imagejicon\endcsname {\simpleiconsmapsix\symbol{43}}
- \expandafter\def\csname simpleicon@imdbicon\endcsname {\simpleiconsmapsix\symbol{44}}
- \expandafter\def\csname simpleicon@imessageicon\endcsname {\simpleiconsmapsix\symbol{45}}
- \expandafter\def\csname simpleicon@imguricon\endcsname {\simpleiconsmapsix\symbol{46}}
- \expandafter\def\csname simpleicon@immericon\endcsname {\simpleiconsmapsix\symbol{47}}
- \expandafter\def\csname simpleicon@immichicon\endcsname {\simpleiconsmapsix\symbol{48}}
- \expandafter\def\csname simpleicon@imouicon\endcsname {\simpleiconsmapsix\symbol{49}}
- \expandafter\def\csname simpleicon@improvmxicon\endcsname {\simpleiconsmapsix\symbol{50}}
- \expandafter\def\csname simpleicon@indeedicon\endcsname {\simpleiconsmapsix\symbol{51}}
- \expandafter\def\csname simpleicon@indiansuperleagueicon\endcsname {\simpleiconsmapsix\symbol{52}}
- \expandafter\def\csname simpleicon@indiehackersicon\endcsname {\simpleiconsmapsix\symbol{53}}
- \expandafter\def\csname simpleicon@indigoicon\endcsname {\simpleiconsmapsix\symbol{54}}
- \expandafter\def\csname simpleicon@inertiaicon\endcsname {\simpleiconsmapsix\symbol{55}}
- \expandafter\def\csname simpleicon@infinitiicon\endcsname {\simpleiconsmapsix\symbol{56}}
- \expandafter\def\csname simpleicon@influxdbicon\endcsname {\simpleiconsmapsix\symbol{57}}
- \expandafter\def\csname simpleicon@infomaniakicon\endcsname {\simpleiconsmapsix\symbol{58}}
- \expandafter\def\csname simpleicon@infoqicon\endcsname {\simpleiconsmapsix\symbol{59}}
- \expandafter\def\csname simpleicon@informaticaicon\endcsname {\simpleiconsmapsix\symbol{60}}
- \expandafter\def\csname simpleicon@infosysicon\endcsname {\simpleiconsmapsix\symbol{61}}
- \expandafter\def\csname simpleicon@infracosticon\endcsname {\simpleiconsmapsix\symbol{62}}
- \expandafter\def\csname simpleicon@ingressicon\endcsname {\simpleiconsmapsix\symbol{63}}
- \expandafter\def\csname simpleicon@inkdropicon\endcsname {\simpleiconsmapsix\symbol{64}}
- \expandafter\def\csname simpleicon@inkscapeicon\endcsname {\simpleiconsmapsix\symbol{65}}
- \expandafter\def\csname simpleicon@inoreadericon\endcsname {\simpleiconsmapsix\symbol{66}}
- \expandafter\def\csname simpleicon@insomniaicon\endcsname {\simpleiconsmapsix\symbol{67}}
- \expandafter\def\csname simpleicon@inspireicon\endcsname {\simpleiconsmapsix\symbol{68}}
- \expandafter\def\csname simpleicon@insta360icon\endcsname {\simpleiconsmapsix\symbol{69}}
- \expandafter\def\csname simpleicon@instacarticon\endcsname {\simpleiconsmapsix\symbol{70}}
- \expandafter\def\csname simpleicon@instagramicon\endcsname {\simpleiconsmapsix\symbol{71}}
- \expandafter\def\csname simpleicon@instapapericon\endcsname {\simpleiconsmapsix\symbol{72}}
- \expandafter\def\csname simpleicon@instatusicon\endcsname {\simpleiconsmapsix\symbol{73}}
- \expandafter\def\csname simpleicon@instructablesicon\endcsname {\simpleiconsmapsix\symbol{74}}
- \expandafter\def\csname simpleicon@instructureicon\endcsname {\simpleiconsmapsix\symbol{75}}
- \expandafter\def\csname simpleicon@intelicon\endcsname {\simpleiconsmapsix\symbol{76}}
- \expandafter\def\csname simpleicon@intellijideaicon\endcsname {\simpleiconsmapsix\symbol{77}}
- \expandafter\def\csname simpleicon@interactiondesignfoundationicon\endcsname {\simpleiconsmapsix\symbol{78}}
- \expandafter\def\csname simpleicon@interactjsicon\endcsname {\simpleiconsmapsix\symbol{79}}
- \expandafter\def\csname simpleicon@interbaseicon\endcsname {\simpleiconsmapsix\symbol{80}}
- \expandafter\def\csname simpleicon@intercomicon\endcsname {\simpleiconsmapsix\symbol{81}}
- \expandafter\def\csname simpleicon@intermarcheicon\endcsname {\simpleiconsmapsix\symbol{82}}
- \expandafter\def\csname simpleicon@internetarchiveicon\endcsname {\simpleiconsmapsix\symbol{83}}
- \expandafter\def\csname simpleicon@internetcomputericon\endcsname {\simpleiconsmapsix\symbol{84}}
- \expandafter\def\csname simpleicon@internetexplorericon\endcsname {\simpleiconsmapsix\symbol{85}}
- \expandafter\def\csname simpleicon@intigritiicon\endcsname {\simpleiconsmapsix\symbol{86}}
- \expandafter\def\csname simpleicon@intuiticon\endcsname {\simpleiconsmapsix\symbol{87}}
- \expandafter\def\csname simpleicon@invisionicon\endcsname {\simpleiconsmapsix\symbol{88}}
- \expandafter\def\csname simpleicon@invoiceninjaicon\endcsname {\simpleiconsmapsix\symbol{89}}
- \expandafter\def\csname simpleicon@iobrokericon\endcsname {\simpleiconsmapsix\symbol{90}}
- \expandafter\def\csname simpleicon@ionicicon\endcsname {\simpleiconsmapsix\symbol{91}}
- \expandafter\def\csname simpleicon@ionosicon\endcsname {\simpleiconsmapsix\symbol{92}}
- \expandafter\def\csname simpleicon@iosicon\endcsname {\simpleiconsmapsix\symbol{93}}
- \expandafter\def\csname simpleicon@iotaicon\endcsname {\simpleiconsmapsix\symbol{94}}
- \expandafter\def\csname simpleicon@ipfsicon\endcsname {\simpleiconsmapsix\symbol{95}}
- \expandafter\def\csname simpleicon@irisicon\endcsname {\simpleiconsmapsix\symbol{96}}
- \expandafter\def\csname simpleicon@iroboticon\endcsname {\simpleiconsmapsix\symbol{97}}
- \expandafter\def\csname simpleicon@isc2icon\endcsname {\simpleiconsmapsix\symbol{98}}
- \expandafter\def\csname simpleicon@issuuicon\endcsname {\simpleiconsmapsix\symbol{99}}
- \expandafter\def\csname simpleicon@istioicon\endcsname {\simpleiconsmapsix\symbol{100}}
- \expandafter\def\csname simpleicon@itchdotioicon\endcsname {\simpleiconsmapsix\symbol{101}}
- \expandafter\def\csname simpleicon@iterm2icon\endcsname {\simpleiconsmapsix\symbol{102}}
- \expandafter\def\csname simpleicon@itunesicon\endcsname {\simpleiconsmapsix\symbol{103}}
- \expandafter\def\csname simpleicon@itvxicon\endcsname {\simpleiconsmapsix\symbol{104}}
- \expandafter\def\csname simpleicon@ivecoicon\endcsname {\simpleiconsmapsix\symbol{105}}
- \expandafter\def\csname simpleicon@jabbericon\endcsname {\simpleiconsmapsix\symbol{106}}
- \expandafter\def\csname simpleicon@jaegericon\endcsname {\simpleiconsmapsix\symbol{107}}
- \expandafter\def\csname simpleicon@jaguaricon\endcsname {\simpleiconsmapsix\symbol{108}}
- \expandafter\def\csname simpleicon@jamboardicon\endcsname {\simpleiconsmapsix\symbol{109}}
- \expandafter\def\csname simpleicon@jamesonicon\endcsname {\simpleiconsmapsix\symbol{110}}
- \expandafter\def\csname simpleicon@jamstackicon\endcsname {\simpleiconsmapsix\symbol{111}}
- \expandafter\def\csname simpleicon@jasmineicon\endcsname {\simpleiconsmapsix\symbol{112}}
- \expandafter\def\csname simpleicon@javascripticon\endcsname {\simpleiconsmapsix\symbol{113}}
- \expandafter\def\csname simpleicon@jblicon\endcsname {\simpleiconsmapsix\symbol{114}}
- \expandafter\def\csname simpleicon@jcbicon\endcsname {\simpleiconsmapsix\symbol{115}}
- \expandafter\def\csname simpleicon@jeepicon\endcsname {\simpleiconsmapsix\symbol{116}}
- \expandafter\def\csname simpleicon@jekyllicon\endcsname {\simpleiconsmapsix\symbol{117}}
- \expandafter\def\csname simpleicon@jellyfinicon\endcsname {\simpleiconsmapsix\symbol{118}}
- \expandafter\def\csname simpleicon@jenkinsicon\endcsname {\simpleiconsmapsix\symbol{119}}
- \expandafter\def\csname simpleicon@jesticon\endcsname {\simpleiconsmapsix\symbol{120}}
- \expandafter\def\csname simpleicon@jeticon\endcsname {\simpleiconsmapsix\symbol{121}}
- \expandafter\def\csname simpleicon@jetblueicon\endcsname {\simpleiconsmapsix\symbol{122}}
- \expandafter\def\csname simpleicon@jetbrainsicon\endcsname {\simpleiconsmapsix\symbol{123}}
- \expandafter\def\csname simpleicon@jetpackcomposeicon\endcsname {\simpleiconsmapsix\symbol{124}}
- \expandafter\def\csname simpleicon@jfrogicon\endcsname {\simpleiconsmapsix\symbol{125}}
- \expandafter\def\csname simpleicon@jfrogpipelinesicon\endcsname {\simpleiconsmapsix\symbol{126}}
- \expandafter\def\csname simpleicon@jhipstericon\endcsname {\simpleiconsmapsix\symbol{127}}
- \expandafter\def\csname simpleicon@jinjaicon\endcsname {\simpleiconsmapsix\symbol{128}}
- \expandafter\def\csname simpleicon@jiraicon\endcsname {\simpleiconsmapsix\symbol{129}}
- \expandafter\def\csname simpleicon@jirasoftwareicon\endcsname {\simpleiconsmapsix\symbol{130}}
- \expandafter\def\csname simpleicon@jitpackicon\endcsname {\simpleiconsmapsix\symbol{131}}
- \expandafter\def\csname simpleicon@jitsiicon\endcsname {\simpleiconsmapsix\symbol{132}}
- \expandafter\def\csname simpleicon@johndeereicon\endcsname {\simpleiconsmapsix\symbol{133}}
- \expandafter\def\csname simpleicon@joomlaicon\endcsname {\simpleiconsmapsix\symbol{134}}
- \expandafter\def\csname simpleicon@joplinicon\endcsname {\simpleiconsmapsix\symbol{135}}
- \expandafter\def\csname simpleicon@jordanicon\endcsname {\simpleiconsmapsix\symbol{136}}
- \expandafter\def\csname simpleicon@jouavicon\endcsname {\simpleiconsmapsix\symbol{137}}
- \expandafter\def\csname simpleicon@jovianicon\endcsname {\simpleiconsmapsix\symbol{138}}
- \expandafter\def\csname simpleicon@jpegicon\endcsname {\simpleiconsmapsix\symbol{139}}
- \expandafter\def\csname simpleicon@jqueryicon\endcsname {\simpleiconsmapsix\symbol{140}}
- \expandafter\def\csname simpleicon@jrgroupicon\endcsname {\simpleiconsmapsix\symbol{141}}
- \expandafter\def\csname simpleicon@jsdelivricon\endcsname {\simpleiconsmapsix\symbol{142}}
- \expandafter\def\csname simpleicon@jsfiddleicon\endcsname {\simpleiconsmapsix\symbol{143}}
- \expandafter\def\csname simpleicon@jsonicon\endcsname {\simpleiconsmapsix\symbol{144}}
- \expandafter\def\csname simpleicon@jsonwebtokensicon\endcsname {\simpleiconsmapsix\symbol{145}}
- \expandafter\def\csname simpleicon@jsricon\endcsname {\simpleiconsmapsix\symbol{146}}
- \expandafter\def\csname simpleicon@jssicon\endcsname {\simpleiconsmapsix\symbol{147}}
- \expandafter\def\csname simpleicon@juceicon\endcsname {\simpleiconsmapsix\symbol{148}}
- \expandafter\def\csname simpleicon@juejinicon\endcsname {\simpleiconsmapsix\symbol{149}}
- \expandafter\def\csname simpleicon@jukeicon\endcsname {\simpleiconsmapsix\symbol{150}}
- \expandafter\def\csname simpleicon@juliaicon\endcsname {\simpleiconsmapsix\symbol{151}}
- \expandafter\def\csname simpleicon@junipernetworksicon\endcsname {\simpleiconsmapsix\symbol{152}}
- \expandafter\def\csname simpleicon@junit5icon\endcsname {\simpleiconsmapsix\symbol{153}}
- \expandafter\def\csname simpleicon@jupytericon\endcsname {\simpleiconsmapsix\symbol{154}}
- \expandafter\def\csname simpleicon@justeaticon\endcsname {\simpleiconsmapsix\symbol{155}}
- \expandafter\def\csname simpleicon@justgivingicon\endcsname {\simpleiconsmapsix\symbol{156}}
- \expandafter\def\csname simpleicon@k3sicon\endcsname {\simpleiconsmapsix\symbol{157}}
- \expandafter\def\csname simpleicon@k6icon\endcsname {\simpleiconsmapsix\symbol{158}}
- \expandafter\def\csname simpleicon@kaggleicon\endcsname {\simpleiconsmapsix\symbol{159}}
- \expandafter\def\csname simpleicon@kagiicon\endcsname {\simpleiconsmapsix\symbol{160}}
- \expandafter\def\csname simpleicon@kahooticon\endcsname {\simpleiconsmapsix\symbol{161}}
- \expandafter\def\csname simpleicon@kaiosicon\endcsname {\simpleiconsmapsix\symbol{162}}
- \expandafter\def\csname simpleicon@kakaoicon\endcsname {\simpleiconsmapsix\symbol{163}}
- \expandafter\def\csname simpleicon@kakaotalkicon\endcsname {\simpleiconsmapsix\symbol{164}}
- \expandafter\def\csname simpleicon@kalilinuxicon\endcsname {\simpleiconsmapsix\symbol{165}}
- \expandafter\def\csname simpleicon@kamailioicon\endcsname {\simpleiconsmapsix\symbol{166}}
- \expandafter\def\csname simpleicon@kanikoicon\endcsname {\simpleiconsmapsix\symbol{167}}
- \expandafter\def\csname simpleicon@karlsruherverkehrsverbundicon\endcsname {\simpleiconsmapsix\symbol{168}}
- \expandafter\def\csname simpleicon@kasasmarticon\endcsname {\simpleiconsmapsix\symbol{169}}
- \expandafter\def\csname simpleicon@kashflowicon\endcsname {\simpleiconsmapsix\symbol{170}}
- \expandafter\def\csname simpleicon@kasperskyicon\endcsname {\simpleiconsmapsix\symbol{171}}
- \expandafter\def\csname simpleicon@katacodaicon\endcsname {\simpleiconsmapsix\symbol{172}}
- \expandafter\def\csname simpleicon@katanaicon\endcsname {\simpleiconsmapsix\symbol{173}}
- \expandafter\def\csname simpleicon@kauflandicon\endcsname {\simpleiconsmapsix\symbol{174}}
- \expandafter\def\csname simpleicon@kdeicon\endcsname {\simpleiconsmapsix\symbol{175}}
- \expandafter\def\csname simpleicon@kdenliveicon\endcsname {\simpleiconsmapsix\symbol{176}}
- \expandafter\def\csname simpleicon@kedroicon\endcsname {\simpleiconsmapsix\symbol{177}}
- \expandafter\def\csname simpleicon@keeneticicon\endcsname {\simpleiconsmapsix\symbol{178}}
- \expandafter\def\csname simpleicon@keepachangelogicon\endcsname {\simpleiconsmapsix\symbol{179}}
- \expandafter\def\csname simpleicon@keepassxcicon\endcsname {\simpleiconsmapsix\symbol{180}}
- \expandafter\def\csname simpleicon@kenticoicon\endcsname {\simpleiconsmapsix\symbol{181}}
- \expandafter\def\csname simpleicon@kerasicon\endcsname {\simpleiconsmapsix\symbol{182}}
- \expandafter\def\csname simpleicon@keybaseicon\endcsname {\simpleiconsmapsix\symbol{183}}
- \expandafter\def\csname simpleicon@keycdnicon\endcsname {\simpleiconsmapsix\symbol{184}}
- \expandafter\def\csname simpleicon@keycloakicon\endcsname {\simpleiconsmapsix\symbol{185}}
- \expandafter\def\csname simpleicon@keystoneicon\endcsname {\simpleiconsmapsix\symbol{186}}
- \expandafter\def\csname simpleicon@kfcicon\endcsname {\simpleiconsmapsix\symbol{187}}
- \expandafter\def\csname simpleicon@khanacademyicon\endcsname {\simpleiconsmapsix\symbol{188}}
- \expandafter\def\csname simpleicon@khronosgroupicon\endcsname {\simpleiconsmapsix\symbol{189}}
- \expandafter\def\csname simpleicon@kiaicon\endcsname {\simpleiconsmapsix\symbol{190}}
- \expandafter\def\csname simpleicon@kibanaicon\endcsname {\simpleiconsmapsix\symbol{191}}
- \expandafter\def\csname simpleicon@kicadicon\endcsname {\simpleiconsmapsix\symbol{192}}
- \expandafter\def\csname simpleicon@kickicon\endcsname {\simpleiconsmapsix\symbol{193}}
- \expandafter\def\csname simpleicon@kickstartericon\endcsname {\simpleiconsmapsix\symbol{194}}
- \expandafter\def\csname simpleicon@kikicon\endcsname {\simpleiconsmapsix\symbol{195}}
- \expandafter\def\csname simpleicon@kingstontechnologyicon\endcsname {\simpleiconsmapsix\symbol{196}}
- \expandafter\def\csname simpleicon@kinopoiskicon\endcsname {\simpleiconsmapsix\symbol{197}}
- \expandafter\def\csname simpleicon@kinstaicon\endcsname {\simpleiconsmapsix\symbol{198}}
- \expandafter\def\csname simpleicon@kirbyicon\endcsname {\simpleiconsmapsix\symbol{199}}
- \expandafter\def\csname simpleicon@kiticon\endcsname {\simpleiconsmapsix\symbol{200}}
- \expandafter\def\csname simpleicon@kitsuicon\endcsname {\simpleiconsmapsix\symbol{201}}
- \expandafter\def\csname simpleicon@klarnaicon\endcsname {\simpleiconsmapsix\symbol{202}}
- \expandafter\def\csname simpleicon@klmicon\endcsname {\simpleiconsmapsix\symbol{203}}
- \expandafter\def\csname simpleicon@klookicon\endcsname {\simpleiconsmapsix\symbol{204}}
- \expandafter\def\csname simpleicon@knativeicon\endcsname {\simpleiconsmapsix\symbol{205}}
- \expandafter\def\csname simpleicon@knexdotjsicon\endcsname {\simpleiconsmapsix\symbol{206}}
- \expandafter\def\csname simpleicon@knimeicon\endcsname {\simpleiconsmapsix\symbol{207}}
- \expandafter\def\csname simpleicon@knipicon\endcsname {\simpleiconsmapsix\symbol{208}}
- \expandafter\def\csname simpleicon@knowledgebaseicon\endcsname {\simpleiconsmapsix\symbol{209}}
- \expandafter\def\csname simpleicon@knownicon\endcsname {\simpleiconsmapsix\symbol{210}}
- \expandafter\def\csname simpleicon@koaicon\endcsname {\simpleiconsmapsix\symbol{211}}
- \expandafter\def\csname simpleicon@kocicon\endcsname {\simpleiconsmapsix\symbol{212}}
- \expandafter\def\csname simpleicon@kodakicon\endcsname {\simpleiconsmapsix\symbol{213}}
- \expandafter\def\csname simpleicon@kodiicon\endcsname {\simpleiconsmapsix\symbol{214}}
- \expandafter\def\csname simpleicon@kofaxicon\endcsname {\simpleiconsmapsix\symbol{215}}
- \expandafter\def\csname simpleicon@kofiicon\endcsname {\simpleiconsmapsix\symbol{216}}
- \expandafter\def\csname simpleicon@komooticon\endcsname {\simpleiconsmapsix\symbol{217}}
- \expandafter\def\csname simpleicon@konamiicon\endcsname {\simpleiconsmapsix\symbol{218}}
- \expandafter\def\csname simpleicon@kongicon\endcsname {\simpleiconsmapsix\symbol{219}}
- \expandafter\def\csname simpleicon@kongregateicon\endcsname {\simpleiconsmapsix\symbol{220}}
- \expandafter\def\csname simpleicon@konvaicon\endcsname {\simpleiconsmapsix\symbol{221}}
- \expandafter\def\csname simpleicon@kotlinicon\endcsname {\simpleiconsmapsix\symbol{222}}
- \expandafter\def\csname simpleicon@koyebicon\endcsname {\simpleiconsmapsix\symbol{223}}
- \expandafter\def\csname simpleicon@kritaicon\endcsname {\simpleiconsmapsix\symbol{224}}
- \expandafter\def\csname simpleicon@ktmicon\endcsname {\simpleiconsmapsix\symbol{225}}
- \expandafter\def\csname simpleicon@ktoricon\endcsname {\simpleiconsmapsix\symbol{226}}
- \expandafter\def\csname simpleicon@kuaishouicon\endcsname {\simpleiconsmapsix\symbol{227}}
- \expandafter\def\csname simpleicon@kubernetesicon\endcsname {\simpleiconsmapsix\symbol{228}}
- \expandafter\def\csname simpleicon@kubuntuicon\endcsname {\simpleiconsmapsix\symbol{229}}
- \expandafter\def\csname simpleicon@kucoinicon\endcsname {\simpleiconsmapsix\symbol{230}}
- \expandafter\def\csname simpleicon@kumaicon\endcsname {\simpleiconsmapsix\symbol{231}}
- \expandafter\def\csname simpleicon@kununuicon\endcsname {\simpleiconsmapsix\symbol{232}}
- \expandafter\def\csname simpleicon@kuulaicon\endcsname {\simpleiconsmapsix\symbol{233}}
- \expandafter\def\csname simpleicon@kxicon\endcsname {\simpleiconsmapsix\symbol{234}}
- \expandafter\def\csname simpleicon@kyoceraicon\endcsname {\simpleiconsmapsix\symbol{235}}
- \expandafter\def\csname simpleicon@labviewicon\endcsname {\simpleiconsmapsix\symbol{236}}
- \expandafter\def\csname simpleicon@ladaicon\endcsname {\simpleiconsmapsix\symbol{237}}
- \expandafter\def\csname simpleicon@lamborghiniicon\endcsname {\simpleiconsmapsix\symbol{238}}
- \expandafter\def\csname simpleicon@landrovericon\endcsname {\simpleiconsmapsix\symbol{239}}
- \expandafter\def\csname simpleicon@langchainicon\endcsname {\simpleiconsmapsix\symbol{240}}
- \expandafter\def\csname simpleicon@lapceicon\endcsname {\simpleiconsmapsix\symbol{241}}
- \expandafter\def\csname simpleicon@laragonicon\endcsname {\simpleiconsmapsix\symbol{242}}
- \expandafter\def\csname simpleicon@laravelicon\endcsname {\simpleiconsmapsix\symbol{243}}
- \expandafter\def\csname simpleicon@laravelhorizonicon\endcsname {\simpleiconsmapsix\symbol{244}}
- \expandafter\def\csname simpleicon@laravelnovaicon\endcsname {\simpleiconsmapsix\symbol{245}}
- \expandafter\def\csname simpleicon@lastdotfmicon\endcsname {\simpleiconsmapsix\symbol{246}}
- \expandafter\def\csname simpleicon@lastpassicon\endcsname {\simpleiconsmapsix\symbol{247}}
- \expandafter\def\csname simpleicon@latexicon\endcsname {\simpleiconsmapsix\symbol{248}}
- \expandafter\def\csname simpleicon@launchpadicon\endcsname {\simpleiconsmapsix\symbol{249}}
- \expandafter\def\csname simpleicon@lazarusicon\endcsname {\simpleiconsmapsix\symbol{250}}
- \expandafter\def\csname simpleicon@lazyvimicon\endcsname {\simpleiconsmapsix\symbol{251}}
- \expandafter\def\csname simpleicon@lbryicon\endcsname {\simpleiconsmapsix\symbol{252}}
- \expandafter\def\csname simpleicon@leaderpriceicon\endcsname {\simpleiconsmapsix\symbol{253}}
- \expandafter\def\csname simpleicon@leafleticon\endcsname {\simpleiconsmapsix\symbol{254}}
- \expandafter\def\csname simpleicon@leagueoflegendsicon\endcsname {\simpleiconsmapsix\symbol{255}}
- \expandafter\def\csname simpleicon@leanpubicon\endcsname {\simpleiconsmapseven\symbol{0}}
- \expandafter\def\csname simpleicon@leetcodeicon\endcsname {\simpleiconsmapseven\symbol{1}}
- \expandafter\def\csname simpleicon@legacygamesicon\endcsname {\simpleiconsmapseven\symbol{2}}
- \expandafter\def\csname simpleicon@leicaicon\endcsname {\simpleiconsmapseven\symbol{3}}
- \expandafter\def\csname simpleicon@lemmyicon\endcsname {\simpleiconsmapseven\symbol{4}}
- \expandafter\def\csname simpleicon@lemonsqueezyicon\endcsname {\simpleiconsmapseven\symbol{5}}
- \expandafter\def\csname simpleicon@lenovoicon\endcsname {\simpleiconsmapseven\symbol{6}}
- \expandafter\def\csname simpleicon@lensicon\endcsname {\simpleiconsmapseven\symbol{7}}
- \expandafter\def\csname simpleicon@leptosicon\endcsname {\simpleiconsmapseven\symbol{8}}
- \expandafter\def\csname simpleicon@lequipeicon\endcsname {\simpleiconsmapseven\symbol{9}}
- \expandafter\def\csname simpleicon@lernaicon\endcsname {\simpleiconsmapseven\symbol{10}}
- \expandafter\def\csname simpleicon@leroymerlinicon\endcsname {\simpleiconsmapseven\symbol{11}}
- \expandafter\def\csname simpleicon@leslibrairesicon\endcsname {\simpleiconsmapseven\symbol{12}}
- \expandafter\def\csname simpleicon@lessicon\endcsname {\simpleiconsmapseven\symbol{13}}
- \expandafter\def\csname simpleicon@letsencrypticon\endcsname {\simpleiconsmapseven\symbol{14}}
- \expandafter\def\csname simpleicon@letterboxdicon\endcsname {\simpleiconsmapseven\symbol{15}}
- \expandafter\def\csname simpleicon@levelsdotfyiicon\endcsname {\simpleiconsmapseven\symbol{16}}
- \expandafter\def\csname simpleicon@lgicon\endcsname {\simpleiconsmapseven\symbol{17}}
- \expandafter\def\csname simpleicon@liberadotchaticon\endcsname {\simpleiconsmapseven\symbol{18}}
- \expandafter\def\csname simpleicon@liberapayicon\endcsname {\simpleiconsmapseven\symbol{19}}
- \expandafter\def\csname simpleicon@librariesdotioicon\endcsname {\simpleiconsmapseven\symbol{20}}
- \expandafter\def\csname simpleicon@librarythingicon\endcsname {\simpleiconsmapseven\symbol{21}}
- \expandafter\def\csname simpleicon@libreofficeicon\endcsname {\simpleiconsmapseven\symbol{22}}
- \expandafter\def\csname simpleicon@libreofficebaseicon\endcsname {\simpleiconsmapseven\symbol{23}}
- \expandafter\def\csname simpleicon@libreofficecalcicon\endcsname {\simpleiconsmapseven\symbol{24}}
- \expandafter\def\csname simpleicon@libreofficedrawicon\endcsname {\simpleiconsmapseven\symbol{25}}
- \expandafter\def\csname simpleicon@libreofficeimpressicon\endcsname {\simpleiconsmapseven\symbol{26}}
- \expandafter\def\csname simpleicon@libreofficemathicon\endcsname {\simpleiconsmapseven\symbol{27}}
- \expandafter\def\csname simpleicon@libreofficewritericon\endcsname {\simpleiconsmapseven\symbol{28}}
- \expandafter\def\csname simpleicon@libuvicon\endcsname {\simpleiconsmapseven\symbol{29}}
- \expandafter\def\csname simpleicon@lichessicon\endcsname {\simpleiconsmapseven\symbol{30}}
- \expandafter\def\csname simpleicon@lidlicon\endcsname {\simpleiconsmapseven\symbol{31}}
- \expandafter\def\csname simpleicon@lifxicon\endcsname {\simpleiconsmapseven\symbol{32}}
- \expandafter\def\csname simpleicon@lightburnicon\endcsname {\simpleiconsmapseven\symbol{33}}
- \expandafter\def\csname simpleicon@lighthouseicon\endcsname {\simpleiconsmapseven\symbol{34}}
- \expandafter\def\csname simpleicon@lightningicon\endcsname {\simpleiconsmapseven\symbol{35}}
- \expandafter\def\csname simpleicon@limesurveyicon\endcsname {\simpleiconsmapseven\symbol{36}}
- \expandafter\def\csname simpleicon@lineicon\endcsname {\simpleiconsmapseven\symbol{37}}
- \expandafter\def\csname simpleicon@lineageosicon\endcsname {\simpleiconsmapseven\symbol{38}}
- \expandafter\def\csname simpleicon@linearicon\endcsname {\simpleiconsmapseven\symbol{39}}
- \expandafter\def\csname simpleicon@liningicon\endcsname {\simpleiconsmapseven\symbol{40}}
- \expandafter\def\csname simpleicon@linkedinicon\endcsname {\simpleiconsmapseven\symbol{41}}
- \expandafter\def\csname simpleicon@linkerdicon\endcsname {\simpleiconsmapseven\symbol{42}}
- \expandafter\def\csname simpleicon@linkfireicon\endcsname {\simpleiconsmapseven\symbol{43}}
- \expandafter\def\csname simpleicon@linksysicon\endcsname {\simpleiconsmapseven\symbol{44}}
- \expandafter\def\csname simpleicon@linktreeicon\endcsname {\simpleiconsmapseven\symbol{45}}
- \expandafter\def\csname simpleicon@lintcodeicon\endcsname {\simpleiconsmapseven\symbol{46}}
- \expandafter\def\csname simpleicon@linuxicon\endcsname {\simpleiconsmapseven\symbol{47}}
- \expandafter\def\csname simpleicon@linuxcontainersicon\endcsname {\simpleiconsmapseven\symbol{48}}
- \expandafter\def\csname simpleicon@linuxfoundationicon\endcsname {\simpleiconsmapseven\symbol{49}}
- \expandafter\def\csname simpleicon@linuxminticon\endcsname {\simpleiconsmapseven\symbol{50}}
- \expandafter\def\csname simpleicon@linuxprofessionalinstituteicon\endcsname {\simpleiconsmapseven\symbol{51}}
- \expandafter\def\csname simpleicon@linuxservericon\endcsname {\simpleiconsmapseven\symbol{52}}
- \expandafter\def\csname simpleicon@lionairicon\endcsname {\simpleiconsmapseven\symbol{53}}
- \expandafter\def\csname simpleicon@liquibaseicon\endcsname {\simpleiconsmapseven\symbol{54}}
- \expandafter\def\csname simpleicon@listmonkicon\endcsname {\simpleiconsmapseven\symbol{55}}
- \expandafter\def\csname simpleicon@liticon\endcsname {\simpleiconsmapseven\symbol{56}}
- \expandafter\def\csname simpleicon@litecoinicon\endcsname {\simpleiconsmapseven\symbol{57}}
- \expandafter\def\csname simpleicon@litiengineicon\endcsname {\simpleiconsmapseven\symbol{58}}
- \expandafter\def\csname simpleicon@livechaticon\endcsname {\simpleiconsmapseven\symbol{59}}
- \expandafter\def\csname simpleicon@livejournalicon\endcsname {\simpleiconsmapseven\symbol{60}}
- \expandafter\def\csname simpleicon@livewireicon\endcsname {\simpleiconsmapseven\symbol{61}}
- \expandafter\def\csname simpleicon@llvmicon\endcsname {\simpleiconsmapseven\symbol{62}}
- \expandafter\def\csname simpleicon@lmmsicon\endcsname {\simpleiconsmapseven\symbol{63}}
- \expandafter\def\csname simpleicon@localicon\endcsname {\simpleiconsmapseven\symbol{64}}
- \expandafter\def\csname simpleicon@lodashicon\endcsname {\simpleiconsmapseven\symbol{65}}
- \expandafter\def\csname simpleicon@logitechicon\endcsname {\simpleiconsmapseven\symbol{66}}
- \expandafter\def\csname simpleicon@logitechgicon\endcsname {\simpleiconsmapseven\symbol{67}}
- \expandafter\def\csname simpleicon@logmeinicon\endcsname {\simpleiconsmapseven\symbol{68}}
- \expandafter\def\csname simpleicon@logseqicon\endcsname {\simpleiconsmapseven\symbol{69}}
- \expandafter\def\csname simpleicon@logstashicon\endcsname {\simpleiconsmapseven\symbol{70}}
- \expandafter\def\csname simpleicon@lookericon\endcsname {\simpleiconsmapseven\symbol{71}}
- \expandafter\def\csname simpleicon@loomicon\endcsname {\simpleiconsmapseven\symbol{72}}
- \expandafter\def\csname simpleicon@loopicon\endcsname {\simpleiconsmapseven\symbol{73}}
- \expandafter\def\csname simpleicon@loopbackicon\endcsname {\simpleiconsmapseven\symbol{74}}
- \expandafter\def\csname simpleicon@lootcrateicon\endcsname {\simpleiconsmapseven\symbol{75}}
- \expandafter\def\csname simpleicon@lospecicon\endcsname {\simpleiconsmapseven\symbol{76}}
- \expandafter\def\csname simpleicon@lotpolishairlinesicon\endcsname {\simpleiconsmapseven\symbol{77}}
- \expandafter\def\csname simpleicon@ltspiceicon\endcsname {\simpleiconsmapseven\symbol{78}}
- \expandafter\def\csname simpleicon@luaicon\endcsname {\simpleiconsmapseven\symbol{79}}
- \expandafter\def\csname simpleicon@lubuntuicon\endcsname {\simpleiconsmapseven\symbol{80}}
- \expandafter\def\csname simpleicon@luciaicon\endcsname {\simpleiconsmapseven\symbol{81}}
- \expandafter\def\csname simpleicon@lucidicon\endcsname {\simpleiconsmapseven\symbol{82}}
- \expandafter\def\csname simpleicon@ludwigicon\endcsname {\simpleiconsmapseven\symbol{83}}
- \expandafter\def\csname simpleicon@lufthansaicon\endcsname {\simpleiconsmapseven\symbol{84}}
- \expandafter\def\csname simpleicon@lumenicon\endcsname {\simpleiconsmapseven\symbol{85}}
- \expandafter\def\csname simpleicon@lunacyicon\endcsname {\simpleiconsmapseven\symbol{86}}
- \expandafter\def\csname simpleicon@lutrisicon\endcsname {\simpleiconsmapseven\symbol{87}}
- \expandafter\def\csname simpleicon@lydiaicon\endcsname {\simpleiconsmapseven\symbol{88}}
- \expandafter\def\csname simpleicon@lyfticon\endcsname {\simpleiconsmapseven\symbol{89}}
- \expandafter\def\csname simpleicon@maasicon\endcsname {\simpleiconsmapseven\symbol{90}}
- \expandafter\def\csname simpleicon@macosicon\endcsname {\simpleiconsmapseven\symbol{91}}
- \expandafter\def\csname simpleicon@macpawicon\endcsname {\simpleiconsmapseven\symbol{92}}
- \expandafter\def\csname simpleicon@macysicon\endcsname {\simpleiconsmapseven\symbol{93}}
- \expandafter\def\csname simpleicon@magasinsuicon\endcsname {\simpleiconsmapseven\symbol{94}}
- \expandafter\def\csname simpleicon@magentoicon\endcsname {\simpleiconsmapseven\symbol{95}}
- \expandafter\def\csname simpleicon@magicicon\endcsname {\simpleiconsmapseven\symbol{96}}
- \expandafter\def\csname simpleicon@magiskicon\endcsname {\simpleiconsmapseven\symbol{97}}
- \expandafter\def\csname simpleicon@mahindraicon\endcsname {\simpleiconsmapseven\symbol{98}}
- \expandafter\def\csname simpleicon@mailchimpicon\endcsname {\simpleiconsmapseven\symbol{99}}
- \expandafter\def\csname simpleicon@maildotcomicon\endcsname {\simpleiconsmapseven\symbol{100}}
- \expandafter\def\csname simpleicon@maildotruicon\endcsname {\simpleiconsmapseven\symbol{101}}
- \expandafter\def\csname simpleicon@mailgunicon\endcsname {\simpleiconsmapseven\symbol{102}}
- \expandafter\def\csname simpleicon@mailtrapicon\endcsname {\simpleiconsmapseven\symbol{103}}
- \expandafter\def\csname simpleicon@mainwpicon\endcsname {\simpleiconsmapseven\symbol{104}}
- \expandafter\def\csname simpleicon@majorleaguehackingicon\endcsname {\simpleiconsmapseven\symbol{105}}
- \expandafter\def\csname simpleicon@makeicon\endcsname {\simpleiconsmapseven\symbol{106}}
- \expandafter\def\csname simpleicon@makerboticon\endcsname {\simpleiconsmapseven\symbol{107}}
- \expandafter\def\csname simpleicon@malticon\endcsname {\simpleiconsmapseven\symbol{108}}
- \expandafter\def\csname simpleicon@malwarebytesicon\endcsname {\simpleiconsmapseven\symbol{109}}
- \expandafter\def\csname simpleicon@mambauiicon\endcsname {\simpleiconsmapseven\symbol{110}}
- \expandafter\def\csname simpleicon@mampicon\endcsname {\simpleiconsmapseven\symbol{111}}
- \expandafter\def\csname simpleicon@manicon\endcsname {\simpleiconsmapseven\symbol{112}}
- \expandafter\def\csname simpleicon@manageiqicon\endcsname {\simpleiconsmapseven\symbol{113}}
- \expandafter\def\csname simpleicon@manjaroicon\endcsname {\simpleiconsmapseven\symbol{114}}
- \expandafter\def\csname simpleicon@mantineicon\endcsname {\simpleiconsmapseven\symbol{115}}
- \expandafter\def\csname simpleicon@mapboxicon\endcsname {\simpleiconsmapseven\symbol{116}}
- \expandafter\def\csname simpleicon@maplibreicon\endcsname {\simpleiconsmapseven\symbol{117}}
- \expandafter\def\csname simpleicon@mariadbicon\endcsname {\simpleiconsmapseven\symbol{118}}
- \expandafter\def\csname simpleicon@mariadbfoundationicon\endcsname {\simpleiconsmapseven\symbol{119}}
- \expandafter\def\csname simpleicon@markdownicon\endcsname {\simpleiconsmapseven\symbol{120}}
- \expandafter\def\csname simpleicon@marketoicon\endcsname {\simpleiconsmapseven\symbol{121}}
- \expandafter\def\csname simpleicon@markoicon\endcsname {\simpleiconsmapseven\symbol{122}}
- \expandafter\def\csname simpleicon@marriotticon\endcsname {\simpleiconsmapseven\symbol{123}}
- \expandafter\def\csname simpleicon@marvelappicon\endcsname {\simpleiconsmapseven\symbol{124}}
- \expandafter\def\csname simpleicon@maseratiicon\endcsname {\simpleiconsmapseven\symbol{125}}
- \expandafter\def\csname simpleicon@mastercardicon\endcsname {\simpleiconsmapseven\symbol{126}}
- \expandafter\def\csname simpleicon@mastercomfigicon\endcsname {\simpleiconsmapseven\symbol{127}}
- \expandafter\def\csname simpleicon@mastodonicon\endcsname {\simpleiconsmapseven\symbol{128}}
- \expandafter\def\csname simpleicon@materialdesignicon\endcsname {\simpleiconsmapseven\symbol{129}}
- \expandafter\def\csname simpleicon@materialdesigniconsicon\endcsname {\simpleiconsmapseven\symbol{130}}
- \expandafter\def\csname simpleicon@materialformkdocsicon\endcsname {\simpleiconsmapseven\symbol{131}}
- \expandafter\def\csname simpleicon@matillionicon\endcsname {\simpleiconsmapseven\symbol{132}}
- \expandafter\def\csname simpleicon@matomoicon\endcsname {\simpleiconsmapseven\symbol{133}}
- \expandafter\def\csname simpleicon@matrixicon\endcsname {\simpleiconsmapseven\symbol{134}}
- \expandafter\def\csname simpleicon@matterdotjsicon\endcsname {\simpleiconsmapseven\symbol{135}}
- \expandafter\def\csname simpleicon@mattermosticon\endcsname {\simpleiconsmapseven\symbol{136}}
- \expandafter\def\csname simpleicon@matterneticon\endcsname {\simpleiconsmapseven\symbol{137}}
- \expandafter\def\csname simpleicon@mauticicon\endcsname {\simpleiconsmapseven\symbol{138}}
- \expandafter\def\csname simpleicon@maxicon\endcsname {\simpleiconsmapseven\symbol{139}}
- \expandafter\def\csname simpleicon@maxplanckgesellschafticon\endcsname {\simpleiconsmapseven\symbol{140}}
- \expandafter\def\csname simpleicon@maytagicon\endcsname {\simpleiconsmapseven\symbol{141}}
- \expandafter\def\csname simpleicon@mazdaicon\endcsname {\simpleiconsmapseven\symbol{142}}
- \expandafter\def\csname simpleicon@mcafeeicon\endcsname {\simpleiconsmapseven\symbol{143}}
- \expandafter\def\csname simpleicon@mcdonaldsicon\endcsname {\simpleiconsmapseven\symbol{144}}
- \expandafter\def\csname simpleicon@mclarenicon\endcsname {\simpleiconsmapseven\symbol{145}}
- \expandafter\def\csname simpleicon@mdbookicon\endcsname {\simpleiconsmapseven\symbol{146}}
- \expandafter\def\csname simpleicon@mdnwebdocsicon\endcsname {\simpleiconsmapseven\symbol{147}}
- \expandafter\def\csname simpleicon@mdxicon\endcsname {\simpleiconsmapseven\symbol{148}}
- \expandafter\def\csname simpleicon@mediafireicon\endcsname {\simpleiconsmapseven\symbol{149}}
- \expandafter\def\csname simpleicon@mediamarkticon\endcsname {\simpleiconsmapseven\symbol{150}}
- \expandafter\def\csname simpleicon@mediatekicon\endcsname {\simpleiconsmapseven\symbol{151}}
- \expandafter\def\csname simpleicon@medibangpainticon\endcsname {\simpleiconsmapseven\symbol{152}}
- \expandafter\def\csname simpleicon@mediumicon\endcsname {\simpleiconsmapseven\symbol{153}}
- \expandafter\def\csname simpleicon@medusaicon\endcsname {\simpleiconsmapseven\symbol{154}}
- \expandafter\def\csname simpleicon@meetupicon\endcsname {\simpleiconsmapseven\symbol{155}}
- \expandafter\def\csname simpleicon@megaicon\endcsname {\simpleiconsmapseven\symbol{156}}
- \expandafter\def\csname simpleicon@meilisearchicon\endcsname {\simpleiconsmapseven\symbol{157}}
- \expandafter\def\csname simpleicon@meituanicon\endcsname {\simpleiconsmapseven\symbol{158}}
- \expandafter\def\csname simpleicon@meizuicon\endcsname {\simpleiconsmapseven\symbol{159}}
- \expandafter\def\csname simpleicon@mendeleyicon\endcsname {\simpleiconsmapseven\symbol{160}}
- \expandafter\def\csname simpleicon@mentorcruiseicon\endcsname {\simpleiconsmapseven\symbol{161}}
- \expandafter\def\csname simpleicon@mercadopagoicon\endcsname {\simpleiconsmapseven\symbol{162}}
- \expandafter\def\csname simpleicon@mercedesicon\endcsname {\simpleiconsmapseven\symbol{163}}
- \expandafter\def\csname simpleicon@merckicon\endcsname {\simpleiconsmapseven\symbol{164}}
- \expandafter\def\csname simpleicon@mercurialicon\endcsname {\simpleiconsmapseven\symbol{165}}
- \expandafter\def\csname simpleicon@mermaidicon\endcsname {\simpleiconsmapseven\symbol{166}}
- \expandafter\def\csname simpleicon@messengericon\endcsname {\simpleiconsmapseven\symbol{167}}
- \expandafter\def\csname simpleicon@metaicon\endcsname {\simpleiconsmapseven\symbol{168}}
- \expandafter\def\csname simpleicon@metabaseicon\endcsname {\simpleiconsmapseven\symbol{169}}
- \expandafter\def\csname simpleicon@metacriticicon\endcsname {\simpleiconsmapseven\symbol{170}}
- \expandafter\def\csname simpleicon@metafiltericon\endcsname {\simpleiconsmapseven\symbol{171}}
- \expandafter\def\csname simpleicon@metasploiticon\endcsname {\simpleiconsmapseven\symbol{172}}
- \expandafter\def\csname simpleicon@meteoricon\endcsname {\simpleiconsmapseven\symbol{173}}
- \expandafter\def\csname simpleicon@metroicon\endcsname {\simpleiconsmapseven\symbol{174}}
- \expandafter\def\csname simpleicon@metrodelaciudaddemexicoicon\endcsname {\simpleiconsmapseven\symbol{175}}
- \expandafter\def\csname simpleicon@metrodemadridicon\endcsname {\simpleiconsmapseven\symbol{176}}
- \expandafter\def\csname simpleicon@metrodeparisicon\endcsname {\simpleiconsmapseven\symbol{177}}
- \expandafter\def\csname simpleicon@meweicon\endcsname {\simpleiconsmapseven\symbol{178}}
- \expandafter\def\csname simpleicon@mgicon\endcsname {\simpleiconsmapseven\symbol{179}}
- \expandafter\def\csname simpleicon@microbiticon\endcsname {\simpleiconsmapseven\symbol{180}}
- \expandafter\def\csname simpleicon@microdotblogicon\endcsname {\simpleiconsmapseven\symbol{181}}
- \expandafter\def\csname simpleicon@microeditoricon\endcsname {\simpleiconsmapseven\symbol{182}}
- \expandafter\def\csname simpleicon@microgeneticsicon\endcsname {\simpleiconsmapseven\symbol{183}}
- \expandafter\def\csname simpleicon@micropythonicon\endcsname {\simpleiconsmapseven\symbol{184}}
- \expandafter\def\csname simpleicon@microsofticon\endcsname {\simpleiconsmapseven\symbol{185}}
- \expandafter\def\csname simpleicon@microsoftacademicicon\endcsname {\simpleiconsmapseven\symbol{186}}
- \expandafter\def\csname simpleicon@microsoftaccessicon\endcsname {\simpleiconsmapseven\symbol{187}}
- \expandafter\def\csname simpleicon@microsoftazureicon\endcsname {\simpleiconsmapseven\symbol{188}}
- \expandafter\def\csname simpleicon@microsoftbingicon\endcsname {\simpleiconsmapseven\symbol{189}}
- \expandafter\def\csname simpleicon@microsoftedgeicon\endcsname {\simpleiconsmapseven\symbol{190}}
- \expandafter\def\csname simpleicon@microsoftexcelicon\endcsname {\simpleiconsmapseven\symbol{191}}
- \expandafter\def\csname simpleicon@microsoftexchangeicon\endcsname {\simpleiconsmapseven\symbol{192}}
- \expandafter\def\csname simpleicon@microsoftonedriveicon\endcsname {\simpleiconsmapseven\symbol{193}}
- \expandafter\def\csname simpleicon@microsoftonenoteicon\endcsname {\simpleiconsmapseven\symbol{194}}
- \expandafter\def\csname simpleicon@microsoftoutlookicon\endcsname {\simpleiconsmapseven\symbol{195}}
- \expandafter\def\csname simpleicon@microsoftpowerpointicon\endcsname {\simpleiconsmapseven\symbol{196}}
- \expandafter\def\csname simpleicon@microsoftsharepointicon\endcsname {\simpleiconsmapseven\symbol{197}}
- \expandafter\def\csname simpleicon@microsoftsqlservericon\endcsname {\simpleiconsmapseven\symbol{198}}
- \expandafter\def\csname simpleicon@microsoftstoreicon\endcsname {\simpleiconsmapseven\symbol{199}}
- \expandafter\def\csname simpleicon@microsoftteamsicon\endcsname {\simpleiconsmapseven\symbol{200}}
- \expandafter\def\csname simpleicon@microsofttranslatoricon\endcsname {\simpleiconsmapseven\symbol{201}}
- \expandafter\def\csname simpleicon@microsoftvisioicon\endcsname {\simpleiconsmapseven\symbol{202}}
- \expandafter\def\csname simpleicon@microsoftwordicon\endcsname {\simpleiconsmapseven\symbol{203}}
- \expandafter\def\csname simpleicon@microstationicon\endcsname {\simpleiconsmapseven\symbol{204}}
- \expandafter\def\csname simpleicon@microstrategyicon\endcsname {\simpleiconsmapseven\symbol{205}}
- \expandafter\def\csname simpleicon@midiicon\endcsname {\simpleiconsmapseven\symbol{206}}
- \expandafter\def\csname simpleicon@migaduicon\endcsname {\simpleiconsmapseven\symbol{207}}
- \expandafter\def\csname simpleicon@mikrotikicon\endcsname {\simpleiconsmapseven\symbol{208}}
- \expandafter\def\csname simpleicon@milanoteicon\endcsname {\simpleiconsmapseven\symbol{209}}
- \expandafter\def\csname simpleicon@milvusicon\endcsname {\simpleiconsmapseven\symbol{210}}
- \expandafter\def\csname simpleicon@mindsicon\endcsname {\simpleiconsmapseven\symbol{211}}
- \expandafter\def\csname simpleicon@minecrafticon\endcsname {\simpleiconsmapseven\symbol{212}}
- \expandafter\def\csname simpleicon@minetesticon\endcsname {\simpleiconsmapseven\symbol{213}}
- \expandafter\def\csname simpleicon@miniicon\endcsname {\simpleiconsmapseven\symbol{214}}
- \expandafter\def\csname simpleicon@minioicon\endcsname {\simpleiconsmapseven\symbol{215}}
- \expandafter\def\csname simpleicon@minutemailericon\endcsname {\simpleiconsmapseven\symbol{216}}
- \expandafter\def\csname simpleicon@mirahezeicon\endcsname {\simpleiconsmapseven\symbol{217}}
- \expandafter\def\csname simpleicon@miroicon\endcsname {\simpleiconsmapseven\symbol{218}}
- \expandafter\def\csname simpleicon@misskeyicon\endcsname {\simpleiconsmapseven\symbol{219}}
- \expandafter\def\csname simpleicon@mitsubishiicon\endcsname {\simpleiconsmapseven\symbol{220}}
- \expandafter\def\csname simpleicon@mixicon\endcsname {\simpleiconsmapseven\symbol{221}}
- \expandafter\def\csname simpleicon@mixcloudicon\endcsname {\simpleiconsmapseven\symbol{222}}
- \expandafter\def\csname simpleicon@mixpanelicon\endcsname {\simpleiconsmapseven\symbol{223}}
- \expandafter\def\csname simpleicon@mlbicon\endcsname {\simpleiconsmapseven\symbol{224}}
- \expandafter\def\csname simpleicon@mlflowicon\endcsname {\simpleiconsmapseven\symbol{225}}
- \expandafter\def\csname simpleicon@mobxicon\endcsname {\simpleiconsmapseven\symbol{226}}
- \expandafter\def\csname simpleicon@mobxstatetreeicon\endcsname {\simpleiconsmapseven\symbol{227}}
- \expandafter\def\csname simpleicon@mochaicon\endcsname {\simpleiconsmapseven\symbol{228}}
- \expandafter\def\csname simpleicon@mockserviceworkericon\endcsname {\simpleiconsmapseven\symbol{229}}
- \expandafter\def\csname simpleicon@modalicon\endcsname {\simpleiconsmapseven\symbol{230}}
- \expandafter\def\csname simpleicon@modinicon\endcsname {\simpleiconsmapseven\symbol{231}}
- \expandafter\def\csname simpleicon@modrinthicon\endcsname {\simpleiconsmapseven\symbol{232}}
- \expandafter\def\csname simpleicon@modxicon\endcsname {\simpleiconsmapseven\symbol{233}}
- \expandafter\def\csname simpleicon@mojangstudiosicon\endcsname {\simpleiconsmapseven\symbol{234}}
- \expandafter\def\csname simpleicon@moleculericon\endcsname {\simpleiconsmapseven\symbol{235}}
- \expandafter\def\csname simpleicon@momenteoicon\endcsname {\simpleiconsmapseven\symbol{236}}
- \expandafter\def\csname simpleicon@moneroicon\endcsname {\simpleiconsmapseven\symbol{237}}
- \expandafter\def\csname simpleicon@moneygramicon\endcsname {\simpleiconsmapseven\symbol{238}}
- \expandafter\def\csname simpleicon@mongodbicon\endcsname {\simpleiconsmapseven\symbol{239}}
- \expandafter\def\csname simpleicon@mongooseicon\endcsname {\simpleiconsmapseven\symbol{240}}
- \expandafter\def\csname simpleicon@mongoosedotwsicon\endcsname {\simpleiconsmapseven\symbol{241}}
- \expandafter\def\csname simpleicon@monicaicon\endcsname {\simpleiconsmapseven\symbol{242}}
- \expandafter\def\csname simpleicon@monkeytieicon\endcsname {\simpleiconsmapseven\symbol{243}}
- \expandafter\def\csname simpleicon@monkeytypeicon\endcsname {\simpleiconsmapseven\symbol{244}}
- \expandafter\def\csname simpleicon@monogameicon\endcsname {\simpleiconsmapseven\symbol{245}}
- \expandafter\def\csname simpleicon@monoprixicon\endcsname {\simpleiconsmapseven\symbol{246}}
- \expandafter\def\csname simpleicon@monstericon\endcsname {\simpleiconsmapseven\symbol{247}}
- \expandafter\def\csname simpleicon@monzoicon\endcsname {\simpleiconsmapseven\symbol{248}}
- \expandafter\def\csname simpleicon@mooicon\endcsname {\simpleiconsmapseven\symbol{249}}
- \expandafter\def\csname simpleicon@moodleicon\endcsname {\simpleiconsmapseven\symbol{250}}
- \expandafter\def\csname simpleicon@moonrepoicon\endcsname {\simpleiconsmapseven\symbol{251}}
- \expandafter\def\csname simpleicon@moqupsicon\endcsname {\simpleiconsmapseven\symbol{252}}
- \expandafter\def\csname simpleicon@morrisonsicon\endcsname {\simpleiconsmapseven\symbol{253}}
- \expandafter\def\csname simpleicon@moscowmetroicon\endcsname {\simpleiconsmapseven\symbol{254}}
- \expandafter\def\csname simpleicon@motorolaicon\endcsname {\simpleiconsmapseven\symbol{255}}
- \expandafter\def\csname simpleicon@mozillaicon\endcsname {\simpleiconsmapeight\symbol{0}}
- \expandafter\def\csname simpleicon@mpvicon\endcsname {\simpleiconsmapeight\symbol{1}}
- \expandafter\def\csname simpleicon@mqtticon\endcsname {\simpleiconsmapeight\symbol{2}}
- \expandafter\def\csname simpleicon@msiicon\endcsname {\simpleiconsmapeight\symbol{3}}
- \expandafter\def\csname simpleicon@msibusinessicon\endcsname {\simpleiconsmapeight\symbol{4}}
- \expandafter\def\csname simpleicon@mtaicon\endcsname {\simpleiconsmapeight\symbol{5}}
- \expandafter\def\csname simpleicon@mtricon\endcsname {\simpleiconsmapeight\symbol{6}}
- \expandafter\def\csname simpleicon@mubiicon\endcsname {\simpleiconsmapeight\symbol{7}}
- \expandafter\def\csname simpleicon@muiicon\endcsname {\simpleiconsmapeight\symbol{8}}
- \expandafter\def\csname simpleicon@mulesofticon\endcsname {\simpleiconsmapeight\symbol{9}}
- \expandafter\def\csname simpleicon@mullericon\endcsname {\simpleiconsmapeight\symbol{10}}
- \expandafter\def\csname simpleicon@multisimicon\endcsname {\simpleiconsmapeight\symbol{11}}
- \expandafter\def\csname simpleicon@mumbleicon\endcsname {\simpleiconsmapeight\symbol{12}}
- \expandafter\def\csname simpleicon@muoicon\endcsname {\simpleiconsmapeight\symbol{13}}
- \expandafter\def\csname simpleicon@muralicon\endcsname {\simpleiconsmapeight\symbol{14}}
- \expandafter\def\csname simpleicon@musescoreicon\endcsname {\simpleiconsmapeight\symbol{15}}
- \expandafter\def\csname simpleicon@musicbrainzicon\endcsname {\simpleiconsmapeight\symbol{16}}
- \expandafter\def\csname simpleicon@mxlinuxicon\endcsname {\simpleiconsmapeight\symbol{17}}
- \expandafter\def\csname simpleicon@myanimelisticon\endcsname {\simpleiconsmapeight\symbol{18}}
- \expandafter\def\csname simpleicon@mygeticon\endcsname {\simpleiconsmapeight\symbol{19}}
- \expandafter\def\csname simpleicon@myobicon\endcsname {\simpleiconsmapeight\symbol{20}}
- \expandafter\def\csname simpleicon@myspaceicon\endcsname {\simpleiconsmapeight\symbol{21}}
- \expandafter\def\csname simpleicon@mysqlicon\endcsname {\simpleiconsmapeight\symbol{22}}
- \expandafter\def\csname simpleicon@n26icon\endcsname {\simpleiconsmapeight\symbol{23}}
- \expandafter\def\csname simpleicon@n8nicon\endcsname {\simpleiconsmapeight\symbol{24}}
- \expandafter\def\csname simpleicon@namebaseicon\endcsname {\simpleiconsmapeight\symbol{25}}
- \expandafter\def\csname simpleicon@namecheapicon\endcsname {\simpleiconsmapeight\symbol{26}}
- \expandafter\def\csname simpleicon@namemcicon\endcsname {\simpleiconsmapeight\symbol{27}}
- \expandafter\def\csname simpleicon@namesiloicon\endcsname {\simpleiconsmapeight\symbol{28}}
- \expandafter\def\csname simpleicon@namuwikiicon\endcsname {\simpleiconsmapeight\symbol{29}}
- \expandafter\def\csname simpleicon@nanoicon\endcsname {\simpleiconsmapeight\symbol{30}}
- \expandafter\def\csname simpleicon@nasaicon\endcsname {\simpleiconsmapeight\symbol{31}}
- \expandafter\def\csname simpleicon@nationalgridicon\endcsname {\simpleiconsmapeight\symbol{32}}
- \expandafter\def\csname simpleicon@nationalrailicon\endcsname {\simpleiconsmapeight\symbol{33}}
- \expandafter\def\csname simpleicon@nativescripticon\endcsname {\simpleiconsmapeight\symbol{34}}
- \expandafter\def\csname simpleicon@natsdotioicon\endcsname {\simpleiconsmapeight\symbol{35}}
- \expandafter\def\csname simpleicon@navericon\endcsname {\simpleiconsmapeight\symbol{36}}
- \expandafter\def\csname simpleicon@nbaicon\endcsname {\simpleiconsmapeight\symbol{37}}
- \expandafter\def\csname simpleicon@nbbicon\endcsname {\simpleiconsmapeight\symbol{38}}
- \expandafter\def\csname simpleicon@nbcicon\endcsname {\simpleiconsmapeight\symbol{39}}
- \expandafter\def\csname simpleicon@ndricon\endcsname {\simpleiconsmapeight\symbol{40}}
- \expandafter\def\csname simpleicon@nearicon\endcsname {\simpleiconsmapeight\symbol{41}}
- \expandafter\def\csname simpleicon@necicon\endcsname {\simpleiconsmapeight\symbol{42}}
- \expandafter\def\csname simpleicon@neo4jicon\endcsname {\simpleiconsmapeight\symbol{43}}
- \expandafter\def\csname simpleicon@neovimicon\endcsname {\simpleiconsmapeight\symbol{44}}
- \expandafter\def\csname simpleicon@neptuneicon\endcsname {\simpleiconsmapeight\symbol{45}}
- \expandafter\def\csname simpleicon@nestjsicon\endcsname {\simpleiconsmapeight\symbol{46}}
- \expandafter\def\csname simpleicon@netappicon\endcsname {\simpleiconsmapeight\symbol{47}}
- \expandafter\def\csname simpleicon@netbsdicon\endcsname {\simpleiconsmapeight\symbol{48}}
- \expandafter\def\csname simpleicon@netcupicon\endcsname {\simpleiconsmapeight\symbol{49}}
- \expandafter\def\csname simpleicon@netdataicon\endcsname {\simpleiconsmapeight\symbol{50}}
- \expandafter\def\csname simpleicon@neteasecloudmusicicon\endcsname {\simpleiconsmapeight\symbol{51}}
- \expandafter\def\csname simpleicon@netflixicon\endcsname {\simpleiconsmapeight\symbol{52}}
- \expandafter\def\csname simpleicon@netgearicon\endcsname {\simpleiconsmapeight\symbol{53}}
- \expandafter\def\csname simpleicon@netlifyicon\endcsname {\simpleiconsmapeight\symbol{54}}
- \expandafter\def\csname simpleicon@netteicon\endcsname {\simpleiconsmapeight\symbol{55}}
- \expandafter\def\csname simpleicon@nettoicon\endcsname {\simpleiconsmapeight\symbol{56}}
- \expandafter\def\csname simpleicon@neutralinojsicon\endcsname {\simpleiconsmapeight\symbol{57}}
- \expandafter\def\csname simpleicon@newbalanceicon\endcsname {\simpleiconsmapeight\symbol{58}}
- \expandafter\def\csname simpleicon@neweggicon\endcsname {\simpleiconsmapeight\symbol{59}}
- \expandafter\def\csname simpleicon@newjapanprowrestlingicon\endcsname {\simpleiconsmapeight\symbol{60}}
- \expandafter\def\csname simpleicon@newrelicicon\endcsname {\simpleiconsmapeight\symbol{61}}
- \expandafter\def\csname simpleicon@newyorktimesicon\endcsname {\simpleiconsmapeight\symbol{62}}
- \expandafter\def\csname simpleicon@nextbilliondotaiicon\endcsname {\simpleiconsmapeight\symbol{63}}
- \expandafter\def\csname simpleicon@nextcloudicon\endcsname {\simpleiconsmapeight\symbol{64}}
- \expandafter\def\csname simpleicon@nextdnsicon\endcsname {\simpleiconsmapeight\symbol{65}}
- \expandafter\def\csname simpleicon@nextdooricon\endcsname {\simpleiconsmapeight\symbol{66}}
- \expandafter\def\csname simpleicon@nextdotjsicon\endcsname {\simpleiconsmapeight\symbol{67}}
- \expandafter\def\csname simpleicon@nextraicon\endcsname {\simpleiconsmapeight\symbol{68}}
- \expandafter\def\csname simpleicon@nextuiicon\endcsname {\simpleiconsmapeight\symbol{69}}
- \expandafter\def\csname simpleicon@nexusmodsicon\endcsname {\simpleiconsmapeight\symbol{70}}
- \expandafter\def\csname simpleicon@nfcicon\endcsname {\simpleiconsmapeight\symbol{71}}
- \expandafter\def\csname simpleicon@nginxicon\endcsname {\simpleiconsmapeight\symbol{72}}
- \expandafter\def\csname simpleicon@nginxproxymanagericon\endcsname {\simpleiconsmapeight\symbol{73}}
- \expandafter\def\csname simpleicon@ngrokicon\endcsname {\simpleiconsmapeight\symbol{74}}
- \expandafter\def\csname simpleicon@ngrxicon\endcsname {\simpleiconsmapeight\symbol{75}}
- \expandafter\def\csname simpleicon@nhlicon\endcsname {\simpleiconsmapeight\symbol{76}}
- \expandafter\def\csname simpleicon@nicehashicon\endcsname {\simpleiconsmapeight\symbol{77}}
- \expandafter\def\csname simpleicon@niconicoicon\endcsname {\simpleiconsmapeight\symbol{78}}
- \expandafter\def\csname simpleicon@nikeicon\endcsname {\simpleiconsmapeight\symbol{79}}
- \expandafter\def\csname simpleicon@nikonicon\endcsname {\simpleiconsmapeight\symbol{80}}
- \expandafter\def\csname simpleicon@nimicon\endcsname {\simpleiconsmapeight\symbol{81}}
- \expandafter\def\csname simpleicon@nintendoicon\endcsname {\simpleiconsmapeight\symbol{82}}
- \expandafter\def\csname simpleicon@nintendo3dsicon\endcsname {\simpleiconsmapeight\symbol{83}}
- \expandafter\def\csname simpleicon@nintendogamecubeicon\endcsname {\simpleiconsmapeight\symbol{84}}
- \expandafter\def\csname simpleicon@nintendoswitchicon\endcsname {\simpleiconsmapeight\symbol{85}}
- \expandafter\def\csname simpleicon@nissanicon\endcsname {\simpleiconsmapeight\symbol{86}}
- \expandafter\def\csname simpleicon@nixosicon\endcsname {\simpleiconsmapeight\symbol{87}}
- \expandafter\def\csname simpleicon@nodedotjsicon\endcsname {\simpleiconsmapeight\symbol{88}}
- \expandafter\def\csname simpleicon@nodemonicon\endcsname {\simpleiconsmapeight\symbol{89}}
- \expandafter\def\csname simpleicon@noderedicon\endcsname {\simpleiconsmapeight\symbol{90}}
- \expandafter\def\csname simpleicon@nokiaicon\endcsname {\simpleiconsmapeight\symbol{91}}
- \expandafter\def\csname simpleicon@nomadicon\endcsname {\simpleiconsmapeight\symbol{92}}
- \expandafter\def\csname simpleicon@norcoicon\endcsname {\simpleiconsmapeight\symbol{93}}
- \expandafter\def\csname simpleicon@nordicsemiconductoricon\endcsname {\simpleiconsmapeight\symbol{94}}
- \expandafter\def\csname simpleicon@nordvpnicon\endcsname {\simpleiconsmapeight\symbol{95}}
- \expandafter\def\csname simpleicon@normalizedotcssicon\endcsname {\simpleiconsmapeight\symbol{96}}
- \expandafter\def\csname simpleicon@nortonicon\endcsname {\simpleiconsmapeight\symbol{97}}
- \expandafter\def\csname simpleicon@norwegianicon\endcsname {\simpleiconsmapeight\symbol{98}}
- \expandafter\def\csname simpleicon@notepadplusplusicon\endcsname {\simpleiconsmapeight\symbol{99}}
- \expandafter\def\csname simpleicon@notionicon\endcsname {\simpleiconsmapeight\symbol{100}}
- \expandafter\def\csname simpleicon@notisticon\endcsname {\simpleiconsmapeight\symbol{101}}
- \expandafter\def\csname simpleicon@nounprojecticon\endcsname {\simpleiconsmapeight\symbol{102}}
- \expandafter\def\csname simpleicon@novuicon\endcsname {\simpleiconsmapeight\symbol{103}}
- \expandafter\def\csname simpleicon@nowicon\endcsname {\simpleiconsmapeight\symbol{104}}
- \expandafter\def\csname simpleicon@npmicon\endcsname {\simpleiconsmapeight\symbol{105}}
- \expandafter\def\csname simpleicon@nrwlicon\endcsname {\simpleiconsmapeight\symbol{106}}
- \expandafter\def\csname simpleicon@nsisicon\endcsname {\simpleiconsmapeight\symbol{107}}
- \expandafter\def\csname simpleicon@ntfyicon\endcsname {\simpleiconsmapeight\symbol{108}}
- \expandafter\def\csname simpleicon@nubankicon\endcsname {\simpleiconsmapeight\symbol{109}}
- \expandafter\def\csname simpleicon@nucleoicon\endcsname {\simpleiconsmapeight\symbol{110}}
- \expandafter\def\csname simpleicon@nugeticon\endcsname {\simpleiconsmapeight\symbol{111}}
- \expandafter\def\csname simpleicon@nukeicon\endcsname {\simpleiconsmapeight\symbol{112}}
- \expandafter\def\csname simpleicon@numbaicon\endcsname {\simpleiconsmapeight\symbol{113}}
- \expandafter\def\csname simpleicon@numpyicon\endcsname {\simpleiconsmapeight\symbol{114}}
- \expandafter\def\csname simpleicon@nunjucksicon\endcsname {\simpleiconsmapeight\symbol{115}}
- \expandafter\def\csname simpleicon@nushellicon\endcsname {\simpleiconsmapeight\symbol{116}}
- \expandafter\def\csname simpleicon@nutanixicon\endcsname {\simpleiconsmapeight\symbol{117}}
- \expandafter\def\csname simpleicon@nuxtdotjsicon\endcsname {\simpleiconsmapeight\symbol{118}}
- \expandafter\def\csname simpleicon@nvidiaicon\endcsname {\simpleiconsmapeight\symbol{119}}
- \expandafter\def\csname simpleicon@nvmicon\endcsname {\simpleiconsmapeight\symbol{120}}
- \expandafter\def\csname simpleicon@nxicon\endcsname {\simpleiconsmapeight\symbol{121}}
- \expandafter\def\csname simpleicon@nxpicon\endcsname {\simpleiconsmapeight\symbol{122}}
- \expandafter\def\csname simpleicon@nzxticon\endcsname {\simpleiconsmapeight\symbol{123}}
- \expandafter\def\csname simpleicon@observableicon\endcsname {\simpleiconsmapeight\symbol{124}}
- \expandafter\def\csname simpleicon@obsidianicon\endcsname {\simpleiconsmapeight\symbol{125}}
- \expandafter\def\csname simpleicon@obsstudioicon\endcsname {\simpleiconsmapeight\symbol{126}}
- \expandafter\def\csname simpleicon@ocamlicon\endcsname {\simpleiconsmapeight\symbol{127}}
- \expandafter\def\csname simpleicon@oclificon\endcsname {\simpleiconsmapeight\symbol{128}}
- \expandafter\def\csname simpleicon@octanerendericon\endcsname {\simpleiconsmapeight\symbol{129}}
- \expandafter\def\csname simpleicon@octaveicon\endcsname {\simpleiconsmapeight\symbol{130}}
- \expandafter\def\csname simpleicon@octobercmsicon\endcsname {\simpleiconsmapeight\symbol{131}}
- \expandafter\def\csname simpleicon@octoprinticon\endcsname {\simpleiconsmapeight\symbol{132}}
- \expandafter\def\csname simpleicon@octopusdeployicon\endcsname {\simpleiconsmapeight\symbol{133}}
- \expandafter\def\csname simpleicon@oculusicon\endcsname {\simpleiconsmapeight\symbol{134}}
- \expandafter\def\csname simpleicon@odnoklassnikiicon\endcsname {\simpleiconsmapeight\symbol{135}}
- \expandafter\def\csname simpleicon@odooicon\endcsname {\simpleiconsmapeight\symbol{136}}
- \expandafter\def\csname simpleicon@odyseeicon\endcsname {\simpleiconsmapeight\symbol{137}}
- \expandafter\def\csname simpleicon@ohdearicon\endcsname {\simpleiconsmapeight\symbol{138}}
- \expandafter\def\csname simpleicon@okcupidicon\endcsname {\simpleiconsmapeight\symbol{139}}
- \expandafter\def\csname simpleicon@oktaicon\endcsname {\simpleiconsmapeight\symbol{140}}
- \expandafter\def\csname simpleicon@oneplusicon\endcsname {\simpleiconsmapeight\symbol{141}}
- \expandafter\def\csname simpleicon@onlyfansicon\endcsname {\simpleiconsmapeight\symbol{142}}
- \expandafter\def\csname simpleicon@onlyofficeicon\endcsname {\simpleiconsmapeight\symbol{143}}
- \expandafter\def\csname simpleicon@onnxicon\endcsname {\simpleiconsmapeight\symbol{144}}
- \expandafter\def\csname simpleicon@onstaricon\endcsname {\simpleiconsmapeight\symbol{145}}
- \expandafter\def\csname simpleicon@opelicon\endcsname {\simpleiconsmapeight\symbol{146}}
- \expandafter\def\csname simpleicon@openaccessicon\endcsname {\simpleiconsmapeight\symbol{147}}
- \expandafter\def\csname simpleicon@openaiicon\endcsname {\simpleiconsmapeight\symbol{148}}
- \expandafter\def\csname simpleicon@openaigymicon\endcsname {\simpleiconsmapeight\symbol{149}}
- \expandafter\def\csname simpleicon@openapiinitiativeicon\endcsname {\simpleiconsmapeight\symbol{150}}
- \expandafter\def\csname simpleicon@openbadgesicon\endcsname {\simpleiconsmapeight\symbol{151}}
- \expandafter\def\csname simpleicon@openbsdicon\endcsname {\simpleiconsmapeight\symbol{152}}
- \expandafter\def\csname simpleicon@openbugbountyicon\endcsname {\simpleiconsmapeight\symbol{153}}
- \expandafter\def\csname simpleicon@opencollectiveicon\endcsname {\simpleiconsmapeight\symbol{154}}
- \expandafter\def\csname simpleicon@opencontainersinitiativeicon\endcsname {\simpleiconsmapeight\symbol{155}}
- \expandafter\def\csname simpleicon@opencvicon\endcsname {\simpleiconsmapeight\symbol{156}}
- \expandafter\def\csname simpleicon@openfaasicon\endcsname {\simpleiconsmapeight\symbol{157}}
- \expandafter\def\csname simpleicon@openglicon\endcsname {\simpleiconsmapeight\symbol{158}}
- \expandafter\def\csname simpleicon@openhabicon\endcsname {\simpleiconsmapeight\symbol{159}}
- \expandafter\def\csname simpleicon@openidicon\endcsname {\simpleiconsmapeight\symbol{160}}
- \expandafter\def\csname simpleicon@openjdkicon\endcsname {\simpleiconsmapeight\symbol{161}}
- \expandafter\def\csname simpleicon@openjsfoundationicon\endcsname {\simpleiconsmapeight\symbol{162}}
- \expandafter\def\csname simpleicon@openlayersicon\endcsname {\simpleiconsmapeight\symbol{163}}
- \expandafter\def\csname simpleicon@openmediavaulticon\endcsname {\simpleiconsmapeight\symbol{164}}
- \expandafter\def\csname simpleicon@openminedicon\endcsname {\simpleiconsmapeight\symbol{165}}
- \expandafter\def\csname simpleicon@opennebulaicon\endcsname {\simpleiconsmapeight\symbol{166}}
- \expandafter\def\csname simpleicon@openprojecticon\endcsname {\simpleiconsmapeight\symbol{167}}
- \expandafter\def\csname simpleicon@openscadicon\endcsname {\simpleiconsmapeight\symbol{168}}
- \expandafter\def\csname simpleicon@openseaicon\endcsname {\simpleiconsmapeight\symbol{169}}
- \expandafter\def\csname simpleicon@opensearchicon\endcsname {\simpleiconsmapeight\symbol{170}}
- \expandafter\def\csname simpleicon@opensourcehardwareicon\endcsname {\simpleiconsmapeight\symbol{171}}
- \expandafter\def\csname simpleicon@opensourceinitiativeicon\endcsname {\simpleiconsmapeight\symbol{172}}
- \expandafter\def\csname simpleicon@opensslicon\endcsname {\simpleiconsmapeight\symbol{173}}
- \expandafter\def\csname simpleicon@openstackicon\endcsname {\simpleiconsmapeight\symbol{174}}
- \expandafter\def\csname simpleicon@openstreetmapicon\endcsname {\simpleiconsmapeight\symbol{175}}
- \expandafter\def\csname simpleicon@opensuseicon\endcsname {\simpleiconsmapeight\symbol{176}}
- \expandafter\def\csname simpleicon@opentelemetryicon\endcsname {\simpleiconsmapeight\symbol{177}}
- \expandafter\def\csname simpleicon@opentexticon\endcsname {\simpleiconsmapeight\symbol{178}}
- \expandafter\def\csname simpleicon@opentofuicon\endcsname {\simpleiconsmapeight\symbol{179}}
- \expandafter\def\csname simpleicon@openverseicon\endcsname {\simpleiconsmapeight\symbol{180}}
- \expandafter\def\csname simpleicon@openvpnicon\endcsname {\simpleiconsmapeight\symbol{181}}
- \expandafter\def\csname simpleicon@openwrticon\endcsname {\simpleiconsmapeight\symbol{182}}
- \expandafter\def\csname simpleicon@openzeppelinicon\endcsname {\simpleiconsmapeight\symbol{183}}
- \expandafter\def\csname simpleicon@openzfsicon\endcsname {\simpleiconsmapeight\symbol{184}}
- \expandafter\def\csname simpleicon@operaicon\endcsname {\simpleiconsmapeight\symbol{185}}
- \expandafter\def\csname simpleicon@operagxicon\endcsname {\simpleiconsmapeight\symbol{186}}
- \expandafter\def\csname simpleicon@opnsenseicon\endcsname {\simpleiconsmapeight\symbol{187}}
- \expandafter\def\csname simpleicon@oppoicon\endcsname {\simpleiconsmapeight\symbol{188}}
- \expandafter\def\csname simpleicon@opsgenieicon\endcsname {\simpleiconsmapeight\symbol{189}}
- \expandafter\def\csname simpleicon@opslevelicon\endcsname {\simpleiconsmapeight\symbol{190}}
- \expandafter\def\csname simpleicon@optimismicon\endcsname {\simpleiconsmapeight\symbol{191}}
- \expandafter\def\csname simpleicon@oracleicon\endcsname {\simpleiconsmapeight\symbol{192}}
- \expandafter\def\csname simpleicon@orangeicon\endcsname {\simpleiconsmapeight\symbol{193}}
- \expandafter\def\csname simpleicon@orcidicon\endcsname {\simpleiconsmapeight\symbol{194}}
- \expandafter\def\csname simpleicon@oreillyicon\endcsname {\simpleiconsmapeight\symbol{195}}
- \expandafter\def\csname simpleicon@orgicon\endcsname {\simpleiconsmapeight\symbol{196}}
- \expandafter\def\csname simpleicon@originicon\endcsname {\simpleiconsmapeight\symbol{197}}
- \expandafter\def\csname simpleicon@osanoicon\endcsname {\simpleiconsmapeight\symbol{198}}
- \expandafter\def\csname simpleicon@osficon\endcsname {\simpleiconsmapeight\symbol{199}}
- \expandafter\def\csname simpleicon@osgeoicon\endcsname {\simpleiconsmapeight\symbol{200}}
- \expandafter\def\csname simpleicon@oshkoshicon\endcsname {\simpleiconsmapeight\symbol{201}}
- \expandafter\def\csname simpleicon@osmcicon\endcsname {\simpleiconsmapeight\symbol{202}}
- \expandafter\def\csname simpleicon@osuicon\endcsname {\simpleiconsmapeight\symbol{203}}
- \expandafter\def\csname simpleicon@ottoicon\endcsname {\simpleiconsmapeight\symbol{204}}
- \expandafter\def\csname simpleicon@overcasticon\endcsname {\simpleiconsmapeight\symbol{205}}
- \expandafter\def\csname simpleicon@overleaficon\endcsname {\simpleiconsmapeight\symbol{206}}
- \expandafter\def\csname simpleicon@ovhicon\endcsname {\simpleiconsmapeight\symbol{207}}
- \expandafter\def\csname simpleicon@owaspicon\endcsname {\simpleiconsmapeight\symbol{208}}
- \expandafter\def\csname simpleicon@owncloudicon\endcsname {\simpleiconsmapeight\symbol{209}}
- \expandafter\def\csname simpleicon@oxygenicon\endcsname {\simpleiconsmapeight\symbol{210}}
- \expandafter\def\csname simpleicon@oyoicon\endcsname {\simpleiconsmapeight\symbol{211}}
- \expandafter\def\csname simpleicon@p5dotjsicon\endcsname {\simpleiconsmapeight\symbol{212}}
- \expandafter\def\csname simpleicon@packagisticon\endcsname {\simpleiconsmapeight\symbol{213}}
- \expandafter\def\csname simpleicon@packericon\endcsname {\simpleiconsmapeight\symbol{214}}
- \expandafter\def\csname simpleicon@packticon\endcsname {\simpleiconsmapeight\symbol{215}}
- \expandafter\def\csname simpleicon@paddleicon\endcsname {\simpleiconsmapeight\symbol{216}}
- \expandafter\def\csname simpleicon@paddlepaddleicon\endcsname {\simpleiconsmapeight\symbol{217}}
- \expandafter\def\csname simpleicon@paddypowericon\endcsname {\simpleiconsmapeight\symbol{218}}
- \expandafter\def\csname simpleicon@pagekiticon\endcsname {\simpleiconsmapeight\symbol{219}}
- \expandafter\def\csname simpleicon@pagerdutyicon\endcsname {\simpleiconsmapeight\symbol{220}}
- \expandafter\def\csname simpleicon@pagespeedinsightsicon\endcsname {\simpleiconsmapeight\symbol{221}}
- \expandafter\def\csname simpleicon@pagseguroicon\endcsname {\simpleiconsmapeight\symbol{222}}
- \expandafter\def\csname simpleicon@palantiricon\endcsname {\simpleiconsmapeight\symbol{223}}
- \expandafter\def\csname simpleicon@paloaltonetworksicon\endcsname {\simpleiconsmapeight\symbol{224}}
- \expandafter\def\csname simpleicon@paloaltosoftwareicon\endcsname {\simpleiconsmapeight\symbol{225}}
- \expandafter\def\csname simpleicon@panasonicicon\endcsname {\simpleiconsmapeight\symbol{226}}
- \expandafter\def\csname simpleicon@pandasicon\endcsname {\simpleiconsmapeight\symbol{227}}
- \expandafter\def\csname simpleicon@pandoraicon\endcsname {\simpleiconsmapeight\symbol{228}}
- \expandafter\def\csname simpleicon@pantheonicon\endcsname {\simpleiconsmapeight\symbol{229}}
- \expandafter\def\csname simpleicon@paperlessngxicon\endcsname {\simpleiconsmapeight\symbol{230}}
- \expandafter\def\csname simpleicon@paperspaceicon\endcsname {\simpleiconsmapeight\symbol{231}}
- \expandafter\def\csname simpleicon@paperswithcodeicon\endcsname {\simpleiconsmapeight\symbol{232}}
- \expandafter\def\csname simpleicon@paramountplusicon\endcsname {\simpleiconsmapeight\symbol{233}}
- \expandafter\def\csname simpleicon@paritysubstrateicon\endcsname {\simpleiconsmapeight\symbol{234}}
- \expandafter\def\csname simpleicon@parrotsecurityicon\endcsname {\simpleiconsmapeight\symbol{235}}
- \expandafter\def\csname simpleicon@parsedotlyicon\endcsname {\simpleiconsmapeight\symbol{236}}
- \expandafter\def\csname simpleicon@passporticon\endcsname {\simpleiconsmapeight\symbol{237}}
- \expandafter\def\csname simpleicon@pastebinicon\endcsname {\simpleiconsmapeight\symbol{238}}
- \expandafter\def\csname simpleicon@patreonicon\endcsname {\simpleiconsmapeight\symbol{239}}
- \expandafter\def\csname simpleicon@paychexicon\endcsname {\simpleiconsmapeight\symbol{240}}
- \expandafter\def\csname simpleicon@payhipicon\endcsname {\simpleiconsmapeight\symbol{241}}
- \expandafter\def\csname simpleicon@payloadcmsicon\endcsname {\simpleiconsmapeight\symbol{242}}
- \expandafter\def\csname simpleicon@payoneericon\endcsname {\simpleiconsmapeight\symbol{243}}
- \expandafter\def\csname simpleicon@paypalicon\endcsname {\simpleiconsmapeight\symbol{244}}
- \expandafter\def\csname simpleicon@paytmicon\endcsname {\simpleiconsmapeight\symbol{245}}
- \expandafter\def\csname simpleicon@pcgamingwikiicon\endcsname {\simpleiconsmapeight\symbol{246}}
- \expandafter\def\csname simpleicon@pdmicon\endcsname {\simpleiconsmapeight\symbol{247}}
- \expandafter\def\csname simpleicon@pdqicon\endcsname {\simpleiconsmapeight\symbol{248}}
- \expandafter\def\csname simpleicon@peakdesignicon\endcsname {\simpleiconsmapeight\symbol{249}}
- \expandafter\def\csname simpleicon@pearsonicon\endcsname {\simpleiconsmapeight\symbol{250}}
- \expandafter\def\csname simpleicon@peerlisticon\endcsname {\simpleiconsmapeight\symbol{251}}
- \expandafter\def\csname simpleicon@peertubeicon\endcsname {\simpleiconsmapeight\symbol{252}}
- \expandafter\def\csname simpleicon@pegasusairlinesicon\endcsname {\simpleiconsmapeight\symbol{253}}
- \expandafter\def\csname simpleicon@pelicanicon\endcsname {\simpleiconsmapeight\symbol{254}}
- \expandafter\def\csname simpleicon@pelotonicon\endcsname {\simpleiconsmapeight\symbol{255}}
- \expandafter\def\csname simpleicon@pennyicon\endcsname {\simpleiconsmapnine\symbol{0}}
- \expandafter\def\csname simpleicon@penpoticon\endcsname {\simpleiconsmapnine\symbol{1}}
- \expandafter\def\csname simpleicon@percyicon\endcsname {\simpleiconsmapnine\symbol{2}}
- \expandafter\def\csname simpleicon@perforceicon\endcsname {\simpleiconsmapnine\symbol{3}}
- \expandafter\def\csname simpleicon@perlicon\endcsname {\simpleiconsmapnine\symbol{4}}
- \expandafter\def\csname simpleicon@perplexityicon\endcsname {\simpleiconsmapnine\symbol{5}}
- \expandafter\def\csname simpleicon@persistenticon\endcsname {\simpleiconsmapnine\symbol{6}}
- \expandafter\def\csname simpleicon@personioicon\endcsname {\simpleiconsmapnine\symbol{7}}
- \expandafter\def\csname simpleicon@petsathomeicon\endcsname {\simpleiconsmapnine\symbol{8}}
- \expandafter\def\csname simpleicon@peugeoticon\endcsname {\simpleiconsmapnine\symbol{9}}
- \expandafter\def\csname simpleicon@pexelsicon\endcsname {\simpleiconsmapnine\symbol{10}}
- \expandafter\def\csname simpleicon@pfsenseicon\endcsname {\simpleiconsmapnine\symbol{11}}
- \expandafter\def\csname simpleicon@phabricatoricon\endcsname {\simpleiconsmapnine\symbol{12}}
- \expandafter\def\csname simpleicon@philipshueicon\endcsname {\simpleiconsmapnine\symbol{13}}
- \expandafter\def\csname simpleicon@phoenixframeworkicon\endcsname {\simpleiconsmapnine\symbol{14}}
- \expandafter\def\csname simpleicon@phonepeicon\endcsname {\simpleiconsmapnine\symbol{15}}
- \expandafter\def\csname simpleicon@phosphoriconsicon\endcsname {\simpleiconsmapnine\symbol{16}}
- \expandafter\def\csname simpleicon@photobucketicon\endcsname {\simpleiconsmapnine\symbol{17}}
- \expandafter\def\csname simpleicon@photocrowdicon\endcsname {\simpleiconsmapnine\symbol{18}}
- \expandafter\def\csname simpleicon@photonicon\endcsname {\simpleiconsmapnine\symbol{19}}
- \expandafter\def\csname simpleicon@photopeaicon\endcsname {\simpleiconsmapnine\symbol{20}}
- \expandafter\def\csname simpleicon@phpicon\endcsname {\simpleiconsmapnine\symbol{21}}
- \expandafter\def\csname simpleicon@phpmyadminicon\endcsname {\simpleiconsmapnine\symbol{22}}
- \expandafter\def\csname simpleicon@phpstormicon\endcsname {\simpleiconsmapnine\symbol{23}}
- \expandafter\def\csname simpleicon@piaggiogroupicon\endcsname {\simpleiconsmapnine\symbol{24}}
- \expandafter\def\csname simpleicon@piaproicon\endcsname {\simpleiconsmapnine\symbol{25}}
- \expandafter\def\csname simpleicon@picardsurgelesicon\endcsname {\simpleiconsmapnine\symbol{26}}
- \expandafter\def\csname simpleicon@picartodottvicon\endcsname {\simpleiconsmapnine\symbol{27}}
- \expandafter\def\csname simpleicon@picnicicon\endcsname {\simpleiconsmapnine\symbol{28}}
- \expandafter\def\csname simpleicon@picpayicon\endcsname {\simpleiconsmapnine\symbol{29}}
- \expandafter\def\csname simpleicon@picrewicon\endcsname {\simpleiconsmapnine\symbol{30}}
- \expandafter\def\csname simpleicon@picxyicon\endcsname {\simpleiconsmapnine\symbol{31}}
- \expandafter\def\csname simpleicon@piholeicon\endcsname {\simpleiconsmapnine\symbol{32}}
- \expandafter\def\csname simpleicon@pimcoreicon\endcsname {\simpleiconsmapnine\symbol{33}}
- \expandafter\def\csname simpleicon@pinboardicon\endcsname {\simpleiconsmapnine\symbol{34}}
- \expandafter\def\csname simpleicon@pinescripticon\endcsname {\simpleiconsmapnine\symbol{35}}
- \expandafter\def\csname simpleicon@pinetworkicon\endcsname {\simpleiconsmapnine\symbol{36}}
- \expandafter\def\csname simpleicon@pingdomicon\endcsname {\simpleiconsmapnine\symbol{37}}
- \expandafter\def\csname simpleicon@pinoicon\endcsname {\simpleiconsmapnine\symbol{38}}
- \expandafter\def\csname simpleicon@pinteresticon\endcsname {\simpleiconsmapnine\symbol{39}}
- \expandafter\def\csname simpleicon@pioneerdjicon\endcsname {\simpleiconsmapnine\symbol{40}}
- \expandafter\def\csname simpleicon@pipedicon\endcsname {\simpleiconsmapnine\symbol{41}}
- \expandafter\def\csname simpleicon@pipxicon\endcsname {\simpleiconsmapnine\symbol{42}}
- \expandafter\def\csname simpleicon@pivotaltrackericon\endcsname {\simpleiconsmapnine\symbol{43}}
- \expandafter\def\csname simpleicon@piwigoicon\endcsname {\simpleiconsmapnine\symbol{44}}
- \expandafter\def\csname simpleicon@pixicon\endcsname {\simpleiconsmapnine\symbol{45}}
- \expandafter\def\csname simpleicon@pixabayicon\endcsname {\simpleiconsmapnine\symbol{46}}
- \expandafter\def\csname simpleicon@pixelfedicon\endcsname {\simpleiconsmapnine\symbol{47}}
- \expandafter\def\csname simpleicon@pixivicon\endcsname {\simpleiconsmapnine\symbol{48}}
- \expandafter\def\csname simpleicon@pixlricon\endcsname {\simpleiconsmapnine\symbol{49}}
- \expandafter\def\csname simpleicon@pkgsrcicon\endcsname {\simpleiconsmapnine\symbol{50}}
- \expandafter\def\csname simpleicon@planeticon\endcsname {\simpleiconsmapnine\symbol{51}}
- \expandafter\def\csname simpleicon@planetscaleicon\endcsname {\simpleiconsmapnine\symbol{52}}
- \expandafter\def\csname simpleicon@plangridicon\endcsname {\simpleiconsmapnine\symbol{53}}
- \expandafter\def\csname simpleicon@platformdotshicon\endcsname {\simpleiconsmapnine\symbol{54}}
- \expandafter\def\csname simpleicon@platformioicon\endcsname {\simpleiconsmapnine\symbol{55}}
- \expandafter\def\csname simpleicon@platziicon\endcsname {\simpleiconsmapnine\symbol{56}}
- \expandafter\def\csname simpleicon@plausibleanalyticsicon\endcsname {\simpleiconsmapnine\symbol{57}}
- \expandafter\def\csname simpleicon@playcanvasicon\endcsname {\simpleiconsmapnine\symbol{58}}
- \expandafter\def\csname simpleicon@playerdotmeicon\endcsname {\simpleiconsmapnine\symbol{59}}
- \expandafter\def\csname simpleicon@playerfmicon\endcsname {\simpleiconsmapnine\symbol{60}}
- \expandafter\def\csname simpleicon@playstationicon\endcsname {\simpleiconsmapnine\symbol{61}}
- \expandafter\def\csname simpleicon@playstation2icon\endcsname {\simpleiconsmapnine\symbol{62}}
- \expandafter\def\csname simpleicon@playstation3icon\endcsname {\simpleiconsmapnine\symbol{63}}
- \expandafter\def\csname simpleicon@playstation4icon\endcsname {\simpleiconsmapnine\symbol{64}}
- \expandafter\def\csname simpleicon@playstation5icon\endcsname {\simpleiconsmapnine\symbol{65}}
- \expandafter\def\csname simpleicon@playstationvitaicon\endcsname {\simpleiconsmapnine\symbol{66}}
- \expandafter\def\csname simpleicon@playwrighticon\endcsname {\simpleiconsmapnine\symbol{67}}
- \expandafter\def\csname simpleicon@pleromaicon\endcsname {\simpleiconsmapnine\symbol{68}}
- \expandafter\def\csname simpleicon@pleskicon\endcsname {\simpleiconsmapnine\symbol{69}}
- \expandafter\def\csname simpleicon@plexicon\endcsname {\simpleiconsmapnine\symbol{70}}
- \expandafter\def\csname simpleicon@plotlyicon\endcsname {\simpleiconsmapnine\symbol{71}}
- \expandafter\def\csname simpleicon@pluralsighticon\endcsname {\simpleiconsmapnine\symbol{72}}
- \expandafter\def\csname simpleicon@plurkicon\endcsname {\simpleiconsmapnine\symbol{73}}
- \expandafter\def\csname simpleicon@pluscodesicon\endcsname {\simpleiconsmapnine\symbol{74}}
- \expandafter\def\csname simpleicon@pm2icon\endcsname {\simpleiconsmapnine\symbol{75}}
- \expandafter\def\csname simpleicon@pnpmicon\endcsname {\simpleiconsmapnine\symbol{76}}
- \expandafter\def\csname simpleicon@pocketicon\endcsname {\simpleiconsmapnine\symbol{77}}
- \expandafter\def\csname simpleicon@pocketbaseicon\endcsname {\simpleiconsmapnine\symbol{78}}
- \expandafter\def\csname simpleicon@pocketcastsicon\endcsname {\simpleiconsmapnine\symbol{79}}
- \expandafter\def\csname simpleicon@podcastaddicticon\endcsname {\simpleiconsmapnine\symbol{80}}
- \expandafter\def\csname simpleicon@podcastindexicon\endcsname {\simpleiconsmapnine\symbol{81}}
- \expandafter\def\csname simpleicon@podmanicon\endcsname {\simpleiconsmapnine\symbol{82}}
- \expandafter\def\csname simpleicon@poeicon\endcsname {\simpleiconsmapnine\symbol{83}}
- \expandafter\def\csname simpleicon@poetryicon\endcsname {\simpleiconsmapnine\symbol{84}}
- \expandafter\def\csname simpleicon@pointyicon\endcsname {\simpleiconsmapnine\symbol{85}}
- \expandafter\def\csname simpleicon@pokemonicon\endcsname {\simpleiconsmapnine\symbol{86}}
- \expandafter\def\csname simpleicon@polarsicon\endcsname {\simpleiconsmapnine\symbol{87}}
- \expandafter\def\csname simpleicon@polestaricon\endcsname {\simpleiconsmapnine\symbol{88}}
- \expandafter\def\csname simpleicon@polkadoticon\endcsname {\simpleiconsmapnine\symbol{89}}
- \expandafter\def\csname simpleicon@polyicon\endcsname {\simpleiconsmapnine\symbol{90}}
- \expandafter\def\csname simpleicon@polygonicon\endcsname {\simpleiconsmapnine\symbol{91}}
- \expandafter\def\csname simpleicon@polymerprojecticon\endcsname {\simpleiconsmapnine\symbol{92}}
- \expandafter\def\csname simpleicon@polyworkicon\endcsname {\simpleiconsmapnine\symbol{93}}
- \expandafter\def\csname simpleicon@pond5icon\endcsname {\simpleiconsmapnine\symbol{94}}
- \expandafter\def\csname simpleicon@poposicon\endcsname {\simpleiconsmapnine\symbol{95}}
- \expandafter\def\csname simpleicon@porkbunicon\endcsname {\simpleiconsmapnine\symbol{96}}
- \expandafter\def\csname simpleicon@porscheicon\endcsname {\simpleiconsmapnine\symbol{97}}
- \expandafter\def\csname simpleicon@portainericon\endcsname {\simpleiconsmapnine\symbol{98}}
- \expandafter\def\csname simpleicon@portswiggericon\endcsname {\simpleiconsmapnine\symbol{99}}
- \expandafter\def\csname simpleicon@positicon\endcsname {\simpleiconsmapnine\symbol{100}}
- \expandafter\def\csname simpleicon@postcssicon\endcsname {\simpleiconsmapnine\symbol{101}}
- \expandafter\def\csname simpleicon@postgresqlicon\endcsname {\simpleiconsmapnine\symbol{102}}
- \expandafter\def\csname simpleicon@posthogicon\endcsname {\simpleiconsmapnine\symbol{103}}
- \expandafter\def\csname simpleicon@postmanicon\endcsname {\simpleiconsmapnine\symbol{104}}
- \expandafter\def\csname simpleicon@postmatesicon\endcsname {\simpleiconsmapnine\symbol{105}}
- \expandafter\def\csname simpleicon@powerappsicon\endcsname {\simpleiconsmapnine\symbol{106}}
- \expandafter\def\csname simpleicon@powerautomateicon\endcsname {\simpleiconsmapnine\symbol{107}}
- \expandafter\def\csname simpleicon@powerbiicon\endcsname {\simpleiconsmapnine\symbol{108}}
- \expandafter\def\csname simpleicon@powerfxicon\endcsname {\simpleiconsmapnine\symbol{109}}
- \expandafter\def\csname simpleicon@powerpagesicon\endcsname {\simpleiconsmapnine\symbol{110}}
- \expandafter\def\csname simpleicon@powersicon\endcsname {\simpleiconsmapnine\symbol{111}}
- \expandafter\def\csname simpleicon@powershellicon\endcsname {\simpleiconsmapnine\symbol{112}}
- \expandafter\def\csname simpleicon@powervirtualagentsicon\endcsname {\simpleiconsmapnine\symbol{113}}
- \expandafter\def\csname simpleicon@prdotcoicon\endcsname {\simpleiconsmapnine\symbol{114}}
- \expandafter\def\csname simpleicon@preacticon\endcsname {\simpleiconsmapnine\symbol{115}}
- \expandafter\def\csname simpleicon@precommiticon\endcsname {\simpleiconsmapnine\symbol{116}}
- \expandafter\def\csname simpleicon@prefecticon\endcsname {\simpleiconsmapnine\symbol{117}}
- \expandafter\def\csname simpleicon@premierleagueicon\endcsname {\simpleiconsmapnine\symbol{118}}
- \expandafter\def\csname simpleicon@prepbytesicon\endcsname {\simpleiconsmapnine\symbol{119}}
- \expandafter\def\csname simpleicon@prestashopicon\endcsname {\simpleiconsmapnine\symbol{120}}
- \expandafter\def\csname simpleicon@prestoicon\endcsname {\simpleiconsmapnine\symbol{121}}
- \expandafter\def\csname simpleicon@prettiericon\endcsname {\simpleiconsmapnine\symbol{122}}
- \expandafter\def\csname simpleicon@pretzelicon\endcsname {\simpleiconsmapnine\symbol{123}}
- \expandafter\def\csname simpleicon@preventionicon\endcsname {\simpleiconsmapnine\symbol{124}}
- \expandafter\def\csname simpleicon@preziicon\endcsname {\simpleiconsmapnine\symbol{125}}
- \expandafter\def\csname simpleicon@primeicon\endcsname {\simpleiconsmapnine\symbol{126}}
- \expandafter\def\csname simpleicon@primevideoicon\endcsname {\simpleiconsmapnine\symbol{127}}
- \expandafter\def\csname simpleicon@printablesicon\endcsname {\simpleiconsmapnine\symbol{128}}
- \expandafter\def\csname simpleicon@prismaicon\endcsname {\simpleiconsmapnine\symbol{129}}
- \expandafter\def\csname simpleicon@prismicicon\endcsname {\simpleiconsmapnine\symbol{130}}
- \expandafter\def\csname simpleicon@privatedivisionicon\endcsname {\simpleiconsmapnine\symbol{131}}
- \expandafter\def\csname simpleicon@privateinternetaccessicon\endcsname {\simpleiconsmapnine\symbol{132}}
- \expandafter\def\csname simpleicon@proboticon\endcsname {\simpleiconsmapnine\symbol{133}}
- \expandafter\def\csname simpleicon@processingfoundationicon\endcsname {\simpleiconsmapnine\symbol{134}}
- \expandafter\def\csname simpleicon@processwireicon\endcsname {\simpleiconsmapnine\symbol{135}}
- \expandafter\def\csname simpleicon@producthunticon\endcsname {\simpleiconsmapnine\symbol{136}}
- \expandafter\def\csname simpleicon@progateicon\endcsname {\simpleiconsmapnine\symbol{137}}
- \expandafter\def\csname simpleicon@progressicon\endcsname {\simpleiconsmapnine\symbol{138}}
- \expandafter\def\csname simpleicon@prometheusicon\endcsname {\simpleiconsmapnine\symbol{139}}
- \expandafter\def\csname simpleicon@pronounsdotpageicon\endcsname {\simpleiconsmapnine\symbol{140}}
- \expandafter\def\csname simpleicon@prosiebenicon\endcsname {\simpleiconsmapnine\symbol{141}}
- \expandafter\def\csname simpleicon@proteusicon\endcsname {\simpleiconsmapnine\symbol{142}}
- \expandafter\def\csname simpleicon@protocolsdotioicon\endcsname {\simpleiconsmapnine\symbol{143}}
- \expandafter\def\csname simpleicon@protodotioicon\endcsname {\simpleiconsmapnine\symbol{144}}
- \expandafter\def\csname simpleicon@protonicon\endcsname {\simpleiconsmapnine\symbol{145}}
- \expandafter\def\csname simpleicon@protoncalendaricon\endcsname {\simpleiconsmapnine\symbol{146}}
- \expandafter\def\csname simpleicon@protondbicon\endcsname {\simpleiconsmapnine\symbol{147}}
- \expandafter\def\csname simpleicon@protondriveicon\endcsname {\simpleiconsmapnine\symbol{148}}
- \expandafter\def\csname simpleicon@protonmailicon\endcsname {\simpleiconsmapnine\symbol{149}}
- \expandafter\def\csname simpleicon@protonvpnicon\endcsname {\simpleiconsmapnine\symbol{150}}
- \expandafter\def\csname simpleicon@protoolsicon\endcsname {\simpleiconsmapnine\symbol{151}}
- \expandafter\def\csname simpleicon@protractoricon\endcsname {\simpleiconsmapnine\symbol{152}}
- \expandafter\def\csname simpleicon@proxmoxicon\endcsname {\simpleiconsmapnine\symbol{153}}
- \expandafter\def\csname simpleicon@pterodactylicon\endcsname {\simpleiconsmapnine\symbol{154}}
- \expandafter\def\csname simpleicon@pubgicon\endcsname {\simpleiconsmapnine\symbol{155}}
- \expandafter\def\csname simpleicon@publonsicon\endcsname {\simpleiconsmapnine\symbol{156}}
- \expandafter\def\csname simpleicon@pubmedicon\endcsname {\simpleiconsmapnine\symbol{157}}
- \expandafter\def\csname simpleicon@pugicon\endcsname {\simpleiconsmapnine\symbol{158}}
- \expandafter\def\csname simpleicon@pulumiicon\endcsname {\simpleiconsmapnine\symbol{159}}
- \expandafter\def\csname simpleicon@pumaicon\endcsname {\simpleiconsmapnine\symbol{160}}
- \expandafter\def\csname simpleicon@puppeticon\endcsname {\simpleiconsmapnine\symbol{161}}
- \expandafter\def\csname simpleicon@puppeteericon\endcsname {\simpleiconsmapnine\symbol{162}}
- \expandafter\def\csname simpleicon@purescripticon\endcsname {\simpleiconsmapnine\symbol{163}}
- \expandafter\def\csname simpleicon@purgecssicon\endcsname {\simpleiconsmapnine\symbol{164}}
- \expandafter\def\csname simpleicon@purismicon\endcsname {\simpleiconsmapnine\symbol{165}}
- \expandafter\def\csname simpleicon@pushbulleticon\endcsname {\simpleiconsmapnine\symbol{166}}
- \expandafter\def\csname simpleicon@pushericon\endcsname {\simpleiconsmapnine\symbol{167}}
- \expandafter\def\csname simpleicon@pwaicon\endcsname {\simpleiconsmapnine\symbol{168}}
- \expandafter\def\csname simpleicon@pycharmicon\endcsname {\simpleiconsmapnine\symbol{169}}
- \expandafter\def\csname simpleicon@pycqaicon\endcsname {\simpleiconsmapnine\symbol{170}}
- \expandafter\def\csname simpleicon@pydanticicon\endcsname {\simpleiconsmapnine\symbol{171}}
- \expandafter\def\csname simpleicon@pygicon\endcsname {\simpleiconsmapnine\symbol{172}}
- \expandafter\def\csname simpleicon@pypiicon\endcsname {\simpleiconsmapnine\symbol{173}}
- \expandafter\def\csname simpleicon@pypyicon\endcsname {\simpleiconsmapnine\symbol{174}}
- \expandafter\def\csname simpleicon@pyscaffoldicon\endcsname {\simpleiconsmapnine\symbol{175}}
- \expandafter\def\csname simpleicon@pysyfticon\endcsname {\simpleiconsmapnine\symbol{176}}
- \expandafter\def\csname simpleicon@pytesticon\endcsname {\simpleiconsmapnine\symbol{177}}
- \expandafter\def\csname simpleicon@pythonicon\endcsname {\simpleiconsmapnine\symbol{178}}
- \expandafter\def\csname simpleicon@pythonanywhereicon\endcsname {\simpleiconsmapnine\symbol{179}}
- \expandafter\def\csname simpleicon@pytorchicon\endcsname {\simpleiconsmapnine\symbol{180}}
- \expandafter\def\csname simpleicon@pyupicon\endcsname {\simpleiconsmapnine\symbol{181}}
- \expandafter\def\csname simpleicon@qantasicon\endcsname {\simpleiconsmapnine\symbol{182}}
- \expandafter\def\csname simpleicon@qaseicon\endcsname {\simpleiconsmapnine\symbol{183}}
- \expandafter\def\csname simpleicon@qatarairwaysicon\endcsname {\simpleiconsmapnine\symbol{184}}
- \expandafter\def\csname simpleicon@qbittorrenticon\endcsname {\simpleiconsmapnine\symbol{185}}
- \expandafter\def\csname simpleicon@qemuicon\endcsname {\simpleiconsmapnine\symbol{186}}
- \expandafter\def\csname simpleicon@qgisicon\endcsname {\simpleiconsmapnine\symbol{187}}
- \expandafter\def\csname simpleicon@qiicon\endcsname {\simpleiconsmapnine\symbol{188}}
- \expandafter\def\csname simpleicon@qiitaicon\endcsname {\simpleiconsmapnine\symbol{189}}
- \expandafter\def\csname simpleicon@qiskiticon\endcsname {\simpleiconsmapnine\symbol{190}}
- \expandafter\def\csname simpleicon@qiwiicon\endcsname {\simpleiconsmapnine\symbol{191}}
- \expandafter\def\csname simpleicon@qlikicon\endcsname {\simpleiconsmapnine\symbol{192}}
- \expandafter\def\csname simpleicon@qmkicon\endcsname {\simpleiconsmapnine\symbol{193}}
- \expandafter\def\csname simpleicon@qnapicon\endcsname {\simpleiconsmapnine\symbol{194}}
- \expandafter\def\csname simpleicon@qticon\endcsname {\simpleiconsmapnine\symbol{195}}
- \expandafter\def\csname simpleicon@qualcommicon\endcsname {\simpleiconsmapnine\symbol{196}}
- \expandafter\def\csname simpleicon@qualtricsicon\endcsname {\simpleiconsmapnine\symbol{197}}
- \expandafter\def\csname simpleicon@qualysicon\endcsname {\simpleiconsmapnine\symbol{198}}
- \expandafter\def\csname simpleicon@quantcasticon\endcsname {\simpleiconsmapnine\symbol{199}}
- \expandafter\def\csname simpleicon@quantconnecticon\endcsname {\simpleiconsmapnine\symbol{200}}
- \expandafter\def\csname simpleicon@quarkusicon\endcsname {\simpleiconsmapnine\symbol{201}}
- \expandafter\def\csname simpleicon@quartoicon\endcsname {\simpleiconsmapnine\symbol{202}}
- \expandafter\def\csname simpleicon@quasaricon\endcsname {\simpleiconsmapnine\symbol{203}}
- \expandafter\def\csname simpleicon@qubesosicon\endcsname {\simpleiconsmapnine\symbol{204}}
- \expandafter\def\csname simpleicon@questicon\endcsname {\simpleiconsmapnine\symbol{205}}
- \expandafter\def\csname simpleicon@quickbooksicon\endcsname {\simpleiconsmapnine\symbol{206}}
- \expandafter\def\csname simpleicon@quicklookicon\endcsname {\simpleiconsmapnine\symbol{207}}
- \expandafter\def\csname simpleicon@quicktimeicon\endcsname {\simpleiconsmapnine\symbol{208}}
- \expandafter\def\csname simpleicon@quicktypeicon\endcsname {\simpleiconsmapnine\symbol{209}}
- \expandafter\def\csname simpleicon@quipicon\endcsname {\simpleiconsmapnine\symbol{210}}
- \expandafter\def\csname simpleicon@quizleticon\endcsname {\simpleiconsmapnine\symbol{211}}
- \expandafter\def\csname simpleicon@quoraicon\endcsname {\simpleiconsmapnine\symbol{212}}
- \expandafter\def\csname simpleicon@qwanticon\endcsname {\simpleiconsmapnine\symbol{213}}
- \expandafter\def\csname simpleicon@qwikicon\endcsname {\simpleiconsmapnine\symbol{214}}
- \expandafter\def\csname simpleicon@qwiklabsicon\endcsname {\simpleiconsmapnine\symbol{215}}
- \expandafter\def\csname simpleicon@qzoneicon\endcsname {\simpleiconsmapnine\symbol{216}}
- \expandafter\def\csname simpleicon@ricon\endcsname {\simpleiconsmapnine\symbol{217}}
- \expandafter\def\csname simpleicon@r3icon\endcsname {\simpleiconsmapnine\symbol{218}}
- \expandafter\def\csname simpleicon@rabbitmqicon\endcsname {\simpleiconsmapnine\symbol{219}}
- \expandafter\def\csname simpleicon@racketicon\endcsname {\simpleiconsmapnine\symbol{220}}
- \expandafter\def\csname simpleicon@radaricon\endcsname {\simpleiconsmapnine\symbol{221}}
- \expandafter\def\csname simpleicon@radarricon\endcsname {\simpleiconsmapnine\symbol{222}}
- \expandafter\def\csname simpleicon@radiopublicicon\endcsname {\simpleiconsmapnine\symbol{223}}
- \expandafter\def\csname simpleicon@radixuiicon\endcsname {\simpleiconsmapnine\symbol{224}}
- \expandafter\def\csname simpleicon@radstudioicon\endcsname {\simpleiconsmapnine\symbol{225}}
- \expandafter\def\csname simpleicon@railwayicon\endcsname {\simpleiconsmapnine\symbol{226}}
- \expandafter\def\csname simpleicon@rainmetericon\endcsname {\simpleiconsmapnine\symbol{227}}
- \expandafter\def\csname simpleicon@rakutenicon\endcsname {\simpleiconsmapnine\symbol{228}}
- \expandafter\def\csname simpleicon@ramicon\endcsname {\simpleiconsmapnine\symbol{229}}
- \expandafter\def\csname simpleicon@ranchericon\endcsname {\simpleiconsmapnine\symbol{230}}
- \expandafter\def\csname simpleicon@rapidicon\endcsname {\simpleiconsmapnine\symbol{231}}
- \expandafter\def\csname simpleicon@raribleicon\endcsname {\simpleiconsmapnine\symbol{232}}
- \expandafter\def\csname simpleicon@rasaicon\endcsname {\simpleiconsmapnine\symbol{233}}
- \expandafter\def\csname simpleicon@raspberrypiicon\endcsname {\simpleiconsmapnine\symbol{234}}
- \expandafter\def\csname simpleicon@ravelryicon\endcsname {\simpleiconsmapnine\symbol{235}}
- \expandafter\def\csname simpleicon@rayicon\endcsname {\simpleiconsmapnine\symbol{236}}
- \expandafter\def\csname simpleicon@raycasticon\endcsname {\simpleiconsmapnine\symbol{237}}
- \expandafter\def\csname simpleicon@raylibicon\endcsname {\simpleiconsmapnine\symbol{238}}
- \expandafter\def\csname simpleicon@razericon\endcsname {\simpleiconsmapnine\symbol{239}}
- \expandafter\def\csname simpleicon@razorpayicon\endcsname {\simpleiconsmapnine\symbol{240}}
- \expandafter\def\csname simpleicon@rcloneicon\endcsname {\simpleiconsmapnine\symbol{241}}
- \expandafter\def\csname simpleicon@reacticon\endcsname {\simpleiconsmapnine\symbol{242}}
- \expandafter\def\csname simpleicon@reactbootstrapicon\endcsname {\simpleiconsmapnine\symbol{243}}
- \expandafter\def\csname simpleicon@reacthookformicon\endcsname {\simpleiconsmapnine\symbol{244}}
- \expandafter\def\csname simpleicon@reactiveresumeicon\endcsname {\simpleiconsmapnine\symbol{245}}
- \expandafter\def\csname simpleicon@reactivexicon\endcsname {\simpleiconsmapnine\symbol{246}}
- \expandafter\def\csname simpleicon@reactosicon\endcsname {\simpleiconsmapnine\symbol{247}}
- \expandafter\def\csname simpleicon@reactqueryicon\endcsname {\simpleiconsmapnine\symbol{248}}
- \expandafter\def\csname simpleicon@reactroutericon\endcsname {\simpleiconsmapnine\symbol{249}}
- \expandafter\def\csname simpleicon@reacttableicon\endcsname {\simpleiconsmapnine\symbol{250}}
- \expandafter\def\csname simpleicon@readdotcvicon\endcsname {\simpleiconsmapnine\symbol{251}}
- \expandafter\def\csname simpleicon@readmeicon\endcsname {\simpleiconsmapnine\symbol{252}}
- \expandafter\def\csname simpleicon@readthedocsicon\endcsname {\simpleiconsmapnine\symbol{253}}
- \expandafter\def\csname simpleicon@realmicon\endcsname {\simpleiconsmapnine\symbol{254}}
- \expandafter\def\csname simpleicon@reasonicon\endcsname {\simpleiconsmapnine\symbol{255}}
- \expandafter\def\csname simpleicon@reasonstudiosicon\endcsname {\simpleiconsmaponezero\symbol{0}}
- \expandafter\def\csname simpleicon@recoilicon\endcsname {\simpleiconsmaponezero\symbol{1}}
- \expandafter\def\csname simpleicon@redicon\endcsname {\simpleiconsmaponezero\symbol{2}}
- \expandafter\def\csname simpleicon@redashicon\endcsname {\simpleiconsmaponezero\symbol{3}}
- \expandafter\def\csname simpleicon@redbubbleicon\endcsname {\simpleiconsmaponezero\symbol{4}}
- \expandafter\def\csname simpleicon@redbullicon\endcsname {\simpleiconsmaponezero\symbol{5}}
- \expandafter\def\csname simpleicon@redditicon\endcsname {\simpleiconsmaponezero\symbol{6}}
- \expandafter\def\csname simpleicon@redhaticon\endcsname {\simpleiconsmaponezero\symbol{7}}
- \expandafter\def\csname simpleicon@redhatopenshifticon\endcsname {\simpleiconsmaponezero\symbol{8}}
- \expandafter\def\csname simpleicon@redisicon\endcsname {\simpleiconsmaponezero\symbol{9}}
- \expandafter\def\csname simpleicon@redmineicon\endcsname {\simpleiconsmaponezero\symbol{10}}
- \expandafter\def\csname simpleicon@redoxicon\endcsname {\simpleiconsmaponezero\symbol{11}}
- \expandafter\def\csname simpleicon@reduxicon\endcsname {\simpleiconsmaponezero\symbol{12}}
- \expandafter\def\csname simpleicon@reduxsagaicon\endcsname {\simpleiconsmaponezero\symbol{13}}
- \expandafter\def\csname simpleicon@redwoodjsicon\endcsname {\simpleiconsmaponezero\symbol{14}}
- \expandafter\def\csname simpleicon@reebokicon\endcsname {\simpleiconsmaponezero\symbol{15}}
- \expandafter\def\csname simpleicon@refineicon\endcsname {\simpleiconsmaponezero\symbol{16}}
- \expandafter\def\csname simpleicon@relayicon\endcsname {\simpleiconsmaponezero\symbol{17}}
- \expandafter\def\csname simpleicon@relianceindustrieslimitedicon\endcsname {\simpleiconsmaponezero\symbol{18}}
- \expandafter\def\csname simpleicon@remarkicon\endcsname {\simpleiconsmaponezero\symbol{19}}
- \expandafter\def\csname simpleicon@remedyentertainmenticon\endcsname {\simpleiconsmaponezero\symbol{20}}
- \expandafter\def\csname simpleicon@remixicon\endcsname {\simpleiconsmaponezero\symbol{21}}
- \expandafter\def\csname simpleicon@removedotbgicon\endcsname {\simpleiconsmaponezero\symbol{22}}
- \expandafter\def\csname simpleicon@renaulticon\endcsname {\simpleiconsmaponezero\symbol{23}}
- \expandafter\def\csname simpleicon@rendericon\endcsname {\simpleiconsmaponezero\symbol{24}}
- \expandafter\def\csname simpleicon@renovateboticon\endcsname {\simpleiconsmaponezero\symbol{25}}
- \expandafter\def\csname simpleicon@renpyicon\endcsname {\simpleiconsmaponezero\symbol{26}}
- \expandafter\def\csname simpleicon@renrenicon\endcsname {\simpleiconsmaponezero\symbol{27}}
- \expandafter\def\csname simpleicon@repliticon\endcsname {\simpleiconsmaponezero\symbol{28}}
- \expandafter\def\csname simpleicon@republicofgamersicon\endcsname {\simpleiconsmaponezero\symbol{29}}
- \expandafter\def\csname simpleicon@rescripticon\endcsname {\simpleiconsmaponezero\symbol{30}}
- \expandafter\def\csname simpleicon@rescuetimeicon\endcsname {\simpleiconsmaponezero\symbol{31}}
- \expandafter\def\csname simpleicon@researchgateicon\endcsname {\simpleiconsmaponezero\symbol{32}}
- \expandafter\def\csname simpleicon@resendicon\endcsname {\simpleiconsmaponezero\symbol{33}}
- \expandafter\def\csname simpleicon@resharpericon\endcsname {\simpleiconsmaponezero\symbol{34}}
- \expandafter\def\csname simpleicon@resurrectionremixosicon\endcsname {\simpleiconsmaponezero\symbol{35}}
- \expandafter\def\csname simpleicon@retoolicon\endcsname {\simpleiconsmaponezero\symbol{36}}
- \expandafter\def\csname simpleicon@retroarchicon\endcsname {\simpleiconsmaponezero\symbol{37}}
- \expandafter\def\csname simpleicon@retropieicon\endcsname {\simpleiconsmaponezero\symbol{38}}
- \expandafter\def\csname simpleicon@revancedicon\endcsname {\simpleiconsmaponezero\symbol{39}}
- \expandafter\def\csname simpleicon@revealdotjsicon\endcsname {\simpleiconsmaponezero\symbol{40}}
- \expandafter\def\csname simpleicon@reverbnationicon\endcsname {\simpleiconsmaponezero\symbol{41}}
- \expandafter\def\csname simpleicon@revoltdotchaticon\endcsname {\simpleiconsmaponezero\symbol{42}}
- \expandafter\def\csname simpleicon@revoluticon\endcsname {\simpleiconsmaponezero\symbol{43}}
- \expandafter\def\csname simpleicon@revueicon\endcsname {\simpleiconsmaponezero\symbol{44}}
- \expandafter\def\csname simpleicon@reweicon\endcsname {\simpleiconsmaponezero\symbol{45}}
- \expandafter\def\csname simpleicon@rezgoicon\endcsname {\simpleiconsmaponezero\symbol{46}}
- \expandafter\def\csname simpleicon@rhinocerosicon\endcsname {\simpleiconsmaponezero\symbol{47}}
- \expandafter\def\csname simpleicon@richicon\endcsname {\simpleiconsmaponezero\symbol{48}}
- \expandafter\def\csname simpleicon@ridericon\endcsname {\simpleiconsmaponezero\symbol{49}}
- \expandafter\def\csname simpleicon@rimacautomobiliicon\endcsname {\simpleiconsmaponezero\symbol{50}}
- \expandafter\def\csname simpleicon@rimeicon\endcsname {\simpleiconsmaponezero\symbol{51}}
- \expandafter\def\csname simpleicon@ringicon\endcsname {\simpleiconsmaponezero\symbol{52}}
- \expandafter\def\csname simpleicon@riotgamesicon\endcsname {\simpleiconsmaponezero\symbol{53}}
- \expandafter\def\csname simpleicon@rippleicon\endcsname {\simpleiconsmaponezero\symbol{54}}
- \expandafter\def\csname simpleicon@riscvicon\endcsname {\simpleiconsmaponezero\symbol{55}}
- \expandafter\def\csname simpleicon@riseupicon\endcsname {\simpleiconsmaponezero\symbol{56}}
- \expandafter\def\csname simpleicon@ritzcarltonicon\endcsname {\simpleiconsmaponezero\symbol{57}}
- \expandafter\def\csname simpleicon@riveicon\endcsname {\simpleiconsmaponezero\symbol{58}}
- \expandafter\def\csname simpleicon@roadmapdotshicon\endcsname {\simpleiconsmaponezero\symbol{59}}
- \expandafter\def\csname simpleicon@roamresearchicon\endcsname {\simpleiconsmaponezero\symbol{60}}
- \expandafter\def\csname simpleicon@robinhoodicon\endcsname {\simpleiconsmaponezero\symbol{61}}
- \expandafter\def\csname simpleicon@robloxicon\endcsname {\simpleiconsmaponezero\symbol{62}}
- \expandafter\def\csname simpleicon@robloxstudioicon\endcsname {\simpleiconsmaponezero\symbol{63}}
- \expandafter\def\csname simpleicon@robotframeworkicon\endcsname {\simpleiconsmaponezero\symbol{64}}
- \expandafter\def\csname simpleicon@rocketicon\endcsname {\simpleiconsmaponezero\symbol{65}}
- \expandafter\def\csname simpleicon@rocketdotchaticon\endcsname {\simpleiconsmaponezero\symbol{66}}
- \expandafter\def\csname simpleicon@rocksdbicon\endcsname {\simpleiconsmaponezero\symbol{67}}
- \expandafter\def\csname simpleicon@rockstargamesicon\endcsname {\simpleiconsmaponezero\symbol{68}}
- \expandafter\def\csname simpleicon@rockwellautomationicon\endcsname {\simpleiconsmaponezero\symbol{69}}
- \expandafter\def\csname simpleicon@rockylinuxicon\endcsname {\simpleiconsmaponezero\symbol{70}}
- \expandafter\def\csname simpleicon@rokuicon\endcsname {\simpleiconsmaponezero\symbol{71}}
- \expandafter\def\csname simpleicon@roll20icon\endcsname {\simpleiconsmaponezero\symbol{72}}
- \expandafter\def\csname simpleicon@rollsroyceicon\endcsname {\simpleiconsmaponezero\symbol{73}}
- \expandafter\def\csname simpleicon@rollupdotjsicon\endcsname {\simpleiconsmaponezero\symbol{74}}
- \expandafter\def\csname simpleicon@roonicon\endcsname {\simpleiconsmaponezero\symbol{75}}
- \expandafter\def\csname simpleicon@rootmeicon\endcsname {\simpleiconsmaponezero\symbol{76}}
- \expandafter\def\csname simpleicon@rootsicon\endcsname {\simpleiconsmaponezero\symbol{77}}
- \expandafter\def\csname simpleicon@rootsbedrockicon\endcsname {\simpleiconsmaponezero\symbol{78}}
- \expandafter\def\csname simpleicon@rootssageicon\endcsname {\simpleiconsmaponezero\symbol{79}}
- \expandafter\def\csname simpleicon@rosicon\endcsname {\simpleiconsmaponezero\symbol{80}}
- \expandafter\def\csname simpleicon@rossmannicon\endcsname {\simpleiconsmaponezero\symbol{81}}
- \expandafter\def\csname simpleicon@rotaryinternationalicon\endcsname {\simpleiconsmaponezero\symbol{82}}
- \expandafter\def\csname simpleicon@rottentomatoesicon\endcsname {\simpleiconsmaponezero\symbol{83}}
- \expandafter\def\csname simpleicon@roundcubeicon\endcsname {\simpleiconsmaponezero\symbol{84}}
- \expandafter\def\csname simpleicon@rsocketicon\endcsname {\simpleiconsmaponezero\symbol{85}}
- \expandafter\def\csname simpleicon@rssicon\endcsname {\simpleiconsmaponezero\symbol{86}}
- \expandafter\def\csname simpleicon@rstudioideicon\endcsname {\simpleiconsmaponezero\symbol{87}}
- \expandafter\def\csname simpleicon@rteicon\endcsname {\simpleiconsmaponezero\symbol{88}}
- \expandafter\def\csname simpleicon@rtlicon\endcsname {\simpleiconsmaponezero\symbol{89}}
- \expandafter\def\csname simpleicon@rtlzweiicon\endcsname {\simpleiconsmaponezero\symbol{90}}
- \expandafter\def\csname simpleicon@rtmicon\endcsname {\simpleiconsmaponezero\symbol{91}}
- \expandafter\def\csname simpleicon@rubocopicon\endcsname {\simpleiconsmaponezero\symbol{92}}
- \expandafter\def\csname simpleicon@rubyicon\endcsname {\simpleiconsmaponezero\symbol{93}}
- \expandafter\def\csname simpleicon@rubygemsicon\endcsname {\simpleiconsmaponezero\symbol{94}}
- \expandafter\def\csname simpleicon@rubymineicon\endcsname {\simpleiconsmaponezero\symbol{95}}
- \expandafter\def\csname simpleicon@rubyonrailsicon\endcsname {\simpleiconsmaponezero\symbol{96}}
- \expandafter\def\csname simpleicon@rubysinatraicon\endcsname {\simpleiconsmaponezero\symbol{97}}
- \expandafter\def\csname simpleicon@rufficon\endcsname {\simpleiconsmaponezero\symbol{98}}
- \expandafter\def\csname simpleicon@rumahwebicon\endcsname {\simpleiconsmaponezero\symbol{99}}
- \expandafter\def\csname simpleicon@rumbleicon\endcsname {\simpleiconsmaponezero\symbol{100}}
- \expandafter\def\csname simpleicon@rundeckicon\endcsname {\simpleiconsmaponezero\symbol{101}}
- \expandafter\def\csname simpleicon@runkeepericon\endcsname {\simpleiconsmaponezero\symbol{102}}
- \expandafter\def\csname simpleicon@runkiticon\endcsname {\simpleiconsmaponezero\symbol{103}}
- \expandafter\def\csname simpleicon@runrundotiticon\endcsname {\simpleiconsmaponezero\symbol{104}}
- \expandafter\def\csname simpleicon@rusticon\endcsname {\simpleiconsmaponezero\symbol{105}}
- \expandafter\def\csname simpleicon@rustdeskicon\endcsname {\simpleiconsmaponezero\symbol{106}}
- \expandafter\def\csname simpleicon@rxdbicon\endcsname {\simpleiconsmaponezero\symbol{107}}
- \expandafter\def\csname simpleicon@ryanairicon\endcsname {\simpleiconsmaponezero\symbol{108}}
- \expandafter\def\csname simpleicon@ryeicon\endcsname {\simpleiconsmaponezero\symbol{109}}
- \expandafter\def\csname simpleicon@s7airlinesicon\endcsname {\simpleiconsmaponezero\symbol{110}}
- \expandafter\def\csname simpleicon@sabanciicon\endcsname {\simpleiconsmaponezero\symbol{111}}
- \expandafter\def\csname simpleicon@safariicon\endcsname {\simpleiconsmaponezero\symbol{112}}
- \expandafter\def\csname simpleicon@sageicon\endcsname {\simpleiconsmaponezero\symbol{113}}
- \expandafter\def\csname simpleicon@sahibindenicon\endcsname {\simpleiconsmaponezero\symbol{114}}
- \expandafter\def\csname simpleicon@sailfishosicon\endcsname {\simpleiconsmaponezero\symbol{115}}
- \expandafter\def\csname simpleicon@sailsdotjsicon\endcsname {\simpleiconsmaponezero\symbol{116}}
- \expandafter\def\csname simpleicon@salesforceicon\endcsname {\simpleiconsmaponezero\symbol{117}}
- \expandafter\def\csname simpleicon@sallaicon\endcsname {\simpleiconsmaponezero\symbol{118}}
- \expandafter\def\csname simpleicon@saltprojecticon\endcsname {\simpleiconsmaponezero\symbol{119}}
- \expandafter\def\csname simpleicon@samsclubicon\endcsname {\simpleiconsmaponezero\symbol{120}}
- \expandafter\def\csname simpleicon@samsungicon\endcsname {\simpleiconsmaponezero\symbol{121}}
- \expandafter\def\csname simpleicon@samsungpayicon\endcsname {\simpleiconsmaponezero\symbol{122}}
- \expandafter\def\csname simpleicon@sandiskicon\endcsname {\simpleiconsmaponezero\symbol{123}}
- \expandafter\def\csname simpleicon@sanfranciscomunicipalrailwayicon\endcsname {\simpleiconsmaponezero\symbol{124}}
- \expandafter\def\csname simpleicon@sanicicon\endcsname {\simpleiconsmaponezero\symbol{125}}
- \expandafter\def\csname simpleicon@sanityicon\endcsname {\simpleiconsmaponezero\symbol{126}}
- \expandafter\def\csname simpleicon@saopaulometroicon\endcsname {\simpleiconsmaponezero\symbol{127}}
- \expandafter\def\csname simpleicon@sapicon\endcsname {\simpleiconsmaponezero\symbol{128}}
- \expandafter\def\csname simpleicon@sartoriusicon\endcsname {\simpleiconsmaponezero\symbol{129}}
- \expandafter\def\csname simpleicon@sassicon\endcsname {\simpleiconsmaponezero\symbol{130}}
- \expandafter\def\csname simpleicon@sat1icon\endcsname {\simpleiconsmaponezero\symbol{131}}
- \expandafter\def\csname simpleicon@satelliteicon\endcsname {\simpleiconsmaponezero\symbol{132}}
- \expandafter\def\csname simpleicon@saturnicon\endcsname {\simpleiconsmaponezero\symbol{133}}
- \expandafter\def\csname simpleicon@saucelabsicon\endcsname {\simpleiconsmaponezero\symbol{134}}
- \expandafter\def\csname simpleicon@saudiaicon\endcsname {\simpleiconsmaponezero\symbol{135}}
- \expandafter\def\csname simpleicon@scalaicon\endcsname {\simpleiconsmaponezero\symbol{136}}
- \expandafter\def\csname simpleicon@scalewayicon\endcsname {\simpleiconsmaponezero\symbol{137}}
- \expandafter\def\csname simpleicon@scaniaicon\endcsname {\simpleiconsmaponezero\symbol{138}}
- \expandafter\def\csname simpleicon@schneiderelectricicon\endcsname {\simpleiconsmaponezero\symbol{139}}
- \expandafter\def\csname simpleicon@scikitlearnicon\endcsname {\simpleiconsmaponezero\symbol{140}}
- \expandafter\def\csname simpleicon@scilabicon\endcsname {\simpleiconsmaponezero\symbol{141}}
- \expandafter\def\csname simpleicon@scipyicon\endcsname {\simpleiconsmaponezero\symbol{142}}
- \expandafter\def\csname simpleicon@scopusicon\endcsname {\simpleiconsmaponezero\symbol{143}}
- \expandafter\def\csname simpleicon@scpfoundationicon\endcsname {\simpleiconsmaponezero\symbol{144}}
- \expandafter\def\csname simpleicon@scrapboxicon\endcsname {\simpleiconsmaponezero\symbol{145}}
- \expandafter\def\csname simpleicon@scrapyicon\endcsname {\simpleiconsmaponezero\symbol{146}}
- \expandafter\def\csname simpleicon@scratchicon\endcsname {\simpleiconsmaponezero\symbol{147}}
- \expandafter\def\csname simpleicon@screencastifyicon\endcsname {\simpleiconsmaponezero\symbol{148}}
- \expandafter\def\csname simpleicon@scribdicon\endcsname {\simpleiconsmaponezero\symbol{149}}
- \expandafter\def\csname simpleicon@scrimbaicon\endcsname {\simpleiconsmaponezero\symbol{150}}
- \expandafter\def\csname simpleicon@scrollrevealicon\endcsname {\simpleiconsmaponezero\symbol{151}}
- \expandafter\def\csname simpleicon@scrumallianceicon\endcsname {\simpleiconsmaponezero\symbol{152}}
- \expandafter\def\csname simpleicon@scrutinizerciicon\endcsname {\simpleiconsmaponezero\symbol{153}}
- \expandafter\def\csname simpleicon@scylladbicon\endcsname {\simpleiconsmaponezero\symbol{154}}
- \expandafter\def\csname simpleicon@seagateicon\endcsname {\simpleiconsmaponezero\symbol{155}}
- \expandafter\def\csname simpleicon@searxngicon\endcsname {\simpleiconsmaponezero\symbol{156}}
- \expandafter\def\csname simpleicon@seaticon\endcsname {\simpleiconsmaponezero\symbol{157}}
- \expandafter\def\csname simpleicon@seatgeekicon\endcsname {\simpleiconsmaponezero\symbol{158}}
- \expandafter\def\csname simpleicon@securityscorecardicon\endcsname {\simpleiconsmaponezero\symbol{159}}
- \expandafter\def\csname simpleicon@sefariaicon\endcsname {\simpleiconsmaponezero\symbol{160}}
- \expandafter\def\csname simpleicon@segaicon\endcsname {\simpleiconsmaponezero\symbol{161}}
- \expandafter\def\csname simpleicon@seleniumicon\endcsname {\simpleiconsmaponezero\symbol{162}}
- \expandafter\def\csname simpleicon@sellfyicon\endcsname {\simpleiconsmaponezero\symbol{163}}
- \expandafter\def\csname simpleicon@semanticreleaseicon\endcsname {\simpleiconsmaponezero\symbol{164}}
- \expandafter\def\csname simpleicon@semanticscholaricon\endcsname {\simpleiconsmaponezero\symbol{165}}
- \expandafter\def\csname simpleicon@semanticuiicon\endcsname {\simpleiconsmaponezero\symbol{166}}
- \expandafter\def\csname simpleicon@semanticuireacticon\endcsname {\simpleiconsmaponezero\symbol{167}}
- \expandafter\def\csname simpleicon@semanticwebicon\endcsname {\simpleiconsmaponezero\symbol{168}}
- \expandafter\def\csname simpleicon@semaphoreciicon\endcsname {\simpleiconsmaponezero\symbol{169}}
- \expandafter\def\csname simpleicon@semrushicon\endcsname {\simpleiconsmaponezero\symbol{170}}
- \expandafter\def\csname simpleicon@semvericon\endcsname {\simpleiconsmaponezero\symbol{171}}
- \expandafter\def\csname simpleicon@senchaicon\endcsname {\simpleiconsmaponezero\symbol{172}}
- \expandafter\def\csname simpleicon@sennheisericon\endcsname {\simpleiconsmaponezero\symbol{173}}
- \expandafter\def\csname simpleicon@sensuicon\endcsname {\simpleiconsmaponezero\symbol{174}}
- \expandafter\def\csname simpleicon@sentryicon\endcsname {\simpleiconsmaponezero\symbol{175}}
- \expandafter\def\csname simpleicon@sepaicon\endcsname {\simpleiconsmaponezero\symbol{176}}
- \expandafter\def\csname simpleicon@sequelizeicon\endcsname {\simpleiconsmaponezero\symbol{177}}
- \expandafter\def\csname simpleicon@serverfaulticon\endcsname {\simpleiconsmaponezero\symbol{178}}
- \expandafter\def\csname simpleicon@serverlessicon\endcsname {\simpleiconsmaponezero\symbol{179}}
- \expandafter\def\csname simpleicon@sessionicon\endcsname {\simpleiconsmaponezero\symbol{180}}
- \expandafter\def\csname simpleicon@sessionizeicon\endcsname {\simpleiconsmaponezero\symbol{181}}
- \expandafter\def\csname simpleicon@setappicon\endcsname {\simpleiconsmaponezero\symbol{182}}
- \expandafter\def\csname simpleicon@sfmlicon\endcsname {\simpleiconsmaponezero\symbol{183}}
- \expandafter\def\csname simpleicon@shadcnuiicon\endcsname {\simpleiconsmaponezero\symbol{184}}
- \expandafter\def\csname simpleicon@shadowicon\endcsname {\simpleiconsmaponezero\symbol{185}}
- \expandafter\def\csname simpleicon@shanghaimetroicon\endcsname {\simpleiconsmaponezero\symbol{186}}
- \expandafter\def\csname simpleicon@sharexicon\endcsname {\simpleiconsmaponezero\symbol{187}}
- \expandafter\def\csname simpleicon@sharpicon\endcsname {\simpleiconsmaponezero\symbol{188}}
- \expandafter\def\csname simpleicon@shazamicon\endcsname {\simpleiconsmaponezero\symbol{189}}
- \expandafter\def\csname simpleicon@shellicon\endcsname {\simpleiconsmaponezero\symbol{190}}
- \expandafter\def\csname simpleicon@shellyicon\endcsname {\simpleiconsmaponezero\symbol{191}}
- \expandafter\def\csname simpleicon@shenzhenmetroicon\endcsname {\simpleiconsmaponezero\symbol{192}}
- \expandafter\def\csname simpleicon@shieldsdotioicon\endcsname {\simpleiconsmaponezero\symbol{193}}
- \expandafter\def\csname simpleicon@shikimoriicon\endcsname {\simpleiconsmaponezero\symbol{194}}
- \expandafter\def\csname simpleicon@shopeeicon\endcsname {\simpleiconsmaponezero\symbol{195}}
- \expandafter\def\csname simpleicon@shopifyicon\endcsname {\simpleiconsmaponezero\symbol{196}}
- \expandafter\def\csname simpleicon@shopwareicon\endcsname {\simpleiconsmaponezero\symbol{197}}
- \expandafter\def\csname simpleicon@shortcuticon\endcsname {\simpleiconsmaponezero\symbol{198}}
- \expandafter\def\csname simpleicon@showpadicon\endcsname {\simpleiconsmaponezero\symbol{199}}
- \expandafter\def\csname simpleicon@showtimeicon\endcsname {\simpleiconsmaponezero\symbol{200}}
- \expandafter\def\csname simpleicon@showwcaseicon\endcsname {\simpleiconsmaponezero\symbol{201}}
- \expandafter\def\csname simpleicon@shutterstockicon\endcsname {\simpleiconsmaponezero\symbol{202}}
- \expandafter\def\csname simpleicon@sidekiqicon\endcsname {\simpleiconsmaponezero\symbol{203}}
- \expandafter\def\csname simpleicon@sidequesticon\endcsname {\simpleiconsmaponezero\symbol{204}}
- \expandafter\def\csname simpleicon@siemensicon\endcsname {\simpleiconsmaponezero\symbol{205}}
- \expandafter\def\csname simpleicon@sifiveicon\endcsname {\simpleiconsmaponezero\symbol{206}}
- \expandafter\def\csname simpleicon@signalicon\endcsname {\simpleiconsmaponezero\symbol{207}}
- \expandafter\def\csname simpleicon@similarwebicon\endcsname {\simpleiconsmaponezero\symbol{208}}
- \expandafter\def\csname simpleicon@simklicon\endcsname {\simpleiconsmaponezero\symbol{209}}
- \expandafter\def\csname simpleicon@simpleanalyticsicon\endcsname {\simpleiconsmaponezero\symbol{210}}
- \expandafter\def\csname simpleicon@simpleiconsicon\endcsname {\simpleiconsmaponezero\symbol{211}}
- \expandafter\def\csname simpleicon@simpleloginicon\endcsname {\simpleiconsmaponezero\symbol{212}}
- \expandafter\def\csname simpleicon@simplenoteicon\endcsname {\simpleiconsmaponezero\symbol{213}}
- \expandafter\def\csname simpleicon@sinaweiboicon\endcsname {\simpleiconsmaponezero\symbol{214}}
- \expandafter\def\csname simpleicon@singaporeairlinesicon\endcsname {\simpleiconsmaponezero\symbol{215}}
- \expandafter\def\csname simpleicon@singlestoreicon\endcsname {\simpleiconsmaponezero\symbol{216}}
- \expandafter\def\csname simpleicon@sitecoreicon\endcsname {\simpleiconsmaponezero\symbol{217}}
- \expandafter\def\csname simpleicon@sitepointicon\endcsname {\simpleiconsmaponezero\symbol{218}}
- \expandafter\def\csname simpleicon@siyuanicon\endcsname {\simpleiconsmaponezero\symbol{219}}
- \expandafter\def\csname simpleicon@skaffoldicon\endcsname {\simpleiconsmaponezero\symbol{220}}
- \expandafter\def\csname simpleicon@sketchicon\endcsname {\simpleiconsmaponezero\symbol{221}}
- \expandafter\def\csname simpleicon@sketchfabicon\endcsname {\simpleiconsmaponezero\symbol{222}}
- \expandafter\def\csname simpleicon@sketchupicon\endcsname {\simpleiconsmaponezero\symbol{223}}
- \expandafter\def\csname simpleicon@skillshareicon\endcsname {\simpleiconsmaponezero\symbol{224}}
- \expandafter\def\csname simpleicon@skodaicon\endcsname {\simpleiconsmaponezero\symbol{225}}
- \expandafter\def\csname simpleicon@skyicon\endcsname {\simpleiconsmaponezero\symbol{226}}
- \expandafter\def\csname simpleicon@skypackicon\endcsname {\simpleiconsmaponezero\symbol{227}}
- \expandafter\def\csname simpleicon@skypeicon\endcsname {\simpleiconsmaponezero\symbol{228}}
- \expandafter\def\csname simpleicon@skypeforbusinessicon\endcsname {\simpleiconsmaponezero\symbol{229}}
- \expandafter\def\csname simpleicon@skyrockicon\endcsname {\simpleiconsmaponezero\symbol{230}}
- \expandafter\def\csname simpleicon@slackicon\endcsname {\simpleiconsmaponezero\symbol{231}}
- \expandafter\def\csname simpleicon@slackwareicon\endcsname {\simpleiconsmaponezero\symbol{232}}
- \expandafter\def\csname simpleicon@slashdoticon\endcsname {\simpleiconsmaponezero\symbol{233}}
- \expandafter\def\csname simpleicon@slickpicicon\endcsname {\simpleiconsmaponezero\symbol{234}}
- \expandafter\def\csname simpleicon@slidesicon\endcsname {\simpleiconsmaponezero\symbol{235}}
- \expandafter\def\csname simpleicon@slideshareicon\endcsname {\simpleiconsmaponezero\symbol{236}}
- \expandafter\def\csname simpleicon@slinticon\endcsname {\simpleiconsmaponezero\symbol{237}}
- \expandafter\def\csname simpleicon@smarticon\endcsname {\simpleiconsmaponezero\symbol{238}}
- \expandafter\def\csname simpleicon@smartthingsicon\endcsname {\simpleiconsmaponezero\symbol{239}}
- \expandafter\def\csname simpleicon@smashdotggicon\endcsname {\simpleiconsmaponezero\symbol{240}}
- \expandafter\def\csname simpleicon@smashingmagazineicon\endcsname {\simpleiconsmaponezero\symbol{241}}
- \expandafter\def\csname simpleicon@smrticon\endcsname {\simpleiconsmaponezero\symbol{242}}
- \expandafter\def\csname simpleicon@smugmugicon\endcsname {\simpleiconsmaponezero\symbol{243}}
- \expandafter\def\csname simpleicon@snapchaticon\endcsname {\simpleiconsmaponezero\symbol{244}}
- \expandafter\def\csname simpleicon@snapcrafticon\endcsname {\simpleiconsmaponezero\symbol{245}}
- \expandafter\def\csname simpleicon@sncficon\endcsname {\simpleiconsmaponezero\symbol{246}}
- \expandafter\def\csname simpleicon@snorticon\endcsname {\simpleiconsmaponezero\symbol{247}}
- \expandafter\def\csname simpleicon@snowflakeicon\endcsname {\simpleiconsmaponezero\symbol{248}}
- \expandafter\def\csname simpleicon@snowpackicon\endcsname {\simpleiconsmaponezero\symbol{249}}
- \expandafter\def\csname simpleicon@snykicon\endcsname {\simpleiconsmaponezero\symbol{250}}
- \expandafter\def\csname simpleicon@socialbladeicon\endcsname {\simpleiconsmaponezero\symbol{251}}
- \expandafter\def\csname simpleicon@society6icon\endcsname {\simpleiconsmaponezero\symbol{252}}
- \expandafter\def\csname simpleicon@socketdotioicon\endcsname {\simpleiconsmaponezero\symbol{253}}
- \expandafter\def\csname simpleicon@softpediaicon\endcsname {\simpleiconsmaponezero\symbol{254}}
- \expandafter\def\csname simpleicon@sogouicon\endcsname {\simpleiconsmaponezero\symbol{255}}
- \expandafter\def\csname simpleicon@solanaicon\endcsname {\simpleiconsmaponeone\symbol{0}}
- \expandafter\def\csname simpleicon@solidicon\endcsname {\simpleiconsmaponeone\symbol{1}}
- \expandafter\def\csname simpleicon@solidityicon\endcsname {\simpleiconsmaponeone\symbol{2}}
- \expandafter\def\csname simpleicon@sololearnicon\endcsname {\simpleiconsmaponeone\symbol{3}}
- \expandafter\def\csname simpleicon@solusicon\endcsname {\simpleiconsmaponeone\symbol{4}}
- \expandafter\def\csname simpleicon@sonaricon\endcsname {\simpleiconsmaponeone\symbol{5}}
- \expandafter\def\csname simpleicon@sonarcloudicon\endcsname {\simpleiconsmaponeone\symbol{6}}
- \expandafter\def\csname simpleicon@sonarlinticon\endcsname {\simpleiconsmaponeone\symbol{7}}
- \expandafter\def\csname simpleicon@sonarqubeicon\endcsname {\simpleiconsmaponeone\symbol{8}}
- \expandafter\def\csname simpleicon@sonarricon\endcsname {\simpleiconsmaponeone\symbol{9}}
- \expandafter\def\csname simpleicon@sonatypeicon\endcsname {\simpleiconsmaponeone\symbol{10}}
- \expandafter\def\csname simpleicon@songkickicon\endcsname {\simpleiconsmaponeone\symbol{11}}
- \expandafter\def\csname simpleicon@songodaicon\endcsname {\simpleiconsmaponeone\symbol{12}}
- \expandafter\def\csname simpleicon@sonicwallicon\endcsname {\simpleiconsmaponeone\symbol{13}}
- \expandafter\def\csname simpleicon@sonosicon\endcsname {\simpleiconsmaponeone\symbol{14}}
- \expandafter\def\csname simpleicon@sonyicon\endcsname {\simpleiconsmaponeone\symbol{15}}
- \expandafter\def\csname simpleicon@sorianaicon\endcsname {\simpleiconsmaponeone\symbol{16}}
- \expandafter\def\csname simpleicon@soundchartsicon\endcsname {\simpleiconsmaponeone\symbol{17}}
- \expandafter\def\csname simpleicon@soundcloudicon\endcsname {\simpleiconsmaponeone\symbol{18}}
- \expandafter\def\csname simpleicon@sourceengineicon\endcsname {\simpleiconsmaponeone\symbol{19}}
- \expandafter\def\csname simpleicon@sourceforgeicon\endcsname {\simpleiconsmaponeone\symbol{20}}
- \expandafter\def\csname simpleicon@sourcehuticon\endcsname {\simpleiconsmaponeone\symbol{21}}
- \expandafter\def\csname simpleicon@sourcetreeicon\endcsname {\simpleiconsmaponeone\symbol{22}}
- \expandafter\def\csname simpleicon@southwestairlinesicon\endcsname {\simpleiconsmaponeone\symbol{23}}
- \expandafter\def\csname simpleicon@spacemacsicon\endcsname {\simpleiconsmaponeone\symbol{24}}
- \expandafter\def\csname simpleicon@spaceshipicon\endcsname {\simpleiconsmaponeone\symbol{25}}
- \expandafter\def\csname simpleicon@spacexicon\endcsname {\simpleiconsmaponeone\symbol{26}}
- \expandafter\def\csname simpleicon@spacyicon\endcsname {\simpleiconsmaponeone\symbol{27}}
- \expandafter\def\csname simpleicon@sparkaricon\endcsname {\simpleiconsmaponeone\symbol{28}}
- \expandafter\def\csname simpleicon@sparkasseicon\endcsname {\simpleiconsmaponeone\symbol{29}}
- \expandafter\def\csname simpleicon@sparkfunicon\endcsname {\simpleiconsmaponeone\symbol{30}}
- \expandafter\def\csname simpleicon@sparkposticon\endcsname {\simpleiconsmaponeone\symbol{31}}
- \expandafter\def\csname simpleicon@spdxicon\endcsname {\simpleiconsmaponeone\symbol{32}}
- \expandafter\def\csname simpleicon@speakerdeckicon\endcsname {\simpleiconsmaponeone\symbol{33}}
- \expandafter\def\csname simpleicon@spectrumicon\endcsname {\simpleiconsmaponeone\symbol{34}}
- \expandafter\def\csname simpleicon@speedtesticon\endcsname {\simpleiconsmaponeone\symbol{35}}
- \expandafter\def\csname simpleicon@speedypageicon\endcsname {\simpleiconsmaponeone\symbol{36}}
- \expandafter\def\csname simpleicon@sphinxicon\endcsname {\simpleiconsmaponeone\symbol{37}}
- \expandafter\def\csname simpleicon@spigotmcicon\endcsname {\simpleiconsmaponeone\symbol{38}}
- \expandafter\def\csname simpleicon@spineicon\endcsname {\simpleiconsmaponeone\symbol{39}}
- \expandafter\def\csname simpleicon@spinnakericon\endcsname {\simpleiconsmaponeone\symbol{40}}
- \expandafter\def\csname simpleicon@spinrillaicon\endcsname {\simpleiconsmaponeone\symbol{41}}
- \expandafter\def\csname simpleicon@splunkicon\endcsname {\simpleiconsmaponeone\symbol{42}}
- \expandafter\def\csname simpleicon@spojicon\endcsname {\simpleiconsmaponeone\symbol{43}}
- \expandafter\def\csname simpleicon@spondicon\endcsname {\simpleiconsmaponeone\symbol{44}}
- \expandafter\def\csname simpleicon@spotifyicon\endcsname {\simpleiconsmaponeone\symbol{45}}
- \expandafter\def\csname simpleicon@spotlighticon\endcsname {\simpleiconsmaponeone\symbol{46}}
- \expandafter\def\csname simpleicon@spreadshirticon\endcsname {\simpleiconsmaponeone\symbol{47}}
- \expandafter\def\csname simpleicon@spreakericon\endcsname {\simpleiconsmaponeone\symbol{48}}
- \expandafter\def\csname simpleicon@springicon\endcsname {\simpleiconsmaponeone\symbol{49}}
- \expandafter\def\csname simpleicon@springcreatorsicon\endcsname {\simpleiconsmaponeone\symbol{50}}
- \expandafter\def\csname simpleicon@springbooticon\endcsname {\simpleiconsmaponeone\symbol{51}}
- \expandafter\def\csname simpleicon@springsecurityicon\endcsname {\simpleiconsmaponeone\symbol{52}}
- \expandafter\def\csname simpleicon@spyderideicon\endcsname {\simpleiconsmaponeone\symbol{53}}
- \expandafter\def\csname simpleicon@sqlalchemyicon\endcsname {\simpleiconsmaponeone\symbol{54}}
- \expandafter\def\csname simpleicon@sqliteicon\endcsname {\simpleiconsmaponeone\symbol{55}}
- \expandafter\def\csname simpleicon@squareicon\endcsname {\simpleiconsmaponeone\symbol{56}}
- \expandafter\def\csname simpleicon@squareenixicon\endcsname {\simpleiconsmaponeone\symbol{57}}
- \expandafter\def\csname simpleicon@squarespaceicon\endcsname {\simpleiconsmaponeone\symbol{58}}
- \expandafter\def\csname simpleicon@srgssricon\endcsname {\simpleiconsmaponeone\symbol{59}}
- \expandafter\def\csname simpleicon@ssrnicon\endcsname {\simpleiconsmaponeone\symbol{60}}
- \expandafter\def\csname simpleicon@ssticon\endcsname {\simpleiconsmaponeone\symbol{61}}
- \expandafter\def\csname simpleicon@stackbiticon\endcsname {\simpleiconsmaponeone\symbol{62}}
- \expandafter\def\csname simpleicon@stackblitzicon\endcsname {\simpleiconsmaponeone\symbol{63}}
- \expandafter\def\csname simpleicon@stackediticon\endcsname {\simpleiconsmaponeone\symbol{64}}
- \expandafter\def\csname simpleicon@stackexchangeicon\endcsname {\simpleiconsmaponeone\symbol{65}}
- \expandafter\def\csname simpleicon@stackhawkicon\endcsname {\simpleiconsmaponeone\symbol{66}}
- \expandafter\def\csname simpleicon@stackoverflowicon\endcsname {\simpleiconsmaponeone\symbol{67}}
- \expandafter\def\csname simpleicon@stackpathicon\endcsname {\simpleiconsmaponeone\symbol{68}}
- \expandafter\def\csname simpleicon@stackshareicon\endcsname {\simpleiconsmaponeone\symbol{69}}
- \expandafter\def\csname simpleicon@stadiaicon\endcsname {\simpleiconsmaponeone\symbol{70}}
- \expandafter\def\csname simpleicon@staffbaseicon\endcsname {\simpleiconsmaponeone\symbol{71}}
- \expandafter\def\csname simpleicon@stagetimericon\endcsname {\simpleiconsmaponeone\symbol{72}}
- \expandafter\def\csname simpleicon@standardjsicon\endcsname {\simpleiconsmaponeone\symbol{73}}
- \expandafter\def\csname simpleicon@standardresumeicon\endcsname {\simpleiconsmaponeone\symbol{74}}
- \expandafter\def\csname simpleicon@starbucksicon\endcsname {\simpleiconsmaponeone\symbol{75}}
- \expandafter\def\csname simpleicon@stardockicon\endcsname {\simpleiconsmaponeone\symbol{76}}
- \expandafter\def\csname simpleicon@starlingbankicon\endcsname {\simpleiconsmaponeone\symbol{77}}
- \expandafter\def\csname simpleicon@starshipicon\endcsname {\simpleiconsmaponeone\symbol{78}}
- \expandafter\def\csname simpleicon@startrekicon\endcsname {\simpleiconsmaponeone\symbol{79}}
- \expandafter\def\csname simpleicon@starzicon\endcsname {\simpleiconsmaponeone\symbol{80}}
- \expandafter\def\csname simpleicon@statamicicon\endcsname {\simpleiconsmaponeone\symbol{81}}
- \expandafter\def\csname simpleicon@statistaicon\endcsname {\simpleiconsmaponeone\symbol{82}}
- \expandafter\def\csname simpleicon@statuspageicon\endcsname {\simpleiconsmaponeone\symbol{83}}
- \expandafter\def\csname simpleicon@statuspalicon\endcsname {\simpleiconsmaponeone\symbol{84}}
- \expandafter\def\csname simpleicon@steamicon\endcsname {\simpleiconsmaponeone\symbol{85}}
- \expandafter\def\csname simpleicon@steamdbicon\endcsname {\simpleiconsmaponeone\symbol{86}}
- \expandafter\def\csname simpleicon@steamdeckicon\endcsname {\simpleiconsmaponeone\symbol{87}}
- \expandafter\def\csname simpleicon@steamworksicon\endcsname {\simpleiconsmaponeone\symbol{88}}
- \expandafter\def\csname simpleicon@steelseriesicon\endcsname {\simpleiconsmaponeone\symbol{89}}
- \expandafter\def\csname simpleicon@steemicon\endcsname {\simpleiconsmaponeone\symbol{90}}
- \expandafter\def\csname simpleicon@steemiticon\endcsname {\simpleiconsmaponeone\symbol{91}}
- \expandafter\def\csname simpleicon@steinbergicon\endcsname {\simpleiconsmaponeone\symbol{92}}
- \expandafter\def\csname simpleicon@stellaricon\endcsname {\simpleiconsmaponeone\symbol{93}}
- \expandafter\def\csname simpleicon@stencilicon\endcsname {\simpleiconsmaponeone\symbol{94}}
- \expandafter\def\csname simpleicon@stencylicon\endcsname {\simpleiconsmaponeone\symbol{95}}
- \expandafter\def\csname simpleicon@stimulusicon\endcsname {\simpleiconsmaponeone\symbol{96}}
- \expandafter\def\csname simpleicon@stitchericon\endcsname {\simpleiconsmaponeone\symbol{97}}
- \expandafter\def\csname simpleicon@stmicroelectronicsicon\endcsname {\simpleiconsmaponeone\symbol{98}}
- \expandafter\def\csname simpleicon@stockxicon\endcsname {\simpleiconsmaponeone\symbol{99}}
- \expandafter\def\csname simpleicon@stopstalkicon\endcsname {\simpleiconsmaponeone\symbol{100}}
- \expandafter\def\csname simpleicon@storyblokicon\endcsname {\simpleiconsmaponeone\symbol{101}}
- \expandafter\def\csname simpleicon@storybookicon\endcsname {\simpleiconsmaponeone\symbol{102}}
- \expandafter\def\csname simpleicon@strapiicon\endcsname {\simpleiconsmaponeone\symbol{103}}
- \expandafter\def\csname simpleicon@stravaicon\endcsname {\simpleiconsmaponeone\symbol{104}}
- \expandafter\def\csname simpleicon@streamlabsicon\endcsname {\simpleiconsmaponeone\symbol{105}}
- \expandafter\def\csname simpleicon@streamliticon\endcsname {\simpleiconsmaponeone\symbol{106}}
- \expandafter\def\csname simpleicon@streamrunnersicon\endcsname {\simpleiconsmaponeone\symbol{107}}
- \expandafter\def\csname simpleicon@stripeicon\endcsname {\simpleiconsmaponeone\symbol{108}}
- \expandafter\def\csname simpleicon@strongswanicon\endcsname {\simpleiconsmaponeone\symbol{109}}
- \expandafter\def\csname simpleicon@strykericon\endcsname {\simpleiconsmaponeone\symbol{110}}
- \expandafter\def\csname simpleicon@stubhubicon\endcsname {\simpleiconsmaponeone\symbol{111}}
- \expandafter\def\csname simpleicon@studio3ticon\endcsname {\simpleiconsmaponeone\symbol{112}}
- \expandafter\def\csname simpleicon@studyverseicon\endcsname {\simpleiconsmaponeone\symbol{113}}
- \expandafter\def\csname simpleicon@styledcomponentsicon\endcsname {\simpleiconsmaponeone\symbol{114}}
- \expandafter\def\csname simpleicon@stylelinticon\endcsname {\simpleiconsmaponeone\symbol{115}}
- \expandafter\def\csname simpleicon@styleshareicon\endcsname {\simpleiconsmaponeone\symbol{116}}
- \expandafter\def\csname simpleicon@stylusicon\endcsname {\simpleiconsmaponeone\symbol{117}}
- \expandafter\def\csname simpleicon@subaruicon\endcsname {\simpleiconsmaponeone\symbol{118}}
- \expandafter\def\csname simpleicon@sublimetexticon\endcsname {\simpleiconsmaponeone\symbol{119}}
- \expandafter\def\csname simpleicon@substackicon\endcsname {\simpleiconsmaponeone\symbol{120}}
- \expandafter\def\csname simpleicon@subtitleediticon\endcsname {\simpleiconsmaponeone\symbol{121}}
- \expandafter\def\csname simpleicon@subversionicon\endcsname {\simpleiconsmaponeone\symbol{122}}
- \expandafter\def\csname simpleicon@sucklessicon\endcsname {\simpleiconsmaponeone\symbol{123}}
- \expandafter\def\csname simpleicon@sumologicicon\endcsname {\simpleiconsmaponeone\symbol{124}}
- \expandafter\def\csname simpleicon@sunriseicon\endcsname {\simpleiconsmaponeone\symbol{125}}
- \expandafter\def\csname simpleicon@supabaseicon\endcsname {\simpleiconsmaponeone\symbol{126}}
- \expandafter\def\csname simpleicon@supercreaseicon\endcsname {\simpleiconsmaponeone\symbol{127}}
- \expandafter\def\csname simpleicon@supermicroicon\endcsname {\simpleiconsmaponeone\symbol{128}}
- \expandafter\def\csname simpleicon@superusericon\endcsname {\simpleiconsmaponeone\symbol{129}}
- \expandafter\def\csname simpleicon@surrealdbicon\endcsname {\simpleiconsmaponeone\symbol{130}}
- \expandafter\def\csname simpleicon@surveymonkeyicon\endcsname {\simpleiconsmaponeone\symbol{131}}
- \expandafter\def\csname simpleicon@suseicon\endcsname {\simpleiconsmaponeone\symbol{132}}
- \expandafter\def\csname simpleicon@suzukiicon\endcsname {\simpleiconsmaponeone\symbol{133}}
- \expandafter\def\csname simpleicon@svelteicon\endcsname {\simpleiconsmaponeone\symbol{134}}
- \expandafter\def\csname simpleicon@svgicon\endcsname {\simpleiconsmaponeone\symbol{135}}
- \expandafter\def\csname simpleicon@svgdotjsicon\endcsname {\simpleiconsmaponeone\symbol{136}}
- \expandafter\def\csname simpleicon@svgoicon\endcsname {\simpleiconsmaponeone\symbol{137}}
- \expandafter\def\csname simpleicon@swaggericon\endcsname {\simpleiconsmaponeone\symbol{138}}
- \expandafter\def\csname simpleicon@swarmicon\endcsname {\simpleiconsmaponeone\symbol{139}}
- \expandafter\def\csname simpleicon@swcicon\endcsname {\simpleiconsmaponeone\symbol{140}}
- \expandafter\def\csname simpleicon@swifticon\endcsname {\simpleiconsmaponeone\symbol{141}}
- \expandafter\def\csname simpleicon@swiggyicon\endcsname {\simpleiconsmaponeone\symbol{142}}
- \expandafter\def\csname simpleicon@swipericon\endcsname {\simpleiconsmaponeone\symbol{143}}
- \expandafter\def\csname simpleicon@swricon\endcsname {\simpleiconsmaponeone\symbol{144}}
- \expandafter\def\csname simpleicon@symantecicon\endcsname {\simpleiconsmaponeone\symbol{145}}
- \expandafter\def\csname simpleicon@symbolabicon\endcsname {\simpleiconsmaponeone\symbol{146}}
- \expandafter\def\csname simpleicon@symfonyicon\endcsname {\simpleiconsmaponeone\symbol{147}}
- \expandafter\def\csname simpleicon@symphonyicon\endcsname {\simpleiconsmaponeone\symbol{148}}
- \expandafter\def\csname simpleicon@sympyicon\endcsname {\simpleiconsmaponeone\symbol{149}}
- \expandafter\def\csname simpleicon@syncthingicon\endcsname {\simpleiconsmaponeone\symbol{150}}
- \expandafter\def\csname simpleicon@synologyicon\endcsname {\simpleiconsmaponeone\symbol{151}}
- \expandafter\def\csname simpleicon@system76icon\endcsname {\simpleiconsmaponeone\symbol{152}}
- \expandafter\def\csname simpleicon@tabelogicon\endcsname {\simpleiconsmaponeone\symbol{153}}
- \expandafter\def\csname simpleicon@tableauicon\endcsname {\simpleiconsmaponeone\symbol{154}}
- \expandafter\def\csname simpleicon@tablecheckicon\endcsname {\simpleiconsmaponeone\symbol{155}}
- \expandafter\def\csname simpleicon@tacobellicon\endcsname {\simpleiconsmaponeone\symbol{156}}
- \expandafter\def\csname simpleicon@tadoicon\endcsname {\simpleiconsmaponeone\symbol{157}}
- \expandafter\def\csname simpleicon@taichigraphicsicon\endcsname {\simpleiconsmaponeone\symbol{158}}
- \expandafter\def\csname simpleicon@taichilangicon\endcsname {\simpleiconsmaponeone\symbol{159}}
- \expandafter\def\csname simpleicon@tailsicon\endcsname {\simpleiconsmaponeone\symbol{160}}
- \expandafter\def\csname simpleicon@tailscaleicon\endcsname {\simpleiconsmaponeone\symbol{161}}
- \expandafter\def\csname simpleicon@tailwindcssicon\endcsname {\simpleiconsmaponeone\symbol{162}}
- \expandafter\def\csname simpleicon@taipyicon\endcsname {\simpleiconsmaponeone\symbol{163}}
- \expandafter\def\csname simpleicon@taketwointeractivesoftwareicon\endcsname {\simpleiconsmaponeone\symbol{164}}
- \expandafter\def\csname simpleicon@talendicon\endcsname {\simpleiconsmaponeone\symbol{165}}
- \expandafter\def\csname simpleicon@talenthouseicon\endcsname {\simpleiconsmaponeone\symbol{166}}
- \expandafter\def\csname simpleicon@talosicon\endcsname {\simpleiconsmaponeone\symbol{167}}
- \expandafter\def\csname simpleicon@tamiyaicon\endcsname {\simpleiconsmaponeone\symbol{168}}
- \expandafter\def\csname simpleicon@tampermonkeyicon\endcsname {\simpleiconsmaponeone\symbol{169}}
- \expandafter\def\csname simpleicon@taobaoicon\endcsname {\simpleiconsmaponeone\symbol{170}}
- \expandafter\def\csname simpleicon@tapasicon\endcsname {\simpleiconsmaponeone\symbol{171}}
- \expandafter\def\csname simpleicon@targeticon\endcsname {\simpleiconsmaponeone\symbol{172}}
- \expandafter\def\csname simpleicon@taskicon\endcsname {\simpleiconsmaponeone\symbol{173}}
- \expandafter\def\csname simpleicon@tasmotaicon\endcsname {\simpleiconsmaponeone\symbol{174}}
- \expandafter\def\csname simpleicon@tataicon\endcsname {\simpleiconsmaponeone\symbol{175}}
- \expandafter\def\csname simpleicon@tauriicon\endcsname {\simpleiconsmaponeone\symbol{176}}
- \expandafter\def\csname simpleicon@taxbuzzicon\endcsname {\simpleiconsmaponeone\symbol{177}}
- \expandafter\def\csname simpleicon@tcsicon\endcsname {\simpleiconsmaponeone\symbol{178}}
- \expandafter\def\csname simpleicon@tealicon\endcsname {\simpleiconsmaponeone\symbol{179}}
- \expandafter\def\csname simpleicon@teamcityicon\endcsname {\simpleiconsmaponeone\symbol{180}}
- \expandafter\def\csname simpleicon@teamspeakicon\endcsname {\simpleiconsmaponeone\symbol{181}}
- \expandafter\def\csname simpleicon@teamviewericon\endcsname {\simpleiconsmaponeone\symbol{182}}
- \expandafter\def\csname simpleicon@tedicon\endcsname {\simpleiconsmaponeone\symbol{183}}
- \expandafter\def\csname simpleicon@teepublicicon\endcsname {\simpleiconsmaponeone\symbol{184}}
- \expandafter\def\csname simpleicon@teespringicon\endcsname {\simpleiconsmaponeone\symbol{185}}
- \expandafter\def\csname simpleicon@tektonicon\endcsname {\simpleiconsmaponeone\symbol{186}}
- \expandafter\def\csname simpleicon@tele5icon\endcsname {\simpleiconsmaponeone\symbol{187}}
- \expandafter\def\csname simpleicon@telegramicon\endcsname {\simpleiconsmaponeone\symbol{188}}
- \expandafter\def\csname simpleicon@telegraphicon\endcsname {\simpleiconsmaponeone\symbol{189}}
- \expandafter\def\csname simpleicon@telequebecicon\endcsname {\simpleiconsmaponeone\symbol{190}}
- \expandafter\def\csname simpleicon@temporalicon\endcsname {\simpleiconsmaponeone\symbol{191}}
- \expandafter\def\csname simpleicon@tencentqqicon\endcsname {\simpleiconsmaponeone\symbol{192}}
- \expandafter\def\csname simpleicon@tensorflowicon\endcsname {\simpleiconsmaponeone\symbol{193}}
- \expandafter\def\csname simpleicon@teradataicon\endcsname {\simpleiconsmaponeone\symbol{194}}
- \expandafter\def\csname simpleicon@teratailicon\endcsname {\simpleiconsmaponeone\symbol{195}}
- \expandafter\def\csname simpleicon@termiusicon\endcsname {\simpleiconsmaponeone\symbol{196}}
- \expandafter\def\csname simpleicon@terraformicon\endcsname {\simpleiconsmaponeone\symbol{197}}
- \expandafter\def\csname simpleicon@tescoicon\endcsname {\simpleiconsmaponeone\symbol{198}}
- \expandafter\def\csname simpleicon@teslaicon\endcsname {\simpleiconsmaponeone\symbol{199}}
- \expandafter\def\csname simpleicon@testcafeicon\endcsname {\simpleiconsmaponeone\symbol{200}}
- \expandafter\def\csname simpleicon@testinicon\endcsname {\simpleiconsmaponeone\symbol{201}}
- \expandafter\def\csname simpleicon@testinglibraryicon\endcsname {\simpleiconsmaponeone\symbol{202}}
- \expandafter\def\csname simpleicon@testrailicon\endcsname {\simpleiconsmaponeone\symbol{203}}
- \expandafter\def\csname simpleicon@tethericon\endcsname {\simpleiconsmaponeone\symbol{204}}
- \expandafter\def\csname simpleicon@textpatternicon\endcsname {\simpleiconsmaponeone\symbol{205}}
- \expandafter\def\csname simpleicon@tgaicon\endcsname {\simpleiconsmaponeone\symbol{206}}
- \expandafter\def\csname simpleicon@thangsicon\endcsname {\simpleiconsmaponeone\symbol{207}}
- \expandafter\def\csname simpleicon@thealgorithmsicon\endcsname {\simpleiconsmaponeone\symbol{208}}
- \expandafter\def\csname simpleicon@theboringcompanyicon\endcsname {\simpleiconsmaponeone\symbol{209}}
- \expandafter\def\csname simpleicon@theconversationicon\endcsname {\simpleiconsmaponeone\symbol{210}}
- \expandafter\def\csname simpleicon@thefinalsicon\endcsname {\simpleiconsmaponeone\symbol{211}}
- \expandafter\def\csname simpleicon@theirishtimesicon\endcsname {\simpleiconsmaponeone\symbol{212}}
- \expandafter\def\csname simpleicon@themightyicon\endcsname {\simpleiconsmaponeone\symbol{213}}
- \expandafter\def\csname simpleicon@themodelsresourceicon\endcsname {\simpleiconsmaponeone\symbol{214}}
- \expandafter\def\csname simpleicon@themoviedatabaseicon\endcsname {\simpleiconsmaponeone\symbol{215}}
- \expandafter\def\csname simpleicon@thenorthfaceicon\endcsname {\simpleiconsmaponeone\symbol{216}}
- \expandafter\def\csname simpleicon@theodinprojecticon\endcsname {\simpleiconsmaponeone\symbol{217}}
- \expandafter\def\csname simpleicon@theregistericon\endcsname {\simpleiconsmaponeone\symbol{218}}
- \expandafter\def\csname simpleicon@thesoundsresourceicon\endcsname {\simpleiconsmaponeone\symbol{219}}
- \expandafter\def\csname simpleicon@thespritersresourceicon\endcsname {\simpleiconsmaponeone\symbol{220}}
- \expandafter\def\csname simpleicon@thewashingtonposticon\endcsname {\simpleiconsmaponeone\symbol{221}}
- \expandafter\def\csname simpleicon@thingiverseicon\endcsname {\simpleiconsmaponeone\symbol{222}}
- \expandafter\def\csname simpleicon@thinkpadicon\endcsname {\simpleiconsmaponeone\symbol{223}}
- \expandafter\def\csname simpleicon@thirdwebicon\endcsname {\simpleiconsmaponeone\symbol{224}}
- \expandafter\def\csname simpleicon@threadlessicon\endcsname {\simpleiconsmaponeone\symbol{225}}
- \expandafter\def\csname simpleicon@threadsicon\endcsname {\simpleiconsmaponeone\symbol{226}}
- \expandafter\def\csname simpleicon@threedotjsicon\endcsname {\simpleiconsmaponeone\symbol{227}}
- \expandafter\def\csname simpleicon@threemaicon\endcsname {\simpleiconsmaponeone\symbol{228}}
- \expandafter\def\csname simpleicon@thumbtackicon\endcsname {\simpleiconsmaponeone\symbol{229}}
- \expandafter\def\csname simpleicon@thunderbirdicon\endcsname {\simpleiconsmaponeone\symbol{230}}
- \expandafter\def\csname simpleicon@thunderstoreicon\endcsname {\simpleiconsmaponeone\symbol{231}}
- \expandafter\def\csname simpleicon@thurgauerkantonalbankicon\endcsname {\simpleiconsmaponeone\symbol{232}}
- \expandafter\def\csname simpleicon@thymeleaficon\endcsname {\simpleiconsmaponeone\symbol{233}}
- \expandafter\def\csname simpleicon@ticketmastericon\endcsname {\simpleiconsmaponeone\symbol{234}}
- \expandafter\def\csname simpleicon@ticktickicon\endcsname {\simpleiconsmaponeone\symbol{235}}
- \expandafter\def\csname simpleicon@tidalicon\endcsname {\simpleiconsmaponeone\symbol{236}}
- \expandafter\def\csname simpleicon@tiddlywikiicon\endcsname {\simpleiconsmaponeone\symbol{237}}
- \expandafter\def\csname simpleicon@tideicon\endcsname {\simpleiconsmaponeone\symbol{238}}
- \expandafter\def\csname simpleicon@tidyverseicon\endcsname {\simpleiconsmaponeone\symbol{239}}
- \expandafter\def\csname simpleicon@tietoevryicon\endcsname {\simpleiconsmaponeone\symbol{240}}
- \expandafter\def\csname simpleicon@tiktokicon\endcsname {\simpleiconsmaponeone\symbol{241}}
- \expandafter\def\csname simpleicon@tildapublishingicon\endcsname {\simpleiconsmaponeone\symbol{242}}
- \expandafter\def\csname simpleicon@tileicon\endcsname {\simpleiconsmaponeone\symbol{243}}
- \expandafter\def\csname simpleicon@timescaleicon\endcsname {\simpleiconsmaponeone\symbol{244}}
- \expandafter\def\csname simpleicon@tinaicon\endcsname {\simpleiconsmaponeone\symbol{245}}
- \expandafter\def\csname simpleicon@tindericon\endcsname {\simpleiconsmaponeone\symbol{246}}
- \expandafter\def\csname simpleicon@tindieicon\endcsname {\simpleiconsmaponeone\symbol{247}}
- \expandafter\def\csname simpleicon@tinkercadicon\endcsname {\simpleiconsmaponeone\symbol{248}}
- \expandafter\def\csname simpleicon@tinygradicon\endcsname {\simpleiconsmaponeone\symbol{249}}
- \expandafter\def\csname simpleicon@tinylettericon\endcsname {\simpleiconsmaponeone\symbol{250}}
- \expandafter\def\csname simpleicon@tistoryicon\endcsname {\simpleiconsmaponeone\symbol{251}}
- \expandafter\def\csname simpleicon@tldrawicon\endcsname {\simpleiconsmaponeone\symbol{252}}
- \expandafter\def\csname simpleicon@tmobileicon\endcsname {\simpleiconsmaponeone\symbol{253}}
- \expandafter\def\csname simpleicon@tmuxicon\endcsname {\simpleiconsmaponeone\symbol{254}}
- \expandafter\def\csname simpleicon@todoisticon\endcsname {\simpleiconsmaponeone\symbol{255}}
- \expandafter\def\csname simpleicon@togglicon\endcsname {\simpleiconsmaponetwo\symbol{0}}
- \expandafter\def\csname simpleicon@toggltrackicon\endcsname {\simpleiconsmaponetwo\symbol{1}}
- \expandafter\def\csname simpleicon@tokyometroicon\endcsname {\simpleiconsmaponetwo\symbol{2}}
- \expandafter\def\csname simpleicon@tollicon\endcsname {\simpleiconsmaponetwo\symbol{3}}
- \expandafter\def\csname simpleicon@tomlicon\endcsname {\simpleiconsmaponetwo\symbol{4}}
- \expandafter\def\csname simpleicon@tomorrowlandicon\endcsname {\simpleiconsmaponetwo\symbol{5}}
- \expandafter\def\csname simpleicon@tonicon\endcsname {\simpleiconsmaponetwo\symbol{6}}
- \expandafter\def\csname simpleicon@topcodericon\endcsname {\simpleiconsmaponetwo\symbol{7}}
- \expandafter\def\csname simpleicon@topdotggicon\endcsname {\simpleiconsmaponetwo\symbol{8}}
- \expandafter\def\csname simpleicon@toptalicon\endcsname {\simpleiconsmaponetwo\symbol{9}}
- \expandafter\def\csname simpleicon@torbrowsericon\endcsname {\simpleiconsmaponetwo\symbol{10}}
- \expandafter\def\csname simpleicon@torprojecticon\endcsname {\simpleiconsmaponetwo\symbol{11}}
- \expandafter\def\csname simpleicon@toshibaicon\endcsname {\simpleiconsmaponetwo\symbol{12}}
- \expandafter\def\csname simpleicon@totvsicon\endcsname {\simpleiconsmaponetwo\symbol{13}}
- \expandafter\def\csname simpleicon@tourboxicon\endcsname {\simpleiconsmaponetwo\symbol{14}}
- \expandafter\def\csname simpleicon@towericon\endcsname {\simpleiconsmaponetwo\symbol{15}}
- \expandafter\def\csname simpleicon@toyotaicon\endcsname {\simpleiconsmaponetwo\symbol{16}}
- \expandafter\def\csname simpleicon@tplinkicon\endcsname {\simpleiconsmaponetwo\symbol{17}}
- \expandafter\def\csname simpleicon@tqdmicon\endcsname {\simpleiconsmaponetwo\symbol{18}}
- \expandafter\def\csname simpleicon@traccaricon\endcsname {\simpleiconsmaponetwo\symbol{19}}
- \expandafter\def\csname simpleicon@tradingviewicon\endcsname {\simpleiconsmaponetwo\symbol{20}}
- \expandafter\def\csname simpleicon@traefikmeshicon\endcsname {\simpleiconsmaponetwo\symbol{21}}
- \expandafter\def\csname simpleicon@traefikproxyicon\endcsname {\simpleiconsmaponetwo\symbol{22}}
- \expandafter\def\csname simpleicon@trailforksicon\endcsname {\simpleiconsmaponetwo\symbol{23}}
- \expandafter\def\csname simpleicon@trainerroadicon\endcsname {\simpleiconsmaponetwo\symbol{24}}
- \expandafter\def\csname simpleicon@trakticon\endcsname {\simpleiconsmaponetwo\symbol{25}}
- \expandafter\def\csname simpleicon@transifexicon\endcsname {\simpleiconsmaponetwo\symbol{26}}
- \expandafter\def\csname simpleicon@transmissionicon\endcsname {\simpleiconsmaponetwo\symbol{27}}
- \expandafter\def\csname simpleicon@transportforirelandicon\endcsname {\simpleiconsmaponetwo\symbol{28}}
- \expandafter\def\csname simpleicon@transportforlondonicon\endcsname {\simpleiconsmaponetwo\symbol{29}}
- \expandafter\def\csname simpleicon@travisciicon\endcsname {\simpleiconsmaponetwo\symbol{30}}
- \expandafter\def\csname simpleicon@treehouseicon\endcsname {\simpleiconsmaponetwo\symbol{31}}
- \expandafter\def\csname simpleicon@trelloicon\endcsname {\simpleiconsmaponetwo\symbol{32}}
- \expandafter\def\csname simpleicon@trendmicroicon\endcsname {\simpleiconsmaponetwo\symbol{33}}
- \expandafter\def\csname simpleicon@treyarchicon\endcsname {\simpleiconsmaponetwo\symbol{34}}
- \expandafter\def\csname simpleicon@tricentisicon\endcsname {\simpleiconsmaponetwo\symbol{35}}
- \expandafter\def\csname simpleicon@triliumicon\endcsname {\simpleiconsmaponetwo\symbol{36}}
- \expandafter\def\csname simpleicon@trillericon\endcsname {\simpleiconsmaponetwo\symbol{37}}
- \expandafter\def\csname simpleicon@trillertvicon\endcsname {\simpleiconsmaponetwo\symbol{38}}
- \expandafter\def\csname simpleicon@trinoicon\endcsname {\simpleiconsmaponetwo\symbol{39}}
- \expandafter\def\csname simpleicon@tripadvisoricon\endcsname {\simpleiconsmaponetwo\symbol{40}}
- \expandafter\def\csname simpleicon@tripdotcomicon\endcsname {\simpleiconsmaponetwo\symbol{41}}
- \expandafter\def\csname simpleicon@trivyicon\endcsname {\simpleiconsmaponetwo\symbol{42}}
- \expandafter\def\csname simpleicon@troveicon\endcsname {\simpleiconsmaponetwo\symbol{43}}
- \expandafter\def\csname simpleicon@trpcicon\endcsname {\simpleiconsmaponetwo\symbol{44}}
- \expandafter\def\csname simpleicon@truenasicon\endcsname {\simpleiconsmaponetwo\symbol{45}}
- \expandafter\def\csname simpleicon@trueupicon\endcsname {\simpleiconsmaponetwo\symbol{46}}
- \expandafter\def\csname simpleicon@truliaicon\endcsname {\simpleiconsmaponetwo\symbol{47}}
- \expandafter\def\csname simpleicon@trustedshopsicon\endcsname {\simpleiconsmaponetwo\symbol{48}}
- \expandafter\def\csname simpleicon@trustpiloticon\endcsname {\simpleiconsmaponetwo\symbol{49}}
- \expandafter\def\csname simpleicon@tryhackmeicon\endcsname {\simpleiconsmaponetwo\symbol{50}}
- \expandafter\def\csname simpleicon@tryitonlineicon\endcsname {\simpleiconsmaponetwo\symbol{51}}
- \expandafter\def\csname simpleicon@tsnodeicon\endcsname {\simpleiconsmaponetwo\symbol{52}}
- \expandafter\def\csname simpleicon@tubiicon\endcsname {\simpleiconsmaponetwo\symbol{53}}
- \expandafter\def\csname simpleicon@tuiicon\endcsname {\simpleiconsmaponetwo\symbol{54}}
- \expandafter\def\csname simpleicon@tumblricon\endcsname {\simpleiconsmaponetwo\symbol{55}}
- \expandafter\def\csname simpleicon@tuneinicon\endcsname {\simpleiconsmaponetwo\symbol{56}}
- \expandafter\def\csname simpleicon@turboicon\endcsname {\simpleiconsmaponetwo\symbol{57}}
- \expandafter\def\csname simpleicon@turborepoicon\endcsname {\simpleiconsmaponetwo\symbol{58}}
- \expandafter\def\csname simpleicon@turbosquidicon\endcsname {\simpleiconsmaponetwo\symbol{59}}
- \expandafter\def\csname simpleicon@turkishairlinesicon\endcsname {\simpleiconsmaponetwo\symbol{60}}
- \expandafter\def\csname simpleicon@tursoicon\endcsname {\simpleiconsmaponetwo\symbol{61}}
- \expandafter\def\csname simpleicon@tutanotaicon\endcsname {\simpleiconsmaponetwo\symbol{62}}
- \expandafter\def\csname simpleicon@tv4playicon\endcsname {\simpleiconsmaponetwo\symbol{63}}
- \expandafter\def\csname simpleicon@tvtimeicon\endcsname {\simpleiconsmaponetwo\symbol{64}}
- \expandafter\def\csname simpleicon@twilioicon\endcsname {\simpleiconsmaponetwo\symbol{65}}
- \expandafter\def\csname simpleicon@twinklyicon\endcsname {\simpleiconsmaponetwo\symbol{66}}
- \expandafter\def\csname simpleicon@twinmotionicon\endcsname {\simpleiconsmaponetwo\symbol{67}}
- \expandafter\def\csname simpleicon@twitchicon\endcsname {\simpleiconsmaponetwo\symbol{68}}
- \expandafter\def\csname simpleicon@typeformicon\endcsname {\simpleiconsmaponetwo\symbol{69}}
- \expandafter\def\csname simpleicon@typeormicon\endcsname {\simpleiconsmaponetwo\symbol{70}}
- \expandafter\def\csname simpleicon@typericon\endcsname {\simpleiconsmaponetwo\symbol{71}}
- \expandafter\def\csname simpleicon@typescripticon\endcsname {\simpleiconsmaponetwo\symbol{72}}
- \expandafter\def\csname simpleicon@typo3icon\endcsname {\simpleiconsmaponetwo\symbol{73}}
- \expandafter\def\csname simpleicon@typsticon\endcsname {\simpleiconsmaponetwo\symbol{74}}
- \expandafter\def\csname simpleicon@ubericon\endcsname {\simpleiconsmaponetwo\symbol{75}}
- \expandafter\def\csname simpleicon@ubereatsicon\endcsname {\simpleiconsmaponetwo\symbol{76}}
- \expandafter\def\csname simpleicon@ubiquitiicon\endcsname {\simpleiconsmaponetwo\symbol{77}}
- \expandafter\def\csname simpleicon@ubisofticon\endcsname {\simpleiconsmaponetwo\symbol{78}}
- \expandafter\def\csname simpleicon@ublockoriginicon\endcsname {\simpleiconsmaponetwo\symbol{79}}
- \expandafter\def\csname simpleicon@ubuntuicon\endcsname {\simpleiconsmaponetwo\symbol{80}}
- \expandafter\def\csname simpleicon@ubuntumateicon\endcsname {\simpleiconsmaponetwo\symbol{81}}
- \expandafter\def\csname simpleicon@udacityicon\endcsname {\simpleiconsmaponetwo\symbol{82}}
- \expandafter\def\csname simpleicon@udemyicon\endcsname {\simpleiconsmaponetwo\symbol{83}}
- \expandafter\def\csname simpleicon@ufcicon\endcsname {\simpleiconsmaponetwo\symbol{84}}
- \expandafter\def\csname simpleicon@uikiticon\endcsname {\simpleiconsmaponetwo\symbol{85}}
- \expandafter\def\csname simpleicon@uipathicon\endcsname {\simpleiconsmaponetwo\symbol{86}}
- \expandafter\def\csname simpleicon@ululeicon\endcsname {\simpleiconsmaponetwo\symbol{87}}
- \expandafter\def\csname simpleicon@umamiicon\endcsname {\simpleiconsmaponetwo\symbol{88}}
- \expandafter\def\csname simpleicon@umbracoicon\endcsname {\simpleiconsmaponetwo\symbol{89}}
- \expandafter\def\csname simpleicon@umlicon\endcsname {\simpleiconsmaponetwo\symbol{90}}
- \expandafter\def\csname simpleicon@unacademyicon\endcsname {\simpleiconsmaponetwo\symbol{91}}
- \expandafter\def\csname simpleicon@underarmouricon\endcsname {\simpleiconsmaponetwo\symbol{92}}
- \expandafter\def\csname simpleicon@underscoredotjsicon\endcsname {\simpleiconsmaponetwo\symbol{93}}
- \expandafter\def\csname simpleicon@undertaleicon\endcsname {\simpleiconsmaponetwo\symbol{94}}
- \expandafter\def\csname simpleicon@unicodeicon\endcsname {\simpleiconsmaponetwo\symbol{95}}
- \expandafter\def\csname simpleicon@unilevericon\endcsname {\simpleiconsmaponetwo\symbol{96}}
- \expandafter\def\csname simpleicon@uniqloicon\endcsname {\simpleiconsmaponetwo\symbol{97}}
- \expandafter\def\csname simpleicon@uniqlojaicon\endcsname {\simpleiconsmaponetwo\symbol{98}}
- \expandafter\def\csname simpleicon@unitedairlinesicon\endcsname {\simpleiconsmaponetwo\symbol{99}}
- \expandafter\def\csname simpleicon@unitednationsicon\endcsname {\simpleiconsmaponetwo\symbol{100}}
- \expandafter\def\csname simpleicon@unityicon\endcsname {\simpleiconsmaponetwo\symbol{101}}
- \expandafter\def\csname simpleicon@unlicenseicon\endcsname {\simpleiconsmaponetwo\symbol{102}}
- \expandafter\def\csname simpleicon@unocssicon\endcsname {\simpleiconsmaponetwo\symbol{103}}
- \expandafter\def\csname simpleicon@unpkgicon\endcsname {\simpleiconsmaponetwo\symbol{104}}
- \expandafter\def\csname simpleicon@unraidicon\endcsname {\simpleiconsmaponetwo\symbol{105}}
- \expandafter\def\csname simpleicon@unrealengineicon\endcsname {\simpleiconsmaponetwo\symbol{106}}
- \expandafter\def\csname simpleicon@unsplashicon\endcsname {\simpleiconsmaponetwo\symbol{107}}
- \expandafter\def\csname simpleicon@untappdicon\endcsname {\simpleiconsmaponetwo\symbol{108}}
- \expandafter\def\csname simpleicon@upcloudicon\endcsname {\simpleiconsmaponetwo\symbol{109}}
- \expandafter\def\csname simpleicon@upholdicon\endcsname {\simpleiconsmaponetwo\symbol{110}}
- \expandafter\def\csname simpleicon@uplabsicon\endcsname {\simpleiconsmaponetwo\symbol{111}}
- \expandafter\def\csname simpleicon@upptimeicon\endcsname {\simpleiconsmaponetwo\symbol{112}}
- \expandafter\def\csname simpleicon@upsicon\endcsname {\simpleiconsmaponetwo\symbol{113}}
- \expandafter\def\csname simpleicon@upstashicon\endcsname {\simpleiconsmaponetwo\symbol{114}}
- \expandafter\def\csname simpleicon@uptimekumaicon\endcsname {\simpleiconsmaponetwo\symbol{115}}
- \expandafter\def\csname simpleicon@uptoboxicon\endcsname {\simpleiconsmaponetwo\symbol{116}}
- \expandafter\def\csname simpleicon@upworkicon\endcsname {\simpleiconsmaponetwo\symbol{117}}
- \expandafter\def\csname simpleicon@uspsicon\endcsname {\simpleiconsmaponetwo\symbol{118}}
- \expandafter\def\csname simpleicon@utorrenticon\endcsname {\simpleiconsmaponetwo\symbol{119}}
- \expandafter\def\csname simpleicon@vicon\endcsname {\simpleiconsmaponetwo\symbol{120}}
- \expandafter\def\csname simpleicon@v2exicon\endcsname {\simpleiconsmaponetwo\symbol{121}}
- \expandafter\def\csname simpleicon@v8icon\endcsname {\simpleiconsmaponetwo\symbol{122}}
- \expandafter\def\csname simpleicon@vaadinicon\endcsname {\simpleiconsmaponetwo\symbol{123}}
- \expandafter\def\csname simpleicon@vagranticon\endcsname {\simpleiconsmaponetwo\symbol{124}}
- \expandafter\def\csname simpleicon@valaicon\endcsname {\simpleiconsmaponetwo\symbol{125}}
- \expandafter\def\csname simpleicon@valoranticon\endcsname {\simpleiconsmaponetwo\symbol{126}}
- \expandafter\def\csname simpleicon@valveicon\endcsname {\simpleiconsmaponetwo\symbol{127}}
- \expandafter\def\csname simpleicon@vaporicon\endcsname {\simpleiconsmaponetwo\symbol{128}}
- \expandafter\def\csname simpleicon@vaulticon\endcsname {\simpleiconsmaponetwo\symbol{129}}
- \expandafter\def\csname simpleicon@vaultwardenicon\endcsname {\simpleiconsmaponetwo\symbol{130}}
- \expandafter\def\csname simpleicon@vauxhallicon\endcsname {\simpleiconsmaponetwo\symbol{131}}
- \expandafter\def\csname simpleicon@vbulletinicon\endcsname {\simpleiconsmaponetwo\symbol{132}}
- \expandafter\def\csname simpleicon@vectaryicon\endcsname {\simpleiconsmaponetwo\symbol{133}}
- \expandafter\def\csname simpleicon@vectorlogozoneicon\endcsname {\simpleiconsmaponetwo\symbol{134}}
- \expandafter\def\csname simpleicon@vectorworksicon\endcsname {\simpleiconsmaponetwo\symbol{135}}
- \expandafter\def\csname simpleicon@veeamicon\endcsname {\simpleiconsmaponetwo\symbol{136}}
- \expandafter\def\csname simpleicon@veedicon\endcsname {\simpleiconsmaponetwo\symbol{137}}
- \expandafter\def\csname simpleicon@veepeeicon\endcsname {\simpleiconsmaponetwo\symbol{138}}
- \expandafter\def\csname simpleicon@vegaicon\endcsname {\simpleiconsmaponetwo\symbol{139}}
- \expandafter\def\csname simpleicon@vegasicon\endcsname {\simpleiconsmaponetwo\symbol{140}}
- \expandafter\def\csname simpleicon@velogicon\endcsname {\simpleiconsmaponetwo\symbol{141}}
- \expandafter\def\csname simpleicon@venmoicon\endcsname {\simpleiconsmaponetwo\symbol{142}}
- \expandafter\def\csname simpleicon@vercelicon\endcsname {\simpleiconsmaponetwo\symbol{143}}
- \expandafter\def\csname simpleicon@verdaccioicon\endcsname {\simpleiconsmaponetwo\symbol{144}}
- \expandafter\def\csname simpleicon@veritasicon\endcsname {\simpleiconsmaponetwo\symbol{145}}
- \expandafter\def\csname simpleicon@verizonicon\endcsname {\simpleiconsmaponetwo\symbol{146}}
- \expandafter\def\csname simpleicon@vespaicon\endcsname {\simpleiconsmaponetwo\symbol{147}}
- \expandafter\def\csname simpleicon@vexxhosticon\endcsname {\simpleiconsmaponetwo\symbol{148}}
- \expandafter\def\csname simpleicon@vfairsicon\endcsname {\simpleiconsmaponetwo\symbol{149}}
- \expandafter\def\csname simpleicon@viadeoicon\endcsname {\simpleiconsmaponetwo\symbol{150}}
- \expandafter\def\csname simpleicon@viaplayicon\endcsname {\simpleiconsmaponetwo\symbol{151}}
- \expandafter\def\csname simpleicon@vibericon\endcsname {\simpleiconsmaponetwo\symbol{152}}
- \expandafter\def\csname simpleicon@vibloicon\endcsname {\simpleiconsmaponetwo\symbol{153}}
- \expandafter\def\csname simpleicon@victoriametricsicon\endcsname {\simpleiconsmaponetwo\symbol{154}}
- \expandafter\def\csname simpleicon@victronenergyicon\endcsname {\simpleiconsmaponetwo\symbol{155}}
- \expandafter\def\csname simpleicon@vimicon\endcsname {\simpleiconsmaponetwo\symbol{156}}
- \expandafter\def\csname simpleicon@vimeoicon\endcsname {\simpleiconsmaponetwo\symbol{157}}
- \expandafter\def\csname simpleicon@vimeolivestreamicon\endcsname {\simpleiconsmaponetwo\symbol{158}}
- \expandafter\def\csname simpleicon@virginicon\endcsname {\simpleiconsmaponetwo\symbol{159}}
- \expandafter\def\csname simpleicon@virginatlanticicon\endcsname {\simpleiconsmaponetwo\symbol{160}}
- \expandafter\def\csname simpleicon@virginmediaicon\endcsname {\simpleiconsmaponetwo\symbol{161}}
- \expandafter\def\csname simpleicon@virtualboxicon\endcsname {\simpleiconsmaponetwo\symbol{162}}
- \expandafter\def\csname simpleicon@virustotalicon\endcsname {\simpleiconsmaponetwo\symbol{163}}
- \expandafter\def\csname simpleicon@visaicon\endcsname {\simpleiconsmaponetwo\symbol{164}}
- \expandafter\def\csname simpleicon@visualbasicicon\endcsname {\simpleiconsmaponetwo\symbol{165}}
- \expandafter\def\csname simpleicon@visualstudioicon\endcsname {\simpleiconsmaponetwo\symbol{166}}
- \expandafter\def\csname simpleicon@visualstudioappcentericon\endcsname {\simpleiconsmaponetwo\symbol{167}}
- \expandafter\def\csname simpleicon@visualstudiocodeicon\endcsname {\simpleiconsmaponetwo\symbol{168}}
- \expandafter\def\csname simpleicon@visxicon\endcsname {\simpleiconsmaponetwo\symbol{169}}
- \expandafter\def\csname simpleicon@viteicon\endcsname {\simpleiconsmaponetwo\symbol{170}}
- \expandafter\def\csname simpleicon@vitepressicon\endcsname {\simpleiconsmaponetwo\symbol{171}}
- \expandafter\def\csname simpleicon@vitessicon\endcsname {\simpleiconsmaponetwo\symbol{172}}
- \expandafter\def\csname simpleicon@vitesticon\endcsname {\simpleiconsmaponetwo\symbol{173}}
- \expandafter\def\csname simpleicon@vivaldiicon\endcsname {\simpleiconsmaponetwo\symbol{174}}
- \expandafter\def\csname simpleicon@vivawalleticon\endcsname {\simpleiconsmaponetwo\symbol{175}}
- \expandafter\def\csname simpleicon@vivinoicon\endcsname {\simpleiconsmaponetwo\symbol{176}}
- \expandafter\def\csname simpleicon@vivinticon\endcsname {\simpleiconsmaponetwo\symbol{177}}
- \expandafter\def\csname simpleicon@vivoicon\endcsname {\simpleiconsmaponetwo\symbol{178}}
- \expandafter\def\csname simpleicon@vkicon\endcsname {\simpleiconsmaponetwo\symbol{179}}
- \expandafter\def\csname simpleicon@vlcmediaplayericon\endcsname {\simpleiconsmaponetwo\symbol{180}}
- \expandafter\def\csname simpleicon@vmwareicon\endcsname {\simpleiconsmaponetwo\symbol{181}}
- \expandafter\def\csname simpleicon@vodafoneicon\endcsname {\simpleiconsmaponetwo\symbol{182}}
- \expandafter\def\csname simpleicon@voidlinuxicon\endcsname {\simpleiconsmaponetwo\symbol{183}}
- \expandafter\def\csname simpleicon@voipdotmsicon\endcsname {\simpleiconsmaponetwo\symbol{184}}
- \expandafter\def\csname simpleicon@volkswagenicon\endcsname {\simpleiconsmaponetwo\symbol{185}}
- \expandafter\def\csname simpleicon@volvoicon\endcsname {\simpleiconsmaponetwo\symbol{186}}
- \expandafter\def\csname simpleicon@vonageicon\endcsname {\simpleiconsmaponetwo\symbol{187}}
- \expandafter\def\csname simpleicon@vorondesignicon\endcsname {\simpleiconsmaponetwo\symbol{188}}
- \expandafter\def\csname simpleicon@vowpalwabbiticon\endcsname {\simpleiconsmaponetwo\symbol{189}}
- \expandafter\def\csname simpleicon@voxicon\endcsname {\simpleiconsmaponetwo\symbol{190}}
- \expandafter\def\csname simpleicon@vscoicon\endcsname {\simpleiconsmaponetwo\symbol{191}}
- \expandafter\def\csname simpleicon@vscodiumicon\endcsname {\simpleiconsmaponetwo\symbol{192}}
- \expandafter\def\csname simpleicon@vtexicon\endcsname {\simpleiconsmaponetwo\symbol{193}}
- \expandafter\def\csname simpleicon@vuedotjsicon\endcsname {\simpleiconsmaponetwo\symbol{194}}
- \expandafter\def\csname simpleicon@vuetifyicon\endcsname {\simpleiconsmaponetwo\symbol{195}}
- \expandafter\def\csname simpleicon@vulkanicon\endcsname {\simpleiconsmaponetwo\symbol{196}}
- \expandafter\def\csname simpleicon@vultricon\endcsname {\simpleiconsmaponetwo\symbol{197}}
- \expandafter\def\csname simpleicon@vyondicon\endcsname {\simpleiconsmaponetwo\symbol{198}}
- \expandafter\def\csname simpleicon@w3schoolsicon\endcsname {\simpleiconsmaponetwo\symbol{199}}
- \expandafter\def\csname simpleicon@wacomicon\endcsname {\simpleiconsmaponetwo\symbol{200}}
- \expandafter\def\csname simpleicon@wagmiicon\endcsname {\simpleiconsmaponetwo\symbol{201}}
- \expandafter\def\csname simpleicon@wagtailicon\endcsname {\simpleiconsmaponetwo\symbol{202}}
- \expandafter\def\csname simpleicon@wailsicon\endcsname {\simpleiconsmaponetwo\symbol{203}}
- \expandafter\def\csname simpleicon@wakatimeicon\endcsname {\simpleiconsmaponetwo\symbol{204}}
- \expandafter\def\csname simpleicon@walkmanicon\endcsname {\simpleiconsmaponetwo\symbol{205}}
- \expandafter\def\csname simpleicon@wallabagicon\endcsname {\simpleiconsmaponetwo\symbol{206}}
- \expandafter\def\csname simpleicon@walletconnecticon\endcsname {\simpleiconsmaponetwo\symbol{207}}
- \expandafter\def\csname simpleicon@walmarticon\endcsname {\simpleiconsmaponetwo\symbol{208}}
- \expandafter\def\csname simpleicon@wantedlyicon\endcsname {\simpleiconsmaponetwo\symbol{209}}
- \expandafter\def\csname simpleicon@wappalyzericon\endcsname {\simpleiconsmaponetwo\symbol{210}}
- \expandafter\def\csname simpleicon@warnerbrosicon\endcsname {\simpleiconsmaponetwo\symbol{211}}
- \expandafter\def\csname simpleicon@warpicon\endcsname {\simpleiconsmaponetwo\symbol{212}}
- \expandafter\def\csname simpleicon@wasabiicon\endcsname {\simpleiconsmaponetwo\symbol{213}}
- \expandafter\def\csname simpleicon@wasmcloudicon\endcsname {\simpleiconsmaponetwo\symbol{214}}
- \expandafter\def\csname simpleicon@wasmericon\endcsname {\simpleiconsmaponetwo\symbol{215}}
- \expandafter\def\csname simpleicon@watchtowericon\endcsname {\simpleiconsmaponetwo\symbol{216}}
- \expandafter\def\csname simpleicon@wattpadicon\endcsname {\simpleiconsmaponetwo\symbol{217}}
- \expandafter\def\csname simpleicon@waylandicon\endcsname {\simpleiconsmaponetwo\symbol{218}}
- \expandafter\def\csname simpleicon@wazeicon\endcsname {\simpleiconsmaponetwo\symbol{219}}
- \expandafter\def\csname simpleicon@wazirxicon\endcsname {\simpleiconsmaponetwo\symbol{220}}
- \expandafter\def\csname simpleicon@wearosicon\endcsname {\simpleiconsmaponetwo\symbol{221}}
- \expandafter\def\csname simpleicon@weasylicon\endcsname {\simpleiconsmaponetwo\symbol{222}}
- \expandafter\def\csname simpleicon@web3dotjsicon\endcsname {\simpleiconsmaponetwo\symbol{223}}
- \expandafter\def\csname simpleicon@webassemblyicon\endcsname {\simpleiconsmaponetwo\symbol{224}}
- \expandafter\def\csname simpleicon@webauthnicon\endcsname {\simpleiconsmaponetwo\symbol{225}}
- \expandafter\def\csname simpleicon@webcomponentsdotorgicon\endcsname {\simpleiconsmaponetwo\symbol{226}}
- \expandafter\def\csname simpleicon@webdriverioicon\endcsname {\simpleiconsmaponetwo\symbol{227}}
- \expandafter\def\csname simpleicon@webexicon\endcsname {\simpleiconsmaponetwo\symbol{228}}
- \expandafter\def\csname simpleicon@webflowicon\endcsname {\simpleiconsmaponetwo\symbol{229}}
- \expandafter\def\csname simpleicon@webglicon\endcsname {\simpleiconsmaponetwo\symbol{230}}
- \expandafter\def\csname simpleicon@weblateicon\endcsname {\simpleiconsmaponetwo\symbol{231}}
- \expandafter\def\csname simpleicon@webminicon\endcsname {\simpleiconsmaponetwo\symbol{232}}
- \expandafter\def\csname simpleicon@webmoneyicon\endcsname {\simpleiconsmaponetwo\symbol{233}}
- \expandafter\def\csname simpleicon@webpackicon\endcsname {\simpleiconsmaponetwo\symbol{234}}
- \expandafter\def\csname simpleicon@webrtcicon\endcsname {\simpleiconsmaponetwo\symbol{235}}
- \expandafter\def\csname simpleicon@webstormicon\endcsname {\simpleiconsmaponetwo\symbol{236}}
- \expandafter\def\csname simpleicon@webtoonicon\endcsname {\simpleiconsmaponetwo\symbol{237}}
- \expandafter\def\csname simpleicon@webtreesicon\endcsname {\simpleiconsmaponetwo\symbol{238}}
- \expandafter\def\csname simpleicon@wechaticon\endcsname {\simpleiconsmaponetwo\symbol{239}}
- \expandafter\def\csname simpleicon@wegameicon\endcsname {\simpleiconsmaponetwo\symbol{240}}
- \expandafter\def\csname simpleicon@weightsandbiasesicon\endcsname {\simpleiconsmaponetwo\symbol{241}}
- \expandafter\def\csname simpleicon@welcometothejungleicon\endcsname {\simpleiconsmaponetwo\symbol{242}}
- \expandafter\def\csname simpleicon@wellfoundicon\endcsname {\simpleiconsmaponetwo\symbol{243}}
- \expandafter\def\csname simpleicon@wellsfargoicon\endcsname {\simpleiconsmaponetwo\symbol{244}}
- \expandafter\def\csname simpleicon@wemoicon\endcsname {\simpleiconsmaponetwo\symbol{245}}
- \expandafter\def\csname simpleicon@westerndigitalicon\endcsname {\simpleiconsmaponetwo\symbol{246}}
- \expandafter\def\csname simpleicon@westernunionicon\endcsname {\simpleiconsmaponetwo\symbol{247}}
- \expandafter\def\csname simpleicon@wetransfericon\endcsname {\simpleiconsmaponetwo\symbol{248}}
- \expandafter\def\csname simpleicon@weztermicon\endcsname {\simpleiconsmaponetwo\symbol{249}}
- \expandafter\def\csname simpleicon@wgpuicon\endcsname {\simpleiconsmaponetwo\symbol{250}}
- \expandafter\def\csname simpleicon@whatsappicon\endcsname {\simpleiconsmaponetwo\symbol{251}}
- \expandafter\def\csname simpleicon@wheniworkicon\endcsname {\simpleiconsmaponetwo\symbol{252}}
- \expandafter\def\csname simpleicon@wiiicon\endcsname {\simpleiconsmaponetwo\symbol{253}}
- \expandafter\def\csname simpleicon@wiiuicon\endcsname {\simpleiconsmaponetwo\symbol{254}}
- \expandafter\def\csname simpleicon@wikidataicon\endcsname {\simpleiconsmaponetwo\symbol{255}}
- \expandafter\def\csname simpleicon@wikidotggicon\endcsname {\simpleiconsmaponethree\symbol{0}}
- \expandafter\def\csname simpleicon@wikidotjsicon\endcsname {\simpleiconsmaponethree\symbol{1}}
- \expandafter\def\csname simpleicon@wikimediacommonsicon\endcsname {\simpleiconsmaponethree\symbol{2}}
- \expandafter\def\csname simpleicon@wikimediafoundationicon\endcsname {\simpleiconsmaponethree\symbol{3}}
- \expandafter\def\csname simpleicon@wikipediaicon\endcsname {\simpleiconsmaponethree\symbol{4}}
- \expandafter\def\csname simpleicon@wikiquoteicon\endcsname {\simpleiconsmaponethree\symbol{5}}
- \expandafter\def\csname simpleicon@wikivoyageicon\endcsname {\simpleiconsmaponethree\symbol{6}}
- \expandafter\def\csname simpleicon@winampicon\endcsname {\simpleiconsmaponethree\symbol{7}}
- \expandafter\def\csname simpleicon@windowsicon\endcsname {\simpleiconsmaponethree\symbol{8}}
- \expandafter\def\csname simpleicon@windows10icon\endcsname {\simpleiconsmaponethree\symbol{9}}
- \expandafter\def\csname simpleicon@windows95icon\endcsname {\simpleiconsmaponethree\symbol{10}}
- \expandafter\def\csname simpleicon@windowsterminalicon\endcsname {\simpleiconsmaponethree\symbol{11}}
- \expandafter\def\csname simpleicon@windowsxpicon\endcsname {\simpleiconsmaponethree\symbol{12}}
- \expandafter\def\csname simpleicon@wiproicon\endcsname {\simpleiconsmaponethree\symbol{13}}
- \expandafter\def\csname simpleicon@wireicon\endcsname {\simpleiconsmaponethree\symbol{14}}
- \expandafter\def\csname simpleicon@wireguardicon\endcsname {\simpleiconsmaponethree\symbol{15}}
- \expandafter\def\csname simpleicon@wiresharkicon\endcsname {\simpleiconsmaponethree\symbol{16}}
- \expandafter\def\csname simpleicon@wiseicon\endcsname {\simpleiconsmaponethree\symbol{17}}
- \expandafter\def\csname simpleicon@wishicon\endcsname {\simpleiconsmaponethree\symbol{18}}
- \expandafter\def\csname simpleicon@wistiaicon\endcsname {\simpleiconsmaponethree\symbol{19}}
- \expandafter\def\csname simpleicon@wixicon\endcsname {\simpleiconsmaponethree\symbol{20}}
- \expandafter\def\csname simpleicon@wizzairicon\endcsname {\simpleiconsmaponethree\symbol{21}}
- \expandafter\def\csname simpleicon@wolframicon\endcsname {\simpleiconsmaponethree\symbol{22}}
- \expandafter\def\csname simpleicon@wolframlanguageicon\endcsname {\simpleiconsmaponethree\symbol{23}}
- \expandafter\def\csname simpleicon@wolframmathematicaicon\endcsname {\simpleiconsmaponethree\symbol{24}}
- \expandafter\def\csname simpleicon@wondershareicon\endcsname {\simpleiconsmaponethree\symbol{25}}
- \expandafter\def\csname simpleicon@wondersharefilmoraicon\endcsname {\simpleiconsmaponethree\symbol{26}}
- \expandafter\def\csname simpleicon@wooicon\endcsname {\simpleiconsmaponethree\symbol{27}}
- \expandafter\def\csname simpleicon@woocommerceicon\endcsname {\simpleiconsmaponethree\symbol{28}}
- \expandafter\def\csname simpleicon@wordpressicon\endcsname {\simpleiconsmaponethree\symbol{29}}
- \expandafter\def\csname simpleicon@workplaceicon\endcsname {\simpleiconsmaponethree\symbol{30}}
- \expandafter\def\csname simpleicon@worldhealthorganizationicon\endcsname {\simpleiconsmaponethree\symbol{31}}
- \expandafter\def\csname simpleicon@wpengineicon\endcsname {\simpleiconsmaponethree\symbol{32}}
- \expandafter\def\csname simpleicon@wpexplorericon\endcsname {\simpleiconsmaponethree\symbol{33}}
- \expandafter\def\csname simpleicon@wprocketicon\endcsname {\simpleiconsmaponethree\symbol{34}}
- \expandafter\def\csname simpleicon@writedotasicon\endcsname {\simpleiconsmaponethree\symbol{35}}
- \expandafter\def\csname simpleicon@wweicon\endcsname {\simpleiconsmaponethree\symbol{36}}
- \expandafter\def\csname simpleicon@wwiseicon\endcsname {\simpleiconsmaponethree\symbol{37}}
- \expandafter\def\csname simpleicon@wyzeicon\endcsname {\simpleiconsmaponethree\symbol{38}}
- \expandafter\def\csname simpleicon@xicon\endcsname {\simpleiconsmaponethree\symbol{39}}
- \expandafter\def\csname simpleicon@xamarinicon\endcsname {\simpleiconsmaponethree\symbol{40}}
- \expandafter\def\csname simpleicon@xamlicon\endcsname {\simpleiconsmaponethree\symbol{41}}
- \expandafter\def\csname simpleicon@xamppicon\endcsname {\simpleiconsmaponethree\symbol{42}}
- \expandafter\def\csname simpleicon@xboxicon\endcsname {\simpleiconsmaponethree\symbol{43}}
- \expandafter\def\csname simpleicon@xcodeicon\endcsname {\simpleiconsmaponethree\symbol{44}}
- \expandafter\def\csname simpleicon@xdadevelopersicon\endcsname {\simpleiconsmaponethree\symbol{45}}
- \expandafter\def\csname simpleicon@xdotorgicon\endcsname {\simpleiconsmaponethree\symbol{46}}
- \expandafter\def\csname simpleicon@xenditicon\endcsname {\simpleiconsmaponethree\symbol{47}}
- \expandafter\def\csname simpleicon@xeroicon\endcsname {\simpleiconsmaponethree\symbol{48}}
- \expandafter\def\csname simpleicon@xfceicon\endcsname {\simpleiconsmaponethree\symbol{49}}
- \expandafter\def\csname simpleicon@xiaohongshuicon\endcsname {\simpleiconsmaponethree\symbol{50}}
- \expandafter\def\csname simpleicon@xiaomiicon\endcsname {\simpleiconsmaponethree\symbol{51}}
- \expandafter\def\csname simpleicon@xingicon\endcsname {\simpleiconsmaponethree\symbol{52}}
- \expandafter\def\csname simpleicon@xmppicon\endcsname {\simpleiconsmaponethree\symbol{53}}
- \expandafter\def\csname simpleicon@xoicon\endcsname {\simpleiconsmaponethree\symbol{54}}
- \expandafter\def\csname simpleicon@xrpicon\endcsname {\simpleiconsmaponethree\symbol{55}}
- \expandafter\def\csname simpleicon@xspliticon\endcsname {\simpleiconsmaponethree\symbol{56}}
- \expandafter\def\csname simpleicon@xstateicon\endcsname {\simpleiconsmaponethree\symbol{57}}
- \expandafter\def\csname simpleicon@yabaiicon\endcsname {\simpleiconsmaponethree\symbol{58}}
- \expandafter\def\csname simpleicon@yaleicon\endcsname {\simpleiconsmaponethree\symbol{59}}
- \expandafter\def\csname simpleicon@yamahacorporationicon\endcsname {\simpleiconsmaponethree\symbol{60}}
- \expandafter\def\csname simpleicon@yamahamotorcorporationicon\endcsname {\simpleiconsmaponethree\symbol{61}}
- \expandafter\def\csname simpleicon@yamlicon\endcsname {\simpleiconsmaponethree\symbol{62}}
- \expandafter\def\csname simpleicon@yammericon\endcsname {\simpleiconsmaponethree\symbol{63}}
- \expandafter\def\csname simpleicon@yandexcloudicon\endcsname {\simpleiconsmaponethree\symbol{64}}
- \expandafter\def\csname simpleicon@yarnicon\endcsname {\simpleiconsmaponethree\symbol{65}}
- \expandafter\def\csname simpleicon@ycombinatoricon\endcsname {\simpleiconsmaponethree\symbol{66}}
- \expandafter\def\csname simpleicon@yelpicon\endcsname {\simpleiconsmaponethree\symbol{67}}
- \expandafter\def\csname simpleicon@yetiicon\endcsname {\simpleiconsmaponethree\symbol{68}}
- \expandafter\def\csname simpleicon@yoasticon\endcsname {\simpleiconsmaponethree\symbol{69}}
- \expandafter\def\csname simpleicon@youtubeicon\endcsname {\simpleiconsmaponethree\symbol{70}}
- \expandafter\def\csname simpleicon@youtubegamingicon\endcsname {\simpleiconsmaponethree\symbol{71}}
- \expandafter\def\csname simpleicon@youtubekidsicon\endcsname {\simpleiconsmaponethree\symbol{72}}
- \expandafter\def\csname simpleicon@youtubemusicicon\endcsname {\simpleiconsmaponethree\symbol{73}}
- \expandafter\def\csname simpleicon@youtubeshortsicon\endcsname {\simpleiconsmaponethree\symbol{74}}
- \expandafter\def\csname simpleicon@youtubestudioicon\endcsname {\simpleiconsmaponethree\symbol{75}}
- \expandafter\def\csname simpleicon@youtubetvicon\endcsname {\simpleiconsmaponethree\symbol{76}}
- \expandafter\def\csname simpleicon@yricon\endcsname {\simpleiconsmaponethree\symbol{77}}
- \expandafter\def\csname simpleicon@yubicoicon\endcsname {\simpleiconsmaponethree\symbol{78}}
- \expandafter\def\csname simpleicon@yunohosticon\endcsname {\simpleiconsmaponethree\symbol{79}}
- \expandafter\def\csname simpleicon@zabkaicon\endcsname {\simpleiconsmaponethree\symbol{80}}
- \expandafter\def\csname simpleicon@zaimicon\endcsname {\simpleiconsmaponethree\symbol{81}}
- \expandafter\def\csname simpleicon@zalandoicon\endcsname {\simpleiconsmaponethree\symbol{82}}
- \expandafter\def\csname simpleicon@zaloicon\endcsname {\simpleiconsmaponethree\symbol{83}}
- \expandafter\def\csname simpleicon@zapicon\endcsname {\simpleiconsmaponethree\symbol{84}}
- \expandafter\def\csname simpleicon@zapiericon\endcsname {\simpleiconsmaponethree\symbol{85}}
- \expandafter\def\csname simpleicon@zaraicon\endcsname {\simpleiconsmaponethree\symbol{86}}
- \expandafter\def\csname simpleicon@zazzleicon\endcsname {\simpleiconsmaponethree\symbol{87}}
- \expandafter\def\csname simpleicon@zcashicon\endcsname {\simpleiconsmaponethree\symbol{88}}
- \expandafter\def\csname simpleicon@zcoolicon\endcsname {\simpleiconsmaponethree\symbol{89}}
- \expandafter\def\csname simpleicon@zdficon\endcsname {\simpleiconsmaponethree\symbol{90}}
- \expandafter\def\csname simpleicon@zebpayicon\endcsname {\simpleiconsmaponethree\symbol{91}}
- \expandafter\def\csname simpleicon@zebratechnologiesicon\endcsname {\simpleiconsmaponethree\symbol{92}}
- \expandafter\def\csname simpleicon@zedindustriesicon\endcsname {\simpleiconsmaponethree\symbol{93}}
- \expandafter\def\csname simpleicon@zelleicon\endcsname {\simpleiconsmaponethree\symbol{94}}
- \expandafter\def\csname simpleicon@zendicon\endcsname {\simpleiconsmaponethree\symbol{95}}
- \expandafter\def\csname simpleicon@zendeskicon\endcsname {\simpleiconsmaponethree\symbol{96}}
- \expandafter\def\csname simpleicon@zennicon\endcsname {\simpleiconsmaponethree\symbol{97}}
- \expandafter\def\csname simpleicon@zenodoicon\endcsname {\simpleiconsmaponethree\symbol{98}}
- \expandafter\def\csname simpleicon@zensaricon\endcsname {\simpleiconsmaponethree\symbol{99}}
- \expandafter\def\csname simpleicon@zerodhaicon\endcsname {\simpleiconsmaponethree\symbol{100}}
- \expandafter\def\csname simpleicon@zerplyicon\endcsname {\simpleiconsmaponethree\symbol{101}}
- \expandafter\def\csname simpleicon@zettlricon\endcsname {\simpleiconsmaponethree\symbol{102}}
- \expandafter\def\csname simpleicon@zhihuicon\endcsname {\simpleiconsmaponethree\symbol{103}}
- \expandafter\def\csname simpleicon@zigicon\endcsname {\simpleiconsmaponethree\symbol{104}}
- \expandafter\def\csname simpleicon@zigbeeicon\endcsname {\simpleiconsmaponethree\symbol{105}}
- \expandafter\def\csname simpleicon@zigbee2mqtticon\endcsname {\simpleiconsmaponethree\symbol{106}}
- \expandafter\def\csname simpleicon@ziggoicon\endcsname {\simpleiconsmaponethree\symbol{107}}
- \expandafter\def\csname simpleicon@zilchicon\endcsname {\simpleiconsmaponethree\symbol{108}}
- \expandafter\def\csname simpleicon@zillowicon\endcsname {\simpleiconsmaponethree\symbol{109}}
- \expandafter\def\csname simpleicon@zincsearchicon\endcsname {\simpleiconsmaponethree\symbol{110}}
- \expandafter\def\csname simpleicon@zingaticon\endcsname {\simpleiconsmaponethree\symbol{111}}
- \expandafter\def\csname simpleicon@zodicon\endcsname {\simpleiconsmaponethree\symbol{112}}
- \expandafter\def\csname simpleicon@zohoicon\endcsname {\simpleiconsmaponethree\symbol{113}}
- \expandafter\def\csname simpleicon@zoipericon\endcsname {\simpleiconsmaponethree\symbol{114}}
- \expandafter\def\csname simpleicon@zomatoicon\endcsname {\simpleiconsmaponethree\symbol{115}}
- \expandafter\def\csname simpleicon@zoomicon\endcsname {\simpleiconsmaponethree\symbol{116}}
- \expandafter\def\csname simpleicon@zorinicon\endcsname {\simpleiconsmaponethree\symbol{117}}
- \expandafter\def\csname simpleicon@zoteroicon\endcsname {\simpleiconsmaponethree\symbol{118}}
- \expandafter\def\csname simpleicon@zshicon\endcsname {\simpleiconsmaponethree\symbol{119}}
- \expandafter\def\csname simpleicon@zulipicon\endcsname {\simpleiconsmaponethree\symbol{120}}
- \expandafter\def\csname simpleicon@zyteicon\endcsname {\simpleiconsmaponethree\symbol{121}} \ No newline at end of file
+ \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@30secondsofcodeicon\endcsname {\simpleiconsmapone\symbol{6}}
+ \expandafter\def\csname simpleicon@365datascienceicon\endcsname {\simpleiconsmapone\symbol{7}}
+ \expandafter\def\csname simpleicon@3micon\endcsname {\simpleiconsmapone\symbol{8}}
+ \expandafter\def\csname simpleicon@42icon\endcsname {\simpleiconsmapone\symbol{9}}
+ \expandafter\def\csname simpleicon@4chanicon\endcsname {\simpleiconsmapone\symbol{10}}
+ \expandafter\def\csname simpleicon@4dicon\endcsname {\simpleiconsmapone\symbol{11}}
+ \expandafter\def\csname simpleicon@500pxicon\endcsname {\simpleiconsmapone\symbol{12}}
+ \expandafter\def\csname simpleicon@7zipicon\endcsname {\simpleiconsmapone\symbol{13}}
+ \expandafter\def\csname simpleicon@99designsicon\endcsname {\simpleiconsmapone\symbol{14}}
+ \expandafter\def\csname simpleicon@9gagicon\endcsname {\simpleiconsmapone\symbol{15}}
+ \expandafter\def\csname simpleicon@abbotticon\endcsname {\simpleiconsmapone\symbol{16}}
+ \expandafter\def\csname simpleicon@abbrobotstudioicon\endcsname {\simpleiconsmapone\symbol{17}}
+ \expandafter\def\csname simpleicon@abbvieicon\endcsname {\simpleiconsmapone\symbol{18}}
+ \expandafter\def\csname simpleicon@aboutdotmeicon\endcsname {\simpleiconsmapone\symbol{19}}
+ \expandafter\def\csname simpleicon@abstracticon\endcsname {\simpleiconsmapone\symbol{20}}
+ \expandafter\def\csname simpleicon@abusedotchicon\endcsname {\simpleiconsmapone\symbol{21}}
+ \expandafter\def\csname simpleicon@academiaicon\endcsname {\simpleiconsmapone\symbol{22}}
+ \expandafter\def\csname simpleicon@accentureicon\endcsname {\simpleiconsmapone\symbol{23}}
+ \expandafter\def\csname simpleicon@accusofticon\endcsname {\simpleiconsmapone\symbol{24}}
+ \expandafter\def\csname simpleicon@acericon\endcsname {\simpleiconsmapone\symbol{25}}
+ \expandafter\def\csname simpleicon@acmicon\endcsname {\simpleiconsmapone\symbol{26}}
+ \expandafter\def\csname simpleicon@actigraphicon\endcsname {\simpleiconsmapone\symbol{27}}
+ \expandafter\def\csname simpleicon@activisionicon\endcsname {\simpleiconsmapone\symbol{28}}
+ \expandafter\def\csname simpleicon@activitypubicon\endcsname {\simpleiconsmapone\symbol{29}}
+ \expandafter\def\csname simpleicon@actixicon\endcsname {\simpleiconsmapone\symbol{30}}
+ \expandafter\def\csname simpleicon@actualbudgeticon\endcsname {\simpleiconsmapone\symbol{31}}
+ \expandafter\def\csname simpleicon@acuraicon\endcsname {\simpleiconsmapone\symbol{32}}
+ \expandafter\def\csname simpleicon@adafruiticon\endcsname {\simpleiconsmapone\symbol{33}}
+ \expandafter\def\csname simpleicon@adblockicon\endcsname {\simpleiconsmapone\symbol{34}}
+ \expandafter\def\csname simpleicon@adblockplusicon\endcsname {\simpleiconsmapone\symbol{35}}
+ \expandafter\def\csname simpleicon@adguardicon\endcsname {\simpleiconsmapone\symbol{36}}
+ \expandafter\def\csname simpleicon@adidasicon\endcsname {\simpleiconsmapone\symbol{37}}
+ \expandafter\def\csname simpleicon@adminericon\endcsname {\simpleiconsmapone\symbol{38}}
+ \expandafter\def\csname simpleicon@adobeicon\endcsname {\simpleiconsmapone\symbol{39}}
+ \expandafter\def\csname simpleicon@adobeacrobatreadericon\endcsname {\simpleiconsmapone\symbol{40}}
+ \expandafter\def\csname simpleicon@adobeaftereffectsicon\endcsname {\simpleiconsmapone\symbol{41}}
+ \expandafter\def\csname simpleicon@adobeauditionicon\endcsname {\simpleiconsmapone\symbol{42}}
+ \expandafter\def\csname simpleicon@adobecreativecloudicon\endcsname {\simpleiconsmapone\symbol{43}}
+ \expandafter\def\csname simpleicon@adobedreamweavericon\endcsname {\simpleiconsmapone\symbol{44}}
+ \expandafter\def\csname simpleicon@adobefontsicon\endcsname {\simpleiconsmapone\symbol{45}}
+ \expandafter\def\csname simpleicon@adobeillustratoricon\endcsname {\simpleiconsmapone\symbol{46}}
+ \expandafter\def\csname simpleicon@adobeindesignicon\endcsname {\simpleiconsmapone\symbol{47}}
+ \expandafter\def\csname simpleicon@adobelightroomicon\endcsname {\simpleiconsmapone\symbol{48}}
+ \expandafter\def\csname simpleicon@adobelightroomclassicicon\endcsname {\simpleiconsmapone\symbol{49}}
+ \expandafter\def\csname simpleicon@adobephotoshopicon\endcsname {\simpleiconsmapone\symbol{50}}
+ \expandafter\def\csname simpleicon@adobepremiereproicon\endcsname {\simpleiconsmapone\symbol{51}}
+ \expandafter\def\csname simpleicon@adobexdicon\endcsname {\simpleiconsmapone\symbol{52}}
+ \expandafter\def\csname simpleicon@adonisjsicon\endcsname {\simpleiconsmapone\symbol{53}}
+ \expandafter\def\csname simpleicon@adpicon\endcsname {\simpleiconsmapone\symbol{54}}
+ \expandafter\def\csname simpleicon@adrollicon\endcsname {\simpleiconsmapone\symbol{55}}
+ \expandafter\def\csname simpleicon@adventofcodeicon\endcsname {\simpleiconsmapone\symbol{56}}
+ \expandafter\def\csname simpleicon@adyenicon\endcsname {\simpleiconsmapone\symbol{57}}
+ \expandafter\def\csname simpleicon@aegisauthenticatoricon\endcsname {\simpleiconsmapone\symbol{58}}
+ \expandafter\def\csname simpleicon@aerlingusicon\endcsname {\simpleiconsmapone\symbol{59}}
+ \expandafter\def\csname simpleicon@aerofloticon\endcsname {\simpleiconsmapone\symbol{60}}
+ \expandafter\def\csname simpleicon@aeromexicoicon\endcsname {\simpleiconsmapone\symbol{61}}
+ \expandafter\def\csname simpleicon@aerospikeicon\endcsname {\simpleiconsmapone\symbol{62}}
+ \expandafter\def\csname simpleicon@aewicon\endcsname {\simpleiconsmapone\symbol{63}}
+ \expandafter\def\csname simpleicon@affineicon\endcsname {\simpleiconsmapone\symbol{64}}
+ \expandafter\def\csname simpleicon@affinityicon\endcsname {\simpleiconsmapone\symbol{65}}
+ \expandafter\def\csname simpleicon@affinitydesignericon\endcsname {\simpleiconsmapone\symbol{66}}
+ \expandafter\def\csname simpleicon@affinityphotoicon\endcsname {\simpleiconsmapone\symbol{67}}
+ \expandafter\def\csname simpleicon@affinitypublishericon\endcsname {\simpleiconsmapone\symbol{68}}
+ \expandafter\def\csname simpleicon@aframeicon\endcsname {\simpleiconsmapone\symbol{69}}
+ \expandafter\def\csname simpleicon@afterpayicon\endcsname {\simpleiconsmapone\symbol{70}}
+ \expandafter\def\csname simpleicon@agoraicon\endcsname {\simpleiconsmapone\symbol{71}}
+ \expandafter\def\csname simpleicon@aibicon\endcsname {\simpleiconsmapone\symbol{72}}
+ \expandafter\def\csname simpleicon@aidungeonicon\endcsname {\simpleiconsmapone\symbol{73}}
+ \expandafter\def\csname simpleicon@aiohttpicon\endcsname {\simpleiconsmapone\symbol{74}}
+ \expandafter\def\csname simpleicon@aiqfomeicon\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@aircanadaicon\endcsname {\simpleiconsmapone\symbol{82}}
+ \expandafter\def\csname simpleicon@airchinaicon\endcsname {\simpleiconsmapone\symbol{83}}
+ \expandafter\def\csname simpleicon@airfranceicon\endcsname {\simpleiconsmapone\symbol{84}}
+ \expandafter\def\csname simpleicon@airindiaicon\endcsname {\simpleiconsmapone\symbol{85}}
+ \expandafter\def\csname simpleicon@airplayaudioicon\endcsname {\simpleiconsmapone\symbol{86}}
+ \expandafter\def\csname simpleicon@airplayvideoicon\endcsname {\simpleiconsmapone\symbol{87}}
+ \expandafter\def\csname simpleicon@airtableicon\endcsname {\simpleiconsmapone\symbol{88}}
+ \expandafter\def\csname simpleicon@airtelicon\endcsname {\simpleiconsmapone\symbol{89}}
+ \expandafter\def\csname simpleicon@airtransaticon\endcsname {\simpleiconsmapone\symbol{90}}
+ \expandafter\def\csname simpleicon@ajvicon\endcsname {\simpleiconsmapone\symbol{91}}
+ \expandafter\def\csname simpleicon@akamaiicon\endcsname {\simpleiconsmapone\symbol{92}}
+ \expandafter\def\csname simpleicon@akauntingicon\endcsname {\simpleiconsmapone\symbol{93}}
+ \expandafter\def\csname simpleicon@akiflowicon\endcsname {\simpleiconsmapone\symbol{94}}
+ \expandafter\def\csname simpleicon@alacrittyicon\endcsname {\simpleiconsmapone\symbol{95}}
+ \expandafter\def\csname simpleicon@alamyicon\endcsname {\simpleiconsmapone\symbol{96}}
+ \expandafter\def\csname simpleicon@albertheijnicon\endcsname {\simpleiconsmapone\symbol{97}}
+ \expandafter\def\csname simpleicon@albyicon\endcsname {\simpleiconsmapone\symbol{98}}
+ \expandafter\def\csname simpleicon@alchemyicon\endcsname {\simpleiconsmapone\symbol{99}}
+ \expandafter\def\csname simpleicon@aldinordicon\endcsname {\simpleiconsmapone\symbol{100}}
+ \expandafter\def\csname simpleicon@aldisudicon\endcsname {\simpleiconsmapone\symbol{101}}
+ \expandafter\def\csname simpleicon@alfaromeoicon\endcsname {\simpleiconsmapone\symbol{102}}
+ \expandafter\def\csname simpleicon@alfredicon\endcsname {\simpleiconsmapone\symbol{103}}
+ \expandafter\def\csname simpleicon@algoliaicon\endcsname {\simpleiconsmapone\symbol{104}}
+ \expandafter\def\csname simpleicon@algorandicon\endcsname {\simpleiconsmapone\symbol{105}}
+ \expandafter\def\csname simpleicon@alibabacloudicon\endcsname {\simpleiconsmapone\symbol{106}}
+ \expandafter\def\csname simpleicon@alibabadotcomicon\endcsname {\simpleiconsmapone\symbol{107}}
+ \expandafter\def\csname simpleicon@alienwareicon\endcsname {\simpleiconsmapone\symbol{108}}
+ \expandafter\def\csname simpleicon@aliexpressicon\endcsname {\simpleiconsmapone\symbol{109}}
+ \expandafter\def\csname simpleicon@alipayicon\endcsname {\simpleiconsmapone\symbol{110}}
+ \expandafter\def\csname simpleicon@allegroicon\endcsname {\simpleiconsmapone\symbol{111}}
+ \expandafter\def\csname simpleicon@alliedmoddersicon\endcsname {\simpleiconsmapone\symbol{112}}
+ \expandafter\def\csname simpleicon@allocineicon\endcsname {\simpleiconsmapone\symbol{113}}
+ \expandafter\def\csname simpleicon@alltrailsicon\endcsname {\simpleiconsmapone\symbol{114}}
+ \expandafter\def\csname simpleicon@almalinuxicon\endcsname {\simpleiconsmapone\symbol{115}}
+ \expandafter\def\csname simpleicon@alpinedotjsicon\endcsname {\simpleiconsmapone\symbol{116}}
+ \expandafter\def\csname simpleicon@alpinelinuxicon\endcsname {\simpleiconsmapone\symbol{117}}
+ \expandafter\def\csname simpleicon@alternativetoicon\endcsname {\simpleiconsmapone\symbol{118}}
+ \expandafter\def\csname simpleicon@alteryxicon\endcsname {\simpleiconsmapone\symbol{119}}
+ \expandafter\def\csname simpleicon@altiumdesignericon\endcsname {\simpleiconsmapone\symbol{120}}
+ \expandafter\def\csname simpleicon@alwaysdataicon\endcsname {\simpleiconsmapone\symbol{121}}
+ \expandafter\def\csname simpleicon@alxicon\endcsname {\simpleiconsmapone\symbol{122}}
+ \expandafter\def\csname simpleicon@amazonicon\endcsname {\simpleiconsmapone\symbol{123}}
+ \expandafter\def\csname simpleicon@amazonalexaicon\endcsname {\simpleiconsmapone\symbol{124}}
+ \expandafter\def\csname simpleicon@amazonapigatewayicon\endcsname {\simpleiconsmapone\symbol{125}}
+ \expandafter\def\csname simpleicon@amazoncloudwatchicon\endcsname {\simpleiconsmapone\symbol{126}}
+ \expandafter\def\csname simpleicon@amazoncognitoicon\endcsname {\simpleiconsmapone\symbol{127}}
+ \expandafter\def\csname simpleicon@amazondocumentdbicon\endcsname {\simpleiconsmapone\symbol{128}}
+ \expandafter\def\csname simpleicon@amazondynamodbicon\endcsname {\simpleiconsmapone\symbol{129}}
+ \expandafter\def\csname simpleicon@amazonec2icon\endcsname {\simpleiconsmapone\symbol{130}}
+ \expandafter\def\csname simpleicon@amazonecsicon\endcsname {\simpleiconsmapone\symbol{131}}
+ \expandafter\def\csname simpleicon@amazoneksicon\endcsname {\simpleiconsmapone\symbol{132}}
+ \expandafter\def\csname simpleicon@amazonelasticacheicon\endcsname {\simpleiconsmapone\symbol{133}}
+ \expandafter\def\csname simpleicon@amazonfiretvicon\endcsname {\simpleiconsmapone\symbol{134}}
+ \expandafter\def\csname simpleicon@amazongamesicon\endcsname {\simpleiconsmapone\symbol{135}}
+ \expandafter\def\csname simpleicon@amazoniamicon\endcsname {\simpleiconsmapone\symbol{136}}
+ \expandafter\def\csname simpleicon@amazonlumberyardicon\endcsname {\simpleiconsmapone\symbol{137}}
+ \expandafter\def\csname simpleicon@amazonlunaicon\endcsname {\simpleiconsmapone\symbol{138}}
+ \expandafter\def\csname simpleicon@amazonmusicicon\endcsname {\simpleiconsmapone\symbol{139}}
+ \expandafter\def\csname simpleicon@amazonpayicon\endcsname {\simpleiconsmapone\symbol{140}}
+ \expandafter\def\csname simpleicon@amazonprimeicon\endcsname {\simpleiconsmapone\symbol{141}}
+ \expandafter\def\csname simpleicon@amazonrdsicon\endcsname {\simpleiconsmapone\symbol{142}}
+ \expandafter\def\csname simpleicon@amazonredshifticon\endcsname {\simpleiconsmapone\symbol{143}}
+ \expandafter\def\csname simpleicon@amazonroute53icon\endcsname {\simpleiconsmapone\symbol{144}}
+ \expandafter\def\csname simpleicon@amazons3icon\endcsname {\simpleiconsmapone\symbol{145}}
+ \expandafter\def\csname simpleicon@amazonsimpleemailserviceicon\endcsname {\simpleiconsmapone\symbol{146}}
+ \expandafter\def\csname simpleicon@amazonsqsicon\endcsname {\simpleiconsmapone\symbol{147}}
+ \expandafter\def\csname simpleicon@amazonwebservicesicon\endcsname {\simpleiconsmapone\symbol{148}}
+ \expandafter\def\csname simpleicon@amdicon\endcsname {\simpleiconsmapone\symbol{149}}
+ \expandafter\def\csname simpleicon@amebaicon\endcsname {\simpleiconsmapone\symbol{150}}
+ \expandafter\def\csname simpleicon@americanairlinesicon\endcsname {\simpleiconsmapone\symbol{151}}
+ \expandafter\def\csname simpleicon@americanexpressicon\endcsname {\simpleiconsmapone\symbol{152}}
+ \expandafter\def\csname simpleicon@amgicon\endcsname {\simpleiconsmapone\symbol{153}}
+ \expandafter\def\csname simpleicon@ampicon\endcsname {\simpleiconsmapone\symbol{154}}
+ \expandafter\def\csname simpleicon@amulicon\endcsname {\simpleiconsmapone\symbol{155}}
+ \expandafter\def\csname simpleicon@anaicon\endcsname {\simpleiconsmapone\symbol{156}}
+ \expandafter\def\csname simpleicon@anacondaicon\endcsname {\simpleiconsmapone\symbol{157}}
+ \expandafter\def\csname simpleicon@analogueicon\endcsname {\simpleiconsmapone\symbol{158}}
+ \expandafter\def\csname simpleicon@andelaicon\endcsname {\simpleiconsmapone\symbol{159}}
+ \expandafter\def\csname simpleicon@androidicon\endcsname {\simpleiconsmapone\symbol{160}}
+ \expandafter\def\csname simpleicon@androidautoicon\endcsname {\simpleiconsmapone\symbol{161}}
+ \expandafter\def\csname simpleicon@androidstudioicon\endcsname {\simpleiconsmapone\symbol{162}}
+ \expandafter\def\csname simpleicon@angularicon\endcsname {\simpleiconsmapone\symbol{163}}
+ \expandafter\def\csname simpleicon@anilisticon\endcsname {\simpleiconsmapone\symbol{164}}
+ \expandafter\def\csname simpleicon@animalplaneticon\endcsname {\simpleiconsmapone\symbol{165}}
+ \expandafter\def\csname simpleicon@ankermakeicon\endcsname {\simpleiconsmapone\symbol{166}}
+ \expandafter\def\csname simpleicon@ankiicon\endcsname {\simpleiconsmapone\symbol{167}}
+ \expandafter\def\csname simpleicon@ansibleicon\endcsname {\simpleiconsmapone\symbol{168}}
+ \expandafter\def\csname simpleicon@answericon\endcsname {\simpleiconsmapone\symbol{169}}
+ \expandafter\def\csname simpleicon@ansysicon\endcsname {\simpleiconsmapone\symbol{170}}
+ \expandafter\def\csname simpleicon@antaicon\endcsname {\simpleiconsmapone\symbol{171}}
+ \expandafter\def\csname simpleicon@antdesignicon\endcsname {\simpleiconsmapone\symbol{172}}
+ \expandafter\def\csname simpleicon@antena3icon\endcsname {\simpleiconsmapone\symbol{173}}
+ \expandafter\def\csname simpleicon@anthropicicon\endcsname {\simpleiconsmapone\symbol{174}}
+ \expandafter\def\csname simpleicon@anycubicicon\endcsname {\simpleiconsmapone\symbol{175}}
+ \expandafter\def\csname simpleicon@anydeskicon\endcsname {\simpleiconsmapone\symbol{176}}
+ \expandafter\def\csname simpleicon@anytypeicon\endcsname {\simpleiconsmapone\symbol{177}}
+ \expandafter\def\csname simpleicon@aolicon\endcsname {\simpleiconsmapone\symbol{178}}
+ \expandafter\def\csname simpleicon@apacheicon\endcsname {\simpleiconsmapone\symbol{179}}
+ \expandafter\def\csname simpleicon@apacheairflowicon\endcsname {\simpleiconsmapone\symbol{180}}
+ \expandafter\def\csname simpleicon@apacheanticon\endcsname {\simpleiconsmapone\symbol{181}}
+ \expandafter\def\csname simpleicon@apachecassandraicon\endcsname {\simpleiconsmapone\symbol{182}}
+ \expandafter\def\csname simpleicon@apachecloudstackicon\endcsname {\simpleiconsmapone\symbol{183}}
+ \expandafter\def\csname simpleicon@apachecordovaicon\endcsname {\simpleiconsmapone\symbol{184}}
+ \expandafter\def\csname simpleicon@apachecouchdbicon\endcsname {\simpleiconsmapone\symbol{185}}
+ \expandafter\def\csname simpleicon@apachedolphinschedulericon\endcsname {\simpleiconsmapone\symbol{186}}
+ \expandafter\def\csname simpleicon@apachedruidicon\endcsname {\simpleiconsmapone\symbol{187}}
+ \expandafter\def\csname simpleicon@apacheechartsicon\endcsname {\simpleiconsmapone\symbol{188}}
+ \expandafter\def\csname simpleicon@apacheflinkicon\endcsname {\simpleiconsmapone\symbol{189}}
+ \expandafter\def\csname simpleicon@apachefreemarkericon\endcsname {\simpleiconsmapone\symbol{190}}
+ \expandafter\def\csname simpleicon@apachegroovyicon\endcsname {\simpleiconsmapone\symbol{191}}
+ \expandafter\def\csname simpleicon@apacheguacamoleicon\endcsname {\simpleiconsmapone\symbol{192}}
+ \expandafter\def\csname simpleicon@apachehadoopicon\endcsname {\simpleiconsmapone\symbol{193}}
+ \expandafter\def\csname simpleicon@apachehbaseicon\endcsname {\simpleiconsmapone\symbol{194}}
+ \expandafter\def\csname simpleicon@apachehiveicon\endcsname {\simpleiconsmapone\symbol{195}}
+ \expandafter\def\csname simpleicon@apachejmetericon\endcsname {\simpleiconsmapone\symbol{196}}
+ \expandafter\def\csname simpleicon@apachekafkaicon\endcsname {\simpleiconsmapone\symbol{197}}
+ \expandafter\def\csname simpleicon@apachekylinicon\endcsname {\simpleiconsmapone\symbol{198}}
+ \expandafter\def\csname simpleicon@apachemavenicon\endcsname {\simpleiconsmapone\symbol{199}}
+ \expandafter\def\csname simpleicon@apachenetbeansideicon\endcsname {\simpleiconsmapone\symbol{200}}
+ \expandafter\def\csname simpleicon@apachenifiicon\endcsname {\simpleiconsmapone\symbol{201}}
+ \expandafter\def\csname simpleicon@apacheopenofficeicon\endcsname {\simpleiconsmapone\symbol{202}}
+ \expandafter\def\csname simpleicon@apacheparqueticon\endcsname {\simpleiconsmapone\symbol{203}}
+ \expandafter\def\csname simpleicon@apachepulsaricon\endcsname {\simpleiconsmapone\symbol{204}}
+ \expandafter\def\csname simpleicon@apacherocketmqicon\endcsname {\simpleiconsmapone\symbol{205}}
+ \expandafter\def\csname simpleicon@apachesolricon\endcsname {\simpleiconsmapone\symbol{206}}
+ \expandafter\def\csname simpleicon@apachesparkicon\endcsname {\simpleiconsmapone\symbol{207}}
+ \expandafter\def\csname simpleicon@apachestormicon\endcsname {\simpleiconsmapone\symbol{208}}
+ \expandafter\def\csname simpleicon@apachesuperseticon\endcsname {\simpleiconsmapone\symbol{209}}
+ \expandafter\def\csname simpleicon@apachetomcaticon\endcsname {\simpleiconsmapone\symbol{210}}
+ \expandafter\def\csname simpleicon@aparaticon\endcsname {\simpleiconsmapone\symbol{211}}
+ \expandafter\def\csname simpleicon@apifoxicon\endcsname {\simpleiconsmapone\symbol{212}}
+ \expandafter\def\csname simpleicon@apmterminalsicon\endcsname {\simpleiconsmapone\symbol{213}}
+ \expandafter\def\csname simpleicon@apollographqlicon\endcsname {\simpleiconsmapone\symbol{214}}
+ \expandafter\def\csname simpleicon@apostropheicon\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@appstoreicon\endcsname {\simpleiconsmapone\symbol{227}}
+ \expandafter\def\csname simpleicon@appveyoricon\endcsname {\simpleiconsmapone\symbol{228}}
+ \expandafter\def\csname simpleicon@appwriteicon\endcsname {\simpleiconsmapone\symbol{229}}
+ \expandafter\def\csname simpleicon@aquaicon\endcsname {\simpleiconsmapone\symbol{230}}
+ \expandafter\def\csname simpleicon@aralicon\endcsname {\simpleiconsmapone\symbol{231}}
+ \expandafter\def\csname simpleicon@arangodbicon\endcsname {\simpleiconsmapone\symbol{232}}
+ \expandafter\def\csname simpleicon@arcicon\endcsname {\simpleiconsmapone\symbol{233}}
+ \expandafter\def\csname simpleicon@arcgisicon\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@archlinuxicon\endcsname {\simpleiconsmapone\symbol{237}}
+ \expandafter\def\csname simpleicon@ardouricon\endcsname {\simpleiconsmapone\symbol{238}}
+ \expandafter\def\csname simpleicon@arduinoicon\endcsname {\simpleiconsmapone\symbol{239}}
+ \expandafter\def\csname simpleicon@argoicon\endcsname {\simpleiconsmapone\symbol{240}}
+ \expandafter\def\csname simpleicon@argosicon\endcsname {\simpleiconsmapone\symbol{241}}
+ \expandafter\def\csname simpleicon@ariakiticon\endcsname {\simpleiconsmapone\symbol{242}}
+ \expandafter\def\csname simpleicon@arkecosystemicon\endcsname {\simpleiconsmapone\symbol{243}}
+ \expandafter\def\csname simpleicon@arloicon\endcsname {\simpleiconsmapone\symbol{244}}
+ \expandafter\def\csname simpleicon@armicon\endcsname {\simpleiconsmapone\symbol{245}}
+ \expandafter\def\csname simpleicon@armkeilicon\endcsname {\simpleiconsmapone\symbol{246}}
+ \expandafter\def\csname simpleicon@arstechnicaicon\endcsname {\simpleiconsmapone\symbol{247}}
+ \expandafter\def\csname simpleicon@artifacthubicon\endcsname {\simpleiconsmapone\symbol{248}}
+ \expandafter\def\csname simpleicon@artixlinuxicon\endcsname {\simpleiconsmapone\symbol{249}}
+ \expandafter\def\csname simpleicon@artstationicon\endcsname {\simpleiconsmapone\symbol{250}}
+ \expandafter\def\csname simpleicon@arxivicon\endcsname {\simpleiconsmapone\symbol{251}}
+ \expandafter\def\csname simpleicon@asahilinuxicon\endcsname {\simpleiconsmapone\symbol{252}}
+ \expandafter\def\csname simpleicon@asanaicon\endcsname {\simpleiconsmapone\symbol{253}}
+ \expandafter\def\csname simpleicon@asciidoctoricon\endcsname {\simpleiconsmapone\symbol{254}}
+ \expandafter\def\csname simpleicon@asciinemaicon\endcsname {\simpleiconsmapone\symbol{255}}
+ \expandafter\def\csname simpleicon@asdaicon\endcsname {\simpleiconsmaptwo\symbol{0}}
+ \expandafter\def\csname simpleicon@asepriteicon\endcsname {\simpleiconsmaptwo\symbol{1}}
+ \expandafter\def\csname simpleicon@askfmicon\endcsname {\simpleiconsmaptwo\symbol{2}}
+ \expandafter\def\csname simpleicon@assemblyscripticon\endcsname {\simpleiconsmaptwo\symbol{3}}
+ \expandafter\def\csname simpleicon@asteriskicon\endcsname {\simpleiconsmaptwo\symbol{4}}
+ \expandafter\def\csname simpleicon@astonmartinicon\endcsname {\simpleiconsmaptwo\symbol{5}}
+ \expandafter\def\csname simpleicon@astraicon\endcsname {\simpleiconsmaptwo\symbol{6}}
+ \expandafter\def\csname simpleicon@astralicon\endcsname {\simpleiconsmaptwo\symbol{7}}
+ \expandafter\def\csname simpleicon@astroicon\endcsname {\simpleiconsmaptwo\symbol{8}}
+ \expandafter\def\csname simpleicon@asusicon\endcsname {\simpleiconsmaptwo\symbol{9}}
+ \expandafter\def\csname simpleicon@atandticon\endcsname {\simpleiconsmaptwo\symbol{10}}
+ \expandafter\def\csname simpleicon@atariicon\endcsname {\simpleiconsmaptwo\symbol{11}}
+ \expandafter\def\csname simpleicon@atlasosicon\endcsname {\simpleiconsmaptwo\symbol{12}}
+ \expandafter\def\csname simpleicon@atlassianicon\endcsname {\simpleiconsmaptwo\symbol{13}}
+ \expandafter\def\csname simpleicon@auchanicon\endcsname {\simpleiconsmaptwo\symbol{14}}
+ \expandafter\def\csname simpleicon@audacityicon\endcsname {\simpleiconsmaptwo\symbol{15}}
+ \expandafter\def\csname simpleicon@audiicon\endcsname {\simpleiconsmaptwo\symbol{16}}
+ \expandafter\def\csname simpleicon@audibleicon\endcsname {\simpleiconsmaptwo\symbol{17}}
+ \expandafter\def\csname simpleicon@audiobookshelficon\endcsname {\simpleiconsmaptwo\symbol{18}}
+ \expandafter\def\csname simpleicon@audioboomicon\endcsname {\simpleiconsmaptwo\symbol{19}}
+ \expandafter\def\csname simpleicon@audiomackicon\endcsname {\simpleiconsmaptwo\symbol{20}}
+ \expandafter\def\csname simpleicon@audiotechnicaicon\endcsname {\simpleiconsmaptwo\symbol{21}}
+ \expandafter\def\csname simpleicon@aureliaicon\endcsname {\simpleiconsmaptwo\symbol{22}}
+ \expandafter\def\csname simpleicon@auth0icon\endcsname {\simpleiconsmaptwo\symbol{23}}
+ \expandafter\def\csname simpleicon@autheliaicon\endcsname {\simpleiconsmaptwo\symbol{24}}
+ \expandafter\def\csname simpleicon@authentikicon\endcsname {\simpleiconsmaptwo\symbol{25}}
+ \expandafter\def\csname simpleicon@authyicon\endcsname {\simpleiconsmaptwo\symbol{26}}
+ \expandafter\def\csname simpleicon@autocadicon\endcsname {\simpleiconsmaptwo\symbol{27}}
+ \expandafter\def\csname simpleicon@autocannonicon\endcsname {\simpleiconsmaptwo\symbol{28}}
+ \expandafter\def\csname simpleicon@autodeskicon\endcsname {\simpleiconsmaptwo\symbol{29}}
+ \expandafter\def\csname simpleicon@autodeskmayaicon\endcsname {\simpleiconsmaptwo\symbol{30}}
+ \expandafter\def\csname simpleicon@autodeskreviticon\endcsname {\simpleiconsmaptwo\symbol{31}}
+ \expandafter\def\csname simpleicon@autohotkeyicon\endcsname {\simpleiconsmaptwo\symbol{32}}
+ \expandafter\def\csname simpleicon@autoiticon\endcsname {\simpleiconsmaptwo\symbol{33}}
+ \expandafter\def\csname simpleicon@automatticicon\endcsname {\simpleiconsmaptwo\symbol{34}}
+ \expandafter\def\csname simpleicon@autoprefixericon\endcsname {\simpleiconsmaptwo\symbol{35}}
+ \expandafter\def\csname simpleicon@autozoneicon\endcsname {\simpleiconsmaptwo\symbol{36}}
+ \expandafter\def\csname simpleicon@avajsicon\endcsname {\simpleiconsmaptwo\symbol{37}}
+ \expandafter\def\csname simpleicon@avasticon\endcsname {\simpleiconsmaptwo\symbol{38}}
+ \expandafter\def\csname simpleicon@aviancaicon\endcsname {\simpleiconsmaptwo\symbol{39}}
+ \expandafter\def\csname simpleicon@aviraicon\endcsname {\simpleiconsmaptwo\symbol{40}}
+ \expandafter\def\csname simpleicon@awesomelistsicon\endcsname {\simpleiconsmaptwo\symbol{41}}
+ \expandafter\def\csname simpleicon@awesomewmicon\endcsname {\simpleiconsmaptwo\symbol{42}}
+ \expandafter\def\csname simpleicon@awsamplifyicon\endcsname {\simpleiconsmaptwo\symbol{43}}
+ \expandafter\def\csname simpleicon@awselasticloadbalancingicon\endcsname {\simpleiconsmaptwo\symbol{44}}
+ \expandafter\def\csname simpleicon@awsfargateicon\endcsname {\simpleiconsmaptwo\symbol{45}}
+ \expandafter\def\csname simpleicon@awslambdaicon\endcsname {\simpleiconsmaptwo\symbol{46}}
+ \expandafter\def\csname simpleicon@awsorganizationsicon\endcsname {\simpleiconsmaptwo\symbol{47}}
+ \expandafter\def\csname simpleicon@awssecretsmanagericon\endcsname {\simpleiconsmaptwo\symbol{48}}
+ \expandafter\def\csname simpleicon@awwwardsicon\endcsname {\simpleiconsmaptwo\symbol{49}}
+ \expandafter\def\csname simpleicon@axiosicon\endcsname {\simpleiconsmaptwo\symbol{50}}
+ \expandafter\def\csname simpleicon@babelicon\endcsname {\simpleiconsmaptwo\symbol{51}}
+ \expandafter\def\csname simpleicon@babelioicon\endcsname {\simpleiconsmaptwo\symbol{52}}
+ \expandafter\def\csname simpleicon@babylondotjsicon\endcsname {\simpleiconsmaptwo\symbol{53}}
+ \expandafter\def\csname simpleicon@backblazeicon\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@bandrautomationicon\endcsname {\simpleiconsmaptwo\symbol{65}}
+ \expandafter\def\csname simpleicon@bandsintownicon\endcsname {\simpleiconsmaptwo\symbol{66}}
+ \expandafter\def\csname simpleicon@bankofamericaicon\endcsname {\simpleiconsmaptwo\symbol{67}}
+ \expandafter\def\csname simpleicon@barclaysicon\endcsname {\simpleiconsmaptwo\symbol{68}}
+ \expandafter\def\csname simpleicon@baremetricsicon\endcsname {\simpleiconsmaptwo\symbol{69}}
+ \expandafter\def\csname simpleicon@barmeniaicon\endcsname {\simpleiconsmaptwo\symbol{70}}
+ \expandafter\def\csname simpleicon@basecampicon\endcsname {\simpleiconsmaptwo\symbol{71}}
+ \expandafter\def\csname simpleicon@baserowicon\endcsname {\simpleiconsmaptwo\symbol{72}}
+ \expandafter\def\csname simpleicon@basicattentiontokenicon\endcsname {\simpleiconsmaptwo\symbol{73}}
+ \expandafter\def\csname simpleicon@bastyonicon\endcsname {\simpleiconsmaptwo\symbol{74}}
+ \expandafter\def\csname simpleicon@baticon\endcsname {\simpleiconsmaptwo\symbol{75}}
+ \expandafter\def\csname simpleicon@bataicon\endcsname {\simpleiconsmaptwo\symbol{76}}
+ \expandafter\def\csname simpleicon@battledotneticon\endcsname {\simpleiconsmaptwo\symbol{77}}
+ \expandafter\def\csname simpleicon@bazelicon\endcsname {\simpleiconsmaptwo\symbol{78}}
+ \expandafter\def\csname simpleicon@beatporticon\endcsname {\simpleiconsmaptwo\symbol{79}}
+ \expandafter\def\csname simpleicon@beatsicon\endcsname {\simpleiconsmaptwo\symbol{80}}
+ \expandafter\def\csname simpleicon@beatsbydreicon\endcsname {\simpleiconsmaptwo\symbol{81}}
+ \expandafter\def\csname simpleicon@beatstarsicon\endcsname {\simpleiconsmaptwo\symbol{82}}
+ \expandafter\def\csname simpleicon@beekeeperstudioicon\endcsname {\simpleiconsmaptwo\symbol{83}}
+ \expandafter\def\csname simpleicon@behanceicon\endcsname {\simpleiconsmaptwo\symbol{84}}
+ \expandafter\def\csname simpleicon@beijingsubwayicon\endcsname {\simpleiconsmaptwo\symbol{85}}
+ \expandafter\def\csname simpleicon@bemicon\endcsname {\simpleiconsmaptwo\symbol{86}}
+ \expandafter\def\csname simpleicon@bentleyicon\endcsname {\simpleiconsmaptwo\symbol{87}}
+ \expandafter\def\csname simpleicon@bentoicon\endcsname {\simpleiconsmaptwo\symbol{88}}
+ \expandafter\def\csname simpleicon@bentoboxicon\endcsname {\simpleiconsmaptwo\symbol{89}}
+ \expandafter\def\csname simpleicon@bentomlicon\endcsname {\simpleiconsmaptwo\symbol{90}}
+ \expandafter\def\csname simpleicon@berealicon\endcsname {\simpleiconsmaptwo\symbol{91}}
+ \expandafter\def\csname simpleicon@betfairicon\endcsname {\simpleiconsmaptwo\symbol{92}}
+ \expandafter\def\csname simpleicon@betterstackicon\endcsname {\simpleiconsmaptwo\symbol{93}}
+ \expandafter\def\csname simpleicon@bevyicon\endcsname {\simpleiconsmaptwo\symbol{94}}
+ \expandafter\def\csname simpleicon@bigbasketicon\endcsname {\simpleiconsmaptwo\symbol{95}}
+ \expandafter\def\csname simpleicon@bigbluebuttonicon\endcsname {\simpleiconsmaptwo\symbol{96}}
+ \expandafter\def\csname simpleicon@bigcartelicon\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@cacheticon\endcsname {\simpleiconsmaptwo\symbol{195}}
+ \expandafter\def\csname simpleicon@caddyicon\endcsname {\simpleiconsmaptwo\symbol{196}}
+ \expandafter\def\csname simpleicon@cadillacicon\endcsname {\simpleiconsmaptwo\symbol{197}}
+ \expandafter\def\csname simpleicon@cafepressicon\endcsname {\simpleiconsmaptwo\symbol{198}}
+ \expandafter\def\csname simpleicon@caffeineicon\endcsname {\simpleiconsmaptwo\symbol{199}}
+ \expandafter\def\csname simpleicon@cairographicsicon\endcsname {\simpleiconsmaptwo\symbol{200}}
+ \expandafter\def\csname simpleicon@cairometroicon\endcsname {\simpleiconsmaptwo\symbol{201}}
+ \expandafter\def\csname simpleicon@cakephpicon\endcsname {\simpleiconsmaptwo\symbol{202}}
+ \expandafter\def\csname simpleicon@caldotcomicon\endcsname {\simpleiconsmaptwo\symbol{203}}
+ \expandafter\def\csname simpleicon@calendlyicon\endcsname {\simpleiconsmaptwo\symbol{204}}
+ \expandafter\def\csname simpleicon@calibrewebicon\endcsname {\simpleiconsmaptwo\symbol{205}}
+ \expandafter\def\csname simpleicon@campaignmonitoricon\endcsname {\simpleiconsmaptwo\symbol{206}}
+ \expandafter\def\csname simpleicon@camundaicon\endcsname {\simpleiconsmaptwo\symbol{207}}
+ \expandafter\def\csname simpleicon@canonicalicon\endcsname {\simpleiconsmaptwo\symbol{208}}
+ \expandafter\def\csname simpleicon@canvaicon\endcsname {\simpleiconsmaptwo\symbol{209}}
+ \expandafter\def\csname simpleicon@canvasicon\endcsname {\simpleiconsmaptwo\symbol{210}}
+ \expandafter\def\csname simpleicon@capacitoricon\endcsname {\simpleiconsmaptwo\symbol{211}}
+ \expandafter\def\csname simpleicon@caprovericon\endcsname {\simpleiconsmaptwo\symbol{212}}
+ \expandafter\def\csname simpleicon@cardanoicon\endcsname {\simpleiconsmaptwo\symbol{213}}
+ \expandafter\def\csname simpleicon@carlsberggroupicon\endcsname {\simpleiconsmaptwo\symbol{214}}
+ \expandafter\def\csname simpleicon@carrdicon\endcsname {\simpleiconsmaptwo\symbol{215}}
+ \expandafter\def\csname simpleicon@carrefouricon\endcsname {\simpleiconsmaptwo\symbol{216}}
+ \expandafter\def\csname simpleicon@carthrottleicon\endcsname {\simpleiconsmaptwo\symbol{217}}
+ \expandafter\def\csname simpleicon@cartoicon\endcsname {\simpleiconsmaptwo\symbol{218}}
+ \expandafter\def\csname simpleicon@cashappicon\endcsname {\simpleiconsmaptwo\symbol{219}}
+ \expandafter\def\csname simpleicon@castboxicon\endcsname {\simpleiconsmaptwo\symbol{220}}
+ \expandafter\def\csname simpleicon@castoramaicon\endcsname {\simpleiconsmaptwo\symbol{221}}
+ \expandafter\def\csname simpleicon@castroicon\endcsname {\simpleiconsmaptwo\symbol{222}}
+ \expandafter\def\csname simpleicon@caterpillaricon\endcsname {\simpleiconsmaptwo\symbol{223}}
+ \expandafter\def\csname simpleicon@cbcicon\endcsname {\simpleiconsmaptwo\symbol{224}}
+ \expandafter\def\csname simpleicon@cbsicon\endcsname {\simpleiconsmaptwo\symbol{225}}
+ \expandafter\def\csname simpleicon@ccleanericon\endcsname {\simpleiconsmaptwo\symbol{226}}
+ \expandafter\def\csname simpleicon@cdprojekticon\endcsname {\simpleiconsmaptwo\symbol{227}}
+ \expandafter\def\csname simpleicon@celeryicon\endcsname {\simpleiconsmaptwo\symbol{228}}
+ \expandafter\def\csname simpleicon@celestronicon\endcsname {\simpleiconsmaptwo\symbol{229}}
+ \expandafter\def\csname simpleicon@centosicon\endcsname {\simpleiconsmaptwo\symbol{230}}
+ \expandafter\def\csname simpleicon@cephicon\endcsname {\simpleiconsmaptwo\symbol{231}}
+ \expandafter\def\csname simpleicon@cesiumicon\endcsname {\simpleiconsmaptwo\symbol{232}}
+ \expandafter\def\csname simpleicon@chaiicon\endcsname {\simpleiconsmaptwo\symbol{233}}
+ \expandafter\def\csname simpleicon@chainguardicon\endcsname {\simpleiconsmaptwo\symbol{234}}
+ \expandafter\def\csname simpleicon@chainlinkicon\endcsname {\simpleiconsmaptwo\symbol{235}}
+ \expandafter\def\csname simpleicon@chakrauiicon\endcsname {\simpleiconsmaptwo\symbol{236}}
+ \expandafter\def\csname simpleicon@channel4icon\endcsname {\simpleiconsmaptwo\symbol{237}}
+ \expandafter\def\csname simpleicon@charlesicon\endcsname {\simpleiconsmaptwo\symbol{238}}
+ \expandafter\def\csname simpleicon@chartdotjsicon\endcsname {\simpleiconsmaptwo\symbol{239}}
+ \expandafter\def\csname simpleicon@chartmogulicon\endcsname {\simpleiconsmaptwo\symbol{240}}
+ \expandafter\def\csname simpleicon@chaseicon\endcsname {\simpleiconsmaptwo\symbol{241}}
+ \expandafter\def\csname simpleicon@chatboticon\endcsname {\simpleiconsmaptwo\symbol{242}}
+ \expandafter\def\csname simpleicon@chatwooticon\endcsname {\simpleiconsmaptwo\symbol{243}}
+ \expandafter\def\csname simpleicon@checkioicon\endcsname {\simpleiconsmaptwo\symbol{244}}
+ \expandafter\def\csname simpleicon@checkmarxicon\endcsname {\simpleiconsmaptwo\symbol{245}}
+ \expandafter\def\csname simpleicon@checkmkicon\endcsname {\simpleiconsmaptwo\symbol{246}}
+ \expandafter\def\csname simpleicon@chedrauiicon\endcsname {\simpleiconsmaptwo\symbol{247}}
+ \expandafter\def\csname simpleicon@cheerioicon\endcsname {\simpleiconsmaptwo\symbol{248}}
+ \expandafter\def\csname simpleicon@cheficon\endcsname {\simpleiconsmaptwo\symbol{249}}
+ \expandafter\def\csname simpleicon@chemexicon\endcsname {\simpleiconsmaptwo\symbol{250}}
+ \expandafter\def\csname simpleicon@chessdotcomicon\endcsname {\simpleiconsmaptwo\symbol{251}}
+ \expandafter\def\csname simpleicon@chevroleticon\endcsname {\simpleiconsmaptwo\symbol{252}}
+ \expandafter\def\csname simpleicon@chianetworkicon\endcsname {\simpleiconsmaptwo\symbol{253}}
+ \expandafter\def\csname simpleicon@chinaeasternairlinesicon\endcsname {\simpleiconsmaptwo\symbol{254}}
+ \expandafter\def\csname simpleicon@chinasouthernairlinesicon\endcsname {\simpleiconsmaptwo\symbol{255}}
+ \expandafter\def\csname simpleicon@chocolateyicon\endcsname {\simpleiconsmapthree\symbol{0}}
+ \expandafter\def\csname simpleicon@chromaticicon\endcsname {\simpleiconsmapthree\symbol{1}}
+ \expandafter\def\csname simpleicon@chromecasticon\endcsname {\simpleiconsmapthree\symbol{2}}
+ \expandafter\def\csname simpleicon@chromewebstoreicon\endcsname {\simpleiconsmapthree\symbol{3}}
+ \expandafter\def\csname simpleicon@chryslericon\endcsname {\simpleiconsmapthree\symbol{4}}
+ \expandafter\def\csname simpleicon@chupachupsicon\endcsname {\simpleiconsmapthree\symbol{5}}
+ \expandafter\def\csname simpleicon@ciliumicon\endcsname {\simpleiconsmapthree\symbol{6}}
+ \expandafter\def\csname simpleicon@cinema4dicon\endcsname {\simpleiconsmapthree\symbol{7}}
+ \expandafter\def\csname simpleicon@cinnamonicon\endcsname {\simpleiconsmapthree\symbol{8}}
+ \expandafter\def\csname simpleicon@circleicon\endcsname {\simpleiconsmapthree\symbol{9}}
+ \expandafter\def\csname simpleicon@circleciicon\endcsname {\simpleiconsmapthree\symbol{10}}
+ \expandafter\def\csname simpleicon@circuitverseicon\endcsname {\simpleiconsmapthree\symbol{11}}
+ \expandafter\def\csname simpleicon@cirrusciicon\endcsname {\simpleiconsmapthree\symbol{12}}
+ \expandafter\def\csname simpleicon@ciscoicon\endcsname {\simpleiconsmapthree\symbol{13}}
+ \expandafter\def\csname simpleicon@citrixicon\endcsname {\simpleiconsmapthree\symbol{14}}
+ \expandafter\def\csname simpleicon@citroenicon\endcsname {\simpleiconsmapthree\symbol{15}}
+ \expandafter\def\csname simpleicon@civicrmicon\endcsname {\simpleiconsmapthree\symbol{16}}
+ \expandafter\def\csname simpleicon@civoicon\endcsname {\simpleiconsmapthree\symbol{17}}
+ \expandafter\def\csname simpleicon@ckeditor4icon\endcsname {\simpleiconsmapthree\symbol{18}}
+ \expandafter\def\csname simpleicon@clarifaiicon\endcsname {\simpleiconsmapthree\symbol{19}}
+ \expandafter\def\csname simpleicon@clarisicon\endcsname {\simpleiconsmapthree\symbol{20}}
+ \expandafter\def\csname simpleicon@clarivateicon\endcsname {\simpleiconsmapthree\symbol{21}}
+ \expandafter\def\csname simpleicon@clerkicon\endcsname {\simpleiconsmapthree\symbol{22}}
+ \expandafter\def\csname simpleicon@clevercloudicon\endcsname {\simpleiconsmapthree\symbol{23}}
+ \expandafter\def\csname simpleicon@clickhouseicon\endcsname {\simpleiconsmapthree\symbol{24}}
+ \expandafter\def\csname simpleicon@clickupicon\endcsname {\simpleiconsmapthree\symbol{25}}
+ \expandafter\def\csname simpleicon@clionicon\endcsname {\simpleiconsmapthree\symbol{26}}
+ \expandafter\def\csname simpleicon@cliqzicon\endcsname {\simpleiconsmapthree\symbol{27}}
+ \expandafter\def\csname simpleicon@clockifyicon\endcsname {\simpleiconsmapthree\symbol{28}}
+ \expandafter\def\csname simpleicon@clojureicon\endcsname {\simpleiconsmapthree\symbol{29}}
+ \expandafter\def\csname simpleicon@cloud66icon\endcsname {\simpleiconsmapthree\symbol{30}}
+ \expandafter\def\csname simpleicon@cloudbeesicon\endcsname {\simpleiconsmapthree\symbol{31}}
+ \expandafter\def\csname simpleicon@cloudcannonicon\endcsname {\simpleiconsmapthree\symbol{32}}
+ \expandafter\def\csname simpleicon@clouderaicon\endcsname {\simpleiconsmapthree\symbol{33}}
+ \expandafter\def\csname simpleicon@cloudflareicon\endcsname {\simpleiconsmapthree\symbol{34}}
+ \expandafter\def\csname simpleicon@cloudflarepagesicon\endcsname {\simpleiconsmapthree\symbol{35}}
+ \expandafter\def\csname simpleicon@cloudflareworkersicon\endcsname {\simpleiconsmapthree\symbol{36}}
+ \expandafter\def\csname simpleicon@cloudfoundryicon\endcsname {\simpleiconsmapthree\symbol{37}}
+ \expandafter\def\csname simpleicon@cloudinaryicon\endcsname {\simpleiconsmapthree\symbol{38}}
+ \expandafter\def\csname simpleicon@cloudronicon\endcsname {\simpleiconsmapthree\symbol{39}}
+ \expandafter\def\csname simpleicon@cloudsmithicon\endcsname {\simpleiconsmapthree\symbol{40}}
+ \expandafter\def\csname simpleicon@cloudwaysicon\endcsname {\simpleiconsmapthree\symbol{41}}
+ \expandafter\def\csname simpleicon@clubforceicon\endcsname {\simpleiconsmapthree\symbol{42}}
+ \expandafter\def\csname simpleicon@clubhouseicon\endcsname {\simpleiconsmapthree\symbol{43}}
+ \expandafter\def\csname simpleicon@clypicon\endcsname {\simpleiconsmapthree\symbol{44}}
+ \expandafter\def\csname simpleicon@cmakeicon\endcsname {\simpleiconsmapthree\symbol{45}}
+ \expandafter\def\csname simpleicon@cncficon\endcsname {\simpleiconsmapthree\symbol{46}}
+ \expandafter\def\csname simpleicon@cneticon\endcsname {\simpleiconsmapthree\symbol{47}}
+ \expandafter\def\csname simpleicon@cnnicon\endcsname {\simpleiconsmapthree\symbol{48}}
+ \expandafter\def\csname simpleicon@cocacolaicon\endcsname {\simpleiconsmapthree\symbol{49}}
+ \expandafter\def\csname simpleicon@cockpiticon\endcsname {\simpleiconsmapthree\symbol{50}}
+ \expandafter\def\csname simpleicon@cockroachlabsicon\endcsname {\simpleiconsmapthree\symbol{51}}
+ \expandafter\def\csname simpleicon@cocoapodsicon\endcsname {\simpleiconsmapthree\symbol{52}}
+ \expandafter\def\csname simpleicon@cocosicon\endcsname {\simpleiconsmapthree\symbol{53}}
+ \expandafter\def\csname simpleicon@codaicon\endcsname {\simpleiconsmapthree\symbol{54}}
+ \expandafter\def\csname simpleicon@codacyicon\endcsname {\simpleiconsmapthree\symbol{55}}
+ \expandafter\def\csname simpleicon@codebergicon\endcsname {\simpleiconsmapthree\symbol{56}}
+ \expandafter\def\csname simpleicon@codeblocksicon\endcsname {\simpleiconsmapthree\symbol{57}}
+ \expandafter\def\csname simpleicon@codecademyicon\endcsname {\simpleiconsmapthree\symbol{58}}
+ \expandafter\def\csname simpleicon@codeceptjsicon\endcsname {\simpleiconsmapthree\symbol{59}}
+ \expandafter\def\csname simpleicon@codecheficon\endcsname {\simpleiconsmapthree\symbol{60}}
+ \expandafter\def\csname simpleicon@codeclimateicon\endcsname {\simpleiconsmapthree\symbol{61}}
+ \expandafter\def\csname simpleicon@codecovicon\endcsname {\simpleiconsmapthree\symbol{62}}
+ \expandafter\def\csname simpleicon@codecraftersicon\endcsname {\simpleiconsmapthree\symbol{63}}
+ \expandafter\def\csname simpleicon@codefactoricon\endcsname {\simpleiconsmapthree\symbol{64}}
+ \expandafter\def\csname simpleicon@codeforcesicon\endcsname {\simpleiconsmapthree\symbol{65}}
+ \expandafter\def\csname simpleicon@codefreshicon\endcsname {\simpleiconsmapthree\symbol{66}}
+ \expandafter\def\csname simpleicon@codeignitericon\endcsname {\simpleiconsmapthree\symbol{67}}
+ \expandafter\def\csname simpleicon@codeiumicon\endcsname {\simpleiconsmapthree\symbol{68}}
+ \expandafter\def\csname simpleicon@codemagicicon\endcsname {\simpleiconsmapthree\symbol{69}}
+ \expandafter\def\csname simpleicon@codementoricon\endcsname {\simpleiconsmapthree\symbol{70}}
+ \expandafter\def\csname simpleicon@codemirroricon\endcsname {\simpleiconsmapthree\symbol{71}}
+ \expandafter\def\csname simpleicon@codenewbieicon\endcsname {\simpleiconsmapthree\symbol{72}}
+ \expandafter\def\csname simpleicon@codepenicon\endcsname {\simpleiconsmapthree\symbol{73}}
+ \expandafter\def\csname simpleicon@codeprojecticon\endcsname {\simpleiconsmapthree\symbol{74}}
+ \expandafter\def\csname simpleicon@codericon\endcsname {\simpleiconsmapthree\symbol{75}}
+ \expandafter\def\csname simpleicon@codersrankicon\endcsname {\simpleiconsmapthree\symbol{76}}
+ \expandafter\def\csname simpleicon@coderwallicon\endcsname {\simpleiconsmapthree\symbol{77}}
+ \expandafter\def\csname simpleicon@codesandboxicon\endcsname {\simpleiconsmapthree\symbol{78}}
+ \expandafter\def\csname simpleicon@codeshipicon\endcsname {\simpleiconsmapthree\symbol{79}}
+ \expandafter\def\csname simpleicon@codesignalicon\endcsname {\simpleiconsmapthree\symbol{80}}
+ \expandafter\def\csname simpleicon@codestreamicon\endcsname {\simpleiconsmapthree\symbol{81}}
+ \expandafter\def\csname simpleicon@codewarsicon\endcsname {\simpleiconsmapthree\symbol{82}}
+ \expandafter\def\csname simpleicon@codingameicon\endcsname {\simpleiconsmapthree\symbol{83}}
+ \expandafter\def\csname simpleicon@codingninjasicon\endcsname {\simpleiconsmapthree\symbol{84}}
+ \expandafter\def\csname simpleicon@codioicon\endcsname {\simpleiconsmapthree\symbol{85}}
+ \expandafter\def\csname simpleicon@coffeescripticon\endcsname {\simpleiconsmapthree\symbol{86}}
+ \expandafter\def\csname simpleicon@coggleicon\endcsname {\simpleiconsmapthree\symbol{87}}
+ \expandafter\def\csname simpleicon@cognizanticon\endcsname {\simpleiconsmapthree\symbol{88}}
+ \expandafter\def\csname simpleicon@coilicon\endcsname {\simpleiconsmapthree\symbol{89}}
+ \expandafter\def\csname simpleicon@coinbaseicon\endcsname {\simpleiconsmapthree\symbol{90}}
+ \expandafter\def\csname simpleicon@coinmarketcapicon\endcsname {\simpleiconsmapthree\symbol{91}}
+ \expandafter\def\csname simpleicon@comicfuryicon\endcsname {\simpleiconsmapthree\symbol{92}}
+ \expandafter\def\csname simpleicon@commaicon\endcsname {\simpleiconsmapthree\symbol{93}}
+ \expandafter\def\csname simpleicon@commerzbankicon\endcsname {\simpleiconsmapthree\symbol{94}}
+ \expandafter\def\csname simpleicon@commitlinticon\endcsname {\simpleiconsmapthree\symbol{95}}
+ \expandafter\def\csname simpleicon@commodoreicon\endcsname {\simpleiconsmapthree\symbol{96}}
+ \expandafter\def\csname simpleicon@commonworkflowlanguageicon\endcsname {\simpleiconsmapthree\symbol{97}}
+ \expandafter\def\csname simpleicon@compilerexplorericon\endcsname {\simpleiconsmapthree\symbol{98}}
+ \expandafter\def\csname simpleicon@composericon\endcsname {\simpleiconsmapthree\symbol{99}}
+ \expandafter\def\csname simpleicon@comptiaicon\endcsname {\simpleiconsmapthree\symbol{100}}
+ \expandafter\def\csname simpleicon@comsolicon\endcsname {\simpleiconsmapthree\symbol{101}}
+ \expandafter\def\csname simpleicon@conanicon\endcsname {\simpleiconsmapthree\symbol{102}}
+ \expandafter\def\csname simpleicon@concourseicon\endcsname {\simpleiconsmapthree\symbol{103}}
+ \expandafter\def\csname simpleicon@condaforgeicon\endcsname {\simpleiconsmapthree\symbol{104}}
+ \expandafter\def\csname simpleicon@conektaicon\endcsname {\simpleiconsmapthree\symbol{105}}
+ \expandafter\def\csname simpleicon@confluenceicon\endcsname {\simpleiconsmapthree\symbol{106}}
+ \expandafter\def\csname simpleicon@construct3icon\endcsname {\simpleiconsmapthree\symbol{107}}
+ \expandafter\def\csname simpleicon@consulicon\endcsname {\simpleiconsmapthree\symbol{108}}
+ \expandafter\def\csname simpleicon@contaboicon\endcsname {\simpleiconsmapthree\symbol{109}}
+ \expandafter\def\csname simpleicon@contactlesspaymenticon\endcsname {\simpleiconsmapthree\symbol{110}}
+ \expandafter\def\csname simpleicon@containerdicon\endcsname {\simpleiconsmapthree\symbol{111}}
+ \expandafter\def\csname simpleicon@contaoicon\endcsname {\simpleiconsmapthree\symbol{112}}
+ \expandafter\def\csname simpleicon@contentfulicon\endcsname {\simpleiconsmapthree\symbol{113}}
+ \expandafter\def\csname simpleicon@contentstackicon\endcsname {\simpleiconsmapthree\symbol{114}}
+ \expandafter\def\csname simpleicon@contributorcovenanticon\endcsname {\simpleiconsmapthree\symbol{115}}
+ \expandafter\def\csname simpleicon@conventionalcommitsicon\endcsname {\simpleiconsmapthree\symbol{116}}
+ \expandafter\def\csname simpleicon@convertioicon\endcsname {\simpleiconsmapthree\symbol{117}}
+ \expandafter\def\csname simpleicon@cookiecuttericon\endcsname {\simpleiconsmapthree\symbol{118}}
+ \expandafter\def\csname simpleicon@coolermastericon\endcsname {\simpleiconsmapthree\symbol{119}}
+ \expandafter\def\csname simpleicon@coopicon\endcsname {\simpleiconsmapthree\symbol{120}}
+ \expandafter\def\csname simpleicon@copaairlinesicon\endcsname {\simpleiconsmapthree\symbol{121}}
+ \expandafter\def\csname simpleicon@coppelicon\endcsname {\simpleiconsmapthree\symbol{122}}
+ \expandafter\def\csname simpleicon@coraicon\endcsname {\simpleiconsmapthree\symbol{123}}
+ \expandafter\def\csname simpleicon@coreldrawicon\endcsname {\simpleiconsmapthree\symbol{124}}
+ \expandafter\def\csname simpleicon@coronaengineicon\endcsname {\simpleiconsmapthree\symbol{125}}
+ \expandafter\def\csname simpleicon@coronarenderericon\endcsname {\simpleiconsmapthree\symbol{126}}
+ \expandafter\def\csname simpleicon@corsairicon\endcsname {\simpleiconsmapthree\symbol{127}}
+ \expandafter\def\csname simpleicon@couchbaseicon\endcsname {\simpleiconsmapthree\symbol{128}}
+ \expandafter\def\csname simpleicon@counterstrikeicon\endcsname {\simpleiconsmapthree\symbol{129}}
+ \expandafter\def\csname simpleicon@countingworksproicon\endcsname {\simpleiconsmapthree\symbol{130}}
+ \expandafter\def\csname simpleicon@courseraicon\endcsname {\simpleiconsmapthree\symbol{131}}
+ \expandafter\def\csname simpleicon@coverallsicon\endcsname {\simpleiconsmapthree\symbol{132}}
+ \expandafter\def\csname simpleicon@cozeicon\endcsname {\simpleiconsmapthree\symbol{133}}
+ \expandafter\def\csname simpleicon@cpanelicon\endcsname {\simpleiconsmapthree\symbol{134}}
+ \expandafter\def\csname simpleicon@cplusplusicon\endcsname {\simpleiconsmapthree\symbol{135}}
+ \expandafter\def\csname simpleicon@cplusplusbuildericon\endcsname {\simpleiconsmapthree\symbol{136}}
+ \expandafter\def\csname simpleicon@craftcmsicon\endcsname {\simpleiconsmapthree\symbol{137}}
+ \expandafter\def\csname simpleicon@craftsmanicon\endcsname {\simpleiconsmapthree\symbol{138}}
+ \expandafter\def\csname simpleicon@cratedbicon\endcsname {\simpleiconsmapthree\symbol{139}}
+ \expandafter\def\csname simpleicon@crayonicon\endcsname {\simpleiconsmapthree\symbol{140}}
+ \expandafter\def\csname simpleicon@crealityicon\endcsname {\simpleiconsmapthree\symbol{141}}
+ \expandafter\def\csname simpleicon@createreactappicon\endcsname {\simpleiconsmapthree\symbol{142}}
+ \expandafter\def\csname simpleicon@creativecommonsicon\endcsname {\simpleiconsmapthree\symbol{143}}
+ \expandafter\def\csname simpleicon@creativetechnologyicon\endcsname {\simpleiconsmapthree\symbol{144}}
+ \expandafter\def\csname simpleicon@credlyicon\endcsname {\simpleiconsmapthree\symbol{145}}
+ \expandafter\def\csname simpleicon@crehanaicon\endcsname {\simpleiconsmapthree\symbol{146}}
+ \expandafter\def\csname simpleicon@crewunitedicon\endcsname {\simpleiconsmapthree\symbol{147}}
+ \expandafter\def\csname simpleicon@criticalroleicon\endcsname {\simpleiconsmapthree\symbol{148}}
+ \expandafter\def\csname simpleicon@crowdinicon\endcsname {\simpleiconsmapthree\symbol{149}}
+ \expandafter\def\csname simpleicon@crowdsourceicon\endcsname {\simpleiconsmapthree\symbol{150}}
+ \expandafter\def\csname simpleicon@crunchbaseicon\endcsname {\simpleiconsmapthree\symbol{151}}
+ \expandafter\def\csname simpleicon@crunchyrollicon\endcsname {\simpleiconsmapthree\symbol{152}}
+ \expandafter\def\csname simpleicon@cryengineicon\endcsname {\simpleiconsmapthree\symbol{153}}
+ \expandafter\def\csname simpleicon@cryptpadicon\endcsname {\simpleiconsmapthree\symbol{154}}
+ \expandafter\def\csname simpleicon@crystalicon\endcsname {\simpleiconsmapthree\symbol{155}}
+ \expandafter\def\csname simpleicon@csdnicon\endcsname {\simpleiconsmapthree\symbol{156}}
+ \expandafter\def\csname simpleicon@css3icon\endcsname {\simpleiconsmapthree\symbol{157}}
+ \expandafter\def\csname simpleicon@cssdesignawardsicon\endcsname {\simpleiconsmapthree\symbol{158}}
+ \expandafter\def\csname simpleicon@cssmodulesicon\endcsname {\simpleiconsmapthree\symbol{159}}
+ \expandafter\def\csname simpleicon@csswizardryicon\endcsname {\simpleiconsmapthree\symbol{160}}
+ \expandafter\def\csname simpleicon@ctsicon\endcsname {\simpleiconsmapthree\symbol{161}}
+ \expandafter\def\csname simpleicon@cucumbericon\endcsname {\simpleiconsmapthree\symbol{162}}
+ \expandafter\def\csname simpleicon@culturaicon\endcsname {\simpleiconsmapthree\symbol{163}}
+ \expandafter\def\csname simpleicon@curlicon\endcsname {\simpleiconsmapthree\symbol{164}}
+ \expandafter\def\csname simpleicon@curseforgeicon\endcsname {\simpleiconsmapthree\symbol{165}}
+ \expandafter\def\csname simpleicon@custominkicon\endcsname {\simpleiconsmapthree\symbol{166}}
+ \expandafter\def\csname simpleicon@cyberdefendersicon\endcsname {\simpleiconsmapthree\symbol{167}}
+ \expandafter\def\csname simpleicon@cycling74icon\endcsname {\simpleiconsmapthree\symbol{168}}
+ \expandafter\def\csname simpleicon@cypressicon\endcsname {\simpleiconsmapthree\symbol{169}}
+ \expandafter\def\csname simpleicon@cytoscapedotjsicon\endcsname {\simpleiconsmapthree\symbol{170}}
+ \expandafter\def\csname simpleicon@dicon\endcsname {\simpleiconsmapthree\symbol{171}}
+ \expandafter\def\csname simpleicon@d3dotjsicon\endcsname {\simpleiconsmapthree\symbol{172}}
+ \expandafter\def\csname simpleicon@daciaicon\endcsname {\simpleiconsmapthree\symbol{173}}
+ \expandafter\def\csname simpleicon@daficon\endcsname {\simpleiconsmapthree\symbol{174}}
+ \expandafter\def\csname simpleicon@dailydotdevicon\endcsname {\simpleiconsmapthree\symbol{175}}
+ \expandafter\def\csname simpleicon@dailymotionicon\endcsname {\simpleiconsmapthree\symbol{176}}
+ \expandafter\def\csname simpleicon@daisyuiicon\endcsname {\simpleiconsmapthree\symbol{177}}
+ \expandafter\def\csname simpleicon@dapricon\endcsname {\simpleiconsmapthree\symbol{178}}
+ \expandafter\def\csname simpleicon@darkreadericon\endcsname {\simpleiconsmapthree\symbol{179}}
+ \expandafter\def\csname simpleicon@darticon\endcsname {\simpleiconsmapthree\symbol{180}}
+ \expandafter\def\csname simpleicon@dartyicon\endcsname {\simpleiconsmapthree\symbol{181}}
+ \expandafter\def\csname simpleicon@dasersteicon\endcsname {\simpleiconsmapthree\symbol{182}}
+ \expandafter\def\csname simpleicon@dashicon\endcsname {\simpleiconsmapthree\symbol{183}}
+ \expandafter\def\csname simpleicon@dashlaneicon\endcsname {\simpleiconsmapthree\symbol{184}}
+ \expandafter\def\csname simpleicon@daskicon\endcsname {\simpleiconsmapthree\symbol{185}}
+ \expandafter\def\csname simpleicon@dassaultsystemesicon\endcsname {\simpleiconsmapthree\symbol{186}}
+ \expandafter\def\csname simpleicon@databricksicon\endcsname {\simpleiconsmapthree\symbol{187}}
+ \expandafter\def\csname simpleicon@datacampicon\endcsname {\simpleiconsmapthree\symbol{188}}
+ \expandafter\def\csname simpleicon@datadogicon\endcsname {\simpleiconsmapthree\symbol{189}}
+ \expandafter\def\csname simpleicon@datadotaiicon\endcsname {\simpleiconsmapthree\symbol{190}}
+ \expandafter\def\csname simpleicon@datagripicon\endcsname {\simpleiconsmapthree\symbol{191}}
+ \expandafter\def\csname simpleicon@dataikuicon\endcsname {\simpleiconsmapthree\symbol{192}}
+ \expandafter\def\csname simpleicon@datastaxicon\endcsname {\simpleiconsmapthree\symbol{193}}
+ \expandafter\def\csname simpleicon@datefnsicon\endcsname {\simpleiconsmapthree\symbol{194}}
+ \expandafter\def\csname simpleicon@datevicon\endcsname {\simpleiconsmapthree\symbol{195}}
+ \expandafter\def\csname simpleicon@datocmsicon\endcsname {\simpleiconsmapthree\symbol{196}}
+ \expandafter\def\csname simpleicon@dattoicon\endcsname {\simpleiconsmapthree\symbol{197}}
+ \expandafter\def\csname simpleicon@davinciresolveicon\endcsname {\simpleiconsmapthree\symbol{198}}
+ \expandafter\def\csname simpleicon@dazhongdianpingicon\endcsname {\simpleiconsmapthree\symbol{199}}
+ \expandafter\def\csname simpleicon@daznicon\endcsname {\simpleiconsmapthree\symbol{200}}
+ \expandafter\def\csname simpleicon@dbeavericon\endcsname {\simpleiconsmapthree\symbol{201}}
+ \expandafter\def\csname simpleicon@dblpicon\endcsname {\simpleiconsmapthree\symbol{202}}
+ \expandafter\def\csname simpleicon@dbticon\endcsname {\simpleiconsmapthree\symbol{203}}
+ \expandafter\def\csname simpleicon@dcentertainmenticon\endcsname {\simpleiconsmapthree\symbol{204}}
+ \expandafter\def\csname simpleicon@debianicon\endcsname {\simpleiconsmapthree\symbol{205}}
+ \expandafter\def\csname simpleicon@debridlinkicon\endcsname {\simpleiconsmapthree\symbol{206}}
+ \expandafter\def\csname simpleicon@decapcmsicon\endcsname {\simpleiconsmapthree\symbol{207}}
+ \expandafter\def\csname simpleicon@decentralandicon\endcsname {\simpleiconsmapthree\symbol{208}}
+ \expandafter\def\csname simpleicon@dedgeicon\endcsname {\simpleiconsmapthree\symbol{209}}
+ \expandafter\def\csname simpleicon@deepcoolicon\endcsname {\simpleiconsmapthree\symbol{210}}
+ \expandafter\def\csname simpleicon@deepgramicon\endcsname {\simpleiconsmapthree\symbol{211}}
+ \expandafter\def\csname simpleicon@deepinicon\endcsname {\simpleiconsmapthree\symbol{212}}
+ \expandafter\def\csname simpleicon@deeplicon\endcsname {\simpleiconsmapthree\symbol{213}}
+ \expandafter\def\csname simpleicon@deepnoteicon\endcsname {\simpleiconsmapthree\symbol{214}}
+ \expandafter\def\csname simpleicon@deliciousicon\endcsname {\simpleiconsmapthree\symbol{215}}
+ \expandafter\def\csname simpleicon@deliverooicon\endcsname {\simpleiconsmapthree\symbol{216}}
+ \expandafter\def\csname simpleicon@dellicon\endcsname {\simpleiconsmapthree\symbol{217}}
+ \expandafter\def\csname simpleicon@delonghiicon\endcsname {\simpleiconsmapthree\symbol{218}}
+ \expandafter\def\csname simpleicon@delphiicon\endcsname {\simpleiconsmapthree\symbol{219}}
+ \expandafter\def\csname simpleicon@deltaicon\endcsname {\simpleiconsmapthree\symbol{220}}
+ \expandafter\def\csname simpleicon@delugeicon\endcsname {\simpleiconsmapthree\symbol{221}}
+ \expandafter\def\csname simpleicon@denoicon\endcsname {\simpleiconsmapthree\symbol{222}}
+ \expandafter\def\csname simpleicon@denonicon\endcsname {\simpleiconsmapthree\symbol{223}}
+ \expandafter\def\csname simpleicon@dependaboticon\endcsname {\simpleiconsmapthree\symbol{224}}
+ \expandafter\def\csname simpleicon@dependencycheckicon\endcsname {\simpleiconsmapthree\symbol{225}}
+ \expandafter\def\csname simpleicon@depositphotosicon\endcsname {\simpleiconsmapthree\symbol{226}}
+ \expandafter\def\csname simpleicon@derspiegelicon\endcsname {\simpleiconsmapthree\symbol{227}}
+ \expandafter\def\csname simpleicon@deutschebahnicon\endcsname {\simpleiconsmapthree\symbol{228}}
+ \expandafter\def\csname simpleicon@deutschebankicon\endcsname {\simpleiconsmapthree\symbol{229}}
+ \expandafter\def\csname simpleicon@deutscheposticon\endcsname {\simpleiconsmapthree\symbol{230}}
+ \expandafter\def\csname simpleicon@deutschewelleicon\endcsname {\simpleiconsmapthree\symbol{231}}
+ \expandafter\def\csname simpleicon@devdottoicon\endcsname {\simpleiconsmapthree\symbol{232}}
+ \expandafter\def\csname simpleicon@devexpressicon\endcsname {\simpleiconsmapthree\symbol{233}}
+ \expandafter\def\csname simpleicon@deviantarticon\endcsname {\simpleiconsmapthree\symbol{234}}
+ \expandafter\def\csname simpleicon@devposticon\endcsname {\simpleiconsmapthree\symbol{235}}
+ \expandafter\def\csname simpleicon@devranticon\endcsname {\simpleiconsmapthree\symbol{236}}
+ \expandafter\def\csname simpleicon@dgraphicon\endcsname {\simpleiconsmapthree\symbol{237}}
+ \expandafter\def\csname simpleicon@dhlicon\endcsname {\simpleiconsmapthree\symbol{238}}
+ \expandafter\def\csname simpleicon@diagramsdotneticon\endcsname {\simpleiconsmapthree\symbol{239}}
+ \expandafter\def\csname simpleicon@dialogflowicon\endcsname {\simpleiconsmapthree\symbol{240}}
+ \expandafter\def\csname simpleicon@diasporaicon\endcsname {\simpleiconsmapthree\symbol{241}}
+ \expandafter\def\csname simpleicon@dictionarydotcomicon\endcsname {\simpleiconsmapthree\symbol{242}}
+ \expandafter\def\csname simpleicon@diggicon\endcsname {\simpleiconsmapthree\symbol{243}}
+ \expandafter\def\csname simpleicon@digikeyelectronicsicon\endcsname {\simpleiconsmapthree\symbol{244}}
+ \expandafter\def\csname simpleicon@digitaloceanicon\endcsname {\simpleiconsmapthree\symbol{245}}
+ \expandafter\def\csname simpleicon@dinersclubicon\endcsname {\simpleiconsmapthree\symbol{246}}
+ \expandafter\def\csname simpleicon@dioricon\endcsname {\simpleiconsmapthree\symbol{247}}
+ \expandafter\def\csname simpleicon@directusicon\endcsname {\simpleiconsmapthree\symbol{248}}
+ \expandafter\def\csname simpleicon@discogsicon\endcsname {\simpleiconsmapthree\symbol{249}}
+ \expandafter\def\csname simpleicon@discordicon\endcsname {\simpleiconsmapthree\symbol{250}}
+ \expandafter\def\csname simpleicon@discourseicon\endcsname {\simpleiconsmapthree\symbol{251}}
+ \expandafter\def\csname simpleicon@discovericon\endcsname {\simpleiconsmapthree\symbol{252}}
+ \expandafter\def\csname simpleicon@disqusicon\endcsname {\simpleiconsmapthree\symbol{253}}
+ \expandafter\def\csname simpleicon@disrooticon\endcsname {\simpleiconsmapthree\symbol{254}}
+ \expandafter\def\csname simpleicon@distrokidicon\endcsname {\simpleiconsmapthree\symbol{255}}
+ \expandafter\def\csname simpleicon@djangoicon\endcsname {\simpleiconsmapfour\symbol{0}}
+ \expandafter\def\csname simpleicon@djiicon\endcsname {\simpleiconsmapfour\symbol{1}}
+ \expandafter\def\csname simpleicon@dlibicon\endcsname {\simpleiconsmapfour\symbol{2}}
+ \expandafter\def\csname simpleicon@dlnaicon\endcsname {\simpleiconsmapfour\symbol{3}}
+ \expandafter\def\csname simpleicon@dmicon\endcsname {\simpleiconsmapfour\symbol{4}}
+ \expandafter\def\csname simpleicon@dockericon\endcsname {\simpleiconsmapfour\symbol{5}}
+ \expandafter\def\csname simpleicon@docsdotrsicon\endcsname {\simpleiconsmapfour\symbol{6}}
+ \expandafter\def\csname simpleicon@docsifyicon\endcsname {\simpleiconsmapfour\symbol{7}}
+ \expandafter\def\csname simpleicon@doctrineicon\endcsname {\simpleiconsmapfour\symbol{8}}
+ \expandafter\def\csname simpleicon@docusaurusicon\endcsname {\simpleiconsmapfour\symbol{9}}
+ \expandafter\def\csname simpleicon@dogecoinicon\endcsname {\simpleiconsmapfour\symbol{10}}
+ \expandafter\def\csname simpleicon@doiicon\endcsname {\simpleiconsmapfour\symbol{11}}
+ \expandafter\def\csname simpleicon@dolbyicon\endcsname {\simpleiconsmapfour\symbol{12}}
+ \expandafter\def\csname simpleicon@doordashicon\endcsname {\simpleiconsmapfour\symbol{13}}
+ \expandafter\def\csname simpleicon@dota2icon\endcsname {\simpleiconsmapfour\symbol{14}}
+ \expandafter\def\csname simpleicon@dotenvicon\endcsname {\simpleiconsmapfour\symbol{15}}
+ \expandafter\def\csname simpleicon@dotneticon\endcsname {\simpleiconsmapfour\symbol{16}}
+ \expandafter\def\csname simpleicon@doubanicon\endcsname {\simpleiconsmapfour\symbol{17}}
+ \expandafter\def\csname simpleicon@doubanreadicon\endcsname {\simpleiconsmapfour\symbol{18}}
+ \expandafter\def\csname simpleicon@dovecoticon\endcsname {\simpleiconsmapfour\symbol{19}}
+ \expandafter\def\csname simpleicon@dovetailicon\endcsname {\simpleiconsmapfour\symbol{20}}
+ \expandafter\def\csname simpleicon@downdetectoricon\endcsname {\simpleiconsmapfour\symbol{21}}
+ \expandafter\def\csname simpleicon@doxygenicon\endcsname {\simpleiconsmapfour\symbol{22}}
+ \expandafter\def\csname simpleicon@dpdicon\endcsname {\simpleiconsmapfour\symbol{23}}
+ \expandafter\def\csname simpleicon@dragonframeicon\endcsname {\simpleiconsmapfour\symbol{24}}
+ \expandafter\def\csname simpleicon@draugiemdotlvicon\endcsname {\simpleiconsmapfour\symbol{25}}
+ \expandafter\def\csname simpleicon@dreamstimeicon\endcsname {\simpleiconsmapfour\symbol{26}}
+ \expandafter\def\csname simpleicon@dribbbleicon\endcsname {\simpleiconsmapfour\symbol{27}}
+ \expandafter\def\csname simpleicon@drizzleicon\endcsname {\simpleiconsmapfour\symbol{28}}
+ \expandafter\def\csname simpleicon@droneicon\endcsname {\simpleiconsmapfour\symbol{29}}
+ \expandafter\def\csname simpleicon@droobleicon\endcsname {\simpleiconsmapfour\symbol{30}}
+ \expandafter\def\csname simpleicon@dropboxicon\endcsname {\simpleiconsmapfour\symbol{31}}
+ \expandafter\def\csname simpleicon@drupalicon\endcsname {\simpleiconsmapfour\symbol{32}}
+ \expandafter\def\csname simpleicon@dsautomobilesicon\endcsname {\simpleiconsmapfour\symbol{33}}
+ \expandafter\def\csname simpleicon@dtsicon\endcsname {\simpleiconsmapfour\symbol{34}}
+ \expandafter\def\csname simpleicon@dtubeicon\endcsname {\simpleiconsmapfour\symbol{35}}
+ \expandafter\def\csname simpleicon@ducatiicon\endcsname {\simpleiconsmapfour\symbol{36}}
+ \expandafter\def\csname simpleicon@duckdbicon\endcsname {\simpleiconsmapfour\symbol{37}}
+ \expandafter\def\csname simpleicon@duckduckgoicon\endcsname {\simpleiconsmapfour\symbol{38}}
+ \expandafter\def\csname simpleicon@dungeonsanddragonsicon\endcsname {\simpleiconsmapfour\symbol{39}}
+ \expandafter\def\csname simpleicon@dunkedicon\endcsname {\simpleiconsmapfour\symbol{40}}
+ \expandafter\def\csname simpleicon@dunzoicon\endcsname {\simpleiconsmapfour\symbol{41}}
+ \expandafter\def\csname simpleicon@duolingoicon\endcsname {\simpleiconsmapfour\symbol{42}}
+ \expandafter\def\csname simpleicon@duplicatiicon\endcsname {\simpleiconsmapfour\symbol{43}}
+ \expandafter\def\csname simpleicon@dvcicon\endcsname {\simpleiconsmapfour\symbol{44}}
+ \expandafter\def\csname simpleicon@dwavesystemsicon\endcsname {\simpleiconsmapfour\symbol{45}}
+ \expandafter\def\csname simpleicon@dwmicon\endcsname {\simpleiconsmapfour\symbol{46}}
+ \expandafter\def\csname simpleicon@dynatraceicon\endcsname {\simpleiconsmapfour\symbol{47}}
+ \expandafter\def\csname simpleicon@eicon\endcsname {\simpleiconsmapfour\symbol{48}}
+ \expandafter\def\csname simpleicon@e3icon\endcsname {\simpleiconsmapfour\symbol{49}}
+ \expandafter\def\csname simpleicon@eaicon\endcsname {\simpleiconsmapfour\symbol{50}}
+ \expandafter\def\csname simpleicon@eagleicon\endcsname {\simpleiconsmapfour\symbol{51}}
+ \expandafter\def\csname simpleicon@easyedaicon\endcsname {\simpleiconsmapfour\symbol{52}}
+ \expandafter\def\csname simpleicon@easyjeticon\endcsname {\simpleiconsmapfour\symbol{53}}
+ \expandafter\def\csname simpleicon@ebayicon\endcsname {\simpleiconsmapfour\symbol{54}}
+ \expandafter\def\csname simpleicon@eboxicon\endcsname {\simpleiconsmapfour\symbol{55}}
+ \expandafter\def\csname simpleicon@eclipseadoptiumicon\endcsname {\simpleiconsmapfour\symbol{56}}
+ \expandafter\def\csname simpleicon@eclipsecheicon\endcsname {\simpleiconsmapfour\symbol{57}}
+ \expandafter\def\csname simpleicon@eclipseideicon\endcsname {\simpleiconsmapfour\symbol{58}}
+ \expandafter\def\csname simpleicon@eclipsejettyicon\endcsname {\simpleiconsmapfour\symbol{59}}
+ \expandafter\def\csname simpleicon@eclipsemosquittoicon\endcsname {\simpleiconsmapfour\symbol{60}}
+ \expandafter\def\csname simpleicon@eclipsevertdotxicon\endcsname {\simpleiconsmapfour\symbol{61}}
+ \expandafter\def\csname simpleicon@ecosiaicon\endcsname {\simpleiconsmapfour\symbol{62}}
+ \expandafter\def\csname simpleicon@ecovacsicon\endcsname {\simpleiconsmapfour\symbol{63}}
+ \expandafter\def\csname simpleicon@edekaicon\endcsname {\simpleiconsmapfour\symbol{64}}
+ \expandafter\def\csname simpleicon@edgeimpulseicon\endcsname {\simpleiconsmapfour\symbol{65}}
+ \expandafter\def\csname simpleicon@editorconfigicon\endcsname {\simpleiconsmapfour\symbol{66}}
+ \expandafter\def\csname simpleicon@edotleclercicon\endcsname {\simpleiconsmapfour\symbol{67}}
+ \expandafter\def\csname simpleicon@educativeicon\endcsname {\simpleiconsmapfour\symbol{68}}
+ \expandafter\def\csname simpleicon@edxicon\endcsname {\simpleiconsmapfour\symbol{69}}
+ \expandafter\def\csname simpleicon@eggheadicon\endcsname {\simpleiconsmapfour\symbol{70}}
+ \expandafter\def\csname simpleicon@egnyteicon\endcsname {\simpleiconsmapfour\symbol{71}}
+ \expandafter\def\csname simpleicon@eighticon\endcsname {\simpleiconsmapfour\symbol{72}}
+ \expandafter\def\csname simpleicon@eightsleepicon\endcsname {\simpleiconsmapfour\symbol{73}}
+ \expandafter\def\csname simpleicon@ejsicon\endcsname {\simpleiconsmapfour\symbol{74}}
+ \expandafter\def\csname simpleicon@elasticicon\endcsname {\simpleiconsmapfour\symbol{75}}
+ \expandafter\def\csname simpleicon@elasticcloudicon\endcsname {\simpleiconsmapfour\symbol{76}}
+ \expandafter\def\csname simpleicon@elasticsearchicon\endcsname {\simpleiconsmapfour\symbol{77}}
+ \expandafter\def\csname simpleicon@elasticstackicon\endcsname {\simpleiconsmapfour\symbol{78}}
+ \expandafter\def\csname simpleicon@elavonicon\endcsname {\simpleiconsmapfour\symbol{79}}
+ \expandafter\def\csname simpleicon@electronicon\endcsname {\simpleiconsmapfour\symbol{80}}
+ \expandafter\def\csname simpleicon@electronbuildericon\endcsname {\simpleiconsmapfour\symbol{81}}
+ \expandafter\def\csname simpleicon@electronfiddleicon\endcsname {\simpleiconsmapfour\symbol{82}}
+ \expandafter\def\csname simpleicon@elegooicon\endcsname {\simpleiconsmapfour\symbol{83}}
+ \expandafter\def\csname simpleicon@elementicon\endcsname {\simpleiconsmapfour\symbol{84}}
+ \expandafter\def\csname simpleicon@elementaryicon\endcsname {\simpleiconsmapfour\symbol{85}}
+ \expandafter\def\csname simpleicon@elementoricon\endcsname {\simpleiconsmapfour\symbol{86}}
+ \expandafter\def\csname simpleicon@eleventyicon\endcsname {\simpleiconsmapfour\symbol{87}}
+ \expandafter\def\csname simpleicon@elgatoicon\endcsname {\simpleiconsmapfour\symbol{88}}
+ \expandafter\def\csname simpleicon@elixiricon\endcsname {\simpleiconsmapfour\symbol{89}}
+ \expandafter\def\csname simpleicon@eljuevesicon\endcsname {\simpleiconsmapfour\symbol{90}}
+ \expandafter\def\csname simpleicon@elloicon\endcsname {\simpleiconsmapfour\symbol{91}}
+ \expandafter\def\csname simpleicon@elmicon\endcsname {\simpleiconsmapfour\symbol{92}}
+ \expandafter\def\csname simpleicon@elseviericon\endcsname {\simpleiconsmapfour\symbol{93}}
+ \expandafter\def\csname simpleicon@embarcaderoicon\endcsname {\simpleiconsmapfour\symbol{94}}
+ \expandafter\def\csname simpleicon@embarkicon\endcsname {\simpleiconsmapfour\symbol{95}}
+ \expandafter\def\csname simpleicon@emberdotjsicon\endcsname {\simpleiconsmapfour\symbol{96}}
+ \expandafter\def\csname simpleicon@embyicon\endcsname {\simpleiconsmapfour\symbol{97}}
+ \expandafter\def\csname simpleicon@emiratesicon\endcsname {\simpleiconsmapfour\symbol{98}}
+ \expandafter\def\csname simpleicon@emlakjeticon\endcsname {\simpleiconsmapfour\symbol{99}}
+ \expandafter\def\csname simpleicon@empirekredicon\endcsname {\simpleiconsmapfour\symbol{100}}
+ \expandafter\def\csname simpleicon@endeavourosicon\endcsname {\simpleiconsmapfour\symbol{101}}
+ \expandafter\def\csname simpleicon@engadgeticon\endcsname {\simpleiconsmapfour\symbol{102}}
+ \expandafter\def\csname simpleicon@enpassicon\endcsname {\simpleiconsmapfour\symbol{103}}
+ \expandafter\def\csname simpleicon@enterprisedbicon\endcsname {\simpleiconsmapfour\symbol{104}}
+ \expandafter\def\csname simpleicon@envatoicon\endcsname {\simpleiconsmapfour\symbol{105}}
+ \expandafter\def\csname simpleicon@envoyproxyicon\endcsname {\simpleiconsmapfour\symbol{106}}
+ \expandafter\def\csname simpleicon@epelicon\endcsname {\simpleiconsmapfour\symbol{107}}
+ \expandafter\def\csname simpleicon@epicgamesicon\endcsname {\simpleiconsmapfour\symbol{108}}
+ \expandafter\def\csname simpleicon@epsonicon\endcsname {\simpleiconsmapfour\symbol{109}}
+ \expandafter\def\csname simpleicon@equinixmetalicon\endcsname {\simpleiconsmapfour\symbol{110}}
+ \expandafter\def\csname simpleicon@erasericon\endcsname {\simpleiconsmapfour\symbol{111}}
+ \expandafter\def\csname simpleicon@ericssonicon\endcsname {\simpleiconsmapfour\symbol{112}}
+ \expandafter\def\csname simpleicon@erlangicon\endcsname {\simpleiconsmapfour\symbol{113}}
+ \expandafter\def\csname simpleicon@erpnexticon\endcsname {\simpleiconsmapfour\symbol{114}}
+ \expandafter\def\csname simpleicon@esbuildicon\endcsname {\simpleiconsmapfour\symbol{115}}
+ \expandafter\def\csname simpleicon@eseaicon\endcsname {\simpleiconsmapfour\symbol{116}}
+ \expandafter\def\csname simpleicon@eslgamingicon\endcsname {\simpleiconsmapfour\symbol{117}}
+ \expandafter\def\csname simpleicon@eslinticon\endcsname {\simpleiconsmapfour\symbol{118}}
+ \expandafter\def\csname simpleicon@esotericsoftwareicon\endcsname {\simpleiconsmapfour\symbol{119}}
+ \expandafter\def\csname simpleicon@esphomeicon\endcsname {\simpleiconsmapfour\symbol{120}}
+ \expandafter\def\csname simpleicon@espressificon\endcsname {\simpleiconsmapfour\symbol{121}}
+ \expandafter\def\csname simpleicon@esriicon\endcsname {\simpleiconsmapfour\symbol{122}}
+ \expandafter\def\csname simpleicon@etcdicon\endcsname {\simpleiconsmapfour\symbol{123}}
+ \expandafter\def\csname simpleicon@ethereumicon\endcsname {\simpleiconsmapfour\symbol{124}}
+ \expandafter\def\csname simpleicon@ethersicon\endcsname {\simpleiconsmapfour\symbol{125}}
+ \expandafter\def\csname simpleicon@ethiopianairlinesicon\endcsname {\simpleiconsmapfour\symbol{126}}
+ \expandafter\def\csname simpleicon@etihadairwaysicon\endcsname {\simpleiconsmapfour\symbol{127}}
+ \expandafter\def\csname simpleicon@etsyicon\endcsname {\simpleiconsmapfour\symbol{128}}
+ \expandafter\def\csname simpleicon@eventbriteicon\endcsname {\simpleiconsmapfour\symbol{129}}
+ \expandafter\def\csname simpleicon@eventstoreicon\endcsname {\simpleiconsmapfour\symbol{130}}
+ \expandafter\def\csname simpleicon@evernoteicon\endcsname {\simpleiconsmapfour\symbol{131}}
+ \expandafter\def\csname simpleicon@excalidrawicon\endcsname {\simpleiconsmapfour\symbol{132}}
+ \expandafter\def\csname simpleicon@exercismicon\endcsname {\simpleiconsmapfour\symbol{133}}
+ \expandafter\def\csname simpleicon@exordoicon\endcsname {\simpleiconsmapfour\symbol{134}}
+ \expandafter\def\csname simpleicon@exoscaleicon\endcsname {\simpleiconsmapfour\symbol{135}}
+ \expandafter\def\csname simpleicon@expediaicon\endcsname {\simpleiconsmapfour\symbol{136}}
+ \expandafter\def\csname simpleicon@expensifyicon\endcsname {\simpleiconsmapfour\symbol{137}}
+ \expandafter\def\csname simpleicon@expertsexchangeicon\endcsname {\simpleiconsmapfour\symbol{138}}
+ \expandafter\def\csname simpleicon@expoicon\endcsname {\simpleiconsmapfour\symbol{139}}
+ \expandafter\def\csname simpleicon@expressicon\endcsname {\simpleiconsmapfour\symbol{140}}
+ \expandafter\def\csname simpleicon@expressvpnicon\endcsname {\simpleiconsmapfour\symbol{141}}
+ \expandafter\def\csname simpleicon@eyeemicon\endcsname {\simpleiconsmapfour\symbol{142}}
+ \expandafter\def\csname simpleicon@f1icon\endcsname {\simpleiconsmapfour\symbol{143}}
+ \expandafter\def\csname simpleicon@f5icon\endcsname {\simpleiconsmapfour\symbol{144}}
+ \expandafter\def\csname simpleicon@facebookicon\endcsname {\simpleiconsmapfour\symbol{145}}
+ \expandafter\def\csname simpleicon@facebookgamingicon\endcsname {\simpleiconsmapfour\symbol{146}}
+ \expandafter\def\csname simpleicon@facebookliveicon\endcsname {\simpleiconsmapfour\symbol{147}}
+ \expandafter\def\csname simpleicon@faceiticon\endcsname {\simpleiconsmapfour\symbol{148}}
+ \expandafter\def\csname simpleicon@facepunchicon\endcsname {\simpleiconsmapfour\symbol{149}}
+ \expandafter\def\csname simpleicon@fairphoneicon\endcsname {\simpleiconsmapfour\symbol{150}}
+ \expandafter\def\csname simpleicon@falcoicon\endcsname {\simpleiconsmapfour\symbol{151}}
+ \expandafter\def\csname simpleicon@falconicon\endcsname {\simpleiconsmapfour\symbol{152}}
+ \expandafter\def\csname simpleicon@fampayicon\endcsname {\simpleiconsmapfour\symbol{153}}
+ \expandafter\def\csname simpleicon@fandangoicon\endcsname {\simpleiconsmapfour\symbol{154}}
+ \expandafter\def\csname simpleicon@fandomicon\endcsname {\simpleiconsmapfour\symbol{155}}
+ \expandafter\def\csname simpleicon@fanfouicon\endcsname {\simpleiconsmapfour\symbol{156}}
+ \expandafter\def\csname simpleicon@fantomicon\endcsname {\simpleiconsmapfour\symbol{157}}
+ \expandafter\def\csname simpleicon@farcastericon\endcsname {\simpleiconsmapfour\symbol{158}}
+ \expandafter\def\csname simpleicon@fareharboricon\endcsname {\simpleiconsmapfour\symbol{159}}
+ \expandafter\def\csname simpleicon@farfetchicon\endcsname {\simpleiconsmapfour\symbol{160}}
+ \expandafter\def\csname simpleicon@fastapiicon\endcsname {\simpleiconsmapfour\symbol{161}}
+ \expandafter\def\csname simpleicon@fastifyicon\endcsname {\simpleiconsmapfour\symbol{162}}
+ \expandafter\def\csname simpleicon@fastlaneicon\endcsname {\simpleiconsmapfour\symbol{163}}
+ \expandafter\def\csname simpleicon@fastlyicon\endcsname {\simpleiconsmapfour\symbol{164}}
+ \expandafter\def\csname simpleicon@fathomicon\endcsname {\simpleiconsmapfour\symbol{165}}
+ \expandafter\def\csname simpleicon@faunaicon\endcsname {\simpleiconsmapfour\symbol{166}}
+ \expandafter\def\csname simpleicon@favroicon\endcsname {\simpleiconsmapfour\symbol{167}}
+ \expandafter\def\csname simpleicon@fdroidicon\endcsname {\simpleiconsmapfour\symbol{168}}
+ \expandafter\def\csname simpleicon@feathubicon\endcsname {\simpleiconsmapfour\symbol{169}}
+ \expandafter\def\csname simpleicon@fedexicon\endcsname {\simpleiconsmapfour\symbol{170}}
+ \expandafter\def\csname simpleicon@fedoraicon\endcsname {\simpleiconsmapfour\symbol{171}}
+ \expandafter\def\csname simpleicon@feedlyicon\endcsname {\simpleiconsmapfour\symbol{172}}
+ \expandafter\def\csname simpleicon@ferrariicon\endcsname {\simpleiconsmapfour\symbol{173}}
+ \expandafter\def\csname simpleicon@ferrarinvicon\endcsname {\simpleiconsmapfour\symbol{174}}
+ \expandafter\def\csname simpleicon@ferretdbicon\endcsname {\simpleiconsmapfour\symbol{175}}
+ \expandafter\def\csname simpleicon@ffmpegicon\endcsname {\simpleiconsmapfour\symbol{176}}
+ \expandafter\def\csname simpleicon@fiicon\endcsname {\simpleiconsmapfour\symbol{177}}
+ \expandafter\def\csname simpleicon@fiaticon\endcsname {\simpleiconsmapfour\symbol{178}}
+ \expandafter\def\csname simpleicon@fidoallianceicon\endcsname {\simpleiconsmapfour\symbol{179}}
+ \expandafter\def\csname simpleicon@fifaicon\endcsname {\simpleiconsmapfour\symbol{180}}
+ \expandafter\def\csname simpleicon@figicon\endcsname {\simpleiconsmapfour\symbol{181}}
+ \expandafter\def\csname simpleicon@figmaicon\endcsname {\simpleiconsmapfour\symbol{182}}
+ \expandafter\def\csname simpleicon@figshareicon\endcsname {\simpleiconsmapfour\symbol{183}}
+ \expandafter\def\csname simpleicon@filaicon\endcsname {\simpleiconsmapfour\symbol{184}}
+ \expandafter\def\csname simpleicon@filedotioicon\endcsname {\simpleiconsmapfour\symbol{185}}
+ \expandafter\def\csname simpleicon@filesicon\endcsname {\simpleiconsmapfour\symbol{186}}
+ \expandafter\def\csname simpleicon@filezillaicon\endcsname {\simpleiconsmapfour\symbol{187}}
+ \expandafter\def\csname simpleicon@finecoicon\endcsname {\simpleiconsmapfour\symbol{188}}
+ \expandafter\def\csname simpleicon@fingicon\endcsname {\simpleiconsmapfour\symbol{189}}
+ \expandafter\def\csname simpleicon@firebaseicon\endcsname {\simpleiconsmapfour\symbol{190}}
+ \expandafter\def\csname simpleicon@firefishicon\endcsname {\simpleiconsmapfour\symbol{191}}
+ \expandafter\def\csname simpleicon@fireflyiiiicon\endcsname {\simpleiconsmapfour\symbol{192}}
+ \expandafter\def\csname simpleicon@firefoxicon\endcsname {\simpleiconsmapfour\symbol{193}}
+ \expandafter\def\csname simpleicon@firefoxbrowsericon\endcsname {\simpleiconsmapfour\symbol{194}}
+ \expandafter\def\csname simpleicon@fireshipicon\endcsname {\simpleiconsmapfour\symbol{195}}
+ \expandafter\def\csname simpleicon@firewallaicon\endcsname {\simpleiconsmapfour\symbol{196}}
+ \expandafter\def\csname simpleicon@firsticon\endcsname {\simpleiconsmapfour\symbol{197}}
+ \expandafter\def\csname simpleicon@fishshellicon\endcsname {\simpleiconsmapfour\symbol{198}}
+ \expandafter\def\csname simpleicon@fitbiticon\endcsname {\simpleiconsmapfour\symbol{199}}
+ \expandafter\def\csname simpleicon@fivemicon\endcsname {\simpleiconsmapfour\symbol{200}}
+ \expandafter\def\csname simpleicon@fiverricon\endcsname {\simpleiconsmapfour\symbol{201}}
+ \expandafter\def\csname simpleicon@fizzicon\endcsname {\simpleiconsmapfour\symbol{202}}
+ \expandafter\def\csname simpleicon@flashforgeicon\endcsname {\simpleiconsmapfour\symbol{203}}
+ \expandafter\def\csname simpleicon@flaskicon\endcsname {\simpleiconsmapfour\symbol{204}}
+ \expandafter\def\csname simpleicon@flaticon\endcsname {\simpleiconsmapfour\symbol{205}}
+ \expandafter\def\csname simpleicon@flathubicon\endcsname {\simpleiconsmapfour\symbol{206}}
+ \expandafter\def\csname simpleicon@flatpakicon\endcsname {\simpleiconsmapfour\symbol{207}}
+ \expandafter\def\csname simpleicon@flickricon\endcsname {\simpleiconsmapfour\symbol{208}}
+ \expandafter\def\csname simpleicon@flightawareicon\endcsname {\simpleiconsmapfour\symbol{209}}
+ \expandafter\def\csname simpleicon@flipboardicon\endcsname {\simpleiconsmapfour\symbol{210}}
+ \expandafter\def\csname simpleicon@flipkarticon\endcsname {\simpleiconsmapfour\symbol{211}}
+ \expandafter\def\csname simpleicon@floatplaneicon\endcsname {\simpleiconsmapfour\symbol{212}}
+ \expandafter\def\csname simpleicon@floodicon\endcsname {\simpleiconsmapfour\symbol{213}}
+ \expandafter\def\csname simpleicon@fluentbiticon\endcsname {\simpleiconsmapfour\symbol{214}}
+ \expandafter\def\csname simpleicon@fluentdicon\endcsname {\simpleiconsmapfour\symbol{215}}
+ \expandafter\def\csname simpleicon@flukeicon\endcsname {\simpleiconsmapfour\symbol{216}}
+ \expandafter\def\csname simpleicon@fluttericon\endcsname {\simpleiconsmapfour\symbol{217}}
+ \expandafter\def\csname simpleicon@fluxicon\endcsname {\simpleiconsmapfour\symbol{218}}
+ \expandafter\def\csname simpleicon@fluxusicon\endcsname {\simpleiconsmapfour\symbol{219}}
+ \expandafter\def\csname simpleicon@flydotioicon\endcsname {\simpleiconsmapfour\symbol{220}}
+ \expandafter\def\csname simpleicon@flywayicon\endcsname {\simpleiconsmapfour\symbol{221}}
+ \expandafter\def\csname simpleicon@fmodicon\endcsname {\simpleiconsmapfour\symbol{222}}
+ \expandafter\def\csname simpleicon@fnacicon\endcsname {\simpleiconsmapfour\symbol{223}}
+ \expandafter\def\csname simpleicon@foliumicon\endcsname {\simpleiconsmapfour\symbol{224}}
+ \expandafter\def\csname simpleicon@fonomaicon\endcsname {\simpleiconsmapfour\symbol{225}}
+ \expandafter\def\csname simpleicon@fontawesomeicon\endcsname {\simpleiconsmapfour\symbol{226}}
+ \expandafter\def\csname simpleicon@fontbaseicon\endcsname {\simpleiconsmapfour\symbol{227}}
+ \expandafter\def\csname simpleicon@fontforgeicon\endcsname {\simpleiconsmapfour\symbol{228}}
+ \expandafter\def\csname simpleicon@foobar2000icon\endcsname {\simpleiconsmapfour\symbol{229}}
+ \expandafter\def\csname simpleicon@foodpandaicon\endcsname {\simpleiconsmapfour\symbol{230}}
+ \expandafter\def\csname simpleicon@fordicon\endcsname {\simpleiconsmapfour\symbol{231}}
+ \expandafter\def\csname simpleicon@forgejoicon\endcsname {\simpleiconsmapfour\symbol{232}}
+ \expandafter\def\csname simpleicon@formikicon\endcsname {\simpleiconsmapfour\symbol{233}}
+ \expandafter\def\csname simpleicon@formspreeicon\endcsname {\simpleiconsmapfour\symbol{234}}
+ \expandafter\def\csname simpleicon@formstackicon\endcsname {\simpleiconsmapfour\symbol{235}}
+ \expandafter\def\csname simpleicon@fortineticon\endcsname {\simpleiconsmapfour\symbol{236}}
+ \expandafter\def\csname simpleicon@fortranicon\endcsname {\simpleiconsmapfour\symbol{237}}
+ \expandafter\def\csname simpleicon@fossaicon\endcsname {\simpleiconsmapfour\symbol{238}}
+ \expandafter\def\csname simpleicon@fossilscmicon\endcsname {\simpleiconsmapfour\symbol{239}}
+ \expandafter\def\csname simpleicon@foundryvirtualtabletopicon\endcsname {\simpleiconsmapfour\symbol{240}}
+ \expandafter\def\csname simpleicon@foursquareicon\endcsname {\simpleiconsmapfour\symbol{241}}
+ \expandafter\def\csname simpleicon@foursquarecityguideicon\endcsname {\simpleiconsmapfour\symbol{242}}
+ \expandafter\def\csname simpleicon@foxicon\endcsname {\simpleiconsmapfour\symbol{243}}
+ \expandafter\def\csname simpleicon@foxtelicon\endcsname {\simpleiconsmapfour\symbol{244}}
+ \expandafter\def\csname simpleicon@fozzyicon\endcsname {\simpleiconsmapfour\symbol{245}}
+ \expandafter\def\csname simpleicon@framericon\endcsname {\simpleiconsmapfour\symbol{246}}
+ \expandafter\def\csname simpleicon@frameworkicon\endcsname {\simpleiconsmapfour\symbol{247}}
+ \expandafter\def\csname simpleicon@framework7icon\endcsname {\simpleiconsmapfour\symbol{248}}
+ \expandafter\def\csname simpleicon@franprixicon\endcsname {\simpleiconsmapfour\symbol{249}}
+ \expandafter\def\csname simpleicon@frappeicon\endcsname {\simpleiconsmapfour\symbol{250}}
+ \expandafter\def\csname simpleicon@fraunhofergesellschafticon\endcsname {\simpleiconsmapfour\symbol{251}}
+ \expandafter\def\csname simpleicon@freebsdicon\endcsname {\simpleiconsmapfour\symbol{252}}
+ \expandafter\def\csname simpleicon@freecadicon\endcsname {\simpleiconsmapfour\symbol{253}}
+ \expandafter\def\csname simpleicon@freecodecampicon\endcsname {\simpleiconsmapfour\symbol{254}}
+ \expandafter\def\csname simpleicon@freedesktopdotorgicon\endcsname {\simpleiconsmapfour\symbol{255}}
+ \expandafter\def\csname simpleicon@freelancericon\endcsname {\simpleiconsmapfive\symbol{0}}
+ \expandafter\def\csname simpleicon@freelancermapicon\endcsname {\simpleiconsmapfive\symbol{1}}
+ \expandafter\def\csname simpleicon@freenasicon\endcsname {\simpleiconsmapfive\symbol{2}}
+ \expandafter\def\csname simpleicon@freepikicon\endcsname {\simpleiconsmapfive\symbol{3}}
+ \expandafter\def\csname simpleicon@freshicon\endcsname {\simpleiconsmapfive\symbol{4}}
+ \expandafter\def\csname simpleicon@frontendmentoricon\endcsname {\simpleiconsmapfive\symbol{5}}
+ \expandafter\def\csname simpleicon@frontifyicon\endcsname {\simpleiconsmapfive\symbol{6}}
+ \expandafter\def\csname simpleicon@fsecureicon\endcsname {\simpleiconsmapfive\symbol{7}}
+ \expandafter\def\csname simpleicon@fsharpicon\endcsname {\simpleiconsmapfive\symbol{8}}
+ \expandafter\def\csname simpleicon@fuboicon\endcsname {\simpleiconsmapfive\symbol{9}}
+ \expandafter\def\csname simpleicon@fuelericon\endcsname {\simpleiconsmapfive\symbol{10}}
+ \expandafter\def\csname simpleicon@fugacloudicon\endcsname {\simpleiconsmapfive\symbol{11}}
+ \expandafter\def\csname simpleicon@fujifilmicon\endcsname {\simpleiconsmapfive\symbol{12}}
+ \expandafter\def\csname simpleicon@fujitsuicon\endcsname {\simpleiconsmapfive\symbol{13}}
+ \expandafter\def\csname simpleicon@funimationicon\endcsname {\simpleiconsmapfive\symbol{14}}
+ \expandafter\def\csname simpleicon@furaffinityicon\endcsname {\simpleiconsmapfive\symbol{15}}
+ \expandafter\def\csname simpleicon@furrynetworkicon\endcsname {\simpleiconsmapfive\symbol{16}}
+ \expandafter\def\csname simpleicon@fusionauthicon\endcsname {\simpleiconsmapfive\symbol{17}}
+ \expandafter\def\csname simpleicon@futurelearnicon\endcsname {\simpleiconsmapfive\symbol{18}}
+ \expandafter\def\csname simpleicon@g2icon\endcsname {\simpleiconsmapfive\symbol{19}}
+ \expandafter\def\csname simpleicon@g2aicon\endcsname {\simpleiconsmapfive\symbol{20}}
+ \expandafter\def\csname simpleicon@g2gicon\endcsname {\simpleiconsmapfive\symbol{21}}
+ \expandafter\def\csname simpleicon@galaxusicon\endcsname {\simpleiconsmapfive\symbol{22}}
+ \expandafter\def\csname simpleicon@gameandwatchicon\endcsname {\simpleiconsmapfive\symbol{23}}
+ \expandafter\def\csname simpleicon@gamebananaicon\endcsname {\simpleiconsmapfive\symbol{24}}
+ \expandafter\def\csname simpleicon@gamedevelopericon\endcsname {\simpleiconsmapfive\symbol{25}}
+ \expandafter\def\csname simpleicon@gamejolticon\endcsname {\simpleiconsmapfive\symbol{26}}
+ \expandafter\def\csname simpleicon@gamelofticon\endcsname {\simpleiconsmapfive\symbol{27}}
+ \expandafter\def\csname simpleicon@gamemakericon\endcsname {\simpleiconsmapfive\symbol{28}}
+ \expandafter\def\csname simpleicon@garminicon\endcsname {\simpleiconsmapfive\symbol{29}}
+ \expandafter\def\csname simpleicon@gatlingicon\endcsname {\simpleiconsmapfive\symbol{30}}
+ \expandafter\def\csname simpleicon@gatsbyicon\endcsname {\simpleiconsmapfive\symbol{31}}
+ \expandafter\def\csname simpleicon@gcoreicon\endcsname {\simpleiconsmapfive\symbol{32}}
+ \expandafter\def\csname simpleicon@gdalicon\endcsname {\simpleiconsmapfive\symbol{33}}
+ \expandafter\def\csname simpleicon@geanticon\endcsname {\simpleiconsmapfive\symbol{34}}
+ \expandafter\def\csname simpleicon@geeksforgeeksicon\endcsname {\simpleiconsmapfive\symbol{35}}
+ \expandafter\def\csname simpleicon@generalelectricicon\endcsname {\simpleiconsmapfive\symbol{36}}
+ \expandafter\def\csname simpleicon@generalmotorsicon\endcsname {\simpleiconsmapfive\symbol{37}}
+ \expandafter\def\csname simpleicon@geniusicon\endcsname {\simpleiconsmapfive\symbol{38}}
+ \expandafter\def\csname simpleicon@gentooicon\endcsname {\simpleiconsmapfive\symbol{39}}
+ \expandafter\def\csname simpleicon@geocachingicon\endcsname {\simpleiconsmapfive\symbol{40}}
+ \expandafter\def\csname simpleicon@geodeicon\endcsname {\simpleiconsmapfive\symbol{41}}
+ \expandafter\def\csname simpleicon@geopandasicon\endcsname {\simpleiconsmapfive\symbol{42}}
+ \expandafter\def\csname simpleicon@gerriticon\endcsname {\simpleiconsmapfive\symbol{43}}
+ \expandafter\def\csname simpleicon@getxicon\endcsname {\simpleiconsmapfive\symbol{44}}
+ \expandafter\def\csname simpleicon@ghosticon\endcsname {\simpleiconsmapfive\symbol{45}}
+ \expandafter\def\csname simpleicon@ghosteryicon\endcsname {\simpleiconsmapfive\symbol{46}}
+ \expandafter\def\csname simpleicon@gimpicon\endcsname {\simpleiconsmapfive\symbol{47}}
+ \expandafter\def\csname simpleicon@ginicon\endcsname {\simpleiconsmapfive\symbol{48}}
+ \expandafter\def\csname simpleicon@giphyicon\endcsname {\simpleiconsmapfive\symbol{49}}
+ \expandafter\def\csname simpleicon@giticon\endcsname {\simpleiconsmapfive\symbol{50}}
+ \expandafter\def\csname simpleicon@gitbookicon\endcsname {\simpleiconsmapfive\symbol{51}}
+ \expandafter\def\csname simpleicon@gitconnectedicon\endcsname {\simpleiconsmapfive\symbol{52}}
+ \expandafter\def\csname simpleicon@giteaicon\endcsname {\simpleiconsmapfive\symbol{53}}
+ \expandafter\def\csname simpleicon@giteeicon\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@githubicon\endcsname {\simpleiconsmapfive\symbol{57}}
+ \expandafter\def\csname simpleicon@githubactionsicon\endcsname {\simpleiconsmapfive\symbol{58}}
+ \expandafter\def\csname simpleicon@githubcopiloticon\endcsname {\simpleiconsmapfive\symbol{59}}
+ \expandafter\def\csname simpleicon@githubpagesicon\endcsname {\simpleiconsmapfive\symbol{60}}
+ \expandafter\def\csname simpleicon@githubsponsorsicon\endcsname {\simpleiconsmapfive\symbol{61}}
+ \expandafter\def\csname simpleicon@gitignoredotioicon\endcsname {\simpleiconsmapfive\symbol{62}}
+ \expandafter\def\csname simpleicon@gitkrakenicon\endcsname {\simpleiconsmapfive\symbol{63}}
+ \expandafter\def\csname simpleicon@gitlabicon\endcsname {\simpleiconsmapfive\symbol{64}}
+ \expandafter\def\csname simpleicon@gitlfsicon\endcsname {\simpleiconsmapfive\symbol{65}}
+ \expandafter\def\csname simpleicon@gitpodicon\endcsname {\simpleiconsmapfive\symbol{66}}
+ \expandafter\def\csname simpleicon@gittericon\endcsname {\simpleiconsmapfive\symbol{67}}
+ \expandafter\def\csname simpleicon@glassdooricon\endcsname {\simpleiconsmapfive\symbol{68}}
+ \expandafter\def\csname simpleicon@glideicon\endcsname {\simpleiconsmapfive\symbol{69}}
+ \expandafter\def\csname simpleicon@glitchicon\endcsname {\simpleiconsmapfive\symbol{70}}
+ \expandafter\def\csname simpleicon@globusicon\endcsname {\simpleiconsmapfive\symbol{71}}
+ \expandafter\def\csname simpleicon@glovoicon\endcsname {\simpleiconsmapfive\symbol{72}}
+ \expandafter\def\csname simpleicon@gltficon\endcsname {\simpleiconsmapfive\symbol{73}}
+ \expandafter\def\csname simpleicon@gmailicon\endcsname {\simpleiconsmapfive\symbol{74}}
+ \expandafter\def\csname simpleicon@gnomeicon\endcsname {\simpleiconsmapfive\symbol{75}}
+ \expandafter\def\csname simpleicon@gnometerminalicon\endcsname {\simpleiconsmapfive\symbol{76}}
+ \expandafter\def\csname simpleicon@gnuicon\endcsname {\simpleiconsmapfive\symbol{77}}
+ \expandafter\def\csname simpleicon@gnubashicon\endcsname {\simpleiconsmapfive\symbol{78}}
+ \expandafter\def\csname simpleicon@gnuemacsicon\endcsname {\simpleiconsmapfive\symbol{79}}
+ \expandafter\def\csname simpleicon@gnuicecaticon\endcsname {\simpleiconsmapfive\symbol{80}}
+ \expandafter\def\csname simpleicon@gnuprivacyguardicon\endcsname {\simpleiconsmapfive\symbol{81}}
+ \expandafter\def\csname simpleicon@gnusocialicon\endcsname {\simpleiconsmapfive\symbol{82}}
+ \expandafter\def\csname simpleicon@goicon\endcsname {\simpleiconsmapfive\symbol{83}}
+ \expandafter\def\csname simpleicon@gocdicon\endcsname {\simpleiconsmapfive\symbol{84}}
+ \expandafter\def\csname simpleicon@godaddyicon\endcsname {\simpleiconsmapfive\symbol{85}}
+ \expandafter\def\csname simpleicon@godotengineicon\endcsname {\simpleiconsmapfive\symbol{86}}
+ \expandafter\def\csname simpleicon@gofundmeicon\endcsname {\simpleiconsmapfive\symbol{87}}
+ \expandafter\def\csname simpleicon@gogdotcomicon\endcsname {\simpleiconsmapfive\symbol{88}}
+ \expandafter\def\csname simpleicon@gojekicon\endcsname {\simpleiconsmapfive\symbol{89}}
+ \expandafter\def\csname simpleicon@golandicon\endcsname {\simpleiconsmapfive\symbol{90}}
+ \expandafter\def\csname simpleicon@goldenlineicon\endcsname {\simpleiconsmapfive\symbol{91}}
+ \expandafter\def\csname simpleicon@goldmansachsicon\endcsname {\simpleiconsmapfive\symbol{92}}
+ \expandafter\def\csname simpleicon@goodreadsicon\endcsname {\simpleiconsmapfive\symbol{93}}
+ \expandafter\def\csname simpleicon@googleicon\endcsname {\simpleiconsmapfive\symbol{94}}
+ \expandafter\def\csname simpleicon@googleadmobicon\endcsname {\simpleiconsmapfive\symbol{95}}
+ \expandafter\def\csname simpleicon@googleadsicon\endcsname {\simpleiconsmapfive\symbol{96}}
+ \expandafter\def\csname simpleicon@googleadsenseicon\endcsname {\simpleiconsmapfive\symbol{97}}
+ \expandafter\def\csname simpleicon@googleanalyticsicon\endcsname {\simpleiconsmapfive\symbol{98}}
+ \expandafter\def\csname simpleicon@googleappsscripticon\endcsname {\simpleiconsmapfive\symbol{99}}
+ \expandafter\def\csname simpleicon@googleassistanticon\endcsname {\simpleiconsmapfive\symbol{100}}
+ \expandafter\def\csname simpleicon@googleauthenticatoricon\endcsname {\simpleiconsmapfive\symbol{101}}
+ \expandafter\def\csname simpleicon@googlebigqueryicon\endcsname {\simpleiconsmapfive\symbol{102}}
+ \expandafter\def\csname simpleicon@googlebigtableicon\endcsname {\simpleiconsmapfive\symbol{103}}
+ \expandafter\def\csname simpleicon@googlecalendaricon\endcsname {\simpleiconsmapfive\symbol{104}}
+ \expandafter\def\csname simpleicon@googlecampaignmanager360icon\endcsname {\simpleiconsmapfive\symbol{105}}
+ \expandafter\def\csname simpleicon@googlecardboardicon\endcsname {\simpleiconsmapfive\symbol{106}}
+ \expandafter\def\csname simpleicon@googlechaticon\endcsname {\simpleiconsmapfive\symbol{107}}
+ \expandafter\def\csname simpleicon@googlechromeicon\endcsname {\simpleiconsmapfive\symbol{108}}
+ \expandafter\def\csname simpleicon@googlechronicleicon\endcsname {\simpleiconsmapfive\symbol{109}}
+ \expandafter\def\csname simpleicon@googleclassroomicon\endcsname {\simpleiconsmapfive\symbol{110}}
+ \expandafter\def\csname simpleicon@googlecloudicon\endcsname {\simpleiconsmapfive\symbol{111}}
+ \expandafter\def\csname simpleicon@googlecloudcomposericon\endcsname {\simpleiconsmapfive\symbol{112}}
+ \expandafter\def\csname simpleicon@googlecloudspannericon\endcsname {\simpleiconsmapfive\symbol{113}}
+ \expandafter\def\csname simpleicon@googlecloudstorageicon\endcsname {\simpleiconsmapfive\symbol{114}}
+ \expandafter\def\csname simpleicon@googlecolabicon\endcsname {\simpleiconsmapfive\symbol{115}}
+ \expandafter\def\csname simpleicon@googlecontaineroptimizedosicon\endcsname {\simpleiconsmapfive\symbol{116}}
+ \expandafter\def\csname simpleicon@googledataflowicon\endcsname {\simpleiconsmapfive\symbol{117}}
+ \expandafter\def\csname simpleicon@googledataprocicon\endcsname {\simpleiconsmapfive\symbol{118}}
+ \expandafter\def\csname simpleicon@googledatastudioicon\endcsname {\simpleiconsmapfive\symbol{119}}
+ \expandafter\def\csname simpleicon@googledisplayandvideo360icon\endcsname {\simpleiconsmapfive\symbol{120}}
+ \expandafter\def\csname simpleicon@googledocsicon\endcsname {\simpleiconsmapfive\symbol{121}}
+ \expandafter\def\csname simpleicon@googledriveicon\endcsname {\simpleiconsmapfive\symbol{122}}
+ \expandafter\def\csname simpleicon@googleearthicon\endcsname {\simpleiconsmapfive\symbol{123}}
+ \expandafter\def\csname simpleicon@googleearthengineicon\endcsname {\simpleiconsmapfive\symbol{124}}
+ \expandafter\def\csname simpleicon@googlefiticon\endcsname {\simpleiconsmapfive\symbol{125}}
+ \expandafter\def\csname simpleicon@googlefontsicon\endcsname {\simpleiconsmapfive\symbol{126}}
+ \expandafter\def\csname simpleicon@googleformsicon\endcsname {\simpleiconsmapfive\symbol{127}}
+ \expandafter\def\csname simpleicon@googlegeminiicon\endcsname {\simpleiconsmapfive\symbol{128}}
+ \expandafter\def\csname simpleicon@googlehomeicon\endcsname {\simpleiconsmapfive\symbol{129}}
+ \expandafter\def\csname simpleicon@googlekeepicon\endcsname {\simpleiconsmapfive\symbol{130}}
+ \expandafter\def\csname simpleicon@googlelensicon\endcsname {\simpleiconsmapfive\symbol{131}}
+ \expandafter\def\csname simpleicon@googlemapsicon\endcsname {\simpleiconsmapfive\symbol{132}}
+ \expandafter\def\csname simpleicon@googlemarketingplatformicon\endcsname {\simpleiconsmapfive\symbol{133}}
+ \expandafter\def\csname simpleicon@googlemeeticon\endcsname {\simpleiconsmapfive\symbol{134}}
+ \expandafter\def\csname simpleicon@googlemessagesicon\endcsname {\simpleiconsmapfive\symbol{135}}
+ \expandafter\def\csname simpleicon@googlenearbyicon\endcsname {\simpleiconsmapfive\symbol{136}}
+ \expandafter\def\csname simpleicon@googlenewsicon\endcsname {\simpleiconsmapfive\symbol{137}}
+ \expandafter\def\csname simpleicon@googlepayicon\endcsname {\simpleiconsmapfive\symbol{138}}
+ \expandafter\def\csname simpleicon@googlephotosicon\endcsname {\simpleiconsmapfive\symbol{139}}
+ \expandafter\def\csname simpleicon@googleplayicon\endcsname {\simpleiconsmapfive\symbol{140}}
+ \expandafter\def\csname simpleicon@googlepubsubicon\endcsname {\simpleiconsmapfive\symbol{141}}
+ \expandafter\def\csname simpleicon@googlescholaricon\endcsname {\simpleiconsmapfive\symbol{142}}
+ \expandafter\def\csname simpleicon@googlesearchconsoleicon\endcsname {\simpleiconsmapfive\symbol{143}}
+ \expandafter\def\csname simpleicon@googlesheetsicon\endcsname {\simpleiconsmapfive\symbol{144}}
+ \expandafter\def\csname simpleicon@googleslidesicon\endcsname {\simpleiconsmapfive\symbol{145}}
+ \expandafter\def\csname simpleicon@googlestreetviewicon\endcsname {\simpleiconsmapfive\symbol{146}}
+ \expandafter\def\csname simpleicon@googletagmanagericon\endcsname {\simpleiconsmapfive\symbol{147}}
+ \expandafter\def\csname simpleicon@googletasksicon\endcsname {\simpleiconsmapfive\symbol{148}}
+ \expandafter\def\csname simpleicon@googletranslateicon\endcsname {\simpleiconsmapfive\symbol{149}}
+ \expandafter\def\csname simpleicon@gotomeetingicon\endcsname {\simpleiconsmapfive\symbol{150}}
+ \expandafter\def\csname simpleicon@grabicon\endcsname {\simpleiconsmapfive\symbol{151}}
+ \expandafter\def\csname simpleicon@gradleicon\endcsname {\simpleiconsmapfive\symbol{152}}
+ \expandafter\def\csname simpleicon@gradleplaypublishericon\endcsname {\simpleiconsmapfive\symbol{153}}
+ \expandafter\def\csname simpleicon@grafanaicon\endcsname {\simpleiconsmapfive\symbol{154}}
+ \expandafter\def\csname simpleicon@grammarlyicon\endcsname {\simpleiconsmapfive\symbol{155}}
+ \expandafter\def\csname simpleicon@grandfraisicon\endcsname {\simpleiconsmapfive\symbol{156}}
+ \expandafter\def\csname simpleicon@grapheneosicon\endcsname {\simpleiconsmapfive\symbol{157}}
+ \expandafter\def\csname simpleicon@graphiteicon\endcsname {\simpleiconsmapfive\symbol{158}}
+ \expandafter\def\csname simpleicon@graphqlicon\endcsname {\simpleiconsmapfive\symbol{159}}
+ \expandafter\def\csname simpleicon@gravicon\endcsname {\simpleiconsmapfive\symbol{160}}
+ \expandafter\def\csname simpleicon@gravataricon\endcsname {\simpleiconsmapfive\symbol{161}}
+ \expandafter\def\csname simpleicon@graylogicon\endcsname {\simpleiconsmapfive\symbol{162}}
+ \expandafter\def\csname simpleicon@greasyforkicon\endcsname {\simpleiconsmapfive\symbol{163}}
+ \expandafter\def\csname simpleicon@greatlearningicon\endcsname {\simpleiconsmapfive\symbol{164}}
+ \expandafter\def\csname simpleicon@greenhouseicon\endcsname {\simpleiconsmapfive\symbol{165}}
+ \expandafter\def\csname simpleicon@greensockicon\endcsname {\simpleiconsmapfive\symbol{166}}
+ \expandafter\def\csname simpleicon@griddotaiicon\endcsname {\simpleiconsmapfive\symbol{167}}
+ \expandafter\def\csname simpleicon@gridsomeicon\endcsname {\simpleiconsmapfive\symbol{168}}
+ \expandafter\def\csname simpleicon@groupmeicon\endcsname {\simpleiconsmapfive\symbol{169}}
+ \expandafter\def\csname simpleicon@grouponicon\endcsname {\simpleiconsmapfive\symbol{170}}
+ \expandafter\def\csname simpleicon@grubhubicon\endcsname {\simpleiconsmapfive\symbol{171}}
+ \expandafter\def\csname simpleicon@grunticon\endcsname {\simpleiconsmapfive\symbol{172}}
+ \expandafter\def\csname simpleicon@gskicon\endcsname {\simpleiconsmapfive\symbol{173}}
+ \expandafter\def\csname simpleicon@gsmarenadotcomicon\endcsname {\simpleiconsmapfive\symbol{174}}
+ \expandafter\def\csname simpleicon@gstreamericon\endcsname {\simpleiconsmapfive\symbol{175}}
+ \expandafter\def\csname simpleicon@gtkicon\endcsname {\simpleiconsmapfive\symbol{176}}
+ \expandafter\def\csname simpleicon@guangzhoumetroicon\endcsname {\simpleiconsmapfive\symbol{177}}
+ \expandafter\def\csname simpleicon@guildedicon\endcsname {\simpleiconsmapfive\symbol{178}}
+ \expandafter\def\csname simpleicon@guitarproicon\endcsname {\simpleiconsmapfive\symbol{179}}
+ \expandafter\def\csname simpleicon@gulpicon\endcsname {\simpleiconsmapfive\symbol{180}}
+ \expandafter\def\csname simpleicon@gumroadicon\endcsname {\simpleiconsmapfive\symbol{181}}
+ \expandafter\def\csname simpleicon@gumtreeicon\endcsname {\simpleiconsmapfive\symbol{182}}
+ \expandafter\def\csname simpleicon@gunicornicon\endcsname {\simpleiconsmapfive\symbol{183}}
+ \expandafter\def\csname simpleicon@gurobiicon\endcsname {\simpleiconsmapfive\symbol{184}}
+ \expandafter\def\csname simpleicon@gustoicon\endcsname {\simpleiconsmapfive\symbol{185}}
+ \expandafter\def\csname simpleicon@gutenbergicon\endcsname {\simpleiconsmapfive\symbol{186}}
+ \expandafter\def\csname simpleicon@h3icon\endcsname {\simpleiconsmapfive\symbol{187}}
+ \expandafter\def\csname simpleicon@habricon\endcsname {\simpleiconsmapfive\symbol{188}}
+ \expandafter\def\csname simpleicon@hackadayicon\endcsname {\simpleiconsmapfive\symbol{189}}
+ \expandafter\def\csname simpleicon@hackclubicon\endcsname {\simpleiconsmapfive\symbol{190}}
+ \expandafter\def\csname simpleicon@hackerearthicon\endcsname {\simpleiconsmapfive\symbol{191}}
+ \expandafter\def\csname simpleicon@hackernoonicon\endcsname {\simpleiconsmapfive\symbol{192}}
+ \expandafter\def\csname simpleicon@hackeroneicon\endcsname {\simpleiconsmapfive\symbol{193}}
+ \expandafter\def\csname simpleicon@hackerrankicon\endcsname {\simpleiconsmapfive\symbol{194}}
+ \expandafter\def\csname simpleicon@hackstericon\endcsname {\simpleiconsmapfive\symbol{195}}
+ \expandafter\def\csname simpleicon@hacktheboxicon\endcsname {\simpleiconsmapfive\symbol{196}}
+ \expandafter\def\csname simpleicon@halicon\endcsname {\simpleiconsmapfive\symbol{197}}
+ \expandafter\def\csname simpleicon@handlebarsdotjsicon\endcsname {\simpleiconsmapfive\symbol{198}}
+ \expandafter\def\csname simpleicon@handmicon\endcsname {\simpleiconsmapfive\symbol{199}}
+ \expandafter\def\csname simpleicon@handshakeicon\endcsname {\simpleiconsmapfive\symbol{200}}
+ \expandafter\def\csname simpleicon@handshakeprotocolicon\endcsname {\simpleiconsmapfive\symbol{201}}
+ \expandafter\def\csname simpleicon@happycowicon\endcsname {\simpleiconsmapfive\symbol{202}}
+ \expandafter\def\csname simpleicon@harboricon\endcsname {\simpleiconsmapfive\symbol{203}}
+ \expandafter\def\csname simpleicon@harmonyosicon\endcsname {\simpleiconsmapfive\symbol{204}}
+ \expandafter\def\csname simpleicon@hashicorpicon\endcsname {\simpleiconsmapfive\symbol{205}}
+ \expandafter\def\csname simpleicon@hashnodeicon\endcsname {\simpleiconsmapfive\symbol{206}}
+ \expandafter\def\csname simpleicon@haskellicon\endcsname {\simpleiconsmapfive\symbol{207}}
+ \expandafter\def\csname simpleicon@hasuraicon\endcsname {\simpleiconsmapfive\symbol{208}}
+ \expandafter\def\csname simpleicon@hatenabookmarkicon\endcsname {\simpleiconsmapfive\symbol{209}}
+ \expandafter\def\csname simpleicon@haveibeenpwnedicon\endcsname {\simpleiconsmapfive\symbol{210}}
+ \expandafter\def\csname simpleicon@haxeicon\endcsname {\simpleiconsmapfive\symbol{211}}
+ \expandafter\def\csname simpleicon@hboicon\endcsname {\simpleiconsmapfive\symbol{212}}
+ \expandafter\def\csname simpleicon@hclicon\endcsname {\simpleiconsmapfive\symbol{213}}
+ \expandafter\def\csname simpleicon@hdfcbankicon\endcsname {\simpleiconsmapfive\symbol{214}}
+ \expandafter\def\csname simpleicon@headlessuiicon\endcsname {\simpleiconsmapfive\symbol{215}}
+ \expandafter\def\csname simpleicon@headphonezoneicon\endcsname {\simpleiconsmapfive\symbol{216}}
+ \expandafter\def\csname simpleicon@headspaceicon\endcsname {\simpleiconsmapfive\symbol{217}}
+ \expandafter\def\csname simpleicon@hearthicon\endcsname {\simpleiconsmapfive\symbol{218}}
+ \expandafter\def\csname simpleicon@hearthisdotaticon\endcsname {\simpleiconsmapfive\symbol{219}}
+ \expandafter\def\csname simpleicon@hederaicon\endcsname {\simpleiconsmapfive\symbol{220}}
+ \expandafter\def\csname simpleicon@heliumicon\endcsname {\simpleiconsmapfive\symbol{221}}
+ \expandafter\def\csname simpleicon@helixicon\endcsname {\simpleiconsmapfive\symbol{222}}
+ \expandafter\def\csname simpleicon@hellofreshicon\endcsname {\simpleiconsmapfive\symbol{223}}
+ \expandafter\def\csname simpleicon@hellyhansenicon\endcsname {\simpleiconsmapfive\symbol{224}}
+ \expandafter\def\csname simpleicon@helmicon\endcsname {\simpleiconsmapfive\symbol{225}}
+ \expandafter\def\csname simpleicon@helpdeskicon\endcsname {\simpleiconsmapfive\symbol{226}}
+ \expandafter\def\csname simpleicon@helpscouticon\endcsname {\simpleiconsmapfive\symbol{227}}
+ \expandafter\def\csname simpleicon@hepsiemlakicon\endcsname {\simpleiconsmapfive\symbol{228}}
+ \expandafter\def\csname simpleicon@hereicon\endcsname {\simpleiconsmapfive\symbol{229}}
+ \expandafter\def\csname simpleicon@hermesicon\endcsname {\simpleiconsmapfive\symbol{230}}
+ \expandafter\def\csname simpleicon@herokuicon\endcsname {\simpleiconsmapfive\symbol{231}}
+ \expandafter\def\csname simpleicon@hetznericon\endcsname {\simpleiconsmapfive\symbol{232}}
+ \expandafter\def\csname simpleicon@hevyicon\endcsname {\simpleiconsmapfive\symbol{233}}
+ \expandafter\def\csname simpleicon@hexleticon\endcsname {\simpleiconsmapfive\symbol{234}}
+ \expandafter\def\csname simpleicon@hexoicon\endcsname {\simpleiconsmapfive\symbol{235}}
+ \expandafter\def\csname simpleicon@heyicon\endcsname {\simpleiconsmapfive\symbol{236}}
+ \expandafter\def\csname simpleicon@hibernateicon\endcsname {\simpleiconsmapfive\symbol{237}}
+ \expandafter\def\csname simpleicon@hibobicon\endcsname {\simpleiconsmapfive\symbol{238}}
+ \expandafter\def\csname simpleicon@hiltonicon\endcsname {\simpleiconsmapfive\symbol{239}}
+ \expandafter\def\csname simpleicon@hiltonhotelsandresortsicon\endcsname {\simpleiconsmapfive\symbol{240}}
+ \expandafter\def\csname simpleicon@hitachiicon\endcsname {\simpleiconsmapfive\symbol{241}}
+ \expandafter\def\csname simpleicon@hiveicon\endcsname {\simpleiconsmapfive\symbol{242}}
+ \expandafter\def\csname simpleicon@hiveblockchainicon\endcsname {\simpleiconsmapfive\symbol{243}}
+ \expandafter\def\csname simpleicon@hivemqicon\endcsname {\simpleiconsmapfive\symbol{244}}
+ \expandafter\def\csname simpleicon@homarricon\endcsname {\simpleiconsmapfive\symbol{245}}
+ \expandafter\def\csname simpleicon@homeadvisoricon\endcsname {\simpleiconsmapfive\symbol{246}}
+ \expandafter\def\csname simpleicon@homeassistanticon\endcsname {\simpleiconsmapfive\symbol{247}}
+ \expandafter\def\csname simpleicon@homeassistantcommunitystoreicon\endcsname {\simpleiconsmapfive\symbol{248}}
+ \expandafter\def\csname simpleicon@homebrewicon\endcsname {\simpleiconsmapfive\symbol{249}}
+ \expandafter\def\csname simpleicon@homebridgeicon\endcsname {\simpleiconsmapfive\symbol{250}}
+ \expandafter\def\csname simpleicon@homepageicon\endcsname {\simpleiconsmapfive\symbol{251}}
+ \expandafter\def\csname simpleicon@homifyicon\endcsname {\simpleiconsmapfive\symbol{252}}
+ \expandafter\def\csname simpleicon@hondaicon\endcsname {\simpleiconsmapfive\symbol{253}}
+ \expandafter\def\csname simpleicon@honeyicon\endcsname {\simpleiconsmapfive\symbol{254}}
+ \expandafter\def\csname simpleicon@honoicon\endcsname {\simpleiconsmapfive\symbol{255}}
+ \expandafter\def\csname simpleicon@honoricon\endcsname {\simpleiconsmapsix\symbol{0}}
+ \expandafter\def\csname simpleicon@hootsuiteicon\endcsname {\simpleiconsmapsix\symbol{1}}
+ \expandafter\def\csname simpleicon@hoppscotchicon\endcsname {\simpleiconsmapsix\symbol{2}}
+ \expandafter\def\csname simpleicon@hostingericon\endcsname {\simpleiconsmapsix\symbol{3}}
+ \expandafter\def\csname simpleicon@hotelsdotcomicon\endcsname {\simpleiconsmapsix\symbol{4}}
+ \expandafter\def\csname simpleicon@hotjaricon\endcsname {\simpleiconsmapsix\symbol{5}}
+ \expandafter\def\csname simpleicon@hotwireicon\endcsname {\simpleiconsmapsix\symbol{6}}
+ \expandafter\def\csname simpleicon@houdiniicon\endcsname {\simpleiconsmapsix\symbol{7}}
+ \expandafter\def\csname simpleicon@houzzicon\endcsname {\simpleiconsmapsix\symbol{8}}
+ \expandafter\def\csname simpleicon@hpicon\endcsname {\simpleiconsmapsix\symbol{9}}
+ \expandafter\def\csname simpleicon@hsbcicon\endcsname {\simpleiconsmapsix\symbol{10}}
+ \expandafter\def\csname simpleicon@html5icon\endcsname {\simpleiconsmapsix\symbol{11}}
+ \expandafter\def\csname simpleicon@htmlacademyicon\endcsname {\simpleiconsmapsix\symbol{12}}
+ \expandafter\def\csname simpleicon@htmxicon\endcsname {\simpleiconsmapsix\symbol{13}}
+ \expandafter\def\csname simpleicon@htopicon\endcsname {\simpleiconsmapsix\symbol{14}}
+ \expandafter\def\csname simpleicon@httpieicon\endcsname {\simpleiconsmapsix\symbol{15}}
+ \expandafter\def\csname simpleicon@huaweiicon\endcsname {\simpleiconsmapsix\symbol{16}}
+ \expandafter\def\csname simpleicon@hubspoticon\endcsname {\simpleiconsmapsix\symbol{17}}
+ \expandafter\def\csname simpleicon@huggingfaceicon\endcsname {\simpleiconsmapsix\symbol{18}}
+ \expandafter\def\csname simpleicon@hugoicon\endcsname {\simpleiconsmapsix\symbol{19}}
+ \expandafter\def\csname simpleicon@humblebundleicon\endcsname {\simpleiconsmapsix\symbol{20}}
+ \expandafter\def\csname simpleicon@humhubicon\endcsname {\simpleiconsmapsix\symbol{21}}
+ \expandafter\def\csname simpleicon@hungryjacksicon\endcsname {\simpleiconsmapsix\symbol{22}}
+ \expandafter\def\csname simpleicon@husqvarnaicon\endcsname {\simpleiconsmapsix\symbol{23}}
+ \expandafter\def\csname simpleicon@hypericon\endcsname {\simpleiconsmapsix\symbol{24}}
+ \expandafter\def\csname simpleicon@hyperskillicon\endcsname {\simpleiconsmapsix\symbol{25}}
+ \expandafter\def\csname simpleicon@hyperxicon\endcsname {\simpleiconsmapsix\symbol{26}}
+ \expandafter\def\csname simpleicon@hypothesisicon\endcsname {\simpleiconsmapsix\symbol{27}}
+ \expandafter\def\csname simpleicon@hyprlandicon\endcsname {\simpleiconsmapsix\symbol{28}}
+ \expandafter\def\csname simpleicon@hyundaiicon\endcsname {\simpleiconsmapsix\symbol{29}}
+ \expandafter\def\csname simpleicon@i18nexticon\endcsname {\simpleiconsmapsix\symbol{30}}
+ \expandafter\def\csname simpleicon@i3icon\endcsname {\simpleiconsmapsix\symbol{31}}
+ \expandafter\def\csname simpleicon@iataicon\endcsname {\simpleiconsmapsix\symbol{32}}
+ \expandafter\def\csname simpleicon@ibeaconicon\endcsname {\simpleiconsmapsix\symbol{33}}
+ \expandafter\def\csname simpleicon@iberiaicon\endcsname {\simpleiconsmapsix\symbol{34}}
+ \expandafter\def\csname simpleicon@icedicon\endcsname {\simpleiconsmapsix\symbol{35}}
+ \expandafter\def\csname simpleicon@icelandicon\endcsname {\simpleiconsmapsix\symbol{36}}
+ \expandafter\def\csname simpleicon@icicibankicon\endcsname {\simpleiconsmapsix\symbol{37}}
+ \expandafter\def\csname simpleicon@icingaicon\endcsname {\simpleiconsmapsix\symbol{38}}
+ \expandafter\def\csname simpleicon@icloudicon\endcsname {\simpleiconsmapsix\symbol{39}}
+ \expandafter\def\csname simpleicon@icomoonicon\endcsname {\simpleiconsmapsix\symbol{40}}
+ \expandafter\def\csname simpleicon@iconicon\endcsname {\simpleiconsmapsix\symbol{41}}
+ \expandafter\def\csname simpleicon@iconfindericon\endcsname {\simpleiconsmapsix\symbol{42}}
+ \expandafter\def\csname simpleicon@iconifyicon\endcsname {\simpleiconsmapsix\symbol{43}}
+ \expandafter\def\csname simpleicon@iconjaricon\endcsname {\simpleiconsmapsix\symbol{44}}
+ \expandafter\def\csname simpleicon@icons8icon\endcsname {\simpleiconsmapsix\symbol{45}}
+ \expandafter\def\csname simpleicon@icqicon\endcsname {\simpleiconsmapsix\symbol{46}}
+ \expandafter\def\csname simpleicon@ieeeicon\endcsname {\simpleiconsmapsix\symbol{47}}
+ \expandafter\def\csname simpleicon@ifixiticon\endcsname {\simpleiconsmapsix\symbol{48}}
+ \expandafter\def\csname simpleicon@ifoodicon\endcsname {\simpleiconsmapsix\symbol{49}}
+ \expandafter\def\csname simpleicon@ifttticon\endcsname {\simpleiconsmapsix\symbol{50}}
+ \expandafter\def\csname simpleicon@igdbicon\endcsname {\simpleiconsmapsix\symbol{51}}
+ \expandafter\def\csname simpleicon@ignicon\endcsname {\simpleiconsmapsix\symbol{52}}
+ \expandafter\def\csname simpleicon@iheartradioicon\endcsname {\simpleiconsmapsix\symbol{53}}
+ \expandafter\def\csname simpleicon@ikeaicon\endcsname {\simpleiconsmapsix\symbol{54}}
+ \expandafter\def\csname simpleicon@iledefrancemobilitesicon\endcsname {\simpleiconsmapsix\symbol{55}}
+ \expandafter\def\csname simpleicon@imagedotscicon\endcsname {\simpleiconsmapsix\symbol{56}}
+ \expandafter\def\csname simpleicon@imagejicon\endcsname {\simpleiconsmapsix\symbol{57}}
+ \expandafter\def\csname simpleicon@imdbicon\endcsname {\simpleiconsmapsix\symbol{58}}
+ \expandafter\def\csname simpleicon@imessageicon\endcsname {\simpleiconsmapsix\symbol{59}}
+ \expandafter\def\csname simpleicon@imguricon\endcsname {\simpleiconsmapsix\symbol{60}}
+ \expandafter\def\csname simpleicon@immericon\endcsname {\simpleiconsmapsix\symbol{61}}
+ \expandafter\def\csname simpleicon@immichicon\endcsname {\simpleiconsmapsix\symbol{62}}
+ \expandafter\def\csname simpleicon@imouicon\endcsname {\simpleiconsmapsix\symbol{63}}
+ \expandafter\def\csname simpleicon@improvmxicon\endcsname {\simpleiconsmapsix\symbol{64}}
+ \expandafter\def\csname simpleicon@indeedicon\endcsname {\simpleiconsmapsix\symbol{65}}
+ \expandafter\def\csname simpleicon@indiansuperleagueicon\endcsname {\simpleiconsmapsix\symbol{66}}
+ \expandafter\def\csname simpleicon@indiehackersicon\endcsname {\simpleiconsmapsix\symbol{67}}
+ \expandafter\def\csname simpleicon@indigoicon\endcsname {\simpleiconsmapsix\symbol{68}}
+ \expandafter\def\csname simpleicon@inductiveautomationicon\endcsname {\simpleiconsmapsix\symbol{69}}
+ \expandafter\def\csname simpleicon@inertiaicon\endcsname {\simpleiconsmapsix\symbol{70}}
+ \expandafter\def\csname simpleicon@infinitiicon\endcsname {\simpleiconsmapsix\symbol{71}}
+ \expandafter\def\csname simpleicon@influxdbicon\endcsname {\simpleiconsmapsix\symbol{72}}
+ \expandafter\def\csname simpleicon@infomaniakicon\endcsname {\simpleiconsmapsix\symbol{73}}
+ \expandafter\def\csname simpleicon@infoqicon\endcsname {\simpleiconsmapsix\symbol{74}}
+ \expandafter\def\csname simpleicon@informaticaicon\endcsname {\simpleiconsmapsix\symbol{75}}
+ \expandafter\def\csname simpleicon@infosysicon\endcsname {\simpleiconsmapsix\symbol{76}}
+ \expandafter\def\csname simpleicon@infracosticon\endcsname {\simpleiconsmapsix\symbol{77}}
+ \expandafter\def\csname simpleicon@ingressicon\endcsname {\simpleiconsmapsix\symbol{78}}
+ \expandafter\def\csname simpleicon@inkdropicon\endcsname {\simpleiconsmapsix\symbol{79}}
+ \expandafter\def\csname simpleicon@inkscapeicon\endcsname {\simpleiconsmapsix\symbol{80}}
+ \expandafter\def\csname simpleicon@inoreadericon\endcsname {\simpleiconsmapsix\symbol{81}}
+ \expandafter\def\csname simpleicon@insomniaicon\endcsname {\simpleiconsmapsix\symbol{82}}
+ \expandafter\def\csname simpleicon@inspireicon\endcsname {\simpleiconsmapsix\symbol{83}}
+ \expandafter\def\csname simpleicon@insta360icon\endcsname {\simpleiconsmapsix\symbol{84}}
+ \expandafter\def\csname simpleicon@instacarticon\endcsname {\simpleiconsmapsix\symbol{85}}
+ \expandafter\def\csname simpleicon@instagramicon\endcsname {\simpleiconsmapsix\symbol{86}}
+ \expandafter\def\csname simpleicon@instapapericon\endcsname {\simpleiconsmapsix\symbol{87}}
+ \expandafter\def\csname simpleicon@instatusicon\endcsname {\simpleiconsmapsix\symbol{88}}
+ \expandafter\def\csname simpleicon@instructablesicon\endcsname {\simpleiconsmapsix\symbol{89}}
+ \expandafter\def\csname simpleicon@instructureicon\endcsname {\simpleiconsmapsix\symbol{90}}
+ \expandafter\def\csname simpleicon@intelicon\endcsname {\simpleiconsmapsix\symbol{91}}
+ \expandafter\def\csname simpleicon@intellijideaicon\endcsname {\simpleiconsmapsix\symbol{92}}
+ \expandafter\def\csname simpleicon@interactiondesignfoundationicon\endcsname {\simpleiconsmapsix\symbol{93}}
+ \expandafter\def\csname simpleicon@interactjsicon\endcsname {\simpleiconsmapsix\symbol{94}}
+ \expandafter\def\csname simpleicon@interbaseicon\endcsname {\simpleiconsmapsix\symbol{95}}
+ \expandafter\def\csname simpleicon@intercomicon\endcsname {\simpleiconsmapsix\symbol{96}}
+ \expandafter\def\csname simpleicon@intermarcheicon\endcsname {\simpleiconsmapsix\symbol{97}}
+ \expandafter\def\csname simpleicon@internetarchiveicon\endcsname {\simpleiconsmapsix\symbol{98}}
+ \expandafter\def\csname simpleicon@internetcomputericon\endcsname {\simpleiconsmapsix\symbol{99}}
+ \expandafter\def\csname simpleicon@intigritiicon\endcsname {\simpleiconsmapsix\symbol{100}}
+ \expandafter\def\csname simpleicon@intuiticon\endcsname {\simpleiconsmapsix\symbol{101}}
+ \expandafter\def\csname simpleicon@invisionicon\endcsname {\simpleiconsmapsix\symbol{102}}
+ \expandafter\def\csname simpleicon@invoiceninjaicon\endcsname {\simpleiconsmapsix\symbol{103}}
+ \expandafter\def\csname simpleicon@iobrokericon\endcsname {\simpleiconsmapsix\symbol{104}}
+ \expandafter\def\csname simpleicon@ionicicon\endcsname {\simpleiconsmapsix\symbol{105}}
+ \expandafter\def\csname simpleicon@ionosicon\endcsname {\simpleiconsmapsix\symbol{106}}
+ \expandafter\def\csname simpleicon@iosicon\endcsname {\simpleiconsmapsix\symbol{107}}
+ \expandafter\def\csname simpleicon@iotaicon\endcsname {\simpleiconsmapsix\symbol{108}}
+ \expandafter\def\csname simpleicon@ipfsicon\endcsname {\simpleiconsmapsix\symbol{109}}
+ \expandafter\def\csname simpleicon@irisicon\endcsname {\simpleiconsmapsix\symbol{110}}
+ \expandafter\def\csname simpleicon@iroboticon\endcsname {\simpleiconsmapsix\symbol{111}}
+ \expandafter\def\csname simpleicon@isc2icon\endcsname {\simpleiconsmapsix\symbol{112}}
+ \expandafter\def\csname simpleicon@issuuicon\endcsname {\simpleiconsmapsix\symbol{113}}
+ \expandafter\def\csname simpleicon@istioicon\endcsname {\simpleiconsmapsix\symbol{114}}
+ \expandafter\def\csname simpleicon@itchdotioicon\endcsname {\simpleiconsmapsix\symbol{115}}
+ \expandafter\def\csname simpleicon@iterm2icon\endcsname {\simpleiconsmapsix\symbol{116}}
+ \expandafter\def\csname simpleicon@itunesicon\endcsname {\simpleiconsmapsix\symbol{117}}
+ \expandafter\def\csname simpleicon@itvxicon\endcsname {\simpleiconsmapsix\symbol{118}}
+ \expandafter\def\csname simpleicon@ivecoicon\endcsname {\simpleiconsmapsix\symbol{119}}
+ \expandafter\def\csname simpleicon@jabbericon\endcsname {\simpleiconsmapsix\symbol{120}}
+ \expandafter\def\csname simpleicon@jaegericon\endcsname {\simpleiconsmapsix\symbol{121}}
+ \expandafter\def\csname simpleicon@jaguaricon\endcsname {\simpleiconsmapsix\symbol{122}}
+ \expandafter\def\csname simpleicon@jamboardicon\endcsname {\simpleiconsmapsix\symbol{123}}
+ \expandafter\def\csname simpleicon@jamesonicon\endcsname {\simpleiconsmapsix\symbol{124}}
+ \expandafter\def\csname simpleicon@jamstackicon\endcsname {\simpleiconsmapsix\symbol{125}}
+ \expandafter\def\csname simpleicon@japanairlinesicon\endcsname {\simpleiconsmapsix\symbol{126}}
+ \expandafter\def\csname simpleicon@jasmineicon\endcsname {\simpleiconsmapsix\symbol{127}}
+ \expandafter\def\csname simpleicon@javascripticon\endcsname {\simpleiconsmapsix\symbol{128}}
+ \expandafter\def\csname simpleicon@jblicon\endcsname {\simpleiconsmapsix\symbol{129}}
+ \expandafter\def\csname simpleicon@jcbicon\endcsname {\simpleiconsmapsix\symbol{130}}
+ \expandafter\def\csname simpleicon@jeepicon\endcsname {\simpleiconsmapsix\symbol{131}}
+ \expandafter\def\csname simpleicon@jekyllicon\endcsname {\simpleiconsmapsix\symbol{132}}
+ \expandafter\def\csname simpleicon@jellyfinicon\endcsname {\simpleiconsmapsix\symbol{133}}
+ \expandafter\def\csname simpleicon@jenkinsicon\endcsname {\simpleiconsmapsix\symbol{134}}
+ \expandafter\def\csname simpleicon@jesticon\endcsname {\simpleiconsmapsix\symbol{135}}
+ \expandafter\def\csname simpleicon@jeticon\endcsname {\simpleiconsmapsix\symbol{136}}
+ \expandafter\def\csname simpleicon@jetblueicon\endcsname {\simpleiconsmapsix\symbol{137}}
+ \expandafter\def\csname simpleicon@jetbrainsicon\endcsname {\simpleiconsmapsix\symbol{138}}
+ \expandafter\def\csname simpleicon@jetpackcomposeicon\endcsname {\simpleiconsmapsix\symbol{139}}
+ \expandafter\def\csname simpleicon@jfrogicon\endcsname {\simpleiconsmapsix\symbol{140}}
+ \expandafter\def\csname simpleicon@jfrogpipelinesicon\endcsname {\simpleiconsmapsix\symbol{141}}
+ \expandafter\def\csname simpleicon@jhipstericon\endcsname {\simpleiconsmapsix\symbol{142}}
+ \expandafter\def\csname simpleicon@jinjaicon\endcsname {\simpleiconsmapsix\symbol{143}}
+ \expandafter\def\csname simpleicon@jiraicon\endcsname {\simpleiconsmapsix\symbol{144}}
+ \expandafter\def\csname simpleicon@jirasoftwareicon\endcsname {\simpleiconsmapsix\symbol{145}}
+ \expandafter\def\csname simpleicon@jitpackicon\endcsname {\simpleiconsmapsix\symbol{146}}
+ \expandafter\def\csname simpleicon@jitsiicon\endcsname {\simpleiconsmapsix\symbol{147}}
+ \expandafter\def\csname simpleicon@johndeereicon\endcsname {\simpleiconsmapsix\symbol{148}}
+ \expandafter\def\csname simpleicon@joomlaicon\endcsname {\simpleiconsmapsix\symbol{149}}
+ \expandafter\def\csname simpleicon@joplinicon\endcsname {\simpleiconsmapsix\symbol{150}}
+ \expandafter\def\csname simpleicon@jordanicon\endcsname {\simpleiconsmapsix\symbol{151}}
+ \expandafter\def\csname simpleicon@jouavicon\endcsname {\simpleiconsmapsix\symbol{152}}
+ \expandafter\def\csname simpleicon@jovianicon\endcsname {\simpleiconsmapsix\symbol{153}}
+ \expandafter\def\csname simpleicon@jpegicon\endcsname {\simpleiconsmapsix\symbol{154}}
+ \expandafter\def\csname simpleicon@jqueryicon\endcsname {\simpleiconsmapsix\symbol{155}}
+ \expandafter\def\csname simpleicon@jrgroupicon\endcsname {\simpleiconsmapsix\symbol{156}}
+ \expandafter\def\csname simpleicon@jsdelivricon\endcsname {\simpleiconsmapsix\symbol{157}}
+ \expandafter\def\csname simpleicon@jsfiddleicon\endcsname {\simpleiconsmapsix\symbol{158}}
+ \expandafter\def\csname simpleicon@jsonicon\endcsname {\simpleiconsmapsix\symbol{159}}
+ \expandafter\def\csname simpleicon@jsonwebtokensicon\endcsname {\simpleiconsmapsix\symbol{160}}
+ \expandafter\def\csname simpleicon@jsricon\endcsname {\simpleiconsmapsix\symbol{161}}
+ \expandafter\def\csname simpleicon@jssicon\endcsname {\simpleiconsmapsix\symbol{162}}
+ \expandafter\def\csname simpleicon@juceicon\endcsname {\simpleiconsmapsix\symbol{163}}
+ \expandafter\def\csname simpleicon@juejinicon\endcsname {\simpleiconsmapsix\symbol{164}}
+ \expandafter\def\csname simpleicon@jukeicon\endcsname {\simpleiconsmapsix\symbol{165}}
+ \expandafter\def\csname simpleicon@juliaicon\endcsname {\simpleiconsmapsix\symbol{166}}
+ \expandafter\def\csname simpleicon@junipernetworksicon\endcsname {\simpleiconsmapsix\symbol{167}}
+ \expandafter\def\csname simpleicon@junit5icon\endcsname {\simpleiconsmapsix\symbol{168}}
+ \expandafter\def\csname simpleicon@jupytericon\endcsname {\simpleiconsmapsix\symbol{169}}
+ \expandafter\def\csname simpleicon@justeaticon\endcsname {\simpleiconsmapsix\symbol{170}}
+ \expandafter\def\csname simpleicon@justgivingicon\endcsname {\simpleiconsmapsix\symbol{171}}
+ \expandafter\def\csname simpleicon@k3sicon\endcsname {\simpleiconsmapsix\symbol{172}}
+ \expandafter\def\csname simpleicon@k6icon\endcsname {\simpleiconsmapsix\symbol{173}}
+ \expandafter\def\csname simpleicon@kaggleicon\endcsname {\simpleiconsmapsix\symbol{174}}
+ \expandafter\def\csname simpleicon@kagiicon\endcsname {\simpleiconsmapsix\symbol{175}}
+ \expandafter\def\csname simpleicon@kahooticon\endcsname {\simpleiconsmapsix\symbol{176}}
+ \expandafter\def\csname simpleicon@kaiosicon\endcsname {\simpleiconsmapsix\symbol{177}}
+ \expandafter\def\csname simpleicon@kakaoicon\endcsname {\simpleiconsmapsix\symbol{178}}
+ \expandafter\def\csname simpleicon@kakaotalkicon\endcsname {\simpleiconsmapsix\symbol{179}}
+ \expandafter\def\csname simpleicon@kalilinuxicon\endcsname {\simpleiconsmapsix\symbol{180}}
+ \expandafter\def\csname simpleicon@kamailioicon\endcsname {\simpleiconsmapsix\symbol{181}}
+ \expandafter\def\csname simpleicon@kanikoicon\endcsname {\simpleiconsmapsix\symbol{182}}
+ \expandafter\def\csname simpleicon@karlsruherverkehrsverbundicon\endcsname {\simpleiconsmapsix\symbol{183}}
+ \expandafter\def\csname simpleicon@kasasmarticon\endcsname {\simpleiconsmapsix\symbol{184}}
+ \expandafter\def\csname simpleicon@kashflowicon\endcsname {\simpleiconsmapsix\symbol{185}}
+ \expandafter\def\csname simpleicon@kasperskyicon\endcsname {\simpleiconsmapsix\symbol{186}}
+ \expandafter\def\csname simpleicon@katacodaicon\endcsname {\simpleiconsmapsix\symbol{187}}
+ \expandafter\def\csname simpleicon@katanaicon\endcsname {\simpleiconsmapsix\symbol{188}}
+ \expandafter\def\csname simpleicon@kauflandicon\endcsname {\simpleiconsmapsix\symbol{189}}
+ \expandafter\def\csname simpleicon@kdeicon\endcsname {\simpleiconsmapsix\symbol{190}}
+ \expandafter\def\csname simpleicon@kdenliveicon\endcsname {\simpleiconsmapsix\symbol{191}}
+ \expandafter\def\csname simpleicon@kdeplasmaicon\endcsname {\simpleiconsmapsix\symbol{192}}
+ \expandafter\def\csname simpleicon@kedroicon\endcsname {\simpleiconsmapsix\symbol{193}}
+ \expandafter\def\csname simpleicon@keeneticicon\endcsname {\simpleiconsmapsix\symbol{194}}
+ \expandafter\def\csname simpleicon@keepachangelogicon\endcsname {\simpleiconsmapsix\symbol{195}}
+ \expandafter\def\csname simpleicon@keepassxcicon\endcsname {\simpleiconsmapsix\symbol{196}}
+ \expandafter\def\csname simpleicon@keewebicon\endcsname {\simpleiconsmapsix\symbol{197}}
+ \expandafter\def\csname simpleicon@kenticoicon\endcsname {\simpleiconsmapsix\symbol{198}}
+ \expandafter\def\csname simpleicon@kerasicon\endcsname {\simpleiconsmapsix\symbol{199}}
+ \expandafter\def\csname simpleicon@keybaseicon\endcsname {\simpleiconsmapsix\symbol{200}}
+ \expandafter\def\csname simpleicon@keycdnicon\endcsname {\simpleiconsmapsix\symbol{201}}
+ \expandafter\def\csname simpleicon@keycloakicon\endcsname {\simpleiconsmapsix\symbol{202}}
+ \expandafter\def\csname simpleicon@keystoneicon\endcsname {\simpleiconsmapsix\symbol{203}}
+ \expandafter\def\csname simpleicon@kfcicon\endcsname {\simpleiconsmapsix\symbol{204}}
+ \expandafter\def\csname simpleicon@khanacademyicon\endcsname {\simpleiconsmapsix\symbol{205}}
+ \expandafter\def\csname simpleicon@khronosgroupicon\endcsname {\simpleiconsmapsix\symbol{206}}
+ \expandafter\def\csname simpleicon@kiaicon\endcsname {\simpleiconsmapsix\symbol{207}}
+ \expandafter\def\csname simpleicon@kibanaicon\endcsname {\simpleiconsmapsix\symbol{208}}
+ \expandafter\def\csname simpleicon@kicadicon\endcsname {\simpleiconsmapsix\symbol{209}}
+ \expandafter\def\csname simpleicon@kickicon\endcsname {\simpleiconsmapsix\symbol{210}}
+ \expandafter\def\csname simpleicon@kickstartericon\endcsname {\simpleiconsmapsix\symbol{211}}
+ \expandafter\def\csname simpleicon@kikicon\endcsname {\simpleiconsmapsix\symbol{212}}
+ \expandafter\def\csname simpleicon@kingstontechnologyicon\endcsname {\simpleiconsmapsix\symbol{213}}
+ \expandafter\def\csname simpleicon@kinopoiskicon\endcsname {\simpleiconsmapsix\symbol{214}}
+ \expandafter\def\csname simpleicon@kinstaicon\endcsname {\simpleiconsmapsix\symbol{215}}
+ \expandafter\def\csname simpleicon@kirbyicon\endcsname {\simpleiconsmapsix\symbol{216}}
+ \expandafter\def\csname simpleicon@kiticon\endcsname {\simpleiconsmapsix\symbol{217}}
+ \expandafter\def\csname simpleicon@kitsuicon\endcsname {\simpleiconsmapsix\symbol{218}}
+ \expandafter\def\csname simpleicon@klarnaicon\endcsname {\simpleiconsmapsix\symbol{219}}
+ \expandafter\def\csname simpleicon@klmicon\endcsname {\simpleiconsmapsix\symbol{220}}
+ \expandafter\def\csname simpleicon@klookicon\endcsname {\simpleiconsmapsix\symbol{221}}
+ \expandafter\def\csname simpleicon@knativeicon\endcsname {\simpleiconsmapsix\symbol{222}}
+ \expandafter\def\csname simpleicon@knexdotjsicon\endcsname {\simpleiconsmapsix\symbol{223}}
+ \expandafter\def\csname simpleicon@knimeicon\endcsname {\simpleiconsmapsix\symbol{224}}
+ \expandafter\def\csname simpleicon@knipicon\endcsname {\simpleiconsmapsix\symbol{225}}
+ \expandafter\def\csname simpleicon@knowledgebaseicon\endcsname {\simpleiconsmapsix\symbol{226}}
+ \expandafter\def\csname simpleicon@knownicon\endcsname {\simpleiconsmapsix\symbol{227}}
+ \expandafter\def\csname simpleicon@koaicon\endcsname {\simpleiconsmapsix\symbol{228}}
+ \expandafter\def\csname simpleicon@kocicon\endcsname {\simpleiconsmapsix\symbol{229}}
+ \expandafter\def\csname simpleicon@kodakicon\endcsname {\simpleiconsmapsix\symbol{230}}
+ \expandafter\def\csname simpleicon@kodiicon\endcsname {\simpleiconsmapsix\symbol{231}}
+ \expandafter\def\csname simpleicon@koenigseggicon\endcsname {\simpleiconsmapsix\symbol{232}}
+ \expandafter\def\csname simpleicon@kofaxicon\endcsname {\simpleiconsmapsix\symbol{233}}
+ \expandafter\def\csname simpleicon@kofiicon\endcsname {\simpleiconsmapsix\symbol{234}}
+ \expandafter\def\csname simpleicon@komooticon\endcsname {\simpleiconsmapsix\symbol{235}}
+ \expandafter\def\csname simpleicon@konamiicon\endcsname {\simpleiconsmapsix\symbol{236}}
+ \expandafter\def\csname simpleicon@kongicon\endcsname {\simpleiconsmapsix\symbol{237}}
+ \expandafter\def\csname simpleicon@kongregateicon\endcsname {\simpleiconsmapsix\symbol{238}}
+ \expandafter\def\csname simpleicon@konvaicon\endcsname {\simpleiconsmapsix\symbol{239}}
+ \expandafter\def\csname simpleicon@kotlinicon\endcsname {\simpleiconsmapsix\symbol{240}}
+ \expandafter\def\csname simpleicon@koyebicon\endcsname {\simpleiconsmapsix\symbol{241}}
+ \expandafter\def\csname simpleicon@kritaicon\endcsname {\simpleiconsmapsix\symbol{242}}
+ \expandafter\def\csname simpleicon@ktmicon\endcsname {\simpleiconsmapsix\symbol{243}}
+ \expandafter\def\csname simpleicon@ktoricon\endcsname {\simpleiconsmapsix\symbol{244}}
+ \expandafter\def\csname simpleicon@kuaishouicon\endcsname {\simpleiconsmapsix\symbol{245}}
+ \expandafter\def\csname simpleicon@kubernetesicon\endcsname {\simpleiconsmapsix\symbol{246}}
+ \expandafter\def\csname simpleicon@kubuntuicon\endcsname {\simpleiconsmapsix\symbol{247}}
+ \expandafter\def\csname simpleicon@kucoinicon\endcsname {\simpleiconsmapsix\symbol{248}}
+ \expandafter\def\csname simpleicon@kumaicon\endcsname {\simpleiconsmapsix\symbol{249}}
+ \expandafter\def\csname simpleicon@kununuicon\endcsname {\simpleiconsmapsix\symbol{250}}
+ \expandafter\def\csname simpleicon@kuulaicon\endcsname {\simpleiconsmapsix\symbol{251}}
+ \expandafter\def\csname simpleicon@kxicon\endcsname {\simpleiconsmapsix\symbol{252}}
+ \expandafter\def\csname simpleicon@kyoceraicon\endcsname {\simpleiconsmapsix\symbol{253}}
+ \expandafter\def\csname simpleicon@labviewicon\endcsname {\simpleiconsmapsix\symbol{254}}
+ \expandafter\def\csname simpleicon@ladaicon\endcsname {\simpleiconsmapsix\symbol{255}}
+ \expandafter\def\csname simpleicon@lamborghiniicon\endcsname {\simpleiconsmapseven\symbol{0}}
+ \expandafter\def\csname simpleicon@landrovericon\endcsname {\simpleiconsmapseven\symbol{1}}
+ \expandafter\def\csname simpleicon@langchainicon\endcsname {\simpleiconsmapseven\symbol{2}}
+ \expandafter\def\csname simpleicon@languagetoolicon\endcsname {\simpleiconsmapseven\symbol{3}}
+ \expandafter\def\csname simpleicon@lapceicon\endcsname {\simpleiconsmapseven\symbol{4}}
+ \expandafter\def\csname simpleicon@laragonicon\endcsname {\simpleiconsmapseven\symbol{5}}
+ \expandafter\def\csname simpleicon@laravelicon\endcsname {\simpleiconsmapseven\symbol{6}}
+ \expandafter\def\csname simpleicon@laravelhorizonicon\endcsname {\simpleiconsmapseven\symbol{7}}
+ \expandafter\def\csname simpleicon@laravelnovaicon\endcsname {\simpleiconsmapseven\symbol{8}}
+ \expandafter\def\csname simpleicon@lastdotfmicon\endcsname {\simpleiconsmapseven\symbol{9}}
+ \expandafter\def\csname simpleicon@lastpassicon\endcsname {\simpleiconsmapseven\symbol{10}}
+ \expandafter\def\csname simpleicon@latexicon\endcsname {\simpleiconsmapseven\symbol{11}}
+ \expandafter\def\csname simpleicon@launchpadicon\endcsname {\simpleiconsmapseven\symbol{12}}
+ \expandafter\def\csname simpleicon@lazarusicon\endcsname {\simpleiconsmapseven\symbol{13}}
+ \expandafter\def\csname simpleicon@lazyvimicon\endcsname {\simpleiconsmapseven\symbol{14}}
+ \expandafter\def\csname simpleicon@lbryicon\endcsname {\simpleiconsmapseven\symbol{15}}
+ \expandafter\def\csname simpleicon@leaderpriceicon\endcsname {\simpleiconsmapseven\symbol{16}}
+ \expandafter\def\csname simpleicon@leafleticon\endcsname {\simpleiconsmapseven\symbol{17}}
+ \expandafter\def\csname simpleicon@leagueoflegendsicon\endcsname {\simpleiconsmapseven\symbol{18}}
+ \expandafter\def\csname simpleicon@leanpubicon\endcsname {\simpleiconsmapseven\symbol{19}}
+ \expandafter\def\csname simpleicon@leetcodeicon\endcsname {\simpleiconsmapseven\symbol{20}}
+ \expandafter\def\csname simpleicon@lefthookicon\endcsname {\simpleiconsmapseven\symbol{21}}
+ \expandafter\def\csname simpleicon@legacygamesicon\endcsname {\simpleiconsmapseven\symbol{22}}
+ \expandafter\def\csname simpleicon@leicaicon\endcsname {\simpleiconsmapseven\symbol{23}}
+ \expandafter\def\csname simpleicon@lemmyicon\endcsname {\simpleiconsmapseven\symbol{24}}
+ \expandafter\def\csname simpleicon@lemonsqueezyicon\endcsname {\simpleiconsmapseven\symbol{25}}
+ \expandafter\def\csname simpleicon@lenovoicon\endcsname {\simpleiconsmapseven\symbol{26}}
+ \expandafter\def\csname simpleicon@lensicon\endcsname {\simpleiconsmapseven\symbol{27}}
+ \expandafter\def\csname simpleicon@leptosicon\endcsname {\simpleiconsmapseven\symbol{28}}
+ \expandafter\def\csname simpleicon@lequipeicon\endcsname {\simpleiconsmapseven\symbol{29}}
+ \expandafter\def\csname simpleicon@lernaicon\endcsname {\simpleiconsmapseven\symbol{30}}
+ \expandafter\def\csname simpleicon@leroymerlinicon\endcsname {\simpleiconsmapseven\symbol{31}}
+ \expandafter\def\csname simpleicon@leslibrairesicon\endcsname {\simpleiconsmapseven\symbol{32}}
+ \expandafter\def\csname simpleicon@lessicon\endcsname {\simpleiconsmapseven\symbol{33}}
+ \expandafter\def\csname simpleicon@letsencrypticon\endcsname {\simpleiconsmapseven\symbol{34}}
+ \expandafter\def\csname simpleicon@letterboxdicon\endcsname {\simpleiconsmapseven\symbol{35}}
+ \expandafter\def\csname simpleicon@levelsdotfyiicon\endcsname {\simpleiconsmapseven\symbol{36}}
+ \expandafter\def\csname simpleicon@lgicon\endcsname {\simpleiconsmapseven\symbol{37}}
+ \expandafter\def\csname simpleicon@liberadotchaticon\endcsname {\simpleiconsmapseven\symbol{38}}
+ \expandafter\def\csname simpleicon@liberapayicon\endcsname {\simpleiconsmapseven\symbol{39}}
+ \expandafter\def\csname simpleicon@librariesdotioicon\endcsname {\simpleiconsmapseven\symbol{40}}
+ \expandafter\def\csname simpleicon@librarythingicon\endcsname {\simpleiconsmapseven\symbol{41}}
+ \expandafter\def\csname simpleicon@libreofficeicon\endcsname {\simpleiconsmapseven\symbol{42}}
+ \expandafter\def\csname simpleicon@libreofficebaseicon\endcsname {\simpleiconsmapseven\symbol{43}}
+ \expandafter\def\csname simpleicon@libreofficecalcicon\endcsname {\simpleiconsmapseven\symbol{44}}
+ \expandafter\def\csname simpleicon@libreofficedrawicon\endcsname {\simpleiconsmapseven\symbol{45}}
+ \expandafter\def\csname simpleicon@libreofficeimpressicon\endcsname {\simpleiconsmapseven\symbol{46}}
+ \expandafter\def\csname simpleicon@libreofficemathicon\endcsname {\simpleiconsmapseven\symbol{47}}
+ \expandafter\def\csname simpleicon@libreofficewritericon\endcsname {\simpleiconsmapseven\symbol{48}}
+ \expandafter\def\csname simpleicon@libretranslateicon\endcsname {\simpleiconsmapseven\symbol{49}}
+ \expandafter\def\csname simpleicon@libretubeicon\endcsname {\simpleiconsmapseven\symbol{50}}
+ \expandafter\def\csname simpleicon@librewolficon\endcsname {\simpleiconsmapseven\symbol{51}}
+ \expandafter\def\csname simpleicon@libuvicon\endcsname {\simpleiconsmapseven\symbol{52}}
+ \expandafter\def\csname simpleicon@lichessicon\endcsname {\simpleiconsmapseven\symbol{53}}
+ \expandafter\def\csname simpleicon@lidlicon\endcsname {\simpleiconsmapseven\symbol{54}}
+ \expandafter\def\csname simpleicon@lifxicon\endcsname {\simpleiconsmapseven\symbol{55}}
+ \expandafter\def\csname simpleicon@lightburnicon\endcsname {\simpleiconsmapseven\symbol{56}}
+ \expandafter\def\csname simpleicon@lighthouseicon\endcsname {\simpleiconsmapseven\symbol{57}}
+ \expandafter\def\csname simpleicon@lightningicon\endcsname {\simpleiconsmapseven\symbol{58}}
+ \expandafter\def\csname simpleicon@limesurveyicon\endcsname {\simpleiconsmapseven\symbol{59}}
+ \expandafter\def\csname simpleicon@lineicon\endcsname {\simpleiconsmapseven\symbol{60}}
+ \expandafter\def\csname simpleicon@lineageosicon\endcsname {\simpleiconsmapseven\symbol{61}}
+ \expandafter\def\csname simpleicon@linearicon\endcsname {\simpleiconsmapseven\symbol{62}}
+ \expandafter\def\csname simpleicon@liningicon\endcsname {\simpleiconsmapseven\symbol{63}}
+ \expandafter\def\csname simpleicon@linkedinicon\endcsname {\simpleiconsmapseven\symbol{64}}
+ \expandafter\def\csname simpleicon@linkerdicon\endcsname {\simpleiconsmapseven\symbol{65}}
+ \expandafter\def\csname simpleicon@linkfireicon\endcsname {\simpleiconsmapseven\symbol{66}}
+ \expandafter\def\csname simpleicon@linksysicon\endcsname {\simpleiconsmapseven\symbol{67}}
+ \expandafter\def\csname simpleicon@linktreeicon\endcsname {\simpleiconsmapseven\symbol{68}}
+ \expandafter\def\csname simpleicon@lintcodeicon\endcsname {\simpleiconsmapseven\symbol{69}}
+ \expandafter\def\csname simpleicon@linuxicon\endcsname {\simpleiconsmapseven\symbol{70}}
+ \expandafter\def\csname simpleicon@linuxcontainersicon\endcsname {\simpleiconsmapseven\symbol{71}}
+ \expandafter\def\csname simpleicon@linuxfoundationicon\endcsname {\simpleiconsmapseven\symbol{72}}
+ \expandafter\def\csname simpleicon@linuxminticon\endcsname {\simpleiconsmapseven\symbol{73}}
+ \expandafter\def\csname simpleicon@linuxprofessionalinstituteicon\endcsname {\simpleiconsmapseven\symbol{74}}
+ \expandafter\def\csname simpleicon@linuxservericon\endcsname {\simpleiconsmapseven\symbol{75}}
+ \expandafter\def\csname simpleicon@lionairicon\endcsname {\simpleiconsmapseven\symbol{76}}
+ \expandafter\def\csname simpleicon@liquibaseicon\endcsname {\simpleiconsmapseven\symbol{77}}
+ \expandafter\def\csname simpleicon@listmonkicon\endcsname {\simpleiconsmapseven\symbol{78}}
+ \expandafter\def\csname simpleicon@liticon\endcsname {\simpleiconsmapseven\symbol{79}}
+ \expandafter\def\csname simpleicon@litecoinicon\endcsname {\simpleiconsmapseven\symbol{80}}
+ \expandafter\def\csname simpleicon@literalicon\endcsname {\simpleiconsmapseven\symbol{81}}
+ \expandafter\def\csname simpleicon@litiengineicon\endcsname {\simpleiconsmapseven\symbol{82}}
+ \expandafter\def\csname simpleicon@livechaticon\endcsname {\simpleiconsmapseven\symbol{83}}
+ \expandafter\def\csname simpleicon@livejournalicon\endcsname {\simpleiconsmapseven\symbol{84}}
+ \expandafter\def\csname simpleicon@livewireicon\endcsname {\simpleiconsmapseven\symbol{85}}
+ \expandafter\def\csname simpleicon@llvmicon\endcsname {\simpleiconsmapseven\symbol{86}}
+ \expandafter\def\csname simpleicon@lmmsicon\endcsname {\simpleiconsmapseven\symbol{87}}
+ \expandafter\def\csname simpleicon@lobstersicon\endcsname {\simpleiconsmapseven\symbol{88}}
+ \expandafter\def\csname simpleicon@localicon\endcsname {\simpleiconsmapseven\symbol{89}}
+ \expandafter\def\csname simpleicon@lodashicon\endcsname {\simpleiconsmapseven\symbol{90}}
+ \expandafter\def\csname simpleicon@logitechicon\endcsname {\simpleiconsmapseven\symbol{91}}
+ \expandafter\def\csname simpleicon@logitechgicon\endcsname {\simpleiconsmapseven\symbol{92}}
+ \expandafter\def\csname simpleicon@logmeinicon\endcsname {\simpleiconsmapseven\symbol{93}}
+ \expandafter\def\csname simpleicon@logseqicon\endcsname {\simpleiconsmapseven\symbol{94}}
+ \expandafter\def\csname simpleicon@logstashicon\endcsname {\simpleiconsmapseven\symbol{95}}
+ \expandafter\def\csname simpleicon@lookericon\endcsname {\simpleiconsmapseven\symbol{96}}
+ \expandafter\def\csname simpleicon@loomicon\endcsname {\simpleiconsmapseven\symbol{97}}
+ \expandafter\def\csname simpleicon@loopicon\endcsname {\simpleiconsmapseven\symbol{98}}
+ \expandafter\def\csname simpleicon@loopbackicon\endcsname {\simpleiconsmapseven\symbol{99}}
+ \expandafter\def\csname simpleicon@lootcrateicon\endcsname {\simpleiconsmapseven\symbol{100}}
+ \expandafter\def\csname simpleicon@lospecicon\endcsname {\simpleiconsmapseven\symbol{101}}
+ \expandafter\def\csname simpleicon@lotpolishairlinesicon\endcsname {\simpleiconsmapseven\symbol{102}}
+ \expandafter\def\csname simpleicon@ltspiceicon\endcsname {\simpleiconsmapseven\symbol{103}}
+ \expandafter\def\csname simpleicon@luaicon\endcsname {\simpleiconsmapseven\symbol{104}}
+ \expandafter\def\csname simpleicon@lubuntuicon\endcsname {\simpleiconsmapseven\symbol{105}}
+ \expandafter\def\csname simpleicon@luciaicon\endcsname {\simpleiconsmapseven\symbol{106}}
+ \expandafter\def\csname simpleicon@lucidicon\endcsname {\simpleiconsmapseven\symbol{107}}
+ \expandafter\def\csname simpleicon@lucideicon\endcsname {\simpleiconsmapseven\symbol{108}}
+ \expandafter\def\csname simpleicon@ludwigicon\endcsname {\simpleiconsmapseven\symbol{109}}
+ \expandafter\def\csname simpleicon@lufthansaicon\endcsname {\simpleiconsmapseven\symbol{110}}
+ \expandafter\def\csname simpleicon@lumenicon\endcsname {\simpleiconsmapseven\symbol{111}}
+ \expandafter\def\csname simpleicon@lunacyicon\endcsname {\simpleiconsmapseven\symbol{112}}
+ \expandafter\def\csname simpleicon@lutrisicon\endcsname {\simpleiconsmapseven\symbol{113}}
+ \expandafter\def\csname simpleicon@lydiaicon\endcsname {\simpleiconsmapseven\symbol{114}}
+ \expandafter\def\csname simpleicon@lyfticon\endcsname {\simpleiconsmapseven\symbol{115}}
+ \expandafter\def\csname simpleicon@maasicon\endcsname {\simpleiconsmapseven\symbol{116}}
+ \expandafter\def\csname simpleicon@macosicon\endcsname {\simpleiconsmapseven\symbol{117}}
+ \expandafter\def\csname simpleicon@macpawicon\endcsname {\simpleiconsmapseven\symbol{118}}
+ \expandafter\def\csname simpleicon@macysicon\endcsname {\simpleiconsmapseven\symbol{119}}
+ \expandafter\def\csname simpleicon@magasinsuicon\endcsname {\simpleiconsmapseven\symbol{120}}
+ \expandafter\def\csname simpleicon@magentoicon\endcsname {\simpleiconsmapseven\symbol{121}}
+ \expandafter\def\csname simpleicon@magicicon\endcsname {\simpleiconsmapseven\symbol{122}}
+ \expandafter\def\csname simpleicon@magiskicon\endcsname {\simpleiconsmapseven\symbol{123}}
+ \expandafter\def\csname simpleicon@mahindraicon\endcsname {\simpleiconsmapseven\symbol{124}}
+ \expandafter\def\csname simpleicon@mailboxdotorgicon\endcsname {\simpleiconsmapseven\symbol{125}}
+ \expandafter\def\csname simpleicon@mailchimpicon\endcsname {\simpleiconsmapseven\symbol{126}}
+ \expandafter\def\csname simpleicon@maildotcomicon\endcsname {\simpleiconsmapseven\symbol{127}}
+ \expandafter\def\csname simpleicon@maildotruicon\endcsname {\simpleiconsmapseven\symbol{128}}
+ \expandafter\def\csname simpleicon@mailgunicon\endcsname {\simpleiconsmapseven\symbol{129}}
+ \expandafter\def\csname simpleicon@mailtrapicon\endcsname {\simpleiconsmapseven\symbol{130}}
+ \expandafter\def\csname simpleicon@mainwpicon\endcsname {\simpleiconsmapseven\symbol{131}}
+ \expandafter\def\csname simpleicon@majorleaguehackingicon\endcsname {\simpleiconsmapseven\symbol{132}}
+ \expandafter\def\csname simpleicon@makeicon\endcsname {\simpleiconsmapseven\symbol{133}}
+ \expandafter\def\csname simpleicon@makerboticon\endcsname {\simpleiconsmapseven\symbol{134}}
+ \expandafter\def\csname simpleicon@malticon\endcsname {\simpleiconsmapseven\symbol{135}}
+ \expandafter\def\csname simpleicon@malwarebytesicon\endcsname {\simpleiconsmapseven\symbol{136}}
+ \expandafter\def\csname simpleicon@mambauiicon\endcsname {\simpleiconsmapseven\symbol{137}}
+ \expandafter\def\csname simpleicon@mampicon\endcsname {\simpleiconsmapseven\symbol{138}}
+ \expandafter\def\csname simpleicon@manicon\endcsname {\simpleiconsmapseven\symbol{139}}
+ \expandafter\def\csname simpleicon@manageiqicon\endcsname {\simpleiconsmapseven\symbol{140}}
+ \expandafter\def\csname simpleicon@manjaroicon\endcsname {\simpleiconsmapseven\symbol{141}}
+ \expandafter\def\csname simpleicon@mantineicon\endcsname {\simpleiconsmapseven\symbol{142}}
+ \expandafter\def\csname simpleicon@mapboxicon\endcsname {\simpleiconsmapseven\symbol{143}}
+ \expandafter\def\csname simpleicon@maplibreicon\endcsname {\simpleiconsmapseven\symbol{144}}
+ \expandafter\def\csname simpleicon@mariadbicon\endcsname {\simpleiconsmapseven\symbol{145}}
+ \expandafter\def\csname simpleicon@mariadbfoundationicon\endcsname {\simpleiconsmapseven\symbol{146}}
+ \expandafter\def\csname simpleicon@markdownicon\endcsname {\simpleiconsmapseven\symbol{147}}
+ \expandafter\def\csname simpleicon@marketoicon\endcsname {\simpleiconsmapseven\symbol{148}}
+ \expandafter\def\csname simpleicon@markoicon\endcsname {\simpleiconsmapseven\symbol{149}}
+ \expandafter\def\csname simpleicon@marriotticon\endcsname {\simpleiconsmapseven\symbol{150}}
+ \expandafter\def\csname simpleicon@marvelappicon\endcsname {\simpleiconsmapseven\symbol{151}}
+ \expandafter\def\csname simpleicon@maseratiicon\endcsname {\simpleiconsmapseven\symbol{152}}
+ \expandafter\def\csname simpleicon@mastercardicon\endcsname {\simpleiconsmapseven\symbol{153}}
+ \expandafter\def\csname simpleicon@mastercomfigicon\endcsname {\simpleiconsmapseven\symbol{154}}
+ \expandafter\def\csname simpleicon@mastodonicon\endcsname {\simpleiconsmapseven\symbol{155}}
+ \expandafter\def\csname simpleicon@materialdesignicon\endcsname {\simpleiconsmapseven\symbol{156}}
+ \expandafter\def\csname simpleicon@materialdesigniconsicon\endcsname {\simpleiconsmapseven\symbol{157}}
+ \expandafter\def\csname simpleicon@materialformkdocsicon\endcsname {\simpleiconsmapseven\symbol{158}}
+ \expandafter\def\csname simpleicon@matillionicon\endcsname {\simpleiconsmapseven\symbol{159}}
+ \expandafter\def\csname simpleicon@matomoicon\endcsname {\simpleiconsmapseven\symbol{160}}
+ \expandafter\def\csname simpleicon@matrixicon\endcsname {\simpleiconsmapseven\symbol{161}}
+ \expandafter\def\csname simpleicon@matterdotjsicon\endcsname {\simpleiconsmapseven\symbol{162}}
+ \expandafter\def\csname simpleicon@mattermosticon\endcsname {\simpleiconsmapseven\symbol{163}}
+ \expandafter\def\csname simpleicon@matterneticon\endcsname {\simpleiconsmapseven\symbol{164}}
+ \expandafter\def\csname simpleicon@mauticicon\endcsname {\simpleiconsmapseven\symbol{165}}
+ \expandafter\def\csname simpleicon@maxicon\endcsname {\simpleiconsmapseven\symbol{166}}
+ \expandafter\def\csname simpleicon@maxplanckgesellschafticon\endcsname {\simpleiconsmapseven\symbol{167}}
+ \expandafter\def\csname simpleicon@maytagicon\endcsname {\simpleiconsmapseven\symbol{168}}
+ \expandafter\def\csname simpleicon@mazdaicon\endcsname {\simpleiconsmapseven\symbol{169}}
+ \expandafter\def\csname simpleicon@mcafeeicon\endcsname {\simpleiconsmapseven\symbol{170}}
+ \expandafter\def\csname simpleicon@mcdonaldsicon\endcsname {\simpleiconsmapseven\symbol{171}}
+ \expandafter\def\csname simpleicon@mclarenicon\endcsname {\simpleiconsmapseven\symbol{172}}
+ \expandafter\def\csname simpleicon@mdbookicon\endcsname {\simpleiconsmapseven\symbol{173}}
+ \expandafter\def\csname simpleicon@mdnwebdocsicon\endcsname {\simpleiconsmapseven\symbol{174}}
+ \expandafter\def\csname simpleicon@mdxicon\endcsname {\simpleiconsmapseven\symbol{175}}
+ \expandafter\def\csname simpleicon@mediafireicon\endcsname {\simpleiconsmapseven\symbol{176}}
+ \expandafter\def\csname simpleicon@mediamarkticon\endcsname {\simpleiconsmapseven\symbol{177}}
+ \expandafter\def\csname simpleicon@mediapipeicon\endcsname {\simpleiconsmapseven\symbol{178}}
+ \expandafter\def\csname simpleicon@mediatekicon\endcsname {\simpleiconsmapseven\symbol{179}}
+ \expandafter\def\csname simpleicon@medibangpainticon\endcsname {\simpleiconsmapseven\symbol{180}}
+ \expandafter\def\csname simpleicon@mediumicon\endcsname {\simpleiconsmapseven\symbol{181}}
+ \expandafter\def\csname simpleicon@medusaicon\endcsname {\simpleiconsmapseven\symbol{182}}
+ \expandafter\def\csname simpleicon@meetupicon\endcsname {\simpleiconsmapseven\symbol{183}}
+ \expandafter\def\csname simpleicon@megaicon\endcsname {\simpleiconsmapseven\symbol{184}}
+ \expandafter\def\csname simpleicon@meilisearchicon\endcsname {\simpleiconsmapseven\symbol{185}}
+ \expandafter\def\csname simpleicon@meituanicon\endcsname {\simpleiconsmapseven\symbol{186}}
+ \expandafter\def\csname simpleicon@meizuicon\endcsname {\simpleiconsmapseven\symbol{187}}
+ \expandafter\def\csname simpleicon@mendeleyicon\endcsname {\simpleiconsmapseven\symbol{188}}
+ \expandafter\def\csname simpleicon@mentorcruiseicon\endcsname {\simpleiconsmapseven\symbol{189}}
+ \expandafter\def\csname simpleicon@mercadopagoicon\endcsname {\simpleiconsmapseven\symbol{190}}
+ \expandafter\def\csname simpleicon@mercedesicon\endcsname {\simpleiconsmapseven\symbol{191}}
+ \expandafter\def\csname simpleicon@merckicon\endcsname {\simpleiconsmapseven\symbol{192}}
+ \expandafter\def\csname simpleicon@mercurialicon\endcsname {\simpleiconsmapseven\symbol{193}}
+ \expandafter\def\csname simpleicon@mermaidicon\endcsname {\simpleiconsmapseven\symbol{194}}
+ \expandafter\def\csname simpleicon@messengericon\endcsname {\simpleiconsmapseven\symbol{195}}
+ \expandafter\def\csname simpleicon@metaicon\endcsname {\simpleiconsmapseven\symbol{196}}
+ \expandafter\def\csname simpleicon@metabaseicon\endcsname {\simpleiconsmapseven\symbol{197}}
+ \expandafter\def\csname simpleicon@metacriticicon\endcsname {\simpleiconsmapseven\symbol{198}}
+ \expandafter\def\csname simpleicon@metafiltericon\endcsname {\simpleiconsmapseven\symbol{199}}
+ \expandafter\def\csname simpleicon@metasploiticon\endcsname {\simpleiconsmapseven\symbol{200}}
+ \expandafter\def\csname simpleicon@meteoricon\endcsname {\simpleiconsmapseven\symbol{201}}
+ \expandafter\def\csname simpleicon@metroicon\endcsname {\simpleiconsmapseven\symbol{202}}
+ \expandafter\def\csname simpleicon@metrodelaciudaddemexicoicon\endcsname {\simpleiconsmapseven\symbol{203}}
+ \expandafter\def\csname simpleicon@metrodemadridicon\endcsname {\simpleiconsmapseven\symbol{204}}
+ \expandafter\def\csname simpleicon@metrodeparisicon\endcsname {\simpleiconsmapseven\symbol{205}}
+ \expandafter\def\csname simpleicon@meweicon\endcsname {\simpleiconsmapseven\symbol{206}}
+ \expandafter\def\csname simpleicon@mgicon\endcsname {\simpleiconsmapseven\symbol{207}}
+ \expandafter\def\csname simpleicon@microbiticon\endcsname {\simpleiconsmapseven\symbol{208}}
+ \expandafter\def\csname simpleicon@microdotblogicon\endcsname {\simpleiconsmapseven\symbol{209}}
+ \expandafter\def\csname simpleicon@microeditoricon\endcsname {\simpleiconsmapseven\symbol{210}}
+ \expandafter\def\csname simpleicon@microgeneticsicon\endcsname {\simpleiconsmapseven\symbol{211}}
+ \expandafter\def\csname simpleicon@micropythonicon\endcsname {\simpleiconsmapseven\symbol{212}}
+ \expandafter\def\csname simpleicon@microstationicon\endcsname {\simpleiconsmapseven\symbol{213}}
+ \expandafter\def\csname simpleicon@microstrategyicon\endcsname {\simpleiconsmapseven\symbol{214}}
+ \expandafter\def\csname simpleicon@midiicon\endcsname {\simpleiconsmapseven\symbol{215}}
+ \expandafter\def\csname simpleicon@migaduicon\endcsname {\simpleiconsmapseven\symbol{216}}
+ \expandafter\def\csname simpleicon@mihoyoicon\endcsname {\simpleiconsmapseven\symbol{217}}
+ \expandafter\def\csname simpleicon@mikrotikicon\endcsname {\simpleiconsmapseven\symbol{218}}
+ \expandafter\def\csname simpleicon@milanoteicon\endcsname {\simpleiconsmapseven\symbol{219}}
+ \expandafter\def\csname simpleicon@milvusicon\endcsname {\simpleiconsmapseven\symbol{220}}
+ \expandafter\def\csname simpleicon@mindsicon\endcsname {\simpleiconsmapseven\symbol{221}}
+ \expandafter\def\csname simpleicon@minetesticon\endcsname {\simpleiconsmapseven\symbol{222}}
+ \expandafter\def\csname simpleicon@mingww64icon\endcsname {\simpleiconsmapseven\symbol{223}}
+ \expandafter\def\csname simpleicon@miniicon\endcsname {\simpleiconsmapseven\symbol{224}}
+ \expandafter\def\csname simpleicon@minioicon\endcsname {\simpleiconsmapseven\symbol{225}}
+ \expandafter\def\csname simpleicon@mintlifyicon\endcsname {\simpleiconsmapseven\symbol{226}}
+ \expandafter\def\csname simpleicon@minutemailericon\endcsname {\simpleiconsmapseven\symbol{227}}
+ \expandafter\def\csname simpleicon@mirahezeicon\endcsname {\simpleiconsmapseven\symbol{228}}
+ \expandafter\def\csname simpleicon@miroicon\endcsname {\simpleiconsmapseven\symbol{229}}
+ \expandafter\def\csname simpleicon@misskeyicon\endcsname {\simpleiconsmapseven\symbol{230}}
+ \expandafter\def\csname simpleicon@mitsubishiicon\endcsname {\simpleiconsmapseven\symbol{231}}
+ \expandafter\def\csname simpleicon@mixicon\endcsname {\simpleiconsmapseven\symbol{232}}
+ \expandafter\def\csname simpleicon@mixcloudicon\endcsname {\simpleiconsmapseven\symbol{233}}
+ \expandafter\def\csname simpleicon@mixpanelicon\endcsname {\simpleiconsmapseven\symbol{234}}
+ \expandafter\def\csname simpleicon@mlbicon\endcsname {\simpleiconsmapseven\symbol{235}}
+ \expandafter\def\csname simpleicon@mlflowicon\endcsname {\simpleiconsmapseven\symbol{236}}
+ \expandafter\def\csname simpleicon@mobxicon\endcsname {\simpleiconsmapseven\symbol{237}}
+ \expandafter\def\csname simpleicon@mobxstatetreeicon\endcsname {\simpleiconsmapseven\symbol{238}}
+ \expandafter\def\csname simpleicon@mochaicon\endcsname {\simpleiconsmapseven\symbol{239}}
+ \expandafter\def\csname simpleicon@mockserviceworkericon\endcsname {\simpleiconsmapseven\symbol{240}}
+ \expandafter\def\csname simpleicon@modalicon\endcsname {\simpleiconsmapseven\symbol{241}}
+ \expandafter\def\csname simpleicon@modinicon\endcsname {\simpleiconsmapseven\symbol{242}}
+ \expandafter\def\csname simpleicon@modrinthicon\endcsname {\simpleiconsmapseven\symbol{243}}
+ \expandafter\def\csname simpleicon@modxicon\endcsname {\simpleiconsmapseven\symbol{244}}
+ \expandafter\def\csname simpleicon@moleculericon\endcsname {\simpleiconsmapseven\symbol{245}}
+ \expandafter\def\csname simpleicon@momenteoicon\endcsname {\simpleiconsmapseven\symbol{246}}
+ \expandafter\def\csname simpleicon@moneroicon\endcsname {\simpleiconsmapseven\symbol{247}}
+ \expandafter\def\csname simpleicon@moneygramicon\endcsname {\simpleiconsmapseven\symbol{248}}
+ \expandafter\def\csname simpleicon@mongodbicon\endcsname {\simpleiconsmapseven\symbol{249}}
+ \expandafter\def\csname simpleicon@mongooseicon\endcsname {\simpleiconsmapseven\symbol{250}}
+ \expandafter\def\csname simpleicon@mongoosedotwsicon\endcsname {\simpleiconsmapseven\symbol{251}}
+ \expandafter\def\csname simpleicon@monicaicon\endcsname {\simpleiconsmapseven\symbol{252}}
+ \expandafter\def\csname simpleicon@monkeytieicon\endcsname {\simpleiconsmapseven\symbol{253}}
+ \expandafter\def\csname simpleicon@monkeytypeicon\endcsname {\simpleiconsmapseven\symbol{254}}
+ \expandafter\def\csname simpleicon@monogameicon\endcsname {\simpleiconsmapseven\symbol{255}}
+ \expandafter\def\csname simpleicon@monoprixicon\endcsname {\simpleiconsmapeight\symbol{0}}
+ \expandafter\def\csname simpleicon@monstericon\endcsname {\simpleiconsmapeight\symbol{1}}
+ \expandafter\def\csname simpleicon@monzoicon\endcsname {\simpleiconsmapeight\symbol{2}}
+ \expandafter\def\csname simpleicon@mooicon\endcsname {\simpleiconsmapeight\symbol{3}}
+ \expandafter\def\csname simpleicon@moodleicon\endcsname {\simpleiconsmapeight\symbol{4}}
+ \expandafter\def\csname simpleicon@moonrepoicon\endcsname {\simpleiconsmapeight\symbol{5}}
+ \expandafter\def\csname simpleicon@moqicon\endcsname {\simpleiconsmapeight\symbol{6}}
+ \expandafter\def\csname simpleicon@moqupsicon\endcsname {\simpleiconsmapeight\symbol{7}}
+ \expandafter\def\csname simpleicon@morrisonsicon\endcsname {\simpleiconsmapeight\symbol{8}}
+ \expandafter\def\csname simpleicon@moscowmetroicon\endcsname {\simpleiconsmapeight\symbol{9}}
+ \expandafter\def\csname simpleicon@motorolaicon\endcsname {\simpleiconsmapeight\symbol{10}}
+ \expandafter\def\csname simpleicon@mozillaicon\endcsname {\simpleiconsmapeight\symbol{11}}
+ \expandafter\def\csname simpleicon@mpvicon\endcsname {\simpleiconsmapeight\symbol{12}}
+ \expandafter\def\csname simpleicon@mqtticon\endcsname {\simpleiconsmapeight\symbol{13}}
+ \expandafter\def\csname simpleicon@msiicon\endcsname {\simpleiconsmapeight\symbol{14}}
+ \expandafter\def\csname simpleicon@msibusinessicon\endcsname {\simpleiconsmapeight\symbol{15}}
+ \expandafter\def\csname simpleicon@mtaicon\endcsname {\simpleiconsmapeight\symbol{16}}
+ \expandafter\def\csname simpleicon@mtricon\endcsname {\simpleiconsmapeight\symbol{17}}
+ \expandafter\def\csname simpleicon@mubiicon\endcsname {\simpleiconsmapeight\symbol{18}}
+ \expandafter\def\csname simpleicon@muiicon\endcsname {\simpleiconsmapeight\symbol{19}}
+ \expandafter\def\csname simpleicon@mulesofticon\endcsname {\simpleiconsmapeight\symbol{20}}
+ \expandafter\def\csname simpleicon@mullericon\endcsname {\simpleiconsmapeight\symbol{21}}
+ \expandafter\def\csname simpleicon@multisimicon\endcsname {\simpleiconsmapeight\symbol{22}}
+ \expandafter\def\csname simpleicon@mumbleicon\endcsname {\simpleiconsmapeight\symbol{23}}
+ \expandafter\def\csname simpleicon@muoicon\endcsname {\simpleiconsmapeight\symbol{24}}
+ \expandafter\def\csname simpleicon@muralicon\endcsname {\simpleiconsmapeight\symbol{25}}
+ \expandafter\def\csname simpleicon@musescoreicon\endcsname {\simpleiconsmapeight\symbol{26}}
+ \expandafter\def\csname simpleicon@musicbrainzicon\endcsname {\simpleiconsmapeight\symbol{27}}
+ \expandafter\def\csname simpleicon@mxlinuxicon\endcsname {\simpleiconsmapeight\symbol{28}}
+ \expandafter\def\csname simpleicon@myanimelisticon\endcsname {\simpleiconsmapeight\symbol{29}}
+ \expandafter\def\csname simpleicon@mygeticon\endcsname {\simpleiconsmapeight\symbol{30}}
+ \expandafter\def\csname simpleicon@myobicon\endcsname {\simpleiconsmapeight\symbol{31}}
+ \expandafter\def\csname simpleicon@myspaceicon\endcsname {\simpleiconsmapeight\symbol{32}}
+ \expandafter\def\csname simpleicon@mysqlicon\endcsname {\simpleiconsmapeight\symbol{33}}
+ \expandafter\def\csname simpleicon@n26icon\endcsname {\simpleiconsmapeight\symbol{34}}
+ \expandafter\def\csname simpleicon@n8nicon\endcsname {\simpleiconsmapeight\symbol{35}}
+ \expandafter\def\csname simpleicon@namebaseicon\endcsname {\simpleiconsmapeight\symbol{36}}
+ \expandafter\def\csname simpleicon@namecheapicon\endcsname {\simpleiconsmapeight\symbol{37}}
+ \expandafter\def\csname simpleicon@namemcicon\endcsname {\simpleiconsmapeight\symbol{38}}
+ \expandafter\def\csname simpleicon@namesiloicon\endcsname {\simpleiconsmapeight\symbol{39}}
+ \expandafter\def\csname simpleicon@namuwikiicon\endcsname {\simpleiconsmapeight\symbol{40}}
+ \expandafter\def\csname simpleicon@nanoicon\endcsname {\simpleiconsmapeight\symbol{41}}
+ \expandafter\def\csname simpleicon@nanostoresicon\endcsname {\simpleiconsmapeight\symbol{42}}
+ \expandafter\def\csname simpleicon@nasaicon\endcsname {\simpleiconsmapeight\symbol{43}}
+ \expandafter\def\csname simpleicon@nationalgridicon\endcsname {\simpleiconsmapeight\symbol{44}}
+ \expandafter\def\csname simpleicon@nationalrailicon\endcsname {\simpleiconsmapeight\symbol{45}}
+ \expandafter\def\csname simpleicon@nativescripticon\endcsname {\simpleiconsmapeight\symbol{46}}
+ \expandafter\def\csname simpleicon@natsdotioicon\endcsname {\simpleiconsmapeight\symbol{47}}
+ \expandafter\def\csname simpleicon@navericon\endcsname {\simpleiconsmapeight\symbol{48}}
+ \expandafter\def\csname simpleicon@nbaicon\endcsname {\simpleiconsmapeight\symbol{49}}
+ \expandafter\def\csname simpleicon@nbbicon\endcsname {\simpleiconsmapeight\symbol{50}}
+ \expandafter\def\csname simpleicon@nbcicon\endcsname {\simpleiconsmapeight\symbol{51}}
+ \expandafter\def\csname simpleicon@ndricon\endcsname {\simpleiconsmapeight\symbol{52}}
+ \expandafter\def\csname simpleicon@nearicon\endcsname {\simpleiconsmapeight\symbol{53}}
+ \expandafter\def\csname simpleicon@nebulaicon\endcsname {\simpleiconsmapeight\symbol{54}}
+ \expandafter\def\csname simpleicon@necicon\endcsname {\simpleiconsmapeight\symbol{55}}
+ \expandafter\def\csname simpleicon@neo4jicon\endcsname {\simpleiconsmapeight\symbol{56}}
+ \expandafter\def\csname simpleicon@neovimicon\endcsname {\simpleiconsmapeight\symbol{57}}
+ \expandafter\def\csname simpleicon@neptuneicon\endcsname {\simpleiconsmapeight\symbol{58}}
+ \expandafter\def\csname simpleicon@nestjsicon\endcsname {\simpleiconsmapeight\symbol{59}}
+ \expandafter\def\csname simpleicon@netappicon\endcsname {\simpleiconsmapeight\symbol{60}}
+ \expandafter\def\csname simpleicon@netbsdicon\endcsname {\simpleiconsmapeight\symbol{61}}
+ \expandafter\def\csname simpleicon@netcupicon\endcsname {\simpleiconsmapeight\symbol{62}}
+ \expandafter\def\csname simpleicon@netdataicon\endcsname {\simpleiconsmapeight\symbol{63}}
+ \expandafter\def\csname simpleicon@neteasecloudmusicicon\endcsname {\simpleiconsmapeight\symbol{64}}
+ \expandafter\def\csname simpleicon@netflixicon\endcsname {\simpleiconsmapeight\symbol{65}}
+ \expandafter\def\csname simpleicon@netgearicon\endcsname {\simpleiconsmapeight\symbol{66}}
+ \expandafter\def\csname simpleicon@netlifyicon\endcsname {\simpleiconsmapeight\symbol{67}}
+ \expandafter\def\csname simpleicon@netteicon\endcsname {\simpleiconsmapeight\symbol{68}}
+ \expandafter\def\csname simpleicon@nettoicon\endcsname {\simpleiconsmapeight\symbol{69}}
+ \expandafter\def\csname simpleicon@neutralinojsicon\endcsname {\simpleiconsmapeight\symbol{70}}
+ \expandafter\def\csname simpleicon@newbalanceicon\endcsname {\simpleiconsmapeight\symbol{71}}
+ \expandafter\def\csname simpleicon@neweggicon\endcsname {\simpleiconsmapeight\symbol{72}}
+ \expandafter\def\csname simpleicon@newjapanprowrestlingicon\endcsname {\simpleiconsmapeight\symbol{73}}
+ \expandafter\def\csname simpleicon@newrelicicon\endcsname {\simpleiconsmapeight\symbol{74}}
+ \expandafter\def\csname simpleicon@newyorktimesicon\endcsname {\simpleiconsmapeight\symbol{75}}
+ \expandafter\def\csname simpleicon@nexonicon\endcsname {\simpleiconsmapeight\symbol{76}}
+ \expandafter\def\csname simpleicon@nextbilliondotaiicon\endcsname {\simpleiconsmapeight\symbol{77}}
+ \expandafter\def\csname simpleicon@nextcloudicon\endcsname {\simpleiconsmapeight\symbol{78}}
+ \expandafter\def\csname simpleicon@nextdnsicon\endcsname {\simpleiconsmapeight\symbol{79}}
+ \expandafter\def\csname simpleicon@nextdooricon\endcsname {\simpleiconsmapeight\symbol{80}}
+ \expandafter\def\csname simpleicon@nextdotjsicon\endcsname {\simpleiconsmapeight\symbol{81}}
+ \expandafter\def\csname simpleicon@nextraicon\endcsname {\simpleiconsmapeight\symbol{82}}
+ \expandafter\def\csname simpleicon@nextuiicon\endcsname {\simpleiconsmapeight\symbol{83}}
+ \expandafter\def\csname simpleicon@nexusmodsicon\endcsname {\simpleiconsmapeight\symbol{84}}
+ \expandafter\def\csname simpleicon@nfcicon\endcsname {\simpleiconsmapeight\symbol{85}}
+ \expandafter\def\csname simpleicon@nginxicon\endcsname {\simpleiconsmapeight\symbol{86}}
+ \expandafter\def\csname simpleicon@nginxproxymanagericon\endcsname {\simpleiconsmapeight\symbol{87}}
+ \expandafter\def\csname simpleicon@ngrokicon\endcsname {\simpleiconsmapeight\symbol{88}}
+ \expandafter\def\csname simpleicon@ngrxicon\endcsname {\simpleiconsmapeight\symbol{89}}
+ \expandafter\def\csname simpleicon@nhlicon\endcsname {\simpleiconsmapeight\symbol{90}}
+ \expandafter\def\csname simpleicon@nicehashicon\endcsname {\simpleiconsmapeight\symbol{91}}
+ \expandafter\def\csname simpleicon@niconicoicon\endcsname {\simpleiconsmapeight\symbol{92}}
+ \expandafter\def\csname simpleicon@nikeicon\endcsname {\simpleiconsmapeight\symbol{93}}
+ \expandafter\def\csname simpleicon@nikonicon\endcsname {\simpleiconsmapeight\symbol{94}}
+ \expandafter\def\csname simpleicon@nimicon\endcsname {\simpleiconsmapeight\symbol{95}}
+ \expandafter\def\csname simpleicon@nintendoicon\endcsname {\simpleiconsmapeight\symbol{96}}
+ \expandafter\def\csname simpleicon@nintendo3dsicon\endcsname {\simpleiconsmapeight\symbol{97}}
+ \expandafter\def\csname simpleicon@nintendogamecubeicon\endcsname {\simpleiconsmapeight\symbol{98}}
+ \expandafter\def\csname simpleicon@nintendoswitchicon\endcsname {\simpleiconsmapeight\symbol{99}}
+ \expandafter\def\csname simpleicon@nissanicon\endcsname {\simpleiconsmapeight\symbol{100}}
+ \expandafter\def\csname simpleicon@nixosicon\endcsname {\simpleiconsmapeight\symbol{101}}
+ \expandafter\def\csname simpleicon@nodedotjsicon\endcsname {\simpleiconsmapeight\symbol{102}}
+ \expandafter\def\csname simpleicon@nodemonicon\endcsname {\simpleiconsmapeight\symbol{103}}
+ \expandafter\def\csname simpleicon@noderedicon\endcsname {\simpleiconsmapeight\symbol{104}}
+ \expandafter\def\csname simpleicon@nokiaicon\endcsname {\simpleiconsmapeight\symbol{105}}
+ \expandafter\def\csname simpleicon@nomadicon\endcsname {\simpleiconsmapeight\symbol{106}}
+ \expandafter\def\csname simpleicon@norcoicon\endcsname {\simpleiconsmapeight\symbol{107}}
+ \expandafter\def\csname simpleicon@nordicsemiconductoricon\endcsname {\simpleiconsmapeight\symbol{108}}
+ \expandafter\def\csname simpleicon@nordvpnicon\endcsname {\simpleiconsmapeight\symbol{109}}
+ \expandafter\def\csname simpleicon@normalizedotcssicon\endcsname {\simpleiconsmapeight\symbol{110}}
+ \expandafter\def\csname simpleicon@nortonicon\endcsname {\simpleiconsmapeight\symbol{111}}
+ \expandafter\def\csname simpleicon@norwegianicon\endcsname {\simpleiconsmapeight\symbol{112}}
+ \expandafter\def\csname simpleicon@notepadplusplusicon\endcsname {\simpleiconsmapeight\symbol{113}}
+ \expandafter\def\csname simpleicon@notionicon\endcsname {\simpleiconsmapeight\symbol{114}}
+ \expandafter\def\csname simpleicon@notisticon\endcsname {\simpleiconsmapeight\symbol{115}}
+ \expandafter\def\csname simpleicon@nounprojecticon\endcsname {\simpleiconsmapeight\symbol{116}}
+ \expandafter\def\csname simpleicon@novuicon\endcsname {\simpleiconsmapeight\symbol{117}}
+ \expandafter\def\csname simpleicon@nowicon\endcsname {\simpleiconsmapeight\symbol{118}}
+ \expandafter\def\csname simpleicon@npmicon\endcsname {\simpleiconsmapeight\symbol{119}}
+ \expandafter\def\csname simpleicon@nrwlicon\endcsname {\simpleiconsmapeight\symbol{120}}
+ \expandafter\def\csname simpleicon@nsisicon\endcsname {\simpleiconsmapeight\symbol{121}}
+ \expandafter\def\csname simpleicon@ntfyicon\endcsname {\simpleiconsmapeight\symbol{122}}
+ \expandafter\def\csname simpleicon@nubankicon\endcsname {\simpleiconsmapeight\symbol{123}}
+ \expandafter\def\csname simpleicon@nucleoicon\endcsname {\simpleiconsmapeight\symbol{124}}
+ \expandafter\def\csname simpleicon@nugeticon\endcsname {\simpleiconsmapeight\symbol{125}}
+ \expandafter\def\csname simpleicon@nukeicon\endcsname {\simpleiconsmapeight\symbol{126}}
+ \expandafter\def\csname simpleicon@numbaicon\endcsname {\simpleiconsmapeight\symbol{127}}
+ \expandafter\def\csname simpleicon@numpyicon\endcsname {\simpleiconsmapeight\symbol{128}}
+ \expandafter\def\csname simpleicon@nunjucksicon\endcsname {\simpleiconsmapeight\symbol{129}}
+ \expandafter\def\csname simpleicon@nushellicon\endcsname {\simpleiconsmapeight\symbol{130}}
+ \expandafter\def\csname simpleicon@nutanixicon\endcsname {\simpleiconsmapeight\symbol{131}}
+ \expandafter\def\csname simpleicon@nuxtdotjsicon\endcsname {\simpleiconsmapeight\symbol{132}}
+ \expandafter\def\csname simpleicon@nvidiaicon\endcsname {\simpleiconsmapeight\symbol{133}}
+ \expandafter\def\csname simpleicon@nvmicon\endcsname {\simpleiconsmapeight\symbol{134}}
+ \expandafter\def\csname simpleicon@nxicon\endcsname {\simpleiconsmapeight\symbol{135}}
+ \expandafter\def\csname simpleicon@nxpicon\endcsname {\simpleiconsmapeight\symbol{136}}
+ \expandafter\def\csname simpleicon@nzxticon\endcsname {\simpleiconsmapeight\symbol{137}}
+ \expandafter\def\csname simpleicon@o2icon\endcsname {\simpleiconsmapeight\symbol{138}}
+ \expandafter\def\csname simpleicon@observableicon\endcsname {\simpleiconsmapeight\symbol{139}}
+ \expandafter\def\csname simpleicon@obsidianicon\endcsname {\simpleiconsmapeight\symbol{140}}
+ \expandafter\def\csname simpleicon@obsstudioicon\endcsname {\simpleiconsmapeight\symbol{141}}
+ \expandafter\def\csname simpleicon@ocamlicon\endcsname {\simpleiconsmapeight\symbol{142}}
+ \expandafter\def\csname simpleicon@oclificon\endcsname {\simpleiconsmapeight\symbol{143}}
+ \expandafter\def\csname simpleicon@octanerendericon\endcsname {\simpleiconsmapeight\symbol{144}}
+ \expandafter\def\csname simpleicon@octaveicon\endcsname {\simpleiconsmapeight\symbol{145}}
+ \expandafter\def\csname simpleicon@octobercmsicon\endcsname {\simpleiconsmapeight\symbol{146}}
+ \expandafter\def\csname simpleicon@octoprinticon\endcsname {\simpleiconsmapeight\symbol{147}}
+ \expandafter\def\csname simpleicon@octopusdeployicon\endcsname {\simpleiconsmapeight\symbol{148}}
+ \expandafter\def\csname simpleicon@oculusicon\endcsname {\simpleiconsmapeight\symbol{149}}
+ \expandafter\def\csname simpleicon@odnoklassnikiicon\endcsname {\simpleiconsmapeight\symbol{150}}
+ \expandafter\def\csname simpleicon@odooicon\endcsname {\simpleiconsmapeight\symbol{151}}
+ \expandafter\def\csname simpleicon@odyseeicon\endcsname {\simpleiconsmapeight\symbol{152}}
+ \expandafter\def\csname simpleicon@ohdearicon\endcsname {\simpleiconsmapeight\symbol{153}}
+ \expandafter\def\csname simpleicon@okcupidicon\endcsname {\simpleiconsmapeight\symbol{154}}
+ \expandafter\def\csname simpleicon@oktaicon\endcsname {\simpleiconsmapeight\symbol{155}}
+ \expandafter\def\csname simpleicon@okxicon\endcsname {\simpleiconsmapeight\symbol{156}}
+ \expandafter\def\csname simpleicon@ollamaicon\endcsname {\simpleiconsmapeight\symbol{157}}
+ \expandafter\def\csname simpleicon@oneplusicon\endcsname {\simpleiconsmapeight\symbol{158}}
+ \expandafter\def\csname simpleicon@onlyfansicon\endcsname {\simpleiconsmapeight\symbol{159}}
+ \expandafter\def\csname simpleicon@onlyofficeicon\endcsname {\simpleiconsmapeight\symbol{160}}
+ \expandafter\def\csname simpleicon@onnxicon\endcsname {\simpleiconsmapeight\symbol{161}}
+ \expandafter\def\csname simpleicon@onstaricon\endcsname {\simpleiconsmapeight\symbol{162}}
+ \expandafter\def\csname simpleicon@opelicon\endcsname {\simpleiconsmapeight\symbol{163}}
+ \expandafter\def\csname simpleicon@openaccessicon\endcsname {\simpleiconsmapeight\symbol{164}}
+ \expandafter\def\csname simpleicon@openaiicon\endcsname {\simpleiconsmapeight\symbol{165}}
+ \expandafter\def\csname simpleicon@openaigymicon\endcsname {\simpleiconsmapeight\symbol{166}}
+ \expandafter\def\csname simpleicon@openapiinitiativeicon\endcsname {\simpleiconsmapeight\symbol{167}}
+ \expandafter\def\csname simpleicon@openbadgesicon\endcsname {\simpleiconsmapeight\symbol{168}}
+ \expandafter\def\csname simpleicon@openbsdicon\endcsname {\simpleiconsmapeight\symbol{169}}
+ \expandafter\def\csname simpleicon@openbugbountyicon\endcsname {\simpleiconsmapeight\symbol{170}}
+ \expandafter\def\csname simpleicon@opencollectiveicon\endcsname {\simpleiconsmapeight\symbol{171}}
+ \expandafter\def\csname simpleicon@opencontainersinitiativeicon\endcsname {\simpleiconsmapeight\symbol{172}}
+ \expandafter\def\csname simpleicon@opencvicon\endcsname {\simpleiconsmapeight\symbol{173}}
+ \expandafter\def\csname simpleicon@openfaasicon\endcsname {\simpleiconsmapeight\symbol{174}}
+ \expandafter\def\csname simpleicon@openglicon\endcsname {\simpleiconsmapeight\symbol{175}}
+ \expandafter\def\csname simpleicon@openhabicon\endcsname {\simpleiconsmapeight\symbol{176}}
+ \expandafter\def\csname simpleicon@openidicon\endcsname {\simpleiconsmapeight\symbol{177}}
+ \expandafter\def\csname simpleicon@openjdkicon\endcsname {\simpleiconsmapeight\symbol{178}}
+ \expandafter\def\csname simpleicon@openjsfoundationicon\endcsname {\simpleiconsmapeight\symbol{179}}
+ \expandafter\def\csname simpleicon@openlayersicon\endcsname {\simpleiconsmapeight\symbol{180}}
+ \expandafter\def\csname simpleicon@openmediavaulticon\endcsname {\simpleiconsmapeight\symbol{181}}
+ \expandafter\def\csname simpleicon@openminedicon\endcsname {\simpleiconsmapeight\symbol{182}}
+ \expandafter\def\csname simpleicon@opennebulaicon\endcsname {\simpleiconsmapeight\symbol{183}}
+ \expandafter\def\csname simpleicon@openprojecticon\endcsname {\simpleiconsmapeight\symbol{184}}
+ \expandafter\def\csname simpleicon@openscadicon\endcsname {\simpleiconsmapeight\symbol{185}}
+ \expandafter\def\csname simpleicon@openseaicon\endcsname {\simpleiconsmapeight\symbol{186}}
+ \expandafter\def\csname simpleicon@opensearchicon\endcsname {\simpleiconsmapeight\symbol{187}}
+ \expandafter\def\csname simpleicon@opensourcehardwareicon\endcsname {\simpleiconsmapeight\symbol{188}}
+ \expandafter\def\csname simpleicon@opensourceinitiativeicon\endcsname {\simpleiconsmapeight\symbol{189}}
+ \expandafter\def\csname simpleicon@opensslicon\endcsname {\simpleiconsmapeight\symbol{190}}
+ \expandafter\def\csname simpleicon@openstackicon\endcsname {\simpleiconsmapeight\symbol{191}}
+ \expandafter\def\csname simpleicon@openstreetmapicon\endcsname {\simpleiconsmapeight\symbol{192}}
+ \expandafter\def\csname simpleicon@opensuseicon\endcsname {\simpleiconsmapeight\symbol{193}}
+ \expandafter\def\csname simpleicon@opentelemetryicon\endcsname {\simpleiconsmapeight\symbol{194}}
+ \expandafter\def\csname simpleicon@opentexticon\endcsname {\simpleiconsmapeight\symbol{195}}
+ \expandafter\def\csname simpleicon@opentofuicon\endcsname {\simpleiconsmapeight\symbol{196}}
+ \expandafter\def\csname simpleicon@openverseicon\endcsname {\simpleiconsmapeight\symbol{197}}
+ \expandafter\def\csname simpleicon@openvpnicon\endcsname {\simpleiconsmapeight\symbol{198}}
+ \expandafter\def\csname simpleicon@openwrticon\endcsname {\simpleiconsmapeight\symbol{199}}
+ \expandafter\def\csname simpleicon@openzeppelinicon\endcsname {\simpleiconsmapeight\symbol{200}}
+ \expandafter\def\csname simpleicon@openzfsicon\endcsname {\simpleiconsmapeight\symbol{201}}
+ \expandafter\def\csname simpleicon@operaicon\endcsname {\simpleiconsmapeight\symbol{202}}
+ \expandafter\def\csname simpleicon@operagxicon\endcsname {\simpleiconsmapeight\symbol{203}}
+ \expandafter\def\csname simpleicon@opnsenseicon\endcsname {\simpleiconsmapeight\symbol{204}}
+ \expandafter\def\csname simpleicon@oppoicon\endcsname {\simpleiconsmapeight\symbol{205}}
+ \expandafter\def\csname simpleicon@opsgenieicon\endcsname {\simpleiconsmapeight\symbol{206}}
+ \expandafter\def\csname simpleicon@opslevelicon\endcsname {\simpleiconsmapeight\symbol{207}}
+ \expandafter\def\csname simpleicon@optimismicon\endcsname {\simpleiconsmapeight\symbol{208}}
+ \expandafter\def\csname simpleicon@oracleicon\endcsname {\simpleiconsmapeight\symbol{209}}
+ \expandafter\def\csname simpleicon@orangeicon\endcsname {\simpleiconsmapeight\symbol{210}}
+ \expandafter\def\csname simpleicon@orcidicon\endcsname {\simpleiconsmapeight\symbol{211}}
+ \expandafter\def\csname simpleicon@oreillyicon\endcsname {\simpleiconsmapeight\symbol{212}}
+ \expandafter\def\csname simpleicon@orgicon\endcsname {\simpleiconsmapeight\symbol{213}}
+ \expandafter\def\csname simpleicon@organicmapsicon\endcsname {\simpleiconsmapeight\symbol{214}}
+ \expandafter\def\csname simpleicon@originicon\endcsname {\simpleiconsmapeight\symbol{215}}
+ \expandafter\def\csname simpleicon@osanoicon\endcsname {\simpleiconsmapeight\symbol{216}}
+ \expandafter\def\csname simpleicon@osficon\endcsname {\simpleiconsmapeight\symbol{217}}
+ \expandafter\def\csname simpleicon@osgeoicon\endcsname {\simpleiconsmapeight\symbol{218}}
+ \expandafter\def\csname simpleicon@oshkoshicon\endcsname {\simpleiconsmapeight\symbol{219}}
+ \expandafter\def\csname simpleicon@osmcicon\endcsname {\simpleiconsmapeight\symbol{220}}
+ \expandafter\def\csname simpleicon@osuicon\endcsname {\simpleiconsmapeight\symbol{221}}
+ \expandafter\def\csname simpleicon@ottoicon\endcsname {\simpleiconsmapeight\symbol{222}}
+ \expandafter\def\csname simpleicon@outlineicon\endcsname {\simpleiconsmapeight\symbol{223}}
+ \expandafter\def\csname simpleicon@overcasticon\endcsname {\simpleiconsmapeight\symbol{224}}
+ \expandafter\def\csname simpleicon@overleaficon\endcsname {\simpleiconsmapeight\symbol{225}}
+ \expandafter\def\csname simpleicon@ovhicon\endcsname {\simpleiconsmapeight\symbol{226}}
+ \expandafter\def\csname simpleicon@owaspicon\endcsname {\simpleiconsmapeight\symbol{227}}
+ \expandafter\def\csname simpleicon@owncloudicon\endcsname {\simpleiconsmapeight\symbol{228}}
+ \expandafter\def\csname simpleicon@oxygenicon\endcsname {\simpleiconsmapeight\symbol{229}}
+ \expandafter\def\csname simpleicon@oyoicon\endcsname {\simpleiconsmapeight\symbol{230}}
+ \expandafter\def\csname simpleicon@p5dotjsicon\endcsname {\simpleiconsmapeight\symbol{231}}
+ \expandafter\def\csname simpleicon@packagisticon\endcsname {\simpleiconsmapeight\symbol{232}}
+ \expandafter\def\csname simpleicon@packericon\endcsname {\simpleiconsmapeight\symbol{233}}
+ \expandafter\def\csname simpleicon@packticon\endcsname {\simpleiconsmapeight\symbol{234}}
+ \expandafter\def\csname simpleicon@paddleicon\endcsname {\simpleiconsmapeight\symbol{235}}
+ \expandafter\def\csname simpleicon@paddlepaddleicon\endcsname {\simpleiconsmapeight\symbol{236}}
+ \expandafter\def\csname simpleicon@paddypowericon\endcsname {\simpleiconsmapeight\symbol{237}}
+ \expandafter\def\csname simpleicon@pagekiticon\endcsname {\simpleiconsmapeight\symbol{238}}
+ \expandafter\def\csname simpleicon@pagerdutyicon\endcsname {\simpleiconsmapeight\symbol{239}}
+ \expandafter\def\csname simpleicon@pagespeedinsightsicon\endcsname {\simpleiconsmapeight\symbol{240}}
+ \expandafter\def\csname simpleicon@pagseguroicon\endcsname {\simpleiconsmapeight\symbol{241}}
+ \expandafter\def\csname simpleicon@palantiricon\endcsname {\simpleiconsmapeight\symbol{242}}
+ \expandafter\def\csname simpleicon@paloaltonetworksicon\endcsname {\simpleiconsmapeight\symbol{243}}
+ \expandafter\def\csname simpleicon@paloaltosoftwareicon\endcsname {\simpleiconsmapeight\symbol{244}}
+ \expandafter\def\csname simpleicon@panasonicicon\endcsname {\simpleiconsmapeight\symbol{245}}
+ \expandafter\def\csname simpleicon@pandasicon\endcsname {\simpleiconsmapeight\symbol{246}}
+ \expandafter\def\csname simpleicon@pandoraicon\endcsname {\simpleiconsmapeight\symbol{247}}
+ \expandafter\def\csname simpleicon@pantheonicon\endcsname {\simpleiconsmapeight\symbol{248}}
+ \expandafter\def\csname simpleicon@paperlessngxicon\endcsname {\simpleiconsmapeight\symbol{249}}
+ \expandafter\def\csname simpleicon@paperspaceicon\endcsname {\simpleiconsmapeight\symbol{250}}
+ \expandafter\def\csname simpleicon@paperswithcodeicon\endcsname {\simpleiconsmapeight\symbol{251}}
+ \expandafter\def\csname simpleicon@paramountplusicon\endcsname {\simpleiconsmapeight\symbol{252}}
+ \expandafter\def\csname simpleicon@paritysubstrateicon\endcsname {\simpleiconsmapeight\symbol{253}}
+ \expandafter\def\csname simpleicon@parrotsecurityicon\endcsname {\simpleiconsmapeight\symbol{254}}
+ \expandafter\def\csname simpleicon@parsedotlyicon\endcsname {\simpleiconsmapeight\symbol{255}}
+ \expandafter\def\csname simpleicon@passporticon\endcsname {\simpleiconsmapnine\symbol{0}}
+ \expandafter\def\csname simpleicon@pastebinicon\endcsname {\simpleiconsmapnine\symbol{1}}
+ \expandafter\def\csname simpleicon@patreonicon\endcsname {\simpleiconsmapnine\symbol{2}}
+ \expandafter\def\csname simpleicon@paychexicon\endcsname {\simpleiconsmapnine\symbol{3}}
+ \expandafter\def\csname simpleicon@payhipicon\endcsname {\simpleiconsmapnine\symbol{4}}
+ \expandafter\def\csname simpleicon@payloadcmsicon\endcsname {\simpleiconsmapnine\symbol{5}}
+ \expandafter\def\csname simpleicon@payoneericon\endcsname {\simpleiconsmapnine\symbol{6}}
+ \expandafter\def\csname simpleicon@paypalicon\endcsname {\simpleiconsmapnine\symbol{7}}
+ \expandafter\def\csname simpleicon@paytmicon\endcsname {\simpleiconsmapnine\symbol{8}}
+ \expandafter\def\csname simpleicon@pcgamingwikiicon\endcsname {\simpleiconsmapnine\symbol{9}}
+ \expandafter\def\csname simpleicon@pdmicon\endcsname {\simpleiconsmapnine\symbol{10}}
+ \expandafter\def\csname simpleicon@pdqicon\endcsname {\simpleiconsmapnine\symbol{11}}
+ \expandafter\def\csname simpleicon@peakdesignicon\endcsname {\simpleiconsmapnine\symbol{12}}
+ \expandafter\def\csname simpleicon@pearsonicon\endcsname {\simpleiconsmapnine\symbol{13}}
+ \expandafter\def\csname simpleicon@peerlisticon\endcsname {\simpleiconsmapnine\symbol{14}}
+ \expandafter\def\csname simpleicon@peertubeicon\endcsname {\simpleiconsmapnine\symbol{15}}
+ \expandafter\def\csname simpleicon@pegasusairlinesicon\endcsname {\simpleiconsmapnine\symbol{16}}
+ \expandafter\def\csname simpleicon@pelicanicon\endcsname {\simpleiconsmapnine\symbol{17}}
+ \expandafter\def\csname simpleicon@pelotonicon\endcsname {\simpleiconsmapnine\symbol{18}}
+ \expandafter\def\csname simpleicon@pennyicon\endcsname {\simpleiconsmapnine\symbol{19}}
+ \expandafter\def\csname simpleicon@penpoticon\endcsname {\simpleiconsmapnine\symbol{20}}
+ \expandafter\def\csname simpleicon@percyicon\endcsname {\simpleiconsmapnine\symbol{21}}
+ \expandafter\def\csname simpleicon@perforceicon\endcsname {\simpleiconsmapnine\symbol{22}}
+ \expandafter\def\csname simpleicon@perlicon\endcsname {\simpleiconsmapnine\symbol{23}}
+ \expandafter\def\csname simpleicon@perplexityicon\endcsname {\simpleiconsmapnine\symbol{24}}
+ \expandafter\def\csname simpleicon@persistenticon\endcsname {\simpleiconsmapnine\symbol{25}}
+ \expandafter\def\csname simpleicon@personioicon\endcsname {\simpleiconsmapnine\symbol{26}}
+ \expandafter\def\csname simpleicon@petsathomeicon\endcsname {\simpleiconsmapnine\symbol{27}}
+ \expandafter\def\csname simpleicon@peugeoticon\endcsname {\simpleiconsmapnine\symbol{28}}
+ \expandafter\def\csname simpleicon@pexelsicon\endcsname {\simpleiconsmapnine\symbol{29}}
+ \expandafter\def\csname simpleicon@pfsenseicon\endcsname {\simpleiconsmapnine\symbol{30}}
+ \expandafter\def\csname simpleicon@phabricatoricon\endcsname {\simpleiconsmapnine\symbol{31}}
+ \expandafter\def\csname simpleicon@philipshueicon\endcsname {\simpleiconsmapnine\symbol{32}}
+ \expandafter\def\csname simpleicon@phoenixframeworkicon\endcsname {\simpleiconsmapnine\symbol{33}}
+ \expandafter\def\csname simpleicon@phonepeicon\endcsname {\simpleiconsmapnine\symbol{34}}
+ \expandafter\def\csname simpleicon@phosphoriconsicon\endcsname {\simpleiconsmapnine\symbol{35}}
+ \expandafter\def\csname simpleicon@photobucketicon\endcsname {\simpleiconsmapnine\symbol{36}}
+ \expandafter\def\csname simpleicon@photocrowdicon\endcsname {\simpleiconsmapnine\symbol{37}}
+ \expandafter\def\csname simpleicon@photonicon\endcsname {\simpleiconsmapnine\symbol{38}}
+ \expandafter\def\csname simpleicon@photopeaicon\endcsname {\simpleiconsmapnine\symbol{39}}
+ \expandafter\def\csname simpleicon@phpicon\endcsname {\simpleiconsmapnine\symbol{40}}
+ \expandafter\def\csname simpleicon@phpmyadminicon\endcsname {\simpleiconsmapnine\symbol{41}}
+ \expandafter\def\csname simpleicon@phpstormicon\endcsname {\simpleiconsmapnine\symbol{42}}
+ \expandafter\def\csname simpleicon@piaggiogroupicon\endcsname {\simpleiconsmapnine\symbol{43}}
+ \expandafter\def\csname simpleicon@piaproicon\endcsname {\simpleiconsmapnine\symbol{44}}
+ \expandafter\def\csname simpleicon@picardsurgelesicon\endcsname {\simpleiconsmapnine\symbol{45}}
+ \expandafter\def\csname simpleicon@picartodottvicon\endcsname {\simpleiconsmapnine\symbol{46}}
+ \expandafter\def\csname simpleicon@picnicicon\endcsname {\simpleiconsmapnine\symbol{47}}
+ \expandafter\def\csname simpleicon@picpayicon\endcsname {\simpleiconsmapnine\symbol{48}}
+ \expandafter\def\csname simpleicon@picrewicon\endcsname {\simpleiconsmapnine\symbol{49}}
+ \expandafter\def\csname simpleicon@picxyicon\endcsname {\simpleiconsmapnine\symbol{50}}
+ \expandafter\def\csname simpleicon@piholeicon\endcsname {\simpleiconsmapnine\symbol{51}}
+ \expandafter\def\csname simpleicon@pimcoreicon\endcsname {\simpleiconsmapnine\symbol{52}}
+ \expandafter\def\csname simpleicon@pinboardicon\endcsname {\simpleiconsmapnine\symbol{53}}
+ \expandafter\def\csname simpleicon@pinescripticon\endcsname {\simpleiconsmapnine\symbol{54}}
+ \expandafter\def\csname simpleicon@pinetworkicon\endcsname {\simpleiconsmapnine\symbol{55}}
+ \expandafter\def\csname simpleicon@pingdomicon\endcsname {\simpleiconsmapnine\symbol{56}}
+ \expandafter\def\csname simpleicon@pinoicon\endcsname {\simpleiconsmapnine\symbol{57}}
+ \expandafter\def\csname simpleicon@pinteresticon\endcsname {\simpleiconsmapnine\symbol{58}}
+ \expandafter\def\csname simpleicon@pioneerdjicon\endcsname {\simpleiconsmapnine\symbol{59}}
+ \expandafter\def\csname simpleicon@pipedicon\endcsname {\simpleiconsmapnine\symbol{60}}
+ \expandafter\def\csname simpleicon@pipxicon\endcsname {\simpleiconsmapnine\symbol{61}}
+ \expandafter\def\csname simpleicon@pivotaltrackericon\endcsname {\simpleiconsmapnine\symbol{62}}
+ \expandafter\def\csname simpleicon@piwigoicon\endcsname {\simpleiconsmapnine\symbol{63}}
+ \expandafter\def\csname simpleicon@pixicon\endcsname {\simpleiconsmapnine\symbol{64}}
+ \expandafter\def\csname simpleicon@pixabayicon\endcsname {\simpleiconsmapnine\symbol{65}}
+ \expandafter\def\csname simpleicon@pixelfedicon\endcsname {\simpleiconsmapnine\symbol{66}}
+ \expandafter\def\csname simpleicon@pixivicon\endcsname {\simpleiconsmapnine\symbol{67}}
+ \expandafter\def\csname simpleicon@pixlricon\endcsname {\simpleiconsmapnine\symbol{68}}
+ \expandafter\def\csname simpleicon@pkgsrcicon\endcsname {\simpleiconsmapnine\symbol{69}}
+ \expandafter\def\csname simpleicon@planeticon\endcsname {\simpleiconsmapnine\symbol{70}}
+ \expandafter\def\csname simpleicon@planetscaleicon\endcsname {\simpleiconsmapnine\symbol{71}}
+ \expandafter\def\csname simpleicon@plangridicon\endcsname {\simpleiconsmapnine\symbol{72}}
+ \expandafter\def\csname simpleicon@platformdotshicon\endcsname {\simpleiconsmapnine\symbol{73}}
+ \expandafter\def\csname simpleicon@platformioicon\endcsname {\simpleiconsmapnine\symbol{74}}
+ \expandafter\def\csname simpleicon@platziicon\endcsname {\simpleiconsmapnine\symbol{75}}
+ \expandafter\def\csname simpleicon@plausibleanalyticsicon\endcsname {\simpleiconsmapnine\symbol{76}}
+ \expandafter\def\csname simpleicon@playcanvasicon\endcsname {\simpleiconsmapnine\symbol{77}}
+ \expandafter\def\csname simpleicon@playerdotmeicon\endcsname {\simpleiconsmapnine\symbol{78}}
+ \expandafter\def\csname simpleicon@playerfmicon\endcsname {\simpleiconsmapnine\symbol{79}}
+ \expandafter\def\csname simpleicon@playstationicon\endcsname {\simpleiconsmapnine\symbol{80}}
+ \expandafter\def\csname simpleicon@playstation2icon\endcsname {\simpleiconsmapnine\symbol{81}}
+ \expandafter\def\csname simpleicon@playstation3icon\endcsname {\simpleiconsmapnine\symbol{82}}
+ \expandafter\def\csname simpleicon@playstation4icon\endcsname {\simpleiconsmapnine\symbol{83}}
+ \expandafter\def\csname simpleicon@playstation5icon\endcsname {\simpleiconsmapnine\symbol{84}}
+ \expandafter\def\csname simpleicon@playstationportableicon\endcsname {\simpleiconsmapnine\symbol{85}}
+ \expandafter\def\csname simpleicon@playstationvitaicon\endcsname {\simpleiconsmapnine\symbol{86}}
+ \expandafter\def\csname simpleicon@pleromaicon\endcsname {\simpleiconsmapnine\symbol{87}}
+ \expandafter\def\csname simpleicon@pleskicon\endcsname {\simpleiconsmapnine\symbol{88}}
+ \expandafter\def\csname simpleicon@plexicon\endcsname {\simpleiconsmapnine\symbol{89}}
+ \expandafter\def\csname simpleicon@plotlyicon\endcsname {\simpleiconsmapnine\symbol{90}}
+ \expandafter\def\csname simpleicon@plumeicon\endcsname {\simpleiconsmapnine\symbol{91}}
+ \expandafter\def\csname simpleicon@pluralsighticon\endcsname {\simpleiconsmapnine\symbol{92}}
+ \expandafter\def\csname simpleicon@plurkicon\endcsname {\simpleiconsmapnine\symbol{93}}
+ \expandafter\def\csname simpleicon@pluscodesicon\endcsname {\simpleiconsmapnine\symbol{94}}
+ \expandafter\def\csname simpleicon@pm2icon\endcsname {\simpleiconsmapnine\symbol{95}}
+ \expandafter\def\csname simpleicon@pnpmicon\endcsname {\simpleiconsmapnine\symbol{96}}
+ \expandafter\def\csname simpleicon@pocketicon\endcsname {\simpleiconsmapnine\symbol{97}}
+ \expandafter\def\csname simpleicon@pocketbaseicon\endcsname {\simpleiconsmapnine\symbol{98}}
+ \expandafter\def\csname simpleicon@pocketcastsicon\endcsname {\simpleiconsmapnine\symbol{99}}
+ \expandafter\def\csname simpleicon@podcastaddicticon\endcsname {\simpleiconsmapnine\symbol{100}}
+ \expandafter\def\csname simpleicon@podcastindexicon\endcsname {\simpleiconsmapnine\symbol{101}}
+ \expandafter\def\csname simpleicon@podmanicon\endcsname {\simpleiconsmapnine\symbol{102}}
+ \expandafter\def\csname simpleicon@poeicon\endcsname {\simpleiconsmapnine\symbol{103}}
+ \expandafter\def\csname simpleicon@poetryicon\endcsname {\simpleiconsmapnine\symbol{104}}
+ \expandafter\def\csname simpleicon@pointyicon\endcsname {\simpleiconsmapnine\symbol{105}}
+ \expandafter\def\csname simpleicon@pokemonicon\endcsname {\simpleiconsmapnine\symbol{106}}
+ \expandafter\def\csname simpleicon@polarsicon\endcsname {\simpleiconsmapnine\symbol{107}}
+ \expandafter\def\csname simpleicon@polestaricon\endcsname {\simpleiconsmapnine\symbol{108}}
+ \expandafter\def\csname simpleicon@polkadoticon\endcsname {\simpleiconsmapnine\symbol{109}}
+ \expandafter\def\csname simpleicon@polyicon\endcsname {\simpleiconsmapnine\symbol{110}}
+ \expandafter\def\csname simpleicon@polygonicon\endcsname {\simpleiconsmapnine\symbol{111}}
+ \expandafter\def\csname simpleicon@polymerprojecticon\endcsname {\simpleiconsmapnine\symbol{112}}
+ \expandafter\def\csname simpleicon@polyworkicon\endcsname {\simpleiconsmapnine\symbol{113}}
+ \expandafter\def\csname simpleicon@pond5icon\endcsname {\simpleiconsmapnine\symbol{114}}
+ \expandafter\def\csname simpleicon@poposicon\endcsname {\simpleiconsmapnine\symbol{115}}
+ \expandafter\def\csname simpleicon@porkbunicon\endcsname {\simpleiconsmapnine\symbol{116}}
+ \expandafter\def\csname simpleicon@porscheicon\endcsname {\simpleiconsmapnine\symbol{117}}
+ \expandafter\def\csname simpleicon@portainericon\endcsname {\simpleiconsmapnine\symbol{118}}
+ \expandafter\def\csname simpleicon@portswiggericon\endcsname {\simpleiconsmapnine\symbol{119}}
+ \expandafter\def\csname simpleicon@positicon\endcsname {\simpleiconsmapnine\symbol{120}}
+ \expandafter\def\csname simpleicon@postcssicon\endcsname {\simpleiconsmapnine\symbol{121}}
+ \expandafter\def\csname simpleicon@postgresqlicon\endcsname {\simpleiconsmapnine\symbol{122}}
+ \expandafter\def\csname simpleicon@posthogicon\endcsname {\simpleiconsmapnine\symbol{123}}
+ \expandafter\def\csname simpleicon@postmanicon\endcsname {\simpleiconsmapnine\symbol{124}}
+ \expandafter\def\csname simpleicon@postmatesicon\endcsname {\simpleiconsmapnine\symbol{125}}
+ \expandafter\def\csname simpleicon@powersicon\endcsname {\simpleiconsmapnine\symbol{126}}
+ \expandafter\def\csname simpleicon@prdotcoicon\endcsname {\simpleiconsmapnine\symbol{127}}
+ \expandafter\def\csname simpleicon@preacticon\endcsname {\simpleiconsmapnine\symbol{128}}
+ \expandafter\def\csname simpleicon@precommiticon\endcsname {\simpleiconsmapnine\symbol{129}}
+ \expandafter\def\csname simpleicon@prefecticon\endcsname {\simpleiconsmapnine\symbol{130}}
+ \expandafter\def\csname simpleicon@premierleagueicon\endcsname {\simpleiconsmapnine\symbol{131}}
+ \expandafter\def\csname simpleicon@prepbytesicon\endcsname {\simpleiconsmapnine\symbol{132}}
+ \expandafter\def\csname simpleicon@prestashopicon\endcsname {\simpleiconsmapnine\symbol{133}}
+ \expandafter\def\csname simpleicon@prestoicon\endcsname {\simpleiconsmapnine\symbol{134}}
+ \expandafter\def\csname simpleicon@prettiericon\endcsname {\simpleiconsmapnine\symbol{135}}
+ \expandafter\def\csname simpleicon@pretzelicon\endcsname {\simpleiconsmapnine\symbol{136}}
+ \expandafter\def\csname simpleicon@preventionicon\endcsname {\simpleiconsmapnine\symbol{137}}
+ \expandafter\def\csname simpleicon@preziicon\endcsname {\simpleiconsmapnine\symbol{138}}
+ \expandafter\def\csname simpleicon@primeicon\endcsname {\simpleiconsmapnine\symbol{139}}
+ \expandafter\def\csname simpleicon@primefacesicon\endcsname {\simpleiconsmapnine\symbol{140}}
+ \expandafter\def\csname simpleicon@primengicon\endcsname {\simpleiconsmapnine\symbol{141}}
+ \expandafter\def\csname simpleicon@primereacticon\endcsname {\simpleiconsmapnine\symbol{142}}
+ \expandafter\def\csname simpleicon@primevideoicon\endcsname {\simpleiconsmapnine\symbol{143}}
+ \expandafter\def\csname simpleicon@primevueicon\endcsname {\simpleiconsmapnine\symbol{144}}
+ \expandafter\def\csname simpleicon@printablesicon\endcsname {\simpleiconsmapnine\symbol{145}}
+ \expandafter\def\csname simpleicon@prismaicon\endcsname {\simpleiconsmapnine\symbol{146}}
+ \expandafter\def\csname simpleicon@prismicicon\endcsname {\simpleiconsmapnine\symbol{147}}
+ \expandafter\def\csname simpleicon@privatedivisionicon\endcsname {\simpleiconsmapnine\symbol{148}}
+ \expandafter\def\csname simpleicon@privateinternetaccessicon\endcsname {\simpleiconsmapnine\symbol{149}}
+ \expandafter\def\csname simpleicon@proboticon\endcsname {\simpleiconsmapnine\symbol{150}}
+ \expandafter\def\csname simpleicon@processingfoundationicon\endcsname {\simpleiconsmapnine\symbol{151}}
+ \expandafter\def\csname simpleicon@processwireicon\endcsname {\simpleiconsmapnine\symbol{152}}
+ \expandafter\def\csname simpleicon@producthunticon\endcsname {\simpleiconsmapnine\symbol{153}}
+ \expandafter\def\csname simpleicon@progateicon\endcsname {\simpleiconsmapnine\symbol{154}}
+ \expandafter\def\csname simpleicon@progressicon\endcsname {\simpleiconsmapnine\symbol{155}}
+ \expandafter\def\csname simpleicon@prometheusicon\endcsname {\simpleiconsmapnine\symbol{156}}
+ \expandafter\def\csname simpleicon@pronounsdotpageicon\endcsname {\simpleiconsmapnine\symbol{157}}
+ \expandafter\def\csname simpleicon@prosiebenicon\endcsname {\simpleiconsmapnine\symbol{158}}
+ \expandafter\def\csname simpleicon@proteusicon\endcsname {\simpleiconsmapnine\symbol{159}}
+ \expandafter\def\csname simpleicon@protocolsdotioicon\endcsname {\simpleiconsmapnine\symbol{160}}
+ \expandafter\def\csname simpleicon@protodotioicon\endcsname {\simpleiconsmapnine\symbol{161}}
+ \expandafter\def\csname simpleicon@protonicon\endcsname {\simpleiconsmapnine\symbol{162}}
+ \expandafter\def\csname simpleicon@protoncalendaricon\endcsname {\simpleiconsmapnine\symbol{163}}
+ \expandafter\def\csname simpleicon@protondbicon\endcsname {\simpleiconsmapnine\symbol{164}}
+ \expandafter\def\csname simpleicon@protondriveicon\endcsname {\simpleiconsmapnine\symbol{165}}
+ \expandafter\def\csname simpleicon@protonmailicon\endcsname {\simpleiconsmapnine\symbol{166}}
+ \expandafter\def\csname simpleicon@protonvpnicon\endcsname {\simpleiconsmapnine\symbol{167}}
+ \expandafter\def\csname simpleicon@protoolsicon\endcsname {\simpleiconsmapnine\symbol{168}}
+ \expandafter\def\csname simpleicon@protractoricon\endcsname {\simpleiconsmapnine\symbol{169}}
+ \expandafter\def\csname simpleicon@proxmoxicon\endcsname {\simpleiconsmapnine\symbol{170}}
+ \expandafter\def\csname simpleicon@pterodactylicon\endcsname {\simpleiconsmapnine\symbol{171}}
+ \expandafter\def\csname simpleicon@pubgicon\endcsname {\simpleiconsmapnine\symbol{172}}
+ \expandafter\def\csname simpleicon@publonsicon\endcsname {\simpleiconsmapnine\symbol{173}}
+ \expandafter\def\csname simpleicon@pubmedicon\endcsname {\simpleiconsmapnine\symbol{174}}
+ \expandafter\def\csname simpleicon@pugicon\endcsname {\simpleiconsmapnine\symbol{175}}
+ \expandafter\def\csname simpleicon@pulumiicon\endcsname {\simpleiconsmapnine\symbol{176}}
+ \expandafter\def\csname simpleicon@pumaicon\endcsname {\simpleiconsmapnine\symbol{177}}
+ \expandafter\def\csname simpleicon@puppeticon\endcsname {\simpleiconsmapnine\symbol{178}}
+ \expandafter\def\csname simpleicon@puppeteericon\endcsname {\simpleiconsmapnine\symbol{179}}
+ \expandafter\def\csname simpleicon@purescripticon\endcsname {\simpleiconsmapnine\symbol{180}}
+ \expandafter\def\csname simpleicon@purgecssicon\endcsname {\simpleiconsmapnine\symbol{181}}
+ \expandafter\def\csname simpleicon@purismicon\endcsname {\simpleiconsmapnine\symbol{182}}
+ \expandafter\def\csname simpleicon@pushbulleticon\endcsname {\simpleiconsmapnine\symbol{183}}
+ \expandafter\def\csname simpleicon@pushericon\endcsname {\simpleiconsmapnine\symbol{184}}
+ \expandafter\def\csname simpleicon@pwaicon\endcsname {\simpleiconsmapnine\symbol{185}}
+ \expandafter\def\csname simpleicon@pycharmicon\endcsname {\simpleiconsmapnine\symbol{186}}
+ \expandafter\def\csname simpleicon@pycqaicon\endcsname {\simpleiconsmapnine\symbol{187}}
+ \expandafter\def\csname simpleicon@pydanticicon\endcsname {\simpleiconsmapnine\symbol{188}}
+ \expandafter\def\csname simpleicon@pygicon\endcsname {\simpleiconsmapnine\symbol{189}}
+ \expandafter\def\csname simpleicon@pypiicon\endcsname {\simpleiconsmapnine\symbol{190}}
+ \expandafter\def\csname simpleicon@pypyicon\endcsname {\simpleiconsmapnine\symbol{191}}
+ \expandafter\def\csname simpleicon@pyscaffoldicon\endcsname {\simpleiconsmapnine\symbol{192}}
+ \expandafter\def\csname simpleicon@pysyfticon\endcsname {\simpleiconsmapnine\symbol{193}}
+ \expandafter\def\csname simpleicon@pytesticon\endcsname {\simpleiconsmapnine\symbol{194}}
+ \expandafter\def\csname simpleicon@pythonicon\endcsname {\simpleiconsmapnine\symbol{195}}
+ \expandafter\def\csname simpleicon@pythonanywhereicon\endcsname {\simpleiconsmapnine\symbol{196}}
+ \expandafter\def\csname simpleicon@pytorchicon\endcsname {\simpleiconsmapnine\symbol{197}}
+ \expandafter\def\csname simpleicon@pyupicon\endcsname {\simpleiconsmapnine\symbol{198}}
+ \expandafter\def\csname simpleicon@qantasicon\endcsname {\simpleiconsmapnine\symbol{199}}
+ \expandafter\def\csname simpleicon@qaseicon\endcsname {\simpleiconsmapnine\symbol{200}}
+ \expandafter\def\csname simpleicon@qatarairwaysicon\endcsname {\simpleiconsmapnine\symbol{201}}
+ \expandafter\def\csname simpleicon@qbittorrenticon\endcsname {\simpleiconsmapnine\symbol{202}}
+ \expandafter\def\csname simpleicon@qemuicon\endcsname {\simpleiconsmapnine\symbol{203}}
+ \expandafter\def\csname simpleicon@qgisicon\endcsname {\simpleiconsmapnine\symbol{204}}
+ \expandafter\def\csname simpleicon@qiicon\endcsname {\simpleiconsmapnine\symbol{205}}
+ \expandafter\def\csname simpleicon@qiitaicon\endcsname {\simpleiconsmapnine\symbol{206}}
+ \expandafter\def\csname simpleicon@qiskiticon\endcsname {\simpleiconsmapnine\symbol{207}}
+ \expandafter\def\csname simpleicon@qiwiicon\endcsname {\simpleiconsmapnine\symbol{208}}
+ \expandafter\def\csname simpleicon@qlikicon\endcsname {\simpleiconsmapnine\symbol{209}}
+ \expandafter\def\csname simpleicon@qmkicon\endcsname {\simpleiconsmapnine\symbol{210}}
+ \expandafter\def\csname simpleicon@qnapicon\endcsname {\simpleiconsmapnine\symbol{211}}
+ \expandafter\def\csname simpleicon@qticon\endcsname {\simpleiconsmapnine\symbol{212}}
+ \expandafter\def\csname simpleicon@qualcommicon\endcsname {\simpleiconsmapnine\symbol{213}}
+ \expandafter\def\csname simpleicon@qualtricsicon\endcsname {\simpleiconsmapnine\symbol{214}}
+ \expandafter\def\csname simpleicon@qualysicon\endcsname {\simpleiconsmapnine\symbol{215}}
+ \expandafter\def\csname simpleicon@quantcasticon\endcsname {\simpleiconsmapnine\symbol{216}}
+ \expandafter\def\csname simpleicon@quantconnecticon\endcsname {\simpleiconsmapnine\symbol{217}}
+ \expandafter\def\csname simpleicon@quarkusicon\endcsname {\simpleiconsmapnine\symbol{218}}
+ \expandafter\def\csname simpleicon@quartoicon\endcsname {\simpleiconsmapnine\symbol{219}}
+ \expandafter\def\csname simpleicon@quasaricon\endcsname {\simpleiconsmapnine\symbol{220}}
+ \expandafter\def\csname simpleicon@qubesosicon\endcsname {\simpleiconsmapnine\symbol{221}}
+ \expandafter\def\csname simpleicon@questicon\endcsname {\simpleiconsmapnine\symbol{222}}
+ \expandafter\def\csname simpleicon@quickbooksicon\endcsname {\simpleiconsmapnine\symbol{223}}
+ \expandafter\def\csname simpleicon@quicklookicon\endcsname {\simpleiconsmapnine\symbol{224}}
+ \expandafter\def\csname simpleicon@quicktimeicon\endcsname {\simpleiconsmapnine\symbol{225}}
+ \expandafter\def\csname simpleicon@quicktypeicon\endcsname {\simpleiconsmapnine\symbol{226}}
+ \expandafter\def\csname simpleicon@quipicon\endcsname {\simpleiconsmapnine\symbol{227}}
+ \expandafter\def\csname simpleicon@quizleticon\endcsname {\simpleiconsmapnine\symbol{228}}
+ \expandafter\def\csname simpleicon@quoraicon\endcsname {\simpleiconsmapnine\symbol{229}}
+ \expandafter\def\csname simpleicon@qwanticon\endcsname {\simpleiconsmapnine\symbol{230}}
+ \expandafter\def\csname simpleicon@qwikicon\endcsname {\simpleiconsmapnine\symbol{231}}
+ \expandafter\def\csname simpleicon@qwiklabsicon\endcsname {\simpleiconsmapnine\symbol{232}}
+ \expandafter\def\csname simpleicon@qzoneicon\endcsname {\simpleiconsmapnine\symbol{233}}
+ \expandafter\def\csname simpleicon@ricon\endcsname {\simpleiconsmapnine\symbol{234}}
+ \expandafter\def\csname simpleicon@r3icon\endcsname {\simpleiconsmapnine\symbol{235}}
+ \expandafter\def\csname simpleicon@rabbitmqicon\endcsname {\simpleiconsmapnine\symbol{236}}
+ \expandafter\def\csname simpleicon@racketicon\endcsname {\simpleiconsmapnine\symbol{237}}
+ \expandafter\def\csname simpleicon@radaricon\endcsname {\simpleiconsmapnine\symbol{238}}
+ \expandafter\def\csname simpleicon@radarricon\endcsname {\simpleiconsmapnine\symbol{239}}
+ \expandafter\def\csname simpleicon@radiopublicicon\endcsname {\simpleiconsmapnine\symbol{240}}
+ \expandafter\def\csname simpleicon@radixuiicon\endcsname {\simpleiconsmapnine\symbol{241}}
+ \expandafter\def\csname simpleicon@radstudioicon\endcsname {\simpleiconsmapnine\symbol{242}}
+ \expandafter\def\csname simpleicon@railwayicon\endcsname {\simpleiconsmapnine\symbol{243}}
+ \expandafter\def\csname simpleicon@rainmetericon\endcsname {\simpleiconsmapnine\symbol{244}}
+ \expandafter\def\csname simpleicon@rakutenicon\endcsname {\simpleiconsmapnine\symbol{245}}
+ \expandafter\def\csname simpleicon@ramicon\endcsname {\simpleiconsmapnine\symbol{246}}
+ \expandafter\def\csname simpleicon@ranchericon\endcsname {\simpleiconsmapnine\symbol{247}}
+ \expandafter\def\csname simpleicon@rapidicon\endcsname {\simpleiconsmapnine\symbol{248}}
+ \expandafter\def\csname simpleicon@raribleicon\endcsname {\simpleiconsmapnine\symbol{249}}
+ \expandafter\def\csname simpleicon@rasaicon\endcsname {\simpleiconsmapnine\symbol{250}}
+ \expandafter\def\csname simpleicon@raspberrypiicon\endcsname {\simpleiconsmapnine\symbol{251}}
+ \expandafter\def\csname simpleicon@ravelryicon\endcsname {\simpleiconsmapnine\symbol{252}}
+ \expandafter\def\csname simpleicon@rayicon\endcsname {\simpleiconsmapnine\symbol{253}}
+ \expandafter\def\csname simpleicon@raycasticon\endcsname {\simpleiconsmapnine\symbol{254}}
+ \expandafter\def\csname simpleicon@raylibicon\endcsname {\simpleiconsmapnine\symbol{255}}
+ \expandafter\def\csname simpleicon@razericon\endcsname {\simpleiconsmaponezero\symbol{0}}
+ \expandafter\def\csname simpleicon@razorpayicon\endcsname {\simpleiconsmaponezero\symbol{1}}
+ \expandafter\def\csname simpleicon@rcloneicon\endcsname {\simpleiconsmaponezero\symbol{2}}
+ \expandafter\def\csname simpleicon@reacticon\endcsname {\simpleiconsmaponezero\symbol{3}}
+ \expandafter\def\csname simpleicon@reactbootstrapicon\endcsname {\simpleiconsmaponezero\symbol{4}}
+ \expandafter\def\csname simpleicon@reacthookformicon\endcsname {\simpleiconsmaponezero\symbol{5}}
+ \expandafter\def\csname simpleicon@reactiveresumeicon\endcsname {\simpleiconsmaponezero\symbol{6}}
+ \expandafter\def\csname simpleicon@reactivexicon\endcsname {\simpleiconsmaponezero\symbol{7}}
+ \expandafter\def\csname simpleicon@reactosicon\endcsname {\simpleiconsmaponezero\symbol{8}}
+ \expandafter\def\csname simpleicon@reactqueryicon\endcsname {\simpleiconsmaponezero\symbol{9}}
+ \expandafter\def\csname simpleicon@reactroutericon\endcsname {\simpleiconsmaponezero\symbol{10}}
+ \expandafter\def\csname simpleicon@reacttableicon\endcsname {\simpleiconsmaponezero\symbol{11}}
+ \expandafter\def\csname simpleicon@readdotcvicon\endcsname {\simpleiconsmaponezero\symbol{12}}
+ \expandafter\def\csname simpleicon@readmeicon\endcsname {\simpleiconsmaponezero\symbol{13}}
+ \expandafter\def\csname simpleicon@readthedocsicon\endcsname {\simpleiconsmaponezero\symbol{14}}
+ \expandafter\def\csname simpleicon@realmicon\endcsname {\simpleiconsmaponezero\symbol{15}}
+ \expandafter\def\csname simpleicon@reasonicon\endcsname {\simpleiconsmaponezero\symbol{16}}
+ \expandafter\def\csname simpleicon@reasonstudiosicon\endcsname {\simpleiconsmaponezero\symbol{17}}
+ \expandafter\def\csname simpleicon@recoilicon\endcsname {\simpleiconsmaponezero\symbol{18}}
+ \expandafter\def\csname simpleicon@redicon\endcsname {\simpleiconsmaponezero\symbol{19}}
+ \expandafter\def\csname simpleicon@redashicon\endcsname {\simpleiconsmaponezero\symbol{20}}
+ \expandafter\def\csname simpleicon@redbubbleicon\endcsname {\simpleiconsmaponezero\symbol{21}}
+ \expandafter\def\csname simpleicon@redbullicon\endcsname {\simpleiconsmaponezero\symbol{22}}
+ \expandafter\def\csname simpleicon@redcandlegamesicon\endcsname {\simpleiconsmaponezero\symbol{23}}
+ \expandafter\def\csname simpleicon@redditicon\endcsname {\simpleiconsmaponezero\symbol{24}}
+ \expandafter\def\csname simpleicon@redhaticon\endcsname {\simpleiconsmaponezero\symbol{25}}
+ \expandafter\def\csname simpleicon@redhatopenshifticon\endcsname {\simpleiconsmaponezero\symbol{26}}
+ \expandafter\def\csname simpleicon@redisicon\endcsname {\simpleiconsmaponezero\symbol{27}}
+ \expandafter\def\csname simpleicon@redmineicon\endcsname {\simpleiconsmaponezero\symbol{28}}
+ \expandafter\def\csname simpleicon@redoxicon\endcsname {\simpleiconsmaponezero\symbol{29}}
+ \expandafter\def\csname simpleicon@redragonicon\endcsname {\simpleiconsmaponezero\symbol{30}}
+ \expandafter\def\csname simpleicon@redsysicon\endcsname {\simpleiconsmaponezero\symbol{31}}
+ \expandafter\def\csname simpleicon@reduxicon\endcsname {\simpleiconsmaponezero\symbol{32}}
+ \expandafter\def\csname simpleicon@reduxsagaicon\endcsname {\simpleiconsmaponezero\symbol{33}}
+ \expandafter\def\csname simpleicon@redwoodjsicon\endcsname {\simpleiconsmaponezero\symbol{34}}
+ \expandafter\def\csname simpleicon@reebokicon\endcsname {\simpleiconsmaponezero\symbol{35}}
+ \expandafter\def\csname simpleicon@refineicon\endcsname {\simpleiconsmaponezero\symbol{36}}
+ \expandafter\def\csname simpleicon@relayicon\endcsname {\simpleiconsmaponezero\symbol{37}}
+ \expandafter\def\csname simpleicon@relianceindustrieslimitedicon\endcsname {\simpleiconsmaponezero\symbol{38}}
+ \expandafter\def\csname simpleicon@remarkicon\endcsname {\simpleiconsmaponezero\symbol{39}}
+ \expandafter\def\csname simpleicon@remedyentertainmenticon\endcsname {\simpleiconsmaponezero\symbol{40}}
+ \expandafter\def\csname simpleicon@remixicon\endcsname {\simpleiconsmaponezero\symbol{41}}
+ \expandafter\def\csname simpleicon@removedotbgicon\endcsname {\simpleiconsmaponezero\symbol{42}}
+ \expandafter\def\csname simpleicon@renaulticon\endcsname {\simpleiconsmaponezero\symbol{43}}
+ \expandafter\def\csname simpleicon@rendericon\endcsname {\simpleiconsmaponezero\symbol{44}}
+ \expandafter\def\csname simpleicon@renovateicon\endcsname {\simpleiconsmaponezero\symbol{45}}
+ \expandafter\def\csname simpleicon@renpyicon\endcsname {\simpleiconsmaponezero\symbol{46}}
+ \expandafter\def\csname simpleicon@renrenicon\endcsname {\simpleiconsmaponezero\symbol{47}}
+ \expandafter\def\csname simpleicon@repliticon\endcsname {\simpleiconsmaponezero\symbol{48}}
+ \expandafter\def\csname simpleicon@republicofgamersicon\endcsname {\simpleiconsmaponezero\symbol{49}}
+ \expandafter\def\csname simpleicon@rescripticon\endcsname {\simpleiconsmaponezero\symbol{50}}
+ \expandafter\def\csname simpleicon@rescuetimeicon\endcsname {\simpleiconsmaponezero\symbol{51}}
+ \expandafter\def\csname simpleicon@researchgateicon\endcsname {\simpleiconsmaponezero\symbol{52}}
+ \expandafter\def\csname simpleicon@resendicon\endcsname {\simpleiconsmaponezero\symbol{53}}
+ \expandafter\def\csname simpleicon@resharpericon\endcsname {\simpleiconsmaponezero\symbol{54}}
+ \expandafter\def\csname simpleicon@resurrectionremixosicon\endcsname {\simpleiconsmaponezero\symbol{55}}
+ \expandafter\def\csname simpleicon@retoolicon\endcsname {\simpleiconsmaponezero\symbol{56}}
+ \expandafter\def\csname simpleicon@retroarchicon\endcsname {\simpleiconsmaponezero\symbol{57}}
+ \expandafter\def\csname simpleicon@retropieicon\endcsname {\simpleiconsmaponezero\symbol{58}}
+ \expandafter\def\csname simpleicon@revancedicon\endcsname {\simpleiconsmaponezero\symbol{59}}
+ \expandafter\def\csname simpleicon@revealdotjsicon\endcsname {\simpleiconsmaponezero\symbol{60}}
+ \expandafter\def\csname simpleicon@reverbnationicon\endcsname {\simpleiconsmaponezero\symbol{61}}
+ \expandafter\def\csname simpleicon@revoltdotchaticon\endcsname {\simpleiconsmaponezero\symbol{62}}
+ \expandafter\def\csname simpleicon@revoluticon\endcsname {\simpleiconsmaponezero\symbol{63}}
+ \expandafter\def\csname simpleicon@revueicon\endcsname {\simpleiconsmaponezero\symbol{64}}
+ \expandafter\def\csname simpleicon@reweicon\endcsname {\simpleiconsmaponezero\symbol{65}}
+ \expandafter\def\csname simpleicon@rezgoicon\endcsname {\simpleiconsmaponezero\symbol{66}}
+ \expandafter\def\csname simpleicon@rhinocerosicon\endcsname {\simpleiconsmaponezero\symbol{67}}
+ \expandafter\def\csname simpleicon@richicon\endcsname {\simpleiconsmaponezero\symbol{68}}
+ \expandafter\def\csname simpleicon@ridericon\endcsname {\simpleiconsmaponezero\symbol{69}}
+ \expandafter\def\csname simpleicon@rimacautomobiliicon\endcsname {\simpleiconsmaponezero\symbol{70}}
+ \expandafter\def\csname simpleicon@rimeicon\endcsname {\simpleiconsmaponezero\symbol{71}}
+ \expandafter\def\csname simpleicon@ringicon\endcsname {\simpleiconsmaponezero\symbol{72}}
+ \expandafter\def\csname simpleicon@riotgamesicon\endcsname {\simpleiconsmaponezero\symbol{73}}
+ \expandafter\def\csname simpleicon@rippleicon\endcsname {\simpleiconsmaponezero\symbol{74}}
+ \expandafter\def\csname simpleicon@riscvicon\endcsname {\simpleiconsmaponezero\symbol{75}}
+ \expandafter\def\csname simpleicon@riseupicon\endcsname {\simpleiconsmaponezero\symbol{76}}
+ \expandafter\def\csname simpleicon@ritzcarltonicon\endcsname {\simpleiconsmaponezero\symbol{77}}
+ \expandafter\def\csname simpleicon@riveicon\endcsname {\simpleiconsmaponezero\symbol{78}}
+ \expandafter\def\csname simpleicon@roadmapdotshicon\endcsname {\simpleiconsmaponezero\symbol{79}}
+ \expandafter\def\csname simpleicon@roamresearchicon\endcsname {\simpleiconsmaponezero\symbol{80}}
+ \expandafter\def\csname simpleicon@robinhoodicon\endcsname {\simpleiconsmaponezero\symbol{81}}
+ \expandafter\def\csname simpleicon@robloxicon\endcsname {\simpleiconsmaponezero\symbol{82}}
+ \expandafter\def\csname simpleicon@robloxstudioicon\endcsname {\simpleiconsmaponezero\symbol{83}}
+ \expandafter\def\csname simpleicon@roboflowicon\endcsname {\simpleiconsmaponezero\symbol{84}}
+ \expandafter\def\csname simpleicon@robotframeworkicon\endcsname {\simpleiconsmaponezero\symbol{85}}
+ \expandafter\def\csname simpleicon@rocketicon\endcsname {\simpleiconsmaponezero\symbol{86}}
+ \expandafter\def\csname simpleicon@rocketdotchaticon\endcsname {\simpleiconsmaponezero\symbol{87}}
+ \expandafter\def\csname simpleicon@rocksdbicon\endcsname {\simpleiconsmaponezero\symbol{88}}
+ \expandafter\def\csname simpleicon@rockstargamesicon\endcsname {\simpleiconsmaponezero\symbol{89}}
+ \expandafter\def\csname simpleicon@rockwellautomationicon\endcsname {\simpleiconsmaponezero\symbol{90}}
+ \expandafter\def\csname simpleicon@rockylinuxicon\endcsname {\simpleiconsmaponezero\symbol{91}}
+ \expandafter\def\csname simpleicon@rokuicon\endcsname {\simpleiconsmaponezero\symbol{92}}
+ \expandafter\def\csname simpleicon@roll20icon\endcsname {\simpleiconsmaponezero\symbol{93}}
+ \expandafter\def\csname simpleicon@rollsroyceicon\endcsname {\simpleiconsmaponezero\symbol{94}}
+ \expandafter\def\csname simpleicon@rollupdotjsicon\endcsname {\simpleiconsmaponezero\symbol{95}}
+ \expandafter\def\csname simpleicon@roonicon\endcsname {\simpleiconsmaponezero\symbol{96}}
+ \expandafter\def\csname simpleicon@rootmeicon\endcsname {\simpleiconsmaponezero\symbol{97}}
+ \expandafter\def\csname simpleicon@rootsicon\endcsname {\simpleiconsmaponezero\symbol{98}}
+ \expandafter\def\csname simpleicon@rootsbedrockicon\endcsname {\simpleiconsmaponezero\symbol{99}}
+ \expandafter\def\csname simpleicon@rootssageicon\endcsname {\simpleiconsmaponezero\symbol{100}}
+ \expandafter\def\csname simpleicon@rosicon\endcsname {\simpleiconsmaponezero\symbol{101}}
+ \expandafter\def\csname simpleicon@rossmannicon\endcsname {\simpleiconsmaponezero\symbol{102}}
+ \expandafter\def\csname simpleicon@rotaryinternationalicon\endcsname {\simpleiconsmaponezero\symbol{103}}
+ \expandafter\def\csname simpleicon@rottentomatoesicon\endcsname {\simpleiconsmaponezero\symbol{104}}
+ \expandafter\def\csname simpleicon@roundcubeicon\endcsname {\simpleiconsmaponezero\symbol{105}}
+ \expandafter\def\csname simpleicon@rsocketicon\endcsname {\simpleiconsmaponezero\symbol{106}}
+ \expandafter\def\csname simpleicon@rssicon\endcsname {\simpleiconsmaponezero\symbol{107}}
+ \expandafter\def\csname simpleicon@rstudioideicon\endcsname {\simpleiconsmaponezero\symbol{108}}
+ \expandafter\def\csname simpleicon@rteicon\endcsname {\simpleiconsmaponezero\symbol{109}}
+ \expandafter\def\csname simpleicon@rtlicon\endcsname {\simpleiconsmaponezero\symbol{110}}
+ \expandafter\def\csname simpleicon@rtlzweiicon\endcsname {\simpleiconsmaponezero\symbol{111}}
+ \expandafter\def\csname simpleicon@rtmicon\endcsname {\simpleiconsmaponezero\symbol{112}}
+ \expandafter\def\csname simpleicon@rubocopicon\endcsname {\simpleiconsmaponezero\symbol{113}}
+ \expandafter\def\csname simpleicon@rubyicon\endcsname {\simpleiconsmaponezero\symbol{114}}
+ \expandafter\def\csname simpleicon@rubygemsicon\endcsname {\simpleiconsmaponezero\symbol{115}}
+ \expandafter\def\csname simpleicon@rubymineicon\endcsname {\simpleiconsmaponezero\symbol{116}}
+ \expandafter\def\csname simpleicon@rubyonrailsicon\endcsname {\simpleiconsmaponezero\symbol{117}}
+ \expandafter\def\csname simpleicon@rubysinatraicon\endcsname {\simpleiconsmaponezero\symbol{118}}
+ \expandafter\def\csname simpleicon@rufficon\endcsname {\simpleiconsmaponezero\symbol{119}}
+ \expandafter\def\csname simpleicon@rumahwebicon\endcsname {\simpleiconsmaponezero\symbol{120}}
+ \expandafter\def\csname simpleicon@rumbleicon\endcsname {\simpleiconsmaponezero\symbol{121}}
+ \expandafter\def\csname simpleicon@rundeckicon\endcsname {\simpleiconsmaponezero\symbol{122}}
+ \expandafter\def\csname simpleicon@runkeepericon\endcsname {\simpleiconsmaponezero\symbol{123}}
+ \expandafter\def\csname simpleicon@runkiticon\endcsname {\simpleiconsmaponezero\symbol{124}}
+ \expandafter\def\csname simpleicon@runrundotiticon\endcsname {\simpleiconsmaponezero\symbol{125}}
+ \expandafter\def\csname simpleicon@rusticon\endcsname {\simpleiconsmaponezero\symbol{126}}
+ \expandafter\def\csname simpleicon@rustdeskicon\endcsname {\simpleiconsmaponezero\symbol{127}}
+ \expandafter\def\csname simpleicon@rxdbicon\endcsname {\simpleiconsmaponezero\symbol{128}}
+ \expandafter\def\csname simpleicon@ryanairicon\endcsname {\simpleiconsmaponezero\symbol{129}}
+ \expandafter\def\csname simpleicon@ryeicon\endcsname {\simpleiconsmaponezero\symbol{130}}
+ \expandafter\def\csname simpleicon@s7airlinesicon\endcsname {\simpleiconsmaponezero\symbol{131}}
+ \expandafter\def\csname simpleicon@sabanciicon\endcsname {\simpleiconsmaponezero\symbol{132}}
+ \expandafter\def\csname simpleicon@safariicon\endcsname {\simpleiconsmaponezero\symbol{133}}
+ \expandafter\def\csname simpleicon@sageicon\endcsname {\simpleiconsmaponezero\symbol{134}}
+ \expandafter\def\csname simpleicon@sahibindenicon\endcsname {\simpleiconsmaponezero\symbol{135}}
+ \expandafter\def\csname simpleicon@sailfishosicon\endcsname {\simpleiconsmaponezero\symbol{136}}
+ \expandafter\def\csname simpleicon@sailsdotjsicon\endcsname {\simpleiconsmaponezero\symbol{137}}
+ \expandafter\def\csname simpleicon@salesforceicon\endcsname {\simpleiconsmaponezero\symbol{138}}
+ \expandafter\def\csname simpleicon@sallaicon\endcsname {\simpleiconsmaponezero\symbol{139}}
+ \expandafter\def\csname simpleicon@saltprojecticon\endcsname {\simpleiconsmaponezero\symbol{140}}
+ \expandafter\def\csname simpleicon@samsclubicon\endcsname {\simpleiconsmaponezero\symbol{141}}
+ \expandafter\def\csname simpleicon@samsungicon\endcsname {\simpleiconsmaponezero\symbol{142}}
+ \expandafter\def\csname simpleicon@samsungpayicon\endcsname {\simpleiconsmaponezero\symbol{143}}
+ \expandafter\def\csname simpleicon@sandiskicon\endcsname {\simpleiconsmaponezero\symbol{144}}
+ \expandafter\def\csname simpleicon@sanfranciscomunicipalrailwayicon\endcsname {\simpleiconsmaponezero\symbol{145}}
+ \expandafter\def\csname simpleicon@sanicicon\endcsname {\simpleiconsmaponezero\symbol{146}}
+ \expandafter\def\csname simpleicon@sanityicon\endcsname {\simpleiconsmaponezero\symbol{147}}
+ \expandafter\def\csname simpleicon@saopaulometroicon\endcsname {\simpleiconsmaponezero\symbol{148}}
+ \expandafter\def\csname simpleicon@sapicon\endcsname {\simpleiconsmaponezero\symbol{149}}
+ \expandafter\def\csname simpleicon@sartoriusicon\endcsname {\simpleiconsmaponezero\symbol{150}}
+ \expandafter\def\csname simpleicon@sassicon\endcsname {\simpleiconsmaponezero\symbol{151}}
+ \expandafter\def\csname simpleicon@sat1icon\endcsname {\simpleiconsmaponezero\symbol{152}}
+ \expandafter\def\csname simpleicon@satelliteicon\endcsname {\simpleiconsmaponezero\symbol{153}}
+ \expandafter\def\csname simpleicon@saturnicon\endcsname {\simpleiconsmaponezero\symbol{154}}
+ \expandafter\def\csname simpleicon@saucelabsicon\endcsname {\simpleiconsmaponezero\symbol{155}}
+ \expandafter\def\csname simpleicon@saudiaicon\endcsname {\simpleiconsmaponezero\symbol{156}}
+ \expandafter\def\csname simpleicon@scalaicon\endcsname {\simpleiconsmaponezero\symbol{157}}
+ \expandafter\def\csname simpleicon@scalewayicon\endcsname {\simpleiconsmaponezero\symbol{158}}
+ \expandafter\def\csname simpleicon@scaniaicon\endcsname {\simpleiconsmaponezero\symbol{159}}
+ \expandafter\def\csname simpleicon@schneiderelectricicon\endcsname {\simpleiconsmaponezero\symbol{160}}
+ \expandafter\def\csname simpleicon@scikitlearnicon\endcsname {\simpleiconsmaponezero\symbol{161}}
+ \expandafter\def\csname simpleicon@scilabicon\endcsname {\simpleiconsmaponezero\symbol{162}}
+ \expandafter\def\csname simpleicon@scipyicon\endcsname {\simpleiconsmaponezero\symbol{163}}
+ \expandafter\def\csname simpleicon@scopusicon\endcsname {\simpleiconsmaponezero\symbol{164}}
+ \expandafter\def\csname simpleicon@scpfoundationicon\endcsname {\simpleiconsmaponezero\symbol{165}}
+ \expandafter\def\csname simpleicon@scrapboxicon\endcsname {\simpleiconsmaponezero\symbol{166}}
+ \expandafter\def\csname simpleicon@scrapyicon\endcsname {\simpleiconsmaponezero\symbol{167}}
+ \expandafter\def\csname simpleicon@scratchicon\endcsname {\simpleiconsmaponezero\symbol{168}}
+ \expandafter\def\csname simpleicon@screencastifyicon\endcsname {\simpleiconsmaponezero\symbol{169}}
+ \expandafter\def\csname simpleicon@scribdicon\endcsname {\simpleiconsmaponezero\symbol{170}}
+ \expandafter\def\csname simpleicon@scrimbaicon\endcsname {\simpleiconsmaponezero\symbol{171}}
+ \expandafter\def\csname simpleicon@scrollrevealicon\endcsname {\simpleiconsmaponezero\symbol{172}}
+ \expandafter\def\csname simpleicon@scrumallianceicon\endcsname {\simpleiconsmaponezero\symbol{173}}
+ \expandafter\def\csname simpleicon@scrutinizerciicon\endcsname {\simpleiconsmaponezero\symbol{174}}
+ \expandafter\def\csname simpleicon@scylladbicon\endcsname {\simpleiconsmaponezero\symbol{175}}
+ \expandafter\def\csname simpleicon@seagateicon\endcsname {\simpleiconsmaponezero\symbol{176}}
+ \expandafter\def\csname simpleicon@searxngicon\endcsname {\simpleiconsmaponezero\symbol{177}}
+ \expandafter\def\csname simpleicon@seaticon\endcsname {\simpleiconsmaponezero\symbol{178}}
+ \expandafter\def\csname simpleicon@seatgeekicon\endcsname {\simpleiconsmaponezero\symbol{179}}
+ \expandafter\def\csname simpleicon@securityscorecardicon\endcsname {\simpleiconsmaponezero\symbol{180}}
+ \expandafter\def\csname simpleicon@sefariaicon\endcsname {\simpleiconsmaponezero\symbol{181}}
+ \expandafter\def\csname simpleicon@segaicon\endcsname {\simpleiconsmaponezero\symbol{182}}
+ \expandafter\def\csname simpleicon@seleniumicon\endcsname {\simpleiconsmaponezero\symbol{183}}
+ \expandafter\def\csname simpleicon@sellfyicon\endcsname {\simpleiconsmaponezero\symbol{184}}
+ \expandafter\def\csname simpleicon@semanticreleaseicon\endcsname {\simpleiconsmaponezero\symbol{185}}
+ \expandafter\def\csname simpleicon@semanticscholaricon\endcsname {\simpleiconsmaponezero\symbol{186}}
+ \expandafter\def\csname simpleicon@semanticuiicon\endcsname {\simpleiconsmaponezero\symbol{187}}
+ \expandafter\def\csname simpleicon@semanticuireacticon\endcsname {\simpleiconsmaponezero\symbol{188}}
+ \expandafter\def\csname simpleicon@semanticwebicon\endcsname {\simpleiconsmaponezero\symbol{189}}
+ \expandafter\def\csname simpleicon@semaphoreciicon\endcsname {\simpleiconsmaponezero\symbol{190}}
+ \expandafter\def\csname simpleicon@semrushicon\endcsname {\simpleiconsmaponezero\symbol{191}}
+ \expandafter\def\csname simpleicon@semvericon\endcsname {\simpleiconsmaponezero\symbol{192}}
+ \expandafter\def\csname simpleicon@senchaicon\endcsname {\simpleiconsmaponezero\symbol{193}}
+ \expandafter\def\csname simpleicon@sendgridicon\endcsname {\simpleiconsmaponezero\symbol{194}}
+ \expandafter\def\csname simpleicon@sennheisericon\endcsname {\simpleiconsmaponezero\symbol{195}}
+ \expandafter\def\csname simpleicon@sensuicon\endcsname {\simpleiconsmaponezero\symbol{196}}
+ \expandafter\def\csname simpleicon@sentryicon\endcsname {\simpleiconsmaponezero\symbol{197}}
+ \expandafter\def\csname simpleicon@sepaicon\endcsname {\simpleiconsmaponezero\symbol{198}}
+ \expandafter\def\csname simpleicon@sequelizeicon\endcsname {\simpleiconsmaponezero\symbol{199}}
+ \expandafter\def\csname simpleicon@serverfaulticon\endcsname {\simpleiconsmaponezero\symbol{200}}
+ \expandafter\def\csname simpleicon@serverlessicon\endcsname {\simpleiconsmaponezero\symbol{201}}
+ \expandafter\def\csname simpleicon@sessionicon\endcsname {\simpleiconsmaponezero\symbol{202}}
+ \expandafter\def\csname simpleicon@sessionizeicon\endcsname {\simpleiconsmaponezero\symbol{203}}
+ \expandafter\def\csname simpleicon@setappicon\endcsname {\simpleiconsmaponezero\symbol{204}}
+ \expandafter\def\csname simpleicon@sfmlicon\endcsname {\simpleiconsmaponezero\symbol{205}}
+ \expandafter\def\csname simpleicon@shadcnuiicon\endcsname {\simpleiconsmaponezero\symbol{206}}
+ \expandafter\def\csname simpleicon@shadowicon\endcsname {\simpleiconsmaponezero\symbol{207}}
+ \expandafter\def\csname simpleicon@shanghaimetroicon\endcsname {\simpleiconsmaponezero\symbol{208}}
+ \expandafter\def\csname simpleicon@sharexicon\endcsname {\simpleiconsmaponezero\symbol{209}}
+ \expandafter\def\csname simpleicon@sharpicon\endcsname {\simpleiconsmaponezero\symbol{210}}
+ \expandafter\def\csname simpleicon@shazamicon\endcsname {\simpleiconsmaponezero\symbol{211}}
+ \expandafter\def\csname simpleicon@shellicon\endcsname {\simpleiconsmaponezero\symbol{212}}
+ \expandafter\def\csname simpleicon@shellyicon\endcsname {\simpleiconsmaponezero\symbol{213}}
+ \expandafter\def\csname simpleicon@shenzhenmetroicon\endcsname {\simpleiconsmaponezero\symbol{214}}
+ \expandafter\def\csname simpleicon@shieldsdotioicon\endcsname {\simpleiconsmaponezero\symbol{215}}
+ \expandafter\def\csname simpleicon@shikimoriicon\endcsname {\simpleiconsmaponezero\symbol{216}}
+ \expandafter\def\csname simpleicon@shopeeicon\endcsname {\simpleiconsmaponezero\symbol{217}}
+ \expandafter\def\csname simpleicon@shopifyicon\endcsname {\simpleiconsmaponezero\symbol{218}}
+ \expandafter\def\csname simpleicon@shopwareicon\endcsname {\simpleiconsmaponezero\symbol{219}}
+ \expandafter\def\csname simpleicon@shortcuticon\endcsname {\simpleiconsmaponezero\symbol{220}}
+ \expandafter\def\csname simpleicon@showpadicon\endcsname {\simpleiconsmaponezero\symbol{221}}
+ \expandafter\def\csname simpleicon@showtimeicon\endcsname {\simpleiconsmaponezero\symbol{222}}
+ \expandafter\def\csname simpleicon@showwcaseicon\endcsname {\simpleiconsmaponezero\symbol{223}}
+ \expandafter\def\csname simpleicon@shutterstockicon\endcsname {\simpleiconsmaponezero\symbol{224}}
+ \expandafter\def\csname simpleicon@sidekiqicon\endcsname {\simpleiconsmaponezero\symbol{225}}
+ \expandafter\def\csname simpleicon@sidequesticon\endcsname {\simpleiconsmaponezero\symbol{226}}
+ \expandafter\def\csname simpleicon@siemensicon\endcsname {\simpleiconsmaponezero\symbol{227}}
+ \expandafter\def\csname simpleicon@sifiveicon\endcsname {\simpleiconsmaponezero\symbol{228}}
+ \expandafter\def\csname simpleicon@signalicon\endcsname {\simpleiconsmaponezero\symbol{229}}
+ \expandafter\def\csname simpleicon@similarwebicon\endcsname {\simpleiconsmaponezero\symbol{230}}
+ \expandafter\def\csname simpleicon@simklicon\endcsname {\simpleiconsmaponezero\symbol{231}}
+ \expandafter\def\csname simpleicon@simpleanalyticsicon\endcsname {\simpleiconsmaponezero\symbol{232}}
+ \expandafter\def\csname simpleicon@simpleiconsicon\endcsname {\simpleiconsmaponezero\symbol{233}}
+ \expandafter\def\csname simpleicon@simpleloginicon\endcsname {\simpleiconsmaponezero\symbol{234}}
+ \expandafter\def\csname simpleicon@simplenoteicon\endcsname {\simpleiconsmaponezero\symbol{235}}
+ \expandafter\def\csname simpleicon@sinaweiboicon\endcsname {\simpleiconsmaponezero\symbol{236}}
+ \expandafter\def\csname simpleicon@singaporeairlinesicon\endcsname {\simpleiconsmaponezero\symbol{237}}
+ \expandafter\def\csname simpleicon@singlestoreicon\endcsname {\simpleiconsmaponezero\symbol{238}}
+ \expandafter\def\csname simpleicon@sitecoreicon\endcsname {\simpleiconsmaponezero\symbol{239}}
+ \expandafter\def\csname simpleicon@sitepointicon\endcsname {\simpleiconsmaponezero\symbol{240}}
+ \expandafter\def\csname simpleicon@siyuanicon\endcsname {\simpleiconsmaponezero\symbol{241}}
+ \expandafter\def\csname simpleicon@skaffoldicon\endcsname {\simpleiconsmaponezero\symbol{242}}
+ \expandafter\def\csname simpleicon@sketchicon\endcsname {\simpleiconsmaponezero\symbol{243}}
+ \expandafter\def\csname simpleicon@sketchfabicon\endcsname {\simpleiconsmaponezero\symbol{244}}
+ \expandafter\def\csname simpleicon@sketchupicon\endcsname {\simpleiconsmaponezero\symbol{245}}
+ \expandafter\def\csname simpleicon@skillshareicon\endcsname {\simpleiconsmaponezero\symbol{246}}
+ \expandafter\def\csname simpleicon@skodaicon\endcsname {\simpleiconsmaponezero\symbol{247}}
+ \expandafter\def\csname simpleicon@skyicon\endcsname {\simpleiconsmaponezero\symbol{248}}
+ \expandafter\def\csname simpleicon@skypackicon\endcsname {\simpleiconsmaponezero\symbol{249}}
+ \expandafter\def\csname simpleicon@skyrockicon\endcsname {\simpleiconsmaponezero\symbol{250}}
+ \expandafter\def\csname simpleicon@slackicon\endcsname {\simpleiconsmaponezero\symbol{251}}
+ \expandafter\def\csname simpleicon@slackwareicon\endcsname {\simpleiconsmaponezero\symbol{252}}
+ \expandafter\def\csname simpleicon@slashdoticon\endcsname {\simpleiconsmaponezero\symbol{253}}
+ \expandafter\def\csname simpleicon@slickpicicon\endcsname {\simpleiconsmaponezero\symbol{254}}
+ \expandafter\def\csname simpleicon@slidesicon\endcsname {\simpleiconsmaponezero\symbol{255}}
+ \expandafter\def\csname simpleicon@slideshareicon\endcsname {\simpleiconsmaponeone\symbol{0}}
+ \expandafter\def\csname simpleicon@slinticon\endcsname {\simpleiconsmaponeone\symbol{1}}
+ \expandafter\def\csname simpleicon@smarticon\endcsname {\simpleiconsmaponeone\symbol{2}}
+ \expandafter\def\csname simpleicon@smartthingsicon\endcsname {\simpleiconsmaponeone\symbol{3}}
+ \expandafter\def\csname simpleicon@smashdotggicon\endcsname {\simpleiconsmaponeone\symbol{4}}
+ \expandafter\def\csname simpleicon@smashingmagazineicon\endcsname {\simpleiconsmaponeone\symbol{5}}
+ \expandafter\def\csname simpleicon@smrticon\endcsname {\simpleiconsmaponeone\symbol{6}}
+ \expandafter\def\csname simpleicon@smugmugicon\endcsname {\simpleiconsmaponeone\symbol{7}}
+ \expandafter\def\csname simpleicon@snapchaticon\endcsname {\simpleiconsmaponeone\symbol{8}}
+ \expandafter\def\csname simpleicon@snapcrafticon\endcsname {\simpleiconsmaponeone\symbol{9}}
+ \expandafter\def\csname simpleicon@sncficon\endcsname {\simpleiconsmaponeone\symbol{10}}
+ \expandafter\def\csname simpleicon@snorticon\endcsname {\simpleiconsmaponeone\symbol{11}}
+ \expandafter\def\csname simpleicon@snowflakeicon\endcsname {\simpleiconsmaponeone\symbol{12}}
+ \expandafter\def\csname simpleicon@snowpackicon\endcsname {\simpleiconsmaponeone\symbol{13}}
+ \expandafter\def\csname simpleicon@snykicon\endcsname {\simpleiconsmaponeone\symbol{14}}
+ \expandafter\def\csname simpleicon@socialbladeicon\endcsname {\simpleiconsmaponeone\symbol{15}}
+ \expandafter\def\csname simpleicon@society6icon\endcsname {\simpleiconsmaponeone\symbol{16}}
+ \expandafter\def\csname simpleicon@socketdotioicon\endcsname {\simpleiconsmaponeone\symbol{17}}
+ \expandafter\def\csname simpleicon@softpediaicon\endcsname {\simpleiconsmaponeone\symbol{18}}
+ \expandafter\def\csname simpleicon@sogouicon\endcsname {\simpleiconsmaponeone\symbol{19}}
+ \expandafter\def\csname simpleicon@solanaicon\endcsname {\simpleiconsmaponeone\symbol{20}}
+ \expandafter\def\csname simpleicon@solidicon\endcsname {\simpleiconsmaponeone\symbol{21}}
+ \expandafter\def\csname simpleicon@solidityicon\endcsname {\simpleiconsmaponeone\symbol{22}}
+ \expandafter\def\csname simpleicon@sololearnicon\endcsname {\simpleiconsmaponeone\symbol{23}}
+ \expandafter\def\csname simpleicon@solusicon\endcsname {\simpleiconsmaponeone\symbol{24}}
+ \expandafter\def\csname simpleicon@sonaricon\endcsname {\simpleiconsmaponeone\symbol{25}}
+ \expandafter\def\csname simpleicon@sonarcloudicon\endcsname {\simpleiconsmaponeone\symbol{26}}
+ \expandafter\def\csname simpleicon@sonarlinticon\endcsname {\simpleiconsmaponeone\symbol{27}}
+ \expandafter\def\csname simpleicon@sonarqubeicon\endcsname {\simpleiconsmaponeone\symbol{28}}
+ \expandafter\def\csname simpleicon@sonarricon\endcsname {\simpleiconsmaponeone\symbol{29}}
+ \expandafter\def\csname simpleicon@sonatypeicon\endcsname {\simpleiconsmaponeone\symbol{30}}
+ \expandafter\def\csname simpleicon@songkickicon\endcsname {\simpleiconsmaponeone\symbol{31}}
+ \expandafter\def\csname simpleicon@songodaicon\endcsname {\simpleiconsmaponeone\symbol{32}}
+ \expandafter\def\csname simpleicon@sonicwallicon\endcsname {\simpleiconsmaponeone\symbol{33}}
+ \expandafter\def\csname simpleicon@sonosicon\endcsname {\simpleiconsmaponeone\symbol{34}}
+ \expandafter\def\csname simpleicon@sonyicon\endcsname {\simpleiconsmaponeone\symbol{35}}
+ \expandafter\def\csname simpleicon@sorianaicon\endcsname {\simpleiconsmaponeone\symbol{36}}
+ \expandafter\def\csname simpleicon@soundchartsicon\endcsname {\simpleiconsmaponeone\symbol{37}}
+ \expandafter\def\csname simpleicon@soundcloudicon\endcsname {\simpleiconsmaponeone\symbol{38}}
+ \expandafter\def\csname simpleicon@sourceengineicon\endcsname {\simpleiconsmaponeone\symbol{39}}
+ \expandafter\def\csname simpleicon@sourceforgeicon\endcsname {\simpleiconsmaponeone\symbol{40}}
+ \expandafter\def\csname simpleicon@sourcehuticon\endcsname {\simpleiconsmaponeone\symbol{41}}
+ \expandafter\def\csname simpleicon@sourcetreeicon\endcsname {\simpleiconsmaponeone\symbol{42}}
+ \expandafter\def\csname simpleicon@southwestairlinesicon\endcsname {\simpleiconsmaponeone\symbol{43}}
+ \expandafter\def\csname simpleicon@spacemacsicon\endcsname {\simpleiconsmaponeone\symbol{44}}
+ \expandafter\def\csname simpleicon@spaceshipicon\endcsname {\simpleiconsmaponeone\symbol{45}}
+ \expandafter\def\csname simpleicon@spacexicon\endcsname {\simpleiconsmaponeone\symbol{46}}
+ \expandafter\def\csname simpleicon@spacyicon\endcsname {\simpleiconsmaponeone\symbol{47}}
+ \expandafter\def\csname simpleicon@sparkaricon\endcsname {\simpleiconsmaponeone\symbol{48}}
+ \expandafter\def\csname simpleicon@sparkasseicon\endcsname {\simpleiconsmaponeone\symbol{49}}
+ \expandafter\def\csname simpleicon@sparkfunicon\endcsname {\simpleiconsmaponeone\symbol{50}}
+ \expandafter\def\csname simpleicon@sparkposticon\endcsname {\simpleiconsmaponeone\symbol{51}}
+ \expandafter\def\csname simpleicon@spdxicon\endcsname {\simpleiconsmaponeone\symbol{52}}
+ \expandafter\def\csname simpleicon@speakerdeckicon\endcsname {\simpleiconsmaponeone\symbol{53}}
+ \expandafter\def\csname simpleicon@spectrumicon\endcsname {\simpleiconsmaponeone\symbol{54}}
+ \expandafter\def\csname simpleicon@speedtesticon\endcsname {\simpleiconsmaponeone\symbol{55}}
+ \expandafter\def\csname simpleicon@speedypageicon\endcsname {\simpleiconsmaponeone\symbol{56}}
+ \expandafter\def\csname simpleicon@sphinxicon\endcsname {\simpleiconsmaponeone\symbol{57}}
+ \expandafter\def\csname simpleicon@spigotmcicon\endcsname {\simpleiconsmaponeone\symbol{58}}
+ \expandafter\def\csname simpleicon@spineicon\endcsname {\simpleiconsmaponeone\symbol{59}}
+ \expandafter\def\csname simpleicon@spinnakericon\endcsname {\simpleiconsmaponeone\symbol{60}}
+ \expandafter\def\csname simpleicon@spinrillaicon\endcsname {\simpleiconsmaponeone\symbol{61}}
+ \expandafter\def\csname simpleicon@splunkicon\endcsname {\simpleiconsmaponeone\symbol{62}}
+ \expandafter\def\csname simpleicon@spojicon\endcsname {\simpleiconsmaponeone\symbol{63}}
+ \expandafter\def\csname simpleicon@spondicon\endcsname {\simpleiconsmaponeone\symbol{64}}
+ \expandafter\def\csname simpleicon@spotifyicon\endcsname {\simpleiconsmaponeone\symbol{65}}
+ \expandafter\def\csname simpleicon@spotlighticon\endcsname {\simpleiconsmaponeone\symbol{66}}
+ \expandafter\def\csname simpleicon@spreadshirticon\endcsname {\simpleiconsmaponeone\symbol{67}}
+ \expandafter\def\csname simpleicon@spreakericon\endcsname {\simpleiconsmaponeone\symbol{68}}
+ \expandafter\def\csname simpleicon@springicon\endcsname {\simpleiconsmaponeone\symbol{69}}
+ \expandafter\def\csname simpleicon@springcreatorsicon\endcsname {\simpleiconsmaponeone\symbol{70}}
+ \expandafter\def\csname simpleicon@springbooticon\endcsname {\simpleiconsmaponeone\symbol{71}}
+ \expandafter\def\csname simpleicon@springsecurityicon\endcsname {\simpleiconsmaponeone\symbol{72}}
+ \expandafter\def\csname simpleicon@spyderideicon\endcsname {\simpleiconsmaponeone\symbol{73}}
+ \expandafter\def\csname simpleicon@sqlalchemyicon\endcsname {\simpleiconsmaponeone\symbol{74}}
+ \expandafter\def\csname simpleicon@sqliteicon\endcsname {\simpleiconsmaponeone\symbol{75}}
+ \expandafter\def\csname simpleicon@squareicon\endcsname {\simpleiconsmaponeone\symbol{76}}
+ \expandafter\def\csname simpleicon@squareenixicon\endcsname {\simpleiconsmaponeone\symbol{77}}
+ \expandafter\def\csname simpleicon@squarespaceicon\endcsname {\simpleiconsmaponeone\symbol{78}}
+ \expandafter\def\csname simpleicon@srgssricon\endcsname {\simpleiconsmaponeone\symbol{79}}
+ \expandafter\def\csname simpleicon@ssrnicon\endcsname {\simpleiconsmaponeone\symbol{80}}
+ \expandafter\def\csname simpleicon@ssticon\endcsname {\simpleiconsmaponeone\symbol{81}}
+ \expandafter\def\csname simpleicon@stackbiticon\endcsname {\simpleiconsmaponeone\symbol{82}}
+ \expandafter\def\csname simpleicon@stackblitzicon\endcsname {\simpleiconsmaponeone\symbol{83}}
+ \expandafter\def\csname simpleicon@stackediticon\endcsname {\simpleiconsmaponeone\symbol{84}}
+ \expandafter\def\csname simpleicon@stackexchangeicon\endcsname {\simpleiconsmaponeone\symbol{85}}
+ \expandafter\def\csname simpleicon@stackhawkicon\endcsname {\simpleiconsmaponeone\symbol{86}}
+ \expandafter\def\csname simpleicon@stackoverflowicon\endcsname {\simpleiconsmaponeone\symbol{87}}
+ \expandafter\def\csname simpleicon@stackpathicon\endcsname {\simpleiconsmaponeone\symbol{88}}
+ \expandafter\def\csname simpleicon@stackshareicon\endcsname {\simpleiconsmaponeone\symbol{89}}
+ \expandafter\def\csname simpleicon@stadiaicon\endcsname {\simpleiconsmaponeone\symbol{90}}
+ \expandafter\def\csname simpleicon@staffbaseicon\endcsname {\simpleiconsmaponeone\symbol{91}}
+ \expandafter\def\csname simpleicon@stagetimericon\endcsname {\simpleiconsmaponeone\symbol{92}}
+ \expandafter\def\csname simpleicon@standardjsicon\endcsname {\simpleiconsmaponeone\symbol{93}}
+ \expandafter\def\csname simpleicon@standardresumeicon\endcsname {\simpleiconsmaponeone\symbol{94}}
+ \expandafter\def\csname simpleicon@starbucksicon\endcsname {\simpleiconsmaponeone\symbol{95}}
+ \expandafter\def\csname simpleicon@stardockicon\endcsname {\simpleiconsmaponeone\symbol{96}}
+ \expandafter\def\csname simpleicon@starlingbankicon\endcsname {\simpleiconsmaponeone\symbol{97}}
+ \expandafter\def\csname simpleicon@starshipicon\endcsname {\simpleiconsmaponeone\symbol{98}}
+ \expandafter\def\csname simpleicon@startrekicon\endcsname {\simpleiconsmaponeone\symbol{99}}
+ \expandafter\def\csname simpleicon@starzicon\endcsname {\simpleiconsmaponeone\symbol{100}}
+ \expandafter\def\csname simpleicon@statamicicon\endcsname {\simpleiconsmaponeone\symbol{101}}
+ \expandafter\def\csname simpleicon@statistaicon\endcsname {\simpleiconsmaponeone\symbol{102}}
+ \expandafter\def\csname simpleicon@statuspageicon\endcsname {\simpleiconsmaponeone\symbol{103}}
+ \expandafter\def\csname simpleicon@statuspalicon\endcsname {\simpleiconsmaponeone\symbol{104}}
+ \expandafter\def\csname simpleicon@steamicon\endcsname {\simpleiconsmaponeone\symbol{105}}
+ \expandafter\def\csname simpleicon@steamdbicon\endcsname {\simpleiconsmaponeone\symbol{106}}
+ \expandafter\def\csname simpleicon@steamdeckicon\endcsname {\simpleiconsmaponeone\symbol{107}}
+ \expandafter\def\csname simpleicon@steamworksicon\endcsname {\simpleiconsmaponeone\symbol{108}}
+ \expandafter\def\csname simpleicon@steelseriesicon\endcsname {\simpleiconsmaponeone\symbol{109}}
+ \expandafter\def\csname simpleicon@steemicon\endcsname {\simpleiconsmaponeone\symbol{110}}
+ \expandafter\def\csname simpleicon@steemiticon\endcsname {\simpleiconsmaponeone\symbol{111}}
+ \expandafter\def\csname simpleicon@steinbergicon\endcsname {\simpleiconsmaponeone\symbol{112}}
+ \expandafter\def\csname simpleicon@stellaricon\endcsname {\simpleiconsmaponeone\symbol{113}}
+ \expandafter\def\csname simpleicon@stencilicon\endcsname {\simpleiconsmaponeone\symbol{114}}
+ \expandafter\def\csname simpleicon@stencylicon\endcsname {\simpleiconsmaponeone\symbol{115}}
+ \expandafter\def\csname simpleicon@stimulusicon\endcsname {\simpleiconsmaponeone\symbol{116}}
+ \expandafter\def\csname simpleicon@stitchericon\endcsname {\simpleiconsmaponeone\symbol{117}}
+ \expandafter\def\csname simpleicon@stmicroelectronicsicon\endcsname {\simpleiconsmaponeone\symbol{118}}
+ \expandafter\def\csname simpleicon@stockxicon\endcsname {\simpleiconsmaponeone\symbol{119}}
+ \expandafter\def\csname simpleicon@stopstalkicon\endcsname {\simpleiconsmaponeone\symbol{120}}
+ \expandafter\def\csname simpleicon@storyblokicon\endcsname {\simpleiconsmaponeone\symbol{121}}
+ \expandafter\def\csname simpleicon@storybookicon\endcsname {\simpleiconsmaponeone\symbol{122}}
+ \expandafter\def\csname simpleicon@strapiicon\endcsname {\simpleiconsmaponeone\symbol{123}}
+ \expandafter\def\csname simpleicon@stravaicon\endcsname {\simpleiconsmaponeone\symbol{124}}
+ \expandafter\def\csname simpleicon@streamlabsicon\endcsname {\simpleiconsmaponeone\symbol{125}}
+ \expandafter\def\csname simpleicon@streamliticon\endcsname {\simpleiconsmaponeone\symbol{126}}
+ \expandafter\def\csname simpleicon@streamrunnersicon\endcsname {\simpleiconsmaponeone\symbol{127}}
+ \expandafter\def\csname simpleicon@stripeicon\endcsname {\simpleiconsmaponeone\symbol{128}}
+ \expandafter\def\csname simpleicon@strongswanicon\endcsname {\simpleiconsmaponeone\symbol{129}}
+ \expandafter\def\csname simpleicon@strykericon\endcsname {\simpleiconsmaponeone\symbol{130}}
+ \expandafter\def\csname simpleicon@stubhubicon\endcsname {\simpleiconsmaponeone\symbol{131}}
+ \expandafter\def\csname simpleicon@studio3ticon\endcsname {\simpleiconsmaponeone\symbol{132}}
+ \expandafter\def\csname simpleicon@studyverseicon\endcsname {\simpleiconsmaponeone\symbol{133}}
+ \expandafter\def\csname simpleicon@styledcomponentsicon\endcsname {\simpleiconsmaponeone\symbol{134}}
+ \expandafter\def\csname simpleicon@stylelinticon\endcsname {\simpleiconsmaponeone\symbol{135}}
+ \expandafter\def\csname simpleicon@styleshareicon\endcsname {\simpleiconsmaponeone\symbol{136}}
+ \expandafter\def\csname simpleicon@stylusicon\endcsname {\simpleiconsmaponeone\symbol{137}}
+ \expandafter\def\csname simpleicon@subaruicon\endcsname {\simpleiconsmaponeone\symbol{138}}
+ \expandafter\def\csname simpleicon@sublimetexticon\endcsname {\simpleiconsmaponeone\symbol{139}}
+ \expandafter\def\csname simpleicon@substackicon\endcsname {\simpleiconsmaponeone\symbol{140}}
+ \expandafter\def\csname simpleicon@subtitleediticon\endcsname {\simpleiconsmaponeone\symbol{141}}
+ \expandafter\def\csname simpleicon@subversionicon\endcsname {\simpleiconsmaponeone\symbol{142}}
+ \expandafter\def\csname simpleicon@sucklessicon\endcsname {\simpleiconsmaponeone\symbol{143}}
+ \expandafter\def\csname simpleicon@suiicon\endcsname {\simpleiconsmaponeone\symbol{144}}
+ \expandafter\def\csname simpleicon@sumologicicon\endcsname {\simpleiconsmaponeone\symbol{145}}
+ \expandafter\def\csname simpleicon@sunoicon\endcsname {\simpleiconsmaponeone\symbol{146}}
+ \expandafter\def\csname simpleicon@sunriseicon\endcsname {\simpleiconsmaponeone\symbol{147}}
+ \expandafter\def\csname simpleicon@supabaseicon\endcsname {\simpleiconsmaponeone\symbol{148}}
+ \expandafter\def\csname simpleicon@supercreaseicon\endcsname {\simpleiconsmaponeone\symbol{149}}
+ \expandafter\def\csname simpleicon@supermicroicon\endcsname {\simpleiconsmaponeone\symbol{150}}
+ \expandafter\def\csname simpleicon@superusericon\endcsname {\simpleiconsmaponeone\symbol{151}}
+ \expandafter\def\csname simpleicon@surrealdbicon\endcsname {\simpleiconsmaponeone\symbol{152}}
+ \expandafter\def\csname simpleicon@surveymonkeyicon\endcsname {\simpleiconsmaponeone\symbol{153}}
+ \expandafter\def\csname simpleicon@suseicon\endcsname {\simpleiconsmaponeone\symbol{154}}
+ \expandafter\def\csname simpleicon@suzukiicon\endcsname {\simpleiconsmaponeone\symbol{155}}
+ \expandafter\def\csname simpleicon@svelteicon\endcsname {\simpleiconsmaponeone\symbol{156}}
+ \expandafter\def\csname simpleicon@svgicon\endcsname {\simpleiconsmaponeone\symbol{157}}
+ \expandafter\def\csname simpleicon@svgdotjsicon\endcsname {\simpleiconsmaponeone\symbol{158}}
+ \expandafter\def\csname simpleicon@svgoicon\endcsname {\simpleiconsmaponeone\symbol{159}}
+ \expandafter\def\csname simpleicon@svgtraceicon\endcsname {\simpleiconsmaponeone\symbol{160}}
+ \expandafter\def\csname simpleicon@swaggericon\endcsname {\simpleiconsmaponeone\symbol{161}}
+ \expandafter\def\csname simpleicon@swarmicon\endcsname {\simpleiconsmaponeone\symbol{162}}
+ \expandafter\def\csname simpleicon@swayicon\endcsname {\simpleiconsmaponeone\symbol{163}}
+ \expandafter\def\csname simpleicon@swcicon\endcsname {\simpleiconsmaponeone\symbol{164}}
+ \expandafter\def\csname simpleicon@swifticon\endcsname {\simpleiconsmaponeone\symbol{165}}
+ \expandafter\def\csname simpleicon@swiggyicon\endcsname {\simpleiconsmaponeone\symbol{166}}
+ \expandafter\def\csname simpleicon@swipericon\endcsname {\simpleiconsmaponeone\symbol{167}}
+ \expandafter\def\csname simpleicon@swricon\endcsname {\simpleiconsmaponeone\symbol{168}}
+ \expandafter\def\csname simpleicon@symantecicon\endcsname {\simpleiconsmaponeone\symbol{169}}
+ \expandafter\def\csname simpleicon@symbolabicon\endcsname {\simpleiconsmaponeone\symbol{170}}
+ \expandafter\def\csname simpleicon@symfonyicon\endcsname {\simpleiconsmaponeone\symbol{171}}
+ \expandafter\def\csname simpleicon@symphonyicon\endcsname {\simpleiconsmaponeone\symbol{172}}
+ \expandafter\def\csname simpleicon@sympyicon\endcsname {\simpleiconsmaponeone\symbol{173}}
+ \expandafter\def\csname simpleicon@syncthingicon\endcsname {\simpleiconsmaponeone\symbol{174}}
+ \expandafter\def\csname simpleicon@synologyicon\endcsname {\simpleiconsmaponeone\symbol{175}}
+ \expandafter\def\csname simpleicon@system76icon\endcsname {\simpleiconsmaponeone\symbol{176}}
+ \expandafter\def\csname simpleicon@tabelogicon\endcsname {\simpleiconsmaponeone\symbol{177}}
+ \expandafter\def\csname simpleicon@tableauicon\endcsname {\simpleiconsmaponeone\symbol{178}}
+ \expandafter\def\csname simpleicon@tablecheckicon\endcsname {\simpleiconsmaponeone\symbol{179}}
+ \expandafter\def\csname simpleicon@tacobellicon\endcsname {\simpleiconsmaponeone\symbol{180}}
+ \expandafter\def\csname simpleicon@tadoicon\endcsname {\simpleiconsmaponeone\symbol{181}}
+ \expandafter\def\csname simpleicon@taichigraphicsicon\endcsname {\simpleiconsmaponeone\symbol{182}}
+ \expandafter\def\csname simpleicon@taichilangicon\endcsname {\simpleiconsmaponeone\symbol{183}}
+ \expandafter\def\csname simpleicon@tailsicon\endcsname {\simpleiconsmaponeone\symbol{184}}
+ \expandafter\def\csname simpleicon@tailscaleicon\endcsname {\simpleiconsmaponeone\symbol{185}}
+ \expandafter\def\csname simpleicon@tailwindcssicon\endcsname {\simpleiconsmaponeone\symbol{186}}
+ \expandafter\def\csname simpleicon@taipyicon\endcsname {\simpleiconsmaponeone\symbol{187}}
+ \expandafter\def\csname simpleicon@taketwointeractivesoftwareicon\endcsname {\simpleiconsmaponeone\symbol{188}}
+ \expandafter\def\csname simpleicon@talendicon\endcsname {\simpleiconsmaponeone\symbol{189}}
+ \expandafter\def\csname simpleicon@talenthouseicon\endcsname {\simpleiconsmaponeone\symbol{190}}
+ \expandafter\def\csname simpleicon@talosicon\endcsname {\simpleiconsmaponeone\symbol{191}}
+ \expandafter\def\csname simpleicon@tamiyaicon\endcsname {\simpleiconsmaponeone\symbol{192}}
+ \expandafter\def\csname simpleicon@tampermonkeyicon\endcsname {\simpleiconsmaponeone\symbol{193}}
+ \expandafter\def\csname simpleicon@taobaoicon\endcsname {\simpleiconsmaponeone\symbol{194}}
+ \expandafter\def\csname simpleicon@tapasicon\endcsname {\simpleiconsmaponeone\symbol{195}}
+ \expandafter\def\csname simpleicon@targeticon\endcsname {\simpleiconsmaponeone\symbol{196}}
+ \expandafter\def\csname simpleicon@taromicon\endcsname {\simpleiconsmaponeone\symbol{197}}
+ \expandafter\def\csname simpleicon@taskicon\endcsname {\simpleiconsmaponeone\symbol{198}}
+ \expandafter\def\csname simpleicon@tasmotaicon\endcsname {\simpleiconsmaponeone\symbol{199}}
+ \expandafter\def\csname simpleicon@tataicon\endcsname {\simpleiconsmaponeone\symbol{200}}
+ \expandafter\def\csname simpleicon@tauriicon\endcsname {\simpleiconsmaponeone\symbol{201}}
+ \expandafter\def\csname simpleicon@taxbuzzicon\endcsname {\simpleiconsmaponeone\symbol{202}}
+ \expandafter\def\csname simpleicon@tcsicon\endcsname {\simpleiconsmaponeone\symbol{203}}
+ \expandafter\def\csname simpleicon@tealicon\endcsname {\simpleiconsmaponeone\symbol{204}}
+ \expandafter\def\csname simpleicon@teamcityicon\endcsname {\simpleiconsmaponeone\symbol{205}}
+ \expandafter\def\csname simpleicon@teamspeakicon\endcsname {\simpleiconsmaponeone\symbol{206}}
+ \expandafter\def\csname simpleicon@teamviewericon\endcsname {\simpleiconsmaponeone\symbol{207}}
+ \expandafter\def\csname simpleicon@techcrunchicon\endcsname {\simpleiconsmaponeone\symbol{208}}
+ \expandafter\def\csname simpleicon@tedicon\endcsname {\simpleiconsmaponeone\symbol{209}}
+ \expandafter\def\csname simpleicon@teepublicicon\endcsname {\simpleiconsmaponeone\symbol{210}}
+ \expandafter\def\csname simpleicon@teespringicon\endcsname {\simpleiconsmaponeone\symbol{211}}
+ \expandafter\def\csname simpleicon@tektonicon\endcsname {\simpleiconsmaponeone\symbol{212}}
+ \expandafter\def\csname simpleicon@tele5icon\endcsname {\simpleiconsmaponeone\symbol{213}}
+ \expandafter\def\csname simpleicon@telegramicon\endcsname {\simpleiconsmaponeone\symbol{214}}
+ \expandafter\def\csname simpleicon@telegraphicon\endcsname {\simpleiconsmaponeone\symbol{215}}
+ \expandafter\def\csname simpleicon@telequebecicon\endcsname {\simpleiconsmaponeone\symbol{216}}
+ \expandafter\def\csname simpleicon@temporalicon\endcsname {\simpleiconsmaponeone\symbol{217}}
+ \expandafter\def\csname simpleicon@tencentqqicon\endcsname {\simpleiconsmaponeone\symbol{218}}
+ \expandafter\def\csname simpleicon@tensorflowicon\endcsname {\simpleiconsmaponeone\symbol{219}}
+ \expandafter\def\csname simpleicon@teradataicon\endcsname {\simpleiconsmaponeone\symbol{220}}
+ \expandafter\def\csname simpleicon@teratailicon\endcsname {\simpleiconsmaponeone\symbol{221}}
+ \expandafter\def\csname simpleicon@termiusicon\endcsname {\simpleiconsmaponeone\symbol{222}}
+ \expandafter\def\csname simpleicon@terraformicon\endcsname {\simpleiconsmaponeone\symbol{223}}
+ \expandafter\def\csname simpleicon@tescoicon\endcsname {\simpleiconsmaponeone\symbol{224}}
+ \expandafter\def\csname simpleicon@teslaicon\endcsname {\simpleiconsmaponeone\symbol{225}}
+ \expandafter\def\csname simpleicon@testcafeicon\endcsname {\simpleiconsmaponeone\symbol{226}}
+ \expandafter\def\csname simpleicon@testinicon\endcsname {\simpleiconsmaponeone\symbol{227}}
+ \expandafter\def\csname simpleicon@testinglibraryicon\endcsname {\simpleiconsmaponeone\symbol{228}}
+ \expandafter\def\csname simpleicon@testrailicon\endcsname {\simpleiconsmaponeone\symbol{229}}
+ \expandafter\def\csname simpleicon@tethericon\endcsname {\simpleiconsmaponeone\symbol{230}}
+ \expandafter\def\csname simpleicon@textpatternicon\endcsname {\simpleiconsmaponeone\symbol{231}}
+ \expandafter\def\csname simpleicon@tgaicon\endcsname {\simpleiconsmaponeone\symbol{232}}
+ \expandafter\def\csname simpleicon@thangsicon\endcsname {\simpleiconsmaponeone\symbol{233}}
+ \expandafter\def\csname simpleicon@thanosicon\endcsname {\simpleiconsmaponeone\symbol{234}}
+ \expandafter\def\csname simpleicon@thealgorithmsicon\endcsname {\simpleiconsmaponeone\symbol{235}}
+ \expandafter\def\csname simpleicon@theboringcompanyicon\endcsname {\simpleiconsmaponeone\symbol{236}}
+ \expandafter\def\csname simpleicon@theconversationicon\endcsname {\simpleiconsmaponeone\symbol{237}}
+ \expandafter\def\csname simpleicon@thefinalsicon\endcsname {\simpleiconsmaponeone\symbol{238}}
+ \expandafter\def\csname simpleicon@theguardianicon\endcsname {\simpleiconsmaponeone\symbol{239}}
+ \expandafter\def\csname simpleicon@theirishtimesicon\endcsname {\simpleiconsmaponeone\symbol{240}}
+ \expandafter\def\csname simpleicon@themightyicon\endcsname {\simpleiconsmaponeone\symbol{241}}
+ \expandafter\def\csname simpleicon@themodelsresourceicon\endcsname {\simpleiconsmaponeone\symbol{242}}
+ \expandafter\def\csname simpleicon@themoviedatabaseicon\endcsname {\simpleiconsmaponeone\symbol{243}}
+ \expandafter\def\csname simpleicon@thenorthfaceicon\endcsname {\simpleiconsmaponeone\symbol{244}}
+ \expandafter\def\csname simpleicon@theodinprojecticon\endcsname {\simpleiconsmaponeone\symbol{245}}
+ \expandafter\def\csname simpleicon@theregistericon\endcsname {\simpleiconsmaponeone\symbol{246}}
+ \expandafter\def\csname simpleicon@thesoundsresourceicon\endcsname {\simpleiconsmaponeone\symbol{247}}
+ \expandafter\def\csname simpleicon@thespritersresourceicon\endcsname {\simpleiconsmaponeone\symbol{248}}
+ \expandafter\def\csname simpleicon@thewashingtonposticon\endcsname {\simpleiconsmaponeone\symbol{249}}
+ \expandafter\def\csname simpleicon@theweatherchannelicon\endcsname {\simpleiconsmaponeone\symbol{250}}
+ \expandafter\def\csname simpleicon@thingiverseicon\endcsname {\simpleiconsmaponeone\symbol{251}}
+ \expandafter\def\csname simpleicon@thinkpadicon\endcsname {\simpleiconsmaponeone\symbol{252}}
+ \expandafter\def\csname simpleicon@thirdwebicon\endcsname {\simpleiconsmaponeone\symbol{253}}
+ \expandafter\def\csname simpleicon@threadlessicon\endcsname {\simpleiconsmaponeone\symbol{254}}
+ \expandafter\def\csname simpleicon@threadsicon\endcsname {\simpleiconsmaponeone\symbol{255}}
+ \expandafter\def\csname simpleicon@threedotjsicon\endcsname {\simpleiconsmaponetwo\symbol{0}}
+ \expandafter\def\csname simpleicon@threemaicon\endcsname {\simpleiconsmaponetwo\symbol{1}}
+ \expandafter\def\csname simpleicon@thumbtackicon\endcsname {\simpleiconsmaponetwo\symbol{2}}
+ \expandafter\def\csname simpleicon@thunderbirdicon\endcsname {\simpleiconsmaponetwo\symbol{3}}
+ \expandafter\def\csname simpleicon@thunderstoreicon\endcsname {\simpleiconsmaponetwo\symbol{4}}
+ \expandafter\def\csname simpleicon@thurgauerkantonalbankicon\endcsname {\simpleiconsmaponetwo\symbol{5}}
+ \expandafter\def\csname simpleicon@thymeleaficon\endcsname {\simpleiconsmaponetwo\symbol{6}}
+ \expandafter\def\csname simpleicon@ticketmastericon\endcsname {\simpleiconsmaponetwo\symbol{7}}
+ \expandafter\def\csname simpleicon@ticktickicon\endcsname {\simpleiconsmaponetwo\symbol{8}}
+ \expandafter\def\csname simpleicon@tidalicon\endcsname {\simpleiconsmaponetwo\symbol{9}}
+ \expandafter\def\csname simpleicon@tiddlywikiicon\endcsname {\simpleiconsmaponetwo\symbol{10}}
+ \expandafter\def\csname simpleicon@tideicon\endcsname {\simpleiconsmaponetwo\symbol{11}}
+ \expandafter\def\csname simpleicon@tidyverseicon\endcsname {\simpleiconsmaponetwo\symbol{12}}
+ \expandafter\def\csname simpleicon@tietoevryicon\endcsname {\simpleiconsmaponetwo\symbol{13}}
+ \expandafter\def\csname simpleicon@tiktokicon\endcsname {\simpleiconsmaponetwo\symbol{14}}
+ \expandafter\def\csname simpleicon@tildapublishingicon\endcsname {\simpleiconsmaponetwo\symbol{15}}
+ \expandafter\def\csname simpleicon@tileicon\endcsname {\simpleiconsmaponetwo\symbol{16}}
+ \expandafter\def\csname simpleicon@timescaleicon\endcsname {\simpleiconsmaponetwo\symbol{17}}
+ \expandafter\def\csname simpleicon@tinaicon\endcsname {\simpleiconsmaponetwo\symbol{18}}
+ \expandafter\def\csname simpleicon@tindericon\endcsname {\simpleiconsmaponetwo\symbol{19}}
+ \expandafter\def\csname simpleicon@tindieicon\endcsname {\simpleiconsmaponetwo\symbol{20}}
+ \expandafter\def\csname simpleicon@tinkercadicon\endcsname {\simpleiconsmaponetwo\symbol{21}}
+ \expandafter\def\csname simpleicon@tinygradicon\endcsname {\simpleiconsmaponetwo\symbol{22}}
+ \expandafter\def\csname simpleicon@tinylettericon\endcsname {\simpleiconsmaponetwo\symbol{23}}
+ \expandafter\def\csname simpleicon@tistoryicon\endcsname {\simpleiconsmaponetwo\symbol{24}}
+ \expandafter\def\csname simpleicon@tldrawicon\endcsname {\simpleiconsmaponetwo\symbol{25}}
+ \expandafter\def\csname simpleicon@tmobileicon\endcsname {\simpleiconsmaponetwo\symbol{26}}
+ \expandafter\def\csname simpleicon@tmuxicon\endcsname {\simpleiconsmaponetwo\symbol{27}}
+ \expandafter\def\csname simpleicon@todoisticon\endcsname {\simpleiconsmaponetwo\symbol{28}}
+ \expandafter\def\csname simpleicon@togglicon\endcsname {\simpleiconsmaponetwo\symbol{29}}
+ \expandafter\def\csname simpleicon@toggltrackicon\endcsname {\simpleiconsmaponetwo\symbol{30}}
+ \expandafter\def\csname simpleicon@tokyometroicon\endcsname {\simpleiconsmaponetwo\symbol{31}}
+ \expandafter\def\csname simpleicon@tollicon\endcsname {\simpleiconsmaponetwo\symbol{32}}
+ \expandafter\def\csname simpleicon@tomlicon\endcsname {\simpleiconsmaponetwo\symbol{33}}
+ \expandafter\def\csname simpleicon@tomorrowlandicon\endcsname {\simpleiconsmaponetwo\symbol{34}}
+ \expandafter\def\csname simpleicon@tonicon\endcsname {\simpleiconsmaponetwo\symbol{35}}
+ \expandafter\def\csname simpleicon@topcodericon\endcsname {\simpleiconsmaponetwo\symbol{36}}
+ \expandafter\def\csname simpleicon@topdotggicon\endcsname {\simpleiconsmaponetwo\symbol{37}}
+ \expandafter\def\csname simpleicon@toptalicon\endcsname {\simpleiconsmaponetwo\symbol{38}}
+ \expandafter\def\csname simpleicon@torbrowsericon\endcsname {\simpleiconsmaponetwo\symbol{39}}
+ \expandafter\def\csname simpleicon@torprojecticon\endcsname {\simpleiconsmaponetwo\symbol{40}}
+ \expandafter\def\csname simpleicon@toshibaicon\endcsname {\simpleiconsmaponetwo\symbol{41}}
+ \expandafter\def\csname simpleicon@totvsicon\endcsname {\simpleiconsmaponetwo\symbol{42}}
+ \expandafter\def\csname simpleicon@tourboxicon\endcsname {\simpleiconsmaponetwo\symbol{43}}
+ \expandafter\def\csname simpleicon@towericon\endcsname {\simpleiconsmaponetwo\symbol{44}}
+ \expandafter\def\csname simpleicon@toyotaicon\endcsname {\simpleiconsmaponetwo\symbol{45}}
+ \expandafter\def\csname simpleicon@tplinkicon\endcsname {\simpleiconsmaponetwo\symbol{46}}
+ \expandafter\def\csname simpleicon@tqdmicon\endcsname {\simpleiconsmaponetwo\symbol{47}}
+ \expandafter\def\csname simpleicon@traccaricon\endcsname {\simpleiconsmaponetwo\symbol{48}}
+ \expandafter\def\csname simpleicon@tradingviewicon\endcsname {\simpleiconsmaponetwo\symbol{49}}
+ \expandafter\def\csname simpleicon@traefikmeshicon\endcsname {\simpleiconsmaponetwo\symbol{50}}
+ \expandafter\def\csname simpleicon@traefikproxyicon\endcsname {\simpleiconsmaponetwo\symbol{51}}
+ \expandafter\def\csname simpleicon@trailforksicon\endcsname {\simpleiconsmaponetwo\symbol{52}}
+ \expandafter\def\csname simpleicon@trainerroadicon\endcsname {\simpleiconsmaponetwo\symbol{53}}
+ \expandafter\def\csname simpleicon@trakticon\endcsname {\simpleiconsmaponetwo\symbol{54}}
+ \expandafter\def\csname simpleicon@transifexicon\endcsname {\simpleiconsmaponetwo\symbol{55}}
+ \expandafter\def\csname simpleicon@transmissionicon\endcsname {\simpleiconsmaponetwo\symbol{56}}
+ \expandafter\def\csname simpleicon@transportforirelandicon\endcsname {\simpleiconsmaponetwo\symbol{57}}
+ \expandafter\def\csname simpleicon@transportforlondonicon\endcsname {\simpleiconsmaponetwo\symbol{58}}
+ \expandafter\def\csname simpleicon@travisciicon\endcsname {\simpleiconsmaponetwo\symbol{59}}
+ \expandafter\def\csname simpleicon@treehouseicon\endcsname {\simpleiconsmaponetwo\symbol{60}}
+ \expandafter\def\csname simpleicon@trelloicon\endcsname {\simpleiconsmaponetwo\symbol{61}}
+ \expandafter\def\csname simpleicon@trendmicroicon\endcsname {\simpleiconsmaponetwo\symbol{62}}
+ \expandafter\def\csname simpleicon@treyarchicon\endcsname {\simpleiconsmaponetwo\symbol{63}}
+ \expandafter\def\csname simpleicon@tricentisicon\endcsname {\simpleiconsmaponetwo\symbol{64}}
+ \expandafter\def\csname simpleicon@triliumicon\endcsname {\simpleiconsmaponetwo\symbol{65}}
+ \expandafter\def\csname simpleicon@trillericon\endcsname {\simpleiconsmaponetwo\symbol{66}}
+ \expandafter\def\csname simpleicon@trillertvicon\endcsname {\simpleiconsmaponetwo\symbol{67}}
+ \expandafter\def\csname simpleicon@trinoicon\endcsname {\simpleiconsmaponetwo\symbol{68}}
+ \expandafter\def\csname simpleicon@tripadvisoricon\endcsname {\simpleiconsmaponetwo\symbol{69}}
+ \expandafter\def\csname simpleicon@tripdotcomicon\endcsname {\simpleiconsmaponetwo\symbol{70}}
+ \expandafter\def\csname simpleicon@trivagoicon\endcsname {\simpleiconsmaponetwo\symbol{71}}
+ \expandafter\def\csname simpleicon@trivyicon\endcsname {\simpleiconsmaponetwo\symbol{72}}
+ \expandafter\def\csname simpleicon@troveicon\endcsname {\simpleiconsmaponetwo\symbol{73}}
+ \expandafter\def\csname simpleicon@trpcicon\endcsname {\simpleiconsmaponetwo\symbol{74}}
+ \expandafter\def\csname simpleicon@truenasicon\endcsname {\simpleiconsmaponetwo\symbol{75}}
+ \expandafter\def\csname simpleicon@trueupicon\endcsname {\simpleiconsmaponetwo\symbol{76}}
+ \expandafter\def\csname simpleicon@truliaicon\endcsname {\simpleiconsmaponetwo\symbol{77}}
+ \expandafter\def\csname simpleicon@trustedshopsicon\endcsname {\simpleiconsmaponetwo\symbol{78}}
+ \expandafter\def\csname simpleicon@trustpiloticon\endcsname {\simpleiconsmaponetwo\symbol{79}}
+ \expandafter\def\csname simpleicon@tryhackmeicon\endcsname {\simpleiconsmaponetwo\symbol{80}}
+ \expandafter\def\csname simpleicon@tryitonlineicon\endcsname {\simpleiconsmaponetwo\symbol{81}}
+ \expandafter\def\csname simpleicon@tsnodeicon\endcsname {\simpleiconsmaponetwo\symbol{82}}
+ \expandafter\def\csname simpleicon@tubiicon\endcsname {\simpleiconsmaponetwo\symbol{83}}
+ \expandafter\def\csname simpleicon@tuiicon\endcsname {\simpleiconsmaponetwo\symbol{84}}
+ \expandafter\def\csname simpleicon@tumblricon\endcsname {\simpleiconsmaponetwo\symbol{85}}
+ \expandafter\def\csname simpleicon@tuneinicon\endcsname {\simpleiconsmaponetwo\symbol{86}}
+ \expandafter\def\csname simpleicon@turboicon\endcsname {\simpleiconsmaponetwo\symbol{87}}
+ \expandafter\def\csname simpleicon@turborepoicon\endcsname {\simpleiconsmaponetwo\symbol{88}}
+ \expandafter\def\csname simpleicon@turbosquidicon\endcsname {\simpleiconsmaponetwo\symbol{89}}
+ \expandafter\def\csname simpleicon@turkishairlinesicon\endcsname {\simpleiconsmaponetwo\symbol{90}}
+ \expandafter\def\csname simpleicon@tursoicon\endcsname {\simpleiconsmaponetwo\symbol{91}}
+ \expandafter\def\csname simpleicon@tutanotaicon\endcsname {\simpleiconsmaponetwo\symbol{92}}
+ \expandafter\def\csname simpleicon@tv4playicon\endcsname {\simpleiconsmaponetwo\symbol{93}}
+ \expandafter\def\csname simpleicon@tvtimeicon\endcsname {\simpleiconsmaponetwo\symbol{94}}
+ \expandafter\def\csname simpleicon@twilioicon\endcsname {\simpleiconsmaponetwo\symbol{95}}
+ \expandafter\def\csname simpleicon@twinklyicon\endcsname {\simpleiconsmaponetwo\symbol{96}}
+ \expandafter\def\csname simpleicon@twinmotionicon\endcsname {\simpleiconsmaponetwo\symbol{97}}
+ \expandafter\def\csname simpleicon@twitchicon\endcsname {\simpleiconsmaponetwo\symbol{98}}
+ \expandafter\def\csname simpleicon@typeformicon\endcsname {\simpleiconsmaponetwo\symbol{99}}
+ \expandafter\def\csname simpleicon@typeormicon\endcsname {\simpleiconsmaponetwo\symbol{100}}
+ \expandafter\def\csname simpleicon@typericon\endcsname {\simpleiconsmaponetwo\symbol{101}}
+ \expandafter\def\csname simpleicon@typescripticon\endcsname {\simpleiconsmaponetwo\symbol{102}}
+ \expandafter\def\csname simpleicon@typo3icon\endcsname {\simpleiconsmaponetwo\symbol{103}}
+ \expandafter\def\csname simpleicon@typsticon\endcsname {\simpleiconsmaponetwo\symbol{104}}
+ \expandafter\def\csname simpleicon@ubericon\endcsname {\simpleiconsmaponetwo\symbol{105}}
+ \expandafter\def\csname simpleicon@ubereatsicon\endcsname {\simpleiconsmaponetwo\symbol{106}}
+ \expandafter\def\csname simpleicon@ubiquitiicon\endcsname {\simpleiconsmaponetwo\symbol{107}}
+ \expandafter\def\csname simpleicon@ubisofticon\endcsname {\simpleiconsmaponetwo\symbol{108}}
+ \expandafter\def\csname simpleicon@ublockoriginicon\endcsname {\simpleiconsmaponetwo\symbol{109}}
+ \expandafter\def\csname simpleicon@ubuntuicon\endcsname {\simpleiconsmaponetwo\symbol{110}}
+ \expandafter\def\csname simpleicon@ubuntumateicon\endcsname {\simpleiconsmaponetwo\symbol{111}}
+ \expandafter\def\csname simpleicon@udacityicon\endcsname {\simpleiconsmaponetwo\symbol{112}}
+ \expandafter\def\csname simpleicon@udemyicon\endcsname {\simpleiconsmaponetwo\symbol{113}}
+ \expandafter\def\csname simpleicon@ufcicon\endcsname {\simpleiconsmaponetwo\symbol{114}}
+ \expandafter\def\csname simpleicon@uikiticon\endcsname {\simpleiconsmaponetwo\symbol{115}}
+ \expandafter\def\csname simpleicon@uipathicon\endcsname {\simpleiconsmaponetwo\symbol{116}}
+ \expandafter\def\csname simpleicon@ululeicon\endcsname {\simpleiconsmaponetwo\symbol{117}}
+ \expandafter\def\csname simpleicon@umamiicon\endcsname {\simpleiconsmaponetwo\symbol{118}}
+ \expandafter\def\csname simpleicon@umbracoicon\endcsname {\simpleiconsmaponetwo\symbol{119}}
+ \expandafter\def\csname simpleicon@umlicon\endcsname {\simpleiconsmaponetwo\symbol{120}}
+ \expandafter\def\csname simpleicon@unacademyicon\endcsname {\simpleiconsmaponetwo\symbol{121}}
+ \expandafter\def\csname simpleicon@underarmouricon\endcsname {\simpleiconsmaponetwo\symbol{122}}
+ \expandafter\def\csname simpleicon@underscoredotjsicon\endcsname {\simpleiconsmaponetwo\symbol{123}}
+ \expandafter\def\csname simpleicon@undertaleicon\endcsname {\simpleiconsmaponetwo\symbol{124}}
+ \expandafter\def\csname simpleicon@unicodeicon\endcsname {\simpleiconsmaponetwo\symbol{125}}
+ \expandafter\def\csname simpleicon@unilevericon\endcsname {\simpleiconsmaponetwo\symbol{126}}
+ \expandafter\def\csname simpleicon@uniqloicon\endcsname {\simpleiconsmaponetwo\symbol{127}}
+ \expandafter\def\csname simpleicon@uniqlojaicon\endcsname {\simpleiconsmaponetwo\symbol{128}}
+ \expandafter\def\csname simpleicon@unitedairlinesicon\endcsname {\simpleiconsmaponetwo\symbol{129}}
+ \expandafter\def\csname simpleicon@unitednationsicon\endcsname {\simpleiconsmaponetwo\symbol{130}}
+ \expandafter\def\csname simpleicon@unityicon\endcsname {\simpleiconsmaponetwo\symbol{131}}
+ \expandafter\def\csname simpleicon@unjsicon\endcsname {\simpleiconsmaponetwo\symbol{132}}
+ \expandafter\def\csname simpleicon@unlicenseicon\endcsname {\simpleiconsmaponetwo\symbol{133}}
+ \expandafter\def\csname simpleicon@unocssicon\endcsname {\simpleiconsmaponetwo\symbol{134}}
+ \expandafter\def\csname simpleicon@unpkgicon\endcsname {\simpleiconsmaponetwo\symbol{135}}
+ \expandafter\def\csname simpleicon@unraidicon\endcsname {\simpleiconsmaponetwo\symbol{136}}
+ \expandafter\def\csname simpleicon@unrealengineicon\endcsname {\simpleiconsmaponetwo\symbol{137}}
+ \expandafter\def\csname simpleicon@unsplashicon\endcsname {\simpleiconsmaponetwo\symbol{138}}
+ \expandafter\def\csname simpleicon@untappdicon\endcsname {\simpleiconsmaponetwo\symbol{139}}
+ \expandafter\def\csname simpleicon@upcloudicon\endcsname {\simpleiconsmaponetwo\symbol{140}}
+ \expandafter\def\csname simpleicon@upholdicon\endcsname {\simpleiconsmaponetwo\symbol{141}}
+ \expandafter\def\csname simpleicon@uplabsicon\endcsname {\simpleiconsmaponetwo\symbol{142}}
+ \expandafter\def\csname simpleicon@upptimeicon\endcsname {\simpleiconsmaponetwo\symbol{143}}
+ \expandafter\def\csname simpleicon@upsicon\endcsname {\simpleiconsmaponetwo\symbol{144}}
+ \expandafter\def\csname simpleicon@upstashicon\endcsname {\simpleiconsmaponetwo\symbol{145}}
+ \expandafter\def\csname simpleicon@uptimekumaicon\endcsname {\simpleiconsmaponetwo\symbol{146}}
+ \expandafter\def\csname simpleicon@uptoboxicon\endcsname {\simpleiconsmaponetwo\symbol{147}}
+ \expandafter\def\csname simpleicon@upworkicon\endcsname {\simpleiconsmaponetwo\symbol{148}}
+ \expandafter\def\csname simpleicon@uspsicon\endcsname {\simpleiconsmaponetwo\symbol{149}}
+ \expandafter\def\csname simpleicon@utorrenticon\endcsname {\simpleiconsmaponetwo\symbol{150}}
+ \expandafter\def\csname simpleicon@uvicon\endcsname {\simpleiconsmaponetwo\symbol{151}}
+ \expandafter\def\csname simpleicon@vicon\endcsname {\simpleiconsmaponetwo\symbol{152}}
+ \expandafter\def\csname simpleicon@v2exicon\endcsname {\simpleiconsmaponetwo\symbol{153}}
+ \expandafter\def\csname simpleicon@v8icon\endcsname {\simpleiconsmaponetwo\symbol{154}}
+ \expandafter\def\csname simpleicon@vaadinicon\endcsname {\simpleiconsmaponetwo\symbol{155}}
+ \expandafter\def\csname simpleicon@vagranticon\endcsname {\simpleiconsmaponetwo\symbol{156}}
+ \expandafter\def\csname simpleicon@valaicon\endcsname {\simpleiconsmaponetwo\symbol{157}}
+ \expandafter\def\csname simpleicon@valoranticon\endcsname {\simpleiconsmaponetwo\symbol{158}}
+ \expandafter\def\csname simpleicon@valveicon\endcsname {\simpleiconsmaponetwo\symbol{159}}
+ \expandafter\def\csname simpleicon@vaporicon\endcsname {\simpleiconsmaponetwo\symbol{160}}
+ \expandafter\def\csname simpleicon@vaulticon\endcsname {\simpleiconsmaponetwo\symbol{161}}
+ \expandafter\def\csname simpleicon@vaultwardenicon\endcsname {\simpleiconsmaponetwo\symbol{162}}
+ \expandafter\def\csname simpleicon@vauxhallicon\endcsname {\simpleiconsmaponetwo\symbol{163}}
+ \expandafter\def\csname simpleicon@vbulletinicon\endcsname {\simpleiconsmaponetwo\symbol{164}}
+ \expandafter\def\csname simpleicon@vectaryicon\endcsname {\simpleiconsmaponetwo\symbol{165}}
+ \expandafter\def\csname simpleicon@vectorlogozoneicon\endcsname {\simpleiconsmaponetwo\symbol{166}}
+ \expandafter\def\csname simpleicon@vectorworksicon\endcsname {\simpleiconsmaponetwo\symbol{167}}
+ \expandafter\def\csname simpleicon@veeamicon\endcsname {\simpleiconsmaponetwo\symbol{168}}
+ \expandafter\def\csname simpleicon@veedicon\endcsname {\simpleiconsmaponetwo\symbol{169}}
+ \expandafter\def\csname simpleicon@veepeeicon\endcsname {\simpleiconsmaponetwo\symbol{170}}
+ \expandafter\def\csname simpleicon@vegaicon\endcsname {\simpleiconsmaponetwo\symbol{171}}
+ \expandafter\def\csname simpleicon@vegasicon\endcsname {\simpleiconsmaponetwo\symbol{172}}
+ \expandafter\def\csname simpleicon@velogicon\endcsname {\simpleiconsmaponetwo\symbol{173}}
+ \expandafter\def\csname simpleicon@venmoicon\endcsname {\simpleiconsmaponetwo\symbol{174}}
+ \expandafter\def\csname simpleicon@vercelicon\endcsname {\simpleiconsmaponetwo\symbol{175}}
+ \expandafter\def\csname simpleicon@verdaccioicon\endcsname {\simpleiconsmaponetwo\symbol{176}}
+ \expandafter\def\csname simpleicon@veritasicon\endcsname {\simpleiconsmaponetwo\symbol{177}}
+ \expandafter\def\csname simpleicon@verizonicon\endcsname {\simpleiconsmaponetwo\symbol{178}}
+ \expandafter\def\csname simpleicon@vespaicon\endcsname {\simpleiconsmaponetwo\symbol{179}}
+ \expandafter\def\csname simpleicon@vestelicon\endcsname {\simpleiconsmaponetwo\symbol{180}}
+ \expandafter\def\csname simpleicon@vexxhosticon\endcsname {\simpleiconsmaponetwo\symbol{181}}
+ \expandafter\def\csname simpleicon@vfairsicon\endcsname {\simpleiconsmaponetwo\symbol{182}}
+ \expandafter\def\csname simpleicon@viadeoicon\endcsname {\simpleiconsmaponetwo\symbol{183}}
+ \expandafter\def\csname simpleicon@viaplayicon\endcsname {\simpleiconsmaponetwo\symbol{184}}
+ \expandafter\def\csname simpleicon@vibericon\endcsname {\simpleiconsmaponetwo\symbol{185}}
+ \expandafter\def\csname simpleicon@vibloicon\endcsname {\simpleiconsmaponetwo\symbol{186}}
+ \expandafter\def\csname simpleicon@victoriametricsicon\endcsname {\simpleiconsmaponetwo\symbol{187}}
+ \expandafter\def\csname simpleicon@victronenergyicon\endcsname {\simpleiconsmaponetwo\symbol{188}}
+ \expandafter\def\csname simpleicon@vimicon\endcsname {\simpleiconsmaponetwo\symbol{189}}
+ \expandafter\def\csname simpleicon@vimeoicon\endcsname {\simpleiconsmaponetwo\symbol{190}}
+ \expandafter\def\csname simpleicon@vimeolivestreamicon\endcsname {\simpleiconsmaponetwo\symbol{191}}
+ \expandafter\def\csname simpleicon@virginicon\endcsname {\simpleiconsmaponetwo\symbol{192}}
+ \expandafter\def\csname simpleicon@virginatlanticicon\endcsname {\simpleiconsmaponetwo\symbol{193}}
+ \expandafter\def\csname simpleicon@virginmediaicon\endcsname {\simpleiconsmaponetwo\symbol{194}}
+ \expandafter\def\csname simpleicon@virtualboxicon\endcsname {\simpleiconsmaponetwo\symbol{195}}
+ \expandafter\def\csname simpleicon@virustotalicon\endcsname {\simpleiconsmaponetwo\symbol{196}}
+ \expandafter\def\csname simpleicon@visaicon\endcsname {\simpleiconsmaponetwo\symbol{197}}
+ \expandafter\def\csname simpleicon@visxicon\endcsname {\simpleiconsmaponetwo\symbol{198}}
+ \expandafter\def\csname simpleicon@viteicon\endcsname {\simpleiconsmaponetwo\symbol{199}}
+ \expandafter\def\csname simpleicon@vitepressicon\endcsname {\simpleiconsmaponetwo\symbol{200}}
+ \expandafter\def\csname simpleicon@vitessicon\endcsname {\simpleiconsmaponetwo\symbol{201}}
+ \expandafter\def\csname simpleicon@vitesticon\endcsname {\simpleiconsmaponetwo\symbol{202}}
+ \expandafter\def\csname simpleicon@vivaldiicon\endcsname {\simpleiconsmaponetwo\symbol{203}}
+ \expandafter\def\csname simpleicon@vivawalleticon\endcsname {\simpleiconsmaponetwo\symbol{204}}
+ \expandafter\def\csname simpleicon@vivinoicon\endcsname {\simpleiconsmaponetwo\symbol{205}}
+ \expandafter\def\csname simpleicon@vivinticon\endcsname {\simpleiconsmaponetwo\symbol{206}}
+ \expandafter\def\csname simpleicon@vivoicon\endcsname {\simpleiconsmaponetwo\symbol{207}}
+ \expandafter\def\csname simpleicon@vkicon\endcsname {\simpleiconsmaponetwo\symbol{208}}
+ \expandafter\def\csname simpleicon@vlcmediaplayericon\endcsname {\simpleiconsmaponetwo\symbol{209}}
+ \expandafter\def\csname simpleicon@vmwareicon\endcsname {\simpleiconsmaponetwo\symbol{210}}
+ \expandafter\def\csname simpleicon@vodafoneicon\endcsname {\simpleiconsmaponetwo\symbol{211}}
+ \expandafter\def\csname simpleicon@voidlinuxicon\endcsname {\simpleiconsmaponetwo\symbol{212}}
+ \expandafter\def\csname simpleicon@voipdotmsicon\endcsname {\simpleiconsmaponetwo\symbol{213}}
+ \expandafter\def\csname simpleicon@volkswagenicon\endcsname {\simpleiconsmaponetwo\symbol{214}}
+ \expandafter\def\csname simpleicon@volvoicon\endcsname {\simpleiconsmaponetwo\symbol{215}}
+ \expandafter\def\csname simpleicon@vonageicon\endcsname {\simpleiconsmaponetwo\symbol{216}}
+ \expandafter\def\csname simpleicon@vorondesignicon\endcsname {\simpleiconsmaponetwo\symbol{217}}
+ \expandafter\def\csname simpleicon@vowpalwabbiticon\endcsname {\simpleiconsmaponetwo\symbol{218}}
+ \expandafter\def\csname simpleicon@voxicon\endcsname {\simpleiconsmaponetwo\symbol{219}}
+ \expandafter\def\csname simpleicon@vrchaticon\endcsname {\simpleiconsmaponetwo\symbol{220}}
+ \expandafter\def\csname simpleicon@vscoicon\endcsname {\simpleiconsmaponetwo\symbol{221}}
+ \expandafter\def\csname simpleicon@vscodiumicon\endcsname {\simpleiconsmaponetwo\symbol{222}}
+ \expandafter\def\csname simpleicon@vtexicon\endcsname {\simpleiconsmaponetwo\symbol{223}}
+ \expandafter\def\csname simpleicon@vuedotjsicon\endcsname {\simpleiconsmaponetwo\symbol{224}}
+ \expandafter\def\csname simpleicon@vuetifyicon\endcsname {\simpleiconsmaponetwo\symbol{225}}
+ \expandafter\def\csname simpleicon@vulkanicon\endcsname {\simpleiconsmaponetwo\symbol{226}}
+ \expandafter\def\csname simpleicon@vultricon\endcsname {\simpleiconsmaponetwo\symbol{227}}
+ \expandafter\def\csname simpleicon@vyondicon\endcsname {\simpleiconsmaponetwo\symbol{228}}
+ \expandafter\def\csname simpleicon@w3schoolsicon\endcsname {\simpleiconsmaponetwo\symbol{229}}
+ \expandafter\def\csname simpleicon@wacomicon\endcsname {\simpleiconsmaponetwo\symbol{230}}
+ \expandafter\def\csname simpleicon@wagmiicon\endcsname {\simpleiconsmaponetwo\symbol{231}}
+ \expandafter\def\csname simpleicon@wagtailicon\endcsname {\simpleiconsmaponetwo\symbol{232}}
+ \expandafter\def\csname simpleicon@wailsicon\endcsname {\simpleiconsmaponetwo\symbol{233}}
+ \expandafter\def\csname simpleicon@wakatimeicon\endcsname {\simpleiconsmaponetwo\symbol{234}}
+ \expandafter\def\csname simpleicon@walkmanicon\endcsname {\simpleiconsmaponetwo\symbol{235}}
+ \expandafter\def\csname simpleicon@wallabagicon\endcsname {\simpleiconsmaponetwo\symbol{236}}
+ \expandafter\def\csname simpleicon@walletconnecticon\endcsname {\simpleiconsmaponetwo\symbol{237}}
+ \expandafter\def\csname simpleicon@walmarticon\endcsname {\simpleiconsmaponetwo\symbol{238}}
+ \expandafter\def\csname simpleicon@wantedlyicon\endcsname {\simpleiconsmaponetwo\symbol{239}}
+ \expandafter\def\csname simpleicon@wappalyzericon\endcsname {\simpleiconsmaponetwo\symbol{240}}
+ \expandafter\def\csname simpleicon@warnerbrosicon\endcsname {\simpleiconsmaponetwo\symbol{241}}
+ \expandafter\def\csname simpleicon@warpicon\endcsname {\simpleiconsmaponetwo\symbol{242}}
+ \expandafter\def\csname simpleicon@wasabiicon\endcsname {\simpleiconsmaponetwo\symbol{243}}
+ \expandafter\def\csname simpleicon@wasmcloudicon\endcsname {\simpleiconsmaponetwo\symbol{244}}
+ \expandafter\def\csname simpleicon@wasmericon\endcsname {\simpleiconsmaponetwo\symbol{245}}
+ \expandafter\def\csname simpleicon@watchtowericon\endcsname {\simpleiconsmaponetwo\symbol{246}}
+ \expandafter\def\csname simpleicon@wattpadicon\endcsname {\simpleiconsmaponetwo\symbol{247}}
+ \expandafter\def\csname simpleicon@waylandicon\endcsname {\simpleiconsmaponetwo\symbol{248}}
+ \expandafter\def\csname simpleicon@wazeicon\endcsname {\simpleiconsmaponetwo\symbol{249}}
+ \expandafter\def\csname simpleicon@wazirxicon\endcsname {\simpleiconsmaponetwo\symbol{250}}
+ \expandafter\def\csname simpleicon@wearosicon\endcsname {\simpleiconsmaponetwo\symbol{251}}
+ \expandafter\def\csname simpleicon@weasylicon\endcsname {\simpleiconsmaponetwo\symbol{252}}
+ \expandafter\def\csname simpleicon@web3dotjsicon\endcsname {\simpleiconsmaponetwo\symbol{253}}
+ \expandafter\def\csname simpleicon@webassemblyicon\endcsname {\simpleiconsmaponetwo\symbol{254}}
+ \expandafter\def\csname simpleicon@webauthnicon\endcsname {\simpleiconsmaponetwo\symbol{255}}
+ \expandafter\def\csname simpleicon@webcomponentsdotorgicon\endcsname {\simpleiconsmaponethree\symbol{0}}
+ \expandafter\def\csname simpleicon@webdriverioicon\endcsname {\simpleiconsmaponethree\symbol{1}}
+ \expandafter\def\csname simpleicon@webexicon\endcsname {\simpleiconsmaponethree\symbol{2}}
+ \expandafter\def\csname simpleicon@webflowicon\endcsname {\simpleiconsmaponethree\symbol{3}}
+ \expandafter\def\csname simpleicon@webglicon\endcsname {\simpleiconsmaponethree\symbol{4}}
+ \expandafter\def\csname simpleicon@webgpuicon\endcsname {\simpleiconsmaponethree\symbol{5}}
+ \expandafter\def\csname simpleicon@weblateicon\endcsname {\simpleiconsmaponethree\symbol{6}}
+ \expandafter\def\csname simpleicon@webminicon\endcsname {\simpleiconsmaponethree\symbol{7}}
+ \expandafter\def\csname simpleicon@webmoneyicon\endcsname {\simpleiconsmaponethree\symbol{8}}
+ \expandafter\def\csname simpleicon@webpackicon\endcsname {\simpleiconsmaponethree\symbol{9}}
+ \expandafter\def\csname simpleicon@webrtcicon\endcsname {\simpleiconsmaponethree\symbol{10}}
+ \expandafter\def\csname simpleicon@webstormicon\endcsname {\simpleiconsmaponethree\symbol{11}}
+ \expandafter\def\csname simpleicon@webtoonicon\endcsname {\simpleiconsmaponethree\symbol{12}}
+ \expandafter\def\csname simpleicon@webtreesicon\endcsname {\simpleiconsmaponethree\symbol{13}}
+ \expandafter\def\csname simpleicon@wechaticon\endcsname {\simpleiconsmaponethree\symbol{14}}
+ \expandafter\def\csname simpleicon@wegameicon\endcsname {\simpleiconsmaponethree\symbol{15}}
+ \expandafter\def\csname simpleicon@weightsandbiasesicon\endcsname {\simpleiconsmaponethree\symbol{16}}
+ \expandafter\def\csname simpleicon@welcometothejungleicon\endcsname {\simpleiconsmaponethree\symbol{17}}
+ \expandafter\def\csname simpleicon@wellfoundicon\endcsname {\simpleiconsmaponethree\symbol{18}}
+ \expandafter\def\csname simpleicon@wellsfargoicon\endcsname {\simpleiconsmaponethree\symbol{19}}
+ \expandafter\def\csname simpleicon@wemoicon\endcsname {\simpleiconsmaponethree\symbol{20}}
+ \expandafter\def\csname simpleicon@westerndigitalicon\endcsname {\simpleiconsmaponethree\symbol{21}}
+ \expandafter\def\csname simpleicon@westernunionicon\endcsname {\simpleiconsmaponethree\symbol{22}}
+ \expandafter\def\csname simpleicon@wetransfericon\endcsname {\simpleiconsmaponethree\symbol{23}}
+ \expandafter\def\csname simpleicon@weztermicon\endcsname {\simpleiconsmaponethree\symbol{24}}
+ \expandafter\def\csname simpleicon@wgpuicon\endcsname {\simpleiconsmaponethree\symbol{25}}
+ \expandafter\def\csname simpleicon@whatsappicon\endcsname {\simpleiconsmaponethree\symbol{26}}
+ \expandafter\def\csname simpleicon@wheniworkicon\endcsname {\simpleiconsmaponethree\symbol{27}}
+ \expandafter\def\csname simpleicon@wiiicon\endcsname {\simpleiconsmaponethree\symbol{28}}
+ \expandafter\def\csname simpleicon@wiiuicon\endcsname {\simpleiconsmaponethree\symbol{29}}
+ \expandafter\def\csname simpleicon@wikidataicon\endcsname {\simpleiconsmaponethree\symbol{30}}
+ \expandafter\def\csname simpleicon@wikidotggicon\endcsname {\simpleiconsmaponethree\symbol{31}}
+ \expandafter\def\csname simpleicon@wikidotjsicon\endcsname {\simpleiconsmaponethree\symbol{32}}
+ \expandafter\def\csname simpleicon@wikimediacommonsicon\endcsname {\simpleiconsmaponethree\symbol{33}}
+ \expandafter\def\csname simpleicon@wikimediafoundationicon\endcsname {\simpleiconsmaponethree\symbol{34}}
+ \expandafter\def\csname simpleicon@wikipediaicon\endcsname {\simpleiconsmaponethree\symbol{35}}
+ \expandafter\def\csname simpleicon@wikiquoteicon\endcsname {\simpleiconsmaponethree\symbol{36}}
+ \expandafter\def\csname simpleicon@wikivoyageicon\endcsname {\simpleiconsmaponethree\symbol{37}}
+ \expandafter\def\csname simpleicon@winampicon\endcsname {\simpleiconsmaponethree\symbol{38}}
+ \expandafter\def\csname simpleicon@wiproicon\endcsname {\simpleiconsmaponethree\symbol{39}}
+ \expandafter\def\csname simpleicon@wireicon\endcsname {\simpleiconsmaponethree\symbol{40}}
+ \expandafter\def\csname simpleicon@wireguardicon\endcsname {\simpleiconsmaponethree\symbol{41}}
+ \expandafter\def\csname simpleicon@wiresharkicon\endcsname {\simpleiconsmaponethree\symbol{42}}
+ \expandafter\def\csname simpleicon@wiseicon\endcsname {\simpleiconsmaponethree\symbol{43}}
+ \expandafter\def\csname simpleicon@wishicon\endcsname {\simpleiconsmaponethree\symbol{44}}
+ \expandafter\def\csname simpleicon@wistiaicon\endcsname {\simpleiconsmaponethree\symbol{45}}
+ \expandafter\def\csname simpleicon@wixicon\endcsname {\simpleiconsmaponethree\symbol{46}}
+ \expandafter\def\csname simpleicon@wizzairicon\endcsname {\simpleiconsmaponethree\symbol{47}}
+ \expandafter\def\csname simpleicon@wolframicon\endcsname {\simpleiconsmaponethree\symbol{48}}
+ \expandafter\def\csname simpleicon@wolframlanguageicon\endcsname {\simpleiconsmaponethree\symbol{49}}
+ \expandafter\def\csname simpleicon@wolframmathematicaicon\endcsname {\simpleiconsmaponethree\symbol{50}}
+ \expandafter\def\csname simpleicon@wondershareicon\endcsname {\simpleiconsmaponethree\symbol{51}}
+ \expandafter\def\csname simpleicon@wondersharefilmoraicon\endcsname {\simpleiconsmaponethree\symbol{52}}
+ \expandafter\def\csname simpleicon@wooicon\endcsname {\simpleiconsmaponethree\symbol{53}}
+ \expandafter\def\csname simpleicon@woocommerceicon\endcsname {\simpleiconsmaponethree\symbol{54}}
+ \expandafter\def\csname simpleicon@wordpressicon\endcsname {\simpleiconsmaponethree\symbol{55}}
+ \expandafter\def\csname simpleicon@workplaceicon\endcsname {\simpleiconsmaponethree\symbol{56}}
+ \expandafter\def\csname simpleicon@worldhealthorganizationicon\endcsname {\simpleiconsmaponethree\symbol{57}}
+ \expandafter\def\csname simpleicon@wpengineicon\endcsname {\simpleiconsmaponethree\symbol{58}}
+ \expandafter\def\csname simpleicon@wpexplorericon\endcsname {\simpleiconsmaponethree\symbol{59}}
+ \expandafter\def\csname simpleicon@wprocketicon\endcsname {\simpleiconsmaponethree\symbol{60}}
+ \expandafter\def\csname simpleicon@writedotasicon\endcsname {\simpleiconsmaponethree\symbol{61}}
+ \expandafter\def\csname simpleicon@wweicon\endcsname {\simpleiconsmaponethree\symbol{62}}
+ \expandafter\def\csname simpleicon@wwiseicon\endcsname {\simpleiconsmaponethree\symbol{63}}
+ \expandafter\def\csname simpleicon@wykopicon\endcsname {\simpleiconsmaponethree\symbol{64}}
+ \expandafter\def\csname simpleicon@wyzeicon\endcsname {\simpleiconsmaponethree\symbol{65}}
+ \expandafter\def\csname simpleicon@xicon\endcsname {\simpleiconsmaponethree\symbol{66}}
+ \expandafter\def\csname simpleicon@xamppicon\endcsname {\simpleiconsmaponethree\symbol{67}}
+ \expandafter\def\csname simpleicon@xcodeicon\endcsname {\simpleiconsmaponethree\symbol{68}}
+ \expandafter\def\csname simpleicon@xdadevelopersicon\endcsname {\simpleiconsmaponethree\symbol{69}}
+ \expandafter\def\csname simpleicon@xdotorgicon\endcsname {\simpleiconsmaponethree\symbol{70}}
+ \expandafter\def\csname simpleicon@xenditicon\endcsname {\simpleiconsmaponethree\symbol{71}}
+ \expandafter\def\csname simpleicon@xeroicon\endcsname {\simpleiconsmaponethree\symbol{72}}
+ \expandafter\def\csname simpleicon@xfceicon\endcsname {\simpleiconsmaponethree\symbol{73}}
+ \expandafter\def\csname simpleicon@xiaohongshuicon\endcsname {\simpleiconsmaponethree\symbol{74}}
+ \expandafter\def\csname simpleicon@xiaomiicon\endcsname {\simpleiconsmaponethree\symbol{75}}
+ \expandafter\def\csname simpleicon@xingicon\endcsname {\simpleiconsmaponethree\symbol{76}}
+ \expandafter\def\csname simpleicon@xmlicon\endcsname {\simpleiconsmaponethree\symbol{77}}
+ \expandafter\def\csname simpleicon@xmppicon\endcsname {\simpleiconsmaponethree\symbol{78}}
+ \expandafter\def\csname simpleicon@xoicon\endcsname {\simpleiconsmaponethree\symbol{79}}
+ \expandafter\def\csname simpleicon@xrpicon\endcsname {\simpleiconsmaponethree\symbol{80}}
+ \expandafter\def\csname simpleicon@xspliticon\endcsname {\simpleiconsmaponethree\symbol{81}}
+ \expandafter\def\csname simpleicon@xstateicon\endcsname {\simpleiconsmaponethree\symbol{82}}
+ \expandafter\def\csname simpleicon@xubuntuicon\endcsname {\simpleiconsmaponethree\symbol{83}}
+ \expandafter\def\csname simpleicon@yabaiicon\endcsname {\simpleiconsmaponethree\symbol{84}}
+ \expandafter\def\csname simpleicon@yaleicon\endcsname {\simpleiconsmaponethree\symbol{85}}
+ \expandafter\def\csname simpleicon@yamahacorporationicon\endcsname {\simpleiconsmaponethree\symbol{86}}
+ \expandafter\def\csname simpleicon@yamahamotorcorporationicon\endcsname {\simpleiconsmaponethree\symbol{87}}
+ \expandafter\def\csname simpleicon@yamlicon\endcsname {\simpleiconsmaponethree\symbol{88}}
+ \expandafter\def\csname simpleicon@yandexcloudicon\endcsname {\simpleiconsmaponethree\symbol{89}}
+ \expandafter\def\csname simpleicon@yarnicon\endcsname {\simpleiconsmaponethree\symbol{90}}
+ \expandafter\def\csname simpleicon@ycombinatoricon\endcsname {\simpleiconsmaponethree\symbol{91}}
+ \expandafter\def\csname simpleicon@yelpicon\endcsname {\simpleiconsmaponethree\symbol{92}}
+ \expandafter\def\csname simpleicon@yetiicon\endcsname {\simpleiconsmaponethree\symbol{93}}
+ \expandafter\def\csname simpleicon@yiiicon\endcsname {\simpleiconsmaponethree\symbol{94}}
+ \expandafter\def\csname simpleicon@yoasticon\endcsname {\simpleiconsmaponethree\symbol{95}}
+ \expandafter\def\csname simpleicon@youtubeicon\endcsname {\simpleiconsmaponethree\symbol{96}}
+ \expandafter\def\csname simpleicon@youtubegamingicon\endcsname {\simpleiconsmaponethree\symbol{97}}
+ \expandafter\def\csname simpleicon@youtubekidsicon\endcsname {\simpleiconsmaponethree\symbol{98}}
+ \expandafter\def\csname simpleicon@youtubemusicicon\endcsname {\simpleiconsmaponethree\symbol{99}}
+ \expandafter\def\csname simpleicon@youtubeshortsicon\endcsname {\simpleiconsmaponethree\symbol{100}}
+ \expandafter\def\csname simpleicon@youtubestudioicon\endcsname {\simpleiconsmaponethree\symbol{101}}
+ \expandafter\def\csname simpleicon@youtubetvicon\endcsname {\simpleiconsmaponethree\symbol{102}}
+ \expandafter\def\csname simpleicon@yricon\endcsname {\simpleiconsmaponethree\symbol{103}}
+ \expandafter\def\csname simpleicon@yubicoicon\endcsname {\simpleiconsmaponethree\symbol{104}}
+ \expandafter\def\csname simpleicon@yunohosticon\endcsname {\simpleiconsmaponethree\symbol{105}}
+ \expandafter\def\csname simpleicon@zabkaicon\endcsname {\simpleiconsmaponethree\symbol{106}}
+ \expandafter\def\csname simpleicon@zaimicon\endcsname {\simpleiconsmaponethree\symbol{107}}
+ \expandafter\def\csname simpleicon@zalandoicon\endcsname {\simpleiconsmaponethree\symbol{108}}
+ \expandafter\def\csname simpleicon@zaloicon\endcsname {\simpleiconsmaponethree\symbol{109}}
+ \expandafter\def\csname simpleicon@zapicon\endcsname {\simpleiconsmaponethree\symbol{110}}
+ \expandafter\def\csname simpleicon@zapiericon\endcsname {\simpleiconsmaponethree\symbol{111}}
+ \expandafter\def\csname simpleicon@zaraicon\endcsname {\simpleiconsmaponethree\symbol{112}}
+ \expandafter\def\csname simpleicon@zazzleicon\endcsname {\simpleiconsmaponethree\symbol{113}}
+ \expandafter\def\csname simpleicon@zcashicon\endcsname {\simpleiconsmaponethree\symbol{114}}
+ \expandafter\def\csname simpleicon@zcoolicon\endcsname {\simpleiconsmaponethree\symbol{115}}
+ \expandafter\def\csname simpleicon@zdficon\endcsname {\simpleiconsmaponethree\symbol{116}}
+ \expandafter\def\csname simpleicon@zebpayicon\endcsname {\simpleiconsmaponethree\symbol{117}}
+ \expandafter\def\csname simpleicon@zebratechnologiesicon\endcsname {\simpleiconsmaponethree\symbol{118}}
+ \expandafter\def\csname simpleicon@zedindustriesicon\endcsname {\simpleiconsmaponethree\symbol{119}}
+ \expandafter\def\csname simpleicon@zelleicon\endcsname {\simpleiconsmaponethree\symbol{120}}
+ \expandafter\def\csname simpleicon@zendicon\endcsname {\simpleiconsmaponethree\symbol{121}}
+ \expandafter\def\csname simpleicon@zendeskicon\endcsname {\simpleiconsmaponethree\symbol{122}}
+ \expandafter\def\csname simpleicon@zennicon\endcsname {\simpleiconsmaponethree\symbol{123}}
+ \expandafter\def\csname simpleicon@zenodoicon\endcsname {\simpleiconsmaponethree\symbol{124}}
+ \expandafter\def\csname simpleicon@zensaricon\endcsname {\simpleiconsmaponethree\symbol{125}}
+ \expandafter\def\csname simpleicon@zerodhaicon\endcsname {\simpleiconsmaponethree\symbol{126}}
+ \expandafter\def\csname simpleicon@zerotiericon\endcsname {\simpleiconsmaponethree\symbol{127}}
+ \expandafter\def\csname simpleicon@zerplyicon\endcsname {\simpleiconsmaponethree\symbol{128}}
+ \expandafter\def\csname simpleicon@zettlricon\endcsname {\simpleiconsmaponethree\symbol{129}}
+ \expandafter\def\csname simpleicon@zhihuicon\endcsname {\simpleiconsmaponethree\symbol{130}}
+ \expandafter\def\csname simpleicon@zigicon\endcsname {\simpleiconsmaponethree\symbol{131}}
+ \expandafter\def\csname simpleicon@zigbeeicon\endcsname {\simpleiconsmaponethree\symbol{132}}
+ \expandafter\def\csname simpleicon@zigbee2mqtticon\endcsname {\simpleiconsmaponethree\symbol{133}}
+ \expandafter\def\csname simpleicon@ziggoicon\endcsname {\simpleiconsmaponethree\symbol{134}}
+ \expandafter\def\csname simpleicon@zilchicon\endcsname {\simpleiconsmaponethree\symbol{135}}
+ \expandafter\def\csname simpleicon@zillowicon\endcsname {\simpleiconsmaponethree\symbol{136}}
+ \expandafter\def\csname simpleicon@zincsearchicon\endcsname {\simpleiconsmaponethree\symbol{137}}
+ \expandafter\def\csname simpleicon@zingaticon\endcsname {\simpleiconsmaponethree\symbol{138}}
+ \expandafter\def\csname simpleicon@zodicon\endcsname {\simpleiconsmaponethree\symbol{139}}
+ \expandafter\def\csname simpleicon@zohoicon\endcsname {\simpleiconsmaponethree\symbol{140}}
+ \expandafter\def\csname simpleicon@zoipericon\endcsname {\simpleiconsmaponethree\symbol{141}}
+ \expandafter\def\csname simpleicon@zomatoicon\endcsname {\simpleiconsmaponethree\symbol{142}}
+ \expandafter\def\csname simpleicon@zoomicon\endcsname {\simpleiconsmaponethree\symbol{143}}
+ \expandafter\def\csname simpleicon@zorinicon\endcsname {\simpleiconsmaponethree\symbol{144}}
+ \expandafter\def\csname simpleicon@zoteroicon\endcsname {\simpleiconsmaponethree\symbol{145}}
+ \expandafter\def\csname simpleicon@zshicon\endcsname {\simpleiconsmaponethree\symbol{146}}
+ \expandafter\def\csname simpleicon@zulipicon\endcsname {\simpleiconsmaponethree\symbol{147}}
+ \expandafter\def\csname simpleicon@zyteicon\endcsname {\simpleiconsmaponethree\symbol{148}} \ 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 0d6a1468783..6d8de92be13 100644
--- a/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-xeluatex.tex
+++ b/Master/texmf-dist/tex/latex/simpleicons/simpleiconsglyphs-xeluatex.tex
@@ -1,3195 +1,3222 @@
\expandafter\def\csname simpleicon@1001tracklistsicon\endcsname {\simpleiconsmap\symbol{"EA01}}
- \expandafter\def\csname simpleicon@1panelicon\endcsname {\simpleiconsmap\symbol{"EA02}}
- \expandafter\def\csname simpleicon@1passwordicon\endcsname {\simpleiconsmap\symbol{"EA03}}
- \expandafter\def\csname simpleicon@2fasicon\endcsname {\simpleiconsmap\symbol{"EA04}}
- \expandafter\def\csname simpleicon@2kicon\endcsname {\simpleiconsmap\symbol{"EA05}}
- \expandafter\def\csname simpleicon@365datascienceicon\endcsname {\simpleiconsmap\symbol{"EA06}}
- \expandafter\def\csname simpleicon@3micon\endcsname {\simpleiconsmap\symbol{"EA07}}
- \expandafter\def\csname simpleicon@42icon\endcsname {\simpleiconsmap\symbol{"EA08}}
- \expandafter\def\csname simpleicon@4chanicon\endcsname {\simpleiconsmap\symbol{"EA09}}
- \expandafter\def\csname simpleicon@4dicon\endcsname {\simpleiconsmap\symbol{"EA0A}}
- \expandafter\def\csname simpleicon@500pxicon\endcsname {\simpleiconsmap\symbol{"EA0B}}
- \expandafter\def\csname simpleicon@7zipicon\endcsname {\simpleiconsmap\symbol{"EA0C}}
- \expandafter\def\csname simpleicon@99designsicon\endcsname {\simpleiconsmap\symbol{"EA0D}}
- \expandafter\def\csname simpleicon@9gagicon\endcsname {\simpleiconsmap\symbol{"EA0E}}
- \expandafter\def\csname simpleicon@abbotticon\endcsname {\simpleiconsmap\symbol{"EA0F}}
- \expandafter\def\csname simpleicon@abbrobotstudioicon\endcsname {\simpleiconsmap\symbol{"EA10}}
- \expandafter\def\csname simpleicon@abbvieicon\endcsname {\simpleiconsmap\symbol{"EA11}}
- \expandafter\def\csname simpleicon@aboutdotmeicon\endcsname {\simpleiconsmap\symbol{"EA12}}
- \expandafter\def\csname simpleicon@abstracticon\endcsname {\simpleiconsmap\symbol{"EA13}}
- \expandafter\def\csname simpleicon@abusedotchicon\endcsname {\simpleiconsmap\symbol{"EA14}}
- \expandafter\def\csname simpleicon@academiaicon\endcsname {\simpleiconsmap\symbol{"EA15}}
- \expandafter\def\csname simpleicon@accentureicon\endcsname {\simpleiconsmap\symbol{"EA16}}
- \expandafter\def\csname simpleicon@accusofticon\endcsname {\simpleiconsmap\symbol{"EA17}}
- \expandafter\def\csname simpleicon@acericon\endcsname {\simpleiconsmap\symbol{"EA18}}
- \expandafter\def\csname simpleicon@acmicon\endcsname {\simpleiconsmap\symbol{"EA19}}
- \expandafter\def\csname simpleicon@actigraphicon\endcsname {\simpleiconsmap\symbol{"EA1A}}
- \expandafter\def\csname simpleicon@activisionicon\endcsname {\simpleiconsmap\symbol{"EA1B}}
- \expandafter\def\csname simpleicon@activitypubicon\endcsname {\simpleiconsmap\symbol{"EA1C}}
- \expandafter\def\csname simpleicon@actixicon\endcsname {\simpleiconsmap\symbol{"EA1D}}
- \expandafter\def\csname simpleicon@acuraicon\endcsname {\simpleiconsmap\symbol{"EA1E}}
- \expandafter\def\csname simpleicon@adafruiticon\endcsname {\simpleiconsmap\symbol{"EA1F}}
- \expandafter\def\csname simpleicon@adblockicon\endcsname {\simpleiconsmap\symbol{"EA20}}
- \expandafter\def\csname simpleicon@adblockplusicon\endcsname {\simpleiconsmap\symbol{"EA21}}
- \expandafter\def\csname simpleicon@adguardicon\endcsname {\simpleiconsmap\symbol{"EA22}}
- \expandafter\def\csname simpleicon@adidasicon\endcsname {\simpleiconsmap\symbol{"EA23}}
- \expandafter\def\csname simpleicon@adminericon\endcsname {\simpleiconsmap\symbol{"EA24}}
- \expandafter\def\csname simpleicon@adobeicon\endcsname {\simpleiconsmap\symbol{"EA25}}
- \expandafter\def\csname simpleicon@adobeacrobatreadericon\endcsname {\simpleiconsmap\symbol{"EA26}}
- \expandafter\def\csname simpleicon@adobeaftereffectsicon\endcsname {\simpleiconsmap\symbol{"EA27}}
- \expandafter\def\csname simpleicon@adobeauditionicon\endcsname {\simpleiconsmap\symbol{"EA28}}
- \expandafter\def\csname simpleicon@adobecreativecloudicon\endcsname {\simpleiconsmap\symbol{"EA29}}
- \expandafter\def\csname simpleicon@adobedreamweavericon\endcsname {\simpleiconsmap\symbol{"EA2A}}
- \expandafter\def\csname simpleicon@adobefontsicon\endcsname {\simpleiconsmap\symbol{"EA2B}}
- \expandafter\def\csname simpleicon@adobeillustratoricon\endcsname {\simpleiconsmap\symbol{"EA2C}}
- \expandafter\def\csname simpleicon@adobeindesignicon\endcsname {\simpleiconsmap\symbol{"EA2D}}
- \expandafter\def\csname simpleicon@adobelightroomicon\endcsname {\simpleiconsmap\symbol{"EA2E}}
- \expandafter\def\csname simpleicon@adobelightroomclassicicon\endcsname {\simpleiconsmap\symbol{"EA2F}}
- \expandafter\def\csname simpleicon@adobephotoshopicon\endcsname {\simpleiconsmap\symbol{"EA30}}
- \expandafter\def\csname simpleicon@adobepremiereproicon\endcsname {\simpleiconsmap\symbol{"EA31}}
- \expandafter\def\csname simpleicon@adobexdicon\endcsname {\simpleiconsmap\symbol{"EA32}}
- \expandafter\def\csname simpleicon@adonisjsicon\endcsname {\simpleiconsmap\symbol{"EA33}}
- \expandafter\def\csname simpleicon@adpicon\endcsname {\simpleiconsmap\symbol{"EA34}}
- \expandafter\def\csname simpleicon@adrollicon\endcsname {\simpleiconsmap\symbol{"EA35}}
- \expandafter\def\csname simpleicon@adventofcodeicon\endcsname {\simpleiconsmap\symbol{"EA36}}
- \expandafter\def\csname simpleicon@adyenicon\endcsname {\simpleiconsmap\symbol{"EA37}}
- \expandafter\def\csname simpleicon@aegisauthenticatoricon\endcsname {\simpleiconsmap\symbol{"EA38}}
- \expandafter\def\csname simpleicon@aerlingusicon\endcsname {\simpleiconsmap\symbol{"EA39}}
- \expandafter\def\csname simpleicon@aerofloticon\endcsname {\simpleiconsmap\symbol{"EA3A}}
- \expandafter\def\csname simpleicon@aeromexicoicon\endcsname {\simpleiconsmap\symbol{"EA3B}}
- \expandafter\def\csname simpleicon@aerospikeicon\endcsname {\simpleiconsmap\symbol{"EA3C}}
- \expandafter\def\csname simpleicon@aewicon\endcsname {\simpleiconsmap\symbol{"EA3D}}
- \expandafter\def\csname simpleicon@affineicon\endcsname {\simpleiconsmap\symbol{"EA3E}}
- \expandafter\def\csname simpleicon@affinityicon\endcsname {\simpleiconsmap\symbol{"EA3F}}
- \expandafter\def\csname simpleicon@affinitydesignericon\endcsname {\simpleiconsmap\symbol{"EA40}}
- \expandafter\def\csname simpleicon@affinityphotoicon\endcsname {\simpleiconsmap\symbol{"EA41}}
- \expandafter\def\csname simpleicon@affinitypublishericon\endcsname {\simpleiconsmap\symbol{"EA42}}
- \expandafter\def\csname simpleicon@aframeicon\endcsname {\simpleiconsmap\symbol{"EA43}}
- \expandafter\def\csname simpleicon@afterpayicon\endcsname {\simpleiconsmap\symbol{"EA44}}
- \expandafter\def\csname simpleicon@agoraicon\endcsname {\simpleiconsmap\symbol{"EA45}}
- \expandafter\def\csname simpleicon@aibicon\endcsname {\simpleiconsmap\symbol{"EA46}}
- \expandafter\def\csname simpleicon@aidungeonicon\endcsname {\simpleiconsmap\symbol{"EA47}}
- \expandafter\def\csname simpleicon@aiohttpicon\endcsname {\simpleiconsmap\symbol{"EA48}}
- \expandafter\def\csname simpleicon@aiqfomeicon\endcsname {\simpleiconsmap\symbol{"EA49}}
- \expandafter\def\csname simpleicon@airasiaicon\endcsname {\simpleiconsmap\symbol{"EA4A}}
- \expandafter\def\csname simpleicon@airbnbicon\endcsname {\simpleiconsmap\symbol{"EA4B}}
- \expandafter\def\csname simpleicon@airbrakeicon\endcsname {\simpleiconsmap\symbol{"EA4C}}
- \expandafter\def\csname simpleicon@airbusicon\endcsname {\simpleiconsmap\symbol{"EA4D}}
- \expandafter\def\csname simpleicon@airbyteicon\endcsname {\simpleiconsmap\symbol{"EA4E}}
- \expandafter\def\csname simpleicon@aircallicon\endcsname {\simpleiconsmap\symbol{"EA4F}}
- \expandafter\def\csname simpleicon@aircanadaicon\endcsname {\simpleiconsmap\symbol{"EA50}}
- \expandafter\def\csname simpleicon@airchinaicon\endcsname {\simpleiconsmap\symbol{"EA51}}
- \expandafter\def\csname simpleicon@airfranceicon\endcsname {\simpleiconsmap\symbol{"EA52}}
- \expandafter\def\csname simpleicon@airindiaicon\endcsname {\simpleiconsmap\symbol{"EA53}}
- \expandafter\def\csname simpleicon@airplayaudioicon\endcsname {\simpleiconsmap\symbol{"EA54}}
- \expandafter\def\csname simpleicon@airplayvideoicon\endcsname {\simpleiconsmap\symbol{"EA55}}
- \expandafter\def\csname simpleicon@airtableicon\endcsname {\simpleiconsmap\symbol{"EA56}}
- \expandafter\def\csname simpleicon@airtelicon\endcsname {\simpleiconsmap\symbol{"EA57}}
- \expandafter\def\csname simpleicon@airtransaticon\endcsname {\simpleiconsmap\symbol{"EA58}}
- \expandafter\def\csname simpleicon@ajvicon\endcsname {\simpleiconsmap\symbol{"EA59}}
- \expandafter\def\csname simpleicon@akamaiicon\endcsname {\simpleiconsmap\symbol{"EA5A}}
- \expandafter\def\csname simpleicon@akauntingicon\endcsname {\simpleiconsmap\symbol{"EA5B}}
- \expandafter\def\csname simpleicon@akiflowicon\endcsname {\simpleiconsmap\symbol{"EA5C}}
- \expandafter\def\csname simpleicon@alacrittyicon\endcsname {\simpleiconsmap\symbol{"EA5D}}
- \expandafter\def\csname simpleicon@alamyicon\endcsname {\simpleiconsmap\symbol{"EA5E}}
- \expandafter\def\csname simpleicon@albertheijnicon\endcsname {\simpleiconsmap\symbol{"EA5F}}
- \expandafter\def\csname simpleicon@albyicon\endcsname {\simpleiconsmap\symbol{"EA60}}
- \expandafter\def\csname simpleicon@alchemyicon\endcsname {\simpleiconsmap\symbol{"EA61}}
- \expandafter\def\csname simpleicon@aldinordicon\endcsname {\simpleiconsmap\symbol{"EA62}}
- \expandafter\def\csname simpleicon@aldisudicon\endcsname {\simpleiconsmap\symbol{"EA63}}
- \expandafter\def\csname simpleicon@alfaromeoicon\endcsname {\simpleiconsmap\symbol{"EA64}}
- \expandafter\def\csname simpleicon@alfredicon\endcsname {\simpleiconsmap\symbol{"EA65}}
- \expandafter\def\csname simpleicon@algoliaicon\endcsname {\simpleiconsmap\symbol{"EA66}}
- \expandafter\def\csname simpleicon@algorandicon\endcsname {\simpleiconsmap\symbol{"EA67}}
- \expandafter\def\csname simpleicon@alibabacloudicon\endcsname {\simpleiconsmap\symbol{"EA68}}
- \expandafter\def\csname simpleicon@alibabadotcomicon\endcsname {\simpleiconsmap\symbol{"EA69}}
- \expandafter\def\csname simpleicon@alienwareicon\endcsname {\simpleiconsmap\symbol{"EA6A}}
- \expandafter\def\csname simpleicon@aliexpressicon\endcsname {\simpleiconsmap\symbol{"EA6B}}
- \expandafter\def\csname simpleicon@alipayicon\endcsname {\simpleiconsmap\symbol{"EA6C}}
- \expandafter\def\csname simpleicon@allegroicon\endcsname {\simpleiconsmap\symbol{"EA6D}}
- \expandafter\def\csname simpleicon@alliedmoddersicon\endcsname {\simpleiconsmap\symbol{"EA6E}}
- \expandafter\def\csname simpleicon@allocineicon\endcsname {\simpleiconsmap\symbol{"EA6F}}
- \expandafter\def\csname simpleicon@alltrailsicon\endcsname {\simpleiconsmap\symbol{"EA70}}
- \expandafter\def\csname simpleicon@almalinuxicon\endcsname {\simpleiconsmap\symbol{"EA71}}
- \expandafter\def\csname simpleicon@alpinedotjsicon\endcsname {\simpleiconsmap\symbol{"EA72}}
- \expandafter\def\csname simpleicon@alpinelinuxicon\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@antaicon\endcsname {\simpleiconsmap\symbol{"EAA8}}
- \expandafter\def\csname simpleicon@antdesignicon\endcsname {\simpleiconsmap\symbol{"EAA9}}
- \expandafter\def\csname simpleicon@antena3icon\endcsname {\simpleiconsmap\symbol{"EAAA}}
- \expandafter\def\csname simpleicon@anthropicicon\endcsname {\simpleiconsmap\symbol{"EAAB}}
- \expandafter\def\csname simpleicon@anycubicicon\endcsname {\simpleiconsmap\symbol{"EAAC}}
- \expandafter\def\csname simpleicon@anydeskicon\endcsname {\simpleiconsmap\symbol{"EAAD}}
- \expandafter\def\csname simpleicon@anytypeicon\endcsname {\simpleiconsmap\symbol{"EAAE}}
- \expandafter\def\csname simpleicon@aolicon\endcsname {\simpleiconsmap\symbol{"EAAF}}
- \expandafter\def\csname simpleicon@apacheicon\endcsname {\simpleiconsmap\symbol{"EAB0}}
- \expandafter\def\csname simpleicon@apacheairflowicon\endcsname {\simpleiconsmap\symbol{"EAB1}}
- \expandafter\def\csname simpleicon@apacheanticon\endcsname {\simpleiconsmap\symbol{"EAB2}}
- \expandafter\def\csname simpleicon@apachecassandraicon\endcsname {\simpleiconsmap\symbol{"EAB3}}
- \expandafter\def\csname simpleicon@apachecloudstackicon\endcsname {\simpleiconsmap\symbol{"EAB4}}
- \expandafter\def\csname simpleicon@apachecordovaicon\endcsname {\simpleiconsmap\symbol{"EAB5}}
- \expandafter\def\csname simpleicon@apachecouchdbicon\endcsname {\simpleiconsmap\symbol{"EAB6}}
- \expandafter\def\csname simpleicon@apachedruidicon\endcsname {\simpleiconsmap\symbol{"EAB7}}
- \expandafter\def\csname simpleicon@apacheechartsicon\endcsname {\simpleiconsmap\symbol{"EAB8}}
- \expandafter\def\csname simpleicon@apacheflinkicon\endcsname {\simpleiconsmap\symbol{"EAB9}}
- \expandafter\def\csname simpleicon@apachefreemarkericon\endcsname {\simpleiconsmap\symbol{"EABA}}
- \expandafter\def\csname simpleicon@apachegroovyicon\endcsname {\simpleiconsmap\symbol{"EABB}}
- \expandafter\def\csname simpleicon@apacheguacamoleicon\endcsname {\simpleiconsmap\symbol{"EABC}}
- \expandafter\def\csname simpleicon@apachehadoopicon\endcsname {\simpleiconsmap\symbol{"EABD}}
- \expandafter\def\csname simpleicon@apachehbaseicon\endcsname {\simpleiconsmap\symbol{"EABE}}
- \expandafter\def\csname simpleicon@apachehiveicon\endcsname {\simpleiconsmap\symbol{"EABF}}
- \expandafter\def\csname simpleicon@apachejmetericon\endcsname {\simpleiconsmap\symbol{"EAC0}}
- \expandafter\def\csname simpleicon@apachekafkaicon\endcsname {\simpleiconsmap\symbol{"EAC1}}
- \expandafter\def\csname simpleicon@apachekylinicon\endcsname {\simpleiconsmap\symbol{"EAC2}}
- \expandafter\def\csname simpleicon@apachemavenicon\endcsname {\simpleiconsmap\symbol{"EAC3}}
- \expandafter\def\csname simpleicon@apachenetbeansideicon\endcsname {\simpleiconsmap\symbol{"EAC4}}
- \expandafter\def\csname simpleicon@apacheopenofficeicon\endcsname {\simpleiconsmap\symbol{"EAC5}}
- \expandafter\def\csname simpleicon@apacheparqueticon\endcsname {\simpleiconsmap\symbol{"EAC6}}
- \expandafter\def\csname simpleicon@apachepulsaricon\endcsname {\simpleiconsmap\symbol{"EAC7}}
- \expandafter\def\csname simpleicon@apacherocketmqicon\endcsname {\simpleiconsmap\symbol{"EAC8}}
- \expandafter\def\csname simpleicon@apachesolricon\endcsname {\simpleiconsmap\symbol{"EAC9}}
- \expandafter\def\csname simpleicon@apachesparkicon\endcsname {\simpleiconsmap\symbol{"EACA}}
- \expandafter\def\csname simpleicon@apachestormicon\endcsname {\simpleiconsmap\symbol{"EACB}}
- \expandafter\def\csname simpleicon@apachesuperseticon\endcsname {\simpleiconsmap\symbol{"EACC}}
- \expandafter\def\csname simpleicon@apachetomcaticon\endcsname {\simpleiconsmap\symbol{"EACD}}
- \expandafter\def\csname simpleicon@aparaticon\endcsname {\simpleiconsmap\symbol{"EACE}}
- \expandafter\def\csname simpleicon@apifoxicon\endcsname {\simpleiconsmap\symbol{"EACF}}
- \expandafter\def\csname simpleicon@apmterminalsicon\endcsname {\simpleiconsmap\symbol{"EAD0}}
- \expandafter\def\csname simpleicon@apollographqlicon\endcsname {\simpleiconsmap\symbol{"EAD1}}
- \expandafter\def\csname simpleicon@apostropheicon\endcsname {\simpleiconsmap\symbol{"EAD2}}
- \expandafter\def\csname simpleicon@appianicon\endcsname {\simpleiconsmap\symbol{"EAD3}}
- \expandafter\def\csname simpleicon@appiumicon\endcsname {\simpleiconsmap\symbol{"EAD4}}
- \expandafter\def\csname simpleicon@appleicon\endcsname {\simpleiconsmap\symbol{"EAD5}}
- \expandafter\def\csname simpleicon@applearcadeicon\endcsname {\simpleiconsmap\symbol{"EAD6}}
- \expandafter\def\csname simpleicon@applemusicicon\endcsname {\simpleiconsmap\symbol{"EAD7}}
- \expandafter\def\csname simpleicon@applenewsicon\endcsname {\simpleiconsmap\symbol{"EAD8}}
- \expandafter\def\csname simpleicon@applepayicon\endcsname {\simpleiconsmap\symbol{"EAD9}}
- \expandafter\def\csname simpleicon@applepodcastsicon\endcsname {\simpleiconsmap\symbol{"EADA}}
- \expandafter\def\csname simpleicon@appletvicon\endcsname {\simpleiconsmap\symbol{"EADB}}
- \expandafter\def\csname simpleicon@appsignalicon\endcsname {\simpleiconsmap\symbol{"EADC}}
- \expandafter\def\csname simpleicon@appsmithicon\endcsname {\simpleiconsmap\symbol{"EADD}}
- \expandafter\def\csname simpleicon@appstoreicon\endcsname {\simpleiconsmap\symbol{"EADE}}
- \expandafter\def\csname simpleicon@appveyoricon\endcsname {\simpleiconsmap\symbol{"EADF}}
- \expandafter\def\csname simpleicon@appwriteicon\endcsname {\simpleiconsmap\symbol{"EAE0}}
- \expandafter\def\csname simpleicon@aquaicon\endcsname {\simpleiconsmap\symbol{"EAE1}}
- \expandafter\def\csname simpleicon@aralicon\endcsname {\simpleiconsmap\symbol{"EAE2}}
- \expandafter\def\csname simpleicon@arangodbicon\endcsname {\simpleiconsmap\symbol{"EAE3}}
- \expandafter\def\csname simpleicon@arcicon\endcsname {\simpleiconsmap\symbol{"EAE4}}
- \expandafter\def\csname simpleicon@arcgisicon\endcsname {\simpleiconsmap\symbol{"EAE5}}
- \expandafter\def\csname simpleicon@archicadicon\endcsname {\simpleiconsmap\symbol{"EAE6}}
- \expandafter\def\csname simpleicon@archiveofourownicon\endcsname {\simpleiconsmap\symbol{"EAE7}}
- \expandafter\def\csname simpleicon@archlinuxicon\endcsname {\simpleiconsmap\symbol{"EAE8}}
- \expandafter\def\csname simpleicon@ardouricon\endcsname {\simpleiconsmap\symbol{"EAE9}}
- \expandafter\def\csname simpleicon@arduinoicon\endcsname {\simpleiconsmap\symbol{"EAEA}}
- \expandafter\def\csname simpleicon@argoicon\endcsname {\simpleiconsmap\symbol{"EAEB}}
- \expandafter\def\csname simpleicon@argosicon\endcsname {\simpleiconsmap\symbol{"EAEC}}
- \expandafter\def\csname simpleicon@ariakiticon\endcsname {\simpleiconsmap\symbol{"EAED}}
- \expandafter\def\csname simpleicon@arkecosystemicon\endcsname {\simpleiconsmap\symbol{"EAEE}}
- \expandafter\def\csname simpleicon@arloicon\endcsname {\simpleiconsmap\symbol{"EAEF}}
- \expandafter\def\csname simpleicon@armicon\endcsname {\simpleiconsmap\symbol{"EAF0}}
- \expandafter\def\csname simpleicon@armkeilicon\endcsname {\simpleiconsmap\symbol{"EAF1}}
- \expandafter\def\csname simpleicon@arstechnicaicon\endcsname {\simpleiconsmap\symbol{"EAF2}}
- \expandafter\def\csname simpleicon@artifacthubicon\endcsname {\simpleiconsmap\symbol{"EAF3}}
- \expandafter\def\csname simpleicon@artixlinuxicon\endcsname {\simpleiconsmap\symbol{"EAF4}}
- \expandafter\def\csname simpleicon@artstationicon\endcsname {\simpleiconsmap\symbol{"EAF5}}
- \expandafter\def\csname simpleicon@arxivicon\endcsname {\simpleiconsmap\symbol{"EAF6}}
- \expandafter\def\csname simpleicon@asahilinuxicon\endcsname {\simpleiconsmap\symbol{"EAF7}}
- \expandafter\def\csname simpleicon@asanaicon\endcsname {\simpleiconsmap\symbol{"EAF8}}
- \expandafter\def\csname simpleicon@asciidoctoricon\endcsname {\simpleiconsmap\symbol{"EAF9}}
- \expandafter\def\csname simpleicon@asciinemaicon\endcsname {\simpleiconsmap\symbol{"EAFA}}
- \expandafter\def\csname simpleicon@asdaicon\endcsname {\simpleiconsmap\symbol{"EAFB}}
- \expandafter\def\csname simpleicon@asepriteicon\endcsname {\simpleiconsmap\symbol{"EAFC}}
- \expandafter\def\csname simpleicon@askfmicon\endcsname {\simpleiconsmap\symbol{"EAFD}}
- \expandafter\def\csname simpleicon@assemblyscripticon\endcsname {\simpleiconsmap\symbol{"EAFE}}
- \expandafter\def\csname simpleicon@asteriskicon\endcsname {\simpleiconsmap\symbol{"EAFF}}
- \expandafter\def\csname simpleicon@astonmartinicon\endcsname {\simpleiconsmap\symbol{"EB00}}
- \expandafter\def\csname simpleicon@astraicon\endcsname {\simpleiconsmap\symbol{"EB01}}
- \expandafter\def\csname simpleicon@astralicon\endcsname {\simpleiconsmap\symbol{"EB02}}
- \expandafter\def\csname simpleicon@astroicon\endcsname {\simpleiconsmap\symbol{"EB03}}
- \expandafter\def\csname simpleicon@asusicon\endcsname {\simpleiconsmap\symbol{"EB04}}
- \expandafter\def\csname simpleicon@atandticon\endcsname {\simpleiconsmap\symbol{"EB05}}
- \expandafter\def\csname simpleicon@atariicon\endcsname {\simpleiconsmap\symbol{"EB06}}
- \expandafter\def\csname simpleicon@atlassianicon\endcsname {\simpleiconsmap\symbol{"EB07}}
- \expandafter\def\csname simpleicon@auchanicon\endcsname {\simpleiconsmap\symbol{"EB08}}
- \expandafter\def\csname simpleicon@audacityicon\endcsname {\simpleiconsmap\symbol{"EB09}}
- \expandafter\def\csname simpleicon@audiicon\endcsname {\simpleiconsmap\symbol{"EB0A}}
- \expandafter\def\csname simpleicon@audibleicon\endcsname {\simpleiconsmap\symbol{"EB0B}}
- \expandafter\def\csname simpleicon@audiobookshelficon\endcsname {\simpleiconsmap\symbol{"EB0C}}
- \expandafter\def\csname simpleicon@audioboomicon\endcsname {\simpleiconsmap\symbol{"EB0D}}
- \expandafter\def\csname simpleicon@audiomackicon\endcsname {\simpleiconsmap\symbol{"EB0E}}
- \expandafter\def\csname simpleicon@audiotechnicaicon\endcsname {\simpleiconsmap\symbol{"EB0F}}
- \expandafter\def\csname simpleicon@aureliaicon\endcsname {\simpleiconsmap\symbol{"EB10}}
- \expandafter\def\csname simpleicon@auth0icon\endcsname {\simpleiconsmap\symbol{"EB11}}
- \expandafter\def\csname simpleicon@autheliaicon\endcsname {\simpleiconsmap\symbol{"EB12}}
- \expandafter\def\csname simpleicon@authentikicon\endcsname {\simpleiconsmap\symbol{"EB13}}
- \expandafter\def\csname simpleicon@authyicon\endcsname {\simpleiconsmap\symbol{"EB14}}
- \expandafter\def\csname simpleicon@autocadicon\endcsname {\simpleiconsmap\symbol{"EB15}}
- \expandafter\def\csname simpleicon@autodeskicon\endcsname {\simpleiconsmap\symbol{"EB16}}
- \expandafter\def\csname simpleicon@autodeskmayaicon\endcsname {\simpleiconsmap\symbol{"EB17}}
- \expandafter\def\csname simpleicon@autodeskreviticon\endcsname {\simpleiconsmap\symbol{"EB18}}
- \expandafter\def\csname simpleicon@autohotkeyicon\endcsname {\simpleiconsmap\symbol{"EB19}}
- \expandafter\def\csname simpleicon@autoiticon\endcsname {\simpleiconsmap\symbol{"EB1A}}
- \expandafter\def\csname simpleicon@automatticicon\endcsname {\simpleiconsmap\symbol{"EB1B}}
- \expandafter\def\csname simpleicon@autoprefixericon\endcsname {\simpleiconsmap\symbol{"EB1C}}
- \expandafter\def\csname simpleicon@autozoneicon\endcsname {\simpleiconsmap\symbol{"EB1D}}
- \expandafter\def\csname simpleicon@avajsicon\endcsname {\simpleiconsmap\symbol{"EB1E}}
- \expandafter\def\csname simpleicon@avasticon\endcsname {\simpleiconsmap\symbol{"EB1F}}
- \expandafter\def\csname simpleicon@aviancaicon\endcsname {\simpleiconsmap\symbol{"EB20}}
- \expandafter\def\csname simpleicon@aviraicon\endcsname {\simpleiconsmap\symbol{"EB21}}
- \expandafter\def\csname simpleicon@awesomelistsicon\endcsname {\simpleiconsmap\symbol{"EB22}}
- \expandafter\def\csname simpleicon@awesomewmicon\endcsname {\simpleiconsmap\symbol{"EB23}}
- \expandafter\def\csname simpleicon@awsamplifyicon\endcsname {\simpleiconsmap\symbol{"EB24}}
- \expandafter\def\csname simpleicon@awselasticloadbalancingicon\endcsname {\simpleiconsmap\symbol{"EB25}}
- \expandafter\def\csname simpleicon@awsfargateicon\endcsname {\simpleiconsmap\symbol{"EB26}}
- \expandafter\def\csname simpleicon@awslambdaicon\endcsname {\simpleiconsmap\symbol{"EB27}}
- \expandafter\def\csname simpleicon@awsorganizationsicon\endcsname {\simpleiconsmap\symbol{"EB28}}
- \expandafter\def\csname simpleicon@awssecretsmanagericon\endcsname {\simpleiconsmap\symbol{"EB29}}
- \expandafter\def\csname simpleicon@awwwardsicon\endcsname {\simpleiconsmap\symbol{"EB2A}}
- \expandafter\def\csname simpleicon@axiosicon\endcsname {\simpleiconsmap\symbol{"EB2B}}
- \expandafter\def\csname simpleicon@azureartifactsicon\endcsname {\simpleiconsmap\symbol{"EB2C}}
- \expandafter\def\csname simpleicon@azuredataexplorericon\endcsname {\simpleiconsmap\symbol{"EB2D}}
- \expandafter\def\csname simpleicon@azuredevopsicon\endcsname {\simpleiconsmap\symbol{"EB2E}}
- \expandafter\def\csname simpleicon@azurefunctionsicon\endcsname {\simpleiconsmap\symbol{"EB2F}}
- \expandafter\def\csname simpleicon@azurepipelinesicon\endcsname {\simpleiconsmap\symbol{"EB30}}
- \expandafter\def\csname simpleicon@babelicon\endcsname {\simpleiconsmap\symbol{"EB31}}
- \expandafter\def\csname simpleicon@babelioicon\endcsname {\simpleiconsmap\symbol{"EB32}}
- \expandafter\def\csname simpleicon@babylondotjsicon\endcsname {\simpleiconsmap\symbol{"EB33}}
- \expandafter\def\csname simpleicon@backblazeicon\endcsname {\simpleiconsmap\symbol{"EB34}}
- \expandafter\def\csname simpleicon@backbonedotjsicon\endcsname {\simpleiconsmap\symbol{"EB35}}
- \expandafter\def\csname simpleicon@backendlessicon\endcsname {\simpleiconsmap\symbol{"EB36}}
- \expandafter\def\csname simpleicon@backstageicon\endcsname {\simpleiconsmap\symbol{"EB37}}
- \expandafter\def\csname simpleicon@badooicon\endcsname {\simpleiconsmap\symbol{"EB38}}
- \expandafter\def\csname simpleicon@baiduicon\endcsname {\simpleiconsmap\symbol{"EB39}}
- \expandafter\def\csname simpleicon@bakalariicon\endcsname {\simpleiconsmap\symbol{"EB3A}}
- \expandafter\def\csname simpleicon@bambooicon\endcsname {\simpleiconsmap\symbol{"EB3B}}
- \expandafter\def\csname simpleicon@bambulabicon\endcsname {\simpleiconsmap\symbol{"EB3C}}
- \expandafter\def\csname simpleicon@bandcampicon\endcsname {\simpleiconsmap\symbol{"EB3D}}
- \expandafter\def\csname simpleicon@bandlabicon\endcsname {\simpleiconsmap\symbol{"EB3E}}
- \expandafter\def\csname simpleicon@bandrautomationicon\endcsname {\simpleiconsmap\symbol{"EB3F}}
- \expandafter\def\csname simpleicon@bandsintownicon\endcsname {\simpleiconsmap\symbol{"EB40}}
- \expandafter\def\csname simpleicon@bankofamericaicon\endcsname {\simpleiconsmap\symbol{"EB41}}
- \expandafter\def\csname simpleicon@barclaysicon\endcsname {\simpleiconsmap\symbol{"EB42}}
- \expandafter\def\csname simpleicon@baremetricsicon\endcsname {\simpleiconsmap\symbol{"EB43}}
- \expandafter\def\csname simpleicon@barmeniaicon\endcsname {\simpleiconsmap\symbol{"EB44}}
- \expandafter\def\csname simpleicon@basecampicon\endcsname {\simpleiconsmap\symbol{"EB45}}
- \expandafter\def\csname simpleicon@basicattentiontokenicon\endcsname {\simpleiconsmap\symbol{"EB46}}
- \expandafter\def\csname simpleicon@bastyonicon\endcsname {\simpleiconsmap\symbol{"EB47}}
- \expandafter\def\csname simpleicon@baticon\endcsname {\simpleiconsmap\symbol{"EB48}}
- \expandafter\def\csname simpleicon@bataicon\endcsname {\simpleiconsmap\symbol{"EB49}}
- \expandafter\def\csname simpleicon@battledotneticon\endcsname {\simpleiconsmap\symbol{"EB4A}}
- \expandafter\def\csname simpleicon@bazelicon\endcsname {\simpleiconsmap\symbol{"EB4B}}
- \expandafter\def\csname simpleicon@beatporticon\endcsname {\simpleiconsmap\symbol{"EB4C}}
- \expandafter\def\csname simpleicon@beatsicon\endcsname {\simpleiconsmap\symbol{"EB4D}}
- \expandafter\def\csname simpleicon@beatsbydreicon\endcsname {\simpleiconsmap\symbol{"EB4E}}
- \expandafter\def\csname simpleicon@beatstarsicon\endcsname {\simpleiconsmap\symbol{"EB4F}}
- \expandafter\def\csname simpleicon@behanceicon\endcsname {\simpleiconsmap\symbol{"EB50}}
- \expandafter\def\csname simpleicon@beijingsubwayicon\endcsname {\simpleiconsmap\symbol{"EB51}}
- \expandafter\def\csname simpleicon@bemicon\endcsname {\simpleiconsmap\symbol{"EB52}}
- \expandafter\def\csname simpleicon@bentleyicon\endcsname {\simpleiconsmap\symbol{"EB53}}
- \expandafter\def\csname simpleicon@bentoicon\endcsname {\simpleiconsmap\symbol{"EB54}}
- \expandafter\def\csname simpleicon@bentoboxicon\endcsname {\simpleiconsmap\symbol{"EB55}}
- \expandafter\def\csname simpleicon@bentomlicon\endcsname {\simpleiconsmap\symbol{"EB56}}
- \expandafter\def\csname simpleicon@berealicon\endcsname {\simpleiconsmap\symbol{"EB57}}
- \expandafter\def\csname simpleicon@betfairicon\endcsname {\simpleiconsmap\symbol{"EB58}}
- \expandafter\def\csname simpleicon@betterstackicon\endcsname {\simpleiconsmap\symbol{"EB59}}
- \expandafter\def\csname simpleicon@bevyicon\endcsname {\simpleiconsmap\symbol{"EB5A}}
- \expandafter\def\csname simpleicon@bigbasketicon\endcsname {\simpleiconsmap\symbol{"EB5B}}
- \expandafter\def\csname simpleicon@bigbluebuttonicon\endcsname {\simpleiconsmap\symbol{"EB5C}}
- \expandafter\def\csname simpleicon@bigcartelicon\endcsname {\simpleiconsmap\symbol{"EB5D}}
- \expandafter\def\csname simpleicon@bigcommerceicon\endcsname {\simpleiconsmap\symbol{"EB5E}}
- \expandafter\def\csname simpleicon@bilibiliicon\endcsname {\simpleiconsmap\symbol{"EB5F}}
- \expandafter\def\csname simpleicon@billboardicon\endcsname {\simpleiconsmap\symbol{"EB60}}
- \expandafter\def\csname simpleicon@bimicon\endcsname {\simpleiconsmap\symbol{"EB61}}
- \expandafter\def\csname simpleicon@binanceicon\endcsname {\simpleiconsmap\symbol{"EB62}}
- \expandafter\def\csname simpleicon@biolinkicon\endcsname {\simpleiconsmap\symbol{"EB63}}
- \expandafter\def\csname simpleicon@biomeicon\endcsname {\simpleiconsmap\symbol{"EB64}}
- \expandafter\def\csname simpleicon@bisecthostingicon\endcsname {\simpleiconsmap\symbol{"EB65}}
- \expandafter\def\csname simpleicon@biticon\endcsname {\simpleiconsmap\symbol{"EB66}}
- \expandafter\def\csname simpleicon@bitbucketicon\endcsname {\simpleiconsmap\symbol{"EB67}}
- \expandafter\def\csname simpleicon@bitcoinicon\endcsname {\simpleiconsmap\symbol{"EB68}}
- \expandafter\def\csname simpleicon@bitcoincashicon\endcsname {\simpleiconsmap\symbol{"EB69}}
- \expandafter\def\csname simpleicon@bitcoinsvicon\endcsname {\simpleiconsmap\symbol{"EB6A}}
- \expandafter\def\csname simpleicon@bitcometicon\endcsname {\simpleiconsmap\symbol{"EB6B}}
- \expandafter\def\csname simpleicon@bitdefendericon\endcsname {\simpleiconsmap\symbol{"EB6C}}
- \expandafter\def\csname simpleicon@bitlyicon\endcsname {\simpleiconsmap\symbol{"EB6D}}
- \expandafter\def\csname simpleicon@bitriseicon\endcsname {\simpleiconsmap\symbol{"EB6E}}
- \expandafter\def\csname simpleicon@bittorrenticon\endcsname {\simpleiconsmap\symbol{"EB6F}}
- \expandafter\def\csname simpleicon@bitwardenicon\endcsname {\simpleiconsmap\symbol{"EB70}}
- \expandafter\def\csname simpleicon@bitwigicon\endcsname {\simpleiconsmap\symbol{"EB71}}
- \expandafter\def\csname simpleicon@blackberryicon\endcsname {\simpleiconsmap\symbol{"EB72}}
- \expandafter\def\csname simpleicon@blackmagicdesignicon\endcsname {\simpleiconsmap\symbol{"EB73}}
- \expandafter\def\csname simpleicon@blazemetericon\endcsname {\simpleiconsmap\symbol{"EB74}}
- \expandafter\def\csname simpleicon@blazoricon\endcsname {\simpleiconsmap\symbol{"EB75}}
- \expandafter\def\csname simpleicon@blendericon\endcsname {\simpleiconsmap\symbol{"EB76}}
- \expandafter\def\csname simpleicon@blockbenchicon\endcsname {\simpleiconsmap\symbol{"EB77}}
- \expandafter\def\csname simpleicon@blockchaindotcomicon\endcsname {\simpleiconsmap\symbol{"EB78}}
- \expandafter\def\csname simpleicon@bloggericon\endcsname {\simpleiconsmap\symbol{"EB79}}
- \expandafter\def\csname simpleicon@bloglovinicon\endcsname {\simpleiconsmap\symbol{"EB7A}}
- \expandafter\def\csname simpleicon@blueprinticon\endcsname {\simpleiconsmap\symbol{"EB7B}}
- \expandafter\def\csname simpleicon@blueskyicon\endcsname {\simpleiconsmap\symbol{"EB7C}}
- \expandafter\def\csname simpleicon@bluesoundicon\endcsname {\simpleiconsmap\symbol{"EB7D}}
- \expandafter\def\csname simpleicon@bluetoothicon\endcsname {\simpleiconsmap\symbol{"EB7E}}
- \expandafter\def\csname simpleicon@bmcsoftwareicon\endcsname {\simpleiconsmap\symbol{"EB7F}}
- \expandafter\def\csname simpleicon@bmwicon\endcsname {\simpleiconsmap\symbol{"EB80}}
- \expandafter\def\csname simpleicon@bnbchainicon\endcsname {\simpleiconsmap\symbol{"EB81}}
- \expandafter\def\csname simpleicon@boardgamegeekicon\endcsname {\simpleiconsmap\symbol{"EB82}}
- \expandafter\def\csname simpleicon@boaticon\endcsname {\simpleiconsmap\symbol{"EB83}}
- \expandafter\def\csname simpleicon@boehringeringelheimicon\endcsname {\simpleiconsmap\symbol{"EB84}}
- \expandafter\def\csname simpleicon@boeingicon\endcsname {\simpleiconsmap\symbol{"EB85}}
- \expandafter\def\csname simpleicon@bombardiericon\endcsname {\simpleiconsmap\symbol{"EB86}}
- \expandafter\def\csname simpleicon@bookalopeicon\endcsname {\simpleiconsmap\symbol{"EB87}}
- \expandafter\def\csname simpleicon@bookbubicon\endcsname {\simpleiconsmap\symbol{"EB88}}
- \expandafter\def\csname simpleicon@bookmetericon\endcsname {\simpleiconsmap\symbol{"EB89}}
- \expandafter\def\csname simpleicon@bookmyshowicon\endcsname {\simpleiconsmap\symbol{"EB8A}}
- \expandafter\def\csname simpleicon@bookstackicon\endcsname {\simpleiconsmap\symbol{"EB8B}}
- \expandafter\def\csname simpleicon@boosticon\endcsname {\simpleiconsmap\symbol{"EB8C}}
- \expandafter\def\csname simpleicon@boostyicon\endcsname {\simpleiconsmap\symbol{"EB8D}}
- \expandafter\def\csname simpleicon@bootsicon\endcsname {\simpleiconsmap\symbol{"EB8E}}
- \expandafter\def\csname simpleicon@bootstrapicon\endcsname {\simpleiconsmap\symbol{"EB8F}}
- \expandafter\def\csname simpleicon@borgbackupicon\endcsname {\simpleiconsmap\symbol{"EB90}}
- \expandafter\def\csname simpleicon@boschicon\endcsname {\simpleiconsmap\symbol{"EB91}}
- \expandafter\def\csname simpleicon@boseicon\endcsname {\simpleiconsmap\symbol{"EB92}}
- \expandafter\def\csname simpleicon@botblecmsicon\endcsname {\simpleiconsmap\symbol{"EB93}}
- \expandafter\def\csname simpleicon@boulangericon\endcsname {\simpleiconsmap\symbol{"EB94}}
- \expandafter\def\csname simpleicon@bowericon\endcsname {\simpleiconsmap\symbol{"EB95}}
- \expandafter\def\csname simpleicon@boxicon\endcsname {\simpleiconsmap\symbol{"EB96}}
- \expandafter\def\csname simpleicon@boxysvgicon\endcsname {\simpleiconsmap\symbol{"EB97}}
- \expandafter\def\csname simpleicon@braintreeicon\endcsname {\simpleiconsmap\symbol{"EB98}}
- \expandafter\def\csname simpleicon@brandfoldericon\endcsname {\simpleiconsmap\symbol{"EB99}}
- \expandafter\def\csname simpleicon@braveicon\endcsname {\simpleiconsmap\symbol{"EB9A}}
- \expandafter\def\csname simpleicon@breakericon\endcsname {\simpleiconsmap\symbol{"EB9B}}
- \expandafter\def\csname simpleicon@brenntagicon\endcsname {\simpleiconsmap\symbol{"EB9C}}
- \expandafter\def\csname simpleicon@brevoicon\endcsname {\simpleiconsmap\symbol{"EB9D}}
- \expandafter\def\csname simpleicon@brexicon\endcsname {\simpleiconsmap\symbol{"EB9E}}
- \expandafter\def\csname simpleicon@bricksicon\endcsname {\simpleiconsmap\symbol{"EB9F}}
- \expandafter\def\csname simpleicon@britishairwaysicon\endcsname {\simpleiconsmap\symbol{"EBA0}}
- \expandafter\def\csname simpleicon@broadcomicon\endcsname {\simpleiconsmap\symbol{"EBA1}}
- \expandafter\def\csname simpleicon@brunoicon\endcsname {\simpleiconsmap\symbol{"EBA2}}
- \expandafter\def\csname simpleicon@bsdicon\endcsname {\simpleiconsmap\symbol{"EBA3}}
- \expandafter\def\csname simpleicon@bspwmicon\endcsname {\simpleiconsmap\symbol{"EBA4}}
- \expandafter\def\csname simpleicon@bticon\endcsname {\simpleiconsmap\symbol{"EBA5}}
- \expandafter\def\csname simpleicon@buddyicon\endcsname {\simpleiconsmap\symbol{"EBA6}}
- \expandafter\def\csname simpleicon@budibaseicon\endcsname {\simpleiconsmap\symbol{"EBA7}}
- \expandafter\def\csname simpleicon@buefyicon\endcsname {\simpleiconsmap\symbol{"EBA8}}
- \expandafter\def\csname simpleicon@buffericon\endcsname {\simpleiconsmap\symbol{"EBA9}}
- \expandafter\def\csname simpleicon@bugattiicon\endcsname {\simpleiconsmap\symbol{"EBAA}}
- \expandafter\def\csname simpleicon@bugcrowdicon\endcsname {\simpleiconsmap\symbol{"EBAB}}
- \expandafter\def\csname simpleicon@bugsnagicon\endcsname {\simpleiconsmap\symbol{"EBAC}}
- \expandafter\def\csname simpleicon@buhlicon\endcsname {\simpleiconsmap\symbol{"EBAD}}
- \expandafter\def\csname simpleicon@buildkiteicon\endcsname {\simpleiconsmap\symbol{"EBAE}}
- \expandafter\def\csname simpleicon@bukalapakicon\endcsname {\simpleiconsmap\symbol{"EBAF}}
- \expandafter\def\csname simpleicon@bulmaicon\endcsname {\simpleiconsmap\symbol{"EBB0}}
- \expandafter\def\csname simpleicon@bunicon\endcsname {\simpleiconsmap\symbol{"EBB1}}
- \expandafter\def\csname simpleicon@bungieicon\endcsname {\simpleiconsmap\symbol{"EBB2}}
- \expandafter\def\csname simpleicon@bunqicon\endcsname {\simpleiconsmap\symbol{"EBB3}}
- \expandafter\def\csname simpleicon@burgerkingicon\endcsname {\simpleiconsmap\symbol{"EBB4}}
- \expandafter\def\csname simpleicon@burpsuiteicon\endcsname {\simpleiconsmap\symbol{"EBB5}}
- \expandafter\def\csname simpleicon@burtonicon\endcsname {\simpleiconsmap\symbol{"EBB6}}
- \expandafter\def\csname simpleicon@buymeacoffeeicon\endcsname {\simpleiconsmap\symbol{"EBB7}}
- \expandafter\def\csname simpleicon@buyselladsicon\endcsname {\simpleiconsmap\symbol{"EBB8}}
- \expandafter\def\csname simpleicon@buzzfeedicon\endcsname {\simpleiconsmap\symbol{"EBB9}}
- \expandafter\def\csname simpleicon@bvgicon\endcsname {\simpleiconsmap\symbol{"EBBA}}
- \expandafter\def\csname simpleicon@byjusicon\endcsname {\simpleiconsmap\symbol{"EBBB}}
- \expandafter\def\csname simpleicon@bytedanceicon\endcsname {\simpleiconsmap\symbol{"EBBC}}
- \expandafter\def\csname simpleicon@cicon\endcsname {\simpleiconsmap\symbol{"EBBD}}
- \expandafter\def\csname simpleicon@cacheticon\endcsname {\simpleiconsmap\symbol{"EBBE}}
- \expandafter\def\csname simpleicon@caddyicon\endcsname {\simpleiconsmap\symbol{"EBBF}}
- \expandafter\def\csname simpleicon@cadillacicon\endcsname {\simpleiconsmap\symbol{"EBC0}}
- \expandafter\def\csname simpleicon@cafepressicon\endcsname {\simpleiconsmap\symbol{"EBC1}}
- \expandafter\def\csname simpleicon@caffeineicon\endcsname {\simpleiconsmap\symbol{"EBC2}}
- \expandafter\def\csname simpleicon@cairographicsicon\endcsname {\simpleiconsmap\symbol{"EBC3}}
- \expandafter\def\csname simpleicon@cairometroicon\endcsname {\simpleiconsmap\symbol{"EBC4}}
- \expandafter\def\csname simpleicon@cakephpicon\endcsname {\simpleiconsmap\symbol{"EBC5}}
- \expandafter\def\csname simpleicon@caldotcomicon\endcsname {\simpleiconsmap\symbol{"EBC6}}
- \expandafter\def\csname simpleicon@calendlyicon\endcsname {\simpleiconsmap\symbol{"EBC7}}
- \expandafter\def\csname simpleicon@calibrewebicon\endcsname {\simpleiconsmap\symbol{"EBC8}}
- \expandafter\def\csname simpleicon@campaignmonitoricon\endcsname {\simpleiconsmap\symbol{"EBC9}}
- \expandafter\def\csname simpleicon@camundaicon\endcsname {\simpleiconsmap\symbol{"EBCA}}
- \expandafter\def\csname simpleicon@canonicalicon\endcsname {\simpleiconsmap\symbol{"EBCB}}
- \expandafter\def\csname simpleicon@canvaicon\endcsname {\simpleiconsmap\symbol{"EBCC}}
- \expandafter\def\csname simpleicon@canvasicon\endcsname {\simpleiconsmap\symbol{"EBCD}}
- \expandafter\def\csname simpleicon@capacitoricon\endcsname {\simpleiconsmap\symbol{"EBCE}}
- \expandafter\def\csname simpleicon@cardanoicon\endcsname {\simpleiconsmap\symbol{"EBCF}}
- \expandafter\def\csname simpleicon@carlsberggroupicon\endcsname {\simpleiconsmap\symbol{"EBD0}}
- \expandafter\def\csname simpleicon@carrdicon\endcsname {\simpleiconsmap\symbol{"EBD1}}
- \expandafter\def\csname simpleicon@carrefouricon\endcsname {\simpleiconsmap\symbol{"EBD2}}
- \expandafter\def\csname simpleicon@carthrottleicon\endcsname {\simpleiconsmap\symbol{"EBD3}}
- \expandafter\def\csname simpleicon@cartoicon\endcsname {\simpleiconsmap\symbol{"EBD4}}
- \expandafter\def\csname simpleicon@cashappicon\endcsname {\simpleiconsmap\symbol{"EBD5}}
- \expandafter\def\csname simpleicon@castboxicon\endcsname {\simpleiconsmap\symbol{"EBD6}}
- \expandafter\def\csname simpleicon@castoramaicon\endcsname {\simpleiconsmap\symbol{"EBD7}}
- \expandafter\def\csname simpleicon@castroicon\endcsname {\simpleiconsmap\symbol{"EBD8}}
- \expandafter\def\csname simpleicon@caterpillaricon\endcsname {\simpleiconsmap\symbol{"EBD9}}
- \expandafter\def\csname simpleicon@cbcicon\endcsname {\simpleiconsmap\symbol{"EBDA}}
- \expandafter\def\csname simpleicon@cbsicon\endcsname {\simpleiconsmap\symbol{"EBDB}}
- \expandafter\def\csname simpleicon@ccleanericon\endcsname {\simpleiconsmap\symbol{"EBDC}}
- \expandafter\def\csname simpleicon@cdprojekticon\endcsname {\simpleiconsmap\symbol{"EBDD}}
- \expandafter\def\csname simpleicon@celeryicon\endcsname {\simpleiconsmap\symbol{"EBDE}}
- \expandafter\def\csname simpleicon@celestronicon\endcsname {\simpleiconsmap\symbol{"EBDF}}
- \expandafter\def\csname simpleicon@centosicon\endcsname {\simpleiconsmap\symbol{"EBE0}}
- \expandafter\def\csname simpleicon@cephicon\endcsname {\simpleiconsmap\symbol{"EBE1}}
- \expandafter\def\csname simpleicon@cesiumicon\endcsname {\simpleiconsmap\symbol{"EBE2}}
- \expandafter\def\csname simpleicon@chaiicon\endcsname {\simpleiconsmap\symbol{"EBE3}}
- \expandafter\def\csname simpleicon@chainguardicon\endcsname {\simpleiconsmap\symbol{"EBE4}}
- \expandafter\def\csname simpleicon@chainlinkicon\endcsname {\simpleiconsmap\symbol{"EBE5}}
- \expandafter\def\csname simpleicon@chakrauiicon\endcsname {\simpleiconsmap\symbol{"EBE6}}
- \expandafter\def\csname simpleicon@channel4icon\endcsname {\simpleiconsmap\symbol{"EBE7}}
- \expandafter\def\csname simpleicon@charlesicon\endcsname {\simpleiconsmap\symbol{"EBE8}}
- \expandafter\def\csname simpleicon@chartdotjsicon\endcsname {\simpleiconsmap\symbol{"EBE9}}
- \expandafter\def\csname simpleicon@chartmogulicon\endcsname {\simpleiconsmap\symbol{"EBEA}}
- \expandafter\def\csname simpleicon@chaseicon\endcsname {\simpleiconsmap\symbol{"EBEB}}
- \expandafter\def\csname simpleicon@chatboticon\endcsname {\simpleiconsmap\symbol{"EBEC}}
- \expandafter\def\csname simpleicon@chatwooticon\endcsname {\simpleiconsmap\symbol{"EBED}}
- \expandafter\def\csname simpleicon@checkioicon\endcsname {\simpleiconsmap\symbol{"EBEE}}
- \expandafter\def\csname simpleicon@checkmarxicon\endcsname {\simpleiconsmap\symbol{"EBEF}}
- \expandafter\def\csname simpleicon@checkmkicon\endcsname {\simpleiconsmap\symbol{"EBF0}}
- \expandafter\def\csname simpleicon@chedrauiicon\endcsname {\simpleiconsmap\symbol{"EBF1}}
- \expandafter\def\csname simpleicon@cheerioicon\endcsname {\simpleiconsmap\symbol{"EBF2}}
- \expandafter\def\csname simpleicon@cheficon\endcsname {\simpleiconsmap\symbol{"EBF3}}
- \expandafter\def\csname simpleicon@chemexicon\endcsname {\simpleiconsmap\symbol{"EBF4}}
- \expandafter\def\csname simpleicon@chessdotcomicon\endcsname {\simpleiconsmap\symbol{"EBF5}}
- \expandafter\def\csname simpleicon@chevroleticon\endcsname {\simpleiconsmap\symbol{"EBF6}}
- \expandafter\def\csname simpleicon@chianetworkicon\endcsname {\simpleiconsmap\symbol{"EBF7}}
- \expandafter\def\csname simpleicon@chinaeasternairlinesicon\endcsname {\simpleiconsmap\symbol{"EBF8}}
- \expandafter\def\csname simpleicon@chinasouthernairlinesicon\endcsname {\simpleiconsmap\symbol{"EBF9}}
- \expandafter\def\csname simpleicon@chocolateyicon\endcsname {\simpleiconsmap\symbol{"EBFA}}
- \expandafter\def\csname simpleicon@chromaticicon\endcsname {\simpleiconsmap\symbol{"EBFB}}
- \expandafter\def\csname simpleicon@chromecasticon\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@csharpicon\endcsname {\simpleiconsmap\symbol{"EC91}}
- \expandafter\def\csname simpleicon@css3icon\endcsname {\simpleiconsmap\symbol{"EC92}}
- \expandafter\def\csname simpleicon@cssdesignawardsicon\endcsname {\simpleiconsmap\symbol{"EC93}}
- \expandafter\def\csname simpleicon@cssmodulesicon\endcsname {\simpleiconsmap\symbol{"EC94}}
- \expandafter\def\csname simpleicon@csswizardryicon\endcsname {\simpleiconsmap\symbol{"EC95}}
- \expandafter\def\csname simpleicon@ctsicon\endcsname {\simpleiconsmap\symbol{"EC96}}
- \expandafter\def\csname simpleicon@cucumbericon\endcsname {\simpleiconsmap\symbol{"EC97}}
- \expandafter\def\csname simpleicon@culturaicon\endcsname {\simpleiconsmap\symbol{"EC98}}
- \expandafter\def\csname simpleicon@curlicon\endcsname {\simpleiconsmap\symbol{"EC99}}
- \expandafter\def\csname simpleicon@curseforgeicon\endcsname {\simpleiconsmap\symbol{"EC9A}}
- \expandafter\def\csname simpleicon@custominkicon\endcsname {\simpleiconsmap\symbol{"EC9B}}
- \expandafter\def\csname simpleicon@cyberdefendersicon\endcsname {\simpleiconsmap\symbol{"EC9C}}
- \expandafter\def\csname simpleicon@cycling74icon\endcsname {\simpleiconsmap\symbol{"EC9D}}
- \expandafter\def\csname simpleicon@cypressicon\endcsname {\simpleiconsmap\symbol{"EC9E}}
- \expandafter\def\csname simpleicon@cytoscapedotjsicon\endcsname {\simpleiconsmap\symbol{"EC9F}}
- \expandafter\def\csname simpleicon@dicon\endcsname {\simpleiconsmap\symbol{"ECA0}}
- \expandafter\def\csname simpleicon@d3dotjsicon\endcsname {\simpleiconsmap\symbol{"ECA1}}
- \expandafter\def\csname simpleicon@daciaicon\endcsname {\simpleiconsmap\symbol{"ECA2}}
- \expandafter\def\csname simpleicon@daficon\endcsname {\simpleiconsmap\symbol{"ECA3}}
- \expandafter\def\csname simpleicon@dailydotdevicon\endcsname {\simpleiconsmap\symbol{"ECA4}}
- \expandafter\def\csname simpleicon@dailymotionicon\endcsname {\simpleiconsmap\symbol{"ECA5}}
- \expandafter\def\csname simpleicon@daimlericon\endcsname {\simpleiconsmap\symbol{"ECA6}}
- \expandafter\def\csname simpleicon@daisyuiicon\endcsname {\simpleiconsmap\symbol{"ECA7}}
- \expandafter\def\csname simpleicon@dapricon\endcsname {\simpleiconsmap\symbol{"ECA8}}
- \expandafter\def\csname simpleicon@darkreadericon\endcsname {\simpleiconsmap\symbol{"ECA9}}
- \expandafter\def\csname simpleicon@darticon\endcsname {\simpleiconsmap\symbol{"ECAA}}
- \expandafter\def\csname simpleicon@dartyicon\endcsname {\simpleiconsmap\symbol{"ECAB}}
- \expandafter\def\csname simpleicon@dasersteicon\endcsname {\simpleiconsmap\symbol{"ECAC}}
- \expandafter\def\csname simpleicon@dashicon\endcsname {\simpleiconsmap\symbol{"ECAD}}
- \expandafter\def\csname simpleicon@dashlaneicon\endcsname {\simpleiconsmap\symbol{"ECAE}}
- \expandafter\def\csname simpleicon@daskicon\endcsname {\simpleiconsmap\symbol{"ECAF}}
- \expandafter\def\csname simpleicon@dassaultsystemesicon\endcsname {\simpleiconsmap\symbol{"ECB0}}
- \expandafter\def\csname simpleicon@databricksicon\endcsname {\simpleiconsmap\symbol{"ECB1}}
- \expandafter\def\csname simpleicon@datacampicon\endcsname {\simpleiconsmap\symbol{"ECB2}}
- \expandafter\def\csname simpleicon@datadogicon\endcsname {\simpleiconsmap\symbol{"ECB3}}
- \expandafter\def\csname simpleicon@datadotaiicon\endcsname {\simpleiconsmap\symbol{"ECB4}}
- \expandafter\def\csname simpleicon@datagripicon\endcsname {\simpleiconsmap\symbol{"ECB5}}
- \expandafter\def\csname simpleicon@dataikuicon\endcsname {\simpleiconsmap\symbol{"ECB6}}
- \expandafter\def\csname simpleicon@datastaxicon\endcsname {\simpleiconsmap\symbol{"ECB7}}
- \expandafter\def\csname simpleicon@dataverseicon\endcsname {\simpleiconsmap\symbol{"ECB8}}
- \expandafter\def\csname simpleicon@datefnsicon\endcsname {\simpleiconsmap\symbol{"ECB9}}
- \expandafter\def\csname simpleicon@datevicon\endcsname {\simpleiconsmap\symbol{"ECBA}}
- \expandafter\def\csname simpleicon@datocmsicon\endcsname {\simpleiconsmap\symbol{"ECBB}}
- \expandafter\def\csname simpleicon@dattoicon\endcsname {\simpleiconsmap\symbol{"ECBC}}
- \expandafter\def\csname simpleicon@davinciresolveicon\endcsname {\simpleiconsmap\symbol{"ECBD}}
- \expandafter\def\csname simpleicon@dazhongdianpingicon\endcsname {\simpleiconsmap\symbol{"ECBE}}
- \expandafter\def\csname simpleicon@daznicon\endcsname {\simpleiconsmap\symbol{"ECBF}}
- \expandafter\def\csname simpleicon@dbeavericon\endcsname {\simpleiconsmap\symbol{"ECC0}}
- \expandafter\def\csname simpleicon@dblpicon\endcsname {\simpleiconsmap\symbol{"ECC1}}
- \expandafter\def\csname simpleicon@dbticon\endcsname {\simpleiconsmap\symbol{"ECC2}}
- \expandafter\def\csname simpleicon@dcentertainmenticon\endcsname {\simpleiconsmap\symbol{"ECC3}}
- \expandafter\def\csname simpleicon@debianicon\endcsname {\simpleiconsmap\symbol{"ECC4}}
- \expandafter\def\csname simpleicon@decapcmsicon\endcsname {\simpleiconsmap\symbol{"ECC5}}
- \expandafter\def\csname simpleicon@decentralandicon\endcsname {\simpleiconsmap\symbol{"ECC6}}
- \expandafter\def\csname simpleicon@dedgeicon\endcsname {\simpleiconsmap\symbol{"ECC7}}
- \expandafter\def\csname simpleicon@deepcoolicon\endcsname {\simpleiconsmap\symbol{"ECC8}}
- \expandafter\def\csname simpleicon@deepgramicon\endcsname {\simpleiconsmap\symbol{"ECC9}}
- \expandafter\def\csname simpleicon@deepinicon\endcsname {\simpleiconsmap\symbol{"ECCA}}
- \expandafter\def\csname simpleicon@deeplicon\endcsname {\simpleiconsmap\symbol{"ECCB}}
- \expandafter\def\csname simpleicon@deepnoteicon\endcsname {\simpleiconsmap\symbol{"ECCC}}
- \expandafter\def\csname simpleicon@deliciousicon\endcsname {\simpleiconsmap\symbol{"ECCD}}
- \expandafter\def\csname simpleicon@deliverooicon\endcsname {\simpleiconsmap\symbol{"ECCE}}
- \expandafter\def\csname simpleicon@dellicon\endcsname {\simpleiconsmap\symbol{"ECCF}}
- \expandafter\def\csname simpleicon@delonghiicon\endcsname {\simpleiconsmap\symbol{"ECD0}}
- \expandafter\def\csname simpleicon@delphiicon\endcsname {\simpleiconsmap\symbol{"ECD1}}
- \expandafter\def\csname simpleicon@deltaicon\endcsname {\simpleiconsmap\symbol{"ECD2}}
- \expandafter\def\csname simpleicon@delugeicon\endcsname {\simpleiconsmap\symbol{"ECD3}}
- \expandafter\def\csname simpleicon@denoicon\endcsname {\simpleiconsmap\symbol{"ECD4}}
- \expandafter\def\csname simpleicon@denonicon\endcsname {\simpleiconsmap\symbol{"ECD5}}
- \expandafter\def\csname simpleicon@dependaboticon\endcsname {\simpleiconsmap\symbol{"ECD6}}
- \expandafter\def\csname simpleicon@dependencycheckicon\endcsname {\simpleiconsmap\symbol{"ECD7}}
- \expandafter\def\csname simpleicon@depositphotosicon\endcsname {\simpleiconsmap\symbol{"ECD8}}
- \expandafter\def\csname simpleicon@derspiegelicon\endcsname {\simpleiconsmap\symbol{"ECD9}}
- \expandafter\def\csname simpleicon@designernewsicon\endcsname {\simpleiconsmap\symbol{"ECDA}}
- \expandafter\def\csname simpleicon@deutschebahnicon\endcsname {\simpleiconsmap\symbol{"ECDB}}
- \expandafter\def\csname simpleicon@deutschebankicon\endcsname {\simpleiconsmap\symbol{"ECDC}}
- \expandafter\def\csname simpleicon@deutscheposticon\endcsname {\simpleiconsmap\symbol{"ECDD}}
- \expandafter\def\csname simpleicon@devdottoicon\endcsname {\simpleiconsmap\symbol{"ECDE}}
- \expandafter\def\csname simpleicon@devexpressicon\endcsname {\simpleiconsmap\symbol{"ECDF}}
- \expandafter\def\csname simpleicon@deviantarticon\endcsname {\simpleiconsmap\symbol{"ECE0}}
- \expandafter\def\csname simpleicon@devposticon\endcsname {\simpleiconsmap\symbol{"ECE1}}
- \expandafter\def\csname simpleicon@devranticon\endcsname {\simpleiconsmap\symbol{"ECE2}}
- \expandafter\def\csname simpleicon@dgraphicon\endcsname {\simpleiconsmap\symbol{"ECE3}}
- \expandafter\def\csname simpleicon@dhlicon\endcsname {\simpleiconsmap\symbol{"ECE4}}
- \expandafter\def\csname simpleicon@diagramsdotneticon\endcsname {\simpleiconsmap\symbol{"ECE5}}
- \expandafter\def\csname simpleicon@dialogflowicon\endcsname {\simpleiconsmap\symbol{"ECE6}}
- \expandafter\def\csname simpleicon@diasporaicon\endcsname {\simpleiconsmap\symbol{"ECE7}}
- \expandafter\def\csname simpleicon@dictionarydotcomicon\endcsname {\simpleiconsmap\symbol{"ECE8}}
- \expandafter\def\csname simpleicon@diggicon\endcsname {\simpleiconsmap\symbol{"ECE9}}
- \expandafter\def\csname simpleicon@digikeyelectronicsicon\endcsname {\simpleiconsmap\symbol{"ECEA}}
- \expandafter\def\csname simpleicon@digitaloceanicon\endcsname {\simpleiconsmap\symbol{"ECEB}}
- \expandafter\def\csname simpleicon@dinersclubicon\endcsname {\simpleiconsmap\symbol{"ECEC}}
- \expandafter\def\csname simpleicon@dioricon\endcsname {\simpleiconsmap\symbol{"ECED}}
- \expandafter\def\csname simpleicon@directusicon\endcsname {\simpleiconsmap\symbol{"ECEE}}
- \expandafter\def\csname simpleicon@discogsicon\endcsname {\simpleiconsmap\symbol{"ECEF}}
- \expandafter\def\csname simpleicon@discordicon\endcsname {\simpleiconsmap\symbol{"ECF0}}
- \expandafter\def\csname simpleicon@discourseicon\endcsname {\simpleiconsmap\symbol{"ECF1}}
- \expandafter\def\csname simpleicon@discovericon\endcsname {\simpleiconsmap\symbol{"ECF2}}
- \expandafter\def\csname simpleicon@disqusicon\endcsname {\simpleiconsmap\symbol{"ECF3}}
- \expandafter\def\csname simpleicon@disrooticon\endcsname {\simpleiconsmap\symbol{"ECF4}}
- \expandafter\def\csname simpleicon@distrokidicon\endcsname {\simpleiconsmap\symbol{"ECF5}}
- \expandafter\def\csname simpleicon@djangoicon\endcsname {\simpleiconsmap\symbol{"ECF6}}
- \expandafter\def\csname simpleicon@djiicon\endcsname {\simpleiconsmap\symbol{"ECF7}}
- \expandafter\def\csname simpleicon@dlibicon\endcsname {\simpleiconsmap\symbol{"ECF8}}
- \expandafter\def\csname simpleicon@dlnaicon\endcsname {\simpleiconsmap\symbol{"ECF9}}
- \expandafter\def\csname simpleicon@dmicon\endcsname {\simpleiconsmap\symbol{"ECFA}}
- \expandafter\def\csname simpleicon@dockericon\endcsname {\simpleiconsmap\symbol{"ECFB}}
- \expandafter\def\csname simpleicon@docsdotrsicon\endcsname {\simpleiconsmap\symbol{"ECFC}}
- \expandafter\def\csname simpleicon@docsifyicon\endcsname {\simpleiconsmap\symbol{"ECFD}}
- \expandafter\def\csname simpleicon@doctrineicon\endcsname {\simpleiconsmap\symbol{"ECFE}}
- \expandafter\def\csname simpleicon@docusaurusicon\endcsname {\simpleiconsmap\symbol{"ECFF}}
- \expandafter\def\csname simpleicon@docusignicon\endcsname {\simpleiconsmap\symbol{"ED00}}
- \expandafter\def\csname simpleicon@dogecoinicon\endcsname {\simpleiconsmap\symbol{"ED01}}
- \expandafter\def\csname simpleicon@doiicon\endcsname {\simpleiconsmap\symbol{"ED02}}
- \expandafter\def\csname simpleicon@dolbyicon\endcsname {\simpleiconsmap\symbol{"ED03}}
- \expandafter\def\csname simpleicon@doordashicon\endcsname {\simpleiconsmap\symbol{"ED04}}
- \expandafter\def\csname simpleicon@dota2icon\endcsname {\simpleiconsmap\symbol{"ED05}}
- \expandafter\def\csname simpleicon@dotenvicon\endcsname {\simpleiconsmap\symbol{"ED06}}
- \expandafter\def\csname simpleicon@dotneticon\endcsname {\simpleiconsmap\symbol{"ED07}}
- \expandafter\def\csname simpleicon@doubanicon\endcsname {\simpleiconsmap\symbol{"ED08}}
- \expandafter\def\csname simpleicon@doubanreadicon\endcsname {\simpleiconsmap\symbol{"ED09}}
- \expandafter\def\csname simpleicon@dovecoticon\endcsname {\simpleiconsmap\symbol{"ED0A}}
- \expandafter\def\csname simpleicon@dovetailicon\endcsname {\simpleiconsmap\symbol{"ED0B}}
- \expandafter\def\csname simpleicon@doxygenicon\endcsname {\simpleiconsmap\symbol{"ED0C}}
- \expandafter\def\csname simpleicon@dpdicon\endcsname {\simpleiconsmap\symbol{"ED0D}}
- \expandafter\def\csname simpleicon@dragonframeicon\endcsname {\simpleiconsmap\symbol{"ED0E}}
- \expandafter\def\csname simpleicon@draugiemdotlvicon\endcsname {\simpleiconsmap\symbol{"ED0F}}
- \expandafter\def\csname simpleicon@dreamstimeicon\endcsname {\simpleiconsmap\symbol{"ED10}}
- \expandafter\def\csname simpleicon@dribbbleicon\endcsname {\simpleiconsmap\symbol{"ED11}}
- \expandafter\def\csname simpleicon@drizzleicon\endcsname {\simpleiconsmap\symbol{"ED12}}
- \expandafter\def\csname simpleicon@droneicon\endcsname {\simpleiconsmap\symbol{"ED13}}
- \expandafter\def\csname simpleicon@droobleicon\endcsname {\simpleiconsmap\symbol{"ED14}}
- \expandafter\def\csname simpleicon@dropboxicon\endcsname {\simpleiconsmap\symbol{"ED15}}
- \expandafter\def\csname simpleicon@drupalicon\endcsname {\simpleiconsmap\symbol{"ED16}}
- \expandafter\def\csname simpleicon@dsautomobilesicon\endcsname {\simpleiconsmap\symbol{"ED17}}
- \expandafter\def\csname simpleicon@dtsicon\endcsname {\simpleiconsmap\symbol{"ED18}}
- \expandafter\def\csname simpleicon@dtubeicon\endcsname {\simpleiconsmap\symbol{"ED19}}
- \expandafter\def\csname simpleicon@ducatiicon\endcsname {\simpleiconsmap\symbol{"ED1A}}
- \expandafter\def\csname simpleicon@duckdbicon\endcsname {\simpleiconsmap\symbol{"ED1B}}
- \expandafter\def\csname simpleicon@duckduckgoicon\endcsname {\simpleiconsmap\symbol{"ED1C}}
- \expandafter\def\csname simpleicon@dungeonsanddragonsicon\endcsname {\simpleiconsmap\symbol{"ED1D}}
- \expandafter\def\csname simpleicon@dunkedicon\endcsname {\simpleiconsmap\symbol{"ED1E}}
- \expandafter\def\csname simpleicon@dunzoicon\endcsname {\simpleiconsmap\symbol{"ED1F}}
- \expandafter\def\csname simpleicon@duolingoicon\endcsname {\simpleiconsmap\symbol{"ED20}}
- \expandafter\def\csname simpleicon@duplicatiicon\endcsname {\simpleiconsmap\symbol{"ED21}}
- \expandafter\def\csname simpleicon@dvcicon\endcsname {\simpleiconsmap\symbol{"ED22}}
- \expandafter\def\csname simpleicon@dwavesystemsicon\endcsname {\simpleiconsmap\symbol{"ED23}}
- \expandafter\def\csname simpleicon@dwmicon\endcsname {\simpleiconsmap\symbol{"ED24}}
- \expandafter\def\csname simpleicon@dynamics365icon\endcsname {\simpleiconsmap\symbol{"ED25}}
- \expandafter\def\csname simpleicon@dynatraceicon\endcsname {\simpleiconsmap\symbol{"ED26}}
- \expandafter\def\csname simpleicon@eicon\endcsname {\simpleiconsmap\symbol{"ED27}}
- \expandafter\def\csname simpleicon@e3icon\endcsname {\simpleiconsmap\symbol{"ED28}}
- \expandafter\def\csname simpleicon@eaicon\endcsname {\simpleiconsmap\symbol{"ED29}}
- \expandafter\def\csname simpleicon@eagleicon\endcsname {\simpleiconsmap\symbol{"ED2A}}
- \expandafter\def\csname simpleicon@easyedaicon\endcsname {\simpleiconsmap\symbol{"ED2B}}
- \expandafter\def\csname simpleicon@easyjeticon\endcsname {\simpleiconsmap\symbol{"ED2C}}
- \expandafter\def\csname simpleicon@ebayicon\endcsname {\simpleiconsmap\symbol{"ED2D}}
- \expandafter\def\csname simpleicon@eboxicon\endcsname {\simpleiconsmap\symbol{"ED2E}}
- \expandafter\def\csname simpleicon@eclipseadoptiumicon\endcsname {\simpleiconsmap\symbol{"ED2F}}
- \expandafter\def\csname simpleicon@eclipsecheicon\endcsname {\simpleiconsmap\symbol{"ED30}}
- \expandafter\def\csname simpleicon@eclipseideicon\endcsname {\simpleiconsmap\symbol{"ED31}}
- \expandafter\def\csname simpleicon@eclipsejettyicon\endcsname {\simpleiconsmap\symbol{"ED32}}
- \expandafter\def\csname simpleicon@eclipsemosquittoicon\endcsname {\simpleiconsmap\symbol{"ED33}}
- \expandafter\def\csname simpleicon@eclipsevertdotxicon\endcsname {\simpleiconsmap\symbol{"ED34}}
- \expandafter\def\csname simpleicon@ecovacsicon\endcsname {\simpleiconsmap\symbol{"ED35}}
- \expandafter\def\csname simpleicon@edekaicon\endcsname {\simpleiconsmap\symbol{"ED36}}
- \expandafter\def\csname simpleicon@edgeimpulseicon\endcsname {\simpleiconsmap\symbol{"ED37}}
- \expandafter\def\csname simpleicon@editorconfigicon\endcsname {\simpleiconsmap\symbol{"ED38}}
- \expandafter\def\csname simpleicon@edotleclercicon\endcsname {\simpleiconsmap\symbol{"ED39}}
- \expandafter\def\csname simpleicon@educativeicon\endcsname {\simpleiconsmap\symbol{"ED3A}}
- \expandafter\def\csname simpleicon@edxicon\endcsname {\simpleiconsmap\symbol{"ED3B}}
- \expandafter\def\csname simpleicon@eggheadicon\endcsname {\simpleiconsmap\symbol{"ED3C}}
- \expandafter\def\csname simpleicon@egnyteicon\endcsname {\simpleiconsmap\symbol{"ED3D}}
- \expandafter\def\csname simpleicon@eighticon\endcsname {\simpleiconsmap\symbol{"ED3E}}
- \expandafter\def\csname simpleicon@eightsleepicon\endcsname {\simpleiconsmap\symbol{"ED3F}}
- \expandafter\def\csname simpleicon@ejsicon\endcsname {\simpleiconsmap\symbol{"ED40}}
- \expandafter\def\csname simpleicon@elasticicon\endcsname {\simpleiconsmap\symbol{"ED41}}
- \expandafter\def\csname simpleicon@elasticcloudicon\endcsname {\simpleiconsmap\symbol{"ED42}}
- \expandafter\def\csname simpleicon@elasticsearchicon\endcsname {\simpleiconsmap\symbol{"ED43}}
- \expandafter\def\csname simpleicon@elasticstackicon\endcsname {\simpleiconsmap\symbol{"ED44}}
- \expandafter\def\csname simpleicon@elavonicon\endcsname {\simpleiconsmap\symbol{"ED45}}
- \expandafter\def\csname simpleicon@electronicon\endcsname {\simpleiconsmap\symbol{"ED46}}
- \expandafter\def\csname simpleicon@electronbuildericon\endcsname {\simpleiconsmap\symbol{"ED47}}
- \expandafter\def\csname simpleicon@electronfiddleicon\endcsname {\simpleiconsmap\symbol{"ED48}}
- \expandafter\def\csname simpleicon@elegooicon\endcsname {\simpleiconsmap\symbol{"ED49}}
- \expandafter\def\csname simpleicon@elementicon\endcsname {\simpleiconsmap\symbol{"ED4A}}
- \expandafter\def\csname simpleicon@elementaryicon\endcsname {\simpleiconsmap\symbol{"ED4B}}
- \expandafter\def\csname simpleicon@elementoricon\endcsname {\simpleiconsmap\symbol{"ED4C}}
- \expandafter\def\csname simpleicon@eleventyicon\endcsname {\simpleiconsmap\symbol{"ED4D}}
- \expandafter\def\csname simpleicon@elgatoicon\endcsname {\simpleiconsmap\symbol{"ED4E}}
- \expandafter\def\csname simpleicon@elixiricon\endcsname {\simpleiconsmap\symbol{"ED4F}}
- \expandafter\def\csname simpleicon@eljuevesicon\endcsname {\simpleiconsmap\symbol{"ED50}}
- \expandafter\def\csname simpleicon@elloicon\endcsname {\simpleiconsmap\symbol{"ED51}}
- \expandafter\def\csname simpleicon@elmicon\endcsname {\simpleiconsmap\symbol{"ED52}}
- \expandafter\def\csname simpleicon@elseviericon\endcsname {\simpleiconsmap\symbol{"ED53}}
- \expandafter\def\csname simpleicon@embarcaderoicon\endcsname {\simpleiconsmap\symbol{"ED54}}
- \expandafter\def\csname simpleicon@embarkicon\endcsname {\simpleiconsmap\symbol{"ED55}}
- \expandafter\def\csname simpleicon@emberdotjsicon\endcsname {\simpleiconsmap\symbol{"ED56}}
- \expandafter\def\csname simpleicon@embyicon\endcsname {\simpleiconsmap\symbol{"ED57}}
- \expandafter\def\csname simpleicon@emiratesicon\endcsname {\simpleiconsmap\symbol{"ED58}}
- \expandafter\def\csname simpleicon@emlakjeticon\endcsname {\simpleiconsmap\symbol{"ED59}}
- \expandafter\def\csname simpleicon@empirekredicon\endcsname {\simpleiconsmap\symbol{"ED5A}}
- \expandafter\def\csname simpleicon@endeavourosicon\endcsname {\simpleiconsmap\symbol{"ED5B}}
- \expandafter\def\csname simpleicon@engadgeticon\endcsname {\simpleiconsmap\symbol{"ED5C}}
- \expandafter\def\csname simpleicon@enpassicon\endcsname {\simpleiconsmap\symbol{"ED5D}}
- \expandafter\def\csname simpleicon@enterprisedbicon\endcsname {\simpleiconsmap\symbol{"ED5E}}
- \expandafter\def\csname simpleicon@envatoicon\endcsname {\simpleiconsmap\symbol{"ED5F}}
- \expandafter\def\csname simpleicon@envoyproxyicon\endcsname {\simpleiconsmap\symbol{"ED60}}
- \expandafter\def\csname simpleicon@epelicon\endcsname {\simpleiconsmap\symbol{"ED61}}
- \expandafter\def\csname simpleicon@epicgamesicon\endcsname {\simpleiconsmap\symbol{"ED62}}
- \expandafter\def\csname simpleicon@epsonicon\endcsname {\simpleiconsmap\symbol{"ED63}}
- \expandafter\def\csname simpleicon@equinixmetalicon\endcsname {\simpleiconsmap\symbol{"ED64}}
- \expandafter\def\csname simpleicon@erasericon\endcsname {\simpleiconsmap\symbol{"ED65}}
- \expandafter\def\csname simpleicon@ericssonicon\endcsname {\simpleiconsmap\symbol{"ED66}}
- \expandafter\def\csname simpleicon@erlangicon\endcsname {\simpleiconsmap\symbol{"ED67}}
- \expandafter\def\csname simpleicon@erpnexticon\endcsname {\simpleiconsmap\symbol{"ED68}}
- \expandafter\def\csname simpleicon@esbuildicon\endcsname {\simpleiconsmap\symbol{"ED69}}
- \expandafter\def\csname simpleicon@eseaicon\endcsname {\simpleiconsmap\symbol{"ED6A}}
- \expandafter\def\csname simpleicon@eslgamingicon\endcsname {\simpleiconsmap\symbol{"ED6B}}
- \expandafter\def\csname simpleicon@eslinticon\endcsname {\simpleiconsmap\symbol{"ED6C}}
- \expandafter\def\csname simpleicon@esotericsoftwareicon\endcsname {\simpleiconsmap\symbol{"ED6D}}
- \expandafter\def\csname simpleicon@esphomeicon\endcsname {\simpleiconsmap\symbol{"ED6E}}
- \expandafter\def\csname simpleicon@espressificon\endcsname {\simpleiconsmap\symbol{"ED6F}}
- \expandafter\def\csname simpleicon@esriicon\endcsname {\simpleiconsmap\symbol{"ED70}}
- \expandafter\def\csname simpleicon@etcdicon\endcsname {\simpleiconsmap\symbol{"ED71}}
- \expandafter\def\csname simpleicon@ethereumicon\endcsname {\simpleiconsmap\symbol{"ED72}}
- \expandafter\def\csname simpleicon@ethersicon\endcsname {\simpleiconsmap\symbol{"ED73}}
- \expandafter\def\csname simpleicon@ethiopianairlinesicon\endcsname {\simpleiconsmap\symbol{"ED74}}
- \expandafter\def\csname simpleicon@etihadairwaysicon\endcsname {\simpleiconsmap\symbol{"ED75}}
- \expandafter\def\csname simpleicon@etsyicon\endcsname {\simpleiconsmap\symbol{"ED76}}
- \expandafter\def\csname simpleicon@eventbriteicon\endcsname {\simpleiconsmap\symbol{"ED77}}
- \expandafter\def\csname simpleicon@eventstoreicon\endcsname {\simpleiconsmap\symbol{"ED78}}
- \expandafter\def\csname simpleicon@evernoteicon\endcsname {\simpleiconsmap\symbol{"ED79}}
- \expandafter\def\csname simpleicon@excalidrawicon\endcsname {\simpleiconsmap\symbol{"ED7A}}
- \expandafter\def\csname simpleicon@exercismicon\endcsname {\simpleiconsmap\symbol{"ED7B}}
- \expandafter\def\csname simpleicon@exordoicon\endcsname {\simpleiconsmap\symbol{"ED7C}}
- \expandafter\def\csname simpleicon@exoscaleicon\endcsname {\simpleiconsmap\symbol{"ED7D}}
- \expandafter\def\csname simpleicon@expediaicon\endcsname {\simpleiconsmap\symbol{"ED7E}}
- \expandafter\def\csname simpleicon@expensifyicon\endcsname {\simpleiconsmap\symbol{"ED7F}}
- \expandafter\def\csname simpleicon@expertsexchangeicon\endcsname {\simpleiconsmap\symbol{"ED80}}
- \expandafter\def\csname simpleicon@expoicon\endcsname {\simpleiconsmap\symbol{"ED81}}
- \expandafter\def\csname simpleicon@expressicon\endcsname {\simpleiconsmap\symbol{"ED82}}
- \expandafter\def\csname simpleicon@expressvpnicon\endcsname {\simpleiconsmap\symbol{"ED83}}
- \expandafter\def\csname simpleicon@eyeemicon\endcsname {\simpleiconsmap\symbol{"ED84}}
- \expandafter\def\csname simpleicon@f1icon\endcsname {\simpleiconsmap\symbol{"ED85}}
- \expandafter\def\csname simpleicon@f5icon\endcsname {\simpleiconsmap\symbol{"ED86}}
- \expandafter\def\csname simpleicon@facebookicon\endcsname {\simpleiconsmap\symbol{"ED87}}
- \expandafter\def\csname simpleicon@facebookgamingicon\endcsname {\simpleiconsmap\symbol{"ED88}}
- \expandafter\def\csname simpleicon@facebookliveicon\endcsname {\simpleiconsmap\symbol{"ED89}}
- \expandafter\def\csname simpleicon@faceiticon\endcsname {\simpleiconsmap\symbol{"ED8A}}
- \expandafter\def\csname simpleicon@facepunchicon\endcsname {\simpleiconsmap\symbol{"ED8B}}
- \expandafter\def\csname simpleicon@fairphoneicon\endcsname {\simpleiconsmap\symbol{"ED8C}}
- \expandafter\def\csname simpleicon@falcoicon\endcsname {\simpleiconsmap\symbol{"ED8D}}
- \expandafter\def\csname simpleicon@falconicon\endcsname {\simpleiconsmap\symbol{"ED8E}}
- \expandafter\def\csname simpleicon@fampayicon\endcsname {\simpleiconsmap\symbol{"ED8F}}
- \expandafter\def\csname simpleicon@fandangoicon\endcsname {\simpleiconsmap\symbol{"ED90}}
- \expandafter\def\csname simpleicon@fandomicon\endcsname {\simpleiconsmap\symbol{"ED91}}
- \expandafter\def\csname simpleicon@fanfouicon\endcsname {\simpleiconsmap\symbol{"ED92}}
- \expandafter\def\csname simpleicon@fantomicon\endcsname {\simpleiconsmap\symbol{"ED93}}
- \expandafter\def\csname simpleicon@farcastericon\endcsname {\simpleiconsmap\symbol{"ED94}}
- \expandafter\def\csname simpleicon@fareharboricon\endcsname {\simpleiconsmap\symbol{"ED95}}
- \expandafter\def\csname simpleicon@farfetchicon\endcsname {\simpleiconsmap\symbol{"ED96}}
- \expandafter\def\csname simpleicon@fastapiicon\endcsname {\simpleiconsmap\symbol{"ED97}}
- \expandafter\def\csname simpleicon@fastifyicon\endcsname {\simpleiconsmap\symbol{"ED98}}
- \expandafter\def\csname simpleicon@fastlaneicon\endcsname {\simpleiconsmap\symbol{"ED99}}
- \expandafter\def\csname simpleicon@fastlyicon\endcsname {\simpleiconsmap\symbol{"ED9A}}
- \expandafter\def\csname simpleicon@fathomicon\endcsname {\simpleiconsmap\symbol{"ED9B}}
- \expandafter\def\csname simpleicon@faunaicon\endcsname {\simpleiconsmap\symbol{"ED9C}}
- \expandafter\def\csname simpleicon@favroicon\endcsname {\simpleiconsmap\symbol{"ED9D}}
- \expandafter\def\csname simpleicon@fdroidicon\endcsname {\simpleiconsmap\symbol{"ED9E}}
- \expandafter\def\csname simpleicon@feathubicon\endcsname {\simpleiconsmap\symbol{"ED9F}}
- \expandafter\def\csname simpleicon@fedexicon\endcsname {\simpleiconsmap\symbol{"EDA0}}
- \expandafter\def\csname simpleicon@fedoraicon\endcsname {\simpleiconsmap\symbol{"EDA1}}
- \expandafter\def\csname simpleicon@feedlyicon\endcsname {\simpleiconsmap\symbol{"EDA2}}
- \expandafter\def\csname simpleicon@ferrariicon\endcsname {\simpleiconsmap\symbol{"EDA3}}
- \expandafter\def\csname simpleicon@ferrarinvicon\endcsname {\simpleiconsmap\symbol{"EDA4}}
- \expandafter\def\csname simpleicon@ferretdbicon\endcsname {\simpleiconsmap\symbol{"EDA5}}
- \expandafter\def\csname simpleicon@ffmpegicon\endcsname {\simpleiconsmap\symbol{"EDA6}}
- \expandafter\def\csname simpleicon@fiicon\endcsname {\simpleiconsmap\symbol{"EDA7}}
- \expandafter\def\csname simpleicon@fiaticon\endcsname {\simpleiconsmap\symbol{"EDA8}}
- \expandafter\def\csname simpleicon@fidoallianceicon\endcsname {\simpleiconsmap\symbol{"EDA9}}
- \expandafter\def\csname simpleicon@fifaicon\endcsname {\simpleiconsmap\symbol{"EDAA}}
- \expandafter\def\csname simpleicon@figicon\endcsname {\simpleiconsmap\symbol{"EDAB}}
- \expandafter\def\csname simpleicon@figmaicon\endcsname {\simpleiconsmap\symbol{"EDAC}}
- \expandafter\def\csname simpleicon@figshareicon\endcsname {\simpleiconsmap\symbol{"EDAD}}
- \expandafter\def\csname simpleicon@filaicon\endcsname {\simpleiconsmap\symbol{"EDAE}}
- \expandafter\def\csname simpleicon@filedotioicon\endcsname {\simpleiconsmap\symbol{"EDAF}}
- \expandafter\def\csname simpleicon@filesicon\endcsname {\simpleiconsmap\symbol{"EDB0}}
- \expandafter\def\csname simpleicon@filezillaicon\endcsname {\simpleiconsmap\symbol{"EDB1}}
- \expandafter\def\csname simpleicon@finecoicon\endcsname {\simpleiconsmap\symbol{"EDB2}}
- \expandafter\def\csname simpleicon@fingicon\endcsname {\simpleiconsmap\symbol{"EDB3}}
- \expandafter\def\csname simpleicon@firebaseicon\endcsname {\simpleiconsmap\symbol{"EDB4}}
- \expandafter\def\csname simpleicon@firefishicon\endcsname {\simpleiconsmap\symbol{"EDB5}}
- \expandafter\def\csname simpleicon@fireflyiiiicon\endcsname {\simpleiconsmap\symbol{"EDB6}}
- \expandafter\def\csname simpleicon@firefoxicon\endcsname {\simpleiconsmap\symbol{"EDB7}}
- \expandafter\def\csname simpleicon@firefoxbrowsericon\endcsname {\simpleiconsmap\symbol{"EDB8}}
- \expandafter\def\csname simpleicon@fireshipicon\endcsname {\simpleiconsmap\symbol{"EDB9}}
- \expandafter\def\csname simpleicon@firewallaicon\endcsname {\simpleiconsmap\symbol{"EDBA}}
- \expandafter\def\csname simpleicon@firsticon\endcsname {\simpleiconsmap\symbol{"EDBB}}
- \expandafter\def\csname simpleicon@fishshellicon\endcsname {\simpleiconsmap\symbol{"EDBC}}
- \expandafter\def\csname simpleicon@fitbiticon\endcsname {\simpleiconsmap\symbol{"EDBD}}
- \expandafter\def\csname simpleicon@fivemicon\endcsname {\simpleiconsmap\symbol{"EDBE}}
- \expandafter\def\csname simpleicon@fiverricon\endcsname {\simpleiconsmap\symbol{"EDBF}}
- \expandafter\def\csname simpleicon@fizzicon\endcsname {\simpleiconsmap\symbol{"EDC0}}
- \expandafter\def\csname simpleicon@flashforgeicon\endcsname {\simpleiconsmap\symbol{"EDC1}}
- \expandafter\def\csname simpleicon@flaskicon\endcsname {\simpleiconsmap\symbol{"EDC2}}
- \expandafter\def\csname simpleicon@flaticon\endcsname {\simpleiconsmap\symbol{"EDC3}}
- \expandafter\def\csname simpleicon@flathubicon\endcsname {\simpleiconsmap\symbol{"EDC4}}
- \expandafter\def\csname simpleicon@flatpakicon\endcsname {\simpleiconsmap\symbol{"EDC5}}
- \expandafter\def\csname simpleicon@flickricon\endcsname {\simpleiconsmap\symbol{"EDC6}}
- \expandafter\def\csname simpleicon@flightawareicon\endcsname {\simpleiconsmap\symbol{"EDC7}}
- \expandafter\def\csname simpleicon@flipboardicon\endcsname {\simpleiconsmap\symbol{"EDC8}}
- \expandafter\def\csname simpleicon@flipkarticon\endcsname {\simpleiconsmap\symbol{"EDC9}}
- \expandafter\def\csname simpleicon@floatplaneicon\endcsname {\simpleiconsmap\symbol{"EDCA}}
- \expandafter\def\csname simpleicon@floodicon\endcsname {\simpleiconsmap\symbol{"EDCB}}
- \expandafter\def\csname simpleicon@fluentbiticon\endcsname {\simpleiconsmap\symbol{"EDCC}}
- \expandafter\def\csname simpleicon@fluentdicon\endcsname {\simpleiconsmap\symbol{"EDCD}}
- \expandafter\def\csname simpleicon@flukeicon\endcsname {\simpleiconsmap\symbol{"EDCE}}
- \expandafter\def\csname simpleicon@fluttericon\endcsname {\simpleiconsmap\symbol{"EDCF}}
- \expandafter\def\csname simpleicon@fluxicon\endcsname {\simpleiconsmap\symbol{"EDD0}}
- \expandafter\def\csname simpleicon@fluxusicon\endcsname {\simpleiconsmap\symbol{"EDD1}}
- \expandafter\def\csname simpleicon@flywayicon\endcsname {\simpleiconsmap\symbol{"EDD2}}
- \expandafter\def\csname simpleicon@fmodicon\endcsname {\simpleiconsmap\symbol{"EDD3}}
- \expandafter\def\csname simpleicon@fnacicon\endcsname {\simpleiconsmap\symbol{"EDD4}}
- \expandafter\def\csname simpleicon@foliumicon\endcsname {\simpleiconsmap\symbol{"EDD5}}
- \expandafter\def\csname simpleicon@fonomaicon\endcsname {\simpleiconsmap\symbol{"EDD6}}
- \expandafter\def\csname simpleicon@fontawesomeicon\endcsname {\simpleiconsmap\symbol{"EDD7}}
- \expandafter\def\csname simpleicon@fontbaseicon\endcsname {\simpleiconsmap\symbol{"EDD8}}
- \expandafter\def\csname simpleicon@fontforgeicon\endcsname {\simpleiconsmap\symbol{"EDD9}}
- \expandafter\def\csname simpleicon@foobar2000icon\endcsname {\simpleiconsmap\symbol{"EDDA}}
- \expandafter\def\csname simpleicon@foodpandaicon\endcsname {\simpleiconsmap\symbol{"EDDB}}
- \expandafter\def\csname simpleicon@fordicon\endcsname {\simpleiconsmap\symbol{"EDDC}}
- \expandafter\def\csname simpleicon@forgejoicon\endcsname {\simpleiconsmap\symbol{"EDDD}}
- \expandafter\def\csname simpleicon@formikicon\endcsname {\simpleiconsmap\symbol{"EDDE}}
- \expandafter\def\csname simpleicon@formspreeicon\endcsname {\simpleiconsmap\symbol{"EDDF}}
- \expandafter\def\csname simpleicon@formstackicon\endcsname {\simpleiconsmap\symbol{"EDE0}}
- \expandafter\def\csname simpleicon@fortineticon\endcsname {\simpleiconsmap\symbol{"EDE1}}
- \expandafter\def\csname simpleicon@fortranicon\endcsname {\simpleiconsmap\symbol{"EDE2}}
- \expandafter\def\csname simpleicon@fossaicon\endcsname {\simpleiconsmap\symbol{"EDE3}}
- \expandafter\def\csname simpleicon@fossilscmicon\endcsname {\simpleiconsmap\symbol{"EDE4}}
- \expandafter\def\csname simpleicon@foundryvirtualtabletopicon\endcsname {\simpleiconsmap\symbol{"EDE5}}
- \expandafter\def\csname simpleicon@foursquareicon\endcsname {\simpleiconsmap\symbol{"EDE6}}
- \expandafter\def\csname simpleicon@foursquarecityguideicon\endcsname {\simpleiconsmap\symbol{"EDE7}}
- \expandafter\def\csname simpleicon@foxicon\endcsname {\simpleiconsmap\symbol{"EDE8}}
- \expandafter\def\csname simpleicon@foxtelicon\endcsname {\simpleiconsmap\symbol{"EDE9}}
- \expandafter\def\csname simpleicon@fozzyicon\endcsname {\simpleiconsmap\symbol{"EDEA}}
- \expandafter\def\csname simpleicon@framericon\endcsname {\simpleiconsmap\symbol{"EDEB}}
- \expandafter\def\csname simpleicon@frameworkicon\endcsname {\simpleiconsmap\symbol{"EDEC}}
- \expandafter\def\csname simpleicon@framework7icon\endcsname {\simpleiconsmap\symbol{"EDED}}
- \expandafter\def\csname simpleicon@franprixicon\endcsname {\simpleiconsmap\symbol{"EDEE}}
- \expandafter\def\csname simpleicon@frappeicon\endcsname {\simpleiconsmap\symbol{"EDEF}}
- \expandafter\def\csname simpleicon@fraunhofergesellschafticon\endcsname {\simpleiconsmap\symbol{"EDF0}}
- \expandafter\def\csname simpleicon@freebsdicon\endcsname {\simpleiconsmap\symbol{"EDF1}}
- \expandafter\def\csname simpleicon@freecadicon\endcsname {\simpleiconsmap\symbol{"EDF2}}
- \expandafter\def\csname simpleicon@freecodecampicon\endcsname {\simpleiconsmap\symbol{"EDF3}}
- \expandafter\def\csname simpleicon@freedesktopdotorgicon\endcsname {\simpleiconsmap\symbol{"EDF4}}
- \expandafter\def\csname simpleicon@freelancericon\endcsname {\simpleiconsmap\symbol{"EDF5}}
- \expandafter\def\csname simpleicon@freelancermapicon\endcsname {\simpleiconsmap\symbol{"EDF6}}
- \expandafter\def\csname simpleicon@freenasicon\endcsname {\simpleiconsmap\symbol{"EDF7}}
- \expandafter\def\csname simpleicon@freepikicon\endcsname {\simpleiconsmap\symbol{"EDF8}}
- \expandafter\def\csname simpleicon@frontendmentoricon\endcsname {\simpleiconsmap\symbol{"EDF9}}
- \expandafter\def\csname simpleicon@frontifyicon\endcsname {\simpleiconsmap\symbol{"EDFA}}
- \expandafter\def\csname simpleicon@fsecureicon\endcsname {\simpleiconsmap\symbol{"EDFB}}
- \expandafter\def\csname simpleicon@fsharpicon\endcsname {\simpleiconsmap\symbol{"EDFC}}
- \expandafter\def\csname simpleicon@fuboicon\endcsname {\simpleiconsmap\symbol{"EDFD}}
- \expandafter\def\csname simpleicon@fuelericon\endcsname {\simpleiconsmap\symbol{"EDFE}}
- \expandafter\def\csname simpleicon@fugacloudicon\endcsname {\simpleiconsmap\symbol{"EDFF}}
- \expandafter\def\csname simpleicon@fujifilmicon\endcsname {\simpleiconsmap\symbol{"EE00}}
- \expandafter\def\csname simpleicon@fujitsuicon\endcsname {\simpleiconsmap\symbol{"EE01}}
- \expandafter\def\csname simpleicon@funimationicon\endcsname {\simpleiconsmap\symbol{"EE02}}
- \expandafter\def\csname simpleicon@furaffinityicon\endcsname {\simpleiconsmap\symbol{"EE03}}
- \expandafter\def\csname simpleicon@furrynetworkicon\endcsname {\simpleiconsmap\symbol{"EE04}}
- \expandafter\def\csname simpleicon@fusionauthicon\endcsname {\simpleiconsmap\symbol{"EE05}}
- \expandafter\def\csname simpleicon@futurelearnicon\endcsname {\simpleiconsmap\symbol{"EE06}}
- \expandafter\def\csname simpleicon@g2icon\endcsname {\simpleiconsmap\symbol{"EE07}}
- \expandafter\def\csname simpleicon@g2aicon\endcsname {\simpleiconsmap\symbol{"EE08}}
- \expandafter\def\csname simpleicon@g2gicon\endcsname {\simpleiconsmap\symbol{"EE09}}
- \expandafter\def\csname simpleicon@galaxusicon\endcsname {\simpleiconsmap\symbol{"EE0A}}
- \expandafter\def\csname simpleicon@gameandwatchicon\endcsname {\simpleiconsmap\symbol{"EE0B}}
- \expandafter\def\csname simpleicon@gamebananaicon\endcsname {\simpleiconsmap\symbol{"EE0C}}
- \expandafter\def\csname simpleicon@gamedevelopericon\endcsname {\simpleiconsmap\symbol{"EE0D}}
- \expandafter\def\csname simpleicon@gamejolticon\endcsname {\simpleiconsmap\symbol{"EE0E}}
- \expandafter\def\csname simpleicon@gamelofticon\endcsname {\simpleiconsmap\symbol{"EE0F}}
- \expandafter\def\csname simpleicon@gamemakericon\endcsname {\simpleiconsmap\symbol{"EE10}}
- \expandafter\def\csname simpleicon@garminicon\endcsname {\simpleiconsmap\symbol{"EE11}}
- \expandafter\def\csname simpleicon@gatlingicon\endcsname {\simpleiconsmap\symbol{"EE12}}
- \expandafter\def\csname simpleicon@gatsbyicon\endcsname {\simpleiconsmap\symbol{"EE13}}
- \expandafter\def\csname simpleicon@gcoreicon\endcsname {\simpleiconsmap\symbol{"EE14}}
- \expandafter\def\csname simpleicon@gdalicon\endcsname {\simpleiconsmap\symbol{"EE15}}
- \expandafter\def\csname simpleicon@geanticon\endcsname {\simpleiconsmap\symbol{"EE16}}
- \expandafter\def\csname simpleicon@geeksforgeeksicon\endcsname {\simpleiconsmap\symbol{"EE17}}
- \expandafter\def\csname simpleicon@generalelectricicon\endcsname {\simpleiconsmap\symbol{"EE18}}
- \expandafter\def\csname simpleicon@generalmotorsicon\endcsname {\simpleiconsmap\symbol{"EE19}}
- \expandafter\def\csname simpleicon@geniusicon\endcsname {\simpleiconsmap\symbol{"EE1A}}
- \expandafter\def\csname simpleicon@gentooicon\endcsname {\simpleiconsmap\symbol{"EE1B}}
- \expandafter\def\csname simpleicon@geocachingicon\endcsname {\simpleiconsmap\symbol{"EE1C}}
- \expandafter\def\csname simpleicon@geodeicon\endcsname {\simpleiconsmap\symbol{"EE1D}}
- \expandafter\def\csname simpleicon@geopandasicon\endcsname {\simpleiconsmap\symbol{"EE1E}}
- \expandafter\def\csname simpleicon@gerriticon\endcsname {\simpleiconsmap\symbol{"EE1F}}
- \expandafter\def\csname simpleicon@getxicon\endcsname {\simpleiconsmap\symbol{"EE20}}
- \expandafter\def\csname simpleicon@ghosticon\endcsname {\simpleiconsmap\symbol{"EE21}}
- \expandafter\def\csname simpleicon@ghosteryicon\endcsname {\simpleiconsmap\symbol{"EE22}}
- \expandafter\def\csname simpleicon@gimpicon\endcsname {\simpleiconsmap\symbol{"EE23}}
- \expandafter\def\csname simpleicon@ginicon\endcsname {\simpleiconsmap\symbol{"EE24}}
- \expandafter\def\csname simpleicon@giphyicon\endcsname {\simpleiconsmap\symbol{"EE25}}
- \expandafter\def\csname simpleicon@giticon\endcsname {\simpleiconsmap\symbol{"EE26}}
- \expandafter\def\csname simpleicon@gitbookicon\endcsname {\simpleiconsmap\symbol{"EE27}}
- \expandafter\def\csname simpleicon@gitconnectedicon\endcsname {\simpleiconsmap\symbol{"EE28}}
- \expandafter\def\csname simpleicon@giteaicon\endcsname {\simpleiconsmap\symbol{"EE29}}
- \expandafter\def\csname simpleicon@giteeicon\endcsname {\simpleiconsmap\symbol{"EE2A}}
- \expandafter\def\csname simpleicon@gitextensionsicon\endcsname {\simpleiconsmap\symbol{"EE2B}}
- \expandafter\def\csname simpleicon@githubicon\endcsname {\simpleiconsmap\symbol{"EE2C}}
- \expandafter\def\csname simpleicon@githubactionsicon\endcsname {\simpleiconsmap\symbol{"EE2D}}
- \expandafter\def\csname simpleicon@githubcopiloticon\endcsname {\simpleiconsmap\symbol{"EE2E}}
- \expandafter\def\csname simpleicon@githubpagesicon\endcsname {\simpleiconsmap\symbol{"EE2F}}
- \expandafter\def\csname simpleicon@githubsponsorsicon\endcsname {\simpleiconsmap\symbol{"EE30}}
- \expandafter\def\csname simpleicon@gitignoredotioicon\endcsname {\simpleiconsmap\symbol{"EE31}}
- \expandafter\def\csname simpleicon@gitkrakenicon\endcsname {\simpleiconsmap\symbol{"EE32}}
- \expandafter\def\csname simpleicon@gitlabicon\endcsname {\simpleiconsmap\symbol{"EE33}}
- \expandafter\def\csname simpleicon@gitlfsicon\endcsname {\simpleiconsmap\symbol{"EE34}}
- \expandafter\def\csname simpleicon@gitpodicon\endcsname {\simpleiconsmap\symbol{"EE35}}
- \expandafter\def\csname simpleicon@gittericon\endcsname {\simpleiconsmap\symbol{"EE36}}
- \expandafter\def\csname simpleicon@glassdooricon\endcsname {\simpleiconsmap\symbol{"EE37}}
- \expandafter\def\csname simpleicon@glideicon\endcsname {\simpleiconsmap\symbol{"EE38}}
- \expandafter\def\csname simpleicon@glitchicon\endcsname {\simpleiconsmap\symbol{"EE39}}
- \expandafter\def\csname simpleicon@globusicon\endcsname {\simpleiconsmap\symbol{"EE3A}}
- \expandafter\def\csname simpleicon@glovoicon\endcsname {\simpleiconsmap\symbol{"EE3B}}
- \expandafter\def\csname simpleicon@gmailicon\endcsname {\simpleiconsmap\symbol{"EE3C}}
- \expandafter\def\csname simpleicon@gnomeicon\endcsname {\simpleiconsmap\symbol{"EE3D}}
- \expandafter\def\csname simpleicon@gnometerminalicon\endcsname {\simpleiconsmap\symbol{"EE3E}}
- \expandafter\def\csname simpleicon@gnuicon\endcsname {\simpleiconsmap\symbol{"EE3F}}
- \expandafter\def\csname simpleicon@gnubashicon\endcsname {\simpleiconsmap\symbol{"EE40}}
- \expandafter\def\csname simpleicon@gnuemacsicon\endcsname {\simpleiconsmap\symbol{"EE41}}
- \expandafter\def\csname simpleicon@gnuicecaticon\endcsname {\simpleiconsmap\symbol{"EE42}}
- \expandafter\def\csname simpleicon@gnuprivacyguardicon\endcsname {\simpleiconsmap\symbol{"EE43}}
- \expandafter\def\csname simpleicon@gnusocialicon\endcsname {\simpleiconsmap\symbol{"EE44}}
- \expandafter\def\csname simpleicon@goicon\endcsname {\simpleiconsmap\symbol{"EE45}}
- \expandafter\def\csname simpleicon@gocdicon\endcsname {\simpleiconsmap\symbol{"EE46}}
- \expandafter\def\csname simpleicon@godaddyicon\endcsname {\simpleiconsmap\symbol{"EE47}}
- \expandafter\def\csname simpleicon@godotengineicon\endcsname {\simpleiconsmap\symbol{"EE48}}
- \expandafter\def\csname simpleicon@gofundmeicon\endcsname {\simpleiconsmap\symbol{"EE49}}
- \expandafter\def\csname simpleicon@gogdotcomicon\endcsname {\simpleiconsmap\symbol{"EE4A}}
- \expandafter\def\csname simpleicon@gojekicon\endcsname {\simpleiconsmap\symbol{"EE4B}}
- \expandafter\def\csname simpleicon@golandicon\endcsname {\simpleiconsmap\symbol{"EE4C}}
- \expandafter\def\csname simpleicon@goldenlineicon\endcsname {\simpleiconsmap\symbol{"EE4D}}
- \expandafter\def\csname simpleicon@goldmansachsicon\endcsname {\simpleiconsmap\symbol{"EE4E}}
- \expandafter\def\csname simpleicon@goodreadsicon\endcsname {\simpleiconsmap\symbol{"EE4F}}
- \expandafter\def\csname simpleicon@googleicon\endcsname {\simpleiconsmap\symbol{"EE50}}
- \expandafter\def\csname simpleicon@googleadmobicon\endcsname {\simpleiconsmap\symbol{"EE51}}
- \expandafter\def\csname simpleicon@googleadsicon\endcsname {\simpleiconsmap\symbol{"EE52}}
- \expandafter\def\csname simpleicon@googleadsenseicon\endcsname {\simpleiconsmap\symbol{"EE53}}
- \expandafter\def\csname simpleicon@googleanalyticsicon\endcsname {\simpleiconsmap\symbol{"EE54}}
- \expandafter\def\csname simpleicon@googleappsscripticon\endcsname {\simpleiconsmap\symbol{"EE55}}
- \expandafter\def\csname simpleicon@googleassistanticon\endcsname {\simpleiconsmap\symbol{"EE56}}
- \expandafter\def\csname simpleicon@googleauthenticatoricon\endcsname {\simpleiconsmap\symbol{"EE57}}
- \expandafter\def\csname simpleicon@googlebigqueryicon\endcsname {\simpleiconsmap\symbol{"EE58}}
- \expandafter\def\csname simpleicon@googlebigtableicon\endcsname {\simpleiconsmap\symbol{"EE59}}
- \expandafter\def\csname simpleicon@googlecalendaricon\endcsname {\simpleiconsmap\symbol{"EE5A}}
- \expandafter\def\csname simpleicon@googlecampaignmanager360icon\endcsname {\simpleiconsmap\symbol{"EE5B}}
- \expandafter\def\csname simpleicon@googlecardboardicon\endcsname {\simpleiconsmap\symbol{"EE5C}}
- \expandafter\def\csname simpleicon@googlechaticon\endcsname {\simpleiconsmap\symbol{"EE5D}}
- \expandafter\def\csname simpleicon@googlechromeicon\endcsname {\simpleiconsmap\symbol{"EE5E}}
- \expandafter\def\csname simpleicon@googlechronicleicon\endcsname {\simpleiconsmap\symbol{"EE5F}}
- \expandafter\def\csname simpleicon@googleclassroomicon\endcsname {\simpleiconsmap\symbol{"EE60}}
- \expandafter\def\csname simpleicon@googlecloudicon\endcsname {\simpleiconsmap\symbol{"EE61}}
- \expandafter\def\csname simpleicon@googlecloudcomposericon\endcsname {\simpleiconsmap\symbol{"EE62}}
- \expandafter\def\csname simpleicon@googlecloudspannericon\endcsname {\simpleiconsmap\symbol{"EE63}}
- \expandafter\def\csname simpleicon@googlecloudstorageicon\endcsname {\simpleiconsmap\symbol{"EE64}}
- \expandafter\def\csname simpleicon@googlecolabicon\endcsname {\simpleiconsmap\symbol{"EE65}}
- \expandafter\def\csname simpleicon@googlecontaineroptimizedosicon\endcsname {\simpleiconsmap\symbol{"EE66}}
- \expandafter\def\csname simpleicon@googledataflowicon\endcsname {\simpleiconsmap\symbol{"EE67}}
- \expandafter\def\csname simpleicon@googledataprocicon\endcsname {\simpleiconsmap\symbol{"EE68}}
- \expandafter\def\csname simpleicon@googledatastudioicon\endcsname {\simpleiconsmap\symbol{"EE69}}
- \expandafter\def\csname simpleicon@googledisplayandvideo360icon\endcsname {\simpleiconsmap\symbol{"EE6A}}
- \expandafter\def\csname simpleicon@googledocsicon\endcsname {\simpleiconsmap\symbol{"EE6B}}
- \expandafter\def\csname simpleicon@googledomainsicon\endcsname {\simpleiconsmap\symbol{"EE6C}}
- \expandafter\def\csname simpleicon@googledriveicon\endcsname {\simpleiconsmap\symbol{"EE6D}}
- \expandafter\def\csname simpleicon@googleearthicon\endcsname {\simpleiconsmap\symbol{"EE6E}}
- \expandafter\def\csname simpleicon@googleearthengineicon\endcsname {\simpleiconsmap\symbol{"EE6F}}
- \expandafter\def\csname simpleicon@googlefiticon\endcsname {\simpleiconsmap\symbol{"EE70}}
- \expandafter\def\csname simpleicon@googlefontsicon\endcsname {\simpleiconsmap\symbol{"EE71}}
- \expandafter\def\csname simpleicon@googleformsicon\endcsname {\simpleiconsmap\symbol{"EE72}}
- \expandafter\def\csname simpleicon@googlegeminiicon\endcsname {\simpleiconsmap\symbol{"EE73}}
- \expandafter\def\csname simpleicon@googlehangoutsicon\endcsname {\simpleiconsmap\symbol{"EE74}}
- \expandafter\def\csname simpleicon@googlehomeicon\endcsname {\simpleiconsmap\symbol{"EE75}}
- \expandafter\def\csname simpleicon@googlekeepicon\endcsname {\simpleiconsmap\symbol{"EE76}}
- \expandafter\def\csname simpleicon@googlelensicon\endcsname {\simpleiconsmap\symbol{"EE77}}
- \expandafter\def\csname simpleicon@googlemapsicon\endcsname {\simpleiconsmap\symbol{"EE78}}
- \expandafter\def\csname simpleicon@googlemarketingplatformicon\endcsname {\simpleiconsmap\symbol{"EE79}}
- \expandafter\def\csname simpleicon@googlemeeticon\endcsname {\simpleiconsmap\symbol{"EE7A}}
- \expandafter\def\csname simpleicon@googlemessagesicon\endcsname {\simpleiconsmap\symbol{"EE7B}}
- \expandafter\def\csname simpleicon@googlemybusinessicon\endcsname {\simpleiconsmap\symbol{"EE7C}}
- \expandafter\def\csname simpleicon@googlenearbyicon\endcsname {\simpleiconsmap\symbol{"EE7D}}
- \expandafter\def\csname simpleicon@googlenewsicon\endcsname {\simpleiconsmap\symbol{"EE7E}}
- \expandafter\def\csname simpleicon@googleoptimizeicon\endcsname {\simpleiconsmap\symbol{"EE7F}}
- \expandafter\def\csname simpleicon@googlepayicon\endcsname {\simpleiconsmap\symbol{"EE80}}
- \expandafter\def\csname simpleicon@googlephotosicon\endcsname {\simpleiconsmap\symbol{"EE81}}
- \expandafter\def\csname simpleicon@googleplayicon\endcsname {\simpleiconsmap\symbol{"EE82}}
- \expandafter\def\csname simpleicon@googlepodcastsicon\endcsname {\simpleiconsmap\symbol{"EE83}}
- \expandafter\def\csname simpleicon@googlepubsubicon\endcsname {\simpleiconsmap\symbol{"EE84}}
- \expandafter\def\csname simpleicon@googlescholaricon\endcsname {\simpleiconsmap\symbol{"EE85}}
- \expandafter\def\csname simpleicon@googlesearchconsoleicon\endcsname {\simpleiconsmap\symbol{"EE86}}
- \expandafter\def\csname simpleicon@googlesheetsicon\endcsname {\simpleiconsmap\symbol{"EE87}}
- \expandafter\def\csname simpleicon@googleslidesicon\endcsname {\simpleiconsmap\symbol{"EE88}}
- \expandafter\def\csname simpleicon@googlestreetviewicon\endcsname {\simpleiconsmap\symbol{"EE89}}
- \expandafter\def\csname simpleicon@googletagmanagericon\endcsname {\simpleiconsmap\symbol{"EE8A}}
- \expandafter\def\csname simpleicon@googletasksicon\endcsname {\simpleiconsmap\symbol{"EE8B}}
- \expandafter\def\csname simpleicon@googletranslateicon\endcsname {\simpleiconsmap\symbol{"EE8C}}
- \expandafter\def\csname simpleicon@gotomeetingicon\endcsname {\simpleiconsmap\symbol{"EE8D}}
- \expandafter\def\csname simpleicon@grabicon\endcsname {\simpleiconsmap\symbol{"EE8E}}
- \expandafter\def\csname simpleicon@gradleicon\endcsname {\simpleiconsmap\symbol{"EE8F}}
- \expandafter\def\csname simpleicon@gradleplaypublishericon\endcsname {\simpleiconsmap\symbol{"EE90}}
- \expandafter\def\csname simpleicon@grafanaicon\endcsname {\simpleiconsmap\symbol{"EE91}}
- \expandafter\def\csname simpleicon@grammarlyicon\endcsname {\simpleiconsmap\symbol{"EE92}}
- \expandafter\def\csname simpleicon@grandfraisicon\endcsname {\simpleiconsmap\symbol{"EE93}}
- \expandafter\def\csname simpleicon@grapheneosicon\endcsname {\simpleiconsmap\symbol{"EE94}}
- \expandafter\def\csname simpleicon@graphiteicon\endcsname {\simpleiconsmap\symbol{"EE95}}
- \expandafter\def\csname simpleicon@graphqlicon\endcsname {\simpleiconsmap\symbol{"EE96}}
- \expandafter\def\csname simpleicon@gravicon\endcsname {\simpleiconsmap\symbol{"EE97}}
- \expandafter\def\csname simpleicon@gravataricon\endcsname {\simpleiconsmap\symbol{"EE98}}
- \expandafter\def\csname simpleicon@graylogicon\endcsname {\simpleiconsmap\symbol{"EE99}}
- \expandafter\def\csname simpleicon@greasyforkicon\endcsname {\simpleiconsmap\symbol{"EE9A}}
- \expandafter\def\csname simpleicon@greatlearningicon\endcsname {\simpleiconsmap\symbol{"EE9B}}
- \expandafter\def\csname simpleicon@greenhouseicon\endcsname {\simpleiconsmap\symbol{"EE9C}}
- \expandafter\def\csname simpleicon@greensockicon\endcsname {\simpleiconsmap\symbol{"EE9D}}
- \expandafter\def\csname simpleicon@griddotaiicon\endcsname {\simpleiconsmap\symbol{"EE9E}}
- \expandafter\def\csname simpleicon@gridsomeicon\endcsname {\simpleiconsmap\symbol{"EE9F}}
- \expandafter\def\csname simpleicon@groupmeicon\endcsname {\simpleiconsmap\symbol{"EEA0}}
- \expandafter\def\csname simpleicon@grouponicon\endcsname {\simpleiconsmap\symbol{"EEA1}}
- \expandafter\def\csname simpleicon@grubhubicon\endcsname {\simpleiconsmap\symbol{"EEA2}}
- \expandafter\def\csname simpleicon@grunticon\endcsname {\simpleiconsmap\symbol{"EEA3}}
- \expandafter\def\csname simpleicon@gskicon\endcsname {\simpleiconsmap\symbol{"EEA4}}
- \expandafter\def\csname simpleicon@gsmarenadotcomicon\endcsname {\simpleiconsmap\symbol{"EEA5}}
- \expandafter\def\csname simpleicon@gstreamericon\endcsname {\simpleiconsmap\symbol{"EEA6}}
- \expandafter\def\csname simpleicon@gtkicon\endcsname {\simpleiconsmap\symbol{"EEA7}}
- \expandafter\def\csname simpleicon@guangzhoumetroicon\endcsname {\simpleiconsmap\symbol{"EEA8}}
- \expandafter\def\csname simpleicon@guildedicon\endcsname {\simpleiconsmap\symbol{"EEA9}}
- \expandafter\def\csname simpleicon@gulpicon\endcsname {\simpleiconsmap\symbol{"EEAA}}
- \expandafter\def\csname simpleicon@gumroadicon\endcsname {\simpleiconsmap\symbol{"EEAB}}
- \expandafter\def\csname simpleicon@gumtreeicon\endcsname {\simpleiconsmap\symbol{"EEAC}}
- \expandafter\def\csname simpleicon@gunicornicon\endcsname {\simpleiconsmap\symbol{"EEAD}}
- \expandafter\def\csname simpleicon@gurobiicon\endcsname {\simpleiconsmap\symbol{"EEAE}}
- \expandafter\def\csname simpleicon@gutenbergicon\endcsname {\simpleiconsmap\symbol{"EEAF}}
- \expandafter\def\csname simpleicon@h3icon\endcsname {\simpleiconsmap\symbol{"EEB0}}
- \expandafter\def\csname simpleicon@habricon\endcsname {\simpleiconsmap\symbol{"EEB1}}
- \expandafter\def\csname simpleicon@hackadayicon\endcsname {\simpleiconsmap\symbol{"EEB2}}
- \expandafter\def\csname simpleicon@hackclubicon\endcsname {\simpleiconsmap\symbol{"EEB3}}
- \expandafter\def\csname simpleicon@hackerearthicon\endcsname {\simpleiconsmap\symbol{"EEB4}}
- \expandafter\def\csname simpleicon@hackernoonicon\endcsname {\simpleiconsmap\symbol{"EEB5}}
- \expandafter\def\csname simpleicon@hackeroneicon\endcsname {\simpleiconsmap\symbol{"EEB6}}
- \expandafter\def\csname simpleicon@hackerrankicon\endcsname {\simpleiconsmap\symbol{"EEB7}}
- \expandafter\def\csname simpleicon@hackstericon\endcsname {\simpleiconsmap\symbol{"EEB8}}
- \expandafter\def\csname simpleicon@hacktheboxicon\endcsname {\simpleiconsmap\symbol{"EEB9}}
- \expandafter\def\csname simpleicon@halicon\endcsname {\simpleiconsmap\symbol{"EEBA}}
- \expandafter\def\csname simpleicon@handlebarsdotjsicon\endcsname {\simpleiconsmap\symbol{"EEBB}}
- \expandafter\def\csname simpleicon@handmicon\endcsname {\simpleiconsmap\symbol{"EEBC}}
- \expandafter\def\csname simpleicon@handshakeicon\endcsname {\simpleiconsmap\symbol{"EEBD}}
- \expandafter\def\csname simpleicon@handshakeprotocolicon\endcsname {\simpleiconsmap\symbol{"EEBE}}
- \expandafter\def\csname simpleicon@happycowicon\endcsname {\simpleiconsmap\symbol{"EEBF}}
- \expandafter\def\csname simpleicon@harboricon\endcsname {\simpleiconsmap\symbol{"EEC0}}
- \expandafter\def\csname simpleicon@harmonyosicon\endcsname {\simpleiconsmap\symbol{"EEC1}}
- \expandafter\def\csname simpleicon@hashicorpicon\endcsname {\simpleiconsmap\symbol{"EEC2}}
- \expandafter\def\csname simpleicon@hashnodeicon\endcsname {\simpleiconsmap\symbol{"EEC3}}
- \expandafter\def\csname simpleicon@haskellicon\endcsname {\simpleiconsmap\symbol{"EEC4}}
- \expandafter\def\csname simpleicon@hasuraicon\endcsname {\simpleiconsmap\symbol{"EEC5}}
- \expandafter\def\csname simpleicon@hatenabookmarkicon\endcsname {\simpleiconsmap\symbol{"EEC6}}
- \expandafter\def\csname simpleicon@haveibeenpwnedicon\endcsname {\simpleiconsmap\symbol{"EEC7}}
- \expandafter\def\csname simpleicon@haxeicon\endcsname {\simpleiconsmap\symbol{"EEC8}}
- \expandafter\def\csname simpleicon@hboicon\endcsname {\simpleiconsmap\symbol{"EEC9}}
- \expandafter\def\csname simpleicon@hclicon\endcsname {\simpleiconsmap\symbol{"EECA}}
- \expandafter\def\csname simpleicon@hdfcbankicon\endcsname {\simpleiconsmap\symbol{"EECB}}
- \expandafter\def\csname simpleicon@headlessuiicon\endcsname {\simpleiconsmap\symbol{"EECC}}
- \expandafter\def\csname simpleicon@headphonezoneicon\endcsname {\simpleiconsmap\symbol{"EECD}}
- \expandafter\def\csname simpleicon@headspaceicon\endcsname {\simpleiconsmap\symbol{"EECE}}
- \expandafter\def\csname simpleicon@hearthicon\endcsname {\simpleiconsmap\symbol{"EECF}}
- \expandafter\def\csname simpleicon@hearthisdotaticon\endcsname {\simpleiconsmap\symbol{"EED0}}
- \expandafter\def\csname simpleicon@hederaicon\endcsname {\simpleiconsmap\symbol{"EED1}}
- \expandafter\def\csname simpleicon@heliumicon\endcsname {\simpleiconsmap\symbol{"EED2}}
- \expandafter\def\csname simpleicon@hellofreshicon\endcsname {\simpleiconsmap\symbol{"EED3}}
- \expandafter\def\csname simpleicon@hellyhansenicon\endcsname {\simpleiconsmap\symbol{"EED4}}
- \expandafter\def\csname simpleicon@helmicon\endcsname {\simpleiconsmap\symbol{"EED5}}
- \expandafter\def\csname simpleicon@helpdeskicon\endcsname {\simpleiconsmap\symbol{"EED6}}
- \expandafter\def\csname simpleicon@helpscouticon\endcsname {\simpleiconsmap\symbol{"EED7}}
- \expandafter\def\csname simpleicon@hepsiemlakicon\endcsname {\simpleiconsmap\symbol{"EED8}}
- \expandafter\def\csname simpleicon@hereicon\endcsname {\simpleiconsmap\symbol{"EED9}}
- \expandafter\def\csname simpleicon@herokuicon\endcsname {\simpleiconsmap\symbol{"EEDA}}
- \expandafter\def\csname simpleicon@hetznericon\endcsname {\simpleiconsmap\symbol{"EEDB}}
- \expandafter\def\csname simpleicon@hevyicon\endcsname {\simpleiconsmap\symbol{"EEDC}}
- \expandafter\def\csname simpleicon@hexleticon\endcsname {\simpleiconsmap\symbol{"EEDD}}
- \expandafter\def\csname simpleicon@hexoicon\endcsname {\simpleiconsmap\symbol{"EEDE}}
- \expandafter\def\csname simpleicon@heyicon\endcsname {\simpleiconsmap\symbol{"EEDF}}
- \expandafter\def\csname simpleicon@hibernateicon\endcsname {\simpleiconsmap\symbol{"EEE0}}
- \expandafter\def\csname simpleicon@hibobicon\endcsname {\simpleiconsmap\symbol{"EEE1}}
- \expandafter\def\csname simpleicon@hiltonicon\endcsname {\simpleiconsmap\symbol{"EEE2}}
- \expandafter\def\csname simpleicon@hiltonhotelsandresortsicon\endcsname {\simpleiconsmap\symbol{"EEE3}}
- \expandafter\def\csname simpleicon@hitachiicon\endcsname {\simpleiconsmap\symbol{"EEE4}}
- \expandafter\def\csname simpleicon@hiveicon\endcsname {\simpleiconsmap\symbol{"EEE5}}
- \expandafter\def\csname simpleicon@hiveblockchainicon\endcsname {\simpleiconsmap\symbol{"EEE6}}
- \expandafter\def\csname simpleicon@hivemqicon\endcsname {\simpleiconsmap\symbol{"EEE7}}
- \expandafter\def\csname simpleicon@homarricon\endcsname {\simpleiconsmap\symbol{"EEE8}}
- \expandafter\def\csname simpleicon@homeadvisoricon\endcsname {\simpleiconsmap\symbol{"EEE9}}
- \expandafter\def\csname simpleicon@homeassistanticon\endcsname {\simpleiconsmap\symbol{"EEEA}}
- \expandafter\def\csname simpleicon@homeassistantcommunitystoreicon\endcsname {\simpleiconsmap\symbol{"EEEB}}
- \expandafter\def\csname simpleicon@homebrewicon\endcsname {\simpleiconsmap\symbol{"EEEC}}
- \expandafter\def\csname simpleicon@homebridgeicon\endcsname {\simpleiconsmap\symbol{"EEED}}
- \expandafter\def\csname simpleicon@homepageicon\endcsname {\simpleiconsmap\symbol{"EEEE}}
- \expandafter\def\csname simpleicon@homifyicon\endcsname {\simpleiconsmap\symbol{"EEEF}}
- \expandafter\def\csname simpleicon@hondaicon\endcsname {\simpleiconsmap\symbol{"EEF0}}
- \expandafter\def\csname simpleicon@honeyicon\endcsname {\simpleiconsmap\symbol{"EEF1}}
- \expandafter\def\csname simpleicon@honoicon\endcsname {\simpleiconsmap\symbol{"EEF2}}
- \expandafter\def\csname simpleicon@honoricon\endcsname {\simpleiconsmap\symbol{"EEF3}}
- \expandafter\def\csname simpleicon@hootsuiteicon\endcsname {\simpleiconsmap\symbol{"EEF4}}
- \expandafter\def\csname simpleicon@hoppscotchicon\endcsname {\simpleiconsmap\symbol{"EEF5}}
- \expandafter\def\csname simpleicon@hostingericon\endcsname {\simpleiconsmap\symbol{"EEF6}}
- \expandafter\def\csname simpleicon@hotelsdotcomicon\endcsname {\simpleiconsmap\symbol{"EEF7}}
- \expandafter\def\csname simpleicon@hotjaricon\endcsname {\simpleiconsmap\symbol{"EEF8}}
- \expandafter\def\csname simpleicon@hotwireicon\endcsname {\simpleiconsmap\symbol{"EEF9}}
- \expandafter\def\csname simpleicon@houdiniicon\endcsname {\simpleiconsmap\symbol{"EEFA}}
- \expandafter\def\csname simpleicon@houzzicon\endcsname {\simpleiconsmap\symbol{"EEFB}}
- \expandafter\def\csname simpleicon@hpicon\endcsname {\simpleiconsmap\symbol{"EEFC}}
- \expandafter\def\csname simpleicon@hsbcicon\endcsname {\simpleiconsmap\symbol{"EEFD}}
- \expandafter\def\csname simpleicon@html5icon\endcsname {\simpleiconsmap\symbol{"EEFE}}
- \expandafter\def\csname simpleicon@htmlacademyicon\endcsname {\simpleiconsmap\symbol{"EEFF}}
- \expandafter\def\csname simpleicon@htmxicon\endcsname {\simpleiconsmap\symbol{"EF00}}
- \expandafter\def\csname simpleicon@htopicon\endcsname {\simpleiconsmap\symbol{"EF01}}
- \expandafter\def\csname simpleicon@httpieicon\endcsname {\simpleiconsmap\symbol{"EF02}}
- \expandafter\def\csname simpleicon@huaweiicon\endcsname {\simpleiconsmap\symbol{"EF03}}
- \expandafter\def\csname simpleicon@hubspoticon\endcsname {\simpleiconsmap\symbol{"EF04}}
- \expandafter\def\csname simpleicon@huggingfaceicon\endcsname {\simpleiconsmap\symbol{"EF05}}
- \expandafter\def\csname simpleicon@hugoicon\endcsname {\simpleiconsmap\symbol{"EF06}}
- \expandafter\def\csname simpleicon@humblebundleicon\endcsname {\simpleiconsmap\symbol{"EF07}}
- \expandafter\def\csname simpleicon@hungryjacksicon\endcsname {\simpleiconsmap\symbol{"EF08}}
- \expandafter\def\csname simpleicon@husqvarnaicon\endcsname {\simpleiconsmap\symbol{"EF09}}
- \expandafter\def\csname simpleicon@hypericon\endcsname {\simpleiconsmap\symbol{"EF0A}}
- \expandafter\def\csname simpleicon@hyperskillicon\endcsname {\simpleiconsmap\symbol{"EF0B}}
- \expandafter\def\csname simpleicon@hypothesisicon\endcsname {\simpleiconsmap\symbol{"EF0C}}
- \expandafter\def\csname simpleicon@hyundaiicon\endcsname {\simpleiconsmap\symbol{"EF0D}}
- \expandafter\def\csname simpleicon@i18nexticon\endcsname {\simpleiconsmap\symbol{"EF0E}}
- \expandafter\def\csname simpleicon@i3icon\endcsname {\simpleiconsmap\symbol{"EF0F}}
- \expandafter\def\csname simpleicon@iataicon\endcsname {\simpleiconsmap\symbol{"EF10}}
- \expandafter\def\csname simpleicon@ibeaconicon\endcsname {\simpleiconsmap\symbol{"EF11}}
- \expandafter\def\csname simpleicon@iberiaicon\endcsname {\simpleiconsmap\symbol{"EF12}}
- \expandafter\def\csname simpleicon@ibmicon\endcsname {\simpleiconsmap\symbol{"EF13}}
- \expandafter\def\csname simpleicon@ibmcloudicon\endcsname {\simpleiconsmap\symbol{"EF14}}
- \expandafter\def\csname simpleicon@ibmwatsonicon\endcsname {\simpleiconsmap\symbol{"EF15}}
- \expandafter\def\csname simpleicon@icedicon\endcsname {\simpleiconsmap\symbol{"EF16}}
- \expandafter\def\csname simpleicon@icelandicon\endcsname {\simpleiconsmap\symbol{"EF17}}
- \expandafter\def\csname simpleicon@icicibankicon\endcsname {\simpleiconsmap\symbol{"EF18}}
- \expandafter\def\csname simpleicon@icingaicon\endcsname {\simpleiconsmap\symbol{"EF19}}
- \expandafter\def\csname simpleicon@icloudicon\endcsname {\simpleiconsmap\symbol{"EF1A}}
- \expandafter\def\csname simpleicon@icomoonicon\endcsname {\simpleiconsmap\symbol{"EF1B}}
- \expandafter\def\csname simpleicon@iconicon\endcsname {\simpleiconsmap\symbol{"EF1C}}
- \expandafter\def\csname simpleicon@iconfindericon\endcsname {\simpleiconsmap\symbol{"EF1D}}
- \expandafter\def\csname simpleicon@iconifyicon\endcsname {\simpleiconsmap\symbol{"EF1E}}
- \expandafter\def\csname simpleicon@iconjaricon\endcsname {\simpleiconsmap\symbol{"EF1F}}
- \expandafter\def\csname simpleicon@icons8icon\endcsname {\simpleiconsmap\symbol{"EF20}}
- \expandafter\def\csname simpleicon@icqicon\endcsname {\simpleiconsmap\symbol{"EF21}}
- \expandafter\def\csname simpleicon@ieeeicon\endcsname {\simpleiconsmap\symbol{"EF22}}
- \expandafter\def\csname simpleicon@ifixiticon\endcsname {\simpleiconsmap\symbol{"EF23}}
- \expandafter\def\csname simpleicon@ifoodicon\endcsname {\simpleiconsmap\symbol{"EF24}}
- \expandafter\def\csname simpleicon@ifttticon\endcsname {\simpleiconsmap\symbol{"EF25}}
- \expandafter\def\csname simpleicon@igdbicon\endcsname {\simpleiconsmap\symbol{"EF26}}
- \expandafter\def\csname simpleicon@ignicon\endcsname {\simpleiconsmap\symbol{"EF27}}
- \expandafter\def\csname simpleicon@iheartradioicon\endcsname {\simpleiconsmap\symbol{"EF28}}
- \expandafter\def\csname simpleicon@ikeaicon\endcsname {\simpleiconsmap\symbol{"EF29}}
- \expandafter\def\csname simpleicon@iledefrancemobilitesicon\endcsname {\simpleiconsmap\symbol{"EF2A}}
- \expandafter\def\csname simpleicon@imagedotscicon\endcsname {\simpleiconsmap\symbol{"EF2B}}
- \expandafter\def\csname simpleicon@imagejicon\endcsname {\simpleiconsmap\symbol{"EF2C}}
- \expandafter\def\csname simpleicon@imdbicon\endcsname {\simpleiconsmap\symbol{"EF2D}}
- \expandafter\def\csname simpleicon@imessageicon\endcsname {\simpleiconsmap\symbol{"EF2E}}
- \expandafter\def\csname simpleicon@imguricon\endcsname {\simpleiconsmap\symbol{"EF2F}}
- \expandafter\def\csname simpleicon@immericon\endcsname {\simpleiconsmap\symbol{"EF30}}
- \expandafter\def\csname simpleicon@immichicon\endcsname {\simpleiconsmap\symbol{"EF31}}
- \expandafter\def\csname simpleicon@imouicon\endcsname {\simpleiconsmap\symbol{"EF32}}
- \expandafter\def\csname simpleicon@improvmxicon\endcsname {\simpleiconsmap\symbol{"EF33}}
- \expandafter\def\csname simpleicon@indeedicon\endcsname {\simpleiconsmap\symbol{"EF34}}
- \expandafter\def\csname simpleicon@indiansuperleagueicon\endcsname {\simpleiconsmap\symbol{"EF35}}
- \expandafter\def\csname simpleicon@indiehackersicon\endcsname {\simpleiconsmap\symbol{"EF36}}
- \expandafter\def\csname simpleicon@indigoicon\endcsname {\simpleiconsmap\symbol{"EF37}}
- \expandafter\def\csname simpleicon@inertiaicon\endcsname {\simpleiconsmap\symbol{"EF38}}
- \expandafter\def\csname simpleicon@infinitiicon\endcsname {\simpleiconsmap\symbol{"EF39}}
- \expandafter\def\csname simpleicon@influxdbicon\endcsname {\simpleiconsmap\symbol{"EF3A}}
- \expandafter\def\csname simpleicon@infomaniakicon\endcsname {\simpleiconsmap\symbol{"EF3B}}
- \expandafter\def\csname simpleicon@infoqicon\endcsname {\simpleiconsmap\symbol{"EF3C}}
- \expandafter\def\csname simpleicon@informaticaicon\endcsname {\simpleiconsmap\symbol{"EF3D}}
- \expandafter\def\csname simpleicon@infosysicon\endcsname {\simpleiconsmap\symbol{"EF3E}}
- \expandafter\def\csname simpleicon@infracosticon\endcsname {\simpleiconsmap\symbol{"EF3F}}
- \expandafter\def\csname simpleicon@ingressicon\endcsname {\simpleiconsmap\symbol{"EF40}}
- \expandafter\def\csname simpleicon@inkdropicon\endcsname {\simpleiconsmap\symbol{"EF41}}
- \expandafter\def\csname simpleicon@inkscapeicon\endcsname {\simpleiconsmap\symbol{"EF42}}
- \expandafter\def\csname simpleicon@inoreadericon\endcsname {\simpleiconsmap\symbol{"EF43}}
- \expandafter\def\csname simpleicon@insomniaicon\endcsname {\simpleiconsmap\symbol{"EF44}}
- \expandafter\def\csname simpleicon@inspireicon\endcsname {\simpleiconsmap\symbol{"EF45}}
- \expandafter\def\csname simpleicon@insta360icon\endcsname {\simpleiconsmap\symbol{"EF46}}
- \expandafter\def\csname simpleicon@instacarticon\endcsname {\simpleiconsmap\symbol{"EF47}}
- \expandafter\def\csname simpleicon@instagramicon\endcsname {\simpleiconsmap\symbol{"EF48}}
- \expandafter\def\csname simpleicon@instapapericon\endcsname {\simpleiconsmap\symbol{"EF49}}
- \expandafter\def\csname simpleicon@instatusicon\endcsname {\simpleiconsmap\symbol{"EF4A}}
- \expandafter\def\csname simpleicon@instructablesicon\endcsname {\simpleiconsmap\symbol{"EF4B}}
- \expandafter\def\csname simpleicon@instructureicon\endcsname {\simpleiconsmap\symbol{"EF4C}}
- \expandafter\def\csname simpleicon@intelicon\endcsname {\simpleiconsmap\symbol{"EF4D}}
- \expandafter\def\csname simpleicon@intellijideaicon\endcsname {\simpleiconsmap\symbol{"EF4E}}
- \expandafter\def\csname simpleicon@interactiondesignfoundationicon\endcsname {\simpleiconsmap\symbol{"EF4F}}
- \expandafter\def\csname simpleicon@interactjsicon\endcsname {\simpleiconsmap\symbol{"EF50}}
- \expandafter\def\csname simpleicon@interbaseicon\endcsname {\simpleiconsmap\symbol{"EF51}}
- \expandafter\def\csname simpleicon@intercomicon\endcsname {\simpleiconsmap\symbol{"EF52}}
- \expandafter\def\csname simpleicon@intermarcheicon\endcsname {\simpleiconsmap\symbol{"EF53}}
- \expandafter\def\csname simpleicon@internetarchiveicon\endcsname {\simpleiconsmap\symbol{"EF54}}
- \expandafter\def\csname simpleicon@internetcomputericon\endcsname {\simpleiconsmap\symbol{"EF55}}
- \expandafter\def\csname simpleicon@internetexplorericon\endcsname {\simpleiconsmap\symbol{"EF56}}
- \expandafter\def\csname simpleicon@intigritiicon\endcsname {\simpleiconsmap\symbol{"EF57}}
- \expandafter\def\csname simpleicon@intuiticon\endcsname {\simpleiconsmap\symbol{"EF58}}
- \expandafter\def\csname simpleicon@invisionicon\endcsname {\simpleiconsmap\symbol{"EF59}}
- \expandafter\def\csname simpleicon@invoiceninjaicon\endcsname {\simpleiconsmap\symbol{"EF5A}}
- \expandafter\def\csname simpleicon@iobrokericon\endcsname {\simpleiconsmap\symbol{"EF5B}}
- \expandafter\def\csname simpleicon@ionicicon\endcsname {\simpleiconsmap\symbol{"EF5C}}
- \expandafter\def\csname simpleicon@ionosicon\endcsname {\simpleiconsmap\symbol{"EF5D}}
- \expandafter\def\csname simpleicon@iosicon\endcsname {\simpleiconsmap\symbol{"EF5E}}
- \expandafter\def\csname simpleicon@iotaicon\endcsname {\simpleiconsmap\symbol{"EF5F}}
- \expandafter\def\csname simpleicon@ipfsicon\endcsname {\simpleiconsmap\symbol{"EF60}}
- \expandafter\def\csname simpleicon@irisicon\endcsname {\simpleiconsmap\symbol{"EF61}}
- \expandafter\def\csname simpleicon@iroboticon\endcsname {\simpleiconsmap\symbol{"EF62}}
- \expandafter\def\csname simpleicon@isc2icon\endcsname {\simpleiconsmap\symbol{"EF63}}
- \expandafter\def\csname simpleicon@issuuicon\endcsname {\simpleiconsmap\symbol{"EF64}}
- \expandafter\def\csname simpleicon@istioicon\endcsname {\simpleiconsmap\symbol{"EF65}}
- \expandafter\def\csname simpleicon@itchdotioicon\endcsname {\simpleiconsmap\symbol{"EF66}}
- \expandafter\def\csname simpleicon@iterm2icon\endcsname {\simpleiconsmap\symbol{"EF67}}
- \expandafter\def\csname simpleicon@itunesicon\endcsname {\simpleiconsmap\symbol{"EF68}}
- \expandafter\def\csname simpleicon@itvxicon\endcsname {\simpleiconsmap\symbol{"EF69}}
- \expandafter\def\csname simpleicon@ivecoicon\endcsname {\simpleiconsmap\symbol{"EF6A}}
- \expandafter\def\csname simpleicon@jabbericon\endcsname {\simpleiconsmap\symbol{"EF6B}}
- \expandafter\def\csname simpleicon@jaegericon\endcsname {\simpleiconsmap\symbol{"EF6C}}
- \expandafter\def\csname simpleicon@jaguaricon\endcsname {\simpleiconsmap\symbol{"EF6D}}
- \expandafter\def\csname simpleicon@jamboardicon\endcsname {\simpleiconsmap\symbol{"EF6E}}
- \expandafter\def\csname simpleicon@jamesonicon\endcsname {\simpleiconsmap\symbol{"EF6F}}
- \expandafter\def\csname simpleicon@jamstackicon\endcsname {\simpleiconsmap\symbol{"EF70}}
- \expandafter\def\csname simpleicon@jasmineicon\endcsname {\simpleiconsmap\symbol{"EF71}}
- \expandafter\def\csname simpleicon@javascripticon\endcsname {\simpleiconsmap\symbol{"EF72}}
- \expandafter\def\csname simpleicon@jblicon\endcsname {\simpleiconsmap\symbol{"EF73}}
- \expandafter\def\csname simpleicon@jcbicon\endcsname {\simpleiconsmap\symbol{"EF74}}
- \expandafter\def\csname simpleicon@jeepicon\endcsname {\simpleiconsmap\symbol{"EF75}}
- \expandafter\def\csname simpleicon@jekyllicon\endcsname {\simpleiconsmap\symbol{"EF76}}
- \expandafter\def\csname simpleicon@jellyfinicon\endcsname {\simpleiconsmap\symbol{"EF77}}
- \expandafter\def\csname simpleicon@jenkinsicon\endcsname {\simpleiconsmap\symbol{"EF78}}
- \expandafter\def\csname simpleicon@jesticon\endcsname {\simpleiconsmap\symbol{"EF79}}
- \expandafter\def\csname simpleicon@jeticon\endcsname {\simpleiconsmap\symbol{"EF7A}}
- \expandafter\def\csname simpleicon@jetblueicon\endcsname {\simpleiconsmap\symbol{"EF7B}}
- \expandafter\def\csname simpleicon@jetbrainsicon\endcsname {\simpleiconsmap\symbol{"EF7C}}
- \expandafter\def\csname simpleicon@jetpackcomposeicon\endcsname {\simpleiconsmap\symbol{"EF7D}}
- \expandafter\def\csname simpleicon@jfrogicon\endcsname {\simpleiconsmap\symbol{"EF7E}}
- \expandafter\def\csname simpleicon@jfrogpipelinesicon\endcsname {\simpleiconsmap\symbol{"EF7F}}
- \expandafter\def\csname simpleicon@jhipstericon\endcsname {\simpleiconsmap\symbol{"EF80}}
- \expandafter\def\csname simpleicon@jinjaicon\endcsname {\simpleiconsmap\symbol{"EF81}}
- \expandafter\def\csname simpleicon@jiraicon\endcsname {\simpleiconsmap\symbol{"EF82}}
- \expandafter\def\csname simpleicon@jirasoftwareicon\endcsname {\simpleiconsmap\symbol{"EF83}}
- \expandafter\def\csname simpleicon@jitpackicon\endcsname {\simpleiconsmap\symbol{"EF84}}
- \expandafter\def\csname simpleicon@jitsiicon\endcsname {\simpleiconsmap\symbol{"EF85}}
- \expandafter\def\csname simpleicon@johndeereicon\endcsname {\simpleiconsmap\symbol{"EF86}}
- \expandafter\def\csname simpleicon@joomlaicon\endcsname {\simpleiconsmap\symbol{"EF87}}
- \expandafter\def\csname simpleicon@joplinicon\endcsname {\simpleiconsmap\symbol{"EF88}}
- \expandafter\def\csname simpleicon@jordanicon\endcsname {\simpleiconsmap\symbol{"EF89}}
- \expandafter\def\csname simpleicon@jouavicon\endcsname {\simpleiconsmap\symbol{"EF8A}}
- \expandafter\def\csname simpleicon@jovianicon\endcsname {\simpleiconsmap\symbol{"EF8B}}
- \expandafter\def\csname simpleicon@jpegicon\endcsname {\simpleiconsmap\symbol{"EF8C}}
- \expandafter\def\csname simpleicon@jqueryicon\endcsname {\simpleiconsmap\symbol{"EF8D}}
- \expandafter\def\csname simpleicon@jrgroupicon\endcsname {\simpleiconsmap\symbol{"EF8E}}
- \expandafter\def\csname simpleicon@jsdelivricon\endcsname {\simpleiconsmap\symbol{"EF8F}}
- \expandafter\def\csname simpleicon@jsfiddleicon\endcsname {\simpleiconsmap\symbol{"EF90}}
- \expandafter\def\csname simpleicon@jsonicon\endcsname {\simpleiconsmap\symbol{"EF91}}
- \expandafter\def\csname simpleicon@jsonwebtokensicon\endcsname {\simpleiconsmap\symbol{"EF92}}
- \expandafter\def\csname simpleicon@jsricon\endcsname {\simpleiconsmap\symbol{"EF93}}
- \expandafter\def\csname simpleicon@jssicon\endcsname {\simpleiconsmap\symbol{"EF94}}
- \expandafter\def\csname simpleicon@juceicon\endcsname {\simpleiconsmap\symbol{"EF95}}
- \expandafter\def\csname simpleicon@juejinicon\endcsname {\simpleiconsmap\symbol{"EF96}}
- \expandafter\def\csname simpleicon@jukeicon\endcsname {\simpleiconsmap\symbol{"EF97}}
- \expandafter\def\csname simpleicon@juliaicon\endcsname {\simpleiconsmap\symbol{"EF98}}
- \expandafter\def\csname simpleicon@junipernetworksicon\endcsname {\simpleiconsmap\symbol{"EF99}}
- \expandafter\def\csname simpleicon@junit5icon\endcsname {\simpleiconsmap\symbol{"EF9A}}
- \expandafter\def\csname simpleicon@jupytericon\endcsname {\simpleiconsmap\symbol{"EF9B}}
- \expandafter\def\csname simpleicon@justeaticon\endcsname {\simpleiconsmap\symbol{"EF9C}}
- \expandafter\def\csname simpleicon@justgivingicon\endcsname {\simpleiconsmap\symbol{"EF9D}}
- \expandafter\def\csname simpleicon@k3sicon\endcsname {\simpleiconsmap\symbol{"EF9E}}
- \expandafter\def\csname simpleicon@k6icon\endcsname {\simpleiconsmap\symbol{"EF9F}}
- \expandafter\def\csname simpleicon@kaggleicon\endcsname {\simpleiconsmap\symbol{"EFA0}}
- \expandafter\def\csname simpleicon@kagiicon\endcsname {\simpleiconsmap\symbol{"EFA1}}
- \expandafter\def\csname simpleicon@kahooticon\endcsname {\simpleiconsmap\symbol{"EFA2}}
- \expandafter\def\csname simpleicon@kaiosicon\endcsname {\simpleiconsmap\symbol{"EFA3}}
- \expandafter\def\csname simpleicon@kakaoicon\endcsname {\simpleiconsmap\symbol{"EFA4}}
- \expandafter\def\csname simpleicon@kakaotalkicon\endcsname {\simpleiconsmap\symbol{"EFA5}}
- \expandafter\def\csname simpleicon@kalilinuxicon\endcsname {\simpleiconsmap\symbol{"EFA6}}
- \expandafter\def\csname simpleicon@kamailioicon\endcsname {\simpleiconsmap\symbol{"EFA7}}
- \expandafter\def\csname simpleicon@kanikoicon\endcsname {\simpleiconsmap\symbol{"EFA8}}
- \expandafter\def\csname simpleicon@karlsruherverkehrsverbundicon\endcsname {\simpleiconsmap\symbol{"EFA9}}
- \expandafter\def\csname simpleicon@kasasmarticon\endcsname {\simpleiconsmap\symbol{"EFAA}}
- \expandafter\def\csname simpleicon@kashflowicon\endcsname {\simpleiconsmap\symbol{"EFAB}}
- \expandafter\def\csname simpleicon@kasperskyicon\endcsname {\simpleiconsmap\symbol{"EFAC}}
- \expandafter\def\csname simpleicon@katacodaicon\endcsname {\simpleiconsmap\symbol{"EFAD}}
- \expandafter\def\csname simpleicon@katanaicon\endcsname {\simpleiconsmap\symbol{"EFAE}}
- \expandafter\def\csname simpleicon@kauflandicon\endcsname {\simpleiconsmap\symbol{"EFAF}}
- \expandafter\def\csname simpleicon@kdeicon\endcsname {\simpleiconsmap\symbol{"EFB0}}
- \expandafter\def\csname simpleicon@kdenliveicon\endcsname {\simpleiconsmap\symbol{"EFB1}}
- \expandafter\def\csname simpleicon@kedroicon\endcsname {\simpleiconsmap\symbol{"EFB2}}
- \expandafter\def\csname simpleicon@keeneticicon\endcsname {\simpleiconsmap\symbol{"EFB3}}
- \expandafter\def\csname simpleicon@keepachangelogicon\endcsname {\simpleiconsmap\symbol{"EFB4}}
- \expandafter\def\csname simpleicon@keepassxcicon\endcsname {\simpleiconsmap\symbol{"EFB5}}
- \expandafter\def\csname simpleicon@kenticoicon\endcsname {\simpleiconsmap\symbol{"EFB6}}
- \expandafter\def\csname simpleicon@kerasicon\endcsname {\simpleiconsmap\symbol{"EFB7}}
- \expandafter\def\csname simpleicon@keybaseicon\endcsname {\simpleiconsmap\symbol{"EFB8}}
- \expandafter\def\csname simpleicon@keycdnicon\endcsname {\simpleiconsmap\symbol{"EFB9}}
- \expandafter\def\csname simpleicon@keycloakicon\endcsname {\simpleiconsmap\symbol{"EFBA}}
- \expandafter\def\csname simpleicon@keystoneicon\endcsname {\simpleiconsmap\symbol{"EFBB}}
- \expandafter\def\csname simpleicon@kfcicon\endcsname {\simpleiconsmap\symbol{"EFBC}}
- \expandafter\def\csname simpleicon@khanacademyicon\endcsname {\simpleiconsmap\symbol{"EFBD}}
- \expandafter\def\csname simpleicon@khronosgroupicon\endcsname {\simpleiconsmap\symbol{"EFBE}}
- \expandafter\def\csname simpleicon@kiaicon\endcsname {\simpleiconsmap\symbol{"EFBF}}
- \expandafter\def\csname simpleicon@kibanaicon\endcsname {\simpleiconsmap\symbol{"EFC0}}
- \expandafter\def\csname simpleicon@kicadicon\endcsname {\simpleiconsmap\symbol{"EFC1}}
- \expandafter\def\csname simpleicon@kickicon\endcsname {\simpleiconsmap\symbol{"EFC2}}
- \expandafter\def\csname simpleicon@kickstartericon\endcsname {\simpleiconsmap\symbol{"EFC3}}
- \expandafter\def\csname simpleicon@kikicon\endcsname {\simpleiconsmap\symbol{"EFC4}}
- \expandafter\def\csname simpleicon@kingstontechnologyicon\endcsname {\simpleiconsmap\symbol{"EFC5}}
- \expandafter\def\csname simpleicon@kinopoiskicon\endcsname {\simpleiconsmap\symbol{"EFC6}}
- \expandafter\def\csname simpleicon@kinstaicon\endcsname {\simpleiconsmap\symbol{"EFC7}}
- \expandafter\def\csname simpleicon@kirbyicon\endcsname {\simpleiconsmap\symbol{"EFC8}}
- \expandafter\def\csname simpleicon@kiticon\endcsname {\simpleiconsmap\symbol{"EFC9}}
- \expandafter\def\csname simpleicon@kitsuicon\endcsname {\simpleiconsmap\symbol{"EFCA}}
- \expandafter\def\csname simpleicon@klarnaicon\endcsname {\simpleiconsmap\symbol{"EFCB}}
- \expandafter\def\csname simpleicon@klmicon\endcsname {\simpleiconsmap\symbol{"EFCC}}
- \expandafter\def\csname simpleicon@klookicon\endcsname {\simpleiconsmap\symbol{"EFCD}}
- \expandafter\def\csname simpleicon@knativeicon\endcsname {\simpleiconsmap\symbol{"EFCE}}
- \expandafter\def\csname simpleicon@knexdotjsicon\endcsname {\simpleiconsmap\symbol{"EFCF}}
- \expandafter\def\csname simpleicon@knimeicon\endcsname {\simpleiconsmap\symbol{"EFD0}}
- \expandafter\def\csname simpleicon@knipicon\endcsname {\simpleiconsmap\symbol{"EFD1}}
- \expandafter\def\csname simpleicon@knowledgebaseicon\endcsname {\simpleiconsmap\symbol{"EFD2}}
- \expandafter\def\csname simpleicon@knownicon\endcsname {\simpleiconsmap\symbol{"EFD3}}
- \expandafter\def\csname simpleicon@koaicon\endcsname {\simpleiconsmap\symbol{"EFD4}}
- \expandafter\def\csname simpleicon@kocicon\endcsname {\simpleiconsmap\symbol{"EFD5}}
- \expandafter\def\csname simpleicon@kodakicon\endcsname {\simpleiconsmap\symbol{"EFD6}}
- \expandafter\def\csname simpleicon@kodiicon\endcsname {\simpleiconsmap\symbol{"EFD7}}
- \expandafter\def\csname simpleicon@kofaxicon\endcsname {\simpleiconsmap\symbol{"EFD8}}
- \expandafter\def\csname simpleicon@kofiicon\endcsname {\simpleiconsmap\symbol{"EFD9}}
- \expandafter\def\csname simpleicon@komooticon\endcsname {\simpleiconsmap\symbol{"EFDA}}
- \expandafter\def\csname simpleicon@konamiicon\endcsname {\simpleiconsmap\symbol{"EFDB}}
- \expandafter\def\csname simpleicon@kongicon\endcsname {\simpleiconsmap\symbol{"EFDC}}
- \expandafter\def\csname simpleicon@kongregateicon\endcsname {\simpleiconsmap\symbol{"EFDD}}
- \expandafter\def\csname simpleicon@konvaicon\endcsname {\simpleiconsmap\symbol{"EFDE}}
- \expandafter\def\csname simpleicon@kotlinicon\endcsname {\simpleiconsmap\symbol{"EFDF}}
- \expandafter\def\csname simpleicon@koyebicon\endcsname {\simpleiconsmap\symbol{"EFE0}}
- \expandafter\def\csname simpleicon@kritaicon\endcsname {\simpleiconsmap\symbol{"EFE1}}
- \expandafter\def\csname simpleicon@ktmicon\endcsname {\simpleiconsmap\symbol{"EFE2}}
- \expandafter\def\csname simpleicon@ktoricon\endcsname {\simpleiconsmap\symbol{"EFE3}}
- \expandafter\def\csname simpleicon@kuaishouicon\endcsname {\simpleiconsmap\symbol{"EFE4}}
- \expandafter\def\csname simpleicon@kubernetesicon\endcsname {\simpleiconsmap\symbol{"EFE5}}
- \expandafter\def\csname simpleicon@kubuntuicon\endcsname {\simpleiconsmap\symbol{"EFE6}}
- \expandafter\def\csname simpleicon@kucoinicon\endcsname {\simpleiconsmap\symbol{"EFE7}}
- \expandafter\def\csname simpleicon@kumaicon\endcsname {\simpleiconsmap\symbol{"EFE8}}
- \expandafter\def\csname simpleicon@kununuicon\endcsname {\simpleiconsmap\symbol{"EFE9}}
- \expandafter\def\csname simpleicon@kuulaicon\endcsname {\simpleiconsmap\symbol{"EFEA}}
- \expandafter\def\csname simpleicon@kxicon\endcsname {\simpleiconsmap\symbol{"EFEB}}
- \expandafter\def\csname simpleicon@kyoceraicon\endcsname {\simpleiconsmap\symbol{"EFEC}}
- \expandafter\def\csname simpleicon@labviewicon\endcsname {\simpleiconsmap\symbol{"EFED}}
- \expandafter\def\csname simpleicon@ladaicon\endcsname {\simpleiconsmap\symbol{"EFEE}}
- \expandafter\def\csname simpleicon@lamborghiniicon\endcsname {\simpleiconsmap\symbol{"EFEF}}
- \expandafter\def\csname simpleicon@landrovericon\endcsname {\simpleiconsmap\symbol{"EFF0}}
- \expandafter\def\csname simpleicon@langchainicon\endcsname {\simpleiconsmap\symbol{"EFF1}}
- \expandafter\def\csname simpleicon@lapceicon\endcsname {\simpleiconsmap\symbol{"EFF2}}
- \expandafter\def\csname simpleicon@laragonicon\endcsname {\simpleiconsmap\symbol{"EFF3}}
- \expandafter\def\csname simpleicon@laravelicon\endcsname {\simpleiconsmap\symbol{"EFF4}}
- \expandafter\def\csname simpleicon@laravelhorizonicon\endcsname {\simpleiconsmap\symbol{"EFF5}}
- \expandafter\def\csname simpleicon@laravelnovaicon\endcsname {\simpleiconsmap\symbol{"EFF6}}
- \expandafter\def\csname simpleicon@lastdotfmicon\endcsname {\simpleiconsmap\symbol{"EFF7}}
- \expandafter\def\csname simpleicon@lastpassicon\endcsname {\simpleiconsmap\symbol{"EFF8}}
- \expandafter\def\csname simpleicon@latexicon\endcsname {\simpleiconsmap\symbol{"EFF9}}
- \expandafter\def\csname simpleicon@launchpadicon\endcsname {\simpleiconsmap\symbol{"EFFA}}
- \expandafter\def\csname simpleicon@lazarusicon\endcsname {\simpleiconsmap\symbol{"EFFB}}
- \expandafter\def\csname simpleicon@lazyvimicon\endcsname {\simpleiconsmap\symbol{"EFFC}}
- \expandafter\def\csname simpleicon@lbryicon\endcsname {\simpleiconsmap\symbol{"EFFD}}
- \expandafter\def\csname simpleicon@leaderpriceicon\endcsname {\simpleiconsmap\symbol{"EFFE}}
- \expandafter\def\csname simpleicon@leafleticon\endcsname {\simpleiconsmap\symbol{"EFFF}}
- \expandafter\def\csname simpleicon@leagueoflegendsicon\endcsname {\simpleiconsmap\symbol{"F000}}
- \expandafter\def\csname simpleicon@leanpubicon\endcsname {\simpleiconsmap\symbol{"F001}}
- \expandafter\def\csname simpleicon@leetcodeicon\endcsname {\simpleiconsmap\symbol{"F002}}
- \expandafter\def\csname simpleicon@legacygamesicon\endcsname {\simpleiconsmap\symbol{"F003}}
- \expandafter\def\csname simpleicon@leicaicon\endcsname {\simpleiconsmap\symbol{"F004}}
- \expandafter\def\csname simpleicon@lemmyicon\endcsname {\simpleiconsmap\symbol{"F005}}
- \expandafter\def\csname simpleicon@lemonsqueezyicon\endcsname {\simpleiconsmap\symbol{"F006}}
- \expandafter\def\csname simpleicon@lenovoicon\endcsname {\simpleiconsmap\symbol{"F007}}
- \expandafter\def\csname simpleicon@lensicon\endcsname {\simpleiconsmap\symbol{"F008}}
- \expandafter\def\csname simpleicon@leptosicon\endcsname {\simpleiconsmap\symbol{"F009}}
- \expandafter\def\csname simpleicon@lequipeicon\endcsname {\simpleiconsmap\symbol{"F00A}}
- \expandafter\def\csname simpleicon@lernaicon\endcsname {\simpleiconsmap\symbol{"F00B}}
- \expandafter\def\csname simpleicon@leroymerlinicon\endcsname {\simpleiconsmap\symbol{"F00C}}
- \expandafter\def\csname simpleicon@leslibrairesicon\endcsname {\simpleiconsmap\symbol{"F00D}}
- \expandafter\def\csname simpleicon@lessicon\endcsname {\simpleiconsmap\symbol{"F00E}}
- \expandafter\def\csname simpleicon@letsencrypticon\endcsname {\simpleiconsmap\symbol{"F00F}}
- \expandafter\def\csname simpleicon@letterboxdicon\endcsname {\simpleiconsmap\symbol{"F010}}
- \expandafter\def\csname simpleicon@levelsdotfyiicon\endcsname {\simpleiconsmap\symbol{"F011}}
- \expandafter\def\csname simpleicon@lgicon\endcsname {\simpleiconsmap\symbol{"F012}}
- \expandafter\def\csname simpleicon@liberadotchaticon\endcsname {\simpleiconsmap\symbol{"F013}}
- \expandafter\def\csname simpleicon@liberapayicon\endcsname {\simpleiconsmap\symbol{"F014}}
- \expandafter\def\csname simpleicon@librariesdotioicon\endcsname {\simpleiconsmap\symbol{"F015}}
- \expandafter\def\csname simpleicon@librarythingicon\endcsname {\simpleiconsmap\symbol{"F016}}
- \expandafter\def\csname simpleicon@libreofficeicon\endcsname {\simpleiconsmap\symbol{"F017}}
- \expandafter\def\csname simpleicon@libreofficebaseicon\endcsname {\simpleiconsmap\symbol{"F018}}
- \expandafter\def\csname simpleicon@libreofficecalcicon\endcsname {\simpleiconsmap\symbol{"F019}}
- \expandafter\def\csname simpleicon@libreofficedrawicon\endcsname {\simpleiconsmap\symbol{"F01A}}
- \expandafter\def\csname simpleicon@libreofficeimpressicon\endcsname {\simpleiconsmap\symbol{"F01B}}
- \expandafter\def\csname simpleicon@libreofficemathicon\endcsname {\simpleiconsmap\symbol{"F01C}}
- \expandafter\def\csname simpleicon@libreofficewritericon\endcsname {\simpleiconsmap\symbol{"F01D}}
- \expandafter\def\csname simpleicon@libuvicon\endcsname {\simpleiconsmap\symbol{"F01E}}
- \expandafter\def\csname simpleicon@lichessicon\endcsname {\simpleiconsmap\symbol{"F01F}}
- \expandafter\def\csname simpleicon@lidlicon\endcsname {\simpleiconsmap\symbol{"F020}}
- \expandafter\def\csname simpleicon@lifxicon\endcsname {\simpleiconsmap\symbol{"F021}}
- \expandafter\def\csname simpleicon@lightburnicon\endcsname {\simpleiconsmap\symbol{"F022}}
- \expandafter\def\csname simpleicon@lighthouseicon\endcsname {\simpleiconsmap\symbol{"F023}}
- \expandafter\def\csname simpleicon@lightningicon\endcsname {\simpleiconsmap\symbol{"F024}}
- \expandafter\def\csname simpleicon@limesurveyicon\endcsname {\simpleiconsmap\symbol{"F025}}
- \expandafter\def\csname simpleicon@lineicon\endcsname {\simpleiconsmap\symbol{"F026}}
- \expandafter\def\csname simpleicon@lineageosicon\endcsname {\simpleiconsmap\symbol{"F027}}
- \expandafter\def\csname simpleicon@linearicon\endcsname {\simpleiconsmap\symbol{"F028}}
- \expandafter\def\csname simpleicon@liningicon\endcsname {\simpleiconsmap\symbol{"F029}}
- \expandafter\def\csname simpleicon@linkedinicon\endcsname {\simpleiconsmap\symbol{"F02A}}
- \expandafter\def\csname simpleicon@linkerdicon\endcsname {\simpleiconsmap\symbol{"F02B}}
- \expandafter\def\csname simpleicon@linkfireicon\endcsname {\simpleiconsmap\symbol{"F02C}}
- \expandafter\def\csname simpleicon@linksysicon\endcsname {\simpleiconsmap\symbol{"F02D}}
- \expandafter\def\csname simpleicon@linktreeicon\endcsname {\simpleiconsmap\symbol{"F02E}}
- \expandafter\def\csname simpleicon@lintcodeicon\endcsname {\simpleiconsmap\symbol{"F02F}}
- \expandafter\def\csname simpleicon@linuxicon\endcsname {\simpleiconsmap\symbol{"F030}}
- \expandafter\def\csname simpleicon@linuxcontainersicon\endcsname {\simpleiconsmap\symbol{"F031}}
- \expandafter\def\csname simpleicon@linuxfoundationicon\endcsname {\simpleiconsmap\symbol{"F032}}
- \expandafter\def\csname simpleicon@linuxminticon\endcsname {\simpleiconsmap\symbol{"F033}}
- \expandafter\def\csname simpleicon@linuxprofessionalinstituteicon\endcsname {\simpleiconsmap\symbol{"F034}}
- \expandafter\def\csname simpleicon@linuxservericon\endcsname {\simpleiconsmap\symbol{"F035}}
- \expandafter\def\csname simpleicon@lionairicon\endcsname {\simpleiconsmap\symbol{"F036}}
- \expandafter\def\csname simpleicon@liquibaseicon\endcsname {\simpleiconsmap\symbol{"F037}}
- \expandafter\def\csname simpleicon@listmonkicon\endcsname {\simpleiconsmap\symbol{"F038}}
- \expandafter\def\csname simpleicon@liticon\endcsname {\simpleiconsmap\symbol{"F039}}
- \expandafter\def\csname simpleicon@litecoinicon\endcsname {\simpleiconsmap\symbol{"F03A}}
- \expandafter\def\csname simpleicon@litiengineicon\endcsname {\simpleiconsmap\symbol{"F03B}}
- \expandafter\def\csname simpleicon@livechaticon\endcsname {\simpleiconsmap\symbol{"F03C}}
- \expandafter\def\csname simpleicon@livejournalicon\endcsname {\simpleiconsmap\symbol{"F03D}}
- \expandafter\def\csname simpleicon@livewireicon\endcsname {\simpleiconsmap\symbol{"F03E}}
- \expandafter\def\csname simpleicon@llvmicon\endcsname {\simpleiconsmap\symbol{"F03F}}
- \expandafter\def\csname simpleicon@lmmsicon\endcsname {\simpleiconsmap\symbol{"F040}}
- \expandafter\def\csname simpleicon@localicon\endcsname {\simpleiconsmap\symbol{"F041}}
- \expandafter\def\csname simpleicon@lodashicon\endcsname {\simpleiconsmap\symbol{"F042}}
- \expandafter\def\csname simpleicon@logitechicon\endcsname {\simpleiconsmap\symbol{"F043}}
- \expandafter\def\csname simpleicon@logitechgicon\endcsname {\simpleiconsmap\symbol{"F044}}
- \expandafter\def\csname simpleicon@logmeinicon\endcsname {\simpleiconsmap\symbol{"F045}}
- \expandafter\def\csname simpleicon@logseqicon\endcsname {\simpleiconsmap\symbol{"F046}}
- \expandafter\def\csname simpleicon@logstashicon\endcsname {\simpleiconsmap\symbol{"F047}}
- \expandafter\def\csname simpleicon@lookericon\endcsname {\simpleiconsmap\symbol{"F048}}
- \expandafter\def\csname simpleicon@loomicon\endcsname {\simpleiconsmap\symbol{"F049}}
- \expandafter\def\csname simpleicon@loopicon\endcsname {\simpleiconsmap\symbol{"F04A}}
- \expandafter\def\csname simpleicon@loopbackicon\endcsname {\simpleiconsmap\symbol{"F04B}}
- \expandafter\def\csname simpleicon@lootcrateicon\endcsname {\simpleiconsmap\symbol{"F04C}}
- \expandafter\def\csname simpleicon@lospecicon\endcsname {\simpleiconsmap\symbol{"F04D}}
- \expandafter\def\csname simpleicon@lotpolishairlinesicon\endcsname {\simpleiconsmap\symbol{"F04E}}
- \expandafter\def\csname simpleicon@ltspiceicon\endcsname {\simpleiconsmap\symbol{"F04F}}
- \expandafter\def\csname simpleicon@luaicon\endcsname {\simpleiconsmap\symbol{"F050}}
- \expandafter\def\csname simpleicon@lubuntuicon\endcsname {\simpleiconsmap\symbol{"F051}}
- \expandafter\def\csname simpleicon@luciaicon\endcsname {\simpleiconsmap\symbol{"F052}}
- \expandafter\def\csname simpleicon@lucidicon\endcsname {\simpleiconsmap\symbol{"F053}}
- \expandafter\def\csname simpleicon@ludwigicon\endcsname {\simpleiconsmap\symbol{"F054}}
- \expandafter\def\csname simpleicon@lufthansaicon\endcsname {\simpleiconsmap\symbol{"F055}}
- \expandafter\def\csname simpleicon@lumenicon\endcsname {\simpleiconsmap\symbol{"F056}}
- \expandafter\def\csname simpleicon@lunacyicon\endcsname {\simpleiconsmap\symbol{"F057}}
- \expandafter\def\csname simpleicon@lutrisicon\endcsname {\simpleiconsmap\symbol{"F058}}
- \expandafter\def\csname simpleicon@lydiaicon\endcsname {\simpleiconsmap\symbol{"F059}}
- \expandafter\def\csname simpleicon@lyfticon\endcsname {\simpleiconsmap\symbol{"F05A}}
- \expandafter\def\csname simpleicon@maasicon\endcsname {\simpleiconsmap\symbol{"F05B}}
- \expandafter\def\csname simpleicon@macosicon\endcsname {\simpleiconsmap\symbol{"F05C}}
- \expandafter\def\csname simpleicon@macpawicon\endcsname {\simpleiconsmap\symbol{"F05D}}
- \expandafter\def\csname simpleicon@macysicon\endcsname {\simpleiconsmap\symbol{"F05E}}
- \expandafter\def\csname simpleicon@magasinsuicon\endcsname {\simpleiconsmap\symbol{"F05F}}
- \expandafter\def\csname simpleicon@magentoicon\endcsname {\simpleiconsmap\symbol{"F060}}
- \expandafter\def\csname simpleicon@magicicon\endcsname {\simpleiconsmap\symbol{"F061}}
- \expandafter\def\csname simpleicon@magiskicon\endcsname {\simpleiconsmap\symbol{"F062}}
- \expandafter\def\csname simpleicon@mahindraicon\endcsname {\simpleiconsmap\symbol{"F063}}
- \expandafter\def\csname simpleicon@mailchimpicon\endcsname {\simpleiconsmap\symbol{"F064}}
- \expandafter\def\csname simpleicon@maildotcomicon\endcsname {\simpleiconsmap\symbol{"F065}}
- \expandafter\def\csname simpleicon@maildotruicon\endcsname {\simpleiconsmap\symbol{"F066}}
- \expandafter\def\csname simpleicon@mailgunicon\endcsname {\simpleiconsmap\symbol{"F067}}
- \expandafter\def\csname simpleicon@mailtrapicon\endcsname {\simpleiconsmap\symbol{"F068}}
- \expandafter\def\csname simpleicon@mainwpicon\endcsname {\simpleiconsmap\symbol{"F069}}
- \expandafter\def\csname simpleicon@majorleaguehackingicon\endcsname {\simpleiconsmap\symbol{"F06A}}
- \expandafter\def\csname simpleicon@makeicon\endcsname {\simpleiconsmap\symbol{"F06B}}
- \expandafter\def\csname simpleicon@makerboticon\endcsname {\simpleiconsmap\symbol{"F06C}}
- \expandafter\def\csname simpleicon@malticon\endcsname {\simpleiconsmap\symbol{"F06D}}
- \expandafter\def\csname simpleicon@malwarebytesicon\endcsname {\simpleiconsmap\symbol{"F06E}}
- \expandafter\def\csname simpleicon@mambauiicon\endcsname {\simpleiconsmap\symbol{"F06F}}
- \expandafter\def\csname simpleicon@mampicon\endcsname {\simpleiconsmap\symbol{"F070}}
- \expandafter\def\csname simpleicon@manicon\endcsname {\simpleiconsmap\symbol{"F071}}
- \expandafter\def\csname simpleicon@manageiqicon\endcsname {\simpleiconsmap\symbol{"F072}}
- \expandafter\def\csname simpleicon@manjaroicon\endcsname {\simpleiconsmap\symbol{"F073}}
- \expandafter\def\csname simpleicon@mantineicon\endcsname {\simpleiconsmap\symbol{"F074}}
- \expandafter\def\csname simpleicon@mapboxicon\endcsname {\simpleiconsmap\symbol{"F075}}
- \expandafter\def\csname simpleicon@maplibreicon\endcsname {\simpleiconsmap\symbol{"F076}}
- \expandafter\def\csname simpleicon@mariadbicon\endcsname {\simpleiconsmap\symbol{"F077}}
- \expandafter\def\csname simpleicon@mariadbfoundationicon\endcsname {\simpleiconsmap\symbol{"F078}}
- \expandafter\def\csname simpleicon@markdownicon\endcsname {\simpleiconsmap\symbol{"F079}}
- \expandafter\def\csname simpleicon@marketoicon\endcsname {\simpleiconsmap\symbol{"F07A}}
- \expandafter\def\csname simpleicon@markoicon\endcsname {\simpleiconsmap\symbol{"F07B}}
- \expandafter\def\csname simpleicon@marriotticon\endcsname {\simpleiconsmap\symbol{"F07C}}
- \expandafter\def\csname simpleicon@marvelappicon\endcsname {\simpleiconsmap\symbol{"F07D}}
- \expandafter\def\csname simpleicon@maseratiicon\endcsname {\simpleiconsmap\symbol{"F07E}}
- \expandafter\def\csname simpleicon@mastercardicon\endcsname {\simpleiconsmap\symbol{"F07F}}
- \expandafter\def\csname simpleicon@mastercomfigicon\endcsname {\simpleiconsmap\symbol{"F080}}
- \expandafter\def\csname simpleicon@mastodonicon\endcsname {\simpleiconsmap\symbol{"F081}}
- \expandafter\def\csname simpleicon@materialdesignicon\endcsname {\simpleiconsmap\symbol{"F082}}
- \expandafter\def\csname simpleicon@materialdesigniconsicon\endcsname {\simpleiconsmap\symbol{"F083}}
- \expandafter\def\csname simpleicon@materialformkdocsicon\endcsname {\simpleiconsmap\symbol{"F084}}
- \expandafter\def\csname simpleicon@matillionicon\endcsname {\simpleiconsmap\symbol{"F085}}
- \expandafter\def\csname simpleicon@matomoicon\endcsname {\simpleiconsmap\symbol{"F086}}
- \expandafter\def\csname simpleicon@matrixicon\endcsname {\simpleiconsmap\symbol{"F087}}
- \expandafter\def\csname simpleicon@matterdotjsicon\endcsname {\simpleiconsmap\symbol{"F088}}
- \expandafter\def\csname simpleicon@mattermosticon\endcsname {\simpleiconsmap\symbol{"F089}}
- \expandafter\def\csname simpleicon@matterneticon\endcsname {\simpleiconsmap\symbol{"F08A}}
- \expandafter\def\csname simpleicon@mauticicon\endcsname {\simpleiconsmap\symbol{"F08B}}
- \expandafter\def\csname simpleicon@maxicon\endcsname {\simpleiconsmap\symbol{"F08C}}
- \expandafter\def\csname simpleicon@maxplanckgesellschafticon\endcsname {\simpleiconsmap\symbol{"F08D}}
- \expandafter\def\csname simpleicon@maytagicon\endcsname {\simpleiconsmap\symbol{"F08E}}
- \expandafter\def\csname simpleicon@mazdaicon\endcsname {\simpleiconsmap\symbol{"F08F}}
- \expandafter\def\csname simpleicon@mcafeeicon\endcsname {\simpleiconsmap\symbol{"F090}}
- \expandafter\def\csname simpleicon@mcdonaldsicon\endcsname {\simpleiconsmap\symbol{"F091}}
- \expandafter\def\csname simpleicon@mclarenicon\endcsname {\simpleiconsmap\symbol{"F092}}
- \expandafter\def\csname simpleicon@mdbookicon\endcsname {\simpleiconsmap\symbol{"F093}}
- \expandafter\def\csname simpleicon@mdnwebdocsicon\endcsname {\simpleiconsmap\symbol{"F094}}
- \expandafter\def\csname simpleicon@mdxicon\endcsname {\simpleiconsmap\symbol{"F095}}
- \expandafter\def\csname simpleicon@mediafireicon\endcsname {\simpleiconsmap\symbol{"F096}}
- \expandafter\def\csname simpleicon@mediamarkticon\endcsname {\simpleiconsmap\symbol{"F097}}
- \expandafter\def\csname simpleicon@mediatekicon\endcsname {\simpleiconsmap\symbol{"F098}}
- \expandafter\def\csname simpleicon@medibangpainticon\endcsname {\simpleiconsmap\symbol{"F099}}
- \expandafter\def\csname simpleicon@mediumicon\endcsname {\simpleiconsmap\symbol{"F09A}}
- \expandafter\def\csname simpleicon@medusaicon\endcsname {\simpleiconsmap\symbol{"F09B}}
- \expandafter\def\csname simpleicon@meetupicon\endcsname {\simpleiconsmap\symbol{"F09C}}
- \expandafter\def\csname simpleicon@megaicon\endcsname {\simpleiconsmap\symbol{"F09D}}
- \expandafter\def\csname simpleicon@meilisearchicon\endcsname {\simpleiconsmap\symbol{"F09E}}
- \expandafter\def\csname simpleicon@meituanicon\endcsname {\simpleiconsmap\symbol{"F09F}}
- \expandafter\def\csname simpleicon@meizuicon\endcsname {\simpleiconsmap\symbol{"F0A0}}
- \expandafter\def\csname simpleicon@mendeleyicon\endcsname {\simpleiconsmap\symbol{"F0A1}}
- \expandafter\def\csname simpleicon@mentorcruiseicon\endcsname {\simpleiconsmap\symbol{"F0A2}}
- \expandafter\def\csname simpleicon@mercadopagoicon\endcsname {\simpleiconsmap\symbol{"F0A3}}
- \expandafter\def\csname simpleicon@mercedesicon\endcsname {\simpleiconsmap\symbol{"F0A4}}
- \expandafter\def\csname simpleicon@merckicon\endcsname {\simpleiconsmap\symbol{"F0A5}}
- \expandafter\def\csname simpleicon@mercurialicon\endcsname {\simpleiconsmap\symbol{"F0A6}}
- \expandafter\def\csname simpleicon@mermaidicon\endcsname {\simpleiconsmap\symbol{"F0A7}}
- \expandafter\def\csname simpleicon@messengericon\endcsname {\simpleiconsmap\symbol{"F0A8}}
- \expandafter\def\csname simpleicon@metaicon\endcsname {\simpleiconsmap\symbol{"F0A9}}
- \expandafter\def\csname simpleicon@metabaseicon\endcsname {\simpleiconsmap\symbol{"F0AA}}
- \expandafter\def\csname simpleicon@metacriticicon\endcsname {\simpleiconsmap\symbol{"F0AB}}
- \expandafter\def\csname simpleicon@metafiltericon\endcsname {\simpleiconsmap\symbol{"F0AC}}
- \expandafter\def\csname simpleicon@metasploiticon\endcsname {\simpleiconsmap\symbol{"F0AD}}
- \expandafter\def\csname simpleicon@meteoricon\endcsname {\simpleiconsmap\symbol{"F0AE}}
- \expandafter\def\csname simpleicon@metroicon\endcsname {\simpleiconsmap\symbol{"F0AF}}
- \expandafter\def\csname simpleicon@metrodelaciudaddemexicoicon\endcsname {\simpleiconsmap\symbol{"F0B0}}
- \expandafter\def\csname simpleicon@metrodemadridicon\endcsname {\simpleiconsmap\symbol{"F0B1}}
- \expandafter\def\csname simpleicon@metrodeparisicon\endcsname {\simpleiconsmap\symbol{"F0B2}}
- \expandafter\def\csname simpleicon@meweicon\endcsname {\simpleiconsmap\symbol{"F0B3}}
- \expandafter\def\csname simpleicon@mgicon\endcsname {\simpleiconsmap\symbol{"F0B4}}
- \expandafter\def\csname simpleicon@microbiticon\endcsname {\simpleiconsmap\symbol{"F0B5}}
- \expandafter\def\csname simpleicon@microdotblogicon\endcsname {\simpleiconsmap\symbol{"F0B6}}
- \expandafter\def\csname simpleicon@microeditoricon\endcsname {\simpleiconsmap\symbol{"F0B7}}
- \expandafter\def\csname simpleicon@microgeneticsicon\endcsname {\simpleiconsmap\symbol{"F0B8}}
- \expandafter\def\csname simpleicon@micropythonicon\endcsname {\simpleiconsmap\symbol{"F0B9}}
- \expandafter\def\csname simpleicon@microsofticon\endcsname {\simpleiconsmap\symbol{"F0BA}}
- \expandafter\def\csname simpleicon@microsoftacademicicon\endcsname {\simpleiconsmap\symbol{"F0BB}}
- \expandafter\def\csname simpleicon@microsoftaccessicon\endcsname {\simpleiconsmap\symbol{"F0BC}}
- \expandafter\def\csname simpleicon@microsoftazureicon\endcsname {\simpleiconsmap\symbol{"F0BD}}
- \expandafter\def\csname simpleicon@microsoftbingicon\endcsname {\simpleiconsmap\symbol{"F0BE}}
- \expandafter\def\csname simpleicon@microsoftedgeicon\endcsname {\simpleiconsmap\symbol{"F0BF}}
- \expandafter\def\csname simpleicon@microsoftexcelicon\endcsname {\simpleiconsmap\symbol{"F0C0}}
- \expandafter\def\csname simpleicon@microsoftexchangeicon\endcsname {\simpleiconsmap\symbol{"F0C1}}
- \expandafter\def\csname simpleicon@microsoftonedriveicon\endcsname {\simpleiconsmap\symbol{"F0C2}}
- \expandafter\def\csname simpleicon@microsoftonenoteicon\endcsname {\simpleiconsmap\symbol{"F0C3}}
- \expandafter\def\csname simpleicon@microsoftoutlookicon\endcsname {\simpleiconsmap\symbol{"F0C4}}
- \expandafter\def\csname simpleicon@microsoftpowerpointicon\endcsname {\simpleiconsmap\symbol{"F0C5}}
- \expandafter\def\csname simpleicon@microsoftsharepointicon\endcsname {\simpleiconsmap\symbol{"F0C6}}
- \expandafter\def\csname simpleicon@microsoftsqlservericon\endcsname {\simpleiconsmap\symbol{"F0C7}}
- \expandafter\def\csname simpleicon@microsoftstoreicon\endcsname {\simpleiconsmap\symbol{"F0C8}}
- \expandafter\def\csname simpleicon@microsoftteamsicon\endcsname {\simpleiconsmap\symbol{"F0C9}}
- \expandafter\def\csname simpleicon@microsofttranslatoricon\endcsname {\simpleiconsmap\symbol{"F0CA}}
- \expandafter\def\csname simpleicon@microsoftvisioicon\endcsname {\simpleiconsmap\symbol{"F0CB}}
- \expandafter\def\csname simpleicon@microsoftwordicon\endcsname {\simpleiconsmap\symbol{"F0CC}}
- \expandafter\def\csname simpleicon@microstationicon\endcsname {\simpleiconsmap\symbol{"F0CD}}
- \expandafter\def\csname simpleicon@microstrategyicon\endcsname {\simpleiconsmap\symbol{"F0CE}}
- \expandafter\def\csname simpleicon@midiicon\endcsname {\simpleiconsmap\symbol{"F0CF}}
- \expandafter\def\csname simpleicon@migaduicon\endcsname {\simpleiconsmap\symbol{"F0D0}}
- \expandafter\def\csname simpleicon@mikrotikicon\endcsname {\simpleiconsmap\symbol{"F0D1}}
- \expandafter\def\csname simpleicon@milanoteicon\endcsname {\simpleiconsmap\symbol{"F0D2}}
- \expandafter\def\csname simpleicon@milvusicon\endcsname {\simpleiconsmap\symbol{"F0D3}}
- \expandafter\def\csname simpleicon@mindsicon\endcsname {\simpleiconsmap\symbol{"F0D4}}
- \expandafter\def\csname simpleicon@minecrafticon\endcsname {\simpleiconsmap\symbol{"F0D5}}
- \expandafter\def\csname simpleicon@minetesticon\endcsname {\simpleiconsmap\symbol{"F0D6}}
- \expandafter\def\csname simpleicon@miniicon\endcsname {\simpleiconsmap\symbol{"F0D7}}
- \expandafter\def\csname simpleicon@minioicon\endcsname {\simpleiconsmap\symbol{"F0D8}}
- \expandafter\def\csname simpleicon@minutemailericon\endcsname {\simpleiconsmap\symbol{"F0D9}}
- \expandafter\def\csname simpleicon@mirahezeicon\endcsname {\simpleiconsmap\symbol{"F0DA}}
- \expandafter\def\csname simpleicon@miroicon\endcsname {\simpleiconsmap\symbol{"F0DB}}
- \expandafter\def\csname simpleicon@misskeyicon\endcsname {\simpleiconsmap\symbol{"F0DC}}
- \expandafter\def\csname simpleicon@mitsubishiicon\endcsname {\simpleiconsmap\symbol{"F0DD}}
- \expandafter\def\csname simpleicon@mixicon\endcsname {\simpleiconsmap\symbol{"F0DE}}
- \expandafter\def\csname simpleicon@mixcloudicon\endcsname {\simpleiconsmap\symbol{"F0DF}}
- \expandafter\def\csname simpleicon@mixpanelicon\endcsname {\simpleiconsmap\symbol{"F0E0}}
- \expandafter\def\csname simpleicon@mlbicon\endcsname {\simpleiconsmap\symbol{"F0E1}}
- \expandafter\def\csname simpleicon@mlflowicon\endcsname {\simpleiconsmap\symbol{"F0E2}}
- \expandafter\def\csname simpleicon@mobxicon\endcsname {\simpleiconsmap\symbol{"F0E3}}
- \expandafter\def\csname simpleicon@mobxstatetreeicon\endcsname {\simpleiconsmap\symbol{"F0E4}}
- \expandafter\def\csname simpleicon@mochaicon\endcsname {\simpleiconsmap\symbol{"F0E5}}
- \expandafter\def\csname simpleicon@mockserviceworkericon\endcsname {\simpleiconsmap\symbol{"F0E6}}
- \expandafter\def\csname simpleicon@modalicon\endcsname {\simpleiconsmap\symbol{"F0E7}}
- \expandafter\def\csname simpleicon@modinicon\endcsname {\simpleiconsmap\symbol{"F0E8}}
- \expandafter\def\csname simpleicon@modrinthicon\endcsname {\simpleiconsmap\symbol{"F0E9}}
- \expandafter\def\csname simpleicon@modxicon\endcsname {\simpleiconsmap\symbol{"F0EA}}
- \expandafter\def\csname simpleicon@mojangstudiosicon\endcsname {\simpleiconsmap\symbol{"F0EB}}
- \expandafter\def\csname simpleicon@moleculericon\endcsname {\simpleiconsmap\symbol{"F0EC}}
- \expandafter\def\csname simpleicon@momenteoicon\endcsname {\simpleiconsmap\symbol{"F0ED}}
- \expandafter\def\csname simpleicon@moneroicon\endcsname {\simpleiconsmap\symbol{"F0EE}}
- \expandafter\def\csname simpleicon@moneygramicon\endcsname {\simpleiconsmap\symbol{"F0EF}}
- \expandafter\def\csname simpleicon@mongodbicon\endcsname {\simpleiconsmap\symbol{"F0F0}}
- \expandafter\def\csname simpleicon@mongooseicon\endcsname {\simpleiconsmap\symbol{"F0F1}}
- \expandafter\def\csname simpleicon@mongoosedotwsicon\endcsname {\simpleiconsmap\symbol{"F0F2}}
- \expandafter\def\csname simpleicon@monicaicon\endcsname {\simpleiconsmap\symbol{"F0F3}}
- \expandafter\def\csname simpleicon@monkeytieicon\endcsname {\simpleiconsmap\symbol{"F0F4}}
- \expandafter\def\csname simpleicon@monkeytypeicon\endcsname {\simpleiconsmap\symbol{"F0F5}}
- \expandafter\def\csname simpleicon@monogameicon\endcsname {\simpleiconsmap\symbol{"F0F6}}
- \expandafter\def\csname simpleicon@monoprixicon\endcsname {\simpleiconsmap\symbol{"F0F7}}
- \expandafter\def\csname simpleicon@monstericon\endcsname {\simpleiconsmap\symbol{"F0F8}}
- \expandafter\def\csname simpleicon@monzoicon\endcsname {\simpleiconsmap\symbol{"F0F9}}
- \expandafter\def\csname simpleicon@mooicon\endcsname {\simpleiconsmap\symbol{"F0FA}}
- \expandafter\def\csname simpleicon@moodleicon\endcsname {\simpleiconsmap\symbol{"F0FB}}
- \expandafter\def\csname simpleicon@moonrepoicon\endcsname {\simpleiconsmap\symbol{"F0FC}}
- \expandafter\def\csname simpleicon@moqupsicon\endcsname {\simpleiconsmap\symbol{"F0FD}}
- \expandafter\def\csname simpleicon@morrisonsicon\endcsname {\simpleiconsmap\symbol{"F0FE}}
- \expandafter\def\csname simpleicon@moscowmetroicon\endcsname {\simpleiconsmap\symbol{"F0FF}}
- \expandafter\def\csname simpleicon@motorolaicon\endcsname {\simpleiconsmap\symbol{"F100}}
- \expandafter\def\csname simpleicon@mozillaicon\endcsname {\simpleiconsmap\symbol{"F101}}
- \expandafter\def\csname simpleicon@mpvicon\endcsname {\simpleiconsmap\symbol{"F102}}
- \expandafter\def\csname simpleicon@mqtticon\endcsname {\simpleiconsmap\symbol{"F103}}
- \expandafter\def\csname simpleicon@msiicon\endcsname {\simpleiconsmap\symbol{"F104}}
- \expandafter\def\csname simpleicon@msibusinessicon\endcsname {\simpleiconsmap\symbol{"F105}}
- \expandafter\def\csname simpleicon@mtaicon\endcsname {\simpleiconsmap\symbol{"F106}}
- \expandafter\def\csname simpleicon@mtricon\endcsname {\simpleiconsmap\symbol{"F107}}
- \expandafter\def\csname simpleicon@mubiicon\endcsname {\simpleiconsmap\symbol{"F108}}
- \expandafter\def\csname simpleicon@muiicon\endcsname {\simpleiconsmap\symbol{"F109}}
- \expandafter\def\csname simpleicon@mulesofticon\endcsname {\simpleiconsmap\symbol{"F10A}}
- \expandafter\def\csname simpleicon@mullericon\endcsname {\simpleiconsmap\symbol{"F10B}}
- \expandafter\def\csname simpleicon@multisimicon\endcsname {\simpleiconsmap\symbol{"F10C}}
- \expandafter\def\csname simpleicon@mumbleicon\endcsname {\simpleiconsmap\symbol{"F10D}}
- \expandafter\def\csname simpleicon@muoicon\endcsname {\simpleiconsmap\symbol{"F10E}}
- \expandafter\def\csname simpleicon@muralicon\endcsname {\simpleiconsmap\symbol{"F10F}}
- \expandafter\def\csname simpleicon@musescoreicon\endcsname {\simpleiconsmap\symbol{"F110}}
- \expandafter\def\csname simpleicon@musicbrainzicon\endcsname {\simpleiconsmap\symbol{"F111}}
- \expandafter\def\csname simpleicon@mxlinuxicon\endcsname {\simpleiconsmap\symbol{"F112}}
- \expandafter\def\csname simpleicon@myanimelisticon\endcsname {\simpleiconsmap\symbol{"F113}}
- \expandafter\def\csname simpleicon@mygeticon\endcsname {\simpleiconsmap\symbol{"F114}}
- \expandafter\def\csname simpleicon@myobicon\endcsname {\simpleiconsmap\symbol{"F115}}
- \expandafter\def\csname simpleicon@myspaceicon\endcsname {\simpleiconsmap\symbol{"F116}}
- \expandafter\def\csname simpleicon@mysqlicon\endcsname {\simpleiconsmap\symbol{"F117}}
- \expandafter\def\csname simpleicon@n26icon\endcsname {\simpleiconsmap\symbol{"F118}}
- \expandafter\def\csname simpleicon@n8nicon\endcsname {\simpleiconsmap\symbol{"F119}}
- \expandafter\def\csname simpleicon@namebaseicon\endcsname {\simpleiconsmap\symbol{"F11A}}
- \expandafter\def\csname simpleicon@namecheapicon\endcsname {\simpleiconsmap\symbol{"F11B}}
- \expandafter\def\csname simpleicon@namemcicon\endcsname {\simpleiconsmap\symbol{"F11C}}
- \expandafter\def\csname simpleicon@namesiloicon\endcsname {\simpleiconsmap\symbol{"F11D}}
- \expandafter\def\csname simpleicon@namuwikiicon\endcsname {\simpleiconsmap\symbol{"F11E}}
- \expandafter\def\csname simpleicon@nanoicon\endcsname {\simpleiconsmap\symbol{"F11F}}
- \expandafter\def\csname simpleicon@nasaicon\endcsname {\simpleiconsmap\symbol{"F120}}
- \expandafter\def\csname simpleicon@nationalgridicon\endcsname {\simpleiconsmap\symbol{"F121}}
- \expandafter\def\csname simpleicon@nationalrailicon\endcsname {\simpleiconsmap\symbol{"F122}}
- \expandafter\def\csname simpleicon@nativescripticon\endcsname {\simpleiconsmap\symbol{"F123}}
- \expandafter\def\csname simpleicon@natsdotioicon\endcsname {\simpleiconsmap\symbol{"F124}}
- \expandafter\def\csname simpleicon@navericon\endcsname {\simpleiconsmap\symbol{"F125}}
- \expandafter\def\csname simpleicon@nbaicon\endcsname {\simpleiconsmap\symbol{"F126}}
- \expandafter\def\csname simpleicon@nbbicon\endcsname {\simpleiconsmap\symbol{"F127}}
- \expandafter\def\csname simpleicon@nbcicon\endcsname {\simpleiconsmap\symbol{"F128}}
- \expandafter\def\csname simpleicon@ndricon\endcsname {\simpleiconsmap\symbol{"F129}}
- \expandafter\def\csname simpleicon@nearicon\endcsname {\simpleiconsmap\symbol{"F12A}}
- \expandafter\def\csname simpleicon@necicon\endcsname {\simpleiconsmap\symbol{"F12B}}
- \expandafter\def\csname simpleicon@neo4jicon\endcsname {\simpleiconsmap\symbol{"F12C}}
- \expandafter\def\csname simpleicon@neovimicon\endcsname {\simpleiconsmap\symbol{"F12D}}
- \expandafter\def\csname simpleicon@neptuneicon\endcsname {\simpleiconsmap\symbol{"F12E}}
- \expandafter\def\csname simpleicon@nestjsicon\endcsname {\simpleiconsmap\symbol{"F12F}}
- \expandafter\def\csname simpleicon@netappicon\endcsname {\simpleiconsmap\symbol{"F130}}
- \expandafter\def\csname simpleicon@netbsdicon\endcsname {\simpleiconsmap\symbol{"F131}}
- \expandafter\def\csname simpleicon@netcupicon\endcsname {\simpleiconsmap\symbol{"F132}}
- \expandafter\def\csname simpleicon@netdataicon\endcsname {\simpleiconsmap\symbol{"F133}}
- \expandafter\def\csname simpleicon@neteasecloudmusicicon\endcsname {\simpleiconsmap\symbol{"F134}}
- \expandafter\def\csname simpleicon@netflixicon\endcsname {\simpleiconsmap\symbol{"F135}}
- \expandafter\def\csname simpleicon@netgearicon\endcsname {\simpleiconsmap\symbol{"F136}}
- \expandafter\def\csname simpleicon@netlifyicon\endcsname {\simpleiconsmap\symbol{"F137}}
- \expandafter\def\csname simpleicon@netteicon\endcsname {\simpleiconsmap\symbol{"F138}}
- \expandafter\def\csname simpleicon@nettoicon\endcsname {\simpleiconsmap\symbol{"F139}}
- \expandafter\def\csname simpleicon@neutralinojsicon\endcsname {\simpleiconsmap\symbol{"F13A}}
- \expandafter\def\csname simpleicon@newbalanceicon\endcsname {\simpleiconsmap\symbol{"F13B}}
- \expandafter\def\csname simpleicon@neweggicon\endcsname {\simpleiconsmap\symbol{"F13C}}
- \expandafter\def\csname simpleicon@newjapanprowrestlingicon\endcsname {\simpleiconsmap\symbol{"F13D}}
- \expandafter\def\csname simpleicon@newrelicicon\endcsname {\simpleiconsmap\symbol{"F13E}}
- \expandafter\def\csname simpleicon@newyorktimesicon\endcsname {\simpleiconsmap\symbol{"F13F}}
- \expandafter\def\csname simpleicon@nextbilliondotaiicon\endcsname {\simpleiconsmap\symbol{"F140}}
- \expandafter\def\csname simpleicon@nextcloudicon\endcsname {\simpleiconsmap\symbol{"F141}}
- \expandafter\def\csname simpleicon@nextdnsicon\endcsname {\simpleiconsmap\symbol{"F142}}
- \expandafter\def\csname simpleicon@nextdooricon\endcsname {\simpleiconsmap\symbol{"F143}}
- \expandafter\def\csname simpleicon@nextdotjsicon\endcsname {\simpleiconsmap\symbol{"F144}}
- \expandafter\def\csname simpleicon@nextraicon\endcsname {\simpleiconsmap\symbol{"F145}}
- \expandafter\def\csname simpleicon@nextuiicon\endcsname {\simpleiconsmap\symbol{"F146}}
- \expandafter\def\csname simpleicon@nexusmodsicon\endcsname {\simpleiconsmap\symbol{"F147}}
- \expandafter\def\csname simpleicon@nfcicon\endcsname {\simpleiconsmap\symbol{"F148}}
- \expandafter\def\csname simpleicon@nginxicon\endcsname {\simpleiconsmap\symbol{"F149}}
- \expandafter\def\csname simpleicon@nginxproxymanagericon\endcsname {\simpleiconsmap\symbol{"F14A}}
- \expandafter\def\csname simpleicon@ngrokicon\endcsname {\simpleiconsmap\symbol{"F14B}}
- \expandafter\def\csname simpleicon@ngrxicon\endcsname {\simpleiconsmap\symbol{"F14C}}
- \expandafter\def\csname simpleicon@nhlicon\endcsname {\simpleiconsmap\symbol{"F14D}}
- \expandafter\def\csname simpleicon@nicehashicon\endcsname {\simpleiconsmap\symbol{"F14E}}
- \expandafter\def\csname simpleicon@niconicoicon\endcsname {\simpleiconsmap\symbol{"F14F}}
- \expandafter\def\csname simpleicon@nikeicon\endcsname {\simpleiconsmap\symbol{"F150}}
- \expandafter\def\csname simpleicon@nikonicon\endcsname {\simpleiconsmap\symbol{"F151}}
- \expandafter\def\csname simpleicon@nimicon\endcsname {\simpleiconsmap\symbol{"F152}}
- \expandafter\def\csname simpleicon@nintendoicon\endcsname {\simpleiconsmap\symbol{"F153}}
- \expandafter\def\csname simpleicon@nintendo3dsicon\endcsname {\simpleiconsmap\symbol{"F154}}
- \expandafter\def\csname simpleicon@nintendogamecubeicon\endcsname {\simpleiconsmap\symbol{"F155}}
- \expandafter\def\csname simpleicon@nintendoswitchicon\endcsname {\simpleiconsmap\symbol{"F156}}
- \expandafter\def\csname simpleicon@nissanicon\endcsname {\simpleiconsmap\symbol{"F157}}
- \expandafter\def\csname simpleicon@nixosicon\endcsname {\simpleiconsmap\symbol{"F158}}
- \expandafter\def\csname simpleicon@nodedotjsicon\endcsname {\simpleiconsmap\symbol{"F159}}
- \expandafter\def\csname simpleicon@nodemonicon\endcsname {\simpleiconsmap\symbol{"F15A}}
- \expandafter\def\csname simpleicon@noderedicon\endcsname {\simpleiconsmap\symbol{"F15B}}
- \expandafter\def\csname simpleicon@nokiaicon\endcsname {\simpleiconsmap\symbol{"F15C}}
- \expandafter\def\csname simpleicon@nomadicon\endcsname {\simpleiconsmap\symbol{"F15D}}
- \expandafter\def\csname simpleicon@norcoicon\endcsname {\simpleiconsmap\symbol{"F15E}}
- \expandafter\def\csname simpleicon@nordicsemiconductoricon\endcsname {\simpleiconsmap\symbol{"F15F}}
- \expandafter\def\csname simpleicon@nordvpnicon\endcsname {\simpleiconsmap\symbol{"F160}}
- \expandafter\def\csname simpleicon@normalizedotcssicon\endcsname {\simpleiconsmap\symbol{"F161}}
- \expandafter\def\csname simpleicon@nortonicon\endcsname {\simpleiconsmap\symbol{"F162}}
- \expandafter\def\csname simpleicon@norwegianicon\endcsname {\simpleiconsmap\symbol{"F163}}
- \expandafter\def\csname simpleicon@notepadplusplusicon\endcsname {\simpleiconsmap\symbol{"F164}}
- \expandafter\def\csname simpleicon@notionicon\endcsname {\simpleiconsmap\symbol{"F165}}
- \expandafter\def\csname simpleicon@notisticon\endcsname {\simpleiconsmap\symbol{"F166}}
- \expandafter\def\csname simpleicon@nounprojecticon\endcsname {\simpleiconsmap\symbol{"F167}}
- \expandafter\def\csname simpleicon@novuicon\endcsname {\simpleiconsmap\symbol{"F168}}
- \expandafter\def\csname simpleicon@nowicon\endcsname {\simpleiconsmap\symbol{"F169}}
- \expandafter\def\csname simpleicon@npmicon\endcsname {\simpleiconsmap\symbol{"F16A}}
- \expandafter\def\csname simpleicon@nrwlicon\endcsname {\simpleiconsmap\symbol{"F16B}}
- \expandafter\def\csname simpleicon@nsisicon\endcsname {\simpleiconsmap\symbol{"F16C}}
- \expandafter\def\csname simpleicon@ntfyicon\endcsname {\simpleiconsmap\symbol{"F16D}}
- \expandafter\def\csname simpleicon@nubankicon\endcsname {\simpleiconsmap\symbol{"F16E}}
- \expandafter\def\csname simpleicon@nucleoicon\endcsname {\simpleiconsmap\symbol{"F16F}}
- \expandafter\def\csname simpleicon@nugeticon\endcsname {\simpleiconsmap\symbol{"F170}}
- \expandafter\def\csname simpleicon@nukeicon\endcsname {\simpleiconsmap\symbol{"F171}}
- \expandafter\def\csname simpleicon@numbaicon\endcsname {\simpleiconsmap\symbol{"F172}}
- \expandafter\def\csname simpleicon@numpyicon\endcsname {\simpleiconsmap\symbol{"F173}}
- \expandafter\def\csname simpleicon@nunjucksicon\endcsname {\simpleiconsmap\symbol{"F174}}
- \expandafter\def\csname simpleicon@nushellicon\endcsname {\simpleiconsmap\symbol{"F175}}
- \expandafter\def\csname simpleicon@nutanixicon\endcsname {\simpleiconsmap\symbol{"F176}}
- \expandafter\def\csname simpleicon@nuxtdotjsicon\endcsname {\simpleiconsmap\symbol{"F177}}
- \expandafter\def\csname simpleicon@nvidiaicon\endcsname {\simpleiconsmap\symbol{"F178}}
- \expandafter\def\csname simpleicon@nvmicon\endcsname {\simpleiconsmap\symbol{"F179}}
- \expandafter\def\csname simpleicon@nxicon\endcsname {\simpleiconsmap\symbol{"F17A}}
- \expandafter\def\csname simpleicon@nxpicon\endcsname {\simpleiconsmap\symbol{"F17B}}
- \expandafter\def\csname simpleicon@nzxticon\endcsname {\simpleiconsmap\symbol{"F17C}}
- \expandafter\def\csname simpleicon@observableicon\endcsname {\simpleiconsmap\symbol{"F17D}}
- \expandafter\def\csname simpleicon@obsidianicon\endcsname {\simpleiconsmap\symbol{"F17E}}
- \expandafter\def\csname simpleicon@obsstudioicon\endcsname {\simpleiconsmap\symbol{"F17F}}
- \expandafter\def\csname simpleicon@ocamlicon\endcsname {\simpleiconsmap\symbol{"F180}}
- \expandafter\def\csname simpleicon@oclificon\endcsname {\simpleiconsmap\symbol{"F181}}
- \expandafter\def\csname simpleicon@octanerendericon\endcsname {\simpleiconsmap\symbol{"F182}}
- \expandafter\def\csname simpleicon@octaveicon\endcsname {\simpleiconsmap\symbol{"F183}}
- \expandafter\def\csname simpleicon@octobercmsicon\endcsname {\simpleiconsmap\symbol{"F184}}
- \expandafter\def\csname simpleicon@octoprinticon\endcsname {\simpleiconsmap\symbol{"F185}}
- \expandafter\def\csname simpleicon@octopusdeployicon\endcsname {\simpleiconsmap\symbol{"F186}}
- \expandafter\def\csname simpleicon@oculusicon\endcsname {\simpleiconsmap\symbol{"F187}}
- \expandafter\def\csname simpleicon@odnoklassnikiicon\endcsname {\simpleiconsmap\symbol{"F188}}
- \expandafter\def\csname simpleicon@odooicon\endcsname {\simpleiconsmap\symbol{"F189}}
- \expandafter\def\csname simpleicon@odyseeicon\endcsname {\simpleiconsmap\symbol{"F18A}}
- \expandafter\def\csname simpleicon@ohdearicon\endcsname {\simpleiconsmap\symbol{"F18B}}
- \expandafter\def\csname simpleicon@okcupidicon\endcsname {\simpleiconsmap\symbol{"F18C}}
- \expandafter\def\csname simpleicon@oktaicon\endcsname {\simpleiconsmap\symbol{"F18D}}
- \expandafter\def\csname simpleicon@oneplusicon\endcsname {\simpleiconsmap\symbol{"F18E}}
- \expandafter\def\csname simpleicon@onlyfansicon\endcsname {\simpleiconsmap\symbol{"F18F}}
- \expandafter\def\csname simpleicon@onlyofficeicon\endcsname {\simpleiconsmap\symbol{"F190}}
- \expandafter\def\csname simpleicon@onnxicon\endcsname {\simpleiconsmap\symbol{"F191}}
- \expandafter\def\csname simpleicon@onstaricon\endcsname {\simpleiconsmap\symbol{"F192}}
- \expandafter\def\csname simpleicon@opelicon\endcsname {\simpleiconsmap\symbol{"F193}}
- \expandafter\def\csname simpleicon@openaccessicon\endcsname {\simpleiconsmap\symbol{"F194}}
- \expandafter\def\csname simpleicon@openaiicon\endcsname {\simpleiconsmap\symbol{"F195}}
- \expandafter\def\csname simpleicon@openaigymicon\endcsname {\simpleiconsmap\symbol{"F196}}
- \expandafter\def\csname simpleicon@openapiinitiativeicon\endcsname {\simpleiconsmap\symbol{"F197}}
- \expandafter\def\csname simpleicon@openbadgesicon\endcsname {\simpleiconsmap\symbol{"F198}}
- \expandafter\def\csname simpleicon@openbsdicon\endcsname {\simpleiconsmap\symbol{"F199}}
- \expandafter\def\csname simpleicon@openbugbountyicon\endcsname {\simpleiconsmap\symbol{"F19A}}
- \expandafter\def\csname simpleicon@opencollectiveicon\endcsname {\simpleiconsmap\symbol{"F19B}}
- \expandafter\def\csname simpleicon@opencontainersinitiativeicon\endcsname {\simpleiconsmap\symbol{"F19C}}
- \expandafter\def\csname simpleicon@opencvicon\endcsname {\simpleiconsmap\symbol{"F19D}}
- \expandafter\def\csname simpleicon@openfaasicon\endcsname {\simpleiconsmap\symbol{"F19E}}
- \expandafter\def\csname simpleicon@openglicon\endcsname {\simpleiconsmap\symbol{"F19F}}
- \expandafter\def\csname simpleicon@openhabicon\endcsname {\simpleiconsmap\symbol{"F1A0}}
- \expandafter\def\csname simpleicon@openidicon\endcsname {\simpleiconsmap\symbol{"F1A1}}
- \expandafter\def\csname simpleicon@openjdkicon\endcsname {\simpleiconsmap\symbol{"F1A2}}
- \expandafter\def\csname simpleicon@openjsfoundationicon\endcsname {\simpleiconsmap\symbol{"F1A3}}
- \expandafter\def\csname simpleicon@openlayersicon\endcsname {\simpleiconsmap\symbol{"F1A4}}
- \expandafter\def\csname simpleicon@openmediavaulticon\endcsname {\simpleiconsmap\symbol{"F1A5}}
- \expandafter\def\csname simpleicon@openminedicon\endcsname {\simpleiconsmap\symbol{"F1A6}}
- \expandafter\def\csname simpleicon@opennebulaicon\endcsname {\simpleiconsmap\symbol{"F1A7}}
- \expandafter\def\csname simpleicon@openprojecticon\endcsname {\simpleiconsmap\symbol{"F1A8}}
- \expandafter\def\csname simpleicon@openscadicon\endcsname {\simpleiconsmap\symbol{"F1A9}}
- \expandafter\def\csname simpleicon@openseaicon\endcsname {\simpleiconsmap\symbol{"F1AA}}
- \expandafter\def\csname simpleicon@opensearchicon\endcsname {\simpleiconsmap\symbol{"F1AB}}
- \expandafter\def\csname simpleicon@opensourcehardwareicon\endcsname {\simpleiconsmap\symbol{"F1AC}}
- \expandafter\def\csname simpleicon@opensourceinitiativeicon\endcsname {\simpleiconsmap\symbol{"F1AD}}
- \expandafter\def\csname simpleicon@opensslicon\endcsname {\simpleiconsmap\symbol{"F1AE}}
- \expandafter\def\csname simpleicon@openstackicon\endcsname {\simpleiconsmap\symbol{"F1AF}}
- \expandafter\def\csname simpleicon@openstreetmapicon\endcsname {\simpleiconsmap\symbol{"F1B0}}
- \expandafter\def\csname simpleicon@opensuseicon\endcsname {\simpleiconsmap\symbol{"F1B1}}
- \expandafter\def\csname simpleicon@opentelemetryicon\endcsname {\simpleiconsmap\symbol{"F1B2}}
- \expandafter\def\csname simpleicon@opentexticon\endcsname {\simpleiconsmap\symbol{"F1B3}}
- \expandafter\def\csname simpleicon@opentofuicon\endcsname {\simpleiconsmap\symbol{"F1B4}}
- \expandafter\def\csname simpleicon@openverseicon\endcsname {\simpleiconsmap\symbol{"F1B5}}
- \expandafter\def\csname simpleicon@openvpnicon\endcsname {\simpleiconsmap\symbol{"F1B6}}
- \expandafter\def\csname simpleicon@openwrticon\endcsname {\simpleiconsmap\symbol{"F1B7}}
- \expandafter\def\csname simpleicon@openzeppelinicon\endcsname {\simpleiconsmap\symbol{"F1B8}}
- \expandafter\def\csname simpleicon@openzfsicon\endcsname {\simpleiconsmap\symbol{"F1B9}}
- \expandafter\def\csname simpleicon@operaicon\endcsname {\simpleiconsmap\symbol{"F1BA}}
- \expandafter\def\csname simpleicon@operagxicon\endcsname {\simpleiconsmap\symbol{"F1BB}}
- \expandafter\def\csname simpleicon@opnsenseicon\endcsname {\simpleiconsmap\symbol{"F1BC}}
- \expandafter\def\csname simpleicon@oppoicon\endcsname {\simpleiconsmap\symbol{"F1BD}}
- \expandafter\def\csname simpleicon@opsgenieicon\endcsname {\simpleiconsmap\symbol{"F1BE}}
- \expandafter\def\csname simpleicon@opslevelicon\endcsname {\simpleiconsmap\symbol{"F1BF}}
- \expandafter\def\csname simpleicon@optimismicon\endcsname {\simpleiconsmap\symbol{"F1C0}}
- \expandafter\def\csname simpleicon@oracleicon\endcsname {\simpleiconsmap\symbol{"F1C1}}
- \expandafter\def\csname simpleicon@orangeicon\endcsname {\simpleiconsmap\symbol{"F1C2}}
- \expandafter\def\csname simpleicon@orcidicon\endcsname {\simpleiconsmap\symbol{"F1C3}}
- \expandafter\def\csname simpleicon@oreillyicon\endcsname {\simpleiconsmap\symbol{"F1C4}}
- \expandafter\def\csname simpleicon@orgicon\endcsname {\simpleiconsmap\symbol{"F1C5}}
- \expandafter\def\csname simpleicon@originicon\endcsname {\simpleiconsmap\symbol{"F1C6}}
- \expandafter\def\csname simpleicon@osanoicon\endcsname {\simpleiconsmap\symbol{"F1C7}}
- \expandafter\def\csname simpleicon@osficon\endcsname {\simpleiconsmap\symbol{"F1C8}}
- \expandafter\def\csname simpleicon@osgeoicon\endcsname {\simpleiconsmap\symbol{"F1C9}}
- \expandafter\def\csname simpleicon@oshkoshicon\endcsname {\simpleiconsmap\symbol{"F1CA}}
- \expandafter\def\csname simpleicon@osmcicon\endcsname {\simpleiconsmap\symbol{"F1CB}}
- \expandafter\def\csname simpleicon@osuicon\endcsname {\simpleiconsmap\symbol{"F1CC}}
- \expandafter\def\csname simpleicon@ottoicon\endcsname {\simpleiconsmap\symbol{"F1CD}}
- \expandafter\def\csname simpleicon@overcasticon\endcsname {\simpleiconsmap\symbol{"F1CE}}
- \expandafter\def\csname simpleicon@overleaficon\endcsname {\simpleiconsmap\symbol{"F1CF}}
- \expandafter\def\csname simpleicon@ovhicon\endcsname {\simpleiconsmap\symbol{"F1D0}}
- \expandafter\def\csname simpleicon@owaspicon\endcsname {\simpleiconsmap\symbol{"F1D1}}
- \expandafter\def\csname simpleicon@owncloudicon\endcsname {\simpleiconsmap\symbol{"F1D2}}
- \expandafter\def\csname simpleicon@oxygenicon\endcsname {\simpleiconsmap\symbol{"F1D3}}
- \expandafter\def\csname simpleicon@oyoicon\endcsname {\simpleiconsmap\symbol{"F1D4}}
- \expandafter\def\csname simpleicon@p5dotjsicon\endcsname {\simpleiconsmap\symbol{"F1D5}}
- \expandafter\def\csname simpleicon@packagisticon\endcsname {\simpleiconsmap\symbol{"F1D6}}
- \expandafter\def\csname simpleicon@packericon\endcsname {\simpleiconsmap\symbol{"F1D7}}
- \expandafter\def\csname simpleicon@packticon\endcsname {\simpleiconsmap\symbol{"F1D8}}
- \expandafter\def\csname simpleicon@paddleicon\endcsname {\simpleiconsmap\symbol{"F1D9}}
- \expandafter\def\csname simpleicon@paddlepaddleicon\endcsname {\simpleiconsmap\symbol{"F1DA}}
- \expandafter\def\csname simpleicon@paddypowericon\endcsname {\simpleiconsmap\symbol{"F1DB}}
- \expandafter\def\csname simpleicon@pagekiticon\endcsname {\simpleiconsmap\symbol{"F1DC}}
- \expandafter\def\csname simpleicon@pagerdutyicon\endcsname {\simpleiconsmap\symbol{"F1DD}}
- \expandafter\def\csname simpleicon@pagespeedinsightsicon\endcsname {\simpleiconsmap\symbol{"F1DE}}
- \expandafter\def\csname simpleicon@pagseguroicon\endcsname {\simpleiconsmap\symbol{"F1DF}}
- \expandafter\def\csname simpleicon@palantiricon\endcsname {\simpleiconsmap\symbol{"F1E0}}
- \expandafter\def\csname simpleicon@paloaltonetworksicon\endcsname {\simpleiconsmap\symbol{"F1E1}}
- \expandafter\def\csname simpleicon@paloaltosoftwareicon\endcsname {\simpleiconsmap\symbol{"F1E2}}
- \expandafter\def\csname simpleicon@panasonicicon\endcsname {\simpleiconsmap\symbol{"F1E3}}
- \expandafter\def\csname simpleicon@pandasicon\endcsname {\simpleiconsmap\symbol{"F1E4}}
- \expandafter\def\csname simpleicon@pandoraicon\endcsname {\simpleiconsmap\symbol{"F1E5}}
- \expandafter\def\csname simpleicon@pantheonicon\endcsname {\simpleiconsmap\symbol{"F1E6}}
- \expandafter\def\csname simpleicon@paperlessngxicon\endcsname {\simpleiconsmap\symbol{"F1E7}}
- \expandafter\def\csname simpleicon@paperspaceicon\endcsname {\simpleiconsmap\symbol{"F1E8}}
- \expandafter\def\csname simpleicon@paperswithcodeicon\endcsname {\simpleiconsmap\symbol{"F1E9}}
- \expandafter\def\csname simpleicon@paramountplusicon\endcsname {\simpleiconsmap\symbol{"F1EA}}
- \expandafter\def\csname simpleicon@paritysubstrateicon\endcsname {\simpleiconsmap\symbol{"F1EB}}
- \expandafter\def\csname simpleicon@parrotsecurityicon\endcsname {\simpleiconsmap\symbol{"F1EC}}
- \expandafter\def\csname simpleicon@parsedotlyicon\endcsname {\simpleiconsmap\symbol{"F1ED}}
- \expandafter\def\csname simpleicon@passporticon\endcsname {\simpleiconsmap\symbol{"F1EE}}
- \expandafter\def\csname simpleicon@pastebinicon\endcsname {\simpleiconsmap\symbol{"F1EF}}
- \expandafter\def\csname simpleicon@patreonicon\endcsname {\simpleiconsmap\symbol{"F1F0}}
- \expandafter\def\csname simpleicon@paychexicon\endcsname {\simpleiconsmap\symbol{"F1F1}}
- \expandafter\def\csname simpleicon@payhipicon\endcsname {\simpleiconsmap\symbol{"F1F2}}
- \expandafter\def\csname simpleicon@payloadcmsicon\endcsname {\simpleiconsmap\symbol{"F1F3}}
- \expandafter\def\csname simpleicon@payoneericon\endcsname {\simpleiconsmap\symbol{"F1F4}}
- \expandafter\def\csname simpleicon@paypalicon\endcsname {\simpleiconsmap\symbol{"F1F5}}
- \expandafter\def\csname simpleicon@paytmicon\endcsname {\simpleiconsmap\symbol{"F1F6}}
- \expandafter\def\csname simpleicon@pcgamingwikiicon\endcsname {\simpleiconsmap\symbol{"F1F7}}
- \expandafter\def\csname simpleicon@pdmicon\endcsname {\simpleiconsmap\symbol{"F1F8}}
- \expandafter\def\csname simpleicon@pdqicon\endcsname {\simpleiconsmap\symbol{"F1F9}}
- \expandafter\def\csname simpleicon@peakdesignicon\endcsname {\simpleiconsmap\symbol{"F1FA}}
- \expandafter\def\csname simpleicon@pearsonicon\endcsname {\simpleiconsmap\symbol{"F1FB}}
- \expandafter\def\csname simpleicon@peerlisticon\endcsname {\simpleiconsmap\symbol{"F1FC}}
- \expandafter\def\csname simpleicon@peertubeicon\endcsname {\simpleiconsmap\symbol{"F1FD}}
- \expandafter\def\csname simpleicon@pegasusairlinesicon\endcsname {\simpleiconsmap\symbol{"F1FE}}
- \expandafter\def\csname simpleicon@pelicanicon\endcsname {\simpleiconsmap\symbol{"F1FF}}
- \expandafter\def\csname simpleicon@pelotonicon\endcsname {\simpleiconsmap\symbol{"F200}}
- \expandafter\def\csname simpleicon@pennyicon\endcsname {\simpleiconsmap\symbol{"F201}}
- \expandafter\def\csname simpleicon@penpoticon\endcsname {\simpleiconsmap\symbol{"F202}}
- \expandafter\def\csname simpleicon@percyicon\endcsname {\simpleiconsmap\symbol{"F203}}
- \expandafter\def\csname simpleicon@perforceicon\endcsname {\simpleiconsmap\symbol{"F204}}
- \expandafter\def\csname simpleicon@perlicon\endcsname {\simpleiconsmap\symbol{"F205}}
- \expandafter\def\csname simpleicon@perplexityicon\endcsname {\simpleiconsmap\symbol{"F206}}
- \expandafter\def\csname simpleicon@persistenticon\endcsname {\simpleiconsmap\symbol{"F207}}
- \expandafter\def\csname simpleicon@personioicon\endcsname {\simpleiconsmap\symbol{"F208}}
- \expandafter\def\csname simpleicon@petsathomeicon\endcsname {\simpleiconsmap\symbol{"F209}}
- \expandafter\def\csname simpleicon@peugeoticon\endcsname {\simpleiconsmap\symbol{"F20A}}
- \expandafter\def\csname simpleicon@pexelsicon\endcsname {\simpleiconsmap\symbol{"F20B}}
- \expandafter\def\csname simpleicon@pfsenseicon\endcsname {\simpleiconsmap\symbol{"F20C}}
- \expandafter\def\csname simpleicon@phabricatoricon\endcsname {\simpleiconsmap\symbol{"F20D}}
- \expandafter\def\csname simpleicon@philipshueicon\endcsname {\simpleiconsmap\symbol{"F20E}}
- \expandafter\def\csname simpleicon@phoenixframeworkicon\endcsname {\simpleiconsmap\symbol{"F20F}}
- \expandafter\def\csname simpleicon@phonepeicon\endcsname {\simpleiconsmap\symbol{"F210}}
- \expandafter\def\csname simpleicon@phosphoriconsicon\endcsname {\simpleiconsmap\symbol{"F211}}
- \expandafter\def\csname simpleicon@photobucketicon\endcsname {\simpleiconsmap\symbol{"F212}}
- \expandafter\def\csname simpleicon@photocrowdicon\endcsname {\simpleiconsmap\symbol{"F213}}
- \expandafter\def\csname simpleicon@photonicon\endcsname {\simpleiconsmap\symbol{"F214}}
- \expandafter\def\csname simpleicon@photopeaicon\endcsname {\simpleiconsmap\symbol{"F215}}
- \expandafter\def\csname simpleicon@phpicon\endcsname {\simpleiconsmap\symbol{"F216}}
- \expandafter\def\csname simpleicon@phpmyadminicon\endcsname {\simpleiconsmap\symbol{"F217}}
- \expandafter\def\csname simpleicon@phpstormicon\endcsname {\simpleiconsmap\symbol{"F218}}
- \expandafter\def\csname simpleicon@piaggiogroupicon\endcsname {\simpleiconsmap\symbol{"F219}}
- \expandafter\def\csname simpleicon@piaproicon\endcsname {\simpleiconsmap\symbol{"F21A}}
- \expandafter\def\csname simpleicon@picardsurgelesicon\endcsname {\simpleiconsmap\symbol{"F21B}}
- \expandafter\def\csname simpleicon@picartodottvicon\endcsname {\simpleiconsmap\symbol{"F21C}}
- \expandafter\def\csname simpleicon@picnicicon\endcsname {\simpleiconsmap\symbol{"F21D}}
- \expandafter\def\csname simpleicon@picpayicon\endcsname {\simpleiconsmap\symbol{"F21E}}
- \expandafter\def\csname simpleicon@picrewicon\endcsname {\simpleiconsmap\symbol{"F21F}}
- \expandafter\def\csname simpleicon@picxyicon\endcsname {\simpleiconsmap\symbol{"F220}}
- \expandafter\def\csname simpleicon@piholeicon\endcsname {\simpleiconsmap\symbol{"F221}}
- \expandafter\def\csname simpleicon@pimcoreicon\endcsname {\simpleiconsmap\symbol{"F222}}
- \expandafter\def\csname simpleicon@pinboardicon\endcsname {\simpleiconsmap\symbol{"F223}}
- \expandafter\def\csname simpleicon@pinescripticon\endcsname {\simpleiconsmap\symbol{"F224}}
- \expandafter\def\csname simpleicon@pinetworkicon\endcsname {\simpleiconsmap\symbol{"F225}}
- \expandafter\def\csname simpleicon@pingdomicon\endcsname {\simpleiconsmap\symbol{"F226}}
- \expandafter\def\csname simpleicon@pinoicon\endcsname {\simpleiconsmap\symbol{"F227}}
- \expandafter\def\csname simpleicon@pinteresticon\endcsname {\simpleiconsmap\symbol{"F228}}
- \expandafter\def\csname simpleicon@pioneerdjicon\endcsname {\simpleiconsmap\symbol{"F229}}
- \expandafter\def\csname simpleicon@pipedicon\endcsname {\simpleiconsmap\symbol{"F22A}}
- \expandafter\def\csname simpleicon@pipxicon\endcsname {\simpleiconsmap\symbol{"F22B}}
- \expandafter\def\csname simpleicon@pivotaltrackericon\endcsname {\simpleiconsmap\symbol{"F22C}}
- \expandafter\def\csname simpleicon@piwigoicon\endcsname {\simpleiconsmap\symbol{"F22D}}
- \expandafter\def\csname simpleicon@pixicon\endcsname {\simpleiconsmap\symbol{"F22E}}
- \expandafter\def\csname simpleicon@pixabayicon\endcsname {\simpleiconsmap\symbol{"F22F}}
- \expandafter\def\csname simpleicon@pixelfedicon\endcsname {\simpleiconsmap\symbol{"F230}}
- \expandafter\def\csname simpleicon@pixivicon\endcsname {\simpleiconsmap\symbol{"F231}}
- \expandafter\def\csname simpleicon@pixlricon\endcsname {\simpleiconsmap\symbol{"F232}}
- \expandafter\def\csname simpleicon@pkgsrcicon\endcsname {\simpleiconsmap\symbol{"F233}}
- \expandafter\def\csname simpleicon@planeticon\endcsname {\simpleiconsmap\symbol{"F234}}
- \expandafter\def\csname simpleicon@planetscaleicon\endcsname {\simpleiconsmap\symbol{"F235}}
- \expandafter\def\csname simpleicon@plangridicon\endcsname {\simpleiconsmap\symbol{"F236}}
- \expandafter\def\csname simpleicon@platformdotshicon\endcsname {\simpleiconsmap\symbol{"F237}}
- \expandafter\def\csname simpleicon@platformioicon\endcsname {\simpleiconsmap\symbol{"F238}}
- \expandafter\def\csname simpleicon@platziicon\endcsname {\simpleiconsmap\symbol{"F239}}
- \expandafter\def\csname simpleicon@plausibleanalyticsicon\endcsname {\simpleiconsmap\symbol{"F23A}}
- \expandafter\def\csname simpleicon@playcanvasicon\endcsname {\simpleiconsmap\symbol{"F23B}}
- \expandafter\def\csname simpleicon@playerdotmeicon\endcsname {\simpleiconsmap\symbol{"F23C}}
- \expandafter\def\csname simpleicon@playerfmicon\endcsname {\simpleiconsmap\symbol{"F23D}}
- \expandafter\def\csname simpleicon@playstationicon\endcsname {\simpleiconsmap\symbol{"F23E}}
- \expandafter\def\csname simpleicon@playstation2icon\endcsname {\simpleiconsmap\symbol{"F23F}}
- \expandafter\def\csname simpleicon@playstation3icon\endcsname {\simpleiconsmap\symbol{"F240}}
- \expandafter\def\csname simpleicon@playstation4icon\endcsname {\simpleiconsmap\symbol{"F241}}
- \expandafter\def\csname simpleicon@playstation5icon\endcsname {\simpleiconsmap\symbol{"F242}}
- \expandafter\def\csname simpleicon@playstationvitaicon\endcsname {\simpleiconsmap\symbol{"F243}}
- \expandafter\def\csname simpleicon@playwrighticon\endcsname {\simpleiconsmap\symbol{"F244}}
- \expandafter\def\csname simpleicon@pleromaicon\endcsname {\simpleiconsmap\symbol{"F245}}
- \expandafter\def\csname simpleicon@pleskicon\endcsname {\simpleiconsmap\symbol{"F246}}
- \expandafter\def\csname simpleicon@plexicon\endcsname {\simpleiconsmap\symbol{"F247}}
- \expandafter\def\csname simpleicon@plotlyicon\endcsname {\simpleiconsmap\symbol{"F248}}
- \expandafter\def\csname simpleicon@pluralsighticon\endcsname {\simpleiconsmap\symbol{"F249}}
- \expandafter\def\csname simpleicon@plurkicon\endcsname {\simpleiconsmap\symbol{"F24A}}
- \expandafter\def\csname simpleicon@pluscodesicon\endcsname {\simpleiconsmap\symbol{"F24B}}
- \expandafter\def\csname simpleicon@pm2icon\endcsname {\simpleiconsmap\symbol{"F24C}}
- \expandafter\def\csname simpleicon@pnpmicon\endcsname {\simpleiconsmap\symbol{"F24D}}
- \expandafter\def\csname simpleicon@pocketicon\endcsname {\simpleiconsmap\symbol{"F24E}}
- \expandafter\def\csname simpleicon@pocketbaseicon\endcsname {\simpleiconsmap\symbol{"F24F}}
- \expandafter\def\csname simpleicon@pocketcastsicon\endcsname {\simpleiconsmap\symbol{"F250}}
- \expandafter\def\csname simpleicon@podcastaddicticon\endcsname {\simpleiconsmap\symbol{"F251}}
- \expandafter\def\csname simpleicon@podcastindexicon\endcsname {\simpleiconsmap\symbol{"F252}}
- \expandafter\def\csname simpleicon@podmanicon\endcsname {\simpleiconsmap\symbol{"F253}}
- \expandafter\def\csname simpleicon@poeicon\endcsname {\simpleiconsmap\symbol{"F254}}
- \expandafter\def\csname simpleicon@poetryicon\endcsname {\simpleiconsmap\symbol{"F255}}
- \expandafter\def\csname simpleicon@pointyicon\endcsname {\simpleiconsmap\symbol{"F256}}
- \expandafter\def\csname simpleicon@pokemonicon\endcsname {\simpleiconsmap\symbol{"F257}}
- \expandafter\def\csname simpleicon@polarsicon\endcsname {\simpleiconsmap\symbol{"F258}}
- \expandafter\def\csname simpleicon@polestaricon\endcsname {\simpleiconsmap\symbol{"F259}}
- \expandafter\def\csname simpleicon@polkadoticon\endcsname {\simpleiconsmap\symbol{"F25A}}
- \expandafter\def\csname simpleicon@polyicon\endcsname {\simpleiconsmap\symbol{"F25B}}
- \expandafter\def\csname simpleicon@polygonicon\endcsname {\simpleiconsmap\symbol{"F25C}}
- \expandafter\def\csname simpleicon@polymerprojecticon\endcsname {\simpleiconsmap\symbol{"F25D}}
- \expandafter\def\csname simpleicon@polyworkicon\endcsname {\simpleiconsmap\symbol{"F25E}}
- \expandafter\def\csname simpleicon@pond5icon\endcsname {\simpleiconsmap\symbol{"F25F}}
- \expandafter\def\csname simpleicon@poposicon\endcsname {\simpleiconsmap\symbol{"F260}}
- \expandafter\def\csname simpleicon@porkbunicon\endcsname {\simpleiconsmap\symbol{"F261}}
- \expandafter\def\csname simpleicon@porscheicon\endcsname {\simpleiconsmap\symbol{"F262}}
- \expandafter\def\csname simpleicon@portainericon\endcsname {\simpleiconsmap\symbol{"F263}}
- \expandafter\def\csname simpleicon@portswiggericon\endcsname {\simpleiconsmap\symbol{"F264}}
- \expandafter\def\csname simpleicon@positicon\endcsname {\simpleiconsmap\symbol{"F265}}
- \expandafter\def\csname simpleicon@postcssicon\endcsname {\simpleiconsmap\symbol{"F266}}
- \expandafter\def\csname simpleicon@postgresqlicon\endcsname {\simpleiconsmap\symbol{"F267}}
- \expandafter\def\csname simpleicon@posthogicon\endcsname {\simpleiconsmap\symbol{"F268}}
- \expandafter\def\csname simpleicon@postmanicon\endcsname {\simpleiconsmap\symbol{"F269}}
- \expandafter\def\csname simpleicon@postmatesicon\endcsname {\simpleiconsmap\symbol{"F26A}}
- \expandafter\def\csname simpleicon@powerappsicon\endcsname {\simpleiconsmap\symbol{"F26B}}
- \expandafter\def\csname simpleicon@powerautomateicon\endcsname {\simpleiconsmap\symbol{"F26C}}
- \expandafter\def\csname simpleicon@powerbiicon\endcsname {\simpleiconsmap\symbol{"F26D}}
- \expandafter\def\csname simpleicon@powerfxicon\endcsname {\simpleiconsmap\symbol{"F26E}}
- \expandafter\def\csname simpleicon@powerpagesicon\endcsname {\simpleiconsmap\symbol{"F26F}}
- \expandafter\def\csname simpleicon@powersicon\endcsname {\simpleiconsmap\symbol{"F270}}
- \expandafter\def\csname simpleicon@powershellicon\endcsname {\simpleiconsmap\symbol{"F271}}
- \expandafter\def\csname simpleicon@powervirtualagentsicon\endcsname {\simpleiconsmap\symbol{"F272}}
- \expandafter\def\csname simpleicon@prdotcoicon\endcsname {\simpleiconsmap\symbol{"F273}}
- \expandafter\def\csname simpleicon@preacticon\endcsname {\simpleiconsmap\symbol{"F274}}
- \expandafter\def\csname simpleicon@precommiticon\endcsname {\simpleiconsmap\symbol{"F275}}
- \expandafter\def\csname simpleicon@prefecticon\endcsname {\simpleiconsmap\symbol{"F276}}
- \expandafter\def\csname simpleicon@premierleagueicon\endcsname {\simpleiconsmap\symbol{"F277}}
- \expandafter\def\csname simpleicon@prepbytesicon\endcsname {\simpleiconsmap\symbol{"F278}}
- \expandafter\def\csname simpleicon@prestashopicon\endcsname {\simpleiconsmap\symbol{"F279}}
- \expandafter\def\csname simpleicon@prestoicon\endcsname {\simpleiconsmap\symbol{"F27A}}
- \expandafter\def\csname simpleicon@prettiericon\endcsname {\simpleiconsmap\symbol{"F27B}}
- \expandafter\def\csname simpleicon@pretzelicon\endcsname {\simpleiconsmap\symbol{"F27C}}
- \expandafter\def\csname simpleicon@preventionicon\endcsname {\simpleiconsmap\symbol{"F27D}}
- \expandafter\def\csname simpleicon@preziicon\endcsname {\simpleiconsmap\symbol{"F27E}}
- \expandafter\def\csname simpleicon@primeicon\endcsname {\simpleiconsmap\symbol{"F27F}}
- \expandafter\def\csname simpleicon@primevideoicon\endcsname {\simpleiconsmap\symbol{"F280}}
- \expandafter\def\csname simpleicon@printablesicon\endcsname {\simpleiconsmap\symbol{"F281}}
- \expandafter\def\csname simpleicon@prismaicon\endcsname {\simpleiconsmap\symbol{"F282}}
- \expandafter\def\csname simpleicon@prismicicon\endcsname {\simpleiconsmap\symbol{"F283}}
- \expandafter\def\csname simpleicon@privatedivisionicon\endcsname {\simpleiconsmap\symbol{"F284}}
- \expandafter\def\csname simpleicon@privateinternetaccessicon\endcsname {\simpleiconsmap\symbol{"F285}}
- \expandafter\def\csname simpleicon@proboticon\endcsname {\simpleiconsmap\symbol{"F286}}
- \expandafter\def\csname simpleicon@processingfoundationicon\endcsname {\simpleiconsmap\symbol{"F287}}
- \expandafter\def\csname simpleicon@processwireicon\endcsname {\simpleiconsmap\symbol{"F288}}
- \expandafter\def\csname simpleicon@producthunticon\endcsname {\simpleiconsmap\symbol{"F289}}
- \expandafter\def\csname simpleicon@progateicon\endcsname {\simpleiconsmap\symbol{"F28A}}
- \expandafter\def\csname simpleicon@progressicon\endcsname {\simpleiconsmap\symbol{"F28B}}
- \expandafter\def\csname simpleicon@prometheusicon\endcsname {\simpleiconsmap\symbol{"F28C}}
- \expandafter\def\csname simpleicon@pronounsdotpageicon\endcsname {\simpleiconsmap\symbol{"F28D}}
- \expandafter\def\csname simpleicon@prosiebenicon\endcsname {\simpleiconsmap\symbol{"F28E}}
- \expandafter\def\csname simpleicon@proteusicon\endcsname {\simpleiconsmap\symbol{"F28F}}
- \expandafter\def\csname simpleicon@protocolsdotioicon\endcsname {\simpleiconsmap\symbol{"F290}}
- \expandafter\def\csname simpleicon@protodotioicon\endcsname {\simpleiconsmap\symbol{"F291}}
- \expandafter\def\csname simpleicon@protonicon\endcsname {\simpleiconsmap\symbol{"F292}}
- \expandafter\def\csname simpleicon@protoncalendaricon\endcsname {\simpleiconsmap\symbol{"F293}}
- \expandafter\def\csname simpleicon@protondbicon\endcsname {\simpleiconsmap\symbol{"F294}}
- \expandafter\def\csname simpleicon@protondriveicon\endcsname {\simpleiconsmap\symbol{"F295}}
- \expandafter\def\csname simpleicon@protonmailicon\endcsname {\simpleiconsmap\symbol{"F296}}
- \expandafter\def\csname simpleicon@protonvpnicon\endcsname {\simpleiconsmap\symbol{"F297}}
- \expandafter\def\csname simpleicon@protoolsicon\endcsname {\simpleiconsmap\symbol{"F298}}
- \expandafter\def\csname simpleicon@protractoricon\endcsname {\simpleiconsmap\symbol{"F299}}
- \expandafter\def\csname simpleicon@proxmoxicon\endcsname {\simpleiconsmap\symbol{"F29A}}
- \expandafter\def\csname simpleicon@pterodactylicon\endcsname {\simpleiconsmap\symbol{"F29B}}
- \expandafter\def\csname simpleicon@pubgicon\endcsname {\simpleiconsmap\symbol{"F29C}}
- \expandafter\def\csname simpleicon@publonsicon\endcsname {\simpleiconsmap\symbol{"F29D}}
- \expandafter\def\csname simpleicon@pubmedicon\endcsname {\simpleiconsmap\symbol{"F29E}}
- \expandafter\def\csname simpleicon@pugicon\endcsname {\simpleiconsmap\symbol{"F29F}}
- \expandafter\def\csname simpleicon@pulumiicon\endcsname {\simpleiconsmap\symbol{"F2A0}}
- \expandafter\def\csname simpleicon@pumaicon\endcsname {\simpleiconsmap\symbol{"F2A1}}
- \expandafter\def\csname simpleicon@puppeticon\endcsname {\simpleiconsmap\symbol{"F2A2}}
- \expandafter\def\csname simpleicon@puppeteericon\endcsname {\simpleiconsmap\symbol{"F2A3}}
- \expandafter\def\csname simpleicon@purescripticon\endcsname {\simpleiconsmap\symbol{"F2A4}}
- \expandafter\def\csname simpleicon@purgecssicon\endcsname {\simpleiconsmap\symbol{"F2A5}}
- \expandafter\def\csname simpleicon@purismicon\endcsname {\simpleiconsmap\symbol{"F2A6}}
- \expandafter\def\csname simpleicon@pushbulleticon\endcsname {\simpleiconsmap\symbol{"F2A7}}
- \expandafter\def\csname simpleicon@pushericon\endcsname {\simpleiconsmap\symbol{"F2A8}}
- \expandafter\def\csname simpleicon@pwaicon\endcsname {\simpleiconsmap\symbol{"F2A9}}
- \expandafter\def\csname simpleicon@pycharmicon\endcsname {\simpleiconsmap\symbol{"F2AA}}
- \expandafter\def\csname simpleicon@pycqaicon\endcsname {\simpleiconsmap\symbol{"F2AB}}
- \expandafter\def\csname simpleicon@pydanticicon\endcsname {\simpleiconsmap\symbol{"F2AC}}
- \expandafter\def\csname simpleicon@pygicon\endcsname {\simpleiconsmap\symbol{"F2AD}}
- \expandafter\def\csname simpleicon@pypiicon\endcsname {\simpleiconsmap\symbol{"F2AE}}
- \expandafter\def\csname simpleicon@pypyicon\endcsname {\simpleiconsmap\symbol{"F2AF}}
- \expandafter\def\csname simpleicon@pyscaffoldicon\endcsname {\simpleiconsmap\symbol{"F2B0}}
- \expandafter\def\csname simpleicon@pysyfticon\endcsname {\simpleiconsmap\symbol{"F2B1}}
- \expandafter\def\csname simpleicon@pytesticon\endcsname {\simpleiconsmap\symbol{"F2B2}}
- \expandafter\def\csname simpleicon@pythonicon\endcsname {\simpleiconsmap\symbol{"F2B3}}
- \expandafter\def\csname simpleicon@pythonanywhereicon\endcsname {\simpleiconsmap\symbol{"F2B4}}
- \expandafter\def\csname simpleicon@pytorchicon\endcsname {\simpleiconsmap\symbol{"F2B5}}
- \expandafter\def\csname simpleicon@pyupicon\endcsname {\simpleiconsmap\symbol{"F2B6}}
- \expandafter\def\csname simpleicon@qantasicon\endcsname {\simpleiconsmap\symbol{"F2B7}}
- \expandafter\def\csname simpleicon@qaseicon\endcsname {\simpleiconsmap\symbol{"F2B8}}
- \expandafter\def\csname simpleicon@qatarairwaysicon\endcsname {\simpleiconsmap\symbol{"F2B9}}
- \expandafter\def\csname simpleicon@qbittorrenticon\endcsname {\simpleiconsmap\symbol{"F2BA}}
- \expandafter\def\csname simpleicon@qemuicon\endcsname {\simpleiconsmap\symbol{"F2BB}}
- \expandafter\def\csname simpleicon@qgisicon\endcsname {\simpleiconsmap\symbol{"F2BC}}
- \expandafter\def\csname simpleicon@qiicon\endcsname {\simpleiconsmap\symbol{"F2BD}}
- \expandafter\def\csname simpleicon@qiitaicon\endcsname {\simpleiconsmap\symbol{"F2BE}}
- \expandafter\def\csname simpleicon@qiskiticon\endcsname {\simpleiconsmap\symbol{"F2BF}}
- \expandafter\def\csname simpleicon@qiwiicon\endcsname {\simpleiconsmap\symbol{"F2C0}}
- \expandafter\def\csname simpleicon@qlikicon\endcsname {\simpleiconsmap\symbol{"F2C1}}
- \expandafter\def\csname simpleicon@qmkicon\endcsname {\simpleiconsmap\symbol{"F2C2}}
- \expandafter\def\csname simpleicon@qnapicon\endcsname {\simpleiconsmap\symbol{"F2C3}}
- \expandafter\def\csname simpleicon@qticon\endcsname {\simpleiconsmap\symbol{"F2C4}}
- \expandafter\def\csname simpleicon@qualcommicon\endcsname {\simpleiconsmap\symbol{"F2C5}}
- \expandafter\def\csname simpleicon@qualtricsicon\endcsname {\simpleiconsmap\symbol{"F2C6}}
- \expandafter\def\csname simpleicon@qualysicon\endcsname {\simpleiconsmap\symbol{"F2C7}}
- \expandafter\def\csname simpleicon@quantcasticon\endcsname {\simpleiconsmap\symbol{"F2C8}}
- \expandafter\def\csname simpleicon@quantconnecticon\endcsname {\simpleiconsmap\symbol{"F2C9}}
- \expandafter\def\csname simpleicon@quarkusicon\endcsname {\simpleiconsmap\symbol{"F2CA}}
- \expandafter\def\csname simpleicon@quartoicon\endcsname {\simpleiconsmap\symbol{"F2CB}}
- \expandafter\def\csname simpleicon@quasaricon\endcsname {\simpleiconsmap\symbol{"F2CC}}
- \expandafter\def\csname simpleicon@qubesosicon\endcsname {\simpleiconsmap\symbol{"F2CD}}
- \expandafter\def\csname simpleicon@questicon\endcsname {\simpleiconsmap\symbol{"F2CE}}
- \expandafter\def\csname simpleicon@quickbooksicon\endcsname {\simpleiconsmap\symbol{"F2CF}}
- \expandafter\def\csname simpleicon@quicklookicon\endcsname {\simpleiconsmap\symbol{"F2D0}}
- \expandafter\def\csname simpleicon@quicktimeicon\endcsname {\simpleiconsmap\symbol{"F2D1}}
- \expandafter\def\csname simpleicon@quicktypeicon\endcsname {\simpleiconsmap\symbol{"F2D2}}
- \expandafter\def\csname simpleicon@quipicon\endcsname {\simpleiconsmap\symbol{"F2D3}}
- \expandafter\def\csname simpleicon@quizleticon\endcsname {\simpleiconsmap\symbol{"F2D4}}
- \expandafter\def\csname simpleicon@quoraicon\endcsname {\simpleiconsmap\symbol{"F2D5}}
- \expandafter\def\csname simpleicon@qwanticon\endcsname {\simpleiconsmap\symbol{"F2D6}}
- \expandafter\def\csname simpleicon@qwikicon\endcsname {\simpleiconsmap\symbol{"F2D7}}
- \expandafter\def\csname simpleicon@qwiklabsicon\endcsname {\simpleiconsmap\symbol{"F2D8}}
- \expandafter\def\csname simpleicon@qzoneicon\endcsname {\simpleiconsmap\symbol{"F2D9}}
- \expandafter\def\csname simpleicon@ricon\endcsname {\simpleiconsmap\symbol{"F2DA}}
- \expandafter\def\csname simpleicon@r3icon\endcsname {\simpleiconsmap\symbol{"F2DB}}
- \expandafter\def\csname simpleicon@rabbitmqicon\endcsname {\simpleiconsmap\symbol{"F2DC}}
- \expandafter\def\csname simpleicon@racketicon\endcsname {\simpleiconsmap\symbol{"F2DD}}
- \expandafter\def\csname simpleicon@radaricon\endcsname {\simpleiconsmap\symbol{"F2DE}}
- \expandafter\def\csname simpleicon@radarricon\endcsname {\simpleiconsmap\symbol{"F2DF}}
- \expandafter\def\csname simpleicon@radiopublicicon\endcsname {\simpleiconsmap\symbol{"F2E0}}
- \expandafter\def\csname simpleicon@radixuiicon\endcsname {\simpleiconsmap\symbol{"F2E1}}
- \expandafter\def\csname simpleicon@radstudioicon\endcsname {\simpleiconsmap\symbol{"F2E2}}
- \expandafter\def\csname simpleicon@railwayicon\endcsname {\simpleiconsmap\symbol{"F2E3}}
- \expandafter\def\csname simpleicon@rainmetericon\endcsname {\simpleiconsmap\symbol{"F2E4}}
- \expandafter\def\csname simpleicon@rakutenicon\endcsname {\simpleiconsmap\symbol{"F2E5}}
- \expandafter\def\csname simpleicon@ramicon\endcsname {\simpleiconsmap\symbol{"F2E6}}
- \expandafter\def\csname simpleicon@ranchericon\endcsname {\simpleiconsmap\symbol{"F2E7}}
- \expandafter\def\csname simpleicon@rapidicon\endcsname {\simpleiconsmap\symbol{"F2E8}}
- \expandafter\def\csname simpleicon@raribleicon\endcsname {\simpleiconsmap\symbol{"F2E9}}
- \expandafter\def\csname simpleicon@rasaicon\endcsname {\simpleiconsmap\symbol{"F2EA}}
- \expandafter\def\csname simpleicon@raspberrypiicon\endcsname {\simpleiconsmap\symbol{"F2EB}}
- \expandafter\def\csname simpleicon@ravelryicon\endcsname {\simpleiconsmap\symbol{"F2EC}}
- \expandafter\def\csname simpleicon@rayicon\endcsname {\simpleiconsmap\symbol{"F2ED}}
- \expandafter\def\csname simpleicon@raycasticon\endcsname {\simpleiconsmap\symbol{"F2EE}}
- \expandafter\def\csname simpleicon@raylibicon\endcsname {\simpleiconsmap\symbol{"F2EF}}
- \expandafter\def\csname simpleicon@razericon\endcsname {\simpleiconsmap\symbol{"F2F0}}
- \expandafter\def\csname simpleicon@razorpayicon\endcsname {\simpleiconsmap\symbol{"F2F1}}
- \expandafter\def\csname simpleicon@rcloneicon\endcsname {\simpleiconsmap\symbol{"F2F2}}
- \expandafter\def\csname simpleicon@reacticon\endcsname {\simpleiconsmap\symbol{"F2F3}}
- \expandafter\def\csname simpleicon@reactbootstrapicon\endcsname {\simpleiconsmap\symbol{"F2F4}}
- \expandafter\def\csname simpleicon@reacthookformicon\endcsname {\simpleiconsmap\symbol{"F2F5}}
- \expandafter\def\csname simpleicon@reactiveresumeicon\endcsname {\simpleiconsmap\symbol{"F2F6}}
- \expandafter\def\csname simpleicon@reactivexicon\endcsname {\simpleiconsmap\symbol{"F2F7}}
- \expandafter\def\csname simpleicon@reactosicon\endcsname {\simpleiconsmap\symbol{"F2F8}}
- \expandafter\def\csname simpleicon@reactqueryicon\endcsname {\simpleiconsmap\symbol{"F2F9}}
- \expandafter\def\csname simpleicon@reactroutericon\endcsname {\simpleiconsmap\symbol{"F2FA}}
- \expandafter\def\csname simpleicon@reacttableicon\endcsname {\simpleiconsmap\symbol{"F2FB}}
- \expandafter\def\csname simpleicon@readdotcvicon\endcsname {\simpleiconsmap\symbol{"F2FC}}
- \expandafter\def\csname simpleicon@readmeicon\endcsname {\simpleiconsmap\symbol{"F2FD}}
- \expandafter\def\csname simpleicon@readthedocsicon\endcsname {\simpleiconsmap\symbol{"F2FE}}
- \expandafter\def\csname simpleicon@realmicon\endcsname {\simpleiconsmap\symbol{"F2FF}}
- \expandafter\def\csname simpleicon@reasonicon\endcsname {\simpleiconsmap\symbol{"F300}}
- \expandafter\def\csname simpleicon@reasonstudiosicon\endcsname {\simpleiconsmap\symbol{"F301}}
- \expandafter\def\csname simpleicon@recoilicon\endcsname {\simpleiconsmap\symbol{"F302}}
- \expandafter\def\csname simpleicon@redicon\endcsname {\simpleiconsmap\symbol{"F303}}
- \expandafter\def\csname simpleicon@redashicon\endcsname {\simpleiconsmap\symbol{"F304}}
- \expandafter\def\csname simpleicon@redbubbleicon\endcsname {\simpleiconsmap\symbol{"F305}}
- \expandafter\def\csname simpleicon@redbullicon\endcsname {\simpleiconsmap\symbol{"F306}}
- \expandafter\def\csname simpleicon@redditicon\endcsname {\simpleiconsmap\symbol{"F307}}
- \expandafter\def\csname simpleicon@redhaticon\endcsname {\simpleiconsmap\symbol{"F308}}
- \expandafter\def\csname simpleicon@redhatopenshifticon\endcsname {\simpleiconsmap\symbol{"F309}}
- \expandafter\def\csname simpleicon@redisicon\endcsname {\simpleiconsmap\symbol{"F30A}}
- \expandafter\def\csname simpleicon@redmineicon\endcsname {\simpleiconsmap\symbol{"F30B}}
- \expandafter\def\csname simpleicon@redoxicon\endcsname {\simpleiconsmap\symbol{"F30C}}
- \expandafter\def\csname simpleicon@reduxicon\endcsname {\simpleiconsmap\symbol{"F30D}}
- \expandafter\def\csname simpleicon@reduxsagaicon\endcsname {\simpleiconsmap\symbol{"F30E}}
- \expandafter\def\csname simpleicon@redwoodjsicon\endcsname {\simpleiconsmap\symbol{"F30F}}
- \expandafter\def\csname simpleicon@reebokicon\endcsname {\simpleiconsmap\symbol{"F310}}
- \expandafter\def\csname simpleicon@refineicon\endcsname {\simpleiconsmap\symbol{"F311}}
- \expandafter\def\csname simpleicon@relayicon\endcsname {\simpleiconsmap\symbol{"F312}}
- \expandafter\def\csname simpleicon@relianceindustrieslimitedicon\endcsname {\simpleiconsmap\symbol{"F313}}
- \expandafter\def\csname simpleicon@remarkicon\endcsname {\simpleiconsmap\symbol{"F314}}
- \expandafter\def\csname simpleicon@remedyentertainmenticon\endcsname {\simpleiconsmap\symbol{"F315}}
- \expandafter\def\csname simpleicon@remixicon\endcsname {\simpleiconsmap\symbol{"F316}}
- \expandafter\def\csname simpleicon@removedotbgicon\endcsname {\simpleiconsmap\symbol{"F317}}
- \expandafter\def\csname simpleicon@renaulticon\endcsname {\simpleiconsmap\symbol{"F318}}
- \expandafter\def\csname simpleicon@rendericon\endcsname {\simpleiconsmap\symbol{"F319}}
- \expandafter\def\csname simpleicon@renovateboticon\endcsname {\simpleiconsmap\symbol{"F31A}}
- \expandafter\def\csname simpleicon@renpyicon\endcsname {\simpleiconsmap\symbol{"F31B}}
- \expandafter\def\csname simpleicon@renrenicon\endcsname {\simpleiconsmap\symbol{"F31C}}
- \expandafter\def\csname simpleicon@repliticon\endcsname {\simpleiconsmap\symbol{"F31D}}
- \expandafter\def\csname simpleicon@republicofgamersicon\endcsname {\simpleiconsmap\symbol{"F31E}}
- \expandafter\def\csname simpleicon@rescripticon\endcsname {\simpleiconsmap\symbol{"F31F}}
- \expandafter\def\csname simpleicon@rescuetimeicon\endcsname {\simpleiconsmap\symbol{"F320}}
- \expandafter\def\csname simpleicon@researchgateicon\endcsname {\simpleiconsmap\symbol{"F321}}
- \expandafter\def\csname simpleicon@resendicon\endcsname {\simpleiconsmap\symbol{"F322}}
- \expandafter\def\csname simpleicon@resharpericon\endcsname {\simpleiconsmap\symbol{"F323}}
- \expandafter\def\csname simpleicon@resurrectionremixosicon\endcsname {\simpleiconsmap\symbol{"F324}}
- \expandafter\def\csname simpleicon@retoolicon\endcsname {\simpleiconsmap\symbol{"F325}}
- \expandafter\def\csname simpleicon@retroarchicon\endcsname {\simpleiconsmap\symbol{"F326}}
- \expandafter\def\csname simpleicon@retropieicon\endcsname {\simpleiconsmap\symbol{"F327}}
- \expandafter\def\csname simpleicon@revancedicon\endcsname {\simpleiconsmap\symbol{"F328}}
- \expandafter\def\csname simpleicon@revealdotjsicon\endcsname {\simpleiconsmap\symbol{"F329}}
- \expandafter\def\csname simpleicon@reverbnationicon\endcsname {\simpleiconsmap\symbol{"F32A}}
- \expandafter\def\csname simpleicon@revoltdotchaticon\endcsname {\simpleiconsmap\symbol{"F32B}}
- \expandafter\def\csname simpleicon@revoluticon\endcsname {\simpleiconsmap\symbol{"F32C}}
- \expandafter\def\csname simpleicon@revueicon\endcsname {\simpleiconsmap\symbol{"F32D}}
- \expandafter\def\csname simpleicon@reweicon\endcsname {\simpleiconsmap\symbol{"F32E}}
- \expandafter\def\csname simpleicon@rezgoicon\endcsname {\simpleiconsmap\symbol{"F32F}}
- \expandafter\def\csname simpleicon@rhinocerosicon\endcsname {\simpleiconsmap\symbol{"F330}}
- \expandafter\def\csname simpleicon@richicon\endcsname {\simpleiconsmap\symbol{"F331}}
- \expandafter\def\csname simpleicon@ridericon\endcsname {\simpleiconsmap\symbol{"F332}}
- \expandafter\def\csname simpleicon@rimacautomobiliicon\endcsname {\simpleiconsmap\symbol{"F333}}
- \expandafter\def\csname simpleicon@rimeicon\endcsname {\simpleiconsmap\symbol{"F334}}
- \expandafter\def\csname simpleicon@ringicon\endcsname {\simpleiconsmap\symbol{"F335}}
- \expandafter\def\csname simpleicon@riotgamesicon\endcsname {\simpleiconsmap\symbol{"F336}}
- \expandafter\def\csname simpleicon@rippleicon\endcsname {\simpleiconsmap\symbol{"F337}}
- \expandafter\def\csname simpleicon@riscvicon\endcsname {\simpleiconsmap\symbol{"F338}}
- \expandafter\def\csname simpleicon@riseupicon\endcsname {\simpleiconsmap\symbol{"F339}}
- \expandafter\def\csname simpleicon@ritzcarltonicon\endcsname {\simpleiconsmap\symbol{"F33A}}
- \expandafter\def\csname simpleicon@riveicon\endcsname {\simpleiconsmap\symbol{"F33B}}
- \expandafter\def\csname simpleicon@roadmapdotshicon\endcsname {\simpleiconsmap\symbol{"F33C}}
- \expandafter\def\csname simpleicon@roamresearchicon\endcsname {\simpleiconsmap\symbol{"F33D}}
- \expandafter\def\csname simpleicon@robinhoodicon\endcsname {\simpleiconsmap\symbol{"F33E}}
- \expandafter\def\csname simpleicon@robloxicon\endcsname {\simpleiconsmap\symbol{"F33F}}
- \expandafter\def\csname simpleicon@robloxstudioicon\endcsname {\simpleiconsmap\symbol{"F340}}
- \expandafter\def\csname simpleicon@robotframeworkicon\endcsname {\simpleiconsmap\symbol{"F341}}
- \expandafter\def\csname simpleicon@rocketicon\endcsname {\simpleiconsmap\symbol{"F342}}
- \expandafter\def\csname simpleicon@rocketdotchaticon\endcsname {\simpleiconsmap\symbol{"F343}}
- \expandafter\def\csname simpleicon@rocksdbicon\endcsname {\simpleiconsmap\symbol{"F344}}
- \expandafter\def\csname simpleicon@rockstargamesicon\endcsname {\simpleiconsmap\symbol{"F345}}
- \expandafter\def\csname simpleicon@rockwellautomationicon\endcsname {\simpleiconsmap\symbol{"F346}}
- \expandafter\def\csname simpleicon@rockylinuxicon\endcsname {\simpleiconsmap\symbol{"F347}}
- \expandafter\def\csname simpleicon@rokuicon\endcsname {\simpleiconsmap\symbol{"F348}}
- \expandafter\def\csname simpleicon@roll20icon\endcsname {\simpleiconsmap\symbol{"F349}}
- \expandafter\def\csname simpleicon@rollsroyceicon\endcsname {\simpleiconsmap\symbol{"F34A}}
- \expandafter\def\csname simpleicon@rollupdotjsicon\endcsname {\simpleiconsmap\symbol{"F34B}}
- \expandafter\def\csname simpleicon@roonicon\endcsname {\simpleiconsmap\symbol{"F34C}}
- \expandafter\def\csname simpleicon@rootmeicon\endcsname {\simpleiconsmap\symbol{"F34D}}
- \expandafter\def\csname simpleicon@rootsicon\endcsname {\simpleiconsmap\symbol{"F34E}}
- \expandafter\def\csname simpleicon@rootsbedrockicon\endcsname {\simpleiconsmap\symbol{"F34F}}
- \expandafter\def\csname simpleicon@rootssageicon\endcsname {\simpleiconsmap\symbol{"F350}}
- \expandafter\def\csname simpleicon@rosicon\endcsname {\simpleiconsmap\symbol{"F351}}
- \expandafter\def\csname simpleicon@rossmannicon\endcsname {\simpleiconsmap\symbol{"F352}}
- \expandafter\def\csname simpleicon@rotaryinternationalicon\endcsname {\simpleiconsmap\symbol{"F353}}
- \expandafter\def\csname simpleicon@rottentomatoesicon\endcsname {\simpleiconsmap\symbol{"F354}}
- \expandafter\def\csname simpleicon@roundcubeicon\endcsname {\simpleiconsmap\symbol{"F355}}
- \expandafter\def\csname simpleicon@rsocketicon\endcsname {\simpleiconsmap\symbol{"F356}}
- \expandafter\def\csname simpleicon@rssicon\endcsname {\simpleiconsmap\symbol{"F357}}
- \expandafter\def\csname simpleicon@rstudioideicon\endcsname {\simpleiconsmap\symbol{"F358}}
- \expandafter\def\csname simpleicon@rteicon\endcsname {\simpleiconsmap\symbol{"F359}}
- \expandafter\def\csname simpleicon@rtlicon\endcsname {\simpleiconsmap\symbol{"F35A}}
- \expandafter\def\csname simpleicon@rtlzweiicon\endcsname {\simpleiconsmap\symbol{"F35B}}
- \expandafter\def\csname simpleicon@rtmicon\endcsname {\simpleiconsmap\symbol{"F35C}}
- \expandafter\def\csname simpleicon@rubocopicon\endcsname {\simpleiconsmap\symbol{"F35D}}
- \expandafter\def\csname simpleicon@rubyicon\endcsname {\simpleiconsmap\symbol{"F35E}}
- \expandafter\def\csname simpleicon@rubygemsicon\endcsname {\simpleiconsmap\symbol{"F35F}}
- \expandafter\def\csname simpleicon@rubymineicon\endcsname {\simpleiconsmap\symbol{"F360}}
- \expandafter\def\csname simpleicon@rubyonrailsicon\endcsname {\simpleiconsmap\symbol{"F361}}
- \expandafter\def\csname simpleicon@rubysinatraicon\endcsname {\simpleiconsmap\symbol{"F362}}
- \expandafter\def\csname simpleicon@rufficon\endcsname {\simpleiconsmap\symbol{"F363}}
- \expandafter\def\csname simpleicon@rumahwebicon\endcsname {\simpleiconsmap\symbol{"F364}}
- \expandafter\def\csname simpleicon@rumbleicon\endcsname {\simpleiconsmap\symbol{"F365}}
- \expandafter\def\csname simpleicon@rundeckicon\endcsname {\simpleiconsmap\symbol{"F366}}
- \expandafter\def\csname simpleicon@runkeepericon\endcsname {\simpleiconsmap\symbol{"F367}}
- \expandafter\def\csname simpleicon@runkiticon\endcsname {\simpleiconsmap\symbol{"F368}}
- \expandafter\def\csname simpleicon@runrundotiticon\endcsname {\simpleiconsmap\symbol{"F369}}
- \expandafter\def\csname simpleicon@rusticon\endcsname {\simpleiconsmap\symbol{"F36A}}
- \expandafter\def\csname simpleicon@rustdeskicon\endcsname {\simpleiconsmap\symbol{"F36B}}
- \expandafter\def\csname simpleicon@rxdbicon\endcsname {\simpleiconsmap\symbol{"F36C}}
- \expandafter\def\csname simpleicon@ryanairicon\endcsname {\simpleiconsmap\symbol{"F36D}}
- \expandafter\def\csname simpleicon@ryeicon\endcsname {\simpleiconsmap\symbol{"F36E}}
- \expandafter\def\csname simpleicon@s7airlinesicon\endcsname {\simpleiconsmap\symbol{"F36F}}
- \expandafter\def\csname simpleicon@sabanciicon\endcsname {\simpleiconsmap\symbol{"F370}}
- \expandafter\def\csname simpleicon@safariicon\endcsname {\simpleiconsmap\symbol{"F371}}
- \expandafter\def\csname simpleicon@sageicon\endcsname {\simpleiconsmap\symbol{"F372}}
- \expandafter\def\csname simpleicon@sahibindenicon\endcsname {\simpleiconsmap\symbol{"F373}}
- \expandafter\def\csname simpleicon@sailfishosicon\endcsname {\simpleiconsmap\symbol{"F374}}
- \expandafter\def\csname simpleicon@sailsdotjsicon\endcsname {\simpleiconsmap\symbol{"F375}}
- \expandafter\def\csname simpleicon@salesforceicon\endcsname {\simpleiconsmap\symbol{"F376}}
- \expandafter\def\csname simpleicon@sallaicon\endcsname {\simpleiconsmap\symbol{"F377}}
- \expandafter\def\csname simpleicon@saltprojecticon\endcsname {\simpleiconsmap\symbol{"F378}}
- \expandafter\def\csname simpleicon@samsclubicon\endcsname {\simpleiconsmap\symbol{"F379}}
- \expandafter\def\csname simpleicon@samsungicon\endcsname {\simpleiconsmap\symbol{"F37A}}
- \expandafter\def\csname simpleicon@samsungpayicon\endcsname {\simpleiconsmap\symbol{"F37B}}
- \expandafter\def\csname simpleicon@sandiskicon\endcsname {\simpleiconsmap\symbol{"F37C}}
- \expandafter\def\csname simpleicon@sanfranciscomunicipalrailwayicon\endcsname {\simpleiconsmap\symbol{"F37D}}
- \expandafter\def\csname simpleicon@sanicicon\endcsname {\simpleiconsmap\symbol{"F37E}}
- \expandafter\def\csname simpleicon@sanityicon\endcsname {\simpleiconsmap\symbol{"F37F}}
- \expandafter\def\csname simpleicon@saopaulometroicon\endcsname {\simpleiconsmap\symbol{"F380}}
- \expandafter\def\csname simpleicon@sapicon\endcsname {\simpleiconsmap\symbol{"F381}}
- \expandafter\def\csname simpleicon@sartoriusicon\endcsname {\simpleiconsmap\symbol{"F382}}
- \expandafter\def\csname simpleicon@sassicon\endcsname {\simpleiconsmap\symbol{"F383}}
- \expandafter\def\csname simpleicon@sat1icon\endcsname {\simpleiconsmap\symbol{"F384}}
- \expandafter\def\csname simpleicon@satelliteicon\endcsname {\simpleiconsmap\symbol{"F385}}
- \expandafter\def\csname simpleicon@saturnicon\endcsname {\simpleiconsmap\symbol{"F386}}
- \expandafter\def\csname simpleicon@saucelabsicon\endcsname {\simpleiconsmap\symbol{"F387}}
- \expandafter\def\csname simpleicon@saudiaicon\endcsname {\simpleiconsmap\symbol{"F388}}
- \expandafter\def\csname simpleicon@scalaicon\endcsname {\simpleiconsmap\symbol{"F389}}
- \expandafter\def\csname simpleicon@scalewayicon\endcsname {\simpleiconsmap\symbol{"F38A}}
- \expandafter\def\csname simpleicon@scaniaicon\endcsname {\simpleiconsmap\symbol{"F38B}}
- \expandafter\def\csname simpleicon@schneiderelectricicon\endcsname {\simpleiconsmap\symbol{"F38C}}
- \expandafter\def\csname simpleicon@scikitlearnicon\endcsname {\simpleiconsmap\symbol{"F38D}}
- \expandafter\def\csname simpleicon@scilabicon\endcsname {\simpleiconsmap\symbol{"F38E}}
- \expandafter\def\csname simpleicon@scipyicon\endcsname {\simpleiconsmap\symbol{"F38F}}
- \expandafter\def\csname simpleicon@scopusicon\endcsname {\simpleiconsmap\symbol{"F390}}
- \expandafter\def\csname simpleicon@scpfoundationicon\endcsname {\simpleiconsmap\symbol{"F391}}
- \expandafter\def\csname simpleicon@scrapboxicon\endcsname {\simpleiconsmap\symbol{"F392}}
- \expandafter\def\csname simpleicon@scrapyicon\endcsname {\simpleiconsmap\symbol{"F393}}
- \expandafter\def\csname simpleicon@scratchicon\endcsname {\simpleiconsmap\symbol{"F394}}
- \expandafter\def\csname simpleicon@screencastifyicon\endcsname {\simpleiconsmap\symbol{"F395}}
- \expandafter\def\csname simpleicon@scribdicon\endcsname {\simpleiconsmap\symbol{"F396}}
- \expandafter\def\csname simpleicon@scrimbaicon\endcsname {\simpleiconsmap\symbol{"F397}}
- \expandafter\def\csname simpleicon@scrollrevealicon\endcsname {\simpleiconsmap\symbol{"F398}}
- \expandafter\def\csname simpleicon@scrumallianceicon\endcsname {\simpleiconsmap\symbol{"F399}}
- \expandafter\def\csname simpleicon@scrutinizerciicon\endcsname {\simpleiconsmap\symbol{"F39A}}
- \expandafter\def\csname simpleicon@scylladbicon\endcsname {\simpleiconsmap\symbol{"F39B}}
- \expandafter\def\csname simpleicon@seagateicon\endcsname {\simpleiconsmap\symbol{"F39C}}
- \expandafter\def\csname simpleicon@searxngicon\endcsname {\simpleiconsmap\symbol{"F39D}}
- \expandafter\def\csname simpleicon@seaticon\endcsname {\simpleiconsmap\symbol{"F39E}}
- \expandafter\def\csname simpleicon@seatgeekicon\endcsname {\simpleiconsmap\symbol{"F39F}}
- \expandafter\def\csname simpleicon@securityscorecardicon\endcsname {\simpleiconsmap\symbol{"F3A0}}
- \expandafter\def\csname simpleicon@sefariaicon\endcsname {\simpleiconsmap\symbol{"F3A1}}
- \expandafter\def\csname simpleicon@segaicon\endcsname {\simpleiconsmap\symbol{"F3A2}}
- \expandafter\def\csname simpleicon@seleniumicon\endcsname {\simpleiconsmap\symbol{"F3A3}}
- \expandafter\def\csname simpleicon@sellfyicon\endcsname {\simpleiconsmap\symbol{"F3A4}}
- \expandafter\def\csname simpleicon@semanticreleaseicon\endcsname {\simpleiconsmap\symbol{"F3A5}}
- \expandafter\def\csname simpleicon@semanticscholaricon\endcsname {\simpleiconsmap\symbol{"F3A6}}
- \expandafter\def\csname simpleicon@semanticuiicon\endcsname {\simpleiconsmap\symbol{"F3A7}}
- \expandafter\def\csname simpleicon@semanticuireacticon\endcsname {\simpleiconsmap\symbol{"F3A8}}
- \expandafter\def\csname simpleicon@semanticwebicon\endcsname {\simpleiconsmap\symbol{"F3A9}}
- \expandafter\def\csname simpleicon@semaphoreciicon\endcsname {\simpleiconsmap\symbol{"F3AA}}
- \expandafter\def\csname simpleicon@semrushicon\endcsname {\simpleiconsmap\symbol{"F3AB}}
- \expandafter\def\csname simpleicon@semvericon\endcsname {\simpleiconsmap\symbol{"F3AC}}
- \expandafter\def\csname simpleicon@senchaicon\endcsname {\simpleiconsmap\symbol{"F3AD}}
- \expandafter\def\csname simpleicon@sennheisericon\endcsname {\simpleiconsmap\symbol{"F3AE}}
- \expandafter\def\csname simpleicon@sensuicon\endcsname {\simpleiconsmap\symbol{"F3AF}}
- \expandafter\def\csname simpleicon@sentryicon\endcsname {\simpleiconsmap\symbol{"F3B0}}
- \expandafter\def\csname simpleicon@sepaicon\endcsname {\simpleiconsmap\symbol{"F3B1}}
- \expandafter\def\csname simpleicon@sequelizeicon\endcsname {\simpleiconsmap\symbol{"F3B2}}
- \expandafter\def\csname simpleicon@serverfaulticon\endcsname {\simpleiconsmap\symbol{"F3B3}}
- \expandafter\def\csname simpleicon@serverlessicon\endcsname {\simpleiconsmap\symbol{"F3B4}}
- \expandafter\def\csname simpleicon@sessionicon\endcsname {\simpleiconsmap\symbol{"F3B5}}
- \expandafter\def\csname simpleicon@sessionizeicon\endcsname {\simpleiconsmap\symbol{"F3B6}}
- \expandafter\def\csname simpleicon@setappicon\endcsname {\simpleiconsmap\symbol{"F3B7}}
- \expandafter\def\csname simpleicon@sfmlicon\endcsname {\simpleiconsmap\symbol{"F3B8}}
- \expandafter\def\csname simpleicon@shadcnuiicon\endcsname {\simpleiconsmap\symbol{"F3B9}}
- \expandafter\def\csname simpleicon@shadowicon\endcsname {\simpleiconsmap\symbol{"F3BA}}
- \expandafter\def\csname simpleicon@shanghaimetroicon\endcsname {\simpleiconsmap\symbol{"F3BB}}
- \expandafter\def\csname simpleicon@sharexicon\endcsname {\simpleiconsmap\symbol{"F3BC}}
- \expandafter\def\csname simpleicon@sharpicon\endcsname {\simpleiconsmap\symbol{"F3BD}}
- \expandafter\def\csname simpleicon@shazamicon\endcsname {\simpleiconsmap\symbol{"F3BE}}
- \expandafter\def\csname simpleicon@shellicon\endcsname {\simpleiconsmap\symbol{"F3BF}}
- \expandafter\def\csname simpleicon@shellyicon\endcsname {\simpleiconsmap\symbol{"F3C0}}
- \expandafter\def\csname simpleicon@shenzhenmetroicon\endcsname {\simpleiconsmap\symbol{"F3C1}}
- \expandafter\def\csname simpleicon@shieldsdotioicon\endcsname {\simpleiconsmap\symbol{"F3C2}}
- \expandafter\def\csname simpleicon@shikimoriicon\endcsname {\simpleiconsmap\symbol{"F3C3}}
- \expandafter\def\csname simpleicon@shopeeicon\endcsname {\simpleiconsmap\symbol{"F3C4}}
- \expandafter\def\csname simpleicon@shopifyicon\endcsname {\simpleiconsmap\symbol{"F3C5}}
- \expandafter\def\csname simpleicon@shopwareicon\endcsname {\simpleiconsmap\symbol{"F3C6}}
- \expandafter\def\csname simpleicon@shortcuticon\endcsname {\simpleiconsmap\symbol{"F3C7}}
- \expandafter\def\csname simpleicon@showpadicon\endcsname {\simpleiconsmap\symbol{"F3C8}}
- \expandafter\def\csname simpleicon@showtimeicon\endcsname {\simpleiconsmap\symbol{"F3C9}}
- \expandafter\def\csname simpleicon@showwcaseicon\endcsname {\simpleiconsmap\symbol{"F3CA}}
- \expandafter\def\csname simpleicon@shutterstockicon\endcsname {\simpleiconsmap\symbol{"F3CB}}
- \expandafter\def\csname simpleicon@sidekiqicon\endcsname {\simpleiconsmap\symbol{"F3CC}}
- \expandafter\def\csname simpleicon@sidequesticon\endcsname {\simpleiconsmap\symbol{"F3CD}}
- \expandafter\def\csname simpleicon@siemensicon\endcsname {\simpleiconsmap\symbol{"F3CE}}
- \expandafter\def\csname simpleicon@sifiveicon\endcsname {\simpleiconsmap\symbol{"F3CF}}
- \expandafter\def\csname simpleicon@signalicon\endcsname {\simpleiconsmap\symbol{"F3D0}}
- \expandafter\def\csname simpleicon@similarwebicon\endcsname {\simpleiconsmap\symbol{"F3D1}}
- \expandafter\def\csname simpleicon@simklicon\endcsname {\simpleiconsmap\symbol{"F3D2}}
- \expandafter\def\csname simpleicon@simpleanalyticsicon\endcsname {\simpleiconsmap\symbol{"F3D3}}
- \expandafter\def\csname simpleicon@simpleiconsicon\endcsname {\simpleiconsmap\symbol{"F3D4}}
- \expandafter\def\csname simpleicon@simpleloginicon\endcsname {\simpleiconsmap\symbol{"F3D5}}
- \expandafter\def\csname simpleicon@simplenoteicon\endcsname {\simpleiconsmap\symbol{"F3D6}}
- \expandafter\def\csname simpleicon@sinaweiboicon\endcsname {\simpleiconsmap\symbol{"F3D7}}
- \expandafter\def\csname simpleicon@singaporeairlinesicon\endcsname {\simpleiconsmap\symbol{"F3D8}}
- \expandafter\def\csname simpleicon@singlestoreicon\endcsname {\simpleiconsmap\symbol{"F3D9}}
- \expandafter\def\csname simpleicon@sitecoreicon\endcsname {\simpleiconsmap\symbol{"F3DA}}
- \expandafter\def\csname simpleicon@sitepointicon\endcsname {\simpleiconsmap\symbol{"F3DB}}
- \expandafter\def\csname simpleicon@siyuanicon\endcsname {\simpleiconsmap\symbol{"F3DC}}
- \expandafter\def\csname simpleicon@skaffoldicon\endcsname {\simpleiconsmap\symbol{"F3DD}}
- \expandafter\def\csname simpleicon@sketchicon\endcsname {\simpleiconsmap\symbol{"F3DE}}
- \expandafter\def\csname simpleicon@sketchfabicon\endcsname {\simpleiconsmap\symbol{"F3DF}}
- \expandafter\def\csname simpleicon@sketchupicon\endcsname {\simpleiconsmap\symbol{"F3E0}}
- \expandafter\def\csname simpleicon@skillshareicon\endcsname {\simpleiconsmap\symbol{"F3E1}}
- \expandafter\def\csname simpleicon@skodaicon\endcsname {\simpleiconsmap\symbol{"F3E2}}
- \expandafter\def\csname simpleicon@skyicon\endcsname {\simpleiconsmap\symbol{"F3E3}}
- \expandafter\def\csname simpleicon@skypackicon\endcsname {\simpleiconsmap\symbol{"F3E4}}
- \expandafter\def\csname simpleicon@skypeicon\endcsname {\simpleiconsmap\symbol{"F3E5}}
- \expandafter\def\csname simpleicon@skypeforbusinessicon\endcsname {\simpleiconsmap\symbol{"F3E6}}
- \expandafter\def\csname simpleicon@skyrockicon\endcsname {\simpleiconsmap\symbol{"F3E7}}
- \expandafter\def\csname simpleicon@slackicon\endcsname {\simpleiconsmap\symbol{"F3E8}}
- \expandafter\def\csname simpleicon@slackwareicon\endcsname {\simpleiconsmap\symbol{"F3E9}}
- \expandafter\def\csname simpleicon@slashdoticon\endcsname {\simpleiconsmap\symbol{"F3EA}}
- \expandafter\def\csname simpleicon@slickpicicon\endcsname {\simpleiconsmap\symbol{"F3EB}}
- \expandafter\def\csname simpleicon@slidesicon\endcsname {\simpleiconsmap\symbol{"F3EC}}
- \expandafter\def\csname simpleicon@slideshareicon\endcsname {\simpleiconsmap\symbol{"F3ED}}
- \expandafter\def\csname simpleicon@slinticon\endcsname {\simpleiconsmap\symbol{"F3EE}}
- \expandafter\def\csname simpleicon@smarticon\endcsname {\simpleiconsmap\symbol{"F3EF}}
- \expandafter\def\csname simpleicon@smartthingsicon\endcsname {\simpleiconsmap\symbol{"F3F0}}
- \expandafter\def\csname simpleicon@smashdotggicon\endcsname {\simpleiconsmap\symbol{"F3F1}}
- \expandafter\def\csname simpleicon@smashingmagazineicon\endcsname {\simpleiconsmap\symbol{"F3F2}}
- \expandafter\def\csname simpleicon@smrticon\endcsname {\simpleiconsmap\symbol{"F3F3}}
- \expandafter\def\csname simpleicon@smugmugicon\endcsname {\simpleiconsmap\symbol{"F3F4}}
- \expandafter\def\csname simpleicon@snapchaticon\endcsname {\simpleiconsmap\symbol{"F3F5}}
- \expandafter\def\csname simpleicon@snapcrafticon\endcsname {\simpleiconsmap\symbol{"F3F6}}
- \expandafter\def\csname simpleicon@sncficon\endcsname {\simpleiconsmap\symbol{"F3F7}}
- \expandafter\def\csname simpleicon@snorticon\endcsname {\simpleiconsmap\symbol{"F3F8}}
- \expandafter\def\csname simpleicon@snowflakeicon\endcsname {\simpleiconsmap\symbol{"F3F9}}
- \expandafter\def\csname simpleicon@snowpackicon\endcsname {\simpleiconsmap\symbol{"F3FA}}
- \expandafter\def\csname simpleicon@snykicon\endcsname {\simpleiconsmap\symbol{"F3FB}}
- \expandafter\def\csname simpleicon@socialbladeicon\endcsname {\simpleiconsmap\symbol{"F3FC}}
- \expandafter\def\csname simpleicon@society6icon\endcsname {\simpleiconsmap\symbol{"F3FD}}
- \expandafter\def\csname simpleicon@socketdotioicon\endcsname {\simpleiconsmap\symbol{"F3FE}}
- \expandafter\def\csname simpleicon@softpediaicon\endcsname {\simpleiconsmap\symbol{"F3FF}}
- \expandafter\def\csname simpleicon@sogouicon\endcsname {\simpleiconsmap\symbol{"F400}}
- \expandafter\def\csname simpleicon@solanaicon\endcsname {\simpleiconsmap\symbol{"F401}}
- \expandafter\def\csname simpleicon@solidicon\endcsname {\simpleiconsmap\symbol{"F402}}
- \expandafter\def\csname simpleicon@solidityicon\endcsname {\simpleiconsmap\symbol{"F403}}
- \expandafter\def\csname simpleicon@sololearnicon\endcsname {\simpleiconsmap\symbol{"F404}}
- \expandafter\def\csname simpleicon@solusicon\endcsname {\simpleiconsmap\symbol{"F405}}
- \expandafter\def\csname simpleicon@sonaricon\endcsname {\simpleiconsmap\symbol{"F406}}
- \expandafter\def\csname simpleicon@sonarcloudicon\endcsname {\simpleiconsmap\symbol{"F407}}
- \expandafter\def\csname simpleicon@sonarlinticon\endcsname {\simpleiconsmap\symbol{"F408}}
- \expandafter\def\csname simpleicon@sonarqubeicon\endcsname {\simpleiconsmap\symbol{"F409}}
- \expandafter\def\csname simpleicon@sonarricon\endcsname {\simpleiconsmap\symbol{"F40A}}
- \expandafter\def\csname simpleicon@sonatypeicon\endcsname {\simpleiconsmap\symbol{"F40B}}
- \expandafter\def\csname simpleicon@songkickicon\endcsname {\simpleiconsmap\symbol{"F40C}}
- \expandafter\def\csname simpleicon@songodaicon\endcsname {\simpleiconsmap\symbol{"F40D}}
- \expandafter\def\csname simpleicon@sonicwallicon\endcsname {\simpleiconsmap\symbol{"F40E}}
- \expandafter\def\csname simpleicon@sonosicon\endcsname {\simpleiconsmap\symbol{"F40F}}
- \expandafter\def\csname simpleicon@sonyicon\endcsname {\simpleiconsmap\symbol{"F410}}
- \expandafter\def\csname simpleicon@sorianaicon\endcsname {\simpleiconsmap\symbol{"F411}}
- \expandafter\def\csname simpleicon@soundchartsicon\endcsname {\simpleiconsmap\symbol{"F412}}
- \expandafter\def\csname simpleicon@soundcloudicon\endcsname {\simpleiconsmap\symbol{"F413}}
- \expandafter\def\csname simpleicon@sourceengineicon\endcsname {\simpleiconsmap\symbol{"F414}}
- \expandafter\def\csname simpleicon@sourceforgeicon\endcsname {\simpleiconsmap\symbol{"F415}}
- \expandafter\def\csname simpleicon@sourcehuticon\endcsname {\simpleiconsmap\symbol{"F416}}
- \expandafter\def\csname simpleicon@sourcetreeicon\endcsname {\simpleiconsmap\symbol{"F417}}
- \expandafter\def\csname simpleicon@southwestairlinesicon\endcsname {\simpleiconsmap\symbol{"F418}}
- \expandafter\def\csname simpleicon@spacemacsicon\endcsname {\simpleiconsmap\symbol{"F419}}
- \expandafter\def\csname simpleicon@spaceshipicon\endcsname {\simpleiconsmap\symbol{"F41A}}
- \expandafter\def\csname simpleicon@spacexicon\endcsname {\simpleiconsmap\symbol{"F41B}}
- \expandafter\def\csname simpleicon@spacyicon\endcsname {\simpleiconsmap\symbol{"F41C}}
- \expandafter\def\csname simpleicon@sparkaricon\endcsname {\simpleiconsmap\symbol{"F41D}}
- \expandafter\def\csname simpleicon@sparkasseicon\endcsname {\simpleiconsmap\symbol{"F41E}}
- \expandafter\def\csname simpleicon@sparkfunicon\endcsname {\simpleiconsmap\symbol{"F41F}}
- \expandafter\def\csname simpleicon@sparkposticon\endcsname {\simpleiconsmap\symbol{"F420}}
- \expandafter\def\csname simpleicon@spdxicon\endcsname {\simpleiconsmap\symbol{"F421}}
- \expandafter\def\csname simpleicon@speakerdeckicon\endcsname {\simpleiconsmap\symbol{"F422}}
- \expandafter\def\csname simpleicon@spectrumicon\endcsname {\simpleiconsmap\symbol{"F423}}
- \expandafter\def\csname simpleicon@speedtesticon\endcsname {\simpleiconsmap\symbol{"F424}}
- \expandafter\def\csname simpleicon@speedypageicon\endcsname {\simpleiconsmap\symbol{"F425}}
- \expandafter\def\csname simpleicon@sphinxicon\endcsname {\simpleiconsmap\symbol{"F426}}
- \expandafter\def\csname simpleicon@spigotmcicon\endcsname {\simpleiconsmap\symbol{"F427}}
- \expandafter\def\csname simpleicon@spineicon\endcsname {\simpleiconsmap\symbol{"F428}}
- \expandafter\def\csname simpleicon@spinnakericon\endcsname {\simpleiconsmap\symbol{"F429}}
- \expandafter\def\csname simpleicon@spinrillaicon\endcsname {\simpleiconsmap\symbol{"F42A}}
- \expandafter\def\csname simpleicon@splunkicon\endcsname {\simpleiconsmap\symbol{"F42B}}
- \expandafter\def\csname simpleicon@spojicon\endcsname {\simpleiconsmap\symbol{"F42C}}
- \expandafter\def\csname simpleicon@spondicon\endcsname {\simpleiconsmap\symbol{"F42D}}
- \expandafter\def\csname simpleicon@spotifyicon\endcsname {\simpleiconsmap\symbol{"F42E}}
- \expandafter\def\csname simpleicon@spotlighticon\endcsname {\simpleiconsmap\symbol{"F42F}}
- \expandafter\def\csname simpleicon@spreadshirticon\endcsname {\simpleiconsmap\symbol{"F430}}
- \expandafter\def\csname simpleicon@spreakericon\endcsname {\simpleiconsmap\symbol{"F431}}
- \expandafter\def\csname simpleicon@springicon\endcsname {\simpleiconsmap\symbol{"F432}}
- \expandafter\def\csname simpleicon@springcreatorsicon\endcsname {\simpleiconsmap\symbol{"F433}}
- \expandafter\def\csname simpleicon@springbooticon\endcsname {\simpleiconsmap\symbol{"F434}}
- \expandafter\def\csname simpleicon@springsecurityicon\endcsname {\simpleiconsmap\symbol{"F435}}
- \expandafter\def\csname simpleicon@spyderideicon\endcsname {\simpleiconsmap\symbol{"F436}}
- \expandafter\def\csname simpleicon@sqlalchemyicon\endcsname {\simpleiconsmap\symbol{"F437}}
- \expandafter\def\csname simpleicon@sqliteicon\endcsname {\simpleiconsmap\symbol{"F438}}
- \expandafter\def\csname simpleicon@squareicon\endcsname {\simpleiconsmap\symbol{"F439}}
- \expandafter\def\csname simpleicon@squareenixicon\endcsname {\simpleiconsmap\symbol{"F43A}}
- \expandafter\def\csname simpleicon@squarespaceicon\endcsname {\simpleiconsmap\symbol{"F43B}}
- \expandafter\def\csname simpleicon@srgssricon\endcsname {\simpleiconsmap\symbol{"F43C}}
- \expandafter\def\csname simpleicon@ssrnicon\endcsname {\simpleiconsmap\symbol{"F43D}}
- \expandafter\def\csname simpleicon@ssticon\endcsname {\simpleiconsmap\symbol{"F43E}}
- \expandafter\def\csname simpleicon@stackbiticon\endcsname {\simpleiconsmap\symbol{"F43F}}
- \expandafter\def\csname simpleicon@stackblitzicon\endcsname {\simpleiconsmap\symbol{"F440}}
- \expandafter\def\csname simpleicon@stackediticon\endcsname {\simpleiconsmap\symbol{"F441}}
- \expandafter\def\csname simpleicon@stackexchangeicon\endcsname {\simpleiconsmap\symbol{"F442}}
- \expandafter\def\csname simpleicon@stackhawkicon\endcsname {\simpleiconsmap\symbol{"F443}}
- \expandafter\def\csname simpleicon@stackoverflowicon\endcsname {\simpleiconsmap\symbol{"F444}}
- \expandafter\def\csname simpleicon@stackpathicon\endcsname {\simpleiconsmap\symbol{"F445}}
- \expandafter\def\csname simpleicon@stackshareicon\endcsname {\simpleiconsmap\symbol{"F446}}
- \expandafter\def\csname simpleicon@stadiaicon\endcsname {\simpleiconsmap\symbol{"F447}}
- \expandafter\def\csname simpleicon@staffbaseicon\endcsname {\simpleiconsmap\symbol{"F448}}
- \expandafter\def\csname simpleicon@stagetimericon\endcsname {\simpleiconsmap\symbol{"F449}}
- \expandafter\def\csname simpleicon@standardjsicon\endcsname {\simpleiconsmap\symbol{"F44A}}
- \expandafter\def\csname simpleicon@standardresumeicon\endcsname {\simpleiconsmap\symbol{"F44B}}
- \expandafter\def\csname simpleicon@starbucksicon\endcsname {\simpleiconsmap\symbol{"F44C}}
- \expandafter\def\csname simpleicon@stardockicon\endcsname {\simpleiconsmap\symbol{"F44D}}
- \expandafter\def\csname simpleicon@starlingbankicon\endcsname {\simpleiconsmap\symbol{"F44E}}
- \expandafter\def\csname simpleicon@starshipicon\endcsname {\simpleiconsmap\symbol{"F44F}}
- \expandafter\def\csname simpleicon@startrekicon\endcsname {\simpleiconsmap\symbol{"F450}}
- \expandafter\def\csname simpleicon@starzicon\endcsname {\simpleiconsmap\symbol{"F451}}
- \expandafter\def\csname simpleicon@statamicicon\endcsname {\simpleiconsmap\symbol{"F452}}
- \expandafter\def\csname simpleicon@statistaicon\endcsname {\simpleiconsmap\symbol{"F453}}
- \expandafter\def\csname simpleicon@statuspageicon\endcsname {\simpleiconsmap\symbol{"F454}}
- \expandafter\def\csname simpleicon@statuspalicon\endcsname {\simpleiconsmap\symbol{"F455}}
- \expandafter\def\csname simpleicon@steamicon\endcsname {\simpleiconsmap\symbol{"F456}}
- \expandafter\def\csname simpleicon@steamdbicon\endcsname {\simpleiconsmap\symbol{"F457}}
- \expandafter\def\csname simpleicon@steamdeckicon\endcsname {\simpleiconsmap\symbol{"F458}}
- \expandafter\def\csname simpleicon@steamworksicon\endcsname {\simpleiconsmap\symbol{"F459}}
- \expandafter\def\csname simpleicon@steelseriesicon\endcsname {\simpleiconsmap\symbol{"F45A}}
- \expandafter\def\csname simpleicon@steemicon\endcsname {\simpleiconsmap\symbol{"F45B}}
- \expandafter\def\csname simpleicon@steemiticon\endcsname {\simpleiconsmap\symbol{"F45C}}
- \expandafter\def\csname simpleicon@steinbergicon\endcsname {\simpleiconsmap\symbol{"F45D}}
- \expandafter\def\csname simpleicon@stellaricon\endcsname {\simpleiconsmap\symbol{"F45E}}
- \expandafter\def\csname simpleicon@stencilicon\endcsname {\simpleiconsmap\symbol{"F45F}}
- \expandafter\def\csname simpleicon@stencylicon\endcsname {\simpleiconsmap\symbol{"F460}}
- \expandafter\def\csname simpleicon@stimulusicon\endcsname {\simpleiconsmap\symbol{"F461}}
- \expandafter\def\csname simpleicon@stitchericon\endcsname {\simpleiconsmap\symbol{"F462}}
- \expandafter\def\csname simpleicon@stmicroelectronicsicon\endcsname {\simpleiconsmap\symbol{"F463}}
- \expandafter\def\csname simpleicon@stockxicon\endcsname {\simpleiconsmap\symbol{"F464}}
- \expandafter\def\csname simpleicon@stopstalkicon\endcsname {\simpleiconsmap\symbol{"F465}}
- \expandafter\def\csname simpleicon@storyblokicon\endcsname {\simpleiconsmap\symbol{"F466}}
- \expandafter\def\csname simpleicon@storybookicon\endcsname {\simpleiconsmap\symbol{"F467}}
- \expandafter\def\csname simpleicon@strapiicon\endcsname {\simpleiconsmap\symbol{"F468}}
- \expandafter\def\csname simpleicon@stravaicon\endcsname {\simpleiconsmap\symbol{"F469}}
- \expandafter\def\csname simpleicon@streamlabsicon\endcsname {\simpleiconsmap\symbol{"F46A}}
- \expandafter\def\csname simpleicon@streamliticon\endcsname {\simpleiconsmap\symbol{"F46B}}
- \expandafter\def\csname simpleicon@streamrunnersicon\endcsname {\simpleiconsmap\symbol{"F46C}}
- \expandafter\def\csname simpleicon@stripeicon\endcsname {\simpleiconsmap\symbol{"F46D}}
- \expandafter\def\csname simpleicon@strongswanicon\endcsname {\simpleiconsmap\symbol{"F46E}}
- \expandafter\def\csname simpleicon@strykericon\endcsname {\simpleiconsmap\symbol{"F46F}}
- \expandafter\def\csname simpleicon@stubhubicon\endcsname {\simpleiconsmap\symbol{"F470}}
- \expandafter\def\csname simpleicon@studio3ticon\endcsname {\simpleiconsmap\symbol{"F471}}
- \expandafter\def\csname simpleicon@studyverseicon\endcsname {\simpleiconsmap\symbol{"F472}}
- \expandafter\def\csname simpleicon@styledcomponentsicon\endcsname {\simpleiconsmap\symbol{"F473}}
- \expandafter\def\csname simpleicon@stylelinticon\endcsname {\simpleiconsmap\symbol{"F474}}
- \expandafter\def\csname simpleicon@styleshareicon\endcsname {\simpleiconsmap\symbol{"F475}}
- \expandafter\def\csname simpleicon@stylusicon\endcsname {\simpleiconsmap\symbol{"F476}}
- \expandafter\def\csname simpleicon@subaruicon\endcsname {\simpleiconsmap\symbol{"F477}}
- \expandafter\def\csname simpleicon@sublimetexticon\endcsname {\simpleiconsmap\symbol{"F478}}
- \expandafter\def\csname simpleicon@substackicon\endcsname {\simpleiconsmap\symbol{"F479}}
- \expandafter\def\csname simpleicon@subtitleediticon\endcsname {\simpleiconsmap\symbol{"F47A}}
- \expandafter\def\csname simpleicon@subversionicon\endcsname {\simpleiconsmap\symbol{"F47B}}
- \expandafter\def\csname simpleicon@sucklessicon\endcsname {\simpleiconsmap\symbol{"F47C}}
- \expandafter\def\csname simpleicon@sumologicicon\endcsname {\simpleiconsmap\symbol{"F47D}}
- \expandafter\def\csname simpleicon@sunriseicon\endcsname {\simpleiconsmap\symbol{"F47E}}
- \expandafter\def\csname simpleicon@supabaseicon\endcsname {\simpleiconsmap\symbol{"F47F}}
- \expandafter\def\csname simpleicon@supercreaseicon\endcsname {\simpleiconsmap\symbol{"F480}}
- \expandafter\def\csname simpleicon@supermicroicon\endcsname {\simpleiconsmap\symbol{"F481}}
- \expandafter\def\csname simpleicon@superusericon\endcsname {\simpleiconsmap\symbol{"F482}}
- \expandafter\def\csname simpleicon@surrealdbicon\endcsname {\simpleiconsmap\symbol{"F483}}
- \expandafter\def\csname simpleicon@surveymonkeyicon\endcsname {\simpleiconsmap\symbol{"F484}}
- \expandafter\def\csname simpleicon@suseicon\endcsname {\simpleiconsmap\symbol{"F485}}
- \expandafter\def\csname simpleicon@suzukiicon\endcsname {\simpleiconsmap\symbol{"F486}}
- \expandafter\def\csname simpleicon@svelteicon\endcsname {\simpleiconsmap\symbol{"F487}}
- \expandafter\def\csname simpleicon@svgicon\endcsname {\simpleiconsmap\symbol{"F488}}
- \expandafter\def\csname simpleicon@svgdotjsicon\endcsname {\simpleiconsmap\symbol{"F489}}
- \expandafter\def\csname simpleicon@svgoicon\endcsname {\simpleiconsmap\symbol{"F48A}}
- \expandafter\def\csname simpleicon@swaggericon\endcsname {\simpleiconsmap\symbol{"F48B}}
- \expandafter\def\csname simpleicon@swarmicon\endcsname {\simpleiconsmap\symbol{"F48C}}
- \expandafter\def\csname simpleicon@swcicon\endcsname {\simpleiconsmap\symbol{"F48D}}
- \expandafter\def\csname simpleicon@swifticon\endcsname {\simpleiconsmap\symbol{"F48E}}
- \expandafter\def\csname simpleicon@swiggyicon\endcsname {\simpleiconsmap\symbol{"F48F}}
- \expandafter\def\csname simpleicon@swipericon\endcsname {\simpleiconsmap\symbol{"F490}}
- \expandafter\def\csname simpleicon@swricon\endcsname {\simpleiconsmap\symbol{"F491}}
- \expandafter\def\csname simpleicon@symantecicon\endcsname {\simpleiconsmap\symbol{"F492}}
- \expandafter\def\csname simpleicon@symbolabicon\endcsname {\simpleiconsmap\symbol{"F493}}
- \expandafter\def\csname simpleicon@symfonyicon\endcsname {\simpleiconsmap\symbol{"F494}}
- \expandafter\def\csname simpleicon@symphonyicon\endcsname {\simpleiconsmap\symbol{"F495}}
- \expandafter\def\csname simpleicon@sympyicon\endcsname {\simpleiconsmap\symbol{"F496}}
- \expandafter\def\csname simpleicon@syncthingicon\endcsname {\simpleiconsmap\symbol{"F497}}
- \expandafter\def\csname simpleicon@synologyicon\endcsname {\simpleiconsmap\symbol{"F498}}
- \expandafter\def\csname simpleicon@system76icon\endcsname {\simpleiconsmap\symbol{"F499}}
- \expandafter\def\csname simpleicon@tabelogicon\endcsname {\simpleiconsmap\symbol{"F49A}}
- \expandafter\def\csname simpleicon@tableauicon\endcsname {\simpleiconsmap\symbol{"F49B}}
- \expandafter\def\csname simpleicon@tablecheckicon\endcsname {\simpleiconsmap\symbol{"F49C}}
- \expandafter\def\csname simpleicon@tacobellicon\endcsname {\simpleiconsmap\symbol{"F49D}}
- \expandafter\def\csname simpleicon@tadoicon\endcsname {\simpleiconsmap\symbol{"F49E}}
- \expandafter\def\csname simpleicon@taichigraphicsicon\endcsname {\simpleiconsmap\symbol{"F49F}}
- \expandafter\def\csname simpleicon@taichilangicon\endcsname {\simpleiconsmap\symbol{"F4A0}}
- \expandafter\def\csname simpleicon@tailsicon\endcsname {\simpleiconsmap\symbol{"F4A1}}
- \expandafter\def\csname simpleicon@tailscaleicon\endcsname {\simpleiconsmap\symbol{"F4A2}}
- \expandafter\def\csname simpleicon@tailwindcssicon\endcsname {\simpleiconsmap\symbol{"F4A3}}
- \expandafter\def\csname simpleicon@taipyicon\endcsname {\simpleiconsmap\symbol{"F4A4}}
- \expandafter\def\csname simpleicon@taketwointeractivesoftwareicon\endcsname {\simpleiconsmap\symbol{"F4A5}}
- \expandafter\def\csname simpleicon@talendicon\endcsname {\simpleiconsmap\symbol{"F4A6}}
- \expandafter\def\csname simpleicon@talenthouseicon\endcsname {\simpleiconsmap\symbol{"F4A7}}
- \expandafter\def\csname simpleicon@talosicon\endcsname {\simpleiconsmap\symbol{"F4A8}}
- \expandafter\def\csname simpleicon@tamiyaicon\endcsname {\simpleiconsmap\symbol{"F4A9}}
- \expandafter\def\csname simpleicon@tampermonkeyicon\endcsname {\simpleiconsmap\symbol{"F4AA}}
- \expandafter\def\csname simpleicon@taobaoicon\endcsname {\simpleiconsmap\symbol{"F4AB}}
- \expandafter\def\csname simpleicon@tapasicon\endcsname {\simpleiconsmap\symbol{"F4AC}}
- \expandafter\def\csname simpleicon@targeticon\endcsname {\simpleiconsmap\symbol{"F4AD}}
- \expandafter\def\csname simpleicon@taskicon\endcsname {\simpleiconsmap\symbol{"F4AE}}
- \expandafter\def\csname simpleicon@tasmotaicon\endcsname {\simpleiconsmap\symbol{"F4AF}}
- \expandafter\def\csname simpleicon@tataicon\endcsname {\simpleiconsmap\symbol{"F4B0}}
- \expandafter\def\csname simpleicon@tauriicon\endcsname {\simpleiconsmap\symbol{"F4B1}}
- \expandafter\def\csname simpleicon@taxbuzzicon\endcsname {\simpleiconsmap\symbol{"F4B2}}
- \expandafter\def\csname simpleicon@tcsicon\endcsname {\simpleiconsmap\symbol{"F4B3}}
- \expandafter\def\csname simpleicon@tealicon\endcsname {\simpleiconsmap\symbol{"F4B4}}
- \expandafter\def\csname simpleicon@teamcityicon\endcsname {\simpleiconsmap\symbol{"F4B5}}
- \expandafter\def\csname simpleicon@teamspeakicon\endcsname {\simpleiconsmap\symbol{"F4B6}}
- \expandafter\def\csname simpleicon@teamviewericon\endcsname {\simpleiconsmap\symbol{"F4B7}}
- \expandafter\def\csname simpleicon@tedicon\endcsname {\simpleiconsmap\symbol{"F4B8}}
- \expandafter\def\csname simpleicon@teepublicicon\endcsname {\simpleiconsmap\symbol{"F4B9}}
- \expandafter\def\csname simpleicon@teespringicon\endcsname {\simpleiconsmap\symbol{"F4BA}}
- \expandafter\def\csname simpleicon@tektonicon\endcsname {\simpleiconsmap\symbol{"F4BB}}
- \expandafter\def\csname simpleicon@tele5icon\endcsname {\simpleiconsmap\symbol{"F4BC}}
- \expandafter\def\csname simpleicon@telegramicon\endcsname {\simpleiconsmap\symbol{"F4BD}}
- \expandafter\def\csname simpleicon@telegraphicon\endcsname {\simpleiconsmap\symbol{"F4BE}}
- \expandafter\def\csname simpleicon@telequebecicon\endcsname {\simpleiconsmap\symbol{"F4BF}}
- \expandafter\def\csname simpleicon@temporalicon\endcsname {\simpleiconsmap\symbol{"F4C0}}
- \expandafter\def\csname simpleicon@tencentqqicon\endcsname {\simpleiconsmap\symbol{"F4C1}}
- \expandafter\def\csname simpleicon@tensorflowicon\endcsname {\simpleiconsmap\symbol{"F4C2}}
- \expandafter\def\csname simpleicon@teradataicon\endcsname {\simpleiconsmap\symbol{"F4C3}}
- \expandafter\def\csname simpleicon@teratailicon\endcsname {\simpleiconsmap\symbol{"F4C4}}
- \expandafter\def\csname simpleicon@termiusicon\endcsname {\simpleiconsmap\symbol{"F4C5}}
- \expandafter\def\csname simpleicon@terraformicon\endcsname {\simpleiconsmap\symbol{"F4C6}}
- \expandafter\def\csname simpleicon@tescoicon\endcsname {\simpleiconsmap\symbol{"F4C7}}
- \expandafter\def\csname simpleicon@teslaicon\endcsname {\simpleiconsmap\symbol{"F4C8}}
- \expandafter\def\csname simpleicon@testcafeicon\endcsname {\simpleiconsmap\symbol{"F4C9}}
- \expandafter\def\csname simpleicon@testinicon\endcsname {\simpleiconsmap\symbol{"F4CA}}
- \expandafter\def\csname simpleicon@testinglibraryicon\endcsname {\simpleiconsmap\symbol{"F4CB}}
- \expandafter\def\csname simpleicon@testrailicon\endcsname {\simpleiconsmap\symbol{"F4CC}}
- \expandafter\def\csname simpleicon@tethericon\endcsname {\simpleiconsmap\symbol{"F4CD}}
- \expandafter\def\csname simpleicon@textpatternicon\endcsname {\simpleiconsmap\symbol{"F4CE}}
- \expandafter\def\csname simpleicon@tgaicon\endcsname {\simpleiconsmap\symbol{"F4CF}}
- \expandafter\def\csname simpleicon@thangsicon\endcsname {\simpleiconsmap\symbol{"F4D0}}
- \expandafter\def\csname simpleicon@thealgorithmsicon\endcsname {\simpleiconsmap\symbol{"F4D1}}
- \expandafter\def\csname simpleicon@theboringcompanyicon\endcsname {\simpleiconsmap\symbol{"F4D2}}
- \expandafter\def\csname simpleicon@theconversationicon\endcsname {\simpleiconsmap\symbol{"F4D3}}
- \expandafter\def\csname simpleicon@thefinalsicon\endcsname {\simpleiconsmap\symbol{"F4D4}}
- \expandafter\def\csname simpleicon@theirishtimesicon\endcsname {\simpleiconsmap\symbol{"F4D5}}
- \expandafter\def\csname simpleicon@themightyicon\endcsname {\simpleiconsmap\symbol{"F4D6}}
- \expandafter\def\csname simpleicon@themodelsresourceicon\endcsname {\simpleiconsmap\symbol{"F4D7}}
- \expandafter\def\csname simpleicon@themoviedatabaseicon\endcsname {\simpleiconsmap\symbol{"F4D8}}
- \expandafter\def\csname simpleicon@thenorthfaceicon\endcsname {\simpleiconsmap\symbol{"F4D9}}
- \expandafter\def\csname simpleicon@theodinprojecticon\endcsname {\simpleiconsmap\symbol{"F4DA}}
- \expandafter\def\csname simpleicon@theregistericon\endcsname {\simpleiconsmap\symbol{"F4DB}}
- \expandafter\def\csname simpleicon@thesoundsresourceicon\endcsname {\simpleiconsmap\symbol{"F4DC}}
- \expandafter\def\csname simpleicon@thespritersresourceicon\endcsname {\simpleiconsmap\symbol{"F4DD}}
- \expandafter\def\csname simpleicon@thewashingtonposticon\endcsname {\simpleiconsmap\symbol{"F4DE}}
- \expandafter\def\csname simpleicon@thingiverseicon\endcsname {\simpleiconsmap\symbol{"F4DF}}
- \expandafter\def\csname simpleicon@thinkpadicon\endcsname {\simpleiconsmap\symbol{"F4E0}}
- \expandafter\def\csname simpleicon@thirdwebicon\endcsname {\simpleiconsmap\symbol{"F4E1}}
- \expandafter\def\csname simpleicon@threadlessicon\endcsname {\simpleiconsmap\symbol{"F4E2}}
- \expandafter\def\csname simpleicon@threadsicon\endcsname {\simpleiconsmap\symbol{"F4E3}}
- \expandafter\def\csname simpleicon@threedotjsicon\endcsname {\simpleiconsmap\symbol{"F4E4}}
- \expandafter\def\csname simpleicon@threemaicon\endcsname {\simpleiconsmap\symbol{"F4E5}}
- \expandafter\def\csname simpleicon@thumbtackicon\endcsname {\simpleiconsmap\symbol{"F4E6}}
- \expandafter\def\csname simpleicon@thunderbirdicon\endcsname {\simpleiconsmap\symbol{"F4E7}}
- \expandafter\def\csname simpleicon@thunderstoreicon\endcsname {\simpleiconsmap\symbol{"F4E8}}
- \expandafter\def\csname simpleicon@thurgauerkantonalbankicon\endcsname {\simpleiconsmap\symbol{"F4E9}}
- \expandafter\def\csname simpleicon@thymeleaficon\endcsname {\simpleiconsmap\symbol{"F4EA}}
- \expandafter\def\csname simpleicon@ticketmastericon\endcsname {\simpleiconsmap\symbol{"F4EB}}
- \expandafter\def\csname simpleicon@ticktickicon\endcsname {\simpleiconsmap\symbol{"F4EC}}
- \expandafter\def\csname simpleicon@tidalicon\endcsname {\simpleiconsmap\symbol{"F4ED}}
- \expandafter\def\csname simpleicon@tiddlywikiicon\endcsname {\simpleiconsmap\symbol{"F4EE}}
- \expandafter\def\csname simpleicon@tideicon\endcsname {\simpleiconsmap\symbol{"F4EF}}
- \expandafter\def\csname simpleicon@tidyverseicon\endcsname {\simpleiconsmap\symbol{"F4F0}}
- \expandafter\def\csname simpleicon@tietoevryicon\endcsname {\simpleiconsmap\symbol{"F4F1}}
- \expandafter\def\csname simpleicon@tiktokicon\endcsname {\simpleiconsmap\symbol{"F4F2}}
- \expandafter\def\csname simpleicon@tildapublishingicon\endcsname {\simpleiconsmap\symbol{"F4F3}}
- \expandafter\def\csname simpleicon@tileicon\endcsname {\simpleiconsmap\symbol{"F4F4}}
- \expandafter\def\csname simpleicon@timescaleicon\endcsname {\simpleiconsmap\symbol{"F4F5}}
- \expandafter\def\csname simpleicon@tinaicon\endcsname {\simpleiconsmap\symbol{"F4F6}}
- \expandafter\def\csname simpleicon@tindericon\endcsname {\simpleiconsmap\symbol{"F4F7}}
- \expandafter\def\csname simpleicon@tindieicon\endcsname {\simpleiconsmap\symbol{"F4F8}}
- \expandafter\def\csname simpleicon@tinkercadicon\endcsname {\simpleiconsmap\symbol{"F4F9}}
- \expandafter\def\csname simpleicon@tinygradicon\endcsname {\simpleiconsmap\symbol{"F4FA}}
- \expandafter\def\csname simpleicon@tinylettericon\endcsname {\simpleiconsmap\symbol{"F4FB}}
- \expandafter\def\csname simpleicon@tistoryicon\endcsname {\simpleiconsmap\symbol{"F4FC}}
- \expandafter\def\csname simpleicon@tldrawicon\endcsname {\simpleiconsmap\symbol{"F4FD}}
- \expandafter\def\csname simpleicon@tmobileicon\endcsname {\simpleiconsmap\symbol{"F4FE}}
- \expandafter\def\csname simpleicon@tmuxicon\endcsname {\simpleiconsmap\symbol{"F4FF}}
- \expandafter\def\csname simpleicon@todoisticon\endcsname {\simpleiconsmap\symbol{"F500}}
- \expandafter\def\csname simpleicon@togglicon\endcsname {\simpleiconsmap\symbol{"F501}}
- \expandafter\def\csname simpleicon@toggltrackicon\endcsname {\simpleiconsmap\symbol{"F502}}
- \expandafter\def\csname simpleicon@tokyometroicon\endcsname {\simpleiconsmap\symbol{"F503}}
- \expandafter\def\csname simpleicon@tollicon\endcsname {\simpleiconsmap\symbol{"F504}}
- \expandafter\def\csname simpleicon@tomlicon\endcsname {\simpleiconsmap\symbol{"F505}}
- \expandafter\def\csname simpleicon@tomorrowlandicon\endcsname {\simpleiconsmap\symbol{"F506}}
- \expandafter\def\csname simpleicon@tonicon\endcsname {\simpleiconsmap\symbol{"F507}}
- \expandafter\def\csname simpleicon@topcodericon\endcsname {\simpleiconsmap\symbol{"F508}}
- \expandafter\def\csname simpleicon@topdotggicon\endcsname {\simpleiconsmap\symbol{"F509}}
- \expandafter\def\csname simpleicon@toptalicon\endcsname {\simpleiconsmap\symbol{"F50A}}
- \expandafter\def\csname simpleicon@torbrowsericon\endcsname {\simpleiconsmap\symbol{"F50B}}
- \expandafter\def\csname simpleicon@torprojecticon\endcsname {\simpleiconsmap\symbol{"F50C}}
- \expandafter\def\csname simpleicon@toshibaicon\endcsname {\simpleiconsmap\symbol{"F50D}}
- \expandafter\def\csname simpleicon@totvsicon\endcsname {\simpleiconsmap\symbol{"F50E}}
- \expandafter\def\csname simpleicon@tourboxicon\endcsname {\simpleiconsmap\symbol{"F50F}}
- \expandafter\def\csname simpleicon@towericon\endcsname {\simpleiconsmap\symbol{"F510}}
- \expandafter\def\csname simpleicon@toyotaicon\endcsname {\simpleiconsmap\symbol{"F511}}
- \expandafter\def\csname simpleicon@tplinkicon\endcsname {\simpleiconsmap\symbol{"F512}}
- \expandafter\def\csname simpleicon@tqdmicon\endcsname {\simpleiconsmap\symbol{"F513}}
- \expandafter\def\csname simpleicon@traccaricon\endcsname {\simpleiconsmap\symbol{"F514}}
- \expandafter\def\csname simpleicon@tradingviewicon\endcsname {\simpleiconsmap\symbol{"F515}}
- \expandafter\def\csname simpleicon@traefikmeshicon\endcsname {\simpleiconsmap\symbol{"F516}}
- \expandafter\def\csname simpleicon@traefikproxyicon\endcsname {\simpleiconsmap\symbol{"F517}}
- \expandafter\def\csname simpleicon@trailforksicon\endcsname {\simpleiconsmap\symbol{"F518}}
- \expandafter\def\csname simpleicon@trainerroadicon\endcsname {\simpleiconsmap\symbol{"F519}}
- \expandafter\def\csname simpleicon@trakticon\endcsname {\simpleiconsmap\symbol{"F51A}}
- \expandafter\def\csname simpleicon@transifexicon\endcsname {\simpleiconsmap\symbol{"F51B}}
- \expandafter\def\csname simpleicon@transmissionicon\endcsname {\simpleiconsmap\symbol{"F51C}}
- \expandafter\def\csname simpleicon@transportforirelandicon\endcsname {\simpleiconsmap\symbol{"F51D}}
- \expandafter\def\csname simpleicon@transportforlondonicon\endcsname {\simpleiconsmap\symbol{"F51E}}
- \expandafter\def\csname simpleicon@travisciicon\endcsname {\simpleiconsmap\symbol{"F51F}}
- \expandafter\def\csname simpleicon@treehouseicon\endcsname {\simpleiconsmap\symbol{"F520}}
- \expandafter\def\csname simpleicon@trelloicon\endcsname {\simpleiconsmap\symbol{"F521}}
- \expandafter\def\csname simpleicon@trendmicroicon\endcsname {\simpleiconsmap\symbol{"F522}}
- \expandafter\def\csname simpleicon@treyarchicon\endcsname {\simpleiconsmap\symbol{"F523}}
- \expandafter\def\csname simpleicon@tricentisicon\endcsname {\simpleiconsmap\symbol{"F524}}
- \expandafter\def\csname simpleicon@triliumicon\endcsname {\simpleiconsmap\symbol{"F525}}
- \expandafter\def\csname simpleicon@trillericon\endcsname {\simpleiconsmap\symbol{"F526}}
- \expandafter\def\csname simpleicon@trillertvicon\endcsname {\simpleiconsmap\symbol{"F527}}
- \expandafter\def\csname simpleicon@trinoicon\endcsname {\simpleiconsmap\symbol{"F528}}
- \expandafter\def\csname simpleicon@tripadvisoricon\endcsname {\simpleiconsmap\symbol{"F529}}
- \expandafter\def\csname simpleicon@tripdotcomicon\endcsname {\simpleiconsmap\symbol{"F52A}}
- \expandafter\def\csname simpleicon@trivyicon\endcsname {\simpleiconsmap\symbol{"F52B}}
- \expandafter\def\csname simpleicon@troveicon\endcsname {\simpleiconsmap\symbol{"F52C}}
- \expandafter\def\csname simpleicon@trpcicon\endcsname {\simpleiconsmap\symbol{"F52D}}
- \expandafter\def\csname simpleicon@truenasicon\endcsname {\simpleiconsmap\symbol{"F52E}}
- \expandafter\def\csname simpleicon@trueupicon\endcsname {\simpleiconsmap\symbol{"F52F}}
- \expandafter\def\csname simpleicon@truliaicon\endcsname {\simpleiconsmap\symbol{"F530}}
- \expandafter\def\csname simpleicon@trustedshopsicon\endcsname {\simpleiconsmap\symbol{"F531}}
- \expandafter\def\csname simpleicon@trustpiloticon\endcsname {\simpleiconsmap\symbol{"F532}}
- \expandafter\def\csname simpleicon@tryhackmeicon\endcsname {\simpleiconsmap\symbol{"F533}}
- \expandafter\def\csname simpleicon@tryitonlineicon\endcsname {\simpleiconsmap\symbol{"F534}}
- \expandafter\def\csname simpleicon@tsnodeicon\endcsname {\simpleiconsmap\symbol{"F535}}
- \expandafter\def\csname simpleicon@tubiicon\endcsname {\simpleiconsmap\symbol{"F536}}
- \expandafter\def\csname simpleicon@tuiicon\endcsname {\simpleiconsmap\symbol{"F537}}
- \expandafter\def\csname simpleicon@tumblricon\endcsname {\simpleiconsmap\symbol{"F538}}
- \expandafter\def\csname simpleicon@tuneinicon\endcsname {\simpleiconsmap\symbol{"F539}}
- \expandafter\def\csname simpleicon@turboicon\endcsname {\simpleiconsmap\symbol{"F53A}}
- \expandafter\def\csname simpleicon@turborepoicon\endcsname {\simpleiconsmap\symbol{"F53B}}
- \expandafter\def\csname simpleicon@turbosquidicon\endcsname {\simpleiconsmap\symbol{"F53C}}
- \expandafter\def\csname simpleicon@turkishairlinesicon\endcsname {\simpleiconsmap\symbol{"F53D}}
- \expandafter\def\csname simpleicon@tursoicon\endcsname {\simpleiconsmap\symbol{"F53E}}
- \expandafter\def\csname simpleicon@tutanotaicon\endcsname {\simpleiconsmap\symbol{"F53F}}
- \expandafter\def\csname simpleicon@tv4playicon\endcsname {\simpleiconsmap\symbol{"F540}}
- \expandafter\def\csname simpleicon@tvtimeicon\endcsname {\simpleiconsmap\symbol{"F541}}
- \expandafter\def\csname simpleicon@twilioicon\endcsname {\simpleiconsmap\symbol{"F542}}
- \expandafter\def\csname simpleicon@twinklyicon\endcsname {\simpleiconsmap\symbol{"F543}}
- \expandafter\def\csname simpleicon@twinmotionicon\endcsname {\simpleiconsmap\symbol{"F544}}
- \expandafter\def\csname simpleicon@twitchicon\endcsname {\simpleiconsmap\symbol{"F545}}
- \expandafter\def\csname simpleicon@typeformicon\endcsname {\simpleiconsmap\symbol{"F546}}
- \expandafter\def\csname simpleicon@typeormicon\endcsname {\simpleiconsmap\symbol{"F547}}
- \expandafter\def\csname simpleicon@typericon\endcsname {\simpleiconsmap\symbol{"F548}}
- \expandafter\def\csname simpleicon@typescripticon\endcsname {\simpleiconsmap\symbol{"F549}}
- \expandafter\def\csname simpleicon@typo3icon\endcsname {\simpleiconsmap\symbol{"F54A}}
- \expandafter\def\csname simpleicon@typsticon\endcsname {\simpleiconsmap\symbol{"F54B}}
- \expandafter\def\csname simpleicon@ubericon\endcsname {\simpleiconsmap\symbol{"F54C}}
- \expandafter\def\csname simpleicon@ubereatsicon\endcsname {\simpleiconsmap\symbol{"F54D}}
- \expandafter\def\csname simpleicon@ubiquitiicon\endcsname {\simpleiconsmap\symbol{"F54E}}
- \expandafter\def\csname simpleicon@ubisofticon\endcsname {\simpleiconsmap\symbol{"F54F}}
- \expandafter\def\csname simpleicon@ublockoriginicon\endcsname {\simpleiconsmap\symbol{"F550}}
- \expandafter\def\csname simpleicon@ubuntuicon\endcsname {\simpleiconsmap\symbol{"F551}}
- \expandafter\def\csname simpleicon@ubuntumateicon\endcsname {\simpleiconsmap\symbol{"F552}}
- \expandafter\def\csname simpleicon@udacityicon\endcsname {\simpleiconsmap\symbol{"F553}}
- \expandafter\def\csname simpleicon@udemyicon\endcsname {\simpleiconsmap\symbol{"F554}}
- \expandafter\def\csname simpleicon@ufcicon\endcsname {\simpleiconsmap\symbol{"F555}}
- \expandafter\def\csname simpleicon@uikiticon\endcsname {\simpleiconsmap\symbol{"F556}}
- \expandafter\def\csname simpleicon@uipathicon\endcsname {\simpleiconsmap\symbol{"F557}}
- \expandafter\def\csname simpleicon@ululeicon\endcsname {\simpleiconsmap\symbol{"F558}}
- \expandafter\def\csname simpleicon@umamiicon\endcsname {\simpleiconsmap\symbol{"F559}}
- \expandafter\def\csname simpleicon@umbracoicon\endcsname {\simpleiconsmap\symbol{"F55A}}
- \expandafter\def\csname simpleicon@umlicon\endcsname {\simpleiconsmap\symbol{"F55B}}
- \expandafter\def\csname simpleicon@unacademyicon\endcsname {\simpleiconsmap\symbol{"F55C}}
- \expandafter\def\csname simpleicon@underarmouricon\endcsname {\simpleiconsmap\symbol{"F55D}}
- \expandafter\def\csname simpleicon@underscoredotjsicon\endcsname {\simpleiconsmap\symbol{"F55E}}
- \expandafter\def\csname simpleicon@undertaleicon\endcsname {\simpleiconsmap\symbol{"F55F}}
- \expandafter\def\csname simpleicon@unicodeicon\endcsname {\simpleiconsmap\symbol{"F560}}
- \expandafter\def\csname simpleicon@unilevericon\endcsname {\simpleiconsmap\symbol{"F561}}
- \expandafter\def\csname simpleicon@uniqloicon\endcsname {\simpleiconsmap\symbol{"F562}}
- \expandafter\def\csname simpleicon@uniqlojaicon\endcsname {\simpleiconsmap\symbol{"F563}}
- \expandafter\def\csname simpleicon@unitedairlinesicon\endcsname {\simpleiconsmap\symbol{"F564}}
- \expandafter\def\csname simpleicon@unitednationsicon\endcsname {\simpleiconsmap\symbol{"F565}}
- \expandafter\def\csname simpleicon@unityicon\endcsname {\simpleiconsmap\symbol{"F566}}
- \expandafter\def\csname simpleicon@unlicenseicon\endcsname {\simpleiconsmap\symbol{"F567}}
- \expandafter\def\csname simpleicon@unocssicon\endcsname {\simpleiconsmap\symbol{"F568}}
- \expandafter\def\csname simpleicon@unpkgicon\endcsname {\simpleiconsmap\symbol{"F569}}
- \expandafter\def\csname simpleicon@unraidicon\endcsname {\simpleiconsmap\symbol{"F56A}}
- \expandafter\def\csname simpleicon@unrealengineicon\endcsname {\simpleiconsmap\symbol{"F56B}}
- \expandafter\def\csname simpleicon@unsplashicon\endcsname {\simpleiconsmap\symbol{"F56C}}
- \expandafter\def\csname simpleicon@untappdicon\endcsname {\simpleiconsmap\symbol{"F56D}}
- \expandafter\def\csname simpleicon@upcloudicon\endcsname {\simpleiconsmap\symbol{"F56E}}
- \expandafter\def\csname simpleicon@upholdicon\endcsname {\simpleiconsmap\symbol{"F56F}}
- \expandafter\def\csname simpleicon@uplabsicon\endcsname {\simpleiconsmap\symbol{"F570}}
- \expandafter\def\csname simpleicon@upptimeicon\endcsname {\simpleiconsmap\symbol{"F571}}
- \expandafter\def\csname simpleicon@upsicon\endcsname {\simpleiconsmap\symbol{"F572}}
- \expandafter\def\csname simpleicon@upstashicon\endcsname {\simpleiconsmap\symbol{"F573}}
- \expandafter\def\csname simpleicon@uptimekumaicon\endcsname {\simpleiconsmap\symbol{"F574}}
- \expandafter\def\csname simpleicon@uptoboxicon\endcsname {\simpleiconsmap\symbol{"F575}}
- \expandafter\def\csname simpleicon@upworkicon\endcsname {\simpleiconsmap\symbol{"F576}}
- \expandafter\def\csname simpleicon@uspsicon\endcsname {\simpleiconsmap\symbol{"F577}}
- \expandafter\def\csname simpleicon@utorrenticon\endcsname {\simpleiconsmap\symbol{"F578}}
- \expandafter\def\csname simpleicon@vicon\endcsname {\simpleiconsmap\symbol{"F579}}
- \expandafter\def\csname simpleicon@v2exicon\endcsname {\simpleiconsmap\symbol{"F57A}}
- \expandafter\def\csname simpleicon@v8icon\endcsname {\simpleiconsmap\symbol{"F57B}}
- \expandafter\def\csname simpleicon@vaadinicon\endcsname {\simpleiconsmap\symbol{"F57C}}
- \expandafter\def\csname simpleicon@vagranticon\endcsname {\simpleiconsmap\symbol{"F57D}}
- \expandafter\def\csname simpleicon@valaicon\endcsname {\simpleiconsmap\symbol{"F57E}}
- \expandafter\def\csname simpleicon@valoranticon\endcsname {\simpleiconsmap\symbol{"F57F}}
- \expandafter\def\csname simpleicon@valveicon\endcsname {\simpleiconsmap\symbol{"F580}}
- \expandafter\def\csname simpleicon@vaporicon\endcsname {\simpleiconsmap\symbol{"F581}}
- \expandafter\def\csname simpleicon@vaulticon\endcsname {\simpleiconsmap\symbol{"F582}}
- \expandafter\def\csname simpleicon@vaultwardenicon\endcsname {\simpleiconsmap\symbol{"F583}}
- \expandafter\def\csname simpleicon@vauxhallicon\endcsname {\simpleiconsmap\symbol{"F584}}
- \expandafter\def\csname simpleicon@vbulletinicon\endcsname {\simpleiconsmap\symbol{"F585}}
- \expandafter\def\csname simpleicon@vectaryicon\endcsname {\simpleiconsmap\symbol{"F586}}
- \expandafter\def\csname simpleicon@vectorlogozoneicon\endcsname {\simpleiconsmap\symbol{"F587}}
- \expandafter\def\csname simpleicon@vectorworksicon\endcsname {\simpleiconsmap\symbol{"F588}}
- \expandafter\def\csname simpleicon@veeamicon\endcsname {\simpleiconsmap\symbol{"F589}}
- \expandafter\def\csname simpleicon@veedicon\endcsname {\simpleiconsmap\symbol{"F58A}}
- \expandafter\def\csname simpleicon@veepeeicon\endcsname {\simpleiconsmap\symbol{"F58B}}
- \expandafter\def\csname simpleicon@vegaicon\endcsname {\simpleiconsmap\symbol{"F58C}}
- \expandafter\def\csname simpleicon@vegasicon\endcsname {\simpleiconsmap\symbol{"F58D}}
- \expandafter\def\csname simpleicon@velogicon\endcsname {\simpleiconsmap\symbol{"F58E}}
- \expandafter\def\csname simpleicon@venmoicon\endcsname {\simpleiconsmap\symbol{"F58F}}
- \expandafter\def\csname simpleicon@vercelicon\endcsname {\simpleiconsmap\symbol{"F590}}
- \expandafter\def\csname simpleicon@verdaccioicon\endcsname {\simpleiconsmap\symbol{"F591}}
- \expandafter\def\csname simpleicon@veritasicon\endcsname {\simpleiconsmap\symbol{"F592}}
- \expandafter\def\csname simpleicon@verizonicon\endcsname {\simpleiconsmap\symbol{"F593}}
- \expandafter\def\csname simpleicon@vespaicon\endcsname {\simpleiconsmap\symbol{"F594}}
- \expandafter\def\csname simpleicon@vexxhosticon\endcsname {\simpleiconsmap\symbol{"F595}}
- \expandafter\def\csname simpleicon@vfairsicon\endcsname {\simpleiconsmap\symbol{"F596}}
- \expandafter\def\csname simpleicon@viadeoicon\endcsname {\simpleiconsmap\symbol{"F597}}
- \expandafter\def\csname simpleicon@viaplayicon\endcsname {\simpleiconsmap\symbol{"F598}}
- \expandafter\def\csname simpleicon@vibericon\endcsname {\simpleiconsmap\symbol{"F599}}
- \expandafter\def\csname simpleicon@vibloicon\endcsname {\simpleiconsmap\symbol{"F59A}}
- \expandafter\def\csname simpleicon@victoriametricsicon\endcsname {\simpleiconsmap\symbol{"F59B}}
- \expandafter\def\csname simpleicon@victronenergyicon\endcsname {\simpleiconsmap\symbol{"F59C}}
- \expandafter\def\csname simpleicon@vimicon\endcsname {\simpleiconsmap\symbol{"F59D}}
- \expandafter\def\csname simpleicon@vimeoicon\endcsname {\simpleiconsmap\symbol{"F59E}}
- \expandafter\def\csname simpleicon@vimeolivestreamicon\endcsname {\simpleiconsmap\symbol{"F59F}}
- \expandafter\def\csname simpleicon@virginicon\endcsname {\simpleiconsmap\symbol{"F5A0}}
- \expandafter\def\csname simpleicon@virginatlanticicon\endcsname {\simpleiconsmap\symbol{"F5A1}}
- \expandafter\def\csname simpleicon@virginmediaicon\endcsname {\simpleiconsmap\symbol{"F5A2}}
- \expandafter\def\csname simpleicon@virtualboxicon\endcsname {\simpleiconsmap\symbol{"F5A3}}
- \expandafter\def\csname simpleicon@virustotalicon\endcsname {\simpleiconsmap\symbol{"F5A4}}
- \expandafter\def\csname simpleicon@visaicon\endcsname {\simpleiconsmap\symbol{"F5A5}}
- \expandafter\def\csname simpleicon@visualbasicicon\endcsname {\simpleiconsmap\symbol{"F5A6}}
- \expandafter\def\csname simpleicon@visualstudioicon\endcsname {\simpleiconsmap\symbol{"F5A7}}
- \expandafter\def\csname simpleicon@visualstudioappcentericon\endcsname {\simpleiconsmap\symbol{"F5A8}}
- \expandafter\def\csname simpleicon@visualstudiocodeicon\endcsname {\simpleiconsmap\symbol{"F5A9}}
- \expandafter\def\csname simpleicon@visxicon\endcsname {\simpleiconsmap\symbol{"F5AA}}
- \expandafter\def\csname simpleicon@viteicon\endcsname {\simpleiconsmap\symbol{"F5AB}}
- \expandafter\def\csname simpleicon@vitepressicon\endcsname {\simpleiconsmap\symbol{"F5AC}}
- \expandafter\def\csname simpleicon@vitessicon\endcsname {\simpleiconsmap\symbol{"F5AD}}
- \expandafter\def\csname simpleicon@vitesticon\endcsname {\simpleiconsmap\symbol{"F5AE}}
- \expandafter\def\csname simpleicon@vivaldiicon\endcsname {\simpleiconsmap\symbol{"F5AF}}
- \expandafter\def\csname simpleicon@vivawalleticon\endcsname {\simpleiconsmap\symbol{"F5B0}}
- \expandafter\def\csname simpleicon@vivinoicon\endcsname {\simpleiconsmap\symbol{"F5B1}}
- \expandafter\def\csname simpleicon@vivinticon\endcsname {\simpleiconsmap\symbol{"F5B2}}
- \expandafter\def\csname simpleicon@vivoicon\endcsname {\simpleiconsmap\symbol{"F5B3}}
- \expandafter\def\csname simpleicon@vkicon\endcsname {\simpleiconsmap\symbol{"F5B4}}
- \expandafter\def\csname simpleicon@vlcmediaplayericon\endcsname {\simpleiconsmap\symbol{"F5B5}}
- \expandafter\def\csname simpleicon@vmwareicon\endcsname {\simpleiconsmap\symbol{"F5B6}}
- \expandafter\def\csname simpleicon@vodafoneicon\endcsname {\simpleiconsmap\symbol{"F5B7}}
- \expandafter\def\csname simpleicon@voidlinuxicon\endcsname {\simpleiconsmap\symbol{"F5B8}}
- \expandafter\def\csname simpleicon@voipdotmsicon\endcsname {\simpleiconsmap\symbol{"F5B9}}
- \expandafter\def\csname simpleicon@volkswagenicon\endcsname {\simpleiconsmap\symbol{"F5BA}}
- \expandafter\def\csname simpleicon@volvoicon\endcsname {\simpleiconsmap\symbol{"F5BB}}
- \expandafter\def\csname simpleicon@vonageicon\endcsname {\simpleiconsmap\symbol{"F5BC}}
- \expandafter\def\csname simpleicon@vorondesignicon\endcsname {\simpleiconsmap\symbol{"F5BD}}
- \expandafter\def\csname simpleicon@vowpalwabbiticon\endcsname {\simpleiconsmap\symbol{"F5BE}}
- \expandafter\def\csname simpleicon@voxicon\endcsname {\simpleiconsmap\symbol{"F5BF}}
- \expandafter\def\csname simpleicon@vscoicon\endcsname {\simpleiconsmap\symbol{"F5C0}}
- \expandafter\def\csname simpleicon@vscodiumicon\endcsname {\simpleiconsmap\symbol{"F5C1}}
- \expandafter\def\csname simpleicon@vtexicon\endcsname {\simpleiconsmap\symbol{"F5C2}}
- \expandafter\def\csname simpleicon@vuedotjsicon\endcsname {\simpleiconsmap\symbol{"F5C3}}
- \expandafter\def\csname simpleicon@vuetifyicon\endcsname {\simpleiconsmap\symbol{"F5C4}}
- \expandafter\def\csname simpleicon@vulkanicon\endcsname {\simpleiconsmap\symbol{"F5C5}}
- \expandafter\def\csname simpleicon@vultricon\endcsname {\simpleiconsmap\symbol{"F5C6}}
- \expandafter\def\csname simpleicon@vyondicon\endcsname {\simpleiconsmap\symbol{"F5C7}}
- \expandafter\def\csname simpleicon@w3schoolsicon\endcsname {\simpleiconsmap\symbol{"F5C8}}
- \expandafter\def\csname simpleicon@wacomicon\endcsname {\simpleiconsmap\symbol{"F5C9}}
- \expandafter\def\csname simpleicon@wagmiicon\endcsname {\simpleiconsmap\symbol{"F5CA}}
- \expandafter\def\csname simpleicon@wagtailicon\endcsname {\simpleiconsmap\symbol{"F5CB}}
- \expandafter\def\csname simpleicon@wailsicon\endcsname {\simpleiconsmap\symbol{"F5CC}}
- \expandafter\def\csname simpleicon@wakatimeicon\endcsname {\simpleiconsmap\symbol{"F5CD}}
- \expandafter\def\csname simpleicon@walkmanicon\endcsname {\simpleiconsmap\symbol{"F5CE}}
- \expandafter\def\csname simpleicon@wallabagicon\endcsname {\simpleiconsmap\symbol{"F5CF}}
- \expandafter\def\csname simpleicon@walletconnecticon\endcsname {\simpleiconsmap\symbol{"F5D0}}
- \expandafter\def\csname simpleicon@walmarticon\endcsname {\simpleiconsmap\symbol{"F5D1}}
- \expandafter\def\csname simpleicon@wantedlyicon\endcsname {\simpleiconsmap\symbol{"F5D2}}
- \expandafter\def\csname simpleicon@wappalyzericon\endcsname {\simpleiconsmap\symbol{"F5D3}}
- \expandafter\def\csname simpleicon@warnerbrosicon\endcsname {\simpleiconsmap\symbol{"F5D4}}
- \expandafter\def\csname simpleicon@warpicon\endcsname {\simpleiconsmap\symbol{"F5D5}}
- \expandafter\def\csname simpleicon@wasabiicon\endcsname {\simpleiconsmap\symbol{"F5D6}}
- \expandafter\def\csname simpleicon@wasmcloudicon\endcsname {\simpleiconsmap\symbol{"F5D7}}
- \expandafter\def\csname simpleicon@wasmericon\endcsname {\simpleiconsmap\symbol{"F5D8}}
- \expandafter\def\csname simpleicon@watchtowericon\endcsname {\simpleiconsmap\symbol{"F5D9}}
- \expandafter\def\csname simpleicon@wattpadicon\endcsname {\simpleiconsmap\symbol{"F5DA}}
- \expandafter\def\csname simpleicon@waylandicon\endcsname {\simpleiconsmap\symbol{"F5DB}}
- \expandafter\def\csname simpleicon@wazeicon\endcsname {\simpleiconsmap\symbol{"F5DC}}
- \expandafter\def\csname simpleicon@wazirxicon\endcsname {\simpleiconsmap\symbol{"F5DD}}
- \expandafter\def\csname simpleicon@wearosicon\endcsname {\simpleiconsmap\symbol{"F5DE}}
- \expandafter\def\csname simpleicon@weasylicon\endcsname {\simpleiconsmap\symbol{"F5DF}}
- \expandafter\def\csname simpleicon@web3dotjsicon\endcsname {\simpleiconsmap\symbol{"F5E0}}
- \expandafter\def\csname simpleicon@webassemblyicon\endcsname {\simpleiconsmap\symbol{"F5E1}}
- \expandafter\def\csname simpleicon@webauthnicon\endcsname {\simpleiconsmap\symbol{"F5E2}}
- \expandafter\def\csname simpleicon@webcomponentsdotorgicon\endcsname {\simpleiconsmap\symbol{"F5E3}}
- \expandafter\def\csname simpleicon@webdriverioicon\endcsname {\simpleiconsmap\symbol{"F5E4}}
- \expandafter\def\csname simpleicon@webexicon\endcsname {\simpleiconsmap\symbol{"F5E5}}
- \expandafter\def\csname simpleicon@webflowicon\endcsname {\simpleiconsmap\symbol{"F5E6}}
- \expandafter\def\csname simpleicon@webglicon\endcsname {\simpleiconsmap\symbol{"F5E7}}
- \expandafter\def\csname simpleicon@weblateicon\endcsname {\simpleiconsmap\symbol{"F5E8}}
- \expandafter\def\csname simpleicon@webminicon\endcsname {\simpleiconsmap\symbol{"F5E9}}
- \expandafter\def\csname simpleicon@webmoneyicon\endcsname {\simpleiconsmap\symbol{"F5EA}}
- \expandafter\def\csname simpleicon@webpackicon\endcsname {\simpleiconsmap\symbol{"F5EB}}
- \expandafter\def\csname simpleicon@webrtcicon\endcsname {\simpleiconsmap\symbol{"F5EC}}
- \expandafter\def\csname simpleicon@webstormicon\endcsname {\simpleiconsmap\symbol{"F5ED}}
- \expandafter\def\csname simpleicon@webtoonicon\endcsname {\simpleiconsmap\symbol{"F5EE}}
- \expandafter\def\csname simpleicon@webtreesicon\endcsname {\simpleiconsmap\symbol{"F5EF}}
- \expandafter\def\csname simpleicon@wechaticon\endcsname {\simpleiconsmap\symbol{"F5F0}}
- \expandafter\def\csname simpleicon@wegameicon\endcsname {\simpleiconsmap\symbol{"F5F1}}
- \expandafter\def\csname simpleicon@weightsandbiasesicon\endcsname {\simpleiconsmap\symbol{"F5F2}}
- \expandafter\def\csname simpleicon@welcometothejungleicon\endcsname {\simpleiconsmap\symbol{"F5F3}}
- \expandafter\def\csname simpleicon@wellfoundicon\endcsname {\simpleiconsmap\symbol{"F5F4}}
- \expandafter\def\csname simpleicon@wellsfargoicon\endcsname {\simpleiconsmap\symbol{"F5F5}}
- \expandafter\def\csname simpleicon@wemoicon\endcsname {\simpleiconsmap\symbol{"F5F6}}
- \expandafter\def\csname simpleicon@westerndigitalicon\endcsname {\simpleiconsmap\symbol{"F5F7}}
- \expandafter\def\csname simpleicon@westernunionicon\endcsname {\simpleiconsmap\symbol{"F5F8}}
- \expandafter\def\csname simpleicon@wetransfericon\endcsname {\simpleiconsmap\symbol{"F5F9}}
- \expandafter\def\csname simpleicon@weztermicon\endcsname {\simpleiconsmap\symbol{"F5FA}}
- \expandafter\def\csname simpleicon@wgpuicon\endcsname {\simpleiconsmap\symbol{"F5FB}}
- \expandafter\def\csname simpleicon@whatsappicon\endcsname {\simpleiconsmap\symbol{"F5FC}}
- \expandafter\def\csname simpleicon@wheniworkicon\endcsname {\simpleiconsmap\symbol{"F5FD}}
- \expandafter\def\csname simpleicon@wiiicon\endcsname {\simpleiconsmap\symbol{"F5FE}}
- \expandafter\def\csname simpleicon@wiiuicon\endcsname {\simpleiconsmap\symbol{"F5FF}}
- \expandafter\def\csname simpleicon@wikidataicon\endcsname {\simpleiconsmap\symbol{"F600}}
- \expandafter\def\csname simpleicon@wikidotggicon\endcsname {\simpleiconsmap\symbol{"F601}}
- \expandafter\def\csname simpleicon@wikidotjsicon\endcsname {\simpleiconsmap\symbol{"F602}}
- \expandafter\def\csname simpleicon@wikimediacommonsicon\endcsname {\simpleiconsmap\symbol{"F603}}
- \expandafter\def\csname simpleicon@wikimediafoundationicon\endcsname {\simpleiconsmap\symbol{"F604}}
- \expandafter\def\csname simpleicon@wikipediaicon\endcsname {\simpleiconsmap\symbol{"F605}}
- \expandafter\def\csname simpleicon@wikiquoteicon\endcsname {\simpleiconsmap\symbol{"F606}}
- \expandafter\def\csname simpleicon@wikivoyageicon\endcsname {\simpleiconsmap\symbol{"F607}}
- \expandafter\def\csname simpleicon@winampicon\endcsname {\simpleiconsmap\symbol{"F608}}
- \expandafter\def\csname simpleicon@windowsicon\endcsname {\simpleiconsmap\symbol{"F609}}
- \expandafter\def\csname simpleicon@windows10icon\endcsname {\simpleiconsmap\symbol{"F60A}}
- \expandafter\def\csname simpleicon@windows95icon\endcsname {\simpleiconsmap\symbol{"F60C}}
- \expandafter\def\csname simpleicon@windowsterminalicon\endcsname {\simpleiconsmap\symbol{"F60D}}
- \expandafter\def\csname simpleicon@windowsxpicon\endcsname {\simpleiconsmap\symbol{"F60E}}
- \expandafter\def\csname simpleicon@wiproicon\endcsname {\simpleiconsmap\symbol{"F60F}}
- \expandafter\def\csname simpleicon@wireicon\endcsname {\simpleiconsmap\symbol{"F610}}
- \expandafter\def\csname simpleicon@wireguardicon\endcsname {\simpleiconsmap\symbol{"F611}}
- \expandafter\def\csname simpleicon@wiresharkicon\endcsname {\simpleiconsmap\symbol{"F612}}
- \expandafter\def\csname simpleicon@wiseicon\endcsname {\simpleiconsmap\symbol{"F613}}
- \expandafter\def\csname simpleicon@wishicon\endcsname {\simpleiconsmap\symbol{"F614}}
- \expandafter\def\csname simpleicon@wistiaicon\endcsname {\simpleiconsmap\symbol{"F615}}
- \expandafter\def\csname simpleicon@wixicon\endcsname {\simpleiconsmap\symbol{"F616}}
- \expandafter\def\csname simpleicon@wizzairicon\endcsname {\simpleiconsmap\symbol{"F617}}
- \expandafter\def\csname simpleicon@wolframicon\endcsname {\simpleiconsmap\symbol{"F618}}
- \expandafter\def\csname simpleicon@wolframlanguageicon\endcsname {\simpleiconsmap\symbol{"F619}}
- \expandafter\def\csname simpleicon@wolframmathematicaicon\endcsname {\simpleiconsmap\symbol{"F61A}}
- \expandafter\def\csname simpleicon@wondershareicon\endcsname {\simpleiconsmap\symbol{"F61B}}
- \expandafter\def\csname simpleicon@wondersharefilmoraicon\endcsname {\simpleiconsmap\symbol{"F61C}}
- \expandafter\def\csname simpleicon@wooicon\endcsname {\simpleiconsmap\symbol{"F61D}}
- \expandafter\def\csname simpleicon@woocommerceicon\endcsname {\simpleiconsmap\symbol{"F61E}}
- \expandafter\def\csname simpleicon@wordpressicon\endcsname {\simpleiconsmap\symbol{"F61F}}
- \expandafter\def\csname simpleicon@workplaceicon\endcsname {\simpleiconsmap\symbol{"F620}}
- \expandafter\def\csname simpleicon@worldhealthorganizationicon\endcsname {\simpleiconsmap\symbol{"F621}}
- \expandafter\def\csname simpleicon@wpengineicon\endcsname {\simpleiconsmap\symbol{"F622}}
- \expandafter\def\csname simpleicon@wpexplorericon\endcsname {\simpleiconsmap\symbol{"F623}}
- \expandafter\def\csname simpleicon@wprocketicon\endcsname {\simpleiconsmap\symbol{"F624}}
- \expandafter\def\csname simpleicon@writedotasicon\endcsname {\simpleiconsmap\symbol{"F625}}
- \expandafter\def\csname simpleicon@wweicon\endcsname {\simpleiconsmap\symbol{"F626}}
- \expandafter\def\csname simpleicon@wwiseicon\endcsname {\simpleiconsmap\symbol{"F627}}
- \expandafter\def\csname simpleicon@wyzeicon\endcsname {\simpleiconsmap\symbol{"F628}}
- \expandafter\def\csname simpleicon@xicon\endcsname {\simpleiconsmap\symbol{"F629}}
- \expandafter\def\csname simpleicon@xamarinicon\endcsname {\simpleiconsmap\symbol{"F62A}}
- \expandafter\def\csname simpleicon@xamlicon\endcsname {\simpleiconsmap\symbol{"F62B}}
- \expandafter\def\csname simpleicon@xamppicon\endcsname {\simpleiconsmap\symbol{"F62C}}
- \expandafter\def\csname simpleicon@xboxicon\endcsname {\simpleiconsmap\symbol{"F62D}}
- \expandafter\def\csname simpleicon@xcodeicon\endcsname {\simpleiconsmap\symbol{"F62E}}
- \expandafter\def\csname simpleicon@xdadevelopersicon\endcsname {\simpleiconsmap\symbol{"F62F}}
- \expandafter\def\csname simpleicon@xdotorgicon\endcsname {\simpleiconsmap\symbol{"F630}}
- \expandafter\def\csname simpleicon@xenditicon\endcsname {\simpleiconsmap\symbol{"F631}}
- \expandafter\def\csname simpleicon@xeroicon\endcsname {\simpleiconsmap\symbol{"F632}}
- \expandafter\def\csname simpleicon@xfceicon\endcsname {\simpleiconsmap\symbol{"F633}}
- \expandafter\def\csname simpleicon@xiaohongshuicon\endcsname {\simpleiconsmap\symbol{"F634}}
- \expandafter\def\csname simpleicon@xiaomiicon\endcsname {\simpleiconsmap\symbol{"F635}}
- \expandafter\def\csname simpleicon@xingicon\endcsname {\simpleiconsmap\symbol{"F636}}
- \expandafter\def\csname simpleicon@xmppicon\endcsname {\simpleiconsmap\symbol{"F637}}
- \expandafter\def\csname simpleicon@xoicon\endcsname {\simpleiconsmap\symbol{"F638}}
- \expandafter\def\csname simpleicon@xrpicon\endcsname {\simpleiconsmap\symbol{"F639}}
- \expandafter\def\csname simpleicon@xspliticon\endcsname {\simpleiconsmap\symbol{"F63A}}
- \expandafter\def\csname simpleicon@xstateicon\endcsname {\simpleiconsmap\symbol{"F63B}}
- \expandafter\def\csname simpleicon@yabaiicon\endcsname {\simpleiconsmap\symbol{"F63C}}
- \expandafter\def\csname simpleicon@yaleicon\endcsname {\simpleiconsmap\symbol{"F63D}}
- \expandafter\def\csname simpleicon@yamahacorporationicon\endcsname {\simpleiconsmap\symbol{"F63E}}
- \expandafter\def\csname simpleicon@yamahamotorcorporationicon\endcsname {\simpleiconsmap\symbol{"F63F}}
- \expandafter\def\csname simpleicon@yamlicon\endcsname {\simpleiconsmap\symbol{"F640}}
- \expandafter\def\csname simpleicon@yammericon\endcsname {\simpleiconsmap\symbol{"F641}}
- \expandafter\def\csname simpleicon@yandexcloudicon\endcsname {\simpleiconsmap\symbol{"F642}}
- \expandafter\def\csname simpleicon@yarnicon\endcsname {\simpleiconsmap\symbol{"F643}}
- \expandafter\def\csname simpleicon@ycombinatoricon\endcsname {\simpleiconsmap\symbol{"F644}}
- \expandafter\def\csname simpleicon@yelpicon\endcsname {\simpleiconsmap\symbol{"F645}}
- \expandafter\def\csname simpleicon@yetiicon\endcsname {\simpleiconsmap\symbol{"F646}}
- \expandafter\def\csname simpleicon@yoasticon\endcsname {\simpleiconsmap\symbol{"F647}}
- \expandafter\def\csname simpleicon@youtubeicon\endcsname {\simpleiconsmap\symbol{"F648}}
- \expandafter\def\csname simpleicon@youtubegamingicon\endcsname {\simpleiconsmap\symbol{"F649}}
- \expandafter\def\csname simpleicon@youtubekidsicon\endcsname {\simpleiconsmap\symbol{"F64A}}
- \expandafter\def\csname simpleicon@youtubemusicicon\endcsname {\simpleiconsmap\symbol{"F64B}}
- \expandafter\def\csname simpleicon@youtubeshortsicon\endcsname {\simpleiconsmap\symbol{"F64C}}
- \expandafter\def\csname simpleicon@youtubestudioicon\endcsname {\simpleiconsmap\symbol{"F64D}}
- \expandafter\def\csname simpleicon@youtubetvicon\endcsname {\simpleiconsmap\symbol{"F64E}}
- \expandafter\def\csname simpleicon@yricon\endcsname {\simpleiconsmap\symbol{"F64F}}
- \expandafter\def\csname simpleicon@yubicoicon\endcsname {\simpleiconsmap\symbol{"F650}}
- \expandafter\def\csname simpleicon@yunohosticon\endcsname {\simpleiconsmap\symbol{"F651}}
- \expandafter\def\csname simpleicon@zabkaicon\endcsname {\simpleiconsmap\symbol{"F652}}
- \expandafter\def\csname simpleicon@zaimicon\endcsname {\simpleiconsmap\symbol{"F653}}
- \expandafter\def\csname simpleicon@zalandoicon\endcsname {\simpleiconsmap\symbol{"F654}}
- \expandafter\def\csname simpleicon@zaloicon\endcsname {\simpleiconsmap\symbol{"F655}}
- \expandafter\def\csname simpleicon@zapicon\endcsname {\simpleiconsmap\symbol{"F656}}
- \expandafter\def\csname simpleicon@zapiericon\endcsname {\simpleiconsmap\symbol{"F657}}
- \expandafter\def\csname simpleicon@zaraicon\endcsname {\simpleiconsmap\symbol{"F658}}
- \expandafter\def\csname simpleicon@zazzleicon\endcsname {\simpleiconsmap\symbol{"F659}}
- \expandafter\def\csname simpleicon@zcashicon\endcsname {\simpleiconsmap\symbol{"F65A}}
- \expandafter\def\csname simpleicon@zcoolicon\endcsname {\simpleiconsmap\symbol{"F65B}}
- \expandafter\def\csname simpleicon@zdficon\endcsname {\simpleiconsmap\symbol{"F65C}}
- \expandafter\def\csname simpleicon@zebpayicon\endcsname {\simpleiconsmap\symbol{"F65D}}
- \expandafter\def\csname simpleicon@zebratechnologiesicon\endcsname {\simpleiconsmap\symbol{"F65E}}
- \expandafter\def\csname simpleicon@zedindustriesicon\endcsname {\simpleiconsmap\symbol{"F65F}}
- \expandafter\def\csname simpleicon@zelleicon\endcsname {\simpleiconsmap\symbol{"F660}}
- \expandafter\def\csname simpleicon@zendicon\endcsname {\simpleiconsmap\symbol{"F661}}
- \expandafter\def\csname simpleicon@zendeskicon\endcsname {\simpleiconsmap\symbol{"F662}}
- \expandafter\def\csname simpleicon@zennicon\endcsname {\simpleiconsmap\symbol{"F663}}
- \expandafter\def\csname simpleicon@zenodoicon\endcsname {\simpleiconsmap\symbol{"F664}}
- \expandafter\def\csname simpleicon@zensaricon\endcsname {\simpleiconsmap\symbol{"F665}}
- \expandafter\def\csname simpleicon@zerodhaicon\endcsname {\simpleiconsmap\symbol{"F666}}
- \expandafter\def\csname simpleicon@zerplyicon\endcsname {\simpleiconsmap\symbol{"F667}}
- \expandafter\def\csname simpleicon@zettlricon\endcsname {\simpleiconsmap\symbol{"F668}}
- \expandafter\def\csname simpleicon@zhihuicon\endcsname {\simpleiconsmap\symbol{"F669}}
- \expandafter\def\csname simpleicon@zigicon\endcsname {\simpleiconsmap\symbol{"F66A}}
- \expandafter\def\csname simpleicon@zigbeeicon\endcsname {\simpleiconsmap\symbol{"F66B}}
- \expandafter\def\csname simpleicon@zigbee2mqtticon\endcsname {\simpleiconsmap\symbol{"F66C}}
- \expandafter\def\csname simpleicon@ziggoicon\endcsname {\simpleiconsmap\symbol{"F66D}}
- \expandafter\def\csname simpleicon@zilchicon\endcsname {\simpleiconsmap\symbol{"F66E}}
- \expandafter\def\csname simpleicon@zillowicon\endcsname {\simpleiconsmap\symbol{"F66F}}
- \expandafter\def\csname simpleicon@zincsearchicon\endcsname {\simpleiconsmap\symbol{"F670}}
- \expandafter\def\csname simpleicon@zingaticon\endcsname {\simpleiconsmap\symbol{"F671}}
- \expandafter\def\csname simpleicon@zodicon\endcsname {\simpleiconsmap\symbol{"F672}}
- \expandafter\def\csname simpleicon@zohoicon\endcsname {\simpleiconsmap\symbol{"F673}}
- \expandafter\def\csname simpleicon@zoipericon\endcsname {\simpleiconsmap\symbol{"F674}}
- \expandafter\def\csname simpleicon@zomatoicon\endcsname {\simpleiconsmap\symbol{"F675}}
- \expandafter\def\csname simpleicon@zoomicon\endcsname {\simpleiconsmap\symbol{"F676}}
- \expandafter\def\csname simpleicon@zorinicon\endcsname {\simpleiconsmap\symbol{"F677}}
- \expandafter\def\csname simpleicon@zoteroicon\endcsname {\simpleiconsmap\symbol{"F678}}
- \expandafter\def\csname simpleicon@zshicon\endcsname {\simpleiconsmap\symbol{"F679}}
- \expandafter\def\csname simpleicon@zulipicon\endcsname {\simpleiconsmap\symbol{"F67A}}
- \expandafter\def\csname simpleicon@zyteicon\endcsname {\simpleiconsmap\symbol{"F67B}} \ No newline at end of file
+ \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@30secondsofcodeicon\endcsname {\simpleiconsmap\symbol{"EA07}}
+ \expandafter\def\csname simpleicon@365datascienceicon\endcsname {\simpleiconsmap\symbol{"EA08}}
+ \expandafter\def\csname simpleicon@3micon\endcsname {\simpleiconsmap\symbol{"EA09}}
+ \expandafter\def\csname simpleicon@42icon\endcsname {\simpleiconsmap\symbol{"EA0A}}
+ \expandafter\def\csname simpleicon@4chanicon\endcsname {\simpleiconsmap\symbol{"EA0B}}
+ \expandafter\def\csname simpleicon@4dicon\endcsname {\simpleiconsmap\symbol{"EA0C}}
+ \expandafter\def\csname simpleicon@500pxicon\endcsname {\simpleiconsmap\symbol{"EA0D}}
+ \expandafter\def\csname simpleicon@7zipicon\endcsname {\simpleiconsmap\symbol{"EA0E}}
+ \expandafter\def\csname simpleicon@99designsicon\endcsname {\simpleiconsmap\symbol{"EA0F}}
+ \expandafter\def\csname simpleicon@9gagicon\endcsname {\simpleiconsmap\symbol{"EA10}}
+ \expandafter\def\csname simpleicon@abbotticon\endcsname {\simpleiconsmap\symbol{"EA11}}
+ \expandafter\def\csname simpleicon@abbrobotstudioicon\endcsname {\simpleiconsmap\symbol{"EA12}}
+ \expandafter\def\csname simpleicon@abbvieicon\endcsname {\simpleiconsmap\symbol{"EA13}}
+ \expandafter\def\csname simpleicon@aboutdotmeicon\endcsname {\simpleiconsmap\symbol{"EA14}}
+ \expandafter\def\csname simpleicon@abstracticon\endcsname {\simpleiconsmap\symbol{"EA15}}
+ \expandafter\def\csname simpleicon@abusedotchicon\endcsname {\simpleiconsmap\symbol{"EA16}}
+ \expandafter\def\csname simpleicon@academiaicon\endcsname {\simpleiconsmap\symbol{"EA17}}
+ \expandafter\def\csname simpleicon@accentureicon\endcsname {\simpleiconsmap\symbol{"EA18}}
+ \expandafter\def\csname simpleicon@accusofticon\endcsname {\simpleiconsmap\symbol{"EA19}}
+ \expandafter\def\csname simpleicon@acericon\endcsname {\simpleiconsmap\symbol{"EA1A}}
+ \expandafter\def\csname simpleicon@acmicon\endcsname {\simpleiconsmap\symbol{"EA1B}}
+ \expandafter\def\csname simpleicon@actigraphicon\endcsname {\simpleiconsmap\symbol{"EA1C}}
+ \expandafter\def\csname simpleicon@activisionicon\endcsname {\simpleiconsmap\symbol{"EA1D}}
+ \expandafter\def\csname simpleicon@activitypubicon\endcsname {\simpleiconsmap\symbol{"EA1E}}
+ \expandafter\def\csname simpleicon@actixicon\endcsname {\simpleiconsmap\symbol{"EA1F}}
+ \expandafter\def\csname simpleicon@actualbudgeticon\endcsname {\simpleiconsmap\symbol{"EA20}}
+ \expandafter\def\csname simpleicon@acuraicon\endcsname {\simpleiconsmap\symbol{"EA21}}
+ \expandafter\def\csname simpleicon@adafruiticon\endcsname {\simpleiconsmap\symbol{"EA22}}
+ \expandafter\def\csname simpleicon@adblockicon\endcsname {\simpleiconsmap\symbol{"EA23}}
+ \expandafter\def\csname simpleicon@adblockplusicon\endcsname {\simpleiconsmap\symbol{"EA24}}
+ \expandafter\def\csname simpleicon@adguardicon\endcsname {\simpleiconsmap\symbol{"EA25}}
+ \expandafter\def\csname simpleicon@adidasicon\endcsname {\simpleiconsmap\symbol{"EA26}}
+ \expandafter\def\csname simpleicon@adminericon\endcsname {\simpleiconsmap\symbol{"EA27}}
+ \expandafter\def\csname simpleicon@adobeicon\endcsname {\simpleiconsmap\symbol{"EA28}}
+ \expandafter\def\csname simpleicon@adobeacrobatreadericon\endcsname {\simpleiconsmap\symbol{"EA29}}
+ \expandafter\def\csname simpleicon@adobeaftereffectsicon\endcsname {\simpleiconsmap\symbol{"EA2A}}
+ \expandafter\def\csname simpleicon@adobeauditionicon\endcsname {\simpleiconsmap\symbol{"EA2B}}
+ \expandafter\def\csname simpleicon@adobecreativecloudicon\endcsname {\simpleiconsmap\symbol{"EA2C}}
+ \expandafter\def\csname simpleicon@adobedreamweavericon\endcsname {\simpleiconsmap\symbol{"EA2D}}
+ \expandafter\def\csname simpleicon@adobefontsicon\endcsname {\simpleiconsmap\symbol{"EA2E}}
+ \expandafter\def\csname simpleicon@adobeillustratoricon\endcsname {\simpleiconsmap\symbol{"EA2F}}
+ \expandafter\def\csname simpleicon@adobeindesignicon\endcsname {\simpleiconsmap\symbol{"EA30}}
+ \expandafter\def\csname simpleicon@adobelightroomicon\endcsname {\simpleiconsmap\symbol{"EA31}}
+ \expandafter\def\csname simpleicon@adobelightroomclassicicon\endcsname {\simpleiconsmap\symbol{"EA32}}
+ \expandafter\def\csname simpleicon@adobephotoshopicon\endcsname {\simpleiconsmap\symbol{"EA33}}
+ \expandafter\def\csname simpleicon@adobepremiereproicon\endcsname {\simpleiconsmap\symbol{"EA34}}
+ \expandafter\def\csname simpleicon@adobexdicon\endcsname {\simpleiconsmap\symbol{"EA35}}
+ \expandafter\def\csname simpleicon@adonisjsicon\endcsname {\simpleiconsmap\symbol{"EA36}}
+ \expandafter\def\csname simpleicon@adpicon\endcsname {\simpleiconsmap\symbol{"EA37}}
+ \expandafter\def\csname simpleicon@adrollicon\endcsname {\simpleiconsmap\symbol{"EA38}}
+ \expandafter\def\csname simpleicon@adventofcodeicon\endcsname {\simpleiconsmap\symbol{"EA39}}
+ \expandafter\def\csname simpleicon@adyenicon\endcsname {\simpleiconsmap\symbol{"EA3A}}
+ \expandafter\def\csname simpleicon@aegisauthenticatoricon\endcsname {\simpleiconsmap\symbol{"EA3B}}
+ \expandafter\def\csname simpleicon@aerlingusicon\endcsname {\simpleiconsmap\symbol{"EA3C}}
+ \expandafter\def\csname simpleicon@aerofloticon\endcsname {\simpleiconsmap\symbol{"EA3D}}
+ \expandafter\def\csname simpleicon@aeromexicoicon\endcsname {\simpleiconsmap\symbol{"EA3E}}
+ \expandafter\def\csname simpleicon@aerospikeicon\endcsname {\simpleiconsmap\symbol{"EA3F}}
+ \expandafter\def\csname simpleicon@aewicon\endcsname {\simpleiconsmap\symbol{"EA40}}
+ \expandafter\def\csname simpleicon@affineicon\endcsname {\simpleiconsmap\symbol{"EA41}}
+ \expandafter\def\csname simpleicon@affinityicon\endcsname {\simpleiconsmap\symbol{"EA42}}
+ \expandafter\def\csname simpleicon@affinitydesignericon\endcsname {\simpleiconsmap\symbol{"EA43}}
+ \expandafter\def\csname simpleicon@affinityphotoicon\endcsname {\simpleiconsmap\symbol{"EA44}}
+ \expandafter\def\csname simpleicon@affinitypublishericon\endcsname {\simpleiconsmap\symbol{"EA45}}
+ \expandafter\def\csname simpleicon@aframeicon\endcsname {\simpleiconsmap\symbol{"EA46}}
+ \expandafter\def\csname simpleicon@afterpayicon\endcsname {\simpleiconsmap\symbol{"EA47}}
+ \expandafter\def\csname simpleicon@agoraicon\endcsname {\simpleiconsmap\symbol{"EA48}}
+ \expandafter\def\csname simpleicon@aibicon\endcsname {\simpleiconsmap\symbol{"EA49}}
+ \expandafter\def\csname simpleicon@aidungeonicon\endcsname {\simpleiconsmap\symbol{"EA4A}}
+ \expandafter\def\csname simpleicon@aiohttpicon\endcsname {\simpleiconsmap\symbol{"EA4B}}
+ \expandafter\def\csname simpleicon@aiqfomeicon\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@aircanadaicon\endcsname {\simpleiconsmap\symbol{"EA53}}
+ \expandafter\def\csname simpleicon@airchinaicon\endcsname {\simpleiconsmap\symbol{"EA54}}
+ \expandafter\def\csname simpleicon@airfranceicon\endcsname {\simpleiconsmap\symbol{"EA55}}
+ \expandafter\def\csname simpleicon@airindiaicon\endcsname {\simpleiconsmap\symbol{"EA56}}
+ \expandafter\def\csname simpleicon@airplayaudioicon\endcsname {\simpleiconsmap\symbol{"EA57}}
+ \expandafter\def\csname simpleicon@airplayvideoicon\endcsname {\simpleiconsmap\symbol{"EA58}}
+ \expandafter\def\csname simpleicon@airtableicon\endcsname {\simpleiconsmap\symbol{"EA59}}
+ \expandafter\def\csname simpleicon@airtelicon\endcsname {\simpleiconsmap\symbol{"EA5A}}
+ \expandafter\def\csname simpleicon@airtransaticon\endcsname {\simpleiconsmap\symbol{"EA5B}}
+ \expandafter\def\csname simpleicon@ajvicon\endcsname {\simpleiconsmap\symbol{"EA5C}}
+ \expandafter\def\csname simpleicon@akamaiicon\endcsname {\simpleiconsmap\symbol{"EA5D}}
+ \expandafter\def\csname simpleicon@akauntingicon\endcsname {\simpleiconsmap\symbol{"EA5E}}
+ \expandafter\def\csname simpleicon@akiflowicon\endcsname {\simpleiconsmap\symbol{"EA5F}}
+ \expandafter\def\csname simpleicon@alacrittyicon\endcsname {\simpleiconsmap\symbol{"EA60}}
+ \expandafter\def\csname simpleicon@alamyicon\endcsname {\simpleiconsmap\symbol{"EA61}}
+ \expandafter\def\csname simpleicon@albertheijnicon\endcsname {\simpleiconsmap\symbol{"EA62}}
+ \expandafter\def\csname simpleicon@albyicon\endcsname {\simpleiconsmap\symbol{"EA63}}
+ \expandafter\def\csname simpleicon@alchemyicon\endcsname {\simpleiconsmap\symbol{"EA64}}
+ \expandafter\def\csname simpleicon@aldinordicon\endcsname {\simpleiconsmap\symbol{"EA65}}
+ \expandafter\def\csname simpleicon@aldisudicon\endcsname {\simpleiconsmap\symbol{"EA66}}
+ \expandafter\def\csname simpleicon@alfaromeoicon\endcsname {\simpleiconsmap\symbol{"EA67}}
+ \expandafter\def\csname simpleicon@alfredicon\endcsname {\simpleiconsmap\symbol{"EA68}}
+ \expandafter\def\csname simpleicon@algoliaicon\endcsname {\simpleiconsmap\symbol{"EA69}}
+ \expandafter\def\csname simpleicon@algorandicon\endcsname {\simpleiconsmap\symbol{"EA6A}}
+ \expandafter\def\csname simpleicon@alibabacloudicon\endcsname {\simpleiconsmap\symbol{"EA6B}}
+ \expandafter\def\csname simpleicon@alibabadotcomicon\endcsname {\simpleiconsmap\symbol{"EA6C}}
+ \expandafter\def\csname simpleicon@alienwareicon\endcsname {\simpleiconsmap\symbol{"EA6D}}
+ \expandafter\def\csname simpleicon@aliexpressicon\endcsname {\simpleiconsmap\symbol{"EA6E}}
+ \expandafter\def\csname simpleicon@alipayicon\endcsname {\simpleiconsmap\symbol{"EA6F}}
+ \expandafter\def\csname simpleicon@allegroicon\endcsname {\simpleiconsmap\symbol{"EA70}}
+ \expandafter\def\csname simpleicon@alliedmoddersicon\endcsname {\simpleiconsmap\symbol{"EA71}}
+ \expandafter\def\csname simpleicon@allocineicon\endcsname {\simpleiconsmap\symbol{"EA72}}
+ \expandafter\def\csname simpleicon@alltrailsicon\endcsname {\simpleiconsmap\symbol{"EA73}}
+ \expandafter\def\csname simpleicon@almalinuxicon\endcsname {\simpleiconsmap\symbol{"EA74}}
+ \expandafter\def\csname simpleicon@alpinedotjsicon\endcsname {\simpleiconsmap\symbol{"EA75}}
+ \expandafter\def\csname simpleicon@alpinelinuxicon\endcsname {\simpleiconsmap\symbol{"EA76}}
+ \expandafter\def\csname simpleicon@alternativetoicon\endcsname {\simpleiconsmap\symbol{"EA77}}
+ \expandafter\def\csname simpleicon@alteryxicon\endcsname {\simpleiconsmap\symbol{"EA78}}
+ \expandafter\def\csname simpleicon@altiumdesignericon\endcsname {\simpleiconsmap\symbol{"EA79}}
+ \expandafter\def\csname simpleicon@alwaysdataicon\endcsname {\simpleiconsmap\symbol{"EA7A}}
+ \expandafter\def\csname simpleicon@alxicon\endcsname {\simpleiconsmap\symbol{"EA7B}}
+ \expandafter\def\csname simpleicon@amazonicon\endcsname {\simpleiconsmap\symbol{"EA7C}}
+ \expandafter\def\csname simpleicon@amazonalexaicon\endcsname {\simpleiconsmap\symbol{"EA7D}}
+ \expandafter\def\csname simpleicon@amazonapigatewayicon\endcsname {\simpleiconsmap\symbol{"EA7E}}
+ \expandafter\def\csname simpleicon@amazoncloudwatchicon\endcsname {\simpleiconsmap\symbol{"EA7F}}
+ \expandafter\def\csname simpleicon@amazoncognitoicon\endcsname {\simpleiconsmap\symbol{"EA80}}
+ \expandafter\def\csname simpleicon@amazondocumentdbicon\endcsname {\simpleiconsmap\symbol{"EA81}}
+ \expandafter\def\csname simpleicon@amazondynamodbicon\endcsname {\simpleiconsmap\symbol{"EA82}}
+ \expandafter\def\csname simpleicon@amazonec2icon\endcsname {\simpleiconsmap\symbol{"EA83}}
+ \expandafter\def\csname simpleicon@amazonecsicon\endcsname {\simpleiconsmap\symbol{"EA84}}
+ \expandafter\def\csname simpleicon@amazoneksicon\endcsname {\simpleiconsmap\symbol{"EA85}}
+ \expandafter\def\csname simpleicon@amazonelasticacheicon\endcsname {\simpleiconsmap\symbol{"EA86}}
+ \expandafter\def\csname simpleicon@amazonfiretvicon\endcsname {\simpleiconsmap\symbol{"EA87}}
+ \expandafter\def\csname simpleicon@amazongamesicon\endcsname {\simpleiconsmap\symbol{"EA88}}
+ \expandafter\def\csname simpleicon@amazoniamicon\endcsname {\simpleiconsmap\symbol{"EA89}}
+ \expandafter\def\csname simpleicon@amazonlumberyardicon\endcsname {\simpleiconsmap\symbol{"EA8A}}
+ \expandafter\def\csname simpleicon@amazonlunaicon\endcsname {\simpleiconsmap\symbol{"EA8B}}
+ \expandafter\def\csname simpleicon@amazonmusicicon\endcsname {\simpleiconsmap\symbol{"EA8C}}
+ \expandafter\def\csname simpleicon@amazonpayicon\endcsname {\simpleiconsmap\symbol{"EA8D}}
+ \expandafter\def\csname simpleicon@amazonprimeicon\endcsname {\simpleiconsmap\symbol{"EA8E}}
+ \expandafter\def\csname simpleicon@amazonrdsicon\endcsname {\simpleiconsmap\symbol{"EA8F}}
+ \expandafter\def\csname simpleicon@amazonredshifticon\endcsname {\simpleiconsmap\symbol{"EA90}}
+ \expandafter\def\csname simpleicon@amazonroute53icon\endcsname {\simpleiconsmap\symbol{"EA91}}
+ \expandafter\def\csname simpleicon@amazons3icon\endcsname {\simpleiconsmap\symbol{"EA92}}
+ \expandafter\def\csname simpleicon@amazonsimpleemailserviceicon\endcsname {\simpleiconsmap\symbol{"EA93}}
+ \expandafter\def\csname simpleicon@amazonsqsicon\endcsname {\simpleiconsmap\symbol{"EA94}}
+ \expandafter\def\csname simpleicon@amazonwebservicesicon\endcsname {\simpleiconsmap\symbol{"EA95}}
+ \expandafter\def\csname simpleicon@amdicon\endcsname {\simpleiconsmap\symbol{"EA96}}
+ \expandafter\def\csname simpleicon@amebaicon\endcsname {\simpleiconsmap\symbol{"EA97}}
+ \expandafter\def\csname simpleicon@americanairlinesicon\endcsname {\simpleiconsmap\symbol{"EA98}}
+ \expandafter\def\csname simpleicon@americanexpressicon\endcsname {\simpleiconsmap\symbol{"EA99}}
+ \expandafter\def\csname simpleicon@amgicon\endcsname {\simpleiconsmap\symbol{"EA9A}}
+ \expandafter\def\csname simpleicon@ampicon\endcsname {\simpleiconsmap\symbol{"EA9B}}
+ \expandafter\def\csname simpleicon@amulicon\endcsname {\simpleiconsmap\symbol{"EA9C}}
+ \expandafter\def\csname simpleicon@anaicon\endcsname {\simpleiconsmap\symbol{"EA9D}}
+ \expandafter\def\csname simpleicon@anacondaicon\endcsname {\simpleiconsmap\symbol{"EA9E}}
+ \expandafter\def\csname simpleicon@analogueicon\endcsname {\simpleiconsmap\symbol{"EA9F}}
+ \expandafter\def\csname simpleicon@andelaicon\endcsname {\simpleiconsmap\symbol{"EAA0}}
+ \expandafter\def\csname simpleicon@androidicon\endcsname {\simpleiconsmap\symbol{"EAA1}}
+ \expandafter\def\csname simpleicon@androidautoicon\endcsname {\simpleiconsmap\symbol{"EAA2}}
+ \expandafter\def\csname simpleicon@androidstudioicon\endcsname {\simpleiconsmap\symbol{"EAA3}}
+ \expandafter\def\csname simpleicon@angularicon\endcsname {\simpleiconsmap\symbol{"EAA4}}
+ \expandafter\def\csname simpleicon@anilisticon\endcsname {\simpleiconsmap\symbol{"EAA5}}
+ \expandafter\def\csname simpleicon@animalplaneticon\endcsname {\simpleiconsmap\symbol{"EAA6}}
+ \expandafter\def\csname simpleicon@ankermakeicon\endcsname {\simpleiconsmap\symbol{"EAA7}}
+ \expandafter\def\csname simpleicon@ankiicon\endcsname {\simpleiconsmap\symbol{"EAA8}}
+ \expandafter\def\csname simpleicon@ansibleicon\endcsname {\simpleiconsmap\symbol{"EAA9}}
+ \expandafter\def\csname simpleicon@answericon\endcsname {\simpleiconsmap\symbol{"EAAA}}
+ \expandafter\def\csname simpleicon@ansysicon\endcsname {\simpleiconsmap\symbol{"EAAB}}
+ \expandafter\def\csname simpleicon@antaicon\endcsname {\simpleiconsmap\symbol{"EAAC}}
+ \expandafter\def\csname simpleicon@antdesignicon\endcsname {\simpleiconsmap\symbol{"EAAD}}
+ \expandafter\def\csname simpleicon@antena3icon\endcsname {\simpleiconsmap\symbol{"EAAE}}
+ \expandafter\def\csname simpleicon@anthropicicon\endcsname {\simpleiconsmap\symbol{"EAAF}}
+ \expandafter\def\csname simpleicon@anycubicicon\endcsname {\simpleiconsmap\symbol{"EAB0}}
+ \expandafter\def\csname simpleicon@anydeskicon\endcsname {\simpleiconsmap\symbol{"EAB1}}
+ \expandafter\def\csname simpleicon@anytypeicon\endcsname {\simpleiconsmap\symbol{"EAB2}}
+ \expandafter\def\csname simpleicon@aolicon\endcsname {\simpleiconsmap\symbol{"EAB3}}
+ \expandafter\def\csname simpleicon@apacheicon\endcsname {\simpleiconsmap\symbol{"EAB4}}
+ \expandafter\def\csname simpleicon@apacheairflowicon\endcsname {\simpleiconsmap\symbol{"EAB5}}
+ \expandafter\def\csname simpleicon@apacheanticon\endcsname {\simpleiconsmap\symbol{"EAB6}}
+ \expandafter\def\csname simpleicon@apachecassandraicon\endcsname {\simpleiconsmap\symbol{"EAB7}}
+ \expandafter\def\csname simpleicon@apachecloudstackicon\endcsname {\simpleiconsmap\symbol{"EAB8}}
+ \expandafter\def\csname simpleicon@apachecordovaicon\endcsname {\simpleiconsmap\symbol{"EAB9}}
+ \expandafter\def\csname simpleicon@apachecouchdbicon\endcsname {\simpleiconsmap\symbol{"EABA}}
+ \expandafter\def\csname simpleicon@apachedolphinschedulericon\endcsname {\simpleiconsmap\symbol{"EABB}}
+ \expandafter\def\csname simpleicon@apachedruidicon\endcsname {\simpleiconsmap\symbol{"EABC}}
+ \expandafter\def\csname simpleicon@apacheechartsicon\endcsname {\simpleiconsmap\symbol{"EABD}}
+ \expandafter\def\csname simpleicon@apacheflinkicon\endcsname {\simpleiconsmap\symbol{"EABE}}
+ \expandafter\def\csname simpleicon@apachefreemarkericon\endcsname {\simpleiconsmap\symbol{"EABF}}
+ \expandafter\def\csname simpleicon@apachegroovyicon\endcsname {\simpleiconsmap\symbol{"EAC0}}
+ \expandafter\def\csname simpleicon@apacheguacamoleicon\endcsname {\simpleiconsmap\symbol{"EAC1}}
+ \expandafter\def\csname simpleicon@apachehadoopicon\endcsname {\simpleiconsmap\symbol{"EAC2}}
+ \expandafter\def\csname simpleicon@apachehbaseicon\endcsname {\simpleiconsmap\symbol{"EAC3}}
+ \expandafter\def\csname simpleicon@apachehiveicon\endcsname {\simpleiconsmap\symbol{"EAC4}}
+ \expandafter\def\csname simpleicon@apachejmetericon\endcsname {\simpleiconsmap\symbol{"EAC5}}
+ \expandafter\def\csname simpleicon@apachekafkaicon\endcsname {\simpleiconsmap\symbol{"EAC6}}
+ \expandafter\def\csname simpleicon@apachekylinicon\endcsname {\simpleiconsmap\symbol{"EAC7}}
+ \expandafter\def\csname simpleicon@apachemavenicon\endcsname {\simpleiconsmap\symbol{"EAC8}}
+ \expandafter\def\csname simpleicon@apachenetbeansideicon\endcsname {\simpleiconsmap\symbol{"EAC9}}
+ \expandafter\def\csname simpleicon@apachenifiicon\endcsname {\simpleiconsmap\symbol{"EACA}}
+ \expandafter\def\csname simpleicon@apacheopenofficeicon\endcsname {\simpleiconsmap\symbol{"EACB}}
+ \expandafter\def\csname simpleicon@apacheparqueticon\endcsname {\simpleiconsmap\symbol{"EACC}}
+ \expandafter\def\csname simpleicon@apachepulsaricon\endcsname {\simpleiconsmap\symbol{"EACD}}
+ \expandafter\def\csname simpleicon@apacherocketmqicon\endcsname {\simpleiconsmap\symbol{"EACE}}
+ \expandafter\def\csname simpleicon@apachesolricon\endcsname {\simpleiconsmap\symbol{"EACF}}
+ \expandafter\def\csname simpleicon@apachesparkicon\endcsname {\simpleiconsmap\symbol{"EAD0}}
+ \expandafter\def\csname simpleicon@apachestormicon\endcsname {\simpleiconsmap\symbol{"EAD1}}
+ \expandafter\def\csname simpleicon@apachesuperseticon\endcsname {\simpleiconsmap\symbol{"EAD2}}
+ \expandafter\def\csname simpleicon@apachetomcaticon\endcsname {\simpleiconsmap\symbol{"EAD3}}
+ \expandafter\def\csname simpleicon@aparaticon\endcsname {\simpleiconsmap\symbol{"EAD4}}
+ \expandafter\def\csname simpleicon@apifoxicon\endcsname {\simpleiconsmap\symbol{"EAD5}}
+ \expandafter\def\csname simpleicon@apmterminalsicon\endcsname {\simpleiconsmap\symbol{"EAD6}}
+ \expandafter\def\csname simpleicon@apollographqlicon\endcsname {\simpleiconsmap\symbol{"EAD7}}
+ \expandafter\def\csname simpleicon@apostropheicon\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@appstoreicon\endcsname {\simpleiconsmap\symbol{"EAE4}}
+ \expandafter\def\csname simpleicon@appveyoricon\endcsname {\simpleiconsmap\symbol{"EAE5}}
+ \expandafter\def\csname simpleicon@appwriteicon\endcsname {\simpleiconsmap\symbol{"EAE6}}
+ \expandafter\def\csname simpleicon@aquaicon\endcsname {\simpleiconsmap\symbol{"EAE7}}
+ \expandafter\def\csname simpleicon@aralicon\endcsname {\simpleiconsmap\symbol{"EAE8}}
+ \expandafter\def\csname simpleicon@arangodbicon\endcsname {\simpleiconsmap\symbol{"EAE9}}
+ \expandafter\def\csname simpleicon@arcicon\endcsname {\simpleiconsmap\symbol{"EAEA}}
+ \expandafter\def\csname simpleicon@arcgisicon\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@archlinuxicon\endcsname {\simpleiconsmap\symbol{"EAEE}}
+ \expandafter\def\csname simpleicon@ardouricon\endcsname {\simpleiconsmap\symbol{"EAEF}}
+ \expandafter\def\csname simpleicon@arduinoicon\endcsname {\simpleiconsmap\symbol{"EAF0}}
+ \expandafter\def\csname simpleicon@argoicon\endcsname {\simpleiconsmap\symbol{"EAF1}}
+ \expandafter\def\csname simpleicon@argosicon\endcsname {\simpleiconsmap\symbol{"EAF2}}
+ \expandafter\def\csname simpleicon@ariakiticon\endcsname {\simpleiconsmap\symbol{"EAF3}}
+ \expandafter\def\csname simpleicon@arkecosystemicon\endcsname {\simpleiconsmap\symbol{"EAF4}}
+ \expandafter\def\csname simpleicon@arloicon\endcsname {\simpleiconsmap\symbol{"EAF5}}
+ \expandafter\def\csname simpleicon@armicon\endcsname {\simpleiconsmap\symbol{"EAF6}}
+ \expandafter\def\csname simpleicon@armkeilicon\endcsname {\simpleiconsmap\symbol{"EAF7}}
+ \expandafter\def\csname simpleicon@arstechnicaicon\endcsname {\simpleiconsmap\symbol{"EAF8}}
+ \expandafter\def\csname simpleicon@artifacthubicon\endcsname {\simpleiconsmap\symbol{"EAF9}}
+ \expandafter\def\csname simpleicon@artixlinuxicon\endcsname {\simpleiconsmap\symbol{"EAFA}}
+ \expandafter\def\csname simpleicon@artstationicon\endcsname {\simpleiconsmap\symbol{"EAFB}}
+ \expandafter\def\csname simpleicon@arxivicon\endcsname {\simpleiconsmap\symbol{"EAFC}}
+ \expandafter\def\csname simpleicon@asahilinuxicon\endcsname {\simpleiconsmap\symbol{"EAFD}}
+ \expandafter\def\csname simpleicon@asanaicon\endcsname {\simpleiconsmap\symbol{"EAFE}}
+ \expandafter\def\csname simpleicon@asciidoctoricon\endcsname {\simpleiconsmap\symbol{"EAFF}}
+ \expandafter\def\csname simpleicon@asciinemaicon\endcsname {\simpleiconsmap\symbol{"EB00}}
+ \expandafter\def\csname simpleicon@asdaicon\endcsname {\simpleiconsmap\symbol{"EB01}}
+ \expandafter\def\csname simpleicon@asepriteicon\endcsname {\simpleiconsmap\symbol{"EB02}}
+ \expandafter\def\csname simpleicon@askfmicon\endcsname {\simpleiconsmap\symbol{"EB03}}
+ \expandafter\def\csname simpleicon@assemblyscripticon\endcsname {\simpleiconsmap\symbol{"EB04}}
+ \expandafter\def\csname simpleicon@asteriskicon\endcsname {\simpleiconsmap\symbol{"EB05}}
+ \expandafter\def\csname simpleicon@astonmartinicon\endcsname {\simpleiconsmap\symbol{"EB06}}
+ \expandafter\def\csname simpleicon@astraicon\endcsname {\simpleiconsmap\symbol{"EB07}}
+ \expandafter\def\csname simpleicon@astralicon\endcsname {\simpleiconsmap\symbol{"EB08}}
+ \expandafter\def\csname simpleicon@astroicon\endcsname {\simpleiconsmap\symbol{"EB09}}
+ \expandafter\def\csname simpleicon@asusicon\endcsname {\simpleiconsmap\symbol{"EB0A}}
+ \expandafter\def\csname simpleicon@atandticon\endcsname {\simpleiconsmap\symbol{"EB0B}}
+ \expandafter\def\csname simpleicon@atariicon\endcsname {\simpleiconsmap\symbol{"EB0C}}
+ \expandafter\def\csname simpleicon@atlasosicon\endcsname {\simpleiconsmap\symbol{"EB0D}}
+ \expandafter\def\csname simpleicon@atlassianicon\endcsname {\simpleiconsmap\symbol{"EB0E}}
+ \expandafter\def\csname simpleicon@auchanicon\endcsname {\simpleiconsmap\symbol{"EB0F}}
+ \expandafter\def\csname simpleicon@audacityicon\endcsname {\simpleiconsmap\symbol{"EB10}}
+ \expandafter\def\csname simpleicon@audiicon\endcsname {\simpleiconsmap\symbol{"EB11}}
+ \expandafter\def\csname simpleicon@audibleicon\endcsname {\simpleiconsmap\symbol{"EB12}}
+ \expandafter\def\csname simpleicon@audiobookshelficon\endcsname {\simpleiconsmap\symbol{"EB13}}
+ \expandafter\def\csname simpleicon@audioboomicon\endcsname {\simpleiconsmap\symbol{"EB14}}
+ \expandafter\def\csname simpleicon@audiomackicon\endcsname {\simpleiconsmap\symbol{"EB15}}
+ \expandafter\def\csname simpleicon@audiotechnicaicon\endcsname {\simpleiconsmap\symbol{"EB16}}
+ \expandafter\def\csname simpleicon@aureliaicon\endcsname {\simpleiconsmap\symbol{"EB17}}
+ \expandafter\def\csname simpleicon@auth0icon\endcsname {\simpleiconsmap\symbol{"EB18}}
+ \expandafter\def\csname simpleicon@autheliaicon\endcsname {\simpleiconsmap\symbol{"EB19}}
+ \expandafter\def\csname simpleicon@authentikicon\endcsname {\simpleiconsmap\symbol{"EB1A}}
+ \expandafter\def\csname simpleicon@authyicon\endcsname {\simpleiconsmap\symbol{"EB1B}}
+ \expandafter\def\csname simpleicon@autocadicon\endcsname {\simpleiconsmap\symbol{"EB1C}}
+ \expandafter\def\csname simpleicon@autocannonicon\endcsname {\simpleiconsmap\symbol{"EB1D}}
+ \expandafter\def\csname simpleicon@autodeskicon\endcsname {\simpleiconsmap\symbol{"EB1E}}
+ \expandafter\def\csname simpleicon@autodeskmayaicon\endcsname {\simpleiconsmap\symbol{"EB1F}}
+ \expandafter\def\csname simpleicon@autodeskreviticon\endcsname {\simpleiconsmap\symbol{"EB20}}
+ \expandafter\def\csname simpleicon@autohotkeyicon\endcsname {\simpleiconsmap\symbol{"EB21}}
+ \expandafter\def\csname simpleicon@autoiticon\endcsname {\simpleiconsmap\symbol{"EB22}}
+ \expandafter\def\csname simpleicon@automatticicon\endcsname {\simpleiconsmap\symbol{"EB23}}
+ \expandafter\def\csname simpleicon@autoprefixericon\endcsname {\simpleiconsmap\symbol{"EB24}}
+ \expandafter\def\csname simpleicon@autozoneicon\endcsname {\simpleiconsmap\symbol{"EB25}}
+ \expandafter\def\csname simpleicon@avajsicon\endcsname {\simpleiconsmap\symbol{"EB26}}
+ \expandafter\def\csname simpleicon@avasticon\endcsname {\simpleiconsmap\symbol{"EB27}}
+ \expandafter\def\csname simpleicon@aviancaicon\endcsname {\simpleiconsmap\symbol{"EB28}}
+ \expandafter\def\csname simpleicon@aviraicon\endcsname {\simpleiconsmap\symbol{"EB29}}
+ \expandafter\def\csname simpleicon@awesomelistsicon\endcsname {\simpleiconsmap\symbol{"EB2A}}
+ \expandafter\def\csname simpleicon@awesomewmicon\endcsname {\simpleiconsmap\symbol{"EB2B}}
+ \expandafter\def\csname simpleicon@awsamplifyicon\endcsname {\simpleiconsmap\symbol{"EB2C}}
+ \expandafter\def\csname simpleicon@awselasticloadbalancingicon\endcsname {\simpleiconsmap\symbol{"EB2D}}
+ \expandafter\def\csname simpleicon@awsfargateicon\endcsname {\simpleiconsmap\symbol{"EB2E}}
+ \expandafter\def\csname simpleicon@awslambdaicon\endcsname {\simpleiconsmap\symbol{"EB2F}}
+ \expandafter\def\csname simpleicon@awsorganizationsicon\endcsname {\simpleiconsmap\symbol{"EB30}}
+ \expandafter\def\csname simpleicon@awssecretsmanagericon\endcsname {\simpleiconsmap\symbol{"EB31}}
+ \expandafter\def\csname simpleicon@awwwardsicon\endcsname {\simpleiconsmap\symbol{"EB32}}
+ \expandafter\def\csname simpleicon@axiosicon\endcsname {\simpleiconsmap\symbol{"EB33}}
+ \expandafter\def\csname simpleicon@babelicon\endcsname {\simpleiconsmap\symbol{"EB34}}
+ \expandafter\def\csname simpleicon@babelioicon\endcsname {\simpleiconsmap\symbol{"EB35}}
+ \expandafter\def\csname simpleicon@babylondotjsicon\endcsname {\simpleiconsmap\symbol{"EB36}}
+ \expandafter\def\csname simpleicon@backblazeicon\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@bandrautomationicon\endcsname {\simpleiconsmap\symbol{"EB42}}
+ \expandafter\def\csname simpleicon@bandsintownicon\endcsname {\simpleiconsmap\symbol{"EB43}}
+ \expandafter\def\csname simpleicon@bankofamericaicon\endcsname {\simpleiconsmap\symbol{"EB44}}
+ \expandafter\def\csname simpleicon@barclaysicon\endcsname {\simpleiconsmap\symbol{"EB45}}
+ \expandafter\def\csname simpleicon@baremetricsicon\endcsname {\simpleiconsmap\symbol{"EB46}}
+ \expandafter\def\csname simpleicon@barmeniaicon\endcsname {\simpleiconsmap\symbol{"EB47}}
+ \expandafter\def\csname simpleicon@basecampicon\endcsname {\simpleiconsmap\symbol{"EB48}}
+ \expandafter\def\csname simpleicon@baserowicon\endcsname {\simpleiconsmap\symbol{"EB49}}
+ \expandafter\def\csname simpleicon@basicattentiontokenicon\endcsname {\simpleiconsmap\symbol{"EB4A}}
+ \expandafter\def\csname simpleicon@bastyonicon\endcsname {\simpleiconsmap\symbol{"EB4B}}
+ \expandafter\def\csname simpleicon@baticon\endcsname {\simpleiconsmap\symbol{"EB4C}}
+ \expandafter\def\csname simpleicon@bataicon\endcsname {\simpleiconsmap\symbol{"EB4D}}
+ \expandafter\def\csname simpleicon@battledotneticon\endcsname {\simpleiconsmap\symbol{"EB4E}}
+ \expandafter\def\csname simpleicon@bazelicon\endcsname {\simpleiconsmap\symbol{"EB4F}}
+ \expandafter\def\csname simpleicon@beatporticon\endcsname {\simpleiconsmap\symbol{"EB50}}
+ \expandafter\def\csname simpleicon@beatsicon\endcsname {\simpleiconsmap\symbol{"EB51}}
+ \expandafter\def\csname simpleicon@beatsbydreicon\endcsname {\simpleiconsmap\symbol{"EB52}}
+ \expandafter\def\csname simpleicon@beatstarsicon\endcsname {\simpleiconsmap\symbol{"EB53}}
+ \expandafter\def\csname simpleicon@beekeeperstudioicon\endcsname {\simpleiconsmap\symbol{"EB54}}
+ \expandafter\def\csname simpleicon@behanceicon\endcsname {\simpleiconsmap\symbol{"EB55}}
+ \expandafter\def\csname simpleicon@beijingsubwayicon\endcsname {\simpleiconsmap\symbol{"EB56}}
+ \expandafter\def\csname simpleicon@bemicon\endcsname {\simpleiconsmap\symbol{"EB57}}
+ \expandafter\def\csname simpleicon@bentleyicon\endcsname {\simpleiconsmap\symbol{"EB58}}
+ \expandafter\def\csname simpleicon@bentoicon\endcsname {\simpleiconsmap\symbol{"EB59}}
+ \expandafter\def\csname simpleicon@bentoboxicon\endcsname {\simpleiconsmap\symbol{"EB5A}}
+ \expandafter\def\csname simpleicon@bentomlicon\endcsname {\simpleiconsmap\symbol{"EB5B}}
+ \expandafter\def\csname simpleicon@berealicon\endcsname {\simpleiconsmap\symbol{"EB5C}}
+ \expandafter\def\csname simpleicon@betfairicon\endcsname {\simpleiconsmap\symbol{"EB5D}}
+ \expandafter\def\csname simpleicon@betterstackicon\endcsname {\simpleiconsmap\symbol{"EB5E}}
+ \expandafter\def\csname simpleicon@bevyicon\endcsname {\simpleiconsmap\symbol{"EB5F}}
+ \expandafter\def\csname simpleicon@bigbasketicon\endcsname {\simpleiconsmap\symbol{"EB60}}
+ \expandafter\def\csname simpleicon@bigbluebuttonicon\endcsname {\simpleiconsmap\symbol{"EB61}}
+ \expandafter\def\csname simpleicon@bigcartelicon\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@cacheticon\endcsname {\simpleiconsmap\symbol{"EBC4}}
+ \expandafter\def\csname simpleicon@caddyicon\endcsname {\simpleiconsmap\symbol{"EBC5}}
+ \expandafter\def\csname simpleicon@cadillacicon\endcsname {\simpleiconsmap\symbol{"EBC6}}
+ \expandafter\def\csname simpleicon@cafepressicon\endcsname {\simpleiconsmap\symbol{"EBC7}}
+ \expandafter\def\csname simpleicon@caffeineicon\endcsname {\simpleiconsmap\symbol{"EBC8}}
+ \expandafter\def\csname simpleicon@cairographicsicon\endcsname {\simpleiconsmap\symbol{"EBC9}}
+ \expandafter\def\csname simpleicon@cairometroicon\endcsname {\simpleiconsmap\symbol{"EBCA}}
+ \expandafter\def\csname simpleicon@cakephpicon\endcsname {\simpleiconsmap\symbol{"EBCB}}
+ \expandafter\def\csname simpleicon@caldotcomicon\endcsname {\simpleiconsmap\symbol{"EBCC}}
+ \expandafter\def\csname simpleicon@calendlyicon\endcsname {\simpleiconsmap\symbol{"EBCD}}
+ \expandafter\def\csname simpleicon@calibrewebicon\endcsname {\simpleiconsmap\symbol{"EBCE}}
+ \expandafter\def\csname simpleicon@campaignmonitoricon\endcsname {\simpleiconsmap\symbol{"EBCF}}
+ \expandafter\def\csname simpleicon@camundaicon\endcsname {\simpleiconsmap\symbol{"EBD0}}
+ \expandafter\def\csname simpleicon@canonicalicon\endcsname {\simpleiconsmap\symbol{"EBD1}}
+ \expandafter\def\csname simpleicon@canvaicon\endcsname {\simpleiconsmap\symbol{"EBD2}}
+ \expandafter\def\csname simpleicon@canvasicon\endcsname {\simpleiconsmap\symbol{"EBD3}}
+ \expandafter\def\csname simpleicon@capacitoricon\endcsname {\simpleiconsmap\symbol{"EBD4}}
+ \expandafter\def\csname simpleicon@caprovericon\endcsname {\simpleiconsmap\symbol{"EBD5}}
+ \expandafter\def\csname simpleicon@cardanoicon\endcsname {\simpleiconsmap\symbol{"EBD6}}
+ \expandafter\def\csname simpleicon@carlsberggroupicon\endcsname {\simpleiconsmap\symbol{"EBD7}}
+ \expandafter\def\csname simpleicon@carrdicon\endcsname {\simpleiconsmap\symbol{"EBD8}}
+ \expandafter\def\csname simpleicon@carrefouricon\endcsname {\simpleiconsmap\symbol{"EBD9}}
+ \expandafter\def\csname simpleicon@carthrottleicon\endcsname {\simpleiconsmap\symbol{"EBDA}}
+ \expandafter\def\csname simpleicon@cartoicon\endcsname {\simpleiconsmap\symbol{"EBDB}}
+ \expandafter\def\csname simpleicon@cashappicon\endcsname {\simpleiconsmap\symbol{"EBDC}}
+ \expandafter\def\csname simpleicon@castboxicon\endcsname {\simpleiconsmap\symbol{"EBDD}}
+ \expandafter\def\csname simpleicon@castoramaicon\endcsname {\simpleiconsmap\symbol{"EBDE}}
+ \expandafter\def\csname simpleicon@castroicon\endcsname {\simpleiconsmap\symbol{"EBDF}}
+ \expandafter\def\csname simpleicon@caterpillaricon\endcsname {\simpleiconsmap\symbol{"EBE0}}
+ \expandafter\def\csname simpleicon@cbcicon\endcsname {\simpleiconsmap\symbol{"EBE1}}
+ \expandafter\def\csname simpleicon@cbsicon\endcsname {\simpleiconsmap\symbol{"EBE2}}
+ \expandafter\def\csname simpleicon@ccleanericon\endcsname {\simpleiconsmap\symbol{"EBE3}}
+ \expandafter\def\csname simpleicon@cdprojekticon\endcsname {\simpleiconsmap\symbol{"EBE4}}
+ \expandafter\def\csname simpleicon@celeryicon\endcsname {\simpleiconsmap\symbol{"EBE5}}
+ \expandafter\def\csname simpleicon@celestronicon\endcsname {\simpleiconsmap\symbol{"EBE6}}
+ \expandafter\def\csname simpleicon@centosicon\endcsname {\simpleiconsmap\symbol{"EBE7}}
+ \expandafter\def\csname simpleicon@cephicon\endcsname {\simpleiconsmap\symbol{"EBE8}}
+ \expandafter\def\csname simpleicon@cesiumicon\endcsname {\simpleiconsmap\symbol{"EBE9}}
+ \expandafter\def\csname simpleicon@chaiicon\endcsname {\simpleiconsmap\symbol{"EBEA}}
+ \expandafter\def\csname simpleicon@chainguardicon\endcsname {\simpleiconsmap\symbol{"EBEB}}
+ \expandafter\def\csname simpleicon@chainlinkicon\endcsname {\simpleiconsmap\symbol{"EBEC}}
+ \expandafter\def\csname simpleicon@chakrauiicon\endcsname {\simpleiconsmap\symbol{"EBED}}
+ \expandafter\def\csname simpleicon@channel4icon\endcsname {\simpleiconsmap\symbol{"EBEE}}
+ \expandafter\def\csname simpleicon@charlesicon\endcsname {\simpleiconsmap\symbol{"EBEF}}
+ \expandafter\def\csname simpleicon@chartdotjsicon\endcsname {\simpleiconsmap\symbol{"EBF0}}
+ \expandafter\def\csname simpleicon@chartmogulicon\endcsname {\simpleiconsmap\symbol{"EBF1}}
+ \expandafter\def\csname simpleicon@chaseicon\endcsname {\simpleiconsmap\symbol{"EBF2}}
+ \expandafter\def\csname simpleicon@chatboticon\endcsname {\simpleiconsmap\symbol{"EBF3}}
+ \expandafter\def\csname simpleicon@chatwooticon\endcsname {\simpleiconsmap\symbol{"EBF4}}
+ \expandafter\def\csname simpleicon@checkioicon\endcsname {\simpleiconsmap\symbol{"EBF5}}
+ \expandafter\def\csname simpleicon@checkmarxicon\endcsname {\simpleiconsmap\symbol{"EBF6}}
+ \expandafter\def\csname simpleicon@checkmkicon\endcsname {\simpleiconsmap\symbol{"EBF7}}
+ \expandafter\def\csname simpleicon@chedrauiicon\endcsname {\simpleiconsmap\symbol{"EBF8}}
+ \expandafter\def\csname simpleicon@cheerioicon\endcsname {\simpleiconsmap\symbol{"EBF9}}
+ \expandafter\def\csname simpleicon@cheficon\endcsname {\simpleiconsmap\symbol{"EBFA}}
+ \expandafter\def\csname simpleicon@chemexicon\endcsname {\simpleiconsmap\symbol{"EBFB}}
+ \expandafter\def\csname simpleicon@chessdotcomicon\endcsname {\simpleiconsmap\symbol{"EBFC}}
+ \expandafter\def\csname simpleicon@chevroleticon\endcsname {\simpleiconsmap\symbol{"EBFD}}
+ \expandafter\def\csname simpleicon@chianetworkicon\endcsname {\simpleiconsmap\symbol{"EBFE}}
+ \expandafter\def\csname simpleicon@chinaeasternairlinesicon\endcsname {\simpleiconsmap\symbol{"EBFF}}
+ \expandafter\def\csname simpleicon@chinasouthernairlinesicon\endcsname {\simpleiconsmap\symbol{"EC00}}
+ \expandafter\def\csname simpleicon@chocolateyicon\endcsname {\simpleiconsmap\symbol{"EC01}}
+ \expandafter\def\csname simpleicon@chromaticicon\endcsname {\simpleiconsmap\symbol{"EC02}}
+ \expandafter\def\csname simpleicon@chromecasticon\endcsname {\simpleiconsmap\symbol{"EC03}}
+ \expandafter\def\csname simpleicon@chromewebstoreicon\endcsname {\simpleiconsmap\symbol{"EC04}}
+ \expandafter\def\csname simpleicon@chryslericon\endcsname {\simpleiconsmap\symbol{"EC05}}
+ \expandafter\def\csname simpleicon@chupachupsicon\endcsname {\simpleiconsmap\symbol{"EC06}}
+ \expandafter\def\csname simpleicon@ciliumicon\endcsname {\simpleiconsmap\symbol{"EC07}}
+ \expandafter\def\csname simpleicon@cinema4dicon\endcsname {\simpleiconsmap\symbol{"EC08}}
+ \expandafter\def\csname simpleicon@cinnamonicon\endcsname {\simpleiconsmap\symbol{"EC09}}
+ \expandafter\def\csname simpleicon@circleicon\endcsname {\simpleiconsmap\symbol{"EC0A}}
+ \expandafter\def\csname simpleicon@circleciicon\endcsname {\simpleiconsmap\symbol{"EC0B}}
+ \expandafter\def\csname simpleicon@circuitverseicon\endcsname {\simpleiconsmap\symbol{"EC0C}}
+ \expandafter\def\csname simpleicon@cirrusciicon\endcsname {\simpleiconsmap\symbol{"EC0D}}
+ \expandafter\def\csname simpleicon@ciscoicon\endcsname {\simpleiconsmap\symbol{"EC0E}}
+ \expandafter\def\csname simpleicon@citrixicon\endcsname {\simpleiconsmap\symbol{"EC0F}}
+ \expandafter\def\csname simpleicon@citroenicon\endcsname {\simpleiconsmap\symbol{"EC10}}
+ \expandafter\def\csname simpleicon@civicrmicon\endcsname {\simpleiconsmap\symbol{"EC11}}
+ \expandafter\def\csname simpleicon@civoicon\endcsname {\simpleiconsmap\symbol{"EC12}}
+ \expandafter\def\csname simpleicon@ckeditor4icon\endcsname {\simpleiconsmap\symbol{"EC13}}
+ \expandafter\def\csname simpleicon@clarifaiicon\endcsname {\simpleiconsmap\symbol{"EC14}}
+ \expandafter\def\csname simpleicon@clarisicon\endcsname {\simpleiconsmap\symbol{"EC15}}
+ \expandafter\def\csname simpleicon@clarivateicon\endcsname {\simpleiconsmap\symbol{"EC16}}
+ \expandafter\def\csname simpleicon@clerkicon\endcsname {\simpleiconsmap\symbol{"EC17}}
+ \expandafter\def\csname simpleicon@clevercloudicon\endcsname {\simpleiconsmap\symbol{"EC18}}
+ \expandafter\def\csname simpleicon@clickhouseicon\endcsname {\simpleiconsmap\symbol{"EC19}}
+ \expandafter\def\csname simpleicon@clickupicon\endcsname {\simpleiconsmap\symbol{"EC1A}}
+ \expandafter\def\csname simpleicon@clionicon\endcsname {\simpleiconsmap\symbol{"EC1B}}
+ \expandafter\def\csname simpleicon@cliqzicon\endcsname {\simpleiconsmap\symbol{"EC1C}}
+ \expandafter\def\csname simpleicon@clockifyicon\endcsname {\simpleiconsmap\symbol{"EC1D}}
+ \expandafter\def\csname simpleicon@clojureicon\endcsname {\simpleiconsmap\symbol{"EC1E}}
+ \expandafter\def\csname simpleicon@cloud66icon\endcsname {\simpleiconsmap\symbol{"EC1F}}
+ \expandafter\def\csname simpleicon@cloudbeesicon\endcsname {\simpleiconsmap\symbol{"EC20}}
+ \expandafter\def\csname simpleicon@cloudcannonicon\endcsname {\simpleiconsmap\symbol{"EC21}}
+ \expandafter\def\csname simpleicon@clouderaicon\endcsname {\simpleiconsmap\symbol{"EC22}}
+ \expandafter\def\csname simpleicon@cloudflareicon\endcsname {\simpleiconsmap\symbol{"EC23}}
+ \expandafter\def\csname simpleicon@cloudflarepagesicon\endcsname {\simpleiconsmap\symbol{"EC24}}
+ \expandafter\def\csname simpleicon@cloudflareworkersicon\endcsname {\simpleiconsmap\symbol{"EC25}}
+ \expandafter\def\csname simpleicon@cloudfoundryicon\endcsname {\simpleiconsmap\symbol{"EC26}}
+ \expandafter\def\csname simpleicon@cloudinaryicon\endcsname {\simpleiconsmap\symbol{"EC27}}
+ \expandafter\def\csname simpleicon@cloudronicon\endcsname {\simpleiconsmap\symbol{"EC28}}
+ \expandafter\def\csname simpleicon@cloudsmithicon\endcsname {\simpleiconsmap\symbol{"EC29}}
+ \expandafter\def\csname simpleicon@cloudwaysicon\endcsname {\simpleiconsmap\symbol{"EC2A}}
+ \expandafter\def\csname simpleicon@clubforceicon\endcsname {\simpleiconsmap\symbol{"EC2B}}
+ \expandafter\def\csname simpleicon@clubhouseicon\endcsname {\simpleiconsmap\symbol{"EC2C}}
+ \expandafter\def\csname simpleicon@clypicon\endcsname {\simpleiconsmap\symbol{"EC2D}}
+ \expandafter\def\csname simpleicon@cmakeicon\endcsname {\simpleiconsmap\symbol{"EC2E}}
+ \expandafter\def\csname simpleicon@cncficon\endcsname {\simpleiconsmap\symbol{"EC2F}}
+ \expandafter\def\csname simpleicon@cneticon\endcsname {\simpleiconsmap\symbol{"EC30}}
+ \expandafter\def\csname simpleicon@cnnicon\endcsname {\simpleiconsmap\symbol{"EC31}}
+ \expandafter\def\csname simpleicon@cocacolaicon\endcsname {\simpleiconsmap\symbol{"EC32}}
+ \expandafter\def\csname simpleicon@cockpiticon\endcsname {\simpleiconsmap\symbol{"EC33}}
+ \expandafter\def\csname simpleicon@cockroachlabsicon\endcsname {\simpleiconsmap\symbol{"EC34}}
+ \expandafter\def\csname simpleicon@cocoapodsicon\endcsname {\simpleiconsmap\symbol{"EC35}}
+ \expandafter\def\csname simpleicon@cocosicon\endcsname {\simpleiconsmap\symbol{"EC36}}
+ \expandafter\def\csname simpleicon@codaicon\endcsname {\simpleiconsmap\symbol{"EC37}}
+ \expandafter\def\csname simpleicon@codacyicon\endcsname {\simpleiconsmap\symbol{"EC38}}
+ \expandafter\def\csname simpleicon@codebergicon\endcsname {\simpleiconsmap\symbol{"EC39}}
+ \expandafter\def\csname simpleicon@codeblocksicon\endcsname {\simpleiconsmap\symbol{"EC3A}}
+ \expandafter\def\csname simpleicon@codecademyicon\endcsname {\simpleiconsmap\symbol{"EC3B}}
+ \expandafter\def\csname simpleicon@codeceptjsicon\endcsname {\simpleiconsmap\symbol{"EC3C}}
+ \expandafter\def\csname simpleicon@codecheficon\endcsname {\simpleiconsmap\symbol{"EC3D}}
+ \expandafter\def\csname simpleicon@codeclimateicon\endcsname {\simpleiconsmap\symbol{"EC3E}}
+ \expandafter\def\csname simpleicon@codecovicon\endcsname {\simpleiconsmap\symbol{"EC3F}}
+ \expandafter\def\csname simpleicon@codecraftersicon\endcsname {\simpleiconsmap\symbol{"EC40}}
+ \expandafter\def\csname simpleicon@codefactoricon\endcsname {\simpleiconsmap\symbol{"EC41}}
+ \expandafter\def\csname simpleicon@codeforcesicon\endcsname {\simpleiconsmap\symbol{"EC42}}
+ \expandafter\def\csname simpleicon@codefreshicon\endcsname {\simpleiconsmap\symbol{"EC43}}
+ \expandafter\def\csname simpleicon@codeignitericon\endcsname {\simpleiconsmap\symbol{"EC44}}
+ \expandafter\def\csname simpleicon@codeiumicon\endcsname {\simpleiconsmap\symbol{"EC45}}
+ \expandafter\def\csname simpleicon@codemagicicon\endcsname {\simpleiconsmap\symbol{"EC46}}
+ \expandafter\def\csname simpleicon@codementoricon\endcsname {\simpleiconsmap\symbol{"EC47}}
+ \expandafter\def\csname simpleicon@codemirroricon\endcsname {\simpleiconsmap\symbol{"EC48}}
+ \expandafter\def\csname simpleicon@codenewbieicon\endcsname {\simpleiconsmap\symbol{"EC49}}
+ \expandafter\def\csname simpleicon@codepenicon\endcsname {\simpleiconsmap\symbol{"EC4A}}
+ \expandafter\def\csname simpleicon@codeprojecticon\endcsname {\simpleiconsmap\symbol{"EC4B}}
+ \expandafter\def\csname simpleicon@codericon\endcsname {\simpleiconsmap\symbol{"EC4C}}
+ \expandafter\def\csname simpleicon@codersrankicon\endcsname {\simpleiconsmap\symbol{"EC4D}}
+ \expandafter\def\csname simpleicon@coderwallicon\endcsname {\simpleiconsmap\symbol{"EC4E}}
+ \expandafter\def\csname simpleicon@codesandboxicon\endcsname {\simpleiconsmap\symbol{"EC4F}}
+ \expandafter\def\csname simpleicon@codeshipicon\endcsname {\simpleiconsmap\symbol{"EC50}}
+ \expandafter\def\csname simpleicon@codesignalicon\endcsname {\simpleiconsmap\symbol{"EC51}}
+ \expandafter\def\csname simpleicon@codestreamicon\endcsname {\simpleiconsmap\symbol{"EC52}}
+ \expandafter\def\csname simpleicon@codewarsicon\endcsname {\simpleiconsmap\symbol{"EC53}}
+ \expandafter\def\csname simpleicon@codingameicon\endcsname {\simpleiconsmap\symbol{"EC54}}
+ \expandafter\def\csname simpleicon@codingninjasicon\endcsname {\simpleiconsmap\symbol{"EC55}}
+ \expandafter\def\csname simpleicon@codioicon\endcsname {\simpleiconsmap\symbol{"EC56}}
+ \expandafter\def\csname simpleicon@coffeescripticon\endcsname {\simpleiconsmap\symbol{"EC57}}
+ \expandafter\def\csname simpleicon@coggleicon\endcsname {\simpleiconsmap\symbol{"EC58}}
+ \expandafter\def\csname simpleicon@cognizanticon\endcsname {\simpleiconsmap\symbol{"EC59}}
+ \expandafter\def\csname simpleicon@coilicon\endcsname {\simpleiconsmap\symbol{"EC5A}}
+ \expandafter\def\csname simpleicon@coinbaseicon\endcsname {\simpleiconsmap\symbol{"EC5B}}
+ \expandafter\def\csname simpleicon@coinmarketcapicon\endcsname {\simpleiconsmap\symbol{"EC5C}}
+ \expandafter\def\csname simpleicon@comicfuryicon\endcsname {\simpleiconsmap\symbol{"EC5D}}
+ \expandafter\def\csname simpleicon@commaicon\endcsname {\simpleiconsmap\symbol{"EC5E}}
+ \expandafter\def\csname simpleicon@commerzbankicon\endcsname {\simpleiconsmap\symbol{"EC5F}}
+ \expandafter\def\csname simpleicon@commitlinticon\endcsname {\simpleiconsmap\symbol{"EC60}}
+ \expandafter\def\csname simpleicon@commodoreicon\endcsname {\simpleiconsmap\symbol{"EC61}}
+ \expandafter\def\csname simpleicon@commonworkflowlanguageicon\endcsname {\simpleiconsmap\symbol{"EC62}}
+ \expandafter\def\csname simpleicon@compilerexplorericon\endcsname {\simpleiconsmap\symbol{"EC63}}
+ \expandafter\def\csname simpleicon@composericon\endcsname {\simpleiconsmap\symbol{"EC64}}
+ \expandafter\def\csname simpleicon@comptiaicon\endcsname {\simpleiconsmap\symbol{"EC65}}
+ \expandafter\def\csname simpleicon@comsolicon\endcsname {\simpleiconsmap\symbol{"EC66}}
+ \expandafter\def\csname simpleicon@conanicon\endcsname {\simpleiconsmap\symbol{"EC67}}
+ \expandafter\def\csname simpleicon@concourseicon\endcsname {\simpleiconsmap\symbol{"EC68}}
+ \expandafter\def\csname simpleicon@condaforgeicon\endcsname {\simpleiconsmap\symbol{"EC69}}
+ \expandafter\def\csname simpleicon@conektaicon\endcsname {\simpleiconsmap\symbol{"EC6A}}
+ \expandafter\def\csname simpleicon@confluenceicon\endcsname {\simpleiconsmap\symbol{"EC6B}}
+ \expandafter\def\csname simpleicon@construct3icon\endcsname {\simpleiconsmap\symbol{"EC6C}}
+ \expandafter\def\csname simpleicon@consulicon\endcsname {\simpleiconsmap\symbol{"EC6D}}
+ \expandafter\def\csname simpleicon@contaboicon\endcsname {\simpleiconsmap\symbol{"EC6E}}
+ \expandafter\def\csname simpleicon@contactlesspaymenticon\endcsname {\simpleiconsmap\symbol{"EC6F}}
+ \expandafter\def\csname simpleicon@containerdicon\endcsname {\simpleiconsmap\symbol{"EC70}}
+ \expandafter\def\csname simpleicon@contaoicon\endcsname {\simpleiconsmap\symbol{"EC71}}
+ \expandafter\def\csname simpleicon@contentfulicon\endcsname {\simpleiconsmap\symbol{"EC72}}
+ \expandafter\def\csname simpleicon@contentstackicon\endcsname {\simpleiconsmap\symbol{"EC73}}
+ \expandafter\def\csname simpleicon@contributorcovenanticon\endcsname {\simpleiconsmap\symbol{"EC74}}
+ \expandafter\def\csname simpleicon@conventionalcommitsicon\endcsname {\simpleiconsmap\symbol{"EC75}}
+ \expandafter\def\csname simpleicon@convertioicon\endcsname {\simpleiconsmap\symbol{"EC76}}
+ \expandafter\def\csname simpleicon@cookiecuttericon\endcsname {\simpleiconsmap\symbol{"EC77}}
+ \expandafter\def\csname simpleicon@coolermastericon\endcsname {\simpleiconsmap\symbol{"EC78}}
+ \expandafter\def\csname simpleicon@coopicon\endcsname {\simpleiconsmap\symbol{"EC79}}
+ \expandafter\def\csname simpleicon@copaairlinesicon\endcsname {\simpleiconsmap\symbol{"EC7A}}
+ \expandafter\def\csname simpleicon@coppelicon\endcsname {\simpleiconsmap\symbol{"EC7B}}
+ \expandafter\def\csname simpleicon@coraicon\endcsname {\simpleiconsmap\symbol{"EC7C}}
+ \expandafter\def\csname simpleicon@coreldrawicon\endcsname {\simpleiconsmap\symbol{"EC7D}}
+ \expandafter\def\csname simpleicon@coronaengineicon\endcsname {\simpleiconsmap\symbol{"EC7E}}
+ \expandafter\def\csname simpleicon@coronarenderericon\endcsname {\simpleiconsmap\symbol{"EC7F}}
+ \expandafter\def\csname simpleicon@corsairicon\endcsname {\simpleiconsmap\symbol{"EC80}}
+ \expandafter\def\csname simpleicon@couchbaseicon\endcsname {\simpleiconsmap\symbol{"EC81}}
+ \expandafter\def\csname simpleicon@counterstrikeicon\endcsname {\simpleiconsmap\symbol{"EC82}}
+ \expandafter\def\csname simpleicon@countingworksproicon\endcsname {\simpleiconsmap\symbol{"EC83}}
+ \expandafter\def\csname simpleicon@courseraicon\endcsname {\simpleiconsmap\symbol{"EC84}}
+ \expandafter\def\csname simpleicon@coverallsicon\endcsname {\simpleiconsmap\symbol{"EC85}}
+ \expandafter\def\csname simpleicon@cozeicon\endcsname {\simpleiconsmap\symbol{"EC86}}
+ \expandafter\def\csname simpleicon@cpanelicon\endcsname {\simpleiconsmap\symbol{"EC87}}
+ \expandafter\def\csname simpleicon@cplusplusicon\endcsname {\simpleiconsmap\symbol{"EC88}}
+ \expandafter\def\csname simpleicon@cplusplusbuildericon\endcsname {\simpleiconsmap\symbol{"EC89}}
+ \expandafter\def\csname simpleicon@craftcmsicon\endcsname {\simpleiconsmap\symbol{"EC8A}}
+ \expandafter\def\csname simpleicon@craftsmanicon\endcsname {\simpleiconsmap\symbol{"EC8B}}
+ \expandafter\def\csname simpleicon@cratedbicon\endcsname {\simpleiconsmap\symbol{"EC8C}}
+ \expandafter\def\csname simpleicon@crayonicon\endcsname {\simpleiconsmap\symbol{"EC8D}}
+ \expandafter\def\csname simpleicon@crealityicon\endcsname {\simpleiconsmap\symbol{"EC8E}}
+ \expandafter\def\csname simpleicon@createreactappicon\endcsname {\simpleiconsmap\symbol{"EC8F}}
+ \expandafter\def\csname simpleicon@creativecommonsicon\endcsname {\simpleiconsmap\symbol{"EC90}}
+ \expandafter\def\csname simpleicon@creativetechnologyicon\endcsname {\simpleiconsmap\symbol{"EC91}}
+ \expandafter\def\csname simpleicon@credlyicon\endcsname {\simpleiconsmap\symbol{"EC92}}
+ \expandafter\def\csname simpleicon@crehanaicon\endcsname {\simpleiconsmap\symbol{"EC93}}
+ \expandafter\def\csname simpleicon@crewunitedicon\endcsname {\simpleiconsmap\symbol{"EC94}}
+ \expandafter\def\csname simpleicon@criticalroleicon\endcsname {\simpleiconsmap\symbol{"EC95}}
+ \expandafter\def\csname simpleicon@crowdinicon\endcsname {\simpleiconsmap\symbol{"EC96}}
+ \expandafter\def\csname simpleicon@crowdsourceicon\endcsname {\simpleiconsmap\symbol{"EC97}}
+ \expandafter\def\csname simpleicon@crunchbaseicon\endcsname {\simpleiconsmap\symbol{"EC98}}
+ \expandafter\def\csname simpleicon@crunchyrollicon\endcsname {\simpleiconsmap\symbol{"EC99}}
+ \expandafter\def\csname simpleicon@cryengineicon\endcsname {\simpleiconsmap\symbol{"EC9A}}
+ \expandafter\def\csname simpleicon@cryptpadicon\endcsname {\simpleiconsmap\symbol{"EC9B}}
+ \expandafter\def\csname simpleicon@crystalicon\endcsname {\simpleiconsmap\symbol{"EC9C}}
+ \expandafter\def\csname simpleicon@csdnicon\endcsname {\simpleiconsmap\symbol{"EC9D}}
+ \expandafter\def\csname simpleicon@css3icon\endcsname {\simpleiconsmap\symbol{"EC9E}}
+ \expandafter\def\csname simpleicon@cssdesignawardsicon\endcsname {\simpleiconsmap\symbol{"EC9F}}
+ \expandafter\def\csname simpleicon@cssmodulesicon\endcsname {\simpleiconsmap\symbol{"ECA0}}
+ \expandafter\def\csname simpleicon@csswizardryicon\endcsname {\simpleiconsmap\symbol{"ECA1}}
+ \expandafter\def\csname simpleicon@ctsicon\endcsname {\simpleiconsmap\symbol{"ECA2}}
+ \expandafter\def\csname simpleicon@cucumbericon\endcsname {\simpleiconsmap\symbol{"ECA3}}
+ \expandafter\def\csname simpleicon@culturaicon\endcsname {\simpleiconsmap\symbol{"ECA4}}
+ \expandafter\def\csname simpleicon@curlicon\endcsname {\simpleiconsmap\symbol{"ECA5}}
+ \expandafter\def\csname simpleicon@curseforgeicon\endcsname {\simpleiconsmap\symbol{"ECA6}}
+ \expandafter\def\csname simpleicon@custominkicon\endcsname {\simpleiconsmap\symbol{"ECA7}}
+ \expandafter\def\csname simpleicon@cyberdefendersicon\endcsname {\simpleiconsmap\symbol{"ECA8}}
+ \expandafter\def\csname simpleicon@cycling74icon\endcsname {\simpleiconsmap\symbol{"ECA9}}
+ \expandafter\def\csname simpleicon@cypressicon\endcsname {\simpleiconsmap\symbol{"ECAA}}
+ \expandafter\def\csname simpleicon@cytoscapedotjsicon\endcsname {\simpleiconsmap\symbol{"ECAB}}
+ \expandafter\def\csname simpleicon@dicon\endcsname {\simpleiconsmap\symbol{"ECAC}}
+ \expandafter\def\csname simpleicon@d3dotjsicon\endcsname {\simpleiconsmap\symbol{"ECAD}}
+ \expandafter\def\csname simpleicon@daciaicon\endcsname {\simpleiconsmap\symbol{"ECAE}}
+ \expandafter\def\csname simpleicon@daficon\endcsname {\simpleiconsmap\symbol{"ECAF}}
+ \expandafter\def\csname simpleicon@dailydotdevicon\endcsname {\simpleiconsmap\symbol{"ECB0}}
+ \expandafter\def\csname simpleicon@dailymotionicon\endcsname {\simpleiconsmap\symbol{"ECB1}}
+ \expandafter\def\csname simpleicon@daisyuiicon\endcsname {\simpleiconsmap\symbol{"ECB2}}
+ \expandafter\def\csname simpleicon@dapricon\endcsname {\simpleiconsmap\symbol{"ECB3}}
+ \expandafter\def\csname simpleicon@darkreadericon\endcsname {\simpleiconsmap\symbol{"ECB4}}
+ \expandafter\def\csname simpleicon@darticon\endcsname {\simpleiconsmap\symbol{"ECB5}}
+ \expandafter\def\csname simpleicon@dartyicon\endcsname {\simpleiconsmap\symbol{"ECB6}}
+ \expandafter\def\csname simpleicon@dasersteicon\endcsname {\simpleiconsmap\symbol{"ECB7}}
+ \expandafter\def\csname simpleicon@dashicon\endcsname {\simpleiconsmap\symbol{"ECB8}}
+ \expandafter\def\csname simpleicon@dashlaneicon\endcsname {\simpleiconsmap\symbol{"ECB9}}
+ \expandafter\def\csname simpleicon@daskicon\endcsname {\simpleiconsmap\symbol{"ECBA}}
+ \expandafter\def\csname simpleicon@dassaultsystemesicon\endcsname {\simpleiconsmap\symbol{"ECBB}}
+ \expandafter\def\csname simpleicon@databricksicon\endcsname {\simpleiconsmap\symbol{"ECBC}}
+ \expandafter\def\csname simpleicon@datacampicon\endcsname {\simpleiconsmap\symbol{"ECBD}}
+ \expandafter\def\csname simpleicon@datadogicon\endcsname {\simpleiconsmap\symbol{"ECBE}}
+ \expandafter\def\csname simpleicon@datadotaiicon\endcsname {\simpleiconsmap\symbol{"ECBF}}
+ \expandafter\def\csname simpleicon@datagripicon\endcsname {\simpleiconsmap\symbol{"ECC0}}
+ \expandafter\def\csname simpleicon@dataikuicon\endcsname {\simpleiconsmap\symbol{"ECC1}}
+ \expandafter\def\csname simpleicon@datastaxicon\endcsname {\simpleiconsmap\symbol{"ECC2}}
+ \expandafter\def\csname simpleicon@datefnsicon\endcsname {\simpleiconsmap\symbol{"ECC3}}
+ \expandafter\def\csname simpleicon@datevicon\endcsname {\simpleiconsmap\symbol{"ECC4}}
+ \expandafter\def\csname simpleicon@datocmsicon\endcsname {\simpleiconsmap\symbol{"ECC5}}
+ \expandafter\def\csname simpleicon@dattoicon\endcsname {\simpleiconsmap\symbol{"ECC6}}
+ \expandafter\def\csname simpleicon@davinciresolveicon\endcsname {\simpleiconsmap\symbol{"ECC7}}
+ \expandafter\def\csname simpleicon@dazhongdianpingicon\endcsname {\simpleiconsmap\symbol{"ECC8}}
+ \expandafter\def\csname simpleicon@daznicon\endcsname {\simpleiconsmap\symbol{"ECC9}}
+ \expandafter\def\csname simpleicon@dbeavericon\endcsname {\simpleiconsmap\symbol{"ECCA}}
+ \expandafter\def\csname simpleicon@dblpicon\endcsname {\simpleiconsmap\symbol{"ECCB}}
+ \expandafter\def\csname simpleicon@dbticon\endcsname {\simpleiconsmap\symbol{"ECCC}}
+ \expandafter\def\csname simpleicon@dcentertainmenticon\endcsname {\simpleiconsmap\symbol{"ECCD}}
+ \expandafter\def\csname simpleicon@debianicon\endcsname {\simpleiconsmap\symbol{"ECCE}}
+ \expandafter\def\csname simpleicon@debridlinkicon\endcsname {\simpleiconsmap\symbol{"ECCF}}
+ \expandafter\def\csname simpleicon@decapcmsicon\endcsname {\simpleiconsmap\symbol{"ECD0}}
+ \expandafter\def\csname simpleicon@decentralandicon\endcsname {\simpleiconsmap\symbol{"ECD1}}
+ \expandafter\def\csname simpleicon@dedgeicon\endcsname {\simpleiconsmap\symbol{"ECD2}}
+ \expandafter\def\csname simpleicon@deepcoolicon\endcsname {\simpleiconsmap\symbol{"ECD3}}
+ \expandafter\def\csname simpleicon@deepgramicon\endcsname {\simpleiconsmap\symbol{"ECD4}}
+ \expandafter\def\csname simpleicon@deepinicon\endcsname {\simpleiconsmap\symbol{"ECD5}}
+ \expandafter\def\csname simpleicon@deeplicon\endcsname {\simpleiconsmap\symbol{"ECD6}}
+ \expandafter\def\csname simpleicon@deepnoteicon\endcsname {\simpleiconsmap\symbol{"ECD7}}
+ \expandafter\def\csname simpleicon@deliciousicon\endcsname {\simpleiconsmap\symbol{"ECD8}}
+ \expandafter\def\csname simpleicon@deliverooicon\endcsname {\simpleiconsmap\symbol{"ECD9}}
+ \expandafter\def\csname simpleicon@dellicon\endcsname {\simpleiconsmap\symbol{"ECDA}}
+ \expandafter\def\csname simpleicon@delonghiicon\endcsname {\simpleiconsmap\symbol{"ECDB}}
+ \expandafter\def\csname simpleicon@delphiicon\endcsname {\simpleiconsmap\symbol{"ECDC}}
+ \expandafter\def\csname simpleicon@deltaicon\endcsname {\simpleiconsmap\symbol{"ECDD}}
+ \expandafter\def\csname simpleicon@delugeicon\endcsname {\simpleiconsmap\symbol{"ECDE}}
+ \expandafter\def\csname simpleicon@denoicon\endcsname {\simpleiconsmap\symbol{"ECDF}}
+ \expandafter\def\csname simpleicon@denonicon\endcsname {\simpleiconsmap\symbol{"ECE0}}
+ \expandafter\def\csname simpleicon@dependaboticon\endcsname {\simpleiconsmap\symbol{"ECE1}}
+ \expandafter\def\csname simpleicon@dependencycheckicon\endcsname {\simpleiconsmap\symbol{"ECE2}}
+ \expandafter\def\csname simpleicon@depositphotosicon\endcsname {\simpleiconsmap\symbol{"ECE3}}
+ \expandafter\def\csname simpleicon@derspiegelicon\endcsname {\simpleiconsmap\symbol{"ECE4}}
+ \expandafter\def\csname simpleicon@deutschebahnicon\endcsname {\simpleiconsmap\symbol{"ECE5}}
+ \expandafter\def\csname simpleicon@deutschebankicon\endcsname {\simpleiconsmap\symbol{"ECE6}}
+ \expandafter\def\csname simpleicon@deutscheposticon\endcsname {\simpleiconsmap\symbol{"ECE7}}
+ \expandafter\def\csname simpleicon@deutschewelleicon\endcsname {\simpleiconsmap\symbol{"ECE8}}
+ \expandafter\def\csname simpleicon@devdottoicon\endcsname {\simpleiconsmap\symbol{"ECE9}}
+ \expandafter\def\csname simpleicon@devexpressicon\endcsname {\simpleiconsmap\symbol{"ECEA}}
+ \expandafter\def\csname simpleicon@deviantarticon\endcsname {\simpleiconsmap\symbol{"ECEB}}
+ \expandafter\def\csname simpleicon@devposticon\endcsname {\simpleiconsmap\symbol{"ECEC}}
+ \expandafter\def\csname simpleicon@devranticon\endcsname {\simpleiconsmap\symbol{"ECED}}
+ \expandafter\def\csname simpleicon@dgraphicon\endcsname {\simpleiconsmap\symbol{"ECEE}}
+ \expandafter\def\csname simpleicon@dhlicon\endcsname {\simpleiconsmap\symbol{"ECEF}}
+ \expandafter\def\csname simpleicon@diagramsdotneticon\endcsname {\simpleiconsmap\symbol{"ECF0}}
+ \expandafter\def\csname simpleicon@dialogflowicon\endcsname {\simpleiconsmap\symbol{"ECF1}}
+ \expandafter\def\csname simpleicon@diasporaicon\endcsname {\simpleiconsmap\symbol{"ECF2}}
+ \expandafter\def\csname simpleicon@dictionarydotcomicon\endcsname {\simpleiconsmap\symbol{"ECF3}}
+ \expandafter\def\csname simpleicon@diggicon\endcsname {\simpleiconsmap\symbol{"ECF4}}
+ \expandafter\def\csname simpleicon@digikeyelectronicsicon\endcsname {\simpleiconsmap\symbol{"ECF5}}
+ \expandafter\def\csname simpleicon@digitaloceanicon\endcsname {\simpleiconsmap\symbol{"ECF6}}
+ \expandafter\def\csname simpleicon@dinersclubicon\endcsname {\simpleiconsmap\symbol{"ECF7}}
+ \expandafter\def\csname simpleicon@dioricon\endcsname {\simpleiconsmap\symbol{"ECF8}}
+ \expandafter\def\csname simpleicon@directusicon\endcsname {\simpleiconsmap\symbol{"ECF9}}
+ \expandafter\def\csname simpleicon@discogsicon\endcsname {\simpleiconsmap\symbol{"ECFA}}
+ \expandafter\def\csname simpleicon@discordicon\endcsname {\simpleiconsmap\symbol{"ECFB}}
+ \expandafter\def\csname simpleicon@discourseicon\endcsname {\simpleiconsmap\symbol{"ECFC}}
+ \expandafter\def\csname simpleicon@discovericon\endcsname {\simpleiconsmap\symbol{"ECFD}}
+ \expandafter\def\csname simpleicon@disqusicon\endcsname {\simpleiconsmap\symbol{"ECFE}}
+ \expandafter\def\csname simpleicon@disrooticon\endcsname {\simpleiconsmap\symbol{"ECFF}}
+ \expandafter\def\csname simpleicon@distrokidicon\endcsname {\simpleiconsmap\symbol{"ED00}}
+ \expandafter\def\csname simpleicon@djangoicon\endcsname {\simpleiconsmap\symbol{"ED01}}
+ \expandafter\def\csname simpleicon@djiicon\endcsname {\simpleiconsmap\symbol{"ED02}}
+ \expandafter\def\csname simpleicon@dlibicon\endcsname {\simpleiconsmap\symbol{"ED03}}
+ \expandafter\def\csname simpleicon@dlnaicon\endcsname {\simpleiconsmap\symbol{"ED04}}
+ \expandafter\def\csname simpleicon@dmicon\endcsname {\simpleiconsmap\symbol{"ED05}}
+ \expandafter\def\csname simpleicon@dockericon\endcsname {\simpleiconsmap\symbol{"ED06}}
+ \expandafter\def\csname simpleicon@docsdotrsicon\endcsname {\simpleiconsmap\symbol{"ED07}}
+ \expandafter\def\csname simpleicon@docsifyicon\endcsname {\simpleiconsmap\symbol{"ED08}}
+ \expandafter\def\csname simpleicon@doctrineicon\endcsname {\simpleiconsmap\symbol{"ED09}}
+ \expandafter\def\csname simpleicon@docusaurusicon\endcsname {\simpleiconsmap\symbol{"ED0A}}
+ \expandafter\def\csname simpleicon@dogecoinicon\endcsname {\simpleiconsmap\symbol{"ED0B}}
+ \expandafter\def\csname simpleicon@doiicon\endcsname {\simpleiconsmap\symbol{"ED0C}}
+ \expandafter\def\csname simpleicon@dolbyicon\endcsname {\simpleiconsmap\symbol{"ED0D}}
+ \expandafter\def\csname simpleicon@doordashicon\endcsname {\simpleiconsmap\symbol{"ED0E}}
+ \expandafter\def\csname simpleicon@dota2icon\endcsname {\simpleiconsmap\symbol{"ED0F}}
+ \expandafter\def\csname simpleicon@dotenvicon\endcsname {\simpleiconsmap\symbol{"ED10}}
+ \expandafter\def\csname simpleicon@dotneticon\endcsname {\simpleiconsmap\symbol{"ED11}}
+ \expandafter\def\csname simpleicon@doubanicon\endcsname {\simpleiconsmap\symbol{"ED12}}
+ \expandafter\def\csname simpleicon@doubanreadicon\endcsname {\simpleiconsmap\symbol{"ED13}}
+ \expandafter\def\csname simpleicon@dovecoticon\endcsname {\simpleiconsmap\symbol{"ED14}}
+ \expandafter\def\csname simpleicon@dovetailicon\endcsname {\simpleiconsmap\symbol{"ED15}}
+ \expandafter\def\csname simpleicon@downdetectoricon\endcsname {\simpleiconsmap\symbol{"ED16}}
+ \expandafter\def\csname simpleicon@doxygenicon\endcsname {\simpleiconsmap\symbol{"ED17}}
+ \expandafter\def\csname simpleicon@dpdicon\endcsname {\simpleiconsmap\symbol{"ED18}}
+ \expandafter\def\csname simpleicon@dragonframeicon\endcsname {\simpleiconsmap\symbol{"ED19}}
+ \expandafter\def\csname simpleicon@draugiemdotlvicon\endcsname {\simpleiconsmap\symbol{"ED1A}}
+ \expandafter\def\csname simpleicon@dreamstimeicon\endcsname {\simpleiconsmap\symbol{"ED1B}}
+ \expandafter\def\csname simpleicon@dribbbleicon\endcsname {\simpleiconsmap\symbol{"ED1C}}
+ \expandafter\def\csname simpleicon@drizzleicon\endcsname {\simpleiconsmap\symbol{"ED1D}}
+ \expandafter\def\csname simpleicon@droneicon\endcsname {\simpleiconsmap\symbol{"ED1E}}
+ \expandafter\def\csname simpleicon@droobleicon\endcsname {\simpleiconsmap\symbol{"ED1F}}
+ \expandafter\def\csname simpleicon@dropboxicon\endcsname {\simpleiconsmap\symbol{"ED20}}
+ \expandafter\def\csname simpleicon@drupalicon\endcsname {\simpleiconsmap\symbol{"ED21}}
+ \expandafter\def\csname simpleicon@dsautomobilesicon\endcsname {\simpleiconsmap\symbol{"ED22}}
+ \expandafter\def\csname simpleicon@dtsicon\endcsname {\simpleiconsmap\symbol{"ED23}}
+ \expandafter\def\csname simpleicon@dtubeicon\endcsname {\simpleiconsmap\symbol{"ED24}}
+ \expandafter\def\csname simpleicon@ducatiicon\endcsname {\simpleiconsmap\symbol{"ED25}}
+ \expandafter\def\csname simpleicon@duckdbicon\endcsname {\simpleiconsmap\symbol{"ED26}}
+ \expandafter\def\csname simpleicon@duckduckgoicon\endcsname {\simpleiconsmap\symbol{"ED27}}
+ \expandafter\def\csname simpleicon@dungeonsanddragonsicon\endcsname {\simpleiconsmap\symbol{"ED28}}
+ \expandafter\def\csname simpleicon@dunkedicon\endcsname {\simpleiconsmap\symbol{"ED29}}
+ \expandafter\def\csname simpleicon@dunzoicon\endcsname {\simpleiconsmap\symbol{"ED2A}}
+ \expandafter\def\csname simpleicon@duolingoicon\endcsname {\simpleiconsmap\symbol{"ED2B}}
+ \expandafter\def\csname simpleicon@duplicatiicon\endcsname {\simpleiconsmap\symbol{"ED2C}}
+ \expandafter\def\csname simpleicon@dvcicon\endcsname {\simpleiconsmap\symbol{"ED2D}}
+ \expandafter\def\csname simpleicon@dwavesystemsicon\endcsname {\simpleiconsmap\symbol{"ED2E}}
+ \expandafter\def\csname simpleicon@dwmicon\endcsname {\simpleiconsmap\symbol{"ED2F}}
+ \expandafter\def\csname simpleicon@dynatraceicon\endcsname {\simpleiconsmap\symbol{"ED30}}
+ \expandafter\def\csname simpleicon@eicon\endcsname {\simpleiconsmap\symbol{"ED31}}
+ \expandafter\def\csname simpleicon@e3icon\endcsname {\simpleiconsmap\symbol{"ED32}}
+ \expandafter\def\csname simpleicon@eaicon\endcsname {\simpleiconsmap\symbol{"ED33}}
+ \expandafter\def\csname simpleicon@eagleicon\endcsname {\simpleiconsmap\symbol{"ED34}}
+ \expandafter\def\csname simpleicon@easyedaicon\endcsname {\simpleiconsmap\symbol{"ED35}}
+ \expandafter\def\csname simpleicon@easyjeticon\endcsname {\simpleiconsmap\symbol{"ED36}}
+ \expandafter\def\csname simpleicon@ebayicon\endcsname {\simpleiconsmap\symbol{"ED37}}
+ \expandafter\def\csname simpleicon@eboxicon\endcsname {\simpleiconsmap\symbol{"ED38}}
+ \expandafter\def\csname simpleicon@eclipseadoptiumicon\endcsname {\simpleiconsmap\symbol{"ED39}}
+ \expandafter\def\csname simpleicon@eclipsecheicon\endcsname {\simpleiconsmap\symbol{"ED3A}}
+ \expandafter\def\csname simpleicon@eclipseideicon\endcsname {\simpleiconsmap\symbol{"ED3B}}
+ \expandafter\def\csname simpleicon@eclipsejettyicon\endcsname {\simpleiconsmap\symbol{"ED3C}}
+ \expandafter\def\csname simpleicon@eclipsemosquittoicon\endcsname {\simpleiconsmap\symbol{"ED3D}}
+ \expandafter\def\csname simpleicon@eclipsevertdotxicon\endcsname {\simpleiconsmap\symbol{"ED3E}}
+ \expandafter\def\csname simpleicon@ecosiaicon\endcsname {\simpleiconsmap\symbol{"ED3F}}
+ \expandafter\def\csname simpleicon@ecovacsicon\endcsname {\simpleiconsmap\symbol{"ED40}}
+ \expandafter\def\csname simpleicon@edekaicon\endcsname {\simpleiconsmap\symbol{"ED41}}
+ \expandafter\def\csname simpleicon@edgeimpulseicon\endcsname {\simpleiconsmap\symbol{"ED42}}
+ \expandafter\def\csname simpleicon@editorconfigicon\endcsname {\simpleiconsmap\symbol{"ED43}}
+ \expandafter\def\csname simpleicon@edotleclercicon\endcsname {\simpleiconsmap\symbol{"ED44}}
+ \expandafter\def\csname simpleicon@educativeicon\endcsname {\simpleiconsmap\symbol{"ED45}}
+ \expandafter\def\csname simpleicon@edxicon\endcsname {\simpleiconsmap\symbol{"ED46}}
+ \expandafter\def\csname simpleicon@eggheadicon\endcsname {\simpleiconsmap\symbol{"ED47}}
+ \expandafter\def\csname simpleicon@egnyteicon\endcsname {\simpleiconsmap\symbol{"ED48}}
+ \expandafter\def\csname simpleicon@eighticon\endcsname {\simpleiconsmap\symbol{"ED49}}
+ \expandafter\def\csname simpleicon@eightsleepicon\endcsname {\simpleiconsmap\symbol{"ED4A}}
+ \expandafter\def\csname simpleicon@ejsicon\endcsname {\simpleiconsmap\symbol{"ED4B}}
+ \expandafter\def\csname simpleicon@elasticicon\endcsname {\simpleiconsmap\symbol{"ED4C}}
+ \expandafter\def\csname simpleicon@elasticcloudicon\endcsname {\simpleiconsmap\symbol{"ED4D}}
+ \expandafter\def\csname simpleicon@elasticsearchicon\endcsname {\simpleiconsmap\symbol{"ED4E}}
+ \expandafter\def\csname simpleicon@elasticstackicon\endcsname {\simpleiconsmap\symbol{"ED4F}}
+ \expandafter\def\csname simpleicon@elavonicon\endcsname {\simpleiconsmap\symbol{"ED50}}
+ \expandafter\def\csname simpleicon@electronicon\endcsname {\simpleiconsmap\symbol{"ED51}}
+ \expandafter\def\csname simpleicon@electronbuildericon\endcsname {\simpleiconsmap\symbol{"ED52}}
+ \expandafter\def\csname simpleicon@electronfiddleicon\endcsname {\simpleiconsmap\symbol{"ED53}}
+ \expandafter\def\csname simpleicon@elegooicon\endcsname {\simpleiconsmap\symbol{"ED54}}
+ \expandafter\def\csname simpleicon@elementicon\endcsname {\simpleiconsmap\symbol{"ED55}}
+ \expandafter\def\csname simpleicon@elementaryicon\endcsname {\simpleiconsmap\symbol{"ED56}}
+ \expandafter\def\csname simpleicon@elementoricon\endcsname {\simpleiconsmap\symbol{"ED57}}
+ \expandafter\def\csname simpleicon@eleventyicon\endcsname {\simpleiconsmap\symbol{"ED58}}
+ \expandafter\def\csname simpleicon@elgatoicon\endcsname {\simpleiconsmap\symbol{"ED59}}
+ \expandafter\def\csname simpleicon@elixiricon\endcsname {\simpleiconsmap\symbol{"ED5A}}
+ \expandafter\def\csname simpleicon@eljuevesicon\endcsname {\simpleiconsmap\symbol{"ED5B}}
+ \expandafter\def\csname simpleicon@elloicon\endcsname {\simpleiconsmap\symbol{"ED5C}}
+ \expandafter\def\csname simpleicon@elmicon\endcsname {\simpleiconsmap\symbol{"ED5D}}
+ \expandafter\def\csname simpleicon@elseviericon\endcsname {\simpleiconsmap\symbol{"ED5E}}
+ \expandafter\def\csname simpleicon@embarcaderoicon\endcsname {\simpleiconsmap\symbol{"ED5F}}
+ \expandafter\def\csname simpleicon@embarkicon\endcsname {\simpleiconsmap\symbol{"ED60}}
+ \expandafter\def\csname simpleicon@emberdotjsicon\endcsname {\simpleiconsmap\symbol{"ED61}}
+ \expandafter\def\csname simpleicon@embyicon\endcsname {\simpleiconsmap\symbol{"ED62}}
+ \expandafter\def\csname simpleicon@emiratesicon\endcsname {\simpleiconsmap\symbol{"ED63}}
+ \expandafter\def\csname simpleicon@emlakjeticon\endcsname {\simpleiconsmap\symbol{"ED64}}
+ \expandafter\def\csname simpleicon@empirekredicon\endcsname {\simpleiconsmap\symbol{"ED65}}
+ \expandafter\def\csname simpleicon@endeavourosicon\endcsname {\simpleiconsmap\symbol{"ED66}}
+ \expandafter\def\csname simpleicon@engadgeticon\endcsname {\simpleiconsmap\symbol{"ED67}}
+ \expandafter\def\csname simpleicon@enpassicon\endcsname {\simpleiconsmap\symbol{"ED68}}
+ \expandafter\def\csname simpleicon@enterprisedbicon\endcsname {\simpleiconsmap\symbol{"ED69}}
+ \expandafter\def\csname simpleicon@envatoicon\endcsname {\simpleiconsmap\symbol{"ED6A}}
+ \expandafter\def\csname simpleicon@envoyproxyicon\endcsname {\simpleiconsmap\symbol{"ED6B}}
+ \expandafter\def\csname simpleicon@epelicon\endcsname {\simpleiconsmap\symbol{"ED6C}}
+ \expandafter\def\csname simpleicon@epicgamesicon\endcsname {\simpleiconsmap\symbol{"ED6D}}
+ \expandafter\def\csname simpleicon@epsonicon\endcsname {\simpleiconsmap\symbol{"ED6E}}
+ \expandafter\def\csname simpleicon@equinixmetalicon\endcsname {\simpleiconsmap\symbol{"ED6F}}
+ \expandafter\def\csname simpleicon@erasericon\endcsname {\simpleiconsmap\symbol{"ED70}}
+ \expandafter\def\csname simpleicon@ericssonicon\endcsname {\simpleiconsmap\symbol{"ED71}}
+ \expandafter\def\csname simpleicon@erlangicon\endcsname {\simpleiconsmap\symbol{"ED72}}
+ \expandafter\def\csname simpleicon@erpnexticon\endcsname {\simpleiconsmap\symbol{"ED73}}
+ \expandafter\def\csname simpleicon@esbuildicon\endcsname {\simpleiconsmap\symbol{"ED74}}
+ \expandafter\def\csname simpleicon@eseaicon\endcsname {\simpleiconsmap\symbol{"ED75}}
+ \expandafter\def\csname simpleicon@eslgamingicon\endcsname {\simpleiconsmap\symbol{"ED76}}
+ \expandafter\def\csname simpleicon@eslinticon\endcsname {\simpleiconsmap\symbol{"ED77}}
+ \expandafter\def\csname simpleicon@esotericsoftwareicon\endcsname {\simpleiconsmap\symbol{"ED78}}
+ \expandafter\def\csname simpleicon@esphomeicon\endcsname {\simpleiconsmap\symbol{"ED79}}
+ \expandafter\def\csname simpleicon@espressificon\endcsname {\simpleiconsmap\symbol{"ED7A}}
+ \expandafter\def\csname simpleicon@esriicon\endcsname {\simpleiconsmap\symbol{"ED7B}}
+ \expandafter\def\csname simpleicon@etcdicon\endcsname {\simpleiconsmap\symbol{"ED7C}}
+ \expandafter\def\csname simpleicon@ethereumicon\endcsname {\simpleiconsmap\symbol{"ED7D}}
+ \expandafter\def\csname simpleicon@ethersicon\endcsname {\simpleiconsmap\symbol{"ED7E}}
+ \expandafter\def\csname simpleicon@ethiopianairlinesicon\endcsname {\simpleiconsmap\symbol{"ED7F}}
+ \expandafter\def\csname simpleicon@etihadairwaysicon\endcsname {\simpleiconsmap\symbol{"ED80}}
+ \expandafter\def\csname simpleicon@etsyicon\endcsname {\simpleiconsmap\symbol{"ED81}}
+ \expandafter\def\csname simpleicon@eventbriteicon\endcsname {\simpleiconsmap\symbol{"ED82}}
+ \expandafter\def\csname simpleicon@eventstoreicon\endcsname {\simpleiconsmap\symbol{"ED83}}
+ \expandafter\def\csname simpleicon@evernoteicon\endcsname {\simpleiconsmap\symbol{"ED84}}
+ \expandafter\def\csname simpleicon@excalidrawicon\endcsname {\simpleiconsmap\symbol{"ED85}}
+ \expandafter\def\csname simpleicon@exercismicon\endcsname {\simpleiconsmap\symbol{"ED86}}
+ \expandafter\def\csname simpleicon@exordoicon\endcsname {\simpleiconsmap\symbol{"ED87}}
+ \expandafter\def\csname simpleicon@exoscaleicon\endcsname {\simpleiconsmap\symbol{"ED88}}
+ \expandafter\def\csname simpleicon@expediaicon\endcsname {\simpleiconsmap\symbol{"ED89}}
+ \expandafter\def\csname simpleicon@expensifyicon\endcsname {\simpleiconsmap\symbol{"ED8A}}
+ \expandafter\def\csname simpleicon@expertsexchangeicon\endcsname {\simpleiconsmap\symbol{"ED8B}}
+ \expandafter\def\csname simpleicon@expoicon\endcsname {\simpleiconsmap\symbol{"ED8C}}
+ \expandafter\def\csname simpleicon@expressicon\endcsname {\simpleiconsmap\symbol{"ED8D}}
+ \expandafter\def\csname simpleicon@expressvpnicon\endcsname {\simpleiconsmap\symbol{"ED8E}}
+ \expandafter\def\csname simpleicon@eyeemicon\endcsname {\simpleiconsmap\symbol{"ED8F}}
+ \expandafter\def\csname simpleicon@f1icon\endcsname {\simpleiconsmap\symbol{"ED90}}
+ \expandafter\def\csname simpleicon@f5icon\endcsname {\simpleiconsmap\symbol{"ED91}}
+ \expandafter\def\csname simpleicon@facebookicon\endcsname {\simpleiconsmap\symbol{"ED92}}
+ \expandafter\def\csname simpleicon@facebookgamingicon\endcsname {\simpleiconsmap\symbol{"ED93}}
+ \expandafter\def\csname simpleicon@facebookliveicon\endcsname {\simpleiconsmap\symbol{"ED94}}
+ \expandafter\def\csname simpleicon@faceiticon\endcsname {\simpleiconsmap\symbol{"ED95}}
+ \expandafter\def\csname simpleicon@facepunchicon\endcsname {\simpleiconsmap\symbol{"ED96}}
+ \expandafter\def\csname simpleicon@fairphoneicon\endcsname {\simpleiconsmap\symbol{"ED97}}
+ \expandafter\def\csname simpleicon@falcoicon\endcsname {\simpleiconsmap\symbol{"ED98}}
+ \expandafter\def\csname simpleicon@falconicon\endcsname {\simpleiconsmap\symbol{"ED99}}
+ \expandafter\def\csname simpleicon@fampayicon\endcsname {\simpleiconsmap\symbol{"ED9A}}
+ \expandafter\def\csname simpleicon@fandangoicon\endcsname {\simpleiconsmap\symbol{"ED9B}}
+ \expandafter\def\csname simpleicon@fandomicon\endcsname {\simpleiconsmap\symbol{"ED9C}}
+ \expandafter\def\csname simpleicon@fanfouicon\endcsname {\simpleiconsmap\symbol{"ED9D}}
+ \expandafter\def\csname simpleicon@fantomicon\endcsname {\simpleiconsmap\symbol{"ED9E}}
+ \expandafter\def\csname simpleicon@farcastericon\endcsname {\simpleiconsmap\symbol{"ED9F}}
+ \expandafter\def\csname simpleicon@fareharboricon\endcsname {\simpleiconsmap\symbol{"EDA0}}
+ \expandafter\def\csname simpleicon@farfetchicon\endcsname {\simpleiconsmap\symbol{"EDA1}}
+ \expandafter\def\csname simpleicon@fastapiicon\endcsname {\simpleiconsmap\symbol{"EDA2}}
+ \expandafter\def\csname simpleicon@fastifyicon\endcsname {\simpleiconsmap\symbol{"EDA3}}
+ \expandafter\def\csname simpleicon@fastlaneicon\endcsname {\simpleiconsmap\symbol{"EDA4}}
+ \expandafter\def\csname simpleicon@fastlyicon\endcsname {\simpleiconsmap\symbol{"EDA5}}
+ \expandafter\def\csname simpleicon@fathomicon\endcsname {\simpleiconsmap\symbol{"EDA6}}
+ \expandafter\def\csname simpleicon@faunaicon\endcsname {\simpleiconsmap\symbol{"EDA7}}
+ \expandafter\def\csname simpleicon@favroicon\endcsname {\simpleiconsmap\symbol{"EDA8}}
+ \expandafter\def\csname simpleicon@fdroidicon\endcsname {\simpleiconsmap\symbol{"EDA9}}
+ \expandafter\def\csname simpleicon@feathubicon\endcsname {\simpleiconsmap\symbol{"EDAA}}
+ \expandafter\def\csname simpleicon@fedexicon\endcsname {\simpleiconsmap\symbol{"EDAB}}
+ \expandafter\def\csname simpleicon@fedoraicon\endcsname {\simpleiconsmap\symbol{"EDAC}}
+ \expandafter\def\csname simpleicon@feedlyicon\endcsname {\simpleiconsmap\symbol{"EDAD}}
+ \expandafter\def\csname simpleicon@ferrariicon\endcsname {\simpleiconsmap\symbol{"EDAE}}
+ \expandafter\def\csname simpleicon@ferrarinvicon\endcsname {\simpleiconsmap\symbol{"EDAF}}
+ \expandafter\def\csname simpleicon@ferretdbicon\endcsname {\simpleiconsmap\symbol{"EDB0}}
+ \expandafter\def\csname simpleicon@ffmpegicon\endcsname {\simpleiconsmap\symbol{"EDB1}}
+ \expandafter\def\csname simpleicon@fiicon\endcsname {\simpleiconsmap\symbol{"EDB2}}
+ \expandafter\def\csname simpleicon@fiaticon\endcsname {\simpleiconsmap\symbol{"EDB3}}
+ \expandafter\def\csname simpleicon@fidoallianceicon\endcsname {\simpleiconsmap\symbol{"EDB4}}
+ \expandafter\def\csname simpleicon@fifaicon\endcsname {\simpleiconsmap\symbol{"EDB5}}
+ \expandafter\def\csname simpleicon@figicon\endcsname {\simpleiconsmap\symbol{"EDB6}}
+ \expandafter\def\csname simpleicon@figmaicon\endcsname {\simpleiconsmap\symbol{"EDB7}}
+ \expandafter\def\csname simpleicon@figshareicon\endcsname {\simpleiconsmap\symbol{"EDB8}}
+ \expandafter\def\csname simpleicon@filaicon\endcsname {\simpleiconsmap\symbol{"EDB9}}
+ \expandafter\def\csname simpleicon@filedotioicon\endcsname {\simpleiconsmap\symbol{"EDBA}}
+ \expandafter\def\csname simpleicon@filesicon\endcsname {\simpleiconsmap\symbol{"EDBB}}
+ \expandafter\def\csname simpleicon@filezillaicon\endcsname {\simpleiconsmap\symbol{"EDBC}}
+ \expandafter\def\csname simpleicon@finecoicon\endcsname {\simpleiconsmap\symbol{"EDBD}}
+ \expandafter\def\csname simpleicon@fingicon\endcsname {\simpleiconsmap\symbol{"EDBE}}
+ \expandafter\def\csname simpleicon@firebaseicon\endcsname {\simpleiconsmap\symbol{"EDBF}}
+ \expandafter\def\csname simpleicon@firefishicon\endcsname {\simpleiconsmap\symbol{"EDC0}}
+ \expandafter\def\csname simpleicon@fireflyiiiicon\endcsname {\simpleiconsmap\symbol{"EDC1}}
+ \expandafter\def\csname simpleicon@firefoxicon\endcsname {\simpleiconsmap\symbol{"EDC2}}
+ \expandafter\def\csname simpleicon@firefoxbrowsericon\endcsname {\simpleiconsmap\symbol{"EDC3}}
+ \expandafter\def\csname simpleicon@fireshipicon\endcsname {\simpleiconsmap\symbol{"EDC4}}
+ \expandafter\def\csname simpleicon@firewallaicon\endcsname {\simpleiconsmap\symbol{"EDC5}}
+ \expandafter\def\csname simpleicon@firsticon\endcsname {\simpleiconsmap\symbol{"EDC6}}
+ \expandafter\def\csname simpleicon@fishshellicon\endcsname {\simpleiconsmap\symbol{"EDC7}}
+ \expandafter\def\csname simpleicon@fitbiticon\endcsname {\simpleiconsmap\symbol{"EDC8}}
+ \expandafter\def\csname simpleicon@fivemicon\endcsname {\simpleiconsmap\symbol{"EDC9}}
+ \expandafter\def\csname simpleicon@fiverricon\endcsname {\simpleiconsmap\symbol{"EDCA}}
+ \expandafter\def\csname simpleicon@fizzicon\endcsname {\simpleiconsmap\symbol{"EDCB}}
+ \expandafter\def\csname simpleicon@flashforgeicon\endcsname {\simpleiconsmap\symbol{"EDCC}}
+ \expandafter\def\csname simpleicon@flaskicon\endcsname {\simpleiconsmap\symbol{"EDCD}}
+ \expandafter\def\csname simpleicon@flaticon\endcsname {\simpleiconsmap\symbol{"EDCE}}
+ \expandafter\def\csname simpleicon@flathubicon\endcsname {\simpleiconsmap\symbol{"EDCF}}
+ \expandafter\def\csname simpleicon@flatpakicon\endcsname {\simpleiconsmap\symbol{"EDD0}}
+ \expandafter\def\csname simpleicon@flickricon\endcsname {\simpleiconsmap\symbol{"EDD1}}
+ \expandafter\def\csname simpleicon@flightawareicon\endcsname {\simpleiconsmap\symbol{"EDD2}}
+ \expandafter\def\csname simpleicon@flipboardicon\endcsname {\simpleiconsmap\symbol{"EDD3}}
+ \expandafter\def\csname simpleicon@flipkarticon\endcsname {\simpleiconsmap\symbol{"EDD4}}
+ \expandafter\def\csname simpleicon@floatplaneicon\endcsname {\simpleiconsmap\symbol{"EDD5}}
+ \expandafter\def\csname simpleicon@floodicon\endcsname {\simpleiconsmap\symbol{"EDD6}}
+ \expandafter\def\csname simpleicon@fluentbiticon\endcsname {\simpleiconsmap\symbol{"EDD7}}
+ \expandafter\def\csname simpleicon@fluentdicon\endcsname {\simpleiconsmap\symbol{"EDD8}}
+ \expandafter\def\csname simpleicon@flukeicon\endcsname {\simpleiconsmap\symbol{"EDD9}}
+ \expandafter\def\csname simpleicon@fluttericon\endcsname {\simpleiconsmap\symbol{"EDDA}}
+ \expandafter\def\csname simpleicon@fluxicon\endcsname {\simpleiconsmap\symbol{"EDDB}}
+ \expandafter\def\csname simpleicon@fluxusicon\endcsname {\simpleiconsmap\symbol{"EDDC}}
+ \expandafter\def\csname simpleicon@flydotioicon\endcsname {\simpleiconsmap\symbol{"EDDD}}
+ \expandafter\def\csname simpleicon@flywayicon\endcsname {\simpleiconsmap\symbol{"EDDE}}
+ \expandafter\def\csname simpleicon@fmodicon\endcsname {\simpleiconsmap\symbol{"EDDF}}
+ \expandafter\def\csname simpleicon@fnacicon\endcsname {\simpleiconsmap\symbol{"EDE0}}
+ \expandafter\def\csname simpleicon@foliumicon\endcsname {\simpleiconsmap\symbol{"EDE1}}
+ \expandafter\def\csname simpleicon@fonomaicon\endcsname {\simpleiconsmap\symbol{"EDE2}}
+ \expandafter\def\csname simpleicon@fontawesomeicon\endcsname {\simpleiconsmap\symbol{"EDE3}}
+ \expandafter\def\csname simpleicon@fontbaseicon\endcsname {\simpleiconsmap\symbol{"EDE4}}
+ \expandafter\def\csname simpleicon@fontforgeicon\endcsname {\simpleiconsmap\symbol{"EDE5}}
+ \expandafter\def\csname simpleicon@foobar2000icon\endcsname {\simpleiconsmap\symbol{"EDE6}}
+ \expandafter\def\csname simpleicon@foodpandaicon\endcsname {\simpleiconsmap\symbol{"EDE7}}
+ \expandafter\def\csname simpleicon@fordicon\endcsname {\simpleiconsmap\symbol{"EDE8}}
+ \expandafter\def\csname simpleicon@forgejoicon\endcsname {\simpleiconsmap\symbol{"EDE9}}
+ \expandafter\def\csname simpleicon@formikicon\endcsname {\simpleiconsmap\symbol{"EDEA}}
+ \expandafter\def\csname simpleicon@formspreeicon\endcsname {\simpleiconsmap\symbol{"EDEB}}
+ \expandafter\def\csname simpleicon@formstackicon\endcsname {\simpleiconsmap\symbol{"EDEC}}
+ \expandafter\def\csname simpleicon@fortineticon\endcsname {\simpleiconsmap\symbol{"EDED}}
+ \expandafter\def\csname simpleicon@fortranicon\endcsname {\simpleiconsmap\symbol{"EDEE}}
+ \expandafter\def\csname simpleicon@fossaicon\endcsname {\simpleiconsmap\symbol{"EDEF}}
+ \expandafter\def\csname simpleicon@fossilscmicon\endcsname {\simpleiconsmap\symbol{"EDF0}}
+ \expandafter\def\csname simpleicon@foundryvirtualtabletopicon\endcsname {\simpleiconsmap\symbol{"EDF1}}
+ \expandafter\def\csname simpleicon@foursquareicon\endcsname {\simpleiconsmap\symbol{"EDF2}}
+ \expandafter\def\csname simpleicon@foursquarecityguideicon\endcsname {\simpleiconsmap\symbol{"EDF3}}
+ \expandafter\def\csname simpleicon@foxicon\endcsname {\simpleiconsmap\symbol{"EDF4}}
+ \expandafter\def\csname simpleicon@foxtelicon\endcsname {\simpleiconsmap\symbol{"EDF5}}
+ \expandafter\def\csname simpleicon@fozzyicon\endcsname {\simpleiconsmap\symbol{"EDF6}}
+ \expandafter\def\csname simpleicon@framericon\endcsname {\simpleiconsmap\symbol{"EDF7}}
+ \expandafter\def\csname simpleicon@frameworkicon\endcsname {\simpleiconsmap\symbol{"EDF8}}
+ \expandafter\def\csname simpleicon@framework7icon\endcsname {\simpleiconsmap\symbol{"EDF9}}
+ \expandafter\def\csname simpleicon@franprixicon\endcsname {\simpleiconsmap\symbol{"EDFA}}
+ \expandafter\def\csname simpleicon@frappeicon\endcsname {\simpleiconsmap\symbol{"EDFB}}
+ \expandafter\def\csname simpleicon@fraunhofergesellschafticon\endcsname {\simpleiconsmap\symbol{"EDFC}}
+ \expandafter\def\csname simpleicon@freebsdicon\endcsname {\simpleiconsmap\symbol{"EDFD}}
+ \expandafter\def\csname simpleicon@freecadicon\endcsname {\simpleiconsmap\symbol{"EDFE}}
+ \expandafter\def\csname simpleicon@freecodecampicon\endcsname {\simpleiconsmap\symbol{"EDFF}}
+ \expandafter\def\csname simpleicon@freedesktopdotorgicon\endcsname {\simpleiconsmap\symbol{"EE00}}
+ \expandafter\def\csname simpleicon@freelancericon\endcsname {\simpleiconsmap\symbol{"EE01}}
+ \expandafter\def\csname simpleicon@freelancermapicon\endcsname {\simpleiconsmap\symbol{"EE02}}
+ \expandafter\def\csname simpleicon@freenasicon\endcsname {\simpleiconsmap\symbol{"EE03}}
+ \expandafter\def\csname simpleicon@freepikicon\endcsname {\simpleiconsmap\symbol{"EE04}}
+ \expandafter\def\csname simpleicon@freshicon\endcsname {\simpleiconsmap\symbol{"EE05}}
+ \expandafter\def\csname simpleicon@frontendmentoricon\endcsname {\simpleiconsmap\symbol{"EE06}}
+ \expandafter\def\csname simpleicon@frontifyicon\endcsname {\simpleiconsmap\symbol{"EE07}}
+ \expandafter\def\csname simpleicon@fsecureicon\endcsname {\simpleiconsmap\symbol{"EE08}}
+ \expandafter\def\csname simpleicon@fsharpicon\endcsname {\simpleiconsmap\symbol{"EE09}}
+ \expandafter\def\csname simpleicon@fuboicon\endcsname {\simpleiconsmap\symbol{"EE0A}}
+ \expandafter\def\csname simpleicon@fuelericon\endcsname {\simpleiconsmap\symbol{"EE0B}}
+ \expandafter\def\csname simpleicon@fugacloudicon\endcsname {\simpleiconsmap\symbol{"EE0C}}
+ \expandafter\def\csname simpleicon@fujifilmicon\endcsname {\simpleiconsmap\symbol{"EE0D}}
+ \expandafter\def\csname simpleicon@fujitsuicon\endcsname {\simpleiconsmap\symbol{"EE0E}}
+ \expandafter\def\csname simpleicon@funimationicon\endcsname {\simpleiconsmap\symbol{"EE0F}}
+ \expandafter\def\csname simpleicon@furaffinityicon\endcsname {\simpleiconsmap\symbol{"EE10}}
+ \expandafter\def\csname simpleicon@furrynetworkicon\endcsname {\simpleiconsmap\symbol{"EE11}}
+ \expandafter\def\csname simpleicon@fusionauthicon\endcsname {\simpleiconsmap\symbol{"EE12}}
+ \expandafter\def\csname simpleicon@futurelearnicon\endcsname {\simpleiconsmap\symbol{"EE13}}
+ \expandafter\def\csname simpleicon@g2icon\endcsname {\simpleiconsmap\symbol{"EE14}}
+ \expandafter\def\csname simpleicon@g2aicon\endcsname {\simpleiconsmap\symbol{"EE15}}
+ \expandafter\def\csname simpleicon@g2gicon\endcsname {\simpleiconsmap\symbol{"EE16}}
+ \expandafter\def\csname simpleicon@galaxusicon\endcsname {\simpleiconsmap\symbol{"EE17}}
+ \expandafter\def\csname simpleicon@gameandwatchicon\endcsname {\simpleiconsmap\symbol{"EE18}}
+ \expandafter\def\csname simpleicon@gamebananaicon\endcsname {\simpleiconsmap\symbol{"EE19}}
+ \expandafter\def\csname simpleicon@gamedevelopericon\endcsname {\simpleiconsmap\symbol{"EE1A}}
+ \expandafter\def\csname simpleicon@gamejolticon\endcsname {\simpleiconsmap\symbol{"EE1B}}
+ \expandafter\def\csname simpleicon@gamelofticon\endcsname {\simpleiconsmap\symbol{"EE1C}}
+ \expandafter\def\csname simpleicon@gamemakericon\endcsname {\simpleiconsmap\symbol{"EE1D}}
+ \expandafter\def\csname simpleicon@garminicon\endcsname {\simpleiconsmap\symbol{"EE1E}}
+ \expandafter\def\csname simpleicon@gatlingicon\endcsname {\simpleiconsmap\symbol{"EE1F}}
+ \expandafter\def\csname simpleicon@gatsbyicon\endcsname {\simpleiconsmap\symbol{"EE20}}
+ \expandafter\def\csname simpleicon@gcoreicon\endcsname {\simpleiconsmap\symbol{"EE21}}
+ \expandafter\def\csname simpleicon@gdalicon\endcsname {\simpleiconsmap\symbol{"EE22}}
+ \expandafter\def\csname simpleicon@geanticon\endcsname {\simpleiconsmap\symbol{"EE23}}
+ \expandafter\def\csname simpleicon@geeksforgeeksicon\endcsname {\simpleiconsmap\symbol{"EE24}}
+ \expandafter\def\csname simpleicon@generalelectricicon\endcsname {\simpleiconsmap\symbol{"EE25}}
+ \expandafter\def\csname simpleicon@generalmotorsicon\endcsname {\simpleiconsmap\symbol{"EE26}}
+ \expandafter\def\csname simpleicon@geniusicon\endcsname {\simpleiconsmap\symbol{"EE27}}
+ \expandafter\def\csname simpleicon@gentooicon\endcsname {\simpleiconsmap\symbol{"EE28}}
+ \expandafter\def\csname simpleicon@geocachingicon\endcsname {\simpleiconsmap\symbol{"EE29}}
+ \expandafter\def\csname simpleicon@geodeicon\endcsname {\simpleiconsmap\symbol{"EE2A}}
+ \expandafter\def\csname simpleicon@geopandasicon\endcsname {\simpleiconsmap\symbol{"EE2B}}
+ \expandafter\def\csname simpleicon@gerriticon\endcsname {\simpleiconsmap\symbol{"EE2C}}
+ \expandafter\def\csname simpleicon@getxicon\endcsname {\simpleiconsmap\symbol{"EE2D}}
+ \expandafter\def\csname simpleicon@ghosticon\endcsname {\simpleiconsmap\symbol{"EE2E}}
+ \expandafter\def\csname simpleicon@ghosteryicon\endcsname {\simpleiconsmap\symbol{"EE2F}}
+ \expandafter\def\csname simpleicon@gimpicon\endcsname {\simpleiconsmap\symbol{"EE30}}
+ \expandafter\def\csname simpleicon@ginicon\endcsname {\simpleiconsmap\symbol{"EE31}}
+ \expandafter\def\csname simpleicon@giphyicon\endcsname {\simpleiconsmap\symbol{"EE32}}
+ \expandafter\def\csname simpleicon@giticon\endcsname {\simpleiconsmap\symbol{"EE33}}
+ \expandafter\def\csname simpleicon@gitbookicon\endcsname {\simpleiconsmap\symbol{"EE34}}
+ \expandafter\def\csname simpleicon@gitconnectedicon\endcsname {\simpleiconsmap\symbol{"EE35}}
+ \expandafter\def\csname simpleicon@giteaicon\endcsname {\simpleiconsmap\symbol{"EE36}}
+ \expandafter\def\csname simpleicon@giteeicon\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@githubicon\endcsname {\simpleiconsmap\symbol{"EE3A}}
+ \expandafter\def\csname simpleicon@githubactionsicon\endcsname {\simpleiconsmap\symbol{"EE3B}}
+ \expandafter\def\csname simpleicon@githubcopiloticon\endcsname {\simpleiconsmap\symbol{"EE3C}}
+ \expandafter\def\csname simpleicon@githubpagesicon\endcsname {\simpleiconsmap\symbol{"EE3D}}
+ \expandafter\def\csname simpleicon@githubsponsorsicon\endcsname {\simpleiconsmap\symbol{"EE3E}}
+ \expandafter\def\csname simpleicon@gitignoredotioicon\endcsname {\simpleiconsmap\symbol{"EE3F}}
+ \expandafter\def\csname simpleicon@gitkrakenicon\endcsname {\simpleiconsmap\symbol{"EE40}}
+ \expandafter\def\csname simpleicon@gitlabicon\endcsname {\simpleiconsmap\symbol{"EE41}}
+ \expandafter\def\csname simpleicon@gitlfsicon\endcsname {\simpleiconsmap\symbol{"EE42}}
+ \expandafter\def\csname simpleicon@gitpodicon\endcsname {\simpleiconsmap\symbol{"EE43}}
+ \expandafter\def\csname simpleicon@gittericon\endcsname {\simpleiconsmap\symbol{"EE44}}
+ \expandafter\def\csname simpleicon@glassdooricon\endcsname {\simpleiconsmap\symbol{"EE45}}
+ \expandafter\def\csname simpleicon@glideicon\endcsname {\simpleiconsmap\symbol{"EE46}}
+ \expandafter\def\csname simpleicon@glitchicon\endcsname {\simpleiconsmap\symbol{"EE47}}
+ \expandafter\def\csname simpleicon@globusicon\endcsname {\simpleiconsmap\symbol{"EE48}}
+ \expandafter\def\csname simpleicon@glovoicon\endcsname {\simpleiconsmap\symbol{"EE49}}
+ \expandafter\def\csname simpleicon@gltficon\endcsname {\simpleiconsmap\symbol{"EE4A}}
+ \expandafter\def\csname simpleicon@gmailicon\endcsname {\simpleiconsmap\symbol{"EE4B}}
+ \expandafter\def\csname simpleicon@gnomeicon\endcsname {\simpleiconsmap\symbol{"EE4C}}
+ \expandafter\def\csname simpleicon@gnometerminalicon\endcsname {\simpleiconsmap\symbol{"EE4D}}
+ \expandafter\def\csname simpleicon@gnuicon\endcsname {\simpleiconsmap\symbol{"EE4E}}
+ \expandafter\def\csname simpleicon@gnubashicon\endcsname {\simpleiconsmap\symbol{"EE4F}}
+ \expandafter\def\csname simpleicon@gnuemacsicon\endcsname {\simpleiconsmap\symbol{"EE50}}
+ \expandafter\def\csname simpleicon@gnuicecaticon\endcsname {\simpleiconsmap\symbol{"EE51}}
+ \expandafter\def\csname simpleicon@gnuprivacyguardicon\endcsname {\simpleiconsmap\symbol{"EE52}}
+ \expandafter\def\csname simpleicon@gnusocialicon\endcsname {\simpleiconsmap\symbol{"EE53}}
+ \expandafter\def\csname simpleicon@goicon\endcsname {\simpleiconsmap\symbol{"EE54}}
+ \expandafter\def\csname simpleicon@gocdicon\endcsname {\simpleiconsmap\symbol{"EE55}}
+ \expandafter\def\csname simpleicon@godaddyicon\endcsname {\simpleiconsmap\symbol{"EE56}}
+ \expandafter\def\csname simpleicon@godotengineicon\endcsname {\simpleiconsmap\symbol{"EE57}}
+ \expandafter\def\csname simpleicon@gofundmeicon\endcsname {\simpleiconsmap\symbol{"EE58}}
+ \expandafter\def\csname simpleicon@gogdotcomicon\endcsname {\simpleiconsmap\symbol{"EE59}}
+ \expandafter\def\csname simpleicon@gojekicon\endcsname {\simpleiconsmap\symbol{"EE5A}}
+ \expandafter\def\csname simpleicon@golandicon\endcsname {\simpleiconsmap\symbol{"EE5B}}
+ \expandafter\def\csname simpleicon@goldenlineicon\endcsname {\simpleiconsmap\symbol{"EE5C}}
+ \expandafter\def\csname simpleicon@goldmansachsicon\endcsname {\simpleiconsmap\symbol{"EE5D}}
+ \expandafter\def\csname simpleicon@goodreadsicon\endcsname {\simpleiconsmap\symbol{"EE5E}}
+ \expandafter\def\csname simpleicon@googleicon\endcsname {\simpleiconsmap\symbol{"EE5F}}
+ \expandafter\def\csname simpleicon@googleadmobicon\endcsname {\simpleiconsmap\symbol{"EE60}}
+ \expandafter\def\csname simpleicon@googleadsicon\endcsname {\simpleiconsmap\symbol{"EE61}}
+ \expandafter\def\csname simpleicon@googleadsenseicon\endcsname {\simpleiconsmap\symbol{"EE62}}
+ \expandafter\def\csname simpleicon@googleanalyticsicon\endcsname {\simpleiconsmap\symbol{"EE63}}
+ \expandafter\def\csname simpleicon@googleappsscripticon\endcsname {\simpleiconsmap\symbol{"EE64}}
+ \expandafter\def\csname simpleicon@googleassistanticon\endcsname {\simpleiconsmap\symbol{"EE65}}
+ \expandafter\def\csname simpleicon@googleauthenticatoricon\endcsname {\simpleiconsmap\symbol{"EE66}}
+ \expandafter\def\csname simpleicon@googlebigqueryicon\endcsname {\simpleiconsmap\symbol{"EE67}}
+ \expandafter\def\csname simpleicon@googlebigtableicon\endcsname {\simpleiconsmap\symbol{"EE68}}
+ \expandafter\def\csname simpleicon@googlecalendaricon\endcsname {\simpleiconsmap\symbol{"EE69}}
+ \expandafter\def\csname simpleicon@googlecampaignmanager360icon\endcsname {\simpleiconsmap\symbol{"EE6A}}
+ \expandafter\def\csname simpleicon@googlecardboardicon\endcsname {\simpleiconsmap\symbol{"EE6B}}
+ \expandafter\def\csname simpleicon@googlechaticon\endcsname {\simpleiconsmap\symbol{"EE6C}}
+ \expandafter\def\csname simpleicon@googlechromeicon\endcsname {\simpleiconsmap\symbol{"EE6D}}
+ \expandafter\def\csname simpleicon@googlechronicleicon\endcsname {\simpleiconsmap\symbol{"EE6E}}
+ \expandafter\def\csname simpleicon@googleclassroomicon\endcsname {\simpleiconsmap\symbol{"EE6F}}
+ \expandafter\def\csname simpleicon@googlecloudicon\endcsname {\simpleiconsmap\symbol{"EE70}}
+ \expandafter\def\csname simpleicon@googlecloudcomposericon\endcsname {\simpleiconsmap\symbol{"EE71}}
+ \expandafter\def\csname simpleicon@googlecloudspannericon\endcsname {\simpleiconsmap\symbol{"EE72}}
+ \expandafter\def\csname simpleicon@googlecloudstorageicon\endcsname {\simpleiconsmap\symbol{"EE73}}
+ \expandafter\def\csname simpleicon@googlecolabicon\endcsname {\simpleiconsmap\symbol{"EE74}}
+ \expandafter\def\csname simpleicon@googlecontaineroptimizedosicon\endcsname {\simpleiconsmap\symbol{"EE75}}
+ \expandafter\def\csname simpleicon@googledataflowicon\endcsname {\simpleiconsmap\symbol{"EE76}}
+ \expandafter\def\csname simpleicon@googledataprocicon\endcsname {\simpleiconsmap\symbol{"EE77}}
+ \expandafter\def\csname simpleicon@googledatastudioicon\endcsname {\simpleiconsmap\symbol{"EE78}}
+ \expandafter\def\csname simpleicon@googledisplayandvideo360icon\endcsname {\simpleiconsmap\symbol{"EE79}}
+ \expandafter\def\csname simpleicon@googledocsicon\endcsname {\simpleiconsmap\symbol{"EE7A}}
+ \expandafter\def\csname simpleicon@googledriveicon\endcsname {\simpleiconsmap\symbol{"EE7B}}
+ \expandafter\def\csname simpleicon@googleearthicon\endcsname {\simpleiconsmap\symbol{"EE7C}}
+ \expandafter\def\csname simpleicon@googleearthengineicon\endcsname {\simpleiconsmap\symbol{"EE7D}}
+ \expandafter\def\csname simpleicon@googlefiticon\endcsname {\simpleiconsmap\symbol{"EE7E}}
+ \expandafter\def\csname simpleicon@googlefontsicon\endcsname {\simpleiconsmap\symbol{"EE7F}}
+ \expandafter\def\csname simpleicon@googleformsicon\endcsname {\simpleiconsmap\symbol{"EE80}}
+ \expandafter\def\csname simpleicon@googlegeminiicon\endcsname {\simpleiconsmap\symbol{"EE81}}
+ \expandafter\def\csname simpleicon@googlehomeicon\endcsname {\simpleiconsmap\symbol{"EE82}}
+ \expandafter\def\csname simpleicon@googlekeepicon\endcsname {\simpleiconsmap\symbol{"EE83}}
+ \expandafter\def\csname simpleicon@googlelensicon\endcsname {\simpleiconsmap\symbol{"EE84}}
+ \expandafter\def\csname simpleicon@googlemapsicon\endcsname {\simpleiconsmap\symbol{"EE85}}
+ \expandafter\def\csname simpleicon@googlemarketingplatformicon\endcsname {\simpleiconsmap\symbol{"EE86}}
+ \expandafter\def\csname simpleicon@googlemeeticon\endcsname {\simpleiconsmap\symbol{"EE87}}
+ \expandafter\def\csname simpleicon@googlemessagesicon\endcsname {\simpleiconsmap\symbol{"EE88}}
+ \expandafter\def\csname simpleicon@googlenearbyicon\endcsname {\simpleiconsmap\symbol{"EE89}}
+ \expandafter\def\csname simpleicon@googlenewsicon\endcsname {\simpleiconsmap\symbol{"EE8A}}
+ \expandafter\def\csname simpleicon@googlepayicon\endcsname {\simpleiconsmap\symbol{"EE8B}}
+ \expandafter\def\csname simpleicon@googlephotosicon\endcsname {\simpleiconsmap\symbol{"EE8C}}
+ \expandafter\def\csname simpleicon@googleplayicon\endcsname {\simpleiconsmap\symbol{"EE8D}}
+ \expandafter\def\csname simpleicon@googlepubsubicon\endcsname {\simpleiconsmap\symbol{"EE8E}}
+ \expandafter\def\csname simpleicon@googlescholaricon\endcsname {\simpleiconsmap\symbol{"EE8F}}
+ \expandafter\def\csname simpleicon@googlesearchconsoleicon\endcsname {\simpleiconsmap\symbol{"EE90}}
+ \expandafter\def\csname simpleicon@googlesheetsicon\endcsname {\simpleiconsmap\symbol{"EE91}}
+ \expandafter\def\csname simpleicon@googleslidesicon\endcsname {\simpleiconsmap\symbol{"EE92}}
+ \expandafter\def\csname simpleicon@googlestreetviewicon\endcsname {\simpleiconsmap\symbol{"EE93}}
+ \expandafter\def\csname simpleicon@googletagmanagericon\endcsname {\simpleiconsmap\symbol{"EE94}}
+ \expandafter\def\csname simpleicon@googletasksicon\endcsname {\simpleiconsmap\symbol{"EE95}}
+ \expandafter\def\csname simpleicon@googletranslateicon\endcsname {\simpleiconsmap\symbol{"EE96}}
+ \expandafter\def\csname simpleicon@gotomeetingicon\endcsname {\simpleiconsmap\symbol{"EE97}}
+ \expandafter\def\csname simpleicon@grabicon\endcsname {\simpleiconsmap\symbol{"EE98}}
+ \expandafter\def\csname simpleicon@gradleicon\endcsname {\simpleiconsmap\symbol{"EE99}}
+ \expandafter\def\csname simpleicon@gradleplaypublishericon\endcsname {\simpleiconsmap\symbol{"EE9A}}
+ \expandafter\def\csname simpleicon@grafanaicon\endcsname {\simpleiconsmap\symbol{"EE9B}}
+ \expandafter\def\csname simpleicon@grammarlyicon\endcsname {\simpleiconsmap\symbol{"EE9C}}
+ \expandafter\def\csname simpleicon@grandfraisicon\endcsname {\simpleiconsmap\symbol{"EE9D}}
+ \expandafter\def\csname simpleicon@grapheneosicon\endcsname {\simpleiconsmap\symbol{"EE9E}}
+ \expandafter\def\csname simpleicon@graphiteicon\endcsname {\simpleiconsmap\symbol{"EE9F}}
+ \expandafter\def\csname simpleicon@graphqlicon\endcsname {\simpleiconsmap\symbol{"EEA0}}
+ \expandafter\def\csname simpleicon@gravicon\endcsname {\simpleiconsmap\symbol{"EEA1}}
+ \expandafter\def\csname simpleicon@gravataricon\endcsname {\simpleiconsmap\symbol{"EEA2}}
+ \expandafter\def\csname simpleicon@graylogicon\endcsname {\simpleiconsmap\symbol{"EEA3}}
+ \expandafter\def\csname simpleicon@greasyforkicon\endcsname {\simpleiconsmap\symbol{"EEA4}}
+ \expandafter\def\csname simpleicon@greatlearningicon\endcsname {\simpleiconsmap\symbol{"EEA5}}
+ \expandafter\def\csname simpleicon@greenhouseicon\endcsname {\simpleiconsmap\symbol{"EEA6}}
+ \expandafter\def\csname simpleicon@greensockicon\endcsname {\simpleiconsmap\symbol{"EEA7}}
+ \expandafter\def\csname simpleicon@griddotaiicon\endcsname {\simpleiconsmap\symbol{"EEA8}}
+ \expandafter\def\csname simpleicon@gridsomeicon\endcsname {\simpleiconsmap\symbol{"EEA9}}
+ \expandafter\def\csname simpleicon@groupmeicon\endcsname {\simpleiconsmap\symbol{"EEAA}}
+ \expandafter\def\csname simpleicon@grouponicon\endcsname {\simpleiconsmap\symbol{"EEAB}}
+ \expandafter\def\csname simpleicon@grubhubicon\endcsname {\simpleiconsmap\symbol{"EEAC}}
+ \expandafter\def\csname simpleicon@grunticon\endcsname {\simpleiconsmap\symbol{"EEAD}}
+ \expandafter\def\csname simpleicon@gskicon\endcsname {\simpleiconsmap\symbol{"EEAE}}
+ \expandafter\def\csname simpleicon@gsmarenadotcomicon\endcsname {\simpleiconsmap\symbol{"EEAF}}
+ \expandafter\def\csname simpleicon@gstreamericon\endcsname {\simpleiconsmap\symbol{"EEB0}}
+ \expandafter\def\csname simpleicon@gtkicon\endcsname {\simpleiconsmap\symbol{"EEB1}}
+ \expandafter\def\csname simpleicon@guangzhoumetroicon\endcsname {\simpleiconsmap\symbol{"EEB2}}
+ \expandafter\def\csname simpleicon@guildedicon\endcsname {\simpleiconsmap\symbol{"EEB3}}
+ \expandafter\def\csname simpleicon@guitarproicon\endcsname {\simpleiconsmap\symbol{"EEB4}}
+ \expandafter\def\csname simpleicon@gulpicon\endcsname {\simpleiconsmap\symbol{"EEB5}}
+ \expandafter\def\csname simpleicon@gumroadicon\endcsname {\simpleiconsmap\symbol{"EEB6}}
+ \expandafter\def\csname simpleicon@gumtreeicon\endcsname {\simpleiconsmap\symbol{"EEB7}}
+ \expandafter\def\csname simpleicon@gunicornicon\endcsname {\simpleiconsmap\symbol{"EEB8}}
+ \expandafter\def\csname simpleicon@gurobiicon\endcsname {\simpleiconsmap\symbol{"EEB9}}
+ \expandafter\def\csname simpleicon@gustoicon\endcsname {\simpleiconsmap\symbol{"EEBA}}
+ \expandafter\def\csname simpleicon@gutenbergicon\endcsname {\simpleiconsmap\symbol{"EEBB}}
+ \expandafter\def\csname simpleicon@h3icon\endcsname {\simpleiconsmap\symbol{"EEBC}}
+ \expandafter\def\csname simpleicon@habricon\endcsname {\simpleiconsmap\symbol{"EEBD}}
+ \expandafter\def\csname simpleicon@hackadayicon\endcsname {\simpleiconsmap\symbol{"EEBE}}
+ \expandafter\def\csname simpleicon@hackclubicon\endcsname {\simpleiconsmap\symbol{"EEBF}}
+ \expandafter\def\csname simpleicon@hackerearthicon\endcsname {\simpleiconsmap\symbol{"EEC0}}
+ \expandafter\def\csname simpleicon@hackernoonicon\endcsname {\simpleiconsmap\symbol{"EEC1}}
+ \expandafter\def\csname simpleicon@hackeroneicon\endcsname {\simpleiconsmap\symbol{"EEC2}}
+ \expandafter\def\csname simpleicon@hackerrankicon\endcsname {\simpleiconsmap\symbol{"EEC3}}
+ \expandafter\def\csname simpleicon@hackstericon\endcsname {\simpleiconsmap\symbol{"EEC4}}
+ \expandafter\def\csname simpleicon@hacktheboxicon\endcsname {\simpleiconsmap\symbol{"EEC5}}
+ \expandafter\def\csname simpleicon@halicon\endcsname {\simpleiconsmap\symbol{"EEC6}}
+ \expandafter\def\csname simpleicon@handlebarsdotjsicon\endcsname {\simpleiconsmap\symbol{"EEC7}}
+ \expandafter\def\csname simpleicon@handmicon\endcsname {\simpleiconsmap\symbol{"EEC8}}
+ \expandafter\def\csname simpleicon@handshakeicon\endcsname {\simpleiconsmap\symbol{"EEC9}}
+ \expandafter\def\csname simpleicon@handshakeprotocolicon\endcsname {\simpleiconsmap\symbol{"EECA}}
+ \expandafter\def\csname simpleicon@happycowicon\endcsname {\simpleiconsmap\symbol{"EECB}}
+ \expandafter\def\csname simpleicon@harboricon\endcsname {\simpleiconsmap\symbol{"EECC}}
+ \expandafter\def\csname simpleicon@harmonyosicon\endcsname {\simpleiconsmap\symbol{"EECD}}
+ \expandafter\def\csname simpleicon@hashicorpicon\endcsname {\simpleiconsmap\symbol{"EECE}}
+ \expandafter\def\csname simpleicon@hashnodeicon\endcsname {\simpleiconsmap\symbol{"EECF}}
+ \expandafter\def\csname simpleicon@haskellicon\endcsname {\simpleiconsmap\symbol{"EED0}}
+ \expandafter\def\csname simpleicon@hasuraicon\endcsname {\simpleiconsmap\symbol{"EED1}}
+ \expandafter\def\csname simpleicon@hatenabookmarkicon\endcsname {\simpleiconsmap\symbol{"EED2}}
+ \expandafter\def\csname simpleicon@haveibeenpwnedicon\endcsname {\simpleiconsmap\symbol{"EED3}}
+ \expandafter\def\csname simpleicon@haxeicon\endcsname {\simpleiconsmap\symbol{"EED4}}
+ \expandafter\def\csname simpleicon@hboicon\endcsname {\simpleiconsmap\symbol{"EED5}}
+ \expandafter\def\csname simpleicon@hclicon\endcsname {\simpleiconsmap\symbol{"EED6}}
+ \expandafter\def\csname simpleicon@hdfcbankicon\endcsname {\simpleiconsmap\symbol{"EED7}}
+ \expandafter\def\csname simpleicon@headlessuiicon\endcsname {\simpleiconsmap\symbol{"EED8}}
+ \expandafter\def\csname simpleicon@headphonezoneicon\endcsname {\simpleiconsmap\symbol{"EED9}}
+ \expandafter\def\csname simpleicon@headspaceicon\endcsname {\simpleiconsmap\symbol{"EEDA}}
+ \expandafter\def\csname simpleicon@hearthicon\endcsname {\simpleiconsmap\symbol{"EEDB}}
+ \expandafter\def\csname simpleicon@hearthisdotaticon\endcsname {\simpleiconsmap\symbol{"EEDC}}
+ \expandafter\def\csname simpleicon@hederaicon\endcsname {\simpleiconsmap\symbol{"EEDD}}
+ \expandafter\def\csname simpleicon@heliumicon\endcsname {\simpleiconsmap\symbol{"EEDE}}
+ \expandafter\def\csname simpleicon@helixicon\endcsname {\simpleiconsmap\symbol{"EEDF}}
+ \expandafter\def\csname simpleicon@hellofreshicon\endcsname {\simpleiconsmap\symbol{"EEE0}}
+ \expandafter\def\csname simpleicon@hellyhansenicon\endcsname {\simpleiconsmap\symbol{"EEE1}}
+ \expandafter\def\csname simpleicon@helmicon\endcsname {\simpleiconsmap\symbol{"EEE2}}
+ \expandafter\def\csname simpleicon@helpdeskicon\endcsname {\simpleiconsmap\symbol{"EEE3}}
+ \expandafter\def\csname simpleicon@helpscouticon\endcsname {\simpleiconsmap\symbol{"EEE4}}
+ \expandafter\def\csname simpleicon@hepsiemlakicon\endcsname {\simpleiconsmap\symbol{"EEE5}}
+ \expandafter\def\csname simpleicon@hereicon\endcsname {\simpleiconsmap\symbol{"EEE6}}
+ \expandafter\def\csname simpleicon@hermesicon\endcsname {\simpleiconsmap\symbol{"EEE7}}
+ \expandafter\def\csname simpleicon@herokuicon\endcsname {\simpleiconsmap\symbol{"EEE8}}
+ \expandafter\def\csname simpleicon@hetznericon\endcsname {\simpleiconsmap\symbol{"EEE9}}
+ \expandafter\def\csname simpleicon@hevyicon\endcsname {\simpleiconsmap\symbol{"EEEA}}
+ \expandafter\def\csname simpleicon@hexleticon\endcsname {\simpleiconsmap\symbol{"EEEB}}
+ \expandafter\def\csname simpleicon@hexoicon\endcsname {\simpleiconsmap\symbol{"EEEC}}
+ \expandafter\def\csname simpleicon@heyicon\endcsname {\simpleiconsmap\symbol{"EEED}}
+ \expandafter\def\csname simpleicon@hibernateicon\endcsname {\simpleiconsmap\symbol{"EEEE}}
+ \expandafter\def\csname simpleicon@hibobicon\endcsname {\simpleiconsmap\symbol{"EEEF}}
+ \expandafter\def\csname simpleicon@hiltonicon\endcsname {\simpleiconsmap\symbol{"EEF0}}
+ \expandafter\def\csname simpleicon@hiltonhotelsandresortsicon\endcsname {\simpleiconsmap\symbol{"EEF1}}
+ \expandafter\def\csname simpleicon@hitachiicon\endcsname {\simpleiconsmap\symbol{"EEF2}}
+ \expandafter\def\csname simpleicon@hiveicon\endcsname {\simpleiconsmap\symbol{"EEF3}}
+ \expandafter\def\csname simpleicon@hiveblockchainicon\endcsname {\simpleiconsmap\symbol{"EEF4}}
+ \expandafter\def\csname simpleicon@hivemqicon\endcsname {\simpleiconsmap\symbol{"EEF5}}
+ \expandafter\def\csname simpleicon@homarricon\endcsname {\simpleiconsmap\symbol{"EEF6}}
+ \expandafter\def\csname simpleicon@homeadvisoricon\endcsname {\simpleiconsmap\symbol{"EEF7}}
+ \expandafter\def\csname simpleicon@homeassistanticon\endcsname {\simpleiconsmap\symbol{"EEF8}}
+ \expandafter\def\csname simpleicon@homeassistantcommunitystoreicon\endcsname {\simpleiconsmap\symbol{"EEF9}}
+ \expandafter\def\csname simpleicon@homebrewicon\endcsname {\simpleiconsmap\symbol{"EEFA}}
+ \expandafter\def\csname simpleicon@homebridgeicon\endcsname {\simpleiconsmap\symbol{"EEFB}}
+ \expandafter\def\csname simpleicon@homepageicon\endcsname {\simpleiconsmap\symbol{"EEFC}}
+ \expandafter\def\csname simpleicon@homifyicon\endcsname {\simpleiconsmap\symbol{"EEFD}}
+ \expandafter\def\csname simpleicon@hondaicon\endcsname {\simpleiconsmap\symbol{"EEFE}}
+ \expandafter\def\csname simpleicon@honeyicon\endcsname {\simpleiconsmap\symbol{"EEFF}}
+ \expandafter\def\csname simpleicon@honoicon\endcsname {\simpleiconsmap\symbol{"EF00}}
+ \expandafter\def\csname simpleicon@honoricon\endcsname {\simpleiconsmap\symbol{"EF01}}
+ \expandafter\def\csname simpleicon@hootsuiteicon\endcsname {\simpleiconsmap\symbol{"EF02}}
+ \expandafter\def\csname simpleicon@hoppscotchicon\endcsname {\simpleiconsmap\symbol{"EF03}}
+ \expandafter\def\csname simpleicon@hostingericon\endcsname {\simpleiconsmap\symbol{"EF04}}
+ \expandafter\def\csname simpleicon@hotelsdotcomicon\endcsname {\simpleiconsmap\symbol{"EF05}}
+ \expandafter\def\csname simpleicon@hotjaricon\endcsname {\simpleiconsmap\symbol{"EF06}}
+ \expandafter\def\csname simpleicon@hotwireicon\endcsname {\simpleiconsmap\symbol{"EF07}}
+ \expandafter\def\csname simpleicon@houdiniicon\endcsname {\simpleiconsmap\symbol{"EF08}}
+ \expandafter\def\csname simpleicon@houzzicon\endcsname {\simpleiconsmap\symbol{"EF09}}
+ \expandafter\def\csname simpleicon@hpicon\endcsname {\simpleiconsmap\symbol{"EF0A}}
+ \expandafter\def\csname simpleicon@hsbcicon\endcsname {\simpleiconsmap\symbol{"EF0B}}
+ \expandafter\def\csname simpleicon@html5icon\endcsname {\simpleiconsmap\symbol{"EF0C}}
+ \expandafter\def\csname simpleicon@htmlacademyicon\endcsname {\simpleiconsmap\symbol{"EF0D}}
+ \expandafter\def\csname simpleicon@htmxicon\endcsname {\simpleiconsmap\symbol{"EF0E}}
+ \expandafter\def\csname simpleicon@htopicon\endcsname {\simpleiconsmap\symbol{"EF0F}}
+ \expandafter\def\csname simpleicon@httpieicon\endcsname {\simpleiconsmap\symbol{"EF10}}
+ \expandafter\def\csname simpleicon@huaweiicon\endcsname {\simpleiconsmap\symbol{"EF11}}
+ \expandafter\def\csname simpleicon@hubspoticon\endcsname {\simpleiconsmap\symbol{"EF12}}
+ \expandafter\def\csname simpleicon@huggingfaceicon\endcsname {\simpleiconsmap\symbol{"EF13}}
+ \expandafter\def\csname simpleicon@hugoicon\endcsname {\simpleiconsmap\symbol{"EF14}}
+ \expandafter\def\csname simpleicon@humblebundleicon\endcsname {\simpleiconsmap\symbol{"EF15}}
+ \expandafter\def\csname simpleicon@humhubicon\endcsname {\simpleiconsmap\symbol{"EF16}}
+ \expandafter\def\csname simpleicon@hungryjacksicon\endcsname {\simpleiconsmap\symbol{"EF17}}
+ \expandafter\def\csname simpleicon@husqvarnaicon\endcsname {\simpleiconsmap\symbol{"EF18}}
+ \expandafter\def\csname simpleicon@hypericon\endcsname {\simpleiconsmap\symbol{"EF19}}
+ \expandafter\def\csname simpleicon@hyperskillicon\endcsname {\simpleiconsmap\symbol{"EF1A}}
+ \expandafter\def\csname simpleicon@hyperxicon\endcsname {\simpleiconsmap\symbol{"EF1B}}
+ \expandafter\def\csname simpleicon@hypothesisicon\endcsname {\simpleiconsmap\symbol{"EF1C}}
+ \expandafter\def\csname simpleicon@hyprlandicon\endcsname {\simpleiconsmap\symbol{"EF1D}}
+ \expandafter\def\csname simpleicon@hyundaiicon\endcsname {\simpleiconsmap\symbol{"EF1E}}
+ \expandafter\def\csname simpleicon@i18nexticon\endcsname {\simpleiconsmap\symbol{"EF1F}}
+ \expandafter\def\csname simpleicon@i3icon\endcsname {\simpleiconsmap\symbol{"EF20}}
+ \expandafter\def\csname simpleicon@iataicon\endcsname {\simpleiconsmap\symbol{"EF21}}
+ \expandafter\def\csname simpleicon@ibeaconicon\endcsname {\simpleiconsmap\symbol{"EF22}}
+ \expandafter\def\csname simpleicon@iberiaicon\endcsname {\simpleiconsmap\symbol{"EF23}}
+ \expandafter\def\csname simpleicon@icedicon\endcsname {\simpleiconsmap\symbol{"EF24}}
+ \expandafter\def\csname simpleicon@icelandicon\endcsname {\simpleiconsmap\symbol{"EF25}}
+ \expandafter\def\csname simpleicon@icicibankicon\endcsname {\simpleiconsmap\symbol{"EF26}}
+ \expandafter\def\csname simpleicon@icingaicon\endcsname {\simpleiconsmap\symbol{"EF27}}
+ \expandafter\def\csname simpleicon@icloudicon\endcsname {\simpleiconsmap\symbol{"EF28}}
+ \expandafter\def\csname simpleicon@icomoonicon\endcsname {\simpleiconsmap\symbol{"EF29}}
+ \expandafter\def\csname simpleicon@iconicon\endcsname {\simpleiconsmap\symbol{"EF2A}}
+ \expandafter\def\csname simpleicon@iconfindericon\endcsname {\simpleiconsmap\symbol{"EF2B}}
+ \expandafter\def\csname simpleicon@iconifyicon\endcsname {\simpleiconsmap\symbol{"EF2C}}
+ \expandafter\def\csname simpleicon@iconjaricon\endcsname {\simpleiconsmap\symbol{"EF2D}}
+ \expandafter\def\csname simpleicon@icons8icon\endcsname {\simpleiconsmap\symbol{"EF2E}}
+ \expandafter\def\csname simpleicon@icqicon\endcsname {\simpleiconsmap\symbol{"EF2F}}
+ \expandafter\def\csname simpleicon@ieeeicon\endcsname {\simpleiconsmap\symbol{"EF30}}
+ \expandafter\def\csname simpleicon@ifixiticon\endcsname {\simpleiconsmap\symbol{"EF31}}
+ \expandafter\def\csname simpleicon@ifoodicon\endcsname {\simpleiconsmap\symbol{"EF32}}
+ \expandafter\def\csname simpleicon@ifttticon\endcsname {\simpleiconsmap\symbol{"EF33}}
+ \expandafter\def\csname simpleicon@igdbicon\endcsname {\simpleiconsmap\symbol{"EF34}}
+ \expandafter\def\csname simpleicon@ignicon\endcsname {\simpleiconsmap\symbol{"EF35}}
+ \expandafter\def\csname simpleicon@iheartradioicon\endcsname {\simpleiconsmap\symbol{"EF36}}
+ \expandafter\def\csname simpleicon@ikeaicon\endcsname {\simpleiconsmap\symbol{"EF37}}
+ \expandafter\def\csname simpleicon@iledefrancemobilitesicon\endcsname {\simpleiconsmap\symbol{"EF38}}
+ \expandafter\def\csname simpleicon@imagedotscicon\endcsname {\simpleiconsmap\symbol{"EF39}}
+ \expandafter\def\csname simpleicon@imagejicon\endcsname {\simpleiconsmap\symbol{"EF3A}}
+ \expandafter\def\csname simpleicon@imdbicon\endcsname {\simpleiconsmap\symbol{"EF3B}}
+ \expandafter\def\csname simpleicon@imessageicon\endcsname {\simpleiconsmap\symbol{"EF3C}}
+ \expandafter\def\csname simpleicon@imguricon\endcsname {\simpleiconsmap\symbol{"EF3D}}
+ \expandafter\def\csname simpleicon@immericon\endcsname {\simpleiconsmap\symbol{"EF3E}}
+ \expandafter\def\csname simpleicon@immichicon\endcsname {\simpleiconsmap\symbol{"EF3F}}
+ \expandafter\def\csname simpleicon@imouicon\endcsname {\simpleiconsmap\symbol{"EF40}}
+ \expandafter\def\csname simpleicon@improvmxicon\endcsname {\simpleiconsmap\symbol{"EF41}}
+ \expandafter\def\csname simpleicon@indeedicon\endcsname {\simpleiconsmap\symbol{"EF42}}
+ \expandafter\def\csname simpleicon@indiansuperleagueicon\endcsname {\simpleiconsmap\symbol{"EF43}}
+ \expandafter\def\csname simpleicon@indiehackersicon\endcsname {\simpleiconsmap\symbol{"EF44}}
+ \expandafter\def\csname simpleicon@indigoicon\endcsname {\simpleiconsmap\symbol{"EF45}}
+ \expandafter\def\csname simpleicon@inductiveautomationicon\endcsname {\simpleiconsmap\symbol{"EF46}}
+ \expandafter\def\csname simpleicon@inertiaicon\endcsname {\simpleiconsmap\symbol{"EF47}}
+ \expandafter\def\csname simpleicon@infinitiicon\endcsname {\simpleiconsmap\symbol{"EF48}}
+ \expandafter\def\csname simpleicon@influxdbicon\endcsname {\simpleiconsmap\symbol{"EF49}}
+ \expandafter\def\csname simpleicon@infomaniakicon\endcsname {\simpleiconsmap\symbol{"EF4A}}
+ \expandafter\def\csname simpleicon@infoqicon\endcsname {\simpleiconsmap\symbol{"EF4B}}
+ \expandafter\def\csname simpleicon@informaticaicon\endcsname {\simpleiconsmap\symbol{"EF4C}}
+ \expandafter\def\csname simpleicon@infosysicon\endcsname {\simpleiconsmap\symbol{"EF4D}}
+ \expandafter\def\csname simpleicon@infracosticon\endcsname {\simpleiconsmap\symbol{"EF4E}}
+ \expandafter\def\csname simpleicon@ingressicon\endcsname {\simpleiconsmap\symbol{"EF4F}}
+ \expandafter\def\csname simpleicon@inkdropicon\endcsname {\simpleiconsmap\symbol{"EF50}}
+ \expandafter\def\csname simpleicon@inkscapeicon\endcsname {\simpleiconsmap\symbol{"EF51}}
+ \expandafter\def\csname simpleicon@inoreadericon\endcsname {\simpleiconsmap\symbol{"EF52}}
+ \expandafter\def\csname simpleicon@insomniaicon\endcsname {\simpleiconsmap\symbol{"EF53}}
+ \expandafter\def\csname simpleicon@inspireicon\endcsname {\simpleiconsmap\symbol{"EF54}}
+ \expandafter\def\csname simpleicon@insta360icon\endcsname {\simpleiconsmap\symbol{"EF55}}
+ \expandafter\def\csname simpleicon@instacarticon\endcsname {\simpleiconsmap\symbol{"EF56}}
+ \expandafter\def\csname simpleicon@instagramicon\endcsname {\simpleiconsmap\symbol{"EF57}}
+ \expandafter\def\csname simpleicon@instapapericon\endcsname {\simpleiconsmap\symbol{"EF58}}
+ \expandafter\def\csname simpleicon@instatusicon\endcsname {\simpleiconsmap\symbol{"EF59}}
+ \expandafter\def\csname simpleicon@instructablesicon\endcsname {\simpleiconsmap\symbol{"EF5A}}
+ \expandafter\def\csname simpleicon@instructureicon\endcsname {\simpleiconsmap\symbol{"EF5B}}
+ \expandafter\def\csname simpleicon@intelicon\endcsname {\simpleiconsmap\symbol{"EF5C}}
+ \expandafter\def\csname simpleicon@intellijideaicon\endcsname {\simpleiconsmap\symbol{"EF5D}}
+ \expandafter\def\csname simpleicon@interactiondesignfoundationicon\endcsname {\simpleiconsmap\symbol{"EF5E}}
+ \expandafter\def\csname simpleicon@interactjsicon\endcsname {\simpleiconsmap\symbol{"EF5F}}
+ \expandafter\def\csname simpleicon@interbaseicon\endcsname {\simpleiconsmap\symbol{"EF60}}
+ \expandafter\def\csname simpleicon@intercomicon\endcsname {\simpleiconsmap\symbol{"EF61}}
+ \expandafter\def\csname simpleicon@intermarcheicon\endcsname {\simpleiconsmap\symbol{"EF62}}
+ \expandafter\def\csname simpleicon@internetarchiveicon\endcsname {\simpleiconsmap\symbol{"EF63}}
+ \expandafter\def\csname simpleicon@internetcomputericon\endcsname {\simpleiconsmap\symbol{"EF64}}
+ \expandafter\def\csname simpleicon@intigritiicon\endcsname {\simpleiconsmap\symbol{"EF65}}
+ \expandafter\def\csname simpleicon@intuiticon\endcsname {\simpleiconsmap\symbol{"EF66}}
+ \expandafter\def\csname simpleicon@invisionicon\endcsname {\simpleiconsmap\symbol{"EF67}}
+ \expandafter\def\csname simpleicon@invoiceninjaicon\endcsname {\simpleiconsmap\symbol{"EF68}}
+ \expandafter\def\csname simpleicon@iobrokericon\endcsname {\simpleiconsmap\symbol{"EF69}}
+ \expandafter\def\csname simpleicon@ionicicon\endcsname {\simpleiconsmap\symbol{"EF6A}}
+ \expandafter\def\csname simpleicon@ionosicon\endcsname {\simpleiconsmap\symbol{"EF6B}}
+ \expandafter\def\csname simpleicon@iosicon\endcsname {\simpleiconsmap\symbol{"EF6C}}
+ \expandafter\def\csname simpleicon@iotaicon\endcsname {\simpleiconsmap\symbol{"EF6D}}
+ \expandafter\def\csname simpleicon@ipfsicon\endcsname {\simpleiconsmap\symbol{"EF6E}}
+ \expandafter\def\csname simpleicon@irisicon\endcsname {\simpleiconsmap\symbol{"EF6F}}
+ \expandafter\def\csname simpleicon@iroboticon\endcsname {\simpleiconsmap\symbol{"EF70}}
+ \expandafter\def\csname simpleicon@isc2icon\endcsname {\simpleiconsmap\symbol{"EF71}}
+ \expandafter\def\csname simpleicon@issuuicon\endcsname {\simpleiconsmap\symbol{"EF72}}
+ \expandafter\def\csname simpleicon@istioicon\endcsname {\simpleiconsmap\symbol{"EF73}}
+ \expandafter\def\csname simpleicon@itchdotioicon\endcsname {\simpleiconsmap\symbol{"EF74}}
+ \expandafter\def\csname simpleicon@iterm2icon\endcsname {\simpleiconsmap\symbol{"EF75}}
+ \expandafter\def\csname simpleicon@itunesicon\endcsname {\simpleiconsmap\symbol{"EF76}}
+ \expandafter\def\csname simpleicon@itvxicon\endcsname {\simpleiconsmap\symbol{"EF77}}
+ \expandafter\def\csname simpleicon@ivecoicon\endcsname {\simpleiconsmap\symbol{"EF78}}
+ \expandafter\def\csname simpleicon@jabbericon\endcsname {\simpleiconsmap\symbol{"EF79}}
+ \expandafter\def\csname simpleicon@jaegericon\endcsname {\simpleiconsmap\symbol{"EF7A}}
+ \expandafter\def\csname simpleicon@jaguaricon\endcsname {\simpleiconsmap\symbol{"EF7B}}
+ \expandafter\def\csname simpleicon@jamboardicon\endcsname {\simpleiconsmap\symbol{"EF7C}}
+ \expandafter\def\csname simpleicon@jamesonicon\endcsname {\simpleiconsmap\symbol{"EF7D}}
+ \expandafter\def\csname simpleicon@jamstackicon\endcsname {\simpleiconsmap\symbol{"EF7E}}
+ \expandafter\def\csname simpleicon@japanairlinesicon\endcsname {\simpleiconsmap\symbol{"EF7F}}
+ \expandafter\def\csname simpleicon@jasmineicon\endcsname {\simpleiconsmap\symbol{"EF80}}
+ \expandafter\def\csname simpleicon@javascripticon\endcsname {\simpleiconsmap\symbol{"EF81}}
+ \expandafter\def\csname simpleicon@jblicon\endcsname {\simpleiconsmap\symbol{"EF82}}
+ \expandafter\def\csname simpleicon@jcbicon\endcsname {\simpleiconsmap\symbol{"EF83}}
+ \expandafter\def\csname simpleicon@jeepicon\endcsname {\simpleiconsmap\symbol{"EF84}}
+ \expandafter\def\csname simpleicon@jekyllicon\endcsname {\simpleiconsmap\symbol{"EF85}}
+ \expandafter\def\csname simpleicon@jellyfinicon\endcsname {\simpleiconsmap\symbol{"EF86}}
+ \expandafter\def\csname simpleicon@jenkinsicon\endcsname {\simpleiconsmap\symbol{"EF87}}
+ \expandafter\def\csname simpleicon@jesticon\endcsname {\simpleiconsmap\symbol{"EF88}}
+ \expandafter\def\csname simpleicon@jeticon\endcsname {\simpleiconsmap\symbol{"EF89}}
+ \expandafter\def\csname simpleicon@jetblueicon\endcsname {\simpleiconsmap\symbol{"EF8A}}
+ \expandafter\def\csname simpleicon@jetbrainsicon\endcsname {\simpleiconsmap\symbol{"EF8B}}
+ \expandafter\def\csname simpleicon@jetpackcomposeicon\endcsname {\simpleiconsmap\symbol{"EF8C}}
+ \expandafter\def\csname simpleicon@jfrogicon\endcsname {\simpleiconsmap\symbol{"EF8D}}
+ \expandafter\def\csname simpleicon@jfrogpipelinesicon\endcsname {\simpleiconsmap\symbol{"EF8E}}
+ \expandafter\def\csname simpleicon@jhipstericon\endcsname {\simpleiconsmap\symbol{"EF8F}}
+ \expandafter\def\csname simpleicon@jinjaicon\endcsname {\simpleiconsmap\symbol{"EF90}}
+ \expandafter\def\csname simpleicon@jiraicon\endcsname {\simpleiconsmap\symbol{"EF91}}
+ \expandafter\def\csname simpleicon@jirasoftwareicon\endcsname {\simpleiconsmap\symbol{"EF92}}
+ \expandafter\def\csname simpleicon@jitpackicon\endcsname {\simpleiconsmap\symbol{"EF93}}
+ \expandafter\def\csname simpleicon@jitsiicon\endcsname {\simpleiconsmap\symbol{"EF94}}
+ \expandafter\def\csname simpleicon@johndeereicon\endcsname {\simpleiconsmap\symbol{"EF95}}
+ \expandafter\def\csname simpleicon@joomlaicon\endcsname {\simpleiconsmap\symbol{"EF96}}
+ \expandafter\def\csname simpleicon@joplinicon\endcsname {\simpleiconsmap\symbol{"EF97}}
+ \expandafter\def\csname simpleicon@jordanicon\endcsname {\simpleiconsmap\symbol{"EF98}}
+ \expandafter\def\csname simpleicon@jouavicon\endcsname {\simpleiconsmap\symbol{"EF99}}
+ \expandafter\def\csname simpleicon@jovianicon\endcsname {\simpleiconsmap\symbol{"EF9A}}
+ \expandafter\def\csname simpleicon@jpegicon\endcsname {\simpleiconsmap\symbol{"EF9B}}
+ \expandafter\def\csname simpleicon@jqueryicon\endcsname {\simpleiconsmap\symbol{"EF9C}}
+ \expandafter\def\csname simpleicon@jrgroupicon\endcsname {\simpleiconsmap\symbol{"EF9D}}
+ \expandafter\def\csname simpleicon@jsdelivricon\endcsname {\simpleiconsmap\symbol{"EF9E}}
+ \expandafter\def\csname simpleicon@jsfiddleicon\endcsname {\simpleiconsmap\symbol{"EF9F}}
+ \expandafter\def\csname simpleicon@jsonicon\endcsname {\simpleiconsmap\symbol{"EFA0}}
+ \expandafter\def\csname simpleicon@jsonwebtokensicon\endcsname {\simpleiconsmap\symbol{"EFA1}}
+ \expandafter\def\csname simpleicon@jsricon\endcsname {\simpleiconsmap\symbol{"EFA2}}
+ \expandafter\def\csname simpleicon@jssicon\endcsname {\simpleiconsmap\symbol{"EFA3}}
+ \expandafter\def\csname simpleicon@juceicon\endcsname {\simpleiconsmap\symbol{"EFA4}}
+ \expandafter\def\csname simpleicon@juejinicon\endcsname {\simpleiconsmap\symbol{"EFA5}}
+ \expandafter\def\csname simpleicon@jukeicon\endcsname {\simpleiconsmap\symbol{"EFA6}}
+ \expandafter\def\csname simpleicon@juliaicon\endcsname {\simpleiconsmap\symbol{"EFA7}}
+ \expandafter\def\csname simpleicon@junipernetworksicon\endcsname {\simpleiconsmap\symbol{"EFA8}}
+ \expandafter\def\csname simpleicon@junit5icon\endcsname {\simpleiconsmap\symbol{"EFA9}}
+ \expandafter\def\csname simpleicon@jupytericon\endcsname {\simpleiconsmap\symbol{"EFAA}}
+ \expandafter\def\csname simpleicon@justeaticon\endcsname {\simpleiconsmap\symbol{"EFAB}}
+ \expandafter\def\csname simpleicon@justgivingicon\endcsname {\simpleiconsmap\symbol{"EFAC}}
+ \expandafter\def\csname simpleicon@k3sicon\endcsname {\simpleiconsmap\symbol{"EFAD}}
+ \expandafter\def\csname simpleicon@k6icon\endcsname {\simpleiconsmap\symbol{"EFAE}}
+ \expandafter\def\csname simpleicon@kaggleicon\endcsname {\simpleiconsmap\symbol{"EFAF}}
+ \expandafter\def\csname simpleicon@kagiicon\endcsname {\simpleiconsmap\symbol{"EFB0}}
+ \expandafter\def\csname simpleicon@kahooticon\endcsname {\simpleiconsmap\symbol{"EFB1}}
+ \expandafter\def\csname simpleicon@kaiosicon\endcsname {\simpleiconsmap\symbol{"EFB2}}
+ \expandafter\def\csname simpleicon@kakaoicon\endcsname {\simpleiconsmap\symbol{"EFB3}}
+ \expandafter\def\csname simpleicon@kakaotalkicon\endcsname {\simpleiconsmap\symbol{"EFB4}}
+ \expandafter\def\csname simpleicon@kalilinuxicon\endcsname {\simpleiconsmap\symbol{"EFB5}}
+ \expandafter\def\csname simpleicon@kamailioicon\endcsname {\simpleiconsmap\symbol{"EFB6}}
+ \expandafter\def\csname simpleicon@kanikoicon\endcsname {\simpleiconsmap\symbol{"EFB7}}
+ \expandafter\def\csname simpleicon@karlsruherverkehrsverbundicon\endcsname {\simpleiconsmap\symbol{"EFB8}}
+ \expandafter\def\csname simpleicon@kasasmarticon\endcsname {\simpleiconsmap\symbol{"EFB9}}
+ \expandafter\def\csname simpleicon@kashflowicon\endcsname {\simpleiconsmap\symbol{"EFBA}}
+ \expandafter\def\csname simpleicon@kasperskyicon\endcsname {\simpleiconsmap\symbol{"EFBB}}
+ \expandafter\def\csname simpleicon@katacodaicon\endcsname {\simpleiconsmap\symbol{"EFBC}}
+ \expandafter\def\csname simpleicon@katanaicon\endcsname {\simpleiconsmap\symbol{"EFBD}}
+ \expandafter\def\csname simpleicon@kauflandicon\endcsname {\simpleiconsmap\symbol{"EFBE}}
+ \expandafter\def\csname simpleicon@kdeicon\endcsname {\simpleiconsmap\symbol{"EFBF}}
+ \expandafter\def\csname simpleicon@kdenliveicon\endcsname {\simpleiconsmap\symbol{"EFC0}}
+ \expandafter\def\csname simpleicon@kdeplasmaicon\endcsname {\simpleiconsmap\symbol{"EFC1}}
+ \expandafter\def\csname simpleicon@kedroicon\endcsname {\simpleiconsmap\symbol{"EFC2}}
+ \expandafter\def\csname simpleicon@keeneticicon\endcsname {\simpleiconsmap\symbol{"EFC3}}
+ \expandafter\def\csname simpleicon@keepachangelogicon\endcsname {\simpleiconsmap\symbol{"EFC4}}
+ \expandafter\def\csname simpleicon@keepassxcicon\endcsname {\simpleiconsmap\symbol{"EFC5}}
+ \expandafter\def\csname simpleicon@keewebicon\endcsname {\simpleiconsmap\symbol{"EFC6}}
+ \expandafter\def\csname simpleicon@kenticoicon\endcsname {\simpleiconsmap\symbol{"EFC7}}
+ \expandafter\def\csname simpleicon@kerasicon\endcsname {\simpleiconsmap\symbol{"EFC8}}
+ \expandafter\def\csname simpleicon@keybaseicon\endcsname {\simpleiconsmap\symbol{"EFC9}}
+ \expandafter\def\csname simpleicon@keycdnicon\endcsname {\simpleiconsmap\symbol{"EFCA}}
+ \expandafter\def\csname simpleicon@keycloakicon\endcsname {\simpleiconsmap\symbol{"EFCB}}
+ \expandafter\def\csname simpleicon@keystoneicon\endcsname {\simpleiconsmap\symbol{"EFCC}}
+ \expandafter\def\csname simpleicon@kfcicon\endcsname {\simpleiconsmap\symbol{"EFCD}}
+ \expandafter\def\csname simpleicon@khanacademyicon\endcsname {\simpleiconsmap\symbol{"EFCE}}
+ \expandafter\def\csname simpleicon@khronosgroupicon\endcsname {\simpleiconsmap\symbol{"EFCF}}
+ \expandafter\def\csname simpleicon@kiaicon\endcsname {\simpleiconsmap\symbol{"EFD0}}
+ \expandafter\def\csname simpleicon@kibanaicon\endcsname {\simpleiconsmap\symbol{"EFD1}}
+ \expandafter\def\csname simpleicon@kicadicon\endcsname {\simpleiconsmap\symbol{"EFD2}}
+ \expandafter\def\csname simpleicon@kickicon\endcsname {\simpleiconsmap\symbol{"EFD3}}
+ \expandafter\def\csname simpleicon@kickstartericon\endcsname {\simpleiconsmap\symbol{"EFD4}}
+ \expandafter\def\csname simpleicon@kikicon\endcsname {\simpleiconsmap\symbol{"EFD5}}
+ \expandafter\def\csname simpleicon@kingstontechnologyicon\endcsname {\simpleiconsmap\symbol{"EFD6}}
+ \expandafter\def\csname simpleicon@kinopoiskicon\endcsname {\simpleiconsmap\symbol{"EFD7}}
+ \expandafter\def\csname simpleicon@kinstaicon\endcsname {\simpleiconsmap\symbol{"EFD8}}
+ \expandafter\def\csname simpleicon@kirbyicon\endcsname {\simpleiconsmap\symbol{"EFD9}}
+ \expandafter\def\csname simpleicon@kiticon\endcsname {\simpleiconsmap\symbol{"EFDA}}
+ \expandafter\def\csname simpleicon@kitsuicon\endcsname {\simpleiconsmap\symbol{"EFDB}}
+ \expandafter\def\csname simpleicon@klarnaicon\endcsname {\simpleiconsmap\symbol{"EFDC}}
+ \expandafter\def\csname simpleicon@klmicon\endcsname {\simpleiconsmap\symbol{"EFDD}}
+ \expandafter\def\csname simpleicon@klookicon\endcsname {\simpleiconsmap\symbol{"EFDE}}
+ \expandafter\def\csname simpleicon@knativeicon\endcsname {\simpleiconsmap\symbol{"EFDF}}
+ \expandafter\def\csname simpleicon@knexdotjsicon\endcsname {\simpleiconsmap\symbol{"EFE0}}
+ \expandafter\def\csname simpleicon@knimeicon\endcsname {\simpleiconsmap\symbol{"EFE1}}
+ \expandafter\def\csname simpleicon@knipicon\endcsname {\simpleiconsmap\symbol{"EFE2}}
+ \expandafter\def\csname simpleicon@knowledgebaseicon\endcsname {\simpleiconsmap\symbol{"EFE3}}
+ \expandafter\def\csname simpleicon@knownicon\endcsname {\simpleiconsmap\symbol{"EFE4}}
+ \expandafter\def\csname simpleicon@koaicon\endcsname {\simpleiconsmap\symbol{"EFE5}}
+ \expandafter\def\csname simpleicon@kocicon\endcsname {\simpleiconsmap\symbol{"EFE6}}
+ \expandafter\def\csname simpleicon@kodakicon\endcsname {\simpleiconsmap\symbol{"EFE7}}
+ \expandafter\def\csname simpleicon@kodiicon\endcsname {\simpleiconsmap\symbol{"EFE8}}
+ \expandafter\def\csname simpleicon@koenigseggicon\endcsname {\simpleiconsmap\symbol{"EFE9}}
+ \expandafter\def\csname simpleicon@kofaxicon\endcsname {\simpleiconsmap\symbol{"EFEA}}
+ \expandafter\def\csname simpleicon@kofiicon\endcsname {\simpleiconsmap\symbol{"EFEB}}
+ \expandafter\def\csname simpleicon@komooticon\endcsname {\simpleiconsmap\symbol{"EFEC}}
+ \expandafter\def\csname simpleicon@konamiicon\endcsname {\simpleiconsmap\symbol{"EFED}}
+ \expandafter\def\csname simpleicon@kongicon\endcsname {\simpleiconsmap\symbol{"EFEE}}
+ \expandafter\def\csname simpleicon@kongregateicon\endcsname {\simpleiconsmap\symbol{"EFEF}}
+ \expandafter\def\csname simpleicon@konvaicon\endcsname {\simpleiconsmap\symbol{"EFF0}}
+ \expandafter\def\csname simpleicon@kotlinicon\endcsname {\simpleiconsmap\symbol{"EFF1}}
+ \expandafter\def\csname simpleicon@koyebicon\endcsname {\simpleiconsmap\symbol{"EFF2}}
+ \expandafter\def\csname simpleicon@kritaicon\endcsname {\simpleiconsmap\symbol{"EFF3}}
+ \expandafter\def\csname simpleicon@ktmicon\endcsname {\simpleiconsmap\symbol{"EFF4}}
+ \expandafter\def\csname simpleicon@ktoricon\endcsname {\simpleiconsmap\symbol{"EFF5}}
+ \expandafter\def\csname simpleicon@kuaishouicon\endcsname {\simpleiconsmap\symbol{"EFF6}}
+ \expandafter\def\csname simpleicon@kubernetesicon\endcsname {\simpleiconsmap\symbol{"EFF7}}
+ \expandafter\def\csname simpleicon@kubuntuicon\endcsname {\simpleiconsmap\symbol{"EFF8}}
+ \expandafter\def\csname simpleicon@kucoinicon\endcsname {\simpleiconsmap\symbol{"EFF9}}
+ \expandafter\def\csname simpleicon@kumaicon\endcsname {\simpleiconsmap\symbol{"EFFA}}
+ \expandafter\def\csname simpleicon@kununuicon\endcsname {\simpleiconsmap\symbol{"EFFB}}
+ \expandafter\def\csname simpleicon@kuulaicon\endcsname {\simpleiconsmap\symbol{"EFFC}}
+ \expandafter\def\csname simpleicon@kxicon\endcsname {\simpleiconsmap\symbol{"EFFD}}
+ \expandafter\def\csname simpleicon@kyoceraicon\endcsname {\simpleiconsmap\symbol{"EFFE}}
+ \expandafter\def\csname simpleicon@labviewicon\endcsname {\simpleiconsmap\symbol{"EFFF}}
+ \expandafter\def\csname simpleicon@ladaicon\endcsname {\simpleiconsmap\symbol{"F000}}
+ \expandafter\def\csname simpleicon@lamborghiniicon\endcsname {\simpleiconsmap\symbol{"F001}}
+ \expandafter\def\csname simpleicon@landrovericon\endcsname {\simpleiconsmap\symbol{"F002}}
+ \expandafter\def\csname simpleicon@langchainicon\endcsname {\simpleiconsmap\symbol{"F003}}
+ \expandafter\def\csname simpleicon@languagetoolicon\endcsname {\simpleiconsmap\symbol{"F004}}
+ \expandafter\def\csname simpleicon@lapceicon\endcsname {\simpleiconsmap\symbol{"F005}}
+ \expandafter\def\csname simpleicon@laragonicon\endcsname {\simpleiconsmap\symbol{"F006}}
+ \expandafter\def\csname simpleicon@laravelicon\endcsname {\simpleiconsmap\symbol{"F007}}
+ \expandafter\def\csname simpleicon@laravelhorizonicon\endcsname {\simpleiconsmap\symbol{"F008}}
+ \expandafter\def\csname simpleicon@laravelnovaicon\endcsname {\simpleiconsmap\symbol{"F009}}
+ \expandafter\def\csname simpleicon@lastdotfmicon\endcsname {\simpleiconsmap\symbol{"F00A}}
+ \expandafter\def\csname simpleicon@lastpassicon\endcsname {\simpleiconsmap\symbol{"F00B}}
+ \expandafter\def\csname simpleicon@latexicon\endcsname {\simpleiconsmap\symbol{"F00C}}
+ \expandafter\def\csname simpleicon@launchpadicon\endcsname {\simpleiconsmap\symbol{"F00D}}
+ \expandafter\def\csname simpleicon@lazarusicon\endcsname {\simpleiconsmap\symbol{"F00E}}
+ \expandafter\def\csname simpleicon@lazyvimicon\endcsname {\simpleiconsmap\symbol{"F00F}}
+ \expandafter\def\csname simpleicon@lbryicon\endcsname {\simpleiconsmap\symbol{"F010}}
+ \expandafter\def\csname simpleicon@leaderpriceicon\endcsname {\simpleiconsmap\symbol{"F011}}
+ \expandafter\def\csname simpleicon@leafleticon\endcsname {\simpleiconsmap\symbol{"F012}}
+ \expandafter\def\csname simpleicon@leagueoflegendsicon\endcsname {\simpleiconsmap\symbol{"F013}}
+ \expandafter\def\csname simpleicon@leanpubicon\endcsname {\simpleiconsmap\symbol{"F014}}
+ \expandafter\def\csname simpleicon@leetcodeicon\endcsname {\simpleiconsmap\symbol{"F015}}
+ \expandafter\def\csname simpleicon@lefthookicon\endcsname {\simpleiconsmap\symbol{"F016}}
+ \expandafter\def\csname simpleicon@legacygamesicon\endcsname {\simpleiconsmap\symbol{"F017}}
+ \expandafter\def\csname simpleicon@leicaicon\endcsname {\simpleiconsmap\symbol{"F018}}
+ \expandafter\def\csname simpleicon@lemmyicon\endcsname {\simpleiconsmap\symbol{"F019}}
+ \expandafter\def\csname simpleicon@lemonsqueezyicon\endcsname {\simpleiconsmap\symbol{"F01A}}
+ \expandafter\def\csname simpleicon@lenovoicon\endcsname {\simpleiconsmap\symbol{"F01B}}
+ \expandafter\def\csname simpleicon@lensicon\endcsname {\simpleiconsmap\symbol{"F01C}}
+ \expandafter\def\csname simpleicon@leptosicon\endcsname {\simpleiconsmap\symbol{"F01D}}
+ \expandafter\def\csname simpleicon@lequipeicon\endcsname {\simpleiconsmap\symbol{"F01E}}
+ \expandafter\def\csname simpleicon@lernaicon\endcsname {\simpleiconsmap\symbol{"F01F}}
+ \expandafter\def\csname simpleicon@leroymerlinicon\endcsname {\simpleiconsmap\symbol{"F020}}
+ \expandafter\def\csname simpleicon@leslibrairesicon\endcsname {\simpleiconsmap\symbol{"F021}}
+ \expandafter\def\csname simpleicon@lessicon\endcsname {\simpleiconsmap\symbol{"F022}}
+ \expandafter\def\csname simpleicon@letsencrypticon\endcsname {\simpleiconsmap\symbol{"F023}}
+ \expandafter\def\csname simpleicon@letterboxdicon\endcsname {\simpleiconsmap\symbol{"F024}}
+ \expandafter\def\csname simpleicon@levelsdotfyiicon\endcsname {\simpleiconsmap\symbol{"F025}}
+ \expandafter\def\csname simpleicon@lgicon\endcsname {\simpleiconsmap\symbol{"F026}}
+ \expandafter\def\csname simpleicon@liberadotchaticon\endcsname {\simpleiconsmap\symbol{"F027}}
+ \expandafter\def\csname simpleicon@liberapayicon\endcsname {\simpleiconsmap\symbol{"F028}}
+ \expandafter\def\csname simpleicon@librariesdotioicon\endcsname {\simpleiconsmap\symbol{"F029}}
+ \expandafter\def\csname simpleicon@librarythingicon\endcsname {\simpleiconsmap\symbol{"F02A}}
+ \expandafter\def\csname simpleicon@libreofficeicon\endcsname {\simpleiconsmap\symbol{"F02B}}
+ \expandafter\def\csname simpleicon@libreofficebaseicon\endcsname {\simpleiconsmap\symbol{"F02C}}
+ \expandafter\def\csname simpleicon@libreofficecalcicon\endcsname {\simpleiconsmap\symbol{"F02D}}
+ \expandafter\def\csname simpleicon@libreofficedrawicon\endcsname {\simpleiconsmap\symbol{"F02E}}
+ \expandafter\def\csname simpleicon@libreofficeimpressicon\endcsname {\simpleiconsmap\symbol{"F02F}}
+ \expandafter\def\csname simpleicon@libreofficemathicon\endcsname {\simpleiconsmap\symbol{"F030}}
+ \expandafter\def\csname simpleicon@libreofficewritericon\endcsname {\simpleiconsmap\symbol{"F031}}
+ \expandafter\def\csname simpleicon@libretranslateicon\endcsname {\simpleiconsmap\symbol{"F032}}
+ \expandafter\def\csname simpleicon@libretubeicon\endcsname {\simpleiconsmap\symbol{"F033}}
+ \expandafter\def\csname simpleicon@librewolficon\endcsname {\simpleiconsmap\symbol{"F034}}
+ \expandafter\def\csname simpleicon@libuvicon\endcsname {\simpleiconsmap\symbol{"F035}}
+ \expandafter\def\csname simpleicon@lichessicon\endcsname {\simpleiconsmap\symbol{"F036}}
+ \expandafter\def\csname simpleicon@lidlicon\endcsname {\simpleiconsmap\symbol{"F037}}
+ \expandafter\def\csname simpleicon@lifxicon\endcsname {\simpleiconsmap\symbol{"F038}}
+ \expandafter\def\csname simpleicon@lightburnicon\endcsname {\simpleiconsmap\symbol{"F039}}
+ \expandafter\def\csname simpleicon@lighthouseicon\endcsname {\simpleiconsmap\symbol{"F03A}}
+ \expandafter\def\csname simpleicon@lightningicon\endcsname {\simpleiconsmap\symbol{"F03B}}
+ \expandafter\def\csname simpleicon@limesurveyicon\endcsname {\simpleiconsmap\symbol{"F03C}}
+ \expandafter\def\csname simpleicon@lineicon\endcsname {\simpleiconsmap\symbol{"F03D}}
+ \expandafter\def\csname simpleicon@lineageosicon\endcsname {\simpleiconsmap\symbol{"F03E}}
+ \expandafter\def\csname simpleicon@linearicon\endcsname {\simpleiconsmap\symbol{"F03F}}
+ \expandafter\def\csname simpleicon@liningicon\endcsname {\simpleiconsmap\symbol{"F040}}
+ \expandafter\def\csname simpleicon@linkedinicon\endcsname {\simpleiconsmap\symbol{"F041}}
+ \expandafter\def\csname simpleicon@linkerdicon\endcsname {\simpleiconsmap\symbol{"F042}}
+ \expandafter\def\csname simpleicon@linkfireicon\endcsname {\simpleiconsmap\symbol{"F043}}
+ \expandafter\def\csname simpleicon@linksysicon\endcsname {\simpleiconsmap\symbol{"F044}}
+ \expandafter\def\csname simpleicon@linktreeicon\endcsname {\simpleiconsmap\symbol{"F045}}
+ \expandafter\def\csname simpleicon@lintcodeicon\endcsname {\simpleiconsmap\symbol{"F046}}
+ \expandafter\def\csname simpleicon@linuxicon\endcsname {\simpleiconsmap\symbol{"F047}}
+ \expandafter\def\csname simpleicon@linuxcontainersicon\endcsname {\simpleiconsmap\symbol{"F048}}
+ \expandafter\def\csname simpleicon@linuxfoundationicon\endcsname {\simpleiconsmap\symbol{"F049}}
+ \expandafter\def\csname simpleicon@linuxminticon\endcsname {\simpleiconsmap\symbol{"F04A}}
+ \expandafter\def\csname simpleicon@linuxprofessionalinstituteicon\endcsname {\simpleiconsmap\symbol{"F04B}}
+ \expandafter\def\csname simpleicon@linuxservericon\endcsname {\simpleiconsmap\symbol{"F04C}}
+ \expandafter\def\csname simpleicon@lionairicon\endcsname {\simpleiconsmap\symbol{"F04D}}
+ \expandafter\def\csname simpleicon@liquibaseicon\endcsname {\simpleiconsmap\symbol{"F04E}}
+ \expandafter\def\csname simpleicon@listmonkicon\endcsname {\simpleiconsmap\symbol{"F04F}}
+ \expandafter\def\csname simpleicon@liticon\endcsname {\simpleiconsmap\symbol{"F050}}
+ \expandafter\def\csname simpleicon@litecoinicon\endcsname {\simpleiconsmap\symbol{"F051}}
+ \expandafter\def\csname simpleicon@literalicon\endcsname {\simpleiconsmap\symbol{"F052}}
+ \expandafter\def\csname simpleicon@litiengineicon\endcsname {\simpleiconsmap\symbol{"F053}}
+ \expandafter\def\csname simpleicon@livechaticon\endcsname {\simpleiconsmap\symbol{"F054}}
+ \expandafter\def\csname simpleicon@livejournalicon\endcsname {\simpleiconsmap\symbol{"F055}}
+ \expandafter\def\csname simpleicon@livewireicon\endcsname {\simpleiconsmap\symbol{"F056}}
+ \expandafter\def\csname simpleicon@llvmicon\endcsname {\simpleiconsmap\symbol{"F057}}
+ \expandafter\def\csname simpleicon@lmmsicon\endcsname {\simpleiconsmap\symbol{"F058}}
+ \expandafter\def\csname simpleicon@lobstersicon\endcsname {\simpleiconsmap\symbol{"F059}}
+ \expandafter\def\csname simpleicon@localicon\endcsname {\simpleiconsmap\symbol{"F05A}}
+ \expandafter\def\csname simpleicon@lodashicon\endcsname {\simpleiconsmap\symbol{"F05B}}
+ \expandafter\def\csname simpleicon@logitechicon\endcsname {\simpleiconsmap\symbol{"F05C}}
+ \expandafter\def\csname simpleicon@logitechgicon\endcsname {\simpleiconsmap\symbol{"F05D}}
+ \expandafter\def\csname simpleicon@logmeinicon\endcsname {\simpleiconsmap\symbol{"F05E}}
+ \expandafter\def\csname simpleicon@logseqicon\endcsname {\simpleiconsmap\symbol{"F05F}}
+ \expandafter\def\csname simpleicon@logstashicon\endcsname {\simpleiconsmap\symbol{"F060}}
+ \expandafter\def\csname simpleicon@lookericon\endcsname {\simpleiconsmap\symbol{"F061}}
+ \expandafter\def\csname simpleicon@loomicon\endcsname {\simpleiconsmap\symbol{"F062}}
+ \expandafter\def\csname simpleicon@loopicon\endcsname {\simpleiconsmap\symbol{"F063}}
+ \expandafter\def\csname simpleicon@loopbackicon\endcsname {\simpleiconsmap\symbol{"F064}}
+ \expandafter\def\csname simpleicon@lootcrateicon\endcsname {\simpleiconsmap\symbol{"F065}}
+ \expandafter\def\csname simpleicon@lospecicon\endcsname {\simpleiconsmap\symbol{"F066}}
+ \expandafter\def\csname simpleicon@lotpolishairlinesicon\endcsname {\simpleiconsmap\symbol{"F067}}
+ \expandafter\def\csname simpleicon@ltspiceicon\endcsname {\simpleiconsmap\symbol{"F068}}
+ \expandafter\def\csname simpleicon@luaicon\endcsname {\simpleiconsmap\symbol{"F069}}
+ \expandafter\def\csname simpleicon@lubuntuicon\endcsname {\simpleiconsmap\symbol{"F06A}}
+ \expandafter\def\csname simpleicon@luciaicon\endcsname {\simpleiconsmap\symbol{"F06B}}
+ \expandafter\def\csname simpleicon@lucidicon\endcsname {\simpleiconsmap\symbol{"F06C}}
+ \expandafter\def\csname simpleicon@lucideicon\endcsname {\simpleiconsmap\symbol{"F06D}}
+ \expandafter\def\csname simpleicon@ludwigicon\endcsname {\simpleiconsmap\symbol{"F06E}}
+ \expandafter\def\csname simpleicon@lufthansaicon\endcsname {\simpleiconsmap\symbol{"F06F}}
+ \expandafter\def\csname simpleicon@lumenicon\endcsname {\simpleiconsmap\symbol{"F070}}
+ \expandafter\def\csname simpleicon@lunacyicon\endcsname {\simpleiconsmap\symbol{"F071}}
+ \expandafter\def\csname simpleicon@lutrisicon\endcsname {\simpleiconsmap\symbol{"F072}}
+ \expandafter\def\csname simpleicon@lydiaicon\endcsname {\simpleiconsmap\symbol{"F073}}
+ \expandafter\def\csname simpleicon@lyfticon\endcsname {\simpleiconsmap\symbol{"F074}}
+ \expandafter\def\csname simpleicon@maasicon\endcsname {\simpleiconsmap\symbol{"F075}}
+ \expandafter\def\csname simpleicon@macosicon\endcsname {\simpleiconsmap\symbol{"F076}}
+ \expandafter\def\csname simpleicon@macpawicon\endcsname {\simpleiconsmap\symbol{"F077}}
+ \expandafter\def\csname simpleicon@macysicon\endcsname {\simpleiconsmap\symbol{"F078}}
+ \expandafter\def\csname simpleicon@magasinsuicon\endcsname {\simpleiconsmap\symbol{"F079}}
+ \expandafter\def\csname simpleicon@magentoicon\endcsname {\simpleiconsmap\symbol{"F07A}}
+ \expandafter\def\csname simpleicon@magicicon\endcsname {\simpleiconsmap\symbol{"F07B}}
+ \expandafter\def\csname simpleicon@magiskicon\endcsname {\simpleiconsmap\symbol{"F07C}}
+ \expandafter\def\csname simpleicon@mahindraicon\endcsname {\simpleiconsmap\symbol{"F07D}}
+ \expandafter\def\csname simpleicon@mailboxdotorgicon\endcsname {\simpleiconsmap\symbol{"F07E}}
+ \expandafter\def\csname simpleicon@mailchimpicon\endcsname {\simpleiconsmap\symbol{"F07F}}
+ \expandafter\def\csname simpleicon@maildotcomicon\endcsname {\simpleiconsmap\symbol{"F080}}
+ \expandafter\def\csname simpleicon@maildotruicon\endcsname {\simpleiconsmap\symbol{"F081}}
+ \expandafter\def\csname simpleicon@mailgunicon\endcsname {\simpleiconsmap\symbol{"F082}}
+ \expandafter\def\csname simpleicon@mailtrapicon\endcsname {\simpleiconsmap\symbol{"F083}}
+ \expandafter\def\csname simpleicon@mainwpicon\endcsname {\simpleiconsmap\symbol{"F084}}
+ \expandafter\def\csname simpleicon@majorleaguehackingicon\endcsname {\simpleiconsmap\symbol{"F085}}
+ \expandafter\def\csname simpleicon@makeicon\endcsname {\simpleiconsmap\symbol{"F086}}
+ \expandafter\def\csname simpleicon@makerboticon\endcsname {\simpleiconsmap\symbol{"F087}}
+ \expandafter\def\csname simpleicon@malticon\endcsname {\simpleiconsmap\symbol{"F088}}
+ \expandafter\def\csname simpleicon@malwarebytesicon\endcsname {\simpleiconsmap\symbol{"F089}}
+ \expandafter\def\csname simpleicon@mambauiicon\endcsname {\simpleiconsmap\symbol{"F08A}}
+ \expandafter\def\csname simpleicon@mampicon\endcsname {\simpleiconsmap\symbol{"F08B}}
+ \expandafter\def\csname simpleicon@manicon\endcsname {\simpleiconsmap\symbol{"F08C}}
+ \expandafter\def\csname simpleicon@manageiqicon\endcsname {\simpleiconsmap\symbol{"F08D}}
+ \expandafter\def\csname simpleicon@manjaroicon\endcsname {\simpleiconsmap\symbol{"F08E}}
+ \expandafter\def\csname simpleicon@mantineicon\endcsname {\simpleiconsmap\symbol{"F08F}}
+ \expandafter\def\csname simpleicon@mapboxicon\endcsname {\simpleiconsmap\symbol{"F090}}
+ \expandafter\def\csname simpleicon@maplibreicon\endcsname {\simpleiconsmap\symbol{"F091}}
+ \expandafter\def\csname simpleicon@mariadbicon\endcsname {\simpleiconsmap\symbol{"F092}}
+ \expandafter\def\csname simpleicon@mariadbfoundationicon\endcsname {\simpleiconsmap\symbol{"F093}}
+ \expandafter\def\csname simpleicon@markdownicon\endcsname {\simpleiconsmap\symbol{"F094}}
+ \expandafter\def\csname simpleicon@marketoicon\endcsname {\simpleiconsmap\symbol{"F095}}
+ \expandafter\def\csname simpleicon@markoicon\endcsname {\simpleiconsmap\symbol{"F096}}
+ \expandafter\def\csname simpleicon@marriotticon\endcsname {\simpleiconsmap\symbol{"F097}}
+ \expandafter\def\csname simpleicon@marvelappicon\endcsname {\simpleiconsmap\symbol{"F098}}
+ \expandafter\def\csname simpleicon@maseratiicon\endcsname {\simpleiconsmap\symbol{"F099}}
+ \expandafter\def\csname simpleicon@mastercardicon\endcsname {\simpleiconsmap\symbol{"F09A}}
+ \expandafter\def\csname simpleicon@mastercomfigicon\endcsname {\simpleiconsmap\symbol{"F09B}}
+ \expandafter\def\csname simpleicon@mastodonicon\endcsname {\simpleiconsmap\symbol{"F09C}}
+ \expandafter\def\csname simpleicon@materialdesignicon\endcsname {\simpleiconsmap\symbol{"F09D}}
+ \expandafter\def\csname simpleicon@materialdesigniconsicon\endcsname {\simpleiconsmap\symbol{"F09E}}
+ \expandafter\def\csname simpleicon@materialformkdocsicon\endcsname {\simpleiconsmap\symbol{"F09F}}
+ \expandafter\def\csname simpleicon@matillionicon\endcsname {\simpleiconsmap\symbol{"F0A0}}
+ \expandafter\def\csname simpleicon@matomoicon\endcsname {\simpleiconsmap\symbol{"F0A1}}
+ \expandafter\def\csname simpleicon@matrixicon\endcsname {\simpleiconsmap\symbol{"F0A2}}
+ \expandafter\def\csname simpleicon@matterdotjsicon\endcsname {\simpleiconsmap\symbol{"F0A3}}
+ \expandafter\def\csname simpleicon@mattermosticon\endcsname {\simpleiconsmap\symbol{"F0A4}}
+ \expandafter\def\csname simpleicon@matterneticon\endcsname {\simpleiconsmap\symbol{"F0A5}}
+ \expandafter\def\csname simpleicon@mauticicon\endcsname {\simpleiconsmap\symbol{"F0A6}}
+ \expandafter\def\csname simpleicon@maxicon\endcsname {\simpleiconsmap\symbol{"F0A7}}
+ \expandafter\def\csname simpleicon@maxplanckgesellschafticon\endcsname {\simpleiconsmap\symbol{"F0A8}}
+ \expandafter\def\csname simpleicon@maytagicon\endcsname {\simpleiconsmap\symbol{"F0A9}}
+ \expandafter\def\csname simpleicon@mazdaicon\endcsname {\simpleiconsmap\symbol{"F0AA}}
+ \expandafter\def\csname simpleicon@mcafeeicon\endcsname {\simpleiconsmap\symbol{"F0AB}}
+ \expandafter\def\csname simpleicon@mcdonaldsicon\endcsname {\simpleiconsmap\symbol{"F0AC}}
+ \expandafter\def\csname simpleicon@mclarenicon\endcsname {\simpleiconsmap\symbol{"F0AD}}
+ \expandafter\def\csname simpleicon@mdbookicon\endcsname {\simpleiconsmap\symbol{"F0AE}}
+ \expandafter\def\csname simpleicon@mdnwebdocsicon\endcsname {\simpleiconsmap\symbol{"F0AF}}
+ \expandafter\def\csname simpleicon@mdxicon\endcsname {\simpleiconsmap\symbol{"F0B0}}
+ \expandafter\def\csname simpleicon@mediafireicon\endcsname {\simpleiconsmap\symbol{"F0B1}}
+ \expandafter\def\csname simpleicon@mediamarkticon\endcsname {\simpleiconsmap\symbol{"F0B2}}
+ \expandafter\def\csname simpleicon@mediapipeicon\endcsname {\simpleiconsmap\symbol{"F0B3}}
+ \expandafter\def\csname simpleicon@mediatekicon\endcsname {\simpleiconsmap\symbol{"F0B4}}
+ \expandafter\def\csname simpleicon@medibangpainticon\endcsname {\simpleiconsmap\symbol{"F0B5}}
+ \expandafter\def\csname simpleicon@mediumicon\endcsname {\simpleiconsmap\symbol{"F0B6}}
+ \expandafter\def\csname simpleicon@medusaicon\endcsname {\simpleiconsmap\symbol{"F0B7}}
+ \expandafter\def\csname simpleicon@meetupicon\endcsname {\simpleiconsmap\symbol{"F0B8}}
+ \expandafter\def\csname simpleicon@megaicon\endcsname {\simpleiconsmap\symbol{"F0B9}}
+ \expandafter\def\csname simpleicon@meilisearchicon\endcsname {\simpleiconsmap\symbol{"F0BA}}
+ \expandafter\def\csname simpleicon@meituanicon\endcsname {\simpleiconsmap\symbol{"F0BB}}
+ \expandafter\def\csname simpleicon@meizuicon\endcsname {\simpleiconsmap\symbol{"F0BC}}
+ \expandafter\def\csname simpleicon@mendeleyicon\endcsname {\simpleiconsmap\symbol{"F0BD}}
+ \expandafter\def\csname simpleicon@mentorcruiseicon\endcsname {\simpleiconsmap\symbol{"F0BE}}
+ \expandafter\def\csname simpleicon@mercadopagoicon\endcsname {\simpleiconsmap\symbol{"F0BF}}
+ \expandafter\def\csname simpleicon@mercedesicon\endcsname {\simpleiconsmap\symbol{"F0C0}}
+ \expandafter\def\csname simpleicon@merckicon\endcsname {\simpleiconsmap\symbol{"F0C1}}
+ \expandafter\def\csname simpleicon@mercurialicon\endcsname {\simpleiconsmap\symbol{"F0C2}}
+ \expandafter\def\csname simpleicon@mermaidicon\endcsname {\simpleiconsmap\symbol{"F0C3}}
+ \expandafter\def\csname simpleicon@messengericon\endcsname {\simpleiconsmap\symbol{"F0C4}}
+ \expandafter\def\csname simpleicon@metaicon\endcsname {\simpleiconsmap\symbol{"F0C5}}
+ \expandafter\def\csname simpleicon@metabaseicon\endcsname {\simpleiconsmap\symbol{"F0C6}}
+ \expandafter\def\csname simpleicon@metacriticicon\endcsname {\simpleiconsmap\symbol{"F0C7}}
+ \expandafter\def\csname simpleicon@metafiltericon\endcsname {\simpleiconsmap\symbol{"F0C8}}
+ \expandafter\def\csname simpleicon@metasploiticon\endcsname {\simpleiconsmap\symbol{"F0C9}}
+ \expandafter\def\csname simpleicon@meteoricon\endcsname {\simpleiconsmap\symbol{"F0CA}}
+ \expandafter\def\csname simpleicon@metroicon\endcsname {\simpleiconsmap\symbol{"F0CB}}
+ \expandafter\def\csname simpleicon@metrodelaciudaddemexicoicon\endcsname {\simpleiconsmap\symbol{"F0CC}}
+ \expandafter\def\csname simpleicon@metrodemadridicon\endcsname {\simpleiconsmap\symbol{"F0CD}}
+ \expandafter\def\csname simpleicon@metrodeparisicon\endcsname {\simpleiconsmap\symbol{"F0CE}}
+ \expandafter\def\csname simpleicon@meweicon\endcsname {\simpleiconsmap\symbol{"F0CF}}
+ \expandafter\def\csname simpleicon@mgicon\endcsname {\simpleiconsmap\symbol{"F0D0}}
+ \expandafter\def\csname simpleicon@microbiticon\endcsname {\simpleiconsmap\symbol{"F0D1}}
+ \expandafter\def\csname simpleicon@microdotblogicon\endcsname {\simpleiconsmap\symbol{"F0D2}}
+ \expandafter\def\csname simpleicon@microeditoricon\endcsname {\simpleiconsmap\symbol{"F0D3}}
+ \expandafter\def\csname simpleicon@microgeneticsicon\endcsname {\simpleiconsmap\symbol{"F0D4}}
+ \expandafter\def\csname simpleicon@micropythonicon\endcsname {\simpleiconsmap\symbol{"F0D5}}
+ \expandafter\def\csname simpleicon@microstationicon\endcsname {\simpleiconsmap\symbol{"F0D6}}
+ \expandafter\def\csname simpleicon@microstrategyicon\endcsname {\simpleiconsmap\symbol{"F0D7}}
+ \expandafter\def\csname simpleicon@midiicon\endcsname {\simpleiconsmap\symbol{"F0D8}}
+ \expandafter\def\csname simpleicon@migaduicon\endcsname {\simpleiconsmap\symbol{"F0D9}}
+ \expandafter\def\csname simpleicon@mihoyoicon\endcsname {\simpleiconsmap\symbol{"F0DA}}
+ \expandafter\def\csname simpleicon@mikrotikicon\endcsname {\simpleiconsmap\symbol{"F0DB}}
+ \expandafter\def\csname simpleicon@milanoteicon\endcsname {\simpleiconsmap\symbol{"F0DC}}
+ \expandafter\def\csname simpleicon@milvusicon\endcsname {\simpleiconsmap\symbol{"F0DD}}
+ \expandafter\def\csname simpleicon@mindsicon\endcsname {\simpleiconsmap\symbol{"F0DE}}
+ \expandafter\def\csname simpleicon@minetesticon\endcsname {\simpleiconsmap\symbol{"F0DF}}
+ \expandafter\def\csname simpleicon@mingww64icon\endcsname {\simpleiconsmap\symbol{"F0E0}}
+ \expandafter\def\csname simpleicon@miniicon\endcsname {\simpleiconsmap\symbol{"F0E1}}
+ \expandafter\def\csname simpleicon@minioicon\endcsname {\simpleiconsmap\symbol{"F0E2}}
+ \expandafter\def\csname simpleicon@mintlifyicon\endcsname {\simpleiconsmap\symbol{"F0E3}}
+ \expandafter\def\csname simpleicon@minutemailericon\endcsname {\simpleiconsmap\symbol{"F0E4}}
+ \expandafter\def\csname simpleicon@mirahezeicon\endcsname {\simpleiconsmap\symbol{"F0E5}}
+ \expandafter\def\csname simpleicon@miroicon\endcsname {\simpleiconsmap\symbol{"F0E6}}
+ \expandafter\def\csname simpleicon@misskeyicon\endcsname {\simpleiconsmap\symbol{"F0E7}}
+ \expandafter\def\csname simpleicon@mitsubishiicon\endcsname {\simpleiconsmap\symbol{"F0E8}}
+ \expandafter\def\csname simpleicon@mixicon\endcsname {\simpleiconsmap\symbol{"F0E9}}
+ \expandafter\def\csname simpleicon@mixcloudicon\endcsname {\simpleiconsmap\symbol{"F0EA}}
+ \expandafter\def\csname simpleicon@mixpanelicon\endcsname {\simpleiconsmap\symbol{"F0EB}}
+ \expandafter\def\csname simpleicon@mlbicon\endcsname {\simpleiconsmap\symbol{"F0EC}}
+ \expandafter\def\csname simpleicon@mlflowicon\endcsname {\simpleiconsmap\symbol{"F0ED}}
+ \expandafter\def\csname simpleicon@mobxicon\endcsname {\simpleiconsmap\symbol{"F0EE}}
+ \expandafter\def\csname simpleicon@mobxstatetreeicon\endcsname {\simpleiconsmap\symbol{"F0EF}}
+ \expandafter\def\csname simpleicon@mochaicon\endcsname {\simpleiconsmap\symbol{"F0F0}}
+ \expandafter\def\csname simpleicon@mockserviceworkericon\endcsname {\simpleiconsmap\symbol{"F0F1}}
+ \expandafter\def\csname simpleicon@modalicon\endcsname {\simpleiconsmap\symbol{"F0F2}}
+ \expandafter\def\csname simpleicon@modinicon\endcsname {\simpleiconsmap\symbol{"F0F3}}
+ \expandafter\def\csname simpleicon@modrinthicon\endcsname {\simpleiconsmap\symbol{"F0F4}}
+ \expandafter\def\csname simpleicon@modxicon\endcsname {\simpleiconsmap\symbol{"F0F5}}
+ \expandafter\def\csname simpleicon@moleculericon\endcsname {\simpleiconsmap\symbol{"F0F6}}
+ \expandafter\def\csname simpleicon@momenteoicon\endcsname {\simpleiconsmap\symbol{"F0F7}}
+ \expandafter\def\csname simpleicon@moneroicon\endcsname {\simpleiconsmap\symbol{"F0F8}}
+ \expandafter\def\csname simpleicon@moneygramicon\endcsname {\simpleiconsmap\symbol{"F0F9}}
+ \expandafter\def\csname simpleicon@mongodbicon\endcsname {\simpleiconsmap\symbol{"F0FA}}
+ \expandafter\def\csname simpleicon@mongooseicon\endcsname {\simpleiconsmap\symbol{"F0FB}}
+ \expandafter\def\csname simpleicon@mongoosedotwsicon\endcsname {\simpleiconsmap\symbol{"F0FC}}
+ \expandafter\def\csname simpleicon@monicaicon\endcsname {\simpleiconsmap\symbol{"F0FD}}
+ \expandafter\def\csname simpleicon@monkeytieicon\endcsname {\simpleiconsmap\symbol{"F0FE}}
+ \expandafter\def\csname simpleicon@monkeytypeicon\endcsname {\simpleiconsmap\symbol{"F0FF}}
+ \expandafter\def\csname simpleicon@monogameicon\endcsname {\simpleiconsmap\symbol{"F100}}
+ \expandafter\def\csname simpleicon@monoprixicon\endcsname {\simpleiconsmap\symbol{"F101}}
+ \expandafter\def\csname simpleicon@monstericon\endcsname {\simpleiconsmap\symbol{"F102}}
+ \expandafter\def\csname simpleicon@monzoicon\endcsname {\simpleiconsmap\symbol{"F103}}
+ \expandafter\def\csname simpleicon@mooicon\endcsname {\simpleiconsmap\symbol{"F104}}
+ \expandafter\def\csname simpleicon@moodleicon\endcsname {\simpleiconsmap\symbol{"F105}}
+ \expandafter\def\csname simpleicon@moonrepoicon\endcsname {\simpleiconsmap\symbol{"F106}}
+ \expandafter\def\csname simpleicon@moqicon\endcsname {\simpleiconsmap\symbol{"F107}}
+ \expandafter\def\csname simpleicon@moqupsicon\endcsname {\simpleiconsmap\symbol{"F108}}
+ \expandafter\def\csname simpleicon@morrisonsicon\endcsname {\simpleiconsmap\symbol{"F109}}
+ \expandafter\def\csname simpleicon@moscowmetroicon\endcsname {\simpleiconsmap\symbol{"F10A}}
+ \expandafter\def\csname simpleicon@motorolaicon\endcsname {\simpleiconsmap\symbol{"F10B}}
+ \expandafter\def\csname simpleicon@mozillaicon\endcsname {\simpleiconsmap\symbol{"F10C}}
+ \expandafter\def\csname simpleicon@mpvicon\endcsname {\simpleiconsmap\symbol{"F10D}}
+ \expandafter\def\csname simpleicon@mqtticon\endcsname {\simpleiconsmap\symbol{"F10E}}
+ \expandafter\def\csname simpleicon@msiicon\endcsname {\simpleiconsmap\symbol{"F10F}}
+ \expandafter\def\csname simpleicon@msibusinessicon\endcsname {\simpleiconsmap\symbol{"F110}}
+ \expandafter\def\csname simpleicon@mtaicon\endcsname {\simpleiconsmap\symbol{"F111}}
+ \expandafter\def\csname simpleicon@mtricon\endcsname {\simpleiconsmap\symbol{"F112}}
+ \expandafter\def\csname simpleicon@mubiicon\endcsname {\simpleiconsmap\symbol{"F113}}
+ \expandafter\def\csname simpleicon@muiicon\endcsname {\simpleiconsmap\symbol{"F114}}
+ \expandafter\def\csname simpleicon@mulesofticon\endcsname {\simpleiconsmap\symbol{"F115}}
+ \expandafter\def\csname simpleicon@mullericon\endcsname {\simpleiconsmap\symbol{"F116}}
+ \expandafter\def\csname simpleicon@multisimicon\endcsname {\simpleiconsmap\symbol{"F117}}
+ \expandafter\def\csname simpleicon@mumbleicon\endcsname {\simpleiconsmap\symbol{"F118}}
+ \expandafter\def\csname simpleicon@muoicon\endcsname {\simpleiconsmap\symbol{"F119}}
+ \expandafter\def\csname simpleicon@muralicon\endcsname {\simpleiconsmap\symbol{"F11A}}
+ \expandafter\def\csname simpleicon@musescoreicon\endcsname {\simpleiconsmap\symbol{"F11B}}
+ \expandafter\def\csname simpleicon@musicbrainzicon\endcsname {\simpleiconsmap\symbol{"F11C}}
+ \expandafter\def\csname simpleicon@mxlinuxicon\endcsname {\simpleiconsmap\symbol{"F11D}}
+ \expandafter\def\csname simpleicon@myanimelisticon\endcsname {\simpleiconsmap\symbol{"F11E}}
+ \expandafter\def\csname simpleicon@mygeticon\endcsname {\simpleiconsmap\symbol{"F11F}}
+ \expandafter\def\csname simpleicon@myobicon\endcsname {\simpleiconsmap\symbol{"F120}}
+ \expandafter\def\csname simpleicon@myspaceicon\endcsname {\simpleiconsmap\symbol{"F121}}
+ \expandafter\def\csname simpleicon@mysqlicon\endcsname {\simpleiconsmap\symbol{"F122}}
+ \expandafter\def\csname simpleicon@n26icon\endcsname {\simpleiconsmap\symbol{"F123}}
+ \expandafter\def\csname simpleicon@n8nicon\endcsname {\simpleiconsmap\symbol{"F124}}
+ \expandafter\def\csname simpleicon@namebaseicon\endcsname {\simpleiconsmap\symbol{"F125}}
+ \expandafter\def\csname simpleicon@namecheapicon\endcsname {\simpleiconsmap\symbol{"F126}}
+ \expandafter\def\csname simpleicon@namemcicon\endcsname {\simpleiconsmap\symbol{"F127}}
+ \expandafter\def\csname simpleicon@namesiloicon\endcsname {\simpleiconsmap\symbol{"F128}}
+ \expandafter\def\csname simpleicon@namuwikiicon\endcsname {\simpleiconsmap\symbol{"F129}}
+ \expandafter\def\csname simpleicon@nanoicon\endcsname {\simpleiconsmap\symbol{"F12A}}
+ \expandafter\def\csname simpleicon@nanostoresicon\endcsname {\simpleiconsmap\symbol{"F12B}}
+ \expandafter\def\csname simpleicon@nasaicon\endcsname {\simpleiconsmap\symbol{"F12C}}
+ \expandafter\def\csname simpleicon@nationalgridicon\endcsname {\simpleiconsmap\symbol{"F12D}}
+ \expandafter\def\csname simpleicon@nationalrailicon\endcsname {\simpleiconsmap\symbol{"F12E}}
+ \expandafter\def\csname simpleicon@nativescripticon\endcsname {\simpleiconsmap\symbol{"F12F}}
+ \expandafter\def\csname simpleicon@natsdotioicon\endcsname {\simpleiconsmap\symbol{"F130}}
+ \expandafter\def\csname simpleicon@navericon\endcsname {\simpleiconsmap\symbol{"F131}}
+ \expandafter\def\csname simpleicon@nbaicon\endcsname {\simpleiconsmap\symbol{"F132}}
+ \expandafter\def\csname simpleicon@nbbicon\endcsname {\simpleiconsmap\symbol{"F133}}
+ \expandafter\def\csname simpleicon@nbcicon\endcsname {\simpleiconsmap\symbol{"F134}}
+ \expandafter\def\csname simpleicon@ndricon\endcsname {\simpleiconsmap\symbol{"F135}}
+ \expandafter\def\csname simpleicon@nearicon\endcsname {\simpleiconsmap\symbol{"F136}}
+ \expandafter\def\csname simpleicon@nebulaicon\endcsname {\simpleiconsmap\symbol{"F137}}
+ \expandafter\def\csname simpleicon@necicon\endcsname {\simpleiconsmap\symbol{"F138}}
+ \expandafter\def\csname simpleicon@neo4jicon\endcsname {\simpleiconsmap\symbol{"F139}}
+ \expandafter\def\csname simpleicon@neovimicon\endcsname {\simpleiconsmap\symbol{"F13A}}
+ \expandafter\def\csname simpleicon@neptuneicon\endcsname {\simpleiconsmap\symbol{"F13B}}
+ \expandafter\def\csname simpleicon@nestjsicon\endcsname {\simpleiconsmap\symbol{"F13C}}
+ \expandafter\def\csname simpleicon@netappicon\endcsname {\simpleiconsmap\symbol{"F13D}}
+ \expandafter\def\csname simpleicon@netbsdicon\endcsname {\simpleiconsmap\symbol{"F13E}}
+ \expandafter\def\csname simpleicon@netcupicon\endcsname {\simpleiconsmap\symbol{"F13F}}
+ \expandafter\def\csname simpleicon@netdataicon\endcsname {\simpleiconsmap\symbol{"F140}}
+ \expandafter\def\csname simpleicon@neteasecloudmusicicon\endcsname {\simpleiconsmap\symbol{"F141}}
+ \expandafter\def\csname simpleicon@netflixicon\endcsname {\simpleiconsmap\symbol{"F142}}
+ \expandafter\def\csname simpleicon@netgearicon\endcsname {\simpleiconsmap\symbol{"F143}}
+ \expandafter\def\csname simpleicon@netlifyicon\endcsname {\simpleiconsmap\symbol{"F144}}
+ \expandafter\def\csname simpleicon@netteicon\endcsname {\simpleiconsmap\symbol{"F145}}
+ \expandafter\def\csname simpleicon@nettoicon\endcsname {\simpleiconsmap\symbol{"F146}}
+ \expandafter\def\csname simpleicon@neutralinojsicon\endcsname {\simpleiconsmap\symbol{"F147}}
+ \expandafter\def\csname simpleicon@newbalanceicon\endcsname {\simpleiconsmap\symbol{"F148}}
+ \expandafter\def\csname simpleicon@neweggicon\endcsname {\simpleiconsmap\symbol{"F149}}
+ \expandafter\def\csname simpleicon@newjapanprowrestlingicon\endcsname {\simpleiconsmap\symbol{"F14A}}
+ \expandafter\def\csname simpleicon@newrelicicon\endcsname {\simpleiconsmap\symbol{"F14B}}
+ \expandafter\def\csname simpleicon@newyorktimesicon\endcsname {\simpleiconsmap\symbol{"F14C}}
+ \expandafter\def\csname simpleicon@nexonicon\endcsname {\simpleiconsmap\symbol{"F14D}}
+ \expandafter\def\csname simpleicon@nextbilliondotaiicon\endcsname {\simpleiconsmap\symbol{"F14E}}
+ \expandafter\def\csname simpleicon@nextcloudicon\endcsname {\simpleiconsmap\symbol{"F14F}}
+ \expandafter\def\csname simpleicon@nextdnsicon\endcsname {\simpleiconsmap\symbol{"F150}}
+ \expandafter\def\csname simpleicon@nextdooricon\endcsname {\simpleiconsmap\symbol{"F151}}
+ \expandafter\def\csname simpleicon@nextdotjsicon\endcsname {\simpleiconsmap\symbol{"F152}}
+ \expandafter\def\csname simpleicon@nextraicon\endcsname {\simpleiconsmap\symbol{"F153}}
+ \expandafter\def\csname simpleicon@nextuiicon\endcsname {\simpleiconsmap\symbol{"F154}}
+ \expandafter\def\csname simpleicon@nexusmodsicon\endcsname {\simpleiconsmap\symbol{"F155}}
+ \expandafter\def\csname simpleicon@nfcicon\endcsname {\simpleiconsmap\symbol{"F156}}
+ \expandafter\def\csname simpleicon@nginxicon\endcsname {\simpleiconsmap\symbol{"F157}}
+ \expandafter\def\csname simpleicon@nginxproxymanagericon\endcsname {\simpleiconsmap\symbol{"F158}}
+ \expandafter\def\csname simpleicon@ngrokicon\endcsname {\simpleiconsmap\symbol{"F159}}
+ \expandafter\def\csname simpleicon@ngrxicon\endcsname {\simpleiconsmap\symbol{"F15A}}
+ \expandafter\def\csname simpleicon@nhlicon\endcsname {\simpleiconsmap\symbol{"F15B}}
+ \expandafter\def\csname simpleicon@nicehashicon\endcsname {\simpleiconsmap\symbol{"F15C}}
+ \expandafter\def\csname simpleicon@niconicoicon\endcsname {\simpleiconsmap\symbol{"F15D}}
+ \expandafter\def\csname simpleicon@nikeicon\endcsname {\simpleiconsmap\symbol{"F15E}}
+ \expandafter\def\csname simpleicon@nikonicon\endcsname {\simpleiconsmap\symbol{"F15F}}
+ \expandafter\def\csname simpleicon@nimicon\endcsname {\simpleiconsmap\symbol{"F160}}
+ \expandafter\def\csname simpleicon@nintendoicon\endcsname {\simpleiconsmap\symbol{"F161}}
+ \expandafter\def\csname simpleicon@nintendo3dsicon\endcsname {\simpleiconsmap\symbol{"F162}}
+ \expandafter\def\csname simpleicon@nintendogamecubeicon\endcsname {\simpleiconsmap\symbol{"F163}}
+ \expandafter\def\csname simpleicon@nintendoswitchicon\endcsname {\simpleiconsmap\symbol{"F164}}
+ \expandafter\def\csname simpleicon@nissanicon\endcsname {\simpleiconsmap\symbol{"F165}}
+ \expandafter\def\csname simpleicon@nixosicon\endcsname {\simpleiconsmap\symbol{"F166}}
+ \expandafter\def\csname simpleicon@nodedotjsicon\endcsname {\simpleiconsmap\symbol{"F167}}
+ \expandafter\def\csname simpleicon@nodemonicon\endcsname {\simpleiconsmap\symbol{"F168}}
+ \expandafter\def\csname simpleicon@noderedicon\endcsname {\simpleiconsmap\symbol{"F169}}
+ \expandafter\def\csname simpleicon@nokiaicon\endcsname {\simpleiconsmap\symbol{"F16A}}
+ \expandafter\def\csname simpleicon@nomadicon\endcsname {\simpleiconsmap\symbol{"F16B}}
+ \expandafter\def\csname simpleicon@norcoicon\endcsname {\simpleiconsmap\symbol{"F16C}}
+ \expandafter\def\csname simpleicon@nordicsemiconductoricon\endcsname {\simpleiconsmap\symbol{"F16D}}
+ \expandafter\def\csname simpleicon@nordvpnicon\endcsname {\simpleiconsmap\symbol{"F16E}}
+ \expandafter\def\csname simpleicon@normalizedotcssicon\endcsname {\simpleiconsmap\symbol{"F16F}}
+ \expandafter\def\csname simpleicon@nortonicon\endcsname {\simpleiconsmap\symbol{"F170}}
+ \expandafter\def\csname simpleicon@norwegianicon\endcsname {\simpleiconsmap\symbol{"F171}}
+ \expandafter\def\csname simpleicon@notepadplusplusicon\endcsname {\simpleiconsmap\symbol{"F172}}
+ \expandafter\def\csname simpleicon@notionicon\endcsname {\simpleiconsmap\symbol{"F173}}
+ \expandafter\def\csname simpleicon@notisticon\endcsname {\simpleiconsmap\symbol{"F174}}
+ \expandafter\def\csname simpleicon@nounprojecticon\endcsname {\simpleiconsmap\symbol{"F175}}
+ \expandafter\def\csname simpleicon@novuicon\endcsname {\simpleiconsmap\symbol{"F176}}
+ \expandafter\def\csname simpleicon@nowicon\endcsname {\simpleiconsmap\symbol{"F177}}
+ \expandafter\def\csname simpleicon@npmicon\endcsname {\simpleiconsmap\symbol{"F178}}
+ \expandafter\def\csname simpleicon@nrwlicon\endcsname {\simpleiconsmap\symbol{"F179}}
+ \expandafter\def\csname simpleicon@nsisicon\endcsname {\simpleiconsmap\symbol{"F17A}}
+ \expandafter\def\csname simpleicon@ntfyicon\endcsname {\simpleiconsmap\symbol{"F17B}}
+ \expandafter\def\csname simpleicon@nubankicon\endcsname {\simpleiconsmap\symbol{"F17C}}
+ \expandafter\def\csname simpleicon@nucleoicon\endcsname {\simpleiconsmap\symbol{"F17D}}
+ \expandafter\def\csname simpleicon@nugeticon\endcsname {\simpleiconsmap\symbol{"F17E}}
+ \expandafter\def\csname simpleicon@nukeicon\endcsname {\simpleiconsmap\symbol{"F17F}}
+ \expandafter\def\csname simpleicon@numbaicon\endcsname {\simpleiconsmap\symbol{"F180}}
+ \expandafter\def\csname simpleicon@numpyicon\endcsname {\simpleiconsmap\symbol{"F181}}
+ \expandafter\def\csname simpleicon@nunjucksicon\endcsname {\simpleiconsmap\symbol{"F182}}
+ \expandafter\def\csname simpleicon@nushellicon\endcsname {\simpleiconsmap\symbol{"F183}}
+ \expandafter\def\csname simpleicon@nutanixicon\endcsname {\simpleiconsmap\symbol{"F184}}
+ \expandafter\def\csname simpleicon@nuxtdotjsicon\endcsname {\simpleiconsmap\symbol{"F185}}
+ \expandafter\def\csname simpleicon@nvidiaicon\endcsname {\simpleiconsmap\symbol{"F186}}
+ \expandafter\def\csname simpleicon@nvmicon\endcsname {\simpleiconsmap\symbol{"F187}}
+ \expandafter\def\csname simpleicon@nxicon\endcsname {\simpleiconsmap\symbol{"F188}}
+ \expandafter\def\csname simpleicon@nxpicon\endcsname {\simpleiconsmap\symbol{"F189}}
+ \expandafter\def\csname simpleicon@nzxticon\endcsname {\simpleiconsmap\symbol{"F18A}}
+ \expandafter\def\csname simpleicon@o2icon\endcsname {\simpleiconsmap\symbol{"F18B}}
+ \expandafter\def\csname simpleicon@observableicon\endcsname {\simpleiconsmap\symbol{"F18C}}
+ \expandafter\def\csname simpleicon@obsidianicon\endcsname {\simpleiconsmap\symbol{"F18D}}
+ \expandafter\def\csname simpleicon@obsstudioicon\endcsname {\simpleiconsmap\symbol{"F18E}}
+ \expandafter\def\csname simpleicon@ocamlicon\endcsname {\simpleiconsmap\symbol{"F18F}}
+ \expandafter\def\csname simpleicon@oclificon\endcsname {\simpleiconsmap\symbol{"F190}}
+ \expandafter\def\csname simpleicon@octanerendericon\endcsname {\simpleiconsmap\symbol{"F191}}
+ \expandafter\def\csname simpleicon@octaveicon\endcsname {\simpleiconsmap\symbol{"F192}}
+ \expandafter\def\csname simpleicon@octobercmsicon\endcsname {\simpleiconsmap\symbol{"F193}}
+ \expandafter\def\csname simpleicon@octoprinticon\endcsname {\simpleiconsmap\symbol{"F194}}
+ \expandafter\def\csname simpleicon@octopusdeployicon\endcsname {\simpleiconsmap\symbol{"F195}}
+ \expandafter\def\csname simpleicon@oculusicon\endcsname {\simpleiconsmap\symbol{"F196}}
+ \expandafter\def\csname simpleicon@odnoklassnikiicon\endcsname {\simpleiconsmap\symbol{"F197}}
+ \expandafter\def\csname simpleicon@odooicon\endcsname {\simpleiconsmap\symbol{"F198}}
+ \expandafter\def\csname simpleicon@odyseeicon\endcsname {\simpleiconsmap\symbol{"F199}}
+ \expandafter\def\csname simpleicon@ohdearicon\endcsname {\simpleiconsmap\symbol{"F19A}}
+ \expandafter\def\csname simpleicon@okcupidicon\endcsname {\simpleiconsmap\symbol{"F19B}}
+ \expandafter\def\csname simpleicon@oktaicon\endcsname {\simpleiconsmap\symbol{"F19C}}
+ \expandafter\def\csname simpleicon@okxicon\endcsname {\simpleiconsmap\symbol{"F19D}}
+ \expandafter\def\csname simpleicon@ollamaicon\endcsname {\simpleiconsmap\symbol{"F19E}}
+ \expandafter\def\csname simpleicon@oneplusicon\endcsname {\simpleiconsmap\symbol{"F19F}}
+ \expandafter\def\csname simpleicon@onlyfansicon\endcsname {\simpleiconsmap\symbol{"F1A0}}
+ \expandafter\def\csname simpleicon@onlyofficeicon\endcsname {\simpleiconsmap\symbol{"F1A1}}
+ \expandafter\def\csname simpleicon@onnxicon\endcsname {\simpleiconsmap\symbol{"F1A2}}
+ \expandafter\def\csname simpleicon@onstaricon\endcsname {\simpleiconsmap\symbol{"F1A3}}
+ \expandafter\def\csname simpleicon@opelicon\endcsname {\simpleiconsmap\symbol{"F1A4}}
+ \expandafter\def\csname simpleicon@openaccessicon\endcsname {\simpleiconsmap\symbol{"F1A5}}
+ \expandafter\def\csname simpleicon@openaiicon\endcsname {\simpleiconsmap\symbol{"F1A6}}
+ \expandafter\def\csname simpleicon@openaigymicon\endcsname {\simpleiconsmap\symbol{"F1A7}}
+ \expandafter\def\csname simpleicon@openapiinitiativeicon\endcsname {\simpleiconsmap\symbol{"F1A8}}
+ \expandafter\def\csname simpleicon@openbadgesicon\endcsname {\simpleiconsmap\symbol{"F1A9}}
+ \expandafter\def\csname simpleicon@openbsdicon\endcsname {\simpleiconsmap\symbol{"F1AA}}
+ \expandafter\def\csname simpleicon@openbugbountyicon\endcsname {\simpleiconsmap\symbol{"F1AB}}
+ \expandafter\def\csname simpleicon@opencollectiveicon\endcsname {\simpleiconsmap\symbol{"F1AC}}
+ \expandafter\def\csname simpleicon@opencontainersinitiativeicon\endcsname {\simpleiconsmap\symbol{"F1AD}}
+ \expandafter\def\csname simpleicon@opencvicon\endcsname {\simpleiconsmap\symbol{"F1AE}}
+ \expandafter\def\csname simpleicon@openfaasicon\endcsname {\simpleiconsmap\symbol{"F1AF}}
+ \expandafter\def\csname simpleicon@openglicon\endcsname {\simpleiconsmap\symbol{"F1B0}}
+ \expandafter\def\csname simpleicon@openhabicon\endcsname {\simpleiconsmap\symbol{"F1B1}}
+ \expandafter\def\csname simpleicon@openidicon\endcsname {\simpleiconsmap\symbol{"F1B2}}
+ \expandafter\def\csname simpleicon@openjdkicon\endcsname {\simpleiconsmap\symbol{"F1B3}}
+ \expandafter\def\csname simpleicon@openjsfoundationicon\endcsname {\simpleiconsmap\symbol{"F1B4}}
+ \expandafter\def\csname simpleicon@openlayersicon\endcsname {\simpleiconsmap\symbol{"F1B5}}
+ \expandafter\def\csname simpleicon@openmediavaulticon\endcsname {\simpleiconsmap\symbol{"F1B6}}
+ \expandafter\def\csname simpleicon@openminedicon\endcsname {\simpleiconsmap\symbol{"F1B7}}
+ \expandafter\def\csname simpleicon@opennebulaicon\endcsname {\simpleiconsmap\symbol{"F1B8}}
+ \expandafter\def\csname simpleicon@openprojecticon\endcsname {\simpleiconsmap\symbol{"F1B9}}
+ \expandafter\def\csname simpleicon@openscadicon\endcsname {\simpleiconsmap\symbol{"F1BA}}
+ \expandafter\def\csname simpleicon@openseaicon\endcsname {\simpleiconsmap\symbol{"F1BB}}
+ \expandafter\def\csname simpleicon@opensearchicon\endcsname {\simpleiconsmap\symbol{"F1BC}}
+ \expandafter\def\csname simpleicon@opensourcehardwareicon\endcsname {\simpleiconsmap\symbol{"F1BD}}
+ \expandafter\def\csname simpleicon@opensourceinitiativeicon\endcsname {\simpleiconsmap\symbol{"F1BE}}
+ \expandafter\def\csname simpleicon@opensslicon\endcsname {\simpleiconsmap\symbol{"F1BF}}
+ \expandafter\def\csname simpleicon@openstackicon\endcsname {\simpleiconsmap\symbol{"F1C0}}
+ \expandafter\def\csname simpleicon@openstreetmapicon\endcsname {\simpleiconsmap\symbol{"F1C1}}
+ \expandafter\def\csname simpleicon@opensuseicon\endcsname {\simpleiconsmap\symbol{"F1C2}}
+ \expandafter\def\csname simpleicon@opentelemetryicon\endcsname {\simpleiconsmap\symbol{"F1C3}}
+ \expandafter\def\csname simpleicon@opentexticon\endcsname {\simpleiconsmap\symbol{"F1C4}}
+ \expandafter\def\csname simpleicon@opentofuicon\endcsname {\simpleiconsmap\symbol{"F1C5}}
+ \expandafter\def\csname simpleicon@openverseicon\endcsname {\simpleiconsmap\symbol{"F1C6}}
+ \expandafter\def\csname simpleicon@openvpnicon\endcsname {\simpleiconsmap\symbol{"F1C7}}
+ \expandafter\def\csname simpleicon@openwrticon\endcsname {\simpleiconsmap\symbol{"F1C8}}
+ \expandafter\def\csname simpleicon@openzeppelinicon\endcsname {\simpleiconsmap\symbol{"F1C9}}
+ \expandafter\def\csname simpleicon@openzfsicon\endcsname {\simpleiconsmap\symbol{"F1CA}}
+ \expandafter\def\csname simpleicon@operaicon\endcsname {\simpleiconsmap\symbol{"F1CB}}
+ \expandafter\def\csname simpleicon@operagxicon\endcsname {\simpleiconsmap\symbol{"F1CC}}
+ \expandafter\def\csname simpleicon@opnsenseicon\endcsname {\simpleiconsmap\symbol{"F1CD}}
+ \expandafter\def\csname simpleicon@oppoicon\endcsname {\simpleiconsmap\symbol{"F1CE}}
+ \expandafter\def\csname simpleicon@opsgenieicon\endcsname {\simpleiconsmap\symbol{"F1CF}}
+ \expandafter\def\csname simpleicon@opslevelicon\endcsname {\simpleiconsmap\symbol{"F1D0}}
+ \expandafter\def\csname simpleicon@optimismicon\endcsname {\simpleiconsmap\symbol{"F1D1}}
+ \expandafter\def\csname simpleicon@oracleicon\endcsname {\simpleiconsmap\symbol{"F1D2}}
+ \expandafter\def\csname simpleicon@orangeicon\endcsname {\simpleiconsmap\symbol{"F1D3}}
+ \expandafter\def\csname simpleicon@orcidicon\endcsname {\simpleiconsmap\symbol{"F1D4}}
+ \expandafter\def\csname simpleicon@oreillyicon\endcsname {\simpleiconsmap\symbol{"F1D5}}
+ \expandafter\def\csname simpleicon@orgicon\endcsname {\simpleiconsmap\symbol{"F1D6}}
+ \expandafter\def\csname simpleicon@organicmapsicon\endcsname {\simpleiconsmap\symbol{"F1D7}}
+ \expandafter\def\csname simpleicon@originicon\endcsname {\simpleiconsmap\symbol{"F1D8}}
+ \expandafter\def\csname simpleicon@osanoicon\endcsname {\simpleiconsmap\symbol{"F1D9}}
+ \expandafter\def\csname simpleicon@osficon\endcsname {\simpleiconsmap\symbol{"F1DA}}
+ \expandafter\def\csname simpleicon@osgeoicon\endcsname {\simpleiconsmap\symbol{"F1DB}}
+ \expandafter\def\csname simpleicon@oshkoshicon\endcsname {\simpleiconsmap\symbol{"F1DC}}
+ \expandafter\def\csname simpleicon@osmcicon\endcsname {\simpleiconsmap\symbol{"F1DD}}
+ \expandafter\def\csname simpleicon@osuicon\endcsname {\simpleiconsmap\symbol{"F1DE}}
+ \expandafter\def\csname simpleicon@ottoicon\endcsname {\simpleiconsmap\symbol{"F1DF}}
+ \expandafter\def\csname simpleicon@outlineicon\endcsname {\simpleiconsmap\symbol{"F1E0}}
+ \expandafter\def\csname simpleicon@overcasticon\endcsname {\simpleiconsmap\symbol{"F1E1}}
+ \expandafter\def\csname simpleicon@overleaficon\endcsname {\simpleiconsmap\symbol{"F1E2}}
+ \expandafter\def\csname simpleicon@ovhicon\endcsname {\simpleiconsmap\symbol{"F1E3}}
+ \expandafter\def\csname simpleicon@owaspicon\endcsname {\simpleiconsmap\symbol{"F1E4}}
+ \expandafter\def\csname simpleicon@owncloudicon\endcsname {\simpleiconsmap\symbol{"F1E5}}
+ \expandafter\def\csname simpleicon@oxygenicon\endcsname {\simpleiconsmap\symbol{"F1E6}}
+ \expandafter\def\csname simpleicon@oyoicon\endcsname {\simpleiconsmap\symbol{"F1E7}}
+ \expandafter\def\csname simpleicon@p5dotjsicon\endcsname {\simpleiconsmap\symbol{"F1E8}}
+ \expandafter\def\csname simpleicon@packagisticon\endcsname {\simpleiconsmap\symbol{"F1E9}}
+ \expandafter\def\csname simpleicon@packericon\endcsname {\simpleiconsmap\symbol{"F1EA}}
+ \expandafter\def\csname simpleicon@packticon\endcsname {\simpleiconsmap\symbol{"F1EB}}
+ \expandafter\def\csname simpleicon@paddleicon\endcsname {\simpleiconsmap\symbol{"F1EC}}
+ \expandafter\def\csname simpleicon@paddlepaddleicon\endcsname {\simpleiconsmap\symbol{"F1ED}}
+ \expandafter\def\csname simpleicon@paddypowericon\endcsname {\simpleiconsmap\symbol{"F1EE}}
+ \expandafter\def\csname simpleicon@pagekiticon\endcsname {\simpleiconsmap\symbol{"F1EF}}
+ \expandafter\def\csname simpleicon@pagerdutyicon\endcsname {\simpleiconsmap\symbol{"F1F0}}
+ \expandafter\def\csname simpleicon@pagespeedinsightsicon\endcsname {\simpleiconsmap\symbol{"F1F1}}
+ \expandafter\def\csname simpleicon@pagseguroicon\endcsname {\simpleiconsmap\symbol{"F1F2}}
+ \expandafter\def\csname simpleicon@palantiricon\endcsname {\simpleiconsmap\symbol{"F1F3}}
+ \expandafter\def\csname simpleicon@paloaltonetworksicon\endcsname {\simpleiconsmap\symbol{"F1F4}}
+ \expandafter\def\csname simpleicon@paloaltosoftwareicon\endcsname {\simpleiconsmap\symbol{"F1F5}}
+ \expandafter\def\csname simpleicon@panasonicicon\endcsname {\simpleiconsmap\symbol{"F1F6}}
+ \expandafter\def\csname simpleicon@pandasicon\endcsname {\simpleiconsmap\symbol{"F1F7}}
+ \expandafter\def\csname simpleicon@pandoraicon\endcsname {\simpleiconsmap\symbol{"F1F8}}
+ \expandafter\def\csname simpleicon@pantheonicon\endcsname {\simpleiconsmap\symbol{"F1F9}}
+ \expandafter\def\csname simpleicon@paperlessngxicon\endcsname {\simpleiconsmap\symbol{"F1FA}}
+ \expandafter\def\csname simpleicon@paperspaceicon\endcsname {\simpleiconsmap\symbol{"F1FB}}
+ \expandafter\def\csname simpleicon@paperswithcodeicon\endcsname {\simpleiconsmap\symbol{"F1FC}}
+ \expandafter\def\csname simpleicon@paramountplusicon\endcsname {\simpleiconsmap\symbol{"F1FD}}
+ \expandafter\def\csname simpleicon@paritysubstrateicon\endcsname {\simpleiconsmap\symbol{"F1FE}}
+ \expandafter\def\csname simpleicon@parrotsecurityicon\endcsname {\simpleiconsmap\symbol{"F1FF}}
+ \expandafter\def\csname simpleicon@parsedotlyicon\endcsname {\simpleiconsmap\symbol{"F200}}
+ \expandafter\def\csname simpleicon@passporticon\endcsname {\simpleiconsmap\symbol{"F201}}
+ \expandafter\def\csname simpleicon@pastebinicon\endcsname {\simpleiconsmap\symbol{"F202}}
+ \expandafter\def\csname simpleicon@patreonicon\endcsname {\simpleiconsmap\symbol{"F203}}
+ \expandafter\def\csname simpleicon@paychexicon\endcsname {\simpleiconsmap\symbol{"F204}}
+ \expandafter\def\csname simpleicon@payhipicon\endcsname {\simpleiconsmap\symbol{"F205}}
+ \expandafter\def\csname simpleicon@payloadcmsicon\endcsname {\simpleiconsmap\symbol{"F206}}
+ \expandafter\def\csname simpleicon@payoneericon\endcsname {\simpleiconsmap\symbol{"F207}}
+ \expandafter\def\csname simpleicon@paypalicon\endcsname {\simpleiconsmap\symbol{"F208}}
+ \expandafter\def\csname simpleicon@paytmicon\endcsname {\simpleiconsmap\symbol{"F209}}
+ \expandafter\def\csname simpleicon@pcgamingwikiicon\endcsname {\simpleiconsmap\symbol{"F20A}}
+ \expandafter\def\csname simpleicon@pdmicon\endcsname {\simpleiconsmap\symbol{"F20B}}
+ \expandafter\def\csname simpleicon@pdqicon\endcsname {\simpleiconsmap\symbol{"F20C}}
+ \expandafter\def\csname simpleicon@peakdesignicon\endcsname {\simpleiconsmap\symbol{"F20D}}
+ \expandafter\def\csname simpleicon@pearsonicon\endcsname {\simpleiconsmap\symbol{"F20E}}
+ \expandafter\def\csname simpleicon@peerlisticon\endcsname {\simpleiconsmap\symbol{"F20F}}
+ \expandafter\def\csname simpleicon@peertubeicon\endcsname {\simpleiconsmap\symbol{"F210}}
+ \expandafter\def\csname simpleicon@pegasusairlinesicon\endcsname {\simpleiconsmap\symbol{"F211}}
+ \expandafter\def\csname simpleicon@pelicanicon\endcsname {\simpleiconsmap\symbol{"F212}}
+ \expandafter\def\csname simpleicon@pelotonicon\endcsname {\simpleiconsmap\symbol{"F213}}
+ \expandafter\def\csname simpleicon@pennyicon\endcsname {\simpleiconsmap\symbol{"F214}}
+ \expandafter\def\csname simpleicon@penpoticon\endcsname {\simpleiconsmap\symbol{"F215}}
+ \expandafter\def\csname simpleicon@percyicon\endcsname {\simpleiconsmap\symbol{"F216}}
+ \expandafter\def\csname simpleicon@perforceicon\endcsname {\simpleiconsmap\symbol{"F217}}
+ \expandafter\def\csname simpleicon@perlicon\endcsname {\simpleiconsmap\symbol{"F218}}
+ \expandafter\def\csname simpleicon@perplexityicon\endcsname {\simpleiconsmap\symbol{"F219}}
+ \expandafter\def\csname simpleicon@persistenticon\endcsname {\simpleiconsmap\symbol{"F21A}}
+ \expandafter\def\csname simpleicon@personioicon\endcsname {\simpleiconsmap\symbol{"F21B}}
+ \expandafter\def\csname simpleicon@petsathomeicon\endcsname {\simpleiconsmap\symbol{"F21C}}
+ \expandafter\def\csname simpleicon@peugeoticon\endcsname {\simpleiconsmap\symbol{"F21D}}
+ \expandafter\def\csname simpleicon@pexelsicon\endcsname {\simpleiconsmap\symbol{"F21E}}
+ \expandafter\def\csname simpleicon@pfsenseicon\endcsname {\simpleiconsmap\symbol{"F21F}}
+ \expandafter\def\csname simpleicon@phabricatoricon\endcsname {\simpleiconsmap\symbol{"F220}}
+ \expandafter\def\csname simpleicon@philipshueicon\endcsname {\simpleiconsmap\symbol{"F221}}
+ \expandafter\def\csname simpleicon@phoenixframeworkicon\endcsname {\simpleiconsmap\symbol{"F222}}
+ \expandafter\def\csname simpleicon@phonepeicon\endcsname {\simpleiconsmap\symbol{"F223}}
+ \expandafter\def\csname simpleicon@phosphoriconsicon\endcsname {\simpleiconsmap\symbol{"F224}}
+ \expandafter\def\csname simpleicon@photobucketicon\endcsname {\simpleiconsmap\symbol{"F225}}
+ \expandafter\def\csname simpleicon@photocrowdicon\endcsname {\simpleiconsmap\symbol{"F226}}
+ \expandafter\def\csname simpleicon@photonicon\endcsname {\simpleiconsmap\symbol{"F227}}
+ \expandafter\def\csname simpleicon@photopeaicon\endcsname {\simpleiconsmap\symbol{"F228}}
+ \expandafter\def\csname simpleicon@phpicon\endcsname {\simpleiconsmap\symbol{"F229}}
+ \expandafter\def\csname simpleicon@phpmyadminicon\endcsname {\simpleiconsmap\symbol{"F22A}}
+ \expandafter\def\csname simpleicon@phpstormicon\endcsname {\simpleiconsmap\symbol{"F22B}}
+ \expandafter\def\csname simpleicon@piaggiogroupicon\endcsname {\simpleiconsmap\symbol{"F22C}}
+ \expandafter\def\csname simpleicon@piaproicon\endcsname {\simpleiconsmap\symbol{"F22D}}
+ \expandafter\def\csname simpleicon@picardsurgelesicon\endcsname {\simpleiconsmap\symbol{"F22E}}
+ \expandafter\def\csname simpleicon@picartodottvicon\endcsname {\simpleiconsmap\symbol{"F22F}}
+ \expandafter\def\csname simpleicon@picnicicon\endcsname {\simpleiconsmap\symbol{"F230}}
+ \expandafter\def\csname simpleicon@picpayicon\endcsname {\simpleiconsmap\symbol{"F231}}
+ \expandafter\def\csname simpleicon@picrewicon\endcsname {\simpleiconsmap\symbol{"F232}}
+ \expandafter\def\csname simpleicon@picxyicon\endcsname {\simpleiconsmap\symbol{"F233}}
+ \expandafter\def\csname simpleicon@piholeicon\endcsname {\simpleiconsmap\symbol{"F234}}
+ \expandafter\def\csname simpleicon@pimcoreicon\endcsname {\simpleiconsmap\symbol{"F235}}
+ \expandafter\def\csname simpleicon@pinboardicon\endcsname {\simpleiconsmap\symbol{"F236}}
+ \expandafter\def\csname simpleicon@pinescripticon\endcsname {\simpleiconsmap\symbol{"F237}}
+ \expandafter\def\csname simpleicon@pinetworkicon\endcsname {\simpleiconsmap\symbol{"F238}}
+ \expandafter\def\csname simpleicon@pingdomicon\endcsname {\simpleiconsmap\symbol{"F239}}
+ \expandafter\def\csname simpleicon@pinoicon\endcsname {\simpleiconsmap\symbol{"F23A}}
+ \expandafter\def\csname simpleicon@pinteresticon\endcsname {\simpleiconsmap\symbol{"F23B}}
+ \expandafter\def\csname simpleicon@pioneerdjicon\endcsname {\simpleiconsmap\symbol{"F23C}}
+ \expandafter\def\csname simpleicon@pipedicon\endcsname {\simpleiconsmap\symbol{"F23D}}
+ \expandafter\def\csname simpleicon@pipxicon\endcsname {\simpleiconsmap\symbol{"F23E}}
+ \expandafter\def\csname simpleicon@pivotaltrackericon\endcsname {\simpleiconsmap\symbol{"F23F}}
+ \expandafter\def\csname simpleicon@piwigoicon\endcsname {\simpleiconsmap\symbol{"F240}}
+ \expandafter\def\csname simpleicon@pixicon\endcsname {\simpleiconsmap\symbol{"F241}}
+ \expandafter\def\csname simpleicon@pixabayicon\endcsname {\simpleiconsmap\symbol{"F242}}
+ \expandafter\def\csname simpleicon@pixelfedicon\endcsname {\simpleiconsmap\symbol{"F243}}
+ \expandafter\def\csname simpleicon@pixivicon\endcsname {\simpleiconsmap\symbol{"F244}}
+ \expandafter\def\csname simpleicon@pixlricon\endcsname {\simpleiconsmap\symbol{"F245}}
+ \expandafter\def\csname simpleicon@pkgsrcicon\endcsname {\simpleiconsmap\symbol{"F246}}
+ \expandafter\def\csname simpleicon@planeticon\endcsname {\simpleiconsmap\symbol{"F247}}
+ \expandafter\def\csname simpleicon@planetscaleicon\endcsname {\simpleiconsmap\symbol{"F248}}
+ \expandafter\def\csname simpleicon@plangridicon\endcsname {\simpleiconsmap\symbol{"F249}}
+ \expandafter\def\csname simpleicon@platformdotshicon\endcsname {\simpleiconsmap\symbol{"F24A}}
+ \expandafter\def\csname simpleicon@platformioicon\endcsname {\simpleiconsmap\symbol{"F24B}}
+ \expandafter\def\csname simpleicon@platziicon\endcsname {\simpleiconsmap\symbol{"F24C}}
+ \expandafter\def\csname simpleicon@plausibleanalyticsicon\endcsname {\simpleiconsmap\symbol{"F24D}}
+ \expandafter\def\csname simpleicon@playcanvasicon\endcsname {\simpleiconsmap\symbol{"F24E}}
+ \expandafter\def\csname simpleicon@playerdotmeicon\endcsname {\simpleiconsmap\symbol{"F24F}}
+ \expandafter\def\csname simpleicon@playerfmicon\endcsname {\simpleiconsmap\symbol{"F250}}
+ \expandafter\def\csname simpleicon@playstationicon\endcsname {\simpleiconsmap\symbol{"F251}}
+ \expandafter\def\csname simpleicon@playstation2icon\endcsname {\simpleiconsmap\symbol{"F252}}
+ \expandafter\def\csname simpleicon@playstation3icon\endcsname {\simpleiconsmap\symbol{"F253}}
+ \expandafter\def\csname simpleicon@playstation4icon\endcsname {\simpleiconsmap\symbol{"F254}}
+ \expandafter\def\csname simpleicon@playstation5icon\endcsname {\simpleiconsmap\symbol{"F255}}
+ \expandafter\def\csname simpleicon@playstationportableicon\endcsname {\simpleiconsmap\symbol{"F256}}
+ \expandafter\def\csname simpleicon@playstationvitaicon\endcsname {\simpleiconsmap\symbol{"F257}}
+ \expandafter\def\csname simpleicon@pleromaicon\endcsname {\simpleiconsmap\symbol{"F258}}
+ \expandafter\def\csname simpleicon@pleskicon\endcsname {\simpleiconsmap\symbol{"F259}}
+ \expandafter\def\csname simpleicon@plexicon\endcsname {\simpleiconsmap\symbol{"F25A}}
+ \expandafter\def\csname simpleicon@plotlyicon\endcsname {\simpleiconsmap\symbol{"F25B}}
+ \expandafter\def\csname simpleicon@plumeicon\endcsname {\simpleiconsmap\symbol{"F25C}}
+ \expandafter\def\csname simpleicon@pluralsighticon\endcsname {\simpleiconsmap\symbol{"F25D}}
+ \expandafter\def\csname simpleicon@plurkicon\endcsname {\simpleiconsmap\symbol{"F25E}}
+ \expandafter\def\csname simpleicon@pluscodesicon\endcsname {\simpleiconsmap\symbol{"F25F}}
+ \expandafter\def\csname simpleicon@pm2icon\endcsname {\simpleiconsmap\symbol{"F260}}
+ \expandafter\def\csname simpleicon@pnpmicon\endcsname {\simpleiconsmap\symbol{"F261}}
+ \expandafter\def\csname simpleicon@pocketicon\endcsname {\simpleiconsmap\symbol{"F262}}
+ \expandafter\def\csname simpleicon@pocketbaseicon\endcsname {\simpleiconsmap\symbol{"F263}}
+ \expandafter\def\csname simpleicon@pocketcastsicon\endcsname {\simpleiconsmap\symbol{"F264}}
+ \expandafter\def\csname simpleicon@podcastaddicticon\endcsname {\simpleiconsmap\symbol{"F265}}
+ \expandafter\def\csname simpleicon@podcastindexicon\endcsname {\simpleiconsmap\symbol{"F266}}
+ \expandafter\def\csname simpleicon@podmanicon\endcsname {\simpleiconsmap\symbol{"F267}}
+ \expandafter\def\csname simpleicon@poeicon\endcsname {\simpleiconsmap\symbol{"F268}}
+ \expandafter\def\csname simpleicon@poetryicon\endcsname {\simpleiconsmap\symbol{"F269}}
+ \expandafter\def\csname simpleicon@pointyicon\endcsname {\simpleiconsmap\symbol{"F26A}}
+ \expandafter\def\csname simpleicon@pokemonicon\endcsname {\simpleiconsmap\symbol{"F26B}}
+ \expandafter\def\csname simpleicon@polarsicon\endcsname {\simpleiconsmap\symbol{"F26C}}
+ \expandafter\def\csname simpleicon@polestaricon\endcsname {\simpleiconsmap\symbol{"F26D}}
+ \expandafter\def\csname simpleicon@polkadoticon\endcsname {\simpleiconsmap\symbol{"F26E}}
+ \expandafter\def\csname simpleicon@polyicon\endcsname {\simpleiconsmap\symbol{"F26F}}
+ \expandafter\def\csname simpleicon@polygonicon\endcsname {\simpleiconsmap\symbol{"F270}}
+ \expandafter\def\csname simpleicon@polymerprojecticon\endcsname {\simpleiconsmap\symbol{"F271}}
+ \expandafter\def\csname simpleicon@polyworkicon\endcsname {\simpleiconsmap\symbol{"F272}}
+ \expandafter\def\csname simpleicon@pond5icon\endcsname {\simpleiconsmap\symbol{"F273}}
+ \expandafter\def\csname simpleicon@poposicon\endcsname {\simpleiconsmap\symbol{"F274}}
+ \expandafter\def\csname simpleicon@porkbunicon\endcsname {\simpleiconsmap\symbol{"F275}}
+ \expandafter\def\csname simpleicon@porscheicon\endcsname {\simpleiconsmap\symbol{"F276}}
+ \expandafter\def\csname simpleicon@portainericon\endcsname {\simpleiconsmap\symbol{"F277}}
+ \expandafter\def\csname simpleicon@portswiggericon\endcsname {\simpleiconsmap\symbol{"F278}}
+ \expandafter\def\csname simpleicon@positicon\endcsname {\simpleiconsmap\symbol{"F279}}
+ \expandafter\def\csname simpleicon@postcssicon\endcsname {\simpleiconsmap\symbol{"F27A}}
+ \expandafter\def\csname simpleicon@postgresqlicon\endcsname {\simpleiconsmap\symbol{"F27B}}
+ \expandafter\def\csname simpleicon@posthogicon\endcsname {\simpleiconsmap\symbol{"F27C}}
+ \expandafter\def\csname simpleicon@postmanicon\endcsname {\simpleiconsmap\symbol{"F27D}}
+ \expandafter\def\csname simpleicon@postmatesicon\endcsname {\simpleiconsmap\symbol{"F27E}}
+ \expandafter\def\csname simpleicon@powersicon\endcsname {\simpleiconsmap\symbol{"F27F}}
+ \expandafter\def\csname simpleicon@prdotcoicon\endcsname {\simpleiconsmap\symbol{"F280}}
+ \expandafter\def\csname simpleicon@preacticon\endcsname {\simpleiconsmap\symbol{"F281}}
+ \expandafter\def\csname simpleicon@precommiticon\endcsname {\simpleiconsmap\symbol{"F282}}
+ \expandafter\def\csname simpleicon@prefecticon\endcsname {\simpleiconsmap\symbol{"F283}}
+ \expandafter\def\csname simpleicon@premierleagueicon\endcsname {\simpleiconsmap\symbol{"F284}}
+ \expandafter\def\csname simpleicon@prepbytesicon\endcsname {\simpleiconsmap\symbol{"F285}}
+ \expandafter\def\csname simpleicon@prestashopicon\endcsname {\simpleiconsmap\symbol{"F286}}
+ \expandafter\def\csname simpleicon@prestoicon\endcsname {\simpleiconsmap\symbol{"F287}}
+ \expandafter\def\csname simpleicon@prettiericon\endcsname {\simpleiconsmap\symbol{"F288}}
+ \expandafter\def\csname simpleicon@pretzelicon\endcsname {\simpleiconsmap\symbol{"F289}}
+ \expandafter\def\csname simpleicon@preventionicon\endcsname {\simpleiconsmap\symbol{"F28A}}
+ \expandafter\def\csname simpleicon@preziicon\endcsname {\simpleiconsmap\symbol{"F28B}}
+ \expandafter\def\csname simpleicon@primeicon\endcsname {\simpleiconsmap\symbol{"F28C}}
+ \expandafter\def\csname simpleicon@primefacesicon\endcsname {\simpleiconsmap\symbol{"F28D}}
+ \expandafter\def\csname simpleicon@primengicon\endcsname {\simpleiconsmap\symbol{"F28E}}
+ \expandafter\def\csname simpleicon@primereacticon\endcsname {\simpleiconsmap\symbol{"F28F}}
+ \expandafter\def\csname simpleicon@primevideoicon\endcsname {\simpleiconsmap\symbol{"F290}}
+ \expandafter\def\csname simpleicon@primevueicon\endcsname {\simpleiconsmap\symbol{"F291}}
+ \expandafter\def\csname simpleicon@printablesicon\endcsname {\simpleiconsmap\symbol{"F292}}
+ \expandafter\def\csname simpleicon@prismaicon\endcsname {\simpleiconsmap\symbol{"F293}}
+ \expandafter\def\csname simpleicon@prismicicon\endcsname {\simpleiconsmap\symbol{"F294}}
+ \expandafter\def\csname simpleicon@privatedivisionicon\endcsname {\simpleiconsmap\symbol{"F295}}
+ \expandafter\def\csname simpleicon@privateinternetaccessicon\endcsname {\simpleiconsmap\symbol{"F296}}
+ \expandafter\def\csname simpleicon@proboticon\endcsname {\simpleiconsmap\symbol{"F297}}
+ \expandafter\def\csname simpleicon@processingfoundationicon\endcsname {\simpleiconsmap\symbol{"F298}}
+ \expandafter\def\csname simpleicon@processwireicon\endcsname {\simpleiconsmap\symbol{"F299}}
+ \expandafter\def\csname simpleicon@producthunticon\endcsname {\simpleiconsmap\symbol{"F29A}}
+ \expandafter\def\csname simpleicon@progateicon\endcsname {\simpleiconsmap\symbol{"F29B}}
+ \expandafter\def\csname simpleicon@progressicon\endcsname {\simpleiconsmap\symbol{"F29C}}
+ \expandafter\def\csname simpleicon@prometheusicon\endcsname {\simpleiconsmap\symbol{"F29D}}
+ \expandafter\def\csname simpleicon@pronounsdotpageicon\endcsname {\simpleiconsmap\symbol{"F29E}}
+ \expandafter\def\csname simpleicon@prosiebenicon\endcsname {\simpleiconsmap\symbol{"F29F}}
+ \expandafter\def\csname simpleicon@proteusicon\endcsname {\simpleiconsmap\symbol{"F2A0}}
+ \expandafter\def\csname simpleicon@protocolsdotioicon\endcsname {\simpleiconsmap\symbol{"F2A1}}
+ \expandafter\def\csname simpleicon@protodotioicon\endcsname {\simpleiconsmap\symbol{"F2A2}}
+ \expandafter\def\csname simpleicon@protonicon\endcsname {\simpleiconsmap\symbol{"F2A3}}
+ \expandafter\def\csname simpleicon@protoncalendaricon\endcsname {\simpleiconsmap\symbol{"F2A4}}
+ \expandafter\def\csname simpleicon@protondbicon\endcsname {\simpleiconsmap\symbol{"F2A5}}
+ \expandafter\def\csname simpleicon@protondriveicon\endcsname {\simpleiconsmap\symbol{"F2A6}}
+ \expandafter\def\csname simpleicon@protonmailicon\endcsname {\simpleiconsmap\symbol{"F2A7}}
+ \expandafter\def\csname simpleicon@protonvpnicon\endcsname {\simpleiconsmap\symbol{"F2A8}}
+ \expandafter\def\csname simpleicon@protoolsicon\endcsname {\simpleiconsmap\symbol{"F2A9}}
+ \expandafter\def\csname simpleicon@protractoricon\endcsname {\simpleiconsmap\symbol{"F2AA}}
+ \expandafter\def\csname simpleicon@proxmoxicon\endcsname {\simpleiconsmap\symbol{"F2AB}}
+ \expandafter\def\csname simpleicon@pterodactylicon\endcsname {\simpleiconsmap\symbol{"F2AC}}
+ \expandafter\def\csname simpleicon@pubgicon\endcsname {\simpleiconsmap\symbol{"F2AD}}
+ \expandafter\def\csname simpleicon@publonsicon\endcsname {\simpleiconsmap\symbol{"F2AE}}
+ \expandafter\def\csname simpleicon@pubmedicon\endcsname {\simpleiconsmap\symbol{"F2AF}}
+ \expandafter\def\csname simpleicon@pugicon\endcsname {\simpleiconsmap\symbol{"F2B0}}
+ \expandafter\def\csname simpleicon@pulumiicon\endcsname {\simpleiconsmap\symbol{"F2B1}}
+ \expandafter\def\csname simpleicon@pumaicon\endcsname {\simpleiconsmap\symbol{"F2B2}}
+ \expandafter\def\csname simpleicon@puppeticon\endcsname {\simpleiconsmap\symbol{"F2B3}}
+ \expandafter\def\csname simpleicon@puppeteericon\endcsname {\simpleiconsmap\symbol{"F2B4}}
+ \expandafter\def\csname simpleicon@purescripticon\endcsname {\simpleiconsmap\symbol{"F2B5}}
+ \expandafter\def\csname simpleicon@purgecssicon\endcsname {\simpleiconsmap\symbol{"F2B6}}
+ \expandafter\def\csname simpleicon@purismicon\endcsname {\simpleiconsmap\symbol{"F2B7}}
+ \expandafter\def\csname simpleicon@pushbulleticon\endcsname {\simpleiconsmap\symbol{"F2B8}}
+ \expandafter\def\csname simpleicon@pushericon\endcsname {\simpleiconsmap\symbol{"F2B9}}
+ \expandafter\def\csname simpleicon@pwaicon\endcsname {\simpleiconsmap\symbol{"F2BA}}
+ \expandafter\def\csname simpleicon@pycharmicon\endcsname {\simpleiconsmap\symbol{"F2BB}}
+ \expandafter\def\csname simpleicon@pycqaicon\endcsname {\simpleiconsmap\symbol{"F2BC}}
+ \expandafter\def\csname simpleicon@pydanticicon\endcsname {\simpleiconsmap\symbol{"F2BD}}
+ \expandafter\def\csname simpleicon@pygicon\endcsname {\simpleiconsmap\symbol{"F2BE}}
+ \expandafter\def\csname simpleicon@pypiicon\endcsname {\simpleiconsmap\symbol{"F2BF}}
+ \expandafter\def\csname simpleicon@pypyicon\endcsname {\simpleiconsmap\symbol{"F2C0}}
+ \expandafter\def\csname simpleicon@pyscaffoldicon\endcsname {\simpleiconsmap\symbol{"F2C1}}
+ \expandafter\def\csname simpleicon@pysyfticon\endcsname {\simpleiconsmap\symbol{"F2C2}}
+ \expandafter\def\csname simpleicon@pytesticon\endcsname {\simpleiconsmap\symbol{"F2C3}}
+ \expandafter\def\csname simpleicon@pythonicon\endcsname {\simpleiconsmap\symbol{"F2C4}}
+ \expandafter\def\csname simpleicon@pythonanywhereicon\endcsname {\simpleiconsmap\symbol{"F2C5}}
+ \expandafter\def\csname simpleicon@pytorchicon\endcsname {\simpleiconsmap\symbol{"F2C6}}
+ \expandafter\def\csname simpleicon@pyupicon\endcsname {\simpleiconsmap\symbol{"F2C7}}
+ \expandafter\def\csname simpleicon@qantasicon\endcsname {\simpleiconsmap\symbol{"F2C8}}
+ \expandafter\def\csname simpleicon@qaseicon\endcsname {\simpleiconsmap\symbol{"F2C9}}
+ \expandafter\def\csname simpleicon@qatarairwaysicon\endcsname {\simpleiconsmap\symbol{"F2CA}}
+ \expandafter\def\csname simpleicon@qbittorrenticon\endcsname {\simpleiconsmap\symbol{"F2CB}}
+ \expandafter\def\csname simpleicon@qemuicon\endcsname {\simpleiconsmap\symbol{"F2CC}}
+ \expandafter\def\csname simpleicon@qgisicon\endcsname {\simpleiconsmap\symbol{"F2CD}}
+ \expandafter\def\csname simpleicon@qiicon\endcsname {\simpleiconsmap\symbol{"F2CE}}
+ \expandafter\def\csname simpleicon@qiitaicon\endcsname {\simpleiconsmap\symbol{"F2CF}}
+ \expandafter\def\csname simpleicon@qiskiticon\endcsname {\simpleiconsmap\symbol{"F2D0}}
+ \expandafter\def\csname simpleicon@qiwiicon\endcsname {\simpleiconsmap\symbol{"F2D1}}
+ \expandafter\def\csname simpleicon@qlikicon\endcsname {\simpleiconsmap\symbol{"F2D2}}
+ \expandafter\def\csname simpleicon@qmkicon\endcsname {\simpleiconsmap\symbol{"F2D3}}
+ \expandafter\def\csname simpleicon@qnapicon\endcsname {\simpleiconsmap\symbol{"F2D4}}
+ \expandafter\def\csname simpleicon@qticon\endcsname {\simpleiconsmap\symbol{"F2D5}}
+ \expandafter\def\csname simpleicon@qualcommicon\endcsname {\simpleiconsmap\symbol{"F2D6}}
+ \expandafter\def\csname simpleicon@qualtricsicon\endcsname {\simpleiconsmap\symbol{"F2D7}}
+ \expandafter\def\csname simpleicon@qualysicon\endcsname {\simpleiconsmap\symbol{"F2D8}}
+ \expandafter\def\csname simpleicon@quantcasticon\endcsname {\simpleiconsmap\symbol{"F2D9}}
+ \expandafter\def\csname simpleicon@quantconnecticon\endcsname {\simpleiconsmap\symbol{"F2DA}}
+ \expandafter\def\csname simpleicon@quarkusicon\endcsname {\simpleiconsmap\symbol{"F2DB}}
+ \expandafter\def\csname simpleicon@quartoicon\endcsname {\simpleiconsmap\symbol{"F2DC}}
+ \expandafter\def\csname simpleicon@quasaricon\endcsname {\simpleiconsmap\symbol{"F2DD}}
+ \expandafter\def\csname simpleicon@qubesosicon\endcsname {\simpleiconsmap\symbol{"F2DE}}
+ \expandafter\def\csname simpleicon@questicon\endcsname {\simpleiconsmap\symbol{"F2DF}}
+ \expandafter\def\csname simpleicon@quickbooksicon\endcsname {\simpleiconsmap\symbol{"F2E0}}
+ \expandafter\def\csname simpleicon@quicklookicon\endcsname {\simpleiconsmap\symbol{"F2E1}}
+ \expandafter\def\csname simpleicon@quicktimeicon\endcsname {\simpleiconsmap\symbol{"F2E2}}
+ \expandafter\def\csname simpleicon@quicktypeicon\endcsname {\simpleiconsmap\symbol{"F2E3}}
+ \expandafter\def\csname simpleicon@quipicon\endcsname {\simpleiconsmap\symbol{"F2E4}}
+ \expandafter\def\csname simpleicon@quizleticon\endcsname {\simpleiconsmap\symbol{"F2E5}}
+ \expandafter\def\csname simpleicon@quoraicon\endcsname {\simpleiconsmap\symbol{"F2E6}}
+ \expandafter\def\csname simpleicon@qwanticon\endcsname {\simpleiconsmap\symbol{"F2E7}}
+ \expandafter\def\csname simpleicon@qwikicon\endcsname {\simpleiconsmap\symbol{"F2E8}}
+ \expandafter\def\csname simpleicon@qwiklabsicon\endcsname {\simpleiconsmap\symbol{"F2E9}}
+ \expandafter\def\csname simpleicon@qzoneicon\endcsname {\simpleiconsmap\symbol{"F2EA}}
+ \expandafter\def\csname simpleicon@ricon\endcsname {\simpleiconsmap\symbol{"F2EB}}
+ \expandafter\def\csname simpleicon@r3icon\endcsname {\simpleiconsmap\symbol{"F2EC}}
+ \expandafter\def\csname simpleicon@rabbitmqicon\endcsname {\simpleiconsmap\symbol{"F2ED}}
+ \expandafter\def\csname simpleicon@racketicon\endcsname {\simpleiconsmap\symbol{"F2EE}}
+ \expandafter\def\csname simpleicon@radaricon\endcsname {\simpleiconsmap\symbol{"F2EF}}
+ \expandafter\def\csname simpleicon@radarricon\endcsname {\simpleiconsmap\symbol{"F2F0}}
+ \expandafter\def\csname simpleicon@radiopublicicon\endcsname {\simpleiconsmap\symbol{"F2F1}}
+ \expandafter\def\csname simpleicon@radixuiicon\endcsname {\simpleiconsmap\symbol{"F2F2}}
+ \expandafter\def\csname simpleicon@radstudioicon\endcsname {\simpleiconsmap\symbol{"F2F3}}
+ \expandafter\def\csname simpleicon@railwayicon\endcsname {\simpleiconsmap\symbol{"F2F4}}
+ \expandafter\def\csname simpleicon@rainmetericon\endcsname {\simpleiconsmap\symbol{"F2F5}}
+ \expandafter\def\csname simpleicon@rakutenicon\endcsname {\simpleiconsmap\symbol{"F2F6}}
+ \expandafter\def\csname simpleicon@ramicon\endcsname {\simpleiconsmap\symbol{"F2F7}}
+ \expandafter\def\csname simpleicon@ranchericon\endcsname {\simpleiconsmap\symbol{"F2F8}}
+ \expandafter\def\csname simpleicon@rapidicon\endcsname {\simpleiconsmap\symbol{"F2F9}}
+ \expandafter\def\csname simpleicon@raribleicon\endcsname {\simpleiconsmap\symbol{"F2FA}}
+ \expandafter\def\csname simpleicon@rasaicon\endcsname {\simpleiconsmap\symbol{"F2FB}}
+ \expandafter\def\csname simpleicon@raspberrypiicon\endcsname {\simpleiconsmap\symbol{"F2FC}}
+ \expandafter\def\csname simpleicon@ravelryicon\endcsname {\simpleiconsmap\symbol{"F2FD}}
+ \expandafter\def\csname simpleicon@rayicon\endcsname {\simpleiconsmap\symbol{"F2FE}}
+ \expandafter\def\csname simpleicon@raycasticon\endcsname {\simpleiconsmap\symbol{"F2FF}}
+ \expandafter\def\csname simpleicon@raylibicon\endcsname {\simpleiconsmap\symbol{"F300}}
+ \expandafter\def\csname simpleicon@razericon\endcsname {\simpleiconsmap\symbol{"F301}}
+ \expandafter\def\csname simpleicon@razorpayicon\endcsname {\simpleiconsmap\symbol{"F302}}
+ \expandafter\def\csname simpleicon@rcloneicon\endcsname {\simpleiconsmap\symbol{"F303}}
+ \expandafter\def\csname simpleicon@reacticon\endcsname {\simpleiconsmap\symbol{"F304}}
+ \expandafter\def\csname simpleicon@reactbootstrapicon\endcsname {\simpleiconsmap\symbol{"F305}}
+ \expandafter\def\csname simpleicon@reacthookformicon\endcsname {\simpleiconsmap\symbol{"F306}}
+ \expandafter\def\csname simpleicon@reactiveresumeicon\endcsname {\simpleiconsmap\symbol{"F307}}
+ \expandafter\def\csname simpleicon@reactivexicon\endcsname {\simpleiconsmap\symbol{"F308}}
+ \expandafter\def\csname simpleicon@reactosicon\endcsname {\simpleiconsmap\symbol{"F309}}
+ \expandafter\def\csname simpleicon@reactqueryicon\endcsname {\simpleiconsmap\symbol{"F30A}}
+ \expandafter\def\csname simpleicon@reactroutericon\endcsname {\simpleiconsmap\symbol{"F30B}}
+ \expandafter\def\csname simpleicon@reacttableicon\endcsname {\simpleiconsmap\symbol{"F30C}}
+ \expandafter\def\csname simpleicon@readdotcvicon\endcsname {\simpleiconsmap\symbol{"F30D}}
+ \expandafter\def\csname simpleicon@readmeicon\endcsname {\simpleiconsmap\symbol{"F30E}}
+ \expandafter\def\csname simpleicon@readthedocsicon\endcsname {\simpleiconsmap\symbol{"F30F}}
+ \expandafter\def\csname simpleicon@realmicon\endcsname {\simpleiconsmap\symbol{"F310}}
+ \expandafter\def\csname simpleicon@reasonicon\endcsname {\simpleiconsmap\symbol{"F311}}
+ \expandafter\def\csname simpleicon@reasonstudiosicon\endcsname {\simpleiconsmap\symbol{"F312}}
+ \expandafter\def\csname simpleicon@recoilicon\endcsname {\simpleiconsmap\symbol{"F313}}
+ \expandafter\def\csname simpleicon@redicon\endcsname {\simpleiconsmap\symbol{"F314}}
+ \expandafter\def\csname simpleicon@redashicon\endcsname {\simpleiconsmap\symbol{"F315}}
+ \expandafter\def\csname simpleicon@redbubbleicon\endcsname {\simpleiconsmap\symbol{"F316}}
+ \expandafter\def\csname simpleicon@redbullicon\endcsname {\simpleiconsmap\symbol{"F317}}
+ \expandafter\def\csname simpleicon@redcandlegamesicon\endcsname {\simpleiconsmap\symbol{"F318}}
+ \expandafter\def\csname simpleicon@redditicon\endcsname {\simpleiconsmap\symbol{"F319}}
+ \expandafter\def\csname simpleicon@redhaticon\endcsname {\simpleiconsmap\symbol{"F31A}}
+ \expandafter\def\csname simpleicon@redhatopenshifticon\endcsname {\simpleiconsmap\symbol{"F31B}}
+ \expandafter\def\csname simpleicon@redisicon\endcsname {\simpleiconsmap\symbol{"F31C}}
+ \expandafter\def\csname simpleicon@redmineicon\endcsname {\simpleiconsmap\symbol{"F31D}}
+ \expandafter\def\csname simpleicon@redoxicon\endcsname {\simpleiconsmap\symbol{"F31E}}
+ \expandafter\def\csname simpleicon@redragonicon\endcsname {\simpleiconsmap\symbol{"F31F}}
+ \expandafter\def\csname simpleicon@redsysicon\endcsname {\simpleiconsmap\symbol{"F320}}
+ \expandafter\def\csname simpleicon@reduxicon\endcsname {\simpleiconsmap\symbol{"F321}}
+ \expandafter\def\csname simpleicon@reduxsagaicon\endcsname {\simpleiconsmap\symbol{"F322}}
+ \expandafter\def\csname simpleicon@redwoodjsicon\endcsname {\simpleiconsmap\symbol{"F323}}
+ \expandafter\def\csname simpleicon@reebokicon\endcsname {\simpleiconsmap\symbol{"F324}}
+ \expandafter\def\csname simpleicon@refineicon\endcsname {\simpleiconsmap\symbol{"F325}}
+ \expandafter\def\csname simpleicon@relayicon\endcsname {\simpleiconsmap\symbol{"F326}}
+ \expandafter\def\csname simpleicon@relianceindustrieslimitedicon\endcsname {\simpleiconsmap\symbol{"F327}}
+ \expandafter\def\csname simpleicon@remarkicon\endcsname {\simpleiconsmap\symbol{"F328}}
+ \expandafter\def\csname simpleicon@remedyentertainmenticon\endcsname {\simpleiconsmap\symbol{"F329}}
+ \expandafter\def\csname simpleicon@remixicon\endcsname {\simpleiconsmap\symbol{"F32A}}
+ \expandafter\def\csname simpleicon@removedotbgicon\endcsname {\simpleiconsmap\symbol{"F32B}}
+ \expandafter\def\csname simpleicon@renaulticon\endcsname {\simpleiconsmap\symbol{"F32C}}
+ \expandafter\def\csname simpleicon@rendericon\endcsname {\simpleiconsmap\symbol{"F32D}}
+ \expandafter\def\csname simpleicon@renovateicon\endcsname {\simpleiconsmap\symbol{"F32E}}
+ \expandafter\def\csname simpleicon@renpyicon\endcsname {\simpleiconsmap\symbol{"F32F}}
+ \expandafter\def\csname simpleicon@renrenicon\endcsname {\simpleiconsmap\symbol{"F330}}
+ \expandafter\def\csname simpleicon@repliticon\endcsname {\simpleiconsmap\symbol{"F331}}
+ \expandafter\def\csname simpleicon@republicofgamersicon\endcsname {\simpleiconsmap\symbol{"F332}}
+ \expandafter\def\csname simpleicon@rescripticon\endcsname {\simpleiconsmap\symbol{"F333}}
+ \expandafter\def\csname simpleicon@rescuetimeicon\endcsname {\simpleiconsmap\symbol{"F334}}
+ \expandafter\def\csname simpleicon@researchgateicon\endcsname {\simpleiconsmap\symbol{"F335}}
+ \expandafter\def\csname simpleicon@resendicon\endcsname {\simpleiconsmap\symbol{"F336}}
+ \expandafter\def\csname simpleicon@resharpericon\endcsname {\simpleiconsmap\symbol{"F337}}
+ \expandafter\def\csname simpleicon@resurrectionremixosicon\endcsname {\simpleiconsmap\symbol{"F338}}
+ \expandafter\def\csname simpleicon@retoolicon\endcsname {\simpleiconsmap\symbol{"F339}}
+ \expandafter\def\csname simpleicon@retroarchicon\endcsname {\simpleiconsmap\symbol{"F33A}}
+ \expandafter\def\csname simpleicon@retropieicon\endcsname {\simpleiconsmap\symbol{"F33B}}
+ \expandafter\def\csname simpleicon@revancedicon\endcsname {\simpleiconsmap\symbol{"F33C}}
+ \expandafter\def\csname simpleicon@revealdotjsicon\endcsname {\simpleiconsmap\symbol{"F33D}}
+ \expandafter\def\csname simpleicon@reverbnationicon\endcsname {\simpleiconsmap\symbol{"F33E}}
+ \expandafter\def\csname simpleicon@revoltdotchaticon\endcsname {\simpleiconsmap\symbol{"F33F}}
+ \expandafter\def\csname simpleicon@revoluticon\endcsname {\simpleiconsmap\symbol{"F340}}
+ \expandafter\def\csname simpleicon@revueicon\endcsname {\simpleiconsmap\symbol{"F341}}
+ \expandafter\def\csname simpleicon@reweicon\endcsname {\simpleiconsmap\symbol{"F342}}
+ \expandafter\def\csname simpleicon@rezgoicon\endcsname {\simpleiconsmap\symbol{"F343}}
+ \expandafter\def\csname simpleicon@rhinocerosicon\endcsname {\simpleiconsmap\symbol{"F344}}
+ \expandafter\def\csname simpleicon@richicon\endcsname {\simpleiconsmap\symbol{"F345}}
+ \expandafter\def\csname simpleicon@ridericon\endcsname {\simpleiconsmap\symbol{"F346}}
+ \expandafter\def\csname simpleicon@rimacautomobiliicon\endcsname {\simpleiconsmap\symbol{"F347}}
+ \expandafter\def\csname simpleicon@rimeicon\endcsname {\simpleiconsmap\symbol{"F348}}
+ \expandafter\def\csname simpleicon@ringicon\endcsname {\simpleiconsmap\symbol{"F349}}
+ \expandafter\def\csname simpleicon@riotgamesicon\endcsname {\simpleiconsmap\symbol{"F34A}}
+ \expandafter\def\csname simpleicon@rippleicon\endcsname {\simpleiconsmap\symbol{"F34B}}
+ \expandafter\def\csname simpleicon@riscvicon\endcsname {\simpleiconsmap\symbol{"F34C}}
+ \expandafter\def\csname simpleicon@riseupicon\endcsname {\simpleiconsmap\symbol{"F34D}}
+ \expandafter\def\csname simpleicon@ritzcarltonicon\endcsname {\simpleiconsmap\symbol{"F34E}}
+ \expandafter\def\csname simpleicon@riveicon\endcsname {\simpleiconsmap\symbol{"F34F}}
+ \expandafter\def\csname simpleicon@roadmapdotshicon\endcsname {\simpleiconsmap\symbol{"F350}}
+ \expandafter\def\csname simpleicon@roamresearchicon\endcsname {\simpleiconsmap\symbol{"F351}}
+ \expandafter\def\csname simpleicon@robinhoodicon\endcsname {\simpleiconsmap\symbol{"F352}}
+ \expandafter\def\csname simpleicon@robloxicon\endcsname {\simpleiconsmap\symbol{"F353}}
+ \expandafter\def\csname simpleicon@robloxstudioicon\endcsname {\simpleiconsmap\symbol{"F354}}
+ \expandafter\def\csname simpleicon@roboflowicon\endcsname {\simpleiconsmap\symbol{"F355}}
+ \expandafter\def\csname simpleicon@robotframeworkicon\endcsname {\simpleiconsmap\symbol{"F356}}
+ \expandafter\def\csname simpleicon@rocketicon\endcsname {\simpleiconsmap\symbol{"F357}}
+ \expandafter\def\csname simpleicon@rocketdotchaticon\endcsname {\simpleiconsmap\symbol{"F358}}
+ \expandafter\def\csname simpleicon@rocksdbicon\endcsname {\simpleiconsmap\symbol{"F359}}
+ \expandafter\def\csname simpleicon@rockstargamesicon\endcsname {\simpleiconsmap\symbol{"F35A}}
+ \expandafter\def\csname simpleicon@rockwellautomationicon\endcsname {\simpleiconsmap\symbol{"F35B}}
+ \expandafter\def\csname simpleicon@rockylinuxicon\endcsname {\simpleiconsmap\symbol{"F35C}}
+ \expandafter\def\csname simpleicon@rokuicon\endcsname {\simpleiconsmap\symbol{"F35D}}
+ \expandafter\def\csname simpleicon@roll20icon\endcsname {\simpleiconsmap\symbol{"F35E}}
+ \expandafter\def\csname simpleicon@rollsroyceicon\endcsname {\simpleiconsmap\symbol{"F35F}}
+ \expandafter\def\csname simpleicon@rollupdotjsicon\endcsname {\simpleiconsmap\symbol{"F360}}
+ \expandafter\def\csname simpleicon@roonicon\endcsname {\simpleiconsmap\symbol{"F361}}
+ \expandafter\def\csname simpleicon@rootmeicon\endcsname {\simpleiconsmap\symbol{"F362}}
+ \expandafter\def\csname simpleicon@rootsicon\endcsname {\simpleiconsmap\symbol{"F363}}
+ \expandafter\def\csname simpleicon@rootsbedrockicon\endcsname {\simpleiconsmap\symbol{"F364}}
+ \expandafter\def\csname simpleicon@rootssageicon\endcsname {\simpleiconsmap\symbol{"F365}}
+ \expandafter\def\csname simpleicon@rosicon\endcsname {\simpleiconsmap\symbol{"F366}}
+ \expandafter\def\csname simpleicon@rossmannicon\endcsname {\simpleiconsmap\symbol{"F367}}
+ \expandafter\def\csname simpleicon@rotaryinternationalicon\endcsname {\simpleiconsmap\symbol{"F368}}
+ \expandafter\def\csname simpleicon@rottentomatoesicon\endcsname {\simpleiconsmap\symbol{"F369}}
+ \expandafter\def\csname simpleicon@roundcubeicon\endcsname {\simpleiconsmap\symbol{"F36A}}
+ \expandafter\def\csname simpleicon@rsocketicon\endcsname {\simpleiconsmap\symbol{"F36B}}
+ \expandafter\def\csname simpleicon@rssicon\endcsname {\simpleiconsmap\symbol{"F36C}}
+ \expandafter\def\csname simpleicon@rstudioideicon\endcsname {\simpleiconsmap\symbol{"F36D}}
+ \expandafter\def\csname simpleicon@rteicon\endcsname {\simpleiconsmap\symbol{"F36E}}
+ \expandafter\def\csname simpleicon@rtlicon\endcsname {\simpleiconsmap\symbol{"F36F}}
+ \expandafter\def\csname simpleicon@rtlzweiicon\endcsname {\simpleiconsmap\symbol{"F370}}
+ \expandafter\def\csname simpleicon@rtmicon\endcsname {\simpleiconsmap\symbol{"F371}}
+ \expandafter\def\csname simpleicon@rubocopicon\endcsname {\simpleiconsmap\symbol{"F372}}
+ \expandafter\def\csname simpleicon@rubyicon\endcsname {\simpleiconsmap\symbol{"F373}}
+ \expandafter\def\csname simpleicon@rubygemsicon\endcsname {\simpleiconsmap\symbol{"F374}}
+ \expandafter\def\csname simpleicon@rubymineicon\endcsname {\simpleiconsmap\symbol{"F375}}
+ \expandafter\def\csname simpleicon@rubyonrailsicon\endcsname {\simpleiconsmap\symbol{"F376}}
+ \expandafter\def\csname simpleicon@rubysinatraicon\endcsname {\simpleiconsmap\symbol{"F377}}
+ \expandafter\def\csname simpleicon@rufficon\endcsname {\simpleiconsmap\symbol{"F378}}
+ \expandafter\def\csname simpleicon@rumahwebicon\endcsname {\simpleiconsmap\symbol{"F379}}
+ \expandafter\def\csname simpleicon@rumbleicon\endcsname {\simpleiconsmap\symbol{"F37A}}
+ \expandafter\def\csname simpleicon@rundeckicon\endcsname {\simpleiconsmap\symbol{"F37B}}
+ \expandafter\def\csname simpleicon@runkeepericon\endcsname {\simpleiconsmap\symbol{"F37C}}
+ \expandafter\def\csname simpleicon@runkiticon\endcsname {\simpleiconsmap\symbol{"F37D}}
+ \expandafter\def\csname simpleicon@runrundotiticon\endcsname {\simpleiconsmap\symbol{"F37E}}
+ \expandafter\def\csname simpleicon@rusticon\endcsname {\simpleiconsmap\symbol{"F37F}}
+ \expandafter\def\csname simpleicon@rustdeskicon\endcsname {\simpleiconsmap\symbol{"F380}}
+ \expandafter\def\csname simpleicon@rxdbicon\endcsname {\simpleiconsmap\symbol{"F381}}
+ \expandafter\def\csname simpleicon@ryanairicon\endcsname {\simpleiconsmap\symbol{"F382}}
+ \expandafter\def\csname simpleicon@ryeicon\endcsname {\simpleiconsmap\symbol{"F383}}
+ \expandafter\def\csname simpleicon@s7airlinesicon\endcsname {\simpleiconsmap\symbol{"F384}}
+ \expandafter\def\csname simpleicon@sabanciicon\endcsname {\simpleiconsmap\symbol{"F385}}
+ \expandafter\def\csname simpleicon@safariicon\endcsname {\simpleiconsmap\symbol{"F386}}
+ \expandafter\def\csname simpleicon@sageicon\endcsname {\simpleiconsmap\symbol{"F387}}
+ \expandafter\def\csname simpleicon@sahibindenicon\endcsname {\simpleiconsmap\symbol{"F388}}
+ \expandafter\def\csname simpleicon@sailfishosicon\endcsname {\simpleiconsmap\symbol{"F389}}
+ \expandafter\def\csname simpleicon@sailsdotjsicon\endcsname {\simpleiconsmap\symbol{"F38A}}
+ \expandafter\def\csname simpleicon@salesforceicon\endcsname {\simpleiconsmap\symbol{"F38B}}
+ \expandafter\def\csname simpleicon@sallaicon\endcsname {\simpleiconsmap\symbol{"F38C}}
+ \expandafter\def\csname simpleicon@saltprojecticon\endcsname {\simpleiconsmap\symbol{"F38D}}
+ \expandafter\def\csname simpleicon@samsclubicon\endcsname {\simpleiconsmap\symbol{"F38E}}
+ \expandafter\def\csname simpleicon@samsungicon\endcsname {\simpleiconsmap\symbol{"F38F}}
+ \expandafter\def\csname simpleicon@samsungpayicon\endcsname {\simpleiconsmap\symbol{"F390}}
+ \expandafter\def\csname simpleicon@sandiskicon\endcsname {\simpleiconsmap\symbol{"F391}}
+ \expandafter\def\csname simpleicon@sanfranciscomunicipalrailwayicon\endcsname {\simpleiconsmap\symbol{"F392}}
+ \expandafter\def\csname simpleicon@sanicicon\endcsname {\simpleiconsmap\symbol{"F393}}
+ \expandafter\def\csname simpleicon@sanityicon\endcsname {\simpleiconsmap\symbol{"F394}}
+ \expandafter\def\csname simpleicon@saopaulometroicon\endcsname {\simpleiconsmap\symbol{"F395}}
+ \expandafter\def\csname simpleicon@sapicon\endcsname {\simpleiconsmap\symbol{"F396}}
+ \expandafter\def\csname simpleicon@sartoriusicon\endcsname {\simpleiconsmap\symbol{"F397}}
+ \expandafter\def\csname simpleicon@sassicon\endcsname {\simpleiconsmap\symbol{"F398}}
+ \expandafter\def\csname simpleicon@sat1icon\endcsname {\simpleiconsmap\symbol{"F399}}
+ \expandafter\def\csname simpleicon@satelliteicon\endcsname {\simpleiconsmap\symbol{"F39A}}
+ \expandafter\def\csname simpleicon@saturnicon\endcsname {\simpleiconsmap\symbol{"F39B}}
+ \expandafter\def\csname simpleicon@saucelabsicon\endcsname {\simpleiconsmap\symbol{"F39C}}
+ \expandafter\def\csname simpleicon@saudiaicon\endcsname {\simpleiconsmap\symbol{"F39D}}
+ \expandafter\def\csname simpleicon@scalaicon\endcsname {\simpleiconsmap\symbol{"F39E}}
+ \expandafter\def\csname simpleicon@scalewayicon\endcsname {\simpleiconsmap\symbol{"F39F}}
+ \expandafter\def\csname simpleicon@scaniaicon\endcsname {\simpleiconsmap\symbol{"F3A0}}
+ \expandafter\def\csname simpleicon@schneiderelectricicon\endcsname {\simpleiconsmap\symbol{"F3A1}}
+ \expandafter\def\csname simpleicon@scikitlearnicon\endcsname {\simpleiconsmap\symbol{"F3A2}}
+ \expandafter\def\csname simpleicon@scilabicon\endcsname {\simpleiconsmap\symbol{"F3A3}}
+ \expandafter\def\csname simpleicon@scipyicon\endcsname {\simpleiconsmap\symbol{"F3A4}}
+ \expandafter\def\csname simpleicon@scopusicon\endcsname {\simpleiconsmap\symbol{"F3A5}}
+ \expandafter\def\csname simpleicon@scpfoundationicon\endcsname {\simpleiconsmap\symbol{"F3A6}}
+ \expandafter\def\csname simpleicon@scrapboxicon\endcsname {\simpleiconsmap\symbol{"F3A7}}
+ \expandafter\def\csname simpleicon@scrapyicon\endcsname {\simpleiconsmap\symbol{"F3A8}}
+ \expandafter\def\csname simpleicon@scratchicon\endcsname {\simpleiconsmap\symbol{"F3A9}}
+ \expandafter\def\csname simpleicon@screencastifyicon\endcsname {\simpleiconsmap\symbol{"F3AA}}
+ \expandafter\def\csname simpleicon@scribdicon\endcsname {\simpleiconsmap\symbol{"F3AB}}
+ \expandafter\def\csname simpleicon@scrimbaicon\endcsname {\simpleiconsmap\symbol{"F3AC}}
+ \expandafter\def\csname simpleicon@scrollrevealicon\endcsname {\simpleiconsmap\symbol{"F3AD}}
+ \expandafter\def\csname simpleicon@scrumallianceicon\endcsname {\simpleiconsmap\symbol{"F3AE}}
+ \expandafter\def\csname simpleicon@scrutinizerciicon\endcsname {\simpleiconsmap\symbol{"F3AF}}
+ \expandafter\def\csname simpleicon@scylladbicon\endcsname {\simpleiconsmap\symbol{"F3B0}}
+ \expandafter\def\csname simpleicon@seagateicon\endcsname {\simpleiconsmap\symbol{"F3B1}}
+ \expandafter\def\csname simpleicon@searxngicon\endcsname {\simpleiconsmap\symbol{"F3B2}}
+ \expandafter\def\csname simpleicon@seaticon\endcsname {\simpleiconsmap\symbol{"F3B3}}
+ \expandafter\def\csname simpleicon@seatgeekicon\endcsname {\simpleiconsmap\symbol{"F3B4}}
+ \expandafter\def\csname simpleicon@securityscorecardicon\endcsname {\simpleiconsmap\symbol{"F3B5}}
+ \expandafter\def\csname simpleicon@sefariaicon\endcsname {\simpleiconsmap\symbol{"F3B6}}
+ \expandafter\def\csname simpleicon@segaicon\endcsname {\simpleiconsmap\symbol{"F3B7}}
+ \expandafter\def\csname simpleicon@seleniumicon\endcsname {\simpleiconsmap\symbol{"F3B8}}
+ \expandafter\def\csname simpleicon@sellfyicon\endcsname {\simpleiconsmap\symbol{"F3B9}}
+ \expandafter\def\csname simpleicon@semanticreleaseicon\endcsname {\simpleiconsmap\symbol{"F3BA}}
+ \expandafter\def\csname simpleicon@semanticscholaricon\endcsname {\simpleiconsmap\symbol{"F3BB}}
+ \expandafter\def\csname simpleicon@semanticuiicon\endcsname {\simpleiconsmap\symbol{"F3BC}}
+ \expandafter\def\csname simpleicon@semanticuireacticon\endcsname {\simpleiconsmap\symbol{"F3BD}}
+ \expandafter\def\csname simpleicon@semanticwebicon\endcsname {\simpleiconsmap\symbol{"F3BE}}
+ \expandafter\def\csname simpleicon@semaphoreciicon\endcsname {\simpleiconsmap\symbol{"F3BF}}
+ \expandafter\def\csname simpleicon@semrushicon\endcsname {\simpleiconsmap\symbol{"F3C0}}
+ \expandafter\def\csname simpleicon@semvericon\endcsname {\simpleiconsmap\symbol{"F3C1}}
+ \expandafter\def\csname simpleicon@senchaicon\endcsname {\simpleiconsmap\symbol{"F3C2}}
+ \expandafter\def\csname simpleicon@sendgridicon\endcsname {\simpleiconsmap\symbol{"F3C3}}
+ \expandafter\def\csname simpleicon@sennheisericon\endcsname {\simpleiconsmap\symbol{"F3C4}}
+ \expandafter\def\csname simpleicon@sensuicon\endcsname {\simpleiconsmap\symbol{"F3C5}}
+ \expandafter\def\csname simpleicon@sentryicon\endcsname {\simpleiconsmap\symbol{"F3C6}}
+ \expandafter\def\csname simpleicon@sepaicon\endcsname {\simpleiconsmap\symbol{"F3C7}}
+ \expandafter\def\csname simpleicon@sequelizeicon\endcsname {\simpleiconsmap\symbol{"F3C8}}
+ \expandafter\def\csname simpleicon@serverfaulticon\endcsname {\simpleiconsmap\symbol{"F3C9}}
+ \expandafter\def\csname simpleicon@serverlessicon\endcsname {\simpleiconsmap\symbol{"F3CA}}
+ \expandafter\def\csname simpleicon@sessionicon\endcsname {\simpleiconsmap\symbol{"F3CB}}
+ \expandafter\def\csname simpleicon@sessionizeicon\endcsname {\simpleiconsmap\symbol{"F3CC}}
+ \expandafter\def\csname simpleicon@setappicon\endcsname {\simpleiconsmap\symbol{"F3CD}}
+ \expandafter\def\csname simpleicon@sfmlicon\endcsname {\simpleiconsmap\symbol{"F3CE}}
+ \expandafter\def\csname simpleicon@shadcnuiicon\endcsname {\simpleiconsmap\symbol{"F3CF}}
+ \expandafter\def\csname simpleicon@shadowicon\endcsname {\simpleiconsmap\symbol{"F3D0}}
+ \expandafter\def\csname simpleicon@shanghaimetroicon\endcsname {\simpleiconsmap\symbol{"F3D1}}
+ \expandafter\def\csname simpleicon@sharexicon\endcsname {\simpleiconsmap\symbol{"F3D2}}
+ \expandafter\def\csname simpleicon@sharpicon\endcsname {\simpleiconsmap\symbol{"F3D3}}
+ \expandafter\def\csname simpleicon@shazamicon\endcsname {\simpleiconsmap\symbol{"F3D4}}
+ \expandafter\def\csname simpleicon@shellicon\endcsname {\simpleiconsmap\symbol{"F3D5}}
+ \expandafter\def\csname simpleicon@shellyicon\endcsname {\simpleiconsmap\symbol{"F3D6}}
+ \expandafter\def\csname simpleicon@shenzhenmetroicon\endcsname {\simpleiconsmap\symbol{"F3D7}}
+ \expandafter\def\csname simpleicon@shieldsdotioicon\endcsname {\simpleiconsmap\symbol{"F3D8}}
+ \expandafter\def\csname simpleicon@shikimoriicon\endcsname {\simpleiconsmap\symbol{"F3D9}}
+ \expandafter\def\csname simpleicon@shopeeicon\endcsname {\simpleiconsmap\symbol{"F3DA}}
+ \expandafter\def\csname simpleicon@shopifyicon\endcsname {\simpleiconsmap\symbol{"F3DB}}
+ \expandafter\def\csname simpleicon@shopwareicon\endcsname {\simpleiconsmap\symbol{"F3DC}}
+ \expandafter\def\csname simpleicon@shortcuticon\endcsname {\simpleiconsmap\symbol{"F3DD}}
+ \expandafter\def\csname simpleicon@showpadicon\endcsname {\simpleiconsmap\symbol{"F3DE}}
+ \expandafter\def\csname simpleicon@showtimeicon\endcsname {\simpleiconsmap\symbol{"F3DF}}
+ \expandafter\def\csname simpleicon@showwcaseicon\endcsname {\simpleiconsmap\symbol{"F3E0}}
+ \expandafter\def\csname simpleicon@shutterstockicon\endcsname {\simpleiconsmap\symbol{"F3E1}}
+ \expandafter\def\csname simpleicon@sidekiqicon\endcsname {\simpleiconsmap\symbol{"F3E2}}
+ \expandafter\def\csname simpleicon@sidequesticon\endcsname {\simpleiconsmap\symbol{"F3E3}}
+ \expandafter\def\csname simpleicon@siemensicon\endcsname {\simpleiconsmap\symbol{"F3E4}}
+ \expandafter\def\csname simpleicon@sifiveicon\endcsname {\simpleiconsmap\symbol{"F3E5}}
+ \expandafter\def\csname simpleicon@signalicon\endcsname {\simpleiconsmap\symbol{"F3E6}}
+ \expandafter\def\csname simpleicon@similarwebicon\endcsname {\simpleiconsmap\symbol{"F3E7}}
+ \expandafter\def\csname simpleicon@simklicon\endcsname {\simpleiconsmap\symbol{"F3E8}}
+ \expandafter\def\csname simpleicon@simpleanalyticsicon\endcsname {\simpleiconsmap\symbol{"F3E9}}
+ \expandafter\def\csname simpleicon@simpleiconsicon\endcsname {\simpleiconsmap\symbol{"F3EA}}
+ \expandafter\def\csname simpleicon@simpleloginicon\endcsname {\simpleiconsmap\symbol{"F3EB}}
+ \expandafter\def\csname simpleicon@simplenoteicon\endcsname {\simpleiconsmap\symbol{"F3EC}}
+ \expandafter\def\csname simpleicon@sinaweiboicon\endcsname {\simpleiconsmap\symbol{"F3ED}}
+ \expandafter\def\csname simpleicon@singaporeairlinesicon\endcsname {\simpleiconsmap\symbol{"F3EE}}
+ \expandafter\def\csname simpleicon@singlestoreicon\endcsname {\simpleiconsmap\symbol{"F3EF}}
+ \expandafter\def\csname simpleicon@sitecoreicon\endcsname {\simpleiconsmap\symbol{"F3F0}}
+ \expandafter\def\csname simpleicon@sitepointicon\endcsname {\simpleiconsmap\symbol{"F3F1}}
+ \expandafter\def\csname simpleicon@siyuanicon\endcsname {\simpleiconsmap\symbol{"F3F2}}
+ \expandafter\def\csname simpleicon@skaffoldicon\endcsname {\simpleiconsmap\symbol{"F3F3}}
+ \expandafter\def\csname simpleicon@sketchicon\endcsname {\simpleiconsmap\symbol{"F3F4}}
+ \expandafter\def\csname simpleicon@sketchfabicon\endcsname {\simpleiconsmap\symbol{"F3F5}}
+ \expandafter\def\csname simpleicon@sketchupicon\endcsname {\simpleiconsmap\symbol{"F3F6}}
+ \expandafter\def\csname simpleicon@skillshareicon\endcsname {\simpleiconsmap\symbol{"F3F7}}
+ \expandafter\def\csname simpleicon@skodaicon\endcsname {\simpleiconsmap\symbol{"F3F8}}
+ \expandafter\def\csname simpleicon@skyicon\endcsname {\simpleiconsmap\symbol{"F3F9}}
+ \expandafter\def\csname simpleicon@skypackicon\endcsname {\simpleiconsmap\symbol{"F3FA}}
+ \expandafter\def\csname simpleicon@skyrockicon\endcsname {\simpleiconsmap\symbol{"F3FB}}
+ \expandafter\def\csname simpleicon@slackicon\endcsname {\simpleiconsmap\symbol{"F3FC}}
+ \expandafter\def\csname simpleicon@slackwareicon\endcsname {\simpleiconsmap\symbol{"F3FD}}
+ \expandafter\def\csname simpleicon@slashdoticon\endcsname {\simpleiconsmap\symbol{"F3FE}}
+ \expandafter\def\csname simpleicon@slickpicicon\endcsname {\simpleiconsmap\symbol{"F3FF}}
+ \expandafter\def\csname simpleicon@slidesicon\endcsname {\simpleiconsmap\symbol{"F400}}
+ \expandafter\def\csname simpleicon@slideshareicon\endcsname {\simpleiconsmap\symbol{"F401}}
+ \expandafter\def\csname simpleicon@slinticon\endcsname {\simpleiconsmap\symbol{"F402}}
+ \expandafter\def\csname simpleicon@smarticon\endcsname {\simpleiconsmap\symbol{"F403}}
+ \expandafter\def\csname simpleicon@smartthingsicon\endcsname {\simpleiconsmap\symbol{"F404}}
+ \expandafter\def\csname simpleicon@smashdotggicon\endcsname {\simpleiconsmap\symbol{"F405}}
+ \expandafter\def\csname simpleicon@smashingmagazineicon\endcsname {\simpleiconsmap\symbol{"F406}}
+ \expandafter\def\csname simpleicon@smrticon\endcsname {\simpleiconsmap\symbol{"F407}}
+ \expandafter\def\csname simpleicon@smugmugicon\endcsname {\simpleiconsmap\symbol{"F408}}
+ \expandafter\def\csname simpleicon@snapchaticon\endcsname {\simpleiconsmap\symbol{"F409}}
+ \expandafter\def\csname simpleicon@snapcrafticon\endcsname {\simpleiconsmap\symbol{"F40A}}
+ \expandafter\def\csname simpleicon@sncficon\endcsname {\simpleiconsmap\symbol{"F40B}}
+ \expandafter\def\csname simpleicon@snorticon\endcsname {\simpleiconsmap\symbol{"F40C}}
+ \expandafter\def\csname simpleicon@snowflakeicon\endcsname {\simpleiconsmap\symbol{"F40D}}
+ \expandafter\def\csname simpleicon@snowpackicon\endcsname {\simpleiconsmap\symbol{"F40E}}
+ \expandafter\def\csname simpleicon@snykicon\endcsname {\simpleiconsmap\symbol{"F40F}}
+ \expandafter\def\csname simpleicon@socialbladeicon\endcsname {\simpleiconsmap\symbol{"F410}}
+ \expandafter\def\csname simpleicon@society6icon\endcsname {\simpleiconsmap\symbol{"F411}}
+ \expandafter\def\csname simpleicon@socketdotioicon\endcsname {\simpleiconsmap\symbol{"F412}}
+ \expandafter\def\csname simpleicon@softpediaicon\endcsname {\simpleiconsmap\symbol{"F413}}
+ \expandafter\def\csname simpleicon@sogouicon\endcsname {\simpleiconsmap\symbol{"F414}}
+ \expandafter\def\csname simpleicon@solanaicon\endcsname {\simpleiconsmap\symbol{"F415}}
+ \expandafter\def\csname simpleicon@solidicon\endcsname {\simpleiconsmap\symbol{"F416}}
+ \expandafter\def\csname simpleicon@solidityicon\endcsname {\simpleiconsmap\symbol{"F417}}
+ \expandafter\def\csname simpleicon@sololearnicon\endcsname {\simpleiconsmap\symbol{"F418}}
+ \expandafter\def\csname simpleicon@solusicon\endcsname {\simpleiconsmap\symbol{"F419}}
+ \expandafter\def\csname simpleicon@sonaricon\endcsname {\simpleiconsmap\symbol{"F41A}}
+ \expandafter\def\csname simpleicon@sonarcloudicon\endcsname {\simpleiconsmap\symbol{"F41B}}
+ \expandafter\def\csname simpleicon@sonarlinticon\endcsname {\simpleiconsmap\symbol{"F41C}}
+ \expandafter\def\csname simpleicon@sonarqubeicon\endcsname {\simpleiconsmap\symbol{"F41D}}
+ \expandafter\def\csname simpleicon@sonarricon\endcsname {\simpleiconsmap\symbol{"F41E}}
+ \expandafter\def\csname simpleicon@sonatypeicon\endcsname {\simpleiconsmap\symbol{"F41F}}
+ \expandafter\def\csname simpleicon@songkickicon\endcsname {\simpleiconsmap\symbol{"F420}}
+ \expandafter\def\csname simpleicon@songodaicon\endcsname {\simpleiconsmap\symbol{"F421}}
+ \expandafter\def\csname simpleicon@sonicwallicon\endcsname {\simpleiconsmap\symbol{"F422}}
+ \expandafter\def\csname simpleicon@sonosicon\endcsname {\simpleiconsmap\symbol{"F423}}
+ \expandafter\def\csname simpleicon@sonyicon\endcsname {\simpleiconsmap\symbol{"F424}}
+ \expandafter\def\csname simpleicon@sorianaicon\endcsname {\simpleiconsmap\symbol{"F425}}
+ \expandafter\def\csname simpleicon@soundchartsicon\endcsname {\simpleiconsmap\symbol{"F426}}
+ \expandafter\def\csname simpleicon@soundcloudicon\endcsname {\simpleiconsmap\symbol{"F427}}
+ \expandafter\def\csname simpleicon@sourceengineicon\endcsname {\simpleiconsmap\symbol{"F428}}
+ \expandafter\def\csname simpleicon@sourceforgeicon\endcsname {\simpleiconsmap\symbol{"F429}}
+ \expandafter\def\csname simpleicon@sourcehuticon\endcsname {\simpleiconsmap\symbol{"F42A}}
+ \expandafter\def\csname simpleicon@sourcetreeicon\endcsname {\simpleiconsmap\symbol{"F42B}}
+ \expandafter\def\csname simpleicon@southwestairlinesicon\endcsname {\simpleiconsmap\symbol{"F42C}}
+ \expandafter\def\csname simpleicon@spacemacsicon\endcsname {\simpleiconsmap\symbol{"F42D}}
+ \expandafter\def\csname simpleicon@spaceshipicon\endcsname {\simpleiconsmap\symbol{"F42E}}
+ \expandafter\def\csname simpleicon@spacexicon\endcsname {\simpleiconsmap\symbol{"F42F}}
+ \expandafter\def\csname simpleicon@spacyicon\endcsname {\simpleiconsmap\symbol{"F430}}
+ \expandafter\def\csname simpleicon@sparkaricon\endcsname {\simpleiconsmap\symbol{"F431}}
+ \expandafter\def\csname simpleicon@sparkasseicon\endcsname {\simpleiconsmap\symbol{"F432}}
+ \expandafter\def\csname simpleicon@sparkfunicon\endcsname {\simpleiconsmap\symbol{"F433}}
+ \expandafter\def\csname simpleicon@sparkposticon\endcsname {\simpleiconsmap\symbol{"F434}}
+ \expandafter\def\csname simpleicon@spdxicon\endcsname {\simpleiconsmap\symbol{"F435}}
+ \expandafter\def\csname simpleicon@speakerdeckicon\endcsname {\simpleiconsmap\symbol{"F436}}
+ \expandafter\def\csname simpleicon@spectrumicon\endcsname {\simpleiconsmap\symbol{"F437}}
+ \expandafter\def\csname simpleicon@speedtesticon\endcsname {\simpleiconsmap\symbol{"F438}}
+ \expandafter\def\csname simpleicon@speedypageicon\endcsname {\simpleiconsmap\symbol{"F439}}
+ \expandafter\def\csname simpleicon@sphinxicon\endcsname {\simpleiconsmap\symbol{"F43A}}
+ \expandafter\def\csname simpleicon@spigotmcicon\endcsname {\simpleiconsmap\symbol{"F43B}}
+ \expandafter\def\csname simpleicon@spineicon\endcsname {\simpleiconsmap\symbol{"F43C}}
+ \expandafter\def\csname simpleicon@spinnakericon\endcsname {\simpleiconsmap\symbol{"F43D}}
+ \expandafter\def\csname simpleicon@spinrillaicon\endcsname {\simpleiconsmap\symbol{"F43E}}
+ \expandafter\def\csname simpleicon@splunkicon\endcsname {\simpleiconsmap\symbol{"F43F}}
+ \expandafter\def\csname simpleicon@spojicon\endcsname {\simpleiconsmap\symbol{"F440}}
+ \expandafter\def\csname simpleicon@spondicon\endcsname {\simpleiconsmap\symbol{"F441}}
+ \expandafter\def\csname simpleicon@spotifyicon\endcsname {\simpleiconsmap\symbol{"F442}}
+ \expandafter\def\csname simpleicon@spotlighticon\endcsname {\simpleiconsmap\symbol{"F443}}
+ \expandafter\def\csname simpleicon@spreadshirticon\endcsname {\simpleiconsmap\symbol{"F444}}
+ \expandafter\def\csname simpleicon@spreakericon\endcsname {\simpleiconsmap\symbol{"F445}}
+ \expandafter\def\csname simpleicon@springicon\endcsname {\simpleiconsmap\symbol{"F446}}
+ \expandafter\def\csname simpleicon@springcreatorsicon\endcsname {\simpleiconsmap\symbol{"F447}}
+ \expandafter\def\csname simpleicon@springbooticon\endcsname {\simpleiconsmap\symbol{"F448}}
+ \expandafter\def\csname simpleicon@springsecurityicon\endcsname {\simpleiconsmap\symbol{"F449}}
+ \expandafter\def\csname simpleicon@spyderideicon\endcsname {\simpleiconsmap\symbol{"F44A}}
+ \expandafter\def\csname simpleicon@sqlalchemyicon\endcsname {\simpleiconsmap\symbol{"F44B}}
+ \expandafter\def\csname simpleicon@sqliteicon\endcsname {\simpleiconsmap\symbol{"F44C}}
+ \expandafter\def\csname simpleicon@squareicon\endcsname {\simpleiconsmap\symbol{"F44D}}
+ \expandafter\def\csname simpleicon@squareenixicon\endcsname {\simpleiconsmap\symbol{"F44E}}
+ \expandafter\def\csname simpleicon@squarespaceicon\endcsname {\simpleiconsmap\symbol{"F44F}}
+ \expandafter\def\csname simpleicon@srgssricon\endcsname {\simpleiconsmap\symbol{"F450}}
+ \expandafter\def\csname simpleicon@ssrnicon\endcsname {\simpleiconsmap\symbol{"F451}}
+ \expandafter\def\csname simpleicon@ssticon\endcsname {\simpleiconsmap\symbol{"F452}}
+ \expandafter\def\csname simpleicon@stackbiticon\endcsname {\simpleiconsmap\symbol{"F453}}
+ \expandafter\def\csname simpleicon@stackblitzicon\endcsname {\simpleiconsmap\symbol{"F454}}
+ \expandafter\def\csname simpleicon@stackediticon\endcsname {\simpleiconsmap\symbol{"F455}}
+ \expandafter\def\csname simpleicon@stackexchangeicon\endcsname {\simpleiconsmap\symbol{"F456}}
+ \expandafter\def\csname simpleicon@stackhawkicon\endcsname {\simpleiconsmap\symbol{"F457}}
+ \expandafter\def\csname simpleicon@stackoverflowicon\endcsname {\simpleiconsmap\symbol{"F458}}
+ \expandafter\def\csname simpleicon@stackpathicon\endcsname {\simpleiconsmap\symbol{"F459}}
+ \expandafter\def\csname simpleicon@stackshareicon\endcsname {\simpleiconsmap\symbol{"F45A}}
+ \expandafter\def\csname simpleicon@stadiaicon\endcsname {\simpleiconsmap\symbol{"F45B}}
+ \expandafter\def\csname simpleicon@staffbaseicon\endcsname {\simpleiconsmap\symbol{"F45C}}
+ \expandafter\def\csname simpleicon@stagetimericon\endcsname {\simpleiconsmap\symbol{"F45D}}
+ \expandafter\def\csname simpleicon@standardjsicon\endcsname {\simpleiconsmap\symbol{"F45E}}
+ \expandafter\def\csname simpleicon@standardresumeicon\endcsname {\simpleiconsmap\symbol{"F45F}}
+ \expandafter\def\csname simpleicon@starbucksicon\endcsname {\simpleiconsmap\symbol{"F460}}
+ \expandafter\def\csname simpleicon@stardockicon\endcsname {\simpleiconsmap\symbol{"F461}}
+ \expandafter\def\csname simpleicon@starlingbankicon\endcsname {\simpleiconsmap\symbol{"F462}}
+ \expandafter\def\csname simpleicon@starshipicon\endcsname {\simpleiconsmap\symbol{"F463}}
+ \expandafter\def\csname simpleicon@startrekicon\endcsname {\simpleiconsmap\symbol{"F464}}
+ \expandafter\def\csname simpleicon@starzicon\endcsname {\simpleiconsmap\symbol{"F465}}
+ \expandafter\def\csname simpleicon@statamicicon\endcsname {\simpleiconsmap\symbol{"F466}}
+ \expandafter\def\csname simpleicon@statistaicon\endcsname {\simpleiconsmap\symbol{"F467}}
+ \expandafter\def\csname simpleicon@statuspageicon\endcsname {\simpleiconsmap\symbol{"F468}}
+ \expandafter\def\csname simpleicon@statuspalicon\endcsname {\simpleiconsmap\symbol{"F469}}
+ \expandafter\def\csname simpleicon@steamicon\endcsname {\simpleiconsmap\symbol{"F46A}}
+ \expandafter\def\csname simpleicon@steamdbicon\endcsname {\simpleiconsmap\symbol{"F46B}}
+ \expandafter\def\csname simpleicon@steamdeckicon\endcsname {\simpleiconsmap\symbol{"F46C}}
+ \expandafter\def\csname simpleicon@steamworksicon\endcsname {\simpleiconsmap\symbol{"F46D}}
+ \expandafter\def\csname simpleicon@steelseriesicon\endcsname {\simpleiconsmap\symbol{"F46E}}
+ \expandafter\def\csname simpleicon@steemicon\endcsname {\simpleiconsmap\symbol{"F46F}}
+ \expandafter\def\csname simpleicon@steemiticon\endcsname {\simpleiconsmap\symbol{"F470}}
+ \expandafter\def\csname simpleicon@steinbergicon\endcsname {\simpleiconsmap\symbol{"F471}}
+ \expandafter\def\csname simpleicon@stellaricon\endcsname {\simpleiconsmap\symbol{"F472}}
+ \expandafter\def\csname simpleicon@stencilicon\endcsname {\simpleiconsmap\symbol{"F473}}
+ \expandafter\def\csname simpleicon@stencylicon\endcsname {\simpleiconsmap\symbol{"F474}}
+ \expandafter\def\csname simpleicon@stimulusicon\endcsname {\simpleiconsmap\symbol{"F475}}
+ \expandafter\def\csname simpleicon@stitchericon\endcsname {\simpleiconsmap\symbol{"F476}}
+ \expandafter\def\csname simpleicon@stmicroelectronicsicon\endcsname {\simpleiconsmap\symbol{"F477}}
+ \expandafter\def\csname simpleicon@stockxicon\endcsname {\simpleiconsmap\symbol{"F478}}
+ \expandafter\def\csname simpleicon@stopstalkicon\endcsname {\simpleiconsmap\symbol{"F479}}
+ \expandafter\def\csname simpleicon@storyblokicon\endcsname {\simpleiconsmap\symbol{"F47A}}
+ \expandafter\def\csname simpleicon@storybookicon\endcsname {\simpleiconsmap\symbol{"F47B}}
+ \expandafter\def\csname simpleicon@strapiicon\endcsname {\simpleiconsmap\symbol{"F47C}}
+ \expandafter\def\csname simpleicon@stravaicon\endcsname {\simpleiconsmap\symbol{"F47D}}
+ \expandafter\def\csname simpleicon@streamlabsicon\endcsname {\simpleiconsmap\symbol{"F47E}}
+ \expandafter\def\csname simpleicon@streamliticon\endcsname {\simpleiconsmap\symbol{"F47F}}
+ \expandafter\def\csname simpleicon@streamrunnersicon\endcsname {\simpleiconsmap\symbol{"F480}}
+ \expandafter\def\csname simpleicon@stripeicon\endcsname {\simpleiconsmap\symbol{"F481}}
+ \expandafter\def\csname simpleicon@strongswanicon\endcsname {\simpleiconsmap\symbol{"F482}}
+ \expandafter\def\csname simpleicon@strykericon\endcsname {\simpleiconsmap\symbol{"F483}}
+ \expandafter\def\csname simpleicon@stubhubicon\endcsname {\simpleiconsmap\symbol{"F484}}
+ \expandafter\def\csname simpleicon@studio3ticon\endcsname {\simpleiconsmap\symbol{"F485}}
+ \expandafter\def\csname simpleicon@studyverseicon\endcsname {\simpleiconsmap\symbol{"F486}}
+ \expandafter\def\csname simpleicon@styledcomponentsicon\endcsname {\simpleiconsmap\symbol{"F487}}
+ \expandafter\def\csname simpleicon@stylelinticon\endcsname {\simpleiconsmap\symbol{"F488}}
+ \expandafter\def\csname simpleicon@styleshareicon\endcsname {\simpleiconsmap\symbol{"F489}}
+ \expandafter\def\csname simpleicon@stylusicon\endcsname {\simpleiconsmap\symbol{"F48A}}
+ \expandafter\def\csname simpleicon@subaruicon\endcsname {\simpleiconsmap\symbol{"F48B}}
+ \expandafter\def\csname simpleicon@sublimetexticon\endcsname {\simpleiconsmap\symbol{"F48C}}
+ \expandafter\def\csname simpleicon@substackicon\endcsname {\simpleiconsmap\symbol{"F48D}}
+ \expandafter\def\csname simpleicon@subtitleediticon\endcsname {\simpleiconsmap\symbol{"F48E}}
+ \expandafter\def\csname simpleicon@subversionicon\endcsname {\simpleiconsmap\symbol{"F48F}}
+ \expandafter\def\csname simpleicon@sucklessicon\endcsname {\simpleiconsmap\symbol{"F490}}
+ \expandafter\def\csname simpleicon@suiicon\endcsname {\simpleiconsmap\symbol{"F491}}
+ \expandafter\def\csname simpleicon@sumologicicon\endcsname {\simpleiconsmap\symbol{"F492}}
+ \expandafter\def\csname simpleicon@sunoicon\endcsname {\simpleiconsmap\symbol{"F493}}
+ \expandafter\def\csname simpleicon@sunriseicon\endcsname {\simpleiconsmap\symbol{"F494}}
+ \expandafter\def\csname simpleicon@supabaseicon\endcsname {\simpleiconsmap\symbol{"F495}}
+ \expandafter\def\csname simpleicon@supercreaseicon\endcsname {\simpleiconsmap\symbol{"F496}}
+ \expandafter\def\csname simpleicon@supermicroicon\endcsname {\simpleiconsmap\symbol{"F497}}
+ \expandafter\def\csname simpleicon@superusericon\endcsname {\simpleiconsmap\symbol{"F498}}
+ \expandafter\def\csname simpleicon@surrealdbicon\endcsname {\simpleiconsmap\symbol{"F499}}
+ \expandafter\def\csname simpleicon@surveymonkeyicon\endcsname {\simpleiconsmap\symbol{"F49A}}
+ \expandafter\def\csname simpleicon@suseicon\endcsname {\simpleiconsmap\symbol{"F49B}}
+ \expandafter\def\csname simpleicon@suzukiicon\endcsname {\simpleiconsmap\symbol{"F49C}}
+ \expandafter\def\csname simpleicon@svelteicon\endcsname {\simpleiconsmap\symbol{"F49D}}
+ \expandafter\def\csname simpleicon@svgicon\endcsname {\simpleiconsmap\symbol{"F49E}}
+ \expandafter\def\csname simpleicon@svgdotjsicon\endcsname {\simpleiconsmap\symbol{"F49F}}
+ \expandafter\def\csname simpleicon@svgoicon\endcsname {\simpleiconsmap\symbol{"F4A0}}
+ \expandafter\def\csname simpleicon@svgtraceicon\endcsname {\simpleiconsmap\symbol{"F4A1}}
+ \expandafter\def\csname simpleicon@swaggericon\endcsname {\simpleiconsmap\symbol{"F4A2}}
+ \expandafter\def\csname simpleicon@swarmicon\endcsname {\simpleiconsmap\symbol{"F4A3}}
+ \expandafter\def\csname simpleicon@swayicon\endcsname {\simpleiconsmap\symbol{"F4A4}}
+ \expandafter\def\csname simpleicon@swcicon\endcsname {\simpleiconsmap\symbol{"F4A5}}
+ \expandafter\def\csname simpleicon@swifticon\endcsname {\simpleiconsmap\symbol{"F4A6}}
+ \expandafter\def\csname simpleicon@swiggyicon\endcsname {\simpleiconsmap\symbol{"F4A7}}
+ \expandafter\def\csname simpleicon@swipericon\endcsname {\simpleiconsmap\symbol{"F4A8}}
+ \expandafter\def\csname simpleicon@swricon\endcsname {\simpleiconsmap\symbol{"F4A9}}
+ \expandafter\def\csname simpleicon@symantecicon\endcsname {\simpleiconsmap\symbol{"F4AA}}
+ \expandafter\def\csname simpleicon@symbolabicon\endcsname {\simpleiconsmap\symbol{"F4AB}}
+ \expandafter\def\csname simpleicon@symfonyicon\endcsname {\simpleiconsmap\symbol{"F4AC}}
+ \expandafter\def\csname simpleicon@symphonyicon\endcsname {\simpleiconsmap\symbol{"F4AD}}
+ \expandafter\def\csname simpleicon@sympyicon\endcsname {\simpleiconsmap\symbol{"F4AE}}
+ \expandafter\def\csname simpleicon@syncthingicon\endcsname {\simpleiconsmap\symbol{"F4AF}}
+ \expandafter\def\csname simpleicon@synologyicon\endcsname {\simpleiconsmap\symbol{"F4B0}}
+ \expandafter\def\csname simpleicon@system76icon\endcsname {\simpleiconsmap\symbol{"F4B1}}
+ \expandafter\def\csname simpleicon@tabelogicon\endcsname {\simpleiconsmap\symbol{"F4B2}}
+ \expandafter\def\csname simpleicon@tableauicon\endcsname {\simpleiconsmap\symbol{"F4B3}}
+ \expandafter\def\csname simpleicon@tablecheckicon\endcsname {\simpleiconsmap\symbol{"F4B4}}
+ \expandafter\def\csname simpleicon@tacobellicon\endcsname {\simpleiconsmap\symbol{"F4B5}}
+ \expandafter\def\csname simpleicon@tadoicon\endcsname {\simpleiconsmap\symbol{"F4B6}}
+ \expandafter\def\csname simpleicon@taichigraphicsicon\endcsname {\simpleiconsmap\symbol{"F4B7}}
+ \expandafter\def\csname simpleicon@taichilangicon\endcsname {\simpleiconsmap\symbol{"F4B8}}
+ \expandafter\def\csname simpleicon@tailsicon\endcsname {\simpleiconsmap\symbol{"F4B9}}
+ \expandafter\def\csname simpleicon@tailscaleicon\endcsname {\simpleiconsmap\symbol{"F4BA}}
+ \expandafter\def\csname simpleicon@tailwindcssicon\endcsname {\simpleiconsmap\symbol{"F4BB}}
+ \expandafter\def\csname simpleicon@taipyicon\endcsname {\simpleiconsmap\symbol{"F4BC}}
+ \expandafter\def\csname simpleicon@taketwointeractivesoftwareicon\endcsname {\simpleiconsmap\symbol{"F4BD}}
+ \expandafter\def\csname simpleicon@talendicon\endcsname {\simpleiconsmap\symbol{"F4BE}}
+ \expandafter\def\csname simpleicon@talenthouseicon\endcsname {\simpleiconsmap\symbol{"F4BF}}
+ \expandafter\def\csname simpleicon@talosicon\endcsname {\simpleiconsmap\symbol{"F4C0}}
+ \expandafter\def\csname simpleicon@tamiyaicon\endcsname {\simpleiconsmap\symbol{"F4C1}}
+ \expandafter\def\csname simpleicon@tampermonkeyicon\endcsname {\simpleiconsmap\symbol{"F4C2}}
+ \expandafter\def\csname simpleicon@taobaoicon\endcsname {\simpleiconsmap\symbol{"F4C3}}
+ \expandafter\def\csname simpleicon@tapasicon\endcsname {\simpleiconsmap\symbol{"F4C4}}
+ \expandafter\def\csname simpleicon@targeticon\endcsname {\simpleiconsmap\symbol{"F4C5}}
+ \expandafter\def\csname simpleicon@taromicon\endcsname {\simpleiconsmap\symbol{"F4C6}}
+ \expandafter\def\csname simpleicon@taskicon\endcsname {\simpleiconsmap\symbol{"F4C7}}
+ \expandafter\def\csname simpleicon@tasmotaicon\endcsname {\simpleiconsmap\symbol{"F4C8}}
+ \expandafter\def\csname simpleicon@tataicon\endcsname {\simpleiconsmap\symbol{"F4C9}}
+ \expandafter\def\csname simpleicon@tauriicon\endcsname {\simpleiconsmap\symbol{"F4CA}}
+ \expandafter\def\csname simpleicon@taxbuzzicon\endcsname {\simpleiconsmap\symbol{"F4CB}}
+ \expandafter\def\csname simpleicon@tcsicon\endcsname {\simpleiconsmap\symbol{"F4CC}}
+ \expandafter\def\csname simpleicon@tealicon\endcsname {\simpleiconsmap\symbol{"F4CD}}
+ \expandafter\def\csname simpleicon@teamcityicon\endcsname {\simpleiconsmap\symbol{"F4CE}}
+ \expandafter\def\csname simpleicon@teamspeakicon\endcsname {\simpleiconsmap\symbol{"F4CF}}
+ \expandafter\def\csname simpleicon@teamviewericon\endcsname {\simpleiconsmap\symbol{"F4D0}}
+ \expandafter\def\csname simpleicon@techcrunchicon\endcsname {\simpleiconsmap\symbol{"F4D1}}
+ \expandafter\def\csname simpleicon@tedicon\endcsname {\simpleiconsmap\symbol{"F4D2}}
+ \expandafter\def\csname simpleicon@teepublicicon\endcsname {\simpleiconsmap\symbol{"F4D3}}
+ \expandafter\def\csname simpleicon@teespringicon\endcsname {\simpleiconsmap\symbol{"F4D4}}
+ \expandafter\def\csname simpleicon@tektonicon\endcsname {\simpleiconsmap\symbol{"F4D5}}
+ \expandafter\def\csname simpleicon@tele5icon\endcsname {\simpleiconsmap\symbol{"F4D6}}
+ \expandafter\def\csname simpleicon@telegramicon\endcsname {\simpleiconsmap\symbol{"F4D7}}
+ \expandafter\def\csname simpleicon@telegraphicon\endcsname {\simpleiconsmap\symbol{"F4D8}}
+ \expandafter\def\csname simpleicon@telequebecicon\endcsname {\simpleiconsmap\symbol{"F4D9}}
+ \expandafter\def\csname simpleicon@temporalicon\endcsname {\simpleiconsmap\symbol{"F4DA}}
+ \expandafter\def\csname simpleicon@tencentqqicon\endcsname {\simpleiconsmap\symbol{"F4DB}}
+ \expandafter\def\csname simpleicon@tensorflowicon\endcsname {\simpleiconsmap\symbol{"F4DC}}
+ \expandafter\def\csname simpleicon@teradataicon\endcsname {\simpleiconsmap\symbol{"F4DD}}
+ \expandafter\def\csname simpleicon@teratailicon\endcsname {\simpleiconsmap\symbol{"F4DE}}
+ \expandafter\def\csname simpleicon@termiusicon\endcsname {\simpleiconsmap\symbol{"F4DF}}
+ \expandafter\def\csname simpleicon@terraformicon\endcsname {\simpleiconsmap\symbol{"F4E0}}
+ \expandafter\def\csname simpleicon@tescoicon\endcsname {\simpleiconsmap\symbol{"F4E1}}
+ \expandafter\def\csname simpleicon@teslaicon\endcsname {\simpleiconsmap\symbol{"F4E2}}
+ \expandafter\def\csname simpleicon@testcafeicon\endcsname {\simpleiconsmap\symbol{"F4E3}}
+ \expandafter\def\csname simpleicon@testinicon\endcsname {\simpleiconsmap\symbol{"F4E4}}
+ \expandafter\def\csname simpleicon@testinglibraryicon\endcsname {\simpleiconsmap\symbol{"F4E5}}
+ \expandafter\def\csname simpleicon@testrailicon\endcsname {\simpleiconsmap\symbol{"F4E6}}
+ \expandafter\def\csname simpleicon@tethericon\endcsname {\simpleiconsmap\symbol{"F4E7}}
+ \expandafter\def\csname simpleicon@textpatternicon\endcsname {\simpleiconsmap\symbol{"F4E8}}
+ \expandafter\def\csname simpleicon@tgaicon\endcsname {\simpleiconsmap\symbol{"F4E9}}
+ \expandafter\def\csname simpleicon@thangsicon\endcsname {\simpleiconsmap\symbol{"F4EA}}
+ \expandafter\def\csname simpleicon@thanosicon\endcsname {\simpleiconsmap\symbol{"F4EB}}
+ \expandafter\def\csname simpleicon@thealgorithmsicon\endcsname {\simpleiconsmap\symbol{"F4EC}}
+ \expandafter\def\csname simpleicon@theboringcompanyicon\endcsname {\simpleiconsmap\symbol{"F4ED}}
+ \expandafter\def\csname simpleicon@theconversationicon\endcsname {\simpleiconsmap\symbol{"F4EE}}
+ \expandafter\def\csname simpleicon@thefinalsicon\endcsname {\simpleiconsmap\symbol{"F4EF}}
+ \expandafter\def\csname simpleicon@theguardianicon\endcsname {\simpleiconsmap\symbol{"F4F0}}
+ \expandafter\def\csname simpleicon@theirishtimesicon\endcsname {\simpleiconsmap\symbol{"F4F1}}
+ \expandafter\def\csname simpleicon@themightyicon\endcsname {\simpleiconsmap\symbol{"F4F2}}
+ \expandafter\def\csname simpleicon@themodelsresourceicon\endcsname {\simpleiconsmap\symbol{"F4F3}}
+ \expandafter\def\csname simpleicon@themoviedatabaseicon\endcsname {\simpleiconsmap\symbol{"F4F4}}
+ \expandafter\def\csname simpleicon@thenorthfaceicon\endcsname {\simpleiconsmap\symbol{"F4F5}}
+ \expandafter\def\csname simpleicon@theodinprojecticon\endcsname {\simpleiconsmap\symbol{"F4F6}}
+ \expandafter\def\csname simpleicon@theregistericon\endcsname {\simpleiconsmap\symbol{"F4F7}}
+ \expandafter\def\csname simpleicon@thesoundsresourceicon\endcsname {\simpleiconsmap\symbol{"F4F8}}
+ \expandafter\def\csname simpleicon@thespritersresourceicon\endcsname {\simpleiconsmap\symbol{"F4F9}}
+ \expandafter\def\csname simpleicon@thewashingtonposticon\endcsname {\simpleiconsmap\symbol{"F4FA}}
+ \expandafter\def\csname simpleicon@theweatherchannelicon\endcsname {\simpleiconsmap\symbol{"F4FB}}
+ \expandafter\def\csname simpleicon@thingiverseicon\endcsname {\simpleiconsmap\symbol{"F4FC}}
+ \expandafter\def\csname simpleicon@thinkpadicon\endcsname {\simpleiconsmap\symbol{"F4FD}}
+ \expandafter\def\csname simpleicon@thirdwebicon\endcsname {\simpleiconsmap\symbol{"F4FE}}
+ \expandafter\def\csname simpleicon@threadlessicon\endcsname {\simpleiconsmap\symbol{"F4FF}}
+ \expandafter\def\csname simpleicon@threadsicon\endcsname {\simpleiconsmap\symbol{"F500}}
+ \expandafter\def\csname simpleicon@threedotjsicon\endcsname {\simpleiconsmap\symbol{"F501}}
+ \expandafter\def\csname simpleicon@threemaicon\endcsname {\simpleiconsmap\symbol{"F502}}
+ \expandafter\def\csname simpleicon@thumbtackicon\endcsname {\simpleiconsmap\symbol{"F503}}
+ \expandafter\def\csname simpleicon@thunderbirdicon\endcsname {\simpleiconsmap\symbol{"F504}}
+ \expandafter\def\csname simpleicon@thunderstoreicon\endcsname {\simpleiconsmap\symbol{"F505}}
+ \expandafter\def\csname simpleicon@thurgauerkantonalbankicon\endcsname {\simpleiconsmap\symbol{"F506}}
+ \expandafter\def\csname simpleicon@thymeleaficon\endcsname {\simpleiconsmap\symbol{"F507}}
+ \expandafter\def\csname simpleicon@ticketmastericon\endcsname {\simpleiconsmap\symbol{"F508}}
+ \expandafter\def\csname simpleicon@ticktickicon\endcsname {\simpleiconsmap\symbol{"F509}}
+ \expandafter\def\csname simpleicon@tidalicon\endcsname {\simpleiconsmap\symbol{"F50A}}
+ \expandafter\def\csname simpleicon@tiddlywikiicon\endcsname {\simpleiconsmap\symbol{"F50B}}
+ \expandafter\def\csname simpleicon@tideicon\endcsname {\simpleiconsmap\symbol{"F50C}}
+ \expandafter\def\csname simpleicon@tidyverseicon\endcsname {\simpleiconsmap\symbol{"F50D}}
+ \expandafter\def\csname simpleicon@tietoevryicon\endcsname {\simpleiconsmap\symbol{"F50E}}
+ \expandafter\def\csname simpleicon@tiktokicon\endcsname {\simpleiconsmap\symbol{"F50F}}
+ \expandafter\def\csname simpleicon@tildapublishingicon\endcsname {\simpleiconsmap\symbol{"F510}}
+ \expandafter\def\csname simpleicon@tileicon\endcsname {\simpleiconsmap\symbol{"F511}}
+ \expandafter\def\csname simpleicon@timescaleicon\endcsname {\simpleiconsmap\symbol{"F512}}
+ \expandafter\def\csname simpleicon@tinaicon\endcsname {\simpleiconsmap\symbol{"F513}}
+ \expandafter\def\csname simpleicon@tindericon\endcsname {\simpleiconsmap\symbol{"F514}}
+ \expandafter\def\csname simpleicon@tindieicon\endcsname {\simpleiconsmap\symbol{"F515}}
+ \expandafter\def\csname simpleicon@tinkercadicon\endcsname {\simpleiconsmap\symbol{"F516}}
+ \expandafter\def\csname simpleicon@tinygradicon\endcsname {\simpleiconsmap\symbol{"F517}}
+ \expandafter\def\csname simpleicon@tinylettericon\endcsname {\simpleiconsmap\symbol{"F518}}
+ \expandafter\def\csname simpleicon@tistoryicon\endcsname {\simpleiconsmap\symbol{"F519}}
+ \expandafter\def\csname simpleicon@tldrawicon\endcsname {\simpleiconsmap\symbol{"F51A}}
+ \expandafter\def\csname simpleicon@tmobileicon\endcsname {\simpleiconsmap\symbol{"F51B}}
+ \expandafter\def\csname simpleicon@tmuxicon\endcsname {\simpleiconsmap\symbol{"F51C}}
+ \expandafter\def\csname simpleicon@todoisticon\endcsname {\simpleiconsmap\symbol{"F51D}}
+ \expandafter\def\csname simpleicon@togglicon\endcsname {\simpleiconsmap\symbol{"F51E}}
+ \expandafter\def\csname simpleicon@toggltrackicon\endcsname {\simpleiconsmap\symbol{"F51F}}
+ \expandafter\def\csname simpleicon@tokyometroicon\endcsname {\simpleiconsmap\symbol{"F520}}
+ \expandafter\def\csname simpleicon@tollicon\endcsname {\simpleiconsmap\symbol{"F521}}
+ \expandafter\def\csname simpleicon@tomlicon\endcsname {\simpleiconsmap\symbol{"F522}}
+ \expandafter\def\csname simpleicon@tomorrowlandicon\endcsname {\simpleiconsmap\symbol{"F523}}
+ \expandafter\def\csname simpleicon@tonicon\endcsname {\simpleiconsmap\symbol{"F524}}
+ \expandafter\def\csname simpleicon@topcodericon\endcsname {\simpleiconsmap\symbol{"F525}}
+ \expandafter\def\csname simpleicon@topdotggicon\endcsname {\simpleiconsmap\symbol{"F526}}
+ \expandafter\def\csname simpleicon@toptalicon\endcsname {\simpleiconsmap\symbol{"F527}}
+ \expandafter\def\csname simpleicon@torbrowsericon\endcsname {\simpleiconsmap\symbol{"F528}}
+ \expandafter\def\csname simpleicon@torprojecticon\endcsname {\simpleiconsmap\symbol{"F529}}
+ \expandafter\def\csname simpleicon@toshibaicon\endcsname {\simpleiconsmap\symbol{"F52A}}
+ \expandafter\def\csname simpleicon@totvsicon\endcsname {\simpleiconsmap\symbol{"F52B}}
+ \expandafter\def\csname simpleicon@tourboxicon\endcsname {\simpleiconsmap\symbol{"F52C}}
+ \expandafter\def\csname simpleicon@towericon\endcsname {\simpleiconsmap\symbol{"F52D}}
+ \expandafter\def\csname simpleicon@toyotaicon\endcsname {\simpleiconsmap\symbol{"F52E}}
+ \expandafter\def\csname simpleicon@tplinkicon\endcsname {\simpleiconsmap\symbol{"F52F}}
+ \expandafter\def\csname simpleicon@tqdmicon\endcsname {\simpleiconsmap\symbol{"F530}}
+ \expandafter\def\csname simpleicon@traccaricon\endcsname {\simpleiconsmap\symbol{"F531}}
+ \expandafter\def\csname simpleicon@tradingviewicon\endcsname {\simpleiconsmap\symbol{"F532}}
+ \expandafter\def\csname simpleicon@traefikmeshicon\endcsname {\simpleiconsmap\symbol{"F533}}
+ \expandafter\def\csname simpleicon@traefikproxyicon\endcsname {\simpleiconsmap\symbol{"F534}}
+ \expandafter\def\csname simpleicon@trailforksicon\endcsname {\simpleiconsmap\symbol{"F535}}
+ \expandafter\def\csname simpleicon@trainerroadicon\endcsname {\simpleiconsmap\symbol{"F536}}
+ \expandafter\def\csname simpleicon@trakticon\endcsname {\simpleiconsmap\symbol{"F537}}
+ \expandafter\def\csname simpleicon@transifexicon\endcsname {\simpleiconsmap\symbol{"F538}}
+ \expandafter\def\csname simpleicon@transmissionicon\endcsname {\simpleiconsmap\symbol{"F539}}
+ \expandafter\def\csname simpleicon@transportforirelandicon\endcsname {\simpleiconsmap\symbol{"F53A}}
+ \expandafter\def\csname simpleicon@transportforlondonicon\endcsname {\simpleiconsmap\symbol{"F53B}}
+ \expandafter\def\csname simpleicon@travisciicon\endcsname {\simpleiconsmap\symbol{"F53C}}
+ \expandafter\def\csname simpleicon@treehouseicon\endcsname {\simpleiconsmap\symbol{"F53D}}
+ \expandafter\def\csname simpleicon@trelloicon\endcsname {\simpleiconsmap\symbol{"F53E}}
+ \expandafter\def\csname simpleicon@trendmicroicon\endcsname {\simpleiconsmap\symbol{"F53F}}
+ \expandafter\def\csname simpleicon@treyarchicon\endcsname {\simpleiconsmap\symbol{"F540}}
+ \expandafter\def\csname simpleicon@tricentisicon\endcsname {\simpleiconsmap\symbol{"F541}}
+ \expandafter\def\csname simpleicon@triliumicon\endcsname {\simpleiconsmap\symbol{"F542}}
+ \expandafter\def\csname simpleicon@trillericon\endcsname {\simpleiconsmap\symbol{"F543}}
+ \expandafter\def\csname simpleicon@trillertvicon\endcsname {\simpleiconsmap\symbol{"F544}}
+ \expandafter\def\csname simpleicon@trinoicon\endcsname {\simpleiconsmap\symbol{"F545}}
+ \expandafter\def\csname simpleicon@tripadvisoricon\endcsname {\simpleiconsmap\symbol{"F546}}
+ \expandafter\def\csname simpleicon@tripdotcomicon\endcsname {\simpleiconsmap\symbol{"F547}}
+ \expandafter\def\csname simpleicon@trivagoicon\endcsname {\simpleiconsmap\symbol{"F548}}
+ \expandafter\def\csname simpleicon@trivyicon\endcsname {\simpleiconsmap\symbol{"F549}}
+ \expandafter\def\csname simpleicon@troveicon\endcsname {\simpleiconsmap\symbol{"F54A}}
+ \expandafter\def\csname simpleicon@trpcicon\endcsname {\simpleiconsmap\symbol{"F54B}}
+ \expandafter\def\csname simpleicon@truenasicon\endcsname {\simpleiconsmap\symbol{"F54C}}
+ \expandafter\def\csname simpleicon@trueupicon\endcsname {\simpleiconsmap\symbol{"F54D}}
+ \expandafter\def\csname simpleicon@truliaicon\endcsname {\simpleiconsmap\symbol{"F54E}}
+ \expandafter\def\csname simpleicon@trustedshopsicon\endcsname {\simpleiconsmap\symbol{"F54F}}
+ \expandafter\def\csname simpleicon@trustpiloticon\endcsname {\simpleiconsmap\symbol{"F550}}
+ \expandafter\def\csname simpleicon@tryhackmeicon\endcsname {\simpleiconsmap\symbol{"F551}}
+ \expandafter\def\csname simpleicon@tryitonlineicon\endcsname {\simpleiconsmap\symbol{"F552}}
+ \expandafter\def\csname simpleicon@tsnodeicon\endcsname {\simpleiconsmap\symbol{"F553}}
+ \expandafter\def\csname simpleicon@tubiicon\endcsname {\simpleiconsmap\symbol{"F554}}
+ \expandafter\def\csname simpleicon@tuiicon\endcsname {\simpleiconsmap\symbol{"F555}}
+ \expandafter\def\csname simpleicon@tumblricon\endcsname {\simpleiconsmap\symbol{"F556}}
+ \expandafter\def\csname simpleicon@tuneinicon\endcsname {\simpleiconsmap\symbol{"F557}}
+ \expandafter\def\csname simpleicon@turboicon\endcsname {\simpleiconsmap\symbol{"F558}}
+ \expandafter\def\csname simpleicon@turborepoicon\endcsname {\simpleiconsmap\symbol{"F559}}
+ \expandafter\def\csname simpleicon@turbosquidicon\endcsname {\simpleiconsmap\symbol{"F55A}}
+ \expandafter\def\csname simpleicon@turkishairlinesicon\endcsname {\simpleiconsmap\symbol{"F55B}}
+ \expandafter\def\csname simpleicon@tursoicon\endcsname {\simpleiconsmap\symbol{"F55C}}
+ \expandafter\def\csname simpleicon@tutanotaicon\endcsname {\simpleiconsmap\symbol{"F55D}}
+ \expandafter\def\csname simpleicon@tv4playicon\endcsname {\simpleiconsmap\symbol{"F55E}}
+ \expandafter\def\csname simpleicon@tvtimeicon\endcsname {\simpleiconsmap\symbol{"F55F}}
+ \expandafter\def\csname simpleicon@twilioicon\endcsname {\simpleiconsmap\symbol{"F560}}
+ \expandafter\def\csname simpleicon@twinklyicon\endcsname {\simpleiconsmap\symbol{"F561}}
+ \expandafter\def\csname simpleicon@twinmotionicon\endcsname {\simpleiconsmap\symbol{"F562}}
+ \expandafter\def\csname simpleicon@twitchicon\endcsname {\simpleiconsmap\symbol{"F563}}
+ \expandafter\def\csname simpleicon@typeformicon\endcsname {\simpleiconsmap\symbol{"F564}}
+ \expandafter\def\csname simpleicon@typeormicon\endcsname {\simpleiconsmap\symbol{"F565}}
+ \expandafter\def\csname simpleicon@typericon\endcsname {\simpleiconsmap\symbol{"F566}}
+ \expandafter\def\csname simpleicon@typescripticon\endcsname {\simpleiconsmap\symbol{"F567}}
+ \expandafter\def\csname simpleicon@typo3icon\endcsname {\simpleiconsmap\symbol{"F568}}
+ \expandafter\def\csname simpleicon@typsticon\endcsname {\simpleiconsmap\symbol{"F569}}
+ \expandafter\def\csname simpleicon@ubericon\endcsname {\simpleiconsmap\symbol{"F56A}}
+ \expandafter\def\csname simpleicon@ubereatsicon\endcsname {\simpleiconsmap\symbol{"F56B}}
+ \expandafter\def\csname simpleicon@ubiquitiicon\endcsname {\simpleiconsmap\symbol{"F56C}}
+ \expandafter\def\csname simpleicon@ubisofticon\endcsname {\simpleiconsmap\symbol{"F56D}}
+ \expandafter\def\csname simpleicon@ublockoriginicon\endcsname {\simpleiconsmap\symbol{"F56E}}
+ \expandafter\def\csname simpleicon@ubuntuicon\endcsname {\simpleiconsmap\symbol{"F56F}}
+ \expandafter\def\csname simpleicon@ubuntumateicon\endcsname {\simpleiconsmap\symbol{"F570}}
+ \expandafter\def\csname simpleicon@udacityicon\endcsname {\simpleiconsmap\symbol{"F571}}
+ \expandafter\def\csname simpleicon@udemyicon\endcsname {\simpleiconsmap\symbol{"F572}}
+ \expandafter\def\csname simpleicon@ufcicon\endcsname {\simpleiconsmap\symbol{"F573}}
+ \expandafter\def\csname simpleicon@uikiticon\endcsname {\simpleiconsmap\symbol{"F574}}
+ \expandafter\def\csname simpleicon@uipathicon\endcsname {\simpleiconsmap\symbol{"F575}}
+ \expandafter\def\csname simpleicon@ululeicon\endcsname {\simpleiconsmap\symbol{"F576}}
+ \expandafter\def\csname simpleicon@umamiicon\endcsname {\simpleiconsmap\symbol{"F577}}
+ \expandafter\def\csname simpleicon@umbracoicon\endcsname {\simpleiconsmap\symbol{"F578}}
+ \expandafter\def\csname simpleicon@umlicon\endcsname {\simpleiconsmap\symbol{"F579}}
+ \expandafter\def\csname simpleicon@unacademyicon\endcsname {\simpleiconsmap\symbol{"F57A}}
+ \expandafter\def\csname simpleicon@underarmouricon\endcsname {\simpleiconsmap\symbol{"F57B}}
+ \expandafter\def\csname simpleicon@underscoredotjsicon\endcsname {\simpleiconsmap\symbol{"F57C}}
+ \expandafter\def\csname simpleicon@undertaleicon\endcsname {\simpleiconsmap\symbol{"F57D}}
+ \expandafter\def\csname simpleicon@unicodeicon\endcsname {\simpleiconsmap\symbol{"F57E}}
+ \expandafter\def\csname simpleicon@unilevericon\endcsname {\simpleiconsmap\symbol{"F57F}}
+ \expandafter\def\csname simpleicon@uniqloicon\endcsname {\simpleiconsmap\symbol{"F580}}
+ \expandafter\def\csname simpleicon@uniqlojaicon\endcsname {\simpleiconsmap\symbol{"F581}}
+ \expandafter\def\csname simpleicon@unitedairlinesicon\endcsname {\simpleiconsmap\symbol{"F582}}
+ \expandafter\def\csname simpleicon@unitednationsicon\endcsname {\simpleiconsmap\symbol{"F583}}
+ \expandafter\def\csname simpleicon@unityicon\endcsname {\simpleiconsmap\symbol{"F584}}
+ \expandafter\def\csname simpleicon@unjsicon\endcsname {\simpleiconsmap\symbol{"F585}}
+ \expandafter\def\csname simpleicon@unlicenseicon\endcsname {\simpleiconsmap\symbol{"F586}}
+ \expandafter\def\csname simpleicon@unocssicon\endcsname {\simpleiconsmap\symbol{"F587}}
+ \expandafter\def\csname simpleicon@unpkgicon\endcsname {\simpleiconsmap\symbol{"F588}}
+ \expandafter\def\csname simpleicon@unraidicon\endcsname {\simpleiconsmap\symbol{"F589}}
+ \expandafter\def\csname simpleicon@unrealengineicon\endcsname {\simpleiconsmap\symbol{"F58A}}
+ \expandafter\def\csname simpleicon@unsplashicon\endcsname {\simpleiconsmap\symbol{"F58B}}
+ \expandafter\def\csname simpleicon@untappdicon\endcsname {\simpleiconsmap\symbol{"F58C}}
+ \expandafter\def\csname simpleicon@upcloudicon\endcsname {\simpleiconsmap\symbol{"F58D}}
+ \expandafter\def\csname simpleicon@upholdicon\endcsname {\simpleiconsmap\symbol{"F58E}}
+ \expandafter\def\csname simpleicon@uplabsicon\endcsname {\simpleiconsmap\symbol{"F58F}}
+ \expandafter\def\csname simpleicon@upptimeicon\endcsname {\simpleiconsmap\symbol{"F590}}
+ \expandafter\def\csname simpleicon@upsicon\endcsname {\simpleiconsmap\symbol{"F591}}
+ \expandafter\def\csname simpleicon@upstashicon\endcsname {\simpleiconsmap\symbol{"F592}}
+ \expandafter\def\csname simpleicon@uptimekumaicon\endcsname {\simpleiconsmap\symbol{"F593}}
+ \expandafter\def\csname simpleicon@uptoboxicon\endcsname {\simpleiconsmap\symbol{"F594}}
+ \expandafter\def\csname simpleicon@upworkicon\endcsname {\simpleiconsmap\symbol{"F595}}
+ \expandafter\def\csname simpleicon@uspsicon\endcsname {\simpleiconsmap\symbol{"F596}}
+ \expandafter\def\csname simpleicon@utorrenticon\endcsname {\simpleiconsmap\symbol{"F597}}
+ \expandafter\def\csname simpleicon@uvicon\endcsname {\simpleiconsmap\symbol{"F598}}
+ \expandafter\def\csname simpleicon@vicon\endcsname {\simpleiconsmap\symbol{"F599}}
+ \expandafter\def\csname simpleicon@v2exicon\endcsname {\simpleiconsmap\symbol{"F59A}}
+ \expandafter\def\csname simpleicon@v8icon\endcsname {\simpleiconsmap\symbol{"F59B}}
+ \expandafter\def\csname simpleicon@vaadinicon\endcsname {\simpleiconsmap\symbol{"F59C}}
+ \expandafter\def\csname simpleicon@vagranticon\endcsname {\simpleiconsmap\symbol{"F59D}}
+ \expandafter\def\csname simpleicon@valaicon\endcsname {\simpleiconsmap\symbol{"F59E}}
+ \expandafter\def\csname simpleicon@valoranticon\endcsname {\simpleiconsmap\symbol{"F59F}}
+ \expandafter\def\csname simpleicon@valveicon\endcsname {\simpleiconsmap\symbol{"F5A0}}
+ \expandafter\def\csname simpleicon@vaporicon\endcsname {\simpleiconsmap\symbol{"F5A1}}
+ \expandafter\def\csname simpleicon@vaulticon\endcsname {\simpleiconsmap\symbol{"F5A2}}
+ \expandafter\def\csname simpleicon@vaultwardenicon\endcsname {\simpleiconsmap\symbol{"F5A3}}
+ \expandafter\def\csname simpleicon@vauxhallicon\endcsname {\simpleiconsmap\symbol{"F5A4}}
+ \expandafter\def\csname simpleicon@vbulletinicon\endcsname {\simpleiconsmap\symbol{"F5A5}}
+ \expandafter\def\csname simpleicon@vectaryicon\endcsname {\simpleiconsmap\symbol{"F5A6}}
+ \expandafter\def\csname simpleicon@vectorlogozoneicon\endcsname {\simpleiconsmap\symbol{"F5A7}}
+ \expandafter\def\csname simpleicon@vectorworksicon\endcsname {\simpleiconsmap\symbol{"F5A8}}
+ \expandafter\def\csname simpleicon@veeamicon\endcsname {\simpleiconsmap\symbol{"F5A9}}
+ \expandafter\def\csname simpleicon@veedicon\endcsname {\simpleiconsmap\symbol{"F5AA}}
+ \expandafter\def\csname simpleicon@veepeeicon\endcsname {\simpleiconsmap\symbol{"F5AB}}
+ \expandafter\def\csname simpleicon@vegaicon\endcsname {\simpleiconsmap\symbol{"F5AC}}
+ \expandafter\def\csname simpleicon@vegasicon\endcsname {\simpleiconsmap\symbol{"F5AD}}
+ \expandafter\def\csname simpleicon@velogicon\endcsname {\simpleiconsmap\symbol{"F5AE}}
+ \expandafter\def\csname simpleicon@venmoicon\endcsname {\simpleiconsmap\symbol{"F5AF}}
+ \expandafter\def\csname simpleicon@vercelicon\endcsname {\simpleiconsmap\symbol{"F5B0}}
+ \expandafter\def\csname simpleicon@verdaccioicon\endcsname {\simpleiconsmap\symbol{"F5B1}}
+ \expandafter\def\csname simpleicon@veritasicon\endcsname {\simpleiconsmap\symbol{"F5B2}}
+ \expandafter\def\csname simpleicon@verizonicon\endcsname {\simpleiconsmap\symbol{"F5B3}}
+ \expandafter\def\csname simpleicon@vespaicon\endcsname {\simpleiconsmap\symbol{"F5B4}}
+ \expandafter\def\csname simpleicon@vestelicon\endcsname {\simpleiconsmap\symbol{"F5B5}}
+ \expandafter\def\csname simpleicon@vexxhosticon\endcsname {\simpleiconsmap\symbol{"F5B6}}
+ \expandafter\def\csname simpleicon@vfairsicon\endcsname {\simpleiconsmap\symbol{"F5B7}}
+ \expandafter\def\csname simpleicon@viadeoicon\endcsname {\simpleiconsmap\symbol{"F5B8}}
+ \expandafter\def\csname simpleicon@viaplayicon\endcsname {\simpleiconsmap\symbol{"F5B9}}
+ \expandafter\def\csname simpleicon@vibericon\endcsname {\simpleiconsmap\symbol{"F5BA}}
+ \expandafter\def\csname simpleicon@vibloicon\endcsname {\simpleiconsmap\symbol{"F5BB}}
+ \expandafter\def\csname simpleicon@victoriametricsicon\endcsname {\simpleiconsmap\symbol{"F5BC}}
+ \expandafter\def\csname simpleicon@victronenergyicon\endcsname {\simpleiconsmap\symbol{"F5BD}}
+ \expandafter\def\csname simpleicon@vimicon\endcsname {\simpleiconsmap\symbol{"F5BE}}
+ \expandafter\def\csname simpleicon@vimeoicon\endcsname {\simpleiconsmap\symbol{"F5BF}}
+ \expandafter\def\csname simpleicon@vimeolivestreamicon\endcsname {\simpleiconsmap\symbol{"F5C0}}
+ \expandafter\def\csname simpleicon@virginicon\endcsname {\simpleiconsmap\symbol{"F5C1}}
+ \expandafter\def\csname simpleicon@virginatlanticicon\endcsname {\simpleiconsmap\symbol{"F5C2}}
+ \expandafter\def\csname simpleicon@virginmediaicon\endcsname {\simpleiconsmap\symbol{"F5C3}}
+ \expandafter\def\csname simpleicon@virtualboxicon\endcsname {\simpleiconsmap\symbol{"F5C4}}
+ \expandafter\def\csname simpleicon@virustotalicon\endcsname {\simpleiconsmap\symbol{"F5C5}}
+ \expandafter\def\csname simpleicon@visaicon\endcsname {\simpleiconsmap\symbol{"F5C6}}
+ \expandafter\def\csname simpleicon@visxicon\endcsname {\simpleiconsmap\symbol{"F5C7}}
+ \expandafter\def\csname simpleicon@viteicon\endcsname {\simpleiconsmap\symbol{"F5C8}}
+ \expandafter\def\csname simpleicon@vitepressicon\endcsname {\simpleiconsmap\symbol{"F5C9}}
+ \expandafter\def\csname simpleicon@vitessicon\endcsname {\simpleiconsmap\symbol{"F5CA}}
+ \expandafter\def\csname simpleicon@vitesticon\endcsname {\simpleiconsmap\symbol{"F5CB}}
+ \expandafter\def\csname simpleicon@vivaldiicon\endcsname {\simpleiconsmap\symbol{"F5CC}}
+ \expandafter\def\csname simpleicon@vivawalleticon\endcsname {\simpleiconsmap\symbol{"F5CD}}
+ \expandafter\def\csname simpleicon@vivinoicon\endcsname {\simpleiconsmap\symbol{"F5CE}}
+ \expandafter\def\csname simpleicon@vivinticon\endcsname {\simpleiconsmap\symbol{"F5CF}}
+ \expandafter\def\csname simpleicon@vivoicon\endcsname {\simpleiconsmap\symbol{"F5D0}}
+ \expandafter\def\csname simpleicon@vkicon\endcsname {\simpleiconsmap\symbol{"F5D1}}
+ \expandafter\def\csname simpleicon@vlcmediaplayericon\endcsname {\simpleiconsmap\symbol{"F5D2}}
+ \expandafter\def\csname simpleicon@vmwareicon\endcsname {\simpleiconsmap\symbol{"F5D3}}
+ \expandafter\def\csname simpleicon@vodafoneicon\endcsname {\simpleiconsmap\symbol{"F5D4}}
+ \expandafter\def\csname simpleicon@voidlinuxicon\endcsname {\simpleiconsmap\symbol{"F5D5}}
+ \expandafter\def\csname simpleicon@voipdotmsicon\endcsname {\simpleiconsmap\symbol{"F5D6}}
+ \expandafter\def\csname simpleicon@volkswagenicon\endcsname {\simpleiconsmap\symbol{"F5D7}}
+ \expandafter\def\csname simpleicon@volvoicon\endcsname {\simpleiconsmap\symbol{"F5D8}}
+ \expandafter\def\csname simpleicon@vonageicon\endcsname {\simpleiconsmap\symbol{"F5D9}}
+ \expandafter\def\csname simpleicon@vorondesignicon\endcsname {\simpleiconsmap\symbol{"F5DA}}
+ \expandafter\def\csname simpleicon@vowpalwabbiticon\endcsname {\simpleiconsmap\symbol{"F5DB}}
+ \expandafter\def\csname simpleicon@voxicon\endcsname {\simpleiconsmap\symbol{"F5DC}}
+ \expandafter\def\csname simpleicon@vrchaticon\endcsname {\simpleiconsmap\symbol{"F5DD}}
+ \expandafter\def\csname simpleicon@vscoicon\endcsname {\simpleiconsmap\symbol{"F5DE}}
+ \expandafter\def\csname simpleicon@vscodiumicon\endcsname {\simpleiconsmap\symbol{"F5DF}}
+ \expandafter\def\csname simpleicon@vtexicon\endcsname {\simpleiconsmap\symbol{"F5E0}}
+ \expandafter\def\csname simpleicon@vuedotjsicon\endcsname {\simpleiconsmap\symbol{"F5E1}}
+ \expandafter\def\csname simpleicon@vuetifyicon\endcsname {\simpleiconsmap\symbol{"F5E2}}
+ \expandafter\def\csname simpleicon@vulkanicon\endcsname {\simpleiconsmap\symbol{"F5E3}}
+ \expandafter\def\csname simpleicon@vultricon\endcsname {\simpleiconsmap\symbol{"F5E4}}
+ \expandafter\def\csname simpleicon@vyondicon\endcsname {\simpleiconsmap\symbol{"F5E5}}
+ \expandafter\def\csname simpleicon@w3schoolsicon\endcsname {\simpleiconsmap\symbol{"F5E6}}
+ \expandafter\def\csname simpleicon@wacomicon\endcsname {\simpleiconsmap\symbol{"F5E7}}
+ \expandafter\def\csname simpleicon@wagmiicon\endcsname {\simpleiconsmap\symbol{"F5E8}}
+ \expandafter\def\csname simpleicon@wagtailicon\endcsname {\simpleiconsmap\symbol{"F5E9}}
+ \expandafter\def\csname simpleicon@wailsicon\endcsname {\simpleiconsmap\symbol{"F5EA}}
+ \expandafter\def\csname simpleicon@wakatimeicon\endcsname {\simpleiconsmap\symbol{"F5EB}}
+ \expandafter\def\csname simpleicon@walkmanicon\endcsname {\simpleiconsmap\symbol{"F5EC}}
+ \expandafter\def\csname simpleicon@wallabagicon\endcsname {\simpleiconsmap\symbol{"F5ED}}
+ \expandafter\def\csname simpleicon@walletconnecticon\endcsname {\simpleiconsmap\symbol{"F5EE}}
+ \expandafter\def\csname simpleicon@walmarticon\endcsname {\simpleiconsmap\symbol{"F5EF}}
+ \expandafter\def\csname simpleicon@wantedlyicon\endcsname {\simpleiconsmap\symbol{"F5F0}}
+ \expandafter\def\csname simpleicon@wappalyzericon\endcsname {\simpleiconsmap\symbol{"F5F1}}
+ \expandafter\def\csname simpleicon@warnerbrosicon\endcsname {\simpleiconsmap\symbol{"F5F2}}
+ \expandafter\def\csname simpleicon@warpicon\endcsname {\simpleiconsmap\symbol{"F5F3}}
+ \expandafter\def\csname simpleicon@wasabiicon\endcsname {\simpleiconsmap\symbol{"F5F4}}
+ \expandafter\def\csname simpleicon@wasmcloudicon\endcsname {\simpleiconsmap\symbol{"F5F5}}
+ \expandafter\def\csname simpleicon@wasmericon\endcsname {\simpleiconsmap\symbol{"F5F6}}
+ \expandafter\def\csname simpleicon@watchtowericon\endcsname {\simpleiconsmap\symbol{"F5F7}}
+ \expandafter\def\csname simpleicon@wattpadicon\endcsname {\simpleiconsmap\symbol{"F5F8}}
+ \expandafter\def\csname simpleicon@waylandicon\endcsname {\simpleiconsmap\symbol{"F5F9}}
+ \expandafter\def\csname simpleicon@wazeicon\endcsname {\simpleiconsmap\symbol{"F5FA}}
+ \expandafter\def\csname simpleicon@wazirxicon\endcsname {\simpleiconsmap\symbol{"F5FB}}
+ \expandafter\def\csname simpleicon@wearosicon\endcsname {\simpleiconsmap\symbol{"F5FC}}
+ \expandafter\def\csname simpleicon@weasylicon\endcsname {\simpleiconsmap\symbol{"F5FD}}
+ \expandafter\def\csname simpleicon@web3dotjsicon\endcsname {\simpleiconsmap\symbol{"F5FE}}
+ \expandafter\def\csname simpleicon@webassemblyicon\endcsname {\simpleiconsmap\symbol{"F5FF}}
+ \expandafter\def\csname simpleicon@webauthnicon\endcsname {\simpleiconsmap\symbol{"F600}}
+ \expandafter\def\csname simpleicon@webcomponentsdotorgicon\endcsname {\simpleiconsmap\symbol{"F601}}
+ \expandafter\def\csname simpleicon@webdriverioicon\endcsname {\simpleiconsmap\symbol{"F602}}
+ \expandafter\def\csname simpleicon@webexicon\endcsname {\simpleiconsmap\symbol{"F603}}
+ \expandafter\def\csname simpleicon@webflowicon\endcsname {\simpleiconsmap\symbol{"F604}}
+ \expandafter\def\csname simpleicon@webglicon\endcsname {\simpleiconsmap\symbol{"F605}}
+ \expandafter\def\csname simpleicon@webgpuicon\endcsname {\simpleiconsmap\symbol{"F606}}
+ \expandafter\def\csname simpleicon@weblateicon\endcsname {\simpleiconsmap\symbol{"F607}}
+ \expandafter\def\csname simpleicon@webminicon\endcsname {\simpleiconsmap\symbol{"F608}}
+ \expandafter\def\csname simpleicon@webmoneyicon\endcsname {\simpleiconsmap\symbol{"F609}}
+ \expandafter\def\csname simpleicon@webpackicon\endcsname {\simpleiconsmap\symbol{"F60A}}
+ \expandafter\def\csname simpleicon@webrtcicon\endcsname {\simpleiconsmap\symbol{"F60B}}
+ \expandafter\def\csname simpleicon@webstormicon\endcsname {\simpleiconsmap\symbol{"F60C}}
+ \expandafter\def\csname simpleicon@webtoonicon\endcsname {\simpleiconsmap\symbol{"F60D}}
+ \expandafter\def\csname simpleicon@webtreesicon\endcsname {\simpleiconsmap\symbol{"F60E}}
+ \expandafter\def\csname simpleicon@wechaticon\endcsname {\simpleiconsmap\symbol{"F60F}}
+ \expandafter\def\csname simpleicon@wegameicon\endcsname {\simpleiconsmap\symbol{"F610}}
+ \expandafter\def\csname simpleicon@weightsandbiasesicon\endcsname {\simpleiconsmap\symbol{"F611}}
+ \expandafter\def\csname simpleicon@welcometothejungleicon\endcsname {\simpleiconsmap\symbol{"F612}}
+ \expandafter\def\csname simpleicon@wellfoundicon\endcsname {\simpleiconsmap\symbol{"F613}}
+ \expandafter\def\csname simpleicon@wellsfargoicon\endcsname {\simpleiconsmap\symbol{"F614}}
+ \expandafter\def\csname simpleicon@wemoicon\endcsname {\simpleiconsmap\symbol{"F615}}
+ \expandafter\def\csname simpleicon@westerndigitalicon\endcsname {\simpleiconsmap\symbol{"F616}}
+ \expandafter\def\csname simpleicon@westernunionicon\endcsname {\simpleiconsmap\symbol{"F617}}
+ \expandafter\def\csname simpleicon@wetransfericon\endcsname {\simpleiconsmap\symbol{"F618}}
+ \expandafter\def\csname simpleicon@weztermicon\endcsname {\simpleiconsmap\symbol{"F619}}
+ \expandafter\def\csname simpleicon@wgpuicon\endcsname {\simpleiconsmap\symbol{"F61A}}
+ \expandafter\def\csname simpleicon@whatsappicon\endcsname {\simpleiconsmap\symbol{"F61B}}
+ \expandafter\def\csname simpleicon@wheniworkicon\endcsname {\simpleiconsmap\symbol{"F61C}}
+ \expandafter\def\csname simpleicon@wiiicon\endcsname {\simpleiconsmap\symbol{"F61D}}
+ \expandafter\def\csname simpleicon@wiiuicon\endcsname {\simpleiconsmap\symbol{"F61E}}
+ \expandafter\def\csname simpleicon@wikidataicon\endcsname {\simpleiconsmap\symbol{"F61F}}
+ \expandafter\def\csname simpleicon@wikidotggicon\endcsname {\simpleiconsmap\symbol{"F620}}
+ \expandafter\def\csname simpleicon@wikidotjsicon\endcsname {\simpleiconsmap\symbol{"F621}}
+ \expandafter\def\csname simpleicon@wikimediacommonsicon\endcsname {\simpleiconsmap\symbol{"F622}}
+ \expandafter\def\csname simpleicon@wikimediafoundationicon\endcsname {\simpleiconsmap\symbol{"F623}}
+ \expandafter\def\csname simpleicon@wikipediaicon\endcsname {\simpleiconsmap\symbol{"F624}}
+ \expandafter\def\csname simpleicon@wikiquoteicon\endcsname {\simpleiconsmap\symbol{"F625}}
+ \expandafter\def\csname simpleicon@wikivoyageicon\endcsname {\simpleiconsmap\symbol{"F626}}
+ \expandafter\def\csname simpleicon@winampicon\endcsname {\simpleiconsmap\symbol{"F627}}
+ \expandafter\def\csname simpleicon@wiproicon\endcsname {\simpleiconsmap\symbol{"F628}}
+ \expandafter\def\csname simpleicon@wireicon\endcsname {\simpleiconsmap\symbol{"F629}}
+ \expandafter\def\csname simpleicon@wireguardicon\endcsname {\simpleiconsmap\symbol{"F62A}}
+ \expandafter\def\csname simpleicon@wiresharkicon\endcsname {\simpleiconsmap\symbol{"F62B}}
+ \expandafter\def\csname simpleicon@wiseicon\endcsname {\simpleiconsmap\symbol{"F62C}}
+ \expandafter\def\csname simpleicon@wishicon\endcsname {\simpleiconsmap\symbol{"F62D}}
+ \expandafter\def\csname simpleicon@wistiaicon\endcsname {\simpleiconsmap\symbol{"F62E}}
+ \expandafter\def\csname simpleicon@wixicon\endcsname {\simpleiconsmap\symbol{"F62F}}
+ \expandafter\def\csname simpleicon@wizzairicon\endcsname {\simpleiconsmap\symbol{"F630}}
+ \expandafter\def\csname simpleicon@wolframicon\endcsname {\simpleiconsmap\symbol{"F631}}
+ \expandafter\def\csname simpleicon@wolframlanguageicon\endcsname {\simpleiconsmap\symbol{"F632}}
+ \expandafter\def\csname simpleicon@wolframmathematicaicon\endcsname {\simpleiconsmap\symbol{"F633}}
+ \expandafter\def\csname simpleicon@wondershareicon\endcsname {\simpleiconsmap\symbol{"F634}}
+ \expandafter\def\csname simpleicon@wondersharefilmoraicon\endcsname {\simpleiconsmap\symbol{"F635}}
+ \expandafter\def\csname simpleicon@wooicon\endcsname {\simpleiconsmap\symbol{"F636}}
+ \expandafter\def\csname simpleicon@woocommerceicon\endcsname {\simpleiconsmap\symbol{"F637}}
+ \expandafter\def\csname simpleicon@wordpressicon\endcsname {\simpleiconsmap\symbol{"F638}}
+ \expandafter\def\csname simpleicon@workplaceicon\endcsname {\simpleiconsmap\symbol{"F639}}
+ \expandafter\def\csname simpleicon@worldhealthorganizationicon\endcsname {\simpleiconsmap\symbol{"F63A}}
+ \expandafter\def\csname simpleicon@wpengineicon\endcsname {\simpleiconsmap\symbol{"F63B}}
+ \expandafter\def\csname simpleicon@wpexplorericon\endcsname {\simpleiconsmap\symbol{"F63C}}
+ \expandafter\def\csname simpleicon@wprocketicon\endcsname {\simpleiconsmap\symbol{"F63D}}
+ \expandafter\def\csname simpleicon@writedotasicon\endcsname {\simpleiconsmap\symbol{"F63E}}
+ \expandafter\def\csname simpleicon@wweicon\endcsname {\simpleiconsmap\symbol{"F63F}}
+ \expandafter\def\csname simpleicon@wwiseicon\endcsname {\simpleiconsmap\symbol{"F640}}
+ \expandafter\def\csname simpleicon@wykopicon\endcsname {\simpleiconsmap\symbol{"F641}}
+ \expandafter\def\csname simpleicon@wyzeicon\endcsname {\simpleiconsmap\symbol{"F642}}
+ \expandafter\def\csname simpleicon@xicon\endcsname {\simpleiconsmap\symbol{"F643}}
+ \expandafter\def\csname simpleicon@xamppicon\endcsname {\simpleiconsmap\symbol{"F644}}
+ \expandafter\def\csname simpleicon@xcodeicon\endcsname {\simpleiconsmap\symbol{"F645}}
+ \expandafter\def\csname simpleicon@xdadevelopersicon\endcsname {\simpleiconsmap\symbol{"F646}}
+ \expandafter\def\csname simpleicon@xdotorgicon\endcsname {\simpleiconsmap\symbol{"F647}}
+ \expandafter\def\csname simpleicon@xenditicon\endcsname {\simpleiconsmap\symbol{"F648}}
+ \expandafter\def\csname simpleicon@xeroicon\endcsname {\simpleiconsmap\symbol{"F649}}
+ \expandafter\def\csname simpleicon@xfceicon\endcsname {\simpleiconsmap\symbol{"F64A}}
+ \expandafter\def\csname simpleicon@xiaohongshuicon\endcsname {\simpleiconsmap\symbol{"F64B}}
+ \expandafter\def\csname simpleicon@xiaomiicon\endcsname {\simpleiconsmap\symbol{"F64C}}
+ \expandafter\def\csname simpleicon@xingicon\endcsname {\simpleiconsmap\symbol{"F64D}}
+ \expandafter\def\csname simpleicon@xmlicon\endcsname {\simpleiconsmap\symbol{"F64E}}
+ \expandafter\def\csname simpleicon@xmppicon\endcsname {\simpleiconsmap\symbol{"F64F}}
+ \expandafter\def\csname simpleicon@xoicon\endcsname {\simpleiconsmap\symbol{"F650}}
+ \expandafter\def\csname simpleicon@xrpicon\endcsname {\simpleiconsmap\symbol{"F651}}
+ \expandafter\def\csname simpleicon@xspliticon\endcsname {\simpleiconsmap\symbol{"F652}}
+ \expandafter\def\csname simpleicon@xstateicon\endcsname {\simpleiconsmap\symbol{"F653}}
+ \expandafter\def\csname simpleicon@xubuntuicon\endcsname {\simpleiconsmap\symbol{"F654}}
+ \expandafter\def\csname simpleicon@yabaiicon\endcsname {\simpleiconsmap\symbol{"F655}}
+ \expandafter\def\csname simpleicon@yaleicon\endcsname {\simpleiconsmap\symbol{"F656}}
+ \expandafter\def\csname simpleicon@yamahacorporationicon\endcsname {\simpleiconsmap\symbol{"F657}}
+ \expandafter\def\csname simpleicon@yamahamotorcorporationicon\endcsname {\simpleiconsmap\symbol{"F658}}
+ \expandafter\def\csname simpleicon@yamlicon\endcsname {\simpleiconsmap\symbol{"F659}}
+ \expandafter\def\csname simpleicon@yandexcloudicon\endcsname {\simpleiconsmap\symbol{"F65A}}
+ \expandafter\def\csname simpleicon@yarnicon\endcsname {\simpleiconsmap\symbol{"F65B}}
+ \expandafter\def\csname simpleicon@ycombinatoricon\endcsname {\simpleiconsmap\symbol{"F65C}}
+ \expandafter\def\csname simpleicon@yelpicon\endcsname {\simpleiconsmap\symbol{"F65D}}
+ \expandafter\def\csname simpleicon@yetiicon\endcsname {\simpleiconsmap\symbol{"F65E}}
+ \expandafter\def\csname simpleicon@yiiicon\endcsname {\simpleiconsmap\symbol{"F65F}}
+ \expandafter\def\csname simpleicon@yoasticon\endcsname {\simpleiconsmap\symbol{"F660}}
+ \expandafter\def\csname simpleicon@youtubeicon\endcsname {\simpleiconsmap\symbol{"F661}}
+ \expandafter\def\csname simpleicon@youtubegamingicon\endcsname {\simpleiconsmap\symbol{"F662}}
+ \expandafter\def\csname simpleicon@youtubekidsicon\endcsname {\simpleiconsmap\symbol{"F663}}
+ \expandafter\def\csname simpleicon@youtubemusicicon\endcsname {\simpleiconsmap\symbol{"F664}}
+ \expandafter\def\csname simpleicon@youtubeshortsicon\endcsname {\simpleiconsmap\symbol{"F665}}
+ \expandafter\def\csname simpleicon@youtubestudioicon\endcsname {\simpleiconsmap\symbol{"F666}}
+ \expandafter\def\csname simpleicon@youtubetvicon\endcsname {\simpleiconsmap\symbol{"F667}}
+ \expandafter\def\csname simpleicon@yricon\endcsname {\simpleiconsmap\symbol{"F668}}
+ \expandafter\def\csname simpleicon@yubicoicon\endcsname {\simpleiconsmap\symbol{"F669}}
+ \expandafter\def\csname simpleicon@yunohosticon\endcsname {\simpleiconsmap\symbol{"F66A}}
+ \expandafter\def\csname simpleicon@zabkaicon\endcsname {\simpleiconsmap\symbol{"F66B}}
+ \expandafter\def\csname simpleicon@zaimicon\endcsname {\simpleiconsmap\symbol{"F66C}}
+ \expandafter\def\csname simpleicon@zalandoicon\endcsname {\simpleiconsmap\symbol{"F66D}}
+ \expandafter\def\csname simpleicon@zaloicon\endcsname {\simpleiconsmap\symbol{"F66E}}
+ \expandafter\def\csname simpleicon@zapicon\endcsname {\simpleiconsmap\symbol{"F66F}}
+ \expandafter\def\csname simpleicon@zapiericon\endcsname {\simpleiconsmap\symbol{"F670}}
+ \expandafter\def\csname simpleicon@zaraicon\endcsname {\simpleiconsmap\symbol{"F671}}
+ \expandafter\def\csname simpleicon@zazzleicon\endcsname {\simpleiconsmap\symbol{"F672}}
+ \expandafter\def\csname simpleicon@zcashicon\endcsname {\simpleiconsmap\symbol{"F673}}
+ \expandafter\def\csname simpleicon@zcoolicon\endcsname {\simpleiconsmap\symbol{"F674}}
+ \expandafter\def\csname simpleicon@zdficon\endcsname {\simpleiconsmap\symbol{"F675}}
+ \expandafter\def\csname simpleicon@zebpayicon\endcsname {\simpleiconsmap\symbol{"F676}}
+ \expandafter\def\csname simpleicon@zebratechnologiesicon\endcsname {\simpleiconsmap\symbol{"F677}}
+ \expandafter\def\csname simpleicon@zedindustriesicon\endcsname {\simpleiconsmap\symbol{"F678}}
+ \expandafter\def\csname simpleicon@zelleicon\endcsname {\simpleiconsmap\symbol{"F679}}
+ \expandafter\def\csname simpleicon@zendicon\endcsname {\simpleiconsmap\symbol{"F67A}}
+ \expandafter\def\csname simpleicon@zendeskicon\endcsname {\simpleiconsmap\symbol{"F67B}}
+ \expandafter\def\csname simpleicon@zennicon\endcsname {\simpleiconsmap\symbol{"F67C}}
+ \expandafter\def\csname simpleicon@zenodoicon\endcsname {\simpleiconsmap\symbol{"F67D}}
+ \expandafter\def\csname simpleicon@zensaricon\endcsname {\simpleiconsmap\symbol{"F67E}}
+ \expandafter\def\csname simpleicon@zerodhaicon\endcsname {\simpleiconsmap\symbol{"F67F}}
+ \expandafter\def\csname simpleicon@zerotiericon\endcsname {\simpleiconsmap\symbol{"F680}}
+ \expandafter\def\csname simpleicon@zerplyicon\endcsname {\simpleiconsmap\symbol{"F681}}
+ \expandafter\def\csname simpleicon@zettlricon\endcsname {\simpleiconsmap\symbol{"F682}}
+ \expandafter\def\csname simpleicon@zhihuicon\endcsname {\simpleiconsmap\symbol{"F683}}
+ \expandafter\def\csname simpleicon@zigicon\endcsname {\simpleiconsmap\symbol{"F684}}
+ \expandafter\def\csname simpleicon@zigbeeicon\endcsname {\simpleiconsmap\symbol{"F685}}
+ \expandafter\def\csname simpleicon@zigbee2mqtticon\endcsname {\simpleiconsmap\symbol{"F686}}
+ \expandafter\def\csname simpleicon@ziggoicon\endcsname {\simpleiconsmap\symbol{"F687}}
+ \expandafter\def\csname simpleicon@zilchicon\endcsname {\simpleiconsmap\symbol{"F688}}
+ \expandafter\def\csname simpleicon@zillowicon\endcsname {\simpleiconsmap\symbol{"F689}}
+ \expandafter\def\csname simpleicon@zincsearchicon\endcsname {\simpleiconsmap\symbol{"F68A}}
+ \expandafter\def\csname simpleicon@zingaticon\endcsname {\simpleiconsmap\symbol{"F68B}}
+ \expandafter\def\csname simpleicon@zodicon\endcsname {\simpleiconsmap\symbol{"F68C}}
+ \expandafter\def\csname simpleicon@zohoicon\endcsname {\simpleiconsmap\symbol{"F68D}}
+ \expandafter\def\csname simpleicon@zoipericon\endcsname {\simpleiconsmap\symbol{"F68E}}
+ \expandafter\def\csname simpleicon@zomatoicon\endcsname {\simpleiconsmap\symbol{"F68F}}
+ \expandafter\def\csname simpleicon@zoomicon\endcsname {\simpleiconsmap\symbol{"F690}}
+ \expandafter\def\csname simpleicon@zorinicon\endcsname {\simpleiconsmap\symbol{"F691}}
+ \expandafter\def\csname simpleicon@zoteroicon\endcsname {\simpleiconsmap\symbol{"F692}}
+ \expandafter\def\csname simpleicon@zshicon\endcsname {\simpleiconsmap\symbol{"F693}}
+ \expandafter\def\csname simpleicon@zulipicon\endcsname {\simpleiconsmap\symbol{"F694}}
+ \expandafter\def\csname simpleicon@zyteicon\endcsname {\simpleiconsmap\symbol{"F695}} \ 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 d556191c83f..de05bf156a7 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/06/21 Font definitions for U/simpleiconseight.]
+ \ProvidesFile{usimpleiconseight.fd}[2024/11/08 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 08805b9cb4a..d40d9bf7ffd 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/06/21 Font definitions for U/simpleiconsfive.]
+ \ProvidesFile{usimpleiconsfive.fd}[2024/11/08 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 f43494c80fd..b5aa94cfc80 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/06/21 Font definitions for U/simpleiconsfour.]
+ \ProvidesFile{usimpleiconsfour.fd}[2024/11/08 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 a5abea21353..a29397afc1f 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/06/21 Font definitions for U/simpleiconsnine.]
+ \ProvidesFile{usimpleiconsnine.fd}[2024/11/08 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 f9c8758119c..dbf91c2138f 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/06/21 Font definitions for U/simpleiconsone.]
+ \ProvidesFile{usimpleiconsone.fd}[2024/11/08 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 569973fd950..f2816376990 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/06/21 Font definitions for U/simpleiconsoneone.]
+ \ProvidesFile{usimpleiconsoneone.fd}[2024/11/08 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 b364fa4d600..e512c8b980a 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/06/21 Font definitions for U/simpleiconsonethree.]
+ \ProvidesFile{usimpleiconsonethree.fd}[2024/11/08 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 ee0e2f9e4f0..e5d7c28ca43 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/06/21 Font definitions for U/simpleiconsonetwo.]
+ \ProvidesFile{usimpleiconsonetwo.fd}[2024/11/08 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 99fd5d77859..f9619c28074 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/06/21 Font definitions for U/simpleiconsonezero.]
+ \ProvidesFile{usimpleiconsonezero.fd}[2024/11/08 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 c541f11f189..17f1de5b485 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/06/21 Font definitions for U/simpleiconsseven.]
+ \ProvidesFile{usimpleiconsseven.fd}[2024/11/08 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 a57361ea01a..bded5438e42 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/06/21 Font definitions for U/simpleiconssix.]
+ \ProvidesFile{usimpleiconssix.fd}[2024/11/08 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 d2cc7688855..20688ae64f8 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/06/21 Font definitions for U/simpleiconsthree.]
+ \ProvidesFile{usimpleiconsthree.fd}[2024/11/08 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 ef4e4d335a0..2989ebbbfdc 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/06/21 Font definitions for U/simpleiconstwo.]
+ \ProvidesFile{usimpleiconstwo.fd}[2024/11/08 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 0fbefd1817b..9e943639402 100644
--- a/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
+++ b/Master/texmf-dist/tex/latex/siunitx/siunitx.sty
@@ -41,7 +41,7 @@
}%
\endinput
}%
-\ProvidesExplPackage {siunitx} {2024-06-14} {3.3.18}
+\ProvidesExplPackage {siunitx} {2024-09-30} {3.3.22}
{A comprehensive (SI) units package}
\msg_new:nnnn { siunitx } { incompatible-package }
{ Package~'#1'~incompatible. }
@@ -1479,7 +1479,13 @@
\str_case:nnF {#1}
{
{ down } { \use_i:nn }
- { up } { \use_ii:nn }
+ { up }
+ {
+ \str_if_eq:eeTF
+ {#2} { \prg_replicate:nn { \tl_count:n {#2} } { 0 } }
+ { \use_i:nn }
+ { \use_ii:nn }
+ }
}
{
\bool_lazy_or:nnTF
@@ -2983,23 +2989,26 @@
{
\siunitx_angle:eee
{ \fp_eval:n { trunc(#1,0) } }
- { \fp_eval:n { trunc((#1 - trunc(#1,0)) * 60,0) } }
+ { \fp_eval:n { abs(trunc((#1 - trunc(#1,0)) * 60,0)) } }
{
\fp_eval:n
{
- (
- (#1 - trunc(#1,0)) * 60
- - trunc((#1 - trunc(#1,0)) * 60,0)
- )
+ abs
+ (
+ (#1 - trunc(#1,0)) * 60
+ - trunc((#1 - trunc(#1,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
\tl_new:N \l__siunitx_angle_seconds_tl
\tl_new:N \l__siunitx_angle_sign_tl
+\tl_new:N \l__siunitx_angle_signed_bool
\keys_precompile:nnN
{ siunitx }
{
@@ -3013,49 +3022,32 @@
{ \exp_not:V \l__siunitx_angle_tmp_tl }
\keys_precompile:nnN
{ siunitx }
- { input-comparators = , input-signs = }
+ { input-comparators = }
\l__siunitx_angle_tmp_tl
-\cs_set_protected:Npx \__siunitx_angle_suppress_comp_sign:
+\cs_set_protected:Npx \__siunitx_angle_suppress_comp:
{ \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
- \__siunitx_angle_arc_sign:nn {#1} { degrees }
+ \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 }
\__siunitx_angle_arc_sign:nn {#3} { seconds }
\tl_if_empty:NF \l__siunitx_angle_sign_tl
{
- \clist_map_inline:nn { degrees , minutes , seconds }
- {
- \tl_if_empty:cF { l__siunitx_angle_ ##1 _tl }
- {
- \tl_set:cx { l__siunitx_angle_ ##1 _tl }
- {
- { }
- { \exp_not:V \l__siunitx_angle_sign_tl }
- \exp_after:wN \exp_after:wN \exp_after:wN
- \__siunitx_angle_sign:nnnnnnn
- \cs:w l__siunitx_angle_ ##1 _tl \cs_end:
- }
- \clist_map_break:
- }
- }
- }
- \clist_map_inline:nn { degrees , minutes , seconds }
- {
- \tl_if_empty:cF { l__siunitx_angle_ ##1 _tl }
- {
- \siunitx_number_process:cc
- { l__siunitx_angle_ ##1 _tl } { l__siunitx_angle_ ##1 _tl }
- \tl_set:cx { l__siunitx_angle_ ##1 _tl }
- {
- \siunitx_number_output:cN
- { l__siunitx_angle_ ##1 _tl } \q_nil
- }
- }
+ \clist_map_function:NN \c__siunitx_angle_parts_tl
+ \__siunitx_angle_arc_sign_auxi:n
}
+ \clist_map_function:NN \c__siunitx_angle_parts_tl \__siunitx_angle_arc_sign_auxii:n
\__siunitx_angle_arc_print:VVV
\l__siunitx_angle_degrees_tl
\l__siunitx_angle_minutes_tl
@@ -3076,6 +3068,40 @@
{
\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
+ }
+ }
+\cs_new_protected:Npn \__siunitx_angle_arc_sign_auxi:n #1
+ {
+ \tl_if_empty:cF { l__siunitx_angle_ #1 _tl }
+ {
+ \tl_set:cx { l__siunitx_angle_ #1 _tl }
+ {
+ { }
+ { \exp_not:V \l__siunitx_angle_sign_tl }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \__siunitx_angle_sign:nnnnnnn
+ \cs:w l__siunitx_angle_ #1 _tl \cs_end:
+ }
+ \clist_map_break:
+ }
+ }
+\cs_new_protected:Npn \__siunitx_angle_arc_sign_auxii:n #1
+ {
+ \tl_if_empty:cF { l__siunitx_angle_ #1 _tl }
+ {
+ \bool_lazy_and:nnF
+ { \l__siunitx_angle_force_arc_bool }
+ { ! \str_if_eq_p:nn {#1} { seconds } }
+ {
+ \siunitx_number_process:cc
+ { l__siunitx_angle_ #1 _tl } { l__siunitx_angle_ #1 _tl }
+ }
+ \tl_set:cx { l__siunitx_angle_ #1 _tl }
+ {
+ \siunitx_number_output:cN
+ { l__siunitx_angle_ #1 _tl } \q_nil
+ }
}
}
\cs_new_protected:Npn \__siunitx_angle_extract_sign:nnnnnnnn #1#2#3#4#5#6#7#8
@@ -3083,10 +3109,12 @@
\tl_if_blank:nTF {#2}
{ \tl_set_eq:cN { l__siunitx_angle_ #8 _tl } \l__siunitx_angle_tmp_tl }
{
+ \bool_if:NTF \l__siunitx_angle_signed_bool
+ { \msg_error:nnn { siunitx } { arc-multi-sign } }
+ { \tl_set:Nn \l__siunitx_angle_sign_tl {#2} }
\tl_set:cn { l__siunitx_angle_ #8 _tl }
{ {#1} { } {#3} {#4} {#5} {#6} {#7} }
- \tl_set:Nn \l__siunitx_angle_sign_tl {#2}
- \__siunitx_angle_suppress_comp_sign:
+ \__siunitx_angle_suppress_comp:
}
}
\cs_new:Npn \__siunitx_angle_sign:nnnnnnn #1#2#3#4#5#6#7
@@ -3206,6 +3234,12 @@
\siunitx_unit_format:nN {#1} \l__siunitx_angle_tmp_tl
\siunitx_print_unit:V \l__siunitx_angle_tmp_tl
}
+\msg_new:nnnn { siunitx } { arc-multi-sign }
+ { Multiple~signs~given~for~arc~angle! }
+ {
+ An~angle~given~as~an~arc~should~have~at~most~one~sign:~
+ only~the~first~sign~will~be~used.
+ }
\keys_set:nn { siunitx }
{
angle-mode = input ,
@@ -3871,10 +3905,10 @@
\bool_lazy_or:nnTF
{ \str_if_eq_p:nn {#2} { i } }
{ \str_if_eq_p:nn {#2#3} { +i } }
- { \__siunitx_complex_convert_polar_auxvi:nnn { } { 1 } {#1} }
+ { \__siunitx_complex_convert_polar_auxvii:nnn { } { 1 } {#1} }
{
\str_if_eq:nnTF {#2#3} { -i }
- { \__siunitx_complex_convert_polar_auxvi:nnn { } { -1 } {#1} }
+ { \__siunitx_complex_convert_polar_auxvii:nnn { } { -1 } {#1} }
{ \__siunitx_complex_convert_polar_auxiii:nnw {#1} {#2} #3 + + \q_stop }
}
}
@@ -3884,7 +3918,7 @@
{ \__siunitx_complex_convert_polar_auxiv:nnw {#1} {#2} #3 - - \q_stop }
{
\str_if_eq:nnTF {#4} { i }
- { \__siunitx_complex_convert_polar_auxvi:nnn {#2#3} { 1 } {#1} }
+ { \__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 }
}
}
@@ -3894,35 +3928,45 @@
{ \__siunitx_complex_convert_polar_auxv:nnw { } {#1} #2#3 i \q_nil i \q_stop }
{
\str_if_eq:nnTF {#4} { i }
- { \__siunitx_complex_convert_polar_auxvi:nnn { } { -1 } {#1} }
+ { \__siunitx_complex_convert_polar_auxvii:nnn { } { -1 } {#1} }
{ \__siunitx_complex_convert_polar_auxv:nnw {#2#3} {#1} -#4 i \q_nil i \q_stop }
}
}
\cs_new:Npn \__siunitx_complex_convert_polar_auxv:nnw #1#2#3 i #4 i #5 \q_stop
{
\quark_if_nil:nTF {#4}
- { { #3 \tl_if_blank:nF {#2} { e#2 } } { 0 } }
- { \__siunitx_complex_convert_polar_auxvi:nnn {#1} {#3} {#2} }
+ {
+ \tl_if_head_eq_meaning:nNTF {#3} -
+ { \__siunitx_complex_convert_polar_auxvi:enn { \use_none:n #3 } { 180 } }
+ { \__siunitx_complex_convert_polar_auxvi:nnn {#3} { 0 } }
+ {#2}
+ }
+ { \__siunitx_complex_convert_polar_auxvii:nnn {#1} {#3} {#2} }
}
\cs_new:Npn \__siunitx_complex_convert_polar_auxvi:nnn #1#2#3
{
- \__siunitx_complex_convert_polar_auxvii:eee
+ { #1 \tl_if_blank:nF {#3} { e#3 } } {#2}
+ }
+\cs_generate_variant:Nn \__siunitx_complex_convert_polar_auxvi:nnn { e }
+\cs_new:Npn \__siunitx_complex_convert_polar_auxvii:nnn #1#2#3
+ {
+ \__siunitx_complex_convert_polar_auxviii:eee
{ \tl_if_blank:nTF {#1} { 0 } {#1} }
{ \tl_if_blank:nTF {#2} { 0 } {#2} }
{ \tl_if_blank:nF {#3} { e#3 } }
}
-\cs_new:Npn \__siunitx_complex_convert_polar_auxvii:nnn #1#2#3
+\cs_new:Npn \__siunitx_complex_convert_polar_auxviii:nnn #1#2#3
{
- \__siunitx_complex_format_polar_auxviii:ee
+ \__siunitx_complex_format_polar_auxix:ee
{ \fp_eval:n { sqrt ( (#1#3)^2 + (#2#3)^2 ) } }
{
\fp_eval:n
{ atan \bool_if:NT \l__siunitx_complex_polar_degree_bool { d } (#2 , #1) }
}
}
-\cs_generate_variant:Nn \__siunitx_complex_convert_polar_auxvii:nnn { eee }
-\cs_new:Npn \__siunitx_complex_format_polar_auxviii:nn #1#2 { {#1} {#2} }
-\cs_generate_variant:Nn \__siunitx_complex_format_polar_auxviii:nn { ee }
+\cs_generate_variant:Nn \__siunitx_complex_convert_polar_auxviii:nnn { eee }
+\cs_new:Npn \__siunitx_complex_format_polar_auxix:nn #1#2 { {#1} {#2} }
+\cs_generate_variant:Nn \__siunitx_complex_format_polar_auxix:nn { ee }
\msg_new:nnnn { siunitx } { invalid-polar-form }
{ Invalid~polar~form~"#1:#2". }
{
@@ -5308,13 +5352,6 @@
{
\group_begin:
\tl_clear:N \l__siunitx_table_collect_tl
- \if_false: { \fi:
- \cs_set_protected:Npn \cr
- {
- \__siunitx_table_collect_loop:
- \tex_cr:D
- }
- \if_false: } \fi:
\__siunitx_table_collect_begin:w
}
\cs_new_protected:Npn \__siunitx_table_collect_begin:w #1 \ignorespaces
@@ -5338,9 +5375,10 @@
\__siunitx_table_collect_search:NnF #1
{
\unskip { \__siunitx_table_collect_loop: }
- \end { \tabularnewline \end }
+ \textonly@unskip { \__siunitx_table_collect_loop: }
+ \end { \__siunitx_table_collect_pre_cr: \tabularnewline \end }
\relax { \__siunitx_table_collect_relax:N #1 }
- \tabularnewline { \tabularnewline }
+ \tabularnewline { \__siunitx_table_collect_pre_cr: \tabularnewline }
\siunitx_cell_end: { \siunitx_cell_end: }
}
{ \__siunitx_table_collect_token_aux:N #1 }
@@ -5367,9 +5405,9 @@
\@maybe@unskip { \__siunitx_table_collect_loop: }
\tab@setcr { \__siunitx_table_collect_loop: }
\unskip { \__siunitx_table_collect_loop: }
- \end { \tabularnewline \end }
+ \end { \__siunitx_table_collect_pre_cr: \tabularnewline \end }
\relax { \__siunitx_table_collect_relax:N #1 }
- \tabularnewline { \tabularnewline }
+ \tabularnewline { \__siunitx_table_collect_pre_cr: \tabularnewline }
\siunitx_cell_end: { \siunitx_cell_end: }
}
{ \__siunitx_table_collect_token_aux:N #1 }
@@ -5390,6 +5428,16 @@
{ \use_i_delimit_by_q_stop:nw {#3} }
{ \__siunitx_table_collect_search_aux:NNn #1 }
}
+\cs_new_protected:Npn \__siunitx_table_collect_pre_cr:
+ {
+ \if_false: { \fi:
+ \cs_set_protected:Npn \cr
+ {
+ \__siunitx_table_collect_loop:
+ \tex_cr:D
+ }
+ \if_false: } \fi:
+ }
\tl_new:N \l__siunitx_table_before_tl
\tl_new:N \l__siunitx_table_number_tl
\tl_new:N \l__siunitx_table_after_tl
@@ -7502,7 +7550,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 } }
+ }
}
{ }
}
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 f87235ae97c..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 79335545c6b..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 86b935e0cca..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 504a6d81f84..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 6baf4706f0d..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 e1662945ad9..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 8b43b70d983..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 2a5d1f657c1..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 20d50b9647b..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 e30cfc78945..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 86fd138ac49..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 34f77b841fb..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 7036d1b7151..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 27274a91536..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 8bf9a452564..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 e8f80987255..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 87b3980af68..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 f37980423e4..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 7434d428f04..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 97db96be2d1..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 35acaa1f21c..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 e794b07f272..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 07519ba9470..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 5a5cbc91f0d..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 8506116f3ab..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 037c8643f00..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 c9a070af188..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 c0358750a04..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 3e183387fe6..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 96b276fda61..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 1165cf0f758..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 0ebab67f3d0..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 b055b10466b..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 659db2437a3..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 b9f69e0970d..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 c1c03432df6..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 b1b81b552ed..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 efd9b7fb095..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 fc62e60fd4a..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 18e715c9f66..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 e35513f886f..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 dcd0e20d190..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 84c46addadc..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 0c1127e6313..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 e9ff8d45061..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 6f17b07dd0e..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 6b7f0c79419..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 1efc8d65031..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 71ffa3b2dc0..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 e69eae4805a..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 6d52363 2024-04-05 19:40:30 +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.2}{\ExplFileDescription}
+ {\ExplFileDate}{2.1.5}{\ExplFileDescription}
\clist_const:Nn \c__sjtu_name_month_en_clist
{
January, February, March, April, May, June,
@@ -38,7 +38,7 @@
{ address } { Shanghai,~ P.R.~ China } ,
{ author } { Author } ,
{ supervisor } { Supervisor } ,
- { assoc_supervisor } { Assoc.~ Supervisor } ,
+ { assoc_supervisor } { Assoc.\ Supervisor } ,
{ co_supervisor } { Co-supervisor } ,
{ title_page } { Title~ Page } ,
{ declaration } { Statutory~ Declaration } ,
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 2b9876762f8..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 abf037fd3a1..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 4439b9c7c7c..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 d081700e257..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 0c4877b2ae8..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 1cd1f52e7ba..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 6d52363 2024-04-05 19:40:30 +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.2}{\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 0dbe1830e6b..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 6d52363 2024-04-05 19:40:30 +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.2}{\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
@@ -859,15 +859,15 @@
\contentsmargin [ 2.55 em ] { 0 pt }
\titlecontents { section }
[ 0 pt ] { \addvspace { 6 bp } \bfseries }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\titlecontents { subsection }
[ 2 em ] { }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\titlecontents { subsubsection }
[ 4 em ] { }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\NewDocumentCommand \SJTU@listof { m m s }
{
@@ -882,7 +882,7 @@
{ \SJTU@listof {#4} {#2} }
\titlecontents {#2}
[ 0 pt ] { }
- { \contentspush { #3 \space \thecontentslabel \quad } } { }
+ { \contentspush { #3 \space \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\exp_args:Nnv \contentsuse {#2} { ext@ #2 }
}
diff --git a/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls b/Master/texmf-dist/tex/latex/sjtutex/sjtureport.cls
index aa358407559..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 6d52363 2024-04-05 19:40:30 +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.2}{\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
@@ -889,15 +889,15 @@
\contentsmargin [ 2.55 em ] { 0 pt }
\titlecontents { chapter }
[ 0 pt ] { \addvspace { 6 bp } \bfseries }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\titlecontents { section }
[ 2 em ] { }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\titlecontents { subsection }
[ 4 em ] { }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\NewDocumentCommand \SJTU@listof { m m s }
{
@@ -912,7 +912,7 @@
{ \SJTU@listof {#4} {#2} }
\titlecontents {#2}
[ 0 pt ] { }
- { \contentspush { #3 \space \thecontentslabel \quad } } { }
+ { \contentspush { #3 \space \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\exp_args:Nnv \contentsuse {#2} { ext@ #2 }
}
diff --git a/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls b/Master/texmf-dist/tex/latex/sjtutex/sjtuthesis.cls
index e658870cadd..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 6d52363 2024-04-05 19:40:30 +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.2}{\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:
@@ -1308,15 +1319,15 @@
\contentsmargin [ 2.55 em ] { 0 pt }
\titlecontents { chapter }
[ 0 pt ] { \addvspace { 6 bp } \bfseries }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\titlecontents { section }
[ 2 em ] { }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\titlecontents { subsection }
[ 4 em ] { }
- { \contentspush { \thecontentslabel \quad } } { }
+ { \contentspush { \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\NewDocumentCommand \SJTU@listof { m m s }
{
@@ -1331,7 +1342,7 @@
{ \SJTU@listof {#4} {#2} }
\titlecontents {#2}
[ 0 pt ] { }
- { \contentspush { #3 \space \thecontentslabel \quad } } { }
+ { \contentspush { #3 \space \thecontentslabel \enskip } } { }
{ \SJTU@leaders \thecontentspage }
\exp_args:Nnv \contentsuse {#2} { ext@ #2 }
}
diff --git a/Master/texmf-dist/tex/latex/spbmark/spbmark.sty b/Master/texmf-dist/tex/latex/spbmark/spbmark.sty
index fa10c8410f6..ada39cfc913 100644
--- a/Master/texmf-dist/tex/latex/spbmark/spbmark.sty
+++ b/Master/texmf-dist/tex/latex/spbmark/spbmark.sty
@@ -8,8 +8,8 @@
% The latest version of this license is in
% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}[2018/12/31]
-\RequirePackage{xparse,l3keys2e}
-\ProvidesExplPackage{spbmark}{2024/06/21}{1.46k}
+\RequirePackage{xparse}
+\ProvidesExplPackage{spbmark}{2024/10/31}{1.46t}
{Customize superscripts and subscripts}
\cs_generate_variant:Nn \box_set_ht:Nn { cv }
@@ -34,15 +34,13 @@
\cs_set_eq:NN \spbset \spb_set:n
\cs_new_protected:Npn \spb_mark_core_set_trad:n #1
{
- \cs_set:cpn { spb@text#1script@core }
- { \use:c { spb@text#1script@save } }
- \cs_set:cpn { spb@math@#1@core }
- { \use:c { spb@math@#1@save } }
+ \cs_set_eq:cc { spb@text#1script@core } { spb@text#1script@save }
+ \cs_set_eq:cc { spb@math@#1@core } { spb@math@#1@save }
}
\cs_new_protected:Npn \spb_mark_core_set_none:n #1
{
- \cs_set:cpn { spb@text#1script@core } { \relax }
- \cs_set:cpn { spb@math@#1@core } { \relax }
+ \cs_set_eq:cN { spb@text#1script@core } \use:n
+ \cs_set_eq:cN { spb@math@#1@core } \use:n
}
\keys_define:nn { spbmark/option }
@@ -130,7 +128,12 @@
{ \tl_set_eq:NN \fnmarkfont \ftntm@font }
{ \tl_set_eq:NN \fnmarkfont \normalfont }
-\ProcessKeysOptions{spbmark/option}
+\cs_if_exist:NTF \ProcessKeyOptions
+ { \ProcessKeyOptions[spbmark/option] }
+ {
+ \RequirePackage{l3keys2e}
+ \ProcessKeysOptions{spbmark/option}
+ }
\tl_new:N \g__spb_mark_case_init_tl
\cs_new_protected:Npn \spb_local_case_init:nnn #1#2#3
@@ -230,7 +233,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 }
@@ -330,40 +333,68 @@
\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} }
+ #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 }
@@ -467,6 +498,7 @@
\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} }
diff --git a/Master/texmf-dist/tex/latex/spelatex/spelatex.sty b/Master/texmf-dist/tex/latex/spelatex/spelatex.sty
index bf2a290b1bb..f1d034774f7 100644
--- a/Master/texmf-dist/tex/latex/spelatex/spelatex.sty
+++ b/Master/texmf-dist/tex/latex/spelatex/spelatex.sty
@@ -23,48 +23,40 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{spelatex}
- [2024/06/21 v0.91 SpeLaTeX - Speech-enabled LaTeX (DMW and LVP)]
-\def\fileversion{0.91}
-\def\filedate{2024/06/21}
+ [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}
\RequirePackage{fancyvrb}
\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}
-\RequirePackage{marginnote}
\SetupKeyvalOptions{
family=spel,
prefix=spel@
}
\DeclareStringOption[ogg]{format}
+\DeclareStringOption[local]{server}
+\DeclareStringOption[full]{markervisibility}
\DeclareBoolOption[false]{disabled}
\DeclareBoolOption[false]{extramath}
-\DeclareBoolOption[false]{propermath}
\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{\spelbox}{S\kern-0.3ex\raisebox{-0.1ex}{\rotatebox{-15}{p}}\kern-0.25ex\raisebox{0.1ex}{\rotatebox{10}{e}}\kern-0.1exLbo\raisebox{-0.2ex}{x}}
+\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}
@@ -77,9 +69,15 @@
\addtostream{spelidx}{format|\spel@format}
\addtostream{spelidx}{audiodir|\audiodir}
\addtostream{spelidx}{chunkdir|\chunkdir}
+\addtostream{spelidx}{server|\spel@server}
+\ExplSyntaxOn
+\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
@@ -118,18 +116,32 @@
\setcounter{spel@chunk}{0}
\AddBabelHook{informspel}{write}{\spel@idxwrite{language}{\languagename}}
\EnableBabelHook{informspel}
+\ExplSyntaxOn
+\definecolor{faintgray}{rgb}{0.9,0.9,0.9}
+\str_if_eq:VnTF{\spel@markervisibility}{none}{
+ \colorlet{spel@color@right}{white}
+ \colorlet{spel@color@left}{white}
+}{}
+\str_if_eq:VnTF{\spel@markervisibility}{onlygroups}{
+ \colorlet{spel@color@right}{black!25}
+ \colorlet{spel@color@left}{white}
+}{}
+\str_if_eq:VnTF{\spel@markervisibility}{full}{
+ \colorlet{spel@color@right}{black!25}
+ \colorlet{spel@color@left}{black!25}
+}{}
+\ExplSyntaxOff
\ifspel@disabled\newcommand{\spel@registerelement}[1]{}\else
\newcommand{\spel@registerelement}[1]{%
\expandafter\let\csname spel@@#1\expandafter\endcsname\csname #1\endcsname
\expandafter\gdef\csname #1\endcsname##1{%
\spel@chunkwrite{#1}{##1}
- \csname spel@@#1\endcsname{\href{run:\audiodir/#1.\spel@format}{##1}}
- }
- \expandafter\AtBeginDocument{
+ \csname spel@@#1\endcsname{\href{\linksdir/#1.\spel@format}{##1}}
\spel@idxwrite{#1}{#1}
}
}
\fi
+\spel@idxwrite{language}{\languagename}
\spel@registerelement{title}
\spel@registerelement{date}
\spel@registerelement{author}
@@ -159,7 +171,7 @@
\let\spel@@part\@part
\def\@part[#1]#2{%
\setcounter{spel@chunk}{0}% need this because counter resetting fails
- \spel@@part[#1]{\href{run:\audiodir/\spel@@optpart.\spel@format}{#2}}%
+ \spel@@part[#1]{\href{\linksdir/\spel@@optpart.\spel@format}{#2}}%
\spel@idxwrite{part \thepart}{\spel@@optpart}%
\spel@chunkwrite{\spel@@optpart}{#2}%
}
@@ -170,31 +182,40 @@
\stepcounter{spel@spart}%
\setcounter{spel@chunk}{0}% need this because counter resetting fails
\spel@@spart{%
- \href{run:\audiodir/\spel@@optpart star-\thespel@spart.\spel@format}{#1}}%
+ \href{\linksdir/\spel@@optpart star-\thespel@spart.\spel@format}{#1}}%
\spel@idxwrite{part}{\spel@@optpart star-\thespel@spart}%
\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{run:\audiodir/\spel@@optpart\thechapter.\spel@format}{#2}}%
+ \href{\linksdir/\spel@@optpart\thechapter.\spel@format}{#2}}%
\spel@idxwrite{chapter \thechapter}{\spel@@optpart\thechapter}%
\spel@chunkwrite{\spel@@optpart\thechapter}{#2}%
}
\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{%
- \href{run:\audiodir/\spel@@optpart star-\thespel@schapter.\spel@format}{#1}}%
+ \href{\linksdir/\spel@@optpart star-\thespel@schapter.\spel@format}{#1}}%
\spel@idxwrite{chapter}{\spel@@optpart star-\thespel@schapter}%
\spel@chunkwrite{\spel@@optpart star-\thespel@schapter}{#1}%
}
@@ -209,9 +230,11 @@
\fi%
\setcounter{spel@chunk}{0}% need this because counter resetting fails
\spel@@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{%
- \href{run:\audiodir/\spel@@optpart\thesubparagraph.\spel@format}{#8}\hfill%
- \href{run:\audiodir/\spel@@optpart\thesubparagraph.m3u}{\textcolor{black!25}{$\triangleright$}}}%
- \def\spel@@label{\ifnum #2>\c@secnumdepth\else#1 \csname the#1\endcsname\fi}
+ \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 paragraph\else#1 \csname the#1\endcsname\fi}
\spel@idxwrite{\spel@@label}{\spel@@optpart\thesubparagraph}%
\spel@chunkwrite{\spel@@optpart\thesubparagraph}{#8}%
}
@@ -222,8 +245,8 @@
\stepcounter{spel@ssect}%
%\setcounter{spel@chunk}{0}% need this because counter resetting fails
\spel@@ssect{#1}{#2}{#3}{#4}{%
- \href{run:\audiodir/\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}%
}
@@ -234,7 +257,9 @@
\stepcounter{spel@footnote}%
\settowidth\spel@mptboxwidth{\usebox\spel@mptbox}%
\spel@@fntext{%
- \hspace*{-\spel@mptboxwidth}\href{run:\audiodir/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}%
}
@@ -251,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{run:\audiodir/\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{run:\audiodir/\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{run:\audiodir/\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{black!25}{$\qquad$}}
+\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}%
@@ -280,22 +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{run:\audiodir/\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{run:\audiodir/\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}}
+\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}%
+ \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}}%
+ \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}%
+ \fi%
+ \spel@chunkarealinkfalse%
+ \fi%
+}
+
+\def\spelverbatimwrite#1{%
+ \@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\<<<{\spelchunkatom}
\def\spelchunkad{%
\catcode`\^^M=\active
\@ifnextchar[{\catcode`\^^M=5\spelchunk@opt}{\catcode`\^^M=5\spelchunk@int}}
@@ -328,10 +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{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}{}
@@ -339,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}
{
@@ -354,20 +505,22 @@
}
\ExplSyntaxOff
\spelmacad{spelatex}{spee-lay-tech}
-\spelmacad{spelbox}{spel-box}
\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}{...}
@@ -381,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/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..4b89d4d211d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/stocksize/stocksize.sty
@@ -0,0 +1,95 @@
+%% 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.1}
+\def\filedate {2024/11/12}
+\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[pass]{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=31}%
+ \@ifundefined{pagewidth}{}{\pagewidth=#2}%
+}
+
+
+% Fix page layout
+\DeclareRobustCommand{\@ss@fixpagelayout}{%
+ \setlength{\paperheight}{\the\dimexpr\Gm@tmargin+\Gm@height+\Gm@bmargin\relax}
+ \setlength{\paperwidth}{\the\dimexpr\Gm@lmargin+\Gm@width+\Gm@rmargin\relax}
+ \setlength{\stockheight}{\paperheight}
+ \setlength{\stockwidth}{\paperwidth}
+ \setlength{\@colht}{\textheight}
+ \setlength{\@colroom}{\textheight}%
+ \setlength{\vsize}{\textheight}
+ \setlength{\columnwidth}{\textwidth}%
+ \if@twocolumn%
+ \advance\columnwidth-\columnsep
+ \divide\columnwidth\tw@%
+ \@firstcolumntrue%
+ \fi%
+ \setlength{\hsize}{\columnwidth}%
+ \setlength{\linewidth}{\hsize}%
+}
+
+\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}}%
+ \restoregeometry%
+ \newgeometry{#1}%
+ \@ss@fixpagelayout%
+ \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}}%
+ \@ss@fixpagelayout%
+ \addtocounter{@ss@cnt}{-1}%
+ \@ss@setpdfpagesize{\csname @ssph@\arabic{@ss@cnt}\endcsname}%
+ {\csname @sspw@\arabic{@ss@cnt}\endcsname}%
+}
+
+% To support multiple levels (nesting) of stock sizes
+\newcommand{\newstocksize}[1]{%
+ % #1 = layout arguments to be passed to \newgeometry
+ \pdfsavegeometry{#1}%
+}
+
+\newcommand{\restorestocksize}{%
+ \pdfrestoregeometry%
+}
+
+% Set stock dimensions to current paper dimensions
+% \stockheight=\paperheight
+% \stockwidth=\paperwidth
+
diff --git a/Master/texmf-dist/tex/latex/suanpan-l3/suanpan-l3.sty b/Master/texmf-dist/tex/latex/suanpan-l3/suanpan-l3.sty
new file mode 100644
index 00000000000..b712d0063e4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/suanpan-l3/suanpan-l3.sty
@@ -0,0 +1,1412 @@
+%%% ----------------------------------------------------------------------------
+%%% suanpan: draw suanpan(abacus) with LaTeX3
+%%% Author : Nan Geng <nangeng@nwafu.edu.cn>
+%%% Repository: https://gitee.com/nwafu_nan/suan-span
+%%% License : The LaTeX Project Public License 1.3c
+%%% ----------------------------------------------------------------------------
+
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\RequirePackage{expl3}
+% \ProvidesExplPackage{suanpan}{2024-08-20}{v1.0.0} % 初稿
+% \ProvidesExplPackage{suanpan}{2024-08-28}{v1.1.0} % 优化(统一尺寸计算,添加空白占位)
+% \ProvidesExplPackage{suanpan-l3}{2024-08-30}{v1.1.1} % 更名为suanpan-l3
+% \ProvidesExplPackage{suanpan-l3}{2024-08-31}{v1.1.2} % 添加empty不绘制空档选项
+% \ProvidesExplPackage{suanpan-l3}{2024-09-01}{v1.1.3} % 添加bid批处理及绘制颜色选项
+% % 将算珠与档杆绘制改为TikZ
+% \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.3} % 将算珠高光改为ball类型,
+% % 并添加高光位置(角度)选项。
+\ProvidesExplPackage{suanpan-l3}{2024-10-13}{v1.2.4} % 删除tikz宏包库加载补丁
+ {draw suanpan(abacus) with LaTeX3}
+
+\RequirePackage{l3keys2e}
+\RequirePackage{xparse}
+\RequirePackage{l3draw}
+
+\RequirePackage {tikz}
+% 添加tikz宏包的库
+\usetikzlibrary{shadings}
+
+\cs_new:Npn \__suanpan_error:n { \msg_error:nn { suanpan(abacus) } }
+
+% 盒子容器总高度计算函数
+\cs_new_nopar:Npn \__suanpan_coffin_ht_plus_dp:N #1
+ {
+ \coffin_ht:N #1 + \coffin_dp:N #1
+ }
+
+% =============颜色处理函数=============
+% 填充色辅助函数
+\cs_new_nopar:Nn \__suanpan_aux_color_boxfill:
+ { }
+
+% 颜色命名函数
+% #1 颜色名称
+% #2 颜色表达式
+\cs_set_nopar:Npn \__suanpan_color_select:nn #1#2
+ {
+ \colorlet { #1 } { #2 }
+ }
+\cs_generate_variant:Nn \__suanpan_color_select:nn {nx}
+
+% 颜色命名函数
+% #1 颜色名称
+% #2 颜色空间
+% #3 颜色分量值
+\cs_set_nopar:Npn \__suanpan_color_select:nnn #1#2#3
+ {
+ \definecolor { #1 } { #2 } { #3 }
+ }
+\cs_generate_variant:Nn \__suanpan_color_select:nnn {nnx}
+
+% 定义变量
+% 算盘基础尺寸
+\dim_new:N \l__suanpan_bid_h_dim
+\dim_new:N \l__suanpan_bid_d_dim
+\dim_new:N \l__suanpan_rod_d_dim
+\dim_new:N \l__suanpan_frame_b_dim
+\dim_new:N \l__suanpan_bid_sep_dim
+\dim_new:N \l__suanpan_rod_sep_dim
+
+% 算盘基础尺寸初值(参考 QBT1747-1993 算盘标准)
+\dim_set:Nn \l__suanpan_bid_h_dim { 12mm }
+\dim_set:Nn \l__suanpan_bid_d_dim { 23mm }
+\dim_set:Nn \l__suanpan_rod_d_dim { 7mm }
+\dim_set:Nn \l__suanpan_frame_b_dim { 13mm }
+\dim_set:Nn \l__suanpan_bid_sep_dim { 1.8pt }
+\dim_set:Nn \l__suanpan_rod_sep_dim { 3.0pt }
+
+% 半长度
+\dim_new:N \l__suanpan_bid_h_half_dim
+\dim_new:N \l__suanpan_bid_d_half_dim
+\dim_new:N \l__suanpan_rod_d_half_dim
+\dim_new:N \l__suanpan_frame_b_half_dim
+
+% 上珠偏移
+\dim_new:N \l__suanpan_bid_upper_offset_dim
+% 下珠偏移
+\dim_new:N \l__suanpan_bid_lower_offset_dim
+% 上档杆长度
+\dim_new:N \l__suanpan_rod_upper_h_dim
+% 下档杆长度
+\dim_new:N \l__suanpan_rod_lower_h_dim
+% 上档杆偏移
+\dim_new:N \l__suanpan_rod_upper_offset_dim
+% 下档杆偏移
+\dim_new:N \l__suanpan_rod_lower_offset_dim
+% 上档杆位置
+\dim_new:N \l__suanpan_rod_upper_dim
+% 下档杆位置
+\dim_new:N \l__suanpan_rod_lower_dim
+% 上边框内线偏移
+\dim_new:N \l__suanpan_frame_upper_inner_offset_dim
+% 下边框内线偏移
+\dim_new:N \l__suanpan_frame_lower_inner_offset_dim
+% 上边框外线偏移
+\dim_new:N \l__suanpan_frame_upper_outer_offset_dim
+% 下边框外线偏移
+\dim_new:N \l__suanpan_frame_lower_outer_offset_dim
+% 算珠上边缘
+\dim_new:N \l__suanpan_bid_upper_dim
+% 算珠下边缘
+\dim_new:N \l__suanpan_bid_lower_dim
+% 算珠绘制高度
+\dim_new:N \l__suanpan_bid_draw_h_dim
+% 算珠绘制半高度
+\dim_new:N \l__suanpan_bid_draw_h_half_dim
+% 算珠圆角半径
+\dim_new:N \l__suanpan_bid_arc_dim
+% 横梁计位点半径
+\dim_new:N \l__suanpan_frame_unit_r_dim
+% 边框外线半宽度
+\dim_new:N \l__suanpan_frame_outer_half_dim
+% 档杆总成宽度
+\dim_new:N \l__suanpan_support_d_dim
+% 档杆总成半宽度
+\dim_new:N \l__suanpan_support_d_half_dim
+% 档杆总成组装垂直偏移
+\dim_new:N \l__suanpan_support_y_offset_dim
+
+% 上边框内线位置
+\dim_new:N \l__suanpan_frame_inner_upper_dim
+% 下边框内线位置
+\dim_new:N \l__suanpan_frame_inner_lower_dim
+
+% 边框内线高度
+\dim_new:N \l__suanpan_frame_inner_h_dim
+% 边框外线高度
+\dim_new:N \l__suanpan_frame_outer_h_dim
+
+\dim_new:N \l__suanpan_frame_inner_linewidth_dim
+\dim_new:N \l__suanpan_frame_outer_linewidth_dim
+\dim_new:N \l__suanpan_rod_linewidth_dim
+\dim_new:N \l__suanpan_bid_linewidth_dim
+
+% 状态变量
+\bool_new:N \l__suanpan_support_frame_bool
+\bool_set_true:N \l__suanpan_support_frame_bool
+\bool_new:N \l__suanpan_support_unit_bool
+\bool_set_false:N \l__suanpan_support_unit_bool
+\bool_new:N \l__suanpan_draft_bool
+\bool_new:N \l__suanpan_empty_rod_bool
+
+% 容器(盒子)
+\coffin_new:N \l__suanpan_inner_bid_coffin
+\coffin_new:N \l__suanpan_outer_bid_coffin
+\coffin_new:N \l__suanpan_float_bid_coffin
+\coffin_new:N \l__suanpan_support_coffin
+\coffin_new:N \l_tmpc_coffin
+\coffin_new:N \l_tmpd_coffin
+
+% 凭据表(Token)
+\tl_new:N \l__suanpan_bid_draw_color_tl
+\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
+\int_zero:N \l__suanpan_rod_max_int
+
+% 档位算珠位置列表
+\clist_new:N \l__suanpan_bids_pos_clist
+
+% 档位数字与算珠位置对照属性表常量(内珠和外珠)
+% {x, y}==>x: 算珠位置(1-11, 1-7---下珠,8-10---上珠,11---悬珠)
+% y: 算珠类型(0---外珠,1---内珠)
+\prop_const_from_keyval:Nn \l__suanpan_rods_val_prop
+ {
+ 0 = {{1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {9, 0}, {10, 0}},
+ 1 = {{1, 0}, {2, 0}, {3, 0}, {4, 0}, {7, 1}, {9, 0}, {10, 0}},
+ 2 = {{1, 0}, {2, 0}, {3, 0}, {6, 1}, {7, 1}, {9, 0}, {10, 0}},
+ 3 = {{1, 0}, {2, 0}, {5, 1}, {6, 1}, {7, 1}, {9, 0}, {10, 0}},
+ 4 = {{1, 0}, {4, 1}, {5, 1}, {6, 1}, {7, 1}, {9, 0}, {10, 0}},
+ 5 = {{1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {8, 1}, {10, 0}},
+ 6 = {{1, 0}, {2, 0}, {3, 0}, {4, 0}, {7, 1}, {8, 1}, {10, 0}},
+ 7 = {{1, 0}, {2, 0}, {3, 0}, {6, 1}, {7, 1}, {8, 1}, {10, 0}},
+ 8 = {{1, 0}, {2, 0}, {5, 1}, {6, 1}, {7, 1}, {8, 1}, {10, 0}},
+ 9 = {{1, 0}, {4, 1}, {5, 1}, {6, 1}, {7, 1}, {8, 1}, {10, 0}},
+ 10 = {{3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}, {8, 1}, {10, 0}},
+ 11 = {{1, 0}, {2, 0}, {3, 0}, {4, 0}, {7, 1}, {8, 1}, {9 , 1}},
+ 12 = {{1, 0}, {2, 0}, {3, 0}, {6, 1}, {7, 1}, {8, 1}, {9 , 1}},
+ 13 = {{1, 0}, {2, 0}, {5, 1}, {6, 1}, {7, 1}, {8, 1}, {9 , 1}},
+ 14 = {{1, 0}, {4, 1}, {5, 1}, {6, 1}, {7, 1}, {8, 1}, {9 , 1}},
+ 15 = {{3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}, {8, 1}, {9 , 1}},
+ 16 = {{1, 0}, {2, 0}, {3, 0}, {4, 0}, {7, 1}, {8, 1}, {11, 1}},
+ 17 = {{1, 0}, {2, 0}, {3, 0}, {6, 1}, {7, 1}, {8, 1}, {11, 1}},
+ 18 = {{1, 0}, {2, 0}, {5, 1}, {6, 1}, {7, 1}, {8, 1}, {11, 1}},
+ 19 = {{1, 0}, {4, 1}, {5, 1}, {6, 1}, {7, 1}, {8, 1}, {11, 1}},
+ 20 = {{3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}, {8, 1}, {11, 1}}
+ }
+
+% 尺寸计算函数
+\cs_new:Nn \__suanpan_dim_calc:
+ {
+ % 基础尺寸半长度
+ \dim_set:Nn \l__suanpan_bid_h_half_dim { \l__suanpan_bid_h_dim / 2 }
+ \dim_set:Nn \l__suanpan_bid_d_half_dim { \l__suanpan_bid_d_dim / 2 }
+ \dim_set:Nn \l__suanpan_rod_d_half_dim { \l__suanpan_rod_d_dim / 2 }
+ \dim_set:Nn \l__suanpan_frame_b_half_dim { \l__suanpan_frame_b_dim / 2 }
+ % 上珠偏移(8号算珠)
+ \dim_set:Nn \l__suanpan_bid_upper_offset_dim
+ { \l__suanpan_frame_b_half_dim + \l__suanpan_bid_h_half_dim }
+ % 下珠偏移(1号算珠)
+ \dim_set:Nn \l__suanpan_bid_lower_offset_dim
+ { -\l__suanpan_frame_b_half_dim - \l__suanpan_bid_h_dim * 7 +
+ \l__suanpan_bid_h_half_dim }
+ % 上档杆长度
+ \dim_set:Nn \l__suanpan_rod_upper_h_dim { \l__suanpan_bid_h_dim * 3 }
+ % 下档杆长度
+ \dim_set:Nn \l__suanpan_rod_lower_h_dim { \l__suanpan_bid_h_dim * 7 }
+ % 上档杆偏移
+ \dim_set:Nn \l__suanpan_rod_upper_offset_dim { \l__suanpan_frame_b_half_dim }
+ % 下档杆偏移
+ \dim_set:Nn \l__suanpan_rod_lower_offset_dim
+ { -\l__suanpan_frame_b_half_dim - \l__suanpan_rod_lower_h_dim }
+ % 上档杆位置
+ \dim_set:Nn \l__suanpan_rod_upper_dim
+ { \l__suanpan_rod_upper_offset_dim + \l__suanpan_rod_upper_h_dim }
+ % 下档杆位置
+ \dim_set:Nn \l__suanpan_rod_lower_dim { -\l__suanpan_frame_b_half_dim }
+
+ % 上边框内线偏移
+ \dim_set:Nn \l__suanpan_frame_upper_inner_offset_dim
+ { \l__suanpan_frame_b_half_dim + \l__suanpan_rod_upper_h_dim }
+ % 下边框内线偏移
+ \dim_set:Nn \l__suanpan_frame_lower_inner_offset_dim
+ { -\l__suanpan_frame_b_half_dim - \l__suanpan_rod_lower_h_dim }
+ % 上边框外线偏移
+ \dim_set:Nn \l__suanpan_frame_upper_outer_offset_dim
+ { \l__suanpan_frame_b_dim + \l__suanpan_frame_b_half_dim +
+ \l__suanpan_rod_upper_h_dim }
+ % 下边框外线偏移
+ \dim_set:Nn \l__suanpan_frame_lower_outer_offset_dim
+ { -\l__suanpan_frame_b_dim - \l__suanpan_frame_b_half_dim -
+ \l__suanpan_rod_lower_h_dim }
+
+ % 算珠上边缘
+ \dim_set:Nn \l__suanpan_bid_upper_dim
+ { \l__suanpan_bid_h_half_dim - \l__suanpan_bid_sep_dim / 2 }
+ % 算珠上边缘
+ \dim_set:Nn \l__suanpan_bid_lower_dim
+ { -\l__suanpan_bid_h_half_dim + \l__suanpan_bid_sep_dim / 2 }
+ % 算珠绘制高度
+ \dim_set:Nn \l__suanpan_bid_draw_h_dim
+ { \l__suanpan_bid_upper_dim - \l__suanpan_bid_lower_dim }
+ % 算珠绘制半高度
+ \dim_set:Nn \l__suanpan_bid_draw_h_half_dim
+ { \l__suanpan_bid_draw_h_dim / 2 }
+ % 算珠圆角半径
+ \dim_set:Nn \l__suanpan_bid_arc_dim
+ { \l__suanpan_bid_draw_h_half_dim - 1pt}
+
+ % 横梁计位点半径
+ \dim_set:Nn \l__suanpan_frame_unit_r_dim { \l__suanpan_frame_b_dim / 4 }
+
+ % 边框外线半宽度
+ \dim_set:Nn \l__suanpan_frame_outer_half_dim
+ { \l__suanpan_frame_outer_linewidth_dim / 2 }
+
+ % 档杆总成宽度
+ \dim_set:Nn \l__suanpan_support_d_dim
+ { \l__suanpan_bid_d_dim + \l__suanpan_rod_sep_dim }
+ % 档杆总成半宽度
+ \dim_set:Nn \l__suanpan_support_d_half_dim
+ { \l__suanpan_bid_d_half_dim + \l__suanpan_rod_sep_dim / 2 }
+
+ % 档杆总成组装垂直偏移
+ \dim_set:Nn \l__suanpan_support_y_offset_dim
+ { ( \l__suanpan_frame_upper_outer_offset_dim -
+ \l__suanpan_frame_lower_outer_offset_dim +
+ \l__suanpan_frame_outer_linewidth_dim ) / 2 -
+ \l__suanpan_frame_upper_outer_offset_dim -
+ \l__suanpan_frame_outer_half_dim
+ }
+
+ % 上边框内线位置
+ \dim_set:Nn \l__suanpan_frame_inner_upper_dim
+ { \l__suanpan_frame_upper_inner_offset_dim +
+ \l__suanpan_frame_inner_linewidth_dim / 2 }
+ % 下边框内线位置
+ \dim_set:Nn \l__suanpan_frame_inner_lower_dim
+ { \l__suanpan_frame_lower_inner_offset_dim -
+ \l__suanpan_frame_inner_linewidth_dim / 2 }
+
+ % 边框内线高度
+ \dim_set:Nn \l__suanpan_frame_inner_h_dim
+ { \l__suanpan_rod_upper_h_dim +
+ \l__suanpan_rod_lower_h_dim +
+ \l__suanpan_frame_b_dim }
+ % 边框外线高度
+ \dim_set:Nn \l__suanpan_frame_outer_h_dim
+ { \l__suanpan_rod_upper_h_dim +
+ \l__suanpan_rod_lower_h_dim +
+ \l__suanpan_frame_b_dim * 3 }
+ }
+
+% 选项处理
+% ============宏包选项=================
+\keys_define:nn { suanpan }
+ {
+ % 草稿模式
+ draft .choice:,
+ draft / true .code:n = {%
+ \bool_set_true:N \l__suanpan_draft_bool
+ \bool_set_false:N \l__suanpan_empty_rod_bool
+ },
+ draft / false .code:n = {%
+ \bool_set_false:N \l__suanpan_draft_bool
+ \bool_set_true:N \l__suanpan_empty_rod_bool
+ },
+ draft .default:n = true,
+ draft .initial:n = false,
+
+ % 是否绘制档的数值为0的空档算珠
+ empty .choice:,
+ empty / true .code:n = { \bool_set_true:N \l__suanpan_empty_rod_bool },
+ empty / false .code:n = { \bool_set_false:N \l__suanpan_empty_rod_bool },
+ empty .default:n = true,
+ empty .initial:n = true,
+
+ unknown .code:n = { \msg_error:nn { suanpan } { unknown-option } }
+ }
+
+% key_value选项设计
+\keys_define:nn { suanpan }
+ {
+ % 绘图线宽
+ linewd .code:n = { % 算盘边框内线线宽
+ \dim_set:Nn \l__suanpan_frame_inner_linewidth_dim {#1}
+ % 算盘边框外线线宽
+ \dim_set:Nn \l__suanpan_frame_outer_linewidth_dim
+ {
+ \fp_to_dim:n
+ {
+ \fp_eval:n {%
+ \l__suanpan_frame_inner_linewidth_dim * 7.0 }
+ }
+ }
+ % 档杆线宽
+ \dim_set:Nn \l__suanpan_rod_linewidth_dim
+ {
+ \fp_to_dim:n
+ {
+ \fp_eval:n {%
+ \l__suanpan_frame_inner_linewidth_dim * 0.2 }
+ }
+ }
+ % 算珠线宽
+ \dim_set:Nn \l__suanpan_bid_linewidth_dim
+ {
+ \fp_to_dim:n
+ {
+ \fp_eval:n {%
+ \l__suanpan_frame_inner_linewidth_dim * 0.2 }
+ }
+ }
+ % 计算其它尺寸
+ \__suanpan_dim_calc:
+ },
+ linewd .initial:n = 2.0pt,
+
+ % 算珠高度
+ bidh .code:n = {%
+ \dim_set:Nn \l__suanpan_bid_h_dim { #1 }
+ % 计算其它尺寸
+ \__suanpan_dim_calc:
+ },
+ bidh .initial:n = 12mm,
+
+ % 算珠直径
+ bidd .code:n = {%
+ \dim_set:Nn \l__suanpan_bid_d_dim { #1 }
+ % 计算其它尺寸
+ \__suanpan_dim_calc:
+ },
+ bidd .initial:n = 23mm,
+
+ % 档杆直径(应小于算珠直径bidd)
+ rodd .code:n = {%
+ \dim_set:Nn \l__suanpan_rod_d_dim { #1 }
+ % 计算其它尺寸
+ \__suanpan_dim_calc:
+ },
+ rodd .initial:n = 7mm,
+
+ % 边框宽度
+ framew .code:n = {%
+ \dim_set:Nn \l__suanpan_frame_b_dim { #1 }
+ % 计算其它尺寸
+ \__suanpan_dim_calc:
+ },
+ framew .initial:n = 13mm,
+
+ % 档间间距
+ rodsep .code:n = {%
+ \dim_set:Nn \l__suanpan_rod_sep_dim { #1 }
+ % 计算其它尺寸
+ \__suanpan_dim_calc:
+ },
+ rodsep .initial:n = 3.0pt,
+
+ % 算珠间距
+ bidsep .code:n = {%
+ \dim_set:Nn \l__suanpan_bid_sep_dim { #1 }
+ % 计算其它尺寸
+ \__suanpan_dim_calc:
+ },
+ bidsep .initial:n = 0.0pt,
+
+ % 缩放参数
+ scale .tl_set:N = \l__suanpan_scale_tl,
+ scale .initial:n = 1.0,
+
+ % 边框绘图颜色
+ framedraw .code:n = { \__suanpan_color_select:nn { framecolor } {#1} },
+ framedraw .initial:n = black,
+ framedraw* .code:n = { \__suanpan_color_select:nnn { framecolor } #1 },
+
+ % 档杆绘图颜色
+ roddraw .code:n = { \__suanpan_color_select:nn { roddrawcolor } {#1} },
+ roddraw .initial:n = black,
+ roddraw* .code:n = { \__suanpan_color_select:nnn { roddrawcolor } #1 },
+ % 档杆填充颜色
+ rodfill .code:n = { \__suanpan_color_select:nn { rodfillcolor } {#1} },
+ rodfill .initial:n = black!20,
+ rodfill* .code:n = { \__suanpan_color_select:nnn { rodfillcolor } #1 },
+
+ % 外珠绘图颜色
+ outerdraw .code:n = { \__suanpan_color_select:nn { outerdrawcolor } {#1} },
+ outerdraw .initial:n = black,
+ outerdraw* .code:n = { \__suanpan_color_select:nnn { outerdrawcolor } #1 },
+ % 外珠填充颜色
+ outerfill .code:n = { \__suanpan_color_select:nn { outerfillcolor } {#1} },
+ outerfill .initial:n = black!40,
+ outerfill* .code:n = { \__suanpan_color_select:nnn { outerfillcolor } #1 },
+
+ % 内珠绘图颜色
+ innerdraw .code:n = { \__suanpan_color_select:nn { innerdrawcolor } {#1} },
+ innerdraw .initial:n = black,
+ innerdraw* .code:n = { \__suanpan_color_select:nnn { innerdrawcolor } #1 },
+ % 内珠填充颜色
+ innerfill .code:n = { \__suanpan_color_select:nn { innerfillcolor } {#1} },
+ innerfill .initial:n = black,
+ innerfill* .code:n = { \__suanpan_color_select:nnn { innerfillcolor } #1 },
+ innerfill .initial:n = black,
+
+ % 横梁标记字符格式
+ 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 } }
+ }
+
+% 出错输出信息
+\msg_new:nnn { suanpan } { unknown-option }
+ { package~ option~ "\l_keys_key_tl"~ is~ unknown. }
+
+% 选项默认值
+\keys_set:nn { suanpan }
+ {
+ linewd = 2.0pt,
+ rodsep = 3.0pt,
+ bidsep = 1.8pt,
+ scale = 1.0,
+ empty = true,
+ }
+
+% 将文档类选项传给suanpan
+\ProcessKeysOptions { suanpan }
+
+% 构建内珠(靠近横梁,参与计数)容器(盒子)
+\cs_new:Nn \__suanpan_inner_bid_construct:
+ {
+ \dim_set:Nn \l_tmpa_dim
+ { \l__suanpan_bid_d_half_dim - \l__suanpan_bid_draw_h_half_dim }
+
+ \tikzset{bid/.style = {% 内珠高光填充样式
+ 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,
+ },
+ draftline/.style = {% 内珠草稿模式绘制样式
+ draw = innerfillcolor,
+ line~cap = round,% 圆角线冒
+ line~width = \l__suanpan_bid_draw_h_dim,
+ }
+ }
+
+ \group_begin:
+ \hcoffin_gset:Nn \l__suanpan_inner_bid_coffin
+ {
+ % 判断是否为草稿模式
+ \bool_if:NTF \l__suanpan_draft_bool
+ {
+ \begin{tikzpicture}
+ \draw[draftline]
+ ( -\l_tmpa_dim, 0) -- ( \l_tmpa_dim, 0);
+ \end{tikzpicture}
+ }{
+ \begin{tikzpicture}
+ \shadedraw[bid]
+ ( -\l__suanpan_bid_d_half_dim, \l__suanpan_bid_lower_dim)
+ rectangle
+ ( \l__suanpan_bid_d_half_dim, \l__suanpan_bid_upper_dim);
+ \end{tikzpicture}
+ }
+ }
+ \group_end:
+ }
+
+% 构建外珠(远离横梁,不参与计数)容器(盒子)
+\cs_new:Nn \__suanpan_outer_bid_construct:
+ {
+ \dim_set:Nn \l_tmpa_dim
+ { \l__suanpan_bid_d_half_dim - \l__suanpan_bid_draw_h_half_dim }
+
+ \tikzset{bid/.style ={
+ 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,
+ },
+ draftline/.style = {
+ draw = outerfillcolor,
+ line~cap = round,
+ line~width = \l__suanpan_bid_draw_h_dim,
+ }
+ }
+
+ \group_begin:
+ \hcoffin_gset:Nn \l__suanpan_outer_bid_coffin
+ {
+ % 判断是否为草稿模式
+ \bool_if:NTF \l__suanpan_draft_bool
+ {
+ \begin{tikzpicture}
+ \draw[draftline]
+ ( -\l_tmpa_dim, 0) -- ( \l_tmpa_dim, 0 );
+ \end{tikzpicture}
+ }{
+ \begin{tikzpicture}
+ \shadedraw[bid]%
+ ( -\l__suanpan_bid_d_half_dim, \l__suanpan_bid_lower_dim)
+ rectangle
+ ( \l__suanpan_bid_d_half_dim, \l__suanpan_bid_upper_dim);
+ \end{tikzpicture}
+ }
+ }
+ \group_end:
+ }
+
+% 构建浮珠容器(盒子)
+% 浮珠指可以在算盘中任意布置的算珠
+% #1 绘制颜色
+% #2 填充颜色
+\cs_new:Npn \__suanpan_float_bid_construct:nn #1#2
+ {
+ \dim_set:Nn \l_tmpa_dim
+ { \l__suanpan_bid_d_half_dim - \l__suanpan_bid_draw_h_half_dim }
+
+ \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,
+ },
+ draftline/.style = {
+ line~cap = round,
+ line~width = \l__suanpan_bid_draw_h_dim,
+ }
+ }
+
+ \group_begin:
+ \hcoffin_gset:Nn \l__suanpan_float_bid_coffin
+ {
+ % 判断是否为草稿模式
+ \bool_if:NTF \l__suanpan_draft_bool
+ {
+ \begin{tikzpicture}
+ \draw[draw=#2, draftline]
+ ( -\l_tmpa_dim, 0) -- ( \l_tmpa_dim, 0 );
+ \end{tikzpicture}
+ }{
+ \begin{tikzpicture}
+ \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);
+ \end{tikzpicture}
+ }
+ }
+ \group_end:
+ }
+
+% 构建档杆容器(盒子)
+\cs_new:Nn \__suanpan_support_construct:
+ {
+ % TikZ绘图样式
+ \tikzset{%
+ rod/.style = {% 档杆
+ inner~color = rodfillcolor!30,
+ outer~color = rodfillcolor,
+ draw = roddrawcolor,
+ line~width = \l__suanpan_rod_linewidth_dim,
+ },
+ beam/.style = {% 横梁
+ bottom~color = framecolor!60,
+ top~color = framecolor!60,
+ middle~color = framecolor!5,
+ },
+ frame/.style = {% 上下梁
+ bottom~color = framecolor!95,
+ top~color = framecolor!95,
+ middle~color = framecolor!15,
+ },
+ rodline/.style = {% 档杆边线
+ draw = roddrawcolor,
+ line~width = \l__suanpan_rod_linewidth_dim,
+ },
+ frameinner/.style = {% 内边框线
+ draw = framecolor,
+ line~width = \l__suanpan_frame_inner_linewidth_dim,
+ },
+ frameouter/.style = {% 外边框线
+ draw = framecolor,
+ line~width = \l__suanpan_frame_outer_linewidth_dim,
+ },
+ }
+
+ \group_begin:
+ \hcoffin_gset:Nn \l__suanpan_support_coffin
+ {
+ % 判断是否为草稿模式
+ \bool_if:NTF \l__suanpan_draft_bool
+ {
+ \begin{tikzpicture}
+ % 绘制下杆
+ \draw[rodline]
+ ( -\l__suanpan_rod_d_half_dim, \l__suanpan_rod_lower_offset_dim )
+ rectangle
+ ( \l__suanpan_rod_d_half_dim, \l__suanpan_rod_lower_dim );
+ % 绘制上杆
+ \draw[rodline]
+ ( -\l__suanpan_rod_d_half_dim, \l__suanpan_rod_upper_offset_dim )
+ rectangle
+ ( \l__suanpan_rod_d_half_dim, \l__suanpan_rod_upper_dim );
+
+ % 绘制横梁
+ \draw[frameinner]
+ ( -\l__suanpan_support_d_half_dim, \l__suanpan_frame_b_half_dim )
+ --
+ ( \l__suanpan_support_d_half_dim, \l__suanpan_frame_b_half_dim );
+ \draw[frameinner]
+ ( -\l__suanpan_support_d_half_dim, -\l__suanpan_frame_b_half_dim )
+ --
+ ( \l__suanpan_support_d_half_dim, -\l__suanpan_frame_b_half_dim );
+
+ % 绘制上梁下边线
+ \draw[frameinner]
+ ( -\l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_upper_inner_offset_dim )
+ --
+ ( \l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_upper_inner_offset_dim );
+ % 绘制上梁上边线
+ \draw[frameouter]
+ ( -\l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_upper_outer_offset_dim -
+ \l__suanpan_frame_outer_linewidth_dim / 2)
+ --
+ ( \l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_upper_outer_offset_dim -
+ \l__suanpan_frame_outer_linewidth_dim / 2);
+
+ % 绘制下梁上边线
+ \draw[frameinner]
+ ( -\l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_lower_inner_offset_dim )
+ --
+ ( \l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_lower_inner_offset_dim );
+ % 绘制下梁下边线
+ \draw[frameouter]
+ ( -\l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_lower_outer_offset_dim +
+ \l__suanpan_frame_outer_linewidth_dim / 2 )
+ --
+ ( \l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_lower_outer_offset_dim +
+ \l__suanpan_frame_outer_linewidth_dim / 2 );
+
+ % 绘制计位点(黑色圆点)
+ \bool_if:NT \l__suanpan_support_unit_bool
+ {
+ \fill[%
+ fill=black,
+ ] (0pt, 0pt) circle
+ [radius = \l__suanpan_frame_unit_r_dim];
+ }
+ \end{tikzpicture}
+ }{
+ \begin{tikzpicture}
+ % 绘制下杆
+ \shadedraw[rod]
+ ( -\l__suanpan_rod_d_half_dim, \l__suanpan_rod_lower_offset_dim )
+ rectangle
+ ( \l__suanpan_rod_d_half_dim, \l__suanpan_rod_lower_dim );
+ % 绘制上杆
+ \shadedraw[rod]
+ ( -\l__suanpan_rod_d_half_dim, \l__suanpan_rod_upper_offset_dim )
+ rectangle
+ ( \l__suanpan_rod_d_half_dim, \l__suanpan_rod_upper_dim );
+
+ % 绘制横梁
+ \shade[beam]
+ ( -\l__suanpan_support_d_half_dim, -\l__suanpan_frame_b_half_dim )
+ rectangle
+ ( \l__suanpan_support_d_half_dim, \l__suanpan_frame_b_half_dim );
+ \draw[frameinner]
+ ( -\l__suanpan_support_d_half_dim, \l__suanpan_frame_b_half_dim )
+ --
+ ( \l__suanpan_support_d_half_dim, \l__suanpan_frame_b_half_dim );
+ \draw[frameinner]
+ ( -\l__suanpan_support_d_half_dim, -\l__suanpan_frame_b_half_dim )
+ --
+ ( \l__suanpan_support_d_half_dim, -\l__suanpan_frame_b_half_dim );
+
+ % 绘制上梁下边线
+ \draw[frameinner]
+ ( -\l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_upper_inner_offset_dim )
+ --
+ ( \l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_upper_inner_offset_dim );
+ % 绘制上梁上边线
+ \draw[frameouter]
+ ( -\l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_upper_outer_offset_dim -
+ \l__suanpan_frame_outer_linewidth_dim / 2)
+ --
+ ( \l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_upper_outer_offset_dim -
+ \l__suanpan_frame_outer_linewidth_dim / 2);
+
+ % 绘制下梁上边线
+ \draw[frameinner]
+ ( -\l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_lower_inner_offset_dim )
+ --
+ ( \l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_lower_inner_offset_dim );
+ % 绘制下梁下边线
+ \draw[frameouter]
+ ( -\l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_lower_outer_offset_dim +
+ \l__suanpan_frame_outer_linewidth_dim / 2 )
+ --
+ ( \l__suanpan_support_d_half_dim,
+ \l__suanpan_frame_lower_outer_offset_dim +
+ \l__suanpan_frame_outer_linewidth_dim / 2 );
+
+ % 绘制计位点(黑色圆点)
+ \bool_if:NT \l__suanpan_support_unit_bool
+ {
+ \shade[%
+ shading = ball,
+ ball~color = black,
+ shading~angle = \l__suanpan_bid_spot_angle_tl,
+ ] (0pt, 0pt) circle
+ [radius = \l__suanpan_frame_unit_r_dim];
+ }
+ \end{tikzpicture}
+ }
+ }
+ \group_end:
+ }
+
+% 绘制算珠
+% #1: 算珠位置编号
+% o o o o o o o | o o o
+% 1 2 3 4 5 6 7 8 9 10
+% | o
+% 11
+% 其中,11是悬珠位置
+% #2: 算珠类型
+% 0——外珠,1——内珠,2——浮珠
+\cs_new:Npn \__suanpan_bid_layout:nn #1#2
+ {
+ % 算珠垂直偏移
+ \int_compare:nNnTF { #1 } > { 7 }
+ {
+ \int_compare:nNnTF { #1 } < { 11 }
+ {
+ % 上珠
+ \dim_set:Nn \l_tmpb_dim{ \l__suanpan_bid_upper_offset_dim +
+ \l__suanpan_bid_h_dim * (#1 - 8) }
+ }{
+ % 悬珠
+ \dim_set:Nn \l_tmpb_dim{ \l__suanpan_frame_b_half_dim +
+ \l__suanpan_bid_h_dim * 2 }
+ }
+ }{
+ % 下珠
+ \dim_set:Nn \l_tmpb_dim{ \l__suanpan_bid_lower_offset_dim +
+ \l__suanpan_bid_h_dim * (#1 - 1) }
+ }
+
+ % 绘图算珠
+ \draw_scope_begin:
+ \draw_transform_yshift:n { \l_tmpb_dim }
+ \int_case:nnF { #2 }
+ {
+ { 0 } { \draw_coffin_use:Nnn \l__suanpan_outer_bid_coffin { hc } { vc } }
+ { 1 } { \draw_coffin_use:Nnn \l__suanpan_inner_bid_coffin { hc } { vc } }
+ { 2 } { \draw_coffin_use:Nnn \l__suanpan_float_bid_coffin { hc } { vc } }
+ }{ \msg_error:nnn { suanpan } { bid-type-error } {#2} }
+ \draw_scope_end:
+ }
+
+\msg_new:nnn { suanpan } { bid-type-error }
+ { #1~ bid~ type~ is~ unknown. }
+
+% 函数变体
+\cs_generate_variant:Nn \__suanpan_bid_layout:nn {xx}
+
+% 组装一个档位
+% #1: 档位编号(基于1,从左向右计数)
+% #2: 档位数字
+\cs_new:Npn \__suanpan_assemble_rod:nn #1#2
+ {
+ \tl_set:Nn \l_tmpb_tl { #2 }
+ % 绘制
+ \draw_scope_begin:
+ % 水平方向偏移
+ \draw_transform_xshift:n { \l__suanpan_support_d_dim * (#1 - 1) }
+
+ % 档杆
+ \draw_coffin_use:Nnnn \l__suanpan_support_coffin
+ { hc } { vc } { 0pt, -\l__suanpan_support_y_offset_dim }
+
+ % 算珠
+ \int_compare:nNnTF { #2 } = { 0 }
+ {
+ % 判断0值空档算珠是否需要绘制
+ \bool_if:NT \l__suanpan_empty_rod_bool
+ {
+ % 取得档位数字对应算珠位置及内珠/外珠编号
+ \prop_get:NnN \l__suanpan_rods_val_prop { #2 } \l_tmpa_tl
+ \clist_clear:N \l__suanpan_bids_pos_clist
+ \clist_set:NV \l__suanpan_bids_pos_clist \l_tmpa_tl
+
+ \clist_map_inline:Nn \l__suanpan_bids_pos_clist
+ {
+ \clist_set:Nn \l_tmpa_clist { ##1 }
+ \__suanpan_bid_layout:xx { \clist_item:Nn \l_tmpa_clist { 1 } }
+ { \clist_item:Nn \l_tmpa_clist { 2 } }
+ }
+ }
+ }{
+ % 不是0值空档算珠,需要绘制
+ % 取得档位数字对应算珠位置及内珠/外珠编号
+ \prop_get:NnN \l__suanpan_rods_val_prop { #2 } \l_tmpa_tl
+ \clist_clear:N \l__suanpan_bids_pos_clist
+ \clist_set:NV \l__suanpan_bids_pos_clist \l_tmpa_tl
+
+ \clist_map_inline:Nn \l__suanpan_bids_pos_clist
+ {
+ \clist_set:Nn \l_tmpa_clist { ##1 }
+ \__suanpan_bid_layout:xx { \clist_item:Nn \l_tmpa_clist { 1 } }
+ { \clist_item:Nn \l_tmpa_clist { 2 } }
+ }
+ }
+ \draw_scope_end:
+ }
+
+% 指定一个档位上浮珠的颜色
+% #1: 档位编号(从左向右)
+% #2: 算珠位置([1, 11])
+\cs_new:Npn \__suanpan_float_bid:nn #1#2
+ {
+ \draw_scope_begin:
+ % 水平偏移
+ \draw_transform_xshift:n { \l__suanpan_support_d_dim * ( #1 - 1 ) }
+
+ % 覆盖绘制
+ \__suanpan_bid_layout:xx { #2 }{ 2 }
+ \draw_scope_end:
+ }
+
+% 为一个档位添加计数标记
+% #1: 档位编号(基于1,从左向右)
+% #2: 标记内容
+\cs_new:Npn \__suanpan_rod_mark:nn #1#2
+ {
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \begin{tikzpicture}
+ \node at ( 0, 0 ) [font=\l__suanpan_mark_font_tl] { #2 };
+ \end{tikzpicture}
+ }
+
+ \draw_scope_begin:
+ % 水平偏移
+ \draw_transform_xshift:n { \l__suanpan_support_d_dim * ( #1 - 1 ) }
+ \draw_coffin_use:Nnn \l_tmpa_coffin { hc } { vc }
+ \draw_scope_end:
+ }
+
+% 绘制边框
+% #1 第一档编号(左)
+% #2 最后一档编号(右)
+\cs_new:Npn \__suanpan_frame_layout:nn #1#2
+ {
+ % TikZ绘制样式
+ \tikzset{%
+ hframe/.style = {% 上下梁
+ bottom~color = framecolor!95,
+ top~color = framecolor!95,
+ middle~color = framecolor!15,
+ draw = framecolor,
+ line~width = \l__suanpan_frame_inner_linewidth_dim,
+ },
+ vframe/.style = {% 左右梁
+ left~color = framecolor!95,
+ right~color = framecolor!95,
+ middle~color = framecolor!15,
+ draw = framecolor,
+ line~width = \l__suanpan_frame_inner_linewidth_dim,
+ },
+ mframe/.style = {% 横梁
+ top~color = framecolor!60,
+ bottom~color = framecolor!60,
+ middle~color = framecolor!5,
+ line~width = \l__suanpan_frame_inner_linewidth_dim,
+ },
+ frameline/.style = {% 梁连线
+ draw = framecolor,
+ line~width = \l__suanpan_frame_inner_linewidth_dim,
+ },
+ framefill/.style = {% 外框填充
+ draw = framecolor,
+ fill = framecolor,
+ line~width = \l__suanpan_frame_inner_linewidth_dim,
+ },
+ arcline/.style = {% 转角线
+ draw = framecolor,
+ line~width = \l__suanpan_frame_inner_linewidth_dim,
+ rounded~corners = \l__suanpan_frame_inner_linewidth_dim / 2,
+ },
+ }
+
+ % 总宽度
+ \dim_set:Nn \l_tmpa_dim {
+ \fp_to_dim:n {
+ \fp_eval:n { \l__suanpan_support_d_dim * ( #2 - #1 + 1.0) }
+ }
+ }
+ % 减半档宽度
+ \dim_set:Nn \l_tmpb_dim {
+ \fp_to_dim:n {
+ \fp_eval:n { \l__suanpan_support_d_dim * ( #2 - #1 ) +
+ \l__suanpan_support_d_half_dim}
+ }
+ }
+
+ \group_begin:
+ % 上下边框基础容器(盒子)
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ % 判断是否为草稿模式
+ \bool_if:NTF \l__suanpan_draft_bool
+ {
+ \begin{tikzpicture}
+ \draw[framefill]
+ ( 0pt, 0pt ) --
+ ++( \l_tmpa_dim, 0) --
+ ++( \l__suanpan_frame_b_dim, \l__suanpan_frame_b_dim ) --
+ ++( -\l__suanpan_frame_b_dim, 0 ) --
+ ++( -\l_tmpa_dim, 0 ) --
+ ++( -\l__suanpan_frame_b_dim, 0 ) --
+ cycle;
+ \end{tikzpicture}
+ }{
+ \begin{tikzpicture}
+ \shadedraw[hframe]
+ ( 0pt, 0pt ) --
+ ++( \l_tmpa_dim, 0) --
+ ++( \l__suanpan_frame_b_dim, \l__suanpan_frame_b_dim ) --
+ ++( -\l__suanpan_frame_b_dim, 0 ) --
+ ++( -\l_tmpa_dim, 0 ) --
+ ++( -\l__suanpan_frame_b_dim, 0 ) --
+ cycle;
+ \end{tikzpicture}
+ }
+ }
+
+ % 左右边框基础容器(盒子)
+ \hcoffin_set:Nn \l_tmpb_coffin
+ {
+ % 判断是否为草稿模式
+ \bool_if:NTF \l__suanpan_draft_bool
+ {
+ \begin{tikzpicture}
+ \draw[framefill]
+ ( 0, 0 ) --
+ ++( 0, \l__suanpan_frame_inner_h_dim) --
+ ++( -\l__suanpan_frame_b_dim, \l__suanpan_frame_b_dim ) --
+ ++( 0, -\l__suanpan_frame_outer_h_dim ) --
+ cycle;
+ \draw[arcline]
+ ( 0, 0 )
+ ++( 0, \l__suanpan_frame_inner_h_dim )
+ ++( 0, \l__suanpan_frame_b_dim )
+ ++( 0, \l__suanpan_frame_inner_linewidth_dim * 0.9 )
+ ++( -\l__suanpan_frame_b_half_dim, 0 ) --
+ ++( -\l__suanpan_frame_b_half_dim, 0 ) --
+ ++( -\l__suanpan_frame_inner_linewidth_dim * 0.9, 0 ) --
+ ++( 0, -\l__suanpan_frame_b_half_dim );
+ \draw[arcline]
+ ( 0, 0 )
+ ++( 0, -\l__suanpan_frame_b_dim )
+ ++( 0, -\l__suanpan_frame_inner_linewidth_dim * 0.9 )
+ ++( -\l__suanpan_frame_b_half_dim, 0 ) --
+ ++( -\l__suanpan_frame_b_half_dim, 0 ) --
+ ++( -\l__suanpan_frame_inner_linewidth_dim * 0.9, 0 ) --
+ ++( 0, \l__suanpan_frame_b_half_dim );
+ \end{tikzpicture}
+ }{
+ \begin{tikzpicture}
+ \shadedraw[vframe]
+ ( 0, 0 ) --
+ ++( 0, \l__suanpan_frame_inner_h_dim) --
+ ++( -\l__suanpan_frame_b_dim, \l__suanpan_frame_b_dim ) --
+ ++( 0, -\l__suanpan_frame_outer_h_dim ) --
+ cycle;
+ \draw[arcline]
+ ( 0, 0 )
+ ++( 0, \l__suanpan_frame_inner_h_dim )
+ ++( 0, \l__suanpan_frame_b_dim )
+ ++( 0, \l__suanpan_frame_inner_linewidth_dim * 0.9 )
+ ++( -\l__suanpan_frame_b_half_dim, 0 ) --
+ ++( -\l__suanpan_frame_b_half_dim, 0 ) --
+ ++( -\l__suanpan_frame_inner_linewidth_dim * 0.9, 0 ) --
+ ++( 0, -\l__suanpan_frame_b_half_dim );
+ \draw[arcline]
+ ( 0, 0 )
+ ++( 0, -\l__suanpan_frame_b_dim )
+ ++( 0, -\l__suanpan_frame_inner_linewidth_dim * 0.9 )
+ ++( -\l__suanpan_frame_b_half_dim, 0 ) --
+ ++( -\l__suanpan_frame_b_half_dim, 0 ) --
+ ++( -\l__suanpan_frame_inner_linewidth_dim * 0.9, 0 ) --
+ ++( 0, \l__suanpan_frame_b_half_dim );
+ \end{tikzpicture}
+ }
+ }
+
+ % 横梁接头基础容器(盒子)
+ \hcoffin_set:Nn \l_tmpc_coffin
+ {
+ % 判断是否为草稿模式
+ \bool_if:NTF \l__suanpan_draft_bool
+ {
+ \begin{tikzpicture}
+ \fill[fill=white,
+ line~width=\l__suanpan_frame_inner_linewidth_dim]
+ ( 0pt, 0pt ) --++( 0, \l__suanpan_frame_b_dim) --
+ ++(-\l__suanpan_frame_inner_linewidth_dim, 0) --
+ ++(-\l__suanpan_frame_b_dim / 3, -\l__suanpan_frame_b_dim / 2) --
+ ++( \l__suanpan_frame_b_dim / 3, -\l__suanpan_frame_b_dim / 2) --
+ cycle;
+ \draw[frameline]%
+ ( 0, \l__suanpan_frame_b_dim) --
+ ++(-\l__suanpan_frame_inner_linewidth_dim, 0) --
+ ++(-\l__suanpan_frame_b_dim / 3, -\l__suanpan_frame_b_dim / 2) --
+ ++( \l__suanpan_frame_b_dim / 3, -\l__suanpan_frame_b_dim / 2) --
+ ++( \l__suanpan_frame_inner_linewidth_dim, 0);
+ \end{tikzpicture}
+ }{
+ \begin{tikzpicture}
+ \shade[mframe]
+ ( 0pt, 0pt ) --++( 0, \l__suanpan_frame_b_dim) --
+ ++(-\l__suanpan_frame_inner_linewidth_dim, 0) --
+ ++(-\l__suanpan_frame_b_dim / 3, -\l__suanpan_frame_b_dim / 2) --
+ ++( \l__suanpan_frame_b_dim / 3, -\l__suanpan_frame_b_dim / 2) --
+ cycle;
+ \draw[frameline]%
+ ( 0, \l__suanpan_frame_b_dim) --
+ ++(-\l__suanpan_frame_inner_linewidth_dim, 0) --
+ ++(-\l__suanpan_frame_b_dim / 3, -\l__suanpan_frame_b_dim / 2) --
+ ++( \l__suanpan_frame_b_dim / 3, -\l__suanpan_frame_b_dim / 2) --
+ ++( \l__suanpan_frame_inner_linewidth_dim, 0);
+ \end{tikzpicture}
+ }
+ }
+
+ % 布置上边框
+ \draw_scope_begin:
+ \draw_transform_xshift:n { -\l__suanpan_support_d_half_dim -
+ \l__suanpan_frame_inner_linewidth_dim / 2 }
+ \draw_transform_yshift:n { \l__suanpan_frame_inner_upper_dim -
+ \l__suanpan_frame_inner_linewidth_dim }
+ \draw_coffin_use:Nnnn \l_tmpa_coffin { l } { b }
+ { -\l__suanpan_frame_b_dim, 0pt }
+ \draw_scope_end:
+
+ % 布置下边框
+ \draw_scope_begin:
+ \coffin_rotate:Nn \l_tmpa_coffin { 180 }
+ \draw_transform_xshift:n { \l_tmpa_dim - \l__suanpan_support_d_half_dim +
+ \l__suanpan_frame_inner_linewidth_dim / 2 }
+
+ \draw_transform_yshift:n { \l__suanpan_frame_inner_lower_dim +
+ \l__suanpan_frame_inner_linewidth_dim }
+ \draw_coffin_use:Nnnn \l_tmpa_coffin { l } { b }
+ { \l__suanpan_frame_b_dim, 0pt }
+ \draw_scope_end:
+
+ % 布置左边框
+ \draw_scope_begin:
+ \draw_transform_xshift:n { -\l__suanpan_support_d_half_dim -
+ \l__suanpan_frame_b_dim -
+ \l__suanpan_frame_inner_linewidth_dim * 1.5 }
+ \draw_transform_yshift:n { \l__suanpan_frame_inner_lower_dim -
+ \l__suanpan_frame_inner_linewidth_dim }
+
+ \draw_coffin_use:Nnnn \l_tmpb_coffin { l } { b }
+ { 0pt, -\l__suanpan_frame_b_dim }
+ \draw_scope_end:
+
+ % 布置右边框
+ \draw_scope_begin:
+ \coffin_rotate:Nn \l_tmpb_coffin { 180 }
+ \draw_transform_xshift:n { \l_tmpb_dim +
+ \l__suanpan_frame_b_dim +
+ \l__suanpan_frame_inner_linewidth_dim * 1.5}% -
+ \draw_transform_yshift:n { \l__suanpan_frame_inner_upper_dim +
+ \l__suanpan_frame_inner_linewidth_dim }
+ \draw_coffin_use:Nnnn \l_tmpb_coffin { l } { b }
+ { 0pt, \l__suanpan_frame_b_dim }
+ \draw_scope_end:
+
+ % 布置左横梁接头
+ \draw_scope_begin:
+ \draw_transform_xshift:n { -\l__suanpan_support_d_half_dim -
+ \l__suanpan_frame_b_dim / 3 -
+ \l__suanpan_frame_inner_linewidth_dim / 2 }
+ \draw_transform_yshift:n { -\l__suanpan_frame_b_dim / 2 -
+ \l__suanpan_frame_inner_linewidth_dim / 2 }
+ \draw_coffin_use:Nnnn \l_tmpc_coffin { l } { b } { 0pt, 0pt }
+ \draw_scope_end:
+
+ % 布置右横梁接头
+ \draw_scope_begin:
+ \coffin_rotate:Nn \l_tmpc_coffin { 180 }
+ \draw_transform_xshift:n { \l_tmpb_dim +
+ \l__suanpan_frame_b_dim / 3 +
+ \l__suanpan_frame_inner_linewidth_dim / 2 }
+ \draw_transform_yshift:n { \l__suanpan_frame_b_dim / 2 +
+ \l__suanpan_frame_inner_linewidth_dim / 2 }
+ \draw_coffin_use:Nnnn \l_tmpc_coffin { l } { b } { 0pt, 0pt }
+ \draw_scope_end:
+ \group_end:
+ }
+
+% 算盘排版用户接口
+% 算盘排版环境
+% #1 suanpan环境选项
+% #2 suanpan环境内容(!b参数)
+\NewDocumentEnvironment{ suanpan }{ o !b }
+ {
+ \group_begin:
+ % 设置选项
+ \IfNoValueF{ #1 }
+ {
+ \keys_set:nn { suanpan }{ #1 }
+ }
+
+ % 构造基础容器(盒子)
+ \__suanpan_inner_bid_construct:
+ \__suanpan_outer_bid_construct:
+ \__suanpan_support_construct:
+
+ % 删除#2(!b)参数取得的环境内容中的空白
+ \str_set:Nn \l_tmpa_str { #2 }
+ \str_remove_all:Nn \l_tmpa_str {~}
+ % 将str还原为tl
+ \tl_set_rescan:Nno \l_tmpa_tl {}{ \l_tmpa_str }
+
+ % 在容器(盒子)中用#2(!b)参数取得的按环境内容实现绘制
+ \hcoffin_set:Nn \l_tmpa_coffin
+ {
+ \draw_begin:
+ \l_tmpa_tl
+ \draw_end:
+ }
+
+ \hcoffin_set:Nn \l_tmpb_coffin
+ {
+ % 将原图缩小50%
+ \coffin_scale:Nnn \l_tmpa_coffin { 0.50 } { 0.50 }
+ \coffin_typeset:Nnnnn \l_tmpa_coffin{ l }{ b }{ 0pt }{ 0pt }
+ }
+ }{
+ % 按用户指定比例缩放
+ \coffin_scale:Nnn \l_tmpb_coffin
+ { \l__suanpan_scale_tl } { \l__suanpan_scale_tl }
+
+ % 设置基字符盒子(排版深度)
+ \hbox_set:Nn \l_tmpa_box { x }
+ % 盒子深度
+ \dim_set:Nn \l_tmpa_dim { \box_dp:N \l_tmpa_box}
+
+ % 输出算盘容器(盒子)
+ \coffin_typeset:Nnnnn \l_tmpb_coffin{ l }{ b }{ 0pt }{ -\l_tmpa_dim }
+ \int_zero:N \l__suanpan_rod_max_int
+ \group_end:
+ }
+
+% 排版算盘一个档位,包括档杆和算珠
+% #1 星号命令,绘制计位点(黑色圆点)
+% #2 档位编号(基于1,从左向右计数)
+% #3 本档数字(0-20,10-15需用到顶珠和底珠,16-20需要用到悬珠)
+\NewDocumentCommand{ \rod }{ s m m }
+ {
+ % 记录原状态变量
+ \bool_set_eq:NN \l_tmpa_bool \l__suanpan_support_unit_bool
+ % 星号命令,用于在横梁绘制计位点
+ \IfBooleanTF{#1}
+ {
+ \bool_set_true:N \l__suanpan_support_unit_bool
+ }{
+ \bool_set_false:N \l__suanpan_support_unit_bool
+ }
+
+ % 如状态发生改变,则重新绘制档杆单元
+ \bool_if:NTF \l_tmpa_bool
+ {
+ \bool_if:NF \l__suanpan_support_unit_bool
+ {
+ \__suanpan_support_construct:
+ }
+ }{
+ \bool_if:NT \l__suanpan_support_unit_bool
+ {
+ \__suanpan_support_construct:
+ }
+ }
+
+ % 组装一个档位
+ \__suanpan_assemble_rod:nn { #2 }{ #3 }
+
+ % 统计档位总数
+ \int_set:Nn \l__suanpan_rod_max_int
+ { \int_max:nn { \l__suanpan_rod_max_int }{ #2 } }
+ }
+
+% 排版算盘多个档位,包括档杆和算珠
+% #1 本档数字(0-20,10-15需用到顶珠和底珠,16-20需要用到悬珠)
+% 各数字之间需要用逗号分隔。
+\NewDocumentCommand{ \rods }{ m }
+ {
+ % 构造档位数字列表
+ \clist_set:Nn \l_tmpa_clist { #1 }
+ % 初始化档位计数器
+ \int_set:Nn \l_tmpa_int { 0 }
+
+ \clist_map_inline:Nn \l_tmpa_clist
+ {
+ % 档位计数器自增1
+ \int_incr:N \l_tmpa_int
+
+ % 组装当前档位
+ \__suanpan_assemble_rod:nn {\l_tmpa_int }{ ##1 }
+ }
+
+ % 记录档位总数
+ \int_set:Nn \l__suanpan_rod_max_int
+ { \int_max:nn { \l__suanpan_rod_max_int }{ \l_tmpa_int } }
+ }
+
+% 指定某档上某个算珠的颜色
+% #1 档位(基于1,从左向右计数)
+% #2 算珠位置列表(1--11,11为悬珠位置)
+% #3 算珠填充颜色
+% #4 算珠绘制颜色(默认为内珠绘制颜色)
+\NewDocumentCommand{ \bid }{ m m m O{innerdrawcolor} }
+ {
+ % 构造浮珠
+ \__suanpan_float_bid_construct:nn { #4 }{ #3 }
+
+ % 构造算珠位置列表
+ \clist_set:Nn \l_tmpa_clist { #2 }
+
+ \clist_map_inline:Nn \l_tmpa_clist
+ {
+ % 绘制浮珠
+ \__suanpan_float_bid:nn { #1 }{ ##1 }
+ }
+ }
+
+% 指定某档上所有内珠或外珠的颜色
+% #1 星号命令,选择内珠或外珠
+% #2 档位(基于1,从左向右计数)
+% #3 该档数字
+% #4 算珠填充颜色(绘图颜色采用原内/外珠绘制颜色)
+\NewDocumentCommand{ \bids }{ s m m m }
+ {
+ % 取得档位数字对应算珠位置及内珠/外珠编号
+ \prop_get:NnN \l__suanpan_rods_val_prop { #3 } \l_tmpa_tl
+ \clist_clear:N \l__suanpan_bids_pos_clist
+ \clist_set:NV \l__suanpan_bids_pos_clist \l_tmpa_tl
+
+ % 星号命令,用于选择外珠着色
+ \IfBooleanTF{#1}
+ {
+ % 构造浮珠
+ \__suanpan_float_bid_construct:nn { outerdrawcolor }{ #4 }
+
+ \clist_map_inline:Nn \l__suanpan_bids_pos_clist
+ {
+ \clist_set:Nn \l_tmpa_clist { ##1 }
+ % 选择外珠
+ \int_compare:nNnT { \clist_item:Nn \l_tmpa_clist { 2 } } = { 0 }
+ {
+ \__suanpan_float_bid:nn { #2 }{ \clist_item:Nn \l_tmpa_clist { 1 } }
+ }
+ }
+ }{
+ % 构造浮珠
+ \__suanpan_float_bid_construct:nn { innerdrawcolor }{ #4 }
+
+ \clist_map_inline:Nn \l__suanpan_bids_pos_clist
+ {
+ \clist_set:Nn \l_tmpa_clist { ##1 }
+ % 选择内珠
+ \int_compare:nNnT { \clist_item:Nn \l_tmpa_clist { 2 } } = { 1 }
+ {
+ \__suanpan_float_bid:nn { #2 }{ \clist_item:Nn \l_tmpa_clist { 1 } }
+ }
+ }
+ }
+ }
+
+% 左右边框
+\NewDocumentCommand{ \mkframe }{ }
+ {
+ \__suanpan_frame_layout:nn { 1 }{ \l__suanpan_rod_max_int }
+ }
+
+% 为各档添加计位标记
+% #1 起始档位(基于1,从左向右计数)
+% #2 标记列表
+\NewDocumentCommand{ \rodmark }{ O{1} m }
+ {
+ % 标记列表
+ \clist_set:Nn \l_tmpa_clist { #2 }
+
+ % 计数器
+ \int_set:Nn \l_tmpa_int { #1 }
+
+ % 遍历列表
+ \clist_map_inline:Nn \l_tmpa_clist
+ {
+ % 输出标记
+ \__suanpan_rod_mark:nn { \l_tmpa_int }{ ##1 }
+
+ % 调整计数器
+ \int_incr:N \l_tmpa_int
+
+ % 超出最大档位
+ \int_compare:nNnT { \l_tmpa_int } > { \l__suanpan_rod_max_int }
+ {
+ \clist_map_break:
+ }
+ }
+ }
+
+% 选项设置用户接口
+\NewDocumentCommand{ \suanpanset } { m }
+ {
+ \IfNoValueF { #1}
+ {
+ \keys_set:nn { suanpan } { #1 }
+ }
+ }
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/subeqn/subeqn.sty b/Master/texmf-dist/tex/latex/subeqn/subeqn.sty
index 7d0dcba5dcd..fab4e5ddebf 100644
--- a/Master/texmf-dist/tex/latex/subeqn/subeqn.sty
+++ b/Master/texmf-dist/tex/latex/subeqn/subeqn.sty
@@ -5,19 +5,20 @@
%% The original source files were:
%%
%% subeqn.dtx (with options: `package')
+%% This is a generated file.
%%
-%% Copyright (C) 1999-2004 Johannes Braams. All rights reserved.
+%% Copyright (C) 1999-2024 Johannes Braams. All rights reserved.
%%
%% This file was generated from file(s) of the subeqn package.
%% -----------------------------------------------------------
%%
%% It 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.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.
+%% and version 1.3с or later is part of all distributions of LaTeX
+%% version 2008 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
@@ -28,19 +29,14 @@
%% without such generated files.
%%
%% The list of all files belonging to the subeqn package is
-%% given in the file `manifest.txt.
+%% given in the file `MANIFEST'.
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
-%% File: `subeqn.dtx'
-%% Copyright (C) 1999-2004
-%% Donald Arsenau (asnd at reg.triumf.ca),
-%% Johannes Braams (TeXniek at braams.cistron.nl)
-%%
\NeedsTeXFormat{LaTeX2e}[1998/06/01]
\ProvidesPackage{subeqn}
- [2004/04/15 v2.0b subnumbering of equations]
+ [2024/07/21 v2.0c subnumbering of equations]
\newenvironment{subequations}{%
\refstepcounter{equation}%
\mathchardef\c@mainequation\c@equation
diff --git a/Master/texmf-dist/tex/latex/subeqnarray/subeqnarray.sty b/Master/texmf-dist/tex/latex/subeqnarray/subeqnarray.sty
index 1223f1bb376..1703304b514 100644
--- a/Master/texmf-dist/tex/latex/subeqnarray/subeqnarray.sty
+++ b/Master/texmf-dist/tex/latex/subeqnarray/subeqnarray.sty
@@ -6,18 +6,18 @@
%%
%% subeqnarray.dtx (with options: `package')
%%
-%% Copyright (C) 1999-2004 Johannes Braams. All rights reserved.
+%% Copyright (C) 1999-2024 Johannes Braams. All rights reserved.
%%
%% This file was generated from file(s) of the subeqnarray package.
%% ----------------------------------------------------------------
%%
%% It 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 2003/12/01 or later.
+%% 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".
%%
@@ -33,18 +33,13 @@
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
-%% Copyright (C) 1988--2004 by Johannes Braams,
-%% all rights resserved
%%
%% Error reports please to: J. Braams
%% TeXniek
-%% Kooienswater 62
-%% 2715 AJ Zoetermeer
-%% The Netherlands
-%% Email: texniek at braams.cistron.nl
+%% Email: texniek at texniek.nl
\NeedsTeXFormat{LaTeX2e}[1998/06/01]
\ProvidesPackage{subeqnarray}
- [2004/04/15 v2.1c subeqnarray package]
+ [2024/07/20 v2.1e subeqnarray package]
\newcounter{subequation}[equation]
\def\thesubequation{\theequation\alph{subequation}}
\DeclareOption{leqno}{%
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/supertabular/supertabular.sty b/Master/texmf-dist/tex/latex/supertabular/supertabular.sty
index 03fcf9cc6ca..05a7876b1ec 100644
--- a/Master/texmf-dist/tex/latex/supertabular/supertabular.sty
+++ b/Master/texmf-dist/tex/latex/supertabular/supertabular.sty
@@ -35,19 +35,21 @@
%% Sourcefile `supertabular.dtx'.
%%
%% Copyright (C) 1988 by Theo Jurriens
-%% Copyright (C) 1990-2020 by Johannes Braams texniek at braams.xs4all.nl
-%% Kersengaarde 33
-%% 2723 BP Zoetermeer NL
+%% Copyright (C) 1990-2024 by Johannes Braams texniek at texniek.nl
+%% The Netherlands
%% all rights reserved.
%%
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{supertabular}
- [2020/02/02 v4.1g the supertabular environment]
+ [2024/07/20 v4.2c the supertabular environment]
\newcount\c@tracingst
\DeclareOption{errorshow}{\c@tracingst\z@}
\DeclareOption{pageshow}{\c@tracingst\thr@@}
\DeclareOption{debugshow}{\c@tracingst5\relax}
+\DeclareOption{calculate}{\def\ST@calculate@rowht{\ST@compute@rowht}}
+\DeclareOption{estimate}{\def\ST@calculate@rowht{\ST@estimate@rowht}}
+\ExecuteOptions{errorshow,estimate}
\ProcessOptions
\newif\if@topcaption \@topcaptiontrue
\def\topcaption{\@topcaptiontrue\tablecaption}
@@ -76,41 +78,53 @@
\if@topcaption \vskip 10\p@ \gdef\ST@captionroom{20\p@}\fi
\endgroup}
\newcommand\tablehead[1]{%
- \gdef\@tablehead{%
- \noalign{%
- \global\let\@savcr=\\
- \global\let\\=\org@tabularcr}%
- #1%
- \noalign{\global\let\\=\@savcr}}}
+ \def\@ST@arg{#1}%
+ \ifx\@ST@arg\@empty\gdef\@tablehead{}\else
+ \gdef\@tablehead{%
+ \noalign{%
+ \global\let\@savcr=\\
+ \global\let\\=\org@tabularcr}%
+ #1%
+ \noalign{\global\let\\=\@savcr}}%
+ \fi}
\tablehead{}
\newcommand\tablefirsthead[1]{%
- \gdef\@table@first@head{%
- \noalign{%
- \global\let\@savcr=\\
- \global\let\\=\org@tabularcr}%
- #1%
- \noalign{%
- \global\let\\=\@savcr
- \global\let\@table@first@head\undefined
- }}}
+ \def\@ST@arg{#1}%
+ \ifx\@ST@arg\@empty\gdef\@table@first@head{}\else
+ \gdef\@table@first@head{%
+ \noalign{%
+ \global\let\@savcr=\\
+ \global\let\\=\org@tabularcr}%
+ #1%
+ \noalign{%
+ \global\let\\=\@savcr
+ \global\let\@table@first@head\undefined
+ }}%
+ \fi}
\newcommand\tabletail[1]{%
- \gdef\@tabletail{%
- \noalign{%
- \global\let\@savcr=\\
- \global\let\\=\org@tabularcr}%
- #1%
- \noalign{\global\let\\=\@savcr}}}
+ \def\@ST@arg{#1}%
+ \ifx\@ST@arg\@empty\gdef\@tabletail{}\else
+ \gdef\@tabletail{%
+ \noalign{%
+ \global\let\@savcr=\\
+ \global\let\\=\org@tabularcr}%
+ #1%
+ \noalign{\global\let\\=\@savcr}}%
+ \fi}
\tabletail{}
\newcommand\tablelasttail[1]{%
- \gdef\@table@last@tail{%
- \noalign{%
- \global\let\@savcr=\\
- \global\let\\=\org@tabularcr}%
- #1%
- \noalign{%
- \global\let\\=\@savcr
- \global\let\@table@last@tail\undefined
- }}}
+ \def\@ST@arg{#1}%
+ \ifx\@ST@arg\@empty\gdef\@table@last@tail{}\else
+ \gdef\@table@last@tail{%
+ \noalign{%
+ \global\let\@savcr=\\
+ \global\let\\=\org@tabularcr}%
+ #1%
+ \noalign{%
+ \global\let\\=\@savcr
+ \global\let\@table@last@tail\undefined
+ }}%
+ \fi}
\newcommand\sttraceon{\c@tracingst5\relax}
\newcommand\sttraceoff{\c@tracingst\z@}
\newcommand\ST@trace[2]{%
@@ -142,7 +156,7 @@
\newdimen\ST@tailht
\newdimen\ST@pagesofar
\newdimen\ST@pboxht
-\newdimen\ST@lineht
+\newdimen\ST@rowht
\newdimen\ST@prevht
\newdimen\ST@toadd
\newdimen\ST@dimen
@@ -191,22 +205,28 @@
\fi
\ST@dimen=\z@
\unvbox\ST@pbox\egroup\hfil}
-\def\ST@compute@lineht{%
- \ST@lineht=\ht\strutbox
+\def\ST@compute@rowht{%
+ \setbox\@tempboxa=\vbox{\@arrayparboxrestore $5^5_5$}
+ \ifnum\ht\@tempboxa>\ht\strutbox
+ \ST@rowht=\ht\@tempboxa
+ \else
+ \ST@rowht=\ht\strutbox
+ \fi
\ifx\extrarowheight\undefined\else
- \advance \ST@lineht by \extrarowheight
+ \advance \ST@rowht by \extrarowheight
+ \fi
+ \ifnum\dp\@tempboxa>\dp\strutbox
+ \advance\ST@rowht \dp\@tempboxa
+ \else
+ \advance\ST@rowht \dp\strutbox
\fi
- \ST@lineht = \arraystretch\ST@lineht
- \advance\ST@lineht \arraystretch\dp\strutbox
- \ST@trace\tw@{Normal Line height: \the\ST@lineht}%
+ \ST@rowht = \arraystretch\ST@rowht
+ \ST@trace\tw@{Normal Row height: \the\ST@rowht}%
}
-\def\estimate@lineht{%
- \ST@lineht=\arraystretch \baslineskp
- \global\advance\ST@lineht by 1\p@
- \ST@stretchht\ST@lineht\advance\ST@stretchht-\baslineskp
- \ifdim\ST@stretchht<\z@\ST@stretchht\z@\fi
- \ST@trace\tw@{Average line height: \the\ST@lineht}%
- \ST@trace\tw@{Stretched line height: \the\ST@stretchht}%
+\def\ST@estimate@rowht{%
+ \ST@rowht=\arraystretch \baslineskp
+ \global\advance\ST@rowht by 1\p@
+ \ST@trace\tw@{Average Row height: \the\ST@rowht}%
}
\def\@calfirstpageht{%
\ST@trace\tw@{Calculating height of tabular on first page}%
@@ -273,11 +293,11 @@
\@tabletail\endtabular}
\ST@tailht=\ht\@tempboxa\advance\ST@tailht\dp\@tempboxa
\fi
- \advance\ST@tailht by \ST@lineht
+ \advance\ST@tailht by \ST@rowht
\ST@trace\tw@{Height of tail: \the\ST@tailht}%
\ST@trace\tw@{Maximum height of tabular: \the\ST@pageleft}%
\@tempdima\ST@headht
- \advance\@tempdima\ST@lineht
+ \advance\@tempdima\ST@rowht
\advance\@tempdima\ST@tailht
\ST@trace\tw@{Minimum height of tabular: \the\@tempdima}%
\ifnum\@tempdima>\ST@pageleft
@@ -325,7 +345,7 @@
\let\@@tablehead=\@table@first@head
\fi
\let\ST@skippage\ST@skipfirstpart
- \ST@compute@lineht
+ \ST@calculate@rowht
\@calfirstpageht
\noindent
}
@@ -453,9 +473,9 @@
\csname org@tabular*\endcsname}
\def\ST@cr{%
\noalign{%
- \ifnum\ST@pboxht<\ST@lineht
- \global\advance\ST@pageleft -\ST@lineht
- \global\ST@prevht\ST@lineht
+ \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
@@ -489,7 +509,7 @@
\ST@trace\tw@{Tabular too high, moving to next page}%
\global\advance\ST@pageleft\pagetotal
\global\ST@pagesofar\z@
- \newpage
+ \penalty -\@M
\global\let\ST@skippage\ST@newpage
}}
\def\ST@newpage{%
diff --git a/Master/texmf-dist/tex/latex/synthslant/synthslant.sty b/Master/texmf-dist/tex/latex/synthslant/synthslant.sty
index 0cd75e5e330..42c27c2a428 100644
--- a/Master/texmf-dist/tex/latex/synthslant/synthslant.sty
+++ b/Master/texmf-dist/tex/latex/synthslant/synthslant.sty
@@ -11,11 +11,11 @@
%% Copyright (C) 2024 by Ch. L. Spiel
%%
%% 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.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
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
@@ -29,8 +29,9 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{synthslant}
- [2024/05/07 v0.1 Synthetically Slant glyphs]
+ [2024/07/08 v0.1a Synthetically Slant glyphs]
+\RequirePackage{etoolbox}
\RequirePackage{iftex}
\RequirePackage{xkeyval}
@@ -60,12 +61,16 @@
\ExplSyntaxOn
\fp_compare:nNnTF {\synthslant} < {.0}
- {\PackageError{synthslant}{\string\synthslant\space <\space 0}
- {Pass\space a\space value\space that\space is\space non-negative.}}
+ {\PackageError{synthslant}
+ {\string\synthslant\space <\space 0}
+ {Pass\space a\space value\space that\space
+ is\space nonnegative.}}
{}
\fp_compare:nNnTF {\synthnegslant} > {.0}
- {\PackageError{synthslant}{\string\synthnegslant\space >\space 0}
- {Pass\space a\space value\space that\space is\space non-positive.}}
+ {\PackageError{synthslant}
+ {\string\synthnegslant\space >\space 0}
+ {Pass\space a\space value\space that\space
+ is\space nonpositive.}}
{}
\ExplSyntaxOff
@@ -136,13 +141,15 @@
\box_set_dp:Nn \l_tmpa_box {\z@}
\fp_compare:nNnTF {#1} >= {.0}
{
- \box_set_wd:Nn \l_tmpa_box {\l_tmpa_dim - #1\l_tmpb_dim}
+ \box_set_wd:Nn \l_tmpa_box
+ {\l_tmpa_dim - #1\l_tmpb_dim}
}
{
\draw_suspend_begin:
\kern#1\l_tmpb_dim
\draw_suspend_end:
- \box_set_wd:Nn \l_tmpa_box {\l_tmpa_dim + #1\l_tmpb_dim}
+ \box_set_wd:Nn \l_tmpa_box
+ {\l_tmpa_dim + #1\l_tmpb_dim}
}
\draw_box_use:N \l_tmpa_box
\draw_end:
@@ -181,7 +188,8 @@
\ExplSyntaxOn
\newcommand*{\synthslantbox@fontspect@shear@box}[2]{
\begingroup
- \expandafter\fontspec[FakeSlant = #1]{\l_fontspec_family_tl}
+ \expandafter
+ \fontspec[FakeSlant=#1]{\l_fontspec_family_tl}
#2
\endgroup
}
@@ -242,8 +250,9 @@
\ifnum\synthslant@engine=4% fontspec
\newrobustcmd*{\synthslantbox}[2]{%
- \edef\synthslant@slant@value{#1}% definition for compatibility of both branches
- \synthslantbox@fontspect@shear@box{\synthslant@slant@value}{#2}%
+ \edef\synthslant@slant@value{#1}
+ \synthslantbox@fontspect@shear@box{\synthslant@slant@value}
+ {#2}%
}
\else
\newrobustcmd*{\synthslantbox}[2]{%
@@ -262,7 +271,8 @@
\NewDocumentEnvironment{slantenvironment}{}
{\upshape
\ifcsdef{microtypecontext}
- {\expandafter\microtypecontext\expandafter{\slantcontext}}
+ {\expandafter\microtypecontext
+ \expandafter{\slantcontext}}
{}}
{\ifcsdef{endmicrotypecontext}
{\endmicrotypecontext}
@@ -285,7 +295,8 @@
\NewDocumentEnvironment{negslantenvironment}{}
{\itshape
\ifcsdef{microtypecontext}
- {\expandafter\microtypecontext\expandafter{\negslantcontext}}
+ {\expandafter\microtypecontext
+ \expandafter{\negslantcontext}}
{}}
{\ifcsdef{endmicrotypecontext}
{\endmicrotypecontext}
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/tablvar/tablvar.sty b/Master/texmf-dist/tex/latex/tablvar/tablvar.sty
index 07b48703858..958d49d6e97 100644
--- a/Master/texmf-dist/tex/latex/tablvar/tablvar.sty
+++ b/Master/texmf-dist/tex/latex/tablvar/tablvar.sty
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2018-2023 by Antoine Missier <antoine.missier@ac-toulouse.fr>
+%% Copyright (C) 2018-2024 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,13 +22,12 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{tablvar}
- [2023/12/23 v2.0 .dtx tablvar file]
-
+ [2024/08/09 v2.1 Tables of signs and variations]
\RequirePackage{array}
\RequirePackage{ifthen}
\RequirePackage{multido}
\RequirePackage{xkeyval}
-\RequirePackage{ifpdf}
+\RequirePackage{iftex}
\newif\iftv@tikz % false par défaut
\DeclareOption{tikz}{\tv@tikztrue}
@@ -38,23 +37,31 @@
\iftv@pstricks
\ifpdf
- \PackageError{tablvar}{Don't use the pstricks option with PDF engines}{}
+ \ifluatex
+ \PackageInfo{tablvar}{Option 'pstricks' works
+ with luapstricks}
+ \else
+ \PackageError{tablvar}{Don't use the 'pstricks' option with
+ PDF output mode}{Use 'tikz' option or change the engine}
+ \fi
\else
- \PackageInfo{tablvar}{PSTricks option is used}
+ \PackageInfo{tablvar}{Option 'pstricks' is used}
\fi
\else\iftv@tikz
- \PackageInfo{tablvar}{tikz option is used.
+ \AtEndDocument{\PackageWarningNoLine{tablvar}{Option 'tikz' is used.
\MessageBreak
- Run twice to draw the arrows correctly}
+ Maybe rerun to draw the arrows correctly}
+ }
\else\ifpdf
- \PackageWarningNoLine{tablvar}{PDF engine is used,
- I'm using the tikz option.
+ \AtEndDocument{\PackageWarningNoLine{tablvar}{Output is in PDF mode,
+ I'm using the 'tikz' option.
\MessageBreak
- Run twice to draw the arrows correctly}
+ Maybe rerun to draw the arrows correctly}
+ }
\tv@tikztrue
\else
- \PackageWarningNoLine{tablvar}{PDF engines not used,
- I'm using the pstricks option}
+ \PackageWarningNoLine{tablvar}{Output is in DVI mode,
+ I'm using the 'pstricks' option}
\tv@pstrickstrue
\fi\fi\fi
@@ -120,6 +127,12 @@
\newcounter{maxdiscont}
\setcounter{maxdiscont}{4} % nb max de discontinuités
+\newlength{\rowtopsep}
+\setlength{\rowtopsep}{2pt}
+
+\newlength{\rowbottomsep}
+\setlength{\rowbottomsep}{2pt}
+
\newcommand*{\fleche}[2]{
\iftv@tikz
\tikz[remember picture,overlay]{\draw[->,>=stealth,
@@ -182,8 +195,8 @@
\multido{\I=1+1}{\themaxdiscont}{\newcounter{discont\I}}
}
-\newlength\mil@heightshift
-\newcounter{mil@rowshift}
+\newlength\mil@shift
+\newcounter{mil@row}
\newcounter{maxZI} % nb max de ZI
\setcounter{maxZI}{4}
@@ -225,19 +238,20 @@
\setcounter{nbvarlignes}{3}
}
-\newcommand\tv@saveheight{%
- \tv@cellheight=0pt
- \tv@celldepth=0pt
- \ifdim \ht\tv@cellbox > \ht\@arstrutbox
- \global\advance\tv@cellheight by \ht\tv@cellbox
- \else
- \global\advance\tv@cellheight by \ht\@arstrutbox
+\newcommand\tv@setheight{%
+ \global\tv@cellheight=\ht\tv@cellbox
+ \ifthenelse{\value{var@ligne}=0}{
+ \global\advance\tv@cellheight by \rowtopsep}{}
+ \ifdim \tv@cellheight < \ht\@arstrutbox
+ \global\tv@cellheight = \ht\@arstrutbox
\fi
- \ifdim \dp\tv@cellbox > \dp\@arstrutbox
- \global\advance\tv@celldepth by \dp\tv@cellbox
- \else
- \global\advance\tv@celldepth by \dp\@arstrutbox
+ \global\tv@celldepth=\dp\tv@cellbox
+ \ifthenelse{\value{var@ligne}=0}{
+ \global\advance \tv@celldepth by \rowbottomsep}{}
+ \ifdim \tv@celldepth < \dp\@arstrutbox
+ \global\tv@celldepth = \dp\@arstrutbox
\fi
+ \vrule height \tv@cellheight depth \tv@celldepth width 0pt
}
\newcommand{\tvcoltypes}{
@@ -246,7 +260,7 @@
>{\setcounter{tv@icol}{0}\stepcounter{tv@row}\begin{lrbox}%
\tv@cellbox $}%
c%
- <{$\end{lrbox}\usebox{\tv@cellbox}\tv@saveheight}}
+ <{$\end{lrbox}\usebox{\tv@cellbox}\tv@setheight}}
% type de colonne i pour les intervalles
\newcolumntype{i}{>{\stepcounter{tv@icol}
\centering\arraybackslash$}p{\intervalwidth}<{$}}
@@ -262,8 +276,8 @@
\setkeys*{tablvar}{#1} % fourni par xkeyval
\if\XKV@rm\empty \else \setlength{\intervalwidth}{#1} \fi
\tvcoltypes
- \ifextleft \newcolumntype{B}{v{l}} \else \newcolumntype{B}{v{c}} \fi
- \ifextright \newcolumntype{E}{v{r}} \else \newcolumntype{E}{v{c}} \fi
+ \ifextleft\newcolumntype{B}{v{l}}\else\newcolumntype{B}{v{c}}\fi
+ \ifextright\newcolumntype{E}{v{r}}\else\newcolumntype{E}{v{c}}\fi
\tablvarinit{#2}
\ZIinit
\begin{array}{%
@@ -296,7 +310,6 @@
\newcommand*{\variations}[2][3]{% #1=nblignes (3 par défaut)
% (ré)initialisation des compteurs
\setcounter{nbvarlignes}{#1}
- \setcounter{var@ligne}{0}
\setcounter{numdiscont}{0}
\multido{\I=1+1}{\themaxdiscont}{\setcounter{discont\I}{0}}
% boucle : on exécute le code #2 un nb de fois égal à (#1)-1
@@ -323,6 +336,7 @@
}
% tracé des pointillés pour les valeurs remarquables
\multido{\Ix=1+1}{\thenumvr}{\vrconnect{X\Ix}{Y\Ix}}
+ \setcounter{var@ligne}{0}
\\ % dernier retour ligne du tableau
}
@@ -355,13 +369,17 @@
\newcommand*{\vdecal}[2]{\smash{\raisebox{#1}{$#2$}}}
\newcommand*{\mil}[1]{%
- \mil@heightshift = \ht\@arstrutbox
- \advance\mil@heightshift by \dp\@arstrutbox
- \divide\mil@heightshift by 2
- \setcounter{mil@rowshift}{3}
- \addtocounter{mil@rowshift}{-\value{nbvarlignes}}
- \multiply\mil@heightshift by \value{mil@rowshift}
- \pos*{2}{\vdecal{\mil@heightshift}{#1}}
+ \setcounter{mil@row}{\value{nbvarlignes}}
+ \ifthenelse{\isodd{\value{nbvarlignes}}}{
+ \addtocounter{mil@row}{1}
+ \divide\value{mil@row} by 2
+ \pos*{\themil@row}{\smash{#1}}
+ }{
+ \divide\value{mil@row} by 2
+ \mil@shift = \dp\@arstrutbox
+ \advance\mil@shift by 0.5ex
+ \pos*{\themil@row}{\vdecal{-\mil@shift}{#1}}
+ }
}
\newcommand*{\barre}[1][]{\makebox[0pt]{$#1$}%
@@ -372,8 +390,26 @@
\kern1.5pt\vrule width \bbrulewidth\kern1pt
\vrule width \bbrulewidth\kern1.5pt}
-\newcommand*{\limg}[3][c]{\zbox[r]{\valpos[#1]{#2}{#3\hspace{\limsep}}}}
-\newcommand*{\limd}[3][c]{\zbox[l]{\valpos[#1]{#2}{\hspace{\limsep}#3}}}
+\newcommand*{\@limg}[3][c]{%
+ \zbox[r]{\valpos[#1]{#2}{#3\hspace{\limsep}}}}
+\newcommand*{\@limd}[3][c]{%
+ \zbox[l]{\valpos[#1]{#2}{\hspace{\limsep}#3}}}
+\newcommand*{\@@limg}[1]{%
+ \ifthenelse{\equal{#1}{+}}{\@limg{1}{+\infty}}{
+ \ifthenelse{\equal{#1}{-}}{\@limg{\value{nbvarlignes}}{-\infty}}{
+ \PackageError{tablvar}{Invalid argument for \string\limg*}
+ {Only + or - are valid arguments for \string\limg*}
+ }}
+}
+\newcommand*{\@@limd}[1]{%
+ \ifthenelse{\equal{#1}{+}}{\@limd{1}{+\infty}}{
+ \ifthenelse{\equal{#1}{-}}{\@limd{\value{nbvarlignes}}{-\infty}}{
+ \PackageError{tablvar}{Invalid argument for \string\limd*}
+ {Only + or - are valid arguments for \string\limd*}
+ }}
+}
+\newcommand{\limg}{\@ifstar{\@@limg}{\@limg}}
+\newcommand{\limd}{\@ifstar{\@@limd}{\@limd}}
\newcommand*{\discont}{
\ifthenelse{\thevar@ligne=1}{
@@ -392,7 +428,9 @@
}{}
}
-\newcommand*{\bblim}[4]{\limg{#1}{#2}\bb\discont\limd{#3}{#4}}
+\newcommand*{\@bblim}[4]{\limg{#1}{#2}\bb\discont\limd{#3}{#4}}
+\newcommand*{\@@bblim}[2]{\limg*{#1}\bb\discont\limd*{#2}}
+\newcommand*{\bblim}{\@ifstar{\@@bblim}{\@bblim}}
\newcommand*{\vr}[2][2]{% ligne 2 par défaut sauf si tv@row=1
\stepcounter{numvr}
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty
index 8f712c5b367..bdcfa47bfc1 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-06-20} {0.99c}
+\ProvidesExplPackage {tagpdf-base} {2024-10-27} {0.99g}
{part of tagpdf - provide base, no-op versions of the user commands }
\cs_new_protected:Npn \__tag_whatsits: {}
\AddToHook{begindocument}
@@ -39,36 +39,14 @@
\cs_set_protected:Npn \__tag_whatsits: {\tex_special:D {} }
}
}
-\cs_if_free:NT \pdf_object_new_indexed:nn
- {
- \cs_generate_variant:Nn \pdf_object_new:n {e}
- \cs_generate_variant:Nn \pdf_object_write:nnn {enn}
- \cs_new_protected:Npn \pdf_object_new_indexed:nn #1 #2
- {
- \pdf_object_new:e {#1/\int_eval:n{#2}}
- }
- \cs_new_protected:Npn \pdf_object_write_indexed:nnnn #1 #2 #3 #4
- {
- \pdf_object_write:enn {#1/\int_eval:n{#2}}{#3}{#4}
- }
- \cs_generate_variant:Nn \pdf_object_write_indexed:nnnn {nnne}
- \cs_new:Npn\pdf_object_ref_indexed:nn #1 #2
- {
- \pdf_object_ref:e {#1/\int_eval:n{#2}}
- }
- \cs_new:Npn \__kernel_pdf_object_id_indexed:nn #1 #2
- {
- \int_use:c
- { c__pdf_object_ #1/\int_eval:n{#2} _int }
- }
- }
-
\cs_new_protected:Npn \tag_stop:{}
\cs_new_protected:Npn \tag_start:{}
\cs_new_protected:Npn \tagstop{}
\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: }
@@ -106,6 +84,7 @@
\cs_new_protected:Npn \tag_struct_end:n{}
\cs_new_protected:Npn \tag_struct_use:n #1 {}
\cs_new_protected:Npn \tag_struct_use_num:n #1 {}
+\cs_new_protected:Npn \tag_struct_gput:nnn #1 #2 #3{}
%% File: tagpdf-checks.dtx
@@ -129,7 +108,6 @@
-
\NewDocumentCommand \tagpdfsetup { m }{}
\cs_new_protected:Npn\tag_tool:n #1 {}
\cs_set_eq:NN\tagtool\tag_tool:n
@@ -165,7 +143,13 @@
}
\providecommand\tag_socket_use:n[1]{}
\providecommand\tag_socket_use:nn[2]{}
+\providecommand\tag_socket_use:nnn[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 0b49140d300..faed53b3c68 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-06-20} {0.99c}
+\ProvidesExplPackage {tagpdf-debug-generic} {2024-10-27} {0.99g}
{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 4b6836ea134..7b0f3b96d8d 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-06-20} {0.99c}
+\ProvidesExplPackage {tagpdf-debug-lua} {2024-10-27} {0.99g}
{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 b3fd520713b..2ad6c21030c 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty
@@ -26,38 +26,14 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf.dtx
-\ProvidesExplPackage {tagpdf-debug} {2024-06-20} {0.99c}
+\ProvidesExplPackage {tagpdf-debug} {2024-10-27} {0.99g}
{ 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_if_free:NT \pdf_object_new_indexed:nn
- {
- \cs_generate_variant:Nn \pdf_object_new:n {e}
- \cs_generate_variant:Nn \pdf_object_write:nnn {enn}
- \cs_new_protected:Npn \pdf_object_new_indexed:nn #1 #2
- {
- \pdf_object_new:e {#1/\int_eval:n{#2}}
- }
- \cs_new_protected:Npn \pdf_object_write_indexed:nnnn #1 #2 #3 #4
- {
- \pdf_object_write:enn {#1/\int_eval:n{#2}}{#3}{#4}
- }
- \cs_generate_variant:Nn \pdf_object_write_indexed:nnnn {nnne}
- \cs_new:Npn\pdf_object_ref_indexed:nn #1 #2
- {
- \pdf_object_ref:e {#1/\int_eval:n{#2}}
- }
- \cs_new:Npn \__kernel_pdf_object_id_indexed:nn #1 #2
- {
- \int_use:c
- { c__pdf_object_ #1/\int_eval:n{#2} _int }
- }
- }
-
\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
@@ -74,20 +50,22 @@
\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}{ \int_use:N \l__tag_tag_stop_int }{#1}
+ \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
\bool_set_false:N \l__tag_active_mc_bool
\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 }
@@ -97,8 +75,10 @@
\bool_set_true:N \l__tag_active_socket_bool
\__tag_start_para_ints:
}
- \msg_note:nnee {tag / debug }{tag-start}{ \int_use:N \l__tag_tag_stop_int }{#1}
+ \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}
@@ -217,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
@@ -239,7 +219,6 @@
-
\keys_define:nn { __tag / show }
{
,debug/structures .code:n =
@@ -285,7 +264,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 }
@@ -303,7 +282,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 }
@@ -316,8 +296,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 }
@@ -371,13 +365,6 @@
\g__tag_struct_tag_tl
\g__tag_struct_tag_NS_tl
\__tag_check_structure_has_tag:n { \int_use:N \c@g__tag_struct_abs_int }
- \tl_if_empty:NF
- \l__tag_struct_key_label_tl
- {
- \__tag_property_record:eV
- {tagpdfstruct-\l__tag_struct_key_label_tl}
- \c__tag_property_struct_clist
- }
\int_compare:nNnT { \l__tag_struct_stack_parent_tmpa_tl } = { -1 }
{
\seq_get:NNF
@@ -479,7 +466,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 }
@@ -554,29 +541,29 @@
\__tag_check_if_active_struct:T
{
\prop_if_exist:cTF
- { g__tag_struct_\__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop } %
+ { g__tag_struct_\property_ref:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop } %
{
\__tag_check_struct_used:n {#1}
%add the label structure as kid to the current structure (can be the root)
\__tag_struct_kid_struct_gput_right:ee
{ \g__tag_struct_stack_current_tl }
- { \__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{1} }
+ { \property_ref:enn{tagpdfstruct-#1}{tagstruct}{1} }
%add the current structure to the labeled one as parents
\__tag_prop_gput:cne
- { g__tag_struct_\__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}_prop }
+ { g__tag_struct_\property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}_prop }
{ P }
{
\pdf_object_ref_indexed:nn { __tag/struct } { \g__tag_struct_stack_current_tl }
}
\prop_gput:cne
- { g__tag_struct_debug_\__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}_prop }
+ { g__tag_struct_debug_\property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}_prop }
{ P }
{
parent~structure:~\g__tag_struct_stack_current_tl\c_space_tl=~
\g__tag_struct_tag_tl
}
\__tag_struct_get_parentrole:eNN
- {\__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}}
+ {\property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}}
\l__tag_tmpa_tl
\l__tag_tmpb_tl
\__tag_check_parent_child:VVVVN
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def
index 09846bc0b56..e25286e3321 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-06-20} {0.99c}
+\ProvidesExplFile {tagpdf-luatex.def} {2024-10-27} {0.99g}
{tagpdf~driver~for~luatex}
{
\fontencoding{TU}\fontfamily{lmr}\fontseries{m}\fontshape{n}\fontsize{10pt}{10pt}\selectfont
@@ -46,7 +46,7 @@
\cs_set_protected:Npn \__tag_prop_gput:Nnn #1 #2 #3
{
\prop_gput:Nnn #1 { #2 } { #3 }
- \lua_now:e { ltx.__tag.tables.\cs_to_str:N#1 ["#2"] = "#3" }
+ \lua_now:e { ltx.__tag.tables.\cs_to_str:N#1 ["#2"] = "\lua_escape:n{#3}" }
}
\cs_set_protected:Npn \__tag_seq_gput_right:Nn #1 #2
@@ -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 ca704be6e82..716de1a1d96 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-06-20} {0.99c}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2024-10-27} {0.99g}
{part of tagpdf - code related to marking chunks - generic mode}
\tl_new:N \l__tag_mc_ref_abspage_tl
@@ -276,14 +276,14 @@
\__tag_prop_new:N \g__tag_MCID_byabspage_prop
\int_new:N \g__tag_MCID_tmp_bypage_int
\cs_generate_variant:Nn \__tag_mc_bdc:nn {ne}
- \__tag_property_gset:nnnn {tagmcid } { now }
+ \property_gset:nnnn {tagmcid } { now }
{0} { \int_use:N \g__tag_MCID_tmp_bypage_int }
\cs_new_protected:Npn \__tag_mc_bdc_mcid:nn #1 #2
{
\int_gincr:N \c@g__tag_MCID_abs_int
\tl_set:Ne \l__tag_mc_ref_abspage_tl
{
- \__tag_property_ref:enn %3 args
+ \property_ref:enn %3 args
{
mcid-\int_use:N \c@g__tag_MCID_abs_int
}
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 1057a7bc678..7f0331f892a 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-06-20} {0.99c}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2024-10-27} {0.99g}
{tagpdf - mc code only for the luamode }
\hook_gput_code:nnn{begindocument}{tagpdf/mc}
{
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 19dac1571b8..113d920366a 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,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2024-06-20} {0.99c}
+%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2024-10-27} {0.99g}
%% {latex-book} {https://www.latex-project.org/ns/book/2022}{}
chapter, H1,pdf2,
section, H2,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 4b51be0e8d7..516094991cf 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-ns-latex.def} {2024-06-20} {0.99c}
+%% \ProvidesExplFile {tagpdf-ns-latex.def} {2024-10-27} {0.99g}
%% {latex} {https://www.latex-project.org/ns/dflt/2022}{}
title, Title, pdf2,
part, Title, 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 bca7660ca53..af23601b306 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-06-20} {0.99c}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2024-10-27} {0.99g}
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 2e2ccc6c45f..88d8599995b 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-06-20} {0.99c}
+%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2024-10-27} {0.99g}
%% {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 b5cb091a716..ccb4e7282c3 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-06-20} {0.99c}
+%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2024-10-27} {0.99g}
%% {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 b0495a598c1..4c89e41f83c 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-06-20} {0.99c}
+%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2024-10-27} {0.99g}
,,,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,∅
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 c3b120e5d5a..27dd3a33b06 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-06-20} {0.99c}
+%% \ProvidesExplFile {tagpdf-parent-child.csv} {2024-10-27} {0.99g}
,,,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 425dd8120f1..4ad1ba5b3db 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.99c", --TAGVERSION
- date = "2024-06-20", --TAGDATE
+ version = "0.99g", --TAGVERSION
+ date = "2024-10-27", --TAGDATE
description = "tagpdf lua code",
license = "The LATEX Project Public License 1.3c"
}
@@ -90,6 +90,8 @@ local iwspaceattributeid = luatexbase.new_attribute ("g__tag_interwordspace_attr
local iwfontattributeid = luatexbase.new_attribute ("g__tag_interwordfont_attr")
local tagunmarkedbool= token.create("g__tag_tagunmarked_bool")
local truebool = token.create("c_true_bool")
+local softhyphenbool = token.create("g__tag_softhyphen_bool")
+
local catlatex = luatexbase.registernumber("catcodetable@latex")
local tableinsert = table.insert
local nodeid = node.id
@@ -121,6 +123,9 @@ local KERN = node.id("kern")
local PENALTY = node.id("penalty")
local LOCAL_PAR = node.id("local_par")
local MATH = node.id("math")
+
+local explicit_disc = 1
+local regular_disc = 3
ltx = ltx or { }
ltx.__tag = ltx.__tag or { }
ltx.__tag.mc = ltx.__tag.mc or { } -- mc data
@@ -826,5 +831,53 @@ function ltx.__tag.func.output_parenttree (abspage)
tex.sprint(catlatex,line)
end
end
+do
+ local properties = node.get_properties_table()
+ local is_soft_hyphen_prop = 'tagpdf.rewrite-softhyphen.is_soft_hyphen'
+ local hyphen_char = 0x2D
+ local soft_hyphen_char = 0xAD
+ local softhyphen_fonts = setmetatable({}, {__index = function(t, fid)
+ local fdir = identifiers[fid]
+ local format = fdir and fdir.format
+ local result = (format == 'opentype' or format == 'truetype')
+ local characters = fdir and fdir.characters
+ result = result and (characters and characters[soft_hyphen_char]) ~= nil
+ t[fid] = result
+ return result
+ end})
+ local function process_softhyphen_pre(head, _context, _dir)
+ if softhyphenbool.mode ~= truebool.mode then return true end
+ for disc, sub in node.traverse_id(DISC, head) do
+ if sub == explicit_disc or sub == regular_disc then
+ for n, _ch, _f in node.traverse_char(disc.pre) do
+ local props = properties[n]
+ if not props then
+ props = {}
+ properties[n] = props
+ end
+ props[is_soft_hyphen_prop] = true
+ end
+ end
+ end
+ return true
+ end
+
+ local function process_softhyphen_post(head, _context, _dir)
+ if softhyphenbool.mode ~= truebool.mode then return true end
+ for disc, sub in node.traverse_id(DISC, head) do
+ for n, ch, fid in node.traverse_glyph(disc.pre) do
+ local props = properties[n]
+ if softhyphen_fonts[fid] and ch == hyphen_char and props and props[is_soft_hyphen_prop] then
+ n.char = soft_hyphen_char
+ props.glyph_info = nil
+ end
+ end
+ end
+ return true
+ end
+
+ luatexbase.add_to_callback('pre_shaping_filter', process_softhyphen_pre, 'tagpdf.rewrite-softhyphen')
+ luatexbase.add_to_callback('post_shaping_filter', process_softhyphen_post, 'tagpdf.rewrite-softhyphen')
+end
--
-- End of File `tagpdf.lua'.
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty
index 1688cdf6478..f4451113dce 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty
@@ -28,8 +28,8 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf.dtx
-\ProvidesExplPackage {tagpdf} {2024-06-20} {0.99c}
- { A package to experiment with pdf tagging }
+\ProvidesExplPackage {tagpdf} {2024-10-27} {0.99g}
+ { LaTeX kernel code for PDF tagging }
\bool_if:nF
{
@@ -65,30 +65,23 @@
\ExecuteOptions{luamode}
\ProcessOptions
\RequirePackage{tagpdf-base}
-\cs_if_free:NT \pdf_object_new_indexed:nn
- {
- \cs_generate_variant:Nn \pdf_object_new:n {e}
- \cs_generate_variant:Nn \pdf_object_write:nnn {enn}
- \cs_new_protected:Npn \pdf_object_new_indexed:nn #1 #2
- {
- \pdf_object_new:e {#1/\int_eval:n{#2}}
- }
- \cs_new_protected:Npn \pdf_object_write_indexed:nnnn #1 #2 #3 #4
- {
- \pdf_object_write:enn {#1/\int_eval:n{#2}}{#3}{#4}
- }
- \cs_generate_variant:Nn \pdf_object_write_indexed:nnnn {nnne}
- \cs_new:Npn\pdf_object_ref_indexed:nn #1 #2
- {
- \pdf_object_ref:e {#1/\int_eval:n{#2}}
- }
- \cs_new:Npn \__kernel_pdf_object_id_indexed:nn #1 #2
- {
- \int_use:c
- { c__pdf_object_ #1/\int_eval:n{#2} _int }
- }
- }
-
+\AddToHook{package/latex-lab-testphase-new-or-2/after}
+ {
+ \cs_set_protected:Npn \__fnote_gput_ref:nn #1 #2 %#1 the structure number receiving the ref #2
+ {
+ \tag_struct_gput:nnn {#1}{ref_num}{#2}
+ }
+ }
+\AddToHook{package/latex-lab-testphase-toc/after}
+ {
+ \cs_set_protected:Npn \g__tag_struct_ref_by_dest:
+ {
+ \prop_map_inline:Nn\g__tag_struct_ref_by_dest_prop
+ {
+ \tag_struct_gput:nnn {##1}{ref_dest}{##2}
+ }
+ }
+ }
\cs_new_protected:Npn \__tag_lastpagelabel:
{
\legacy_if:nT { @filesw }
@@ -110,6 +103,7 @@
{\__tag_lastpagelabel:}
\tl_new:N \l__tag_tmpa_tl
\tl_new:N \l__tag_tmpb_tl
+\tl_new:N \l__tag_Ref_tmpa_tl
\tl_new:N \l__tag_get_tmpc_tl
\tl_new:N \l__tag_get_parent_tmpa_tl
\tl_new:N \l__tag_get_parent_tmpb_tl
@@ -137,6 +131,7 @@
\bool_set_true:N \l__tag_active_struct_bool
\bool_new:N \l__tag_active_socket_bool
\bool_new:N \g__tag_tagunmarked_bool
+\bool_new:N \g__tag_softhyphen_bool
\prg_generate_conditional_variant:Nnn \pdf_object_if_exist:n {e}{T,F,TF}
\cs_generate_variant:Nn \pdf_object_ref:n {e}
\cs_generate_variant:Nn \pdfannot_dict_put:nnn {nne}
@@ -147,10 +142,6 @@
\cs_generate_variant:Nn \seq_set_split:Nnn{Nne} %** unneeded
\cs_generate_variant:Nn \str_set_convert:Nnnn {Nonn, Noon, Nnon }
\cs_generate_variant:Nn \clist_map_inline:nn {on}
- \cs_new_eq:NN \__tag_property_new:nnnn \property_new:nnnn
- \cs_new_eq:NN \__tag_property_gset:nnnn \property_gset:nnnn
- \cs_new_eq:NN \__tag_property_ref:nnn \property_ref:nnn
- \cs_new_eq:NN \__tag_property_ref:nn \property_ref:nn
\cs_new_protected:Npn \__tag_property_record:nn #1#2
{
\@bsphack
@@ -158,29 +149,29 @@
\@esphack
}
-\cs_generate_variant:Nn \__tag_property_ref:nnn {enn}
-\cs_generate_variant:Nn \__tag_property_ref:nn {en}
+\cs_generate_variant:Nn \property_ref:nnn {enn}
+\cs_generate_variant:Nn \property_ref:nn {en}
\cs_generate_variant:Nn \__tag_property_record:nn {en,eV}
\cs_new:Npn \__tag_property_ref_lastpage:nn #1 #2
{
- \__tag_property_ref:nnn {@tag@LastPage}{#1}{#2}
+ \property_ref:nnn {@tag@LastPage}{#1}{#2}
}
-\__tag_property_new:nnnn
+\property_new:nnnn
{ tagstruct } { now }
- {0} { \int_use:N \c@g__tag_struct_abs_int }
-\__tag_property_new:nnnn { tagstructobj } { now } {}
+ {1} { \int_use:N \c@g__tag_struct_abs_int }
+\property_new:nnnn { tagstructobj } { now } {}
{
\pdf_object_ref_indexed:nn { __tag/struct } { \c@g__tag_struct_abs_int }
}
-\__tag_property_new:nnnn
+\property_new:nnnn
{ tagabspage } { shipout }
{0} { \int_use:N \g_shipout_readonly_int }
-\__tag_property_new:nnnn { tagmcabs } { now }
+\property_new:nnnn { tagmcabs } { now }
{0} { \int_use:N \c@g__tag_MCID_abs_int }
\flag_new:n { __tag/mcid }
-\__tag_property_new:nnnn {tagmcid } { shipout }
+\property_new:nnnn {tagmcid } { shipout }
{0} { \flag_height:n { __tag/mcid } }
@@ -189,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 }
@@ -221,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
@@ -229,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 }
@@ -240,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,
@@ -273,6 +268,8 @@
activate/tagunmarked .bool_gset:N = \g__tag_tagunmarked_bool,
activate/tagunmarked .initial:n = true,
tagunmarked .bool_gset:N = \g__tag_tagunmarked_bool,
+ activate/softhyphen .bool_gset:N = \g__tag_softhyphen_bool,
+ activate/softhyphen .initial:n = true,
page/tabsorder .choice:,
page/tabsorder / row .code:n =
\pdfmanagement_add:nnn { Page } {Tabs}{/R},
@@ -326,6 +323,11 @@
{ structure~with~label~#1~is~unknown~rerun}
\msg_new:nnn { tag } {struct-show-closing}
{ closing~structure~#1~tagged~\use:e{\prop_item:cn{g__tag_struct_#1_prop}{S}} }
+\msg_new:nnn { tag } {struct-Ref-unknown}
+ {
+ #1~has~no~related~structure.\\
+ /Ref~not~updated.
+ }
\msg_new:nnn { tag } {tree-struct-still-open}
{
There~are~still~open~structures~on~the~stack!\\
@@ -432,7 +434,7 @@
\cs_new_protected:Npn \__tag_check_struct_used:n #1 %#1 label
{
\prop_get:cnNT
- {g__tag_struct_\__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop}
+ {g__tag_struct_\property_ref:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop}
{P}
\l__tag_tmpa_tl
{
@@ -446,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 }
{
@@ -465,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 }
{
@@ -553,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}
@@ -565,7 +567,7 @@
{
\int_compare:nT
{
- \__tag_property_ref:enn
+ \property_ref:enn
{mcid-####1}
{tagabspage}
{-1}
@@ -573,17 +575,17 @@
##1
}
{
- \seq_gput_right:Ne \l_tmpa_seq
+ \seq_gput_right:Ne \l__tag_tmpa_seq
{
Page##1-####1-
- \__tag_property_ref:enn
+ \property_ref:enn
{mcid-####1}
{tagmcid}
{-1}
}
}
}
- \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 }
@@ -646,7 +648,7 @@
{
\__tag_check_if_active_struct:T
{
- \tl_set:Ne \l__tag_tmpa_tl { \__tag_property_ref:nnn{tagpdf-#1}{tagmcabs}{} }
+ \tl_set:Ne \l__tag_tmpa_tl { \property_ref:nnn{tagpdf-#1}{tagmcabs}{} }
\tl_if_empty:NTF\l__tag_tmpa_tl
{
\msg_warning:nnn {tag} {mc-label-unknown} {#1}
@@ -668,12 +670,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{}
@@ -756,30 +758,6 @@
},
}
%% File: tagpdf.dtx
-\cs_if_free:NT \pdf_object_new_indexed:nn
- {
- \cs_generate_variant:Nn \pdf_object_new:n {e}
- \cs_generate_variant:Nn \pdf_object_write:nnn {enn}
- \cs_new_protected:Npn \pdf_object_new_indexed:nn #1 #2
- {
- \pdf_object_new:e {#1/\int_eval:n{#2}}
- }
- \cs_new_protected:Npn \pdf_object_write_indexed:nnnn #1 #2 #3 #4
- {
- \pdf_object_write:enn {#1/\int_eval:n{#2}}{#3}{#4}
- }
- \cs_generate_variant:Nn \pdf_object_write_indexed:nnnn {nnne}
- \cs_new:Npn\pdf_object_ref_indexed:nn #1 #2
- {
- \pdf_object_ref:e {#1/\int_eval:n{#2}}
- }
- \cs_new:Npn \__kernel_pdf_object_id_indexed:nn #1 #2
- {
- \int_use:c
- { c__pdf_object_ #1/\int_eval:n{#2} _int }
- }
- }
-
\bool_if:NTF \g__tag_mode_lua_bool
{
\RequirePackage {tagpdf-mc-code-lua}
@@ -961,11 +939,11 @@
{
%mcid####1
\int_compare:nT
- {\__tag_property_ref:enn{mcid-####1}{tagabspage}{-1}=##1} %mcid is on current page
+ {\property_ref:enn{mcid-####1}{tagabspage}{-1}=##1} %mcid is on current page
{% yes
\prop_put:Nee
\l__tag_tmpa_prop
- {\__tag_property_ref:enn{mcid-####1}{tagmcid}{-1}}
+ {\property_ref:enn{mcid-####1}{tagmcid}{-1}}
{\prop_item:Nn \g__tag_mc_parenttree_prop {####1}}
}
}
@@ -1900,12 +1878,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
{
@@ -1996,8 +1974,12 @@
\tl_new:N \g__tag_struct_tag_NS_tl
\tl_new:N \l__tag_struct_roletag_tl
\tl_new:N \l__tag_struct_roletag_NS_tl
-\tl_new:N \l__tag_struct_key_label_tl
+\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
{
@@ -2118,11 +2100,11 @@
/Type \c_space_tl /MCR \c_space_tl
/Pg
\c_space_tl
- \pdf_pageobject_ref:n { \__tag_property_ref:enn{mcid-#1}{tagabspage}{1} }
- /MCID \c_space_tl \__tag_property_ref:enn{mcid-#1}{tagmcid}{1}
+ \pdf_pageobject_ref:n { \property_ref:enn{mcid-#1}{tagabspage}{1} }
+ /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 }
@@ -2136,7 +2118,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 }
@@ -2144,11 +2127,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 }
@@ -2257,25 +2250,38 @@
\tl_clear:N #2
\prop_map_inline:cn { g__tag_struct_#1_prop }
{
- \tl_put_right:Ne #2
+ \cs_if_exist_use:cTF {__tag_struct_format_##1:nnN}
{
- \cs_if_exist_use:cTF {__tag_struct_format_##1:nn}
- {{##1}{##2}}
- {\c_space_tl/##1~##2}
+ {##1}{##2}#2
+ }
+ {
+ \tl_put_right:Ne #2 { \c_space_tl/##1~##2 }
}
}
}
-\cs_new:Nn\__tag_struct_format_rolemap:nn{}
-\cs_new:Nn\__tag_struct_format_parentrole:nn{}
+\cs_new:Nn\__tag_struct_format_rolemap:nnN{}
+\cs_new:Nn\__tag_struct_format_parentrole:nnN{}
-\cs_new:Nn\__tag_struct_format_Ref:nn{\c_space_tl/#1~[#2]}
+\cs_new_protected:Nn\__tag_struct_format_Ref:nnN
+ {
+ \tl_put_right:Nn #3 { ~/#1~[ } %]
+ \clist_map_inline:nn{ #2 }
+ {
+ ##1 #3
+ }
+ \tl_put_right:Nn #3
+ { %[
+ \c_space_tl]
+ }
+ }
\cs_new_protected:Npn \__tag_struct_write_obj:n #1 % #1 is the struct num
{
\prop_if_exist:cTF { g__tag_struct_#1_prop }
{
\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}
{
@@ -2301,8 +2307,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
{
@@ -2324,7 +2331,8 @@
#1 %
}
{
- \pdf_pageobject_ref:n { \__tag_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
@@ -2333,7 +2341,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
@@ -2354,7 +2363,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
@@ -2362,10 +2372,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
@@ -2374,7 +2386,14 @@
\keys_define:nn { __tag / struct }
{
- label .tl_set:N = \l__tag_struct_key_label_tl,
+ label .code:n =
+ {
+ \prop_gput:Nee\g__tag_struct_label_num_prop
+ {#1}{\int_use:N \c@g__tag_struct_abs_int}
+ \__tag_property_record:eV
+ {tagpdfstruct-#1}
+ \c__tag_property_struct_clist
+ },
stash .bool_set:N = \l__tag_struct_elem_stash_bool,
parent .code:n =
{
@@ -2393,6 +2412,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}
@@ -2459,16 +2479,58 @@
{ Lang }
{ (#1) }
},
+ }
+\cs_new_protected:Npn \__tag_struct_Ref_obj:nN #1 #2 %#1 a object reference
+ {
+ \tl_put_right:Ne#2
+ {
+ \c_space_tl#1
+ }
+ }
+
+\cs_new_protected:Npn \__tag_struct_Ref_label:nN #1 #2 %#1 a label
+ {
+ \prop_get:NnNTF \g__tag_struct_label_num_prop {#1} \l__tag_tmpb_tl
+ {
+ \tl_put_right:Ne#2
+ {
+ \c_space_tl\tag_struct_object_ref:e{ \l__tag_tmpb_tl }
+ }
+ }
+ {
+ \msg_warning:nnn {tag}{struct-Ref-unknown}{Label~'#1'}
+ }
+ }
+\cs_new_protected:Npn \__tag_struct_Ref_dest:nN #1 #2 %#1 a dest name
+ {
+ \prop_get:NnNTF \g__tag_struct_dest_num_prop {#1} \l__tag_tmpb_tl
+ {
+ \tl_put_right:Ne#2
+ {
+ \c_space_tl\tag_struct_object_ref:e{ \l__tag_tmpb_tl }
+ }
+ }
+ {
+ \msg_warning:nnn {tag}{struct-Ref-unknown}{Destination~'#1'}
+ }
+ }
+\cs_new_protected:Npn \__tag_struct_Ref_num:nN #1 #2 %#1 a structure number
+ {
+ \tl_put_right:Ne#2
+ {
+ \c_space_tl\tag_struct_object_ref:e{ #1 }
+ }
+ }
+
+\keys_define:nn { __tag / struct }
+ {
ref .code:n = % ref property
{
- \tl_clear:N\l__tag_tmpa_tl
\clist_map_inline:on {#1}
{
- \tl_put_right:Ne \l__tag_tmpa_tl
- {~\__tag_property_ref:en{tagpdfstruct-##1}{tagstructobj} }
+ \tag_struct_gput:nne
+ {\int_use:N \c@g__tag_struct_abs_int}{ref_label}{ ##1 }
}
- \__tag_struct_gput_data_ref:ee
- { \int_use:N \c@g__tag_struct_abs_int } {\l__tag_tmpa_tl}
},
E .code:n = % E property
{
@@ -2512,7 +2574,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
{
@@ -2538,7 +2600,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 }
@@ -2651,13 +2714,6 @@
\g__tag_struct_tag_tl
\g__tag_struct_tag_NS_tl
\__tag_check_structure_has_tag:n { \int_use:N \c@g__tag_struct_abs_int }
- \tl_if_empty:NF
- \l__tag_struct_key_label_tl
- {
- \__tag_property_record:eV
- {tagpdfstruct-\l__tag_struct_key_label_tl}
- \c__tag_property_struct_clist
- }
\int_compare:nNnT { \l__tag_struct_stack_parent_tmpa_tl } = { -1 }
{
\seq_get:NNF
@@ -2759,7 +2815,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 }
@@ -2811,22 +2867,22 @@
\__tag_check_if_active_struct:T
{
\prop_if_exist:cTF
- { g__tag_struct_\__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop } %
+ { g__tag_struct_\property_ref:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop } %
{
\__tag_check_struct_used:n {#1}
%add the label structure as kid to the current structure (can be the root)
\__tag_struct_kid_struct_gput_right:ee
{ \g__tag_struct_stack_current_tl }
- { \__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{1} }
+ { \property_ref:enn{tagpdfstruct-#1}{tagstruct}{1} }
%add the current structure to the labeled one as parents
\__tag_prop_gput:cne
- { g__tag_struct_\__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}_prop }
+ { g__tag_struct_\property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}_prop }
{ P }
{
\pdf_object_ref_indexed:nn { __tag/struct } { \g__tag_struct_stack_current_tl }
}
\__tag_struct_get_parentrole:eNN
- {\__tag_property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}}
+ {\property_ref:enn{tagpdfstruct-#1}{tagstruct}{1}}
\l__tag_tmpa_tl
\l__tag_tmpb_tl
\__tag_check_parent_child:VVVVN
@@ -2911,7 +2967,7 @@
\pdf_object_ref_indexed:nn {__tag/struct}{ #1 }
}
\cs_generate_variant:Nn \tag_struct_object_ref:n {e}
-\cs_new_protected:Npn \tag_struct_gput:nnn #1 #2 #3
+\cs_set_protected:Npn \tag_struct_gput:nnn #1 #2 #3
{
\cs_if_exist_use:cF {__tag_struct_gput_data_#2:nn}
{ %warning??
@@ -2920,19 +2976,44 @@
{#1}{#3}
}
\cs_generate_variant:Nn \tag_struct_gput:nnn {ene,nne}
-\cs_new_protected:Npn \__tag_struct_gput_data_ref:nn #1 #2
- % #1 receiving struct num, #2 list of object ref
+\cs_new_protected:Npn \__tag_struct_gput_data_ref_aux:nnn #1 #2 #3
+ % #1 receiving struct num, #2 key word #3 value
{
- \prop_get:cnN
- { g__tag_struct_#1_prop }
- {Ref}
- \l__tag_get_tmpc_tl
- \__tag_struct_prop_gput:nne
- { #1 }
- { Ref }
- { \quark_if_no_value:NF\l__tag_get_tmpc_tl { \l__tag_get_tmpc_tl\c_space_tl }#2 }
+ \prop_get:cnNTF
+ { g__tag_struct_#1_prop }
+ {Ref}
+ \l__tag_get_tmpc_tl
+ {
+ \tl_put_right:No \l__tag_get_tmpc_tl
+ {\cs:w __tag_struct_Ref_#2:nN \cs_end: {#3},}
+ }
+ {
+ \tl_set:No \l__tag_get_tmpc_tl
+ {\cs:w __tag_struct_Ref_#2:nN \cs_end: {#3},}
+ }
+ \__tag_struct_prop_gput:nno
+ { #1 }
+ { Ref }
+ { \l__tag_get_tmpc_tl }
}
-\cs_generate_variant:Nn \__tag_struct_gput_data_ref:nn {ee}
+\cs_new_protected:Npn \__tag_struct_gput_data_ref:nn #1 #2
+ {
+ \__tag_struct_gput_data_ref_aux:nnn {#1}{obj}{#2}
+ }
+\cs_new_protected:Npn \__tag_struct_gput_data_ref_label:nn #1 #2
+ {
+ \__tag_struct_gput_data_ref_aux:nnn {#1}{label}{#2}
+ }
+\cs_new_protected:Npn \__tag_struct_gput_data_ref_dest:nn #1 #2
+ {
+ \__tag_struct_gput_data_ref_aux:nnn {#1}{dest}{#2}
+ }
+\cs_new_protected:Npn \__tag_struct_gput_data_ref_num:nn #1 #2
+ {
+ \__tag_struct_gput_data_ref_aux:nnn {#1}{num}{#2}
+ }
+
+\cs_generate_variant:Nn \__tag_struct_gput_data_ref:nn {ee,no}
\cs_new_protected:Npn \tag_struct_insert_annot:nn #1 #2 %#1 should be an object reference
%#2 struct parent num
{
@@ -3054,6 +3135,7 @@
},
}
%% File: tagpdf-space.dtx
+\bool_new:N\l__tag_showspaces_bool
\keys_define:nn { __tag / setup }
{
activate/spaces .choice:,
@@ -3174,7 +3256,6 @@
-
\RenewDocumentCommand \tagpdfsetup { m }
{
\keys_set:nn { __tag / setup } { #1 }
@@ -3193,24 +3274,50 @@
\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:NT \l__tag_active_socket_bool
+ { \socket_use:nnn {tagsupport/#1} {#2} {#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_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_none:nn
+ 2 \use_ii:nn
}
\ERRORusetaggingsocket
}
@@ -3460,9 +3567,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{}
}
}
@@ -3524,75 +3631,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}
@@ -3713,11 +3823,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
{
@@ -3741,12 +3851,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 936f8adacd2..463790565c6 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-06-20} {0.99c}
+\ProvidesExplPackage {tagpdfdocu-patches} {2024-10-27} {0.99g}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox,xpatch}
@@ -82,10 +82,6 @@
% }
\ExplSyntaxOff
-% ======== tikzpicture ==========
-% TODO this needs some investigation: it messes up the stack if one add paraOff
-
-\AddToHook{env/tikzpicture/begin}{}
%======== tcolorbox ========
% We switch of paratagging at the begin and reenable it locally in before upper.
@@ -138,22 +134,6 @@
% ======= footnote ========
% done in testphase code
-% ======= bibliography ========
-% biblatex. Creates some empty mc-chunks.
-% no internal patches, but redefining begentry/finentry is not safe.
-% better hook is needed.
-
-
-\def\blx@endbibliography{%
- \csuse{blx@endenv@\blx@theenv}%
- \blx@noitem
- \blx@locallabelwidth@finish
- \endgroup
- \blx@bibnote\blx@thepostnote
-% \endgroup
- \expandafter\endgroup\if@endpe\@doendpe\fi
-}
-
% ====== hyperref ========
% this should probably go into tagpdf, but it is related to
% problem of pdf strings and context ....
@@ -167,16 +147,147 @@
\let\tagstructend\relax
}}{}
-%====== picture =======
+%====== tikz picture =======
+% first draft to tag. The main problem is to handle paragraphs. One
+\ExplSyntaxOn
+\cs_new_protected:Npn\__tag_tikz_savepos:n #1
+ {
+ \tex_savepos:D
+ \tikz@resetexpandcount%
+ \tikz@scan@one@point\pgfutil@firstofone(current~bounding~box.north~east)\relax
+ \pgf@pos@transform{\pgf@x}{\pgf@y}%
+ \property_record:nn{#1}{xpos,ypos,abspage}
+ \property_record:nn{#1-tr}{pgfx,pgfy}
+ \tikz@scan@one@point\pgfutil@firstofone(current~bounding~box.south~west)\relax
+ \pgf@pos@transform{\pgf@x}{\pgf@y}%
+ \property_record:nn{#1-bl}{pgfx,pgfy}
+ \tex_savepos:D
+ }
+\cs_generate_variant:Nn \__tag_tikz_savepos:n {e}
+
+\NewProperty{pgfx}{now}{0}
+ {
+ \dim_compare:nNnTF {\dim_abs:n {\pgf@x}} > {15999pt}
+ { 0 }
+ { \dim_to_decimal_in_sp:n{\pgf@x} }
+ }
+\NewProperty{pgfy}{now}{0}
+ {
+ \dim_compare:nNnTF {\dim_abs:n {\pgf@y}} > {15999pt}
+ { 0 }
+ { \dim_to_decimal_in_sp:n{\pgf@y} }
+ }
+
+\cs_new_protected:Npn \__tag_tikz_getbbox:
+ {
+ \int_gincr:N\g__tag_graphic_int
+ \tl_set:Ne\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int}
+ \tl_gset:Ne\g__tag_graphic_lx_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp
+ + \property_ref:een {\l__tag_graphic_currentlabel_tl-bl}{pgfx}{0}sp
+ }
+ }
+ \tl_gset:Ne\g__tag_graphic_ly_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp
+ + \property_ref:een {\l__tag_graphic_currentlabel_tl-bl}{pgfy}{0}sp
+ }
+ }
+ \tl_gset:Ne\g__tag_graphic_ux_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp
+ + \property_ref:een {\l__tag_graphic_currentlabel_tl-tr}{pgfx}{0}sp
+ }
+ }
+ \tl_gset:Ne\g__tag_graphic_uy_tl
+ {
+ \dim_to_decimal_in_bp:n
+ { \property_ref:een {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp
+ + \property_ref:een {\l__tag_graphic_currentlabel_tl-tr}{pgfy}{0}sp
+ }
+ }
+ }
-% PAC3 complained that the BBox is missing, so we are cheating for now
-% and add a fix size.
-\tagpdfsetup
- {
- newattribute =
- {bbox}{/O /Layout /BBox [0 0 100 100]}
+\cs_new_protected:Npn \__tag_graphic_tikz_begin_picture:
+ {
+ \tag_mc_end_push:
+ \bool_if:NTF \l__tag_graphic_artifact_bool
+ { \tagmcbegin{artifact} }
+ {
+ \__tag_tikz_getbbox:
+ \tagstructbegin{tag=Figure,alt=\l__tag_graphic_alt_tl}\tagmcbegin{}
+ \__tag_prop_gput:cne
+ { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop }
+ { A }
+ {
+ <<
+ /O /Layout /BBox~
+ [
+ \g__tag_graphic_lx_tl\c_space_tl
+ \g__tag_graphic_ly_tl\c_space_tl
+ \g__tag_graphic_ux_tl\c_space_tl
+ \g__tag_graphic_uy_tl
+ ]
+ >>
+ }
+ \bool_if:NT\l__tag_graphic_debug_bool
+ {
+ \__tag_graphic_show_bbox:VVVVne
+ \g__tag_graphic_lx_tl
+ \g__tag_graphic_ly_tl
+ \g__tag_graphic_ux_tl
+ \g__tag_graphic_uy_tl
+ {red}
+ {\int_use:N\g__tag_graphic_int}
+ }
+ }
+ \SuspendTagging{tikz}
}
+\cs_new_protected:Npn \__tag_graphic_tikz_end_picture:
+ {
+ \ResumeTagging{tikz}\tagmcend
+ \bool_if:NF \l__tag_graphic_artifact_bool
+ {
+ \tagstructend
+ \__tag_tikz_savepos:e {__tag_graphic_\int_use:N \g__tag_graphic_int}
+ }
+ \tag_mc_begin_pop:n{}
+ }
+
+\tikzset
+ {
+ every~picture/.style=
+ {
+ artifact,
+ execute~at~begin~picture=\__tag_graphic_tikz_begin_picture:,
+ execute~at~end~picture=\__tag_graphic_tikz_end_picture:
+ }
+ }
+\AddToHook{env/tikzpicture/before}{\leavevmode}
+
+\tikzset
+ {
+ alt/.code=
+ {
+ \bool_set_false:N \l__tag_graphic_artifact_bool
+ \tl_set:Nn \l__tag_graphic_alt_tl{#1}
+ }
+ }
+\tikzset
+ {
+ artifact/.code=
+ \bool_set_true:N \l__tag_graphic_artifact_bool
+ }
+
+\ExplSyntaxOff
+
+
+
\endinput
diff --git a/Master/texmf-dist/tex/latex/tblr-extras/tblr-extras-dev.sty b/Master/texmf-dist/tex/latex/tblr-extras/tblr-extras-dev.sty
deleted file mode 100644
index 45c58d081a0..00000000000
--- a/Master/texmf-dist/tex/latex/tblr-extras/tblr-extras-dev.sty
+++ /dev/null
@@ -1,242 +0,0 @@
-% -----------------------------------------------------------------------
-%%% tblr-extras: Extra libraries for tabularray package.
-%%% Version : 1.2 - 2024-05-30
-%%% Copyright : 2024 (c) Manuel E. Merino <manuel.merino.pe@gmail.com>
-%%% License : The LaTeX Project Public License 1.3c
-% -----------------------------------------------------------------------
-%%% LPPL 1.3c Notice: ---------------------------------------------------
-% 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 Manuel E. Merino
-% -----------------------------------------------------------------------
-\NeedsTeXFormat{LaTeX2e}[2018-04-01]
-\ProvidesPackage{tblr-extras-dev}[2024/05/30 package tblr-extras]
-\RequirePackage{tabularray}
-%% ----------------------------------------------------------------------
-%% TblrLibrary caption - Use caption package to typeset tabularray tall
-%% and long tabulars captions.
-%% This stuff needs to be ported to expl3 soon.
-\ExplSyntaxOn
-\prg_generate_conditional_variant:Nnn \tl_if_empty:n { e } { TF }
-\let \IfTokenListEmpty = \tl_if_empty:eTF
-\let \IfBoolFalse = \bool_if:NF
-\let \IfBoolTF = \bool_if:NTF
-\bool_new:N \l__tblrextras_table_title_below_bool
-\bool_set_false:N \l__tblrextras_table_title_below_bool
-\NewTblrLibrary{caption}
-{%
- \RequirePackage{caption}
- %% Check if a KomaClass is loaded and issue a warning for caption position setup
- \@ifundefined{KOMAClassName}
- {}
- {\PackageWarningNoLine{tblr-extras}{KOMAScript class detected. Setup caption position using 'captions=option'}}
- %%% Presetup
- \NewDocumentCommand{\TblrCaptionBelow}{}{\bool_set_true:N \l__tblrextras_table_title_below_bool}
- \NewDocumentCommand{\TblrCaptionAbove}{}{\bool_set_false:N \l__tblrextras_table_title_below_bool}
- \SetTblrOuter[talltblr,longtblr]{headsep=0pt}
- %%%%%%%%%% TEMPLATES
- \DefTblrTemplate{firsthead}{default}{
- \IfBoolTF \l__tblr_table_no_label_bool
- % True NoLabel
- { }
- % False NoLabel
- {
- \IfBoolTF \l__tblrextras_table_title_below_bool
- % Cap Below
- { }
- % Cap Above (default)
- {
- \addtocounter{table}{-1}
- \captionsetup{type=table}
- \IfTokenListEmpty{\InsertTblrText{entry}}{
- \caption{\InsertTblrText{caption}}
- \UseTblrTemplate{contfoot}{default}
- }{
- \caption[\InsertTblrText{entry}]{\InsertTblrText{caption}}
- }
- }
- }
- } % END FIRSTHEAD
- \DefTblrTemplate{middlehead}{default}{
- \IfBoolTF \l__tblr_table_no_label_bool
- % True NoLabel
- { \UseTblrTemplate{conthead}{default} \vspace{4pt} }
- % False NoLabel
- {
- \IfBoolTF \l__tblrextras_table_title_below_bool
- % Cap Below
- { \UseTblrTemplate{conthead}{default} \vspace{4pt} }
- % Cap Above (default)
- {
- \addtocounter{table}{-1}
- \captionsetup{type=table}
- \caption[]{\InsertTblrText{caption}~ \UseTblrTemplate{conthead-text}{default}}
- }
- }
- }% END MIDDLEHEAD
- \DefTblrTemplate{lasthead}{default}{
- \IfBoolTF \l__tblr_table_no_label_bool
- % True NoLabel
- { \UseTblrTemplate{conthead}{default} \vspace{4pt} }
- % False NoLabel
- {
- \IfBoolTF \l__tblrextras_table_title_below_bool
- % Cap Below
- { \UseTblrTemplate{conthead}{default} \vspace{4pt} }
- % Cap Above (default)
- {
- \addtocounter{table}{-1}
- \captionsetup{type=table}
- \caption[]{\InsertTblrText{caption}~ \UseTblrTemplate{conthead-text}{default}}
- }
- }
- }% END LASTHEAD
- \DefTblrTemplate{firstfoot}{default}{
- \IfBoolTF \l__tblr_table_no_label_bool
- % True NoLabel
- { \UseTblrTemplate{contfoot}{default} }
- % False NoLabel
- {
- \IfBoolTF \l__tblrextras_table_title_below_bool
- % Cap Below
- {
- \addtocounter{table}{-1}
- \captionsetup{type=table}
- \caption[]{\InsertTblrText{caption}}
- \UseTblrTemplate{contfoot}{default}
- }
- % Cap Above (default)
- {
- \UseTblrTemplate{contfoot}{default}
- }
- }
- }% END FIRSTFOOT
- \DefTblrTemplate{middlefoot}{default}{
- \IfBoolTF \l__tblr_table_no_label_bool
- % True NoLabel
- { \UseTblrTemplate{contfoot}{default} }
- % False NoLabel
- {
- \IfBoolTF \l__tblrextras_table_title_below_bool
- % Cap Below
- {
- \addtocounter{table}{-1}
- \captionsetup{type=table}
- \caption[]{\InsertTblrText{caption}}
- \UseTblrTemplate{contfoot}{default}
- }
- % Cap Above (default)
- {
- \UseTblrTemplate{contfoot}{default}
- }
- }
- }% END MIDDLEFOOT
- \DefTblrTemplate{lastfoot}{default}{
- \IfBoolTF \l__tblr_table_no_label_bool
- % True NoLabel
- {
- \UseTblrTemplate{note}{default}
- \UseTblrTemplate{remark}{default}
- }
- % False NoLabel
- {
- \IfBoolTF \l__tblrextras_table_title_below_bool
- % Cap Below
- {
- \UseTblrTemplate{note}{default}
- \UseTblrTemplate{remark}{default}
- \addtocounter{table}{-1}
- \captionsetup{type=table} \IfTokenListEmpty{\InsertTblrText{entry}}{
- \caption{\InsertTblrText{caption}}
- }{
- \caption[\InsertTblrText{entry}]{\InsertTblrText{caption}}
- }
- }
- % Cap Above (default)
- {
- \UseTblrTemplate{note}{default}
- \UseTblrTemplate{remark}{default}
- }
- }
- }% END LASTFOOT
- \SetTblrTemplate{caption-lot}{empty}
-}
-\ExplSyntaxOff
-%% ----------------------------------------------------------------------
-%% TblrLibrary babel - Translate contfoot and conthead to current babel/polyglossia
-%% language. Supports: ngerman, french, spanish, russian and ukrainian translations.
-%% Check engine
-\newif\if@unicode@engine
-\ifdefined\luatexversion
- \@unicode@enginetrue
-\else\ifdefined\XeTeXrevision
- \@unicode@enginetrue
-\fi\fi
-\NewTblrLibrary{babel}
-{%
- \AddToHook{begindocument/before}{%
- \@ifpackageloaded{babel}{}{%
- \@ifpackageloaded{polyglossia}{}{%
- \RequirePackage{babel}
- }
- }
- \ifdefined\captionsspanish
- \addto\captionsspanish{%
- \DefTblrTemplate{contfoot-text}{default}{Continúa en la página siguiente}%
- \DefTblrTemplate{conthead-text}{default}{(Continuación)}%
- }
- \fi
- \ifdefined\captionsngerman
- \addto\captionsngerman{%
- \DefTblrTemplate{contfoot-text}{default}{Fortsetzung auf der nächsten Seite}%
- \DefTblrTemplate{conthead-text}{default}{(Fortsetzung)}%
- }
- \fi
- \ifdefined\captionsgerman
- \addto\captionsgerman{%
- \DefTblrTemplate{contfoot-text}{default}{Fortsetzung auf der nächsten Seite}%
- \DefTblrTemplate{conthead-text}{default}{(Fortsetzung)}%
- }
- \fi
- \ifdefined\captionsfrench
- \addto\captionsfrench{%
- \DefTblrTemplate{contfoot-text}{default}{Suite à la page suivante}%
- \DefTblrTemplate{conthead-text}{default}{(Suite)}%
- }
- \fi
- \ifdefined\captionsrussian
- \if@unicode@engine
- \addto\captionsrussian{%
- \DefTblrTemplate{contfoot-text}{default}{Продолжение на следующей странице}%
- \DefTblrTemplate{conthead-text}{default}{(продолжение)}%
- }
- \else
- \addto\captionsrussian{%
- \DefTblrTemplate{contfoot-text}{default}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre\ \cyrn\cyra\ \cyrs\cyrl\cyre\cyrd\cyru\cyryu\cyrshch\cyre\cyrishrt\ \cyrs\cyrt\cyrr\cyra\cyrn\cyri\cyrc\cyre}%
- \DefTblrTemplate{conthead-text}{default}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre)}%
- }
- \fi
- \fi
- \ifdefined\captionsukrainian
- \if@unicode@engine
- \addto\captionsukrainian{%
- \DefTblrTemplate{contfoot-text}{default}{Продовження на наступній сторінці}%
- \DefTblrTemplate{conthead-text}{default}{(продовження)}%
- }
- \else
- \addto\captionsukrainian{%
- \DefTblrTemplate{contfoot-text}{default}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya\ \cyrn\cyra\ \cyrn\cyra\cyrs\cyrt\cyru\cyrp\cyrn\cyrii\cyrishrt\ \cyrs\cyrt\cyro\cyrr\cyrii\cyrn\cyrc\cyrii}%
- \DefTblrTemplate{conthead-text}{default}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya)}%
- }
- \fi
- \fi
- }
-}
diff --git a/Master/texmf-dist/tex/latex/tblr-extras/tblr-extras.sty b/Master/texmf-dist/tex/latex/tblr-extras/tblr-extras.sty
index 6fa4d7511bc..bbc181a00ec 100644
--- a/Master/texmf-dist/tex/latex/tblr-extras/tblr-extras.sty
+++ b/Master/texmf-dist/tex/latex/tblr-extras/tblr-extras.sty
@@ -1,6 +1,6 @@
% -----------------------------------------------------------------------
%%% tblr-extras: Extra libraries for tabularray package.
-%%% Version : 1.2 - 2024-06-11
+%%% Version : 1.3 - 2024-06-25
%%% Copyright : 2024 (c) Manuel E. Merino <manuel.merino.pe@gmail.com>
%%% License : The LaTeX Project Public License 1.3c
% -----------------------------------------------------------------------
@@ -18,7 +18,7 @@
% The Current Maintainer of this work is Manuel E. Merino
% -----------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}[2018-04-01]
-\ProvidesPackage{tblr-extras-dev}[2024/05/30 package tblr-extras]
+\ProvidesPackage{tblr-extras}[2024/06/25 package tblr-extras]
\RequirePackage{tabularray}
%% ----------------------------------------------------------------------
%% TblrLibrary caption - Use caption package to typeset tabularray tall
@@ -58,7 +58,6 @@
\captionsetup{type=table}
\IfTokenListEmpty{\InsertTblrText{entry}}{
\caption{\InsertTblrText{caption}}
- \UseTblrTemplate{contfoot}{default}
}{
\caption[\InsertTblrText{entry}]{\InsertTblrText{caption}}
}
@@ -172,7 +171,9 @@
\ExplSyntaxOff
%% ----------------------------------------------------------------------
%% TblrLibrary babel - Translate contfoot and conthead to current babel/polyglossia
-%% language. Supports: ngerman, french, spanish, russian and ukrainian translations.
+%% language.
+% Supports: ngerman, french, spanish, russian, romanian, galician, esperanto, danish, catalan, danish, afrikaans, italian, portuguese and ukrainian translations.
+%%%%%
%% Check engine
\newif\if@unicode@engine
\ifdefined\luatexversion
@@ -188,65 +189,101 @@
\RequirePackage{babel}
}
}
+ \ifdefined\captionsromanian
+ \addto\captionsromanian{%
+ \renewcommand{\tblrcontfootname}{Continuare pe pagina următoare}%
+ \renewcommand{\tblrcontheadname}{(Continuare)}%
+ }
+ \fi
+ \ifdefined\captionsgalician
+ \addto\captionsgalician{%
+ \renewcommand{\tblrcontfootname}{Continuación na seguinte páxina}%
+ \renewcommand{\tblrcontheadname}{(Continuación)}%
+ }
+ \fi
+ \ifdefined\captionsesperanto
+ \addto\captionsesperanto{%
+ \renewcommand{\tblrcontfootname}{Daŭrigo sur la sekva paĝo}%
+ \renewcommand{\tblrcontheadname}{(Daŭrigo)}%
+ }
+ \fi
+ \ifdefined\captionsdanish
+ \addto\captionsdanish{%
+ \renewcommand{\tblrcontfootname}{Fortsættelse på næste side}%
+ \renewcommand{\tblrcontheadname}{(Fortsættelse)}%
+ }
+ \fi
+ \ifdefined\captionscatalan
+ \addto\captionscatalan{%
+ \renewcommand{\tblrcontfootname}{Continuació a la pàgina següent}%
+ \renewcommand{\tblrcontheadname}{(Continuació)}%
+ }
+ \fi
+ \ifdefined\captionsdutch
+ \addto\captionsdutch{%
+ \renewcommand{\tblrcontfootname}{Vervolg op de volgende pagina}%
+ \renewcommand{\tblrcontheadname}{(Vervolg)}%
+ }
+ \fi
+ \ifdefined\captionsafrikaans
+ \addto\captionsafrikaans{%
+ \renewcommand{\tblrcontfootname}{Vervolg op die volgende bladsy}%
+ \renewcommand{\tblrcontheadname}{(Vervolg)}%
+ }
+ \fi
\ifdefined\captionsitalian
\addto\captionsitalian{%
- \DefTblrTemplate{contfoot-text}{default}{Continua alla pagina successiva}%
- \DefTblrTemplate{conthead-text}{default}{(Continua)}%
+ \renewcommand{\tblrcontfootname}{Continua alla pagina successiva}%
+ \renewcommand{\tblrcontheadname}{(Continuazione)}%
}
\fi
\ifdefined\captionsportuguese
\addto\captionsportuguese{%
- \DefTblrTemplate{contfoot-text}{default}{Continua na próxima página}%
- \DefTblrTemplate{conthead-text}{default}{(Continuação)}%
+ \renewcommand{\tblrcontfootname}{Continua na próxima página}%
+ \renewcommand{\tblrcontheadname}{(Continuação)}%
}
\fi
\ifdefined\captionsspanish
\addto\captionsspanish{%
- \DefTblrTemplate{contfoot-text}{default}{Continúa en la página siguiente}%
- \DefTblrTemplate{conthead-text}{default}{(Continuación)}%
+ \renewcommand{\tblrcontfootname}{Continúa en la siguiente página}%
+ \renewcommand{\tblrcontheadname}{(Continuación)}%
}
\fi
\ifdefined\captionsngerman
\addto\captionsngerman{%
- \DefTblrTemplate{contfoot-text}{default}{Fortsetzung auf der nächsten Seite}%
- \DefTblrTemplate{conthead-text}{default}{(Fortsetzung)}%
- }
- \fi
- \ifdefined\captionsgerman
- \addto\captionsgerman{%
- \DefTblrTemplate{contfoot-text}{default}{Fortsetzung auf der nächsten Seite}%
- \DefTblrTemplate{conthead-text}{default}{(Fortsetzung)}%
+ \renewcommand{\tblrcontfootname}{Fortsetzung auf der nächsten Seite}%
+ \renewcommand{\tblrcontheadname}{(Fortsetzung)}%
}
\fi
\ifdefined\captionsfrench
\addto\captionsfrench{%
- \DefTblrTemplate{contfoot-text}{default}{Suite à la page suivante}%
- \DefTblrTemplate{conthead-text}{default}{(Suite)}%
+ \renewcommand{\tblrcontfootname}{Suite à la page suivante}%
+ \renewcommand{\tblrcontheadname}{(Suite)}%
}
\fi
\ifdefined\captionsrussian
\if@unicode@engine
\addto\captionsrussian{%
- \DefTblrTemplate{contfoot-text}{default}{Продолжение на следующей странице}%
- \DefTblrTemplate{conthead-text}{default}{(продолжение)}%
+ \renewcommand{\tblrcontfootname}{Продолжение на следующей странице}%
+ \renewcommand{\tblrcontheadname}{(продолжение)}%
}
\else
\addto\captionsrussian{%
- \DefTblrTemplate{contfoot-text}{default}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre\ \cyrn\cyra\ \cyrs\cyrl\cyre\cyrd\cyru\cyryu\cyrshch\cyre\cyrishrt\ \cyrs\cyrt\cyrr\cyra\cyrn\cyri\cyrc\cyre}%
- \DefTblrTemplate{conthead-text}{default}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre)}%
+ \renewcommand{\tblrcontfootname}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre\ \cyrn\cyra\ \cyrs\cyrl\cyre\cyrd\cyru\cyryu\cyrshch\cyre\cyrishrt\ \cyrs\cyrt\cyrr\cyra\cyrn\cyri\cyrc\cyre}%
+ \renewcommand{\tblrcontheadname}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrl\cyrzh\cyre\cyrn\cyri\cyre)}%
}
\fi
\fi
\ifdefined\captionsukrainian
\if@unicode@engine
\addto\captionsukrainian{%
- \DefTblrTemplate{contfoot-text}{default}{Продовження на наступній сторінці}%
- \DefTblrTemplate{conthead-text}{default}{(продовження)}%
+ \renewcommand{\tblrcontfootname}{Продовження на наступній сторінці}%
+ \renewcommand{\tblrcontheadname}{(продовження)}%
}
\else
\addto\captionsukrainian{%
- \DefTblrTemplate{contfoot-text}{default}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya\ \cyrn\cyra\ \cyrn\cyra\cyrs\cyrt\cyru\cyrp\cyrn\cyrii\cyrishrt\ \cyrs\cyrt\cyro\cyrr\cyrii\cyrn\cyrc\cyrii}%
- \DefTblrTemplate{conthead-text}{default}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya)}%
+ \renewcommand{\tblrcontfootname}{\cyr\CYRP\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya\ \cyrn\cyra\ \cyrn\cyra\cyrs\cyrt\cyru\cyrp\cyrn\cyrii\cyrishrt\ \cyrs\cyrt\cyro\cyrr\cyrii\cyrn\cyrc\cyrii}%
+ \renewcommand{\tblrcontheadname}{(\cyr\cyrp\cyrr\cyro\cyrd\cyro\cyrv\cyrzh\cyre\cyrn\cyrn\cyrya)}%
}
\fi
\fi
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbbreakable.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbbreakable.code.tex
index 90ece8e5a5a..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.2.0 (2024/01/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.2.0}
+\tcb@set@library@version{6.4.1}
\RequirePackage{pdfcol}
\pdfcolInitStack{tcb@breakable}
@@ -82,6 +82,7 @@
\reserved@a%
\@endpefalse%
\global\@newlistfalse%
+ \tcb@set@savebox@construction@true%
\let\tcbbreak\tcb@@break%
\iftcb@usecolorstack%
\pdfcolSwitchStack{tcb@breakable}%
@@ -551,7 +552,7 @@
\let\tcb@before@middle=\@empty%
\let\tcb@before@last=\@empty%
\iftcb@multicol%
- \long\def\tcb@after@first{\par}% using \columnbreak here kills multicols' algortihm sometimes
+ \long\def\tcb@after@first{\par}% using \columnbreak here kills multicols' algorithm sometimes
\long\def\tcb@after@middle{\par\vfill}%
\else%
\long\def\tcb@after@first{\par\pagebreak\tcb@enlbreak@next}%
@@ -827,7 +828,7 @@
\csname tcb@break@ch@\tcb@split@state\endcsname%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
\tcb@extensions@preframe%
% draw frame and interior
\tcb@adraw@frame%
@@ -842,7 +843,7 @@
\tcb@tdraw@upper%
\tcb@tdraw@lower%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ \end{tcb@drawing}%
\endgroup%
}
@@ -857,7 +858,7 @@
\csname tcb@break@ch@\tcb@split@state\endcsname%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
\tcb@extensions@preframe%
% draw frame and interior
\tcb@adraw@frame%
@@ -868,7 +869,7 @@
\tcb@tdraw@title%
\tcb@tdraw@upper%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ \end{tcb@drawing}%
\endgroup%
}
@@ -883,7 +884,7 @@
\csname tcb@break@ch@\tcb@split@state\endcsname%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
\tcb@extensions@preframe%
% draw frame and interior
\tcb@adraw@frame%
@@ -897,7 +898,7 @@
\tcb@tdraw@title%
\tcb@tdraw@lower%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ \end{tcb@drawing}%
\endgroup%
}
@@ -912,7 +913,7 @@
\csname tcb@break@ch@\tcb@split@state\endcsname%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
\tcb@extensions@preframe%
% draw frame and interior
\tcb@adraw@frame%
@@ -923,7 +924,7 @@
\tcb@tdraw@title%
\tcb@tdraw@lower%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ \end{tcb@drawing}%
\endgroup%
}
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbdocumentation.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbdocumentation.code.tex
index 3eff9746f86..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.2.0 (2024/01/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.2.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
@@ -199,10 +199,6 @@
keywords bold/true/.code={\let\tcb@doc@bfseries\bfseries},
keywords bold/false/.code={\let\tcb@doc@bfseries\mdseries},
doc key prefix/.store in=\kvtcb@doc@keyprefix,
- index key formatter/.code={\let\kvtcb@doc@format@key=#1},
- index keys formatter/.code={\let\kvtcb@doc@format@keys=#1},
- index key formatter/.default=\@firstofone,
- index keys formatter/.default=\@firstofone,
}
@@ -232,7 +228,7 @@
value=value,values=Values}},
}
-\AtBeginDocument{%
+\AtBeginDocument[tcolorbox]{%
\csname tcb@doc@index@\idx@format\endcsname%
\hypersetup{
citecolor=\kvtcb@colhyper,
@@ -337,6 +333,43 @@
\ExplSyntaxOn
+\tcbset{
+ index~key~formatter / .code =
+ {
+ \__tcobox_store_formatter_in:nN {#1} \kvtcb@doc@format@key
+ },
+ index~key~formatter / .default = \use:n,
+ index~keys~formatter / .code =
+ {
+ \__tcobox_store_formatter_in:nN {#1} \kvtcb@doc@format@keys
+ },
+ index~keys~formatter / .default = \use:n,
+ page~ref~formatter / .code =
+ {
+ \__tcobox_store_formatter_in:nN {#1} \kvtcb@doc@format@page
+ },
+ page~ref~formatter / .default = \use:n,
+}
+
+
+\cs_if_exist:NF \__tcobox_store_formatter_in:nN
+ {
+ \cs_new_protected:Npn \__tcobox_store_formatter_in:nN #1#2
+ {
+ \__tcobox_if_single_cs:nTF {#1}
+ { \cs_set_eq:NN #2 #1 }
+ {
+ \tcb@error
+ {
+ Invalid~formatter~ "\tl_to_str:n {#1}" ~passed~to \MessageBreak
+ "\pgfkeyscurrentkey". \MessageBreak
+ A~formatter~should~be~a~single~command~taking~one \MessageBreak
+ mandatory~argument
+ }
+ }
+ }
+ }
+
\cs_new_nopar:Npn \__tcobox_new_bool_key:Nn #1 #2
{
@@ -879,7 +912,7 @@
\IfBooleanTF{#2}{}{%
\ifnum\getpagerefnumber{#1:#3}=\thepage\relax%
\else%
- \textsuperscript{{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char213}%
+ \kvtcb@doc@format@page{{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char213}%
\,\kvtcb@text@pageshort\,\pageref*{#1:#3}}%
\fi}}%
}
@@ -889,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}}}%
@@ -1027,12 +1069,11 @@
doc key prefix={/},
index key formatter,
index keys formatter,
+ page ref formatter=\textsuperscript,
}
% 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 0bfa994f68e..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.2.0 (2024/01/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.2.0}
+\tcb@set@library@version{6.4.1}
\tcbuselibrary{pro@cessing}
@@ -111,14 +111,14 @@
\def\tcbexternal@pdfmissing@warning{%
\tcb@warning{File '\tcbexternal@job@pdf' missing.
- Compilation error or shell-escape wasn't enabled or a subdirectory could'nt be generated}%
+ Compilation error or shell-escape wasn't enabled or a subdirectory couldn't be generated}%
\message{Load '\tcbexternal@job@source' instead}%
\tcbexternal@inputsource%
}
\def\tcbexternal@pdfmissing@error{%
\tcb@error{File '\tcbexternal@job@pdf' missing.
- Compilation error or shell-escape wasn't enabled or a subdirectory could'nt be generated}{}%
+ Compilation error or shell-escape wasn't enabled or a subdirectory couldn't be generated}{}%
}
\def\tcbexternal@inputpdf{%
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbfitting.code.tex
index 0e34e15ad5a..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.2.0 (2024/01/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.2.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 b3edf95636c..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.2.0 (2024/01/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.2.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 195076eee16..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.2.0 (2024/01/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.2.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 48241a94d57..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.2.0 (2024/01/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.2.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 0c9b2b7e8c2..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.2.0 (2024/01/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.2.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 81180a8eb89..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.2.0 (2024/01/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.2.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 cae9e8d7070..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.2.0 (2024/01/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.2.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 49abfc651a3..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.2.0 (2024/01/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.2.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 ce0ae430757..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.2.0 (2024/01/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.2.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 35510300920..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.2.0 (2024/01/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.2.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 3fbad785842..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.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcbskins.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
@@ -17,15 +17,10 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{6.2.0}
+\tcb@set@library@version{6.4.1}
-\RequirePackage{tikz}[2010/10/13]
\RequirePackage{tikzfill.image}
-\newenvironment{tikzpicture@tcb@hooked}{%
- \edef\tcb@tikzpicture@begin{\noexpand\tikzpicture[\expandonce\tcb@tikz@option@hook]}%
- \tcb@tikzpicture@begin\tcb@tikz@begin@hook}{\tcb@tikz@end@hook\endtikzpicture}
-
\def\tcb@creategeonodes@true{%
\begin{scope}[every node/.style={line width=0mm,inner sep=0mm,outer sep=0mm,draw=none,fill=none,rectangle}]
\node[name=frame,at={(0,0)},above right,minimum width=\tcb@width,minimum height=\tcb@height]{};
@@ -438,7 +433,7 @@
\tcbset{%
base@unbroken/.style={%
- clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ clear@spec,geometry nodes,%
set@outerboundary=\tcb@boundaryframe@standard,%
shape@of@skin=unbroken,%
set@extensions@preframe={\kvtcb@shadow},%
@@ -446,7 +441,7 @@
set@extensions@final={\tcb@apply@finish}%
},%
base@first/.style={%
- clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ clear@spec,geometry nodes,%
set@outerboundary=\tcb@boundaryframe@pathfirst,%
shape@of@skin=first,%
set@extensions@preframe={\kvtcb@shadow},%
@@ -454,7 +449,7 @@
set@extensions@final={\tcb@apply@finish}%
},%
base@middle/.style={%
- clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ clear@spec,geometry nodes,%
set@outerboundary=\tcb@boundaryframe@pathmiddle,%
shape@of@skin=middle,%
set@extensions@preframe={\kvtcb@shadow},%
@@ -462,7 +457,7 @@
set@extensions@final={\tcb@apply@finish}%
},%
base@last/.style={%
- clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
+ clear@spec,geometry nodes,%
set@outerboundary=\tcb@boundaryframe@pathlast,%
shape@of@skin=last,%
set@extensions@preframe={\kvtcb@shadow},%
@@ -885,7 +880,7 @@
segmentation code={\tcb@drawspec@widgetsegment},%
skin first=widgetmiddle,skin middle=widgetmiddle,skin last=widgetlast}
-\tcb@new@skin{spartan}{graphical environment=tikzpicture@tcb@hooked,geometry nodes=true,shape@of@skin=unbroken,%
+\tcb@new@skin{spartan}{geometry nodes=true,shape@of@skin=unbroken,%
set@extensions@preframe=,set@extensions@postframe={\tcb@apply@underlay},set@extensions@final=,%
frame engine=spartan,interior titled engine=spartan,interior engine=spartan,title engine=spartan,segmentation engine=spartan,%
set@outerboundary=\tcb@boundaryframe@standard,%
@@ -893,7 +888,7 @@
\tcbset{spartan/.style={skin=spartan}}
-\tcb@new@skin{draft}{clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,shape@of@skin=unbroken,%
+\tcb@new@skin{draft}{clear@spec,geometry nodes,shape@of@skin=unbroken,%
frame engine=empty,interior titled engine=empty,interior engine=empty,segmentation engine=path,title empty,%
segmentation style={draw=black,dashed},
set@extensions@postframe=,
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbskinsjigsaw.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbskinsjigsaw.code.tex
index 551971a0df2..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.2.0 (2024/01/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.2.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 f53eda79a52..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.2.0 (2024/01/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.2.0}
+\tcb@set@library@version{6.4.1}
\RequirePackage{amsmath}
@@ -138,7 +138,7 @@
% insert box with name and number
\mode_leave_vertical:
\box_use_drop:N \l__tcobox_tmpa_box
- % insert formated title
+ % insert formatted title
\group_begin:
\__tcobox_theo_format_description:n{#3}
\group_end:
@@ -260,11 +260,31 @@
description~font/.default =,
description~formatter/.code =
{
- \cs_set_eq:NN \__tcobox_theo_format_description:n #1
+ \__tcobox_store_formatter_in:nN {#1} \__tcobox_theo_format_description:n
},
description~formatter/.default = \__tcobox_theo_format_description_standard:n,
}
+
+\cs_if_exist:NF \__tcobox_store_formatter_in:nN
+ {
+ \cs_new_protected:Npn \__tcobox_store_formatter_in:nN #1#2
+ {
+ \__tcobox_if_single_cs:nTF {#1}
+ { \cs_set_eq:NN #2 #1 }
+ {
+ \tcb@error
+ {
+ Invalid~formatter~ "\tl_to_str:n {#1}" ~passed~to \MessageBreak
+ "\pgfkeyscurrentkey". \MessageBreak
+ A~formatter~should~be~a~single~command~taking~one \MessageBreak
+ mandatory~argument
+ }
+ }
+ }
+ }
+
+
\ExplSyntaxOff
@@ -298,16 +318,16 @@
ams equation*/.style={ams equation* upper,ams equation* lower},%
ams align upper/.style={before upper*=\tcb@hack@amsmath\align,after upper*=\endalign},%
ams align lower/.style={before lower*=\tcb@hack@amsmath\align,after lower*=\endalign},%
- ams align/.style={ams align upper,ams align lower},%
+ ams align/.style={ams align upper},%
ams align* upper/.style={before upper*=\tcb@hack@amsmath\csname align*\endcsname,after upper*=\endalign},%
ams align* lower/.style={before lower*=\tcb@hack@amsmath\csname align*\endcsname,after lower*=\endalign},%
- ams align*/.style={ams align* upper,ams align* lower},%
+ ams align*/.style={ams align* upper},%
ams gather upper/.style={before upper*=\tcb@hack@amsmath\gather,after upper*=\endgather},%
ams gather lower/.style={before lower*=\tcb@hack@amsmath\gather,after lower*=\endgather},%
- ams gather/.style={ams gather upper,ams gather lower},%
+ ams gather/.style={ams gather upper},%
ams gather* upper/.style={before upper*=\tcb@hack@amsmath\csname gather*\endcsname,after upper*=\endgather},%
ams gather* lower/.style={before lower*=\tcb@hack@amsmath\csname gather*\endcsname,after lower*=\endgather},%
- ams gather*/.style={ams gather* upper,ams gather* lower},%
+ ams gather*/.style={ams gather* upper},%
ams nodisplayskip upper/.style={before upper=\vskip-\abovedisplayskip},%
ams nodisplayskip lower/.style={before lower=\vskip-\abovedisplayskip},%
ams nodisplayskip/.style={ams nodisplayskip upper,ams nodisplayskip lower},%
diff --git a/Master/texmf-dist/tex/latex/tcolorbox/tcbvignette.code.tex b/Master/texmf-dist/tex/latex/tcolorbox/tcbvignette.code.tex
index e177bb33d49..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.2.0 (2024/01/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.2.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 cf60ef07315..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.2.0 (2024/01/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.2.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 be2dc7e19be..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.2.0 (2024/01/10)
+%% The LaTeX package tcolorbox - version 6.4.1 (2024/10/22)
%% tcolorbox.sty: Text color boxes
%%
%% -------------------------------------------------------------------------------------------
@@ -17,11 +17,12 @@
%%
%% This work consists of all files listed in README
%%
-\NeedsTeXFormat{LaTeX2e}[2021-11-15]
-\ProvidesPackage{tcolorbox}[2024/01/10 version 6.2.0 text color boxes]
-\def\tcb@version{6.2.0}
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
+\ProvidesPackage{tcolorbox}[2024/10/22 version 6.4.1 text color boxes]
+\def\tcb@version{6.4.1}
-\RequirePackage{pgf}[2008/01/15]
+%\RequirePackage{pgf}[2008/01/15]
+\RequirePackage{tikz}[2023/01/15]
\RequirePackage{verbatim}[2003/08/22]
\RequirePackage{environ}[2013/04/01]
\RequirePackage{etoolbox}[2011/01/03]
@@ -57,6 +58,7 @@
\ExplSyntaxOn
\bool_new:N \l__tcobox_prevent_init_overwrite_bool
+\bool_new:N \l__tcobox_savebox_construction_bool
\box_new:N \l__tcobox_tmpa_box
\dim_new:N \l__tcobox_tmpa_dim
\fp_new:N \l__tcobox_tmpa_fp
@@ -71,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}
@@ -561,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/.store in=\kvtcb@graphenv,
%
frame engine/.is choice,
frame engine/standard/.style={frame code=\tcb@drawframe@standard},
@@ -930,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
@@ -937,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:
}
}
@@ -966,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}} },
@@ -1003,22 +1016,13 @@
IfBooleanF/.code~n~args={2}{\IfBooleanF{#1}{\pgfkeysalso{#2}}},
}
-\IfFormatAtLeastTF{2023-06-01}
- {
- \def\tcb@set@parbox@indent@{
- \exp_args:Nne \hook_gput_next_code:nn {para/begin}
- { \__tcobox_set_parbox_indent:n { \thetcolorboxnumber } }
- \let\tcb@set@parbox@indent\@empty
- }
- }
- {
- % Note: To be removed in future
- \def\tcb@set@parbox@indent@{
- \vspace{-\parskip}
- \noindent
- \let\tcb@set@parbox@indent\@empty
- }
- }
+
+\def\tcb@set@parbox@indent@{
+ \exp_args:Nne \hook_gput_next_code:nn {para/begin}
+ { \__tcobox_set_parbox_indent:n { \thetcolorboxnumber } }
+ \let\tcb@set@parbox@indent\@empty
+}
+
\cs_new_protected:Npn \__tcobox_set_parbox_indent:n #1
{
@@ -1027,12 +1031,20 @@
{ \int_compare_p:nNn { #1 } = { \thetcolorboxnumber } }
% and if inside a "tcb@savebox" env (upper or lower part is non-empty),
% hence not at the time of using saved \tcb@upperbox or \tcb@lowerbox
- { \cs_if_exist_p:N \tcbbreak }
+ { \l__tcobox_savebox_construction_bool }
{
\OmitIndent
}
}
+
+\def\tcb@set@savebox@construction@true
+ {
+ \bool_set_true:N \l__tcobox_savebox_construction_bool
+ }
+\bool_set_false:N \l__tcobox_savebox_construction_bool
+
+
\ExplSyntaxOff
\def\tcb@parbox@true@indent{}%
@@ -1045,6 +1057,7 @@
\let\tcb@parboxrestore=\@parboxrestore
\def\tcb@parbox@false@settings{%
+ \@nobreakfalse%
\let\par\@@par%
\linewidth\hsize%
\@totalleftmargin\z@%
@@ -1082,6 +1095,7 @@
\reserved@a
\@endpefalse%
\global\@newlistfalse%
+ \tcb@set@savebox@construction@true%
\let\tcbbreak\@@par%
\csname tcb@parbox@use@\kvtcb@parbox\endcsname%
\tcb@minipage{#2}%
@@ -1100,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}%
@@ -1591,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%
}%
}
@@ -2025,17 +2039,44 @@
\fi%
}
-\def\tcb@drawing@env@begin{%
- \csname tcb@before@\tcb@split@state\endcsname%
- \begin{\kvtcb@graphenv}%
- \tcb@bbdraw%
- \tcb@apply@graph@patches%
-}
-\def\tcb@drawing@env@end{%
- \end{\kvtcb@graphenv}%
- \csname tcb@after@\tcb@split@state\endcsname%
-}
+\let\tcb@tikz@option@hook\@empty
+\let\tcb@tikz@begin@hook\@empty
+\let\tcb@tikz@end@hook\@empty
+
+\ExplSyntaxOn
+
+\exp_args_generate:n {nNo}
+
+\NewSocket{tagsupport/tcb/drawing/begin}{0}
+\NewSocket{tagsupport/tcb/drawing/end}{0}
+\NewSocketPlug{tagsupport/tcb/drawing/begin}{suspend}
+ {\tag_mc_end_push:\tag_mc_begin:n{artifact}}
+\NewSocketPlug{tagsupport/tcb/drawing/end}{resume}
+ {\tag_mc_end:\tag_mc_begin_pop:n{}}
+\AssignSocketPlug{tagsupport/tcb/drawing/begin}{suspend}
+\AssignSocketPlug{tagsupport/tcb/drawing/end}{resume}
+
+\NewDocumentEnvironment{ tcb@drawing }{ }
+ {
+ \use:c{ tcb@before@\tcb@split@state }
+ \exp_args:NnNo \begin{tikzpicture}[\tcb@tikz@option@hook]
+ \UseTaggingSocket{tcb/drawing/begin}
+ \SuspendTagging{tcb/drawing}
+ \tcb@tikz@begin@hook
+ \tcb@bbdraw
+ \tcb@apply@graph@patches
+ }
+ {
+ \tcb@tikz@end@hook
+ \ResumeTagging{tcb/drawing}
+ \UseTaggingSocket{tcb/drawing/end}
+ \end{tikzpicture}
+ \use:c{ tcb@after@\tcb@split@state }
+ }
+
+\ExplSyntaxOff
+
\def\tcb@set@normal@unbroken@beforeafter{%
\let\tcb@before@unbroken=\kvtcb@beforebox%
@@ -2077,7 +2118,8 @@
\tcb@ch%
\tcbdimto\tcb@innerheight{\tcb@height-\kvtcb@top@rule-\kvtcb@bottom@rule-\tcb@h@padtitle}%
\tcbdimto\tcbtextheight{\tcb@innerheight-\kvtcb@boxsep*2-\kvtcb@top-\kvtcb@bottom}%
- \tcb@drawing@env@begin%
+ \begin{tcb@drawing}%
+ %\tcb@drawing@env@begin%
\pgfsetbaseline{\the\dimexpr\kvtcb@baseline-\kvtcb@bbbottom\relax}%
\tcb@extensions@preframe%
% draw frame and interior
@@ -2097,7 +2139,8 @@
\tcb@tdraw@upper%
\iftcb@hasLower\tcb@tdraw@lower\fi%
\tcb@extensions@final%
- \tcb@drawing@env@end%
+ %\tcb@drawing@env@end%
+ \end{tcb@drawing}%
}
\let\tcb@drawcolorbox@standalone=\tcb@drawcolorbox
@@ -2255,6 +2298,9 @@
}
\def\tcb@proc@counter@auto#1{%
+ \ifcsdef{c@tcb@cnt@#1}
+ {\tcb@error{Auto counter for environment '#1' already defined}{}}
+ {}%
\newcounter{tcb@cnt@#1}%
\csxdef{tcb@cnt@#1}{tcb@cnt@#1}%
\tcb@proc@counter@autoanduse{#1}%
@@ -2297,6 +2343,33 @@
\ExplSyntaxOn
+\prg_new_conditional:Npnn \__tcobox_if_single_cs:n #1 { p, TF }
+ {
+ \bool_lazy_and:nnTF
+ { \tl_if_single_p:n { #1 } }
+ { \token_if_cs_p:N #1 }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+
+\msg_new:nnn { tcolorbox } { invalid-box-name }
+ {
+ Invalid~box~name~`` \tl_to_str:n {#1} ''.~
+ A~single~command~is~expected~after~space~trimming.~
+ I'll~drop~this~box~definition.
+ }
+
+\cs_new:Npn \__tcobox_set_backslash_removed:Nn #1#2
+ {
+ \__tcobox_if_single_cs:nTF { #2 }
+ {
+ \tl_set:Ne #1 { \exp_last_unbraced:Ne \cs_to_str:N { \tl_trim_spaces:n { #2 } } }
+ }
+ {
+ \msg_error:nnn { tcolorbox } { invalid-box-name } { #2 }
+ }
+ }
+
\cs_new:Npn \__tcobox_process_newtcolorbox:nn #1#2
{
\bool_lazy_and:nnF
@@ -2312,14 +2385,6 @@
}
-\cs_new:Npn \__tcobox_set_backslash_removed:Nn #1#2
- {
- \tl_set:Nn #1 { #2 }
- \tl_trim_spaces:N #1
- \tl_set:Ne #1 { \exp_last_unbraced:NV \cs_to_str:N #1 }
- }
-
-
\NewDocumentCommand \__tcobox_new_tcolorbox:w { m +O{} >{\TrimSpaces} m o +o +m }
{
\__tcobox_process_newtcolorbox:nn { #2 }{ #3 }
@@ -2505,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{%
@@ -2740,7 +2813,7 @@
\tcb@new@skin{standard}{frame engine=standard,interior titled engine=standard,
interior engine=standard,segmentation engine=standard,title engine=standard,
- graphical environment=pgfpicture,geometry nodes=false,
+ geometry nodes=false,
set@extensions@preframe=,set@extensions@postframe={\tcb@apply@overlay},set@extensions@final=,%
set@outerboundary=\tcb@boundaryframe@standard,%
shape@of@skin=unbroken,
@@ -2867,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/generic/oberdiek/telprint.sty b/Master/texmf-dist/tex/latex/telprint/telprint.sty
index aa51f0bd5b3..f4e08a7c42d 100644
--- a/Master/texmf-dist/tex/generic/oberdiek/telprint.sty
+++ b/Master/texmf-dist/tex/latex/telprint/telprint.sty
@@ -9,11 +9,11 @@
%% This is a generated file.
%%
%% Project: telprint
-%% Version: 2016/05/16 v1.11
+%% Version: 2024-07-26 v1.12
%%
%% Copyright (C)
%% 1996, 1997, 2004-2008 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
@@ -29,8 +29,7 @@
%%
%% The Current Maintainers of this work are
%% Heiko Oberdiek and the Oberdiek Package Support Group
-%% https://github.com/ho-tex/oberdiek/issues
-%%
+%% https://github.com/ho-tex/telprint/issues
%%
%% The Base Interpreter refers to any `TeX-Format',
%% because some files are installed in TDS:tex/generic//.
@@ -106,7 +105,7 @@
\fi
\expandafter\x\csname ver@telprint.sty\endcsname
\ProvidesPackage{telprint}%
- [2016/05/16 v1.11 Format German phone numbers (HO)]%
+ [2024-07-26 v1.12 Format German phone numbers (HO)]%
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
@@ -164,7 +163,11 @@
\let\TELreset=\relax
\fi
\DeclareRobustCommand*{\telspace}[1]{\def\TELspace{#1}}
-\telspace{{}$\,${}}
+\ifcsname LaTeXReleaseInfo\endcsname
+ \telspace{\,}
+\else
+ \telspace{{}$\,${}}
+\fi
\DeclareRobustCommand*{\telhyphen}[1]{\def\TELhyphen{#1}}
\telhyphen{\leavevmode\hbox{-}}% \hbox zur Verhinderung der Trennung
\DeclareRobustCommand*{\telslash}[1]{\def\TELslash{#1}}
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/texvc/texvc.sty b/Master/texmf-dist/tex/latex/texvc/texvc.sty
index cab243cbfe3..7d7ec136ac0 100644
--- a/Master/texmf-dist/tex/latex/texvc/texvc.sty
+++ b/Master/texmf-dist/tex/latex/texvc/texvc.sty
@@ -6,7 +6,7 @@
%%
%% texvc.dtx (with options: `package')
%% This is a generated file.
-%% Copyright (C) 2015 by Moritz Schubotz
+%% Copyright (C) 2015-2018 by Moritz Schubotz
%% 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
@@ -16,7 +16,7 @@
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{texvc}
-[2018/03/04 v1.1 Bugfixes]
+[2020/02/09 v1.2 Document deprecations]
\RequirePackage{amsmath}
\RequirePackage{amsfonts}
diff --git a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls
index bd8d4dd3eaf..3a0f4f28413 100644
--- a/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls
+++ b/Master/texmf-dist/tex/latex/thuthesis/thuthesis.cls
@@ -23,7 +23,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2017/04/15]
\ProvidesClass{thuthesis}
-[2024/05/20 7.5.1 Tsinghua University Thesis Template]
+[2024/07/01 7.5.2 Tsinghua University Thesis Template]
\newcommand\thu@error[1]{%
\ClassError{thuthesis}{#1}{}%
}
@@ -61,7 +61,7 @@
}
\hyphenation{Thu-Thesis}
\def\thuthesis{ThuThesis}
-\def\version{7.5.1}
+\def\version{7.5.2}
\RequirePackage{kvdefinekeys}
\RequirePackage{kvsetkeys}
\RequirePackage{kvoptions}
@@ -296,6 +296,13 @@
},
default = print,
},
+ eqn-paren-style = {
+ name = eqn@paren@style,
+ choices = {
+ full,
+ half,
+ }
+ },
}
\newif\ifthu@degree@graduate
\newcommand\thu@set@graduate{%
@@ -1656,10 +1663,23 @@
\endgroup
}
\allowdisplaybreaks[4]
+\newcommand\thu@eqn@left@paren{(}
+\newcommand\thu@eqn@right@paren{)}
+\newcommand\thu@set@eqn@paren@style{%
+ \ifthu@eqn@paren@style@full
+ \renewcommand\thu@eqn@left@paren{(}%
+ \renewcommand\thu@eqn@right@paren{)}%
+ \else
+ \renewcommand\thu@eqn@left@paren{(}%
+ \renewcommand\thu@eqn@right@paren{)}%
+ \fi
+}
+\thu@set@eqn@paren@style
+\thu@option@hook{eqn-paren-style}{\thu@set@eqn@paren@style}
\newcommand\thu@put@parentheses[1]{%
\ifthu@language@chinese
\unskip
- (#1)%
+ \thu@eqn@left@paren#1\thu@eqn@right@paren
\else
(#1)%
\fi
@@ -3827,9 +3847,11 @@
}
\newenvironment{translation-index}{}{}
\AtEndOfPackageFile*{bibunits}{
+ \newcounter{thu@translation@index}%
\renewenvironment{translation-index}{%
+ \global\advance\c@thu@translation@index\@ne
\begin{bibunit}%
- \renewcommand\@bibunitname{\jobname-index}%
+ \renewcommand\@bibunitname{\jobname-index-\arabic{thu@translation@index}}%
\renewcommand\bibname{书面翻译对应的原文索引}%
\thu@set@survey@bibheading
}{%
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..984ac0a5f94
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty
@@ -0,0 +1,896 @@
+% Author : C. Pierquet
+% licences : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% : 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}[2024/10/14 0.1.0 Custom fonts, made with TikZ, with effects]
+
+%------History
+% 0.1.0 Initial version
+
+%------Packages and library
+\RequirePackage{tikz}
+\RequirePackage{xstring}
+\RequirePackage{xintexpr}
+\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}}{}%
+ }%
+ }%
+}
+
+
+\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-doc-settings.sty b/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks-doc-settings.sty
deleted file mode 100644
index 777cedba6ef..00000000000
--- a/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks-doc-settings.sty
+++ /dev/null
@@ -1,199 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Personal helper theme for package documentations
-% Copyright samcarter
-%
-% This file may be distributed and/or modified
-% under the LaTeX Project Public License 1.3c or later
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Usage:
-% ln ~/Life/latex/beamertheme-sam/themesam.sty package-doc-settings.sty
-% \usepackage[
-% themecolor=samdblue
-% ]{\jobname-settings}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Colours
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{xcolor}
-\definecolor{samyellow}{RGB}{246,193,65}
-\definecolor{samorange}{RGB}{241,147,45}
-\definecolor{samred}{RGB}{191,26,46}% TikZbricks
-\definecolor{sammagenta}{RGB}{170,42,104}% TikZmarmots
-\definecolor{samviolet}{RGB}{136,46,114}% TikZlings
-\definecolor{samlila}{RGB}{101,67,159}% Rainbow beamer theme
-\definecolor{samdblue}{RGB}{0,51,134}% beamer theme
-\definecolor{samlblue}{RGB}{22,89,155}% TikZducks
-\definecolor{samteal}{RGB}{25,143,157}% Tcolorbox beamer theme
-\definecolor{samlgreen}{RGB}{68,170,153}% Jigsaw
-\definecolor{samdgreen}{RGB}{78,178,125}
-\definecolor{samlgray}{RGB}{160,160,185}
-\definecolor{samdgray}{RGB}{60,60,85}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Package options
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{xkeyval}
-\DeclareOptionX{themecolor}[samdblue]{\colorlet{themecolor}{#1}}
-\DeclareOptionX{listingcolor}[samlblue]{\colorlet{listingcolor}{#1}}
-\ExecuteOptionsX{themecolor,listingcolor}
-\ProcessOptionsX
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Packages
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\@ifclassloaded{beamer}{}{%
- \RequirePackage[english]{babel}
- \RequirePackage[paper=a4paper,margin=2.9cm]{geometry}
- \RequirePackage{scrlayer-scrpage}
- \let\hrulefillx\hrulefill
- \RequirePackage[bitstream-charter]{mathdesign}
- \let\hrulefill\hrulefillx
- \RequirePackage[hang,flushmargin,bottom]{footmisc}
- \RequirePackage{footnotehyper}
- \makesavenoteenv{tcolorbox}
- \RequirePackage[all]{nowidow}
- \RequirePackage[colorlinks=true,breaklinks=true,allcolors=themecolor,hyperfootnotes=false]{hyperref}
-}
-\RequirePackage[T1]{fontenc}
-\RequirePackage{xspace}
-\RequirePackage{inconsolata}% mono font with bold, but italic is missing
-% \RequirePackage[scale=0.85]{cascadia-code}
-% \AddToHook{cmd/ttfamily/before}{\fontseries{sl}}
-\RequirePackage{iexec}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Listings
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage[
- cachedir=$TMPDIR/minted/
-]{minted}
-
-% smuggling custom pygmentize style in cache folder
-% (a real pygmentise style would need installtion in some python folder)
-\begin{filecontents*}[noheader]{./sam.pygstyle}
-\makeatletter
-\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
- \let\PYG@ul=\relax \let\PYG@tc=\relax%
- \let\PYG@bc=\relax \let\PYG@ff=\relax}
-\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
-\def\PYG@toks#1+{\ifx\relax#1\empty\else%
- \PYG@tok{#1}\expandafter\PYG@toks\fi}
-\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
- \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
-\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
-
-% optional arguments
-\expandafter\def\csname PYG@tok@na\endcsname{\def\PYG@tc##1{\textcolor{black}{##1}}}
-
-% macros
-\expandafter\def\csname PYG@tok@k\endcsname{\def\PYG@tc##1{\textcolor{listingcolor}{\bfseries ##1}}}
-% curly brakets
-\expandafter\def\csname PYG@tok@nb\endcsname{\def\PYG@tc##1{\textcolor{listingcolor}{\bfseries ##1}}}
-
-% comments (italics won't work with the inconsolata font)
-\expandafter\def\csname PYG@tok@c\endcsname{\def\PYG@tc##1{\textcolor{gray}{##1}}}
-
-\def\PYGZbs{\char`\\}
-\def\PYGZus{\char`\_}
-\def\PYGZob{\char`\{}
-\def\PYGZcb{\char`\}}
-\def\PYGZca{\char`\^}
-\def\PYGZam{\char`\&}
-\def\PYGZlt{\char`\<}
-\def\PYGZgt{\char`\>}
-\def\PYGZsh{\char`\#}
-\def\PYGZpc{\char`\%}
-\def\PYGZdl{\char`\$}
-\def\PYGZhy{\char`\-}
-\def\PYGZsq{\char`\'}
-\def\PYGZdq{\char`\"}
-\def\PYGZti{\char`\~}
-% for compatibility with earlier versions
-\def\PYGZat{@}
-\def\PYGZlb{[}
-\def\PYGZrb{]}
-\makeatother
-\end{filecontents*}
-
-\iexec{mkdir -p $TMPDIR/minted && mv sam.pygstyle $TMPDIR/minted/.}
-
-\usemintedstyle{sam}
-\setminted{
- breaksymbolleft={},
- tabsize=2,
- breaklines=true,
-}
-\newminted[samcode]{latex}{}
-\newmintinline[saminline]{latex}{}
-
-% use non-bold and all coloured for inline code in articles
-\ifdefined\insertaspectratio\else
- \patchcmd{\minted@inputpyg@inline}{\minted@input}{\color{listingcolor}\renewcommand\textcolor[3][]{##3}\renewcommand\bfseries{}\minted@input}{}{}
-\fi
-
-\RequirePackage[most]{tcolorbox}
-\tcbuselibrary{minted}
-\tcbset{%
- colframe=themecolor,
- fonttitle=\bfseries,
- sidebyside,
- center lower,
- righthand width=5.7cm,
- bottom=2pt,
- top=2pt,
- left=3pt,
- right=3pt,
- sidebyside gap=10pt,
- lower separated=false,
- listing engine=minted,
- minted language=latex,
- colback=themecolor!10,
- sharp corners,
- boxrule=0pt,
- before title={\strut}
-}
-
-% avoid page breaks right in front of the tcolorbox
-\@ifclassloaded{beamer}{}{
- \tcbuselibrary{hooks}
- \tcbset{before pre={\nopagebreak[4]}}
-}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% document settings
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\@ifclassloaded{scrartcl}{%
- \KOMAoptions{parskip=half}
- \addtokomafont{sectioning}{\color{themecolor}}
- \addtokomafont{date}{\normalsize}
- \addtokomafont{author}{\normalsize}
- \setlength{\footnotemargin}{0.7em}
-}{}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% Custom macros
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\providecommand*{\CTAN}{\textsc{CTAN}\xspace}
-\providecommand*{\TikZ}{Ti\emph{k}Z\xspace}
-\providecommand*{\miktex}{MiK\TeX\xspace}
-\providecommand*{\texlive}{\TeX{}Live\xspace}
-\providecommand*{\tikzbrick}{Ti\emph{k}Zbrick\xspace}
-\providecommand*{\tikzducks}{Ti\emph{k}Zducks\xspace}
-\providecommand*{\tikzlings}{Ti\emph{k}Zlings\xspace}
-\providecommand*{\tikzmarmots}{Ti\emph{k}Zmarmots\xspace}
-\providecommand*{\ConTeXt}{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty b/Master/texmf-dist/tex/latex/tikzdotncross/tikzdotncross.sty
index 2385fb155e4..84d6613c104 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.2} {2024/10/22}
%%
%% 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}
+ {2024/10/22}
+ {1.2}
{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 = {2024/10/22},
+ version .code:n = {1.2} ,
description .code:n = {Marking~ coordinates~ and~ crossing~ paths}
}
\cs_if_exist:NF \PkgInfo
@@ -54,9 +54,48 @@
%%% 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
+%\makeatletter
\usetikzlibrary{intersections}
%%
@@ -84,17 +123,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 +147,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 +171,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 +193,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/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/tkz-elements/tkz-elements.sty b/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty
index 0a11787d21e..597a0508506 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.25c
+% tkz-elements.sty v2.30c
% 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,7 +11,7 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\ProvidesPackage{tkz-elements}[2024/04/27 v2.25c Graphic Object Library]
+\ProvidesPackage{tkz-elements}[2024/07/16 version 2.30c Graphic Object Library]
\RequirePackage{luacode}
\directlua{require "tkz_elements_main"}
@@ -34,20 +34,19 @@
V={}}
\luacode}
{\endluacode}
-
+ % new version of the next macro proposed by Sanskar Singh
\def\tkzGetNodes{\directlua{%
- for K,V in pairs(z) do
- local n,sd,ft
- n = string.len(K)
- if n >1 then
- _,_,ft, sd = string.find( K , "(.+)(.)" )
- if sd == "p" then K=ft.."'" end
- _,_,xft, xsd = string.find( ft , "(.+)(.)" )
- if xsd == "p" then K=xft.."'".."'" end
- end
- tex.print("\\coordinate ("..K..") at ("..V.re..","..V.im..") ;\\\\")
-end}
-}
+ for K,V in pairs(z) do
+ local n,sd,ft
+ n = string.len(K)
+ if n >1 then
+ _,_,ft, sd = string.find( K , "(.+)(.)" )
+ if sd == "p" then K=ft.."'" end
+ _,_,xft, xsd = string.find( ft , "(.+)(.)" )
+ if xsd == "p" then K=xft.."'".."'" end
+ end
+ tex.sprint("\string\\coordinate ("..K..") at ("..V.re..","..V.im..") ; \string\r")
+end}}
\def\tkzUseLua#1{\directlua{tex.print(tostring(#1))}}
\makeatletter
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 1999b8a0732..e17ccb2ebb4 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_class.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua
index b6a1bf7a5a2..3ded691d539 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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 a98cf40a63c..7581c19d7a9 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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 40f2a4ebbf7..88f9040b7f0 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_intersections.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua
index 69dcd6ace32..fe253e9aa23 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_lines.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua
index 401ad46dda1..a5504593c06 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_maths.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua
index a71c0f7c278..c3f7e54ffd3 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_matrices.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua
index 43712140477..c80420090f4 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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 f1c4dc5d412..e2366e25e3d 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_regular.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua
index 5e92b4d5987..0f74d28fe98 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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 d4523d1826b..02d3058a161 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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
@@ -259,6 +259,15 @@ function feuerbach_tr_ (a,b,c)
intersection_cc_ (e,m,jb,hb),
intersection_cc_ (e,m,jc,hc)
end
+
+function similar_ (a,b,c)
+ local x,y,z,g
+ g = centroid_ (a,b,c)
+ x = homothety_ (g,-2,a)
+ y = homothety_ (g,-2,b)
+ z = homothety_ (g,-2,c)
+ return x,y,z
+end
--------------------
-- ellipse --
--------------------
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 9304768f311..797365f33f4 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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
@@ -324,11 +324,25 @@ function line: mediator ()
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)
+ return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb))
+end
+
-------------------
-- Result -> circle
-------------------
-function line: circle ()
+function line: circle (swap)
+ if swap == nil then
+ swap = false
+ end
+ if swap then
+ return circle : new (self.pb,self.pa)
+ else
return circle : new (self.pa,self.pb)
+ end
end
function line: circle_swap ()
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 10ee2195196..142f00c8ed0 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_matrices.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua
index 981ac680946..035e8a0a33e 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_misc.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua
index 94c9c555c08..daa3e21872b 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_parallelogram.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua
index fd0a3533a3d..d471976d066 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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 4eb4b549d15..e29779ef791 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_quadrilateral.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua
index e77e0af5615..6625b9d7898 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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 2c07f78399d..fdc30845018 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_regular.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua
index 0641a858ded..a4527c779b9 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_square.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua
index 1852c0ded40..93860b825c9 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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_triangle.lua b/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua
index c6dd2c37573..84b10273dad 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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
@@ -57,19 +57,19 @@ end
-- points --
-----------------------
function triangle: trilinear (a,b,c)
- return barycenter_ ( {self.pa,a*self.a },{self.pb,b*self.b},{self.pc,c*self.c} )
+ return barycenter_ ({self.pa,a*self.a},{self.pb,b*self.b},{self.pc,c*self.c})
end
function triangle: barycentric (a,b,c)
- return barycenter_ ( {self.pa,a },{self.pb,b},{self.pc,c} )
+ return barycenter_ ({self.pa,a},{self.pb,b},{self.pc,c})
end
function triangle: bevan_point ()
- return circum_center_ ( self : excentral_tr())
+ return circum_center_ ( excentral_tr_ ( self.pa , self.pb , self.pc))
end
function triangle: mittenpunkt_point ()
- return lemoine_point_ ( self : excentral_tr())
+ return lemoine_point_ ( excentral_tr_ ( self.pa , self.pb , self.pc))
end
function triangle: gergonne_point ()
@@ -322,13 +322,20 @@ function triangle : cevian_circle (p)
pta,ptb,ptc = cevian_ (self.pa,self.pb,self.pc,p)
return circle : new (circum_circle_ (pta,ptb,ptc),pta)
end
+
+function triangle : symmedial_circle ()
+ local pta,ptb,ptc,p
+ p = lemoine_point_ ( self.pa , self.pb , self.pc)
+ pta,ptb,ptc = cevian_ (self.pa,self.pb,self.pc,p)
+ return circle : new (circum_circle_ (pta,ptb,ptc),pta)
+end
- function triangle : conway_circle ()
- local i,t
- i = in_center_ (self.pa,self.pb,self.pc)
- t = report_ (self.pb,self.pa,length(self.pb,self.pc),self.pa)
- return circle : new (i,t)
- end
+function triangle : conway_circle ()
+ local i,t
+ i = in_center_ (self.pa,self.pb,self.pc)
+ t = report_ (self.pb,self.pa,length(self.pb,self.pc),self.pa)
+ return circle : new (i,t)
+end
function triangle : pedal_circle (pt)
local x,y,z,c
@@ -338,7 +345,13 @@ function triangle : pedal_circle (pt)
c = circum_center_ (x,y,z)
return circle : new (c,x)
end
-
+
+function triangle: bevan_circle ()
+ local o,r,s,t
+ o = circum_center_ ( excentral_tr_ ( self.pa , self.pb , self.pc))
+ r,s,t = excentral_tr_ ( self.pa , self.pb , self.pc)
+return circle : new (o, r)
+end
-------------------
-- Result -> triangle
-------------------
@@ -392,6 +405,12 @@ function triangle: symmedian ()
return triangle : new (cevian_ (self.pa,self.pb,self.pc,p))
end
+function triangle: symmedial ()
+ local p
+ p = lemoine_point_ ( self.pa , self.pb , self.pc)
+ return triangle : new (cevian_ (self.pa,self.pb,self.pc,p))
+end
+
function triangle: euler ()
return triangle : new (euler_points_ (self.pa,self.pb,self.pc) )
end
@@ -403,6 +422,10 @@ function triangle: pedal (pt)
z = projection_ (self.pa,self.pb,pt)
return triangle : new (x,y,z)
end
+
+function triangle: similar ()
+ return triangle : new (similar_ (self.pa,self.pb,self.pc) )
+end
-------------------
-- Result -> ellipse
-------------------
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 8b26fe4bd32..0dcbbfde61d 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/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
-- 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 3de4286c8e4..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,14 @@
% 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/06/22 0.1.5.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)
% v 0.1.5 Correction d'un bug avec les valeurs manuelles + Nœud pour une image + [en] version !
% v 0.1.4 Ajout des placements de textes
% v 0.1.3 Régressions, avec xintreg (désactivable)
@@ -25,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}%
@@ -34,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}
@@ -49,7 +62,7 @@
\if@lngenglish
\sisetup{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}
\else
- \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}
+ \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}
\fi
\fi
@@ -97,19 +110,37 @@
%====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
\tikzset{pflnoeud/.style={}}
\tikzset{pflpoint/.style={line width=0.95pt}}
+\tikzset{pflpointmc/.style={radius=0.875pt}}
\tikzset{pflpointc/.style={radius=1.75pt}}
\tikzset{pflpointnuage/.style={radius=1.75pt}}
\tikzset{pflcadre/.style={line width=0.8pt,gray}}
\tikzset{pflcourbe/.style={line width=1.05pt}}
+\tikzset{pflcourbediscont/.style={line width=1.1pt}}
\tikzset{pfltrait/.style={line width=0.8pt}}
\tikzset{pflflecheg/.style={<-,>=latex}}
\tikzset{pflfleched/.style={->,>=latex}}
@@ -316,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}
}
@@ -863,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
@@ -883,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%
@@ -894,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)}%
+ }%
}%
}
@@ -902,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}%
{%
@@ -934,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}
@@ -1012,6 +1068,146 @@
\end{scope}
}
+%====MONTE CARLO
+\defKV[graphiquetikzmontecarlo]{%
+ Couleurs=\def\graphtikzmccols{#1},%
+ BornesX=\def\graphtikzmcxbornes{#1},%
+ BornesY=\def\graphtikzmcybornes{#1}
+}
+
+\setKVdefault[graphiquetikzmontecarlo]{%
+ Couleurs={blue/red},%
+ BornesX={\pflxmin,\pflxmax},%
+ BornesY={\pflymin,\pflymax}
+}
+
+\NewDocumentCommand\SimulerMonteCarlo{ O{} D<>{f} m O{\nbptsmcok} O{\nbptsmcko} }{%
+ \restoreKV[graphiquetikzmontecarlo]%
+ \setKV[graphiquetikzmontecarlo]{#1}%
+ \StrCut{\graphtikzmccols}{/}{\tmpMCcolOK}{\tmpMCcolKO}%
+ \StrCut{\graphtikzmcxbornes}{,}{\tmpMCxmin}{\tmpMCxmax}%
+ \StrCut{\graphtikzmcybornes}{,}{\tmpMCymin}{\tmpMCymax}%
+ \xdef#4{0}%
+ \xdef#5{0}%
+ \xdef\nbptsmc{#3}%
+ \foreach \i in {1,...,#3}{%
+ \xdef\tmpMCrandX{\xintfloateval{random()*((\tmpMCxmax)-(\tmpMCxmin))+(\tmpMCxmin)}}%
+ \xdef\tmpMCrandY{\xintfloateval{random()*((\tmpMCymax)-(\tmpMCymin))+(\tmpMCymin)}}%
+ \xdef\tmpMCrandfX{\xintfloateval{#2(\tmpMCrandX)}}%
+ \xintifboolexpr{ \tmpMCrandfX > \tmpMCrandY }%
+ {%
+ \xdef#4{\xinteval{#4+1}}%
+ \filldraw[\tmpMCcolOK] (\tmpMCrandX,\tmpMCrandY) circle[pflpointmc] ;
+ }%
+ {%
+ \xdef#5{\xinteval{#5+1}}%
+ \filldraw[\tmpMCcolKO] (\tmpMCrandX,\tmpMCrandY) circle[pflpointmc] ;
+ }%
+ }%
+}
+
+%====MÉTHODES INTÉGRALES
+
+\defKV[graphiquetikzintegr]{%
+ Couleur=\def\graphtikzintgrcol{#1},%
+ CouleurRemplissage=\def\graphtikzintgrcolrempl{#1},%
+ NbSubDiv=\def\graphtikzintgrnb{#1},%
+ Methode=\def\graphtikzintgrtype{#1},%
+ Opacite=\def\graphtikzintgropac{#1}
+}
+
+\setKVdefault[graphiquetikzintegr]{%
+ Couleur=red,%
+ NbSubDiv=10,%
+ Methode=RectanglesGauche,%
+ Remplir=true,%
+ CouleurRemplissage={\graphtikzintgrcol!25},%
+ Opacite=0.25,%
+ Spline=false
+}
+
+\NewDocumentCommand\RepresenterMethodeIntegrale{ O{} D<>{f} m m }{%opts+nom_fct/spline+a+b
+ \useKVdefault[graphiquetikzintegr]%
+ \setKV[graphiquetikzintegr]{#1}%
+ \ifboolKV[graphiquetikzintegr]{Remplir}%
+ {%
+ \tikzset{pflfigureintegr/.style={pfltrait,\graphtikzintgrcol,fill=\graphtikzintgrcolrempl,fill opacity=\graphtikzintgropac}}%
+ }%
+ {%
+ \tikzset{pflfigureintegr/.style={pfltrait,\graphtikzintgrcol}}%
+ }%
+ \tikzset{figureintegr/.style={pfltrait,\graphtikzintgrcol,fill=\graphtikzintgrcolrempl,fill opacity=\graphtikzintgropac}}%
+ \def\TmpH{(#4-#3)/\graphtikzintgrnb}
+ \ifboolKV[graphiquetikzintegr]{Spline}%
+ {%
+ \IfEq{\graphtikzintgrtype}{RectanglesGauche}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}{%
+ \path[draw=none,pflcourbe,name path=tmpintmethod] ({#3+\i*\TmpH},{\pflymin})--({#3+\i*\TmpH},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpintmethod,name=KLM}] ;
+ \draw[pflfigureintegr] let \p1 = (KLM-1) in ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\y1}) ;
+ }%
+ }%
+ {}%
+ \IfEq{\graphtikzintgrtype}{RectanglesDroite}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}{%
+ \path[draw=none,pflcourbe,name path=tmpintmethod] ({#3+(\i+1)*\TmpH},{\pflymin})--({#3+(\i+1)*\TmpH},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpintmethod,name=KLM}] ;
+ \draw[pflfigureintegr] let \p1 = (KLM-1) in ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\y1}) ;
+ }%
+ }%
+ {}%
+ \IfEq{\graphtikzintgrtype}{RectanglesMilieu}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}{%
+ \path[draw=none,pflcourbe,name path=tmpintmethod] ({#3+(\i+0.5)*\TmpH},{\pflymin})--({#3+(\i+0.5)*\TmpH},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpintmethod,name=KLM}] ;
+ \draw[pflfigureintegr] let \p1 = (KLM-1) in ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\y1}) ;
+ }%
+ }%
+ {}%
+ \IfEq{\graphtikzintgrtype}{Trapezes}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}{%
+ \path[draw=none,pflcourbe,name path=tmpintmethodg] ({#3+(\i)*\TmpH},{\pflymin})--({#3+(\i)*\TmpH},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpintmethodg,name=KLMg}] ;
+ \path[draw=none,pflcourbe,name path=tmpintmethodd] ({#3+(\i+1)*\TmpH},{\pflymin})--({#3+(\i+1)*\TmpH},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpintmethodd,name=KLMd}] ;
+ \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) -- (KLMg-1) -- (KLMd-1) -- ({#3+(\i+1)*\TmpH},{0}) -- cycle ;
+ }%
+ }%
+ {}%
+ }%
+ {%
+ \IfEq{\graphtikzintgrtype}{RectanglesGauche}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+ \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) ;
+ }%
+ {}%
+ \IfEq{\graphtikzintgrtype}{RectanglesDroite}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+ \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) ;
+ }%
+ {}%
+ \IfEq{\graphtikzintgrtype}{RectanglesMilieu}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+ \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) rectangle++ ({\TmpH},{\xintfloateval{#2(#3+(\i+0.5)*\TmpH)}}) ;
+ }%
+ {}%
+ \IfEq{\graphtikzintgrtype}{Trapezes}%
+ {%
+ \foreach \i in {0,...,\inteval{\graphtikzintgrnb-1}}%
+ \draw[pflfigureintegr] ({#3+\i*\TmpH},{0}) -- ({#3+\i*\TmpH},{\xintfloateval{#2(#3+\i*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{\xintfloateval{#2(#3+(\i+1)*\TmpH)}}) -- ({#3+(\i+1)*\TmpH},{0}) -- cycle ;
+ }%
+ {}%
+ }%
+}
+
+
%====INTÉGRALES
%v2 avec modification de la clé [Type=...] ?
\defKV[GraphiqueTikzIntegr]{%
@@ -1961,6 +2157,16 @@
\end{scope}
}
+%====asymptote
+\NewDocumentCommand\TracerAsymptote{ O{} m D<>{} }{%
+ \restoreKV[GraphiquetikzDroite]%
+ \setKV[GraphiquetikzDroite]{#1}%
+ %tracé
+ \draw[pfltrait,{\useKV[GraphiquetikzDroite]{Couleur}},#3] ({#2},{\pflymin})--({#2},{\pflymax}) ;
+}
+
+
+%====MinMax
\defKV[GraphiqueTikzMinMax]{%
Pas=\def\pflminmaxstep{#1},%
Methode=\def\pflminmaxmethode{#1},%
@@ -2059,7 +2265,7 @@
}
\setKVdefault[GraphiqueTikzNode]{%
Couleur=black,%
- Debut={\normalfont\normalsize},%
+ Police={\normalfont\normalsize},%
Position={}
}
\NewDocumentCommand\PlacerTexte{ O{} m m }{%
@@ -2117,6 +2323,7 @@
\tikzset{tkzgrphnode/.style={}}
\tikzset{tkzgrphpoint/.style={line width=0.95pt}}
\tikzset{tkzgrphpointc/.style={radius=1.75pt}}
+\tikzset{tkzgrphpointmc/.style={radius=0.875pt}}
\tikzset{tkzgrphscatter/.style={radius=1.75pt}}
\tikzset{tkzgrphframe/.style={line width=0.8pt,gray}}
\tikzset{tkzgrphcurve/.style={line width=1.05pt}}
@@ -2861,7 +3068,8 @@
Name=spline,%
Color=black,%
Coeffs=3,%
- Trace=false
+ Trace=false,%
+ Alt=false
}
\NewDocumentCommand\GenerateSpline{ m m O{\myspline} }{%
@@ -3898,11 +4106,11 @@
}
%====droite
-\defKV[GraphiquetikzDroite]{%
+\defKV[GraphicTikzLine]{%
Name=\def\pfldroitename{#1}
}
-\setKVdefault[GraphiquetikzDroite]{%
+\setKVdefault[GraphicTikzLine]{%
Slope=false,%
Color=black,%
Start={\pflxmin},%
@@ -3911,15 +4119,15 @@
}
\NewDocumentCommand\DrawLine{ O{} m m D<>{} }{%
- \restoreKV[GraphiquetikzDroite]%
- \setKV[GraphiquetikzDroite]{#1}%
+ \restoreKV[GraphicTikzLine]%
+ \setKV[GraphicTikzLine]{#1}%
%1er point
\path #2;%
\pgfgetlastxy{\macrox}{\macroy}%
\xdef\pfldtetikzxA{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
\xdef\pfldtetikzyA{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
%2ème point si besoin
- \ifboolKV[GraphiquetikzDroite]{Slope}%
+ \ifboolKV[GraphicTikzLine]{Slope}%
{%
\xdef\pfldtepente{\xintfloateval{#3}}%
}%
@@ -3936,24 +4144,33 @@
{%
\IfEq{\pfldroitename}{}%
{%
- \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},#4] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},#4] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
}%
{%
- \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},#4,name path global=\pfldroitename] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},#4,name path global=\pfldroitename] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
}%
}%
{%
\IfEq{\pfldroitename}{}%
{%
- \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},domain={\useKV[GraphiquetikzDroite]{Start}}:{\useKV[GraphiquetikzDroite]{End}},samples=2,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},domain={\useKV[GraphicTikzLine]{Start}}:{\useKV[GraphicTikzLine]{End}},samples=2,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
}%
{%
- \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},domain={\useKV[GraphiquetikzDroite]{Start}}:{\useKV[GraphiquetikzDroite]{End}},samples=2,name path global=\pfldroitename,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},domain={\useKV[GraphicTikzLine]{Start}}:{\useKV[GraphicTikzLine]{End}},samples=2,name path global=\pfldroitename,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
}%
}%
\end{scope}
}
+%====asymptote
+\NewDocumentCommand\DrawAsymptote{ O{} m D<>{} }{%
+ \restoreKV[GraphicTikzLine]%
+ \setKV[GraphicTikzLine]{#1}%
+ %tracé
+ \draw[tkzgrphline,{\useKV[GraphicTikzLine]{Color}},#3] ({#2},{\pflymin})--({#2},{\pflymax}) ;
+}
+
+%====minmax
\defKV[GraphicTikzMinMax]{%
Pas=\def\pflminmaxstep{#1},%
Method=\def\pflminmaxmethode{#1},%
@@ -4061,4 +4278,457 @@
\draw #2 node[tkzgrphnode,font=\pflnodefonte,text=\pflnodecol,\pfnodepos] {#3} ;
}
+%====MONTE CARLO
+\defKV[GraphicTikzmontecarlo]{%
+ Colors=\def\graphtikzmccols{#1},%
+ BoundsX=\def\graphtikzmcxbornes{#1},%
+ BoundsY=\def\graphtikzmcybornes{#1}
+}
+
+\setKVdefault[GraphicTikzmontecarlo]{%
+ Colors={blue/red},%
+ BoundsX={\pflxmin,\pflxmax},%
+ BoundsY={\pflymin,\pflymax}
+}
+
+\NewDocumentCommand\SimulateMonteCarlo{ O{} D<>{f} m O{\nbptsmcok} O{\nbptsmcko} }{%
+ \restoreKV[GraphicTikzmontecarlo]%
+ \setKV[GraphicTikzmontecarlo]{#1}%
+ \StrCut{\graphtikzmccols}{/}{\tmpMCcolOK}{\tmpMCcolKO}%
+ \StrCut{\graphtikzmcxbornes}{,}{\tmpMCxmin}{\tmpMCxmax}%
+ \StrCut{\graphtikzmcybornes}{,}{\tmpMCymin}{\tmpMCymax}%
+ \xdef#4{0}%
+ \xdef#5{0}%
+ \xdef\nbptsmc{#3}%
+ \foreach \i in {1,...,#3}{%
+ \xdef\tmpMCrandX{\xintfloateval{random()*((\tmpMCxmax)-(\tmpMCxmin))+(\tmpMCxmin)}}%
+ \xdef\tmpMCrandY{\xintfloateval{random()*((\tmpMCymax)-(\tmpMCymin))+(\tmpMCymin)}}%
+ \xdef\tmpMCrandfX{\xintfloateval{#2(\tmpMCrandX)}}%
+ \xintifboolexpr{ \tmpMCrandfX > \tmpMCrandY }%
+ {%
+ \xdef#4{\xinteval{#4+1}}%
+ \filldraw[\tmpMCcolOK] (\tmpMCrandX,\tmpMCrandY) circle[tkzgrphpointmc] ;
+ }%
+ {%
+ \xdef#5{\xinteval{#5+1}}%
+ \filldraw[\tmpMCcolKO] (\tmpMCrandX,\tmpMCrandY) circle[tkzgrphpointmc] ;
+ }%
+ }%
+}
+
+%====ECC
+\defKV[tkzgECC]{%
+ Couleur=\def\tkzecc@coul@graph{#1},%
+ CouleursParams=\def\tkzecc@coul@params{#1}
+}
+
+\setKVdefault[tkzgECC]{%
+ Couleur=black,%
+ AffParams=true,%
+ CouleursParams={black},%
+ TraitsComplets=true
+}
+
+\tikzset{pfltraitsparamecc/.style={line width=0.9pt,densely dashed}}
+\tikzset{pflcourbeecc/.style={line width=1.05pt}}
+
+\NewDocumentCommand\TracerCourbeECC{ O{} m m }{%
+ \restoreKV[tkzgECC]%
+ \setKV[tkzgECC]{#1}%
+ \IfSubStr{\tkzecc@coul@params}{/}%
+ {%
+ \StrCut{\tkzecc@coul@params}{/}{\tkzecc@coul@quart}{\tkzecc@coul@med}%
+ }%
+ {%
+ \def\tkzecc@coul@quart{\tkzecc@coul@params}\def\tkzecc@coul@med{\tkzecc@coul@params}%
+ }%
+ \readlist*\DataClass{#2}%
+ \readlist*\DataEff{#3}%
+ \xdef\DonneesECC{0}%
+ \xintFor* ##1 in {\xintSeq{1}{\DataEfflen}}\do{%
+ \xdef\DonneesTmp{0}
+ \xintFor* ##2 in {\xintSeq{1}{##1}}\do{%
+ \xdef\DonneesTmp{\xintfloateval{\DonneesTmp+\DataEff[##2]}}%
+ }%
+ \xdef\DonneesECC{\DonneesECC,\DonneesTmp}%
+ }%
+ \readlist*\DataECC\DonneesECC%
+ \itemtomacro\DataClass[1]\DonneesXmin%
+ \itemtomacro\DataClass[-1]\DonneesXmax%
+ \itemtomacro\DataECC[-1]\DonneesEffMax%
+ \xdef\DonneesListeECC{(\DataClass[1],\DataECC[1])}%
+ \xintFor* ##1 in {\xintSeq{2}{\DataECClen}}\do{%
+ \xdef\DonneesListeECC{\DonneesListeECC--(\DataClass[##1],\DataECC[##1])}%
+ }%
+ %paramètres par interpolation
+ \xintFor* ##1 in {\xintSeq{1}{\DataEfflen}}\do{%
+ \xdef\isuiv{\xinteval{##1+1}}%
+ \xintifboolexpr{\DataECC[##1] < (0.25*\DonneesEffMax) 'and' \DataECC[\isuiv] >= (0.25*\DonneesEffMax)}%
+ {%
+ \xdef\pentetmpECC{(\DataECC[\isuiv]-\DataECC[##1])/(\DataClass[\isuiv]-\DataClass[##1])}%OK
+ \xdef\ValPremQuartile{\xintfloateval{(0.25*\DonneesEffMax+\pentetmpECC*\DataClass[##1]-\DataECC[##1])/(\pentetmpECC)}}%
+ }
+ {}%
+ \xintifboolexpr{\DataECC[##1] < (0.50*\DonneesEffMax) 'and' \DataECC[\isuiv] >= (0.50*\DonneesEffMax)}%
+ {%
+ \xdef\pentetmpECC{(\DataECC[\isuiv]-\DataECC[##1])/(\DataClass[\isuiv]-\DataClass[##1])}%OK
+ \xdef\ValMed{\xintfloateval{(0.50*\DonneesEffMax+\pentetmpECC*\DataClass[##1]-\DataECC[##1])/(\pentetmpECC)}}%
+ }
+ {}%
+ \xintifboolexpr{\DataECC[##1] < (0.75*\DonneesEffMax) 'and' \DataECC[\isuiv] >= (0.75*\DonneesEffMax)}%
+ {%
+ \xdef\pentetmpECC{(\DataECC[\isuiv]-\DataECC[##1])/(\DataClass[\isuiv]-\DataClass[##1])}%OK
+ \xdef\ValTroisQuartile{\xintfloateval{(0.75*\DonneesEffMax+\pentetmpECC*\DataClass[##1]-\DataECC[##1])/(\pentetmpECC)}}%
+ }
+ {}%
+ }%
+ %partie graphique
+ \draw[pflcourbeecc,\tkzecc@coul@graph] \DonneesListeECC ;
+ \xintFor* ##1 in {\xintSeq{1}{\DataECClen}}\do{%
+ \filldraw[\tkzecc@coul@graph] (\DataClass[##1],\DataECC[##1]) circle[pflpointnuage] ;
+ }%
+ \ifboolKV[tkzgECC]{AffParams}%
+ {%
+ %médiane
+ \ifboolKV[tkzgECC]{TraitsComplets}%
+ {%
+ \draw[pfltraitsparamecc,\tkzecc@coul@med] (\pflxmin,{0.50*\DonneesEffMax})--(\pflxmax,{0.50*\DonneesEffMax});
+ \draw[pfltraitsparamecc,\tkzecc@coul@quart] (\pflxmin,{0.25*\DonneesEffMax})--++({\pflxmax-\pflxmin},0);
+ \draw[pfltraitsparamecc,\tkzecc@coul@quart] (\pflxmin,{0.75*\DonneesEffMax})--++({\pflxmax-\pflxmin},0);
+ }%
+ {%
+ \draw[pfltraitsparamecc,\tkzecc@coul@med] (\pflxmin,{0.50*\DonneesEffMax})--(\ValMed,{0.50*\DonneesEffMax});
+ \draw[pfltraitsparamecc,\tkzecc@coul@quart] (\pflxmin,{0.25*\DonneesEffMax})--++({\ValPremQuartile-\pflxmin},0);
+ \draw[pfltraitsparamecc,\tkzecc@coul@quart] (\pflxmin,{0.75*\DonneesEffMax})--++({\ValTroisQuartile-\pflxmin},0);
+ }%
+ \draw[pfltraitsparamecc,\tkzecc@coul@med] (\ValMed,{0.5*\DonneesEffMax})--(\ValMed,0) ; \draw[\tkzecc@coul@med,thick,fill=white] (\ValMed,{0.5*\DonneesEffMax}) circle[pflpointnuage] ;
+ \draw[pfltraitsparamecc,\tkzecc@coul@quart] (\ValPremQuartile,{0.25*\DonneesEffMax})--(\ValPremQuartile,\pflymin) ; \draw[\tkzecc@coul@quart,thick,fill=white] (\ValPremQuartile,{0.25*\DonneesEffMax}) circle[pflpointnuage] ;
+ \draw[pfltraitsparamecc,\tkzecc@coul@quart] (\ValTroisQuartile,{0.75*\DonneesEffMax})--(\ValTroisQuartile,\pflymin) ; \draw[\tkzecc@coul@quart,thick,fill=white] (\ValTroisQuartile,{0.75*\DonneesEffMax}) circle[pflpointnuage] ;
+ }%
+ {}%
+}
+
+%====PTS DISCONTINUITÉ
+\defKV[tkzptdiscont]{%
+ Couleur=\def\pfldiscontcouleur{#1},%
+ Pos=\def\pfldiscontpos{#1},%
+ Echelle=\def\pfldiscontechelle{#1},%
+ Type=\def\pfldisconttype{#1}
+}
+
+\setKVdefault[tkzptdiscont]{%
+ Couleur=black,%
+ Pos=D,%
+ Echelle=1,%
+ Type=par
+}
+
+\NewDocumentCommand\AfficherPtsDiscont{ O{} m }{%
+ \restoreKV[tkzptdiscont]
+ \setKV[tkzptdiscont]{#1}%
+ \setsepchar[.]{§./}%
+ \readlist*\SPLlisteDiscont{#2}%
+ \def\SPLlisteDiscontNb{\SPLlisteDiscontlen}%
+ \foreach \i in {1,...,\SPLlisteDiscontNb}{%
+ \begin{scope}[shift={(\SPLlisteDiscont[\i,1],\SPLlisteDiscont[\i,2])},rotate={atan \SPLlisteDiscont[\i,3]},scale=\pfldiscontechelle]
+ \IfStrEq{\pfldisconttype}{rond}%
+ {%
+ \draw[pflcourbediscont,fill=white,draw=\pfldiscontcouleur] (0,0) circle[radius=3pt] ;
+ }{}%
+ \IfStrEq{\pfldiscontpos}{D}%
+ {%
+ \IfStrEq{\pfldisconttype}{par}%
+ {%
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=90,in=170] (4pt,5pt) ;
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=-90,in=-170] (4pt,-5pt) ;
+ }{}%
+ \IfStrEq{\pfldisconttype}{demirond}%
+ {%
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=90,in=180] (3pt,3pt) ;
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=-90,in=180] (3pt,-3pt) ;
+ }{}%
+ \IfStrEq{\pfldisconttype}{cro}%
+ {%
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) |- (4pt,5pt) ;
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) |- (4pt,-5pt) ;
+ }{}%
+ }%
+ {%
+ \IfStrEq{\pfldisconttype}{par}%
+ {%
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=90,in=-10] (-4pt,5pt) ;
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=-90,in=10] (-4pt,-5pt) ;
+ }{}%
+ \IfStrEq{\pfldisconttype}{demirond}%
+ {%
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=90,in=0] (-3pt,3pt) ;
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) to[out=-90,in=0] (-3pt,-3pt) ;
+ }{}%
+ \IfStrEq{\pfldisconttype}{cro}%
+ {%
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) |- (-4pt,5pt) ;
+ \draw[pflcourbediscont,\pfldiscontcouleur] (0,0) |- (-4pt,-5pt) ;
+ }{}%
+ }%
+ \end{scope}
+ }%
+}
+
+%====TOILE RÉCURRENCE (OK avec courbe + spline !!)
+\tikzset{pfltraitrec/.style={line width=0.8pt}}
+\tikzset{pfltraitrecpointill/.style={pfltraitrec,densely dashed}}
+
+\defKV[tkzwebrecurr]{%
+ Couleur=\def\pflrecurcolor{#1},%
+ Nom=\def\pflrecurnom{#1},%
+ No=\def\pflrecurno{#1},%
+ Nb=\def\pflrecurnb{#1},%
+ Uno=\def\pflrecuruno{#1},
+ TailleLabel=\def\pflrecurlabelsize{#1},%
+ PosLabel=\def\pflrecurlabelpos{#1}
+}
+
+\setKVdefault[tkzwebrecurr]{%
+ Couleur=black,%
+ Spline=false,%
+ No=0,%
+ Nom=u,%
+ Nb=5,%
+ AffTermes=false,%
+ AffPointilles=true,%
+ TailleLabel=\small,%
+ PosLabel=below
+}
+
+\NewDocumentCommand\TracerToileRecurrence{ O{} m }{
+ %<clés> + fonction/courbe
+ \useKVdefault[tkzwebrecurr]%
+ \setKV[tkzwebrecurr]{#1}% on paramètres les nouvelles clés et on les simplifie
+ \ifboolKV[tkzwebrecurr]{Spline}%
+ {%
+ \foreach \i [remember=\i as \x (initially \pflrecuruno)] in {1,...,\pflrecurnb}{%
+ %\xdef\y{\xintfloateval{#2(\x)}}%
+ \path[draw=none,pflcourbe,name path=tmprecur] ({\x},{\pflymin})--({\x},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmprecur,name=ZZZZ}] ;
+ %\coordinate (\pflrecurnoms) at (ZZZZ-1) ;
+ \GetYcoord{(ZZZZ-1)}[\y]
+ %test de la position courbe / bissectrice ?
+ \ifnum \i=1
+ \newdimen \X
+ \newdimen \Y
+ \X = \x pt
+ \Y = \y pt
+ \ifdim \Y < \X
+ \draw[pfltraitrec,\pflrecurcolor] (\x,\y)--(\y,\y) ;
+ \else
+ \draw[pfltraitrec,\pflrecurcolor] (\x,\x)--(\x,\y)--(\y,\y) ;
+ \fi
+ \else
+ \draw[pfltraitrec,\pflrecurcolor] (\x,\x)--(\x,\y)--(\y,\y) ;
+ \fi
+ \ifboolKV[tkzwebrecurr]{AffPointilles}%
+ {%
+ \def\indice{\fpeval{\i+\pflrecurno-1}}%
+ \ifboolKV[tkzwebrecurr]{AffTermes}%
+ {%
+ \draw[pfltraitrecpointill,\pflrecurcolor] (\x,\y)--(\x,\pflxmin) node[\pflrecurlabelpos,font=\pflrecurlabelsize]{$\pflrecurnom_{\indice}$};%
+ }%
+ {%
+ \draw[pfltraitrecpointill,\pflrecurcolor] (\x,\y)--(\x,\pflxmin) ;%
+ }%
+ }%
+ {}
+ \def\i{\y}%
+ }%
+ }%
+ {%
+ \foreach \i [remember=\i as \x (initially \pflrecuruno)] in {1,...,\pflrecurnb}{%
+ \xdef\y{\xintfloateval{#2(\x)}}%
+ %test de la position courbe / bissectrice ?
+ \ifnum \i=1
+ \newdimen \X
+ \newdimen \Y
+ \X = \x pt
+ \Y = \y pt
+ \ifdim \Y < \X
+ \draw[pfltraitrec,\pflrecurcolor] (\x,\y)--(\y,\y) ;
+ \else
+ \draw[pfltraitrec,\pflrecurcolor] (\x,\x)--(\x,\y)--(\y,\y) ;
+ \fi
+ \else
+ \draw[pfltraitrec,\pflrecurcolor] (\x,\x)--(\x,\y)--(\y,\y) ;
+ \fi
+ \ifboolKV[tkzwebrecurr]{AffPointilles}%
+ {%
+ \def\indice{\fpeval{\i+\pflrecurno-1}}%
+ \ifboolKV[tkzwebrecurr]{AffTermes}%
+ {%
+ \draw[pfltraitrecpointill,\pflrecurcolor] (\x,\y)--(\x,\pflxmin) node[\pflrecurlabelpos,font=\pflrecurlabelsize]{$\pflrecurnom_{\indice}$};%
+ }%
+ {%
+ \draw[pfltraitrecpointill,\pflrecurcolor] (\x,\y)--(\x,\pflxmin) ;%
+ }%
+ }%
+ {}
+ \def\i{\xintfloateval{\y}}%
+ }%
+ }%
+}
+
+%====HISTOBINOM
+\defKV[tkzHistoBinom]{%
+ Plage=\def\tkzGraphBinomPlage{#1},%
+ CouleurPlage=\def\tkzGraphBimomColPlage{#1},%
+ ClipX=\def\tkzGraphBinomXminmax{#1},%
+ CouleurNormale=\def\tkzGraphBinomColNorm{#1}
+}
+\setKVdefault[tkzHistoBinom]{%
+ Plage={},%
+ CouleurPlage=black,%
+ ClipX={},%
+ AffNormale=false,%
+ CouleurNormale=black
+}
+
+\NewDocumentCommand\TracerHistoBinomiale{ O{} D<>{phi} m m }{%
+ \restoreKV[tkzHistoBinom]%
+ \setKV[tkzHistoBinom]{#1}
+ \def\tkzGraphBinomN{#3}%
+ \def\tkzGraphBinomP{#4}%
+ \IfStrEq{\tkzGraphBinomXminmax}{}%
+ {%
+ \xdef\tkzGraphBinomXmin{0}%
+ \xdef\tkzGraphBinomXmax{\tkzGraphBinomN}%
+ }%
+ {%
+ \StrCut{\tkzGraphBinomXminmax}{-}{\tkzGraphBinomXmin}{\tkzGraphBinomXmax}%
+ \IfStrEq{\tkzGraphBinomXmin}{*}{\xdef\tkzGraphBinomXmin{0}}{}%
+ \IfStrEq{\tkzGraphBinomXmax}{*}{\xdef\tkzGraphBinomXmax{\tkzGraphBinomN}}{}%
+ }%
+ \IfStrEq{\tkzGraphBinomPlage}{}%
+ {}%
+ {%
+ \StrCut{\tkzGraphBinomPlage}{-}{\tkzGraphBinomColorMin}{\tkzGraphBinomColorMax}%
+ \IfStrEq{\tkzGraphBinomColorMin}{*}{\xdef\tkzGraphBinomColorMin{\tkzGraphBinomXmin}}{}%
+ \IfStrEq{\tkzGraphBinomColorMax}{*}{\xdef\tkzGraphBinomColorMax{\tkzGraphBinomXmax}}{}%
+ }%
+ %coloriage éventuel
+ \IfStrEq{\tkzGraphBinomPlage}{}%
+ {}%
+ {%
+ \xintFor* ##1 in {\xintSeq{\tkzGraphBinomColorMin}{\tkzGraphBinomColorMax}}\do{%
+ \xdef\tkztmpYYY{\xintfloateval{binomial(\tkzGraphBinomN,##1)*(\tkzGraphBinomP)^(##1)*(1-(\tkzGraphBinomP))^((\tkzGraphBinomN)-(##1))}}%
+ \draw[draw=none,fill=\tkzGraphBimomColPlage,fill opacity=0.5] ({##1-0.5},{\pflymin}) rectangle++ (1,{\tkztmpYYY-\pflymin}) ;
+ }%
+ }%
+ %tracé
+ \xintFor* ##1 in {\xintSeq{\tkzGraphBinomXmin}{\tkzGraphBinomXmax}}\do{%
+ \xdef\tkztmpYYY{\xintfloateval{binomial(\tkzGraphBinomN,##1)*(\tkzGraphBinomP)^(##1)*(1-(\tkzGraphBinomP))^((\tkzGraphBinomN)-(##1))}}%
+ \draw[pfltrait] ({##1-0.5},{\pflymin}) rectangle++ (1,{\tkztmpYYY-\pflymin}) ;
+ }%
+ \ifboolKV[tkzHistoBinom]{AffNormale}%
+ {%
+ \xdef\tkzMinNormHistoBinom{\xintfloateval{{\tkzGraphBinomXmin-0.5}}}%
+ \xdef\tkzMaxNormHistoBinom{\xintfloateval{{\tkzGraphBinomXmax+0.5}}}%
+ \xdef\tkzEsperNorm{\xintfloateval{(#3)*(#4)}}%
+ \xdef\tkzVarNorm{\xintfloateval{sqrt((#3)*(#4)*(1-(#4)))}}%
+ \DefinirLoiNormale[Trace,Couleur=\tkzGraphBinomColNorm,pflcourbe,Debut=\tkzMinNormHistoBinom,Fin=\tkzMaxNormHistoBinom]<#2>{\tkzEsperNorm}{\tkzVarNorm}
+ }%
+ {}%
+}
+
+%====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/tramlines/tramlines.sty b/Master/texmf-dist/tex/latex/tramlines/tramlines.sty
index f3288a8d1ff..72878c423eb 100644
--- a/Master/texmf-dist/tex/latex/tramlines/tramlines.sty
+++ b/Master/texmf-dist/tex/latex/tramlines/tramlines.sty
@@ -1,6 +1,6 @@
-\def\tramlinesversionnumber{1.1.0}
+\def\tramlinesversionnumber{1.1.1}
\ProvidesPackage{tramlines}
-[2023/01/29\tramlinesversionnumber\
+[2024/07/18\tramlinesversionnumber\
Tramlines]
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -36,7 +36,7 @@
\centering
{%notglobal
\setlength\doublerulesep{\tramlinesep}% <-- set distance between double rule
-\begin{tabular}[t]{l c c }
+\begin{tabular}[b]{c c c }
\toprule\toprule
& #1 & \\
\bottomrule\bottomrule
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 67c92a59397..62af9069e55 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeTUDa.sty' version 3.38 (2024-05-07),
+%% This is file `beamercolorthemeTUDa.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty
index 46c7da19c9d..14a86607d18 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamercolorthemeTUDa2008.sty' version 3.38 (2024-05-07)
+%% This is file `beamercolorthemeTUDa2008.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty
index a245163dc16..c2ec43d33ea 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeTUDa.sty' version 3.38 (2024-05-07)
+%% This is file `beamerfontthemeTUDa.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty
index 737f7595087..4ac32a79cda 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerfontthemeTUDa2008.sty' version 3.38 (2024-05-07)
+%% This is file `beamerfontthemeTUDa2008.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty
index 6a9072ed6eb..f2a82c86a5f 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa.sty' version 3.38 (2024-05-07)
+%% This is file `beamerinnerthemeTUDa.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty
index cab08e361c2..55644e97664 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa2008.sty' version 3.38 (2024-05-07),
+%% This is file `beamerinnerthemeTUDa2008.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty
index 22d50340c2a..e4780a9fefd 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerinnerthemeTUDa2023.sty' version 3.38 (2024-05-07),
+%% This is file `beamerinnerthemeTUDa2023.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty
index 6081832c167..38f1a7b00a2 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeTUDa.sty' version 3.38 (2024-05-07),
+%% This is file `beamerouterthemeTUDa.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty
index 70e31eecdea..b74da09f609 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerouterthemeTUDa2008.sty' version 3.38 (2024-05-07),
+%% This is file `beamerouterthemeTUDa2008.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
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 04fac2c523c..e84e7fa228e 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa-mecheng.sty' version 3.38 (2024-05-07),
+%% This is file `beamerthemeTUDa-mecheng.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\ProvidesExplPackage{beamerthemeTUDa-mecheng}{\filedate}{\fileversion}{specific tudabeamer configuration for the department of mechanical engineering}
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty
index 7287a8625e9..beb85e6785d 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa.sty' version 3.38 (2024-05-07),
+%% This is file `beamerthemeTUDa.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty
index 684fc16de50..f3c3064841c 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa2008.sty' version 3.38 (2024-05-07),
+%% This is file `beamerthemeTUDa2008.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\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]
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty
index 48e7d697b9b..7095ba69f12 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty
@@ -1,4 +1,4 @@
-%% This is file `beamerthemeTUDa2023.sty' version 3.38 (2024-05-07)
+%% This is file `beamerthemeTUDa2023.sty' version 3.41 (2024-07-02)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
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 1978288520d..55147ed57f1 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a0paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a0paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a0paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
+\ProvidesExplFile{tuda-a0paper.clo}{2024-07-01}{3.40}{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
+%%
+%% End of file `tuda-a0paper.clo'.
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 bc632089335..4a89742e12c 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a1paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a1paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a1paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a1paper}
+\ProvidesExplFile{tuda-a1paper.clo}{2024-07-01}{3.40}{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
+%%
+%% End of file `tuda-a1paper.clo'.
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 cda6b6762be..57121954a49 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a2paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a2paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a2paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
+\ProvidesExplFile{tuda-a2paper.clo}{2024-07-01}{3.40}{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}}
+ \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
+%%
+%% End of file `tuda-a2paper.clo'.
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 3633a545840..e841639ad03 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a3paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a3paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a3paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a3paper}
+\ProvidesExplFile{tuda-a3paper.clo}{2024-07-01}{3.40}{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
+%%
+%% End of file `tuda-a3paper.clo'.
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 3618253919d..646a994a6ad 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a4paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a4paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a4paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a4paper}
+\ProvidesExplFile{tuda-a4paper.clo}{2024-07-01}{3.40}{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
+%%
+%% End of file `tuda-a4paper.clo'.
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 fda679c1830..8c0ef0e94f7 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo
@@ -1,4 +1,4 @@
-%% This is file `tuda-a5paper.clo' version 3.38 (2024-05-07),
+%% This is file `tuda-a5paper.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,16 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
-\ProvidesExplFile{tuda-a5paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a5paper}
+\ProvidesExplFile{tuda-a5paper.clo}{2024-07-01}{3.40}{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
+%%
+%% End of file `tuda-a5paper.clo'.
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 04e7c5712d1..b0a32c7502f 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty
@@ -1,4 +1,4 @@
-%% This is file `tuda-pgfplots.sty' version 3.38 (2024-05-07),
+%% This is file `tuda-pgfplots.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\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]
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls
index fdf0d8e02f4..df4840467e0 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls
@@ -1,4 +1,4 @@
-%% This is file `tudabeamer.cls' version 3.38 (2024-05-07),
+%% This is file `tudabeamer.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tudabeamer}
[\filedate\space\fileversion\space]
@@ -124,9 +124,9 @@
\bool_if:NT \g_ptxcd_pdfa_bool {\PassOptionsToPackage{RGB}{xcolor}}
\bool_if:NT \g_ptxcd_pdfa_bool {
-\RequirePackage{scrlfile}
-\PreventPackageFromLoading{hyperref}
-\def\hypersetup#1{}
+ \RequirePackage{scrlfile}
+ \PreventPackageFromLoading{hyperref}
+ \def\hypersetup#1{}
}
\ExplSyntaxOff
@@ -137,7 +137,16 @@
\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}
@@ -242,7 +251,7 @@
\let\accentfont\normalfont%
\file_if_exist:nT {\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str.sty}
- {\usepackage{\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str}}
+ {\RequirePackage{\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str}}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def
index 6a8afea418f..44f09edb861 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.def' version 3.38 (2024-05-07),
+%% This is file `tudacolors.def' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\ProvidesFile{tudacolors.def}
[\filedate\space\fileversion\space Color definitions for tuda-ci]
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty
index 137697f2612..448483daaf7 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty
@@ -1,4 +1,4 @@
-%% This is file `tudacolors.sty' version 3.38 (2024-05-07),
+%% This is file `tudacolors.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle}
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls
index 07afd270c26..366b9668261 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaexercise.cls' version 3.38 (2024-05-07),
+%% This is file `tudaexercise.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudaexercise}
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty b/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty
index 6a7873942a1..9fb3ad06005 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty
@@ -1,4 +1,4 @@
-%% This is file `tudafonts.sty' version 3.38 (2024-05-07),
+%% This is file `tudafonts.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tudafonts}
[\filedate\space\fileversion\space
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls
index de3430b5072..52b86eb3321 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaleaflet.cls' version 3.38 (2024-05-07),
+%% This is file `tudaleaflet.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudaleaflet}{\filedate}{\fileversion}{Leaflets using the Corporate Design of TU Darmstadt}
@@ -88,7 +88,7 @@
\RequirePackage{scrextend}
\RequirePackage{scrlayer}
\PassOptionsToPackage{cmyk}{tudacolors}
-\usepackage[paper=leaflet]{tudarules}
+\RequirePackage[paper=leaflet]{tudarules}
\setlength{\headheight}{1cm}%to add headline
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls
index 15baed60693..9eb3a15953a 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaletter.cls' version 3.38 (2024-05-07),
+%% This is file `tudaletter.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudaletter}
@@ -48,6 +48,8 @@
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:,
@@ -78,8 +80,38 @@
\ProcessKeyOptions[ptxcd/letter]
-\bool_if:NT \g_ptxcd_pdfa_bool {\PassOptionsToPackage{RGB}{xcolor}}
+\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}
+}
\newcommand*{\@fontsizefilebase}{tudalettersize}
@@ -89,6 +121,11 @@
% 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}
@@ -100,10 +137,6 @@
\let\ptxcd_use_premiumcolor_text:\relax
}
-\RequirePackage{tudafonts}
-\RequirePackage{graphicx}
-\RequirePackage{afterpage}
-\RequirePackage{ragged2e}
%%%%%Briefbogen
@@ -139,32 +172,50 @@
\geometry{top=30mm}
}
-\@setplength{firstheadhpos}{\c_ptxcd_HeadMargin_dim}
-\@setplength{firstheadvpos}{\c_ptxcd_HeadMargin_dim}
-\@setplength{firstheadwidth}{\dim_eval:n {\paperwidth - 2\c_ptxcd_HeadMargin_dim}}
+\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[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{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{toaddrhpos}{\c_ptxcd_LeftMargin_dim}
+\setplength{toaddrvpos}{50mm}
+\setplength{backaddrheight}{4mm}
+\setplength{toaddrindent}{0mm}
-\@setplength{refhpos}{\c_ptxcd_LeftMargin_dim}
-\@setplength{refvpos}{106mm}
+\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}
-\@setplength{refaftervskip}{0pt}
-\@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}
+\setplength{subjectaftervskip}{2\baselineskip}
+\setplength{lochpos}{\c_ptxcd_HeadMargin_dim}
+\setplength{locvpos}{\dimexpr\useplength{refvpos}+\useplength{subjectaftervskip}+1.4\baselineskip\relax}
+\setplength{refaftervskip}{0pt}
+\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}
-\RequirePackage[paper=a4]{tudarules}
\bool_if:NTF \g__ptxcd_letter_headrule_bool {
\ptxcd_makeheadrule[width=\useplength{firstheadwidth},color=identbarcolor]{ptxcd_LetterheadRule}
@@ -354,7 +405,7 @@
\int_new:N \l_ptxcd_letter_lastpage_int
\cs_new:Nn \ptxcd_letterpagemark: {
%get lastpage for this letter if not already done
- \int_compare:nTF {\value{page} = 1} {
+ \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}
@@ -362,16 +413,14 @@
{\bool_set_true:N \l_tmpa_bool}
\bool_if:NT \l_tmpa_bool {
\int_if_exist:cF {c_ptxcd_letter\thisletter _lastpage_int} {
- \expandafter\ifx\csname r@\thisletter.lastpage\endcsname\relax
- %warning -> rerun latex
- \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {0}
- \else
- \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {
- \cs_if_exist:NTF \hypersetup
- {\exp_args:NNc \expandafter \@secondoffive { r@\thisletter.lastpage}}
- {\exp_args:NNc \expandafter \use_ii:nn { r@\thisletter.lastpage}}
+ \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}
}
- \fi
}
\usekomafont{pagenumber}\pagename\nobreakspace\thepage
\int_compare:nT {
@@ -429,63 +478,135 @@
\def\letterpagestyle{TUDaLetter}
%pdfa
-\if_bool:N \g_ptxcd_pdfa_bool
+\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}
-%%hyperref
-\hypersetup{hidelinks, unicode}
-\iow_new:N \ptxcd_xmpdata_stream
-\tl_new:N \g_ptxcd_xmp_title
-\tl_new:N \g_ptxcd_xmp_author
-
-\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
+ \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_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}}
+ \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
}
- } {
- %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}}
+ \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.
}{
- \msg_error:nnn{tudaletter} {unknown-metadata} {#1}
+ If~possible~please~use~hyperref's~\strung\hypersetup~command~for~the~metadata~directly.\\
+ See~hyperref~documentation~for~details~on~usage.
}
-}
-\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]{
+ \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}
+ }
-\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.}
+ \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:
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo b/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo
index 54348ee206a..216642a28ce 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudalettersize10pt.clo' version 3.38 (2024-05-07),
+%% This is file `tudalettersize10pt.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -37,9 +37,11 @@
%%
\ProvidesFile{%
tudalettersize10pt.clo%
-}[tudaletter font size class option]
-
-\def\normalsize{%
+}[
+ tudaletter font size class option (10pt)
+]
+\let\normalsize\@undefined
+\DeclareRobustCommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
@@ -49,9 +51,11 @@
}
\def\datasize{%
\normalsize
- \@setfontsize\normalsize\@xpt\@xiiipt
+ \@setfontsize\normalsize
+ \@xpt\@xiiipt
}
-\def\small{%
+\let\small\@undefined
+\DeclareRobustCommand\small{%
\@setfontsize\small\@ixpt{11}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus2\p@
@@ -62,7 +66,8 @@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
-\def\footnotesize{%
+\let\footnotesize\@undefined
+\DeclareRobustCommand\footnotesize{%
\@setfontsize\footnotesize{7.5pt}\@xpt%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
@@ -73,21 +78,28 @@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
-\def\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
-\def\tiny{\@setfontsize\tiny\@vipt\@viipt}
-\def\large{\@setfontsize\large\@xiipt{14}}
-\def\Large{\@setfontsize\Large\@xivpt{18}}
-\def\LARGE{\@setfontsize\LARGE\@xviipt{22}}
-\def\huge{\@setfontsize\huge\@xxpt{25}}
-\def\Huge{\@setfontsize\Huge\@xxvpt{30}}
+\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\@viipt\@viiipt}
+\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
+\DeclareRobustCommand\large{\@setfontsize\large\@xiipt{14}}
+\DeclareRobustCommand\Large{\@setfontsize\Large\@xivpt{18}}
+\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
+\DeclareRobustCommand\huge{\@setfontsize\huge\@xxpt{25}}
+\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
\normalsize
\setlength\footnotesep {6.65\p@}
\setlength{\skip\footins} {9\p@ \@plus 4\p@ \@minus 2\p@}
-\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep {20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\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{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\@fptop {0\p@ \@plus 1fil}
\setlength\@fpsep {8\p@ \@plus 2fil}
\setlength\@fpbot {0\p@ \@plus 1fil}
@@ -96,32 +108,32 @@
\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@ \@minus4\p@
- \itemsep4\p@ \@plus2\p@ \@minus\p@}
+ \parsep 4\p@ \@plus2\p@ \@minus\p@
+ \topsep 8\p@ \@plus2\p@ \@minus4\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}
+ \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
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg b/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg
index 83f385b1726..d1d70773e85 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudamecheng.cfg' version 3.38 (2024-05-07),
+%% This is file `tudamecheng.cfg' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\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)}
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls
index 99b2d2d07d4..0286215cb05 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudaposter.cls' version 3.38 (2024-05-07),
+%% This is file `tudaposter.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt}
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls
index a863197f836..976d2a943ca 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls
@@ -1,4 +1,4 @@
-%% This is file `tudapub.cls' version 3.38 (2024-05-07),
+%% This is file `tudapub.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudapub}
@@ -224,11 +224,6 @@
}
}
-\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}
@@ -254,6 +249,64 @@
\LoadClass{\g_ptxcd_pub_class_tl}
+\RequirePackage{tudafonts}
+\RequirePackage{tudacolors}
+\RequirePackage[draft=false]{scrlayer-scrpage}
+\RequirePackage{graphicx}
+
+\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}
+ }
+} {
+ \PassOptionsToPackage{hidelinks, unicode}{hyperref}
+ \RequirePackage{hyperref}
+}
+
+\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} {
@@ -299,12 +352,6 @@
}
-\usepackage{tudarules}
-
-
-%,~ subsection,~
-\usepackage{tudafonts}
-
%Margin & titlefontsize setup setup
\bool_new:N \g_ptxcd_marginpar_bool
@@ -386,8 +433,7 @@
%%%%%Anfang Randeinstellungen Geometry
-%Has to be loaded here due to headwidth options
-\usepackage[draft=false]{scrlayer-scrpage}
+
\AddToHook{begindocument}[tudapub:BCOR-titlepage]{
\bool_if:NT \g_ptxcd_BCOR_titlepage_bool
@@ -464,7 +510,6 @@
-
\newcommand*{\institution}[1]{
\def\ptxcd_institution{#1}
}
@@ -472,7 +517,6 @@
\cs_new:Nn \ptxcd_titlerule_sep: {\the\dp\strutbox}
-\usepackage{tudacolors}
\setkomafont{disposition}{\sffamily\bfseries}
\setkomafont{pageheadfoot}{\sffamily\small}
@@ -600,7 +644,6 @@
\newcommand{\titleimage}[1]{\tl_gset:Nn \g_ptxcd_titleimage_code_tl {#1}}
\box_new:N \l__ptxcd_titlegraphic_box
-\RequirePackage{trimclip}
\NewDocumentCommand{\titlegraphic}{sm}{
\IfBooleanTF{#1}{
@@ -640,7 +683,7 @@
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.
+ Otherwise~the~german~vaue~#3~will~be~used.
}
\cs_new:Nn \ptxcd_define_captionFallback:Nn {
@@ -870,43 +913,8 @@
\DeclareNewPageStyleByLayers{title.TUDa}{title.TUDa.background,title.TUDa.rule,title.TUDa.image}
%Logos
-\RequirePackage{graphicx}
\if_bool:N \g_ptxcd_pdfx_bool
-
- \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.
- }
- %only apply the hack if pdfx is older than the working version
- \PassOptionsToPackage{a-2b}{pdfx}
- \RequirePackage{pdfx}
-
- \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}
- }
-
%%hyperref
\hypersetup{hidelinks, unicode}
\iow_new:N \ptxcd_xmpdata_stream
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty b/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty
index 76dae0e2e7a..98182d08c18 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty
@@ -1,4 +1,4 @@
-%% This is file `tudarules.sty' version 3.38 (2024-05-07),
+%% This is file `tudarules.sty' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle}
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls
index e3bda42e208..71e8123ef10 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls
@@ -1,4 +1,4 @@
-%% This is file `tudasciposter.cls' version 3.38 (2024-05-07),
+%% This is file `tudasciposter.cls' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\def\fileversion{3.41}
+\def\filedate{2024-07-02}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt}
@@ -123,16 +123,36 @@
\PassOptionsToPackage{DIV=10}{typearea}
\LoadClass[parskip=full-]{scrartcl}
\RequirePackage{tudafonts}
-\RequirePackage{tikz}
-\usetikzlibrary{calc}
+\RequirePackage{calc}
+\RequirePackage[margin=0pt]{geometry}
+\RequirePackage{tudacolors}
+
+\ExplSyntaxOn
+
+\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:
+
+\ExplSyntaxOff
\RequirePackage{tcolorbox}
\tcbuselibrary{poster}
-\RequirePackage[margin=0pt]{geometry}
-\ExplSyntaxOn
-
+\RequirePackage[mode=tikz]{tudarules}
+\RequirePackage{qrcode}
+\ExplSyntaxOn
%Font adjusments
\renewcommand*{\familydefault}{\sfdefault}
@@ -150,9 +170,7 @@
% end of font adjustments
-\RequirePackage[mode=tikz]{tudarules}
-\RequirePackage{tudacolors}
-\RequirePackage{qrcode}
+
\dim_const:Nn \c_ptxcd_headrule_ht_dim {\c_ptxcd_rulesep_dim +\c_ptxcd_largerule_dim + \c_ptxcd_smallrule_dim}
%Setup title
@@ -231,8 +249,6 @@
%%%%%%%%%%%%%%%%%%%
%PDFA
\if_bool:N \g_ptxcd_pdfa_bool
-\PassOptionsToPackage{a-2b}{pdfx}
-\RequirePackage{pdfx}
%%hyperref
\hypersetup{hidelinks, unicode, hyperfootnotes=false}
\iow_new:N \ptxcd_xmpdata_stream
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo b/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo
index 8537d16f7c6..4f618069923 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo
@@ -1,4 +1,4 @@
-%% This is file `tudasize9pt.clo' version 3.38 (2024-05-07),
+%% This is file `tudasize9pt.clo' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg b/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg
index e25ded1a686..54ffeeacd0a 100644
--- a/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg
+++ b/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg
@@ -1,4 +1,4 @@
-%% This is file `tudathesis.cfg' version 3.38 (2024-05-07),
+%% This is file `tudathesis.cfg' version 3.41 (2024-07-02),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.38}
-\def\filedate{2024-05-07}
+\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)}
@@ -56,8 +56,9 @@
}
{
\ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department}
- \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname{}~ of}
\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
{
@@ -203,7 +204,7 @@
\IfBooleanTF{#1}{
\tl_gset:Nn \ptxcd_department: {#3}
\tl_gset:Nn \ptxcd_in_department{#3}
- \IfNoValueTF {\tl_gset:Nn \ptxcd_box_department {#3}} {\tl_gset:Nn \ptxcd_box_department{#2}}
+ \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}
@@ -373,7 +374,7 @@
{\keys_set:nn {ptxcd/thesis} {printid=#1}}
\lowertitleback{
\urlstyle{same}
- \selectlanguage{ngerman}
+ \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}\\
@@ -530,7 +531,7 @@
\selectfont
{\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}%
\usekomafont{subject}
- \bool_if:NT \g_ptxcd_dr_bool {\selectlanguage{ngerman}}
+ \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}
{%
@@ -644,7 +645,7 @@
{\keys_set:nn {ptxcd/thesis} {affidavit=#2}}%
}%
\clearpage
-\begin{otherlanguage}{ngerman}
+\begin{otherlanguage}{german}
\bool_if:NTF \g_ptxcd_dr_bool {
\g__ptxcd_affidavit_dr_tl
} {
@@ -661,8 +662,6 @@
\expandafter\def\csname g__ptxcd_affidavit_dr_tl\endcsname {%
\section*{Erklärungen laut Promotionsordnung}
- \subsection*{\S\,8 Abs. 1 lit. c PromO}
- Ich versichere hiermit, dass die elektronische Version meiner Dissertation mit der schriftlichen Version übereinstimmt.
\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.
@@ -744,7 +743,7 @@
Use~"ignore-title-language"~Option~to~ignore~this~message~at~your~own~risk.
}
-\PassOptionsToPackage{ngerman}{babel}
+\PassOptionsToPackage{german}{babel}
\AtBeginDocument{
\@ifpackageloaded{babel}{}{
\msg_new:nnnn{tudapub/thesis} {missing-babel} {
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/tutodoc/tutodoc-bw-admonitions.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-admonitions.css.cls.sty
new file mode 100644
index 00000000000..ab944027997
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-admonitions.css.cls.sty
@@ -0,0 +1,46 @@
+% -- COLORFUL HIGHLIGHTING OF CONTENT -- %
+
+\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}
+
+
+\ExplSyntaxOn
+
+%%%
+% We use two ''prop'' variables to factorize the code just after.
+%%%
+\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
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-listing.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-listing.css.cls.sty
new file mode 100644
index 00000000000..cb370a49534
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-listing.css.cls.sty
@@ -0,0 +1,30 @@
+% :: INLINE LATEX MACRO :: %
+
+\newcommand{\tutodoc@latex@style}{friendly_grayscale}
+
+\colorlet{tutodoc@latex@back@color}{gray!5}
+\colorlet{tutodoc@latex@text@color}{black}
+
+
+% :: THE TCOLORBOX LISTING STYLE :: %
+
+\colorlet{tutodoc@latex@frame@color}{darkgray}
+
+\newcommand{\tutodoc@latex@left@len}{1mm}
+\newcommand{\tutodoc@latex@right@len}{1mm}
+\newcommand{\tutodoc@latex@top@len}{1mm}
+\newcommand{\tutodoc@latex@bottom@len}{1mm}
+
+\newcommand{\tutodoc@latex@arc@len}{.75mm}
+
+\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!30}
+\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}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-main.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-main.css.cls.sty
new file mode 100644
index 00000000000..af55d326a5a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-main.css.cls.sty
@@ -0,0 +1,3 @@
+% -- LINKS -- %
+
+\definecolor{tutodoc@link@color}{named}{DimGray}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-showcase.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-showcase.css.cls.sty
new file mode 100644
index 00000000000..a04b2719f5e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-showcase.css.cls.sty
@@ -0,0 +1,21 @@
+% -- 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%
+}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-version-n-change.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-version-n-change.css.cls.sty
new file mode 100644
index 00000000000..fb32c4d116b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-bw-version-n-change.css.cls.sty
@@ -0,0 +1,5 @@
+% -- VERSION & CHANGES -- %
+
+\NewExpandableDocumentCommand{\tutodoc@changes@when@color}{}{%
+ gray%
+}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-admonitions.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-admonitions.css.cls.sty
new file mode 100644
index 00000000000..1ce4b721d7d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-admonitions.css.cls.sty
@@ -0,0 +1,50 @@
+% -- COLORFUL HIGHLIGHTING OF CONTENT -- %
+
+\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}{black!30}
+
+
+\ExplSyntaxOn
+
+%%%
+% We use two ''prop'' variables to factorize the code just after.
+%%%
+\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
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-listing.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-listing.css.cls.sty
new file mode 100644
index 00000000000..1d62d2eb922
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-listing.css.cls.sty
@@ -0,0 +1,30 @@
+% :: INLINE LATEX MACRO :: %
+
+\newcommand{\tutodoc@latex@style}{pastie}
+
+\colorlet{tutodoc@latex@back@color}{yellow!4}
+\colorlet{tutodoc@latex@text@color}{black}
+
+
+% :: THE TCOLORBOX LISTING STYLE :: %
+
+\colorlet{tutodoc@latex@frame@color}{darkgray}
+
+\newcommand{\tutodoc@latex@left@len}{1mm}
+\newcommand{\tutodoc@latex@right@len}{1mm}
+\newcommand{\tutodoc@latex@top@len}{1mm}
+\newcommand{\tutodoc@latex@bottom@len}{1mm}
+
+\newcommand{\tutodoc@latex@arc@len}{.75mm}
+
+\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!30}
+\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}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-main.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-main.css.cls.sty
new file mode 100644
index 00000000000..51e3632918e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-main.css.cls.sty
@@ -0,0 +1,3 @@
+% -- LINKS -- %
+
+\colorlet{tutodoc@link@color}{NavyBlue!85!white}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-showcase.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-showcase.css.cls.sty
new file mode 100644
index 00000000000..0f62dc6a08e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-showcase.css.cls.sty
@@ -0,0 +1,21 @@
+% -- 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}%
+}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-version-n-change.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-version-n-change.css.cls.sty
new file mode 100644
index 00000000000..998e5ad08b0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-color-version-n-change.css.cls.sty
@@ -0,0 +1,5 @@
+% -- VERSION & CHANGES -- %
+
+\NewExpandableDocumentCommand{\tutodoc@changes@when@color}{}{%
+ \tdoclightcolor[60]{DarkBlue}%
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-admonitions.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-admonitions.css.cls.sty
new file mode 100644
index 00000000000..5716737a1a4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-admonitions.css.cls.sty
@@ -0,0 +1,50 @@
+% -- COLORFUL HIGHLIGHTING OF CONTENT -- %
+
+\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!68}
+
+
+\ExplSyntaxOn
+
+%%%
+% We use two ''prop'' variables to factorize the code just after.
+%%%
+\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
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-listing.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-listing.css.cls.sty
new file mode 100644
index 00000000000..d285e06253a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-listing.css.cls.sty
@@ -0,0 +1,30 @@
+% :: INLINE LATEX MACRO :: %
+
+\newcommand{\tutodoc@latex@style}{github-dark}
+
+\colorlet{tutodoc@latex@back@color}{\tdocdarkcolor[30]{white}}
+\colorlet{tutodoc@latex@text@color}{\tdocdarkcolor[80]{white}}
+
+
+% :: THE TCOLORBOX LISTING STYLE :: %
+
+\colorlet{tutodoc@latex@frame@color}{darkgray}
+
+\newcommand{\tutodoc@latex@left@len}{1mm}
+\newcommand{\tutodoc@latex@right@len}{1mm}
+\newcommand{\tutodoc@latex@top@len}{1mm}
+\newcommand{\tutodoc@latex@bottom@len}{1mm}
+
+\newcommand{\tutodoc@latex@arc@len}{.75mm}
+
+\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!30}
+\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}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-main.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-main.css.cls.sty
new file mode 100644
index 00000000000..ebb8a9a97b6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-main.css.cls.sty
@@ -0,0 +1,9 @@
+% -- SPECIFIC TEXT AND PAGE COLORS -- %
+
+\pagecolor{black}
+\color{\tdocdarkcolor[80]{white}}
+
+
+% -- LINKS -- %
+
+\definecolor{tutodoc@link@color}{HTML}{9591A6}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-showcase.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-showcase.css.cls.sty
new file mode 100644
index 00000000000..63c89b33c0f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-showcase.css.cls.sty
@@ -0,0 +1,21 @@
+% -- 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}%
+}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-version-n-change.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-version-n-change.css.cls.sty
new file mode 100644
index 00000000000..501e5795781
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-dark-version-n-change.css.cls.sty
@@ -0,0 +1,5 @@
+% -- VERSION & CHANGES -- %
+
+\NewExpandableDocumentCommand{\tutodoc@changes@when@color}{}{%
+ \tdoclightcolor[60]{cyan}%
+} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-admonitions.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-admonitions.css.cls.sty
new file mode 100644
index 00000000000..e0e006b0480
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-admonitions.css.cls.sty
@@ -0,0 +1,18 @@
+% -- COLORFUL HIGHLIGHTING OF CONTENT -- %
+
+\ExplSyntaxOn
+
+%%%
+% We use a ''seq'' variable to factorize the code just after.
+%%%
+\seq_new:N \g__tutodoc_focus_color_seq
+
+\seq_set_from_clist:Nn \g__tutodoc_focus_color_seq {
+ note,
+ tip,
+ imp,
+ caut,
+ warn,
+}
+
+\ExplSyntaxOff
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-listing.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-listing.css.cls.sty
new file mode 100644
index 00000000000..f4e86a62a22
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-listing.css.cls.sty
@@ -0,0 +1,31 @@
+% :: INLINE LATEX MACRO :: %
+
+\renewcommand{\tutodoc@latex@lexer}{text}
+\newcommand{\tutodoc@latex@style}{default}
+
+\colorlet{tutodoc@latex@back@color}{white}
+\colorlet{tutodoc@latex@text@color}{black}
+
+
+% :: THE TCOLORBOX LISTING STYLE :: %
+
+\colorlet{tutodoc@latex@frame@color}{darkgray}
+
+\newcommand{\tutodoc@latex@left@len}{1mm}
+\newcommand{\tutodoc@latex@right@len}{1mm}
+\newcommand{\tutodoc@latex@top@len}{1mm}
+\newcommand{\tutodoc@latex@bottom@len}{1mm}
+
+\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}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-main.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-main.css.cls.sty
new file mode 100644
index 00000000000..fc1194a3db9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-main.css.cls.sty
@@ -0,0 +1,3 @@
+% -- LINKS -- %
+
+\definecolor{tutodoc@link@color}{named}{black}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-showcase.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-showcase.css.cls.sty
new file mode 100644
index 00000000000..0e1c042616e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-showcase.css.cls.sty
@@ -0,0 +1,21 @@
+% -- 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%
+}
diff --git a/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-version-n-change.css.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-version-n-change.css.cls.sty
new file mode 100644
index 00000000000..a503714978d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-draft-version-n-change.css.cls.sty
@@ -0,0 +1,5 @@
+% -- VERSION & CHANGES -- %
+
+\NewExpandableDocumentCommand{\tutodoc@changes@when@color}{}{%
+ black%
+} \ 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 c639e1e9e03..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}{}{Caution}
-\NewDocumentCommand{\tutodoc@trans@warn@title}{}{Danger}
-\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-main-locale-en.cfg.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-main-locale-en.cfg.cls.sty
new file mode 100644
index 00000000000..f13e20adac5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-main-locale-en.cfg.cls.sty
@@ -0,0 +1,18 @@
+\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@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-main-locale-es.cfg.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-main-locale-es.cfg.cls.sty
new file mode 100644
index 00000000000..d1c5c7d09a9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-main-locale-es.cfg.cls.sty
@@ -0,0 +1,18 @@
+\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@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-main-locale-fr.cfg.cls.sty b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-main-locale-fr.cfg.cls.sty
new file mode 100644
index 00000000000..21bb1de116c
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc-main-locale-fr.cfg.cls.sty
@@ -0,0 +1,18 @@
+\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@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.cls b/Master/texmf-dist/tex/latex/tutodoc/tutodoc.cls
new file mode 100644
index 00000000000..fad3c185fe3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tutodoc/tutodoc.cls
@@ -0,0 +1,1429 @@
+% ********************************************************* %
+% ** 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-10-30} % Creation: 2023-11-29
+ {1.6.2}
+ {This package proposes tools for writing "human friendly" documentations of LaTeX packages.}
+
+
+% =================== %
+% == PACKAGES USED == %
+% =================== %
+
+% ------------- %
+% -- OPTIONS -- %
+% ------------- %
+
+\ExplSyntaxOn
+
+\tl_new:N \l__tutodoc_other_cls_options_tl
+
+\newcommand{ \tutodoc@theme } { color }
+
+\keys_define:nn { tutodoc / main / class / options } {
+ theme .choices:nn = {
+ bw,
+ color,
+ dark,
+ draft
+ } {
+ \renewcommand{ \tutodoc@theme } {
+ \tl_use:N \l_keys_choice_tl
+ }
+ },
+ unknown .code:n = {
+ \tl_set:Nn \l__tutodoc_other_cls_options_tl { #1 }
+ }
+}
+
+\ProcessKeyOptions[tutodoc / main / class / options]
+
+\exp_last_unbraced:NNV \LoadClass[ \l__tutodoc_other_cls_options_tl ]%
+ { article }%
+ [ 2022-06-01 ]
+
+\ExplSyntaxOff
+
+
+% ------------- %
+% -- IMPORTS -- %
+% ------------- %
+
+\RequirePackage[svgnames]%
+ {xcolor}%
+ [2023/11/15]
+
+\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}%
+ [2023/10/27]
+
+\RequirePackage{tocbasic}
+
+\RequirePackage{xcolor}%
+ [2022/06/12]
+
+\RequirePackage{hyperref}% To load after titlesec!
+ [2023-02-07]
+
+
+% We delegate the management of quoting to the ''csquotes'' package,
+% which takes care of the locale settings.
+\RequirePackage{csquotes}%
+ [2022-09-14]
+
+
+\RequirePackage{fontawesome5}%
+ [2022-05-02]
+
+\RequirePackage{keytheorems}%
+ [2024/09/19]
+
+\RequirePackage[svgnames]%
+ {xcolor}%
+ [2023/11/15]
+
+\RequirePackage{tcolorbox}%
+ [2024/07/10]
+
+\tcbuselibrary{breakable,
+ skins}
+
+
+\RequirePackage{clrstrip}%
+ [2021-08-28]
+
+
+\RequirePackage[highlightmode = immediate]%
+ {minted}%
+ [2024/09/22]
+
+\RequirePackage{tcolorbox}%
+ [2024/07/10]
+
+\tcbuselibrary{minted,
+ breakable,
+ skins}
+
+
+\RequirePackage{fontawesome5}%
+ [2022-05-02]
+
+\RequirePackage{marginnote}%
+ [2018/08/09]
+
+
+% =============== %
+% == MAIN CODE == %
+% =============== %
+
+% --------------------------- %
+% -- COLOR TRANSFORMATIONS -- %
+% --------------------------- %
+
+%%%
+% prototype::
+% #1 : (black-rate)
+% the amount of color relative to black.
+% #2 : (color)
+% one color following the ''xcolor'' 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 ''xcolor'' 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%
+}
+
+
+% --------------------- %
+% -- LOCALE SETTINGS -- %
+% --------------------- %
+
+\ExplSyntaxOn
+
+\msg_set:nnnn { tutodoc ~ (main) }
+ { main : unsupported-lang }
+ {
+ unsupported ~ language ~ << ~ #1 ~ >>. %
+ ~ %
+ We ~ will ~ use ~ << ~ en ~ >>.
+ }
+ { \msg_see_documentation_text:n { tutodoc } }
+
+
+\newcommand{\tutodoc@colon}{:}
+
+\AtBeginDocument{
+% We must take care of colons and spacing.
+ \@ifpackageloaded{babel}{
+ \iflanguage{french}{
+ \renewcommand{\tutodoc@colon}{\babelshorthand{:}}
+ }{}
+ }{}
+
+ \newcommand{\tdoclang}{\BCPdata{language}}
+
+% If the lang is not supported, we emit a warning and just turn
+% to the english language.
+ \makeatletter
+
+ \InputIfFileExists{tutodoc-main-locale-\tdoclang.cfg.cls.sty}{}{
+ \input{tutodoc-main-locale-en.cfg.cls.sty}
+
+ \msg_critical:nnx { tutodoc ~ (main) }
+ { main : unsupported-lang }
+ { \tdoclang }
+ }
+
+ \makeatother
+}
+
+\ExplSyntaxOff
+
+
+% ---------------------- %
+% -- GENERAL SETTINGS -- %
+% ---------------------- %
+
+\setlength{\parindent}{0cm}
+
+
+% --------------- %
+% -- 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}
+
+
+% ------------------- %
+% -- LINKS AND CO. -- %
+% ------------------- %
+
+\input{tutodoc-\tutodoc@theme-main.css.cls.sty}
+
+\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 NAMES -- %
+% ------------------------------ %
+
+%%%
+% 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}{% No star used.
+ \tdocquote{#2}%
+ }{% Star used.
+ \tutodoc@trans@in@EN{\tdocquote{#2}}%
+ }%
+}
+
+
+% ----------------------------------- %
+% -- SOBER HIGHLIGHTING OF CONTENT -- %
+% ----------------------------------- %
+
+% :::::::::::::::::::::: %
+% :: 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
+}
+
+
+%%%
+% 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,
+ ]
+ } {
+ \newkeytheorem{tdoc#1}[
+ name = \use:c { tutodoc@trans@#1@title },
+ numberlike = tdocexa,
+ ]
+ }
+
+ \cs_set:cpn { the tdoc #1 } { \thesection\arabic{tdoc#1} }
+}
+
+\ExplSyntaxOff
+
+
+% -------------------------------------- %
+% -- COLORFUL HIGHLIGHTING OF CONTENT -- %
+% -------------------------------------- %
+
+\input{tutodoc-\tutodoc@theme-admonitions.css.cls.sty}
+
+
+%%%
+% 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!
+%%%
+\ifcsundef{g__tutodoc_focus_color_seq}{
+%%%
+% source::
+% + https://tex.stackexchange.com/a/727022/6880
+% + https://tex.stackexchange.com/a/682332/6880
+% + https://tex.stackexchange.com/a/623232/6880
+%%%
+ \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,
+% 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,
+% We could have used
+% \AddToHook{env/tdoc#1/before}{\small}
+% and
+% \AddToHook{env/tdoc#1/after}{\normalsize}.
+ preheadhook = \small,
+ postfoothook = \normalsize
+ ]
+ }
+}
+
+\ExplSyntaxOff
+
+
+% ---------------------------------------------- %
+% -- NAMES OF PACKAGES, MACROS & ENVIRONMENTS -- %
+% ---------------------------------------------- %
+
+%%%
+% 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-options)
+% hard typed options with the good delimiters
+% #2 : (env-name)
+% the name of an environment
+%
+% :extra: this macro has a star version.
+%
+% Here are the four kind of outputs.
+%
+% 1) ''\tdocenv{myenv}'' prints
+% verb::''\begin{myenv} ... \end{myenv}''.
+%
+% 2) ''\tdocenv[{<opt1>[mando2]}]{myenv}'' prints
+% verb::''\begin{myenv}<opt1>[mando2] ... \end{myenv}''.
+%
+% 3) ''\tdocenv*{myenv}'' prints
+% verb::''myenv''.
+%
+% 4) ''\tdocenv*[{<opt1>[mando2]}]{myenv}'' prints
+% verb::''myenv''.
+%%%
+%
+% Cleaner code from https://tex.stackexchange.com/a/703379/6880 .
+\NewDocumentCommand{\tdocenv}{s O{} m}{%
+ \IfBooleanTF{#1}{%
+ \texttt{#3}%
+ }{%
+ \texttt{\string\begin\string{#3\string}#2 %
+ \!\!...\@\!\!\! %
+ \string\end\string{#3\string}}%
+ }%
+}
+
+
+% ------------------------- %
+% -- EXPLAINING PREFIXES -- %
+% ------------------------- %
+
+\ExplSyntaxOn
+
+% :::::::::::::: %
+% :: MESSAGES :: %
+% :::::::::::::: %
+
+\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}%
+}
+
+
+% ------------------------ %
+% -- GENERAL FORMATTING -- %
+% ------------------------ %
+
+\input{tutodoc-\tutodoc@theme-showcase.css.cls.sty}
+
+
+% :::::::::::::::::::::::: %
+% :: TEXT INSIDE A RULE :: %
+% :::::::::::::::::::::::: %
+
+\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
+
+
+% ::::::::::::::::::::::::::: %
+% :: 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 following the ''xcolor'' format.
+% This color is used to set the one for the decorated texts printed
+% corresponding to the two first arguments.
+% #4 : (text color)
+% color of the content
+% #5 : (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@basic}{m m m m m}{
+ \tdocruler[#5{#3}]{#1}%
+ \nopagebreak\medskip\nopagebreak\color{#4}%
+}{
+ \nopagebreak\medskip\nopagebreak
+ \tdocruler[#5{#3}]{#2}
+}
+
+
+%%%
+% prototype::
+% #1 : (up-text)
+% :see: env.tutodoc@showcase@basic
+% #2 : (down-text)
+% :see: env.tutodoc@showcase@basic
+% #3 : (stripe color)
+% :see: env.tutodoc@showcase@basic
+% #4 : (text color)
+% :see: env.tutodoc@showcase@basic
+% #5 : (rule color builder)
+% :see: env.tutodoc@showcase@basic
+% #6 : (back color builder)
+% :see: env.tutodoc@showcase@basic
+%
+% :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 m}{
+ \begin{colorstrip}{#6{#3}}
+ \begin{tutodoc@showcase@basic}{#1}{#2}{#3}{#4}{#5}
+}{
+ \end{tutodoc@showcase@basic}
+ \end{colorstrip}
+}
+
+
+\ExplSyntaxOn
+
+% ::::::::::::::::::::::: %
+% :: SETTING SOME KEYS :: %
+% ::::::::::::::::::::::: %
+
+\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
+\bool_new:N \l_tutodoc_showcase_nostripe_bool
+
+
+%%%
+% We define the key-val options that will be exposed by the \env
+% ''tdocshowcase''.
+%%%
+\keys_define:nn { tutodoc / showcase } {
+% Colors.
+ colstripe .tl_set:N = \l_tutodoc_showcase_stripe_color_tl,
+ colstripe .initial:n = \tutodoc@showcase@stripe@color,
+ coltext .tl_set:N = \l_tutodoc_showcase_text_color_tl,
+ coltext .initial:n = \tutodoc@showcase@text@color,
+% Stripe?
+ nostripe .bool_set:N = \l_tutodoc_showcase_nostripe_bool,
+ nostripe .initial:n = false,
+% 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)
+% the key-value options (see above).
+%
+% :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@basic ,
+% env.tutodoc@showcase@colorstrip
+%%%
+\NewDocumentEnvironment{tdocshowcase}{ O{} }{
+ \group_begin:
+ \keys_set:nn { tutodoc / showcase } { #1 }
+
+ \bool_if:NTF \l_tutodoc_showcase_nostripe_bool {
+ \begin{tutodoc@showcase@basic}
+ { \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 }
+ { \tl_use:N \l_tutodoc_showcase_text_color_tl }
+ { \tutodoc@showcase@build@rule@color }
+ }{
+ \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 }
+ { \tl_use:N \l_tutodoc_showcase_text_color_tl }
+ { \tutodoc@showcase@build@rule@color }
+ { \tutodoc@showcase@build@back@color }
+ }
+}{
+ \bool_if:NTF \l_tutodoc_showcase_nostripe_bool {
+ \end{tutodoc@showcase@basic}
+ }{
+ \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 }{
+ \group_begin:
+ \keys_set_known:nnN { tutodoc / showcase }
+ { #1 }
+ \l__tutodoc_showcase_options_tl
+
+ \exp_last_unbraced:NNV \tdocshowcase [\l__tutodoc_showcase_options_tl]
+ \input{#2}
+ \endtdocshowcase
+ \group_end:
+}
+
+\ExplSyntaxOff
+
+
+% -------------------- %
+% -- LATEX EXAMPLES -- %
+% -------------------- %
+
+% :::::::::::::::::::::::::::::::::::::::::::::: %
+% :: STYLES OF THE LISTING ENV. AND THE MACRO :: %
+% :::::::::::::::::::::::::::::::::::::::::::::: %
+
+\newcommand{\tutodoc@latex@lexer}{latex}
+
+\input{tutodoc-\tutodoc@theme-listing.css.cls.sty}
+
+
+% :::::::::::::::::::::::: %
+% :: INLINE LATEX MACRO :: %
+% :::::::::::::::::::::::: %
+
+%%%
+% See the \doc of the macro ''\newmintinline'' from the package ''minted''
+% to have \infos about the macro ''tdocinlatex''.
+%%%
+\newmintinline[tdocinlatex]{\tutodoc@latex@lexer}{%
+ bgcolor = tutodoc@latex@back@color,%
+ style/.expand once = \tutodoc@latex@style % <-- This needs minted3!
+}
+
+
+% ::::::::::::::::::::::::::::::::::: %
+% :: TCOLORBOX LISTING ENVIRONMENT :: %
+% ::::::::::::::::::::::::::::::::::: %
+
+\ExplSyntaxOn
+
+%%%
+% prototype::
+% #1 : (tdoclatex-style)
+% a style of formatting for a \latex listing and its output.
+%
+% :see: macro.tdoclatex ,
+% macro.tdoclatexinput
+%
+% In the following easy-to-understand macro, we use one fictive ''tcolorbox''
+% style such as to indicate an unknown ''tutodoc'' 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
+% "MISTYPED-STYLE"' and I am going to ignore it. Perhaps you misspelled it.
+%
+% See the pgfkeys package documentation for explanation.
+%%%
+\NewExpandableDocumentCommand{\tutodoc@latex@listing@format@option}{ m }{
+ \str_case:nnF { #1 } {
+ { sbs } { listing ~ side ~ text }
+ { code } { listing ~ only }
+ { std } { listing ~ and ~ text }
+ } { tdoclatex ~ bad ~ option ~ "#1" }
+}
+
+\ExplSyntaxOff
+
+%%
+% source::
+% + https://tex.stackexchange.com/a/604821/6880
+% + https://tex.stackexchange.com/a/327983/6880
+%%
+\tcbset{
+ tutodoc-latex-listing-style/.style = {
+% 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.
+ 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
+ },
+ #1
+ },
+}
+
+
+%%%
+% prototype::
+% #1 : (tdoclatex-style)
+% 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]{%
+ tutodoc-latex-listing-style = \tutodoc@latex@listing@format@option{#1}
+}
+
+
+% :::::::::::::::::::::::::::::::::::::: %
+% :: TCOLORBOX IMPORTED LISTING MACRO :: %
+% :::::::::::::::::::::::::::::::::::::: %
+
+%%%
+% prototype::
+% #1 : (tdoclatex-style)
+% :see: ''\newtcblisting{tdoclatex}''
+% #2 : (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}[2][std]{
+ listing file = {#2},
+ tutodoc-latex-listing-style = \tutodoc@latex@listing@format@option{#1}
+}
+
+
+% -------------------------- %
+% -- LATEX REAL USE CASES -- %
+% -------------------------- %
+
+\ExplSyntaxOn
+
+% ::::::::::::::::::::: %
+% :: SETTING THE KEY :: %
+% ::::::::::::::::::::: %
+
+\tl_new:N \l_tutodoc_listing_explain_tl
+
+%%%
+% prototype::
+% :see: macro.tdoclatexshow
+%
+% We add a key-val option specific to ''\tdoclatexshow'', the other ones
+% will be sent to ''\tdocshowcaseinput''.
+%%%
+\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)
+% 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 highlighted output.
+% #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[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
+
+
+% -- CHANGES - WHEN? --%
+
+\ExplSyntaxOn
+
+% :::::::::::::: %
+% :: MESSAGES :: %
+% :::::::::::::: %
+
+\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::
+% :action: this function checks if we have something like
+% ''YYYY-MM-DD'' and then it calls the function
+% ''\__tutodoc_translate_date_process:w'' to finish
+% the job.
+%
+% :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::
+% :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 :: %
+% :::::::::::::::::::::: %
+
+\input{tutodoc-\tutodoc@theme-version-n-change.css.cls.sty}
+
+\newlength{\tutodoc@version@vertical@sep@len}
+\setlength{\tutodoc@version@vertical@sep@len}{-4.25pt}
+
+\newlength{\tutodoc@version@vertical@offset@len}
+\setlength{\tutodoc@version@vertical@offset@len}{-.345cm}
+
+
+%%%
+% 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@vertical@offset@len} }{
+ \tutodoc@new@change@margin%
+ {#1} % Color
+ {#2} % Version
+ {#3} % Date
+ {\tutodoc@version@vertical@sep@len} % Last negative vertical spacing
+ {#4} % Vertical offset
+}
+
+
+% :::::::::: %
+% :: DATE :: %
+% :::::::::: %
+
+\newlength{\tutodoc@date@vertical@sep@len}
+\setlength{\tutodoc@date@vertical@sep@len}{-5.35pt}
+
+\newlength{\tutodoc@date@vertical@offset@len}
+\setlength{\tutodoc@date@vertical@offset@len}{-.345cm}
+
+%%%
+% 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@date@vertical@offset@len} }{
+ \tutodoc@new@change@margin%
+ {#1} % Color
+ {} % Version
+ {#2} % Date
+ {\tutodoc@date@vertical@sep@len} % Last negative spacing
+ {#3} % Vertical offset
+}
+
+
+% --------------------- %
+% -- CHANGES - WHAT? -- %
+% --------------------- %
+
+\ExplSyntaxOn
+
+% :::::::::::::: %
+% :: MESSAGES :: %
+% :::::::::::::: %
+
+\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_when_color_tl
+\tl_new:N \l_tutodoc_topic_date_tl
+\tl_new:N \l_tutodoc_topic_version_tl
+
+\keys_define:nn { tutodoc / version-n-change / topic / options } {
+% Colors.
+ col .tl_set:N = \l_tutodoc_topic_when_color_tl,
+ col .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
+
+
+\newlength{\tutodoc@topic@vertical@offset@len}
+\setlength{\tutodoc@topic@vertical@offset@len}{-.745cm}
+
+
+%%%
+% 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 above
+%
+% :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 }
+
+ \paragraph{%
+ \IfBlankF{#2}{\tdocicon{#2}}
+ \textsc{#1.}
+ \exp_args:Ne \IfBlankF{\l__tutodoc_topic_all_user_options_tl}{
+% A date and/or a version.
+ \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@vertical@sep@len}
+ {\tutodoc@topic@vertical@offset@len}
+ }
+ }
+
+ \begin{itemize}
+}{
+ \end{itemize}
+}
+
+
+% :::::::::::::::::::::: %
+% :: CLASSICAL TOPICS :: %
+% :::::::::::::::::::::: %
+
+%%%
+% We use a ''prop'' variable to factorize the code just after.
+%%%
+\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},
+}
+
+
+%%%
+% 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 used is translated into the good language).
+%%%
+\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}
+ }
+}
+
+
+%%%
+% prototype::
+% #1 : (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 }{ m } {
+ \tdocicon{\faAnchor}#1
+}
+
+\ExplSyntaxOff
+
+
+% ----------------- %
+% -- DECORATIONS -- %
+% ----------------- %
+
+% Source
+% + 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
+%%%
+\NewDocumentCommand{\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 5e0ea7a0fb4..00000000000
--- a/Master/texmf-dist/tex/latex/tutodoc/tutodoc.sty
+++ /dev/null
@@ -1,1063 +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-01-06} % Creation: 2023-11-29
- {1.1.0}
- {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 date or nothing)
-% #3 : the second material (a version number 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
- \__tdoc_translate_date:n { #2 }
- \par
- }
-
- \vspace{1pt}
-
- \par
- #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
- {#3} % Date
- {#2} % Version
- {-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/typog/typog.sty b/Master/texmf-dist/tex/latex/typog/typog.sty
index bbb03cb5cbe..d58f381051a 100644
--- a/Master/texmf-dist/tex/latex/typog/typog.sty
+++ b/Master/texmf-dist/tex/latex/typog/typog.sty
@@ -11,11 +11,11 @@
%% Copyright (C) 2024 by Ch. L. Spiel
%%
%% 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.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
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
@@ -25,13 +25,15 @@
%% This work consists of the files typog.dtx and typog.ins
%% and the derived files typog.sty, slant-angle.mp,
%% crooked-paragraphs.mp, smooth-parshapes.mp, title.mp,
-%% typog-example.tex, typog-nomt.tex, typog-grep.pl,
+%% typog-example.tex, typog-minimal-test.tex,
+%% typog-without-microtype-test.tex
+%% typog-grep.pl.in, typog-grep.pl,
%% typog-grep.pod, and teximan2latex.sed.
%%
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{typog}
- [2024/05/07 v0.3 TypoGraphic extensions]
+ [2024/07/08 v0.4 TypoGraphic extensions]
\RequirePackage{etoolbox}
\RequirePackage{everyhook}
@@ -40,10 +42,11 @@
\newcommand*{\typog@TYPOG}{}
\newcommand*{\typoglogo}{\textsf{T\itcorr*{-5}\textsl{y}poG}}
\newif\iftypog@debug
-\newcommand*{\typog@typeout}[1]
- {\iftypog@debug
- \typeout{typog: #1}%
- \fi}
+\newcommand*{\typog@typeout}[1]{\typeout{typog: #1}}
+
+\newcommand*{\typog@debug@typeout}[1]{\iftypog@debug\typog@typeout{#1}\fi}
+
+\newcounter{typog@@iteration}
\ExplSyntaxOn
\let\typog@trim@spaces=\tl_trim_spaces:o
@@ -85,20 +88,34 @@
\fi
}
-\newmuskip\typog@mathitalicscorrection
-\newlength{\typog@textitalicscorrection}
-\newlength{\typog@ligaturekern}
-\newlength{\typog@raisecapitaldash}
-\newlength{\typog@raisecapitalguillemets}
-\newlength{\typog@raisecapitalhyphen}
-\newlength{\typog@raisecapitaltimes}
-\newlength{\typog@raiseguillemets}
-\newlength{\typog@raisefiguredash}
-\newlength{\typog@slashkern}
-\newcommand*{\typog@breakpenalty}{\exhyphenpenalty}
+\newmuskip\typog@config@mathitalicscorrection
+
+\newdimen{\typog@adjust@labelitemi}
+\newdimen{\typog@adjust@labelitemii}
+\newdimen{\typog@adjust@labelitemiii}
+\newdimen{\typog@adjust@labelitemiv}
+\newdimen{\typog@adjust@lowercase@labelitemi}
+\newdimen{\typog@adjust@lowercase@labelitemii}
+\newdimen{\typog@adjust@lowercase@labelitemiii}
+\newdimen{\typog@adjust@lowercase@labelitemiv}
+\newdimen{\typog@adjust@uppercase@labelitemi}
+\newdimen{\typog@adjust@uppercase@labelitemii}
+\newdimen{\typog@adjust@uppercase@labelitemiii}
+\newdimen{\typog@adjust@uppercase@labelitemiv}
+
+\newlength{\typog@config@textitalicscorrection}
+\newlength{\typog@config@ligaturekern}
+\newlength{\typog@config@raisecapitaldash}
+\newlength{\typog@config@raisecapitalguillemets}
+\newlength{\typog@config@raisecapitalhyphen}
+\newlength{\typog@config@raisecapitaltimes}
+\newlength{\typog@config@raiseguillemets}
+\newlength{\typog@config@raisefiguredash}
+\newlength{\typog@config@slashkern}
+\newcommand*{\typog@config@breakpenalty}{\exhyphenpenalty}
\newlength{\typog@dim@unit}
\setlength{\typog@dim@unit}{.001em}
-\newcommand*{\typog@trackingttspacing}{300, 90, 60}
+\newcommand*{\typog@config@trackingttspacing}{300, 90, 60}
\newcommand*{\typog@default@shrink@i}{5}
\newcommand*{\typog@default@shrink@ii}{10}
\newcommand*{\typog@default@shrink@iii}{20}
@@ -122,77 +139,99 @@
\newcommand*{\typog@set@shrink@limits}
{\edef\typog@@star{*}%
- \edef\typog@@limit{\typog@triple@get@i{\typog@shrinklimits}}%
+ \edef\typog@@limit{\typog@triple@get@i{\typog@config@shrinklimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@i{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@ii{\typog@shrinklimits}}%
+ \edef\typog@@limit{\typog@triple@get@ii{\typog@config@shrinklimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@ii{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@iii{\typog@shrinklimits}}%
+ \edef\typog@@limit{\typog@triple@get@iii{\typog@config@shrinklimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@iii{\number\typog@@limit}\fi}
\newcommand*{\typog@set@stretch@limits}
{\edef\typog@@star{*}%
- \edef\typog@@limit{\typog@triple@get@i{\typog@stretchlimits}}%
+ \edef\typog@@limit{\typog@triple@get@i{\typog@config@stretchlimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@i{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@ii{\typog@stretchlimits}}%
+ \edef\typog@@limit{\typog@triple@get@ii{\typog@config@stretchlimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@ii{\number\typog@@limit}\fi
- \edef\typog@@limit{\typog@triple@get@iii{\typog@stretchlimits}}%
+ \edef\typog@@limit{\typog@triple@get@iii{\typog@config@stretchlimits}}%
\unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@iii{\number\typog@@limit}\fi}
\DeclareOptionX<typog>{breakpenalty}%
- {\renewcommand*{\typog@breakpenalty}{#1}}
+ {\renewcommand*{\typog@config@breakpenalty}{#1}}
\DeclareOptionX<typog>{debug}{\typog@debugtrue}
\DeclareOptionX<typog>{mathitalicscorrection}[.4mu]%
- {\typog@mathitalicscorrection=#1\relax}%
+ {\typog@config@mathitalicscorrection=#1\relax}%
\DeclareOptionX<typog>{nodebug}{\typog@debugfalse}
\DeclareOptionX<typog>{textitalicscorrection}[.02em]%
- {\setlength{\typog@textitalicscorrection}{#1}}
+ {\setlength{\typog@config@textitalicscorrection}{#1}}
\DeclareOptionX<typog>{ligaturekern}[.033333em]%
- {\setlength{\typog@ligaturekern}{#1}}
+ {\setlength{\typog@config@ligaturekern}{#1}}
+\DeclareOptionX<typog>{lowercaselabelitemadjustments}%
+ {\typog@debug@typeout{lowercaselabelitemadjustments={#1}}
+ \def\typog@@do##1{\addtocounter{typog@@iteration}{1}
+ \global\setlength{\csname typog@adjust@lowercase@labelitem\romannumeral\thetypog@@iteration\endcsname}{##1}}
+ \setcounter{typog@@iteration}{0}
+ \forcsvlist{\typog@@do}{#1}}
+\newcommand*{\typog@config@lowercaselabelitemadjustments}
+ {\the\typog@adjust@lowercase@labelitemi,\space
+ \the\typog@adjust@lowercase@labelitemii,\space
+ \the\typog@adjust@lowercase@labelitemiii,\space
+ \the\typog@adjust@lowercase@labelitemiv}
\DeclareOptionX<typog>{raisecapitaldash}[\z@]%
- {\setlength{\typog@raisecapitaldash}{#1}}
+ {\setlength{\typog@config@raisecapitaldash}{#1}}
\DeclareOptionX<typog>{raisecapitalguillemets}[\z@]%
- {\setlength{\typog@raisecapitalguillemets}{#1}}
+ {\setlength{\typog@config@raisecapitalguillemets}{#1}}
\DeclareOptionX<typog>{raisecapitalhyphen}[\z@]%
- {\setlength{\typog@raisecapitalhyphen}{#1}}
+ {\setlength{\typog@config@raisecapitalhyphen}{#1}}
\DeclareOptionX<typog>{raisecapitaltimes}[\z@]%
- {\setlength{\typog@raisecapitaltimes}{#1}}
+ {\setlength{\typog@config@raisecapitaltimes}{#1}}
\DeclareOptionX<typog>{raiseguillemets}[\z@]%
- {\setlength{\typog@raiseguillemets}{#1}}
+ {\setlength{\typog@config@raiseguillemets}{#1}}
\DeclareOptionX<typog>{raisefiguredash}[\z@]%
- {\setlength{\typog@raisefiguredash}{#1}}
+ {\setlength{\typog@config@raisefiguredash}{#1}}
\DeclareOptionX<typog>{raise*}[\z@]%
- {\setlength{\typog@raisecapitaldash}{#1}%
- \setlength{\typog@raisecapitalhyphen}{#1}%
- \setlength{\typog@raisecapitaltimes}{#1}%
- \setlength{\typog@raisefiguredash}{#1}}
+ {\setlength{\typog@config@raisecapitaldash}{#1}%
+ \setlength{\typog@config@raisecapitalhyphen}{#1}%
+ \setlength{\typog@config@raisecapitaltimes}{#1}%
+ \setlength{\typog@config@raisefiguredash}{#1}}
\DeclareOptionX<typog>{shrinklimits}%
[\typog@default@shrink@i, \typog@default@shrink@ii, \typog@default@shrink@iii]%
{\typog@require@preloaded@microtype
\ifx\@onlypreamble\@notprerr
\PackageWarning{typog}{option `shrinklimits' can only be used in the preamble}%
\else
- \edef\typog@shrinklimits{#1}%
+ \edef\typog@config@shrinklimits{#1}%
\typog@set@shrink@limits
\fi}
\DeclareOptionX<typog>{slashkern}[.05em]%
- {\setlength{\typog@slashkern}{#1}}
+ {\setlength{\typog@config@slashkern}{#1}}
\DeclareOptionX<typog>{stretchlimits}%
[\typog@default@stretch@i, \typog@default@stretch@ii, \typog@default@stretch@iii]%
{\typog@require@preloaded@microtype
\ifx\@onlypreamble\@notprerr
\PackageWarning{typog}{option `stretchlimits' can only be used in the preamble}%
\else
- \edef\typog@stretchlimits{#1}%
+ \edef\typog@config@stretchlimits{#1}%
\typog@set@stretch@limits
\fi}
-\DeclareOptionX<typog>{trackingttspacing}[\typog@trackingttspacing]%
+\DeclareOptionX<typog>{trackingttspacing}[\typog@config@trackingttspacing]%
{\typog@require@preloaded@microtype
\ifx\@onlypreamble\@notprerr
\PackageWarning{typog}{option `trackingttspacing' can only be used in the preamble}%
\else
- \typog@typeout{trackingttspacing=#1}%
+ \typog@debug@typeout{trackingttspacing=#1}%
\SetTracking[outer spacing={#1}]{encoding=*, family=tt*}{0}%
\fi}
+\DeclareOptionX<typog>{uppercaselabelitemadjustments}%
+ {\typog@debug@typeout{uppercaselabelitemadjustments={#1}}
+ \def\typog@@do##1{\addtocounter{typog@@iteration}{1}
+ \setlength{\csname typog@adjust@uppercase@labelitem\romannumeral\thetypog@@iteration\endcsname}{##1}}
+ \setcounter{typog@@iteration}{0}
+ \forcsvlist{\typog@@do}{#1}}
+\newcommand*{\typog@config@uppercaselabelitemadjustments}
+ {\the\typog@adjust@uppercase@labelitemi,\space
+ \the\typog@adjust@uppercase@labelitemii,\space
+ \the\typog@adjust@uppercase@labelitemiii,\space
+ \the\typog@adjust@uppercase@labelitemiv}
\newcommand*{\typog@initialize@options}
{\ExecuteOptionsX<typog>{
@@ -220,7 +259,30 @@
\fi
\ignorespaces}
{\ignorespacesafterend}
-\NewDocumentCommand{\typogget}{m}{\csname typog@#1\endcsname}
+\NewDocumentCommand{\typogget}{m}{\csname typog@config@#1\endcsname}
+
+\ExplSyntaxOn
+\cs_generate_variant:Nn \seq_set_split:Nnn {Nne}
+\cs_new:Npn \typog_get_nth_csname:cnn #1#2#3
+ {
+ \seq_set_split:Nne \l_tmpa_seq {,} {\cs:w typog@config@#2 \cs_end:}
+ \cs_gset:cpn {#1} {\seq_item:Nn \l_tmpa_seq {#3}}
+ }
+\cs_new:Npn \typog_get_nth_dimen:nnn #1#2#3
+ {
+ \seq_set_split:Nne \l_tmpa_seq {,} {\cs:w typog@config@#2 \cs_end:}
+ \dim_set:Nn {#1} {\seq_item:Nn \l_tmpa_seq {#3}}
+ }
+\NewDocumentCommand{\typoggetnth}{m m m}{
+ \token_if_dim_register:NTF {#1}
+ {
+ \typog_get_nth_dimen:nnn {#1} {#2} {#3}
+ }
+ {
+ \typog_get_nth_csname:cnn {#1} {#2} {#3}
+ }
+}
+\ExplSyntaxOff
\ExplSyntaxOn
\newcommand*{\typog@round@dim@to@tenths}[1]
@@ -250,6 +312,7 @@
\newcommand*{\typog@default@inspect@id@prefix}{a-}
\newcounter{typog@inspect@count}
+
\define@key[typog]{typoginspect}{tracingboxes}[\maxdimen]%
{\def\typog@@typoginspect@tracingboxes{#1}}
\NewDocumentEnvironment{typoginspect}{O{} m}
@@ -258,11 +321,16 @@
\edef\typog@@arg{#2}%
\ifx\typog@@arg\empty
\stepcounter{typog@inspect@count}%
- \edef\typog@@id{\typog@default@inspect@id@prefix\arabic{typog@inspect@count}}%
+ \edef\typog@@id{\typog@default@inspect@id@prefix
+ \arabic{typog@inspect@count}}%
\else
\edef\typog@@id{\typog@trim@spaces{\typog@@arg}}%
\fi
- \typeout{<typog-inspect id="\typog@@id" job="\jobname" line="\the\inputlineno" page="\the\value{page}">}%
+ \typeout{<typog-inspect\space
+ id="\typog@@id"\space
+ job="\jobname"\space
+ line="\the\inputlineno"\space
+ page="\the\value{page}">}%
\hbadness=\m@ne
\vbadness=\m@ne
\tracingnone
@@ -306,7 +374,7 @@
\newcommand*{\typog@hyphen}{\char`-}
\NewDocumentCommand{\nolig}{s o}
- {\dimen0=\IfNoValueTF{#2}{\typog@ligaturekern}{#2\typog@dim@unit}%
+ {\dimen0=\IfNoValueTF{#2}{\typog@config@ligaturekern}{#2\typog@dim@unit}%
\IfBooleanTF{#1}%
{\kern\dimen0\ignorespaces}%
{\discretionary{\typog@hyphen}{}{\kern\dimen0}%
@@ -329,7 +397,7 @@
}
\newcommand*{\typog@itcorr@text@unconditional}[1]
- {\kern#1\typog@textitalicscorrection}
+ {\kern#1\typog@config@textitalicscorrection}
\newcommand*{\typog@itcorr@text}[1]
{\def\typog@@strength{#1}%
\dimen0=\fontdimen1\font
@@ -339,7 +407,7 @@
\kern\typog@@strength\dimen0
\fi}
\newcommand*{\typog@itcorr@math}[1]
- {\mkern#1\typog@mathitalicscorrection}
+ {\mkern#1\typog@config@mathitalicscorrection}
\NewDocumentCommand{\itcorr}{s m}
{\ifmmode
\typog@itcorr@math{#2}%
@@ -354,11 +422,11 @@
\newcommand*{\typog@forwardslash}{\char`/}
\NewDocumentCommand{\kernedslash}{s}
- {\hspace*{\typog@slashkern}%
+ {\hspace*{\typog@config@slashkern}%
\typog@forwardslash
\IfBooleanTF{#1}%
- {\hspace*{\typog@slashkern}\ignorespaces}%
- {\typog@breakpoint\typog@allowhyphenation\hspace*{\typog@slashkern}}}
+ {\hspace*{\typog@config@slashkern}\ignorespaces}%
+ {\typog@breakpoint\typog@allowhyphenation\hspace*{\typog@config@slashkern}}}
\typog@register@pdfsubstitute{
\def\kernedslash#1{\if*\detokenize{#1}/\ignorespaces\else/#1\fi}%
}
@@ -373,7 +441,7 @@
\def\typog@@optarg{#2}%
\hspace*{#3\typog@dim@unit}%
\raisebox{\ifx\typog@@optarg\typog@@auto
- \typog@raisecapitalhyphen
+ \typog@config@raisecapitalhyphen
\else
\typog@@optarg\typog@dim@unit
\fi}{\typog@hyphen}%
@@ -400,9 +468,9 @@
}
\newcommand*{\typog@breakpoint}
- {\penalty\typog@breakpenalty}
+ {\penalty\typog@config@breakpenalty}
\NewDocumentCommand{\capitalhyphen}{s}
- {\raisebox{\typog@raisecapitalhyphen}{\typog@hyphen}%
+ {\raisebox{\typog@config@raisecapitalhyphen}{\typog@hyphen}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -416,7 +484,7 @@
}
\NewDocumentCommand{\capitalendash}{s}
- {\raisebox{\typog@raisecapitaldash}{\textendash}%
+ {\raisebox{\typog@config@raisecapitaldash}{\textendash}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -432,7 +500,7 @@
}
\NewDocumentCommand{\capitalemdash}{s}
- {\raisebox{\typog@raisecapitaldash}{\textemdash}%
+ {\raisebox{\typog@config@raisecapitaldash}{\textemdash}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -446,7 +514,7 @@
}
\NewDocumentCommand{\figuredash}{s}
- {\raisebox{\typog@raisefiguredash}{\textendash}%
+ {\raisebox{\typog@config@raisefiguredash}{\textendash}%
\IfBooleanTF{#1}%
{\ignorespaces}%
{\typog@breakpoint\typog@allowhyphenation}}
@@ -454,9 +522,9 @@
\NewDocumentCommand{\capitaltimes}{}
{\ifmmode
- \mathbin{\raisebox{\typog@raisecapitaltimes}{$\m@th\times$}}%
+ \mathbin{\raisebox{\typog@config@raisecapitaltimes}{$\m@th\times$}}%
\else
- \raisebox{\typog@raisecapitaltimes}{\texttimes}%
+ \raisebox{\typog@config@raisecapitaltimes}{\texttimes}%
\fi}
\typog@register@pdfsubstitute{
\RenewExpandableDocumentCommand{\capitaltimes}{}{\texttimes}
@@ -464,37 +532,247 @@
\NewDocumentCommand{\singleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raiseguillemets}{\guilsinglleft}}
+ \raisebox{\typog@config@raiseguillemets}{\guilsinglleft}}
\typog@register@pdfsubstitute{\let\singleguillemetleft\guilsinglleft}
\NewDocumentCommand{\singleguillemetright}{}
- {\raisebox{\typog@raiseguillemets}{\guilsinglright}%
+ {\raisebox{\typog@config@raiseguillemets}{\guilsinglright}%
\typog@allowhyphenation}
\typog@register@pdfsubstitute{\let\singleguillemetright\guilsinglright}
\NewDocumentCommand{\doubleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raiseguillemets}{\guillemotleft}}
+ \raisebox{\typog@config@raiseguillemets}{\guillemotleft}}
\typog@register@pdfsubstitute{\let\doubleguillemetleft\guillemotleft}
\NewDocumentCommand{\doubleguillemetright}{}
- {\raisebox{\typog@raiseguillemets}{\guillemotright}%
+ {\raisebox{\typog@config@raiseguillemets}{\guillemotright}%
\typog@allowhyphenation}
\typog@register@pdfsubstitute{\let\doubleguillemetright\guillemotright}
\NewDocumentCommand{\Singleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raisecapitalguillemets}{\guilsinglleft}}
+ \raisebox{\typog@config@raisecapitalguillemets}{\guilsinglleft}}
\typog@register@pdfsubstitute{\let\Singleguillemetleft\guilsinglleft}
\NewDocumentCommand{\Singleguillemetright}{}
- {\raisebox{\typog@raisecapitalguillemets}{\guilsinglright}%
+ {\raisebox{\typog@config@raisecapitalguillemets}{\guilsinglright}%
\typog@allowhyphenation}
\typog@register@pdfsubstitute{\let\Singleguillemetright\guilsinglright}
\NewDocumentCommand{\Doubleguillemetleft}{}
{\typog@allowhyphenation
- \raisebox{\typog@raisecapitalguillemets}{\guillemotleft}}
+ \raisebox{\typog@config@raisecapitalguillemets}{\guillemotleft}}
\typog@register@pdfsubstitute{\let\Doubleguillemetleft\guillemotleft}
\NewDocumentCommand{\Doubleguillemetright}{}
- {\raisebox{\typog@raisecapitalguillemets}{\guillemotright}%
+ {\raisebox{\typog@config@raisecapitalguillemets}{\guillemotright}%
\typog@allowhyphenation}
\typog@register@pdfsubstitute{\let\Doubleguillemetright\guillemotright}
+\newcommand*{\@typog@uppercase@adjust@labelitem}[1]
+ {\@typog@maybe@patch@itemize
+ \ifstrequal{#1}{*}
+ {\setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@uppercase@labelitemi}
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@uppercase@labelitemii}
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@uppercase@labelitemiii}
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@uppercase@labelitemiv}}
+ {\ifcase #1% 0
+ \relax % outside of any itemize environment
+ \or % 1
+ \setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@uppercase@labelitemi}
+ \or % 2
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@uppercase@labelitemii}
+ \or % 3
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@uppercase@labelitemiii}
+ \or % 4
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@uppercase@labelitemiv}
+ \else
+ \PackageError{typog}
+ {Itemize level out of range}
+ {Valid levels are 1, 2, 3, 4, and *}
+ \fi}}
+
+\newcommand*{\@typog@lowercase@adjust@labelitem}[1]
+ {\@typog@maybe@patch@itemize
+ \ifstrequal{#1}{*}
+ {\setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@lowercase@labelitemi}
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@lowercase@labelitemii}
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@lowercase@labelitemiii}
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@lowercase@labelitemiv}}
+ {\ifcase #1% 0
+ \relax % outside of any itemize environment
+ \or % 1
+ \setlength{\typog@adjust@labelitemi}
+ {\typog@adjust@lowercase@labelitemi}
+ \or % 2
+ \setlength{\typog@adjust@labelitemii}
+ {\typog@adjust@lowercase@labelitemii}
+ \or % 3
+ \setlength{\typog@adjust@labelitemiii}
+ {\typog@adjust@lowercase@labelitemiii}
+ \or % 4
+ \setlength{\typog@adjust@labelitemiv}
+ {\typog@adjust@lowercase@labelitemiv}
+ \else
+ \PackageError{typog}
+ {Itemize level out of range}
+ {Valid levels are 1, 2, 3, 4, and *}
+ \fi}}
+
+\newcommand*{\@typog@noadjust@labelitem}[1]
+ {\ifstrequal{#1}{*}
+ {\setlength{\typog@adjust@labelitemi}{\z@}
+ \setlength{\typog@adjust@labelitemii}{\z@}
+ \setlength{\typog@adjust@labelitemiii}{\z@}
+ \setlength{\typog@adjust@labelitemiv}{\z@}}
+ {\ifcase #1% 0
+ \relax % outside of any itemize environment
+ \or % 1
+ \setlength{\typog@adjust@labelitemi}{\z@}
+ \or % 2
+ \setlength{\typog@adjust@labelitemii}{\z@}
+ \or % 3
+ \setlength{\typog@adjust@labelitemiii}{\z@}
+ \or % 4
+ \setlength{\typog@adjust@labelitemiv}{\z@}
+ \else
+ \PackageError{typog}
+ {Itemize level out of range}
+ {Valid levels are 1, 2, 3, 4, and *}
+ \fi}}
+
+\NewDocumentCommand{\uppercaseadjustlabelitems}{m}
+ {\AfterPreamble{%
+ \ifblank{#1}
+ {\@typog@uppercase@adjust@labelitem{\@itemdepth}}
+ {\forcsvlist{\@typog@uppercase@adjust@labelitem}{#1}}%
+ \ignorespaces}}
+
+\NewDocumentCommand{\lowercaseadjustlabelitems}{m}
+ {\AfterPreamble{%
+ \ifblank{#1}
+ {\@typog@lowercase@adjust@labelitem{\@itemdepth}}
+ {\forcsvlist{\@typog@lowercase@adjust@labelitem}{#1}}%
+ \ignorespaces}}
+
+\NewDocumentCommand{\noadjustlabelitems}{m}
+ {\ifblank{#1}
+ {\@typog@noadjust@labelitem{\@itemdepth}}
+ {\forcsvlist{\@typog@noadjust@labelitem}{#1}}%
+ \ignorespaces}
+
+\newcommand*{\@typog@itemize@patch}
+ {\letcs{\@typog@old@itemitem}{\@itemitem}
+ \edef\@itemitem{@typog@labelitem\romannumeral\the\@itemdepth}
+ \expandafter\def\csname\@itemitem\endcsname
+ {\raisebox{\csname typog@adjust@labelitem\romannumeral\the\@itemdepth\endcsname}
+ {\@typog@old@itemitem}}}
+
+\newcommand*{\@typog@patch@itemize}
+ {\ifdefined\enit@itemize@i
+ \patchcmd{\enit@itemize@i}
+ {\expandafter}
+ {\@typog@itemize@patch\expandafter}
+ {\typog@debug@typeout{patching enumitem \string\enit@itemize@i\space succeeded}}
+ {\PackageError{typog}
+ {Patching enumitem macro \string\enit@itemize@i\space failed}
+ {}}
+ \else
+ \patchcmd{\itemize}
+ {\expandafter}
+ {\@typog@itemize@patch\expandafter}
+ {\typog@debug@typeout{patching \string\itemize\space succeeded}}
+ {\PackageError{typog}
+ {Patching plain LaTeX macro \string\itemize\space failed}
+ {}}
+ \fi}
+
+\newbool{@typog@itemize@has@been@patched}
+\newcommand*{\@typog@maybe@patch@itemize}
+ {\ifbool{@typog@itemize@has@been@patched}
+ {\relax}
+ {\@typog@patch@itemize
+ \booltrue{@typog@itemize@has@been@patched}}}
+
+\newcommand*{\typog@hairline@width}{.125pt}
+\newcommand*{\typogadjuststairsfor}[5]
+ {\dimen0=1pt%
+ \count0=#3\relax
+ \unless\ifodd\count0
+ \advance\count0 by 1%
+ \fi
+ \setcounter{typog@@iteration}{1}%
+ \setbox0=\hbox{#4}%
+ \setbox1=\hbox{}%
+ \loop
+ \ifnum\thetypog@@iteration=\numexpr\count0 / 2\relax
+ \dimen1=2\dimen0
+ \else
+ \dimen1=\dimen0
+ \fi
+ \dimen2=\dimexpr#2 * (\thetypog@@iteration - \count0 / 2)\relax
+ \setbox1=\hbox{\unhbox1\raisebox{\dimen2}{\kern\dimen1 #5\kern\dimen1}}%
+ \addtocounter{typog@@iteration}{1}%
+ \unless\ifnum\thetypog@@iteration>\count0
+ \repeat
+ \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}{\rule{\wd1}{\typog@hairline@width}}}\box1}}
+
+\NewDocumentCommand{\typogadjuststairs}{O{.5} m m m}
+ {\begingroup
+ \unless\ifdim #2>\z@
+ \PackageError{typog}
+ {\string\typogadjuststairs\space non-positive step-size}
+ {step-size must be a positive dimension}%
+ \fi
+ \ifnum #3<1
+ \PackageError{typog}
+ {\string\typogadjuststairs\space too few number-of-steps}
+ {number-of-steps must at least be 1}%
+ \fi
+ \ifblank{#4}
+ {\PackageError{typog}
+ {sample must not be empty}
+ {supply either some uppercase or some lowercase letters}}
+ {}%
+ \def\arraystretch{1}%
+ \begin{tabular}{@{}c@{}}
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemi} \\
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemii} \\
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemiii} \\
+ \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemiv}
+ \end{tabular}
+ \endgroup}
+
+\newcommand*{\typog@uppercase@adjusted@labelitems}
+ {\hbox{\raisebox{\typog@adjust@uppercase@labelitemi}{\labelitemi}%
+ \raisebox{\typog@adjust@uppercase@labelitemii}{\labelitemii}%
+ \raisebox{\typog@adjust@uppercase@labelitemiii}{\labelitemiii}%
+ \raisebox{\typog@adjust@uppercase@labelitemiv}{\labelitemiv}}}
+\NewDocumentCommand{\typoguppercaseadjustcheck}{O{.5} m}
+ {\setbox0=\hbox{#2}%
+ \setbox1=\typog@uppercase@adjusted@labelitems
+ \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}
+ {\rule{\wd1}{\typog@hairline@width}}}%
+ \box1}}
+
+\newcommand*{\typog@lowercase@adjusted@labelitems}
+ {\hbox{\raisebox{\typog@adjust@lowercase@labelitemi}{\labelitemi}%
+ \raisebox{\typog@adjust@lowercase@labelitemii}{\labelitemii}%
+ \raisebox{\typog@adjust@lowercase@labelitemiii}{\labelitemiii}%
+ \raisebox{\typog@adjust@lowercase@labelitemiv}{\labelitemiv}}}
+\NewDocumentCommand{\typoglowercaseadjustcheck}{O{.5} m}
+ {\setbox0=\hbox{#2}%
+ \setbox1=\typog@lowercase@adjusted@labelitems
+ \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}
+ {\rule{\wd1}{\typog@hairline@width}}}%
+ \box1}}
+
\NewDocumentEnvironment{lastlineraggedleftpar}{}
{\lastlinefit=0%
\setlength{\leftskip}{\z@ \@plus 1fil}%
@@ -844,7 +1122,7 @@
\NewDocumentCommand{\vtietop}{O{3}}
{\setcounter{typog@mean@penalty}
{\typog@geometric@mean{\@M}{\clubpenalty}}%
- \typog@typeout{vtietop: penalties \the\@M--\the\value{typog@mean@penalty}--\the\clubpenalty}%
+ \typog@debug@typeout{vtietop: penalties \the\@M--\the\value{typog@mean@penalty}--\the\clubpenalty}%
\unless\ifnum\clubpenalty<\@M
\PackageWarning{typog}{vtietop: clubpenalty=\the\clubpenalty\space>= 10000}%
\fi
@@ -911,7 +1189,7 @@
\NewDocumentCommand{\vtiebot}{O{3}}
{\setcounter{typog@mean@penalty}
{\typog@geometric@mean{\@M}{\widowpenalty}}%
- \typog@typeout{vtiebot: penalties \the\@M--\the\value{typog@mean@penalty}--\the\widowpenalty}%
+ \typog@debug@typeout{vtiebot: penalties \the\@M--\the\value{typog@mean@penalty}--\the\widowpenalty}%
\unless\ifnum\widowpenalty<\@M
\PackageWarning{typog}{vtiebot: widowpenalty=\the\widowpenalty\space>= 10000}%
\fi
@@ -969,7 +1247,7 @@
\NewDocumentCommand{\typog@vtiebotdisp}{m}
{\setcounter{typog@mean@penalty}
{\typog@geometric@mean{\@M}{\displaywidowpenalty}}%
- \typog@typeout{vtiebotdisp: penalties \the\@M--\the\value{typog@mean@penalty}--\the\displaywidowpenalty}%
+ \typog@debug@typeout{vtiebotdisp: penalties \the\@M--\the\value{typog@mean@penalty}--\the\displaywidowpenalty}%
\unless\ifnum\displaywidowpenalty<\@M
\PackageWarning{typog}{vtiebotdisp: displaywidowpenalty=\the\displaywidowpenalty\space>= 10000}%
\fi
@@ -1047,9 +1325,9 @@
\int_set:Nn \l_tmpb_int {\typog@setbaselineskip@iter@limit}
\dim_set:Nn \l_tmpa_dim {\glueexpr #1}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
initial\space baselineskip:\space \the\baselineskip}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
target\space baselineskip:\space \dim_use:N \l_tmpa_dim}
\dim_compare:nNnTF {\baselineskip} > {\c_zero_dim}
@@ -1102,10 +1380,10 @@
{}
}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
final\space \string\setstretch\space argument:\space
\fp_use:N \l_tmpa_fp}
- \typog@typeout{\string\setbaselineskip:\space
+ \typog@debug@typeout{\string\setbaselineskip:\space
final\space baselineskip:\space \the\baselineskip}
}
@@ -1123,7 +1401,7 @@
\dim_new:N \typogfontsize
\AfterEndPreamble{
\dim_set:Nn \typogfontsize {\fontdimen6\font}
- \typog@typeout{\string\typogfontsize =
+ \typog@debug@typeout{\string\typogfontsize =
\dim_use:N \typogfontsize\space
(at\space begin\space of\space document)}
}
@@ -1205,13 +1483,13 @@
\skip1=#2\relax
\skip2=#3\relax
\skip3=#4\relax
- \typog@typeout{smoothraggedrightshapetriplet: skip0=\the\skip0}%
- \typog@typeout{smoothraggedrightshapetriplet: skip1=\the\skip1}%
- \typog@typeout{smoothraggedrightshapetriplet: skip2=\the\skip2}%
- \typog@typeout{smoothraggedrightshapetriplet: skip3=\the\skip3}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip0=\the\skip0}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip1=\the\skip1}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip2=\the\skip2}%
+ \typog@debug@typeout{smoothraggedrightshapetriplet: skip3=\the\skip3}%
\unless\ifnum\typog@mod{\typog@triplet@max@lines}{3}=0
\PackageError{typog}
- {Line number of triplet generator %
+ {Line number of triplet generator\space
(\typog@triplet@max@lines) not divisible by 3}
{}
\fi
@@ -1240,15 +1518,15 @@
\skip3=#4\relax
\skip4=#5\relax
\skip5=#6\relax
- \typog@typeout{smoothraggedrightshapequintuplet: skip0=\the\skip0}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip1=\the\skip1}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip2=\the\skip2}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip3=\the\skip3}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip4=\the\skip4}%
- \typog@typeout{smoothraggedrightshapequintuplet: skip5=\the\skip5}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip0=\the\skip0}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip1=\the\skip1}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip2=\the\skip2}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip3=\the\skip3}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip4=\the\skip4}%
+ \typog@debug@typeout{smoothraggedrightshapequintuplet: skip5=\the\skip5}%
\unless\ifnum\typog@mod{\typog@quintuplet@max@lines}{5}=0
\PackageError{typog}
- {Line number of quintuplet generator %
+ {Line number of quintuplet generator\space
(\typog@quintuplet@max@lines) not divisible by 5}
{}
\fi
@@ -1279,17 +1557,17 @@
\skip5=#6\relax
\skip6=#7\relax
\skip7=#8\relax
- \typog@typeout{smoothraggedrightshapeseptuplet: skip0=\the\skip0}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip1=\the\skip1}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip2=\the\skip2}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip3=\the\skip3}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip4=\the\skip4}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip5=\the\skip5}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip6=\the\skip6}%
- \typog@typeout{smoothraggedrightshapeseptuplet: skip7=\the\skip7}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip0=\the\skip0}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip1=\the\skip1}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip2=\the\skip2}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip3=\the\skip3}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip4=\the\skip4}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip5=\the\skip5}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip6=\the\skip6}%
+ \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip7=\the\skip7}%
\unless\ifnum\typog@mod{\typog@septuplet@max@lines}{7}=0
\PackageError{typog}
- {Line number of septuplet generator %
+ {Line number of septuplet generator\space
(\typog@septuplet@max@lines) not divisible by 7}
{}
\fi
@@ -1340,7 +1618,7 @@
\typog@fuzzwidth=\smoothraggedrightfuzzfactor\smoothraggedrightragwidth
\ifcase\typog@@generatorchoice
\typog@fuzzwidth=.25\smoothraggedrightragwidth
- \typog@typeout{smoothraggedright: generator=triplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
+ \typog@debug@typeout{smoothraggedright: generator=triplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
\smoothraggedrightshapetriplet[leftskip=\typog@@smoothraggedrightleftskip,
parindent=\glueexpr\smoothraggedrightparindent + \parindent,
#1]%
@@ -1351,7 +1629,7 @@
+ \glueexpr \z@ \@plus \typog@fuzzwidth \@minus \typog@fuzzwidth\relax}% (2)
\or
\typog@fuzzwidth=.125\smoothraggedrightragwidth
- \typog@typeout{smoothraggedright: generator=quintuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
+ \typog@debug@typeout{smoothraggedright: generator=quintuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
\smoothraggedrightshapequintuplet[leftskip=\typog@@smoothraggedrightleftskip,
parindent=\glueexpr\smoothraggedrightparindent + \parindent,
#1]%
@@ -1366,7 +1644,7 @@
+ \glueexpr \z@ \@plus \typog@fuzzwidth\relax}% (1)
\or
\typog@fuzzwidth=.08333\smoothraggedrightragwidth
- \typog@typeout{smoothraggedright: generator=septuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
+ \typog@debug@typeout{smoothraggedright: generator=septuplet, typog@fuzzwidth=\the\typog@fuzzwidth}%
\smoothraggedrightshapeseptuplet[leftskip=\typog@@smoothraggedrightleftskip,
parindent=\glueexpr\smoothraggedrightparindent + \parindent,
#1]%
diff --git a/Master/texmf-dist/tex/latex/uantwerpendocs/beamerthemeuantwerpen.sty b/Master/texmf-dist/tex/latex/uantwerpendocs/beamerthemeuantwerpen.sty
index 2b6480e67cf..c901bd70b5b 100644
--- a/Master/texmf-dist/tex/latex/uantwerpendocs/beamerthemeuantwerpen.sty
+++ b/Master/texmf-dist/tex/latex/uantwerpendocs/beamerthemeuantwerpen.sty
@@ -26,7 +26,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{beamerthemeuantwerpen}
- [2024/04/09 v4.6 .dtx skeleton file]
+ [2024/08/27 v4.8 .dtx skeleton file]
diff --git a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenbamathesis.cls b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenbamathesis.cls
index 97bb358c4a2..dacdc2eba5f 100644
--- a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenbamathesis.cls
+++ b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenbamathesis.cls
@@ -26,7 +26,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{uantwerpenbamathesis}
- [2024/04/09 v4.6 .dtx skeleton file]
+ [2024/08/27 v4.8 .dtx skeleton file]
\newif\if@filled
\DeclareOption{filled}{\@filledtrue}
\input{uantwerpencommonoptions.clo}
@@ -402,8 +402,8 @@
xshift=1pt]
at (3.5cm,\paperheight-6.4cm)
{\sethlcolor{maincolor}%
- \textsf{\textbf{\reversevideo{\@title}}}\\
- \textsf{\reversevideo{\@subtitle}}};
+ \textsf{\textbf{\reversevideo{\@title}}}%
+ \ifx\@subtitle\empty\else\\\textsf{\reversevideo{\@subtitle}}\fi};
\node
[anchor=north west,font=\LARGE,yshift=-1cm,xshift=-1pt]
at (title.south west)
diff --git a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencolorlogoscheme.sty b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencolorlogoscheme.sty
index 9a47acad95f..cbc4e66ac75 100644
--- a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencolorlogoscheme.sty
+++ b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencolorlogoscheme.sty
@@ -25,7 +25,7 @@
%% The Current Maintainer of this work is Walter Daems.
%%
\ProvidesPackage{uantwerpencolorlogoscheme}
- [2024/04/09 v4.6 .dtx skeleton file]
+ [2024/08/27 v4.8 .dtx skeleton file]
\if@cmyk
%% UAntwerpen
\definecolor{uauamain}{cmyk}{0.00,0.96,0.82,0.01}
diff --git a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencoursetext.cls b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencoursetext.cls
index d3bab952cd5..75b7428ba8d 100644
--- a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencoursetext.cls
+++ b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpencoursetext.cls
@@ -26,7 +26,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{uantwerpencoursetext}
- [2024/04/09 v4.6 .dtx skeleton file]
+ [2024/08/27 v4.8 .dtx skeleton file]
\newif\if@modern
\@modernfalse
\DeclareOption{modern}{\@moderntrue}
diff --git a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpendocs-en.data b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpendocs-en.data
index 78baa70ad6a..b3d2a343bdf 100644
--- a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpendocs-en.data
+++ b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpendocs-en.data
@@ -46,8 +46,8 @@ juryname = Jury
jurymembersname = Members
jurychairname = Chair
bmthesisname = Thesis to obtain the degree of
-pthesisnamei = Thesis submitted in fulfilment of the requirements for the degree of
-pthesisnameii = at the University of Antwerp
+pthesisnamei = Thesis submitted for the degree of
+pthesisnameii = at the University of Antwerp to be defended by
weightname = Weight
diff --git a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenexam.cls b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenexam.cls
index 25ad5ae00ed..7e4b1999d4c 100644
--- a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenexam.cls
+++ b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenexam.cls
@@ -26,7 +26,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{uantwerpenexam}
- [2024/04/09 v4.6 .dtx skeleton file]
+ [2024/08/27 v4.8 .dtx skeleton file]
\newif\if@examiner
\DeclareOption{examiner}{\@examinertrue}
\input{uantwerpencommonoptions.clo}
diff --git a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenletter.cls b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenletter.cls
index fc58075f64e..eebd93d7930 100644
--- a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenletter.cls
+++ b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenletter.cls
@@ -26,7 +26,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{uantwerpenletter}
- [2024/04/09 v4.6 .dtx skeleton file]
+ [2024/08/27 v4.8 .dtx skeleton file]
\newif\if@filled
\DeclareOption{filled}{\@filledtrue}
\newif\if@nofoldline
diff --git a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenphdthesis.cls b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenphdthesis.cls
index 74bc2afd58d..ddb8dd2d254 100644
--- a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenphdthesis.cls
+++ b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenphdthesis.cls
@@ -26,7 +26,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{uantwerpenphdthesis}
- [2024/04/09 v4.6 .dtx skeleton file]
+ [2024/08/27 v4.8 .dtx skeleton file]
\newif\if@filled
\DeclareOption{filled}{\@filledtrue}
\newif\if@cameraready
diff --git a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenreport.cls b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenreport.cls
index e7fe0d50b5e..feeb5ac9623 100644
--- a/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenreport.cls
+++ b/Master/texmf-dist/tex/latex/uantwerpendocs/uantwerpenreport.cls
@@ -26,7 +26,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{uantwerpenreport}
- [2024/04/09 v4.6 .dtx skeleton file]
+ [2024/08/27 v4.8 .dtx skeleton file]
\newif\if@copyright
\DeclareOption{copyright}{\@copyrighttrue}
\newif\if@filled
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..694b59651e9 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/09/24 v1.0.2 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
@@ -545,6 +545,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/ulthese/ulthese.cls b/Master/texmf-dist/tex/latex/ulthese/ulthese.cls
index 703a54d6c3a..eb32a214ace 100644
--- a/Master/texmf-dist/tex/latex/ulthese/ulthese.cls
+++ b/Master/texmf-dist/tex/latex/ulthese/ulthese.cls
@@ -8,46 +8,41 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2017 Universite Laval
+%% Copyright (C) 2012-2024 Universite Laval
%%
%% 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
+%% https://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.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Universite Laval
-%% <ulthese-dev@bibl.ulaval.ca>.
+%% The Current Maintainer of this work is Vincent Goulet for
+%% Universite Laval <ulthese-dev@bibl.ulaval.ca>.
%%
-%% This work consists of the files ulthese.dtx and ulthese.ins and the
-%% derived files listed in the README.md file.
+%% This work consists of the files ulthese.dtx, ulthese.ins, and the
+%% derived files listed in the file README.md.
%%
-\NeedsTeXFormat{LaTeX2e}[2009/09/24]
+\NeedsTeXFormat{LaTeX2e}[2021/06/01]
\ProvidesClass{ulthese}%
- [2021/08/09 v5.3a Universite Laval thesis and memoir class]
-\RequirePackage{ifxetex}
+ [2024/07/02 v6.0 Thesis class for Universite Laval]
\newif\ifUL@babel \UL@babeltrue % charger babel?
\newif\ifUL@natbib \UL@natbibtrue % charger natbib?
\newif\ifUL@hyperref \UL@hyperreftrue % charger hyperref?
-\newif\ifUL@chapterbib \UL@chapterbibfalse % charger chapterbib?
-\newif\ifUL@sectionbib \UL@sectionbibfalse % option sectionbib de chapterbib?
-\newif\ifUL@isthesis % programme est une thèse?
-\newif\ifUL@iscotutelle \UL@iscotutellefalse % thèse en cotutelle?
+\newif\ifUL@isthesis % programme est une these?
+\newif\ifUL@iscotutelle \UL@iscotutellefalse % these en cotutelle?
\newif\ifUL@isexam \UL@isexamfalse % examen de doctorat?
-\newif\ifUL@isessay \UL@isessayfalse % essai de maîtrise?
+\newif\ifUL@isessay \UL@isessayfalse % essai de maitrise?
\newif\ifUL@isresearch \UL@isresearchfalse % projet de recherche?
\newif\ifUL@isworkterm \UL@isworktermfalse % rapport de stage?
\newif\ifUL@hassubtitle \UL@hassubtitlefalse % document a un sous-titre?
-\newif\ifUL@hastitlepage \UL@hastitlepagefalse % page titre utilisée?
+\newif\ifUL@hastitlepage \UL@hastitlepagefalse % page titre utilisee?
\DeclareOption{nonatbib}{\UL@natbibfalse}
-\DeclareOption{bibchapitre}{\UL@chapterbibtrue}
-\DeclareOption{bibsection}{\UL@chapterbibtrue\UL@sectionbibtrue}
\DeclareOption{nobabel}{\UL@babelfalse}
\DeclareOption{nohyperref}{\UL@hyperreffalse}
\newcommand*{\UL@ptsize}{}
@@ -90,10 +85,6 @@
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
\newcommand*{\UL@degree}{Ma\^itre en architecture (M.~Arch.)}}
-\DeclareOption{MA}{%
- \UL@isthesisfalse
- \renewcommand*{\UL@typenum}{0}
- \newcommand*{\UL@degree}{Ma\^itre \`es arts (M.A.)}}
\DeclareOption{LLM}{%
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
@@ -106,14 +97,10 @@
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
\newcommand*{\UL@degree}{Ma\^itre en musique (M.~Mus.)}}
-\DeclareOption{MPht}{%
- \UL@isthesisfalse
- \renewcommand*{\UL@typenum}{0}
- \newcommand*{\UL@degree}{Ma\^itre en physioth\'erapie (M.~Pht.)}}
-\DeclareOption{MSc}{%
+\DeclareOption{MPsEd}{%
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
- \newcommand*{\UL@degree}{Ma\^itre \`es sciences (M.~Sc.)}}
+ \newcommand*{\UL@degree}{Ma\^itre en psycho\'education (M.~Ps.~\'ed.)}}
\DeclareOption{MScGeogr}{%
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
@@ -122,10 +109,18 @@
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
\newcommand*{\UL@degree}{Ma\^itre en service social (M.~Serv.~soc.)}}
-\DeclareOption{MPsEd}{%
+\DeclareOption{MTravSoc}{%
\UL@isthesisfalse
\renewcommand*{\UL@typenum}{0}
- \newcommand*{\UL@degree}{Ma\^itre en psycho\'education (M.~Ps.~\'ed.)}}
+ \newcommand*{\UL@degree}{Ma\^itre en travail social (M.~Trav.~soc.)}}
+\DeclareOption{MA}{%
+ \UL@isthesisfalse
+ \renewcommand*{\UL@typenum}{0}
+ \newcommand*{\UL@degree}{Ma\^itre \`es arts (M.A.)}}
+\DeclareOption{MSc}{%
+ \UL@isthesisfalse
+ \renewcommand*{\UL@typenum}{0}
+ \newcommand*{\UL@degree}{Ma\^itre \`es sciences (M.~Sc.)}}
\DeclareOption{multifacultaire}{%
\ifUL@isthesis
\renewcommand*{\UL@typenum}{1}
@@ -221,32 +216,22 @@
\fi
\fi
\LoadClass[oneside]{memoir}
-\ifxetex
+\iftutex
+ \RequirePackage[babel=true]{microtype}
\RequirePackage{fontspec}
- \defaultfontfeatures{Ligatures=TeX}
\else
+ \RequirePackage[babel=true]{microtype}
+ \RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\fi
\ifUL@natbib
- \ifUL@sectionbib
- \PassOptionsToPackage{sectionbib}{natbib}
- \fi
\RequirePackage[round,semicolon,authoryear]{natbib}
\fi
-\ifUL@chapterbib
- \ifUL@sectionbib
- \ifUL@natbib\else
- \PassOptionsToPackage{sectionbib}{chapterbib}
- \fi
- \fi
- \RequirePackage{chapterbib}
-\fi
\ifUL@babel
\RequirePackage{babel}
\RequirePackage[autolanguage]{numprint}
\fi
\ifUL@hyperref
- \RequirePackage{etoolbox}
\AtEndPreamble{\RequirePackage{hyperref}}
\else
\AtBeginDocument{%
@@ -258,7 +243,6 @@
\PassOptionsToPackage{colorlinks,allcolors=ULlinkcolor}{hyperref}
\RequirePackage{graphicx}
\RequirePackage{xcolor}
-\RequirePackage{textcomp}
\AtBeginDocument{%
\@ifpackageloaded{geometry}{%
\ClassError{ulthese}{%
@@ -522,6 +506,3 @@
\parsep 6\p@ \@plus\p@}%
\item[]}{\endlist}
\setsecnumdepth{subsection}
-\endinput
-%%
-%% End of file `ulthese.cls'.
diff --git a/Master/texmf-dist/tex/latex/unbtex/unbtex.cls b/Master/texmf-dist/tex/latex/unbtex/unbtex.cls
index 39f277761d9..75535a7a143 100644
--- a/Master/texmf-dist/tex/latex/unbtex/unbtex.cls
+++ b/Master/texmf-dist/tex/latex/unbtex/unbtex.cls
@@ -1,7 +1,7 @@
%%
%% UnBTeX: A class for bachelor, master, and doctoral thesis at the
%% University of Brasilia (UnB), Brazil
-%% Version 1.5.1 2024/03/02
+%% Version 1.5.3 2024/10/07
%% Copyright (C) 2021-2024 by Henrique C. Ferreira <hcferreira@unb.br>
%%
%% This class file may be distributed and/or modified under the conditions
@@ -9,7 +9,7 @@
%% 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/03/02 v1.5.1 Modelo da Universidade de Brasília baseado em abnTeX2]
+\ProvidesClass{unbtex}[2024/10/07 v1.5.3 Modelo da Universidade de Brasília baseado em abnTeX2]
% ------------------------------------------------------------------------
% Opções para a classe
@@ -44,13 +44,22 @@
% ---
% ---
+% 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 +69,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 +78,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 +91,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 +98,65 @@
% ---
% ---
-% 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}
+\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 +166,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,12 +273,24 @@
\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 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é
\addtolength{\footnotesep}{2pt} % Espaço entre as notas de rodapé
-\pdfminorversion=7 % Configuração da versão do arquivo pdf produzido
+\renewcommand*{\footnoterule}{\kern-3pt \hrule width 5cm \kern 2.6pt} % Tamanho do traço superior (5cm)
% Ajusta espaço entre texto e figuras/tabelas
\setlength{\textfloatsep}{18pt plus 2pt minus 2pt} % Espaçamento entre texto e floats no topo/base da página
@@ -128,36 +298,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}
-
-% Configuração do cabeçalho das páginas
-\pagestyle{myheadings} % Cabeçalho com linha e numeração da página
-
+\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}
@@ -168,6 +349,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]{%
@@ -179,9 +363,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}
@@ -194,7 +394,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}}
}{%
@@ -208,8 +409,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}%
@@ -226,8 +426,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}%
@@ -254,69 +453,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,
}
% ---
@@ -324,13 +461,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}}
% ---
% ---
@@ -339,14 +490,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
@@ -359,22 +510,24 @@
\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}
+\IfStrEq{\idioma}{brazil}
+{\RequirePackage[hyperpageref,brazilian]{backref}}
+{\RequirePackage[hyperpageref,english]{backref}}
\AtBeginDocument{
\renewcommand*{\backref}[1]{}
\renewcommand*{\backrefalt}[4]{\ifcase#1\nocitation\or\citedp~#2.\else\citedpp~#2.\fi}
@@ -385,16 +538,15 @@
\urlstyle{same}
}
% 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
-\newcommand{\recuo}{3em} % Indentação da lista de referências
-\RequirePackage[alf,recuo=\recuo,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
-\newcommand{\recuo}{2.2em} % Aumente este valor se o número de referências for superior a 100
-\RequirePackage[num,recuo=\recuo,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]%
{%
@@ -408,7 +560,7 @@
{\setlength{\ABCIauxlen}{\minimumbiblabelwidth-\ABCIauxlen}}%
{\setlength{\ABCIauxlen}{0cm}}%
%{\biblabeltext\hspace{\ABCIauxlen}}%
-\parbox[t]{\recuo}{\raggedleft\biblabeltext\hspace{\ABCIauxlen}}%
+\parbox[t]{\bibindent}{\raggedleft\biblabeltext\hspace{\ABCIauxlen}}%
}}%
\renewcommand{\citeonline}[2][] % Redefine \citeonline como \cite
{\ifthenelse{\equal{#1}{}}{\cite{#2}}{\cite[#1]{#2}}}
@@ -431,7 +583,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
@@ -460,40 +612,59 @@
% ---
% 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,
- %numsep=0em
]{tocline}{figure}
-
\DeclareTOCStyleEntry[
indent=0pt,
entrynumberformat=\entrynumberwithprefix{\tablename},
dynnumwidth,
- %numsep=0em
]{tocline}{table}
+\DeclareTOCStyleEntry[
+ level:=figure,
+ numwidth:=figure,
+ indent=0pt,
+ entrynumberformat=\entrynumberwithprefix{\algorithmname},
+ dynnumwidth,
+]{tocline}{algocf}
\newcommand\entrynumberwithprefix[2]{#1~#2\thinspace\hfill}
% ---
% ---
+% Citacao direta com mais de 3 linhas - ABNT NBR 10520/2002 - 5.3
+% Corrige tamanho do recuo do ambiente citacao do abntex2 para 4cm
+% ---
+\ifthenelse{\equal{\ABNTEXistwocolumn}{true}}{%
+ \setlength{\ABNTEXcitacaorecuo}{1.8cm}
+}{% else
+ \setlength{\ABNTEXcitacaorecuo}{4cm}
+}
+\renewenvironment*{citacao}[1][default]{%
+ \begin{adjustwidth}{\ABNTEXcitacaorecuo}{0mm}%
+ \ABNTEXfontereduzida\vspace{4pt}
+ \begin{SingleSpace}%
+ \ifthenelse{\not\equal{#1}{default}}{\itshape\selectlanguage{#1}}{}%
+}{%
+ \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}
@@ -508,47 +679,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}}
+}
% ---
% ------------------------------------------------------------------------
@@ -606,18 +792,19 @@
% ---
% ---
-% Imprime capa
+% Imprime capa e contracapa
% ---
+\RequirePackage{pdfpages}
+% Imprime capa
\renewcommand{\imprimircapa}{%
\hypersetup{pageanchor=false}
-\setlrmargins{*}{*}{1} % Margens laterais iguais para a capa
-\checkandfixthelayout[nearest]
+\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}
+ {\LARGE\sffamily\bfseries\instituicaoi \\ \instituicaoii \\
+ \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}\par}
\vfill
\begin{center}
% Define o tamanho da fonte do título
@@ -629,34 +816,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[fixed]
+\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}
}
% ---
@@ -665,10 +852,9 @@
% ---
\renewcommand{\folhaderostocontent}{%
\begin{center}
- {\LARGE{\sffamily{\bfseries\instituicaoi \\ \instituicaoii \\
- \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}}}\par}
+ {\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}{}}
@@ -676,11 +862,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}
@@ -690,13 +874,10 @@
\end{otherlanguage*}}
\end{minipage}%
\end{flushright}
-}%
-\vfill
-
-{\large \orientname: \orienttitulo\ \orientnome\ \orientsobrenome \\
-\abntex@ifnotempty{\coorientnome}{\coorientname: \coorienttitulo\ \coorientnome\ \coorientsobrenome}\par}
+\vfill}%
+{\abntex@ifnotempty{\orientnome}{\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}
}
@@ -712,7 +893,7 @@
\ifthenelse{\equal{\imprimirpublicacao}{}}{}{
\begin{OnehalfSpace}
{\noindent\sffamily\large REFERÊNCIA BIBLIOGRÁFICA}\par
-\noindent\MakeUppercase\autorisobrenome, \autorinome \ifthenelse{\equal{\autoriinome}{}}{.}{;~\MakeUppercase\autoriisobrenome, \autoriinome.} {\bfseries\StrDel{\imprimirtitulo}{\\ }}. \begin{otherlanguage*}{brazil}\imprimirtipotrabalho\ (\imprimircurso)\ifthenelse{\equal{\imprimirpublicacao}{}}{}{,~\imprimirpublicacao} -- \ifthenelse{\equal{\instituicaoiii}{}}{}{\instituicaoiii,~}\instituicaoii, \instituicaoi, \imprimirlocal, \thelastpage~p. \imprimirano.\end{otherlanguage*}
+\noindent\MakeUppercase\autorisobrenome, \autorinome \ifthenelse{\equal{\autoriinome}{}}{.}{;~\MakeUppercase\autoriisobrenome, \autoriinome.} {\bfseries\StrDel{\imprimirtitulo}{\\}}. \begin{otherlanguage*}{brazil}\imprimirtipotrabalho\ (\imprimircurso)\ifthenelse{\equal{\imprimirpublicacao}{}}{}{,~\imprimirpublicacao} -- \ifthenelse{\equal{\instituicaoiii}{}}{}{\instituicaoiii,~}\instituicaoii, \instituicaoi, \imprimirlocal, \thelastpage~p. \imprimirano.\end{otherlanguage*}
\end{OnehalfSpace}}
\IfInteger{\imprimircutter}{\setlength{\fboxsep}{10pt}}{\setlength{\fboxsep}{18pt}}
\vspace*{\fill}
@@ -724,12 +905,12 @@
\IfInteger{\imprimircutter}{\begin{tabular}{p{1.25cm} p{10.25cm}}}{} \cutter
\autorisobrenome, \autorinome. \\
\IfInteger{\imprimircutter}{\StrChar{\autorisobrenome}{1}\imprimircutter\StrChar{\imprimirtitulo}{1}[\SUBtemp]\MakeLowercase{\SUBtemp}}{} \cutter
-\hspace*{2em}\noindent \StrDel{\imprimirtitulo}{\\ } ~/ \begin{otherlanguage*}{brazil}{\autorinome\ \autorisobrenome; \ifthenelse{\equal{\autoriinome}{}}{}{\autoriinome\ \autoriisobrenome;} \MakeLowercase\orientname\ \orientnome\ \orientsobrenome \ifthenelse{\equal{\coorientnome}{}}{.}{;~\MakeLowercase\coorientname\ \coorientnome\ \coorientsobrenome.} \texttt{-{}-} \imprimirlocal, \imprimirano.}\end{otherlanguage*} \\ \cutter
+\hspace*{2em}\noindent \StrDel{\imprimirtitulo}{\\} ~/ \begin{otherlanguage*}{brazil}{\autorinome\ \autorisobrenome; \ifthenelse{\equal{\autoriinome}{}}{}{\autoriinome\ \autoriisobrenome;} \MakeLowercase\orientname\ \orientnome\ \orientsobrenome \ifthenelse{\equal{\coorientnome}{}}{.}{;~\MakeLowercase\coorientname\ \coorientnome\ \coorientsobrenome.} \texttt{-{}-} \imprimirlocal, \imprimirano.}\end{otherlanguage*} \\ \cutter
\hspace*{2em}\noindent \thelastpage~p. \\ \cutter
\\ \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}}
@@ -742,25 +923,24 @@
% ---
% Imprime folha de aprovação
% ---
+\newcommand{\signlinewidth}[1]{\setlength{\ABNTEXsignwidth}{#1}}
\newcommand{\imprimirfolhadeaprovacao}{%
\begin{folhadeaprovacao}
\begin{center}
- {\Large{\sffamily{\bfseries\instituicaoi \\ \instituicaoii \\
- \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}}}\par}
+ {\Large\sffamily\bfseries\instituicaoi \\ \instituicaoii \\
+ \abntex@ifnotempty{\instituicaoiii}{\instituicaoiii}\par}
\vfill
\begin{center}
% Define o tamanho da fonte do título
- \autotitle[1]{\bfseries\StrDel{\imprimirtitulo}{\\ }}
+ \autotitle[1]{\bfseries\StrDel{\imprimirtitulo}{\\}}
\ifthenelse{\equal{\titleformat}{\large}}
- {\color{verdeunb}\Large\bfseries \StrDel{\imprimirtitulo}{\\ }\par}
- {\color{verdeunb}\titleformat\bfseries \StrDel{\imprimirtitulo}{\\ }\par}
+ {\color{verdeunb}\Large\bfseries \StrDel{\imprimirtitulo}{\\}\par}
+ {\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}
@@ -772,7 +952,6 @@
\end{flushright}
}%
\vspace{24pt}
-
\raggedright{Trabalho aprovado. \imprimirlocal, \imprimirdia\ de \imprimirmes\ de \imprimirano:}
{%
\assinatura{\textbf{\membrodabancainome} \\ \membrodabancaifuncaonome}
@@ -781,12 +960,9 @@
\abntex@ifnotempty{\membrodabancaivnome}{\assinatura{\textbf{\membrodabancaivnome} \\ \membrodabancaivfuncaonome}}
\abntex@ifnotempty{\membrodabancavnome}{\assinatura{\textbf{\membrodabancavnome} \\ \membrodabancavfuncaonome}}
}
-%\vfill
-% \begin{center}
-% {\sffamily\large\imprimirlocal \\ \imprimirano\par}
-% \end{center}
\end{center}
\end{folhadeaprovacao}
+\cleardoublepage
}
% ---
@@ -796,27 +972,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
}
% ---
@@ -825,32 +999,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
}
% ---
@@ -860,44 +1030,122 @@
\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
% ---
+% Resumo
\newenvsc{Resumo}[store-env=resumo]
\newcommand{\imprimirresumo}{
-\newpage
\setlength{\absparsep}{\parsep}
\begin{resumo}[Resumo]\vspace{\baselineskip}
\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*}
+\vspace{\baselineskip}
\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{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}
+\vspace{\baselineskip}
+\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
}
% ---
@@ -929,4 +1177,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/univie-ling/univie-ling-expose.cls b/Master/texmf-dist/tex/latex/univie-ling/univie-ling-expose.cls
index 29576a930fa..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/05/09 v.2.5 Univie Linguistic Exposes (JSp)]
+\ProvidesPackage{univie-ling-expose}[2024/09/28 v.2.9 Univie Linguistic Exposes (JSp)]
%% ============================================================
@@ -218,6 +218,8 @@
\deftranslation[to=English]{cosupervisor}{Co-Supervisor}
\deftranslation[to=German]{beirat}{Beirat}
\deftranslation[to=English]{beirat}{Advisory board}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% ============================================================
@@ -261,6 +263,24 @@
{\def\UrlFont{\rmfamily\itshape}
}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Fix for \slash-Makro, by Donald Arsenau
\def\slash{/\penalty\exhyphenpenalty\hskip\z@skip}
@@ -667,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 22a451329d2..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/05/09 v.2.5 Univie Ling handout class (JSp)]
+\ProvidesClass{univie-ling-handout}[2024/09/28 v.2.9 Univie Ling handout class (JSp)]
%% ============================================================
%% CLASS OPTIONS
@@ -652,6 +652,8 @@
\deftranslation[to=English]{footnote}{fn.}
\deftranslation[to=German]{example}{Beispiel}
\deftranslation[to=English]{example}{example}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% ============================================================
@@ -865,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
@@ -920,6 +937,24 @@
% URLs italic
\def\UrlFont{\rmfamily\itshape}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Covington
\if@uvh@covington
\RequirePackage{covington}
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 4ee6eaf8f8f..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/05/09 v.2.5 Univie Linguistic Papers (JSp)]
+\ProvidesPackage{univie-ling-paper}[2024/09/28 v.2.9 Univie Linguistic Papers (JSp)]
%% ============================================================
@@ -243,6 +243,8 @@ This includes all drawings, sketches, graphics and internet sources.}
\deftranslation[to=English]{selbst3p}{Furthermore, we declare that this paper has not been submitted as an examination already, neither as a whole nor in parts.}
\deftranslation[to=German]{wien}{Wien}
\deftranslation[to=English]{wien}{Vienna}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% ============================================================
@@ -283,6 +285,24 @@ This includes all drawings, sketches, graphics and internet sources.}
% URLs italic
\def\UrlFont{\rmfamily\itshape}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Fix for \slash-Makro, by Donald Arsenau
\def\slash{/\penalty\exhyphenpenalty\hskip\z@skip}
@@ -825,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 d2b68940aff..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/05/09 v.2.5 Univie Ling poster class (JSp)]
+\ProvidesClass{univie-ling-poster}[2024/09/28 v.2.9 Univie Ling poster class (JSp)]
%% ============================================================
%% CLASS OPTIONS
@@ -52,6 +52,7 @@
\newif\if@uvpt@pplogo\@uvpt@pplogotrue
\newif\if@uvpt@psfonts\@uvpt@psfontstrue
\newif\if@uvpt@refsp\@uvpt@refsptrue
+\newif\if@uvpt@smallmargins\@uvpt@smallmarginsfalse
\newif\if@uvpt@tcolorbox\@uvpt@tcolorboxtrue
\newif\if@uvpt@usefontenc\@uvpt@usefontenctrue
\def\uvpt@fontenc{T1}
@@ -136,6 +137,10 @@
% Set portrait
portrait.legacy_if_set:n = @uvpt@portrait,
portrait.usage:n = preamble,
+ % smallmargins=<true|false>
+ % Set compact margins
+ smallmargins.legacy_if_set:n = @uvpt@smallmargins,
+ smallmargins.usage:n = preamble,
% microtype=<true|false>
% Load microtype
microtype.legacy_if_set:n = @uvpt@microtype,
@@ -287,6 +292,7 @@
\RequirePackage{url}
\def\UrlFont{\rmfamily\itshape\color{black}}
+
%% ============================================================
%% COLORS
%% ============================================================
@@ -384,23 +390,36 @@
% Headline
\newlength\titleindent
\newlength\restwidth
+\newlength\unitindent
+\newlength\lmoffset
\newlength\univieposter@leftmargin
\defbeamertemplate*{headline}{univie}
{%
+ \setlength\unitindent{0pt}%
+ \setlength\lmoffset{0pt}%
\if@uvpt@portrait
- \setlength\titleindent{.09\paperwidth}
- \setlength\restwidth{.991\paperwidth}
+ \if@uvpt@smallmargins
+ \setlength\unitindent{.09\paperwidth}
+ \else
+ \setlength\titleindent{.09\paperwidth}
+ \setlength\restwidth{.991\paperwidth}
+ \fi
\else
- \setlength\titleindent{.065\paperwidth}
- \setlength\restwidth{.935\paperwidth}
- \fi
+ \if@uvpt@smallmargins
+ \setlength\unitindent{.065\paperwidth}%
+ \setlength\lmoffset{-.02\paperwidth}%
+ \else
+ \setlength\titleindent{.065\paperwidth}%
+ \setlength\restwidth{.935\paperwidth}%
+ \fi%
+ \fi%
\begin{columns}
\begin{column}{\titleindent}
\end{column}
    \begin{column}{0.475\textwidth}
\begin{beamercolorbox}[wd=\columnwidth,sep=.028\textwidth]{univieunit}
- \usebox{\uvpt@box@logo}\par
- \vspace*{.7em}\hspace*{\titleindent}\usebeamerfont{univieunit}\usebeamercolor[fg]{univieunit}\uvpt@department
+ \hspace*{\lmoffset}\usebox{\uvpt@box@logo}\par
+ \vspace*{.7em}\hspace*{\lmoffset}\hspace*{\titleindent}\hspace*{\unitindent}\usebeamerfont{univieunit}\usebeamercolor[fg]{univieunit}\uvpt@department
\end{beamercolorbox}
\end{column}
    \begin{column}{0.48\textwidth}
@@ -432,7 +451,7 @@
\end{columns}
\vspace*{-1.8mm}
\begin{beamercolorbox}[sep=.014\textwidth]{titlebox}
- \hspace*{\titleindent}\hspace{.013\textwidth}%
+ \hspace*{.25\lmoffset}\hspace*{\titleindent}\hspace{.013\textwidth}%
\begin{minipage}{.8\textwidth}%
\usebeamerfont{title in headline}\inserttitle\par%
\ifx\insertsubtitle\@empty%
@@ -622,7 +641,9 @@
\else
\addtolength\univieposter@leftmargin{.065\paperwidth}
\fi
- \setbeamersize{text margin left=\univieposter@leftmargin}
+ \if@uvpt@smallmargins\else
+ \setbeamersize{text margin left=\univieposter@leftmargin}
+ \fi
}
@@ -694,6 +715,8 @@
\deftranslation[to=English]{footnote}{fn.}
\deftranslation[to=German]{example}{Beispiel}
\deftranslation[to=English]{example}{example}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% =============================================================
@@ -875,6 +898,24 @@
% URLs italic
\def\UrlFont{\rmfamily\itshape}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Covington
\if@uvpt@covington
% Rename the beamer example(s) environment
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 bfe92044718..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/05/09 v.2.5 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>
@@ -234,38 +239,43 @@ This includes all drawings, sketches, graphics and internet sources.}
\deftranslation[to=English]{selbst3p}{Furthermore, we declare that this paper has not been submitted as an examination already, neither as a whole nor in parts.}
\deftranslation[to=German]{wien}{Wien}
\deftranslation[to=English]{wien}{Vienna}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
%% ============================================================
%% 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}{}
@@ -275,18 +285,36 @@ This includes all drawings, sketches, graphics and internet sources.}
{\def\UrlFont{\rmfamily\itshape}
}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Fix for \slash-Makro, by Donald Arsenau
\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}
%% ============================================================
@@ -364,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.)}
@@ -424,7 +452,7 @@ This includes all drawings, sketches, graphics and internet sources.}
\clearmainofpairofpagestyles
\ihead{\headmark}
\ohead{\pagemark}
-\automark{chapter}
+\automark[section]{chapter}
\KOMAoptions{headsepline=true}
\pagestyle{scrheadings}
@@ -454,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
@@ -507,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}
@@ -536,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
@@ -571,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
@@ -802,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 0bdf4b8552f..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/05/09 v.2.5 Univie WLG journal layout (JSp)]
+\ProvidesPackage{univie-ling-wlg}[2024/09/28 v.2.9 Univie WLG journal layout (JSp)]
%% ============================================================
@@ -214,6 +214,24 @@
% Italic URLs
\def\UrlFont{\rmfamily\itshape}
+% Format URL dates
+\def\wlg@urldate{}
+\newcommand*\SetURLDate[1]{\gdef\wlg@urldate{#1}}
+\AddToHook{begindocument}{
+ \RequirePackage[english,ngerman]{isodate}
+ \numdate
+ \providecommand*\urldate[1]{[\translate{urlaccess} \printdate{#1}]}
+ % Convenience function
+ \NewDocumentCommand\weblink{mo}{%
+ \url{#1}%
+ \IfNoValueTF{#2}%
+ {\ifx\wlg@urldate\empty\else%
+ \ \urldate{\wlg@urldate}%
+ \fi}%
+ {\ \urldate{#2}}%
+ }
+}
+
% Microtype tweaks
\RequirePackage{microtype}
@@ -313,6 +331,8 @@
(Namensnennung -- Nicht kommerziell -- Keine Bearbeitungen)}
\deftranslation[to=English]{license}{This work is published under a Creative Commons \doclicenseNameRef\ license\\
(Attribution-NonCommercial-NoDerivatives)}
+\deftranslation[to=German]{urlaccess}{Abruf am:}
+\deftranslation[to=English]{urlaccess}{last accessed:}
\AtBeginDocument{%
@@ -411,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
@@ -441,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}%
}
@@ -575,6 +599,9 @@
\fi
\if@wlg@titlepage
\@maketitlepage[#1]%
+ \if@wlg@mainmatter
+ \pagenumbering{arabic}
+ \fi
\fi
\if@wlg@startpageset\else
\setcounter{page}{\thestartpage}
@@ -613,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}}
@@ -652,7 +680,7 @@
\newcommand{\@maketitlepage}[1][1]{%
\if@wlg@titlepageneeded
\begin{titlepage}
- \pagenumbering{alph}
+ \pagenumbering{roman}
\thispagestyle{empty}%
\setcounter{page}{%
#1%
@@ -856,7 +884,9 @@
\end{flushright}%
\par
\vskip 2em
- \pagenumbering{arabic}
+ \if@wlg@mainmatter
+ \pagenumbering{arabic}
+ \fi
}%
% Rewrite \include for local LastPage counter
@@ -966,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}
@@ -1023,6 +1056,8 @@
\if@wlg@covington
\RequirePackage{covington}
\renewcommand{\p@equation}[1]{(#1)}
+ \setlength\reflistindent{\parindent}
+ \setlength\reflistparsep{0pt}
\fi
@@ -1063,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 60172f7ebd1..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/05/09 v.2.5 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 837f66d53d9..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/05/09 v.2.5 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/ut-thesis/ut-thesis.cls b/Master/texmf-dist/tex/latex/ut-thesis/ut-thesis.cls
index 07ca4382793..5c33490cbaa 100644
--- a/Master/texmf-dist/tex/latex/ut-thesis/ut-thesis.cls
+++ b/Master/texmf-dist/tex/latex/ut-thesis/ut-thesis.cls
@@ -13,8 +13,8 @@
%% [https://www.sgs.utoronto.ca/academic-progress/program-completion/formatting]
%%
%% Copyright (c) 1998-2013 Francois Pitt <fpitt@cs.utoronto.ca>,
-%% 2020-2021 Jesse Knight <jesse.knight@mail.utoronto.ca>
-%% last updated at 23:30 (EST) on Tue 20 July 2021
+%% 2020-2024 Jesse Knight <jesse.x.knight@protonmail.com>
+%% last updated at 09:00 (BST) on Fri 26 July 2024
%%
%% This work may be distributed and/or modified under the conditions of
%% the LaTeX Project Public Licence, either version 1.3c of this licence
@@ -30,7 +30,7 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is
-%% Jesse Knight <jesse.knight@mail.utoronto.ca>.
+%% Jesse Knight <jesse.x.knight@protonmail.com>.
%%
%% This work consists of the files:
%% - README
@@ -39,19 +39,20 @@
%% - ut-thesis.pdf (derived user manual)
%% - ut-thesis.cls (derived class file)
%%
-%% To generate ut-thesis.cls (class file), run: pdflatex ut-thesis.ins
-%% To generate ut-thesis.pdf (documentation), run: pdflatex ut-thesis.dtx
-%% To use the class, make ut-thesis.cls visible to your LaTeX distribution,
-%% by placing ut-thesis.cls either in your working directory,
-%% or in your texmf tree, perhaps: $texmf/tex/latex/ut-thesis/ut-thesis.cls
-%% and the documentation: $texmf/doc/latex/ut-thesis/ut-thesis.pdf
+%% Install ut-thesis from your favourite LaTeX distribution.
+%% Alternatively, or to use the latest version:
+%% - generate ut-thesis.cls (class file) using: pdflatex ut-thesis.ins
+%% and copy to: $texmf/tex/latex/ut-thesis/ut-thesis.cls
+%% - generate ut-thesis.pdf (documentation) using: pdflatex ut-thesis.dtx
+%% and copy to: $texmf/doc/latex/ut-thesis/ut-thesis.pdf
+%% or simply copy ut-thesis.cls to your working directory.
%%
%% See version history on GitHub:
%% [https://github.com/jessexknight/ut-thesis]
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{ut-thesis}
-[2023/02/08 v3.1.7 University of Toronto thesis class]
+[2024/07/26 v3.1.8 University of Toronto thesis class]
\newif\ifmargins@equal
\newlength{\margin@base}
\newlength{\margin@offset}
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/verifycommand/verifycommand.sty b/Master/texmf-dist/tex/latex/verifycommand/verifycommand.sty
index 535bc7da318..72417ae4000 100644
--- a/Master/texmf-dist/tex/latex/verifycommand/verifycommand.sty
+++ b/Master/texmf-dist/tex/latex/verifycommand/verifycommand.sty
@@ -18,18 +18,16 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{verifycommand}
- [2024/01/11 v1.00 Verify definitions have not changed.]
-
-
+ [2024/09/03 v1.10 Verify definitions have not changed.]
\RequirePackage{etoolbox}
\RequirePackage{iftex}
-\newbool{VERCMD@enable}
-\booltrue{VERCMD@enable}
+\newbool{VERCMDenable}
+\booltrue{VERCMDenable}
\DeclareOption{disable}{%
- \boolfalse{VERCMD@enable}%
+ \boolfalse{VERCMDenable}%
\typeout{----}%
\typeout{Package verifycommand: Turned off by option 'disable'.}%
\typeout{----}%
@@ -68,20 +66,46 @@
}
\newcommand*{\VERCMD@whatchanged}{}
+\newbool{VERCMD@this@ltxcmd}
+\boolfalse{VERCMD@this@ltxcmd}
+
+\newbool{VERCMD@failed@ltxcmd}
+\boolfalse{VERCMD@failed@ltxcmd}
+
\newcommand*{\VERCMD@addchanged}[2]{%
\ifdefempty{\VERCMD@whatchanged}%
{}%
{\apptocmd{\VERCMD@whatchanged}{^^J}{}{}}%
- \apptocmd{\VERCMD@whatchanged}{Definition changed: #2^^J}{}{}%
- \apptocmd{\VERCMD@whatchanged}{Definition changed: \space\space\space#1}{}{}%
+ \apptocmd{\VERCMD@whatchanged}{%
+ (verifycommand)\space\space#2^^J%
+ \space\space\space\space\space\space\space\space\space\space%
+ \space\space\space\space\space\space\space\space\space(#1)%
+ }{}{}%
+ \ifbool{VERCMD@this@ltxcmd}{%
+ \apptocmd{\VERCMD@whatchanged}{ *}{}{}%
+ \booltrue{VERCMD@failed@ltxcmd}%
+ }{}%
+ \boolfalse{VERCMD@this@ltxcmd}%
}
-\AfterEndDocument{
+\AtEndDocument{
\ifdefempty{\VERCMD@whatchanged}{}{%
\typeout{--------------------------------}%
- \typeout{WARNING: Something may fail.}%
- \typeout{\VERCMD@whatchanged}%
- \typeout{--------------------------------}%
+ \typeout{Package verifycommand Warning: Definitions have changed.}%
+ \typeout{Patches for the following macros may need to be updated.}%
+ \typeout{See the previous warnings for line numbers.}%
+ \typeout{}%
+ \typeout{Syntax:\space\space Patching pkg -> Defining pkg: Macro (checksum)}%
+ \typeout{-----}%
+ \typeout{\VERCMD@whatchanged}
+ \typeout{-----}%
+ \typeout{Look for updates to these packages.}
+ \ifbool{VERCMD@failed@ltxcmd}{
+ \typeout{Any of the above marked with a * may be due to changes in LaTeX internals,}
+ \typeout{the most recently known of which was 2023/12/01.}
+ \typeout{If so, look for updates for the LaTeX sytem as well.}
+ }{}
+ \typeout{--------------------------------}
}
}
@@ -93,32 +117,57 @@
}%
}
-\newcommand*{\VERCMD@Warning}[3]{%
+\newcommand*{\VERCMDWarning}[3]{%
\ifblank{#1}%
{%
\VERCMD@ProgWarning{%
- Something may fail. A definition has changed:\MessageBreak
+ A definition has changed:\MessageBreak
\ifblank{#2}{}{#2: }\string#3\MessageBreak
- \VERCMD@temp\MessageBreak
- }
- \expandafter\VERCMD@addchanged\expandafter{\VERCMD@temp}{\string#3}%
+ (\VERCMD@temp)\MessageBreak
+ }%
+ \expandafter\VERCMD@addchanged%
+ \expandafter{\VERCMD@temp}{\string#3}%
}%
{%
\PackageWarning{#1}{%
- Something may fail. A definition has changed:\MessageBreak%
+ A definition has changed:\MessageBreak%
\ifblank{#2}{}{#2: }%
\string#3\MessageBreak%
- \VERCMD@temp\MessageBreak%
+ (\VERCMD@temp)\MessageBreak%
}%
- \expandafter\VERCMD@addchanged\expandafter{\VERCMD@temp}{\ifblank{#2}{}{#2: }\string#3}%
+ \expandafter\VERCMD@addchanged%
+ \expandafter{\VERCMD@temp}{#1 -> \ifblank{#2}{}{#2: }\string#3}%
}%
}
\ExplSyntaxOn
-\NewDocumentCommand{\VerifyCommand}{O{} O{} m m}{%
- \ifbool{VERCMD@enable}{%
+\newbool{VERCMD@passed}
+\newbool{VERCMD@failed}
+\newcommand*{\TestVerifyCommands}
+{
+ \boolfalse{VERCMD@passed}
+ \boolfalse{VERCMD@failed}
+}
+\newcommand*{\IfVerifyCommandPassed}
+ {%
+ \ifbool{VERCMD@passed}%
+ {\let\VERCMD@tempa\@firstoftwo}%
+ {\let\VERCMD@tempa\@secondoftwo}%
+ \VERCMD@tempa%
+ }
+\newcommand*{\IfVerifyCommandFailed}
+ {%
+ \ifbool{VERCMD@failed}%
+ {\let\VERCMD@tempa\@firstoftwo}%
+ {\let\VERCMD@tempa\@secondoftwo}%
+ \VERCMD@tempa%
+ }
+\NewDocumentCommand{\IfVerifyCommand}{O{} O{} m m}{%
+ \ifbool{VERCMDenable}{%
\edef\VERCMD@temp{Unknown~definition}%
+ \boolfalse{VERCMD@this@ltxcmd}
\ifcsdef{\cs_to_str:N #3~code}%
{%
+ \booltrue{VERCMD@this@ltxcmd}%
\expandafter\VERCMD@mdfive%
\csname \cs_to_str:N #3~code\endcsname%
}%
@@ -138,7 +187,10 @@
\ifcsdef{\VERCMD@backslash\cs_to_str:N #3}%
{%
\expandafter\VERCMD@mdfive%
- \csname \VERCMD@backslash\cs_to_str:N #3\endcsname%
+ \csname %
+ \VERCMD@backslash%
+ \cs_to_str:N #3%
+ \endcsname%
}%
{%
\ifdef{#3}%
@@ -149,18 +201,38 @@
}%
}%
\ifdefstring{\VERCMD@temp}{#4}%
- {}%
{%
- \VERCMD@Warning{#1}{#2}{#3}%
+ \booltrue{VERCMD@passed}%
+ \let\VERCMD@tempa\@firstoftwo%
+ }%
+ {%
+ \booltrue{VERCMD@failed}%
+ \let\VERCMD@tempa\@secondoftwo%
}%
}% if package enabled
- {}% if package not enabled
+ {\let\VERCMD@tempa\@firstoftwo}% if package not enabled
+ \VERCMD@tempa%
}
-\NewDocumentCommand{\VerifyEnvironment}{O{} O{} m m m}{%
- \ifbool{VERCMD@enable}{%
+\NewDocumentCommand{\VerifyCommand}{O{} O{} m m}{%
+ \ifblank{#1}{% #1 blank
+ \IfVerifyCommand{#3}{#4}{}{\VERCMDWarning{}{}{#3}}%
+ }% #1 blank
+ {% #1 given
+ \ifblank{#2}{% #2 blank
+ \IfVerifyCommand[#1]{#3}{#4}{}{\VERCMDWarning{#1}{}{#3}}%
+ }% #2 blank
+ {% #2 given
+ \IfVerifyCommand[#1][#2]{#3}{#4}{}{\VERCMDWarning{#1}{#2}{#3}}%
+ }% #2 given
+ }% #1 given
+}
+\NewDocumentCommand{\IfVerifyEnvironmentBegin}{O{} O{} m m}{%
+ \ifbool{VERCMDenable}{%
\edef\VERCMD@temp{Unknown~definition}%
+ \boolfalse{VERCMD@this@ltxcmd}
\ifcsdef{environment~#3~code}%
{%
+ \booltrue{VERCMD@this@ltxcmd}%
\expandafter\VERCMD@mdfive%
\csname environment~#3~code\endcsname%
}%
@@ -177,13 +249,25 @@
}%
}%
\ifdefstring{\VERCMD@temp}{#4}%
- {}%
{%
- \VERCMD@Warning{#1}{#2}{#3}%
+ \booltrue{VERCMD@passed}%
+ \let\VERCMD@tempa\@firstoftwo%
+ }%
+ {%
+ \booltrue{VERCMD@failed}%
+ \let\VERCMD@tempa\@secondoftwo%
}%
+ }% if package enabled
+ {\let\VERCMD@tempa\@firstoftwo}% if package not enabled
+ \VERCMD@tempa%
+}
+\NewDocumentCommand{\IfVerifyEnvironmentEnd}{O{} O{} m m}{%
+ \ifbool{VERCMDenable}{%
\edef\VERCMD@temp{Unknown~definition}%
+ \boolfalse{VERCMD@this@ltxcmd}
\ifcsdef{environment~#3~end~aux~}%
{%
+ \booltrue{VERCMD@this@ltxcmd}%
\expandafter\VERCMD@mdfive
\csname environment~#3~end~aux~\endcsname%
}%
@@ -195,15 +279,57 @@
}%
{}%
}%
- \ifdefstring{\VERCMD@temp}{#5}%
- {}%
+ \ifdefstring{\VERCMD@temp}{#4}%
+ {%
+ \booltrue{VERCMD@passed}%
+ \let\VERCMD@tempa\@firstoftwo%
+ }%
{%
- \VERCMD@Warning{#1}{#2}{(end)#3}%
+ \booltrue{VERCMD@failed}%
+ \let\VERCMD@tempa\@secondoftwo%
}%
}% if package enabled
- {}% if package not enabled
+ {\let\VERCMD@tempa\@firstoftwo}% if package not enabled
+ \VERCMD@tempa%
+}
+\NewDocumentCommand{\VerifyEnvironment}{O{} O{} m m m}{%
+ \ifblank{#1}{% #1 blank
+ \IfVerifyEnvironmentBegin{#3}{#4}%
+ {}%
+ {\VERCMDWarning{}{}{#3}}%
+ }% #1 blank
+ {% #1 given
+ \ifblank{#2}{% #2 blank
+ \IfVerifyEnvironmentBegin[#1]{#3}{#4}%
+ {}%
+ {\VERCMDWarning{#1}{}{#3}}%
+ }% #2 blank
+ {% #2 given
+ \IfVerifyEnvironmentBegin[#1][#2]{#3}{#4}%
+ {}%
+ {\VERCMDWarning{#1}{#2}{#3}}%
+ }% #2 given
+ }% #1 given
+ \ifblank{#1}{% #1 blank
+ \IfVerifyEnvironmentEnd{#3}{#5}%
+ {}%
+ {\VERCMDWarning{}{}{(end)#3}}%
+ }% #1 blank
+ {% #1 given
+ \ifblank{#2}{% #2 blank
+ \IfVerifyEnvironmentEnd[#1]{#3}{#5}%
+ {}%
+ {\VERCMDWarning{#1}{}{(end)#3}}%
+ }% #2 blank
+ {% #2 given
+ \IfVerifyEnvironmentEnd[#1][#2]{#3}{#5}%
+ {}%
+ {\VERCMDWarning{#1}{#2}{(end)#3}}%
+ }% #2 given
+ }% #1 given
}
\ExplSyntaxOff
+
\endinput
%%
%% End of file `verifycommand.sty'.
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..e6ebbb6adfe
--- /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..3dead99c381
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/whatsnote/whats-layout-module.code.tex
@@ -0,0 +1,166 @@
+\whatsnote_provide_module:n { layout }
+
+% \bool_if:NT \g__whatsnote_darkmode_bool
+% {
+% \pagecolor{black!90}
+% \hook_gput_code:nnn { env/document/before } { . }
+% { \color{gray!5}\global\let\default@color\current@color }
+% }
+
+\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}
+ \vspace*{-35\p@}
+ {
+ \centering
+ \parindent \z@
+ \normalfont
+ \interlinepenalty\@M
+ \huge \bfseries #1\par\nobreak
+ \vskip 30\p@
+ }
+ }
+
+\box_new:N \l__whats_left_box
+\box_new:N \l__whats_right_box
+\box_new:N \l__whats_seg_box
+\keys_define:nn { whats / textfig }
+ {
+ lefthand~ratio .fp_set:N = \l__whats_left_ratio_fp ,
+ lefthand~ratio .initial:n = .64 ,
+ lefthand~width .dim_set:N = \l__whats_left_dim ,
+ righthand~ratio .fp_set:N = \l__whats_right_ratio_fp ,
+ righthand~ratio .initial:n = .32 ,
+ righthand~width .dim_set:N = \l__whats_right_dim ,
+ sidebyside~gap .dim_set:N = \l__whats_gap_dim ,
+ sidebyside~gap .initial:n = .02\linewidth ,
+ before~left .tl_set:N = \l__whats_before_left_tl ,
+ before~right .tl_set:N = \l__whats_before_right_tl ,
+ }
+\cs_new_protected:Npn \textfigsplit
+ {
+ %% Width is too small! Abort!
+ \dim_compare:nNnT \l__whats_right_dim > { 10sp }
+ {
+ \__whats_textfig_end_save:
+ \__whats_textfig_save:NN \l__whats_right_box \l__whats_right_dim
+ \l__whats_before_right_tl \ignorespaces
+ }
+ }
+\NewDocumentEnvironment{textfig}{ O{} }
+ {
+ \medskip \keys_set:nn { whats / textfig } {#1}
+ \__whats_calc_width:
+ \__whats_textfig_save:NN \l__whats_left_box \l__whats_left_dim
+ \l__whats_before_left_tl \ignorespaces
+ }
+ {
+ \__whats_textfig_end_save:
+ \__whats_textfig_typeset:
+ \medskip
+ }
+\cs_new:Npn \__whats_calc_width:
+ {
+ \bool_lazy_and:nnTF
+ { \dim_compare_p:nNn \l__whats_left_dim = \c_zero_dim }
+ { \dim_compare_p:nNn \l__whats_right_dim = \c_zero_dim }
+ {
+ \bool_lazy_and:nnTF
+ { \fp_compare_p:nNn { abs ( \l__whats_left_ratio_fp ) } < { 0.0001 } }
+ { \fp_compare_p:nNn { abs ( \l__whats_right_ratio_fp ) } < { 0.0001 } }
+ {
+ \dim_set:Nn \l__whats_left_dim { 0.5\linewidth - 0.5\l__whats_gap_dim }
+ \dim_set:Nn \l__whats_right_dim { \l__whats_left_dim }
+ }
+ {
+ \fp_compare:nNnTF { abs ( \l__whats_left_ratio_fp ) } < { 0.0001 }
+ {
+ \dim_set:Nn \l__whats_right_dim
+ {
+ \fp_use:N \l__whats_right_ratio_fp
+ \dimexpr \linewidth - \l__whats_gap_dim \relax
+ }
+ \dim_set:Nn \l__whats_left_dim
+ { \linewidth - \l__whats_gap_dim - \l__whats_right_dim }
+ }
+ {
+ \dim_set:Nn \l__whats_left_dim
+ {
+ \fp_use:N \l__whats_left_ratio_fp
+ \dimexpr \linewidth - \l__whats_gap_dim \relax
+ }
+ \dim_set:Nn \l__whats_right_dim
+ { \linewidth - \l__whats_gap_dim - \l__whats_left_dim }
+ }
+ }
+ }
+ {
+ \dim_compare:nNnTF \l__whats_left_dim = \c_zero_dim
+ {
+ \dim_set:Nn \l__whats_left_dim
+ { \linewidth - \l__whats_gap_dim - \l__whats_right_dim }
+ }
+ {
+ \dim_set:Nn \l__whats_right_dim
+ { \linewidth - \l__whats_gap_dim - \l__whats_left_dim }
+ }
+ }
+ }
+\cs_new:Npn \__whats_textfig_save:NN #1 #2
+ {
+ \hbox_set:Nw #1
+ \minipage {#2}
+ \setlength{\parindent}{0pt}
+ }
+\cs_new:Npn \__whats_textfig_end_save:
+ {
+ \endminipage
+ \hbox_set_end:
+ }
+\cs_new:Npn \__whats_textfig_typeset:
+ {
+ \hbox_to_wd:nn { \linewidth }
+ {
+ \hbox_unpack_drop:N \l__whats_left_box
+ \hss
+ \hbox_unpack_drop:N \l__whats_right_box
+ }
+ }
+
+\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..fcde4a0aded
--- /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, amsthm, 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 }
+ \faIcon { pen-square }~Problem
+ } [ chapter ]
+\newtheorem* { solution }
+ {
+ \sffamily\scshape \color { MidnightBlue }
+ \faIcon { check-square }~Solution
+ }
+\newtheorem* { scratchwork }
+ {
+ \sffamily\scshape \color { MidnightBlue }
+ \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..1915375e33b
--- /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/11}
+\def\whatsnote@version{3.0A}
+
+\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/wheelchart/wheelchart.sty b/Master/texmf-dist/tex/latex/wheelchart/wheelchart.sty
index e2c85439761..21e232b099b 100644
--- a/Master/texmf-dist/tex/latex/wheelchart/wheelchart.sty
+++ b/Master/texmf-dist/tex/latex/wheelchart/wheelchart.sty
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{tikz}
\usetikzlibrary{calc}
-\ProvidesExplPackage{wheelchart}{2024/03/08}{3.0}{Diagrams with circular or other shapes using TikZ and LaTeX3}
+\ProvidesExplPackage{wheelchart}{2024/07/28}{4.0}{Diagrams with circular or other shapes using TikZ and LaTeX3}
%%> \subsection{Variables}
@@ -59,6 +59,8 @@
\fp_const:Nn \c__wheelchart_arc_data_end_factor_left_fp { 1 }
\fp_const:Nn \c__wheelchart_arc_data_end_factor_right_fp { 0 }
\fp_new:N \l__wheelchart_arc_data_line_sep_factor_fp
+\fp_new:N \l__wheelchart_arc_data_lines_pos_fp
+\fp_new:N \l__wheelchart_arc_data_lines_shift_fp
\fp_new:N \l__wheelchart_arc_data_pos_fp
\fp_new:N \l__wheelchart_arc_data_radius_plot_false_fp
\fp_new:N \l__wheelchart_arc_data_sep_fp
@@ -168,6 +170,9 @@
\int_new:N \l__wheelchart_lines_ext_top_dir_int
\int_new:N \l__wheelchart_max_list_items_int
+\regex_const:Nn \c__wheelchart_braces_regex { \{(.+)\} }
+\regex_const:Nn \c__wheelchart_key_braces_regex { [\w\s]+\{(.+)\} }
+
\seq_new:N \l__wheelchart_arc_data_seq
\seq_new:N \l__wheelchart_discrete_coefficients_first_seq
\seq_new:N \l__wheelchart_discrete_coefficients_second_seq
@@ -180,8 +185,8 @@
{
sign ( \l__wheelchart_arc_data_dir_fp ) *
(
- \cs:w c__wheelchart_arc_data_start_factor_\l__wheelchart_arc_data_align_tl _fp\cs_end:
- + \cs:w c__wheelchart_arc_data_end_factor_\l__wheelchart_arc_data_align_tl _fp\cs_end:
+ \cs:w c__wheelchart_arc_data_start_factor_\l__wheelchart_arc_data_align_tl _fp \cs_end:
+ + \cs:w c__wheelchart_arc_data_end_factor_\l__wheelchart_arc_data_align_tl _fp \cs_end:
)
}
\tl_new:N \l__wheelchart_arc_data_align_tl
@@ -262,7 +267,7 @@
\cs_new_protected:Npn \__wheelchart_caption_and_title:nnnnn #1#2#3#4#5
{
- \__wheelchart_if_text:nn {#1}
+ \__wheelchart_if_text:nnn {#1} { o }
{
\node [ anchor = #2 , align = #3 , / wheelchart / #1_style ]
at ( $ (#4) + ( 0 , { #5 * ( \pgfkeysvalueof { / wheelchart / #1~sep } ) } ) $ )
@@ -282,12 +287,12 @@
{
\fp_eval:n
{
- ( 1 - (#1) ) * \cs:w g__wheelchart_slice_inner_start_angle_\WCcount _fp\cs_end:
- + (#1) * \cs:w g__wheelchart_slice_inner_end_angle_\WCcount _fp\cs_end:
+ ( 1 - (#1) ) * \cs:w g__wheelchart_slice_inner_start_angle_\WCcount _fp \cs_end:
+ + (#1) * \cs:w g__wheelchart_slice_inner_end_angle_\WCcount _fp \cs_end:
+ \l__wheelchart_counter_or_clockwise_fp * (#2)
}
}
- { \fp_eval:n { \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: - (#4) } }
+ { \fp_eval:n { \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: - (#4) } }
)
! { \fp_eval:n {#3} } !
(
@@ -295,12 +300,12 @@
{
\fp_eval:n
{
- ( 1 - (#1) ) * \cs:w g__wheelchart_slice_outer_start_angle_\WCcount _fp\cs_end:
- + (#1) * \cs:w g__wheelchart_slice_outer_end_angle_\WCcount _fp\cs_end:
+ ( 1 - (#1) ) * \cs:w g__wheelchart_slice_outer_start_angle_\WCcount _fp \cs_end:
+ + (#1) * \cs:w g__wheelchart_slice_outer_end_angle_\WCcount _fp \cs_end:
+ \l__wheelchart_counter_or_clockwise_fp * (#2)
}
}
- { \fp_eval:n { \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: + (#4) } }
+ { \fp_eval:n { \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: + (#4) } }
)
$%note the () around the #i's to keep these contents together
}
@@ -374,10 +379,10 @@
\path let
\p { l__wheelchart_def_angle_1 } =
\__wheelchart_point_plot_true:nnnnn { \WCcount } {#1} {#2} { 0 }
- { \fp_eval:n { (#4) + 1 / \cs:w g__wheelchart_samples_\WCcount _fp\cs_end: } } ,
+ { \fp_eval:n { (#4) + 1 / \cs:w g__wheelchart_samples_\WCcount _fp \cs_end: } } ,
\p { l__wheelchart_def_angle_2 } =
\__wheelchart_point_plot_true:nnnnn { \WCcount } {#1} {#2} { 1 }
- { \fp_eval:n { (#4) + 1 / \cs:w g__wheelchart_samples_\WCcount _fp\cs_end: } }
+ { \fp_eval:n { (#4) + 1 / \cs:w g__wheelchart_samples_\WCcount _fp \cs_end: } }
in [ / utils / exec = { \__wheelchart_def_angle_aux: } ]
;
}
@@ -392,10 +397,10 @@
{
( 1 - (#2) ) *
(
- \cs:w g__wheelchart_slice_outer_start_angle_#1_fp\cs_end:
- - \cs:w g__wheelchart_slice_inner_start_angle_#1_fp\cs_end:
+ \cs:w g__wheelchart_slice_outer_start_angle_#1_fp \cs_end:
+ - \cs:w g__wheelchart_slice_inner_start_angle_#1_fp \cs_end:
)
- + (#2) * ( \cs:w g__wheelchart_slice_outer_end_angle_#1_fp\cs_end: - \cs:w g__wheelchart_slice_inner_end_angle_#1_fp\cs_end: )
+ + (#2) * ( \cs:w g__wheelchart_slice_outer_end_angle_#1_fp \cs_end: - \cs:w g__wheelchart_slice_inner_end_angle_#1_fp \cs_end: )
}
\cs_new:Npn \__wheelchart_def_angle_plot_false:nnnnn #1#2#3#4#5
@@ -410,11 +415,11 @@
(
sqrt
(
- ( \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: + \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: ) ^ 2
- - \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: *
+ ( \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: + \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: ) ^ 2
+ - \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: *
(
2 + 2 * cosd ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} )
- + \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp\cs_end:
+ + \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp \cs_end:
*
(
(
@@ -425,25 +430,25 @@
)
)
)
- + \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: *
+ + \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: *
(
- \cs:w g__wheelchart_inner_radius_#1_fp\cs_end:
- - \cs:w g__wheelchart_outer_radius_#1_fp\cs_end:
+ \cs:w g__wheelchart_inner_radius_#1_fp \cs_end:
+ - \cs:w g__wheelchart_outer_radius_#1_fp \cs_end:
* cosd ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} )
)
/ \__wheelchart_def_radius:nnn {#1} {#4} {#5}
)
- * \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: * sind ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} )
+ * \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: * sind ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} )
/
(
- ( \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: + \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: ) ^ 2
- - 2 * \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp\cs_end:
+ ( \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: + \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: ) ^ 2
+ - 2 * \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: * \cs:w g__wheelchart_inner_radius_#1_fp \cs_end:
* ( 1 + cosd ( \__wheelchart_def_angle_plot_false_aux_angle:nn {#1} {#2} ) )
)
)
}
- + ( 1 - (#2) ) * ( \cs:w g__wheelchart_slice_inner_start_angle_#1_fp\cs_end: )
- + (#2) * ( \cs:w g__wheelchart_slice_inner_end_angle_#1_fp\cs_end: )
+ + ( 1 - (#2) ) * ( \cs:w g__wheelchart_slice_inner_start_angle_#1_fp \cs_end: )
+ + (#2) * ( \cs:w g__wheelchart_slice_inner_end_angle_#1_fp \cs_end: )
+ \l__wheelchart_counter_or_clockwise_fp * (#3)
}
}
@@ -451,7 +456,7 @@
\cs_new_protected:Npn \__wheelchart_def_coord:nnnn #1#2#3#4
{
\path let \p { l__wheelchart_coord } =
- ( \cs:w __wheelchart_#2_plot:nn\cs_end: {#4} { \fp_use:c { g__wheelchart_#2_radius_\WCcount _fp } } )
+ ( \cs:w __wheelchart_#2_plot:nn \cs_end: {#4} { \fp_use:c { g__wheelchart_#2_radius_\WCcount _fp } } )
in
[
/ utils / exec =
@@ -484,11 +489,11 @@
<
\l__wheelchart_gap_fp
?
- min ( \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp\cs_end: , \l__wheelchart_gap_max_angle_def_fp )
+ min ( \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp \cs_end: , \l__wheelchart_gap_max_angle_def_fp )
:
asind ( min ( \l__wheelchart_gap_fp / ( (#2) + 1 - sign (#2) ) , 1 ) ) + \l__wheelchart_gap_polar_fp
- %note the min ( ... , 1 ) such that the asind is always defined
- %also note the + 1 - sign (#2) such that the denominator is also nonzero if #2 = 0
+ %note the min ( ... , 1 ) so that the asind is always defined
+ %also note the + 1 - sign (#2) so that the denominator is also nonzero if #2 = 0
}
}
@@ -516,7 +521,7 @@
:
\g__wheelchart_new_angle_fp - \g__wheelchart_angle_fp
)
- / \cs:w g__wheelchart_samples_1_fp\cs_end:
+ / \cs:w g__wheelchart_samples_1_fp \cs_end:
}
\path let
\p { l__wheelchart_slices_orientation_1 } =
@@ -579,8 +584,8 @@
{
\fp_eval:n
{
- ( 1 - (#2) ) * ( \cs:w g__wheelchart_inner_radius_#1_fp\cs_end: - (#3) )
- + (#2) * ( \cs:w g__wheelchart_outer_radius_#1_fp\cs_end: + (#3) )
+ ( 1 - (#2) ) * ( \cs:w g__wheelchart_inner_radius_#1_fp \cs_end: - (#3) )
+ + (#2) * ( \cs:w g__wheelchart_outer_radius_#1_fp \cs_end: + (#3) )
}
}
@@ -591,26 +596,26 @@
{
\fp_gset:cn { g__wheelchart_slice_#1_#2_angle_\WCcount _fp }
{
- \cs:w g__wheelchart_#3angle_fp\cs_end: +
+ \cs:w g__wheelchart_#3angle_fp \cs_end: +
(
\l__wheelchart_counter_or_clockwise_fp *
- ( (#4) * \cs:w g__wheelchart_#1_gap_\WCcount _fp\cs_end: + \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp\cs_end: )
+ ( (#4) * \cs:w g__wheelchart_#1_gap_\WCcount _fp \cs_end: + \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp \cs_end: )
)
}
}
{
\fp_gset:cn { g__wheelchart_slice_#1_#2_angle_\WCcount _fp }
{
- \cs:w g__wheelchart_#3angle_fp\cs_end: +
+ \cs:w g__wheelchart_#3angle_fp \cs_end: +
(
\l__wheelchart_counter_or_clockwise_fp *
(
- (#4) * \cs:w g__wheelchart_#1_gap_\WCcount _fp\cs_end: + \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp\cs_end:
+ (#4) * \cs:w g__wheelchart_#1_gap_\WCcount _fp \cs_end: + \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp \cs_end:
- asind
(
- \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end:
- * sind ( \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp\cs_end: )
- / \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end:
+ \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end:
+ * sind ( \cs:w l__wheelchart_slices_#1_#2_angle_shift_fp \cs_end: )
+ / \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end:
)
)
)
@@ -620,8 +625,8 @@
\cs_new_protected:Npn \__wheelchart_def_slice_keys:n #1
{
- {%note the double {{...}} such that the contents is in a group
- %such that pgfkeys which are specific to the current slice are local for this slice
+ {%note the double braces {{...}} so that the contents is in a group
+ %and in particular, pgfkeys which are specific to the current slice are local for this slice
\clist_if_in:NVT \l__wheelchart_slice_range_local_clist \WCcount
{
\pgfkeys { / wheelchart , slice_final /. expanded = { \exp_not:v { l__wheelchart_slice_\WCcount _keys_clist } } }
@@ -663,24 +668,24 @@
%g__wheelchart_WCcount_counter to be larger than \WCtotalcount
\tl_build_end:N \WClegend
\cs_set:Npn \WCcount { \theg__wheelchart_WCcount_counter }
- \cs_set:Npn \WCpercentage { \cs:w l__wheelchart_WCpercentage_\theg__wheelchart_WCcount_counter\cs_end: }
- \cs_set:Npn \WCpercentagerounded { \cs:w l__wheelchart_WCpercentagerounded_\theg__wheelchart_WCcount_counter\cs_end: }
+ \cs_set:Npn \WCpercentage { \cs:w l__wheelchart_WCpercentage_\theg__wheelchart_WCcount_counter \cs_end: }
+ \cs_set:Npn \WCpercentagerounded { \cs:w l__wheelchart_WCpercentagerounded_\theg__wheelchart_WCcount_counter \cs_end: }
\str_if_eq:eeTF { \l__wheelchart_type_tl } { etoc }
{
\cs_set:Npn \WCetocthelinkedname
- { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_name_\theg__wheelchart_WCcount_counter\cs_end: }
+ { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_name_\theg__wheelchart_WCcount_counter \cs_end: }
\cs_set:Npn \WCetocthelinkednumber
- { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_number_\theg__wheelchart_WCcount_counter\cs_end: }
+ { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_number_\theg__wheelchart_WCcount_counter \cs_end: }
\cs_set:Npn \WCetocthelinkedpage
- { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_page_\theg__wheelchart_WCcount_counter\cs_end: }
+ { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_linked_page_\theg__wheelchart_WCcount_counter \cs_end: }
\cs_set:Npn \WCetocthename
- { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_name_\theg__wheelchart_WCcount_counter\cs_end: }
+ { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_name_\theg__wheelchart_WCcount_counter \cs_end: }
\cs_set:Npn \WCetocthenumber
- { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_number_\theg__wheelchart_WCcount_counter\cs_end: }
+ { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_number_\theg__wheelchart_WCcount_counter \cs_end: }
\cs_set:Npn \WCetocthepage
- { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_page_\theg__wheelchart_WCcount_counter\cs_end: }
+ { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_page_\theg__wheelchart_WCcount_counter \cs_end: }
\cs_set:Npn \WCetocthenumberofpages
- { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_number_of_pages_\theg__wheelchart_WCcount_counter\cs_end: }
+ { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _the_number_of_pages_\theg__wheelchart_WCcount_counter \cs_end: }
}
{
\clist_if_empty:NTF \l__wheelchart_header_clist
@@ -688,7 +693,7 @@
\int_step_inline:nn { \l__wheelchart_max_list_items_int }
{
\cs_set:cpn { WCvar\int_to_Alph:n {##1} }
- { \cs:w l__wheelchart_item_WCvar\int_to_Alph:n {##1}_\theg__wheelchart_WCcount_counter\cs_end: }
+ { \cs:w l__wheelchart_item_WCvar\int_to_Alph:n {##1}_\theg__wheelchart_WCcount_counter \cs_end: }
}
}
{
@@ -717,13 +722,13 @@
(
atand
(
- \cs:w g__wheelchart_#3_y_fp\cs_end: - \cs:w g__wheelchart_#4_y_fp\cs_end: ,
- \cs:w g__wheelchart_#3_x_fp\cs_end: - \cs:w g__wheelchart_#4_x_fp\cs_end:
+ \cs:w g__wheelchart_#3_y_fp \cs_end: - \cs:w g__wheelchart_#4_y_fp \cs_end: ,
+ \cs:w g__wheelchart_#3_x_fp \cs_end: - \cs:w g__wheelchart_#4_x_fp \cs_end:
)
- atand
(
- \cs:w g__wheelchart_#1_y_fp\cs_end: - \cs:w g__wheelchart_#2_y_fp\cs_end: ,
- \cs:w g__wheelchart_#1_x_fp\cs_end: - \cs:w g__wheelchart_#2_x_fp\cs_end:
+ \cs:w g__wheelchart_#1_y_fp \cs_end: - \cs:w g__wheelchart_#2_y_fp \cs_end: ,
+ \cs:w g__wheelchart_#1_x_fp \cs_end: - \cs:w g__wheelchart_#2_x_fp \cs_end:
)
)
}
@@ -969,9 +974,9 @@
\__wheelchart_for_loop:n
{
\pgfkeysvalueof { / wheelchart / before~slices }
- \int_step_inline:nn { \fp_eval:n { round ( \cs:w g__wheelchart_value_\WCcount _fp\cs_end: ) } }
- %note that \fp_eval:n { round ( ... ) } is necessary even when the value is an integer because if parse=pgfmath
- %then .0 is added and then \int_step_inline:nn { \cs:w g__wheelchart_value_\WCcount _fp\cs_end: } would give the messages
+ \int_step_inline:nn { \fp_eval:n { round ( \cs:w g__wheelchart_value_\WCcount _fp \cs_end: ) } }
+ %note that \fp_eval:n { round ( ... ) } is necessary even when the value is an integer because pgfmath
+ %could have added .0 and then \int_step_inline:nn { \cs:w g__wheelchart_value_\WCcount _fp \cs_end: } would give the messages
%Missing character: There is no . in font nullfont! Missing character: There is no 0 in font nullfont!
{
\int_gincr:N \g__wheelchart_discrete_count_int
@@ -1082,7 +1087,7 @@
\cs_set:Npe \WCmidangle
{ \fp_use:c { g__wheelchart_WCmidangle_\WCcount _fp } }
\pgfkeysvalueof { / wheelchart / for~loop~start }%this must be placed after the definition of macros such as \WCpercentage
- %such that these macros can be used in the key for loop start
+ %so that these macros can be used in the key for loop start
\begin { scope }
[
shift = { ( \WCmidangle \c_colon_str \fp_use:c { g__wheelchart_explode_\WCcount _fp } ) } ,
@@ -1161,16 +1166,21 @@
\fp_gset:cn { g__wheelchart_#1_\WCcount _fp } { \pgfmathresult }
}
-\cs_new_protected:Npn \__wheelchart_if_text:nn #1#2
+\cs_new_protected:Npn \__wheelchart_if_text:nnn #1#2#3
{
%https://tex.stackexchange.com/questions/42280/expand-away-empty-macros-within-ifthenelse
%https://tex.stackexchange.com/questions/44919/proper-way-to-detect-empty-blank-text
\begin { pgfinterruptpicture }
+ \DeclareDocumentCommand \\ {#2} {}
+ %for arc data, \\ is used with seq_set_split so has no optional argument thus then #2 is empty
+ %otherwise, #2 is o
+ %no s because an optional star does not apply in a node
+ %no ! because a space between \\ and its optional argument is allowed in a node
%https://tex.stackexchange.com/questions/459853/savebox-within-tikzpicture-results-in-an-empty-savebox
\hbox_gset:Nn \g__wheelchart_if_text_box { \pgfkeysvalueof { / wheelchart / #1 } }
\end { pgfinterruptpicture }
\dim_compare:nNnT { \box_wd:N \g__wheelchart_if_text_box } > { 0 pt }
- { {#2} }
+ { {#3} }
}
\cs_new_protected:Npn \__wheelchart_initial:n #1
@@ -1182,7 +1192,7 @@
\tl_if_empty:nTF {#1}
{ \cs_set:Npn \WCtotalcount { 0 } }
{
- \cs:w seq_set_split:Ne\l__wheelchart_expand_list_tl\cs_end:
+ \cs:w seq_set_split:Ne\l__wheelchart_expand_list_tl \cs_end:
\l__wheelchart_list_seq
{ \pgfkeysvalueof { / wheelchart / separator~rows } }
{#1}
@@ -1190,7 +1200,7 @@
\int_zero:N \l__wheelchart_max_list_items_int
\seq_map_indexed_inline:Nn \l__wheelchart_list_seq
{
- \cs:w seq_set_split:Ne\l__wheelchart_expand_list_items_tl\cs_end:
+ \cs:w seq_set_split:Ne\l__wheelchart_expand_list_items_tl \cs_end:
\l__wheelchart_list_items_seq
{ \pgfkeysvalueof { / wheelchart / separator~columns } }
{##2}
@@ -1245,7 +1255,7 @@
\etocsetnexttocdepth { -1 }%only for the next toc
\etocsetstyle { \l__wheelchart_etoc_level_tl } {} {}
{
- \int_compare:nNnT { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int\cs_end: } > { 0 }
+ \int_compare:nNnT { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int \cs_end: } > { 0 }
{
\cs_gset:cpe
{
@@ -1304,7 +1314,7 @@
{}
\int_gzero_new:c { g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int }
\pgfkeysvalueof { / wheelchart / etoc~code }
- \int_compare:nNnT { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int\cs_end: } > { 0 }
+ \int_compare:nNnT { \cs:w g__wheelchart_etoc_item_\l__wheelchart_etoc_name_tl _count_int \cs_end: } > { 0 }
{
\cs_gset:cpe
{
@@ -1331,32 +1341,32 @@
{
\__wheelchart_def_slice_keys:n
{ \__wheelchart_gdef_count_fp:nn { value } { value } }
- \cs_set:Npe \WCtotalnum { \fp_eval:n { \WCtotalnum + \cs:w g__wheelchart_value_\WCcount _fp\cs_end: } }
+ \cs_set:Npe \WCtotalnum { \fp_eval:n { \WCtotalnum + \cs:w g__wheelchart_value_\WCcount _fp \cs_end: } }
}
\int_step_inline:nn { \WCtotalcount }
{
\cs_set:cpe { l__wheelchart_WCpercentage_##1 }
- { \fp_eval:n { \cs:w g__wheelchart_value_##1_fp\cs_end: / ( \WCtotalnum / 100 ) } }
+ { \fp_eval:n { \cs:w g__wheelchart_value_##1_fp \cs_end: / ( \WCtotalnum / 100 ) } }
\cs_set:cpe { l__wheelchart_WCpercentagerounded_##1 }
- { \fp_eval:n { round ( \cs:w l__wheelchart_WCpercentage_##1\cs_end: , \pgfkeysvalueof { / wheelchart / perc~precision } ) } }
+ { \fp_eval:n { round ( \cs:w l__wheelchart_WCpercentage_##1 \cs_end: , \pgfkeysvalueof { / wheelchart / perc~precision } ) } }
}
}
\cs_new_protected:Npn \__wheelchart_inner_and_wheel_data:n #1
{
- \__wheelchart_if_text:nn { #1~data }
+ \__wheelchart_if_text:nnn { #1~data } { o }
{
\__wheelchart_def_fp:nn { #1_data_angle_pos } { #1~data~angle~pos }
\__wheelchart_def_fp:nn { #1_data_angle_shift } { #1~data~angle~shift }
\__wheelchart_def_fp:nn { #1_data_pos } { #1~data~pos }
\__wheelchart_def_fp:nn { #1_data_sep } { #1~data~sep }
\node [ align = left , / wheelchart / #1_data_style ] at
- \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end:
+ \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end:
{ \WCcount }
- { \cs:w l__wheelchart_#1_data_angle_pos_fp\cs_end: }
- { \cs:w l__wheelchart_#1_data_angle_shift_fp\cs_end: }
- { \cs:w l__wheelchart_#1_data_pos_fp\cs_end: }
- { \cs:w l__wheelchart_#1_data_sep_fp\cs_end: }
+ { \cs:w l__wheelchart_#1_data_angle_pos_fp \cs_end: }
+ { \cs:w l__wheelchart_#1_data_angle_shift_fp \cs_end: }
+ { \cs:w l__wheelchart_#1_data_pos_fp \cs_end: }
+ { \cs:w l__wheelchart_#1_data_sep_fp \cs_end: }
{ \pgfkeysvalueof { / wheelchart / #1~data } } ;
}
}
@@ -1366,13 +1376,13 @@
\cs_new_protected:Npn \__wheelchart_legend_append:nn #1#2
{
- \tl_build_put_right:NV \WClegend \l__wheelchart_legend_row_tl%note the V specifier such that \WClegend can also be combined
- %with an S column of the package siunitx and such that \WClegend can be used in a tblr environment of the package tabularray
+ \tl_build_put_right:NV \WClegend \l__wheelchart_legend_row_tl%note the V specifier so that \WClegend can also be combined
+ %with an S column of the package siunitx and so that \WClegend can be used in a tblr environment of the package tabularray
%and then the option expand=\WClegend needs to be given to the tblr environment
\tl_build_put_right:Nn \WClegend { \protect \setcounter { g__wheelchart_WCcount_counter } }%note the \protect for in case that
%\WClegend would be parsed in a particular way
%note that the counter g__wheelchart_WCcount_counter is defined globally and at the end of the previous \l__wheelchart_legend_row_tl
- %such that this value is defined and has the right value at the start of the next \l__wheelchart_legend_row_tl
+ %so that this value is defined and has the right value at the start of the next \l__wheelchart_legend_row_tl
%if \WClegend is used in a tblr environment of the package tabularray then \UseTblrLibrary{counter} is required
\tl_build_put_right:Ne \WClegend { { \int_eval:n {#1} } }
\tl_build_put_right:Nn \WClegend {#2}
@@ -1414,8 +1424,8 @@
{
atand
(
- \cs:w g__wheelchart_#3_y_fp\cs_end: - \cs:w g__wheelchart_#4_y_fp\cs_end: ,
- \cs:w g__wheelchart_#3_x_fp\cs_end: - \cs:w g__wheelchart_#4_x_fp\cs_end:
+ \cs:w g__wheelchart_#3_y_fp \cs_end: - \cs:w g__wheelchart_#4_y_fp \cs_end: ,
+ \cs:w g__wheelchart_#3_x_fp \cs_end: - \cs:w g__wheelchart_#4_x_fp \cs_end:
)
}
\fp_set:Nn \l__wheelchart_slices_arc_coord_fp
@@ -1440,7 +1450,7 @@
)
:
atand ( ( \l__wheelchart_slices_arc_A_fp - ( 1 / \l__wheelchart_slices_arc_A_fp ) ) / 2 )
- }%note the min ( \l__wheelchart_slices_arc_B_fp , 0 ) such that the acosd is always defined
+ }%note the min ( \l__wheelchart_slices_arc_B_fp , 0 ) so that the acosd is always defined
}
}
]
@@ -1486,8 +1496,8 @@
* abs ( ( 1 / \l__wheelchart_slices_arc_A_fp ) + \l__wheelchart_slices_arc_A_fp )
* sqrt
(
- ( \cs:w g__wheelchart_#3_x_fp\cs_end: - \cs:w g__wheelchart_#4_x_fp\cs_end: ) ^ 2
- + ( \cs:w g__wheelchart_#3_y_fp\cs_end: - \cs:w g__wheelchart_#4_y_fp\cs_end: ) ^ 2
+ ( \cs:w g__wheelchart_#3_x_fp \cs_end: - \cs:w g__wheelchart_#4_x_fp \cs_end: ) ^ 2
+ + ( \cs:w g__wheelchart_#3_y_fp \cs_end: - \cs:w g__wheelchart_#4_y_fp \cs_end: ) ^ 2
)
}
}
@@ -1539,11 +1549,11 @@
\fp_eval:n
{
(
- \cs:w g__wheelchart_#3_x_fp\cs_end: + \cs:w g__wheelchart_#4_x_fp\cs_end: +
+ \cs:w g__wheelchart_#3_x_fp \cs_end: + \cs:w g__wheelchart_#4_x_fp \cs_end: +
(
\g__wheelchart_slices_orientation_fp * ( \l__wheelchart_slices_arrow_coord_fp - 1 )
* \l__wheelchart_slices_arrow_A_fp
- * ( \cs:w g__wheelchart_#3_y_fp\cs_end: - \cs:w g__wheelchart_#4_y_fp\cs_end: )
+ * ( \cs:w g__wheelchart_#3_y_fp \cs_end: - \cs:w g__wheelchart_#4_y_fp \cs_end: )
)
)
/ 2
@@ -1552,11 +1562,11 @@
\fp_eval:n
{
(
- \cs:w g__wheelchart_#3_y_fp\cs_end: + \cs:w g__wheelchart_#4_y_fp\cs_end: +
+ \cs:w g__wheelchart_#3_y_fp \cs_end: + \cs:w g__wheelchart_#4_y_fp \cs_end: +
(
\g__wheelchart_slices_orientation_fp * ( \l__wheelchart_slices_arrow_coord_fp - 1 )
* \l__wheelchart_slices_arrow_A_fp
- * ( \cs:w g__wheelchart_#4_x_fp\cs_end: - \cs:w g__wheelchart_#3_x_fp\cs_end: )
+ * ( \cs:w g__wheelchart_#4_x_fp \cs_end: - \cs:w g__wheelchart_#3_x_fp \cs_end: )
)
)
/ 2
@@ -1593,10 +1603,10 @@
{
\fp_eval:n
{
- ( 1 - (#1) / max ( round ( \cs:w g__wheelchart_value_\WCcount _fp\cs_end: ) , 1 ) )
- * \cs:w g__wheelchart_slice_#2_start_angle_\WCcount _fp\cs_end:
- + (#1) * \cs:w g__wheelchart_slice_#2_end_angle_\WCcount _fp\cs_end:
- / max ( round ( \cs:w g__wheelchart_value_\WCcount _fp\cs_end: ) , 1 )
+ ( 1 - (#1) / max ( round ( \cs:w g__wheelchart_value_\WCcount _fp \cs_end: ) , 1 ) )
+ * \cs:w g__wheelchart_slice_#2_start_angle_\WCcount _fp \cs_end:
+ + (#1) * \cs:w g__wheelchart_slice_#2_end_angle_\WCcount _fp \cs_end:
+ / max ( round ( \cs:w g__wheelchart_value_\WCcount _fp \cs_end: ) , 1 )
}
}
@@ -1617,17 +1627,19 @@
arc_style /. style = {} ,
arc~around~line /. initial = 1 ,
arc~around~text /. default = true ,%this key is not set up with /.is choice or \bool_set:Nn
- %such that for example \WCvarA can be used as value for this key
+ %so that for example \WCvarA can be used as value for this key
arc~around~text /. initial = false ,
arc~data /. initial = {} ,
arc~data~align /. code = { \tl_set:Nn \l__wheelchart_arc_data_align_tl {#1} } ,%this key is not set up with /.is choice
- %such that for example \WCvarA can be used as value for this key
+ %so that for example \WCvarA can be used as value for this key
arc~data~align = center ,
arc~data~angle~pos /. initial = 0.5 ,
arc~data~angle~shift /. initial = 0 ,
arc~data~dir /. initial = 1 ,
arc~data~expand /. initial = n ,
arc~data~line~sep~factor /. initial = 1 ,
+ arc~data~lines~pos /. initial = 0.5 ,
+ arc~data~lines~shift /. initial = 0 ,
arc~data~pos /. initial = 1 ,
arc~data~sep /. initial = 1 ex / 1 cm ,
arc~data~style /. style = { arc_data_style /. style = {#1} } ,
@@ -1640,7 +1652,7 @@
arc~sep /. initial = 1 ex / 1 cm ,
at /. initial = { ( 0 , 0 ) } ,
before~slices /. initial = {} ,
- bool_set_true /. code = { \bool_set_true:N #1 } ,
+ bool_set_true /. code = \bool_set_true:N #1 ,
caption /. initial = {} ,
caption~left /. initial = {} ,
caption~left~sep /. initial = 0.5 ,
@@ -1670,9 +1682,9 @@
data~style /. style = { data_style /. style = {#1} } ,
data_style /. style = {} ,
discrete /. is~choice ,
- discrete / false /. code = { \bool_set_false:N \l__wheelchart_discrete_bool } ,
+ discrete / false /. code = \bool_set_false:N \l__wheelchart_discrete_bool ,
discrete / false /. value~forbidden ,
- discrete / true /. code = { \bool_set_true:N \l__wheelchart_discrete_bool } ,
+ discrete / true /. code = \bool_set_true:N \l__wheelchart_discrete_bool ,
discrete / true /. value~forbidden ,
discrete /. default = true ,
discrete = false ,
@@ -1777,7 +1789,7 @@
legend /. initial = {} ,
legend~columns /. initial = 1 ,
legend~entry /. initial = {} ,
- legend~only /. code = { \bool_set:Nn \l__wheelchart_legend_only_bool { \cs:w c_#1_bool\cs_end: } } ,
+ legend~only /. code = \bool_set:Nn \l__wheelchart_legend_only_bool { \cs:w c_#1_bool \cs_end: } ,
legend~only /. default = true ,
legend~only = false ,
legend~row /. code =
@@ -1800,7 +1812,7 @@
} ,
lines~ext~dirsep /. initial = 0 ,
lines~ext~fixed /. default = true ,%this key is not set up with /.is choice or \bool_set:Nn
- %such that for example \WCvarA can be used as value for this key
+ %so that for example \WCvarA can be used as value for this key
lines~ext~fixed /. initial = false ,
lines~ext~fixed~left /. initial =
{
@@ -1808,7 +1820,7 @@
{
\l__wheelchart_lines_ext_dir_int *
(
- \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: + \l__wheelchart_lines_sep_fp
+ \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: + \l__wheelchart_lines_sep_fp
+ \l__wheelchart_lines_fp + \l__wheelchart_lines_ext_fp
)
}
@@ -1819,7 +1831,7 @@
{
\l__wheelchart_lines_ext_dir_int *
(
- \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: + \l__wheelchart_lines_sep_fp
+ \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: + \l__wheelchart_lines_sep_fp
+ \l__wheelchart_lines_fp + \l__wheelchart_lines_ext_fp
)
}
@@ -1870,7 +1882,7 @@
outer_plot_style /. style = {} ,
outer~radius /. initial = 3 ,
perc~precision /. initial = 0 ,
- pie /. code = { \bool_set:Nn \l__wheelchart_pie_bool { \cs:w c_#1_bool\cs_end: } } ,
+ pie /. code = \bool_set:Nn \l__wheelchart_pie_bool { \cs:w c_#1_bool \cs_end: } ,
pie /. default = true ,
pie = false ,
plot /. style =
@@ -2029,12 +2041,12 @@
} ,
slices~inner /. initial =
{
- \fp_compare:nNnT { \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: } > { 0 }
+ \fp_compare:nNnT { \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: } > { 0 }
{
\fp_compare:nNnT
- { \cs:w g__wheelchart_inner_gap_\WCcount _fp\cs_end: }
+ { \cs:w g__wheelchart_inner_gap_\WCcount _fp \cs_end: }
<
- { \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp\cs_end: }
+ { \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp \cs_end: }
{
arc
[
@@ -2212,7 +2224,7 @@
{}
}
} ,
- slices~start~arrow/.style~2~args =
+ slices~start~arrow /. style~2~args =
{
slices~start =
{
@@ -2241,13 +2253,13 @@
(#1) -
\fp_eval:n
{
- \l__wheelchart_counter_or_clockwise_fp * \cs:w g__wheelchart_value_1_fp\cs_end: * 0.5
+ \l__wheelchart_counter_or_clockwise_fp * \cs:w g__wheelchart_value_1_fp \cs_end: * 0.5
* ( \l__wheelchart_total_angle_fp / \WCtotalnum )
}
}
} ,
start~half /. default = 90 ,
- title /. initial= {} ,
+ title /. initial = {} ,
title~left /. initial = {} ,
title~left~sep /. initial = 0.5 ,
title~left~style /. style = { title~left_style /. style = {#1} } ,
@@ -2283,13 +2295,13 @@
{
\cs_set:cpn {#1}
{ \use:e { \clist_item:nn {#2} { \int_mod:nn { \WCcount - 1 } { \clist_count:n {#2} } + 1 } } }
- %note the \use:e such that \WClist<name> also works when given as an argument to pgfmath
+ %note the \use:e so that \WClist<name> also works when given as an argument to pgfmath
%if the list contains a macro, for example
%\begin{tikzpicture}
%\def\n{1}
%\wheelchart[
- % value=\WClistA,
- % WClistA={\n}
+ % value=\WClistA,
+ % WClistA=\n
%]{\exampleforthismanual}
%\end{tikzpicture}
%https://tex.stackexchange.com/questions/671298/clist-item-and-pgfmathsetmacro-causing-an-error
@@ -2331,18 +2343,18 @@
{
\tl_set:Ne \l__wheelchart_key_name_tl { \pgfkeyscurrentname }%it is necessary to define \l__wheelchart_key_name_tl
%because \pgfkeyscurrentname will be overwritten by / errors / unknown~key /. expanded
- \regex_match:nVTF { \{(.+)\} } \l__wheelchart_key_name_tl
+ \regex_match:NVTF \c__wheelchart_braces_regex \l__wheelchart_key_name_tl
{
\tl_set:Ne \l__wheelchart_key_range_tl { \pgfkeyscurrentname }
- \regex_replace_all:nnN { \{(.+)\} } {} \l__wheelchart_key_name_tl
- \regex_replace_all:nnN { [\w\s]+\{(.+)\} } { \1 } \l__wheelchart_key_range_tl
+ \regex_replace_all:NnN \c__wheelchart_braces_regex {} \l__wheelchart_key_name_tl
+ \regex_replace_all:NnN \c__wheelchart_key_braces_regex { \1 } \l__wheelchart_key_range_tl
\str_if_eq:eeTF { \l__wheelchart_key_range_tl } { list }
{
\pgfkeys { / wheelchart , WC_list = { l__wheelchart_list_\l__wheelchart_key_name_tl } {#1} }
\pgfkeys
{
/ wheelchart ,
- \l__wheelchart_key_name_tl /. expand~once = { \cs:w l__wheelchart_list_\l__wheelchart_key_name_tl\cs_end: }
+ \l__wheelchart_key_name_tl /. expand~once = { \cs:w l__wheelchart_list_\l__wheelchart_key_name_tl \cs_end: }
}
}
{
@@ -2393,12 +2405,12 @@
\NewDocumentCommand \wheelchart { O {} m }
{
- {%note the double braces {{...}} such that the contents is in a group and such that & can be used in pgfmath in a tabular
+ {%note the double braces {{...}} so that the contents is in a group and so that & can be used in pgfmath in a tabular
\pgfkeys { / wheelchart , #1 }
\IfPackageLoadedTF { siunitx }
{ \cs_set:Npn \WCperc { \qty { \WCpercentagerounded } { \percent } } }
{ \cs_set:Npn \WCperc { \WCpercentagerounded \, \% } }%the definition of \WCperc is placed inside the command \wheelchart
- %such that \WCperc is not defined outside this command
+ %so that \WCperc is not defined outside this command
\bool_if:NTF \l__wheelchart_legend_only_bool
{
\__wheelchart_initial:n {#2}
@@ -2430,7 +2442,7 @@
{
\g__wheelchart_angle_fp +
(
- \l__wheelchart_counter_or_clockwise_fp * \cs:w g__wheelchart_value_\WCcount _fp\cs_end:
+ \l__wheelchart_counter_or_clockwise_fp * \cs:w g__wheelchart_value_\WCcount _fp \cs_end:
* ( \l__wheelchart_total_angle_fp / \WCtotalnum )
)
}
@@ -2455,7 +2467,7 @@
\fp_gset:cn { g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp }
{ abs ( \g__wheelchart_angle_fp - \g__wheelchart_new_angle_fp ) / 2 }
\fp_set:Nn \l__wheelchart_abs_half_angle_minus_new_angle_minus_gap_polar_fp
- { \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp\cs_end: - \l__wheelchart_gap_polar_fp }
+ { \cs:w g__wheelchart_abs_half_angle_minus_new_angle_\WCcount _fp \cs_end: - \l__wheelchart_gap_polar_fp }
\fp_gzero_new:c { g__wheelchart_outer_gap_\WCcount _fp }
\fp_gzero_new:c { g__wheelchart_inner_gap_\WCcount _fp }
\bool_if:NTF \l__wheelchart_plot_bool
@@ -2466,7 +2478,7 @@
{
\fp_set:Nn \l__wheelchart_gap_max_angle_def_fp
{
- \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: > 0
+ \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: > 0
?
90
:
@@ -2490,8 +2502,8 @@
)
)
}
- \__wheelchart_def_gap:nn { outer } { \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end: }
- \__wheelchart_def_gap:nn { inner } { \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end: }
+ \__wheelchart_def_gap:nn { outer } { \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end: }
+ \__wheelchart_def_gap:nn { inner } { \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end: }
\fp_compare:nNnT { \l__wheelchart_abs_half_angle_minus_new_angle_minus_gap_polar_fp } > { 0.01 }
{
\fp_gset:cn { g__wheelchart_inner_radius_\WCcount _fp }
@@ -2508,7 +2520,7 @@
)
)
,
- \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end:
+ \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end:
)
}
}
@@ -2523,14 +2535,14 @@
\__wheelchart_gdef_count_fp:nn { data_pos } { data~pos }
\__wheelchart_gdef_count_fp:nn { data_sep } { data~sep }
\__wheelchart_def_angle:nnnn
- { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp\cs_end: }
- { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp\cs_end: }
- { \cs:w g__wheelchart_data_pos_\WCcount _fp\cs_end: }
- { \cs:w g__wheelchart_data_sep_\WCcount _fp\cs_end: }
+ { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp \cs_end: }
+ { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp \cs_end: }
+ { \cs:w g__wheelchart_data_pos_\WCcount _fp \cs_end: }
+ { \cs:w g__wheelchart_data_sep_\WCcount _fp \cs_end: }
\cs_set:Npe \WCdataangle { \pgfmathresult }
\__wheelchart_gdef_count_fp:nn { explode } { explode }
\pgfkeysvalueof { / wheelchart / for~loop~start }%this must be placed after the definition of macros such as
- %\WCpercentage such that these macros can be used in the key for loop start
+ %\WCpercentage so that these macros can be used in the key for loop start
\int_compare:nNnT { \WCcount } = { 1 }
{
\begin { scope }
@@ -2601,7 +2613,7 @@
[
shift /. expanded =
{
- \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end:
+ \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end:
{ \WCcount }
{ \l__wheelchart_slices_angle_pos_fp }
{ \l__wheelchart_slices_angle_shift_fp }
@@ -2639,9 +2651,9 @@
\__wheelchart_for_loop:n
{
\bool_if:NT \l__wheelchart_wheel_lines_bool
- %this is placed inside \__wheelchart_for_loop:n such that wheel lines can be applied for specific slices
+ %this is placed inside \__wheelchart_for_loop:n so that wheel lines can be applied for specific slices
{
- \int_step_inline:nnn { 0 } { \fp_eval:n { round ( \cs:w g__wheelchart_value_\WCcount _fp\cs_end: ) } }
+ \int_step_inline:nnn { 0 } { \fp_eval:n { round ( \cs:w g__wheelchart_value_\WCcount _fp \cs_end: ) } }
%note the \fp_eval:n { round ( ... ) } to avoid the messages Missing character: There is no ... in font nullfont!
{
\bool_if:NTF \l__wheelchart_plot_bool
@@ -2783,14 +2795,14 @@
\fp_compare:nF { \l__wheelchart_lines_fp == 0 && \l__wheelchart_lines_ext_fp == 0 }
{
\draw [ / wheelchart / lines_style ] let \p { l__wheelchart_lines_1 } =
- \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end:
+ \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end:
{ \WCcount }
- { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp\cs_end: }
- { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp\cs_end: }
- { \cs:w g__wheelchart_data_pos_\WCcount _fp\cs_end: }
+ { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp \cs_end: }
+ { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp \cs_end: }
+ { \cs:w g__wheelchart_data_pos_\WCcount _fp \cs_end: }
{ \l__wheelchart_lines_sep_fp + \l__wheelchart_lines_fp }
in
- \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end:
+ \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end:
{ \WCcount }
{ \l__wheelchart_lines_angle_pos_fp }
{ \l__wheelchart_lines_angle_shift_fp }
@@ -2838,7 +2850,7 @@
{
\fp_eval:n
{
- \l__wheelchart_lines_ext_dir_int * \cs:w g__wheelchart_data_sep_\WCcount _fp\cs_end:
+ \l__wheelchart_lines_ext_dir_int * \cs:w g__wheelchart_data_sep_\WCcount _fp \cs_end:
}
} ,
0
@@ -2849,7 +2861,7 @@
}
;
}
- \__wheelchart_if_text:nn { data }
+ \__wheelchart_if_text:nnn { data } { o }
{
\fp_compare:nNnTF { \l__wheelchart_lines_ext_fp } = { 0 }
{
@@ -2876,13 +2888,13 @@
\coordinate
[
at =
- \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn\cs_end:
+ \cs:w __wheelchart_point_plot_\bool_to_str:N \l__wheelchart_plot_bool :nnnnn \cs_end:
{ \WCcount }
- { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp\cs_end: }
- { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp\cs_end: }
- { \cs:w g__wheelchart_data_pos_\WCcount _fp\cs_end: }
+ { \cs:w g__wheelchart_data_angle_pos_\WCcount _fp \cs_end: }
+ { \cs:w g__wheelchart_data_angle_shift_\WCcount _fp \cs_end: }
+ { \cs:w g__wheelchart_data_pos_\WCcount _fp \cs_end: }
{
- \cs:w g__wheelchart_data_sep_\WCcount _fp\cs_end: +
+ \cs:w g__wheelchart_data_sep_\WCcount _fp \cs_end: +
(
\l__wheelchart_lines_fp == 0
?
@@ -2902,7 +2914,7 @@
\node [ anchor = \l__wheelchart_data_anchor_tl , align = left , / wheelchart / data_style ]
at ( g__wheelchart_data_coordinate )
{ \pgfkeysvalueof { / wheelchart / data } } ;%a separate \node and not at the end of the \draw with lines_style
- %such that the key lines style is not passed to this \node
+ %so that the key lines style is not passed to this \node
}
\__wheelchart_def_fp:nn { arc_around_line } { arc~around~line }
\__wheelchart_def_fp:nn { arc_data_angle_pos } { arc~data~angle~pos }
@@ -2913,14 +2925,16 @@
\fp_gset:Nn \g__wheelchart_half_ex_over_one_cm_fp { 0.5 ex / 1 cm }%
\endpgfinterruptpicture%
\fp_gset:Nn \g__wheelchart_arc_data_aux_ii_fp { 0 }
- \__wheelchart_if_text:nn { arc~data }
+ \__wheelchart_if_text:nnn { arc~data } {}
{
- \cs_set:Npn \WCperc { \WCpercentagerounded { \, } { \% } }%such that \WCperc follows the arc if used in arc data
+ \cs_set:Npn \WCperc { \WCpercentagerounded { \, } { \% } }%so that \WCperc follows the arc if used in arc data
%this redefinition of \WCperc is local to the group of arc data
\__wheelchart_def_fp:nn { arc_data_pos } { arc~data~pos }
\__wheelchart_def_fp:nn { arc_data_sep } { arc~data~sep }
\__wheelchart_def_fp:nn { arc_data_line_sep_factor } { arc~data~line~sep~factor }
- \cs:w seq_set_split:Nn\pgfkeysvalueof { / wheelchart / arc~data~expand }\cs_end:
+ \__wheelchart_def_fp:nn { arc_data_lines_pos } { arc~data~lines~pos }
+ \__wheelchart_def_fp:nn { arc_data_lines_shift } { arc~data~lines~shift }
+ \cs:w seq_set_split:Nn\pgfkeysvalueof { / wheelchart / arc~data~expand } \cs_end:
\l__wheelchart_arc_data_seq
{ \\ }
{ \pgfkeysvalueof { / wheelchart / arc~data } }
@@ -2928,13 +2942,17 @@
{
\fp_set:Nn \l__wheelchart_arc_data_text_pos_fp
{
- \l__wheelchart_arc_data_pos_fp + 2 * \g__wheelchart_slices_orientation_fp
- * ( 2 * ####1 - \seq_count:N \l__wheelchart_arc_data_seq - 1 ) * sign ( \l__wheelchart_arc_data_dir_fp )
+ \l__wheelchart_arc_data_pos_fp + 4 * \g__wheelchart_slices_orientation_fp *
+ (
+ ####1 - 1 - \l__wheelchart_arc_data_lines_pos_fp * ( \seq_count:N \l__wheelchart_arc_data_seq - 1 )
+ + \l__wheelchart_arc_data_lines_shift_fp
+ )
+ * sign ( \l__wheelchart_arc_data_dir_fp )
* \l__wheelchart_arc_data_line_sep_factor_fp * \g__wheelchart_half_ex_over_one_cm_fp
/
(
- \cs:w g__wheelchart_outer_radius_\WCcount _fp\cs_end:
- - \cs:w g__wheelchart_inner_radius_\WCcount _fp\cs_end:
+ \cs:w g__wheelchart_outer_radius_\WCcount _fp \cs_end:
+ - \cs:w g__wheelchart_inner_radius_\WCcount _fp \cs_end:
+ 2 * \l__wheelchart_arc_data_sep_fp
)
}%the sign is needed because \l__wheelchart_arc_data_dir_fp is not necessarily 1 or -1
@@ -2957,9 +2975,9 @@
/ wheelchart / arc_data_style
}
}%get the length of the path
- %note the option overlay such that this does not increase the bounding box
+ %note the option overlay so that this does not increase the bounding box
%note the {} at the start of text and the braces around \fp_gset:Nn ...
- %such that the compilation does not stall
+ %so that the compilation does not stall
{ 0 }
{ 1 }
{ \l__wheelchart_plot_variable_tl }
@@ -3033,7 +3051,7 @@
{ \l__wheelchart_arc_data_text_pos_fp }
{ \l__wheelchart_arc_data_sep_fp + \g__wheelchart_half_ex_over_one_cm_fp }
+ \l__wheelchart_counter_or_clockwise_fp * \l__wheelchart_arc_data_dir_fp
- * \cs:w c__wheelchart_arc_data_start_factor_\l__wheelchart_arc_data_align_tl _fp\cs_end:
+ * \cs:w c__wheelchart_arc_data_start_factor_\l__wheelchart_arc_data_align_tl _fp \cs_end:
* \l__wheelchart_arc_data_total_angle_plot_false_fp
}
\path
@@ -3188,7 +3206,7 @@
}
\bool_if:NT \l__wheelchart_legend_row_bool
{ \__wheelchart_def_WClegend: }
- \__wheelchart_if_text:nn { middle }
+ \__wheelchart_if_text:nnn { middle } { o }
{ \node [ align = center , / wheelchart / middle_style ] at ( 0 , 0 ) { \pgfkeysvalueof { / wheelchart / middle } } ; }
\pgfkeysvalueof { / wheelchart / legend }
\end { scope }
@@ -3203,4 +3221,6 @@
\end { scope }
}
}
- } \ No newline at end of file
+ }
+
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/wordle/wordle.sty b/Master/texmf-dist/tex/latex/wordle/wordle.sty
index 4df1801ba02..a463f22837e 100644
--- a/Master/texmf-dist/tex/latex/wordle/wordle.sty
+++ b/Master/texmf-dist/tex/latex/wordle/wordle.sty
@@ -1,298 +1,670 @@
-% Author.........: C. Pierquet
-% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
-% Inspiration....: https://tex.stackexchange.com/questions/659860/wordle-like-colored-letter-boxes-in-latex
+% ---------------------------------------------------------------
+% wordle --- A latex package for typesetting wordle puzzles
+%
+% E-mail: andrew.mathas@gmail.com and cpierquet@outlook.fr
+% Released under the LaTeX Project Public License v1.3c or later
+% See http://www.latex-project.org/lppl.txt
+% ----------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{wordle}[2023/09/03 v0.1.1 Wordle grid]
-% 0.1.1 Coorection d'un bug sur la version anglaise
-% 0.1.0 Version initiale + quelques modèles
-%------Packages utiles
+% Package version
+\def\wordle@version{0.3.0}
+\def\wordle@release{2024-08-18}
+
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+\DeclareRelease{\wordle@version}{\wordle@release}{wordle.sty}
+\DeclareCurrentRelease{}{\wordle@release}
+
+\ProvidesExplPackage{wordle} {\wordle@release} {\wordle@version}
+ {A latex package for typesetting wordle puzzles}
+
+% ----------------------------------------------------------------
+% Required packages
+%\RequirePackage{xcolor}
\RequirePackage{tikz}
-\RequirePackage{simplekv}
-\RequirePackage{xstring}
-%commandes utiles
-\usepackage{expl3}
-\ExplSyntaxOn
+% ----------------------------------------------------------------
+% predefined tile colours
+
+% from https://www.nytimes.com/games/wordle
+\definecolor{WordleAbsent} {HTML} {797D7F}
+\definecolor{WordlePresent} {HTML} {F7DA21}
+\definecolor{WordleCorrect} {HTML} {6AAB64}
+\definecolor{WordleEmpty} {HTML} {F5F5DC}
+
+\definecolor{WordleHardPresent} {HTML} {95BEFA}
+\definecolor{WordleHardCorrect} {HTML} {FB9B00}
+
+% from https://sutom.nocle.fr/#
+\definecolor{WordleSutomAbsent} {HTML} {0077B7}
+\definecolor{WordleSutomPresent} {HTML} {FFBB00}
+\definecolor{WordleSutomCorrect} {HTML} {EB2152}
+
+% ----------------------------------------------------------------
+% package variables
+
+\bool_new:N \l__wordle_case_sensitive_bool % case sensitive mode (false by default)
+\bool_new:N \l__wordle_strict_bool % strict mode (false by default)
+
+\dim_new:N \l__wordle_grid_dim
+\dim_new:N \l__wordle_rounded_dim
+\dim_new:N \l__wordle_sep_dim
+\dim_new:N \l__wordle_size_dim
+\dim_new:N \l__wordle_thickness_dim
+
+\int_new:N \l__wordle_rows_int
-%boite en [fr]
-\cs_new:Npn \l__sutom_boite_lettre:nn #1#2#3
+\fp_new:N \l__wordle_scale_fp
+
+\tl_new:N \l__wordle_align_tl
+\tl_new:N \l__wordle_depth_tl
+\tl_new:N \l__wordle_font_tl
+\tl_new:N \l__wordle_name_tl
+\tl_new:N \l__wordle_style_tl
+\tl_new:N \l__wordle_tikz_tl
+\tl_new:N \l__wordle_tile_style_tl
+
+\tl_new:N \l__wordle_present_border_tl
+\tl_new:N \l__wordle_present_colour_tl
+\tl_new:N \l__wordle_present_frame_tl
+\tl_new:N \l__wordle_present_shape_tl
+\tl_new:N \l__wordle_present_text_tl
+
+\tl_new:N \l__wordle_correct_border_tl
+\tl_new:N \l__wordle_correct_colour_tl
+\tl_new:N \l__wordle_correct_frame_tl
+\tl_new:N \l__wordle_correct_shape_tl
+\tl_new:N \l__wordle_correct_text_tl
+
+\tl_new:N \l__wordle_empty_border_tl
+\tl_new:N \l__wordle_empty_colour_tl
+\tl_new:N \l__wordle_empty_frame_tl
+\tl_new:N \l__wordle_empty_shape_tl
+\tl_new:N \l__wordle_empty_text_tl
+
+\tl_new:N \l__wordle_absent_border_tl
+\tl_new:N \l__wordle_absent_colour_tl
+\tl_new:N \l__wordle_absent_frame_tl
+\tl_new:N \l__wordle_absent_shape_tl
+\tl_new:N \l__wordle_absent_text_tl
+
+
+% ----------------------------------------------------------------
+% Assign up to four style attributes from comma separated list to absent,
+% present, correct, empty, respectively. If there is only one entry in
+% the list then everything is set equal to that entry
+\cs_new_nopar:Npn \__wordle_set_style:nn #1#2
{
- \ifboolKV[SUTOM]{Lettres}%
- {%
- \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#2} ;
- }%
- {%
- \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
- }%
+ \seq_set_split:Nnn \l_tmpa_seq {,} {#2}
+ \int_compare:nNnTF {\seq_count:N \l_tmpa_seq} = {1}
+ {
+ \tl_set:co {l__wordle_absent_#1_tl} {#2}
+ \tl_set:co {l__wordle_present_#1_tl} {#2}
+ \tl_set:co {l__wordle_correct_#1_tl} {#2}
+ \tl_set:co {l__wordle_empty_#1_tl} {#2}
+ }
+ {
+ \seq_pop_left:NNT \l_tmpa_seq \l_tmpa_tl { \tl_set:co {l__wordle_absent_#1_tl} {\l_tmpa_tl} }
+ \seq_pop_left:NNT \l_tmpa_seq \l_tmpa_tl { \tl_set:co {l__wordle_present_#1_tl} {\l_tmpa_tl} }
+ \seq_pop_left:NNT \l_tmpa_seq \l_tmpa_tl { \tl_set:co {l__wordle_correct_#1_tl} {\l_tmpa_tl} }
+ \seq_pop_left:NNT \l_tmpa_seq \l_tmpa_tl { \tl_set:co {l__wordle_empty_#1_tl} {\l_tmpa_tl} }
+ }
}
-\cs_new:Npn \l__sutom_boite_lettre_rond:nn #1#2#3#4
+% apply the wordle styles
+\cs_new_nopar:Npn \__wordle_apply_style:n #1 {
+ \str_case:enF { #1 }
+ {
+ {hard}
+ {
+ \__wordle_set_style:nn {border} {white}
+ \__wordle_set_style:nn {colour} {WordleAbsent,WordleHardPresent,WordleHardCorrect,WordleEmpty}
+ \__wordle_set_style:nn {frame} {false}
+ \__wordle_set_style:nn {shape} {rectangle}
+ \__wordle_set_style:nn {text} {white,white,white,black}
+ }
+
+ {alt}
+ { % alt appears in the English version of Cedric's manual for sutom
+ \__wordle_set_style:nn {border} {white}
+ \__wordle_set_style:nn {colour} {WordleSutomAbsent,WordleSutomPresent,WordleSutomCorrect,WordleEmpty}
+ \__wordle_set_style:nn {frame} {false,true,false,false}
+ \__wordle_set_style:nn {shape} {rectangle,circle,rectangle,circle}
+ \__wordle_set_style:nn {text} {white,white,white,black}
+ \tl_set:Nn \l_wordle_font_tl {\LARGE\bfseries\sffamily}
+
+ }
+
+ {sutom}
+ {
+ \__wordle_set_style:nn {border} {white}
+ \__wordle_set_style:nn {colour} {WordleSutomAbsent,WordleSutomPresent,WordleSutomCorrect,WordleEmpty}
+ \__wordle_set_style:nn {frame} {false,true,false,false}
+ \__wordle_set_style:nn {shape} {rectangle,circle,rectangle,circle}
+ \__wordle_set_style:nn {text} {white,white,white,black}
+ \tl_set:Nn \l_wordle_font_tl {\LARGE\bfseries\sffamily}
+ }
+ }
+ {
+ % default style
+ \__wordle_set_style:nn {border} {white}
+ \__wordle_set_style:nn {colour} {WordleAbsent,WordlePresent,WordleCorrect,WordleEmpty}
+ \__wordle_set_style:nn {frame} {false}
+ \__wordle_set_style:nn {shape} {rectangle}
+ \__wordle_set_style:nn {text} {white,white,white,black}
+ }
+}
+
+% rescale dimensions
+\cs_new_nopar:Npn \__wordle_rescale:n #1
{
- \IfStrEq{\SutomStyle}{rond}
- {%
- \tikz {\draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
- \ifboolKV[SUTOM]{Lettres}%
- {%
- \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}] node[font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ;
- }%
- {%
- \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}];
- }%
- }%
- }%
- {%
- \ifboolKV[SUTOM]{Lettres}%
- {%
- \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=0\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ;
- }%
- {%
- \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
- }%
- }%
+ \fp_set:Nn \l__wordle_scale_fp {#1}
+ \dim_set:Nn \l__wordle_rounded_dim { \fp_eval:n {#1*\dim_to_decimal_in_mm:n {\l__wordle_rounded_dim }}mm }
+ \dim_set:Nn \l__wordle_sep_dim { \fp_eval:n {#1*\dim_to_decimal_in_mm:n {\l__wordle_sep_dim }}mm }
+ \dim_set:Nn \l__wordle_size_dim { \fp_eval:n {#1*\dim_to_decimal_in_mm:n {\l__wordle_size_dim }}mm }
+ \dim_set:Nn \l__wordle_thickness_dim { \fp_eval:n {#1*\dim_to_decimal_in_mm:n {\l__wordle_thickness_dim}}mm }
}
-%boite en [en]
-\cs_new:Npn \l__wordle_boite_lettre:nn #1#2#3
+
+% ----------------------------------------------------------------
+% just in case we're running an old version of latex
+\providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
+
+\IfFormatAtLeastTF { 2022-06-01 }
+ { \ProcessKeyOptions [ wordle ] }
+ {
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { wordle }
+ }
+
+% ----------------------------------------------------------------
+% Define keys for the package options and their defaults
+
+\keys_define:nn { wordle }
{
- \ifboolKV[WORDLE]{Letters}%
- {%
- \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#2} ;
- }%
- {%
- \tikz \draw[rounded~corners=\fpeval{#3*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
- }%
+ % apply puzzle styles: sets colours of absent, present, correct and empty tiles
+ style .code:n = {
+ \seq_set_from_clist:Nn \l_tmpa_seq {#1}
+ \seq_map_inline:Nn \l_tmpa_seq { \__wordle_apply_style:n { \str_lowercase:n{##1}} }
+ },
+ Style .meta:n = { style = #1 },
+ style .initial:n = standard,
+
+ % specifying tile colours and shapes
+ borders .code:n = { \__wordle_set_style:nn {border} {#1} },
+ BorderColor .code:n = { \__wordle_set_style:nn {border} {#1} },
+ CouleurBordures.code:n = { \__wordle_set_style:nn {border} {#1} },
+
+ Couleurs .code:n = { \__wordle_set_style:nn {colour} {#1} },
+ colours .code:n = { \__wordle_set_style:nn {colour} {#1} },
+
+ frames .code:n = { \__wordle_set_style:nn {frame} {#1} },
+ Cadres .code:n = { \__wordle_set_style:nn {frame} {#1} },
+ frames .default:n = true,
+ shapes .code:n = { \__wordle_set_style:nn {shape} {#1} },
+ Formes .code:n = { \__wordle_set_style:nn {shape} {#1} },
+
+ % text colour
+ text .code:n = { \__wordle_set_style:nn {text} {#1} },
+ CouleurLettres .code:n = { \__wordle_set_style:nn {text} {#1} },
+
+ % align letters in puzzle
+ align .code:n = {
+ \tl_set:Nn \l__wordle_align_tl {\vphantom{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}
+ \tl_set:Nn \l__wordle_depth_tl {text~depth=0pt}
+ },
+ noalign .code:n = {
+ \tl_set:Nn \l__wordle_align_tl {}
+ \tl_set:Nn \l__wordle_depth_tl {}
+ },
+ nonalign .meta:n = { noalign },
+ align .initial:n = {true},
+
+ absent .tl_set:N = \l__wordle_absent_colour_tl,
+ absent~color .tl_set:N = \l__wordle_absent_colour_tl,
+ couleur~absent .tl_set:N = \l__wordle_absent_colour_tl,
+ absent~colour .tl_set:N = \l__wordle_absent_colour_tl,
+ bordure~absent .tl_set:N = \l__wordle_absent_border_tl,
+ absent~border .tl_set:N = \l__wordle_absent_border_tl,
+ absent~frame .tl_set:N = \l__wordle_absent_frame_tl,
+ cadre~absent .tl_set:N = \l__wordle_absent_frame_tl,
+ absent~frame .default:n = true,
+ absent~shape .tl_set:N = \l__wordle_absent_shape_tl,
+ forme~absent .tl_set:N = \l__wordle_absent_shape_tl,
+ absent~text .tl_set:N = \l__wordle_absent_text_tl,
+ coultxt~absent .tl_set:N = \l__wordle_absent_text_tl,
+
+ correct .tl_set:N = \l__wordle_correct_colour_tl,
+ correct~color .tl_set:N = \l__wordle_correct_colour_tl,
+ correct~colour .tl_set:N = \l__wordle_correct_colour_tl,
+ couleur~correct.tl_set:N = \l__wordle_correct_colour_tl,
+ correct~border .tl_set:N = \l__wordle_correct_border_tl,
+ bordure~correct.tl_set:N = \l__wordle_correct_border_tl,
+ correct~frame .tl_set:N = \l__wordle_correct_frame_tl,
+ cadre~correct .tl_set:N = \l__wordle_correct_frame_tl,
+ correct~frame .default:n = true,
+ correct~shape .tl_set:N = \l__wordle_correct_shape_tl,
+ forme~correct .tl_set:N = \l__wordle_correct_shape_tl,
+ correct~text .tl_set:N = \l__wordle_correct_text_tl,
+ coultxt~correct.tl_set:N = \l__wordle_correct_text_tl,
+
+ empty .tl_set:N = \l__wordle_empty_colour_tl,
+ couleur~vide .tl_set:N = \l__wordle_empty_colour_tl,
+ empty~color .tl_set:N = \l__wordle_empty_colour_tl,
+ empty~colour .tl_set:N = \l__wordle_empty_colour_tl,
+ empty~border .tl_set:N = \l__wordle_empty_border_tl,
+ bordure~vide .tl_set:N = \l__wordle_empty_border_tl,
+ empty~frame .tl_set:N = \l__wordle_empty_frame_tl,
+ cadre~vide .tl_set:N = \l__wordle_empty_frame_tl,
+ empty~frame .default:n = true,
+ empty~shape .tl_set:N = \l__wordle_empty_shape_tl,
+ forme~vide .tl_set:N = \l__wordle_empty_shape_tl,
+ empty~text .tl_set:N = \l__wordle_empty_text_tl,
+ coultxt~vide. tl_set:N = \l__wordle_empty_text_tl,
+
+ present .tl_set:N = \l__wordle_present_colour_tl,
+ couleur~present.tl_set:N = \l__wordle_present_colour_tl,
+ present~color .tl_set:N = \l__wordle_present_colour_tl,
+ present~colour .tl_set:N = \l__wordle_present_colour_tl,
+ present~border .tl_set:N = \l__wordle_present_border_tl,
+ bordure~present.tl_set:N = \l__wordle_present_border_tl,
+ present~frame .tl_set:N = \l__wordle_present_frame_tl,
+ cadre~present .tl_set:N = \l__wordle_present_frame_tl,
+ present~frame .default:n = true,
+ present~shape .tl_set:N = \l__wordle_present_shape_tl,
+ forme~present .tl_set:N = \l__wordle_present_shape_tl,
+ present~text .tl_set:N = \l__wordle_present_text_tl,
+ coultxt~present.tl_set:N = \l__wordle_present_text_tl,
+
+ % text font
+ font .tl_set:N = \l__wordle_font_tl,
+ Fonte .tl_set:N = \l__wordle_font_tl,
+ Police .tl_set:N = \l__wordle_font_tl,
+ font .initial:n = \Large\bfseries\sffamily,
+
+ % tile size
+ size .dim_set:N = \l__wordle_size_dim,
+ Taille .dim_set:N = \l__wordle_size_dim,
+ size .initial:n = 8mm,
+
+ % thickness of tile border
+ thickness .dim_set:N = \l__wordle_thickness_dim,
+ Epaisseur .dim_set:N = \l__wordle_thickness_dim,
+ Thick .code:n = {\dim_set:Nn \l__wordle_thickness_dim {#1mm}},
+ thickness .initial:n = 0.25mm,
+
+ % rounded-corner = #
+ rounded .dim_set:N = \l__wordle_rounded_dim,
+ Arrondi .dim_set:N = \l__wordle_rounded_dim,
+ rounded .default:n = 4pt,
+ Rounded .code:n = {\dim_set:Nn \l__wordle_rounded_dim {#1mm}},
+ rounded .initial:n = 1mm,
+
+ % separation between tiles
+ separation .dim_set:N = \l__wordle_sep_dim,
+ Separation .dim_set:N = \l__wordle_sep_dim,
+ separation .initial:n = 0.5mm,
+
+ % rescale tiles
+ scale .code:n = { \__wordle_rescale:n {#1} },
+ Echelle .code:n = { \__wordle_rescale:n {#1} },
+ scale .initial:n = 1,
+ Unit .code:n = { \__wordle_rescale:n {#1} },
+ Unite .code:n = { \__wordle_rescale:n {#1} },
+
+ % letter case
+ case~sensitive .bool_set:N = \l__wordle_case_sensitive_bool,
+ case~sensitive .default:n = true,
+ case~sensitive .initial:n = false,
+
+ % letter visibility
+ letters .code:n = {\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_natural:n},
+ Lettres .code:n = {\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_natural:n},
+ noletters .code:n = {\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_none:n},
+ NonLettres .code:n = {\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_none:n},
+ letters .initial:n = true,
+
+ % forced letter case
+ natural~case .code:n = {
+ \cs_set_eq:NN \__wordle_letter:n \__wordle_letter_natural:n
+ },
+ lower~case .code:n = {
+ \cs_set_eq:NN \__wordle_letter:n \__wordle_letter_lower:n
+ \bool_set_false:N \l__wordle_case_sensitive_bool
+ },
+ upper~case .code:n = {
+ \cs_set_eq:NN \__wordle_letter:n \__wordle_letter_upper:n
+ \bool_set_false:N \l__wordle_case_sensitive_bool
+ },
+
+ % puzzle specs: rows and columns
+ rows .int_set:N = \l__wordle_rows_int,
+ Lignes .int_set:N = \l__wordle_rows_int,
+ rows .initial:n = 0,
+
+ strict .bool_set:N = \l__wordle_strict_bool,
+ Strict .bool_set:N = \l__wordle_strict_bool,
+ strict .default:n = true,
+ strict .initial:n = false,
+
+ % tikz settings
+ tile~style .tl_set:N = \l__wordle_tile_style_tl,
+ Style~case .tl_set:N = \l__wordle_tile_style_tl,
+ tile~style .initial:n = ,
+
+ name .tl_set:N = \l__wordle_name_tl,
+ Nom .tl_set:N = \l__wordle_name_tl,
+ name .initial:n = W,
+ tikz .tl_set:N = \l__wordle_tikz_tl,
+ tikz .initial:n = ,
+}
+
+% user settings
+\NewDocumentCommand\WordleSetup{ m }{ \keys_set:nn { wordle } {#1} }
+\NewDocumentCommand\ParamsSutom{ m }{ \keys_set:nn { wordle } {#1} }
+
+% ----------------------------------------------------------------
+% Define TikZ Wordle styles for the letters. Using tikz styles both
+% ensures consistency and has the added advantage of taking care of
+% expansion issues with the tile settings
+\tikzset{/Wordle/.is~family, /Wordle,
+ tile/.style = {
+ /tikz, % change back to using tikz keys
+ inner~sep = \l__wordle_sep_dim,
+ minimum~height = \l__wordle_size_dim,
+ minimum~size = \l__wordle_size_dim,
+ rounded~corners= \l__wordle_rounded_dim,
+ line~width = \l__wordle_thickness_dim,
+ font = \l__wordle_font_tl,
+ % scale = \fp_to_decimal:N \l__wordle_scale_fp,
+ text = \tl_use:c {l__wordle_#1_text_tl},
+ fill = \tl_use:c {l__wordle_#1_colour_tl},
+ shape = \tl_use:c {l__wordle_#1_shape_tl},
+ },
+ frame/.style = {
+ /Wordle/tile=#1,
+ /tikz, % change back to using tikz keys
+ draw = \tl_use:c{l__wordle_#1_border_tl},
+ minimum~size = {\l__wordle_size_dim+\l__wordle_thickness_dim},
+ fill = \tl_use:c {l__wordle_#1_colour_tl},
+ shape = rectangle,
+ },
}
-\cs_new:Npn \l__wordle_boite_lettre_rond:nn #1#2#3#4
+% apply a TikZ setting
+\cs_new_nopar:Npn \__wordle_tikzset:n #1 { \exp_args:Nx \tikzset{#1} }
+
+% ----------------------------------------------------------------
+% preprocessing of the wordle letters
+\cs_new_nopar:Npn \__wordle_letter_none:n #1 {}
+\cs_new_nopar:Npn \__wordle_letter_natural:n #1 {#1}
+\cs_new_nopar:Npn \__wordle_letter_lower:n #1 { \str_lowercase:n {#1} }
+\cs_new_nopar:Npn \__wordle_letter_upper:n #1 { \str_uppercase:n {#1} }
+
+% by default wordle letters are not processed
+\cs_set_eq:NN \__wordle_letter:n \__wordle_letter_natural:n
+
+% Print a letter in a box as a node. There is slightly different behaviour
+% depending on whether the tile is frames or we are in strict mode. The way
+% that the entry is printed depends is controlled by \__wordle_letter:n.
+\cs_new_nopar:Npn \wordle__boxed_letter:nn #1#2
{
- \IfStrEq{\SutomStyle}{default}
- {%
- \ifboolKV[WORDLE]{Letters}%
- {%
- \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) node[midway,font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ;
- }%
- {%
- \tikz \draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,line~width=\SutomWidth~mm,draw=\SutomBorder,fill=#2] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
- }%
- }%
- {%
- \tikz {\draw[rounded~corners=\fpeval{#4*\SutomUnit}cm,draw=\SutomBorder,line~width=\SutomWidth~mm,fill=#1] (0,0) rectangle++ (\SutomUnit,\SutomUnit) ;
- \ifboolKV[WORDLE]{Letters}%
- {%
- \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}] node[font=\SutomFonte,text=\SutomFonteColor,scale=\SutomUnit] {#3} ;
- }%
- {%
- \draw[line~width=\SutomWidth~mm,draw=#2,fill=#2] ({0.5*\SutomUnit},{0.5*\SutomUnit}) circle[radius=\fpeval{0.5*\SutomUnit-0.1*\SutomWidth}];
- }%
- }%
- }%
+ % determine the node name, which takes the form <W>-<row>-<col>
+ \tl_set:No \l_tmpa_tl
+ {
+ \l__wordle_name_tl-\int_eval:n{1+\l__wordle_row_index_int}-\int_use:N\l__wordle_letter_index_int
+ }
+
+ % the construction of the node depends on whether the tile is framed
+ \tl_if_eq:cnTF {l__wordle_#1_frame_tl} {true}
+ {
+ % draw the frame
+ \node[/Wordle/frame=absent] % frame use the absent fill colour
+ at ({\l__wordle_letter_index_int*\l__wordle_grid_dim},{-\l__wordle_row_index_int*\l__wordle_grid_dim}){};
+ % draw the tile
+ \node[/Wordle/tile=#1]
+ (\l_tmpa_tl) at ({\l__wordle_letter_index_int*\l__wordle_grid_dim},
+ {-\l__wordle_row_index_int*\l__wordle_grid_dim})
+ { \l__wordle_align_tl\__wordle_letter:n {#2} };
+ }
+ {
+ % draw the tile, with a border
+ \node[/Wordle/frame=#1, /Wordle/tile=#1]
+ (\l_tmpa_tl) at ({\l__wordle_letter_index_int*\l__wordle_grid_dim},
+ {-\l__wordle_row_index_int*\l__wordle_grid_dim})
+ { \l__wordle_align_tl\__wordle_letter:n {#2} };
+ }
+
+ % if strict then put a slash through any extra letters
+ \bool_if:NT \l__wordle_strict_bool
+ {
+ \int_compare:nNnT {\l__wordle_letter_index_int} > {\seq_count:N \l__wordle_answer_seq }
+ {
+ \draw[red,ultra~thick] (\tl_use:N\l_tmpa_tl.south~west)--(\tl_use:N\l_tmpa_tl.north~east);
+ }
+ }
}
-\seq_new:N \l_wordle_seq % the answer
-\prop_new:N \l_wordle_prop % count letters in wordle
-\seq_new:N \l_words_seq % list of all words
-\prop_new:N \l_word_prop % count letters in word
-\int_new:N \l_letter_int % index of current letter in word
+\seq_new:N \l__wordle_answer_seq % the answer
+\prop_new:N \l__wordle_answer_counts_prop % count letters in wordle
+\seq_new:N \l__wordle_solution_seq % list of all words
+\prop_new:N \l__wordle_word_counts_prop % count letters in word
+\int_new:N \l__wordle_letter_index_int % index of current letter in word
+\int_new:N \l__wordle_row_index_int % TikZ row index in solution
-% a conditional for nonnegative prop counter in \l_word_prop
-\prg_new_protected_conditional:Npnn \if_wordle_letter_nonnegative:n #1 {TF}
+% a conditional for non-negative prop counter in \l__wordle_word_counts_prop
+\prg_new_protected_conditional:Npnn \if__wordle_letter_nonnegative:n #1 {TF}
{
- \prop_if_in:NnTF \l_word_prop {#1}
- { % letter in in prop
- \prop_get:NnN \l_word_prop {#1} \l_tmpa_tl
- \int_compare:nNnTF {\l_tmpa_tl} < {0}
- {\prg_return_false:} {\prg_return_true:}
- }
- {\prg_return_false:}
+ \prop_if_in:NnTF \l__wordle_word_counts_prop {#1}
+ { % letter in in prop
+ \prop_get:NnN \l__wordle_word_counts_prop {#1} \l_tmpa_tl
+ \int_compare:nNnTF {\l_tmpa_tl} < {0}
+ {\prg_return_false:} {\prg_return_true:}
+ }
+ {\prg_return_false:}
}
+\cs_generate_variant:Nn \str_if_eq:nVTF {xVTF}
+
% a conditional for comparing letters
-\prg_new_protected_conditional:Npnn \if_wordle_letters_agree:n #1 {T, TF}
+\prg_new_protected_conditional:Npnn \if__wordle_letters_agree:n #1 {T, TF}
{
- \str_set:Nx \l_tmpa_str {\seq_item:Nn \l_wordle_seq {\l_letter_int}}
- \str_if_eq:nVTF {#1} \l_tmpa_str {\prg_return_true:} {\prg_return_false:}
+ \str_set:Nx \l_tmpa_str
+ {\seq_item:Nn \l__wordle_answer_seq {\l__wordle_letter_index_int}}
+
+
+ \bool_if:NTF \l__wordle_case_sensitive_bool
+ {\str_if_eq:nVTF {#1} \l_tmpa_str {\prg_return_true:} {\prg_return_false:}}
+ {\str_if_eq:xVTF {\str_uppercase:n{#1}} \l_tmpa_str {\prg_return_true:} {\prg_return_false:}}
}
% add #3 to <prop=#1>.#2
-\cs_new_protected:Npn \wordle__add_to_prop_counter:Nnn #1#2#3
+\cs_new_nopar:Npn \wordle__add_to_prop_counter:Nnn #1#2#3
{
- \prop_put_if_new:Nnn #1 {#2} {0}
- \prop_pop:NnN #1 {#2} \l_tmp_a
- \prop_put:Nnx #1 {#2} {\int_eval:n {#3+\l_tmp_a}}
+ \prop_put_if_new:Nnn #1 {#2} {0}
+ \prop_pop:NnN #1 {#2} \l_tmp_a
+ \prop_put:Nnx #1 {#2} {\int_eval:n {#3+\l_tmp_a}}
}
-% make \l_wordle_prop<x> = #x's in wordle_seq
-\cs_new_protected:Npn \count_letters_in_wordle:n #1
+% make \l__wordle_answer_counts_prop<x> = #x's in wordle_seq
+\cs_new_nopar:Npn \wordle__count_letters_in_answer:n #1
{
- \wordle__add_to_prop_counter:Nnn \l_wordle_prop {#1} {1}%
+ \wordle__add_to_prop_counter:Nnn \l__wordle_answer_counts_prop {#1} {1}
}
% first run: subtract correct matches from letter counts
-\cs_new:Npn \count_letters_in_word:n #1
+\cs_new_nopar:Npn \wordle__count_letters_in_word:n #1
{
- \int_incr:N \l_letter_int
- \if_wordle_letters_agree:nT {#1}
- { \wordle__add_to_prop_counter:Nnn \l_word_prop {#1} {-1} }%
+ \int_incr:N \l__wordle_letter_index_int
+ \if__wordle_letters_agree:nT {#1}
+ { \wordle__add_to_prop_counter:Nnn \l__wordle_word_counts_prop {#1} {-1} }
}
-%commande [fr]
% on the second run we print a coloured wordle word
-\cs_new:Npn \write_letters_in_word:n #1
+\cs_new_nopar:Npn \wordle__write_letters_in_word:n #1
{
- \int_incr:N \l_letter_int
- \if_wordle_letters_agree:nTF {#1}
- { \l__sutom_boite_lettre:nn {\SutomBienPlacee}{#1}{\SutomRounded} }
- {
- % subtract 1 from the prop counter
- \wordle__add_to_prop_counter:Nnn \l_word_prop {#1} {-1}
- % if the counter is non-negative this is a pseudo match
- \if_wordle_letter_nonnegative:nTF {#1}
- { \l__sutom_boite_lettre_rond:nn {\SutomCoulFond}{\SutomCoulMalPlacee}{#1}{\SutomRounded} }
- { \l__sutom_boite_lettre:nn {\SutomCoulFond}{#1}{\SutomRounded} }
- }%
+ \int_incr:N \l__wordle_letter_index_int
+ \if__wordle_letters_agree:nTF {#1}
+ { \wordle__boxed_letter:nn {correct} {#1} }
+ {
+ % subtract 1 from the prop counter
+ \wordle__add_to_prop_counter:Nnn \l__wordle_word_counts_prop {#1} {-1}
+ % if the counter is non-negative this is a pseudo match
+ \if__wordle_letter_nonnegative:nTF {#1}
+ { \wordle__boxed_letter:nn {present} {#1} }
+ { \wordle__boxed_letter:nn {absent} {#1} }
+ }
}
-%commande [en]
-% on the second run we print a coloured wordle word
-\cs_new:Npn \write_letters_in_wordle:n #1
+\cs_generate_variant:Nn \seq_set_split:Nnn {Nnx}
+\cs_generate_variant:Nn \cs_set_nopar:Nn {NV}
+
+% typeset the word "#1", colouring letters using the wordle convention
+\cs_new_nopar:Npn \wordle__mark_word:n #1
{
- \int_incr:N \l_letter_int
- \if_wordle_letters_agree:nTF {#1}
- { \l__wordle_boite_lettre:nn {\SutomBienPlacee}{#1}{\SutomRounded} }
- {
- % subtract 1 from the prop counter
- \wordle__add_to_prop_counter:Nnn \l_word_prop {#1} {-1}
- % if the counter is non-negative this is a pseudo match
- \if_wordle_letter_nonnegative:nTF {#1}
- { \l__wordle_boite_lettre_rond:nn {\SutomCoulFond}{\SutomCoulMalPlacee}{#1}{\SutomRounded} }
- { \l__wordle_boite_lettre:nn {\SutomCoulFond}{#1}{\SutomRounded} }
- }%
-}
+ \str_if_eq:nnTF {#1} {*}
+ {
+ \cs_set_eq:NN \wordle__process_word:n \wordle__empty_word:n
+ }
+ {
+ \prop_set_eq:NN \l__wordle_word_counts_prop \l__wordle_answer_counts_prop
+ \tl_map_function:nN {#1} \wordle__count_letters_in_word:n
+ \int_zero:N \l__wordle_letter_index_int
+ \tl_map_function:nN {#1} \wordle__write_letters_in_word:n
-%clés [fr]
-\defKV[SUTOM]{%
- Couleurs=\def\SutomCouleurs{#1},%
- Arrondi=\def\SutomRounded{#1},%
- Unite=\def\SutomUnit{#1},%
- Police=\def\SutomFonte{#1},%
- CouleurLettres=\def\SutomFonteColor{#1},%
- Style=\def\SutomStyle{#1},%
- Epaisseur=\def\SutomWidth{#1},%
- CouleurBordure=\def\SutomBorder{#1}
-}
+ % if strict then check lengths
+ \bool_if:NT \l__wordle_strict_bool
+ {
+ \int_while_do:nNnn {\l__wordle_letter_index_int} < {\seq_count:N\l__wordle_answer_seq}
+ {
+ \int_incr:N \l__wordle_letter_index_int
+ \wordle__boxed_letter:nn {absent} {\c_space_tl}
+ }
+ }
-\setKVdefault[SUTOM]{%
- Couleurs={cyan!75!black,yellow,red},%
- Arrondi=0.1,%
- Unite=1,%
- Police=\LARGE\bfseries\sffamily,%
- CouleurLettres=white,%
- Lettres=true,%
- Style=rond,%
- Epaisseur=0.25,%
- CouleurBordure=white
+ % increment the row index
+ \int_incr:N \l__wordle_row_index_int
+ }
}
-%environnement [fr]
-\NewDocumentEnvironment{GrilleSutom}{ O{} m b }%
-{%
- \restoreKV[SUTOM]%
- \setKV[SUTOM]{#1}%
- \StrBefore{\SutomCouleurs}{,}[\SutomCoulFond]%
- \StrBetween[1,2]{\SutomCouleurs}{,}{,}[\SutomCoulMalPlacee]%
- \StrBehind[2]{\SutomCouleurs}{,}[\SutomBienPlacee]%
- \StrLen{#2}[\SutomNbLettres]%
- \def\SutomLarg{\fpeval{1.01*\SutomUnit*\SutomNbLettres}}%
- \begin{minipage}{\SutomLarg~cm}
- \lineskip=0pt%
- \parindent=0pt%
- % split the answer into letters
- \seq_set_split:Nnn \l_wordle_seq {} {#2}
- % we need to count the number of times each letter appears in \l_wordle_seq
- \prop_clear:N \l_wordle_prop
- \tl_map_function:nN {#2} \count_letters_in_wordle:n
- % split the solution into words
- \regex_split:nnN {\s} {#3} \l_words_seq
- % process the words
- \seq_map_inline:Nn \l_words_seq
- {
- \int_zero:N \l_letter_int
- \prop_set_eq:NN \l_word_prop \l_wordle_prop
- \tl_map_function:nN {##1} \count_letters_in_word:n
- \int_zero:N \l_letter_int
- \tl_map_function:nN {##1} \write_letters_in_word:n
- \par
- }
-}%
-{%
- \end{minipage}%
+% typeset the word "#1" by putting boxes around each letter
+\cs_new_nopar:Npn \wordle__empty_word:n #1
+{
+ \tl_map_inline:nn {#1}
+ {
+ \int_incr:N \l__wordle_letter_index_int
+ \wordle__boxed_letter:nn {empty} {##1}
+ }
+ % if strict then check lengths
+ \bool_if:NT \l__wordle_strict_bool
+ {
+ \int_while_do:nNnn {\l__wordle_ltter_index_int} < {\seq_count:N\l__wordle_answer_seq}
+ {
+ \int_incr:N \l__wordle_letter_index_int
+ \wordle__boxed_letter:nn {empty} {\c_space_tl}
+ }
+ }
+ \int_incr:N \l__wordle_row_index_int
}
-%clés [en]
-\definecolor{WordleBack}{HTML}{797D7F}
-\definecolor{WordleBad}{HTML}{CAB557}
-\definecolor{WordleGood}{HTML}{6AAB64}
-
-\defKV[WORDLE]{%
- Colors=\def\SutomCouleurs{#1},%
- Rounded=\def\SutomRounded{#1},%
- Unit=\def\SutomUnit{#1},%
- Fonte=\def\SutomFonte{#1},%
- ColorLetters=\def\SutomFonteColor{#1},%
- Style=\def\SutomStyle{#1},%
- Thickness=\def\SutomWidth{#1},%
- BorderColor=\def\SutomBorder{#1}
-}
+\cs_set_eq:NN \wordle__process_word:n \wordle__mark_word:n
-\setKVdefault[WORDLE]{%
- Colors={WordleBack,WordleBad,WordleGood},%
- Rounded=0.1,%
- Unit=1,%
- Fonte=\LARGE\bfseries\sffamily,%
- CouleurLettres=white,%
- Letters=true,%
- Style=default,%
- Thick=0.25,%
- BorderColor=white
-}
+\NewDocumentEnvironment{wordle}{ O{} m O{} b }
+{
+ % apply wordle environment options
+ \WordleSetup{#1}
+ \begin{tikzpicture}
-%environnement [en]
-\NewDocumentEnvironment{WordleGrid}{ O{} m b }
-{%
- \restoreKV[WORDLE]%
- \setKV[WORDLE]{#1}%
- \StrBefore{\SutomCouleurs}{,}[\SutomCoulFond]%
- \StrBetween[1,2]{\SutomCouleurs}{,}{,}[\SutomCoulMalPlacee]%
- \StrBehind[2]{\SutomCouleurs}{,}[\SutomBienPlacee]%
- \StrLen{#2}[\SutomNbLettres]%
- \def\SutomLarg{\fpeval{1.01*\SutomUnit*\SutomNbLettres}}%
- \begin{minipage}{\SutomLarg~cm}
- \parindent=0pt
- \lineskip=0pt
- % split the answer into letters
- \seq_set_split:Nnn \l_wordle_seq {} {#2}
- % we need to count the number of times each letter appears in \l_wordle_seq
- \prop_clear:N \l_wordle_prop
- \tl_map_function:nN {#2} \count_letters_in_wordle:n
- % split the solution into words
- \regex_split:nnN {\s} {#3} \l_words_seq
- % process the words
- \seq_map_inline:Nn \l_words_seq
- {
- \int_zero:N \l_letter_int
- \prop_set_eq:NN \l_word_prop \l_wordle_prop
- \tl_map_function:nN {##1} \count_letters_in_word:n
- \int_zero:N \l_letter_int
- \tl_map_function:nN {##1} \write_letters_in_wordle:n
- \par
- }
-}%
-{%
- \end{minipage}%
-}
+ % apply any tikz settings -- we need to some expansion trickery to do this
+ \__wordle_tikzset:n {\l__wordle_tikz_tl}
+ \__wordle_tikzset:n {/Wordle/tile/.append~style={\l__wordle_depth_tl,\l__wordle_tile_style_tl}}
+
+ % set grid dimension = box size + separation
+ \dim_set:Nn \l__wordle_grid_dim {\l__wordle_size_dim+\l__wordle_sep_dim}
+
+ % split the answer into letters
+ \bool_if:NTF \l__wordle_case_sensitive_bool
+ { \seq_set_split:Nnn \l__wordle_answer_seq {} {#2} }
+ { \seq_set_split:Nnx \l__wordle_answer_seq {} {\str_uppercase:n {#2}} }
+
+ % count the number of times letters appear in \l__wordle_answer_seq
+ \prop_clear:N \l__wordle_answer_counts_prop
+ \tl_map_function:nN {#2} \wordle__count_letters_in_answer:n
+
+ % split the solution into words
+ \regex_split:nnN {\s} {#4} \l__wordle_solution_seq
+
+ % process the words
+ \int_zero:N \l__wordle_row_index_int
+ \seq_map_inline:Nn \l__wordle_solution_seq
+ {
+ \int_zero:N \l__wordle_letter_index_int
+ \wordle__process_word:n {##1}
+ }
+
+ % if required, add extra required blank rows
+ \int_while_do:nNnn {\l__wordle_row_index_int} < {\l__wordle_rows_int}
+ {
+ \int_zero:N \l__wordle_letter_index_int
+ \int_while_do:nNnn {\l__wordle_letter_index_int} < {\seq_count:N\l__wordle_answer_seq}
+ {
+ \int_incr:N \l__wordle_letter_index_int
+ \wordle__boxed_letter:nn {empty} {\c_space_tl}
+ }
+ \int_incr:N \l__wordle_row_index_int
+ }
+
+ % finally, execute the optional TikZ commands
+ #3
+
+ \end{tikzpicture}
+}{}
+
+% wrapper environment for Gridwordle
+\NewDocumentEnvironment{GridWordle}{ O{} m O{} b }
+ {
+ \begin{wordle}[#1]{#2}[#3]#4]\end{wordle}
+ }
+ {}
+
+% wrapper environment for GrilleSutom
+\NewDocumentEnvironment{GrilleSutom}{ O{} m O{} b }
+ {
+ \begin{wordle}[style=sutom,#1]{#2}[#3]#4\end{wordle}
+ }
+ {}
-\ExplSyntaxOff
+\endinput
-\endinput \ No newline at end of file
+% ----------------------------------------------------------------
+% CHANGE LOG
+%
+% Version 0.3 - \wordle@release
+% - merged AM & CP packages, adding styles and streamlining options, french keys
+%
+% Version 0.2 - \wordle@release
+% - added documentation and cleaned some of the options
+%
+% Version 0.1 - 2022-10-01
+% - initial version
+%
+% ----------------------------------------------------------------
+%
+% Copyright (C) 2022-3 by Andrew Mathas <andrew.mathas@gmail.com>
+% and Cédric Pierquet cpierquet@outlook.fr
+%
+% 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 work consists of the files:
+% wordle.sty
+% wordle.tex
diff --git a/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty b/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty
index e2673d3c581..ea8fbb4a3c9 100644
--- a/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.sty
+++ b/Master/texmf-dist/tex/latex/writeongrid/WriteOnGrid.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{WriteOnGrid}[2024/04/12 v0.1.6 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
% 0.1.4 Suppression des options de xcolor (définition manuelle des couleurs)
@@ -21,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}{%
@@ -99,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
@@ -151,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
}{}
}%
{}%
@@ -180,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
@@ -233,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
}{}
}%
{}%
@@ -280,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
@@ -332,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
}{}
}%
{}%
@@ -361,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
@@ -414,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
}{}
}%
{}%
@@ -482,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}%
{%
@@ -564,16 +571,21 @@
}
%------page entière 5x5
+%les marges doivent valoir MargeH=0.2+k*0.5 et MargeV=0.3+k'*0.5
\defKV[CxCFull]{%
Couleur=\xdef\CCFullCoul{#1},%
CouleurMarge=\xdef\CCFullCoulM{#1},%
- FormatPapier=\xdef\CCFullFormatPap{#1}
+ FormatPapier=\xdef\CCFullFormatPap{#1},%
+ MargeG=\xdef\CCFullMargeG{#1},%
+ MargeH=\xdef\CCFullMargeH{#1}
}
\setKVdefault[CxCFull]{%
Couleur=lightgray!50,%
CouleurMarge=gray,%
NumLignes=false,%
- FormatPapier=A4
+ FormatPapier=A4,%
+ MargeG=auto,%
+ MargeH=auto
}
\NewDocumentEnvironment{PleinePageCinqCinq}{ O{} }%semble OK ^^
@@ -581,24 +593,60 @@
\useKVdefault[CxCFull]%
\setKV[CxCFull]{#1}%
\IfEq{\CCFullFormatPap}{A4}%
- {\xdef\CCFullHautPap{29.7}\xdef\CCFullLargPap{21}\xdef\CCFullMargeG{1.7}\xdef\CCFullMargeH{1.3}}%
+ {%
+ \xdef\CCFullHautPap{29.7}\xdef\CCFullLargPap{21}%
+ \IfEq{\CCFullMargeG}{auto}%
+ {%
+ \xdef\CCFullMargeG{1.7}%
+ }%
+ {}%
+ \IfEq{\CCFullMargeH}{auto}%
+ {%
+ \xdef\CCFullMargeH{1.3}%
+ }%
+ {}%
+ }%
{}%
\IfEq{\CCFullFormatPap}{A5}%
- {\xdef\CCFullHautPap{21}\xdef\CCFullLargPap{14.8}\xdef\CCFullMargeG{1.2}\xdef\CCFullMargeH{0.8}}%
+ {%
+ \xdef\CCFullHautPap{21}\xdef\CCFullLargPap{14.8}%
+ \IfEq{\CCFullMargeG}{auto}%
+ {%
+ \xdef\CCFullMargeG{1.2}%
+ }%
+ {}%
+ \IfEq{\CCFullMargeH}{auto}%
+ {%
+ \xdef\CCFullMargeH{0.8}%
+ }%
+ {}%
+ }%
{}%
\IfSubStr{\CCFullFormatPap}{x}%
- {\StrCut{\CCFullFormatPap}{x}{\CCFullLargPap}{\CCFullHautPap}\xdef\CCFullMargeG{1.7}\xdef\CCFullMargeH{1.3}}%
+ {%
+ \StrCut{\CCFullFormatPap}{x}{\CCFullLargPap}{\CCFullHautPap}%
+ \IfEq{\CCFullMargeG}{auto}%
+ {%
+ \xdef\CCFullMargeG{1.7}%
+ }%
+ {}%
+ \IfEq{\CCFullMargeH}{auto}%
+ {%
+ \xdef\CCFullMargeH{1.3}%
+ }%
+ {}%
+ }%
{}%
%calcul du nombre de lignes /colonnes ?
\xdef\CCFullNbLign{\fpeval{round(\CCFullHautPap/(0.5),0)}}%
\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}%
{%
@@ -703,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 98a1b1b2f59..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.62}
-\def\filedate{2024-03-01}
+\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/xindex/xindex.sty b/Master/texmf-dist/tex/latex/xindex/xindex.sty
index 43cd71a3247..143e36b4317 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}[2024/05/16 v. 0.61 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/xreview/xreview.sty b/Master/texmf-dist/tex/latex/xreview/xreview.sty
new file mode 100644
index 00000000000..a6d2501eed1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/xreview/xreview.sty
@@ -0,0 +1,135 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{xreview}[2024/08/29 Reviewing LaTeX documents made easy]
+
+\RequirePackage{xcolor}
+\RequirePackage[normalem]{ulem}
+\RequirePackage{etoolbox}
+\RequirePackage{environ}
+\RequirePackage{letltxmacro}
+\RequirePackage{todonotes}
+\RequirePackage{soul}
+\RequirePackage{pifont}
+\RequirePackage{xparse}
+\RequirePackage{amsmath}
+
+%%%% Equation numbering
+\newcounter{removedeqcounter}
+\setcounter{removedeqcounter}{0}
+
+%%%% Comment numbering
+\newcounter{commentcounter}
+\setcounter{commentcounter}{0}
+
+%%%% Define colours and prefixes
+\newcommand{\addedcolor}{blue}
+\newcommand{\removedcolor}{red}
+\newcommand{\removedeqprefix}{R}
+\newcommand{\commentcolor}{yellow}
+\newcommand{\resolvedcommentcolor}{green}
+\newcommand{\commentprefix}{C}
+
+%%%% Necessary for comments to work in twocolumn-type documents
+\setlength{\marginparwidth}{2cm}
+
+%%%% Reviewing commands
+\newtoggle{annotated}
+\toggletrue{annotated} % Show changes by default
+
+\newcommand{\showchanges}{\toggletrue{annotated}}
+\newcommand{\showclean}{\togglefalse{annotated}}
+
+\newtoggle{commented}
+\toggletrue{commented} % Show comments by default
+
+\newcommand{\showcomments}{\toggletrue{commented}}
+\newcommand{\hidecomments}{\togglefalse{commented}}
+
+%%%% Text coloring and hiding
+\newcommand{\colortext}[2]{{\leavevmode\color{#1}{#2}}}
+\newcommand{\safesout}[1]{\ifmmode\text{\sout{\ensuremath{#1}}}\else\sout{#1}\fi}
+\newcommand{\hidefromclean}[1]{\iftoggle{annotated}{#1}{}}
+
+\newcommand{\added}[1]{\iftoggle{annotated}{\colortext{\addedcolor}{#1}}{{#1}}}
+
+\newcommand{\removed}[1]{\hidefromclean{%
+\begingroup%
+\let\oldcite\cite%
+\renewcommand{\cite}[1]{\mbox{\oldcite{##1}}}%
+\colortext{\removedcolor}{\safesout{#1}}%
+\endgroup}}
+
+\newcommand{\changed}[2]{\removed{#1}\iftoggle{annotated}{ }{}\added{#2}}
+
+%%%% Equation coloring and hiding
+\NewEnviron{remequation}{\hidefromclean{%
+\addtocounter{equation}{-1}%
+\refstepcounter{removedeqcounter}%
+\renewcommand{\theequation}{\textcolor{\removedcolor}{\removedeqprefix\arabic{removedeqcounter}}}%
+\let\oldnonumber\nonumber%
+\renewcommand{\nonumber}{\addtocounter{equation}{1}\addtocounter{removedeqcounter}{-1}\oldnonumber}%
+\renewcommand{\notag}{\nonumber}%
+\begin{equation}%
+\color{\removedcolor}%
+\safesout{\BODY}%
+\end{equation}}}
+
+\NewEnviron{remequation*}{\hidefromclean{%
+\begin{equation*}%
+\color{\removedcolor}%
+\safesout{\BODY}%
+\end{equation*}}}
+
+\NewEnviron{addequation}{%
+\begin{equation}%
+\added{\BODY}%
+\end{equation}}
+
+\NewEnviron{addequation*}{%
+\begin{equation*}%
+\added{\BODY}%
+\end{equation*}}
+
+\newcommand{\removedeqline}[1]{\hidefromclean{%
+\let\oldnonumber\nonumber%
+\renewcommand{\nonumber}{\global\tag@false\addtocounter{removedeqcounter}{-1}}%
+\renewcommand{\notag}{\nonumber}%
+\makeatletter%
+\newcommand{\remlabel}{%
+\refstepcounter{removedeqcounter}%
+\global\tag@true%
+\oldnonumber%
+\gdef\df@tag{\maketag@@@{\textcolor{\removedcolor}{(\removedeqprefix\arabic{removedeqcounter})}}\def\@currentlabel{\textcolor{\removedcolor}{\removedeqprefix\arabic{removedeqcounter}}}}}
+\makeatother
+\remlabel%
+\color{\removedcolor}%
+\makeatletter\let\default@color\current@color\makeatother%
+\safesout{#1}%
+}}
+
+\newcommand{\addedeqline}[1]{%
+\iftoggle{annotated}{\color{\addedcolor}{#1}}%
+{{#1}}%
+}
+
+\newcommand{\remaligntab}{\hidefromclean{&}}
+\newcommand{\remnewline}{\hidefromclean{\\}}
+
+%%%% Commenting
+\DeclareRobustCommand{\resolvedhl}[1]{{\sethlcolor{green}\hl{#1}}}
+
+\newcommand{\comment}[3][]{%
+\stepcounter{commentcounter}%
+\ifboolexpr{togl{annotated} and togl{commented}}{%
+\hl{#2}\todo[prepend, color=\commentcolor ,caption=\textbf{\commentprefix\arabic{commentcounter}}, linecolor=black, #1]{#3}}%
+{#2}}
+
+\newcommand{\resolvedcomment}[3][]{%
+\stepcounter{commentcounter}%
+\ifboolexpr{togl{annotated} and togl{commented}}{%
+\resolvedhl{#2}\todo[prepend, color=\resolvedcommentcolor ,caption=\textbf{\ding{52} \commentprefix\arabic{commentcounter}}, linecolor=black, #1]{#3}}%
+{#2}}
+
+\NewDocumentCommand{\authoredcomments}{O{} O{} m}{%
+ \expandafter\newcommand\csname #3comment\endcsname{\comment[author=#3, #1]}%
+ \expandafter\newcommand\csname resolved#3comment\endcsname{\resolvedcomment[author=#3, #2]}%
+} \ No newline at end of file
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..62d47ef5fb5 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-07} {0.3.6}
{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 }
@@ -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.sty b/Master/texmf-dist/tex/latex/zref-clever/zref-clever.sty
index 5a91bc017a9..b4a9021b10e 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-05-20} {0.4.5}
+\ProvidesExplPackage {zref-clever} {2024-11-07} {0.4.8}
{Clever LaTeX cross-references based on zref}
\RequirePackage { zref-base }
\RequirePackage { zref-user }
@@ -102,6 +102,15 @@
\zref@addprop \ZREF@mainlist { zc@cntval }
\zref@newprop* { zc@pgval } [0] { \int_use:c { c@page } }
\zref@addprop \ZREF@mainlist { zc@pgval }
+\cs_new:Npn \__zrefclever_get_enclosing_counters:n #1
+ {
+ \cs_if_exist:cT { c@ \__zrefclever_counter_reset_by:n {#1} }
+ {
+ { \__zrefclever_counter_reset_by:n {#1} }
+ \__zrefclever_get_enclosing_counters:e
+ { \__zrefclever_counter_reset_by:n {#1} }
+ }
+ }
\cs_new:Npn \__zrefclever_get_enclosing_counters_value:n #1
{
\cs_if_exist:cT { c@ \__zrefclever_counter_reset_by:n {#1} }
@@ -111,6 +120,7 @@
{ \__zrefclever_counter_reset_by:n {#1} }
}
}
+\cs_generate_variant:Nn \__zrefclever_get_enclosing_counters:n { e }
\cs_generate_variant:Nn \__zrefclever_get_enclosing_counters_value:n { e }
\cs_new:Npn \__zrefclever_counter_reset_by:n #1
{
@@ -141,9 +151,11 @@
\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 }
+ { \__zrefclever_get_enclosing_counters:e \l__zrefclever_current_counter_tl }
\int_new:N \g__zrefclever_page_format_int
\tl_new:N \g__zrefclever_prev_page_format_tl
\AddToHook { shipout / before }
@@ -771,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 }
@@ -781,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
@@ -962,57 +974,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} { 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
\group_end:
}
\cs_generate_variant:Nn \__zrefclever_provide_langfile:n { e }
@@ -1024,7 +1036,6 @@
{ \tl_clear:N \l__zrefclever_setup_type_tl }
{ \tl_set:Nn \l__zrefclever_setup_type_tl {#1} }
} ,
-
case .code:n =
{
\seq_if_empty:NTF \l__zrefclever_lang_declension_seq
@@ -1044,7 +1055,6 @@
}
} ,
case .value_required:n = true ,
-
gender .value_required:n = true ,
gender .code:n =
{
@@ -1199,7 +1209,6 @@
}
}
}
-
{ stripprefix }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -1236,7 +1245,6 @@
}
}
}
-
{ pagecomp }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -1273,7 +1281,6 @@
}
}
}
-
{ pagecomp2 }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -1641,7 +1648,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 } ,
@@ -1700,7 +1706,6 @@
{ endrangeprop } { tl }
}
}
-
{ stripprefix }
{
\__zrefclever_opt_tl_set:cn
@@ -1715,7 +1720,6 @@
{ endrangeprop } { tl }
}
}
-
{ pagecomp }
{
\__zrefclever_opt_tl_set:cn
@@ -1730,7 +1734,6 @@
{ endrangeprop } { tl }
}
}
-
{ pagecomp2 }
{
\__zrefclever_opt_tl_set:cn
@@ -1745,7 +1748,6 @@
{ endrangeprop } { tl }
}
}
-
{ unset }
{
\__zrefclever_opt_tl_unset:c
@@ -1808,71 +1810,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
@@ -1895,36 +1897,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 }
+ \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
}
{ \tl_set:Nn #3 { zc@missingproperty } }
}
@@ -1943,42 +1945,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 }
+ \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
}
{ \tl_set:Nn #3 { zc@missingproperty } }
}
@@ -1988,49 +1990,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 }
+ \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
}
{ \tl_set:Nn #3 { zc@missingproperty } }
}
@@ -2163,7 +2165,6 @@
\tl_set:Nn \l__zrefclever_ref_language_tl
{ \l__zrefclever_current_language_tl }
}
-
{ main }
{
\tl_set:Nn \l__zrefclever_ref_language_tl
@@ -2200,7 +2201,6 @@
\tl_set:Nn \l__zrefclever_ref_language_tl
{ \l__zrefclever_current_language_tl }
}
-
{ main }
{
\tl_set:Nn \l__zrefclever_ref_language_tl
@@ -2352,7 +2352,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 ,
}
@@ -2418,25 +2418,16 @@
\keys_define:nn { zref-clever/label }
{
counterresetters .code:n =
- {
- \clist_map_inline:nn {#1}
- {
- \seq_if_in:NnF \l__zrefclever_counter_resetters_seq {##1}
- {
- \seq_put_right:Nn
- \l__zrefclever_counter_resetters_seq {##1}
- }
- }
- } ,
+ { \seq_set_from_clist:Nn \l__zrefclever_counter_resetters_seq {#1} } ,
counterresetters .initial:n =
{
- part ,
- chapter ,
- section ,
- subsection ,
- subsubsection ,
- paragraph ,
subparagraph ,
+ paragraph ,
+ subsubsection ,
+ subsection ,
+ section ,
+ chapter ,
+ part ,
},
counterresetters .value_required:n = true ,
}
@@ -2642,9 +2633,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 ,
@@ -2723,7 +2714,6 @@
{ \l__zrefclever_setup_type_tl } { endrangeprop } { tl }
}
}
-
{ stripprefix }
{
\__zrefclever_opt_tl_set:cn
@@ -2738,7 +2728,6 @@
{ \l__zrefclever_setup_type_tl } { endrangeprop } { tl }
}
}
-
{ pagecomp }
{
\__zrefclever_opt_tl_set:cn
@@ -2753,7 +2742,6 @@
{ \l__zrefclever_setup_type_tl } { endrangeprop } { tl }
}
}
-
{ pagecomp2 }
{
\__zrefclever_opt_tl_set:cn
@@ -2768,7 +2756,6 @@
{ \l__zrefclever_setup_type_tl } { endrangeprop } { tl }
}
}
-
{ unset }
{
\__zrefclever_opt_tl_unset:c
@@ -2927,33 +2914,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} { 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} }
\group_end:
}
\@onlypreamble \zcLanguageSetup
@@ -2965,7 +2952,6 @@
{ \tl_clear:N \l__zrefclever_setup_type_tl }
{ \tl_set:Nn \l__zrefclever_setup_type_tl {#1} }
} ,
-
case .code:n =
{
\seq_if_empty:NTF \l__zrefclever_lang_declension_seq
@@ -2985,7 +2971,6 @@
}
} ,
case .value_required:n = true ,
-
gender .value_required:n = true ,
gender .code:n =
{
@@ -3120,7 +3105,6 @@
}
}
}
-
{ stripprefix }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -3157,7 +3141,6 @@
}
}
}
-
{ pagecomp }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -3194,7 +3177,6 @@
}
}
}
-
{ pagecomp2 }
{
\tl_if_empty:NTF \l__zrefclever_setup_type_tl
@@ -3486,8 +3468,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
{
@@ -3506,11 +3488,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
@@ -3518,9 +3500,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
@@ -3592,7 +3574,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
@@ -3611,9 +3592,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
@@ -3651,7 +3630,6 @@
}
}
}
-
\bool_until_do:Nn \l__zrefclever_sort_decided_bool
{
\bool_if:nTF
@@ -3860,7 +3838,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 }
@@ -3874,7 +3851,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
@@ -3890,7 +3866,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 }
@@ -3904,7 +3879,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),
@@ -3931,7 +3905,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 }
@@ -3954,7 +3927,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 }
@@ -4048,7 +4020,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.
@@ -4075,7 +4046,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 }
@@ -4309,7 +4279,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
@@ -4387,7 +4356,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
@@ -4395,7 +4363,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.
@@ -4425,24 +4392,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:
}
}
@@ -4458,7 +4425,6 @@
}
}
}
-
% Typeset the previous type block, if there is one.
\int_compare:nNnT { \l__zrefclever_type_count_int } > { 0 }
{
@@ -4466,11 +4432,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
{
@@ -4537,7 +4501,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 }
{
@@ -4548,7 +4511,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.
@@ -4790,9 +4752,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 }
}
@@ -4802,9 +4764,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 }
@@ -4831,8 +4793,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 }
}
@@ -4842,8 +4804,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 }
@@ -4873,17 +4835,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 }
}
@@ -4891,8 +4853,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:
@@ -4906,8 +4868,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 }
@@ -4937,10 +4899,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 }
@@ -4952,10 +4914,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 }
@@ -4967,237 +4929,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 }
- {
- \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_if_eq:NnTF
+ \l__zrefclever_type_first_label_type_tl { zc@missingtype }
{
- \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_type_name_tl
+ \bool_set_true:N \l__zrefclever_type_name_missing_bool
}
- { \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
+ {
+ \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 }
+ }
{
- \seq_use:Nn
- \l__zrefclever_type_name_gender_seq { ,~ }
+ \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
+ \tl_if_empty:NTF \l__zrefclever_name_format_fallback_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_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_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 }
+ { \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_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 }
{ \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
@@ -5231,13 +5207,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
@@ -5257,13 +5233,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
@@ -5389,8 +5365,34 @@
\cs_generate_variant:Nn \__zrefclever_get_rf_opt_bool:nnnnN { nneeN }
\__zrefclever_compat_module:nn { appendix }
{
+ \newcounter { zc@appendix }
+ \cs_if_exist:cTF { chapter }
+ {
+ \__zrefclever_zcsetup:e
+ {
+ counterresetby =
+ {
+ zc@appendix = \__zrefclever_counter_reset_by:n { chapter } ,
+ chapter = zc@appendix ,
+ } ,
+ }
+ }
+ {
+ \cs_if_exist:cT { section }
+ {
+ \__zrefclever_zcsetup:e
+ {
+ counterresetby =
+ {
+ zc@appendix = \__zrefclever_counter_reset_by:n { section } ,
+ section = zc@appendix ,
+ } ,
+ }
+ }
+ }
\AddToHook { cmd / appendix / before }
{
+ \setcounter { zc@appendix } { 1 }
\__zrefclever_zcsetup:n
{
countertype =
@@ -5409,26 +5411,9 @@
{
\__zrefclever_if_package_loaded:nT { appendix }
{
- \newcounter { zc@appendix }
- \newcounter { zc@save@appendix }
- \setcounter { zc@appendix } { 0 }
- \setcounter { zc@save@appendix } { 0 }
- \cs_if_exist:cTF { chapter }
- {
- \__zrefclever_zcsetup:n
- { counterresetby = { chapter = zc@appendix } }
- }
- {
- \cs_if_exist:cT { section }
- {
- \__zrefclever_zcsetup:n
- { counterresetby = { section = zc@appendix } }
- }
- }
\AddToHook { env / appendices / begin }
{
- \stepcounter { zc@save@appendix }
- \setcounter { zc@appendix } { \value { zc@save@appendix } }
+ \setcounter { zc@appendix } { 1 }
\__zrefclever_zcsetup:n
{
countertype =
@@ -5444,13 +5429,31 @@
}
\AddToHook { env / appendices / end }
{ \setcounter { zc@appendix } { 0 } }
- \AddToHook { cmd / appendix / before }
+ \newcounter { zc@subappendix }
+ \cs_if_exist:cTF { chapter }
+ {
+ \__zrefclever_zcsetup:e
+ {
+ counterresetby =
+ {
+ zc@subappendix = \__zrefclever_counter_reset_by:n { section } ,
+ section = zc@subappendix ,
+ } ,
+ }
+ }
{
- \stepcounter { zc@save@appendix }
- \setcounter { zc@appendix } { \value { zc@save@appendix } }
+ \__zrefclever_zcsetup:e
+ {
+ counterresetby =
+ {
+ zc@subappendix = \__zrefclever_counter_reset_by:n { subsection } ,
+ subsection = zc@subappendix ,
+ } ,
+ }
}
\AddToHook { env / subappendices / begin }
{
+ \setcounter { zc@subappendix } { 1 }
\__zrefclever_zcsetup:n
{
countertype =
@@ -5463,6 +5466,8 @@
} ,
}
}
+ \AddToHook { env / subappendices / end }
+ { \setcounter { zc@subappendix } { 0 } }
\msg_info:nnn { zref-clever } { compat-package } { appendix }
}
}
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..b45b789350f 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-07} {0.1.11}
{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
diff --git a/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty b/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty
new file mode 100644
index 00000000000..04fab682835
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty
@@ -0,0 +1,197 @@
+%
+% Copyright (C) 2024 Marei Peischl <marei@peitex.de>
+% ---------------------------------------------------------
+%
+% 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 2008-05-04 or later.
+%
+\ProvidesExplPackage{zugferd-invoice}{2024-11-07}{0.9a}{Invoice wrapper example package for the factur-x to create ZUGFerD invoices}
+
+\keys_define:nn {zugferd/invoice}{
+ default-vat .tl_set:N = \defaultVAT,
+ default-vat .initial:n = 19,
+ format .code:n = \PassOptionsToPackage{format=#1}{zugferd},
+ format .initial:n = xrechnung3.0,
+}
+
+\ProcessKeyOptions[zugferd/invoice]
+
+\msg_new:nnnn {ptxcd/zugferd} {not-for-production} {
+ This~package~is~intented~to~be~an~example~for~a~possible~implementation~to~use~the~zugferd~package~for~invoicing.\\
+ As~this~integrates~a~lot~with~the~visual~structure~of~your~invoice~this~should~not~be~used~directly~but~may~be~an~example~for~your~own~package.
+}{See~zugferd~documentation~for~instructions~concerning~the~interfaces~used~in~this~file.}
+\msg_warning:nn {ptxcd/zugferd} {not-for-production}
+
+\RequirePackage{scrletter}
+\RequirePackage{ragged2e}
+\RequirePackage{zugferd}
+\RequirePackage{babel}
+
+% e.g. use comma as output decimal marker if german
+\addto\extrasgerman{\sisetup{locale=DE}}
+\addto\extrasngerman{\sisetup{locale=DE}}% for backwards compatibility
+
+\RequirePackage{xltabular}
+\RequirePackage{booktabs}
+
+\newcounter{invoiceitem}
+\seq_new:N \g__ptxcd_VAT_rates_seq
+
+% 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}
+}
+
+%Initialize VAT rates for (5),7,(16) and 19 % VAT
+%\InitVAT{16}
+\InitVAT{19}
+%\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
+
+% 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}
+ }
+}
+
+\newcolumntype{P}{r<{\PrintTableCurrency}}
+
+\fp_new:N \g__ptxcd_invoice_sum_fp
+\fp_new:N \g__ptxcd_invoice_total_fp
+\fp_new:N \g__ptxcd_tax_total_fp
+\fp_new:N \g__ptxcd_invoice_item_fp
+\fp_new:N \g__ptxcd_invoice_item_vat_fp
+\fp_new:N \g__ptxcd_invoice_sum_vat_fp
+
+\newcommand*{\PrintInvoiceTabular}{
+\bool_gset_true:N \g_ptxcd_first_run_bool
+ \begin{ZUGFeRD}
+ \sisetup{round-precision=2,round-mode=places,round-pad=false,table-number-alignment=right,minimum-decimal-digits=2,mode=text}
+ \begin{xltabular}{\linewidth}{@{}rS[round-precision=1,table-format=2.1]>{\RaggedRight}XPP@{}}
+ \toprule[\lightrulewidth]
+ \noalign{\global\let\PrintTableCurrency\relax}%
+ \small\emph{Pos.}&\small\emph{Std.}&\small\emph{Beschreibung}&\small\emph{Einzelpreis}&\small\emph{Gesamtpreis}\\\midrule[\heavyrulewidth]
+ \noalign{\global\let\PrintTableCurrency\TableCurrency}%
+ \endhead
+ \bottomrule[\lightrulewidth]\multicolumn{5}{@{}p{\textwidth}@{}}{\strut\hspace*{\fill}\footnotesize Fortsetzung auf der nächsten Seite}\endfoot
+ \bottomrule\endlastfoot
+% Only write xml for the first run of the tabular.
+ \fp_compare:nNnF {\g__ptxcd_invoice_sum_fp} = {\c_zero_dim} {
+ \fp_gzero:N \g__ptxcd_invoice_sum_fp
+ \zugferd_disable_XML_interfaces:
+ }
+ \seq_map_inline:Nn \g__ptxcd_VAT_rates_seq {
+ \fp_gzero:c {g__ptxcd_invoice_sum_vat##1_fp}
+ \fp_gzero:c {g__ptxcd_invoice_base_vat##1_fp}
+ }
+ \fp_gzero:N \g__ptxcd_invoice_sum_fp
+ \seq_map_inline:Nn \l__ptxcd_invoice_items_seq {
+ \PrintInvoiceItem##1
+ }
+ \tabularnewline
+ \noalign{\skip_vertical:n {-\ht\strutbox-\dp\strutbox}}%offset for extra empty row of mapping
+ \midrule[\heavyrulewidth]
+ \PrintInvoiceTotal
+ \end{xltabular}
+ \end{ZUGFeRD}
+}
+
+\newcommand*{\PrintInvoiceTotal}{
+ \zugferd_startInvoiceSums:
+ \fp_gset:Nn \g__ptxcd_invoice_total_fp { \g__ptxcd_invoice_sum_fp}
+ \fp_gzero:N \g__ptxcd_tax_total_fp
+ \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}}
+ \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}}
+ }
+ }
+ \PrintInvoiceSum{brutto}{\fp_eval:n {\g__ptxcd_tax_total_fp + \g__ptxcd_invoice_total_fp }}
+ % TODO add support for allowance, chargeTotal, and prepaid
+ \zugferd_write_Summation:nnnnnnnn
+ {\fp_use:N \g__ptxcd_invoice_sum_fp}% LineTotalAmount
+ {0} %ChargeTotalAmount
+ {0} %AllowanceTotalAmount
+ {\fp_use:N \g__ptxcd_invoice_sum_fp} %TaxBasisTotalAmount
+ {\fp_use:N \g__ptxcd_tax_total_fp} %TaxTotalAmount
+ {\fp_eval:n {\g__ptxcd_tax_total_fp + \g__ptxcd_invoice_total_fp }} %GrandTotalAmount
+ {0} % TotalPrepaidAmount
+ {\fp_eval:n {\g__ptxcd_tax_total_fp + \g__ptxcd_invoice_total_fp }} %DuePayableAmount = GrandTotalAmount - TotalPrepaidAmount
+ \zugferd_stopInvoiceSums:
+}
+
+%Ausgabe der einzelnen Rechnungspositionen
+\newcommand*{\PrintInvoiceItem}[5]{%
+ \stepcounter{invoiceitem}%
+ \theinvoiceitem%Positionsnummer
+ \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}
+
+ % 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
+ &\num{#4}%\num[round-mode=places,output-decimal-marker={,},round-pad = false]{#4}\tl_show:n {#4}%Einzelpreis
+ &\exp_args:Nx \num{\fp_use:N \g__ptxcd_invoice_item_fp}
+ \tabularnewline
+}
+
+
+
+\newcommand*{\PrintInvoiceSum}[2]{
+ \PrintSum{\csname invoicesum#1name\endcsname}{#2}
+}
+
+\newcommand*{\PrintVatSum}[3][]{
+ \PrintSum{\invoicesumvatname[#1]{#2}}{#3}
+}
+
+\newcommand*{\invoicesumvatname}[2][]{MwSt.~\printVAT{#2}\tl_if_empty:nF {#1} {\space(\num[round-precision=2]{#1}\TableCurrency)}}
+\renewcommand*{\theinvoiceitem}{\int_compare:nNnT {\value{invoiceitem}}<{10}{0}\arabic{invoiceitem}}
+
+\newcommand*{\PrintSum}[2]{
+ &&\multicolumn{1}{r}{#1\invoicesumseparator}&\multicolumn{1}{l}{}&\exp_args:Nx \num {#2}\tabularnewline
+}
+
+\ExplSyntaxOff
+
+\newcommand*{\invoicesumnettoname}{Summe (Netto)}
+\newcommand*{\invoicesumbruttoname}{Summe (Brutto)}
+\newcommand*{\invoicesumseparator}{:\space}
+
+\newcommand*{\TableCurrency}{\,€}
+\newcommand*{\printVAT}[1]{\num[round-mode=none]{#1}\,\%}
+
+\newcommand*{\PrintPositionenVAT}[5]{%
+ \stepcounter{invoiceitem}%
+ \theinvoiceitem&#1&#2\space(\printVAT{#3})&#4&#5\tabularnewline
+}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/zugferd/zugferd.sty b/Master/texmf-dist/tex/latex/zugferd/zugferd.sty
new file mode 100644
index 00000000000..9875f9f30b7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/zugferd/zugferd.sty
@@ -0,0 +1,1234 @@
+%%
+%% This is file `zugferd.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% zugferd.dtx (with options: `package')
+%%
+%% Copyright (C) 2023--2024 by Marei Peischl (peiTeX) <marei@peitex.de>
+%%
+\NeedsTeXFormat{LaTeX2e}[2023-11-01]
+\ProvidesExplPackage{zugferd}{2024-11-07}{0.9a}{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
+\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}
+},
+format .choice:,
+format / xrechnung3.0 .code:n = {
+\str_gset:Nx \g__zugferd_format_str {
+urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+}
+\str_gset:Nx \g__zugferd_businessProcessId_str {
+urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+}
+\keys_set:nn {zugferd}{xrechnung}
+},
+format / xrechnung2.3 .code:n = {
+\str_gset:Nx \g__zugferd_format_str {
+urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.3
+}
+\keys_set:nn {zugferd}{xrechnung}
+},
+format / basic .code:n = {
+\str_gset:Nx \g__zugferd_format_str {
+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}
+},
+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}
+},
+format / xrechnung .meta:n = { format = xrechnung3.0 },
+format .initial:n = xrechnung,
+format .usage:n = load,
+write-xml .bool_gset:N = \g__zugferd_write_xml_bool,
+write-xml .initial:n = true,
+write-xml .usage:n = load,
+zugferd .bool_gset:N = \g__zugferd_active_bool,
+zugferd .initial:n = true,
+zugferd .default:n = true,
+zugferd .usage:n = load,
+ZUGFerD .meta:n = {zugferd = #1},
+xml-file .tl_gset:N = \g__zugferd_xml_file_tl,
+xml-file .initial:n = \jobname _zugferd.xml,
+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,
+}
+\char_set_catcode_parameter:N \#%
+
+\ProcessKeyOptions[zugferd]
+\iow_new:N \__zugferd_xml_writer_iow
+\bool_if:NT \g__zugferd_active_bool {
+\cs_if_exist:NF \pdfmeta_xmp_xmlns_new:nn {
+\msg_new:nnnn {zugferd} {PDFmanagement-not-active} {
+The~\LaTeX~PDF~management~is~not~active.\\
+Activate~it~using~\string\DocumentMetadata.
+} {
+See~ZUGFeRD~or~PDFmanagement~documentation~for~more~information.
+}
+\msg_error:nn {zugferd} {PDFmanagement-not-active}
+}
+\IfPackageAtLeastF{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
+}
+
+\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
+ {fx}
+ {DocumentFileName}
+ {Text}
+ {external}
+ {name~of~the~embedded~XML~invoice~file}
+
+\pdfmeta_xmp_property_new:nnnnn
+ {fx}
+ {DocumentType}
+ {Text}
+ {external}
+ {INVOICE}
+
+\pdfmeta_xmp_property_new:nnnnn
+ {fx}
+ {Version}
+ {Text}
+ {external}
+ {The~actual~version~of~the~factur-x~schema}
+
+\pdfmeta_xmp_property_new:nnnnn
+ {fx}
+ {ConformanceLevel}
+ {Text}
+ {external}
+ {The~conformance~level~of~the~factur-x~data}
+
+\exp_args:Ne \pdfmeta_xmp_add:n {
+<fx:DocumentType>INVOICE</fx:DocumentType>\iow_newline:
+<fx:DocumentFileName>factur-x.xml</fx:DocumentFileName>\iow_newline:
+<fx:Version>1.0</fx:Version>\iow_newline:
+<fx:ConformanceLevel>\g__zugferd_conformance_level_str</fx:ConformanceLevel>%
+\iow_newline:
+}
+}
+\NewDocumentCommand{\SetZUGFeRDData}{sm}{
+\IfBooleanTF{#1}
+{\keys_set:ne}
+{\keys_set:nn}
+{zugferd} {#2}
+}
+\let\SetZugferdData\SetZUGFeRDData
+\NewDocumentCommand{\InsertZUGFeRDData}{om}{
+\str_case:nnF {#1} {
+{AddressData} {
+\clist_map_inline:nn {name, lineone, linetwo} {
+\prop_if_in:cnT {g__zugferd_#2_AddressData_prop } {##1} {
+\prop_item:cn {g__zugferd_#2_AddressData_prop } {##1}\\
+}
+}
+\prop_item:cn {g__zugferd_#2_AddressData_prop } {postcode}
+\space
+\prop_item:cn {g__zugferd_#2_AddressData_prop } {city}
+}
+{set-today} {
+\__zugferd_set_today:v {g__zugferd_#2_tl}
+}
+} {
+\str_set:Ne \l_tmpa_str {#2}
+\str_replace_all:Nnn \l_tmpa_str {-} {_}
+\str_replace_all:Nnn \l_tmpa_str {/} {_}
+\bool_set_true:N \g_tmpa_bool
+\clist_map_inline:nn {tl, str} {
+\clist_map_inline:nn {g, l} {
+\use:c {##1 _if_exist:cT} {####1__zugferd_ \l_tmpa_str _##1}
+{
+\use:c {####1__zugferd_ \l_tmpa_str _##1}
+\bool_gset_false:N \g_tmpa_bool
+}
+\bool_if:NF \g_tmpa_bool {\clist_map_break:}
+}
+\bool_if:NF \g_tmpa_bool {\clist_map_break:}
+}
+}
+}
+\providecommand{\InsertZugferdData}{\InsertZUGFeRDData}
+\providecommand{\insertZugferdData}{\InsertZUGFeRDData}
+\cs_new:Nn \__zugferd_set_today:n {
+\__zugferd_set_today_aux:w #1 \q_stop
+}
+\cs_generate_variant:Nn \__zugferd_set_today:n {v}
+\cs_new:Npn \__zugferd_set_today_aux:w #1 #2 #3 #4 #5 #6 #7 #8 \q_stop{
+\int_set:Nn \year {#1#2#3#4}
+\int_set:Nn \month {#5#6}
+\int_set:Nn \day {#7#8}
+}
+\NewDocumentEnvironment{ZUGFeRD}{o}{
+\IfNoValueF{#1}{
+\SetZUGFeRDData{#1}
+}
+\zugferd_enable_XML_interfaces:
+\startWritingZUGFeRDxml
+\zugferd_write_Header:
+\ignorespaces
+}{
+\zugferd_enable_XML_interfaces:
+\zugferd_write_Footer:
+\stopWritingZUGFeRDxml
+\zugferd_disable_XML_interfaces:
+}
+\newcommand*{\startWritingZUGFeRDxml}{
+\begingroup
+\bool_if:NTF \g__zugferd_write_xml_bool {
+\char_set_active_eq:nN {13} \__zugferd_xml_newline_indent:
+\iow_open:Nn \__zugferd_xml_writer_iow {\g__zugferd_xml_file_tl}
+}{
+\msg_info:nn {zugferd} {no-xml-write}
+}
+}
+\msg_new:nnn {zugferd} {no-xml-write} {
+The~option~write-xml=false~was~set.\\
+Writing~of~XML~file~is~deactivated.
+}
+%% The metadata elements are taken by Ulrike Fischer's faktur-x experiments
+%% https://github.com/latex3/pdfresources/tree/main/experiments/factur-x-bills
+\newcommand*{\stopWritingZUGFeRDxml}{%
+\bool_if:NT \g__zugferd_write_xml_bool
+{\iow_close:N \__zugferd_xml_writer_iow}%
+\endgroup
+\bool_if:NT \g__zugferd_active_bool {
+\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}
+{zugferd/rechnung}
+\group_end:
+\pdfmanagement_add:nnx
+{Catalog/Names}
+{EmbeddedFiles}
+{\pdf_object_ref:n{zugferd/rechnung}}
+\pdfmanagement_add:nnx{Catalog}{AF}{\pdf_object_ref:n{zugferd/rechnung}}
+}
+}
+%% 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: {
+\__zugferd_insert_Header:
+\__zugferd_insert_FrontMatter:
+}
+\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:
+\__zugferd_SpecifiedTradeSettlementPaymentMeans:
+}
+\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
+{##1} {##2} {##3} {##4} {##5} {##6} {##7} {##8}
+}
+}
+}
+\cs_new:Nn \zugferd_disable_XML_interfaces: {
+\cs_gset_eq:NN \zugferd_write_Header: \prg_do_nothing:
+\cs_gset_eq:NN \zugferd_write_Footer: \prg_do_nothing:
+\cs_gset_eq:NN \zugferd_write_Item:nnnnnn \use_none:nnnnnn
+\cs_gset_eq:NN \zugferd_startInvoiceSums: \prg_do_nothing:
+\cs_gset_eq:NN \zugferd_stopInvoiceSums: \prg_do_nothing:
+\cs_gset_eq:NN \zugferd_write_TaxEntry:nnnn \use_none:nnnn
+\cs_gset_eq:NN \zugferd_write_Summation:nnnnnnnn \use_none:nnnnnnnn
+}
+\bool_if:NTF \g__zugferd_write_xml_bool {
+\zugferd_enable_XML_interfaces:
+}{
+\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}
+\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}
+}
+\cs_new_eq:NN \__zugferd_define_xml_writer:Nn \cs_new:Nn
+\cs_new_eq:NN \__zugferd_define_xml_content:Nn \cs_new:Nn
+} {
+\cs_set_eq:NN \__zugferd_write_xml:n \use_none:n
+\cs_set:Nn \__zugferd_define_xml_writer:Nn {\cs_new:Nn #1 {}}
+\cs_set:Nn \__zugferd_define_xml_content:Nn {\cs_new:Nn #1 {}}
+}
+
+\cs_generate_variant:Nn \__zugferd_write_xml:n {e}
+\RequirePackage{siunitx}
+\cs_new:Nn \__zugferd_number_format:nNn {
+\sisetup{
+parse-numbers=true,
+round-mode=places,
+round-precision=#1,
+round-pad = false,
+group-digits=false,
+minimum-decimal-digits=#1,
+output-decimal-marker=.
+}
+\siunitx_number_format:nN {#3} #2
+}
+\cs_generate_variant:Nn \__zugferd_number_format:nNn {nNe}
+\cs_new:Nn \__zugferd_write_rounded:nnnn {
+\__zugferd_number_format:nNe {#1} \l__zugferd_tmp_tl {#4}
+\__zugferd_write_xml:e {<ram:#2#3>\l__zugferd_tmp_tl</ram:#2>}
+}
+\cs_new:Nn \__zugferd_write_rounded:nnn {
+\__zugferd_write_rounded:nnnn {#1} {#2} {} {#3}
+}
+\int_new:N \g__zugferd_indent_int
+\cs_new:Nn \__zugferd_indent: {
+\space\space
+}
+\cs_new:Nn \__zugferd_indent:n {
+\prg_replicate:nn {#1} {\__zugferd_indent:}
+}
+\cs_new:Nn \__zugferd_xml_auto_indent: {
+\__zugferd_indent:n {\g__zugferd_indent_int}
+}
+\cs_new:Nn \__zugferd_xml_newline_indent: {
+\iow_newline: \__zugferd_xml_auto_indent:
+}
+\cctab_new:N \g__zugferd_xml_cctab
+\begingroup%
+\endlinechar=13%
+\char_set_catcode:nn {13}{13}%
+\cctab_gsave_current:N \g__zugferd_xml_cctab%
+\endgroup
+%% modified list taken from hyperref.sty v7.01i
+%% Copyright
+%% 1995-2001 Sebastian Rahtz, with portions written by David Carlisle and Heiko Oberdiek
+%% 2001-2015 Heiko Oberdiek
+%% 2016-2019 Oberdiek Package Support Group
+%% 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
+\def\\{\space}%
+\def\newline{\space}%
+\def\TeX{TeX}%
+\def\LaTeX{La\TeX}%
+\def\LaTeXe{\LaTeX2e}%
+\def\eTeX{e-\TeX}%
+\def\SliTeX{Sli\TeX}%
+\def\MF{Metafont}%
+\def\MP{Metapost}%
+\let\fontencoding\@gobble
+\let\fontfamily\@gobble
+\let\fontseries\@gobble
+\let\fontshape\@gobble
+\let\fontsize\@gobbletwo
+\let\selectfont\@empty
+\let\usefont\@gobblefour
+\let\emph\@firstofone
+\let\textnormal\@firstofone
+\let\textrm\@firstofone
+\let\textsf\@firstofone
+\let\texttt\@firstofone
+\let\textbf\@firstofone
+\let\textmd\@firstofone
+\let\textit\@firstofone
+\let\textsc\@firstofone
+\let\textsl\@firstofone
+\let\textup\@firstofone
+\let\normalfont\@empty
+\let\rmfamily\@empty
+\let\sffamily\@empty
+\let\ttfamily\@empty
+\let\bfseries\@empty
+\let\mdseries\@empty
+\let\itshape\@empty
+\let\scshape\@empty
+\let\slshape\@empty
+\let\upshape\@empty
+\let\em\@empty
+\let\rm\@empty
+\let\Huge\@empty
+\let\LARGE\@empty
+\let\Large\@empty
+\let\footnotesize\@empty
+\let\huge\@empty
+\let\large\@empty
+\let\normalsize\@empty
+\let\scriptsize\@empty
+\let\small\@empty
+\let\tiny\@empty
+\let\mathversion\@gobble
+\let\phantom\@gobble
+\let\vphantom\@gobble
+\let\hphantom\@gobble
+\let\ding\HyPsd@ding
+\let\Cube\HyPsd@DieFace
+\def\begin##1{\csname##1\endcsname}%
+\def\end##1{\csname end##1\endcsname}%
+\def\textcolor##1##{\@secondoftwo}%
+\def\TextOrMath{\ifmmode\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
+\let\foreignlanguage\@secondoftwo
+\let\textlatin\@firstofone
+\let\cyr\relax
+\let\glqq\textglqq
+\let\grqq\textgrqq
+\let\glq\textglq
+\let\grq\textgrq
+\let\flqq\textflqq
+\let\frqq\textfrqq
+\let\flq\textflq
+\let\frq\textfrq
+\let\if@mid@expandable\@firstoftwo
+\let\hspace\@gobble
+\let\label\@gobble
+\let\index\@gobble
+\let\glossary\@gobble
+\let\@mkboth\@gobbletwo
+\let\leavevmode\@empty
+\let\mbox\@empty
+\def\halign{\@gobble}%
+\let\Hy@SectionAnchorHref\@gobble
+\let\ref\@gobble
+\let\href\@gobble
+\let\pageref\@gobble
+\let\nameref\@gobble
+\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}
+\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
+\tl_new:N \g__zugferd_delivery_date_tl
+\tl_new:N \g__zugferd_subject_tl
+\tl_new:N \g__zugferd_fromaddress_tl
+\tl_new:N \g__zugferd_DocumentTypeCode_tl
+\tl_new:N \l__zugferd_currency_tl
+\keys_define:nn { zugferd } {
+document-type .choice:,
+document-type / commercial-invoice .code:n =
+\tl_gset:Nn \g__zugferd_DocumentTypeCode_tl {380},
+document-type .initial:n = commercial-invoice,
+id .choice:,
+id / komavar .code:n = \tl_gset:Nf \g__zugferd_id_tl {\scr@invoice@var},
+id / unknown .code:n = \tl_gset:Nn \g__zugferd_id_tl {#1},
+currency .choices:nn = {EUR, USD, CHF} {
+\tl_set_eq:NN \l__zugferd_currency_tl \l_keys_choice_tl
+},
+currency / € .meta:n = {currency = EUR},
+currency / unknown .code:n = {
+\exp_args:Nnnx \keys_if_choice_exist:nnnTF {zugferd} {unit} {
+\str_uppercase:f {#1}
+}
+{\keys_set:nx { zugferd } {unit= {\str_uppercase:f {#1}}}}
+{
+\msg_warning:nnn { zugferd } {unknown-value} {currency} {#1}
+\tl_set:Ne \l__zugferd_currency_tl {\str_uppercase:f {#1}}
+}
+},
+currency .initial:n = EUR,
+date .choice:,
+date / auto .code:n = \tl_gset:Ne \g__zugferd_date_tl {
+\the\year
+\int_compare:nNnT {\month} < {10} {0} \the\month
+\int_compare:nNnT {\day} < {10} {0}\the\day
+},
+date / unknown .code:n = \tl_gset:Nn \g__zugferd_date_tl {#1},
+date .initial:n = auto,
+delivery-date .choice:,
+delivery-date / auto .code:n = \tl_gset:Ne \g__zugferd_delivery_date_tl {
+\the\year
+\int_compare:nNnT {\month} < {10} {0} \the\month
+\int_compare:nNnT {\day} < {10} {0}\the\day
+},
+delivery-date / unknown .code:n = {
+\tl_gset:Nn \g__zugferd_delivery_date_tl {#1}
+},
+delivery-date .initial:n = auto,
+due-date .tl_gset:N = \g__zugferd_due_date_tl,
+due-date .initial:n =,
+payment-terms .str_gset:N = \g__zugferd_payment_terms_str,
+payment-terms .initial:n =,
+subject .choice:,
+subject / komavar .code:n = {
+\tl_gset:Nf \g__zugferd_subject_tl {\scr@subject@var}
+},
+subject / unknown .code:n = \tl_gset:Nn \g__zugferd_subject_tl {#1},
+fromaddress .choice:,
+fromaddress / komavar .code:n = \tl_gset:Nf \g__zugferd_fromaddress_tl
+{\scr@fromaddress@var},
+fromaddress / unknown .code:n = \tl_gset:Nn \g__zugferd_fromaddress_tl {#1},
+add-note .code:n = \seq_gput_right:Nn \g__zugferd_notes_seq {#1},
+}
+\msg_new:nnnn {zugferd} {unknown-value} {
+You~selected~a~#1~which~was~not~predefined.\\
+I~will~directly~use~your~selection~'#1=#2'.
+Please~ensure~the~selection~is~valid!
+} {
+For~more~information~see~the~zugferd~documentation.
+}
+\cs_new:Nn \__zugferd_note_if_not_empty:N {%
+\tl_if_empty:NF #1 {%
+\__zugferd_write_note:n {#1}%
+}%
+}%
+\clist_map_inline:nn {seller,buyer,shipto} {
+\prop_new:c {g__zugferd_#1_AddressData_prop}
+\keys_define:nn {zugferd / #1} {
+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}
+}
+},
+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}
+}
+}{
+\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}
+}
+}
+},
+unknown .code:n = \tl_if_blank:nF {##1} {
+\prop_gput:cVe {g__zugferd_#1_AddressData_prop}
+\l_keys_key_tl {\tl_trim_spaces:n {##1}}
+}
+}
+}
+\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
+{\prop_item:Nn #1 {postcode}}
+{\prop_item:Nn #1 {lineone}}
+{\prop_item:Nn #1 {linetwo}}
+{\prop_item:Nn #1 {city}}
+{\prop_item:Nn #1 {country}}
+}
+\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 {city}}
+{\prop_item:Nn #1 {country}}
+{\prop_item:Nn #1 {email}}
+{\prop_item:Nn #1 {vatid}}
+}%
+\cs_new:Nn \__zugferd_DefinedTradeContact:N {%
+\__zugferd_DefinedTradeContact:eeee
+{\prop_item:Nn #1 {contact-name}}
+{\prop_item:Nn #1 {contact-department}}
+{\prop_item:Nn #1 {contact-phone}}
+{\prop_item:Nn #1 {contact-email}}
+}%
+\cctab_begin:N \g__zugferd_xml_cctab%
+\__zugferd_define_xml_content:Nn \__zugferd_PostalTradeAddress:nnnnn {%
+<ram:PostalTradeAddress>
+\bool_if:NF \g__zugferd_minimum_bool {%
+\__zugferd_indent: <ram:PostcodeCode>#1</ram:PostcodeCode>
+\tl_if_blank:nF {#2} {%
+\__zugferd_indent: <ram:LineOne>#2</ram:LineOne>
+}%
+\tl_if_blank:nF {#3} {%
+\__zugferd_indent: <ram:LineTwo>#3</ram:LineTwo>
+}%
+\__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}%
+\bool_lazy_or:nnF {\g__zugferd_minimum_bool}%
+{\tl_if_blank_p:n {#6}}%
+{%
+\__zugferd_xml_newline_indent:%
+<ram:URIUniversalCommunication>
+\__zugferd_indent: <ram:URIID~schemeID="EM">#6</ram:URIID>
+</ram:URIUniversalCommunication>%
+}%
+\tl_if_empty:nF {#7} {
+<ram:SpecifiedTaxRegistration>
+\__zugferd_indent: <ram:ID~schemeID="VA">#7</ram:ID>
+</ram:SpecifiedTaxRegistration>%
+}%
+}%
+\__zugferd_define_xml_content:Nn \__zugferd_DefinedTradeContact:nnnn {%
+\tl_if_blank:nT {#1} {\use_none:nnn} %
+\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>
+}%
+</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>
+}
+}%
+\__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_DefinedTradeContact:N \g__zugferd_seller_AddressData_prop%
+\__zugferd_PostalTradeAddress:N \g__zugferd_seller_AddressData_prop%
+}%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:e {%
+</ram:SellerTradeParty>
+<ram:BuyerTradeParty>%
+}%
+\int_gincr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:e {%
+<ram:Name>\prop_item:Nn \g__zugferd_buyer_AddressData_prop {name}</ram:Name>%
+\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>}%
+\int_gdecr:N \g__zugferd_indent_int%
+\__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}%
+{\tl_if_blank_p:n {#1}}%
+{%
+\__zugferd_write_xml:n {<ram:ApplicableHeaderTradeDelivery>}%
+\prop_if_empty:NF \g__zugferd_shipto_AddressData_prop {%
+\int_gincr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {<ram:ShipToTradeParty>}%
+\int_gincr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:e {%
+\__zugferd_PostalTradeAddress_short:N \g__zugferd_shipto_AddressData_prop%
+}%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {</ram:ShipToTradeParty>}%
+\int_gdecr:N \g__zugferd_indent_int%
+}%
+\tl_if_blank:nF {#1} {%
+\__zugferd_write_xml:n {%
+\__zugferd_indent: <ram:ActualDeliverySupplyChainEvent>
+\__zugferd_indent:n {2} <ram:OccurrenceDateTime>
+\__zugferd_indent:n {3}<udt:DateTimeString~format="102">#1</udt:DateTimeString>
+\__zugferd_indent:n {2} </ram:OccurrenceDateTime>
+\__zugferd_indent: </ram:ActualDeliverySupplyChainEvent>%
+}%
+}%
+\__zugferd_write_xml:n {</ram:ApplicableHeaderTradeDelivery>}%
+}%
+}%
+\cctab_end:
+\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
+\keys_define:nn {zugferd/buyer} {
+reference .choice:,
+reference / komavar .code:n = {
+\tl_gset:Nf \g__zugferd_buyer_reference_tl {\scr@yourref@var}
+},
+reference / unknown .code:n = {
+\tl_gset:Nn \g__zugferd_buyer_reference_tl {#1}
+}
+}
+\ExplSyntaxOff
+\providecommand*{\zugferd@paymentMeans@german}{
+ 1 = Keine Zahlungsart definiert,
+10 = Bargeld,
+30 = Überweisung,
+42 = Zahlung an Bankkonto,
+48 = Kartenzahlung,
+49 = Lastschriftverfahren,
+57 = Dauerauftrag,
+58 = Zahlung per SEPA Überweisung.,
+59 = SEPA Lastschrift,
+97 = Ausgleich zwischen Partnern
+}
+\def\zugferd@paymentMeans@ngerman{\zugferd@paymentMeans@german}
+\providecommand*{\zugferd@paymentMeans@english}{
+ 1 = Instrument not defined,
+10 = In cash,
+30 = Credit Transfer,
+31 = Debit Transfer,
+42 = Payment to bank account,
+48 = Bank card,
+49 = Direct Debit,
+57 = Standing agreement,
+58 = SEPA credit transfer,
+59 = SEPA direct debit,
+97 = Clearing between partners
+}
+\ExplSyntaxOn
+\tl_new:N \g__zugferd_payment_means_tl
+\keys_define:nn {zugferd} {
+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 = {
+\msg_warning:nnn { zugferd } {unknown-value} {payment-means} {#1}
+\tl_gset:Nn \g__zugferd_payment_means_tl {\int_eval:n {#1}}
+}
+}
+
+\clist_map_inline:nn {iban,account-holder,bic} {
+\keys_define:nn {zugferd/payment-means} {
+#1 .tl_gset:c = {g__zugferd_payment_#1_tl}
+}
+}
+
+\prop_new:c {g__zugferd_payment-means_names_prop}
+\newcommand*{\setupZUGFeRDStrings}[2]{
+\prop_gset_from_keyval:cn {g__zugferd_#1_names_prop} {
+#2
+}
+}
+
+\hook_gput_code:nnn {begindocument/end}{zugferd/payment-means}{
+\prop_if_empty:cT {g__zugferd_payment-means_names_prop} {
+\exp_args:Nne \setupZUGFeRDStrings{payment-means}{
+\use:c {zugferd@paymentMeans@
+\cs_if_exist:cTF {zugferd@paymentMeans@\languagename} {\languagename} {english}
+}
+}
+}
+}
+\keys_define:nn { zugferd } {
+unit .choices:nn = {HUR,DAY,C62,H87} {
+\tl_set_eq:NN \l__zugferd_unit_code_tl \l_keys_choice_tl
+},
+unit / hour .meta:n = {unit=HUR},
+unit / day .meta:n = {unit=DAY},
+unit / one .meta:n= {unit= C62},
+unit / piece .meta:n = {unit=H87},
+unit / unknown .code:n = {
+\tl_set:Nx \l_tmpa_tl {\str_uppercase:f {#1}}
+\exp_args:NnnV \keys_if_choice_exist:nnnTF {zugferd} {unit}
+\l_tmpa_tl
+{
+\keys_set:ne { zugferd } {unit= {\l_tmpa_tl}}
+} {
+\msg_warning:nnn { zugferd } {unknown-unit} {#1}
+\tl_set_eq:NN \l__zugferd_unit_code_tl \l_tmpa_tl
+}
+},
+unit .usage:n = general,
+}
+
+\msg_new:nnnn {zugferd} {unknown-unit} {
+You~selected~a~unit~which~was~not~predefined.\\
+I~~will~directly~use~your~selection~'unit=#1'~as~Common~Code.
+Please~ensure~the~selection~is~valid!
+} {
+For~more~information~see~the~zugferd~documentation\\
+and~the~/UN/CEFACT~Common~Code~list.
+}
+\msg_new:nnnn {zugferd} {unknown-tax-category} {
+You~selected~an~unknown~tax~category.\\
+I~~will~directly~use~your~selection~'category=#1'~as~Code.\\
+Please~ensure~the~selection~is~valid!
+} {
+For~more~information~see~the~zugferd~documentation\\
+and~the~corresponding~code~list.
+}
+\msg_new:nnnn {zugferd} {no-auto-exemption} {
+You~selected~tax/category=#1~together~with~the~auto-exemption~option.\\
+I~don't~have~any~pre-configured~exemption~setting~for~category=#1.\\
+Please~make~sure~you~add~a~valid~setting~yourself.
+} {
+For~more~information~see~the~zugferd~documentation.
+}
+\keys_define:nn { zugferd / tax } {
+category .choices:nn = {S,Z,E,AE,K,G,O,L,M} {
+\tl_set_eq:NN \l__zugferd_tax_category_code_tl \l_keys_choice_tl
+\bool_if:NT \g__zugferd_auto_exemption_bool {
+\keys_if_choice_exist:nnnTF {zugferd/tax} {exemption-reason-auto} {#1} {
+\keys_set:nn {zugferd/tax} {exemption-reason-auto=#1}
+} {
+\msg_warning:nnn { zugferd } {no-auto-exemption} {#1}
+}
+}
+},
+exemption-reason .tl_set:N = \l__zugferd_tax_exemption_reason_tl,
+exemption-reason .initial:V = \c_empty_tl,
+exemption-reason .usage:n = general,
+exemption-reason-code .tl_set:N = \l__zugferd_tax_exemption_code_tl,
+exemption-reason-code .initial:V = \c_empty_tl,
+exemption-reason .usage:n = general,
+exemption-reason-auto .choice:,
+exemption-reason-auto / S .code:n = {
+\keys_set:nn {zugferd/tax} {exemption-reason=,exemption-reason-code=}
+},
+exemption-reason-auto / K .code:n = {
+\keys_set:nn {zugferd/tax} {
+exemption-reason= Intra-Community~Supply,
+exemption-reason-code={vatex-eu-ic}
+}
+},
+exemption-reason-auto / AE .code:n = {
+\keys_set:nn {zugferd/tax}{
+exemption-reason=Reverse~Charge,
+exemption-reason-code={vatex-eu-ae}
+}
+},
+exemption-reason-auto / G .code:n = {
+\keys_set:nn {zugferd/tax}{
+exemption-reason=Export~outside~the~EU,
+exemption-reason-code={vatex-eu-g}
+}
+},
+exemption-reason-auto / O .code:n = {
+\keys_set:nn {zugferd/tax}{
+exemption-reason=No~subject~to~VAT,
+exemption-reason-code={vatex-eu-o}
+}
+},
+standard .meta:n = {category=S},
+zero .meta:n = {category=Z},
+exempt .meta:n = {category=E},
+reverse-charge .meta:n = {category=AE},
+intra-community .meta:n = {category=K},
+EEA .meta:n = {category=K},
+export .meta:n = {category=G},
+canary-islands .meta:n = {category=L},
+ceuta .meta:n = {category=M},
+melilla .meta:n = {category=M},
+category / unknown .code:n = {
+\exp_args:Nnnx \keys_if_choice_exist:nnnTF {zugferd} {category}
+{\str_uppercase:f {#1}}
+{
+\keys_set:nx { zugferd } {category= {\str_uppercase:f {#1}}}
+} {
+\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
+}%
+\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_writer:Nn \__zugferd_write_inline:nn {
+\tl_if_blank:nF {#2} {
+<#1>#2</#1>
+}
+}
+\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}
+}
+\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:%
+\__zugferd_write_xml:e {%
+<ram:IncludedNote>
+\__zugferd_indent: <ram:Content>
+#1
+\__zugferd_indent: </ram:Content>
+</ram:IncludedNote>%
+}%
+\endgroup%
+}%
+}%
+\begingroup%
+\char_set_catcode_other:N \#%
+\char_set_catcode:nn {32}{10}%
+\__zugferd_define_xml_writer:Nn \__zugferd_insert_Header: {%
+\__zugferd_write_xml:e {%
+<?xml version='1.0' encoding='UTF-8' ?>
+<rsm:CrossIndustryInvoice %
+xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" %
+xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" %
+xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" %
+xmlns:xs="http://www.w3.org/2001/XMLSchema" %
+xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">%
+}%
+\int_gincr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {<rsm:ExchangedDocumentContext>}%
+\int_gincr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:e {%
+\str_if_empty:NF \g__zugferd_businessProcessId_str {%
+<ram:BusinessProcessSpecifiedDocumentContextParameter>
+\__zugferd_indent: <ram:ID>\g__zugferd_businessProcessId_str</ram:ID>
+</ram:BusinessProcessSpecifiedDocumentContextParameter>
+}%
+<ram:GuidelineSpecifiedDocumentContextParameter>
+\__zugferd_indent: <ram:ID>\g__zugferd_format_str</ram:ID>
+</ram:GuidelineSpecifiedDocumentContextParameter>%
+}%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {</rsm:ExchangedDocumentContext>}%
+}%
+\endgroup%
+\__zugferd_define_xml_writer:Nn \__zugferd_insert_FrontMatter: {%
+\__zugferd_write_xml:n {<rsm:ExchangedDocument>}%
+\int_gincr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:e {%
+<ram:ID>\g__zugferd_id_tl</ram:ID>
+<ram:TypeCode>\g__zugferd_DocumentTypeCode_tl</ram:TypeCode>
+<ram:IssueDateTime>
+\__zugferd_indent:<udt:DateTimeString~format="102">\g__zugferd_date_tl</udt:DateTimeString>
+</ram:IssueDateTime>%
+}%
+\__zugferd_note_if_not_empty:N \g__zugferd_subject_tl%
+\__zugferd_note_if_not_empty:N \g__zugferd_fromaddress_tl%
+\seq_map_inline:Nn \g__zugferd_notes_seq {%
+\__zugferd_write_note:n {##1}%
+}%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:e {%
+</rsm:ExchangedDocument>
+<rsm:SupplyChainTradeTransaction>%
+}%
+\int_gincr:N \g__zugferd_indent_int%
+}%
+\__zugferd_define_xml_writer:Nn \__zugferd_insert_Footer: {%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {</rsm:SupplyChainTradeTransaction>}%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {</rsm:CrossIndustryInvoice>}%
+}%
+\cctab_end:
+\cctab_begin:N \g__zugferd_xml_cctab%
+\__zugferd_define_xml_writer:Nn \__zugferd_AssociatedDocumentLineDocument:n {%
+<ram:AssociatedDocumentLineDocument>
+\__zugferd_indent: <ram:LineID>#1</ram:LineID>
+</ram:AssociatedDocumentLineDocument>%
+}%
+\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedTradeProduct:nn {%
+<ram:SpecifiedTradeProduct>
+\tl_if_empty:nF {#1} {%
+\__zugferd_indent: <ram:SellerAssignedID>#1</ram:SellerAssignedID>
+}%
+\__zugferd_indent: <ram:Name>#2</ram:Name>
+</ram:SpecifiedTradeProduct>%
+}%
+\__zugferd_define_xml_writer:Nn \__zugferd_ProductTradePrice:nn {%
+<ram:\str_uppercase:n #1PriceProductTradePrice>
+\__zugferd_indent: <ram:ChargeAmount>#2</ram:ChargeAmount>
+</ram:\str_uppercase:n #1PriceProductTradePrice>%
+}%
+\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedLineTradeAgreement:nn {%
+<ram:SpecifiedLineTradeAgreement>
+\__zugferd_indent:<ram:GrossPriceProductTradePrice>
+\__zugferd_indent:n {2} <ram:ChargeAmount>#1</ram:ChargeAmount>
+\__zugferd_indent:</ram:GrossPriceProductTradePrice>
+\__zugferd_indent:<ram:NetPriceProductTradePrice>
+\__zugferd_indent:n {2} <ram:ChargeAmount>#2</ram:ChargeAmount>
+\__zugferd_indent:</ram:NetPriceProductTradePrice>
+</ram:SpecifiedLineTradeAgreement>
+}%
+%%%\subsubsection{SpecifiedLineTradeDelivery}%:nn <unit code > <number>
+\__zugferd_define_xml_content:Nn \__zugferd_SpecifiedLineTradeDelivery:nn {%
+<ram:SpecifiedLineTradeDelivery>
+\__zugferd_indent: <ram:BilledQuantity~unitCode="#1">#2</ram:BilledQuantity>
+</ram:SpecifiedLineTradeDelivery>
+}%
+\__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 }
+{ \__zugferd_SpecifiedLineTradeSettlement:nnn }
+\__zugferd_SpecifiedLineTradeSettlement:nnn {#2} {#3} {#4}
+}
+\cs_generate_variant:Nn \__zugferd_SpecifiedLineTradeSettlement:nnnn {VVnn}
+\__zugferd_define_xml_writer:Nn \__zugferd_insert_TradeLineItem:nnnnnn {
+\__zugferd_write_xml:n {<ram:IncludedSupplyChainTradeLineItem>}
+\int_gincr:N \g__zugferd_indent_int
+\__zugferd_write_xml:e {\__zugferd_AssociatedDocumentLineDocument:n {#1}}%
+
+\begingroup
+\zugferd_disable_macros:
+\__zugferd_write_xml:e {\__zugferd_SpecifiedTradeProduct:nn {#2} {#3}}
+\endgroup
+
+\__zugferd_write_xml:n {<ram:SpecifiedLineTradeAgreement>}
+\int_gincr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:e {\__zugferd_ProductTradePrice:nn {net} {#4}}
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {</ram:SpecifiedLineTradeAgreement>}
+\__zugferd_write_xml:e {%
+\__zugferd_SpecifiedLineTradeDelivery:nn { \l__zugferd_unit_code_tl } {#5}
+}%
+\__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>}%
+}%
+\__zugferd_define_xml_writer:Nn \__zugferd_ApplicableTradeTax:nnnn {%
+\__zugferd_write_xml:n {<ram:ApplicableTradeTax>}
+\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
+\tl_if_blank:VF \l__zugferd_tax_exemption_reason_tl {%BT-120
+\__zugferd_write_xml:e {<ram:ExemptionReason>
+\l__zugferd_tax_exemption_reason_tl
+</ram:ExemptionReason>}
+}
+{{\__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>}
+}
+\__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%
+\__zugferd_write_xml:e {<ram:InvoiceCurrencyCode>\l__zugferd_currency_tl</ram:InvoiceCurrencyCode>}%
+}%
+\__zugferd_define_xml_writer:Nn \__zugferd_ApplicableHeaderTradeSettlement_stop: {%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {</ram:ApplicableHeaderTradeSettlement>}%
+}%
+\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedTradePaymentTerms:nn {%
+\__zugferd_write_xml:n {<ram:SpecifiedTradePaymentTerms>}%
+\int_gincr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:e {%
+\tl_if_blank:nF {#1} {%
+<ram:Description>#1</ram:Description>%
+}%
+\tl_if_blank:nF {#2} {%
+<ram:DueDateDateTime>
+\__zugferd_indent: <udt:DateTimeString~format="102">#2</udt:DateTimeString>
+</ram:DueDateDateTime>%
+}%
+}%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {</ram:SpecifiedTradePaymentTerms>}%
+}%
+\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedTradeSettlementPaymentMeans:nnn {%
+\bool_if:NT \g__zugferd_writePaymentMeans_bool {%
+\__zugferd_write_xml:n {<ram:SpecifiedTradeSettlementPaymentMeans>}%
+\int_gincr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:e {%
+<ram:TypeCode>\g__zugferd_payment_means_tl</ram:TypeCode>
+\__zugferd_write_inline:ne {ram:Information} {\prop_item:cV {g__zugferd_payment-means_names_prop} \g__zugferd_payment_means_tl}%
+\tl_if_blank:nF {#1#2} {%
+<ram:PayeePartyCreditorFinancialAccount>
+\__zugferd_write_inline_i:nn {ram:IBANID} {#2}
+\__zugferd_write_inline_i:nn {ram:AccountName} {#1}
+</ram:PayeePartyCreditorFinancialAccount>
+}%
+\tl_if_blank:nF {#3} {%
+<ram:PayeeSpecifiedCreditorFinancialInstitution>
+\__zugferd_write_inline_i:nn {ram:BICID} {#3}
+</ram:PayeeSpecifiedCreditorFinancialInstitution>%
+}%
+}%
+\int_gdecr:N \g__zugferd_indent_int%
+\__zugferd_write_xml:n {</ram:SpecifiedTradeSettlementPaymentMeans>}%
+}%
+}%
+\cctab_end:
+\cs_generate_variant:Nn \__zugferd_SpecifiedTradePaymentTerms:nn {VV}
+\__zugferd_define_xml_writer:Nn \__zugferd_SpecifiedTradePaymentTerms: {
+\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: {
+\tl_if_blank:VF \g__zugferd_payment_means_tl {
+\__zugferd_SpecifiedTradeSettlementPaymentMeans:vvv
+{g__zugferd_payment_account-holder_tl} {g__zugferd_payment_iban_tl} {g__zugferd_payment_bic_tl}
+}
+}
+\msg_new:nnn {zugferd} {macro-deprecated} {
+The~function~#1~is~deprecated.\\
+It~was~replaced~by~#2.\\
+Please~adjust~your~mechanism~to~use~the~new~version.
+}
+\endinput
+%%
+%% End of file `zugferd.sty'.
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/domaincoloring/domaincoloring-complex-numbers.lua b/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring-complex-numbers.lua
new file mode 100644
index 00000000000..7630433984c
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring-complex-numbers.lua
@@ -0,0 +1,357 @@
+--Complex Number Library by xXxMoNkEyMaNxXx (_G.cmath)
+--[[
+In pure Lua, use:
+num=complex(re,im)
+or
+num=cx'6+2.5i'
+
+In LuaJIT:
+num=6+2.5i
+
+Functions and constants available in cmath:
+Constants
+-e=2.718281828459
+-i=sqrt(-1)
+-pi=math.pi
+
+Complex creation and extraction functions
+-complex(re,im) creates a complex number from real and imaginary components.
+-re(z) real part of z
+-im(z) imaginary part of z
+-arg(z) argument of z
+
+-abs(z) absolute value of z
+-sqrt(z) = z^0.5
+-pow(x,y) = x^y
+-exp(z) = e^z
+-ln(z) = e^? = z
+-log(b,z) = ln(z)/ln(b)
+
+Trig functions
+-sin(z)
+-cos(z)
+-tan(z)
+
+-sinh(z)
+-cosh(z)
+-tanh(z)
+
+-asin(z)
+-acos(z)
+-atan(z)
+-atan2(y,x)
+
+-asinh(z)
+-acosh(z)
+-atanh(z)
+
+Miscellaneous functions
+-polar(z) returns r,phi = cmath.abs(z),cmath.arg(z)
+-rect(r,phi) returns a complex number from polar = r*e^(i*phi)
+-diff(z) = re(z)^2-im(z)^2
+-zeta(z[,accuracy=1e4]) riemann zeta function
+-lintegrate(f,H,[L=0,n=sensible for H])
+-cx(string) creates a complex number from a string (e.g. "1.1-i" -> 1.1+-1i)
+-cx(re,im) = complex(re,im)
+
+]]
+
+local type=type
+local select=select
+local tonumber=tonumber
+local tostring=tostring
+local setmetatable=setmetatable
+
+e=math.exp(1)
+pi=math.pi
+abs=math.abs
+exp=math.exp
+log=math.log
+cos=math.cos
+sin=math.sin
+cosh=math.cosh
+sinh=math.sinh
+sqrt=math.sqrt
+atan2=math.atan2
+
+forget=1e-14--Forget ridiculously small values. Remove if you want to keep all values. (Not recommended for sanity, shouldn't make a difference in performance or output.)
+--The reason that this is here is because i^2 yields -1+0.0000000000000001i, and (-1)^0.5 yields 0.00000000000000006+i. (Should be just -1 and i)
+
+function istype(c)
+ local t=type(c)
+ return t=="table" and c.type or t
+end
+
+local complex_mt
+--Locally used and desirable functions--
+function re(n)
+ local t=type(n)
+ return t=="table" and (n.re or 0) or t=="number" and n or 0
+end
+
+function im(n)
+ return type(n)=="table" and n.im or 0
+end
+
+function complex(re,im)
+ if forget then
+ if re and abs(re)<=forget then
+ re=0
+ end
+ if im and abs(im)<=forget then
+ im=0
+ end
+ end
+ return setmetatable({re=re or 0,im=im or 0,type="complex"},complex_mt)
+end
+
+function rect(r,phi)--r*e^(i*phi) -> x+iy
+ return complex(r*cos(phi),r*sin(phi))
+end
+
+function arg(z)--Lol, no documentation
+ return atan2(im(z),re(z))
+end
+
+function ln(c)--Natural logarithm
+ local r1,i1=re(c),im(c)
+ return complex(log(r1^2+i1^2)/2,atan2(i1,r1))
+end
+
+-----------------------------------------
+
+--Complex number metatable--
+complex_mt={
+ __add=function(c1,c2)
+ return complex(re(c1)+re(c2),im(c1)+im(c2))
+ end,
+ __sub=function(c1,c2)
+ return complex(re(c1)-re(c2),im(c1)-im(c2))
+ end,
+ __mul=function(c1,c2)
+ local r1,i1,r2,i2=re(c1),im(c1),re(c2),im(c2)
+ return complex(r1*r2-i1*i2,r1*i2+r2*i1)
+ end,
+ __div=function(c1,c2)
+ local r1,i1,r2,i2=re(c1),im(c1),re(c2),im(c2)
+ local rsq=r2^2+i2^2
+ return complex((r1*r2+i1*i2)/rsq,(r2*i1-r1*i2)/rsq)
+ end,
+ __pow=function(c1,c2)--Aww ye
+ local r1,i1,r2,i2=re(c1),im(c1),re(c2),im(c2)
+ local rsq=r1^2+i1^2
+ if rsq==0 then--Things work better like this.
+ if r2==0 and i2==0 then
+ return 1
+ end
+ return 0
+ end
+ local phi=atan2(i1,r1)
+ return rect(rsq^(r2/2)*exp(-i2*phi),i2*log(rsq)/2+r2*phi)
+ end,
+ __unm=function(c)
+ return complex(-re(c),-im(c))
+ end,
+ __tostring=function(c)
+ local iChar = "i"
+ local r,i=re(c),im(c)
+ if i==0 then
+ return tostring(r).." +0"..iChar
+ elseif r==0 then
+ if i==1 then
+ return iChar
+ elseif i==-1 then
+ return "-"..iChar
+ end
+ return i..iChar
+ elseif i<0 then
+ if i==-1 then
+ return r.."-"..iChar
+ end
+ return r.." -"..-i..iChar
+ else
+ if i==1 then
+ return r.."+"..iChar
+ end
+ return r.." +"..i..iChar
+ end
+ end
+}
+----------------------------
+
+--Allow complex arguments for regular math functions with cmath namespace--
+--Note that all these functions still work for regular numbers!
+--The added bonus is that they can handle things like (-1)^0.5. (=i)
+
+i=complex(0,1)
+cmath={e=e,i=i,pi=pi,re=re,im=im,complex=complex,arg=arg,rect=rect,ln=ln}
+_G.cmath=cmath
+
+function cmath.abs(c)--This always returns a pure real value
+ return sqrt(re(c)^2+im(c)^2)
+end
+
+function cmath.diff(c)
+ return re(c)^2-im(c)^2
+end
+
+function cmath.exp(c)
+ return e^c
+end
+
+function cmath.sqrt(c)
+ local num=istype(c)=="complex" and c^0.5 or complex(c)^0.5
+ if im(num)==0 then
+ return re(num)
+ end
+ return num
+end
+
+--Trig functions
+function cmath.sin(c)
+ local r,i=re(c),im(c)
+ return complex(sin(r)*cosh(i),cos(r)*sinh(i))
+end
+function cmath.cos(c)
+ local r,i=re(c),im(c)
+ return complex(cos(r)*cosh(i),sin(r)*sinh(i))
+end
+function cmath.tan(c)
+ local r,i=2*re(c),2*im(c)
+ local div=cos(r)+cosh(i)
+ return complex(sin(r)/div,sinh(i)/div)
+end
+
+--Hyperbolic trig functions
+function cmath.sinh(c)
+ local r,i=re(c),im(c)
+ return complex(cos(i)*sinh(r),sin(i)*cosh(r))
+end
+function cmath.cosh(c)
+ local r,i=re(c),im(c)
+ return complex(cos(i)*cosh(r),sin(i)*sinh(r))
+end
+function cmath.tanh(c)
+ local r,i=2*re(c),2*im(c)
+ local div=cos(i)+cosh(r)
+ return complex(sinh(r)/div,sin(i)/div)
+end
+
+--Caution! Mathematical laziness beyond this point!
+
+--Inverse trig functions
+function cmath.asin(c)
+ return -i*ln(i*c+(1-c^2)^0.5)
+end
+function cmath.acos(c)
+ return pi/2+i*ln(i*c+(1-c^2)^0.5)
+end
+function cmath.atan(c)
+ local r2,i2=re(c),im(c)
+ local c3,c4=complex(1-i2,r2),complex(1+r2^2-i2^2,2*r2*i2)
+ return complex(arg(c3/c4^0.5),-ln(cmath.abs(c3)/cmath.abs(c4)^0.5))
+end
+function cmath.atan2(c2,c1)--y,x
+ local r1,i1,r2,i2=re(c1),im(c1),re(c2),im(c2)
+ if r1==0 and i1==0 and r2==0 and i2==0 then--Indeterminate
+ return 0
+ end
+ local c3,c4=complex(r1-i2,i1+r2),complex(r1^2-i1^2+r2^2-i2^2,2*(r1*i1+r2*i2))
+ return complex(arg(c3/c4^0.5),-ln(cmath.abs(c3)/cmath.abs(c4)^0.5))
+end
+
+--Inverse hyperbolic trig functions. Why do they all look different but give correct results!? e.e
+function cmath.asinh(c)
+ return ln(c+(1+c^2)^0.5)
+end
+function cmath.acosh(c)
+ return 2*ln((c-1)^0.5+(c+1)^0.5)-log(2)
+end
+function cmath.atanh(c)
+ return (ln(1+c)-ln(1-c))/2
+end
+
+--Miscellaneous functions
+function cmath.zeta(s,a)
+ local sum=0
+ for n=a,accuracy or 10000 do
+ sum=sum+n^-s
+ end
+ return sum
+end
+
+--End of non-optimized terrors.
+
+--Linear integration, evenly spaced slices
+--f=function(x),low=0,high=100,slices=10000
+function cmath.lintegrate(f,H,L,n)
+ n=n or floor(10*sqrt(H))
+ L=L or 0
+ local LH=H-L
+ local A=(f(L)+f(H))/2
+ for x=1,n-1 do
+ A=A+f(L+LH*x/n)
+ end
+ return A/n
+end
+
+--cmath.log: Complex base logarithm! One argument (z=c1) gives log(z). Two arguments (b=c1,z=c2) gives log_b(z), which is identical to log(c2)/log(c1).
+function cmath.log(c2,c1)
+ local r1,i1=re(c1),im(c1)
+ local r2,i2=re(c2),im(c2)
+ local r3,i3=log(r1^2+i1^2)/2,atan2(i1,r1)
+ local r4,i4=log(r2^2+i2^2)/2,atan2(i2,r2)
+ local rsq=r4^2+i4^2
+ return complex((r3*r4+i3*i4)/rsq,(r4*i3-r3*i4)/rsq)
+end
+
+cmath.pow=complex_mt.__pow
+---------------------------------------------------------------------------
+
+--These are just some useful tools when working with complex numbers.--
+
+--cmath.polar: x+iy -> r*e^(i*phi) One complex argument, or two real arguments can be given.
+--This is basically return cmath.abs(z),cmath.arg(z)
+function cmath.polar(cx,oy)
+ local x,y
+ if oy then
+ x,y=cx,oy
+ else
+ x,y=re(cx),im(cx)
+ end
+ return sqrt(x^2+y^2),atan2(y,x)
+end
+
+--cmath.cx: Define complex numbers from a string.
+function cmath.cx(a,b)
+ local r,i=0,0
+ if type(a)=="string" and type(b)=="nil" then
+ local query=a:gsub("[^%d.+-i]","")
+ if #query>0 then
+ for sgn,im in query:gmatch'([+-]*)(%d*%.?%d*)i' do
+ i=i+(-1)^select(2,sgn:gsub("-",""))*(tonumber(im) or 1)
+ end
+ for sgn,re in query:gsub("[+-]*%d*%.?%d*i",""):gmatch'([+-]*)(%d*%.?%d*)()' do
+ r=r+(-1)^select(2,sgn:gsub("-",""))*(tonumber(re) or #sgn>0 and 1 or 0)
+ end
+ end
+ else
+ r,i=tonumber(a) or 0,tonumber(b) or 0
+ end
+ if forget then
+ if abs(r)<=forget then
+ r=0
+ end
+ if abs(i)<=forget then
+ i=0
+ end
+ end
+ return complex(r,i)
+end
+-----------------------------------------------------------------------
+
+--Globalize.
+_G.cmath=cmath
+
+-- print(cmath.e^(cmath.i*cmath.pi)+1)
+
diff --git a/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring-functions.lua b/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring-functions.lua
new file mode 100644
index 00000000000..bb0ca0c5b02
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring-functions.lua
@@ -0,0 +1,110 @@
+-- $Id: domaincoloring-functions.lua 978 2024-09-02 15:27:30Z herbert $
+
+kpse.set_program_name("luatex")
+
+function f0(z)
+ return cmath.sin(1/z)*cmath.cos(1/z)/z^3+1/z
+end
+
+function f1(z)
+ return cmath.cos(z)/cmath.sin(z^4-1)
+end
+
+function f2(z)
+ local c = complex(1,-1)
+ local d = complex(0,0.28)
+ return cmath.cos(c^2*z^2)/cmath.cos(c*(z-d))
+end
+
+function f3(z)
+ return z*(z+i)^2/(z-i)^2
+end
+
+function f4(z)
+ if abs(z) < 0.1 then
+ return complex(0.001,0.001)
+ else
+ return cmath.sin(1/(z*z))
+ end
+end
+
+function f5(z)
+ return cmath.sqrt(1-1/(z*z)+z^3)
+end
+
+function f9(z)
+ local c = complex(1,-1)
+ local d = complex(1,1)
+ return z^2*c^2*(z*c-1-i)/(z*c-2*d)
+end
+
+function f10(z)
+ local sum = complex(0,0)
+ for n=1,20 do
+ sum = sum + z^n/(1-z^n)
+ end
+ return sum
+end
+
+function f11(z)
+ local iterateNo = 3
+ for n=1,iterateNo do
+ z = z^2
+ end
+ return z
+end
+
+function f12(z) -- julia
+ local iterateNo = 15
+ for n=1,iterateNo do
+ z = z^2 + complex(0.25,-0.5)
+ end
+ return z
+end
+
+function f13(z) -- mandelbrot
+ local iterateNo = 15
+ local c = z
+ z = complex(0,0)
+ for n=1,iterateNo do
+ z = z^2 + c
+ end
+ return z
+end
+
+function f14(z)
+ local iterateNo = 5
+-- local c = z
+-- z = complex(0,0)
+ for n=1,iterateNo do
+ z = cmath.sin(z)*cmath.sin(0.8*z) -- + c
+ end
+ return z
+end
+
+function f15(z)
+ local alpha = 4
+ local C0 = complex(1,0)
+ local C1 = 2 * alpha * z
+ for n = 2,20 do
+ C = (2*z*(n+alpha-1)*C1 - (n+2*alpha-2)*C0)/n
+ C0 = C1
+ C1 = C
+ end
+ return C
+end
+
+function f16(z)
+ local A = z^2 - z -2
+ local B = z^2 + complex(1,1)
+ return A/B
+end
+
+function f17(z)
+ return e^(z^cmath.sin(z^cmath.tan(z^cmath.cos(z))))
+end
+
+function f18(z)
+ return (z+0.5)*(z-0.5)/z
+end
+
diff --git a/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring.lua b/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring.lua
new file mode 100644
index 00000000000..3eb5496df51
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring.lua
@@ -0,0 +1,336 @@
+-- $Id: domaincoloring.lua 978 2024-09-02 15:27:30Z herbert $
+
+-----------------------------------------------------------------------
+-- FILE: domaincoloring.lua
+-- DESCRIPTION: create a visual reprensation of a complex function
+-- REQUIREMENTS:
+-- AUTHOR: Herbert Voß
+-- LICENSE: LPPL 1.3
+--
+-----------------------------------------------------------------------
+
+local version = 0.05
+
+kpse.set_program_name("luatex")
+
+require("domaincoloring-complex-numbers")
+
+local func = io.open("domaincoloring-functions.lua","r")
+if func~=nil then
+ io.close(func)
+ dofile("domaincoloring-functions.lua")
+end
+
+local function HSVtoRGB(h, s, v)
+-- if h == 1 then h = 0 end
+ local i = math.floor(h * 6)
+ local f = h * 6 - i
+ local p = v * (1 - s)
+ local q = v * (1 - s * f)
+ local t = v * (1 - s * (1 - f))
+ v = math.floor(255*v) % 256
+ p = math.floor(255*p) % 256
+ q = math.floor(255*q) % 256
+ t = math.floor(255*t) % 256
+ if i == 0 then return v,t,p
+ elseif i == 1 then return q,v,p
+ elseif i == 2 then return p,v,t
+ elseif i == 3 then return p,q,v
+ elseif i == 4 then return t,p,v
+ elseif i == 5 then return v,p,q
+ else return v,v,v
+ end
+end
+
+--[[
+local function HSVtoRGB(h, s, v)
+ h = math.floor(h * 360)
+ local k1 = v*(1-s)
+ local k2 = v - k1
+ local r = math.min (math.max (3*math.abs (((h )/180)%2-1)-1, 0), 1)
+ local g = math.min (math.max (3*math.abs (((h -120)/180)%2-1)-1, 0), 1)
+ local b = math.min (math.max (3*math.abs (((h +120)/180)%2-1)-1, 0), 1)
+ return k1 + k2 * r * 255, k1 + k2 * g * 255, k1 + k2 * b * 255
+end
+]]
+
+
+function my_color_scheme(z,hsvrgb)
+ r, phi = cmath.polar(z)
+-- print(r,tostring(phi))
+-- phi is in -pi,+pi; change it to [0;2pi] and normalize it to [0;1]
+ phi = (phi+pi)/(2*pi)
+-- phi = (phi+pi)*180/pi
+ h_str,s_str,v_str = hsvrgb:match("([^,]+),([^,]+),([^,]+)")
+ --print(h_str,s_str,v_str)
+-- print(load("return "..h_str)(),load("return "..s_str)(),load("return "..v_str)())
+ R,G,B = HSVtoRGB(load("return "..h_str)(),load("return "..s_str)(),load("return "..v_str)()) -- h,s,v) -- (phi+3.14,1,r)
+-- print(R,G,B)
+ return {math.floor(R+0.5),math.floor(G+0.5),math.floor(B+0.5)}
+end
+
+
+--[[
+A raster of Height rows, in order from top to bottom.
+Each row consists of Width pixels, in order from left to
+right. Each pixel is a triplet of red, green, and blue samples,
+in that order. Each sample is represented in pure binary by
+either 1 or 2 bytes. If the Maxval is less than 256, it is
+1 byte. Otherwise, it is 2 bytes. The most significant byte is first.
+A row of an image is horizontal. A column is vertical.
+The pixels in the image are square and contiguous.
+]]
+
+function write_eps_data(name,data,domain,res,grid)
+ print("Lua: writing data file "..name.." ...")
+-- print(data)
+ outFile = io.open(name,"w+") -- Dateiname
+ outFile:write([[
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: (Herbert Voss)
+%%Title: (domain.eps)
+%%CreationDate: (]])
+ outFile:write(os.date("%Y-%m-%d-%H.%M.%S")..")\n")
+ outFile:write("%%BoundingBox: -0 -0 "..res[1].." "..res[2].."\n")
+ outFile:write("%%HiResBoundingBox: 0 0 "..res[1].." "..res[2].."\n")
+ outFile:write([[
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%EndComments
+%%BeginDefaults
+%%EndDefaults
+%%BeginProlog
+/DirectClassPacket {
+ currentfile color_packet readhexstring pop pop
+ /number_pixels 3 def
+ 0 3 number_pixels 1 sub { pixels exch color_packet putinterval } for
+ pixels 0 number_pixels getinterval
+} bind def
+/DirectClassImage{
+ columns rows 8 [ columns 0 0 rows neg 0 rows ]
+ { DirectClassPacket } false 3 colorimage
+} bind def
+/DisplayImage {
+ gsave
+ /buffer 512 string def
+ /byte 1 string def
+ /color_packet 3 string def
+ /pixels 768 string def
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ x y translate
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ currentfile buffer readline pop
+ token pop /pointsize exch def pop
+ x y scale
+ currentfile buffer readline pop
+ token pop /columns exch def
+ token pop /rows exch def pop
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ currentfile buffer readline pop
+ token pop /compression exch def pop
+ DirectClassImage
+ grestore
+} bind def
+%%EndProlog
+%%Page: 1 1
+]])
+ outFile:write("%%PageBoundingBox: 0 0 "..res[1].." "..res[2].."\n")
+ outFile:write([[userdict begin
+DisplayImage
+0 0
+]])
+ outFile:write(res[1].." "..res[2].."\n")
+ outFile:write("12\n")
+ outFile:write(res[1].." "..res[2].."\n")
+ outFile:write([[0
+0
+]])
+ local i = 0
+ for row = 1, res[2] do -- alle Zeilen
+ for col = 1, res[1] do -- alle Spalten
+ for k = 1,3 do
+ if data[row][col][k] ~= data[row][col][k] then -- check for nan
+ outFile:write("FF")
+ else
+ num = data[row][col][k]
+ if num < 16 then
+ hex = string.format("0%X", num)
+ else
+ hex = string.format("%X", num)
+ end
+ outFile:write(hex)
+ end
+ i = i + 1
+ if i == 39 then
+ outFile:write("\n") -- neue Zeile
+ i = 0
+ end
+ end
+ end
+ end
+ outFile:write("\n") -- neue Zeile
+ if grid == "true" then
+ outFile:write("gsave \n /xMin "..domain[1].." def\n")
+ outFile:write("/xMax "..domain[2].." def\n")
+ outFile:write("/yMin "..domain[3].." def\n")
+ outFile:write("/yMax "..domain[4].." def\n")
+ outFile:write(res[1].." xMax xMin sub div dup /xScale exch def \n")
+ outFile:write(res[2].." yMax yMin sub div dup /yScale exch def \n")
+ outFile:write("scale\n")
+ outFile:write([[
+xMin neg yMin neg translate % the new origin\n"
+gsave
+xMin floor 0.5 yScale div sub
+ 0.5 xMax 0.5 add round { % loop variable on stack\n"
+ dup yMin moveto yMax lineto
+} for
+2 ]])
+ outFile:write(res[2])
+ outFile:write([[ div setlinewidth 0.4 setgray [5 5 ] { ]])
+ outFile:write(res[2]..[[ div } forall 2 array astore 0 setdash
+stroke
+grestore
+gsave
+yMin floor 0.5 yScale div add % startValue
+ % with shift 0.5 to be in the middle of the pixel
+ 0.5 % step
+ yMax 0.5 add round { % loop variable on stack
+ dup xMin exch moveto xMax exch lineto
+} for
+2 ]])
+ outFile:write(res[1])
+ outFile:write([[ div setlinewidth 0.4 setgray [5 5 ] { ]])
+ outFile:write(res[1]..[[ div } forall 2 array astore 0 setdash
+stroke
+grestore
+gsave
+xMin floor 0.5 yScale div sub
+ 1 xMax 0.5 add round { % loop variable on stack\n"
+ dup yMin moveto yMax lineto
+} for
+2 ]])
+ outFile:write(res[2])
+ outFile:write([[ div setlinewidth 0.3 setgray stroke
+grestore
+gsave
+yMin floor 0.5 yScale div add
+ 1 yMax 0.5 add round { % loop variable on stack
+ dup xMin exch moveto xMax exch lineto
+} for
+2 ]])
+ outFile:write(res[1])
+ outFile:write([[ div setlinewidth 0.3 setgray stroke
+grestore
+]])
+ end
+ outFile:write([[
+end % of userdict
+%%PageTrailer
+%%Trailer
+%%EOF
+ ]])
+ outFile:close() -- Datei schließen
+ --os.execute("pnmtopng apfel.ppm >"..fileName..".png") -- ppm -> png Format
+end
+
+function write_data(name,data,domain,res) -- only valid for writing ppm files
+ print("Lua: writing data to file "..name.." ...")
+-- print(data)
+ outFile = io.open(name,"w+") -- Dateiname
+ outFile:write("P3 ") -- Grafictype R G B
+ outFile:write(res[1].." "..res[2].." ") -- Anzahl Pixel: Breite x Höhe (cols x rows)
+ outFile:write("255\n") -- Höchster Zahlenwert (0..255)
+ for row = 1, res[2] do -- alle Zeilen
+ for col = 1, res[1] do -- alle Spalten
+ for k = 1,3 do
+ if data[row][col][k] ~= data[row][col][k] then -- check for nan
+ outFile:write("255 ")
+ else
+ outFile:write(data[row][col][k].." " )
+ end
+ end
+ end
+ outFile:write("\n") -- neue Zeile
+ end
+ outFile:close() -- Datei schließen
+ --os.execute("pnmtopng apfel.ppm >"..fileName..".png") -- ppm -> png Format
+end
+
+function plot(fString, domain, res, maxR, funcName, hsvrgb, bgColor, invers)
+ print("\nLua: calculating data with "..tostring(fString).." ... ")
+ local colorBGsum = bgColor[1] -- {-30, 255, 255}
+ if colorBGsum < 0 then -- color[1]+... < 30 will be {255,255,255}
+ for i=1,3 do
+ bgColor[i] = bgColor[2]
+ end
+ end
+ local left = domain[1]
+ local right = domain[2]
+ local bottom = domain[3]
+ local top = domain[4]
+ local dx = (right-left)/res[1]
+ local dy = (top-bottom)/res[2]
+ local img = {} -- mxn-Matrix (rows x colums) img[row][col]
+ for row = 1,res[2] do
+ img[row] = {}
+ for col = 1,res[1] do
+ img[row][col] = 0
+ end
+ end
+ for row = 1, res[2] do
+ y = top-dy*row
+ for col = 1,res[1] do
+-- print(j,i)
+ x = left+dx*col
+ z = complex(x, y)
+ if funcName then
+ fz = fString(z) -- use func number from external file
+ else
+ fz = load("return "..fString)() -- for example: cmath.cos(z)/cmath.sin(z^4-1)
+ end
+-- if fz == complex(nan,nani) then
+-- color = { 0, 0, 0}
+-- print("Complex division by zero!!")
+-- else
+ color = my_color_scheme(fz,hsvrgb)
+-- end
+ if maxR > 0 and cmath.abs(z) > maxR then color = { 0, 0, 0 } end
+ if invers == "true" then
+ for c=1,#color do
+ color[c] = math.abs(color[c]-255)
+ end
+ end
+ local colorSum = color[1]+color[2]+color[3]
+ if color == {0, 0, 0} then color = bgColor end -- only one color
+ if colorBGsum < 0 and colorSum < math.abs(colorBGsum) then color = {255,255,255} end
+ img[row][col] = color
+ end
+ end
+ return img
+end
+
+--[[
+ f: function as string if funcName is False
+ as funcName from external file if funcName is TRUE
+ Domain: xMin,xMax,yMin,yMax
+ Resolution: (points per Interval) xRes,yRes
+ funcName: true/false (see f)
+]]
+
+function createData(jobname,f,funcName,Domain,Resolution,maxR,hsvrgb,bgColor,invers,grid)
+ print("Lua:createData: ",jobname,f,funcName,Domain,Resolution,maxR,hsvrgb,bgColor,invers,grid)
+ if funcName == "" then
+ img = plot(f,Domain,Resolution,maxR,false,hsvrgb,bgColor,invers)
+ else
+ img = plot(load("return "..funcName)(),Domain,Resolution,maxR,true,hsvrgb,bgColor,invers)
+ end
+-- write_data("domain.ppm",img,Resolution)
+ write_eps_data(jobname.."-domain.eps",img,Domain,Resolution,grid)
+end
+
diff --git a/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring.sty b/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring.sty
new file mode 100644
index 00000000000..253edbc5fbe
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/domaincoloring/domaincoloring.sty
@@ -0,0 +1,107 @@
+%% $Id: domaincoloring.sty 979 2024-09-02 16:07:29Z herbert $
+%% This is file `domaincoloring.sty',
+%%
+%% Copyright (C) 2024- Herbert Voss
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+
+\NeedsTeXFormat{LaTeX2e}
+
+\RequirePackage{xkeyval}
+\RequirePackage{graphicx}
+\RequirePackage{shellesc}
+
+\def\fileversion{0.05}
+\def\filedate{2024/09/02}
+\message{`DCol' v\fileversion, \filedate}
+\ProvidesPackage{domaincoloring}
+ [\filedate\ \fileversion\ package for domain coloring of complex functions]
+
+\ifnum\ShellEscapeStatus < 1
+ \PackageError{shellesc}{ShellEscape not enabled! Use --shell-escape}%
+\fi
+
+\define@key{DCol}{domain}{\def\@domaincoloring@domain{#1}}
+\define@key{DCol}{resolution}{\@domaincoloring@res@i#1,\@nil}
+\def\@domaincoloring@res@i#1,#2\@nil{%
+ \ifx\relax#2\relax % only one value
+ \def\@domaincoloring@res{#1,#1}%
+ \else
+ \def\@domaincoloring@res{#1,#2}%
+ \fi}
+\define@key{DCol}{Rmax}{\def\@domaincoloring@Rmax{#1}}
+\define@key{DCol}{bgcolor}{\def\@domaincoloring@bgcolor{#1}}
+\define@key{DCol}{hsvrgb}{\def\@domaincoloring@hsvrgb{#1}}
+\define@key{DCol}{funcName}{\def\@domaincoloring@funcName{#1}}
+\define@key{DCol}{grfOptions}{\def\@domaincoloring@grf{#1}}
+\define@boolkey{DCol}[DCol@]{invers}[true]{}
+\define@boolkey{DCol}[DCol@]{force}[true]{}
+\define@boolkey{DCol}[DCol@]{grid}[true]{}
+
+\newcounter{DCol@imageCTR}
+\setcounter{DCol@imageCTR}{0}
+\def\@domaincoloring@filename{\jobname-tmp\theDCol@imageCTR}
+
+
+\def\setDColkeys#1{\edef\x{\noexpand\setkeys{DCol}{#1}}\x}
+
+\setDColkeys{
+ funcName={}, % corresponding to external file
+ hsvrgb={phi,1,1}, % given (r,phi) of the complex value
+% filename=\jobname-tmp, % the external image filename
+ resolution=500, % pixel per (x|y) interval
+ domain={-2,2,-2,2}, % x|y domain
+ Rmax=0, % max value vor |z|. 0 is same as inactive
+ bgcolor={0,0,0}, % R+G+B value, changes only 1,1,1 -> 255,255,255
+ invers=false, % 0 or 1 vor inverted colors
+ grfOptions={scale=0.5}, % LaTeX options for the included image
+ force=true, % only valid for the documentation
+ grid=false, % draw a grid into the image
+}%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\DomainColoring{\@ifnextchar[\DomainColoring@i{\DomainColoring@i[]}}
+
+\begingroup
+% Change ^ to normal character to describe functions with lua
+\catcode`\^=11\relax % for power symbol in Lua
+
+\gdef\DomainColoring@i[#1]#2{%
+ \begingroup
+ \setDColkeys{#1}%
+ \ifDCol@force\else
+ \IfFileExists{\@domaincoloring@filename.pdf}{}{\DCol@forcetrue}%
+ \fi
+ \ifDCol@force
+ \directlua{%
+ require("domaincoloring-complex-numbers")
+ require ("domaincoloring")
+ createData("\jobname",
+ "#2",
+ "\@domaincoloring@funcName", % user defined, function number from file
+ % domaincoloring-functions.lua
+ {\@domaincoloring@domain},{\@domaincoloring@res},\@domaincoloring@Rmax,
+ "\@domaincoloring@hsvrgb",
+ {\@domaincoloring@bgcolor},
+ \ifDCol@invers "true" \else "false" \fi,
+ \ifDCol@grid "true" \else "false" \fi)
+ }%
+ \typeout{Convert \jobname-domain.eps file to \@domaincoloring@filename.pdf}%
+ \ShellEscape{epstopdf \jobname-domain.eps \@domaincoloring@filename.pdf}%
+ \fi
+ %
+ \expandafter\includegraphics\expandafter[\@domaincoloring@grf]{\@domaincoloring@filename.pdf}%
+ \stepcounter{DCol@imageCTR}%
+ \gdef\@domaincoloring@filename{\jobname-tmp\theDCol@imageCTR}%
+ \endgroup
+ \ignorespaces
+}
+
+\catcode`\^=7\relax
+\endgroup
+
+\endinput
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/ideavault/ideavault-lua.lua b/Master/texmf-dist/tex/lualatex/ideavault/ideavault-lua.lua
index 09bade82a27..c39a964f648 100644
--- a/Master/texmf-dist/tex/lualatex/ideavault/ideavault-lua.lua
+++ b/Master/texmf-dist/tex/lualatex/ideavault/ideavault-lua.lua
@@ -15,6 +15,29 @@
--
-- This work consists of the files ideavault.sty and ideavault-lua.lua
+
+logErrorEnabled = true
+logWarnEnabled = true
+logDebugEnabled = false
+
+function logError(message)
+ if (logErrorEnabled) then
+ texio.write_nl("[ERROR] " .. message)
+ end
+end
+
+function logWarn(message)
+ if (logWarnEnabled) then
+ texio.write_nl("[WARN] " .. message)
+ end
+end
+
+function logDebug(message)
+ if (logDebugEnabled) then
+ texio.write_nl("[DEBUG] " .. message)
+ end
+end
+
IdeaVaultClass = {}
IdeaVaultClass.__index = IdeaVaultClass
@@ -186,12 +209,15 @@ bookmark_counter = 0
function IdeaClass:printSelf(style)
style = style or ""
- texio.write("Printing idea. Title: '" .. self:getTitle() .. "', style: '" .. style .. "'.\n")
+ logDebug("Printing idea. Title: '" .. self:getTitle() .. "', style: '" .. style .. "'.\n")
local frame = false
local center = false
local bookmark = false
local large = false
+ local Large = false
+ local huge = false
+ local Huge = false
local needSpace = false
local emph = false
local quiet = false
@@ -206,7 +232,13 @@ function IdeaClass:printSelf(style)
elseif (c == "b") then
bookmark = true
elseif (c == "l") then
- large = true
+ large = true
+ elseif (c == "L") then
+ Large = true
+ elseif (c == "h") then
+ huge = true
+ elseif (c == "H") then
+ Huge = true
elseif (c == "s") then
needSpace = true
elseif (c == "e") then
@@ -247,23 +279,34 @@ function IdeaClass:printSelf(style)
end
if (not quiet)
then
+ tex.sprint("{%")
if (large)
then
- tex.sprint("{\\Large%")
+ tex.sprint("\\Large%")
+ end
+ if (Large)
+ then
+ tex.sprint("\\LARGE%")
+ end
+ if (huge)
+ then
+ tex.sprint("\\huge%")
+ end
+ if (Huge)
+ then
+ tex.sprint("\\Huge%")
end
if (emph)
then
tex.sprint("\\emph{,,")
end
tex.sprint(self:getTitle())
+ tex.sprint("\\nopagebreak%")
if (emph)
then
tex.sprint("''}%")
end
- if (large)
- then
- tex.sprint("}%")
- end
+ tex.sprint("}%")
end
if (center)
then
@@ -344,7 +387,7 @@ function createIdea(prefix, key, content, dependencies, tags, value)
t = t .. a .. ", "
end
t = t .. "]"
- texio.write("Creating idea. Title: '" .. key .. "'. Prefix: '" .. prefix .. "', tags: " .. t .. ".\n")
+ logDebug("Creating idea. Title: '" .. key .. "'. Prefix: '" .. prefix .. "', tags: " .. t .. ".\n")
deps = {}
for _, val in pairs(dependencies)
do
@@ -360,7 +403,7 @@ end
function die(reason)
reason = reason or "nil"
- texio.write_nl("Critical error: " .. reason)
+ logError("Critical error: " .. reason)
tex.error("Critical error: " .. reason)
end
diff --git a/Master/texmf-dist/tex/lualatex/ideavault/ideavault.sty b/Master/texmf-dist/tex/lualatex/ideavault/ideavault.sty
index 4b5c72a3515..8b73929eafa 100644
--- a/Master/texmf-dist/tex/lualatex/ideavault/ideavault.sty
+++ b/Master/texmf-dist/tex/lualatex/ideavault/ideavault.sty
@@ -17,7 +17,7 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ideavault}[1.0.3]
+\ProvidesPackage{ideavault}[1.0.4]
\RequirePackage[open,openlevel=2,atend]{bookmark}
\RequirePackage{xargs}
\RequirePackage{luacode}
@@ -57,6 +57,10 @@
% #3: tag
\newcommandx{\printAllWithTag}[3][1=default, 2=lcf]{\luadirect{ideaVault:printAllWithTag(\luastringN{#1}, \luastringN{#3}, \luastringN{#2})}}
+% Commands for managing debug output
+\newcommandx{\debugEnable}{\luadirect{logDebugEnabled = true}}
+\newcommandx{\debugDisable}{\luadirect{logDebugEnabled = false}}
+
% Internal commands for managing bookmark depth
\newcounter{bookmarkDepth}
\newcommand{\bookDown}{\stepcounter{bookmarkDepth}}
diff --git a/Master/texmf-dist/tex/lualatex/innerscript/innerscript.sty b/Master/texmf-dist/tex/lualatex/innerscript/innerscript.sty
index 73fb921c9df..558d310e778 100644
--- a/Master/texmf-dist/tex/lualatex/innerscript/innerscript.sty
+++ b/Master/texmf-dist/tex/lualatex/innerscript/innerscript.sty
@@ -6,11 +6,11 @@
%%
%% innerscript_code.dtx (with options: `package')
%%
-%% This file is from version 1.2 of the free and open-source
-%% LaTeX package "innerscript," released November 2023, to be
+%% This file is from version 1.3 of the free and open-source
+%% LaTeX package "innerscript," released August 2024, to be
%% used with the LuaTeX engine.
%%
-%% Copyright 2021, 2023 by Conrad Kosowsky
+%% Copyright 2021, 2023, 2024 Conrad Kosowsky
%%
%% This file may be distributed and modified under the terms
%% of the LaTeX Public Project License, version 1.3c or any
@@ -59,7 +59,7 @@
%% Happy TeXing!
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{innerscript}[2023/11/06 v. 1.2 Package innerscript]
+\ProvidesPackage{innerscript}[2024/08/19 v. 1.3 Package innerscript]
\newcount\IS@script
\newcount\IS@scriptscript
\newif\ifIS@inner
@@ -85,7 +85,7 @@
\ProcessOptions*
\ifx\Umathordordspacing\@undefined
\bgroup
-\catcode`\+=12\relax
+\catcode`\ =12\relax
\def\IS@LuaTeXError{\GenericError{}%
{\MessageBreak\MessageBreak
Package innerscript error:%
@@ -113,8 +113,8 @@ press return.}}%
\@plus\muexpr#2\gluetomu\gluestretch\mutoglue#1\relax
\@minus\muexpr#2\gluetomu\glueshrink\mutoglue#1\relax\relax}
\ifcase\IS@script % Case 0: No changes
- \IS@info{No changes to space for \string\scriptstyle\space atoms.}
- \IS@info{No changes to space for \string\crampedscriptstyle\space atoms.}
+ \IS@info{No space changes for \string\scriptstyle\space atoms.}
+ \IS@info{No space changes for \string\crampedscriptstyle\space atoms.}
\or % Case 1: Default changes
\IS@info{Adjusting space for \string\scriptstyle\space atoms.}
\IS@info{Adjusting space for \string\crampedscriptstyle\space atoms.}
@@ -263,8 +263,8 @@ press return.}}%
\Umathinnerinnerspacing\crampedscriptstyle=0.6\thinmuskip
\fi
\ifcase\IS@scriptscript % Case 0: No changes
- \IS@info{No changes to space for \string\scriptscriptstyle\space atoms.}
- \IS@info{No changes to space for
+ \IS@info{No space changes for \string\scriptscriptstyle\space atoms.}
+ \IS@info{No space changes for
\string\crampedscriptscriptstyle\space atoms.}
\or % Case 1: Default changes
\IS@info{Adjusting space for \string\scriptscriptstyle\space atoms.}
@@ -450,7 +450,7 @@ press return.}}%
\Umathinnerinnerspacing\crampedscriptscriptstyle=0.4\thinmuskip
\fi
\ifIS@inner
- \IS@info{Adjusting space for \string\mathinner\space subformulas.}
+ \IS@info{Adjusting space around \string\mathinner\space subformulas.}
% \displaystyle
\Umathordinnerspacing\displaystyle=
\the\Umathordordspacing\displaystyle\relax
@@ -715,7 +715,7 @@ press return.}}%
\IS@info{Adding space after closing delimiters.}
\Umathcloseordspacing\displaystyle=\scalemu{\thinmuskip}{0.5}
\Umathcloseordspacing\textstyle=\scalemu{\thinmuskip}{0.5}
- \Umathcloseordspacing\crampedisplaystyle=\scalemu{\thinmuskip}{0.5}
+ \Umathcloseordspacing\crampeddisplaystyle=\scalemu{\thinmuskip}{0.5}
\Umathcloseordspacing\crampedtextstyle=\scalemu{\thinmuskip}{0.5}
\ifnum\IS@script>0
\Umathcloseordspacing\scriptstyle=\scalemu{\thinmuskip}{0.3}
diff --git a/Master/texmf-dist/tex/lualatex/junicodevf/junicodevf.sty b/Master/texmf-dist/tex/lualatex/junicodevf/junicodevf.sty
index 4dcee747a97..11cbe899fb7 100644
--- a/Master/texmf-dist/tex/lualatex/junicodevf/junicodevf.sty
+++ b/Master/texmf-dist/tex/lualatex/junicodevf/junicodevf.sty
@@ -129,7 +129,7 @@ mkmainfontcommand(style_idx, weight_option, weight_adjust, width_option, width_a
% Set the main font, then the alternate styles. It appears that
% the fonts aren't embedded in the PDF unless actually used.
-\setmainfont{Junicode VF}[
+\setmainfont{JunicodeVF}[
ItalicFont = {*-Italic},
BoldFont = {*},
BoldItalicFont = {*-Italic},
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/longmath/longmath.lua b/Master/texmf-dist/tex/lualatex/longmath/longmath.lua
index 56c64c8cdb1..05524096cac 100644
--- a/Master/texmf-dist/tex/lualatex/longmath/longmath.lua
+++ b/Master/texmf-dist/tex/lualatex/longmath/longmath.lua
@@ -1,5 +1,5 @@
--
--- longmath.lua is part of longmath version 0.1.
+-- longmath.lua is part of longmath version 1.0.
--
-- (c) 2024 Hans-Jürgen Matschull
--
@@ -141,15 +141,16 @@ local function set_delim( head, level, ht, dp )
if brks then brks = brks[type] end
if type and auto and brks then
delim_set( delim, brks[level] )
- elseif type and brks then
- level = nil
- for l = 1, #brks do if delim_eq( brks[l], delim ) then level = l break end end
else
level = nil
end
local scale = node.get_attribute( hbox, attr_info )
- hbox.height, hbox.depth = ht * scale // 1000, dp * scale // 1000
- if delim_eq( delim, delim_null ) then hbox.width = hbox.width * 2 end
+ hbox.height, hbox.depth = ht * scale // 1000, dp * scale // 1000
+ if delim_eq( delim, delim_null ) then
+ hbox.width = -2 * tex.dimen.nulldelimiterspace
+ else
+ hbox.width = -tex.dimen.nulldelimiterspace
+ end
return level
end
diff --git a/Master/texmf-dist/tex/lualatex/longmath/longmath.sty b/Master/texmf-dist/tex/lualatex/longmath/longmath.sty
index 2b4848db3c0..47a99ce8fa5 100644
--- a/Master/texmf-dist/tex/lualatex/longmath/longmath.sty
+++ b/Master/texmf-dist/tex/lualatex/longmath/longmath.sty
@@ -1,5 +1,5 @@
%%
-%% longmath.sty is part of longmath version 0.1.
+%% longmath.sty is part of longmath version 1.0.
%%
%% (c) 2024 Hans-Jürgen Matschull
%%
@@ -18,7 +18,7 @@
%% see README for a list of files belonging to longmath.
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{longmath}[2024/03/25]
+\ProvidesPackage{longmath}[2024/07/04]
\RequirePackage{luatexbase}
@@ -89,8 +89,7 @@
\setattribute\longmath@info{\mathstyle} \special{\longmath@comm}
\longmath@type\bgroup \longmath@left . \aftergroup\egroup \aftergroup\endgroup
\begingroup \setattribute\longmath@info{\ifnum \longmath@yscale < 1 \longmath@xscale \else \longmath@yscale \fi}
- \hbox to -\nulldelimiterspace{} \endgroup
- \longmath@right }
+ \hbox{} \endgroup \longmath@right }
% magic number to identify the variable delimiter.
@@ -174,13 +173,13 @@
}
% End of longmath environment.
-% If the width of the box is smaller than the requsted width, just use it as is.
+% If the width of the box is smaller than the requested width, just use it as is.
% Otherwise, modify the requested width if the * version was used.
% Then \unhbox the content into a paragraph with the requested width.
% \box0 and \box1 are used to adapt the baselineskip to the math style.
% \leftskip and \rightskip are set such that lines are centered but not justified.
% The glue is removed from the beginning of the first line with \hskip,
-% and from the end of the last line with \parfilskip.
+% and from the end of the last line with \parfilskip.
% If \longmath@extra is non-zero, Lua will stack the lines of the paragraph.
\def\longmath@end{$\egroup
\ifdim \wd\longmath@box < \dimexpr \longmath@width + \longmath@extra \relax
diff --git a/Master/texmf-dist/tex/lualatex/luacensor/luacensor.sty b/Master/texmf-dist/tex/lualatex/luacensor/luacensor.sty
index 22a8003e2d3..b4c7f45bea9 100644
--- a/Master/texmf-dist/tex/lualatex/luacensor/luacensor.sty
+++ b/Master/texmf-dist/tex/lualatex/luacensor/luacensor.sty
@@ -1,7 +1,7 @@
%luacensor.sty
-\def\luacensorversionnumber{1.1.0}
+\def\luacensorversionnumber{1.1.1}
\ProvidesPackage{luacensor}
-[2022/02/22 \luacensorversionnumber\
+[2024/04/06 \luacensorversionnumber\
Redact sensitive information using Lua]
% !TeX program = lualatex
% !TeX encoding = utf8
@@ -70,10 +70,10 @@
%Scale=1.1,
%%the below declarations are to prevent warnings about shapes not being available
%WordSpace=0,
-ItalicFont={Redacted},%
-BoldItalicFont={Redacted},%
-BoldFont={Redacted},%
-SmallCapsFont={Redacted}]{Redacted}
+ItalicFont={Redacted-Regular.ttf},%
+BoldItalicFont={Redacted-Regular.ttf},%
+BoldFont={Redacted-Regular.ttf},%
+SmallCapsFont={Redacted-Regular.ttf}]{Redacted-Regular.ttf}
\newcommand{\onething}{\cnsrfnt\ • }
\newcommand{\twothings}{\cnsrfnt\ • •}
\newcommand{\donothing}{\cnsrfnt\ }
@@ -390,7 +390,7 @@ token.set_lua("rndstring", #lft, "global")
%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newfontface\wrnstncl{QT Military}
\newcommand{\warnword}{WARNING}
-\newfontface\smbl{Deja Vu Sans Bold}
+\newfontface\smbl{DejaVuSans-Bold}
\newcommand{\danger}{\smbl ⚠︎\normalfont}
\newcommand{\warnformat}{\sffamily\bfseries \color{red}}
\newcommand{\textwarn}{This document is {\underline{NOT}} redacted. It contains private and confidential personal data, and may {\underline{NOT}} be distributed, published, or shown to those without the right to view such information. The publication of the information in this document may constitute a contempt of court, punishable by a term of imprisonment.}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-amsmath.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-amsmath.lua
new file mode 100644
index 00000000000..2b742655014
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-amsmath.lua
@@ -0,0 +1,133 @@
+local write_xml = require'luamml-xmlwriter'
+local make_root = require'luamml-convert'.make_root
+local save_result = require'luamml-tex'.save_result
+local store_column = require'luamml-table'.store_column
+local store_tag = require'luamml-table'.store_tag
+local get_table = require'luamml-table'.get_table
+local set_row_attribute = require'luamml-table'.set_row_attribute
+local to_text = require'luamml-lr'
+
+local properties = node.get_properties_table()
+
+local math_t = node.id'math'
+
+local funcid = luatexbase.new_luafunction'__luamml_amsmath_add_last_to_row:'
+token.set_lua('__luamml_amsmath_add_last_to_row:', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ -- TODO: Error handling etc
+ -- local box = token.scan_int()
+ local nest = tex.nest.top
+ local head, startmath = nest.head, nest.tail
+ repeat
+ startmath = startmath.prev
+ until startmath == head or (startmath.id == math_t and startmath.subtype == 0)
+ if startmath == head then return end
+ assert(startmath.id == node.id"math")
+ store_column(startmath)
+end
+
+local funcid = luatexbase.new_luafunction'__luamml_amsmath_add_box_to_row:'
+token.set_lua('__luamml_amsmath_add_box_to_row:', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ -- TODO: Error handling etc
+ -- local box = token.scan_int()
+ local boxnum = 0
+ local startmath = tex.box[boxnum].list
+ assert(startmath.id == math_t)
+ store_column(startmath)
+end
+
+local funcid = luatexbase.new_luafunction'__luamml_amsmath_set_row_columnalign:n'
+token.set_lua('__luamml_amsmath_set_row_columnalign:n', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ set_row_attribute('columnalign', token.scan_argument())
+end
+
+do
+ local saved
+ funcid = luatexbase.new_luafunction'__luamml_amsmath_save_inner_table:n'
+ token.set_lua('__luamml_amsmath_save_inner_table:n', funcid)
+ lua.get_functions_table()[funcid] = function()
+ -- TODO: Error handling etc
+ local kind = token.scan_argument()
+ local mml_table = get_table()
+ if not mml_table then return end
+ mml_table.displaystyle = true
+ local columns = node.count(node.id'align_record', tex.lists.align_head)//2
+ mml_table.columnalign = kind == 'gathered' and 'center' or string.rep('right left', columns, ' ')
+ local spacing = {}
+ for n in node.traverse_id(node.id'glue', tex.lists.align_head) do
+ spacing[#spacing+1] = n.width == 0 and '0' or string.format('%.3fpt', n.width/65781.76)
+ end
+ mml_table.columnspacing = #spacing > 3 and table.concat(spacing, ' ', 2, #spacing-2) or nil
+ saved = mml_table
+ end
+
+ funcid = luatexbase.new_luafunction'__luamml_amsmath_save_smallmatrix:'
+ token.set_lua('__luamml_amsmath_save_smallmatrix:', funcid)
+ lua.get_functions_table()[funcid] = function()
+ -- TODO: Error handling etc
+ local mml_table = get_table()
+ mml_table.align = 'axis'
+ mml_table.columnalign = 'center'
+ mml_table.columnspacing = '0.278em'
+ mml_table.rowspacing = string.format('%.3fpt', tex.lineskip.width/65781.76)
+ saved = {[0] = 'mpadded', width = '+0.333em', lspace = '0.167em', mml_table}
+ saved = mml_table
+ end
+
+ funcid = luatexbase.new_luafunction'__luamml_amsmath_finalize_inner_table:'
+ token.set_lua('__luamml_amsmath_finalize_inner_table:', funcid)
+ lua.get_functions_table()[funcid] = function()
+ -- TODO: Error handling etc
+ local vcenter = tex.nest.top.tail.nucleus
+ local props = properties[vcenter]
+ if not props then
+ props = {}
+ properties[vcenter] = props
+ end
+ props.mathml_table = assert(saved)
+ saved = nil
+ end
+end
+
+funcid = luatexbase.new_luafunction'__luamml_amsmath_finalize_table:n'
+token.set_lua('__luamml_amsmath_finalize_table:n', funcid)
+lua.get_functions_table()[funcid] = function()
+ -- TODO: Error handling etc
+ local kind = token.scan_argument()
+ local mml_table = get_table()
+ if not mml_table then return end
+ mml_table.displaystyle = true
+ local columns = node.count(node.id'align_record', tex.lists.align_head)//2
+ mml_table.columnalign = kind == 'align' and string.rep('right left', columns, ' ') or nil
+ mml_table.width = kind == 'multline' and '100%' or nil
+ -- mml_table.side = kind == 'multline' and 'rightoverlap' or nil
+ local spacing = {}
+ for n in node.traverse_id(node.id'glue', tex.lists.align_head) do
+ spacing[#spacing+1] = n.width == 0 and '0' or '.8em'
+ end
+ mml_table.columnspacing = #spacing > 3 and table.concat(spacing, ' ', 2, #spacing-2) or nil
+ save_result(mml_table, true)
+end
+
+local last_tag
+
+funcid = luatexbase.new_luafunction'__luamml_amsmath_save_tag:'
+token.set_lua('__luamml_amsmath_save_tag:', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ local nest = tex.nest.top
+ local chars = {}
+ last_tag = to_text(nest.head)
+end
+
+funcid = luatexbase.new_luafunction'__luamml_amsmath_set_tag:'
+token.set_lua('__luamml_amsmath_set_tag:', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ if not last_tag then
+ texio.write_nl'WARNING: Tag extraction failed'
+ return
+ end
+ store_tag({[0] = 'mtd', last_tag})
+ last_tag = nil
+end
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-array.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-array.lua
new file mode 100644
index 00000000000..9a7b3581f2a
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-array.lua
@@ -0,0 +1,84 @@
+local write_xml = require'luamml-xmlwriter'
+local make_root = require'luamml-convert'.make_root
+local save_result = require'luamml-tex'.save_result
+local store_column = require'luamml-table'.store_column
+local store_column_xml = require'luamml-table'.store_column_xml
+local store_tag = require'luamml-table'.store_tag
+local get_table = require'luamml-table'.get_table
+local to_text = require'luamml-lr'
+
+local properties = node.get_properties_table()
+
+local funcid = luatexbase.new_luafunction'__luamml_array_init_col:'
+token.set_lua('__luamml_array_init_col:', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ -- TODO: Error handling etc
+ local nest = tex.nest[tex.nest.ptr-1]
+ -- The special will be deleted again, it just marks the right math list since the start math node is not there yet
+ local special = node.new('whatsit', 'special')
+ node.insert_after(nest.tail, nest.tail, special)
+ nest.tail = special
+ local temp = nest.head
+ local props = properties[temp]
+ if not props then
+ props = {}
+ properties[temp] = props
+ end
+ props.luamml_array_startmath = special
+end
+
+local funcid = luatexbase.new_luafunction'__luamml_array_finalize_col:w'
+token.set_lua('__luamml_array_finalize_col:w', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ local alignment = token.scan_int() -- Do it first to consume number even if we end early
+ -- TODO: Error handling etc
+ local temp = tex.nest.top.head
+ local props = properties[temp]
+ local special = props and props.luamml_array_startmath
+ if not special then return end
+ node.remove(tex.nest.top.head, special)
+ local startmath = node.free(special)
+ props.luamml_array_startmath = nil
+
+ alignment = alignment == 1 and 'left' or alignment == 2 and 'right' or nil
+
+ if node.end_of_math(startmath) == tex.nest.top.tail then
+ if startmath.next == tex.nest.top.tail then return end
+ store_column(startmath).columnalign = alignment
+ else
+ -- Oh no, we got text. Let't complain to the user, it's probably their fault
+ print'We are mathematicians, don\'t bother us with text'
+ store_column_xml(to_text(startmath, tex.nest.top.tail)).columnalign = alignment
+ end
+end
+
+local saved_array
+
+funcid = luatexbase.new_luafunction'__luamml_array_finalize_array:'
+token.set_lua('__luamml_array_save_array:', funcid)
+lua.get_functions_table()[funcid] = function()
+ -- TODO: Error handling etc.
+ local colsep = tex.dimen['col@sep']
+ saved_array = get_table()
+ if colsep ~= 0 then
+ saved_array = {[0] = 'mpadded',
+ width = string.format('%+.3fpt', 2*colsep/65781.76),
+ lspace = string.format('%+.3fpt', colsep/65781.76),
+ saved_array
+ }
+ end
+end
+
+funcid = luatexbase.new_luafunction'__luamml_array_finalize_array:'
+token.set_lua('__luamml_array_finalize_array:', funcid)
+lua.get_functions_table()[funcid] = function()
+ -- TODO: Error handling etc.
+ local nucl = tex.nest.top.tail.nucleus
+ local props = properties[nucl]
+ if not props then
+ props = {}
+ properties[nucl] = props
+ end
+ props.mathml_table = saved_array
+ saved_array = nil
+end
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-convert.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-convert.lua
new file mode 100644
index 00000000000..fe529debc07
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-convert.lua
@@ -0,0 +1,662 @@
+local remap_comb = require'luamml-data-combining'
+local stretchy = require'luamml-data-stretchy'
+local to_text = require'luamml-lr'
+
+local properties = node.get_properties_table()
+
+local hlist_t, kern_t, glue_t, rule_t = node.id'hlist', node.id'kern', node.id'glue', node.id'rule'
+
+local noad_t, accent_t, style_t, choice_t = node.id'noad', node.id'accent', node.id'style', node.id'choice'
+local radical_t, fraction_t, fence_t = node.id'radical', node.id'fraction', node.id'fence'
+
+local math_char_t, sub_box_t, sub_mlist_t = node.id'math_char', node.id'sub_box', node.id'sub_mlist'
+
+local function invert_table(t)
+ local t_inv = {}
+ for k, v in next, t do
+ t_inv[v] = k
+ end
+ return t_inv
+end
+
+local noad_names = node.subtypes'noad'
+
+--[[ We could determine the noad subtypes dynamically:
+local noad_sub = invert_table(noad_names)
+local noad_ord = noad_sub.ord
+local noad_op = noad_sub.opdisplaylimits
+local noad_oplimits = noad_sub.oplimits
+local noad_opnolimits = noad_sub.opnolimits
+local noad_bin = noad_sub.bin
+local noad_rel = noad_sub.rel
+local noad_open = noad_sub.open
+local noad_close = noad_sub.close
+local noad_punct = noad_sub.punct
+local noad_inner = noad_sub.inner
+local noad_under = noad_sub.under
+local noad_over = noad_sub.over
+local noad_vcenter = noad_sub.vcenter
+-- But the spacing table depends on their specific values anyway, so we just verify the values
+]]
+local noad_ord, noad_op, noad_oplimits, noad_opnolimits = 0, 1, 2, 3
+local noad_bin, noad_rel, noad_open, noad_close, noad_punct = 4, 5, 6, 7, 8
+local noad_inner, noad_under, noad_over, noad_vcenter = 9, 10, 11, 12
+
+for i, n in ipairs{'ord', 'opdisplaylimits', 'oplimits', 'opnolimits', 'bin',
+ 'rel', 'open', 'close', 'punct', 'inner', 'under', 'over', 'vcenter'} do
+ assert(noad_names[i-1] == n)
+end
+-- Attention, the spacing_table is indexed by subtype+1 since 1-based tables are faster in Lua
+local spacing_table = {
+ {0 , '0.167em', '0.167em', '0.167em', '0.222em', '0.278em', 0 , 0 , 0 , '0.167em', 0 , 0 , 0 , },
+ {'0.167em', '0.167em', '0.167em', '0.167em', nil , '0.278em', 0 , 0 , 0 , '0.167em', '0.167em', '0.167em', '0.167em', },
+ nil,
+ nil,
+ {'0.222em', '0.222em', '0.222em', '0.222em', nil , nil , '0.222em', nil , nil , '0.222em', '0.222em', '0.222em', '0.222em', },
+ {'0.278em', '0.278em', '0.278em', '0.278em', nil , 0 , '0.278em', 0 , 0 , '0.278em', '0.278em', '0.278em', '0.278em', },
+ {0 , 0 , 0 , 0 , nil , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , },
+ {0 , '0.167em', '0.167em', '0.167em', '0.222em', '0.278em', 0 , 0 , 0 , '0.167em', 0 , 0 , 0 , },
+ {'0.167em', '0.167em', '0.167em', '0.167em', nil , '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', },
+ {'0.167em', '0.167em', '0.167em', '0.167em', '0.222em', '0.278em', '0.167em', 0 , '0.167em', '0.167em', '0.167em', '0.167em', '0.167em', },
+ nil,
+ nil,
+ nil,
+}
+local spacing_table_script = {
+ {0 , '0.167em', '0.167em', '0.167em', 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , },
+ {'0.167em', '0.167em', '0.167em', '0.167em', nil , 0 , 0 , 0 , 0 , 0 , '0.167em', '0.167em', '0.167em', },
+ nil,
+ nil,
+ {0 , 0 , 0 , 0 , nil , nil , 0 , nil , nil , 0 , 0 , 0 , 0 , },
+ {0 , 0 , 0 , 0 , nil , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , },
+ {0 , 0 , 0 , 0 , nil , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , },
+ {0 , '0.167em', '0.167em', '0.167em', 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , },
+ {0 , 0 , 0 , 0 , nil , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , },
+ {0 , '0.167em', '0.167em', '0.167em', 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , },
+ nil,
+ nil,
+ nil,
+}
+do -- Fill the blanks
+ local st, sts = spacing_table, spacing_table_script
+
+ local st_op, sts_op = st[noad_op+1], sts[noad_op+1]
+ st[noad_oplimits+1], sts[noad_oplimits+1] = st_op, sts_op
+ st[noad_opnolimits+1], sts[noad_opnolimits+1] = st_op, sts_op
+
+ local st_ord, sts_ord = st[noad_ord+1], sts[noad_ord+1]
+ st[noad_under+1], sts[noad_under+1] = st_ord, sts_ord
+ st[noad_over+1], sts[noad_over+1] = st_ord, sts_ord
+ st[noad_vcenter+1], sts[noad_vcenter+1] = st_ord, sts_ord
+end
+
+
+local radical_sub = node.subtypes'radical'
+local fence_sub = node.subtypes'fence'
+
+local remap_lookup = setmetatable({}, {__index = function(t, k)
+ local ch = utf8.char(k & 0x1FFFFF)
+ t[k] = ch
+ return ch
+end})
+local digit_map = {["0"] = true, ["1"] = true,
+ ["2"] = true, ["3"] = true, ["4"] = true,
+ ["5"] = true, ["6"] = true, ["7"] = true,
+ ["8"] = true, ["9"] = true,}
+
+local always_mo = {["%"] = true, ["&"] = true, ["."] = true, ["/"] = true,
+ ["\\"] = true, ["¬"] = true, ["′"] = true, ["″"] = true, ["‴"] = true,
+ ["⁗"] = true, ["‵"] = true, ["‶"] = true, ["‷"] = true, ["|"] = true,
+ ["∀"] = true, ["∁"] = true, ["∃"] = true, ["∂"] = true, ["∄"] = true,}
+
+-- Marker tables replacing the core operator for space like elements
+local space_like = {}
+
+local nodes_to_table
+
+local function sub_style(s) return s//4*2+5 end
+local function sup_style(s) return s//4*2+4+s%2 end
+
+-- The _to_table functions generally return a second argument which is
+-- could be (if it were a <mo>) a core operator of the embellishe operator
+-- or space_like
+-- acc_to_table is special since it's return value should
+-- always be considered a core operator
+
+-- We ignore large_... since they aren't used for modern fonts
+local function delim_to_table(delim)
+ if not delim then return end
+ local props = properties[delim]
+ local mathml_core = props and props.mathml_core
+ local mathml_table = props and (props.mathml_table or mathml_core)
+ if mathml_table ~= nil then return mathml_table, mathml_core end
+ local mathml_filter = props and props.mathml_filter -- Kind of pointless since the arguments are literals, but present for consistency
+ local char = delim.small_char
+ if char == 0 then
+ local result = {[0] = 'mspace', width = string.format("%.3fpt", tex.nulldelimiterspace/65781.76)}
+ if mathml_filter then
+ return mathml_filter(result, space_like)
+ else
+ return result, space_like
+ end
+ else
+ local fam = delim.small_fam
+ char = remap_lookup[fam << 21 | char]
+ local result = {[0] = 'mo', char, ['tex:family'] = fam ~= 0 and fam or nil, stretchy = not stretchy[char] or nil, lspace = 0, rspace = 0, [':nodes'] = {delim}, [':actual'] = char}
+ if mathml_filter then
+ return mathml_filter(result, result)
+ else
+ return result, result
+ end
+ end
+end
+
+-- Like kernel_to_table but always a math_char_t. Also creating a mo and potentially remapping to handle combining chars.
+-- No lspace or space is set here since these never appear as core operators in an mrow.
+local function acc_to_table(acc, cur_style, stretch)
+ if not acc then return end
+ local props = properties[acc]
+ local mathml_core = props and props.mathml_core
+ local mathml_table = props and (props.mathml_table or mathml_core)
+ if mathml_table ~= nil then return mathml_table, mathml_core end
+ if acc.id ~= math_char_t then
+ error'confusion'
+ end
+ local mathml_filter = props and props.mathml_filter -- Kind of pointless since the arguments are literals, but present for consistency
+ local fam = acc.fam
+ local char = remap_lookup[fam << 21 | acc.char]
+ char = remap_comb[char] or char
+ if stretch ~= not stretchy[char] then -- Handle nil gracefully in stretchy
+ stretch = nil
+ end
+ local result = {[0] = 'mo', char, ['tex:family'] = fam ~= 0 and fam or nil, stretchy = stretch, [':nodes'] = {acc}, [':actual'] = stretch and char or nil}
+ if mathml_filter then
+ return mathml_filter(result)
+ else
+ return result
+ end
+end
+
+local function kernel_to_table(kernel, cur_style, text_families)
+ if not kernel then return end
+ local props = properties[kernel]
+ local mathml_core = props and props.mathml_core
+ local mathml_table = props and (props.mathml_table or mathml_core)
+ if mathml_table ~= nil then return mathml_table, mathml_core end
+ local mathml_filter = props and props.mathml_filter -- Kind of pointless since the arguments are literals, but present for consistency
+ local id = kernel.id
+ if id == math_char_t then
+ local fam = kernel.fam
+ local char = remap_lookup[fam << 21 | kernel.char]
+ local elem = digit_map[char] and 'mn' or 'mi'
+ local result = {[0] = elem,
+ char,
+ ['tex:family'] = fam ~= 0 and fam or nil,
+ mathvariant = utf8.len(char) == 1 and elem == 'mi' and utf8.codepoint(char) < 0x10000 and 'normal' or nil,
+ [':nodes'] = {kernel},
+ }
+ if mathml_filter then
+ return mathml_filter(result, result)
+ else
+ return result, result
+ end
+ elseif id == sub_box_t then
+ local result
+ if kernel.list.id == hlist_t then -- We directly give up for vlists
+ result = to_text(kernel.list.head)
+ else
+ result = {[0] = 'mi', {[0] = 'mglyph', ['tex:box'] = kernel.list, [':nodes'] = {kernel}}}
+ end
+ if mathml_filter then
+ return mathml_filter(result, result)
+ else
+ return result, result
+ end
+ elseif id == sub_mlist_t then
+ if mathml_filter then
+ return mathml_filter(nodes_to_table(kernel.list, cur_style, text_families))
+ else
+ return nodes_to_table(kernel.list, cur_style, text_families)
+ end
+ else
+ error'confusion'
+ end
+end
+
+local function do_sub_sup(t, core, n, cur_style, text_families)
+ local sub = kernel_to_table(n.sub, sub_style(cur_style), text_families)
+ local sup = kernel_to_table(n.sup, sup_style(cur_style), text_families)
+ if sub then
+ if sup then
+ return {[0] = 'msubsup', t, sub, sup}, core
+ else
+ return {[0] = 'msub', t, sub}, core
+ end
+ elseif sup then
+ return {[0] = 'msup', t, sup}, core
+ else
+ return t, core
+ end
+end
+
+
+-- If we encounter a . or , after a number, test if it's followed by another number and in that case convert it into a mn
+local function maybe_to_mn(noad, core)
+ if noad.sub or noad.sup then return end
+ local after = noad.next
+ if not after then return end
+ if after.id ~= noad_t then return end
+ if after.subtype ~= noad_ord then return end
+ after = after.nucleus
+ if not after then return end
+ if after.id ~= math_char_t then return end
+ if not digit_map[remap_lookup[after.fam << 21 | after.char]] then return end
+ core[0] = 'mn'
+end
+
+local function noad_to_table(noad, sub, cur_style, joining, bin_replacements, text_families)
+ local nucleus, core = kernel_to_table(noad.nucleus, sub == noad_over and cur_style//2*2+1 or cur_style, text_families)
+ if not nucleus then return end
+ if core and core[0] == 'mo' and core.minsize and not core.maxsize then
+ core.maxsize = core.minsize -- This happens when a half-specified delimiter appears alone in a list.
+ -- If it has a minimal size, it should be fixed to that size (since there is nothing bigger in it's list)
+ end
+ if sub == noad_ord and not (bin_replacements[node.direct.todirect(noad)] or (nucleus == core and #core == 1 and always_mo[core[1]])) then
+ if core and core[0] == 'mo' then
+ core['tex:class'] = nil
+ if not core.minsize and not core.movablelimits then
+ core[0] = 'mi'
+ core.movablelimits = nil
+ core.mathvariant = #core == 1 and type(core[1]) == 'string' and utf8.len(core[1]) == 1 and utf8.codepoint(core[1]) < 0x10000 and 'normal' or nil
+ core.stretchy, core.lspace, core.rspace = nil
+ end
+ end
+ if nucleus == core and #core == 1 then
+ if joining and joining[0] == 'mn' and core[0] == 'mi' and (core[1] == '.' or core[1] == ',') and maybe_to_mn(noad, core)
+ or core[0] == 'mn' or text_families[core['tex:family'] or 0] then
+ if joining and core[0] == joining[0] and core['tex:family'] == joining['tex:family'] then
+ joining[#joining+1] = core[1]
+ local cnodes = core[':nodes']
+ if cnodes then -- very likely
+ local jnodes = joining[':nodes']
+ if jnodes then -- very likely
+ table.move(cnodes, 1, #cnodes, #jnodes+1, jnodes)
+ else
+ joining[':nodes'] = cnodes
+ end
+ end
+ nucleus = do_sub_sup(joining, joining, noad, cur_style, text_families)
+ if nucleus == joining then
+ return nil, joining, joining
+ else
+ return nucleus, joining, false
+ end
+ elseif not noad.sub and not noad.sup then
+ return core, core, core
+ end
+ end
+ end
+ elseif sub == noad_op or sub == noad_oplimits or sub == noad_opnolimits or sub == noad_bin or sub == noad_rel or sub == noad_open
+ or sub == noad_close or sub == noad_punct or sub == noad_inner or sub == noad_ord then
+ if not core or not core[0] then
+ -- TODO
+ else
+ core[0] = 'mo'
+ if not core.minsize then
+ if stretchy[core[1]] then core.stretchy = false end
+ end
+ if core.mathvariant == 'normal' then core.mathvariant = nil end
+ core.lspace, core.rspace = 0, 0
+ end
+ nucleus['tex:class'] = noad_names[sub]
+
+ if (noad.sup or noad.sub) and (sub == noad_op or sub == noad_oplimits) then
+ if core and core[0] == 'mo' then core.movablelimits = sub == noad_op end
+ local sub = kernel_to_table(noad.sub, sub_style(cur_style), text_families)
+ local sup = kernel_to_table(noad.sup, sup_style(cur_style), text_families)
+ return {[0] = sup and (sub and 'munderover' or 'mover') or 'munder',
+ nucleus,
+ sub or sup,
+ sub and sup,
+ }, core
+ end
+ elseif sub == noad_under then
+ return {[0] = 'munder',
+ nucleus,
+ {[0] = 'mo', '_',},
+ }, core
+ elseif sub == noad_over then
+ return {[0] = 'mover',
+ nucleus,
+ {[0] = 'mo', '\u{203E}',},
+ }, core
+ elseif sub == noad_vcenter then -- Ignored. Nucleus will need special handling anyway
+ else
+ error[[confusion]]
+ end
+ return do_sub_sup(nucleus, core, noad, cur_style, text_families)
+end
+
+local function accent_to_table(accent, sub, cur_style, text_families)
+ local nucleus, core = kernel_to_table(accent.nucleus, cur_style//2*2+1, text_families)
+ local top_acc = acc_to_table(accent.accent, cur_style, sub & 1 == 1)
+ local bot_acc = acc_to_table(accent.bot_accent, cur_style, sub & 2 == 2)
+ return {[0] = top_acc and (bot_acc and 'munderover' or 'mover') or 'munder',
+ nucleus,
+ bot_acc or top_acc,
+ bot_acc and top_acc,
+ }, core
+end
+
+local style_table = {
+ display = {displaystyle = "true", scriptlevel = "0"},
+ text = {displaystyle = "false", scriptlevel = "0"},
+ script = {displaystyle = "false", scriptlevel = "1"},
+ scriptscript = {displaystyle = "false", scriptlevel = "2"},
+}
+
+style_table.crampeddisplay, style_table.crampedtext,
+style_table.crampedscript, style_table.crampedscriptscript =
+ style_table.display, style_table.text,
+ style_table.script, style_table.scriptscript
+
+local function radical_to_table(radical, sub, cur_style, text_families)
+ local kind = radical_sub[sub]
+ local nucleus, core = kernel_to_table(radical.nucleus, cur_style//2*2+1, text_families)
+ local left = delim_to_table(radical.left)
+ local elem
+ if kind == 'radical' or kind == 'uradical' then
+ -- FIXME: Check that this is really a square root
+ elem, core = {[0] = 'msqrt', nucleus, }, nil
+ elseif kind == 'uroot' then
+ -- FIXME: Check that this is really a root
+ elem, core = {[0] = 'msqrt', nucleus, kernel_to_table(radical.degree, 7, text_families)}, nil
+ elseif kind == 'uunderdelimiter' then
+ elem, core = {[0] = 'munder', left, nucleus}, left
+ elseif kind == 'uoverdelimiter' then
+ elem, core = {[0] = 'mover', left, nucleus}, left
+ elseif kind == 'udelimiterunder' then
+ elem = {[0] = 'munder', nucleus, left}
+ elseif kind == 'udelimiterover' then
+ elem = {[0] = 'mover', nucleus, left}
+ else
+ error[[confusion]]
+ end
+ return do_sub_sup(elem, core, radical, cur_style, text_families)
+end
+
+local function fraction_to_table(fraction, sub, cur_style, text_families)
+ local num, core = kernel_to_table(fraction.num, cur_style + 2 - cur_style//6*2, text_families)
+ local denom = kernel_to_table(fraction.denom, cur_style//2*2 + 3 - cur_style//6*2, text_families)
+ local left = delim_to_table(fraction.left)
+ local right = delim_to_table(fraction.right)
+ local mfrac = {[0] = 'mfrac',
+ linethickness = fraction.width and fraction.width == 0 and 0 or nil,
+ bevelled = fraction.middle and "true" or nil,
+ num,
+ denom,
+ }
+ if left then
+ return {[0] = 'mrow',
+ left,
+ mfrac,
+ right, -- might be nil
+ }
+ elseif right then
+ return {[0] = 'mrow',
+ mfrac,
+ right,
+ }
+ else
+ return mfrac, core
+ end
+end
+
+local function fence_to_table(fence, sub, cur_style)
+ local delim, core = delim_to_table(fence.delim)
+ if core[0] ~= 'mo' then
+ return delim, core
+ end
+ core.fence, core.symmetric = 'true', 'true'
+ local options = fence.options
+ local axis
+ if fence.height ~= 0 or fence.depth ~= 0 then
+ axis = 0xA == options & 0xA
+ local exact = 0x18 == options & 0x18
+ -- We treat them always as exact. mpadded would allow us to support
+ -- non-exact ones too and I will implement that if I ever encounter
+ -- someone who does that intentionally. Until then, we warn people
+ -- since such fences are absurd.
+ if not exact then
+ texio.write_nl'luamml: The document uses a fence with \z
+ explicit dimensions but without the "exact" option. \z
+ This is probably a mistake.'
+ end
+ core.minsize = string.format("%.3fpt", (fence.height + fence.depth)/65781.76)
+ core.maxsize = core.minsize
+ else
+ axis = 0xC ~= options & 0xC
+ end
+ if not axis then
+ texio.write_nl'luamml: Baseline centered fence will be centered around math axis instead'
+ end
+ return delim, core
+end
+
+local function space_to_table(amount, sub, cur_style)
+ if amount == 0 then return end
+ if sub == 99 then -- TODO magic number
+ -- 18*2^16=1179648
+ return {[0] = 'mspace', width = string.format("%.3fem", amount/1179648)}, space_like
+ else
+ -- 65781.76=tex.sp'100bp'/100
+ return {[0] = 'mspace', width = string.format("%.3fpt", amount/65781.76)}, space_like
+ end
+end
+
+local running_length = -1073741824
+local function rule_to_table(rule, sub, cur_style)
+ local width = string.format("%.3fpt", rule.width/65781.76)
+ local height = rule.height
+ if height == running_length then
+ height = '0.8em'
+ else
+ height = string.format("%.3fpt", height/65781.76)
+ end
+ local depth = rule.depth
+ if depth == running_length then
+ depth = '0.2em'
+ else
+ depth = string.format("%.3fpt", depth/65781.76)
+ end
+ return {[0] = 'mspace', mathbackground = 'currentColor', width = width, height = height, depth = depth}, space_like
+end
+
+-- The only part which changes the nodelist, we are converting bin into ord
+-- nodes in the same way TeX would do it later anyway.
+local function cleanup_mathbin(head)
+ local replacements = {}
+ local last = 'open' -- last sub if id was noad_t, left fence acts fakes being a open noad, bin are themselves. Every other noad is ord
+ for n, id, sub in node.traverse(head) do
+ if id == noad_t then
+ if sub == noad_bin then
+ if node.is_node(last) or last == noad_opdisplaylimits
+ or last == noad_oplimits or last == noad_opnolimits
+ or last == noad_rel or last == noad_open or last == noad_punct then
+ replacements[node.direct.todirect(n)] = true
+ n.subtype, last = noad_ord, noad_ord
+ else
+ last = n
+ end
+ else
+ if (sub == noad_rel or sub == noad_close or sub == noad_punct)
+ and node.is_node(last) then
+ replacements[node.direct.todirect(last)] = true
+ last.subtype = noad_ord
+ end
+ last = sub
+ end
+ elseif id == fence_t then
+ if sub == fence_sub.left then
+ last = noad_open
+ else
+ if node.is_node(last) then
+ replacements[node.direct.todirect(last)] = true
+ last.subtype = noad_ord, noad_ord
+ end
+ last = noad_ord
+ end
+ elseif id == fraction_t or id == radical_t or id == accent_t then
+ last = noad_ord
+ end
+ end
+ if node.is_node(last) then
+ replacements[node.direct.todirect(last)] = true
+ last.subtype = noad_ord
+ end
+ return replacements
+end
+
+function nodes_to_table(head, cur_style, text_families)
+ local bin_replacements = cleanup_mathbin(head)
+ local t = {[0] = 'mrow'}
+ local result = t
+ local nonscript
+ local core, last_noad, last_core, joining = space_like, nil, nil, nil
+ for n, id, sub in node.traverse(head) do
+ local new_core, new_joining, new_node, new_noad
+ local props = properties[n]
+ local mathml_core = props and props.mathml_core
+ local mathml_table = props and (props.mathml_table or mathml_core)
+ if mathml_table ~= nil then
+ new_node, new_core = mathml_table, mathml_core
+ elseif id == noad_t then
+ local new_n
+ new_n, new_core, new_joining = noad_to_table(n, sub, cur_style, joining, bin_replacements, text_families)
+ if new_joining == false then
+ t[#t], new_joining = new_n, nil
+ else
+ new_node = new_n -- might be nil
+ end
+ new_noad = sub
+ elseif id == accent_t then
+ new_node, new_core = accent_to_table(n, sub, cur_style, text_families)
+ new_noad = noad_ord
+ elseif id == style_t then
+ if sub ~= cur_style then
+ if #t == 0 then
+ t[0] = 'mstyle'
+ else
+ local new_t = {[0] = 'mstyle'}
+ t[#t+1] = new_t
+ t = new_t
+ end
+ if sub < 2 then
+ t.displaystyle, t.scriptlevel = true, 0
+ else
+ t.displaystyle, t.scriptlevel = false, sub//2 - 1
+ end
+ cur_style = sub
+ end
+ new_core = space_like
+ elseif id == choice_t then
+ local size = cur_style//2
+ new_node, new_core = nodes_to_table(n[size == 0 and 'display'
+ or size == 1 and 'text'
+ or size == 2 and 'script'
+ or size == 3 and 'scriptscript'
+ or assert(false)], 2*size, text_families), space_like
+ elseif id == radical_t then
+ new_node, new_core = radical_to_table(n, sub, cur_style, text_families)
+ new_noad = noad_ord
+ elseif id == fraction_t then
+ new_node, new_core = fraction_to_table(n, sub, cur_style, text_families)
+ new_noad = noad_inner
+ elseif id == fence_t then
+ new_node, new_core = fence_to_table(n, sub, cur_style)
+ local class = n.class
+ new_noad = class >= 0 and class or sub == fence_sub.left and noad_open or noad_close
+ elseif id == kern_t then
+ if not nonscript then
+ new_node, new_core = space_to_table(n.kern, sub, cur_style)
+ end
+ elseif id == glue_t then
+ if cur_style >= 4 or not nonscript then
+ if sub == 98 then -- TODO magic number
+ nonscript = true
+ else
+ new_node, new_core = space_to_table(n.width, sub, cur_style)
+ end
+ end
+ elseif id == rule_t then
+ new_node, new_core = rule_to_table(n, sub, cur_style)
+ -- elseif id == disc_t then -- Uncommon, does not play nicely with math mode and no sensible mapping anyway
+ end -- The other possible ids are whatsit, penalty, adjust, ins, mark. Ignore them.
+ nonscript = nil
+ if core and new_core ~= space_like then
+ core = core == space_like and new_core or nil
+ end
+ if new_node then
+ if new_noad then
+ local space = last_noad and (cur_style >= 4 and spacing_table_script or spacing_table)[last_noad + 1][new_noad + 1] or 0
+ if assert(space) ~= 0 then
+ if new_core and new_core[0] == 'mo' then
+ new_core.lspace = space
+ elseif last_core and last_core[0] == 'mo' then
+ last_core.rspace = space
+ else
+ t[#t+1] = {[0] = 'mspace', width = space} -- TODO Move into operators whenever possible
+ end
+ end
+ last_noad, last_core = new_noad, new_core
+ elseif new_node[0] ~= 'mspace' or new_node.mathbackground then
+ last_core = nil
+ end
+ t[#t+1] = new_node
+ end
+ joining = new_joining
+ end
+ -- In TeX, groups are never space like, so we insert an artificial node instead.
+ -- This node should be ignored for most purposes
+ if core == space_like then
+ core = {[0] = 'mi', ['tex:ignore'] = 'true'}
+ result[#result+1] = core
+ end
+ if t[0] == 'mrow' and #t == 1 then
+ assert(t == result)
+ result = t[1]
+ end
+ local mathml_filter = props and props.mathml_filter
+ if mathml_filter then
+ return mathml_filter(result, core)
+ else
+ return result, core
+ end
+end
+
+local function register_remap(family, mapping)
+ family = family << 21
+ for from, to in next, mapping do
+ remap_lookup[family | from] = utf8.char(to)
+ end
+end
+
+local function to_math(root, style)
+ if root[0] == 'mrow' then
+ root[0] = 'math'
+ else
+ root = {[0] = 'math', root}
+ end
+ root.xmlns = 'http://www.w3.org/1998/Math/MathML'
+ root['xmlns:tex'] = 'http://typesetting.eu/2021/LuaMathML'
+ if style < 2 then
+ root.display = 'block'
+ end
+ return root
+end
+
+return {
+ register_family = register_remap,
+ process = function(head, style, families) return nodes_to_table(head, style or 2, families) end,
+ make_root = to_math,
+}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-data-combining.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-data-combining.lua
new file mode 100644
index 00000000000..2083a3f6540
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-data-combining.lua
@@ -0,0 +1,27 @@
+return {
+ ["\u{0332}"] = "\u{2212}",
+ ["\u{0330}"] = "\u{02DC}",
+ ["\u{0328}"] = "\u{02DB}",
+ ["\u{20EF}"] = "\u{2192}",
+ ["\u{032C}"] = "\u{02C7}",
+ ["\u{032E}"] = "\u{02D8}",
+ ["\u{0306}"] = "\u{02D8}",
+ ["\u{030B}"] = "\u{02DD}",
+ ["\u{0302}"] = "\u{02C6}",
+ ["\u{0324}"] = "\u{00A8}",
+ ["\u{0317}"] = "\u{00B4}",
+ ["\u{031F}"] = "\u{002B}",
+ ["\u{0307}"] = "\u{002E}",
+ ["\u{0305}"] = "\u{2212}",
+ ["\u{0303}"] = "\u{02DC}",
+ ["\u{0316}"] = "\u{0060}",
+ ["\u{0301}"] = "\u{00B4}",
+ ["\u{030C}"] = "\u{02C7}",
+ ["\u{0327}"] = "\u{00B8}",
+ ["\u{0308}"] = "\u{00A8}",
+ ["\u{0300}"] = "\u{0060}",
+ ["\u{0323}"] = "\u{002E}",
+ ["\u{0304}"] = "\u{00AF}",
+ ["\u{032D}"] = "\u{005E}",
+ ["\u{20D7}"] = "\u{2192}",
+}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-data-stretchy.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-data-stretchy.lua
new file mode 100644
index 00000000000..72f84065c00
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-data-stretchy.lua
@@ -0,0 +1,500 @@
+return {
+ -- The following is
+ -- xq -r '.unicode.charlist.character[] | select(.["operator-dictionary"] | if type == "array" then .[] else . end | .["@stretchy"]) | .["@id"] | sub("U"; "") | "[\"\\u{\(.)}\"] = true," ' < unicode.xml
+["\u{00028}"] = true,
+["\u{00029}"] = true,
+["\u{0005B}"] = true,
+["\u{0005D}"] = true,
+["\u{0005E}"] = true,
+["\u{0005F}"] = true,
+["\u{0007B}"] = true,
+["\u{0007C}"] = true,
+["\u{0007C}"] = true,
+["\u{0007D}"] = true,
+["\u{0007E}"] = true,
+["\u{000AF}"] = true,
+["\u{002C6}"] = true,
+["\u{002C7}"] = true,
+["\u{002C9}"] = true,
+["\u{002CD}"] = true,
+["\u{002DC}"] = true,
+["\u{002F7}"] = true,
+["\u{00302}"] = true,
+["\u{02016}"] = true,
+["\u{02016}"] = true,
+["\u{0203E}"] = true,
+["\u{02190}"] = true,
+["\u{02191}"] = true,
+["\u{02192}"] = true,
+["\u{02193}"] = true,
+["\u{02194}"] = true,
+["\u{02195}"] = true,
+["\u{0219A}"] = true,
+["\u{0219B}"] = true,
+["\u{0219C}"] = true,
+["\u{0219D}"] = true,
+["\u{0219E}"] = true,
+["\u{0219F}"] = true,
+["\u{021A0}"] = true,
+["\u{021A1}"] = true,
+["\u{021A2}"] = true,
+["\u{021A3}"] = true,
+["\u{021A4}"] = true,
+["\u{021A5}"] = true,
+["\u{021A6}"] = true,
+["\u{021A7}"] = true,
+["\u{021A8}"] = true,
+["\u{021A9}"] = true,
+["\u{021AA}"] = true,
+["\u{021AB}"] = true,
+["\u{021AC}"] = true,
+["\u{021AD}"] = true,
+["\u{021AE}"] = true,
+["\u{021B0}"] = true,
+["\u{021B1}"] = true,
+["\u{021B2}"] = true,
+["\u{021B3}"] = true,
+["\u{021B4}"] = true,
+["\u{021B5}"] = true,
+["\u{021B9}"] = true,
+["\u{021BC}"] = true,
+["\u{021BD}"] = true,
+["\u{021BE}"] = true,
+["\u{021BF}"] = true,
+["\u{021C0}"] = true,
+["\u{021C1}"] = true,
+["\u{021C2}"] = true,
+["\u{021C3}"] = true,
+["\u{021C4}"] = true,
+["\u{021C5}"] = true,
+["\u{021C6}"] = true,
+["\u{021C7}"] = true,
+["\u{021C8}"] = true,
+["\u{021C9}"] = true,
+["\u{021CA}"] = true,
+["\u{021CB}"] = true,
+["\u{021CC}"] = true,
+["\u{021CD}"] = true,
+["\u{021CE}"] = true,
+["\u{021CF}"] = true,
+["\u{021D0}"] = true,
+["\u{021D1}"] = true,
+["\u{021D2}"] = true,
+["\u{021D3}"] = true,
+["\u{021D4}"] = true,
+["\u{021D5}"] = true,
+["\u{021DA}"] = true,
+["\u{021DB}"] = true,
+["\u{021DC}"] = true,
+["\u{021DD}"] = true,
+["\u{021DE}"] = true,
+["\u{021DF}"] = true,
+["\u{021E0}"] = true,
+["\u{021E1}"] = true,
+["\u{021E2}"] = true,
+["\u{021E3}"] = true,
+["\u{021E4}"] = true,
+["\u{021E5}"] = true,
+["\u{021E6}"] = true,
+["\u{021E7}"] = true,
+["\u{021E8}"] = true,
+["\u{021E9}"] = true,
+["\u{021EA}"] = true,
+["\u{021EB}"] = true,
+["\u{021EC}"] = true,
+["\u{021ED}"] = true,
+["\u{021EE}"] = true,
+["\u{021EF}"] = true,
+["\u{021F0}"] = true,
+["\u{021F3}"] = true,
+["\u{021F4}"] = true,
+["\u{021F5}"] = true,
+["\u{021F6}"] = true,
+["\u{021F7}"] = true,
+["\u{021F8}"] = true,
+["\u{021F9}"] = true,
+["\u{021FA}"] = true,
+["\u{021FB}"] = true,
+["\u{021FC}"] = true,
+["\u{021FD}"] = true,
+["\u{021FE}"] = true,
+["\u{021FF}"] = true,
+["\u{02308}"] = true,
+["\u{02309}"] = true,
+["\u{0230A}"] = true,
+["\u{0230B}"] = true,
+["\u{02322}"] = true,
+["\u{02323}"] = true,
+["\u{02329}"] = true,
+["\u{0232A}"] = true,
+["\u{023B4}"] = true,
+["\u{023B5}"] = true,
+["\u{023DC}"] = true,
+["\u{023DD}"] = true,
+["\u{023DE}"] = true,
+["\u{023DF}"] = true,
+["\u{023E0}"] = true,
+["\u{023E1}"] = true,
+["\u{02772}"] = true,
+["\u{02773}"] = true,
+["\u{02794}"] = true,
+["\u{02799}"] = true,
+["\u{0279B}"] = true,
+["\u{0279C}"] = true,
+["\u{0279D}"] = true,
+["\u{0279E}"] = true,
+["\u{0279F}"] = true,
+["\u{027A0}"] = true,
+["\u{027A1}"] = true,
+["\u{027A5}"] = true,
+["\u{027A6}"] = true,
+["\u{027A8}"] = true,
+["\u{027A9}"] = true,
+["\u{027AA}"] = true,
+["\u{027AB}"] = true,
+["\u{027AC}"] = true,
+["\u{027AD}"] = true,
+["\u{027AE}"] = true,
+["\u{027AF}"] = true,
+["\u{027B1}"] = true,
+["\u{027B3}"] = true,
+["\u{027B5}"] = true,
+["\u{027B8}"] = true,
+["\u{027BA}"] = true,
+["\u{027BB}"] = true,
+["\u{027BC}"] = true,
+["\u{027BD}"] = true,
+["\u{027BE}"] = true,
+["\u{027E6}"] = true,
+["\u{027E7}"] = true,
+["\u{027E8}"] = true,
+["\u{027E9}"] = true,
+["\u{027EA}"] = true,
+["\u{027EB}"] = true,
+["\u{027EC}"] = true,
+["\u{027ED}"] = true,
+["\u{027EE}"] = true,
+["\u{027EF}"] = true,
+["\u{027F0}"] = true,
+["\u{027F1}"] = true,
+["\u{027F4}"] = true,
+["\u{027F5}"] = true,
+["\u{027F6}"] = true,
+["\u{027F7}"] = true,
+["\u{027F8}"] = true,
+["\u{027F9}"] = true,
+["\u{027FA}"] = true,
+["\u{027FB}"] = true,
+["\u{027FC}"] = true,
+["\u{027FD}"] = true,
+["\u{027FE}"] = true,
+["\u{027FF}"] = true,
+["\u{02900}"] = true,
+["\u{02901}"] = true,
+["\u{02902}"] = true,
+["\u{02903}"] = true,
+["\u{02904}"] = true,
+["\u{02905}"] = true,
+["\u{02906}"] = true,
+["\u{02907}"] = true,
+["\u{02908}"] = true,
+["\u{02909}"] = true,
+["\u{0290A}"] = true,
+["\u{0290B}"] = true,
+["\u{0290C}"] = true,
+["\u{0290D}"] = true,
+["\u{0290E}"] = true,
+["\u{0290F}"] = true,
+["\u{02910}"] = true,
+["\u{02911}"] = true,
+["\u{02912}"] = true,
+["\u{02913}"] = true,
+["\u{02914}"] = true,
+["\u{02915}"] = true,
+["\u{02916}"] = true,
+["\u{02917}"] = true,
+["\u{02918}"] = true,
+["\u{02919}"] = true,
+["\u{0291A}"] = true,
+["\u{0291B}"] = true,
+["\u{0291C}"] = true,
+["\u{0291D}"] = true,
+["\u{0291E}"] = true,
+["\u{0291F}"] = true,
+["\u{02920}"] = true,
+["\u{02934}"] = true,
+["\u{02935}"] = true,
+["\u{02936}"] = true,
+["\u{02937}"] = true,
+["\u{02942}"] = true,
+["\u{02943}"] = true,
+["\u{02944}"] = true,
+["\u{02945}"] = true,
+["\u{02946}"] = true,
+["\u{02947}"] = true,
+["\u{02948}"] = true,
+["\u{02949}"] = true,
+["\u{0294A}"] = true,
+["\u{0294B}"] = true,
+["\u{0294C}"] = true,
+["\u{0294D}"] = true,
+["\u{0294E}"] = true,
+["\u{0294F}"] = true,
+["\u{02950}"] = true,
+["\u{02951}"] = true,
+["\u{02952}"] = true,
+["\u{02953}"] = true,
+["\u{02954}"] = true,
+["\u{02955}"] = true,
+["\u{02956}"] = true,
+["\u{02957}"] = true,
+["\u{02958}"] = true,
+["\u{02959}"] = true,
+["\u{0295A}"] = true,
+["\u{0295B}"] = true,
+["\u{0295C}"] = true,
+["\u{0295D}"] = true,
+["\u{0295E}"] = true,
+["\u{0295F}"] = true,
+["\u{02960}"] = true,
+["\u{02961}"] = true,
+["\u{02962}"] = true,
+["\u{02963}"] = true,
+["\u{02964}"] = true,
+["\u{02965}"] = true,
+["\u{02966}"] = true,
+["\u{02967}"] = true,
+["\u{02968}"] = true,
+["\u{02969}"] = true,
+["\u{0296A}"] = true,
+["\u{0296B}"] = true,
+["\u{0296C}"] = true,
+["\u{0296D}"] = true,
+["\u{0296E}"] = true,
+["\u{0296F}"] = true,
+["\u{02970}"] = true,
+["\u{02971}"] = true,
+["\u{02972}"] = true,
+["\u{02973}"] = true,
+["\u{02974}"] = true,
+["\u{02975}"] = true,
+["\u{0297C}"] = true,
+["\u{0297D}"] = true,
+["\u{0297E}"] = true,
+["\u{0297F}"] = true,
+["\u{02980}"] = true,
+["\u{02980}"] = true,
+["\u{02983}"] = true,
+["\u{02984}"] = true,
+["\u{02985}"] = true,
+["\u{02986}"] = true,
+["\u{02987}"] = true,
+["\u{02988}"] = true,
+["\u{02989}"] = true,
+["\u{0298A}"] = true,
+["\u{0298B}"] = true,
+["\u{0298C}"] = true,
+["\u{0298D}"] = true,
+["\u{0298E}"] = true,
+["\u{0298F}"] = true,
+["\u{02990}"] = true,
+["\u{02991}"] = true,
+["\u{02992}"] = true,
+["\u{02993}"] = true,
+["\u{02994}"] = true,
+["\u{02995}"] = true,
+["\u{02996}"] = true,
+["\u{02997}"] = true,
+["\u{02998}"] = true,
+["\u{02999}"] = true,
+["\u{02999}"] = true,
+["\u{029D8}"] = true,
+["\u{029D9}"] = true,
+["\u{029DA}"] = true,
+["\u{029DB}"] = true,
+["\u{029FC}"] = true,
+["\u{029FD}"] = true,
+["\u{02B04}"] = true,
+["\u{02B05}"] = true,
+["\u{02B06}"] = true,
+["\u{02B07}"] = true,
+["\u{02B0C}"] = true,
+["\u{02B0D}"] = true,
+["\u{02B0E}"] = true,
+["\u{02B0F}"] = true,
+["\u{02B10}"] = true,
+["\u{02B11}"] = true,
+["\u{02B30}"] = true,
+["\u{02B31}"] = true,
+["\u{02B32}"] = true,
+["\u{02B33}"] = true,
+["\u{02B34}"] = true,
+["\u{02B35}"] = true,
+["\u{02B36}"] = true,
+["\u{02B37}"] = true,
+["\u{02B38}"] = true,
+["\u{02B39}"] = true,
+["\u{02B3A}"] = true,
+["\u{02B3B}"] = true,
+["\u{02B3C}"] = true,
+["\u{02B3D}"] = true,
+["\u{02B3E}"] = true,
+["\u{02B40}"] = true,
+["\u{02B41}"] = true,
+["\u{02B42}"] = true,
+["\u{02B43}"] = true,
+["\u{02B44}"] = true,
+["\u{02B45}"] = true,
+["\u{02B46}"] = true,
+["\u{02B47}"] = true,
+["\u{02B48}"] = true,
+["\u{02B49}"] = true,
+["\u{02B4A}"] = true,
+["\u{02B4B}"] = true,
+["\u{02B4C}"] = true,
+["\u{02B60}"] = true,
+["\u{02B61}"] = true,
+["\u{02B62}"] = true,
+["\u{02B63}"] = true,
+["\u{02B64}"] = true,
+["\u{02B65}"] = true,
+["\u{02B6A}"] = true,
+["\u{02B6B}"] = true,
+["\u{02B6C}"] = true,
+["\u{02B6D}"] = true,
+["\u{02B70}"] = true,
+["\u{02B71}"] = true,
+["\u{02B72}"] = true,
+["\u{02B73}"] = true,
+["\u{02B7A}"] = true,
+["\u{02B7B}"] = true,
+["\u{02B7C}"] = true,
+["\u{02B7D}"] = true,
+["\u{02B80}"] = true,
+["\u{02B81}"] = true,
+["\u{02B82}"] = true,
+["\u{02B83}"] = true,
+["\u{02B84}"] = true,
+["\u{02B85}"] = true,
+["\u{02B86}"] = true,
+["\u{02B87}"] = true,
+["\u{02B95}"] = true,
+["\u{02BA0}"] = true,
+["\u{02BA1}"] = true,
+["\u{02BA2}"] = true,
+["\u{02BA3}"] = true,
+["\u{02BA4}"] = true,
+["\u{02BA5}"] = true,
+["\u{02BA6}"] = true,
+["\u{02BA7}"] = true,
+["\u{02BA8}"] = true,
+["\u{02BA9}"] = true,
+["\u{02BAA}"] = true,
+["\u{02BAB}"] = true,
+["\u{02BAC}"] = true,
+["\u{02BAD}"] = true,
+["\u{02BAE}"] = true,
+["\u{02BAF}"] = true,
+["\u{02BB8}"] = true,
+["\u{1EEF0}"] = true,
+["\u{1EEF1}"] = true,
+["\u{1F800}"] = true,
+["\u{1F801}"] = true,
+["\u{1F802}"] = true,
+["\u{1F803}"] = true,
+["\u{1F804}"] = true,
+["\u{1F805}"] = true,
+["\u{1F806}"] = true,
+["\u{1F807}"] = true,
+["\u{1F808}"] = true,
+["\u{1F809}"] = true,
+["\u{1F80A}"] = true,
+["\u{1F80B}"] = true,
+["\u{1F810}"] = true,
+["\u{1F811}"] = true,
+["\u{1F812}"] = true,
+["\u{1F813}"] = true,
+["\u{1F814}"] = true,
+["\u{1F815}"] = true,
+["\u{1F816}"] = true,
+["\u{1F817}"] = true,
+["\u{1F818}"] = true,
+["\u{1F819}"] = true,
+["\u{1F81A}"] = true,
+["\u{1F81B}"] = true,
+["\u{1F81C}"] = true,
+["\u{1F81D}"] = true,
+["\u{1F81E}"] = true,
+["\u{1F81F}"] = true,
+["\u{1F820}"] = true,
+["\u{1F821}"] = true,
+["\u{1F822}"] = true,
+["\u{1F823}"] = true,
+["\u{1F824}"] = true,
+["\u{1F825}"] = true,
+["\u{1F826}"] = true,
+["\u{1F827}"] = true,
+["\u{1F828}"] = true,
+["\u{1F829}"] = true,
+["\u{1F82A}"] = true,
+["\u{1F82B}"] = true,
+["\u{1F82C}"] = true,
+["\u{1F82D}"] = true,
+["\u{1F82E}"] = true,
+["\u{1F82F}"] = true,
+["\u{1F830}"] = true,
+["\u{1F831}"] = true,
+["\u{1F832}"] = true,
+["\u{1F833}"] = true,
+["\u{1F834}"] = true,
+["\u{1F835}"] = true,
+["\u{1F836}"] = true,
+["\u{1F837}"] = true,
+["\u{1F844}"] = true,
+["\u{1F845}"] = true,
+["\u{1F846}"] = true,
+["\u{1F847}"] = true,
+["\u{1F850}"] = true,
+["\u{1F851}"] = true,
+["\u{1F852}"] = true,
+["\u{1F853}"] = true,
+["\u{1F858}"] = true,
+["\u{1F859}"] = true,
+["\u{1F860}"] = true,
+["\u{1F861}"] = true,
+["\u{1F862}"] = true,
+["\u{1F863}"] = true,
+["\u{1F868}"] = true,
+["\u{1F869}"] = true,
+["\u{1F86A}"] = true,
+["\u{1F86B}"] = true,
+["\u{1F870}"] = true,
+["\u{1F871}"] = true,
+["\u{1F872}"] = true,
+["\u{1F873}"] = true,
+["\u{1F878}"] = true,
+["\u{1F879}"] = true,
+["\u{1F87A}"] = true,
+["\u{1F87B}"] = true,
+["\u{1F880}"] = true,
+["\u{1F881}"] = true,
+["\u{1F882}"] = true,
+["\u{1F883}"] = true,
+["\u{1F898}"] = true,
+["\u{1F899}"] = true,
+["\u{1F89A}"] = true,
+["\u{1F89B}"] = true,
+["\u{1F8A0}"] = true,
+["\u{1F8A1}"] = true,
+["\u{1F8A2}"] = true,
+["\u{1F8A3}"] = true,
+["\u{1F8A4}"] = true,
+["\u{1F8A5}"] = true,
+["\u{1F8A6}"] = true,
+["\u{1F8A7}"] = true,
+["\u{1F8A8}"] = true,
+["\u{1F8A9}"] = true,
+["\u{1F8AA}"] = true,
+["\u{1F8AB}"] = true,
+-- till here
+}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-demo.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-demo.sty
new file mode 100644
index 00000000000..9aabb38719d
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-demo.sty
@@ -0,0 +1,82 @@
+\NeedsTeXFormat{LaTeX2e}
+\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.}
+ \DeclareOption*{\msg_warning:nnx {luamml-demo} {pdftex-option-ignored} {\CurrentOption}}
+ \ProcessOptions\relax
+ \RequirePackage{luamml-pdf-demo}
+ \endinput
+}
+
+\RequirePackage{luamml}% Loading luamml is pretty much the point
+\RequirePackage{amsmath,array}% These are more or less expected in luamml especially for advanced constructs
+
+\AtBeginDocument{%
+ \@ifpackageloaded{unicode-math}{}{%
+ \RegisterFamilyMapping\symsymbols{oms}%
+ \RegisterFamilyMapping\symletters{oml}%
+ \RegisterFamilyMapping\symlargesymbols{omx}%
+ }
+}
+
+\bool_new:N \l__luamml_demo_structelem_bool
+
+\DeclareOption{tracing}{
+ \tracingmathml=2
+}
+\DeclareOption{structelem}{
+ \bool_set_true:N \l__luamml_demo_structelem_bool
+ \luamml_structelem:
+}
+\DeclareOption{files}{
+ \int_new:N \g__luamml_demo_mathml_int
+ \luamml_set_filename:n {
+ \immediateassignment \int_gincr:N \g__luamml_demo_mathml_int
+ \jobname -formula- \int_use:N \g__luamml_demo_mathml_int .xml
+ }
+}
+\DeclareOption{l3build}{
+ \luamml_set_filename:n {
+ \jobname .mml
+ }
+ \luamml_begin_single_file:
+}
+\ProcessOptions\relax
+
+\cs_new_eq:NN \LuaMMLSetFilename \luamml_set_filename:n
+
+\cs_generate_variant:Nn \pdffile_filespec:nnn {ene}
+\int_new:N \g__luamml_demo_af_int
+\cs_new_protected:Npn \LuaMMLTagAF #1#2 {
+ \tag_mc_end_push:
+ \int_gincr:N \g__luamml_demo_af_int
+ \exp_args:Ne \pdf_object_new:nn{__luamml_demo_\int_use:N \g__luamml_demo_af_int}{dict}
+ \exp_args:Ne \tag_struct_begin:n{tag=Formula,AF=__luamml_demo_\int_use:N \g__luamml_demo_af_int,#1}
+ \bool_if:NF \l__luamml_demo_structelem_bool {
+ \tag_mc_begin:n{tag=Formula}
+ }
+ #2
+ \group_begin:
+ \pdfdict_put:nnn {l_pdffile/Filespec} {AFRelationship}{/Supplement}
+ \pdffile_filespec:ene
+ { __luamml_demo_ \int_use:N \g__luamml_demo_af_int }
+ { test.xml }
+ { \luamml_get_last_mathml_stream:e{}\c_space_tl 0~R}
+ \group_end:
+ \bool_if:NF \l__luamml_demo_structelem_bool {
+ \tag_mc_end:
+ }
+ \tag_struct_end:
+ \tag_mc_begin_pop:n{}
+}
+
+\NewDocumentCommand\AnnotateFormula{ o m m }{%
+ \IfValueTF{#1}{%
+ \luamml_annotate:nen{#1}%
+ }{
+ \luamml_annotate:en
+ }{#2}{#3}
+}
+
+\cs_set_eq:NN \WriteoutFormula \luamml_pdf_write:
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-legacy-mappings.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-legacy-mappings.lua
new file mode 100644
index 00000000000..6a56b70dbdc
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-legacy-mappings.lua
@@ -0,0 +1,73 @@
+-- local remap_ot1 = {
+ -- 0x0393, 0x0394, 0x0398, 0x039B, 0x039E, 0x03A0, 0x03A3, 0x03A5,
+ -- 0x03A6, 0x03A8, 0x03A9, nil, nil, nil, nil, nil,
+-- }
+
+local remap_oml = { [0] =
+ -- Greek italic
+ 0x1D6E4, 0x1D6E5, 0x1D6E9, 0x1D6EC, 0x1D6EF, 0x1D6F1, 0x1D6F4, 0x1D6F6,
+ 0x1D6F7, 0x1D6F9, 0x1D6FA, 0x1D6FC, 0x1D6FD, 0x1D6FE, 0x1D6FF, 0x1D716,
+ 0x1D701, 0x1D702, 0x1D703, 0x1D704, 0x1D705, 0x1D706, 0x1D707, 0x1D708,
+ 0x1D709, 0x1D70B, 0x1D70C, 0x1D70E, 0x1D70F, 0x1D710, 0x1D719, 0x1D712,
+ 0x1D713, 0x1D714, 0x1D700, 0x1D717, 0x1D71B, 0x1D71A, 0x1D70D, 0x1D711,
+ -- Symbols. (The nils are hook parts)
+ 0x21BC, 0x21BD, 0x21C0, 0x21C1, nil, nil, 0x22BB, 0x22BC,
+ -- old style numerals (nobody should ever use these in math) and some punctuation
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 0x2E, 0x2C, 0x3C, 0x2F, 0x3E, 0x226D,
+ -- letters filled up with symbols
+ 0x2202, 0x1D434, 0x1D435, 0x1D436, 0x1D437, 0x1D438, 0x1D439, 0x1D43A,
+ 0x1D43B, 0x1D43C, 0x1D43D, 0x1D43E, 0x1D43F, 0x1D440, 0x1D441, 0x1D442,
+ 0x1D443, 0x1D444, 0x1D445, 0x1D446, 0x1D447, 0x1D448, 0x1D449, 0x1D44A,
+ 0x1D44B, 0x1D44C, 0x1D44D, 0x266D, 0x266E, 0x266F, 0x2323, 0x2322,
+ 0x2113, 0x1D44E, 0x1D44F, 0x1D450, 0x1D451, 0x1D452, 0x1D453, 0x1D454,
+ 0x210E, 0x1D456, 0x1D457, 0x1D458, 0x1D459, 0x1D45A, 0x1D45B, 0x1D45C,
+ 0x1D45D, 0x1D45E, 0x1D45F, 0x1D460, 0x1D461, 0x1D462, 0x1D463, 0x1D464,
+ 0x1D465, 0x1D466, 0x1D467, 0x1D6A4, 0x1D6A5, 0x2118, 0x2192, nil,
+}
+
+-- Something fishy here. Starting with "3D the entries seem wrong
+local remap_oms = { [0] =
+ 0x2212, 0x22C5, 0xD7, 0x2A, 0xF7, 0x22C4, 0xB1, 0x2213,
+ 0x2295, 0x2296, 0x2297, 0x2298, 0x2299, 0x25CB, 0x2218, 0x2219,
+ 0x224D, 0x2261, 0x2286, 0x2287, 0x2264, 0x2265, 0x2AAF, 0x2AB0,
+ 0x223C, 0x2248, 0x2282, 0x2283, 0x226A, 0x226B, 0x227A, 0x227B,
+ 0x2190, 0x2192, 0x2191, 0x2193, 0x2194, 0x2197, 0x2198, 0x2243,
+ 0x21D0, 0x21D2, 0x21D1, 0x21D3, 0x21D4, 0x2196, 0x2199, 0x221D,
+ 0x2032, 0x221E, 0x2208, 0x220B, 0x25B3, 0x25BD, 0x0338, 0x21A6,
+ 0x2200, 0x2203, 0xAC, 0x2205, 0x211C, 0x2111, 0x22A4, 0x22A5,
+ 0x2135, 0x1D49C, 0x212C, 0x1D49E, 0x1D49F, 0x2130, 0x2131, 0x1D4A2,
+ 0x210B, 0x2110, 0x1D4A5, 0x1D4A6, 0x2112, 0x2133, 0x1D4A9, 0x1D4AA,
+ 0x1D4AB, 0x1D4AC, 0x211B, 0x1D4AE, 0x1D4AF, 0x1D4B0, 0x1D4B1, 0x1D4B2,
+ 0x1D4B3, 0x1D4B4, 0x1D4B5, 0x222A, 0x2229, 0x228E, 0x2227, 0x2228,
+ 0x22A2, 0x22A3, 0x230A, 0x230B, 0x2308, 0x2309, 0x7B, 0x7D,
+ 0x27E8, 0x27E9, 0x7C, 0x2016, 0x2195, 0x21D5, 0x5C, 0x2240,
+ 0x221A, 0x2A3F, 0x2207, 0x222B, 0x2294, 0x2293, 0x2291, 0x2292,
+ 0xA7, 0x2020, 0x2021, 0xB6, 0x2663, 0x2662, 0x2661, 0x2660,
+}
+
+-- We are not remapping symbols which are only used as large variants
+local remap_omx = { [0] =
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 0x27EE, 0x27EF, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, 0x2A06, nil,
+ 0x222E, nil, 0x2A00, nil, 0x2A01, nil, 0x2A02, nil,
+ 0x2211, 0x220F, 0x222B, 0x22C3, 0x22C2, 0x2A04, 0x22C0, 0x22C1,
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ 0x2210, nil, 0x5E, 0x5E, 0x5E, 0x7E, 0x7E, 0x7E,
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 0x23B0, 0x23B1, nil, nil, nil, nil,
+}
+
+return {
+ oml = remap_oml,
+ oms = remap_oms,
+ omx = remap_omx,
+}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-lr.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-lr.lua
new file mode 100644
index 00000000000..b78a7c38033
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-lr.lua
@@ -0,0 +1,71 @@
+local properties = node.get_properties_table()
+
+local function to_unicode(head, tail)
+ local result, subresult, i = {[0] = 'mtext'}, {}, 0
+ local characters, last_fid
+ local iter, state, n = node.traverse(head)
+ while true do
+ local id, sub n, id, sub = iter(state, n)
+ if not n or n == tail then break end
+ local props = properties[n]
+ if props and props.glyph_info then
+ i = i+1
+ result[i] = glyph_info
+ else
+ local char, fid = node.is_glyph(n)
+ if char then
+ if fid ~= last_fid then
+ local fontdir = font.getfont(fid)
+ characters, last_fid = fontdir.characters, fid
+ end
+ local uni = characters[char]
+ local uni = uni and uni.unicode
+ i = i+1
+ if uni then
+ if type(uni) == 'number' then
+ result[i] = utf.char(uni)
+ else
+ result[i] = utf.char(table.unpack(uni))
+ end
+ else
+ if char < 0x110000 then
+ result[i] = utf.char(char)
+ else
+ result[i] = '\u{FFFD}'
+ end
+ end
+ elseif node.id'math' == id then
+ if props then
+ local mml = props.saved_mathml_table or props.saved_mathml_core
+ if mml then
+ i = i+1
+ result[i] = mml
+ n = node.end_of_math(n)
+ end
+ end
+ -- elseif node.id'whatsit' == id then
+ -- TODO(?)
+ elseif node.id'glue' == id then
+ if n.width > 1000 then -- FIXME: Coordinate constant with tagpdf
+ i = i+1
+ result[i] = '\u{00A0}' -- non breaking space... There is no real reason why it has to be non breaking, except that MathML often ignore other spaces
+ end
+ elseif node.id'hlist' == id then
+ local nested = to_unicode(n.head)
+ table.move(nested, 1, #nested, i+1, result)
+ i = i+#nested
+ elseif node.id'vlist' == id then
+ i = i+1
+ result[i] = '\u{FFFD}'
+ elseif node.id'rule' == id then
+ if n.width ~= 0 then
+ i = i+1
+ result[i] = '\u{FFFD}'
+ end
+ end -- CHECK: Everything else can probably be ignored, otherwise shout at me
+ end
+ end
+ return result
+end
+
+return to_unicode
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amsmath.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amsmath.sty
new file mode 100644
index 00000000000..0b09bc78439
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amsmath.sty
@@ -0,0 +1,417 @@
+\ProvidesExplPackage {luamml-patches-amsmath} {2024-10-30} {0.2.0}
+ {Feel free to add a description here}
+
+\lua_now:n { require'luamml-amsmath' }
+
+% For all of these changes, the redefinitions appear huge.
+% But they are almost identical to the original and only
+% add luamml commands in appropriate places, so they would
+% mostly disappear if there were enough hooks in amsmath.
+
+% aligned and friends
+\cs_set:Npn \start@aligned #1#2 {
+ \RIfM@
+ \else
+ \nonmatherr@ { \begin { \@currenvir } }
+ \fi
+ \savecolumn@ % Assumption: called inside a group
+ \luamml_annotate:en {
+ core = false
+ } {
+ \alignedspace@left
+ }
+ \ams@start@box {#1} \bgroup
+ \maxfields@ #2 \relax
+ \ifnum \maxfields@ > \m@ne
+ \multiply \maxfields@ \tw@
+ \let \math@cr@@@ \math@cr@@@alignedat
+ \alignsep@ \z@skip
+ \else
+ \let \math@cr@@@ \math@cr@@@aligned
+ \alignsep@ \minalignsep
+ \fi
+ \Let@ \chardef \dspbrk@context \@ne
+ \default@tag
+ \spread@equation % no-op if already called
+ \global \column@ \z@
+ \ialign \bgroup
+ & \column@plus
+ \hfil
+ \strut@
+ $
+ \m@th
+ \displaystyle
+ {##}
+ \luamml_save:nNn {} \displaystyle {mtd}
+ $
+ \__luamml_amsmath_add_last_to_row:
+ \tabskip \z@skip
+ & \column@plus
+ $
+ \m@th
+ \displaystyle
+ {
+ {}
+ ##
+ }
+ \luamml_save:nNn {} \displaystyle {mtd}
+ $
+ \__luamml_amsmath_add_last_to_row:
+ \hfil
+ \tabskip\alignsep@
+ \crcr
+ \ams@return@opt@arg
+}
+
+\renewcommand \gathered [1] [c] {
+ \RIfM@
+ \else
+ \nonmatherr@ { \begin {gathered} }
+ \fi
+ \luamml_annotate:en {
+ core = false
+ } {
+ \alignedspace@left
+ }
+ \ams@start@box {#1} \bgroup
+ \Let@
+ \chardef \dspbrk@context \@ne
+ \restore@math@cr
+ \spread@equation
+ \ialign \bgroup
+ \hfil
+ \strut@
+ $
+ \m@th
+ \displaystyle
+ ##
+ \luamml_save:nNn {} \displaystyle {mtd}
+ $
+ \__luamml_amsmath_add_last_to_row:
+ \hfil
+ \crcr
+ \ams@return@opt@arg
+}
+
+\cs_set:Npn \endaligned {
+ \crcr
+ \__luamml_amsmath_save_inner_table:n \@currenvir
+ \egroup
+ \restorecolumn@
+ \egroup
+ \__luamml_amsmath_finalize_inner_table:
+}
+
+% gather
+\cs_set:Npn \gather@ #1 {
+ \ingather@true
+ \let \split \insplit@
+ \let \tag \tag@in@align
+ \let \label \label@in@display
+ \chardef \dspbrk@context \z@
+ \intertext@ \displ@y@ \Let@
+ \let \math@cr@@@ \math@cr@@@gather
+ \gmeasure@ {#1}
+ \global \shifttag@false
+ \tabskip \z@skip
+ \global \row@ \@ne
+ \halign to \displaywidth \bgroup
+ \strut@
+ \setboxz@h {
+ $
+ \m@th
+ \displaystyle
+ {##}
+ \luamml_save:nNn {} \displaystyle {mtd}
+ $
+ }
+ \__luamml_amsmath_add_box_to_row:
+ \calc@shift@gather
+ \set@gather@field
+ \tabskip\@centering
+ &
+ \setboxz@h {
+ \strut@
+ {##}
+ }
+ \dim_compare:nNnF {0pt} = {
+ \box_wd:N \c_zero_int
+ } {
+ \__luamml_amsmath_set_tag:
+ }
+ \place@tag@gather
+ \tabskip \iftagsleft@
+ \gdisplaywidth@
+ \else
+ \z@skip
+ \span \fi
+ \crcr
+ #1
+}
+
+\cs_new_eq:NN \__luamml_amsmath_original_gmeasure:n \gmeasure@
+\cs_set:Npn \gmeasure@ #1 {
+ \exp_last_unbraced:Nno
+ \use_ii_i:nn
+ { \luamml_ignore: }
+ { \__luamml_amsmath_original_gmeasure:n {#1} }
+}
+
+\cs_set:Npn \endgather {
+ \math@cr
+ \black@ \totwidth@
+ \__luamml_amsmath_finalize_table:n {gather}
+ \egroup
+ $$
+ \ignorespacesafterend
+}
+
+% align and friends
+\cs_set:Npn \align@preamble {
+ &
+ \hfil
+ \strut@
+ \setboxz@h {
+ \@lign
+ $
+ \m@th
+ \displaystyle
+ {##}
+ \ifmeasuring@
+ \luamml_ignore:
+ \else
+ \luamml_save:nNn {} \displaystyle {mtd}
+ \fi
+ $
+ }
+ \ifmeasuring@
+ \savefieldlength@
+ \else
+ \__luamml_amsmath_add_box_to_row:
+ \fi
+ \set@field
+ \tabskip\z@skip
+ &
+ \setboxz@h {
+ \@lign
+ $
+ \m@th
+ \displaystyle
+ {
+ {}
+ ##
+ }
+ \ifmeasuring@
+ \luamml_ignore:
+ \else
+ \luamml_save:nNn {} \displaystyle {mtd}
+ \fi
+ $
+ }
+ \ifmeasuring@
+ \savefieldlength@
+ \else
+ \__luamml_amsmath_add_box_to_row:
+ \fi
+ \set@field
+ \hfil
+ \tabskip\alignsep@
+}
+
+\cs_set:Npn \math@cr@@@align {
+ \ifst@rred
+ \nonumber
+ \fi
+ \if@eqnsw
+ \global \tag@true
+ \fi
+ \global \advance \row@ \@ne
+ \add@amps \maxfields@
+ \omit
+ \kern -\alignsep@
+ \iftag@
+ \setboxz@h {
+ \@lign
+ \strut@
+ { \make@display@tag }
+ }
+ \place@tag
+ \__luamml_amsmath_set_tag:
+ \fi
+ \ifst@rred
+ \else
+ \global \@eqnswtrue
+ \fi
+ \global \lineht@ \z@
+ \cr
+}
+
+\cs_set:Npn \maketag@@@ #1 {
+ \hbox {
+ \m@th
+ \normalfont
+ #1
+ \__luamml_amsmath_save_tag:
+ }
+}
+
+\cs_set:Npn \endalign {
+ \math@cr
+ \black@ \totwidth@
+ \__luamml_amsmath_finalize_table:n {align}
+ \egroup
+ \ifingather@
+ \restorealignstate@
+ \egroup
+ \nonumber
+ \ifnum0=`{\fi\iffalse}\fi
+ \else
+ $$
+ \fi
+ \ignorespacesafterend
+}
+
+% For a more interesting one, let's consider multline:
+\cs_new_eq:NN \__luamml_amsmath_original_multline:n \multline@
+\cs_set:Npn \multline@ #1 {
+ \__luamml_amsmath_original_multline:n {
+ \ifmeasuring@ \else
+ \__luamml_amsmath_set_row_columnalign:n {left}
+ \fi
+ #1
+ \ifmeasuring@ \else
+ \__luamml_amsmath_set_row_columnalign:n {right}
+ \fi
+ }
+}
+
+\cs_new_eq:NN \__luamml_amsmath_original_mmeasure:n \mmeasure@
+\cs_set:Npn \mmeasure@ #1 {
+ \exp_last_unbraced:Nno
+ \use_ii_i:nn
+ { \luamml_ignore: }
+ { \__luamml_amsmath_original_mmeasure:n {#1} }
+}
+
+% Luckily, {multline} uses \endmultline@math in exactly
+% the spot where we have to set the flag.
+% 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_save:nNn {} \displaystyle {mtd}
+ $
+ \__luamml_amsmath_add_last_to_row:
+}
+
+\cs_set:Npn \rendmultline@ {
+ \iftag@
+ \luamml_save:nNn {} \displaystyle {mtd}
+ $
+ \__luamml_amsmath_add_last_to_row:
+ \let \endmultline@math \relax
+ \ifshifttag@
+ \hskip \multlinegap
+ \llap {
+ \vtop {
+ \raise@tag
+ \normalbaselines
+ \setbox \@ne \null
+ \dp \@ne \lineht@
+ \box \@ne
+ \hbox {
+ \strut@
+ \make@display@tag
+ }
+ }
+ }
+ \else
+ \hskip \multlinetaggap
+ \make@display@tag
+ \fi
+ \__luamml_amsmath_set_tag:
+ \else
+ \hskip \multlinegap
+ \fi
+ \hfilneg
+ \math@cr
+ \__luamml_amsmath_finalize_table:n {multline}
+ \egroup
+ $$
+}
+
+\cs_set:Npn \lendmultline@ {
+ \hfilneg
+ \hskip\multlinegap
+ \math@cr
+ \__luamml_amsmath_finalize_table:n {multline}
+ \egroup
+ $$
+}
+
+% Finally some slightly different stuff.
+% While {matrix} is covered by {array}, we still have {smallmatrix}:
+\renewenvironment {smallmatrix} {
+ \luamml_annotate:en {
+ core = false
+ } {
+ \null
+ \,
+ }
+ \vcenter \bgroup
+ \Let@
+ \restore@math@cr
+ \default@tag
+ \baselineskip 6 \ex@
+ \lineskip 1.5 \ex@
+ \lineskiplimit \lineskip
+ \ialign \bgroup
+ \hfil
+ $
+ \m@th
+ \scriptstyle
+ ##
+ \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes
+ $
+ \__luamml_amsmath_add_last_to_row:
+ \hfil
+ &&
+ \thickspace
+ \hfil
+ $
+ \m@th
+ \scriptstyle
+ ##
+ \luamml_save:nn {} {mtd} % No \scriptsize here since we want to add the mstyle nodes
+ $
+ \__luamml_amsmath_add_last_to_row:
+ \hfil
+ \crcr
+}{%
+ \crcr
+ \__luamml_amsmath_save_smallmatrix:
+ \egroup
+ \egroup
+ \__luamml_amsmath_finalize_inner_table:
+ \luamml_annotate:en {
+ core = false
+ } {
+ \,
+ }
+}
+
+% {cases} is defined by the kernel, but we patch the overwritten version by amsmath.
+\cs_set:Npn \env@cases {
+ \let \@ifnextchar \new@ifnextchar
+ \left \lbrace
+ \def \arraystretch {1.2}
+ \array {@{}l@{\quad \luamml_ignore:}l@{}}
+}
+
+
+\cs_set:Npn \bBigg@ #1 #2 {
+ {
+ \ensuremath {
+ \Uvextensible height~#1 \big@size axis~exact~#2
+ }
+ }
+}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amstext.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amstext.sty
new file mode 100644
index 00000000000..97b1b1f1765
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-amstext.sty
@@ -0,0 +1,37 @@
+\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
+\cs_set:Npn \textdef@ #1 #2 #3 {
+ \int_if_odd:nTF { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } {
+ \int_gincr:N \g__luamml_amsmath_text_struct_int
+ \tag_struct_begin:n {
+ tag = mtext/mathml,
+ stash,
+ label = __luamml_amsmath_text_ \int_use:N \g__luamml_amsmath_text_struct_int
+ }
+ \tag_mc_begin:n {
+ tag = mtext
+ }
+ \AnnotateFormula {
+ nucleus = true,
+ struct = "__luamml_amsmath_text_ \int_use:N \g__luamml_amsmath_text_struct_int"
+ }
+ } {
+ \use:n
+ }
+ {
+ \hbox {
+ {
+ \everymath {#1}
+ \let \f@size #2
+ \selectfont
+ #3
+ }
+ }
+ }
+ \int_if_odd:nT { \int_div_truncate:nn { \l__luamml_flag_int } { 8 } } {
+ \tag_mc_end:
+ \tag_struct_end:
+ }
+}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-array.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-array.sty
new file mode 100644
index 00000000000..b08d5615e4f
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-array.sty
@@ -0,0 +1,101 @@
+\ProvidesExplPackage {luamml-patches-array} {2024-10-30} {0.2.0}
+ {Feel free to add a description here}
+
+\lua_now:n { require'luamml-array' }
+
+\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_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_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_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
+}
+
+\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
new file mode 100644
index 00000000000..38eb28bd5f8
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-kernel.sty
@@ -0,0 +1,76 @@
+\ProvidesExplPackage {luamml-patches-kernel} {2024-10-30} {0.2.0}
+ {Feel free to add a description here}
+
+\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
+ #1
+ {#2}
+ \luamml_save:nNn {mathphant} #1 {mphantom}
+ $
+ }
+ \luamml_annotate:nen {1} {
+ nucleus = true,
+ core = {[0] = 'mpadded',
+ \ifh@\else
+ width = 0,
+ \fi
+ \ifv@\else
+ height = 0, depth = 0,
+ \fi
+ consume_label'mathphant',
+ }
+ } {
+ \finph@nt
+ }
+}
+
+\@ifpackageloaded {unicode-math} {} {
+ \cs_new:Npn \__luamml_kernel_define_character:Nnn #1#2#3 {
+ \cs_set:cpx { \cs_to_str:N #1 ~ } {
+ \luamml_annotate:nen {#2} {
+ nucleus = true, core = {[0] = 'mi', '\string\u{#3}'},
+ } {
+ \exp_not:v { \cs_to_str:N #1 ~ }
+ }
+ }
+ }
+
+ \__luamml_kernel_define_character:Nnn \models {3} {22a7}
+ \__luamml_kernel_define_character:Nnn \hookrightarrow {3} {21aa}
+ \__luamml_kernel_define_character:Nnn \hookleftarrow {3} {21a9}
+ \__luamml_kernel_define_character:Nnn \bowtie {3} {22c8}
+ \__luamml_kernel_define_character:Nnn \Longrightarrow {3} {27f9}
+ \__luamml_kernel_define_character:Nnn \longrightarrow {3} {27f6}
+ \__luamml_kernel_define_character:Nnn \Longleftarrow {3} {27f8}
+ \__luamml_kernel_define_character:Nnn \longleftarrow {3} {27f5}
+ \__luamml_kernel_define_character:Nnn \Longleftrightarrow {3} {27fa}
+ \__luamml_kernel_define_character:Nnn \longleftrightarrow {3} {27f7}
+ \__luamml_kernel_define_character:Nnn \longmapsto {4} {27fc}
+}
+
+\IfFileLoadedT {latex-lab-math.ltx} {
+ \RequirePackage{luamml-patches-lab-math}
+}
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
new file mode 100644
index 00000000000..7776576536b
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-patches-lab-math.sty
@@ -0,0 +1,20 @@
+\ProvidesExplPackage {luamml-patches-lab-math} {2024-10-30} {0.2.0}
+ {Feel free to add a description here}
+
+\AddToHook{begindocument} {
+ \cs_set:Npn \common@align@ending {
+ \math@cr
+ \black@ \totwidth@
+ \__luamml_amsmath_finalize_table:n {align}
+ \egroup
+ \ifingather@
+ \restorealignstate@
+ \egroup
+ \nonumber
+ \ifnum0=`{\fi\iffalse}\fi
+ \else
+ $$
+ \fi
+ \ignorespacesafterend
+ }
+}
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
new file mode 100644
index 00000000000..73c93f076ca
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf-demo.sty
@@ -0,0 +1,50 @@
+\NeedsTeXFormat{LaTeX2e}
+\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
+
+% Delay family mappings to allow for replacements
+\AddToHook{begindocument/before}{%
+ \@ifpackageloaded{unicode-math}{}{%
+ \RegisterFamilyMapping\symsymbols{oms}%
+ \RegisterFamilyMapping\symletters{oml}%
+ \RegisterFamilyMapping\symlargesymbols{omx}%
+ }
+}
+
+\cs_new_protected:Npn \LuaMMLSetFilename #1 {}
+
+% TODO.
+% \cs_generate_variant:Nn \pdffile_filespec:nnn {ene}
+% \int_new:N \g__luamml_demo_af_int
+% \cs_new_protected:Npn \LuaMMLTagAF #1#2 {
+% \int_gincr:N \g__luamml_demo_af_int
+% \exp_args:Ne \pdf_object_new:nn{__luamml_demo_\int_use:N \g__luamml_demo_af_int}{dict}
+% \exp_args:Ne \tagstructbegin{tag=Formula,AF=__luamml_demo_\int_use:N \g__luamml_demo_af_int,#1}
+% \bool_if:NF \l__luamml_demo_structelem_bool {
+% \tagmcbegin{tag=Formula}
+% }
+% #2
+% \group_begin:
+% \pdfdict_put:nnn {l_pdffile/Filespec} {AFRelationship}{/Supplement}
+% \pdffile_filespec:ene
+% { __luamml_demo_ \int_use:N \g__luamml_demo_af_int }
+% { test.xml }
+% { \luamml_get_last_mathml_stream:e{}\c_space_tl 0~R}
+% \group_end:
+% \bool_if:NF \l__luamml_demo_structelem_bool {
+% \tagmcend
+% }
+% \tagstructend
+% }
+
+\NewDocumentCommand\AnnotateFormula{ o m m }{%
+ \IfValueTF{#1}{%
+ \luamml_annotate:nen{#1}%
+ }{
+ \luamml_annotate:en
+ }{#2}{#3}
+}
+
+\cs_set_eq:NN \WriteoutFormula \luamml_pdf_write:
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf.sty
new file mode 100644
index 00000000000..adeb8693dd8
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-pdf.sty
@@ -0,0 +1,206 @@
+%%
+%% This is file `luamml-pdf.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% luamml.dtx (with options: `package,pdftex')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from luamml-pdf.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file luamml.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 (C) 2020-2024 by Marcel Krueger
+%%
+%% 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.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+\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
+\tl_new:N \l__luamml_root_tl
+\tl_set:Nn \l__luamml_root_tl { mrow }
+\tl_new:N \l__luamml_label_tl
+\int_new:N \g__luamml_formula_id_int
+
+\int_set:Nn \l__luamml_pretty_int { 1 }
+
+\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 {
+ \int_div_truncate:nn { \l__luamml_flag_int } {8}
+ } {2}
+ ) +
+}
+\cs_new:Npn \__luamml_style_to_num:N #1 {
+ \token_case_meaning:NnF #1 {
+ \displaystyle {0}
+ \textstyle {32}
+ \scriptstyle {64}
+ \scriptscriptstyle {96}
+ } {
+ \Invalid_mathstyle
+ }
+}
+\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_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_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_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_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_set_eq:NN \luamml_flag_ignore: \luamml_ignore:
+\luamml_process:
+
+\cs_if_exist:NTF \showstream {
+ \iow_new:N \l__luamml_pdf_stream
+ \iow_open:Nn \l__luamml_pdf_stream { \jobname .tml }
+ \cs_new_protected:Npn \__luamml_pdf_showlists: {
+ \group_begin:
+ \int_set:Nn \tex_showboxdepth:D { \c_max_int }
+ \int_set:Nn \tex_showboxbreadth:D { \c_max_int }
+ \showstream = \l__luamml_pdf_stream
+ \tex_showlists:D
+ \group_end:
+ }
+} {
+ \cs_set_eq:NN \l__luamml_pdf_stream \c_log_iow
+ \cs_set_eq:NN \__luamml_pdf_set_showstream: \scan_stop:
+ \cs_new_protected:Npn \__luamml_pdf_showlists: {
+ \group_begin:
+ \int_set:Nn \l_tmpa_int { \tex_interactionmode:D }
+ \int_set:Nn \tex_interactionmode:D { 0 }
+ \int_set:Nn \tex_showboxdepth:D { \c_max_int }
+ \int_set:Nn \tex_showboxbreadth:D { \c_max_int }
+ \tex_showlists:D
+ \int_set:Nn \tex_interactionmode:D { \l_tmpa_int }
+ \group_end:
+ }
+}
+\cs_generate_variant:Nn \tl_to_str:n { e }
+\int_new:N \g__luamml_annotation_id_int
+\cs_new_protected:Npn \luamml_annotate:nen #1#2#3 {
+ \int_gincr:N \g__luamml_annotation_id_int
+ \iow_shipout_x:Nx \l__luamml_pdf_stream {
+ LUAMML_MARK_REF:
+ \int_use:N \g__luamml_annotation_id_int
+ :
+ }
+ \iow_now:Nx \l__luamml_pdf_stream {
+ LUAMML_MARK:
+ \int_use:N \g__luamml_annotation_id_int
+ :
+ count = \int_eval:n {#1},
+ #2
+ \iow_newline:
+ LUAMML_MARK_END
+ }
+ #3
+}
+\cs_new_protected:Npn \luamml_annotate:en #1#2 {
+ \int_gincr:N \g__luamml_annotation_id_int
+ \iow_shipout_x:Nx \l__luamml_pdf_stream {
+ LUAMML_MARK_REF:
+ \int_use:N \g__luamml_annotation_id_int
+ :
+ }
+ \iow_now:Nx \l__luamml_pdf_stream {
+ LUAMML_MARK:
+ \int_use:N \g__luamml_annotation_id_int
+ :
+ count = data.count[\int_use:N \g__luamml_annotation_id_int],
+ #1
+ \iow_newline:
+ LUAMML_MARK_END
+ }
+ \use:x {
+ \iow_now:Nn \l__luamml_pdf_stream {
+ LUAMML_COUNT:
+ \int_use:N \g__luamml_annotation_id_int
+ }
+ \__luamml_pdf_showlists:
+ \exp_not:n {#2}
+ \iow_now:Nn \l__luamml_pdf_stream {
+ LUAMML_COUNT_END:
+ \int_use:N \g__luamml_annotation_id_int
+ }
+ \__luamml_pdf_showlists:
+ }
+}
+\cs_new_protected:Npn \luamml_pdf_write: {
+ \int_gincr:N \g__luamml_formula_id_int
+ \iow_now:Nx \l__luamml_pdf_stream {
+ LUAMML_FORMULA_BEGIN:
+ \int_use:N \g__luamml_formula_id_int
+ :
+ \int_use:N \l__luamml_flag_int
+ :
+ \l__luamml_root_tl
+ :
+ \l__luamml_label_tl
+ }
+ \__luamml_pdf_showlists:
+ \iow_now:Nx \l__luamml_pdf_stream {
+ LUAMML_FORMULA_END
+ }
+}
+\NewDocumentCommand \RegisterFamilyMapping {m m} {
+ \iow_now:Nx \l__luamml_pdf_stream {
+ LUAMML_INSTRUCTION:REGISTER_MAPPING: \int_use:N #1 : #2
+ }
+}
+\cs_new_protected:Npn \__luamml_patch_package:nn #1 #2 {
+ \@ifpackageloaded {#1} {#2} {
+ \hook_gput_code:nnn {package/#1/after} {luamml} {#2}
+ }
+}
+\cs_new_protected:Npn \__luamml_patch_package:n #1 {
+ \__luamml_patch_package:nn {#1} {
+ \RequirePackage { luamml-patches-#1 }
+ }
+}
+\RequirePackage { luamml-patches-kernel }
+
+\endinput
+%%
+%% End of file `luamml-pdf.sty'.
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-structelemwriter.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-structelemwriter.lua
new file mode 100644
index 00000000000..97a90acedb7
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-structelemwriter.lua
@@ -0,0 +1,123 @@
+local struct_begin = token.create'tag_struct_begin:n'
+local struct_use = token.create'tag_struct_use:n'
+local struct_end = token.create'tag_struct_end:'
+
+local mc_begin = token.create'tag_mc_begin:n'
+local mc_end = token.create'tag_mc_end:'
+
+local function escape_name(name)
+ return name
+end
+
+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()
+ 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
+
+local attribute_counter = 0
+local attributes = setmetatable({}, {__index = function(t, k)
+ attribute_counter = attribute_counter + 1
+ local attr_name = string.format('luamml_attr_%i', attribute_counter)
+ t[k] = attr_name
+ tex.runtoks(function()
+ tex.sprint(string.format('\\tagpdfsetup{newattribute={%s}{/O/NSO/NS %i 0 R',
+ attr_name, mathml_ns_obj or get_mathml_ns_obj()))
+ -- tex.sprint(string.format('\\tagpdfsetup{newattribute={%s}{/O/MathML-3',
+ -- attr_name))
+ tex.cprint(12, k)
+ tex.sprint'}}'
+ end)
+ return attr_name
+end})
+
+local mc_type = luatexbase.attributes.g__tag_mc_type_attr
+local mc_cnt = luatexbase.attributes.g__tag_mc_cnt_attr
+-- print('!!!', mc_type, mc_cnt)
+
+local stash_cnt = 0
+local attrs = {}
+local function write_elem(tree, stash)
+ if tree[':struct'] then
+ return tex.runtoks(function()
+ return tex.sprint(struct_use, '{', tree[':struct'], '}')
+ end)
+ end
+ if not tree[0] then print('ERR', require'inspect'(tree)) end
+ local i = 0
+ for attr, val in next, tree do if type(attr) == 'string' and not string.find(attr, ':') and attr ~= 'xmlns' then
+ -- for attr, val in next, tree do if type(attr) == 'string' and string.byte(attr) ~= 0x3A then
+ i = i + 1
+ attrs[i] = string.format('/%s(%s)', escape_name(attr), escape_string(val))
+ end end
+ table.sort(attrs)
+
+ if stash then
+ stash_cnt = stash_cnt + 1
+ stash = '__luamml_stashed_' .. stash_cnt
+ tree[':struct'] = stash
+ stash = ', stash, label = ' .. stash
+ end
+
+ local attr_flag = i ~= 0 and ', attribute=' .. attributes[table.concat(attrs)]
+ tex.sprint(struct_begin, '{tag=' .. tree[0] .. '/mathml')
+ if stash then tex.sprint(stash) end
+ if attr_flag then tex.sprint(attr_flag) end
+ if tree[':actual'] then
+ tex.sprint(', actualtext = {')
+ tex.cprint(12, tree[':actual'])
+ tex.sprint'}'
+ end
+ tex.sprint'}'
+ for j = 1, i do attrs[j] = nil end
+
+ if tree[':nodes'] then
+ local n = tree[':nodes']
+ tex.runtoks(function()
+ tex.sprint{mc_begin, string.format('{tag=%s}', tree[0])}
+ -- NOTE: This will also flush all previous sprint's... That's often annoying, but in this case actually intentional.
+ end)
+ local mct, mcc = tex.attribute[mc_type], tex.attribute[mc_cnt]
+ for i = 1, #n do
+ node.set_attribute(n[i], mc_type, mct)
+ node.set_attribute(n[i], mc_cnt, mcc)
+ end
+ tex.runtoks(function()
+ tex.sprint(mc_end)
+ end)
+ end
+ for _, elem in ipairs(tree) do
+ if type(elem) ~= 'string' then
+ write_elem(elem)
+ end
+ end
+ tex.runtoks(function()
+ tex.sprint(struct_end)
+ end)
+end
+
+return function(element, stash)
+ return write_elem(element, stash)
+end
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-table.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-table.lua
new file mode 100644
index 00000000000..4fb553af282
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-table.lua
@@ -0,0 +1,110 @@
+local write_xml = require'luamml-xmlwriter'
+local make_root = require'luamml-convert'.make_root
+local save_result = require'luamml-tex'.save_result
+
+local properties = node.get_properties_table()
+
+local glue_id = node.id'glue'
+local tabskip_sub = 12
+assert(node.subtypes'glue'[tabskip_sub] == 'tabskip')
+
+local function store_get_row()
+ local row_temp
+ for i=tex.nest.ptr-1, 0, -1 do
+ local head = tex.nest[i].head
+ local glue = head.next
+ if glue and glue.id == glue_id and glue.subtype == tabskip_sub then
+ row_temp = head
+ break
+ end
+ end
+ if not row_temp then
+ error[[luamml_table's store function called outside of table]]
+ end
+ local props = properties[row_temp]
+ if not props then
+ props = {}
+ properties[row_temp] = props
+ end
+ local mml_row = props.mathml_row
+ if not mml_row then
+ mml_row = {[0] = 'mtr'}
+ props.mathml_row = mml_row
+ end
+ return mml_row
+end
+
+local function store_column_xml(mml, display)
+ if mml[0] ~= 'mtd' then
+ if display and mml[0] == 'mstyle' and mml.displaystyle == true then
+ mml[0], mml.displaystyle, mml.scriptlevel = 'mtd', nil, nil
+ else
+ if display and mml[0] ~= 'mstyle' then
+ mml = {[0] = 'mstyle', displaystyle = false, mml}
+ end
+ mml = {[0] = 'mtd', mml}
+ end
+ end
+ table.insert(store_get_row(), mml)
+ return mml
+end
+
+local function store_column(startmath)
+ local props = properties[startmath]
+ if not props then return end
+ local mml = props.saved_mathml_table or props.saved_mathml_core
+ if mml then return store_column_xml(mml) end
+end
+
+local function store_tag(xml)
+ local mml_row = store_get_row()
+ xml.intent = ':equationlabel'
+ table.insert(mml_row, 1, xml)
+ last_tag = nil
+end
+
+local function set_row_attribute(name, value)
+ local mml_row = store_get_row()
+ mml_row[name] = value
+end
+
+luatexbase.add_to_callback('hpack_filter', function(_, group)
+ if group ~= 'fin_row' then return true end
+
+ local temp = tex.nest.top.head
+ local props = properties[temp]
+ if not props then return true end
+ local mml_row = props.mathml_row
+ if not mml_row then return true end
+ props.mathml_row = nil
+
+ props = properties[tex.lists.align_head]
+ if not props then
+ props = {}
+ properties[tex.lists.align_head] = props
+ end
+ local mml_table = props.mathml_table_node_table
+ if not mml_table then
+ mml_table = {[0] = 'mtable'}
+ props.mathml_table_node_table = mml_table
+ end
+ table.insert(mml_table, mml_row)
+ return true
+end, 'mathml amsmath processing')
+
+local function get_table()
+ -- TODO: Error handling etc
+ local props = properties[tex.lists.align_head]
+ if not props then return end
+ local mml_table = props.mathml_table_node_table
+ props.mathml_table_node_table = nil
+ return mml_table
+end
+
+return {
+ store_column = store_column,
+ store_column_xml = store_column_xml,
+ store_tag = store_tag,
+ set_row_attribute = set_row_attribute,
+ get_table = get_table,
+}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-tex-annotate.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-tex-annotate.lua
new file mode 100644
index 00000000000..050a00a90e0
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-tex-annotate.lua
@@ -0,0 +1,128 @@
+local nest = tex.nest
+
+local properties = node.get_properties_table()
+
+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 {'
+ .. token.scan_argument()
+ .. '}', nil, 't', mark_environment)
+ if not annotation then
+ tex.error('Error while parsing LuaMML annotation', {err})
+ return 0
+ end
+ annotation = annotation()
+ local nesting = nest.top
+ local props = properties[nesting.head]
+ local current = props and props.luamml__annotate_context
+ if current then
+ current, props.luamml__annotate_context = current.head, current.prev
+ else
+ tex.error('Mismatched LuaMML annotation',
+ {'Something odd happened. Maybe you forgot braces around an annotated symbol in a subscript or superscript?'})
+ return 0
+ end
+ local after = nesting.tail
+ local count, offset = 0, annotation.offset
+ local marked
+ if current == after then
+ tex.error'Empty LuaMML annotation'
+ else
+ repeat
+ current = current.next
+ count = count + 1
+ if count == offset then
+ marked = current
+ elseif offset or current ~= after then
+ local props = properties[current]
+ if not props then
+ props = {}
+ properties[current] = props
+ end
+ props.mathml_table, props.mathml_core = nil, false
+ end
+ until current == after
+ if offset and not marked then
+ tex.error'Invalid offset in LuaMML annotation'
+ end
+ marked = marked or current
+ if annotation.nucleus then
+ marked = marked.nucleus
+ end
+ if marked then
+ local props = properties[marked]
+ if not props then
+ props = {}
+ properties[marked] = props
+ end
+ if annotation.core ~= nil then
+ props.mathml_core = annotation.core
+ end
+ if annotation.struct ~= nil then
+ local saved = props.mathml_filter
+ local struct = annotation.struct
+ function props.mathml_filter(mml, core)
+ mml[':struct'] = struct
+ if saved then
+ return saved(mml, core)
+ else
+ return mml, core
+ end
+ end
+ end
+ else
+ tex.error'Unable to annotate nucleus of node without nucleus'
+ end
+ end
+ return count
+end
+
+local funcid = luatexbase.new_luafunction'__luamml_annotate_begin:'
+token.set_lua('__luamml_annotate_begin:', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ local top = nest.top
+ local temp = top.head
+ local props = properties[temp]
+ if not props then
+ props = {}
+ properties[temp] = props
+ end
+ props.luamml__annotate_context = {
+ prev = props.luamml__annotate_context,
+ head = top.tail,
+ }
+end
+
+funcid = luatexbase.new_luafunction'__luamml_annotate_end:we'
+token.set_lua('__luamml_annotate_end:we', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ local count = token.scan_int()
+ local real_count = annotate()
+ if count ~= real_count then
+ tex.error('Incorrect count in LuaMML annotation', {
+ 'A LuaMML annotation was discovered with an explicit count \z
+ which was not the same as the number of top-level nodes annotated.',
+ string.format('This can be fixed by changing the supplied count from %i to %i \z
+ or by omitting the count value entirely.', count, real_count)
+ })
+ end
+end
+
+funcid = luatexbase.new_luafunction'__luamml_annotate_end:e'
+token.set_lua('__luamml_annotate_end:e', funcid, 'protected')
+lua.get_functions_table()[funcid] = annotate
+
+return mark_environment
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-tex.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-tex.lua
new file mode 100644
index 00000000000..4182fbb801a
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-tex.lua
@@ -0,0 +1,232 @@
+local mlist_to_mml = require'luamml-convert'
+local process_mlist = mlist_to_mml.process
+local make_root = mlist_to_mml.make_root
+local register_family = mlist_to_mml.register_family
+
+local mappings = require'luamml-legacy-mappings'
+local write_xml = require'luamml-xmlwriter'
+local write_struct = require'luamml-structelemwriter'
+
+local filename_token = token.create'l__luamml_filename_tl'
+local label_token = token.create'l__luamml_label_tl'
+local left_brace = token.new(string.byte'{', 1)
+local right_brace = token.new(string.byte'}', 2)
+
+local output_hook_token
+local global_text_families = {}
+local text_families_meta = {__index = function(t, fam)
+ if fam == nil then return nil end
+ local assignment = global_text_families[fam]
+ if assignment == nil then
+ local fid = node.family_font(fam)
+ local fontdir = font.getfont(fid)
+ if not fontdir then
+ -- FIXME(?): If there is no font...
+ error'Please load your fonts?!?'
+ end
+ assignment = not (fontdir.MathConstants and next(fontdir.MathConstants))
+ end
+ t[fam] = assignment
+ return assignment
+end}
+
+local properties = node.get_properties_table()
+local mmode, hmode, vmode do
+ local result, input = {}, tex.getmodevalues()
+ for k,v in next, tex.getmodevalues() do
+ if v == 'math' then mmode = k
+ elseif v == 'horizontal' then hmode = k
+ elseif v == 'vertical' then vmode = k
+ else assert(v == 'unset')
+ end
+ end
+ assert(mmode and hmode and vmode)
+end
+
+local funcid = luatexbase.new_luafunction'RegisterFamilyMapping'
+token.set_lua('RegisterFamilyMapping', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ local fam = token.scan_int()
+ local mapping = token.scan_string()
+ if mappings[mapping] then
+ register_family(fam, mappings[mapping])
+ if global_text_families[fam] == nil then
+ global_text_families[fam] = false
+ end
+ else
+ tex.error(string.format('Unknown font mapping %q', mapping))
+ end
+end
+
+local funcid = luatexbase.new_luafunction'RegisterFamilyMapping'
+token.set_lua('RegisterTextFamily', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ local fam = token.scan_int()
+ local _kind = token.scan_string()
+ global_text_families[fam] = true
+end
+
+local function shallow_copy(t)
+ local tt = {}
+ for k,v in next, t do
+ tt[k] = v
+ end
+ return tt
+end
+
+-- Possible flag values:
+-- 0: Skip
+-- 1: Generate MathML, but only save it for later usage in startmath node
+-- 3: Normal (This is the only supported one in display mode)
+-- 11: Generate MathML structure elements
+--
+-- More generally, flags is a bitfield with the defined bits:
+-- Bit 5-7: See Bit 4
+-- Bit 4: Overwrite mathstyle with bit 9-11
+-- Bit 3: Generate MathML structure elements
+-- Bit 2: Change root element name for saved element
+-- Bit 1: Save MathML as a fully converted formula
+-- Bit 0: Save MathML for later usage in startmath node. Ignored for display math.
+
+local out_file
+
+local mlist_result
+
+local undefined_cmd = token.command_id'undefined_cs'
+local call_cmd = token.command_id'call'
+
+local labelled_mathml = {}
+
+local function save_result(xml, display, structelem)
+ mlist_result = make_root(xml, display and 0 or 2)
+ if out_file then
+ out_file:write(write_xml(mlist_result, tex.count.l__luamml_pretty_int & 1 == 1):sub(2) .. '\n')
+ else
+ token.put_next(filename_token)
+ local filename = token.scan_argument()
+ if filename ~= '' then
+ assert(io.open(filename, 'w'))
+ :write(write_xml(mlist_result, tex.count.l__luamml_pretty_int & 1 == 1):sub(2) .. '\n')
+ :close()
+ end
+ end
+ local tracing = tex.count.tracingmathml > 1
+ if tracing then
+ texio.write_nl(write_xml(mlist_result, tex.count.l__luamml_pretty_int & 2 == 2) .. '\n')
+ end
+ if output_hook_token then
+ tex.runtoks(function()
+ tex.sprint(-2, output_hook_token, left_brace, write_xml(mlist_result, tex.count.l__luamml_pretty_int & 4 == 4), right_brace)
+ end)
+ end
+ if tex.count.l__luamml_flag_int & 8 == 8 then
+ write_struct(mlist_result)
+ end
+ return mlist_result
+end
+
+luatexbase.add_to_callback('pre_mlist_to_hlist_filter', function(mlist, style)
+ if tex.nest.top.mode == mmode then -- This is a equation label generated with \eqno
+ return true
+ end
+ local flag = tex.count.l__luamml_flag_int
+ if flag & 3 == 0 then
+ return true
+ end
+ local display = style == 'display'
+ local startmath = tex.nest.top.tail -- Must come before any write_struct calls which adds nodes
+ style = flag & 16 == 16 and flag>>5 & 0x7 or display and 0 or 2
+ local xml, core = process_mlist(mlist, style, setmetatable({}, text_families_meta))
+ if flag & 2 == 2 then
+ xml = save_result(shallow_copy(xml), display)
+ end
+ if flag & 4 == 4 then
+ local element_type = token.get_macro'l__luamml_root_tl'
+ if element_type ~= 'mrow' then
+ if xml[0] == 'mrow' then
+ xml[0] = element_type
+ else
+ xml = {[0] = element_type, xml}
+ end
+ end
+ end
+ if not display and flag & 1 == 1 then
+ local props = properties[startmath]
+ if not props then
+ props = {}
+ properties[startmath] = props
+ end
+ props.saved_mathml_table, props.saved_mathml_core = xml, core
+ token.put_next(label_token)
+ local label = token.scan_argument()
+ if label ~= '' then
+ if labelled_mathml[label] then
+ tex.error('MathML Label already in use', {
+ 'A MathML expression has a label which is already used by another \z
+ formula. If you do not want to label this formula with a unique \z
+ label, set a empty label instead.'})
+ else
+ labelled_mathml[label] = xml
+ end
+ end
+ if flag & 10 == 8 then
+ write_struct(xml, true) -- This modifies xml in-place to reference the struture element
+ end
+ end
+ return true
+end, 'dump_list')
+
+funcid = luatexbase.new_luafunction'luamml_get_last_mathml_stream:e'
+token.set_lua('luamml_get_last_mathml_stream:e', funcid)
+lua.get_functions_table()[funcid] = function()
+ if not mlist_result then
+ tex.error('No current MathML data', {
+ "I was asked to provide MathML code for the last formula, but there weren't any new formulas since you last asked."
+ })
+ end
+ local mml = write_xml(mlist_result, tex.count.l__luamml_pretty_int & 8 == 8)
+ if tex.count.tracingmathml == 1 then
+ texio.write_nl(mml .. '\n')
+ end
+ tex.sprint(-2, tostring(pdf.immediateobj('stream', mml, '/Subtype/application#2Fmathml+xml' .. token.scan_argument(true))))
+ mlist_result = nil
+end
+
+funcid = luatexbase.new_luafunction'luamml_begin_single_file:'
+token.set_lua('luamml_begin_single_file:', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ token.put_next(filename_token)
+ local filename = token.scan_argument()
+ if filename ~= '' then
+ out_file = assert(io.open(filename, 'w'))
+ end
+end
+
+funcid = luatexbase.new_luafunction'luamml_end_single_file:'
+token.set_lua('luamml_end_single_file:', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ if out_file then
+ out_file:close()
+ out_file = nil
+ end
+end
+
+funcid = luatexbase.new_luafunction'luamml_register_output_hook:N'
+token.set_lua('__luamml_register_output_hook:N', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ output_hook_token = token.get_next()
+end
+
+funcid = luatexbase.new_luafunction'luamml_disable_output_hook:'
+token.set_lua('__luamml_disable_output_hook:', funcid, 'protected')
+lua.get_functions_table()[funcid] = function()
+ output_hook_token = nil
+end
+
+local annotate_context = require'luamml-tex-annotate'
+annotate_context.data.mathml = labelled_mathml
+
+return {
+ save_result = save_result,
+ labelled = labelled_mathml,
+}
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml-xmlwriter.lua b/Master/texmf-dist/tex/lualatex/luamml/luamml-xmlwriter.lua
new file mode 100644
index 00000000000..a2b5abefbfb
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml-xmlwriter.lua
@@ -0,0 +1,58 @@
+-- FIXME: Not sure yet if this will be needed
+local function escape_name(name)
+ return name
+end
+
+local escapes = {
+ ['"'] = "&quot;",
+ ['<'] = "&lt;",
+ ['>'] = "&gt;",
+ ['&'] = "&amp;",
+}
+local function escape_text(text)
+ return string.gsub(string.gsub(tostring(text), '["<>&]', escapes), '[\x00-\x08\x0B\x0C\x0E-\x1F]', function(x)
+ return string.format('^^%02x', string.byte(x))
+ end)
+end
+
+local attrs = {}
+local function write_elem(tree, indent)
+ if not tree[0] then print('ERR', require'inspect'(tree)) end
+ local escaped_name = escape_name(assert(tree[0]))
+ local i = 0
+ for attr, val in next, tree do if type(attr) == 'string' then
+ if not string.find(attr, ':', 1, true) then
+ -- if string.byte(attr) ~= 0x3A then
+ i = i + 1
+ attrs[i] = string.format(' %s="%s"', escape_name(attr), escape_text(val))
+ end
+ end end
+ table.sort(attrs)
+ local out = string.format('%s<%s%s', indent or '', escaped_name, table.concat(attrs))
+ for j = 1, i do attrs[j] = nil end
+ if not tree[1] then
+ return out .. '/>'
+ end
+ out = out .. '>'
+ local inner_indent = indent and indent .. ' '
+ local is_string
+ for _, elem in ipairs(tree) do
+ if type(elem) == 'string' then
+ if inner_indent and not is_string then
+ out = out .. inner_indent
+ end
+ out = out .. escape_text(elem)
+ is_string = true
+ else
+ out = out .. write_elem(elem, inner_indent)
+ is_string = nil
+ end
+ end
+ if indent then out = out .. indent end
+ return out .. '</' .. escaped_name .. '>'
+end
+
+return function(element, indent, version)
+ return (version == '11' and '<?xml version="1.1"?>' or '') ..
+ write_elem(element, indent and '\n' or nil)
+end
diff --git a/Master/texmf-dist/tex/lualatex/luamml/luamml.sty b/Master/texmf-dist/tex/lualatex/luamml/luamml.sty
new file mode 100644
index 00000000000..7f2cbd952bc
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/luamml/luamml.sty
@@ -0,0 +1,134 @@
+%%
+%% This is file `luamml.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% luamml.dtx (with options: `package,luatex')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from luamml.sty.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file luamml.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 (C) 2020-2024 by Marcel Krueger
+%%
+%% 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.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+\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
+\tl_new:N \l__luamml_filename_tl
+\tl_new:N \l__luamml_root_tl
+\tl_set:Nn \l__luamml_root_tl { mrow }
+\tl_new:N \l__luamml_label_tl
+\int_new:N \tracingmathml
+
+\int_set:Nn \l__luamml_pretty_int { 1 }
+\lua_now:n { require'luamml-tex' }
+\hook_new_with_args:nn { luamml / converted } { 1 }
+
+\cs_new_protected:Npn \__luamml_output_hook:n {
+ \hook_use:nnw { luamml / converted } { 1 }
+}
+\__luamml_register_output_hook:N \__luamml_output_hook:n
+
+\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 {
+ \int_div_truncate:nn { \l__luamml_flag_int } {8}
+ } {2}
+ ) +
+}
+\cs_new:Npn \__luamml_style_to_num:N #1 {
+ 32 * #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_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_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_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_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_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_process:
+\cs_new_protected:Npn \luamml_annotate:nen #1#2#3 {
+ \__luamml_annotate_begin:
+ #3
+ \__luamml_annotate_end:we \tex_numexpr:D #1 \scan_stop: {#2}
+}
+
+\cs_new_protected:Npn \luamml_annotate:en #1#2 {
+ \__luamml_annotate_begin:
+ #2
+ \__luamml_annotate_end:e {#1}
+}
+
+\cs_new_eq:NN \luamml_pdf_write: \scan_stop:
+\cs_new_protected:Npn \__luamml_patch_package:nn #1 #2 {
+ \@ifpackageloaded {#1} {#2} {
+ \hook_gput_code:nnn {package/#1/after} {luamml} {#2}
+ }
+}
+\cs_new_protected:Npn \__luamml_patch_package:n #1 {
+ \__luamml_patch_package:nn {#1} {
+ \RequirePackage { luamml-patches-#1 }
+ }
+}
+\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
+%%
+%% End of file `luamml.sty'.
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 6ec0442b73c..6bfe1a837fb 100644
--- a/Master/texmf-dist/tex/lualatex/piton/piton.lua
+++ b/Master/texmf-dist/tex/lualatex/piton/piton.lua
@@ -20,49 +20,48 @@
-- -------------------------------------------
--
-- This file is part of the LuaLaTeX package 'piton'.
-piton_version = "3.0b" -- 2024/05/23
+piton_version = "4.1" -- 2024/10/18
-if piton.comment_latex == nil then piton.comment_latex = ">" end
+
+
+piton.comment_latex = piton.comment_latex or ">"
piton.comment_latex = "#" .. piton.comment_latex
-function piton.open_brace ()
- tex.sprint("{")
-end
-function piton.close_brace ()
- tex.sprint("}")
-end
-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 )
@@ -73,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{"
* L ( ( 1 - P(piton.end_escape_math) ) ^ 1 )
- * Lc ( "}" )
+ * Lc "}"
* P ( piton.end_escape_math )
end
lpeg.locale(lpeg)
@@ -91,7 +89,7 @@ local letter = alpha + "_" + "â" + "à" + "ç" + "é" + "è" + "ê" + "ë" + "
local alphanum = letter + digit
local identifier = letter * alphanum ^ 0
-local Identifier = K ( 'Identifier' , identifier )
+local Identifier = K ( 'Identifier.Internal' , identifier )
local Number =
K ( 'Number' ,
( digit ^ 1 * P "." * # ( 1 - P "." ) * digit ^ 0
@@ -100,1006 +98,1177 @@ local Number =
* ( 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 "\\l__piton_tab_tl"
-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 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.ListCommands * P "{" )
+local Compute_DetectedCommands
+function Compute_DetectedCommands ( lang , braces ) return
+ Ct (
+ Cc "Open"
+ * C ( piton.DetectedCommands * space ^ 0 * P "{" )
* Cc "}"
)
- * ( braces / (function ( s ) return LPEG1[lang] : match ( s ) end ) )
+ * ( braces
+ / ( 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
- Ct ( ( piton.ListCommands * "{"
- * ( braces
- / ( function ( s ) return LPEG_cleaner[lang] : match ( s ) end ) )
+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 )
+ )
* "}"
+ 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 )
-local list_beamer_env =
- { "uncoverenv" , "onlyenv" , "visibleenv" ,
- "invisibleenv" , "alertenv" , "actionenv" }
-local BeamerNamesEnvironments = P ( false )
-for _ , x in ipairs ( list_beamer_env ) do
- BeamerNamesEnvironments = BeamerNamesEnvironments + x
+piton.BeamerEnvironments = P ( false )
+for _ , x in ipairs ( piton.beamer_environments ) do
+ piton.BeamerEnvironments = piton.BeamerEnvironments + x
end
BeamerBeginEnvironments =
( space ^ 0 *
L
(
- P "\\begin{" * BeamerNamesEnvironments * "}"
+ P [[\begin{]] * piton.BeamerEnvironments * "}"
* ( "<" * ( 1 - P ">" ) ^ 0 * ">" ) ^ -1
)
* "\r"
) ^ 0
BeamerEndEnvironments =
( space ^ 0 *
- L ( P "\\end{" * BeamerNamesEnvironments * "}" )
+ 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 ( ( P "\\uncover" + "\\only" + "\\alert" + "\\visible"
- + "\\invisible" + "\\action" )
+ * C ( piton.BeamerCommands
* ( "<" * ( 1 - P ">" ) ^ 0 * ">" ) ^ -1
* P "{"
)
* Cc "}"
)
- * ( braces / ( function ( s ) return LPEG1[lang] : match ( s ) end ) )
+ * ( braces /
+ ( function ( s ) if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
* "}"
* Ct ( Cc "Close" )
lpeg = lpeg +
- L ( P "\\alt" * "<" * ( 1 - P ">" ) ^ 0 * ">" * "{" )
- * K ( 'ParseAgain.noCR' , braces )
+ L ( P [[\alt]] * "<" * ( 1 - P ">" ) ^ 0 * ">{" )
+ * ( braces /
+ ( function ( s ) if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
* L ( P "}{" )
- * K ( 'ParseAgain.noCR' , braces )
+ * ( braces /
+ ( function ( s ) if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
* L ( P "}" )
lpeg = lpeg +
- L ( ( P "\\temporal" ) * "<" * ( 1 - P ">" ) ^ 0 * ">" * "{" )
- * K ( 'ParseAgain.noCR' , braces )
+ L ( P [[\temporal]] * "<" * ( 1 - P ">" ) ^ 0 * ">{" )
+ * ( braces
+ / ( function ( s )
+ if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
* L ( P "}{" )
- * K ( 'ParseAgain.noCR' , braces )
+ * ( braces
+ / ( function ( s )
+ if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
* L ( P "}{" )
- * K ( 'ParseAgain.noCR' , braces )
+ * ( braces
+ / ( function ( s )
+ if s ~= '' then return LPEG1[lang] : match ( s ) end end ) )
* L ( P "}" )
- for _ , x in ipairs ( list_beamer_env ) do
- lpeg = lpeg +
- Ct ( Cc "Open"
- * C (
- P ( "\\begin{" .. x .. "}" )
- * ( "<" * ( 1 - P ">") ^ 0 * ">" ) ^ -1
- )
- * Cc ( "\\end{" .. x .. "}" )
+ for _ , x in ipairs ( piton.beamer_environments ) do
+ 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 ) return LPEG1[lang] : match ( s ) 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
+ ( # ( P ">>>" + "..." ) * Lc [[ \__piton_prompt: ]] ) ^ -1
local Prompt = K ( 'Prompt' , ( ( P ">>>" + "..." ) * P " " ^ -1 ) ^ -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
+ )
)
)
)
* ( 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 "-~+/*%=<>&.@|" )
-
-local OperatorWord =
- K ( 'Operator.Word' , P "in" + "is" + "and" + "or" + "not" )
+do
+ local Operator =
+ K ( 'Operator' ,
+ P "!=" + "<>" + "==" + "<<" + ">>" + "<=" + ">=" + ":=" + "//" + "**"
+ + S "-~+/*%=<>&.@|" )
-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 OperatorWord =
+ K ( 'Operator.Word' , P "in" + "is" + "and" + "or" + "not" )
+ local For = K ( 'Keyword' , P "for" )
+ * Space
+ * Identifier
+ * Space
+ * K ( 'Keyword' , P "in" )
-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 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 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 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 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' ,
- 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 )
- ) ^ 0
- * Q "\""
- +
- Q ( P "\"" + "r\"" + "R\"" )
- * ( Q ( ( P "\\\"" + 1 - S " \"\r%" ) ^ 1 )
- + VisualSpace
- + PercentInterpol
- + Q "%"
- ) ^ 0
- * Q "\"" )
+ 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 ShortString = SingleShortString + DoubleShortString
-local braces =
- Compute_braces
- (
- Q ( P "\"" + "r\"" + "R\"" + "f\"" + "F\"" )
- * ( "\"" * ( P "\\\"" + 1 - S "\"" ) ^ 0 * "\"" )
- +
- Q ( 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
+ 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%"
)
- * Q "'''" )
+ 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' , "}" )
+ +
+ 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' ,
+ 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 DoubleLongString =
- WithStyle ( 'String.Long' ,
+ local ShortString = SingleShortString + DoubleShortString
+ local braces =
+ Compute_braces
(
- 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 ( S "rR" ^ -1 * "\"\"\"" )
- * (
- Q ( ( 1 - P "\"\"\"" - S "%\r" ) ^ 1 )
- +
- PercentInterpol
- +
- P "%"
- +
- EOL
- ) ^ 0
+ ( P "\"" + "r\"" + "R\"" + "f\"" + "F\"" )
+ * ( P "\\\"" + 1 - S "\"" ) ^ 0 * "\""
+ +
+ ( P '\'' + 'r\'' + 'R\'' + 'f\'' + 'F\'' )
+ * ( P '\\\'' + 1 - S '\'' ) ^ 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
+ 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 ( '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 Main =
- space ^ 1 * -1
- + space ^ 0 * EOL
- + Space
- + Tab
- + Escape + EscapeMath
- + CommentLaTeX
- + Beamer
- + DetectedCommands
- + LongString
- + Comment
- + ExceptionInConsole
- + Delim
- + Operator
- + OperatorWord * ( Space + Punct + Delim + EOL + -1 )
- + ShortString
- + Punct
- + FromImport
- + RaiseException
- + DefFunction
- + DefClass
- + Keyword * ( Space + Punct + Delim + EOL + -1 )
- + Decorator
- + Builtin * ( Space + Punct + Delim + EOL + -1 )
- + Identifier
- + Number
- + Word
-LPEG1['python'] = Main ^ 0
-LPEG2['python'] =
- Ct (
- ( space ^ 0 * "\r" ) ^ -1
- * BeamerBeginEnvironments
- * PromptHastyDetection
- * Lc '\\__piton_begin_line:'
- * Prompt
- * SpaceIndentation ^ 0
- * LPEG1['python']
- * -1
- * Lc '\\__piton_end_line:'
- )
-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' , 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 ( 'Name.Type' , expression_for_fields )
- * SkipSpace
-
-local OneField =
- K ( 'Name.Field' , identifier ) * SkipSpace
- * Q "=" * SkipSpace
- * ( expression_for_fields
- / ( function ( s ) return LPEG1['ocaml'] : match ( s ) end )
+ 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
+ ) ^ 0
+ +
+ Q ( S "rR" ^ -1 * "\"\"\"" )
+ * (
+ Q ( ( 1 - P "\"\"\"" - S "%\r" ) ^ 1 )
+ +
+ PercentInterpol
+ +
+ P "%"
+ +
+ EOL
+ ) ^ 0
+ )
+ * Q "\"\"\""
)
- * SkipSpace
-
-local Record =
- Q "{" * SkipSpace
- *
- (
- OneFieldDefinition * ( Q ";" * SkipSpace * OneFieldDefinition ) ^ 0
+ 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 =
+ Q "\""
+ * (
+ SpaceInString
+
- OneField * ( Q ";" * SkipSpace * OneField ) ^ 0
- )
- *
- Q "}"
-local DotNotation =
- (
- K ( 'Name.Module' , cap_identifier )
- * Q "."
- * ( Identifier + Constructor + Q "(" + Q "[" + Q "{" )
+ Q ( ( 1 - S " \"\r" ) ^ 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 "and" + "asr" + "land" + "lor" + "lsl" + "lxor" + "mod" + "or" )
-
-local Keyword =
- K ( 'Keyword' ,
- P "assert" + "and" + "as" + "begin" + "class" + "constraint" + "done"
- + "downto" + "do" + "else" + "end" + "exception" + "external" + "for" +
- "function" + "functor" + "fun" + "if" + "include" + "inherit" + "initializer"
- + "in" + "lazy" + "let" + "match" + "method" + "module" + "mutable" + "new" +
- "object" + "of" + "open" + "private" + "raise" + "rec" + "sig" + "struct" +
- "then" + "to" + "try" + "type" + "value" + "val" + "virtual" + "when" +
- "while" + "with" )
- + K ( 'Keyword.Constant' , P "true" + "false" )
-
-local Builtin =
- K ( 'Name.Builtin' , P "not" + "incr" + "decr" + "fst" + "snd" )
-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' , "'" * ( ( 1 - P "'" ) ^ 0 + "\\'" ) * "'" )
-braces = Compute_braces ( "\"" * ( 1 - S "\"" ) ^ 0 * "\"" )
-if piton.beamer then
- Beamer = Compute_Beamer ( 'ocaml' , "\"" * ( 1 - S "\"" ) ^ 0 * "\"" )
-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' ,
+ 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 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 Char =
+ K ( 'String.Short',
+ P "'" *
(
- 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 balanced_parens =
- P { "E" , E = ( "(" * V "E" * ")" + 1 - S "()" ) ^ 0 }
-local Argument =
- K ( 'Identifier' , identifier )
- + Q "(" * SkipSpace
- * K ( 'Identifier' , identifier ) * SkipSpace
+ ( 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 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" * "]"
+ + String + QuotedString + Char
+ + ( 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 ( 'Name.Type' , balanced_parens ) * SkipSpace
- * Q ")"
-local DefFunction =
- K ( 'Keyword' , "let open" )
- * Space
- * K ( 'Name.Module' , cap_identifier )
- +
- K ( 'Keyword' , P "let rec" + "let" + "and" )
- * Space
- * K ( 'Name.Function.Internal' , identifier )
- * Space
- * (
- Q "=" * SkipSpace * K ( 'Keyword' , "function" )
+ * K ( 'TypeExpression' , expression_for_fields_type )
+ * SkipSpace
+ local OneField =
+ K ( 'Name.Field' , identifier ) * SkipSpace
+ * Q "=" * SkipSpace
+ * ( expression_for_fields_value / ParseAgain )
+ * SkipSpace
+ local Record =
+ Q "{" * SkipSpace
+ *
+ (
+ OneFieldDefinition
+ * ( Q ";" * SkipSpace * ( Comment * SkipSpace ) ^ 0 * OneFieldDefinition ) ^ 0
+
- Argument
- * ( SkipSpace * Argument ) ^ 0
- * (
- SkipSpace
- * Q ":"
- * K ( 'Name.Type' , ( 1 - P "=" ) ^ 0 )
- ) ^ -1
+ OneField * ( Q ";" * SkipSpace * ( Comment * SkipSpace ) ^ 0 * OneField ) ^ 0
)
-local DefModule =
- K ( 'Keyword' , "module" ) * Space
- *
+ * SkipSpace
+ * Q ";" ^ -1
+ * SkipSpace
+ * Comment ^ -1
+ * SkipSpace
+ * Q "}"
+ local DotNotation =
(
- K ( 'Keyword' , "type" ) * Space
- * K ( 'Name.Type' , cap_identifier )
- +
- K ( 'Name.Module' , cap_identifier ) * SkipSpace
- *
- (
- Q "(" * SkipSpace
+ 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 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 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 )
+ * 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 )
+ +
+ 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' , P "include" + "open" )
- * Space * K ( 'Name.Module' , cap_identifier )
-local TypeParameter = K ( 'TypeParameter' , "'" * alpha * # ( 1 - P "'" ) )
-local Main =
- space ^ 1 * -1
- + space ^ 0 * EOL
- + Space
- + Tab
- + Escape + EscapeMath
- + Beamer
- + DetectedCommands
- + TypeParameter
- + String + QuotedString + Char
- + Comment
- + Delim
- + Operator
- + Punct
- + FromImport
- + Exception
- + DefFunction
- + DefModule
- + Record
- + Keyword * ( Space + Punct + Delim + EOL + -1 )
- + OperatorWord * ( Space + Punct + Delim + EOL + -1 )
- + Builtin * ( Space + Punct + Delim + EOL + -1 )
- + DotNotation
- + Constructor
- + Identifier
- + Number
- + Word
+ ) ^ -1
+ )
+ +
+ 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 ")"
+ + 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 ":" )
+ * 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
-LPEG1['ocaml'] = Main ^ 0
-LPEG2['ocaml'] =
- Ct (
- ( space ^ 0 * "\r" ) ^ -1
- * BeamerBeginEnvironments
- * Lc '\\__piton_begin_line:'
- * SpaceIndentation ^ 0
- * LPEG1['ocaml']
- * -1
- * Lc '\\__piton_end_line:'
- )
-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 "\""
+ * ( 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 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" )
+ 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: ]]
+ )
+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
)
- + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 )
- ) ^ 0
- * Q "\""
+ )
+ * 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
+ {
+ "ADD" , "AFTER" , "ALL" , "ALTER" , "AND" , "AS" , "ASC" , "BETWEEN" , "BY" ,
+ "CHANGE" , "COLUMN" , "CREATE" , "CROSS JOIN" , "DELETE" , "DESC" , "DISTINCT" ,
+ "DROP" , "EXCEPT" , "FROM" , "GROUP" , "HAVING" , "IN" , "INNER" ,
+ "INSERT" , "INTERSECT" , "INTO" , "IS" , "JOIN" , "LEFT" , "LIKE" , "LIMIT" ,
+ "MERGE" , "NOT" , "NULL" , "OFFSET" , "ON" , "OR" , "ORDER" , "OVER" ,
+ "RIGHT" , "SELECT" , "SET" , "TABLE" , "THEN" , "TRUNCATE" , "UNION" ,
+ "UPDATE" , "VALUES" , "WHEN" , "WHERE" , "WITH"
+ }
+ 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)] 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
)
-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 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 LongComment =
- WithStyle ( 'Comment' ,
- Q "/*"
- * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0
- * Q "*/"
- ) -- $
-local Main =
- space ^ 1 * -1
- + space ^ 0 * EOL
- + Space
- + Tab
- + Escape + EscapeMath
- + CommentLaTeX
- + Beamer
- + DetectedCommands
- + Preproc
- + Comment + LongComment
- + Delim
- + Operator
- + String
- + Punct
- + DefFunction
- + DefClass
- + Type * ( Q "*" ^ -1 + Space + Punct + Delim + EOL + -1 )
- + Keyword * ( Space + Punct + Delim + EOL + -1 )
- + Builtin * ( Space + Punct + Delim + EOL + -1 )
- + Identifier
- + Number
- + Word
-LPEG1['c'] = Main ^ 0
-LPEG2['c'] =
- Ct (
- ( space ^ 0 * P "\r" ) ^ -1
- * BeamerBeginEnvironments
- * Lc '\\__piton_begin_line:'
- * SpaceIndentation ^ 0
- * LPEG1['c']
- * -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
- )
- )
- * Lc "}}"
-end
-local identifier =
- letter * ( alphanum + "-" ) ^ 0
- + '"' * ( ( alphanum + space - '"' ) ^ 1 ) * '"'
+ 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 )
-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
+ 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 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 OneTable =
+ K ( 'Name.Table' , identifier )
+ * (
+ Space
+ * LuaKeyword "AS"
+ * Space
+ * K ( 'Name.Table' , identifier )
+ ) ^ -1
-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 * "'" )
-braces = Compute_braces ( String )
-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 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 LongComment =
- WithStyle ( 'Comment' ,
- Q "/*"
- * ( CommentMath + Q ( ( 1 - P "*/" - S "$\r" ) ^ 1 ) + EOL ) ^ 0
- * Q "*/"
- ) -- $
-local TableField =
- K ( 'Name.Table' , identifier )
- * Q "."
- * K ( 'Name.Field' , identifier )
+ local Comment =
+ WithStyle ( 'Comment' ,
+ Q "#"
+ * ( 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 String =
+ WithStyle ( 'String.Short' ,
+ Q "\""
+ * ( SpaceInString
+ + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 )
+ ) ^ 0
+ * Q "\""
+ )
+ local braces = Compute_braces ( P "\"" * ( P "\\\"" + 1 - P "\"" ) ^ 1 * "\"" )
-local OneTable =
- K ( 'Name.Table' , identifier )
- * (
- Space
- * LuaKeyword "AS"
- * Space
- * K ( 'Name.Table' , identifier )
- ) ^ -1
+ if piton.beamer then Beamer = Compute_Beamer ( 'minimal' , braces ) end
-local WeCatchTableNames =
- LuaKeyword "FROM"
- * ( Space + EOL )
- * OneTable * ( SkipSpace * Q "," * SkipSpace * OneTable ) ^ 0
- + (
- LuaKeyword "JOIN" + LuaKeyword "INTO" + LuaKeyword "UPDATE"
- + LuaKeyword "TABLE"
- )
- * ( Space + EOL ) * OneTable
-local Main =
- space ^ 1 * -1
- + 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
- * LPEG1['sql']
- * -1
- * Lc [[ \__piton_end_line: ]]
- )
-local Punct = Q ( S ",:;!\\" )
+ DetectedCommands = Compute_DetectedCommands ( 'minimal' , braces )
-local Comment =
- WithStyle ( 'Comment' ,
- Q "#"
- * ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $
- )
- * ( EOL + -1 )
+ LPEG_cleaner.minimal = Compute_LPEG_cleaner ( 'minimal' , braces )
-local String =
- WithStyle ( 'String.Short' ,
- Q "\""
- * ( VisualSpace
- + Q ( ( P "\\\"" + 1 - S " \"" ) ^ 1 )
- ) ^ 0
- * Q "\""
- )
+ local identifier = letter * alphanum ^ 0
-braces = Compute_braces ( String )
-if piton.beamer then Beamer = Compute_Beamer ( 'minimal' , braces ) end
+ 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' , 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 ^ 1 * -1
- + space ^ 0 * EOL
- + 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
- * LPEG1['minimal']
- * -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
- sprintL3 [[ \__piton_error_or_warning:n { syntax~error } ]]
+ if t == nil then
+ sprintL3 [[ \__piton_error_or_warning:n { SyntaxError } ]]
return -- to exit in force the function
end
local left_stack = {}
@@ -1132,7 +1301,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
@@ -1152,21 +1323,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 =
@@ -1193,18 +1369,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 )
@@ -1217,10 +1395,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 )
@@ -1230,41 +1407,78 @@ 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
- sprintL3 [[ \bool_if:NT \g__piton_footnote_bool \savenotes \vtop \bgroup ]]
+ piton.CountLines ( piton.last_code )
+ sprintL3 [[ \bool_if:NT \g__piton_footnote_bool \savenotes ]]
piton.Parse ( lang , piton.last_code )
- sprintL3
- [[\vspace{2.5pt}\egroup\bool_if:NT\g__piton_footnote_bool\endsavenotes\par]]
+ sprintL3 [[ \vspace{2.5pt} ]]
+ sprintL3 [[ \bool_if:NT \g__piton_footnote_bool \endsavenotes ]]
+ sprintL3 [[ \par ]]
if piton.write and piton.write ~= '' then
- local file = assert ( io.open ( piton.write , piton.write_mode ) )
- file:write ( piton.get_last_code ( ) )
- file:close ( )
+ local file = io.open ( piton.write , piton.write_mode )
+ if file then
+ 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 [[ \l__piton_split_separation_tl \int_gzero:N \g__piton_line_int ]]
- 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" )
- } : 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: ]]
+ .. [[ \int_gzero:N \g__piton_line_int ]]
function piton.get_last_code ( )
return LPEG_cleaner[piton.last_language] : match ( piton.last_code )
end
function piton.CountLines ( code )
local count = 0
- for i in code : gmatch ( "\r" ) do count = count + 1 end
- sprintL3 ( [[ \int_set:Nn \l__piton_nb_lines_int { ]] .. 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
@@ -1275,21 +1489,24 @@ function piton.CountNonEmptyLines ( code )
* -1
) / table.getn
) : match ( code )
- sprintL3 ( [[ \int_set:Nn \l__piton_nb_non_empty_lines_int { ]] .. count .. '}' )
+ sprintL3
+ ( 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 ( [[ \int_set:Nn \l__piton_nb_lines_int { ]] .. count .. '}' )
+ sprintL3
+ ( 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 ( [[ \int_set:Nn \l__piton_nb_non_empty_lines_int { ]] .. count .. '}' )
+ sprintL3
+ ( string.format ( [[ \int_set:Nn \l__piton_nb_non_empty_lines_int { % i } ]] , count ) )
end
function piton.ComputeRange(marker_beginning,marker_end,file_name)
local s = ( Cs ( ( P '##' / '#' + 1 ) ^ 0 ) ) : match ( marker_beginning )
@@ -1297,58 +1514,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 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 )
- }
- 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 )
@@ -1413,7 +1707,7 @@ function piton.new_language ( lang , definition )
+ "Ï" + "Î" + "Ô" + "Û" + "Ü"
local alphanum = letter + digit
local identifier = letter * alphanum ^ 0
- local Identifier = K ( 'Identifier' , identifier )
+ local Identifier = K ( 'Identifier.Internal' , identifier )
local split_clist =
P { "E" ,
E = ( "[" * ( 1 - P "]" ) ^ 0 * "]" ) ^ -1
@@ -1422,11 +1716,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
@@ -1440,7 +1736,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
@@ -1466,6 +1762,7 @@ function piton.new_language ( lang , definition )
end
end
local long_string = P ( false )
+ local Long_string = P ( false )
local LongString = P (false )
local central_pattern = P ( false )
for _ , x in ipairs ( def_table ) do
@@ -1483,23 +1780,27 @@ 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 +
+ prefix
+ * arg3
+ * ( space + central_pattern ) ^ 0
+ * arg4
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
+ Long_string = Long_string + pattern
LongString = LongString +
Ct ( Cc "Open" * Cc ( "{" .. arg2 .. "{" ) * Cc "}}" )
* pattern
* Ct ( Cc "Close" )
end
end
-
- local braces = Compute_braces ( String )
+ local braces = Compute_braces ( long_string )
if piton.beamer then Beamer = Compute_Beamer ( lang , braces ) end
DetectedCommands = Compute_DetectedCommands ( lang , braces )
@@ -1519,7 +1820,7 @@ function piton.new_language ( lang , definition )
CommentDelim = CommentDelim +
Ct ( Cc "Open"
* Cc ( "{" .. arg2 .. "{" ) * Cc "}}" )
- * Q ( arg3 )
+ * Q ( arg3 )
* ( CommentMath + Q ( ( 1 - S "$\r" ) ^ 1 ) ) ^ 0 -- $
* Ct ( Cc "Close" )
* ( EOL + -1 )
@@ -1563,7 +1864,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
@@ -1599,8 +1904,7 @@ function piton.new_language ( lang , definition )
local Delim = Q ( S "{[()]}" )
local Punct = Q ( S "=,:;!\\'\"" )
local Main =
- space ^ 1 * -1
- + space ^ 0 * EOL
+ space ^ 0 * EOL
+ Space
+ Tab
+ Escape + EscapeMath
@@ -1613,7 +1917,7 @@ function piton.new_language ( lang , definition )
+ PrefixedKeyword
+ Keyword * ( -1 + # ( 1 - alphanum ) )
+ Punct
- + K ( 'Identifier' , letter * alphanum ^ 0 )
+ + K ( 'Identifier.Internal' , letter * alphanum ^ 0 )
+ Number
+ Word
LPEG1[lang] = Main ^ 0
@@ -1621,11 +1925,11 @@ function piton.new_language ( lang , definition )
Ct (
( space ^ 0 * P "\r" ) ^ -1
* BeamerBeginEnvironments
- * Lc [[\__piton_begin_line:]]
+ * Lc [[ \__piton_begin_line: ]]
* SpaceIndentation ^ 0
- * LPEG1[lang]
+ * ( 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 "}}" )
@@ -1649,7 +1953,7 @@ function piton.new_language ( lang , definition )
+ PrefixedKeyword
+ Keyword * ( -1 + # ( 1 - alphanum ) )
+ Punct
- + K ( 'Identifier' , letter * alphanum ^ 0 )
+ + K ( 'Identifier.Internal' , letter * alphanum ^ 0 )
+ Number
+ Word
LPEG0[lang] = MainWithoutTag ^ 0
@@ -1666,11 +1970,11 @@ function piton.new_language ( lang , definition )
Ct (
( space ^ 0 * P "\r" ) ^ -1
* BeamerBeginEnvironments
- * Lc [[\__piton_begin_line:]]
+ * Lc [[ \__piton_begin_line: ]]
* 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 72591ea8baa..fd58e5a8479 100644
--- a/Master/texmf-dist/tex/lualatex/piton/piton.sty
+++ b/Master/texmf-dist/tex/lualatex/piton/piton.sty
@@ -19,8 +19,10 @@
%% LaTeX version 2005/12/01 or later.
%% -------------------------------------------
%%
-\def\PitonFileVersion{3.0b}
-\def\PitonFileDate{2024/05/23}
+\def\PitonFileVersion{4.1}
+\def\PitonFileDate{2024/10/18}
+
+
@@ -31,6 +33,7 @@
{\PitonFileDate}
{\PitonFileVersion}
{Highlight informatic listings with LPEG on LuaLaTeX}
+\RequirePackage { amstext }
\cs_new_protected:Npn \__piton_error:n { \msg_error:nn { piton } }
\cs_new_protected:Npn \__piton_warning:n { \msg_warning:nn { piton } }
\cs_new_protected:Npn \__piton_error:nn { \msg_error:nnn { piton } }
@@ -81,39 +84,35 @@
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 ,
-
- math-comments .code:n = \__piton_error:n { moved~to~preamble } ,
- comment-latex .code:n = \__piton_error:n { moved~to~preamble } ,
+ 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 }
}
-\__piton_msg_new:nn { moved~to~preamble }
- {
- The~key~'\l_keys_key_str'~*must*~now~be~used~with~
- \token_to_str:N \PitonOptions`in~the~preamble~of~your~
- document.\\
- That~key~will~be~ignored.
- }
\__piton_msg_new:nn { Unknown~key~for~package }
{
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 }
@@ -165,7 +164,11 @@
}
\lua_now:n
{
- piton.ListCommands = lpeg.P ( false )
+ piton.BeamerCommands = lpeg.P [[\uncover]]
+ + [[\only]] + [[\visible]] + [[\invisible]] + [[\alert]] + [[\action]]
+ piton.beamer_environments = { "uncoverenv" , "onlyenv" , "visibleenv" ,
+ "invisibleenv" , "alertenv" , "actionenv" }
+ piton.DetectedCommands = lpeg.P ( false )
piton.last_code = ''
piton.last_language = ''
}
@@ -176,14 +179,17 @@
\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
\tl_new:N \g__piton_aux_tl
\int_new:N \l__piton_splittable_int
-\tl_new:N \l__piton_split_separation_tl
-\tl_set:Nn \l__piton_split_separation_tl { \vspace{\baselineskip} \vspace{-1.25pt} }
\int_set:Nn \l__piton_splittable_int { 100 }
+\tl_new:N \l__piton_split_separation_tl
+\tl_set:Nn \l__piton_split_separation_tl
+ { \vspace { \baselineskip } \vspace { -1.25pt } }
\clist_new:N \l__piton_bg_color_clist
\tl_new:N \l__piton_prompt_bg_color_tl
\str_new:N \l__piton_begin_range_str
@@ -202,6 +208,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
@@ -210,36 +217,27 @@
\bool_new:N \l__piton_left_margin_auto_bool
\dim_new:N \l__piton_numbers_sep_dim
\dim_set:Nn \l__piton_numbers_sep_dim { 0.7 em }
-\tl_new:N \l__piton_tab_tl
\seq_new:N \g__piton_languages_seq
-\cs_new_protected:Npn \__piton_set_tab_tl:n #1
- {
- \tl_clear:N \l__piton_tab_tl
- \prg_replicate:nn { #1 }
- { \tl_put_right:Nn \l__piton_tab_tl { ~ } }
- }
-\__piton_set_tab_tl:n { 4 }
-\cs_new_protected:Npn \__piton_convert_tab_tl:
+\int_new:N \l__piton_tab_size_int
+\int_set:Nn \l__piton_tab_size_int { 4 }
+\cs_new_protected:Npn \__piton_tab:
{
- \hbox_set:Nn \l_tmpa_box { \l__piton_tab_tl }
- \dim_set:Nn \l_tmpa_dim { \box_wd:N \l_tmpa_box }
- \tl_set:Nn \l__piton_tab_tl
+ \bool_if:NTF \l__piton_show_spaces_bool
{
+ \hbox_set:Nn \l_tmpa_box
+ { \prg_replicate:nn \l__piton_tab_size_int { ~ } }
+ \dim_set:Nn \l_tmpa_dim { \box_wd:N \l_tmpa_box }
\( \mathcolor { gray }
- { \hbox_to_wd:nn \l_tmpa_dim { \rightarrowfill } \) }
+ { \hbox_to_wd:nn \l_tmpa_dim { \rightarrowfill } } \)
}
+ { \hbox:n { \prg_replicate:nn \l__piton_tab_size_int { ~ } } }
+ \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_beamer_command:n #1
- {
- \str_set:Nn \l__piton_beamer_command_str { #1 }
- \use:c { #1 }
- }
\cs_new_protected:Npn \__piton_label:n #1
{
\bool_if:NTF \l__piton_line_numbers_bool
@@ -254,29 +252,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
@@ -285,10 +283,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:
@@ -309,30 +313,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 }
{
@@ -349,7 +362,6 @@
\box_use_drop:N \l_tmpa_box
}
}
- \vspace { - 2.5 pt }
\group_end:
\tl_gclear:N \g__piton_begin_line_hook_tl
}
@@ -370,11 +382,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 } [
@@ -387,19 +400,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 } > \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:
{
@@ -431,11 +448,14 @@
\bool_new:N \l__piton_skip_empty_lines_bool
\bool_set_true:N \l__piton_skip_empty_lines_bool
\bool_new:N \l__piton_line_numbers_absolute_bool
+\tl_new:N \l__piton_line_numbers_format_bool
+\tl_set:Nn \l__piton_line_numbers_format_tl { \footnotesize \color { gray } }
\bool_new:N \l__piton_label_empty_lines_bool
\bool_set_true:N \l__piton_label_empty_lines_bool
\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 } ,
@@ -452,12 +472,8 @@
false .code:n = \bool_set_false:N \l__piton_line_numbers_bool ,
start .code:n =
- \bool_if:NTF \l__piton_in_PitonOptions_bool
- { Invalid~key }
- {
- \bool_set_true:N \l__piton_line_numbers_bool
- \int_set:Nn \l__piton_number_lines_start_int { #1 }
- } ,
+ \bool_set_true:N \l__piton_line_numbers_bool
+ \int_set:Nn \l__piton_number_lines_start_int { #1 } ,
start .value_required:n = true ,
skip-empty-lines .code:n =
@@ -484,11 +500,7 @@
{
\bool_set_true:N \l__piton_line_numbers_absolute_bool
\bool_set_false:N \l__piton_skip_empty_lines_bool
- }
- \bool_lazy_or:nnF
- \l__piton_in_PitonInputFile_bool
- \l__piton_in_PitonOptions_bool
- { \__piton_error:n { Invalid~key } } ,
+ } ,
absolute .value_forbidden:n = true ,
resume .code:n =
@@ -500,14 +512,27 @@
sep .dim_set:N = \l__piton_numbers_sep_dim ,
sep .value_required:n = true ,
+ format .tl_set:N = \l__piton_line_numbers_format_tl ,
+ format .value_required:n = true ,
+
unknown .code:n = \__piton_error:n { Unknown~key~for~line-numbers }
}
\keys_define:nn { PitonOptions }
{
+ break-strings-anywhere .code:n =
+ \cs_set_eq:NN \__piton_break_anywhere:n \__piton_actually_break_anywhere:n ,
detected-commands .code:n =
- \lua_now:n { piton.addListCommands('#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') } ,
+ detected-beamer-commands .value_required:n = true ,
+ detected-beamer-commands .usage:n = preamble ,
+ detected-beamer-environments .code:n =
+ \lua_now:n { piton.addBeamerEnvironments('#1') } ,
+ detected-beamer-environments .value_required:n = true ,
+ detected-beamer-environments .usage:n = preamble ,
begin-escape .code:n =
\lua_now:e { piton.begin_escape = "\lua_escape:n{#1}" } ,
begin-escape .value_required:n = true ,
@@ -535,10 +560,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 }
{
@@ -549,6 +574,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 } ,
@@ -558,8 +585,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,13 +640,12 @@
} ,
left-margin .value_required:n = true ,
- tab-size .code:n = \__piton_set_tab_tl:n { #1 } ,
+ tab-size .int_set:N = \l__piton_tab_size_int ,
tab-size .value_required:n = true ,
- show-spaces .code:n =
- \bool_set_true:N \l__piton_show_spaces_bool
- \__piton_convert_tab_tl: ,
+ 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 ,
@@ -656,6 +685,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 } ,
@@ -664,11 +697,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
{
@@ -695,9 +724,8 @@
\hbox_overlap_left:n
{
{
- \color { gray }
- \footnotesize
- \int_to_arabic:n \g__piton_visual_line_int
+ \l__piton_line_numbers_format_tl
+ { \int_to_arabic:n \g__piton_visual_line_int }
}
\skip_horizontal:N \l__piton_numbers_sep_dim
}
@@ -707,7 +735,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 }
@@ -718,7 +746,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 } }
@@ -750,15 +778,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 } { . }
@@ -766,24 +795,25 @@
}
\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:
- \ttfamily
+ \bool_if:NT \l__piton_break_lines_in_piton_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
@@ -791,9 +821,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()) }
@@ -805,17 +834,20 @@
\bool_if:NT \l__piton_break_lines_in_piton_bool
{ \regex_replace_all:nnN { \x20 } { \x20 } \l_tmpa_tl }
}
- \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:
}
\NewDocumentCommand { \__piton_piton_verbatim } { v }
{
\group_begin:
- \ttfamily
+ \l__piton_font_command_tl
\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()) }
@@ -828,67 +860,24 @@
}
\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:cpn { pitonStyle _ \l_piton_language_str _ Prompt } { }
- \cs_set:cpn { pitonStyle _ Prompt } { }
- \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:Nx \l_tmpa_tl
- {
- \lua_now:e
- { piton.Parse('\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
- \l_tmpa_tl
- \group_end:
- }
-\cs_new_protected:Npn \__piton_piton_no_cr: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_protected:Npn \__piton_newline:
- { \msg_fatal:nn { piton } { cr~not~allowed } }
- \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 }
- }
- }
+ \cs_set_eq:NN \__piton_trailing_space: \space
+ \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
- \l_tmpa_tl
+ \__piton_replace_spaces:o \l_tmpa_tl
\group_end:
}
\cs_new:Npn \__piton_pre_env:
@@ -906,13 +895,14 @@
\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
{
\hbox_set:Nn \l_tmpa_box
{
- \footnotesize
+ \l__piton_line_numbers_format_tl
\bool_if:NTF \l__piton_skip_empty_lines_bool
{
\lua_now:n
@@ -920,7 +910,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 }
@@ -930,7 +920,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
@@ -966,14 +955,15 @@
####1
\c_backslash_str end \c_left_brace_str #1 \c_right_brace_str
}
- {
+ {
\group_end:
- \mode_if_vertical:TF \mode_leave_vertical: \newline
- \lua_now:n { piton.CountLines(token.scan_argument()) } { ##1 }
+ \mode_if_vertical:TF { \noindent \mode_leave_vertical: } \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
\str_if_empty:NTF \l__piton_path_write_str
{ \lua_now:e { piton.write = "\l__piton_write_str" } }
{
@@ -983,16 +973,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 }
@@ -1014,26 +1004,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 ( )
)
}
@@ -1057,18 +1051,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
{
- \str_set:Nn \l__piton_file_name_str { ##1 / #3 }
- \file_if_exist:nT { \l__piton_file_name_str }
+ \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 }
+ }
+ {
+ \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
@@ -1135,8 +1144,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
- % \leavevmode
+ \l__piton_font_command_tl
\lua_now:e
{
piton.ParseFile(
@@ -1144,20 +1152,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:
+ \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:nnN { \\\# } \c_hash_str \l_tmpa_str
+ \regex_replace_all:nnN { \\\# } \c_hash_str \l_tmpb_str
\lua_now:e
{
piton.ComputeRange
@@ -1172,7 +1184,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 }
@@ -1187,10 +1199,12 @@
Discard ,
Exception ,
FormattingType ,
+ Identifier.Internal ,
Identifier ,
InitialValues ,
Interpol.Inside ,
Keyword ,
+ Keyword.Governing ,
Keyword.Constant ,
Keyword2 ,
Keyword3 ,
@@ -1222,6 +1236,7 @@
Tag ,
TypeParameter ,
UserFunction ,
+ TypeExpression ,
Directive
}
@@ -1231,28 +1246,30 @@
{
#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 }
}
}
\keys_define:nn { piton / Styles }
{
- 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 ,
- ParseAgain.noCR .tl_set:c = pitonStyle _ ParseAgain.noCR ,
- ParseAgain.noCR .value_required:n = true ,
+ String .meta:n = { String.Long = #1 , String.Short = #1 } ,
+ Comment.Math .tl_set:c = pitonStyle _ Comment.Math ,
unknown .code:n =
\__piton_error:n { Unknown~key~for~SetPitonStyle }
}
+\SetPitonStyle[OCaml]
+ {
+ TypeExpression =
+ \SetPitonStyle { Identifier = \PitonStyle { Name.Type } }
+ \__piton_piton:n ,
+ }
\clist_gput_left:Nn \g__piton_styles_clist { String }
\clist_gsort:Nn \g__piton_styles_clist
{
@@ -1260,46 +1277,54 @@
\sort_return_same:
\sort_return_swapped:
}
+\cs_set_eq:NN \__piton_break_anywhere:n \prg_do_nothing:
+\cs_new_protected:Npn \__piton_actually_break_anywhere:n #1
+ {
+ \seq_clear:N \l_tmpa_seq
+ \tl_map_inline:nn { #1 }
+ { \seq_put_right:Nn \l_tmpa_seq { ##1 } }
+ \seq_use:Nn \l_tmpa_seq { \- }
+ }
\SetPitonStyle
{
- Comment = \color[HTML]{0099FF} \itshape ,
- Exception = \color[HTML]{CC0000} ,
- Keyword = \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 = \__piton_identifier:n ,
- Directive = \color[HTML]{AA6600} ,
- Tag = \colorbox{gray!10},
- UserFunction = ,
- Prompt = ,
- ParseAgain.noCR = \__piton_piton_no_cr:n ,
- ParseAgain = \__piton_piton: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} ,
+ Operator = \color[HTML]{555555} ,
+ Operator.Word = \bfseries ,
+ String = \color[HTML]{CC3300} \__piton_break_anywhere: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 }
{
@@ -1310,7 +1335,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
@@ -1320,7 +1345,10 @@
\cs_new_protected:Npn \__piton_identifier:n #1
{
\cs_if_exist_use:cF { PitonIdentifier _ \l_piton_language_str _ #1 }
- { \cs_if_exist_use:c { PitonIdentifier _ #1 } }
+ {
+ \cs_if_exist_use:cF { PitonIdentifier _ #1 }
+ { \PitonStyle { Identifier } }
+ }
{ #1 }
}
\cs_new_protected:cpn { pitonStyle _ Name.Function.Internal } #1
@@ -1331,8 +1359,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 }
{
@@ -1348,7 +1376,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 }
@@ -1369,7 +1398,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 }
{
@@ -1436,12 +1465,20 @@
markers~and~explicit~number~of~lines.\\
Your~whole~file~'\l__piton_file_name_str'~will~be~included.
}
-\__piton_msg_new:nn { syntax~error }
+\__piton_msg_new:nn { SyntaxError }
{
- Your~code~of~the~language~"\l_piton_language_str"~is~not~
+ Syntax~Error.\\
+ Your~code~of~the~language~'\l_piton_language_str'~is~not~
syntactically~correct.\\
It~won't~be~printed~in~the~PDF~file.
}
+\__piton_msg_new:nn { FileError }
+ {
+ File~Error.\\
+ It's~not~possible~to~write~on~the~file~'\l__piton_write_str'.\\
+ \sys_if_shell_unrestricted:F { Be~sure~to~compile~with~'-shell-escape'.\\ }
+ If~you~go~on,~nothing~will~be~written~on~the~file.
+ }
\__piton_msg_new:nn { begin~marker~not~found }
{
Marker~not~found.\\
@@ -1478,12 +1515,17 @@
break-lines,~
break-lines-in-piton,~
break-lines-in-Piton,~
+ break-strings-anywhere,~
continuation-symbol,~
continuation-symbol-on-indentation,~
+ detected-beamer-commands,~
+ detected-beamer-environments,~
detected-commands,~
end-of-broken-line,~
end-range,~
env-gobble,~
+ env-used-by-split,~
+ font-command,~
gobble,~
indent-broken-lines,~
language,~
@@ -1498,6 +1540,7 @@
show-spaces,~
show-spaces-in-strings,~
splittable,~
+ splittable-on-empty-lines,~
split-on-empty-lines,~
split-separation,~
tabs-auto-gobble,~
@@ -1510,15 +1553,6 @@
because~the~key~'line-numbers'~is~not~active.\\
If~you~go~on,~that~command~will~ignored.
}
-\__piton_msg_new:nn { cr~not~allowed }
- {
- You~can't~put~any~carriage~return~in~the~argument~
- of~a~command~\c_backslash_str
- \l__piton_beamer_command_str\ within~an~
- environment~of~'piton'.~You~should~consider~using~the~
- corresponding~environment.\\
- That~error~is~fatal.
- }
\__piton_msg_new:nn { overlay~without~beamer }
{
You~can't~use~an~argument~<...>~for~your~command~
@@ -1528,7 +1562,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 } { . }
@@ -1545,18 +1579,37 @@
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.addListCommands( key_value )
- piton.ListCommands = piton.ListCommands + my_lpeg : match ( 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 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 ,
+ F = space ^ 0 * ( alpha ^ 1 ) * space ^ 0
+ }
+ function piton.addBeamerEnvironments( key_value )
+ piton.beamer_environments = my_lpeg_bis : match ( key_value )
end
\end{luacode*}
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..91c15789e43 100644
--- a/Master/texmf-dist/tex/lualatex/plantuml/plantuml.sty
+++ b/Master/texmf-dist/tex/lualatex/plantuml/plantuml.sty
@@ -3,7 +3,7 @@
%% SPDX-License-Identifier: LPPL-1.3c+
\NeedsTeXFormat{LaTeX2e}\relax
\ProvidesPackage{plantuml}
- [2023/05/12 v0.3.2
+ [2024/09/17 v0.4.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 } {
@@ -93,6 +95,7 @@
\end{adjustbox}
}{
\includegraphics[width=\maxwidth{\textwidth}]{\PlantUMLJobname-plantuml.\PlantUmlMode}
+ \UMLcountUp
}
}
\or
@@ -102,4 +105,3 @@
}{}
\fi
\makeatother
-
diff --git a/Master/texmf-dist/tex/lualatex/tango/tango.cls b/Master/texmf-dist/tex/lualatex/tango/tango.cls
new file mode 100644
index 00000000000..f188200b4ca
--- /dev/null
+++ b/Master/texmf-dist/tex/lualatex/tango/tango.cls
@@ -0,0 +1,2182 @@
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesClass{tango}%
+[2024/07/15 v0.8.0 tango document class. Michel Bovani]% %
+%
+% Ensure luatex engine
+\RequirePackage{iftex}[2019/10/24]
+\RequireLuaTeX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand\TgoTempa{}
+\newcommand\TgoTempb{}
+\newcommand\TgoTempc{}
+\newcommand\TgoSmallerSize{}
+\newcommand\TgoStatementNumberSuffix{}
+\newcommand\TgoStatementNumberPrefix{}
+\newcommand\TgoStatementSuffix{}
+\newcommand\TgoStatementName{}
+\newcommand\TgoTheoremName{Theorem}
+\newcommand\TgoDefinitionName{Definition}
+\newcommand\TgoPropositionName{Proposition}
+\newcommand\TgoLemmaName{Lemma}
+\newcommand\TgoCorollaryName{Corollary}
+\newcommand\TgoRemarkName{Remark}
+\newcommand\TgoExampleName{Example}
+\newcommand\TgoContentsName{Contents}
+\newcommand\TgoExerciseName{Exercise}
+\newcommand\TgoExercisesSubsectionName{Exercises}
+\newcommand\TgoExercisesSectionName{Exercises}
+\newcommand\TgoPublicationClass{article}
+\newcommand\TgoStatementIndent{\indent}
+\newif\ifTgoFrenchLanguage
+\newif\ifTgoNGermanLanguage
+\newif\ifTgoGermanLanguage
+\newif\ifTgoNAustrianLanguage
+\newif\ifTgoNSwissGermanLanguage
+\newif\ifTgoItalianLanguage
+\newif\ifTgoSpanishLanguage
+\newif\ifTgoEnglishLanguage
+\newif\ifTgoBritishLanguage
+\newif\ifTgoAmericanLanguage
+\newif\ifTgoCanadianLanguage
+\newif\ifTgoAustralianLanguage
+\newif\ifTgoNewZealandLanguage
+\newif\ifTgoNoStatement
+\newif\ifTgoBook
+\newif\ifTgoOneSide\TgoOneSidetrue
+\newif\ifTgoAfourPaperOutput\TgoAfourPaperOutputtrue
+\newif\ifTgoLetterOutput
+\newif\ifTgoBigTabletOutput
+\newif\ifTgoAfivePaperOutput
+\newif\ifTgoTabletOutput
+\newif\ifTgoSmallTabletOutput
+\newif\ifTgoeReaderOutput
+\newif\ifTgoSmartphoneOutput
+\newif\ifTgoSmallerSizeCommand
+\newif\ifTgoTitleIndentZero\TgoTitleIndentZerotrue
+\newcommand\TgoChapterTitleFont{RobotoCondensedBold}
+\NewDocumentCommand\TgoStatementNameOffset{}{}
+\NewDocumentCommand\SetTgoBaseFonts{}{%
+ \setmainfont{erewhon}%
+ \setmathfont{Erewhon Math}%
+ }%
+ \newlength\TgoAfterChapterSkip
+ \newlength\TgoStandardMargin
+ \newlength\TgoStatementParindent
+ \newlength\TgoTitleIndent
+ %%%
+\AddToHook{package/xcolor/after}
+{%
+\definecolor{ColorOne}{rgb}{0.15,0.15,0.15}
+\definecolor{ColorTwo}{rgb}{0.93,0.93,0.93}
+}
+\AddToHook{class/article/after}{%
+\TgoTenPointsFonts}
+\AddToHook{class/book/after}{%
+\TgoTenPointsFonts}
+%%
+%
+ %%
+ \DeclareKeys[tango]{
+ %%%%%% languages,%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ french.code= {%
+ \TgoFrenchLanguagetrue
+ \TgoTitleIndentZerofalse
+ },
+ ngerman.code= {%
+ \TgoNGermanLanguagetrue
+ },
+ german.code= {%
+ \TgoGermanLanguagetrue
+ },
+naustrian.code= {%
+ \TgoNAustrianLanguagetrue
+ },
+nswissgerman.code= {%
+ \TgoNSwissGermanLanguagetrue
+ },
+ italian.code= {%
+ \TgoItalianLanguagetrue
+ },
+ spanish.code= {%
+ \TgoSpanishLanguagetrue
+ },
+english.code= {%
+ \TgoEnglishLanguagetrue
+ },
+british.code= {%
+ \TgoBritishLanguagetrue
+ },
+american.code= {%
+ \TgoAmericanLanguagetrue
+ },
+canadian.code= {%
+ \TgoCanadianLanguagetrue
+ },
+australian.code= {%
+ \TgoAustralianLanguagetrue
+ },
+newzealand.code= {%
+ \TgoNewZealandLanguagetrue
+ },
+ %%%%%% Default Statements %%%%%%%%%%%%%%%%%%%%%%%%
+ no-statement.if = TgoNoStatement,
+ %%%%%% No Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%
+ no-hyperref.if = TgoNoHyperref,
+ %%%%%% Parindentzero %%%%%%%%%%%%%%%%%%%%%%%%%%%
+ no-indent.if = TgoParindentZero,
+ indent.ifnot = TgoParindentZero,
+%%%%%% Parindentzero %%%%%%%%%%%%%%%%%%%%%%%%%%%
+ no-titleindent.if = TgoTitleIndentZero,
+ titleindent.ifnot = TgoTitleIndentZero,
+ %%%%%% ThmNamePos left/right %%%%%%%%%%%%%%%%%%%%%%%
+ ThmNamePos.choice:,
+ ThmNamePos / left.code:n =
+ {
+ \RenewDocumentCommand\TgoStatementNameOffset{}{}
+ },
+ ThmNamePos / right.code:n =
+ {
+ \RenewDocumentCommand\TgoStatementNameOffset{}{\hspace*{\fill}}
+ },
+%%%% book or article %%%%%%%%%%%%%%%%%%%%%%%%%%%
+PubliClass.choice:,
+PubliClass / article.code:n =
+{%
+\renewcommand\TgoPublicationClass{article}
+\TgoBookfalse
+},
+PubliClass / book.code:n =
+{%
+\renewcommand\TgoPublicationClass{book}
+\TgoBooktrue
+},
+%%%% oneside or two sides %%%%%%%%%%%%%%%%%%%%%%%%
+oneside.if = TgoOneSide ,
+twoside.ifnot = TgoOneSide ,
+%%%% Font Size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+FontSize.choice:,
+FontSize / 9pt.code:n =
+{
+\RemoveFromHook{class/article/after}
+\AddToHook{class/article/after}{%
+\TgoNinePointsFonts}
+\RemoveFromHook{class/book/after}
+\AddToHook{class/book/after}{%
+\TgoNinePointsFonts}
+},
+FontSize / 10pt.code:n =
+{
+\RemoveFromHook{class/article/after}
+\AddToHook{class/article/after}{%
+\TgoTenPointsFonts}
+\RemoveFromHook{class/book/after}
+\AddToHook{class/book/after}{%
+\TgoTenPointsFonts}
+},
+FontSize / 11pt.code:n =
+{
+\RemoveFromHook{class/article/after}
+\AddToHook{class/article/after}{%
+\TgoElevenPointsFonts}
+\RemoveFromHook{class/book/after}
+\AddToHook{class/book/after}{%
+\TgoElevenPointsFonts}
+},
+FontSize / 12pt.code:n =
+{
+\RemoveFromHook{class/article/after}
+\AddToHook{class/article/after}{%
+\TgoTwelvePointsFonts}
+\RemoveFromHook{class/book/after}
+\AddToHook{class/book/after}{%
+\TgoTwelvePointsFonts}
+},
+FontSize / unknown.code:n =
+{
+ \ClassWarning{tango}{\MessageBreak Value #1 is unknown \MessageBreak
+ Possible choices are 9pt, 10pt, 11pt and 12pt.
+ \MessageBreak Selecting 10pt.}
+},
+%%%% ColorTheme %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ColorTheme.choice:,
+ColorTheme / Blue.code:n =
+{%
+\RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+ \definecolor{ColorOne}{rgb}{0.08, 0.05, 0.55}
+ \definecolor{ColorTwo}{rgb}{0.87, 0.94, 0.97}
+ }
+},
+ ColorTheme / Navy.code:n =
+ {%
+ \RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+ \definecolor{ColorOne}{rgb}{0.07, 0.37, 0.65}
+ \definecolor{ColorTwo}{rgb}{0.87, 0.95, 0.97}
+ }
+ },
+ColorTheme / USAF.code:n =
+ {%
+ \RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+ \definecolor{ColorOne}{rgb}{0.24, 0.41, 0.54}
+ \definecolor{ColorTwo}{rgb}{0.92, 0.94, 0.96}
+ }
+ },
+ ColorTheme / Azur.code:n =
+{%
+\RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.15, 0.32, 0.75}
+\definecolor{ColorTwo}{rgb}{0.88, 0.94, 0.97}
+}
+},
+ ColorTheme / Red.code:n =
+ {%
+ \RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.75,0.05,0.1}
+\definecolor{ColorTwo}{rgb}{1,0.94,0.9}
+}
+ },
+ ColorTheme / Framboise.code:n =
+ {%
+ \RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.64, 0.25, 0.45}
+\definecolor{ColorTwo}{rgb}{1, 0.95, 0.94}
+}
+ },
+ ColorTheme / Brique.code:n =
+{%
+\RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.68, 0.1, 0.0}
+\definecolor{ColorTwo}{rgb}{1, 0.95, 0.89}
+}
+},
+ ColorTheme / Sienne.code:n =
+ {%
+ \RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.55, 0.27, 0.1}
+\definecolor{ColorTwo}{rgb}{1, 0.95, 0.87}
+ }
+ },
+ ColorTheme / Caramel.code:n =
+{%
+\RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.66, 0.26, 0.0}
+\definecolor{ColorTwo}{rgb}{1, 0.96, 0.86}
+}
+},
+ ColorTheme / Olive.code:n =
+ {%
+ \RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.28, 0.43, 0.03}
+\definecolor{ColorTwo}{rgb}{0.95, 0.98, 0.9}
+}
+ },
+ ColorTheme / Tannen.code:n =
+{%
+\RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.09, 0.44, 0.28}
+\definecolor{ColorTwo}{rgb}{0.92, 0.97, 0.94}
+}
+},
+ ColorTheme / GrayGray.code:n =
+{%
+\RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.25,0.25,0.25}
+\definecolor{ColorTwo}{rgb}{0.95,0.95,0.95}
+}
+},
+ ColorTheme / BlackAndWhite.code:n =
+{%
+\RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0,0,0}
+\definecolor{ColorTwo}{rgb}{1,1,1}
+}
+},
+ ColorTheme / Ink.code:n =
+{%
+\RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.25, 0.25, 0.33}
+\definecolor{ColorTwo}{rgb}{0.94, 0.95, 0.97}
+}
+},
+ ColorTheme / Steel.code:n =
+{%
+\RemoveFromHook{package/xcolor/after}
+ \AddToHook{package/xcolor/after}%
+{ %
+\definecolor{ColorOne}{rgb}{0.27, 0.25, 0.2}
+\definecolor{ColorTwo}{rgb}{0.96, 0.96, 0.93}
+}
+},
+ ColorTheme / unknown.code:n =
+ {
+ \ClassWarning{tango}{\MessageBreak “ColorTheme” #1 is unknown!\MessageBreak
+Possible choices are: \MessageBreak
+Blue, Navy, USAF, Azur, Red, Framboise, Brique,
+ \MessageBreak Sienne, Caramel, Olive, Tannen, GrayGray, BlackAndWhite, Ink and Steel.
+\MessageBreak Stay in GrayGray}
+},
+%%%% User defined colors %%%%%%%%%%%%%%%%%%%%%%%%
+ColorOne.code = \AddToHook{package/xcolor/after}{\definecolor{ColorOne}#1},
+ColorTwo.code = \AddToHook{package/xcolor/after}{\definecolor{ColorTwo}#1},
+ColorOneNamed.code = \AddToHook{package/xcolor/after}{\colorlet{ColorOne}{#1}},
+ColorTwoNamed.code = \AddToHook{package/xcolor/after}{\colorlet{ColorTwo}{#1}},
+%%%% Output %%%%%%%%%%%%%%%%%%%%%%%%%%
+ Output.choice:,
+ Output / A4paper.code:n =
+ {
+\TgoAfourPaperOutputtrue
+ },
+Output / Letter.code:n =
+{
+\TgoLetterOutputtrue
+\TgoBigTabletOutputtrue
+\TgoAfourPaperOutputfalse
+},
+Output / BigTablet.code:n =
+ {
+\TgoBigTabletOutputtrue
+\TgoAfourPaperOutputfalse
+ },
+Output / A5paper.code:n =
+ {
+\TgoAfivePaperOutputtrue
+\TgoTabletOutputtrue
+\TgoAfourPaperOutputfalse
+ },
+Output / Tablet.code:n =
+ {
+\TgoTabletOutputtrue
+\TgoAfourPaperOutputfalse
+ },
+Output / SmallTablet.code:n =
+ {
+\TgoSmallTabletOutputtrue
+\TgoAfourPaperOutputfalse
+ },
+Output / eReader.code:n =
+ {
+\TgoeReaderOutputtrue
+\TgoAfourPaperOutputfalse
+ },
+Output / Smartphone.code:n =
+ {
+\TgoSmartphoneOutputtrue
+\TgoAfourPaperOutputfalse
+ },
+ Output / unknown.code:n =
+ {
+ \ClassWarning{tango}{\MessageBreak Value #1 is unknown \MessageBreak
+ Possible choices are A4paper, A5paper, Letter, BigTablet,\MessageBreak
+ Tablet, SmallTablet, eReader and Smartphone.
+ \MessageBreak Selecting A4paper.}
+\TgoAfourPaperOutputtrue
+ },
+ %%%%% Stylistic Set %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ StylisticSet.multichoice:,
+ StylisticSet / upint.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss03}}
+ },
+ StylisticSet / leqslant.code:n =
+ {
+\AddToHook{package/fontspec/after}%
+ {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss04}}
+ },
+StylisticSet / smaller.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss05}}
+ },
+StylisticSet / subsetneq.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss06}}
+ },
+StylisticSet / parallelslant.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ {\defaultfontfeatures+[Erewhon Math]{RawFeature=+ss07}}
+ },
+ %%%%%%% Character Variants %%%%%%%%%%%%%%%%%%%%%%%%%%
+ CharacterVariant.multichoice:,
+ CharacterVariant / zero.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=0}}
+ },
+ CharacterVariant / hslash.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ {\defaultfontfeatures+[Erewhon Math]{CharacterVariant=1}}
+ },
+ CharacterVariant / emptyset.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ {\defaultfontfeatures+[Erewhon Math]{CharacterVariant=2}}
+ },
+ CharacterVariant / epsilon.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=3}}
+ },
+ CharacterVariant / kappa.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=4}}
+ },
+ CharacterVariant / pi.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=5}}
+ },
+ CharacterVariant / phi.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=6}}
+ },
+ CharacterVariant / rho.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=7}}
+ },
+ CharacterVariant / sigma.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=8}}
+ },
+ CharacterVariant / theta.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+{ \defaultfontfeatures+[Erewhon Math]{CharacterVariant=9}}
+ },
+CharacterVariant / Theta.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ {\defaultfontfeatures+[Erewhon Math]{CharacterVariant=10}}
+ },
+CharacterVariant / partial.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ {\defaultfontfeatures+[Erewhon Math]{CharacterVariant=11}}
+ },
+CharacterVariant / Ecal.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=20}}
+ },
+CharacterVariant / Qcal.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=21}}
+ },
+CharacterVariant / Tcal.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+ { \defaultfontfeatures+[Erewhon Math]{CharacterVariant=22}}
+ },
+ %%%%%%% Numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ Numbers.choice:,
+ Numbers / MathOldStyle.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+{\defaultfontfeatures+[Erewhon Math]{Numbers=OldStyle}}
+ },
+ Numbers / TextOldStyle.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+{ \defaultfontfeatures+[erewhon]{Numbers=OldStyle}}
+ },
+Numbers / OldStyle.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+{ \defaultfontfeatures+{Numbers=OldStyle}
+ \defaultfontfeatures+[Erewhon Math]{RawFeature=-onum}}
+ },
+ Numbers / FullOldStyle.code:n =
+ {
+ \AddToHook{package/fontspec/after}%
+{ \defaultfontfeatures+{Numbers=OldStyle}}
+ },
+ %%%% usage
+ french.usage=load,
+ no-statement.usage=load,
+ no-hyperref.usage=load,
+ indent.usage=load,
+no-indent.usage=load,
+ThmNamePos.usage=general,
+oneside.usage=load,
+twoside.usage=load,
+PubliClass.usage=load,
+FontSize.usage=general,
+ColorTheme.usage=general,
+ColorOne.usage=general,
+ColorTwo.usage=general,
+Output.usage=load,
+StylisticSet.usage=load,
+CharacterVariant.usage=load,
+Numbers.usage=load
+}
+%%%%%
+\ProcessKeyOptions[tango]
+%%%%%
+\NewDocumentCommand\tgosetup{}{\SetKeys[tango]}
+%%%%%%%%
+%%%%%%% 10pt %%%%%%%%%%%%%
+\NewDocumentCommand\TgoTenPointsFonts{}{%
+\renewcommand\TgoSmallerSize{%
+\TgoSmallerSizeCommandtrue%
+\tgosetup{FontSize=9pt}%
+\TgoSmallerSizeCommandfalse%
+}%
+\renewcommand\normalsize{%
+ \fontsize{10}{12.7}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}%
+ \setlength\abovedisplayshortskip{0pt plus 3pt}%
+ \setlength\belowdisplayshortskip{4.5pt plus 2.5pt minus 1.5pt}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+ \let\@listi\@listI%
+ }%
+\normalsize%
+\ifTgoSmallerSizeCommand%
+\else%
+\setlength\TgoStandardMargin{1.5em}%
+\fi%
+\ifx\MakeRobust\@undefined \else%
+ \MakeRobust\normalsize%
+\fi%
+\DeclareRobustCommand\small{%
+ \fontsize{9}{11.45}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}%
+ \setlength\abovedisplayshortskip {0pt plus 3pt}%
+ \setlength\belowdisplayshortskip {4pt plus 2pt minus 2pt}%
+ \def\@listi{\leftmargin\leftmargini%
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@%
+ \parsep 2\p@ \@plus2\p@ \@minus\p@%
+ \itemsep \parsep}%
+ \setlength \belowdisplayskip {\abovedisplayskip}%
+ \let\@listi\@listI%
+ }%
+\DeclareRobustCommand\footnotesize{%
+ \fontsize{8}{10.2}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 2pt minus 4pt}%
+ \setlength\abovedisplayshortskip{0pt plus 1 pt}%
+ \setlength\belowdisplayshortskip{3pt plus 2pt minus 1 pt}%
+ \def\@listi{\leftmargin\leftmargini%
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@%
+ \parsep 2\p@ \@plus\p@ \@minus\p@%
+ \itemsep \parsep}%
+ \setlength \belowdisplayskip {\abovedisplayskip}%
+ }%
+\DeclareRobustCommand\scriptsize{\fontsize{7}{8.9}\selectfont}%
+\DeclareRobustCommand\tiny{\fontsize{5}{6.4}\selectfont}%
+\DeclareRobustCommand\large{\fontsize{11.5}{14.6}\selectfont}%
+\DeclareRobustCommand\Large{\fontsize{14}{17}\selectfont}%
+\DeclareRobustCommand\LARGE{\fontsize{17}{20}\selectfont}%
+\DeclareRobustCommand\huge{\fontsize{20}{23}\selectfont}%
+\DeclareRobustCommand\Huge{\fontsize{24}{27}\selectfont}%
+\DeclareRobustCommand\HUGE{\fontsize{58}{58}\selectfont}%
+}%
+%%%%%%%%%%%%%% 11pt %%%%%%%%%%%%%%%%%%%%%%
+\NewDocumentCommand\TgoElevenPointsFonts{}{%
+\renewcommand\TgoSmallerSize{%
+\TgoSmallerSizeCommandtrue%
+\tgosetup{FontSize=10pt}%
+\TgoSmallerSizeCommandfalse%
+}%
+\renewcommand\normalsize{%
+ \fontsize{11}{13.9}\selectfont%
+ \setlength\abovedisplayskip {6pt plus 3pt minus 2pt}%
+ \setlength\abovedisplayshortskip{0pt plus 3pt}%
+ \setlength\belowdisplayshortskip {4.5pt plus 2.5pt minus 2 pt}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+ \let\@listi\@listI}%
+\normalsize%
+\ifTgoSmallerSizeCommand%
+\else%
+\setlength\TgoStandardMargin{1.5em}%
+\fi%
+\ifx\MakeRobust\@undefined \else%
+ \MakeRobust\normalsize%
+\fi%
+\DeclareRobustCommand\small{%
+ \fontsize{10}{12.7}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}%
+ \setlength\abovedisplayshortskip{0pt plus 3pt}%
+ \setlength\belowdisplayshortskip {4pt plus 2 pt minus 2pt}%
+ \def\@listi{\leftmargin\leftmargini%
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@%
+ \parsep 2\p@ \@plus2\p@ \@minus\p@%
+ \itemsep \parsep}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+ \let\@listi\@listI%
+ }%
+\DeclareRobustCommand\footnotesize{%
+ \fontsize{9}{11.35}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 2pt minus 4pt}%
+ \setlength\abovedisplayshortskip{0pt plus 1pt}%
+ \setlength\belowdisplayshortskip{3pt plus 2pt minus 1pt}%
+ \def\@listi{\leftmargin\leftmargini%
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@%
+ \parsep 2\p@ \@plus\p@ \@minus\p@%
+ \itemsep \parsep}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+}%
+\DeclareRobustCommand\scriptsize{\fontsize{8}{10.2}\selectfont}%
+\DeclareRobustCommand\tiny{\fontsize{6}{7.6}\selectfont}%
+\DeclareRobustCommand\large{\fontsize{13}{15.85}\selectfont}%
+\DeclareRobustCommand\Large{\fontsize{15}{18}\selectfont}%
+\DeclareRobustCommand\LARGE{\fontsize{18}{21}\selectfont}%
+\DeclareRobustCommand\huge{\fontsize{21}{24}\selectfont}%
+\DeclareRobustCommand\Huge{\fontsize{24}{27}\selectfont}%
+\DeclareRobustCommand\HUGE{\fontsize{60}{60}\selectfont}%
+}%
+%%%%%%% 12pt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NewDocumentCommand\TgoTwelvePointsFonts{}{%
+\renewcommand\TgoSmallerSize{%
+\TgoSmallerSizeCommandtrue%
+\tgosetup{FontSize=11pt}%
+\TgoSmallerSizeCommandfalse%
+}%
+\renewcommand\normalsize{%
+ \fontsize{12}{15.1}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}%
+ \setlength\abovedisplayshortskip{0pt plus 3pt}%
+ \setlength\belowdisplayshortskip {4.5pt plus 2.5pt minus2pt}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+ \let\@listi\@listI}%
+\normalsize%
+\ifTgoSmallerSizeCommand%
+\else%
+\setlength\TgoStandardMargin{1.5em}%
+\fi%
+\ifx\MakeRobust\@undefined \else%
+ \MakeRobust\normalsize%
+\fi%
+\DeclareRobustCommand\small{%
+ \fontsize{11}{13.9}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}%
+ \setlength\abovedisplayshortskip{0pt plus 3pt}%
+ \setlength\belowdisplayshortskip{4pt plus 2pt minus 2pt}%
+ \def\@listi{\leftmargin\leftmargini%
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@%
+ \parsep 2\p@ \@plus2\p@ \@minus\p@%
+ \itemsep \parsep}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+ \let\@listi\@listI%
+ }%
+\DeclareRobustCommand\footnotesize{%
+ \fontsize{10}{12.7}\selectfont%
+ \setlength\abovedisplayskip {6pt plus 2pt minus 4pt}%
+ \setlength\abovedisplayshortskip{0pt plus 1pt}%
+ \setlength\belowdisplayshortskip{3pt plus 2pt minus 1pt}%
+ \def\@listi{\leftmargin\leftmargini%
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@%
+ \parsep 2\p@ \@plus\p@ \@minus\p@%
+ \itemsep \parsep}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+}%
+\DeclareRobustCommand\scriptsize{\fontsize{9}{11.45}\selectfont}%
+\DeclareRobustCommand\tiny{\fontsize{7}{8.9}\selectfont}%
+\DeclareRobustCommand\large{\fontsize{14.2}{16.85}\selectfont}%
+\DeclareRobustCommand\Large{\fontsize{16.5}{19.2}\selectfont}%
+\DeclareRobustCommand\LARGE{\fontsize{19.2}{22}\selectfont}%
+\DeclareRobustCommand\huge{\fontsize{22}{25}\selectfont}%
+\DeclareRobustCommand\Huge{\fontsize{25}{28}\selectfont}%
+\DeclareRobustCommand\HUGE{\fontsize{63}{63}\selectfont}%
+}%
+%%
+%%%%%%% 9pt %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NewDocumentCommand\TgoNinePointsFonts{}{%
+\renewcommand\TgoSmallerSize{}
+\renewcommand\normalsize{%
+ \fontsize{9}{11.45}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}%
+ \setlength\abovedisplayshortskip{0pt plus 3pt}%
+ \setlength\belowdisplayshortskip{4.5pt plus 2.5pt minus 2pt}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+ \let\@listi\@listI}%
+\normalsize%
+\setlength\TgoStandardMargin{1.5em}%
+\ifx\MakeRobust\@undefined\else%
+ \MakeRobust\normalsize%
+\fi%
+\DeclareRobustCommand\small{%
+ \fontsize{8}{10.25}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 3pt minus 2pt}%
+ \setlength\abovedisplayshortskip{0pt plus 3pt}%
+ \setlength\belowdisplayshortskip{4pt plus 2pt minus 2pt}%
+ \def\@listi{\leftmargin\leftmargini%
+ \topsep 6\p@ \@plus2\p@ \@minus2\p@%
+ \parsep 2\p@ \@plus2\p@ \@minus\p@%
+ \itemsep \parsep}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+ \let\@listi\@listI%
+ }%
+\DeclareRobustCommand\footnotesize{%
+ \fontsize{7}{9}\selectfont%
+ \setlength\abovedisplayskip{6pt plus 2pt minus 4pt}%
+ \setlength\abovedisplayshortskip{0pt plus 1pt}%
+ \setlength\belowdisplayshortskip{3pt plus 2pt minus 1pt}%
+ \def\@listi{\leftmargin\leftmargini%
+ \topsep 4\p@ \@plus2\p@ \@minus2\p@%
+ \parsep 2\p@ \@plus\p@ \@minus\p@%
+ \itemsep \parsep}%
+ \setlength\belowdisplayskip{\abovedisplayskip}%
+}%
+\DeclareRobustCommand\scriptsize{\fontsize{6}{7.7}\selectfont}%
+\DeclareRobustCommand\tiny{\fontsize{5}{6.4}\selectfont}%
+\DeclareRobustCommand\large{\fontsize{10.3}{13}\selectfont}%
+\DeclareRobustCommand\Large{\fontsize{12.7}{15.4}\selectfont}%
+\DeclareRobustCommand\LARGE{\fontsize{15.2}{17.3}\selectfont}%
+\DeclareRobustCommand\huge{\fontsize{18}{20}\selectfont}%
+\DeclareRobustCommand\Huge{\fontsize{20}{24}\selectfont}%
+\DeclareRobustCommand\HUGE{\fontsize{52}{52}\selectfont}%
+}%
+%%
+%%
+\ifTgoOneSide%
+ \LoadClass[oneside]{\TgoPublicationClass}%
+ \else%
+ \LoadClass[twoside]{\TgoPublicationClass}%
+\fi%
+%%%%%%%%%%%
+\RequirePackage{xcolor}
+%%%%
+\RequirePackage{mathtools}
+\RequirePackage{amsthm}
+%%%%
+\RequirePackage{graphicx,microtype,geometry,enumitem,float,afterpage}
+%
+\RequirePackage{titletoc}
+%
+\RequirePackage[pagestyles,toctitles,newlinetospace,clearempty,noindentafter]{titlesec}
+%
+%
+\assignpagestyle{\chapter}{empty}
+\assignpagestyle{\part}{empty}
+\RequirePackage{ccaption,caption}
+\DeclareCaptionLabelFormat{tango}{\sffamily\fontseries{sb}\selectfont#1\nobreakspace#2}
+\captionsetup{font={sf,small},labelformat=tango,labelfont={color=ColorOne}}
+\newfixedcaption{\tgofigcaption}{figure}
+\newfixedcaption{\tgotabcaption}{table}
+ %%% Fontes
+ %%
+ \RequirePackage{fontspec}
+\RequirePackage{unicode-math}[2020/01/31]
+ \defaultfontfeatures+{Ligatures=TeX,RawFeature={+pnum}}
+%
+ \SetTgoBaseFonts
+ %%
+ \thinmuskip=2.5mu
+ \medmuskip=3mu plus 1mu minus 3mu
+ \thickmuskip=4mu plus 3mu minus 0.5mu
+ %%
+\setmonofont{Inconsolatazi4}[Scale=MatchLowercase]
+%
+ \setsansfont{NotoSans}[%
+ Scale=0.9,
+ Ligatures=TeX,
+ UprightFeatures={
+Font=NotoSansMedium
+},
+ItalicFeatures={
+Font=NotoSansMediumItalic
+},
+BoldFeatures={
+Font=NotoSansBold
+},
+BoldItalicFeatures={
+Font=NotoSansBoldItalic
+},
+FontFace={ul}{n}{Font=NotoSansThin},
+FontFace={ul}{it}{Font=NotoSansThinItalic},
+FontFace={el}{n}{Font=NotoSansExtraLight},
+FontFace={el}{it}{Font=NotoSansExtraLightItalic},
+FontFace={l}{n}{Font=NotoSansLight},
+FontFace={l}{it}{Font=NotoSansLightItalic},
+FontFace={sl}{n}{Font=NotoSansRegular},
+FontFace={sl}{it}{Font=NotoSansItalic},
+FontFace={sb}{n}{Font=NotoSansSemiBold},
+FontFace={sb}{it}{Font=NotoSansSemiBoldItalic},
+FontFace={eb}{n}{Font=NotoSansExtraBold},
+FontFace={eb}{it}{Font=NotoSansExtraBoldItalic},
+FontFace={ub}{n}{Font=NotoSansBlack},
+FontFace={ub}{it}{Font=NotoSansBlackItalic},
+]
+%%
+\DeclareFontSeriesDefault[sf]{md}{sl}
+%
+%
+\RequirePackage{fourier-orns}%
+%
+%% OTF Fonts Commands
+%%
+\NewDocumentCommand{\superiors}{}{\addfontfeature{RawFeature=+sups}}
+\NewDocumentCommand{\scinferiors}{}{\addfontfeature{RawFeature=+sinf}}
+\NewDocumentCommand{\smartfracs}{}{\addfontfeature{RawFeature=+frac}}
+\NewDocumentCommand{\fullsc}{m}{{\addfontfeature{RawFeature=+c2sc}\MakeUppercase{#1}}}
+\DeclareTextFontCommand{\textsup}{\superiors}
+\DeclareTextFontCommand{\textscinf}{\scinferiors}
+\DeclareTextFontCommand{\smartfrac}{\smartfracs}
+\NewDocumentCommand{\olddigits}{}{\addfontfeature{RawFeature={-lnum,+onum}}}
+\NewDocumentCommand{\propdigits}{}{\addfontfeature{RawFeature={-tnum,+pnum}}}
+\NewDocumentCommand{\liningdigits}{}{\addfontfeature{RawFeature={-onum,+lnum}}}
+\NewDocumentCommand{\tabulardigits}{}{\addfontfeature{RawFeature={-pnum,+tnum}}}
+%
+ %
+ %%%%%%%% My taylor is rich %%%%%%%%%%%
+%
+\RequirePackage{iflang}
+\RequirePackage{babel}
+\IfLanguageName{nil}{%
+\ClassError{tango}{No language option is given}
+{%
+You *must* pass at least one language\MessageBreak
+option for babel to the tango class.}
+}{}
+%
+%
+\ifTgoFrenchLanguage
+\frenchsetup{StandardLists,og=«, fg=»,PartNameFull=false,
+SmallCapsFigTabCaptions=false,
+CustomiseFigTabCaptions=false}
+\addto\captionsfrench{% DF
+\renewcommand\TgoTheoremName{Théorème}
+\renewcommand\TgoDefinitionName{Définition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemme}
+\renewcommand\TgoCorollaryName{Corollaire}
+\renewcommand\TgoRemarkName{Remarque}
+\renewcommand\TgoExampleName{Exemple}
+\renewcommand\TgoContentsName{Sommaire}
+\renewcommand\TgoExerciseName{Exercice}
+\renewcommand\TgoExercisesSubsectionName{Exercices}
+\renewcommand\TgoExercisesSectionName{Exercices}
+}
+\fi
+%%%
+\ifTgoNGermanLanguage
+\addto\captionsngerman{%
+\renewcommand\TgoTheoremName{Satz}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Korollar}%% ????
+\renewcommand\TgoRemarkName{Bemerkung}
+\renewcommand\TgoExampleName{Beispiel}
+\renewcommand\TgoContentsName{Inhaltsverzeichnis}
+\renewcommand\TgoExerciseName{Übung}
+\renewcommand\TgoExercisesSubsectionName{Übungen}
+\renewcommand\TgoExercisesSectionName{Übungen}
+}
+\fi
+%
+%%%
+\ifTgoGermanLanguage
+\addto\captionsgerman{%
+\renewcommand\TgoTheoremName{Satz}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Korollar}%% ????
+\renewcommand\TgoRemarkName{Bemerkung}
+\renewcommand\TgoExampleName{Beispiel}
+\renewcommand\TgoContentsName{Inhaltsverzeichnis}
+\renewcommand\TgoExerciseName{Übung}
+\renewcommand\TgoExercisesSubsectionName{Übungen}
+\renewcommand\TgoExercisesSectionName{Übungen}
+}
+\fi
+%
+%%%
+\ifTgoNAustrianLanguage
+\addto\captionsnaustrian{%
+\renewcommand\TgoTheoremName{Satz}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Korollar}%% ????
+\renewcommand\TgoRemarkName{Bemerkung}
+\renewcommand\TgoExampleName{Beispiel}
+\renewcommand\TgoContentsName{Inhaltsverzeichnis}
+\renewcommand\TgoExerciseName{Übung}
+\renewcommand\TgoExercisesSubsectionName{Übungen}
+\renewcommand\TgoExercisesSectionName{Übungen}
+}
+\fi
+%
+%%%
+\ifTgoNSwissGermanLanguage
+\addto\captionsnswissgerman{%
+\renewcommand\TgoTheoremName{Satz}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Korollar}%% ????
+\renewcommand\TgoRemarkName{Bemerkung}
+\renewcommand\TgoExampleName{Beispiel}
+\renewcommand\TgoContentsName{Inhaltsverzeichnis}
+\renewcommand\TgoExerciseName{Übung}
+\renewcommand\TgoExercisesSubsectionName{Übungen}
+\renewcommand\TgoExercisesSectionName{Übungen}
+}
+\fi
+%
+%%%
+\ifTgoItalianLanguage
+\addto\captionsitalian{%
+\renewcommand\TgoTheoremName{Teorema}
+\renewcommand\TgoDefinitionName{Definizione}
+\renewcommand\TgoPropositionName{Proposizione}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Corollario}
+\renewcommand\TgoRemarkName{Nota}%%????
+\renewcommand\TgoExampleName{Esempio}
+\renewcommand\TgoContentsName{Sommario}%%Contenuti????
+\renewcommand\TgoExerciseName{Esercizio}
+\renewcommand\TgoExercisesSubsectionName{Esercizi}
+\renewcommand\TgoExercisesSectionName{Esercizi}
+}
+\fi
+%
+%%%
+\ifTgoSpanishLanguage
+\addto\captionsspanish{%
+\renewcommand\TgoTheoremName{Teorema}
+\renewcommand\TgoDefinitionName{Definición}
+\renewcommand\TgoPropositionName{Proposición}
+\renewcommand\TgoLemmaName{Lema}
+\renewcommand\TgoCorollaryName{Corolario}
+\renewcommand\TgoRemarkName{Osservación}%%????
+\renewcommand\TgoExampleName{Ejemplo}
+\renewcommand\TgoContentsName{Sumario}%%????
+\renewcommand\TgoExerciseName{Ejercicio}
+\renewcommand\TgoExercisesSubsectionName{Ejercicios}
+\renewcommand\TgoExercisesSectionName{Ejercicios}
+}
+\fi
+%
+%%%
+\ifTgoEnglishLanguage
+\addto\captionsenglish{%
+\renewcommand\TgoTheoremName{Theorem}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Corollary}
+\renewcommand\TgoRemarkName{Remark}
+\renewcommand\TgoExampleName{Example}
+\renewcommand\TgoContentsName{Contents}
+\renewcommand\TgoExerciseName{Exercise}
+\renewcommand\TgoExercisesSubsectionName{Exercises}
+\renewcommand\TgoExercisesSectionName{Exercises}
+}
+\fi
+%
+%%%
+\ifTgoBritishLanguage
+\addto\captionsbritish{%
+\renewcommand\TgoTheoremName{Theorem}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Corollary}
+\renewcommand\TgoRemarkName{Remark}
+\renewcommand\TgoExampleName{Example}
+\renewcommand\TgoContentsName{Contents}
+\renewcommand\TgoExerciseName{Exercise}
+\renewcommand\TgoExercisesSubsectionName{Exercises}
+\renewcommand\TgoExercisesSectionName{Exercises}
+}
+\fi
+%
+%%%
+\ifTgoAmericanLanguage
+\addto\captionsamerican{%
+\renewcommand\TgoTheoremName{Theorem}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Corollary}
+\renewcommand\TgoRemarkName{Remark}
+\renewcommand\TgoExampleName{Example}
+\renewcommand\TgoContentsName{Contents}
+\renewcommand\TgoExerciseName{Exercise}
+\renewcommand\TgoExercisesSubsectionName{Exercises}
+\renewcommand\TgoExercisesSectionName{Exercises}
+}
+\fi
+%
+%%%
+\ifTgoCanadianLanguage
+\addto\captionscanadian{%
+\renewcommand\TgoTheoremName{Theorem}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Corollary}
+\renewcommand\TgoRemarkName{Remark}
+\renewcommand\TgoExampleName{Example}
+\renewcommand\TgoContentsName{Contents}
+\renewcommand\TgoExerciseName{Exercise}
+\renewcommand\TgoExercisesSubsectionName{Exercises}
+\renewcommand\TgoExercisesSectionName{Exercises}
+}
+\fi
+%
+%%%
+\ifTgoAustralianLanguage
+\addto\captionsaustralian{%
+\renewcommand\TgoTheoremName{Theorem}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Corollary}
+\renewcommand\TgoRemarkName{Remark}
+\renewcommand\TgoExampleName{Example}
+\renewcommand\TgoContentsName{Contents}
+\renewcommand\TgoExerciseName{Exercise}
+\renewcommand\TgoExercisesSubsectionName{Exercises}
+\renewcommand\TgoExercisesSectionName{Exercises}
+}
+\fi
+%
+%%%
+\ifTgoNewZealandLanguage
+\addto\captionsnewzealand{%
+\renewcommand\TgoTheoremName{Theorem}
+\renewcommand\TgoDefinitionName{Definition}
+\renewcommand\TgoPropositionName{Proposition}
+\renewcommand\TgoLemmaName{Lemma}
+\renewcommand\TgoCorollaryName{Corollary}
+\renewcommand\TgoRemarkName{Remark}
+\renewcommand\TgoExampleName{Example}
+\renewcommand\TgoContentsName{Contents}
+\renewcommand\TgoExerciseName{Exercise}
+\renewcommand\TgoExercisesSubsectionName{Exercises}
+\renewcommand\TgoExercisesSectionName{Exercises}
+}
+\fi
+%
+%%% Last package
+\ifTgoNoHyperref
+\else
+\RequirePackage[colorlinks,linkcolor=ColorOne,urlcolor=ColorOne]{hyperref}
+\fi
+%%
+ %%%
+%%%%%%% parindent %%%%%%%%%%%%%%%%%%%%%%%%
+\setlength\parindent{\TgoStandardMargin}
+\setlength{\parskip}{0pt plus 1pt}
+\ifTgoSmartphoneOutput
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{3pt plus 2pt minus1pt}
+\else
+\ifTgoParindentZero
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{3pt plus 1pt}
+\fi\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand\TgoCurrentLists{}
+%\ifTgoFrenchLanguage
+%\setlength{\TgoTitleIndent}{\parindent}
+%\else
+%\setlength{\TgoTitleIndent}{0em}
+%\fi
+\ifTgoTitleIndentZero
+\setlength{\TgoTitleIndent}{0em}
+\else
+\setlength{\TgoTitleIndent}{\parindent}
+\fi
+%
+%
+\renewcommand\labelitemi{\textbullet}
+\renewcommand\labelitemii{\textopenbullet}
+\renewcommand\labelitemiii{\starredbullet}
+\renewcommand\labelitemiv{\textperiodcentered}
+%%%%%
+\NewDocumentCommand\renewtgolabels{%
+s E{1234}{ {} {} {} {} }%
+}
+{%
+\IfBooleanTF{#1}%
+{%
+\IfBlankTF{#2}%
+{\renewcommand\labelitemi{\textbullet}}%
+{\renewcommand\labelitemi{#2}}%
+\IfBlankTF{#3}%
+{\renewcommand\labelitemii{\textopenbullet}}%
+{\renewcommand\labelitemii{#3}}%
+\IfBlankTF{#4}%
+{\renewcommand\labelitemiii{\starredbullet}}%
+{\renewcommand\labelitemiii{#4}}%
+\IfBlankTF{#5}%
+{\renewcommand\labelitemiv{\textperiodcentered}}%
+{\renewcommand\labelitemiv{#5}}%
+}%
+{%
+\IfBlankF{#2}{\renewcommand\labelitemi{#2}}%
+\IfBlankF{#3}{\renewcommand\labelitemii{#3}}%
+\IfBlankF{#4}{\renewcommand\labelitemiii{#4}}%
+\IfBlankF{#5}{\renewcommand\labelitemiv{#5}}%
+}%
+\TgoCurrentLists%
+}%
+\NewDocumentCommand\tgosmartlists{}
+{%
+\RenewDocumentCommand\TgoCurrentLists{}{\tgosmartlists}
+\setlength{\leftmargini}{\TgoStandardMargin}
+\setlength{\leftmarginii}{\TgoStandardMargin}
+\setlength{\leftmarginiii}{\TgoStandardMargin}
+\setlength{\leftmarginiv}{\TgoStandardMargin}
+\setlist{
+ itemsep=0.3ex plus 0.1ex minus 0.1ex,
+ parsep=0.3ex plus 0.1ex minus 0.1ex,
+ topsep=0.3ex plus 0.2ex minus 0.1ex,
+ partopsep=0.3ex plus 0.1ex minus 0.1ex
+}
+\setlist[itemize]{nosep, leftmargin=\TgoStandardMargin, align=left, labelsep=0.5em, labelindent=\TgoStandardMargin+\parindent,
+itemindent=*}
+%
+\setlist[itemize,1]{leftmargin=0em, align=left, labelsep=0.5em, labelindent=\parindent, itemindent=* }
+%
+\setlist[enumerate]{nosep, leftmargin=\TgoStandardMargin, align=left, labelsep=0.5em,
+labelindent=\TgoStandardMargin+\parindent,widest=0, itemindent=*}
+%
+\setlist[enumerate,1]{leftmargin=0em, align=left, labelsep=0.5em, labelindent=\parindent, itemindent=* }
+%
+}
+%%%
+\NewDocumentCommand\tgostandardlists{}
+{%
+\RenewDocumentCommand\TgoCurrentLists{}{\tgostandardlists}
+\setlength{\leftmargini}{\TgoStandardMargin}
+\setlength{\leftmarginii}{\TgoStandardMargin}
+\setlength{\leftmarginiii}{\TgoStandardMargin}
+\setlength{\leftmarginiv}{\TgoStandardMargin}
+\setlist{
+ itemsep=0.4ex plus 0.2ex minus 0.2ex,
+ parsep=0.4ex plus 0.2ex minus 0.2ex,
+ topsep=0.8ex plus 0.4ex minus 0.4ex,
+ partopsep=0.4ex plus 0.2ex minus 0.2ex
+}
+\setlist[itemize]{leftmargin=\TgoStandardMargin, align=left, labelindent=0em,
+labelwidth=0.75\TgoStandardMargin, labelsep=0.25\TgoStandardMargin, itemindent=!}
+%%
+\setlist[itemize,1]{leftmargin=2\TgoStandardMargin, align=left, labelindent=\TgoStandardMargin, labelwidth=0.75\TgoStandardMargin, labelsep=0.25\TgoStandardMargin, itemindent=!}
+%
+\setlist[enumerate]{leftmargin=\TgoStandardMargin, align=left, labelindent=0em,
+labelwidth=0.75\TgoStandardMargin, labelsep=0.25\TgoStandardMargin, itemindent=!}
+%
+\setlist[enumerate,1]{leftmargin=2\TgoStandardMargin, align=left, labelindent=\TgoStandardMargin, labelwidth=0.75\TgoStandardMargin, labelsep=0.25\TgoStandardMargin, itemindent=!}
+}
+\renewcommand{\labelenumii}{\alph{enumii}.}
+
+\tgostandardlists
+%
+%
+%\NewDocumentCommand\testlists{}{
+%\setlength{\leftmargini}{\TgoStandardMargin}
+%\setlength{\leftmarginii}{\TgoStandardMargin}
+%\setlength{\leftmarginiii}{\TgoStandardMargin}
+%\setlength{\leftmarginiv}{\TgoStandardMargin}
+%\setlist{
+% itemsep=0.4ex plus 0.2ex minus 0.2ex,
+% parsep=0.4ex plus 0.2ex minus 0.2ex,
+% topsep=0.8ex plus 0.4ex minus 0.4ex,
+% partopsep=0.4ex plus 0.2ex minus 0.2ex
+%}
+%\setlist[itemize]{nosep, leftmargin=\TgoStandardMargin, align=left, labelsep=0.5em, labelindent=\TgoStandardMargin+\parindent,
+%itemindent=*}
+%%
+%\setlist[itemize,1]{leftmargin=0em, align=left, labelsep=0.5em, labelindent=\parindent, itemindent=* }
+%%
+%\setlist[enumerate]{nosep, leftmargin=\TgoStandardMargin, align=left, labelsep=0.5em,
+%labelindent=\TgoStandardMargin+\parindent,widest=0, itemindent=*}
+%%
+%\setlist[enumerate,1]{leftmargin=0em, align=left, labelsep=0.5em, labelindent=\parindent, itemindent=* }
+%%
+%}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpagestyle{tango}{
+ \ifTgoOneSide
+\ifTgoBook
+ \sethead {\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\chaptertitle}{}
+ {\sffamily\thepage} % all
+ \else
+ \sethead{\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\sectiontitle}{}
+ {\sffamily\thepage}% all
+ \fi
+\else
+\ifTgoBook
+\sethead[\sffamily\thepage]
+[\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\chaptertitle][] % even
+ {}{\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\sectiontitle}
+ {\sffamily\thepage} % odd
+\else
+ \sethead[\sffamily\thepage][\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\sectiontitle][] % even
+ {}{\sffamily\addfontfeature{RawFeature=+c2sc}\MakeUppercase\sectiontitle}
+ {\sffamily\thepage}% odd
+\fi
+\fi}
+ %%%%%%%%%%%%
+\pagestyle{tango}
+%%%%%%%%%%%%%%
+%%% Mise en forme des titres %%%%%%%%%%%%%%%
+\setcounter{secnumdepth}{2}
+%%%
+\ifTgoBook
+\newcommand\TgoChapterBox[1]{%
+{\filright\sffamily\addfontfeature{RawFeature=-onum}\fontseries{eb}\selectfont\HUGE\hspace*{-0.06em}\thechapter}%
+\quad\parbox{0.75\textwidth}{\filright#1}
+}
+\titleformat{\part}[display]{\centering\color{ColorOne}\sffamily
+\addfontfeature{RawFeature=-onum}\fontseries{eb}\selectfont\Huge}
+{\LARGE\partname~\thepart}{\baselineskip}{}
+%%
+\titleformat{name=\chapter}[block]{\filright\color{ColorOne}\fontspec{\TgoChapterTitleFont}\addfontfeature{RawFeature=-onum}\huge}
+{}{0em}{\TgoChapterBox}
+%%%
+\titleformat{name=\chapter,numberless}[block]{\filright\color{ColorOne}\fontspec{\TgoChapterTitleFont}\addfontfeature{RawFeature=-onum}\huge}
+{}{0em}{}
+\fi%
+\titleformat{\section}{\color{ColorOne}\sffamily\addfontfeature{RawFeature=-onum}%
+\fontseries{b}\selectfont\large}{\thesection}{1em}{\uppercase}%
+\titleformat{\subsection}{\color{ColorOne}\sffamily\fontseries{sb}\selectfont\large}{\thesubsection}{1em}{}%
+\titleformat{\subsubsection}{\color{ColorOne}\sffamily\fontseries{sb}\selectfont}{\thesubsubsection}{0.7em}{}%
+\titleformat{\paragraph}[runin]{\itshape}{\theparagraph.}{0.5em}{}[. — ]%
+\titleformat{\subparagraph}[runin]{}{\thesubparagraph.}{0.5em}{}[. — ]%
+\titlespacing{\chapter}{\TgoTitleIndent}{0pt}{6ex}%
+\titlespacing{\section}{\TgoTitleIndent}{12pt plus 5pt minus 4pt}{6pt plus 3pt minus 2pt}%
+\titlespacing{\subsection}{\TgoTitleIndent}{12pt plus 5pt minus 4pt}{6pt plus 3pt minus 2pt}%
+\titlespacing{\subsubsection}{\TgoTitleIndent}{7pt plus 3pt minus 2pt}{3pt plus 2pt minus 1pt}%
+\titlespacing{\paragraph}{\TgoTitleIndent}{7pt plus 3pt minus 2pt}{3pt plus 1pt minus 1pt}%
+\titlespacing{\subparagraph}{\TgoTitleIndent}{4pt plus 2pt minus 2pt}{3pt plus 1pt minus 1pt}%
+%
+\ifTgoBook
+\NewCommandCopy{\tgotitle}{\chapter}
+\else%%article
+\NewDocumentCommand\tgotitle{s m}{%
+\IfBooleanTF{#1}{%
+\clearpage\thispagestyle{empty}
+% \vspace*{5\p@}%
+ {\parindent=0pt \raggedright
+ \normalfont
+ \interlinepenalty\@M
+\advance\leftskip by \TgoTitleIndent
+\fontspec{\TgoChapterTitleFont}\huge\color{ColorOne}#2
+\par} \vspace {\TgoAfterChapterSkip}\par}
+ {%
+\clearpage\thispagestyle{empty}
+% \vspace*{5\p@}%
+ {\parindent=0pt \raggedright
+ \normalfont
+ \interlinepenalty\@M
+\advance\leftskip by \TgoTitleIndent
+\fontspec{\TgoChapterTitleFont}\huge\color{ColorOne}#2
+\par} \vspace {\TgoAfterChapterSkip}\par}
+ }
+ \fi
+%%%%%%%
+%%%%%%%Table des matières
+%%%%%%%
+\ifTgoBook\else
+\RenewDocumentCommand\tableofcontents{}{%
+{\color{ColorOne}\parskip=0pt%
+\noindent\titlerule[1.3pt]%
+\vspace{-1\baselineskip}\vspace{1.6pt} \par %
+\noindent\titlerule[.5pt]%
+}%
+ \vspace{-10pt}\par%
+ \section*{\contentsname}
+ \@starttoc{toc}%
+{\color{ColorOne}\parskip=0pt%
+\noindent\titlerule[0.5pt]%
+\vspace{-1\baselineskip}\vspace{2.4pt} \par %
+\noindent\titlerule[1.3pt]%
+}%
+\par %
+\vspace{2\baselineskip}%
+\par %
+ }%
+ \fi
+ \IfPackageLoadedTF{hyperref}%
+{%
+\NewCommandCopy{\TgoOriginalToc}{\tableofcontents}%
+\RenewDocumentCommand\tableofcontents{}{{\hypersetup{hidelinks}\TgoOriginalToc}}%
+}%
+{}
+%%
+%%
+\ifTgoBook
+\NewDocumentCommand\tgoshorttoc{}{}
+\titlecontents{part}
+ [50pt] % ie, 1.5em (chapter) + 2.3em
+ {\large\sffamily\fontseries{sb}\selectfont\color{ColorOne}}
+ {\contentslabel{50pt}}
+ {\hspace*{-50pt}}
+ {\titlerule*[1pc]{}\contentspage}
+\titlecontents{chapter}
+ [16pt] % ie, 1.5em (chapter) + 2.3em
+ {\sffamily\fontseries{b}\selectfont\color{ColorOne}}
+ {\contentslabel{16pt}}
+ {\hspace*{-6pt}}
+ {\titlerule*[1pc]{}\contentspage}
+\titlecontents{section}
+ [3.6em] % ie, 1.5em (chapter) + 2.3em
+ {\sffamily\fontseries{m}\selectfont}
+ {\contentslabel{2.5em}}
+ {\hspace*{-2.5em}}
+ {\titlerule*[1pc]{.}\contentspage}
+\titlecontents{subsection}
+ [6.4em] % ie, 1.5em (chapter) + 2.3em
+ {\sffamily\fontseries{l}\selectfont}
+ {\contentslabel{3.2em}}
+ {\hspace*{-3.2em}}
+ {\titlerule*[1pc]{.}\contentspage}
+ \else
+ \NewCommandCopy{\tgoshorttoc}{\tableofcontents}
+ \RenewDocumentCommand\tableofcontents{}{}
+ \ifTgoFrenchLanguage
+ \renewcommand{\frenchcontentsname}{\TgoContentsName}
+\fi
+ \setcounter{tocdepth}{2}
+ \titlecontents{section}
+ [1.7em] % ie, 1.5em (chapter) + 2.3em
+ {\sffamily\fontseries{sb}\selectfont}
+ {\contentslabel{2.em}}
+ {\hspace*{-2.em}}
+ {\titlerule*[1pc]{}\contentspage}
+\titlecontents{subsection}
+ [4em] % ie, 1.5em (chapter) + 2.3em
+ {\sffamily}
+ {\contentslabel{2.7em}}
+ {\hspace*{-2.7em}}
+ {\titlerule*[1pc]{.}\contentspage}
+\titlecontents{subsubsection}
+ [6em] % ie, 1.5em (chapter) + 2.3em
+ {\sffamily\fontseries{l}\selectfont}
+ {\contentslabel{3.5em}}
+ {\hspace*{-3.5em}}
+ {\titlerule*[1pc]{.}\contentspage}
+ \fi
+%
+%%Init
+\NewDocumentCommand\AfourCommand{+m}{}
+%
+\NewDocumentCommand\LetterCommand{+m}{}
+%
+\NewDocumentCommand\BigTabletCommand{+m}{}
+%
+\NewDocumentCommand\TabletCommand{+m}{}
+%
+\NewDocumentCommand\AfiveCommand{+m}{}
+%
+\NewDocumentCommand\SmallTabletCommand{+m}{}
+%
+\NewDocumentCommand\eReaderCommand{+m}{}
+%
+\NewDocumentCommand\SmartphoneCommand{+m}{}
+%
+\NewDocumentCommand\XAfourCommand{+m}{}
+%
+\NewDocumentCommand\XLetterCommand{+m}{}
+%
+\NewDocumentCommand\XBigTabletCommand{+m}{}
+%
+\NewDocumentCommand\XTabletCommand{+m}{}
+%
+\NewDocumentCommand\XAfiveCommand{+m}{}
+%
+\NewDocumentCommand\XSmallTabletCommand{+m}{}
+%
+\NewDocumentCommand\XeReaderCommand{+m}{}
+%
+\NewDocumentCommand\XSmartphoneCommand{+m}{}
+ %
+%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%Output Format %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%%%%% Afour %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+\ifTgoAfourPaperOutput
+%
+\RenewDocumentCommand\AfourCommand{+m}{#1}
+%
+\RenewDocumentCommand\XLetterCommand{+m}{#1}
+%
+\RenewDocumentCommand\XBigTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfiveCommand{+m}{#1}
+%
+\RenewDocumentCommand\XTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmallTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XeReaderCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmartphoneCommand{+m}{#1}
+ %
+ %%
+%\ifTgoOneSide
+\geometry{paperwidth=21cm,paperheight=29.7cm,
+heightrounded,top=2cm,inner=2.75cm,outer=2.75cm,bottom=3.6cm,
+headheight=16pt,headsep=21pt,footskip=50pt}
+%\else
+%\geometry{paperwidth=21cm,paperheight=29.7cm,
+%heightrounded,top=2cm,inner=2.3cm,outer=3.2cm,bottom=3.6cm,
+%headheight=16pt,headsep=21pt,footskip=50pt}
+%\fi
+%
+\setlength{\TgoAfterChapterSkip}{21pt}
+%
+\NewDocumentCommand\tgocover{O{A4Cover}}{\InputIfFileExists{#1}{}{%
+\ClassWarning{tango}{Fichier #1.tex absent}}}
+\flushbottom\emergencystretch=2.5em
+\tolerance800
+\clubpenalty1000
+\widowpenalty1000%
+%
+\fi
+%%%%%%%
+%%%%%% Big Tablet or Letter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifTgoBigTabletOutput
+%
+\ifTgoLetterOutput
+%
+\RenewDocumentCommand\LetterCommand{+m}{#1}
+%
+\RenewDocumentCommand\XBigTabletCommand{+m}{#1}
+%
+\else
+%
+\RenewDocumentCommand\BigTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XLetterCommand{+m}{#1}
+%
+\fi
+%
+\RenewDocumentCommand\XAfourCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfiveCommand{+m}{#1}
+%
+\RenewDocumentCommand\XTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmallTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XeReaderCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmartphoneCommand{+m}{#1}
+ %
+%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%
+%
+%%
+\ifTgoLetterOutput
+%\ifTgoOneSide
+\geometry{paperwidth=8.5in,paperheight=11in,
+heightrounded,top=1.9cm,inner=2.8cm,outer=2.8cm,bottom=3cm,
+headheight=16pt,headsep=20pt,footskip=14pt}
+%\else
+%\geometry{paperwidth=8.5in,paperheight=11in,
+%heightrounded,top=1.9cm,inner=2.4cm,outer=3.2cm,bottom=3.6cm,
+%headheight=16pt,headsep=20pt,footskip=14pt}
+%\fi
+%
+\setlength{\TgoAfterChapterSkip}{22pt}
+%
+\NewDocumentCommand\tgocover{O{LetterCover}}{\InputIfFileExists{#1}{}{%
+\ClassWarning{tango}{Fichier #1.tex absent}}}
+\flushbottom\emergencystretch=2.5em
+\tolerance800
+\clubpenalty1000
+\widowpenalty1000%
+%
+\else
+%
+\setlength{\TgoAfterChapterSkip}{21pt}
+%
+\geometry{paperwidth=19.8cm,paperheight=26.4cm,
+heightrounded,top=1.8cm,inner=2.4cm,outer=2.4cm,bottom=2.7cm,
+headheight=16pt,headsep=14pt,footskip=14pt}
+%
+\NewDocumentCommand\tgocover{O{BigTabletCover}}{\InputIfFileExists{#1}{}{%
+\ClassWarning{tango}{Fichier #1.tex absent}}}
+\flushbottom\emergencystretch=2.5em
+\tolerance800
+\clubpenalty1000
+\widowpenalty1000%
+\fi
+\fi
+%%%%%%%
+%%%%%% Tablet or A5%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifTgoTabletOutput
+%
+\ifTgoAfivePaperOutput
+\RenewDocumentCommand\AfiveCommand{+m}{#1}
+%
+\RenewDocumentCommand\XTabletCommand{+m}{#1}
+%
+\else
+%
+\RenewDocumentCommand\TabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfiveCommand{+m}{#1}
+%
+\fi
+%
+\RenewDocumentCommand\XLetterCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfourCommand{+m}{#1}
+%
+\RenewDocumentCommand\XBigTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmallTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XeReaderCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmartphoneCommand{+m}{#1}
+ %
+%
+%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%
+%
+%%
+\ifTgoAfivePaperOutput
+%\ifTgoOneSide
+\geometry{paperwidth=14.85cm,paperheight=21cm,
+heightrounded,top=1.2cm,inner=1.8cm,outer=1.8cm,bottom=2.4cm,
+headheight=16pt,headsep=11pt,footskip=14pt}
+%\else
+%\geometry{paperwidth=14.85cm,paperheight=21cm,
+%heightrounded,top=1.3cm,inner=1.5cm,outer=2.1cm,bottom=2.4cm,
+%headheight=16pt,headsep=11pt,footskip=14pt}
+%\fi
+%
+\setlength{\TgoAfterChapterSkip}{15pt}
+%
+\NewDocumentCommand\tgocover{O{A5Cover}}{\InputIfFileExists{#1}{}{%
+\ClassWarning{tango}{Fichier #1.tex absent}}}
+\flushbottom\emergencystretch=2.5em
+\tolerance800
+\clubpenalty1000
+\widowpenalty1000%
+%%
+\else
+%%%
+\geometry{paperwidth=16cm,paperheight=22.88cm,
+heightrounded,top=1.2cm,inner=1.4cm,outer=1.4cm,bottom=1.8cm,
+headheight=16pt,headsep=11pt,footskip=14pt}
+%
+\setlength{\TgoAfterChapterSkip}{18pt}
+%
+\NewDocumentCommand\tgocover{O{TabletCover}}{\InputIfFileExists{#1}{}{%
+\ClassWarning{tango}{Fichier #1.tex absent}}}
+\flushbottom\emergencystretch=2.5em
+\tolerance800
+\clubpenalty1000
+\widowpenalty1000%
+\fi
+\fi
+%%%%%% Small Tablet%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifTgoSmallTabletOutput
+%
+\RenewDocumentCommand\SmallTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfourCommand{+m}{#1}
+%
+\RenewDocumentCommand\XLetterCommand{+m}{#1}
+%
+\RenewDocumentCommand\XBigTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfiveCommand{+m}{#1}
+%
+\RenewDocumentCommand\XTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XeReaderCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmartphoneCommand{+m}{#1}
+ %
+%%%%%%%%%%%%%%%%%%%%%
+\setlength{\TgoAfterChapterSkip}{11pt}
+%%
+ \geometry{paperwidth=12cm,paperheight=18.24cm,
+heightrounded,top=1.1cm,inner=0.75cm,outer=0.75cm,bottom=1.3cm,
+headheight=14pt,headsep=6pt,footskip=13pt}
+%
+\NewDocumentCommand\tgocover{O{SmallTabletCover}}{\InputIfFileExists{#1}{}{%
+\ClassWarning{tango}{Fichier #1.tex absent}}}
+\flushbottom\emergencystretch=2.5em
+\tolerance800
+\clubpenalty1000
+\widowpenalty1000%
+\fi
+%%%%%% eReader %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifTgoeReaderOutput
+%
+\RenewDocumentCommand\eReaderCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfourCommand{+m}{#1}
+%
+\RenewDocumentCommand\XLetterCommand{+m}{#1}
+%
+\RenewDocumentCommand\XBigTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfiveCommand{+m}{#1}
+%
+\RenewDocumentCommand\XTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmallTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmartphoneCommand{+m}{#1}
+ %
+%%%%%%%%%%%%%%%%%%%%%
+\setlength{\TgoAfterChapterSkip}{3pt}
+%%%%%%%%%%%
+%
+%
+\geometry{paperwidth=10.7cm,paperheight=14.4cm,
+heightrounded,top=0.82cm,left=0.5cm,right=0.5cm,bottom=0.8cm,
+headheight=18pt,headsep=5pt,footskip=10pt}
+%%
+%
+\NewDocumentCommand\tgocover{O{eReaderCover}}{\InputIfFileExists{#1}{}{%
+\ClassWarning{tango}{Fichier #1.tex absent}}}
+\flushbottom\sloppy
+\fi
+%%%%%%%% Smartphone %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifTgoSmartphoneOutput
+%
+\RenewDocumentCommand\SmartphoneCommand{+m}{#1}
+%
+\RenewDocumentCommand\XLetterCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfourCommand{+m}{#1}
+%
+\RenewDocumentCommand\XBigTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XAfiveCommand{+m}{#1}
+%
+\RenewDocumentCommand\XTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XSmallTabletCommand{+m}{#1}
+%
+\RenewDocumentCommand\XeReaderCommand{+m}{#1}
+ %
+%%%%%%%%%%%%%%%%%%%%%
+\setlength{\TgoAfterChapterSkip}{7pt}%
+%%%%%%%%%%%
+%
+%%
+\geometry{paperwidth=10cm,paperheight=18cm,
+heightrounded,top=1.1cm,inner=0.32cm,outer=0.32cm,bottom=1cm,
+headheight=14pt,headsep=10pt,footskip=17pt}
+%
+\NewDocumentCommand\tgocover{O{SmartphoneCover}}{\InputIfFileExists{#1}{}{%
+\ClassWarning{tango}{Fichier #1.tex absent}}}
+\flushbottom\sloppy
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setlength{\abovecaptionskip}{4pt plus 1pt minus 1pt}
+\setlength{\belowcaptionskip}{4pt plus 1 pt minus 1pt}
+%
+%
+\setlength{\textfloatsep}{10pt plus 4 pt minus 3pt}
+\setlength{\intextsep}{4pt plus 2pt minus 1 pt}
+%
+%%%Environnements %%%%%%%%%%%%%%%%%%%
+%
+%%%%%% Stolen to amsthm %%%%%%%%%%%%%%%
+%
+\RenewDocumentCommand\qedsymbol{}{{\ensuremath{\color{ColorOne}\rule{7pt}{7pt}}}}%
+\RenewDocumentEnvironment{proof}{o}{%
+\IfValueTF{#1}%
+{\renewcommand\TgoTempa{#1}}
+{\renewcommand\TgoTempa{\proofname}}
+\pushQED{\qed}%
+\par\nobreak\addvspace{6pt plus 3pt minus 2pt}%
+{\color{ColorOne}\sffamily\fontseries{m}\selectfont\itshape%
+ \TgoTempa}\par\nobreak
+ }%
+{\popQED\par\addvspace{6pt plus 3pt minus 2pt}}
+%%%%
+%%%%
+\newcounter{tgoexo}%
+%%
+\NewDocumentCommand\exo{s d<> o}{%
+\IfValueTF{#2}%
+{%
+\renewcommand\TgoTempa{#2}%
+}%
+{%
+\renewcommand\TgoTempa{\TgoExerciseName}%
+}%
+\IfBooleanTF{#1}%
+{%
+\renewcommand\TgoTempb{\TgoTempa}%
+}%
+{%
+\refstepcounter{tgoexo}%
+\renewcommand\TgoTempb{\TgoTempa~\thetgoexo}%
+}%
+\IfValueTF{#3}%
+{%
+\renewcommand\TgoTempc{\TgoTempb\space(#3)}%
+}%
+{%
+\renewcommand\TgoTempc{\TgoTempb}%
+}%
+\@afterindenttrue
+\vspace{5pt plus 2pt minus 2pt}
+\par%
+\textsf{\fontseries{sb}\selectfont\TgoTempc}%
+\par\nobreak\vspace{0pt plus 1pt}\par%
+}%
+%
+\newsavebox{\TgoBox}
+%%%%
+%
+\NewDocumentCommand\sec@exo{m}{%
+\titleformat{\subsection}[block]{\filcenter\color{ColorOne}\sffamily\addfontfeature{RawFeature=-onum}%
+\fontseries{b}\selectfont}{\thesubsection}{1em}{\MakeUppercase}%
+\titlespacing{\subsection}{0em}{10pt plus 10pt minus 4pt}{8pt plus 5pt minus 3pt}%
+\subsection*{#1}
+\addcontentsline{toc}{subsection}{\protect\numberline{}#1}
+}
+%
+\NewDocumentCommand\secexo{O{\TgoExercisesSubsectionName}}{%
+\sec@exo{#1}
+\tgostandardlists
+}%
+\ExpandArgs{c}\NewDocumentCommand{secexo*}{O{\TgoExercisesSubsectionName}}{%
+\sec@exo{#1}
+\TgoSmallerSize
+\tgostandardlists
+}%
+\NewDocumentCommand\endsecexo{}
+{\renewtgolabels\par\addvspace{10pt plus 3pt minus 2pt}\par}%
+%
+\ExpandArgs{c}\NewDocumentCommand{endsecexo*}{}
+{\renewtgolabels\par\addvspace{10pt plus 3pt minus 2pt}\par}%
+%
+\NewDocumentCommand\chap@exo{m}{%
+\titleformat{\section}[block]{\filcenter\color{ColorOne}\sffamily\addfontfeature{RawFeature=-onum}%
+\fontseries{b}\selectfont\large}{\thesection}{1em}{\MakeUppercase}%
+\tgostandardlists
+\titlespacing{\section}{0em}{18pt plus 10pt minus 4pt}{8pt plus 5pt minus 3pt}%
+\section*{#1}
+\addcontentsline{toc}{section}{\protect\numberline{}#1}
+}
+%
+\NewDocumentCommand\chapexo{O{\TgoExercisesSectionName}}{%
+\chap@exo{#1}
+}%
+\ExpandArgs{c}\NewDocumentCommand{chapexo*}{O{\TgoExercisesSectionName}}{%
+\chap@exo{#1}
+\TgoSmallerSize
+}%
+\NewDocumentCommand\endchapexo{}
+{\renewlabelitems\par\addvspace{18pt plus 3pt minus 2pt}\par}%
+%
+\ExpandArgs{c}\NewDocumentCommand{endchapexo*}{}
+{\renewlabelitems\par\addvspace{18pt plus 3pt minus 2pt}\par}%
+%%%%
+%%
+\NewDocumentEnvironment{example}{O{\TgoExampleName}}{%
+\par\addvspace{6pt plus 3pt minus 2pt}%
+{\sffamily\itshape #1}\par\nobreak%
+\@afterheading}%
+{\par\addvspace{6pt plus 3pt minus 2pt}\par}
+%%%
+\NewDocumentEnvironment{remark}{O{\TgoRemarkName}}{%
+\par\addvspace{6pt plus 3pt minus 2pt}%
+{\sffamily\itshape #1. \textemdash~}\ignorespaces}%
+{\par\addvspace{6pt plus 3pt minus 2pt}}
+%%%
+%%%
+\NewDocumentEnvironment{alert}{O{\caution}}{%
+\par\addvspace{6pt plus 3pt minus 2pt}\noindent%
+{\color{ColorOne}\Large #1}\hspace{1ex}\ignorespaces}%
+{\par\addvspace{6pt plus 3pt minus 2pt}}
+%
+%%
+\NewDocumentCommand\newstatement{s m m m o}{%
+\setlength\TgoStatementParindent{\parindent}
+\ExpandArgs{c}\NewDocumentCommand{#2}{d<> o}%
+{% beginning env commands
+\refstepcounter{#3}
+\IfBooleanTF{#1}
+{%
+\renewcommand\TgoTempa{#3}
+\renewcommand\TgoTempb{subsection}
+\ifx\TgoTempa\TgoTempb
+\ifTgoTitleIndentZero
+\renewcommand\TgoStatementIndent{\noindent}
+\setlength\TgoStatementParindent{0em}
+\fi
+\renewcommand\TgoStatementNumberPrefix{\large\fontseries{sb}\selectfont%
+\UseName{the#3}\hspace{1em}}%
+\else
+\renewcommand\TgoTempb{subsubsection}
+\ifx\TgoTempa\TgoTempb
+\ifTgoTitleIndentZero
+\renewcommand\TgoStatementIndent{\noindent}
+\setlength\TgoStatementParindent{0em}
+\fi
+\fi
+\renewcommand\TgoStatementNumberPrefix{\fontseries{sb}\selectfont%
+\UseName{the#3}\hspace{1em}}%
+\fi
+\renewcommand\TgoStatementNumberSuffix{}%
+}
+{
+\renewcommand\TgoStatementNumberSuffix{~\UseName{the#3}}%
+\renewcommand\TgoStatementNumberPrefix{}%
+}
+\IfValueTF{##2}%
+{%
+\renewcommand\TgoStatementSuffix{~{\normalshape(##2)}}%
+}%
+{%
+\renewcommand\TgoStatementSuffix{}%
+}%
+\renewcommand\TgoStatementName{#4}
+\IfValueT{##1}{%
+\renewcommand\TgoStatementName{##1}
+}
+\par%
+\addvspace{8pt plus 3pt minus 2pt}%
+\begin{lrbox}{\TgoBox}%
+\par%
+%\begin{minipage}{\linewidth-\fboxsep-\TgoStatementParindent}\IfValueT{#5}{#5}%
+\begin{minipage}{\linewidth-\TgoStatementParindent}\IfValueT{#5}{#5}%
+}%
+\ExpandArgs{c}\NewDocumentCommand{end#2}{}
+{% end env commands
+\end{minipage}\end{lrbox}
+\TgoStatementIndent\parbox{\linewidth-\TgoStatementParindent}{
+{\color{ColorOne}\sffamily\fontseries{m}\selectfont\scshape\TgoStatementNameOffset%
+\TgoStatementNumberPrefix\fontseries{sb}\selectfont\TgoStatementName%
+\TgoStatementNumberSuffix\TgoStatementSuffix\par\nobreak}%
+\vspace{2pt}\par%
+\addtolength\leftskip{-\fboxsep}
+\addtolength\rightskip{-\fboxsep}
+\colorbox{ColorTwo}{%
+\usebox{\TgoBox}}}%
+\par\addvspace{6pt plus 3pt minus 2pt}\par%
+}%
+\ExpandArgs{c}\NewDocumentCommand{#2*}{d<> o}%
+{% beginning env commands
+\IfValueTF{##2}%
+{%
+\renewcommand\TgoStatementSuffix{~{\normalshape(##2)}}%
+}%
+{%
+\renewcommand\TgoStatementSuffix{}%
+}%
+\renewcommand\TgoStatementName{#4}
+\IfValueT{##1}{%
+\renewcommand\TgoStatementName{##1}
+}
+\par%
+\addvspace{8pt plus 3pt minus 2pt}%
+\begin{lrbox}{\TgoBox}%
+\par%
+%\begin{minipage}{\linewidth-\fboxsep-\TgoStatementParindent}\IfValueT{#5}{#5}%
+\begin{minipage}{\linewidth-\TgoStatementParindent}\IfValueT{#5}{#5}
+}%
+\ExpandArgs{c}\NewDocumentCommand{end#2*}{}
+{% end env commands
+\end{minipage}\end{lrbox}
+\TgoStatementIndent\parbox{\linewidth-\TgoStatementParindent}{
+{\color{ColorOne}\sffamily\fontseries{m}\selectfont\scshape\TgoStatementNameOffset%
+\fontseries{sb}\selectfont\TgoStatementName\TgoStatementSuffix\par\nobreak}%
+\vspace{2pt}\par%
+\addtolength\leftskip{-\fboxsep}
+\addtolength\rightskip{-\fboxsep}
+\colorbox{ColorTwo}{%
+\usebox{\TgoBox}}}%
+\par\addvspace{6pt plus 3pt minus 2pt}\par%
+}%
+}%%%%
+%%%%%%%%%%%%
+%%%%%%%%%%%%%
+%%%%%%%%%%%%
+\NewDocumentCommand\renewstatement{s m m m o}{%
+\setlength\TgoStatementParindent{\parindent}
+\ExpandArgs{c}\RenewDocumentCommand{#2}{d<> o}%
+{% beginning env commands
+\refstepcounter{#3}
+\IfBooleanTF{#1}
+{%
+\renewcommand\TgoTempa{#3}
+\renewcommand\TgoTempb{subsection}
+\ifx\TgoTempa\TgoTempb
+\ifTgoTitleIndentZero
+\renewcommand\TgoStatementIndent{\noindent}
+\setlength\TgoStatementParindent{0em}
+\fi
+\renewcommand\TgoStatementNumberPrefix{\large\fontseries{sb}\selectfont%
+\UseName{the#3}\hspace{1em}}%
+\else
+\renewcommand\TgoTempb{subsubsection}
+\ifx\TgoTempa\TgoTempb
+\ifTgoTitleIndentZero
+\renewcommand\TgoStatementIndent{\noindent}
+\setlength\TgoStatementParindent{0em}
+\fi
+\fi
+\renewcommand\TgoStatementNumberPrefix{\fontseries{sb}\selectfont%
+\UseName{the#3}\hspace{1em}}%
+\fi
+\renewcommand\TgoStatementNumberSuffix{}%
+}
+{
+\renewcommand\TgoStatementNumberSuffix{~\UseName{the#3}}%
+\renewcommand\TgoStatementNumberPrefix{}%
+}
+\IfValueTF{##2}%
+{%
+\renewcommand\TgoStatementSuffix{~{\normalshape(##2)}}%
+}%
+{%
+\renewcommand\TgoStatementSuffix{}%
+}%
+\renewcommand\TgoStatementName{#4}
+\IfValueT{##1}{%
+\renewcommand\TgoStatementName{##1}
+}
+\par%
+\addvspace{8pt plus 3pt minus 2pt}%
+\begin{lrbox}{\TgoBox}%
+\par%
+%\begin{minipage}{\linewidth-\fboxsep-\TgoStatementParindent}\IfValueT{#5}{#5}%
+\begin{minipage}{\linewidth-\TgoStatementParindent}\IfValueT{#5}{#5}
+}%
+\ExpandArgs{c}\RenewDocumentCommand{end#2}{}
+{% end env commands
+\end{minipage}\end{lrbox}
+\TgoStatementIndent\parbox{\linewidth-\TgoStatementParindent}{
+{\color{ColorOne}\sffamily\fontseries{m}\selectfont\scshape\TgoStatementNameOffset%
+\TgoStatementNumberPrefix\fontseries{sb}\selectfont\TgoStatementName%
+\TgoStatementNumberSuffix\TgoStatementSuffix\par\nobreak}%
+\vspace{2pt}\par%
+\addtolength\leftskip{-\fboxsep}
+\addtolength\rightskip{-\fboxsep}
+\colorbox{ColorTwo}{%
+\usebox{\TgoBox}}}%
+\par\addvspace{6pt plus 3pt minus 2pt}\par%
+}%
+\ExpandArgs{c}\RenewDocumentCommand{#2*}{d<> o}%
+{% beginning env commands
+\IfValueTF{##2}%
+{%
+\renewcommand\TgoStatementSuffix{~{\normalshape(##2)}}%
+}%
+{%
+\renewcommand\TgoStatementSuffix{}%
+}%
+\renewcommand\TgoStatementName{#4}
+\IfValueT{##1}{%
+\renewcommand\TgoStatementName{##1}
+}
+\par%
+\addvspace{8pt plus 3pt minus 2pt}%
+\begin{lrbox}{\TgoBox}%
+\par%
+%\begin{minipage}{\linewidth-\fboxsep-\TgoStatementParindent}\IfValueT{#5}{#5}%
+\begin{minipage}{\linewidth-\TgoStatementParindent}\IfValueT{#5}{#5}
+}%
+\ExpandArgs{c}\RenewDocumentCommand{end#2*}{}
+{% end env commands
+\end{minipage}\end{lrbox}
+\TgoStatementIndent\parbox{\linewidth-\TgoStatementParindent}{
+{\color{ColorOne}\sffamily\fontseries{m}\selectfont\scshape\TgoStatementNameOffset%
+\fontseries{sb}\selectfont\TgoStatementName\TgoStatementSuffix\par\nobreak}%
+\vspace{2pt}\par%
+\addtolength\leftskip{-\fboxsep}
+\addtolength\rightskip{-\fboxsep}
+\colorbox{ColorTwo}{%
+\usebox{\TgoBox}}}%
+\par\addvspace{6pt plus 3pt minus 2pt}\par%
+}%
+}%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifTgoNoStatement
+\else
+\newcounter{thm}
+\newstatement{thm}{thm}{\TgoTheoremName}[\itshape]
+\newcounter{defin}
+\newstatement{defin}{defin}{\TgoDefinitionName}
+\newcounter{coro}
+\newstatement{coro}{coro}{\TgoCorollaryName}
+\newcounter{propo}
+\newstatement{propo}{propo}{\TgoPropositionName}[\itshape]
+\newcounter{lem}
+\newstatement{lem}{lem}{\TgoLemmaName}
+\fi
+%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\AtBeginDocument{%
+ \Umathchardef\Bbbbackslash = 0 0 "E020 \relax
+ \Umathchardef\varemptyset = 0 0 "E021 \relax
+ \Umathchardef\mupvarzero = 0 0 "E022 \relax
+ \Umathchardef\mbfvarzero = 0 0 "E023 \relax
+ \Umathchardef\mupvarpartial = 0 0 "E030 \relax
+ \Umathchardef\mupvarvarpi = 0 0 "E032 \relax
+ \Umathchardef\mbfvarpartial = 0 0 "E040 \relax
+ \Umathchardef\mbfvarvarrho = 0 0 "E041 \relax
+ \Umathchardef\mbfvarvarpi = 0 0 "E042 \relax
+ \Umathchardef\mbfvec = 0 0 "E044 \relax
+ \Umathchardef\mbfwp = 0 0 "E045 \relax
+ \Umathchardef\mbfdotlessi = 0 0 "E046 \relax
+ \Umathchardef\mbfdotlessj = 0 0 "E047 \relax
+ \Umathchardef\mbfhbar = 0 0 "E048 \relax
+ \Umathchardef\mbfell = 0 0 "E049 \relax
+ \Umathchardef\mbftriangleleft = 0 0 "E04E \relax
+ \Umathchardef\mbftriangleright = 0 0 "E04F \relax
+ \Umathchardef\mbfitvarpartial = 0 0 "E060 \relax
+ \Umathchardef\mbfitvarvarrho = 0 0 "E061 \relax
+ \Umathchardef\mbfitvarvarpi = 0 0 "E062 \relax
+ \Umathchardef\mbfitwp = 0 0 "E065 \relax
+ \Umathchardef\mbfimath = 0 0 "E066 \relax
+ \Umathchardef\mbfjmath = 0 0 "E067 \relax
+ \Umathchardef\mbfithbar = 0 0 "E068 \relax
+ \Umathchardef\mbfitell = 0 0 "E069 \relax
+ \Umathchardef\mitvarpartial = 0 0 "E070 \relax
+ \Umathchardef\mitvarvarrho = 0 0 "E071 \relax
+ \Umathchardef\mitvarvarpi = 0 0 "E072 \relax
+ \Umathchardef\mithbar = 0 0 "E078 \relax
+ \Umathchardef\mapstochar = 3 0 "E08D \relax
+ \Umathchardef\lhook = 3 0 "E08E \relax
+ \Umathchardef\rhook = 3 0 "E08F \relax
+ \Umathchardef\parallelslant = 3 0 "E090 \relax
+ \Umathchardef\nparallelslant = 3 0 "E091 \relax
+ \Umathchardef\shortparallelslant = 3 0 "E092 \relax
+ \Umathchardef\nshortparallelslant = 3 0 "E093 \relax
+ \Umathchardef\lesseqslantgtr = 3 0 "E094 \relax
+ \Umathchardef\gtreqslantless = 3 0 "E095 \relax
+ \Umathchardef\lesseqqslantgtr = 3 0 "E096 \relax
+ \Umathchardef\gtreqqslantless = 3 0 "E097 \relax
+ \Umathchardef\nleqqslant = 3 0 "E098 \relax
+ \Umathchardef\ngeqqslant = 3 0 "E099 \relax
+ \Umathchardef\varsymscrE = 0 0 "E07D \relax
+ \Umathchardef\varsymscrQ = 0 0 "E07E \relax
+ \Umathchardef\varsymscrT = 0 0 "E07F \relax
+ \Umathchardef\varsymbfscrE = 0 0 "E06D \relax
+ \Umathchardef\varsymbfscrQ = 0 0 "E06E \relax
+ \Umathchardef\varsymbfscrT = 0 0 "E06F \relax
+ % \widearc and\overrightarc
+ \newcommand*{\widearc}{\Umathaccent 0 0 "E540 }%
+ \newcommand*{\overrightarc}{\Umathaccent 0 0 "20D5 }%
+ % From FourierOrns
+ \Umathchardef\forbidden = 0 0 "E0B0 \relax
+ \Umathchardef\beware = 0 0 "E0B1 \relax
+ \Umathchardef\boom = 0 0 "E0B2 \relax
+ \Umathchardef\thething = 0 0 "E0B4 \relax
+ \Umathchardef\xswordsup = 0 0 "E0B5 \relax
+ \Umathchardef\xswordsdown = 0 0 "E0B6 \relax
+ % amssymb
+ \IfPackageLoadedTF{amssymb}%
+ {\ClassWarning{tango}{%
+ Tango provides all AMS symbols.\MessageBreak
+ Loading amssymb.sty is not advisable.\MessageBreak
+ Reported}%
+ }%
+ {% AMS Symbols not referenced in unicode-math-table.tex
+ % \Umathchardef\<cmd> = <math type> <family> <slot>
+ % <math type> : \mathord=0 \mathrel=3 ; <family>=0
+ \Umathchardef\circledR = 0 0 "24C7 \relax
+ \Umathchardef\circledS = 0 0 "24C8 \relax
+ \Umathchardef\diagup = 0 0 "27CB \relax
+ \Umathchardef\diagdown = 0 0 "27CD \relax
+ \Umathchardef\shortmid = 3 0 "E0A2 \relax
+ \Umathchardef\shortparallel = 3 0 "E0A3 \relax
+ \Umathchardef\nshortmid = 3 0 "E0A4 \relax
+ \Umathchardef\nshortparallel = 3 0 "E0A5 \relax
+ \Umathchardef\lvertneqq = 3 0 "E0A6 \relax
+ \Umathchardef\gvertneqq = 3 0 "E0A7 \relax
+ \Umathchardef\nleqslant = 3 0 "E0A8 \relax
+ \Umathchardef\ngeqslant = 3 0 "E0A9 \relax
+ \Umathchardef\nleqq = 3 0 "E0AA \relax
+ \Umathchardef\ngeqq = 3 0 "E0AB \relax
+ \Umathchardef\varsubsetneq = 3 0 "E0AC \relax
+ \Umathchardef\varsupsetneq = 3 0 "E0AD \relax
+ \Umathchardef\nsubseteqq = 3 0 "E0AE \relax
+ \Umathchardef\nsupseteqq = 3 0 "E0AF \relax
+ \Umathchardef\varsubsetneqq = 3 0 "E09C \relax
+ \Umathchardef\varsupsetneqq = 3 0 "E09D \relax
+ \Umathchardef\npreceq = 3 0 "E09E \relax
+ \Umathchardef\nsucceq = 3 0 "E09F \relax
+ \let\centerdot\cdotp
+ \let\restriction\upharpoonright
+ \let\doteqdot\Doteq
+ \let\doublecup\Cup
+ \let\doublecap\Cap
+ \let\llless\lll
+ \let\gggtr\ggg
+ \let\circlearrowleft\acwopencirclearrow
+ \let\circlearrowright\cwopencirclearrow
+ \let\lozenge\mdlgwhtlozenge
+ \let\blacklozenge\mdlgblklozenge
+ \let\square\mdlgwhtsquare
+ \let\blacksquare\mdlgblksquare
+ \let\dashleftarrow\leftdasharrow
+ \let\dashrightarrow\rightdasharrow
+ \let\ntriangleleft\nvartriangleleft
+ \let\ntriangleright\nvartriangleright
+ \let\varpropto\propto
+ \let\thicksim\sim
+ \let\thickapprox\approx
+ \let\smallsmile\smile
+ \let\smallfrown\frown
+ }%
+ % latexsym
+ \IfPackageLoadedTF{latexsym}%
+ {\ClassWarning{tango}{%
+ Tango provides all LaTeX symbols.\MessageBreak
+ Loading latexsym.sty is not advisable.\MessageBreak
+ Reported}%
+ }%
+ {\let\lhd\vartriangleleft
+ \let\rhd\vartriangleright
+ \let\unlhd\trianglelefteq
+ \let\unrhd\trianglerighteq
+ \let\leadsto\rightcurvedarrow
+ \let\Box\lgwhtsquare
+ \let\Diamond\mdlgwhtdiamond
+ }%
+}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-AU.lua
index be3a46360fc..4594075a480 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.62,
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..393b451413b 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.62,
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..98057a20f91 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.62,
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..e0bba4c80e1 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.62 }
-- 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..f6b3da26edd 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.62,
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..841fe187b5f 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.62,
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..0a6187aa483 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.62,
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..f1f13bbdbcd 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.62,
comment = "configuration to xindex-cfg-uca.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-danteedition.lua
index a17cfc77fa6..037b0f16e97 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.62,
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..2692d3e6f06 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.62,
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..145a3deaacd 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.62,
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
@@ -603,24 +634,33 @@ 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=="Abendmahl" or B=="Abendmahl" then print(A,B,A==B) 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 +769,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 +779,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 +843,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 +856,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..ff4c5aff9b1 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.62,
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..0f9ecd3ad75 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.62,
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..864d0c50615 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.62,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua b/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua
index 29393bd5a14..b63dabeccbb 100644
--- a/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua
+++ b/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.lua
@@ -1,5 +1,5 @@
--% Kale Ewasiuk (kalekje@gmail.com)
---% 2023-12-08
+--% 2024-08-17
--% Copyright (C) 2021-2023 Kale Ewasiuk
--%
--% Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -55,6 +55,7 @@ YAMLvars.setts.decstr = 'xfm' -- if in declaration key the value is a string (in
YAMLvars.setts.undeclared = false
YAMLvars.setts.overwrite = false
YAMLvars.setts.lowercase = false
+YAMLvars.setts.stripvars = true -- todo add this as an option accessible in latex
YAMLvars.setts.tabmidrule = 'midrule'
YAMLvars.setts.prcstring = true
YAMLvars.setts.xfm = {}
@@ -86,7 +87,7 @@ end
function YAMLvars.debugtalk(s, ss)
if YAMLvars.debug then
- pl.tex.help_wrt(s, ss)
+ pl.tex.wrth(s, ss)
end
end
@@ -100,7 +101,7 @@ end
function YAMLvars.xfm.markdown(var, val)
--return '\\begin{markdown} '..val..'\n \\end{markdown}'
- pl.tex.help_wrt(val, md)
+ pl.tex.wrth(val, md)
return [[begin markdown ..val..
par end markdown]]
@@ -206,6 +207,7 @@ function YAMLvars.dec.toggle(var, dft)
end
function YAMLvars.dec.length(var, dft)
+ dft = dft or '0pt'
tex.print('\\global\\newlength{\\'..var..'}')
YAMLvars.prc.length(var, dft)
end
@@ -337,7 +339,10 @@ function YAMLvars.declareYAMLvarsStr(y)
var = var:lower()
YAMLvars.varslowcase:append(var)
end
- YAMLvars.varspecs[var] = default_stuff()
+ if YAMLvars.setts.stripvars then -- todo move to a func for easier use
+ var = var:gsub("%s+", "")
+ end
+ YAMLvars.varspecs[var] = default_stuff() -- assign default specs of a variable to the current var
if type(specs) == 'string' then
if YAMLvars.setts.decstr == 'xfm' then specs = {xfm={specs}} end
if YAMLvars.setts.decstr == 'dft' then specs = {dft=specs} end
@@ -437,6 +442,9 @@ function YAMLvars.parseYAMLvarsStr(y)
if YAMLvars.varslowcase:contains(var:lower()) then
var = var:lower()
end
+ if YAMLvars.setts.stripvars then -- todo move to a func for easier use
+ var = var:gsub("%s+", "")
+ end
if YAMLvars.varspecs[var] == nil and YAMLvars.setts.undeclared then
YAMLvars.debugtalk(YAMLvars.setts, 'XYZ')
YAMLvars.varspecs[var] = default_stuff() -- if undeclared and allowing, add to varspec set to default xfm, prc, dft
diff --git a/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty b/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty
index 524b290f34b..8bc387a0f5a 100644
--- a/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty
+++ b/Master/texmf-dist/tex/lualatex/yamlvars/yamlvars.sty
@@ -1,5 +1,5 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2023-12-08
+% 2024-08-17
% Copyright (C) 2021-2023 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -25,7 +25,7 @@
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{yamlvars}[2023-12-08]
+\ProvidesPackage{yamlvars}[2024-08-17]
\RequirePackage{luacode}
\RequirePackage{etoolbox}
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 a68edaf9fdb..153e041d99b 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.32.3",
- date = "2024/06/21",
+ version = "2.35.0",
+ date = "2024/11/12",
description = "Lua package to typeset Metapost with LuaTeX's MPLib.",
}
@@ -45,7 +45,6 @@ local function termorlog (target, text, kind)
if kind == "Error" then error() end
end
end
-
local function warn (...) -- beware '%' symbol
termorlog("term and log", select("#",...) > 1 and format(...) or ...)
end
@@ -60,22 +59,19 @@ luamplib.showlog = luamplib.showlog or false
local tableconcat = table.concat
local tableinsert = table.insert
+local tableunpack = table.unpack
local texsprint = tex.sprint
local texgettoks = tex.gettoks
local texgetbox = tex.getbox
local texruntoks = tex.runtoks
-
if not texruntoks then
err("Your LuaTeX version is too old. Please upgrade it to the latest")
end
-
local is_defined = token.is_defined
local get_macro = token.get_macro
-
local mplib = require ('mplib')
local kpse = require ('kpse')
local lfs = require ('lfs')
-
local lfsattributes = lfs.attributes
local lfsisdir = lfs.isdir
local lfsmkdir = lfs.mkdir
@@ -86,7 +82,6 @@ local file = file or { }
local replacesuffix = file.replacesuffix or function(filename, suffix)
return (filename:gsub("%.[%a%d]+$","")) .. "." .. suffix
end
-
local is_writable = file.is_writable or function(name)
if lfsisdir(name) then
name = name .. "/_luam_plib_temp_file_"
@@ -105,11 +100,8 @@ local mk_full_path = lfs.mkdirp or lfs.mkdirs or function(path)
end
end
-local luamplibtime = kpse.find_file("luamplib.lua")
-luamplibtime = luamplibtime and lfsattributes(luamplibtime,"modification")
-
+local luamplibtime = lfsattributes(kpse.find_file"luamplib.lua", "modification")
local currenttime = os.time()
-
local outputdir, cachedir
if lfstouch then
for i,v in ipairs{'TEXMFVAR','TEXMF_OUTPUT_DIRECTORY','.','TEXMFOUTPUT'} do
@@ -146,7 +138,6 @@ function luamplib.getcachedir(dir)
end
end
end
-
local noneedtoreplace = {
["boxes.mp"] = true, -- ["format.mp"] = true,
["graph.mp"] = true, ["marith.mp"] = true, ["mfplain.mp"] = true,
@@ -164,7 +155,6 @@ local noneedtoreplace = {
["mp-tool.mpiv"] = true, ["mp-cont.mpiv"] = true,
}
luamplib.noneedtoreplace = noneedtoreplace
-
local function replaceformatmp(file,newfile,ofmodify)
local fh = ioopen(file,"r")
if not fh then return file end
@@ -182,12 +172,10 @@ local function replaceformatmp(file,newfile,ofmodify)
lfstouch(newfile,currenttime,ofmodify)
return newfile
end
-
local name_b = "%f[%a_]"
local name_e = "%f[^%a_]"
local btex_etex = name_b.."btex"..name_e.."%s*(.-)%s*"..name_b.."etex"..name_e
local verbatimtex_etex = name_b.."verbatimtex"..name_e.."%s*(.-)%s*"..name_b.."etex"..name_e
-
local function replaceinputmpfile (name,file)
local ofmodify = lfsattributes(file,"modification")
if not ofmodify then return file end
@@ -200,19 +188,15 @@ local function replaceinputmpfile (name,file)
return nf.size == 0 and file or newfile
end
end
-
if name == "format.mp" then return replaceformatmp(file,newfile,ofmodify) end
-
local fh = ioopen(file,"r")
if not fh then return file end
local data = fh:read("*all"); fh:close()
-
local count,cnt = 0,0
data, cnt = data:gsub(btex_etex, "btex %1 etex ") -- space
count = count + cnt
data, cnt = data:gsub(verbatimtex_etex, "verbatimtex %1 etex;") -- semicolon
count = count + cnt
-
if count == 0 then
noneedtoreplace[name] = true
fh = ioopen(newfile,"w");
@@ -222,7 +206,6 @@ local function replaceinputmpfile (name,file)
end
return file
end
-
fh = ioopen(newfile,"w")
if not fh then return file end
fh:write(data); fh:close()
@@ -238,12 +221,10 @@ do
end
mpkpse = kpse.new(arg[exe], "mpost")
end
-
local special_ftype = {
pfb = "type1 fonts",
enc = "enc files",
}
-
function luamplib.finder (name, mode, ftype)
if mode == "w" then
if name and name ~= "mpout.log" then
@@ -273,17 +254,14 @@ local preamble = [[
let normalfontsize = fontsize;
input %s ;
]]
-
local currentformat = "plain"
function luamplib.setformat (name)
currentformat = name
end
-
luamplib.codeinherit = false
local mplibinstances = {}
luamplib.instances = mplibinstances
local has_instancename = false
-
local function reporterror (result, prevlog)
if not result then
err("no result object returned")
@@ -315,7 +293,7 @@ local function reporterror (result, prevlog)
return log
end
end
-
+if not math.initialseed then math.randomseed(currenttime) end
local function luamplibload (name)
local mpx = mplib.new {
ini_version = true,
@@ -330,7 +308,7 @@ local function luamplibload (name)
local preamble = tableconcat{
format(preamble, replacesuffix(name,"mp")),
luamplib.preambles.mplibcode,
- luamplib.legacy_verbatimtex and luamplib.preambles.legacyverbatimtex or "",
+ luamplib.legacyverbatimtex and luamplib.preambles.legacyverbatimtex or "",
luamplib.textextlabel and luamplib.preambles.textextlabel or "",
}
local result, log
@@ -342,7 +320,6 @@ local function luamplibload (name)
log = reporterror(result)
return mpx, result, log
end
-
local function process (data, instancename)
local currfmt
if instancename and instancename ~= "" then
@@ -353,7 +330,7 @@ local function process (data, instancename)
currentformat,
luamplib.numbersystem or "scaled",
tostring(luamplib.textextlabel),
- tostring(luamplib.legacy_verbatimtex),
+ tostring(luamplib.legacyverbatimtex),
}
has_instancename = false
end
@@ -383,20 +360,17 @@ local function process (data, instancename)
end
local pdfmode = tex.outputmode > 0
+
local catlatex = luatexbase.registernumber("catcodetable@latex")
local catat11 = luatexbase.registernumber("catcodetable@atletter")
-
local function run_tex_code (str, cat)
texruntoks(function() texsprint(cat or catlatex, str) end)
end
-
local texboxes = { globalid = 0, localid = 4096 }
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")'
-
+ xscaled %f yscaled %f shifted (0,-%f) \z
+ withprescript "mplibtexboxid=%i:%f:%f")'
local function process_tex_text (str)
if str then
local global = (has_instancename or luamplib.globaltextext or luamplib.codeinherit)
@@ -411,7 +385,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
@@ -434,7 +408,6 @@ local mplibcolorfmt = {
[[\color_select:n%s\endgroup]],
},
}
-
local colfmt = is_defined'color_select:n' and "l3color" or "xcolor"
if colfmt == "l3color" then
run_tex_code{
@@ -448,7 +421,6 @@ if colfmt == "l3color" then
}
end
local ccexplat = luatexbase.registernumber"luamplibcctabexplat"
-
local function process_color (str)
if str then
if not str:find("%b{}") then
@@ -499,14 +471,12 @@ end
local tex_code_pre_mplib = {}
luamplib.figid = 1
luamplib.in_the_fig = false
-
local function process_verbatimtex_prefig (str)
if str then
tex_code_pre_mplib[luamplib.figid] = str
end
return ""
end
-
local function process_verbatimtex_infig (str)
if str then
return format('special "postmplibverbtex=%s";', str)
@@ -528,7 +498,6 @@ local mp = mp
mp.mf_path_reset = mp.mf_path_reset or function() end
mp.mf_finish_saving_data = mp.mf_finish_saving_data or function() end
mp.report = mp.report or info
-
catcodes = catcodes or {}
local catcodes = catcodes
catcodes.numbers = catcodes.numbers or {}
@@ -557,7 +526,6 @@ local function mpprint(buffer,...)
end
end
end
-
function luamplib.runscript (code)
local id, str = code:match("(.-){(.*)}")
if id and str then
@@ -579,7 +547,7 @@ function luamplib.runscript (code)
return buffer
end
buffer = {}
- mpprint(buffer, table.unpack(res))
+ mpprint(buffer, tableunpack(res))
return tableconcat(buffer)
end
return ""
@@ -592,9 +560,7 @@ local function protecttexcontents (str)
:gsub("%zPerCent%z", "\\%%")
:gsub("%s+", " ")
end
-
-luamplib.legacy_verbatimtex = true
-
+luamplib.legacyverbatimtex = true
function luamplib.maketext (str, what)
if str and str ~= "" then
str = protecttexcontents(str)
@@ -603,7 +569,7 @@ function luamplib.maketext (str, what)
not str:find("\\begin%s*{document}") and
not str:find("\\documentstyle"..name_e) and
not str:find("\\usepackage"..name_e) then
- if luamplib.legacy_verbatimtex then
+ if luamplib.legacyverbatimtex then
if luamplib.in_the_fig then
return process_verbatimtex_infig(str)
else
@@ -621,10 +587,10 @@ function luamplib.maketext (str, what)
end
local function colorsplit (res)
- local t, tt = { }, res:gsub("[%[%]]",""):explode()
+ local t, tt = { }, res:gsub("[%[%]]","",2):explode()
local be = tt[1]:find"^%d" and 1 or 2
for i=be, #tt do
- if tt[i]:find"^%a" then break end
+ if not tonumber(tt[i]) then break end
t[#t+1] = tt[i]
end
return t
@@ -659,20 +625,21 @@ luamplib.shadecolor = function (str)
run_tex_code({
[[\color_export:nnN{]], str, [[}{backend}\mplib_@tempa]],
},ccexplat)
- local name = get_macro'mplib_@tempa':match'{(.-)}{.+}'
+ local name, value = get_macro'mplib_@tempa':match'{(.-)}{(.-)}'
local t, obj = res:explode()
if pdfmode then
obj = format("%s 0 R", ltx.pdf.object_id( t[1]:sub(2,-1) ))
else
obj = t[2]
end
- local value = t[3]:match"%[(.-)%]" or t[3]
- return format('(%s) withprescript"mplib_spotcolor=%s:%s"', value,obj,name)
+ return format('(1) withprescript"mplib_spotcolor=%s:%s:%s"', value,obj,name)
end
return colorsplit(res)
end
-local running = -1073741824
+local decimals = "%.%d+"
+local function rmzeros(str) return str:gsub("%.?0+$","") end
+
local emboldenfonts = { }
local function getemboldenwidth (curr, fakebold)
local width = emboldenfonts.width
@@ -705,13 +672,14 @@ local function getrulewhatsit (line, wd, ht, dp)
fmt = "pdf:content "..fmt
pl = node.new("whatsit","special")
end
- pl.data = fmt:format(line, 0, -dp, wd, ht+dp, "B")
+ pl.data = fmt:format(line, 0, -dp, wd, ht+dp, "B") :gsub(decimals,rmzeros)
local ss = node.new"glue"
node.setglue(ss, 0, 65536, 65536, 2, 2)
pl.next = ss
return pl
end
local function getrulemetric (box, curr, bp)
+ local running = -1073741824
local wd,ht,dp = curr.width, curr.height, curr.depth
wd = wd == running and box.width or wd
ht = ht == running and box.height or ht
@@ -763,7 +731,8 @@ local function embolden (box, curr, fakebold)
head, curr = node.remove(head, curr)
elseif curr.id == node.id"glyph" and curr.font > 0 then
local f = curr.font
- local i = emboldenfonts[f]
+ local key = format("%s:%s",f,fakebold)
+ local i = emboldenfonts[key]
if not i then
local ft = font.getfont(f) or font.getcopy(f)
if pdfmode then
@@ -779,7 +748,7 @@ local function embolden (box, curr, fakebold)
name = format('%s;embolden=%s;',name,fakebold)
_, i = fonts.constructors.readanddefine(name,ft.size)
end
- emboldenfonts[f] = i
+ emboldenfonts[key] = i
end
curr.font = i
end
@@ -791,6 +760,9 @@ end
local function graphictextcolor (col, filldraw)
if col:find"^[%d%.:]+$" then
col = col:explode":"
+ for i=1,#col do
+ col[i] = format("%.3f", col[i])
+ end
if pdfmode then
local op = #col == 4 and "k" or #col == 3 and "rg" or "g"
col[#col+1] = filldraw == "fill" and op or op:upper()
@@ -965,7 +937,7 @@ function luamplib.glyph (f, c)
if not gid then return mperr"cannot get GID (glyph id)" end
local fac = 1000 / (shapedata.units or 1000)
local t = shapedata.glyphs[gid].segments
- if not t then return "image(fill fullcircle scaled 0;)" end
+ if not t then return "image()" end
for i,v in ipairs(t) do
if type(v) == "table" then
for ii,vv in ipairs(v) do
@@ -980,7 +952,7 @@ function luamplib.glyph (f, c)
end
local rulefmt = "mpliboutlinepic[%i]:=image(addto currentpicture contour \z
-unitsquare shifted - center unitsquare;) xscaled %f yscaled %f shifted (%f,%f);"
+ unitsquare shifted - center unitsquare;) xscaled %f yscaled %f shifted (%f,%f);"
local outline_horz, outline_vert
function outline_vert (res, box, curr, xshift, yshift)
local b2u = box.dir == "LTL"
@@ -1215,7 +1187,7 @@ function luamplib.outlinetext (text)
local id = tonumber(fmt:match"mplibtexboxid=(%d+):")
local box = texgetbox(id)
local res = outline_horz({ }, box, box.head, 0, 0)
- if #res == 0 then res = { "mpliboutlinepic[1]:=image(fill fullcircle scaled 0;);" } end
+ if #res == 0 then res = { "mpliboutlinepic[1]:=image();" } end
return tableconcat(res) .. format("mpliboutlinenum:=%i;", #res)
end
@@ -1402,7 +1374,13 @@ vardef mpliboutlinetext@# (expr t) text rest =
) mplib_do_outline_options_r; )
enddef ;
primarydef t withpattern p =
- image( fill t withprescript "mplibpattern=" & if numeric p: decimal fi p; )
+ image(
+ if cycle t:
+ fill
+ else:
+ draw
+ fi
+ t withprescript "mplibpattern=" & if numeric p: decimal fi p; )
enddef;
vardef mplibtransformmatrix (text e) =
save t; transform t;
@@ -1416,6 +1394,75 @@ vardef mplibtransformmatrix (text e) =
& decimal ypart t & ","
& "}");
enddef;
+primarydef p withfademethod s =
+ if picture p:
+ image(
+ draw p;
+ draw center p withprescript "mplibfadestate=stop";
+ )
+ else:
+ p withprescript "mplibfadestate=stop"
+ fi
+ withprescript "mplibfadetype=" & s
+ withprescript "mplibfadebbox=" &
+ decimal (xpart llcorner p -1/4) & ":" &
+ decimal (ypart llcorner p -1/4) & ":" &
+ decimal (xpart urcorner p +1/4) & ":" &
+ decimal (ypart urcorner p +1/4)
+enddef;
+def withfadeopacity (expr a,b) =
+ withprescript "mplibfadeopacity=" &
+ decimal a & ":" &
+ decimal b
+enddef;
+def withfadevector (expr a,b) =
+ withprescript "mplibfadevector=" &
+ decimal xpart a & ":" &
+ decimal ypart a & ":" &
+ decimal xpart b & ":" &
+ decimal ypart b
+enddef;
+let withfadecenter = withfadevector;
+def withfaderadius (expr a,b) =
+ withprescript "mplibfaderadius=" &
+ decimal a & ":" &
+ decimal b
+enddef;
+def withfadebbox (expr a,b) =
+ withprescript "mplibfadebbox=" &
+ decimal xpart a & ":" &
+ decimal ypart a & ":" &
+ decimal xpart b & ":" &
+ decimal ypart b
+enddef;
+primarydef p asgroup s =
+ image(
+ draw center p
+ withprescript "mplibgroupbbox=" &
+ decimal (xpart llcorner p -1/4) & ":" &
+ decimal (ypart llcorner p -1/4) & ":" &
+ decimal (xpart urcorner p +1/4) & ":" &
+ decimal (ypart urcorner p +1/4)
+ withprescript "gr_state=start"
+ withprescript "gr_type=" & s;
+ draw p;
+ draw center p withprescript "gr_state=stop";
+ )
+enddef;
+def withgroupbbox (expr a,b) =
+ withprescript "mplibgroupbbox=" &
+ decimal xpart a & ":" &
+ decimal ypart a & ":" &
+ decimal xpart b & ":" &
+ decimal ypart b
+enddef;
+def withgroupname expr s =
+ withprescript "mplibgroupname=" & s
+enddef;
+def usemplibgroup primary s =
+ draw maketext("\mplibnoforcehmode\csname luamplib.group." & s & "\endcsname")
+ shifted runscript("return luamplib.trgroupshifts['" & s & "']")
+enddef;
]],
legacyverbatimtex = [[
def specialVerbatimTeX (text t) = runscript("luamplibprefig{"&t&"}") enddef;
@@ -1429,7 +1476,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;
@@ -1441,7 +1506,6 @@ enddef;
}
luamplib.verbatiminput = false
-
local function protect_expansion (str)
if str then
str = str:gsub("\\","!!!Control!!!")
@@ -1452,7 +1516,6 @@ local function protect_expansion (str)
return format("\\unexpanded{%s}",str)
end
end
-
local function unprotect_expansion (str)
if str then
return str:gsub("!!!Control!!!", "\\")
@@ -1462,22 +1525,17 @@ local function unprotect_expansion (str)
:gsub("!!!RBrace!!!", "}")
end
end
-
luamplib.everymplib = setmetatable({ [""] = "" },{ __index = function(t) return t[""] end })
luamplib.everyendmplib = setmetatable({ [""] = "" },{ __index = function(t) return t[""] end })
-
function luamplib.process_mplibcode (data, instancename)
texboxes.localid = 4096
-
- if luamplib.legacy_verbatimtex then
+ if luamplib.legacyverbatimtex then
luamplib.figid, tex_code_pre_mplib = 1, {}
end
-
local everymplib = luamplib.everymplib[instancename]
local everyendmplib = luamplib.everyendmplib[instancename]
data = format("\n%s\n%s\n%s\n",everymplib, data, everyendmplib)
:gsub("\r","\n")
-
if luamplib.verbatiminput then
data = data:gsub("\\mpcolor%s+(.-%b{})","mplibcolor(\"%1\")")
:gsub("\\mpdim%s+(%b{})", "mplibdimen(\"%1\")")
@@ -1506,163 +1564,42 @@ function luamplib.process_mplibcode (data, instancename)
return format("verbatimtex %s etex", unprotect_expansion(str))
end)
end
-
process(data, instancename)
end
-local further_split_keys = {
- mplibtexboxid = true,
- sh_color_a = true,
- sh_color_b = true,
-}
local function script2table(s)
local t = {}
for _,i in ipairs(s:explode("\13+")) do
local k,v = i:match("(.-)=(.*)") -- v may contain = or empty.
if k and v and k ~= "" and not t[k] then
- if further_split_keys[k] or further_split_keys[k:sub(1,10)] then
- t[k] = v:explode(":")
- else
- t[k] = v
- end
+ t[k] = v
end
end
return t
end
-local function getobjects(result,figure,f)
- return figure:objects()
-end
-
-function luamplib.convert (result, flusher)
- luamplib.flush(result, flusher)
- return true -- done
-end
-
local figcontents = { post = { } }
local function put2output(a,...)
figcontents[#figcontents+1] = type(a) == "string" and format(a,...) or a
end
-
local function pdf_startfigure(n,llx,lly,urx,ury)
put2output("\\mplibstarttoPDF{%f}{%f}{%f}{%f}",llx,lly,urx,ury)
end
-
local function pdf_stopfigure()
put2output("\\mplibstoptoPDF")
end
-
-local function pdf_literalcode (fmt,...)
- put2output{-2, format(fmt,...)}
-end
-
-local function pdf_textfigure(font,size,text,width,height,depth)
- text = text:gsub(".",function(c)
- return format("\\hbox{\\char%i}",string.byte(c)) -- kerning happens in metapost : false
- end)
- put2output("\\mplibtextext{%s}{%f}{%s}{%s}{%s}",font,size,text,0,0)
-end
-
-local bend_tolerance = 131/65536
-
-local rx, sx, sy, ry, tx, ty, divider = 1, 0, 0, 1, 0, 0, 1
-
-local function pen_characteristics(object)
- local t = mplib.pen_info(object)
- rx, ry, sx, sy, tx, ty = t.rx, t.ry, t.sx, t.sy, t.tx, t.ty
- divider = sx*sy - rx*ry
- return not (sx==1 and rx==0 and ry==0 and sy==1 and tx==0 and ty==0), t.width
-end
-
-local function concat(px, py) -- no tx, ty here
- return (sy*px-ry*py)/divider,(sx*py-rx*px)/divider
-end
-
-local function curved(ith,pth)
- local d = pth.left_x - ith.right_x
- if abs(ith.right_x - ith.x_coord - d) <= bend_tolerance and abs(pth.x_coord - pth.left_x - d) <= bend_tolerance then
- d = pth.left_y - ith.right_y
- if abs(ith.right_y - ith.y_coord - d) <= bend_tolerance and abs(pth.y_coord - pth.left_y - d) <= bend_tolerance then
- return false
- end
- end
- return true
-end
-
-local function flushnormalpath(path,open)
- local pth, ith
- for i=1,#path do
- pth = path[i]
- if not ith then
- pdf_literalcode("%f %f m",pth.x_coord,pth.y_coord)
- elseif curved(ith,pth) then
- pdf_literalcode("%f %f %f %f %f %f c",ith.right_x,ith.right_y,pth.left_x,pth.left_y,pth.x_coord,pth.y_coord)
- else
- pdf_literalcode("%f %f l",pth.x_coord,pth.y_coord)
- end
- ith = pth
- end
- if not open then
- local one = path[1]
- if curved(pth,one) then
- pdf_literalcode("%f %f %f %f %f %f c",pth.right_x,pth.right_y,one.left_x,one.left_y,one.x_coord,one.y_coord )
- else
- pdf_literalcode("%f %f l",one.x_coord,one.y_coord)
- end
- elseif #path == 1 then -- special case .. draw point
- local one = path[1]
- pdf_literalcode("%f %f l",one.x_coord,one.y_coord)
- end
-end
-
-local function flushconcatpath(path,open)
- pdf_literalcode("%f %f %f %f %f %f cm", sx, rx, ry, sy, tx ,ty)
- local pth, ith
- for i=1,#path do
- pth = path[i]
- if not ith then
- pdf_literalcode("%f %f m",concat(pth.x_coord,pth.y_coord))
- elseif curved(ith,pth) then
- local a, b = concat(ith.right_x,ith.right_y)
- local c, d = concat(pth.left_x,pth.left_y)
- pdf_literalcode("%f %f %f %f %f %f c",a,b,c,d,concat(pth.x_coord, pth.y_coord))
- else
- pdf_literalcode("%f %f l",concat(pth.x_coord, pth.y_coord))
- end
- ith = pth
- end
- if not open then
- local one = path[1]
- if curved(pth,one) then
- local a, b = concat(pth.right_x,pth.right_y)
- local c, d = concat(one.left_x,one.left_y)
- pdf_literalcode("%f %f %f %f %f %f c",a,b,c,d,concat(one.x_coord, one.y_coord))
- else
- pdf_literalcode("%f %f l",concat(one.x_coord,one.y_coord))
- end
- elseif #path == 1 then -- special case .. draw point
- local one = path[1]
- pdf_literalcode("%f %f l",concat(one.x_coord,one.y_coord))
- end
-end
-
-local function start_pdf_code()
- if pdfmode then
- pdf_literalcode("q")
- else
- put2output"\\special{pdf:bcontent}"
- end
-end
-local function stop_pdf_code()
- if pdfmode then
- pdf_literalcode("Q")
- else
- put2output"\\special{pdf:econtent}"
- end
+local function pdf_literalcode (...)
+ put2output{ -2, format(...) :gsub(decimals,rmzeros) }
end
+local start_pdf_code = pdfmode
+ and function() pdf_literalcode"q" end
+ or function() put2output"\\special{pdf:bcontent}" end
+local stop_pdf_code = pdfmode
+ and function() pdf_literalcode"Q" end
+ or function() put2output"\\special{pdf:econtent}" end
local function put_tex_boxes (object,prescript)
- local box = prescript.mplibtexboxid
+ local box = prescript.mplibtexboxid:explode":"
local n,tw,th = box[1],tonumber(box[2]),tonumber(box[3])
if n and tw and th then
local op = object.path
@@ -1718,32 +1655,42 @@ local pdfobjs, pdfetcs = {}, {}
pdfetcs.pgfextgs = "pgf@sys@addpdfresource@extgs@plain"
pdfetcs.pgfpattern = "pgf@sys@addpdfresource@patterns@plain"
pdfetcs.pgfcolorspace = "pgf@sys@addpdfresource@colorspaces@plain"
-
-local function update_pdfobjs (os)
- local on = pdfobjs[os]
+local function update_pdfobjs (os, stream)
+ local key = os
+ if stream then key = key..stream end
+ local on = pdfobjs[key]
if on then
return on,false
end
if pdfmode then
- on = pdf.immediateobj(os)
+ if stream then
+ on = pdf.immediateobj("stream",stream,os)
+ else
+ on = pdf.immediateobj(os)
+ end
else
on = pdfetcs.cnt or 1
- texsprint(format("\\special{pdf:obj @mplibpdfobj%s %s}",on,os))
+ if stream then
+ texsprint(format("\\special{pdf:stream @mplibpdfobj%s (%s) <<%s>>}",on,stream,os))
+ else
+ texsprint(format("\\special{pdf:obj @mplibpdfobj%s %s}",on,os))
+ end
pdfetcs.cnt = on + 1
end
- pdfobjs[os] = on
+ pdfobjs[key] = on
return on,true
end
-
+pdfetcs.resfmt = pdfmode and "%s 0 R" or "@mplibpdfobj%s"
if pdfmode then
pdfetcs.getpageres = pdf.getpageresources or function() return pdf.pageresources end
- pdfetcs.setpageres = pdf.setpageresources or function(s) pdf.pageresources = s end
- pdfetcs.initialize_resources = function (name)
+ local getpageres = pdfetcs.getpageres
+ local setpageres = pdf.setpageresources or function(s) pdf.pageresources = s end
+ local initialize_resources = function (name)
local tabname = format("%s_res",name)
pdfetcs[tabname] = { }
if luatexbase.callbacktypes.finish_pdffile then -- ltluatex
local obj = pdf.reserveobj()
- pdfetcs.setpageres(format("%s/%s %i 0 R", pdfetcs.getpageres() or "", name, obj))
+ setpageres(format("%s/%s %i 0 R", getpageres() or "", name, obj))
luatexbase.add_to_callback("finish_pdffile", function()
pdf.immediateobj(obj, format("<<%s>>", tableconcat(pdfetcs[tabname])))
end,
@@ -1753,27 +1700,36 @@ if pdfmode then
pdfetcs.fallback_update_resources = function (name, res)
local tabname = format("%s_res",name)
if not pdfetcs[tabname] then
- pdfetcs.initialize_resources(name)
+ initialize_resources(name)
end
if luatexbase.callbacktypes.finish_pdffile then
local t = pdfetcs[tabname]
t[#t+1] = res
else
- local tpr, n = pdfetcs.getpageres() or "", 0
+ local tpr, n = getpageres() or "", 0
tpr, n = tpr:gsub(format("/%s<<",name), "%1"..res)
if n == 0 then
tpr = format("%s/%s<<%s>>", tpr, name, res)
end
- pdfetcs.setpageres(tpr)
+ setpageres(tpr)
end
end
else
texsprint {
+ "\\luamplibatfirstshipout{",
"\\special{pdf:obj @MPlibTr<<>>}",
"\\special{pdf:obj @MPlibSh<<>>}",
"\\special{pdf:obj @MPlibCS<<>>}",
- "\\special{pdf:obj @MPlibPt<<>>}",
+ "\\special{pdf:obj @MPlibPt<<>>}}",
}
+ pdfetcs.resadded = { }
+ pdfetcs.fallback_update_resources = function (name,res,obj)
+ texsprint{"\\special{pdf:put ", obj, " <<", res, ">>}"}
+ if not pdfetcs.resadded[name] then
+ texsprint{"\\luamplibateveryshipout{\\special{pdf:put @resources <</", name, " ", obj, ">>}}"}
+ pdfetcs.resadded[name] = obj
+ end
+ end
end
local transparancy_modes = { [0] = "Normal",
@@ -1783,13 +1739,10 @@ local transparancy_modes = { [0] = "Normal",
"Hue", "Saturation", "Color", "Luminosity",
"Compatible",
}
-
-local function update_tr_res(mode,opaq)
- local os = format("<</BM /%s/ca %.3f/CA %.3f/AIS false>>",mode,opaq,opaq)
- local on, new = update_pdfobjs(os)
+local function add_extgs_resources (on, new)
+ local key = format("MPlibTr%s", on)
if new then
- local key = format("MPlibTr%s", on)
- local val = format(pdfmode and "%s 0 R" or "@mplibpdfobj%s", on)
+ local val = format(pdfetcs.resfmt, on)
if pdfmanagement then
texsprint {
"\\csname pdfmanagement_add:nnn\\endcsname{Page/Resources/ExtGState}{", key, "}{", val, "}"
@@ -1798,99 +1751,98 @@ local function update_tr_res(mode,opaq)
local tr = format("/%s %s", key, val)
if is_defined(pdfetcs.pgfextgs) then
texsprint { "\\csname ", pdfetcs.pgfextgs, "\\endcsname{", tr, "}" }
- elseif pdfmode then
- if is_defined"TRP@list" then
- texsprint(catat11,{
- [[\if@filesw\immediate\write\@auxout{]],
- [[\string\g@addto@macro\string\TRP@list{]],
- tr,
- [[}}\fi]],
- })
- if not get_macro"TRP@list":find(tr) then
- texsprint(catat11,[[\global\TRP@reruntrue]])
- end
- else
- pdfetcs.fallback_update_resources("ExtGState", tr)
+ elseif is_defined"TRP@list" then
+ texsprint(catat11,{
+ [[\if@filesw\immediate\write\@auxout{]],
+ [[\string\g@addto@macro\string\TRP@list{]],
+ tr,
+ [[}}\fi]],
+ })
+ if not get_macro"TRP@list":find(tr) then
+ texsprint(catat11,[[\global\TRP@reruntrue]])
end
else
- texsprint { "\\special{pdf:put @MPlibTr<<", tr, ">>}" }
+ pdfetcs.fallback_update_resources("ExtGState",tr,"@MPlibTr")
end
end
end
- if not pdfmode and not pdfmanagement and not is_defined(pdfetcs.pgfextgs) then
- texsprint"\\special{pdf:put @resources <</ExtGState @MPlibTr>>}"
- end
- return on
+ return key
end
-
local function do_preobj_TR(object,prescript)
if object.postscript == "collect" then return end
local opaq = prescript and prescript.tr_transparency
- local tron_no
if opaq then
+ local key, on, os, new
local mode = prescript.tr_alternative or 1
- mode = transparancy_modes[tonumber(mode)]
- tron_no = update_tr_res(mode, opaq)
- start_pdf_code()
- pdf_literalcode("/MPlibTr%i gs",tron_no)
+ mode = transparancy_modes[tonumber(mode)] or mode
+ 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])
+ on, new = update_pdfobjs(os)
+ key = add_extgs_resources(on,new)
+ if i == 1 then
+ pdf_literalcode("/%s gs",key)
+ else
+ return format("/%s gs",key)
+ end
+ end
end
- return tron_no
end
local function sh_pdfpageresources(shtype,domain,colorspace,ca,cb,coordinates,steps,fractions)
- local fun2fmt,os = "<</FunctionType 2/Domain [%s]/C0 [%s]/C1 [%s]/N 1>>"
+ for _,v in ipairs{ca,cb} do
+ for i,vv in ipairs(v) do
+ for ii,vvv in ipairs(vv) do
+ v[i][ii] = tonumber(vvv) and format("%.3f",vvv) or vvv
+ end
+ end
+ end
+ local fun2fmt,os = "<</FunctionType 2/Domain[%s]/C0[%s]/C1[%s]/N 1>>"
if steps > 1 then
local list,bounds,encode = { },{ },{ }
for i=1,steps do
if i < steps then
- bounds[i] = fractions[i] or 1
+ bounds[i] = format("%.3f", fractions[i] or 1)
end
encode[2*i-1] = 0
encode[2*i] = 1
os = fun2fmt:format(domain,tableconcat(ca[i],' '),tableconcat(cb[i],' '))
- list[i] = format(pdfmode and "%s 0 R" or "@mplibpdfobj%s",update_pdfobjs(os))
+ :gsub(decimals,rmzeros)
+ list[i] = format(pdfetcs.resfmt, update_pdfobjs(os))
end
os = tableconcat {
"<</FunctionType 3",
- format("/Bounds [%s]", tableconcat(bounds,' ')),
- format("/Encode [%s]", tableconcat(encode,' ')),
- format("/Functions [%s]", tableconcat(list, ' ')),
- format("/Domain [%s]>>", domain),
- }
+ format("/Bounds[%s]", tableconcat(bounds,' ')),
+ format("/Encode[%s]", tableconcat(encode,' ')),
+ format("/Functions[%s]", tableconcat(list, ' ')),
+ format("/Domain[%s]>>", domain),
+ } :gsub(decimals,rmzeros)
else
os = fun2fmt:format(domain,tableconcat(ca[1],' '),tableconcat(cb[1],' '))
+ :gsub(decimals,rmzeros)
end
- local objref = format(pdfmode and "%s 0 R" or "@mplibpdfobj%s",update_pdfobjs(os))
+ local objref = format(pdfetcs.resfmt, update_pdfobjs(os))
os = tableconcat {
format("<</ShadingType %i", shtype),
format("/ColorSpace %s", colorspace),
format("/Function %s", objref),
- format("/Coords [%s]", coordinates),
- "/Extend [true true]/AntiAlias true>>",
- }
+ format("/Coords[%s]", coordinates),
+ "/Extend[true true]/AntiAlias true>>",
+ } :gsub(decimals,rmzeros)
local on, new = update_pdfobjs(os)
if new then
- local key = format("MPlibSh%s", on)
- local val = format(pdfmode and "%s 0 R" or "@mplibpdfobj%s", on)
+ local key, val = format("MPlibSh%s", on), format(pdfetcs.resfmt, on)
if pdfmanagement then
texsprint {
"\\csname pdfmanagement_add:nnn\\endcsname{Page/Resources/Shading}{", key, "}{", val, "}"
}
else
local res = format("/%s %s", key, val)
- if pdfmode then
- pdfetcs.fallback_update_resources("Shading", res)
- else
- texsprint { "\\special{pdf:put @MPlibSh<<", res, ">>}" }
- end
+ pdfetcs.fallback_update_resources("Shading",res,"@MPlibSh")
end
end
- if not pdfmode and not pdfmanagement then
- texsprint"\\special{pdf:put @resources <</Shading @MPlibSh>>}"
- end
return on
end
-
local function color_normalize(ca,cb)
if #cb == 1 then
if #ca == 4 then
@@ -1902,7 +1854,6 @@ local function color_normalize(ca,cb)
cb[1], cb[2], cb[3], cb[4] = 1-cb[1], 1-cb[2], 1-cb[3], 0
end
end
-
pdfetcs.clrspcs = setmetatable({ }, { __index = function(t,names)
run_tex_code({
[[\color_model_new:nnn]],
@@ -1914,7 +1865,6 @@ pdfetcs.clrspcs = setmetatable({ }, { __index = function(t,names)
t[names] = colorspace
return colorspace
end })
-
local function do_preobj_SH(object,prescript)
local shade_no
local sh_type = prescript and prescript.sh_type
@@ -1922,14 +1872,14 @@ local function do_preobj_SH(object,prescript)
return
else
local domain = prescript.sh_domain or "0 1"
- local centera = prescript.sh_center_a or "0 0"; centera = centera:explode()
- local centerb = prescript.sh_center_b or "0 0"; centerb = centerb:explode()
+ local centera = (prescript.sh_center_a or "0 0"):explode()
+ local centerb = (prescript.sh_center_b or "0 0"):explode()
local transform = prescript.sh_transform == "yes"
local sx,sy,sr,dx,dy = 1,1,1,0,0
if transform then
- local first = prescript.sh_first or "0 0"; first = first:explode()
- local setx = prescript.sh_set_x or "0 0"; setx = setx:explode()
- local sety = prescript.sh_set_y or "0 0"; sety = sety:explode()
+ local first = (prescript.sh_first or "0 0"):explode()
+ local setx = (prescript.sh_set_x or "0 0"):explode()
+ local sety = (prescript.sh_set_y or "0 0"):explode()
local x,y = tonumber(setx[1]) or 0, tonumber(sety[1]) or 0
if x ~= 0 and y ~= 0 then
local path = object.path
@@ -1951,15 +1901,15 @@ local function do_preobj_SH(object,prescript)
end
end
local ca, cb, colorspace, steps, fractions
- ca = { prescript.sh_color_a_1 or prescript.sh_color_a or {0} }
- cb = { prescript.sh_color_b_1 or prescript.sh_color_b or {1} }
+ ca = { (prescript.sh_color_a_1 or prescript.sh_color_a or "0"):explode":" }
+ cb = { (prescript.sh_color_b_1 or prescript.sh_color_b or "1"):explode":" }
steps = tonumber(prescript.sh_step) or 1
if steps > 1 then
fractions = { prescript.sh_fraction_1 or 0 }
for i=2,steps do
fractions[i] = prescript[format("sh_fraction_%i",i)] or (i/steps)
- ca[i] = prescript[format("sh_color_a_%i",i)] or {0}
- cb[i] = prescript[format("sh_color_b_%i",i)] or {1}
+ ca[i] = (prescript[format("sh_color_a_%i",i)] or "0"):explode":"
+ cb[i] = (prescript[format("sh_color_b_%i",i)] or "1"):explode":"
end
end
if prescript.mplib_spotcolor then
@@ -1968,15 +1918,14 @@ local function do_preobj_SH(object,prescript)
local script = object.prescript:explode"\13+"
for i=#script,1,-1 do
if script[i]:find"mplib_spotcolor" then
- local name, value
- objref, name = script[i]:match"=(.-):(.+)"
- value = script[i+1]:match"=(.+)"
+ local t, name, value = script[i]:explode"="[2]:explode":"
+ value, objref, name = t[1], t[2], t[3]
if not names[name] then
pos = pos+1
names[name] = pos
names[#names+1] = name
end
- local t = { }
+ t = { }
for j=1,names[name] do t[#t+1] = 0 end
t[#t+1] = value
tableinsert(#ca == #cb and ca or cb, t)
@@ -2027,48 +1976,20 @@ local function do_preobj_SH(object,prescript)
else
err"unknown shading type"
end
- pdf_literalcode("q /Pattern cs")
end
return shade_no
end
-patterns = { }
-function luamplib.registerpattern ( boxid, name, opts )
- local box = texgetbox(boxid)
- local wd = format("%.3f",box.width/factor)
- local hd = format("%.3f",(box.height+box.depth)/factor)
- info("w/h/d of '%s': %s %s 0.0", name, wd, hd)
- if opts.xstep == 0 then opts.xstep = nil end
- if opts.ystep == 0 then opts.ystep = nil end
- if opts.colored == nil then
- opts.colored = opts.coloured
- if opts.colored == nil then
- opts.colored = true
- end
+pdfetcs.patterns = { }
+local function gather_resources (optres)
+ local t, do_pattern = { }, not optres
+ local names = {"ExtGState","ColorSpace","Shading"}
+ if do_pattern then
+ names[#names+1] = "Pattern"
end
- if type(opts.matrix) == "table" then opts.matrix = tableconcat(opts.matrix," ") end
- if type(opts.bbox) == "table" then opts.bbox = tableconcat(opts.bbox," ") end
- if opts.matrix and opts.matrix:find"%a" then
- local data = format("mplibtransformmatrix(%s);",opts.matrix)
- process(data,"@mplibtransformmatrix")
- local t = luamplib.transformmatrix
- opts.matrix = format("%s %s %s %s", t[1], t[2], t[3], t[4])
- opts.xshift = opts.xshift or t[5]
- opts.yshift = opts.yshift or t[6]
- end
- local attr = {
- "/Type/Pattern",
- "/PatternType 1",
- format("/PaintType %i", opts.colored and 1 or 2),
- "/TilingType 2",
- format("/XStep %s", opts.xstep or wd),
- format("/YStep %s", opts.ystep or hd),
- format("/Matrix [%s %s %s]", opts.matrix or "1 0 0 1", opts.xshift or 0, opts.yshift or 0),
- }
if pdfmode then
- local optres, t = opts.resources or "", { }
if pdfmanagement then
- for _,v in ipairs{"ExtGState","ColorSpace","Shading"} do
+ for _,v in ipairs(names) do
local pp = get_macro(format("g__pdfdict_/g__pdf_Core/Page/Resources/%s_prop",v))
if pp and pp:find"__prop_pair" then
t[#t+1] = format("/%s %s 0 R", v, ltx.pdf.object_id("__pdf/Page/Resources/"..v))
@@ -2077,26 +1998,19 @@ function luamplib.registerpattern ( boxid, name, opts )
else
local res = pdfetcs.getpageres() or ""
run_tex_code[[\mplibtmptoks\expandafter{\the\pdfvariable pageresources}]]
- res = (res .. texgettoks'mplibtmptoks'):explode()
- res = tableconcat(res," "):explode"/+"
+ res = res .. texgettoks'mplibtmptoks'
+ if do_pattern then return res end
+ res = res:explode"/+"
for _,v in ipairs(res) do
+ v = v:match"^%s*(.-)%s*$"
if not v:find"Pattern" and not optres:find(v) then
t[#t+1] = "/" .. v
end
end
end
- optres = optres .. tableconcat(t)
- if opts.bbox then
- attr[#attr+1] = format("/BBox [%s]", opts.bbox)
- end
- local index = tex.saveboxresource(boxid, tableconcat(attr), optres, true, opts.bbox and 4 or 1)
- patterns[name] = { id = index, colored = opts.colored }
else
- local objname = "@mplibpattern"..name
- local metric = format("bbox %s", opts.bbox or format("0 0 %s %s",wd,hd))
- local optres, t = opts.resources or "", { }
if pdfmanagement then
- for _,v in ipairs{"ExtGState","ColorSpace","Shading"} do
+ for _,v in ipairs(names) do
local pp = get_macro(format("g__pdfdict_/g__pdf_Core/Page/Resources/%s_prop",v))
if pp and pp:find"__prop_pair" then
run_tex_code {
@@ -2112,31 +2026,87 @@ function luamplib.registerpattern ( boxid, name, opts )
"\\mplibtmptoks\\expanded{{",
"\\ifpgf@sys@pdf@extgs@exists /ExtGState @pgfextgs\\fi",
"\\ifpgf@sys@pdf@colorspaces@exists /ColorSpace @pgfcolorspaces\\fi",
+ do_pattern and "\\ifpgf@sys@pdf@patterns@exists /Pattern @pgfpatterns \\fi" or "",
"}}",
}, catat11)
t[#t+1] = texgettoks'mplibtmptoks'
+ else
+ for _,v in ipairs(names) do
+ local vv = pdfetcs.resadded[v]
+ if vv then
+ t[#t+1] = format("/%s %s", v, vv)
+ end
+ end
+ end
+ end
+ return tableconcat(t)
+end
+function luamplib.registerpattern ( boxid, name, opts )
+ local box = texgetbox(boxid)
+ local wd = format("%.3f",box.width/factor)
+ local hd = format("%.3f",(box.height+box.depth)/factor)
+ info("w/h/d of pattern '%s': %s 0", name, format("%s %s",wd, hd):gsub(decimals,rmzeros))
+ if opts.xstep == 0 then opts.xstep = nil end
+ if opts.ystep == 0 then opts.ystep = nil end
+ if opts.colored == nil then
+ opts.colored = opts.coloured
+ if opts.colored == nil then
+ opts.colored = true
end
- optres = optres .. tableconcat(t)
+ end
+ if type(opts.matrix) == "table" then opts.matrix = tableconcat(opts.matrix," ") end
+ if type(opts.bbox) == "table" then opts.bbox = tableconcat(opts.bbox," ") end
+ if opts.matrix and opts.matrix:find"%a" then
+ local data = format("mplibtransformmatrix(%s);",opts.matrix)
+ process(data,"@mplibtransformmatrix")
+ local t = luamplib.transformmatrix
+ opts.matrix = format("%f %f %f %f", t[1], t[2], t[3], t[4])
+ opts.xshift = opts.xshift or format("%f",t[5])
+ opts.yshift = opts.yshift or format("%f",t[6])
+ end
+ local attr = {
+ "/Type/Pattern",
+ "/PatternType 1",
+ format("/PaintType %i", opts.colored and 1 or 2),
+ "/TilingType 2",
+ format("/XStep %s", opts.xstep or wd),
+ format("/YStep %s", opts.ystep or hd),
+ format("/Matrix[%s %s %s]", opts.matrix or "1 0 0 1", opts.xshift or 0, opts.yshift or 0),
+ }
+ local optres = opts.resources or ""
+ optres = optres .. gather_resources(optres)
+ local patterns = pdfetcs.patterns
+ if pdfmode then
+ if opts.bbox then
+ attr[#attr+1] = format("/BBox[%s]", opts.bbox)
+ end
+ attr = tableconcat(attr) :gsub(decimals,rmzeros)
+ local index = tex.saveboxresource(boxid, attr, optres, true, opts.bbox and 4 or 1)
+ patterns[name] = { id = index, colored = opts.colored }
+ else
+ local cnt = #patterns + 1
+ local objname = "@mplibpattern" .. cnt
+ local metric = format("bbox %s", opts.bbox or format("0 0 %s %s",wd,hd))
texsprint {
- [[\ifvmode\nointerlineskip\fi]],
- format([[\hbox to0pt{\vbox to0pt{\hsize=\wd %i\vss\noindent]], boxid), -- force horiz mode?
- [[\special{pdf:bcontent}]],
- [[\special{pdf:bxobj ]], objname, format(" %s}", metric),
- format([[\raise\dp %i\box %i]], boxid, boxid),
- format([[\special{pdf:put @resources <<%s>>}]], optres),
- [[\special{pdf:exobj <<]], tableconcat(attr), ">>}",
- [[\special{pdf:econtent}]],
- [[\par}\hss}]],
+ "\\expandafter\\newbox\\csname luamplib.patternbox.", cnt, "\\endcsname",
+ "\\global\\setbox\\csname luamplib.patternbox.", cnt, "\\endcsname",
+ "\\hbox{\\unhbox ", boxid, "}\\luamplibatnextshipout{",
+ "\\special{pdf:bcontent}",
+ "\\special{pdf:bxobj ", objname, " ", metric, "}",
+ "\\raise\\dp\\csname luamplib.patternbox.", cnt, "\\endcsname",
+ "\\box\\csname luamplib.patternbox.", cnt, "\\endcsname",
+ "\\special{pdf:put @resources <<", optres, ">>}",
+ "\\special{pdf:exobj <<", tableconcat(attr), ">>}",
+ "\\special{pdf:econtent}}",
}
- patterns[#patterns+1] = objname
- patterns[name] = { id = #patterns, colored = opts.colored }
+ patterns[cnt] = objname
+ patterns[name] = { id = cnt, colored = opts.colored }
end
end
local function pattern_colorspace (cs)
local on, new = update_pdfobjs(format("[/Pattern %s]", cs))
if new then
- local key = format("MPlibCS%i",on)
- local val = pdfmode and format("%i 0 R",on) or format("@mplibpdfobj%i",on)
+ local key, val = format("MPlibCS%i",on), format(pdfetcs.resfmt,on)
if pdfmanagement then
texsprint {
"\\csname pdfmanagement_add:nnn\\endcsname{Page/Resources/ColorSpace}{", key, "}{", val, "}"
@@ -2145,21 +2115,17 @@ local function pattern_colorspace (cs)
local res = format("/%s %s", key, val)
if is_defined(pdfetcs.pgfcolorspace) then
texsprint { "\\csname ", pdfetcs.pgfcolorspace, "\\endcsname{", res, "}" }
- elseif pdfmode then
- pdfetcs.fallback_update_resources("ColorSpace", res)
else
- texsprint { "\\special{pdf:put @MPlibCS<<", res, ">>}" }
+ pdfetcs.fallback_update_resources("ColorSpace",res,"@MPlibCS")
end
end
end
- if not pdfmode and not pdfmanagement and not is_defined(pdfetcs.pgfcolorspace) then
- texsprint"\\special{pdf:put @resources <</ColorSpace @MPlibCS>>}"
- end
return on
end
local function do_preobj_PAT(object, prescript)
local name = prescript and prescript.mplibpattern
if not name then return end
+ local patterns = pdfetcs.patterns
local patt = patterns[name]
local index = patt and patt.id or err("cannot get pattern object '%s'", name)
local key = format("MPlibPt%s",index)
@@ -2199,19 +2165,312 @@ local function do_preobj_PAT(object, prescript)
local res = format("/%s %s", key, val)
if is_defined(pdfetcs.pgfpattern) then
texsprint { "\\csname ", pdfetcs.pgfpattern, "\\endcsname{", res, "}" }
- elseif pdfmode then
- pdfetcs.fallback_update_resources("Pattern", res)
else
- texsprint { "\\special{pdf:put @MPlibPt<<", res, ">>}" }
+ pdfetcs.fallback_update_resources("Pattern",res,"@MPlibPt")
end
end
end
- if not pdfmode and not pdfmanagement and not is_defined(pdfetcs.pgfpattern) then
- texsprint"\\special{pdf:put @resources <</Pattern @MPlibPt>>}"
- end
patt.done = true
end
+pdfetcs.fading = { }
+local function do_preobj_FADE (object, prescript)
+ local fd_type = prescript and prescript.mplibfadetype
+ local fd_stop = prescript and prescript.mplibfadestate
+ if not fd_type then
+ return fd_stop -- returns "stop" (if picture) or nil
+ end
+ local bbox = prescript.mplibfadebbox:explode":"
+ local dx, dy = -bbox[1], -bbox[2]
+ local vec = prescript.mplibfadevector; vec = vec and vec:explode":"
+ if not vec then
+ if fd_type == "linear" then
+ vec = {bbox[1], bbox[2], bbox[3], bbox[2]} -- left to right
+ else
+ local centerx, centery = (bbox[1]+bbox[3])/2, (bbox[2]+bbox[4])/2
+ vec = {centerx, centery, centerx, centery} -- center for both circles
+ end
+ end
+ local coords = { vec[1]+dx, vec[2]+dy, vec[3]+dx, vec[4]+dy }
+ if fd_type == "linear" then
+ coords = format("%f %f %f %f", tableunpack(coords))
+ elseif fd_type == "circular" then
+ local width, height = bbox[3]-bbox[1], bbox[4]-bbox[2]
+ local radius = (prescript.mplibfaderadius or "0:"..math.sqrt(width^2+height^2)/2):explode":"
+ tableinsert(coords, 3, radius[1])
+ tableinsert(coords, radius[2])
+ coords = format("%f %f %f %f %f %f", tableunpack(coords))
+ else
+ err("unknown fading method '%s'", fd_type)
+ end
+ fd_type = fd_type == "linear" and 2 or 3
+ local opaq = (prescript.mplibfadeopacity or "1:0"):explode":"
+ local on, os, new
+ on = sh_pdfpageresources(fd_type, "0 1", "/DeviceGray", {{opaq[1]}}, {{opaq[2]}}, coords, 1)
+ os = format("<</PatternType 2/Shading %s>>", format(pdfetcs.resfmt, on))
+ on = update_pdfobjs(os)
+ bbox = format("0 0 %f %f", bbox[3]+dx, bbox[4]+dy)
+ local streamtext = format("q /Pattern cs/MPlibFd%s scn %s re f Q", on, bbox)
+ :gsub(decimals,rmzeros)
+ os = format("<</Pattern<</MPlibFd%s %s>>>>", on, format(pdfetcs.resfmt, on))
+ on = update_pdfobjs(os)
+ local resources = format(pdfetcs.resfmt, on)
+ on = update_pdfobjs"<</S/Transparency/CS/DeviceGray>>"
+ local attr = tableconcat{
+ "/Subtype/Form",
+ "/BBox[", bbox, "]",
+ "/Matrix[1 0 0 1 ", format("%f %f", -dx,-dy), "]",
+ "/Resources ", resources,
+ "/Group ", format(pdfetcs.resfmt, on),
+ } :gsub(decimals,rmzeros)
+ on = update_pdfobjs(attr, streamtext)
+ os = "<</SMask<</S/Luminosity/G " .. format(pdfetcs.resfmt, on) .. ">>>>"
+ on, new = update_pdfobjs(os)
+ local key = add_extgs_resources(on,new)
+ start_pdf_code()
+ pdf_literalcode("/%s gs", key)
+ if fd_stop then return "standalone" end
+ return "start"
+end
+
+pdfetcs.tr_group = { shifts = { } }
+luamplib.trgroupshifts = pdfetcs.tr_group.shifts
+local function do_preobj_GRP (object, prescript)
+ local grstate = prescript and prescript.gr_state
+ if not grstate then return end
+ local trgroup = pdfetcs.tr_group
+ if grstate == "start" then
+ trgroup.name = prescript.mplibgroupname or "lastmplibgroup"
+ trgroup.isolated, trgroup.knockout = false, false
+ for _,v in ipairs(prescript.gr_type:explode",+") do
+ trgroup[v] = true
+ end
+ trgroup.bbox = prescript.mplibgroupbbox:explode":"
+ put2output[[\begingroup\setbox\mplibscratchbox\hbox\bgroup]]
+ elseif grstate == "stop" then
+ local llx,lly,urx,ury = tableunpack(trgroup.bbox)
+ put2output(tableconcat{
+ "\\egroup",
+ format("\\wd\\mplibscratchbox %fbp", urx-llx),
+ format("\\ht\\mplibscratchbox %fbp", ury-lly),
+ "\\dp\\mplibscratchbox 0pt",
+ })
+ local grattr = format("/Group<</S/Transparency/I %s/K %s>>",trgroup.isolated,trgroup.knockout)
+ local res = gather_resources()
+ local bbox = format("%f %f %f %f", llx,lly,urx,ury) :gsub(decimals,rmzeros)
+ if pdfmode then
+ put2output(tableconcat{
+ "\\saveboxresource type 2 attr{/Type/XObject/Subtype/Form/FormType 1",
+ "/BBox[", bbox, "]", grattr, "} resources{", res, "}\\mplibscratchbox",
+ [[\setbox\mplibscratchbox\hbox{\useboxresource\lastsavedboxresourceindex}]],
+ [[\wd\mplibscratchbox 0pt\ht\mplibscratchbox 0pt\dp\mplibscratchbox 0pt]],
+ [[\box\mplibscratchbox\endgroup]],
+ "\\expandafter\\xdef\\csname luamplib.group.", trgroup.name, "\\endcsname{",
+ "\\noexpand\\mplibstarttoPDF{",llx,"}{",lly,"}{",urx,"}{",ury,"}",
+ "\\useboxresource \\the\\lastsavedboxresourceindex\\noexpand\\mplibstoptoPDF}",
+ })
+ else
+ trgroup.cnt = (trgroup.cnt or 0) + 1
+ local objname = format("@mplibtrgr%s", trgroup.cnt)
+ put2output(tableconcat{
+ "\\special{pdf:bxobj ", objname, " bbox ", bbox, "}",
+ "\\unhbox\\mplibscratchbox",
+ "\\special{pdf:put @resources <<", res, ">>}",
+ "\\special{pdf:exobj <<", grattr, ">>}",
+ "\\special{pdf:uxobj ", objname, "}\\endgroup",
+ })
+ token.set_macro("luamplib.group."..trgroup.name, tableconcat{
+ "\\mplibstarttoPDF{",llx,"}{",lly,"}{",urx,"}{",ury,"}",
+ "\\special{pdf:uxobj ", objname, "}\\mplibstoptoPDF",
+ }, "global")
+ end
+ trgroup.shifts[trgroup.name] = { llx, lly }
+ end
+ return grstate
+end
+function luamplib.registergroup (boxid, name, opts)
+ local box = texgetbox(boxid)
+ local wd, ht, dp = node.getwhd(box)
+ local res = (opts.resources or "") .. gather_resources()
+ local attr = { "/Type/XObject/Subtype/Form/FormType 1" }
+ if type(opts.matrix) == "table" then opts.matrix = tableconcat(opts.matrix," ") end
+ if type(opts.bbox) == "table" then opts.bbox = tableconcat(opts.bbox," ") end
+ if opts.matrix and opts.matrix:find"%a" then
+ local data = format("mplibtransformmatrix(%s);",opts.matrix)
+ process(data,"@mplibtransformmatrix")
+ opts.matrix = format("%f %f %f %f %f %f",tableunpack(luamplib.transformmatrix))
+ end
+ local grtype = 3
+ if opts.bbox then
+ attr[#attr+1] = format("/BBox[%s]", opts.bbox)
+ grtype = 2
+ end
+ if opts.matrix then
+ attr[#attr+1] = format("/Matrix[%s]", opts.matrix)
+ grtype = opts.bbox and 4 or 1
+ end
+ if opts.asgroup then
+ local t = { isolated = false, knockout = false }
+ for _,v in ipairs(opts.asgroup:explode",+") do t[v] = true end
+ attr[#attr+1] = format("/Group<</S/Transparency/I %s/K %s>>", t.isolated, t.knockout)
+ end
+ local trgroup = pdfetcs.tr_group
+ trgroup.shifts[name] = { get_macro'MPllx', get_macro'MPlly' }
+ local whd
+ local tagpdf = is_defined'picture@tag@bbox@attribute'
+ if pdfmode then
+ attr = tableconcat(attr) :gsub(decimals,rmzeros)
+ local index = tex.saveboxresource(boxid, attr, res, true, grtype)
+ token.set_macro("luamplib.group."..name, tableconcat{
+ "\\prependtomplibbox\\hbox\\bgroup",
+ tagpdf and "\\luamplibtaggingbegin\\setbox\\mplibscratchbox\\hbox\\bgroup" or "",
+ "\\useboxresource ", index,
+ tagpdf and "\\egroup\\luamplibtaggingBBox\\unhbox\\mplibscratchbox\\luamplibtaggingend" or "",
+ "\\egroup",
+ }, "global")
+ whd = format("%.3f %.3f 0", wd/factor, (ht+dp)/factor) :gsub(decimals,rmzeros)
+ else
+ trgroup.cnt = (trgroup.cnt or 0) + 1
+ local objname = format("@mplibtrgr%s", trgroup.cnt)
+ texsprint {
+ "\\expandafter\\newbox\\csname luamplib.groupbox.", trgroup.cnt, "\\endcsname",
+ "\\global\\setbox\\csname luamplib.groupbox.", trgroup.cnt, "\\endcsname",
+ "\\hbox{\\unhbox ", boxid, "}\\luamplibatnextshipout{",
+ "\\special{pdf:bcontent}",
+ "\\special{pdf:bxobj ", objname, " width ", wd, "sp height ", ht, "sp depth ", dp, "sp}",
+ "\\unhbox\\csname luamplib.groupbox.", trgroup.cnt, "\\endcsname",
+ "\\special{pdf:put @resources <<", res, ">>}",
+ "\\special{pdf:exobj <<", tableconcat(attr), ">>}",
+ "\\special{pdf:econtent}}",
+ }
+ token.set_macro("luamplib.group."..name, tableconcat{
+ "\\prependtomplibbox\\hbox\\bgroup",
+ tagpdf and "\\luamplibtaggingbegin" or "",
+ "\\setbox\\mplibscratchbox\\hbox{\\special{pdf:uxobj ", objname, "}}",
+ "\\wd\\mplibscratchbox ", wd, "sp",
+ "\\ht\\mplibscratchbox ", ht, "sp",
+ "\\dp\\mplibscratchbox ", dp, "sp",
+ tagpdf and "\\luamplibtaggingBBox" or "",
+ "\\box\\mplibscratchbox",
+ tagpdf and "\\luamplibtaggingend" or "",
+ "\\egroup",
+ }, "global")
+ whd = format("%.3f %.3f %.3f", wd/factor, ht/factor, dp/factor) :gsub(decimals,rmzeros)
+ end
+ info("w/h/d of group '%s': %s", name, whd)
+end
+
+local function stop_special_effects(fade,opaq,over)
+ if fade then -- fading
+ stop_pdf_code()
+ end
+ if opaq then -- opacity
+ pdf_literalcode(opaq)
+ end
+ if over then -- color
+ put2output"\\special{pdf:ec}"
+ end
+end
+
+local function getobjects(result,figure,f)
+ return figure:objects()
+end
+
+function luamplib.convert (result, flusher)
+ luamplib.flush(result, flusher)
+ return true -- done
+end
+
+local function pdf_textfigure(font,size,text,width,height,depth)
+ text = text:gsub(".",function(c)
+ return format("\\hbox{\\char%i}",string.byte(c)) -- kerning happens in metapost : false
+ end)
+ put2output("\\mplibtextext{%s}{%f}{%s}{%s}{%s}",font,size,text,0,0)
+end
+
+local bend_tolerance = 131/65536
+
+local rx, sx, sy, ry, tx, ty, divider = 1, 0, 0, 1, 0, 0, 1
+
+local function pen_characteristics(object)
+ local t = mplib.pen_info(object)
+ rx, ry, sx, sy, tx, ty = t.rx, t.ry, t.sx, t.sy, t.tx, t.ty
+ divider = sx*sy - rx*ry
+ return not (sx==1 and rx==0 and ry==0 and sy==1 and tx==0 and ty==0), t.width
+end
+
+local function concat(px, py) -- no tx, ty here
+ return (sy*px-ry*py)/divider,(sx*py-rx*px)/divider
+end
+
+local function curved(ith,pth)
+ local d = pth.left_x - ith.right_x
+ if abs(ith.right_x - ith.x_coord - d) <= bend_tolerance and abs(pth.x_coord - pth.left_x - d) <= bend_tolerance then
+ d = pth.left_y - ith.right_y
+ if abs(ith.right_y - ith.y_coord - d) <= bend_tolerance and abs(pth.y_coord - pth.left_y - d) <= bend_tolerance then
+ return false
+ end
+ end
+ return true
+end
+
+local function flushnormalpath(path,open)
+ local pth, ith
+ for i=1,#path do
+ pth = path[i]
+ if not ith then
+ pdf_literalcode("%f %f m",pth.x_coord,pth.y_coord)
+ elseif curved(ith,pth) then
+ pdf_literalcode("%f %f %f %f %f %f c",ith.right_x,ith.right_y,pth.left_x,pth.left_y,pth.x_coord,pth.y_coord)
+ else
+ pdf_literalcode("%f %f l",pth.x_coord,pth.y_coord)
+ end
+ ith = pth
+ end
+ if not open then
+ local one = path[1]
+ if curved(pth,one) then
+ pdf_literalcode("%f %f %f %f %f %f c",pth.right_x,pth.right_y,one.left_x,one.left_y,one.x_coord,one.y_coord )
+ else
+ pdf_literalcode("%f %f l",one.x_coord,one.y_coord)
+ end
+ elseif #path == 1 then -- special case .. draw point
+ local one = path[1]
+ pdf_literalcode("%f %f l",one.x_coord,one.y_coord)
+ end
+end
+
+local function flushconcatpath(path,open)
+ pdf_literalcode("%f %f %f %f %f %f cm", sx, rx, ry, sy, tx ,ty)
+ local pth, ith
+ for i=1,#path do
+ pth = path[i]
+ if not ith then
+ pdf_literalcode("%f %f m",concat(pth.x_coord,pth.y_coord))
+ elseif curved(ith,pth) then
+ local a, b = concat(ith.right_x,ith.right_y)
+ local c, d = concat(pth.left_x,pth.left_y)
+ pdf_literalcode("%f %f %f %f %f %f c",a,b,c,d,concat(pth.x_coord, pth.y_coord))
+ else
+ pdf_literalcode("%f %f l",concat(pth.x_coord, pth.y_coord))
+ end
+ ith = pth
+ end
+ if not open then
+ local one = path[1]
+ if curved(pth,one) then
+ local a, b = concat(pth.right_x,pth.right_y)
+ local c, d = concat(one.left_x,one.left_y)
+ pdf_literalcode("%f %f %f %f %f %f c",a,b,c,d,concat(one.x_coord, one.y_coord))
+ else
+ pdf_literalcode("%f %f l",concat(one.x_coord,one.y_coord))
+ end
+ elseif #path == 1 then -- special case .. draw point
+ local one = path[1]
+ pdf_literalcode("%f %f l",concat(one.x_coord,one.y_coord))
+ end
+end
+
function luamplib.flush (result,flusher)
if result then
local figures = result.fig
@@ -2241,6 +2500,9 @@ function luamplib.flush (result,flusher)
prescript = prescript and script2table(prescript) -- prescript is now a table
local cr_over = do_preobj_CR(object,prescript) -- color
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
if prescript and prescript.mplibtexboxid then
put_tex_boxes(object,prescript)
elseif objecttype == "start_bounds" or objecttype == "stop_bounds" then --skip
@@ -2262,7 +2524,7 @@ function luamplib.flush (result,flusher)
pdf_literalcode("%f %f %f %f %f %f cm",ot[3],ot[4],ot[5],ot[6],ot[1],ot[2])
pdf_textfigure(object.font,object.dsize,object.text,object.width,object.height,object.depth)
stop_pdf_code()
- else
+ elseif not trgroup and fading_ ~= "stop" then
local evenodd, collect, both = false, false, false
local postscript = object.postscript
if not object.istext then
@@ -2286,8 +2548,6 @@ function luamplib.flush (result,flusher)
savedhtap[#savedhtap+1] = object.htap or false
end
else
- local shade_no = do_preobj_SH(object,prescript) -- shading
- local pattern_ = do_preobj_PAT(object,prescript) -- pattern
local ml = object.miterlimit
if ml and ml ~= miterlimit then
miterlimit = ml
@@ -2329,6 +2589,11 @@ function luamplib.flush (result,flusher)
objecttype = 'fill'
end
end
+ local shade_no = do_preobj_SH(object,prescript) -- shading
+ if shade_no then
+ pdf_literalcode"q /Pattern cs"
+ objecttype = false
+ end
if transformed then
start_pdf_code()
end
@@ -2349,18 +2614,16 @@ function luamplib.flush (result,flusher)
else
flushnormalpath(path,open)
end
- if not shade_no then -- conflict with shading
- if objecttype == "fill" then
- pdf_literalcode(evenodd and "h f*" or "h f")
- elseif objecttype == "outline" then
- if both then
- pdf_literalcode(evenodd and "h B*" or "h B")
- else
- pdf_literalcode(open and "S" or "h S")
- end
- elseif objecttype == "both" then
+ if objecttype == "fill" then
+ pdf_literalcode(evenodd and "h f*" or "h f")
+ elseif objecttype == "outline" then
+ if both then
pdf_literalcode(evenodd and "h B*" or "h B")
+ else
+ pdf_literalcode(open and "S" or "h S")
end
+ elseif objecttype == "both" then
+ pdf_literalcode(evenodd and "h B*" or "h B")
end
end
if transformed then
@@ -2400,15 +2663,25 @@ function luamplib.flush (result,flusher)
end
end
if shade_no then -- shading
- pdf_literalcode("W n /MPlibSh%s sh Q",shade_no)
+ pdf_literalcode("W%s n /MPlibSh%s sh Q",evenodd and "*" or "",shade_no)
end
end
end
- if tr_opaq then -- opacity
- stop_pdf_code()
+ if fading_ == "start" then
+ pdfetcs.fading.specialeffects = {fading_, tr_opaq, cr_over}
+ elseif trgroup == "start" then
+ pdfetcs.tr_group.specialeffects = {fading_, tr_opaq, cr_over}
+ elseif fading_ == "stop" then
+ local se = pdfetcs.fading.specialeffects
+ if se then stop_special_effects(se[1], se[2], se[3]) end
+ elseif trgroup == "stop" then
+ local se = pdfetcs.tr_group.specialeffects
+ if se then stop_special_effects(se[1], se[2], se[3]) end
+ else
+ stop_special_effects(fading_, tr_opaq, cr_over)
end
- if cr_over then -- color
- put2output"\\special{pdf:ec}"
+ if fading_ or trgroup then -- extgs resetted
+ miterlimit, linecap, linejoin, dashed = -1, -1, -1, false
end
end
end
diff --git a/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty b/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty
index 3d20838d3f0..c2360113b94 100644
--- a/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty
+++ b/Master/texmf-dist/tex/luatex/luamplib/luamplib.sty
@@ -8,15 +8,24 @@
%%
%% See source file 'luamplib.dtx' for licencing and contact information.
%%
-\bgroup\expandafter\expandafter\expandafter\egroup
-\expandafter\ifx\csname selectfont\endcsname\relax
- \input ltluatex
-\else
+\ifcsname ProvidesPackage\endcsname
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luamplib}
- [2024/06/21 v2.32.3 mplib package for LuaTeX]
- \ifx\newluafunction\@undefined
+ [2024/11/12 v2.35.0 mplib package for LuaTeX]
+\fi
+\ifdefined\newluafunction\else
\input ltluatex
+\fi
+\ifnum\outputmode=0
+ \ifdefined\AddToHookNext
+ \def\luamplibatnextshipout{\AddToHookNext{shipout/background}}
+ \def\luamplibatfirstshipout{\AddToHook{shipout/firstpage}}
+ \def\luamplibateveryshipout{\AddToHook{shipout/background}}
+ \else
+ \input atbegshi.sty
+ \def\luamplibatnextshipout#1{\AtBeginShipoutNext{\AtBeginShipoutAddToBox{#1}}}
+ \let\luamplibatfirstshipout\AtBeginShipoutFirst
+ \def\luamplibateveryshipout#1{\AtBeginShipout{\AtBeginShipoutAddToBox{#1}}}
\fi
\fi
\directlua{require("luamplib")}
@@ -46,6 +55,36 @@
\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#{\usemplibgroupmain}
+\def\usemplibgroupmain#1{\csname luamplib.group.#1\endcsname}
+\protected\def\mplibgroup#1{%
+ \begingroup
+ \def\MPllx{0}\def\MPlly{0}%
+ \def\mplibgroupname{#1}%
+ \mplibgroupgetnexttok
+}
+\def\mplibgroupgetnexttok{\futurelet\nexttok\mplibgroupbranch}
+\def\mplibgroupskipspace{\afterassignment\mplibgroupgetnexttok\let\nexttok= }
+\def\mplibgroupbranch{%
+ \ifx [\nexttok
+ \expandafter\mplibgroupopts
+ \else
+ \ifx\mplibsptoken\nexttok
+ \expandafter\expandafter\expandafter\mplibgroupskipspace
+ \else
+ \let\mplibgroupoptions\empty
+ \expandafter\expandafter\expandafter\mplibgroupmain
+ \fi
+ \fi
+}
+\def\mplibgroupopts[#1]{\def\mplibgroupoptions{#1}\mplibgroupmain}
+\def\mplibgroupmain{\setbox\mplibscratchbox\hbox\bgroup\ignorespaces}
+\protected\def\endmplibgroup{\egroup
+ \directlua{ luamplib.registergroup(
+ \the\mplibscratchbox, '\mplibgroupname', {\mplibgroupoptions}
+ )}%
+ \endgroup
+}
{\def\:{\global\let\mplibsptoken= } \: }
\protected\def\mppattern#1{%
\begingroup
@@ -89,9 +128,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
@@ -100,16 +144,16 @@
\long\def\mplibdomainmpfig#1\endmpfig{%
\endgroup
\directlua{
- local legacy = luamplib.legacy_verbatimtex
+ local legacy = luamplib.legacyverbatimtex
local everympfig = luamplib.everymplib["\mpfiginstancename"] or ""
local everyendmpfig = luamplib.everyendmplib["\mpfiginstancename"] or ""
- luamplib.legacy_verbatimtex = false
+ luamplib.legacyverbatimtex = false
luamplib.everymplib["\mpfiginstancename"] = ""
luamplib.everyendmplib["\mpfiginstancename"] = ""
luamplib.process_mplibcode(
"beginfig(0) "..everympfig.." "..[===[\unexpanded{#1}]===].." "..everyendmpfig.." endfig;",
"\mpfiginstancename")
- luamplib.legacy_verbatimtex = legacy
+ luamplib.legacyverbatimtex = legacy
luamplib.everymplib["\mpfiginstancename"] = everympfig
luamplib.everyendmplib["\mpfiginstancename"] = everyendmpfig
}%
@@ -123,14 +167,14 @@
\long\def\mplibdoprempfig#1\endmpfig{%
\endgroup
\directlua{
- local legacy = luamplib.legacy_verbatimtex
+ local legacy = luamplib.legacyverbatimtex
local everympfig = luamplib.everymplib["\mpfiginstancename"]
local everyendmpfig = luamplib.everyendmplib["\mpfiginstancename"]
- luamplib.legacy_verbatimtex = false
+ luamplib.legacyverbatimtex = false
luamplib.everymplib["\mpfiginstancename"] = ""
luamplib.everyendmplib["\mpfiginstancename"] = ""
luamplib.process_mplibcode([===[\unexpanded{#1}]===],"\mpfiginstancename")
- luamplib.legacy_verbatimtex = legacy
+ luamplib.legacyverbatimtex = legacy
luamplib.everymplib["\mpfiginstancename"] = everympfig
luamplib.everyendmplib["\mpfiginstancename"] = everyendmpfig
}%
@@ -197,9 +241,9 @@
\def\mpliblegacybehavior#1{\directlua{
local s = string.lower("#1")
if s == "enable" or s == "true" or s == "yes" then
- luamplib.legacy_verbatimtex = true
+ luamplib.legacyverbatimtex = true
else
- luamplib.legacy_verbatimtex = false
+ luamplib.legacyverbatimtex = false
end
}}
\def\mplibverbatim#1{\directlua{
@@ -371,6 +415,339 @@
\closein0
\input luamplib.cfg
\fi
+\def\luamplibtagtextbegin#1{}
+\let\luamplibtagtextend\relax
+\ifcsname SuspendTagging\endcsname\else\endinput\fi
+\ifcsname picture@tag@bbox@attribute\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:nn{luamplib/notag}{#1}
+ \mplibtmptoks{}\ltxdomplibcode
+ }
+ \ExplSyntaxOff
+ \let\mplibalttext \luamplibtagtextbegin
+ \let\mplibactualtext \mplibalttext
+ \endinput\fi
+\let\mplibstarttoPDForiginal\mplibstarttoPDF
+\let\mplibstoptoPDForiginal\mplibstoptoPDF
+\let\mplibputtextboxoriginal\mplibputtextbox
+\ExplSyntaxOn
+\tl_new:N \l__tag_luamplib_alt_tl
+\tl_new:N \l__tag_luamplib_alt_dflt_tl
+\tl_set:Nn\l__tag_luamplib_alt_dflt_tl {metapost~figure}
+\tl_new:N \l__tag_luamplib_actual_tl
+\tl_new:N \l__tag_luamplib_struct_tl
+\tl_set:Nn\l__tag_luamplib_struct_tl {Figure}
+\bool_new:N \l__tag_luamplib_usetext_bool
+\bool_set_false:N \l__tag_luamplib_usetext_bool
+\cs_set_nopar:Npn \luamplibtagtextbegin #1
+{
+ \bool_if:NTF \l__tag_luamplib_usetext_bool
+ {
+ \tag_mc_end_push:
+ \tag_struct_begin:n{tag=NonStruct,stash}
+ \tag_if_active:T {
+ \expandafter\xdef\csname luamplib.tagbox.#1\endcsname{\tag_get:n{struct_num}}
+ }
+ \tag_mc_begin:n{}
+ }
+ {
+ \tag_if_active:TF
+ { \chardef\mplibtmpnum\@ne }
+ { \chardef\mplibtmpnum\z@ }
+ \SuspendTagging{luamplib.textext}
+ }
+}
+\cs_set_nopar:Npn \luamplibtagtextend
+{
+ \bool_if:NTF \l__tag_luamplib_usetext_bool
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ \tag_mc_begin_pop:n{}
+ }
+ {
+ \ifnum\mplibtmpnum=\@ne
+ \ResumeTagging{luamplib.textext}
+ \fi
+ }
+}
+\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__tag_luamplib_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\hss
+ }
+ {
+ \msg_warning:nnn{luamplib}{figure-text-reuse}{#1}
+ \tag_mc_begin:n{}
+ \chardef\mplibtmpnum=#1\relax
+ \tag_mc_reset_box:N \mplibtmpnum
+ \raise\dp#1\copy#1\hss
+ \tag_mc_end:
+ }
+ \tag_mc_begin:n{artifact}
+ }
+ {
+ \chardef\mplibtmpnum=#1\relax
+ \tag_mc_reset_box:N \mplibtmpnum
+ \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__tag_luamplib_alt_tl
+ {
+ \msg_warning:nne{luamplib}{alt-text-missing}{\l__tag_luamplib_alt_dflt_tl}
+ \tl_set:Ne\l__tag_luamplib_alt_tl {\l__tag_luamplib_alt_dflt_tl}
+ }
+ \tag_struct_begin:n
+ {
+ tag=\l__tag_luamplib_struct_tl,
+ alt=\l__tag_luamplib_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__tag_luamplib_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 =
+ {
+ \bool_set_true:N \l__tag_graphic_BBox_bool
+ \bool_set_false:N \l__tag_luamplib_usetext_bool
+ \tl_set:Ne\l__tag_luamplib_alt_tl{\text_purify:n{#1}}
+ }
+ ,actualtext .code:n =
+ {
+ \bool_set_false:N \l__tag_graphic_BBox_bool
+ \bool_set_false:N \l__tag_luamplib_usetext_bool
+ \tl_set:Ne\l__tag_luamplib_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__tag_graphic_BBox_bool
+ \bool_set_false:N \l__tag_luamplib_usetext_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__tag_graphic_BBox_bool
+ \bool_set_true:N \l__tag_luamplib_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}
+ }
+ ,correct-BBox .code:n =
+ {
+ \bool_set_true:N \l__tag_graphic_bboxcorr_bool
+ \seq_set_split:Nnn\l__tag_graphic_bboxcorr_seq{~}{#1~0pt~0pt~0pt~0pt}
+ }
+ ,tag .code:n =
+ {
+ \str_case:nnF {#1}
+ {
+ {artifact}
+ {
+ \bool_set_false:N \l__tag_graphic_BBox_bool
+ \bool_set_false:N \l__tag_luamplib_usetext_bool
+ \cs_set_eq:NN \luamplibtaggingbegin \__luamplib_tagging_begin_artifact:
+ \cs_set_eq:NN \luamplibtaggingend \__luamplib_tagging_end_artifact:
+ }
+ {text}
+ {
+ \bool_set_false:N \l__tag_graphic_BBox_bool
+ \bool_set_true:N \l__tag_luamplib_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__tag_luamplib_struct_tl{#1}
+ }
+ }
+ ,debug .code:n =
+ { \bool_set_true:N \l__tag_graphic_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
+{
+ \let\@picbox\mplibscratchbox \picture@tag@bbox@attribute
+}
+\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:nn{luamplib/tag}{#1}
+ \tl_if_empty:NF \currentmpinstancename
+ { \tl_set:Nn\l__tag_luamplib_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:nn{luamplib/tag}{#2}
+ \tl_if_empty:NF \mpfiginstancename
+ { \tl_set:Nn\l__tag_luamplib_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:nn{luamplib/tag}{#1}
+ \tl_set:Nn\l__tag_luamplib_alt_dflt_tl {metapost~figure~#2}
+ \csname luamplib.group.#2\endcsname
+ \endgroup
+ }
+\cs_new_nopar:Npn \mplibalttext #1
+{
+ \tl_set:Ne \l__tag_luamplib_alt_tl {\text_purify:n{#1}}
+}
+\cs_new_nopar:Npn \mplibactualtext #1
+{
+ \tl_set:Ne \l__tag_luamplib_actual_tl {\text_purify:n{#1}}
+}
+\ExplSyntaxOff
\endinput
%%
%% End of file `luamplib.sty'.
diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-27c.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-27c.sty
index 76ebf8716c8..6ef3ff1751e 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-27c.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-27c.sty
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-fontspec-27c}[2024-02-19 fontspec support of LuaTeX-ja]
+\ProvidesPackage{luatexja-fontspec-27c}[2024-05-27 fontspec support of LuaTeX-ja]
\RequirePackage{l3keys2e}
\ExplSyntaxOn
@@ -359,10 +359,24 @@
\setfontfamily #1 [#2,#4] {#3}
\cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn
}
+\DeclareDocumentCommand \providejfontfamily { m O{} m O{} } {
+ \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_fontspec_set_family:Nnn
+ \providefontfamily #1 [#2,#4] {#3}
+ \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn
+}
\DeclareDocumentCommand \newjfontface { m O{} m O{} } {
\newjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
}
+\DeclareDocumentCommand \renewjfontface { m O{} m O{} } {
+ \renewjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
+}
+\DeclareDocumentCommand \setjfontface { m O{} m O{} } {
+ \setjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
+}
+\DeclareDocumentCommand \providejfontface { m O{} m O{} } {
+ \providejfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
+}
\prop_new:N \l__ltj_fontspec_tmp_prop
\prop_new:N \g__ltj_fontspec_fontopts_prop
diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29c.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29c.sty
index 1415cee1274..51af33447ce 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29c.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29c.sty
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-fontspec-29c}[2024-05-05 fontspec support of LuaTeX-ja]
+\ProvidesPackage{luatexja-fontspec-29c}[2024-05-27 fontspec support of LuaTeX-ja]
\RequirePackage{l3keys2e}
\ExplSyntaxOn
@@ -359,10 +359,24 @@
\setfontfamily #1 [#2,#4] {#3}
\cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn
}
+\DeclareDocumentCommand \providejfontfamily { m O{} m O{} } {
+ \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_fontspec_set_family:Nnn
+ \providefontfamily #1 [#2,#4] {#3}
+ \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn
+}
\DeclareDocumentCommand \newjfontface { m O{} m O{} } {
\newjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
}
+\DeclareDocumentCommand \renewjfontface { m O{} m O{} } {
+ \renewjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
+}
+\DeclareDocumentCommand \setjfontface { m O{} m O{} } {
+ \setjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
+}
+\DeclareDocumentCommand \providejfontface { m O{} m O{} } {
+ \providejfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
+}
\prop_new:N \l__ltj_fontspec_tmp_prop
\prop_new:N \g__ltj_fontspec_fontopts_prop
diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29e.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29e.sty
index e763d91ad7d..02a79ad6ca2 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29e.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-fontspec-29e.sty
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-fontspec-29e}[2024-05-14 fontspec support of LuaTeX-ja]
+\ProvidesPackage{luatexja-fontspec-29e}[2024-05-27 fontspec support of LuaTeX-ja]
\RequirePackage{l3keys2e}
\ExplSyntaxOn
@@ -359,10 +359,24 @@
\setfontfamily #1 [#2,#4] {#3}
\cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn
}
+\DeclareDocumentCommand \providejfontfamily { m O{} m O{} } {
+ \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_fontspec_set_family:Nnn
+ \providefontfamily #1 [#2,#4] {#3}
+ \cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_orig_fontspec_set_family:Nnn
+}
\DeclareDocumentCommand \newjfontface { m O{} m O{} } {
\newjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
}
+\DeclareDocumentCommand \renewjfontface { m O{} m O{} } {
+ \renewjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
+}
+\DeclareDocumentCommand \setjfontface { m O{} m O{} } {
+ \setjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
+}
+\DeclareDocumentCommand \providejfontface { m O{} m O{} } {
+ \providejfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
+}
\prop_new:N \l__ltj_fontspec_tmp_prop
\prop_new:N \g__ltj_fontspec_fontopts_prop
diff --git a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-ruby.sty b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-ruby.sty
index d0d8e5488dd..4c64b27d149 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-ruby.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/addons/luatexja-ruby.sty
@@ -4,7 +4,7 @@
% LaTeX only!
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-ruby}[2023-10-08 v0.62]
+\ProvidesPackage{luatexja-ruby}[2024-09-09 v0.7]
\RequirePackage{luatexja}
%%------------------
@@ -18,9 +18,9 @@
%% 引数:ルビ全角を単位とした実数
%% この文字への pre-, post-intrusion の許容量
\define@key[ltj]{japaram}{rubypreintrusion}{%
- \ltj@@set@stack@real{RIPRE}{-0x7FFFFFFF}{0x7FFFFFFF}#1 }
+ \ltj@@set@stack@real{RIPRE}{-0x7FFFFFFF}{0x7FFFFFFF}#1\relax}
\define@key[ltj]{japaram}{rubypostintrusion}{%
- \ltj@@set@stack@real{RIPOST}{-0x7FFFFFFF}{0x7FFFFFFF}#1 }
+ \ltj@@set@stack@real{RIPOST}{-0x7FFFFFFF}{0x7FFFFFFF}#1\relax}
\def\ltj@@set@stack@real#1#2#3{%
\directlua{luatexja.stack.set_stack_perchar(luatexja.stack_table_index.#1,
#2, #3, token.scan_word)}}
@@ -29,7 +29,6 @@
\def\ltj@@rkeydef#1{
\define@key[ltj]{ruby}{#1}{\expandafter\def\csname ltj@@rubyip@#1\endcsname{##1}}
}
-%% attr_ruby_mode
%% bit 0: intrusion を有効にするか(1: 有効)
%% bit 1: 前後の intrusion 許容量を小さい方に揃える (1: yes)
%% bit 2--4: intrusion をどう使って親文字を配置するか
@@ -42,10 +41,10 @@
%% ※ 01--100 で,intrusion で賄えきれなかった場合はいつものように伸長する.
%% bit 5: 熟語ルビの際の処理方法(0: 常にグループ,1: 可能な限りブロックごとに)
%% ↑bit 5 は今は無効
+%% bit 6: 突出部分について lua-ul 有効範囲から除外する処理するか
\ltj@@rkeydef{mode}
%% intrusion 量強制固定(bit 0, bit 1 より優先,負数で「自動」)
%% attr は sp 単位だが,ユーザーはルビ全角単位で指定する
-%% attr_ruby_maxprep, attr_ruby_maxpostp
\ltj@@rkeydef{pre}
\ltj@@rkeydef{post}
%% 親文字伸長の際の比,{0}{1}{1} などと0--7 の数 3 つで指定
@@ -54,14 +53,11 @@
\ltj@@rkeydef{stretcheol} % 行末形
\ltj@@rkeydef{stretch} % 行中形
%% ルビが伸長するときの比 {1}{2}{1} などと0--7 の数 3 つで指定
-%% attr_ruby_mode 上位部分
\ltj@@rkeydef{stretchruby}
%% ルビ<親のとき,ルビと親文字の端の最大値
-%% attr_ruby_maxmargin
%% attr は sp 単位だが,ユーザーは親文字全角単位で指定
\ltj@@rkeydef{maxmargin}
%% ルビと親文字の垂直方向の空き
-%% attr_ruby_intergap
%% attr は sp 単位だが,ユーザーは親文字全角単位で指定
\ltj@@rkeydef{intergap}
@@ -92,6 +88,7 @@
\define@boolkey[ltj]{ruby}{intrude_xkanjiskip}[true]{}
\define@boolkey[ltj]{ruby}{intrude_kanjiskip}[true]{}
+\define@boolkey[ltj]{ruby}{always_highlight_protrusion}[true]{}
%%%%%%%% setkeys の別名
\protected\def\ltjsetruby{\setkeys[ltj]{ruby}}
@@ -141,7 +138,8 @@
[luatexja.icflag_table.XKANJI_SKIP]=true,
[luatexja.icflag_table.XKANJI_SKIP_JFM]=true,
\fi
- \string}
+ \string},
+ quirk_protrusion = \ifltj@ruby@always_highlight_protrusion false \else true \fi
\string}
}
\egroup
@@ -264,7 +262,7 @@
kenten=\textbullet, fontcmd=\relax, ybaseheight=0.88, tbaseheight=0.5,
yrubydepth=0.12, trubydepth=0.5,
intrude_jfmgk, intrude_kanjiskip, intrude_xkanjiskip,
- epsilon=0.0001,
+ epsilon=0.0001, always_highlight_protrusion=false,
}
\endinput
diff --git a/Master/texmf-dist/tex/luatex/luatexja/lltjext.sty b/Master/texmf-dist/tex/luatex/luatexja/lltjext.sty
index a83c9305c93..aebdc3987c5 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/lltjext.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/lltjext.sty
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjext}[2022-08-24 v1.2k-ltj-14 Macros for vertical writing]
+\ProvidesPackage{lltjext}[2024-07-23 v1.2k-ltj-16 Macros for vertical writing]
\RequirePackage{luatexja}
\newcount\ltj@ext@dir
\let\ltj@lltjext@orig@tabular=\tabular
@@ -27,7 +27,7 @@
\def\p@stabular<#1>#2{%
\setlength\dimen@{#2}%
\edef\@halignto{to\the\dimen@}\p@tabular<#1>}
-\def\p@tabular<#1>{\leavevmode \hbox \bgroup
+\def\p@tabular<#1>{\leavevmode\null \hbox \bgroup % fixed for unwanted xkanjiskip
\ltj@ext@dir=\ltjgetparameter{direction}\relax
$\let\@acol\@tabacol
\let\@classz\@tabclassz
@@ -78,7 +78,7 @@
\ifhmode \@preamerr\z@ \@@par\fi
\@preamble}
\def\endarray{\crcr\egroup\egroup\@end@alignbox}
-\def\endtabular{\endarray$\egroup}
+\def\endtabular{\endarray$\egroup\null}
\expandafter \let \csname endtabular*\endcsname = \endtabular
% ↓中身\周囲→ yoko tate utod dtou
% yoko A* B* B B
@@ -541,17 +541,11 @@
\else \let\box@dir\utod
\fi
\fi
-\ifltj@ltfilehook@avail % LaTeX2e >= 2020-10-01
\@defaultunitsset\@picht{#3}\unitlength
\@defaultunitsset\@picwd{#2}\unitlength
\setbox\@picbox\hbox to\@picwd\bgroup\box@dir
\@defaultunitsset\@tempdimc{#4}\unitlength\hskip-\@tempdimc
\@defaultunitsset\@tempdimc{#5}\unitlength\lower\@tempdimc\hbox\bgroup
-\else % <= 2020-02-02
- \@picwd=#2\unitlength \@picht=#3\unitlength
- \setbox\@picbox\hbox to\@picwd\bgroup\box@dir
- \hskip-#4\unitlength\lower#5\unitlength\hbox\bgroup
-\fi
\ltj@@pic@reset@blshift
\ignorespaces}
\def\endpicture{%
@@ -675,6 +669,7 @@
%% Compatibility with array package
+\ExplSyntaxOn
\def\ltj@lltjext@patch@array{%
\patchcmd{\@tabular}{\hbox\bgroup}{%
\hbox\bgroup\ltj@ext@dir=\ltjgetparameter{direction}\relax}{}{}
@@ -682,10 +677,6 @@
{\ltj@ext@dir=\ltjgetparameter{direction}\relax}{}{}
\expandafter\let\csname tabular*\endcsname=\ltj@lltjext@orig@tabularS
\patchcmd{\p@stabular}{\p@tabular}{\@tabular}{}{}
- \@ifpackagelater{array}{2018/09/13}
- {\expandafter\@firstoftwo}
- {\expandafter\@secondoftwo}
- {% = for 2018/09/13 v2.4i or newer
\def\@startpbox##1{\bgroup
\color@begingroup
\box@dir\adjustbaseline%%% これを追加
@@ -694,16 +685,8 @@
\vrule \@height \ltjgetht\@arstrutbox \@width \z@
\everypar{}}%
}%
- }{ % = for 2018/04/30 v2.4h or older
- \def\@startpbox##1{\bgroup
- \box@dir\adjustbaseline%%% これを追加
- \setlength\hsize{##1}\@arrayparboxrestore
- \everypar{%
- \vrule \@height \ltjgetht\@arstrutbox \@width \z@
- \everypar{}}%
- }%
- }%
\def\@tabarray{\@ifnextchar<\p@tabarray{\p@tabarray<Z>}}
+\ifcsname tbl_save_outer_table_cols:\endcsname %%%%%% >=2024-06-01
\def\p@array<##1>[##2]##3{%
\ifnum\ltj@ext@dir=0 \ltj@ext@dir=\ltjgetparameter{direction}\relax\fi
\let\box@dir\relax
@@ -736,20 +719,98 @@
\@depth \arraystretch \ltjgetdp \@tempcnta
\@width \z@}%
\fork@array@option<##1>[##2]%
+ \tbl_save_outer_table_cols:
\begingroup
\@mkpream{##3}%
- \xdef\@preamble{\noexpand\ialign \noexpand \@halignto
- \bgroup \tabskip \z@skip \@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
- \@begin@alignbox\bgroup\box@dir\adjustbaseline
- \let\par\@empty
- \let\@sharp####\let\protect\relax
- \let\\\@arraycr\let\tabularnewline\\\let\par\@empty
- \lineskip\z@skip\baselineskip\z@skip\@preamble}
- \def\endarray{\crcr\egroup\egroup\@end@alignbox\@arrayright}
+ \@begin@alignbox
+ \bgroup
+ \box@dir\adjustbaseline
+ \let\@sharp####\let\protect\relax
+ \lineskip \z@
+ \baselineskip \z@
+ \mathsurround \z@
+ \let\\\@arraycr \let\tabularnewline\\\let\par\@empty
+ \UseTaggingSocket{tbl/init}
+ \@preamble
+ }
+ \def\endtabular{\endarray$\egroup
+ \UseTaggingSocket {tbl/hmode/end}\null}
+ \def\endarray{
+ \tbl_crcr:n{endarray} \egroup
+ \UseTaggingSocket{tbl/finalize}
+ \tbl_restore_outer_cell_data:
+ \egroup\@end@alignbox
+ \@arrayright \gdef\@preamble{}%
+ }
+\else %%%%%% <2024-06-01
+ \def\p@array<##1>[##2]##3{%
+ \ifnum\ltj@ext@dir=0 \ltj@ext@dir=\ltjgetparameter{direction}\relax\fi
+ \let\box@dir\relax
+ \if ##1z\relax
+ \ifnum\ltj@ext@dir=3\relax
+ \let\box@dir\utod\@tempcnta=\zstrutbox
+ \fi
+ \else
+ \if ##1y\relax
+ \let\box@dir\yoko\@tempcnta=\ystrutbox
+ \else\if ##1t\relax
+ \let\box@dir\tate\@tempcnta=\tstrutbox
+ \else\if ##1d\relax
+ \let\box@dir\dtou\@tempcnta=\dstrutbox
+ \else\if ##1u\relax
+ \let\box@dir\utod\@tempcnta=\zstrutbox
+ \fi\fi\fi\fi
+ \fi
+ \ifx\box@dir\relax
+ \ifcase\ltj@ext@dir
+ \or \let\box@dir\dtou\@tempcnta=\dstrutbox% dtou
+ \or\or\let\box@dir\tate\@tempcnta=\tstrutbox% tate
+ \or \let\box@dir\yoko\@tempcnta=\ystrutbox% yoko
+ \else \let\box@dir\utod\@tempcnta=\zstrutbox% utod
+ \fi
+ \fi
+ \setbox \@arstrutbox \hbox{\box@dir\vrule
+ \@height \arraystretch
+ \dimexpr \ltjgetht\@tempcnta+\extrarowheight\relax
+ \@depth \arraystretch \ltjgetdp \@tempcnta
+ \@width \z@}%
+ \fork@array@option<##1>[##2]%
+ \begingroup
+ \@mkpream{##3}%
+ \xdef\@preamble{\noexpand\ialign \@halignto
+ \bgroup \@arstrut\@preamble \tabskip \z@ \cr}%
+ \endgroup
+ \@arrayleft
+ \@begin@alignbox
+ \bgroup
+ \box@dir\adjustbaseline
+ \let\@sharp####\let\protect\relax
+ \lineskip \z@
+ \baselineskip \z@
+ \m@th
+ \let\\\@arraycr \let\tabularnewline\\\let\par\@empty
+ \@preamble
+ }
+ \def\endtabular{\endarray\m@th$\egroup\null}
+ \def\endarray{
+ \crcr\egroup\egroup\@end@alignbox
+ \@arrayright \gdef\@preamble{}%
+ }
+\fi
+ \expandafter \let \csname endtabular*\endcsname = \endtabular
}
+\ExplSyntaxOff
\@ifpackageloaded{array}{%
\let\tabular=\ltj@lltjext@orig@tabular
\let\array=\ltj@lltjext@orig@array
@@ -760,9 +821,4 @@
\ltj@ExecuteAfterPackage{array}{\ltj@lltjext@patch@array}
}
-%%%%%%%%%%%%%%%% LuaTeX-ja original
-
-%%\define@key[ltj]{japaram}{autouprightnum}{% %COUNT
-%% \ltj@@set@stack{AURN}{0}{10000}\z@#1 }
-
\endinput
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-ivd_aj1.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua
index de18150d793..bb265c7e548 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-ivd_aj1.lua
@@ -6,6 +6,9 @@ table_ivd_aj1 = {
-- #
-- # History:
-- #
+-- # 2022-09-13 Registration of additional sequences in the Adobe-Japan1
+-- # collection.
+-- #
-- # 2020-11-06 Registration of additional sequences in the MSARG
-- # collection.
-- #
@@ -36,7 +39,7 @@ table_ivd_aj1 = {
-- # For more details on the IVD, see UTS #37:
-- # https://www.unicode.org/reports/tr37/
-- #
--- # Copyright 2006-2020 Unicode, Inc.
+-- # Copyright 2006-2022 Unicode, Inc.
-- # For terms of use, see: https://www.unicode.org/copyright.html#8
-- #
-- # EOF
@@ -1952,7 +1955,7 @@ table_ivd_aj1 = {
0x209dbf,0x209db5,0x209db9,0x209dbd,0x209dc9,0x209dda,0x209de0,0x209de3,0x204d07,0x209e0a,
0x209e02,0x209e0d,0x209e1c,0x209e7b,0x222218,0x209e80,0x209e85,0x209e9b,0x22a38c,0x209ebd,
0x22a437,0x209edf,0x209eff,0x209f02,0x204d77,0x209f03,0x209f3a,0x209f3d,0x209f46,0x209f53,
- 0x209f55,0x209f58,0x22a5f1,0x209f5d,0x22a602,0x209f69,0x209f6d,0x209f70,0x22a6b2,0x20793a,
+ 0x209f55,0x209f58,0x22a5f1,0x209f5d,0x22a602,0x209f69,0x209f6d,0x209f70,0x22a6b2,0x231350,
0x203614,0x2038ad,0x203dcc,0x203fdc,0x2045be,0x204610,0x204b7e,0x204c38,0x204ce1,0x204e0c,
0x204e23,0x204e24,0x204e79,0x204ef3,0x204f0c,0x204f19,0x204f2b,0x204f2e,0x204f31,0x204f84,
0x204f9e,0x204fb7,0x205004,0x20500c,0x20504c,0x20505f,0x205062,0x205077,0x20508e,0x20509e,
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfmglue.lua
index ed7ab6daa8a..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 = '2022-08-29',
+ 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)
@@ -741,7 +742,7 @@ local function handle_penalty_jwp()
local a = table_current_stack[luatexja.stack_table_index.JWP]
if #widow_Bp == 0 then
if a~=0 then
- local p = node_new(id_penalty, widow_Np.nuc)
+ local p = node_new(id_penalty, nil, widow_Np.nuc)
if a<-10000 then a = -10000 elseif a>10000 then a = 10000 end
setpenalty(p, a); head = insert_before(head, widow_Np.first, p)
widow_Bp[1]=p; set_attr(p, attr_icflag, KINSOKU)
@@ -1059,7 +1060,7 @@ local function handle_np_jachar(mode)
real_insert(g)
end
if mode and Np.kcat%2~=1 then
- widow_Np.first, widow_Bp, Bp = Np.first, Bp, widow_Bp
+ widow_Np.nuc, widow_Np.first, widow_Bp, Bp = Np.nuc, Np.first, Bp, widow_Bp
end
end
@@ -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/ltj-jfont.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua
index 26c76d88a13..3e685c0b41f 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua
@@ -3,7 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.jfont',
- date = '2023-04-06',
+ date = '2024-07-25',
description = 'Loader for Japanese fonts',
})
@@ -434,17 +434,18 @@ do
end
-- extract jfm_name, jfm_spec and jfm_var
-- normalize position of 'jfm=' and 'jfmvar=' keys
+ local match, sub = string.match, string.sub
local function extract_jfm_spec(name)
- name = (name:match '^{(.*)}$') or (name:match '^"(.*)"$') or name
+ name = (match(name,'^{(.*)}$')) or (match(name,'^"(.*)"$')) or name
jfm_spec, jfm_var = '', ''
- local tmp, index = name:sub(1, 5), 1
+ local tmp, index = sub(name,1, 5), 1
if tmp == 'file:' or tmp == 'name:' or tmp == 'psft:' then
index = 6
end
name = lpegmatch(jf_remainder, name)
if jfm_name~='' then
if luatexja.jfont.jfm_feature then
- local l, t2 = name:sub(-1), {}
+ local l, t2 = sub(name,-1), {}
for i,v in pairs(luatexja.jfont.jfm_feature) do
-- print(i,type(v),v)
t2[#t2+1] = (v==true) and i
@@ -454,7 +455,7 @@ do
else
jfm_spec = jfm_name
end
- l = name:sub(-1)
+ l = sub(name,-1)
name = name .. ((l==':' or l==';') and '' or ';') .. 'jfm=' .. jfm_spec
if jfm_var~='' then
name = name .. ';jfmvar=' .. jfm_var
@@ -806,9 +807,9 @@ local list_rotate_glyphs
do
local ceil = math.ceil
-- output of function_uax50.lua
- -- UAX#50 for Unicode 14.0.0
+ -- UAX#50 for Unicode 15.1.0
-- t[0] = true
- local t={ 0, 167, 168, 169, 170, 174, 175, 177, 178, 188, 191, 215, 216, 247, 248, 746, 748, 888, 890, 896, 900, 907, 908, 909, 910, 930, 931, 1328, 1329, 1367, 1369, 1419, 1421, 1424, 1425, 1480, 1488, 1515, 1519, 1525, 1536, 1806, 1807, 1867, 1869, 1970, 1984, 2043, 2045, 2094, 2096, 2111, 2112, 2140, 2142, 2143, 2144, 2155, 2160, 2191, 2192, 2194, 2200, 2436, 2437, 2445, 2447, 2449, 2451, 2473, 2474, 2481, 2482, 2483, 2486, 2490, 2492, 2501, 2503, 2505, 2507, 2511, 2519, 2520, 2524, 2526, 2527, 2532, 2534, 2559, 2561, 2564, 2565, 2571, 2575, 2577, 2579, 2601, 2602, 2609, 2610, 2612, 2613, 2615, 2616, 2618, 2620, 2621, 2622, 2627, 2631, 2633, 2635, 2638, 2641, 2642, 2649, 2653, 2654, 2655, 2662, 2679, 2689, 2692, 2693, 2702, 2703, 2706, 2707, 2729, 2730, 2737, 2738, 2740, 2741, 2746, 2748, 2758, 2759, 2762, 2763, 2766, 2768, 2769, 2784, 2788, 2790, 2802, 2809, 2816, 2817, 2820, 2821, 2829, 2831, 2833, 2835, 2857, 2858, 2865, 2866, 2868, 2869, 2874, 2876, 2885, 2887, 2889, 2891, 2894, 2901, 2904, 2908, 2910, 2911, 2916, 2918, 2936, 2946, 2948, 2949, 2955, 2958, 2961, 2962, 2966, 2969, 2971, 2972, 2973, 2974, 2976, 2979, 2981, 2984, 2987, 2990, 3002, 3006, 3011, 3014, 3017, 3018, 3022, 3024, 3025, 3031, 3032, 3046, 3067, 3072, 3085, 3086, 3089, 3090, 3113, 3114, 3130, 3132, 3141, 3142, 3145, 3146, 3150, 3157, 3159, 3160, 3163, 3165, 3166, 3168, 3172, 3174, 3184, 3191, 3213, 3214, 3217, 3218, 3241, 3242, 3252, 3253, 3258, 3260, 3269, 3270, 3273, 3274, 3278, 3285, 3287, 3293, 3295, 3296, 3300, 3302, 3312, 3313, 3315, 3328, 3341, 3342, 3345, 3346, 3397, 3398, 3401, 3402, 3408, 3412, 3428, 3430, 3456, 3457, 3460, 3461, 3479, 3482, 3506, 3507, 3516, 3517, 3518, 3520, 3527, 3530, 3531, 3535, 3541, 3542, 3543, 3544, 3552, 3558, 3568, 3570, 3573, 3585, 3643, 3647, 3676, 3713, 3715, 3716, 3717, 3718, 3723, 3724, 3748, 3749, 3750, 3751, 3774, 3776, 3781, 3782, 3783, 3784, 3790, 3792, 3802, 3804, 3808, 3840, 3912, 3913, 3949, 3953, 3992, 3993, 4029, 4030, 4045, 4046, 4059, 4096, 4294, 4295, 4296, 4301, 4302, 4304, 4352, 4608, 4681, 4682, 4686, 4688, 4695, 4696, 4697, 4698, 4702, 4704, 4745, 4746, 4750, 4752, 4785, 4786, 4790, 4792, 4799, 4800, 4801, 4802, 4806, 4808, 4823, 4824, 4881, 4882, 4886, 4888, 4955, 4957, 4989, 4992, 5018, 5024, 5110, 5112, 5118, 5120, 5121, 5760, 5789, 5792, 5881, 5888, 5910, 5919, 5943, 5952, 5972, 5984, 5997, 5998, 6001, 6002, 6004, 6016, 6110, 6112, 6122, 6128, 6138, 6144, 6170, 6176, 6265, 6272, 6315, 6400, 6431, 6432, 6444, 6448, 6460, 6464, 6465, 6468, 6510, 6512, 6517, 6528, 6572, 6576, 6602, 6608, 6619, 6622, 6684, 6686, 6751, 6752, 6781, 6783, 6794, 6800, 6810, 6816, 6830, 6832, 6863, 6912, 6989, 6992, 7039, 7040, 7156, 7164, 7224, 7227, 7242, 7245, 7305, 7312, 7355, 7357, 7368, 7376, 7419, 7424, 7958, 7960, 7966, 7968, 8006, 8008, 8014, 8016, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031, 8062, 8064, 8117, 8118, 8133, 8134, 8148, 8150, 8156, 8157, 8176, 8178, 8181, 8182, 8191, 8192, 8214, 8215, 8224, 8226, 8240, 8242, 8251, 8253, 8258, 8259, 8263, 8266, 8273, 8274, 8293, 8294, 8306, 8308, 8335, 8336, 8349, 8352, 8385, 8400, 8413, 8417, 8418, 8421, 8433, 8450, 8451, 8458, 8463, 8464, 8467, 8469, 8470, 8472, 8478, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8494, 8495, 8501, 8512, 8517, 8523, 8524, 8526, 8527, 8586, 8588, 8592, 8734, 8735, 8756, 8758, 8960, 8968, 8972, 8992, 8996, 9001, 9003, 9004, 9085, 9115, 9150, 9166, 9167, 9168, 9169, 9180, 9186, 9251, 9252, 9472, 9632, 9754, 9760, 10088, 10102, 10132, 11026, 11056, 11088, 11098, 11124, 11126, 11158, 11160, 11192, 11218, 11219, 11244, 11248, 11264, 11508, 11513, 11558, 11559, 11560, 11565, 11566, 11568, 11624, 11631, 11633, 11647, 11671, 11680, 11687, 11688, 11695, 11696, 11703, 11704, 11711, 11712, 11719, 11720, 11727, 11728, 11735, 11736, 11743, 11744, 11856, 11858, 11870, 12296, 12306, 12308, 12320, 12336, 12337, 12448, 12449, 12540, 12541, 42192, 42540, 42560, 42744, 42752, 42955, 42960, 42962, 42963, 42964, 42965, 42970, 42994, 43053, 43056, 43066, 43072, 43128, 43136, 43206, 43214, 43226, 43232, 43348, 43359, 43360, 43392, 43470, 43471, 43482, 43486, 43519, 43520, 43575, 43584, 43598, 43600, 43610, 43612, 43715, 43739, 43767, 43777, 43783, 43785, 43791, 43793, 43799, 43808, 43815, 43816, 43823, 43824, 43884, 43888, 44014, 44016, 44026, 55296, 57344, 64256, 64263, 64275, 64280, 64285, 64311, 64312, 64317, 64318, 64319, 64320, 64322, 64323, 64325, 64326, 64451, 64467, 64912, 64914, 64968, 64975, 64976, 65008, 65040, 65056, 65072, 65097, 65104, 65112, 65119, 65123, 65127, 65136, 65141, 65142, 65277, 65279, 65280, 65288, 65290, 65293, 65294, 65306, 65311, 65339, 65340, 65341, 65342, 65343, 65344, 65371, 65471, 65474, 65480, 65482, 65488, 65490, 65496, 65498, 65501, 65507, 65508, 65512, 65519, 65529, 65532, 65536, 65548, 65549, 65575, 65576, 65595, 65596, 65598, 65599, 65614, 65616, 65630, 65664, 65787, 65792, 65795, 65799, 65844, 65847, 65935, 65936, 65949, 65952, 65953, 66000, 66046, 66176, 66205, 66208, 66257, 66272, 66300, 66304, 66340, 66349, 66379, 66384, 66427, 66432, 66462, 66463, 66500, 66504, 66518, 66560, 66718, 66720, 66730, 66736, 66772, 66776, 66812, 66816, 66856, 66864, 66916, 66927, 66939, 66940, 66955, 66956, 66963, 66964, 66966, 66967, 66978, 66979, 66994, 66995, 67002, 67003, 67005, 67072, 67383, 67392, 67414, 67424, 67432, 67456, 67462, 67463, 67505, 67506, 67515, 67584, 67590, 67592, 67593, 67594, 67638, 67639, 67641, 67644, 67645, 67647, 67670, 67671, 67743, 67751, 67760, 67808, 67827, 67828, 67830, 67835, 67868, 67871, 67898, 67903, 67904, 68000, 68024, 68028, 68048, 68050, 68100, 68101, 68103, 68108, 68116, 68117, 68120, 68121, 68150, 68152, 68155, 68159, 68169, 68176, 68185, 68192, 68256, 68288, 68327, 68331, 68343, 68352, 68406, 68409, 68438, 68440, 68467, 68472, 68498, 68505, 68509, 68521, 68528, 68608, 68681, 68736, 68787, 68800, 68851, 68858, 68904, 68912, 68922, 69216, 69247, 69248, 69290, 69291, 69294, 69296, 69298, 69376, 69416, 69424, 69466, 69488, 69514, 69552, 69580, 69600, 69623, 69632, 69710, 69714, 69750, 69759, 69827, 69837, 69838, 69840, 69865, 69872, 69882, 69888, 69941, 69942, 69960, 69968, 70007, 70016, 70112, 70113, 70133, 70144, 70162, 70163, 70207, 70272, 70279, 70280, 70281, 70282, 70286, 70287, 70302, 70303, 70314, 70320, 70379, 70384, 70394, 70400, 70404, 70405, 70413, 70415, 70417, 70419, 70441, 70442, 70449, 70450, 70452, 70453, 70458, 70459, 70469, 70471, 70473, 70475, 70478, 70480, 70481, 70487, 70488, 70493, 70500, 70502, 70509, 70512, 70517, 70656, 70748, 70749, 70754, 70784, 70856, 70864, 70874, 71168, 71237, 71248, 71258, 71264, 71277, 71296, 71354, 71360, 71370, 71424, 71451, 71453, 71468, 71472, 71495, 71680, 71740, 71840, 71923, 71935, 71943, 71945, 71946, 71948, 71956, 71957, 71959, 71960, 71990, 71991, 71993, 71995, 72007, 72016, 72026, 72096, 72104, 72106, 72152, 72154, 72165, 72384, 72441, 72704, 72713, 72714, 72759, 72760, 72774, 72784, 72813, 72816, 72848, 72850, 72872, 72873, 72887, 72960, 72967, 72968, 72970, 72971, 73015, 73018, 73019, 73020, 73022, 73023, 73032, 73040, 73050, 73056, 73062, 73063, 73065, 73066, 73103, 73104, 73106, 73107, 73113, 73120, 73130, 73440, 73465, 73648, 73649, 73664, 73714, 73727, 74650, 74752, 74863, 74864, 74869, 74880, 75076, 77712, 77811, 92160, 92729, 92736, 92767, 92768, 92778, 92782, 92863, 92864, 92874, 92880, 92910, 92912, 92918, 92928, 92998, 93008, 93018, 93019, 93026, 93027, 93048, 93053, 93072, 93760, 93851, 93952, 94027, 94031, 94088, 94095, 94112, 113664, 113771, 113776, 113789, 113792, 113801, 113808, 113818, 113820, 113828, 119296, 119366, 119808, 119893, 119894, 119965, 119966, 119968, 119970, 119971, 119973, 119975, 119977, 119981, 119982, 119994, 119995, 119996, 119997, 120004, 120005, 120070, 120071, 120075, 120077, 120085, 120086, 120093, 120094, 120122, 120123, 120127, 120128, 120133, 120134, 120135, 120138, 120145, 120146, 120486, 120488, 120780, 120782, 120832, 122624, 122655, 122880, 122887, 122888, 122905, 122907, 122914, 122915, 122917, 122918, 122923, 123136, 123181, 123184, 123198, 123200, 123210, 123214, 123216, 123536, 123567, 123584, 123642, 123647, 123648, 124896, 124903, 124904, 124908, 124909, 124911, 124912, 124927, 124928, 125125, 125127, 125143, 125184, 125260, 125264, 125274, 125278, 125280, 126065, 126133, 126209, 126270, 126464, 126468, 126469, 126496, 126497, 126499, 126500, 126501, 126503, 126504, 126505, 126515, 126516, 126520, 126521, 126522, 126523, 126524, 126530, 126531, 126535, 126536, 126537, 126538, 126539, 126540, 126541, 126544, 126545, 126547, 126548, 126549, 126551, 126552, 126553, 126554, 126555, 126556, 126557, 126558, 126559, 126560, 126561, 126563, 126564, 126565, 126567, 126571, 126572, 126579, 126580, 126584, 126585, 126589, 126590, 126591, 126592, 126602, 126603, 126620, 126625, 126628, 126629, 126634, 126635, 126652, 126704, 126706, 129024, 129036, 129040, 129096, 129104, 129114, 129120, 129160, 129168, 129198, 129200, 129202, 129792, 129939, 129940, 129995, 130032, 130042, 917505, 917506, 917536, 917632, 917760, 918000 }
+ local t={ 0, 167, 168, 169, 170, 174, 175, 177, 178, 188, 191, 215, 216, 247, 248, 746, 748, 888, 890, 896, 900, 907, 908, 909, 910, 930, 931, 1328, 1329, 1367, 1369, 1419, 1421, 1424, 1425, 1480, 1488, 1515, 1519, 1525, 1536, 1806, 1807, 1867, 1869, 1970, 1984, 2043, 2045, 2094, 2096, 2111, 2112, 2140, 2142, 2143, 2144, 2155, 2160, 2191, 2192, 2194, 2200, 2436, 2437, 2445, 2447, 2449, 2451, 2473, 2474, 2481, 2482, 2483, 2486, 2490, 2492, 2501, 2503, 2505, 2507, 2511, 2519, 2520, 2524, 2526, 2527, 2532, 2534, 2559, 2561, 2564, 2565, 2571, 2575, 2577, 2579, 2601, 2602, 2609, 2610, 2612, 2613, 2615, 2616, 2618, 2620, 2621, 2622, 2627, 2631, 2633, 2635, 2638, 2641, 2642, 2649, 2653, 2654, 2655, 2662, 2679, 2689, 2692, 2693, 2702, 2703, 2706, 2707, 2729, 2730, 2737, 2738, 2740, 2741, 2746, 2748, 2758, 2759, 2762, 2763, 2766, 2768, 2769, 2784, 2788, 2790, 2802, 2809, 2816, 2817, 2820, 2821, 2829, 2831, 2833, 2835, 2857, 2858, 2865, 2866, 2868, 2869, 2874, 2876, 2885, 2887, 2889, 2891, 2894, 2901, 2904, 2908, 2910, 2911, 2916, 2918, 2936, 2946, 2948, 2949, 2955, 2958, 2961, 2962, 2966, 2969, 2971, 2972, 2973, 2974, 2976, 2979, 2981, 2984, 2987, 2990, 3002, 3006, 3011, 3014, 3017, 3018, 3022, 3024, 3025, 3031, 3032, 3046, 3067, 3072, 3085, 3086, 3089, 3090, 3113, 3114, 3130, 3132, 3141, 3142, 3145, 3146, 3150, 3157, 3159, 3160, 3163, 3165, 3166, 3168, 3172, 3174, 3184, 3191, 3213, 3214, 3217, 3218, 3241, 3242, 3252, 3253, 3258, 3260, 3269, 3270, 3273, 3274, 3278, 3285, 3287, 3293, 3295, 3296, 3300, 3302, 3312, 3313, 3316, 3328, 3341, 3342, 3345, 3346, 3397, 3398, 3401, 3402, 3408, 3412, 3428, 3430, 3456, 3457, 3460, 3461, 3479, 3482, 3506, 3507, 3516, 3517, 3518, 3520, 3527, 3530, 3531, 3535, 3541, 3542, 3543, 3544, 3552, 3558, 3568, 3570, 3573, 3585, 3643, 3647, 3676, 3713, 3715, 3716, 3717, 3718, 3723, 3724, 3748, 3749, 3750, 3751, 3774, 3776, 3781, 3782, 3783, 3784, 3791, 3792, 3802, 3804, 3808, 3840, 3912, 3913, 3949, 3953, 3992, 3993, 4029, 4030, 4045, 4046, 4059, 4096, 4294, 4295, 4296, 4301, 4302, 4304, 4352, 4608, 4681, 4682, 4686, 4688, 4695, 4696, 4697, 4698, 4702, 4704, 4745, 4746, 4750, 4752, 4785, 4786, 4790, 4792, 4799, 4800, 4801, 4802, 4806, 4808, 4823, 4824, 4881, 4882, 4886, 4888, 4955, 4957, 4989, 4992, 5018, 5024, 5110, 5112, 5118, 5120, 5121, 5760, 5789, 5792, 5881, 5888, 5910, 5919, 5943, 5952, 5972, 5984, 5997, 5998, 6001, 6002, 6004, 6016, 6110, 6112, 6122, 6128, 6138, 6144, 6170, 6176, 6265, 6272, 6315, 6400, 6431, 6432, 6444, 6448, 6460, 6464, 6465, 6468, 6510, 6512, 6517, 6528, 6572, 6576, 6602, 6608, 6619, 6622, 6684, 6686, 6751, 6752, 6781, 6783, 6794, 6800, 6810, 6816, 6830, 6832, 6863, 6912, 6989, 6992, 7039, 7040, 7156, 7164, 7224, 7227, 7242, 7245, 7305, 7312, 7355, 7357, 7368, 7376, 7419, 7424, 7958, 7960, 7966, 7968, 8006, 8008, 8014, 8016, 8024, 8025, 8026, 8027, 8028, 8029, 8030, 8031, 8062, 8064, 8117, 8118, 8133, 8134, 8148, 8150, 8156, 8157, 8176, 8178, 8181, 8182, 8191, 8192, 8214, 8215, 8224, 8226, 8240, 8242, 8251, 8253, 8258, 8259, 8263, 8266, 8273, 8274, 8293, 8294, 8306, 8308, 8335, 8336, 8349, 8352, 8385, 8400, 8413, 8417, 8418, 8421, 8433, 8450, 8451, 8458, 8463, 8464, 8467, 8469, 8470, 8472, 8478, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8494, 8495, 8501, 8512, 8517, 8523, 8524, 8526, 8527, 8586, 8588, 8592, 8734, 8735, 8756, 8758, 8960, 8968, 8972, 8992, 8996, 9001, 9003, 9004, 9085, 9115, 9150, 9166, 9167, 9168, 9169, 9180, 9186, 9251, 9252, 9472, 9632, 9754, 9760, 10088, 10102, 10132, 11026, 11056, 11088, 11098, 11124, 11126, 11158, 11160, 11192, 11218, 11219, 11244, 11248, 11264, 11508, 11513, 11558, 11559, 11560, 11565, 11566, 11568, 11624, 11631, 11633, 11647, 11671, 11680, 11687, 11688, 11695, 11696, 11703, 11704, 11711, 11712, 11719, 11720, 11727, 11728, 11735, 11736, 11743, 11744, 11856, 11858, 11870, 12296, 12306, 12308, 12320, 12336, 12337, 12448, 12449, 12540, 12541, 42192, 42540, 42560, 42744, 42752, 42955, 42960, 42962, 42963, 42964, 42965, 42970, 42994, 43053, 43056, 43066, 43072, 43128, 43136, 43206, 43214, 43226, 43232, 43348, 43359, 43360, 43392, 43470, 43471, 43482, 43486, 43519, 43520, 43575, 43584, 43598, 43600, 43610, 43612, 43715, 43739, 43767, 43777, 43783, 43785, 43791, 43793, 43799, 43808, 43815, 43816, 43823, 43824, 43884, 43888, 44014, 44016, 44026, 55296, 57344, 64256, 64263, 64275, 64280, 64285, 64311, 64312, 64317, 64318, 64319, 64320, 64322, 64323, 64325, 64326, 64451, 64467, 64912, 64914, 64968, 64975, 64976, 65008, 65040, 65056, 65072, 65097, 65104, 65112, 65119, 65123, 65127, 65136, 65141, 65142, 65277, 65279, 65280, 65288, 65290, 65293, 65294, 65306, 65311, 65339, 65340, 65341, 65342, 65343, 65344, 65371, 65471, 65474, 65480, 65482, 65488, 65490, 65496, 65498, 65501, 65507, 65508, 65512, 65519, 65529, 65532, 65536, 65548, 65549, 65575, 65576, 65595, 65596, 65598, 65599, 65614, 65616, 65630, 65664, 65787, 65792, 65795, 65799, 65844, 65847, 65935, 65936, 65949, 65952, 65953, 66000, 66046, 66176, 66205, 66208, 66257, 66272, 66300, 66304, 66340, 66349, 66379, 66384, 66427, 66432, 66462, 66463, 66500, 66504, 66518, 66560, 66718, 66720, 66730, 66736, 66772, 66776, 66812, 66816, 66856, 66864, 66916, 66927, 66939, 66940, 66955, 66956, 66963, 66964, 66966, 66967, 66978, 66979, 66994, 66995, 67002, 67003, 67005, 67072, 67383, 67392, 67414, 67424, 67432, 67456, 67462, 67463, 67505, 67506, 67515, 67584, 67590, 67592, 67593, 67594, 67638, 67639, 67641, 67644, 67645, 67647, 67670, 67671, 67743, 67751, 67760, 67808, 67827, 67828, 67830, 67835, 67868, 67871, 67898, 67903, 67904, 68000, 68024, 68028, 68048, 68050, 68100, 68101, 68103, 68108, 68116, 68117, 68120, 68121, 68150, 68152, 68155, 68159, 68169, 68176, 68185, 68192, 68256, 68288, 68327, 68331, 68343, 68352, 68406, 68409, 68438, 68440, 68467, 68472, 68498, 68505, 68509, 68521, 68528, 68608, 68681, 68736, 68787, 68800, 68851, 68858, 68904, 68912, 68922, 69216, 69247, 69248, 69290, 69291, 69294, 69296, 69298, 69373, 69416, 69424, 69466, 69488, 69514, 69552, 69580, 69600, 69623, 69632, 69710, 69714, 69750, 69759, 69827, 69837, 69838, 69840, 69865, 69872, 69882, 69888, 69941, 69942, 69960, 69968, 70007, 70016, 70112, 70113, 70133, 70144, 70162, 70163, 70210, 70272, 70279, 70280, 70281, 70282, 70286, 70287, 70302, 70303, 70314, 70320, 70379, 70384, 70394, 70400, 70404, 70405, 70413, 70415, 70417, 70419, 70441, 70442, 70449, 70450, 70452, 70453, 70458, 70459, 70469, 70471, 70473, 70475, 70478, 70480, 70481, 70487, 70488, 70493, 70500, 70502, 70509, 70512, 70517, 70656, 70748, 70749, 70754, 70784, 70856, 70864, 70874, 71168, 71237, 71248, 71258, 71264, 71277, 71296, 71354, 71360, 71370, 71424, 71451, 71453, 71468, 71472, 71495, 71680, 71740, 71840, 71923, 71935, 71943, 71945, 71946, 71948, 71956, 71957, 71959, 71960, 71990, 71991, 71993, 71995, 72007, 72016, 72026, 72096, 72104, 72106, 72152, 72154, 72165, 72384, 72441, 72448, 72458, 72704, 72713, 72714, 72759, 72760, 72774, 72784, 72813, 72816, 72848, 72850, 72872, 72873, 72887, 72960, 72967, 72968, 72970, 72971, 73015, 73018, 73019, 73020, 73022, 73023, 73032, 73040, 73050, 73056, 73062, 73063, 73065, 73066, 73103, 73104, 73106, 73107, 73113, 73120, 73130, 73440, 73465, 73472, 73489, 73490, 73531, 73534, 73562, 73648, 73649, 73664, 73714, 73727, 74650, 74752, 74863, 74864, 74869, 74880, 75076, 77712, 77811, 92160, 92729, 92736, 92767, 92768, 92778, 92782, 92863, 92864, 92874, 92880, 92910, 92912, 92918, 92928, 92998, 93008, 93018, 93019, 93026, 93027, 93048, 93053, 93072, 93760, 93851, 93952, 94027, 94031, 94088, 94095, 94112, 113664, 113771, 113776, 113789, 113792, 113801, 113808, 113818, 113820, 113828, 119296, 119366, 119488, 119508, 119808, 119893, 119894, 119965, 119966, 119968, 119970, 119971, 119973, 119975, 119977, 119981, 119982, 119994, 119995, 119996, 119997, 120004, 120005, 120070, 120071, 120075, 120077, 120085, 120086, 120093, 120094, 120122, 120123, 120127, 120128, 120133, 120134, 120135, 120138, 120145, 120146, 120486, 120488, 120780, 120782, 120832, 122624, 122655, 122661, 122667, 122880, 122887, 122888, 122905, 122907, 122914, 122915, 122917, 122918, 122923, 122928, 122990, 123023, 123024, 123136, 123181, 123184, 123198, 123200, 123210, 123214, 123216, 123536, 123567, 123584, 123642, 123647, 123648, 124112, 124154, 124896, 124903, 124904, 124908, 124909, 124911, 124912, 124927, 124928, 125125, 125127, 125143, 125184, 125260, 125264, 125274, 125278, 125280, 126065, 126133, 126209, 126270, 126464, 126468, 126469, 126496, 126497, 126499, 126500, 126501, 126503, 126504, 126505, 126515, 126516, 126520, 126521, 126522, 126523, 126524, 126530, 126531, 126535, 126536, 126537, 126538, 126539, 126540, 126541, 126544, 126545, 126547, 126548, 126549, 126551, 126552, 126553, 126554, 126555, 126556, 126557, 126558, 126559, 126560, 126561, 126563, 126564, 126565, 126567, 126571, 126572, 126579, 126580, 126584, 126585, 126589, 126590, 126591, 126592, 126602, 126603, 126620, 126625, 126628, 126629, 126634, 126635, 126652, 126704, 126706, 129024, 129036, 129040, 129096, 129104, 129114, 129120, 129160, 129168, 129198, 129200, 129202, 129792, 129939, 129940, 129995, 130032, 130042, 917505, 917506, 917536, 917632, 917760, 918000 }
local function rotate_in_uax50(i)
local lo, hi = 1, #t
while lo < hi do
@@ -902,9 +903,10 @@ do
end
end
+ local sub = string.sub
local function prepare_extra_data_font(id, res, name)
if type(res)=='table' and (res.psname or res.filename) then
- if (res.embedding=='no') and (type(name)=='string') and (name:sub(1,5)=='psft:') then
+ if (res.embedding=='no') and (type(name)=='string') and (sub(name,1,5)=='psft:') then
font_extra_info[id] = res.resources.ltj_extra
else
local bname = res.psname or nameonly(res.filename)
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty b/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty
index 7e091d161d1..9f6e4d0a365 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-latex.sty
@@ -12,45 +12,14 @@
\def\luatexjalatexLoaded{\endinput}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ltj-latex}[2022-10-15 LaTeX support of LuaTeX-ja]
+\ProvidesPackage{ltj-latex}[2024-05-16 LaTeX support of LuaTeX-ja]
\endlinechar=13
%%% LaTeX version detection
-\newif\ifltj@ltfilehook@avail
-\@ifl@t@r\fmtversion{2020-10-01}{%
- \@ifl@t@r\fmtversion{2020-10-02}%
- {\ltj@ltfilehook@availtrue}
- {%
- \ifnum\patch@level<0\relax \ifnum\patch@level<-6 \ltj@ltfilehook@availtrue\fi
- \else\ltj@ltfilehook@availtrue\fi
- }%
-}{}
-\@ifl@t@r\fmtversion{2021-05-01}{\count@=1 }{\count@=0 }
-\ifnum \count@<1
-%%%% \shipout
- \newluafunction\ltj@@lua@shipout@inner
- \directlua{
- local t = lua.get_functions_table()
- local getbox, setbox = tex.getbox, tex.setbox
- local shipout_lthook = luatexja.direction.shipout_lthook
- t[\the\ltj@@lua@shipout@inner]=function ()
- local a = shipout_lthook(getbox(\the\ltj@afbox))
- if a then setbox(\the\ltj@afbox, a) end
- end
- }
- \protected\luadef\ltj@@lua@shipout\ltj@@lua@shipout@inner
- \def\ltj@shipout@{\ltj@@lua@shipout\primitive\shipout\box\ltj@afbox}%
- \protected\def\ltj@shipout{\ltj@afterbox\ltj@shipout@}
- \ifprimitive\shipout\let\shipout\ltj@shipout\fi
- \ifcsname tex_shipout:D\endcsname
- \expandafter\let\csname tex_shipout:D\endcsname\ltj@shipout
- \fi
-\else
- \directlua{%
- luatexbase.add_to_callback('pre_shipout_filter',luatexja.direction.shipout_lthook, 'ltj.direction', 1)
- }
-\fi
+\directlua{%
+ luatexbase.add_to_callback('pre_shipout_filter',luatexja.direction.shipout_lthook, 'ltj.direction', 1)
+}
%%% patch for LaTeX
\usepackage{lltjfont}
@@ -59,36 +28,30 @@
\RequirePackage{lltjp-atbegshi}
%%% patching commands
-\ifltj@ltfilehook@avail
- %% \ltj@ExecuteBeforePackage <package><code> and \ltj@ExecuteAfterPackage <package><code>
- %% no-starred version: do nothing if the <package> is loaded
- %% starred version: do <code> right away if the <package> is loaded
- \def\ltj@ExecuteAfterPackage{\@ifstar\@@ltj@ExecuteAfterPackage@star\@@ltj@ExecuteAfterPackage}
- \def\ltj@ExecuteBeforePackage{\@ifstar\@@ltj@ExecuteBeforePackage@star\@@ltj@ExecuteBeforePackage}
- \@ifl@t@r\fmtversion{2021-11-15}{% 2021-11-15
- \def\@@ltj@ExecuteAfterPackage@star#1{\AddToHook{package/#1/after}}
- \def\@@ltj@ExecuteBeforePackage@star#1{\AddToHook{package/#1/before}}
- \long\def\@@ltj@ExecuteAfterPackage#1#2{%
- \@ifpackageloaded{#1}{}{\AddToHook{package/#1/after}{#2}}%
- }
- \long\def\@@ltj@ExecuteBeforePackage#1#2{%
- \@ifpackageloaded{#1}{}{\AddToHook{package/#1/before}{#2}}%
- }
- }{
- \def\@@ltj@ExecuteAfterPackage#1{\AddToHook{package/after/#1}}
- \def\@@ltj@ExecuteBeforePackage#1{\AddToHook{package/before/#1}}
- \long\def\@@ltj@ExecuteAfterPackage@star#1#2{%
- \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteAfterPackage{#1}{#2}}%
- }
- \long\def\@@ltj@ExecuteBeforePackage@star#1#2{%
- \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteBeforePackage{#1}{#2}}%
- }
+%% \ltj@ExecuteBeforePackage <package><code> and \ltj@ExecuteAfterPackage <package><code>
+%% no-starred version: do nothing if the <package> is loaded
+%% starred version: do <code> right away if the <package> is loaded
+\def\ltj@ExecuteAfterPackage{\@ifstar\@@ltj@ExecuteAfterPackage@star\@@ltj@ExecuteAfterPackage}
+\def\ltj@ExecuteBeforePackage{\@ifstar\@@ltj@ExecuteBeforePackage@star\@@ltj@ExecuteBeforePackage}
+\@ifl@t@r\fmtversion{2021-11-15}{% 2021-11-15
+ \def\@@ltj@ExecuteAfterPackage@star#1{\AddToHook{package/#1/after}}
+ \def\@@ltj@ExecuteBeforePackage@star#1{\AddToHook{package/#1/before}}
+ \long\def\@@ltj@ExecuteAfterPackage#1#2{%
+ \@ifpackageloaded{#1}{}{\AddToHook{package/#1/after}{#2}}%
}
-\else
- \RequirePackage{filehook}
- \let\ltj@ExecuteAfterPackage=\AtEndOfPackageFile
- \let\ltj@ExecuteBeforePackage=\AtBeginOfPackageFile
-\fi
+ \long\def\@@ltj@ExecuteBeforePackage#1#2{%
+ \@ifpackageloaded{#1}{}{\AddToHook{package/#1/before}{#2}}%
+ }
+}{
+ \def\@@ltj@ExecuteAfterPackage#1{\AddToHook{package/after/#1}}
+ \def\@@ltj@ExecuteBeforePackage#1{\AddToHook{package/before/#1}}
+ \long\def\@@ltj@ExecuteAfterPackage@star#1#2{%
+ \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteAfterPackage{#1}{#2}}%
+ }
+ \long\def\@@ltj@ExecuteBeforePackage@star#1#2{%
+ \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteBeforePackage{#1}{#2}}%
+ }
+}
\def\ltj@pkgpatch@im#1{\@ifnextchar[{\ltj@pkgpatch@im@{#1}}{\ltj@pkgpatch@im@{#1}[lltjp-#1]}}%]
\def\ltj@pkgpatch@im@#1[#2]{\ltj@ExecuteAfterPackage*{#1}{\ltj@pkgpatch@im@@{#2}}}
\def\ltj@pkgpatch@im@@#1{%
@@ -101,11 +64,7 @@
}
\def\ltj@pkgpatch#1{\@ifnextchar[{\ltj@pkgpatch@{#1}}{\ltj@pkgpatch@{#1}[lltjp-#1]}}%]
-\ifltj@ltfilehook@avail
- \def\ltj@pkgpatch@@{\AddToHook{begindocument/before}[luatexja.autopatch]}
-\else
- \def\ltj@pkgpatch@@{\gpreto\@begindocumenthook}
-\fi
+\def\ltj@pkgpatch@@{\AddToHook{begindocument/before}[luatexja.autopatch]}
\def\ltj@pkgpatch@#1[#2]{%
\ltj@pkgpatch@@{%
\@ifpackageloaded{#1}{\@ifpackageloaded{#2}{}{\RequirePackage{#2}}}{}%
@@ -121,18 +80,12 @@
\ltj@pkgpatch{tascmac}
\ltj@pkgpatch{ascmac}[lltjp-tascmac]
\ltj@pkgpatch@im{stfloats}
-\ifltj@ltfilehook@avail\else
- \ltj@pkgpatch{preview} %% at \begin{document}
- % (preview package has delayed option)
-\fi
\ltj@pkgpatch{array} %% at \begin{document}
\ltj@pkgpatch{collcell} %% at \begin{document}
\ltj@pkgpatch@im{unicode-math}
\ltj@pkgpatch@im{siunitx}
\ltj@pkgpatch@im{microtype}
-\ifltj@ltfilehook@avail\else\ltj@pkgpatch@im{everyshi}\fi
-
\RequirePackage{lltjp-geometry}
\ltj@ExecuteBeforePackage{breqn}{%
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-pretreat.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-pretreat.lua
index 43ecac806c2..8f5632be4e3 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-pretreat.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-pretreat.lua
@@ -156,16 +156,17 @@ function set_box_stack_level(head, mode)
if ltjs.list_dir == dir_tate then
for p in traverse_glyph(to_direct(head)) do
if getlang(p)==lang_ja and has_attr(p, attr_icflag, 0) then
- local pf = ltjf_replace_altfont(attr_curtfnt, getchar(p), p)
+ local pc = ltjs_orig_char_table[p] or getchar(p)
+ local pf = ltjf_replace_altfont(attr_curtfnt, pc, p)
if ltjf_font_metric_table[pf].vert_activated then
- local pc = ltjf_font_metric_table[pf].vform[pc]; if pc then setchar(p, pc) end
+ pc = ltjf_font_metric_table[pf].vform[pc]; if pc then setchar(p, pc) end
end
end
end
else
for p in traverse_glyph(to_direct(head)) do
if getlang(p)==lang_ja and has_attr(p, attr_icflag, 0) then
- ltjf_replace_altfont(attr_curjfnt, getchar(p), p)
+ ltjf_replace_altfont(attr_curjfnt, ltjs_orig_char_table[p] or getchar(p), p)
end
end
end
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-rmlgbm.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-rmlgbm.lua
index 88352dd5b24..23d20be3f36 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-rmlgbm.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-rmlgbm.lua
@@ -15,7 +15,8 @@ do
end
local cidfont_data = {}
local cache_chars = {}
-local cache_ver = 13
+local cache_ver = 14
+local sub = string.sub
local identifiers = fonts.hashes.identifiers
local cid_reg, cid_order, cid_supp, cid_name
@@ -147,7 +148,7 @@ do
descender = 655360*0.12,
},
embedding = "no", cache = "yes", factor = 0, hfactor = 0, vfactor = 0,
- tounicode = 1,
+ tounicode = 1, filename="",
properties = { language = "dflt", script = "dflt" },
}
cidfont_data[cid_name] = k
@@ -300,7 +301,6 @@ local function prepare_cid_font(reg, ord)
return cidfont_data[cid_name] or read_cid_font()
end
-
local definers = fonts.definers
local function mk_rml(name, size, id)
local specification = definers.analyze(name,size)
@@ -308,8 +308,8 @@ local function mk_rml(name, size, id)
specification.detail = specification.detail or ''
do
local n = specification.name
- if n:sub(1,1)=="{" then n=n:sub(2) end
- if n:sub(-1)=="}" then n=n:sub(1,-2) end
+ if sub(n,1,1)=="{" then n=sub(n,2) end
+ if sub(n,-1)=="}" then n=sub(n,1,-2) end
specification.name=n
end
local fontdata = {}
@@ -382,11 +382,11 @@ local function mk_rml(name, size, id)
end
local function font_callback(name, size, id, fallback)
- if name:sub(1,1)=="{" and name:sub(-1)=="}" then name = name:sub(2,-2) end
+ if sub(name,1,1)=="{" and sub(name,-1)=="}" then name = sub(name,2,-2) end
local p = name:find(":") or 0
- if name:sub(1, p-1) == 'psft' then
+ if sub(name,1, p-1) == 'psft' then
local s = "Adobe-Japan1-7"
- local basename = name:sub(p+1)
+ local basename = sub(name,p+1)
local p = basename:find(":")
local q = basename:find("/[BI][BI]?")
if q and p and q<=p then
@@ -394,12 +394,12 @@ local function font_callback(name, size, id, fallback)
p = basename:find(":")
end
if p then
- local xname = basename:sub(p+1)
+ local xname = sub(basename,p+1)
p = 1
while p do
local q = xname:find(";", p+1) or xname:len()+1
- if xname:sub(p, p+3)=='cid=' and q>p+4 then
- s = xname:sub(p+4, q-1)
+ if sub(xname,p, p+3)=='cid=' and q>p+4 then
+ s = sub(xname,p+4, q-1)
end
if xname:len()+1==q then p = nil else p = q + 1 end
end
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua
index 29b6fe19988..2ff41be9474 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-ruby.lua
@@ -3,7 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.ruby',
- date = '2022-12-31',
+ date = '2024-09-06',
description = 'Ruby annotation',
})
luatexja.ruby = {}
@@ -37,7 +37,7 @@ local setwhd = node.direct.setwhd
local setlist = node.direct.setlist
local setvalue = node.direct.setdata
-local node_new = node.direct.new
+local node_new = luatexja.dnode_new
local node_remove = node.direct.remove
local node_next = node.direct.getnext
local node_copy, node_tail = node.direct.copy, node.direct.tail
@@ -45,6 +45,7 @@ local node_free = node.direct.flush_node or node.direct.free
local get_attr, set_attr = node.direct.get_attribute, node.direct.set_attribute
local insert_before, insert_after = node.direct.insert_before, node.direct.insert_after
local hpack = node.direct.hpack
+local node_inherit_attr = luatexja.node_inherit_attr
local id_hlist = node.id 'hlist'
local id_vlist = node.id 'vlist'
@@ -175,10 +176,10 @@ do
set_attr(nh, attr_icflag,
get_attr_icflag(nh) + PROCESSED_BEGIN_FLAG)
setnext(node_tail(h), nh)
- setlist(f, nil); node_free(f)
+ setlist(f, nil)
setlist(b, nil); node_free(b)
local g = luatexja.jfmglue.main(h,false)
- return hpack(g)
+ g = node_inherit_attr(hpack(g),f); node_free(f); return g
else
return f
end
@@ -207,6 +208,7 @@ end
-- box の中身のノードは再利用される
local enlarge
do
+ local dimensions = node.direct.dimensions
local FROM_JFM = luatexja.icflag_table.FROM_JFM
local PROCESSED = luatexja.icflag_table.PROCESSED
local KANJI_SKIP = luatexja.icflag_table.KANJI_SKIP
@@ -239,18 +241,22 @@ do
hx = node_next(hx)
end
-- 先頭の空白を挿入
- local k = node_new(id_glue);
- setglue(k, prenw, round(pre*65536), 0, 2, 0)
- h = insert_before(h, h, k);
+ local k1 = node_new(id_glue);
+ setglue(k1, prenw, round(pre*65536), 0, 2, 0)
+ h = insert_before(h, h, k1);
-- 末尾の空白を挿入
- local k = node_new(id_glue);
- setglue(k, postnw, round(post*65536), 0, 2, 0)
- insert_after(h, node_tail(h), k);
+ local k2 = node_new(id_glue);
+ setglue(k2, postnw, round(post*65536), 0, 2, 0)
+ insert_after(h, node_tail(h), k2);
-- hpack
- setlist(box, nil); node_free(box)
- box = hpack(h, new_width, 'exactly')
- setheight(box, hh); setdepth(box, hd)
- return box
+ setlist(box, nil);
+ local new_box = node_inherit_attr(hpack(h, new_width, 'exactly'), box)
+ setheight(new_box, hh); setdepth(new_box, hd)
+ node_free(box);
+ local gset, gsign, go
+ = getfield(new_box,'glue_set'), getfield(new_box,'glue_sign'), getfield(new_box,'glue_order')
+ return new_box, (dimensions(gset, gsign, go, k1, node_next(k1))), (dimensions(gset, gsign, go, k2))
+ -- return value: (enlarged box), (width of left glue), (width of right glue)
end
end
@@ -307,15 +313,18 @@ function luatexja.ruby.texiface(rst, rtlr, rtlp)
end
----------------------------------------------------------------
--- pre_line_break
+-- pre_linebreak
----------------------------------------------------------------
-- r, p の中身のノードは再利用される
local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end)
-- r: ルビ部分の格納された box,p: 同,親文字
+ -- no_begin: 行頭形ではないか
+ -- no_end: 行末形ではないか
local rwidth = getwidth(r)
local sumprot = rwidth - getwidth(p) -- >0
local pre_intrusion, post_intrusion
+ local pre_protrusion, post_protrusion
local ppre, pmid, ppost = tmp_tbl.ppre, tmp_tbl.pmid, tmp_tbl.ppost
local mapre, mapost = tmp_tbl.mapre, tmp_tbl.mapost
local intmode = (tmp_tbl.mode//4)%8
@@ -325,17 +334,17 @@ local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end)
mapre = min(mapre,mapost); mapost = mapre
end
if intmode == 0 then -- とりあえず組んでから決める
- p = enlarge(p, rwidth, ppre, pmid, ppost, 0, 0)
+ p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, 0, 0)
pre_intrusion = min(mapre, round(ppre*getfield(p, 'glue_set')*65536))
post_intrusion = min(mapost, round(ppost*getfield(p, 'glue_set')*65536))
elseif intmode == 1 then
pre_intrusion = min(mapre, sumprot);
post_intrusion = min(mapost, max(sumprot-pre_intrusion, 0))
- p = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion)
+ p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion)
elseif intmode == 2 then
post_intrusion = min(mapost, sumprot);
pre_intrusion = min(mapre, max(sumprot-post_intrusion, 0))
- p = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion)
+ p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion)
elseif intmode==3 then
local n = min(mapre, mapost)*2
if n < sumprot then
@@ -343,7 +352,7 @@ local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end)
else
pre_intrusion = sumprot//2; post_intrusion = sumprot - pre_intrusion
end
- p = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion)
+ p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion)
pre_intrusion = min(mapre, pre_intrusion + round(ppre*getfield(p, 'glue_set')*65536))
post_intrusion = min(mapost, post_intrusion + round(ppost*getfield(p, 'glue_set')*65536))
else -- intmode == 4
@@ -354,7 +363,7 @@ local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end)
else
pre_intrusion, post_intrusion = mapre, min(mapost, sumprot-mapre)
end
- p = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion)
+ p, pre_protrusion, post_protrusion = enlarge(p, rwidth, ppre, pmid, ppost, pre_intrusion, post_intrusion)
end
setshift(r, -pre_intrusion)
local rwidth = rwidth - pre_intrusion - post_intrusion
@@ -371,24 +380,29 @@ local function enlarge_parent(r, p, tmp_tbl, no_begin, no_end)
post_jfmgk = (post_intrusion > 0)
end
end
- return r, p, orig_post_intrusion, post_jfmgk
+ return r, p, orig_post_intrusion, post_jfmgk,
+ pre_protrusion - pre_intrusion, post_protrusion - post_intrusion
end
-- ルビボックスの生成(単一グループ)
-- returned value: <new box>, <ruby width>, <post_intrusion>
local max_margin
-local function new_ruby_box(r, p, tmp_tbl, no_begin, no_end)
+local function new_ruby_box(r, p, tmp_tbl, no_begin, no_end, w)
+ -- no_begin: 行頭形ではないか
+ -- no_end: 行末形ではないか
local post_intrusion, post_jfmgk = 0, false
local imode
local ppre, pmid, ppost = tmp_tbl.ppre, tmp_tbl.pmid, tmp_tbl.ppost
local mapre, mapost = tmp_tbl.mapre, tmp_tbl.mapost
local rpre, rmid, rpost, rsmash
+ local protrusion = {0, 0}; tmp_tbl[tmp_tbl.index] = protrusion
imode = tmp_tbl.mode//0x100000; rsmash = (imode%2 ==1)
imode = imode//2; rpost = imode%8;
imode = (imode-rpost)/8; rmid = imode%8;
imode = (imode-rmid)/8; rpre = imode%8
if getwidth(r) > getwidth(p) then -- change the width of p
- r, p, post_intrusion, post_jfmgk = enlarge_parent(r, p, tmp_tbl, no_begin, no_end)
+ r, p, post_intrusion, post_jfmgk, protrusion[1], protrusion[2]
+ = enlarge_parent(r, p, tmp_tbl, no_begin, no_end)
elseif getwidth(r) < getwidth(p) then -- change the width of r
r = enlarge(r, getwidth(p), rpre, rmid, rpost, 0, 0)
post_intrusion = 0
@@ -406,7 +420,7 @@ local function new_ruby_box(r, p, tmp_tbl, no_begin, no_end)
end
if need_repack then
local rt = r
- r = hpack(getlist(r), getwidth(r), 'exactly')
+ r = node_inherit_attr(hpack(getlist(r), getwidth(r), 'exactly'), r)
setlist(rt, nil); node_free(rt);
end
end
@@ -416,7 +430,8 @@ local function new_ruby_box(r, p, tmp_tbl, no_begin, no_end)
insert_after(r, k, p); setnext(p, nil)
if tmp_tbl.rubydepth >= 0 then setdepth(r, tmp_tbl.rubydepth) end
if tmp_tbl.baseheight >= 0 then setheight(p, tmp_tbl.baseheight) end
- a = node.direct.vpack(r); setshift(a, 0)
+ a = node_inherit_attr(node.direct.vpack(r), p)
+ setshift(a, 0)
set_attr(a, attr_ruby, post_intrusion)
set_attr(a, attr_ruby_post_jfmgk, post_jfmgk and 1 or 0)
if rsmash or getheight(a)<getheight(p) then
@@ -437,7 +452,10 @@ local max_allow_pre, max_allow_post
local flush_list = node.direct.flush_list
-- 中付き熟語ルビ,cmp containers
-- 「文字の構成を考えた」やつはどうしよう
-local function pre_low_cal_box(w, cmp)
+local pre_low_cal_box
+do
+ local node_prev = node.direct.getprev
+pre_low_cal_box = function (w, cmp)
local rb = {}
local pb = {}
local kf = {}
@@ -450,18 +468,24 @@ local function pre_low_cal_box(w, cmp)
local coef = {} -- 連立一次方程式の拡大係数行列
local rtb = expand_3bits(rst.stretch)
+ local kb, ka
+ if rst.quirk_protrusion then
+ kb = node_prev(node_tail(wv)); ka = node_next(kb)
+ node_remove(wv, kb); node_remove(wv, ka)
+ end
-- node list 展開・行末形の計算
local nt, nta, ntb = wv, nil, nil -- nt*: node temp
rst.ppre, rst.pmid, rst.ppost = rtb[6], rtb[5], rtb[4]
rst.mapre, rst.mapost = max_allow_pre, 0
- for i = 1, cmp do
+ for i = 1, cmp do
nt = node_next(nt); rb[i] = nt; nta = concat(nta, node_copy(nt))
nt = node_next(nt); pb[i] = nt; ntb = concat(ntb, node_copy(nt))
coef[i] = {}
for j = 1, 2*i do coef[i][j] = 1 end
for j = 2*i+1, 2*cmp+1 do coef[i][j] = 0 end
+ rst.index = i
kf[i], coef[i][2*cmp+2]
- = new_ruby_box(node_copy(nta), node_copy(ntb), rst, true, false)
+ = new_ruby_box(node_copy(nta), node_copy(ntb), rst, true, false, w)
end
node_free(nta); node_free(ntb)
@@ -474,8 +498,9 @@ local function pre_low_cal_box(w, cmp)
for j = 1, 2*i-1 do coef[cmp+i][j] = 0 end
for j = 2*i, 2*cmp+1 do coef[cmp+i][j] = 1 end
nta = concat(node_copy(rb[i]), nta); ntb = concat(node_copy(pb[i]), ntb)
+ rst.index = 2*cmp+1-i
kf[cmp+i], coef[cmp+i][2*cmp+2]
- = new_ruby_box(node_copy(nta), node_copy(ntb), rst, false, true)
+ = new_ruby_box(node_copy(nta), node_copy(ntb), rst, false, true, w)
end
-- ここで,nta, ntb には全 container を連結した box が入っているので
@@ -484,13 +509,17 @@ local function pre_low_cal_box(w, cmp)
for j = 1, 2*cmp+1 do coef[2*cmp+1][j] = 1 end
rst.ppre, rst.pmid, rst.ppost = rtb[3], rtb[2], rtb[1]
rst.mapre, rst.mapost = max_allow_pre, max_allow_post
+ rst.index = 2*cmp+1
kf[2*cmp+1], coef[2*cmp+1][2*cmp+2], post_intrusion_backup, post_jfmgk_backup
- = new_ruby_box(nta, ntb, rst, true, true)
+ = new_ruby_box(nta, ntb, rst, true, true, w)
-- w.value の node list 更新.
local nt = wv
flush_list(node_next(wv))
for i = 1, 2*cmp+1 do setnext(nt, kf[i]); nt = kf[i] end
+ if rst.quirk_protrusion then
+ insert_after(wv, nt, kb); insert_after(wv, kb, ka);
+ end
if cmp==1 then solve_1(coef)
elseif cmp==2 then solve_2(coef)
@@ -499,6 +528,7 @@ local function pre_low_cal_box(w, cmp)
end
return coef
end
+end
local first_whatsit
do
@@ -512,25 +542,40 @@ do
end
local next_cluster_array = {}
+local pre_high
-- ノード追加
-local function pre_low_app_node(head, w, cmp, coef, ht, dp)
+do
+ local node_prev = node.direct.getprev
+ local KINSOKU = luatexja.icflag_table.KINSOKU
+ local function pre_low_app_node (head, w, cmp, coef, ht, dp)
-- メインの node list 更新
- local nt = node_new(id_glue)
+ local nt = node_new(id_glue, nil, w) -- INHERIT ATTRIBUTES OF w
setglue(nt, coef[1][2*cmp+2], 0, 0, 0, 0)
set_attr(nt, attr_ruby, 1); set_attr(w, attr_ruby, 2)
head = insert_before(head, w, nt)
nt = w
for i = 1, cmp do
-- rule
- local nta = node_new(id_rule, 0);
+ local nta = node_new(id_rule, 0, w); -- INHERIT ATTRIBUTES OF w
setwhd(nta, coef[i*2][2*cmp+2], ht, dp)
insert_after(head, nt, nta)
set_attr(nta, attr_ruby, 2*i+1)
-- glue
if i~=cmp or not next_cluster_array[w] then
- nt = node_new(id_glue); insert_after(head, nta, nt)
+ nt = node_new(id_glue, nil, w); -- INHERIT ATTRIBUTE OF w
+ insert_after(head, nta, nt)
else
- nt = next_cluster_array[w]
+ nt = next_cluster_array[w]; local f = node_next(nta)
+ while f and f~=nt do
+ if getid(f)==id_glue then
+ node_remove(head, nt); insert_before(head, f, nt); f = nil
+ else if getid(f)==id_penalty and get_attr_icflag(f)==KINSOKU then
+ node_inherit_attr(f, w) -- INHERIT ATTRIBUTE OF w; for lua-ul
+ set_attr(f, attr_icflag, KINSOKU)
+ end
+ f = node_next(f)
+ end
+ end
end
setglue(nt, coef[i*2+1][2*cmp+2], 0, 0, 0, 0)
set_attr(nt, attr_ruby, 2*i+2)
@@ -540,14 +585,13 @@ local function pre_low_app_node(head, w, cmp, coef, ht, dp)
next_cluster_array[w]=nil
return head, first_whatsit(node_next(nt))
end
-
-local function pre_high(ahead)
+pre_high = function (ahead)
if not ahead then return ahead end
local head = to_direct(ahead)
post_intrusion_backup, post_jfmgk_backup = 0, false
local n = first_whatsit(head)
while n do
- if getsubtype(n) == sid_user and getfield(n, 'user_id') == RUBY_PRE then
+ if getsubtype(n) == sid_user and getfield(n, 'user_id') == RUBY_PRE then
local nv = getvalue(n)
local rst = getvalue(nv)
max_allow_pre = rst.pre or 0
@@ -567,13 +611,13 @@ local function pre_high(ahead)
if rst.exclude_pre_jfmgk_from_prev_ruby
and atr>0 and ((old_break_info[atr] or post_intrusion_backup) > 0) then
-- 「直前のルビが文字に進入→現在のルビの和文処理グルーへの進入はなし」という状況
- rst.before_jfmgk = 0
+ max_allow_pre = 0;rst.before_jfmgk = 0
end
post_intrusion_backup, post_jfmgk_backup = 0, false
max_allow_post = rst.post or 0
max_margin = rst.maxmargin or 0
local coef = pre_low_cal_box(n, rst.count)
- local s = node_tail(nv) --ルビ文字
+ local s = node_tail(nv); if rst.quirk_protrusion then s = node_prev(node_prev(s)) end --ルビ文字
head, n = pre_low_app_node(
head, n, rst.count, coef, getheight(s), getdepth(s)
)
@@ -583,11 +627,11 @@ local function pre_high(ahead)
end
return to_node(head)
end
+end
luatexbase.add_to_callback('pre_linebreak_filter', pre_high, 'ltj.ruby.pre', 100)
-luatexbase.add_to_callback('hpack_filter', pre_high, 'ltj.ruby.pre', 100)
----------------------------------------------------------------
--- post_line_break
+-- post_linebreak
----------------------------------------------------------------
local post_lown
do
@@ -595,47 +639,110 @@ do
local id = get_attr(wv, attr_ruby_id) or 0
if id>0 and cache_handle then
cache_handle:write(
- 'lrob[' .. tostring(id) .. ']=' .. num .. '\nlrob[' .. tostring(-id) .. ']=' .. tostring(bool) .. '\n')
+ 'lrob[' .. tostring(id) .. ']=' .. tostring(num) .. '\nlrob[' .. tostring(-id) .. ']=' .. tostring(bool) .. '\n')
end
end
-
+ local node_prev = node.direct.getprev
+ local function new_kern(inherit, num)
+ local k = node_new(id_kern, 1, inherit); setkern(k, num); set_attr(kt, attr_icflag, PROCESSED);
+ return k;
+ end
post_lown = function (rs, rw, cmp, ch)
-- ch: the head of `current' hlist
if #rs ==0 or not rw then return ch end
local hn = get_attr(rs[1], attr_ruby)
local fn = get_attr(rs[#rs], attr_ruby)
- local wv = getvalue(rw)
+ local wv = getvalue(rw); local rst = getvalue(wv)
if hn==1 then
if fn==2*cmp+2 then
- local hn = node_tail(wv)
- node_remove(wv, hn)
- insert_after(ch, rs[1], hn)
- set_attr(hn, attr_icflag, PROCESSED)
- write_aux(wv, get_attr(hn, attr_ruby), get_attr(hn, attr_ruby_post_jfmgk))-- 行中形
+ -- 行中形
+ local nn = node_tail(wv);
+ if rst.quirk_protrusion then
+ local prot_b,prot_a = rst[fn-1][1], rst[fn-1][2]
+ local ka=nn; local kb = node_prev(nn); nn = node_prev(kb)
+ node_remove(wv, nn); node_remove(wv, kb); node_remove(wv, ka)
+ if prot_b~=0 then
+ setkern(kb, prot_b); insert_after(ch, rs[1], kb);
+ local kt = new_kern(rw, -prot_b); insert_after(ch, kb, kt);
+ insert_after(ch, kt, nn);
+ else
+ node_free(kb); insert_after(ch, rs[1], nn)
+ end
+ if prot_a~=0 then
+ local kt = new_kern(rw, -prot_a); insert_after(ch, nn, kt);
+ setkern(ka, prot_a); insert_after(ch, kt, ka);
+ else node_free(ka)
+ end
+ else
+ node_remove(wv, nn); insert_after(ch, rs[1], nn)
+ end
+ set_attr(nn, attr_icflag, PROCESSED)
+ write_aux(wv, get_attr(nn, attr_ruby), get_attr(nn, attr_ruby_post_jfmgk))
else
- local deg, hn = (fn-1)/2, wv
- for i = 1, deg do hn = node_next(hn) end;
- node_remove(wv, hn)
- setnext(hn, nil)
- insert_after(ch, rs[1], hn)
- set_attr(hn, attr_icflag, PROCESSED)
- write_aux(wv, get_attr(hn, attr_ruby), get_attr(hn, attr_ruby_post_jfmgk))
+ -- 行末形
+ local deg, nn = (fn-1)/2, wv; for i = 1, deg do nn = node_next(nn) end
+ if rst.quirk_protrusion then
+ local prot_b = rst[deg][1]
+ local ka = node_tail(wv); local kb = node_prev(ka);
+ node_remove(wv, nn); setnext(nn, nil); node_remove(wv, kb);
+ if prot_b~=0 then
+ setkern(kb, prot_b); insert_after(ch, rs[1], kb);
+ local kt = new_kern(rw, -prot_b); insert_after(ch, kb, kt);
+ insert_after(ch, kt, nn);
+ else
+ node_free(kb); insert_after(ch, rs[1], nn)
+ end
+ if deg==cmp then
+ local prot_a = rst[deg][2]; node_remove(wv,ka)
+ if prot_a~=0 then
+ local kt = new_kern(rw, -prot_a); insert_after(ch, nn, kt);
+ setkern(ka, prot_a); insert_after(ch, kt, ka);
+ else node_free(ka)
+ end
+ end
+ else
+ node_remove(wv, nn); setnext(nn, nil); insert_after(ch, rs[1], nn)
+ end
+
+ set_attr(nn, attr_icflag, PROCESSED)
+ write_aux(wv, get_attr(nn, attr_ruby), get_attr(nn, attr_ruby_post_jfmgk))
end
else
- local deg, hn = max((hn-1)/2,2), wv
- for i = 1, cmp+deg-1 do hn = node_next(hn) end
+ -- 行頭形
+ local nn = wv; for i = 1, cmp+max((hn-1)/2,2)-1 do nn = node_next(nn) end
-- -1 is needed except the case hn = 3,
-- because a ending-line form is removed already from the list
- node_remove(wv, hn); setnext(hn, nil)
- insert_after(ch, rs[1], hn)
- set_attr(hn, attr_icflag, PROCESSED)
+ if rst.quirk_protrusion then
+ local deg=(hn-1)/2; local prot_b = rst[2*cmp+1-deg][1]
+ local ka = node_tail(wv); node_remove(wv, nn); setnext(nn, nil);
+ if deg==1 then
+ local kb = node_prev(ka); node_remove(wv, kb);
+ if prot_b~=0 then
+ setkern(kb, prot_b); insert_after(ch, rs[1], kb);
+ local kt = new_kern(rw, -prot_b); insert_after(ch, kb, kt);
+ insert_after(ch, kt, nn);
+ else
+ node_free(kb); insert_after(ch, rs[1], nn)
+ end
+ else insert_after(ch, rs[1], nn)
+ end
+ local prot_a = rst[2*cmp+1-deg][2]; node_remove(wv,ka)
+ if prot_a~=0 then
+ local kt = new_kern(rw, -prot_a); insert_after(ch, nn, kt);
+ setkern(ka, prot_a); insert_after(ch, kt, ka);
+ else node_free(ka)
+ end
+ else
+ node_remove(wv, nn); setnext(nn, nil); insert_after(ch, rs[1], nn)
+ end
+
+ set_attr(nn, attr_icflag, PROCESSED)
if fn == 2*cmp-1 then
- write_aux(wv, get_attr(hn, attr_ruby), get_attr(hn, attr_ruby_post_jfmgk))
+ write_aux(wv, get_attr(nn, attr_ruby), get_attr(nn, attr_ruby_post_jfmgk))
end
end
for i = 1,#rs do
- local ri = rs[i]
- ch = node_remove(ch, ri); node_free(ri);
+ local ri = rs[i]; ch = node_remove(ch, ri); node_free(ri)
end
-- cleanup
if fn >= 2*cmp+1 then node_free(rw) end
@@ -644,73 +751,86 @@ do
end
local traverse_id = node.direct.traverse_id
-local function post_high_break(head)
- local rs = {} -- rs: sequence of ruby_nodes,
- local rw = nil -- rw: main whatsit
- local cmp = -2 -- dummy
- for h in traverse_id(id_hlist, to_direct(head)) do
- for i = 1, #rs do rs[i] = nil end
- local ha = getlist(h)
+local post_high_hbox, post_high_break
+do
+ local rs, rw = {}, nil -- rs: sequence of ruby_nodes, rw: main whatsit
+ local cmp
+ post_high_break = function (head)
+ for h in traverse_id(id_hlist, to_direct(head)) do
+ for i = 1, #rs do rs[i] = nil end
+ local ha = getlist(h);
+ while ha do
+ local hai = getid(ha)
+ local i = ((hai == id_glue and getsubtype(ha)==0)
+ or (hai == id_rule and getsubtype(ha)==0)
+ or (hai == id_whatsit and getsubtype(ha)==sid_user
+ and getfield(ha, 'user_id', RUBY_POST)))
+ and get_attr(ha, attr_ruby) or 0
+ if i==0 then
+ ha = node_next(ha)
+ elseif i==1 then
+ setlist(h, post_lown(rs, rw, cmp, getlist(h)))
+ for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement
+ rs[1], rw = ha, nil; ha = node_next(ha)
+ elseif i==2 then
+ rw = ha
+ cmp = getvalue(getvalue(rw)).count
+ local hb, hc = node_remove(getlist(h), rw)
+ setlist(h, hb); ha = hc
+ else -- i>=3
+ rs[#rs+1] = ha; ha = node_next(ha)
+ end
+ end
+ setlist(h, post_lown(rs, rw, cmp, getlist(h)))
+ end
+ return head
+ end
+ post_high_hbox = function (ahead)
+ for i = 1, #rs do rs[i] = nil end; rw = nil
+ local ha = to_direct(ahead); local head = ha
while ha do
local hai = getid(ha)
local i = ((hai == id_glue and getsubtype(ha)==0)
- or (hai == id_rule and getsubtype(ha)==0)
- or (hai == id_whatsit and getsubtype(ha)==sid_user
- and getfield(ha, 'user_id', RUBY_POST)))
- and get_attr(ha, attr_ruby) or 0
+ or (hai == id_rule and getsubtype(ha)==0)
+ or (hai == id_whatsit and getsubtype(ha)==sid_user
+ and getfield(ha, 'user_id', RUBY_POST)))
+ and get_attr(ha, attr_ruby) or 0
if i==0 then
ha = node_next(ha)
elseif i==1 then
- setlist(h, post_lown(rs, rw, cmp, getlist(h)))
+ head = post_lown(rs, rw, cmp, head)
for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement
rs[1], rw = ha, nil; ha = node_next(ha)
elseif i==2 then
rw = ha
cmp = getvalue(getvalue(rw)).count
- local hb, hc = node_remove(getlist(h), rw)
- setlist(h, hb); ha = hc
- else -- i>=3
+ head, ha = node_remove(head, rw)
+ else -- i >= 3
rs[#rs+1] = ha; ha = node_next(ha)
end
end
- setlist(h, post_lown(rs, rw, cmp, getlist(h)))
+ return to_node(post_lown(rs, rw, cmp, head))
end
- return head
end
-
-local function post_high_hbox(ahead)
- local ha = to_direct(ahead); local head = ha
- local rs = {}; -- rs: sequence of ruby_nodes,
- local rw = nil; -- rw: main whatsit
- local cmp
- while ha do
- local hai = getid(ha)
- local i = ((hai == id_glue and getsubtype(ha)==0)
- or (hai == id_rule and getsubtype(ha)==0)
- or (hai == id_whatsit and getsubtype(ha)==sid_user
- and getfield(ha, 'user_id', RUBY_POST)))
- and get_attr(ha, attr_ruby) or 0
- if i==0 then
- ha = node_next(ha)
- elseif i==1 then
- head = post_lown(rs, rw, cmp, head)
- for i = 2, #rs do rs[i] = nil end -- rs[1] is set by the next statement
- rs[1], rw = ha, nil; ha = node_next(ha)
- elseif i==2 then
- rw = ha
- cmp = getvalue(getvalue(rw)).count
- head, ha = node_remove(head, rw)
- else -- i >= 3
- rs[#rs+1] = ha; ha = node_next(ha)
- end
+do
+ -- pre_append_to_vlist_filter.lua: distributed with lua-ul
+ local found = kpse.find_file('pre_append_to_vlist_filter.lua', 'lua')
+ if not found then
+ luatexbase.add_to_callback('post_linebreak_filter', post_high_break, 'ltj.ruby.post_break')
+ else
+ require 'pre_append_to_vlist_filter'
+ luatexbase.add_to_callback('pre_append_to_vlist_filter',
+ function(head, loc)
+ return (loc~='post_linebreak') and head or post_high_break(head)
+ end,
+ 'ltj.ruby.post_break',
+ (luatexbase.priority_in_callback('pre_append_to_vlist_filter', 'add underlines to list') or 1))
end
- return to_node(post_lown(rs, rw, cmp, head))
+ luatexbase.add_to_callback('hpack_filter',
+ function(head) return post_high_hbox(pre_high(head)) end, 'ltj.ruby',
+ luatexbase.priority_in_callback('hpack_filter', 'add underlines to list') or nil)
end
-luatexbase.add_to_callback('post_linebreak_filter', post_high_break, 'ltj.ruby.post_break', 100)
-luatexbase.add_to_callback('hpack_filter', post_high_hbox, 'ltj.ruby.post_hbox', 101)
-
-
----------------------------------------------------------------
-- for jfmglue callbacks
----------------------------------------------------------------
@@ -736,7 +856,7 @@ do
p = 0
end
rst.pre = -p; rst.exclude_pre_from_prev_ruby = (s<0);
- rst.exclude_pre_jfmgk_from_prev_ruby = (ltjs.table_current_stack[RIPOST +Nq.char] or 0)<0;
+ rst.exclude_pre_jfmgk_from_prev_ruby = (ltjs.table_current_stack[RIPOST +Nq.char] or 0)<0;
end
if Nq.prev_ruby then
set_attr(lp, attr_ruby, Nq.prev_ruby)
@@ -758,6 +878,11 @@ do
elseif rst.pre < 0 then -- auto
rst.pre = 0
end
+ if rst.quirk_protrusion then
+ local lk = node_new(id_kern, 1, Nq.nuc, lp); set_attr(lk, attr_icflag, PROCESSED)
+ insert_after(lpv, node_tail(lpv), lk)
+ insert_after(lpv, node_tail(lpv), node_new(id_kern, 1))
+ end
return Np
else
return Np
@@ -780,10 +905,12 @@ do
end
local RIPOST = luatexja.stack_table_index.RIPOST
local abs = math.abs
+ local ltjj_after_hlist=luatexja.jfmglue.after_hlist
+ local ltjj_check_box_high=luatexja.jfmglue.check_box_high
local function whatsit_after_callback(s, Nq, Np, head)
if not s and getfield(Nq.nuc, 'user_id') == RUBY_PRE then
if Np then
- local last_glue = node_new(id_glue)
+ local last_glue = node_new(id_glue, nil, Nq.nuc) -- INHERIT ATTRIBUTE OF Nq.nuc
set_attr(last_glue, attr_icflag, 0)
insert_before(Nq.nuc, Np.first, last_glue)
Np.first = last_glue
@@ -798,8 +925,8 @@ do
end
local x = node_next(node_next(nqnv))
for i = 2, rst.count do x = node_next(node_next(x)) end
- Nq.last_char = luatexja.jfmglue.check_box_high(Nq, getlist(x), nil)
- luatexja.jfmglue.after_hlist(Nq)
+ Nq.last_char = ltjj_check_box_high(Nq, getlist(x), nil)
+ ltjj_after_hlist(Nq)
if Np and Np.id ~=id_pbox_w and type(Np.char)=='number' then
-- Np is a JAchar
if rst.post < 0 then -- auto
@@ -812,12 +939,15 @@ do
Np.prev_ruby = get_attr(getvalue(Nq.nuc), attr_ruby_id)
-- 前のクラスタがルビであったことのフラグ
else -- 直前が文字以外
- local nqnv = getvalue(Nq.nuc)
- local rst = getvalue(nqnv)
if rst.post < 0 then -- auto
rst.post = 0
end
end
+ if rst.quirk_protrusion then
+ local lk = node_tail(nqnv);
+ node_inherit_attr(lk, Nq.nuc, Np and Np.nuc)
+ set_attr(lk, attr_icflag, PROCESSED)
+ end
return head
else
return s
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls
index 5de7ff1e774..813f7d1aab6 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltjsarticle.cls
@@ -38,7 +38,7 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ltjsarticle}
- [2022/09/12 ltjsclasses ]
+ [2023/07/26 ltjsclasses ]
\def\jsc@clsname{ltjsarticle}
\def\Cjascale{0.924715}
\RequirePackage{luatexja}
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjsbook.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjsbook.cls
index 99480233056..3a156891c88 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltjsbook.cls
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltjsbook.cls
@@ -38,7 +38,7 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ltjsbook}
- [2022/09/12 ltjsclasses ]
+ [2023/07/26 ltjsclasses ]
\def\jsc@clsname{ltjsbook}
\def\Cjascale{0.924715}
\RequirePackage{luatexja}
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjskiyou.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjskiyou.cls
index 231be8bf2ef..5f62215f940 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltjskiyou.cls
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltjskiyou.cls
@@ -38,7 +38,7 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ltjskiyou}
- [2022/09/12 ltjsclasses ]
+ [2023/07/26 ltjsclasses ]
\def\jsc@clsname{ltjskiyou}
\def\Cjascale{0.924715}
\RequirePackage{luatexja}
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjspf.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjspf.cls
index 2723db71cac..730bc082b22 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltjspf.cls
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltjspf.cls
@@ -38,7 +38,7 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ltjspf}
- [2022/09/12 ltjsclasses ]
+ [2023/07/26 ltjsclasses ]
\def\jsc@clsname{ltjspf}
\def\Cjascale{0.903375}
\RequirePackage{luatexja}
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltjsreport.cls b/Master/texmf-dist/tex/luatex/luatexja/ltjsreport.cls
index 5fb4691762f..08ed724da15 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltjsreport.cls
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltjsreport.cls
@@ -38,7 +38,7 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ltjsreport}
- [2022/09/12 ltjsclasses ]
+ [2023/07/26 ltjsclasses ]
\def\jsc@clsname{ltjsreport}
\def\Cjascale{0.924715}
\RequirePackage{luatexja}
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.lua b/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua
index 1013684496a..e815ba3d682 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/luatexja.lua
@@ -423,9 +423,10 @@ local utfchar = utf.char
local function debug_show_node_X(p,print_fn, limit, inner_depth)
local k = prefix
local s
- local pt, pic = node_type(p.id), (get_attr(p, attr_icflag) or 0) % icflag_table.PROCESSED_BEGIN_FLAG
- local base = prefix .. '[' .. string.format('%7d', node.direct.todirect(p)) .. '] ' ..
- string.format('%X', pic) .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' '
+ local pt, pic = node_type(p.id), (get_attr(p, attr_icflag) or 0) --% icflag_table.PROCESSED_BEGIN_FLAG
+ local base = prefix .. '[' .. string.format('%7d', node.direct.todirect(p))
+ .. ', ' .. tostring(get_attr(p, 27)) .. '] '
+ .. string.format('%X', pic) .. ' ' .. pt .. ' ' .. tostring(p.subtype) .. ' '
if pt == 'glyph' then
s = base .. ' '
.. (p.char<0xF0000 and utfchar(p.char) or '')
diff --git a/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty b/Master/texmf-dist/tex/luatex/luatexja/luatexja.sty
index a54ede6758b..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{20240514.0}
+\def\LuaTeXjaversion{20241014.0}
%% Check if LaTeX is used.
\begingroup\expandafter\expandafter\expandafter\endgroup
diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty
index 1c8f9cba4ef..121a45ba0b1 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjcore.sty
@@ -219,10 +219,6 @@
\@latex@error{Direction change inside float!?\MessageBreak
Use \noexpand\layoutcaption provided in \string\usepackage{lltjext}}\@ehc}
%%% Remove extra xkanjiskip
-\renewcommand\@makefnmark{%
- \unless\ifnum\ltjgetparameter{direction}=3
- \hbox{}\hbox{\@textsuperscript{\normalfont\@thefnmark}}\hbox{}%
- \else\hbox{\yoko \@textsuperscript{\normalfont\@thefnmark}}\fi}
\begingroup
\@ifpackageloaded{hyperref}
{\ifdefined\real@setref\def\ltj@setrefprefix{real}\else\def\ltj@setrefprefix{}\fi}
@@ -250,6 +246,11 @@
\gdef\@stopfield{%
\inhibitglue\@tempskipa\lastskip\unskip
\hskip\@tempskipa\color@endgroup\egroup}
+%%%%%% footnote
+\renewcommand\@makefnmark{%
+ \unless\ifnum\ltjgetparameter{direction}=3
+ \hbox{}\hbox{\@textsuperscript{\normalfont\@thefnmark}}\hbox{}%
+ \else\hbox{\yoko \@textsuperscript{\normalfont\@thefnmark}}\fi}
\pretocmd{\footnote}{\inhibitglue}{}{}
\pretocmd{\footnotemark}{\inhibitglue}{}{}
\def\@ltj@process@makefnmark#1{%
diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty
index bb63ac68774..00c858e3493 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjdefs.sty
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjdefs}[2022-01-23 Default font settings of LuaTeX-ja]
+\ProvidesPackage{lltjdefs}[2024-05-16 Default font settings of LuaTeX-ja]
\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi
\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi
@@ -18,13 +18,8 @@
\DeclareKanjiEncodingDefaults{}{}
\DeclareErrorKanjiFont{JY3}{mc}{m}{n}{10}
\kanjifamily{mc}
-\ifnum\ltj@@latex@plv<1500 % <=2020-10-01
- \kanjiseries{m}
- \kanjishape{n}
-\else % >=2021-06-01
- \def\k@series{m}
- \def\k@shape{n}
-\fi
+\def\k@series{m}
+\def\k@shape{n}
\fontsize{10}{10}
\DeclareYokoKanjiEncoding{JY3}{}{}
\DeclareKanjiSubstitution{JY3}{mc}{m}{n}
@@ -37,12 +32,7 @@
\newcommand\kanjiencodingdefault{JY3}
\newcommand\kanjifamilydefault{\mcdefault}
\newcommand\kanjiseriesdefault{\mddefault}
-\ifnum 0\ifltj@ltfilehook@avail1\fi\ifdefined\@rmfamilyhook1\fi>0
- %% LaTeX 2020-02-02
- \newcommand\kanjishapedefault{\shapedefault}
-\else%% LaTeX 2019-10-01
- \newcommand\kanjishapedefault{\updefault}
-\fi
+\newcommand\kanjishapedefault{\shapedefault}
\DeclareKanjiFamily{JY3}{mc}{}
\DeclareFontShape{JY3}{mc}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi]
@@ -90,57 +80,36 @@
\DeclareMathAlphabet{\mathgt}{JY3}{gt}{m}{n}
\fi
-\ifnum 0\ifltj@ltfilehook@avail1\fi\ifdefined\@rmfamilyhook1\fi>0
-%%%% LaTeX >= 2020-02-02
\edef\bfseries@mc{\bfdefault}
\edef\bfseries@gt{\bfdefault}
\def\bfseries@jtt{\bfseries@mc}
\edef\mdseries@mc{\mddefault}
\edef\mdseries@gt{\mddefault}
\def\mdseries@jtt{\mdseries@mc}
-\fi
\newif\if@ltj@match@family
\@ltj@match@familyfalse
\def\verbatim@font{\normalfont\ttfamily\kanjifamily\jttdefault\selectfont}
-\def\@ltj@hook@family#1#2{% #1: csname #2: contents
- \ifltj@ltfilehook@avail % LaTeX 2020-10-01
- \AddToHook{#1}{#2}%
- \else\ifcsname @#1hook\endcsname % LaTeX 2020-02-02
- \csappto{@#1hook}{#2}%
- \else % LaTeX 2019-10-01
- \ifcsname #1 \endcsname
- \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}%
- \else
- \PackageWarningNoLine{luatexja}{%
- Patching to \expandafter\string\csname #1\endcsname\space failed%
- }%
- \fi
- \fi\fi
-}
-\@ltj@hook@family{rmfamily}{%
+\AddToHook{rmfamily}{%
\if@ltj@match@family
\prepare@family@series@update@kanji{mc}\mcdefault
\fi
}
-\@ltj@hook@family{sffamily}{%
+\AddToHook{sffamily}{%
\if@ltj@match@family
\prepare@family@series@update@kanji{gt}\gtdefault
\fi
}
-\@ltj@hook@family{ttfamily}{%
+\AddToHook{ttfamily}{%
\if@ltj@match@family
\prepare@family@series@update@kanji{jtt}\jttdefault
\fi
}
-\let\@ltj@hook@family\@undefined
-\ifltj@ltfilehook@avail % 2020-10-01
- \expandafter\def\expandafter\kanjiseriesdefault
- \expandafter{\kanjiseriesdefault\@empty}
- \let\kanjiseriesdefault@kernel\kanjiseriesdefault
-\fi
+\expandafter\def\expandafter\kanjiseriesdefault
+ \expandafter{\kanjiseriesdefault\@empty}
+\let\kanjiseriesdefault@kernel\kanjiseriesdefault
%%% \eminnershape
\expandafter\patchcmd\csname em \endcsname{\itshape}{\gtfamily\itshape}{}{}
diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty
index 2efc9435ab8..52ac44d5ccb 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjfont.sty
@@ -3,31 +3,10 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjfont}[2023-04-13 Patch to NFSS2 for LuaTeX-ja]
+\ProvidesPackage{lltjfont}[2023-05-16 Patch to NFSS2 for LuaTeX-ja]
%%%%%%%% LaTeX2e version detection
-\newcount\ltj@@latex@plv \ltj@@latex@plv=-1
-\ifltj@ltfilehook@avail
-\ExplSyntaxOn
- \cs_if_exist:NTF \__shipout_execute_main_cont:Nnnn
- {\ltj@@latex@plv=1500}% 2021-06-01
- {\ifnum\patch@level>2\relax \ltj@@latex@plv=1300\else \ltj@@latex@plv=1000\fi}% 2020-10-01
-\ExplSyntaxOff
-\else\ifdefined\@rmfamilyhook % 2020-02-02
- \ifx\@forced@seriestrue\@undefined % 2020-02-02 pl0--2
- \@latex@error
- {Please update LaTeX2e!^^J\space\space
- At least LaTeX2e 2020-02-02 patch level 3 is required}%
- {LaTeX2e 2020-02-02 patch level 2 (and 4) has a bug.}
- \else
- \ltj@@latex@plv=300
- \unless\ifx\series@maybe@drop@one@m@x\@undefined % pl5 + develop
- \ltj@@latex@plv=501
- \else\unless\ifx\series@maybe@drop@one@m\@undefined % patch level 5
- \ltj@@latex@plv=500
- \fi\fi
- \fi
-\fi\fi
+\newcount\ltj@@latex@plv \ltj@@latex@plv=1500
%% patching \DeclareTextComposite
\def\ltj@chardef@text@cmd#1{%
@@ -400,59 +379,7 @@
\directlua{luatexja.jfont.pickup_alt_font_a('\f@size')}%
}%
\fi}
-\ifnum\ltj@@latex@plv<1500 % <=2020-10-01
-\protected\def\ltj@selectfont@patch{%
- \ltj@@start@time@measure{selectfont}%
- \let\tmp@error@fontshape\error@fontshape
- \let\error@fontshape\error@kfontshape
- \ltj@@is@kyenc{\k@encoding}\ifin@%
- \let\cy@encoding\k@encoding
- \ensure@KanjiEncodingPair{t}%
- \edef\ct@encoding{\csname t@enc@\k@encoding\endcsname}%
- \else
- \ltj@@is@ktenc{\k@encoding}\ifin@%
- \let\ct@encoding\k@encoding
- \ensure@KanjiEncodingPair{y}%
- \edef\cy@encoding{\csname y@enc@\k@encoding\endcsname}%
- \else
- \@latex@error{KANJI Encoding scheme `\k@encoding' unknown}\@eha
- \fi
- \fi
- \global\let\ltj@afont@name=\font@name
- \ltj@selectfont@tate\ltj@selectfont@yoko
-%
- \edef\tmp@item{{\k@encoding}}\expandafter\def\expandafter\k@encoding\tmp@item
- \kenc@update
- \global\let\font@name=\ltj@afont@name
- \let\error@fontshape\tmp@error@fontshape
- \if@knjcmd \@knjcmdfalse
- \expandafter\ifx
- \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\relax
- \expandafter\ifx
- \csname rel@\k@encoding/\k@family/\k@series/all\endcsname\relax
- \else
- \csname rel@\k@encoding/\k@family/\k@series/all\endcsname\selectfont
- % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり
- \fi
- \else
- \csname rel@\k@encoding/\k@family/\k@series/\k@shape\endcsname\selectfont
- % 警告: 再び \selectfont を呼んでいる.無限ループの可能性あり
- \fi
- \fi
- \global\let\font@name=\ltj@afont@name
- \ltj@@stop@time@measure{selectfont}%
-}
-\RequirePackage{everysel}
-\let\ltj@@EverySelectfont@Init=\@EverySelectfont@Init
-\expandafter\expandafter\expandafter\let
-\expandafter\expandafter\csname ltj@@orig@selectfont\endcsname\csname selectfont\space\endcsname
-\@EverySelectfont@Init% for LaTeX2e <=2020-10-01
-\def\@EverySelectfont@Init{%
- \expandafter\let\csname selectfont\space \endcsname \ltj@@orig@selectfont
- \ltj@@EverySelectfont@Init
-}
-\EverySelectfont{\ltj@selectfont@patch}
-\else % LaTeX2e >=2021-06-01
+
\AddToHook{selectfont}[luatexja]{%
\ltj@@start@time@measure{selectfont}%
\ifx\delayed@k@adjustment\@empty
@@ -514,7 +441,6 @@
\global\let\font@name=\ltj@afont@name
\ltj@@stop@time@measure{selectfont}%
}
-\fi
\bgroup
\def\ltj@@dir@patch#1#2#3{%
@@ -721,8 +647,6 @@
}
%%%%%%
-\ifnum\ltj@@latex@plv>0
-%%%% LaTeX >= 2020-02-02
\newif\if@shape@roman@kanji
\def\merge@kanji@series#1{%
@@ -740,76 +664,11 @@
\@nil
}
-\ifnum\ltj@@latex@plv>500 % !!! pl5 + develop
\def\set@target@series@kanji#1{%
\edef\k@series{#1}%
\series@maybe@drop@one@m\k@series\k@series
}
-\else\ifnum\ltj@@latex@plv>300 % !!! pl5
- \def\set@target@series@kanji#1{%
- \edef\k@series{#1}%
- \expandafter\series@maybe@drop@one@m\expandafter{\k@series}\k@series
- }
-\else % !!! pl 3, 4
- \def\set@target@series@kanji#1{%
- \edef\k@series{#1}%
- \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}%
- }
-\fi\fi
-\ifnum\ltj@@latex@plv<1500% <=2020-10-01
-\def\merge@kanji@series@#1#2#3\@nil{%
- \def\reserved@a{#3}%
- \ifx\reserved@a\@empty
- \set@target@series@kanji{#2}%
- \else
- \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
- \maybe@load@fontshape\endgroup
- \edef\reserved@a{\k@encoding /\k@family /#1/\k@shape}%
- \ifcsname \reserved@a \endcsname
- \set@target@series@kanji{#1}%
- \else
- \ifcsname \k@encoding /\k@family /#2/\k@shape \endcsname
- \set@target@series@kanji{#2}%
- {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
- \else
- \set@target@series@kanji{#3}%
- {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
- \fi
- \fi
- \fi
-}
-\def\merge@kanji@shape@#1#2#3\@nil{%
- \def\reserved@a{#3}%
- \ifx\reserved@a\@empty
- \if@shape@roman@kanji
- \set@safe@kanji@shape{#2}{}%
- \else
- \edef\k@shape{#2}%
- \fi
- \else
- \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
- \maybe@load@fontshape\endgroup
- \edef\reserved@a{\k@encoding /\k@family /\k@series/#1}%
- \ifcsname \reserved@a\endcsname
- \edef\k@shape{#1}%
- \else
- \ifcsname \k@encoding /\k@family /\k@series/#2\endcsname
- \edef\k@shape{#2}%
- {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
- \else
- \if@shape@roman@kanji
- \set@safe@kanji@shape{#3}%
- {{\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}}%
- \else
- \edef\k@shape{#3}%
- {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
- \fi
- \fi
- \fi
- \fi
-}
-\else % >=2021-06-01
\def\merge@kanji@series@#1#2#3\@nil{%
\def\reserved@a{#3}%
\ifx\reserved@a\@empty
@@ -892,20 +751,8 @@
\fi
}
\let\delayed@merge@kanji@shape\merge@kanji@shape@without@substitution
-\fi
\newif\if@forced@series@kanji
-\ifnum\ltj@@latex@plv=300 % 2020-02-02 pl3, 4
- \DeclareRobustCommand\romanseries[1]{\merge@font@series{#1}}
- \DeclareRobustCommand\kanjiseries[1]{\merge@kanji@series{#1}}
- \DeclareRobustCommand\romanseriesforce[1]{\edef\f@series{#1}}
- \DeclareRobustCommand\kanjiseriesforce[1]{\edef\k@series{#1}}
-\else\ifnum\ltj@@latex@plv<1500% >=2020-02-02 pl5 and <=2020-10-01
- \DeclareRobustCommand\romanseries[1]{\@forced@seriesfalse\merge@font@series{#1}}
- \DeclareRobustCommand\kanjiseries[1]{\@forced@series@kanjifalse\merge@kanji@series{#1}}
- \DeclareRobustCommand\romanseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}}
- \DeclareRobustCommand\kanjiseriesforce[1]{\@forced@series@kanjitrue\edef\k@series{#1}}
-\else% >=2021-06-01
\DeclareRobustCommand\romanseries[1]{\@forced@seriesfalse
\expandafter\def\expandafter\delayed@f@adjustment\expandafter
{\delayed@f@adjustment\delayed@merge@font@series{#1}}}
@@ -919,22 +766,9 @@
\expandafter\def\expandafter\delayed@k@adjustment\expandafter
{\delayed@k@adjustment\edef\k@series{#1}}}
\let\delayed@k@adjustment\@empty
-\fi\fi
\DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}%
\DeclareRobustCommand\fontseriesforce[1]{\kanjiseriesforce{#1}\romanseriesforce{#1}}%
-\ifnum\ltj@@latex@plv<1500% <=2020-10-01
- \DeclareRobustCommand\romanshape[1]{\merge@font@shape{#1}}
- \DeclareRobustCommand\kanjishape[1]{\merge@kanji@shape{#1}}
- \DeclareRobustCommand\fontshape[1]{%
- \@shape@roman@kanjitrue
- \merge@font@shape{#1}\merge@kanji@shape{#1}%
- \@shape@roman@kanjifalse
- }
- \DeclareRobustCommand\romanshapeforce[1]{\edef\f@shape{#1}}
- \DeclareRobustCommand\kanjishapeforce[1]{\edef\k@shape{#1}}
- \DeclareRobustCommand\fontshapeforce[1]{\set@safe@kanji@shape{#1}{}\romanshapeforce{#1}}
-\else% >=2021-06-01
\DeclareRobustCommand\romanshape[1]{%
\expandafter\def\expandafter\delayed@f@adjustment\expandafter
{\delayed@f@adjustment\delayed@merge@font@shape{#1}}}
@@ -956,9 +790,6 @@
\romanshapeforce{#1}%
\expandafter\def\expandafter\delayed@k@adjustment\expandafter
{\delayed@k@adjustment\set@safe@kanji@shape{#1}{}}}
-\fi
-\ifnum\ltj@@latex@plv>1499
-%%%% LaTeX >= 2021-06-01
\DeclareRobustCommand\usekanji[4]{%
\kanjiencoding{#1}\edef\k@family{#2}%
\set@target@series@kanji{#3}\edef\k@shape{#4}%
@@ -969,42 +800,6 @@
\set@target@series{#3}\edef\f@shape{#4}%
\let\delayed@f@adjustment\@empty
\selectfont\ignorespaces}
-\else\ifnum\ltj@@latex@plv>1000
-%%%% 2021-10-01 PL3 <= LaTeX < 2021-06-01
-\DeclareRobustCommand\usekanji[4]{%
- \kanjiencoding{#1}\edef\k@family{#2}%
- \set@target@series@kanji{#3}\edef\k@shape{#4}%
- \selectfont\ignorespaces}
-\DeclareRobustCommand\useroman[4]{%
- \romanencoding{#1}\edef\f@family{#2}%
- \set@target@series{#3}\edef\f@shape{#4}%
- \selectfont\ignorespaces}
-\else
-%%%% 2020-10-01 <= LaTeX < 2020-10-01 PL3
-\DeclareRobustCommand\usekanji[4]{%
- \kanjiencoding{#1}\edef\k@family{#2}\edef\k@series{#3}\edef\k@shape{#4}%
- \selectfont\ignorespaces}
-\DeclareRobustCommand\useroman[4]{%
- \romanencoding{#1}\edef\f@family{#2}\edef\f@series{#3}\edef\f@shape{#4}%
- \selectfont\ignorespaces}
-\fi\fi
-%%%% LaTeX >= 2020-02-02 END
-\else
-%%%% LaTeX 2019-10-01
-\DeclareRobustCommand\romanseries[1]{\edef\f@series{#1}}
-\DeclareRobustCommand\kanjiseries[1]{\edef\k@series{#1}}
-\DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
-\DeclareRobustCommand\romanshape[1]{\edef\f@shape{#1}}
-\DeclareRobustCommand\kanjishape[1]{\edef\k@shape{#1}}
-\DeclareRobustCommand\fontshape[1]{\set@safe@kanji@shape{#1}{}\romanshape{#1}}
-\DeclareRobustCommand\usekanji[4]{%
- \kanjiencoding{#1}\kanjifamily{#2}\kanjiseries{#3}\kanjishape{#4}%
- \selectfont\ignorespaces}
-\DeclareRobustCommand\useroman[4]{%
- \romanencoding{#1}\romanfamily{#2}\romanseries{#3}\romanshape{#4}%
- \selectfont\ignorespaces}
-%%%% LaTeX 2019-10-01 END
-\fi
%%%%
\def\set@safe@kanji@shape#1#2{%
@@ -1026,8 +821,6 @@
\else\useroman{#1}{#2}{#3}{#4}%
\fi}
-\ifnum 0\ifltj@ltfilehook@avail1\fi\ifdefined\@rmfamilyhook1\fi>0
-%%%% LaTeX >= 2020-02-02
\let\prepare@family@series@update@kanji=\prepare@family@series@update
\patchcmd\prepare@family@series@update{\fontfamily}{\romanfamily}{}{}
\patchcmd\prepare@family@series@update@kanji{\if@forced@series}{\if@forced@series@kanji}{}{}
@@ -1049,34 +842,16 @@
\patchcmd\update@series@target@value@kanji{\f@series}{\k@series}{}{}
\def\@meta@family@list@kanji{\@elt{mc}\@elt{gt}\@elt{jtt}}
-\def\@ltj@hook@series@default#1#2#3{%
- \ifltj@ltfilehook@avail % 2020-10-01
- \AddToHook{#1/defaults}{#2}%
- \else\ifcsname @set#1defaultshook\endcsname %after 2020-04-07
- \expandafter\g@addto@macro\csname @set#1defaultshook\endcsname{#2}%
- \else % 2020-02-02
- \expandafter\patchcmd\csname #1 \endcsname{#3}{#3#2}{}{}%
- \fi\fi
-}
-\@ltj@hook@series@default{bfseries}{%
+\AddToHook{bfseries/defaults}{%
\let\bfseries@mc\bfdef@ult
\let\bfseries@gt\bfdef@ult
\let\bfseries@jtt\bfdef@ult
-}{%
- \let\bfseries@rm\bfdef@ult
- \let\bfseries@sf\bfdef@ult
- \let\bfseries@tt\bfdef@ult
}
-\@ltj@hook@series@default{mdseries}{%
+\AddToHook{mdseries/defaults}{%
\let\mdseries@mc\mddef@ult
\let\mdseries@gt\mddef@ult
\let\mdseries@jtt\mddef@ult
-}{%
- \let\mdseries@rm\mddef@ult
- \let\mdseries@sf\mddef@ult
- \let\mdseries@tt\mddef@ult
}
-\let\@ltj@hook@series@default\@undefined
\expandafter\patchcmd\csname bfseries \endcsname{%
\ifx\f@family\rmdef@ult \fontseries\bfseries@rm
@@ -1105,105 +880,41 @@
\fi\fi\fi
}{}{}
-\def\@ltj@hook@series#1#2{%
- \ifltj@ltfilehook@avail % 2020-10-01
- \AddToHook{#1}{#2}%
- \else % 2020-02-02
- \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}%
- \fi
-}
-\@ltj@hook@series{bfseries}{%
+\AddToHook{bfseries}{%
\ifx\k@family\mcdef@ult \kanjiseries\bfseries@mc
\else\ifx\k@family\gtdef@ult \kanjiseries\bfseries@gt
\else\ifx\k@family\jttdef@ult\kanjiseries\bfseries@jtt
\else \kanjiseries\bfdefault
\fi\fi\fi
}
-\@ltj@hook@series{mdseries}{%
+\AddToHook{mdseries}{%
\ifx\k@family\mcdef@ult \kanjiseries\mdseries@mc
\else\ifx\k@family\gtdef@ult \kanjiseries\mdseries@gt
\else\ifx\k@family\jttdef@ult\kanjiseries\mdseries@jtt
\else \kanjiseries\mddefault
\fi\fi\fi
}
-\let\@ltj@hook@series\@undefined
-\def\@ltj@hook@efd#1#2{%
- \ifltj@ltfilehook@avail % 2020-10-01
- \AddToHook{expand@font@defaults}{#1}%
- \else\ifdefined\@expandfontdefaultshook %after 2020-04-07
- \g@addto@macro\@expandfontdefaultshook{#1#2}%
- \else % 2020-02-02
- \appto\expand@font@defaults{#1#2}%
- \fi\fi
-}
-\@ltj@hook@efd{%
+\AddToHook{expand@font@defaults}{%
\edef\mcdef@ult{\mcdefault}%
\edef\gtdef@ult{\gtdefault}%
\edef\jttdef@ult{\jttdefault}%
-}{\edef\kanjidef@ult{\kanjifamilydefault}}
-\let\@ltj@hook@efd\@undefined
+ \edef\kanjidef@ult{\kanjifamilydefault}}
-\ifltj@ltfilehook@avail % 2020-10-01
- \appto\init@series@setup{%
- \ifx\kanjiseriesdefault\kanjiseriesdefault@kernel
- \mdseries
- \let\kanjiseriesdefault\k@series
- \fi
- }
-\else
- \appto\init@series@setup{%
- \ifx\kanjidef@ult\mcdef@ult \mcfamily
- \else\ifx\kanjidef@ult\gtdef@ult \gtfamily
- \else\ifx\kanjidef@ult\jttdef@ult \jttfamily
- \fi\fi\fi
- }
-\fi
-
-\def\@ltj@hook@dfh#1{%
- \ifltj@ltfilehook@avail % 2020-10-01
- \AddToHook{normalfont}{#1}%
- \else\ifdefined\@defaultfamilyhook
- \g@addto@macro\@defaultfamilyhook{#1}%
- \else % 2020-02-02
- \expandafter\patchcmd\csname normalfont \endcsname{\selectfont}{#1\selectfont}{}{}%
- \let\reset@font\normalfont
- \fi\fi
+\appto\init@series@setup{%
+ \ifx\kanjiseriesdefault\kanjiseriesdefault@kernel
+ \mdseries
+ \let\kanjiseriesdefault\k@series
+ \fi
}
-\ifnum\ltj@@latex@plv>1499
-\@ltj@hook@dfh{%
+\AddToHook{normalfont}{%
\kanjiencoding{\kanjiencodingdefault}%
\edef\k@family{\kanjifamilydefault}%
\edef\k@series{\kanjiseriesdefault}%
\edef\k@shape{\kanjishapedefault}%
\let\delayed@k@adjustment\empty
}
-\else
-\@ltj@hook@dfh{%
- \kanjiencoding{\kanjiencodingdefault}%
- \edef\k@family{\kanjifamilydefault}%
- \edef\k@series{\kanjiseriesdefault}%
- \edef\k@shape{\kanjishapedefault}%
-}
-\fi
-\let\@ltj@hook@dfh\@undefined
-%%%% LaTeX >= 2020-02-02 END
-\else
-%%%% LaTeX 2019-10-01
-\DeclareRobustCommand\normalfont{%
- \useroman\encodingdefault\familydefault\seriesdefault\shapedefault
- \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault}
-\let\reset@font\normalfont
-%%%% LaTeX 2019-10-01 END
-\fi
-
-
-
-\ifdefined\prepare@family@series@update@kanji\else
-%%%% LaTeX 2019-10-01
-\def\prepare@family@series@update@kanji#1{\kanjifamily}
-\fi
\DeclareRobustCommand\mcfamily{%
\unless\ifltj@disablejfam\not@math@alphabet\mcfamily\mathmc\fi
diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-array.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-array.sty
index 9575dc3c049..fa5fe7b9339 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-array.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-array.sty
@@ -3,7 +3,9 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjp-array}[2019-07-18 Patch to array for LuaTeX-ja]
+\ProvidesPackage{lltjp-array}[2024-07-21 Patch to array for LuaTeX-ja]
+
+\@ifpackageloaded{array}{\def\lltjp@array@array@loaded{1}}{\let\lltjp@array@array@loaded\relax}
\RequirePackage{etoolbox,array}
@@ -11,16 +13,23 @@
\ignorespaces\@sharp\unskip
}{%
\ltj@sharp
-}{}{}
+}{}{% >=2024-06-01
+ \def\ltj@sharp{\relax\pltx@next@inhibitglue\ltjfakeboxbdd\ignorespaces\@sharp\textonly@unskip\ltjfakeboxbdd}
+ \patchcmd\insert@column{%
+ \ignorespaces\@sharp\textonly@unskip
+ }{%
+ \ltj@sharp
+ }{}{}
+}
\@ifpackageloaded{lltjext}{}{%
%% remove extra \xkanjiskip (pLaTeX2e 2016/04/17)
-\def\@tabular{%
- \leavevmode \null
- \hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup
- \let\d@llarend\endgroup
- \@tabarray}
-\def\endtabular{\endarray $\egroup\null}
+\ifnum0<0\lltjp@array@array@loaded
+ \patchcmd{\@tabular}{\leavevmode}{\leavevmode\null}{}{}
+ \patchcmd{\@tabular}{\leavevmode\null\null}{\leavevmode\null}{}{}
+ \apptocmd{\endtabular}{\null}{}{}
+ \let\lltjp@array@array@loaded\undefined
+\fi
\expandafter \let \csname endtabular*\endcsname = \endtabular
}
\endinput
diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-footmisc.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-footmisc.sty
index edde267d3c7..5ee7d407ce5 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-footmisc.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-footmisc.sty
@@ -3,63 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjp-footmisc}[2022-02-19 Patch to footmisc for LuaTeX-ja]
+\ProvidesPackage{lltjp-footmisc}[2024-07-22 Patch to footmisc for LuaTeX-ja]
-\@ifpackagelater{footmisc}{2022-02-10}{%% v6.0a or later
- \patchcmd{\@makenormalcolbox}{\vskip -\@outputbox@depth\@textbottom}%
- {\pltx@adjust@wd@outputbox\vskip -\@outputbox@depth\@textbottom}{}{}%
- \let\ltj@next\endinput
-}{\let\ltj@next\relax}
-\ltj@next
-
-% old (v5.5)
-\let \if@tempswa \ifFN@bottom
-\ifFN@para \@tempswatrue \fi
-\if@tempswa
- \ifFN@bottom
- \toks@{\setbox\@outputbox \box\@cclv
- \xdef\@freelist{\@freelist\@midlist}%
- \global\let\@midlist\@empty
- \@combinefloats
- \ifvoid\footins
- \else
- \setbox\@outputbox \vbox\bgroup
- \boxmaxdepth\@maxdepth
- \unvbox\@outputbox
- \vfill\relax
- }
- \the\FN@temptoken
- \toks@\expandafter{\the\toks@\egroup\fi}
- \else
- \toks@{\ifvoid\footins
- \setbox\@outputbox\box\@cclv
- \else
- \setbox\@outputbox \vbox\bgroup
- \boxmaxdepth\@maxdepth
- \unvbox\@cclv
- }
- \the\FN@temptoken
- \toks@\expandafter{\the\toks@
- \egroup
- \fi
- \xdef\@freelist{\@freelist\@midlist}%
- \global\let\@midlist\@empty
- \@combinefloats
- }%
- \fi
- \toks@\expandafter{\the\toks@
- \ifvbox\@kludgeins
- \@makespecialcolbox
- \else
- \setbox\@outputbox \vbox to\@colht{%
- \@texttop \dimen@\dp\@outputbox
- \unvbox\@outputbox
- \pltx@adjust@wd@outputbox
- \vskip -\dimen@\@textbottom
- }%
- \fi
- \global\maxdepth\@maxdepth
- }
- \edef\@makecol{\the\toks@}
-\fi
-\endinput
+\patchcmd{\@makenormalcolbox}{\vskip -\@outputbox@depth\@textbottom}%
+ {\pltx@adjust@wd@outputbox\vskip -\@outputbox@depth\@textbottom}{}{}%
diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-geometry.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-geometry.sty
index 67b0f5de7f7..641fa4a34df 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-geometry.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-geometry.sty
@@ -3,7 +3,7 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjp-geometry}[2021-10-24 Patch to geometry for LuaTeX-ja with vertical writing mode]
+\ProvidesPackage{lltjp-geometry}[2024-05-16 Patch to geometry for LuaTeX-ja with vertical writing mode]
\RequirePackage{expl3}
\ifdefined\if@ltj@@geometry@tate\expandafter\endinput\fi
\newif\if@ltj@@geometry@tate
@@ -31,15 +31,6 @@
%============================================
\unless\ifdefined\ltj@ExecuteAfterPackage
-\expandafter\newif\csname ifltj@ltfilehook@avail\endcsname
-\@ifl@t@r\fmtversion{2020-10-01}{%
- \@ifl@t@r\fmtversion{2020-10-02}{\ltj@ltfilehook@availtrue}
- {%
- \ifnum\patch@level<0\relax \ifnum\patch@level<-6 \ltj@ltfilehook@availtrue\fi
- \else\ltj@ltfilehook@availtrue\fi
- }%
-}{}
-\ifltj@ltfilehook@avail
%% \ltj@ExecuteBeforePackage <package><code> and \ltj@ExecuteAfterPackage <package><code>
%% no-starred version: do nothing if the <package> is loaded
%% starred version: do <code> right away if the <package> is loaded
@@ -64,11 +55,6 @@
\@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteBeforePackage{#1}{#2}}%
}
}
-\else
- \RequirePackage{filehook}
- \let\ltj@ExecuteAfterPackage=\AtEndOfPackageFile
- \let\ltj@ExecuteBeforePackage=\AtBeginOfPackageFile
-\fi
\fi
%============================================
@@ -89,12 +75,8 @@
\else
\@gobble\iftrue\csname iftdir\endcsname \bool_set_true:N \l_tmpa_bool \fi
\fi
-\ifltj@ltfilehook@avail
- \prop_map_inline:Nn \g__hook_begindocument_code_prop
- { \tl_if_in:nnT {#2} {\tate} {\bool_set_true:N \l_tmpa_bool} }
-\else
- \tl_if_in:NnT \@begindocumenthook {\tate} {\bool_set_true:N \l_tmpa_bool}
-\fi
+\prop_map_inline:Nn \g__hook_begindocument_code_prop
+ { \tl_if_in:nnT {#2} {\tate} {\bool_set_true:N \l_tmpa_bool} }
\bool_if:NT \l_tmpa_bool {
\if@ltj@@geometry@forceoff
\@ltj@@geometry@tatefalse
diff --git a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-siunitx.sty b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-siunitx.sty
index 9c4526c3fdb..292cbf00bfe 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-siunitx.sty
+++ b/Master/texmf-dist/tex/luatex/luatexja/patches/lltjp-siunitx.sty
@@ -1,5 +1,5 @@
%
-% lltjp-siunitx.sty 2022-12-14
+% lltjp-siunitx.sty 2024-06-10
%
\NeedsTeXFormat{LaTeX2e}
@@ -7,7 +7,6 @@
\RequirePackage{siunitx}
\makeatletter
\ExplSyntaxOn
-\cs_if_exist:NTF \siunitx_print_text:n {% siunitx v3.00
\cs_set_protected:Npn \siunitx_print_text:n #1
{
\text
@@ -32,104 +31,26 @@
}
}
\cs_set_eq:NN \ltj_orig__siunitx_table_collect_begin:w \__siunitx_table_collect_begin:w
-\cs_set_protected:Npn \__siunitx_table_collect_begin:w #1 \relax
- { \ltj_orig__siunitx_table_collect_begin:w }
-\RenewDocumentCommand \tablenum { O { } m }
- {
- \mode_leave_vertical:
- \group_begin:
- \keys_set:nn { siunitx } {#1}
- \siunitx_cell_begin:w
- \relax \ignorespaces #2
- \siunitx_cell_end:
- \group_end:
- }
-}% siunitx v3.00 end
-{% siunitx v2.xx
-\cs_generate_variant:Nn \tl_if_in:NnT { coT }
-\cs_new:Nn \__ltj_siunix_patch_inner:n {
- \cs_if_exist:cT { #1_tl } {
- \tl_if_in:coT { #1_tl } { \tex_char:D } {
- \tl_replace_all:cnn { #1_tl } { \tex_char:D } { \ltjalchar }
- }
+\cs_set_protected:Npn \__siunitx_table_collect_begin:w #1 {
+ \token_if_eq_meaning:NNTF #1 \relax
+ {\ltj_orig__siunitx_table_collect_begin:w }
+ {\ltj_orig__siunitx_table_collect_begin:w #1 }
}
-}
-\cs_new:Nn \__ltj_siunix_patch_inner_math:n {
- \__ltj_siunix_patch_inner:n { l__siunitx_#1_math }
- \__ltj_siunix_patch_inner:n { l__siunitx_#1_text }
-}
-\AtBeginDocument {
- \__ltj_siunix_patch_inner:n { c__siunitx_minus }
- \__ltj_siunix_patch_inner:n { c__siunitx_mu }
- \__ltj_siunix_patch_inner_math:n { angstrom }
- \__ltj_siunix_patch_inner_math:n { arcminute }
- \__ltj_siunix_patch_inner_math:n { arcsecond }
- \__ltj_siunix_patch_inner_math:n { ohm }
-}
-
-%%%% new table column: S and s
-\bool_new:N \l__ltj_siunitx_table_collect_relax_bool
-\cs_set_protected:Npn \__siunitx_table_collect_begin_s: {
- \bool_set_false:N \l__ltj_siunitx_table_collect_relax_bool
- \cs_set_eq:NN \__siunitx_table_collect_token:N
- \__siunitx_table_collect_token_s:N
- \cs_set_eq:NN \__siunitx_table_print: \__siunitx_table_print_s:
- \__siunitx_table_collect_init_s:
- \__siunitx_table_collect_get:
-}
-
-\cs_set_protected:Npn \__siunitx_table_collect_not_braced:N #1
+\cs_set_protected:Npn \__siunitx_table_collect_token:N #1
{
- \token_if_eq_meaning:NNTF #1 \tex_relax:D {
- \bool_if:NTF \l__ltj_siunitx_table_collect_relax_bool {
- \__siunitx_table_collect_not_braced_aux_i:N #1
- } {
- \bool_set_true:N \l__ltj_siunitx_table_collect_relax_bool
- }
- } {
- \token_if_eq_meaning:NNF #1 \ltjfakeboxbdd {
- \token_if_eq_meaning:NNF #1 \pltx@next@inhibitglue {
- \token_if_eq_meaning:NNF #1 \tex_ignorespaces:D
+ \__siunitx_table_collect_search:NnF #1
{
- \token_if_eq_meaning:NNF #1 \tex_unskip:D
- { \__siunitx_table_collect_not_braced_aux_i:N #1 }
+ \ignorespaces { \__siunitx_table_collect_ignore_spaces:N #1}
+ \pltx@next@inhibitglue { \__siunitx_table_collect_loop:}
+ \ltjfakeboxbdd { \__siunitx_table_collect_loop:}
+ \textonly@unskip { \__siunitx_table_collect_loop:}
+ \unskip { \__siunitx_table_collect_loop:}
+ \end { \tabularnewline \end }
+ \relax { \__siunitx_table_collect_relax:N #1 }
+ \tabularnewline { \tabularnewline }
+ \siunitx_cell_end: { \siunitx_cell_end:}
}
- }}}
- \__siunitx_table_collect_next:
- }
-
-\AtBeginDocument
- {
- \@ifpackageloaded { mdwtab }
- {
- \cs_set_protected:Npn \__siunitx_table_collect_not_braced:N #1
- {
- \token_if_eq_meaning:NNTF #1 \tex_relax:D {
- \bool_if:NTF \l__ltj_siunitx_table_collect_relax_bool {
- \__siunitx_table_collect_not_braced_aux_i:N #1
- } {
- \bool_set_true:N \l__ltj_siunitx_table_collect_relax_bool
- }
- } {
- \token_if_eq_meaning:NNF #1 \ltjfakeboxbdd {
- \token_if_eq_meaning:NNF #1 \pltx@next@inhibitglue {
- \token_if_eq_meaning:NNF #1 \tex_ignorespaces:D
- {
- \token_if_eq_meaning:NNF #1 \tex_unskip:D
- {
- \token_if_eq_meaning:NNF #1 \tab@setcr
- {
- \token_if_eq_meaning:NNF #1 \@maybe@unskip
- { \__siunitx_table_collect_not_braced_aux_i:N #1 }
- }
- }
- }
- }}}
- \__siunitx_table_collect_next:
- }
- }
- { }
- }
+ { \__siunitx_table_collect_token_aux:N #1 }
}
\ExplSyntaxOff
\endinput
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-cssquery.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-cssquery.lua
index ebb29abb15c..452656845c4 100644
--- a/Master/texmf-dist/tex/luatex/luaxml/luaxml-cssquery.lua
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-cssquery.lua
@@ -156,7 +156,7 @@ local function cssquery()
-- make sure we deal with a string
value = tostring(value)
-- make the search string safe for pattern matching
- local escaped_search = search:gsub("([%(%)%.%%%+%–%*%?%[%^%$])", "%%%1")
+ local escaped_search = search:gsub("([%(%)%.%%%+%-%#%*%?%[%^%$])", "%%%1")
if modifier == "" then
return value == search
elseif modifier == "|" then
@@ -434,6 +434,18 @@ local function cssquery()
return querylist
end
+ --- Remove selector from the CSS list object.
+ -- All actions that literaly match the given selector will be removed.
+ function CssQuery:remove_selector(
+ selector -- CSS selector to be removed
+ )
+ for pos, obj in ipairs(self.querylist) do
+ if obj.source == selector then
+ table.remove(self.querylist, pos)
+ end
+ end
+ end
+
--- It tests list of queries agaings a DOM element and executes the
--- coresponding function that is saved for the matched query.
-- @return nothing
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua
index 73689add5a1..d60b1a291e2 100644
--- a/Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-domobject.lua
@@ -6,16 +6,20 @@ local dom = {}
local xml
local handler
local css_query
+local html
if kpse then
xml = require("luaxml-mod-xml")
handler = require("luaxml-mod-handler")
css_query = require("luaxml-cssquery")
+ html = require("luaxml-mod-html")
else
xml = require("luaxml.mod-xml")
handler = require("luaxml.mod-handler")
css_query = require("luaxml.cssquery")
+ html = require("luaxml.mod-html")
end
+local HtmlParser = html.HtmlParser
local void = {area = true, base = true, br = true, col = true, hr = true, img = true, input = true, link = true, meta = true, param = true}
@@ -31,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 ""
@@ -91,9 +102,14 @@ local function serialize_dom(parser, current,level, output)
local format = get_action(typ, "start")
insert(format, el, prepare_attributes(attr))
end
- local function text(typ, text)
+ local function text(typ, text, parent)
+ local parent = parent or {}
local format = get_action(typ, "text")
- insert(format, escape_element(text))
+ if parent.verbatim then
+ insert(format, text)
+ else
+ insert(format, escape_element(text))
+ end
end
local function stop(typ, el)
local format = get_action(typ, "stop")
@@ -141,7 +157,7 @@ local function serialize_dom(parser, current,level, output)
end
start(xtype, name, attributes)
- text(xtype,text_content)
+ text(xtype,text_content, (current or {})._parent)
local children = root._children or {}
for _, child in ipairs(children) do
output = serialize_dom(parser,child, level + 1, output)
@@ -153,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
)
@@ -411,8 +427,8 @@ local parse = function(
return strings
end
- --- Get table with the inner text of an element -- leading and trailing spaces are removed and elements that contain only white space are ignored.
- --- @return table
+ --- Get table with the inner text of an element - leading and trailing spaces are removed and elements that contain only white space are ignored.
+ -- @return table
function DOM_Object:stripped_strings(
current --- [optional] element to be selected
)
@@ -608,15 +624,169 @@ 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)
-- parser:
- return parser
+ return parser, DOM_Object
+end
+
+-- table of elements that should be kept without XML escaping in the DOM serialization
+local verbatim_elements = {script=true, style=true}
+
+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
+ local current_parent = dom._handler.root
+
+ local function create_node(tbl)
+ -- create node suitable for LuaXML DOM object
+ tbl._children = {}
+ -- this should copy methods from the DOM object to the newly created object
+ tbl.__index = DOM_Object
+ return setmetatable(tbl, DOM_Object)
+ end
+
+ local function build_tree(object)
+ -- convert tree produced by the HTML parser to LuaXML DOM
+ local typ = object._type
+ -- process particular node types from the HTML parser
+ if typ == "doctype" then
+ current_parent:add_child_node(create_node {_name=object.name, _type="DTD"})
+ elseif typ == "comment" then
+ current_parent:add_child_node(create_node {_text=object.text, _type="COMMENT"})
+ elseif typ == "element" then
+ local attributes = {}
+ -- convert attributes to the form expected by the DOM object
+ for _, attr in ipairs(object.attr) do
+ attributes[attr.name] = attr.value
+ end
+ local element = current_parent:create_element(object.tag, attributes)
+ -- disable escaping of text in dom:serialize() for <script> or <style> elements
+ if verbatim_elements[string.lower(object.tag)] then element.verbatim = true end
+ current_parent:add_child_node(element)
+ -- set the current element as parent for the processing of children
+ local old_parent = current_parent
+ current_parent = element
+ -- process children
+ for k,v in ipairs(object.children) do
+ build_tree(v)
+ end
+ -- restore original parent
+ current_parent = old_parent
+ elseif typ == "text" then
+ local text = current_parent:create_text_node(object.text)
+ current_parent:add_child_node(text)
+ else
+ -- for other node types, just process the children
+ for k,v in ipairs(object.children) do
+ build_tree(v)
+ end
+ end
+
+ end
+ build_tree(html_object)
+ return dom
end
+--- Parse HTML text as a DOM object.
+-- 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
+function html_parse(html_str)
+ local html_obj = HtmlParser:init(html_str)
+ local html_dom = html_obj:parse()
+ return html_to_dom(html_dom)
+end
+
+
+
--- @export
return {
parse = parse,
- serialize_dom= serialize_dom
+ serialize_dom= serialize_dom,
+ html_parse = html_parse
}
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-encodings.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-encodings.lua
new file mode 100644
index 00000000000..9369f494a52
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-encodings.lua
@@ -0,0 +1,89 @@
+--- 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 = {
+ ['ibm866'] = 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ ',
+ ['iso-8859-5'] = '�������������������������������� ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ',
+ ['macintosh'] = 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',
+ ['windows-1251'] = 'ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя',
+ ['iso-8859-13'] = '�������������������������������� ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’',
+ ['iso-8859-6'] = '�������������������������������� ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ',
+ ['iso-8859-8'] = '�������������������������������� �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏',
+ ['iso-8859-4'] = '�������������������������������� ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙',
+ ['koi8-r'] = '─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ',
+ ['iso-8859-7'] = '�������������������������������� ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ',
+ ['iso-8859-3'] = '�������������������������������� Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙',
+ ['windows-1256'] = '€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے',
+ ['windows-1258'] = '€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ',
+ ['iso-8859-14'] = '�������������������������������� Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ',
+ ['windows-1252'] = '€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ',
+ ['iso-8859-15'] = '�������������������������������� ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ',
+ ['x-mac-cyrillic'] = 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю€',
+ ['windows-1254'] = '€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ',
+ ['windows-1255'] = '€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏',
+ ['windows-1250'] = '€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙',
+ ['koi8-u'] = '─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ',
+ ['iso-8859-10'] = '�������������������������������� ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ',
+ ['windows-1257'] = '€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙',
+ ['windows-1253'] = '€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ',
+ ['iso-8859-2'] = '�������������������������������� Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙',
+ ['windows-874'] = '€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛',
+ ['iso-8859-16'] = '�������������������������������� ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ',
+}
+
+
+local utfchar = utf8.char
+
+--- Try to find an encoding in HTML string
+---@param str string HTML document
+---@param len number count of characters from the start of the string where it should search for the encoding metadata
+---@return string encoding identifier, or nil and message if no encoding was found
+local function find_html_encoding(str, len)
+ -- try to find encoding in the html document
+ -- we limit search length, because encoding should be in the document head, ideally near the start
+ local len = len or 4096
+ local sub = str:sub(1, len)
+ for meta in sub:gmatch("<meta (.-)>") do
+ local charset = meta:match("charset%s*=%s*[\"']?(.-)[\"']")
+ if charset then return string.lower(charset) end
+ end
+ return nil, "Cannot find the document encoding"
+end
+
+local function load_mapping(enc_name)
+ local enc_name = enc_name or ""
+ local enc = encodings[enc_name]
+ if not enc then return nil, "Cannot load encoding " .. enc_name end
+ local mapping,i = {}, 128
+ for pos, codepoint in utf8.codes(enc) do
+ mapping[i] = utfchar(codepoint)
+ i = i + 1
+ end
+ return mapping
+end
+
+--- Convert string to utf-8
+---@param text string for converting
+---@param mapping table
+---@return string converted string
+local function recode(text, mapping)
+ return text:gsub("(.)", function(char)
+ local charpoint = string.byte(char)
+ if charpoint > 127 then
+ return mapping[charpoint]
+ else
+ return false
+ end
+ end)
+end
+
+
+return {
+ encodings = encodings,
+ find_html_encoding = find_html_encoding,
+ load_mapping = load_mapping,
+ recode = recode
+}
+
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 69e32b16e22..9f99cc3bc4a 100644
--- a/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-html.lua
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-html.lua
@@ -1,3 +1,6 @@
+--- HTML parsing module for LuaXML
+-- @module luaxml-mod-html
+-- @author Michal Hoftich <michal.h21@gmail.com
-- Copyright Michal Hoftich, 2022
-- HTML parser inspired by https://browser.engineering/html.html
-- but then redone using https://html.spec.whatwg.org/multipage/parsing.html
@@ -1540,9 +1543,14 @@ local function is_formatting_element(name)
return formatting_element_names[name]
end
-local special_elements = {}
+local function hash_from_array(tbl)
+ local t = {}
+ for _, v in ipairs(tbl) do t[v] = true end
+ return t
+end
+
-local special_elements_list = {"address", "applet", "area", "article", "aside",
+local special_elements_list = hash_from_array {"address", "applet", "area", "article", "aside",
"base", "basefont", "bgsound", "blockquote", "body", "br", "button", "caption",
"center", "col", "colgroup", "dd", "details", "dir", "div", "dl", "dt",
"embed", "fieldset", "figcaption", "figure", "footer", "form", "frame",
@@ -1555,13 +1563,9 @@ local special_elements_list = {"address", "applet", "area", "article", "aside",
"mi","mo","mn","ms","mtext", "annotation-xml","foreignObject","desc", "title"
}
-for k,v in ipairs(special_elements_list) do
- special_elements[v] = true
-end
-
local function is_special(name)
- return special_elements[name]
+ return special_elements_list[name]
end
-- these lists are used in HtmlParser:generate_implied_endtags()
@@ -1649,8 +1653,12 @@ local HtmlTreeStates = {}
+--- @type HtmlParser
local HtmlParser = {}
+--- Initialize the HTML Object
+---@param body string HTML to be parsed
+---@return table initialized object
function HtmlParser:init(body)
local o ={}
setmetatable(o, self)
@@ -1686,10 +1694,11 @@ for _,v in ipairs(self_closing_tags_list) do self_closing_tags[v] = true end
-
+--- Execute the HTML parser
+--- @return table Root node of the HTML DOM
function HtmlParser:parse()
-- we assume utf8 input, you must convert it yourself if the source is
- -- in a different encoding
+ -- in a different encoding. for example using luaxml-encodings library
self.text = {}
self.state = self.default_state
-- this should enable us to pass over some characters that we want to ignore
@@ -1791,6 +1800,7 @@ function HtmlParser:emit(token)
elseif token_type == "start_tag" then
self:add_text()
-- self:start_attribute()
+ self:reset_insertion_mode()
self:start_tag()
-- print("Emit start tag", table.concat(token.name))
-- save last attribute
@@ -1882,8 +1892,142 @@ function HtmlParser:set_xmlns(node, parent)
end
end
+function HtmlParser:pop_element()
+ -- close the current element and add it to the DOM
+ local el = self:close_element()
+ local parent = self:get_parent()
+ parent:add_child(el)
+ return el
+end
+
+local close_p_at_start = hash_from_array {"address", "article", "aside", "blockquote", "center", "details", "dialog", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "main", "menu", "nav", "ol", "p", "search", "section", "summary", "ul", "pre", "listing", "form", "table", "xmp", "hr"}
+
+local close_headers = hash_from_array {"h1", "h2", "h3", "h4", "h5", "h6"}
+
+local body_modes = hash_from_array {"in_body", "in_cell", "in_row", "in_select", "in_table", "in_table_body", "in_frameset"}
+
+local list_items = hash_from_array {"li", "dt", "dd"}
+
+local close_address_at_end = hash_from_array{"address", "article", "aside", "blockquote", "button", "center", "details", "dialog", "dir", "div", "dl", "fieldset", "figcaption", "figure", "footer", "header", "hgroup", "listing", "main", "menu", "nav", "ol", "pre", "search", "section", "summary", "ul", "form"}
+
+
+function HtmlParser:close_unfinished(name)
+ -- close all unfinished elements until the element with the given name is found
+ for i = #self.unfinished, 1, -1 do
+ local el = self:pop_element()
+ if el.tag == name then
+ break
+ end
+ end
+end
+
+
+function HtmlParser:close_paragraph()
+ -- close currently open <p> elements
+ self:close_unfinished("p")
+end
+
+function HtmlParser:current_element_name()
+ -- return name of the current element
+ return self:get_parent().tag
+end
+
+local not_specials = hash_from_array { "address", "div", "p"}
+
+local function handle_list_item(self, name)
+ -- we handle li, dt and dd. dt and dd should close each other, li closes only itself
+ local names = {dt = true, dd = true}
+ if name == "li" then names = {li=true} end
+ for i = #self.unfinished, 1, -1 do
+ local current = self.unfinished[i]
+ local current_tag = current.tag
+ if names[current_tag] then
+ self:generate_implied_endtags(nil, {current.tag})
+ for j = #self.unfinished, i, -1 do
+ self:pop_element()
+ end
+ break
+ elseif is_special(current_tag) and not not_specials[name] then
+ break
+ end
+ end
+end
+
+local close_paragraph = function(self)
+ if is_in_button_scope(self, "p") then
+ self:close_paragraph()
+ end
+end
+
+function HtmlParser:handle_insertion_mode(token)
+ -- simple handling of https://html.spec.whatwg.org/multipage/parsing.html#tree-construction
+ -- we don't support most rules, just the most important for avoiding mismatched tags
+
+ if body_modes[self.insertion_mode] then
+ if token.type == "start_tag" then
+ local name = table.concat(token.name)
+ if close_p_at_start[name] then close_paragraph(self) end
+ if close_headers[name] then
+ close_paragraph(self)
+ -- close current element if it is already header
+ if close_headers[self:current_element_name()] then
+ self:pop_element()
+ end
+ elseif name == "pre" or name == "listing" then
+ -- we should ignore next "\n" char token
+ elseif name == "image" then
+ -- image tag is an error, change to <img>
+ token.name = {"img"}
+ elseif list_items[name] then
+ handle_list_item(self, name)
+ close_paragraph(self)
+ end
+ elseif token.type == "end_tag" then
+ 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
+ elseif name == "p" then
+ if not is_in_button_scope(self, "p") then
+ local parent = self:get_parent()
+ local node = Element:init("p", parent)
+ table.insert(self.unfinished, node)
+ end
+ -- use self:close_paragraph() instead of close_paragraph() because we don't need to check scope at this point
+ self:close_paragraph()
+ elseif name == "br" then
+ token.type = "start_tag"
+ elseif close_headers[name] then
+ local header_in_scope = false
+ -- detect, if there are any open h1-h6 tag and close it
+ for el, _ in pairs(close_headers) do
+ if is_in_scope(self, el, {}) then
+ header_in_scope = el
+ break
+ end
+ end
+ if not header_in_scope then
+ token.type = "ignore"
+ else
+ self:close_unfinished(header_in_scope)
+ end
+ end
+ end
+ end
+ return true
+end
+
+local rawtext_elements = hash_from_array {"style", "textarea", "xmp"}
+
+
function HtmlParser:start_tag()
local token = self.current_token
+ self:handle_insertion_mode(token)
if token.type == "start_tag" then
-- close all currently opened attributes
self:start_attribute()
@@ -1894,18 +2038,18 @@ function HtmlParser:start_tag()
node.attr = token.attr
node.self_closing = token.self_closing
self:set_xmlns(node)
- --
+ -- in this handler we should close <p> or <li> elements without explicit closing tags
if token.self_closing -- <img />
or self_closing_tags[name] -- void elements
then
- parent:add_child(node)
+ parent:add_child(node, node.tag)
else
-- add to the unfinished list
table.insert(self.unfinished, node)
end
if name == "title" then
self.element_state = "rcdata"
- elseif name == "style" then
+ elseif rawtext_elements[name] then
self.element_state = "rawtext"
elseif name == "script" then
self.element_state = "script_data"
@@ -1916,11 +2060,16 @@ end
function HtmlParser:end_tag()
-- close current opened element
local token = self.current_token
+ local should_pop = self:handle_insertion_mode(token)
if token.type == "end_tag" then
if #self.unfinished==0 then return nil end
- local node = self:close_element()
- local parent = self:get_parent()
- parent:add_child(node)
+ -- 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
@@ -1964,6 +2113,21 @@ function HtmlParser:adjusted_current_node()
end
+local simple_modes = {
+ body = "in_body",
+ td = "in_cell",
+ th = "in_cell",
+ tr = "in_row",
+ tbody = "in_table_body",
+ thead = "in_table_body",
+ tfoot = "in_table_body",
+ caption = "in_caption",
+ colgroup = "in_column_group",
+ table = "in_table",
+ template = "current_template_insertion_mode",
+ frameset = "in_frameset"
+}
+
function HtmlParser:reset_insertion_mode()
-- https://html.spec.whatwg.org/multipage/parsing.html#reset-the-insertion-mode-appropriately
local last = false
@@ -1977,16 +2141,33 @@ function HtmlParser:reset_insertion_mode()
if name == "head" and last == true then
self:switch_insertion("in_head")
return
- elseif name == "body" then
- self:switch_insertion("in_body")
- return
elseif name == "html" then
- if self.head_pointer then
+ if not self.head_pointer then
self:switch_insertion("before_head")
return
else
self:switch_insertion("after_head")
+ return
+ end
+ elseif name == "select" then
+ if not last then
+ for x = position -1, 1, -1 do
+ if x == 1 then break end
+ local ancestor = self.unfinished[x]
+ local ancestor_name = ancestor.tag
+ if ancestor_name == "template" then
+ break
+ elseif ancestor_name == "table" then
+ self:switch_insertion("in_select_in_table")
+ return
+ end
+ end
end
+ self:switch_insertion("in_select")
+ return
+ elseif simple_modes[name] then
+ self:switch_insertion(simple_modes[name])
+ return
elseif last == true then
self:switch_insertion("in_body")
return
@@ -2006,8 +2187,8 @@ function HtmlParser:generate_implied_endtags(included, ignored)
local current = self:current_node() or {}
-- keep removing elements while they are in the "included" list
if included[current.tag] then
- table.remove(self.unfinished)
- self:generate_implied_endtags(ignored)
+ self:pop_element()
+ self:generate_implied_endtags(included, ignored)
end
end
@@ -2023,9 +2204,7 @@ function HtmlParser:finish()
self:start_tag("html")
end
while #self.unfinished > 0 do
- local node = self:close_element()
- local parent = self:get_parent()
- parent:add_child(node)
+ self:pop_element()
end
-- return root element
return self.Document -- self:close_element()
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 b6841fea5fb..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,13 @@ 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)
+end
--- Transform XML string
@@ -234,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
@@ -243,7 +250,7 @@ end
local Transformer
--- Make new Transformer object
--- @return Tranformer object
+-- @return Transformer object
local function new()
local self = setmetatable({}, Transformer)
self.css = cssquery()
@@ -289,6 +296,12 @@ function Transformer:add_custom_action(selector, fn )
add_custom_action(selector, fn, self.css)
end
+--- Remove all actions that match the given selector
+---@param selector string
+function Transformer:reset_actions(selector)
+ reset_actions(selector, self.css)
+end
+
-- all methods that use transformation functions must
-- correctly handle the cssquery object that this library uses
@@ -338,6 +351,7 @@ local M = {
print_tex = print_tex,
add_action = add_action,
add_custom_action = add_custom_action,
+ reset_actions = reset_actions,
simple_content = simple_content,
load_file = load_file,
process_dom = process_dom,
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..686de122d15
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml.sty
@@ -0,0 +1,123 @@
+\ProvidesPackage{luaxml}[2024-10-17 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
+
+\bool_new:N\l_luaxml_verbatim
+\tl_new:N \l_luaxml_transformer
+
+\keys_define:nn{luaxml}{
+ 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 {luaxml} { #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")
+ }
+}
+
+
+\ExplSyntaxOff
+\endinput
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown-parser.lua b/Master/texmf-dist/tex/luatex/markdown/markdown-parser.lua
new file mode 100644
index 00000000000..51d71254a3a
--- /dev/null
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown-parser.lua
@@ -0,0 +1,8963 @@
+--
+-- 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-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.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.8.1-0-gbbed72f3",
+ 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"
+}
+
+if not modules then modules = { } end
+modules['markdown'] = metadata
+local lpeg = require("lpeg")
+local unicode = require("unicode")
+local md5 = require("md5")
+;(function()
+ local should_initialize = package.loaded.kpse == nil
+ or tex.initialize ~= nil
+ kpse = require("kpse")
+ if should_initialize then
+ kpse.set_program_name("luatex")
+ end
+end)()
+local uni_algos = require("lua-uni-algos")
+local M = {metadata = metadata}
+local walkable_syntax = {
+ Block = {
+ "Blockquote",
+ "Verbatim",
+ "ThematicBreak",
+ "BulletList",
+ "OrderedList",
+ "DisplayHtml",
+ "Heading",
+ },
+ BlockOrParagraph = {
+ "Block",
+ "Paragraph",
+ "Plain",
+ },
+ Inline = {
+ "Str",
+ "Space",
+ "Endline",
+ "EndlineBreak",
+ "LinkAndEmph",
+ "Code",
+ "AutoLinkUrl",
+ "AutoLinkEmail",
+ "AutoLinkRelativeReference",
+ "InlineHtml",
+ "HtmlEntity",
+ "EscapedChar",
+ "Smart",
+ "Symbol",
+ },
+}
+local defaultOptions = {}
+defaultOptions.eagerCache = true
+defaultOptions.experimental = false
+defaultOptions.singletonCache = true
+local singletonCache = {
+ convert = nil,
+ options = nil,
+}
+defaultOptions.unicodeNormalization = true
+defaultOptions.unicodeNormalizationForm = "nfc"
+defaultOptions.cacheDir = "."
+defaultOptions.contentBlocksLanguageMap = "markdown-languages.json"
+defaultOptions.debugExtensionsFileName = "debug-extensions.json"
+defaultOptions.frozenCacheFileName = "frozenCache.tex"
+defaultOptions.autoIdentifiers = false
+defaultOptions.blankBeforeBlockquote = false
+defaultOptions.blankBeforeCodeFence = false
+defaultOptions.blankBeforeDivFence = false
+defaultOptions.blankBeforeHeading = false
+defaultOptions.blankBeforeList = false
+defaultOptions.bracketedSpans = false
+defaultOptions.breakableBlockquotes = true
+defaultOptions.citationNbsps = true
+defaultOptions.citations = false
+defaultOptions.codeSpans = true
+defaultOptions.contentBlocks = false
+defaultOptions.contentLevel = "block"
+defaultOptions.debugExtensions = false
+defaultOptions.definitionLists = false
+defaultOptions.ensureJekyllData = false
+defaultOptions.expectJekyllData = false
+metadata.user_extension_api_version = 2
+metadata.grammar_version = 4
+defaultOptions.extensions = {}
+defaultOptions.fancyLists = false
+defaultOptions.fencedCode = true
+defaultOptions.fencedCodeAttributes = false
+defaultOptions.fencedDivs = false
+defaultOptions.finalizeCache = false
+defaultOptions.frozenCacheCounter = 0
+defaultOptions.gfmAutoIdentifiers = false
+defaultOptions.hashEnumerators = false
+defaultOptions.headerAttributes = false
+defaultOptions.html = true
+defaultOptions.hybrid = false
+defaultOptions.inlineCodeAttributes = false
+defaultOptions.inlineNotes = false
+defaultOptions.jekyllData = false
+defaultOptions.linkAttributes = false
+defaultOptions.lineBlocks = false
+defaultOptions.mark = false
+defaultOptions.notes = false
+defaultOptions.pipeTables = false
+defaultOptions.preserveTabs = true
+defaultOptions.rawAttribute = false
+defaultOptions.relativeReferences = false
+defaultOptions.shiftHeadings = 0
+defaultOptions.slice = "^ $"
+defaultOptions.smartEllipses = false
+defaultOptions.startNumber = true
+defaultOptions.strikeThrough = false
+defaultOptions.stripIndent = false
+defaultOptions.subscripts = false
+defaultOptions.superscripts = false
+defaultOptions.tableAttributes = false
+defaultOptions.tableCaptions = false
+defaultOptions.taskLists = false
+defaultOptions.texComments = false
+defaultOptions.texMathDollars = false
+defaultOptions.texMathDoubleBackslash = false
+defaultOptions.texMathSingleBackslash = false
+defaultOptions.tightLists = true
+defaultOptions.underscores = true
+local upper, format, length =
+ string.upper, string.format, string.len
+local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, Cp, any =
+ lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Cg, lpeg.Cb,
+ lpeg.Cmt, lpeg.Cc, lpeg.Ct, lpeg.B, lpeg.Cs, lpeg.Cp, lpeg.P(1)
+local util = {}
+function util.err(msg, exit_code)
+ io.stderr:write("markdown.lua: " .. msg .. "\n")
+ os.exit(exit_code or 1)
+end
+function util.cache(dir, string, salt, transform, suffix)
+ local digest = md5.sumhexa(string .. (salt or ""))
+ local name = util.pathname(dir, digest .. suffix)
+ local file = io.open(name, "r")
+ if file == nil then -- If no cache entry exists, create a new one.
+ file = assert(io.open(name, "w"),
+ [[Could not open file "]] .. name .. [[" for writing]])
+ local result = string
+ if transform ~= nil then
+ result = transform(result)
+ end
+ assert(file:write(result))
+ assert(file:close())
+ end
+ return name
+end
+function util.cache_verbatim(dir, string)
+ local name = util.cache(dir, string, nil, nil, ".verbatim")
+ return name
+end
+function util.table_copy(t)
+ local u = { }
+ for k, v in pairs(t) do u[k] = v end
+ return setmetatable(u, getmetatable(t))
+end
+function util.encode_json_string(s)
+ s = s:gsub([[\]], [[\\]])
+ s = s:gsub([["]], [[\"]])
+ return [["]] .. s .. [["]]
+end
+function util.expand_tabs_in_line(s, tabstop)
+ local tab = tabstop or 4
+ local corr = 0
+ return (s:gsub("()\t", function(p)
+ local sp = tab - (p - 1 + corr) % tab
+ corr = corr - 1 + sp
+ return string.rep(" ", sp)
+ end))
+end
+function util.walk(t, f)
+ local typ = type(t)
+ if typ == "string" then
+ f(t)
+ elseif typ == "table" then
+ local i = 1
+ local n
+ n = t[i]
+ while n do
+ util.walk(n, f)
+ i = i + 1
+ n = t[i]
+ end
+ elseif typ == "function" then
+ local ok, val = pcall(t)
+ if ok then
+ util.walk(val,f)
+ end
+ else
+ f(tostring(t))
+ end
+end
+function util.flatten(ary)
+ local new = {}
+ for _,v in ipairs(ary) do
+ if type(v) == "table" then
+ for _,w in ipairs(util.flatten(v)) do
+ new[#new + 1] = w
+ end
+ else
+ new[#new + 1] = v
+ end
+ end
+ return new
+end
+function util.rope_to_string(rope)
+ local buffer = {}
+ util.walk(rope, function(x) buffer[#buffer + 1] = x end)
+ return table.concat(buffer)
+end
+function util.rope_last(rope)
+ if #rope == 0 then
+ return nil
+ else
+ local l = rope[#rope]
+ if type(l) == "table" then
+ return util.rope_last(l)
+ else
+ return l
+ end
+ end
+end
+function util.intersperse(ary, x)
+ local new = {}
+ local l = #ary
+ for i,v in ipairs(ary) do
+ local n = #new
+ new[n + 1] = v
+ if i ~= l then
+ new[n + 2] = x
+ end
+ end
+ return new
+end
+function util.map(ary, f)
+ local new = {}
+ for i,v in ipairs(ary) do
+ new[i] = f(v)
+ end
+ return new
+end
+function util.escaper(char_escapes, string_escapes)
+ local char_escapes_list = ""
+ for i,_ in pairs(char_escapes) do
+ char_escapes_list = char_escapes_list .. i
+ end
+ local escapable = S(char_escapes_list) / char_escapes
+ if string_escapes then
+ for k,v in pairs(string_escapes) do
+ escapable = P(k) / v + escapable
+ end
+ end
+ local escape_string = Cs((escapable + any)^0)
+ return function(s)
+ return lpeg.match(escape_string, s)
+ end
+end
+function util.pathname(dir, file)
+ if #dir == 0 then
+ return file
+ else
+ return dir .. "/" .. file
+ end
+end
+function util.salt(options)
+ local opt_string = {}
+ for k, _ in pairs(defaultOptions) do
+ local v = options[k]
+ if type(v) == "table" then
+ for _, i in ipairs(v) do
+ opt_string[#opt_string+1] = k .. "=" .. tostring(i)
+ end
+ elseif k ~= "cacheDir" then
+ opt_string[#opt_string+1] = k .. "=" .. tostring(v)
+ end
+ end
+ table.sort(opt_string)
+ local salt = table.concat(opt_string, ",")
+ .. "," .. metadata.version
+ return salt
+end
+function util.warning(s)
+ io.stderr:write("Warning: " .. s .. "\n")
+end
+local entities = {}
+
+local character_entities = {
+ ["Tab"] = 9,
+ ["NewLine"] = 10,
+ ["excl"] = 33,
+ ["QUOT"] = 34,
+ ["quot"] = 34,
+ ["num"] = 35,
+ ["dollar"] = 36,
+ ["percnt"] = 37,
+ ["AMP"] = 38,
+ ["amp"] = 38,
+ ["apos"] = 39,
+ ["lpar"] = 40,
+ ["rpar"] = 41,
+ ["ast"] = 42,
+ ["midast"] = 42,
+ ["plus"] = 43,
+ ["comma"] = 44,
+ ["period"] = 46,
+ ["sol"] = 47,
+ ["colon"] = 58,
+ ["semi"] = 59,
+ ["LT"] = 60,
+ ["lt"] = 60,
+ ["nvlt"] = {60, 8402},
+ ["bne"] = {61, 8421},
+ ["equals"] = 61,
+ ["GT"] = 62,
+ ["gt"] = 62,
+ ["nvgt"] = {62, 8402},
+ ["quest"] = 63,
+ ["commat"] = 64,
+ ["lbrack"] = 91,
+ ["lsqb"] = 91,
+ ["bsol"] = 92,
+ ["rbrack"] = 93,
+ ["rsqb"] = 93,
+ ["Hat"] = 94,
+ ["UnderBar"] = 95,
+ ["lowbar"] = 95,
+ ["DiacriticalGrave"] = 96,
+ ["grave"] = 96,
+ ["fjlig"] = {102, 106},
+ ["lbrace"] = 123,
+ ["lcub"] = 123,
+ ["VerticalLine"] = 124,
+ ["verbar"] = 124,
+ ["vert"] = 124,
+ ["rbrace"] = 125,
+ ["rcub"] = 125,
+ ["NonBreakingSpace"] = 160,
+ ["nbsp"] = 160,
+ ["iexcl"] = 161,
+ ["cent"] = 162,
+ ["pound"] = 163,
+ ["curren"] = 164,
+ ["yen"] = 165,
+ ["brvbar"] = 166,
+ ["sect"] = 167,
+ ["Dot"] = 168,
+ ["DoubleDot"] = 168,
+ ["die"] = 168,
+ ["uml"] = 168,
+ ["COPY"] = 169,
+ ["copy"] = 169,
+ ["ordf"] = 170,
+ ["laquo"] = 171,
+ ["not"] = 172,
+ ["shy"] = 173,
+ ["REG"] = 174,
+ ["circledR"] = 174,
+ ["reg"] = 174,
+ ["macr"] = 175,
+ ["strns"] = 175,
+ ["deg"] = 176,
+ ["PlusMinus"] = 177,
+ ["plusmn"] = 177,
+ ["pm"] = 177,
+ ["sup2"] = 178,
+ ["sup3"] = 179,
+ ["DiacriticalAcute"] = 180,
+ ["acute"] = 180,
+ ["micro"] = 181,
+ ["para"] = 182,
+ ["CenterDot"] = 183,
+ ["centerdot"] = 183,
+ ["middot"] = 183,
+ ["Cedilla"] = 184,
+ ["cedil"] = 184,
+ ["sup1"] = 185,
+ ["ordm"] = 186,
+ ["raquo"] = 187,
+ ["frac14"] = 188,
+ ["frac12"] = 189,
+ ["half"] = 189,
+ ["frac34"] = 190,
+ ["iquest"] = 191,
+ ["Agrave"] = 192,
+ ["Aacute"] = 193,
+ ["Acirc"] = 194,
+ ["Atilde"] = 195,
+ ["Auml"] = 196,
+ ["Aring"] = 197,
+ ["angst"] = 197,
+ ["AElig"] = 198,
+ ["Ccedil"] = 199,
+ ["Egrave"] = 200,
+ ["Eacute"] = 201,
+ ["Ecirc"] = 202,
+ ["Euml"] = 203,
+ ["Igrave"] = 204,
+ ["Iacute"] = 205,
+ ["Icirc"] = 206,
+ ["Iuml"] = 207,
+ ["ETH"] = 208,
+ ["Ntilde"] = 209,
+ ["Ograve"] = 210,
+ ["Oacute"] = 211,
+ ["Ocirc"] = 212,
+ ["Otilde"] = 213,
+ ["Ouml"] = 214,
+ ["times"] = 215,
+ ["Oslash"] = 216,
+ ["Ugrave"] = 217,
+ ["Uacute"] = 218,
+ ["Ucirc"] = 219,
+ ["Uuml"] = 220,
+ ["Yacute"] = 221,
+ ["THORN"] = 222,
+ ["szlig"] = 223,
+ ["agrave"] = 224,
+ ["aacute"] = 225,
+ ["acirc"] = 226,
+ ["atilde"] = 227,
+ ["auml"] = 228,
+ ["aring"] = 229,
+ ["aelig"] = 230,
+ ["ccedil"] = 231,
+ ["egrave"] = 232,
+ ["eacute"] = 233,
+ ["ecirc"] = 234,
+ ["euml"] = 235,
+ ["igrave"] = 236,
+ ["iacute"] = 237,
+ ["icirc"] = 238,
+ ["iuml"] = 239,
+ ["eth"] = 240,
+ ["ntilde"] = 241,
+ ["ograve"] = 242,
+ ["oacute"] = 243,
+ ["ocirc"] = 244,
+ ["otilde"] = 245,
+ ["ouml"] = 246,
+ ["div"] = 247,
+ ["divide"] = 247,
+ ["oslash"] = 248,
+ ["ugrave"] = 249,
+ ["uacute"] = 250,
+ ["ucirc"] = 251,
+ ["uuml"] = 252,
+ ["yacute"] = 253,
+ ["thorn"] = 254,
+ ["yuml"] = 255,
+ ["Amacr"] = 256,
+ ["amacr"] = 257,
+ ["Abreve"] = 258,
+ ["abreve"] = 259,
+ ["Aogon"] = 260,
+ ["aogon"] = 261,
+ ["Cacute"] = 262,
+ ["cacute"] = 263,
+ ["Ccirc"] = 264,
+ ["ccirc"] = 265,
+ ["Cdot"] = 266,
+ ["cdot"] = 267,
+ ["Ccaron"] = 268,
+ ["ccaron"] = 269,
+ ["Dcaron"] = 270,
+ ["dcaron"] = 271,
+ ["Dstrok"] = 272,
+ ["dstrok"] = 273,
+ ["Emacr"] = 274,
+ ["emacr"] = 275,
+ ["Edot"] = 278,
+ ["edot"] = 279,
+ ["Eogon"] = 280,
+ ["eogon"] = 281,
+ ["Ecaron"] = 282,
+ ["ecaron"] = 283,
+ ["Gcirc"] = 284,
+ ["gcirc"] = 285,
+ ["Gbreve"] = 286,
+ ["gbreve"] = 287,
+ ["Gdot"] = 288,
+ ["gdot"] = 289,
+ ["Gcedil"] = 290,
+ ["Hcirc"] = 292,
+ ["hcirc"] = 293,
+ ["Hstrok"] = 294,
+ ["hstrok"] = 295,
+ ["Itilde"] = 296,
+ ["itilde"] = 297,
+ ["Imacr"] = 298,
+ ["imacr"] = 299,
+ ["Iogon"] = 302,
+ ["iogon"] = 303,
+ ["Idot"] = 304,
+ ["imath"] = 305,
+ ["inodot"] = 305,
+ ["IJlig"] = 306,
+ ["ijlig"] = 307,
+ ["Jcirc"] = 308,
+ ["jcirc"] = 309,
+ ["Kcedil"] = 310,
+ ["kcedil"] = 311,
+ ["kgreen"] = 312,
+ ["Lacute"] = 313,
+ ["lacute"] = 314,
+ ["Lcedil"] = 315,
+ ["lcedil"] = 316,
+ ["Lcaron"] = 317,
+ ["lcaron"] = 318,
+ ["Lmidot"] = 319,
+ ["lmidot"] = 320,
+ ["Lstrok"] = 321,
+ ["lstrok"] = 322,
+ ["Nacute"] = 323,
+ ["nacute"] = 324,
+ ["Ncedil"] = 325,
+ ["ncedil"] = 326,
+ ["Ncaron"] = 327,
+ ["ncaron"] = 328,
+ ["napos"] = 329,
+ ["ENG"] = 330,
+ ["eng"] = 331,
+ ["Omacr"] = 332,
+ ["omacr"] = 333,
+ ["Odblac"] = 336,
+ ["odblac"] = 337,
+ ["OElig"] = 338,
+ ["oelig"] = 339,
+ ["Racute"] = 340,
+ ["racute"] = 341,
+ ["Rcedil"] = 342,
+ ["rcedil"] = 343,
+ ["Rcaron"] = 344,
+ ["rcaron"] = 345,
+ ["Sacute"] = 346,
+ ["sacute"] = 347,
+ ["Scirc"] = 348,
+ ["scirc"] = 349,
+ ["Scedil"] = 350,
+ ["scedil"] = 351,
+ ["Scaron"] = 352,
+ ["scaron"] = 353,
+ ["Tcedil"] = 354,
+ ["tcedil"] = 355,
+ ["Tcaron"] = 356,
+ ["tcaron"] = 357,
+ ["Tstrok"] = 358,
+ ["tstrok"] = 359,
+ ["Utilde"] = 360,
+ ["utilde"] = 361,
+ ["Umacr"] = 362,
+ ["umacr"] = 363,
+ ["Ubreve"] = 364,
+ ["ubreve"] = 365,
+ ["Uring"] = 366,
+ ["uring"] = 367,
+ ["Udblac"] = 368,
+ ["udblac"] = 369,
+ ["Uogon"] = 370,
+ ["uogon"] = 371,
+ ["Wcirc"] = 372,
+ ["wcirc"] = 373,
+ ["Ycirc"] = 374,
+ ["ycirc"] = 375,
+ ["Yuml"] = 376,
+ ["Zacute"] = 377,
+ ["zacute"] = 378,
+ ["Zdot"] = 379,
+ ["zdot"] = 380,
+ ["Zcaron"] = 381,
+ ["zcaron"] = 382,
+ ["fnof"] = 402,
+ ["imped"] = 437,
+ ["gacute"] = 501,
+ ["jmath"] = 567,
+ ["circ"] = 710,
+ ["Hacek"] = 711,
+ ["caron"] = 711,
+ ["Breve"] = 728,
+ ["breve"] = 728,
+ ["DiacriticalDot"] = 729,
+ ["dot"] = 729,
+ ["ring"] = 730,
+ ["ogon"] = 731,
+ ["DiacriticalTilde"] = 732,
+ ["tilde"] = 732,
+ ["DiacriticalDoubleAcute"] = 733,
+ ["dblac"] = 733,
+ ["DownBreve"] = 785,
+ ["Alpha"] = 913,
+ ["Beta"] = 914,
+ ["Gamma"] = 915,
+ ["Delta"] = 916,
+ ["Epsilon"] = 917,
+ ["Zeta"] = 918,
+ ["Eta"] = 919,
+ ["Theta"] = 920,
+ ["Iota"] = 921,
+ ["Kappa"] = 922,
+ ["Lambda"] = 923,
+ ["Mu"] = 924,
+ ["Nu"] = 925,
+ ["Xi"] = 926,
+ ["Omicron"] = 927,
+ ["Pi"] = 928,
+ ["Rho"] = 929,
+ ["Sigma"] = 931,
+ ["Tau"] = 932,
+ ["Upsilon"] = 933,
+ ["Phi"] = 934,
+ ["Chi"] = 935,
+ ["Psi"] = 936,
+ ["Omega"] = 937,
+ ["ohm"] = 937,
+ ["alpha"] = 945,
+ ["beta"] = 946,
+ ["gamma"] = 947,
+ ["delta"] = 948,
+ ["epsi"] = 949,
+ ["epsilon"] = 949,
+ ["zeta"] = 950,
+ ["eta"] = 951,
+ ["theta"] = 952,
+ ["iota"] = 953,
+ ["kappa"] = 954,
+ ["lambda"] = 955,
+ ["mu"] = 956,
+ ["nu"] = 957,
+ ["xi"] = 958,
+ ["omicron"] = 959,
+ ["pi"] = 960,
+ ["rho"] = 961,
+ ["sigmaf"] = 962,
+ ["sigmav"] = 962,
+ ["varsigma"] = 962,
+ ["sigma"] = 963,
+ ["tau"] = 964,
+ ["upsi"] = 965,
+ ["upsilon"] = 965,
+ ["phi"] = 966,
+ ["chi"] = 967,
+ ["psi"] = 968,
+ ["omega"] = 969,
+ ["thetasym"] = 977,
+ ["thetav"] = 977,
+ ["vartheta"] = 977,
+ ["Upsi"] = 978,
+ ["upsih"] = 978,
+ ["phiv"] = 981,
+ ["straightphi"] = 981,
+ ["varphi"] = 981,
+ ["piv"] = 982,
+ ["varpi"] = 982,
+ ["Gammad"] = 988,
+ ["digamma"] = 989,
+ ["gammad"] = 989,
+ ["kappav"] = 1008,
+ ["varkappa"] = 1008,
+ ["rhov"] = 1009,
+ ["varrho"] = 1009,
+ ["epsiv"] = 1013,
+ ["straightepsilon"] = 1013,
+ ["varepsilon"] = 1013,
+ ["backepsilon"] = 1014,
+ ["bepsi"] = 1014,
+ ["IOcy"] = 1025,
+ ["DJcy"] = 1026,
+ ["GJcy"] = 1027,
+ ["Jukcy"] = 1028,
+ ["DScy"] = 1029,
+ ["Iukcy"] = 1030,
+ ["YIcy"] = 1031,
+ ["Jsercy"] = 1032,
+ ["LJcy"] = 1033,
+ ["NJcy"] = 1034,
+ ["TSHcy"] = 1035,
+ ["KJcy"] = 1036,
+ ["Ubrcy"] = 1038,
+ ["DZcy"] = 1039,
+ ["Acy"] = 1040,
+ ["Bcy"] = 1041,
+ ["Vcy"] = 1042,
+ ["Gcy"] = 1043,
+ ["Dcy"] = 1044,
+ ["IEcy"] = 1045,
+ ["ZHcy"] = 1046,
+ ["Zcy"] = 1047,
+ ["Icy"] = 1048,
+ ["Jcy"] = 1049,
+ ["Kcy"] = 1050,
+ ["Lcy"] = 1051,
+ ["Mcy"] = 1052,
+ ["Ncy"] = 1053,
+ ["Ocy"] = 1054,
+ ["Pcy"] = 1055,
+ ["Rcy"] = 1056,
+ ["Scy"] = 1057,
+ ["Tcy"] = 1058,
+ ["Ucy"] = 1059,
+ ["Fcy"] = 1060,
+ ["KHcy"] = 1061,
+ ["TScy"] = 1062,
+ ["CHcy"] = 1063,
+ ["SHcy"] = 1064,
+ ["SHCHcy"] = 1065,
+ ["HARDcy"] = 1066,
+ ["Ycy"] = 1067,
+ ["SOFTcy"] = 1068,
+ ["Ecy"] = 1069,
+ ["YUcy"] = 1070,
+ ["YAcy"] = 1071,
+ ["acy"] = 1072,
+ ["bcy"] = 1073,
+ ["vcy"] = 1074,
+ ["gcy"] = 1075,
+ ["dcy"] = 1076,
+ ["iecy"] = 1077,
+ ["zhcy"] = 1078,
+ ["zcy"] = 1079,
+ ["icy"] = 1080,
+ ["jcy"] = 1081,
+ ["kcy"] = 1082,
+ ["lcy"] = 1083,
+ ["mcy"] = 1084,
+ ["ncy"] = 1085,
+ ["ocy"] = 1086,
+ ["pcy"] = 1087,
+ ["rcy"] = 1088,
+ ["scy"] = 1089,
+ ["tcy"] = 1090,
+ ["ucy"] = 1091,
+ ["fcy"] = 1092,
+ ["khcy"] = 1093,
+ ["tscy"] = 1094,
+ ["chcy"] = 1095,
+ ["shcy"] = 1096,
+ ["shchcy"] = 1097,
+ ["hardcy"] = 1098,
+ ["ycy"] = 1099,
+ ["softcy"] = 1100,
+ ["ecy"] = 1101,
+ ["yucy"] = 1102,
+ ["yacy"] = 1103,
+ ["iocy"] = 1105,
+ ["djcy"] = 1106,
+ ["gjcy"] = 1107,
+ ["jukcy"] = 1108,
+ ["dscy"] = 1109,
+ ["iukcy"] = 1110,
+ ["yicy"] = 1111,
+ ["jsercy"] = 1112,
+ ["ljcy"] = 1113,
+ ["njcy"] = 1114,
+ ["tshcy"] = 1115,
+ ["kjcy"] = 1116,
+ ["ubrcy"] = 1118,
+ ["dzcy"] = 1119,
+ ["ensp"] = 8194,
+ ["emsp"] = 8195,
+ ["emsp13"] = 8196,
+ ["emsp14"] = 8197,
+ ["numsp"] = 8199,
+ ["puncsp"] = 8200,
+ ["ThinSpace"] = 8201,
+ ["thinsp"] = 8201,
+ ["VeryThinSpace"] = 8202,
+ ["hairsp"] = 8202,
+ ["NegativeMediumSpace"] = 8203,
+ ["NegativeThickSpace"] = 8203,
+ ["NegativeThinSpace"] = 8203,
+ ["NegativeVeryThinSpace"] = 8203,
+ ["ZeroWidthSpace"] = 8203,
+ ["zwnj"] = 8204,
+ ["zwj"] = 8205,
+ ["lrm"] = 8206,
+ ["rlm"] = 8207,
+ ["dash"] = 8208,
+ ["hyphen"] = 8208,
+ ["ndash"] = 8211,
+ ["mdash"] = 8212,
+ ["horbar"] = 8213,
+ ["Verbar"] = 8214,
+ ["Vert"] = 8214,
+ ["OpenCurlyQuote"] = 8216,
+ ["lsquo"] = 8216,
+ ["CloseCurlyQuote"] = 8217,
+ ["rsquo"] = 8217,
+ ["rsquor"] = 8217,
+ ["lsquor"] = 8218,
+ ["sbquo"] = 8218,
+ ["OpenCurlyDoubleQuote"] = 8220,
+ ["ldquo"] = 8220,
+ ["CloseCurlyDoubleQuote"] = 8221,
+ ["rdquo"] = 8221,
+ ["rdquor"] = 8221,
+ ["bdquo"] = 8222,
+ ["ldquor"] = 8222,
+ ["dagger"] = 8224,
+ ["Dagger"] = 8225,
+ ["ddagger"] = 8225,
+ ["bull"] = 8226,
+ ["bullet"] = 8226,
+ ["nldr"] = 8229,
+ ["hellip"] = 8230,
+ ["mldr"] = 8230,
+ ["permil"] = 8240,
+ ["pertenk"] = 8241,
+ ["prime"] = 8242,
+ ["Prime"] = 8243,
+ ["tprime"] = 8244,
+ ["backprime"] = 8245,
+ ["bprime"] = 8245,
+ ["lsaquo"] = 8249,
+ ["rsaquo"] = 8250,
+ ["OverBar"] = 8254,
+ ["oline"] = 8254,
+ ["caret"] = 8257,
+ ["hybull"] = 8259,
+ ["frasl"] = 8260,
+ ["bsemi"] = 8271,
+ ["qprime"] = 8279,
+ ["MediumSpace"] = 8287,
+ ["ThickSpace"] = {8287, 8202},
+ ["NoBreak"] = 8288,
+ ["ApplyFunction"] = 8289,
+ ["af"] = 8289,
+ ["InvisibleTimes"] = 8290,
+ ["it"] = 8290,
+ ["InvisibleComma"] = 8291,
+ ["ic"] = 8291,
+ ["euro"] = 8364,
+ ["TripleDot"] = 8411,
+ ["tdot"] = 8411,
+ ["DotDot"] = 8412,
+ ["Copf"] = 8450,
+ ["complexes"] = 8450,
+ ["incare"] = 8453,
+ ["gscr"] = 8458,
+ ["HilbertSpace"] = 8459,
+ ["Hscr"] = 8459,
+ ["hamilt"] = 8459,
+ ["Hfr"] = 8460,
+ ["Poincareplane"] = 8460,
+ ["Hopf"] = 8461,
+ ["quaternions"] = 8461,
+ ["planckh"] = 8462,
+ ["hbar"] = 8463,
+ ["hslash"] = 8463,
+ ["planck"] = 8463,
+ ["plankv"] = 8463,
+ ["Iscr"] = 8464,
+ ["imagline"] = 8464,
+ ["Ifr"] = 8465,
+ ["Im"] = 8465,
+ ["image"] = 8465,
+ ["imagpart"] = 8465,
+ ["Laplacetrf"] = 8466,
+ ["Lscr"] = 8466,
+ ["lagran"] = 8466,
+ ["ell"] = 8467,
+ ["Nopf"] = 8469,
+ ["naturals"] = 8469,
+ ["numero"] = 8470,
+ ["copysr"] = 8471,
+ ["weierp"] = 8472,
+ ["wp"] = 8472,
+ ["Popf"] = 8473,
+ ["primes"] = 8473,
+ ["Qopf"] = 8474,
+ ["rationals"] = 8474,
+ ["Rscr"] = 8475,
+ ["realine"] = 8475,
+ ["Re"] = 8476,
+ ["Rfr"] = 8476,
+ ["real"] = 8476,
+ ["realpart"] = 8476,
+ ["Ropf"] = 8477,
+ ["reals"] = 8477,
+ ["rx"] = 8478,
+ ["TRADE"] = 8482,
+ ["trade"] = 8482,
+ ["Zopf"] = 8484,
+ ["integers"] = 8484,
+ ["mho"] = 8487,
+ ["Zfr"] = 8488,
+ ["zeetrf"] = 8488,
+ ["iiota"] = 8489,
+ ["Bernoullis"] = 8492,
+ ["Bscr"] = 8492,
+ ["bernou"] = 8492,
+ ["Cayleys"] = 8493,
+ ["Cfr"] = 8493,
+ ["escr"] = 8495,
+ ["Escr"] = 8496,
+ ["expectation"] = 8496,
+ ["Fouriertrf"] = 8497,
+ ["Fscr"] = 8497,
+ ["Mellintrf"] = 8499,
+ ["Mscr"] = 8499,
+ ["phmmat"] = 8499,
+ ["order"] = 8500,
+ ["orderof"] = 8500,
+ ["oscr"] = 8500,
+ ["alefsym"] = 8501,
+ ["aleph"] = 8501,
+ ["beth"] = 8502,
+ ["gimel"] = 8503,
+ ["daleth"] = 8504,
+ ["CapitalDifferentialD"] = 8517,
+ ["DD"] = 8517,
+ ["DifferentialD"] = 8518,
+ ["dd"] = 8518,
+ ["ExponentialE"] = 8519,
+ ["ee"] = 8519,
+ ["exponentiale"] = 8519,
+ ["ImaginaryI"] = 8520,
+ ["ii"] = 8520,
+ ["frac13"] = 8531,
+ ["frac23"] = 8532,
+ ["frac15"] = 8533,
+ ["frac25"] = 8534,
+ ["frac35"] = 8535,
+ ["frac45"] = 8536,
+ ["frac16"] = 8537,
+ ["frac56"] = 8538,
+ ["frac18"] = 8539,
+ ["frac38"] = 8540,
+ ["frac58"] = 8541,
+ ["frac78"] = 8542,
+ ["LeftArrow"] = 8592,
+ ["ShortLeftArrow"] = 8592,
+ ["larr"] = 8592,
+ ["leftarrow"] = 8592,
+ ["slarr"] = 8592,
+ ["ShortUpArrow"] = 8593,
+ ["UpArrow"] = 8593,
+ ["uarr"] = 8593,
+ ["uparrow"] = 8593,
+ ["RightArrow"] = 8594,
+ ["ShortRightArrow"] = 8594,
+ ["rarr"] = 8594,
+ ["rightarrow"] = 8594,
+ ["srarr"] = 8594,
+ ["DownArrow"] = 8595,
+ ["ShortDownArrow"] = 8595,
+ ["darr"] = 8595,
+ ["downarrow"] = 8595,
+ ["LeftRightArrow"] = 8596,
+ ["harr"] = 8596,
+ ["leftrightarrow"] = 8596,
+ ["UpDownArrow"] = 8597,
+ ["updownarrow"] = 8597,
+ ["varr"] = 8597,
+ ["UpperLeftArrow"] = 8598,
+ ["nwarr"] = 8598,
+ ["nwarrow"] = 8598,
+ ["UpperRightArrow"] = 8599,
+ ["nearr"] = 8599,
+ ["nearrow"] = 8599,
+ ["LowerRightArrow"] = 8600,
+ ["searr"] = 8600,
+ ["searrow"] = 8600,
+ ["LowerLeftArrow"] = 8601,
+ ["swarr"] = 8601,
+ ["swarrow"] = 8601,
+ ["nlarr"] = 8602,
+ ["nleftarrow"] = 8602,
+ ["nrarr"] = 8603,
+ ["nrightarrow"] = 8603,
+ ["nrarrw"] = {8605, 824},
+ ["rarrw"] = 8605,
+ ["rightsquigarrow"] = 8605,
+ ["Larr"] = 8606,
+ ["twoheadleftarrow"] = 8606,
+ ["Uarr"] = 8607,
+ ["Rarr"] = 8608,
+ ["twoheadrightarrow"] = 8608,
+ ["Darr"] = 8609,
+ ["larrtl"] = 8610,
+ ["leftarrowtail"] = 8610,
+ ["rarrtl"] = 8611,
+ ["rightarrowtail"] = 8611,
+ ["LeftTeeArrow"] = 8612,
+ ["mapstoleft"] = 8612,
+ ["UpTeeArrow"] = 8613,
+ ["mapstoup"] = 8613,
+ ["RightTeeArrow"] = 8614,
+ ["map"] = 8614,
+ ["mapsto"] = 8614,
+ ["DownTeeArrow"] = 8615,
+ ["mapstodown"] = 8615,
+ ["hookleftarrow"] = 8617,
+ ["larrhk"] = 8617,
+ ["hookrightarrow"] = 8618,
+ ["rarrhk"] = 8618,
+ ["larrlp"] = 8619,
+ ["looparrowleft"] = 8619,
+ ["looparrowright"] = 8620,
+ ["rarrlp"] = 8620,
+ ["harrw"] = 8621,
+ ["leftrightsquigarrow"] = 8621,
+ ["nharr"] = 8622,
+ ["nleftrightarrow"] = 8622,
+ ["Lsh"] = 8624,
+ ["lsh"] = 8624,
+ ["Rsh"] = 8625,
+ ["rsh"] = 8625,
+ ["ldsh"] = 8626,
+ ["rdsh"] = 8627,
+ ["crarr"] = 8629,
+ ["cularr"] = 8630,
+ ["curvearrowleft"] = 8630,
+ ["curarr"] = 8631,
+ ["curvearrowright"] = 8631,
+ ["circlearrowleft"] = 8634,
+ ["olarr"] = 8634,
+ ["circlearrowright"] = 8635,
+ ["orarr"] = 8635,
+ ["LeftVector"] = 8636,
+ ["leftharpoonup"] = 8636,
+ ["lharu"] = 8636,
+ ["DownLeftVector"] = 8637,
+ ["leftharpoondown"] = 8637,
+ ["lhard"] = 8637,
+ ["RightUpVector"] = 8638,
+ ["uharr"] = 8638,
+ ["upharpoonright"] = 8638,
+ ["LeftUpVector"] = 8639,
+ ["uharl"] = 8639,
+ ["upharpoonleft"] = 8639,
+ ["RightVector"] = 8640,
+ ["rharu"] = 8640,
+ ["rightharpoonup"] = 8640,
+ ["DownRightVector"] = 8641,
+ ["rhard"] = 8641,
+ ["rightharpoondown"] = 8641,
+ ["RightDownVector"] = 8642,
+ ["dharr"] = 8642,
+ ["downharpoonright"] = 8642,
+ ["LeftDownVector"] = 8643,
+ ["dharl"] = 8643,
+ ["downharpoonleft"] = 8643,
+ ["RightArrowLeftArrow"] = 8644,
+ ["rightleftarrows"] = 8644,
+ ["rlarr"] = 8644,
+ ["UpArrowDownArrow"] = 8645,
+ ["udarr"] = 8645,
+ ["LeftArrowRightArrow"] = 8646,
+ ["leftrightarrows"] = 8646,
+ ["lrarr"] = 8646,
+ ["leftleftarrows"] = 8647,
+ ["llarr"] = 8647,
+ ["upuparrows"] = 8648,
+ ["uuarr"] = 8648,
+ ["rightrightarrows"] = 8649,
+ ["rrarr"] = 8649,
+ ["ddarr"] = 8650,
+ ["downdownarrows"] = 8650,
+ ["ReverseEquilibrium"] = 8651,
+ ["leftrightharpoons"] = 8651,
+ ["lrhar"] = 8651,
+ ["Equilibrium"] = 8652,
+ ["rightleftharpoons"] = 8652,
+ ["rlhar"] = 8652,
+ ["nLeftarrow"] = 8653,
+ ["nlArr"] = 8653,
+ ["nLeftrightarrow"] = 8654,
+ ["nhArr"] = 8654,
+ ["nRightarrow"] = 8655,
+ ["nrArr"] = 8655,
+ ["DoubleLeftArrow"] = 8656,
+ ["Leftarrow"] = 8656,
+ ["lArr"] = 8656,
+ ["DoubleUpArrow"] = 8657,
+ ["Uparrow"] = 8657,
+ ["uArr"] = 8657,
+ ["DoubleRightArrow"] = 8658,
+ ["Implies"] = 8658,
+ ["Rightarrow"] = 8658,
+ ["rArr"] = 8658,
+ ["DoubleDownArrow"] = 8659,
+ ["Downarrow"] = 8659,
+ ["dArr"] = 8659,
+ ["DoubleLeftRightArrow"] = 8660,
+ ["Leftrightarrow"] = 8660,
+ ["hArr"] = 8660,
+ ["iff"] = 8660,
+ ["DoubleUpDownArrow"] = 8661,
+ ["Updownarrow"] = 8661,
+ ["vArr"] = 8661,
+ ["nwArr"] = 8662,
+ ["neArr"] = 8663,
+ ["seArr"] = 8664,
+ ["swArr"] = 8665,
+ ["Lleftarrow"] = 8666,
+ ["lAarr"] = 8666,
+ ["Rrightarrow"] = 8667,
+ ["rAarr"] = 8667,
+ ["zigrarr"] = 8669,
+ ["LeftArrowBar"] = 8676,
+ ["larrb"] = 8676,
+ ["RightArrowBar"] = 8677,
+ ["rarrb"] = 8677,
+ ["DownArrowUpArrow"] = 8693,
+ ["duarr"] = 8693,
+ ["loarr"] = 8701,
+ ["roarr"] = 8702,
+ ["hoarr"] = 8703,
+ ["ForAll"] = 8704,
+ ["forall"] = 8704,
+ ["comp"] = 8705,
+ ["complement"] = 8705,
+ ["PartialD"] = 8706,
+ ["npart"] = {8706, 824},
+ ["part"] = 8706,
+ ["Exists"] = 8707,
+ ["exist"] = 8707,
+ ["NotExists"] = 8708,
+ ["nexist"] = 8708,
+ ["nexists"] = 8708,
+ ["empty"] = 8709,
+ ["emptyset"] = 8709,
+ ["emptyv"] = 8709,
+ ["varnothing"] = 8709,
+ ["Del"] = 8711,
+ ["nabla"] = 8711,
+ ["Element"] = 8712,
+ ["in"] = 8712,
+ ["isin"] = 8712,
+ ["isinv"] = 8712,
+ ["NotElement"] = 8713,
+ ["notin"] = 8713,
+ ["notinva"] = 8713,
+ ["ReverseElement"] = 8715,
+ ["SuchThat"] = 8715,
+ ["ni"] = 8715,
+ ["niv"] = 8715,
+ ["NotReverseElement"] = 8716,
+ ["notni"] = 8716,
+ ["notniva"] = 8716,
+ ["Product"] = 8719,
+ ["prod"] = 8719,
+ ["Coproduct"] = 8720,
+ ["coprod"] = 8720,
+ ["Sum"] = 8721,
+ ["sum"] = 8721,
+ ["minus"] = 8722,
+ ["MinusPlus"] = 8723,
+ ["mnplus"] = 8723,
+ ["mp"] = 8723,
+ ["dotplus"] = 8724,
+ ["plusdo"] = 8724,
+ ["Backslash"] = 8726,
+ ["setminus"] = 8726,
+ ["setmn"] = 8726,
+ ["smallsetminus"] = 8726,
+ ["ssetmn"] = 8726,
+ ["lowast"] = 8727,
+ ["SmallCircle"] = 8728,
+ ["compfn"] = 8728,
+ ["Sqrt"] = 8730,
+ ["radic"] = 8730,
+ ["Proportional"] = 8733,
+ ["prop"] = 8733,
+ ["propto"] = 8733,
+ ["varpropto"] = 8733,
+ ["vprop"] = 8733,
+ ["infin"] = 8734,
+ ["angrt"] = 8735,
+ ["ang"] = 8736,
+ ["angle"] = 8736,
+ ["nang"] = {8736, 8402},
+ ["angmsd"] = 8737,
+ ["measuredangle"] = 8737,
+ ["angsph"] = 8738,
+ ["VerticalBar"] = 8739,
+ ["mid"] = 8739,
+ ["shortmid"] = 8739,
+ ["smid"] = 8739,
+ ["NotVerticalBar"] = 8740,
+ ["nmid"] = 8740,
+ ["nshortmid"] = 8740,
+ ["nsmid"] = 8740,
+ ["DoubleVerticalBar"] = 8741,
+ ["par"] = 8741,
+ ["parallel"] = 8741,
+ ["shortparallel"] = 8741,
+ ["spar"] = 8741,
+ ["NotDoubleVerticalBar"] = 8742,
+ ["npar"] = 8742,
+ ["nparallel"] = 8742,
+ ["nshortparallel"] = 8742,
+ ["nspar"] = 8742,
+ ["and"] = 8743,
+ ["wedge"] = 8743,
+ ["or"] = 8744,
+ ["vee"] = 8744,
+ ["cap"] = 8745,
+ ["caps"] = {8745, 65024},
+ ["cup"] = 8746,
+ ["cups"] = {8746, 65024},
+ ["Integral"] = 8747,
+ ["int"] = 8747,
+ ["Int"] = 8748,
+ ["iiint"] = 8749,
+ ["tint"] = 8749,
+ ["ContourIntegral"] = 8750,
+ ["conint"] = 8750,
+ ["oint"] = 8750,
+ ["Conint"] = 8751,
+ ["DoubleContourIntegral"] = 8751,
+ ["Cconint"] = 8752,
+ ["cwint"] = 8753,
+ ["ClockwiseContourIntegral"] = 8754,
+ ["cwconint"] = 8754,
+ ["CounterClockwiseContourIntegral"] = 8755,
+ ["awconint"] = 8755,
+ ["Therefore"] = 8756,
+ ["there4"] = 8756,
+ ["therefore"] = 8756,
+ ["Because"] = 8757,
+ ["becaus"] = 8757,
+ ["because"] = 8757,
+ ["ratio"] = 8758,
+ ["Colon"] = 8759,
+ ["Proportion"] = 8759,
+ ["dotminus"] = 8760,
+ ["minusd"] = 8760,
+ ["mDDot"] = 8762,
+ ["homtht"] = 8763,
+ ["Tilde"] = 8764,
+ ["nvsim"] = {8764, 8402},
+ ["sim"] = 8764,
+ ["thicksim"] = 8764,
+ ["thksim"] = 8764,
+ ["backsim"] = 8765,
+ ["bsim"] = 8765,
+ ["race"] = {8765, 817},
+ ["ac"] = 8766,
+ ["acE"] = {8766, 819},
+ ["mstpos"] = 8766,
+ ["acd"] = 8767,
+ ["VerticalTilde"] = 8768,
+ ["wr"] = 8768,
+ ["wreath"] = 8768,
+ ["NotTilde"] = 8769,
+ ["nsim"] = 8769,
+ ["EqualTilde"] = 8770,
+ ["NotEqualTilde"] = {8770, 824},
+ ["eqsim"] = 8770,
+ ["esim"] = 8770,
+ ["nesim"] = {8770, 824},
+ ["TildeEqual"] = 8771,
+ ["sime"] = 8771,
+ ["simeq"] = 8771,
+ ["NotTildeEqual"] = 8772,
+ ["nsime"] = 8772,
+ ["nsimeq"] = 8772,
+ ["TildeFullEqual"] = 8773,
+ ["cong"] = 8773,
+ ["simne"] = 8774,
+ ["NotTildeFullEqual"] = 8775,
+ ["ncong"] = 8775,
+ ["TildeTilde"] = 8776,
+ ["ap"] = 8776,
+ ["approx"] = 8776,
+ ["asymp"] = 8776,
+ ["thickapprox"] = 8776,
+ ["thkap"] = 8776,
+ ["NotTildeTilde"] = 8777,
+ ["nap"] = 8777,
+ ["napprox"] = 8777,
+ ["ape"] = 8778,
+ ["approxeq"] = 8778,
+ ["apid"] = 8779,
+ ["napid"] = {8779, 824},
+ ["backcong"] = 8780,
+ ["bcong"] = 8780,
+ ["CupCap"] = 8781,
+ ["asympeq"] = 8781,
+ ["nvap"] = {8781, 8402},
+ ["Bumpeq"] = 8782,
+ ["HumpDownHump"] = 8782,
+ ["NotHumpDownHump"] = {8782, 824},
+ ["bump"] = 8782,
+ ["nbump"] = {8782, 824},
+ ["HumpEqual"] = 8783,
+ ["NotHumpEqual"] = {8783, 824},
+ ["bumpe"] = 8783,
+ ["bumpeq"] = 8783,
+ ["nbumpe"] = {8783, 824},
+ ["DotEqual"] = 8784,
+ ["doteq"] = 8784,
+ ["esdot"] = 8784,
+ ["nedot"] = {8784, 824},
+ ["doteqdot"] = 8785,
+ ["eDot"] = 8785,
+ ["efDot"] = 8786,
+ ["fallingdotseq"] = 8786,
+ ["erDot"] = 8787,
+ ["risingdotseq"] = 8787,
+ ["Assign"] = 8788,
+ ["colone"] = 8788,
+ ["coloneq"] = 8788,
+ ["ecolon"] = 8789,
+ ["eqcolon"] = 8789,
+ ["ecir"] = 8790,
+ ["eqcirc"] = 8790,
+ ["circeq"] = 8791,
+ ["cire"] = 8791,
+ ["wedgeq"] = 8793,
+ ["veeeq"] = 8794,
+ ["triangleq"] = 8796,
+ ["trie"] = 8796,
+ ["equest"] = 8799,
+ ["questeq"] = 8799,
+ ["NotEqual"] = 8800,
+ ["ne"] = 8800,
+ ["Congruent"] = 8801,
+ ["bnequiv"] = {8801, 8421},
+ ["equiv"] = 8801,
+ ["NotCongruent"] = 8802,
+ ["nequiv"] = 8802,
+ ["le"] = 8804,
+ ["leq"] = 8804,
+ ["nvle"] = {8804, 8402},
+ ["GreaterEqual"] = 8805,
+ ["ge"] = 8805,
+ ["geq"] = 8805,
+ ["nvge"] = {8805, 8402},
+ ["LessFullEqual"] = 8806,
+ ["lE"] = 8806,
+ ["leqq"] = 8806,
+ ["nlE"] = {8806, 824},
+ ["nleqq"] = {8806, 824},
+ ["GreaterFullEqual"] = 8807,
+ ["NotGreaterFullEqual"] = {8807, 824},
+ ["gE"] = 8807,
+ ["geqq"] = 8807,
+ ["ngE"] = {8807, 824},
+ ["ngeqq"] = {8807, 824},
+ ["lnE"] = 8808,
+ ["lneqq"] = 8808,
+ ["lvertneqq"] = {8808, 65024},
+ ["lvnE"] = {8808, 65024},
+ ["gnE"] = 8809,
+ ["gneqq"] = 8809,
+ ["gvertneqq"] = {8809, 65024},
+ ["gvnE"] = {8809, 65024},
+ ["Lt"] = 8810,
+ ["NestedLessLess"] = 8810,
+ ["NotLessLess"] = {8810, 824},
+ ["ll"] = 8810,
+ ["nLt"] = {8810, 8402},
+ ["nLtv"] = {8810, 824},
+ ["Gt"] = 8811,
+ ["NestedGreaterGreater"] = 8811,
+ ["NotGreaterGreater"] = {8811, 824},
+ ["gg"] = 8811,
+ ["nGt"] = {8811, 8402},
+ ["nGtv"] = {8811, 824},
+ ["between"] = 8812,
+ ["twixt"] = 8812,
+ ["NotCupCap"] = 8813,
+ ["NotLess"] = 8814,
+ ["nless"] = 8814,
+ ["nlt"] = 8814,
+ ["NotGreater"] = 8815,
+ ["ngt"] = 8815,
+ ["ngtr"] = 8815,
+ ["NotLessEqual"] = 8816,
+ ["nle"] = 8816,
+ ["nleq"] = 8816,
+ ["NotGreaterEqual"] = 8817,
+ ["nge"] = 8817,
+ ["ngeq"] = 8817,
+ ["LessTilde"] = 8818,
+ ["lesssim"] = 8818,
+ ["lsim"] = 8818,
+ ["GreaterTilde"] = 8819,
+ ["gsim"] = 8819,
+ ["gtrsim"] = 8819,
+ ["NotLessTilde"] = 8820,
+ ["nlsim"] = 8820,
+ ["NotGreaterTilde"] = 8821,
+ ["ngsim"] = 8821,
+ ["LessGreater"] = 8822,
+ ["lessgtr"] = 8822,
+ ["lg"] = 8822,
+ ["GreaterLess"] = 8823,
+ ["gl"] = 8823,
+ ["gtrless"] = 8823,
+ ["NotLessGreater"] = 8824,
+ ["ntlg"] = 8824,
+ ["NotGreaterLess"] = 8825,
+ ["ntgl"] = 8825,
+ ["Precedes"] = 8826,
+ ["pr"] = 8826,
+ ["prec"] = 8826,
+ ["Succeeds"] = 8827,
+ ["sc"] = 8827,
+ ["succ"] = 8827,
+ ["PrecedesSlantEqual"] = 8828,
+ ["prcue"] = 8828,
+ ["preccurlyeq"] = 8828,
+ ["SucceedsSlantEqual"] = 8829,
+ ["sccue"] = 8829,
+ ["succcurlyeq"] = 8829,
+ ["PrecedesTilde"] = 8830,
+ ["precsim"] = 8830,
+ ["prsim"] = 8830,
+ ["NotSucceedsTilde"] = {8831, 824},
+ ["SucceedsTilde"] = 8831,
+ ["scsim"] = 8831,
+ ["succsim"] = 8831,
+ ["NotPrecedes"] = 8832,
+ ["npr"] = 8832,
+ ["nprec"] = 8832,
+ ["NotSucceeds"] = 8833,
+ ["nsc"] = 8833,
+ ["nsucc"] = 8833,
+ ["NotSubset"] = {8834, 8402},
+ ["nsubset"] = {8834, 8402},
+ ["sub"] = 8834,
+ ["subset"] = 8834,
+ ["vnsub"] = {8834, 8402},
+ ["NotSuperset"] = {8835, 8402},
+ ["Superset"] = 8835,
+ ["nsupset"] = {8835, 8402},
+ ["sup"] = 8835,
+ ["supset"] = 8835,
+ ["vnsup"] = {8835, 8402},
+ ["nsub"] = 8836,
+ ["nsup"] = 8837,
+ ["SubsetEqual"] = 8838,
+ ["sube"] = 8838,
+ ["subseteq"] = 8838,
+ ["SupersetEqual"] = 8839,
+ ["supe"] = 8839,
+ ["supseteq"] = 8839,
+ ["NotSubsetEqual"] = 8840,
+ ["nsube"] = 8840,
+ ["nsubseteq"] = 8840,
+ ["NotSupersetEqual"] = 8841,
+ ["nsupe"] = 8841,
+ ["nsupseteq"] = 8841,
+ ["subne"] = 8842,
+ ["subsetneq"] = 8842,
+ ["varsubsetneq"] = {8842, 65024},
+ ["vsubne"] = {8842, 65024},
+ ["supne"] = 8843,
+ ["supsetneq"] = 8843,
+ ["varsupsetneq"] = {8843, 65024},
+ ["vsupne"] = {8843, 65024},
+ ["cupdot"] = 8845,
+ ["UnionPlus"] = 8846,
+ ["uplus"] = 8846,
+ ["NotSquareSubset"] = {8847, 824},
+ ["SquareSubset"] = 8847,
+ ["sqsub"] = 8847,
+ ["sqsubset"] = 8847,
+ ["NotSquareSuperset"] = {8848, 824},
+ ["SquareSuperset"] = 8848,
+ ["sqsup"] = 8848,
+ ["sqsupset"] = 8848,
+ ["SquareSubsetEqual"] = 8849,
+ ["sqsube"] = 8849,
+ ["sqsubseteq"] = 8849,
+ ["SquareSupersetEqual"] = 8850,
+ ["sqsupe"] = 8850,
+ ["sqsupseteq"] = 8850,
+ ["SquareIntersection"] = 8851,
+ ["sqcap"] = 8851,
+ ["sqcaps"] = {8851, 65024},
+ ["SquareUnion"] = 8852,
+ ["sqcup"] = 8852,
+ ["sqcups"] = {8852, 65024},
+ ["CirclePlus"] = 8853,
+ ["oplus"] = 8853,
+ ["CircleMinus"] = 8854,
+ ["ominus"] = 8854,
+ ["CircleTimes"] = 8855,
+ ["otimes"] = 8855,
+ ["osol"] = 8856,
+ ["CircleDot"] = 8857,
+ ["odot"] = 8857,
+ ["circledcirc"] = 8858,
+ ["ocir"] = 8858,
+ ["circledast"] = 8859,
+ ["oast"] = 8859,
+ ["circleddash"] = 8861,
+ ["odash"] = 8861,
+ ["boxplus"] = 8862,
+ ["plusb"] = 8862,
+ ["boxminus"] = 8863,
+ ["minusb"] = 8863,
+ ["boxtimes"] = 8864,
+ ["timesb"] = 8864,
+ ["dotsquare"] = 8865,
+ ["sdotb"] = 8865,
+ ["RightTee"] = 8866,
+ ["vdash"] = 8866,
+ ["LeftTee"] = 8867,
+ ["dashv"] = 8867,
+ ["DownTee"] = 8868,
+ ["top"] = 8868,
+ ["UpTee"] = 8869,
+ ["bot"] = 8869,
+ ["bottom"] = 8869,
+ ["perp"] = 8869,
+ ["models"] = 8871,
+ ["DoubleRightTee"] = 8872,
+ ["vDash"] = 8872,
+ ["Vdash"] = 8873,
+ ["Vvdash"] = 8874,
+ ["VDash"] = 8875,
+ ["nvdash"] = 8876,
+ ["nvDash"] = 8877,
+ ["nVdash"] = 8878,
+ ["nVDash"] = 8879,
+ ["prurel"] = 8880,
+ ["LeftTriangle"] = 8882,
+ ["vartriangleleft"] = 8882,
+ ["vltri"] = 8882,
+ ["RightTriangle"] = 8883,
+ ["vartriangleright"] = 8883,
+ ["vrtri"] = 8883,
+ ["LeftTriangleEqual"] = 8884,
+ ["ltrie"] = 8884,
+ ["nvltrie"] = {8884, 8402},
+ ["trianglelefteq"] = 8884,
+ ["RightTriangleEqual"] = 8885,
+ ["nvrtrie"] = {8885, 8402},
+ ["rtrie"] = 8885,
+ ["trianglerighteq"] = 8885,
+ ["origof"] = 8886,
+ ["imof"] = 8887,
+ ["multimap"] = 8888,
+ ["mumap"] = 8888,
+ ["hercon"] = 8889,
+ ["intcal"] = 8890,
+ ["intercal"] = 8890,
+ ["veebar"] = 8891,
+ ["barvee"] = 8893,
+ ["angrtvb"] = 8894,
+ ["lrtri"] = 8895,
+ ["Wedge"] = 8896,
+ ["bigwedge"] = 8896,
+ ["xwedge"] = 8896,
+ ["Vee"] = 8897,
+ ["bigvee"] = 8897,
+ ["xvee"] = 8897,
+ ["Intersection"] = 8898,
+ ["bigcap"] = 8898,
+ ["xcap"] = 8898,
+ ["Union"] = 8899,
+ ["bigcup"] = 8899,
+ ["xcup"] = 8899,
+ ["Diamond"] = 8900,
+ ["diam"] = 8900,
+ ["diamond"] = 8900,
+ ["sdot"] = 8901,
+ ["Star"] = 8902,
+ ["sstarf"] = 8902,
+ ["divideontimes"] = 8903,
+ ["divonx"] = 8903,
+ ["bowtie"] = 8904,
+ ["ltimes"] = 8905,
+ ["rtimes"] = 8906,
+ ["leftthreetimes"] = 8907,
+ ["lthree"] = 8907,
+ ["rightthreetimes"] = 8908,
+ ["rthree"] = 8908,
+ ["backsimeq"] = 8909,
+ ["bsime"] = 8909,
+ ["curlyvee"] = 8910,
+ ["cuvee"] = 8910,
+ ["curlywedge"] = 8911,
+ ["cuwed"] = 8911,
+ ["Sub"] = 8912,
+ ["Subset"] = 8912,
+ ["Sup"] = 8913,
+ ["Supset"] = 8913,
+ ["Cap"] = 8914,
+ ["Cup"] = 8915,
+ ["fork"] = 8916,
+ ["pitchfork"] = 8916,
+ ["epar"] = 8917,
+ ["lessdot"] = 8918,
+ ["ltdot"] = 8918,
+ ["gtdot"] = 8919,
+ ["gtrdot"] = 8919,
+ ["Ll"] = 8920,
+ ["nLl"] = {8920, 824},
+ ["Gg"] = 8921,
+ ["ggg"] = 8921,
+ ["nGg"] = {8921, 824},
+ ["LessEqualGreater"] = 8922,
+ ["leg"] = 8922,
+ ["lesg"] = {8922, 65024},
+ ["lesseqgtr"] = 8922,
+ ["GreaterEqualLess"] = 8923,
+ ["gel"] = 8923,
+ ["gesl"] = {8923, 65024},
+ ["gtreqless"] = 8923,
+ ["cuepr"] = 8926,
+ ["curlyeqprec"] = 8926,
+ ["cuesc"] = 8927,
+ ["curlyeqsucc"] = 8927,
+ ["NotPrecedesSlantEqual"] = 8928,
+ ["nprcue"] = 8928,
+ ["NotSucceedsSlantEqual"] = 8929,
+ ["nsccue"] = 8929,
+ ["NotSquareSubsetEqual"] = 8930,
+ ["nsqsube"] = 8930,
+ ["NotSquareSupersetEqual"] = 8931,
+ ["nsqsupe"] = 8931,
+ ["lnsim"] = 8934,
+ ["gnsim"] = 8935,
+ ["precnsim"] = 8936,
+ ["prnsim"] = 8936,
+ ["scnsim"] = 8937,
+ ["succnsim"] = 8937,
+ ["NotLeftTriangle"] = 8938,
+ ["nltri"] = 8938,
+ ["ntriangleleft"] = 8938,
+ ["NotRightTriangle"] = 8939,
+ ["nrtri"] = 8939,
+ ["ntriangleright"] = 8939,
+ ["NotLeftTriangleEqual"] = 8940,
+ ["nltrie"] = 8940,
+ ["ntrianglelefteq"] = 8940,
+ ["NotRightTriangleEqual"] = 8941,
+ ["nrtrie"] = 8941,
+ ["ntrianglerighteq"] = 8941,
+ ["vellip"] = 8942,
+ ["ctdot"] = 8943,
+ ["utdot"] = 8944,
+ ["dtdot"] = 8945,
+ ["disin"] = 8946,
+ ["isinsv"] = 8947,
+ ["isins"] = 8948,
+ ["isindot"] = 8949,
+ ["notindot"] = {8949, 824},
+ ["notinvc"] = 8950,
+ ["notinvb"] = 8951,
+ ["isinE"] = 8953,
+ ["notinE"] = {8953, 824},
+ ["nisd"] = 8954,
+ ["xnis"] = 8955,
+ ["nis"] = 8956,
+ ["notnivc"] = 8957,
+ ["notnivb"] = 8958,
+ ["barwed"] = 8965,
+ ["barwedge"] = 8965,
+ ["Barwed"] = 8966,
+ ["doublebarwedge"] = 8966,
+ ["LeftCeiling"] = 8968,
+ ["lceil"] = 8968,
+ ["RightCeiling"] = 8969,
+ ["rceil"] = 8969,
+ ["LeftFloor"] = 8970,
+ ["lfloor"] = 8970,
+ ["RightFloor"] = 8971,
+ ["rfloor"] = 8971,
+ ["drcrop"] = 8972,
+ ["dlcrop"] = 8973,
+ ["urcrop"] = 8974,
+ ["ulcrop"] = 8975,
+ ["bnot"] = 8976,
+ ["profline"] = 8978,
+ ["profsurf"] = 8979,
+ ["telrec"] = 8981,
+ ["target"] = 8982,
+ ["ulcorn"] = 8988,
+ ["ulcorner"] = 8988,
+ ["urcorn"] = 8989,
+ ["urcorner"] = 8989,
+ ["dlcorn"] = 8990,
+ ["llcorner"] = 8990,
+ ["drcorn"] = 8991,
+ ["lrcorner"] = 8991,
+ ["frown"] = 8994,
+ ["sfrown"] = 8994,
+ ["smile"] = 8995,
+ ["ssmile"] = 8995,
+ ["cylcty"] = 9005,
+ ["profalar"] = 9006,
+ ["topbot"] = 9014,
+ ["ovbar"] = 9021,
+ ["solbar"] = 9023,
+ ["angzarr"] = 9084,
+ ["lmoust"] = 9136,
+ ["lmoustache"] = 9136,
+ ["rmoust"] = 9137,
+ ["rmoustache"] = 9137,
+ ["OverBracket"] = 9140,
+ ["tbrk"] = 9140,
+ ["UnderBracket"] = 9141,
+ ["bbrk"] = 9141,
+ ["bbrktbrk"] = 9142,
+ ["OverParenthesis"] = 9180,
+ ["UnderParenthesis"] = 9181,
+ ["OverBrace"] = 9182,
+ ["UnderBrace"] = 9183,
+ ["trpezium"] = 9186,
+ ["elinters"] = 9191,
+ ["blank"] = 9251,
+ ["circledS"] = 9416,
+ ["oS"] = 9416,
+ ["HorizontalLine"] = 9472,
+ ["boxh"] = 9472,
+ ["boxv"] = 9474,
+ ["boxdr"] = 9484,
+ ["boxdl"] = 9488,
+ ["boxur"] = 9492,
+ ["boxul"] = 9496,
+ ["boxvr"] = 9500,
+ ["boxvl"] = 9508,
+ ["boxhd"] = 9516,
+ ["boxhu"] = 9524,
+ ["boxvh"] = 9532,
+ ["boxH"] = 9552,
+ ["boxV"] = 9553,
+ ["boxdR"] = 9554,
+ ["boxDr"] = 9555,
+ ["boxDR"] = 9556,
+ ["boxdL"] = 9557,
+ ["boxDl"] = 9558,
+ ["boxDL"] = 9559,
+ ["boxuR"] = 9560,
+ ["boxUr"] = 9561,
+ ["boxUR"] = 9562,
+ ["boxuL"] = 9563,
+ ["boxUl"] = 9564,
+ ["boxUL"] = 9565,
+ ["boxvR"] = 9566,
+ ["boxVr"] = 9567,
+ ["boxVR"] = 9568,
+ ["boxvL"] = 9569,
+ ["boxVl"] = 9570,
+ ["boxVL"] = 9571,
+ ["boxHd"] = 9572,
+ ["boxhD"] = 9573,
+ ["boxHD"] = 9574,
+ ["boxHu"] = 9575,
+ ["boxhU"] = 9576,
+ ["boxHU"] = 9577,
+ ["boxvH"] = 9578,
+ ["boxVh"] = 9579,
+ ["boxVH"] = 9580,
+ ["uhblk"] = 9600,
+ ["lhblk"] = 9604,
+ ["block"] = 9608,
+ ["blk14"] = 9617,
+ ["blk12"] = 9618,
+ ["blk34"] = 9619,
+ ["Square"] = 9633,
+ ["squ"] = 9633,
+ ["square"] = 9633,
+ ["FilledVerySmallSquare"] = 9642,
+ ["blacksquare"] = 9642,
+ ["squarf"] = 9642,
+ ["squf"] = 9642,
+ ["EmptyVerySmallSquare"] = 9643,
+ ["rect"] = 9645,
+ ["marker"] = 9646,
+ ["fltns"] = 9649,
+ ["bigtriangleup"] = 9651,
+ ["xutri"] = 9651,
+ ["blacktriangle"] = 9652,
+ ["utrif"] = 9652,
+ ["triangle"] = 9653,
+ ["utri"] = 9653,
+ ["blacktriangleright"] = 9656,
+ ["rtrif"] = 9656,
+ ["rtri"] = 9657,
+ ["triangleright"] = 9657,
+ ["bigtriangledown"] = 9661,
+ ["xdtri"] = 9661,
+ ["blacktriangledown"] = 9662,
+ ["dtrif"] = 9662,
+ ["dtri"] = 9663,
+ ["triangledown"] = 9663,
+ ["blacktriangleleft"] = 9666,
+ ["ltrif"] = 9666,
+ ["ltri"] = 9667,
+ ["triangleleft"] = 9667,
+ ["loz"] = 9674,
+ ["lozenge"] = 9674,
+ ["cir"] = 9675,
+ ["tridot"] = 9708,
+ ["bigcirc"] = 9711,
+ ["xcirc"] = 9711,
+ ["ultri"] = 9720,
+ ["urtri"] = 9721,
+ ["lltri"] = 9722,
+ ["EmptySmallSquare"] = 9723,
+ ["FilledSmallSquare"] = 9724,
+ ["bigstar"] = 9733,
+ ["starf"] = 9733,
+ ["star"] = 9734,
+ ["phone"] = 9742,
+ ["female"] = 9792,
+ ["male"] = 9794,
+ ["spades"] = 9824,
+ ["spadesuit"] = 9824,
+ ["clubs"] = 9827,
+ ["clubsuit"] = 9827,
+ ["hearts"] = 9829,
+ ["heartsuit"] = 9829,
+ ["diamondsuit"] = 9830,
+ ["diams"] = 9830,
+ ["sung"] = 9834,
+ ["flat"] = 9837,
+ ["natur"] = 9838,
+ ["natural"] = 9838,
+ ["sharp"] = 9839,
+ ["check"] = 10003,
+ ["checkmark"] = 10003,
+ ["cross"] = 10007,
+ ["malt"] = 10016,
+ ["maltese"] = 10016,
+ ["sext"] = 10038,
+ ["VerticalSeparator"] = 10072,
+ ["lbbrk"] = 10098,
+ ["rbbrk"] = 10099,
+ ["bsolhsub"] = 10184,
+ ["suphsol"] = 10185,
+ ["LeftDoubleBracket"] = 10214,
+ ["lobrk"] = 10214,
+ ["RightDoubleBracket"] = 10215,
+ ["robrk"] = 10215,
+ ["LeftAngleBracket"] = 10216,
+ ["lang"] = 10216,
+ ["langle"] = 10216,
+ ["RightAngleBracket"] = 10217,
+ ["rang"] = 10217,
+ ["rangle"] = 10217,
+ ["Lang"] = 10218,
+ ["Rang"] = 10219,
+ ["loang"] = 10220,
+ ["roang"] = 10221,
+ ["LongLeftArrow"] = 10229,
+ ["longleftarrow"] = 10229,
+ ["xlarr"] = 10229,
+ ["LongRightArrow"] = 10230,
+ ["longrightarrow"] = 10230,
+ ["xrarr"] = 10230,
+ ["LongLeftRightArrow"] = 10231,
+ ["longleftrightarrow"] = 10231,
+ ["xharr"] = 10231,
+ ["DoubleLongLeftArrow"] = 10232,
+ ["Longleftarrow"] = 10232,
+ ["xlArr"] = 10232,
+ ["DoubleLongRightArrow"] = 10233,
+ ["Longrightarrow"] = 10233,
+ ["xrArr"] = 10233,
+ ["DoubleLongLeftRightArrow"] = 10234,
+ ["Longleftrightarrow"] = 10234,
+ ["xhArr"] = 10234,
+ ["longmapsto"] = 10236,
+ ["xmap"] = 10236,
+ ["dzigrarr"] = 10239,
+ ["nvlArr"] = 10498,
+ ["nvrArr"] = 10499,
+ ["nvHarr"] = 10500,
+ ["Map"] = 10501,
+ ["lbarr"] = 10508,
+ ["bkarow"] = 10509,
+ ["rbarr"] = 10509,
+ ["lBarr"] = 10510,
+ ["dbkarow"] = 10511,
+ ["rBarr"] = 10511,
+ ["RBarr"] = 10512,
+ ["drbkarow"] = 10512,
+ ["DDotrahd"] = 10513,
+ ["UpArrowBar"] = 10514,
+ ["DownArrowBar"] = 10515,
+ ["Rarrtl"] = 10518,
+ ["latail"] = 10521,
+ ["ratail"] = 10522,
+ ["lAtail"] = 10523,
+ ["rAtail"] = 10524,
+ ["larrfs"] = 10525,
+ ["rarrfs"] = 10526,
+ ["larrbfs"] = 10527,
+ ["rarrbfs"] = 10528,
+ ["nwarhk"] = 10531,
+ ["nearhk"] = 10532,
+ ["hksearow"] = 10533,
+ ["searhk"] = 10533,
+ ["hkswarow"] = 10534,
+ ["swarhk"] = 10534,
+ ["nwnear"] = 10535,
+ ["nesear"] = 10536,
+ ["toea"] = 10536,
+ ["seswar"] = 10537,
+ ["tosa"] = 10537,
+ ["swnwar"] = 10538,
+ ["nrarrc"] = {10547, 824},
+ ["rarrc"] = 10547,
+ ["cudarrr"] = 10549,
+ ["ldca"] = 10550,
+ ["rdca"] = 10551,
+ ["cudarrl"] = 10552,
+ ["larrpl"] = 10553,
+ ["curarrm"] = 10556,
+ ["cularrp"] = 10557,
+ ["rarrpl"] = 10565,
+ ["harrcir"] = 10568,
+ ["Uarrocir"] = 10569,
+ ["lurdshar"] = 10570,
+ ["ldrushar"] = 10571,
+ ["LeftRightVector"] = 10574,
+ ["RightUpDownVector"] = 10575,
+ ["DownLeftRightVector"] = 10576,
+ ["LeftUpDownVector"] = 10577,
+ ["LeftVectorBar"] = 10578,
+ ["RightVectorBar"] = 10579,
+ ["RightUpVectorBar"] = 10580,
+ ["RightDownVectorBar"] = 10581,
+ ["DownLeftVectorBar"] = 10582,
+ ["DownRightVectorBar"] = 10583,
+ ["LeftUpVectorBar"] = 10584,
+ ["LeftDownVectorBar"] = 10585,
+ ["LeftTeeVector"] = 10586,
+ ["RightTeeVector"] = 10587,
+ ["RightUpTeeVector"] = 10588,
+ ["RightDownTeeVector"] = 10589,
+ ["DownLeftTeeVector"] = 10590,
+ ["DownRightTeeVector"] = 10591,
+ ["LeftUpTeeVector"] = 10592,
+ ["LeftDownTeeVector"] = 10593,
+ ["lHar"] = 10594,
+ ["uHar"] = 10595,
+ ["rHar"] = 10596,
+ ["dHar"] = 10597,
+ ["luruhar"] = 10598,
+ ["ldrdhar"] = 10599,
+ ["ruluhar"] = 10600,
+ ["rdldhar"] = 10601,
+ ["lharul"] = 10602,
+ ["llhard"] = 10603,
+ ["rharul"] = 10604,
+ ["lrhard"] = 10605,
+ ["UpEquilibrium"] = 10606,
+ ["udhar"] = 10606,
+ ["ReverseUpEquilibrium"] = 10607,
+ ["duhar"] = 10607,
+ ["RoundImplies"] = 10608,
+ ["erarr"] = 10609,
+ ["simrarr"] = 10610,
+ ["larrsim"] = 10611,
+ ["rarrsim"] = 10612,
+ ["rarrap"] = 10613,
+ ["ltlarr"] = 10614,
+ ["gtrarr"] = 10616,
+ ["subrarr"] = 10617,
+ ["suplarr"] = 10619,
+ ["lfisht"] = 10620,
+ ["rfisht"] = 10621,
+ ["ufisht"] = 10622,
+ ["dfisht"] = 10623,
+ ["lopar"] = 10629,
+ ["ropar"] = 10630,
+ ["lbrke"] = 10635,
+ ["rbrke"] = 10636,
+ ["lbrkslu"] = 10637,
+ ["rbrksld"] = 10638,
+ ["lbrksld"] = 10639,
+ ["rbrkslu"] = 10640,
+ ["langd"] = 10641,
+ ["rangd"] = 10642,
+ ["lparlt"] = 10643,
+ ["rpargt"] = 10644,
+ ["gtlPar"] = 10645,
+ ["ltrPar"] = 10646,
+ ["vzigzag"] = 10650,
+ ["vangrt"] = 10652,
+ ["angrtvbd"] = 10653,
+ ["ange"] = 10660,
+ ["range"] = 10661,
+ ["dwangle"] = 10662,
+ ["uwangle"] = 10663,
+ ["angmsdaa"] = 10664,
+ ["angmsdab"] = 10665,
+ ["angmsdac"] = 10666,
+ ["angmsdad"] = 10667,
+ ["angmsdae"] = 10668,
+ ["angmsdaf"] = 10669,
+ ["angmsdag"] = 10670,
+ ["angmsdah"] = 10671,
+ ["bemptyv"] = 10672,
+ ["demptyv"] = 10673,
+ ["cemptyv"] = 10674,
+ ["raemptyv"] = 10675,
+ ["laemptyv"] = 10676,
+ ["ohbar"] = 10677,
+ ["omid"] = 10678,
+ ["opar"] = 10679,
+ ["operp"] = 10681,
+ ["olcross"] = 10683,
+ ["odsold"] = 10684,
+ ["olcir"] = 10686,
+ ["ofcir"] = 10687,
+ ["olt"] = 10688,
+ ["ogt"] = 10689,
+ ["cirscir"] = 10690,
+ ["cirE"] = 10691,
+ ["solb"] = 10692,
+ ["bsolb"] = 10693,
+ ["boxbox"] = 10697,
+ ["trisb"] = 10701,
+ ["rtriltri"] = 10702,
+ ["LeftTriangleBar"] = 10703,
+ ["NotLeftTriangleBar"] = {10703, 824},
+ ["NotRightTriangleBar"] = {10704, 824},
+ ["RightTriangleBar"] = 10704,
+ ["iinfin"] = 10716,
+ ["infintie"] = 10717,
+ ["nvinfin"] = 10718,
+ ["eparsl"] = 10723,
+ ["smeparsl"] = 10724,
+ ["eqvparsl"] = 10725,
+ ["blacklozenge"] = 10731,
+ ["lozf"] = 10731,
+ ["RuleDelayed"] = 10740,
+ ["dsol"] = 10742,
+ ["bigodot"] = 10752,
+ ["xodot"] = 10752,
+ ["bigoplus"] = 10753,
+ ["xoplus"] = 10753,
+ ["bigotimes"] = 10754,
+ ["xotime"] = 10754,
+ ["biguplus"] = 10756,
+ ["xuplus"] = 10756,
+ ["bigsqcup"] = 10758,
+ ["xsqcup"] = 10758,
+ ["iiiint"] = 10764,
+ ["qint"] = 10764,
+ ["fpartint"] = 10765,
+ ["cirfnint"] = 10768,
+ ["awint"] = 10769,
+ ["rppolint"] = 10770,
+ ["scpolint"] = 10771,
+ ["npolint"] = 10772,
+ ["pointint"] = 10773,
+ ["quatint"] = 10774,
+ ["intlarhk"] = 10775,
+ ["pluscir"] = 10786,
+ ["plusacir"] = 10787,
+ ["simplus"] = 10788,
+ ["plusdu"] = 10789,
+ ["plussim"] = 10790,
+ ["plustwo"] = 10791,
+ ["mcomma"] = 10793,
+ ["minusdu"] = 10794,
+ ["loplus"] = 10797,
+ ["roplus"] = 10798,
+ ["Cross"] = 10799,
+ ["timesd"] = 10800,
+ ["timesbar"] = 10801,
+ ["smashp"] = 10803,
+ ["lotimes"] = 10804,
+ ["rotimes"] = 10805,
+ ["otimesas"] = 10806,
+ ["Otimes"] = 10807,
+ ["odiv"] = 10808,
+ ["triplus"] = 10809,
+ ["triminus"] = 10810,
+ ["tritime"] = 10811,
+ ["intprod"] = 10812,
+ ["iprod"] = 10812,
+ ["amalg"] = 10815,
+ ["capdot"] = 10816,
+ ["ncup"] = 10818,
+ ["ncap"] = 10819,
+ ["capand"] = 10820,
+ ["cupor"] = 10821,
+ ["cupcap"] = 10822,
+ ["capcup"] = 10823,
+ ["cupbrcap"] = 10824,
+ ["capbrcup"] = 10825,
+ ["cupcup"] = 10826,
+ ["capcap"] = 10827,
+ ["ccups"] = 10828,
+ ["ccaps"] = 10829,
+ ["ccupssm"] = 10832,
+ ["And"] = 10835,
+ ["Or"] = 10836,
+ ["andand"] = 10837,
+ ["oror"] = 10838,
+ ["orslope"] = 10839,
+ ["andslope"] = 10840,
+ ["andv"] = 10842,
+ ["orv"] = 10843,
+ ["andd"] = 10844,
+ ["ord"] = 10845,
+ ["wedbar"] = 10847,
+ ["sdote"] = 10854,
+ ["simdot"] = 10858,
+ ["congdot"] = 10861,
+ ["ncongdot"] = {10861, 824},
+ ["easter"] = 10862,
+ ["apacir"] = 10863,
+ ["apE"] = 10864,
+ ["napE"] = {10864, 824},
+ ["eplus"] = 10865,
+ ["pluse"] = 10866,
+ ["Esim"] = 10867,
+ ["Colone"] = 10868,
+ ["Equal"] = 10869,
+ ["ddotseq"] = 10871,
+ ["eDDot"] = 10871,
+ ["equivDD"] = 10872,
+ ["ltcir"] = 10873,
+ ["gtcir"] = 10874,
+ ["ltquest"] = 10875,
+ ["gtquest"] = 10876,
+ ["LessSlantEqual"] = 10877,
+ ["NotLessSlantEqual"] = {10877, 824},
+ ["leqslant"] = 10877,
+ ["les"] = 10877,
+ ["nleqslant"] = {10877, 824},
+ ["nles"] = {10877, 824},
+ ["GreaterSlantEqual"] = 10878,
+ ["NotGreaterSlantEqual"] = {10878, 824},
+ ["geqslant"] = 10878,
+ ["ges"] = 10878,
+ ["ngeqslant"] = {10878, 824},
+ ["nges"] = {10878, 824},
+ ["lesdot"] = 10879,
+ ["gesdot"] = 10880,
+ ["lesdoto"] = 10881,
+ ["gesdoto"] = 10882,
+ ["lesdotor"] = 10883,
+ ["gesdotol"] = 10884,
+ ["lap"] = 10885,
+ ["lessapprox"] = 10885,
+ ["gap"] = 10886,
+ ["gtrapprox"] = 10886,
+ ["lne"] = 10887,
+ ["lneq"] = 10887,
+ ["gne"] = 10888,
+ ["gneq"] = 10888,
+ ["lnap"] = 10889,
+ ["lnapprox"] = 10889,
+ ["gnap"] = 10890,
+ ["gnapprox"] = 10890,
+ ["lEg"] = 10891,
+ ["lesseqqgtr"] = 10891,
+ ["gEl"] = 10892,
+ ["gtreqqless"] = 10892,
+ ["lsime"] = 10893,
+ ["gsime"] = 10894,
+ ["lsimg"] = 10895,
+ ["gsiml"] = 10896,
+ ["lgE"] = 10897,
+ ["glE"] = 10898,
+ ["lesges"] = 10899,
+ ["gesles"] = 10900,
+ ["els"] = 10901,
+ ["eqslantless"] = 10901,
+ ["egs"] = 10902,
+ ["eqslantgtr"] = 10902,
+ ["elsdot"] = 10903,
+ ["egsdot"] = 10904,
+ ["el"] = 10905,
+ ["eg"] = 10906,
+ ["siml"] = 10909,
+ ["simg"] = 10910,
+ ["simlE"] = 10911,
+ ["simgE"] = 10912,
+ ["LessLess"] = 10913,
+ ["NotNestedLessLess"] = {10913, 824},
+ ["GreaterGreater"] = 10914,
+ ["NotNestedGreaterGreater"] = {10914, 824},
+ ["glj"] = 10916,
+ ["gla"] = 10917,
+ ["ltcc"] = 10918,
+ ["gtcc"] = 10919,
+ ["lescc"] = 10920,
+ ["gescc"] = 10921,
+ ["smt"] = 10922,
+ ["lat"] = 10923,
+ ["smte"] = 10924,
+ ["smtes"] = {10924, 65024},
+ ["late"] = 10925,
+ ["lates"] = {10925, 65024},
+ ["bumpE"] = 10926,
+ ["NotPrecedesEqual"] = {10927, 824},
+ ["PrecedesEqual"] = 10927,
+ ["npre"] = {10927, 824},
+ ["npreceq"] = {10927, 824},
+ ["pre"] = 10927,
+ ["preceq"] = 10927,
+ ["NotSucceedsEqual"] = {10928, 824},
+ ["SucceedsEqual"] = 10928,
+ ["nsce"] = {10928, 824},
+ ["nsucceq"] = {10928, 824},
+ ["sce"] = 10928,
+ ["succeq"] = 10928,
+ ["prE"] = 10931,
+ ["scE"] = 10932,
+ ["precneqq"] = 10933,
+ ["prnE"] = 10933,
+ ["scnE"] = 10934,
+ ["succneqq"] = 10934,
+ ["prap"] = 10935,
+ ["precapprox"] = 10935,
+ ["scap"] = 10936,
+ ["succapprox"] = 10936,
+ ["precnapprox"] = 10937,
+ ["prnap"] = 10937,
+ ["scnap"] = 10938,
+ ["succnapprox"] = 10938,
+ ["Pr"] = 10939,
+ ["Sc"] = 10940,
+ ["subdot"] = 10941,
+ ["supdot"] = 10942,
+ ["subplus"] = 10943,
+ ["supplus"] = 10944,
+ ["submult"] = 10945,
+ ["supmult"] = 10946,
+ ["subedot"] = 10947,
+ ["supedot"] = 10948,
+ ["nsubE"] = {10949, 824},
+ ["nsubseteqq"] = {10949, 824},
+ ["subE"] = 10949,
+ ["subseteqq"] = 10949,
+ ["nsupE"] = {10950, 824},
+ ["nsupseteqq"] = {10950, 824},
+ ["supE"] = 10950,
+ ["supseteqq"] = 10950,
+ ["subsim"] = 10951,
+ ["supsim"] = 10952,
+ ["subnE"] = 10955,
+ ["subsetneqq"] = 10955,
+ ["varsubsetneqq"] = {10955, 65024},
+ ["vsubnE"] = {10955, 65024},
+ ["supnE"] = 10956,
+ ["supsetneqq"] = 10956,
+ ["varsupsetneqq"] = {10956, 65024},
+ ["vsupnE"] = {10956, 65024},
+ ["csub"] = 10959,
+ ["csup"] = 10960,
+ ["csube"] = 10961,
+ ["csupe"] = 10962,
+ ["subsup"] = 10963,
+ ["supsub"] = 10964,
+ ["subsub"] = 10965,
+ ["supsup"] = 10966,
+ ["suphsub"] = 10967,
+ ["supdsub"] = 10968,
+ ["forkv"] = 10969,
+ ["topfork"] = 10970,
+ ["mlcp"] = 10971,
+ ["Dashv"] = 10980,
+ ["DoubleLeftTee"] = 10980,
+ ["Vdashl"] = 10982,
+ ["Barv"] = 10983,
+ ["vBar"] = 10984,
+ ["vBarv"] = 10985,
+ ["Vbar"] = 10987,
+ ["Not"] = 10988,
+ ["bNot"] = 10989,
+ ["rnmid"] = 10990,
+ ["cirmid"] = 10991,
+ ["midcir"] = 10992,
+ ["topcir"] = 10993,
+ ["nhpar"] = 10994,
+ ["parsim"] = 10995,
+ ["nparsl"] = {11005, 8421},
+ ["parsl"] = 11005,
+ ["fflig"] = 64256,
+ ["filig"] = 64257,
+ ["fllig"] = 64258,
+ ["ffilig"] = 64259,
+ ["ffllig"] = 64260,
+ ["Ascr"] = 119964,
+ ["Cscr"] = 119966,
+ ["Dscr"] = 119967,
+ ["Gscr"] = 119970,
+ ["Jscr"] = 119973,
+ ["Kscr"] = 119974,
+ ["Nscr"] = 119977,
+ ["Oscr"] = 119978,
+ ["Pscr"] = 119979,
+ ["Qscr"] = 119980,
+ ["Sscr"] = 119982,
+ ["Tscr"] = 119983,
+ ["Uscr"] = 119984,
+ ["Vscr"] = 119985,
+ ["Wscr"] = 119986,
+ ["Xscr"] = 119987,
+ ["Yscr"] = 119988,
+ ["Zscr"] = 119989,
+ ["ascr"] = 119990,
+ ["bscr"] = 119991,
+ ["cscr"] = 119992,
+ ["dscr"] = 119993,
+ ["fscr"] = 119995,
+ ["hscr"] = 119997,
+ ["iscr"] = 119998,
+ ["jscr"] = 119999,
+ ["kscr"] = 120000,
+ ["lscr"] = 120001,
+ ["mscr"] = 120002,
+ ["nscr"] = 120003,
+ ["pscr"] = 120005,
+ ["qscr"] = 120006,
+ ["rscr"] = 120007,
+ ["sscr"] = 120008,
+ ["tscr"] = 120009,
+ ["uscr"] = 120010,
+ ["vscr"] = 120011,
+ ["wscr"] = 120012,
+ ["xscr"] = 120013,
+ ["yscr"] = 120014,
+ ["zscr"] = 120015,
+ ["Afr"] = 120068,
+ ["Bfr"] = 120069,
+ ["Dfr"] = 120071,
+ ["Efr"] = 120072,
+ ["Ffr"] = 120073,
+ ["Gfr"] = 120074,
+ ["Jfr"] = 120077,
+ ["Kfr"] = 120078,
+ ["Lfr"] = 120079,
+ ["Mfr"] = 120080,
+ ["Nfr"] = 120081,
+ ["Ofr"] = 120082,
+ ["Pfr"] = 120083,
+ ["Qfr"] = 120084,
+ ["Sfr"] = 120086,
+ ["Tfr"] = 120087,
+ ["Ufr"] = 120088,
+ ["Vfr"] = 120089,
+ ["Wfr"] = 120090,
+ ["Xfr"] = 120091,
+ ["Yfr"] = 120092,
+ ["afr"] = 120094,
+ ["bfr"] = 120095,
+ ["cfr"] = 120096,
+ ["dfr"] = 120097,
+ ["efr"] = 120098,
+ ["ffr"] = 120099,
+ ["gfr"] = 120100,
+ ["hfr"] = 120101,
+ ["ifr"] = 120102,
+ ["jfr"] = 120103,
+ ["kfr"] = 120104,
+ ["lfr"] = 120105,
+ ["mfr"] = 120106,
+ ["nfr"] = 120107,
+ ["ofr"] = 120108,
+ ["pfr"] = 120109,
+ ["qfr"] = 120110,
+ ["rfr"] = 120111,
+ ["sfr"] = 120112,
+ ["tfr"] = 120113,
+ ["ufr"] = 120114,
+ ["vfr"] = 120115,
+ ["wfr"] = 120116,
+ ["xfr"] = 120117,
+ ["yfr"] = 120118,
+ ["zfr"] = 120119,
+ ["Aopf"] = 120120,
+ ["Bopf"] = 120121,
+ ["Dopf"] = 120123,
+ ["Eopf"] = 120124,
+ ["Fopf"] = 120125,
+ ["Gopf"] = 120126,
+ ["Iopf"] = 120128,
+ ["Jopf"] = 120129,
+ ["Kopf"] = 120130,
+ ["Lopf"] = 120131,
+ ["Mopf"] = 120132,
+ ["Oopf"] = 120134,
+ ["Sopf"] = 120138,
+ ["Topf"] = 120139,
+ ["Uopf"] = 120140,
+ ["Vopf"] = 120141,
+ ["Wopf"] = 120142,
+ ["Xopf"] = 120143,
+ ["Yopf"] = 120144,
+ ["aopf"] = 120146,
+ ["bopf"] = 120147,
+ ["copf"] = 120148,
+ ["dopf"] = 120149,
+ ["eopf"] = 120150,
+ ["fopf"] = 120151,
+ ["gopf"] = 120152,
+ ["hopf"] = 120153,
+ ["iopf"] = 120154,
+ ["jopf"] = 120155,
+ ["kopf"] = 120156,
+ ["lopf"] = 120157,
+ ["mopf"] = 120158,
+ ["nopf"] = 120159,
+ ["oopf"] = 120160,
+ ["popf"] = 120161,
+ ["qopf"] = 120162,
+ ["ropf"] = 120163,
+ ["sopf"] = 120164,
+ ["topf"] = 120165,
+ ["uopf"] = 120166,
+ ["vopf"] = 120167,
+ ["wopf"] = 120168,
+ ["xopf"] = 120169,
+ ["yopf"] = 120170,
+ ["zopf"] = 120171,
+}
+function entities.dec_entity(s)
+ local n = tonumber(s)
+ if n == nil then
+ return "&#" .. s .. ";" -- fallback for unknown entities
+ end
+ return unicode.utf8.char(n)
+end
+function entities.hex_entity(s)
+ local n = tonumber("0x"..s)
+ if n == nil then
+ return "&#x" .. s .. ";" -- fallback for unknown entities
+ end
+ return unicode.utf8.char(n)
+end
+function entities.hex_entity_with_x_char(x, s)
+ local n = tonumber("0x"..s)
+ if n == nil then
+ return "&#" .. x .. s .. ";" -- fallback for unknown entities
+ end
+ return unicode.utf8.char(n)
+end
+function entities.char_entity(s)
+ local code_points = character_entities[s]
+ if code_points == nil then
+ return "&" .. s .. ";"
+ end
+ if type(code_points) ~= 'table' then
+ code_points = {code_points}
+ end
+ local char_table = {}
+ for _, code_point in ipairs(code_points) do
+ table.insert(char_table, unicode.utf8.char(code_point))
+ end
+ return table.concat(char_table)
+end
+M.writer = {}
+function M.writer.new(options)
+ local self = {}
+ self.options = options
+ self.flatten_inlines = false
+ local slice_specifiers = {}
+ for specifier in options.slice:gmatch("[^%s]+") do
+ table.insert(slice_specifiers, specifier)
+ end
+
+ if #slice_specifiers == 2 then
+ self.slice_begin, self.slice_end = table.unpack(slice_specifiers)
+ local slice_begin_type = self.slice_begin:sub(1, 1)
+ if slice_begin_type ~= "^" and slice_begin_type ~= "$" then
+ self.slice_begin = "^" .. self.slice_begin
+ end
+ local slice_end_type = self.slice_end:sub(1, 1)
+ if slice_end_type ~= "^" and slice_end_type ~= "$" then
+ self.slice_end = "$" .. self.slice_end
+ end
+ elseif #slice_specifiers == 1 then
+ self.slice_begin = "^" .. slice_specifiers[1]
+ self.slice_end = "$" .. slice_specifiers[1]
+ end
+
+ self.slice_begin_type = self.slice_begin:sub(1, 1)
+ self.slice_begin_identifier = self.slice_begin:sub(2) or ""
+ self.slice_end_type = self.slice_end:sub(1, 1)
+ self.slice_end_identifier = self.slice_end:sub(2) or ""
+
+ if self.slice_begin == "^" and self.slice_end ~= "^" then
+ self.is_writing = true
+ else
+ self.is_writing = false
+ end
+ self.space = " "
+ self.nbsp = "\\markdownRendererNbsp{}"
+ function self.plain(s)
+ return s
+ end
+ function self.paragraph(s)
+ if not self.is_writing then return "" end
+ return s
+ end
+ self.interblocksep_text = "\\markdownRendererInterblockSeparator\n{}"
+ function self.interblocksep()
+ if not self.is_writing then return "" end
+ return self.interblocksep_text
+ end
+ self.paragraphsep_text = "\\markdownRendererParagraphSeparator\n{}"
+ function self.paragraphsep()
+ if not self.is_writing then return "" end
+ return self.paragraphsep_text
+ end
+ self.undosep_text = "\\markdownRendererUndoSeparator\n{}"
+ function self.undosep()
+ if not self.is_writing then return "" end
+ return self.undosep_text
+ end
+ self.soft_line_break = function()
+ if self.flatten_inlines then return "\n" end
+ return "\\markdownRendererSoftLineBreak\n{}"
+ end
+ self.hard_line_break = function()
+ if self.flatten_inlines then return "\n" end
+ return "\\markdownRendererHardLineBreak\n{}"
+ end
+ self.ellipsis = "\\markdownRendererEllipsis{}"
+ function self.thematic_break()
+ if not self.is_writing then return "" end
+ return "\\markdownRendererThematicBreak{}"
+ end
+ self.escaped_uri_chars = {
+ ["{"] = "\\markdownRendererLeftBrace{}",
+ ["}"] = "\\markdownRendererRightBrace{}",
+ ["\\"] = "\\markdownRendererBackslash{}",
+ ["\r"] = " ",
+ ["\n"] = " ",
+ }
+ self.escaped_minimal_strings = {
+ ["^^"] = "\\markdownRendererCircumflex"
+ .. "\\markdownRendererCircumflex ",
+ ["☒"] = "\\markdownRendererTickedBox{}",
+ ["⌛"] = "\\markdownRendererHalfTickedBox{}",
+ ["☐"] = "\\markdownRendererUntickedBox{}",
+ [entities.hex_entity('FFFD')]
+ = "\\markdownRendererReplacementCharacter{}",
+ }
+ self.escaped_strings = util.table_copy(self.escaped_minimal_strings)
+ self.escaped_strings[entities.hex_entity('00A0')] = self.nbsp
+ self.escaped_chars = {
+ ["{"] = "\\markdownRendererLeftBrace{}",
+ ["}"] = "\\markdownRendererRightBrace{}",
+ ["%"] = "\\markdownRendererPercentSign{}",
+ ["\\"] = "\\markdownRendererBackslash{}",
+ ["#"] = "\\markdownRendererHash{}",
+ ["$"] = "\\markdownRendererDollarSign{}",
+ ["&"] = "\\markdownRendererAmpersand{}",
+ ["_"] = "\\markdownRendererUnderscore{}",
+ ["^"] = "\\markdownRendererCircumflex{}",
+ ["~"] = "\\markdownRendererTilde{}",
+ ["|"] = "\\markdownRendererPipe{}",
+ [entities.hex_entity('0000')]
+ = "\\markdownRendererReplacementCharacter{}",
+ }
+ local function create_escaper(char_escapes, string_escapes)
+ local escape = util.escaper(char_escapes, string_escapes)
+ return function(s)
+ if self.flatten_inlines then return s end
+ return escape(s)
+ end
+ end
+ local escape_typographic_text = create_escaper(
+ self.escaped_chars, self.escaped_strings)
+ local escape_programmatic_text = create_escaper(
+ self.escaped_uri_chars, self.escaped_minimal_strings)
+ local escape_minimal = create_escaper(
+ {}, self.escaped_minimal_strings)
+ self.escape = escape_typographic_text
+ self.math = escape_minimal
+ if options.hybrid then
+ self.identifier = escape_minimal
+ self.string = escape_minimal
+ self.uri = escape_minimal
+ self.infostring = escape_minimal
+ else
+ self.identifier = escape_programmatic_text
+ self.string = escape_typographic_text
+ self.uri = escape_programmatic_text
+ self.infostring = escape_programmatic_text
+ end
+ 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, 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
+ local buf = {}
+ if attributes ~= nil then
+ table.insert(buf,
+ "\\markdownRendererCodeSpanAttributeContextBegin\n")
+ table.insert(buf, self.attributes(attributes))
+ end
+ table.insert(buf,
+ {"\\markdownRendererCodeSpan{", self.escape(s), "}"})
+ if attributes ~= nil then
+ table.insert(buf,
+ "\\markdownRendererCodeSpanAttributeContextEnd{}")
+ end
+ return buf
+ end
+ function self.link(lab, src, tit, attributes)
+ if self.flatten_inlines then return lab end
+ local buf = {}
+ if attributes ~= nil then
+ table.insert(buf,
+ "\\markdownRendererLinkAttributeContextBegin\n")
+ table.insert(buf, self.attributes(attributes))
+ end
+ table.insert(buf, {"\\markdownRendererLink{",lab,"}",
+ "{",self.escape(src),"}",
+ "{",self.uri(src),"}",
+ "{",self.string(tit or ""),"}"})
+ if attributes ~= nil then
+ table.insert(buf,
+ "\\markdownRendererLinkAttributeContextEnd{}")
+ end
+ return buf
+ end
+ function self.image(lab, src, tit, attributes)
+ if self.flatten_inlines then return lab end
+ local buf = {}
+ if attributes ~= nil then
+ table.insert(buf,
+ "\\markdownRendererImageAttributeContextBegin\n")
+ table.insert(buf, self.attributes(attributes))
+ end
+ table.insert(buf, {"\\markdownRendererImage{",lab,"}",
+ "{",self.string(src),"}",
+ "{",self.uri(src),"}",
+ "{",self.string(tit or ""),"}"})
+ if attributes ~= nil then
+ table.insert(buf,
+ "\\markdownRendererImageAttributeContextEnd{}")
+ end
+ return buf
+ end
+ function self.bulletlist(items,tight)
+ if not self.is_writing then return "" end
+ local buffer = {}
+ for _,item in ipairs(items) do
+ if item ~= "" then
+ buffer[#buffer + 1] = self.bulletitem(item)
+ end
+ end
+ local contents = util.intersperse(buffer,"\n")
+ if tight and options.tightLists then
+ return {"\\markdownRendererUlBeginTight\n",contents,
+ "\n\\markdownRendererUlEndTight "}
+ else
+ return {"\\markdownRendererUlBegin\n",contents,
+ "\n\\markdownRendererUlEnd "}
+ end
+ end
+ function self.bulletitem(s)
+ return {"\\markdownRendererUlItem ",s,
+ "\\markdownRendererUlItemEnd "}
+ end
+ function self.orderedlist(items,tight,startnum)
+ if not self.is_writing then return "" end
+ local buffer = {}
+ local num = startnum
+ for _,item in ipairs(items) do
+ if item ~= "" then
+ buffer[#buffer + 1] = self.ordereditem(item,num)
+ end
+ if num ~= nil and item ~= "" then
+ num = num + 1
+ end
+ end
+ local contents = util.intersperse(buffer,"\n")
+ if tight and options.tightLists then
+ return {"\\markdownRendererOlBeginTight\n",contents,
+ "\n\\markdownRendererOlEndTight "}
+ else
+ return {"\\markdownRendererOlBegin\n",contents,
+ "\n\\markdownRendererOlEnd "}
+ end
+ end
+ function self.ordereditem(s,num)
+ if num ~= nil then
+ return {"\\markdownRendererOlItemWithNumber{",num,"}",s,
+ "\\markdownRendererOlItemEnd "}
+ else
+ return {"\\markdownRendererOlItem ",s,
+ "\\markdownRendererOlItemEnd "}
+ end
+ end
+ function self.inline_html_comment(contents)
+ if self.flatten_inlines then return contents end
+ return {"\\markdownRendererInlineHtmlComment{",contents,"}"}
+ end
+ function self.inline_html_tag(contents)
+ if self.flatten_inlines then return contents end
+ return {"\\markdownRendererInlineHtmlTag{",
+ self.string(contents),"}"}
+ end
+ function self.block_html_element(s)
+ if not self.is_writing then return "" end
+ local name = util.cache(options.cacheDir, s, nil, nil, ".verbatim")
+ return {"\\markdownRendererInputBlockHtmlElement{",name,"}"}
+ end
+ function self.emphasis(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererEmphasis{",s,"}"}
+ end
+ function self.tickbox(f)
+ if f == 1.0 then
+ return "☒ "
+ elseif f == 0.0 then
+ return "☐ "
+ else
+ return "⌛ "
+ end
+ end
+ function self.strong(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererStrongEmphasis{",s,"}"}
+ end
+ function self.blockquote(s)
+ if not self.is_writing then return "" end
+ return {"\\markdownRendererBlockQuoteBegin\n",s,
+ "\\markdownRendererBlockQuoteEnd "}
+ end
+ function self.verbatim(s)
+ if not self.is_writing then return "" end
+ s = s:gsub("\n$", "")
+ local name = util.cache_verbatim(options.cacheDir, s)
+ return {"\\markdownRendererInputVerbatim{",name,"}"}
+ end
+ function self.document(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())
+
+ table.insert(buf, "\\markdownRendererDocumentEnd")
+
+ return buf
+ end
+ local seen_identifiers = {}
+ local key_value_regex = "([^= ]+)%s*=%s*(.*)"
+ local function normalize_attributes(attributes, auto_identifiers)
+ -- normalize attributes
+ local normalized_attributes = {}
+ local has_explicit_identifiers = false
+ local key, value
+ for _, attribute in ipairs(attributes or {}) do
+ if attribute:sub(1, 1) == "#" then
+ table.insert(normalized_attributes, attribute)
+ has_explicit_identifiers = true
+ seen_identifiers[attribute:sub(2)] = true
+ elseif attribute:sub(1, 1) == "." then
+ table.insert(normalized_attributes, attribute)
+ else
+ key, value = attribute:match(key_value_regex)
+ if key:lower() == "id" then
+ table.insert(normalized_attributes, "#" .. value)
+ elseif key:lower() == "class" then
+ local classes = {}
+ for class in value:gmatch("%S+") do
+ table.insert(classes, class)
+ end
+ table.sort(classes)
+ for _, class in ipairs(classes) do
+ table.insert(normalized_attributes, "." .. class)
+ end
+ else
+ table.insert(normalized_attributes, attribute)
+ end
+ end
+ end
+
+ -- if no explicit identifiers exist, add auto identifiers
+ if not has_explicit_identifiers and auto_identifiers ~= nil then
+ local seen_auto_identifiers = {}
+ for _, auto_identifier in ipairs(auto_identifiers) do
+ if seen_auto_identifiers[auto_identifier] == nil then
+ seen_auto_identifiers[auto_identifier] = true
+ if seen_identifiers[auto_identifier] == nil then
+ seen_identifiers[auto_identifier] = true
+ table.insert(normalized_attributes,
+ "#" .. auto_identifier)
+ else
+ local auto_identifier_number = 1
+ while true do
+ local numbered_auto_identifier = auto_identifier .. "-"
+ .. auto_identifier_number
+ if seen_identifiers[numbered_auto_identifier] == nil then
+ seen_identifiers[numbered_auto_identifier] = true
+ table.insert(normalized_attributes,
+ "#" .. numbered_auto_identifier)
+ break
+ end
+ auto_identifier_number = auto_identifier_number + 1
+ end
+ end
+ end
+ end
+ end
+
+ -- sort and deduplicate normalized attributes
+ table.sort(normalized_attributes)
+ local seen_normalized_attributes = {}
+ local deduplicated_normalized_attributes = {}
+ for _, attribute in ipairs(normalized_attributes) do
+ if seen_normalized_attributes[attribute] == nil then
+ seen_normalized_attributes[attribute] = true
+ table.insert(deduplicated_normalized_attributes, attribute)
+ end
+ end
+
+ return deduplicated_normalized_attributes
+ end
+
+ function self.attributes(attributes, should_normalize_attributes)
+ local normalized_attributes
+ if should_normalize_attributes == false then
+ normalized_attributes = attributes
+ else
+ normalized_attributes = normalize_attributes(attributes)
+ end
+
+ local buf = {}
+ local key, value
+ for _, attribute in ipairs(normalized_attributes) do
+ if attribute:sub(1, 1) == "#" then
+ table.insert(buf, {"\\markdownRendererAttributeIdentifier{",
+ attribute:sub(2), "}"})
+ elseif attribute:sub(1, 1) == "." then
+ table.insert(buf, {"\\markdownRendererAttributeClassName{",
+ attribute:sub(2), "}"})
+ else
+ key, value = attribute:match(key_value_regex)
+ table.insert(buf, {"\\markdownRendererAttributeKeyValue{",
+ key, "}{", value, "}"})
+ end
+ end
+
+ return buf
+ end
+ self.active_attributes = {}
+ self.attribute_type_levels = {}
+ setmetatable(self.attribute_type_levels,
+ { __index = function() return 0 end })
+ local function apply_attributes()
+ local buf = {}
+ for i = 1, #self.active_attributes do
+ local start_output = self.active_attributes[i][3]
+ if start_output ~= nil then
+ table.insert(buf, start_output)
+ end
+ end
+ return buf
+ end
+
+ local function tear_down_attributes()
+ local buf = {}
+ for i = #self.active_attributes, 1, -1 do
+ local end_output = self.active_attributes[i][4]
+ if end_output ~= nil then
+ table.insert(buf, end_output)
+ end
+ end
+ return buf
+ end
+ function self.push_attributes(attribute_type, attributes,
+ start_output, end_output)
+ local attribute_type_level
+ = self.attribute_type_levels[attribute_type]
+ self.attribute_type_levels[attribute_type]
+ = attribute_type_level + 1
+
+ -- index attributes in a hash table for easy lookup
+ attributes = attributes or {}
+ for i = 1, #attributes do
+ attributes[attributes[i]] = true
+ end
+
+ local buf = {}
+ -- handle slicing
+ if attributes["#" .. self.slice_end_identifier] ~= nil and
+ self.slice_end_type == "^" then
+ if self.is_writing then
+ table.insert(buf, self.undosep())
+ table.insert(buf, tear_down_attributes())
+ end
+ self.is_writing = false
+ end
+ if attributes["#" .. self.slice_begin_identifier] ~= nil and
+ self.slice_begin_type == "^" then
+ table.insert(buf, apply_attributes())
+ self.is_writing = true
+ end
+ if self.is_writing and start_output ~= nil then
+ table.insert(buf, start_output)
+ end
+ table.insert(self.active_attributes,
+ {attribute_type, attributes,
+ start_output, end_output})
+ return buf
+ end
+
+ function self.pop_attributes(attribute_type)
+ local buf = {}
+ -- pop attributes until we find attributes of correct type
+ -- or until no attributes remain
+ local current_attribute_type = false
+ while current_attribute_type ~= attribute_type and
+ #self.active_attributes > 0 do
+ local attributes, _, end_output
+ current_attribute_type, attributes, _, end_output = table.unpack(
+ self.active_attributes[#self.active_attributes])
+ local attribute_type_level
+ = self.attribute_type_levels[current_attribute_type]
+ self.attribute_type_levels[current_attribute_type]
+ = attribute_type_level - 1
+ if self.is_writing and end_output ~= nil then
+ table.insert(buf, end_output)
+ end
+ table.remove(self.active_attributes, #self.active_attributes)
+ -- handle slicing
+ if attributes["#" .. self.slice_end_identifier] ~= nil
+ and self.slice_end_type == "$" then
+ if self.is_writing then
+ table.insert(buf, self.undosep())
+ table.insert(buf, tear_down_attributes())
+ end
+ self.is_writing = false
+ end
+ if attributes["#" .. self.slice_begin_identifier] ~= nil and
+ self.slice_begin_type == "$" then
+ self.is_writing = true
+ table.insert(buf, apply_attributes())
+ end
+ end
+ return buf
+ end
+ local function create_auto_identifier(s)
+ local buffer = {}
+ local prev_space = false
+ local letter_found = false
+ local normalized_s = s
+ if not options.unicodeNormalization
+ or options.unicodeNormalizationForm ~= "nfc" then
+ normalized_s = uni_algos.normalize.NFC(normalized_s)
+ end
+
+ for _, code in utf8.codes(normalized_s) do
+ local char = utf8.char(code)
+
+ -- Remove everything up to the first letter.
+ if not letter_found then
+ local is_letter = unicode.utf8.match(char, "%a")
+ if is_letter then
+ letter_found = true
+ else
+ goto continue
+ end
+ end
+
+ -- Remove all non-alphanumeric characters, except underscores,
+ -- hyphens, and periods.
+ if not unicode.utf8.match(char, "[%w_%-%.%s]") then
+ goto continue
+ end
+
+ -- Replace all spaces and newlines with hyphens.
+ if unicode.utf8.match(char, "[%s\n]") then
+ char = "-"
+ if prev_space then
+ goto continue
+ else
+ prev_space = true
+ end
+ else
+ -- Convert all alphabetic characters to lowercase.
+ char = unicode.utf8.lower(char)
+ prev_space = false
+ end
+
+ table.insert(buffer, char)
+
+ ::continue::
+ end
+
+ if prev_space then
+ table.remove(buffer)
+ end
+
+ local identifier = #buffer == 0 and "section"
+ or table.concat(buffer, "")
+ return identifier
+ end
+ local function create_gfm_auto_identifier(s)
+ local buffer = {}
+ local prev_space = false
+ local letter_found = false
+ local normalized_s = s
+ if not options.unicodeNormalization
+ or options.unicodeNormalizationForm ~= "nfc" then
+ normalized_s = uni_algos.normalize.NFC(normalized_s)
+ end
+
+ for _, code in utf8.codes(normalized_s) do
+ local char = utf8.char(code)
+
+ -- Remove everything up to the first non-space.
+ if not letter_found then
+ local is_letter = unicode.utf8.match(char, "%S")
+ if is_letter then
+ letter_found = true
+ else
+ goto continue
+ end
+ end
+
+ -- Remove all non-alphanumeric characters, except underscores
+ -- and hyphens.
+ if not unicode.utf8.match(char, "[%w_%-%s]") then
+ prev_space = false
+ goto continue
+ end
+
+ -- Replace all spaces and newlines with hyphens.
+ if unicode.utf8.match(char, "[%s\n]") then
+ char = "-"
+ if prev_space then
+ goto continue
+ else
+ prev_space = true
+ end
+ else
+ -- Convert all alphabetic characters to lowercase.
+ char = unicode.utf8.lower(char)
+ prev_space = false
+ end
+
+ table.insert(buffer, char)
+
+ ::continue::
+ end
+
+ if prev_space then
+ table.remove(buffer)
+ end
+
+ local identifier = #buffer == 0 and "section"
+ or table.concat(buffer, "")
+ return identifier
+ end
+ self.secbegin_text = "\\markdownRendererSectionBegin\n"
+ self.secend_text = "\n\\markdownRendererSectionEnd "
+ function self.heading(s, level, attributes)
+ local buf = {}
+ local flat_text, inlines = table.unpack(s)
+
+ -- push empty attributes for implied sections
+ while self.attribute_type_levels["heading"] < level - 1 do
+ table.insert(buf,
+ self.push_attributes("heading",
+ nil,
+ self.secbegin_text,
+ self.secend_text))
+ end
+
+ -- pop attributes for sections that have ended
+ while self.attribute_type_levels["heading"] >= level do
+ table.insert(buf, self.pop_attributes("heading"))
+ end
+
+ -- construct attributes for the new section
+ local auto_identifiers = {}
+ if self.options.autoIdentifiers then
+ table.insert(auto_identifiers, create_auto_identifier(flat_text))
+ end
+ if self.options.gfmAutoIdentifiers then
+ table.insert(auto_identifiers,
+ create_gfm_auto_identifier(flat_text))
+ end
+ local normalized_attributes = normalize_attributes(attributes,
+ auto_identifiers)
+
+ -- push attributes for the new section
+ local start_output = {}
+ local end_output = {}
+ table.insert(start_output, self.secbegin_text)
+ table.insert(end_output, self.secend_text)
+
+ table.insert(buf, self.push_attributes("heading",
+ normalized_attributes,
+ start_output,
+ end_output))
+ assert(self.attribute_type_levels["heading"] == level)
+
+ -- render the heading and its attributes
+ if self.is_writing and #normalized_attributes > 0 then
+ table.insert(buf,
+ "\\markdownRendererHeaderAttributeContextBegin\n")
+ table.insert(buf, self.attributes(normalized_attributes, false))
+ end
+
+ local cmd
+ level = level + options.shiftHeadings
+ if level <= 1 then
+ cmd = "\\markdownRendererHeadingOne"
+ elseif level == 2 then
+ cmd = "\\markdownRendererHeadingTwo"
+ elseif level == 3 then
+ cmd = "\\markdownRendererHeadingThree"
+ elseif level == 4 then
+ cmd = "\\markdownRendererHeadingFour"
+ elseif level == 5 then
+ cmd = "\\markdownRendererHeadingFive"
+ elseif level >= 6 then
+ cmd = "\\markdownRendererHeadingSix"
+ else
+ cmd = ""
+ end
+ if self.is_writing then
+ table.insert(buf, {cmd, "{", inlines, "}"})
+ end
+
+ if self.is_writing and #normalized_attributes > 0 then
+ table.insert(buf, "\\markdownRendererHeaderAttributeContextEnd{}")
+ end
+
+ return buf
+ end
+ function self.get_state()
+ return {
+ is_writing=self.is_writing,
+ flatten_inlines=self.flatten_inlines,
+ active_attributes={table.unpack(self.active_attributes)},
+ }
+ end
+ function self.set_state(s)
+ local previous_state = self.get_state()
+ for key, value in pairs(s) do
+ self[key] = value
+ end
+ return previous_state
+ end
+ function self.defer_call(f)
+ local previous_state = self.get_state()
+ return function(...)
+ local state = self.set_state(previous_state)
+ local return_value = f(...)
+ self.set_state(state)
+ return return_value
+ end
+ end
+
+ return self
+end
+local parsers = {}
+parsers.percent = P("%")
+parsers.at = P("@")
+parsers.comma = P(",")
+parsers.asterisk = P("*")
+parsers.dash = P("-")
+parsers.plus = P("+")
+parsers.underscore = P("_")
+parsers.period = P(".")
+parsers.hash = P("#")
+parsers.dollar = P("$")
+parsers.ampersand = P("&")
+parsers.backtick = P("`")
+parsers.less = P("<")
+parsers.more = P(">")
+parsers.space = P(" ")
+parsers.squote = P("'")
+parsers.dquote = P('"')
+parsers.lparent = P("(")
+parsers.rparent = P(")")
+parsers.lbracket = P("[")
+parsers.rbracket = P("]")
+parsers.lbrace = P("{")
+parsers.rbrace = P("}")
+parsers.circumflex = P("^")
+parsers.slash = P("/")
+parsers.equal = P("=")
+parsers.colon = P(":")
+parsers.semicolon = P(";")
+parsers.exclamation = P("!")
+parsers.pipe = P("|")
+parsers.tilde = P("~")
+parsers.backslash = P("\\")
+parsers.tab = P("\t")
+parsers.newline = P("\n")
+
+parsers.digit = R("09")
+parsers.hexdigit = R("09","af","AF")
+parsers.letter = R("AZ","az")
+parsers.alphanumeric = R("AZ","az","09")
+parsers.keyword = parsers.letter
+ * (parsers.alphanumeric + parsers.dash)^0
+
+parsers.doubleasterisks = P("**")
+parsers.doubleunderscores = P("__")
+parsers.doubletildes = P("~~")
+parsers.fourspaces = P(" ")
+
+parsers.any = P(1)
+parsers.succeed = P(true)
+parsers.fail = P(false)
+
+parsers.internal_punctuation = S(":;,.?")
+parsers.ascii_punctuation = S("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~")
+
+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 / ""
+ * parsers.escapable
+ + parsers.any
+
+parsers.spacechar = S("\t ")
+parsers.spacing = S(" \n\r\t")
+parsers.nonspacechar = parsers.any - parsers.spacing
+parsers.optionalspace = parsers.spacechar^0
+
+parsers.normalchar = parsers.any - (V("SpecialChar")
+ + parsers.spacing)
+parsers.eof = -parsers.any
+parsers.nonindentspace = parsers.space^-3 * - parsers.spacechar
+parsers.indent = parsers.space^-3 * parsers.tab
+ + parsers.fourspaces / ""
+parsers.linechar = P(1 - parsers.newline)
+
+parsers.blankline = parsers.optionalspace
+ * parsers.newline / "\n"
+parsers.blanklines = parsers.blankline^0
+parsers.skipblanklines = ( parsers.optionalspace
+ * parsers.newline)^0
+parsers.indentedline = parsers.indent /""
+ * C( parsers.linechar^1
+ * parsers.newline^-1)
+parsers.optionallyindentedline = parsers.indent^-1 /""
+ * C( parsers.linechar^1
+ * parsers.newline^-1)
+parsers.sp = parsers.spacing^0
+parsers.spnl = parsers.optionalspace
+ * ( parsers.newline
+ * parsers.optionalspace)^-1
+parsers.line = parsers.linechar^0 * parsers.newline
+parsers.nonemptyline = parsers.line - parsers.blankline
+
+parsers.leader = parsers.space^-3
+
+local function has_trail(indent_table)
+ return indent_table ~= nil and
+ indent_table.trail ~= nil and
+ next(indent_table.trail) ~= nil
+end
+
+local function has_indents(indent_table)
+ return indent_table ~= nil and
+ indent_table.indents ~= nil and
+ next(indent_table.indents) ~= nil
+end
+
+local function add_trail(indent_table, trail_info)
+ indent_table.trail = trail_info
+ return indent_table
+end
+
+local function remove_trail(indent_table)
+ indent_table.trail = nil
+ return indent_table
+end
+
+local function update_indent_table(indent_table, new_indent, add)
+ indent_table = remove_trail(indent_table)
+
+ if not has_indents(indent_table) then
+ indent_table.indents = {}
+ end
+
+ if add then
+ indent_table.indents[#indent_table.indents + 1] = new_indent
+ else
+ if indent_table.indents[#indent_table.indents].name
+ == new_indent.name then
+ indent_table.indents[#indent_table.indents] = nil
+ end
+ end
+
+ return indent_table
+end
+
+local function remove_indent(name)
+ local remove_indent_level =
+ function(s, i, indent_table) -- luacheck: ignore s i
+ indent_table = update_indent_table(indent_table, {name=name},
+ false)
+ return true, indent_table
+ end
+
+ return Cg(Cmt(Cb("indent_info"), remove_indent_level), "indent_info")
+end
+
+local function process_starter_spacing(indent, spacing,
+ minimum, left_strip_length)
+ left_strip_length = left_strip_length or 0
+
+ local count = 0
+ local tab_value = 4 - (indent) % 4
+
+ local code_started, minimum_found = false, false
+ local code_start, minimum_remainder = "", ""
+
+ local left_total_stripped = 0
+ local full_remainder = ""
+
+ if spacing ~= nil then
+ for i = 1, #spacing do
+ local character = spacing:sub(i, i)
+
+ if character == "\t" then
+ count = count + tab_value
+ tab_value = 4
+ elseif character == " " then
+ count = count + 1
+ tab_value = 4 - (1 - tab_value) % 4
+ end
+
+ if (left_strip_length ~= 0) then
+ local possible_to_strip = math.min(count, left_strip_length)
+ count = count - possible_to_strip
+ left_strip_length = left_strip_length - possible_to_strip
+ left_total_stripped = left_total_stripped + possible_to_strip
+ else
+ full_remainder = full_remainder .. character
+ end
+
+ if (minimum_found) then
+ minimum_remainder = minimum_remainder .. character
+ elseif (count >= minimum) then
+ minimum_found = true
+ minimum_remainder = minimum_remainder
+ .. string.rep(" ", count - minimum)
+ end
+
+ if (code_started) then
+ code_start = code_start .. character
+ elseif (count >= minimum + 4) then
+ code_started = true
+ code_start = code_start
+ .. string.rep(" ", count - (minimum + 4))
+ end
+ end
+ end
+
+ local remainder
+ if (code_started) then
+ remainder = code_start
+ else
+ remainder = string.rep(" ", count - minimum)
+ end
+
+ local is_minimum = count >= minimum
+ return {
+ is_code = code_started,
+ remainder = remainder,
+ left_total_stripped = left_total_stripped,
+ is_minimum = is_minimum,
+ minimum_remainder = minimum_remainder,
+ total_length = count,
+ full_remainder = full_remainder
+ }
+end
+
+local function count_indent_tab_level(indent_table)
+ local count = 0
+ if not has_indents(indent_table) then
+ return count
+ end
+
+ for i=1, #indent_table.indents do
+ count = count + indent_table.indents[i].length
+ end
+ return count
+end
+
+local function total_delimiter_length(delimiter)
+ local count = 0
+ if type(delimiter) == "string" then return #delimiter end
+ for _, value in pairs(delimiter) do
+ count = count + total_delimiter_length(value)
+ end
+ return count
+end
+
+local function process_starter_indent(_, _, indent_table, starter,
+ is_blank, indent_type, breakable)
+ local last_trail = starter[1]
+ local delimiter = starter[2]
+ local raw_new_trail = starter[3]
+
+ if indent_type == "bq" and not breakable then
+ indent_table.ignore_blockquote_blank = true
+ end
+
+ if has_trail(indent_table) then
+ local trail = indent_table.trail
+ if trail.is_code then
+ return false
+ end
+ last_trail = trail.remainder
+ else
+ local sp = process_starter_spacing(0, last_trail, 0, 0)
+
+ if sp.is_code then
+ return false
+ end
+ last_trail = sp.remainder
+ end
+
+ local preceding_indentation = count_indent_tab_level(indent_table) % 4
+ local last_trail_length = #last_trail
+ local delimiter_length = total_delimiter_length(delimiter)
+
+ local total_indent_level = preceding_indentation + last_trail_length
+ + delimiter_length
+
+ local sp = {}
+ if not is_blank then
+ sp = process_starter_spacing(total_indent_level, raw_new_trail,
+ 0, 1)
+ end
+
+ local del_trail_length = sp.left_total_stripped
+ if is_blank then
+ del_trail_length = 1
+ elseif not sp.is_code then
+ del_trail_length = del_trail_length + #sp.remainder
+ end
+
+ local indent_length = last_trail_length + delimiter_length
+ + del_trail_length
+ local new_indent_info = {name=indent_type, length=indent_length}
+
+ indent_table = update_indent_table(indent_table, new_indent_info,
+ true)
+ indent_table = add_trail(indent_table,
+ {is_code=sp.is_code,
+ remainder=sp.remainder,
+ total_length=sp.total_length,
+ full_remainder=sp.full_remainder})
+
+ return true, indent_table
+end
+
+local function decode_pattern(name)
+ local delimeter = parsers.succeed
+ if name == "bq" then
+ delimeter = parsers.more
+ end
+
+ return C(parsers.optionalspace) * C(delimeter)
+ * C(parsers.optionalspace) * Cp()
+end
+
+local function left_blank_starter(indent_table)
+ local blank_starter_index
+
+ if not has_indents(indent_table) then
+ return
+ end
+
+ for i = #indent_table.indents,1,-1 do
+ local value = indent_table.indents[i]
+ if value.name == "li" then
+ blank_starter_index = i
+ else
+ break
+ end
+ end
+
+ return blank_starter_index
+end
+
+local function traverse_indent(s, i, indent_table, is_optional,
+ is_blank, current_line_indents)
+ local new_index = i
+
+ local preceding_indentation = 0
+ local current_trail = {}
+
+ local blank_starter = left_blank_starter(indent_table)
+
+ if current_line_indents == nil then
+ current_line_indents = {}
+ end
+
+ for index = 1,#indent_table.indents do
+ local value = indent_table.indents[index]
+ local pattern = decode_pattern(value.name)
+
+ -- match decoded pattern
+ local new_indent_info = lpeg.match(Ct(pattern), s, new_index)
+ if new_indent_info == nil then
+ local blankline_end = lpeg.match(
+ Ct(parsers.blankline * Cg(Cp(), "pos")), s, new_index)
+ if is_optional or not indent_table.ignore_blockquote_blank
+ or not blankline_end then
+ return is_optional, new_index, current_trail,
+ current_line_indents
+ end
+
+ return traverse_indent(s, tonumber(blankline_end.pos),
+ indent_table, is_optional, is_blank,
+ current_line_indents)
+ end
+
+ local raw_last_trail = new_indent_info[1]
+ local delimiter = new_indent_info[2]
+ local raw_new_trail = new_indent_info[3]
+ local next_index = new_indent_info[4]
+
+ local space_only = delimiter == ""
+
+ -- check previous trail
+ if not space_only and next(current_trail) == nil then
+ local sp = process_starter_spacing(0, raw_last_trail, 0, 0)
+ current_trail = {is_code=sp.is_code, remainder=sp.remainder,
+ total_length=sp.total_length,
+ full_remainder=sp.full_remainder}
+ end
+
+ if next(current_trail) ~= nil then
+ if not space_only and current_trail.is_code then
+ return is_optional, new_index, current_trail,
+ current_line_indents
+ end
+ if current_trail.internal_remainder ~= nil then
+ raw_last_trail = current_trail.internal_remainder
+ end
+ end
+
+ local raw_last_trail_length = 0
+ local delimiter_length = 0
+
+ if not space_only then
+ delimiter_length = #delimiter
+ raw_last_trail_length = #raw_last_trail
+ end
+
+ local total_indent_level = preceding_indentation
+ + raw_last_trail_length + delimiter_length
+
+ local spacing_to_process
+ local minimum = 0
+ local left_strip_length = 0
+
+ if not space_only then
+ spacing_to_process = raw_new_trail
+ left_strip_length = 1
+ else
+ spacing_to_process = raw_last_trail
+ minimum = value.length
+ end
+
+ local sp = process_starter_spacing(total_indent_level,
+ spacing_to_process, minimum,
+ left_strip_length)
+
+ if space_only and not sp.is_minimum then
+ return is_optional or (is_blank and blank_starter <= index),
+ new_index, current_trail, current_line_indents
+ end
+
+ local indent_length = raw_last_trail_length + delimiter_length
+ + sp.left_total_stripped
+
+ -- update info for the next pattern
+ if not space_only then
+ preceding_indentation = preceding_indentation + indent_length
+ else
+ preceding_indentation = preceding_indentation + value.length
+ end
+
+ current_trail = {is_code=sp.is_code, remainder=sp.remainder,
+ internal_remainder=sp.minimum_remainder,
+ total_length=sp.total_length,
+ full_remainder=sp.full_remainder}
+
+ current_line_indents[#current_line_indents + 1] = new_indent_info
+ new_index = next_index
+ end
+
+ return true, new_index, current_trail, current_line_indents
+end
+
+local function check_trail(expect_code, is_code)
+ return (expect_code and is_code) or (not expect_code and not is_code)
+end
+
+local check_trail_joined =
+ function(s, i, indent_table, -- luacheck: ignore s i
+ spacing, expect_code, omit_remainder)
+ local is_code
+ local remainder
+
+ if has_trail(indent_table) then
+ local trail = indent_table.trail
+ is_code = trail.is_code
+ if is_code then
+ remainder = trail.remainder
+ else
+ remainder = trail.full_remainder
+ end
+ else
+ local sp = process_starter_spacing(0, spacing, 0, 0)
+ is_code = sp.is_code
+ if is_code then
+ remainder = sp.remainder
+ else
+ remainder = sp.full_remainder
+ end
+ end
+
+ local result = check_trail(expect_code, is_code)
+ if omit_remainder then
+ return result
+ end
+ return result, remainder
+ end
+
+local check_trail_length =
+ function(s, i, indent_table, -- luacheck: ignore s i
+ spacing, min, max)
+ local trail
+
+ if has_trail(indent_table) then
+ trail = indent_table.trail
+ else
+ trail = process_starter_spacing(0, spacing, 0, 0)
+ end
+
+ local total_length = trail.total_length
+ if total_length == nil then
+ return false
+ end
+
+ return min <= total_length and total_length <= max
+ end
+
+local function check_continuation_indentation(s, i, indent_table,
+ is_optional, is_blank)
+ if not has_indents(indent_table) then
+ return true
+ end
+
+ local passes, new_index, current_trail, current_line_indents =
+ traverse_indent(s, i, indent_table, is_optional, is_blank)
+
+ if passes then
+ indent_table.current_line_indents = current_line_indents
+ indent_table = add_trail(indent_table, current_trail)
+ return new_index, indent_table
+ end
+ return false
+end
+
+local function get_last_indent_name(indent_table)
+ if has_indents(indent_table) then
+ return indent_table.indents[#indent_table.indents].name
+ end
+end
+
+local function remove_remainder_if_blank(indent_table, remainder)
+ if get_last_indent_name(indent_table) == "li" then
+ return ""
+ end
+ return remainder
+end
+
+local check_trail_type =
+ function(s, i, -- luacheck: ignore s i
+ trail, spacing, trail_type)
+ if trail == nil then
+ trail = process_starter_spacing(0, spacing, 0, 0)
+ end
+
+ if trail_type == "non-code" then
+ return check_trail(false, trail.is_code)
+ end
+ if trail_type == "code" then
+ return check_trail(true, trail.is_code)
+ end
+ if trail_type == "full-code" then
+ if (trail.is_code) then
+ return i, trail.remainder
+ end
+ return i, ""
+ end
+ if trail_type == "full-any" then
+ return i, trail.internal_remainder
+ end
+ end
+
+local trail_freezing =
+ function(s, i, -- luacheck: ignore s i
+ indent_table, is_freezing)
+ if is_freezing then
+ if indent_table.is_trail_frozen then
+ indent_table.trail = indent_table.frozen_trail
+ else
+ indent_table.frozen_trail = indent_table.trail
+ indent_table.is_trail_frozen = true
+ end
+ else
+ indent_table.frozen_trail = nil
+ indent_table.is_trail_frozen = false
+ end
+ return true, indent_table
+ end
+
+local check_continuation_indentation_and_trail =
+ function (s, i, indent_table, is_optional, is_blank, trail_type,
+ reset_rem, omit_remainder)
+ if not has_indents(indent_table) then
+ local spacing, new_index = lpeg.match( C(parsers.spacechar^0)
+ * Cp(), s, i)
+ local result, remainder = check_trail_type(s, i,
+ indent_table.trail, spacing, trail_type)
+ if remainder == nil then
+ if result then
+ return new_index
+ end
+ return false
+ end
+ if result then
+ return new_index, remainder
+ end
+ return false
+ end
+
+ local passes, new_index, current_trail = traverse_indent(s, i,
+ indent_table, is_optional, is_blank)
+
+ if passes then
+ local spacing
+ if current_trail == nil then
+ local newer_spacing, newer_index = lpeg.match(
+ C(parsers.spacechar^0) * Cp(), s, i)
+ current_trail = process_starter_spacing(0, newer_spacing, 0, 0)
+ new_index = newer_index
+ spacing = newer_spacing
+ else
+ spacing = current_trail.remainder
+ end
+ local result, remainder = check_trail_type(s, new_index,
+ current_trail, spacing, trail_type)
+ if remainder == nil or omit_remainder then
+ if result then
+ return new_index
+ end
+ return false
+ end
+
+ if is_blank and reset_rem then
+ remainder = remove_remainder_if_blank(indent_table, remainder)
+ end
+ if result then
+ return new_index, remainder
+ end
+ return false
+ end
+ return false
+ end
+
+parsers.check_trail = Cmt( Cb("indent_info") * C(parsers.spacechar^0)
+ * Cc(false), check_trail_joined)
+
+parsers.check_trail_no_rem = Cmt( Cb("indent_info")
+ * C(parsers.spacechar^0) * Cc(false)
+ * Cc(true), check_trail_joined)
+
+parsers.check_code_trail = Cmt( Cb("indent_info")
+ * C(parsers.spacechar^0)
+ * Cc(true), check_trail_joined)
+
+parsers.check_trail_length_range = function(min, max)
+ return Cmt( Cb("indent_info") * C(parsers.spacechar^0) * Cc(min)
+ * Cc(max), check_trail_length)
+end
+
+parsers.check_trail_length = function(n)
+ return parsers.check_trail_length_range(n, n)
+end
+
+parsers.freeze_trail = Cg( Cmt(Cb("indent_info")
+ * Cc(true), trail_freezing), "indent_info")
+
+parsers.unfreeze_trail = Cg(Cmt(Cb("indent_info") * Cc(false),
+ trail_freezing), "indent_info")
+
+parsers.check_minimal_indent = Cmt(Cb("indent_info") * Cc(false),
+ check_continuation_indentation)
+
+parsers.check_optional_indent = Cmt(Cb("indent_info") * Cc(true),
+ check_continuation_indentation)
+
+parsers.check_minimal_blank_indent
+ = Cmt( Cb("indent_info") * Cc(false)
+ * Cc(true)
+ , check_continuation_indentation)
+
+
+parsers.check_minimal_indent_and_trail =
+ Cmt( Cb("indent_info")
+ * Cc(false) * Cc(false) * Cc("non-code") * Cc(true)
+ , check_continuation_indentation_and_trail)
+
+parsers.check_minimal_indent_and_code_trail =
+ Cmt( Cb("indent_info")
+ * Cc(false) * Cc(false) * Cc("code") * Cc(false)
+ , check_continuation_indentation_and_trail)
+
+parsers.check_minimal_blank_indent_and_full_code_trail =
+ Cmt( Cb("indent_info")
+ * Cc(false) * Cc(true) * Cc("full-code") * Cc(true)
+ , check_continuation_indentation_and_trail)
+
+parsers.check_minimal_indent_and_any_trail =
+ Cmt( Cb("indent_info")
+ * Cc(false) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false)
+ , check_continuation_indentation_and_trail)
+
+parsers.check_minimal_blank_indent_and_any_trail =
+ Cmt( Cb("indent_info")
+ * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false)
+ , check_continuation_indentation_and_trail)
+
+parsers.check_minimal_blank_indent_and_any_trail_no_rem =
+ Cmt( Cb("indent_info")
+ * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(true)
+ , check_continuation_indentation_and_trail)
+
+parsers.check_optional_indent_and_any_trail =
+ Cmt( Cb("indent_info")
+ * Cc(true) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false)
+ , check_continuation_indentation_and_trail)
+
+parsers.check_optional_blank_indent_and_any_trail =
+ Cmt( Cb("indent_info")
+ * Cc(true) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false)
+ , check_continuation_indentation_and_trail)
+
+
+parsers.spnlc_noexc = parsers.optionalspace
+ * ( parsers.newline
+ * parsers.check_minimal_indent_and_any_trail)^-1
+
+parsers.spnlc = parsers.optionalspace
+ * (V("EndlineNoSub"))^-1
+
+parsers.spnlc_sep = parsers.optionalspace * V("EndlineNoSub")
+ + parsers.spacechar^1
+
+parsers.only_blank = parsers.spacechar^0
+ * (parsers.newline + parsers.eof)
+
+parsers.commented_line_letter = parsers.linechar
+ + parsers.newline
+ - parsers.backslash
+ - parsers.percent
+parsers.commented_line = Cg(Cc(""), "backslashes")
+ * ((#(parsers.commented_line_letter
+ - parsers.newline)
+ * Cb("backslashes")
+ * Cs(parsers.commented_line_letter
+ - parsers.newline)^1 -- initial
+ * Cg(Cc(""), "backslashes"))
+ + #( parsers.backslash
+ * (parsers.backslash + parsers.newline))
+ * Cg((parsers.backslash -- even backslash
+ * ( parsers.backslash
+ + #parsers.newline))^1, "backslashes")
+ + (parsers.backslash
+ * (#parsers.percent
+ * Cb("backslashes")
+ / function(backslashes)
+ return string.rep("\\", #backslashes / 2)
+ end
+ * C(parsers.percent)
+ + #parsers.commented_line_letter
+ * Cb("backslashes")
+ * Cc("\\")
+ * C(parsers.commented_line_letter))
+ * Cg(Cc(""), "backslashes")))^0
+ * (#parsers.percent
+ * Cb("backslashes")
+ / function(backslashes)
+ return string.rep("\\", #backslashes / 2)
+ end
+ * ((parsers.percent -- comment
+ * parsers.line
+ * #parsers.blankline) -- blank line
+ / "\n"
+ + parsers.percent -- comment
+ * parsers.line
+ * parsers.optionalspace) -- leading spaces
+ + #(parsers.newline)
+ * Cb("backslashes")
+ * C(parsers.newline))
+
+parsers.chunk = parsers.line * (parsers.optionallyindentedline
+ - parsers.blankline)^0
+
+parsers.attribute_key_char = parsers.alphanumeric + S("-_:.")
+parsers.attribute_raw_char = parsers.alphanumeric + S("-_")
+parsers.attribute_key = (parsers.attribute_key_char
+ - parsers.dash - parsers.digit)
+ * parsers.attribute_key_char^0
+parsers.attribute_value = ( (parsers.dquote / "")
+ * (parsers.anyescaped - parsers.dquote)^0
+ * (parsers.dquote / ""))
+ + ( (parsers.squote / "")
+ * (parsers.anyescaped - parsers.squote)^0
+ * (parsers.squote / ""))
+ + ( parsers.anyescaped
+ - parsers.dquote
+ - parsers.rbrace
+ - parsers.space)^0
+parsers.attribute_identifier = parsers.attribute_key_char^1
+parsers.attribute_classname = parsers.letter
+ * parsers.attribute_key_char^0
+parsers.attribute_raw = parsers.attribute_raw_char^1
+
+parsers.attribute = (parsers.dash * Cc(".unnumbered"))
+ + C( parsers.hash
+ * parsers.attribute_identifier)
+ + C( parsers.period
+ * parsers.attribute_classname)
+ + Cs( parsers.attribute_key
+ * parsers.optionalspace
+ * parsers.equal
+ * parsers.optionalspace
+ * parsers.attribute_value)
+parsers.attributes = parsers.lbrace
+ * parsers.optionalspace
+ * parsers.attribute
+ * (parsers.spacechar^1
+ * parsers.attribute)^0
+ * parsers.optionalspace
+ * parsers.rbrace
+
+parsers.raw_attribute = parsers.lbrace
+ * parsers.optionalspace
+ * parsers.equal
+ * C(parsers.attribute_raw)
+ * parsers.optionalspace
+ * parsers.rbrace
+
+-- block followed by 0 or more optionally
+-- indented blocks with first line indented.
+parsers.indented_blocks = function(bl)
+ return Cs( bl
+ * ( parsers.blankline^1
+ * parsers.indent
+ * -parsers.blankline
+ * bl)^0
+ * (parsers.blankline^1 + parsers.eof) )
+end
+local function repeat_between(pattern, min, max)
+ return -pattern^(max + 1) * pattern^min
+end
+
+parsers.hexentity = parsers.ampersand * parsers.hash * C(S("Xx"))
+ * C(repeat_between(parsers.hexdigit, 1, 6))
+ * parsers.semicolon
+parsers.decentity = parsers.ampersand * parsers.hash
+ * C(repeat_between(parsers.digit, 1, 7))
+ * parsers.semicolon
+parsers.tagentity = parsers.ampersand * C(parsers.alphanumeric^1)
+ * parsers.semicolon
+
+parsers.html_entities
+ = parsers.hexentity / entities.hex_entity_with_x_char
+ + parsers.decentity / entities.dec_entity
+ + parsers.tagentity / entities.char_entity
+parsers.bullet = function(bullet_char, interrupting)
+ local allowed_end
+ if interrupting then
+ allowed_end = C(parsers.spacechar^1) * #parsers.linechar
+ else
+ allowed_end = C(parsers.spacechar^1)
+ + #(parsers.newline + parsers.eof)
+ end
+ return parsers.check_trail
+ * Ct(C(bullet_char) * Cc(""))
+ * allowed_end
+end
+
+local function tickbox(interior)
+ return parsers.optionalspace * parsers.lbracket
+ * interior * parsers.rbracket * parsers.spacechar^1
+end
+
+parsers.ticked_box = tickbox(S("xX")) * Cc(1.0)
+parsers.halfticked_box = tickbox(S("./")) * Cc(0.5)
+parsers.unticked_box = tickbox(parsers.spacechar^1) * Cc(0.0)
+
+parsers.openticks = Cg(parsers.backtick^1, "ticks")
+
+local function captures_equal_length(_,i,a,b)
+ return #a == #b and i
+end
+
+parsers.closeticks = Cmt(C(parsers.backtick^1)
+ * Cb("ticks"), captures_equal_length)
+
+parsers.intickschar = (parsers.any - S("\n\r`"))
+ + V("NoSoftLineBreakEndline")
+ + (parsers.backtick^1 - parsers.closeticks)
+
+local function process_inticks(s)
+ s = s:gsub("\n", " ")
+ s = s:gsub("^ (.*) $", "%1")
+ return s
+end
+
+parsers.inticks = parsers.openticks
+ * C(parsers.space^0)
+ * parsers.closeticks
+ + parsers.openticks
+ * Cs(Cs(parsers.intickschar^0) / process_inticks)
+ * parsers.closeticks
+
+-- case-insensitive match (we assume s is lowercase)
+-- must be single byte encoding
+parsers.keyword_exact = function(s)
+ local parser = P(0)
+ for i=1,#s do
+ local c = s:sub(i,i)
+ local m = c .. upper(c)
+ parser = parser * S(m)
+ end
+ return parser
+end
+
+parsers.special_block_keyword =
+ parsers.keyword_exact("pre") +
+ parsers.keyword_exact("script") +
+ parsers.keyword_exact("style") +
+ parsers.keyword_exact("textarea")
+
+parsers.block_keyword =
+ parsers.keyword_exact("address") +
+ parsers.keyword_exact("article") +
+ parsers.keyword_exact("aside") +
+ parsers.keyword_exact("base") +
+ parsers.keyword_exact("basefont") +
+ parsers.keyword_exact("blockquote") +
+ parsers.keyword_exact("body") +
+ parsers.keyword_exact("caption") +
+ parsers.keyword_exact("center") +
+ parsers.keyword_exact("col") +
+ parsers.keyword_exact("colgroup") +
+ parsers.keyword_exact("dd") +
+ parsers.keyword_exact("details") +
+ parsers.keyword_exact("dialog") +
+ parsers.keyword_exact("dir") +
+ parsers.keyword_exact("div") +
+ parsers.keyword_exact("dl") +
+ parsers.keyword_exact("dt") +
+ parsers.keyword_exact("fieldset") +
+ parsers.keyword_exact("figcaption") +
+ parsers.keyword_exact("figure") +
+ parsers.keyword_exact("footer") +
+ parsers.keyword_exact("form") +
+ parsers.keyword_exact("frame") +
+ parsers.keyword_exact("frameset") +
+ parsers.keyword_exact("h1") +
+ parsers.keyword_exact("h2") +
+ parsers.keyword_exact("h3") +
+ parsers.keyword_exact("h4") +
+ parsers.keyword_exact("h5") +
+ parsers.keyword_exact("h6") +
+ parsers.keyword_exact("head") +
+ parsers.keyword_exact("header") +
+ parsers.keyword_exact("hr") +
+ parsers.keyword_exact("html") +
+ parsers.keyword_exact("iframe") +
+ parsers.keyword_exact("legend") +
+ parsers.keyword_exact("li") +
+ parsers.keyword_exact("link") +
+ parsers.keyword_exact("main") +
+ parsers.keyword_exact("menu") +
+ parsers.keyword_exact("menuitem") +
+ parsers.keyword_exact("nav") +
+ parsers.keyword_exact("noframes") +
+ parsers.keyword_exact("ol") +
+ parsers.keyword_exact("optgroup") +
+ parsers.keyword_exact("option") +
+ parsers.keyword_exact("p") +
+ parsers.keyword_exact("param") +
+ parsers.keyword_exact("section") +
+ parsers.keyword_exact("source") +
+ parsers.keyword_exact("summary") +
+ parsers.keyword_exact("table") +
+ parsers.keyword_exact("tbody") +
+ parsers.keyword_exact("td") +
+ parsers.keyword_exact("tfoot") +
+ parsers.keyword_exact("th") +
+ parsers.keyword_exact("thead") +
+ parsers.keyword_exact("title") +
+ parsers.keyword_exact("tr") +
+ parsers.keyword_exact("track") +
+ parsers.keyword_exact("ul")
+
+-- end conditions
+parsers.html_blankline_end_condition
+ = parsers.linechar^0
+ * ( parsers.newline
+ * (parsers.check_minimal_blank_indent_and_any_trail
+ * #parsers.blankline
+ + parsers.check_minimal_indent_and_any_trail)
+ * parsers.linechar^1)^0
+ * (parsers.newline^-1 / "")
+
+local function remove_trailing_blank_lines(s)
+ return s:gsub("[\n\r]+%s*$", "")
+end
+
+parsers.html_until_end = function(end_marker)
+ return Cs(Cs((parsers.newline
+ * (parsers.check_minimal_blank_indent_and_any_trail
+ * #parsers.blankline
+ + parsers.check_minimal_indent_and_any_trail)
+ + parsers.linechar - end_marker)^0
+ * parsers.linechar^0 * parsers.newline^-1)
+ / remove_trailing_blank_lines)
+end
+
+-- attributes
+parsers.html_attribute_spacing = parsers.optionalspace
+ * V("NoSoftLineBreakEndline")
+ * parsers.optionalspace
+ + parsers.spacechar^1
+
+parsers.html_attribute_name = ( parsers.letter
+ + parsers.colon
+ + parsers.underscore)
+ * ( parsers.alphanumeric
+ + parsers.colon
+ + parsers.underscore
+ + parsers.period
+ + parsers.dash)^0
+
+parsers.html_attribute_value = parsers.squote
+ * (parsers.linechar - parsers.squote)^0
+ * parsers.squote
+ + parsers.dquote
+ * (parsers.linechar - parsers.dquote)^0
+ * parsers.dquote
+ + ( parsers.any
+ - parsers.spacechar
+ - parsers.newline
+ - parsers.dquote
+ - parsers.squote
+ - parsers.backtick
+ - parsers.equal
+ - parsers.less
+ - parsers.more)^1
+
+parsers.html_inline_attribute_value = parsers.squote
+ * (V("NoSoftLineBreakEndline")
+ + parsers.any
+ - parsers.blankline^2
+ - parsers.squote)^0
+ * parsers.squote
+ + parsers.dquote
+ * (V("NoSoftLineBreakEndline")
+ + parsers.any
+ - parsers.blankline^2
+ - parsers.dquote)^0
+ * parsers.dquote
+ + (parsers.any
+ - parsers.spacechar
+ - parsers.newline
+ - parsers.dquote
+ - parsers.squote
+ - parsers.backtick
+ - parsers.equal
+ - parsers.less
+ - parsers.more)^1
+
+parsers.html_attribute_value_specification
+ = parsers.optionalspace
+ * parsers.equal
+ * parsers.optionalspace
+ * parsers.html_attribute_value
+
+parsers.html_spnl = parsers.optionalspace
+ * (V("NoSoftLineBreakEndline")
+ * parsers.optionalspace)^-1
+
+parsers.html_inline_attribute_value_specification
+ = parsers.html_spnl
+ * parsers.equal
+ * parsers.html_spnl
+ * parsers.html_inline_attribute_value
+
+parsers.html_attribute
+ = parsers.html_attribute_spacing
+ * parsers.html_attribute_name
+ * parsers.html_inline_attribute_value_specification^-1
+
+parsers.html_non_newline_attribute
+ = parsers.spacechar^1
+ * parsers.html_attribute_name
+ * parsers.html_attribute_value_specification^-1
+
+parsers.nested_breaking_blank = parsers.newline
+ * parsers.check_minimal_blank_indent
+ * parsers.blankline
+
+parsers.html_comment_start = P("<!--")
+
+parsers.html_comment_end = P("-->")
+
+parsers.html_comment
+ = Cs( parsers.html_comment_start
+ * parsers.html_until_end(parsers.html_comment_end))
+
+parsers.html_inline_comment = (parsers.html_comment_start / "")
+ * -P(">") * -P("->")
+ * Cs(( V("NoSoftLineBreakEndline")
+ + parsers.any
+ - parsers.nested_breaking_blank
+ - parsers.html_comment_end)^0)
+ * (parsers.html_comment_end / "")
+
+parsers.html_cdatasection_start = P("<![CDATA[")
+
+parsers.html_cdatasection_end = P("]]>")
+
+parsers.html_cdatasection
+ = Cs( parsers.html_cdatasection_start
+ * parsers.html_until_end(parsers.html_cdatasection_end))
+
+parsers.html_inline_cdatasection
+ = parsers.html_cdatasection_start
+ * Cs(V("NoSoftLineBreakEndline") + parsers.any
+ - parsers.nested_breaking_blank - parsers.html_cdatasection_end)^0
+ * parsers.html_cdatasection_end
+
+parsers.html_declaration_start = P("<!") * parsers.letter
+
+parsers.html_declaration_end = P(">")
+
+parsers.html_declaration
+ = Cs( parsers.html_declaration_start
+ * parsers.html_until_end(parsers.html_declaration_end))
+
+parsers.html_inline_declaration
+ = parsers.html_declaration_start
+ * Cs(V("NoSoftLineBreakEndline") + parsers.any
+ - parsers.nested_breaking_blank - parsers.html_declaration_end)^0
+ * parsers.html_declaration_end
+
+parsers.html_instruction_start = P("<?")
+
+parsers.html_instruction_end = P("?>")
+
+parsers.html_instruction
+ = Cs( parsers.html_instruction_start
+ * parsers.html_until_end(parsers.html_instruction_end))
+
+parsers.html_inline_instruction = parsers.html_instruction_start
+ * Cs( V("NoSoftLineBreakEndline")
+ + parsers.any
+ - parsers.nested_breaking_blank
+ - parsers.html_instruction_end)^0
+ * parsers.html_instruction_end
+
+parsers.html_blankline = parsers.newline
+ * parsers.optionalspace
+ * parsers.newline
+
+parsers.html_tag_start = parsers.less
+
+parsers.html_tag_closing_start = parsers.less
+ * parsers.slash
+
+parsers.html_tag_end = parsers.html_spnl
+ * parsers.more
+
+parsers.html_empty_tag_end = parsers.html_spnl
+ * parsers.slash
+ * parsers.more
+
+-- opening tags
+parsers.html_any_open_inline_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_attribute^0
+ * parsers.html_tag_end
+
+parsers.html_any_open_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_non_newline_attribute^0
+ * parsers.html_tag_end
+
+parsers.html_open_tag = parsers.html_tag_start
+ * parsers.block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_tag_end
+
+parsers.html_open_special_tag = parsers.html_tag_start
+ * parsers.special_block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_tag_end
+
+-- incomplete tags
+parsers.incomplete_tag_following = parsers.spacechar
+ + parsers.more
+ + parsers.slash * parsers.more
+ + #(parsers.newline + parsers.eof)
+
+parsers.incomplete_special_tag_following = parsers.spacechar
+ + parsers.more
+ + #( parsers.newline
+ + parsers.eof)
+
+parsers.html_incomplete_open_tag = parsers.html_tag_start
+ * parsers.block_keyword
+ * parsers.incomplete_tag_following
+
+parsers.html_incomplete_open_special_tag
+ = parsers.html_tag_start
+ * parsers.special_block_keyword
+ * parsers.incomplete_special_tag_following
+
+parsers.html_incomplete_close_tag = parsers.html_tag_closing_start
+ * parsers.block_keyword
+ * parsers.incomplete_tag_following
+
+parsers.html_incomplete_close_special_tag
+ = parsers.html_tag_closing_start
+ * parsers.special_block_keyword
+ * parsers.incomplete_tag_following
+
+-- closing tags
+parsers.html_close_tag = parsers.html_tag_closing_start
+ * parsers.block_keyword
+ * parsers.html_tag_end
+
+parsers.html_any_close_tag = parsers.html_tag_closing_start
+ * parsers.keyword
+ * parsers.html_tag_end
+
+parsers.html_close_special_tag = parsers.html_tag_closing_start
+ * parsers.special_block_keyword
+ * parsers.html_tag_end
+
+-- empty tags
+parsers.html_any_empty_inline_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_attribute^0
+ * parsers.html_empty_tag_end
+
+parsers.html_any_empty_tag = parsers.html_tag_start
+ * parsers.keyword
+ * parsers.html_non_newline_attribute^0
+ * parsers.optionalspace
+ * parsers.slash
+ * parsers.more
+
+parsers.html_empty_tag = parsers.html_tag_start
+ * parsers.block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_empty_tag_end
+
+parsers.html_empty_special_tag = parsers.html_tag_start
+ * parsers.special_block_keyword
+ * parsers.html_attribute^0
+ * parsers.html_empty_tag_end
+
+parsers.html_incomplete_blocks
+ = parsers.html_incomplete_open_tag
+ + parsers.html_incomplete_open_special_tag
+ + parsers.html_incomplete_close_tag
+
+-- parse special html blocks
+parsers.html_blankline_ending_special_block_opening
+ = ( parsers.html_close_special_tag
+ + parsers.html_empty_special_tag)
+ * #( parsers.optionalspace
+ * (parsers.newline + parsers.eof))
+
+parsers.html_blankline_ending_special_block
+ = parsers.html_blankline_ending_special_block_opening
+ * parsers.html_blankline_end_condition
+
+parsers.html_special_block_opening
+ = parsers.html_incomplete_open_special_tag
+ - parsers.html_empty_special_tag
+
+parsers.html_closing_special_block
+ = parsers.html_special_block_opening
+ * parsers.html_until_end(parsers.html_close_special_tag)
+
+parsers.html_special_block
+ = parsers.html_blankline_ending_special_block
+ + parsers.html_closing_special_block
+
+-- parse html blocks
+parsers.html_block_opening = parsers.html_incomplete_open_tag
+ + parsers.html_incomplete_close_tag
+
+parsers.html_block = parsers.html_block_opening
+ * parsers.html_blankline_end_condition
+
+-- parse any html blocks
+parsers.html_any_block_opening
+ = ( parsers.html_any_open_tag
+ + parsers.html_any_close_tag
+ + parsers.html_any_empty_tag)
+ * #(parsers.optionalspace * (parsers.newline + parsers.eof))
+
+parsers.html_any_block = parsers.html_any_block_opening
+ * parsers.html_blankline_end_condition
+
+parsers.html_inline_comment_full = parsers.html_comment_start
+ * -P(">") * -P("->")
+ * Cs(( V("NoSoftLineBreakEndline")
+ + parsers.any - P("--")
+ - parsers.nested_breaking_blank
+ - parsers.html_comment_end)^0)
+ * parsers.html_comment_end
+
+parsers.html_inline_tags = parsers.html_inline_comment_full
+ + parsers.html_any_empty_inline_tag
+ + parsers.html_inline_instruction
+ + parsers.html_inline_cdatasection
+ + parsers.html_inline_declaration
+ + parsers.html_any_open_inline_tag
+ + parsers.html_any_close_tag
+
+parsers.urlchar = parsers.anyescaped
+ - parsers.newline
+ - parsers.more
+
+parsers.auto_link_scheme_part = parsers.alphanumeric
+ + parsers.plus
+ + parsers.period
+ + parsers.dash
+
+parsers.auto_link_scheme = parsers.letter
+ * parsers.auto_link_scheme_part
+ * parsers.auto_link_scheme_part^-30
+
+parsers.absolute_uri = parsers.auto_link_scheme * parsers.colon
+ * ( parsers.any - parsers.spacing
+ - parsers.less - parsers.more)^0
+
+parsers.printable_characters = S(".!#$%&'*+/=?^_`{|}~-")
+
+parsers.email_address_local_part_char = parsers.alphanumeric
+ + parsers.printable_characters
+
+parsers.email_address_local_part
+ = parsers.email_address_local_part_char^1
+
+parsers.email_address_dns_label = parsers.alphanumeric
+ * ( parsers.alphanumeric
+ + parsers.dash)^-62
+ * B(parsers.alphanumeric)
+
+parsers.email_address_domain = parsers.email_address_dns_label
+ * ( parsers.period
+ * parsers.email_address_dns_label)^0
+
+parsers.email_address = parsers.email_address_local_part
+ * parsers.at
+ * parsers.email_address_domain
+
+parsers.auto_link_url = parsers.less
+ * C(parsers.absolute_uri)
+ * parsers.more
+
+parsers.auto_link_email = parsers.less
+ * C(parsers.email_address)
+ * parsers.more
+
+parsers.auto_link_relative_reference = parsers.less
+ * C(parsers.urlchar^1)
+ * parsers.more
+
+parsers.autolink = parsers.auto_link_url
+ + parsers.auto_link_email
+
+-- content in balanced brackets, parentheses, or quotes:
+parsers.bracketed = P{ parsers.lbracket
+ * (( parsers.backslash / "" * parsers.rbracket
+ + parsers.any - (parsers.lbracket
+ + parsers.rbracket
+ + parsers.blankline^2)
+ ) + V(1))^0
+ * parsers.rbracket }
+
+parsers.inparens = P{ parsers.lparent
+ * ((parsers.anyescaped - (parsers.lparent
+ + parsers.rparent
+ + parsers.blankline^2)
+ ) + V(1))^0
+ * parsers.rparent }
+
+parsers.squoted = P{ parsers.squote * parsers.alphanumeric
+ * ((parsers.anyescaped - (parsers.squote
+ + parsers.blankline^2)
+ ) + V(1))^0
+ * parsers.squote }
+
+parsers.dquoted = P{ parsers.dquote * parsers.alphanumeric
+ * ((parsers.anyescaped - (parsers.dquote
+ + parsers.blankline^2)
+ ) + V(1))^0
+ * parsers.dquote }
+
+parsers.link_text = parsers.lbracket
+ * Cs((parsers.alphanumeric^1
+ + parsers.bracketed
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + ( parsers.backslash * parsers.backslash)
+ + ( parsers.backslash
+ * ( parsers.lbracket
+ + parsers.rbracket)
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.any
+ - ( parsers.newline
+ + parsers.lbracket
+ + parsers.rbracket
+ + parsers.blankline^2))))^0)
+ * parsers.rbracket
+
+parsers.link_label_body = -#(parsers.sp * parsers.rbracket)
+ * #( ( parsers.any
+ - parsers.rbracket)^-999
+ * parsers.rbracket)
+ * Cs((parsers.alphanumeric^1
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + ( parsers.backslash * parsers.backslash)
+ + ( parsers.backslash
+ * ( parsers.lbracket
+ + parsers.rbracket)
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + (parsers.any
+ - ( parsers.newline
+ + parsers.lbracket
+ + parsers.rbracket
+ + parsers.blankline^2))))^1)
+
+parsers.link_label = parsers.lbracket
+ * parsers.link_label_body
+ * parsers.rbracket
+
+parsers.inparens_url = P{ parsers.lparent
+ * ((parsers.anyescaped - (parsers.lparent
+ + parsers.rparent
+ + parsers.spacing)
+ ) + V(1))^0
+ * parsers.rparent }
+
+-- url for markdown links, allowing nested brackets:
+parsers.url = parsers.less * Cs((parsers.anyescaped
+ - parsers.newline
+ - parsers.less
+ - parsers.more)^0)
+ * parsers.more
+ + -parsers.less
+ * Cs((parsers.inparens_url + (parsers.anyescaped
+ - parsers.spacing
+ - parsers.lparent
+ - parsers.rparent))^1)
+
+-- quoted text:
+parsers.title_s = parsers.squote
+ * Cs((parsers.html_entities
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + ( parsers.anyescaped
+ - parsers.newline
+ - parsers.squote
+ - parsers.blankline^2))^0)
+ * parsers.squote
+
+parsers.title_d = parsers.dquote
+ * Cs((parsers.html_entities
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + ( parsers.anyescaped
+ - parsers.newline
+ - parsers.dquote
+ - parsers.blankline^2))^0)
+ * parsers.dquote
+
+parsers.title_p = parsers.lparent
+ * Cs((parsers.html_entities
+ + V("NoSoftLineBreakSpace")
+ + V("NoSoftLineBreakEndline")
+ + ( parsers.anyescaped
+ - parsers.newline
+ - parsers.lparent
+ - parsers.rparent
+ - parsers.blankline^2))^0)
+ * parsers.rparent
+
+parsers.title
+ = parsers.title_d + parsers.title_s + parsers.title_p
+
+parsers.optionaltitle
+ = parsers.spnlc * parsers.title * parsers.spacechar^0 + Cc("")
+
+-- parse a reference definition: [foo]: /bar "title"
+parsers.define_reference_parser = (parsers.check_trail / "")
+ * parsers.link_label * parsers.colon
+ * parsers.spnlc * parsers.url
+ * ( parsers.spnlc_sep * parsers.title
+ * parsers.only_blank
+ + Cc("") * parsers.only_blank)
+parsers.Inline = V("Inline")
+
+-- parse many p between starter and ender
+parsers.between = function(p, starter, ender)
+ local ender2 = B(parsers.nonspacechar) * ender
+ return ( starter
+ * #parsers.nonspacechar
+ * Ct(p * (p - ender2)^0)
+ * ender2)
+end
+
+parsers.lineof = function(c)
+ return ( parsers.check_trail_no_rem
+ * (P(c) * parsers.optionalspace)^3
+ * (parsers.newline + parsers.eof))
+end
+
+parsers.thematic_break_lines = parsers.lineof(parsers.asterisk)
+ + parsers.lineof(parsers.dash)
+ + parsers.lineof(parsers.underscore)
+-- parse Atx heading start and return level
+parsers.heading_start = #parsers.hash * C(parsers.hash^-6)
+ * -parsers.hash / length
+
+-- parse setext header ending and return level
+parsers.heading_level
+ = parsers.nonindentspace * parsers.equal^1
+ * parsers.optionalspace * #parsers.newline * Cc(1)
+ + parsers.nonindentspace * parsers.dash^1
+ * parsers.optionalspace * #parsers.newline * Cc(2)
+
+local function strip_atx_end(s)
+ return s:gsub("%s+#*%s*\n$","")
+end
+
+parsers.atx_heading = parsers.check_trail_no_rem
+ * Cg(parsers.heading_start, "level")
+ * (C( parsers.optionalspace
+ * parsers.hash^0
+ * parsers.optionalspace
+ * parsers.newline)
+ + parsers.spacechar^1
+ * C(parsers.line))
+M.reader = {}
+function M.reader.new(writer, options)
+ local self = {}
+ self.writer = writer
+ self.options = options
+ self.parsers = {}
+ (function(parsers)
+ setmetatable(self.parsers, {
+ __index = function (_, key)
+ return parsers[key]
+ end
+ })
+ end)(parsers)
+ local parsers = self.parsers
+ function self.normalize_tag(tag)
+ tag = util.rope_to_string(tag)
+ tag = tag:gsub("[ \n\r\t]+", " ")
+ tag = tag:gsub("^ ", ""):gsub(" $", "")
+ tag = uni_algos.case.casefold(tag, true, false)
+ return tag
+ end
+ local function iterlines(s, f)
+ local rope = lpeg.match(Ct((parsers.line / f)^1), s)
+ return util.rope_to_string(rope)
+ end
+ if options.preserveTabs then
+ self.expandtabs = function(s) return s end
+ else
+ self.expandtabs = function(s)
+ if s:find("\t") then
+ return iterlines(s, util.expand_tabs_in_line)
+ else
+ return s
+ end
+ end
+ end
+ self.parser_functions = {}
+ self.create_parser = function(name, grammar, toplevel)
+ self.parser_functions[name] = function(str)
+ if toplevel and options.stripIndent then
+ local min_prefix_length, min_prefix = nil, ''
+ str = iterlines(str, function(line)
+ if lpeg.match(parsers.nonemptyline, line) == nil then
+ return line
+ end
+ line = util.expand_tabs_in_line(line)
+ local prefix = lpeg.match(C(parsers.optionalspace), line)
+ local prefix_length = #prefix
+ local is_shorter = min_prefix_length == nil
+ if not is_shorter then
+ is_shorter = prefix_length < min_prefix_length
+ end
+ if is_shorter then
+ min_prefix_length, min_prefix = prefix_length, prefix
+ end
+ return line
+ end)
+ str = str:gsub('^' .. min_prefix, '')
+ end
+ if toplevel and (options.texComments or options.hybrid) then
+ str = lpeg.match(Ct(parsers.commented_line^1), str)
+ str = util.rope_to_string(str)
+ end
+ local res = lpeg.match(grammar(), str)
+ if res == nil then
+ 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
+ end
+ end
+
+ self.create_parser("parse_blocks",
+ function()
+ return parsers.blocks
+ end, true)
+
+ self.create_parser("parse_blocks_nested",
+ function()
+ return parsers.blocks_nested
+ end, false)
+
+ self.create_parser("parse_inlines",
+ function()
+ return parsers.inlines
+ end, false)
+
+ self.create_parser("parse_inlines_no_inline_note",
+ function()
+ return parsers.inlines_no_inline_note
+ end, false)
+
+ self.create_parser("parse_inlines_no_html",
+ function()
+ return parsers.inlines_no_html
+ end, false)
+
+ self.create_parser("parse_inlines_nbsp",
+ function()
+ return parsers.inlines_nbsp
+ end, false)
+ self.create_parser("parse_inlines_no_link_or_emphasis",
+ function()
+ return parsers.inlines_no_link_or_emphasis
+ end, false)
+ parsers.minimally_indented_blankline
+ = parsers.check_minimal_indent * (parsers.blankline / "")
+
+ parsers.minimally_indented_block
+ = parsers.check_minimal_indent * V("Block")
+
+ parsers.minimally_indented_block_or_paragraph
+ = parsers.check_minimal_indent * V("BlockOrParagraph")
+
+ parsers.minimally_indented_paragraph
+ = parsers.check_minimal_indent * V("Paragraph")
+
+ parsers.minimally_indented_plain
+ = parsers.check_minimal_indent * V("Plain")
+
+ parsers.minimally_indented_par_or_plain
+ = parsers.minimally_indented_paragraph
+ + parsers.minimally_indented_plain
+
+ parsers.minimally_indented_par_or_plain_no_blank
+ = parsers.minimally_indented_par_or_plain
+ - parsers.minimally_indented_blankline
+
+ parsers.minimally_indented_ref
+ = parsers.check_minimal_indent * V("Reference")
+
+ parsers.minimally_indented_blank
+ = parsers.check_minimal_indent * V("Blank")
+
+ parsers.conditionally_indented_blankline
+ = parsers.check_minimal_blank_indent * (parsers.blankline / "")
+
+ parsers.minimally_indented_ref_or_block
+ = parsers.minimally_indented_ref
+ + parsers.minimally_indented_block
+ - parsers.minimally_indented_blankline
+
+ parsers.minimally_indented_ref_or_block_or_par
+ = parsers.minimally_indented_ref
+ + parsers.minimally_indented_block_or_paragraph
+ - parsers.minimally_indented_blankline
+
+
+ function parsers.separator_loop(separated_block, paragraph,
+ block_separator, paragraph_separator)
+ return separated_block
+ + block_separator
+ * paragraph
+ * separated_block
+ + paragraph_separator
+ * paragraph
+ end
+
+ function parsers.create_loop_body_pair(separated_block, paragraph,
+ block_separator,
+ paragraph_separator)
+ return {
+ block = parsers.separator_loop(separated_block, paragraph,
+ block_separator, block_separator),
+ par = parsers.separator_loop(separated_block, paragraph,
+ block_separator, paragraph_separator)
+ }
+ end
+
+ parsers.block_sep_group = function(blank)
+ return blank^0 * parsers.eof
+ + ( blank^2 / writer.paragraphsep
+ + blank^0 / writer.interblocksep
+ )
+ end
+
+ parsers.par_sep_group = function(blank)
+ return blank^0 * parsers.eof
+ + blank^0 / writer.paragraphsep
+ end
+
+ parsers.sep_group_no_output = function(blank)
+ return blank^0 * parsers.eof
+ + blank^0
+ end
+
+ parsers.content_blank = parsers.minimally_indented_blankline
+
+ parsers.ref_or_block_separated
+ = parsers.sep_group_no_output(parsers.content_blank)
+ * ( parsers.minimally_indented_ref
+ - parsers.content_blank)
+ + parsers.block_sep_group(parsers.content_blank)
+ * ( parsers.minimally_indented_block
+ - parsers.content_blank)
+
+ parsers.loop_body_pair =
+ parsers.create_loop_body_pair(
+ parsers.ref_or_block_separated,
+ parsers.minimally_indented_par_or_plain_no_blank,
+ parsers.block_sep_group(parsers.content_blank),
+ parsers.par_sep_group(parsers.content_blank))
+
+ parsers.content_loop = ( V("Block")
+ * parsers.loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.ref_or_block_separated
+ * parsers.loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.loop_body_pair.par^0)
+ * parsers.content_blank^0
+
+ parsers.indented_content = function()
+ return Ct( (V("Reference") + (parsers.blankline / ""))
+ * parsers.content_blank^0
+ * parsers.check_minimal_indent
+ * parsers.content_loop
+ + (V("Reference") + (parsers.blankline / ""))
+ * parsers.content_blank^0
+ + parsers.content_loop)
+ end
+
+ parsers.add_indent = function(pattern, name, breakable)
+ return Cg(Cmt( Cb("indent_info")
+ * Ct(pattern)
+ * ( #parsers.linechar -- check if starter is blank
+ * Cc(false) + Cc(true))
+ * Cc(name)
+ * Cc(breakable),
+ process_starter_indent), "indent_info")
+ end
+
+ if options.hashEnumerators then
+ parsers.dig = parsers.digit + parsers.hash
+ else
+ parsers.dig = parsers.digit
+ end
+
+ parsers.enumerator = function(delimiter_type, interrupting)
+ local delimiter_range
+ local allowed_end
+ if interrupting then
+ delimiter_range = P("1")
+ allowed_end = C(parsers.spacechar^1) * #parsers.linechar
+ else
+ delimiter_range = parsers.dig * parsers.dig^-8
+ allowed_end = C(parsers.spacechar^1)
+ + #(parsers.newline + parsers.eof)
+ end
+
+ return parsers.check_trail
+ * Ct(C(delimiter_range) * C(delimiter_type))
+ * allowed_end
+ end
+
+ parsers.starter = parsers.bullet(parsers.dash)
+ + parsers.bullet(parsers.asterisk)
+ + parsers.bullet(parsers.plus)
+ + parsers.enumerator(parsers.period)
+ + parsers.enumerator(parsers.rparent)
+
+ parsers.blockquote_start
+ = parsers.check_trail
+ * C(parsers.more)
+ * C(parsers.spacechar^0)
+
+ parsers.blockquote_body
+ = parsers.add_indent(parsers.blockquote_start, "bq", true)
+ * parsers.indented_content()
+ * remove_indent("bq")
+
+ if not options.breakableBlockquotes then
+ parsers.blockquote_body
+ = parsers.add_indent(parsers.blockquote_start, "bq", false)
+ * parsers.indented_content()
+ * remove_indent("bq")
+ end
+ local function parse_content_part(content_part)
+ local rope = util.rope_to_string(content_part)
+ local parsed
+ = self.parser_functions.parse_inlines_no_link_or_emphasis(rope)
+ parsed.indent_info = nil
+ return parsed
+ end
+
+ local collect_emphasis_content =
+ function(t, opening_index, closing_index)
+ local content = {}
+
+ local content_part = {}
+ for i = opening_index, closing_index do
+ local value = t[i]
+
+ if value.rendered ~= nil then
+ content[#content + 1] = parse_content_part(content_part)
+ content_part = {}
+ content[#content + 1] = value.rendered
+ value.rendered = nil
+ else
+ if value.type == "delimiter"
+ and value.element == "emphasis" then
+ if value.is_active then
+ content_part[#content_part + 1]
+ = string.rep(value.character, value.current_count)
+ end
+ else
+ content_part[#content_part + 1] = value.content
+ end
+ value.content = ''
+ value.is_active = false
+ end
+ end
+
+ if next(content_part) ~= nil then
+ content[#content + 1] = parse_content_part(content_part)
+ end
+
+ return content
+ end
+
+ local function fill_emph(t, opening_index, closing_index)
+ local content
+ = collect_emphasis_content(t, opening_index + 1,
+ closing_index - 1)
+ t[opening_index + 1].is_active = true
+ t[opening_index + 1].rendered = writer.emphasis(content)
+ end
+
+ local function fill_strong(t, opening_index, closing_index)
+ local content
+ = collect_emphasis_content(t, opening_index + 1,
+ closing_index - 1)
+ t[opening_index + 1].is_active = true
+ t[opening_index + 1].rendered = writer.strong(content)
+ end
+
+ local function breaks_three_rule(opening_delimiter, closing_delimiter)
+ return ( opening_delimiter.is_closing
+ or closing_delimiter.is_opening)
+ and (( opening_delimiter.original_count
+ + closing_delimiter.original_count) % 3 == 0)
+ and ( opening_delimiter.original_count % 3 ~= 0
+ or closing_delimiter.original_count % 3 ~= 0)
+ end
+
+ local find_emphasis_opener = function(t, bottom_index, latest_index,
+ character, closing_delimiter)
+ for i = latest_index, bottom_index, -1 do
+ local value = t[i]
+ if value.is_active and
+ value.is_opening and
+ value.type == "delimiter" and
+ value.element == "emphasis" and
+ (value.character == character) and
+ (value.current_count > 0) then
+ if not breaks_three_rule(value, closing_delimiter) then
+ return i
+ end
+ end
+ end
+ end
+
+ local function process_emphasis(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ local value = t[i]
+ if value.type == "delimiter" and value.element == "emphasis" then
+ local delimiter_length = string.len(value.content)
+ value.character = string.sub(value.content, 1, 1)
+ value.current_count = delimiter_length
+ value.original_count = delimiter_length
+ end
+ end
+
+ local openers_bottom = {
+ ['*'] = {
+ [true] = {opening_index, opening_index, opening_index},
+ [false] = {opening_index, opening_index, opening_index}
+ },
+ ['_'] = {
+ [true] = {opening_index, opening_index, opening_index},
+ [false] = {opening_index, opening_index, opening_index}
+ }
+ }
+
+ local current_position = opening_index
+ local max_position = closing_index
+
+ while current_position <= max_position do
+ local value = t[current_position]
+
+ if value.type ~= "delimiter" or
+ value.element ~= "emphasis" or
+ not value.is_active or
+ not value.is_closing or
+ (value.current_count <= 0) then
+ current_position = current_position + 1
+ goto continue
+ end
+
+ local character = value.character
+ local is_opening = value.is_opening
+ local closing_length_modulo_three = value.original_count % 3
+
+ local current_openers_bottom
+ = openers_bottom[character][is_opening]
+ [closing_length_modulo_three + 1]
+
+ local opener_position
+ = find_emphasis_opener(t, current_openers_bottom,
+ current_position - 1, character, value)
+
+ if (opener_position == nil) then
+ openers_bottom[character][is_opening]
+ [closing_length_modulo_three + 1]
+ = current_position
+ current_position = current_position + 1
+ goto continue
+ end
+
+ local opening_delimiter = t[opener_position]
+
+ local current_opening_count = opening_delimiter.current_count
+ local current_closing_count = t[current_position].current_count
+
+ if (current_opening_count >= 2)
+ and (current_closing_count >= 2) then
+ opening_delimiter.current_count = current_opening_count - 2
+ t[current_position].current_count = current_closing_count - 2
+ fill_strong(t, opener_position, current_position)
+ else
+ opening_delimiter.current_count = current_opening_count - 1
+ t[current_position].current_count = current_closing_count - 1
+ fill_emph(t, opener_position, current_position)
+ end
+
+ ::continue::
+ end
+ end
+
+ local cont = lpeg.R("\128\191") -- continuation byte
+
+ local function utf8_by_byte_count(n)
+ if (n == 1) then
+ return lpeg.R("\0\127")
+ end
+ if (n == 2) then
+ return lpeg.R("\194\223") * cont
+ end
+ if (n == 3) then
+ return lpeg.R("\224\239") * cont * cont
+ end
+ if (n == 4) then
+ return lpeg.R("\240\244") * cont * cont * cont
+ end
+ end
+ local function check_unicode_type(s, i, start_pos, end_pos, chartype)
+ local c
+ local char_length
+ for pos = start_pos, end_pos, 1 do
+ if (start_pos < 0) then
+ char_length = -pos
+ else
+ char_length = pos + 1
+ end
+
+ if (chartype == "punctuation") then
+ if lpeg.match(parsers.punctuation[char_length], s, i+pos) then
+ return i
+ end
+ else
+ c = lpeg.match({ C(utf8_by_byte_count(char_length)) },s,i+pos)
+ if (c ~= nil) and (unicode.utf8.match(c, chartype)) then
+ return i
+ end
+ end
+ end
+ end
+
+ local function check_preceding_unicode_punctuation(s, i)
+ return check_unicode_type(s, i, -4, -1, "punctuation")
+ end
+
+ local function check_preceding_unicode_whitespace(s, i)
+ return check_unicode_type(s, i, -4, -1, "%s")
+ end
+
+ local function check_following_unicode_punctuation(s, i)
+ return check_unicode_type(s, i, 0, 3, "punctuation")
+ end
+
+ local function check_following_unicode_whitespace(s, i)
+ return check_unicode_type(s, i, 0, 3, "%s")
+ end
+
+ parsers.unicode_preceding_punctuation
+ = B(parsers.escapable)
+ + Cmt(parsers.succeed, check_preceding_unicode_punctuation)
+
+ parsers.unicode_preceding_whitespace
+ = Cmt(parsers.succeed, check_preceding_unicode_whitespace)
+
+ parsers.unicode_following_punctuation
+ = #parsers.escapable
+ + Cmt(parsers.succeed, check_following_unicode_punctuation)
+
+ parsers.unicode_following_whitespace
+ = Cmt(parsers.succeed, check_following_unicode_whitespace)
+
+ parsers.delimiter_run = function(character)
+ return (B(parsers.backslash * character) + -B(character))
+ * character^1
+ * -#character
+ end
+
+ parsers.left_flanking_delimiter_run = function(character)
+ return (B( parsers.any)
+ * ( parsers.unicode_preceding_punctuation
+ + parsers.unicode_preceding_whitespace)
+ + -B(parsers.any))
+ * parsers.delimiter_run(character)
+ * parsers.unicode_following_punctuation
+ + parsers.delimiter_run(character)
+ * -#( parsers.unicode_following_punctuation
+ + parsers.unicode_following_whitespace
+ + parsers.eof)
+ end
+
+ parsers.right_flanking_delimiter_run = function(character)
+ return parsers.unicode_preceding_punctuation
+ * parsers.delimiter_run(character)
+ * ( parsers.unicode_following_punctuation
+ + parsers.unicode_following_whitespace
+ + parsers.eof)
+ + (B(parsers.any)
+ * -( parsers.unicode_preceding_punctuation
+ + parsers.unicode_preceding_whitespace))
+ * parsers.delimiter_run(character)
+ end
+
+ if options.underscores then
+ parsers.emph_start
+ = parsers.left_flanking_delimiter_run(parsers.asterisk)
+ + ( -#parsers.right_flanking_delimiter_run(parsers.underscore)
+ + ( parsers.unicode_preceding_punctuation
+ * #parsers.right_flanking_delimiter_run(parsers.underscore)))
+ * parsers.left_flanking_delimiter_run(parsers.underscore)
+
+ parsers.emph_end
+ = parsers.right_flanking_delimiter_run(parsers.asterisk)
+ + ( -#parsers.left_flanking_delimiter_run(parsers.underscore)
+ + #( parsers.left_flanking_delimiter_run(parsers.underscore)
+ * parsers.unicode_following_punctuation))
+ * parsers.right_flanking_delimiter_run(parsers.underscore)
+ else
+ parsers.emph_start
+ = parsers.left_flanking_delimiter_run(parsers.asterisk)
+
+ parsers.emph_end
+ = parsers.right_flanking_delimiter_run(parsers.asterisk)
+ end
+
+ parsers.emph_capturing_open_and_close
+ = #parsers.emph_start * #parsers.emph_end
+ * Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("emphasis"), "element")
+ * Cg(C(parsers.emph_start), "content")
+ * Cg(Cc(true), "is_opening")
+ * Cg(Cc(true), "is_closing"))
+
+ parsers.emph_capturing_open = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("emphasis"), "element")
+ * Cg(C(parsers.emph_start), "content")
+ * Cg(Cc(true), "is_opening")
+ * Cg(Cc(false), "is_closing"))
+
+ parsers.emph_capturing_close = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("emphasis"), "element")
+ * Cg(C(parsers.emph_end), "content")
+ * Cg(Cc(false), "is_opening")
+ * Cg(Cc(true), "is_closing"))
+
+ parsers.emph_open_or_close = parsers.emph_capturing_open_and_close
+ + parsers.emph_capturing_open
+ + parsers.emph_capturing_close
+
+ parsers.emph_open = parsers.emph_capturing_open_and_close
+ + parsers.emph_capturing_open
+
+ parsers.emph_close = parsers.emph_capturing_open_and_close
+ + parsers.emph_capturing_close
+
+ -- List of references defined in the document
+ local references
+
+ -- List of note references defined in the document
+ parsers.rawnotes = {}
+
+ function self.register_link(_, tag, url, title,
+ attributes)
+ local normalized_tag = self.normalize_tag(tag)
+ if references[normalized_tag] == nil then
+ references[normalized_tag] = {
+ url = url,
+ title = title,
+ attributes = attributes
+ }
+ end
+ return ""
+ end
+
+ function self.lookup_reference(tag)
+ return references[self.normalize_tag(tag)]
+ end
+
+ function self.lookup_note_reference(tag)
+ return parsers.rawnotes[self.normalize_tag(tag)]
+ end
+
+ parsers.title_s_direct_ref = parsers.squote
+ * Cs((parsers.html_entities
+ + ( parsers.anyescaped
+ - parsers.squote
+ - parsers.blankline^2))^0)
+ * parsers.squote
+
+ parsers.title_d_direct_ref = parsers.dquote
+ * Cs((parsers.html_entities
+ + ( parsers.anyescaped
+ - parsers.dquote
+ - parsers.blankline^2))^0)
+ * parsers.dquote
+
+ parsers.title_p_direct_ref = parsers.lparent
+ * Cs((parsers.html_entities
+ + ( parsers.anyescaped
+ - parsers.lparent
+ - parsers.rparent
+ - parsers.blankline^2))^0)
+ * parsers.rparent
+
+ parsers.title_direct_ref = parsers.title_s_direct_ref
+ + parsers.title_d_direct_ref
+ + parsers.title_p_direct_ref
+
+ parsers.inline_direct_ref_inside = parsers.lparent * parsers.spnl
+ * Cg(parsers.url + Cc(""), "url")
+ * parsers.spnl
+ * Cg( parsers.title_direct_ref
+ + Cc(""), "title")
+ * parsers.spnl * parsers.rparent
+
+ parsers.inline_direct_ref = parsers.lparent * parsers.spnlc
+ * Cg(parsers.url + Cc(""), "url")
+ * parsers.spnlc
+ * Cg(parsers.title + Cc(""), "title")
+ * parsers.spnlc * parsers.rparent
+
+ parsers.empty_link = parsers.lbracket
+ * parsers.rbracket
+
+ parsers.inline_link = parsers.link_text
+ * parsers.inline_direct_ref
+
+ parsers.full_link = parsers.link_text
+ * parsers.link_label
+
+ parsers.shortcut_link = parsers.link_label
+ * -(parsers.empty_link + parsers.link_label)
+
+ parsers.collapsed_link = parsers.link_label
+ * parsers.empty_link
+
+ parsers.image_opening = #(parsers.exclamation * parsers.inline_link)
+ * Cg(Cc("inline"), "link_type")
+ + #(parsers.exclamation * parsers.full_link)
+ * Cg(Cc("full"), "link_type")
+ + #( parsers.exclamation
+ * parsers.collapsed_link)
+ * Cg(Cc("collapsed"), "link_type")
+ + #(parsers.exclamation * parsers.shortcut_link)
+ * Cg(Cc("shortcut"), "link_type")
+ + #(parsers.exclamation * parsers.empty_link)
+ * Cg(Cc("empty"), "link_type")
+
+ parsers.link_opening = #parsers.inline_link
+ * Cg(Cc("inline"), "link_type")
+ + #parsers.full_link
+ * Cg(Cc("full"), "link_type")
+ + #parsers.collapsed_link
+ * Cg(Cc("collapsed"), "link_type")
+ + #parsers.shortcut_link
+ * Cg(Cc("shortcut"), "link_type")
+ + #parsers.empty_link
+ * Cg(Cc("empty_link"), "link_type")
+ + #parsers.link_text
+ * Cg(Cc("link_text"), "link_type")
+
+ parsers.note_opening = #(parsers.circumflex * parsers.link_text)
+ * Cg(Cc("note_inline"), "link_type")
+
+ parsers.raw_note_opening = #( parsers.lbracket
+ * parsers.circumflex
+ * parsers.link_label_body
+ * parsers.rbracket)
+ * Cg(Cc("raw_note"), "link_type")
+
+ local inline_note_element = Cg(Cc("note"), "element")
+ * parsers.note_opening
+ * Cg( parsers.circumflex
+ * parsers.lbracket, "content")
+
+ local image_element = Cg(Cc("image"), "element")
+ * parsers.image_opening
+ * Cg( parsers.exclamation
+ * parsers.lbracket, "content")
+
+ local note_element = Cg(Cc("note"), "element")
+ * parsers.raw_note_opening
+ * Cg( parsers.lbracket
+ * parsers.circumflex, "content")
+
+ local link_element = Cg(Cc("link"), "element")
+ * parsers.link_opening
+ * Cg(parsers.lbracket, "content")
+
+ local opening_elements = parsers.fail
+
+ if options.inlineNotes then
+ opening_elements = opening_elements + inline_note_element
+ end
+
+ opening_elements = opening_elements + image_element
+
+ if options.notes then
+ opening_elements = opening_elements + note_element
+ end
+
+ opening_elements = opening_elements + link_element
+
+ parsers.link_image_opening = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc(true), "is_opening")
+ * Cg(Cc(false), "is_closing")
+ * opening_elements)
+
+ parsers.link_image_closing = Ct( Cg(Cc("delimiter"), "type")
+ * Cg(Cc("link"), "element")
+ * Cg(Cc(false), "is_opening")
+ * Cg(Cc(true), "is_closing")
+ * ( Cg(Cc(true), "is_direct")
+ * Cg( parsers.rbracket
+ * #parsers.inline_direct_ref,
+ "content")
+ + Cg(Cc(false), "is_direct")
+ * Cg(parsers.rbracket, "content")))
+
+ parsers.link_image_open_or_close = parsers.link_image_opening
+ + parsers.link_image_closing
+
+ if options.html then
+ parsers.link_emph_precedence = parsers.inticks
+ + parsers.autolink
+ + parsers.html_inline_tags
+ else
+ parsers.link_emph_precedence = parsers.inticks
+ + parsers.autolink
+ end
+
+ parsers.link_and_emph_endline = parsers.newline
+ * ((parsers.check_minimal_indent
+ * -V("EndlineExceptions")
+ + parsers.check_optional_indent
+ * -V("EndlineExceptions")
+ * -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.linechar
+ + parsers.link_and_emph_endline
+ + (parsers.linechar
+ - parsers.blankline^2
+ - parsers.link_image_open_or_close
+ - parsers.emph_open_or_close))^0), "content"))
+
+ parsers.link_and_emph_table
+ = (parsers.link_image_opening + parsers.emph_open)
+ * parsers.link_and_emph_content
+ * ((parsers.link_image_open_or_close + parsers.emph_open_or_close)
+ * parsers.link_and_emph_content)^1
+
+ local function collect_link_content(t, opening_index, closing_index)
+ local content = {}
+ for i = opening_index, closing_index do
+ content[#content + 1] = t[i].content
+ end
+ return util.rope_to_string(content)
+ end
+
+ local function find_link_opener(t, bottom_index, latest_index)
+ for i = latest_index, bottom_index, -1 do
+ local value = t[i]
+ if value.type == "delimiter" and
+ value.is_opening and
+ ( value.element == "link"
+ or value.element == "image"
+ or value.element == "note")
+ and not value.removed then
+ if value.is_active then
+ return i
+ end
+ value.removed = true
+ return nil
+ end
+ end
+ end
+
+ local function find_next_link_closing_index(t, latest_index)
+ for i = latest_index, #t do
+ local value = t[i]
+ if value.is_closing and
+ value.element == "link" and
+ not value.removed then
+ return i
+ end
+ end
+ end
+
+ local function disable_previous_link_openers(t, opening_index)
+ if t[opening_index].element == "image" then
+ return
+ end
+
+ for i = opening_index, 1, -1 do
+ local value = t[i]
+ if value.is_active and
+ value.type == "delimiter" and
+ value.is_opening and
+ value.element == "link" then
+ value.is_active = false
+ end
+ end
+ end
+
+ local function disable_range(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ local value = t[i]
+ if value.is_active then
+ value.is_active = false
+ if value.type == "delimiter" then
+ value.removed = true
+ end
+ end
+ end
+ end
+
+ local delete_parsed_content_in_range =
+ function(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ t[i].rendered = nil
+ end
+ end
+
+ local function empty_content_in_range(t, opening_index, closing_index)
+ for i = opening_index, closing_index do
+ t[i].content = ''
+ end
+ end
+
+ local function join_attributes(reference_attributes, own_attributes)
+ local merged_attributes = {}
+ for _, attribute in ipairs(reference_attributes or {}) do
+ table.insert(merged_attributes, attribute)
+ end
+ for _, attribute in ipairs(own_attributes or {}) do
+ table.insert(merged_attributes, attribute)
+ end
+ if next(merged_attributes) == nil then
+ merged_attributes = nil
+ end
+ return merged_attributes
+ end
+
+ local render_link_or_image =
+ function(t, opening_index, closing_index, content_end_index,
+ reference)
+ process_emphasis(t, opening_index, content_end_index)
+ local mapped = collect_emphasis_content(t, opening_index + 1,
+ content_end_index - 1)
+
+ local rendered = {}
+ if (t[opening_index].element == "link") then
+ rendered = writer.link(mapped, reference.url,
+ reference.title, reference.attributes)
+ end
+
+ if (t[opening_index].element == "image") then
+ rendered = writer.image(mapped, reference.url, reference.title,
+ reference.attributes)
+ end
+
+ if (t[opening_index].element == "note") then
+ if (t[opening_index].link_type == "note_inline") then
+ rendered = writer.note(mapped)
+ end
+ if (t[opening_index].link_type == "raw_note") then
+ rendered = writer.note(reference)
+ end
+ end
+
+ t[opening_index].rendered = rendered
+ delete_parsed_content_in_range(t, opening_index + 1,
+ closing_index)
+ empty_content_in_range(t, opening_index, closing_index)
+ disable_previous_link_openers(t, opening_index)
+ disable_range(t, opening_index, closing_index)
+ end
+
+ local resolve_inline_following_content =
+ function(t, closing_index, match_reference, match_link_attributes)
+ local content = ""
+ for i = closing_index + 1, #t do
+ content = content .. t[i].content
+ end
+
+ local matching_content = parsers.succeed
+
+ if match_reference then
+ matching_content = matching_content
+ * parsers.inline_direct_ref_inside
+ end
+
+ if match_link_attributes then
+ matching_content = matching_content
+ * Cg(Ct(parsers.attributes^-1), "attributes")
+ end
+
+ local matched = lpeg.match(Ct( matching_content
+ * Cg(Cp(), "end_position")), content)
+
+ local matched_count = matched.end_position - 1
+ for i = closing_index + 1, #t do
+ local value = t[i]
+
+ local chars_left = matched_count
+ matched_count = matched_count - #value.content
+
+ if matched_count <= 0 then
+ value.content = value.content:sub(chars_left + 1)
+ break
+ end
+
+ value.content = ''
+ value.is_active = false
+ end
+
+ local attributes = matched.attributes
+ if attributes == nil or next(attributes) == nil then
+ attributes = nil
+ end
+
+ return {
+ url = matched.url or "",
+ title = matched.title or "",
+ attributes = attributes
+ }
+ end
+
+ local function resolve_inline_link(t, opening_index, closing_index)
+ local inline_content
+ = resolve_inline_following_content(t, closing_index, true,
+ t.match_link_attributes)
+ render_link_or_image(t, opening_index, closing_index,
+ closing_index, inline_content)
+ end
+
+ local resolve_note_inline_link =
+ function(t, opening_index, closing_index)
+ local inline_content
+ = resolve_inline_following_content(t, closing_index,
+ false, false)
+ render_link_or_image(t, opening_index, closing_index,
+ closing_index, inline_content)
+ end
+
+ local function resolve_shortcut_link(t, opening_index, closing_index)
+ local content
+ = collect_link_content(t, opening_index + 1, closing_index - 1)
+ local r = self.lookup_reference(content)
+
+ if r then
+ local inline_content
+ = resolve_inline_following_content(t, closing_index, false,
+ t.match_link_attributes)
+ r.attributes
+ = join_attributes(r.attributes, inline_content.attributes)
+ render_link_or_image(t, opening_index, closing_index,
+ closing_index, r)
+ end
+ end
+
+ local function resolve_raw_note_link(t, opening_index, closing_index)
+ local content
+ = collect_link_content(t, opening_index + 1, closing_index - 1)
+ local r = self.lookup_note_reference(content)
+
+ if r then
+ local parsed_ref = self.parser_functions.parse_blocks_nested(r)
+ render_link_or_image(t, opening_index, closing_index,
+ closing_index, parsed_ref)
+ end
+ end
+
+ local function resolve_full_link(t, opening_index, closing_index)
+ local next_link_closing_index
+ = find_next_link_closing_index(t, closing_index + 4)
+ local next_link_content
+ = collect_link_content(t, closing_index + 3,
+ next_link_closing_index - 1)
+ local r = self.lookup_reference(next_link_content)
+
+ if r then
+ local inline_content
+ = resolve_inline_following_content(t, next_link_closing_index,
+ false,
+ t.match_link_attributes)
+ r.attributes
+ = join_attributes(r.attributes, inline_content.attributes)
+ render_link_or_image(t, opening_index, next_link_closing_index,
+ closing_index, r)
+ end
+ end
+
+ local function resolve_collapsed_link(t, opening_index, closing_index)
+ local next_link_closing_index
+ = find_next_link_closing_index(t, closing_index + 4)
+ local content
+ = collect_link_content(t, opening_index + 1, closing_index - 1)
+ local r = self.lookup_reference(content)
+
+ if r then
+ local inline_content
+ = resolve_inline_following_content(t, closing_index, false,
+ t.match_link_attributes)
+ r.attributes
+ = join_attributes(r.attributes, inline_content.attributes)
+ render_link_or_image(t, opening_index, next_link_closing_index,
+ closing_index, r)
+ end
+ end
+
+ local function process_links_and_emphasis(t)
+ for _,value in ipairs(t) do
+ value.is_active = true
+ end
+
+ for i,value in ipairs(t) do
+ if not value.is_closing
+ or value.type ~= "delimiter"
+ or not ( value.element == "link"
+ or value.element == "image"
+ or value.element == "note")
+ or value.removed then
+ goto continue
+ end
+
+ local opener_position = find_link_opener(t, 1, i - 1)
+ if (opener_position == nil) then
+ goto continue
+ end
+
+ local opening_delimiter = t[opener_position]
+ opening_delimiter.removed = true
+
+ local link_type = opening_delimiter.link_type
+
+ if (link_type == "inline") then
+ resolve_inline_link(t, opener_position, i)
+ end
+ if (link_type == "shortcut") then
+ resolve_shortcut_link(t, opener_position, i)
+ end
+ if (link_type == "full") then
+ resolve_full_link(t, opener_position, i)
+ end
+ if (link_type == "collapsed") then
+ resolve_collapsed_link(t, opener_position, i)
+ end
+ if (link_type == "note_inline") then
+ resolve_note_inline_link(t, opener_position, i)
+ end
+ if (link_type == "raw_note") then
+ resolve_raw_note_link(t, opener_position, i)
+ end
+
+ ::continue::
+ end
+
+ t[#t].content = t[#t].content:gsub("%s*$","")
+
+ process_emphasis(t, 1, #t)
+ local final_result = collect_emphasis_content(t, 1, #t)
+ return final_result
+ end
+
+ function self.defer_link_and_emphasis_processing(delimiter_table)
+ return writer.defer_call(function()
+ return process_links_and_emphasis(delimiter_table)
+ end)
+ end
+
+ parsers.Str = ( parsers.normalchar
+ * (parsers.normalchar + parsers.at)^0)
+ / writer.string
+
+ parsers.Symbol = (parsers.backtick^1 + V("SpecialChar"))
+ / writer.string
+
+ parsers.Ellipsis = P("...") / writer.ellipsis
+
+ parsers.Smart = parsers.Ellipsis
+
+ parsers.Code = parsers.inticks / writer.code
+
+ if options.blankBeforeBlockquote then
+ parsers.bqstart = parsers.fail
+ else
+ parsers.bqstart = parsers.blockquote_start
+ end
+
+ if options.blankBeforeHeading then
+ parsers.headerstart = parsers.fail
+ else
+ parsers.headerstart = parsers.atx_heading
+ end
+
+ if options.blankBeforeList then
+ parsers.interrupting_bullets = parsers.fail
+ parsers.interrupting_enumerators = parsers.fail
+ else
+ parsers.interrupting_bullets
+ = parsers.bullet(parsers.dash, true)
+ + parsers.bullet(parsers.asterisk, true)
+ + parsers.bullet(parsers.plus, true)
+
+ parsers.interrupting_enumerators
+ = parsers.enumerator(parsers.period, true)
+ + parsers.enumerator(parsers.rparent, true)
+ end
+
+ if options.html then
+ parsers.html_interrupting
+ = parsers.check_trail
+ * ( parsers.html_incomplete_open_tag
+ + parsers.html_incomplete_close_tag
+ + parsers.html_incomplete_open_special_tag
+ + parsers.html_comment_start
+ + parsers.html_cdatasection_start
+ + parsers.html_declaration_start
+ + parsers.html_instruction_start
+ - parsers.html_close_special_tag
+ - parsers.html_empty_special_tag)
+ else
+ parsers.html_interrupting = parsers.fail
+ end
+
+ parsers.ListStarter = parsers.starter
+
+ parsers.EndlineExceptions
+ = parsers.blankline -- paragraph break
+ + parsers.eof -- end of document
+ + parsers.bqstart
+ + parsers.thematic_break_lines
+ + parsers.interrupting_bullets
+ + parsers.interrupting_enumerators
+ + parsers.headerstart
+ + parsers.html_interrupting
+
+ parsers.NoSoftLineBreakEndlineExceptions = parsers.EndlineExceptions
+
+ parsers.endline = parsers.newline
+ * (parsers.check_minimal_indent
+ * -V("EndlineExceptions")
+ + parsers.check_optional_indent
+ * -V("EndlineExceptions")
+ * -V("ListStarter")) / function(_) return end
+ * parsers.spacechar^0
+
+ parsers.Endline = parsers.endline
+ / writer.soft_line_break
+
+ parsers.EndlineNoSub = parsers.endline
+
+ parsers.NoSoftLineBreakEndline
+ = parsers.newline
+ * (parsers.check_minimal_indent
+ * -V("NoSoftLineBreakEndlineExceptions")
+ + parsers.check_optional_indent
+ * -V("NoSoftLineBreakEndlineExceptions")
+ * -V("ListStarter"))
+ * parsers.spacechar^0
+ / writer.space
+
+ parsers.EndlineBreak = parsers.backslash * parsers.endline
+ / writer.hard_line_break
+
+ parsers.OptionalIndent
+ = parsers.spacechar^1 / writer.space
+
+ parsers.Space = parsers.spacechar^2 * parsers.endline
+ / writer.hard_line_break
+ + parsers.spacechar^1
+ * parsers.endline^-1
+ * parsers.eof / self.expandtabs
+ + 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
+ / writer.hard_line_break
+ + parsers.spacechar^1
+ * parsers.endline^-1
+ * parsers.eof / self.expandtabs
+ + parsers.spacechar^1 * parsers.endline
+ / writer.soft_line_break
+ + parsers.spacechar^1
+ * -parsers.newline / self.expandtabs
+ + parsers.spacechar^1
+
+ parsers.NonbreakingEndline
+ = parsers.endline
+ / writer.nbsp
+
+ parsers.NonbreakingSpace
+ = parsers.spacechar^2 * parsers.endline
+ / writer.nbsp
+ + parsers.spacechar^1
+ * parsers.endline^-1 * parsers.eof / ""
+ + parsers.spacechar^1 * parsers.endline
+ * parsers.optionalspace
+ / writer.nbsp
+ + parsers.spacechar^1 * parsers.optionalspace
+ / writer.nbsp
+
+function self.auto_link_url(url, attributes)
+ return writer.link(writer.escape(url),
+ url, nil, attributes)
+end
+function self.auto_link_email(email, attributes)
+ return writer.link(writer.escape(email),
+ "mailto:"..email,
+ nil, attributes)
+end
+
+ parsers.AutoLinkUrl = parsers.auto_link_url
+ / self.auto_link_url
+
+ parsers.AutoLinkEmail
+ = parsers.auto_link_email
+ / self.auto_link_email
+
+ parsers.AutoLinkRelativeReference
+ = parsers.auto_link_relative_reference
+ / self.auto_link_url
+
+ parsers.LinkAndEmph = Ct(parsers.link_and_emph_table)
+ / self.defer_link_and_emphasis_processing
+
+ parsers.EscapedChar = parsers.backslash
+ * C(parsers.escapable) / writer.string
+
+ parsers.InlineHtml = Cs(parsers.html_inline_comment)
+ / writer.inline_html_comment
+ + Cs(parsers.html_any_empty_inline_tag
+ + parsers.html_inline_instruction
+ + parsers.html_inline_cdatasection
+ + parsers.html_inline_declaration
+ + parsers.html_any_open_inline_tag
+ + parsers.html_any_close_tag)
+ / writer.inline_html_tag
+
+ parsers.HtmlEntity = parsers.html_entities / writer.string
+ parsers.DisplayHtml = Cs(parsers.check_trail
+ * ( parsers.html_comment
+ + parsers.html_special_block
+ + parsers.html_block
+ + parsers.html_any_block
+ + parsers.html_instruction
+ + parsers.html_cdatasection
+ + parsers.html_declaration))
+ / writer.block_html_element
+
+ parsers.indented_non_blank_line = parsers.indentedline
+ - parsers.blankline
+
+ parsers.Verbatim
+ = Cs( parsers.check_code_trail
+ * (parsers.line - parsers.blankline)
+ * (( parsers.check_minimal_blank_indent_and_full_code_trail
+ * parsers.blankline)^0
+ * ( (parsers.check_minimal_indent / "")
+ * parsers.check_code_trail
+ * (parsers.line - parsers.blankline))^1)^0)
+ / self.expandtabs / writer.verbatim
+
+ parsers.Blockquote = parsers.blockquote_body
+ / writer.blockquote
+
+ parsers.ThematicBreak = parsers.thematic_break_lines
+ / writer.thematic_break
+
+ parsers.Reference = parsers.define_reference_parser
+ / self.register_link
+
+ parsers.Paragraph = parsers.freeze_trail
+ * (Ct((parsers.Inline)^1)
+ * (parsers.newline + parsers.eof)
+ * parsers.unfreeze_trail
+ / writer.paragraph)
+
+ parsers.Plain = parsers.nonindentspace * Ct(parsers.Inline^1)
+ / writer.plain
+
+ if options.taskLists then
+ parsers.tickbox = ( parsers.ticked_box
+ + parsers.halfticked_box
+ + parsers.unticked_box
+ ) / writer.tickbox
+ else
+ parsers.tickbox = parsers.fail
+ end
+
+ parsers.list_blank = parsers.conditionally_indented_blankline
+
+ parsers.ref_or_block_list_separated
+ = parsers.sep_group_no_output(parsers.list_blank)
+ * parsers.minimally_indented_ref
+ + parsers.block_sep_group(parsers.list_blank)
+ * parsers.minimally_indented_block
+
+ parsers.ref_or_block_non_separated
+ = parsers.minimally_indented_ref
+ + (parsers.succeed / writer.interblocksep)
+ * parsers.minimally_indented_block
+ - parsers.minimally_indented_blankline
+
+ parsers.tight_list_loop_body_pair =
+ parsers.create_loop_body_pair(
+ parsers.ref_or_block_non_separated,
+ parsers.minimally_indented_par_or_plain_no_blank,
+ (parsers.succeed / writer.interblocksep),
+ (parsers.succeed / writer.paragraphsep))
+
+ parsers.loose_list_loop_body_pair =
+ parsers.create_loop_body_pair(
+ parsers.ref_or_block_list_separated,
+ parsers.minimally_indented_par_or_plain,
+ parsers.block_sep_group(parsers.list_blank),
+ parsers.par_sep_group(parsers.list_blank))
+
+ parsers.tight_list_content_loop
+ = V("Block")
+ * parsers.tight_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.ref_or_block_non_separated
+ * parsers.tight_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.tight_list_loop_body_pair.par^0
+
+ parsers.loose_list_content_loop
+ = V("Block")
+ * parsers.loose_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.ref_or_block_list_separated
+ * parsers.loose_list_loop_body_pair.block^0
+ + (V("Paragraph") + V("Plain"))
+ * parsers.loose_list_loop_body_pair.par^0
+
+ parsers.list_item_tightness_condition
+ = -#( parsers.list_blank^0
+ * parsers.minimally_indented_ref_or_block_or_par)
+ * remove_indent("li")
+ + remove_indent("li")
+ * parsers.fail
+
+ parsers.indented_content_tight
+ = Ct( (parsers.blankline / "")
+ * #parsers.list_blank
+ * remove_indent("li")
+ + ( (V("Reference") + (parsers.blankline / ""))
+ * parsers.check_minimal_indent
+ * parsers.tight_list_content_loop
+ + (V("Reference") + (parsers.blankline / ""))
+ + (parsers.tickbox^-1 / writer.escape)
+ * parsers.tight_list_content_loop
+ )
+ * parsers.list_item_tightness_condition)
+
+ parsers.indented_content_loose
+ = Ct( (parsers.blankline / "")
+ * #parsers.list_blank
+ + ( (V("Reference") + (parsers.blankline / ""))
+ * parsers.check_minimal_indent
+ * parsers.loose_list_content_loop
+ + (V("Reference") + (parsers.blankline / ""))
+ + (parsers.tickbox^-1 / writer.escape)
+ * parsers.loose_list_content_loop))
+
+ parsers.TightListItem = function(starter)
+ return -parsers.ThematicBreak
+ * parsers.add_indent(starter, "li")
+ * parsers.indented_content_tight
+ end
+
+ parsers.LooseListItem = function(starter)
+ return -parsers.ThematicBreak
+ * parsers.add_indent(starter, "li")
+ * parsers.indented_content_loose
+ * remove_indent("li")
+ end
+
+ parsers.BulletListOfType = function(bullet_type)
+ local bullet = parsers.bullet(bullet_type)
+ return ( Ct( parsers.TightListItem(bullet)
+ * ( (parsers.check_minimal_indent / "")
+ * parsers.TightListItem(bullet)
+ )^0
+ )
+ * Cc(true)
+ * -#( (parsers.list_blank^0 / "")
+ * parsers.check_minimal_indent
+ * (bullet - parsers.ThematicBreak)
+ )
+ + Ct( parsers.LooseListItem(bullet)
+ * ( (parsers.list_blank^0 / "")
+ * (parsers.check_minimal_indent / "")
+ * parsers.LooseListItem(bullet)
+ )^0
+ )
+ * Cc(false)
+ ) / writer.bulletlist
+ end
+
+ parsers.BulletList = parsers.BulletListOfType(parsers.dash)
+ + parsers.BulletListOfType(parsers.asterisk)
+ + parsers.BulletListOfType(parsers.plus)
+
+ local function ordered_list(items,tight,starter)
+ local startnum = starter[2][1]
+ if options.startNumber then
+ startnum = tonumber(startnum) or 1 -- fallback for '#'
+ if startnum ~= nil then
+ startnum = math.floor(startnum)
+ end
+ else
+ startnum = nil
+ end
+ return writer.orderedlist(items,tight,startnum)
+ end
+
+ parsers.OrderedListOfType = function(delimiter_type)
+ local enumerator = parsers.enumerator(delimiter_type)
+ return Cg(enumerator, "listtype")
+ * (Ct( parsers.TightListItem(Cb("listtype"))
+ * ( (parsers.check_minimal_indent / "")
+ * parsers.TightListItem(enumerator))^0)
+ * Cc(true)
+ * -#((parsers.list_blank^0 / "")
+ * parsers.check_minimal_indent * enumerator)
+ + Ct( parsers.LooseListItem(Cb("listtype"))
+ * ((parsers.list_blank^0 / "")
+ * (parsers.check_minimal_indent / "")
+ * parsers.LooseListItem(enumerator))^0)
+ * Cc(false)
+ ) * Ct(Cb("listtype")) / ordered_list
+ end
+
+ parsers.OrderedList = parsers.OrderedListOfType(parsers.period)
+ + parsers.OrderedListOfType(parsers.rparent)
+ parsers.Blank = parsers.blankline / ""
+ + V("Reference")
+ function parsers.parse_heading_text(s)
+ local inlines = self.parser_functions.parse_inlines(s)
+ local flatten_inlines = self.writer.flatten_inlines
+ self.writer.flatten_inlines = true
+ local flat_text = self.parser_functions.parse_inlines(s)
+ flat_text = util.rope_to_string(flat_text)
+ self.writer.flatten_inlines = flatten_inlines
+ return {flat_text, inlines}
+ end
+
+ -- parse atx header
+ parsers.AtxHeading = parsers.check_trail_no_rem
+ * Cg(parsers.heading_start, "level")
+ * ((C( parsers.optionalspace
+ * parsers.hash^0
+ * parsers.optionalspace
+ * parsers.newline)
+ + parsers.spacechar^1
+ * C(parsers.line))
+ / strip_atx_end
+ / parsers.parse_heading_text)
+ * Cb("level")
+ / writer.heading
+
+ parsers.heading_line = parsers.linechar^1
+ - parsers.thematic_break_lines
+
+ parsers.heading_text = parsers.heading_line
+ * ( (V("Endline") / "\n")
+ * ( parsers.heading_line
+ - parsers.heading_level))^0
+ * parsers.newline^-1
+
+ parsers.SetextHeading = parsers.freeze_trail
+ * parsers.check_trail_no_rem
+ * #( parsers.heading_text
+ * parsers.check_minimal_indent
+ * parsers.check_trail
+ * parsers.heading_level)
+ * Cs(parsers.heading_text)
+ / parsers.parse_heading_text
+ * parsers.check_minimal_indent_and_trail
+ * parsers.heading_level
+ * parsers.newline
+ * parsers.unfreeze_trail
+ / writer.heading
+
+ parsers.Heading = parsers.AtxHeading + parsers.SetextHeading
+ function self.finalize_grammar(extensions)
+ local walkable_syntax = (function(global_walkable_syntax)
+ local local_walkable_syntax = {}
+ for lhs, rule in pairs(global_walkable_syntax) do
+ local_walkable_syntax[lhs] = util.table_copy(rule)
+ end
+ return local_walkable_syntax
+ end)(walkable_syntax)
+ local current_extension_name = nil
+ self.insert_pattern = function(selector, pattern, pattern_name)
+ assert(pattern_name == nil or type(pattern_name) == "string")
+ local _, _, lhs, pos, rhs
+ = selector:find("^(%a+)%s+([%a%s]+%a+)%s+(%a+)$")
+ assert(lhs ~= nil,
+ [[Expected selector in form ]]
+ .. [["LHS (before|after|instead of) RHS", not "]]
+ .. selector .. [["]])
+ assert(walkable_syntax[lhs] ~= nil,
+ [[Rule ]] .. lhs
+ .. [[ -> ... does not exist in markdown grammar]])
+ assert(pos == "before" or pos == "after" or pos == "instead of",
+ [[Expected positional specifier "before", "after", ]]
+ .. [[or "instead of", not "]]
+ .. pos .. [["]])
+ local rule = walkable_syntax[lhs]
+ local index = nil
+ for current_index, current_rhs in ipairs(rule) do
+ if type(current_rhs) == "string" and current_rhs == rhs then
+ index = current_index
+ if pos == "after" then
+ index = index + 1
+ end
+ break
+ end
+ end
+ assert(index ~= nil,
+ [[Rule ]] .. lhs .. [[ -> ]] .. rhs
+ .. [[ does not exist in markdown grammar]])
+ local accountable_pattern
+ if current_extension_name then
+ accountable_pattern
+ = {pattern, current_extension_name, pattern_name}
+ else
+ assert(type(pattern) == "string",
+ [[reader->insert_pattern() was called outside ]]
+ .. [[an extension with ]]
+ .. [[a PEG pattern instead of a rule name]])
+ accountable_pattern = pattern
+ end
+ if pos == "instead of" then
+ rule[index] = accountable_pattern
+ else
+ table.insert(rule, index, accountable_pattern)
+ end
+ end
+ local syntax =
+ { "Blocks",
+
+ Blocks = V("InitializeState")
+ * V("ExpectedJekyllData")
+ * V("Blank")^0
+ * ( V("Block")
+ * ( V("Blank")^0 * parsers.eof
+ + ( V("Blank")^2 / writer.paragraphsep
+ + V("Blank")^0 / writer.interblocksep
+ )
+ )
+ + ( V("Paragraph") + V("Plain") )
+ * ( V("Blank")^0 * parsers.eof
+ + ( V("Blank")^2 / writer.paragraphsep
+ + V("Blank")^0 / writer.interblocksep
+ )
+ )
+ * V("Block")
+ * ( V("Blank")^0 * parsers.eof
+ + ( V("Blank")^2 / writer.paragraphsep
+ + V("Blank")^0 / writer.interblocksep
+ )
+ )
+ + ( V("Paragraph") + V("Plain") )
+ * ( V("Blank")^0 * parsers.eof
+ + V("Blank")^0 / writer.paragraphsep
+ )
+ )^0,
+
+ ExpectedJekyllData = parsers.succeed,
+
+ Blank = parsers.Blank,
+ Reference = parsers.Reference,
+
+ Blockquote = parsers.Blockquote,
+ Verbatim = parsers.Verbatim,
+ ThematicBreak = parsers.ThematicBreak,
+ BulletList = parsers.BulletList,
+ OrderedList = parsers.OrderedList,
+ DisplayHtml = parsers.DisplayHtml,
+ Heading = parsers.Heading,
+ Paragraph = parsers.Paragraph,
+ Plain = parsers.Plain,
+
+ ListStarter = parsers.ListStarter,
+ EndlineExceptions = parsers.EndlineExceptions,
+ NoSoftLineBreakEndlineExceptions
+ = parsers.NoSoftLineBreakEndlineExceptions,
+
+ Str = parsers.Str,
+ Space = parsers.Space,
+ NoSoftLineBreakSpace
+ = parsers.NoSoftLineBreakSpace,
+ OptionalIndent = parsers.OptionalIndent,
+ Endline = parsers.Endline,
+ EndlineNoSub = parsers.EndlineNoSub,
+ NoSoftLineBreakEndline
+ = parsers.NoSoftLineBreakEndline,
+ EndlineBreak = parsers.EndlineBreak,
+ LinkAndEmph = parsers.LinkAndEmph,
+ Code = parsers.Code,
+ AutoLinkUrl = parsers.AutoLinkUrl,
+ AutoLinkEmail = parsers.AutoLinkEmail,
+ AutoLinkRelativeReference
+ = parsers.AutoLinkRelativeReference,
+ InlineHtml = parsers.InlineHtml,
+ HtmlEntity = parsers.HtmlEntity,
+ EscapedChar = parsers.EscapedChar,
+ Smart = parsers.Smart,
+ Symbol = parsers.Symbol,
+ SpecialChar = parsers.fail,
+ InitializeState = parsers.succeed,
+ }
+ self.update_rule = function(rule_name, get_pattern)
+ assert(current_extension_name ~= nil)
+ assert(syntax[rule_name] ~= nil,
+ [[Rule ]] .. rule_name
+ .. [[ -> ... does not exist in markdown grammar]])
+ local previous_pattern
+ local extension_name
+ if walkable_syntax[rule_name] then
+ local previous_accountable_pattern
+ = walkable_syntax[rule_name][1]
+ previous_pattern = previous_accountable_pattern[1]
+ extension_name
+ = previous_accountable_pattern[2]
+ .. ", " .. current_extension_name
+ else
+ previous_pattern = nil
+ extension_name = current_extension_name
+ end
+ local pattern
+ if type(get_pattern) == "function" then
+ pattern = get_pattern(previous_pattern)
+ else
+ assert(previous_pattern == nil,
+ [[Rule ]] .. rule_name ..
+ [[ has already been updated by ]] .. extension_name)
+ pattern = get_pattern
+ end
+ local accountable_pattern = { pattern, extension_name, rule_name }
+ walkable_syntax[rule_name] = { accountable_pattern }
+ end
+ local special_characters = {}
+ self.add_special_character = function(c)
+ table.insert(special_characters, c)
+ syntax.SpecialChar = S(table.concat(special_characters, ""))
+ end
+
+ self.add_special_character("*")
+ self.add_special_character("[")
+ self.add_special_character("]")
+ self.add_special_character("<")
+ self.add_special_character("!")
+ self.add_special_character("\\")
+ self.initialize_named_group = function(name, value)
+ local pattern = Ct("")
+ if value ~= nil then
+ pattern = pattern / value
+ end
+ syntax.InitializeState = syntax.InitializeState
+ * Cg(pattern, name)
+ end
+ self.initialize_named_group("indent_info")
+ for _, extension in ipairs(extensions) do
+ current_extension_name = extension.name
+ extension.extend_writer(writer)
+ extension.extend_reader(self)
+ end
+ current_extension_name = nil
+ if options.debugExtensions then
+ local sorted_lhs = {}
+ for lhs, _ in pairs(walkable_syntax) do
+ table.insert(sorted_lhs, lhs)
+ end
+ table.sort(sorted_lhs)
+
+ local output_lines = {"{"}
+ for lhs_index, lhs in ipairs(sorted_lhs) do
+ local encoded_lhs = util.encode_json_string(lhs)
+ table.insert(output_lines, [[ ]] ..encoded_lhs .. [[: []])
+ local rule = walkable_syntax[lhs]
+ for rhs_index, rhs in ipairs(rule) do
+ local human_readable_rhs
+ if type(rhs) == "string" then
+ human_readable_rhs = rhs
+ else
+ local pattern_name
+ if rhs[3] then
+ pattern_name = rhs[3]
+ else
+ pattern_name = "Anonymous Pattern"
+ end
+ local extension_name = rhs[2]
+ human_readable_rhs = pattern_name .. [[ (]]
+ .. extension_name .. [[)]]
+ end
+ local encoded_rhs
+ = util.encode_json_string(human_readable_rhs)
+ local output_line = [[ ]] .. encoded_rhs
+ if rhs_index < #rule then
+ output_line = output_line .. ","
+ end
+ table.insert(output_lines, output_line)
+ end
+ local output_line = " ]"
+ if lhs_index < #sorted_lhs then
+ output_line = output_line .. ","
+ end
+ table.insert(output_lines, output_line)
+ end
+ table.insert(output_lines, "}")
+
+ local output = table.concat(output_lines, "\n")
+ local output_filename = options.debugExtensionsFileName
+ local output_file = assert(io.open(output_filename, "w"),
+ [[Could not open file "]] .. output_filename
+ .. [[" for writing]])
+ assert(output_file:write(output))
+ assert(output_file:close())
+ end
+ for lhs, rule in pairs(walkable_syntax) do
+ syntax[lhs] = parsers.fail
+ for _, rhs in ipairs(rule) do
+ local pattern
+ if type(rhs) == "string" then
+ pattern = V(rhs)
+ else
+ pattern = rhs[1]
+ if type(pattern) == "string" then
+ pattern = V(pattern)
+ end
+ end
+ syntax[lhs] = syntax[lhs] + pattern
+ end
+ end
+ if options.underscores then
+ self.add_special_character("_")
+ end
+
+ if not options.codeSpans then
+ syntax.Code = parsers.fail
+ else
+ self.add_special_character("`")
+ end
+
+ if not options.html then
+ syntax.DisplayHtml = parsers.fail
+ syntax.InlineHtml = parsers.fail
+ syntax.HtmlEntity = parsers.fail
+ else
+ self.add_special_character("&")
+ end
+
+ if options.preserveTabs then
+ options.stripIndent = false
+ end
+
+ if not options.smartEllipses then
+ syntax.Smart = parsers.fail
+ else
+ self.add_special_character(".")
+ end
+
+ if not options.relativeReferences then
+ syntax.AutoLinkRelativeReference = parsers.fail
+ end
+
+ if options.contentLevel == "inline" then
+ syntax[1] = "Inlines"
+ syntax.Inlines = V("InitializeState")
+ * parsers.Inline^0
+ * ( parsers.spacing^0
+ * parsers.eof / "")
+ syntax.Space = parsers.Space + parsers.blankline / writer.space
+ end
+
+ local blocks_nested_t = util.table_copy(syntax)
+ blocks_nested_t.ExpectedJekyllData = parsers.succeed
+ parsers.blocks_nested = Ct(blocks_nested_t)
+
+ parsers.blocks = Ct(syntax)
+
+ local inlines_t = util.table_copy(syntax)
+ inlines_t[1] = "Inlines"
+ inlines_t.Inlines = V("InitializeState")
+ * parsers.Inline^0
+ * ( parsers.spacing^0
+ * parsers.eof / "")
+ parsers.inlines = Ct(inlines_t)
+
+ local inlines_no_inline_note_t = util.table_copy(inlines_t)
+ inlines_no_inline_note_t.InlineNote = parsers.fail
+ parsers.inlines_no_inline_note = Ct(inlines_no_inline_note_t)
+
+ local inlines_no_html_t = util.table_copy(inlines_t)
+ inlines_no_html_t.DisplayHtml = parsers.fail
+ inlines_no_html_t.InlineHtml = parsers.fail
+ inlines_no_html_t.HtmlEntity = parsers.fail
+ parsers.inlines_no_html = Ct(inlines_no_html_t)
+
+ local inlines_nbsp_t = util.table_copy(inlines_t)
+ inlines_nbsp_t.Endline = parsers.NonbreakingEndline
+ inlines_nbsp_t.Space = parsers.NonbreakingSpace
+ parsers.inlines_nbsp = Ct(inlines_nbsp_t)
+
+ local inlines_no_link_or_emphasis_t = util.table_copy(inlines_t)
+ inlines_no_link_or_emphasis_t.LinkAndEmph = parsers.fail
+ inlines_no_link_or_emphasis_t.EndlineExceptions
+ = parsers.EndlineExceptions - parsers.eof
+ parsers.inlines_no_link_or_emphasis
+ = Ct(inlines_no_link_or_emphasis_t)
+ return function(input)
+ if options.unicodeNormalization then
+ local form = options.unicodeNormalizationForm
+ if form == "nfc" then
+ input = uni_algos.normalize.NFC(input)
+ elseif form == "nfd" then
+ input = uni_algos.normalize.NFD(input)
+ elseif form == "nfkc" then
+ input = uni_algos.normalize.NFKC(input)
+ elseif form == "nfkd" then
+ input = uni_algos.normalize.NFKD(input)
+ else
+ return writer.error(
+ format("Unknown normalization form %s.", form))
+ end
+ end
+ input = input:gsub("\r\n?", "\n")
+ if input:sub(-1) ~= "\n" then
+ input = input .. "\n"
+ end
+ references = {}
+ local document = self.parser_functions.parse_blocks(input)
+ local output = util.rope_to_string(writer.document(document))
+ local undosep_start, undosep_end
+ local potential_secend_start, secend_start
+ local potential_sep_start, sep_start
+ while true do
+ -- find a `writer->undosep`
+ undosep_start, undosep_end
+ = output:find(writer.undosep_text, 1, true)
+ if undosep_start == nil then break end
+ -- skip any preceding section ends
+ secend_start = undosep_start
+ while true do
+ potential_secend_start = secend_start - #writer.secend_text
+ if potential_secend_start < 1
+ or output:sub(potential_secend_start,
+ secend_start - 1) ~= writer.secend_text
+ then
+ break
+ end
+ secend_start = potential_secend_start
+ end
+ -- find an immediately preceding
+ -- block element / paragraph separator
+ sep_start = secend_start
+ potential_sep_start = sep_start - #writer.interblocksep_text
+ if potential_sep_start >= 1
+ and output:sub(potential_sep_start,
+ sep_start - 1) == writer.interblocksep_text
+ then
+ sep_start = potential_sep_start
+ else
+ potential_sep_start = sep_start - #writer.paragraphsep_text
+ if potential_sep_start >= 1
+ and output:sub(potential_sep_start,
+ sep_start - 1) == writer.paragraphsep_text
+ then
+ sep_start = potential_sep_start
+ end
+ end
+ -- remove `writer->undosep` and immediately preceding
+ -- block element / paragraph separator
+ output = output:sub(1, sep_start - 1)
+ .. output:sub(secend_start, undosep_start - 1)
+ .. output:sub(undosep_end + 1)
+ end
+ return output
+ end
+ end
+ return self
+end
+M.extensions = {}
+M.extensions.bracketed_spans = function()
+ return {
+ name = "built-in bracketed_spans syntax extension",
+ extend_writer = function(self)
+ function self.span(s, attr)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererBracketedSpanAttributeContextBegin",
+ self.attributes(attr),
+ s,
+ "\\markdownRendererBracketedSpanAttributeContextEnd{}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local span_label = parsers.lbracket
+ * (Cs((parsers.alphanumeric^1
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + ( parsers.backslash * parsers.backslash)
+ + ( parsers.backslash
+ * (parsers.lbracket + parsers.rbracket)
+ + V("Space") + V("Endline")
+ + (parsers.any
+ - ( parsers.newline
+ + parsers.lbracket
+ + parsers.rbracket
+ + parsers.blankline^2))))^1)
+ / self.parser_functions.parse_inlines)
+ * parsers.rbracket
+
+ local Span = span_label
+ * Ct(parsers.attributes)
+ / writer.span
+
+ self.insert_pattern("Inline before LinkAndEmph",
+ Span, "Span")
+ end
+ }
+end
+M.extensions.citations = function(citation_nbsps)
+ return {
+ name = "built-in citations syntax extension",
+ extend_writer = function(self)
+ function self.citations(text_cites, cites)
+ local buffer = {}
+ if self.flatten_inlines then
+ for _,cite in ipairs(cites) do
+ if cite.prenote then
+ table.insert(buffer, {cite.prenote, " "})
+ end
+ table.insert(buffer, cite.name)
+ if cite.postnote then
+ table.insert(buffer, {" ", cite.postnote})
+ end
+ end
+ else
+ table.insert(buffer,
+ {"\\markdownRenderer",
+ text_cites and "TextCite" or "Cite",
+ "{", #cites, "}"})
+ for _,cite in ipairs(cites) do
+ table.insert(buffer,
+ {cite.suppress_author and "-" or "+", "{",
+ cite.prenote or "", "}{",
+ cite.postnote or "", "}{", cite.name, "}"})
+ end
+ end
+ return buffer
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local citation_chars
+ = parsers.alphanumeric
+ + S("#$%&-+<>~/_")
+
+ local citation_name
+ = Cs(parsers.dash^-1) * parsers.at
+ * Cs(citation_chars
+ * ((( citation_chars
+ + parsers.internal_punctuation
+ - parsers.comma - parsers.semicolon)
+ * -#(( parsers.internal_punctuation
+ - parsers.comma
+ - parsers.semicolon)^0
+ * -( citation_chars
+ + parsers.internal_punctuation
+ - parsers.comma
+ - parsers.semicolon)))^0
+ * citation_chars)^-1)
+
+ local citation_body_prenote
+ = Cs((parsers.alphanumeric^1
+ + parsers.bracketed
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + V("Space") + V("EndlineNoSub")
+ + (parsers.anyescaped
+ - ( parsers.newline
+ + parsers.rbracket
+ + parsers.blankline^2))
+ - ( parsers.spnl
+ * parsers.dash^-1
+ * parsers.at))^1)
+
+ local citation_body_postnote
+ = Cs((parsers.alphanumeric^1
+ + parsers.bracketed
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + V("Space") + V("EndlineNoSub")
+ + (parsers.anyescaped
+ - ( parsers.newline
+ + parsers.rbracket
+ + parsers.semicolon
+ + parsers.blankline^2))
+ - (parsers.spnl * parsers.rbracket))^1)
+
+ local citation_body_chunk
+ = ( citation_body_prenote
+ * parsers.spnlc_sep
+ + Cc("")
+ * parsers.spnlc
+ )
+ * citation_name
+ * ( parsers.internal_punctuation
+ - parsers.semicolon)^-1
+ * ( parsers.spnlc / function(_) return end
+ * citation_body_postnote
+ + Cc("")
+ * parsers.spnlc
+ )
+
+ local citation_body
+ = citation_body_chunk
+ * ( parsers.semicolon
+ * parsers.spnlc
+ * citation_body_chunk
+ )^0
+
+ local citation_headless_body_postnote
+ = Cs((parsers.alphanumeric^1
+ + parsers.bracketed
+ + parsers.inticks
+ + parsers.autolink
+ + V("InlineHtml")
+ + V("Space") + V("Endline")
+ + (parsers.anyescaped
+ - ( parsers.newline
+ + parsers.rbracket
+ + parsers.at
+ + parsers.semicolon + parsers.blankline^2))
+ - (parsers.spnl * parsers.rbracket))^0)
+
+ local citation_headless_body
+ = citation_headless_body_postnote
+ * ( parsers.semicolon
+ * parsers.spnlc
+ * citation_body_chunk
+ )^0
+
+ local citations
+ = function(text_cites, raw_cites)
+ local function normalize(str)
+ if str == "" then
+ str = nil
+ else
+ str = (citation_nbsps and
+ self.parser_functions.parse_inlines_nbsp or
+ self.parser_functions.parse_inlines)(str)
+ end
+ return str
+ end
+
+ local cites = {}
+ for i = 1,#raw_cites,4 do
+ cites[#cites+1] = {
+ prenote = normalize(raw_cites[i]),
+ suppress_author = raw_cites[i+1] == "-",
+ name = writer.identifier(raw_cites[i+2]),
+ postnote = normalize(raw_cites[i+3]),
+ }
+ end
+ return writer.citations(text_cites, cites)
+ end
+
+ local TextCitations
+ = Ct((parsers.spnlc
+ * Cc("")
+ * citation_name
+ * ((parsers.spnlc
+ * parsers.lbracket
+ * citation_headless_body
+ * parsers.rbracket) + Cc("")))^1)
+ / function(raw_cites)
+ return citations(true, raw_cites)
+ end
+
+ local ParenthesizedCitations
+ = Ct((parsers.spnlc
+ * parsers.lbracket
+ * citation_body
+ * parsers.rbracket)^1)
+ / function(raw_cites)
+ return citations(false, raw_cites)
+ end
+
+ local Citations = TextCitations + ParenthesizedCitations
+
+ self.insert_pattern("Inline before LinkAndEmph",
+ Citations, "Citations")
+
+ self.add_special_character("@")
+ self.add_special_character("-")
+ end
+ }
+end
+M.extensions.content_blocks = function(language_map)
+ local languages_json = (function()
+ local base, prev, curr
+ for _, pathname in ipairs{kpse.lookup(language_map,
+ {all=true})} do
+ local file = io.open(pathname, "r")
+ if not file then goto continue end
+ local input = assert(file:read("*a"))
+ assert(file:close())
+ local json = input:gsub('("[^\n]-"):','[%1]=')
+ curr = load("_ENV = {}; return "..json)()
+ if type(curr) == "table" then
+ if base == nil then
+ base = curr
+ else
+ setmetatable(prev, { __index = curr })
+ end
+ prev = curr
+ end
+ ::continue::
+ end
+ return base or {}
+ end)()
+
+ return {
+ name = "built-in content_blocks syntax extension",
+ extend_writer = function(self)
+ function self.contentblock(src,suf,type,tit)
+ if not self.is_writing then return "" end
+ src = src.."."..suf
+ suf = suf:lower()
+ if type == "onlineimage" then
+ return {"\\markdownRendererContentBlockOnlineImage{",suf,"}",
+ "{",self.string(src),"}",
+ "{",self.uri(src),"}",
+ "{",self.string(tit or ""),"}"}
+ elseif languages_json[suf] then
+ return {"\\markdownRendererContentBlockCode{",suf,"}",
+ "{",self.string(languages_json[suf]),"}",
+ "{",self.string(src),"}",
+ "{",self.uri(src),"}",
+ "{",self.string(tit or ""),"}"}
+ else
+ return {"\\markdownRendererContentBlock{",suf,"}",
+ "{",self.string(src),"}",
+ "{",self.uri(src),"}",
+ "{",self.string(tit or ""),"}"}
+ end
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local contentblock_tail
+ = parsers.optionaltitle
+ * (parsers.newline + parsers.eof)
+
+ -- case insensitive online image suffix:
+ local onlineimagesuffix
+ = (function(...)
+ local parser = nil
+ for _, suffix in ipairs({...}) do
+ local pattern=nil
+ for i=1,#suffix do
+ local char=suffix:sub(i,i)
+ char = S(char:lower()..char:upper())
+ if pattern == nil then
+ pattern = char
+ else
+ pattern = pattern * char
+ end
+ end
+ if parser == nil then
+ parser = pattern
+ else
+ parser = parser + pattern
+ end
+ end
+ return parser
+ end)("png", "jpg", "jpeg", "gif", "tif", "tiff")
+
+ -- online image url for iA Writer content blocks with
+ -- mandatory suffix, allowing nested brackets:
+ local onlineimageurl
+ = (parsers.less
+ * Cs((parsers.anyescaped
+ - parsers.more
+ - parsers.spacing
+ - #(parsers.period
+ * onlineimagesuffix
+ * parsers.more
+ * contentblock_tail))^0)
+ * parsers.period
+ * Cs(onlineimagesuffix)
+ * parsers.more
+ + (Cs((parsers.inparens
+ + (parsers.anyescaped
+ - parsers.spacing
+ - parsers.rparent
+ - #(parsers.period
+ * onlineimagesuffix
+ * contentblock_tail)))^0)
+ * parsers.period
+ * Cs(onlineimagesuffix))
+ ) * Cc("onlineimage")
+
+ -- filename for iA Writer content blocks with mandatory suffix:
+ local localfilepath
+ = parsers.slash
+ * Cs((parsers.anyescaped
+ - parsers.tab
+ - parsers.newline
+ - #(parsers.period
+ * parsers.alphanumeric^1
+ * contentblock_tail))^1)
+ * parsers.period
+ * Cs(parsers.alphanumeric^1)
+ * Cc("localfile")
+
+ local ContentBlock
+ = parsers.check_trail_no_rem
+ * (localfilepath + onlineimageurl)
+ * contentblock_tail
+ / writer.contentblock
+
+ self.insert_pattern("Block before Blockquote",
+ ContentBlock, "ContentBlock")
+ end
+ }
+end
+M.extensions.definition_lists = function(tight_lists)
+ return {
+ name = "built-in definition_lists syntax extension",
+ extend_writer = function(self)
+ local function dlitem(term, defs)
+ local retVal = {"\\markdownRendererDlItem{",term,"}"}
+ for _, def in ipairs(defs) do
+ retVal[#retVal+1]
+ = {"\\markdownRendererDlDefinitionBegin ",def,
+ "\\markdownRendererDlDefinitionEnd "}
+ end
+ retVal[#retVal+1] = "\\markdownRendererDlItemEnd "
+ return retVal
+ end
+
+ function self.definitionlist(items,tight)
+ if not self.is_writing then return "" end
+ local buffer = {}
+ for _,item in ipairs(items) do
+ buffer[#buffer + 1] = dlitem(item.term, item.definitions)
+ end
+ if tight and tight_lists then
+ return {"\\markdownRendererDlBeginTight\n", buffer,
+ "\n\\markdownRendererDlEndTight"}
+ else
+ return {"\\markdownRendererDlBegin\n", buffer,
+ "\n\\markdownRendererDlEnd"}
+ end
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local defstartchar = S("~:")
+
+ local defstart
+ = parsers.check_trail_length(0) * defstartchar
+ * #parsers.spacing
+ * (parsers.tab + parsers.space^-3)
+ + parsers.check_trail_length(1)
+ * defstartchar * #parsers.spacing
+ * (parsers.tab + parsers.space^-2)
+ + parsers.check_trail_length(2)
+ * defstartchar * #parsers.spacing
+ * (parsers.tab + parsers.space^-1)
+ + parsers.check_trail_length(3)
+ * defstartchar * #parsers.spacing
+
+ local indented_line
+ = (parsers.check_minimal_indent / "")
+ * parsers.check_code_trail * parsers.line
+
+ local blank
+ = parsers.check_minimal_blank_indent_and_any_trail
+ * parsers.optionalspace * parsers.newline
+
+ local dlchunk = Cs(parsers.line * (indented_line - blank)^0)
+
+ local indented_blocks = function(bl)
+ return Cs( bl
+ * (blank^1 * (parsers.check_minimal_indent / "")
+ * parsers.check_code_trail * -parsers.blankline * bl)^0
+ * (blank^1 + parsers.eof))
+ end
+
+ local function definition_list_item(term, defs, _)
+ return { term = self.parser_functions.parse_inlines(term),
+ definitions = defs }
+ end
+
+ local DefinitionListItemLoose
+ = C(parsers.line) * blank^0
+ * Ct((parsers.check_minimal_indent * (defstart
+ * indented_blocks(dlchunk)
+ / self.parser_functions.parse_blocks_nested))^1)
+ * Cc(false) / definition_list_item
+
+ local DefinitionListItemTight
+ = C(parsers.line)
+ * Ct((parsers.check_minimal_indent * (defstart * dlchunk
+ / self.parser_functions.parse_blocks_nested))^1)
+ * Cc(true) / definition_list_item
+
+ local DefinitionList
+ = ( Ct(DefinitionListItemLoose^1) * Cc(false)
+ + Ct(DefinitionListItemTight^1)
+ * (blank^0
+ * -DefinitionListItemLoose * Cc(true))
+ ) / writer.definitionlist
+
+ self.insert_pattern("Block after Heading",
+ DefinitionList, "DefinitionList")
+ end
+ }
+end
+M.extensions.fancy_lists = function()
+ return {
+ name = "built-in fancy_lists syntax extension",
+ extend_writer = function(self)
+ local options = self.options
+
+ function self.fancylist(items,tight,startnum,numstyle,numdelim)
+ if not self.is_writing then return "" end
+ local buffer = {}
+ local num = startnum
+ for _,item in ipairs(items) do
+ if item ~= "" then
+ buffer[#buffer + 1] = self.fancyitem(item,num)
+ end
+ if num ~= nil and item ~= "" then
+ num = num + 1
+ end
+ end
+ local contents = util.intersperse(buffer,"\n")
+ if tight and options.tightLists then
+ return {"\\markdownRendererFancyOlBeginTight{",
+ numstyle,"}{",numdelim,"}",contents,
+ "\n\\markdownRendererFancyOlEndTight "}
+ else
+ return {"\\markdownRendererFancyOlBegin{",
+ numstyle,"}{",numdelim,"}",contents,
+ "\n\\markdownRendererFancyOlEnd "}
+ end
+ end
+ function self.fancyitem(s,num)
+ if num ~= nil then
+ return {"\\markdownRendererFancyOlItemWithNumber{",num,"}",s,
+ "\\markdownRendererFancyOlItemEnd "}
+ else
+ return {"\\markdownRendererFancyOlItem ",s,
+ "\\markdownRendererFancyOlItemEnd "}
+ end
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local options = self.options
+ local writer = self.writer
+
+ local function combine_markers_and_delims(markers, delims)
+ local markers_table = {}
+ for _,marker in ipairs(markers) do
+ local start_marker
+ local continuation_marker
+ if type(marker) == "table" then
+ start_marker = marker[1]
+ continuation_marker = marker[2]
+ else
+ start_marker = marker
+ continuation_marker = marker
+ end
+ for _,delim in ipairs(delims) do
+ table.insert(markers_table,
+ {start_marker, continuation_marker, delim})
+ end
+ end
+ return markers_table
+ end
+
+ local function join_table_with_func(func, markers_table)
+ local pattern = func(table.unpack(markers_table[1]))
+ for i = 2, #markers_table do
+ pattern = pattern + func(table.unpack(markers_table[i]))
+ end
+ return pattern
+ end
+
+ local lowercase_letter_marker = R("az")
+ local uppercase_letter_marker = R("AZ")
+
+ local roman_marker = function(chars)
+ local m, d, c = P(chars[1]), P(chars[2]), P(chars[3])
+ local l, x, v, i
+ = P(chars[4]), P(chars[5]), P(chars[6]), P(chars[7])
+ return m^-3
+ * (c*m + c*d + d^-1 * c^-3)
+ * (x*c + x*l + l^-1 * x^-3)
+ * (i*x + i*v + v^-1 * i^-3)
+ end
+
+ local lowercase_roman_marker
+ = roman_marker({"m", "d", "c", "l", "x", "v", "i"})
+ local uppercase_roman_marker
+ = roman_marker({"M", "D", "C", "L", "X", "V", "I"})
+
+ local lowercase_opening_roman_marker = P("i")
+ local uppercase_opening_roman_marker = P("I")
+
+ local digit_marker = parsers.dig * parsers.dig^-8
+
+ local markers = {
+ {lowercase_opening_roman_marker, lowercase_roman_marker},
+ {uppercase_opening_roman_marker, uppercase_roman_marker},
+ lowercase_letter_marker,
+ uppercase_letter_marker,
+ lowercase_roman_marker,
+ uppercase_roman_marker,
+ digit_marker
+ }
+
+ local delims = {
+ parsers.period,
+ parsers.rparent
+ }
+
+ local markers_table = combine_markers_and_delims(markers, delims)
+
+ local function enumerator(start_marker, _,
+ delimiter_type, interrupting)
+ local delimiter_range
+ local allowed_end
+ if interrupting then
+ delimiter_range = P("1")
+ allowed_end = C(parsers.spacechar^1) * #parsers.linechar
+ else
+ delimiter_range = start_marker
+ allowed_end = C(parsers.spacechar^1)
+ + #(parsers.newline + parsers.eof)
+ end
+
+ return parsers.check_trail
+ * Ct(C(delimiter_range) * C(delimiter_type))
+ * allowed_end
+ end
+
+ local starter = join_table_with_func(enumerator, markers_table)
+
+ local TightListItem = function(starter)
+ return parsers.add_indent(starter, "li")
+ * parsers.indented_content_tight
+ end
+
+ local LooseListItem = function(starter)
+ return parsers.add_indent(starter, "li")
+ * parsers.indented_content_loose
+ * remove_indent("li")
+ end
+
+ local function roman2number(roman)
+ local romans = { ["M"] = 1000, ["D"] = 500, ["C"] = 100,
+ ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 }
+ local numeral = 0
+
+ local i = 1
+ local len = string.len(roman)
+ while i < len do
+ local z1, z2 = romans[ string.sub(roman, i, i) ],
+ romans[ string.sub(roman, i+1, i+1) ]
+ if z1 < z2 then
+ numeral = numeral + (z2 - z1)
+ i = i + 2
+ else
+ numeral = numeral + z1
+ i = i + 1
+ end
+ end
+ if i <= len then
+ numeral = numeral + romans[ string.sub(roman,i,i) ]
+ end
+ return numeral
+ end
+
+ local function sniffstyle(numstr, delimend)
+ local numdelim
+ if delimend == ")" then
+ numdelim = "OneParen"
+ elseif delimend == "." then
+ numdelim = "Period"
+ else
+ numdelim = "Default"
+ end
+
+ local num
+ num = numstr:match("^([I])$")
+ if num then
+ return roman2number(num), "UpperRoman", numdelim
+ end
+ num = numstr:match("^([i])$")
+ if num then
+ return roman2number(string.upper(num)), "LowerRoman", numdelim
+ end
+ num = numstr:match("^([A-Z])$")
+ if num then
+ return string.byte(num) - string.byte("A") + 1,
+ "UpperAlpha", numdelim
+ end
+ num = numstr:match("^([a-z])$")
+ if num then
+ return string.byte(num) - string.byte("a") + 1,
+ "LowerAlpha", numdelim
+ end
+ num = numstr:match("^([IVXLCDM]+)")
+ if num then
+ return roman2number(num), "UpperRoman", numdelim
+ end
+ num = numstr:match("^([ivxlcdm]+)")
+ if num then
+ return roman2number(string.upper(num)), "LowerRoman", numdelim
+ end
+ return math.floor(tonumber(numstr) or 1), "Decimal", numdelim
+ end
+
+ local function fancylist(items,tight,start)
+ local startnum, numstyle, numdelim
+ = sniffstyle(start[2][1], start[2][2])
+ return writer.fancylist(items,tight,
+ options.startNumber and startnum or 1,
+ numstyle or "Decimal",
+ numdelim or "Default")
+ end
+
+ local FancyListOfType
+ = function(start_marker, continuation_marker, delimiter_type)
+ local enumerator_start
+ = enumerator(start_marker, continuation_marker,
+ delimiter_type)
+ local enumerator_cont
+ = enumerator(continuation_marker, continuation_marker,
+ delimiter_type)
+ return Cg(enumerator_start, "listtype")
+ * (Ct( TightListItem(Cb("listtype"))
+ * ((parsers.check_minimal_indent / "")
+ * TightListItem(enumerator_cont))^0)
+ * Cc(true)
+ * -#((parsers.conditionally_indented_blankline^0 / "")
+ * parsers.check_minimal_indent * enumerator_cont)
+ + Ct( LooseListItem(Cb("listtype"))
+ * ((parsers.conditionally_indented_blankline^0 / "")
+ * (parsers.check_minimal_indent / "")
+ * LooseListItem(enumerator_cont))^0)
+ * Cc(false)
+ ) * Ct(Cb("listtype")) / fancylist
+ end
+
+ local FancyList
+ = join_table_with_func(FancyListOfType, markers_table)
+
+ local ListStarter = starter
+
+ self.update_rule("OrderedList", FancyList)
+ self.update_rule("ListStarter", ListStarter)
+ end
+ }
+end
+M.extensions.fenced_code = function(blank_before_code_fence,
+ allow_attributes,
+ allow_raw_blocks)
+ return {
+ name = "built-in fenced_code syntax extension",
+ extend_writer = function(self)
+ local options = self.options
+
+ function self.fencedCode(s, i, attr)
+ if not self.is_writing then return "" end
+ s = s:gsub("\n$", "")
+ local buf = {}
+ if attr ~= nil then
+ table.insert(buf,
+ {"\\markdownRendererFencedCodeAttributeContextBegin",
+ self.attributes(attr)})
+ end
+ local name = util.cache_verbatim(options.cacheDir, s)
+ table.insert(buf,
+ {"\\markdownRendererInputFencedCode{",
+ name,"}{",self.string(i),"}{",self.infostring(i),"}"})
+ if attr ~= nil then
+ table.insert(buf,
+ "\\markdownRendererFencedCodeAttributeContextEnd{}")
+ end
+ return buf
+ end
+
+ if allow_raw_blocks then
+ function self.rawBlock(s, attr)
+ if not self.is_writing then return "" end
+ s = s:gsub("\n$", "")
+ local name = util.cache_verbatim(options.cacheDir, s)
+ return {"\\markdownRendererInputRawBlock{",
+ name,"}{", self.string(attr),"}"}
+ end
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local function captures_geq_length(_,i,a,b)
+ return #a >= #b and i
+ end
+
+ local function strip_enclosing_whitespaces(str)
+ return str:gsub("^%s*(.-)%s*$", "%1")
+ end
+
+ local tilde_infostring = Cs(Cs((V("HtmlEntity")
+ + parsers.anyescaped
+ - parsers.newline)^0)
+ / strip_enclosing_whitespaces)
+
+ local backtick_infostring
+ = Cs( Cs((V("HtmlEntity")
+ + ( -#(parsers.backslash * parsers.backtick)
+ * parsers.anyescaped)
+ - parsers.newline
+ - parsers.backtick)^0)
+ / strip_enclosing_whitespaces)
+
+ local fenceindent
+
+ local function has_trail(indent_table)
+ return indent_table ~= nil and
+ indent_table.trail ~= nil and
+ next(indent_table.trail) ~= nil
+ end
+
+ local function has_indents(indent_table)
+ return indent_table ~= nil and
+ indent_table.indents ~= nil and
+ next(indent_table.indents) ~= nil
+ end
+
+ local function get_last_indent_name(indent_table)
+ if has_indents(indent_table) then
+ return indent_table.indents[#indent_table.indents].name
+ end
+ end
+
+ local count_fenced_start_indent =
+ function(_, _, indent_table, trail)
+ local last_indent_name = get_last_indent_name(indent_table)
+ fenceindent = 0
+ if last_indent_name ~= "li" then
+ fenceindent = #trail
+ end
+ return true
+ end
+
+ local fencehead = function(char, infostring)
+ return Cmt( Cb("indent_info")
+ * parsers.check_trail, count_fenced_start_indent)
+ * Cg(char^3, "fencelength")
+ * parsers.optionalspace
+ * infostring
+ * (parsers.newline + parsers.eof)
+ end
+
+ local fencetail = function(char)
+ return parsers.check_trail_no_rem
+ * Cmt(C(char^3) * Cb("fencelength"), captures_geq_length)
+ * parsers.optionalspace * (parsers.newline + parsers.eof)
+ + parsers.eof
+ end
+
+ local process_fenced_line =
+ function(s, i, -- luacheck: ignore s i
+ indent_table, line_content, is_blank)
+ local remainder = ""
+ if has_trail(indent_table) then
+ remainder = indent_table.trail.internal_remainder
+ end
+
+ if is_blank
+ and get_last_indent_name(indent_table) == "li" then
+ remainder = ""
+ end
+
+ local str = remainder .. line_content
+ local index = 1
+ local remaining = fenceindent
+
+ while true do
+ local c = str:sub(index, index)
+ if c == " " and remaining > 0 then
+ remaining = remaining - 1
+ index = index + 1
+ elseif c == "\t" and remaining > 3 then
+ remaining = remaining - 4
+ index = index + 1
+ else
+ break
+ end
+ end
+
+ return true, str:sub(index)
+ end
+
+ local fencedline = function(char)
+ return Cmt( Cb("indent_info")
+ * C(parsers.line - fencetail(char))
+ * Cc(false), process_fenced_line)
+ end
+
+ local blankfencedline
+ = Cmt( Cb("indent_info")
+ * C(parsers.blankline)
+ * Cc(true), process_fenced_line)
+
+ local TildeFencedCode
+ = fencehead(parsers.tilde, tilde_infostring)
+ * Cs(( (parsers.check_minimal_blank_indent / "")
+ * blankfencedline
+ + ( parsers.check_minimal_indent / "")
+ * fencedline(parsers.tilde))^0)
+ * ( (parsers.check_minimal_indent / "")
+ * fencetail(parsers.tilde) + parsers.succeed)
+
+ local BacktickFencedCode
+ = fencehead(parsers.backtick, backtick_infostring)
+ * Cs(( (parsers.check_minimal_blank_indent / "")
+ * blankfencedline
+ + (parsers.check_minimal_indent / "")
+ * fencedline(parsers.backtick))^0)
+ * ( (parsers.check_minimal_indent / "")
+ * fencetail(parsers.backtick) + parsers.succeed)
+
+ local infostring_with_attributes
+ = Ct(C((parsers.linechar
+ - ( parsers.optionalspace
+ * parsers.attributes))^0)
+ * parsers.optionalspace
+ * Ct(parsers.attributes))
+
+ local FencedCode
+ = ((TildeFencedCode + BacktickFencedCode)
+ / function(infostring, code)
+ local expanded_code = self.expandtabs(code)
+
+ if allow_raw_blocks then
+ local raw_attr = lpeg.match(parsers.raw_attribute,
+ infostring)
+ if raw_attr then
+ return writer.rawBlock(expanded_code, raw_attr)
+ end
+ end
+
+ local attr = nil
+ if allow_attributes then
+ local match = lpeg.match(infostring_with_attributes,
+ infostring)
+ if match then
+ infostring, attr = table.unpack(match)
+ end
+ end
+ return writer.fencedCode(expanded_code, infostring, attr)
+ end)
+
+ self.insert_pattern("Block after Verbatim",
+ FencedCode, "FencedCode")
+
+ local fencestart
+ if blank_before_code_fence then
+ fencestart = parsers.fail
+ else
+ fencestart = fencehead(parsers.backtick, backtick_infostring)
+ + fencehead(parsers.tilde, tilde_infostring)
+ end
+
+ self.update_rule("EndlineExceptions", function(previous_pattern)
+ if previous_pattern == nil then
+ previous_pattern = parsers.EndlineExceptions
+ end
+ return previous_pattern + fencestart
+ end)
+
+ self.add_special_character("`")
+ self.add_special_character("~")
+ end
+ }
+end
+M.extensions.fenced_divs = function(blank_before_div_fence)
+ return {
+ name = "built-in fenced_divs syntax extension",
+ extend_writer = function(self)
+ function self.div_begin(attributes)
+ local start_output
+ = {"\\markdownRendererFencedDivAttributeContextBegin\n",
+ self.attributes(attributes)}
+ local end_output
+ = {"\\markdownRendererFencedDivAttributeContextEnd{}"}
+ return self.push_attributes(
+ "div", attributes, start_output, end_output)
+ end
+ function self.div_end()
+ return self.pop_attributes("div")
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+ local fenced_div_infostring
+ = C((parsers.linechar
+ - ( parsers.spacechar^1
+ * parsers.colon^1))^1)
+
+ local fenced_div_begin = parsers.nonindentspace
+ * parsers.colon^3
+ * parsers.optionalspace
+ * fenced_div_infostring
+ * ( parsers.spacechar^1
+ * parsers.colon^1)^0
+ * parsers.optionalspace
+ * (parsers.newline + parsers.eof)
+
+ local fenced_div_end = parsers.nonindentspace
+ * parsers.colon^3
+ * parsers.optionalspace
+ * (parsers.newline + parsers.eof)
+ self.initialize_named_group("fenced_div_level", "0")
+ self.initialize_named_group("fenced_div_num_opening_indents")
+
+ local function increment_div_level()
+ local push_indent_table =
+ function(s, i, indent_table, -- luacheck: ignore s i
+ fenced_div_num_opening_indents, fenced_div_level)
+ fenced_div_level = tonumber(fenced_div_level) + 1
+ local num_opening_indents = 0
+ if indent_table.indents ~= nil then
+ num_opening_indents = #indent_table.indents
+ end
+ fenced_div_num_opening_indents[fenced_div_level]
+ = num_opening_indents
+ return true, fenced_div_num_opening_indents
+ end
+
+ local increment_level =
+ function(s, i, fenced_div_level) -- luacheck: ignore s i
+ fenced_div_level = tonumber(fenced_div_level) + 1
+ return true, tostring(fenced_div_level)
+ end
+
+ return Cg( Cmt( Cb("indent_info")
+ * Cb("fenced_div_num_opening_indents")
+ * Cb("fenced_div_level"), push_indent_table)
+ , "fenced_div_num_opening_indents")
+ * Cg( Cmt( Cb("fenced_div_level"), increment_level)
+ , "fenced_div_level")
+ end
+
+ local function decrement_div_level()
+ local pop_indent_table =
+ function(s, i, -- luacheck: ignore s i
+ fenced_div_indent_table, fenced_div_level)
+ fenced_div_level = tonumber(fenced_div_level)
+ fenced_div_indent_table[fenced_div_level] = nil
+ return true, tostring(fenced_div_level - 1)
+ end
+
+ return Cg( Cmt( Cb("fenced_div_num_opening_indents")
+ * Cb("fenced_div_level"), pop_indent_table)
+ , "fenced_div_level")
+ end
+
+ local non_fenced_div_block
+ = parsers.check_minimal_indent * V("Block")
+ - parsers.check_minimal_indent_and_trail * fenced_div_end
+
+ local non_fenced_div_paragraph
+ = parsers.check_minimal_indent * V("Paragraph")
+ - parsers.check_minimal_indent_and_trail * fenced_div_end
+
+ local blank = parsers.minimally_indented_blank
+
+ local block_separated = parsers.block_sep_group(blank)
+ * non_fenced_div_block
+
+ local loop_body_pair
+ = parsers.create_loop_body_pair(block_separated,
+ non_fenced_div_paragraph,
+ parsers.block_sep_group(blank),
+ parsers.par_sep_group(blank))
+
+ local content_loop = ( non_fenced_div_block
+ * loop_body_pair.block^0
+ + non_fenced_div_paragraph
+ * block_separated
+ * loop_body_pair.block^0
+ + non_fenced_div_paragraph
+ * loop_body_pair.par^0)
+ * blank^0
+
+ local FencedDiv = fenced_div_begin
+ / function (infostring)
+ local attr
+ = lpeg.match(Ct(parsers.attributes),
+ infostring)
+ if attr == nil then
+ attr = {"." .. infostring}
+ end
+ return attr
+ end
+ / writer.div_begin
+ * increment_div_level()
+ * parsers.skipblanklines
+ * Ct(content_loop)
+ * parsers.minimally_indented_blank^0
+ * parsers.check_minimal_indent_and_trail
+ * fenced_div_end
+ * decrement_div_level()
+ * (Cc("") / writer.div_end)
+
+ self.insert_pattern("Block after Verbatim",
+ FencedDiv, "FencedDiv")
+
+ self.add_special_character(":")
+
+ local function is_inside_div()
+ local check_div_level =
+ function(s, i, fenced_div_level) -- luacheck: ignore s i
+ fenced_div_level = tonumber(fenced_div_level)
+ return fenced_div_level > 0
+ end
+
+ return Cmt(Cb("fenced_div_level"), check_div_level)
+ end
+
+ local function check_indent()
+ local compare_indent =
+ function(s, i, indent_table, -- luacheck: ignore s i
+ fenced_div_num_opening_indents, fenced_div_level)
+ fenced_div_level = tonumber(fenced_div_level)
+ local num_current_indents
+ = ( indent_table.current_line_indents ~= nil and
+ #indent_table.current_line_indents) or 0
+ local num_opening_indents
+ = fenced_div_num_opening_indents[fenced_div_level]
+ return num_current_indents == num_opening_indents
+ end
+
+ return Cmt( Cb("indent_info")
+ * Cb("fenced_div_num_opening_indents")
+ * Cb("fenced_div_level"), compare_indent)
+ end
+
+ local fencestart = is_inside_div()
+ * fenced_div_end
+ * check_indent()
+
+ if not blank_before_div_fence then
+ self.update_rule("EndlineExceptions", function(previous_pattern)
+ if previous_pattern == nil then
+ previous_pattern = parsers.EndlineExceptions
+ end
+ return previous_pattern + fencestart
+ end)
+ end
+ end
+ }
+end
+M.extensions.header_attributes = function()
+ return {
+ name = "built-in header_attributes syntax extension",
+ extend_writer = function()
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local function strip_atx_end(s)
+ return s:gsub("%s+#*%s*$","")
+ end
+
+ local AtxHeading = Cg(parsers.heading_start, "level")
+ * parsers.optionalspace
+ * (C(((parsers.linechar
+ - (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline))
+ * (parsers.linechar
+ - parsers.lbrace)^0)^1)
+ / strip_atx_end
+ / parsers.parse_heading_text)
+ * Cg(Ct(parsers.newline
+ + (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline)), "attributes")
+ * Cb("level")
+ * Cb("attributes")
+ / writer.heading
+
+ local function strip_trailing_spaces(s)
+ return s:gsub("%s*$","")
+ end
+
+ local heading_line = (parsers.linechar
+ - (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline))^1
+ - parsers.thematic_break_lines
+
+ local heading_text
+ = heading_line
+ * ( (V("Endline") / "\n")
+ * (heading_line - parsers.heading_level))^0
+ * parsers.newline^-1
+
+ local SetextHeading
+ = parsers.freeze_trail * parsers.check_trail_no_rem
+ * #(heading_text
+ * (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline)^-1
+ * parsers.check_minimal_indent
+ * parsers.check_trail
+ * parsers.heading_level)
+ * Cs(heading_text) / strip_trailing_spaces
+ / parsers.parse_heading_text
+ * Cg(Ct((parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline)^-1), "attributes")
+ * parsers.check_minimal_indent_and_trail * parsers.heading_level
+ * Cb("attributes")
+ * parsers.newline
+ * parsers.unfreeze_trail
+ / writer.heading
+
+ local Heading = AtxHeading + SetextHeading
+ self.update_rule("Heading", Heading)
+ end
+ }
+end
+M.extensions.inline_code_attributes = function()
+ return {
+ name = "built-in inline_code_attributes syntax extension",
+ extend_writer = function()
+ end, extend_reader = function(self)
+ local writer = self.writer
+
+ local CodeWithAttributes = parsers.inticks
+ * Ct(parsers.attributes)
+ / writer.code
+
+ self.insert_pattern("Inline before Code",
+ CodeWithAttributes,
+ "CodeWithAttributes")
+ end
+ }
+end
+M.extensions.line_blocks = function()
+ return {
+ name = "built-in line_blocks syntax extension",
+ extend_writer = function(self)
+ function self.lineblock(lines)
+ if not self.is_writing then return "" end
+ local buffer = {}
+ for i = 1, #lines - 1 do
+ buffer[#buffer + 1] = { lines[i], self.hard_line_break }
+ end
+ buffer[#buffer + 1] = lines[#lines]
+
+ return {"\\markdownRendererLineBlockBegin\n"
+ ,buffer,
+ "\n\\markdownRendererLineBlockEnd "}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local LineBlock
+ = Ct((Cs(( (parsers.pipe * parsers.space) / ""
+ * ((parsers.space)/entities.char_entity("nbsp"))^0
+ * parsers.linechar^0 * (parsers.newline/""))
+ * (-parsers.pipe
+ * (parsers.space^1/" ")
+ * parsers.linechar^1
+ * (parsers.newline/"")
+ )^0
+ * (parsers.blankline/"")^0)
+ / self.parser_functions.parse_inlines)^1)
+ / writer.lineblock
+
+ self.insert_pattern("Block after Blockquote",
+ LineBlock, "LineBlock")
+ end
+ }
+end
+M.extensions.mark = function()
+ return {
+ name = "built-in mark syntax extension",
+ extend_writer = function(self)
+ function self.mark(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererMark{", s, "}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local doubleequals = P("==")
+
+ local Mark
+ = parsers.between(V("Inline"), doubleequals, doubleequals)
+ / function (inlines) return writer.mark(inlines) end
+
+ self.add_special_character("=")
+ self.insert_pattern("Inline before LinkAndEmph",
+ Mark, "Mark")
+ end
+ }
+end
+M.extensions.link_attributes = function()
+ return {
+ name = "built-in link_attributes syntax extension",
+ extend_writer = function()
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local options = self.options
+
+ local define_reference_parser
+ = (parsers.check_trail / "")
+ * parsers.link_label
+ * parsers.colon
+ * parsers.spnlc * parsers.url
+ * ( parsers.spnlc_sep * parsers.title
+ * (parsers.spnlc * Ct(parsers.attributes))
+ * parsers.only_blank
+ + parsers.spnlc_sep * parsers.title * parsers.only_blank
+ + Cc("") * (parsers.spnlc * Ct(parsers.attributes))
+ * parsers.only_blank
+ + Cc("") * parsers.only_blank)
+
+ local ReferenceWithAttributes = define_reference_parser
+ / self.register_link
+
+ self.update_rule("Reference", ReferenceWithAttributes)
+
+
+ local LinkWithAttributesAndEmph
+ = Ct(parsers.link_and_emph_table * Cg(Cc(true),
+ "match_link_attributes"))
+ / self.defer_link_and_emphasis_processing
+
+ self.update_rule("LinkAndEmph", LinkWithAttributesAndEmph)
+
+ local AutoLinkUrlWithAttributes
+ = parsers.auto_link_url
+ * Ct(parsers.attributes)
+ / self.auto_link_url
+
+ self.insert_pattern("Inline before AutoLinkUrl",
+ AutoLinkUrlWithAttributes,
+ "AutoLinkUrlWithAttributes")
+
+ local AutoLinkEmailWithAttributes
+ = parsers.auto_link_email
+ * Ct(parsers.attributes)
+ / self.auto_link_email
+
+ self.insert_pattern("Inline before AutoLinkEmail",
+ AutoLinkEmailWithAttributes,
+ "AutoLinkEmailWithAttributes")
+
+ if options.relativeReferences then
+
+ local AutoLinkRelativeReferenceWithAttributes
+ = parsers.auto_link_relative_reference
+ * Ct(parsers.attributes)
+ / self.auto_link_url
+
+ self.insert_pattern(
+ "Inline before AutoLinkRelativeReference",
+ AutoLinkRelativeReferenceWithAttributes,
+ "AutoLinkRelativeReferenceWithAttributes")
+
+ end
+
+ end
+ }
+end
+M.extensions.notes = function(notes, inline_notes)
+ assert(notes or inline_notes)
+ return {
+ name = "built-in notes syntax extension",
+ extend_writer = function(self)
+ function self.note(s)
+ if self.flatten_inlines then return "" end
+ return {"\\markdownRendererNote{",s,"}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local rawnotes = parsers.rawnotes
+
+ if inline_notes then
+ local InlineNote
+ = parsers.circumflex
+ * ( parsers.link_label
+ / self.parser_functions.parse_inlines_no_inline_note)
+ / writer.note
+
+ self.insert_pattern("Inline after LinkAndEmph",
+ InlineNote, "InlineNote")
+ end
+ if notes then
+ local function strip_first_char(s)
+ return s:sub(2)
+ end
+
+ local RawNoteRef
+ = #(parsers.lbracket * parsers.circumflex)
+ * parsers.link_label / strip_first_char
+
+ -- like indirect_link
+ local function lookup_note(ref)
+ return writer.defer_call(function()
+ local found = rawnotes[self.normalize_tag(ref)]
+ if found then
+ return writer.note(
+ self.parser_functions.parse_blocks_nested(found))
+ else
+ return {"[",
+ self.parser_functions.parse_inlines("^" .. ref), "]"}
+ end
+ end)
+ end
+
+ local function register_note(ref,rawnote)
+ local normalized_tag = self.normalize_tag(ref)
+ if rawnotes[normalized_tag] == nil then
+ rawnotes[normalized_tag] = rawnote
+ end
+ return ""
+ end
+
+ local NoteRef = RawNoteRef / lookup_note
+
+ local optionally_indented_line
+ = parsers.check_optional_indent_and_any_trail * parsers.line
+
+ local blank
+ = parsers.check_optional_blank_indent_and_any_trail
+ * parsers.optionalspace * parsers.newline
+
+ local chunk
+ = Cs(parsers.line
+ * (optionally_indented_line - blank)^0)
+
+ local indented_blocks = function(bl)
+ return Cs( bl
+ * ( blank^1 * (parsers.check_optional_indent / "")
+ * parsers.check_code_trail
+ * -parsers.blankline * bl)^0)
+ end
+
+ local NoteBlock
+ = parsers.check_trail_no_rem
+ * RawNoteRef * parsers.colon
+ * parsers.spnlc * indented_blocks(chunk)
+ / register_note
+
+ local Reference = NoteBlock + parsers.Reference
+
+ self.update_rule("Reference", Reference)
+ self.insert_pattern("Inline before LinkAndEmph",
+ NoteRef, "NoteRef")
+ end
+
+ self.add_special_character("^")
+ end
+ }
+end
+M.extensions.pipe_tables = function(table_captions, table_attributes)
+
+ local function make_pipe_table_rectangular(rows)
+ local num_columns = #rows[2]
+ local rectangular_rows = {}
+ for i = 1, #rows do
+ local row = rows[i]
+ local rectangular_row = {}
+ for j = 1, num_columns do
+ rectangular_row[j] = row[j] or ""
+ end
+ table.insert(rectangular_rows, rectangular_row)
+ end
+ return rectangular_rows
+ end
+
+ local function pipe_table_row(allow_empty_first_column
+ , nonempty_column
+ , column_separator
+ , column)
+ local row_beginning
+ if allow_empty_first_column then
+ row_beginning = -- empty first column
+ #(parsers.spacechar^4
+ * column_separator)
+ * parsers.optionalspace
+ * column
+ * parsers.optionalspace
+ -- non-empty first column
+ + parsers.nonindentspace
+ * nonempty_column^-1
+ * parsers.optionalspace
+ else
+ row_beginning = parsers.nonindentspace
+ * nonempty_column^-1
+ * parsers.optionalspace
+ end
+
+ return Ct(row_beginning
+ * (-- single column with no leading pipes
+ #(column_separator
+ * parsers.optionalspace
+ * parsers.newline)
+ * column_separator
+ * parsers.optionalspace
+ -- single column with leading pipes or
+ -- more than a single column
+ + (column_separator
+ * parsers.optionalspace
+ * column
+ * parsers.optionalspace)^1
+ * (column_separator
+ * parsers.optionalspace)^-1))
+ end
+
+ return {
+ name = "built-in pipe_tables syntax extension",
+ extend_writer = function(self)
+ function self.table(rows, caption, attributes)
+ if not self.is_writing then return "" end
+ local buffer = {}
+ if attributes ~= nil then
+ table.insert(buffer,
+ "\\markdownRendererTableAttributeContextBegin\n")
+ table.insert(buffer, self.attributes(attributes))
+ end
+ table.insert(buffer,
+ {"\\markdownRendererTable{",
+ caption or "", "}{", #rows - 1, "}{",
+ #rows[1], "}"})
+ local temp = rows[2] -- put alignments on the first row
+ rows[2] = rows[1]
+ rows[1] = temp
+ for i, row in ipairs(rows) do
+ table.insert(buffer, "{")
+ for _, column in ipairs(row) do
+ if i > 1 then -- do not use braces for alignments
+ table.insert(buffer, "{")
+ end
+ table.insert(buffer, column)
+ if i > 1 then
+ table.insert(buffer, "}")
+ end
+ end
+ table.insert(buffer, "}")
+ end
+ if attributes ~= nil then
+ table.insert(buffer,
+ "\\markdownRendererTableAttributeContextEnd{}")
+ end
+ return buffer
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local table_hline_separator = parsers.pipe + parsers.plus
+
+ local table_hline_column = (parsers.dash
+ - #(parsers.dash
+ * (parsers.spacechar
+ + table_hline_separator
+ + parsers.newline)))^1
+ * (parsers.colon * Cc("r")
+ + parsers.dash * Cc("d"))
+ + parsers.colon
+ * (parsers.dash
+ - #(parsers.dash
+ * (parsers.spacechar
+ + table_hline_separator
+ + parsers.newline)))^1
+ * (parsers.colon * Cc("c")
+ + parsers.dash * Cc("l"))
+
+ local table_hline = pipe_table_row(false
+ , table_hline_column
+ , table_hline_separator
+ , table_hline_column)
+
+ local table_caption_beginning
+ = ( parsers.check_minimal_blank_indent_and_any_trail_no_rem
+ * parsers.optionalspace * parsers.newline)^0
+ * parsers.check_minimal_indent_and_trail
+ * (P("Table")^-1 * parsers.colon)
+ * parsers.optionalspace
+
+ local function strip_trailing_spaces(s)
+ return s:gsub("%s*$","")
+ end
+
+ local table_row
+ = pipe_table_row(true
+ , (C((parsers.linechar - parsers.pipe)^1)
+ / strip_trailing_spaces
+ / self.parser_functions.parse_inlines)
+ , parsers.pipe
+ , (C((parsers.linechar - parsers.pipe)^0)
+ / strip_trailing_spaces
+ / self.parser_functions.parse_inlines))
+
+ local table_caption
+ if table_captions then
+ table_caption = #table_caption_beginning
+ * table_caption_beginning
+ if table_attributes then
+ table_caption = table_caption
+ * (C(((( parsers.linechar
+ - (parsers.attributes
+ * parsers.optionalspace
+ * parsers.newline
+ * -#( parsers.optionalspace
+ * parsers.linechar)))
+ + ( parsers.newline
+ * #( parsers.optionalspace
+ * parsers.linechar)
+ * C(parsers.optionalspace)
+ / writer.space))
+ * (parsers.linechar
+ - parsers.lbrace)^0)^1)
+ / self.parser_functions.parse_inlines)
+ * (parsers.newline
+ + ( Ct(parsers.attributes)
+ * parsers.optionalspace
+ * parsers.newline))
+ else
+ table_caption = table_caption
+ * C(( parsers.linechar
+ + ( parsers.newline
+ * #( parsers.optionalspace
+ * parsers.linechar)
+ * C(parsers.optionalspace)
+ / writer.space))^1)
+ / self.parser_functions.parse_inlines
+ * parsers.newline
+ end
+ else
+ table_caption = parsers.fail
+ end
+
+ local PipeTable
+ = Ct( table_row * parsers.newline
+ * (parsers.check_minimal_indent_and_trail / {})
+ * table_hline * parsers.newline
+ * ( (parsers.check_minimal_indent / {})
+ * table_row * parsers.newline)^0)
+ / make_pipe_table_rectangular
+ * table_caption^-1
+ / writer.table
+
+ self.insert_pattern("Block after Blockquote",
+ PipeTable, "PipeTable")
+ end
+ }
+end
+M.extensions.raw_inline = function()
+ return {
+ name = "built-in raw_inline syntax extension",
+ extend_writer = function(self)
+ local options = self.options
+
+ function self.rawInline(s, attr)
+ if not self.is_writing then return "" end
+ if self.flatten_inlines then return s end
+ local name = util.cache_verbatim(options.cacheDir, s)
+ return {"\\markdownRendererInputRawInline{",
+ name,"}{", self.string(attr),"}"}
+ end
+ end, extend_reader = function(self)
+ local writer = self.writer
+
+ local RawInline = parsers.inticks
+ * parsers.raw_attribute
+ / writer.rawInline
+
+ self.insert_pattern("Inline before Code",
+ RawInline, "RawInline")
+ end
+ }
+end
+M.extensions.strike_through = function()
+ return {
+ name = "built-in strike_through syntax extension",
+ extend_writer = function(self)
+ function self.strike_through(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererStrikeThrough{",s,"}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local StrikeThrough = (
+ parsers.between(parsers.Inline, parsers.doubletildes,
+ parsers.doubletildes)
+ ) / writer.strike_through
+
+ self.insert_pattern("Inline after LinkAndEmph",
+ StrikeThrough, "StrikeThrough")
+
+ self.add_special_character("~")
+ end
+ }
+end
+M.extensions.subscripts = function()
+ return {
+ name = "built-in subscripts syntax extension",
+ extend_writer = function(self)
+ function self.subscript(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererSubscript{",s,"}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local Subscript = (
+ parsers.between(parsers.Str, parsers.tilde, parsers.tilde)
+ ) / writer.subscript
+
+ self.insert_pattern("Inline after LinkAndEmph",
+ Subscript, "Subscript")
+
+ self.add_special_character("~")
+ end
+ }
+end
+M.extensions.superscripts = function()
+ return {
+ name = "built-in superscripts syntax extension",
+ extend_writer = function(self)
+ function self.superscript(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererSuperscript{",s,"}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local Superscript = (
+ parsers.between(parsers.Str, parsers.circumflex,
+ parsers.circumflex)
+ ) / writer.superscript
+
+ self.insert_pattern("Inline after LinkAndEmph",
+ Superscript, "Superscript")
+
+ self.add_special_character("^")
+ end
+ }
+end
+M.extensions.tex_math = function(tex_math_dollars,
+ tex_math_single_backslash,
+ tex_math_double_backslash)
+ return {
+ name = "built-in tex_math syntax extension",
+ extend_writer = function(self)
+ function self.display_math(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererDisplayMath{",self.math(s),"}"}
+ end
+ function self.inline_math(s)
+ if self.flatten_inlines then return s end
+ return {"\\markdownRendererInlineMath{",self.math(s),"}"}
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local function between(p, starter, ender)
+ return (starter * Cs(p * (p - ender)^0) * ender)
+ end
+
+ local function strip_preceding_whitespaces(str)
+ return str:gsub("^%s*(.-)$", "%1")
+ end
+
+ local allowed_before_closing
+ = B( parsers.backslash * parsers.any
+ + parsers.any * (parsers.any - parsers.backslash))
+
+ local allowed_before_closing_no_space
+ = B( parsers.backslash * parsers.any
+ + parsers.any * (parsers.nonspacechar - parsers.backslash))
+
+ local dollar_math_content
+ = (parsers.newline * (parsers.check_optional_indent / "")
+ + parsers.backslash^-1
+ * parsers.linechar)
+ - parsers.blankline^2
+ - parsers.dollar
+
+ local inline_math_opening_dollars = parsers.dollar
+ * #(parsers.nonspacechar)
+
+ local inline_math_closing_dollars
+ = allowed_before_closing_no_space
+ * parsers.dollar
+ * -#(parsers.digit)
+
+ local inline_math_dollars = between(Cs( dollar_math_content),
+ inline_math_opening_dollars,
+ inline_math_closing_dollars)
+
+ local display_math_opening_dollars = parsers.dollar
+ * parsers.dollar
+
+ local display_math_closing_dollars = parsers.dollar
+ * parsers.dollar
+
+ local display_math_dollars = between(Cs( dollar_math_content),
+ display_math_opening_dollars,
+ display_math_closing_dollars)
+ local backslash_math_content
+ = (parsers.newline * (parsers.check_optional_indent / "")
+ + parsers.linechar)
+ - parsers.blankline^2
+ local inline_math_opening_double = parsers.backslash
+ * parsers.backslash
+ * parsers.lparent
+
+ local inline_math_closing_double = allowed_before_closing
+ * parsers.spacechar^0
+ * parsers.backslash
+ * parsers.backslash
+ * parsers.rparent
+
+ local inline_math_double = between(Cs( backslash_math_content),
+ inline_math_opening_double,
+ inline_math_closing_double)
+ / strip_preceding_whitespaces
+
+ local display_math_opening_double = parsers.backslash
+ * parsers.backslash
+ * parsers.lbracket
+
+ local display_math_closing_double = allowed_before_closing
+ * parsers.spacechar^0
+ * parsers.backslash
+ * parsers.backslash
+ * parsers.rbracket
+
+ local display_math_double = between(Cs( backslash_math_content),
+ display_math_opening_double,
+ display_math_closing_double)
+ / strip_preceding_whitespaces
+ local inline_math_opening_single = parsers.backslash
+ * parsers.lparent
+
+ local inline_math_closing_single = allowed_before_closing
+ * parsers.spacechar^0
+ * parsers.backslash
+ * parsers.rparent
+
+ local inline_math_single = between(Cs( backslash_math_content),
+ inline_math_opening_single,
+ inline_math_closing_single)
+ / strip_preceding_whitespaces
+
+ local display_math_opening_single = parsers.backslash
+ * parsers.lbracket
+
+ local display_math_closing_single = allowed_before_closing
+ * parsers.spacechar^0
+ * parsers.backslash
+ * parsers.rbracket
+
+ local display_math_single = between(Cs( backslash_math_content),
+ display_math_opening_single,
+ display_math_closing_single)
+ / strip_preceding_whitespaces
+
+ local display_math = parsers.fail
+
+ local inline_math = parsers.fail
+
+ if tex_math_dollars then
+ display_math = display_math + display_math_dollars
+ inline_math = inline_math + inline_math_dollars
+ end
+
+ if tex_math_double_backslash then
+ display_math = display_math + display_math_double
+ inline_math = inline_math + inline_math_double
+ end
+
+ if tex_math_single_backslash then
+ display_math = display_math + display_math_single
+ inline_math = inline_math + inline_math_single
+ end
+
+ local TexMath = display_math / writer.display_math
+ + inline_math / writer.inline_math
+
+ self.insert_pattern("Inline after LinkAndEmph",
+ TexMath, "TexMath")
+
+ if tex_math_dollars then
+ self.add_special_character("$")
+ end
+
+ if tex_math_single_backslash or tex_math_double_backslash then
+ self.add_special_character("\\")
+ self.add_special_character("[")
+ self.add_special_character("]")
+ self.add_special_character(")")
+ self.add_special_character("(")
+ end
+ end
+ }
+end
+M.extensions.jekyll_data = function(expect_jekyll_data,
+ ensure_jekyll_data)
+ return {
+ name = "built-in jekyll_data syntax extension",
+ extend_writer = function(self)
+ function self.jekyllData(d, t, p)
+ if not self.is_writing then return "" end
+
+ local buf = {}
+
+ local keys = {}
+ for k, _ in pairs(d) do
+ table.insert(keys, k)
+ end
+ table.sort(keys, function(first, second)
+ if type(first) ~= type(second) then
+ return type(first) < type(second)
+ else
+ return first < second
+ end
+ end)
+
+ if not p then
+ table.insert(buf, "\\markdownRendererJekyllDataBegin")
+ end
+
+ local is_sequence = false
+ if #d > 0 and #d == #keys then
+ for i=1, #d do
+ if d[i] == nil then
+ goto not_a_sequence
+ end
+ end
+ is_sequence = true
+ end
+ ::not_a_sequence::
+
+ if is_sequence then
+ table.insert(buf,
+ "\\markdownRendererJekyllDataSequenceBegin{")
+ table.insert(buf, self.identifier(p or "null"))
+ table.insert(buf, "}{")
+ table.insert(buf, #keys)
+ table.insert(buf, "}")
+ else
+ table.insert(buf, "\\markdownRendererJekyllDataMappingBegin{")
+ table.insert(buf, self.identifier(p or "null"))
+ table.insert(buf, "}{")
+ table.insert(buf, #keys)
+ table.insert(buf, "}")
+ end
+
+ for _, k in ipairs(keys) do
+ local v = d[k]
+ local typ = type(v)
+ k = tostring(k or "null")
+ if typ == "table" and next(v) ~= nil then
+ table.insert(
+ buf,
+ self.jekyllData(v, t, k)
+ )
+ else
+ k = self.identifier(k)
+ v = tostring(v)
+ if typ == "boolean" then
+ table.insert(buf, "\\markdownRendererJekyllDataBoolean{")
+ table.insert(buf, k)
+ table.insert(buf, "}{")
+ table.insert(buf, v)
+ table.insert(buf, "}")
+ elseif typ == "number" then
+ table.insert(buf, "\\markdownRendererJekyllDataNumber{")
+ table.insert(buf, k)
+ table.insert(buf, "}{")
+ table.insert(buf, v)
+ table.insert(buf, "}")
+ elseif typ == "string" then
+ table.insert(buf,
+ "\\markdownRendererJekyllDataProgrammaticString{")
+ table.insert(buf, k)
+ table.insert(buf, "}{")
+ table.insert(buf, self.identifier(v))
+ table.insert(buf, "}")
+ table.insert(buf,
+ "\\markdownRendererJekyllDataTypographicString{")
+ table.insert(buf, k)
+ table.insert(buf, "}{")
+ table.insert(buf, t(v))
+ table.insert(buf, "}")
+ elseif typ == "table" then
+ table.insert(buf, "\\markdownRendererJekyllDataEmpty{")
+ table.insert(buf, k)
+ table.insert(buf, "}")
+ else
+ local error = self.error(format(
+ "Unexpected type %s for value of "
+ .. "YAML key %s.", typ, k))
+ table.insert(buf, error)
+ end
+ end
+ end
+
+ if is_sequence then
+ table.insert(buf, "\\markdownRendererJekyllDataSequenceEnd")
+ else
+ table.insert(buf, "\\markdownRendererJekyllDataMappingEnd")
+ end
+
+ if not p then
+ table.insert(buf, "\\markdownRendererJekyllDataEnd")
+ end
+
+ return buf
+ end
+ end, extend_reader = function(self)
+ local parsers = self.parsers
+ local writer = self.writer
+
+ local JekyllData
+ = Cmt( C((parsers.line - P("---") - P("..."))^0)
+ , 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")
+ data = tinyyaml.parse(text, {timestamps=false})
+ end)
+ if ran_ok and data ~= nil then
+ return true, writer.jekyllData(data, function(s)
+ return self.parser_functions.parse_blocks_nested(s)
+ end, nil)
+ else
+ return false
+ end
+ end
+ )
+
+ local UnexpectedJekyllData
+ = P("---")
+ * parsers.blankline / 0
+ -- if followed by blank, it's thematic break
+ * #(-parsers.blankline)
+ * JekyllData
+ * (P("---") + P("..."))
+
+ local ExpectedJekyllData
+ = ( P("---")
+ * parsers.blankline / 0
+ -- if followed by blank, it's thematic break
+ * #(-parsers.blankline)
+ )^-1
+ * JekyllData
+ * (P("---") + P("..."))^-1
+
+ if ensure_jekyll_data then
+ ExpectedJekyllData = ExpectedJekyllData
+ * parsers.eof
+ else
+ ExpectedJekyllData = ( ExpectedJekyllData
+ * (V("Blank")^0 / writer.interblocksep)
+ )^-1
+ end
+
+ self.insert_pattern("Block before Blockquote",
+ UnexpectedJekyllData, "UnexpectedJekyllData")
+ if expect_jekyll_data then
+ self.update_rule("ExpectedJekyllData", ExpectedJekyllData)
+ end
+ end
+ }
+end
+function M.new(options)
+ options = options or {}
+ setmetatable(options, { __index = function (_, key)
+ return defaultOptions[key] end })
+ if options.singletonCache and singletonCache.convert then
+ for k, v in pairs(defaultOptions) do
+ if type(v) == "table" then
+ for i = 1, math.max(#singletonCache.options[k], #options[k]) do
+ if singletonCache.options[k][i] ~= options[k][i] then
+ goto miss
+ end
+ end
+ elseif k ~= "cacheDir"
+ and singletonCache.options[k] ~= options[k] then
+ goto miss
+ end
+ end
+ return singletonCache.convert
+ end
+ ::miss::
+ local extensions = {}
+
+ if options.bracketedSpans then
+ local bracketed_spans_extension = M.extensions.bracketed_spans()
+ table.insert(extensions, bracketed_spans_extension)
+ end
+
+ if options.contentBlocks then
+ local content_blocks_extension = M.extensions.content_blocks(
+ options.contentBlocksLanguageMap)
+ table.insert(extensions, content_blocks_extension)
+ end
+
+ if options.definitionLists then
+ local definition_lists_extension = M.extensions.definition_lists(
+ options.tightLists)
+ table.insert(extensions, definition_lists_extension)
+ end
+
+ if options.fencedCode then
+ local fenced_code_extension = M.extensions.fenced_code(
+ options.blankBeforeCodeFence,
+ options.fencedCodeAttributes,
+ options.rawAttribute)
+ table.insert(extensions, fenced_code_extension)
+ end
+
+ if options.fencedDivs then
+ local fenced_div_extension = M.extensions.fenced_divs(
+ options.blankBeforeDivFence)
+ table.insert(extensions, fenced_div_extension)
+ end
+
+ if options.headerAttributes then
+ local header_attributes_extension = M.extensions.header_attributes()
+ table.insert(extensions, header_attributes_extension)
+ end
+
+ if options.inlineCodeAttributes then
+ local inline_code_attributes_extension =
+ M.extensions.inline_code_attributes()
+ table.insert(extensions, inline_code_attributes_extension)
+ end
+
+ if options.jekyllData then
+ local jekyll_data_extension = M.extensions.jekyll_data(
+ options.expectJekyllData, options.ensureJekyllData)
+ table.insert(extensions, jekyll_data_extension)
+ end
+
+ if options.linkAttributes then
+ local link_attributes_extension =
+ M.extensions.link_attributes()
+ table.insert(extensions, link_attributes_extension)
+ end
+
+ if options.lineBlocks then
+ local line_block_extension = M.extensions.line_blocks()
+ table.insert(extensions, line_block_extension)
+ end
+
+ if options.mark then
+ local mark_extension = M.extensions.mark()
+ table.insert(extensions, mark_extension)
+ end
+
+ if options.pipeTables then
+ local pipe_tables_extension = M.extensions.pipe_tables(
+ options.tableCaptions, options.tableAttributes)
+ table.insert(extensions, pipe_tables_extension)
+ end
+
+ if options.rawAttribute then
+ local raw_inline_extension = M.extensions.raw_inline()
+ table.insert(extensions, raw_inline_extension)
+ end
+
+ if options.strikeThrough then
+ local strike_through_extension = M.extensions.strike_through()
+ table.insert(extensions, strike_through_extension)
+ end
+
+ if options.subscripts then
+ local subscript_extension = M.extensions.subscripts()
+ table.insert(extensions, subscript_extension)
+ end
+
+ if options.superscripts then
+ local superscript_extension = M.extensions.superscripts()
+ table.insert(extensions, superscript_extension)
+ end
+
+ if options.texMathDollars or
+ options.texMathSingleBackslash or
+ options.texMathDoubleBackslash then
+ local tex_math_extension = M.extensions.tex_math(
+ options.texMathDollars,
+ options.texMathSingleBackslash,
+ options.texMathDoubleBackslash)
+ table.insert(extensions, tex_math_extension)
+ end
+
+ if options.notes or options.inlineNotes then
+ local notes_extension = M.extensions.notes(
+ options.notes, options.inlineNotes)
+ table.insert(extensions, notes_extension)
+ end
+
+ if options.citations then
+ local citations_extension
+ = M.extensions.citations(options.citationNbsps)
+ table.insert(extensions, citations_extension)
+ end
+
+ if options.fancyLists then
+ local fancy_lists_extension = M.extensions.fancy_lists()
+ table.insert(extensions, fancy_lists_extension)
+ end
+ for _, user_extension_filename in ipairs(options.extensions) do
+ local user_extension = (function(filename)
+ local pathname = assert(kpse.find_file(filename),
+ [[Could not locate user-defined syntax extension "]]
+ .. filename)
+ local input_file = assert(io.open(pathname, "r"),
+ [[Could not open user-defined syntax extension "]]
+ .. pathname .. [[" for reading]])
+ local input = assert(input_file:read("*a"))
+ assert(input_file:close())
+ local user_extension, err = load([[
+ local sandbox = {}
+ setmetatable(sandbox, {__index = _G})
+ _ENV = sandbox
+ ]] .. input)()
+ assert(user_extension,
+ [[Failed to compile user-defined syntax extension "]]
+ .. pathname .. [[": ]] .. (err or [[]]))
+ assert(user_extension.api_version ~= nil,
+ [[User-defined syntax extension "]] .. pathname
+ .. [[" does not specify mandatory field "api_version"]])
+ assert(type(user_extension.api_version) == "number",
+ [[User-defined syntax extension "]] .. pathname
+ .. [[" specifies field "api_version" of type "]]
+ .. type(user_extension.api_version)
+ .. [[" but "number" was expected]])
+ assert(user_extension.api_version > 0
+ and user_extension.api_version
+ <= metadata.user_extension_api_version,
+ [[User-defined syntax extension "]] .. pathname
+ .. [[" uses syntax extension API version "]]
+ .. user_extension.api_version .. [[ but markdown.lua ]]
+ .. metadata.version .. [[ uses API version ]]
+ .. metadata.user_extension_api_version
+ .. [[, which is incompatible]])
+
+ assert(user_extension.grammar_version ~= nil,
+ [[User-defined syntax extension "]] .. pathname
+ .. [[" does not specify mandatory field "grammar_version"]])
+ assert(type(user_extension.grammar_version) == "number",
+ [[User-defined syntax extension "]] .. pathname
+ .. [[" specifies field "grammar_version" of type "]]
+ .. type(user_extension.grammar_version)
+ .. [[" but "number" was expected]])
+ assert(user_extension.grammar_version == metadata.grammar_version,
+ [[User-defined syntax extension "]] .. pathname
+ .. [[" uses grammar version "]]
+ .. user_extension.grammar_version
+ .. [[ but markdown.lua ]] .. metadata.version
+ .. [[ uses grammar version ]] .. metadata.grammar_version
+ .. [[, which is incompatible]])
+
+ assert(user_extension.finalize_grammar ~= nil,
+ [[User-defined syntax extension "]] .. pathname
+ .. [[" does not specify mandatory "finalize_grammar" field]])
+ assert(type(user_extension.finalize_grammar) == "function",
+ [[User-defined syntax extension "]] .. pathname
+ .. [[" specifies field "finalize_grammar" of type "]]
+ .. type(user_extension.finalize_grammar)
+ .. [[" but "function" was expected]])
+ local extension = {
+ name = [[user-defined "]] .. pathname .. [[" syntax extension]],
+ extend_reader = user_extension.finalize_grammar,
+ extend_writer = function() end,
+ }
+ return extension
+ end)(user_extension_filename)
+ table.insert(extensions, user_extension)
+ end
+ local writer = M.writer.new(options)
+ local reader = M.reader.new(writer, options)
+ local convert = reader.finalize_grammar(extensions)
+ collectgarbage("collect")
+ if options.singletonCache then
+ local singletonCacheOptions = {}
+ for k, v in pairs(options) do
+ singletonCacheOptions[k] = v
+ end
+ setmetatable(singletonCacheOptions,
+ { __index = function (_, key)
+ return defaultOptions[key] end })
+ singletonCache.options = singletonCacheOptions
+ singletonCache.convert = convert
+ end
+ return convert
+end
+return M
diff --git a/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua b/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua
index 36cef293ed9..25b351f7e40 100644
--- a/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown-tinyyaml.lua
@@ -253,7 +253,9 @@ function Parser:parsestring(line, stopper)
end
line = ssub(line, 2)
end
- return rtrim(buf), line
+ buf = rtrim(buf)
+ local val = tonumber(buf) or buf
+ return val, line
end
local function isemptyline(line)
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..df44b55fb9d
--- /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-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.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.8.1-0-gbbed72f3",
+ 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 S = lpeg.S
+-- luacheck: push no max line length
+M.punctuation[1] = S([[!]]) + S([["]]) + S([[#]]) + S([[$]]) + S([[%]]) + S([[&]]) + S([[']]) + S([[(]]) + S([[)]]) + S([[*]]) + S([[+]]) + S([[,]]) + S([[-]]) + S([[.]]) + S([[/]]) + S([[:]]) + S([[;]]) + S([[<]]) + S([[=]]) + S([[>]]) + S([[?]]) + S([[@]]) + S([[[]]) + S([[\]]) + S(']') + S([[^]]) + S([[_]]) + S([[`]]) + S([[{]]) + S([[|]]) + S([[}]]) + S([[~]])
+M.punctuation[2] = S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))
+M.punctuation[3] = S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]])))
+M.punctuation[4] = S([[]]) * (S([[]]) * (S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]))) + S([[]]) * (S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]])) + S([[]]) * (S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]) + S([[]]))))
+-- 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 f9154d8103b..a4eb534ef95 100644
--- a/Master/texmf-dist/tex/luatex/markdown/markdown.lua
+++ b/Master/texmf-dist/tex/luatex/markdown/markdown.lua
@@ -9,18 +9,18 @@
-- 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 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.
+-- 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-2024 Vít Starý Novotný
+-- 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.3
@@ -58,68 +58,22 @@
-- those in the standard .ins files.
--
local metadata = {
- version = "3.6.1-0-g5a45a922",
- comment = "A module for the conversion from markdown to plain TeX",
- author = "John MacFarlane, Hans Hagen, Vít Starý Novotný",
+ version = "3.8.1-0-gbbed72f3",
+ 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-2023 Vít Starý Novotný"},
+ "2016-2024 Vít Starý Novotný, Andrej Genčur"},
license = "LPPL 1.3c"
}
-if not modules then modules = { } end
-modules['markdown'] = metadata
-local lpeg = require("lpeg")
-local unicode = require("unicode")
-local md5 = require("md5");
-(function()
- local should_initialize = package.loaded.kpse == nil
- or tex.initialize ~= nil
- kpse = require("kpse")
- if should_initialize then
- kpse.set_program_name("luatex")
- end
-end)()
-local uni_algos = require("lua-uni-algos")
+local md5 = require("md5")
local M = {metadata = metadata}
-local walkable_syntax = {
- Block = {
- "Blockquote",
- "Verbatim",
- "ThematicBreak",
- "BulletList",
- "OrderedList",
- "DisplayHtml",
- "Heading",
- },
- BlockOrParagraph = {
- "Block",
- "Paragraph",
- "Plain",
- },
- Inline = {
- "Str",
- "Space",
- "Endline",
- "EndlineBreak",
- "LinkAndEmph",
- "Code",
- "AutoLinkUrl",
- "AutoLinkEmail",
- "AutoLinkRelativeReference",
- "InlineHtml",
- "HtmlEntity",
- "EscapedChar",
- "Smart",
- "Symbol",
- },
-}
local defaultOptions = {}
-defaultOptions.eagerCache = false
+defaultOptions.eagerCache = true
+defaultOptions.experimental = false
defaultOptions.singletonCache = true
-local singletonCache = {
- convert = nil,
- options = nil,
-}
defaultOptions.unicodeNormalization = true
defaultOptions.unicodeNormalizationForm = "nfc"
defaultOptions.cacheDir = "."
@@ -141,9 +95,8 @@ defaultOptions.contentBlocks = false
defaultOptions.contentLevel = "block"
defaultOptions.debugExtensions = false
defaultOptions.definitionLists = false
+defaultOptions.ensureJekyllData = false
defaultOptions.expectJekyllData = false
-metadata.user_extension_api_version = 2
-metadata.grammar_version = 4
defaultOptions.extensions = {}
defaultOptions.fancyLists = false
defaultOptions.fencedCode = true
@@ -184,21 +137,12 @@ defaultOptions.texMathDoubleBackslash = false
defaultOptions.texMathSingleBackslash = false
defaultOptions.tightLists = true
defaultOptions.underscores = true
-local upper, format, length =
- string.upper, string.format, string.len
-local P, R, S, V, C, Cg, Cb, Cmt, Cc, Ct, B, Cs, Cp, any =
- lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Cg, lpeg.Cb,
- lpeg.Cmt, lpeg.Cc, lpeg.Ct, lpeg.B, lpeg.Cs, lpeg.Cp, lpeg.P(1)
local util = {}
-function util.err(msg, exit_code)
- io.stderr:write("markdown.lua: " .. msg .. "\n")
- os.exit(exit_code or 1)
-end
function util.cache(dir, string, salt, transform, suffix)
local digest = md5.sumhexa(string .. (salt or ""))
local name = util.pathname(dir, digest .. suffix)
local file = io.open(name, "r")
- if file == nil then -- If no cache entry exists, then create a new one.
+ if file == nil then -- If no cache entry exists, create a new one.
file = assert(io.open(name, "w"),
[[Could not open file "]] .. name .. [[" for writing]])
local result = string
@@ -210,116 +154,6 @@ function util.cache(dir, string, salt, transform, suffix)
end
return name
end
-function util.cache_verbatim(dir, string)
- local name = util.cache(dir, string, nil, nil, ".verbatim")
- return name
-end
-function util.table_copy(t)
- local u = { }
- for k, v in pairs(t) do u[k] = v end
- return setmetatable(u, getmetatable(t))
-end
-function util.encode_json_string(s)
- s = s:gsub([[\]], [[\\]])
- s = s:gsub([["]], [[\"]])
- return [["]] .. s .. [["]]
-end
-function util.expand_tabs_in_line(s, tabstop)
- local tab = tabstop or 4
- local corr = 0
- return (s:gsub("()\t", function(p)
- local sp = tab - (p - 1 + corr) % tab
- corr = corr - 1 + sp
- return string.rep(" ", sp)
- end))
-end
-function util.walk(t, f)
- local typ = type(t)
- if typ == "string" then
- f(t)
- elseif typ == "table" then
- local i = 1
- local n
- n = t[i]
- while n do
- util.walk(n, f)
- i = i + 1
- n = t[i]
- end
- elseif typ == "function" then
- local ok, val = pcall(t)
- if ok then
- util.walk(val,f)
- end
- else
- f(tostring(t))
- end
-end
-function util.flatten(ary)
- local new = {}
- for _,v in ipairs(ary) do
- if type(v) == "table" then
- for _,w in ipairs(util.flatten(v)) do
- new[#new + 1] = w
- end
- else
- new[#new + 1] = v
- end
- end
- return new
-end
-function util.rope_to_string(rope)
- local buffer = {}
- util.walk(rope, function(x) buffer[#buffer + 1] = x end)
- return table.concat(buffer)
-end
-function util.rope_last(rope)
- if #rope == 0 then
- return nil
- else
- local l = rope[#rope]
- if type(l) == "table" then
- return util.rope_last(l)
- else
- return l
- end
- end
-end
-function util.intersperse(ary, x)
- local new = {}
- local l = #ary
- for i,v in ipairs(ary) do
- local n = #new
- new[n + 1] = v
- if i ~= l then
- new[n + 2] = x
- end
- end
- return new
-end
-function util.map(ary, f)
- local new = {}
- for i,v in ipairs(ary) do
- new[i] = f(v)
- end
- return new
-end
-function util.escaper(char_escapes, string_escapes)
- local char_escapes_list = ""
- for i,_ in pairs(char_escapes) do
- char_escapes_list = char_escapes_list .. i
- end
- local escapable = S(char_escapes_list) / char_escapes
- if string_escapes then
- for k,v in pairs(string_escapes) do
- escapable = P(k) / v + escapable
- end
- end
- local escape_string = Cs((escapable + any)^0)
- return function(s)
- return lpeg.match(escape_string, s)
- end
-end
function util.pathname(dir, file)
if #dir == 0 then
return file
@@ -327,8133 +161,69 @@ function util.pathname(dir, file)
return dir .. "/" .. file
end
end
-local entities = {}
-
-local character_entities = {
- ["Tab"] = 9,
- ["NewLine"] = 10,
- ["excl"] = 33,
- ["QUOT"] = 34,
- ["quot"] = 34,
- ["num"] = 35,
- ["dollar"] = 36,
- ["percnt"] = 37,
- ["AMP"] = 38,
- ["amp"] = 38,
- ["apos"] = 39,
- ["lpar"] = 40,
- ["rpar"] = 41,
- ["ast"] = 42,
- ["midast"] = 42,
- ["plus"] = 43,
- ["comma"] = 44,
- ["period"] = 46,
- ["sol"] = 47,
- ["colon"] = 58,
- ["semi"] = 59,
- ["LT"] = 60,
- ["lt"] = 60,
- ["nvlt"] = {60, 8402},
- ["bne"] = {61, 8421},
- ["equals"] = 61,
- ["GT"] = 62,
- ["gt"] = 62,
- ["nvgt"] = {62, 8402},
- ["quest"] = 63,
- ["commat"] = 64,
- ["lbrack"] = 91,
- ["lsqb"] = 91,
- ["bsol"] = 92,
- ["rbrack"] = 93,
- ["rsqb"] = 93,
- ["Hat"] = 94,
- ["UnderBar"] = 95,
- ["lowbar"] = 95,
- ["DiacriticalGrave"] = 96,
- ["grave"] = 96,
- ["fjlig"] = {102, 106},
- ["lbrace"] = 123,
- ["lcub"] = 123,
- ["VerticalLine"] = 124,
- ["verbar"] = 124,
- ["vert"] = 124,
- ["rbrace"] = 125,
- ["rcub"] = 125,
- ["NonBreakingSpace"] = 160,
- ["nbsp"] = 160,
- ["iexcl"] = 161,
- ["cent"] = 162,
- ["pound"] = 163,
- ["curren"] = 164,
- ["yen"] = 165,
- ["brvbar"] = 166,
- ["sect"] = 167,
- ["Dot"] = 168,
- ["DoubleDot"] = 168,
- ["die"] = 168,
- ["uml"] = 168,
- ["COPY"] = 169,
- ["copy"] = 169,
- ["ordf"] = 170,
- ["laquo"] = 171,
- ["not"] = 172,
- ["shy"] = 173,
- ["REG"] = 174,
- ["circledR"] = 174,
- ["reg"] = 174,
- ["macr"] = 175,
- ["strns"] = 175,
- ["deg"] = 176,
- ["PlusMinus"] = 177,
- ["plusmn"] = 177,
- ["pm"] = 177,
- ["sup2"] = 178,
- ["sup3"] = 179,
- ["DiacriticalAcute"] = 180,
- ["acute"] = 180,
- ["micro"] = 181,
- ["para"] = 182,
- ["CenterDot"] = 183,
- ["centerdot"] = 183,
- ["middot"] = 183,
- ["Cedilla"] = 184,
- ["cedil"] = 184,
- ["sup1"] = 185,
- ["ordm"] = 186,
- ["raquo"] = 187,
- ["frac14"] = 188,
- ["frac12"] = 189,
- ["half"] = 189,
- ["frac34"] = 190,
- ["iquest"] = 191,
- ["Agrave"] = 192,
- ["Aacute"] = 193,
- ["Acirc"] = 194,
- ["Atilde"] = 195,
- ["Auml"] = 196,
- ["Aring"] = 197,
- ["angst"] = 197,
- ["AElig"] = 198,
- ["Ccedil"] = 199,
- ["Egrave"] = 200,
- ["Eacute"] = 201,
- ["Ecirc"] = 202,
- ["Euml"] = 203,
- ["Igrave"] = 204,
- ["Iacute"] = 205,
- ["Icirc"] = 206,
- ["Iuml"] = 207,
- ["ETH"] = 208,
- ["Ntilde"] = 209,
- ["Ograve"] = 210,
- ["Oacute"] = 211,
- ["Ocirc"] = 212,
- ["Otilde"] = 213,
- ["Ouml"] = 214,
- ["times"] = 215,
- ["Oslash"] = 216,
- ["Ugrave"] = 217,
- ["Uacute"] = 218,
- ["Ucirc"] = 219,
- ["Uuml"] = 220,
- ["Yacute"] = 221,
- ["THORN"] = 222,
- ["szlig"] = 223,
- ["agrave"] = 224,
- ["aacute"] = 225,
- ["acirc"] = 226,
- ["atilde"] = 227,
- ["auml"] = 228,
- ["aring"] = 229,
- ["aelig"] = 230,
- ["ccedil"] = 231,
- ["egrave"] = 232,
- ["eacute"] = 233,
- ["ecirc"] = 234,
- ["euml"] = 235,
- ["igrave"] = 236,
- ["iacute"] = 237,
- ["icirc"] = 238,
- ["iuml"] = 239,
- ["eth"] = 240,
- ["ntilde"] = 241,
- ["ograve"] = 242,
- ["oacute"] = 243,
- ["ocirc"] = 244,
- ["otilde"] = 245,
- ["ouml"] = 246,
- ["div"] = 247,
- ["divide"] = 247,
- ["oslash"] = 248,
- ["ugrave"] = 249,
- ["uacute"] = 250,
- ["ucirc"] = 251,
- ["uuml"] = 252,
- ["yacute"] = 253,
- ["thorn"] = 254,
- ["yuml"] = 255,
- ["Amacr"] = 256,
- ["amacr"] = 257,
- ["Abreve"] = 258,
- ["abreve"] = 259,
- ["Aogon"] = 260,
- ["aogon"] = 261,
- ["Cacute"] = 262,
- ["cacute"] = 263,
- ["Ccirc"] = 264,
- ["ccirc"] = 265,
- ["Cdot"] = 266,
- ["cdot"] = 267,
- ["Ccaron"] = 268,
- ["ccaron"] = 269,
- ["Dcaron"] = 270,
- ["dcaron"] = 271,
- ["Dstrok"] = 272,
- ["dstrok"] = 273,
- ["Emacr"] = 274,
- ["emacr"] = 275,
- ["Edot"] = 278,
- ["edot"] = 279,
- ["Eogon"] = 280,
- ["eogon"] = 281,
- ["Ecaron"] = 282,
- ["ecaron"] = 283,
- ["Gcirc"] = 284,
- ["gcirc"] = 285,
- ["Gbreve"] = 286,
- ["gbreve"] = 287,
- ["Gdot"] = 288,
- ["gdot"] = 289,
- ["Gcedil"] = 290,
- ["Hcirc"] = 292,
- ["hcirc"] = 293,
- ["Hstrok"] = 294,
- ["hstrok"] = 295,
- ["Itilde"] = 296,
- ["itilde"] = 297,
- ["Imacr"] = 298,
- ["imacr"] = 299,
- ["Iogon"] = 302,
- ["iogon"] = 303,
- ["Idot"] = 304,
- ["imath"] = 305,
- ["inodot"] = 305,
- ["IJlig"] = 306,
- ["ijlig"] = 307,
- ["Jcirc"] = 308,
- ["jcirc"] = 309,
- ["Kcedil"] = 310,
- ["kcedil"] = 311,
- ["kgreen"] = 312,
- ["Lacute"] = 313,
- ["lacute"] = 314,
- ["Lcedil"] = 315,
- ["lcedil"] = 316,
- ["Lcaron"] = 317,
- ["lcaron"] = 318,
- ["Lmidot"] = 319,
- ["lmidot"] = 320,
- ["Lstrok"] = 321,
- ["lstrok"] = 322,
- ["Nacute"] = 323,
- ["nacute"] = 324,
- ["Ncedil"] = 325,
- ["ncedil"] = 326,
- ["Ncaron"] = 327,
- ["ncaron"] = 328,
- ["napos"] = 329,
- ["ENG"] = 330,
- ["eng"] = 331,
- ["Omacr"] = 332,
- ["omacr"] = 333,
- ["Odblac"] = 336,
- ["odblac"] = 337,
- ["OElig"] = 338,
- ["oelig"] = 339,
- ["Racute"] = 340,
- ["racute"] = 341,
- ["Rcedil"] = 342,
- ["rcedil"] = 343,
- ["Rcaron"] = 344,
- ["rcaron"] = 345,
- ["Sacute"] = 346,
- ["sacute"] = 347,
- ["Scirc"] = 348,
- ["scirc"] = 349,
- ["Scedil"] = 350,
- ["scedil"] = 351,
- ["Scaron"] = 352,
- ["scaron"] = 353,
- ["Tcedil"] = 354,
- ["tcedil"] = 355,
- ["Tcaron"] = 356,
- ["tcaron"] = 357,
- ["Tstrok"] = 358,
- ["tstrok"] = 359,
- ["Utilde"] = 360,
- ["utilde"] = 361,
- ["Umacr"] = 362,
- ["umacr"] = 363,
- ["Ubreve"] = 364,
- ["ubreve"] = 365,
- ["Uring"] = 366,
- ["uring"] = 367,
- ["Udblac"] = 368,
- ["udblac"] = 369,
- ["Uogon"] = 370,
- ["uogon"] = 371,
- ["Wcirc"] = 372,
- ["wcirc"] = 373,
- ["Ycirc"] = 374,
- ["ycirc"] = 375,
- ["Yuml"] = 376,
- ["Zacute"] = 377,
- ["zacute"] = 378,
- ["Zdot"] = 379,
- ["zdot"] = 380,
- ["Zcaron"] = 381,
- ["zcaron"] = 382,
- ["fnof"] = 402,
- ["imped"] = 437,
- ["gacute"] = 501,
- ["jmath"] = 567,
- ["circ"] = 710,
- ["Hacek"] = 711,
- ["caron"] = 711,
- ["Breve"] = 728,
- ["breve"] = 728,
- ["DiacriticalDot"] = 729,
- ["dot"] = 729,
- ["ring"] = 730,
- ["ogon"] = 731,
- ["DiacriticalTilde"] = 732,
- ["tilde"] = 732,
- ["DiacriticalDoubleAcute"] = 733,
- ["dblac"] = 733,
- ["DownBreve"] = 785,
- ["Alpha"] = 913,
- ["Beta"] = 914,
- ["Gamma"] = 915,
- ["Delta"] = 916,
- ["Epsilon"] = 917,
- ["Zeta"] = 918,
- ["Eta"] = 919,
- ["Theta"] = 920,
- ["Iota"] = 921,
- ["Kappa"] = 922,
- ["Lambda"] = 923,
- ["Mu"] = 924,
- ["Nu"] = 925,
- ["Xi"] = 926,
- ["Omicron"] = 927,
- ["Pi"] = 928,
- ["Rho"] = 929,
- ["Sigma"] = 931,
- ["Tau"] = 932,
- ["Upsilon"] = 933,
- ["Phi"] = 934,
- ["Chi"] = 935,
- ["Psi"] = 936,
- ["Omega"] = 937,
- ["ohm"] = 937,
- ["alpha"] = 945,
- ["beta"] = 946,
- ["gamma"] = 947,
- ["delta"] = 948,
- ["epsi"] = 949,
- ["epsilon"] = 949,
- ["zeta"] = 950,
- ["eta"] = 951,
- ["theta"] = 952,
- ["iota"] = 953,
- ["kappa"] = 954,
- ["lambda"] = 955,
- ["mu"] = 956,
- ["nu"] = 957,
- ["xi"] = 958,
- ["omicron"] = 959,
- ["pi"] = 960,
- ["rho"] = 961,
- ["sigmaf"] = 962,
- ["sigmav"] = 962,
- ["varsigma"] = 962,
- ["sigma"] = 963,
- ["tau"] = 964,
- ["upsi"] = 965,
- ["upsilon"] = 965,
- ["phi"] = 966,
- ["chi"] = 967,
- ["psi"] = 968,
- ["omega"] = 969,
- ["thetasym"] = 977,
- ["thetav"] = 977,
- ["vartheta"] = 977,
- ["Upsi"] = 978,
- ["upsih"] = 978,
- ["phiv"] = 981,
- ["straightphi"] = 981,
- ["varphi"] = 981,
- ["piv"] = 982,
- ["varpi"] = 982,
- ["Gammad"] = 988,
- ["digamma"] = 989,
- ["gammad"] = 989,
- ["kappav"] = 1008,
- ["varkappa"] = 1008,
- ["rhov"] = 1009,
- ["varrho"] = 1009,
- ["epsiv"] = 1013,
- ["straightepsilon"] = 1013,
- ["varepsilon"] = 1013,
- ["backepsilon"] = 1014,
- ["bepsi"] = 1014,
- ["IOcy"] = 1025,
- ["DJcy"] = 1026,
- ["GJcy"] = 1027,
- ["Jukcy"] = 1028,
- ["DScy"] = 1029,
- ["Iukcy"] = 1030,
- ["YIcy"] = 1031,
- ["Jsercy"] = 1032,
- ["LJcy"] = 1033,
- ["NJcy"] = 1034,
- ["TSHcy"] = 1035,
- ["KJcy"] = 1036,
- ["Ubrcy"] = 1038,
- ["DZcy"] = 1039,
- ["Acy"] = 1040,
- ["Bcy"] = 1041,
- ["Vcy"] = 1042,
- ["Gcy"] = 1043,
- ["Dcy"] = 1044,
- ["IEcy"] = 1045,
- ["ZHcy"] = 1046,
- ["Zcy"] = 1047,
- ["Icy"] = 1048,
- ["Jcy"] = 1049,
- ["Kcy"] = 1050,
- ["Lcy"] = 1051,
- ["Mcy"] = 1052,
- ["Ncy"] = 1053,
- ["Ocy"] = 1054,
- ["Pcy"] = 1055,
- ["Rcy"] = 1056,
- ["Scy"] = 1057,
- ["Tcy"] = 1058,
- ["Ucy"] = 1059,
- ["Fcy"] = 1060,
- ["KHcy"] = 1061,
- ["TScy"] = 1062,
- ["CHcy"] = 1063,
- ["SHcy"] = 1064,
- ["SHCHcy"] = 1065,
- ["HARDcy"] = 1066,
- ["Ycy"] = 1067,
- ["SOFTcy"] = 1068,
- ["Ecy"] = 1069,
- ["YUcy"] = 1070,
- ["YAcy"] = 1071,
- ["acy"] = 1072,
- ["bcy"] = 1073,
- ["vcy"] = 1074,
- ["gcy"] = 1075,
- ["dcy"] = 1076,
- ["iecy"] = 1077,
- ["zhcy"] = 1078,
- ["zcy"] = 1079,
- ["icy"] = 1080,
- ["jcy"] = 1081,
- ["kcy"] = 1082,
- ["lcy"] = 1083,
- ["mcy"] = 1084,
- ["ncy"] = 1085,
- ["ocy"] = 1086,
- ["pcy"] = 1087,
- ["rcy"] = 1088,
- ["scy"] = 1089,
- ["tcy"] = 1090,
- ["ucy"] = 1091,
- ["fcy"] = 1092,
- ["khcy"] = 1093,
- ["tscy"] = 1094,
- ["chcy"] = 1095,
- ["shcy"] = 1096,
- ["shchcy"] = 1097,
- ["hardcy"] = 1098,
- ["ycy"] = 1099,
- ["softcy"] = 1100,
- ["ecy"] = 1101,
- ["yucy"] = 1102,
- ["yacy"] = 1103,
- ["iocy"] = 1105,
- ["djcy"] = 1106,
- ["gjcy"] = 1107,
- ["jukcy"] = 1108,
- ["dscy"] = 1109,
- ["iukcy"] = 1110,
- ["yicy"] = 1111,
- ["jsercy"] = 1112,
- ["ljcy"] = 1113,
- ["njcy"] = 1114,
- ["tshcy"] = 1115,
- ["kjcy"] = 1116,
- ["ubrcy"] = 1118,
- ["dzcy"] = 1119,
- ["ensp"] = 8194,
- ["emsp"] = 8195,
- ["emsp13"] = 8196,
- ["emsp14"] = 8197,
- ["numsp"] = 8199,
- ["puncsp"] = 8200,
- ["ThinSpace"] = 8201,
- ["thinsp"] = 8201,
- ["VeryThinSpace"] = 8202,
- ["hairsp"] = 8202,
- ["NegativeMediumSpace"] = 8203,
- ["NegativeThickSpace"] = 8203,
- ["NegativeThinSpace"] = 8203,
- ["NegativeVeryThinSpace"] = 8203,
- ["ZeroWidthSpace"] = 8203,
- ["zwnj"] = 8204,
- ["zwj"] = 8205,
- ["lrm"] = 8206,
- ["rlm"] = 8207,
- ["dash"] = 8208,
- ["hyphen"] = 8208,
- ["ndash"] = 8211,
- ["mdash"] = 8212,
- ["horbar"] = 8213,
- ["Verbar"] = 8214,
- ["Vert"] = 8214,
- ["OpenCurlyQuote"] = 8216,
- ["lsquo"] = 8216,
- ["CloseCurlyQuote"] = 8217,
- ["rsquo"] = 8217,
- ["rsquor"] = 8217,
- ["lsquor"] = 8218,
- ["sbquo"] = 8218,
- ["OpenCurlyDoubleQuote"] = 8220,
- ["ldquo"] = 8220,
- ["CloseCurlyDoubleQuote"] = 8221,
- ["rdquo"] = 8221,
- ["rdquor"] = 8221,
- ["bdquo"] = 8222,
- ["ldquor"] = 8222,
- ["dagger"] = 8224,
- ["Dagger"] = 8225,
- ["ddagger"] = 8225,
- ["bull"] = 8226,
- ["bullet"] = 8226,
- ["nldr"] = 8229,
- ["hellip"] = 8230,
- ["mldr"] = 8230,
- ["permil"] = 8240,
- ["pertenk"] = 8241,
- ["prime"] = 8242,
- ["Prime"] = 8243,
- ["tprime"] = 8244,
- ["backprime"] = 8245,
- ["bprime"] = 8245,
- ["lsaquo"] = 8249,
- ["rsaquo"] = 8250,
- ["OverBar"] = 8254,
- ["oline"] = 8254,
- ["caret"] = 8257,
- ["hybull"] = 8259,
- ["frasl"] = 8260,
- ["bsemi"] = 8271,
- ["qprime"] = 8279,
- ["MediumSpace"] = 8287,
- ["ThickSpace"] = {8287, 8202},
- ["NoBreak"] = 8288,
- ["ApplyFunction"] = 8289,
- ["af"] = 8289,
- ["InvisibleTimes"] = 8290,
- ["it"] = 8290,
- ["InvisibleComma"] = 8291,
- ["ic"] = 8291,
- ["euro"] = 8364,
- ["TripleDot"] = 8411,
- ["tdot"] = 8411,
- ["DotDot"] = 8412,
- ["Copf"] = 8450,
- ["complexes"] = 8450,
- ["incare"] = 8453,
- ["gscr"] = 8458,
- ["HilbertSpace"] = 8459,
- ["Hscr"] = 8459,
- ["hamilt"] = 8459,
- ["Hfr"] = 8460,
- ["Poincareplane"] = 8460,
- ["Hopf"] = 8461,
- ["quaternions"] = 8461,
- ["planckh"] = 8462,
- ["hbar"] = 8463,
- ["hslash"] = 8463,
- ["planck"] = 8463,
- ["plankv"] = 8463,
- ["Iscr"] = 8464,
- ["imagline"] = 8464,
- ["Ifr"] = 8465,
- ["Im"] = 8465,
- ["image"] = 8465,
- ["imagpart"] = 8465,
- ["Laplacetrf"] = 8466,
- ["Lscr"] = 8466,
- ["lagran"] = 8466,
- ["ell"] = 8467,
- ["Nopf"] = 8469,
- ["naturals"] = 8469,
- ["numero"] = 8470,
- ["copysr"] = 8471,
- ["weierp"] = 8472,
- ["wp"] = 8472,
- ["Popf"] = 8473,
- ["primes"] = 8473,
- ["Qopf"] = 8474,
- ["rationals"] = 8474,
- ["Rscr"] = 8475,
- ["realine"] = 8475,
- ["Re"] = 8476,
- ["Rfr"] = 8476,
- ["real"] = 8476,
- ["realpart"] = 8476,
- ["Ropf"] = 8477,
- ["reals"] = 8477,
- ["rx"] = 8478,
- ["TRADE"] = 8482,
- ["trade"] = 8482,
- ["Zopf"] = 8484,
- ["integers"] = 8484,
- ["mho"] = 8487,
- ["Zfr"] = 8488,
- ["zeetrf"] = 8488,
- ["iiota"] = 8489,
- ["Bernoullis"] = 8492,
- ["Bscr"] = 8492,
- ["bernou"] = 8492,
- ["Cayleys"] = 8493,
- ["Cfr"] = 8493,
- ["escr"] = 8495,
- ["Escr"] = 8496,
- ["expectation"] = 8496,
- ["Fouriertrf"] = 8497,
- ["Fscr"] = 8497,
- ["Mellintrf"] = 8499,
- ["Mscr"] = 8499,
- ["phmmat"] = 8499,
- ["order"] = 8500,
- ["orderof"] = 8500,
- ["oscr"] = 8500,
- ["alefsym"] = 8501,
- ["aleph"] = 8501,
- ["beth"] = 8502,
- ["gimel"] = 8503,
- ["daleth"] = 8504,
- ["CapitalDifferentialD"] = 8517,
- ["DD"] = 8517,
- ["DifferentialD"] = 8518,
- ["dd"] = 8518,
- ["ExponentialE"] = 8519,
- ["ee"] = 8519,
- ["exponentiale"] = 8519,
- ["ImaginaryI"] = 8520,
- ["ii"] = 8520,
- ["frac13"] = 8531,
- ["frac23"] = 8532,
- ["frac15"] = 8533,
- ["frac25"] = 8534,
- ["frac35"] = 8535,
- ["frac45"] = 8536,
- ["frac16"] = 8537,
- ["frac56"] = 8538,
- ["frac18"] = 8539,
- ["frac38"] = 8540,
- ["frac58"] = 8541,
- ["frac78"] = 8542,
- ["LeftArrow"] = 8592,
- ["ShortLeftArrow"] = 8592,
- ["larr"] = 8592,
- ["leftarrow"] = 8592,
- ["slarr"] = 8592,
- ["ShortUpArrow"] = 8593,
- ["UpArrow"] = 8593,
- ["uarr"] = 8593,
- ["uparrow"] = 8593,
- ["RightArrow"] = 8594,
- ["ShortRightArrow"] = 8594,
- ["rarr"] = 8594,
- ["rightarrow"] = 8594,
- ["srarr"] = 8594,
- ["DownArrow"] = 8595,
- ["ShortDownArrow"] = 8595,
- ["darr"] = 8595,
- ["downarrow"] = 8595,
- ["LeftRightArrow"] = 8596,
- ["harr"] = 8596,
- ["leftrightarrow"] = 8596,
- ["UpDownArrow"] = 8597,
- ["updownarrow"] = 8597,
- ["varr"] = 8597,
- ["UpperLeftArrow"] = 8598,
- ["nwarr"] = 8598,
- ["nwarrow"] = 8598,
- ["UpperRightArrow"] = 8599,
- ["nearr"] = 8599,
- ["nearrow"] = 8599,
- ["LowerRightArrow"] = 8600,
- ["searr"] = 8600,
- ["searrow"] = 8600,
- ["LowerLeftArrow"] = 8601,
- ["swarr"] = 8601,
- ["swarrow"] = 8601,
- ["nlarr"] = 8602,
- ["nleftarrow"] = 8602,
- ["nrarr"] = 8603,
- ["nrightarrow"] = 8603,
- ["nrarrw"] = {8605, 824},
- ["rarrw"] = 8605,
- ["rightsquigarrow"] = 8605,
- ["Larr"] = 8606,
- ["twoheadleftarrow"] = 8606,
- ["Uarr"] = 8607,
- ["Rarr"] = 8608,
- ["twoheadrightarrow"] = 8608,
- ["Darr"] = 8609,
- ["larrtl"] = 8610,
- ["leftarrowtail"] = 8610,
- ["rarrtl"] = 8611,
- ["rightarrowtail"] = 8611,
- ["LeftTeeArrow"] = 8612,
- ["mapstoleft"] = 8612,
- ["UpTeeArrow"] = 8613,
- ["mapstoup"] = 8613,
- ["RightTeeArrow"] = 8614,
- ["map"] = 8614,
- ["mapsto"] = 8614,
- ["DownTeeArrow"] = 8615,
- ["mapstodown"] = 8615,
- ["hookleftarrow"] = 8617,
- ["larrhk"] = 8617,
- ["hookrightarrow"] = 8618,
- ["rarrhk"] = 8618,
- ["larrlp"] = 8619,
- ["looparrowleft"] = 8619,
- ["looparrowright"] = 8620,
- ["rarrlp"] = 8620,
- ["harrw"] = 8621,
- ["leftrightsquigarrow"] = 8621,
- ["nharr"] = 8622,
- ["nleftrightarrow"] = 8622,
- ["Lsh"] = 8624,
- ["lsh"] = 8624,
- ["Rsh"] = 8625,
- ["rsh"] = 8625,
- ["ldsh"] = 8626,
- ["rdsh"] = 8627,
- ["crarr"] = 8629,
- ["cularr"] = 8630,
- ["curvearrowleft"] = 8630,
- ["curarr"] = 8631,
- ["curvearrowright"] = 8631,
- ["circlearrowleft"] = 8634,
- ["olarr"] = 8634,
- ["circlearrowright"] = 8635,
- ["orarr"] = 8635,
- ["LeftVector"] = 8636,
- ["leftharpoonup"] = 8636,
- ["lharu"] = 8636,
- ["DownLeftVector"] = 8637,
- ["leftharpoondown"] = 8637,
- ["lhard"] = 8637,
- ["RightUpVector"] = 8638,
- ["uharr"] = 8638,
- ["upharpoonright"] = 8638,
- ["LeftUpVector"] = 8639,
- ["uharl"] = 8639,
- ["upharpoonleft"] = 8639,
- ["RightVector"] = 8640,
- ["rharu"] = 8640,
- ["rightharpoonup"] = 8640,
- ["DownRightVector"] = 8641,
- ["rhard"] = 8641,
- ["rightharpoondown"] = 8641,
- ["RightDownVector"] = 8642,
- ["dharr"] = 8642,
- ["downharpoonright"] = 8642,
- ["LeftDownVector"] = 8643,
- ["dharl"] = 8643,
- ["downharpoonleft"] = 8643,
- ["RightArrowLeftArrow"] = 8644,
- ["rightleftarrows"] = 8644,
- ["rlarr"] = 8644,
- ["UpArrowDownArrow"] = 8645,
- ["udarr"] = 8645,
- ["LeftArrowRightArrow"] = 8646,
- ["leftrightarrows"] = 8646,
- ["lrarr"] = 8646,
- ["leftleftarrows"] = 8647,
- ["llarr"] = 8647,
- ["upuparrows"] = 8648,
- ["uuarr"] = 8648,
- ["rightrightarrows"] = 8649,
- ["rrarr"] = 8649,
- ["ddarr"] = 8650,
- ["downdownarrows"] = 8650,
- ["ReverseEquilibrium"] = 8651,
- ["leftrightharpoons"] = 8651,
- ["lrhar"] = 8651,
- ["Equilibrium"] = 8652,
- ["rightleftharpoons"] = 8652,
- ["rlhar"] = 8652,
- ["nLeftarrow"] = 8653,
- ["nlArr"] = 8653,
- ["nLeftrightarrow"] = 8654,
- ["nhArr"] = 8654,
- ["nRightarrow"] = 8655,
- ["nrArr"] = 8655,
- ["DoubleLeftArrow"] = 8656,
- ["Leftarrow"] = 8656,
- ["lArr"] = 8656,
- ["DoubleUpArrow"] = 8657,
- ["Uparrow"] = 8657,
- ["uArr"] = 8657,
- ["DoubleRightArrow"] = 8658,
- ["Implies"] = 8658,
- ["Rightarrow"] = 8658,
- ["rArr"] = 8658,
- ["DoubleDownArrow"] = 8659,
- ["Downarrow"] = 8659,
- ["dArr"] = 8659,
- ["DoubleLeftRightArrow"] = 8660,
- ["Leftrightarrow"] = 8660,
- ["hArr"] = 8660,
- ["iff"] = 8660,
- ["DoubleUpDownArrow"] = 8661,
- ["Updownarrow"] = 8661,
- ["vArr"] = 8661,
- ["nwArr"] = 8662,
- ["neArr"] = 8663,
- ["seArr"] = 8664,
- ["swArr"] = 8665,
- ["Lleftarrow"] = 8666,
- ["lAarr"] = 8666,
- ["Rrightarrow"] = 8667,
- ["rAarr"] = 8667,
- ["zigrarr"] = 8669,
- ["LeftArrowBar"] = 8676,
- ["larrb"] = 8676,
- ["RightArrowBar"] = 8677,
- ["rarrb"] = 8677,
- ["DownArrowUpArrow"] = 8693,
- ["duarr"] = 8693,
- ["loarr"] = 8701,
- ["roarr"] = 8702,
- ["hoarr"] = 8703,
- ["ForAll"] = 8704,
- ["forall"] = 8704,
- ["comp"] = 8705,
- ["complement"] = 8705,
- ["PartialD"] = 8706,
- ["npart"] = {8706, 824},
- ["part"] = 8706,
- ["Exists"] = 8707,
- ["exist"] = 8707,
- ["NotExists"] = 8708,
- ["nexist"] = 8708,
- ["nexists"] = 8708,
- ["empty"] = 8709,
- ["emptyset"] = 8709,
- ["emptyv"] = 8709,
- ["varnothing"] = 8709,
- ["Del"] = 8711,
- ["nabla"] = 8711,
- ["Element"] = 8712,
- ["in"] = 8712,
- ["isin"] = 8712,
- ["isinv"] = 8712,
- ["NotElement"] = 8713,
- ["notin"] = 8713,
- ["notinva"] = 8713,
- ["ReverseElement"] = 8715,
- ["SuchThat"] = 8715,
- ["ni"] = 8715,
- ["niv"] = 8715,
- ["NotReverseElement"] = 8716,
- ["notni"] = 8716,
- ["notniva"] = 8716,
- ["Product"] = 8719,
- ["prod"] = 8719,
- ["Coproduct"] = 8720,
- ["coprod"] = 8720,
- ["Sum"] = 8721,
- ["sum"] = 8721,
- ["minus"] = 8722,
- ["MinusPlus"] = 8723,
- ["mnplus"] = 8723,
- ["mp"] = 8723,
- ["dotplus"] = 8724,
- ["plusdo"] = 8724,
- ["Backslash"] = 8726,
- ["setminus"] = 8726,
- ["setmn"] = 8726,
- ["smallsetminus"] = 8726,
- ["ssetmn"] = 8726,
- ["lowast"] = 8727,
- ["SmallCircle"] = 8728,
- ["compfn"] = 8728,
- ["Sqrt"] = 8730,
- ["radic"] = 8730,
- ["Proportional"] = 8733,
- ["prop"] = 8733,
- ["propto"] = 8733,
- ["varpropto"] = 8733,
- ["vprop"] = 8733,
- ["infin"] = 8734,
- ["angrt"] = 8735,
- ["ang"] = 8736,
- ["angle"] = 8736,
- ["nang"] = {8736, 8402},
- ["angmsd"] = 8737,
- ["measuredangle"] = 8737,
- ["angsph"] = 8738,
- ["VerticalBar"] = 8739,
- ["mid"] = 8739,
- ["shortmid"] = 8739,
- ["smid"] = 8739,
- ["NotVerticalBar"] = 8740,
- ["nmid"] = 8740,
- ["nshortmid"] = 8740,
- ["nsmid"] = 8740,
- ["DoubleVerticalBar"] = 8741,
- ["par"] = 8741,
- ["parallel"] = 8741,
- ["shortparallel"] = 8741,
- ["spar"] = 8741,
- ["NotDoubleVerticalBar"] = 8742,
- ["npar"] = 8742,
- ["nparallel"] = 8742,
- ["nshortparallel"] = 8742,
- ["nspar"] = 8742,
- ["and"] = 8743,
- ["wedge"] = 8743,
- ["or"] = 8744,
- ["vee"] = 8744,
- ["cap"] = 8745,
- ["caps"] = {8745, 65024},
- ["cup"] = 8746,
- ["cups"] = {8746, 65024},
- ["Integral"] = 8747,
- ["int"] = 8747,
- ["Int"] = 8748,
- ["iiint"] = 8749,
- ["tint"] = 8749,
- ["ContourIntegral"] = 8750,
- ["conint"] = 8750,
- ["oint"] = 8750,
- ["Conint"] = 8751,
- ["DoubleContourIntegral"] = 8751,
- ["Cconint"] = 8752,
- ["cwint"] = 8753,
- ["ClockwiseContourIntegral"] = 8754,
- ["cwconint"] = 8754,
- ["CounterClockwiseContourIntegral"] = 8755,
- ["awconint"] = 8755,
- ["Therefore"] = 8756,
- ["there4"] = 8756,
- ["therefore"] = 8756,
- ["Because"] = 8757,
- ["becaus"] = 8757,
- ["because"] = 8757,
- ["ratio"] = 8758,
- ["Colon"] = 8759,
- ["Proportion"] = 8759,
- ["dotminus"] = 8760,
- ["minusd"] = 8760,
- ["mDDot"] = 8762,
- ["homtht"] = 8763,
- ["Tilde"] = 8764,
- ["nvsim"] = {8764, 8402},
- ["sim"] = 8764,
- ["thicksim"] = 8764,
- ["thksim"] = 8764,
- ["backsim"] = 8765,
- ["bsim"] = 8765,
- ["race"] = {8765, 817},
- ["ac"] = 8766,
- ["acE"] = {8766, 819},
- ["mstpos"] = 8766,
- ["acd"] = 8767,
- ["VerticalTilde"] = 8768,
- ["wr"] = 8768,
- ["wreath"] = 8768,
- ["NotTilde"] = 8769,
- ["nsim"] = 8769,
- ["EqualTilde"] = 8770,
- ["NotEqualTilde"] = {8770, 824},
- ["eqsim"] = 8770,
- ["esim"] = 8770,
- ["nesim"] = {8770, 824},
- ["TildeEqual"] = 8771,
- ["sime"] = 8771,
- ["simeq"] = 8771,
- ["NotTildeEqual"] = 8772,
- ["nsime"] = 8772,
- ["nsimeq"] = 8772,
- ["TildeFullEqual"] = 8773,
- ["cong"] = 8773,
- ["simne"] = 8774,
- ["NotTildeFullEqual"] = 8775,
- ["ncong"] = 8775,
- ["TildeTilde"] = 8776,
- ["ap"] = 8776,
- ["approx"] = 8776,
- ["asymp"] = 8776,
- ["thickapprox"] = 8776,
- ["thkap"] = 8776,
- ["NotTildeTilde"] = 8777,
- ["nap"] = 8777,
- ["napprox"] = 8777,
- ["ape"] = 8778,
- ["approxeq"] = 8778,
- ["apid"] = 8779,
- ["napid"] = {8779, 824},
- ["backcong"] = 8780,
- ["bcong"] = 8780,
- ["CupCap"] = 8781,
- ["asympeq"] = 8781,
- ["nvap"] = {8781, 8402},
- ["Bumpeq"] = 8782,
- ["HumpDownHump"] = 8782,
- ["NotHumpDownHump"] = {8782, 824},
- ["bump"] = 8782,
- ["nbump"] = {8782, 824},
- ["HumpEqual"] = 8783,
- ["NotHumpEqual"] = {8783, 824},
- ["bumpe"] = 8783,
- ["bumpeq"] = 8783,
- ["nbumpe"] = {8783, 824},
- ["DotEqual"] = 8784,
- ["doteq"] = 8784,
- ["esdot"] = 8784,
- ["nedot"] = {8784, 824},
- ["doteqdot"] = 8785,
- ["eDot"] = 8785,
- ["efDot"] = 8786,
- ["fallingdotseq"] = 8786,
- ["erDot"] = 8787,
- ["risingdotseq"] = 8787,
- ["Assign"] = 8788,
- ["colone"] = 8788,
- ["coloneq"] = 8788,
- ["ecolon"] = 8789,
- ["eqcolon"] = 8789,
- ["ecir"] = 8790,
- ["eqcirc"] = 8790,
- ["circeq"] = 8791,
- ["cire"] = 8791,
- ["wedgeq"] = 8793,
- ["veeeq"] = 8794,
- ["triangleq"] = 8796,
- ["trie"] = 8796,
- ["equest"] = 8799,
- ["questeq"] = 8799,
- ["NotEqual"] = 8800,
- ["ne"] = 8800,
- ["Congruent"] = 8801,
- ["bnequiv"] = {8801, 8421},
- ["equiv"] = 8801,
- ["NotCongruent"] = 8802,
- ["nequiv"] = 8802,
- ["le"] = 8804,
- ["leq"] = 8804,
- ["nvle"] = {8804, 8402},
- ["GreaterEqual"] = 8805,
- ["ge"] = 8805,
- ["geq"] = 8805,
- ["nvge"] = {8805, 8402},
- ["LessFullEqual"] = 8806,
- ["lE"] = 8806,
- ["leqq"] = 8806,
- ["nlE"] = {8806, 824},
- ["nleqq"] = {8806, 824},
- ["GreaterFullEqual"] = 8807,
- ["NotGreaterFullEqual"] = {8807, 824},
- ["gE"] = 8807,
- ["geqq"] = 8807,
- ["ngE"] = {8807, 824},
- ["ngeqq"] = {8807, 824},
- ["lnE"] = 8808,
- ["lneqq"] = 8808,
- ["lvertneqq"] = {8808, 65024},
- ["lvnE"] = {8808, 65024},
- ["gnE"] = 8809,
- ["gneqq"] = 8809,
- ["gvertneqq"] = {8809, 65024},
- ["gvnE"] = {8809, 65024},
- ["Lt"] = 8810,
- ["NestedLessLess"] = 8810,
- ["NotLessLess"] = {8810, 824},
- ["ll"] = 8810,
- ["nLt"] = {8810, 8402},
- ["nLtv"] = {8810, 824},
- ["Gt"] = 8811,
- ["NestedGreaterGreater"] = 8811,
- ["NotGreaterGreater"] = {8811, 824},
- ["gg"] = 8811,
- ["nGt"] = {8811, 8402},
- ["nGtv"] = {8811, 824},
- ["between"] = 8812,
- ["twixt"] = 8812,
- ["NotCupCap"] = 8813,
- ["NotLess"] = 8814,
- ["nless"] = 8814,
- ["nlt"] = 8814,
- ["NotGreater"] = 8815,
- ["ngt"] = 8815,
- ["ngtr"] = 8815,
- ["NotLessEqual"] = 8816,
- ["nle"] = 8816,
- ["nleq"] = 8816,
- ["NotGreaterEqual"] = 8817,
- ["nge"] = 8817,
- ["ngeq"] = 8817,
- ["LessTilde"] = 8818,
- ["lesssim"] = 8818,
- ["lsim"] = 8818,
- ["GreaterTilde"] = 8819,
- ["gsim"] = 8819,
- ["gtrsim"] = 8819,
- ["NotLessTilde"] = 8820,
- ["nlsim"] = 8820,
- ["NotGreaterTilde"] = 8821,
- ["ngsim"] = 8821,
- ["LessGreater"] = 8822,
- ["lessgtr"] = 8822,
- ["lg"] = 8822,
- ["GreaterLess"] = 8823,
- ["gl"] = 8823,
- ["gtrless"] = 8823,
- ["NotLessGreater"] = 8824,
- ["ntlg"] = 8824,
- ["NotGreaterLess"] = 8825,
- ["ntgl"] = 8825,
- ["Precedes"] = 8826,
- ["pr"] = 8826,
- ["prec"] = 8826,
- ["Succeeds"] = 8827,
- ["sc"] = 8827,
- ["succ"] = 8827,
- ["PrecedesSlantEqual"] = 8828,
- ["prcue"] = 8828,
- ["preccurlyeq"] = 8828,
- ["SucceedsSlantEqual"] = 8829,
- ["sccue"] = 8829,
- ["succcurlyeq"] = 8829,
- ["PrecedesTilde"] = 8830,
- ["precsim"] = 8830,
- ["prsim"] = 8830,
- ["NotSucceedsTilde"] = {8831, 824},
- ["SucceedsTilde"] = 8831,
- ["scsim"] = 8831,
- ["succsim"] = 8831,
- ["NotPrecedes"] = 8832,
- ["npr"] = 8832,
- ["nprec"] = 8832,
- ["NotSucceeds"] = 8833,
- ["nsc"] = 8833,
- ["nsucc"] = 8833,
- ["NotSubset"] = {8834, 8402},
- ["nsubset"] = {8834, 8402},
- ["sub"] = 8834,
- ["subset"] = 8834,
- ["vnsub"] = {8834, 8402},
- ["NotSuperset"] = {8835, 8402},
- ["Superset"] = 8835,
- ["nsupset"] = {8835, 8402},
- ["sup"] = 8835,
- ["supset"] = 8835,
- ["vnsup"] = {8835, 8402},
- ["nsub"] = 8836,
- ["nsup"] = 8837,
- ["SubsetEqual"] = 8838,
- ["sube"] = 8838,
- ["subseteq"] = 8838,
- ["SupersetEqual"] = 8839,
- ["supe"] = 8839,
- ["supseteq"] = 8839,
- ["NotSubsetEqual"] = 8840,
- ["nsube"] = 8840,
- ["nsubseteq"] = 8840,
- ["NotSupersetEqual"] = 8841,
- ["nsupe"] = 8841,
- ["nsupseteq"] = 8841,
- ["subne"] = 8842,
- ["subsetneq"] = 8842,
- ["varsubsetneq"] = {8842, 65024},
- ["vsubne"] = {8842, 65024},
- ["supne"] = 8843,
- ["supsetneq"] = 8843,
- ["varsupsetneq"] = {8843, 65024},
- ["vsupne"] = {8843, 65024},
- ["cupdot"] = 8845,
- ["UnionPlus"] = 8846,
- ["uplus"] = 8846,
- ["NotSquareSubset"] = {8847, 824},
- ["SquareSubset"] = 8847,
- ["sqsub"] = 8847,
- ["sqsubset"] = 8847,
- ["NotSquareSuperset"] = {8848, 824},
- ["SquareSuperset"] = 8848,
- ["sqsup"] = 8848,
- ["sqsupset"] = 8848,
- ["SquareSubsetEqual"] = 8849,
- ["sqsube"] = 8849,
- ["sqsubseteq"] = 8849,
- ["SquareSupersetEqual"] = 8850,
- ["sqsupe"] = 8850,
- ["sqsupseteq"] = 8850,
- ["SquareIntersection"] = 8851,
- ["sqcap"] = 8851,
- ["sqcaps"] = {8851, 65024},
- ["SquareUnion"] = 8852,
- ["sqcup"] = 8852,
- ["sqcups"] = {8852, 65024},
- ["CirclePlus"] = 8853,
- ["oplus"] = 8853,
- ["CircleMinus"] = 8854,
- ["ominus"] = 8854,
- ["CircleTimes"] = 8855,
- ["otimes"] = 8855,
- ["osol"] = 8856,
- ["CircleDot"] = 8857,
- ["odot"] = 8857,
- ["circledcirc"] = 8858,
- ["ocir"] = 8858,
- ["circledast"] = 8859,
- ["oast"] = 8859,
- ["circleddash"] = 8861,
- ["odash"] = 8861,
- ["boxplus"] = 8862,
- ["plusb"] = 8862,
- ["boxminus"] = 8863,
- ["minusb"] = 8863,
- ["boxtimes"] = 8864,
- ["timesb"] = 8864,
- ["dotsquare"] = 8865,
- ["sdotb"] = 8865,
- ["RightTee"] = 8866,
- ["vdash"] = 8866,
- ["LeftTee"] = 8867,
- ["dashv"] = 8867,
- ["DownTee"] = 8868,
- ["top"] = 8868,
- ["UpTee"] = 8869,
- ["bot"] = 8869,
- ["bottom"] = 8869,
- ["perp"] = 8869,
- ["models"] = 8871,
- ["DoubleRightTee"] = 8872,
- ["vDash"] = 8872,
- ["Vdash"] = 8873,
- ["Vvdash"] = 8874,
- ["VDash"] = 8875,
- ["nvdash"] = 8876,
- ["nvDash"] = 8877,
- ["nVdash"] = 8878,
- ["nVDash"] = 8879,
- ["prurel"] = 8880,
- ["LeftTriangle"] = 8882,
- ["vartriangleleft"] = 8882,
- ["vltri"] = 8882,
- ["RightTriangle"] = 8883,
- ["vartriangleright"] = 8883,
- ["vrtri"] = 8883,
- ["LeftTriangleEqual"] = 8884,
- ["ltrie"] = 8884,
- ["nvltrie"] = {8884, 8402},
- ["trianglelefteq"] = 8884,
- ["RightTriangleEqual"] = 8885,
- ["nvrtrie"] = {8885, 8402},
- ["rtrie"] = 8885,
- ["trianglerighteq"] = 8885,
- ["origof"] = 8886,
- ["imof"] = 8887,
- ["multimap"] = 8888,
- ["mumap"] = 8888,
- ["hercon"] = 8889,
- ["intcal"] = 8890,
- ["intercal"] = 8890,
- ["veebar"] = 8891,
- ["barvee"] = 8893,
- ["angrtvb"] = 8894,
- ["lrtri"] = 8895,
- ["Wedge"] = 8896,
- ["bigwedge"] = 8896,
- ["xwedge"] = 8896,
- ["Vee"] = 8897,
- ["bigvee"] = 8897,
- ["xvee"] = 8897,
- ["Intersection"] = 8898,
- ["bigcap"] = 8898,
- ["xcap"] = 8898,
- ["Union"] = 8899,
- ["bigcup"] = 8899,
- ["xcup"] = 8899,
- ["Diamond"] = 8900,
- ["diam"] = 8900,
- ["diamond"] = 8900,
- ["sdot"] = 8901,
- ["Star"] = 8902,
- ["sstarf"] = 8902,
- ["divideontimes"] = 8903,
- ["divonx"] = 8903,
- ["bowtie"] = 8904,
- ["ltimes"] = 8905,
- ["rtimes"] = 8906,
- ["leftthreetimes"] = 8907,
- ["lthree"] = 8907,
- ["rightthreetimes"] = 8908,
- ["rthree"] = 8908,
- ["backsimeq"] = 8909,
- ["bsime"] = 8909,
- ["curlyvee"] = 8910,
- ["cuvee"] = 8910,
- ["curlywedge"] = 8911,
- ["cuwed"] = 8911,
- ["Sub"] = 8912,
- ["Subset"] = 8912,
- ["Sup"] = 8913,
- ["Supset"] = 8913,
- ["Cap"] = 8914,
- ["Cup"] = 8915,
- ["fork"] = 8916,
- ["pitchfork"] = 8916,
- ["epar"] = 8917,
- ["lessdot"] = 8918,
- ["ltdot"] = 8918,
- ["gtdot"] = 8919,
- ["gtrdot"] = 8919,
- ["Ll"] = 8920,
- ["nLl"] = {8920, 824},
- ["Gg"] = 8921,
- ["ggg"] = 8921,
- ["nGg"] = {8921, 824},
- ["LessEqualGreater"] = 8922,
- ["leg"] = 8922,
- ["lesg"] = {8922, 65024},
- ["lesseqgtr"] = 8922,
- ["GreaterEqualLess"] = 8923,
- ["gel"] = 8923,
- ["gesl"] = {8923, 65024},
- ["gtreqless"] = 8923,
- ["cuepr"] = 8926,
- ["curlyeqprec"] = 8926,
- ["cuesc"] = 8927,
- ["curlyeqsucc"] = 8927,
- ["NotPrecedesSlantEqual"] = 8928,
- ["nprcue"] = 8928,
- ["NotSucceedsSlantEqual"] = 8929,
- ["nsccue"] = 8929,
- ["NotSquareSubsetEqual"] = 8930,
- ["nsqsube"] = 8930,
- ["NotSquareSupersetEqual"] = 8931,
- ["nsqsupe"] = 8931,
- ["lnsim"] = 8934,
- ["gnsim"] = 8935,
- ["precnsim"] = 8936,
- ["prnsim"] = 8936,
- ["scnsim"] = 8937,
- ["succnsim"] = 8937,
- ["NotLeftTriangle"] = 8938,
- ["nltri"] = 8938,
- ["ntriangleleft"] = 8938,
- ["NotRightTriangle"] = 8939,
- ["nrtri"] = 8939,
- ["ntriangleright"] = 8939,
- ["NotLeftTriangleEqual"] = 8940,
- ["nltrie"] = 8940,
- ["ntrianglelefteq"] = 8940,
- ["NotRightTriangleEqual"] = 8941,
- ["nrtrie"] = 8941,
- ["ntrianglerighteq"] = 8941,
- ["vellip"] = 8942,
- ["ctdot"] = 8943,
- ["utdot"] = 8944,
- ["dtdot"] = 8945,
- ["disin"] = 8946,
- ["isinsv"] = 8947,
- ["isins"] = 8948,
- ["isindot"] = 8949,
- ["notindot"] = {8949, 824},
- ["notinvc"] = 8950,
- ["notinvb"] = 8951,
- ["isinE"] = 8953,
- ["notinE"] = {8953, 824},
- ["nisd"] = 8954,
- ["xnis"] = 8955,
- ["nis"] = 8956,
- ["notnivc"] = 8957,
- ["notnivb"] = 8958,
- ["barwed"] = 8965,
- ["barwedge"] = 8965,
- ["Barwed"] = 8966,
- ["doublebarwedge"] = 8966,
- ["LeftCeiling"] = 8968,
- ["lceil"] = 8968,
- ["RightCeiling"] = 8969,
- ["rceil"] = 8969,
- ["LeftFloor"] = 8970,
- ["lfloor"] = 8970,
- ["RightFloor"] = 8971,
- ["rfloor"] = 8971,
- ["drcrop"] = 8972,
- ["dlcrop"] = 8973,
- ["urcrop"] = 8974,
- ["ulcrop"] = 8975,
- ["bnot"] = 8976,
- ["profline"] = 8978,
- ["profsurf"] = 8979,
- ["telrec"] = 8981,
- ["target"] = 8982,
- ["ulcorn"] = 8988,
- ["ulcorner"] = 8988,
- ["urcorn"] = 8989,
- ["urcorner"] = 8989,
- ["dlcorn"] = 8990,
- ["llcorner"] = 8990,
- ["drcorn"] = 8991,
- ["lrcorner"] = 8991,
- ["frown"] = 8994,
- ["sfrown"] = 8994,
- ["smile"] = 8995,
- ["ssmile"] = 8995,
- ["cylcty"] = 9005,
- ["profalar"] = 9006,
- ["topbot"] = 9014,
- ["ovbar"] = 9021,
- ["solbar"] = 9023,
- ["angzarr"] = 9084,
- ["lmoust"] = 9136,
- ["lmoustache"] = 9136,
- ["rmoust"] = 9137,
- ["rmoustache"] = 9137,
- ["OverBracket"] = 9140,
- ["tbrk"] = 9140,
- ["UnderBracket"] = 9141,
- ["bbrk"] = 9141,
- ["bbrktbrk"] = 9142,
- ["OverParenthesis"] = 9180,
- ["UnderParenthesis"] = 9181,
- ["OverBrace"] = 9182,
- ["UnderBrace"] = 9183,
- ["trpezium"] = 9186,
- ["elinters"] = 9191,
- ["blank"] = 9251,
- ["circledS"] = 9416,
- ["oS"] = 9416,
- ["HorizontalLine"] = 9472,
- ["boxh"] = 9472,
- ["boxv"] = 9474,
- ["boxdr"] = 9484,
- ["boxdl"] = 9488,
- ["boxur"] = 9492,
- ["boxul"] = 9496,
- ["boxvr"] = 9500,
- ["boxvl"] = 9508,
- ["boxhd"] = 9516,
- ["boxhu"] = 9524,
- ["boxvh"] = 9532,
- ["boxH"] = 9552,
- ["boxV"] = 9553,
- ["boxdR"] = 9554,
- ["boxDr"] = 9555,
- ["boxDR"] = 9556,
- ["boxdL"] = 9557,
- ["boxDl"] = 9558,
- ["boxDL"] = 9559,
- ["boxuR"] = 9560,
- ["boxUr"] = 9561,
- ["boxUR"] = 9562,
- ["boxuL"] = 9563,
- ["boxUl"] = 9564,
- ["boxUL"] = 9565,
- ["boxvR"] = 9566,
- ["boxVr"] = 9567,
- ["boxVR"] = 9568,
- ["boxvL"] = 9569,
- ["boxVl"] = 9570,
- ["boxVL"] = 9571,
- ["boxHd"] = 9572,
- ["boxhD"] = 9573,
- ["boxHD"] = 9574,
- ["boxHu"] = 9575,
- ["boxhU"] = 9576,
- ["boxHU"] = 9577,
- ["boxvH"] = 9578,
- ["boxVh"] = 9579,
- ["boxVH"] = 9580,
- ["uhblk"] = 9600,
- ["lhblk"] = 9604,
- ["block"] = 9608,
- ["blk14"] = 9617,
- ["blk12"] = 9618,
- ["blk34"] = 9619,
- ["Square"] = 9633,
- ["squ"] = 9633,
- ["square"] = 9633,
- ["FilledVerySmallSquare"] = 9642,
- ["blacksquare"] = 9642,
- ["squarf"] = 9642,
- ["squf"] = 9642,
- ["EmptyVerySmallSquare"] = 9643,
- ["rect"] = 9645,
- ["marker"] = 9646,
- ["fltns"] = 9649,
- ["bigtriangleup"] = 9651,
- ["xutri"] = 9651,
- ["blacktriangle"] = 9652,
- ["utrif"] = 9652,
- ["triangle"] = 9653,
- ["utri"] = 9653,
- ["blacktriangleright"] = 9656,
- ["rtrif"] = 9656,
- ["rtri"] = 9657,
- ["triangleright"] = 9657,
- ["bigtriangledown"] = 9661,
- ["xdtri"] = 9661,
- ["blacktriangledown"] = 9662,
- ["dtrif"] = 9662,
- ["dtri"] = 9663,
- ["triangledown"] = 9663,
- ["blacktriangleleft"] = 9666,
- ["ltrif"] = 9666,
- ["ltri"] = 9667,
- ["triangleleft"] = 9667,
- ["loz"] = 9674,
- ["lozenge"] = 9674,
- ["cir"] = 9675,
- ["tridot"] = 9708,
- ["bigcirc"] = 9711,
- ["xcirc"] = 9711,
- ["ultri"] = 9720,
- ["urtri"] = 9721,
- ["lltri"] = 9722,
- ["EmptySmallSquare"] = 9723,
- ["FilledSmallSquare"] = 9724,
- ["bigstar"] = 9733,
- ["starf"] = 9733,
- ["star"] = 9734,
- ["phone"] = 9742,
- ["female"] = 9792,
- ["male"] = 9794,
- ["spades"] = 9824,
- ["spadesuit"] = 9824,
- ["clubs"] = 9827,
- ["clubsuit"] = 9827,
- ["hearts"] = 9829,
- ["heartsuit"] = 9829,
- ["diamondsuit"] = 9830,
- ["diams"] = 9830,
- ["sung"] = 9834,
- ["flat"] = 9837,
- ["natur"] = 9838,
- ["natural"] = 9838,
- ["sharp"] = 9839,
- ["check"] = 10003,
- ["checkmark"] = 10003,
- ["cross"] = 10007,
- ["malt"] = 10016,
- ["maltese"] = 10016,
- ["sext"] = 10038,
- ["VerticalSeparator"] = 10072,
- ["lbbrk"] = 10098,
- ["rbbrk"] = 10099,
- ["bsolhsub"] = 10184,
- ["suphsol"] = 10185,
- ["LeftDoubleBracket"] = 10214,
- ["lobrk"] = 10214,
- ["RightDoubleBracket"] = 10215,
- ["robrk"] = 10215,
- ["LeftAngleBracket"] = 10216,
- ["lang"] = 10216,
- ["langle"] = 10216,
- ["RightAngleBracket"] = 10217,
- ["rang"] = 10217,
- ["rangle"] = 10217,
- ["Lang"] = 10218,
- ["Rang"] = 10219,
- ["loang"] = 10220,
- ["roang"] = 10221,
- ["LongLeftArrow"] = 10229,
- ["longleftarrow"] = 10229,
- ["xlarr"] = 10229,
- ["LongRightArrow"] = 10230,
- ["longrightarrow"] = 10230,
- ["xrarr"] = 10230,
- ["LongLeftRightArrow"] = 10231,
- ["longleftrightarrow"] = 10231,
- ["xharr"] = 10231,
- ["DoubleLongLeftArrow"] = 10232,
- ["Longleftarrow"] = 10232,
- ["xlArr"] = 10232,
- ["DoubleLongRightArrow"] = 10233,
- ["Longrightarrow"] = 10233,
- ["xrArr"] = 10233,
- ["DoubleLongLeftRightArrow"] = 10234,
- ["Longleftrightarrow"] = 10234,
- ["xhArr"] = 10234,
- ["longmapsto"] = 10236,
- ["xmap"] = 10236,
- ["dzigrarr"] = 10239,
- ["nvlArr"] = 10498,
- ["nvrArr"] = 10499,
- ["nvHarr"] = 10500,
- ["Map"] = 10501,
- ["lbarr"] = 10508,
- ["bkarow"] = 10509,
- ["rbarr"] = 10509,
- ["lBarr"] = 10510,
- ["dbkarow"] = 10511,
- ["rBarr"] = 10511,
- ["RBarr"] = 10512,
- ["drbkarow"] = 10512,
- ["DDotrahd"] = 10513,
- ["UpArrowBar"] = 10514,
- ["DownArrowBar"] = 10515,
- ["Rarrtl"] = 10518,
- ["latail"] = 10521,
- ["ratail"] = 10522,
- ["lAtail"] = 10523,
- ["rAtail"] = 10524,
- ["larrfs"] = 10525,
- ["rarrfs"] = 10526,
- ["larrbfs"] = 10527,
- ["rarrbfs"] = 10528,
- ["nwarhk"] = 10531,
- ["nearhk"] = 10532,
- ["hksearow"] = 10533,
- ["searhk"] = 10533,
- ["hkswarow"] = 10534,
- ["swarhk"] = 10534,
- ["nwnear"] = 10535,
- ["nesear"] = 10536,
- ["toea"] = 10536,
- ["seswar"] = 10537,
- ["tosa"] = 10537,
- ["swnwar"] = 10538,
- ["nrarrc"] = {10547, 824},
- ["rarrc"] = 10547,
- ["cudarrr"] = 10549,
- ["ldca"] = 10550,
- ["rdca"] = 10551,
- ["cudarrl"] = 10552,
- ["larrpl"] = 10553,
- ["curarrm"] = 10556,
- ["cularrp"] = 10557,
- ["rarrpl"] = 10565,
- ["harrcir"] = 10568,
- ["Uarrocir"] = 10569,
- ["lurdshar"] = 10570,
- ["ldrushar"] = 10571,
- ["LeftRightVector"] = 10574,
- ["RightUpDownVector"] = 10575,
- ["DownLeftRightVector"] = 10576,
- ["LeftUpDownVector"] = 10577,
- ["LeftVectorBar"] = 10578,
- ["RightVectorBar"] = 10579,
- ["RightUpVectorBar"] = 10580,
- ["RightDownVectorBar"] = 10581,
- ["DownLeftVectorBar"] = 10582,
- ["DownRightVectorBar"] = 10583,
- ["LeftUpVectorBar"] = 10584,
- ["LeftDownVectorBar"] = 10585,
- ["LeftTeeVector"] = 10586,
- ["RightTeeVector"] = 10587,
- ["RightUpTeeVector"] = 10588,
- ["RightDownTeeVector"] = 10589,
- ["DownLeftTeeVector"] = 10590,
- ["DownRightTeeVector"] = 10591,
- ["LeftUpTeeVector"] = 10592,
- ["LeftDownTeeVector"] = 10593,
- ["lHar"] = 10594,
- ["uHar"] = 10595,
- ["rHar"] = 10596,
- ["dHar"] = 10597,
- ["luruhar"] = 10598,
- ["ldrdhar"] = 10599,
- ["ruluhar"] = 10600,
- ["rdldhar"] = 10601,
- ["lharul"] = 10602,
- ["llhard"] = 10603,
- ["rharul"] = 10604,
- ["lrhard"] = 10605,
- ["UpEquilibrium"] = 10606,
- ["udhar"] = 10606,
- ["ReverseUpEquilibrium"] = 10607,
- ["duhar"] = 10607,
- ["RoundImplies"] = 10608,
- ["erarr"] = 10609,
- ["simrarr"] = 10610,
- ["larrsim"] = 10611,
- ["rarrsim"] = 10612,
- ["rarrap"] = 10613,
- ["ltlarr"] = 10614,
- ["gtrarr"] = 10616,
- ["subrarr"] = 10617,
- ["suplarr"] = 10619,
- ["lfisht"] = 10620,
- ["rfisht"] = 10621,
- ["ufisht"] = 10622,
- ["dfisht"] = 10623,
- ["lopar"] = 10629,
- ["ropar"] = 10630,
- ["lbrke"] = 10635,
- ["rbrke"] = 10636,
- ["lbrkslu"] = 10637,
- ["rbrksld"] = 10638,
- ["lbrksld"] = 10639,
- ["rbrkslu"] = 10640,
- ["langd"] = 10641,
- ["rangd"] = 10642,
- ["lparlt"] = 10643,
- ["rpargt"] = 10644,
- ["gtlPar"] = 10645,
- ["ltrPar"] = 10646,
- ["vzigzag"] = 10650,
- ["vangrt"] = 10652,
- ["angrtvbd"] = 10653,
- ["ange"] = 10660,
- ["range"] = 10661,
- ["dwangle"] = 10662,
- ["uwangle"] = 10663,
- ["angmsdaa"] = 10664,
- ["angmsdab"] = 10665,
- ["angmsdac"] = 10666,
- ["angmsdad"] = 10667,
- ["angmsdae"] = 10668,
- ["angmsdaf"] = 10669,
- ["angmsdag"] = 10670,
- ["angmsdah"] = 10671,
- ["bemptyv"] = 10672,
- ["demptyv"] = 10673,
- ["cemptyv"] = 10674,
- ["raemptyv"] = 10675,
- ["laemptyv"] = 10676,
- ["ohbar"] = 10677,
- ["omid"] = 10678,
- ["opar"] = 10679,
- ["operp"] = 10681,
- ["olcross"] = 10683,
- ["odsold"] = 10684,
- ["olcir"] = 10686,
- ["ofcir"] = 10687,
- ["olt"] = 10688,
- ["ogt"] = 10689,
- ["cirscir"] = 10690,
- ["cirE"] = 10691,
- ["solb"] = 10692,
- ["bsolb"] = 10693,
- ["boxbox"] = 10697,
- ["trisb"] = 10701,
- ["rtriltri"] = 10702,
- ["LeftTriangleBar"] = 10703,
- ["NotLeftTriangleBar"] = {10703, 824},
- ["NotRightTriangleBar"] = {10704, 824},
- ["RightTriangleBar"] = 10704,
- ["iinfin"] = 10716,
- ["infintie"] = 10717,
- ["nvinfin"] = 10718,
- ["eparsl"] = 10723,
- ["smeparsl"] = 10724,
- ["eqvparsl"] = 10725,
- ["blacklozenge"] = 10731,
- ["lozf"] = 10731,
- ["RuleDelayed"] = 10740,
- ["dsol"] = 10742,
- ["bigodot"] = 10752,
- ["xodot"] = 10752,
- ["bigoplus"] = 10753,
- ["xoplus"] = 10753,
- ["bigotimes"] = 10754,
- ["xotime"] = 10754,
- ["biguplus"] = 10756,
- ["xuplus"] = 10756,
- ["bigsqcup"] = 10758,
- ["xsqcup"] = 10758,
- ["iiiint"] = 10764,
- ["qint"] = 10764,
- ["fpartint"] = 10765,
- ["cirfnint"] = 10768,
- ["awint"] = 10769,
- ["rppolint"] = 10770,
- ["scpolint"] = 10771,
- ["npolint"] = 10772,
- ["pointint"] = 10773,
- ["quatint"] = 10774,
- ["intlarhk"] = 10775,
- ["pluscir"] = 10786,
- ["plusacir"] = 10787,
- ["simplus"] = 10788,
- ["plusdu"] = 10789,
- ["plussim"] = 10790,
- ["plustwo"] = 10791,
- ["mcomma"] = 10793,
- ["minusdu"] = 10794,
- ["loplus"] = 10797,
- ["roplus"] = 10798,
- ["Cross"] = 10799,
- ["timesd"] = 10800,
- ["timesbar"] = 10801,
- ["smashp"] = 10803,
- ["lotimes"] = 10804,
- ["rotimes"] = 10805,
- ["otimesas"] = 10806,
- ["Otimes"] = 10807,
- ["odiv"] = 10808,
- ["triplus"] = 10809,
- ["triminus"] = 10810,
- ["tritime"] = 10811,
- ["intprod"] = 10812,
- ["iprod"] = 10812,
- ["amalg"] = 10815,
- ["capdot"] = 10816,
- ["ncup"] = 10818,
- ["ncap"] = 10819,
- ["capand"] = 10820,
- ["cupor"] = 10821,
- ["cupcap"] = 10822,
- ["capcup"] = 10823,
- ["cupbrcap"] = 10824,
- ["capbrcup"] = 10825,
- ["cupcup"] = 10826,
- ["capcap"] = 10827,
- ["ccups"] = 10828,
- ["ccaps"] = 10829,
- ["ccupssm"] = 10832,
- ["And"] = 10835,
- ["Or"] = 10836,
- ["andand"] = 10837,
- ["oror"] = 10838,
- ["orslope"] = 10839,
- ["andslope"] = 10840,
- ["andv"] = 10842,
- ["orv"] = 10843,
- ["andd"] = 10844,
- ["ord"] = 10845,
- ["wedbar"] = 10847,
- ["sdote"] = 10854,
- ["simdot"] = 10858,
- ["congdot"] = 10861,
- ["ncongdot"] = {10861, 824},
- ["easter"] = 10862,
- ["apacir"] = 10863,
- ["apE"] = 10864,
- ["napE"] = {10864, 824},
- ["eplus"] = 10865,
- ["pluse"] = 10866,
- ["Esim"] = 10867,
- ["Colone"] = 10868,
- ["Equal"] = 10869,
- ["ddotseq"] = 10871,
- ["eDDot"] = 10871,
- ["equivDD"] = 10872,
- ["ltcir"] = 10873,
- ["gtcir"] = 10874,
- ["ltquest"] = 10875,
- ["gtquest"] = 10876,
- ["LessSlantEqual"] = 10877,
- ["NotLessSlantEqual"] = {10877, 824},
- ["leqslant"] = 10877,
- ["les"] = 10877,
- ["nleqslant"] = {10877, 824},
- ["nles"] = {10877, 824},
- ["GreaterSlantEqual"] = 10878,
- ["NotGreaterSlantEqual"] = {10878, 824},
- ["geqslant"] = 10878,
- ["ges"] = 10878,
- ["ngeqslant"] = {10878, 824},
- ["nges"] = {10878, 824},
- ["lesdot"] = 10879,
- ["gesdot"] = 10880,
- ["lesdoto"] = 10881,
- ["gesdoto"] = 10882,
- ["lesdotor"] = 10883,
- ["gesdotol"] = 10884,
- ["lap"] = 10885,
- ["lessapprox"] = 10885,
- ["gap"] = 10886,
- ["gtrapprox"] = 10886,
- ["lne"] = 10887,
- ["lneq"] = 10887,
- ["gne"] = 10888,
- ["gneq"] = 10888,
- ["lnap"] = 10889,
- ["lnapprox"] = 10889,
- ["gnap"] = 10890,
- ["gnapprox"] = 10890,
- ["lEg"] = 10891,
- ["lesseqqgtr"] = 10891,
- ["gEl"] = 10892,
- ["gtreqqless"] = 10892,
- ["lsime"] = 10893,
- ["gsime"] = 10894,
- ["lsimg"] = 10895,
- ["gsiml"] = 10896,
- ["lgE"] = 10897,
- ["glE"] = 10898,
- ["lesges"] = 10899,
- ["gesles"] = 10900,
- ["els"] = 10901,
- ["eqslantless"] = 10901,
- ["egs"] = 10902,
- ["eqslantgtr"] = 10902,
- ["elsdot"] = 10903,
- ["egsdot"] = 10904,
- ["el"] = 10905,
- ["eg"] = 10906,
- ["siml"] = 10909,
- ["simg"] = 10910,
- ["simlE"] = 10911,
- ["simgE"] = 10912,
- ["LessLess"] = 10913,
- ["NotNestedLessLess"] = {10913, 824},
- ["GreaterGreater"] = 10914,
- ["NotNestedGreaterGreater"] = {10914, 824},
- ["glj"] = 10916,
- ["gla"] = 10917,
- ["ltcc"] = 10918,
- ["gtcc"] = 10919,
- ["lescc"] = 10920,
- ["gescc"] = 10921,
- ["smt"] = 10922,
- ["lat"] = 10923,
- ["smte"] = 10924,
- ["smtes"] = {10924, 65024},
- ["late"] = 10925,
- ["lates"] = {10925, 65024},
- ["bumpE"] = 10926,
- ["NotPrecedesEqual"] = {10927, 824},
- ["PrecedesEqual"] = 10927,
- ["npre"] = {10927, 824},
- ["npreceq"] = {10927, 824},
- ["pre"] = 10927,
- ["preceq"] = 10927,
- ["NotSucceedsEqual"] = {10928, 824},
- ["SucceedsEqual"] = 10928,
- ["nsce"] = {10928, 824},
- ["nsucceq"] = {10928, 824},
- ["sce"] = 10928,
- ["succeq"] = 10928,
- ["prE"] = 10931,
- ["scE"] = 10932,
- ["precneqq"] = 10933,
- ["prnE"] = 10933,
- ["scnE"] = 10934,
- ["succneqq"] = 10934,
- ["prap"] = 10935,
- ["precapprox"] = 10935,
- ["scap"] = 10936,
- ["succapprox"] = 10936,
- ["precnapprox"] = 10937,
- ["prnap"] = 10937,
- ["scnap"] = 10938,
- ["succnapprox"] = 10938,
- ["Pr"] = 10939,
- ["Sc"] = 10940,
- ["subdot"] = 10941,
- ["supdot"] = 10942,
- ["subplus"] = 10943,
- ["supplus"] = 10944,
- ["submult"] = 10945,
- ["supmult"] = 10946,
- ["subedot"] = 10947,
- ["supedot"] = 10948,
- ["nsubE"] = {10949, 824},
- ["nsubseteqq"] = {10949, 824},
- ["subE"] = 10949,
- ["subseteqq"] = 10949,
- ["nsupE"] = {10950, 824},
- ["nsupseteqq"] = {10950, 824},
- ["supE"] = 10950,
- ["supseteqq"] = 10950,
- ["subsim"] = 10951,
- ["supsim"] = 10952,
- ["subnE"] = 10955,
- ["subsetneqq"] = 10955,
- ["varsubsetneqq"] = {10955, 65024},
- ["vsubnE"] = {10955, 65024},
- ["supnE"] = 10956,
- ["supsetneqq"] = 10956,
- ["varsupsetneqq"] = {10956, 65024},
- ["vsupnE"] = {10956, 65024},
- ["csub"] = 10959,
- ["csup"] = 10960,
- ["csube"] = 10961,
- ["csupe"] = 10962,
- ["subsup"] = 10963,
- ["supsub"] = 10964,
- ["subsub"] = 10965,
- ["supsup"] = 10966,
- ["suphsub"] = 10967,
- ["supdsub"] = 10968,
- ["forkv"] = 10969,
- ["topfork"] = 10970,
- ["mlcp"] = 10971,
- ["Dashv"] = 10980,
- ["DoubleLeftTee"] = 10980,
- ["Vdashl"] = 10982,
- ["Barv"] = 10983,
- ["vBar"] = 10984,
- ["vBarv"] = 10985,
- ["Vbar"] = 10987,
- ["Not"] = 10988,
- ["bNot"] = 10989,
- ["rnmid"] = 10990,
- ["cirmid"] = 10991,
- ["midcir"] = 10992,
- ["topcir"] = 10993,
- ["nhpar"] = 10994,
- ["parsim"] = 10995,
- ["nparsl"] = {11005, 8421},
- ["parsl"] = 11005,
- ["fflig"] = 64256,
- ["filig"] = 64257,
- ["fllig"] = 64258,
- ["ffilig"] = 64259,
- ["ffllig"] = 64260,
- ["Ascr"] = 119964,
- ["Cscr"] = 119966,
- ["Dscr"] = 119967,
- ["Gscr"] = 119970,
- ["Jscr"] = 119973,
- ["Kscr"] = 119974,
- ["Nscr"] = 119977,
- ["Oscr"] = 119978,
- ["Pscr"] = 119979,
- ["Qscr"] = 119980,
- ["Sscr"] = 119982,
- ["Tscr"] = 119983,
- ["Uscr"] = 119984,
- ["Vscr"] = 119985,
- ["Wscr"] = 119986,
- ["Xscr"] = 119987,
- ["Yscr"] = 119988,
- ["Zscr"] = 119989,
- ["ascr"] = 119990,
- ["bscr"] = 119991,
- ["cscr"] = 119992,
- ["dscr"] = 119993,
- ["fscr"] = 119995,
- ["hscr"] = 119997,
- ["iscr"] = 119998,
- ["jscr"] = 119999,
- ["kscr"] = 120000,
- ["lscr"] = 120001,
- ["mscr"] = 120002,
- ["nscr"] = 120003,
- ["pscr"] = 120005,
- ["qscr"] = 120006,
- ["rscr"] = 120007,
- ["sscr"] = 120008,
- ["tscr"] = 120009,
- ["uscr"] = 120010,
- ["vscr"] = 120011,
- ["wscr"] = 120012,
- ["xscr"] = 120013,
- ["yscr"] = 120014,
- ["zscr"] = 120015,
- ["Afr"] = 120068,
- ["Bfr"] = 120069,
- ["Dfr"] = 120071,
- ["Efr"] = 120072,
- ["Ffr"] = 120073,
- ["Gfr"] = 120074,
- ["Jfr"] = 120077,
- ["Kfr"] = 120078,
- ["Lfr"] = 120079,
- ["Mfr"] = 120080,
- ["Nfr"] = 120081,
- ["Ofr"] = 120082,
- ["Pfr"] = 120083,
- ["Qfr"] = 120084,
- ["Sfr"] = 120086,
- ["Tfr"] = 120087,
- ["Ufr"] = 120088,
- ["Vfr"] = 120089,
- ["Wfr"] = 120090,
- ["Xfr"] = 120091,
- ["Yfr"] = 120092,
- ["afr"] = 120094,
- ["bfr"] = 120095,
- ["cfr"] = 120096,
- ["dfr"] = 120097,
- ["efr"] = 120098,
- ["ffr"] = 120099,
- ["gfr"] = 120100,
- ["hfr"] = 120101,
- ["ifr"] = 120102,
- ["jfr"] = 120103,
- ["kfr"] = 120104,
- ["lfr"] = 120105,
- ["mfr"] = 120106,
- ["nfr"] = 120107,
- ["ofr"] = 120108,
- ["pfr"] = 120109,
- ["qfr"] = 120110,
- ["rfr"] = 120111,
- ["sfr"] = 120112,
- ["tfr"] = 120113,
- ["ufr"] = 120114,
- ["vfr"] = 120115,
- ["wfr"] = 120116,
- ["xfr"] = 120117,
- ["yfr"] = 120118,
- ["zfr"] = 120119,
- ["Aopf"] = 120120,
- ["Bopf"] = 120121,
- ["Dopf"] = 120123,
- ["Eopf"] = 120124,
- ["Fopf"] = 120125,
- ["Gopf"] = 120126,
- ["Iopf"] = 120128,
- ["Jopf"] = 120129,
- ["Kopf"] = 120130,
- ["Lopf"] = 120131,
- ["Mopf"] = 120132,
- ["Oopf"] = 120134,
- ["Sopf"] = 120138,
- ["Topf"] = 120139,
- ["Uopf"] = 120140,
- ["Vopf"] = 120141,
- ["Wopf"] = 120142,
- ["Xopf"] = 120143,
- ["Yopf"] = 120144,
- ["aopf"] = 120146,
- ["bopf"] = 120147,
- ["copf"] = 120148,
- ["dopf"] = 120149,
- ["eopf"] = 120150,
- ["fopf"] = 120151,
- ["gopf"] = 120152,
- ["hopf"] = 120153,
- ["iopf"] = 120154,
- ["jopf"] = 120155,
- ["kopf"] = 120156,
- ["lopf"] = 120157,
- ["mopf"] = 120158,
- ["nopf"] = 120159,
- ["oopf"] = 120160,
- ["popf"] = 120161,
- ["qopf"] = 120162,
- ["ropf"] = 120163,
- ["sopf"] = 120164,
- ["topf"] = 120165,
- ["uopf"] = 120166,
- ["vopf"] = 120167,
- ["wopf"] = 120168,
- ["xopf"] = 120169,
- ["yopf"] = 120170,
- ["zopf"] = 120171,
-}
-function entities.dec_entity(s)
- local n = tonumber(s)
- if n == nil then
- return "&#" .. s .. ";" -- fallback for unknown entities
- end
- return unicode.utf8.char(n)
-end
-function entities.hex_entity(s)
- local n = tonumber("0x"..s)
- if n == nil then
- return "&#x" .. s .. ";" -- fallback for unknown entities
- end
- return unicode.utf8.char(n)
-end
-function entities.hex_entity_with_x_char(x, s)
- local n = tonumber("0x"..s)
- if n == nil then
- return "&#" .. x .. s .. ";" -- fallback for unknown entities
- end
- return unicode.utf8.char(n)
-end
-function entities.char_entity(s)
- local code_points = character_entities[s]
- if code_points == nil then
- return "&" .. s .. ";"
- end
- if type(code_points) ~= 'table' then
- code_points = {code_points}
- end
- local char_table = {}
- for _, code_point in ipairs(code_points) do
- table.insert(char_table, unicode.utf8.char(code_point))
- end
- return table.concat(char_table)
-end
-M.writer = {}
-function M.writer.new(options)
- local self = {}
- self.options = options
- self.flatten_inlines = false
- local slice_specifiers = {}
- for specifier in options.slice:gmatch("[^%s]+") do
- table.insert(slice_specifiers, specifier)
- end
-
- if #slice_specifiers == 2 then
- self.slice_begin, self.slice_end = table.unpack(slice_specifiers)
- local slice_begin_type = self.slice_begin:sub(1, 1)
- if slice_begin_type ~= "^" and slice_begin_type ~= "$" then
- self.slice_begin = "^" .. self.slice_begin
- end
- local slice_end_type = self.slice_end:sub(1, 1)
- if slice_end_type ~= "^" and slice_end_type ~= "$" then
- self.slice_end = "$" .. self.slice_end
- end
- elseif #slice_specifiers == 1 then
- self.slice_begin = "^" .. slice_specifiers[1]
- self.slice_end = "$" .. slice_specifiers[1]
- end
-
- self.slice_begin_type = self.slice_begin:sub(1, 1)
- self.slice_begin_identifier = self.slice_begin:sub(2) or ""
- self.slice_end_type = self.slice_end:sub(1, 1)
- self.slice_end_identifier = self.slice_end:sub(2) or ""
-
- if self.slice_begin == "^" and self.slice_end ~= "^" then
- self.is_writing = true
- else
- self.is_writing = false
- end
- self.suffix = ".tex"
- self.space = " "
- self.nbsp = "\\markdownRendererNbsp{}"
- function self.plain(s)
- return s
- end
- function self.paragraph(s)
- if not self.is_writing then return "" end
- return s
- end
- function self.pack(name)
- return [[\input{]] .. name .. [[}\relax]]
- end
- self.interblocksep_text = "\\markdownRendererInterblockSeparator\n{}"
- function self.interblocksep()
- if not self.is_writing then return "" end
- return self.interblocksep_text
- end
- self.paragraphsep_text = "\\markdownRendererParagraphSeparator\n{}"
- function self.paragraphsep()
- if not self.is_writing then return "" end
- return self.paragraphsep_text
- end
- self.undosep_text = "\\markdownRendererUndoSeparator\n{}"
- function self.undosep()
- if not self.is_writing then return "" end
- return self.undosep_text
- end
- self.soft_line_break = function()
- if self.flatten_inlines then return "\n" end
- return "\\markdownRendererSoftLineBreak\n{}"
- end
- self.hard_line_break = function()
- if self.flatten_inlines then return "\n" end
- return "\\markdownRendererHardLineBreak\n{}"
- end
- self.ellipsis = "\\markdownRendererEllipsis{}"
- function self.thematic_break()
- if not self.is_writing then return "" end
- return "\\markdownRendererThematicBreak{}"
- end
- self.escaped_uri_chars = {
- ["{"] = "\\markdownRendererLeftBrace{}",
- ["}"] = "\\markdownRendererRightBrace{}",
- ["\\"] = "\\markdownRendererBackslash{}",
- }
- self.escaped_minimal_strings = {
- ["^^"] = "\\markdownRendererCircumflex\\markdownRendererCircumflex ",
- ["☒"] = "\\markdownRendererTickedBox{}",
- ["⌛"] = "\\markdownRendererHalfTickedBox{}",
- ["☐"] = "\\markdownRendererUntickedBox{}",
- [entities.hex_entity('FFFD')] = "\\markdownRendererReplacementCharacter{}",
- }
- self.escaped_strings = util.table_copy(self.escaped_minimal_strings)
- self.escaped_strings[entities.hex_entity('00A0')] = self.nbsp
- self.escaped_chars = {
- ["{"] = "\\markdownRendererLeftBrace{}",
- ["}"] = "\\markdownRendererRightBrace{}",
- ["%"] = "\\markdownRendererPercentSign{}",
- ["\\"] = "\\markdownRendererBackslash{}",
- ["#"] = "\\markdownRendererHash{}",
- ["$"] = "\\markdownRendererDollarSign{}",
- ["&"] = "\\markdownRendererAmpersand{}",
- ["_"] = "\\markdownRendererUnderscore{}",
- ["^"] = "\\markdownRendererCircumflex{}",
- ["~"] = "\\markdownRendererTilde{}",
- ["|"] = "\\markdownRendererPipe{}",
- [entities.hex_entity('0000')] = "\\markdownRendererReplacementCharacter{}",
- }
- local function create_escaper(char_escapes, string_escapes)
- local escape = util.escaper(char_escapes, string_escapes)
- return function(s)
- if self.flatten_inlines then return s end
- return escape(s)
- end
- end
- local escape_typographic_text = create_escaper(
- self.escaped_chars, self.escaped_strings)
- local escape_programmatic_text = create_escaper(
- self.escaped_uri_chars, self.escaped_minimal_strings)
- local escape_minimal = create_escaper(
- {}, self.escaped_minimal_strings)
- self.escape = escape_typographic_text
- self.math = escape_minimal
- if options.hybrid then
- self.identifier = escape_minimal
- self.string = escape_minimal
- self.uri = escape_minimal
- self.infostring = escape_minimal
- else
- self.identifier = escape_programmatic_text
- self.string = escape_typographic_text
- self.uri = escape_programmatic_text
- self.infostring = escape_programmatic_text
- end
- function self.code(s, attributes)
- if self.flatten_inlines then return s end
- local buf = {}
- if attributes ~= nil then
- table.insert(buf,
- "\\markdownRendererCodeSpanAttributeContextBegin\n")
- table.insert(buf, self.attributes(attributes))
- end
- table.insert(buf,
- {"\\markdownRendererCodeSpan{", self.escape(s), "}"})
- if attributes ~= nil then
- table.insert(buf,
- "\\markdownRendererCodeSpanAttributeContextEnd{}")
- end
- return buf
- end
- function self.link(lab, src, tit, attributes)
- if self.flatten_inlines then return lab end
- local buf = {}
- if attributes ~= nil then
- table.insert(buf,
- "\\markdownRendererLinkAttributeContextBegin\n")
- table.insert(buf, self.attributes(attributes))
- end
- table.insert(buf, {"\\markdownRendererLink{",lab,"}",
- "{",self.escape(src),"}",
- "{",self.uri(src),"}",
- "{",self.string(tit or ""),"}"})
- if attributes ~= nil then
- table.insert(buf,
- "\\markdownRendererLinkAttributeContextEnd{}")
- end
- return buf
- end
- function self.image(lab, src, tit, attributes)
- if self.flatten_inlines then return lab end
- local buf = {}
- if attributes ~= nil then
- table.insert(buf,
- "\\markdownRendererImageAttributeContextBegin\n")
- table.insert(buf, self.attributes(attributes))
- end
- table.insert(buf, {"\\markdownRendererImage{",lab,"}",
- "{",self.string(src),"}",
- "{",self.uri(src),"}",
- "{",self.string(tit or ""),"}"})
- if attributes ~= nil then
- table.insert(buf,
- "\\markdownRendererImageAttributeContextEnd{}")
- end
- return buf
- end
- function self.bulletlist(items,tight)
- if not self.is_writing then return "" end
- local buffer = {}
- for _,item in ipairs(items) do
- if item ~= "" then
- buffer[#buffer + 1] = self.bulletitem(item)
- end
- end
- local contents = util.intersperse(buffer,"\n")
- if tight and options.tightLists then
- return {"\\markdownRendererUlBeginTight\n",contents,
- "\n\\markdownRendererUlEndTight "}
- else
- return {"\\markdownRendererUlBegin\n",contents,
- "\n\\markdownRendererUlEnd "}
- end
- end
- function self.bulletitem(s)
- return {"\\markdownRendererUlItem ",s,
- "\\markdownRendererUlItemEnd "}
- end
- function self.orderedlist(items,tight,startnum)
- if not self.is_writing then return "" end
- local buffer = {}
- local num = startnum
- for _,item in ipairs(items) do
- if item ~= "" then
- buffer[#buffer + 1] = self.ordereditem(item,num)
- end
- if num ~= nil and item ~= "" then
- num = num + 1
- end
- end
- local contents = util.intersperse(buffer,"\n")
- if tight and options.tightLists then
- return {"\\markdownRendererOlBeginTight\n",contents,
- "\n\\markdownRendererOlEndTight "}
- else
- return {"\\markdownRendererOlBegin\n",contents,
- "\n\\markdownRendererOlEnd "}
- end
- end
- function self.ordereditem(s,num)
- if num ~= nil then
- return {"\\markdownRendererOlItemWithNumber{",num,"}",s,
- "\\markdownRendererOlItemEnd "}
- else
- return {"\\markdownRendererOlItem ",s,
- "\\markdownRendererOlItemEnd "}
- end
- end
- function self.inline_html_comment(contents)
- if self.flatten_inlines then return contents end
- return {"\\markdownRendererInlineHtmlComment{",contents,"}"}
- end
- function self.inline_html_tag(contents)
- if self.flatten_inlines then return contents end
- return {"\\markdownRendererInlineHtmlTag{",self.string(contents),"}"}
- end
- function self.block_html_element(s)
- if not self.is_writing then return "" end
- local name = util.cache(options.cacheDir, s, nil, nil, ".verbatim")
- return {"\\markdownRendererInputBlockHtmlElement{",name,"}"}
- end
- function self.emphasis(s)
- if self.flatten_inlines then return s end
- return {"\\markdownRendererEmphasis{",s,"}"}
- end
- function self.tickbox(f)
- if f == 1.0 then
- return "☒ "
- elseif f == 0.0 then
- return "☐ "
- else
- return "⌛ "
- end
- end
- function self.strong(s)
- if self.flatten_inlines then return s end
- return {"\\markdownRendererStrongEmphasis{",s,"}"}
- end
- function self.blockquote(s)
- if not self.is_writing then return "" end
- return {"\\markdownRendererBlockQuoteBegin\n",s,
- "\\markdownRendererBlockQuoteEnd "}
- end
- function self.verbatim(s)
- if not self.is_writing then return "" end
- s = s:gsub("\n$", "")
- local name = util.cache_verbatim(options.cacheDir, s)
- return {"\\markdownRendererInputVerbatim{",name,"}"}
- end
- function self.document(d)
- local buf = {"\\markdownRendererDocumentBegin\n", d}
-
- -- pop all attributes
- table.insert(buf, self.pop_attributes())
-
- table.insert(buf, "\\markdownRendererDocumentEnd")
-
- return buf
- end
- local seen_identifiers = {}
- local key_value_regex = "([^= ]+)%s*=%s*(.*)"
- local function normalize_attributes(attributes, auto_identifiers)
- -- normalize attributes
- local normalized_attributes = {}
- local has_explicit_identifiers = false
- local key, value
- for _, attribute in ipairs(attributes or {}) do
- if attribute:sub(1, 1) == "#" then
- table.insert(normalized_attributes, attribute)
- has_explicit_identifiers = true
- seen_identifiers[attribute:sub(2)] = true
- elseif attribute:sub(1, 1) == "." then
- table.insert(normalized_attributes, attribute)
- else
- key, value = attribute:match(key_value_regex)
- if key:lower() == "id" then
- table.insert(normalized_attributes, "#" .. value)
- elseif key:lower() == "class" then
- local classes = {}
- for class in value:gmatch("%S+") do
- table.insert(classes, class)
- end
- table.sort(classes)
- for _, class in ipairs(classes) do
- table.insert(normalized_attributes, "." .. class)
- end
- else
- table.insert(normalized_attributes, attribute)
- end
- end
- end
-
- -- if no explicit identifiers exist, add auto identifiers
- if not has_explicit_identifiers and auto_identifiers ~= nil then
- local seen_auto_identifiers = {}
- for _, auto_identifier in ipairs(auto_identifiers) do
- if seen_auto_identifiers[auto_identifier] == nil then
- seen_auto_identifiers[auto_identifier] = true
- if seen_identifiers[auto_identifier] == nil then
- seen_identifiers[auto_identifier] = true
- table.insert(normalized_attributes,
- "#" .. auto_identifier)
- else
- local auto_identifier_number = 1
- while true do
- local numbered_auto_identifier = auto_identifier .. "-"
- .. auto_identifier_number
- if seen_identifiers[numbered_auto_identifier] == nil then
- seen_identifiers[numbered_auto_identifier] = true
- table.insert(normalized_attributes,
- "#" .. numbered_auto_identifier)
- break
- end
- auto_identifier_number = auto_identifier_number + 1
- end
- end
- end
- end
- end
-
- -- sort and deduplicate normalized attributes
- table.sort(normalized_attributes)
- local seen_normalized_attributes = {}
- local deduplicated_normalized_attributes = {}
- for _, attribute in ipairs(normalized_attributes) do
- if seen_normalized_attributes[attribute] == nil then
- seen_normalized_attributes[attribute] = true
- table.insert(deduplicated_normalized_attributes, attribute)
- end
- end
-
- return deduplicated_normalized_attributes
- end
-
- function self.attributes(attributes, should_normalize_attributes)
- local normalized_attributes
- if should_normalize_attributes == false then
- normalized_attributes = attributes
- else
- normalized_attributes = normalize_attributes(attributes)
- end
-
- local buf = {}
- local key, value
- for _, attribute in ipairs(normalized_attributes) do
- if attribute:sub(1, 1) == "#" then
- table.insert(buf, {"\\markdownRendererAttributeIdentifier{",
- attribute:sub(2), "}"})
- elseif attribute:sub(1, 1) == "." then
- table.insert(buf, {"\\markdownRendererAttributeClassName{",
- attribute:sub(2), "}"})
- else
- key, value = attribute:match(key_value_regex)
- table.insert(buf, {"\\markdownRendererAttributeKeyValue{",
- key, "}{", value, "}"})
- end
- end
-
- return buf
- end
- self.active_attributes = {}
- self.attribute_type_levels = {}
- setmetatable(self.attribute_type_levels,
- { __index = function() return 0 end })
- local function apply_attributes()
- local buf = {}
- for i = 1, #self.active_attributes do
- local start_output = self.active_attributes[i][3]
- if start_output ~= nil then
- table.insert(buf, start_output)
- end
- end
- return buf
- end
-
- local function tear_down_attributes()
- local buf = {}
- for i = #self.active_attributes, 1, -1 do
- local end_output = self.active_attributes[i][4]
- if end_output ~= nil then
- table.insert(buf, end_output)
- end
- end
- return buf
- end
- function self.push_attributes(attribute_type, attributes,
- start_output, end_output)
- local attribute_type_level = self.attribute_type_levels[attribute_type]
- self.attribute_type_levels[attribute_type] = attribute_type_level + 1
-
- -- index attributes in a hash table for easy lookup
- attributes = attributes or {}
- for i = 1, #attributes do
- attributes[attributes[i]] = true
- end
-
- local buf = {}
- -- handle slicing
- if attributes["#" .. self.slice_end_identifier] ~= nil and
- self.slice_end_type == "^" then
- if self.is_writing then
- table.insert(buf, self.undosep())
- table.insert(buf, tear_down_attributes())
- end
- self.is_writing = false
- end
- if attributes["#" .. self.slice_begin_identifier] ~= nil and
- self.slice_begin_type == "^" then
- table.insert(buf, apply_attributes())
- self.is_writing = true
- end
- if self.is_writing and start_output ~= nil then
- table.insert(buf, start_output)
- end
- table.insert(self.active_attributes,
- {attribute_type, attributes,
- start_output, end_output})
- return buf
- end
-
- function self.pop_attributes(attribute_type)
- local buf = {}
- -- pop attributes until we find attributes of correct type
- -- or until no attributes remain
- local current_attribute_type = false
- while current_attribute_type ~= attribute_type and
- #self.active_attributes > 0 do
- local attributes, _, end_output
- current_attribute_type, attributes, _, end_output = table.unpack(
- self.active_attributes[#self.active_attributes])
- local attribute_type_level = self.attribute_type_levels[current_attribute_type]
- self.attribute_type_levels[current_attribute_type] = attribute_type_level - 1
- if self.is_writing and end_output ~= nil then
- table.insert(buf, end_output)
- end
- table.remove(self.active_attributes, #self.active_attributes)
- -- handle slicing
- if attributes["#" .. self.slice_end_identifier] ~= nil
- and self.slice_end_type == "$" then
- if self.is_writing then
- table.insert(buf, self.undosep())
- table.insert(buf, tear_down_attributes())
- end
- self.is_writing = false
- end
- if attributes["#" .. self.slice_begin_identifier] ~= nil and
- self.slice_begin_type == "$" then
- self.is_writing = true
- table.insert(buf, apply_attributes())
- end
- end
- return buf
- end
- local function create_auto_identifier(s)
- local buffer = {}
- local prev_space = false
- local letter_found = false
- local normalized_s = s
- if not options.unicodeNormalization or options.unicodeNormalizationForm ~= "nfc" then
- normalized_s = uni_algos.normalize.NFC(normalized_s)
- end
-
- for _, code in utf8.codes(normalized_s) do
- local char = utf8.char(code)
-
- -- Remove everything up to the first letter.
- if not letter_found then
- local is_letter = unicode.utf8.match(char, "%a")
- if is_letter then
- letter_found = true
- else
- goto continue
- end
- end
-
- -- Remove all non-alphanumeric characters, except underscores, hyphens, and periods.
- if not unicode.utf8.match(char, "[%w_%-%.%s]") then
- goto continue
- end
-
- -- Replace all spaces and newlines with hyphens.
- if unicode.utf8.match(char, "[%s\n]") then
- char = "-"
- if prev_space then
- goto continue
- else
- prev_space = true
- end
- else
- -- Convert all alphabetic characters to lowercase.
- char = unicode.utf8.lower(char)
- prev_space = false
- end
-
- table.insert(buffer, char)
-
- ::continue::
- end
-
- if prev_space then
- table.remove(buffer)
- end
-
- local identifier = #buffer == 0 and "section" or table.concat(buffer, "")
- return identifier
- end
- local function create_gfm_auto_identifier(s)
- local buffer = {}
- local prev_space = false
- local letter_found = false
- local normalized_s = s
- if not options.unicodeNormalization or options.unicodeNormalizationForm ~= "nfc" then
- normalized_s = uni_algos.normalize.NFC(normalized_s)
- end
-
- for _, code in utf8.codes(normalized_s) do
- local char = utf8.char(code)
-
- -- Remove everything up to the first non-space.
- if not letter_found then
- local is_letter = unicode.utf8.match(char, "%S")
- if is_letter then
- letter_found = true
- else
- goto continue
- end
- end
-
- -- Remove all non-alphanumeric characters, except underscores and hyphens.
- if not unicode.utf8.match(char, "[%w_%-%s]") then
- prev_space = false
- goto continue
- end
-
- -- Replace all spaces and newlines with hyphens.
- if unicode.utf8.match(char, "[%s\n]") then
- char = "-"
- if prev_space then
- goto continue
- else
- prev_space = true
- end
- else
- -- Convert all alphabetic characters to lowercase.
- char = unicode.utf8.lower(char)
- prev_space = false
- end
-
- table.insert(buffer, char)
-
- ::continue::
- end
-
- if prev_space then
- table.remove(buffer)
- end
-
- local identifier = #buffer == 0 and "section" or table.concat(buffer, "")
- return identifier
- end
- self.secbegin_text = "\\markdownRendererSectionBegin\n"
- self.secend_text = "\n\\markdownRendererSectionEnd "
- function self.heading(s, level, attributes)
- local buf = {}
- local flat_text, inlines = table.unpack(s)
-
- -- push empty attributes for implied sections
- while self.attribute_type_levels["heading"] < level - 1 do
- table.insert(buf,
- self.push_attributes("heading",
- nil,
- self.secbegin_text,
- self.secend_text))
- end
-
- -- pop attributes for sections that have ended
- while self.attribute_type_levels["heading"] >= level do
- table.insert(buf, self.pop_attributes("heading"))
- end
-
- -- construct attributes for the new section
- local auto_identifiers = {}
- if self.options.autoIdentifiers then
- table.insert(auto_identifiers, create_auto_identifier(flat_text))
- end
- if self.options.gfmAutoIdentifiers then
- table.insert(auto_identifiers, create_gfm_auto_identifier(flat_text))
- end
- local normalized_attributes = normalize_attributes(attributes, auto_identifiers)
-
- -- push attributes for the new section
- local start_output = {}
- local end_output = {}
- table.insert(start_output, self.secbegin_text)
- table.insert(end_output, self.secend_text)
-
- table.insert(buf, self.push_attributes("heading",
- normalized_attributes,
- start_output,
- end_output))
- assert(self.attribute_type_levels["heading"] == level)
-
- -- render the heading and its attributes
- if self.is_writing and #normalized_attributes > 0 then
- table.insert(buf, "\\markdownRendererHeaderAttributeContextBegin\n")
- table.insert(buf, self.attributes(normalized_attributes, false))
- end
-
- local cmd
- level = level + options.shiftHeadings
- if level <= 1 then
- cmd = "\\markdownRendererHeadingOne"
- elseif level == 2 then
- cmd = "\\markdownRendererHeadingTwo"
- elseif level == 3 then
- cmd = "\\markdownRendererHeadingThree"
- elseif level == 4 then
- cmd = "\\markdownRendererHeadingFour"
- elseif level == 5 then
- cmd = "\\markdownRendererHeadingFive"
- elseif level >= 6 then
- cmd = "\\markdownRendererHeadingSix"
- else
- cmd = ""
- end
- if self.is_writing then
- table.insert(buf, {cmd, "{", inlines, "}"})
- end
-
- if self.is_writing and #normalized_attributes > 0 then
- table.insert(buf, "\\markdownRendererHeaderAttributeContextEnd{}")
- end
-
- return buf
- end
- function self.get_state()
- return {
- is_writing=self.is_writing,
- flatten_inlines=self.flatten_inlines,
- active_attributes={table.unpack(self.active_attributes)},
- }
- end
- function self.set_state(s)
- local previous_state = self.get_state()
- for key, value in pairs(s) do
- self[key] = value
- end
- return previous_state
- end
- function self.defer_call(f)
- local previous_state = self.get_state()
- return function(...)
- local state = self.set_state(previous_state)
- local return_value = f(...)
- self.set_state(state)
- return return_value
- end
- end
-
- return self
-end
-local parsers = {}
-parsers.percent = P("%")
-parsers.at = P("@")
-parsers.comma = P(",")
-parsers.asterisk = P("*")
-parsers.dash = P("-")
-parsers.plus = P("+")
-parsers.underscore = P("_")
-parsers.period = P(".")
-parsers.hash = P("#")
-parsers.dollar = P("$")
-parsers.ampersand = P("&")
-parsers.backtick = P("`")
-parsers.less = P("<")
-parsers.more = P(">")
-parsers.space = P(" ")
-parsers.squote = P("'")
-parsers.dquote = P('"')
-parsers.lparent = P("(")
-parsers.rparent = P(")")
-parsers.lbracket = P("[")
-parsers.rbracket = P("]")
-parsers.lbrace = P("{")
-parsers.rbrace = P("}")
-parsers.circumflex = P("^")
-parsers.slash = P("/")
-parsers.equal = P("=")
-parsers.colon = P(":")
-parsers.semicolon = P(";")
-parsers.exclamation = P("!")
-parsers.pipe = P("|")
-parsers.tilde = P("~")
-parsers.backslash = P("\\")
-parsers.tab = P("\t")
-parsers.newline = P("\n")
-
-parsers.digit = R("09")
-parsers.hexdigit = R("09","af","AF")
-parsers.letter = R("AZ","az")
-parsers.alphanumeric = R("AZ","az","09")
-parsers.keyword = parsers.letter
- * (parsers.alphanumeric + parsers.dash)^0
-
-parsers.doubleasterisks = P("**")
-parsers.doubleunderscores = P("__")
-parsers.doubletildes = P("~~")
-parsers.fourspaces = P(" ")
-
-parsers.any = P(1)
-parsers.succeed = P(true)
-parsers.fail = P(false)
-
-parsers.internal_punctuation = S(":;,.?")
-parsers.ascii_punctuation = S("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~")
-parsers.punctuation = {}
-(function()
- local pathname = kpse.lookup("UnicodeData.txt")
- local file = assert(io.open(pathname, "r"),
- [[Could not open file "UnicodeData.txt"]])
- 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 parsers.punctuation[#code] == nil then
- parsers.punctuation[#code] = parsers.fail
- end
- local code_parser = parsers.succeed
- for i = 1, #code do
- local byte = code:sub(i, i)
- local byte_parser = S(byte)
- code_parser = code_parser
- * byte_parser
- end
- parsers.punctuation[#code] = parsers.punctuation[#code]
- + code_parser
- end
- end
- assert(file:close())
-end)()
-
-parsers.escapable = parsers.ascii_punctuation
-parsers.anyescaped = parsers.backslash / "" * parsers.escapable
- + parsers.any
-
-parsers.spacechar = S("\t ")
-parsers.spacing = S(" \n\r\t")
-parsers.nonspacechar = parsers.any - parsers.spacing
-parsers.optionalspace = parsers.spacechar^0
-
-parsers.normalchar = parsers.any - (V("SpecialChar")
- + parsers.spacing)
-parsers.eof = -parsers.any
-parsers.nonindentspace = parsers.space^-3 * - parsers.spacechar
-parsers.indent = parsers.space^-3 * parsers.tab
- + parsers.fourspaces / ""
-parsers.linechar = P(1 - parsers.newline)
-
-parsers.blankline = parsers.optionalspace
- * parsers.newline / "\n"
-parsers.blanklines = parsers.blankline^0
-parsers.skipblanklines = (parsers.optionalspace * parsers.newline)^0
-parsers.indentedline = parsers.indent /""
- * C(parsers.linechar^1 * parsers.newline^-1)
-parsers.optionallyindentedline = parsers.indent^-1 /""
- * C(parsers.linechar^1 * parsers.newline^-1)
-parsers.sp = parsers.spacing^0
-parsers.spnl = parsers.optionalspace
- * (parsers.newline * parsers.optionalspace)^-1
-parsers.line = parsers.linechar^0 * parsers.newline
-parsers.nonemptyline = parsers.line - parsers.blankline
-
-parsers.leader = parsers.space^-3
-
-local function has_trail(indent_table)
- return indent_table ~= nil and
- indent_table.trail ~= nil and
- next(indent_table.trail) ~= nil
-end
-
-local function has_indents(indent_table)
- return indent_table ~= nil and
- indent_table.indents ~= nil and
- next(indent_table.indents) ~= nil
-end
-
-local function add_trail(indent_table, trail_info)
- indent_table.trail = trail_info
- return indent_table
-end
-
-local function remove_trail(indent_table)
- indent_table.trail = nil
- return indent_table
-end
-
-local function update_indent_table(indent_table, new_indent, add)
- indent_table = remove_trail(indent_table)
-
- if not has_indents(indent_table) then
- indent_table.indents = {}
- end
-
- if add then
- indent_table.indents[#indent_table.indents + 1] = new_indent
- else
- if indent_table.indents[#indent_table.indents].name == new_indent.name then
- indent_table.indents[#indent_table.indents] = nil
- end
- end
-
- return indent_table
-end
-
-local function remove_indent(name)
- local function remove_indent_level(s, i, indent_table) -- luacheck: ignore s i
- indent_table = update_indent_table(indent_table, {name=name}, false)
- return true, indent_table
- end
-
- return Cg(Cmt(Cb("indent_info"), remove_indent_level), "indent_info")
-end
-
-local function process_starter_spacing(indent, spacing, minimum, left_strip_length)
- left_strip_length = left_strip_length or 0
-
- local count = 0
- local tab_value = 4 - (indent) % 4
-
- local code_started, minimum_found = false, false
- local code_start, minimum_remainder = "", ""
-
- local left_total_stripped = 0
- local full_remainder = ""
-
- if spacing ~= nil then
- for i = 1, #spacing do
- local character = spacing:sub(i, i)
-
- if character == "\t" then
- count = count + tab_value
- tab_value = 4
- elseif character == " " then
- count = count + 1
- tab_value = 4 - (1 - tab_value) % 4
- end
-
- if (left_strip_length ~= 0) then
- local possible_to_strip = math.min(count, left_strip_length)
- count = count - possible_to_strip
- left_strip_length = left_strip_length - possible_to_strip
- left_total_stripped = left_total_stripped + possible_to_strip
- else
- full_remainder = full_remainder .. character
- end
-
- if (minimum_found) then
- minimum_remainder = minimum_remainder .. character
- elseif (count >= minimum) then
- minimum_found = true
- minimum_remainder = minimum_remainder .. string.rep(" ", count - minimum)
- end
-
- if (code_started) then
- code_start = code_start .. character
- elseif (count >= minimum + 4) then
- code_started = true
- code_start = code_start .. string.rep(" ", count - (minimum + 4))
- end
- end
- end
-
- local remainder
- if (code_started) then
- remainder = code_start
- else
- remainder = string.rep(" ", count - minimum)
- end
-
- local is_minimum = count >= minimum
- return {
- is_code = code_started,
- remainder = remainder,
- left_total_stripped = left_total_stripped,
- is_minimum = is_minimum,
- minimum_remainder = minimum_remainder,
- total_length = count,
- full_remainder = full_remainder
- }
-end
-
-local function count_indent_tab_level(indent_table)
- local count = 0
- if not has_indents(indent_table) then
- return count
- end
-
- for i=1, #indent_table.indents do
- count = count + indent_table.indents[i].length
- end
- return count
-end
-
-local function total_delimiter_length(delimiter)
- local count = 0
- if type(delimiter) == "string" then return #delimiter end
- for _, value in pairs(delimiter) do
- count = count + total_delimiter_length(value)
- end
- return count
-end
-
-local function process_starter_indent(_, _, indent_table, starter, is_blank, indent_type, breakable)
- local last_trail = starter[1]
- local delimiter = starter[2]
- local raw_new_trail = starter[3]
-
- if indent_type == "bq" and not breakable then
- indent_table.ignore_blockquote_blank = true
- end
-
- if has_trail(indent_table) then
- local trail = indent_table.trail
- if trail.is_code then
- return false
- end
- last_trail = trail.remainder
- else
- local sp = process_starter_spacing(0, last_trail, 0, 0)
-
- if sp.is_code then
- return false
- end
- last_trail = sp.remainder
- end
-
- local preceding_indentation = count_indent_tab_level(indent_table) % 4
- local last_trail_length = #last_trail
- local delimiter_length = total_delimiter_length(delimiter)
-
- local total_indent_level = preceding_indentation + last_trail_length + delimiter_length
-
- local sp = {}
- if not is_blank then
- sp = process_starter_spacing(total_indent_level, raw_new_trail, 0, 1)
- end
-
- local del_trail_length = sp.left_total_stripped
- if is_blank then
- del_trail_length = 1
- elseif not sp.is_code then
- del_trail_length = del_trail_length + #sp.remainder
- end
-
- local indent_length = last_trail_length + delimiter_length + del_trail_length
- local new_indent_info = {name=indent_type, length=indent_length}
-
- indent_table = update_indent_table(indent_table, new_indent_info, true)
- indent_table = add_trail(indent_table, {is_code=sp.is_code, remainder=sp.remainder, total_length=sp.total_length,
- full_remainder=sp.full_remainder})
-
- return true, indent_table
-end
-
-local function decode_pattern(name)
- local delimeter = parsers.succeed
- if name == "bq" then
- delimeter = parsers.more
- end
-
- return C(parsers.optionalspace) * C(delimeter) * C(parsers.optionalspace) * Cp()
-end
-
-local function left_blank_starter(indent_table)
- local blank_starter_index
-
- if not has_indents(indent_table) then
- return
- end
-
- for i = #indent_table.indents,1,-1 do
- local value = indent_table.indents[i]
- if value.name == "li" then
- blank_starter_index = i
- else
- break
- end
- end
-
- return blank_starter_index
-end
-
-local function traverse_indent(s, i, indent_table, is_optional, is_blank, current_line_indents)
- local new_index = i
-
- local preceding_indentation = 0
- local current_trail = {}
-
- local blank_starter = left_blank_starter(indent_table)
-
- if current_line_indents == nil then
- current_line_indents = {}
- end
-
- for index = 1,#indent_table.indents do
- local value = indent_table.indents[index]
- local pattern = decode_pattern(value.name)
-
- -- match decoded pattern
- local new_indent_info = lpeg.match(Ct(pattern), s, new_index)
- if new_indent_info == nil then
- local blankline_end = lpeg.match(Ct(parsers.blankline * Cg(Cp(), "pos")), s, new_index)
- if is_optional or not indent_table.ignore_blockquote_blank or not blankline_end then
- return is_optional, new_index, current_trail, current_line_indents
- end
-
- return traverse_indent(s, tonumber(blankline_end.pos), indent_table, is_optional, is_blank, current_line_indents)
- end
-
- local raw_last_trail = new_indent_info[1]
- local delimiter = new_indent_info[2]
- local raw_new_trail = new_indent_info[3]
- local next_index = new_indent_info[4]
-
- local space_only = delimiter == ""
-
- -- check previous trail
- if not space_only and next(current_trail) == nil then
- local sp = process_starter_spacing(0, raw_last_trail, 0, 0)
- current_trail = {is_code=sp.is_code, remainder=sp.remainder, total_length=sp.total_length,
- full_remainder=sp.full_remainder}
- end
-
- if next(current_trail) ~= nil then
- if not space_only and current_trail.is_code then
- return is_optional, new_index, current_trail, current_line_indents
- end
- if current_trail.internal_remainder ~= nil then
- raw_last_trail = current_trail.internal_remainder
- end
- end
-
- local raw_last_trail_length = 0
- local delimiter_length = 0
-
- if not space_only then
- delimiter_length = #delimiter
- raw_last_trail_length = #raw_last_trail
- end
-
- local total_indent_level = preceding_indentation + raw_last_trail_length + delimiter_length
-
- local spacing_to_process
- local minimum = 0
- local left_strip_length = 0
-
- if not space_only then
- spacing_to_process = raw_new_trail
- left_strip_length = 1
- else
- spacing_to_process = raw_last_trail
- minimum = value.length
- end
-
- local sp = process_starter_spacing(total_indent_level, spacing_to_process, minimum, left_strip_length)
-
- if space_only and not sp.is_minimum then
- return is_optional or (is_blank and blank_starter <= index), new_index, current_trail, current_line_indents
- end
-
- local indent_length = raw_last_trail_length + delimiter_length + sp.left_total_stripped
-
- -- update info for the next pattern
- if not space_only then
- preceding_indentation = preceding_indentation + indent_length
- else
- preceding_indentation = preceding_indentation + value.length
- end
-
- current_trail = {is_code=sp.is_code, remainder=sp.remainder, internal_remainder=sp.minimum_remainder,
- total_length=sp.total_length, full_remainder=sp.full_remainder}
-
- current_line_indents[#current_line_indents + 1] = new_indent_info
- new_index = next_index
- end
-
- return true, new_index, current_trail, current_line_indents
-end
-
-local function check_trail(expect_code, is_code)
- return (expect_code and is_code) or (not expect_code and not is_code)
-end
-
-local function check_trail_joined(s, i, indent_table, spacing, expect_code, omit_remainder) -- luacheck: ignore s i
- local is_code
- local remainder
-
- if has_trail(indent_table) then
- local trail = indent_table.trail
- is_code = trail.is_code
- if is_code then
- remainder = trail.remainder
- else
- remainder = trail.full_remainder
- end
- else
- local sp = process_starter_spacing(0, spacing, 0, 0)
- is_code = sp.is_code
- if is_code then
- remainder = sp.remainder
- else
- remainder = sp.full_remainder
- end
- end
-
- local result = check_trail(expect_code, is_code)
- if omit_remainder then
- return result
- end
- return result, remainder
-end
-
-local function check_trail_length(s, i, indent_table, spacing, min, max) -- luacheck: ignore s i
- local trail
-
- if has_trail(indent_table) then
- trail = indent_table.trail
- else
- trail = process_starter_spacing(0, spacing, 0, 0)
- end
-
- local total_length = trail.total_length
- if total_length == nil then
- return false
- end
-
- return min <= total_length and total_length <= max
-end
-
-local function check_continuation_indentation(s, i, indent_table, is_optional, is_blank)
- if not has_indents(indent_table) then
- return true
- end
-
- local passes, new_index, current_trail, current_line_indents =
- traverse_indent(s, i, indent_table, is_optional, is_blank)
-
- if passes then
- indent_table.current_line_indents = current_line_indents
- indent_table = add_trail(indent_table, current_trail)
- return new_index, indent_table
- end
- return false
-end
-
-local function get_last_indent_name(indent_table)
- if has_indents(indent_table) then
- return indent_table.indents[#indent_table.indents].name
- end
-end
-
-local function remove_remainder_if_blank(indent_table, remainder)
- if get_last_indent_name(indent_table) == "li" then
- return ""
- end
- return remainder
-end
-
-local function check_trail_type(s, i, trail, spacing, trail_type) -- luacheck: ignore s i
- if trail == nil then
- trail = process_starter_spacing(0, spacing, 0, 0)
- end
-
- if trail_type == "non-code" then
- return check_trail(false, trail.is_code)
- end
- if trail_type == "code" then
- return check_trail(true, trail.is_code)
- end
- if trail_type == "full-code" then
- if (trail.is_code) then
- return i, trail.remainder
- end
- return i, ""
- end
- if trail_type == "full-any" then
- return i, trail.internal_remainder
- end
-end
-
-local function trail_freezing(s, i, indent_table, is_freezing) -- luacheck: ignore s i
- if is_freezing then
- if indent_table.is_trail_frozen then
- indent_table.trail = indent_table.frozen_trail
- else
- indent_table.frozen_trail = indent_table.trail
- indent_table.is_trail_frozen = true
- end
- else
- indent_table.frozen_trail = nil
- indent_table.is_trail_frozen = false
- end
- return true, indent_table
-end
-
-local function check_continuation_indentation_and_trail(s, i, indent_table, is_optional, is_blank, trail_type,
- reset_rem, omit_remainder)
- if not has_indents(indent_table) then
- local spacing, new_index = lpeg.match(C(parsers.spacechar^0) * Cp(), s, i)
- local result, remainder = check_trail_type(s, i, indent_table.trail, spacing, trail_type)
- if remainder == nil then
- if result then
- return new_index
- end
- return false
- end
- if result then
- return new_index, remainder
- end
- return false
- end
-
- local passes, new_index, current_trail = traverse_indent(s, i, indent_table, is_optional, is_blank)
-
- if passes then
- local spacing
- if current_trail == nil then
- local newer_spacing, newer_index = lpeg.match(C(parsers.spacechar^0) * Cp(), s, i)
- current_trail = process_starter_spacing(0, newer_spacing, 0, 0)
- new_index = newer_index
- spacing = newer_spacing
- else
- spacing = current_trail.remainder
- end
- local result, remainder = check_trail_type(s, new_index, current_trail, spacing, trail_type)
- if remainder == nil or omit_remainder then
- if result then
- return new_index
- end
- return false
- end
-
- if is_blank and reset_rem then
- remainder = remove_remainder_if_blank(indent_table, remainder)
- end
- if result then
- return new_index, remainder
- end
- return false
- end
- return false
-end
-
-parsers.check_trail = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(false), check_trail_joined)
-
-parsers.check_trail_no_rem = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(false) * Cc(true), check_trail_joined)
-
-parsers.check_code_trail = Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(true), check_trail_joined)
-
-parsers.check_trail_length_range = function(min, max)
- return Cmt(Cb("indent_info") * C(parsers.spacechar^0) * Cc(min) * Cc(max), check_trail_length)
-end
-
-parsers.check_trail_length = function(n)
- return parsers.check_trail_length_range(n, n)
-end
-
-parsers.freeze_trail = Cg(Cmt(Cb("indent_info") * Cc(true), trail_freezing), "indent_info")
-
-parsers.unfreeze_trail = Cg(Cmt(Cb("indent_info") * Cc(false), trail_freezing), "indent_info")
-
-parsers.check_minimal_indent = Cmt(Cb("indent_info") * Cc(false), check_continuation_indentation)
-
-parsers.check_optional_indent = Cmt(Cb("indent_info") * Cc(true), check_continuation_indentation)
-
-parsers.check_minimal_blank_indent = Cmt(Cb("indent_info") * Cc(false) * Cc(true), check_continuation_indentation)
-
-
-parsers.check_minimal_indent_and_trail = Cmt( Cb("indent_info")
- * Cc(false) * Cc(false) * Cc("non-code") * Cc(true),
- check_continuation_indentation_and_trail)
-
-parsers.check_minimal_indent_and_code_trail = Cmt( Cb("indent_info")
- * Cc(false) * Cc(false) * Cc("code") * Cc(false),
- check_continuation_indentation_and_trail)
-
-parsers.check_minimal_blank_indent_and_full_code_trail = Cmt( Cb("indent_info")
- * Cc(false) * Cc(true) * Cc("full-code") * Cc(true),
- check_continuation_indentation_and_trail)
-
-parsers.check_minimal_indent_and_any_trail = Cmt( Cb("indent_info")
- * Cc(false) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false),
- check_continuation_indentation_and_trail)
-
-parsers.check_minimal_blank_indent_and_any_trail = Cmt( Cb("indent_info")
- * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false),
- check_continuation_indentation_and_trail)
-
-parsers.check_minimal_blank_indent_and_any_trail_no_rem = Cmt( Cb("indent_info")
- * Cc(false) * Cc(true) * Cc("full-any") * Cc(true) * Cc(true),
- check_continuation_indentation_and_trail)
-
-parsers.check_optional_indent_and_any_trail = Cmt( Cb("indent_info")
- * Cc(true) * Cc(false) * Cc("full-any") * Cc(true) * Cc(false),
- check_continuation_indentation_and_trail)
-
-parsers.check_optional_blank_indent_and_any_trail = Cmt( Cb("indent_info")
- * Cc(true) * Cc(true) * Cc("full-any") * Cc(true) * Cc(false),
- check_continuation_indentation_and_trail)
-
-
-parsers.spnlc_noexc = parsers.optionalspace
- * (parsers.newline * parsers.check_minimal_indent_and_any_trail)^-1
-
-parsers.spnlc = parsers.optionalspace
- * (V("EndlineNoSub"))^-1
-
-parsers.spnlc_sep = parsers.optionalspace * V("EndlineNoSub")
- + parsers.spacechar^1
-
-parsers.only_blank = parsers.spacechar^0 * (parsers.newline + parsers.eof)
-
-parsers.commented_line_letter = parsers.linechar
- + parsers.newline
- - parsers.backslash
- - parsers.percent
-parsers.commented_line = Cg(Cc(""), "backslashes")
- * ((#(parsers.commented_line_letter
- - parsers.newline)
- * Cb("backslashes")
- * Cs(parsers.commented_line_letter
- - parsers.newline)^1 -- initial
- * Cg(Cc(""), "backslashes"))
- + #(parsers.backslash * parsers.backslash)
- * Cg((parsers.backslash -- even backslash
- * parsers.backslash)^1, "backslashes")
- + (parsers.backslash
- * (#parsers.percent
- * Cb("backslashes")
- / function(backslashes)
- return string.rep("\\", #backslashes / 2)
- end
- * C(parsers.percent)
- + #parsers.commented_line_letter
- * Cb("backslashes")
- * Cc("\\")
- * C(parsers.commented_line_letter))
- * Cg(Cc(""), "backslashes")))^0
- * (#parsers.percent
- * Cb("backslashes")
- / function(backslashes)
- return string.rep("\\", #backslashes / 2)
- end
- * ((parsers.percent -- comment
- * parsers.line
- * #parsers.blankline) -- blank line
- / "\n"
- + parsers.percent -- comment
- * parsers.line
- * parsers.optionalspace) -- leading tabs and spaces
- + #(parsers.newline)
- * Cb("backslashes")
- * C(parsers.newline))
-
-parsers.chunk = parsers.line * (parsers.optionallyindentedline
- - parsers.blankline)^0
-
-parsers.attribute_key_char = parsers.alphanumeric + S("-_:.")
-parsers.attribute_raw_char = parsers.alphanumeric + S("-_")
-parsers.attribute_key = (parsers.attribute_key_char
- - parsers.dash - parsers.digit)
- * parsers.attribute_key_char^0
-parsers.attribute_value = ( (parsers.dquote / "")
- * (parsers.anyescaped - parsers.dquote)^0
- * (parsers.dquote / ""))
- + ( (parsers.squote / "")
- * (parsers.anyescaped - parsers.squote)^0
- * (parsers.squote / ""))
- + ( parsers.anyescaped - parsers.dquote - parsers.rbrace
- - parsers.space)^0
-parsers.attribute_identifier = parsers.attribute_key_char^1
-parsers.attribute_classname = parsers.letter
- * parsers.attribute_key_char^0
-parsers.attribute_raw = parsers.attribute_raw_char^1
-
-parsers.attribute = (parsers.dash * Cc(".unnumbered"))
- + C( parsers.hash
- * parsers.attribute_identifier)
- + C( parsers.period
- * parsers.attribute_classname)
- + Cs( parsers.attribute_key
- * parsers.optionalspace * parsers.equal * parsers.optionalspace
- * parsers.attribute_value)
-parsers.attributes = parsers.lbrace
- * parsers.optionalspace
- * parsers.attribute
- * (parsers.spacechar^1
- * parsers.attribute)^0
- * parsers.optionalspace
- * parsers.rbrace
-
-parsers.raw_attribute = parsers.lbrace
- * parsers.optionalspace
- * parsers.equal
- * C(parsers.attribute_raw)
- * parsers.optionalspace
- * parsers.rbrace
-
--- block followed by 0 or more optionally
--- indented blocks with first line indented.
-parsers.indented_blocks = function(bl)
- return Cs( bl
- * (parsers.blankline^1 * parsers.indent * -parsers.blankline * bl)^0
- * (parsers.blankline^1 + parsers.eof) )
-end
-local function repeat_between(pattern, min, max)
- return -pattern^(max + 1) * pattern^min
-end
-
-parsers.hexentity = parsers.ampersand * parsers.hash * C(S("Xx"))
- * C(repeat_between(parsers.hexdigit, 1, 6)) * parsers.semicolon
-parsers.decentity = parsers.ampersand * parsers.hash
- * C(repeat_between(parsers.digit, 1, 7)) * parsers.semicolon
-parsers.tagentity = parsers.ampersand * C(parsers.alphanumeric^1)
- * parsers.semicolon
-
-parsers.html_entities = parsers.hexentity / entities.hex_entity_with_x_char
- + parsers.decentity / entities.dec_entity
- + parsers.tagentity / entities.char_entity
-parsers.bullet = function(bullet_char, interrupting)
- local allowed_end
- if interrupting then
- allowed_end = C(parsers.spacechar^1) * #parsers.linechar
- else
- allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
- end
- return parsers.check_trail
- * Ct(C(bullet_char) * Cc(""))
- * allowed_end
-end
-
-local function tickbox(interior)
- return parsers.optionalspace * parsers.lbracket
- * interior * parsers.rbracket * parsers.spacechar^1
-end
-
-parsers.ticked_box = tickbox(S("xX")) * Cc(1.0)
-parsers.halfticked_box = tickbox(S("./")) * Cc(0.5)
-parsers.unticked_box = tickbox(parsers.spacechar^1) * Cc(0.0)
-
-parsers.openticks = Cg(parsers.backtick^1, "ticks")
-
-local function captures_equal_length(_,i,a,b)
- return #a == #b and i
-end
-
-parsers.closeticks = Cmt(C(parsers.backtick^1)
- * Cb("ticks"), captures_equal_length)
-
-parsers.intickschar = (parsers.any - S("\n\r`"))
- + V("NoSoftLineBreakEndline")
- + (parsers.backtick^1 - parsers.closeticks)
-
-local function process_inticks(s)
- s = s:gsub("\n", " ")
- s = s:gsub("^ (.*) $", "%1")
- return s
-end
-
-parsers.inticks = parsers.openticks
- * C(parsers.space^0)
- * parsers.closeticks
- + parsers.openticks
- * Cs(Cs(parsers.intickschar^0) / process_inticks)
- * parsers.closeticks
-
--- case-insensitive match (we assume s is lowercase). must be single byte encoding
-parsers.keyword_exact = function(s)
- local parser = P(0)
- for i=1,#s do
- local c = s:sub(i,i)
- local m = c .. upper(c)
- parser = parser * S(m)
- end
- return parser
-end
-
-parsers.special_block_keyword =
- parsers.keyword_exact("pre") +
- parsers.keyword_exact("script") +
- parsers.keyword_exact("style") +
- parsers.keyword_exact("textarea")
-
-parsers.block_keyword =
- parsers.keyword_exact("address") +
- parsers.keyword_exact("article") +
- parsers.keyword_exact("aside") +
- parsers.keyword_exact("base") +
- parsers.keyword_exact("basefont") +
- parsers.keyword_exact("blockquote") +
- parsers.keyword_exact("body") +
- parsers.keyword_exact("caption") +
- parsers.keyword_exact("center") +
- parsers.keyword_exact("col") +
- parsers.keyword_exact("colgroup") +
- parsers.keyword_exact("dd") +
- parsers.keyword_exact("details") +
- parsers.keyword_exact("dialog") +
- parsers.keyword_exact("dir") +
- parsers.keyword_exact("div") +
- parsers.keyword_exact("dl") +
- parsers.keyword_exact("dt") +
- parsers.keyword_exact("fieldset") +
- parsers.keyword_exact("figcaption") +
- parsers.keyword_exact("figure") +
- parsers.keyword_exact("footer") +
- parsers.keyword_exact("form") +
- parsers.keyword_exact("frame") +
- parsers.keyword_exact("frameset") +
- parsers.keyword_exact("h1") +
- parsers.keyword_exact("h2") +
- parsers.keyword_exact("h3") +
- parsers.keyword_exact("h4") +
- parsers.keyword_exact("h5") +
- parsers.keyword_exact("h6") +
- parsers.keyword_exact("head") +
- parsers.keyword_exact("header") +
- parsers.keyword_exact("hr") +
- parsers.keyword_exact("html") +
- parsers.keyword_exact("iframe") +
- parsers.keyword_exact("legend") +
- parsers.keyword_exact("li") +
- parsers.keyword_exact("link") +
- parsers.keyword_exact("main") +
- parsers.keyword_exact("menu") +
- parsers.keyword_exact("menuitem") +
- parsers.keyword_exact("nav") +
- parsers.keyword_exact("noframes") +
- parsers.keyword_exact("ol") +
- parsers.keyword_exact("optgroup") +
- parsers.keyword_exact("option") +
- parsers.keyword_exact("p") +
- parsers.keyword_exact("param") +
- parsers.keyword_exact("section") +
- parsers.keyword_exact("source") +
- parsers.keyword_exact("summary") +
- parsers.keyword_exact("table") +
- parsers.keyword_exact("tbody") +
- parsers.keyword_exact("td") +
- parsers.keyword_exact("tfoot") +
- parsers.keyword_exact("th") +
- parsers.keyword_exact("thead") +
- parsers.keyword_exact("title") +
- parsers.keyword_exact("tr") +
- parsers.keyword_exact("track") +
- parsers.keyword_exact("ul")
-
--- end conditions
-parsers.html_blankline_end_condition = parsers.linechar^0
- * ( parsers.newline
- * (parsers.check_minimal_blank_indent_and_any_trail
- * #parsers.blankline
- + parsers.check_minimal_indent_and_any_trail)
- * parsers.linechar^1)^0
- * (parsers.newline^-1 / "")
-
-local function remove_trailing_blank_lines(s)
- return s:gsub("[\n\r]+%s*$", "")
-end
-
-parsers.html_until_end = function(end_marker)
- return Cs(Cs((parsers.newline
- * (parsers.check_minimal_blank_indent_and_any_trail
- * #parsers.blankline
- + parsers.check_minimal_indent_and_any_trail)
- + parsers.linechar - end_marker)^0
- * parsers.linechar^0 * parsers.newline^-1)
- / remove_trailing_blank_lines)
-end
-
--- attributes
-parsers.html_attribute_spacing = parsers.optionalspace
- * V("NoSoftLineBreakEndline")
- * parsers.optionalspace
- + parsers.spacechar^1
-
-parsers.html_attribute_name = (parsers.letter + parsers.colon + parsers.underscore)
- * (parsers.alphanumeric + parsers.colon + parsers.underscore
- + parsers.period + parsers.dash)^0
-
-parsers.html_attribute_value = parsers.squote
- * (parsers.linechar - parsers.squote)^0
- * parsers.squote
- + parsers.dquote
- * (parsers.linechar - parsers.dquote)^0
- * parsers.dquote
- + ( parsers.any - parsers.spacechar - parsers.newline
- - parsers.dquote - parsers.squote - parsers.backtick
- - parsers.equal - parsers.less - parsers.more)^1
-
-parsers.html_inline_attribute_value = parsers.squote
- * (V("NoSoftLineBreakEndline")
- + parsers.any
- - parsers.blankline^2
- - parsers.squote)^0
- * parsers.squote
- + parsers.dquote
- * (V("NoSoftLineBreakEndline")
- + parsers.any
- - parsers.blankline^2
- - parsers.dquote)^0
- * parsers.dquote
- + (parsers.any - parsers.spacechar - parsers.newline
- - parsers.dquote - parsers.squote - parsers.backtick
- - parsers.equal - parsers.less - parsers.more)^1
-
-parsers.html_attribute_value_specification = parsers.optionalspace
- * parsers.equal
- * parsers.optionalspace
- * parsers.html_attribute_value
-
-parsers.html_spnl = parsers.optionalspace
- * (V("NoSoftLineBreakEndline") * parsers.optionalspace)^-1
-
-parsers.html_inline_attribute_value_specification = parsers.html_spnl
- * parsers.equal
- * parsers.html_spnl
- * parsers.html_inline_attribute_value
-
-parsers.html_attribute = parsers.html_attribute_spacing
- * parsers.html_attribute_name
- * parsers.html_inline_attribute_value_specification^-1
-
-parsers.html_non_newline_attribute = parsers.spacechar^1
- * parsers.html_attribute_name
- * parsers.html_attribute_value_specification^-1
-
-parsers.nested_breaking_blank = parsers.newline
- * parsers.check_minimal_blank_indent
- * parsers.blankline
-
-parsers.html_comment_start = P("<!--")
-
-parsers.html_comment_end = P("-->")
-
-parsers.html_comment = Cs( parsers.html_comment_start
- * parsers.html_until_end(parsers.html_comment_end))
-
-parsers.html_inline_comment = (parsers.html_comment_start / "")
- * -P(">") * -P("->")
- * Cs((V("NoSoftLineBreakEndline") + parsers.any
- - parsers.nested_breaking_blank - parsers.html_comment_end)^0)
- * (parsers.html_comment_end / "")
-
-parsers.html_cdatasection_start = P("<![CDATA[")
-
-parsers.html_cdatasection_end = P("]]>")
-
-parsers.html_cdatasection = Cs( parsers.html_cdatasection_start
- * parsers.html_until_end(parsers.html_cdatasection_end))
-
-parsers.html_inline_cdatasection = parsers.html_cdatasection_start
- * Cs(V("NoSoftLineBreakEndline") + parsers.any
- - parsers.nested_breaking_blank - parsers.html_cdatasection_end)^0
- * parsers.html_cdatasection_end
-
-parsers.html_declaration_start = P("<!") * parsers.letter
-
-parsers.html_declaration_end = P(">")
-
-parsers.html_declaration = Cs( parsers.html_declaration_start
- * parsers.html_until_end(parsers.html_declaration_end))
-
-parsers.html_inline_declaration = parsers.html_declaration_start
- * Cs(V("NoSoftLineBreakEndline") + parsers.any
- - parsers.nested_breaking_blank - parsers.html_declaration_end)^0
- * parsers.html_declaration_end
-
-parsers.html_instruction_start = P("<?")
-
-parsers.html_instruction_end = P("?>")
-
-parsers.html_instruction = Cs( parsers.html_instruction_start
- * parsers.html_until_end(parsers.html_instruction_end))
-
-parsers.html_inline_instruction = parsers.html_instruction_start
- * Cs(V("NoSoftLineBreakEndline") + parsers.any
- - parsers.nested_breaking_blank - parsers.html_instruction_end)^0
- * parsers.html_instruction_end
-
-parsers.html_blankline = parsers.newline
- * parsers.optionalspace
- * parsers.newline
-
-parsers.html_tag_start = parsers.less
-
-parsers.html_tag_closing_start = parsers.less
- * parsers.slash
-
-parsers.html_tag_end = parsers.html_spnl
- * parsers.more
-
-parsers.html_empty_tag_end = parsers.html_spnl
- * parsers.slash
- * parsers.more
-
--- opening tags
-parsers.html_any_open_inline_tag = parsers.html_tag_start
- * parsers.keyword
- * parsers.html_attribute^0
- * parsers.html_tag_end
-
-parsers.html_any_open_tag = parsers.html_tag_start
- * parsers.keyword
- * parsers.html_non_newline_attribute^0
- * parsers.html_tag_end
-
-parsers.html_open_tag = parsers.html_tag_start
- * parsers.block_keyword
- * parsers.html_attribute^0
- * parsers.html_tag_end
-
-parsers.html_open_special_tag = parsers.html_tag_start
- * parsers.special_block_keyword
- * parsers.html_attribute^0
- * parsers.html_tag_end
-
--- incomplete tags
-parsers.incomplete_tag_following = parsers.spacechar
- + parsers.more
- + parsers.slash * parsers.more
- + #(parsers.newline + parsers.eof)
-
-parsers.incomplete_special_tag_following = parsers.spacechar
- + parsers.more
- + #(parsers.newline + parsers.eof)
-
-parsers.html_incomplete_open_tag = parsers.html_tag_start
- * parsers.block_keyword
- * parsers.incomplete_tag_following
-
-parsers.html_incomplete_open_special_tag = parsers.html_tag_start
- * parsers.special_block_keyword
- * parsers.incomplete_special_tag_following
-
-parsers.html_incomplete_close_tag = parsers.html_tag_closing_start
- * parsers.block_keyword
- * parsers.incomplete_tag_following
-
-parsers.html_incomplete_close_special_tag = parsers.html_tag_closing_start
- * parsers.special_block_keyword
- * parsers.incomplete_tag_following
-
--- closing tags
-parsers.html_close_tag = parsers.html_tag_closing_start
- * parsers.block_keyword
- * parsers.html_tag_end
-
-parsers.html_any_close_tag = parsers.html_tag_closing_start
- * parsers.keyword
- * parsers.html_tag_end
-
-parsers.html_close_special_tag = parsers.html_tag_closing_start
- * parsers.special_block_keyword
- * parsers.html_tag_end
-
--- empty tags
-parsers.html_any_empty_inline_tag = parsers.html_tag_start
- * parsers.keyword
- * parsers.html_attribute^0
- * parsers.html_empty_tag_end
-
-parsers.html_any_empty_tag = parsers.html_tag_start
- * parsers.keyword
- * parsers.html_non_newline_attribute^0
- * parsers.optionalspace
- * parsers.slash
- * parsers.more
-
-parsers.html_empty_tag = parsers.html_tag_start
- * parsers.block_keyword
- * parsers.html_attribute^0
- * parsers.html_empty_tag_end
-
-parsers.html_empty_special_tag = parsers.html_tag_start
- * parsers.special_block_keyword
- * parsers.html_attribute^0
- * parsers.html_empty_tag_end
-
-parsers.html_incomplete_blocks = parsers.html_incomplete_open_tag
- + parsers.html_incomplete_open_special_tag
- + parsers.html_incomplete_close_tag
-
--- parse special html blocks
-parsers.html_blankline_ending_special_block_opening = (parsers.html_close_special_tag
- + parsers.html_empty_special_tag)
- * #(parsers.optionalspace
- * (parsers.newline + parsers.eof))
-
-parsers.html_blankline_ending_special_block = parsers.html_blankline_ending_special_block_opening
- * parsers.html_blankline_end_condition
-
-parsers.html_special_block_opening = parsers.html_incomplete_open_special_tag
- - parsers.html_empty_special_tag
-
-parsers.html_closing_special_block = parsers.html_special_block_opening
- * parsers.html_until_end(parsers.html_close_special_tag)
-
-parsers.html_special_block = parsers.html_blankline_ending_special_block
- + parsers.html_closing_special_block
-
--- parse html blocks
-parsers.html_block_opening = parsers.html_incomplete_open_tag
- + parsers.html_incomplete_close_tag
-
-parsers.html_block = parsers.html_block_opening
- * parsers.html_blankline_end_condition
-
--- parse any html blocks
-parsers.html_any_block_opening = (parsers.html_any_open_tag
- + parsers.html_any_close_tag
- + parsers.html_any_empty_tag)
- * #(parsers.optionalspace * (parsers.newline + parsers.eof))
-
-parsers.html_any_block = parsers.html_any_block_opening
- * parsers.html_blankline_end_condition
-
-parsers.html_inline_comment_full = parsers.html_comment_start
- * -P(">") * -P("->")
- * Cs((V("NoSoftLineBreakEndline") + parsers.any - P("--")
- - parsers.nested_breaking_blank - parsers.html_comment_end)^0)
- * parsers.html_comment_end
-
-parsers.html_inline_tags = parsers.html_inline_comment_full
- + parsers.html_any_empty_inline_tag
- + parsers.html_inline_instruction
- + parsers.html_inline_cdatasection
- + parsers.html_inline_declaration
- + parsers.html_any_open_inline_tag
- + parsers.html_any_close_tag
-
-parsers.urlchar = parsers.anyescaped
- - parsers.newline
- - parsers.more
-
-parsers.auto_link_scheme_part = parsers.alphanumeric
- + parsers.plus
- + parsers.period
- + parsers.dash
-
-parsers.auto_link_scheme = parsers.letter
- * parsers.auto_link_scheme_part
- * parsers.auto_link_scheme_part^-30
-
-parsers.absolute_uri = parsers.auto_link_scheme * parsers.colon
- * (parsers.any - parsers.spacing - parsers.less - parsers.more)^0
-
-parsers.printable_characters = S(".!#$%&'*+/=?^_`{|}~-")
-
-parsers.email_address_local_part_char = parsers.alphanumeric
- + parsers.printable_characters
-
-parsers.email_address_local_part = parsers.email_address_local_part_char^1
-
-parsers.email_address_dns_label = parsers.alphanumeric
- * (parsers.alphanumeric + parsers.dash)^-62
- * B(parsers.alphanumeric)
-
-parsers.email_address_domain = parsers.email_address_dns_label
- * (parsers.period * parsers.email_address_dns_label)^0
-
-parsers.email_address = parsers.email_address_local_part
- * parsers.at
- * parsers.email_address_domain
-
-parsers.auto_link_url = parsers.less
- * C(parsers.absolute_uri)
- * parsers.more
-
-parsers.auto_link_email = parsers.less
- * C(parsers.email_address)
- * parsers.more
-
-parsers.auto_link_relative_reference = parsers.less
- * C(parsers.urlchar^1)
- * parsers.more
-
-parsers.autolink = parsers.auto_link_url
- + parsers.auto_link_email
-
--- content in balanced brackets, parentheses, or quotes:
-parsers.bracketed = P{ parsers.lbracket
- * (( parsers.backslash / "" * parsers.rbracket
- + parsers.any - (parsers.lbracket
- + parsers.rbracket
- + parsers.blankline^2)
- ) + V(1))^0
- * parsers.rbracket }
-
-parsers.inparens = P{ parsers.lparent
- * ((parsers.anyescaped - (parsers.lparent
- + parsers.rparent
- + parsers.blankline^2)
- ) + V(1))^0
- * parsers.rparent }
-
-parsers.squoted = P{ parsers.squote * parsers.alphanumeric
- * ((parsers.anyescaped - (parsers.squote
- + parsers.blankline^2)
- ) + V(1))^0
- * parsers.squote }
-
-parsers.dquoted = P{ parsers.dquote * parsers.alphanumeric
- * ((parsers.anyescaped - (parsers.dquote
- + parsers.blankline^2)
- ) + V(1))^0
- * parsers.dquote }
-
-parsers.link_text = parsers.lbracket
- * Cs((parsers.alphanumeric^1
- + parsers.bracketed
- + parsers.inticks
- + parsers.autolink
- + V("InlineHtml")
- + ( parsers.backslash * parsers.backslash)
- + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
- + V("NoSoftLineBreakSpace")
- + V("NoSoftLineBreakEndline")
- + (parsers.any
- - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^0)
- * parsers.rbracket
-
-parsers.link_label_body = -#(parsers.sp * parsers.rbracket)
- * #((parsers.any - parsers.rbracket)^-999 * parsers.rbracket)
- * Cs((parsers.alphanumeric^1
- + parsers.inticks
- + parsers.autolink
- + V("InlineHtml")
- + ( parsers.backslash * parsers.backslash)
- + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
- + V("NoSoftLineBreakSpace")
- + V("NoSoftLineBreakEndline")
- + (parsers.any
- - (parsers.newline + parsers.lbracket + parsers.rbracket + parsers.blankline^2))))^1)
-
-parsers.link_label = parsers.lbracket
- * parsers.link_label_body
- * parsers.rbracket
-
-parsers.inparens_url = P{ parsers.lparent
- * ((parsers.anyescaped - (parsers.lparent
- + parsers.rparent
- + parsers.spacing)
- ) + V(1))^0
- * parsers.rparent }
-
--- url for markdown links, allowing nested brackets:
-parsers.url = parsers.less * Cs((parsers.anyescaped
- - parsers.newline
- - parsers.less
- - parsers.more)^0)
- * parsers.more
- + -parsers.less
- * Cs((parsers.inparens_url + (parsers.anyescaped
- - parsers.spacing
- - parsers.lparent
- - parsers.rparent))^1)
-
--- quoted text:
-parsers.title_s = parsers.squote
- * Cs((parsers.html_entities
- + V("NoSoftLineBreakSpace")
- + V("NoSoftLineBreakEndline")
- + (parsers.anyescaped - parsers.newline - parsers.squote - parsers.blankline^2))^0)
- * parsers.squote
-
-parsers.title_d = parsers.dquote
- * Cs((parsers.html_entities
- + V("NoSoftLineBreakSpace")
- + V("NoSoftLineBreakEndline")
- + (parsers.anyescaped - parsers.newline - parsers.dquote - parsers.blankline^2))^0)
- * parsers.dquote
-
-parsers.title_p = parsers.lparent
- * Cs((parsers.html_entities
- + V("NoSoftLineBreakSpace")
- + V("NoSoftLineBreakEndline")
- + (parsers.anyescaped - parsers.newline - parsers.lparent - parsers.rparent
- - parsers.blankline^2))^0)
- * parsers.rparent
-
-parsers.title = parsers.title_d + parsers.title_s + parsers.title_p
-
-parsers.optionaltitle
- = parsers.spnlc * parsers.title * parsers.spacechar^0
- + Cc("")
-
--- parse a reference definition: [foo]: /bar "title"
-parsers.define_reference_parser = (parsers.check_trail / "") * parsers.link_label * parsers.colon
- * parsers.spnlc * parsers.url
- * ( parsers.spnlc_sep * parsers.title * parsers.only_blank
- + Cc("") * parsers.only_blank)
-parsers.Inline = V("Inline")
-
--- parse many p between starter and ender
-parsers.between = function(p, starter, ender)
- local ender2 = B(parsers.nonspacechar) * ender
- return (starter * #parsers.nonspacechar * Ct(p * (p - ender2)^0) * ender2)
-end
-
-parsers.lineof = function(c)
- return (parsers.check_trail_no_rem * (P(c) * parsers.optionalspace)^3
- * (parsers.newline + parsers.eof))
-end
-
-parsers.thematic_break_lines = parsers.lineof(parsers.asterisk)
- + parsers.lineof(parsers.dash)
- + parsers.lineof(parsers.underscore)
--- parse Atx heading start and return level
-parsers.heading_start = #parsers.hash * C(parsers.hash^-6)
- * -parsers.hash / length
-
--- parse setext header ending and return level
-parsers.heading_level = parsers.nonindentspace * parsers.equal^1 * parsers.optionalspace * #parsers.newline * Cc(1)
- + parsers.nonindentspace * parsers.dash^1 * parsers.optionalspace * #parsers.newline * Cc(2)
-
-local function strip_atx_end(s)
- return s:gsub("%s+#*%s*\n$","")
-end
-
-parsers.atx_heading = parsers.check_trail_no_rem
- * Cg(parsers.heading_start, "level")
- * (C( parsers.optionalspace
- * parsers.hash^0
- * parsers.optionalspace
- * parsers.newline)
- + parsers.spacechar^1
- * C(parsers.line))
-M.reader = {}
-function M.reader.new(writer, options)
- local self = {}
- self.writer = writer
- self.options = options
- self.parsers = {}
- (function(parsers)
- setmetatable(self.parsers, {
- __index = function (_, key)
- return parsers[key]
- end
- })
- end)(parsers)
- local parsers = self.parsers
- function self.normalize_tag(tag)
- tag = util.rope_to_string(tag)
- tag = tag:gsub("[ \n\r\t]+", " ")
- tag = tag:gsub("^ ", ""):gsub(" $", "")
- tag = uni_algos.case.casefold(tag, true, false)
- return tag
- end
- local function iterlines(s, f)
- local rope = lpeg.match(Ct((parsers.line / f)^1), s)
- return util.rope_to_string(rope)
- end
- if options.preserveTabs then
- self.expandtabs = function(s) return s end
- else
- self.expandtabs = function(s)
- if s:find("\t") then
- return iterlines(s, util.expand_tabs_in_line)
- else
- return s
- end
- end
- end
- self.parser_functions = {}
- self.create_parser = function(name, grammar, toplevel)
- self.parser_functions[name] = function(str)
- if toplevel and options.stripIndent then
- local min_prefix_length, min_prefix = nil, ''
- str = iterlines(str, function(line)
- if lpeg.match(parsers.nonemptyline, line) == nil then
- return line
- end
- line = util.expand_tabs_in_line(line)
- local prefix = lpeg.match(C(parsers.optionalspace), line)
- local prefix_length = #prefix
- local is_shorter = min_prefix_length == nil
- is_shorter = is_shorter or prefix_length < min_prefix_length
- if is_shorter then
- min_prefix_length, min_prefix = prefix_length, prefix
- end
- return line
- end)
- str = str:gsub('^' .. min_prefix, '')
- end
- if toplevel and (options.texComments or options.hybrid) then
- str = lpeg.match(Ct(parsers.commented_line^1), str)
- str = util.rope_to_string(str)
- end
- local res = lpeg.match(grammar(), str)
- if res == nil then
- error(format("%s failed on:\n%s", name, str:sub(1,20)))
- else
- return res
- end
- end
- end
-
- self.create_parser("parse_blocks",
- function()
- return parsers.blocks
- end, true)
-
- self.create_parser("parse_blocks_nested",
- function()
- return parsers.blocks_nested
- end, false)
-
- self.create_parser("parse_inlines",
- function()
- return parsers.inlines
- end, false)
-
- self.create_parser("parse_inlines_no_inline_note",
- function()
- return parsers.inlines_no_inline_note
- end, false)
-
- self.create_parser("parse_inlines_no_html",
- function()
- return parsers.inlines_no_html
- end, false)
-
- self.create_parser("parse_inlines_nbsp",
- function()
- return parsers.inlines_nbsp
- end, false)
- self.create_parser("parse_inlines_no_link_or_emphasis",
- function()
- return parsers.inlines_no_link_or_emphasis
- end, false)
- parsers.minimally_indented_blankline = parsers.check_minimal_indent * (parsers.blankline / "")
-
- parsers.minimally_indented_block = parsers.check_minimal_indent * V("Block")
-
- parsers.minimally_indented_block_or_paragraph = parsers.check_minimal_indent * V("BlockOrParagraph")
-
- parsers.minimally_indented_paragraph = parsers.check_minimal_indent * V("Paragraph")
-
- parsers.minimally_indented_plain = parsers.check_minimal_indent * V("Plain")
-
- parsers.minimally_indented_par_or_plain = parsers.minimally_indented_paragraph
- + parsers.minimally_indented_plain
-
- parsers.minimally_indented_par_or_plain_no_blank = parsers.minimally_indented_par_or_plain
- - parsers.minimally_indented_blankline
-
- parsers.minimally_indented_ref = parsers.check_minimal_indent * V("Reference")
-
- parsers.minimally_indented_blank = parsers.check_minimal_indent * V("Blank")
-
- parsers.conditionally_indented_blankline = parsers.check_minimal_blank_indent * (parsers.blankline / "")
-
- parsers.minimally_indented_ref_or_block = parsers.minimally_indented_ref
- + parsers.minimally_indented_block
- - parsers.minimally_indented_blankline
-
- parsers.minimally_indented_ref_or_block_or_par = parsers.minimally_indented_ref
- + parsers.minimally_indented_block_or_paragraph
- - parsers.minimally_indented_blankline
-
-
- parsers.separator_loop = function(separated_block, paragraph, block_separator, paragraph_separator)
- return separated_block
- + block_separator
- * paragraph
- * separated_block
- + paragraph_separator
- * paragraph
- end
-
- parsers.create_loop_body_pair = function(separated_block, paragraph, block_separator, paragraph_separator)
- return {
- block = parsers.separator_loop(separated_block, paragraph, block_separator, block_separator),
- par = parsers.separator_loop(separated_block, paragraph, block_separator, paragraph_separator)
- }
- end
-
- parsers.block_sep_group = function(blank)
- return blank^0 * parsers.eof
- + ( blank^2 / writer.paragraphsep
- + blank^0 / writer.interblocksep
- )
- end
-
- parsers.par_sep_group = function(blank)
- return blank^0 * parsers.eof
- + blank^0 / writer.paragraphsep
- end
-
- parsers.sep_group_no_output = function(blank)
- return blank^0 * parsers.eof
- + blank^0
- end
-
- parsers.content_blank = parsers.minimally_indented_blankline
-
- parsers.ref_or_block_separated = parsers.sep_group_no_output(parsers.content_blank)
- * ( parsers.minimally_indented_ref
- - parsers.content_blank)
- + parsers.block_sep_group(parsers.content_blank)
- * ( parsers.minimally_indented_block
- - parsers.content_blank)
-
- parsers.loop_body_pair =
- parsers.create_loop_body_pair(parsers.ref_or_block_separated,
- parsers.minimally_indented_par_or_plain_no_blank,
- parsers.block_sep_group(parsers.content_blank),
- parsers.par_sep_group(parsers.content_blank))
-
- parsers.content_loop = ( V("Block")
- * parsers.loop_body_pair.block^0
- + (V("Paragraph") + V("Plain"))
- * parsers.ref_or_block_separated
- * parsers.loop_body_pair.block^0
- + (V("Paragraph") + V("Plain"))
- * parsers.loop_body_pair.par^0)
- * parsers.content_blank^0
-
- parsers.indented_content = function()
- return Ct( (V("Reference") + (parsers.blankline / ""))
- * parsers.content_blank^0
- * parsers.check_minimal_indent
- * parsers.content_loop
- + (V("Reference") + (parsers.blankline / ""))
- * parsers.content_blank^0
- + parsers.content_loop)
- end
-
- parsers.add_indent = function(pattern, name, breakable)
- return Cg(Cmt( Cb("indent_info")
- * Ct(pattern)
- * (#parsers.linechar * Cc(false) + Cc(true)) -- check if starter is blank
- * Cc(name)
- * Cc(breakable),
- process_starter_indent), "indent_info")
- end
-
- if options.hashEnumerators then
- parsers.dig = parsers.digit + parsers.hash
- else
- parsers.dig = parsers.digit
- end
-
- parsers.enumerator = function(delimiter_type, interrupting)
- local delimiter_range
- local allowed_end
- if interrupting then
- delimiter_range = P("1")
- allowed_end = C(parsers.spacechar^1) * #parsers.linechar
- else
- delimiter_range = parsers.dig * parsers.dig^-8
- allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
- end
-
- return parsers.check_trail
- * Ct(C(delimiter_range) * C(delimiter_type))
- * allowed_end
- end
-
- parsers.starter = parsers.bullet(parsers.dash)
- + parsers.bullet(parsers.asterisk)
- + parsers.bullet(parsers.plus)
- + parsers.enumerator(parsers.period)
- + parsers.enumerator(parsers.rparent)
-
- parsers.blockquote_start = parsers.check_trail * C(parsers.more) * C(parsers.spacechar^0)
-
- parsers.blockquote_body = parsers.add_indent(parsers.blockquote_start, "bq", true)
- * parsers.indented_content()
- * remove_indent("bq")
-
- if not options.breakableBlockquotes then
- parsers.blockquote_body = parsers.add_indent(parsers.blockquote_start, "bq", false)
- * parsers.indented_content()
- * remove_indent("bq")
- end
- local function parse_content_part(content_part)
- local rope = util.rope_to_string(content_part)
- local parsed = self.parser_functions.parse_inlines_no_link_or_emphasis(rope)
- parsed.indent_info = nil
- return parsed
- end
-
- local function collect_emphasis_content(t, opening_index, closing_index)
- local content = {}
-
- local content_part = {}
- for i = opening_index, closing_index do
- local value = t[i]
-
- if value.rendered ~= nil then
- content[#content + 1] = parse_content_part(content_part)
- content_part = {}
- content[#content + 1] = value.rendered
- value.rendered = nil
- else
- if value.type == "delimiter" and value.element == "emphasis" then
- if value.is_active then
- content_part[#content_part + 1] = string.rep(value.character, value.current_count)
- end
- else
- content_part[#content_part + 1] = value.content
- end
- value.content = ''
- value.is_active = false
- end
- end
-
- if next(content_part) ~= nil then
- content[#content + 1] = parse_content_part(content_part)
- end
-
- return content
- end
-
- local function fill_emph(t, opening_index, closing_index)
- local content = collect_emphasis_content(t, opening_index + 1, closing_index - 1)
- t[opening_index + 1].is_active = true
- t[opening_index + 1].rendered = writer.emphasis(content)
- end
-
- local function fill_strong(t, opening_index, closing_index)
- local content = collect_emphasis_content(t, opening_index + 1, closing_index - 1)
- t[opening_index + 1].is_active = true
- t[opening_index + 1].rendered = writer.strong(content)
- end
-
- local function breaks_three_rule(opening_delimiter, closing_delimiter)
- return (opening_delimiter.is_closing or closing_delimiter.is_opening) and
- ((opening_delimiter.original_count + closing_delimiter.original_count) % 3 == 0) and
- (opening_delimiter.original_count % 3 ~= 0 or closing_delimiter.original_count % 3 ~= 0)
- end
-
- local function find_emphasis_opener(t, bottom_index, latest_index, character, closing_delimiter)
- for i = latest_index, bottom_index, -1 do
- local value = t[i]
- if value.is_active and
- value.is_opening and
- value.type == "delimiter" and
- value.element == "emphasis" and
- (value.character == character) and
- (value.current_count > 0) then
- if not breaks_three_rule(value, closing_delimiter) then
- return i
- end
- end
- end
- end
-
- local function process_emphasis(t, opening_index, closing_index)
- for i = opening_index, closing_index do
- local value = t[i]
- if value.type == "delimiter" and value.element == "emphasis" then
- local delimiter_length = string.len(value.content)
- value.character = string.sub(value.content, 1, 1)
- value.current_count = delimiter_length
- value.original_count = delimiter_length
- end
- end
-
- local openers_bottom = {
- ['*'] = {
- [true] = {opening_index, opening_index, opening_index},
- [false] = {opening_index, opening_index, opening_index}
- },
- ['_'] = {
- [true] = {opening_index, opening_index, opening_index},
- [false] = {opening_index, opening_index, opening_index}
- }
- }
-
- local current_position = opening_index
- local max_position = closing_index
-
- while current_position <= max_position do
- local value = t[current_position]
-
- if value.type ~= "delimiter" or
- value.element ~= "emphasis" or
- not value.is_active or
- not value.is_closing or
- (value.current_count <= 0) then
- current_position = current_position + 1
- goto continue
- end
-
- local character = value.character
- local is_opening = value.is_opening
- local closing_length_modulo_three = value.original_count % 3
-
- local current_openers_bottom = openers_bottom[character][is_opening][closing_length_modulo_three + 1]
-
- local opener_position = find_emphasis_opener(t, current_openers_bottom, current_position - 1, character, value)
-
- if (opener_position == nil) then
- openers_bottom[character][is_opening][closing_length_modulo_three + 1] = current_position
- current_position = current_position + 1
- goto continue
- end
-
- local opening_delimiter = t[opener_position]
-
- local current_opening_count = opening_delimiter.current_count
- local current_closing_count = t[current_position].current_count
-
- if (current_opening_count >= 2) and (current_closing_count >= 2) then
- opening_delimiter.current_count = current_opening_count - 2
- t[current_position].current_count = current_closing_count - 2
- fill_strong(t, opener_position, current_position)
- else
- opening_delimiter.current_count = current_opening_count - 1
- t[current_position].current_count = current_closing_count - 1
- fill_emph(t, opener_position, current_position)
- end
-
- ::continue::
- end
- end
-
- local cont = lpeg.R("\128\191") -- continuation byte
-
- local function utf8_by_byte_count(n)
- if (n == 1) then
- return lpeg.R("\0\127")
- end
- if (n == 2) then
- return lpeg.R("\194\223") * cont
- end
- if (n == 3) then
- return lpeg.R("\224\239") * cont * cont
- end
- if (n == 4) then
- return lpeg.R("\240\244") * cont * cont * cont
- end
- end
- local function check_unicode_type(s, i, start_pos, end_pos, chartype)
- local c
- local char_length
- for pos = start_pos, end_pos, 1 do
- if (start_pos < 0) then
- char_length = -pos
- else
- char_length = pos + 1
- end
-
- if (chartype == "punctuation") then
- if lpeg.match(parsers.punctuation[char_length], s, i+pos) then
- return i
- end
- else
- c = lpeg.match({ C(utf8_by_byte_count(char_length)) },s,i+pos)
- if (c ~= nil) and (unicode.utf8.match(c, chartype)) then
- return i
- end
- end
- end
- end
-
- local function check_preceding_unicode_punctuation(s, i)
- return check_unicode_type(s, i, -4, -1, "punctuation")
- end
-
- local function check_preceding_unicode_whitespace(s, i)
- return check_unicode_type(s, i, -4, -1, "%s")
- end
-
- local function check_following_unicode_punctuation(s, i)
- return check_unicode_type(s, i, 0, 3, "punctuation")
- end
-
- local function check_following_unicode_whitespace(s, i)
- return check_unicode_type(s, i, 0, 3, "%s")
- end
-
- parsers.unicode_preceding_punctuation = B(parsers.escapable)
- + Cmt(parsers.succeed, check_preceding_unicode_punctuation)
-
- parsers.unicode_preceding_whitespace = Cmt(parsers.succeed, check_preceding_unicode_whitespace)
-
- parsers.unicode_following_punctuation = #parsers.escapable
- + Cmt(parsers.succeed, check_following_unicode_punctuation)
-
- parsers.unicode_following_whitespace = Cmt(parsers.succeed, check_following_unicode_whitespace)
-
- parsers.delimiter_run = function(character)
- return (B(parsers.backslash * character) + -B(character))
- * character^1
- * -#character
- end
-
- parsers.left_flanking_delimiter_run = function(character)
- return (B( parsers.any)
- * (parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace)
- + -B(parsers.any))
- * parsers.delimiter_run(character)
- * parsers.unicode_following_punctuation
- + parsers.delimiter_run(character)
- * -#(parsers.unicode_following_punctuation + parsers.unicode_following_whitespace
- + parsers.eof)
- end
-
- parsers.right_flanking_delimiter_run = function(character)
- return parsers.unicode_preceding_punctuation
- * parsers.delimiter_run(character)
- * (parsers.unicode_following_punctuation + parsers.unicode_following_whitespace
- + parsers.eof)
- + (B(parsers.any)
- * -(parsers.unicode_preceding_punctuation + parsers.unicode_preceding_whitespace))
- * parsers.delimiter_run(character)
- end
-
- if options.underscores then
- parsers.emph_start = parsers.left_flanking_delimiter_run(parsers.asterisk)
- + (-#parsers.right_flanking_delimiter_run(parsers.underscore)
- + (parsers.unicode_preceding_punctuation
- * #parsers.right_flanking_delimiter_run(parsers.underscore)))
- * parsers.left_flanking_delimiter_run(parsers.underscore)
-
- parsers.emph_end = parsers.right_flanking_delimiter_run(parsers.asterisk)
- + (-#parsers.left_flanking_delimiter_run(parsers.underscore)
- + #(parsers.left_flanking_delimiter_run(parsers.underscore)
- * parsers.unicode_following_punctuation))
- * parsers.right_flanking_delimiter_run(parsers.underscore)
- else
- parsers.emph_start = parsers.left_flanking_delimiter_run(parsers.asterisk)
-
- parsers.emph_end = parsers.right_flanking_delimiter_run(parsers.asterisk)
- end
-
- parsers.emph_capturing_open_and_close = #parsers.emph_start * #parsers.emph_end
- * Ct( Cg(Cc("delimiter"), "type")
- * Cg(Cc("emphasis"), "element")
- * Cg(C(parsers.emph_start), "content")
- * Cg(Cc(true), "is_opening")
- * Cg(Cc(true), "is_closing"))
-
- parsers.emph_capturing_open = Ct( Cg(Cc("delimiter"), "type")
- * Cg(Cc("emphasis"), "element")
- * Cg(C(parsers.emph_start), "content")
- * Cg(Cc(true), "is_opening")
- * Cg(Cc(false), "is_closing"))
-
- parsers.emph_capturing_close = Ct( Cg(Cc("delimiter"), "type")
- * Cg(Cc("emphasis"), "element")
- * Cg(C(parsers.emph_end), "content")
- * Cg(Cc(false), "is_opening")
- * Cg(Cc(true), "is_closing"))
-
- parsers.emph_open_or_close = parsers.emph_capturing_open_and_close
- + parsers.emph_capturing_open
- + parsers.emph_capturing_close
-
- parsers.emph_open = parsers.emph_capturing_open_and_close
- + parsers.emph_capturing_open
-
- parsers.emph_close = parsers.emph_capturing_open_and_close
- + parsers.emph_capturing_close
-
- -- List of references defined in the document
- local references
-
- -- List of note references defined in the document
- parsers.rawnotes = {}
-
- function self.register_link(_, tag, url, title,
- attributes)
- local normalized_tag = self.normalize_tag(tag)
- if references[normalized_tag] == nil then
- references[normalized_tag] = {
- url = url,
- title = title,
- attributes = attributes
- }
- end
- return ""
- end
-
- function self.lookup_reference(tag)
- return references[self.normalize_tag(tag)]
- end
-
- function self.lookup_note_reference(tag)
- return parsers.rawnotes[self.normalize_tag(tag)]
- end
-
- parsers.title_s_direct_ref = parsers.squote
- * Cs((parsers.html_entities
- + (parsers.anyescaped - parsers.squote - parsers.blankline^2))^0)
- * parsers.squote
-
- parsers.title_d_direct_ref = parsers.dquote
- * Cs((parsers.html_entities
- + (parsers.anyescaped - parsers.dquote - parsers.blankline^2))^0)
- * parsers.dquote
-
- parsers.title_p_direct_ref = parsers.lparent
- * Cs((parsers.html_entities
- + (parsers.anyescaped - parsers.lparent - parsers.rparent - parsers.blankline^2))^0)
- * parsers.rparent
-
- parsers.title_direct_ref = parsers.title_s_direct_ref
- + parsers.title_d_direct_ref
- + parsers.title_p_direct_ref
-
- parsers.inline_direct_ref_inside = parsers.lparent * parsers.spnl
- * Cg(parsers.url + Cc(""), "url")
- * parsers.spnl
- * Cg(parsers.title_direct_ref + Cc(""), "title")
- * parsers.spnl * parsers.rparent
-
- parsers.inline_direct_ref = parsers.lparent * parsers.spnlc
- * Cg(parsers.url + Cc(""), "url")
- * parsers.spnlc
- * Cg(parsers.title + Cc(""), "title")
- * parsers.spnlc * parsers.rparent
-
- parsers.empty_link = parsers.lbracket
- * parsers.rbracket
-
- parsers.inline_link = parsers.link_text
- * parsers.inline_direct_ref
-
- parsers.full_link = parsers.link_text
- * parsers.link_label
-
- parsers.shortcut_link = parsers.link_label
- * -(parsers.empty_link + parsers.link_label)
-
- parsers.collapsed_link = parsers.link_label
- * parsers.empty_link
-
- parsers.image_opening = #(parsers.exclamation * parsers.inline_link)
- * Cg(Cc("inline"), "link_type")
- + #(parsers.exclamation * parsers.full_link)
- * Cg(Cc("full"), "link_type")
- + #(parsers.exclamation * parsers.collapsed_link)
- * Cg(Cc("collapsed"), "link_type")
- + #(parsers.exclamation * parsers.shortcut_link)
- * Cg(Cc("shortcut"), "link_type")
- + #(parsers.exclamation * parsers.empty_link)
- * Cg(Cc("empty"), "link_type")
-
- parsers.link_opening = #parsers.inline_link
- * Cg(Cc("inline"), "link_type")
- + #parsers.full_link
- * Cg(Cc("full"), "link_type")
- + #parsers.collapsed_link
- * Cg(Cc("collapsed"), "link_type")
- + #parsers.shortcut_link
- * Cg(Cc("shortcut"), "link_type")
- + #parsers.empty_link
- * Cg(Cc("empty_link"), "link_type")
- + #parsers.link_text
- * Cg(Cc("link_text"), "link_type")
-
- parsers.note_opening = #(parsers.circumflex * parsers.shortcut_link)
- * Cg(Cc("note_inline"), "link_type")
-
- parsers.raw_note_opening = #( parsers.lbracket
- * parsers.circumflex
- * parsers.link_label_body
- * parsers.rbracket)
- * Cg(Cc("raw_note"), "link_type")
-
- local inline_note_element = Cg(Cc("note"), "element")
- * parsers.note_opening
- * Cg(parsers.circumflex * parsers.lbracket, "content")
-
- local image_element = Cg(Cc("image"), "element")
- * parsers.image_opening
- * Cg(parsers.exclamation * parsers.lbracket, "content")
-
- local note_element = Cg(Cc("note"), "element")
- * parsers.raw_note_opening
- * Cg(parsers.lbracket * parsers.circumflex, "content")
-
- local link_element = Cg(Cc("link"), "element")
- * parsers.link_opening
- * Cg(parsers.lbracket, "content")
-
- local opening_elements = parsers.fail
-
- if options.inlineNotes then
- opening_elements = opening_elements + inline_note_element
- end
-
- opening_elements = opening_elements + image_element
-
- if options.notes then
- opening_elements = opening_elements + note_element
- end
-
- opening_elements = opening_elements + link_element
-
- parsers.link_image_opening = Ct( Cg(Cc("delimiter"), "type")
- * Cg(Cc(true), "is_opening")
- * Cg(Cc(false), "is_closing")
- * opening_elements)
-
- parsers.link_image_closing = Ct( Cg(Cc("delimiter"), "type")
- * Cg(Cc("link"), "element")
- * Cg(Cc(false), "is_opening")
- * Cg(Cc(true), "is_closing")
- * ( Cg(Cc(true), "is_direct")
- * Cg(parsers.rbracket * #parsers.inline_direct_ref, "content")
- + Cg(Cc(false), "is_direct")
- * Cg(parsers.rbracket, "content")))
-
- parsers.link_image_open_or_close = parsers.link_image_opening
- + parsers.link_image_closing
-
- if options.html then
- parsers.link_emph_precedence = parsers.inticks
- + parsers.autolink
- + parsers.html_inline_tags
- else
- parsers.link_emph_precedence = parsers.inticks
- + parsers.autolink
- end
-
- parsers.link_and_emph_endline = parsers.newline
- * ((parsers.check_minimal_indent
- * -V("EndlineExceptions")
- + parsers.check_optional_indent
- * -V("EndlineExceptions")
- * -parsers.starter) / "")
- * parsers.spacechar^0 / "\n"
-
- parsers.link_and_emph_content = Ct( Cg(Cc("content"), "type")
- * Cg(Cs(( parsers.link_emph_precedence
- + parsers.backslash * parsers.any
- + parsers.link_and_emph_endline
- + (parsers.linechar
- - parsers.blankline^2
- - parsers.link_image_open_or_close
- - parsers.emph_open_or_close))^0), "content"))
-
- parsers.link_and_emph_table = (parsers.link_image_opening + parsers.emph_open)
- * parsers.link_and_emph_content
- * ((parsers.link_image_open_or_close + parsers.emph_open_or_close)
- * parsers.link_and_emph_content)^1
-
- local function collect_link_content(t, opening_index, closing_index)
- local content = {}
- for i = opening_index, closing_index do
- content[#content + 1] = t[i].content
- end
- return util.rope_to_string(content)
- end
-
- local function find_link_opener(t, bottom_index, latest_index)
- for i = latest_index, bottom_index, -1 do
- local value = t[i]
- if value.type == "delimiter" and
- value.is_opening and
- (value.element == "link" or value.element == "image" or value.element == "note")
- and not value.removed then
- if value.is_active then
- return i
- end
- value.removed = true
- return nil
- end
- end
- end
-
- local function find_next_link_closing_index(t, latest_index)
- for i = latest_index, #t do
- local value = t[i]
- if value.is_closing and
- value.element == "link" and
- not value.removed then
- return i
- end
- end
- end
-
- local function disable_previous_link_openers(t, opening_index)
- if t[opening_index].element == "image" then
- return
- end
-
- for i = opening_index, 1, -1 do
- local value = t[i]
- if value.is_active and
- value.type == "delimiter" and
- value.is_opening and
- value.element == "link" then
- value.is_active = false
- end
- end
- end
-
- local function disable_range(t, opening_index, closing_index)
- for i = opening_index, closing_index do
- local value = t[i]
- if value.is_active then
- value.is_active = false
- if value.type == "delimiter" then
- value.removed = true
- end
- end
- end
- end
-
- local function delete_parsed_content_in_range(t, opening_index, closing_index)
- for i = opening_index, closing_index do
- t[i].rendered = nil
- end
- end
-
- local function empty_content_in_range(t, opening_index, closing_index)
- for i = opening_index, closing_index do
- t[i].content = ''
- end
- end
-
- local function join_attributes(reference_attributes, own_attributes)
- local merged_attributes = {}
- for _, attribute in ipairs(reference_attributes or {}) do
- table.insert(merged_attributes, attribute)
- end
- for _, attribute in ipairs(own_attributes or {}) do
- table.insert(merged_attributes, attribute)
- end
- if next(merged_attributes) == nil then
- merged_attributes = nil
- end
- return merged_attributes
- end
-
- local function render_link_or_image(t, opening_index, closing_index, content_end_index, reference)
- process_emphasis(t, opening_index, content_end_index)
- local mapped = collect_emphasis_content(t, opening_index + 1, content_end_index - 1)
-
- local rendered = {}
- if (t[opening_index].element == "link") then
- rendered = writer.link(mapped, reference.url, reference.title, reference.attributes)
- end
-
- if (t[opening_index].element == "image") then
- rendered = writer.image(mapped, reference.url, reference.title, reference.attributes)
- end
-
- if (t[opening_index].element == "note") then
- if (t[opening_index].link_type == "note_inline") then
- rendered = writer.note(mapped)
- end
- if (t[opening_index].link_type == "raw_note") then
- rendered = writer.note(reference)
- end
- end
-
- t[opening_index].rendered = rendered
- delete_parsed_content_in_range(t, opening_index + 1, closing_index)
- empty_content_in_range(t, opening_index, closing_index)
- disable_previous_link_openers(t, opening_index)
- disable_range(t, opening_index, closing_index)
- end
-
- local function resolve_inline_following_content(t, closing_index, match_reference, match_link_attributes)
- local content = ""
- for i = closing_index + 1, #t do
- content = content .. t[i].content
- end
-
- local matching_content = parsers.succeed
-
- if match_reference then
- matching_content = matching_content * parsers.inline_direct_ref_inside
- end
-
- if match_link_attributes then
- matching_content = matching_content * Cg(Ct(parsers.attributes^-1), "attributes")
- end
-
- local matched = lpeg.match(Ct(matching_content * Cg(Cp(), "end_position")), content)
-
- local matched_count = matched.end_position - 1
- for i = closing_index + 1, #t do
- local value = t[i]
-
- local chars_left = matched_count
- matched_count = matched_count - #value.content
-
- if matched_count <= 0 then
- value.content = value.content:sub(chars_left + 1)
- break
- end
-
- value.content = ''
- value.is_active = false
- end
-
- local attributes = matched.attributes
- if attributes == nil or next(attributes) == nil then
- attributes = nil
- end
-
- return {
- url = matched.url or "",
- title = matched.title or "",
- attributes = attributes
- }
- end
-
- local function resolve_inline_link(t, opening_index, closing_index)
- local inline_content = resolve_inline_following_content(t, closing_index, true, t.match_link_attributes)
- render_link_or_image(t, opening_index, closing_index, closing_index, inline_content)
- end
-
- local function resolve_note_inline_link(t, opening_index, closing_index)
- local inline_content = resolve_inline_following_content(t, closing_index, false, false)
- render_link_or_image(t, opening_index, closing_index, closing_index, inline_content)
- end
-
- local function resolve_shortcut_link(t, opening_index, closing_index)
- local content = collect_link_content(t, opening_index + 1, closing_index - 1)
- local r = self.lookup_reference(content)
-
- if r then
- local inline_content = resolve_inline_following_content(t, closing_index, false, t.match_link_attributes)
- r.attributes = join_attributes(r.attributes, inline_content.attributes)
- render_link_or_image(t, opening_index, closing_index, closing_index, r)
- end
- end
-
- local function resolve_raw_note_link(t, opening_index, closing_index)
- local content = collect_link_content(t, opening_index + 1, closing_index - 1)
- local r = self.lookup_note_reference(content)
-
- if r then
- local parsed_ref = self.parser_functions.parse_blocks_nested(r)
- render_link_or_image(t, opening_index, closing_index, closing_index, parsed_ref)
- end
- end
-
- local function resolve_full_link(t, opening_index, closing_index)
- local next_link_closing_index = find_next_link_closing_index(t, closing_index + 4)
- local next_link_content = collect_link_content(t, closing_index + 3, next_link_closing_index - 1)
- local r = self.lookup_reference(next_link_content)
-
- if r then
- local inline_content = resolve_inline_following_content(t, next_link_closing_index, false,
- t.match_link_attributes)
- r.attributes = join_attributes(r.attributes, inline_content.attributes)
- render_link_or_image(t, opening_index, next_link_closing_index, closing_index, r)
- end
- end
-
- local function resolve_collapsed_link(t, opening_index, closing_index)
- local next_link_closing_index = find_next_link_closing_index(t, closing_index + 4)
- local content = collect_link_content(t, opening_index + 1, closing_index - 1)
- local r = self.lookup_reference(content)
-
- if r then
- local inline_content = resolve_inline_following_content(t, closing_index, false, t.match_link_attributes)
- r.attributes = join_attributes(r.attributes, inline_content.attributes)
- render_link_or_image(t, opening_index, next_link_closing_index, closing_index, r)
- end
- end
-
- local function process_links_and_emphasis(t)
- for _,value in ipairs(t) do
- value.is_active = true
- end
-
- for i,value in ipairs(t) do
- if not value.is_closing or
- value.type ~= "delimiter" or
- not (value.element == "link" or value.element == "image" or value.element == "note") then
- goto continue
- end
-
- local opener_position = find_link_opener(t, 1, i - 1)
- if (opener_position == nil) then
- goto continue
- end
-
- local opening_delimiter = t[opener_position]
- opening_delimiter.removed = true
-
- local link_type = opening_delimiter.link_type
-
- if (link_type == "inline") then
- resolve_inline_link(t, opener_position, i)
- end
- if (link_type == "shortcut") then
- resolve_shortcut_link(t, opener_position, i)
- end
- if (link_type == "full") then
- resolve_full_link(t, opener_position, i)
- end
- if (link_type == "collapsed") then
- resolve_collapsed_link(t, opener_position, i)
- end
- if (link_type == "note_inline") then
- resolve_note_inline_link(t, opener_position, i)
- end
- if (link_type == "raw_note") then
- resolve_raw_note_link(t, opener_position, i)
- end
-
- ::continue::
- end
-
- t[#t].content = t[#t].content:gsub("%s*$","")
-
- process_emphasis(t, 1, #t)
- local final_result = collect_emphasis_content(t, 1, #t)
- return final_result
- end
-
- function self.defer_link_and_emphasis_processing(delimiter_table)
- return writer.defer_call(function()
- return process_links_and_emphasis(delimiter_table)
- end)
- end
-
- parsers.Str = (parsers.normalchar * (parsers.normalchar + parsers.at)^0)
- / writer.string
-
- parsers.Symbol = (parsers.backtick^1 + V("SpecialChar"))
- / writer.string
-
- parsers.Ellipsis = P("...") / writer.ellipsis
-
- parsers.Smart = parsers.Ellipsis
-
- parsers.Code = parsers.inticks / writer.code
-
- if options.blankBeforeBlockquote then
- parsers.bqstart = parsers.fail
- else
- parsers.bqstart = parsers.blockquote_start
- end
-
- if options.blankBeforeHeading then
- parsers.headerstart = parsers.fail
- else
- parsers.headerstart = parsers.atx_heading
- end
-
- if options.blankBeforeList then
- parsers.interrupting_bullets = parsers.fail
- parsers.interrupting_enumerators = parsers.fail
- else
- parsers.interrupting_bullets = parsers.bullet(parsers.dash, true)
- + parsers.bullet(parsers.asterisk, true)
- + parsers.bullet(parsers.plus, true)
-
- parsers.interrupting_enumerators = parsers.enumerator(parsers.period, true)
- + parsers.enumerator(parsers.rparent, true)
- end
-
- if options.html then
- parsers.html_interrupting = parsers.check_trail
- * ( parsers.html_incomplete_open_tag
- + parsers.html_incomplete_close_tag
- + parsers.html_incomplete_open_special_tag
- + parsers.html_comment_start
- + parsers.html_cdatasection_start
- + parsers.html_declaration_start
- + parsers.html_instruction_start
- - parsers.html_close_special_tag
- - parsers.html_empty_special_tag)
- else
- parsers.html_interrupting = parsers.fail
- end
-
- parsers.EndlineExceptions
- = parsers.blankline -- paragraph break
- + parsers.eof -- end of document
- + parsers.bqstart
- + parsers.thematic_break_lines
- + parsers.interrupting_bullets
- + parsers.interrupting_enumerators
- + parsers.headerstart
- + parsers.html_interrupting
-
- parsers.NoSoftLineBreakEndlineExceptions = parsers.EndlineExceptions
-
- parsers.endline = parsers.newline
- * (parsers.check_minimal_indent
- * -V("EndlineExceptions")
- + parsers.check_optional_indent
- * -V("EndlineExceptions")
- * -parsers.starter)
- * parsers.spacechar^0
-
- parsers.Endline = parsers.endline
- / writer.soft_line_break
-
- parsers.EndlineNoSub = parsers.endline
-
- parsers.NoSoftLineBreakEndline
- = parsers.newline
- * (parsers.check_minimal_indent
- * -V("NoSoftLineBreakEndlineExceptions")
- + parsers.check_optional_indent
- * -V("NoSoftLineBreakEndlineExceptions")
- * -parsers.starter)
- * parsers.spacechar^0
- / writer.space
-
- parsers.EndlineBreak = parsers.backslash * parsers.Endline
- / writer.hard_line_break
-
- parsers.OptionalIndent
- = parsers.spacechar^1 / writer.space
-
- parsers.Space = parsers.spacechar^2 * parsers.Endline
- / writer.hard_line_break
- + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / self.expandtabs
- + parsers.spacechar^1 * parsers.Endline
- / writer.soft_line_break
- + parsers.spacechar^1 * -parsers.newline / self.expandtabs
-
- parsers.NoSoftLineBreakSpace
- = parsers.spacechar^2 * parsers.Endline
- / writer.hard_line_break
- + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / self.expandtabs
- + parsers.spacechar^1 * parsers.Endline
- / writer.soft_line_break
- + parsers.spacechar^1 * -parsers.newline / self.expandtabs
-
- parsers.NonbreakingEndline
- = parsers.endline
- / writer.soft_line_break
-
- parsers.NonbreakingSpace
- = parsers.spacechar^2 * parsers.Endline
- / writer.hard_line_break
- + parsers.spacechar^1 * parsers.Endline^-1 * parsers.eof / ""
- + parsers.spacechar^1 * parsers.Endline
- * parsers.optionalspace
- / writer.soft_line_break
- + parsers.spacechar^1 * parsers.optionalspace
- / writer.nbsp
-
-function self.auto_link_url(url, attributes)
- return writer.link(writer.escape(url),
- url, nil, attributes)
-end
-function self.auto_link_email(email, attributes)
- return writer.link(writer.escape(email),
- "mailto:"..email,
- nil, attributes)
-end
-
- parsers.AutoLinkUrl = parsers.auto_link_url
- / self.auto_link_url
-
- parsers.AutoLinkEmail
- = parsers.auto_link_email
- / self.auto_link_email
-
- parsers.AutoLinkRelativeReference
- = parsers.auto_link_relative_reference
- / self.auto_link_url
-
- parsers.LinkAndEmph = Ct(parsers.link_and_emph_table)
- / self.defer_link_and_emphasis_processing
-
- parsers.EscapedChar = parsers.backslash * C(parsers.escapable) / writer.string
-
- parsers.InlineHtml = Cs(parsers.html_inline_comment) / writer.inline_html_comment
- + Cs(parsers.html_any_empty_inline_tag
- + parsers.html_inline_instruction
- + parsers.html_inline_cdatasection
- + parsers.html_inline_declaration
- + parsers.html_any_open_inline_tag
- + parsers.html_any_close_tag)
- / writer.inline_html_tag
-
- parsers.HtmlEntity = parsers.html_entities / writer.string
- parsers.DisplayHtml = Cs(parsers.check_trail
- * ( parsers.html_comment
- + parsers.html_special_block
- + parsers.html_block
- + parsers.html_any_block
- + parsers.html_instruction
- + parsers.html_cdatasection
- + parsers.html_declaration))
- / writer.block_html_element
-
- parsers.indented_non_blank_line = parsers.indentedline - parsers.blankline
-
- parsers.Verbatim = Cs(
- parsers.check_code_trail
- * (parsers.line - parsers.blankline)
- * ((parsers.check_minimal_blank_indent_and_full_code_trail * parsers.blankline)^0
- * ((parsers.check_minimal_indent / "") * parsers.check_code_trail
- * (parsers.line - parsers.blankline))^1)^0
- ) / self.expandtabs / writer.verbatim
-
- parsers.Blockquote = parsers.blockquote_body
- / writer.blockquote
-
- parsers.ThematicBreak = parsers.thematic_break_lines
- / writer.thematic_break
-
- parsers.Reference = parsers.define_reference_parser
- / self.register_link
-
- parsers.Paragraph = parsers.freeze_trail
- * (Ct((parsers.Inline)^1)
- * (parsers.newline + parsers.eof)
- * parsers.unfreeze_trail
- / writer.paragraph)
-
- parsers.Plain = parsers.nonindentspace * Ct(parsers.Inline^1)
- / writer.plain
-
- if options.taskLists then
- parsers.tickbox = ( parsers.ticked_box
- + parsers.halfticked_box
- + parsers.unticked_box
- ) / writer.tickbox
- else
- parsers.tickbox = parsers.fail
- end
-
- parsers.list_blank = parsers.conditionally_indented_blankline
-
- parsers.ref_or_block_list_separated = parsers.sep_group_no_output(parsers.list_blank)
- * parsers.minimally_indented_ref
- + parsers.block_sep_group(parsers.list_blank)
- * parsers.minimally_indented_block
-
- parsers.ref_or_block_non_separated = parsers.minimally_indented_ref
- + (parsers.succeed / writer.interblocksep)
- * parsers.minimally_indented_block
- - parsers.minimally_indented_blankline
-
- parsers.tight_list_loop_body_pair =
- parsers.create_loop_body_pair(parsers.ref_or_block_non_separated,
- parsers.minimally_indented_par_or_plain_no_blank,
- (parsers.succeed / writer.interblocksep),
- (parsers.succeed / writer.paragraphsep))
-
- parsers.loose_list_loop_body_pair =
- parsers.create_loop_body_pair(parsers.ref_or_block_list_separated,
- parsers.minimally_indented_par_or_plain,
- parsers.block_sep_group(parsers.list_blank),
- parsers.par_sep_group(parsers.list_blank))
-
- parsers.tight_list_content_loop = V("Block")
- * parsers.tight_list_loop_body_pair.block^0
- + (V("Paragraph") + V("Plain"))
- * parsers.ref_or_block_non_separated
- * parsers.tight_list_loop_body_pair.block^0
- + (V("Paragraph") + V("Plain"))
- * parsers.tight_list_loop_body_pair.par^0
-
- parsers.loose_list_content_loop = V("Block")
- * parsers.loose_list_loop_body_pair.block^0
- + (V("Paragraph") + V("Plain"))
- * parsers.ref_or_block_list_separated
- * parsers.loose_list_loop_body_pair.block^0
- + (V("Paragraph") + V("Plain"))
- * parsers.loose_list_loop_body_pair.par^0
-
- parsers.list_item_tightness_condition = -#( parsers.list_blank^0
- * parsers.minimally_indented_ref_or_block_or_par)
- * remove_indent("li")
- + remove_indent("li")
- * parsers.fail
-
- parsers.indented_content_tight = Ct( (parsers.blankline / "")
- * #parsers.list_blank
- * remove_indent("li")
- + ( (V("Reference") + (parsers.blankline / ""))
- * parsers.check_minimal_indent
- * parsers.tight_list_content_loop
- + (V("Reference") + (parsers.blankline / ""))
- + (parsers.tickbox^-1 / writer.escape)
- * parsers.tight_list_content_loop
- )
- * parsers.list_item_tightness_condition
- )
-
- parsers.indented_content_loose = Ct( (parsers.blankline / "")
- * #parsers.list_blank
- + ( (V("Reference") + (parsers.blankline / ""))
- * parsers.check_minimal_indent
- * parsers.loose_list_content_loop
- + (V("Reference") + (parsers.blankline / ""))
- + (parsers.tickbox^-1 / writer.escape)
- * parsers.loose_list_content_loop
- )
- )
-
- parsers.TightListItem = function(starter)
- return -parsers.ThematicBreak
- * parsers.add_indent(starter, "li")
- * parsers.indented_content_tight
- end
-
- parsers.LooseListItem = function(starter)
- return -parsers.ThematicBreak
- * parsers.add_indent(starter, "li")
- * parsers.indented_content_loose
- * remove_indent("li")
- end
-
- parsers.BulletListOfType = function(bullet_type)
- local bullet = parsers.bullet(bullet_type)
- return ( Ct( parsers.TightListItem(bullet)
- * ( (parsers.check_minimal_indent / "")
- * parsers.TightListItem(bullet)
- )^0
- )
- * Cc(true)
- * -#( (parsers.list_blank^0 / "")
- * parsers.check_minimal_indent
- * (bullet - parsers.ThematicBreak)
- )
- + Ct( parsers.LooseListItem(bullet)
- * ( (parsers.list_blank^0 / "")
- * (parsers.check_minimal_indent / "")
- * parsers.LooseListItem(bullet)
- )^0
- )
- * Cc(false)
- ) / writer.bulletlist
- end
-
- parsers.BulletList = parsers.BulletListOfType(parsers.dash)
- + parsers.BulletListOfType(parsers.asterisk)
- + parsers.BulletListOfType(parsers.plus)
-
- local function ordered_list(items,tight,starter)
- local startnum = starter[2][1]
- if options.startNumber then
- startnum = tonumber(startnum) or 1 -- fallback for '#'
- if startnum ~= nil then
- startnum = math.floor(startnum)
- end
- else
- startnum = nil
- end
- return writer.orderedlist(items,tight,startnum)
- end
-
- parsers.OrderedListOfType = function(delimiter_type)
- local enumerator = parsers.enumerator(delimiter_type)
- return Cg(enumerator, "listtype")
- * (Ct( parsers.TightListItem(Cb("listtype"))
- * ((parsers.check_minimal_indent / "") * parsers.TightListItem(enumerator))^0)
- * Cc(true)
- * -#((parsers.list_blank^0 / "")
- * parsers.check_minimal_indent * enumerator)
- + Ct( parsers.LooseListItem(Cb("listtype"))
- * ((parsers.list_blank^0 / "")
- * (parsers.check_minimal_indent / "") * parsers.LooseListItem(enumerator))^0)
- * Cc(false)
- ) * Ct(Cb("listtype")) / ordered_list
- end
-
- parsers.OrderedList = parsers.OrderedListOfType(parsers.period)
- + parsers.OrderedListOfType(parsers.rparent)
- parsers.Blank = parsers.blankline / ""
- + V("Reference")
- function parsers.parse_heading_text(s)
- local inlines = self.parser_functions.parse_inlines(s)
- local flatten_inlines = self.writer.flatten_inlines
- self.writer.flatten_inlines = true
- local flat_text = self.parser_functions.parse_inlines(s)
- flat_text = util.rope_to_string(flat_text)
- self.writer.flatten_inlines = flatten_inlines
- return {flat_text, inlines}
- end
-
- -- parse atx header
- parsers.AtxHeading = parsers.check_trail_no_rem
- * Cg(parsers.heading_start, "level")
- * ((C( parsers.optionalspace
- * parsers.hash^0
- * parsers.optionalspace
- * parsers.newline)
- + parsers.spacechar^1
- * C(parsers.line))
- / strip_atx_end
- / parsers.parse_heading_text)
- * Cb("level")
- / writer.heading
-
- parsers.heading_line = parsers.linechar^1
- - parsers.thematic_break_lines
-
- parsers.heading_text = parsers.heading_line
- * ((V("Endline") / "\n") * (parsers.heading_line - parsers.heading_level))^0
- * parsers.newline^-1
-
- parsers.SetextHeading = parsers.freeze_trail * parsers.check_trail_no_rem
- * #(parsers.heading_text
- * parsers.check_minimal_indent * parsers.check_trail * parsers.heading_level)
- * Cs(parsers.heading_text)
- / parsers.parse_heading_text
- * parsers.check_minimal_indent_and_trail * parsers.heading_level
- * parsers.newline
- * parsers.unfreeze_trail
- / writer.heading
-
- parsers.Heading = parsers.AtxHeading + parsers.SetextHeading
- function self.finalize_grammar(extensions)
- local walkable_syntax = (function(global_walkable_syntax)
- local local_walkable_syntax = {}
- for lhs, rule in pairs(global_walkable_syntax) do
- local_walkable_syntax[lhs] = util.table_copy(rule)
- end
- return local_walkable_syntax
- end)(walkable_syntax)
- local current_extension_name = nil
- self.insert_pattern = function(selector, pattern, pattern_name)
- assert(pattern_name == nil or type(pattern_name) == "string")
- local _, _, lhs, pos, rhs = selector:find("^(%a+)%s+([%a%s]+%a+)%s+(%a+)$")
- assert(lhs ~= nil,
- [[Expected selector in form "LHS (before|after|instead of) RHS", not "]]
- .. selector .. [["]])
- assert(walkable_syntax[lhs] ~= nil,
- [[Rule ]] .. lhs .. [[ -> ... does not exist in markdown grammar]])
- assert(pos == "before" or pos == "after" or pos == "instead of",
- [[Expected positional specifier "before", "after", or "instead of", not "]]
- .. pos .. [["]])
- local rule = walkable_syntax[lhs]
- local index = nil
- for current_index, current_rhs in ipairs(rule) do
- if type(current_rhs) == "string" and current_rhs == rhs then
- index = current_index
- if pos == "after" then
- index = index + 1
- end
- break
- end
- end
- assert(index ~= nil,
- [[Rule ]] .. lhs .. [[ -> ]] .. rhs
- .. [[ does not exist in markdown grammar]])
- local accountable_pattern
- if current_extension_name then
- accountable_pattern = { pattern, current_extension_name, pattern_name }
- else
- assert(type(pattern) == "string",
- [[reader->insert_pattern() was called outside an extension with ]]
- .. [[a PEG pattern instead of a rule name]])
- accountable_pattern = pattern
- end
- if pos == "instead of" then
- rule[index] = accountable_pattern
- else
- table.insert(rule, index, accountable_pattern)
- end
- end
- local syntax =
- { "Blocks",
-
- Blocks = V("InitializeState")
- * ( V("ExpectedJekyllData")
- * (V("Blank")^0 / writer.interblocksep)
- )^-1
- * V("Blank")^0
- * ( V("Block")
- * ( V("Blank")^0 * parsers.eof
- + ( V("Blank")^2 / writer.paragraphsep
- + V("Blank")^0 / writer.interblocksep
- )
- )
- + ( V("Paragraph") + V("Plain") )
- * ( V("Blank")^0 * parsers.eof
- + ( V("Blank")^2 / writer.paragraphsep
- + V("Blank")^0 / writer.interblocksep
- )
- )
- * V("Block")
- * ( V("Blank")^0 * parsers.eof
- + ( V("Blank")^2 / writer.paragraphsep
- + V("Blank")^0 / writer.interblocksep
- )
- )
- + ( V("Paragraph") + V("Plain") )
- * ( V("Blank")^0 * parsers.eof
- + V("Blank")^0 / writer.paragraphsep
- )
- )^0,
-
- ExpectedJekyllData = parsers.fail,
-
- Blank = parsers.Blank,
- Reference = parsers.Reference,
-
- Blockquote = parsers.Blockquote,
- Verbatim = parsers.Verbatim,
- ThematicBreak = parsers.ThematicBreak,
- BulletList = parsers.BulletList,
- OrderedList = parsers.OrderedList,
- DisplayHtml = parsers.DisplayHtml,
- Heading = parsers.Heading,
- Paragraph = parsers.Paragraph,
- Plain = parsers.Plain,
-
- EndlineExceptions = parsers.EndlineExceptions,
- NoSoftLineBreakEndlineExceptions
- = parsers.NoSoftLineBreakEndlineExceptions,
-
- Str = parsers.Str,
- Space = parsers.Space,
- NoSoftLineBreakSpace = parsers.NoSoftLineBreakSpace,
- OptionalIndent = parsers.OptionalIndent,
- Endline = parsers.Endline,
- EndlineNoSub = parsers.EndlineNoSub,
- NoSoftLineBreakEndline
- = parsers.NoSoftLineBreakEndline,
- EndlineBreak = parsers.EndlineBreak,
- LinkAndEmph = parsers.LinkAndEmph,
- Code = parsers.Code,
- AutoLinkUrl = parsers.AutoLinkUrl,
- AutoLinkEmail = parsers.AutoLinkEmail,
- AutoLinkRelativeReference
- = parsers.AutoLinkRelativeReference,
- InlineHtml = parsers.InlineHtml,
- HtmlEntity = parsers.HtmlEntity,
- EscapedChar = parsers.EscapedChar,
- Smart = parsers.Smart,
- Symbol = parsers.Symbol,
- SpecialChar = parsers.fail,
- InitializeState = parsers.succeed,
- }
- self.update_rule = function(rule_name, get_pattern)
- assert(current_extension_name ~= nil)
- assert(syntax[rule_name] ~= nil,
- [[Rule ]] .. rule_name .. [[ -> ... does not exist in markdown grammar]])
- local previous_pattern
- local extension_name
- if walkable_syntax[rule_name] then
- local previous_accountable_pattern = walkable_syntax[rule_name][1]
- previous_pattern = previous_accountable_pattern[1]
- extension_name = previous_accountable_pattern[2] .. ", " .. current_extension_name
- else
- previous_pattern = nil
- extension_name = current_extension_name
- end
- local pattern
- if type(get_pattern) == "function" then
- pattern = get_pattern(previous_pattern)
- else
- assert(previous_pattern == nil,
- [[Rule ]] .. rule_name ..
- [[ has already been updated by ]] .. extension_name)
- pattern = get_pattern
- end
- local accountable_pattern = { pattern, extension_name, rule_name }
- walkable_syntax[rule_name] = { accountable_pattern }
- end
- local special_characters = {}
- self.add_special_character = function(c)
- table.insert(special_characters, c)
- syntax.SpecialChar = S(table.concat(special_characters, ""))
- end
-
- self.add_special_character("*")
- self.add_special_character("[")
- self.add_special_character("]")
- self.add_special_character("<")
- self.add_special_character("!")
- self.add_special_character("\\")
- self.initialize_named_group = function(name, value)
- local pattern = Ct("")
- if value ~= nil then
- pattern = pattern / value
- end
- syntax.InitializeState = syntax.InitializeState
- * Cg(pattern, name)
- end
- self.initialize_named_group("indent_info")
- for _, extension in ipairs(extensions) do
- current_extension_name = extension.name
- extension.extend_writer(writer)
- extension.extend_reader(self)
- end
- current_extension_name = nil
- if options.debugExtensions then
- local sorted_lhs = {}
- for lhs, _ in pairs(walkable_syntax) do
- table.insert(sorted_lhs, lhs)
- end
- table.sort(sorted_lhs)
-
- local output_lines = {"{"}
- for lhs_index, lhs in ipairs(sorted_lhs) do
- local encoded_lhs = util.encode_json_string(lhs)
- table.insert(output_lines, [[ ]] ..encoded_lhs .. [[: []])
- local rule = walkable_syntax[lhs]
- for rhs_index, rhs in ipairs(rule) do
- local human_readable_rhs
- if type(rhs) == "string" then
- human_readable_rhs = rhs
- else
- local pattern_name
- if rhs[3] then
- pattern_name = rhs[3]
- else
- pattern_name = "Anonymous Pattern"
- end
- local extension_name = rhs[2]
- human_readable_rhs = pattern_name .. [[ (]] .. extension_name .. [[)]]
- end
- local encoded_rhs = util.encode_json_string(human_readable_rhs)
- local output_line = [[ ]] .. encoded_rhs
- if rhs_index < #rule then
- output_line = output_line .. ","
- end
- table.insert(output_lines, output_line)
- end
- local output_line = " ]"
- if lhs_index < #sorted_lhs then
- output_line = output_line .. ","
- end
- table.insert(output_lines, output_line)
- end
- table.insert(output_lines, "}")
-
- local output = table.concat(output_lines, "\n")
- local output_filename = options.debugExtensionsFileName
- local output_file = assert(io.open(output_filename, "w"),
- [[Could not open file "]] .. output_filename .. [[" for writing]])
- assert(output_file:write(output))
- assert(output_file:close())
- end
- for lhs, rule in pairs(walkable_syntax) do
- syntax[lhs] = parsers.fail
- for _, rhs in ipairs(rule) do
- local pattern
- if type(rhs) == "string" then
- pattern = V(rhs)
- else
- pattern = rhs[1]
- if type(pattern) == "string" then
- pattern = V(pattern)
- end
- end
- syntax[lhs] = syntax[lhs] + pattern
- end
- end
- if options.underscores then
- self.add_special_character("_")
- end
-
- if not options.codeSpans then
- syntax.Code = parsers.fail
- else
- self.add_special_character("`")
- end
-
- if not options.html then
- syntax.DisplayHtml = parsers.fail
- syntax.InlineHtml = parsers.fail
- syntax.HtmlEntity = parsers.fail
- else
- self.add_special_character("&")
- end
-
- if options.preserveTabs then
- options.stripIndent = false
- end
-
- if not options.smartEllipses then
- syntax.Smart = parsers.fail
- else
- self.add_special_character(".")
- end
-
- if not options.relativeReferences then
- syntax.AutoLinkRelativeReference = parsers.fail
- end
-
- if options.contentLevel == "inline" then
- syntax[1] = "Inlines"
- syntax.Inlines = V("InitializeState")
- * parsers.Inline^0
- * ( parsers.spacing^0
- * parsers.eof / "")
- syntax.Space = parsers.Space + parsers.blankline / writer.space
- end
-
- local blocks_nested_t = util.table_copy(syntax)
- blocks_nested_t.ExpectedJekyllData = parsers.fail
- parsers.blocks_nested = Ct(blocks_nested_t)
-
- parsers.blocks = Ct(syntax)
-
- local inlines_t = util.table_copy(syntax)
- inlines_t[1] = "Inlines"
- inlines_t.Inlines = V("InitializeState")
- * parsers.Inline^0
- * ( parsers.spacing^0
- * parsers.eof / "")
- parsers.inlines = Ct(inlines_t)
-
- local inlines_no_inline_note_t = util.table_copy(inlines_t)
- inlines_no_inline_note_t.InlineNote = parsers.fail
- parsers.inlines_no_inline_note = Ct(inlines_no_inline_note_t)
-
- local inlines_no_html_t = util.table_copy(inlines_t)
- inlines_no_html_t.DisplayHtml = parsers.fail
- inlines_no_html_t.InlineHtml = parsers.fail
- inlines_no_html_t.HtmlEntity = parsers.fail
- parsers.inlines_no_html = Ct(inlines_no_html_t)
-
- local inlines_nbsp_t = util.table_copy(inlines_t)
- inlines_nbsp_t.Endline = parsers.NonbreakingEndline
- inlines_nbsp_t.Space = parsers.NonbreakingSpace
- parsers.inlines_nbsp = Ct(inlines_nbsp_t)
-
- local inlines_no_link_or_emphasis_t = util.table_copy(inlines_t)
- inlines_no_link_or_emphasis_t.LinkAndEmph = parsers.fail
- inlines_no_link_or_emphasis_t.EndlineExceptions = parsers.EndlineExceptions - parsers.eof
- parsers.inlines_no_link_or_emphasis = Ct(inlines_no_link_or_emphasis_t)
- return function(input)
- if options.unicodeNormalization then
- local form = options.unicodeNormalizationForm
- if form == "nfc" then
- input = uni_algos.normalize.NFC(input)
- elseif form == "nfd" then
- input = uni_algos.normalize.NFD(input)
- elseif form == "nfkc" then
- input = uni_algos.normalize.NFKC(input)
- elseif form == "nfkd" then
- input = uni_algos.normalize.NFKD(input)
- else
- error(format("Unknown normalization form %s", form))
- end
- end
- input = input:gsub("\r\n?", "\n")
- if input:sub(-1) ~= "\n" then
- input = input .. "\n"
- end
- references = {}
- local opt_string = {}
- for k, _ in pairs(defaultOptions) do
- local v = options[k]
- if type(v) == "table" then
- for _, i in ipairs(v) do
- opt_string[#opt_string+1] = k .. "=" .. tostring(i)
- end
- elseif k ~= "cacheDir" then
- opt_string[#opt_string+1] = k .. "=" .. tostring(v)
- end
- end
- table.sort(opt_string)
- local salt = table.concat(opt_string, ",") .. "," .. metadata.version
- local output
- local function convert(input)
- local document = self.parser_functions.parse_blocks(input)
- local output = util.rope_to_string(writer.document(document))
- local undosep_start, undosep_end
- local potential_secend_start, secend_start
- local potential_sep_start, sep_start
- while true do
- -- find a `writer->undosep`
- undosep_start, undosep_end = output:find(writer.undosep_text, 1, true)
- if undosep_start == nil then break end
- -- skip any preceding section ends
- secend_start = undosep_start
- while true do
- potential_secend_start = secend_start - #writer.secend_text
- if potential_secend_start < 1
- or output:sub(potential_secend_start, secend_start - 1) ~= writer.secend_text then
- break
- end
- secend_start = potential_secend_start
- end
- -- find an immediately preceding block element / paragraph separator
- sep_start = secend_start
- potential_sep_start = sep_start - #writer.interblocksep_text
- if potential_sep_start >= 1
- and output:sub(potential_sep_start, sep_start - 1) == writer.interblocksep_text then
- sep_start = potential_sep_start
- else
- potential_sep_start = sep_start - #writer.paragraphsep_text
- if potential_sep_start >= 1
- and output:sub(potential_sep_start, sep_start - 1) == writer.paragraphsep_text then
- sep_start = potential_sep_start
- end
- end
- -- remove `writer->undosep` and immediately preceding block element / paragraph separator
- output = output:sub(1, sep_start - 1)
- .. output:sub(secend_start, undosep_start - 1)
- .. output:sub(undosep_end + 1)
- end
- return output
- end
- if options.eagerCache or options.finalizeCache then
- local name = util.cache(options.cacheDir, input, salt, convert,
- ".md" .. writer.suffix)
- output = writer.pack(name)
- else
- output = convert(input)
- end
- if options.finalizeCache then
- local file, mode
- if options.frozenCacheCounter > 0 then
- mode = "a"
- else
- mode = "w"
- end
- file = assert(io.open(options.frozenCacheFileName, mode),
- [[Could not open file "]] .. options.frozenCacheFileName
- .. [[" for writing]])
- assert(file:write([[\expandafter\global\expandafter\def\csname ]]
- .. [[markdownFrozenCache]] .. options.frozenCacheCounter
- .. [[\endcsname{]] .. output .. [[}]] .. "\n"))
- assert(file:close())
- end
- return output
- end
- end
- return self
-end
-M.extensions = {}
-M.extensions.bracketed_spans = function()
- return {
- name = "built-in bracketed_spans syntax extension",
- extend_writer = function(self)
- function self.span(s, attr)
- if self.flatten_inlines then return s end
- return {"\\markdownRendererBracketedSpanAttributeContextBegin",
- self.attributes(attr),
- s,
- "\\markdownRendererBracketedSpanAttributeContextEnd{}"}
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local span_label = parsers.lbracket
- * (Cs((parsers.alphanumeric^1
- + parsers.inticks
- + parsers.autolink
- + V("InlineHtml")
- + ( parsers.backslash * parsers.backslash)
- + ( parsers.backslash * (parsers.lbracket + parsers.rbracket)
- + V("Space") + V("Endline")
- + (parsers.any
- - (parsers.newline + parsers.lbracket + parsers.rbracket
- + parsers.blankline^2))))^1)
- / self.parser_functions.parse_inlines)
- * parsers.rbracket
-
- local Span = span_label
- * Ct(parsers.attributes)
- / writer.span
-
- self.insert_pattern("Inline before LinkAndEmph",
- Span, "Span")
- end
- }
-end
-M.extensions.citations = function(citation_nbsps)
- return {
- name = "built-in citations syntax extension",
- extend_writer = function(self)
- function self.citations(text_cites, cites)
- local buffer = {}
- if self.flatten_inlines then
- for _,cite in ipairs(cites) do
- if cite.prenote then
- table.insert(buffer, {cite.prenote, " "})
- end
- table.insert(buffer, cite.name)
- if cite.postnote then
- table.insert(buffer, {" ", cite.postnote})
- end
- end
- else
- table.insert(buffer, {"\\markdownRenderer", text_cites and "TextCite" or "Cite",
- "{", #cites, "}"})
- for _,cite in ipairs(cites) do
- table.insert(buffer, {cite.suppress_author and "-" or "+", "{",
- cite.prenote or "", "}{", cite.postnote or "", "}{", cite.name, "}"})
- end
- end
- return buffer
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local citation_chars
- = parsers.alphanumeric
- + S("#$%&-+<>~/_")
-
- local citation_name
- = Cs(parsers.dash^-1) * parsers.at
- * Cs(citation_chars
- * (((citation_chars + parsers.internal_punctuation
- - parsers.comma - parsers.semicolon)
- * -#((parsers.internal_punctuation - parsers.comma
- - parsers.semicolon)^0
- * -(citation_chars + parsers.internal_punctuation
- - parsers.comma - parsers.semicolon)))^0
- * citation_chars)^-1)
-
- local citation_body_prenote
- = Cs((parsers.alphanumeric^1
- + parsers.bracketed
- + parsers.inticks
- + parsers.autolink
- + V("InlineHtml")
- + V("Space") + V("Endline")
- + (parsers.anyescaped
- - (parsers.newline + parsers.rbracket + parsers.blankline^2))
- - (parsers.spnl * parsers.dash^-1 * parsers.at))^1)
-
- local citation_body_postnote
- = Cs((parsers.alphanumeric^1
- + parsers.bracketed
- + parsers.inticks
- + parsers.autolink
- + V("InlineHtml")
- + V("Space") + V("Endline")
- + (parsers.anyescaped
- - (parsers.newline + parsers.rbracket + parsers.semicolon
- + parsers.blankline^2))
- - (parsers.spnl * parsers.rbracket))^1)
-
- local citation_body_chunk
- = ( citation_body_prenote
- * parsers.spnlc_sep
- + Cc("")
- * parsers.spnlc
- )
- * citation_name
- * (parsers.internal_punctuation - parsers.semicolon)^-1
- * ( parsers.spnlc
- * citation_body_postnote
- + Cc("")
- * parsers.spnlc
- )
-
- local citation_body
- = citation_body_chunk
- * ( parsers.semicolon
- * parsers.spnlc
- * citation_body_chunk
- )^0
-
- local citation_headless_body_postnote
- = Cs((parsers.alphanumeric^1
- + parsers.bracketed
- + parsers.inticks
- + parsers.autolink
- + V("InlineHtml")
- + V("Space") + V("Endline")
- + (parsers.anyescaped
- - (parsers.newline + parsers.rbracket + parsers.at
- + parsers.semicolon + parsers.blankline^2))
- - (parsers.spnl * parsers.rbracket))^0)
-
- local citation_headless_body
- = citation_headless_body_postnote
- * ( parsers.semicolon
- * parsers.spnlc
- * citation_body_chunk
- )^0
-
- local citations
- = function(text_cites, raw_cites)
- local function normalize(str)
- if str == "" then
- str = nil
- else
- str = (citation_nbsps and
- self.parser_functions.parse_inlines_nbsp or
- self.parser_functions.parse_inlines)(str)
- end
- return str
- end
-
- local cites = {}
- for i = 1,#raw_cites,4 do
- cites[#cites+1] = {
- prenote = normalize(raw_cites[i]),
- suppress_author = raw_cites[i+1] == "-",
- name = writer.identifier(raw_cites[i+2]),
- postnote = normalize(raw_cites[i+3]),
- }
- end
- return writer.citations(text_cites, cites)
- end
-
- local TextCitations
- = Ct((parsers.spnlc
- * Cc("")
- * citation_name
- * ((parsers.spnlc
- * parsers.lbracket
- * citation_headless_body
- * parsers.rbracket) + Cc("")))^1)
- / function(raw_cites)
- return citations(true, raw_cites)
- end
-
- local ParenthesizedCitations
- = Ct((parsers.spnlc
- * parsers.lbracket
- * citation_body
- * parsers.rbracket)^1)
- / function(raw_cites)
- return citations(false, raw_cites)
- end
-
- local Citations = TextCitations + ParenthesizedCitations
-
- self.insert_pattern("Inline before LinkAndEmph",
- Citations, "Citations")
-
- self.add_special_character("@")
- self.add_special_character("-")
- end
- }
-end
-M.extensions.content_blocks = function(language_map)
- local languages_json = (function()
- local base, prev, curr
- for _, pathname in ipairs{kpse.lookup(language_map, { all=true })} do
- local file = io.open(pathname, "r")
- if not file then goto continue end
- local input = assert(file:read("*a"))
- assert(file:close())
- local json = input:gsub('("[^\n]-"):','[%1]=')
- curr = load("_ENV = {}; return "..json)()
- if type(curr) == "table" then
- if base == nil then
- base = curr
- else
- setmetatable(prev, { __index = curr })
- end
- prev = curr
- end
- ::continue::
- end
- return base or {}
- end)()
-
- return {
- name = "built-in content_blocks syntax extension",
- extend_writer = function(self)
- function self.contentblock(src,suf,type,tit)
- if not self.is_writing then return "" end
- src = src.."."..suf
- suf = suf:lower()
- if type == "onlineimage" then
- return {"\\markdownRendererContentBlockOnlineImage{",suf,"}",
- "{",self.string(src),"}",
- "{",self.uri(src),"}",
- "{",self.string(tit or ""),"}"}
- elseif languages_json[suf] then
- return {"\\markdownRendererContentBlockCode{",suf,"}",
- "{",self.string(languages_json[suf]),"}",
- "{",self.string(src),"}",
- "{",self.uri(src),"}",
- "{",self.string(tit or ""),"}"}
- else
- return {"\\markdownRendererContentBlock{",suf,"}",
- "{",self.string(src),"}",
- "{",self.uri(src),"}",
- "{",self.string(tit or ""),"}"}
- end
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local contentblock_tail
- = parsers.optionaltitle
- * (parsers.newline + parsers.eof)
-
- -- case insensitive online image suffix:
- local onlineimagesuffix
- = (function(...)
- local parser = nil
- for _, suffix in ipairs({...}) do
- local pattern=nil
- for i=1,#suffix do
- local char=suffix:sub(i,i)
- char = S(char:lower()..char:upper())
- if pattern == nil then
- pattern = char
- else
- pattern = pattern * char
- end
- end
- if parser == nil then
- parser = pattern
- else
- parser = parser + pattern
- end
- end
- return parser
- end)("png", "jpg", "jpeg", "gif", "tif", "tiff")
-
- -- online image url for iA Writer content blocks with mandatory suffix,
- -- allowing nested brackets:
- local onlineimageurl
- = (parsers.less
- * Cs((parsers.anyescaped
- - parsers.more
- - parsers.spacing
- - #(parsers.period
- * onlineimagesuffix
- * parsers.more
- * contentblock_tail))^0)
- * parsers.period
- * Cs(onlineimagesuffix)
- * parsers.more
- + (Cs((parsers.inparens
- + (parsers.anyescaped
- - parsers.spacing
- - parsers.rparent
- - #(parsers.period
- * onlineimagesuffix
- * contentblock_tail)))^0)
- * parsers.period
- * Cs(onlineimagesuffix))
- ) * Cc("onlineimage")
-
- -- filename for iA Writer content blocks with mandatory suffix:
- local localfilepath
- = parsers.slash
- * Cs((parsers.anyescaped
- - parsers.tab
- - parsers.newline
- - #(parsers.period
- * parsers.alphanumeric^1
- * contentblock_tail))^1)
- * parsers.period
- * Cs(parsers.alphanumeric^1)
- * Cc("localfile")
-
- local ContentBlock
- = parsers.check_trail_no_rem
- * (localfilepath + onlineimageurl)
- * contentblock_tail
- / writer.contentblock
-
- self.insert_pattern("Block before Blockquote",
- ContentBlock, "ContentBlock")
- end
- }
-end
-M.extensions.definition_lists = function(tight_lists)
- return {
- name = "built-in definition_lists syntax extension",
- extend_writer = function(self)
- local function dlitem(term, defs)
- local retVal = {"\\markdownRendererDlItem{",term,"}"}
- for _, def in ipairs(defs) do
- retVal[#retVal+1] = {"\\markdownRendererDlDefinitionBegin ",def,
- "\\markdownRendererDlDefinitionEnd "}
- end
- retVal[#retVal+1] = "\\markdownRendererDlItemEnd "
- return retVal
- end
-
- function self.definitionlist(items,tight)
- if not self.is_writing then return "" end
- local buffer = {}
- for _,item in ipairs(items) do
- buffer[#buffer + 1] = dlitem(item.term, item.definitions)
- end
- if tight and tight_lists then
- return {"\\markdownRendererDlBeginTight\n", buffer,
- "\n\\markdownRendererDlEndTight"}
- else
- return {"\\markdownRendererDlBegin\n", buffer,
- "\n\\markdownRendererDlEnd"}
- end
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local defstartchar = S("~:")
-
- local defstart = parsers.check_trail_length(0) * defstartchar * #parsers.spacing
- * (parsers.tab + parsers.space^-3)
- + parsers.check_trail_length(1) * defstartchar * #parsers.spacing
- * (parsers.tab + parsers.space^-2)
- + parsers.check_trail_length(2) * defstartchar * #parsers.spacing
- * (parsers.tab + parsers.space^-1)
- + parsers.check_trail_length(3) * defstartchar * #parsers.spacing
-
- local indented_line = (parsers.check_minimal_indent / "") * parsers.check_code_trail * parsers.line
-
- local blank = parsers.check_minimal_blank_indent_and_any_trail * parsers.optionalspace * parsers.newline
-
- local dlchunk = Cs(parsers.line * (indented_line - blank)^0)
-
- local indented_blocks = function(bl)
- return Cs( bl
- * (blank^1 * (parsers.check_minimal_indent / "")
- * parsers.check_code_trail * -parsers.blankline * bl)^0
- * (blank^1 + parsers.eof))
- end
-
- local function definition_list_item(term, defs, _)
- return { term = self.parser_functions.parse_inlines(term),
- definitions = defs }
- end
-
- local DefinitionListItemLoose
- = C(parsers.line) * blank^0
- * Ct((parsers.check_minimal_indent * (defstart
- * indented_blocks(dlchunk)
- / self.parser_functions.parse_blocks_nested))^1)
- * Cc(false) / definition_list_item
-
- local DefinitionListItemTight
- = C(parsers.line)
- * Ct((parsers.check_minimal_indent * (defstart * dlchunk
- / self.parser_functions.parse_blocks_nested))^1)
- * Cc(true) / definition_list_item
-
- local DefinitionList
- = ( Ct(DefinitionListItemLoose^1) * Cc(false)
- + Ct(DefinitionListItemTight^1)
- * (blank^0
- * -DefinitionListItemLoose * Cc(true))
- ) / writer.definitionlist
-
- self.insert_pattern("Block after Heading",
- DefinitionList, "DefinitionList")
- end
- }
-end
-M.extensions.fancy_lists = function()
- return {
- name = "built-in fancy_lists syntax extension",
- extend_writer = function(self)
- local options = self.options
-
- function self.fancylist(items,tight,startnum,numstyle,numdelim)
- if not self.is_writing then return "" end
- local buffer = {}
- local num = startnum
- for _,item in ipairs(items) do
- if item ~= "" then
- buffer[#buffer + 1] = self.fancyitem(item,num)
- end
- if num ~= nil and item ~= "" then
- num = num + 1
- end
- end
- local contents = util.intersperse(buffer,"\n")
- if tight and options.tightLists then
- return {"\\markdownRendererFancyOlBeginTight{",
- numstyle,"}{",numdelim,"}",contents,
- "\n\\markdownRendererFancyOlEndTight "}
- else
- return {"\\markdownRendererFancyOlBegin{",
- numstyle,"}{",numdelim,"}",contents,
- "\n\\markdownRendererFancyOlEnd "}
- end
- end
- function self.fancyitem(s,num)
- if num ~= nil then
- return {"\\markdownRendererFancyOlItemWithNumber{",num,"}",s,
- "\\markdownRendererFancyOlItemEnd "}
- else
- return {"\\markdownRendererFancyOlItem ",s,"\\markdownRendererFancyOlItemEnd "}
- end
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local options = self.options
- local writer = self.writer
-
- local function combine_markers_and_delims(markers, delims)
- local markers_table = {}
- for _,marker in ipairs(markers) do
- local start_marker
- local continuation_marker
- if type(marker) == "table" then
- start_marker = marker[1]
- continuation_marker = marker[2]
- else
- start_marker = marker
- continuation_marker = marker
- end
- for _,delim in ipairs(delims) do
- table.insert(markers_table, {start_marker, continuation_marker, delim})
- end
- end
- return markers_table
- end
-
- local function join_table_with_func(func, markers_table)
- local pattern = func(table.unpack(markers_table[1]))
- for i = 2, #markers_table do
- pattern = pattern + func(table.unpack(markers_table[i]))
- end
- return pattern
- end
-
- local lowercase_letter_marker = R("az")
- local uppercase_letter_marker = R("AZ")
-
- local roman_marker = function(chars)
- local m, d, c = P(chars[1]), P(chars[2]), P(chars[3])
- local l, x, v, i = P(chars[4]), P(chars[5]), P(chars[6]), P(chars[7])
- return m^-3
- * (c*m + c*d + d^-1 * c^-3)
- * (x*c + x*l + l^-1 * x^-3)
- * (i*x + i*v + v^-1 * i^-3)
- end
-
- local lowercase_roman_marker = roman_marker({"m", "d", "c", "l", "x", "v", "i"})
- local uppercase_roman_marker = roman_marker({"M", "D", "C", "L", "X", "V", "I"})
-
- local lowercase_opening_roman_marker = P("i")
- local uppercase_opening_roman_marker = P("I")
-
- local digit_marker = parsers.dig * parsers.dig^-8
-
- local markers = {
- {lowercase_opening_roman_marker, lowercase_roman_marker},
- {uppercase_opening_roman_marker, uppercase_roman_marker},
- lowercase_letter_marker,
- uppercase_letter_marker,
- lowercase_roman_marker,
- uppercase_roman_marker,
- digit_marker
- }
-
- local delims = {
- parsers.period,
- parsers.rparent
- }
-
- local markers_table = combine_markers_and_delims(markers, delims)
-
- local function enumerator(start_marker, _, delimiter_type, interrupting)
- local delimiter_range
- local allowed_end
- if interrupting then
- delimiter_range = P("1")
- allowed_end = C(parsers.spacechar^1) * #parsers.linechar
- else
- delimiter_range = start_marker
- allowed_end = C(parsers.spacechar^1) + #(parsers.newline + parsers.eof)
- end
-
- return parsers.check_trail
- * Ct(C(delimiter_range) * C(delimiter_type))
- * allowed_end
- end
-
- local starter = join_table_with_func(enumerator, markers_table)
-
- local TightListItem = function(starter)
- return parsers.add_indent(starter, "li")
- * parsers.indented_content_tight
- end
-
- local LooseListItem = function(starter)
- return parsers.add_indent(starter, "li")
- * parsers.indented_content_loose
- * remove_indent("li")
- end
-
- local function roman2number(roman)
- local romans = { ["M"] = 1000, ["D"] = 500, ["C"] = 100, ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 }
- local numeral = 0
-
- local i = 1
- local len = string.len(roman)
- while i < len do
- local z1, z2 = romans[ string.sub(roman, i, i) ], romans[ string.sub(roman, i+1, i+1) ]
- if z1 < z2 then
- numeral = numeral + (z2 - z1)
- i = i + 2
- else
- numeral = numeral + z1
- i = i + 1
- end
- end
- if i <= len then numeral = numeral + romans[ string.sub(roman,i,i) ] end
- return numeral
- end
-
- local function sniffstyle(numstr, delimend)
- local numdelim
- if delimend == ")" then
- numdelim = "OneParen"
- elseif delimend == "." then
- numdelim = "Period"
- else
- numdelim = "Default"
- end
-
- local num
- num = numstr:match("^([I])$")
- if num then
- return roman2number(num), "UpperRoman", numdelim
- end
- num = numstr:match("^([i])$")
- if num then
- return roman2number(string.upper(num)), "LowerRoman", numdelim
- end
- num = numstr:match("^([A-Z])$")
- if num then
- return string.byte(num) - string.byte("A") + 1, "UpperAlpha", numdelim
- end
- num = numstr:match("^([a-z])$")
- if num then
- return string.byte(num) - string.byte("a") + 1, "LowerAlpha", numdelim
- end
- num = numstr:match("^([IVXLCDM]+)")
- if num then
- return roman2number(num), "UpperRoman", numdelim
- end
- num = numstr:match("^([ivxlcdm]+)")
- if num then
- return roman2number(string.upper(num)), "LowerRoman", numdelim
- end
- return math.floor(tonumber(numstr) or 1), "Decimal", numdelim
- end
-
- local function fancylist(items,tight,start)
- local startnum, numstyle, numdelim = sniffstyle(start[2][1], start[2][2])
- return writer.fancylist(items,tight,
- options.startNumber and startnum or 1,
- numstyle or "Decimal",
- numdelim or "Default")
- end
-
- local FancyListOfType = function(start_marker, continuation_marker, delimiter_type)
- local enumerator_start = enumerator(start_marker, continuation_marker, delimiter_type)
- local enumerator_cont = enumerator(continuation_marker, continuation_marker, delimiter_type)
- return Cg(enumerator_start, "listtype")
- * (Ct( TightListItem(Cb("listtype"))
- * ((parsers.check_minimal_indent / "") * TightListItem(enumerator_cont))^0)
- * Cc(true)
- * -#((parsers.conditionally_indented_blankline^0 / "")
- * parsers.check_minimal_indent * enumerator_cont)
- + Ct( LooseListItem(Cb("listtype"))
- * ((parsers.conditionally_indented_blankline^0 / "")
- * (parsers.check_minimal_indent / "") * LooseListItem(enumerator_cont))^0)
- * Cc(false)
- ) * Ct(Cb("listtype")) / fancylist
- end
-
- local FancyList = join_table_with_func(FancyListOfType, markers_table)
-
- local Endline = parsers.newline
- * (parsers.check_minimal_indent
- * -parsers.EndlineExceptions
- + parsers.check_optional_indent
- * -parsers.EndlineExceptions
- * -starter)
- * parsers.spacechar^0
- / writer.soft_line_break
-
- self.update_rule("OrderedList", FancyList)
- self.update_rule("Endline", Endline)
- end
- }
-end
-M.extensions.fenced_code = function(blank_before_code_fence,
- allow_attributes,
- allow_raw_blocks)
- return {
- name = "built-in fenced_code syntax extension",
- extend_writer = function(self)
- local options = self.options
-
- function self.fencedCode(s, i, attr)
- if not self.is_writing then return "" end
- s = s:gsub("\n$", "")
- local buf = {}
- if attr ~= nil then
- table.insert(buf, {"\\markdownRendererFencedCodeAttributeContextBegin",
- self.attributes(attr)})
- end
- local name = util.cache_verbatim(options.cacheDir, s)
- table.insert(buf, {"\\markdownRendererInputFencedCode{",
- name,"}{",self.string(i),"}{",self.infostring(i),"}"})
- if attr ~= nil then
- table.insert(buf, "\\markdownRendererFencedCodeAttributeContextEnd{}")
- end
- return buf
- end
-
- if allow_raw_blocks then
- function self.rawBlock(s, attr)
- if not self.is_writing then return "" end
- s = s:gsub("\n$", "")
- local name = util.cache_verbatim(options.cacheDir, s)
- return {"\\markdownRendererInputRawBlock{",
- name,"}{", self.string(attr),"}"}
- end
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local function captures_geq_length(_,i,a,b)
- return #a >= #b and i
- end
-
- local function strip_enclosing_whitespaces(str)
- return str:gsub("^%s*(.-)%s*$", "%1")
- end
-
- local tilde_infostring = Cs(Cs((V("HtmlEntity")
- + parsers.anyescaped
- - parsers.newline)^0)
- / strip_enclosing_whitespaces)
-
- local backtick_infostring = Cs(Cs((V("HtmlEntity")
- + (-#(parsers.backslash * parsers.backtick) * parsers.anyescaped)
- - parsers.newline
- - parsers.backtick)^0)
- / strip_enclosing_whitespaces)
-
- local fenceindent
-
- local function has_trail(indent_table)
- return indent_table ~= nil and
- indent_table.trail ~= nil and
- next(indent_table.trail) ~= nil
- end
-
- local function has_indents(indent_table)
- return indent_table ~= nil and
- indent_table.indents ~= nil and
- next(indent_table.indents) ~= nil
- end
-
- local function get_last_indent_name(indent_table)
- if has_indents(indent_table) then
- return indent_table.indents[#indent_table.indents].name
- end
- end
-
- local function count_fenced_start_indent(_, _, indent_table, trail)
- local last_indent_name = get_last_indent_name(indent_table)
- fenceindent = 0
- if last_indent_name ~= "li" then
- fenceindent = #trail
- end
- return true
- end
-
- local fencehead = function(char, infostring)
- return Cmt(Cb("indent_info") * parsers.check_trail, count_fenced_start_indent)
- * Cg(char^3, "fencelength")
- * parsers.optionalspace
- * infostring
- * (parsers.newline + parsers.eof)
- end
-
- local fencetail = function(char)
- return parsers.check_trail_no_rem
- * Cmt(C(char^3) * Cb("fencelength"), captures_geq_length)
- * parsers.optionalspace * (parsers.newline + parsers.eof)
- + parsers.eof
- end
-
- local function process_fenced_line(s, i, indent_table, line_content, is_blank) -- luacheck: ignore s i
- local remainder = ""
- if has_trail(indent_table) then
- remainder = indent_table.trail.internal_remainder
- end
-
- if is_blank and get_last_indent_name(indent_table) == "li" then
- remainder = ""
- end
-
- local str = remainder .. line_content
- local index = 1
- local remaining = fenceindent
-
- while true do
- local c = str:sub(index, index)
- if c == " " and remaining > 0 then
- remaining = remaining - 1
- index = index + 1
- elseif c == "\t" and remaining > 3 then
- remaining = remaining - 4
- index = index + 1
- else
- break
- end
- end
-
- return true, str:sub(index)
- end
-
- local fencedline = function(char)
- return Cmt(Cb("indent_info") * C(parsers.line - fencetail(char)) * Cc(false), process_fenced_line)
- end
-
- local blankfencedline = Cmt(Cb("indent_info") * C(parsers.blankline) * Cc(true), process_fenced_line)
-
- local TildeFencedCode
- = fencehead(parsers.tilde, tilde_infostring)
- * Cs(((parsers.check_minimal_blank_indent / "") * blankfencedline
- + (parsers.check_minimal_indent / "") * fencedline(parsers.tilde))^0)
- * ((parsers.check_minimal_indent / "") * fencetail(parsers.tilde) + parsers.succeed)
-
- local BacktickFencedCode
- = fencehead(parsers.backtick, backtick_infostring)
- * Cs(((parsers.check_minimal_blank_indent / "") * blankfencedline
- + (parsers.check_minimal_indent / "") * fencedline(parsers.backtick))^0)
- * ((parsers.check_minimal_indent / "") * fencetail(parsers.backtick) + parsers.succeed)
-
- local infostring_with_attributes
- = Ct(C((parsers.linechar
- - ( parsers.optionalspace
- * parsers.attributes))^0)
- * parsers.optionalspace
- * Ct(parsers.attributes))
-
- local FencedCode
- = ((TildeFencedCode + BacktickFencedCode)
- / function(infostring, code)
- local expanded_code = self.expandtabs(code)
-
- if allow_raw_blocks then
- local raw_attr = lpeg.match(parsers.raw_attribute,
- infostring)
- if raw_attr then
- return writer.rawBlock(expanded_code, raw_attr)
- end
- end
-
- local attr = nil
- if allow_attributes then
- local match = lpeg.match(infostring_with_attributes,
- infostring)
- if match then
- infostring, attr = table.unpack(match)
- end
- end
- return writer.fencedCode(expanded_code, infostring, attr)
- end)
-
- self.insert_pattern("Block after Verbatim",
- FencedCode, "FencedCode")
-
- local fencestart
- if blank_before_code_fence then
- fencestart = parsers.fail
- else
- fencestart = fencehead(parsers.backtick, backtick_infostring)
- + fencehead(parsers.tilde, tilde_infostring)
- end
-
- self.update_rule("EndlineExceptions", function(previous_pattern)
- if previous_pattern == nil then
- previous_pattern = parsers.EndlineExceptions
- end
- return previous_pattern + fencestart
- end)
-
- self.add_special_character("`")
- self.add_special_character("~")
- end
- }
-end
-M.extensions.fenced_divs = function(blank_before_div_fence)
- return {
- name = "built-in fenced_divs syntax extension",
- extend_writer = function(self)
- function self.div_begin(attributes)
- local start_output = {"\\markdownRendererFencedDivAttributeContextBegin\n",
- self.attributes(attributes)}
- local end_output = {"\\markdownRendererFencedDivAttributeContextEnd{}"}
- return self.push_attributes("div", attributes, start_output, end_output)
- end
- function self.div_end()
- return self.pop_attributes("div")
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
- local fenced_div_infostring
- = C((parsers.linechar
- - ( parsers.spacechar^1
- * parsers.colon^1))^1)
-
- local fenced_div_begin = parsers.nonindentspace
- * parsers.colon^3
- * parsers.optionalspace
- * fenced_div_infostring
- * ( parsers.spacechar^1
- * parsers.colon^1)^0
- * parsers.optionalspace
- * (parsers.newline + parsers.eof)
-
- local fenced_div_end = parsers.nonindentspace
- * parsers.colon^3
- * parsers.optionalspace
- * (parsers.newline + parsers.eof)
- self.initialize_named_group("fenced_div_level", "0")
- self.initialize_named_group("fenced_div_num_opening_indents")
-
- local function increment_div_level()
- local function push_indent_table(s, i, indent_table, -- luacheck: ignore s i
- fenced_div_num_opening_indents, fenced_div_level)
- fenced_div_level = tonumber(fenced_div_level) + 1
- local num_opening_indents = 0
- if indent_table.indents ~= nil then
- num_opening_indents = #indent_table.indents
- end
- fenced_div_num_opening_indents[fenced_div_level] = num_opening_indents
- return true, fenced_div_num_opening_indents
- end
-
- local function increment_level(s, i, fenced_div_level) -- luacheck: ignore s i
- fenced_div_level = tonumber(fenced_div_level) + 1
- return true, tostring(fenced_div_level)
- end
-
- return Cg( Cmt( Cb("indent_info")
- * Cb("fenced_div_num_opening_indents")
- * Cb("fenced_div_level"), push_indent_table)
- , "fenced_div_num_opening_indents")
- * Cg( Cmt( Cb("fenced_div_level"), increment_level)
- , "fenced_div_level")
- end
-
- local function decrement_div_level()
- local function pop_indent_table(s, i, fenced_div_indent_table, fenced_div_level) -- luacheck: ignore s i
- fenced_div_level = tonumber(fenced_div_level)
- fenced_div_indent_table[fenced_div_level] = nil
- return true, tostring(fenced_div_level - 1)
- end
-
- return Cg( Cmt( Cb("fenced_div_num_opening_indents")
- * Cb("fenced_div_level"), pop_indent_table)
- , "fenced_div_level")
- end
-
- local non_fenced_div_block = parsers.check_minimal_indent * V("Block")
- - parsers.check_minimal_indent_and_trail * fenced_div_end
-
- local non_fenced_div_paragraph = parsers.check_minimal_indent * V("Paragraph")
- - parsers.check_minimal_indent_and_trail * fenced_div_end
-
- local blank = parsers.minimally_indented_blank
-
- local block_separated = parsers.block_sep_group(blank)
- * non_fenced_div_block
-
- local loop_body_pair = parsers.create_loop_body_pair(block_separated,
- non_fenced_div_paragraph,
- parsers.block_sep_group(blank),
- parsers.par_sep_group(blank))
-
- local content_loop = ( non_fenced_div_block
- * loop_body_pair.block^0
- + non_fenced_div_paragraph
- * block_separated
- * loop_body_pair.block^0
- + non_fenced_div_paragraph
- * loop_body_pair.par^0)
- * blank^0
-
- local FencedDiv = fenced_div_begin
- / function (infostring)
- local attr = lpeg.match(Ct(parsers.attributes), infostring)
- if attr == nil then
- attr = {"." .. infostring}
- end
- return attr
- end
- / writer.div_begin
- * increment_div_level()
- * parsers.skipblanklines
- * Ct(content_loop)
- * parsers.minimally_indented_blank^0
- * parsers.check_minimal_indent_and_trail * fenced_div_end
- * decrement_div_level()
- * (Cc("") / writer.div_end)
-
- self.insert_pattern("Block after Verbatim",
- FencedDiv, "FencedDiv")
-
- self.add_special_character(":")
-
- local function is_inside_div()
- local function check_div_level(s, i, fenced_div_level) -- luacheck: ignore s i
- fenced_div_level = tonumber(fenced_div_level)
- return fenced_div_level > 0
- end
-
- return Cmt(Cb("fenced_div_level"), check_div_level)
- end
-
- local function check_indent()
- local function compare_indent(s, i, indent_table, -- luacheck: ignore s i
- fenced_div_num_opening_indents, fenced_div_level)
- fenced_div_level = tonumber(fenced_div_level)
- local num_current_indents = (indent_table.current_line_indents ~= nil and
- #indent_table.current_line_indents) or 0
- local num_opening_indents = fenced_div_num_opening_indents[fenced_div_level]
- return num_current_indents == num_opening_indents
- end
-
- return Cmt( Cb("indent_info")
- * Cb("fenced_div_num_opening_indents")
- * Cb("fenced_div_level"), compare_indent)
- end
-
- local fencestart = is_inside_div()
- * fenced_div_end
- * check_indent()
-
- if not blank_before_div_fence then
- self.update_rule("EndlineExceptions", function(previous_pattern)
- if previous_pattern == nil then
- previous_pattern = parsers.EndlineExceptions
- end
- return previous_pattern + fencestart
- end)
- end
- end
- }
-end
-M.extensions.header_attributes = function()
- return {
- name = "built-in header_attributes syntax extension",
- extend_writer = function()
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local function strip_atx_end(s)
- return s:gsub("%s+#*%s*$","")
- end
-
- local AtxHeading = Cg(parsers.heading_start, "level")
- * parsers.optionalspace
- * (C(((parsers.linechar
- - (parsers.attributes
- * parsers.optionalspace
- * parsers.newline))
- * (parsers.linechar
- - parsers.lbrace)^0)^1)
- / strip_atx_end
- / parsers.parse_heading_text)
- * Cg(Ct(parsers.newline
- + (parsers.attributes
- * parsers.optionalspace
- * parsers.newline)), "attributes")
- * Cb("level")
- * Cb("attributes")
- / writer.heading
-
- local function strip_trailing_spaces(s)
- return s:gsub("%s*$","")
- end
-
- local heading_line = (parsers.linechar
- - (parsers.attributes
- * parsers.optionalspace
- * parsers.newline))^1
- - parsers.thematic_break_lines
-
- local heading_text = heading_line
- * ((V("Endline") / "\n") * (heading_line - parsers.heading_level))^0
- * parsers.newline^-1
-
- local SetextHeading = parsers.freeze_trail * parsers.check_trail_no_rem
- * #(heading_text
- * (parsers.attributes
- * parsers.optionalspace
- * parsers.newline)^-1
- * parsers.check_minimal_indent * parsers.check_trail * parsers.heading_level)
- * Cs(heading_text) / strip_trailing_spaces
- / parsers.parse_heading_text
- * Cg(Ct((parsers.attributes
- * parsers.optionalspace
- * parsers.newline)^-1), "attributes")
- * parsers.check_minimal_indent_and_trail * parsers.heading_level
- * Cb("attributes")
- * parsers.newline
- * parsers.unfreeze_trail
- / writer.heading
-
- local Heading = AtxHeading + SetextHeading
- self.update_rule("Heading", Heading)
- end
- }
-end
-M.extensions.inline_code_attributes = function()
- return {
- name = "built-in inline_code_attributes syntax extension",
- extend_writer = function()
- end, extend_reader = function(self)
- local writer = self.writer
-
- local CodeWithAttributes = parsers.inticks
- * Ct(parsers.attributes)
- / writer.code
-
- self.insert_pattern("Inline before Code",
- CodeWithAttributes,
- "CodeWithAttributes")
- end
- }
-end
-M.extensions.line_blocks = function()
- return {
- name = "built-in line_blocks syntax extension",
- extend_writer = function(self)
- function self.lineblock(lines)
- if not self.is_writing then return "" end
- local buffer = {}
- for i = 1, #lines - 1 do
- buffer[#buffer + 1] = { lines[i], self.hard_line_break }
- end
- buffer[#buffer + 1] = lines[#lines]
-
- return {"\\markdownRendererLineBlockBegin\n"
- ,buffer,
- "\n\\markdownRendererLineBlockEnd "}
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local LineBlock = Ct(
- (Cs(
- ( (parsers.pipe * parsers.space)/""
- * ((parsers.space)/entities.char_entity("nbsp"))^0
- * parsers.linechar^0 * (parsers.newline/""))
- * (-parsers.pipe
- * (parsers.space^1/" ")
- * parsers.linechar^1
- * (parsers.newline/"")
- )^0
- * (parsers.blankline/"")^0
- ) / self.parser_functions.parse_inlines)^1) / writer.lineblock
-
- self.insert_pattern("Block after Blockquote",
- LineBlock, "LineBlock")
- end
- }
-end
-M.extensions.mark = function()
- return {
- name = "built-in mark syntax extension",
- extend_writer = function(self)
- function self.mark(s)
- if self.flatten_inlines then return s end
- return {"\\markdownRendererMark{", s, "}"}
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local doubleequals = P("==")
-
- local Mark = parsers.between(V("Inline"), doubleequals, doubleequals)
- / function (inlines) return writer.mark(inlines) end
-
- self.add_special_character("=")
- self.insert_pattern("Inline before LinkAndEmph",
- Mark, "Mark")
- end
- }
-end
-M.extensions.link_attributes = function()
- return {
- name = "built-in link_attributes syntax extension",
- extend_writer = function()
- end, extend_reader = function(self)
- local parsers = self.parsers
- local options = self.options
-
- local define_reference_parser = (parsers.check_trail / "") * parsers.link_label * parsers.colon
- * parsers.spnlc * parsers.url
- * ( parsers.spnlc_sep * parsers.title * (parsers.spnlc * Ct(parsers.attributes))
- * parsers.only_blank
- + parsers.spnlc_sep * parsers.title * parsers.only_blank
- + Cc("") * (parsers.spnlc * Ct(parsers.attributes)) * parsers.only_blank
- + Cc("") * parsers.only_blank)
-
- local ReferenceWithAttributes = define_reference_parser
- / self.register_link
-
- self.update_rule("Reference", ReferenceWithAttributes)
-
-
- local LinkWithAttributesAndEmph = Ct(parsers.link_and_emph_table * Cg(Cc(true), "match_link_attributes"))
- / self.defer_link_and_emphasis_processing
-
- self.update_rule("LinkAndEmph", LinkWithAttributesAndEmph)
-
- local AutoLinkUrlWithAttributes
- = parsers.auto_link_url
- * Ct(parsers.attributes)
- / self.auto_link_url
-
- self.insert_pattern("Inline before AutoLinkUrl",
- AutoLinkUrlWithAttributes,
- "AutoLinkUrlWithAttributes")
-
- local AutoLinkEmailWithAttributes
- = parsers.auto_link_email
- * Ct(parsers.attributes)
- / self.auto_link_email
-
- self.insert_pattern("Inline before AutoLinkEmail",
- AutoLinkEmailWithAttributes,
- "AutoLinkEmailWithAttributes")
-
- if options.relativeReferences then
-
- local AutoLinkRelativeReferenceWithAttributes
- = parsers.auto_link_relative_reference
- * Ct(parsers.attributes)
- / self.auto_link_url
-
- self.insert_pattern(
- "Inline before AutoLinkRelativeReference",
- AutoLinkRelativeReferenceWithAttributes,
- "AutoLinkRelativeReferenceWithAttributes")
-
- end
-
- end
- }
-end
-M.extensions.notes = function(notes, inline_notes)
- assert(notes or inline_notes)
- return {
- name = "built-in notes syntax extension",
- extend_writer = function(self)
- function self.note(s)
- if self.flatten_inlines then return "" end
- return {"\\markdownRendererNote{",s,"}"}
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local rawnotes = parsers.rawnotes
-
- if inline_notes then
- local InlineNote
- = parsers.circumflex
- * (parsers.link_label / self.parser_functions.parse_inlines_no_inline_note)
- / writer.note
-
- self.insert_pattern("Inline after LinkAndEmph",
- InlineNote, "InlineNote")
- end
- if notes then
- local function strip_first_char(s)
- return s:sub(2)
- end
-
- local RawNoteRef
- = #(parsers.lbracket * parsers.circumflex)
- * parsers.link_label / strip_first_char
-
- -- like indirect_link
- local function lookup_note(ref)
- return writer.defer_call(function()
- local found = rawnotes[self.normalize_tag(ref)]
- if found then
- return writer.note(
- self.parser_functions.parse_blocks_nested(found))
- else
- return {"[",
- self.parser_functions.parse_inlines("^" .. ref), "]"}
- end
- end)
- end
-
- local function register_note(ref,rawnote)
- local normalized_tag = self.normalize_tag(ref)
- if rawnotes[normalized_tag] == nil then
- rawnotes[normalized_tag] = rawnote
- end
- return ""
- end
-
- local NoteRef = RawNoteRef / lookup_note
-
- local optionally_indented_line = parsers.check_optional_indent_and_any_trail * parsers.line
-
- local blank = parsers.check_optional_blank_indent_and_any_trail * parsers.optionalspace * parsers.newline
-
- local chunk = Cs(parsers.line * (optionally_indented_line - blank)^0)
-
- local indented_blocks = function(bl)
- return Cs( bl
- * (blank^1 * (parsers.check_optional_indent / "")
- * parsers.check_code_trail * -parsers.blankline * bl)^0)
- end
-
- local NoteBlock
- = parsers.check_trail_no_rem * RawNoteRef * parsers.colon
- * parsers.spnlc * indented_blocks(chunk)
- / register_note
-
- local Reference = NoteBlock + parsers.Reference
-
- self.update_rule("Reference", Reference)
- self.insert_pattern("Inline before LinkAndEmph",
- NoteRef, "NoteRef")
- end
-
- self.add_special_character("^")
- end
- }
-end
-M.extensions.pipe_tables = function(table_captions, table_attributes)
-
- local function make_pipe_table_rectangular(rows)
- local num_columns = #rows[2]
- local rectangular_rows = {}
- for i = 1, #rows do
- local row = rows[i]
- local rectangular_row = {}
- for j = 1, num_columns do
- rectangular_row[j] = row[j] or ""
+function util.salt(options)
+ local opt_string = {}
+ for k, _ in pairs(defaultOptions) do
+ local v = options[k]
+ if type(v) == "table" then
+ for _, i in ipairs(v) do
+ opt_string[#opt_string+1] = k .. "=" .. tostring(i)
end
- table.insert(rectangular_rows, rectangular_row)
- end
- return rectangular_rows
- end
-
- local function pipe_table_row(allow_empty_first_column
- , nonempty_column
- , column_separator
- , column)
- local row_beginning
- if allow_empty_first_column then
- row_beginning = -- empty first column
- #(parsers.spacechar^4
- * column_separator)
- * parsers.optionalspace
- * column
- * parsers.optionalspace
- -- non-empty first column
- + parsers.nonindentspace
- * nonempty_column^-1
- * parsers.optionalspace
- else
- row_beginning = parsers.nonindentspace
- * nonempty_column^-1
- * parsers.optionalspace
+ elseif k ~= "cacheDir" then
+ opt_string[#opt_string+1] = k .. "=" .. tostring(v)
end
-
- return Ct(row_beginning
- * (-- single column with no leading pipes
- #(column_separator
- * parsers.optionalspace
- * parsers.newline)
- * column_separator
- * parsers.optionalspace
- -- single column with leading pipes or
- -- more than a single column
- + (column_separator
- * parsers.optionalspace
- * column
- * parsers.optionalspace)^1
- * (column_separator
- * parsers.optionalspace)^-1))
end
-
- return {
- name = "built-in pipe_tables syntax extension",
- extend_writer = function(self)
- function self.table(rows, caption, attributes)
- if not self.is_writing then return "" end
- local buffer = {}
- if attributes ~= nil then
- table.insert(buffer,
- "\\markdownRendererTableAttributeContextBegin\n")
- table.insert(buffer, self.attributes(attributes))
- end
- table.insert(buffer,
- {"\\markdownRendererTable{",
- caption or "", "}{", #rows - 1, "}{",
- #rows[1], "}"})
- local temp = rows[2] -- put alignments on the first row
- rows[2] = rows[1]
- rows[1] = temp
- for i, row in ipairs(rows) do
- table.insert(buffer, "{")
- for _, column in ipairs(row) do
- if i > 1 then -- do not use braces for alignments
- table.insert(buffer, "{")
- end
- table.insert(buffer, column)
- if i > 1 then
- table.insert(buffer, "}")
- end
- end
- table.insert(buffer, "}")
- end
- if attributes ~= nil then
- table.insert(buffer,
- "\\markdownRendererTableAttributeContextEnd{}")
- end
- return buffer
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local table_hline_separator = parsers.pipe + parsers.plus
-
- local table_hline_column = (parsers.dash
- - #(parsers.dash
- * (parsers.spacechar
- + table_hline_separator
- + parsers.newline)))^1
- * (parsers.colon * Cc("r")
- + parsers.dash * Cc("d"))
- + parsers.colon
- * (parsers.dash
- - #(parsers.dash
- * (parsers.spacechar
- + table_hline_separator
- + parsers.newline)))^1
- * (parsers.colon * Cc("c")
- + parsers.dash * Cc("l"))
-
- local table_hline = pipe_table_row(false
- , table_hline_column
- , table_hline_separator
- , table_hline_column)
-
- local table_caption_beginning = (parsers.check_minimal_blank_indent_and_any_trail_no_rem
- * parsers.optionalspace * parsers.newline)^0
- * parsers.check_minimal_indent_and_trail
- * (P("Table")^-1 * parsers.colon)
- * parsers.optionalspace
-
- local function strip_trailing_spaces(s)
- return s:gsub("%s*$","")
- end
-
- local table_row = pipe_table_row(true
- , (C((parsers.linechar - parsers.pipe)^1)
- / strip_trailing_spaces
- / self.parser_functions.parse_inlines)
- , parsers.pipe
- , (C((parsers.linechar - parsers.pipe)^0)
- / strip_trailing_spaces
- / self.parser_functions.parse_inlines))
-
- local table_caption
- if table_captions then
- table_caption = #table_caption_beginning
- * table_caption_beginning
- if table_attributes then
- table_caption = table_caption
- * (C(((( parsers.linechar
- - (parsers.attributes
- * parsers.optionalspace
- * parsers.newline
- * -#( parsers.optionalspace
- * parsers.linechar)))
- + ( parsers.newline
- * #( parsers.optionalspace
- * parsers.linechar)
- * C(parsers.optionalspace) / writer.space))
- * (parsers.linechar
- - parsers.lbrace)^0)^1)
- / self.parser_functions.parse_inlines)
- * (parsers.newline
- + ( Ct(parsers.attributes)
- * parsers.optionalspace
- * parsers.newline))
- else
- table_caption = table_caption
- * C(( parsers.linechar
- + ( parsers.newline
- * #( parsers.optionalspace
- * parsers.linechar)
- * C(parsers.optionalspace) / writer.space))^1)
- / self.parser_functions.parse_inlines
- * parsers.newline
- end
- else
- table_caption = parsers.fail
- end
-
- local PipeTable = Ct(table_row * parsers.newline * (parsers.check_minimal_indent_and_trail / {})
- * table_hline * parsers.newline
- * ((parsers.check_minimal_indent / {}) * table_row * parsers.newline)^0)
- / make_pipe_table_rectangular
- * table_caption^-1
- / writer.table
-
- self.insert_pattern("Block after Blockquote",
- PipeTable, "PipeTable")
- end
- }
-end
-M.extensions.raw_inline = function()
- return {
- name = "built-in raw_inline syntax extension",
- extend_writer = function(self)
- local options = self.options
-
- function self.rawInline(s, attr)
- if not self.is_writing then return "" end
- if self.flatten_inlines then return s end
- local name = util.cache_verbatim(options.cacheDir, s)
- return {"\\markdownRendererInputRawInline{",
- name,"}{", self.string(attr),"}"}
- end
- end, extend_reader = function(self)
- local writer = self.writer
-
- local RawInline = parsers.inticks
- * parsers.raw_attribute
- / writer.rawInline
-
- self.insert_pattern("Inline before Code",
- RawInline, "RawInline")
- end
- }
-end
-M.extensions.strike_through = function()
- return {
- name = "built-in strike_through syntax extension",
- extend_writer = function(self)
- function self.strike_through(s)
- if self.flatten_inlines then return s end
- return {"\\markdownRendererStrikeThrough{",s,"}"}
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local StrikeThrough = (
- parsers.between(parsers.Inline, parsers.doubletildes,
- parsers.doubletildes)
- ) / writer.strike_through
-
- self.insert_pattern("Inline after LinkAndEmph",
- StrikeThrough, "StrikeThrough")
-
- self.add_special_character("~")
- end
- }
-end
-M.extensions.subscripts = function()
- return {
- name = "built-in subscripts syntax extension",
- extend_writer = function(self)
- function self.subscript(s)
- if self.flatten_inlines then return s end
- return {"\\markdownRendererSubscript{",s,"}"}
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local Subscript = (
- parsers.between(parsers.Str, parsers.tilde, parsers.tilde)
- ) / writer.subscript
-
- self.insert_pattern("Inline after LinkAndEmph",
- Subscript, "Subscript")
-
- self.add_special_character("~")
- end
- }
-end
-M.extensions.superscripts = function()
- return {
- name = "built-in superscripts syntax extension",
- extend_writer = function(self)
- function self.superscript(s)
- if self.flatten_inlines then return s end
- return {"\\markdownRendererSuperscript{",s,"}"}
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local Superscript = (
- parsers.between(parsers.Str, parsers.circumflex, parsers.circumflex)
- ) / writer.superscript
-
- self.insert_pattern("Inline after LinkAndEmph",
- Superscript, "Superscript")
-
- self.add_special_character("^")
- end
- }
-end
-M.extensions.tex_math = function(tex_math_dollars,
- tex_math_single_backslash,
- tex_math_double_backslash)
- return {
- name = "built-in tex_math syntax extension",
- extend_writer = function(self)
- function self.display_math(s)
- if self.flatten_inlines then return s end
- return {"\\markdownRendererDisplayMath{",self.math(s),"}"}
- end
- function self.inline_math(s)
- if self.flatten_inlines then return s end
- return {"\\markdownRendererInlineMath{",self.math(s),"}"}
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local function between(p, starter, ender)
- return (starter * Cs(p * (p - ender)^0) * ender)
- end
-
- local function strip_preceding_whitespaces(str)
- return str:gsub("^%s*(.-)$", "%1")
- end
-
- local allowed_before_closing = B( parsers.backslash * parsers.any
- + parsers.any * (parsers.any - parsers.backslash))
-
- local allowed_before_closing_no_space = B( parsers.backslash * parsers.any
- + parsers.any * (parsers.nonspacechar - parsers.backslash))
-
- local dollar_math_content = (parsers.newline * (parsers.check_optional_indent / "")
- + parsers.backslash^-1
- * parsers.linechar)
- - parsers.blankline^2
- - parsers.dollar
-
- local inline_math_opening_dollars = parsers.dollar
- * #(parsers.nonspacechar)
-
- local inline_math_closing_dollars = allowed_before_closing_no_space
- * parsers.dollar
- * -#(parsers.digit)
-
- local inline_math_dollars = between(Cs( dollar_math_content),
- inline_math_opening_dollars,
- inline_math_closing_dollars)
-
- local display_math_opening_dollars = parsers.dollar
- * parsers.dollar
-
- local display_math_closing_dollars = parsers.dollar
- * parsers.dollar
-
- local display_math_dollars = between(Cs( dollar_math_content),
- display_math_opening_dollars,
- display_math_closing_dollars)
- local backslash_math_content = (parsers.newline * (parsers.check_optional_indent / "")
- + parsers.linechar)
- - parsers.blankline^2
- local inline_math_opening_double = parsers.backslash
- * parsers.backslash
- * parsers.lparent
-
- local inline_math_closing_double = allowed_before_closing
- * parsers.spacechar^0
- * parsers.backslash
- * parsers.backslash
- * parsers.rparent
-
- local inline_math_double = between(Cs( backslash_math_content),
- inline_math_opening_double,
- inline_math_closing_double)
- / strip_preceding_whitespaces
-
- local display_math_opening_double = parsers.backslash
- * parsers.backslash
- * parsers.lbracket
-
- local display_math_closing_double = allowed_before_closing
- * parsers.spacechar^0
- * parsers.backslash
- * parsers.backslash
- * parsers.rbracket
-
- local display_math_double = between(Cs( backslash_math_content),
- display_math_opening_double,
- display_math_closing_double)
- / strip_preceding_whitespaces
- local inline_math_opening_single = parsers.backslash
- * parsers.lparent
-
- local inline_math_closing_single = allowed_before_closing
- * parsers.spacechar^0
- * parsers.backslash
- * parsers.rparent
-
- local inline_math_single = between(Cs( backslash_math_content),
- inline_math_opening_single,
- inline_math_closing_single)
- / strip_preceding_whitespaces
-
- local display_math_opening_single = parsers.backslash
- * parsers.lbracket
-
- local display_math_closing_single = allowed_before_closing
- * parsers.spacechar^0
- * parsers.backslash
- * parsers.rbracket
-
- local display_math_single = between(Cs( backslash_math_content),
- display_math_opening_single,
- display_math_closing_single)
- / strip_preceding_whitespaces
-
- local display_math = parsers.fail
-
- local inline_math = parsers.fail
-
- if tex_math_dollars then
- display_math = display_math + display_math_dollars
- inline_math = inline_math + inline_math_dollars
- end
-
- if tex_math_double_backslash then
- display_math = display_math + display_math_double
- inline_math = inline_math + inline_math_double
- end
-
- if tex_math_single_backslash then
- display_math = display_math + display_math_single
- inline_math = inline_math + inline_math_single
- end
-
- local TexMath = display_math / writer.display_math
- + inline_math / writer.inline_math
-
- self.insert_pattern("Inline after LinkAndEmph",
- TexMath, "TexMath")
-
- if tex_math_dollars then
- self.add_special_character("$")
- end
-
- if tex_math_single_backslash or tex_math_double_backslash then
- self.add_special_character("\\")
- self.add_special_character("[")
- self.add_special_character("]")
- self.add_special_character(")")
- self.add_special_character("(")
- end
- end
- }
+ table.sort(opt_string)
+ local salt = table.concat(opt_string, ",")
+ .. "," .. metadata.version
+ return salt
end
-M.extensions.jekyll_data = function(expect_jekyll_data)
- return {
- name = "built-in jekyll_data syntax extension",
- extend_writer = function(self)
- function self.jekyllData(d, t, p)
- if not self.is_writing then return "" end
-
- local buf = {}
-
- local keys = {}
- for k, _ in pairs(d) do
- table.insert(keys, k)
- end
- table.sort(keys, function(first, second)
- if type(first) ~= type(second) then
- return type(first) < type(second)
- else
- return first < second
- end
- end)
-
- if not p then
- table.insert(buf, "\\markdownRendererJekyllDataBegin")
- end
-
- local is_sequence = false
- if #d > 0 and #d == #keys then
- for i=1, #d do
- if d[i] == nil then
- goto not_a_sequence
- end
- end
- is_sequence = true
- end
- ::not_a_sequence::
-
- if is_sequence then
- table.insert(buf, "\\markdownRendererJekyllDataSequenceBegin{")
- table.insert(buf, self.identifier(p or "null"))
- table.insert(buf, "}{")
- table.insert(buf, #keys)
- table.insert(buf, "}")
- else
- table.insert(buf, "\\markdownRendererJekyllDataMappingBegin{")
- table.insert(buf, self.identifier(p or "null"))
- table.insert(buf, "}{")
- table.insert(buf, #keys)
- table.insert(buf, "}")
- end
-
- for _, k in ipairs(keys) do
- local v = d[k]
- local typ = type(v)
- k = tostring(k or "null")
- if typ == "table" and next(v) ~= nil then
- table.insert(
- buf,
- self.jekyllData(v, t, k)
- )
- else
- k = self.identifier(k)
- v = tostring(v)
- if typ == "boolean" then
- table.insert(buf, "\\markdownRendererJekyllDataBoolean{")
- table.insert(buf, k)
- table.insert(buf, "}{")
- table.insert(buf, v)
- table.insert(buf, "}")
- elseif typ == "number" then
- table.insert(buf, "\\markdownRendererJekyllDataNumber{")
- table.insert(buf, k)
- table.insert(buf, "}{")
- table.insert(buf, v)
- table.insert(buf, "}")
- elseif typ == "string" then
- table.insert(buf, "\\markdownRendererJekyllDataString{")
- table.insert(buf, k)
- table.insert(buf, "}{")
- table.insert(buf, t(v))
- table.insert(buf, "}")
- elseif typ == "table" then
- table.insert(buf, "\\markdownRendererJekyllDataEmpty{")
- table.insert(buf, k)
- table.insert(buf, "}")
- else
- error(format("Unexpected type %s for value of " ..
- "YAML key %s", typ, k))
- end
- end
- end
-
- if is_sequence then
- table.insert(buf, "\\markdownRendererJekyllDataSequenceEnd")
- else
- table.insert(buf, "\\markdownRendererJekyllDataMappingEnd")
- end
-
- if not p then
- table.insert(buf, "\\markdownRendererJekyllDataEnd")
- end
-
- return buf
- end
- end, extend_reader = function(self)
- local parsers = self.parsers
- local writer = self.writer
-
- local JekyllData
- = Cmt( C((parsers.line - P("---") - P("..."))^0)
- , function(s, i, text) -- luacheck: ignore s i
- local data
- local ran_ok, _ = pcall(function()
- -- TODO: Replace with `require("tinyyaml")` in TeX Live 2023
- local tinyyaml = require("markdown-tinyyaml")
- data = tinyyaml.parse(text, {timestamps=false})
- end)
- if ran_ok and data ~= nil then
- return true, writer.jekyllData(data, function(s)
- return self.parser_functions.parse_blocks_nested(s)
- end, nil)
- else
- return false
- end
- end
- )
-
- local UnexpectedJekyllData
- = P("---")
- * parsers.blankline / 0
- * #(-parsers.blankline) -- if followed by blank, it's thematic break
- * JekyllData
- * (P("---") + P("..."))
-
- local ExpectedJekyllData
- = ( P("---")
- * parsers.blankline / 0
- * #(-parsers.blankline) -- if followed by blank, it's thematic break
- )^-1
- * JekyllData
- * (P("---") + P("..."))^-1
-
- self.insert_pattern("Block before Blockquote",
- UnexpectedJekyllData, "UnexpectedJekyllData")
- if expect_jekyll_data then
- self.update_rule("ExpectedJekyllData", ExpectedJekyllData)
- end
- end
- }
+function util.warning(s)
+ io.stderr:write("Warning: " .. s .. "\n")
end
function M.new(options)
options = options or {}
setmetatable(options, { __index = function (_, key)
return defaultOptions[key] end })
- if options.singletonCache and singletonCache.convert then
- for k, v in pairs(defaultOptions) do
- if type(v) == "table" then
- for i = 1, math.max(#singletonCache.options[k], #options[k]) do
- if singletonCache.options[k][i] ~= options[k][i] then
- goto miss
- end
- end
- elseif singletonCache.options[k] ~= options[k] then
- goto miss
- end
- end
- return singletonCache.convert
- end
- ::miss::
- local extensions = {}
-
- if options.bracketedSpans then
- local bracketed_spans_extension = M.extensions.bracketed_spans()
- table.insert(extensions, bracketed_spans_extension)
- end
-
- if options.contentBlocks then
- local content_blocks_extension = M.extensions.content_blocks(
- options.contentBlocksLanguageMap)
- table.insert(extensions, content_blocks_extension)
- end
-
- if options.definitionLists then
- local definition_lists_extension = M.extensions.definition_lists(
- options.tightLists)
- table.insert(extensions, definition_lists_extension)
- end
-
- if options.fencedCode then
- local fenced_code_extension = M.extensions.fenced_code(
- options.blankBeforeCodeFence,
- options.fencedCodeAttributes,
- options.rawAttribute)
- table.insert(extensions, fenced_code_extension)
- end
-
- if options.fencedDivs then
- local fenced_div_extension = M.extensions.fenced_divs(
- options.blankBeforeDivFence)
- table.insert(extensions, fenced_div_extension)
- end
-
- if options.headerAttributes then
- local header_attributes_extension = M.extensions.header_attributes()
- table.insert(extensions, header_attributes_extension)
- end
-
- if options.inlineCodeAttributes then
- local inline_code_attributes_extension =
- M.extensions.inline_code_attributes()
- table.insert(extensions, inline_code_attributes_extension)
- end
-
- if options.jekyllData then
- local jekyll_data_extension = M.extensions.jekyll_data(
- options.expectJekyllData)
- table.insert(extensions, jekyll_data_extension)
- end
-
- if options.linkAttributes then
- local link_attributes_extension =
- M.extensions.link_attributes()
- table.insert(extensions, link_attributes_extension)
- end
-
- if options.lineBlocks then
- local line_block_extension = M.extensions.line_blocks()
- table.insert(extensions, line_block_extension)
- end
-
- if options.mark then
- local mark_extension = M.extensions.mark()
- table.insert(extensions, mark_extension)
- end
-
- if options.pipeTables then
- local pipe_tables_extension = M.extensions.pipe_tables(
- options.tableCaptions, options.tableAttributes)
- table.insert(extensions, pipe_tables_extension)
- end
-
- if options.rawAttribute then
- local raw_inline_extension = M.extensions.raw_inline()
- table.insert(extensions, raw_inline_extension)
- end
-
- if options.strikeThrough then
- local strike_through_extension = M.extensions.strike_through()
- table.insert(extensions, strike_through_extension)
- end
-
- if options.subscripts then
- local subscript_extension = M.extensions.subscripts()
- table.insert(extensions, subscript_extension)
- end
-
- if options.superscripts then
- local superscript_extension = M.extensions.superscripts()
- table.insert(extensions, superscript_extension)
- end
-
- if options.texMathDollars or
- options.texMathSingleBackslash or
- options.texMathDoubleBackslash then
- local tex_math_extension = M.extensions.tex_math(
- options.texMathDollars,
- options.texMathSingleBackslash,
- options.texMathDoubleBackslash)
- table.insert(extensions, tex_math_extension)
- end
-
- if options.notes or options.inlineNotes then
- local notes_extension = M.extensions.notes(
- options.notes, options.inlineNotes)
- table.insert(extensions, notes_extension)
- end
-
- if options.citations then
- local citations_extension = M.extensions.citations(options.citationNbsps)
- table.insert(extensions, citations_extension)
- end
-
- if options.fancyLists then
- local fancy_lists_extension = M.extensions.fancy_lists()
- table.insert(extensions, fancy_lists_extension)
- end
- for _, user_extension_filename in ipairs(options.extensions) do
- local user_extension = (function(filename)
- local pathname = kpse.lookup(filename)
- local input_file = assert(io.open(pathname, "r"),
- [[Could not open user-defined syntax extension "]]
- .. pathname .. [[" for reading]])
- local input = assert(input_file:read("*a"))
- assert(input_file:close())
- local user_extension, err = load([[
- local sandbox = {}
- setmetatable(sandbox, {__index = _G})
- _ENV = sandbox
- ]] .. input)()
- assert(user_extension,
- [[Failed to compile user-defined syntax extension "]]
- .. pathname .. [[": ]] .. (err or [[]]))
- assert(user_extension.api_version ~= nil,
- [[User-defined syntax extension "]] .. pathname
- .. [[" does not specify mandatory field "api_version"]])
- assert(type(user_extension.api_version) == "number",
- [[User-defined syntax extension "]] .. pathname
- .. [[" specifies field "api_version" of type "]]
- .. type(user_extension.api_version)
- .. [[" but "number" was expected]])
- assert(user_extension.api_version > 0
- and user_extension.api_version <= metadata.user_extension_api_version,
- [[User-defined syntax extension "]] .. pathname
- .. [[" uses syntax extension API version "]]
- .. user_extension.api_version .. [[ but markdown.lua ]]
- .. metadata.version .. [[ uses API version ]]
- .. metadata.user_extension_api_version
- .. [[, which is incompatible]])
-
- assert(user_extension.grammar_version ~= nil,
- [[User-defined syntax extension "]] .. pathname
- .. [[" does not specify mandatory field "grammar_version"]])
- assert(type(user_extension.grammar_version) == "number",
- [[User-defined syntax extension "]] .. pathname
- .. [[" specifies field "grammar_version" of type "]]
- .. type(user_extension.grammar_version)
- .. [[" but "number" was expected]])
- assert(user_extension.grammar_version == metadata.grammar_version,
- [[User-defined syntax extension "]] .. pathname
- .. [[" uses grammar version "]] .. user_extension.grammar_version
- .. [[ but markdown.lua ]] .. metadata.version
- .. [[ uses grammar version ]] .. metadata.grammar_version
- .. [[, which is incompatible]])
-
- assert(user_extension.finalize_grammar ~= nil,
- [[User-defined syntax extension "]] .. pathname
- .. [[" does not specify mandatory "finalize_grammar" field]])
- assert(type(user_extension.finalize_grammar) == "function",
- [[User-defined syntax extension "]] .. pathname
- .. [[" specifies field "finalize_grammar" of type "]]
- .. type(user_extension.finalize_grammar)
- .. [[" but "function" was expected]])
- local extension = {
- name = [[user-defined "]] .. pathname .. [[" syntax extension]],
- extend_reader = user_extension.finalize_grammar,
- extend_writer = function() end,
- }
- return extension
- end)(user_extension_filename)
- table.insert(extensions, user_extension)
- end
- local writer = M.writer.new(options)
- local reader = M.reader.new(writer, options)
- local convert = reader.finalize_grammar(extensions)
- collectgarbage("collect")
- if options.singletonCache then
- local singletonCacheOptions = {}
- for k, v in pairs(options) do
- singletonCacheOptions[k] = v
+ local parser_convert = nil
+ return function(input)
+ local function convert(input)
+ if parser_convert == nil then
+ local parser = require("markdown-parser")
+ if metadata.version ~= parser.metadata.version then
+ warn("markdown.lua " .. metadata.version .. " used with " ..
+ "markdown-parser.lua " .. parser.metadata.version .. ".")
+ end
+ parser_convert = parser.new(options)
+ end
+ return parser_convert(input)
+ end
+ local output
+ if options.eagerCache or options.finalizeCache then
+ local salt = util.salt(options)
+ local name = util.cache(options.cacheDir, input, salt, convert,
+ ".md.tex")
+ output = [[\input{]] .. name .. [[}\relax]]
+ else
+ output = convert(input)
+ end
+ if options.finalizeCache then
+ local file, mode
+ if options.frozenCacheCounter > 0 then
+ mode = "a"
+ else
+ mode = "w"
+ end
+ file = assert(io.open(options.frozenCacheFileName, mode),
+ [[Could not open file "]] .. options.frozenCacheFileName
+ .. [[" for writing]])
+ assert(file:write(
+ [[\expandafter\global\expandafter\def\csname ]]
+ .. [[markdownFrozenCache]] .. options.frozenCacheCounter
+ .. [[\endcsname{]] .. output .. [[}]] .. "\n"))
+ assert(file:close())
end
- setmetatable(singletonCacheOptions,
- { __index = function (_, key)
- return defaultOptions[key] end })
- singletonCache.options = singletonCacheOptions
- singletonCache.convert = convert
+ return output
end
- return convert
end
-
return M
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 e51b01c14bd..9bfc57605a4 100644
--- a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua
+++ b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua
@@ -1,5 +1,5 @@
--% Kale Ewasiuk (kalekje@gmail.com)
---% 2024-03-14
+--% 2024-09-30
--% Copyright (C) 2021-2024 Kale Ewasiuk
--%
--% Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -295,7 +295,7 @@ 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
@@ -495,6 +495,85 @@ 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 pl.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
+ for _, r in ipairs(s:split(penlight.seq.train_element_sep)) do
+ if 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-- -- -- -- -- -- -- -- -- -- -- -- functions below extend the operator module
function penlight.operator.strgt(a,b) return tostring(a) > tostring(b) end
@@ -517,8 +596,6 @@ end
-
-
-- table stuff below
function penlight.tablex.strinds(t) -- convert indices that are numbers to string indices
@@ -772,37 +849,49 @@ __PDFmetadata__ = {}
penlight.tex.add_xspace_intext = true
-function penlight.tex.updatePDFtable(k, v, o) -- key val overwrite
- k = k:upfirst()
- if penlight.hasval(o) or (__PDFmetadata__[k] == nil) then
- __PDFmetadata__[k] = v
+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
+
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)
@@ -857,12 +946,32 @@ end
+function penlight.caseswitch(s, c, kv)
+ local kvtbl = penlight.luakeys.parse(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..'"')
+ sw = ''
+ else
+ sw = kvtbl['__'] or '' -- use __ as not found case
+ end
+ end
+ tex.sprint(sw)
+end
+
+
penlight.tbls = {}
penlight.rec_tbl = ''
penlight.rec_tbl_opts = {}
+
+function penlight.tbl(s)
+ return penlight.get_tbl_item(s)
+end
+
function penlight.get_tbl_name(s)
if s == '' then
return penlight.rec_tbl
@@ -1027,116 +1136,3 @@ if penlight.hasval(__PL_GLOBALS__) then
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
-
-
--- 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
-
--- -- -- -- -- -- --
--- -- -- -- functions below extend the array2d module
-
-
---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
-
diff --git a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty
index 3c411d227ac..cc37b096b1b 100644
--- a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty
+++ b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty
@@ -1,5 +1,5 @@
% Kale Ewasiuk (kalekje@gmail.com)
-% 2024-03-14
+% 2024-09-30
% Copyright (C) 2021-2024 Kale Ewasiuk
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -22,12 +22,14 @@
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
% OR OTHER DEALINGS IN THE SOFTWARE.
-\ProvidesPackage{penlightplus}[2024-03-14]
+\ProvidesPackage{penlightplus}[2024-09-30]
\RequirePackage{luacode}
\RequirePackage{luakeys}
\RequirePackage[import]{penlight}
\RequirePackage{etoolbox}
+\RequirePackage{tokcycle}
+
\DeclareOption{globals}{\luadirect{__PL_GLOBALS__ = true}}
\DeclareOption{pl}{\directlua{pl = penlight}}
@@ -40,23 +42,37 @@
\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})}%
@@ -97,6 +113,18 @@
+
+
+
+\NewDocumentCommand{\caseswitch}{s m +m}{\ignorespaces\luadirect{penlight.caseswitch(\luastring{#1},\luastring{#2},\luastringN{#3})}\unskip}
+% argument 1 is star option, which throws an error if case is not found
+% argument 2 is the case, fully expanded
+% argument 3 is a luakeys table of options, not expanded
+
+
+
+
+
%%% tbls below
\NewDocumentCommand{\tblnew}{m}{\luadirect{% initialize a tbl and set blank
@@ -134,6 +162,13 @@
table.insert(penlight.tbls[__tbl__], \luastring{#2})
}}
+
+\NewDocumentCommand{\tblappN}{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__], \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__ = penlight.get_tbl_name(\luastring{#1})
for k, v in ipairs(penlight.luakeys.parse(string.subpar(\luastring{#2}), {naked_as_value=true})) do
@@ -141,6 +176,14 @@
end
}}
+
+\NewDocumentCommand{\tblconN}{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(\luastringN{#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}
@@ -167,6 +210,10 @@
penlight.set_tbl_item(\luastring{#1}, \luastring{#2})
}}
+\NewDocumentCommand{\tblsetN}{m m}{\luadirect{% set item with {value}
+ penlight.set_tbl_item(\luastring{#1}, \luastringN{#2})
+}}
+
\NewDocumentCommand{\tbldef}{ m m }{\luadirect{penlight.def_tbl(\luastring{#1}, \luastring{#2})}}
@@ -199,11 +246,3 @@
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/optex/base/basic-macros.opm b/Master/texmf-dist/tex/optex/base/basic-macros.opm
index f2047cadf0f..7dfda46a764 100644
--- a/Master/texmf-dist/tex/optex/base/basic-macros.opm
+++ b/Master/texmf-dist/tex/optex/base/basic-macros.opm
@@ -117,10 +117,11 @@
more logging information to the log file and the terminal.
\_cod ------------------------------
-\_def\_loggingall{\_tracingcommands=3 \_tracingstats=2 \_tracingpages=1
+\_def\_loggingall{
+ \_tracingstats=2 \_tracingpages=1
\_tracingoutput=1 \_tracingmacros=3 % \_tracinglostchars=2 is already set
- \_tracingparagraphs=1 \_tracingrestores=1 \_tracingscantokens=1
- \_tracingifs=1 \_tracinggroups=1 \_tracingassigns=1 }
+ \_tracingparagraphs=1 \_tracingscantokens=1 \_tracingifs=1 \_tracinggroups=1
+ \_tracingcommands=3 \_tracingrestores=1 \_tracingassigns=1 }
\_def\_tracingall{\_tracingonline=1 \_loggingall}
\_public \loggingall \tracingall ;
diff --git a/Master/texmf-dist/tex/optex/base/fonts-opmac.opm b/Master/texmf-dist/tex/optex/base/fonts-opmac.opm
index ca4d38b4ce1..646a0257b9d 100644
--- a/Master/texmf-dist/tex/optex/base/fonts-opmac.opm
+++ b/Master/texmf-dist/tex/optex/base/fonts-opmac.opm
@@ -212,7 +212,7 @@
\_def \_rmfixed {% used in default \footline
{\_ifdim\_mainfosize=0pt \_mainfosize=10pt \_fi
\_fontdef\_tenrm{\_setfontsize{at\mainfosize}\_resetmod\_rm}%
- \_global\_let\_rmfixed=\_tenrm}% next use will be font switch only
+ \_glet\_rmfixed=\_tenrm}% next use will be font switch only
\_rmfixed
}
\_let \rmfixed = \_tenrm % user can redefine it
diff --git a/Master/texmf-dist/tex/optex/base/hi-syntax.opm b/Master/texmf-dist/tex/optex/base/hi-syntax.opm
index 7e5b77b8264..2f477c8f319 100644
--- a/Master/texmf-dist/tex/optex/base/hi-syntax.opm
+++ b/Master/texmf-dist/tex/optex/base/hi-syntax.opm
@@ -144,7 +144,7 @@ file name must include it in lowercase letters. For example, the file
\printdoc hisyntax-c.opm
-\OpTeX/ provides `hisyntax-{c,lua,python,tex,html}.opm` files.
+\OpTeX/ provides `hisyntax-{c,lua,python,tex,html,kt}.opm` files.
You can take inspiration from these files and declare more languages.
Users can re-declare default colors by \^`\hicolors``={<list of color declarations>}`.
diff --git a/Master/texmf-dist/tex/optex/base/hisytnax-kt.opm b/Master/texmf-dist/tex/optex/base/hisytnax-kt.opm
new file mode 100644
index 00000000000..8a9d2dffac3
--- /dev/null
+++ b/Master/texmf-dist/tex/optex/base/hisytnax-kt.opm
@@ -0,0 +1,122 @@
+%% This is part of the OpTeX project, see http://petr.olsak.net/optex
+%% Author: Vojtěch Hořánek, <https://github.com/vojta-horanek/hisyntax-kt>
+
+\_codedecl \_hisyntaxkt {Syntax highlighting for Kotlin sources <2024-05-18>}
+
+\_newtoks \_hisyntaxkt \_newtoks \_hicolorskt
+
+\_global\_hicolorskt={ % colors for Kotlin language
+ \_hicolor C \Grey % Comments
+ \_hicolor D \Green % Documentation comments
+ \_hicolor W \Yellow % Warnings
+ \_hicolor S \Green % Strings
+ \_hicolor K \Blue % Keywords
+ \_hicolor F \Blue % Std. functions
+ \_hicolor A \Yellow % Annotations
+ \_hicolor N \Cyan % Numbers
+ \_hicolor T \Brown % Templates
+ \_hicolor I \Grey % Imports
+ \_hicolor O \Magenta % Others
+}
+
+\_global\_hisyntaxkt={%
+ \_the\_hicolorskt
+ \_let\c=\_relax \_let\e=\_relax \_let\o=\_relax
+ % comments
+ \_replthis {FIXME} {\z W{FIXME}}% FIXME in comment
+ \_replthis {TODO} {\z W{TODO}}% TODO in comment
+ \_replfromto {/**}{*/} {\x D{/**#1*/}}% /**...*/ documentation
+ \_replfromto {/*}{*/} {\x C{/*#1*/}}% /*...*/ multi-line
+ \_replfromto {//}{^^J} {\z C{//#1}^^J}% //... single-line
+ % strings
+ \_replfromto {\_csstring\$\_csstring\{}{\_csstring\}}% string template expression ${tmp}
+ {\z T{\_csstring\$\_csstring\{#1\_csstring\}}}%
+ \_replfromto {\_csstring\$}{\n} {\x T{\_csstring\$#1}}% string template $tmp
+ \_replthis {\_string\"} {{\_string\"}}% \" string escape
+ \_replfromto {"}{"} {\x S{"#1"}}% "..." string
+ % characters
+ \_replthis {\_string\'} {{\_string\'}}% \' char escape
+ \_replfromto {'}{'} {\x S{'#1'}}% '.' character
+ % others
+ \_replfromto {\n@}{\n} {\z A{@#1}}% annotations
+ \_replfromto {package}{^^J} {\z K{package}\z I{#1}^^J}% package...
+ \_replfromto {import}{^^J} {\z K{import}\z I{#1}^^J}% import...
+ \_replfromto {return@}{\n} {\z K{return}\z O{@#1}}% return@...
+ \_replfromto {continue@}{\n} {\z K{continue}\z O{@#1}}% continue@...
+ \_replfromto {break@}{\n} {\z K{break}\z O{@#1}}% break@...
+ % Special characters
+ \_replthis{;}{\z C{;}} % semi-collon
+ \_replthis{?:}{\n\o?:\n} % elvis operator
+ \_edef\_tmpa {()\_string{\_string}+-*/=[]<>,:\_pcent\_string&|!}% non-letters
+ \_ea \_foreach \_tmpa
+ \_do {\_replthis{#1}{\n\o#1\n}}
+ %
+ \_foreach % keywords
+ {as}{as?}{break}{class}{continue}{do}{else}{false}{for}{fun}%
+ {if}{in}{!in}{interface}{is}{!is}{null}{object}{package}%
+ {return}{super}{this}{throw}{true}{try}{typealias}{typeof}%
+ {val}{var}{when}{while}{by}{catch}{constructor}{dynamic}%
+ {finally}{get}{import}{init}{set}{value}{class}{where}%
+ {abstract}{actual}{annotation}{companion}{const}{crossinline}%
+ {data}{enum}{expect}{external}{final}{infix}{inline}{inner}%
+ {internal}{lateinit}{noinline}{open}{operator}{out}{override}%
+ {private}{protected}{public}{reified}{sealed}{suspend}{tailrec}%
+ {vararg}{it}{equals}{compareTo}{get()}{get}{set}{set(value)}%
+ \_do {\_replthis{\n#1\n}{\z K{#1}}}
+ %
+ \_foreach % standard library extension functions
+ {all}{also}{any}{apply}{asIterable}{asSequence}{associate}%
+ {associateBy}{associateByTo}{associateTo}{associateWith}%
+ {associateWithTo}{average}{chunked}{contains}{count}{distinct}%
+ {distinctBy}{drop}{dropLast}{dropLastWhile}{dropWhile}{elementAt}%
+ {elementAtOrElse}{elementAtOrNull}{filter}{filterIndexed}%
+ {filterIndexedTo}{filterIsInstance}{filterIsInstanceTo}{filterNot}%
+ {filterNotNull}{filterNotNullTo}{filterNotTo}{filterTo}{find}%
+ {findLast}{first}{firstNotNullOf}{firstNotNullOfOrNull}%
+ {firstOrNull}{flatMap}{flatMapIndexed}{flatMapIndexedTo}%
+ {flatMapTo}{fold}{foldIndexed}{foldRight}{foldRightIndexed}%
+ {forEach}{forEachIndexed}{getOrElse}{getOrNull}{groupBy}%
+ {groupByTo}{groupingBy}{indexOf}{indexOfFirst}{indexOfLast}%
+ {intersect}{iterator}{joinTo}{joinToString}{last}{lastIndexOf}%
+ {lastOrNull}{let}{map}{mapIndexed}{mapIndexedNotNull}%
+ {mapIndexedNotNullTo}{mapIndexedTo}{mapNotNull}{mapNotNullTo}%
+ {mapTo}{max}{maxBy}{maxByOrNull}{maxOf}{maxOfOrNull}{maxOfWith}%
+ {maxOfWithOrNull}{maxOrNull}{maxWith}{maxWithOrNull}{min}{minBy}%
+ {minByOrNull}{minOf}{minOfOrNull}{minOfWith}{minOfWithOrNull}%
+ {minOrNull}{minus}{minusElement}{minWith}{minWithOrNull}{none}%
+ {onEach}{onEachIndexed}{partition}{plus}{plusElement}{random}%
+ {randomOrNull}{reduce}{reduceIndexed}{reduceIndexedOrNull}%
+ {reduceOrNull}{reduceRight}{reduceRightIndexed}%
+ {reduceRightIndexedOrNull}{reduceRightOrNull}{repeat}%
+ {requireNoNulls}{reverse}{reversed}{runningFold}%
+ {runningFoldIndexed}{runningReduce}{runningReduceIndexed}{scan}%
+ {scanIndexed}{shuffle}{single}{singleOrNull}{slice}{sortBy}%
+ {sortByDescending}{sortDescending}{sorted}{sortedBy}%
+ {sortedByDescending}{sortedDescending}{sortedWith}{subtract}{sum}%
+ {sumBy}{sumByDouble}{sumOf}{take}{takeIf}{takeLast}%
+ {takeLastWhile}{takeUnless}{takeWhile}{toBooleanArray}%
+ {toByteArray}{toCharArray}{toCollection}{toDoubleArray}%
+ {toFloatArray}{toHashSet}{toIntArray}{toList}{toLongArray}%
+ {toMutableList}{toMutableSet}{toSet}{toShortArray}{union}%
+ {windowed}{withIndex}{zip}{zipWithNext}{contract}%
+ \_do {\_replthis{.#1\n}{.\z F{#1}}%
+ \_replthis{\n#1\n}{\z F{#1}}}% invoke operators ( and { begin with \n
+ %
+ \_replthis{.}{\n.\n} % numbers
+ \_foreach 0123456789
+ \_do {\_replfromto{\n#1}{\n}{\c#1##1\e}}
+ \_replthis{\e.\c}{.}
+ \_replthis{\e.\n}{.\e}
+ \_replthis{\n.\c}{\c.}
+ \_replthis{e\e\o+\c}{e+}\_replthis{e\e\o-\c}{e-}
+ \_replthis{E\e\o+\c}{E+}\_replthis{E\e\o-\c}{E-}
+ \_def\c#1\e{\z N{#1}}
+ \_def\o#1{\z O{#1}} % others
+}
+
+\_endcode %------------------------------------------------
+
+
+\endinput
+
+2024-05-18: First version
diff --git a/Master/texmf-dist/tex/optex/base/if-macros.opm b/Master/texmf-dist/tex/optex/base/if-macros.opm
index eae011ae260..25af86fe303 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 <2023-12-07>} % preloaded in format
+\_codedecl \newif {Special if-macros, is-macros and loops <2024-02-19>} % preloaded in format
\_doc ----------------------------
\secc Classical \code{\\newif}
@@ -189,7 +189,7 @@
\_public \foreachdef ;
\_doc ----------------------------
- \secc Is-macros
+ \secc Is-macros and selection of cases
There are a collection of macros
\^`\isempty`, \^`\istoksempty`, \^`\isequal`, \^`\ismacro`,
\^`\isdefined`, \^`\isinlist`, \^`\isfile` and \^`\isfont`
@@ -339,14 +339,22 @@
\`\qcasesof` `{<string>} <list of cases>` behaves like \^`\casesof` but it
compares phrases with the given <string> using \^`\isequal`.
The <list of cases> includes pairs
- `{<phrase>} {<what to do if string=phrase>}` finalized by a
- pair `\_finc {<what to do else>}`.
+ `{<phrases>} {<what to do if string=phrase>}` finalized by a
+ pair `\_finc {<what to do else>}`. The `<phrases>` is a single
+ phrase or phrases separated by `|` which means \"or". For example
+ the pair `{ab|cde|f} {<code>}` runs <code> if the given <string> is `ab` or `cde` or~`f`.
+ The usage of `\qcasesof` can be found in
+ \ulink[http://petr.olsak.net/optex/optex-tricks.html\#thedimen]{OpTeX trick 0132}.
\_cod -----------------------------
\_long\_def \_qcasesof #1#2#3{\_ifx\_finc#2\_ea\_ignoresecond \_else \_ea\_usesecond \_fi
- {#3}{\_isequal{#1}{#2}\_iftrue \_ea\_ignoresecond \_else \_ea\_usesecond \_fi
- {\_finc{#3}}{\_qcasesof{#1}}}%
+ {#3}{\_qcasesofA{#1}#2|\_qcasesofA|{\_finc{#3}}{\_qcasesof{#1}}}%
}
+\_long\_def\_qcasesofA#1#2|{\_ifx\_qcasesofA#2\_ea\_usesecond \_else
+ \_isequal{#1}{#2}\_iftrue \_qcasesofB \_fi \_afterfi{\_qcasesofA{#1}}\_fi
+}
+\_long\_def\_qcasesofB #1\_qcasesofA|#2#3{\_fi\_fi#2}
+
\_public \qcasesof ;
\_doc -----------------------------
@@ -376,7 +384,8 @@
\_endcode
-2023-12-07 \_testparam define \long (big fixed)
+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.
2023-01-16 \isnextchar created expandable.
2022-12-02 \xcasesof: its first parameter is \long too.
diff --git a/Master/texmf-dist/tex/optex/base/luatex-ini.opm b/Master/texmf-dist/tex/optex/base/luatex-ini.opm
index 1deeca2b807..8c7723d7121 100644
--- a/Master/texmf-dist/tex/optex/base/luatex-ini.opm
+++ b/Master/texmf-dist/tex/optex/base/luatex-ini.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \pdfprimitive {LuaTeX initialization code <2020-02-21>} % preloaded in format
+\_codedecl \pdfprimitive {LuaTeX initialization code <2024-02-29>} % preloaded in format
\_let\_pdfpagewidth \pagewidth
\_let\_pdfpageheight \pageheight
@@ -79,6 +79,8 @@
\_protected\_def \_pdfmapline {\_pdfextension mapline }
\_protected\_def \_pdftrailer {\_pdfextension trailer }
\_protected\_def \_pdfglyphtounicode {\_pdfextension glyphtounicode }
+\_protected\_def \_pdfrunninglinkoff {\_pdfextension linkstate 1 }
+\_protected\_def \_pdfrunninglinkon {\_pdfextension linkstate 0 }
\_protected\_edef\_pdfcompresslevel {\_pdfvariable compresslevel}
\_protected\_edef\_pdfobjcompresslevel {\_pdfvariable objcompresslevel}
@@ -115,7 +117,8 @@
\pdfsetmatrix \pdfsave \pdfrestore \pdfobj \pdfrefobj \pdfannot
\pdfstartlink \pdfendlink \pdfoutline \pdfdest \pdfthread \pdfstartthread
\pdfendthread \pdfinfo \pdfcatalog \pdfnames \pdfincludechars \pdffontattr
- \pdfmapfile \pdfmapline \pdftrailer \pdfglyphtounicode \pdfcompresslevel
+ \pdfmapfile \pdfmapline \pdftrailer \pdfglyphtounicode
+ \pdfcompresslevel \pdfrunninglinkoff \pdfrunninglinkon
\pdfobjcompresslevel \pdfdecimaldigits \pdfgamma \pdfimageresolution
\pdfimageapplygamma \pdfimagegamma \pdfimagehicolor \pdfimageaddfilename
\pdfpkresolution \pdfinclusioncopyfonts \pdfinclusionerrorlevel
@@ -132,3 +135,8 @@
\_endcode
Common pdf\TeX/ primitives equivalents are declared here. Initial values are set.
+
+\_endinput
+
+2024-02-29 \pdfrunninglinkoff \pdfrunninglinkon added
+2020-02-21 released
diff --git a/Master/texmf-dist/tex/optex/base/margins.opm b/Master/texmf-dist/tex/optex/base/margins.opm
index c77926f9ad1..c7751ccb064 100644
--- a/Master/texmf-dist/tex/optex/base/margins.opm
+++ b/Master/texmf-dist/tex/optex/base/margins.opm
@@ -105,7 +105,7 @@
The `\_numprint` is `\_useit` by default (i.e.\ do nothing special)
because we have left-to-right mode as default. But a user can define
\begtt
- \_def\_numprint#1{{\textdir TLT #1}}
+ \_def\_numprint#1{{\_textdir TLT #1}}
\endtt
if the document is set to right-to-left mode.
\_cod -----------------------------
diff --git a/Master/texmf-dist/tex/optex/base/math-macros.opm b/Master/texmf-dist/tex/optex/base/math-macros.opm
index fa4317f25ae..9d0887ee0fb 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 <2023-05-24>} % preloaded in format
+\_codedecl \sin {Math macros plus mathchardefs <2024-06-02>} % preloaded in format
\_doc -----------------------------
The category code of the character `_` remains as the letter (11) and the mathcode
@@ -33,18 +33,18 @@
\_newifi\_ifmathsb \_mathsbfalse
\_def \_mathsbon {%
- \_directlua{
+ \_ifmathsb \_else \_directlua{
callback.add_to_callback("process_input_buffer",
function (str)
local num
str, num = string.gsub(str.." ", \_gsubrule)
if num>0 then str = string.gsub(str, \_gsubrule) end % \phi_i\rho_j -> \phi _i\rho _j
return str
- end, "_mathsb") }%
+ end, "_mathsb") }\_fi
\_global\_mathsbtrue
}
\_def \_mathsboff {%
- \_directlua{ callback.remove_from_callback("process_input_buffer", "_mathsb") }%
+ \_ifmathsb \_directlua{ callback.remove_from_callback("process_input_buffer", "_mathsb") }\_fi
\_global \_mathsbfalse
}
\_edef\_gsubrule{"(\_nbb[a-zA-Z]+)_([a-zA-Z]?[^_a-zA-Z])", "\_pcent 1 _\_pcent 2"}
@@ -707,7 +707,7 @@
impossible to use `\eqno` or `\leqno` or \^`\eqmark`.
\OpTeX/ offers
- `\dislaylines to<dimen>{<formula>\cr<formula>\cr...<formula>}`
+ `\displaylines to<dimen>{<formula>\cr<formula>\cr...<formula>}`
as an alternative case of usage `\displaylines`. See section 4.3 in the
\ulink[http://petr.olsak.net/ftp/olsak/optex/optex-math.pdf]
{Typesetting Math with \OpTeX/}.
@@ -1110,6 +1110,7 @@
\_endcode %---------------------------------------------------
+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)
2023-04-15 \bbig introduced
diff --git a/Master/texmf-dist/tex/optex/base/more-macros.opm b/Master/texmf-dist/tex/optex/base/more-macros.opm
index 3f4916a9c3d..7e1d1e2b94a 100644
--- a/Master/texmf-dist/tex/optex/base/more-macros.opm
+++ b/Master/texmf-dist/tex/optex/base/more-macros.opm
@@ -216,13 +216,19 @@
\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.
\_cod -----------------------------
\_newtoks\_tmptoks
\_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 \_tmptoks\_ea{\_the\_tmptoks#3##1}%
+ \_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}}%
@@ -294,8 +300,9 @@
by optional syntax `\bp[<digits>]{<dimen>}` and
`\expr[<digits>]{<expression>}`. Default is \`\_decdigits`.
- The usage of prefixed versions \`\_expr` or \`\_bp` is more recommended
- because a user can re-define the control sequences `\expr` or `\bp`.
+ The usage of prefixed versions `\_expr` or `\_bp` is more recommended
+ for macro programmers because a user can re-define the control sequences
+ `\expr` or `\bp`.
\_cod -----------------------------
\_def\_decdigits{3} % digits after decimal point in \_bp and \_expr outputs.
diff --git a/Master/texmf-dist/tex/optex/base/optex-tricks.opm b/Master/texmf-dist/tex/optex/base/optex-tricks.opm
index 456a7472e1c..c90b429a4fc 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-02-13>} % chunks loaded on demand
+\_codedecl \_undefined {OpTeX tricks ready to autoload <2024-05-07>} % chunks loaded on demand
% Selected OpTeX tricks are here, they are auto-loaded if the macro is used first
% namespace: optextrick
@@ -59,6 +59,25 @@
\_nspublic \hours \minutes \seconds \weekday \Othe ;
+\_trick 0132 \thedimen ;
+%%%%%%%%%%%%
+
+\_sdef {_thedimen:pt}{1}
+\_sdef {_thedimen:cm}{28.4527559}
+\_sdef {_thedimen:mm}{2.84527559}
+\_sdef {_thedimen:in}{72.27}
+\_sdef {_thedimen:sp}{(1/65536)}
+\_sdef {_thedimen:pc}{12}
+\_sdef {_thedimen:bp}{1.00375}
+\_sdef {_thedimen:dd}{1.070008643}
+\_sdef {_thedimen:cc}{12.8401037}
+\_sdef {_thedimen:em}{(\number\fontdimen6\font/65536)}
+\_sdef {_thedimen:ex}{(\number\fontdimen5\font/65536)}
+
+\_def\thedimen #1#2#3{\_nnum{\_expr[5]{%
+ \_number\_dimexpr#1\_relax / 65536 / \_trycs{_thedimen:#2#3}{5000000000}}}#2#3}
+
+
\_trick 0063 \showpglists ;
%%%%%%%%%%%%
@@ -81,6 +100,52 @@
\_fi
}
+\_trick 0133 \shownodes ;
+%%%%%%%%%%%%
+
+\_def\shownodes#1{%
+ \_ifcat\_noexpand#1\_relax \_def\.tmp{#1}\_tmpnum=#1\_ea\.shownodesA
+ \_else \_def\.tmp{}\_afterfi{\_afterassignment\.shownodesA \_tmpnum=#1}\_fi
+}
+\_def\.shownodesA{%
+ \_wterm{==== Box \_the\_tmpnum\_space (\_ea\_string\.tmp):}%
+ \_directlua{
+ local nodetree = require("nodetree")
+ nodetree.print(tex.box[\_the\_tmpnum])
+}}
+
+
+\_trick 0134 \rebox \leftfill \rightfill \lrfill ;
+%%%%%%%%%%%%
+
+\_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
+ if n.id==0 then % i.e. hlist (\hbox)
+ local nn = node.hpack (n.head) % calculate its natural width
+ n.width = nn.width % save natural width
+ nn.head = nil node.free (nn) % remove created box node
+ end
+ end
+ local nn = node.vpack (nod.head) % calculate main vlist (\vbox) width
+ nod.width = nn.width % save this width to nod.width
+ nn.head = nil node.free (nn) % remove created box node
+ for n in node.traverse(nod.head) do
+ if n.id==0 then
+ local nn = node.hpack (n.head, nod.width, "exactly") % \hbox to nod.width
+ n.width = nn.width % save changed hlist (\hbox) parameters
+ n.glue_order = nn.glue_order n.glue_set = nn.glue_set n.glue_sign = nn.glue_sign
+ nn.head = nil node.free (nn) % remove created box node
+ end
+ 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 }
+
+
\_trick 0101 \runsystem ;
%%%%%%%%%%%%
@@ -94,8 +159,8 @@
\_nspublic \exitstatus ;
-\_trick 105 \directoutput ;
-%%%%%%%%%%%
+\_trick 0105 \directoutput ;
+%%%%%%%%%%%%
\_newbox\.outbox
\_def\directoutput{\_begingroup \_afterassignment\.directoutputA \_setbox\.outbox=}
@@ -109,6 +174,107 @@
\_endgroup
}
+\_trick 0135 \directchar ;
+%%%%%%%%%%%%
+
+\_protected\_def\directchar{\_ifmmode \_ea\_Uchar\_else \_quitvmode \_ea\.directcharA\_fi}
+\_def\.directcharA{\_directlua{
+ local n = node.new(29, 256)
+ n.font = font.current()
+ n.char = token.scan_int()
+ node.write(n)
+}}
+
+\_trick 0137 \replmacro ;
+%%%%%%%%%%%%
+
+\_def\replmacro #1{\_ea\.replmacroA\_ea#1\_meaning#1\_relax}
+\_def\.replmacroA #1#2:#3->#4\_relax#5#6#7#8{%
+ {\_let\\=\_nbb \_edef\"{\_string\"}%
+ \_xargs\.replmacroB \{\}\$\&\#\^\~;\_ea
+ }\_ea\.replmacroC\_ea#1\_directlua{
+ local prefixes="\_luaescapestring{#2}"
+ local params="\_luaescapestring{#3}"
+ local body="\_luaescapestring{#4}"
+ prefixes = string.gsub(prefixes,"macro","")
+ \_ifx;#5;\_else prefixes = string.gsub(prefixes,#5)\_fi
+ \_ifx;#6;\_else params = string.gsub(params,#6)\_fi
+ \_ifx;#7;\_else body = string.gsub(body,#7)\_fi
+ \_ifx;#8;\_else body = string.gsub(body,#8)\_fi
+ tex.sprint("{"..prefixes.."}{"..params.."}{"..body.."}")
+ }%
+}
+\_def\.replmacroB #1{\_edef#1{\_csstring#1}}
+\_def\.replmacroC #1#2#3#4{\_useit#2\_def#1#3{#4}}
+
+
+\_trick 0136 \xreplstring ;
+%%%%%%%%%%%%
+
+\_directlua{%
+local scan_toks = token.scan_toks
+local put_next = token.put_next
+local create = token.create
+local lbrace = create(string.byte('{'))
+local rbrace = create(string.byte('}'))
+define_lua_command('xreplstring', function()
+ local macro_name = create(token.scan_csname())
+ put_next(create'_expandafter',
+ lbrace,macro_name,rbrace)
+ local macro_body = scan_toks(false,false)
+ local nested = token.scan_keyword('nested')
+ local find = scan_toks(false,false)
+ local replace = scan_toks(false,false)
+ local find_length = \_csstring\#find
+ local replace_length = \_csstring\#replace
+ local range = \_csstring\#macro_body - find_length + 1
+ local i = 1
+ local nested_level = 0
+ while i <= range do
+ if not nested then
+ if macro_body[i].tok == lbrace.tok then
+ nested_level = nested_level + 1
+ elseif macro_body[i].tok == rbrace.tok then
+ nested_level = nested_level - 1
+ end
+ end
+ if nested_level > 0 then i = i+1 else
+ for j = 0, find_length - 1 do
+ if not nested then
+ if macro_body[i + j].tok == lbrace.tok then
+ nested_level = nested_level + 1
+ i = i+j+1
+ break
+ end
+ end
+ if (macro_body[i + j].tok \_csstring\~= find[j+1].tok) then
+ i = i+1
+ break
+ else
+ if j == find_length - 1 then
+ for t = 0, find_length - 1 do
+ table.remove(macro_body,i)
+ end
+ for t = 0, replace_length - 1 do
+ table.insert(macro_body,i+t,replace[t+1])
+ end
+ range = \_csstring\#macro_body - find_length + 1
+ i = i+replace_length
+ break
+ end
+ end
+ end
+ end
+ end
+ put_next(rbrace)
+ put_next(macro_body)
+ put_next(create'_def',macro_name,lbrace)
+ if macro_name.protected then
+ put_next(create'_protected')
+ end
+end,'global') % we want to keep the meanig after group
+}
+
\_trick 0078 \algol ;
%%%%%%%%%%%%
@@ -175,6 +341,22 @@
}
\_def\ignoreinspic{\_let\_inspicB=\.inspicBnew}
+\_trick 0040 \tdnum ;
+%%%%%%%%%%%%
+
+\_def\tdnum #1 {\_isinlist{#1}{.}\_iftrue \_ea\.tdnumG \_else \_ea\.tdnumH \_fi #1\_end}
+\_def\.tdnumG #1.#2\_end {\.tdnumH#1\_end \.decdot \.tdnumB #2\_empty\_empty\_empty}
+\_def\.tdnumH#1\_end{\.tdnumA #1\_empty\_empty\_empty #1\_empty}
+\_def\.tdnumA #1#2#3{\_xcasesof
+ {\_ifx #1\_empty} {\.tdnumB}
+ {\_ifx #2\_empty} {\.tdnumB{}}
+ {\_ifx #3\_empty} {\_ea\.tdnumB\_ignoreit}
+ \_finc {\.tdnumA}
+}
+\_def\.tdnumB #1#2#3#4{#1#2#3\_ifx#4\_empty\_else \.numsep \_ea\.tdnumB\_ea#4\_fi}
+\_def\.numsep{\,}
+\_def\.decdot{.}
+
\_trick 0047 \style m \keepstyle ;
%%%%%%%%%%%%
@@ -755,17 +937,17 @@
\_trick 0130 \onlyifnew ;
%%%%%%%%%%%%
-\_def \onlyifnew#1#2{\_begingroup%
+\_def \onlyifnew#1#2{\_begingroup
\_edef\.tmpA{\_csstring #2}%
\_edef\.tmpB{\_string #2}%
- \_ea\_ifcsname\.tmpA\_endcsname%
+ \_ea\_ifcsname\.tmpA\_endcsname
\_ifx\.tmpA\.tmpB% #2 has no backslash
- \_def\.onlyifnewA{#1{_optextrick_onlyifnewB}}\_else%
- \_def\.onlyifnewA{#1\_optextrick_onlyifnewB}\_fi%
- \_else%
- \_ifx\.tmpA\.tmpB%
- \_def\.onlyifnewA{#1{#2}}\_else%
- \_def\.onlyifnewA{#1#2}\_fi%
+ \_def\.onlyifnewA{#1{_optextrick_onlyifnewB}}\_else
+ \_def\.onlyifnewA{#1\_optextrick_onlyifnewB}\_fi
+ \_else
+ \_ifx\.tmpA\.tmpB
+ \_def\.onlyifnewA{#1{#2}}\_else
+ \_def\.onlyifnewA{#1#2}\_fi
\_fi\_ea\_endgroup\.onlyifnewA}
%%%%%%%%%%%%
@@ -773,6 +955,12 @@
\_endcode
+2024-05-07 \replmacro added
+2024-05-02 \xreplstring added
+2024-04-15 \directchar added
+2024-03-21 \rebox added
+2024-03-19 \shownodes added
+2024-03-09 \thedimen added
2024-02-13 \onlyifnew added
2024-02-12 \pgforeground added
2023-11-15 \correctvsize added
diff --git a/Master/texmf-dist/tex/optex/base/optex.ini b/Master/texmf-dist/tex/optex/base/optex.ini
index a659f43dc8b..0c037d6f4c6 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.14 Feb 2024}
+\def\optexversion{1.15 Jun 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 c6ea56d7946..71834a56aa9 100644
--- a/Master/texmf-dist/tex/optex/base/optex.lua
+++ b/Master/texmf-dist/tex/optex/base/optex.lua
@@ -12,7 +12,8 @@ local optex = _ENV.optex or {}
_ENV.optex = optex
-- Error function used by following functions for critical errors.
-local function err(message)
+local function err(...)
+ local message = fmt(...)
error("\nerror: "..message.."\n")
end
--
@@ -192,11 +193,11 @@ local valid_callback_types = {
-- `call_callback`. A default function is only needed by "exclusive" callbacks.
function callback.create_callback(name, cbtype, default)
if callback_types[name] then
- err("cannot create callback '"..name.."' - it already exists")
+ err("cannot create callback '%s' - it already exists", name)
elseif not valid_callback_types[cbtype] then
- err("cannot create callback '"..name.. "' with invalid callback type '"..cbtype.."'")
+ err("cannot create callback '%s' with invalid callback type '%s'", name, cbtype)
elseif ctype == "exclusive" and not default then
- err("unable to create exclusive callback '"..name.."', default function is required")
+ err("unable to create exclusive callback '%s', default function is required", name)
end
callback_types[name] = cbtype
@@ -227,7 +228,21 @@ function callback.add_to_callback(name, fn, description)
return call_callback(name, ...)
end)
else
- err("cannot add to callback '"..name.."' - no such callback exists")
+ err("cannot add '%s' to callback '%s' - no such callback exists", description, name)
+ end
+
+ if not description or description == "" then
+ err("missing description when adding a callback to '%s'", name)
+ end
+
+ for _, desc in ipairs(callback_description[name] or {}) do
+ if desc == description then
+ err("for callback '%s' there already is '%s' added", name, description)
+ end
+ end
+
+ if type(fn) ~= "function" then
+ err("expected Lua function to be added as '%s' for callback '%s'", description, name)
end
-- add function to callback list for this callback
@@ -251,6 +266,10 @@ function callback.remove_from_callback(name, description)
end
end
+ if not index then
+ err("can't remove '%s' from callback '%s': not found", description, name)
+ end
+
table.remove(descriptions, index)
local fn = table.remove(callback_functions[name], index)
@@ -293,7 +312,7 @@ function callback.call_callback(name, ...)
local functions = callback_functions[name] or {default_functions[name]}
if cbtype == nil then
- err("cannot call callback '"..name.."' - no such callback exists")
+ err("cannot call callback '%s' - no such callback exists", name)
elseif cbtype == "exclusive" then
-- only one function, atleast default function is guaranteed by
-- create_callback
@@ -483,7 +502,7 @@ callback.add_to_callback("finish_pdffile", function()
local obj = resource_dict_objects[type]
pdf.immediateobj(obj, tostring(dict))
end
-end)
+end, "_pageresources")
--
-- \medskip\secc[lua-colors] Handling of colors and transparency using attributes^^M
--
@@ -716,7 +735,16 @@ function optex.hook_into_luaotfload()
end)
end
+-- \`\_beglocalcontrol` `<tokens>` `\_endlocalcontrol` runs `<tokens>` fully at
+-- expand processor level despite the fact that `<tokens>` processes unexpandable commands.
+
+define_lua_command("_beglocalcontrol", function()
+ return tex.runtoks(token.get_next, true)
+end)
+
-- History:
+ -- 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
-- 2022-08-24 luaotfload transparency with attributes added
-- 2022-03-07 transparency in the colorize() function, current_tr added
diff --git a/Master/texmf-dist/tex/optex/base/others.opm b/Master/texmf-dist/tex/optex/base/others.opm
index 9b7e3a7ead8..b7ad0556fc4 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 <2023-12-23>} % preloaded in format
+\_codedecl \uv {Miscenaleous <2024-06-27>} % preloaded in format
\_doc ----------------------------
\`\useOpTeX` and \`\useoptex` are declared as `\relax`.
@@ -94,9 +94,8 @@
First usage of `\lipsum` reads the \LaTeX/ file `lipsum.ltd.tex`
by \`\_lipsumload`
and prints the selected paragraph(s). Next usages of `\lipsum`
- prints the selected paragraph(s) from memory. This second and more
- usages of `\lipsum` are fully expandable. If you want to have all
- printings of `\lipsum` expandable, use dummy `\lipsum[0]` first.
+ prints the selected paragraph(s) from memory.
+ `\lipsum` is fully expandable.
`\lipsum` adds `\_par` after each printed paragraph. If you don't need
such `\_par` here, use \`\lipsumtext``[<number>]` or `\lipsum[<number>.]`
@@ -111,14 +110,15 @@
\_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\_lipsumload{{%
- \_setbox\_nonebox=\_vbox{\_tmpnum=0 % vertical mode during \input 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}%
- \_global\_let\_lipsumload=\_empty
- }}}
+ \_glet\_lipsumload=\_empty
+ }}%
+ \_endlocalcontrol}
\_def\_lipsumdot[#1]{\_lipsumload \_ea\_ea\_ea \_lipsumdotA \_csname _lip:#1\_endcsname.\_fin}
\_def\_lipsumdotA #1.#2\_fin {#1}
@@ -145,25 +145,29 @@
the `<cs-name>`.
\_cod -----------------------------
-\_def\_regtrick#1{\_ifx#1\_undefined\_def#1{\_loadtrick#1#1}\_else\_badtrick\_fi}
-\_def\_loadtrick#1{\_resetnamespace{optextrick}\_setctable\_optexcatcodes
+\_def\_regtrick#1{\_ifx#1\_undefined\_def#1{\_loadtrickD#1}\_else\_badtrick\_fi}
+\_def\_loadtrickD#1{\_loadtrick#1#1}
+\_def\_loadtrick#1{\_beglocalcontrol
+ \_resetnamespace{optextrick}\_setctable\_optexcatcodes
\_savecatcodetable\_tmpcatcodes \_catcodetable\_tmpcatcodes
\_long\_def\_loadtrickA ##1\_trick##2#1##3;{##1}%
\_wlog{Loading trick macros for \_string#1}%
- \_setbox\_nonebox=\_vbox{\_globaldefs=1 \_ea\_loadtrickA \_input {optex-tricks.opm}}%
+ \_setbox\_nonebox=\_vpack{\_globaldefs=1 \_ea\_loadtrickA \_input {optex-tricks.opm}}%
\_restorectable \_endnamespace
+ \_endlocalcontrol
}
\_def\_trick #1;{\_endinput}
\_public \loadtrick ;
\_xargs \_regtrick \begfile \createfile \beglua \begLUA \logginglua
- \sethours \setminutes \setseconds \setweekday \showpglists \runsystem
+ \sethours \setminutes \setseconds \setweekday \showpglists \shownodes \runsystem
\directoutput \algol \scaleto \scaletof \ttlineref \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 ;
+ \onlyifnew \thedimen \rebox \leftfill \rightfill \lrfill \directchar
+ \xreplstring \replmacro \tdnum ;
\_sdef{_item:m}{\_loadtrick{\style m}\_cs{_item:m}}
\_doc -----------------------------
@@ -240,6 +244,10 @@
\_endcode
+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.
+2024-02-18 \_beglocalcontrol used in \_loadtrik.
2023-12-23 \_nonebox instead box 0 introduced.
2023-10-17 \_loadtrick introduced.
2022-05-04 \lipsum[<num>]. changed to \lipsum[<num>.] to keep macro expandable.
diff --git a/Master/texmf-dist/tex/optex/base/output.opm b/Master/texmf-dist/tex/optex/base/output.opm
index 5e4765766d1..e5bca3157e2 100644
--- a/Master/texmf-dist/tex/optex/base/output.opm
+++ b/Master/texmf-dist/tex/optex/base/output.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \nopagenumbers {Output routine <2023-04-28>} % preloaded in format
+\_codedecl \nopagenumbers {Output routine <2024-02-29>} % preloaded in format
\_doc -----------------------------
\`\_optexoutput` is the default output routine. You can create another
@@ -55,7 +55,7 @@
\_cod -----------------------------
\_newdimen \_xhsize \_xhsize=\_hsize
-\_def\_setxhsize {\_global\_xhsize=\_hsize \_global\_let\_setxhsize=\_relax}
+\_def\_setxhsize {\_global\_xhsize=\_hsize \_glet\_setxhsize=\_relax}
\_doc -----------------------------
\`\gpageno` counts pages from one in the whole document
@@ -78,7 +78,7 @@
\_resetattrs
\_istoksempty \_pgbackground
\_iffalse \_backgroundbox{\_the\_pgbackground}\_nointerlineskip \_fi
- \_makeheadline
+ \_pdfrunninglinkoff \_makeheadline \_pdfrunninglinkon
\_vbox to\_vsize {\_boxmaxdepth=\_maxdepth \_pagecontents}% \pagebody in plainTeX
\_makefootline}%
}
@@ -116,8 +116,8 @@
\_ifvoid\_topins \_else \_unvbox\_topins\_fi
\_dimen0=\_dp255 \_unvbox255 % open up \box255
\_ifvoid\_footins \_else % footnote info is present
- \_vskip\_skip\_footins
- \_footnoterule \_unvbox\_footins\_fi
+ \_pdfrunninglinkoff \_vskip\_skip\_footins
+ \_footnoterule \_unvbox\_footins \_pdfrunninglinkon \_fi
\_kern-\_dimen0 \_vskip \_pgbottomskip
}
\_def \_pagedest {{\_def\_destheight{25pt}\_dest[pg:\_the\_gpageno]}}
@@ -215,7 +215,7 @@
\_def \_draft {\_pgbackground={\_draftbox{\_draftfont DRAFT}}%
\_fontdef\_draftfont{\_setfontsize{at10pt}\_bf}%
- \_global\_let\_draftfont=\_draftfont
+ \_glet\_draftfont=\_draftfont
}
\_def \_draftbox #1{\_setbox0=\_hbox{\_setgreycolor{.8}#1}%
\_kern.5\_vsize \_kern\_voffset \_kern4.5\_wd0
@@ -264,6 +264,7 @@ The output routine \^`\_optexoutput` is similar as in plain \TeX. It does:
\_endinput
+2024-02-29 \_pdfrunninglinkoff, \_pdfrunninglinkon used
2022-04-28 \_optexshipout introduced
2022-10-22 \_normalbaselines added to \makehead/foot/line
2022-03-07 \_resetattrs instead \_resetcolor
diff --git a/Master/texmf-dist/tex/optex/base/parameters.opm b/Master/texmf-dist/tex/optex/base/parameters.opm
index 05abe422757..c53508d3c1c 100644
--- a/Master/texmf-dist/tex/optex/base/parameters.opm
+++ b/Master/texmf-dist/tex/optex/base/parameters.opm
@@ -64,8 +64,10 @@
node will not be ignored.
\_cod -----------------------------
+\_ifx\_matheqdirmode\_undefined \_else
\_matheqdirmode=1
\_breakafterdirmode=1
+\_fi
\_doc -----------------------------
\secc Plain \TeX/ registers
@@ -629,7 +631,8 @@ a register then \OpTeX/ macros still work without change.
\_endinput
History:
-2023-09-19 ... \matheqdirmode and \breakafterdirmode set (relevant when RTR typesetting)
+2024-04-30 ... \matheqdirmode set only if it is defined (LuaTeX 1.15 and newer).
+2023-09-19 ... \matheqdirmode and \breakafterdirmode set (relevant when RTL typesetting)
2021-04-13 ... \bibpart added
2021-04-07 ... \biboptions added, bug from iso690 fixed
2020-04-04 ... \tabspaces added
diff --git a/Master/texmf-dist/tex/optex/base/plain-macros.opm b/Master/texmf-dist/tex/optex/base/plain-macros.opm
index f3aa8c53347..a4fc792a929 100644
--- a/Master/texmf-dist/tex/optex/base/plain-macros.opm
+++ b/Master/texmf-dist/tex/optex/base/plain-macros.opm
@@ -54,9 +54,9 @@
% since this allows, for example, `\let\_par=\cr \obeylines \halign{...'
{\_catcode`\^^M=13 % these lines must end with %
\_gdef\_obeylines{\_catcode`\^^M=13\_let^^M\_par}%
- \_global\_let^^M=\_par} % this is in case ^^M appears in a \write
+ \_glet^^M=\_par} % this is in case ^^M appears in a \write
\_def\_obeyspaces{\_catcode`\ =13 }
-{\_obeyspaces\_global\_let =\_space}
+{\_obeyspaces\_glet =\_space}
\_public \obeylines \obeyspaces ;
\_doc -----------------------------
@@ -210,7 +210,7 @@
\_def\l{\_errmessage{\_usedirectly ł}}
\_def\L{\_errmessage{\_usedirectly Ł}}
%\def\_{\_ifmmode \kern.06em \vbox{\hrule width.3em}\else _\fi} % obsolete
-\_def\_{\_hbox{_}}
+\_protected\_def\_{\_relax \_ifmmode \_hbox{_}\_else _\_fi}
\_def\dag{\_errmessage{\_usedirectly †}}
\_def\ddag{\_errmessage{\_usedirectly ‡}}
\_def\copyright{\_errmessage{\_usedirectly ©}}
@@ -375,6 +375,7 @@
\_endcode % -------------------------------------
+2024-04-28 ... \_ corrected
2022-10-11 ... \_unichars extended
2022-02-19 ... \input hyphen.tex moved here (format file is 80k smaller)
2021-09-24 ... \_unichars introduced
diff --git a/Master/texmf-dist/tex/optex/base/references.opm b/Master/texmf-dist/tex/optex/base/references.opm
index cf43bb4049a..ab5968b9e9e 100644
--- a/Master/texmf-dist/tex/optex/base/references.opm
+++ b/Master/texmf-dist/tex/optex/base/references.opm
@@ -35,7 +35,7 @@
`\_wref\_Xlabel{<label>}{<text>}`.
\_cod ----------------------------
-\_def\_label[#1]{\_isempty{#1}\_iftrue \_global\_let \_lastlabel=\_undefined
+\_def\_label[#1]{\_isempty{#1}\_iftrue \_glet \_lastlabel=\_undefined
\_else \_isdefined{l0:#1}%
\_iftrue \_slideshook\_opwarning{Duplicated label [#1], ignored}\_else \_xdef\_lastlabel{#1}\_fi
\_fi \_ignorespaces
@@ -47,7 +47,7 @@
\_printlabel\_lastlabel
\_ewref \_Xlabel {{\_lastlabel}{#1}}%
\_sxdef{_lab:\_lastlabel}{#1}\_sxdef{l0:\_lastlabel}{}%
- \_global\_let\_lastlabel=\_undefined
+ \_glet\_lastlabel=\_undefined
\_fi
}
\_public \label \wlabel ;
diff --git a/Master/texmf-dist/tex/optex/base/table.opm b/Master/texmf-dist/tex/optex/base/table.opm
index 433ad412679..8da087386ab 100644
--- a/Master/texmf-dist/tex/optex/base/table.opm
+++ b/Master/texmf-dist/tex/optex/base/table.opm
@@ -195,8 +195,8 @@
\_def\_addtabitemx{\_ifnum\_colnum>0
\_addtabdata{&}\_addto\_ddlinedata{&\_dditem}\_fi
\_advance\_colnum by1 \_let\_tmpa=\_relax
- \_ifnum\_colnum>1 \_ea\_addtabdata\_ea{\_ea\_colnum\_the\_colnum\_relax}\_fi}
-\_def\_addtabdata#1{\_tabdata\_ea{\_the\_tabdata#1}}
+ \_ifnum\_colnum>1 \_etoksapp\_tabdata{\_colnum\_the\_colnum\_relax}\_fi}
+\_def\_addtabdata{\_toksapp\_tabdata}
\_doc -----------------------------
This code converts `||` or `|` from `\table` <declaration> to the <converted declaration>.
diff --git a/Master/texmf-dist/tex/optex/base/usebib.opm b/Master/texmf-dist/tex/optex/base/usebib.opm
index cb38eea7e84..dcacbb0ebcd 100644
--- a/Master/texmf-dist/tex/optex/base/usebib.opm
+++ b/Master/texmf-dist/tex/optex/base/usebib.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \readbibs {Reading bib databases <2023-06-25>} % loaded on demand by \usebib
+\_codedecl \readbibs {Reading bib databases <2024-02-18>} % loaded on demand by \usebib
\_doc -----------------------------
First, we implement the scanner of `.bib` files. Unfortunately, the format of
@@ -16,7 +16,10 @@
\_def\_readbibs #1{%
\_ifcsname _be:\_bibp*\_endcsname \_def\_citelist{}\_fi % \_citelist will be created
\_begingroup
- \_everyeof{@{}}\_foreach#1,\_do##1,{\_ea\_nextat\_input{##1.bib}}%
+ \_everyeof{@{}}\_foreach#1,\_do##1,{%
+ \_isfile{##1.bib}\_iftrue \_ea\_nextat\_input{##1.bib}
+ \_else \_opwarning{\_string\usebib: Missing ##1.bib file}
+ \_fi}%
\_endgroup
}
\_public \readbibs ;
@@ -448,17 +451,24 @@ If an entry with the same label is declared in `local.bib` and in
`global.bib` too then the first wins. So, you can set exceptions in your
`local.bib` file for your document.
-The `bib-<style>.opm` declares entry types (like `@BOOK`, `@ARTICLE`) and declares
+The `bib-<style>.opm` file declares entry types (like `@BOOK`, `@ARTICLE`) and declares
their mandatory and optional fields (like `author`, `title`). When
a mandatory field is missing in an entry in the `.bib` file then a warning is printed on the
terminal about it. You can suppress such warnings by command
\^`\nobibwarning`~`[<bib-labels>]`, where <bib-labels> is a comma-separated list
of labels (without spaces) where missing mandatory fields will be no warned.
-Old `.bib` files may use the obscure notation for accents like `{\"o}`.
-Recommendation: convert such old files to Unicode encoding. If you are
-unable to do this then you can set \^`\bibtexhook={`\^`\oldaccents}`.
+Users may redefine declarations and the formatting rules given by the macros
+from the style~file. Such a re-definition have to be included in the
+\^`\bibtexhook` token list, because the \^`\usebib` macro opens group, reads
+the macros from the style~file, then executes \^`\bibtexhook` (it is empty
+by default), then reads data from the `.bib` files, then prints the desired
+records and finally, it closes the group.
+For example, \^`\bibtexhook={`\^`\oldaccents}` can be set if
+your old `.bib` files use an obscure notation for accents like `{\"o}`.
+Recommendation: converting such old `.bib` files to Unicode encoding is much
+more conceptual solution of this problem.
\secc Notes for bib-style writers
@@ -665,6 +675,7 @@ author/editor data field. You can read them by
History:
--------
+2024-02-18: missing .bib files checked, doc improved
2023-06-25: \_fieldalias introduced
2023-06-07: bug fix (\_namecount declaration)
2023-06-06: \_slet{_bes:#1}{_relax}: bugfix when label not found and sorting
diff --git a/Master/texmf-dist/tex/optex/base/verbatim.opm b/Master/texmf-dist/tex/optex/base/verbatim.opm
index ac00369d337..3f486f83339 100644
--- a/Master/texmf-dist/tex/optex/base/verbatim.opm
+++ b/Master/texmf-dist/tex/optex/base/verbatim.opm
@@ -208,7 +208,7 @@
\_def\_tmpb{#1}% cmds used in local group
\_ifx\_vifilename\_tmpa \_else
\_openin\_vifile={#3}%
- \_global\_viline=0 \_global\_let\_vifilename=\_tmpa
+ \_global\_viline=0 \_glet\_vifilename=\_tmpa
\_ifeof\_vifile
\_opwarning{\_string\verbinput: file "#3" unable to read}
\_ea\_ea\_ea\_skiptorelax
diff --git a/Master/texmf-dist/tex/optex/pkg/math.opm b/Master/texmf-dist/tex/optex/pkg/math.opm
index 88bc81c627c..e3a9556eee4 100644
--- a/Master/texmf-dist/tex/optex/pkg/math.opm
+++ b/Master/texmf-dist/tex/optex/pkg/math.opm
@@ -3,7 +3,7 @@
% This file can serve as an template for other package files
% See end of the file for more information
-\_def\_math_version {0.11, 2023-04-15}
+\_def\_math_version {0.15, 2024-04-28}
\_codedecl \replacemissingchars {Doing math more comfortably <\_math_version>}
\_namespace{math}
@@ -21,12 +21,16 @@
\_nokvx {\_opwarning{\_the\_kvdict: unknown option "##1", ignored}}%
\_kvx {vert} {\.smartvert}% sets | as math active, to do better |x| or ||x||
\_kvx {dots} {\.smartdots}% \dots behaves like \ldots or \cdots
+ \_kvx {interval} {\_let\_=\.interval}% enables \_<0,1)
+ \_kvx {rmsbsp} {\.rmsbsp}% activates x_[text] and x^[text]
\_kvx {bfserif} {\.bfserif}% \bf, \bi select fonts with serifs
+ \_kvx {flexipa} {\.flexipa}% flexible partial symbol
\_kvx {mstyle} {\.mstyle{##1}}% sets mstyle=TeX or ISO or french or upright
\_kvx {bstyle} {\.bstyle{##1}}% sets bstyle=TeX or ISO or upright or OpTeX
\_kvx {rmchars} {\.rmchars{##1}}% does \.rmchars{<list>}
\_kvx {vargreek} {\.vargreek{##1}}% does \.vargreek{<list>}
\_kvx {text} {\.dotext{##1}}% does \.dotext{<list>}
+ \_kvx {enablefic}{\.enablefic}% enables final italic correction
\_readkv{#1}%
\.restorekvdict
}
@@ -124,6 +128,23 @@
\_nspublic \smartdots ;
\_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.
+ \_cod
+
+\_def\.interval{\_def\.intervalL{}\.intervalA}
+\_def\.intervalA{\_nospacefuturelet\.next\.intervalB}
+\_def\.intervalB{\_ifx\.next\_bgroup \_ea\.intervalC \_else \_ea\.intervalD \_fi}
+\_def\.intervalC#1{\_addto\.intervalL{{#1}}\.intervalA}
+\_def\.intervalD#1{\_casesof #1
+ < {\_addto\.intervalL{\langle}\.intervalA}
+ > {\_addto\.intervalL{\rangle}\.intervalL}
+ ) {\_addto\.intervalL{)}\.intervalL}
+ \_finc {\_addto\.intervalL{#1}\.intervalA}%
+}
+
+ \_doc
\`\smartvert` sets `|` as math-active character and declares it
equal to `\.autovert` macro. This macro checks two variants: there
is single `|` or there is double `||`. It runs \`\.autovertA` or
@@ -142,6 +163,22 @@
\_nspublic \smartvert ;
\_doc
+ \`\rmsbsp` activates `^` and `_` so they check the next character.
+ If it is `[` then `\mathbox` is used for subscript or superscript, else
+ normal behavior of subscript or superscript is kept.
+ \_cod
+
+\_def\.rmsbsp{%
+ \_adef ^{\_isnextchar[{\.rmsp}{\_sp}}
+ \_adef _{\_isnextchar[{\.rmsb}{\_sb}}
+ \_def\.rmsp[##1]{\_sp{\_mathbox{##1}}}
+ \_def\.rmsb[##1]{\_sb{\_mathbox{##1}}}
+ \_catcode `\^=12 \_catcode`\_=11
+ \_mathcode`_="8000 \_mathcode`^="8000
+}
+\_nspublic \rmsbsp ;
+
+ \_doc
The control sequences \`\N`, \`\Z`, \`\Q`, \`\R`, \`\C`
\`\sgn`, \`\argmin`, \`\argmax`, \`\grad`, \`\rank`, \`\tr`, \`\diag`, \`\Span`,
\`\Rng`, \`\Null`, \`\Ker`, \`\Res`, \`\tg`, \`\cotg`, \`\arctg`, \`\arccotg`,
@@ -247,6 +284,43 @@
\_nspublic \bfserif ;
\_doc
+ \`\flexipa` (or \`\flexiblepartial`) runs
+ \~`\partialsymbolvars` `{it}`\,`{rm}`\,`{bfsans}`\,`{it}`\,`{bfitsans}`.
+ The \`\partialsymbolvars` macro adds two tokens `\.partialvar \m<var>partial`
+ to `\_mit`, `\_marm`, `\_mabf`, `\_mait`, `\_mabi` macros.
+ The \`\.partialvar` macro sets appropriate
+ `\_Umathcode` of the `\.partialchar` to the code given by the parameter
+ `\m<var>partial`. Five macros
+ \`\mbfpartial`, \`\mitpartial`, \`\mbfitpartial`, \`\mbfsanspartial`, \`\mbfitsanspartial`
+ are declared in the macro file `unimath-table.opm`.
+ The math character \`\mrmpartial` (for upright variant) is declared here.
+ \_cod
+
+\_chardef\.partialchar="2202
+\_Umathchardef\.mrmpartial=0 1 \.partialchar
+\_def\.partialvar #1{\_Umathcode \.partialchar 0 1
+ \_ifx#1\.mrmpartial \.partialchar \_else\_ea`#1 \_fi
+}
+\_def\.inadd#1#2{\_ea\.inaddA#1{#2}#1}
+\_def\.inaddA\_inmath#1#2#3{\_protected\_def#3{\_inmath{#1#2}}}
+
+\_def\.partialsymbolvars #1#2#3#4#5{%
+ \_ifx\_ncharrmA\_undefined \_opwarning{\_string\flexipa: Unicode math must be loaded first}%
+ \_else
+ \_def\.tmp{\_ea\_addto \_ea\_mit \_ea {\_ea\.partialvar \_csname m#1partial\_endcsname}}%
+ \_ifx\_mit\mit \.tmp \_let\mit=\_mit \_else \.tmp \_fi
+ \_ea\.inadd \_ea\_marm \_ea {\_ea\.partialvar \_csname m#2partial\_endcsname}%
+ \_ea\.inadd \_ea\_mabf \_ea {\_ea\.partialvar \_csname m#3partial\_endcsname}%
+ \_ea\.inadd \_ea\_mait \_ea {\_ea\.partialvar \_csname m#4partial\_endcsname}%
+ \_ea\.inadd \_ea\_mabi \_ea {\_ea\.partialvar \_csname m#5partial\_endcsname}%
+ \_mit
+ \_fi
+}
+\_def\.flexipa{\.partialsymbolvars {it}{rm}{bfsans}{it}{bfitsans}}
+\_newpublic \_let \flexiblepartial=\.flexipa
+\_nspublic \flexipa \partialsymbolvars \mrmpartial ;
+
+ \_doc
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
@@ -436,6 +510,40 @@
\_nspublic \mathclap \mathrlap \mathllap ;
+ \_doc
+ \`\enablefic` enables final italic correction. The relevant lua function is
+ registered to `mlist_to_hlist` callback and \`\finalitalcorr` is set to one.
+ \_cod
+
+\_newcount \.finalitalcorr
+\_directlua{
+ function math.final_ital_corr(head, style)
+ if style=="text" and tex.count.\_pkglabel _finalitalcorr>0 then
+ for n in node.traverse(head) do
+ if n.next == nil and n.id == 29 then % last is glyph
+ local k = font.fonts[n.font].characters[n.char].italic
+ if not(k==nil) and (k>0) then
+ local kn = node.new("kern")
+ kn.kern = k kn.subtype = 3
+ node.insert_after(head, n, kn) % kern node is inserted
+ end
+ end
+ end
+ end
+ return head
+ end
+}
+\_def\.enablefic {\_directlua{ % math.final_ital_corr is registered to mlist_to_hlist
+ luatexbase.add_to_callback("mlist_to_hlist",
+ function(head, style, penalties)
+ head = node.mlist_to_hlist(head, style, penalties)
+ return math.final_ital_corr(head, style)
+ end, "italcorr after math")
+ }
+ \.finalitalcorr=1
+}
+\_nspublic \enablefic \finalitalcorr ;
+
\_endnamespace
\_endcode
@@ -451,6 +559,7 @@ The following macros are defined in this package:
gives better controlling of sizes of parentheses.
* \~`\smartdots` declares `\dots` macro more intelligent.
\~`\smartvert` declares \"`|`" for better spacing.
+* \~`\rmsbsp` activates roman subscripts and superscripts in `[...]`.
* There are many common math macros for sets or for operators, for example
\~`\R` or \~`\sgn`.
* \~`\eqsystem` enables to write systems of equations comfortably,
@@ -458,6 +567,7 @@ The following macros are defined in this package:
\~`\subeqmark` prints the given suffix as a part of the equation mark.
* \~`\scriptspaces` sets more spaces around rel, bin in script and scripscript styles.
* \~`\bfserif` sets `\bf` and `\bi` for math typesetting as for bold-serif, bold-italic-serif.
+* \~`\flexipa` enables flexible partial symbol.
* \~`\rmchars` sets selected characters printed as `\rm`,
\~`\vargreek` sets Greek leters to their variants.
* \~`\textvariables`, \~`\textdigits`, \~`\textmoremath`
@@ -465,22 +575,28 @@ The following macros are defined in this package:
(variables, digits, more characters).
* \~`\replacemissingchars` allows to re-declare all characters missing in math font
for printing them from additional math font.
+* \~`\enablefic` enables final italic correction of inline-math lists.
\enditems
-Eight options are provided by the `math` package. You can set them by
+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:
\begitems
* `dots` sets more inteligent `\dots`, the same as \~`\smartdots`.
+* `interval` sets `\_` as prefix of intervals, see section~\ref[interval].
* `vert` sets more inteligent `|`, 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`.
* `mstyle=<style>`, `bstyle=<style>` are math styles explained in section~\ref[mstyle].
* `rmchars={<list>}` sets `\rm` for selected characters, the same as \~`\rmchars`,
see section~\ref[rmchars].
* `vargreek={<list>}` sets variants for Greek letetters, the same as \~`\vargreek`,
see section~\ref[rmchars].
* `text={<list>}` sets \~`\textvariables`, \~`\textdigits`, or \~`\textmoremath`,
- see section~\ref[textvars].
+ see section~\ref[textvars],
+* `enablefic` enables final italic correction of inline-math lists, does
+ \~`\enablefic`.
\enditems
This package is not definitive. I plan to add more features in new versions
@@ -545,6 +661,28 @@ You can try this after the \^`\smartdots` declaration:
`$a_1 + a_2 + \dots + a_n$ ` prints $a_1 + a_2 + \dots + a_n$,
+\sec[interval] Creating intervals more comfortable
+
+Several math books uses `\langle`, `\rangle` for denoting the interval boundary
+if the boundary number is element of the interval too. For example `$\langle 0,1)$`
+is printed as $\langle 0,1)$ and it
+means an interval from zero to one, zero is element of the interval but one
+isn't. The \TeX/ source of such math books looks badly because we cannot mark
+them like \code{$<0,1)$} because it prints $\string<0,1)$ but we want $\langle 0,1)$.
+
+This package creates the \^`\.interval` macro which can be set to be equal to `\_`
+(using the `interval` option). Then `\_` can be used just before the interval
+as a prefix. The \code{<} or `>` are automatically replaced by `\langle`, `\rangle`
+if `\_` is prefixed. So, you can write \code{$\\_<0,1)$} or `$\_(0,1>$` or \code{$\\_<0,1>$}
+or `$\_(0,1)$` in order to get $\langle0,1)$ or $(0,1\rangle$ or $\langle0,1\rangle$
+or $(0,1)$. The source with such intervals looks better.
+
+Note that `interval` option does `\let\_=`\^`\.interval`, so the original
+meaning of the `\_` control sequence (from plain \TeX/) is re-defined.
+The `\_` control sequence can be used for this purpose because
+the next token is `(` or \code{<}, i.e. it is non-letter.
+
+
\sec Using vertical bars with better spacing
The character \"`|`" is declared with Ord class by default in Plain \TeX/,
@@ -567,6 +705,12 @@ $$
$$
+\sec Roman subscript and superscript in `[...]`
+
+When you declare \^`\rmsbsp`, then you can write `x_[text]` or `x^[text]`
+and it is equivalent to `x_{\mathbox{text}}` or `x^{\mathbox{text}}`.
+
+
\sec Basic and typical macros for sets, functions etc.
These typical macros are defined in `math.opm`:
@@ -758,6 +902,34 @@ sign must follow and then the `{<list>}` with syntax mentioned above. For exampl
`\mathset{vargreek={\epsilon,\rho}}`.
+\sec[flexipa] Flexible partial symbol $\partial$
+
+Classical \TeX/ with Computer Modern fonts uses slanted `\partial` symbol
+$\mitpartial$. On the other hand, default setting of Unicode math gives
+upright `\partial` $\rm\partial$ but six variants of this symbol are provided:
+roman (upright) \^`\mrmpartial` $\mrmpartial$, bold \^`\mbfpartial` $\mbfpartial$,
+italic \^`\mitpartial` $\mitpartial$, bold italic \^`\mbfitpartial` $\mbfitpartial$,
+bold sans serif \^`\mbfsanspartial` $\mbfsanspartial$, bold italic sans serif
+\^`\mbfitsanspartial` $\mbfitsanspartial$.
+
+When you declare \^`\flexipa` or \^`\flexiblepartial` or use the `flexipa`
+package option, then the `\partial` symbols get italic variant as default
+and behaves like others Greek symbols: it changes its variant according to
+the `\rm`, `\it`, `\bf`, `\bi` selectors in math mode. You can declare what
+variant of the `\partial` character will be shown at what selector. This can
+be done by the \^`\partialsymbolvars`~`<default> <rm> <bf> <it> <bi>` macro.
+Each of these five parameters can be `{rm}` or `{bf}` or `{it}` or `{bfit}`
+or `{bfsans}` or `{bfitsans}`. For example the third parameter declares
+what variant of the partial symbol is printed when `\bf` selector is used
+in math mode. The `\flexipa` macro runs the following default setting:
+\begtt
+\partialsymbolvars {it} {rm} {bfsans} {it} {bfitsans}
+\endtt
+It means that default is italic variant and when `\rm` is selected then roman
+(upright) variant is printed, when `\bf` is selected then bold sans serif
+variant is printed etc.
+
+
\sec[textvars] Variables and digits from currently used text font
When Unicode math font is loaded then all variables and digits are printed
@@ -815,6 +987,31 @@ then you can load a next additional math font using another \o`\addUmathfont` an
by previous steps are replaced.
+\sec Final italic correction
+
+Classical \TeX/ adds italic correction after each Ord atom with a single
+letter from math italic font including the last one in inline-math. \LuaTeX/
+and \OpTeX/ does the same only when classical `tfm` math fonts are used. When
+you switch to Unicode math, the italic correction of the last glyph of the
+inline-math list is lost, unfortunately. Try this:
+
+\begtt
+$T$' the italic correction after $T$ is inserted (classical fonts)
+
+\fontfam[lm]
+$T$' the italic correction after $T$ isn't inserted (Unicode fonts)
+\bye
+\endtt
+
+This package provides the \^`\enablefic` command which enables the classical TeX
+feature: the final italic correction of the inline-math list is automatically added.
+
+When \^`\enablefic` (or `enablefic` option) is declared then you can control
+the behavior of this feature by the \^`\finalitalcorr` register: if it is positive
+then the feature is activated and if it is zero, the feature is deactivated.
+The \^`\enablefic` macro sets \^`\finalitalcorr``=1`.
+
+
\sec Miscelaneous commands
I created various commands at the requests of users. They asked me to create
@@ -901,6 +1098,7 @@ The user can read this warning and declare the macro after
`\load[<pkg>]` in this case.
\_doc
+ % optex -jobname math-doc '\docgen math'
\load [doc,math]
\def\opurl{http://petr.olsak.net/ftp/olsak/optex/optex-doc.pdf}
\def\tnurl{http://petr.olsak.net/ftp/olsak/optex/tex-nutshell.pdf}
@@ -931,6 +1129,10 @@ The user can read this warning and declare the macro after
\endinput
+0.15 2024-04-28 \_ as interval prefix added.
+0.14 2024-03-18 \flexipa introduced.
+0.13 2024-03-06 \enablefic introduced.
+0.12 2024-03-02 \rmsbsp introduced.
0.11 2023-04-15: \bbigp introduced.
0.10 2023-03-12: \mathclap etc. introduced.
0.09 2023-03-11: mstyle, bstyle options introduced.
diff --git a/Master/texmf-dist/tex/optex/pkg/mte.opm b/Master/texmf-dist/tex/optex/pkg/mte.opm
index 5352d5dd782..c3d304610c1 100644
--- a/Master/texmf-dist/tex/optex/pkg/mte.opm
+++ b/Master/texmf-dist/tex/optex/pkg/mte.opm
@@ -457,7 +457,7 @@
\.initexpansion % luacode, ex table initialized
\_protrudechars=2
\_adjustspacing=2
- \_def\.features{protrusion=p\.var;expansion=ex}% pr/pi and ex tables used
+ \_def\.features{protrusion=p\.var;expansion=ex;}% pr/pi and ex tables used
\_reloading \_currvar
}
\_def\.disablemte {%
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex b/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex
index f8462d06a37..c1cd4a9f631 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex
@@ -1,6 +1,8 @@
% hypertext macros for CWEB listings (in addition to cwebmac.tex)
-% Version 2.0 --- May 2024
+% Used in cwebmac.tex, pdfctwimac.tex, pdfproofmac.tex
+% Version 3.0 --- August 2024
\ifx\ifacrohint\undefined\endinput\fi % these are not standalone macros
+
\ifluatex % LuaTeX is almost like pdfTeX
\protected\def\pdfliteral {\pdfextension literal}
\protected\def\pdfstartlink {\pdfextension startlink\space}
@@ -15,7 +17,16 @@
\let\pdfoutput=\outputmode
\fi % end of LuaTeX->pdfTeX redirection macros
-% Used in cwebmac.tex, pdfctwimac.tex, pdfproofmac.tex
+\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
@@ -24,9 +35,52 @@
\else \twodigits=\pageno \pageno=\contentspagenumber
\advance \pageno by \tocpages \advance \twodigits by -\pageno
\def\pagelabels{/PageLabels << /Nums [ 0 << /S/D/St \the\pageno >>
- \the\twodigits << /S/D/St \contentspagenumber >> ] >>} \fi
+ \the\twodigits << /S/D/St \contentspagenumber >> ] >>}
+ \fi
\ifpdflua\pdfcatalog{\pagemode\space\pagelabels}
- \else \special{pdf: docview << \pagemode\space\pagelabels >>}\fi}
+ \else\special{pdf: docview << \pagemode\space\pagelabels >>}\fi}
+\ifacrohint\def\digits{\pdflink{\the\countA}\scan}
+\else\def\digits{{\the\countA}\scan}\fi
+\def\scan#1{\begingroup
+ \ifx!#1% exit on exclamation point
+ \else\ifx,#1,\space\aftergroup\scan % insert ,\space}\scan ...
+ \else\ifx\[#1\aftergroup#1% insert }\[...
+ \else\ifx\*#1\aftergroup\lapstar\aftergroup\scan % insert }\lapstar\scan ...
+ \else\ifnum`#1>`9#1\aftergroup\scan % insert #1}\scan ...
+ \else\ifnum`#1<`0#1\aftergroup\scan % insert #1}\scan ...
+ \else
+ \afterassignment\digits \aftergroup\countA
+ \aftergroup#1% insert }\countA=#1...\digits ...
+ \fi\fi\fi\fi\fi \fi
+ \endgroup}
+
+% Local variables; there are a few externals like '\toksA' and '\countA'
+\newtoks\toksB \newtoks\toksC \newtoks\toksD \newtoks\toksF \newtoks\sanitizer
+\newif\iftokprocessed \newif\ifTnum \newif\ifinstr \newif\ifhavenum
+
+\ifacrohint % Common macros for \ifacro and \ifhint to create \pdflink's
+\def\pdfnote#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}\maketoks}\the\toksA}
+\def\firstsecno#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}%
+ \def\makenote{\addtokens\toksB{\the\toksC}\def\makenote{\let\space\empty
+ \toksC={}\toksD={}}\makenote}\maketoks}}
+\def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+\def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}%
+ \ifcat\noexpand\first0\countB=`#1\else\countB=0\fi}
+\def\maketoks{\expandafter\poptoks\the\toksA|ENDTOKS|%
+ \let\next=\maketoks % continue processing by default
+ \ifnum\countB>`9 \countB=0 \fi
+ \ifnum\countB<`0
+ \ifhavenum\makenote\fi
+ \ifx\first.\let\next=\maketoksdone % fullstop
+ \else\addtokens\toksB{\the\toksD}\ifx\first,\addtokens\toksB{\space}\fi
+ \fi
+ \else\addtokens\toksC{\the\toksD}\global\havenumtrue
+ \fi
+ \next}
+\def\makenote{\addtokens\toksB
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\havenumfalse}
+\def\maketoksdone{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\fi % End of common pdf/hint macros
\ifacro % The following are general pdf macros
\def\thewidth{\the\wd0 \space}
@@ -34,13 +88,14 @@
\def\thedepth{\the\dp\strutbox\space}
\ifpdflua
\ifx\pdfannotlink\undefined\let\pdfannotlink\pdfstartlink\fi% for pdfTeX 0.14
- \def\pdflink#1#2{\hbox{\pdfannotlink height \theheight depth \thedepth
+ \def\pdflink#1{\hbox{\pdfannotlink height \theheight depth \thedepth
attr{/Border [0 0 0]} goto num #1 \Blue #1\Black\pdfendlink}} % changed 3.69
-\else\def\pdflink#1#2{\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}%
+\else\def\pdflink#1{\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}%
\special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight
- depth \thedepth << /Type /Annot /Subtype /Link
- /Border [0 0 0] /A << /S /GoTo /D (#2) >> >>}\box0\relax}\fi
-\def\sanitizecommand#1#2{\addtokens\usersanitizer
+ depth \thedepth << /Type /Annot /Subtype /Link /Border [0 0 0]
+ /A << /S /GoTo /D (\romannumeral#1) >> >>}\box0\relax}
+\fi
+\def\sanitizecommand#1#2{\addtokens\sanitizer
{\noexpand\dosanitizecommand\noexpand#1{#2}}}
\def\dosanitizecommand#1#2{\ifx\nxt#1\addF{#2}\fi}
@@ -49,9 +104,11 @@
\catcode`\[=12 \catcode`\]=12 \catcode`\{=1 \catcode`\}=2
\catcode`\~=12 \def\tildechar{~} \catcode`\~=13
\catcode`\|=0 |catcode`|\=12 |def|bschar{\} |catcode`|\=0 \catcode`\|=12
-\def\makeoutlinetoks{\Tnumfalse\afterassignment\makeolproctok\let\nxt= }
+\def\makeoutlinetoks{\toksF={}\Tnumfalse
+ \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
@@ -62,9 +119,8 @@
\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
- \else\the\usersanitizer
+ \ifx\nxt~\addF\space \else\ifx\nxt\onespace\addF\space
+ \else\the\sanitizer
\iftokprocessed\else\makeolproctokctli
\iftokprocessed\else\makeolproctokctlii
\iftokprocessed\else\makeolproctokctliii % if not recognised, skip it
@@ -77,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/
@@ -86,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
@@ -102,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{>>}%
@@ -141,48 +197,19 @@
\fi\fi\fi\fi\fi
}
\def\outlinedone{\edef\outlinest{\global\noexpand\toksE={\the\toksF}}%
- \outlinest\let\outlinedone=\relax}
+ \outlinest\let\outlinedone=\relax\outlinedone}
\fi % End of pdf macros
\ifhint
-% The following uses HINT primitives to implement:
+% The following top level macros use HINT primitives to implement:
% \HINThome to mark the position of the home page
% \HINTlabel to attach a label to the top of a section
% \HINTlink to link a section number to the section label
% \HINTcontents to produce an 'outline' item
-% These are the top level HINT macros that are used in this file
-% No HINT primitives are used directly.
\def\HINThome{\HINTdest name {HINT.home}%
\HINToutline goto name {HINT.home} depth 1 {Table of Contents}}
\def\HINTlabel{{\let\*=\empty\HINTdest num \secstar top}}
-\def\HINTlink#1#2{\HINTstartlink goto num #1 {#1}\HINTendlink}% #2 not used ???
+\def\HINTlink#1{\HINTstartlink goto num #1 {#1}\HINTendlink}
\def\HINTcontents#1#2#3{\HINToutline goto num #3 depth #2 {#1}}
\let\pdflink=\HINTlink
\fi % End of HINT macros
-
-% Common macros for \ifacro and \ifhint
-\ifacrohint
-\def\pdfnote#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}\maketoks}\the\toksA}
-\def\firstsecno#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}%
- \def\makenote{\addtokens\toksB{\the\toksC}\def\makenote{\toksD={}
- \toksC={}\let\space\empty}\makenote}\maketoks}}
-\def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-\def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}%
- \ifcat\noexpand\first0\countB=`#1\else\countB=0\fi\toksA={#2}}
-\def\maketoks{\expandafter\poptoks\the\toksA|ENDTOKS|%
- \ifnum\countB>`9 \countB=0 \fi
- \ifnum\countB<`0
- \ifnum0=\countC\else\makenote\fi
- \ifx\first.\let\next=\maketoksdone\else
- \let\next=\maketoks
- \addtokens\toksB{\the\toksD}
- \ifx\first,\addtokens\toksB{\space}\fi
- \fi
- \else \addtokens\toksC{\the\toksD}\global\countC=1\let\next=\maketoks
- \fi
- \next
-}
-\def\makenote{\addtokens\toksB
- {\noexpand\pdflink{\the\toksC}{\romannumeral\the\toksC}}\toksC={}\global\countC=0}
-\def\maketoksdone{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\fi % End of common macros
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebbin/dcwebmac.tex b/Master/texmf-dist/tex/plain/cweb/cwebbin/dcwebmac.tex
index 09e222d3c3a..dd8b43bea93 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebbin/dcwebmac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebbin/dcwebmac.tex
@@ -28,7 +28,7 @@
% Version 3.64 [p21] --- Andreas Scherer, Octobre 2005
% Version 3.64 [p22] --- Andreas Scherer, March 2016
% Version 4.9 --- Andreas Scherer, June 2022
-% Version 4.12 --- Andreas Scherer, May 2024
+% Version 4.12 --- Andreas Scherer, August 2024
\ifx\undefined\botofcontents\input cwebmac.tex\fi
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebbin/fcwebmac.tex b/Master/texmf-dist/tex/plain/cweb/cwebbin/fcwebmac.tex
index 82d67edb1a5..ff0c0b30bd9 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebbin/fcwebmac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebbin/fcwebmac.tex
@@ -28,7 +28,7 @@
% Version 3.64 [p21] --- Andreas Scherer, October 2005
% Version 3.64 [p22] --- Andreas Scherer, March 2016
% Version 4.9 --- Andreas Scherer, June 2022
-% Version 4.12 --- Andreas Scherer, May 2024
+% Version 4.12 --- Andreas Scherer, August 2024
% french translations --- Denis Roegel, 18 September 1994
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebbin/icwebmac.tex b/Master/texmf-dist/tex/plain/cweb/cwebbin/icwebmac.tex
index 5f2e7d3a45a..cbb5696984e 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebbin/icwebmac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebbin/icwebmac.tex
@@ -28,7 +28,7 @@
% Version 3.64 [p21] --- Andreas Scherer, October 2005
% Version 3.64 [p22] --- Andreas Scherer, March 2016
% Version 4.9 --- Andreas Scherer, June 2022
-% Version 4.12 --- Andreas Scherer, May 2024
+% Version 4.12 --- Andreas Scherer, August 2024
\ifx\undefined\botofcontents\input cwebmac.tex\fi
@@ -73,7 +73,7 @@
\def\inx{\par\vskip6pt plus 1fil % we are beginning the index
\def\page{\box255 } \normalbottom
\write\cont{} % ensure that the contents file isn't empty
- \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother
+ \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother
\closeout\cont % the contents information has been fully gathered
\output{\ifpagesaved\normaloutput{\box\sbox}\lheader\rheader\fi
\global\setbox\sbox=\page \global\pagesavedtrue \mark{\topmark}}
@@ -82,9 +82,7 @@
\vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height
\hsize=.5\pagewidth \advance\hsize by -10pt
% column width for the index (20pt between cols)
- \ifhint\else
- \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines
- \fi
+ \ifhint\else\parfillskip 0pt plus .6\hsize\fi % avoid almost empty lines
\def\lr{L} % this tells whether the left or right column is next
\output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R}
\else\normaloutput{\vbox to\pageheight{\box\sbox\vss
@@ -93,9 +91,9 @@
\message{Indice Analitico:}
\parskip 0pt plus .5pt
\outer\def\I##1, ##2.{\par\hangindent2em\noindent##1:\kern1em
- \ifacrohint\pdfnote##2.\else##2\fi.} % index entry
- \def\[##1]{$\underline{##1}$} % underlined index item
- \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar
+ \scan##2!.} % index entry
+ \def\[##1]{$\underline{\scan##1!}$\scan} % underlined index item
+ \rm \rightskip0pt plus 2.5em \tolerance 10000
\hyphenpenalty 10000 \parindent0pt
\readindex}
\def\fin{\par\vfill\eject % this is done when we are ending the index
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctproofmac.tex b/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctproofmac.tex
index f41ad4d6334..4079d5f704b 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctproofmac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctproofmac.tex
@@ -1,5 +1,5 @@
% standard macros for CWEB listings (in addition to plain.tex)
-% Version 4.12 --- May 2024
+% Version 4.12 --- August 2024
% modified for proofs in CTWILL
% modified for PDF/HINT output with 'tex "\let\pdf+' or '{hi|lua|pdf|xe}tex'
% This file is not copyrighted and can be used freely.
@@ -14,15 +14,6 @@
\font\ninerm=cmr9
\let\mc=\ninerm % medium caps
-\def\CEE/{{\mc C\spacefactor1000}}
-\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}}
-\def\TEX/{\TeX}
-\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}}
-\def\Cee{\CEE/} % for backward compatibility
-\def\Cpp{\CPLUSPLUS/} % for backward compatibility
-\def\9#1{}
- % with this definition of \9 you can say @:sort key}{TeX code@>
- % to alphabetize an index entry by the sort key but format with the TeX code
\font\eightrm=cmr8
\let\sc=\eightrm % small caps (NOT a caps-and-small-caps font)
\let\mainfont=\tenrm
@@ -33,6 +24,16 @@
\font\tentex=cmtex10 % TeX extended character set (used in strings)
\fontdimen7\tentex=0pt % no double space after sentences
+\def\CEE/{{\mc C\spacefactor1000}}
+\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}}
+\def\TEX/{\TeX}
+\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}}
+\def\Cee{\CEE/} % for backward compatibility
+\def\Cpp{\CPLUSPLUS/} % for backward compatibility
+\def\9#1{}
+ % with this definition of \9 you can say @:sort key}{TeX code@>
+ % to alphabetize an index entry by the sort key but format with the TeX code
+
\def\\#1{\leavevmode\hbox{\it#1\/\kern.05em}} % italic type for identifiers
\def\|#1{\leavevmode\hbox{$#1$}} % one-letter identifiers look better this way
\def\&#1{\leavevmode\hbox{\bf
@@ -116,11 +117,9 @@
\def\note#1#2.{\Y\noindent{\hangindent2em%
\baselineskip10pt\eightrm#1~\ifacrohint{\pdfnote#2.}\else#2\fi.\par}}
-\newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD
-\newtoks\toksE \newtoks\toksF \newtoks\usersanitizer
+\newtoks\toksA \newtoks\toksE
\newcount\countA \countA=0 \newcount\countB \countB=0
-\newcount\countC \countC=0 \newcount\countD \countD=0
-\newif\iftokprocessed \newif\ifTnum \newif\ifinstr
+\newcount\countNOS \countNOS=0
{\def\\{\global\let\spacechar= }\\ }
% Here we decide the output format, depending on the TeX engine in use:
@@ -137,7 +136,7 @@
\def\Black{\pdfliteral{0 g 0 G}} % use rgb colors for direct PDF output too
\def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}}
\fi
-\ifacrohint \input cwebacromac \fi % load hypertext macros
+\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
@@ -187,7 +186,7 @@
\outer\def\M#1{\MN{#1}\ifon\vfil\penalty-100\vfilneg % beginning of section
\vskip\intersecskip\startsection\ignorespaces}
\outer\def\N#1#2#3.{% beginning of starred section
- \ifpdf{\toksF={}\makeoutlinetoks#3\outlinedone\outlinedone}\fi
+ \ifpdf{\makeoutlinetoks#3\outlinedone}\fi
\gdepth=#1\gtitle={#3}\MN{#2}%
\ifon\ifnum#1<\secpagedepth \vfil\eject % force page break if depth is small
\else\vfil\penalty-100\vfilneg\vskip\intersecskip\fi\fi
@@ -327,18 +326,16 @@
\newbox\lbox % lefthand column in the index
\def\inx{\par\vskip6pt plus 1fil % we are beginning the index
\write\cont{} % ensure that the contents file isn't empty
- \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother
+ \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother
\closeout\cont % the contents information has been fully gathered
\output{\ifpagesaved\normaloutput{\box\sbox}\lheader\rheader\fi
- \global\setbox\sbox=\page \global\pagesavedtrue}
+ \global\setbox\sbox=\page \global\pagesavedtrue \mark{\topmark}}
\pagesavedfalse \eject % eject the page-so-far and predecessors
\setbox\sbox\vbox{\unvbox\sbox} % take it out of its box
\vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height
\hsize=.5\pagewidth \advance\hsize by -10pt
% column width for the index (20pt between cols)
- \ifhint\else
- \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines
- \fi
+ \ifhint\else\parfillskip 0pt plus .6\hsize\fi % avoid almost empty lines
\def\lr{L} % this tells whether the left or right column is next
\output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R}
\else\normaloutput{\vbox to\pageheight{\box\sbox\vss
@@ -347,9 +344,9 @@
\message{Index:}
\parskip 0pt plus .5pt
\outer\def\I##1, ##2.{\par\hangindent2em\noindent##1:\kern1em
- \ifacrohint\pdfnote##2.\else##2\fi.} % index entry
- \def\[##1]{$\underline{##1}$} % underlined index item
- \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar
+ \scan##2!.} % index entry
+ \def\[##1]{$\underline{\scan##1!}$\scan} % underlined index item
+ \rm \rightskip0pt plus 2.5em \tolerance 10000
\hyphenpenalty 10000 \parindent0pt
\readindex}
\def\fin{\par\vfill\eject % this is done when we are ending the index
@@ -370,23 +367,21 @@
\def\I{\par\hangindent 2em}\let\*=*
\ifpdf \def\outsecname{Names of the sections} \let\Xpdf\X
\ifpdflua \pdfdest name {NOS} fith
- \pdfoutline goto name {NOS} count -\the\countD {\outsecname}
- \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
- {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
- \pdfoutline goto num \the\toksA \expandafter{\the\toksE}}
+ \pdfoutline goto name {NOS} count -\the\countNOS {\outsecname}
\else \special{pdf: outline -1 << /Title (\outsecname)
- /Dest [ @thispage /FitH @ypos ] >>}
- \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
- {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
- \special{pdf: outline 0 << /Title (\the\toksE)
- /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}}
- \fi\fi
+ /Dest [ @thispage /FitH @ypos ] >>}\fi
+ \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)
+ /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}\fi}
+ \fi % \ifacro
\readsections}
\def\makebookmarks{\let\ZZ=\writebookmarkline \readcontents\relax}
\def\countsections{\message{Number of named sections:}
- {\def\I{\global\advance\countD by 1}\def\X##1\X{\relax}
+ {\def\I{\global\advance\countNOS by 1}\def\X##1\X{\relax}
\def\Q##1.{\relax}\def\Qs##1.{\relax}\def\U##1.{\relax}\def\Us##1.{\relax}
- \readsections\relax}\message{\the\countD}}
+ \readsections\relax}\message{\the\countNOS}}
\def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
\else \csname#1\endcsname \fi} % Petr Olsak's macros from texinfo.tex
\def\advancenumber#1{\countA=\expnumber{#1}\relax \advance\countA by1
@@ -412,17 +407,14 @@
\line{\consetup{#2}#1
\rm\leaders\hbox to .5em{.\hfil}\hfil
\ \ifhint
- \HINTlink{#3}{\romannumeral#3}% No page numbers in HINT
+ \HINTlink{#3}% No page numbers in HINT
\HINTcontents{#1}{#2}{#3}%
- \else\ifacro\pdflink{#3}{\romannumeral#3}\else#3\fi
+ \else\ifacro\pdflink{#3}\else#3\fi
\hbox to3em{\hss#4}\fi}}
\def\consetup#1{\ifcase#1 \bf % depth -1 (@**)
\or % depth 0 (@*)
\or \hskip2em % depth 1 (@*1)
- \or \hskip4em % depth 2 (@*2)
- \or \hskip6em % depth 3 (@*3)
- \or \hskip8em % depth 4 (@*4)
- \or \hskip10em % depth 5 (@*5)
+ \or \hskip4em \or \hskip6em \or \hskip8em \or \hskip10em % depth 2,3,4,5
\else \hskip12em \fi} % depth 6 or more
\def\noinx{\let\inx=\end} % no indexes or table of contents
\def\nosecs{\let\FIN=\fin \def\fin{\let\parfillskip=\end \FIN}}
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex b/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex
index 2a0499949e6..d1278cac3bf 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfctwimac.tex
@@ -1,5 +1,5 @@
% standard macros for CWEB listings (in addition to plain.tex)
-% Version 4.12 --- May 2024
+% Version 4.12 --- August 2024
% modified for pages produced by CTWILL
% further modified for page size of the MMIXware book
% modified for PDF output with 'tex "\let\pdf+' or '{lua|pdf|xe}tex'
@@ -26,15 +26,6 @@
\font\ninerm=cmr9
\let\mc=\ninerm % medium caps
-\def\CEE/{{\mc C\spacefactor1000}}
-\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}}
-\def\TEX/{\TeX}
-\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}}
-\def\Cee{\CEE/} % for backward compatibility
-\def\Cpp{\CPLUSPLUS/} % for backward compatibility
-\def\9#1{}
- % with this definition of \9 you can say @:sort key}{TeX code@>
- % to alphabetize an index entry by the sort key but format with the TeX code
\font\eightrm=cmr8
\font\sixrm=cmr6
\font\ninei=cmmi9
@@ -146,6 +137,16 @@
\font\titlefont=cmr7 scaled\magstep4 % title on the contents page
\font\ttitlefont=cmtt10 scaled\magstep2 % typewriter type in title
+\def\CEE/{{\mc C\spacefactor1000}}
+\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}}
+\def\TEX/{\TeX}
+\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}}
+\def\Cee{\CEE/} % for backward compatibility
+\def\Cpp{\CPLUSPLUS/} % for backward compatibility
+\def\9#1{}
+ % with this definition of \9 you can say @:sort key}{TeX code@>
+ % to alphabetize an index entry by the sort key but format with the TeX code
+
\def\\#1{\leavevmode\hbox{\it#1\/\kern.05em}} % italic type for identifiers
\def\|#1{\leavevmode\hbox{$#1$}} % one-letter identifiers look better this way
\def\&#1{\leavevmode\hbox{\bf
@@ -228,11 +229,9 @@
\Y\noindent{\hangindent2\em\baselineskip10pt%
\eightrm#1~\ifacro{\pdfnote#2.}\else#2\fi.\par}}
-\newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD
-\newtoks\toksE \newtoks\toksF \newtoks\usersanitizer
+\newtoks\toksA \newtoks\toksE
\newcount\countA \countA=0 \newcount\countB \countB=0
-\newcount\countC \countC=0 \newcount\countD \countD=0
-\newif\iftokprocessed \newif\ifTnum \newif\ifinstr
+\newcount\countNOS \countNOS=0
{\def\\{\global\let\spacechar= }\\ }
% Here we decide the output format, depending on the TeX engine in use:
@@ -253,7 +252,7 @@
\def\Black{\pdfliteral{0 g 0 G}} % use rgb colors for direct PDF output too
\def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}}
\fi
-\ifacrohint \input cwebacromac \fi % load hypertext macros
+\input cwebacromac % load hypertext macros
\def\lapstar{\rlap{*}}
\def\stsec{\tenpoint\rightskip=0pt % get out of C mode (cf. \B)
@@ -301,7 +300,7 @@
\outer\def\NN{\ifvoid\partialpage\leftfalse
\else\ifdim\ht\partialpage<\pageht \lefttrue\else\leftfalse\fi\fi\NNN}
\outer\def\NNN#1#2#3.{% beginning of starred section
- \ifacro{\toksF={}\makeoutlinetoks#3\outlinedone\outlinedone}\fi
+ \ifacro{\makeoutlinetoks#3\outlinedone}\fi
\gdepth=#1\gtitle={#3}\def\secno{#2}\xdef\secstar{#2}
\ifleft \flushout
\gdef\rlhead{\let\i=I\uppercase{\ignorespaces#3}} % running left headline
@@ -334,7 +333,7 @@
\def\T#1{\leavevmode % octal, hex or decimal constant
\hbox{$\def\?{\kern.2em}%$%
\let\ \, % C++ digit separator becomes a little white space
- \def\$##1{\egroup_{\rm##1}\bgroup}% suffix to constant
+ \def\$##1{\egroup_{\rm##1}\bgroup}%$% suffix to constant
\def\_{\cdot 10^{\aftergroup}}% power of ten (via dirty trick)
\let\~=\oct \let\^=\hex \let\\=\bin {#1}$}}%$%
\def\U{\note{This code is used in section}} % xref for use of a section
@@ -543,22 +542,20 @@
\def\outsecname{Names of the sections}
\ifpdflua \makebookmarks \countsections
\pdfdest name {NOS} fith
- \pdfoutline goto name {NOS} count -\the\countD {\outsecname}
- \def\X##1:##2\X{\firstsecno##1.%
- {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
- \pdfoutline goto num \the\toksA \expandafter{\the\toksE}}
+ \pdfoutline goto name {NOS} count -\the\countNOS {\outsecname}
\else \special{pdf: outline -1 << /Title (\outsecname)
- /Dest [ @thispage /FitH @ypos ] >>}
- \def\X##1:##2\X{\firstsecno##1.%
- {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
- \special{pdf: outline 0 << /Title (\the\toksE)
- /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}}
- \fi \readsections \fi}
+ /Dest [ @thispage /FitH @ypos ] >>}\fi
+ \def\X##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)
+ /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}\fi}
+ \readsections \fi}
\def\makebookmarks{\let\ZZ=\writebookmarkline \readcontents\relax}
\def\countsections{\message{Number of named sections:}
- {\def\I{\global\advance\countD by 1}\def\X##1\X{\relax}
+ {\def\I{\global\advance\countNOS by 1}\def\X##1\X{\relax}
\def\Q##1.{\relax}\def\Qs##1.{\relax}\def\U##1.{\relax}\def\Us##1.{\relax}
- \readsections\relax}\message{\the\countD}}
+ \readsections\relax}\message{\the\countNOS}}
\def\writebookmarkline#1#2#3#4#5{{%
\let\(=\let \let\)=\let \let\[=\let \let\]=\let \let\/=\let
\pdfoutline goto num #3 count -\expnumber{chunk#2.#3} {#5}}}
@@ -579,7 +576,7 @@
%\def\contentsline#1#2#3#4#5{\ifnum#2=0 \smallbreak\fi
%\line{\consetup{#2}#1
%\rm\leaders\hbox to .5em{.\hfil}\hfil
- %\ \ifacro\pdflink{#3}{\romannumeral#3}\else#3\fi\hbox to3em{\hss#4}}}
+ %\ \ifacro\pdflink{#3}\else#3\fi\hbox to3em{\hss#4}}}
%\def\consetup#1{\ifcase#1 \bf % depth -1 (@**)
%\or % depth 0 (@*)
%\or \hskip2em % depth 1 (@*1)
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfwebtocfront.tex b/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfwebtocfront.tex
index 237b9f39c38..1d8fd1a0aae 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfwebtocfront.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebbin/pdfwebtocfront.tex
@@ -18,7 +18,7 @@
\newread\testread
\openin\testread=\contentsfile\relax
\ifeof\testread % First run
-\else % Second run
+\else\closein\testread % Second run
% Fix page numbers in the PDF bootmarks with 'Page Labels'
\def\tocpages{1} % Most programs have one-page Table-of-Contents
\def\tocstart{2} % so we start with (fake) page 2 for the rest
diff --git a/Master/texmf-dist/tex/plain/cweb/cwebmac.tex b/Master/texmf-dist/tex/plain/cweb/cwebmac.tex
index 99e899476ce..53454300a9a 100644
--- a/Master/texmf-dist/tex/plain/cweb/cwebmac.tex
+++ b/Master/texmf-dist/tex/plain/cweb/cwebmac.tex
@@ -1,26 +1,14 @@
% standard macros for CWEB listings (in addition to plain.tex)
-% Version 4.12 --- May 2024
+% Version 4.12 --- August 2024
\ifx\renewenvironment\undefined\else\endinput\fi % LaTeX will use other macros
\xdef\fmtversion{\fmtversion+CWEB4.12}
\chardef\cwebversion=4 \chardef\cwebrevision=12
-\let\:=\. % preserve a way to get the dot accent
- % (all other accents will still work as usual)
-
\parskip 0pt % no stretch between paragraphs
\parindent 1em % for paragraphs and for the first line of C text
\font\ninerm=cmr9
\let\mc=\ninerm % medium caps
-\def\CEE/{{\mc C\spacefactor1000}}
-\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}}
-\def\TEX/{\TeX}
-\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}}
-\def\Cee{\CEE/} % for backward compatibility
-\def\Cpp{\CPLUSPLUS/} % for backward compatibility
-\def\9#1{}
- % with this definition of \9 you can say @:sort key}{TeX code@>
- % to alphabetize an index entry by the sort key but format with the TeX code
\font\eightrm=cmr8
\let\sc=\eightrm % for smallish caps (NOT a caps-and-small-caps font)
\let\mainfont=\tenrm
@@ -31,6 +19,17 @@
\font\tentex=cmtex10 % TeX extended character set (used in strings)
\fontdimen7\tentex=0pt % no double space after sentences
+\def\CEE/{{\mc C\spacefactor1000}}
+\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}}
+\def\TEX/{\TeX}
+\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}}
+\def\Cee{\CEE/} % for backward compatibility
+\def\Cpp{\CPLUSPLUS/} % for backward compatibility
+\def\9#1{} % with this definition of \9 you can say @:sort key}{TeX code@>
+ % to alphabetize an index entry by the sort key but format with the TeX code
+\let\:=\. % preserve a way to get the dot accent
+ % (all other accents will still work as usual)
+
\def\\#1{\leavevmode\hbox{\it#1\/\kern.05em}} % italic type for identifiers
\def\|#1{\leavevmode\hbox{$#1$}} % one-letter identifiers look better this way
\def\&#1{\leavevmode\hbox{\bf
@@ -112,14 +111,10 @@
\let\yskip=\smallskip
\def\?{\mathrel?}
\def\,{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}
-\def\note#1#2.{\Y\noindent{\hangindent2em%
- \baselineskip10pt\eightrm#1~\ifacrohint{\pdfnote#2.}\else#2\fi.\par}}
-\newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD
-\newtoks\toksE \newtoks\toksF \newtoks\usersanitizer
+\newtoks\toksA \newtoks\toksE
\newcount\countA \countA=0 \newcount\countB \countB=0
-\newcount\countC \countC=0 \newcount\countD \countD=0
-\newif\iftokprocessed \newif\ifTnum \newif\ifinstr
+\newcount\countNOS \countNOS=0
{\def\\{\global\let\spacechar= }\\ }
% Here we decide the output format, depending on the TeX engine in use:
@@ -136,17 +131,7 @@
\def\Black{\pdfliteral{0 g 0 G}} % use rgb colors for direct PDF output too
\def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}}
\fi
-\ifacrohint \input cwebacromac \fi % 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
+\input cwebacromac % load hypertext macros
\def\lapstar{\rlap{*}}
\def\stsec{\rightskip=0pt % get out of C mode (cf. \B)
@@ -159,6 +144,8 @@
[ @thispage /FitH @ypos ]}\fi}}\fi}
\let\startsection=\stsec
\def\defin#1{\global\advance\ind by 2 \1\&{#1 }} % begin `define' or `format'
+\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt%
+ \eightrm#1~\ifacrohint{\pdfnote#2.}\else#2\fi.\par}}
\def\A{\note{See also section}} % xref for doubly defined section name
\def\As{\note{See also sections}} % xref for multiply defined section name
\def\B{\rightskip=0pt plus 100pt minus 10pt % go into C mode
@@ -186,7 +173,7 @@
\outer\def\M#1{\MN{#1}\ifon\vfil\penalty-100\vfilneg % beginning of section
\vskip\intersecskip\startsection\ignorespaces}
\outer\def\N#1#2#3.{% beginning of starred section
- \ifacro{\toksF={}\makeoutlinetoks#3\outlinedone\outlinedone}\fi
+ \ifacro{\makeoutlinetoks#3\outlinedone}\fi
\gdepth=#1\gtitle={#3}\MN{#2}%
\ifon\ifnum#1<\secpagedepth \vfil\eject % force page break if depth is small
\else\vfil\penalty-100\vfilneg\vskip\intersecskip\fi\fi
@@ -240,15 +227,13 @@
\def\oct{\hbox{$^\circ$\kern-.1em\it\aftergroup\?\aftergroup}} % CWEB style
\def\hex{\hbox{$^{\scriptscriptstyle\#}$\tt\aftergroup}} % CWEB style
\def\bin{\hbox{$^{\scriptscriptstyle b}$\tt\aftergroup}} % new in CWEB 4.3
-\def\vb#1{\leavevmode\hbox{\kern2pt\vrule\vtop{\vbox{\hrule
- \hbox{\strut\kern2pt\.{#1}\kern2pt}}
- \hrule}\vrule\kern2pt}} % verbatim string
+\def\vb#1{\leavevmode\hbox{\kern2pt\vrule\vtop{\vbox{\hrule\hbox{\strut
+ \kern2pt\.{#1}\kern2pt}}\hrule}\vrule\kern2pt}} % verbatim string
\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
@@ -317,9 +302,7 @@
\vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height
\hsize=.5\pagewidth \advance\hsize by -10pt
% column width for the index (20pt between cols)
- \ifhint\else
- \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines
- \fi
+ \ifhint\else\parfillskip 0pt plus .6\hsize\fi % avoid almost empty lines
\def\lr{L} % this tells whether the left or right column is next
\output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R}
\else\normaloutput{\vbox to\pageheight{\box\sbox\vss
@@ -328,9 +311,9 @@
\message{Index:}
\parskip 0pt plus .5pt
\outer\def\I##1, ##2.{\par\hangindent2em\noindent##1:\kern1em
- \ifacrohint\pdfnote##2.\else##2\fi.} % index entry
- \def\[##1]{$\underline{##1}$} % underlined index item
- \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar
+ \scan##2!.} % index entry
+ \def\[##1]{$\underline{\scan##1!}$\scan} % underlined index item
+ \rm \rightskip0pt plus 2.5em \tolerance 10000
\hyphenpenalty 10000 \parindent0pt
\readindex}
\def\fin{\par\vfill\eject % this is done when we are ending the index
@@ -353,23 +336,21 @@
\ifacro \def\outsecname{Names of the sections} \let\Xpdf\X
% \ifpdflua \makebookmarks \pdfdest name {NOS} fitb % in versions < 3.68
\ifpdflua \pdfdest name {NOS} fith % changed in version 3.69
- \pdfoutline goto name {NOS} count -\the\countD {\outsecname}
- \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
- {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
- \pdfoutline goto num \the\toksA \expandafter{\the\toksE}}
+ \pdfoutline goto name {NOS} count -\the\countNOS {\outsecname}
\else \special{pdf: outline -1 << /Title (\outsecname)
- /Dest [ @thispage /FitH @ypos ] >>}
- \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
- {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
- \special{pdf: outline 0 << /Title (\the\toksE)
- /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}}
- \fi\fi
+ /Dest [ @thispage /FitH @ypos ] >>}\fi
+ \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)
+ /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}\fi}
+ \fi % \ifacro
\readsections}
\def\makebookmarks{\let\ZZ=\writebookmarkline \readcontents\relax}
\def\countsections{\message{Number of named sections:}
- {\def\I{\global\advance\countD by 1}\def\X##1\X{\relax}
+ {\def\I{\global\advance\countNOS by 1}\def\X##1\X{\relax}
\def\Q##1.{\relax}\def\Qs##1.{\relax}\def\U##1.{\relax}\def\Us##1.{\relax}
- \readsections\relax}\message{\the\countD}}
+ \readsections\relax}\message{\the\countNOS}}
\def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
\else \csname#1\endcsname \fi} % Petr Olsak's macros from texinfo.tex
\def\advancenumber#1{\countA=\expnumber{#1}\relax \advance\countA by1
@@ -395,9 +376,9 @@
\line{\consetup{#2}#1
\rm\leaders\hbox to .5em{.\hfil}\hfil
\ \ifhint
- \HINTlink{#3}{\romannumeral#3}% No page numbers in HINT
+ \HINTlink{#3}% No page numbers in HINT
\HINTcontents{#1}{#2}{#3}%
- \else\ifacro\pdflink{#3}{\romannumeral#3}\else#3\fi
+ \else\ifacro\pdflink{#3}\else#3\fi
\hbox to3em{\hss#4}\fi}}
\def\consetup#1{\ifcase#1 \bf % depth -1 (@**)
\or % depth 0 (@*)
diff --git a/Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex b/Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex
index 01bba0e19f3..50070a7dc28 100644
--- a/Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex
+++ b/Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex
@@ -5,7 +5,7 @@
% macro integration \`a la CWEB by Andreas Scherer <andreas_tex@freenet.de>.
% This file is not copyrighted and can be used freely.
\ifx\renewenvironment\undefined\else\endinput\fi % LaTeX will use other macros
-\xdef\fmtversion{\fmtversion+PWEBMAC4.12}
+\xdef\fmtversion{\fmtversion+PWEBMAC5.0}
\parskip 0pt % no stretch between paragraphs
\parindent 1em % for paragraphs and for the first line of Pascal text
@@ -74,8 +74,8 @@
\newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD
\newtoks\toksE \newtoks\toksF \newtoks\usersanitizer
\newcount\countA \countA=0 \newcount\countB \countB=0
-\newcount\countC \countC=0 \newcount\countD \countD=0
-\newif\iftokprocessed \newif\ifTnum \newif\ifinstr
+\newcount\countNOS \countNOS=0
+\newif\iftokprocessed \newif\ifTnum \newif\ifinstr \newif\ifhavenum
{\def\\{\global\let\spacechar= }\\ }
% Here we decide the output format, depending on the TeX engine in use:
@@ -89,8 +89,7 @@
\newif\ifpdflua \ifluatex\pdfluatrue\fi \ifpdftex\pdfluatrue\fi
\ifpdflua % pdfTeX and luaTeX produce PDF output if \pdfoutput>0 (default)
\def\Black{\pdfliteral{0 g 0 G}} % use rgb colors for direct PDF output too
- \def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}}
-\fi
+ \def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}} \fi
\ifluatex % LuaTeX is almost like pdfTeX
\protected\def\pdfliteral {\pdfextension literal}
@@ -108,28 +107,56 @@
\let\pdfoutput=\outputmode
\fi % end of LuaTeX->pdfTeX redirection macros
+\ifacrohint % Common macros for \ifpdf and \ifhint for \pdflink's
+\def\pdfnote#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}\maketoks}\the\toksA}
+\def\firstsecno#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}%
+ \def\makenote{\addtokens\toksB{\the\toksC}\def\makenote{\let\space\empty
+ \toksC={}\toksD={}}\makenote}\maketoks}}
+\def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+\def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}%
+ \ifcat\noexpand\first0\countB=`#1\else\countB=0\fi}
+\def\maketoks{\expandafter\poptoks\the\toksA|ENDTOKS|%
+ \let\next=\maketoks % continue processing by default
+ \ifnum\countB>`9 \countB=0 \fi
+ \ifnum\countB<`0
+ \ifhavenum\makenote\fi
+ \ifx\first.\let\next=\maketoksdone % fullstop
+ \else \addtokens\toksB{\the\toksD}
+ \ifx\first,\addtokens\toksB{\space}\fi
+ \fi
+ \else \addtokens\toksC{\the\toksD}\global\havenumtrue
+ \fi
+ \next
+}
+\def\makenote{\addtokens\toksB
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\havenumfalse}
+\def\maketoksdone{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\fi % End of common pdf/hint macros
+
\ifpdf % The following are general pdf macros from 'cwebmac.tex 3.70'
\def\thewidth{\the\wd0 \space}
\def\theheight{\the\ht\strutbox\space}
\def\thedepth{\the\dp\strutbox\space}
\ifpdflua
\ifx\pdfannotlink\undefined\let\pdfannotlink\pdfstartlink\fi% for pdfTeX 0.14
- \def\pdflink#1#2{\hbox{\pdfannotlink height \theheight depth \thedepth
+ \def\pdflink#1{\hbox{\pdfannotlink height \theheight depth \thedepth
attr{/Border [0 0 0]} goto num #1 \Blue #1\Black\pdfendlink}}
-\else\def\pdflink#1#2{\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}%
+\else\def\pdflink#1{\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}%
\special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight
- depth \thedepth << /Type /Annot /Subtype /Link
- /Border [0 0 0] /A << /S /GoTo /D (#2) >> >>}\box0\relax}\fi
+ depth \thedepth << /Type /Annot /Subtype /Link /Border [0 0 0]
+ /A << /S /GoTo /D (\romannumeral#1) >> >>}\box0\relax}\fi
\def\sanitizecommand#1#2{\addtokens\usersanitizer
{\noexpand\dosanitizecommand\noexpand#1{#2}}}
\def\dosanitizecommand#1#2{\ifx\nxt#1\addF{#2}\fi}
+\ifhint\else\sanitizecommand\to{..}\fi % a trivial example; requires \addtokens
\catcode`\[=1 \catcode`\]=2 \catcode`\{=12 \catcode`\}=12
\def\lbchar[{] \def\rbchar[}]
\catcode`\[=12 \catcode`\]=12 \catcode`\{=1 \catcode`\}=2
\catcode`\~=12 \def\tildechar{~} \catcode`\~=13
\catcode`\|=0 |catcode`|\=12 |def|bschar{\} |catcode`|\=0 \catcode`\|=12
-\def\makeoutlinetoks{\Tnumfalse\afterassignment\makeolproctok\let\nxt= }
+\def\makeoutlinetoks{\toksF={}\Tnumfalse
+ \afterassignment\makeolproctok\let\nxt= }
\def\makeolnexttok{\afterassignment\makeolproctok\let\nxt= }
\def\makeolgobbletok{\afterassignment\makeolnexttok\let\nxt= }
\def\addF#1{\addtokens\toksF{#1}\tokprocessedtrue}
@@ -191,7 +218,7 @@
}
\def\makeolproctokchar#1 #2 #3{\addF{#3}}
\def\outlinedone{\edef\outlinest{\global\noexpand\toksE={\the\toksF}}%
- \outlinest\let\outlinedone=\relax}
+ \outlinest\let\outlinedone=\relax\outlinedone}
\fi % End of general pdf macros
\ifhint
@@ -205,40 +232,11 @@
\def\HINThome{\HINTdest name {HINT.home}%
\HINToutline goto name {HINT.home} depth 1 {Table of Contents}}
\def\HINTlabel{{\let\*=\empty\HINTdest num \modstar top}}
-\def\HINTlink#1#2{\HINTstartlink goto num #1 {#1}\HINTendlink}% #2 not used ???
+\def\HINTlink#1{\HINTstartlink goto num #1 {#1}\HINTendlink}
\def\HINTcontents#1#2{\HINToutline goto num #2 depth 1 {#1}}
\let\pdflink=\HINTlink
\fi % End of HINT macros
-% Common macros for \ifpdf and \ifhint
-\ifacrohint
-\def\pdfnote#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}\maketoks}\the\toksA}
-\def\firstsecno#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}%
- \def\makenote{\addtokens\toksB{\the\toksC}\def\makenote{\toksD={}
- \toksC={}\let\space\empty}\makenote}\maketoks}}
-\def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
-\ifhint\else\sanitizecommand\to{..}\fi % a trivial example; requires \addtokens
-\def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}%
- \ifcat\noexpand\first0\countB=`#1\else\countB=0\fi\toksA={#2}}
-\def\maketoks{\expandafter\poptoks\the\toksA|ENDTOKS|%
- \ifnum\countB>`9 \countB=0 \fi
- \ifnum\countB<`0
- \ifnum0=\countC\else\makenote\fi
- \ifx\first.\let\next=\maketoksdone\else
- \let\next=\maketoks
- \addtokens\toksB{\the\toksD}
- \ifx\first,\addtokens\toksB{\space}\fi
- \fi
- \else \addtokens\toksC{\the\toksD}\global\countC=1\let\next=\maketoks
- \fi
- \next
-}
-\def\makenote{\addtokens\toksB
- {\noexpand\pdflink{\the\toksC}{\romannumeral\the\toksC}}%
- \toksC={}\global\countC=0}
-\def\maketoksdone{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\fi % End of common pdf/hint 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
@@ -280,7 +278,7 @@
\outer\def\M#1.{\MN#1.\ifon\vfil\penalty-100\vfilneg % beginning of section
\vskip\intersecskip\startsection\ignorespaces}
\outer\def\N#1.#2.{% beginning of starred section
- \ifpdf{\toksF={}\makeoutlinetoks#2\outlinedone\outlinedone}\fi
+ \ifpdf{\makeoutlinetoks#2\outlinedone}\fi
\gtitle={#2}\MN#1.\vfil\eject % define running headline
\message{*\modno} % progress report
\def\stripprefix##1>{}\def\gtitletoks{#2}%
@@ -411,17 +409,31 @@
\message{Index:}
\parskip 0pt plus .5pt
\outer\def\:##1, ##2.{\par\hangindent2em\noindent##1:\kern1em
- \ifacrohint\pdfnote##2.\else##2\fi.} % index entry
+ \scan##2!.} % index entry
\let\ttentry=\. \def\.##1{\ttentry{##1\kern.2em}} % give \tt a little room
- \def\[##1]{$\underline{##1}$} % underlined index item
- \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar
+ \def\[##1]{$\underline{\scan##1!}$\scan} % underlined index item
+ \ifacrohint\def\digits{\pdflink{\the\countA}\scan}
+ \else\def\digits{{\the\countA}\scan}\fi
+ \def\scan##1{\begingroup
+ \ifx!##1% exit on exclamation point
+ \else\ifx,##1,\space\aftergroup\scan % insert ,\space}\scan...
+ \else\ifx\[##1\aftergroup##1% insert }\[...
+ \else\ifx\*##1\aftergroup\lapstar\aftergroup\scan % insert }\lapstar\scan...
+ \else\ifnum`##1>`9##1\aftergroup\scan % insert #1}\scan...
+ \else\ifnum`##1<`0##1\aftergroup\scan % insert #1}\scan...
+ \else
+ \afterassignment\digits \aftergroup\countA
+ \aftergroup##1% insert }\countA=#1\digits...
+ \fi\fi\fi\fi\fi \fi
+ \endgroup}
+ \rm \rightskip0pt plus 2.5em \tolerance 10000
\hyphenpenalty 10000 \parindent0pt}
\def\fin{\par\vfill\eject % this is done when we are ending the index
\ifpagesaved\null\vfill\eject\fi % output a null index column
\if L\lr\else\null\vfill\eject\fi % finish the current page
\ifpdflua \makebookmarks % added in Version 4.5
\ifnum\pdfshellescape=1 {\let\\=\BS % count the @<named sections@>
- \global\countD=\input{|grep -c -e '\\:\\X' \jobname.tex}} \fi\fi
+ \global\countNOS=\input{|grep -c -e '\\:\\X' \jobname.tex}} \fi\fi
\parfillskip 0pt plus 1fil
\def\grouptitle{NAMES OF THE SECTIONS}
\let\topsecno=\nullsec
@@ -435,18 +447,16 @@
\def\:{\par\hangindent 2em}\let\*=*\let\.=\ttentry
\ifpdf \def\outsecname{Names of the sections} \let\Xpdf\X
\ifpdflua \pdfdest name {NOS} fith
- \ifnum \the\countD>0 \xdef\modno{\the\countD} \fi
+ \ifnum \countNOS>0 \xdef\modno{\the\countNOS} \fi
\pdfoutline goto name {NOS} count -\modno {\outsecname}
- \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
- {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
- \pdfoutline goto num \the\toksA \expandafter{\the\toksE}}
\else \special{pdf: outline -1 << /Title (\outsecname)
- /Dest [ @thispage /FitH @ypos ] >>}
- \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
- {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
- \special{pdf: outline 0 << /Title (\the\toksE)
- /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}}
- \fi\fi}
+ /Dest [ @thispage /FitH @ypos ] >>}\fi
+ \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)
+ /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}\fi}
+ \fi}
\def\makebookmarks{\def\?##1]{[##1]}%
\let\Z=\writebookmarkline \readcontents\relax}
\def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
@@ -474,9 +484,9 @@
\line{\ignorespaces#1
\rm\leaders\hbox to .5em{.\hfil}\hfil
\ \ifhint
- \HINTlink{#2}{\romannumeral#2}% No page numbers in HINT
+ \HINTlink{#2}% No page numbers in HINT
\HINTcontents{#1}{#2}%
- \else\ifpdf\pdflink{#2}{\romannumeral#2}\else#2\fi
+ \else\ifpdf\pdflink{#2}\else#2\fi
\hbox to3em{\hss#3}\fi}}
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
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/platex/pxchfon/pxchfon.sty b/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty
index 310af67b713..eef9fbc3471 100644
--- a/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty
+++ b/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'pxchfon.sty'.
%%
-%% Copyright (c) 2009-2023 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2009-2024 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,7 +10,7 @@
%% package declaration
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{pxchfon}[2023/08/28 v2.0]
+\ProvidesPackage{pxchfon}[2024/08/22 v2.2]
\def\pxcz@pkgname{pxchfon}
%--------------------------------------- general
@@ -28,7 +28,11 @@
%% unique tokens
\def\pxcz@end{\pxcz@end@}
\def\pxcz@mt{\pxcz@mt@}
+\toksdef\pxcz@mk=9 % unexpandable
+%% \pxcz@letcs\CSa{<cs2>}
+\def\pxcz@letcs#1#2{%
+ \expandafter\let\expandafter#1\csname#2\endcsname}
%% \pxcz@csletcs{<cs1>}{<cs2>}
\def\pxcz@csletcs#1#2{%
\expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
@@ -47,6 +51,19 @@
\def\pxcz@onlypreamble@let#1{%
\@onlypreamble#1\let#1}
+%% \pxcz@first@doc@hook
+% Invoked earlier than \pxcz@doc@hook.
+\pxcz@onlypreamble@let\pxcz@first@doc@hook\@empty
+\AtBeginDocument{\pxcz@first@doc@hook}
+
+%% \pxcz@new@gbool{<name>}
+\pxcz@onlypreamble@def\pxcz@new@gbool#1{%
+ \expandafter\pxcz@new@gbool@a\csname if#1\endcsname{#1}}
+\pxcz@onlypreamble@def\pxcz@new@gbool@a#1#2{%
+ \@namedef{#2true}{\global\let#1\iftrue}%
+ \@namedef{#2false}{\global\let#1\iffalse}%
+ \@nameuse{#2false}}\@gobbletwo\fi\fi
+
%% \pxcz@csuse@or{<csname>}{<default>}
\def\pxcz@csuse@or#1#2{%
\expandafter\ifx\csname#1\endcsname\relax \expandafter\@firstoftwo
@@ -59,13 +76,22 @@
\def\pxcz@lower@a#1\pxcz@end#2{%
\lowercase{\def#2{#1}}}
-%% \pxcz@setkeys{<text>}{<error>}
-\pxcz@onlypreamble@def\pxcz@setkeys#1#2{%
- \def\KV@errx##1{#2}%
- \edef\pxcz@do{\noexpand\setkeys{pxchfon}{#1}}\pxcz@do
+%% \pxcz@setkeys{<kv-family>}{<text>}{<error>}
+\pxcz@onlypreamble@def\pxcz@setkeys#1#2#3{%
+ \let\KV@errx#3%
+ \edef\pxcz@do{\noexpand\setkeys{#1}{#2}}\pxcz@do
\let\KV@errx\pxcz@org@KV@errx}
\let\pxcz@org@KV@errx\KV@errx
+%% \pxcz@handle@mt@kvopt{<key>}{<value>}{<code>}
+\pxcz@onlypreamble@def\pxcz@handle@mt@kvopt#1#2#3{%
+ \ifx\pxcz@mt#2\pxcz@mt #3%
+ \else
+ \PackageError\pxcz@pkgname
+ {No value allowed for key '#1'}%
+ {\@ehc}%
+ \fi}
+
%% \pxcz@handle@kvopt{<key>}{<cs-key>}{<value>}{<code>}
%% \pxcz@handle@bool@kvopt{<key>}{<cs-key>}{<value>}
\pxcz@onlypreamble@def\pxcz@handle@kvopt{%
@@ -74,10 +100,11 @@
\pxcz@handle@kvopt@a{}{#1}{#2}{#3}{\pxcz@value}}
\pxcz@onlypreamble@def\pxcz@handle@kvopt@a#1#2#3#4{%
\@nameuse{pxcz@#3@giventrue}%
- \pxcz@csletcs{pxcz@value}{pxcz@#3#1#4}%
+ \pxcz@letcs\pxcz@value{pxcz@#3#1#4}%
\ifx\pxcz@value\relax
\PackageError\pxcz@pkgname
- {Invalid value for option key '#2'\MessageBreak (#4)}%
+ {Invalid value for key '#2'\MessageBreak (#4)}%
+ {\@ehc}%
\expandafter\@gobble
\else \expandafter\@firstofone
\fi}
@@ -97,8 +124,46 @@
\def\pxcz@split@c#1\pxcz@mt#2\pxcz@end#3{%
\def\pxcz@pre{#3}\def\pxcz@post{#1}}
+%% \pxcz@let@jchar@token\CS{<code>}
+\pxcz@onlypreamble@def\pxcz@let@jchar@token#1#2{%
+ \begingroup
+ \kansujichar1=#2\relax \kcatcode#2=18\relax
+ \xdef\pxcz@g@tmpa{\kansuji1}%
+ \endgroup
+ \let#1=\pxcz@g@tmpa}
+
+%% \pxcz@geta
+\pxcz@let@jchar@token\pxcz@geta{\jis"222E}
+
+%% \pxcz@Z\newrobustcmd*\CS...
+% On e-TeX engines, it simply does \newrobustcmd*;
+% otherwise it does \DeclareRobustCommand* with 'new' check.
+\pxcz@onlypreamble@def\pxcz@Z\newrobustcmd*#1{%
+ \pxcz@okfalse
+ \@ifdefinable{#1}{\pxcz@oktrue}%
+ \pxcz@cond\ifpxcz@ok\fi
+ {\DeclareRobustCommand*#1}{\providecommand*\pxcz@mt}%
+}
+
+%% \pxcz@PackageNoteNoLine
+\ifx\PackageNoteNoLine\@undefined
+ \let\pxcz@PackageNoteNoLine\PackageWarningNoLine
+\else
+ \let\pxcz@PackageNoteNoLine\PackageNoteNoLine
+\fi
+
%--------------------------------------- environment check
+%%<+> \pxchfonNoCheckMultiweight
+% If defined, skips the check for using multi-weight settings
+% without loading japanese-otf package with 'deluxe'.
+%(keep unchanged)
+
+%%<+> \pxchfonNoCheckExpert
+% If defined, skips the check for using expert settings without
+% substituting all weights.
+%(keep unchanged)
+
%% check for 'pxjafont' package
\@ifpackageloaded{pxjafont}{%
\PackageError\pxcz@pkgname
@@ -115,6 +180,18 @@
\pxcz@do\kchardef{\pxcz@uptextrue}
% only upTeX in Unicode is seen as upTeX
\ifnum\ucs"3000="3000 \else \pxcz@uptexfalse \fi}
+%% \ifpxcz@etex
+\newif\ifpxcz@etex \pxcz@etexfalse
+\pxcz@do\eTeXversion{\pxcz@etextrue}
+%% \ifpxcz@etoolbox
+\newif\ifpxcz@etoolbox
+\ifpxcz@etex
+ \IfFileExists{etoolbox.sty}{%
+ \RequirePackage{etoolbox}[2011/01/03]% v2.1
+ \pxcz@etoolboxtrue
+ \let\pxcz@Z\@empty
+ }{}
+\fi
%% \pxcz@JYn
\edef\pxcz@JYn{%
@@ -128,13 +205,11 @@
\pxcz@lite@modetrue}
%% \ifpxcz@otf@loaded
-%% \ifpxcz@otf@deluxe
%% \pxcz@otf@weight: otf weight mode
\newif\ifpxcz@otf@loaded \pxcz@otf@loadedtrue
-\newif\ifpxcz@otf@deluxe \pxcz@otf@deluxefalse
% watch out for priority...
\@ifpackagewith{otf}{deluxe}{%
- \pxcz@otf@deluxetrue \let\pxcz@otf@weight=d
+ \let\pxcz@otf@weight=d
}{\@ifpackagewith{otf}{bold}{%
\let\pxcz@otf@weight=b
}{\@ifpackagewith{otf}{expert}{%
@@ -253,7 +328,7 @@
\let\pxcz@alphabet\relax
\newif\ifpxcz@otf \pxcz@otftrue
\newif\ifpxcz@cmap@alpha
-\newif\ifpxcz@mmivjis
+\pxcz@new@gbool{pxcz@mmivjis}
\newif\ifpxcz@everypage
\newif\ifpxcz@oneweight
\newif\ifpxcz@fullwidth
@@ -274,9 +349,14 @@
\chardef\pxcz@glyphid\z@
\newif\ifpxcz@autojfmsync
+%% \pxcz@invalid@opt{<key>}
+\pxcz@onlypreamble@def\pxcz@invalid@opt#1{%
+ \@unknownoptionerror}
+
%% process options
% drivers
\DeclareOption{nodvidriver}{\pxcz@enabledfalse}
+\DeclareOption{resetdvidriver}{\pxcz@enabledtrue}
\DeclareOption{dvips}{\pxcz@enabledfalse}
\DeclareOption{dviout}{\pxcz@enabledfalse}
\DeclareOption{xdvi}{\pxcz@enabledfalse}
@@ -353,7 +433,9 @@
\DeclareOption{autojfmsync}{\pxcz@autojfmsynctrue}
\DeclareOption{noautojfmsync}{\pxcz@autojfmsyncfalse}
% maybe-multiweight
-\DeclareOption{maybe-multiweight}{\let\pxchfonMaybeMultiweight=t}
+\DeclareOption{maybe-multiweight}{\let\pxchfonNoCheckMultiweight=t}
+% nocheck-expert
+\DeclareOption{nocheck-expert}{\let\pxchfonNoCheckExpert=t}
% use=<spec>
\define@key{pxchfon}{use}{%
\pxcz@okfalse
@@ -427,7 +509,7 @@
\DeclareOption*{%
\pxcz@parse@opt\CurrentOption
\ifpxcz@ok\else
- \pxcz@setkeys{\CurrentOption}{\@unknownoptionerror}%
+ \pxcz@setkeys{pxchfon}{\CurrentOption}\pxcz@invalid@opt
\fi}
%% \pxcz@use@list
@@ -475,7 +557,7 @@
\ifpxcz@unicode@given\else
\let\pxcz@unicode\pxcz@unicode@@false
\ifnum\pxcz@pxufont@loaded>0
- \PackageWarningNoLine\pxcz@pkgname
+ \pxcz@PackageNoteNoLine\pxcz@pkgname
{Option 'unicode' is enabled, since the package\MessageBreak
'pxufont' is already loaded}
\let\pxcz@unicode\pxcz@unicode@@full
@@ -486,7 +568,13 @@
%% apply default value for \pxcz@alphabet
\if\pxcz@alphabet\relax
\ifx\pxcz@main@preset\relax \ifx\pxcz@file@preset\relax
- % TODO: warn
+ \PackageWarningNoLine\pxcz@pkgname
+ {No preset is given and options for alphabetic\MessageBreak
+ fonts ('alphabet'/'noalphabet'/'relfont') are\MessageBreak
+ omitted. Here 'alphabet' will be assumed, but\MessageBreak
+ such omission is now DEPRECATED and the behavior\MessageBreak
+ might be changed in future!!\MessageBreak
+ You must write the option 'alphabet' explicitly}
\let\pxcz@alphabet=t
\fi\fi
\if\pxcz@alphabet\relax
@@ -530,32 +618,14 @@
\let\pxcz@switch@font@xjistrue\pxcz@switch@font@xjisfalse
\fi
-\begingroup \lccode`\@=`\_ \lowercase{%
- \xdef\pxcz@get@dvipdfmx@version{%
- \let\noexpand\pxcz@dvipdfmx@version\expandafter\noexpand
- \csname c@@Kernel@sys@dvipdfmx@version@int\endcsname}}
-\endgroup
-\AtBeginDocument{%
- \@tempswatrue
- \ifnum\pxcz@unicode<\pxcz@unicode@@full\else
- \pxcz@get@dvipdfmx@version
- \ifx\pxcz@dvipdfmx@version\@undefined\else
- \ifnum\pxcz@dvipdfmx@version<20170918
- \@tempswafalse \fi\fi
- \fi
- \if@tempswa\else
- \PackageError\pxcz@pkgname
- {Option 'unicode' is not available, since\MessageBreak
- your dvipdfmx is too old (v.\number\pxcz@dvipdfmx@version)}
- {The option requires dvipdfmx version 20170918 or later.%
- \MessageBreak\@ehc}
- \fi}
-
%--------------------------------------- preset-dependent setup
-%% variables
-\newif\ifpxcz@warn@unless@all@defined
-\newif\ifpxcz@warn@unless@all@embedded
+%% \pxcz@warn@unless@all@defined@for
+% The \do-list of names of problematic features.
+\pxcz@onlypreamble@let\pxcz@warn@unless@all@defined@for\@empty
+%% \pxcz@warn@unless@all@embedded@for
+% The \do-list of names of problematic features.
+\pxcz@onlypreamble@let\pxcz@warn@unless@all@embedded@for\@empty
%% \pxcz@apply@opt@unicode
% Forces the 'unicode' setup (unless a directunicode option was given).
@@ -566,7 +636,7 @@
\fi}
%% \pxcz@warn@unicode
\pxcz@onlypreamble@def\pxcz@warn@unicode{%
- \PackageWarningNoLine\pxcz@pkgname
+ \pxcz@PackageNoteNoLine\pxcz@pkgname
{The option 'unicode' is enforced, because the\MessageBreak
preset '\pxcz@main@preset' is selected.}}
@@ -586,7 +656,8 @@
\pxcz@custom@apply@opt@unicode
% No-embed is not supported under the 'unicode' setup
\ifnum\pxcz@unicode=\pxcz@unicode@@full
- \pxcz@warn@unless@all@embeddedtrue
+ \g@addto@macro\pxcz@warn@unless@all@embedded@for{%
+ \do{Direct Unicode spec ('unicode')}}
\fi
%% apply default for pxcz@legacycode@replace
@@ -661,9 +732,36 @@
\fi
\let\pxcz@expert=f
\fi
-\if t\pxcz@expert
- \pxcz@warn@unless@all@definedtrue
-\fi
+\g@addto@macro\pxcz@first@doc@hook{%
+ \if t\pxcz@expert \ifx\pxchfonNoCheckExpert\@undefined
+ \g@addto@macro\pxcz@warn@unless@all@defined@for{%
+ \do{Expert glyph shapes ('expert')}}%
+ \fi\fi}
+
+%--------------------------------------- '\pxchfonsetup'
+
+%% errors
+\pxcz@onlypreamble@def\pxcz@err@ivsky#1{%
+ \PackageError\pxcz@pkgname
+ {Unknown key: #1}%
+ {\@ehc}}
+
+%% 'jis2004=<bool>'
+\define@key{pxchfonS}{jis2004}[true]{%
+ \pxcz@handle@bool@kvopt{jis2004}{mmivjis}{#1}}
+%% 'maybe-multiweight'
+\define@key{pxchfonS}{maybe-multiweight}[]{%
+ \pxcz@handle@mt@kvopt{maybe-multiweight}{#1}{%
+ \global\let\pxchfonNoCheckMultiweight=t}}
+%% 'nocheck-expert'
+\define@key{pxchfonS}{nocheck-expert}[]{%
+ \pxcz@handle@mt@kvopt{nocheck-expert}{#1}{%
+ \global\let\pxchfonNoCheckExpert=t}}
+
+%%<*> \pxchfonsetup{<text>}
+\@onlypreamble\pxchfonsetup
+\pxcz@Z\newrobustcmd*\pxchfonsetup[1]{%
+ \pxcz@setkeys{pxchfonS}{#1}\pxcz@err@ivsky}
%--------------------------------------- user interface
@@ -678,53 +776,60 @@
tcml,tcmr,tcmb,tcgr,tcgb,tcgx,tcgu,tcmgr}
%%<*> \setminchofont/\setgothicfont/etc.
-\newcommand*\setminchofont{\pxcz@setfont{mnl,mnr,mnb}}
-\newcommand*\setgothicfont{\pxcz@setfont{gtr,gtb,gtx,gtu}}
-\newcommand*\setlightminchofont{\pxcz@setfont@dx{mnl}}
-\newcommand*\setmediumminchofont{\pxcz@setfont@dx{mnr}}
-\newcommand*\setboldminchofont{\pxcz@setfont@dx{mnb}}
-\newcommand*\setmediumgothicfont{\pxcz@setfont@dx{gtr}}
-\newcommand*\setboldgothicfont{\pxcz@setfont@dx{gtb}}
-\newcommand*\setxboldgothicfont{\pxcz@setfont@dx{gtx}}
-\newcommand*\setoneweightgothicfont{\pxcz@setfont@dx{gtu}}
-\newcommand*\setmarugothicfont{\pxcz@setfont@dx{mgr}}
-
-\newcommand*\setkoreanminchofont{\pxcz@setfont{koml,komr,komb}}
-\newcommand*\setkoreangothicfont{\pxcz@setfont{kogr,kogb,kogx,kogu,komgr}}
-\newcommand*\setkoreanlightminchofont{\pxcz@setfont@dx{koml}}
-\newcommand*\setkoreanmediumminchofont{\pxcz@setfont@dx{komr}}
-\newcommand*\setkoreanboldminchofont{\pxcz@setfont@dx{komb}}
-\newcommand*\setkoreanmediumgothicfont{\pxcz@setfont@dx{kogr}}
-\newcommand*\setkoreanboldgothicfont{\pxcz@setfont@dx{kogb}}
-\newcommand*\setkoreanxboldgothicfont{\pxcz@setfont@dx{kogx}}
-\newcommand*\setkoreanoneweightgothicfont{\pxcz@setfont@dx{kogu}}
-\newcommand*\setkoreanmarugothicfont{\pxcz@setfont@dx{komgr}}
-
-\newcommand*\setschineseminchofont{\pxcz@setfont{scml,scmr,scmb}}
-\newcommand*\setschinesegothicfont{\pxcz@setfont{scgr,scgb,scgx,scgu,scmgr}}
-\newcommand*\setschineselightminchofont{\pxcz@setfont@dx{scml}}
-\newcommand*\setschinesemediumminchofont{\pxcz@setfont@dx{scmr}}
-\newcommand*\setschineseboldminchofont{\pxcz@setfont@dx{scmb}}
-\newcommand*\setschinesemediumgothicfont{\pxcz@setfont@dx{scgr}}
-\newcommand*\setschineseboldgothicfont{\pxcz@setfont@dx{scgb}}
-\newcommand*\setschinesexboldgothicfont{\pxcz@setfont@dx{scgx}}
-\newcommand*\setschineseoneweightgothicfont{\pxcz@setfont@dx{scgu}}
-\newcommand*\setschinesemarugothicfont{\pxcz@setfont@dx{scmgr}}
-
-\newcommand*\settchineseminchofont{\pxcz@setfont{tcml,tcmr,tcmb}}
-\newcommand*\settchinesegothicfont{\pxcz@setfont{tcgr,tcgb,tcgx,tcgu,tcmgr}}
-\newcommand*\settchineselightminchofont{\pxcz@setfont@dx{tcml}}
-\newcommand*\settchinesemediumminchofont{\pxcz@setfont@dx{tcmr}}
-\newcommand*\settchineseboldminchofont{\pxcz@setfont@dx{tcmb}}
-\newcommand*\settchinesemediumgothicfont{\pxcz@setfont@dx{tcgr}}
-\newcommand*\settchineseboldgothicfont{\pxcz@setfont@dx{tcgb}}
-\newcommand*\settchinesexboldgothicfont{\pxcz@setfont@dx{tcgx}}
-\newcommand*\settchineseoneweightgothicfont{\pxcz@setfont@dx{tcgu}}
-\newcommand*\settchinesemarugothicfont{\pxcz@setfont@dx{tcmgr}}
+% japanese
+\pxcz@Z\newrobustcmd*\setminchofont{\pxcz@setfont{mnl,mnr,mnb}}
+\pxcz@Z\newrobustcmd*\setgothicfont{\pxcz@setfont{gtr,gtb,gtx,gtu}}
+\pxcz@Z\newrobustcmd*\setlightminchofont{\pxcz@setdf{mnl}}
+\pxcz@Z\newrobustcmd*\setmediumminchofont{\pxcz@setdf{mnr}}
+\pxcz@Z\newrobustcmd*\setboldminchofont{\pxcz@setdf{mnb}}
+\pxcz@Z\newrobustcmd*\setmediumgothicfont{\pxcz@setdf{gtr}}
+\pxcz@Z\newrobustcmd*\setboldgothicfont{\pxcz@setdf{gtb}}
+\pxcz@Z\newrobustcmd*\setxboldgothicfont{\pxcz@setdf{gtx}}
+\pxcz@Z\newrobustcmd*\setoneweightgothicfont{\pxcz@setdf{gtu}}
+\pxcz@Z\newrobustcmd*\setmarugothicfont{\pxcz@setdf{mgr}}
+% korean
+\pxcz@Z\newrobustcmd*\setkoreanminchofont{%
+ \pxcz@setfont{koml,komr,komb}}
+\pxcz@Z\newrobustcmd*\setkoreangothicfont{%
+ \pxcz@setfont{kogr,kogb,kogx,kogu,komgr}}
+\pxcz@Z\newrobustcmd*\setkoreanlightminchofont{\pxcz@setdf{koml}}
+\pxcz@Z\newrobustcmd*\setkoreanmediumminchofont{\pxcz@setdf{komr}}
+\pxcz@Z\newrobustcmd*\setkoreanboldminchofont{\pxcz@setdf{komb}}
+\pxcz@Z\newrobustcmd*\setkoreanmediumgothicfont{\pxcz@setdf{kogr}}
+\pxcz@Z\newrobustcmd*\setkoreanboldgothicfont{\pxcz@setdf{kogb}}
+\pxcz@Z\newrobustcmd*\setkoreanxboldgothicfont{\pxcz@setdf{kogx}}
+\pxcz@Z\newrobustcmd*\setkoreanoneweightgothicfont{\pxcz@setdf{kogu}}
+\pxcz@Z\newrobustcmd*\setkoreanmarugothicfont{\pxcz@setdf{komgr}}
+% schinese
+\pxcz@Z\newrobustcmd*\setschineseminchofont{%
+ \pxcz@setfont{scml,scmr,scmb}}
+\pxcz@Z\newrobustcmd*\setschinesegothicfont{%
+ \pxcz@setfont{scgr,scgb,scgx,scgu,scmgr}}
+\pxcz@Z\newrobustcmd*\setschineselightminchofont{\pxcz@setdf{scml}}
+\pxcz@Z\newrobustcmd*\setschinesemediumminchofont{\pxcz@setdf{scmr}}
+\pxcz@Z\newrobustcmd*\setschineseboldminchofont{\pxcz@setdf{scmb}}
+\pxcz@Z\newrobustcmd*\setschinesemediumgothicfont{\pxcz@setdf{scgr}}
+\pxcz@Z\newrobustcmd*\setschineseboldgothicfont{\pxcz@setdf{scgb}}
+\pxcz@Z\newrobustcmd*\setschinesexboldgothicfont{\pxcz@setdf{scgx}}
+\pxcz@Z\newrobustcmd*\setschineseoneweightgothicfont{\pxcz@setdf{scgu}}
+\pxcz@Z\newrobustcmd*\setschinesemarugothicfont{\pxcz@setdf{scmgr}}
+% tchinese
+\pxcz@Z\newrobustcmd*\settchineseminchofont{%
+ \pxcz@setfont{tcml,tcmr,tcmb}}
+\pxcz@Z\newrobustcmd*\settchinesegothicfont{%
+ \pxcz@setfont{tcgr,tcgb,tcgx,tcgu,tcmgr}}
+\pxcz@Z\newrobustcmd*\settchineselightminchofont{\pxcz@setdf{tcml}}
+\pxcz@Z\newrobustcmd*\settchinesemediumminchofont{\pxcz@setdf{tcmr}}
+\pxcz@Z\newrobustcmd*\settchineseboldminchofont{\pxcz@setdf{tcmb}}
+\pxcz@Z\newrobustcmd*\settchinesemediumgothicfont{\pxcz@setdf{tcgr}}
+\pxcz@Z\newrobustcmd*\settchineseboldgothicfont{\pxcz@setdf{tcgb}}
+\pxcz@Z\newrobustcmd*\settchinesexboldgothicfont{\pxcz@setdf{tcgx}}
+\pxcz@Z\newrobustcmd*\settchineseoneweightgothicfont{\pxcz@setdf{tcgu}}
+\pxcz@Z\newrobustcmd*\settchinesemarugothicfont{\pxcz@setdf{tcmgr}}
\pxcz@onlypreamble@def\pxcz@setfont#1{\@ifnextchar[%]
{\pxcz@setfont@a{#1}}{\pxcz@setfont@a{#1}[0]}}
-\pxcz@onlypreamble@def\pxcz@setfont@dx{%
+\pxcz@onlypreamble@def\pxcz@setdf{%
\pxcz@deluxe@usedtrue\pxcz@setfont}
\pxcz@onlypreamble@def\pxcz@setfont@a#1[#2]#3{%
\edef\pxcz@tmpa{#3}\pxcz@lower\pxcz@tmpa
@@ -742,22 +847,21 @@
\@for\pxcz@x:=\pxcz@sym@list\do{%
\@namedef{pxcz@FS/\pxcz@x}{}}
-%%<*> \maybemultiweight
-\newcommand*\maybemultiweight{%
- \let\pxchfonMaybeMultiweight=t}
-
% check for usage of multi-weight commands
-\ifx t\pxchfonMaybeMultiweight\else
- \AtBeginDocument{%
- \ifpxcz@deluxe@used\ifpxcz@otf@deluxe\else
+\g@addto@macro\pxcz@first@doc@hook{%
+ \ifx t\pxchfonMaybeMultiweight % for compatibility
+ \let\pxchfonNoCheckMultiweight=t%
+ \fi
+ \ifx\pxchfonNoCheckMultiweight\@undefined
+ \ifpxcz@deluxe@used\if d\pxcz@otf@weight\else
\PackageWarningNoLine\pxcz@pkgname
{Setting for multi-weight usage of japanese-otf\MessageBreak
font set is employed, but 'deluxe' option\MessageBreak
of japanese-otf is not enabled!\MessageBreak
You should specify 'maybe-multiweight' option\MessageBreak
if you really intend the present setting}
- \fi\fi}
-\fi
+ \fi\fi
+ \fi}
%--------------------------------------- fontmap internals
@@ -777,9 +881,9 @@
\def\pxcz@cmap@hwuni{UniJIS-UCS2-HW-H}
%%<*> \usecmapforalphabet/\nousecmapforalphabet
-\newcommand*\usecmapforalphabet{%
+\pxcz@Z\newrobustcmd*\usecmapforalphabet{%
\global\pxcz@cmap@alphatrue}
-\newcommand*\nousecmapforalphabet{%
+\pxcz@Z\newrobustcmd*\nousecmapforalphabet{%
\global\pxcz@cmap@alphafalse}
%% \pxcz@NEF/<sym>
@@ -800,42 +904,56 @@
%%<+> \JaFontReplacementFor{<sym>}
\newcommand*\JaFontReplacementFor[1]{%
\csname pxcz@FS/#1\endcsname}
+\@namedef{pxcz@FS/*}{\pxcz@empty}
%%<+> \JaFontReplacementHook{<code>}
\@onlypreamble\JaFontReplacementHook
-\newcommand*\JaFontReplacementHook{%
+\pxcz@Z\newrobustcmd*\JaFontReplacementHook{%
\g@addto@macro\pxcz@user@hook}
\let\pxcz@user@hook\@empty
%%<+> \JaFontUserDefinedMap
\@onlypreamble\JaFontUserDefinedMap
-\newcommand*\JaFontUserDefinedMap{%
+\pxcz@Z\newrobustcmd*\JaFontUserDefinedMap{%
\g@addto@macro\pxcz@user@map}
-\let\pxcz@user@map\@empty
-\@namedef{pxcz@FS/*}{\pxcz@empty}
-
-%%<+> \usefontmapline{<map-line>}
-\@onlypreamble\usefontmapline
-\newcommand*\usefontmapline[1]{%
- \JaFontUserDefinedMap{\pxcz@addtospec@alt\pxcz@mapline{#1}}}
-
-%%<+> \usefontmapfile{<map-file>}
-\@onlypreamble\usefontmapfile
-\newcommand*\usefontmapfile[1]{%
- \JaFontUserDefinedMap{\pxcz@addtospec@alt\pxcz@mapfile{#1}}}
+\pxcz@onlypreamble@let\pxcz@user@map\@empty
%% \pxcz@check@extra
% Executed at the begin-document hook.
\@onlypreamble\pxcz@check@extra
\let\pxcz@check@extra\@empty
+%% \pxcz@addtospec@aux{<name>}{<text>}
+\pxcz@onlypreamble@def\pxcz@addtospec@aux#1#2{%
+ \xdef\pxcz@spec{\pxcz@spec\noexpand\special{pdf:#1 #2}}%
+}
+
+%%<*> \usefontmapline{<map-line>}
+\@onlypreamble\usefontmapline
+\pxcz@Z\newrobustcmd*\usefontmapline[1]{%
+ \JaFontUserDefinedMap{\pxcz@add@mapline{#1}}%
+}
+%%<*> \usefontmapfile{<map-file>}
+\@onlypreamble\usefontmapfile
+\pxcz@Z\newrobustcmd*\usefontmapfile[1]{%
+ \JaFontUserDefinedMap{\pxcz@add@mapfile{#1}}%
+}
+%% \pxcz@add@mapfile{<map-file>}
+\pxcz@onlypreamble@def\pxcz@add@mapfile{%
+ \pxcz@addtospec@aux{mapfile}%
+}
+%% \pxcz@add@mapline{<map-line>}
+\pxcz@onlypreamble@def\pxcz@add@mapline{%
+ \pxcz@addtospec@aux{mapline}%
+}
+
%--------------------------------------- map entry handling
%%<*> \setnewglyphcmapprefix{<str>}
\def\pxcz@pfx@jis@dflt{2004-}
\def\pxcz@pfx@jis@star{JISX0213-2004-}
\@onlypreamble\setnewglyphcmapprefix
-\newcommand*\setnewglyphcmapprefix{%
+\pxcz@Z\newrobustcmd*\setnewglyphcmapprefix{%
\@ifstar{\pxcz@set@pfx@jis\pxcz@pfx@jis@star}%
{\pxcz@set@pfx@jis}}
\def\pxcz@set@pfx@jis#1{%
@@ -887,18 +1005,6 @@
\ifx\pxcz@font\@empty
\else\ifx\pxcz@font\pxcz@noembed
\else
- \pxcz@inspect@font@tribe@a{?SourceHanSerif-}{.otf?}{sourcehan}%
- \pxcz@inspect@font@tribe@a{?SourceHanSans-}{.otf?}{sourcehan}%
- \pxcz@inspect@font@tribe@a{?:0:SourceHanSerif-}{.ttc?}{sourcehanC}%
- \pxcz@inspect@font@tribe@a{?:0:SourceHanSans-}{.ttc?}{sourcehanC}%
- \pxcz@inspect@font@tribe@a{?NotoSerifCJKjp-}{.otf?}{noto}%
- \pxcz@inspect@font@tribe@a{?NotoSansCJKjp-}{.otf?}{noto}%
- \pxcz@inspect@font@tribe@a{?:0:NotoSerifCJK-}{.ttc?}{notoC}%
- \pxcz@inspect@font@tribe@a{?:0:NotoSansCJK-}{.ttc?}{notoC}%
- \pxcz@inspect@font@tribe@a{?yumin}{.ttf?}{yumin}%
- \pxcz@inspect@font@tribe@a{?YUMIN}{.TTF?}{yuminU}%
- \pxcz@inspect@font@tribe@a{:YuGoth}{.ttc?}{yugoth}%
- \pxcz@inspect@font@tribe@a{:YUGOTH}{.TTC?}{yugoth}%
\pxcz@inspect@font@tribe@a{:moga}{.ttc?}{mogamobo}%
\pxcz@inspect@font@tribe@a{:mobo}{.ttc?}{mogamobo}%
\fi\fi
@@ -919,7 +1025,7 @@
%% \pxcz@switch@font@for{<feature>}
% Modifies \pxcz@font, assuming \pxcz@font@tribe is properly set.
\pxcz@onlypreamble@def\pxcz@switch@font@for#1{%
- \pxcz@csletcs{pxcz@tmpb}{pxcz@switch@font@@\pxcz@font@tribe @#1}%
+ \pxcz@letcs\pxcz@tmpb{pxcz@switch@font@@\pxcz@font@tribe @#1}%
\ifx\pxcz@tmpb\relax\else
%\typeout{#1:\pxcz@font-->\expandafter\pxcz@tmpb\pxcz@font}%
\edef\pxcz@font{\expandafter\pxcz@tmpb\pxcz@font}%
@@ -1085,11 +1191,9 @@
\fi\fi
% output it
\ifx\pxcz@font\pxcz@kill@mapping
- \xdef\pxcz@spec{\pxcz@spec\noexpand\special{%
- \pxcz@mapline{-#2}}}%
+ \pxcz@add@mapline{-#2}%
\else\ifx\pxcz@font\@empty\else
- \xdef\pxcz@spec{\pxcz@spec\noexpand\special{%
- \pxcz@mapline{#2 \pxcz@cmap\space\pxcz@font\pxcz@mopts}}}%
+ \pxcz@add@mapline{#2 \pxcz@cmap\space\pxcz@font\pxcz@mopts}%
\fi\fi}
%% \pxcz@do@file@preset
@@ -1116,13 +1220,7 @@
\ifpxcz@uptex \pxcz@use@mapfile@b{uptex-#1-#2}\fi
\ifpxcz@otf \pxcz@use@mapfile@b{otf-#1-#2}\fi}
\pxcz@onlypreamble@def\pxcz@use@mapfile@b#1{%
- \pxcz@addtospec@alt\pxcz@mapfile{#1.map}}
-
-%% \pxcz@addtospec@alt
-\def\pxcz@addtospec@alt#1#2{%
- \xdef\pxcz@spec{\pxcz@spec\noexpand\special{#1{#2}}}}
-\def\pxcz@mapfile#1{pdf:mapfile #1}
-\def\pxcz@mapline#1{pdf:mapline #1}
+ \pxcz@add@mapfile{#1.map}}
%--------------------------------------- map entry definitions
@@ -1435,15 +1533,15 @@
\else
\ifnum\pxcz@unicode<\pxcz@unicode@@simple\else
\pxcz@diruni@oktrue % 'unicode=UTF' does not need otf
- \AtBeginDocument{% loading otf later causes inconsistency
+ \g@addto@macro\pxcz@first@doc@hook{%
+ % loading otf later causes inconsistency
\@ifpackageloaded{otf}{\pxcz@diruni@okfalse}{}}%
\fi
\fi
\fi
%%<*> \diruni
-\newcommand*{\diruni}{\pxcz@diruni}
-\DeclareRobustCommand*{\pxcz@diruni}{%
+\pxcz@Z\newrobustcmd*\diruni{%
\not@math@alphabet\diruni\relax
\ifx\cy@encoding\pxcz@JYn % if in standard Japanese encoding
\expandafter\let\csname UTF \endcsname\pxcz@du@UTF
@@ -1452,10 +1550,9 @@
}
%%<*> \textdiruni{<text>}
-\@ifdefinable{\textdiruni}{%
- \DeclareRobustCommand*{\textdiruni}[1]{%
- \relax\ifmmode\hbox\fi{\pxcz@diruni#1}%
- }}
+\pxcz@Z\newrobustcmd*\textdiruni[1]{%
+ \relax\ifmmode\hbox\fi{\diruni#1}%
+}
%% \pxcz@du@UTF
\def\pxcz@du@UTF#1{%
@@ -1476,7 +1573,7 @@
\ifcase\pxcz@unicode with 'unicode' option%
\else pxchfon after 'otf' package%
\fi .\MessageBreak\@ehc}}
-\AtBeginDocument{%
+\g@addto@macro\pxcz@first@doc@hook{%
\ifpxcz@diruni@ok \let\pxcz@err@diruni\relax
\else \let\pxcz@diruni\pxcz@err@diruni
\fi}
@@ -1526,7 +1623,7 @@
\fi
\fi\fi\fi
-\AtBeginDocument{%
+\g@addto@macro\pxcz@first@doc@hook{%
\def\pxcz@do#1#2#3{%
\DeclareFontShape{#1}{#2}{#3}{diruni}{<->ssub*#2/#3/n}{}}%
\@for\pxcz@tmpa:={\rmdefault,\sfdefault,\ttdefault}\do{%
@@ -1547,25 +1644,25 @@
\fi %---- </diruni-ok>
%--------------------------------------- 'glyphid'
+\ifnum\pxcz@glyphid>0 %---- <*glyphid>
-%% \pxcz@geta
-\chardef\pxcz@geta=\jis"222E\relax
-
-\ifnum\pxcz@glyphid=2 %---- <*glyphid>
+\ifnum\pxcz@glyphid=2 %---- <*glyphid-ok>
%% check integrity
\ifpxcz@otf@loaded\else
- \AtBeginDocument{% loading otf later causes inconsistency
+ \g@addto@macro\pxcz@first@doc@hook{%
+ % loading otf later causes inconsistency
\@ifpackageloaded{otf}{%
\PackageWarningNoLine\pxcz@pkgname
{The option 'glyphid' will not work. You must\MessageBreak
load pxchfon after 'otf' package}%
- \def\gid{\pxcz@gid@fb}}{}}
+ \def\pxcz@gid{\pxcz@gid@fb}%
+ \chardef\pxcz@glyphid=1
+ }{}}
\fi
-%%<*> \gid{<number>}
-\newcommand*{\gid}{\pxcz@gid}
-\DeclareRobustCommand*{\pxcz@gid}[1]{%
+%% \pxcz@gid{<number>}
+\def\pxcz@gid#1{%
\begingroup
\kanjishape{dirgid}\selectfont
\kchar#1\pxcz@gid@jfm@sync
@@ -1608,108 +1705,38 @@
\pxcz@dg@decl@shape{gt}{bx}f{ssub*gt/m/dirgid}{}%
\fi\fi\fi
-\fi %---- </glyphid>
-
-\ifnum\pxcz@glyphid>0
- %% \pxcz@gid@fb
- \providecommand*{\gid}{\pxcz@gid@fb}
- \DeclareRobustCommand*{\pxcz@gid@fb}[1]{%
- \begingroup \kchar\pxcz@geta \endgroup}
-
- % redefinition in PDF-strings
- \begingroup \kansujichar1=\pxcz@geta \kcatcode\pxcz@geta=18
- \xdef\pxcz@hy@gid#1{\kansuji1}
- \endgroup
- \pxcz@hy@disable@commands{%
- \let\gid\pxcz@hy@gid}
-\fi
-
-%--------------------------------------- 'alphabet' option
-
-%% check for textcomp
-\newif\ifpxcz@textcomp
-\ifx\DeclareEncodingSubset\@undefined\else
- \expandafter\ifx\csname T@TS1\endcsname\relax\else
- \pxcz@textcomptrue
-\fi\fi
+\fi %---- </glyphid-ok>
-%% \pxcz@afont@enc@list
-\def\pxcz@afont@enc@list{OT1,T1}
-\ifpxcz@textcomp \g@addto@macro\pxcz@afont@enc@list{,TS1}\fi
-%% \pxcz@decl@family{<fam>}
-\pxcz@onlypreamble@def\pxcz@decl@family#1{%
- \ifpxcz@textcomp \DeclareEncodingSubset{TS1}{#1}{3}\fi
- \@for\pxcz@x:=\pxcz@afont@enc@list\do{%
- \DeclareFontFamily{\pxcz@x}{#1}{}}}
-%% \pxcz@decl@shape{<fam>}{<ser>}<sw>{<font>}
-\pxcz@onlypreamble@def\pxcz@decl@shape#1#2#3#4{%
- \if s#3%
- \@for\pxcz@x:=\pxcz@afont@enc@list\do{%
- \DeclareFontShape{\pxcz@x}{#1}{#2}{n}{<->ssub*#4}{}}%
+%%<*> \gid{<number>}
+\pxcz@Z\newrobustcmd*\gid{\pxcz@gid}
+
+%% \pxcz@gid@fb
+\def\pxcz@gid@fb#1{%
+ \begingroup
+ \pxcz@geta
+ \endgroup}
+\providecommand*\pxcz@gid{\pxcz@gid@fb}
+
+% redefinition in PDF-strings
+\def\pxcz@hy@gid#1{%
+ \ifx\pxjahyperBadCharacter\@undefined
+ \pxcz@geta
\else
- \DeclareFontShape{OT1}{#1}{#2}{n}{<->#4-l5j}{}%
- \DeclareFontShape {T1}{#1}{#2}{n}{<->#4-t1}{}%
- \ifpxcz@textcomp
- \DeclareFontShape{TS1}{#1}{#2}{n}{<->#4-ts1}{}%
- \fi
+ \pxjahyperBadCharacter{GID+#1}%
\fi
- \@for\pxcz@x:=\pxcz@afont@enc@list\do{%
- \DeclareFontShape{\pxcz@x}{#1}{#2}{it}{<->ssub*#1/#2/n}{}%
- \DeclareFontShape{\pxcz@x}{#1}{#2}{sl}{<->ssub*#1/#2/n}{}}}
-
-\ifpxcz@alphafont %---- <*alphabet>
-\ifpxcz@otf@deluxe %---- <*otfdx> : otf with deluxe option
- % define families cfjar & cfjas
-\pxcz@decl@family{cfjar}%
-\pxcz@decl@shape{cfjar}{l}n{cfjar-l}%
-\pxcz@decl@shape{cfjar}{m}n{cfjar-r}%
-\pxcz@decl@shape{cfjar}{bx}n{cfjar-b}%
-\pxcz@decl@family{cfjas}%
-\pxcz@decl@shape{cfjas}{m}n{cfjas-r}%
-\pxcz@decl@shape{cfjas}{bx}n{cfjas-b}%
-\pxcz@decl@shape{cfjas}{eb}n{cfjas-x}%
-\pxcz@decl@family{cfjam}%
-\pxcz@decl@shape{cfjam}{m}n{cfjam-r}%
- % redefine \ltseries & \ebseries so they affect roman font
-\let\ltseries\relax \let\ebseries\relax
-\DeclareRobustCommand\ltseries{%
- \not@math@alphabet\ltseries\relax
- \fontseries\ltdefault\selectfont}%
-\DeclareRobustCommand\ebseries{%
- \not@math@alphabet\ebseries\relax
- \fontseries\ebdefault\selectfont}%
-\else %---- <*!otfdx>
-\pxcz@decl@family{cfjar}%
-\pxcz@decl@shape{cfjar}{m}n{cfjar-r}%
-\pxcz@decl@shape{cfjar}{bx}s{cfjas/m/n}%
-\pxcz@decl@family{cfjas}%
-\pxcz@decl@shape{cfjas}{m}n{cfjas-r}%
-\pxcz@decl@shape{cfjas}{bx}s{cfjas/m/n}%
-\pxcz@onlypreamble@def\pxcz@err@dxotf#1{%
- \PackageError\pxcz@pkgname
- {Loaded before '#1' with 'deluxe'}%
- {This package must be loaded after '#1' with 'deluxe' option
- when using both.}}
-\g@addto@macro\pxcz@check@extra{%
- \expandafter\let\expandafter\pxcz@x\csname pxcz@FS/mnr\endcsname
- \ifx\pxcz@x\@empty\else
- % if mnr is replaced but gtr is not then ...
- \expandafter\ifx\csname pxcz@FS/gtr\endcsname\@empty
- {\expandafter\let\csname pxcz@FS/gtr\endcsname\pxcz@x
- \pxcz@Entry{gtr}{r-cfjas-r-@PXcjk0@}{unicode}{HWid}}%
- \fi\fi
- \@ifpackagewith{otf}{deluxe}{\pxcz@err@dxotf{otf}}{}%
}
-\fi %---- </otfdx>
-\fi %---- </alphabet>
+ \pxcz@hy@disable@commands{%
+ \let\gid\pxcz@hy@gid}
-%--------------------------------------- begin-document hook
+\fi %---- </glyphid>
+%--------------------------------------- 'pxchfon0' submodule
+\ifpxcz@lite@mode\else
-%% variables
-\let\pxcz@afont@enc\relax
+%% load the submodule
+\input{pxchfon0.def}
-%% \pxcz@mgfamily@hook
-\def\pxcz@mgfamily@hook{\romanfamily{cfjam}}
+\fi
+%--------------------------------------- begin-document hook
%% \pxcz@set@page@hook{<text>}
\ifpxcz@old@hook@system %----
@@ -1740,37 +1767,14 @@
\expandafter\ifx\csname pxcz@FS/\pxcz@x\endcsname\@empty
\pxcz@okfalse \fi}}
-%% \pxcz@decl@relfont{<fam>}{<afam>}{<ser>,...}
-\pxcz@onlypreamble@def\pxcz@decl@relfont#1#2#3{%
- \@for\pxcz@x:={#3}\do{%
- \expandafter\ifx\csname\k@encoding/#1/\pxcz@x/n\endcsname\relax\else
- \edef\pxcz@tmpa{\noexpand\DeclareRelationFont
- {\k@encoding}{#1}{\pxcz@x}{}{\pxcz@afont@enc}{#2}{\pxcz@x}{}%
- }\pxcz@tmpa
- \fi}%
- \PackageInfo\pxcz@pkgname
- {Relation font set for \k@encoding/#1}}
-
-%% \pxcz@check@afont@enc
-\pxcz@onlypreamble@def\pxcz@check@afont@enc{%
- \pxcz@oktrue % OT1 is always okay
- \expandafter\ifx\csname\pxcz@afont@enc+cfjar\endcsname\relax
- \pxcz@okfalse \fi
- % if not okay, use OT1 instead
- \ifpxcz@ok\else \def\pxcz@afont@enc{OT1}\fi}
-
-%% \pxcz@set@bfdefault@to@bx{<doc-ser>}
-\pxcz@onlypreamble@let\pxcz@set@bfdefault@to@bx\@gobble
-\ifx\DeclareFontSeriesDefault\@undefined\else
- \def\pxcz@set@bfdefault@to@bx#1{%
- \DeclareFontSeriesDefault[#1]{bf}{bx}}
-\fi
-
%% the begin-document hook
\pxcz@onlypreamble@def\pxcz@doc@hook{%
\ifpxcz@otf
\@ifpackageloaded{otf}{\pxcz@otftrue}{\pxcz@otffalse}%
\@ifpackageloaded{utf}{\pxcz@utftrue}{\pxcz@utffalse}%
+ \ifx\pxchfonNoCheckMultiweight\@undefined\else
+ \pxcz@otftrue
+ \fi
\fi
\pxcz@user@hook
\let\pxcz@use@do\pxcz@use@mapfile
@@ -1782,44 +1786,11 @@
\pxcz@inspect@flavor@all
\fi
\if t\pxcz@alphabet % 'alphabet'
- \pxcz@check@alldefined{mnl,mnr,mnb}\ifpxcz@ok
- \renewcommand\rmdefault{cfjar}%
- \pxcz@set@bfdefault@to@bx{rm}%
- \fi
- \pxcz@check@alldefined{gtr,gtb,gtx}\ifpxcz@ok
- \renewcommand\sfdefault{cfjas}%
- \pxcz@set@bfdefault@to@bx{sf}%
- \fi
- % attach hook to \mgfamily if mgr font is defined
- \pxcz@check@alldefined{mgr}\ifpxcz@ok\ifpxcz@otf@deluxe
- \begingroup
- \def\pxcz@x##1{\toks@\expandafter{##1}%
- \xdef##1{\noexpand\pxcz@mgfamily@hook\the\toks@}%
- }\expandafter\pxcz@x\csname mgfamily \endcsname
- \endgroup
- \fi\fi
- % decide alphabet font encoding
- \edef\pxcz@afont@enc{\encodingdefault}%
- \pxcz@check@afont@enc\ifpxcz@ok\else
- \PackageWarningNoLine\pxcz@pkgname
- {Default encoding is changed to 'OT1' because%
- \MessageBreak'alphabet' option is in effect}%
- \renewcommand\encodingdefault{OT1}%
- \fi
- \normalfont
+ \pxcz@setup@alphabet
\pxcz@addtospec{ALPHA}%
\fi
\if r\pxcz@alphabet % 'relfont'
- \edef\pxcz@afont@enc{\encodingdefault}%
- \pxcz@check@afont@enc
- \pxcz@check@alldefined{mnl,mnr,mnb}%
- \ifpxcz@ok \pxcz@decl@relfont\mcdefault{cfjar}{m,bx,l}\fi
- \pxcz@check@alldefined{gtr,gtb,gtx}%
- \ifpxcz@ok \pxcz@decl@relfont\gtdefault{cfjas}{m,bx,eb}\fi
- \pxcz@check@alldefined{mgr}%
- \ifpxcz@ok\ifpxcz@otf@deluxe
- \pxcz@decl@relfont\mgdefault{cfjam}{m}%
- \fi\fi
+ \pxcz@setup@relfont
\pxcz@addtospec{ALPHA}%
\fi
\ifpxcz@uptex\else
@@ -1843,24 +1814,34 @@
\ifpxcz@utf \pxcz@addtospec{UTF}%
\fi
% warn if some weights are not substituted, and if necessaty
- \ifpxcz@warn@unless@all@defined
- \ifpxcz@otf@deluxe
+ \ifx\pxcz@warn@unless@all@defined@for\@empty\else
+ \if d\pxcz@otf@weight
\pxcz@check@alldefined{mnl,mnr,mnb,gtr,gtb,gtx,mgr}%
\else \pxcz@check@alldefined{mnr,mnb,gtr,gtb}%
\fi
\ifpxcz@ok\else
+ \def\do##1{\MessageBreak - ##1}%
\PackageWarningNoLine\pxcz@pkgname
- {Some font weights are not substituted.\MessageBreak
- So some features of pxchfon might not work\MessageBreak
- properly when applied to such weights}%
+ {There are some weights that font files are\MessageBreak
+ not specified for. It is possibly okay,\MessageBreak
+ but some features of pxchfon (listed below)\MessageBreak
+ might not work properly when applied to\MessageBreak
+ such weights.%
+ \pxcz@warn@unless@all@defined@for
+ \expandafter\@gobble}% gobble the period
\fi
\fi
% warn if some weights are not embedded, and if necessaty
- \ifpxcz@warn@unless@all@embedded \ifpxcz@noembed@used
+ \ifx\pxcz@warn@unless@all@embedded@for\@empty\else
+ \ifpxcz@noembed@used
+ \def\do##1{\MessageBreak - ##1}%
\PackageWarningNoLine\pxcz@pkgname
{Some font weights have no-embed setting.\MessageBreak
- So some features of pxchfon might not work\MessageBreak
- properly when applied to such weights}%
+ So some features of pxchfon (listed below)\MessageBreak
+ might not work properly when applied to\MessageBreak
+ such weights.%
+ \pxcz@warn@unless@all@embedded@for
+ \expandafter\@gobble}% gobble the period
\fi\fi
%
\pxcz@check@extra
@@ -1868,7 +1849,7 @@
\ifpxcz@enabled
\pxcz@set@page@hook{\pxcz@spec}%
\else\ifx\pxcz@spec\@empty\else
- \PackageWarningNoLine\pxcz@pkgname
+ \pxcz@PackageNoteNoLine\pxcz@pkgname
{Font mapping is disabled, since the driver in use\MessageBreak
is not dvipdfmx}%
\fi\fi
@@ -2090,7 +2071,7 @@
\ifpxcz@autojfmsync %---- <*autojfmsync>
% Makes \git/\CID/\UTF do automatically jfmsync
\let\pxcz@gid@jfm@sync\pxcz@jfm@sync
-\AtBeginDocument{%
+\g@addto@macro\pxcz@first@doc@hook{%
\ifx\put@character\@undefined\else
\g@addto@macro\put@character{\pxcz@jfm@sync}%
\fi
diff --git a/Master/texmf-dist/tex/platex/pxchfon/pxchfon0.def b/Master/texmf-dist/tex/platex/pxchfon/pxchfon0.def
index 1be68f098f3..1a78b75eb9d 100644
--- a/Master/texmf-dist/tex/platex/pxchfon/pxchfon0.def
+++ b/Master/texmf-dist/tex/platex/pxchfon/pxchfon0.def
@@ -1,4 +1,235 @@
-% pxchfon0.def
-% This file does nothing; it exists for check for full installation.
-\relax
-% EOF
+%%
+%% This is file 'pxchfon0.def'.
+%%
+%% Copyright (c) 2009-2024 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
+
+%% package declaration
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesFile{pxchfon0.def}[2024/08/22 v2.2]
+\providecommand{\bxDebug}[1]{}
+
+%--------------------------------------- general
+
+%% variables
+\newif\ifpxcz@textcomp
+
+%--------------------------------------- 'alphabet' option
+\ifpxcz@alphafont
+
+%% check for textcomp
+\ifx\DeclareEncodingSubset\@undefined\else
+ \expandafter\ifx\csname T@TS1\endcsname\relax\else
+ \pxcz@textcomptrue
+\fi\fi
+
+%% \pxcz@afont@enc@list
+\def\pxcz@afont@enc@list{OT1,T1}
+\ifpxcz@textcomp \g@addto@macro\pxcz@afont@enc@list{,TS1}\fi
+%% \pxcz@decl@family{<fam>}
+\pxcz@onlypreamble@def\pxcz@decl@family#1{%
+ \ifpxcz@textcomp \DeclareEncodingSubset{TS1}{#1}{3}\fi
+ \@for\pxcz@x:=\pxcz@afont@enc@list\do{%
+ \DeclareFontFamily{\pxcz@x}{#1}{}}}
+%% \pxcz@decl@shape{<fam>}{<ser>}<sw>{<font>}
+\pxcz@onlypreamble@def\pxcz@decl@shape#1#2#3#4{%
+ \if s#3%
+ \@for\pxcz@x:=\pxcz@afont@enc@list\do{%
+ \DeclareFontShape{\pxcz@x}{#1}{#2}{n}{<->ssub*#4}{}}%
+ \else
+ \DeclareFontShape{OT1}{#1}{#2}{n}{<->#4-l5j}{}%
+ \DeclareFontShape {T1}{#1}{#2}{n}{<->#4-t1}{}%
+ \ifpxcz@textcomp
+ \DeclareFontShape{TS1}{#1}{#2}{n}{<->#4-ts1}{}%
+ \fi
+ \fi
+ \@for\pxcz@x:=\pxcz@afont@enc@list\do{%
+ \DeclareFontShape{\pxcz@x}{#1}{#2}{it}{<->ssub*#1/#2/n}{}%
+ \DeclareFontShape{\pxcz@x}{#1}{#2}{sl}{<->ssub*#1/#2/n}{}}}
+
+\if d\pxcz@otf@weight %---- <*otfdx> : otf with deluxe option
+ % define families cfjar & cfjas
+\pxcz@decl@family{cfjar}%
+\pxcz@decl@shape{cfjar}{l}n{cfjar-l}%
+\pxcz@decl@shape{cfjar}{m}n{cfjar-r}%
+\pxcz@decl@shape{cfjar}{bx}n{cfjar-b}%
+\pxcz@decl@family{cfjas}%
+\pxcz@decl@shape{cfjas}{m}n{cfjas-r}%
+\pxcz@decl@shape{cfjas}{bx}n{cfjas-b}%
+\pxcz@decl@shape{cfjas}{eb}n{cfjas-x}%
+\pxcz@decl@family{cfjam}%
+\pxcz@decl@shape{cfjam}{m}n{cfjam-r}%
+ % redefine \ltseries & \ebseries so they affect roman font
+\let\ltseries\relax \let\ebseries\relax
+\DeclareRobustCommand\ltseries{%
+ \not@math@alphabet\ltseries\relax
+ \fontseries\ltdefault\selectfont}%
+\DeclareRobustCommand\ebseries{%
+ \not@math@alphabet\ebseries\relax
+ \fontseries\ebdefault\selectfont}%
+\else %---- <*!otfdx>
+\pxcz@decl@family{cfjar}%
+\pxcz@decl@shape{cfjar}{m}n{cfjar-r}%
+\pxcz@decl@shape{cfjar}{bx}s{cfjas/m/n}%
+\pxcz@decl@family{cfjas}%
+\pxcz@decl@shape{cfjas}{m}n{cfjas-r}%
+\pxcz@decl@shape{cfjas}{bx}s{cfjas/m/n}%
+\pxcz@onlypreamble@def\pxcz@err@dxotf#1{%
+ \PackageError\pxcz@pkgname
+ {Loaded before '#1' with 'deluxe'}%
+ {This package must be loaded after '#1' with 'deluxe' option
+ when using both.}}
+\g@addto@macro\pxcz@check@extra{%
+ \expandafter\let\expandafter\pxcz@x\csname pxcz@FS/mnr\endcsname
+ \ifx\pxcz@x\@empty\else
+ % if mnr is replaced but gtr is not then ...
+ \expandafter\ifx\csname pxcz@FS/gtr\endcsname\@empty
+ {\expandafter\let\csname pxcz@FS/gtr\endcsname\pxcz@x
+ \pxcz@Entry{gtr}{r-cfjas-r-@PXcjk0@}{unicode}{HWid}}%
+ \fi\fi
+ \@ifpackagewith{otf}{deluxe}{\pxcz@err@dxotf{otf}}{}%
+}
+\fi %---- </otfdx>
+
+\fi
+%--------------------------------------- begin-document hook
+\ifpxcz@alphafont
+
+%% variables
+\let\pxcz@afont@enc\relax
+
+%% \pxcz@mgfamily@hook
+\def\pxcz@mgfamily@hook{\romanfamily{cfjam}}
+
+%% \pxcz@decl@relfont{<fam>}{<afam>}{<ser>,...}
+\pxcz@onlypreamble@def\pxcz@decl@relfont#1#2#3{%
+ \@for\pxcz@x:={#3}\do{%
+ \expandafter\ifx\csname\k@encoding/#1/\pxcz@x/n\endcsname\relax\else
+ \edef\pxcz@tmpa{\noexpand\DeclareRelationFont
+ {\k@encoding}{#1}{\pxcz@x}{}{\pxcz@afont@enc}{#2}{\pxcz@x}{}%
+ }\pxcz@tmpa
+ \fi}%
+ \PackageInfo\pxcz@pkgname
+ {Relation font set for \k@encoding/#1}}
+
+%% \pxcz@check@afont@enc
+\pxcz@onlypreamble@def\pxcz@check@afont@enc{%
+ \pxcz@oktrue % OT1 is always okay
+ \expandafter\ifx\csname\pxcz@afont@enc+cfjar\endcsname\relax
+ \pxcz@okfalse \fi
+ % if not okay, use OT1 instead
+ \ifpxcz@ok\else \def\pxcz@afont@enc{OT1}\fi}
+
+%% \pxcz@set@bfdefault@to@bx{<doc-ser>}
+\pxcz@onlypreamble@let\pxcz@set@bfdefault@to@bx\@gobble
+\ifx\DeclareFontSeriesDefault\@undefined\else
+ \def\pxcz@set@bfdefault@to@bx#1{%
+ \DeclareFontSeriesDefault[#1]{bf}{bx}}
+\fi
+
+%% \pxcz@setup@alphabet
+\pxcz@onlypreamble@def\pxcz@setup@alphabet{%
+ \pxcz@check@alldefined{mnl,mnr,mnb}\ifpxcz@ok
+ \renewcommand\rmdefault{cfjar}%
+ \pxcz@set@bfdefault@to@bx{rm}%
+ \fi
+ \pxcz@check@alldefined{gtr,gtb,gtx}\ifpxcz@ok
+ \renewcommand\sfdefault{cfjas}%
+ \pxcz@set@bfdefault@to@bx{sf}%
+ \fi
+ % attach hook to \mgfamily if mgr font is defined
+ \pxcz@check@alldefined{mgr}\ifpxcz@ok\if d\pxcz@otf@weight
+ \begingroup
+ \def\pxcz@x##1{\toks@\expandafter{##1}%
+ \xdef##1{\noexpand\pxcz@mgfamily@hook\the\toks@}%
+ }\expandafter\pxcz@x\csname mgfamily \endcsname
+ \endgroup
+ \fi\fi
+ % decide alphabet font encoding
+ \edef\pxcz@afont@enc{\encodingdefault}%
+ \pxcz@check@afont@enc\ifpxcz@ok\else
+ \PackageWarningNoLine\pxcz@pkgname
+ {Default encoding is changed to 'OT1' because%
+ \MessageBreak'alphabet' option is in effect}%
+ \renewcommand\encodingdefault{OT1}%
+ \fi
+ \normalfont
+}
+
+%% \pxcz@setup@relfont
+\pxcz@onlypreamble@def\pxcz@setup@relfont{%
+ \edef\pxcz@afont@enc{\encodingdefault}%
+ \pxcz@check@afont@enc
+ \pxcz@check@alldefined{mnl,mnr,mnb}%
+ \ifpxcz@ok \pxcz@decl@relfont\mcdefault{cfjar}{m,bx,l}\fi
+ \pxcz@check@alldefined{gtr,gtb,gtx}%
+ \ifpxcz@ok \pxcz@decl@relfont\gtdefault{cfjas}{m,bx,eb}\fi
+ \pxcz@check@alldefined{mgr}%
+ \ifpxcz@ok\if d\pxcz@otf@weight
+ \pxcz@decl@relfont\mgdefault{cfjam}{m}%
+ \fi\fi
+}
+
+\fi
+%--------------------------------------- 'usefontmaplines'
+
+%%<*> \begin{usefontmaplines}
+% <map-line>
+% ...
+% \end{usefontmaplines}
+\@onlypreamble\usefontmaplines
+\newenvironment{usefontmaplines}{%
+ \catcode`\{=12 \catcode`\}=12 \catcode`\&=12 \catcode`\#=12
+ \catcode`\^=12 \catcode`\~=12 \catcode`\%=12 \catcode13=12
+ \catcode32=10 \endlinechar=13
+ \let\pxcz@tmp@end\end \let\begin\relax \let\end\relax
+ \let\par\@empty \let\ \space \def\pxcz@tmp@end@{\end}%
+ \pxcz@maplines@a
+}{}
+\@onlypreamble\pxcz@maplines@a
+\long\def\pxcz@maplines@a#1{%
+ \def\pxcz@tmpa{#1}\pxcz@cond\ifx\pxcz@tmpa\pxcz@tmp@end@\fi{%
+ \catcode`\{=1 \catcode`\}=2
+ \pxcz@tmp@end
+ }{%else
+ \pxcz@maplines@b#1%
+ }%
+}
+\@onlypreamble\pxcz@maplines@b
+\begingroup \catcode13=12
+\long\gdef\pxcz@maplines@b#1^^M{%
+ \pxcz@maplines@line#1\pxcz@mk%
+ \pxcz@maplines@a%
+}%
+\endgroup
+\@onlypreamble\pxcz@maplines@line
+\long\def\pxcz@maplines@line#1\pxcz@mk{%
+ \edef\pxcz@tmpa{#1}%
+ \pxcz@split{\@percentchar}{\pxcz@tmpa}%
+ \ifx\pxcz@pre\relax\else \let\pxcz@tmpa\pxcz@pre \fi
+ \pxcz@split{\end}{\pxcz@tmpa}%
+ \ifx\pxcz@pre\relax
+ \pxcz@split{\space\pxcz@mk}{\pxcz@tmpa\pxcz@mk}%
+ \ifx\pxcz@pre\relax\else \let\pxcz@tmpa\pxcz@pre \fi
+ \ifx\pxcz@tmpa\@empty\else
+ \expandafter\usefontmapline\expandafter{\pxcz@tmpa}%
+ \fi
+ \else % '\end' found inside the line
+ \pxcz@maplines@err
+ \fi
+}
+\pxcz@onlypreamble@def\pxcz@maplines@err{%
+ \PackageError\pxcz@pkgname
+ {'\string\end{usefontmaplines}' must be put at the top\MessageBreak
+ of a line}%
+ {\@ehc}%
+ \def\pxcz@maplines@a{\pxcz@tmp@end{usefontmaplines}}%
+}
+
+%--------------------------------------- all done
+\endinput
+%% EOF
diff --git a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-ajm.def b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-ajm.def
index 331dcd32f22..803a78c2cd5 100644
--- a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-ajm.def
+++ b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-ajm.def
@@ -1,7 +1,7 @@
%%
%% This is file 'pxjahyper-ajm.def'.
%%
-%% Copyright (c) 2012-2023 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2012-2024 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -11,7 +11,7 @@
%% package declaration
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesFile{pxjahyper-ajm.def}[2023/03/01 v1.3]
+\ProvidesFile{pxjahyper-ajm.def}[2024/08/25 v1.5]
%% avoid multiple loading
\csname pxjahyperajmLoaded\endcsname
@@ -104,6 +104,12 @@
\fi
}
+%% \pxhy@cc@anchor@string{<macro-name>}{<number>}
+% Expands to "anchor-string form" of a CC macro.
+\def\pxhy@cc@anchor@string#1#2{%
+ \pxjahyperBadCharacter{aj#1+\number#2}%
+}
+
%--------------------------------------- \pdfstringdef hook
\pdfstringdefDisableCommands{%
@@ -209,6 +215,45 @@
\let\pxhy@two@digits\relax
\let\pxhy@knumeral\relax
+%--------------------------------------- for counter commands
+
+%% \pxhy@cc@macro@name@list
+\let\pxhy@cc@macro@name@list\@empty
+
+%% \pxhy@DeclareCCMacro{<macro-name>}...{<body>}
+\def\pxhy@DeclareCCMacro#1{%
+ \eappto\pxhy@cc@macro@name@list{`\do{#1}}%
+ \pxhy@DeclareMacro{#1}%
+}
+
+%% \pxhy@DeclareCCMacroVar{<macro-name>}...{<body-n>}{<body-v>}
+% Variant of \pxhy@DeclareMacro, where the *-variant of the macro
+% is declared. The parameter '...' will be shared with both forms.
+\def\pxhy@DeclareCCMacroVar#1{%
+ \eappto\pxhy@cc@macro@name@list{`\do{#1@N}`\do{#1@V}}%
+ \pxhy@DeclareMacroVar{#1}%
+}
+
+%% \pxhy@finish@declare@cc@macros
+% Must be invoked after all CC macros are defined.
+\def\pxhy@finish@declare@cc@macros{%
+ \let\do\pxhy@amend@cc@macro
+ \pxhy@cc@macro@name@list
+ \let\pxhy@cc@macro@name@list\@empty
+}
+
+%% \pxhy@amend@cc@macro{<macro-name>}
+\def\pxhy@amend@cc@macro#1{%
+ \expandafter\pxhy@amend@cc@macro@a
+ \csname\pxhy@#1\expandafter\endcsname
+ \csname\pxhy@#1@A\expandafter\endcsname
+ \csname\pxhy@#1@D\endcsname{#1}%
+}
+\def\pxhy@amend@cc@macro@a#1#2#3#4{%
+ \gdef#2{\pxhy@cc@anchor@string{#4}}%
+ \global\let#3#1%
+ \gdef#1{\pxhy@if@in@anchor#2#3}%
+}
%--------------------------------------- the redefinitions
% A text command invoked in PDF-sttings must be "string-OK".
@@ -242,7 +287,7 @@
% used as fallback (e.g. \ajKuroMaru{21}→“㉑)”.
%%<!> \ajMaru[*]{<number>}
-\pxhy@DeclareMacroVar{Maru}#1{%N
+\pxhy@DeclareCCMacroVar{Maru}#1{%N
\pxhy@fallback{0}{51}{100}{%
\pxhy@rshift{0/8224,1/7554,21/8070,22/8080,32/10212,101}%
}{\pxhy@numeral{#1}}%
@@ -252,7 +297,7 @@
}{`\ajMaru{#1}}%
}
%%<!> \ajKuroMaru[*]{<number>}
-\pxhy@DeclareMacroVar{KuroMaru}#1{%N
+\pxhy@DeclareCCMacroVar{KuroMaru}#1{%N
\pxhy@fallback{0}{21}{100}{%
\pxhy@rshift{0/10503,1/8285,10/10504,101}%
}{`\ajMaru{#1}}%
@@ -262,7 +307,7 @@
}{`\ajKuroMaru{#1}}%
}
%%<!> \ajKaku[*]{<number>}
-\pxhy@DeclareMacroVar{Kaku}#1{%N
+\pxhy@DeclareCCMacroVar{Kaku}#1{%N
\pxhy@fallback{0}{0}{100}{%
\pxhy@twirange{10764}{10774}%
}{`\ajMaru{#1}}%
@@ -272,7 +317,7 @@
}{`\ajMaru{#1}}%
}
%%<!> \ajKuroKaku[*]{<number>}
-\pxhy@DeclareMacroVar{KuroKaku}#1{%N
+\pxhy@DeclareCCMacroVar{KuroKaku}#1{%N
\pxhy@fallback{0}{0}{100}{%
\pxhy@twirange{11037}{11047}%
}{`\ajMaru{#1}}%
@@ -282,7 +327,7 @@
}{`\ajMaru{#1}}%
}
%%<!> \ajMaruKaku[*]{<number>}
-\pxhy@DeclareMacroVar{MaruKaku}#1{%N
+\pxhy@DeclareCCMacroVar{MaruKaku}#1{%N
\pxhy@fallback{0}{0}{100}{%
\pxhy@twirange{11307}{11317}%
}{`\ajMaru{#1}}%
@@ -293,7 +338,7 @@
}{`\ajMaru{#1}}%
}
%%<!> \ajKuroMaruKaku[*]{<number>}
-\pxhy@DeclareMacroVar{KuroMaruKaku}#1{%N
+\pxhy@DeclareCCMacroVar{KuroMaruKaku}#1{%N
\pxhy@fallback{0}{0}{100}{%
\pxhy@twirange{11576}{11586}%
}{`\ajMaru{#1}}%
@@ -303,7 +348,7 @@
}{`\ajMaru{#1}}%
}
%%<!> \ajKakko[*]{<number>}
-\pxhy@DeclareMacroVar{Kakko}#1{%N
+\pxhy@DeclareCCMacroVar{Kakko}#1{%N
\pxhy@fallback{0}{21}{100}{%
\pxhy@rshift{0/8227,1/8070,21/9873,101}%
}{(\pxhy@numeral{#1})}%
@@ -313,7 +358,7 @@
}{`\ajKakko{#1}}%
}
%%<!> \ajRoman[*]{<number>}
-\pxhy@DeclareMacroVar{Roman}#1{%N
+\pxhy@DeclareCCMacroVar{Roman}#1{%N
\pxhy@fallback{1}{13}{15}{%
\pxhy@rshift{1/7574,11/8214,13/8282,16}%
}{`\@Roman{#1}}%
@@ -323,132 +368,132 @@
}{`\ifnum#1=\#{4}IIII`\else`\ajRoman{#1}`\fi}%
}
%%<!> \ajroman{<number>}
-\pxhy@DeclareMacro{roman}#1{%
+\pxhy@DeclareCCMacro{roman}#1{%
\pxhy@fallback{1}{13}{15}{%
\pxhy@rshift{1/8091,11/8287,16}%
}{`\@roman{#1}}%
}
%%<!> \ajPeriod{<number>}
-\pxhy@DeclareMacro{Period}#1{%
+\pxhy@DeclareCCMacro{Period}#1{%
\pxhy@fallback{0}{1}{11}{%
0.%
}{\pxhy@rshift{0/8061,10/20577,12}}%
}
%%<!> \ajKakkoYobi{<number>}
-\pxhy@DeclareMacro{KakkoYobi}#1{\pxhy@rshift{1/8196,10}}
+\pxhy@DeclareCCMacro{KakkoYobi}#1{\pxhy@rshift{1/8196,10}}
%%<!> \ajKakkoroman{<number>}
-\pxhy@DeclareMacro{Kakkoroman}#1{%
+\pxhy@DeclareCCMacro{Kakkoroman}#1{%
\pxhy@fallback{1}{1}{15}{%
\pxhy@rshift{1/9973,16}%
}{(`\ajroman{#1})}%
}
%%<!> \ajKakkoRoman{<number>}
-\pxhy@DeclareMacro{KakkoRoman}#1{%
+\pxhy@DeclareCCMacro{KakkoRoman}#1{%
\pxhy@fallback{1}{1}{15}{%
\pxhy@rshift{1/9988,16}%
}{(`\ajRoman{#1})}%
}
%%<!> \ajKakkoalph{<number>}
-\pxhy@DeclareMacro{Kakkoalph}#1{\pxhy@rshift{1/8111,27}}
+\pxhy@DeclareCCMacro{Kakkoalph}#1{\pxhy@rshift{1/8111,27}}
%%<!> \ajKakkoAlph{<number>}
-\pxhy@DeclareMacro{KakkoAlph}#1{\pxhy@rshift{1/10003,27}}
+\pxhy@DeclareCCMacro{KakkoAlph}#1{\pxhy@rshift{1/10003,27}}
%%<!> \ajKakkoHira{<number>}
-\pxhy@DeclareMacro{KakkoHira}#1{%
+\pxhy@DeclareCCMacro{KakkoHira}#1{%
\pxhy@fallback{1}{1}{48}{%
\pxhy@rshift{1/10029,49}%
}{(\pxhy@rshift{1/10029,49})}% with parens
}
%%<!> \ajKakkoKata{<number>}
-\pxhy@DeclareMacro{KakkoKata}#1{%
+\pxhy@DeclareCCMacro{KakkoKata}#1{%
\pxhy@fallback{1}{1}{48}{%
\pxhy@rshift{1/10077,49}%
}{(\pxhy@rshift{1/10077,49})}% with parens
}
%%<!> \ajKakkoKansuji{<number>}
-\pxhy@DeclareMacro{KakkoKansuji}#1{%
+\pxhy@DeclareCCMacro{KakkoKansuji}#1{%
\pxhy@fallback{1}{11}{20}{%
\pxhy@rshift{1/10125,21}%
}{(\pxhy@knumeral{#1})}%
}
%%<!> \ajMaruKansuji{<number>}
-\pxhy@DeclareMacro{MaruKansuji}#1{\pxhy@rshift{1/10460,11}}
+\pxhy@DeclareCCMacro{MaruKansuji}#1{\pxhy@rshift{1/10460,11}}
%%<!> \ajMarualph{<number>}
-\pxhy@DeclareMacro{Marualph}#1{\pxhy@rshift{1/10312,27}}
+\pxhy@DeclareCCMacro{Marualph}#1{\pxhy@rshift{1/10312,27}}
%%<!> \ajMaruAlph{<number>}
-\pxhy@DeclareMacro{MaruAlph}#1{\pxhy@rshift{1/10338,27}}
+\pxhy@DeclareCCMacro{MaruAlph}#1{\pxhy@rshift{1/10338,27}}
%%<!> \ajMaruHira{<number>}
-\pxhy@DeclareMacro{MaruHira}#1{\pxhy@rshift{1/10364,49}}
+\pxhy@DeclareCCMacro{MaruHira}#1{\pxhy@rshift{1/10364,49}}
%%<!> \ajMaruKata{<number>}
-\pxhy@DeclareMacro{MaruKata}#1{\pxhy@rshift{1/10412,49}}
+\pxhy@DeclareCCMacro{MaruKata}#1{\pxhy@rshift{1/10412,49}}
%%<!> \ajMaruYobi{<number>}
-\pxhy@DeclareMacro{MaruYobi}#1{%
+\pxhy@DeclareCCMacro{MaruYobi}#1{%
\pxhy@rshift{1/10470,8/10484,9/10478,10}%
}
%%<!> \ajKuroMarualph{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroMarualph}#1{`\ajMarualph{#1}}
+\pxhy@DeclareCCMacro{KuroMarualph}#1{`\ajMarualph{#1}}
%%<!> \ajKuroMaruAlph{<number>}
-\pxhy@DeclareMacro{KuroMaruAlph}#1{\pxhy@rshift{1/10630,27}}
+\pxhy@DeclareCCMacro{KuroMaruAlph}#1{\pxhy@rshift{1/10630,27}}
%%<!> \ajKuroMaruHira{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroMaruHira}#1{`\ajMaruHira{#1}}
+\pxhy@DeclareCCMacro{KuroMaruHira}#1{`\ajMaruHira{#1}}
%%<!> \ajKuroMaruKata{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroMaruKata}#1{`\ajMaruKata{#1}}
+\pxhy@DeclareCCMacro{KuroMaruKata}#1{`\ajMaruKata{#1}}
%%<!> \ajKuroMaruYobi{<number>} : Fallback.
% fallback to \ajKakuYobi, which is simpler.
-\pxhy@DeclareMacro{KuroMaruYobi}#1{`\ajKakuYobi{#1}}
+\pxhy@DeclareCCMacro{KuroMaruYobi}#1{`\ajKakuYobi{#1}}
%%<!> \ajKakualph{<number>} : Fallback.
-\pxhy@DeclareMacro{Kakualph}#1{`\ajMarualph{#1}}
+\pxhy@DeclareCCMacro{Kakualph}#1{`\ajMarualph{#1}}
%%<!> \ajKakuAlph{<number>}
-\pxhy@DeclareMacro{KakuAlph}#1{\pxhy@rshift{1/10900,27}}
+\pxhy@DeclareCCMacro{KakuAlph}#1{\pxhy@rshift{1/10900,27}}
%%<!> \ajKakuHira{<number>} : Fallback.
-\pxhy@DeclareMacro{KakuHira}#1{`\ajMaruHira{#1}}
+\pxhy@DeclareCCMacro{KakuHira}#1{`\ajMaruHira{#1}}
%%<!> \ajKakuKata{<number>} : Fallback.
-\pxhy@DeclareMacro{KakuKata}#1{`\ajMaruKata{#1}}
+\pxhy@DeclareCCMacro{KakuKata}#1{`\ajMaruKata{#1}}
%%<!> \ajKakuYobi{<number>}
-\pxhy@DeclareMacro{KakuYobi}#1{\pxhy@rshift{1/11022,8}}
+\pxhy@DeclareCCMacro{KakuYobi}#1{\pxhy@rshift{1/11022,8}}
%%<!> \ajKuroKakualph{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroKakualph}#1{`\ajMarualph{#1}}
+\pxhy@DeclareCCMacro{KuroKakualph}#1{`\ajMarualph{#1}}
%%<!> \ajKuroKakuAlph{<number>}
-\pxhy@DeclareMacro{KuroKakuAlph}#1{\pxhy@rshift{1/11173,27}}
+\pxhy@DeclareCCMacro{KuroKakuAlph}#1{\pxhy@rshift{1/11173,27}}
%%<!> \ajKuroKakuHira{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroKakuHira}#1{`\ajMaruHira{#1}}
+\pxhy@DeclareCCMacro{KuroKakuHira}#1{`\ajMaruHira{#1}}
%%<!> \ajKuroKakuKata{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroKakuKata}#1{`\ajMaruKata{#1}}
+\pxhy@DeclareCCMacro{KuroKakuKata}#1{`\ajMaruKata{#1}}
%%<!> \ajKuroKakuYobi{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroKakuYobi}#1{`\ajKakuYobi{#1}}
+\pxhy@DeclareCCMacro{KuroKakuYobi}#1{`\ajKakuYobi{#1}}
%%<!> \ajMaruKakualph{<number>} : Fallback.
-\pxhy@DeclareMacro{MaruKakualph}#1{`\ajMarualph{#1}}
+\pxhy@DeclareCCMacro{MaruKakualph}#1{`\ajMarualph{#1}}
%%<!> \ajMaruKakuAlph{<number>}
-\pxhy@DeclareMacro{MaruKakuAlph}#1{\pxhy@rshift{1/11443,27}}
+\pxhy@DeclareCCMacro{MaruKakuAlph}#1{\pxhy@rshift{1/11443,27}}
%%<!> \ajMaruKakuHira{<number>} : Fallback.
-\pxhy@DeclareMacro{MaruKakuHira}#1{`\ajMaruHira{#1}}
+\pxhy@DeclareCCMacro{MaruKakuHira}#1{`\ajMaruHira{#1}}
%%<!> \ajMaruKakuKata{<number>} : Fallback.
-\pxhy@DeclareMacro{MaruKakuKata}#1{`\ajMaruKata{#1}}
+\pxhy@DeclareCCMacro{MaruKakuKata}#1{`\ajMaruKata{#1}}
%%<!> \ajMaruKakuYobi{<number>} : Fallback.
-\pxhy@DeclareMacro{MaruKakuYobi}#1{`\ajKakuYobi{#1}}
+\pxhy@DeclareCCMacro{MaruKakuYobi}#1{`\ajKakuYobi{#1}}
%%<!> \ajKuroMaruKakualph{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroMaruKakualph}#1{`\ajMarualph{#1}}
+\pxhy@DeclareCCMacro{KuroMaruKakualph}#1{`\ajMarualph{#1}}
%%<!> \ajKuroMaruKakuAlph{<number>}
-\pxhy@DeclareMacro{KuroMaruKakuAlph}#1{\pxhy@rshift{1/11712,27}}
+\pxhy@DeclareCCMacro{KuroMaruKakuAlph}#1{\pxhy@rshift{1/11712,27}}
%%<!> \ajKuroMaruKakuHira{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroMaruKakuHira}#1{`\ajMaruHira{#1}}
+\pxhy@DeclareCCMacro{KuroMaruKakuHira}#1{`\ajMaruHira{#1}}
%%<!> \ajKuroMaruKakuKata{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroMaruKakuKata}#1{`\ajMaruKata{#1}}
+\pxhy@DeclareCCMacro{KuroMaruKakuKata}#1{`\ajMaruKata{#1}}
%%<!> \ajKuroMaruKakuYobi{<number>} : Fallback.
-\pxhy@DeclareMacro{KuroMaruKakuYobi}#1{`\ajKakuYobi{#1}}
+\pxhy@DeclareCCMacro{KuroMaruKakuYobi}#1{`\ajKakuYobi{#1}}
%%<!> \ajNijuMaru{<number>}
-\pxhy@DeclareMacro{NijuMaru}#1{\pxhy@rshift{1/16222,11}}
+\pxhy@DeclareCCMacro{NijuMaru}#1{\pxhy@rshift{1/16222,11}}
%%<!> \ajRecycle{<number>}
-\pxhy@DeclareMacro{Recycle}#1{\pxhy@rshift{0/16314,12}}
+\pxhy@DeclareCCMacro{Recycle}#1{\pxhy@rshift{0/16314,12}}
%%<!> \ajHasenKakuAlph{<number>}
-\pxhy@DeclareMacro{HasenKakuAlph}#1{\pxhy@rshift{1/20496,7}}
+\pxhy@DeclareCCMacro{HasenKakuAlph}#1{\pxhy@rshift{1/20496,7}}
%%<!> \ajCross{<number>}
-\pxhy@DeclareMacro{Cross}#1{%
+\pxhy@DeclareCCMacro{Cross}#1{%
\pxhy@fallback{0}{0}{9}{%
\pxhy@rshift{0/20523,10}%
}{\pxhy@numeral{#1}\UTF{00D7}}%
}
%%<!> \ajSlanted[*]{<number>}
-\pxhy@DeclareMacroVar{Slanted}#1{%N
+\pxhy@DeclareCCMacroVar{Slanted}#1{%N
\pxhy@fallback{0}{0}{59}{%
\pxhy@rshift{0/9460,10/20589,60}%
}{\pxhy@numeral{#1}}%
@@ -459,7 +504,7 @@
}
%%<!> \ajApostrophe{<number>}
%%<!> \ajYear{<number>} (alias)
-\pxhy@DeclareMacro{Apostrophe}#1{%
+\pxhy@DeclareCCMacro{Apostrophe}#1{%
\pxhy@fallback{0}{0}{99}{%
\pxhy@rshift{0/20649,100}%
}{\UTF{2019}\pxhy@two@digits{#1}}%
@@ -467,13 +512,15 @@
\pxhy@DeclareAlias{Year}{Apostrophe}
%%<!> \ajSquareMark[*]{<number>}
% Note: +-variant is unsupported.
-\pxhy@DeclareMacroVar{SquareMark}#1{%N
+\pxhy@DeclareCCMacroVar{SquareMark}#1{%N
\pxhy@rshift{1/12229,13}%
}{%V
\pxhy@rshift{1/12241,10}%
}
%%<!> \ajHishi{<number>}
-\pxhy@DeclareMacro{Hishi}#1{\pxhy@rshift{1/12256,5}}
+\pxhy@DeclareCCMacro{Hishi}#1{\pxhy@rshift{1/12256,5}}
+
+\pxhy@finish@declare@cc@macros
%-----------------------
diff --git a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-enc.sty b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-enc.sty
index 2d730c51511..e64fa701cb4 100644
--- a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-enc.sty
+++ b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-enc.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'pxjahyper-enc.sty'.
%%
-%% Copyright (c) 2012-2023 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2012-2024 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,7 +10,7 @@
%% package declaration
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{pxjahyper-enc}[2023/03/01 v1.3]
+\ProvidesPackage{pxjahyper-enc}[2024/08/25 v1.5]
\def\pxhe@pkgname{pxjahyper-enc}
\providecommand{\bxDebug}[1]{}
diff --git a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-uni.def b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-uni.def
index 4ce0174a9e2..88ea2241c0c 100644
--- a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-uni.def
+++ b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper-uni.def
@@ -1,7 +1,7 @@
%%
%% This is file 'pxjahyper-uni.def'.
%%
-%% Copyright (c) 2012-2023 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2012-2024 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,7 +10,7 @@
%% package declaration
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesFile{pxjahyper-uni.def}[2023/03/01 v1.3]
+\ProvidesFile{pxjahyper-uni.def}[2024/08/25 v1.5]
\providecommand{\bxDebug}[1]{}
%--------------------------------------- environment check
diff --git a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper.sty b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper.sty
index 9c3652b29f1..8be4a409e80 100644
--- a/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper.sty
+++ b/Master/texmf-dist/tex/platex/pxjahyper/pxjahyper.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'pxjahyper.sty'.
%%
-%% Copyright (c) 2012-2023 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2012-2024 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,7 +10,7 @@
%% package declaration
\NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{pxjahyper}[2023/03/01 v1.3]
+\ProvidesPackage{pxjahyper}[2024/08/25 v1.5]
\def\pxhy@pkgname{pxjahyper}
\providecommand{\bxDebug}[1]{}
@@ -51,16 +51,21 @@
\newif\ifpxhy@otfmacros
\newif\ifpxhy@Uchar@avail
\newif\ifpxhy@ucs@avail
+\newif\ifpxhy@toucs@avail
\let\pxhy@jsclasses@name\relax
\newif\ifpxhy@jlreq@cls
\newif\ifpxhy@fallback@geta
+\newif\ifpxhy@fallback@warn
+\newif\ifpxhy@fallback@cidm
\newif\ifpxhy@extjis@map
\newif\ifpxhy@extjis@use
\newif\ifpxhy@ajhankaku@chars
%%<*> \pxjahypersetup{<key>=<value>,...}
-\newcommand*\pxjahypersetup{%
- \setkeys{\pxhy@pkgname}%
+\@ifdefinable\pxjahypersetup{%
+ \DeclareRobustCommand*\pxjahypersetup{%
+ \setkeys{\pxhy@pkgname}%
+ }%
}
%% \pxhy@handle@key{<key>}{<value>}{<name>}
\def\pxhy@handle@key#1#2#3{%
@@ -91,7 +96,7 @@
\DeclareOption{resetdvidriver}{%
\let\pxhy@driver\@undefined
}
-\DeclareOption{autodvidriver}{%
+\DeclareOption{autodvidriver}{% DEPRECATED
\let\pxhy@driver\@undefined
}
\DeclareOption{auto}{% DEPRECATED
@@ -171,14 +176,15 @@
\DeclareOption{nootfmacros}{%
\pxhy@otfmacrosfalse
}
-\DeclareOption{fallback-geta}{%
+\DeclareOption{fallback-geta}{% DEPRECATED
\pxjahypersetup{fallback=geta}%
}
-\DeclareOption{fallback-delete}{%
+\DeclareOption{fallback-delete}{% DEPRECATED
\pxjahypersetup{fallback=delete}%
}
-\DeclareOption{force-unicode}{%
- \let\pxhy@force@unicode=t
+\DeclareOption{force-unicode}{% DEPRECATED
+ \PackageWarningNoLine\pxhy@pkgname
+ {'force-unicode' is DEPRECATED and ignored}%
}
\DeclareOption{disable-Ux}{% for debug
\let\pxhy@disable@Ux=t
@@ -194,6 +200,16 @@
}
\let\pxhy@kv@fallback@@geta\pxhy@fallback@getatrue
\let\pxhy@kv@fallback@@delete\pxhy@fallback@getafalse
+% 'fallback-warn=<bool>'
+\pxhy@fallback@warntrue
+\define@key{\pxhy@pkgname}{fallback-warn}[true]{%
+ \pxhy@handle@key{fallback-warn}{#1}{fallback@warn#1}%
+}
+% 'fallback-cidm=<bool>'
+\pxhy@fallback@cidmtrue
+\define@key{\pxhy@pkgname}{fallback-cidm}[true]{%
+ \pxhy@handle@key{fallback-cidm}{#1}{fallback@cidm#1}%
+}
% 'extjis=<bool>'
\pxhy@extjis@usetrue
\define@key{\pxhy@pkgname}{extjis}[true]{%
@@ -289,6 +305,8 @@
\pxhy@check\Uchar{\pxhy@Uchar@availtrue}
%% pxhy@ucs@avail switch
\pxhy@check\ucs{\pxhy@ucs@availtrue}
+%% pxhy@toucs@avail switch
+\pxhy@check\toucs{\pxhy@toucs@availtrue}
%% pxhy@extjis@map switch
% Note that 'tounicode' is necessary.
@@ -311,6 +329,8 @@
\@ifl@t@r\fmtversion{2021/11/15}{%
\chardef\pxhy@hook@system=2
}{\@ifl@t@r\fmtversion{2020/02/02}{%
+ % NB. We need to support this intermediate version, because
+ % the hook order matters here.
\chardef\pxhy@hook@system=1
}{}}
@@ -328,16 +348,25 @@
\pxhy@uniescapetrue
\fi\fi
-% hyperref 'unicode' is allowed only on upLaTeX.
-\ifnum0\ifpxhy@hy@unicode\ifpxhy@uptex\else
- \ifx t\pxhy@force@unicode\else1\fi\fi\fi>\z@
-% \PackageWarningNoLine\pxhy@pkgname
-% {The support for the hyperref 'unicode' mode\MessageBreak
-% on the pTeX engine is currently experimental}%
-\fi
+%% \pxhy@if@really@unicode{<true>}{<false>}
+% Tests if hyperref unicode-mode is *currently* in effect.
+% (Assuming unicode-mode is enabled by the settings.)
+\let\pxhy@if@really@unicode\@undefined
+
+% hyperref 'unicode' mode
\ifpxhy@hy@unicode
\pxhy@uniescapefalse
%\pxhy@otfutftrue
+ % placed at the top of the hook
+ \AtEndOfPackage{\ltx@GlobalPrependToMacro\pdfstringdefPreHook{%
+ \ifx\ifpdfstringunicode\@undefined
+ \ifHy@unicode \let\pxhy@if@really@unicode\@firstoftwo
+ \else \let\pxhy@if@really@unicode\@secondoftwo
+ \fi
+ \else % '\ifpdfstringunicode' is provided by hyperref
+ \let\pxhy@if@really@unicode\ifpdfstringunicode
+ \fi
+ }}
\fi
% otfcid requrires otfutf.
\ifpxhy@otfutf \else \ifpxhy@otfcid
@@ -429,8 +458,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\fi
%% \pxhy@geta : GETA MARK
-\pxhy@get@jchar{\jis"222E}
-\let\pxhy@geta\pxhy@jchar
+\pxhy@let@jchar@jc\pxhy@geta{222E}
%% \pxhy@print@geta
\def\pxhy@print@geta{%
@@ -472,12 +500,42 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
}
+%% \pxhy@ifempty{<text>}{<true>}{<false>}
+\def\pxhy@ifempty#1{%
+ \pxhy@cond\ifx\pxhy@mt#1\pxhy@mt\fi
+}
+
+%% \pxhy@E\newrobustcmd*\CS...
+% Does \newrobustcmd* if etoolbox is available;
+% does \DeclareRobustCommand* otherwise.
+\def\pxhy@E\newrobustcmd*#1{%
+ \def\pxhy@next{\providecommand*\pxhy@next}%
+ \@ifdefinable#1{\def\pxhy@next{\DeclareRobustCommand*#1}}%
+ \pxhy@next
+}
+
+%% \pxhy@read@num{<text>}\CScont
+\def\pxhy@read@num#1{%
+ \expandafter\pxhy@read@num@a\number#1\pxhy@mk#1\pxhy@mk#1\pxhy@mk
+}
+\def\pxhy@read@num@a#1#2\pxhy@mk{%
+ \expandafter\pxhy@read@num@b\romannumeral\if-#1\else-\fi
+}
+\def\pxhy@read@num@b#1\pxhy@mk#2\pxhy@mk{%
+ \expandafter\pxhy@read@num@c\number\pxhy@ifempty{#1}{#2}{}\pxhy@mk
+}
+\def\pxhy@read@num@c#1\pxhy@mk#2{%
+ \pxhy@cond\ifnum#1<\z@\fi{#2{0}}{#2{#1}}%
+}
+
%--------------------------------------- Helpers (e-TeX)
\ifpxhy@etex
%% packages
\ifpxhy@etoolbox
\RequirePackage{etoolbox}[2011/01/03]%v2.1
+ \robustify\pxjahypersetup
+ \let\pxhy@E\relax
\fi
%% \pxhy@if@star{<varient>}{<normal>}
@@ -709,7 +767,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\pxhy@cond \ifpxhy@utfXVI \fi{%
\pxhy@uchex@big#1"000000\pxhy@end
}{%else
- \pxhy@uchex@out{#1}%
+ \pxhy@uchex@out@pre{#1}%
}%
}{%else
\pxhy@uchex@small#1"0000\pxhy@end
@@ -719,7 +777,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\pxhy@uchex@small@a#1#2#3#4#5\pxhy@end
}
\def\pxhy@uchex@small@a#1"#2\pxhy@end{%
- \pxhy@uchex@out{#2#1}%
+ \pxhy@uchex@out@pre{#2#1}%
}
\def\pxhy@uchex@big#1#2#3#4#5#6#7#8\pxhy@end{%
\pxhy@uchex@big@a#1#2#3#4#5#6#7\pxhy@end
@@ -741,18 +799,93 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\csname pxhy@qh/3#6\endcsname
}
\def\pxhy@uchex@big@d#1#2#3#4#5\pxhy@end{%
- \pxhy@uchex@out{D#1#2#3}%
- \pxhy@uchex@out{D#4#5}%
+ \pxhy@uchex@out@pre{D#1#2#3}%
+ \pxhy@uchex@out@pre{D#4#5}%
}
\edef\pxhy@uchex@error{%
- \noexpand\pxhy@uchex@out{\pxhy@uc@REPL}%
+ \noexpand\pxhy@uchex@out@pre{\pxhy@uc@REPL}%
+}
+\def\pxhy@uchex@out@pre#1{%
+ \pxhy@if@in@anchor{% then Unicode does not work
+ \pxjahyperBadCharacter{U+#1}%
+ }{%else
+ \pxhy@uchex@out{#1}%
+ }%
+}
+
+%--------------------------------------- Unavailable characters
+
+%%<+> \pxjahyperBadCharacter{<label>}
+\newcommand*\pxjahyperBadCharacter[1]{%
+ \pxhy@if@in@anchor{%
+ #1;% label is output as-is
+ }{%else
+ \ifpxhy@fallback@warn
+ % issue a warning
+ \pxhy@bad@character@a{#1}%
+ \fi
+ \pxhy@print@geta
+ }%
+}
+\def\pxhy@bad@character@a#1{%
+ % Here the control sequence with name <label> is supposed to be
+ % undefined. This token is intentionally left in the stream.
+ % Then this unknown token will be detected by the hyperref process
+ % and cause it to issue an warning
+ % "Token not allowed in a PDF string (... removing `\<label>'".
+ \expandafter\ifx\csname<#1>\endcsname\relax
+ \csname<#1>\endcsname
+ % If the token should be defined, it is replaced for safety.
+ \else \csname pxhy@<#1>\endcsname
+ \fi
+}
+
+%% \pxhy@fallback@num{<prefix>}<fast>{<number>}
+% Makes a bad character with label '<prefix><number>', after parsing
+% the given number input.
+\def\pxhy@fallback@num#1#2#3{%
+ \if \ifpxhy@fallback@warn T\else \pxhy@if@in@anchor{T}{F}\fi T%
+ \if t#2%
+ \expandafter\pxhy@fallback@num@a\expandafter{\number#3}{#1}%
+ \else
+ \pxhy@read@num{#3}\pxhy@fallback@num@a{#1}%
+ \fi
+ \else
+ \pxjahyperBadCharacter{}%
+ \fi
}
+\def\pxhy@fallback@num@a#1#2{%
+ \pxjahyperBadCharacter{#2#1}%
+}
+
+%--------------------------------------- Stuffs for anchor strings
+
+% Sometimes \pdfstringdef is invoked to form anchor strings.
+% There "unicode-mode" of hyperref is temporarily disabled;
+% moreover, ToUnicode specials are not applied to such strings.
+% Consequently, only ASCII characters can be used there.
+% Anchor strings are for identification and not presentation;
+% so special fallback for special characters are needed.
+
+%% \pxhy@if@in@anchor{<true>}{<false>}
+% Tests if we are inside anchors.
+\let\pxhy@if@in@anchor\@secondoftwo
+\ifx\Hy@PageAnchorSlide\@undefined\else
+ % We resort to some heuristics....
+ \g@addto@macro\Hy@PageAnchorSlide{%
+ \let\pxhy@if@in@anchor\@firstoftwo
+ }
+\fi
%--------------------------------------- Hooks to pdfstringdef
%% variables
\let\pxhy@str\relax
+%%<+> \Ux{<hex>}
+% (This is a dummy declaration.)
+\ifodd\z@ \providecommand*\Ux[1]{} \fi
+
%% \pxhy@Ux
% The definition of \Ux in PDF strings.
\let\pxhy@Ux\@undefined
@@ -760,16 +893,22 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\ifpxhy@hy@unicode %<*unicode>
%% \pxhy@Ux
+ % In hyperref "unicode" mode, \unichar is used.
\def\pxhy@Ux{\pxhy@uchex}%
\pxhy@utfXVIfalse
\def\pxhy@uchex@out#1{%
- \unichar{"#1}%
+ \pxhy@if@really@unicode{%
+ \unichar{"#1}%
+ }{%else % something wrong!
+ \pxjahyperBadCharacter{U+#1}%
+ }%
}
\else\ifpxhy@Uchar@avail %<*Uchar>
\ifpxhy@uptex
%% \pxhy@Ux
+ % On upTeX with \Uchar, \Uchar is used.
\def\pxhy@Ux{\pxhy@uchex}
\pxhy@utfXVIfalse
\def\pxhy@uchex@out#1{\Uchar"#1 }
@@ -777,29 +916,31 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\else\ifpxhy@ucs@avail
%% \pxhy@Ux
+ % On pTeX with \Uchar and \ucs, we convert the Unicode value to
+ % an internal-code value (using \ucs) and apply \Uchar to it.
\def\pxhy@Ux{\pxhy@uchex}
\pxhy@utfXVIfalse
\def\pxhy@uchex@out#1{%
\expandafter\pxhy@uchex@out@a\ucs"#1\pxhy@mk{#1}%
}
\chardef\pxhy@max@asc="7F
- \def\pxhy@uchex@out@a#1\pxhy@mk#2{%
- \ifnum#1<\z@
- \ifnum"#2>\pxhy@max@asc
+ \def\pxhy@uchex@out@a#1\pxhy@mk#2{% #1:internal #2:Unicode
+ \ifnum#1<\z@ % not in internal (or JIS)
+ \ifnum"#2>\pxhy@max@asc % not ASCII
\ifpxhy@extjis@use
+ % try special conversion
\expandafter\pxhy@uchex@out@b\csname
pxhy@uc/\number"#2\endcsname{#2}%
\else \pxhy@uchex@out@b\relax{#2}%
\fi
- \else \Uchar"#2
+ \else \Uchar"#2 % ASCII
\fi
- \else \Uchar#1
+ \else \Uchar#1 % in internal-code
\fi
}
- \def\pxhy@uchex@out@b#1#2{%
- \ifx#1\relax
- \@nameuse{U+#2}%
- \pxhy@print@geta
+ \def\pxhy@uchex@out@b#1#2{% #2:Unicode
+ \ifx#1\relax % not supported
+ \pxjahyperBadCharacter{U+#2}%
\else #1%
\fi
}
@@ -808,6 +949,9 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\else\ifpxhy@uptex %<*upTeX>
%% \pxhy@Ux
+ % On upTeX without \Uchar, we convert the Unicode value to a ja-char
+ % token using \pxhy@get@jchar, which is not fully expandable.
+ % So we need \pdfstringdefPostHook.
\def\pxhy@Ux{\pxhy@uchex}%
\pxhy@utfXVIfalse
@@ -912,7 +1056,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\fi
%--------------------------------------- Fix for high-byte protection
-\ifpxhy@etex
+\ifpxhy@hy@unicode\else \ifpxhy@etex
\begingroup
% Check for high-byte protection.
\catcode"EF=\active \catcode`\^=7
@@ -949,7 +1093,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\fi
\endgroup
-\fi
+\fi\fi
%--------------------------------------- Support for 'otfutf'
\ifpxhy@otfutf
@@ -960,8 +1104,7 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\def\pxhy@UTF{\pxhy@uchex}
\pxhy@utfXVIfalse
\def\pxhy@uchex@out#1{%
- \@nameuse{U+#1}% issue a warning
- \pxhy@print@geta
+ \pxjahyperBadCharacter{U+#1}%
}
\else
\let\pxhy@UTF\pxhy@Ux
@@ -999,26 +1142,22 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
%% \pxhy@CID{<cid>}
\def\pxhy@CID#1{%
- \expandafter\expandafter\expandafter\pxhy@cid@aux
- \bxjaCidToUcsHex{#1}\pxhy@mk{\pxhy@xdetokenize{#1}}%
+ \pxhy@triexpandafter\pxhy@cid@aux\bxjaCidToUcsHex{#1}@f{#1}%
}
%% \pxhy@fast@CID{<cid>}
\def\pxhy@fast@CID#1{%
- \expandafter\expandafter\expandafter\pxhy@cid@aux
- \bxjaFastCidToUcsHex{#1}\pxhy@mk{\number#1}%
+ \pxhy@triexpandafter\pxhy@cid@aux\bxjaFastCidToUcsHex{#1}@t{#1}%
}
\ifx\pxhy@Ux\@undefined
- \def\pxhy@cid@aux#1\pxhy@mk#2{%
- \@nameuse{CID+#2}% issue a warning
- \pxhy@print@geta
+ \def\pxhy@cid@aux#1@#2#3{%
+ \pxhy@fallback@num{CID+}#2{#3}%
}
\else
-\def\pxhy@cid@aux#1\pxhy@mk#2{%
+\def\pxhy@cid@aux#1@#2#3{%
\ifnum"#1>\z@
\pxhy@Ux{#1}%
\else
- \@nameuse{CID+#2}%
- \pxhy@print@geta
+ \pxhy@fallback@num{CID+}#2{#3}%
\fi
}
\fi
@@ -1059,11 +1198,30 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
\fi
}
+%% \pxhy@CIDC{<cid>} / \pxhy@CIDK{<cid>} / \pxhy@CIDT{<cid>}
+\def\pxhy@CIDC{\pxhy@fallback@num{CIDC+}f}
+\def\pxhy@CIDK{\pxhy@fallback@num{CIDK+}f}
+\def\pxhy@CIDT{\pxhy@fallback@num{CIDT+}f}
+
+%% \pxhy@dispatch@fallback@cidm
+\@onlypreamble\pxhy@dispatch@fallback@cidm
+\def\pxhy@dispatch@fallback@cidm{%
+ \global\let\pxhy@dispatch@fallback@cidm\relax
+ \ltx@GlobalPrependToMacro\pdfstringdefPreHook{%
+ \ifpxhy@fallback@cidm
+ \let\CIDC\pxhy@CIDC
+ \let\CIDK\pxhy@CIDK
+ \let\CIDT\pxhy@CIDT
+ \fi
+ }%
+}
+
%% enable hooks
\pxhy@hook@after@package{otf}{\pxhy@dispatch@otfcid}
\ifpxhy@otfmacros
\pxhy@hook@after@package{ajmacros}{\pxhy@dispatch@otfmacros}
\fi
+\pxhy@hook@after@package{mlcid}{\pxhy@dispatch@fallback@cidm}
\fi
%--------------------------------------- Extended JIS mapping
@@ -1160,7 +1318,8 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
%%<+> \pxDeclarePdfTextCommand{\CS}{<jis>}{<ucs>}
\@onlypreamble\pxDeclarePdfTextCommand
-\newcommand*\pxDeclarePdfTextCommand[3]{%
+\pxhy@E\newrobustcmd*\pxDeclarePdfTextCommand[3]{%
+ \pxhy@prepare@txtcmd#1%
\pxhy@decl@pdf@tc{#2}{#3}%
{\DeclareTextCommand{#1}{\pxhy@pdfenc}}%
{\pxhy@revoke@pdf@tc{#1}}%
@@ -1168,7 +1327,8 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
%%<+> \pxDeclarePdfTextComposite{\CS}{<arg>}{<jis>}{<ucs>}
\@onlypreamble\pxDeclarePdfTextComposite
-\newcommand*\pxDeclarePdfTextComposite[4]{%
+\pxhy@E\newrobustcmd*\pxDeclarePdfTextComposite[4]{%
+ \pxhy@prepare@txtcmd#1%
\pxhy@decl@pdf@tc{#3}{#4}%
{\DeclareTextCompositeCommand{#1}{\pxhy@pdfenc}{#2}}%
{\pxhy@revoke@pdf@tcc{#1}{#2}}%
@@ -1202,8 +1362,8 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
%% \pxhy@decl@pdf@tc
\@onlypreamble\pxhy@decl@pdf@tc
\def\pxhy@decl@pdf@tc#1#2{%
- \edef\pxhy@next{{#1}{\ifx\pxhy@mt#2\pxhy@mt FFFD\else#2\fi}}%
- \expandafter\pxhy@get@body\pxhy@next
+ \edef\pxhy@next{{#1}{#2}}%
+ \uppercase\expandafter{\expandafter\pxhy@get@body\pxhy@next}%
\ifx\pxhy@body\@undefined
\let\pxhy@next\@secondoftwo
\else
@@ -1217,21 +1377,60 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
#2{#1}%
}
+%% \pxhy@prepare@txtcmd\CS
+% If \CS is defined and not an encoding-aware command,
+% let \[?\CS] be equivalent to \CS, so that doing
+% \DeclareTextCommand\CS... will keep the original meaning of \CS.
+\@onlypreamble\pxhy@prepare@txtcmd
+\def\pxhy@next#1#2\pxhy@end{%#1='\',#2='cmd'
+ \def\pxhy@prepare@txtcmd##1{%
+ \ifx##1\@undefined\else
+ \def\pxhy@tmpb{\pxhy@prepare@txtcmd@c##1}%
+ \expandafter\pxhy@prepare@txtcmd@a\meaning##1{}->#1 \pxhy@end
+ \fi
+ }%
+ \def\pxhy@prepare@txtcmd@a##1->#1##2 ##3\pxhy@end{%
+ \pxhy@prepare@txtcmd@b##2_{}-#2_\pxhy@end
+ }%
+ \def\pxhy@prepare@txtcmd@b##1-#2_##2\pxhy@end{%
+ % if not an encoding-aware command...
+ \ifx\pxhy@mt##2\pxhy@mt \pxhy@tmpb \fi
+ }%
+}\expandafter\pxhy@next\string\cmd\pxhy@end
+\def\pxhy@prepare@txtcmd@c#1{%
+ \expandafter\let\csname?\string#1\endcsname#1%
+}
+
%% \pxhy@get@body{<jis>}{<ucs>}
\@onlypreamble\pxhy@get@body
+\@onlypreamble\pxhy@get@body@a
+\def\pxhy@get@body#1#2{%
+ \edef\pxhy@next{%
+ {\ifx\pxhy@mt#1\pxhy@mt -1\else \jis"#1\fi}%
+ {\ifx\pxhy@mt#2\pxhy@mt
+ \ifx\pxhy@mt#1\pxhy@mt -1%
+ \else\ifpxhy@uptex \jis"#1%
+ \else\ifpxhy@toucs@avail \toucs\jis"#1%
+ \else -1\fi\fi\fi
+ \else \number"#2%
+ \fi}}%
+ \expandafter\pxhy@get@body@a\pxhy@next
+}
\ifpxhy@uptex %<*upTeX>
- \def\pxhy@get@body#1#2{%
- \pxhy@get@jchar{\ucs"#2}%
+ \def\pxhy@get@body@a#1#2{%
+ \pxhy@get@jchar{\ifnum#2<\z@ "FFFD\else#2\fi}%
\let\pxhy@body\pxhy@jchar
}%
\else\ifpxhy@hy@unicode %<*unicode>
- \def\pxhy@get@body#1#2{%
- \def\pxhy@body{\unichar{"#2}}%
+ \def\pxhy@get@body@a#1#2{%
+ \edef\pxhy@body{%
+ \noexpand\unichar{\ifnum#2<\z@ "FFFD\else#2\fi}}%
}%
\else\ifpxhy@uniescape %<*uniescape>
\def\pxhy@get@body#1#2{%
\ifx\pxhy@mt#1\pxhy@mt
- \def\pxhy@body{\0x#2}%
+ \edef\pxhy@body{\noexpand\0x%
+ \ifx\pxhy@mt#2\pxhy@mt FFFD\else#2\fi}%
\else
\pxhy@get@jchar{\jis"#1}%
\let\pxhy@body\pxhy@jchar
@@ -1239,14 +1438,14 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
}%
\else %<*!>
\chardef\pxhy@cc@jis@only=1
- \def\pxhy@get@body#1#2{%
- \ifx\pxhy@mt#1\pxhy@mt
- \let\pxhy@body\@undefined
- \else
- \pxhy@get@jchar{\jis"#1}%
- \let\pxhy@body\pxhy@jchar
- \fi
- }%
+ \def\pxhy@get@body@a#1#2{%
+ \ifnum#1<\z@
+ \let\pxhy@body\@undefined
+ \else
+ \pxhy@get@jchar{#1}%
+ \let\pxhy@body\pxhy@jchar
+ \fi
+ }%
\fi\fi\fi %</>
%%%%%%%%%%%%%%%%%%%% the definitions
@@ -1695,14 +1894,14 @@ pxhy@fallback@geta = \ifpxhy@fallback@geta true\else false\fi^^J%
%% register to 'disable' list
\ltx@GlobalPrependToMacro\pdfstringdefPreHook{\pxhy@disable@tc@commands}
-\else %<*!textcmd>
+\else %<*!charcmds>
\@onlypreamble\pxDeclarePdfTextCommand
\newcommand*\pxDeclarePdfTextCommand[3]{}
\@onlypreamble\pxDeclarePdfTextComposite
\newcommand*\pxDeclarePdfTextComposite[4]{}
-\fi %</textcmd>
+\fi %</charcmds>
%--------------------------------------- Enable hyperref unicode
\ifpxhy@hy@unicode
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/hduthesis/hdubadge.pdf b/Master/texmf-dist/tex/xelatex/hduthesis/hdubadge.pdf
new file mode 100644
index 00000000000..ae87ea461e5
--- /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.layout-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.layout-module.code.tex
new file mode 100644
index 00000000000..25492b52ef0
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.layout-module.code.tex
@@ -0,0 +1,149 @@
+\hduthesis_provide_module:n {bc.layout}
+\makeatletter
+
+\geometry { top = 3.25cm, bottom = 2.4cm, left = 4cm, right = 2cm,
+ headheight = 15pt, headsep = .72cm }
+\tl_if_eq:NnTF \l__docinfo_entitle_tl {毕业设计}
+{ \chead{\raisebox{.12ex}{\small 杭州电子科技大学本科毕业设计}} }
+{
+ \tl_if_eq:NnTF
+ \l__docinfo_entitle_tl {毕业论文}
+ { \chead{\raisebox{.12ex}{\small 杭州电子科技大学本科毕业论文}} }
+ { \chead{\raisebox{.12ex}{\small 杭州电子科技大学本科毕业设计}} }
+}\lhead{}\rhead{}
+
+\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*{1.8\baselineskip}
+ \includegraphics{hdubadge}
+ \par\vspace*{2\baselineskip}
+ \scalebox{3.2}
+ {
+ \tl_if_eq:NnTF
+ \l__docinfo_entitle_tl {毕业设计}
+ { \textbf { \l_spread_box:nn {.191\paperwidth} {本科毕业设计} }}
+ {
+ \tl_if_eq:NnTF
+ \l__docinfo_entitle_tl {毕业论文}
+ { \textbf { \l_spread_box:nn {.191\paperwidth} {本科毕业论文} }}
+ { \textbf { \l_spread_box:nn {.191\paperwidth} {本科毕业设计} }}
+ }
+ }
+ \par\vspace*{1.3\baselineskip}
+ {
+ \LARGE(\int_use:N \l__hduthesis_grade_int\bfseries 届)
+ }
+ \par\vspace*{4\baselineskip}
+ \begin{tabular}
+ {
+ >{\large\bfseries}p{5.5\ccwd}@{}
+ >{\large\centering\arraybackslash\kaishu}p{.65\linewidth}
+ }
+ 题\qquad 目 &
+ \l_center_box:nn { .95\linewidth }
+ { \l__docinfo_cntitle_tl }\\[5.4ex]
+ 学\qquad 院 &
+ \l_center_box:nn { .95\linewidth }
+ { \l__docinfo_school_tl }\\[5.4ex]
+ 专\qquad 业 &
+ \l_center_box:nn { .95\linewidth }
+ { \l__docinfo_major_tl }\\[5.4ex]
+ 班\qquad 级 &
+ \l_center_box:nn { .95\linewidth }
+ { \l__docinfo_class_tl }\\[5.4ex]
+ 学\qquad 号 &
+ \l_center_box:nn { .95\linewidth }
+ { \l__docinfo_stdntid_tl }\\[5.4ex]
+ 学生姓名 &
+ \l_center_box:nn { .95\linewidth }
+ { \l__docinfo_cnauthor_tl }\\[5.4ex]
+ 指导教师 &
+ \l_center_box:nn { .95\linewidth }
+ { \l__docinfo_cnsupervisor_tl }\\[5.4ex]
+ 完成日期 &
+ \l_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}
+ }
+
+\cs_new_protected_nopar:Nn \__hduthesis_promise_bc_aux:
+ {
+ \vspace*{3.5\baselineskip}
+ \begin{center}
+ \@beginparpenalty\@lowpenalty
+ \Large\textsf{\bfseries \l_spread_box:nn {6\ccwd}{诚信承诺}}
+ \@endparpenalty\@M
+ \end{center}
+ \vspace*{.6\baselineskip}\par
+ \linespread{2.1}
+ {\semilarge
+ 我谨在此承诺:本人所写的毕业论文《\l__docinfo_cntitle_tl》均系本人独立完成,
+ 没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。
+ \par\vspace*{\baselineskip} \bfseries\sffamily
+ \hskip.48\linewidth 承诺人(签名):
+ \vspace*{.5\baselineskip}\par
+ \hskip \dim_eval:n{.48\linewidth+2em} 年\qquad 月\qquad 日
+ }
+ }
+
+\RenewDocumentCommand \maketitle {}
+ {
+ \newgeometry{left = 4cm, right = 2cm, top = 1cm, bottom = 1cm}
+ \begin{titlepage}
+ \__hduthesis_cover_bc_aux:
+ \end{titlepage}
+ \titlepage
+ \__hduthesis_promise_bc_aux:
+ \endtitlepage
+ \restoregeometry
+ }
+
+\def\@makechapterhead#1
+ {
+ \vspace*{-15\p@}%
+ {\parindent \z@ \centering \sffamily
+ \large \thechapter \quad #1
+ \par\nobreak
+ \vskip 24\p@ \par\nobreak
+ }
+ \thispagestyle{fancy}
+ }
+\def\@makeschapterhead#1
+ {
+ \vspace*{-15\p@}%
+ {\parindent \z@ \raggedright
+ \centering \sffamily
+ \interlinepenalty\@M
+ \large \bfseries #1\par\nobreak
+ \vskip 24\p@
+ }
+ \tl_set:Nn \l__toc_schapter_tl {#1}
+ \addcontentsline{toc}{chapter}{\l__toc_schapter_tl}
+ \thispagestyle{fancy}
+ }
+\renewcommand\section
+ {
+ \vspace*{-2.5ex}
+ \@startsection {section}{1}{\z@}%
+ {0ex}{.1pt}{\sffamily\semilarge}
+ }
+\renewcommand\subsection
+ {
+ \vspace*{-1.8ex}
+ \@startsection {subsection}{1}{\z@}%
+ {0ex}{.1pt}{\sffamily}
+ }
+
+\makeatother
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-font-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-font-module.code.tex
new file mode 100644
index 00000000000..39d3f765198
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-font-module.code.tex
@@ -0,0 +1,29 @@
+\hduthesis_provide_module:n {font}
+
+\PassOptionsToPackage{quiet,no-math}{xeCJK}
+\RequirePackage[zihao = -4]{ctex}
+\linespread{1.39}
+\dim_set:Nn \parindent {2\ccwd}
+\newcommand\semilarge{\@setfontsize\semilarge{14}{16.5}}
+\newcommand\semiLarge{\@setfontsize\semiLarge{16.5}{18}}
+
+\setmainfont{texgyretermes}
+ [
+ Extension = .otf, UprightFont = *-regular, BoldFont = *-bold,
+ ItalicFont = *-italic, BoldItalicFont = *-bolditalic
+ ]
+\setsansfont{texgyreheros}
+ [
+ Extension = .otf, scale = .9, UprightFont = *-regular, BoldFont = *-bold,
+ ItalicFont = *-italic, BoldItalicFont = *-bolditalic,
+ ]
+
+\RequirePackage { amsmath, amssymb, mathtools, extarrows,
+ bm, cancel, physics2, fixdif, derivative }
+\usephysicsmodule{ab, braket, ab.legacy, op.legacy}
+\AtBeginDocument{
+ \dim_set:Nn \abovedisplayskip {3pt}
+ \dim_set:Nn \belowdisplayskip {3pt}
+}
+
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.layout-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.layout-module.code.tex
new file mode 100644
index 00000000000..f2be2aea78d
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.layout-module.code.tex
@@ -0,0 +1,149 @@
+\hduthesis_provide_module:n {bc.layout}
+\makeatletter
+
+\geometry { top = 2.75cm, bottom = 2cm, left = 3.2cm, right = 3.2cm,
+ headheight = 15pt, headsep = .72cm }
+\chead{\raisebox{.12ex}{\small 杭州电子科技大学硕士学位论文}}\lhead{}\rhead{}
+
+\cs_new_protected_nopar:Nn \__hduthesis_cover_pg_aux:
+ {
+ \begin{center}
+ \vspace*{4\p@}
+ \includegraphics[scale = 1.6]{hdubadge}\par\vspace*{40\p@}
+ { \LARGE\l_spread_box:nn {.575\linewidth} {硕士学位论文} }
+ \par\vspace*{98\p@}
+ \semiLarge 题\qquad 目:
+ \l_center_box:nn { .75\linewidth } { \kaishu \l__docinfo_cntitle_tl }
+ \vspace*{21\p@}\par
+ \begin{tabular}
+ { >{\semiLarge\bfseries}p{4\ccwd}@{}
+ >{\semiLarge\centering\arraybackslash\kaishu}p{.65\linewidth} }
+ \l_spread_box:nn { 4\ccwd } { 研究生 } &
+ \l_center_box:nn { .96\linewidth }
+ { \seq_item:Nn \l__author_tmp_seq {1} }\\[.8ex]
+ \l_spread_box:nn { 4\ccwd } { 专业 } &
+ \l_center_box:nn { .96\linewidth } { \l__docinfo_major_tl }\\[.8ex]
+ \l_spread_box:nn { 4\ccwd } { 指导教师 } &
+ \l_center_box:nn { .96\linewidth }
+ { \l__docinfo_cnsupervisor_tl\qquad 教授 }\\[13.5ex]
+ \l_spread_box:nn { 4\ccwd } { 完成日期 } &
+ \l_center_box:nn { .96\linewidth }
+ { \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*{142\p@}\par
+ \begin{spacing}{1.15}
+ \huge\textsf{\l__docinfo_cntitle_tl}
+ \end{spacing}
+ \vspace*{130\p@}\par
+ \begin{tabular}{>{\large}p{7\ccwd}@{}>{\large\kaishu}p{.43\linewidth}}
+ \l_spread_box:nn { 4em } {研究生}:&
+ \l_spread_box:nn { 5\ccwd } { \l__docinfo_cnauthor_tl }\\[2ex]
+ \l_spread_box:nn { 4em } {指导教师}:&
+ \l_spread_box:nn { 5\ccwd }
+ { \l__docinfo_cnsupervisor_tl } \qquad 教授\\[11ex] &
+ \quad \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_enoverleaf_pg_aux:
+ {
+ \begin{center}
+ \vspace*{30\p@}{\bfseries
+ Dissertation~Submitted~to~Hangzhou~Dianzi~University\\[.8ex]
+ for~the~Degree~of~Master}
+ \vspace*{134\p@}\par
+ \parbox[t][208\p@]{\linewidth}
+ {\centering
+ \begin{spacing}{1.08}
+ \huge\bfseries\l__docinfo_entitle_tl
+ \end{spacing}
+ }\par
+ \begin{tabular}
+ { >{\bfseries\large}p{7.5\ccwd}@{}
+ >{\bfseries\large}p{.32\linewidth}
+ }
+ \l_spread_box:nn { 4.65em } {Candidate}: &
+ \l__docinfo_enauthor_tl\\[3.5ex]
+ \l_spread_box:nn { 4.65em } {Supervisor}: &
+ Prof.~\l__docinfo_ensupervisor_tl\\[11ex]
+ \end{tabular}
+ \vspace*{6\p@}\par
+ \bfseries\clist_item:Nn
+ \g_system_month_clist {\int_use:N \c_sys_month_int},~
+ \int_use:N \c_sys_year_int
+ \end{center}
+ }
+
+\cs_new_protected_nopar:Nn \__hduthesis_promise_pg_aux:
+ {
+ \vspace*{-6\p@}
+ \begin{center}
+ \large
+ 杭州电子科技大学\\[1ex] 学位论文原创性声明和使用授权说明
+ \end{center}
+ \vspace*{19\p@}
+ \begin{center}
+ \semilarge 原创性声明
+ \end{center}
+ \vspace*{.4\baselineskip}\par
+ \begin{spacing}{1.65}
+ 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。
+ 除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。
+ 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。\par
+ \noindent 申请学位论文与资料若有不实之处,本人承担一切相关责任。
+ \par\vspace*{.9\baselineskip}
+ \noindent \makebox[.45\linewidth][l]{论文作者签名:}
+ 日期:\qquad 年\qquad 月\qquad 日
+ \par\vspace*{.9\baselineskip}
+ \begin{center}
+ \semilarge 学位论文使用授权说明
+ \end{center}
+ \vspace*{.7\baselineskip}\par
+ \begin{spacing}{1.65}
+ 本人完全了解杭州电子科技大学关于保留和使用学位论文的规定,
+ 即:研究生在校攻读学位期间论文工作的知识产权单位属杭州电子科技大学。
+ 本人保证毕业离校后,发表论文或使用论文工作成果时署名单位仍然为杭州电子科技大学。
+ 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,
+ 可以允许采用影印、缩印或其它复制手段保存论文。(保密论文在解密后遵守此规定)
+ \par\vspace*{2\baselineskip}
+ \noindent \makebox[.45\linewidth][l]{论文作者签名:}
+ 日期:\qquad 年\qquad 月\qquad 日
+ \par\vspace*{\baselineskip}
+ \noindent \makebox[.45\linewidth][l]{指导教师签名:}
+ 日期:\qquad 年\qquad 月\qquad 日
+ \end{spacing}
+ \end{spacing}
+ }
+
+\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
+ \titlepage
+ \__hduthesis_promise_pg_aux:
+ \endtitlepage
+ \restoregeometry
+ }
+
+\makeatother
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-preamble-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-preamble-module.code.tex
new file mode 100644
index 00000000000..a71463ee2a3
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-preamble-module.code.tex
@@ -0,0 +1,69 @@
+\hduthesis_provide_module:n {preamble}
+
+\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 {;~}
+ }
+ \str_if_eq:nnT {#1} {cn}
+ {
+ \tl_set:Nn \l__keywords_name_tl {\textsf{关键词:}}
+ \tl_set:Nn \l__keywords_sep_tl {;}
+ }
+ \vspace*{-27\p@}
+ \@beginparpenalty\@lowpenalty
+ \begin{center}%
+ \bfseries\large
+ \str_if_eq:nnT {#1} {en} {ABSTRACT}
+ \str_if_eq:nnT {#1} {cn} {\textsf{摘\qquad 要}}
+ \@endparpenalty\@M
+ \end{center}%
+ \vspace*{.7\baselineskip}
+ }
+ {
+ \par\null
+ \tl_clear:N \l__abstract_name_tl
+ \cfoot{}
+ \clearpage
+ }
+
+\clist_new:N \l__abstract_keywords_clist
+\NewDocumentCommand \keywords { m }
+ {
+ \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}
+ }
+
+\newcommand\frontmatter
+{
+ \clearpage
+ \pagenumbering{Roman}
+ \cfoot{}
+}
+\newcommand\mainmatter
+{
+ \clearpage
+ \pagenumbering{arabic}
+ \cfoot \thepage
+}
+
+\AddToHook{cmd/tableofcontents/after}{\thispagestyle{fancy}}
+\RequirePackage{tocloft}
+\renewcommand{\contentsname}{\hfill 目\qquad 录\hfill}
+\renewcommand \cfttoctitlefont{\sffamily\large}
+\dim_set:Nn \cftbeforetoctitleskip {3pt}
+\dim_set:Nn \cftaftertoctitleskip {24pt}
+\dim_set:Nn \cftbeforechapskip {1pt}
+\dim_set:Nn \cftbeforesecskip {-.2pt}
+\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}
+
+\endinput
diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-unv.layout-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-unv.layout-module.code.tex
new file mode 100644
index 00000000000..7f7f176c298
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-unv.layout-module.code.tex
@@ -0,0 +1,59 @@
+\hduthesis_provide_module:n {unv.layout}
+
+\RequirePackage{geometry, fancyhdr, array, setspace, titlesec}
+\pagestyle{fancy}
+
+\cs_new_protected:Npn \l_spread_box:nn #1#2
+ {
+ \mode_leave_vertical:
+ \hbox_to_wd:nn {#1}
+ { \tl_map_inline:Nn {#2} { ##1 \hfil } \unskip }
+ }
+\cs_new_protected:Npn \l_center_box:nn #1#2
+ {
+ \mode_leave_vertical:
+ \dim_set:Nn \l_tmpa_dim {#1}
+ \global\setbox1=\box\voidb@x
+ {\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-3.6pt \hrule height .8pt
+ \vskip9.6pt \unvbox1}
+ \unskip\unpenalty
+ \repeat
+ }}
+ \box1
+ }
+
+\RequirePackage[skip = 1em, labelsep = quad, font = small]{caption}
+\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}
+
+\RequirePackage{enumitem, cleveref}
+\setlist[enumerate,1]
+{
+ label = (\arabic*), itemindent = 4.5em, leftmargin = 0em,
+ labelsep = 0em, topsep = .15ex, itemsep = 0em, partopsep = 0em,
+ parsep = 0em, listparindent = 2\ccwd
+}
+\AddToHook{env/enumerate/after}{\vspace*{.1ex}}
+\crefformat{figure}{图#2#1#3}
+\crefformat{table}{表#2#1#3}
+\graphicspath
+ {
+ {./figure/}{./figures/}{./image/}{./images/}
+ {./graphics/}{./graphic/}{./pictures/}{./picture/}
+ }
+
+\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..83ecc28b2b8
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls
@@ -0,0 +1,149 @@
+%% ***********************************************************************
+%% 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-font-module.code, *
+%% hduthesis-bc.layout-module.code, *
+%% hduthesis-pg.layout-module.code, *
+%% hduthesis-preamble-module.code, *
+%% hduthesis-unv.layout-module.code, *
+%% and README.md. *
+%% available at https://github.com/xiamyphys/hduthesis *
+%% ***********************************************************************
+\def\hduthesis@date{2024/10/10}
+\def\hduthesis@version{0.2.1}
+
+\ProvidesExplClass{hduthesis} {\hduthesis@date} {\hduthesis@version}
+{HDU Thesis Class}
+
+\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 }
+\hduthesis_msg_new:nn { not found module }
+ { The~hduthesis~module~`#1'~not~found. }
+
+\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}
+ }
+
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
+\ProcessOptions\relax
+\LoadClass[a4paper]{report}
+
+\RequirePackage { siunitx, circuitikz, pgfplots, listings, hologo,
+ lipsum, zhlipsum, booktabs, multicol, hyperref }
+\pgfplotsset{compat = newest}
+\pdfstringdefDisableCommands
+ {
+ \def\cite#1{<#1>}
+ \def\hologoRobust#1{<#1>}
+ }
+
+\hduthesis_load_module:n { font }
+\hduthesis_load_module:n { preamble }
+\hduthesis_load_module:n { unv.layout }
+
+\keys_define:nn { hduthesis / docinfo }
+ {
+ title.clist_set:N = \l__docinfo_title_clist,
+ school.tl_set:N = \l__docinfo_school_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_clist,
+ supervisor.clist_set:N = \l__docinfo_supervisor_clist,
+ reference.tl_set:N = \l__docinfo_reference_tl,
+ }
+\clist_set:Nn \g_system_month_clist
+ {
+ January, February, March, April, May, June, July,
+ August, September, October, November, December
+ }
+\NewDocumentCommand \DocInfo { m }
+ {
+ \keys_set:nn { hduthesis / docinfo } {#1}
+ \exp_args:NNne \seq_set_split:Nnn
+ \l__title_tmp_seq {/} {\l__docinfo_title_clist}
+ \exp_args:NNe \tl_set:Nn
+ \l__docinfo_cntitle_tl { \seq_item:Nn \l__title_tmp_seq {1} }
+ \exp_args:NNe \tl_set:Nn
+ \l__docinfo_entitle_tl { \seq_item:Nn \l__title_tmp_seq {2} }
+ \exp_args:NNne \seq_set_split:Nnn
+ \l__author_tmp_seq {/} {\l__docinfo_author_clist}
+ \exp_args:NNe \tl_set:Nn
+ \l__docinfo_cnauthor_tl { \seq_item:Nn \l__author_tmp_seq {1} }
+ \exp_args:NNe \tl_set:Nn
+ \l__docinfo_enauthor_tl { \seq_item:Nn \l__author_tmp_seq {2} }
+ \exp_args:NNne \seq_set_split:Nnn
+ \l__supervisor_tmp_seq {/} {\l__docinfo_supervisor_clist}
+ \exp_args:NNe \tl_set:Nn
+ \l__docinfo_cnsupervisor_tl { \seq_item:Nn \l__supervisor_tmp_seq {1} }
+ \exp_args:NNe \tl_set:Nn
+ \l__docinfo_ensupervisor_tl { \seq_item:Nn \l__supervisor_tmp_seq {2} }
+ \tl_if_empty:NTF \l__docinfo_reference_tl
+ {
+ \newcommand*\printbibliography{\chapter*{参考文献}}
+ \renewcommand*\cite[1]{\textsuperscript{[##1]}}
+ }
+ {
+ \RequirePackage[sort&compress]{gbt7714}
+ \bibliographystyle{gbt7714-numerical}
+ \newcommand*\printbibliography
+ {
+ \begin{spacing}{1.11}
+ \nocite{*}\bibliography{ \l__docinfo_reference_tl }
+ \end{spacing}
+ }
+ \AddToHook{cmd/printbibliography/before}
+ {
+ \group_begin:
+ \AddToHook{cmd/@makeschapterhead/before} { \linespread{2.1} }
+ }
+ \AddToHook{cmd/printbibliography/after} { \group_end: }
+ }
+ \hypersetup
+ {
+ hidelinks, pdftitle = \l__docinfo_entitle_tl,
+ pdfauthor = \l__docinfo_enauthor_tl,
+ pdfproducer = hduTeX~bundle~by~Mingyu~Xia,
+ }
+ \ExplSyntaxOn
+ \int_compare:nNnT {\tl_count:N \l__docinfo_stdntid_tl} = {8}
+ { \hduthesis_load_module:n { bc.layout } }
+ \int_compare:nNnT {\tl_count:N \l__docinfo_stdntid_tl} = {10}
+ { \hduthesis_load_module:n { pg.layout } }
+ \bool_if:nT
+ {
+ !\int_compare_p:nNn {\tl_count:N \l__docinfo_stdntid_tl} = {8} &&
+ !\int_compare_p:nNn {\tl_count:N \l__docinfo_stdntid_tl} = {10}
+ } { \hduthesis_load_module:n { bc.layout } }
+ \ExplSyntaxOff
+ }
+
+\endinput
+
+% End of file hduthesis.cls
diff --git a/Master/texmf-dist/tex/xelatex/quran-es/quran-es.sty b/Master/texmf-dist/tex/xelatex/quran-es/quran-es.sty
new file mode 100644
index 00000000000..a4ad8b9d272
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/quran-es/quran-es.sty
@@ -0,0 +1,278 @@
+%% This is file `quran-es.sty', and it's completely relies on the quran package.
+%%
+%% Copyright © 2024 by Seiied-Mohammad-Javad Razavian
+%% <javadr@gmail.com>
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.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 work is “author-maintained” (as per LPPL maintenance status)
+%% by Seiied-Mohammad-Javad Razavian..
+%% The Current Maintainer of this work is Seiied-Mohammad-Javad Razavian.
+%%
+%% This work consists of the files quran-es.sty,
+%% qurantext-esi.translation.def, qurantext-esii.translation.def,
+%% qurantext-esiii.translation.def,
+%% quran-es-doc.tex, quran-es-doc.pdf, and quran.png.
+%%
+%% To one who has devoted his life to the Holy Quran
+%%
+\NeedsTeXFormat{LaTeX2e}
+\def\quranesdate{2024/09/05}
+\def\quranesversion{0.1}
+\ProvidesPackage{quran-es}[%
+\quranesdate\space v\quranesversion\space^^J
+Spanish translations extension to the quran package.%
+]
+\RequirePackage{xstring}
+\RequirePackage{biditools}
+\RequirePackage{xkeyval}
+\define@boolkeys{quran-es.sty}[es@]{bornez,cortes,garcia,all}[true]
+\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{quran}}
+\DeclareOption*{\PackageWarning{quran-es}{Unknown option ‘\CurrentOption’}}
+\ProcessOptionsX\relax
+\ifes@all
+ \ExecuteOptionsX{bornez,cortes,garcia}
+\else
+ \ExecuteOptionsX{garcia}
+\fi
+\RequirePackage{quran}
+\ifqt@wordwise%
+ \let\qt@newcmd\newcommand
+\else%
+ \let\qt@newcmd\bidi@newrobustcmd
+\fi%
+\input{qurantext-esiii.translation.def}%García as default
+%
+\ifes@bornez%
+ \PackageInfo{quran-es}{Raúl González Bórnez's translation is chosen.}%
+\fi%
+\ifes@cortes%
+ \PackageInfo{quran-es}{Julio Cortes's translation is chosen.}%
+\fi%
+\ifes@garcia%
+ \PackageInfo{quran-es}{Muhammad Isa García's translation is chosen.}%
+\fi%
+\newcount\trans@es
+\trans@es=\@ne
+\define@choicekey*+{quran-es}{trans}[\val\nr]{bornez,cortes,garcia}{%
+ \ifcase\nr\relax
+ \global\trans@es=\z@\relax
+ \or
+ \global\trans@es=\@ne\relax
+ \or
+ \global\trans@es=\tw@\relax
+ \fi}{%
+ \PackageWarning{quran-es}{\string \esSetTrans' paramenter should be one of `bornez', `cortes', or `garcia'. The package sets to `garcia' by default.}{}%
+ \global\trans@es=\tw@\relax
+}%
+\newcommand*{\esGetTrans}{%
+ \ifcase\trans@es
+ bornez%
+ \or
+ cortes%
+ \or
+ garcia%
+ \fi%
+}
+\newcommand{\esSetTrans}[1]{%
+\IfInteger{#1}%
+{%Yes
+\count255=#1%
+\advance\count255 by -1\relax%
+\trans@es=\count255}%
+{%NO
+\setkeys{quran-es}{trans=#1}}%
+%
+%\makeatother
+%\let\bidi@newrobustcmd\bidi@renewrobustcmd
+%\makeatletter
+\ifqt@wordwise%
+ \makeatother\let\qt@newcmd\renewcommand\makeatletter%
+\else%
+ \makeatother\let\qt@newcmd\bidi@renewrobustcmd\makeatletter%
+\fi%
+\ifcase\trans@es%0
+ \ifes@bornez%
+ \ifx\basmalahes\relax\else%
+ \def\basmalahes{En el nombre de Al.lah, el Clementísimo, el Misericordiosísimo.\qt@par}%
+ \fi%
+ \bidi@renewrobustcmd\Togglebasmalahes{%
+ \ifx\basmalahes\relax%
+ \def\basmalahes{En el nombre de Al.lah, el Clementísimo, el Misericordiosísimo.\qt@par}%
+ \else%
+ \let\basmalahes\relax%
+ \fi%
+ }%
+ \input{qurantext-esi.translation.def}%
+ \else%
+ \PackageError{quran-es}{Raúl González Bórnez's translation has not been loaded}{}%
+ \fi%
+\or%1
+ \ifes@cortes
+ \ifx\basmalahes\relax\else%
+ \def\basmalahes{¡En el nombre de Alá, el Compasivo, el Misericordioso!\qt@par}%
+ \fi
+ \bidi@renewrobustcmd\Togglebasmalahes{%
+ \ifx\basmalahes\relax%
+ \def\basmalahes{¡En el nombre de Alá, el Compasivo, el Misericordioso!\qt@par}%
+ \else%
+ \let\basmalahes\relax%
+ \fi%
+ }%
+ \input{qurantext-esii.translation.def}%
+ \else%
+ \PackageError{quran-es}{Julio Cortes's translation has not been loaded}{}%
+ \fi
+\or%2
+ \ifes@garcia
+ \ifx\basmalahes\relax\else%
+ \def\basmalahes{En el nombre de Dios, el Compasivo con toda la creación, el Misericordioso con los creyentes.\qt@par}%
+ \fi
+ \bidi@renewrobustcmd\Togglebasmalahes{%
+ \ifx\basmalahes\relax%
+ \def\basmalahes{En el nombre de Dios, el Compasivo con toda la creación, el Misericordioso con los creyentes.\qt@par}%
+ \else%
+ \let\basmalahes\relax%
+ \fi%
+ }%
+ \input{qurantext-esiii.translation.def}%
+ \else%
+ \PackageError{quran-es}{Muhammad Isa García's translation has not been loaded}{}%
+ \fi
+\else%
+ \PackageError{quran-es}{\string \esSetTrans{} paramenter should be between 1 to 3}{}%
+\fi
+}%
+\bidi@newrobustcmd\Togglebasmalahes{%
+ \ifx\basmalahes\relax%
+ \ifcase\trans@es% bornez
+ \def\basmalahes{En el nombre de Al.lah, el Clementísimo, el Misericordiosísimo.\qt@par}%
+ \or% cortes
+ \def\basmalahes{¡En el nombre de Alá, el Compasivo, el Misericordioso!\qt@par}%
+ \or% garcia
+ \def\basmalahes{En el nombre de Dios, el Compasivo con toda la creación, el Misericordioso con los creyentes.\qt@par}%
+ \fi%
+ \else%
+ \let\basmalahes\relax%
+ \fi%
+}%
+\let\qt@doqt@orig\qt@doqt
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bidi@apptocmd{\ToggleBasmalah}{\Togglebasmalahes}{}{}
+\let\ToggleBasmalah@orig\ToggleBasmalah
+\def\basmalahes{En el nombre de Dios, el Compasivo con toda la creación, el Misericordioso con los creyentes.\qt@par}%
+\def\basmalahes{%
+ \begingroup%
+ \let\par\relax%
+ \def\qt@no##1{\relax}%
+ \quranayahes[1][1][1]%
+ \endgroup%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand\qt@does{ o o }{%
+ \addtocounter{qt@count}{1}%
+ \def\@qtexp{}%
+ \loop%
+ \global\xdef\@qtexp{\@qtexp\csname qurantrans@es@\roman{qt@count}\endcsname\ifnum\value{qt@count}=\qt@max\else\space\fi
+ \ifnum\value{qt@count}<\qt@max\relax\qt@par\fi}%
+ \ifnum\value{qt@count}<\qt@max\relax%
+ \addtocounter{qt@count}{1}%
+ \repeat%
+ \IfNoValueTF{#1}%
+ {\@qtexp\qt@par}%true
+ {\qt@WordCount=0\relax\c@qt@start=\numexpr#1-1\relax%
+ \readlist*\qt@words{\@qtexp}%
+ \IfNoValueTF{#2}%
+ {\c@qt@end=\numexpr\qt@wordslen+1\relax}{\c@qt@end=\numexpr#2+1\relax}%
+ \foreachitem\qt@word\in\qt@words{%
+ \ifnum\qt@wordcnt>\c@qt@start\ifnum\qt@wordcnt<\c@qt@end\qt@word\ifnum\qt@wordcnt=\numexpr\c@qt@end-1\relax\else\xspace\fi\fi\fi%
+ }%
+ \global\edef\qt@currentfont{\the\font}%
+ \qt@showitems{\qt@currentfont\showitems\qt@words}%
+ \qt@par}%false
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\qurantextes}{ s O{\qt@default} o t{+} }{%
+ \IfBooleanTF{#4}{\def\qt@showitems##1{\footnote{##1}}}{\def\qt@showitems##1{\relax}}%
+ \let\qt@doqt\qt@does%
+ \IfBooleanTF{#1}%
+ {\IfBooleanTF{#4}{\qurantext*[#2][#3]+}{\qurantext*[#2][#3]}}%
+ {\IfBooleanTF{#4}{\qurantext[#2][#3]+}{\qurantext[#2][#3]}}%
+ \let\qt@doqt\qt@doqt@orig%
+ \def\qt@showitems##1{\relax}%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand\quransurahes{ s O{\qt@surah@default} }{%
+ \let\qt@doqt\qt@does%
+ \IfBooleanTF{#1}%
+ {\quransurah*[#2]}%
+ {\quransurah[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranayahes}{ s o o o t{+} }{%
+ \let\qt@doqt\qt@does%
+ \let\ToggleBasmalah\Togglebasmalahes%
+ \IfBooleanTF{#1}%
+ {\IfBooleanTF{#5}{\quranayah*[#2][#3][#4]+}{\quranayah*[#2][#3][#4]}}%
+ {\IfBooleanTF{#5}{\quranayah[#2][#3][#4]+}{\quranayah[#2][#3][#4]}}%
+ \let\qt@doqt\qt@doqt@orig%
+ \let\ToggleBasmalah\ToggleBasmalah@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranjuzes}{ s o }{%
+ \let\qt@doqt\qt@does%
+ \IfBooleanTF{#1}%
+ {\quranjuz*[#2]}%
+ {\quranjuz[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranpagees}{ s o }{%
+ \let\qt@doqt\qt@does%
+ \IfBooleanTF{#1}%
+ {\quranpage*[#2]}%
+ {\quranpage[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranquarteres}{ s o }{%
+ \let\qt@doqt\qt@does%
+ \IfBooleanTF{#1}%
+ {\quranquarter*[#2]}%
+ {\quranquarter[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranrukues}{ s o }{%
+ \let\qt@doqt\qt@does%
+ \IfBooleanTF{#1}%
+ {\quranruku*[#2]}%
+ {\quranruku[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranhizbes}{ s o }{%
+ \let\qt@doqt\qt@does%
+ \IfBooleanTF{#1}%
+ {\quranhizb*[#2]}%
+ {\quranhizb[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareDocumentCommand{\quranmanziles}{ s o }{%
+ \let\qt@doqt\qt@does%
+ \IfBooleanTF{#1}%
+ {\quranmanzil*[#2]}%
+ {\quranmanzil[#2]}%
+ \let\qt@doqt\qt@doqt@orig%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% End of file `quran-es.sty'.
diff --git a/Master/texmf-dist/tex/xelatex/quran-es/qurantext-esi.translation.def b/Master/texmf-dist/tex/xelatex/quran-es/qurantext-esi.translation.def
new file mode 100644
index 00000000000..097ec411f63
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/quran-es/qurantext-esi.translation.def
@@ -0,0 +1,6237 @@
+\qt@newcmd\qurantrans@es@i{En el nombre de Al.lah, el Clementísimo, el Misericordiosísimo.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@ii{La alabanza es para Dios, Señor de los mundos,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@iii{el Clementísimo con toda la Creación, el Misericordiosísimo con los creyentes,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@iv{Soberano del Día de la Recompensa.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@v{Solamente a Ti adoramos y solamente a Ti pedimos ayuda.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@vi{Guíanos al camino recto,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@vii{el camino de aquellos a los que Tú has agraciado; no el de aquellos con los que Tú estás disgustado, ni el de los extraviados.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@viii{\basmalahes Alif, lam, mim\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@ix{Esta es la Escritura (Sagrada), no hay duda. En ella hay una guía para los temerosos de Dios.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@x{Aquellos que creen en lo que está oculto a los sentidos, hacen la oración y, de lo que Nosotros les proveemos, reparten.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@xi{Aquellos que creen en la revelación que se hizo descender para ti y en la revelación que se hizo descender antes de ti y que tienen certeza de la otra vida.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@xii{Esos son los que siguen la guía procedente de su Señor y esos son los triunfadores.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@xiii{Ciertamente, a aquellos que no creen en Dios, da igual que les amonestes o que no, no creerán.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@xiv{Dios cerró y selló sus corazones y sus oídos, y sobre sus ojos hay un velo y les aguarda un castigo inmenso.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@xv{Y entre la gente hay algunos que dicen: «¡Creemos en Dios y en el Último Día!», pero no son creyentes.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@xvi{Pretenden engañar a Dios y a aquellos que creen, pero sólo se engañan a sí mismos, aunque no se dan cuenta.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@xvii{En sus corazones hay una enfermedad y Dios agravará su enfermedad. Les aguarda un castigo doloroso por haber sido mentirosos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@xviii{Y cuando se les dice: «¡No corrompáis en la Tierra!» dicen: «¡En verdad, nosotros somos reformadores de lo que está mal!»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@xix{¿Acaso no son ellos los corruptores? Pero no se dan cuenta.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@xx{Y cuando se les dice: «Creed como cree el resto de la gente!», dicen: «¿Vamos a creer como creen los estúpidos?» ¿Acaso no son ellos los estúpidos? Pero no lo saben.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@xxi{Y cuando se encuentran con aquellos que creen, dicen: «¡Creemos!» Pero cuando se quedan a solas con sus demonios, dicen: «¡En verdad, estamos con vosotros! ¡Solamente nos burlábamos de ellos!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@xxii{Dios sí que se burlará de ellos y les dejará que vaguen ciegos en su rebeldía.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@xxiii{Ésos son los que han trocado la Dirección por el extravío. Por eso, su negocio no ha resultado lucrativo y no han sido bien dirigidos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@xxiv{Semejan a quien enciende un fuego. Pero cuando éste alumbra lo que hay en torno a él, Dios les arrebata su luz y les deja en tinieblas, sin que puedan ver.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@xxv{Son sordos, mudos, ciegos y no rectificarán su error.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@xxvi{También semejan a quienes, en medio de una tormenta, con un cielo lleno de nubes oscuras, de truenos y relámpagos, se tapan los oídos con sus dedos por el estruendo del rayo al caer, temiendo la muerte. Dios acorrala a los que no creen.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@xxvii{El rayo casi les ciega. Cuando les ilumina, caminan, pero cuando se apaga, se detienen. Si Dios quisiera les arrebataría el oído y la vista. Verdaderamente, Dios tiene poder sobre todas las cosas.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@xxviii{¡Oh humanos! ¡Adorad a vuestro Señor, el Cual os ha creado, tanto a vosotros como a los que os precedieron! ¡Quizás así tengáis temor de disgustarle!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@xxix{Él es Quien ha dispuesto para vosotros la Tierra como un lecho y el cielo como una bóveda. Quien hace descender agua del cielo, por medio de la cual surgen los frutos con los que os suministra vuestra provisión. Así pues, no atribuyáis semejantes a Dios, a sabiendas de lo que hacéis.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@xxx{Y si dudáis de lo que hicimos descender del cielo para Nuestro siervo, aportad vosotros un capítulo semejante e invocad a vuestros testigos aparte de Dios, si es que sois sinceros.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@xxxi{Y si no lo hacéis, que no lo haréis, temed el fuego del infierno cuyo combustible son las gentes y las piedras y que está preparado para los que ocultan la verdad.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@xxxii{Y anuncia a aquellos que creen y actúan rectamente que les aguardan jardines celestiales por los cuales fluyen arroyos. Cuando se les ofrezcan los frutos que de ellos proceden, dirán: «Esto es lo mismo que se nos proporcionó anteriormente», pero lo que se les dé será semejante. Allí les esperan parejas purificadas y allí estarán eternamente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@xxxiii{Verdaderamente, Dios no se avergüenza [para expresar Su mensaje] de poner como ejemplo a un mosquito o algo mayor. Aquellos que creen, saben que, ciertamente, es la Verdad que procede de su Señor. En cuanto a los que no creen, dicen: «¿Qué es lo que pretende Dios con ese ejemplo?» Extravía con él a muchos y guía con él a muchos. Pero no se extravían con él sino los transgresores.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@xxxiv{Aquellos que violan el pacto establecido con Dios después de haberlo aceptado, y cortan lo que Dios ha ordenado que continúe unido corrompiendo la Tierra. Esos son los perdedores.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@xxxv{¿Cómo podéis no creéis en Dios, cuando estabais muertos y Él os dio la vida; luego os hará morir y después os hará vivir (nuevamente), tras lo cual retornaréis a Él.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@xxxvi{Él es quien creó para vosotros todo lo que hay en la Tierra, luego Se ocupó del cielo y lo ordenó en siete cielos. Él posee conocimiento de todas las cosas.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@xxxvii{Y [recuerda] cuando tu Señor dijo a los ángeles: «En verdad, pondré en la Tierra un sucesor.» Dijeron: «¿Vas a poner en ella a quien corromperá y derramará la sangre, mientras que nosotros Te glorificamos con alabanzas y proclamamos Tu santidad?» Dijo Dios: «En verdad, Yo sé lo que vosotros no sabéis.»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@xxxviii{Y enseñó a Adán los nombres de todos los seres. Luego los expuso ante los ángeles y Les dijo: «Informadme de los nombres de éstos, si es que sois veraces.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@xxxix{Ellos dijeron: «¡Glorificado seas! No conocemos más que aquello que Tú nos has enseñado. En verdad, Tú eres el Conocedor, el Sabio.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@xl{Dijo Él entonces: «¡Oh Adán! ¡Infórmales de sus nombres!» Y cuando Adán les hubo informado de sus nombres, dijo Él: «¿No os dije que, ciertamente, conozco lo oculto de los cielos y la Tierra, y que sé lo que manifestáis y lo que ocultáis?»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@xli{Y [recuerda] cuando Nosotros dijimos a los ángeles: «¡Prosternaos ante Adán!» y todos ellos se prosternaron excepto Iblís, que se negó y se llenó de arrogancia, y fue de los que no creen.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@xlii{Dijimos. «¡Oh Adán! Habitad tú y tu pareja en el Jardín y comed ambos de él cuanto y donde queráis, pero no os acerquéis a este árbol, pues entonces seríais de los transgresores.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@xliii{Pero Satanás les engañó a ambos y les sacó de aquello en lo que estaban. Y Dijimos: «¡Descended! Seréis enemigos unos de otros. La Tierra será para vosotros una morada y lugar de disfrute por un tiempo.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@xliv{Entonces, recibió Adán de su Señor palabras y Dios le perdonó. En verdad, Él es el Perdonador, el Misericordiosísimo con los creyentes.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@xlv{Dijimos: «¡Descended de él, todos! Y, si de Mí parte viene a vosotros una guía, quienes sigan Mi guía no habrán de temer ni estarán tristes.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@xlvi{Pero los que no crean y desmientan Nuestras señales, esos serán la gente del Fuego, en el que estarán eternamente.»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@xlvii{¡Oh, Hijos de Israel! Recordad Mi merced, con la cual os agracié y sed leales al pacto que tenéis conmigo que Yo seré leal al que tengo con vosotros y temedme sólo a Mí.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@xlviii{Y creed en la revelación que hice descender, confirmando la que ya teníais. No seáis los primeros en no creer en ella. No vendáis Mis indicaciones por poco precio y temedme sólo a Mí.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@xlix{Y no mezcléis la verdad con la falsedad, ni escondáis la verdad a sabiendas.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@l{Haced la oración, dad la limosna obligatoria y inclinaos con los que se inclinan.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@li{¿Acaso ordenáis a la gente que sea virtuosa y vosotros mismos lo olvidáis, a pesar de que recitáis la Escritura [Sagrada]? ¿Es que no razonáis?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@lii{Buscad ayuda en la paciencia y en la oración. En verdad, la oración es una carga pesada, excepto para los que son humildes.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@liii{Aquellos que creen que se encontrarán con su Señor y que retornarán a Él.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@liv{¡Oh, Hijos de Israel! Recordad la merced con los que Yo os agracié y cómo os di preferencia sobre todos los pueblos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@lv{Y temed un día en el que un alma no pueda hacer nada por otra y en el que no le será aceptada la intercesión ni el rescate y no tendrá quien la auxilie.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@lvi{Y [recordad] cuando os salvamos de la gente del Faraón, que os sometían a terribles castigos, degollando a vuestros hijos varones y dejando con vida a vuestras mujeres. Con ello vuestro Señor os sometió a una prueba enorme.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@lvii{Y [recordad] cuando dividimos el mar para vosotros y os salvamos, y ahogamos a la gente del Faraón ante vuestros ojos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@lviii{Y [recordad] cuando nos citamos con Moisés durante cuarenta noches y, en su ausencia, vosotros adorasteis al becerro, obrando injustamente.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@lix{Aunque, tras aquello, os perdonamos; para que, quizás de esa manera, fueseis agradecidos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@lx{Y [recordad] cuando dimos a Moisés la Escritura [Sagrada] y el Criterio. Quizás así fueseis bien guiados.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@lxi{Y [recordad] cuando Moisés dijo a su pueblo: «¡Oh pueblo mío! En verdad, os habéis oprimido a vosotros mismos eligiendo el becerro. Volveos, pues, arrepentidos a vuestro Creador y mataos a vosotros mismos. Eso es mejor para vosotros ante vuestro Creador y quizás así os perdone. En verdad, Él es el Perdonador, el Misericordiosísimo con los creyentes.»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@lxii{Y [recordad] cuando le dijisteis: «¡Oh Moisés! No te creeremos hasta que no veamos a Dios manifiestamente.» Y el rayo os alcanzó ante vuestros propios ojos.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@lxiii{Luego, os devolvimos a la vida después de estar muertos. Quizás así seáis agradecidos.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@lxiv{Y os dimos la sombra de la nube e hicimos descender sobre vosotros el maná y las codornices: «¡Comed de lo bueno de lo que os hemos provisto!» No fueron injustos con Nosotros, fueron injustos con ellos mismos.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@lxv{Y recordad cuando Nosotros dijimos: «Entrad en esta ciudad y comed de ella cuanto queráis. Entrad por la puerta y, ante ella, prosternaos y decid: «Hitta». Perdonaremos vuestros errores e incrementaremos la recompensa de los que hagan el bien.»\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@lxvi{Pero, aquellos que eran injustos cambiaron la palabra por otra distinta. cambiaron la palabra por otra distinta. Entonces, hicimos descender un castigo del cielo sobre los injustos, por haber sido transgresores.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@lxvii{Y [recordad] cuando Moisés pidió agua para su pueblo y le dijimos: «¡Golpea con tu bastón la roca!» Y brotaron de ella doce fuentes. Cada tribu supo con certeza de cuál beber. «¡Comed y bebed de la provisión de Dios y no causéis daño en la Tierra, corrompiendo!»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@lxviii{Y cuando dijisteis: «¡Oh Moisés! No soportamos comer siempre lo mismo. Ruega por nosotros a tu Señor que haga salir para nosotros de lo que da la tierra, algo de legumbres, verduras, pepinos, ajos, lentejas y cebollas.» [Moisés] Dijo: «¿Cambiaréis lo que es mejor por lo que es peor? ¡Bajad a una ciudad! ¡Allí encontraréis lo que queréis!» Fueron golpeados por la humillación y la miseria e incurrieron en la ira de Dios por desmentir las indicaciones de Dios y matar a los profetas sin derecho. Eso les ocurrió porque desobedecieron y fueron transgresores.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@lxix{En verdad, los creyentes y los judíos, los cristianos y los sabeos, quienes crean en Dios y en el Último Día y actúen rectamente, tendrán su recompensa junto a su Señor. No tendrán que temer y no estarán tristes.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@lxx{Y (recordad) cuando aceptamos de vosotros el pacto y elevamos sobre vosotros el monte Sinaí [y dijimos:] «¡Coged con fuerza lo que os hemos entregado y recordad lo que contiene! Quizás así temáis disgustar a Dios.»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@lxxi{Después de aquello, disteis la espalda y, si no hubiera sido por el favor de Dios sobre vosotros y por Su misericordia, habríais sido de los perdedores.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@lxxii{Sabíais con certeza quiénes de vosotros violaron el sábado. Les dijimos: «¡Sed monos despreciables!»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@lxxiii{E hicimos esto como un ejemplo para las generaciones presentes y futuras y como un aviso para los temerosos de Dios.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@lxxiv{Y [recuerda] cuando Moisés dijo a su pueblo: «Dios os ordena que sacrifiquéis una vaca.» Dijeron: «¿Te burlas de nosotros?» Dijo: «¡Dios me proteja de ser como los ignorantes!»\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@lxxv{Dijeron: «Ruega a tu Señor de parte nuestra, que nos aclare cómo ha ser ella.» Dijo: «Él dice que ha de ser una vaca ni vieja ni joven, algo intermedio entre ambas cosas. ¡Haced lo que se os ordena!»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@lxxvi{Dijeron: «Ruega a tu Señor de parte nuestra, que nos aclare cuál ha de ser su color.» Dijo: «Él dice que ha de ser una vaca de color amarillo intenso, que agrade a los que la miren.»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@lxxvii{Dijeron: «Ruega a tu Señor de parte nuestra, que nos explique cuál ha de ser, pues todas las vacas nos parecen semejantes. En verdad, si Dios quiere, seremos bien guiados.»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@lxxviii{Dijo: «Él dice que ha de ser una vaca que no haya sido uncida para arar la tierra, ni para el riego de los campos; sana, sin defecto o marca.» Dijeron: «Ahora has traído la Verdad.» Y la sacrificaron, pero estuvieron a punto de no hacerlo.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@lxxix{Y recordad cuando matasteis a una persona y os acusabais unos a otros. Dios es quien sacó a la luz lo que ocultabais.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@lxxx{Dijimos: «Golpeadle con algo de ella.» Así es como Dios resucita a los muertos y os muestra Sus señales. Quizás así razonéis.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@lxxxi{Tras ello, vuestros corazones se endurecieron como piedras o más aún, pues, en verdad, de algunas piedras brotan ríos y otras se agrietan y sale de ellas agua y algunas de ellas se desmoronan por temor de Dios. Dios no está desatento a lo que hacéis.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@lxxxii{¿Acaso anheláis que ellos os crean, cuando entre ellos hay un grupo que escucha la palabra de Dios y la altera después de haberla razonado y a sabiendas de lo que hace?\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@lxxxiii{Y, cuando se encuentran con aquellos que creen, dicen: «¡Creemos!”, pero cuando se quedan solos, se dicen unos a otros: ¿Es que vais a contarles lo que Dios os ha revelado, para que tengan argumentos contra vosotros ante vuestro Señor? ¿Es que no razonáis?»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@lxxxiv{¿Acaso no saben que Dios conoce lo que ocultan y lo que manifiestan?\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@lxxxv{Entre ellos hay ignorantes que no conocen la Escritura [Sagrada]. No hacen más que suponer.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@lxxxvi{¡Ay! de aquellos que escriben con sus manos la Escritura [Sagrada] y luego dicen: «¡Esto procede de Dios!», vendiéndolo por poco precio. ¡Ay de ellos por lo que escribieron con sus manos! y ¡Ay de ellos por lo que han obtenido!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@lxxxvii{Dicen: «¡No nos quemará el Fuego del infierno más que unos pocos días!» Di: «¿Acaso obtuvisteis una promesa de Dios? Porque Dios no incumple Su promesa. ¿O acaso decís de Dios lo que no conocéis?»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@lxxxviii{¡Sí! Aquellos que acumulan malas obras y están rodeados por sus pecados, esos son la gente del Fuego. En él estarán eternamente.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@lxxxix{Pero aquellos que creen y obran rectamente, esos son la gente del Jardín. En él estarán eternamente.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@xc{Y [recuerda] cuando hicimos un pacto con los Hijos de Israel: «Solamente adoraréis a Dios. Sed buenos con vuestros padres, con vuestros familiares, con los huérfanos y los necesitados. Hablad bien a las personas. Estableced la oración y cumplid con la limosna obligatoria.» Después, excepto unos pocos, os apartasteis e incumplisteis.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@xci{Y [recordad] cuando concertamos un pacto con vosotros: «¡No derramaréis vuestra sangre y no os expulsaréis unos a otros de vuestras casas.» Lo aceptasteis y sois testigos de ello.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@xcii{Pero, sois vosotros mismos los que os matáis unos a otros y expulsáis a algunos de los vuestros de sus casas, ayudándoos entre vosotros a cometer este pecado y esta violación contra ellos. En cambio, cuando llegan a vosotros prisioneros de otros, los rescatáis, cuando vosotros mismos los habíais expulsado aunque os estaba prohibido hacerlo. ¿Acaso creéis en parte de la Escritura [Sagrada] y descreéis de otra parte? Quien así actúe de entre vosotros no obtendrá más recompensa que la desgracia en esta vida, y el Día del Levantamiento seréis sometidos al peor de los castigos. Dios no está desatento de lo que hacéis.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@xciii{Esos son los que han comprado la vida de este mundo al precio de la Otra. No se les aliviará el castigo y no serán auxiliados.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@xciv{Verdaderamente, entregamos a Moisés la Escritura [Sagrada] y después de él seguimos enviando profetas. Y dimos a Jesús hijo de María las pruebas claras y le fortalecimos con el Espíritu Santo. ¿Es que, cada vez que os lleguen Mensajeros que vuestro ego no desea, os mostraréis arrogantes? Habéis desmentido a algunos y a otros los habéis matado.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@xcv{Dijeron: «Nuestros corazones están cerrados.» ¡No! Lo que sucede es que Dios les ha maldecido por su incredulidad. ¡Qué pocos de ellos creen!\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@xcvi{Y cuando les llegó una Escritura procedente de Dios, confirmando lo que tenían, aunque anteriormente pedían la victoria sobre los incrédulos, cuando les llegó lo que conocían, descreyeron de ello. ¡La maldición de Dios sobre los que descreen!\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@xcvii{¡Qué malo es aquello a cambio de lo que han vendido sus almas, no creyendo en lo que Dios ha revelado por envidia de que Dios haga descender Su favor sobre quien Él quiere de Sus siervos! Por ello han incurrido en ira sobre ira. ¡Los que ocultan a Verdad tendrán un castigo humillante!\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@xcviii{Cuando se les dice: «¡Creed en la revelación que Dios hizo descender!», dicen: «¡Creemos en lo que fue hecho descender para nosotros!» Pero no creen en lo que ha venido después, aunque es la Verdad que confirma lo que ya tenían. Di: «Entonces, ¿Por qué habéis matado a los Mensajeros anteriores de Dios, si sois creyentes?»\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@xcix{«Ciertamente, vino a vosotros Moisés con las pruebas claras y, a pesar de ello, tomasteis al becerro en su ausencia. Fuisteis injustos.»\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@c{Y [recordad] cuando concertamos un pacto con vosotros y elevamos sobre vosotros el monte Sinaí. [Dijimos]: «¡Aferraos con fuerza a lo que os hemos otorgado y escuchad!» Dijeron: «¡Escuchamos y desobedecemos!» Se empaparon sus corazones [de amor] por el ternero, debido a su falta de fe. [Diles]: «¡Que malo es lo que os ordena con ello vuestra fe, si sois creyentes!»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@ci{Di: «Si la morada de la otra vida junto a Dios es para vosotros en exclusiva y para nadie más, ¡Desead la muerte si sois veraces!»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@cii{Pero no la desearán jamás debido a lo que cometieron con sus manos. ¡Dios conoce bien a los opresores!\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@ciii{Descubrirás que son los más ávidos de vivir, más incluso que los idólatras. Alguno de ellos desearía vivir mil años, pero no se libraría del castigo por mucho que viviese. Dios observa lo que hacen.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@civ{Di: «Quien sea enemigo de Gabriel [Dios lo será de él]» En verdad, él fue quien trajo [el Corán] a tu corazón, con el permiso de Dios, confirmando lo que él mismo tiene en sus manos y como una guía y buena nueva para los creyentes.»\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@cv{Quien sea enemigo de Dios, de Sus ángeles, de Sus Mensajeros, de Gabriel y del [ángel] Miguel... [sepa que] en verdad, Dios es enemigo de los que no creen.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@cvi{Ciertamente, hicimos descender sobre ti signos evidentes y no descreen de ellos excepto los transgresores.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@cvii{¿Acaso, cada vez que establecen un pacto, un grupo de ellos ha de rechazarlo? Pero la mayoría de ellos no creen.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@cviii{Y cuando llegó a ellos un Mensajero de parte de Dios confirmando lo que tenían, un grupo de aquellos a los que les había sido dada la Escritura [Sagrada] rechazaron la Escritura de Dios, dándole la espalda, como si no supieran [que es la Verdad].\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@cix{Ellos siguieron los que decían los demonios bajo el reinado de Salomón. Salomón no fue idólatra, fueron los demonios los que ocultaron la Verdad y enseñaron a la gente la magia y lo que se hizo descender a los dos ángeles, Harut y Marut, en Babel. Estos dos no enseñaron a nadie sin decirle previamente: «Ciertamente, somos una prueba. No perdáis la fe.» Y los demonios aprendieron de ellos dos lo que permite separar al hombre de su esposa, aunque con ello no puedan perjudicar a nadie, excepto con permiso de Dios. Aprendieron lo que les perjudicaba y no les beneficiaba. Sabían que quien comerciase con esto no tendría parte en los beneficios de la otra vida. ¡Qué malo es aquello a cambio de lo que han vendido sus almas! Si lo hubieran sabido...\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@cx{Y si ellos hubieran creído y temido desagradar a Dios... La recompensa que hay junto a Dios es mejor. Si lo hubieran sabido...\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@cxi{¡Oh, los que creéis! ¡No digáis «raina», sino decid mejor «unzurna» y escuchad! Para los que no creen hay un castigo doloroso.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@cxii{Aquellos de entre las gentes de la Escritura [Sagrada] que no creen y los idólatras, no desean que descienda sobre vosotros ningún bien procedente de vuestro Señor, pero Dios concede Su misericordia a quien Él quiere. Dios es el Dueño del Favor Inmenso.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@cxiii{No abrogamos ningún versículo o hacemos que se olvide, sin aportar algo mejor o igual a ello. ¿Es que no sabes que Dios tiene poder sobre todas las cosas?\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@cxiv{¿Es que no sabes que a Dios pertenecen el reino de los cielos y la Tierra y que, excepto Dios, no tenéis protector o auxiliador?\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@cxv{¿O queréis cuestionar a vuestro Mensajero como fue cuestionado Moisés anteriormente? Quien cambia la fe por la incredulidad, en verdad, se ha extraviado del camino recto.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@cxvi{Tras haberles sido mostrada claramente la Verdad, muchos de entre las gentes de la Escritura [Sagrada] desearían, por pura envidia, que volvierais a la incredulidad después de haber creído. Perdonad, no obstante y no les prestéis atención, hasta que Dios traiga Su decreto. En verdad, Dios tiene poder sobre todas las cosas.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@cxvii{Realizad la oración y dad la limosna obligatoria. Las buenas obras que enviéis por delante en beneficio de vuestras almas, las encontrareis de nuevo junto a Dios. En verdad, Dios observa cuanto hacéis.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@cxviii{Y dijeron: «Sólo entrará en el Jardín quien sea judío o cristiano.» Eso es lo que ellos quisieran. Di: «Aportad vuestras pruebas, si es que sois sinceros.»\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@cxix{¡Sí! ¡Quien se someta a Dios plenamente y haga el bien, tendrá su recompensa junto a su Señor! [Quienes sean así] No tendrán que temer y no estarán tristes.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@cxx{Los judíos dicen: «Los cristianos no están en la Verdad.» Y los cristianos dicen: «Los judíos no están en la Verdad» y eso, a pesar de que todos ellos leen la misma Escritura [Sagrada]. Hablan igual que quienes nada saben. El Día del Levantamiento Dios juzgará entre ellos sobre aquello en lo que no se ponen de acuerdo.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@cxxi{¿Quién es más opresor que quien prohíbe que en las mezquitas de Dios sea recordado Su nombre y se esfuerza en destruirlas. Tales gentes no deben entrar en ellas excepto atemorizados. ¡Sufrirán humillación en esta vida y en la otra un castigo inmenso!\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@cxxii{A Dios pertenecen el Oriente y el Occidente. Por tanto, a donde quiera que os giréis, encontraréis el rostro de Dios. ¡En verdad, Dios todo lo abarca, es sabio!\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@cxxiii{Dijeron: «Dios tiene un hijo.» ¡Gloria a Él! ¡Más bien a Él pertenece lo que hay en los cielos y en la Tierra. Todo Le obedece.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@cxxiv{Él es el Creador de los cielos y de la Tierra. Cuando decreta un asunto, le dice: «¡Sé!» y es.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@cxxv{Los que no saben dicen: «¿Por qué Dios no nos habla directamente o nos trae una señal?» Eso mismo dijeron sus antepasados, Sus corazones son semejantes. En verdad, Hemos explicado claramente nuestras señales a una gente que tiene certeza.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@cxxvi{Ciertamente, te Hemos enviado con la Verdad, portador de la buena nueva y de la advertencia y no se te pedirán cuentas por la gente del Infierno.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@cxxvii{Ni los judíos ni los cristianos estarán satisfechos de ti hasta que no sigas sus creencias. Di: «¡Ciertamente, la guía de Dios es la Guía!». Y si siguieras sus deseos después del conocimiento que te ha llegado, no tendrías protector ni auxiliador de parte de Dios.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@cxxviii{Aquellos a quienes Nosotros dimos la Escritura [Sagrada] y la leen como debe ser leída, esos son los que creen en Él. Y quienes descreen de Él, esos son los perdedores.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@cxxix{¡Oh, Hijos de Israel! Recordad Mi merced, con la cual os agracié, y que Yo os di preferencia sobre todas las naciones,\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@cxxx{y temed un día en el que nadie pueda favorecer a nadie y en el que no serán aceptados el rescate, ni la intercesión, ni el auxilio.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@cxxxi{Y [recuerda] cuando su Señor puso a prueba a Abraham con tareas que él cumplió. Dijo Él: «En verdad, te pondré como Imam para los hombres.» [Abraham] dijo: «¿Y a mi descendencia?» [Dios] dijo: «Mi alianza no incluirá a [quienes sean] opresores.»\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@cxxxii{Y [recuerda] cuando establecimos la Casa como un lugar de reunión y de seguridad para las gentes. «¡Tomad el sitio de Abraham como un lugar de oración!» Y encargamos a Abraham e Ismael que purificasen Mi casa para los que la circunvalan y los que permanecen en ella en adoración y los que inclinan su cabeza y los que ponen su frente en el suelo.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@cxxxiii{Y [recuerda] cuando Abraham dijo: «¡Señor mío! Haz esta tierra segura y provee de frutos a quienes de sus habitantes crean en Dios y en el Último Día.» Dios dijo: «Y a quien no crea le permitiré disfrutar un poco y luego le arrastraré hacia el castigo del Fuego.» ¡Qué mal destino!\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@cxxxiv{Y [recuerda] cuando Abraham levantó los pilares de la Casa junto con Ismael [y suplicó]: «¡Señor nuestro, acéptanoslo! ¡En verdad, Tú eres Quien todo lo oye, Quien todo lo sabe!»\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@cxxxv{«¡Señor nuestro! Haz de nosotros dos gente sometida a Ti y de nuestra descendencia una nación a Ti sometida y muéstranos los ritos de la adoración y perdónanos. En verdad, Tú eres Quien acepta el arrepentimiento, el Misericordiosísimo con los creyentes.»\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@cxxxvi{«¡Señor nuestro! Desígnales, de entre ellos, un Mensajero que les recite Tus versículos y les enseñe la Escritura [Sagrada], la Sabiduría y les purifique. En verdad, Tú eres el Poderoso, el Sabio.»\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@cxxxvii{¿Quién, excepto quien tenga obnubilada su alma, puede abandonar la creencia de Abraham? Ciertamente, le elegimos en este mundo y, en verdad, en el otro es de los justos.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@cxxxviii{Cuando su Señor le dijo: «¡Sométete!» Dijo: «¡Me someto al Señor de los mundos!»\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@cxxxix{Y Abraham se lo encomendó a sus hijos y también Jacob: «¡Oh hijos míos! ¡Ciertamente, Dios ha escogido para vosotros la religión, no muráis sin ser musulmanes!\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@cxl{¿Acaso fuisteis testigos cuando Jacob, estaba en presencia de la muerte y dijo a sus hijos: “¿Qué adoraréis después de mí?». Ellos dijeron: «Adoraremos a tu Dios y Dios de tus padres, Abraham, Ismael e Isaac. Un Dios Único, al Cual nos sometemos.»\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@cxli{Aquella fue una nación que pasó. Ellos obtendrán la recompensa de lo que hicieron y vosotros obtendréis la recompensa de lo que hayáis hecho y no seréis interrogados por lo que ellos hicieron.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@cxlii{Dicen: «¡Sed judíos o cristianos y estaréis bien guiados!» Di: «¡Seguiremos la creencia de Abraham que era hanif y no era de los idólatras!»\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@cxliii{Decid: «Creemos en Dios y en lo que nos fue revelado y en lo que fue revelado a Abraham, a Ismael, a Isaac, a Jacob y a las Tribus, y en lo que fue dado a Moisés y a Jesús, y en lo que fue dado a los profetas por su Señor. No hacemos diferencias entre ninguno de ellos y nos sometemos a Él.»\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@cxliv{Y, si creen en lo mismo que vosotros creéis, estarán, ciertamente, guiados y si dan la espalda estarán, ciertamente, opuestos [a la Verdad] y Dios será suficiente para ti frente a ellos. Él es Quien que todo lo oye, Quien todo lo sabe.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@cxlv{Tinte de Dios. ¿Quién es mejor que Dios tintando? Nosotros somos Sus siervos.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@cxlvi{Di: «¿Vais a disputarnos a Dios, cuando Él es nuestro Señor y el vuestro y nosotros somos responsables de nuestros actos y vosotros de los vuestros y nosotros somos puros con Él?»\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@cxlvii{¿O diréis que Abraham, Ismael, Isaac, Jacob y las tribus fueron judíos o cristianos? Di: «¿Quién es más sabio, vosotros o Dios?» y «¿Quién es más injusto que quien oculta un testimonio que le viene de Dios? Dios no está desatento a lo que hacéis.»\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@cxlviii{Aquella fue una nación que ha pasado. Obtendrán la recompensa de lo que hicieron y vosotros obtendréis la recompensa de lo que hayáis hecho y no seréis interrogados por lo que ellos hicieron.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@cxlix{Los estúpidos de entre las gentes, dirán: «¿Qué les ha hecho dar la espalda a la qibla a la que se orientaban?» Di: «A Dios pertenecen el Oriente y el Occidente. Él guía a quien quiere a un camino recto.»\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@cl{Así mismo hemos hecho de vosotros una comunidad moderada, para que seáis testigos sobre la gente y sea el Mensajero testigo sobre vosotros. No establecimos la Qibla hacía la que te orientabas antes, sino para distinguir a quienes seguían al Mensajero de quienes se volvieron atrás. En verdad, esto es algo arduo, excepto para aquellos a quienes Dios guía. Dios no permitirá que se pierda vuestra fe. En verdad, Dios es benévolo con la gente, Misericordiosísimo.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@cli{Vemos que, a veces, tornas tu rostro hacia el cielo. Así que te volveremos hacia una Qibla que te satisfaga. Vuelve, pues, tu rostro hacia la Mezquita Sagrada, y donde quiera que estéis, volved vuestros rostros en dirección a ella. Ciertamente, aquellos a quienes les fue dada la Escritura [Sagrada] saben con certeza que esto es la Verdad procedente de vuestro Señor. Y Dios no está descuidado de lo que hacen.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@clii{Aquellos a quienes les fue dada la Escritura [Sagrada] no seguirán tu Qibla aunque vayas a ellos con toda clase de señales, y tú no seguirás la Qibla de ellos, ni unos ni otros seguirán la Qibla del otro. Y, si siguieras sus deseos después del conocimiento que ha venido a ti, serías entonces, ciertamente, uno de los opresores.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@cliii{Aquellos a quienes dimos la Escritura [Sagrada], le conocen como conocen a sus hijos y, ciertamente, un grupo de ellos esconde la Verdad a sabiendas de lo que hacen.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@cliv{La Verdad procede de tu Señor, por tanto, no seas de los que dudan.\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@clv{Para cada cual existe una dirección a la que volverse. ¡Id por delante, pues, en la realización de buenas obras! Donde quiera que estéis, Dios os reunirá. En verdad, Dios tiene poder sobre toda cosa.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@clvi{Donde quiera que vayas, vuelve tu rostro en dirección a la Mezquita Sagrada. Ciertamente, esa es la Verdad que provienen de tu Señor. Dios no está descuidado de lo que hacéis.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@clvii{Y, donde quiera que vayas, vuelve tu rostro en dirección a la Mezquita Sagrada y, donde quiera que estéis, volved vuestros rostros en dirección a ella, para que las gentes no tengan argumentos contra vosotros, ni siquiera los opresores. Y nos les temáis a ellos, temedme a Mí, de manera que Yo pueda completar mi bendición sobre vosotros y así podáis ser guiados.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@clviii{Por eso, os hemos enviado un Mensajero de entre vosotros mismos, que os recita Nuestros versículos, os purifica y os enseña la Escritura [Sagrada] y la Sabiduría y os enseña lo que no sabíais.\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@clix{Recordadme, pues, y Yo os recordaré y sed agradecidos conmigo y no ocultéis Mis favores.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@clx{¡Oh vosotros, los que creéis! Buscad ayuda en la paciencia y en la oración. Ciertamente, Dios está con los que son pacientes.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@clxi{Y no digáis de quienes fueron matados en la senda de Dios que están muertos, pues están vivos, aunque vosotros no os deis cuenta.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@clxii{En verdad, os pondremos a prueba con algo de temor, de hambre, de merma de riquezas, vidas y frutos. Pero ¡Da la buena nueva a los que sean pacientes!\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@clxiii{Aquellos que, cuando les aflige una desgracia, dicen: «¡En verdad, pertenecemos a Dios y, en verdad, a Él retornamos!»\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@clxiv{Ellos son los que obtienen las bendiciones y la misericordia de su Señor y ellos son los bien guiados.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@clxv{Ciertamente, algunos de los ritos de Dios son en Safa y Marwa. Por tanto, quién peregrine a la Casa de Dios o la visite, no comete pecado yendo de una a otra. Y quien haga el bien voluntariamente, sepa que, ciertamente, Dios es agradecido, sabio.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@clxvi{A quienes ocultan las pruebas claras y la guía que hicimos descender, después de haberlas explicado claramente a la gente en la Escritura [Sagrada], Dios les maldice y les maldicen los hombres.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@clxvii{Pero a aquellos que se arrepientan y rectifiquen y manifiesten claramente la Verdad, a esos Yo los perdonaré. Yo soy el Perdonador, el Misericordiosísimo con los creyentes.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@clxviii{En verdad, aquellos que no crean y mueran sin creer, incurrirán en la maldición de Dios, de los ángeles y de las gentes todas.\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@clxix{Maldecidos eternamente, no se les aliviará el castigo y no se les dará respiro.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@clxx{Vuestro Dios es un Dios Único. No hay más Dios que Él, el Clementísimo con toda la Creación, el Misericordiosísimo con los creyentes.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@clxxi{En la Creación de los cielos y de la Tierra y en la diferencia entre la noche y el día, en la nave que surca el mar con lo que beneficia a la gente, en el agua que hizo descender Dios de los cielos con la cual vivifica la tierra tras haber estado muerta, diseminando por ella todo tipo de animales; en la variación de los vientos y en las nubes situadas entre el cielo y la Tierra, hay, ciertamente, señales para la gente que razona.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@clxxii{Y entre la gente, hay quienes toman a otros, aparte de Dios, y les aman como sólo se ama a Dios. Pero los creyentes a quien más aman es a Dios. Cuando los opresores vean el castigo de Dios, comprenderán que la fuerza pertenece a Dios y que Dios es duro en el castigo.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@clxxiii{Cuando los que fueron seguidos repudien a quienes les seguían y vean el castigo y se corten los lazos que les unían,\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@clxxiv{aquellos que les seguían dirán: «Si tuviéramos otra oportunidad, les repudiaríamos igual que ellos nos han repudiado a nosotros.» Así les hará ver Dios sus obras, para su propia desgracia. Y nunca saldrán del Fuego.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@clxxv{¡Oh gentes! ¡Comed de lo lícito y bueno que hay en la Tierra y no sigáis los pasos de Satanás. En verdad, él es para vosotros un enemigo declarado.\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@clxxvi{En verdad, os ordena el mal y la indecencia y que digáis de Dios lo que no sabéis.\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@clxxvii{Y cuando se les dice: «Seguid lo que Dios ha revelado», dicen: «Seguiremos aquello que hacían nuestros padres». Pero ¿Y si sus padres no razonaban en absoluto y no estaban bien guiados?\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@clxxviii{El ejemplo de los que no creen es como el de quien grita al ganado, que no oye de él más que una llamada y un grito. Son sordos, mudos, ciegos, no razonan.\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@clxxix{¡Oh, los que creéis! Comed de lo bueno que Nosotros os hemos proporcionado y agradeced a Dios si es sólo a Él a quien adoráis.\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@clxxx{En verdad, Él os ha prohibido la carroña, la sangre, la carne del cerdo y la de todo animal sacrificado en nombre de otro que no sea Dios. Pero quien se vea obligado, no por ánimo de transgredir, ni por soberbia, no será culpable. En verdad, Dios es perdonador. Misericordiosísimo con los creyentes.\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@clxxxi{En verdad, quienes esconden algo de lo que Dios ha revelado de la Escritura [Sagrada] y lo venden por poco precio, no introducen en sus estómagos más que fuego. Dios no les hablará el Día del Levantamiento, ni les purificará y tendrán un castigo doloroso.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@clxxxii{Esos son los que han vendido la Guía a cambio del extravío y el perdón a cambio del castigo. ¿Cómo podrán soportar el Fuego?\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@clxxxiii{Esto es así porque Dios ha hecho descender la Escritura [Sagrada] con la Verdad. Y, ciertamente, quienes no están de acuerdo con la Escritura [Sagrada] están en una posición muy alejada de la Verdad.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@clxxxiv{La virtud no consiste en que volváis vuestros rostros hacia Oriente u Occidente. La virtud consiste en creer en Dios y en el Último Día, en los ángeles, en la Escritura [Sagrada] y en los profetas. En dar de los bienes, por mucho amor que se les tenga, a los familiares, a los huérfanos, a los necesitados, a los mendigos, a los viajeros y para liberar esclavos. En hacer la oración, dar la limosna obligatoria, cumplir los compromisos cuando se contraen y en ser pacientes ante las dificultades y las desgracias y en tiempos de peligro. ¡Estos son los sinceros y los temerosos de desagradar a Dios!\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@clxxxv{¡Oh, los que creéis! ¡Ha sido decretada para vosotros la ley del talión en caso de asesinato: el libre por el libre y el esclavo por el esclavo y la hembra por la hembra! Pero, si alguien rebaja a su hermano la condena, que no le presione en el pago de lo establecido y que éste le compense bondadosamente por la sangre derramada. Esto es un alivio procedente de vuestro Señor y una misericordia. Y quien, después de esto, viole la ley, recibirá un castigo doloroso.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@clxxxvi{En la ley del talión hay vida para vosotros. ¡Oh gente dotada de entendimiento! Quizás así seáis temerosos de Dios.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@clxxxvii{Se os ha prescrito que, cuando se le presente a uno de vosotros la muerte, si deja algunos bienes, testamente a favor de sus padres y de sus familiares cercanos, según el uso establecido. Esto es un deber para los temerosos de Dios.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@clxxxviii{Y si alguien lo cambia después de haberlo oído, ciertamente, el pecado será de aquellos que lo cambien. Ciertamente, Dios todo lo oye, todo lo sabe.\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@clxxxix{Y quien tema una arbitrariedad o una injusticia por parte del testador y procure un arreglo entre las partes afectadas, no comete pecado. Ciertamente Dios es Perdonador, Misericordiosísimo con los creyentes.\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@cxc{¡Oh, los que creéis! Se os ha ordenado que ayunéis, de la misma manera que fue ordenado a quienes os precedieron. Quizás así seáis temerosos de Dios.\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@cxci{Son unos días determinados. Pero, quien de vosotros esté enfermo o de viaje, que ayune un número igual de días en otro momento. Y aquellos para quienes sea de gran dificultad que, en compensación, den de comer a una persona necesitada. Pero quien voluntariamente quiera dar más alimento, mejor para él. Aunque, si queréis saberlo, ayunar es mejor para vosotros.\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@cxcii{El mes de Ramadán, en el cual fue hecho descender el Corán, como una guía para la gente, como indicaciones claras de la Guía y del Discernimiento. Por tanto, quien de vosotros esté presente ese mes, que ayune en él. Y quien esté enfermo o de viaje, que ayune un número igual de días en otro momento. Quiere Dios para vosotros la facilidad y no quiere para vosotros la dificultad y quiere que completéis el número de días y que ensalcéis a Dios por haberos guiado y así, quizás, seáis de los que agradecen.\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@cxciii{Y cuando Mis siervos te pregunten por Mí, [diles que] en verdad, Yo estoy cerca y respondo la súplica del suplicante cuando Me suplica. Por tanto que Me respondan y crean en Mí, para que, quizás así, sean bien dirigidos.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@cxciv{Durante las noches del mes del ayuno, es lícito para vosotros la unión con vuestras mujeres. Ellas son una vestidura para vosotros y vosotros sois una vestidura para ellas. Dios supo que os traicionabais a vosotros mismos, así que os perdonó y os excusó. Así pues, ahora, yaced con ellas y buscad lo que Dios ha decretado para vosotros. Y comed y bebed hasta que podáis distinguir la línea blanca de la línea negra al amanecer. Después, completad el ayuno hasta la noche. Y no tengáis relación sexual con ellas mientras estéis de retiro en las mezquitas. Esos son los límites de Dios, así pues, no os acerquéis a ellos. De esta manera aclara Dios sus indicaciones a las gentes. Quizás así sean temerosos.\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@cxcv{Y no os comáis vuestras riquezas unos a otros de forma ilícita ni ofrezcáis de ellas a los jueces para comeros parte de las riquezas de la gente injustamente y a sabiendas de lo que hacéis.\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@cxcvi{Te preguntarán sobre las fases crecientes de la Luna. Di: «Sirven a la gente para computar el tiempo y para determinar la fecha de la peregrinación.» La virtud no consiste en que entréis en las casas por la parte trasera, sino en que tengáis temor de desagradar a Dios. ¡Entrad en las casas por sus puertas y temed disgustar a Dios! Quizás así tengáis éxito.\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@cxcvii{Y combatid en la senda de Dios contra aquellos que os combatan, pero no seáis agresores. Ciertamente, Dios no ama a los agresores.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@cxcviii{Matadles donde quiera que os encontréis con ellos y expulsadles de donde ellos os expulsaron. La idolatría es peor que matar. Y no combatáis contra ellos junto a la Mezquita Sagrada mientras ellos no os combatan allí. Pero si os combaten ¡combatidles! Esa es la recompensa de los idólatras.\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@cxcix{Pero si cesan, sepan que, ciertamente, Dios es perdonador, Misericordiosísimo.\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@cc{Combatid contra ellos hasta que no quede idolatría y la creencia sea sólo en Dios. Y si cesan su ataque que no haya más hostilidades que contra los tiranos.\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@cci{El mes sagrado por el mes sagrado. A las cosas sagradas también se les aplica la ley del Talión. Y a quien os ataque, atacadle en la misma medida en que él os atacó. Y temed disgustar a Dios y sabed que Dios está con quienes temen disgustarle.\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@ccii{Repartid de vuestra riqueza, por amor a Dios. No os destruyáis con vuestra propia mano y haced el bien. Ciertamente Dios ama a quienes hacen el bien.\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@cciii{Completad el Hach y la ‘Umra por Dios. Y si no podéis hacerlo, sacrificad un animal. Y no afeitéis vuestras cabezas hasta que el animal esté en el lugar del sacrificio. Y quien de vosotros esté enfermo o tenga un daño en la cabeza, que lo compense ayunando o dando limosna o sacrificando un animal. Y cuando estéis a salvo, quien una la peregrinación menor a la mayor, que sacrifique un animal según sus posibilidades. Y quien no encuentre cómo, que ayune tres días durante la peregrinación mayor y siete cuando haya regresado, completando así diez. Esto incumbe a aquel cuya familia no viva cerca de la Mezquita Sagrada. ¡Temed disgustar a Dios y sabed que Dios es severo en el castigo.\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@cciv{La peregrinación mayor se lleva a cabo en meses determinados. Por tanto, quien se proponga realizar la peregrinación mayor en ellos, que no mantenga relaciones sexuales, ni peque, ni dispute durante ella. El bien que realicéis, Dios lo sabrá. Y tomad provisiones, pero, desde luego, la mejor provisión es el temor de disgustar a Dios. Así pues, ¡Temed disgustarme! ¡Oh, los dotados de discernimiento!\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@ccv{No pecáis al buscar el favor de vuestro Señor. Y, cuando partáis de Arafat, recordad a Dios junto a Mashar al-Haram. Recordad como os guió cuando, anteriormente, erais de los extraviados.\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@ccvi{Partid, pues, de donde parte toda la gente y pedid el perdón de Dios. En verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@ccvii{Y cuando hayáis cumplido con vuestros ritos recordad a Dios como recordáis a vuestros padres o con un recuerdo aún mayor. Hay entre las gentes quien dice: «¡Señor nuestro! ¡Danos en esta vida!» y no tendrán parte en lo bueno de la otra.\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@ccviii{Y, entre ellos, están los que dicen: «¡Señor nuestro! ¡Danos lo bueno en esta vida y lo bueno en la otra y protégenos del castigo del Fuego!»\qt@no{(201)}}
+\qt@newcmd\qurantrans@es@ccix{Ellos obtendrán la recompensa de lo que hayan realizado. ¡Dios es rápido haciendo las cuentas!\qt@no{(202)}}
+\qt@newcmd\qurantrans@es@ccx{Recordad a Dios en días determinados. Y, quien lo limite a dos días, no peca y quien lo prolongue tampoco peca. Eso es para quien tema desagradar a Dios. Temed desagradar a Dios y sabed que seréis congregados hacia Él.\qt@no{(203)}}
+\qt@newcmd\qurantrans@es@ccxi{Y entre las gentes, hay quien te sorprende con su manera de hablar de la vida de este mundo y que pone a Dios como testigo de lo que hay en su corazón, pero es el más acérrimo adversario.\qt@no{(204)}}
+\qt@newcmd\qurantrans@es@ccxii{Y, cuando te da la espalda, se esfuerza por corromper en la Tierra y destruir la cosecha y el ganado. Y Dios no ama la corrupción.\qt@no{(205)}}
+\qt@newcmd\qurantrans@es@ccxiii{Y si se le dice: «¡Teme desagradar a Dios!» se apodera de él un orgullo pecador. El Fuego del Infierno será su retribución. ¡Qué mal lugar para descansar!\qt@no{(206)}}
+\qt@newcmd\qurantrans@es@ccxiv{Y, entre las gentes, hay quien sacrifica su persona buscando satisfacer a Dios. Y Dios es benévolo con los siervos.\qt@no{(207)}}
+\qt@newcmd\qurantrans@es@ccxv{¡Oh, los que creéis! ¡Entrad todos en la Paz y no sigáis la senda extraviada de Satanás, que es vuestro enemigo declarado!\qt@no{(208)}}
+\qt@newcmd\qurantrans@es@ccxvi{Y si os equivocáis después de haber llegado a vosotros las pruebas claras, sabed que Dios es poderoso, sabio.\qt@no{(209)}}
+\qt@newcmd\qurantrans@es@ccxvii{¿Acaso piensan que vendrán a ellos Dios y los ángeles entre las sombras de una nube a resolver el asunto? ¡Todos los asuntos regresan a Dios!\qt@no{(210)}}
+\qt@newcmd\qurantrans@es@ccxviii{Pregunta a los Hijos de Israel cuántas señales claras les dimos. Quien cambie la bendición de Dios, después de lo que le ha llegado... Ciertamente Dios es severo en el castigo.\qt@no{(211)}}
+\qt@newcmd\qurantrans@es@ccxix{La vida de este mundo ha sido embellecida para los que no creen, que se burlan de aquellos que creen. Pero, aquellos que temen desagradar a Dios estarán por encima de ellos el Día del Levantamiento. Y Dios provee sin medida a quien Él quiere.\qt@no{(212)}}
+\qt@newcmd\qurantrans@es@ccxx{La Humanidad constituía una sola comunidad y después Dios designó a los profetas como portadores de buenas nuevas y advertidores [del castigo] e hizo descender con ellos la Escritura [Sagrada] con la Verdad para que juzgasen entre los hombres en aquello en lo que no se ponían de acuerdo. Después de haber llegado a ellos las pruebas claras, aquellos a los que les fueron dadas no discreparon, excepto algunos por envidia entre ellos. A aquellos que creían, Dios, por su voluntad, les guió a la Verdad de aquello en lo que discrepaban. Dios guía a quien Él quiere al camino recto.\qt@no{(213)}}
+\qt@newcmd\qurantrans@es@ccxxi{¿Acaso contabais con entrar en el Jardín sin soportar cosas parecidas a las que sufrieron los que vinieron antes de vosotros? Sufrieron la pena y la dificultad, y tal conmoción que el Mensajero y los que creyeron con él dijeron: «¿Cuándo llegará el auxilio de Dios?» ¿Acaso el auxilio de Dios no está cercano?\qt@no{(214)}}
+\qt@newcmd\qurantrans@es@ccxxii{Te preguntan qué es lo que deben gastar. Di: «Los bienes que repartáis, que sea a vuestros padres, a los familiares, a los huérfanos, a los necesitados y a los viajeros.» Dios conoce perfectamente el bien que hacéis.\qt@no{(215)}}
+\qt@newcmd\qurantrans@es@ccxxiii{Ha sido decretado para vosotros el combate, aunque os disguste. Puede que algo os disguste y, sin embargo, sea un bien para vosotros. Y puede que algo os agrade y sea un perjuicio para vosotros. Dios sabe y vosotros no sabéis.\qt@no{(216)}}
+\qt@newcmd\qurantrans@es@ccxxiv{Te preguntan sobre la conveniencia de combatir en el mes sagrado. Di: «Combatir en él es algo grave. Pero poner obstáculos en el camino de Dios y no creer en Él, no respetar la Mezquita Sagrada y expulsar de ella a su gente es más grave ante Dios.» La incredulidad es peor que combatir. Y no cesarían de combatiros hasta apartaros de vuestra fe, si pudieran. Y, quienes de vosotros abandonen su religión y mueran sin ser creyentes, habrán invalidado todos sus buenos actos en esta vida y en la otra. Esos serán la gente que morará eternamente en el Fuego.\qt@no{(217)}}
+\qt@newcmd\qurantrans@es@ccxxv{En verdad, aquellos que creen y emigran y se esfuerzan en la senda de Dios, pueden esperar la misericordia de Dios. Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(218)}}
+\qt@newcmd\qurantrans@es@ccxxvi{Te preguntan sobre los embriagantes y los juegos de azar. Di: «En ambos hay un gran perjuicio y también un beneficio para la gente, pero el perjuicio que hay en ambos es mayor que el beneficio.» Y te preguntan qué deben repartir. Di: «Lo que excede a las propias necesidades.» De esta manera os aclara Dios sus señales. Quizás así reflexionéis\qt@no{(219)}}
+\qt@newcmd\qurantrans@es@ccxxvii{sobre esta vida y sobre la otra. Te preguntan sobre los huérfanos. Di: «Mejorar su vida está bien. Y, si mezcláis [vuestros bienes] con los de ellos, [tratadles] como hermanos vuestros.» Dios distingue al corruptor del reformador. Si Dios hubiera querido os lo habría puesto difícil. Dios es, ciertamente, poderoso, sabio.\qt@no{(220)}}
+\qt@newcmd\qurantrans@es@ccxxviii{Y no os caséis con las idólatras hasta que crean. Una esclava creyente es mejor que una mujer libre idólatra, aunque ésta os guste más. Y no caséis [a vuestras mujeres] con los idólatras hasta que éstos crean. Un esclavo creyente es mejor que un hombre libre idólatra, aunque éste os guste más. Esos invitan al Fuego y Dios invita al Jardín y al perdón, si Él quiere. Y aclara Sus señales a la gente. ¡Quizás así se dejen amonestar!\qt@no{(221)}}
+\qt@newcmd\qurantrans@es@ccxxix{Te preguntan sobre la menstruación. Di: «Es molesta e impura. Absteneos, pues, de las mujeres durante la menstruación y no os acerquéis a ellas hasta que se hayan purificado. Y, una vez que estén purificadas, id a ellas tal como Dios os ha ordenado.» En verdad, Dios ama a quienes se vuelven a Él arrepentidos y ama a los que se purifican.\qt@no{(222)}}
+\qt@newcmd\qurantrans@es@ccxxx{Vuestras mujeres son un campo de labranza para vosotros. Id, pues, a vuestro campo como deseéis. Y enviad algo por delante para vosotros mismos. Temed desagradar a Dios y sabed que os encontraréis con Él. ¡Y anuncia buenas nuevas a los creyentes!\qt@no{(223)}}
+\qt@newcmd\qurantrans@es@ccxxxi{Y no pongáis a Dios por testigo en vuestros juramentos, de manera que os impida practicar la bondad. Y sed temerosos de Dios y haced el bien entre la gente. Dios todo lo oye, todo lo sabe.\qt@no{(224)}}
+\qt@newcmd\qurantrans@es@ccxxxii{Dios no os tiene en cuenta lo vano de vuestros juramentos, pero sí que tiene en cuenta la intención de vuestros corazones. Dios es perdonador, indulgente.\qt@no{(225)}}
+\qt@newcmd\qurantrans@es@ccxxxiii{Aquellos que juren a sus esposas no mantener relaciones con ellas, tendrán cuatro meses de plazo y, si se retractan, en verdad, Dios es perdonador, Misericordiosísimo con los creyentes.\qt@no{(226)}}
+\qt@newcmd\qurantrans@es@ccxxxiv{Pero, si se deciden por el divorcio... Dios todo lo oye, todo lo sabe.\qt@no{(227)}}
+\qt@newcmd\qurantrans@es@ccxxxv{Las divorciadas deberán esperar tres menstruaciones completas y no es lícito para ellas que oculten lo que Dios haya creado en su seno, si creen en Dios y en el Último Día. Sus esposos tienen más derecho a retornar a ellas durante este tiempo, si desean arreglarlo. Y las mujeres tienen derechos equivalentes a sus obligaciones, conforme a lo razonable. Y los hombres un grado sobre ellas. Dios es todopoderoso, sabio.\qt@no{(228)}}
+\qt@newcmd\qurantrans@es@ccxxxvi{El divorcio [de la misma esposa es permisible] dos veces. Así pues, o se la toma tratándola como es debido o se la deja ir buenamente. Y no es lícito para vosotros que toméis nada de lo que les disteis, excepto que ambos teman no respetar los límites impuestos por Dios. Pero si teméis que no respeten los límites impuestos por Dios, no hay inconveniente para ninguno de los dos en que ella obtenga su libertad compensando al esposo. Esas son las leyes de Dios ¡No las violéis! Y quienes violen las leyes de Dios serán los opresores.\qt@no{(229)}}
+\qt@newcmd\qurantrans@es@ccxxxvii{Y si la divorcia de nuevo, ya no será lícita para él tras ello, hasta que se case con otro esposo diferente. Y sí éste la divorcia, no hay inconveniente en que ambos vuelvan, si creen que respetarán las leyes de Dios. Estas son las leyes de Dios, que Él explica a gente que sabe.\qt@no{(230)}}
+\qt@newcmd\qurantrans@es@ccxxxviii{Y, cuando divorciéis a vuestras mujeres y éstas hayan cumplido su plazo de espera, tomadlas como es debido o dejadlas ir como es debido, pero no las retengáis causándoles molestias, transgrediendo las leyes de Dios, pues, quien actúe así, será injusto consigo mismo. No toméis las señales de Dios a burla y recordad la bendición de Dios para vosotros y lo que Él os reveló de la Escritura [Sagrada] y de la Sabiduría, para advertiros con ello. Temed a Dios y sabed que Dios tiene conocimiento de todas las cosas.\qt@no{(231)}}
+\qt@newcmd\qurantrans@es@ccxxxix{Y cuando hayáis divorciado a las mujeres y éstas hayan cumplido su plazo de espera, no les impidáis que vuelvan a casarse con sus esposos anteriores si lo desean de mutuo acuerdo. Se exhorta a ello a quien de vosotros crea en Dios y en el Último Día. Eso es más correcto para vosotros y más puro. Dios sabe y vosotros no sabéis.\qt@no{(232)}}
+\qt@newcmd\qurantrans@es@ccxl{Las madres amamantarán a sus hijos dos años completos si quiere consumar el periodo de lactancia. Y el progenitor la proveerá de alimento y vestido de manera adecuada. No se obliga a nadie más allá de su capacidad. No será perjudicada una madre por su hijo ni un padre por su hijo. Y lo mismo se aplica al heredero. Y si ambos, de mutuo acuerdo y consultándose, desean destetar al hijo antes de tiempo, no cometen falta. Y si deseáis que otra persona amamante a vuestros hijos, no cometéis falta mientras lo paguéis conforme a lo que es justo. ¡Temed a Dios y sabed que Dios observa lo que hacéis!\qt@no{(233)}}
+\qt@newcmd\qurantrans@es@ccxli{Y, las esposas de quienes fallezcan deberán esperar cuatro meses y diez días y, cuando completen su plazo, no cometéis falta alguna por lo que ellas hagan consigo mismas, conforme a lo establecido. Dios está informado de lo que hacéis.\qt@no{(234)}}
+\qt@newcmd\qurantrans@es@ccxlii{Y no cometéis falta si insinuáis a las mujeres vuestra intención de contraer matrimonio o lo guardáis escondido en vuestras almas. Dios sabe que pronto pensaréis en ellas [para el matrimonio]. Pero no les prometáis nada en secreto. Mejor, habladles como es debido y no formalicéis el contrato de matrimonio hasta que no concluya su periodo de espera. Y sabed que Dios conoce lo que hay en vuestras almas. Tened, pues, cuidado de Él. Pero sabed que Dios es perdonador, indulgente.\qt@no{(235)}}
+\qt@newcmd\qurantrans@es@ccxliii{No cometéis falta si divorciáis a las mujeres que aun no habéis tocado ni asignado dote. Proveedlas, no obstante, adecuadamente. El acaudalado conforme a sus posibilidades y el pobre conforme a las suyas. Eso es un deber para los virtuosos.\qt@no{(236)}}
+\qt@newcmd\qurantrans@es@ccxliv{Y, si las divorciáis antes de haberlas tocado pero después de haberles asignado dote, entonces [entregadles] la mitad de lo asignado, excepto que ellas, o aquel en cuyas manos esté el contrato de matrimonio, renuncien a ello. Y renunciar está más cerca del temor de Dios. Y no olvidéis favoreceros entre vosotros. Ciertamente, Dios observa lo que hacéis.\qt@no{(237)}}
+\qt@newcmd\qurantrans@es@ccxlv{Cuidad vuestras oraciones y, [especialmente], la oración del medio, y permaneced ante Dios con humildad.\qt@no{(238)}}
+\qt@newcmd\qurantrans@es@ccxlvi{Y, si tenéis temor, pues a pie o montados. Y cuando estéis seguros, recordad a Dios y cómo Él os enseñó lo que no sabíais.\qt@no{(239)}}
+\qt@newcmd\qurantrans@es@ccxlvii{Y aquellos de vosotros que mueran dejando esposas deben testar para sus esposas la manutención de un año sin echarlas. Pero si ellas se marchan, entonces no cometéis falta por lo que ellas hagan con sus personas buenamente. Dios es poderoso, sabio.\qt@no{(240)}}
+\qt@newcmd\qurantrans@es@ccxlviii{Y a las divorciadas proveedlas adecuadamente. Eso es una obligación para los temerosos de Dios.\qt@no{(241)}}
+\qt@newcmd\qurantrans@es@ccxlix{Así os explica Dios sus versículos. Quizás así razonéis.\qt@no{(242)}}
+\qt@newcmd\qurantrans@es@ccl{¿No has visto a aquellos que salieron de sus casas por miles, temiendo la muerte? Dios les dijo: «¡Morid!» y luego les dio la vida. Ciertamente, Dios favorece a la gente, pero la mayoría de la gente no lo agradece.\qt@no{(243)}}
+\qt@newcmd\qurantrans@es@ccli{¡Combatid en la senda de Dios! Y sabed que Dios todo lo oye, todo lo sabe.\qt@no{(244)}}
+\qt@newcmd\qurantrans@es@cclii{¿Quién hará a Dios un préstamo generoso? Dios se lo devolverá multiplicado. Dios es quien da la estrechez y el desahogo y a Él regresaréis.\qt@no{(245)}}
+\qt@newcmd\qurantrans@es@ccliii{Acaso no has visto a los notables de los Hijos de Israel cuando, después de Moisés, le dijeron a su profeta: «Desígnanos un rey para que luchemos por la causa de Dios.» Él dijo: «Puede que no acudáis al combate si se os convoca a él.» Ellos dijeron: «¿Cómo no vamos a combatir en la senda de Dios cuando se nos ha expulsado de nuestras casas y [alejado] de nuestros hijos?» Pero cuando se les ordenó que combatieran, excepto unos pocos, todos dieron la espalda. Dios conoce bien a los injustos.\qt@no{(246)}}
+\qt@newcmd\qurantrans@es@ccliv{Su profeta les dijo: «Dios os ha designado a Saúl para que sea vuestro rey.» Ellos dijeron: «¿Cómo puede él reinar sobre nosotros, teniendo nosotros más derecho a reinar, ya que a él no le ha sido concedida una gran riqueza?» Él dijo: «Ciertamente, Dios le ha preferido a vosotros y le ha otorgado más conocimiento y fuerza física.» Dios da Su reino a quien Él quiere. Ciertamente, la bondad de Dios todo lo alcanza, Él todo lo sabe.\qt@no{(247)}}
+\qt@newcmd\qurantrans@es@cclv{Y su profeta les dijo: «En verdad, la señal de su reinado será que vendrá a vosotros, transportada por los ángeles, el Arca portadora de la tranquilidad, que procede de vuestro Señor y de las reliquias que dejaron la familia de Moisés y la familia de Aarón. En ello hay una señal para vosotros, si sois creyentes.»\qt@no{(248)}}
+\qt@newcmd\qurantrans@es@cclvi{Y, cuando Saúl salió con el ejercito, les dijo: «Dios os pone a prueba con un río. Quien beba de él no será de los míos, pero quien no beba de él, excepto un sorbo con el hueco de su mano, será, ciertamente, de los míos.» Pero, excepto unos pocos, todos bebieron abundantemente de él, así que, cuando lo hubieron atravesado, él y los que con él habían creído, dijeron: «Hoy no podremos vencer a Goliat y a sus ejércitos.» Los que contaban encontrarse con Dios, dijeron: «¡Cuántas veces un grupo reducido ha vencido a un grupo numeroso, con el permiso de Dios! ¡Dios está con quienes son pacientes!»\qt@no{(249)}}
+\qt@newcmd\qurantrans@es@cclvii{Y cuando salieron al encuentro de Goliat y sus ejércitos, dijeron: «¡Señor nuestro! ¡Fortalece nuestra paciencia, afirma nuestros pasos y auxílianos contra la nación de los que no creen!»\qt@no{(250)}}
+\qt@newcmd\qurantrans@es@cclviii{Y les derrotaron, con el permiso de Dios. David mató a Goliat y Dios le entregó el gobierno y la sabiduría, y le enseñó lo que Él quiso. Si Dios no hubiera defendido a unos hombres por medio de otros, seguramente, la Tierra se habría corrompido. Pero Dios otorga Sus favores a las criaturas.\qt@no{(251)}}
+\qt@newcmd\qurantrans@es@cclix{Estos son los versículos de Dios, conteniendo la Verdad [de lo que sucedió], que Nosotros recitamos para ti. Y, ciertamente, [ello es una señal de que tú] eres uno de los Mensajeros.\qt@no{(252)}}
+\qt@newcmd\qurantrans@es@cclx{Estos son los Mensajeros. A algunos de ellos les hemos favorecido sobre los otros. Dios habló a algunos y a otros les elevó en dignidad. Dimos a Jesús hijo de María las pruebas claras y le fortalecimos con el Espíritu Santo. Si Dios hubiera querido, sus seguidores no habrían peleado entre ellos después de haberles llegado las pruebas claras. Pero discreparon. Algunos de ellos creyeron y otros no creyeron. Aunque, si Dios hubiera querido, no habrían peleado entre ellos. Pero Dios hace lo que quiere.\qt@no{(253)}}
+\qt@newcmd\qurantrans@es@cclxi{¡Oh, los que creéis! Dad de lo que os hemos proporcionado, antes de que llegue un día en el que no sirvan ni el comercio, ni la amistad ni la intercesión ¡Los que ocultan la Verdad, esos son los opresores!\qt@no{(254)}}
+\qt@newcmd\qurantrans@es@cclxii{¡Al.lah! ¡No hay más dios que Él! El Vivo, El Soporte de la Vida. No le afectan la somnolencia ni el sueño. A Él pertenece todo lo que existe en los cielos y en la Tierra. ¿Quién puede interceder por alguien ante Él, si no es con Su permiso? Él conoce lo que hay ante ellos y lo que hay tras ellos mientras que ellos no abarcan nada de Su conocimiento, excepto lo que Él quiera (enseñarles). Su Trono se extiende sobre los cielos y la Tierra y cuidar de ello no Le causa fatiga. Él es el Altísimo, El Inmenso.\qt@no{(255)}}
+\qt@newcmd\qurantrans@es@cclxiii{No se puede forzar a nadie a aceptar la religión. El buen camino ha quedado claramente diferenciado del extravío. Así que, quien descrea de los falsos dioses y crea en Dios, se habrá aferrado al asidero más firme, en el que no hay fisuras. Dios todo lo oye, todo lo sabe.\qt@no{(256)}}
+\qt@newcmd\qurantrans@es@cclxiv{Dios es el Protector y Amigo de aquellos que creen. Él les saca de las tinieblas hacia la Luz. Pero, aquellos que no creen, tienen por maestros a los falsos ídolos que los llevan de la Luz a las tinieblas. Esos son la gente del Fuego en el cual estarán eternamente.\qt@no{(257)}}
+\qt@newcmd\qurantrans@es@cclxv{¿No te has fijado en el que disputaba con Abraham sobre su Señor, porque Dios le había otorgado el gobierno? Cuando Abraham dijo: «Mi Señor es Quien da la vida y la muerte», él dijo: «Yo doy vida y muerte.» Dijo Abraham: «Ciertamente, Dios trae el Sol por el Oriente. Tráelo pues, tú por el Occidente.» Así fue confundido el que ocultaba la Verdad. Dios no guía a los opresores.\qt@no{(258)}}
+\qt@newcmd\qurantrans@es@cclxvi{O en aquel que pasó por una ciudad en ruinas, caídas las paredes sobre los techos. Dijo: «¿Cómo la devolverá Dios a la vida después de haber muerto?» Entonces, Dios le hizo estar muerto durante cien años y luego le resucitó. Dijo: «¿Cuánto tiempo has permanecido así?» Dijo: «He permanecido así un día o parte de un día.» Dijo: «¡No! ¡Has permanecido así cien años! Mira tu comida y tu bebida, no han cambiado, pero mira a tu asno. Haremos de ti una señal para la gente. Mira, pues, los huesos, cómo los recomponemos y los recubrimos de carne.» Cuando fue evidente para él, dijo: «Ahora sé que Dios tiene poder sobre todas las cosas.»\qt@no{(259)}}
+\qt@newcmd\qurantrans@es@cclxvii{Y [recuerda] cuando Abraham dijo: «¡Señor mío! ¡Muéstrame como das vida a lo que está muerto!» Dijo [Dios]: «¿Acaso no crees?» Respondió: «¡Sí, por supuesto! Es para que mi corazón tenga certeza.» Él [Dios] dijo: «Toma cuatro pájaros. Córtalos en trozos. Luego, pon una parte de ellos en cada montaña. Luego ¡Llámales! Vendrán a ti rápidamente. Y sabe que Dios es poderoso, sabio.»\qt@no{(260)}}
+\qt@newcmd\qurantrans@es@cclxviii{Aquellos que gastan su riqueza en la senda de Dios son semejantes a una semilla que produce siete espigas, en cada una de las cuales hay cien granos. Así incrementa Dios los bienes de quien Él quiere. La bondad de Dios todo lo alcanza, Él todo lo sabe.\qt@no{(261)}}
+\qt@newcmd\qurantrans@es@cclxix{Quienes gastan sus riquezas en la senda de Dios sin, a continuación, hacer alarde de lo que han gastado ni ofender, tendrán su recompensa junto a su Señor y no tendrán temor ni estarán tristes.\qt@no{(262)}}
+\qt@newcmd\qurantrans@es@cclxx{Una palabra amable y un perdón son mejores que una caridad seguida de una ofensa. Dios se basta a Sí mismo, es Indulgente.\qt@no{(263)}}
+\qt@newcmd\qurantrans@es@cclxxi{¡Oh, los que creéis! No arruinéis vuestros actos de caridad con reproches y ofensas, como el que gasta sus riquezas por ostentación ante la gente pero no cree en Dios ni en el Último Día. Ese es semejante a una roca sobre la que hay tierra. Cae sobre ella un aguacero y la deja desnuda. No podrán beneficiarse de nada de lo que obtuvieron. Y Dios no guía a la gente que no cree.\qt@no{(264)}}
+\qt@newcmd\qurantrans@es@cclxxii{Pero, aquellos que gastan de su riqueza por deseo de agradar a Dios y edificación de su propia alma, son como un jardín en una colina. Cae sobre él un aguacero y da de frutos el doble. Y si no le cae la lluvia lo hace el rocío. Y Dios observa lo que hacéis.\qt@no{(265)}}
+\qt@newcmd\qurantrans@es@cclxxiii{¿Desearía alguno de vosotros poseer un jardín de palmeras y viñedos por el que corriesen los arroyos y hubiera toda clase de frutos y que le en el que llegase la vejez siendo sus hijos débiles aún y que un huracán de fuego cayera sobre él [el jardín] y se lo quemara? De esa manera os aclara Dios sus señales. Quizás así reflexionéis.\qt@no{(266)}}
+\qt@newcmd\qurantrans@es@cclxxiv{¡Oh, los que creéis! Repartid de las cosas buenas que obtuvisteis y de lo que hicimos salir de la tierra para vosotros y no escojáis lo malo para repartir, cuando vosotros mismos no lo aceptaríais a no ser con los ojos cerrados. Y sabed que Dios todo lo posee, es digno de alabanza.\qt@no{(267)}}
+\qt@newcmd\qurantrans@es@cclxxv{Satanás os atemoriza con la pobreza y os ordena la avaricia, pero Dios os promete Su perdón y Su favor. Y la bondad de Dios todo lo alcanza, Él todo lo sabe.\qt@no{(268)}}
+\qt@newcmd\qurantrans@es@cclxxvi{Otorga la sabiduría a quien Él quiere. Y, a quien le es dada la sabiduría, recibe un bien abundante. Pero no reflexionan más que los dotados de intelecto.\qt@no{(269)}}
+\qt@newcmd\qurantrans@es@cclxxvii{Cualquier caridad que repartáis por orden de Dios o por propia iniciativa, ciertamente, Dios lo sabe. Y los opresores no tendrán quien les auxilie.\qt@no{(270)}}
+\qt@newcmd\qurantrans@es@cclxxviii{Si hacéis caridad abiertamente, eso está bien, pero si la ocultáis y dais a los necesitados, eso es mejor para vosotros y servirá de compensación por algunas de vuestras malas acciones. Y Dios está informado de lo que hacéis.\qt@no{(271)}}
+\qt@newcmd\qurantrans@es@cclxxix{No es responsabilidad tuya guiarles, sino que es Dios quien guía a quien Él quiere. Y los bienes que repartáis os benefician a vosotros mismos. No gastéis sino es buscando agradar a Dios. Y lo bueno que deis, volverá a vosotros y no seréis oprimidos.\qt@no{(272)}}
+\qt@newcmd\qurantrans@es@cclxxx{Que sea para los necesitados que se encuentran en dificultades por su dedicación a la causa de Dios, sin poder desplazarse por la Tierra. El ignorante piensa que son ricos, por su discreción. Los reconocerás por sus señales. Ellos no piden a la gente, molestándola. Cualquier bien que gastéis, ciertamente, Dios sabe de ello.\qt@no{(273)}}
+\qt@newcmd\qurantrans@es@cclxxxi{Aquellos que reparten sus bienes de noche y de día, en secreto y abiertamente, tendrán su recompensa junto a su Señor y no tendrán que temer y no estarán tristes.\qt@no{(274)}}
+\qt@newcmd\qurantrans@es@cclxxxii{Aquellos que comen de la usura, no se levantarán sino como se levanta quien ha sido tocado de locura por Satanás, y no pueden mantener su equilibrio, por haber dicho: «Ciertamente, la venta es igual que la usura.», cuando Dios ha hecho lícita la venta y ha prohibido la usura. A quien le llegó una exhortación procedente de su Señor y renunció, podrá quedarse lo que obtuvo y su caso será remitido a Dios. Pero quien reincida, será de la gente del Fuego, en el que estarán eternamente.\qt@no{(275)}}
+\qt@newcmd\qurantrans@es@cclxxxiii{Dios destruye la usura e incrementa la caridad. Dios no ama a quien es incrédulo y pecador.\qt@no{(276)}}
+\qt@newcmd\qurantrans@es@cclxxxiv{Ciertamente, aquellos que creen y actúan rectamente, hacen la oración y pagan la limosna obligatoria purificadora de la riqueza, obtendrán su recompensa junto a su Señor, no tendrán que temer y no estarán tristes.\qt@no{(277)}}
+\qt@newcmd\qurantrans@es@cclxxxv{¡Oh, los que creéis! ¡Temed desagradar a Dios y renunciad a los beneficios de la usura restantes, si es que sois creyentes!\qt@no{(278)}}
+\qt@newcmd\qurantrans@es@cclxxxvi{Pero si no lo hacéis, estad seguros de que Dios y Su Mensajero os declaran la guerra. Y si os arrepentís, os pertenecerá vuestro capital original. No oprimiréis y no seréis oprimidos.\qt@no{(279)}}
+\qt@newcmd\qurantrans@es@cclxxxvii{Y si tuviera dificultad, dadle un plazo hasta que pueda y si renunciáis a ello, mejor para vosotros. ¡Si supieseis...!\qt@no{(280)}}
+\qt@newcmd\qurantrans@es@cclxxxviii{Y temed un día en el que seréis devueltos a Dios y a cada cual le será entregada la recompensa de lo que hizo. Y no serán tratados injustamente.\qt@no{(281)}}
+\qt@newcmd\qurantrans@es@cclxxxix{¡Oh, los que creéis! Cuando contraigáis una deuda por un plazo determinado, escribidlo. Que alguien de entre vosotros lo escriba honestamente y que no se niegue a hacerlo, tal como Dios le ha enseñado. Así pues, que escriba y que el deudor le dicte y que tema desagradar a Dios, su Señor, y no omita nada. Y si el deudor fuese necio o débil mental o incapaz de dictar, que su representante legal dicte con honestidad. Y que dos hombres de entre vosotros sean testigos. Y si no hubiese dos hombres, que sean un hombre y dos mujeres que os satisfagan como testigos, de manera que si alguna de ellas se equivoca, una le haga recordar a la otra. Los testigos no deberán negarse, cuando sean requeridos. Y no consideréis fatigoso el escribirlo, sea la suma pequeña o grande, consignando su plazo de vencimiento. Esto es más equitativo para vosotros ante Dios, hace más seguro el testimonio y da menos lugar a dudas. Excepto si la transacción entre vosotros se realiza al contado, sin intermediarios, pues en ese caso, no hay inconveniente si no la escribís. Pero, tomad testigos cuando realicéis transacciones comerciales y que no se moleste o perjudique al notario ni a los testigos. Y si lo hacéis, cometéis un pecado. Y temed a Dios y Dios os enseñará. Dios tiene el conocimiento de todas las cosas.\qt@no{(282)}}
+\qt@newcmd\qurantrans@es@ccxc{Y si estuvieseis de viaje y no encontraseis un notario, entregad una fianza. Pero si uno confía en el otro, aquel al que le fue entregado el depósito, cuando le sea reclamado, que lo entregue y que tema a Dios, su Señor. Y no ocultéis vuestro testimonio. Quien lo oculte tiene, verdaderamente, un corazón pecador. Y Dios sabe lo que hacéis.\qt@no{(283)}}
+\qt@newcmd\qurantrans@es@ccxci{A Dios pertenece lo que hay en los cielos y lo que hay en la Tierra y, tanto si manifestáis lo que hay en vuestras almas como si lo ocultáis, Dios os pedirá cuentas de ello. Perdona a quien Él quiere y castiga a quien Él quiere. Dios tiene poder sobre todas las cosas.\qt@no{(284)}}
+\qt@newcmd\qurantrans@es@ccxcii{El Mensajero cree en lo que fue hecho descender a él procedente de su Señor y (también) los creyentes. Todos ellos creen en Dios y en Sus ángeles y en Sus Libros y en Sus Mensajeros. No hacemos diferencia entre ninguno de Sus Mensajeros. Y dijeron: «Oímos y obedecimos. [Rogamos] Tu perdón, Señor nuestro. Hacia Ti es el retorno.»\qt@no{(285)}}
+\qt@newcmd\qurantrans@es@ccxciii{Dios no responsabiliza a ninguna alma más allá de su capacidad. El bien que haya realizado será para su propio bien y el mal que haya cometido será para su propio perjuicio. ¡Señor nuestro! ¡No nos castigues por nuestros olvidos o errores! ¡Señor nuestro! ¡No nos impongas una carga como la que impusiste a quienes nos precedieron! ¡Señor nuestro! ¡No nos impongas una carga que no podamos soportar! ¡Discúlpanos y perdónanos y ten misericordia de nosotros! Tú eres nuestro Protector, auxílianos pues ante el pueblo de los que ocultan la Verdad.\qt@no{(286)}}
+\qt@newcmd\qurantrans@es@ccxciv{\basmalahes Alif, lam, mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@ccxcv{¡Dios! No hay más dios que Él, el Vivo, el Sustentador de la vida.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@ccxcvi{Él hizo descender sobre ti la Escritura [Sagrada] con la Verdad, confirmando las Escrituras anteriores e hizo descender la Torá y el Evangelio\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@ccxcvii{anteriormente, como una guía para las gentes. He hizo descender el Criterio. Ciertamente, los que no crean en las señales de Dios tendrán un severo castigo. Y Dios es poderoso, dueño de la venganza.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@ccxcviii{En verdad, ante Dios no queda oculto nada de lo que hay en la Tierra o en el cielo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@ccxcix{Él es quien os da forma en el seno materno como quiere. No hay más dios que Él, el Poderoso, el Sabio.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@ccc{Él es quien hizo descender sobre ti la Escritura [Sagrada] en la que hay versículos unívocos que son como la Madre de la Escritura [Sagrada] y otros que son equívocos. Aquellos cuyos corazones están desviados siguen los que son equívocos, buscando crear problemas y pretendiendo interpretar su simbolismo. Pero su simbolismo sólo lo conoce Dios. Los arraigados en el conocimiento dicen: «Creemos en Él. Todo procede de nuestro Señor.» Pero no reflexionan más que los dotados de intelecto.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@ccci{¡Señor nuestro! ¡No desvíes nuestros corazones después de haberlos guiado y otórganos una misericordia procedente de Ti! Ciertamente Tú eres el Generoso.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@cccii{¡Señor nuestro! ¡Tú eres quien reunirá a la gente un día sobre el que no hay duda que ha de llegar! Dios no transgrede Su promesa.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@ccciii{En verdad, a quienes no creen, ni sus riquezas ni sus hijos les servirán de nada ante Dios. Ellos serán el combustible del fuego [del infierno].\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@ccciv{Como sucedió con la gente del Faraón y los que les precedieron, que desmentían Nuestras señales y Dios les castigó por sus pecados. Dios es severo en la retribución.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@cccv{Di a los que no creen: «Pronto seréis vencidos y reunidos en el Infierno.» ¡Que mal lugar de descanso!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@cccvi{Hubo, en verdad, una señal para vosotros en los dos grupos que se enfrentaron. Un grupo combatía en la senda de Dios y al otro, que no creía, le pareció a simple vista que eran el doble. Dios fortalece con Su ayuda a quien quiere. En verdad, en esto hay una lección para los que son observadores.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@cccvii{Fue adornado para la gente el amor por las pasiones: las mujeres, los hijos, la acumulación de oro y plata por quintales y los caballos de raza, los ganados y los campos de cultivo. Esos son los placeres de la vida en este mundo. Pero junto a Dios está el mejor destino.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@cccviii{Di: «¿Puedo informaros de algo mejor para vosotros que todo eso? Para aquellos que temen desagradar a Dios hay junto a su Señor Jardines de cuyas profundidades brotan los ríos, en los que estarán eternamente, parejas purificadas y satisfacción de Dios.» Y Dios observa a Sus siervos.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@cccix{Aquellos que dicen: «¡Señor nuestro! ¡Hemos creído, por tanto, perdona nuestros pecados y líbranos del castigo del Fuego!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@cccx{Los pacientes, los sinceros, los humildes, los caritativos y los que piden perdón antes del alba.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@cccxi{Dios, los ángeles y los que tienen conocimiento atestiguan que no hay más dios que Él, el Equitativo. No hay más dios que Él, el Poderoso, el Sabio.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@cccxii{Ciertamente, la religión ante Dios es el Islam. Aquellos a quienes les fue dada la Escritura [Sagrada] no disintieron unos de otros después de haberles llegado el conocimiento sino por envidia entre ellos. Y quien no crea en las señales de Dios [sepa que] Dios es rápido haciendo la cuenta.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@cccxiii{Así pues, si te discuten di: «Me he sometido a Dios y también los que me siguen.» Y di a quienes les fue dada la Escritura [Sagrada] y [también] a los que no poseen instrucción: «¿Os sometéis?» Si se someten, ciertamente, serán guiados. Pero si dan la espalda, en verdad, tu responsabilidad es sólo informarles. Y Dios observa a Sus siervos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@cccxiv{En verdad, a aquellos que no creen en las señales de Dios y matan a los profetas sin derecho y matan a quienes proclaman la justicia, infórmales de (que les aguarda) un castigo doloroso.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@cccxv{Esos son los que han arruinado sus obras en esta vida y en la otra y no tendrán quien les auxilie.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@cccxvi{Has visto a aquellos a quienes les fue entregada una parte de la Escritura [Sagrada]? Se les invita a la Escritura de Dios para que juzgue entre ellos, pero parte de ellos dan la espalda y se niegan [a aceptar la Verdad].\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@cccxvii{Eso es porque dicen: «No nos tocará el Fuego más que unos pocos días.» Sus propias invenciones les han cegado.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@cccxviii{¿Qué harán cuando les reunamos para un día sobre el que no hay duda [que ha de venir] y cada alma sea recompensada por lo que hizo y no sean tratados injustamente?\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@cccxix{Di: «¡Oh Dios, Soberano de todo gobierno! Tú das el gobierno a quien quieres y se lo quitas a quien quieres y das poder a quien quieres y humillas a quien quieres. En Tu mano está todo bien. En verdad, Tú tienes poder sobre todas las cosas.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@cccxx{«Tú introduces la noche en el día e introduces el día en la noche y haces salir lo vivo de lo muerto y lo muerto de lo vivo. Y provees sin límite a quien quieres.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@cccxxi{¡Que los creyentes no tomen por amigos a los que no creen en lugar de a los que creen! Dios no tendrá nada con quien haga eso, excepto que disimule por temor a ellos. Dios os advierte que tengáis cuidado con Él [si Le desobedecéis]. Y a Dios retornamos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@cccxxii{Di: «Tanto si ocultáis lo que hay en vuestros pechos, como si lo manifestáis, Dios lo conoce y conoce lo que hay en los cielos y en la Tierra. Y Dios tiene poder sobre todas las cosas.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@cccxxiii{El día en que cada alma encuentre ante sí lo que hizo de bien y lo que hizo de mal, deseará que haya una gran distancia entre ello y él mismo. Dios os advierte que tengáis cuidado con Él [si Le desobedecéis]. Y Dios es piadoso con Sus siervos.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@cccxxiv{Di: «Si amáis a Dios seguidme, Dios os amará y perdonará vuestros pecados. Dios es Perdonador, Misericordiosísimo con los creyentes.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@cccxxv{Di: «¡Obedeced a Dios y al Mensajero!» Pero si dan la espalda, en verdad, Dios no ama a los que no creen.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@cccxxvi{En verdad, Dios eligió a Adán, a Noé, a la familia de Abraham y a la familia de Imran sobre todo el mundo.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@cccxxvii{Descendientes unos de otros. Dios todo lo oye, todo lo sabe.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@cccxxviii{[Recuerda] cuando dijo la mujer de Imran: «¡Señor mío! En verdad, he hecho voto de consagrar a Ti lo que llevo en mi seno ¡Acéptamelo! En verdad, Tú eres Quien todo lo oye, Quien todo lo sabe.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@cccxxix{Y cuando dio a luz una niña, dijo: «¡Señor, he dado a luz una hembra!» Pero Dios sabía mejor que ella lo que había dado a luz y [que] una hembra no es lo mismo que un varón. «En verdad, la he llamado María y he puesto a ella y a su descendencia bajo Tu protección de Satanás maldecido y lapidado.»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@cccxxx{Su Señor la aceptó complacido, la hizo crecer bien y la puso bajo la tutela de Zacarías. Siempre que Zacarías entraba a visitarla a su oratorio, encontraba junto a ella provisiones. Decía: «Oh María ¿De dónde te viene esto?» Ella decía: «De Dios.» En verdad, Dios provee sin medida a quien Él quiere.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@cccxxxi{Allí mismo rogó Zacarías a su Señor. Dijo: «¡Señor mío, otórgame una descendencia buena, que venga de Ti! ¡En verdad, Tú [siempre] escuchas la súplica!»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@cccxxxii{Entonces, los ángeles le llamaron mientras él permanecía en pie rezando en su oratorio: «Dios te da la buena nueva de [el nacimiento de] Juan como confirmador de una palabra que viene de Dios. Será eminente y casto y un profeta de entre los justos.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@cccxxxiii{Dijo: «¡Señor mío! ¿Cómo podré tener un hijo cuando me ha llegado la vejez y mi esposa es estéril?» Dijo: «Así será. Dios hace lo que quiere.»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@cccxxxiv{Dijo: «Señor mío, dame un signo.» Dijo: «Tu signo será que no podrás hablar a la gente durante tres días salvo por señas. Recuerda mucho a tu Señor y glorifícale mañana y tarde.»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@cccxxxv{Y [recuerda] cuando los ángeles dijeron: «¡Oh María! En verdad, Dios te ha escogido y purificado y te ha elegido entre todas las mujeres.»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@cccxxxvi{«¡Oh María! ¡Se humilde ante tu Señor y prostérnate e inclínate con los que se inclinan!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@cccxxxvii{Esto son noticias del mundo oculto a los sentidos que te revelamos. Tu no estabas con ellos cuando echaban a suertes con sus cálamos [para ver] quién de ellos se encargaba de la tutela de María, ni estabas con ellos cuando disputaban.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@cccxxxviii{[Y recuerda] cuando le dijeron los ángeles: «¡Oh María! ¡Dios te anuncia una palabra que de Él procede! Su nombre es El Mesías, Jesús hijo de María. Será honorable en esta vida y en la otra y de los cercanos [a Dios].\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@cccxxxix{Y hablará a las gentes desde la cuna y de adulto y será de los justos.»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@cccxl{Ella dijo: «¡Señor mío! ¿Cómo tendré un hijo si no me ha tocado varón?» Dijo: «Así será. Dios crea lo que quiere. Cuando decreta un asunto, le dice: ¡Sé! y es.»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@cccxli{«Y Él le enseñará la Escritura [Sagrada] y la Sabiduría y la Torá y el Evangelio.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@cccxlii{Y [será Jesús] un profeta [enviado] a los Hijos de Israel [que proclamará]: «En verdad, he venido a vosotros con una señal procedente de vuestro Señor. Crearé para vosotros, del barro, algo con la forma de un pájaro, luego soplaré sobre él y será un pájaro [vivo], con el permiso de Dios. Y sanaré al ciego y al leproso y resucitaré al muerto, con el permiso de Dios. Y os informaré de lo que coméis y de lo que guardáis en vuestras casas [sin haberlo visto]. En verdad, en ello hay una señal [de que yo soy un profeta] para vosotros, si es que sois creyentes,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@cccxliii{[que vengo] confirmando lo que ya teníais en vuestras manos procedente de la Torá y haciendo lícito para vosotros algunas cosas que se os habían prohibido. Puesto que he venido a vosotros con un signo que procede de vuestro Señor ¡Temed a Dios y obedecedme!\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@cccxliv{En verdad, Dios es mi Señor y vuestro Señor, así pues ¡Adoradle! ¡Este es el camino recto!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@cccxlv{Pero cuando Jesús sintió la falta de fe de ellos, dijo: «¿Quiénes serán mis partidarios [en la defensa de la causa que lleva] hacia Dios?» Los apóstoles dijeron: «Nosotros somos los partidarios de Dios. Hemos creído en Dios. Testifica, pues, que nosotros somos musulmanes [a Él sometidos].\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@cccxlvi{¡Señor nuestro! ¡Hemos creído en lo que hiciste descender y hemos seguido al Mensajero! ¡Inscríbenos, pues, con los que dan testimonio!»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@cccxlvii{Y conspiraron [contra Jesús sus enemigos] y Dios [también] conspiró. Pero Dios es Quien mejor trama.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@cccxlviii{[Recuerda] cuando dijo Dios: «¡Oh Jesús! Te tomaré y te elevaré hacia Mí y te purificaré [de las calumnias] de los que no creen. Y colocaré a los que te siguen por encima de los que no creen, hasta el Día del Levantamiento. Luego regresaréis hacia Mí y juzgaré entre vosotros sobre aquello en lo que manteníais diferencias.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@cccxlix{En cuanto a aquellos que no creen, les castigaré con un severo castigo en esta vida y en la otra y no tendrán quien les auxilie.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@cccl{En cambio, aquellos que crean y obren rectamente serán adecuadamente recompensados. Dios no ama a los opresores.»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@cccli{Esto que te recitamos procede de las señales y del Recuerdo Sabio.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@ccclii{Verdaderamente, ante Dios el caso de Jesús es semejante al de Adán. Él lo creó de barro y tras ello le dijo: «¡Sé!» y fue.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@cccliii{La Verdad procede de tu Señor. ¡No seas pues de los escépticos!\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@cccliv{Por tanto, a quien te discuta sobre ello, después del conocimiento que ha venido a ti, dile: «¡Venid! ¡Llamemos a nuestros hijos y a los vuestros, a nuestras mujeres y a las vuestras y a nosotros mismos y a vosotros mismos y supliquemos [el juicio de Dios] y que la maldición de Dios caiga sobre los mentirosos!»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@ccclv{Este es, ciertamente, el relato verdadero. No hay más dios que Dios. Y, ciertamente, Dios es el Poderoso, el Sabio.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@ccclvi{Y si dan la espalda, en verdad, Dios es quien mejor conoce a los corruptores.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@ccclvii{Di: «¡Oh gente de la Escritura [Sagrada]! Venid a una palabra igual para vosotros y nosotros: Que no adoraremos más que a Dios y que no asociaremos nada a Él y que no nos tomaremos unos a otros como señores junto a Dios.» Y si dan la espalda, decidles entonces: «Sed testigos de que nosotros somos musulmanes.»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@ccclviii{¡Oh gente de la Escritura [Sagrada]! ¿Por qué discutís sobre Abraham, si la Torá y el Evangelio no fueron hechos descender sino después de él? ¿Es que no razonáis?\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@ccclix{Vosotros sois aquellos que discutíais sobre lo que conocíais ¿Por qué discutís sobre lo que no tenéis conocimiento? Dios sabe y vosotros no sabéis.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@ccclx{Abraham no era judío ni era cristiano, sino que era un buscador de la Verdad, sometido a Dios [muslim] y no era de los politeístas.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@ccclxi{En verdad, la gente más cercana a Abraham son aquellos que le seguían y éste profeta y aquellos que creen [en él]. Y Dios es el amigo y guardián de los creyentes.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@ccclxii{Un grupo de la gente de la Escritura [Sagrada] desearían extraviaros, pero sólo se extravían ellos mismos y no se dan cuenta.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@ccclxiii{¡Oh gente de la Escritura [Sagrada]! ¿Por qué no creéis en las señales de Dios si sois testigos?\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@ccclxiv{¡Oh gente de la Escritura [Sagrada]! ¿Por qué vestís la Verdad con la falsedad y ocultáis la Verdad, a sabiendas de lo que hacéis?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@ccclxv{Un grupo de la gente de la Escritura [Sagrada] dice: «Creed al principio de la mañana en lo que fue hecho descender sobre los creyentes y dejad de creer al final de ella, quizás así ellos retornen [de sus creencias a las vuestras].\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@ccclxvi{Y no creáis en nadie excepto en quien siga vuestra religión.» Di: «La guía [verdadera] es la guía de Dios y [no creáis] que le fue dado a alguien algo como lo que os fue dado a vosotros o que ellos pueden discutir con vosotros ante vuestro Señor.» Di: «En verdad, el favor está en las manos de Dios y se lo otorga a quien Él quiere. Y la bondad de Dios todo lo alcanza, Él todo lo sabe.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@ccclxvii{Distingue con Su misericordia a quien Él quiere. Dios es el dueño del Favor Inmenso.»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@ccclxviii{Y entre la gente de la Escritura [Sagrada] los hay que si les confías un quintal te lo devuelven [intacto] y quienes si les confías una moneda no te la devuelven sino es reclamándosela con insistencia. Eso es porque ellos dicen: «No tenemos obligaciones con los que no son judíos.» Pero mienten sobre Dios a sabiendas.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@ccclxix{¡Sí! Quien sea leal a su compromiso y tema a Dios, sepa que, en verdad, Dios ama a quienes son temerosos.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@ccclxx{En verdad, aquellos que venden el compromiso con Dios y sus promesas por un precio pequeño no tendrán parte en la otra vida y Dios no les hablará ni les mirará el Día del Levantamiento ni les purificará y tendrán un castigo doloroso.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@ccclxxi{Y, en verdad, hay un grupo de ellos que complican con sus lenguas la Escritura [Sagrada para que penséis que [lo que dicen] pertenece a la Escritura, pero no es de la Escritura y dicen: «Esto proviene de Dios», pero no proviene de Dios y atribuyen a Dios mentiras a sabiendas [de lo que hacen].\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@ccclxxii{No es apropiado de un ser humano al que Dios entrega la Escritura [Sagrada], el juicio y la profecía que luego diga a la gente: «Sed mis siervos en lugar de [siervos de] Dios», sino [más bien que les diga]: «Sed espirituales ya que enseñáis la Escritura [Sagrada] y la estudiáis.»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@ccclxxiii{Y Él no os ordena que toméis por señores a los ángeles ni a los profetas ¿Va Él a ordenaros que dejéis de creer después de que sois creyentes?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@ccclxxiv{Y [recuerda] cuando Dios hizo un pacto con los profetas: «Puesto que os he dado parte de la Escritura [Sagrada] y Sabiduría, cuando venga a vosotros un Mensajero confirmando lo que tenéis, creed en él y ayudadle.» Dijo Él: «¿Acordasteis y aceptasteis Mi pacto en estos términos?» Dijeron: «Lo acordamos.» Dijo Él: «Pues dad testimonio de ello y Yo seré con vosotros uno de los que atestiguan.»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@ccclxxv{Y, quienes tras esto den la espalda, esos serán los transgresores.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@ccclxxvi{¿Acaso buscan algo diferente a la religión de Dios cuando quienes están en los cielos y en la Tierra se someten a Él voluntaria u obligadamente y a Él serán devueltos?\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@ccclxxvii{Di: «Creemos en Dios y en la revelación que fue hecha descender para nosotros y en la que fue hecha descender para Abraham, Ismael, Isaac, Jacob y las tribus, y en lo que le fue dado a Moisés y a Jesús y a los profetas procedente de su Señor. No hacemos diferencias entre ninguno de ellos y nos sometemos a Él.»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@ccclxxviii{Y a quien desee otra creencia diferente al Islam no se le aceptará y en la otra vida será de los perdedores.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@ccclxxix{¿Cómo va Dios a guiar a un pueblo que descree después de haber creído, habiendo sido testigos de que el Mensajero es verdadero y habiéndoles llegado las pruebas claras? Dios no guía a la gente opresora.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@ccclxxx{Su recompensa es que serán maldecidos por Dios y por los ángeles y por la gente conjuntamente.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@ccclxxxi{En ese [estado de maldición] permanecerán eternamente. No se les aliviará el castigo ni tendrán respiro.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@ccclxxxii{Excepto a quienes se arrepientan tras ello y se corrijan pues, en verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@ccclxxxiii{En verdad, a quienes no crean después de haber tenido fe e incrementen su incredulidad, no les será aceptado su arrepentimiento. Esos son los extraviados.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@ccclxxxiv{En verdad, a aquellos que no creen y mueren sin ser creyentes, aunque ofrecieran como recate la Tierra llena de oro, no se les aceptaría. Les aguarda un castigo doloroso y no tendrán quien les auxilie.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@ccclxxxv{No obtendréis la virtud hasta que no gastéis en caridad de aquello que amáis. Y cualquier cosa que gastéis Dios lo sabrá.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@ccclxxxvi{Todos los alimentos [puros] eran lícitos para los Hijos de Israel excepto aquello que Israel se prohibió a sí mismo antes de que descendiera la Torá. Di: «Traed la Torá y leedla si es que decís la verdad.»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@ccclxxxvii{Quienes inventen mentiras sobre Dios después de esto, esos serán los opresores.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@ccclxxxviii{Di: «Dios ha dicho la Verdad. Seguid, pues, las creencias de Abraham, que era un buscador de la Verdad y no uno de los politeístas.»\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@ccclxxxix{En verdad, la primera Casa establecida para la humanidad como bendición y guía es, sin duda, la de Bakka.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@cccxc{En ella hay signos claros, [entre ellos] la morada de Abraham. Y quien entre en ella estará seguro. Dios ha ordenado a las gentes la peregrinación a la Casa, si disponen de medios. Y quien reniegue (de su obligación y no realice la peregrinación, sepa que) Dios no necesita de nadie.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@cccxci{Di: «¡Oh gente de la Escritura [Sagrada]! ¿Por qué no creéis en las señales de Dios? Dios es testigo de lo que hacéis.»\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@cccxcii{Di: «¡Oh gente de la Escritura «Sagrada»! ¿Por qué dificultáis la senda de Dios a los que creen y tratáis de complicarla, cuando sois testigos [de que es verdadera]? Dios no está desatento a lo que hacéis.»\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@cccxciii{¡Oh los que creéis! Si obedecéis a un grupo de los que recibieron la Escritura [Sagrada] conseguirán que, después de haber creído, regreséis a la incredulidad.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@cccxciv{¿Cómo podéis no creer cuando se os recitan los versículos de Dios y entre vosotros está Su Mensajero y quien se refugie en Dios será guiado a un camino recto?\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@cccxcv{¡Oh los que creéis! ¡Temed a Dios como debe ser temido y no muráis sin estar a Él sometidos!\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@cccxcvi{Y aferraos a la cuerda de Dios todos juntos y no os dividáis. Y recordad la merced de Dios con vosotros cuando erais enemigos y Él unió vuestros corazones y os convertisteis, por Su merced, en hermanos y estabais al borde del abismo del Fuego y os salvo de él. Así es como Dios os explica claramente sus signos. Quizás así os guiéis\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@cccxcvii{y surja de vosotros una comunidad que invite al bien, ordene hacer lo que es correcto y prohíba hacer el mal. Esos serán los triunfadores.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@cccxcviii{Y no seáis como aquellos que se dividieron y se enfrentaron después de haber venido a ellos las pruebas claras. Esos tendrán un castigo inmenso\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@cccxcix{el día en que unos rostros se iluminen y otros se ensombrezcan. En cuanto a aquellos que sus rostros se ensombrezcan [se les dirá]: «¿Descreísteis después de haber tenido fe? Saboread ahora el castigo por aquello en lo que dejasteis de creer.»\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@cd{Pero aquellos cuyos rostros se iluminen estarán eternamente en la misericordia de Dios.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@cdi{Esas son las señales de Dios. Te las recitamos conforme a la Verdad. Y Dios no desea oprimir a nadie.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@cdii{Y a Dios pertenece lo que hay en los cielos y en la Tierra. Todo será devuelto a Dios.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@cdiii{Sois la mejor comunidad que se ha creado para los seres humanos. Ordenáis el bien, prohibís el mal y creéis en Dios. Y si la gente de la Escritura [Sagrada] creyera, sería mejor para ellos. Entre ellos los hay que son creyentes, pero la mayoría de ellos son pecadores.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@cdiv{Jamás podrán perjudicaros excepto muy poco y si combaten contra vosotros huirán dándoos la espalda y entonces no serán auxiliados.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@cdv{La humillación les golpeará donde quiera que se encuentren, excepto que Dios les proteja o les protejan los hombres. Han conseguido enfadar a Dios y les ha golpeado la miseria por haber desmentido las señales de Dios y porque, sin tener derecho, mataron a los profetas y porque fueron desobedientes y transgresores.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@cdvi{No todos son iguales. Entre la gente de la Escritura [Sagrada] hay una comunidad recta que recita los versículos de Dios en mitad de la noche y humillan sus frentes hasta el suelo en adoración.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@cdvii{Creen en Dios y en el Último Día y ordenan lo que está bien y prohíben el mal. Compiten con premura en [la realización de] buenas acciones y son de los justos.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@cdviii{Y el bien que hacen no les será ignorado. Dios conoce bien a los que son temerosos.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@cdix{En verdad, a aquellos que no creen, ni sus riquezas ni sus hijos les servirán de nada ante Dios. Esos son la gente del Fuego, en el cual permanecerán eternamente.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@cdx{Lo que gastan en esta vida es semejante a un viento helado que azota los cultivos de unas gentes que se han oprimido a sí mismas y los destruye. No es Dios quien les oprimió, sino ellos mismos quienes se oprimen.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@cdxi{¡Oh los que creéis! No toméis como amigos íntimos a quienes no sean de los vuestros. No dejarán de intentar corromperos. Les gustaría veros en dificultades. El odio asoma por sus bocas pero lo que ocultan sus pechos es peor aun. Os hemos explicado las señales claramente, si lo pensáis.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@cdxii{Vosotros les amáis pero ellos no os aman. Y [eso es porque] vosotros creéis en todas las Escrituras [Sagradas]. Y cuando se encuentran con vosotros dicen: «¡Creemos!» Pero cuando están solos se muerden las puntas de los dedos del odio que os tienen. Di: «¡Que vuestro odio os mate!» En verdad, Dios conoce bien lo que hay en el interior de los pechos.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@cdxiii{Si os ocurre algo bueno les molesta y si os sobreviene una dificultad se alegran por ello, pero si sois pacientes y temerosos de Dios, sus intrigas no os perjudicarán en absoluto. En verdad, Dios tiene bajo control lo que ellos hacen.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@cdxiv{Y [recuerda] cuando al principio de la mañana te alejaste de tu familia para situar a los creyentes en sus puestos de batalla. Dios todo lo oye, todo lo sabe.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@cdxv{[Y recuerda también] cuando dos grupos de los vuestros flaquearon y proyectaron desertar y Dios les infundió ánimo. ¡Que los creyentes depositen su confianza únicamente en Dios!\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@cdxvi{Ciertamente Él os ayudó en Badr cuando estabais en inferioridad. Temed, pues, a Dios. Quizás así agradezcáis.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@cdxvii{[Y recuerda el día de Badr] cuando decías a los creyentes: «¿Acaso para vosotros no es suficiente que vuestro Señor os refuerce con tres mil ángeles descendiendo [de los cielos]?\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@cdxviii{Sí, si sois pacientes y temerosos y os atacan de improviso, [hoy también] Dios os reforzará con cinco mil ángeles portadores de distintivos.»\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@cdxix{Y Dios no lo hace sino [para alegraros] con una buena noticia y para tranquilizar vuestros corazones, pues la victoria solamente proviene de Dios [que es] el Poderoso, el Sabio,\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@cdxx{y para destruir a una parte de los que no creen o para derrotarles y que regresen fracasados [a La Meca].\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@cdxxi{Tú no eres en absoluto responsable de este asunto o de si Dios les perdona o les castiga porque son opresores.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@cdxxii{A Dios pertenece lo que hay en los cielos y en la Tierra. Perdona a quien Él quiere y castiga a quien Él quiere. Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@cdxxiii{Oh los que creéis! ¡No os alimentéis de la usura, doblando una y otra vez [vuestros capitales]! Temed a Dios. Quizás así tengáis éxito.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@cdxxiv{Y temed el Fuego que ha sido preparado para los que no creen.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@cdxxv{Y obedeced a Dios y al Mensajero, para que así se tenga clemencia con vosotros.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@cdxxvi{Y apresuraos hacia el perdón de vuestro Señor y hacia un jardín cuya extensión es como los cielos y la Tierra y que ha ido preparado para los temerosos de Dios,\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@cdxxvii{aquellos que reparten de sus riquezas en la prosperidad y en la adversidad y aquellos que contienen su ira y perdonan a las personas, pues Dios ama a los que hacen el bien.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@cdxxviii{Y aquellos que, cuando cometen un pecado o son injustos consigo mismos, recuerdan a Dios y buscan el perdón por sus pecados, pues ¿Quién perdona los pecados sino Dios? y no reinciden en lo que hicieron [mal] ahora que lo saben.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@cdxxix{Esos obtendrán en recompensa el perdón de su Señor y jardines de cuyas profundidades brotan los arroyos, en los que estarán eternamente. ¡Qué hermosa es la recompensa de los que obran [bien]!\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@cdxxx{Antes de vosotros también hubo tradiciones. Viajad, pues, por la Tierra y observad cual fue el fin de los desmentidores [de la Verdad].\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@cdxxxi{Eso es una evidencia para toda la humanidad y una guía y una advertencia para los temerosos de Dios.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@cdxxxii{Y no desfallezcáis ni os apenéis pues, si tenéis fe, seréis los vencedores.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@cdxxxiii{Si sufrís una herida, ellos también sufrieron una herida semejante. Nosotros hacemos que días así se alternen entre las gentes, para que conozca Dios quienes son los creyentes y tomar de entre vosotros mártires. Y Dios no ama a los opresores.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@cdxxxiv{Y para que Dios ponga a prueba a quienes tienen fe [y les perdone] y extermine a los que no creen.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@cdxxxv{¿O acaso contabais con entrar en el Jardín sin que Dios sepa previamente quiénes de vosotros se han esforzado y conozca a los que tienen paciencia?\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@cdxxxvi{Ciertamente, deseabais la muerte antes de encontraros con ellos y, ciertamente, la visteis con vuestros propios ojos y observasteis [como es].\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@cdxxxvii{Y Muhammad no es más que un Mensajero. Antes de él hubo también otros Mensajeros. ¿Acaso si muere o es matado volveréis a vuestras creencias anteriores? Pues [sabed que] quien vuelva a sus creencias anteriores no puede perjudicar a Dios en absoluto. Y Dios pronto recompensará a los agradecidos.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@cdxxxviii{Nadie puede morir sin permiso de Dios y según un plazo fijado previamente. Y a quien desee la recompensa de esta vida le daremos de ella y a quien desee la recompensa de la otra vida le daremos de ella. Y pronto recompensaremos a los que son agradecidos.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@cdxxxix{¡Cuántos profetas combatieron, y muchos de sus seguidores espirituales con ellos, y no se desanimaron por las dificultades que hubieron de soportar en la senda de Dios ni mostraron debilidad ni se abatieron! Dios ama a los pacientes.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@cdxl{Y lo único que dijeron fue: «¡Dios nuestro, perdónanos los pecados y los excesos cometidos y consolida nuestros pasos y auxílianos ante la gente que no cree!»\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@cdxli{Y Dios les dio la recompensa de esta vida y la buena recompensa de la otra. Dios ama a los virtuosos.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@cdxlii{¡Oh los que creéis! Si obedecéis a aquellos que no creen, harán que volváis hacia atrás y os convertiréis en perdedores.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@cdxliii{[Ellos no son vuestros protectores] sino que Dios es vuestro Protector y Señor y el mejor auxiliador.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@cdxliv{Pronto infundiremos el terror en el corazón de los que no creen por haber adorado a otros como a Dios, cuando Él no había hecho descender sobre esos poder alguno. Y su morada será el Fuego. ¡Qué mala es la morada de los opresores!\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@cdxlv{Ciertamente, Dios cumplió la promesa que os hizo cuando los estabais venciendo con Su permiso, hasta que [al final de la batalla] flaqueasteis y discutisteis y desobedecisteis [al Mensajero] después que Dios os hizo ver [la victoria] que queríais. Entre vosotros los hay que aman esta vida y los hay que aman la otra. Luego os cambió por ellos para poneros a prueba y [tras ello] ciertamente, os perdonó, pues Dios reserva su favor para los creyentes.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@cdxlvi{[Y recordad] cuando os marchasteis sin preocuparos por nadie y el Mensajero os llamaba a proteger la retaguardia. Él os compensó una tristeza con otra para que no estuvieseis tristes por lo que habíais perdido ni por la desgracia que os había ocurrido. Y Dios está bien informado de lo que hacéis.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@cdxlvii{Luego, tras la aflicción, hizo descender sobre vosotros seguridad [en forma de] un sueño ligero que envolvió a un grupo de vosotros mientras que otro grupo, más preocupado por ellos mismos, pensaban sobre Dios lo que no es verdad, con dudas propias de la época de la ignorancia, diciendo: «¿Tenemos nosotros algo que ver en este asunto?» Di: «En verdad, todo el asunto pertenece a Dios.» Esconden en sus corazones lo que no manifiestan ante ti. Dicen: «Si hubiéramos tenido algo que ver en el asunto no nos habrían matado aquí.» Diles: «Aunque hubierais permanecido en vuestras casas, a aquellos para los que estaba escrita, la muerte les habría sorprendido en sus lechos.» Fue así para que Dios pusiera a prueba lo que tenéis en vuestros pechos y para purificar lo que hay en vuestros corazones. Dios conoce bien lo que hay en los pechos.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@cdxlviii{En verdad, a aquellos de vosotros que dieron la espalda el día en que se encontraron los dos ejércitos, Satanás les hizo tropezar por algo que habían cometido, pero Dios les ha perdonado. En verdad, Dios es perdonador, indulgente.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@cdxlix{¡Oh, los que creéis! No seáis como aquellos que no creen y dijeron de sus hermanos cuando salían de viaje o iban de incursión: «Si se hubieran quedado junto a nosotros no habrían muerto ni les habrían matado.» ¡Haga Dios que eso les remuerda en los corazones! Dios da la vida y la muerte y Dios observa lo que hacéis.\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@cdl{Y si sois matados por la causa de Dios o morís, el perdón y la misericordia de Dios es mejor que lo que ellos reúnen.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@cdli{Y si morís o sois matados, ciertamente, regresaréis a Dios.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@cdlii{En verdad, por una misericordia de Dios, fuiste blando con ellos, pues, si hubieras sido seco y duro de corazón, rápidamente se hubieran apartado de ti. Por tanto, perdónales y pide el perdón para ellos y consúltales en el asunto. Después, cuando tomes una decisión, confía en Dios. En verdad, Dios ama a los que confían en Él.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@cdliii{Si Dios os ayuda, nadie podrá venceros y si os abandona ¿Quién podrá ayudaros después de Él? ¡Que los creyentes confíen en Dios!\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@cdliv{No es propio de un profeta el fraude. Y quien defraude vendrá el Día del Levantamiento con lo que defraudó. Luego, cada uno recibirá la recompensa de lo que haya hecho y nadie será tratado injustamente.\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@cdlv{¿Acaso quien persigue la satisfacción de Dios es igual que quien disgusta a Dios y su morada es el Infierno? ¡Qué mal destino!\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@cdlvi{Cada uno de ellos tendrá un grado de proximidad junto a Dios. Y Dios observa lo que hacen.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@cdlvii{En verdad, Dios agracia a los creyentes al designar un Mensajero de entre ellos mismos, que les recita Sus versículos y les purifica y les instruye en la Escritura [Sagrada] y en la Sabiduría, cuando antes estaban en un extravío evidente.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@cdlviii{Acaso cuando os sobreviene una desgracia, habiendo vosotros provocado una des gracia doblemente grande, decís: «¿De dónde nos viene esto?» Di: «De vosotros mismos.» En verdad, Dios tiene poder sobre todas las cosas.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@cdlix{Y lo que os afligió el día en que se enfrentaron los dos grupos fue con el permiso de Dios y para conocer quiénes eran creyentes\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@cdlx{y quiénes eran hipócritas. Se les dijo: «¡Venid! ¡Combatid en la senda de Dios o defendeos!» Dijeron: «Si supiéramos que habría un combate, sin duda que os seguiríamos.» Ese día, ellos estaban más cerca de la incredulidad que de la fe. Dicen con sus bocas lo que no hay en sus corazones. Pero Dios conoce mejor lo que esconden.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@cdlxi{[Los hipócritas son] aquellos que, mientras se quedaban sentados, decían de sus hermanos: «Si nos hubieran obedecido no les habrían matado.» Di: «¡Apartad la muerte de vosotros mismos, si es que sois veraces!»\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@cdlxii{Y no creáis en absoluto que aquellos que han sido matados en la senda de Dios están muertos. Sino que están vivos y provistos de todo junto a su Señor.\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@cdlxiii{Contentos por el favor que Dios les ha otorgado y felicitándose por aquellos que todavía no les han alcanzado y han quedado atrás, porque no tienen por qué temer y no estarán tristes.\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@cdlxiv{Regocijándose de la merced y el favor de Dios y porque Dios no deja que se pierda la recompensa de los creyentes,\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@cdlxv{aquellos que respondieron a la llamada de Dios y del Mensajero aun después de haber sido heridos. Para los que han actuado bien y han sido temerosos de desagradar a Dios hay una recompensa inmensa.\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@cdlxvi{Aquellos a quienes las gentes les dijeron: «En verdad, la gente se ha juntado contra vosotros ¡Temedles!» Y eso incremento su fe y dijeron: «¡Dios nos basta! ¡Él es el mejor protector!»\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@cdlxvii{Y han regresado, por una Gracia y un Favor de Dios, sin sufrir mal. Buscaron la satisfacción de Dios y Dios es el Dueño del Favor inmenso.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@cdlxviii{En verdad, vosotros sois el Demonio. Él asusta [solamente] a quienes son amigos suyos. ¡Así que no tengáis miedo de ellos, tened miedo de Mí, si es que sois creyentes!\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@cdlxix{Que no te entristezcan aquellos que se precipitan al mundo de la incredulidad. En verdad, ellos no perjudican en nada a Dios. Dios quiere que no tengan parte en la otra vida. Y para ellos hay un castigo inmenso.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@cdlxx{En verdad, aquellos que compran la incredulidad con la fe no perjudican a Dios en nada y para ellos hay un castigo doloroso.\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@cdlxxi{Que aquellos que no creen no piensen que si les damos un plazo es para su bien. En verdad, les concedemos un plazo para que acumulen malas acciones. Para ellos hay un castigo humillante.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@cdlxxii{Dios no va a dejar a los creyentes en el estado en el que os encontráis, sin separar al malo del bueno, ni va Dios a mostraros lo que está oculto a los sentidos, pero Dios escoge de entre Sus profetas a quien Él quiere. Así pues, creed en Dios y en Sus Mensajeros. Si creéis y teméis tendréis una recompensa inmensa.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@cdlxxiii{Y no crean aquellos que son tacaños con lo que Dios les ha favorecido que eso es un bien para ellos, pues es para su mal. El día del Levantamiento llevarán al cuello lo que acumularon en su avaricia. A Dios pertenece la herencia de los cielos y de la Tierra y Dios está bien informado de lo que hacéis.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@cdlxxiv{Dios, sin duda, ha escuchado las palabras de aquellos que dijeron: «En verdad, Dios es pobre y nosotros somos ricos.» Tomaremos nota de lo que han dicho y de que mataron sin derecho a los profetas y les diremos: «Saboread el tormento del Fuego.\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@cdlxxv{Eso es por lo que hicisteis, pues Dios no oprime a los siervos.»\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@cdlxxvi{Esos son quienes dijeron: «En verdad, Dios ha establecido una alianza con nosotros para que no creamos en ningún Mensajero hasta que venga a nosotros con una ofrenda que el fuego devore.» Di: «Antes de mí vinieron a vosotros, por cierto, Mensajeros con las señales claras y con lo que habéis dicho ¿Por qué, pues, los matasteis, si sois sinceros?»\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@cdlxxvii{Y si te desmienten, en verdad, antes de ti fueron desmentidos otros Mensajeros que vinieron con las señales claras, y con los Salmos y con la Escritura Luminosa.\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@cdlxxviii{Todo ser saboreará la muerte. Pero, hasta el Día del Levantamiento no recibiréis toda vuestra recompensa. Quien sea librado del Fuego e introducido en el Jardín, sin duda habrá triunfado. La vida de este mundo no es más que disfrute de la vanidad.\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@cdlxxix{Ciertamente, seréis puestos a prueba en vuestras riquezas y en vuestras personas y, ciertamente, de quienes tuvieron la Escritura [Sagrada] antes que vosotros y de los politeístas, escucharéis muchos insultos. Pero si sois pacientes y temerosos de Dios, eso sí que, en verdad, es dar muestra de firmeza en los asuntos.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@cdlxxx{Y [recordad] cuando Dios estableció un acuerdo con aquellos a quienes les fue dada la Escritura [Sagrada]: «Explicádsela a la gente y no la ocultéis.» Pero ellos le dieron la espalda y la vendieron por poco precio. ¡Qué mal negocio hicieron!\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@cdlxxxi{No creas que aquellos que se alegran de lo que han hecho [malo] y quieren que se les agradezca lo que no han hecho, están a salvo del castigo. ¡Tendrán un castigo doloroso!\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@cdlxxxii{¡A Dios pertenece el reino de los cielos y de la Tierra, y Dios tiene poder sobre todas las cosas!\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@cdlxxxiii{En verdad, en la Creación de los cielos y de la Tierra y en la diferencia entre la noche y el día, hay señales para los dotados de intelecto.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@cdlxxxiv{Aquellos que recuerdan a Dios de pie, sentados o acostados, y que reflexionan sobre la Creación de los cielos y la Tierra [y dicen]: «¡Oh, Señor nuestro! ¡No has creado todo esto en vano! ¡Glorificado seas! ¡Líbranos del castigo del Fuego!\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@cdlxxxv{¡Señor nuestro! ¡A quien Tú [por sus actos] introduces en el Fuego, ciertamente, lo has humillado merecidamente! ¡Los opresores no tendrán quien les auxilie!\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@cdlxxxvi{¡Señor nuestro! ¡En verdad, hemos escuchado a uno que convocaba a la fe!: “¡Creed en vuestro Señor!” y hemos creído. ¡Señor nuestro! ¡Perdona, pues, nuestros pecados y cubre nuestras malas acciones y, al morir, reúnenos con los buenos!\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@cdlxxxvii{¡Señor nuestro! ¡Danos lo que nos has prometido por medio de Tus profetas! ¡Y no nos avergüences el Día del Levantamiento! ¡En verdad, Tú no incumples lo prometido!»\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@cdlxxxviii{Su Señor les respondió a su súplica: «En verdad, Yo no dejo que se pierda la obra de nadie que obre bien, sea hombre o mujer. Procedéis unos de otros. Ocultaré los pecados de aquellos que emigraron y fueron sacados de sus casas y fueron molestados por Mi causa y combatieron y fueron matados, y Les haré entrar en Jardines por los cuales fluyen arroyos. ¡Recompensa procedente de Dios! ¡Y Dios tiene junto a Él la mejor recompensa!»\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@cdlxxxix{¡Que no te impresione el ir y venir de aquellos que no creen!\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@cdxc{¡ [Tendrán] un pequeño disfrute y luego su morada será el infierno de Yahannam! ¡Qué mal lecho!\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@cdxci{Pero, para aquellos que temieron disgustar a su Señor hay Jardines de cuyas profundidades brotan ríos, en los que estarán eternamente hospedados junto a Dios. ¡Y lo que hay junto a Dios es mejor para los buenos!\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@cdxcii{Y, en verdad, de entre la gente de la Escritura [Sagrada], hay quienes creen en Dios y en lo que fue hecho descender para vosotros y en lo que fue hecho descender para ellos. Humildes ante Dios, no venden las señales de Dios a poco precio. Esos tendrán su recompensa junto a su Señor. En verdad, Dios es rápido haciendo las cuentas.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@cdxciii{¡Oh, creyentes! ¡Sed pacientes y aguantad con firmeza y manteneos preparados para el combate y temed a Dios! ¡Quizás, así, tengáis éxito!\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@cdxciv{\basmalahes ¡Oh gentes! ¡Temed a vuestro Señor, que os creó de una sola alma y que creó de ella a su pareja y que, a partir de ambos, ha hecho surgir hombres y mujeres en abundancia! Y temed a Dios, en cuyo nombre os pedís unos a otros y [cuidad] las relaciones familiares. En verdad, Dios os observa.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@cdxcv{Y dad a los huérfanos sus bienes y no deis lo malo en lugar de lo bueno y no os comáis sus bienes juntándolos con los vuestros. En verdad, sería un gran pecado.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@cdxcvi{Y si teméis no ser justos con los huérfanos, casaos con [otras de] las mujeres que os gusten, dos, tres o cuatro. Pero si, aún así, teméis no ser justos, hacedlo [sólo] con una o con una de vuestras esclavas. Eso estará más cerca de no ser injustos.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@cdxcvii{Y entregad a las mujeres sus dotes como una obligación, pero si ellas os perdonan una parte, usadla lícita y gustosamente.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@cdxcviii{Y no deis a los incapacitados mentales los bienes que Dios os ha proporcionado para vuestro funcionamiento y proveedles de ellos y vestidles y habladles con dulzura.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@cdxcix{Examinad a los huérfanos hasta que lleguen a la edad de casarse y, si los consideráis maduros, entregadles sus bienes y no os los comáis, derrochándolos prematuramente, antes de que se hagan mayores. Y el que sea rico, que se abstenga de ellos, y el que sea pobre que use lo justo. Cuando les entreguéis sus bienes, hacedlo ante testigos. Y Dios es suficiente para llevar la cuenta.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@d{A los hombres les corresponde una parte de lo que han dejado sus padres y familiares cercanos y a las mujeres una parte de lo que han dejado los padres y familiares cercanos, sea poco o mucho, es la parte establecida.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@di{Y si en el reparto están presentes los familiares, los huérfanos y los necesitados, dadles de ello y habladles con amabilidad.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@dii{Aquellos que si dejasen tras de sí hijos menores de edad temerían por ellos, que se preocupen [por los huérfanos] y que sean temerosos de desagradar a Dios y les hablen con ternura y cariño.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@diii{En verdad, aquellos que devoran injustamente los bienes de los huérfanos, solamente introducen fuego en sus vientres y pronto arderán en el Fuego abrasador.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@div{Dios os ordena en lo relativo a vuestros hijos que la parte del varón sea igual a la parte de dos hembras y si [vuestros hijos] fueran dos mujeres o más de dos, recibirán dos tercios de lo que dejó [el fallecido]. Si sólo fuera una, le corresponde la mitad. Y a los padres de él corresponde una sexta parte para cada uno, en caso de que dejéis hijos. Si no dejáis hijos y los padres son los [únicos] herederos, a la madre de él le corresponde un tercio Pero si él deja hermanos, a la madre le corresponde un sexto. Esto, después de haber cumplido con las disposiciones testamentarias o las deudas pendientes. No sabéis quien será más beneficioso para vosotros, si vuestros padres o vuestros hijos. Esto es lo que Dios ha ordenado. En verdad, Dios todo lo conoce, es sabio.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@dv{Y a vosotros os corresponde la mitad de lo que dejen vuestras esposas si no tienen hijos. Pero si tienen hijos, a vosotros os corresponde un cuarto de lo que dejen, después de cumplir con los legados testamentarios que ella haya dispuesto y con las deudas. Y a ellas les corresponde un cuarto de lo que dejéis si no tenéis hijos. Pero si tenéis hijos, a ellas les corresponde la octava parte de lo que dejéis, después de cumplir con los legados testamentarios que hayáis dispuesto y pagar las deudas. Y si un hombre o una mujer de quien se hereda, fuera kalála y tiene un hermano o una hermana, a cada uno de ellos le corresponde un sexto y si fueran más se repartirán un tercio después de cumplir con los legados las deudas, sin perjudicar a nadie. Esto es lo dispuesto por Dios. Dios es sabio, magnánimo.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@dvi{Estas son las disposiciones establecidas por Dios y, a quien obedezca a Dios y a Su profeta, Él le hará entrar en Jardines de cuyas profundidades brotan los ríos, en los que morará eternamente. ¡Ese es el éxito inmenso!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@dvii{Y a quien desobedezca a Dios y a Su profeta y traspase Sus límites, Él le hará entrar en un Fuego en el que permanecerá eternamente y recibirá un castigo humillante.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@dviii{Si alguna de vuestras mujeres casadas comete pecado, buscad a cuatro de entre vosotros que atestigüen contra ella. Si lo atestiguan, recluidlas en (sus) casas hasta que les llegue la muerte o Dios les procure una vía.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@dix{Y si dos de los vuestros (que no estén casados) cometen pecado, castigad a ambos. Pero, si se arrepienten y se reforman, dejadles en paz. En verdad, Dios es perdonador, misericordiosísimo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@dx{En verdad, el perdón de Dios es para aquellos que hacen elmal por ignorancia y luego se arrepienten inmediatamente. A esos Dios les perdona. Dios es conocedor, sabio.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@dxi{Pero el perdón no es para aquellos que saben que hacen el mal hasta que les llega la muerte y, entonces, dicen: «Ahora me arrepiento», ni para aquellos que mueren sin creer. Para ellos tenemos previsto un castigo doloroso.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@dxii{¡Oh los que creéis! No es lícito para vosotros que heredéis de vuestras mujeres contra su voluntad, ni que las presionéis para recuperar algo de lo que les habéis dado, excepto si son culpables de un acto claramente deshonroso. Y convivid con ellas conforme a lo que es correcto, pues si os resultan odiosas, quizás odiéis algo en lo que Dios ha puesto un gran bien.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@dxiii{Y si queréis cambiar una esposa por otra y habéis dado a una de ellas un quintal [de oro], no toméis nada de ello ¿Acaso lo tomaríais cometiendo una infamia y un pecado evidente?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@dxiv{Y ¿Cómo lo tomaríais, después de haber tenido una relación intima el uno con el otro y de haber ellas obtenido de vosotros un compromiso firme?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@dxv{Y no os caséis con las mujeres con quienes se casaron vuestros padres, exceptuando lo que ya hicisteis. En verdad, sería algo indecente y aborrecible y un mal camino.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@dxvi{Desde ahora, quedan prohibidas para vosotros vuestras madres, vuestras hijas, vuestras hermanas, vuestras tías paternas y maternas, las hijas de vuestros hermanos y hermanas y vuestras madres y hermanas de leche y vuestras suegras, las hijas de vuestras esposas, que están bajo vuestra custodia, una vez que hayáis consumado el matrimonio con sus madres, pero si no lo habéis consumado no cometéis pecado con ello; las esposas de vuestros propios hijos y que os unáis con dos hermanas al mismo tiempo, excepto si lo hicisteis en el pasado. En verdad, Dios es perdonador, misericordiosísimo.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@dxvii{Ni [podéis casaros] con las mujeres casadas, excepto que sean propiedad vuestra. Es un decreto de Dios para vosotros. Y, a parte de esos casos, es lícito para vosotros buscar la unión con ellas si las solicitáis con vuestros bienes, buscando el matrimonio y no la fornicación. Y si os casáis temporalmente con ellas, dadles su dote obligatoriamente. Y no cometéis falta en lo que, aparte de la dote, convengáis de mutuo acuerdo. En verdad, Dios todo lo conoce, es sabio.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@dxviii{Y quién de vosotros no disponga de medios suficientes para casarse con una creyente libre, que lo haga con una de vuestras jóvenes siervas creyentes. Dios es Quien mejor conoce vuestra fe. Descendéis unos de otros. Casaos, pues, con ellas con permiso de la familia a la que pertenecen y dadles su dote conforme a lo que es justo, como a mujeres honradas, no como a prostitutas o a las que toman amantes. Si se casan y luego cometen algo deshonesto, tendrán la mitad de castigo que las mujeres libres. Esto es para quienes de vosotros teman caer en el pecado de fornicación, pero es mejor para vosotros si tenéis paciencia. Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@dxix{Dios quiere aclararos las cosas y guiaros a las costumbres de los que existieron antes de vosotros para perdonaros. Dios es conocedor, sabio.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@dxx{Dios quiere perdonaros y aquellos que siguen a sus apetitos quieren que os desviéis completamente.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@dxxi{Dios quiere aligerar vuestra carga, pues el ser humano fue creado débil.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@dxxii{¡Oh los que creéis! No os comáis la riqueza unos a otros ilegalmente. Es diferente si comerciáis de común acuerdo. Y no os matéis vosotros mismos. En verdad, Dios ha sido misericordiosísimo con vosotros.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@dxxiii{Y a quien obre así, violando la ley y oprimiendo, le arrojaremos al Fuego. Eso es fácil para Dios.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@dxxiv{Si os abstenéis de cometer los pecados graves que os han sido prohibidos, ocultaremos vuestras pequeñas malas acciones y os introduciremos en una morada generosa.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@dxxv{Y no deseéis aquello con lo que Dios ha favorecido a unos sobre otros. Los hombres tienen una parte de lo que realizan y las mujeres una parte de lo que realizan. Y pedid a Dios que os otorgue de Su favor. En verdad, Dios conoce bien todas las cosas.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@dxxvi{Nosotros hemos designado, para todos, herederos de lo que dejan los padres y los familiares cercanos. Y a aquellos con los que tenéis un compromiso establecido, dadles su parte. Ciertamente Dios es testigo de todo.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@dxxvii{Los hombres son los encargados de proteger y atender a las mujeres por aquello con lo que Dios ha favorecido a unos sobre otros y por lo que gastan de sus bienes. Y las casadas virtuosas son discretas y protegen en ausencia [de sus esposos] lo que Dios ha encargado proteger. Y a aquellas de las que temáis una conducta rebelde y obstinada, amonestadlas [primero], y [si no surte efecto] abandonadlas en el lecho y [en última instancia] golpeadlas. Pero si os obedecen, no hagáis nada contra ellas. Dios es Excelso, Grande.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@dxxviii{Y si teméis una ruptura entre ellos dos, designar un árbitro entre los familiares de él y otro árbitro entre los familiares de ella. Si ellos desean reconciliarse, Dios hará que se pongan de acuerdo. En verdad, Dios es buen conocedor, está informado de todo.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@dxxix{Y adorad a Dios y no adoréis nada junto a Él. Y sed buenos con vuestros padres, con vuestros familiares, los huérfanos, los necesitados, los vecinos cercanos y los vecinos lejanos, con el compañero de viaje, con el viajero y con vuestros esclavos. En verdad, Dios no ama a quien sea un fanfarrón arrogante.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@dxxx{Esos que son avaros y que llevan a la gente a la avaricia y ocultan los favores que Dios les ha otorgado. Hemos preparado para los que no creen un castigo humillante,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@dxxxi{y para los que gastan sus riquezas para ser vistos por las gentes y no creen en Dios ni en el Último Día y para quien tiene a Satanás por compañero. ¡Qué mal compañero!\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@dxxxii{¿Qué les hubiese costado creer en Dios y en el Último Día y haber gastado de lo que Dios les había proveído? ¡Dios les conoce bien!\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@dxxxiii{En verdad, Dios no oprime ni una pizca de un átomo y si se realiza una buena acción Él la multiplicará y otorgará una gran recompensa.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@dxxxiv{¿Qué pasará entonces, cuando traigamos un testigo de cada comunidad y te traigamos a ti como testigo de estos?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@dxxxv{Ese día, aquellos que no creyeron y desobedecieron al Mensajero querrán que la Tierra se los trague y no podrán ocultar a Dios nada de lo que hicieron.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@dxxxvi{¡Oh los que creéis! No os acerquéis a la oración estando ebrios hasta que sepáis lo que decís, ni si estáis impuros, hasta que os hayáis lavado, excepto si estáis de viaje. Y si estáis enfermos o de viaje o uno de vosotros viene de hacer sus necesidades, o tuvisteis contacto con mujeres y no encontráis agua, purificaos con tierra pura, pasándola por vuestro rostro y vuestras manos. Ciertamente, Dios es indulgente, perdonador.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@dxxxvii{¿No has visto a quienes les fue dada parte de la Escritura [Sagrada]? Compran el extravío y quieren que también vosotros extraviéis el Camino.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@dxxxviii{Y Dios es Quien mejor conoce a vuestros enemigos. Y Dios es suficiente como protector y como auxiliador.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@dxxxix{Algunos judíos alteran el significado de las palabras y dicen: “Oímos y desobedecemos” y “Oye sin escuchar” y “Raina”, distorsionándola con sus lenguas e insultando a las creencias religiosas. Si hubieran dicho: «Oímos y obedecemos» y «¡Escucha! y ¡Míranos!» habría sido mejor para ellos y más correcto, pero Dios les maldijo por su falta de fe, pues de ellos no creen más que unos pocos.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@dxl{¡Oh, aquellos a quienes les fue dada la Escritura [Sagrada]! ¡Creed en lo que hicimos descender confirmando lo que teníais, antes de que borremos los rostros y los volvamos del revés o los maldigamos como maldijimos a las gentes del sabt [sábado]! La orden de Dios es para ser cumplida.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@dxli{En verdad, Dios no perdona que se adore a nadie junto a Él pero, excepto eso, perdona a quien Él quiere. Y quien adora a otros junto a Dios ha cometido un pecado inmenso.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@dxlii{¿No has visto a quienes se consideran puros? Pero es Dios Quien purifica a quien Él quiere y nadie será oprimido en lo más mínimo.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@dxliii{Observa como inventan mentiras sobre Dios. Eso es suficiente como pecado evidente.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@dxliv{¡No has visto a quienes les fue dada una parte de la Escritura [Sagrada] y creen en los espíritus mágicos malignos y en los falsos ídolos y dicen de los que no son creyentes: «Esos están mejor guiados que los creyentes.»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@dxlv{Esos son a quienes Dios maldijo y no encontrarás quien auxilie a quien Dios maldice.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@dxlvi{¿Acaso tienen parte en el gobierno? Si así fuera no darían a la gente lo más mínimo.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@dxlvii{¿O es que envidian a la gente por lo que Dios les ha otorgado de Su favor? Pues, a la familia de Abraham le dimos, en verdad, la Escritura [Sagrada] y la Sabiduría y les dimos un Gobierno inmenso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@dxlviii{De ellos los hay que creen en él y los hay que se apartan de él. El Infierno será suficiente fuego para abrasarles.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@dxlix{En verdad, a aquellos que no creen en Nuestras señales, les haremos arder en un Fuego en el que cada vez que sus pieles se quemen se las sustituiremos por otras distintas, para que saboreen el castigo. En verdad, Dios es poderoso, sabio.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@dl{Y, a aquellos que creen y obran rectamente, pronto les haremos entrar en un Jardín de cuyas profundidades brotan los ríos, en el que estarán eternamente. En ellos tendrán parejas purificadas y les colocaremos bajo densas sombras.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@dli{En verdad, Dios os ordena devolver a sus propietarios los depósitos que se os confiaron y que, si juzgáis entre la gente, lo hagáis con justicia. ¡Qué excelente es aquello de lo que Dios os advierte! En verdad, Dios todo lo oye, todo lo ve.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@dlii{¡Oh, los que creéis! ¡Obedeced a Dios y obedeced al Mensajero y a los que de vosotros tienen autoridad! Y si discutís sobre algo, remitidlo a Dios y al Mensajero si creéis en Dios y en el Último Día. Eso es un bien y la mejor solución.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@dliii{¿No has visto a esos que proclaman que creen en lo que fue hecho descender para ti y en lo que fue hecho descender ante de ti? Quieren recurrir al juicio de los tiranos, a pesar de que se les ha ordenado no creer en ellos y quiere el Demonio extraviarles lo más lejos posible.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@dliv{Y cuando se les dice: «Venid a lo que hizo descender Dios y [venid] hacia el Mensajero» ya ves cómo los hipócritas se apartan totalmente de ti.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@dlv{Y cómo, cuando les aflige una desgracia por lo que hicieron con sus propias manos, vienen a ti jurando por Dios: «No deseamos más que el bien y la concordia.»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@dlvi{Dios conoce bien lo que hay en sus corazones, así que apártate de ellos y amonéstales y háblales con elocuencia que llegue a sus almas.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@dlvii{Y no Hemos enviado Mensajero alguno sino para que sea obedecido, con el permiso de Dios. Si, cuando fueron injustos consigo mismos, hubieran venido a ti y hubieran pedido el perdón de Dios y el Mensajero hubiera pedido perdón para ellos, habrían encontrado a Dios perdonador y misericordiosísimo con los creyentes.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@dlviii{Pero no. Juro por tu Señor que no creerán hasta que no te hayan hecho que juzgues sobre lo que disputan entre ellos. Entonces ya no encontrarán en sus almas como escapar de tu veredicto y se someterán plenamente.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@dlix{Si Nosotros hubiéramos decretado para ellos: «¡Mataos unos a otros!» o «¡Abandonad vuestros hogares!» sólo unos pocos de ellos lo habrían hecho. Pero, si hubiesen realizado aquello a lo que se les exhortó, habría sido mejor para ellos y su fe habría salido fortalecida.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@dlx{Y, entonces les habríamos otorgado por Nuestra parte una recompensa inmensa\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@dlxi{y les habríamos guiado al camino recto.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@dlxii{Y quien obedezca a Dios y al Mensajero estará con aquellos a los que Dios ha agraciado: los profetas, los veraces, los mártires y los justos. ¡Qué excelentes compañeros!\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@dlxiii{¡Este el favor que proviene de Dios! Y es suficiente con que Dios conozca.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@dlxiv{¡Oh los que creéis! Tomad precauciones y salid a combatir formando destacamentos fuertes o todos juntos.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@dlxv{En verdad, entre vosotros hay quien se queda atrás y si os aflige una desgracia dice: «Por una merced de Dios no estaba con ellos.»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@dlxvi{Pero si Dios os favorece, dice, como si entre vosotros y él no existiera una amistad: «¡Ojalá hubiera estado con ellos! ¡Habría obtenido un éxito inmenso!»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@dlxvii{¡Que combatan por la causa de Dios aquellos que han vendido su vida en este mundo a cambio de la otra! Y, a quien combate por la causa de Dios, tanto si es matado como si vence, Nosotros le daremos una recompensa inmensa.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@dlxviii{¿Es que no vais a combatir por la causa de Dios y de los hombres, mujeres y niños oprimidos que dicen: «¡Señor nuestro! Sácanos de este país de gentes opresoras y tráenos a alguien que, de Tu parte, nos proteja y auxilie.»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@dlxix{Los que creen combaten por la causa de Dios y los que no creen combaten por la causa de los tiranos. ¡Combatid, pues, a los amigos de Satanás! Ciertamente, la intriga de Satanás es débil.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@dlxx{¿No has visto a aquellos a quienes se les dijo: «Apartad vuestras manos [de las armas], estableced la oración y dad la limosna ritual» que cuando se les ordena ir al combate temen a los hombres como si fueran Dios o más aun y dicen: «¡Señor nuestro! ¿Por qué nos has ordenado ir al combate? Si al menos nos lo aplazaras un poco...»? Di: «El disfrute de esta vida es poco y la otra Vida es mejor para quien teme desagradar a Dios. Y no seréis oprimidos lo más mínimo.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@dlxxi{Dondequiera que os encontréis os hallará la muerte, aunque os escondierais en torres fortificadas.» Si les acontece algo bueno dicen: «Esto procede de Dios», pero si les ocurre algo malo dicen: «Esto procede de ti.» Di: «Todo viene de Dios.» Lo que ocurre con esa gente es que apenas entienden lo que sucede.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@dlxxii{Lo bueno que te sucede proviene de Dios y lo malo que te sucede proviene de ti mismo. Te hemos enviado a los hombres como un Mensajero. Basta Dios como testigo.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@dlxxiii{Quien obedece al Mensajero, ciertamente, obedece a Dios. En cuanto a quienes (te) den la espalda, no te hemos enviado a ellos para que seas su protector.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@dlxxiv{Dicen: «Obedecemos» pero cuando salen de tu presencia, un grupo de ellos conspira en la noche en contra de lo que tú dices. Pero Dios toma nota de lo que traman de noche. ¡No te preocupes por ellos y confía en Dios! ¡Dios es suficiente protector!\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@dlxxv{¿Acaso no meditan el Corán? Si procediera de otro distinto que Dios, sin duda, habrían encontrado en él abundantes contradicciones.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@dlxxvi{Y, cuando llega a ellos un asunto del que sentirse seguros o del que temer, lo difunden [sin verificarlo], pero si lo hubiesen remitido al Mensajero y a los que tienen autoridad entre ellos, aquellos que deseaban saber la verdad de primera mano la habrían sabido. Y si no fuese por el favor de Dios sobre vosotros y por Su misericordia, habríais seguido a Satanás, exceptuando a unos pocos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@dlxxvii{Así pues ¡Combate por la causa de Dios! No eres responsable más que de ti mismo. Y anima a los creyentes [a combatir]. Es posible que Dios contenga el ímpetu de los que no creen. Y Dios posee mayor fuerza y es más severo castigando.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@dlxxviii{Quien interceda por una buena causa recibirá parte de ella y quien interceda por una mala causa soportará parte de ella. Y Dios es el protector de todas las cosas.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@dlxxix{Y cuando os saluden, responded con un saludo mejor o semejante. En verdad, Dios lleva la cuenta de todo.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@dlxxx{Al.lah. No hay más dios que Él. Él os reunirá para el Día del Levantamiento, no hay duda de ello. Y ¿Quién es más veraz que Dios al hablar?\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@dlxxxi{¿Por qué, respecto a los hipócritas, os dividís en dos grupos, si Dios ya los ha rechazado por lo que hicieron? ¿Queréis guiar a quien Dios ha extraviado? Pues no encontrarás camino para aquel a quien Dios extravía.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@dlxxxii{Ellos quisieran que vosotros no creyeseis, de la misma manera que ellos no creen, para que fueseis iguales. Así que no toméis amigos de entre ellos hasta que emigren por la causa de Dios. Y si [os] dan la espalda, apresadlos y matadlos donde quiera que les encontréis. Y no aceptéis su amistad ni su ayuda,\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@dlxxxiii{exceptuando a quienes se unan a un pueblo con el que tengáis establecido un pacto o que vengan a vosotros con el pecho oprimido por tener que combatir contra vosotros o contra su propio pueblo. Si Dios hubiera querido les habría dado poder contra vosotros y os habrían combatido. Por tanto, si se apartan de vosotros y no os hacen la guerra y os ofrecen la paz, Dios no os deja vía de actuación contra ellos.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@dlxxxiv{Pronto encontraréis a otros que desean estar a salvo de vosotros y a salvo de su propia gente pero que, cada vez que se les invita a la idolatría, recaen en ella. Por tanto, si no se abstienen de pelear contra vosotros y no vienen a vosotros con ofertas de paz y manteniendo sus manos quietas, apresadles o matadles dondequiera que os enfrentéis a ellos. Es para ir contra ellos para lo que os dimos un poder evidente.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@dlxxxv{Un creyente no puede matar a otro creyente, excepto por error. Y, quien mate a un creyente por error, deberá pagar a su familia el precio de la sangre establecido, excepto si ellos renuncian (a la indemnización), y liberar a un esclavo creyente. Si él pertenecía a un pueblo enemigo vuestro, pero era creyente, deberéis liberar a un esclavo creyente. Y si era de un pueblo con el que tenéis establecido un pacto, pagaréis el precio de la sangre establecido y liberaréis un esclavo creyente. Y quien no tenga posibilidad, que ayune dos meses seguidos. Perdón que procede de Dios. Y Dios todo lo sabe, es sabio.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@dlxxxvi{Y quien mate a un creyente premeditadamente tendrá como recompensa el Fuego del Infierno en el que estará eternamente y Dios le odiará, le maldecirá y le castigará con un castigo inmenso.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@dlxxxvii{¡Oh los que creéis! Cuando salgáis de expedición por la causa de Dios, distinguid cuidadosamente y no digáis a quien se encuentre con vosotros pacíficamente: «Tú no eres creyente», buscando los bienes de la vida de aquí, pues junto a Dios hay un botín abundante. Así erais vosotros anteriormente y Dios os favoreció. Por tanto, distinguid. En verdad, Dios está bien informado de todo cuanto hacéis.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@dlxxxviii{No son lo mismo los creyentes que se quedan en casa, excepto si sufren alguna enfermedad o impedimento, y los que se esfuerzan por la causa de Dios con sus bienes y sus personas. Dios ha favorecido a los que se esfuerzan por la causa de Dios con sus bienes y con sus personas, situándoles en una categoría superior a los que se quedan en sus casas. Dios ha prometido a todos ellos una buena recompensa, pero a los que se esfuerzan, Dios les favorecerá con una recompensa inmensamente mayor que a los que permanecen en sus casas.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@dlxxxix{Categorías y perdón y misericordia que provienen de Él, pues Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@dxc{En verdad, a aquellos a quienes los ángeles se lleven mientras eran injustos con sus propias almas les dirán: «¿Qué hacíais?» Dirán: «Estábamos oprimidos en la Tierra.» Ellos dirán. «¿Acaso no era la Tierra de Dios suficientemente amplia para que hubieseis emigrado?» La morada de estos será el fuego del Infierno. ¡Qué mal destino!\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@dxci{Exceptuando aquellos hombres, mujeres y niños que verdaderamente estaban oprimidos y no disponían de medios ni de una guía para el camino.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@dxcii{A esos posiblemente Dios les perdone, pues Dios es indulgente, perdonador.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@dxciii{Y quien emigre por la causa de Dios, encontrará en la Tierra refugio abundante y amplio. Y la recompensa de quien salga de su casa, emigrando hacia Dios y Su Mensajero, y le sorprenda la muerte, recae sobre Dios. Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@dxciv{Y cuando viajéis por la Tierra no cometéis pecado si acortáis vuestras oraciones si teméis que os ataquen los que no creen, pues, en verdad, los que no creen son para vosotros un enemigo manifiesto.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@dxcv{Cuando estés entre ellos dirigiendo su oración, que un grupo de ellos rece contigo y que tomen sus armas y cuando se hayan prosternado que se echen atrás y que venga otro grupo que no haya rezado y rece contigo. Y que tomen precauciones y sus armas. Los que no creen, si descuidaseis vuestras armas y vuestros escudos, os atacarían con una carga fulminante. No cometéis falta si, molestos por la lluvia o por que estáis enfermos, dejáis a un lado vuestras armas, pero tomad precauciones. En verdad, Dios ha preparado a los que no creen un castigo humillante.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@dxcvi{Y cuando terminéis vuestra oración, recordad a Dios, de pie, sentados o acostados. Y cuando estéis tranquilos, haced vuestra oración. En verdad, es obligatorio para los creyentes realizar la oración es los momentos fijados.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@dxcvii{Y no debilitéis la persecución de esa gente. Si sufrís, ellos también sufren como sufrís vosotros, pero vosotros esperáis de Dios lo que ellos no esperan. Y Dios todo lo conoce, es sabio.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@dxcviii{En verdad, hicimos descender para ti la Escritura [Sagrada] con la Verdad, para que juzgues entre los hombres mediante lo que Dios te ha hecho ver. Y no seas defensor de los traidores.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@dxcix{Y pedid el perdón de Dios. Ciertamente, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@dc{Y no discutáis a favor de quienes se traicionan constantemente a sí mismos. Dios no ama a quien es traidor, pecador.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@dci{Se avergüenzan ante la gente pero no se avergüenzan ante Dios, aunque Él está junto a ellos cuando conspiran por la noche diciendo lo que a Él no le satisface. Y Dios tiene bajo control lo que hacen.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@dcii{¡Ah! Vosotros los defendéis en esta vida, pero ¿Quién hablará en su favor ante Dios el Día del Levantamiento o quién será su abogado?\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@dciii{Quien haga un mal u oprima a su propia alma y luego pida el perdón de Dios, encontrara a Dios perdonador, misericordiosísimo con los creyentes.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@dciv{Y quien comete un pecado, ciertamente, lo comete contra sí mismo. Y Dios todo los conoce, es sabio.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@dcv{Quien, pues, comete un error o un pecado y luego acusa de ello a un inocente, cargará con una infamia y un pecado evidente.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@dcvi{Si no fuera por el favor y la misericordia de Dios sobre ti, un grupo de ellos habría tratado de extraviarte, pero no se extravían más que a sí mismos. Y no pueden perjudicarte en nada. Dios ha hecho descender sobre ti la Escritura [Sagrada] y la Sabiduría y te ha enseñado lo que no sabías. El favor que Dios te hizo es inmenso.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@dcvii{No hay nada bueno en muchas de las conversaciones que mantienen en secreto, exceptuando a quien ordena la limosna, el bien o la reconciliación entre la gente. Y a quien haga eso buscando la satisfacción de Dios, Nosotros le daremos una recompensa inmensa.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@dcviii{Y a quien discuta al Mensajero, después de habérsele manifestado claramente la guía, y siga otro camino diferente al de los creyentes, le alejaremos en la medida en que él se aleje y le haremos entrar en el Infierno. ¡Qué mal destino!\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@dcix{En verdad, Dios no perdona a quien adora a otro distinto a Él pero, aparte de eso, perdona a quien Él quiere. Y quien adore a otro que a Dios se habrá extraviado profundamente.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@dcx{Lo que adoran aparte de Él, no son más que ídolos femeninos y no adoran más que a un Satanás rebelde\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@dcxi{a quien Dios ha maldecido y que dice: «Tomaré a un número determinado de Tus siervos\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@dcxii{y les extraviaré. Les haré concebir falsas esperanzas y les ordenaré que corten las orejas del ganado y que alteren la Creación de Dios.» Y quien tome a Satanás por amigo y protector, en lugar de a Dios se habrá perdido de manera evidente.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@dcxiii{Les hace promesas y les hace concebir falsas esperanzas, pero lo que Satanás les promete es sólo ilusión.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@dcxiv{Su morada será el Infierno y no hallarán manera de escapar de él.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@dcxv{Y, a aquellos que creen y obran rectamente, les haremos entrar en Jardines de cuyas profundidades brotan los ríos, en los que estarán eternamente; hasta el final de los tiempos. La promesa de Dios es verdadera y ¿Quién es más veraz al hablar que Dios?\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@dcxvi{[La superioridad] no es por deseo vuestro o por deseo de la gente de la Escritura [Sagrada]. Quien obre mal será retribuido por ello y, excepto Dios, no encontrará ni amigo ni auxiliar.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@dcxvii{Y, quien haga buenas acciones, sea varón o hembra, y sea creyente, entrará en el Jardín y no será oprimido en lo más mínimo.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@dcxviii{Y ¿Quién posee mejores creencias que quien inclina su rostro en señal de sometimiento a Dios y es bueno y sigue la creencia de Abraham, el buscador de la Verdad?\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@dcxix{A Dios pertenece lo que hay en los cielos y lo que hay en la Tierra y Dios todo lo abarca.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@dcxx{Te piden tu opinión sobre las mujeres. Di: «Dios os da su parecer sobre ello [en lo que os fue recitado] en la Escritura [Sagrada] sobre ellas. Y en lo que os fue recitado sobre las huérfanas a las cuales no habéis entregado lo que fue dispuesto para ellas y con las cuales no deseáis casaros, y sobre los niños oprimidos, y que debéis dar a los huérfanos un trato equitativo. Y lo que hagáis de bien, Dios, con seguridad, lo sabrá.»\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@dcxxi{Y si una mujer siente que su esposo la rechaza o la evita, no hacen mal si ambos lo arreglan pacíficamente. Y hacer las paces es mejor. Las almas son propensas a la codicia, pero si sois virtuosos y temerosos de Dios [sabed que] ciertamente, Dios está bien informado de todo lo que hacéis.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@dcxxii{Y, jamás podréis ser justos con vuestras mujeres, aun deseándolo, pero no os inclinéis totalmente [hacia una] dejando [a las otras] como suspendidas en el aire. Si lo arregláis y sois temerosos de Dios [encontraréis] que, ciertamente, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@dcxxiii{Y, si se separan, Dios cubrirá las necesidades de cada uno de ellos con algo de Su abundancia. Dios todo lo alcanza, es sabio.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@dcxxiv{A Dios pertenece todo lo que hay en los cielos y en la Tierra. Y, ciertamente, Nosotros ordenamos a quienes les fue dada la Escritura [Sagrada] antes de vosotros y, [también], a vosotros, que fuerais buenos, temeroso de Dios. Pero, si no creéis, [sabed que] en verdad, a Dios pertenece lo que hay en los cielos y en la Tierra. Y Dios es rico por Sí mismo, digno de ser alabado.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@dcxxv{Y a Dios pertenece lo que hay en los cielos en la Tierra y es suficiente con tener a Dios de abogado.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@dcxxvi{Si Él quisiera ¡Oh gentes! os llevaría y traería a otros. Dios tiene suficiente poder para hacerlo.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@dcxxvii{Quien desee la recompensa de este mundo, [sepa que] junto a Dios están la recompensa de este mundo y la del Otro. Y Dios todo lo oye, todo lo ve.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@dcxxviii{¡Oh, los que creéis! Proteged la justicia testificando para Dios, aunque sea contra vosotros mismos o contra vuestros padres o familiares cercanos, sean ricos o pobres, ya que Dios tiene mayor derecho que ellos. Y no sigáis vuestras pasiones, para que seáis justos. Y, si distorsionáis vuestro testimonio u os negáis a darlo, Dios está bien informado de lo que hacéis.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@dcxxix{¡Oh los que creéis! Creed en Dios y en Su Mensajero y en la Escritura [Sagrada] que ha ido descendiendo sobre Su Mensajero y en la Escritura [Sagrada] que hicimos descender anteriormente. Y quien no crea en Dios y en Sus ángeles y en Sus Escrituras y en Sus Mensajeros y en el Último Día, en verdad, se habrá extraviado profundamente.\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@dcxxx{En verdad, a aquellos que creen, luego descreen, luego creen, luego descreen, incrementando su incredulidad, Dios no les perdonará jamás ni les guiará al camino [recto].\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@dcxxxi{Informa a los hipócritas que tendrán un castigo doloroso.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@dcxxxii{Aquellos que toman como amigos a los que no creen en lugar de a los creyentes. ¿Acaso buscan el poder junto a ellos? Pues, en verdad, el poder pertenece por entero a Dios.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@dcxxxiii{Él os reveló en la Escritura [Sagrada] que, cuando oigáis que las indicaciones de Dios no son creídas y se hace burla de ellas, no os sentéis con ellos hasta que hablen de otra cosa, pues, entonces, seríais como ellos. En verdad, Dios reunirá a los hipócritas y a los que no creen en el Infierno. Todos juntos.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@dcxxxiv{[Los hipócritas son] aquellos que permanecen a la expectativa y si Dios os envía una victoria, dicen: «¿Acaso no estamos con vosotros?» pero si los que no creen consiguen ganar una victoria parcial, dicen: «¿Acaso no podíamos haber cabalgado contra vosotros y, en cambio os defendimos de los creyentes?» Pero Dios juzgará entre vosotros el Día del Levantamiento. Y Dios no permitirá, en absoluto, que los no creyentes se sitúen sobre los creyentes.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@dcxxxv{Los hipócritas tratan de engañar a Dios pero es Él Quien les engaña. Cuando se levantan para la oración lo hacen con pereza, para que la gente les vea, y recuerdan muy poco a Dios.\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@dcxxxvi{Siempre vacilantes, no van hacia los unos ni hacia los otros. No encontrarás un camino para aquel a quien Dios extravía.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@dcxxxvii{¡Oh, los que creéis! No toméis a los que no son creyentes como amigos en lugar de a los creyentes. ¿Queréis poner a Dios en contra vuestra?\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@dcxxxviii{En verdad, os hipócritas estarán en lo más profundo del Fuego y no encontrarás quien les auxilie.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@dcxxxix{Exceptuando a quienes se arrepientan y se corrijan y se aferren a Dios y purifiquen sus creencias para Dios, pues esos estarán con los creyentes. Y Dios dará a los creyentes una recompensa inmensa.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@dcxl{¿Por qué iba Dios a castigaros si sois agradecidos y creyentes? Dios es agradecido, sapientísimo.\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@dcxli{A Dios no le gusta que nadie vaya proclamando abiertamente el mal, excepto si es oprimido. Dios todo lo oye, todo lo sabe.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@dcxlii{Si manifestáis el bien o lo ocultáis o perdonáis un agravio, [sabed que] ciertamente, Dios es perdonador, poderosísimo.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@dcxliii{En verdad, aquellos que no creen en Dios y en Sus Mensajeros y quieren hacer diferencias entre Dios y Sus Mensajeros y dicen: «Creemos en algunos pero no creemos en otros» queriendo tomar una postura intermedia entre unos y otros,\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@dcxliv{son los verdaderos incrédulos. Y hemos preparado para los incrédulos un castigo humillante.\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@dcxlv{Y, a quienes creen en Dios y en Sus Mensajeros y no hacen diferencia entre ninguno de ellos, Él les dará su recompensa. Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@dcxlvi{La gente de la Escritura [Sagrada] te pide que hagas descender para ellos una Escritura del Cielo. A Moisés le pidieron cosas más grandes, pues dijeron: «Haznos ver a Dios claramente» y el rayo los aniquiló por su injusticia. Luego adoraron al becerro, después de haber venido a ellos las pruebas claras [de cuál era la Verdad] y, [no obstante], Les perdonamos aquello y dimos a Moisés una autoridad evidente.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@dcxlvii{Y elevamos sobre ellos el monte Sinaí como señal del pacto que habíamos realizado con ellos y les dijimos: «Entrad por la puerta prosternados» y les dijimos: «No violéis el sábado» e hicimos con ellos un pacto solemne.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@dcxlviii{Y, por haber roto su pacto y por no haber creído en las señales de Dios y por haber matado a los profetas sin derecho y por haber dicho: «Nuestros corazones están cerrados.» ¡No es eso! Sino que Dios ha imprimido la incredulidad en ellos y sólo unos pocos creerán.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@dcxlix{Y por no haber creído en Dios y haber dicho de María una inmensa calumnia\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@dcl{y por haber dicho: «Ciertamente, hemos matado al Mesías, Jesús hijo de María, el Mensajero de Dios.» Pero no le mataron ni le crucificaron, sino que se hizo que les pareciera eso. Y, los que discuten sobre él, tienen dudas acerca de ello. No tienen conocimiento de ello, sólo siguen conjeturas. ¡Pero no lo mataron! ¡Eso es seguro!\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@dcli{sino que Dios lo elevó hacia Él. Dios es poderosos, sabio.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@dclii{Entre la gente de la Escritura [Sagrada] no habrá nadie que no crea en él antes de su muerte y el Día del Levantamiento él será testigo sobre ellos.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@dcliii{Por ser opresores y por impedir a tanta gente seguir el camino de Dios, prohibimos a los judíos cosas buenas que anteriormente les habíamos permitido\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@dcliv{y por practicar la usura, que les había sido prohibida, y por comerse las riquezas de la gente sin derecho. Y, para los que de ellos no creen, hemos preparado un castigo dolorosísimo.\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@dclv{Pero, a quienes de ellos estén firmemente arraigados en el conocimiento, a los que sean creyentes, a los que crean en lo que fue hecho descender a ti y en lo que fue hecho descender antes de ti, a los que hagan la oración y a los que den la limosna purificadora de la riqueza y crean en Dios y en el Último Día, les otorgaremos una recompensa inmensa.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@dclvi{En verdad, Nosotros te hemos enviado la revelación [¡Oh Muhammad!], tal como enviamos la revelación a Noé y a los profetas que vinieron tras él. Y enviamos la revelación a Abraham, Ismael, Isaac, Jacob, a las tribus [de los Hijos de Israel], y a Jesús, Job, Jonás, Aarón y a Salomón. Y a David le otorgamos los Salmos.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@dclvii{Y [hemos enviado] Mensajeros de los que te hemos relatado su historia anteriormente y otros Mensajeros de los que no te hemos relatado su historia. Y Dios habló a Moisés directamente.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@dclviii{Mensajeros portadores de buenas nuevas y advertidores, para que, tras el envío de los Mensajeros, los seres humanos no tuviesen argumento alguno contra Dios. Y Dios es poderoso, sabio.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@dclix{Pero Dios atestigua que lo que Él hizo descender para ti lo hizo descender mediante el conocimiento que posee y los ángeles también lo atestiguan. Y basta Dios de testigo.\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@dclx{En verdad, aquellos que no creen y ponen dificultades [a los que quieren seguir] en la senda de Dios, se han extraviado enormemente.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@dclxi{En verdad, Dios no perdonará a quienes no creyeron y oprimieron, ni guiará su camino\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@dclxii{excepto en dirección al Infierno, en el que estarán eternamente; para siempre. Eso para Dios es fácil de hacer.\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@dclxiii{¡Oh, gentes! ¡Ha venido a vosotros el Mensajero con la Verdad que procede de vuestro Señor! ¡Creed, pues! ¡Eso será mejor para vosotros! Y si no creéis, (sabed que) ciertamente a Dios pertenece lo que hay en los cielos y en la Tierra y Dios todo lo conoce, es sabio.\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@dclxiv{¡Oh, gente de la Escritura [Sagrada]! No exageréis en vuestra religión y no digáis de Dios más que la verdad. En verdad, el Mesías Jesús hijo de María es un profeta de Dios, Su palabra depositada en María y un espíritu procedente de Él. Creed, pues, en Dios y en Sus Mensajeros y no digáis «Tres». ¡Acabad con eso! Es mejor para vosotros. En verdad, Dios es uno. ¡Glorificado sea! ¡Cómo va a tener Él un hijo! ¡A Él pertenece lo que hay en los cielos y en la Tierra! ¡Y Dios se basta para administrarlo!\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@dclxv{El Mesías no tiene a menos ser un siervo de Dios ni tampoco los arcángeles querubines. Y, pronto congregará junto a Él a todos los que tengan a menos adorarle y sean arrogantes.\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@dclxvi{Pero a aquellos que crean y actúen rectamente Él les entregará toda su recompensa y les añadirá de Su merced. Y a aquellos que tuvieron a menos «servirle» y fueron arrogantes Él les castigará con un castigo dolorosísimo y no encontraran, aparte de Dios, protector ni auxiliador.\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@dclxvii{¡Oh gentes! Ha venido a vosotros una prueba clara procedente de vuestro Señor e hicimos descender hacia vosotros una luz esclarecedora.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@dclxviii{Y a aquellos que crean en Dios y se aferren a ella, pronto se les introducirá en una misericordia y en una merced que proceden de Él y les guiará hacia Él por un camino recto.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@dclxix{Te piden tu juicio. Di: «Dios os da su juicio sobre la kalála: Si un hombre muere y no tiene hijos y tiene una hermana, para ella es la mitad de lo que dejó y él heredará de ella si ella no tiene hijos. Y si son dos hermanas, ellas recibirán dos tercios de lo que él dejó. Y si son varios hermanos y hermanas, a cada varón le corresponde la misma parte que a dos hembras.» Dios os lo explica claramente para que no os extraviéis. Y Dios conoce bien todas las cosas.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@dclxx{\basmalahes ¡Oh, los que creéis! Respetad los compromisos. Es licito para vosotros [comer la carne de] los animales de los rebaños, excepto de aquellos que se os va a comunicar. La caza no es lícita para vosotros mientras estéis consagrados [durante la peregrinación]. En verdad, Dios decreta lo que desea.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@dclxxi{Oh, los que creéis! No profanéis los sacramentos de Dios, ni el mes sagrado, ni las ofrendas, ni las guirnaldas, ni molestéis a quienes se dirigen a la Casa Sagrada buscando la misericordia de su Señor y Su satisfacción. Y, cuando salgáis e vuestro estado de consagración, podéis cazar. Y que los malos sentimientos hacia un pueblo que os impedía llegar a la Mezquita Sagrada no os inciten a la injusticia. Y ayudaos mutuamente a hacer el bien y al temor de Dios, pero no colaboréis en el pecado y la agresión. Y sed temerosos de Dios. Ciertamente, Dios castiga con severidad.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@dclxxii{Se os prohíbe [comer] la carne de los animales muertos, la sangre, la carne del cerdo y de lo que se ha ofrecido a otro distinto a Dios; el animal estrangulado o golpeado hasta morir o muerto por una caída o por una cornada, o lo devorado por una fiera, excepto lo que podáis purificar, y lo sacrificado sobre las piedras, así como dividir [la carne] consultando la suerte de las flechas. Todo ello es una trasgresión. Hoy, los que no creen, han desesperado de que vuestra religión decline. Por tanto, no les temáis a ellos, temed de Mí. Hoy he completado vuestra religión y he consumado Mi bendición sobre vosotros y estoy satisfecho de haberos dado como creencia el Islam. Y quien se vea obligado por el hambre, no por ánimo de pecar, encontrará que Dios es, verdaderamente, perdonador, misericordiosísimo con los creyentes.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@dclxxiii{Te preguntan que es lícito para ellos. Di: «Son lícitas para vosotros las cosas buenas y puras, y [la caza] con los animales de presa que habéis enseñado con lo que Dios os enseñó a vosotros. Comed, pues, de lo que capturen para vosotros y mencionad el nombre de Dios sobre ello. Y sed temerosos de Dios. Ciertamente, Dios es rápido haciendo la cuenta.»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@dclxxiv{Hoy se han hecho lícitas para vosotros las cosas buenas y puras. Y los alimentos de aquellos a quienes les fue dada la Escritura [Sagrada] se han hecho lícitos para vosotros y vuestros alimentos lícitos para ellos. Y las mujeres honestas de entre las creyentes y las mujeres honestas de entre aquellos a quienes les fue dada la Escritura [Sagrada] antes de vosotros, cuando les hayáis dado su dote en matrimonio, no tomándolas como fornicadoras o como amantes. Y quien abandone la fe, habrá malogrado sus obras y en la otra Vida será de los perdedores.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@dclxxv{¡Oh, los que creéis! Cuando os pongáis en pie para la oración, lavad vuestra cara y vuestras manos hasta los codos y pasad la mano [húmeda] por vuestras cabezas y por vuestros pies hasta los empeines. Y, si estáis impuros, purificaos y si estáis enfermos o de viaje o alguno de vosotros viene de hacer sus necesidades o habéis mantenido relaciones con las mujeres y no encontráis agua, purificaos con tierra pura, pasando las manos con ella por vuestros rostros y por vuestras manos. Dios no desea imponeros una carga, sino que quiere que os purifiquéis y completar Su favor sobre vosotros para que así, quizás, agradezcáis.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@dclxxvi{Y recordad el favor que Dios os hizo y el pacto que Él estableció con vosotros, cuando dijisteis: «¡Oímos y obedecemos!» Y sed temerosos de Dios. Dios sabe bien lo que hay en lo más profundo de los corazones.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@dclxxvii{¡Oh, los que creéis! Proteged la justicia por Dios, dando testimonio equitativo y no dejéis que los malos sentimientos contra un pueblo os lleven a no ser justos. ¡Sed justos! Eso está más cerca del temor de Dios. Y temed a Dios. En verdad, Dios está bien informado de cuanto hacéis.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@dclxxviii{Dios prometió a quienes creen y actúan rectamente que serán perdonados y obtendrán una recompensa inmensa.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@dclxxix{Y, aquellos que no creen y desmienten Nuestras señales, son la gente del Infierno.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@dclxxx{¡Oh los que creéis! Recordad el favor de Dios cuando un grupo quería poneros las manos encima y Él refrenó sus manos (para que no fueran) contra vosotros. Y temed a Dios, pues, en Dios es en quien confían los creyentes.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@dclxxxi{Ciertamente, Dios estableció un pacto con los Hijos de Israel y designamos entre ellos doce jefes. Y Dios dijo: «¡Estoy con vosotros! Si realizáis la oración, entregáis la limosna ritual, creéis en Mis Mensajeros, les dais vuestro apoyo y hacéis a Dios un préstamo generoso, Yo cubriré vuestras faltas y os introduciré en Jardines de cuyas profundidades brotan los ríos. Y, quien de vosotros, después de esto, descrea, ciertamente, se habrá extraviado del camino recto.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@dclxxxii{Y, por haber violado su pacto, les maldijimos y endurecimos sus corazones. Desvirtúan el significado de las palabras y olvidan parte de aquello a lo que, con ellas, se les llamaba la atención. No cesarás de descubrir la traición en ellos, exceptuando a unos pocos. Perdónales y discúlpales. En verdad, Dios ama a los virtuosos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@dclxxxiii{Y establecimos un pacto con los que decían: «Ciertamente, somos nazarenos.» Pero olvidaron una parte de lo que se les recordaba en él, por lo que suscitamos entre ellos la enemistad y el odio hasta el Día del Levantamiento. Dios les mostrará claramente lo que estaban haciendo.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@dclxxxiv{¡Oh, gente de la Escritura [Sagrada]! Ha venido a vosotros Nuestro Mensajero mostrando claramente mucho de lo que ocultabais de la Escritura y eliminando mucho. Ha venido a vosotros, procedente de Dios, una Luz y una Escritura clara.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@dclxxxv{Con ella, Dios guía por caminos de paz a quien busca Su satisfacción. Él les lleva de las tinieblas a la Luz y les guía hacia el camino recto.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@dclxxxvi{Ciertamente, aquellos que dicen: «El Mesías hijo de María es Dios» niegan la Verdad. Di: «Si Dios quisiera aniquilar al Mesías hijo de María, a su madre y todos los seres de la Tierra ¿Quién podría impedirlo?» A Dios pertenece el gobierno de los cielos y la Tierra y de lo que hay entre ellos. Él crea lo que desea. Dios tiene poder sobre todas las cosas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@dclxxxvii{Y los judíos y los cristianos dicen: «Somos los hijos de Dios y Sus preferidos.» Di: «¿Entonces, por qué os castiga por vuestros pecados? Sólo sois otros seres humanos de los [muchos] que Él ha creado.» Él perdona a quien quiere y castiga a quien quiere. Y a Dios pertenece el gobierno de los cielos y la Tierra y de lo que hay entre ambos y todo regresa a Él.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@dclxxxviii{¡Oh, gente de la Escritura [Sagrada]! Ha venido a vosotros Nuestro Mensajero, tras un periodo sin Mensajeros, para explicaros [las enseñanzas divinas], no fueseis a decir: «No ha venido a nosotros nadie que nos comunicara la buena nueva ni nos advirtiese del castigo.» Así pues, ha venido a vosotros un portador de la buena nueva y advertidor del castigo. Y Dios tiene poder sobre todas las cosas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@dclxxxix{Y (recuerda) cuando Moisés dijo a su pueblo: «¡Oh, pueblo mío! Recordad la merced de Dios con vosotros, poniendo entre vosotros profetas y haciendo de vosotros soberanos y otorgándoos lo que no le había sido dado a ninguna otra nación.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@dcxc{«¡Oh, pueblo mío! Entrad en la tierra sagrada que Dios ha dispuesto para vosotros y no retrocedáis pues os convertiríais en perdedores.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@dcxci{Ellos dijeron: «¡Oh, Moisés! En verdad, en ella habita un pueblo de gigantes y no entraremos en ella mientras ellos no salgan. Si ellos la abandonan nosotros entraremos.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@dcxcii{Dos hombres de los que temían a Dios y a los que Dios había agraciado dijeron: «Atacadles por la puerta. Cuando consigáis entrar, habréis vencido. Y confiad en Dios si sois creyentes.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@dcxciii{Dijeron: «¡Oh, Moisés! Jamás entraremos mientras ellos continúen allí. ¡Id tú y tu Señor y combatidles! Nosotros nos quedaremos aquí sentados.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@dcxciv{Dijo [Moisés]: ¡Dios mío! No tengo poder excepto sobre mí mismo y sobre mi hermano. Aléjanos de la gente trasgresora.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@dcxcv{Dijo [Dios]: «Estará prohibida para ellos. Cuarenta años vagarán por la Tierra. No te entristezcas por ese pueblo trasgresor.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@dcxcvi{Relátales la verdadera historia de los dos hijos de Adán, cuando ambos realizaron una ofrenda a Dios y a uno de ellos le fue aceptada pero al otro no. [Éste] Dijo: «¡Juro que te mataré!» Dijo [el otro]: «Dios sólo acepta la ofrenda de quienes son temerosos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@dcxcvii{Si levantas tu mano para matarme yo no levantaré la mía para matarte. En verdad, temo a Dios, el Señor de los mundos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@dcxcviii{Deseo que cargues con mi pecado y con el tuyo y que seas de la gente del Fuego. Esa es la recompensa de los opresores.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@dcxcix{Su alma le fue haciendo aceptable la idea de matar a su hermano y le mató, convirtiéndose con ello en uno de los perdedores.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@dcc{Entonces, Dios envió un cuervo que escarbó en la tierra para hacerle ver como sepultar el cadáver de su hermano. Dijo: «¡Ay de mí! ¿Es que soy incapaz de hacer como este cuervo?» Y enterró el cadáver de su hermano y fue de los que se arrepienten.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@dcci{Por esa razón, dispusimos para los Hijos de Israel que, quien matara a un ser humano sin que este hubiera cometido un crimen o hubiera corrompido en la Tierra, fuese considerado como quien mata a toda la humanidad y quien e salvase, como quien salva a toda la humanidad. Ciertamente, llegaron a ellos Nuestros Mensajeros con las pruebas claras, pero, tras ello y a pesar de ello, muchos de ellos cometieron excesos en la Tierra.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@dccii{En verdad, la retribución de quienes hagan la guerra a Dios y a Su Mensajero y se dediquen a corromper la Tierra, será la muerte o la crucifixión o que se les corte la mano y el pie opuesto o que se les expulse de su territorio. Esto será para ellos una humillación en esta vida y en la otra tendrán un castigo inmenso.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@dcciii{Excepto a quienes se arrepientan antes de caer en vuestras manos. Y sabed que Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@dcciv{¡Oh, los que creéis! Temed a Dios y buscad la manera de acercaros a Él y esforzaos por Su causa, quizás, así, tengáis éxito.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@dccv{En verdad, a quienes no creen, aunque poseyeran todo cuanto hay en la Tierra y otro tanto y lo entregaran para redimirse con ello del castigo del Día del Levantamiento, no les sería aceptado y tendrán un castigo inmenso.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@dccvi{Querrán escapar del Fuego, pero no saldrán de él y sufrirán un castigo constante.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@dccvii{Y, al ladrón y a la ladrona, cortadles la mano en pago de lo que hicieron, como escarmiento procedente de Dios. Y Dios es poderoso, sabio.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@dccviii{Pero, Dios perdonará a quien, tras su mal comportamiento, se arrepienta y repare el mal que cometió. En verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@dccix{¿Acaso no sabes que a Dios pertenece la soberanía de los cielos y la Tierra? Él castiga a quien quiere y perdona a quien quiere. Dios tiene poder sobre todas las cosas.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@dccx{¡Oh, Mensajero! No te entristezcas por quienes se precipitan a la incredulidad. Son de los que dicen «creemos» con sus bocas pero que no creen con sus corazones. Ni por los judíos que prestan oídos a la mentira y espían para otras gentes que no han venido a ti. Sacan las palabras (de la Sagrada Escritura) de su contexto. Dicen: «Si emiten este juicio, aceptadlo y si no rechazadlo.» No podrás interceder ante Dios a favor de quien Dios quiera castigar. Esos son aquéllos a los que Dios no quiere purificar sus corazones. Sufrirán la humillación en esta vida y en la otra un castigo inmenso.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@dccxi{Prestan oído a las mentiras y se alimentan de bienes ilícitos. Si vienen a ti, juzga su asunto o déjales que se arreglen entre ellos. Si te inhibes, no podrán perjudicarte en absoluto, pero si juzgas, júzgales con equidad. Ciertamente, Dios ama a quienes son equitativos.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@dccxii{Pero ¿Cómo pueden querer que tú seas su juez, teniendo ellos la Torá con el juicio de Dios? Luego, tras ello, dan la espalda. No son creyentes.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@dccxiii{Ciertamente, hicimos descender la Torá. En ella hay guía y luz. Los profetas, obedeciendo a Dios, administraban justicia con ella entre los judíos [y también] los rabinos y sabios, pues se les pidió que protegiesen la Escritura de Dios y dieran testimonio de ella. Así pues, no tengáis miedo de la gente, temedme a Mí y no vendáis Mis indicaciones por poco precio. Quienes no juzguen con los que Dios ha hecho descender, serán los que ocultan la Verdad.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@dccxiv{Y, en ella, les ordenamos: vida por vida, ojo por ojo, nariz por nariz, oreja por oreja, diente por diente y por cada herida una compensación. Y, a quien renuncie a la compensación, se le perdonarán sus pecados. Y, quienes no juzguen conforme a lo que Dios hizo descender, serán los opresores.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@dccxv{Y, tras ellos, enviamos a Jesús hijo de María, confirmando la Torá que ellos tenían en sus manos. Y le dimos el Evangelio, en el cual hay guía y luz y confirmación de lo que tienen en la Torá, y que es una guía y una amonestación para los temerosos de Dios.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@dccxvi{¡Que la gente del Evangelio juzgue conforme a lo que Dios ha hecho descender en él! Y, quienes no juzguen conforme a los que Dios hizo descender, esos serán los pecadores.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@dccxvii{Hicimos descender para ti la Escritura que contiene la Verdad y que confirma la Escritura que ya tenían en sus manos y la protege. Juzga, pues, entre ellos con lo que Dios hizo descender. Y no sigas sus deseos, contrariando la Verdad que ha venido a ti. A cada uno de vosotros le hemos asignado un código legal y un camino de salvación y, si Dios hubiera querido, habría hecho que fueseis una sola comunidad, pero lo hace así para probar vuestra fe en lo que os ha dado. ¡Competid, pues, en buenas acciones! El lugar de retorno de todos vosotros es Dios. Él os aclarará aquello en lo que manteníais diferencias.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@dccxviii{Juzga entre ellos con lo que Dios hizo descender y no sigas sus deseos. Y ten cuidado con ellos para que no te desvíen de algo de lo que hizo descender Dios para ti. Y si te dan la espalda, sabe que Dios quiere castigarles por algunos de sus pecados. En verdad, muchos de los seres humanos son transgresores de la ley.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@dccxix{¿Desean seguir juzgando como en los tiempos de la ignorancia? Para quienes tienen certeza ¿Quién puede juzgar mejor que Dios?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@dccxx{¡Oh, los que creéis! No toméis a los judíos ni a los cristianos de amigos y aliados. Algunos de ellos son aliados unos de otros. Y, quien de vosotros les tome por amigos, será uno de ellos. En verdad, Dios no guía a la gente opresora.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@dccxxi{Ves a los que tienen una enfermedad en su corazón precipitarse hacia ellos diciendo: «¡Tememos sufrir un giro de la fortuna!» Pero puede que Dios traiga la victoria o que, procedente de Él, suceda algo que les haga arrepentirse de lo que guardaban en secreto en sus almas.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@dccxxii{Y los creyentes dirán: «¿Son esos los que con solemnidad juraban por Dios que estaban contigo?» Han invalidado sus buenas obras y se han convertido en perdedores.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@dccxxiii{¡Oh, los que creéis! Quien de vosotros reniegue de sus creencias religiosas [sepa que] vendrá Dios con una gente a la que Él ama y por la que es amado, [que será] humilde con los creyentes y severa con los que ocultan la Verdad. Esforzados por la causa de Dios y que no temen la maldición de ningún calumniador. Este es el favor de Dios, que otorga a quien Él quiere. Y Dios todo lo abarca, todo lo conoce.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@dccxxiv{En verdad, vuestros amigos y protectores son solamente Dios y Su Mensajero y aquellos que tienen fe, que hacen la oración y dan limosna mientras están inclinados rezando.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@dccxxv{Y quienes tomen como amigos y protectores a Dios, a Su Mensajero y a los que tienen fe, sepan que los del partido de Dios son los vencedores.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@dccxxvi{¡Oh, creyentes! No toméis como amigos a quienes, habiendo recibido la Escritura [Sagrada] antes que vosotros, toman vuestras creencias religiosas a burla y juego, ni tampoco a los que no creen. Y temed a Dios si sois creyentes.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@dccxxvii{Y cuando llamáis a la oración lo toman a burla y a juego. Eso es porque son una gente que no razona.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@dccxxviii{Di: «¡Oh, gente de la Escritura [Sagrada]! ¿Nos rechazáis por alguna otra razón que por haber creído en Dios y en lo que nos fue revelado y en lo que fue revelado antes de nosotros y porque la mayoría de vosotros sois transgresores?»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@dccxxix{Di: «¿Queréis que os informe de quién está peor retribuido por Dios que quienes hacen esto? Aquel a quien Dios ha maldecido y aquel con el que Él está irritado. A algunos de ellos Él los convirtió en monos y en cerdos porque adoraban a los ídolos. Esos son quienes tienen una situación peor y los más extraviados del camino recto.»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@dccxxx{Y, cuando vienen a vosotros dicen: «Creemos», pero entran incrédulos y lo mismo salen. Y Dios es quien mejor conoce lo que ellos ocultan.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@dccxxxi{Y ves como muchos de ellos se precipitan al pecado y a la agresión y se alimentan del soborno y de ganancias ilegales. ¡Qué malo es lo que hacen!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@dccxxxii{¿Por qué los rabinos y los doctores de la ley no les prohíben sus palabras pecadoras y alimentarse de bienes ilícitos? ¡Qué malo es lo que hacen!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@dccxxxiii{Los judíos dicen: «La mano de Dios está atada.» ¡Que sus manos sean atadas y sean maldecidos por lo que dijeron! Al contrario, Sus manos están abiertas y Él reparte Sus bienes como quiere. Con certeza, lo que descendió para ti procedente de tu Señor incrementará en muchos de ellos la rebeldía y la falta de fe. Hemos sembrado entre ellos la enemistad y el odio hasta el Día del Levantamiento. Cada vez que enciendan el fuego de la guerra Dios lo apagará. Se esfuerzan por corromper la Tierra y a Dios no le gusta la corrupción.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@dccxxxiv{Y, si la gente de la Escritura [Sagrada] creyera y tuviera temor de Dios, perdonaríamos sus malos actos y les introduciríamos en los Jardines de la Delicia.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@dccxxxv{Y, si llevasen a la práctica los preceptos de la Torá y el Evangelio y lo que descendió para ellos procedente de su Señor, se alimentarían de lo que hay sobre ellos y bajo sus pies. Entre ellos hay una comunidad que es moderada, pero ¡Qué malo es lo que hacen muchos otros!\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@dccxxxvi{¡Oh, Mensajero! ¡Transmite lo que ha descendido a ti procedente de tu Señor! Y, si no lo haces, será como si no hubieses transmitido nada de Su mensaje y Dios te protegerá de las gentes. En verdad, Dios no guía a la gente que no cree.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@dccxxxvii{Di: «¡Oh, gente de la Escritura [Sagrada]! No estaréis en nada mientras no observéis la Torá, el Evangelio y lo que descendió para vosotros procedente de vuestro Señor.» Pero lo que descendió para ti procedente de tu Señor incrementa en muchos de ellos la rebeldía y la falta de fe. No te apenes, pues, por la gente que no tiene fe.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@dccxxxviii{En verdad, los creyentes, los judíos, los sabeos y los cristianos, quienes crean en Dios y en Último Día y obren rectamente, no tendrán por qué temer y no estarán tristes.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@dccxxxix{Hicimos un pacto con los Hijos de Israel y les enviamos Mensajeros. Siempre que llegó a ellos un Mensajero con lo que no deseaba su ego, a unos les desmintieron y a otros les mataron.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@dccxl{Creyeron que no serían puestos a prueba y [actuaron como] ciegos y sordos [ante la Verdad]. Después Dios aceptó su arrepentimiento y, [nuevamente] muchos de ellos [volvieron a comportarse como] ciegos y sordos. Pero Dios observa lo que hacen.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@dccxli{En verdad, no creen quienes dicen: «Ciertamente, el Mesías hijo de María es Dios.» Pero el Mesías dijo: «¡Oh, Hijos de Israel! Adorad a Dios, mi Señor y vuestro Señor.» A quién equipare a alguien junto a Dios, Dios le vedará [la entrada en] el Jardín y su morada será el Fuego. Los opresores no tendrán quien les auxilie.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@dccxlii{En verdad, no creen quienes dicen: «Ciertamente, Dios es el tercero de tres» cuando no hay más que un solo Dios. Si no se retractan de lo que dicen, quienes de ellos ocultan la Verdad sufrirán un castigo doloroso.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@dccxliii{¿Es que no se volverán hacia Dios arrepentidos y Le pedirán perdón? Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@dccxliv{No es el Mesías hijo de María sino un Mensajero de Dios. Antes que él han pasado otros Mensajeros. Y su madre decía la verdad. Ambos comían alimentos. Mira como les aclaramos las señales y mira como se extravían después.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@dccxlv{Di: «¿Adoraréis aparte de Dios a quienes no tienen poder para perjudicaros o beneficiaros?» Y Dios es Quien todo lo oye, Quien todo lo sabe.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@dccxlvi{Di: «¡Oh, gente de la Escritura [Sagrada]! No exageréis en vuestras creencias faltando a la Verdad y no sigáis las pasiones de una gente que ya se había extraviado anteriormente e hicieron que muchos se extraviaran y que se han apartado del camino recto.»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@dccxlvii{Aquellos de los Hijos de Israel que se alejaron de la fe, fueron maldecidos por boca de David y de Jesús hijo de María por haber desobedecido y haberse extralimitado.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@dccxlviii{No se prohibían unos a otros las malas acciones que cometían. ¡Qué mal estaba lo que hacían!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@dccxlix{Ves a muchos de ellos que toman amigos entre los que no tienen fe. ¡Qué malo es lo que han enviado por delante [a la otra vida] para sus almas! Dios está disgustado con ellos y serán castigados eternamente.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@dccl{Y si hubieran creído en Dios y en el Profeta y en lo que fue hecho descender a él, no les habrían tomado como amigos, pero muchos de ellos son transgresores.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@dccli{Con seguridad, encontrarás que los peores enemigos de los creyentes son los judíos y los politeístas y que los más afectuosos con los creyentes son los que dicen: «Ciertamente, somos cristianos.» Eso es porque algunos de ellos son sacerdotes y monjes, y porque no son arrogantes.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@dcclii{Y, cuando escuchan la revelación que descendió para el Mensajero, veras sus ojos inundados de lágrimas por lo que reconocen de la Verdad. Dicen: «¡Señor nuestro! Creemos. Escribe pues nuestros nombres con los que dan testimonio.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@dccliii{¿Por qué no íbamos a creer en Dios y en la Verdad que ha venido a nosotros, si anhelamos que nuestro Señor nos admita entre la gente recta?»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@dccliv{Por lo que dijeron, Dios les recompensará con Jardines de cuyas profundidades brotan los ríos, en los que estarán eternamente. Esa es la recompensa de quienes hacen el bien.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@dcclv{Y quienes no crean y desmientan Nuestras señales serán gente del Infierno.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@dcclvi{¡Oh, los que creéis! No prohibáis las cosas buenas que Dios ha hecho lícitas para vosotros y no os extralimitéis. En verdad, Dios no ama a los transgresores.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@dcclvii{Y comed de lo lícito y bueno que Dios os proporciona. Y temed a Dios, en Quien creéis.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@dcclviii{Dios no tendrá en cuenta vuestros juramentos hechos a la ligera, pero sí os toma en cuenta los juramentos con los que os comprometéis conscientemente. En compensación, alimentaréis a diez necesitados de manera similar a como alimentáis a vuestras familias o les vestiréis o liberaréis un esclavo. Y quien no pueda, que ayune tres días. Esa es la compensación por vuestros juramentos incumplidos. Cumplid vuestros juramentos. De esta manera os aclara Dios sus señales. Quizás seáis agradecidos.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@dcclix{¡Oh, los que creéis! Ciertamente, el vino, los juegos de azar, las piedras de altar [los ídolos] y las flechas adivinatorias, son cosas abominables hechas por Satanás. Por tanto, absteneos de ellas, quizás así triunféis.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@dcclx{Ciertamente, Satanás quiere crear entre vosotros la enemistad y el odio, con el vino y los juegos de azar y apartándoos del recuerdo de Dios y de la oración. ¿Os abstendréis de ello?\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@dcclxi{¡Obedecer a Dios y obedeced al Mensajero y sed precavidos! Pero si dais la espalda, sabed que Nuestro Mensajero sólo es responsable de transmitir la revelación con claridad.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@dcclxii{Quienes creen y hacen el bien no están en pecado por lo que comieron anteriormente, mientras sean temerosos y creyentes y hagan el bien, luego sean temerosos y crean, luego sean temerosos y virtuosos. Dios ama a quienes son virtuosos.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@dcclxiii{Oh, los que creéis! Verdaderamente, Dios os pone a prueba con parte de lo que cazáis con vuestras manos y lanzas. Dios quiere saber quién Le teme en secreto. Y quien tras esto viole la ley, sufrirá un castigo doloroso.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@dcclxiv{¡Oh, los que creéis! No cacéis mientras estéis consagrados a la peregrinación. Quien de vosotros cace intencionadamente, que lo compense sacrificando un animal de su ganado semejante al que mató, conforme al juicio de dos personas justas de entre vosotros, como una ofrenda a la Kaaba. O lo compensará alimentando a los necesitados, o ayunando en proporción equivalente, para que pruebe las malas consecuencias de su acto. Dios perdona lo pasado, pero Dios se vengará del que reincida. Dios es poderoso, dueño de la venganza.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@dcclxv{Es lícita para vosotros la pesca del mar y los alimentos que hay en él. Son provisiones para vosotros y para los viajeros. Pero os está prohibida la caza de la tierra mientras dure vuestra condición de peregrinos. Y sed temerosos de Dios, hacia Quien seréis congregados.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@dcclxvi{Dios ha dispuesto la Kaaba, la Casa Sagrada, los meses sagrados, las ofrendas y las guirnaldas, para el bienestar de las gentes. Eso es para que sepáis que Dios conoce lo que hay en los cielos y en la Tierra y que Dios conoce bien todas las cosas.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@dcclxvii{Sabed que Dios es severo castigando y que Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@dcclxviii{El Mensajero sólo tiene la responsabilidad de transmitir la revelación. Y Dios conoce lo que mostráis y lo que ocultáis.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@dcclxix{Di: «El mal y el bien no son iguales, aunque te sorprenda la abundancia de mal.» Así pues, temed a Dios ¡Oh, gente dotada de intelecto! para que podáis triunfar.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@dcclxx{¡Oh, los que creéis! No preguntéis sobre cosas que, si se os revelasen, os perturbarían. Pero si preguntáis por ellas, cuando desciende el Corán os serán reveladas y Dios lo disculpará. Dios es perdonador, indulgente.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@dcclxxi{Ciertamente, hubo antes de vosotros un pueblo que hizo las mismas preguntas y eso les llevó a la incredulidad.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@dcclxxii{Dios no ha establecido Bahira, ni Saiba, ni Wasila, ni Ham, pero los que ocultan la Verdad inventan mentiras sobre Dios y la mayoría de ellos no razonan.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@dcclxxiii{Y cuando se les dice: «Venid a lo que Dios ha revelado y al Mensajero», dicen: «Es suficiente para nosotros lo que encontramos que nuestros antepasados seguían.» ¿Cómo es eso? ¿Y si sus antepasados no sabían nada y no estaban bien guiados?\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@dcclxxiv{¡Oh, los que creéis! Vuestra responsabilidad es cuidar de vuestras propias almas. Mientras vosotros estéis bien guiados nadie que se extravíe podrá perjudicaros. Todos vosotros regresaréis hacia Dios y seréis informados de los que hacíais.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@dcclxxv{¡Oh, los que creéis! Cuando a alguno de vosotros se le presente la muerte, que dos hombres justos de entre vosotros sean testigos de su testamento, u otros dos que no sean de los vuestros, si estáis de viaje y se os presenta a dificultad de la muerte. Haced que ambos se queden después de la oración y que juren por Dios: «No alteraremos nuestro testimonio a ningún precio, aunque se trate de un familiar y no ocultaremos el testimonio que pertenece a Dios, pues entonces seríamos unos pecadores.»\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@dcclxxvi{Pero si se descubre que ambos son culpables de un pecado, que otros dos, de entre los familiares cercanos perjudicados por el testimonio de los primeros, ocupen su lugar y juren por Dios que: «Nuestro testimonio es más verídico que el de los dos primeros y no hemos sido transgresores, pues, en ese caso, seríamos de los opresores.»\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@dcclxxvii{Así será más posible que el testimonio que presten se ajuste a la verdad o teman que otros presten juramento después del suyo. Y temed desobedecer a Dios y escuchad. Dios no guía a la gente transgresora.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@dcclxxviii{[Temed] un día en el que Dios reúna a los profetas y les pregunte: «¿Cómo respondieron las gentes a vuestra llamada?» Y ellos digan: «No lo sabemos. En verdad, Tú Eres el conocedor de lo oculto.»\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@dcclxxix{Y recuerda cuando Dios dijo: «¡Oh, Jesús hijo de María! Recuerda Mi favor sobre ti y sobre tu madre, pues te fortalecí con el Espíritu Santo y hablaste a las gentes en la cuna y de adulto. Y cuando te enseñé la Escritura Sagrada y la Sabiduría y la Torá y el Evangelio y creaste de barro formas de pájaros con Mi permiso y soplaste en ellas y fueron pájaros con Mi permiso. Y cuando curaste al ciego y al leproso con Mi permiso e hiciste salir al muerto de la tumba con Mi permiso. Y cuando impedí a los Hijos de Israel que te atacasen, cuando fuiste a ellos con las pruebas claras y los que de entre ellos no creían dijeron: “Eso no es otra cosa sino brujería evidente.»\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@dcclxxx{Y cuando inspiré a los apóstoles para que tuvieran fe en Mí y en Mi Mensajero y dijeron: «Creemos. Sé testigo de que nos sometemos a Ti, de que somos musulmanes.»\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@dcclxxxi{Y cuando dijeron los apóstoles: «¡Oh, Jesús hijo de María! ¿Podrá tu Señor hacer que descienda para nosotros una mesa desde el cielo?» Dijo [Jesús]: «¡Temed a Dios si sois creyentes!»\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@dcclxxxii{Dijeron: «Queremos comer de ella y aportar certeza a nuestros corazones y saber que nos has dicho la Verdad y ser así de los que dan testimonio de ella.»\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@dcclxxxiii{Dijo Jesús hijo de María: «¡Oh, Dios Señor nuestro! Haz descender a nosotros una mesa desde el cielo que sea una fiesta para todos nosotros, del primero al último y una señal procedente de Ti. ¡Provéenos, pues Tú eres el mejor de los proveedores!»\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@dcclxxxiv{Dijo [Dios]: «En verdad, haré que descienda a vosotros, pero, a quién de vosotros oculte la Verdad después de esto, le castigaré con un castigo con el que no He castigado jamás a nadie en todos los mundos.»\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@dcclxxxv{Y [recuerda] cuando dijo Dios: «¡Oh, Jesús hijo de María! ¿Has dicho tú a los hombres: Tomadme a mí y a mi madre como dioses y no a Dios?» [Jesús] Dijo: «¡Glorificado seas! No soy quién para decir de mí lo que no es cierto. Si lo hubiese dicho Tú lo habrías sabido. Tú sabes lo que hay en mi alma pero yo no sé lo que hay en Tu esencia. Ciertamente Tú eres Quien conoce todas las cosas ocultas.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@dcclxxxvi{No les he dicho más que aquello que Tú me ordenaste: ¡Adorad a Dios, Señor mío y Señor vuestro! y mientras estuve entre ellos di testimonio de ello y cuando me llevaste a Ti, Tú fuiste su cuidador y guardián. Tú eres testigo de todo.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@dcclxxxvii{Si les castigas, ellos son solamente Tus siervos y si les perdonas, Tú eres, ciertamente, poderoso, sabio.»\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@dcclxxxviii{Dice Dios: «Hoy es el día en el que los sinceros se beneficiarán de su sinceridad. Hay para ellos Jardines de cuyas profundidades brotan los ríos, en los que estarán eternamente, para siempre. Dios estará satisfecho de ellos y ellos estarán satisfechos de Él. Ese es el triunfo inmenso.»\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@dcclxxxix{A Dios pertenece el gobierno de los cielos y de la Tierra y de lo que hay entre ambos y Él tiene poder sobre todas las cosas.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@dccxc{\basmalahes Alabado sea Dios, Quien ha creado los cielos y la Tierra y ha establecido las tinieblas y la luz, aunque los que no creen equiparan a su Señor con otros.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@dccxci{Él es Quien os ha creado de barro y luego ha decretado un plazo. Un plazo determinado que sólo Él conoce. A pesar de ello, aún dudáis.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@dccxcii{Él es Dios en los cielos y en la Tierra. Conoce lo que ocultáis y lo que manifestáis y conoce la recompensa de vuestros actos.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@dccxciii{No llega a ellos una señal de las señales de su Señor sin que se aparten de ella.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@dccxciv{Desmintieron la Verdad cuando llegó a ellos, pero tendrán noticias de aquello de lo que se burlaban.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@dccxcv{¿Acaso no ven a cuántos pueblos hemos Nosotros destruido antes de ellos? Pueblos a los que dimos medios que no os damos a vosotros. Pero Nosotros enviamos el cielo sobre ellos cargado de lluvias, e hicimos que los ríos corriesen bajo ellos y les destruimos por sus pecados e hicimos surgir, tras ellos, otros pueblos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@dccxcvi{Aunque hubiésemos hecho descender para ti [¡Oh, Muhammad!] una Escritura en un pergamino que ellos pudiesen tocar con sus manos, los que no creen habrían dicho: «¡Esto no es sino magia manifiesta!»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@dccxcvii{Y dicen: «¿Por qué no se hizo que descendiera a él un ángel?» Si Nosotros hubiéramos enviado un ángel, el asunto habría quedado decretado y ellos no habrían tenido un plazo.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@dccxcviii{Y, si hubiésemos hecho de él un ángel, ciertamente, le habríamos hecho hombre y les habríamos confundido igual que se confundieron anteriormente.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@dccxcix{Ciertamente, ya se burlaron de los Mensajeros anteriores a ti pero, quienes se burlaban de ellos fueron cercados por aquello de lo que se burlaban.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@dccc{Di: «Viajad por la Tierra y observad cual fue el final de los desmentidores.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@dccci{Di: «¿A quién pertenece lo que hay en los cielos y en la Tierra?» Di: «A Dios. Él se ha impuesto a Sí mismo la misericordia. Os congregará hacia el Día del Levantamiento. De eso no hay duda.» Los que se han perdido a sí mismos, esos no son creyentes.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@dcccii{A Él pertenece lo que tiene lugar en la noche y el día. Y Él todo lo oye, todo lo sabe.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@dccciii{Di: «¿Tomaréis por amigo y protector a otro que a Dios, el Creador de los cielos y de la Tierra, siendo Él el que alimenta y no es alimentado?» Di: «Se me ordenó que fuese el primero en someterme y que no fuese de los que adoran a nadie junto a Él.»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@dccciv{Di: «En verdad, temo el castigo de un día inmenso si desobedezco a mi Señor.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@dcccv{Él habrá tenido misericordia de quien ese día sea apartado de él. Ese es el éxito evidente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@dcccvi{Y si Dios te aflige con una desgracia, nadie excepto Él podrá evitarlo. Y si te favorece con un bien, Él tiene poder sobre todo.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@dcccvii{Él es Quien tiene el dominio sobre sus siervos. Él es el Sabio, el Bien Informado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@dcccviii{Di: «¿Quién aporta el mayor testimonio?» Di: «Dios. Él es testigo entre yo y vosotros. Él me ha revelado este Corán para que, con él, os advierta a vosotros y a quien le llegue. ¿Daréis vosotros testimonio de que junto a Dios existen otros dioses?» Di: «Yo no atestiguaré.» Di: «En verdad, Él es un dios Único y, ciertamente, yo me aparto de lo que adoráis junto a Él.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@dcccix{Aquellos a quienes Nosotros dimos la Escritura [Sagrada] le conocen como conocen a sus hijos. Quienes se han perdido a sí mismos, no son creyentes.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@dcccx{¿Quién es más opresor que quien inventa una mentira sobre Dios o desmiente Sus señales? En verdad, los opresores no triunfarán.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@dcccxi{Y el día que Nosotros les reunamos a todos, diremos a quienes adoraron a otros como sólo se debe adorar a Dios: «¿Dónde están aquellos a quienes adorabais y a quienes suplicabais?»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@dcccxii{Su única excusa será decir: «Juramos por Dios, nuestro Señor, que no éramos politeístas.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@dcccxiii{¡Mira como mienten sobre ellos mismos y como les abandonan sus invenciones!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@dcccxiv{Entre ellos, hay algunos que te escuchan, pero Nosotros hemos puesto sobre sus corazones un denso velo para que no comprendan y hemos endurecido sus oídos y, aunque vieran toda clase de señales [de la Verdad], no creerían en ella. Incluso, aunque vengan a discutir contigo, los que no creen dicen: «Esos no son más que mitos de los hombres primitivos.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@dcccxv{Apartan de él y ellos mismos se alejan. Así sólo se destruyen a sí mismos, pero no se dan cuenta.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@dcccxvi{Si los pudieras ver, cuando, parados ante el Fuego, digan: «¡Ojalá se nos permitiera dar marcha atrás! No desmentiríamos las señales de nuestro Señor y seríamos de los creyentes.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@dcccxvii{Se les hará evidente lo que antes ocultaban. Pero si se les hiciera regresar repetirían lo que se les había prohibido. En verdad, son mentirosos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@dcccxviii{Dicen: «No existe más vida que la de este mundo y no seremos resucitados.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@dcccxix{Si les vieses cuando estén ante su Señor [el Día del Juicio Final]. Él dirá: «¿Acaso no es esto verdad?» Dirán: «Sí, lo juramos por nuestro Señor.» Él dirá: «Probad, pues, el castigo por haber ocultado la Verdad.»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@dcccxx{Con certeza, habrán perdido quienes desmintieron el encuentro con Dios. Cuando les llegue la Hora súbitamente, dirán: «¡Ay de nosotros! ¡Qué descuidados fuimos!» Cargarán sus pecados sobre sus espaldas. ¿No es acaso una mala carga?\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@dcccxxi{La vida de este mundo no es sino juego y distracción. Pero, para quienes son temerosos, la morada de la otra vida es mejor. ¿Es que no razonáis?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@dcccxxii{Nosotros sabemos que te entristece lo que dicen. Pero no es a ti a quien desmienten, sino las señales de Dios lo que los opresores repudian.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@dcccxxiii{Ciertamente, antes de ti, otros Mensajeros fueron desmentidos, pero fueron pacientes con lo que se les desmentía y perseguía hasta que les llegó Nuestro auxilio. Nadie puede cambiar las palabras de Dios. Ya han llegado a ti algunas noticias de los Mensajeros.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@dcccxxiv{Y si te resulta penoso que se aparten de ti, busca si puedes un túnel en la Tierra o una escalera para subir al cielo y traerles una señal. Si Dios quisiera, les habría reunido y guiado. Así que, no seas jamás de los ignorantes.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@dcccxxv{Solamente aquellos que escuchan responderán [a tu llamada ¡Oh, Mensajero!] En cuanto a los muertos, Dios les resucitará y, entonces, se les hará regresar a Él.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@dcccxxvi{Dicen: «¿Por qué no ha descendido a él ninguna señal milagrosa procedente de su Señor?» Di: «Dios tiene poder para enviar una señal.» Pero la mayoría de ellos no saben.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@dcccxxvii{No existe animal en la Tierra ni ave que vuele con sus dos alas que no forme comunidades como las vuestras. No hemos omitido nada en la Escritura [Sagrada]. Luego, serán congregados hacia su Señor.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@dcccxxviii{Pero quienes desmienten Nuestras señales están sordos y mudos en las tinieblas. Dios extravía a quien Él quiere y a quien Él quiere le pone en el camino recto.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@dcccxxix{Di: «¡Decidme la verdad si sois sinceros! Si os alcanzase el castigo de Dios u os llegase la Hora ¿Invocaríais a otro que a Dios?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@dcccxxx{¡No! Sino que sólo a Él invocaríais y Él, si quisiera, os concedería aquello que Le hubieseis pedido y olvidaría la idolatría que cometéis.»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@dcccxxxi{Ciertamente, hemos enviado [profetas] a otras comunidades antes de ti e hicimos que soportasen dificultades y preocupaciones para que suplicasen con humildad.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@dcccxxxii{Si hubiesen suplicado humildemente cuando les alcanzó Nuestro rigor... Pero se endurecieron sus corazones y Satanás les embelleció su comportamiento.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@dcccxxxiii{Y, cuando olvidaron lo que se les había recordado, abrimos para ellos las puertas de todas las cosas, hasta que hubieron disfrutado de todo lo que les fue dado. Entonces, les tomamos por sorpresa y fueron presa de la desesperación.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@dcccxxxiv{Así fue destruida hasta las raíces la comunidad de aquellos que eran opresores. ¡Alabado sea Dios, Señor de los mundos!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@dcccxxxv{Di: «¿Qué pensaríais si Dios os arrebatase el oído y la vista y sellase vuestros corazones? ¿Qué otro dios sino Dios podría devolvéroslos?» Ved las diferentes maneras en que explicamos las señales, aunque ellos dan la espalda y se alejan.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@dcccxxxvi{Di: «¿Qué pensaríais si os llegase el castigo de Dios por sorpresa o abiertamente? ¿Quién sería destruida sino la gente opresora?»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@dcccxxxvii{No enviamos a los profetas sino como portadores de buenas nuevas y advertidores del castigo. Por tanto, quienes crean y corrijan sus malas acciones no tendrán que temer y no estarán tristes.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@dcccxxxviii{Y quienes desmientan Nuestras señales sufrirán el castigo por haber transgredido.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@dcccxxxix{Di: «Yo no os digo que posea los tesoros de Dios, ni conozco lo que está oculto a los sentidos, ni os digo que yo sea un ángel. Sólo sigo lo que me ha sido revelado.» Di: «¿Son iguales el ciego y el que ve? ¿Es que no razonáis?»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@dcccxl{Y advierte con él a quienes teman ser congregados hacia su Señor que no tienen otro protector ni intercesor que Él, para que así sean temerosos.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@dcccxli{Y no rechaces a quienes suplican a su Señor día y noche, deseando contemplar Su rostro. Tú no eres en absoluto responsable de sus cuentas ni ellos son responsables en absoluto de tu cuenta y si les rechazases serías de los opresores.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@dcccxlii{Así es como examinamos a algunos de ellos mediante otros, para que digan: «¿Son estos a quienes Dios a favorecido de entre nosotros?» ¿Acaso no es Dios quien mejor conoce a quienes son agradecidos?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@dcccxliii{Y cuando vengan a ti quienes creen en Nuestras señales di: «La paz sea con vosotros. Vuestro Señor ha dispuesto para Sí mismo la misericordia. Quien de vosotros obre mal por ignorancia y tras ello se arrepienta y corrija el mal cometido... Él es perdonador, misericordiosísimo con los creyentes.»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@dcccxliv{Así explicamos las señales, para mostrar claramente el camino de los pecadores.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@dcccxlv{Di: «Se me ha prohibido adorar a quien invocáis en lugar de a Dios.» Di: «No seguiré vuestras pasiones, pues me extraviaría y no sería de los guiados.»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@dcccxlvi{Di: «En verdad, yo me baso en una prueba clara procedente de mi Señor y vosotros la desmentís. Yo no puedo otorgaros lo que pedís con tanta urgencia. El Juicio pertenece a Dios en exclusiva. Él dictamina la Verdad y Él es el mejor de los jueces.»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@dcccxlvii{Di: «Si yo poseyera aquello con lo que me urgís, el asunto entre vosotros y yo habría ya quedado resuelto. Dios es Quien mejor conoce a los opresores.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@dcccxlviii{Él posee las Llaves de lo Oculto que nadie conoce más que Él. Y Él conoce lo que hay en la tierra y en el mar. No cae ni una sola hoja de un árbol sin que Él lo sepa, ni existe una semilla en la oscuridad de la tierra, ni nada fresco o seco que no esté consignado en una Escritura clara.»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@dcccxlix{«Él es Quien os recoge por la noche y Quien conoce lo que obtenéis durante el día, luego os da la vida durante él, para que se cumpla un plazo establecido. Luego regresaréis a Él. Luego Él os informará sobre lo que hacíais.»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@dcccl{«Y Él es Quien posee el dominio completo sobre Sus siervos y Quien os envía protectores, hasta que, cuando a uno de vosotros le llega la muerte, Nuestros enviados toman su alma. Y ellos no son negligentes.»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@dcccli{«Luego son devueltos a Dios, su verdadero amigo y protector. ¿Acaso el Juicio no pertenece a Él? Él es el más rápido en hacer la cuenta.»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@dccclii{Di: «¿Quién os salva de las tinieblas de la tierra y el mar, cuando Le invocáis con humildad y temor: Si nos salva de ésta, seremos, ciertamente, de los agradecidos?»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@dcccliii{Di: «Es Dios Quien os salva de ella y de toda dificultad. Tras ello, volvéis al politeísmo.»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@dcccliv{Di: «Él es Quien tiene poder para enviaros un castigo de arriba o de abajo o para confundiros en facciones diferentes y hacer que probéis la violencia unos de otros.» Observa como exponemos Nuestras señales. Quizás así comprendan.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@dccclv{Tu pueblo lo ha desmentido, a pesar de que es la Verdad. Di: «Yo no soy vuestro tutor.»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@dccclvi{Cada profecía tiene su momento preestablecido y pronto sabréis.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@dccclvii{Cuando veas a quienes se burlan de Nuestras señales aléjate de ellos hasta que se ocupen de otra cosa diferente y si Satanás te hace olvidar, cuando recuerdes no te sientes con la gente opresora.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@dccclviii{Quienes son temerosos de Dios no son en absoluto responsables de las cuentas que ellos tengan que rendir, pero sí de llamarles al recuerdo de Dios. Quizás así se vuelvan temerosos.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@dccclix{Abandona a quienes toman sus creencias a juego y distracción y han sido seducidos por la vida de este mundo. Y amonéstales con él. ¡Que cada alma se proteja de lo que obtendrá por sus malas acciones! Pues no tendrá, aparte de Dios, protector ni intercesor y no le será aceptada ningún tipo de compensación. Esos son quienes sufrirán las consecuencias de lo que obtuvieron con sus malas acciones. Les aguarda una bebida de agua hirviendo y un castigo doloroso por haber ocultado la Verdad.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@dccclx{Di: «¿Acaso invocaremos, aparte de Dios, a quien no puede beneficiarnos ni perjudicarnos y daremos marcha atrás después de que Dios nos hubo guiado, como quien ha sido seducido por los demonios y va desorientado por la Tierra, aunque Sus compañeros le llaman al buen camino, diciéndole: Ven a nosotros.?» Di: «En verdad, la guía de Dios es la Guía y se nos ha ordenado que nos sometamos al Señor del Universo,\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@dccclxi{que hagamos la oración y que seamos temerosos de Él. Y Él es hacia Quien seréis congregados.»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@dccclxii{Él es Quien ha creado los cielos y la Tierra con la Verdad. Y el día que Él dice: «Sé», y es. Su palabra es la Verdad. A Él pertenecerá la Soberanía el Día en que sea tañida la trompeta. Él es Quien conoce lo oculto y lo manifiesto. Él es el Sabio, el Bien Informado.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@dccclxiii{Y [recuerda] cuando Abraham dijo a su padre Azar: «¿Tomas a los ídolos por divinidades? Verdaderamente, veo a ti y a tu pueblo en un extravío evidente.»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@dccclxiv{Así mismo, mostramos a Abraham el gobierno de los cielos y de la Tierra para que fuese de los que tienen certeza.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@dccclxv{Cuando le envolvió la noche, vio una estrella. Dijo: «¡Éste es mi Señor!». Pero cuando se ocultó, dijo: «¡No quiero lo que desaparece!»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@dccclxvi{Entonces, al ver la Luna naciente, dijo: «¡Éste es mi Señor!», pero cuando se ocultó, dijo: «¡Si mi Señor no me guía, sin duda seré de la gente extraviada!»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@dccclxvii{Cuando vio el Sol naciente, dijo: «¡Éste es mi Señor! ¡Éste es el mayor!» Pero cuando se ocultó, dijo: «¡Oh, pueblo mío! ¡Soy inocente de aquello que adoráis junto a Dios!\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@dccclxviii{En verdad, he vuelto mi rostro hacia Quien ha creado los cielos y la Tierra, como un buscador de la Verdad, pues no soy de los politeístas.»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@dccclxix{Su pueblo discutió con él. Dijo: «¿Discutís conmigo sobre Dios cuando Él me ha guiado? Yo no temo aquello que vosotros adoráis junto a Él, excepto aquello que mi Señor quiera. Mi Señor, con Su conocimiento, abarca todas las cosas. ¿Es que no recapacitaréis?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@dccclxx{¿Cómo puedo temer a los dioses que adoráis y vosotros no temer adorar a otras cosas como dioses junto a Dios, algo para lo que Él no os ha concedido permiso alguno? ¿Quién de las dos partes tiene más derecho a sentirse seguro? [Responded] si es que sabéis.»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@dccclxxi{Quienes creen y no mezclan su fe con opresión, disfrutarán de seguridad y serán bien guiados.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@dccclxxii{Estos son los argumentos que Nosotros dimos a Abraham frente a su pueblo. Nosotros elevamos el rango de quien queremos. En verdad, tu Señor es Sabio, conocedor de todo.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@dccclxxiii{Y le otorgamos a Isaac y a Jacob y les guiamos como antes habíamos guiado a Noé. Y de él descienden David y Salomón, Job, José, Moisés y Aarón. Así es como recompensamos a los que hacen el bien.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@dccclxxiv{Y [también] Zacarías, Juan, Jesús y Elías. Todos ellos eran de los justos.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@dccclxxv{E Ismael, Eliseo, Jonás y Lot. A todos ellos les distinguimos por encima de los demás seres del Universo,\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@dccclxxvi{así como a algunos de sus antepasados y descendientes y hermanos. Les escogimos y les guiamos al camino recto.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@dccclxxvii{Esta es la guía de Dios, con la que guía a quien Él quiere de Sus siervos. Pero, si hubiesen sido politeístas, todo lo que hubiesen hecho no habría valido de nada.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@dccclxxviii{Es a ellos a quienes Nosotros dimos la Escritura [Sagrada], la Sabiduría y la Profecía. Pero si descreen de ella, Nosotros se la hemos encomendado a una gente que jamás dejará de creer en ella.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@dccclxxix{Esos son a quienes Dios ha guiado. Así pues, ¡Sigue su guía! Di: «No os pido una recompensa a cambio. No es más que un recuerdo para todos los seres del Universo.»\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@dccclxxx{Y no valoran a Dios como Él debe ser valorado, cuando dicen: «Dios no ha hecho que descienda revelación alguna sobre ningún ser humano.» Di: «¿Entonces, quién hizo descender la Escritura que trajo Moisés como luz y guía para las gentes, que ponéis [por escrito] en pergaminos que mostráis, aunque ocultáis mucho de ella, y [mediante la cual] se os ha enseñado lo que ni vosotros ni vuestros padres sabíais?» Di: «Dios.» Luego, déjales que, en su obstinación, lo tomen a juego.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@dccclxxxi{Ésta es una Escritura bendita que Nosotros hemos hecho descender confirmando lo que ellos tienen en sus manos, para que adviertas a la Madre de las Ciudades y a quienes viven en sus alrededores. Y, quienes creen en la otra vida, creen en ella y son cuidadosos de sus oraciones.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@dccclxxxii{Y ¿Quién es más opresor que quien inventa mentiras sobre Dios o dice: «He recibido una revelación» cuando no le ha sido revelado nada, o quien dice: «Haré que descienda algo como lo que Dios hace descender?» Si vieras a los opresores en las dificultades de la muerte, cuando los ángeles con las manos extendidas hacia ellos [les digan]: «¡Entregad vuestras almas! Hoy seréis recompensados con el castigo humillante que merecéis por lo que dijisteis sobre Dios sin ser cierto y por haberos ensoberbecido ante Sus señales.»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@dccclxxxiii{«Ciertamente, habéis venido a Nosotros solos, igual que os creamos la primera vez, dejando a vuestras espaldas lo que os habíamos concedido y no vemos junto a vosotros a vuestros intercesores, aquellos de quienes proclamabais que participaban en la decisión de vuestro destino. Se ha cortado la relación entre vosotros y lo que proclamabais os ha extraviado.»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@dccclxxxiv{En verdad, Dios es Quien hace germinar la semilla y el hueso de los frutos. Hace salir lo vivo de lo muerto y lo muerto de lo vivo. Ese es Dios. ¿Cómo podéis, pues, desviaros [de la Verdad]?\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@dccclxxxv{Él hace despuntar la mañana y puso la noche para el reposo y el Sol y la Luna para llevar la cuenta. Éste es el decreto del Poderoso, el Conocedor.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@dccclxxxvi{Y es Él Quien os puso las estrellas para que os guiéis por ellas en medio de la oscuridad de la tierra y del mar. Hemos expuesto nuestras señales para una gente que sabe.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@dccclxxxvii{Y Él es Quien os ha creado de una sola alma, unos constantes en su fe y otros inconstantes. Hemos expuesto las señales para una gente que reflexiona.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@dccclxxxviii{Y Él es Quien hace descender agua del cielo. Mediante ella hacemos surgir toda clase de plantas, de las que hacemos salir vegetales y de ellos semillas de granos superpuestos. Y de la palmera, cuando brota, racimos apretados [de dátiles] y jardines de viñas, olivos y granados, similares y diferentes. ¡Mirad sus frutos cuando fructifican y maduran! En verdad, en todo ello hay señales para una gente que tiene fe.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@dccclxxxix{Y ellos ponen junto a Dios a los genios como socios Suyos, cuando Él los ha creado y, sin conocimiento, Le atribuyen hijos e hijas. ¡Glorificado y ensalzado sea Él por encima de cuanto Le atribuyen!\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@dcccxc{Él es el Originador de los cielos y la Tierra ¿Cómo podría Él tener un hijo cuando no tiene esposa? Él ha creado todas las cosas y Él conoce todas las cosas.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@dcccxci{Este es Dios, vuestro Señor. No hay más dios que Él, el Creador de todo. Así pues, ¡Adoradle! Él es Quien cuida de todo.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@dcccxcii{La vista no puede percibirle, pero Él percibe toda visión. Él es el Sutil, el Bien Informado.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@dcccxciii{Han venido a vosotros visiones claras de vuestro Señor, así pues, quien vea claro lo hará en beneficio de su propia alma y quien se ciegue se perjudicará a sí mismo. Yo no soy vuestro cuidador.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@dcccxciv{Así mostramos las señales de diferentes maneras, aunque ellos digan: «¡Tú lo has estudiado!», para dejárselo claro a una gente que tiene conocimiento.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@dcccxcv{¡Sigue lo que te fue revelado procedente de tu Señor! No hay más dios que Él. Y apártate de los politeístas.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@dcccxcvi{Si Dios quisiera no adorarían a otros dioses, pero no te pusimos como responsable de sus actos, ni eres su abogado defensor.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@dcccxcvii{Y no insultes a quienes ellos invocan en lugar de Dios, para que ellos no insulten a Dios, reaccionando con hostilidad y sin conocimiento. De esta misma manera hemos embellecido a cada comunidad su proceder. Luego regresarán hacia su Señor y Él les informará de lo que en realidad hacían.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@dcccxcviii{Juran por Dios con solemnes juramentos que si llegase a ellos una señal, creerían sin duda en ella. Di: «En verdad, las señales pertenecen solamente a Dios.» Pero ¿No os dais cuenta de que si les llegasen no creerían?\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@dcccxcix{Cambiaremos el estado de sus corazones y su visión de la misma forma que no creyeron en ella la primera vez y les dejaremos que, en su rebeldía, vaguen extraviados.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@cm{Aunque Nosotros hubiésemos hecho que descendieran sobre ellos los ángeles y que les hablasen los muertos y les hubiésemos mostrado todas las cosas, no habrían creído, excepto si Dios hubiese querido, pero la mayoría de ellos son ignorantes.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@cmi{Así es como dispusimos para cada profeta enemigos, demonios de entre los hombres y los genios, que se susurran unos a otros palabras encantadoras y engañosas. Y, si tu Señor hubiese querido, no lo habrían hecho, así que apártate de ellos y de lo que inventan,\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@cmii{para que se inclinen hacia ello los corazones de quienes no creen en la otra vida y para que se complazcan en ello y cometan los pecados que deseen cometer.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@cmiii{[Di:] «¿Buscaré a otro juez que no sea Dios, cuando es Él Quien ha hecho descender la Escritura que contiene la explicación de todas las cosas?» Aquellos a quienes Nosotros dimos la Escritura saben que ella fue revelada por tu Señor con la Verdad, por tanto, no seas de los que dudan.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@cmiv{La palabra de tu Señor es de una veracidad y justicia absolutas. Nada puede cambiar Sus palabras y Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@cmv{Si obedecieses a la mayoría de los que habitan la Tierra te extraviarían de la senda de Dios. Sólo siguen suposiciones, no hacen sino especular.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@cmvi{En verdad, tu Señor es Quien mejor conoce a quien se extravía de Su senda y es Quien mejor conoce a los bien guiados.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@cmvii{Comed de las cosas sobre las que fue pronunciado el nombre de Dios si es que creéis en Sus signos.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@cmviii{Ya no tenéis motivo para no comer de aquello sobre lo que ha sido mencionado el nombre de Dios, excepto si os vieseis obligados a ello, pues se os ha explicado claramente lo que os ha sido prohibido. Verdaderamente, muchos, siguiendo sus pasiones y su falta de conocimiento, extravían a otros. En verdad, tu Señor es Quien mejor conoce a los transgresores.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@cmix{Renunciad a vuestros pecados ocultos o manifiestos. En verdad, quienes cometen pecados serán recompensados conforme a lo que cometían.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@cmx{Y no comáis de aquello sobre lo que no ha sido mencionado el nombre de Dios. Eso sería un pecado. En verdad, los demonios susurran a sus amigos argumentos para que discutan con vosotros y, si les obedecieseis, seríais politeístas.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@cmxi{¿Acaso quien estaba muerto y Nosotros le dimos la vida y pusimos para él una luz con la que caminar entre la gente, es igual que quien está en las tinieblas, sin poder salir de ellas? Así es como hacemos que a los incrédulos les parezca bien lo que hacen.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@cmxii{Y así es como hemos puesto en cada ciudad a los mayores pecadores para que hagan sus planes. Pero sólo planean contra sí mismos, sin darse cuenta.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@cmxiii{Y cuando llega a ellos una señal, dicen: «No creeremos hasta que se nos dé algo como lo que les fue dado a los Mensajeros de Dios.» Pero Dios sabe mejor a quién otorga Su mensaje. Quienes pecaron sufrirán pronto la humillación ante Dios y un severo castigo por lo que planeaban.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@cmxiv{Dios ensancha el pecho de aquel a quien Él quiere guiar para que acepte el Islam, pero hace que el pecho de quien Él quiere extraviar se oprima y estreche como si ascendiera al cielo. Así es como Dios debilita a quienes no creen.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@cmxv{Este es el camino recto de tu Señor. Hemos explicado Nuestras señales para una gente que se deja amonestar.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@cmxvi{Para ellos será la Morada de la Paz junto a su Señor y Él será su protector y amigo por lo que hacían.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@cmxvii{Y el día en que Él les congregue a todos [les dirá]: «¡Oh, comunidad de genios! ¡Extraviasteis a muchos humanos!» Y sus amigos entre los humanos dirán: «¡Señor nuestro! ¡Nos hemos aprovechado unos de otros y se ha cumplido el plazo que Tú nos diste!» [Dios] Dirá: «El Fuego será vuestra morada. En él estaréis eternamente, excepto que Dios quiera otra cosa.» En verdad, tu Señor es Sabio, Conocedor.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@cmxviii{Así es como ponemos a unos opresores sobre otros, por lo que obtuvieron con sus actos.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@cmxix{«¡Oh, comunidad de genios y de humanos! ¿Acaso no os llegaron Mensajeros surgidos de entre vosotros que os comunicaron Mis versículos y os advirtieron de la llegada de este Día para vosotros?» Dirán: «¡Damos testimonio de ello contra nosotros mismos!» Les sedujo la vida de este mundo y darán testimonio contra ellos mismos de que ocultaron la Verdad y no creyeron en ella.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@cmxx{Esto es porque tu Señor nunca destruiría las ciudades injustamente, sin haber advertido a sus gentes.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@cmxxi{Todos tendrán el rango adecuado a lo que hayan hecho. Y tu Señor no está desatento a lo que hacen.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@cmxxii{Tu Señor es rico por Sí mismo, Dueño de la misericordia. Si quisiera os haría desaparecer y pondría en vuestro lugar a quien Él quisiera, de la misma manera que os hizo surgir a vosotros de los descendientes de otras gentes.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@cmxxiii{En verdad, aquello que se os ha prometido llegará y no podréis impedirlo.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@cmxxiv{Di: «¡Oh, pueblo mío! Obrad conforme a vuestra capacidad que yo también actuaré [conforme a mi obligación] y pronto sabréis quien tendrá un buen final. En verdad, los opresores no triunfarán.»\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@cmxxv{Y [los idólatras] disponen para Dios, de lo que Él ha creado, una parte de las cosechas y del ganado y dicen, conforme a sus creencias: «Esto es para Dios y esto es para nuestros socios.» Pero lo que es para sus socios no llega a Dios mientras que lo que es para Dios sí llega a sus socios. ¡Qué mal juzgan!\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@cmxxvi{Así es como sus socios han hecho que a la mayoría de los idólatras les parezca bien matar a sus propios hijos, para así destruirles y deformar sus creencias religiosas. Pero, si Dios hubiese querido, no lo habrían hecho. Así pues, apártate de ellos y de lo que ellos inventan.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@cmxxvii{Y dicen, conforme a sus creencias: «Este ganado y estas cosechas son sagrados y sólo podrán alimentarse de ellos quienes nosotros queramos.» Y [dicen:] «Hay ganado cuya espalda está prohibida». Y hay ganado sobre el que no mencionan el nombre de Dios, inventando mentiras sobre Él. Pronto Él les recompensará por las mentiras que inventaron.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@cmxxviii{Y dicen: «Lo que hay en las entrañas de este ganado está reservado para nuestros varones y prohibido para nuestras esposas, pero si estuviera muerto [al nacer] todos tienen parte en ello.» Él pronto les retribuirá por lo que atribuyen. En verdad, Él es sabio, conocedor.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@cmxxix{Habrán fracasado quienes maten a sus hijos estúpidamente y sin conocimiento y quienes prohíban lo que Dios les ha suministrado, inventando mentiras que atribuyen a Dios. Con certeza, se habrán extraviado y jamás encontrarán guía.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@cmxxx{Él es Quien ha producido jardines con árboles entrelazados y sin entrelazar, palmeras y cereales variados y comestibles, olivos y granados semejantes y diferentes. ¡Comed de su fruto cuando fructifiquen y el día de la cosecha entregad la parte que corresponda! Y no malgastéis. En verdad, Él no ama a los derrochadores.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@cmxxxi{Y Él es Quien ha producido algunas bestias grandes para la carga y otras pequeñas. ¡Comed de lo que Dios os ha proveído y no sigáis las huellas de Satanás! Ciertamente, él es para vosotros un enemigo evidente.\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@cmxxxii{[Él ha creado para vosotros] ocho pares [de reses]. Una pareja de ganado ovino y otra de caprino. Di: «¿Ha prohibido Él [comer] los dos machos o las dos hembras, o lo que llevan en sus senos las hembras? Informadme con conocimiento, si decís la verdad.»\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@cmxxxiii{Y una pareja de camélidos y otra de ganado bovino. Di: «¿Ha prohibido Él [comer] los dos machos o las dos hembras, o lo que llevan en sus senos las hembras? ¿O fuisteis testigos cuando Dios dispuso esto?» ¿Quién es más opresor que quien inventa mentiras sobre Dios, para extraviar a la gente, sin poseer conocimiento? En verdad, Dios no guía a la gente opresora.»\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@cmxxxiv{Di: «No encuentro en lo que me fue revelado que se prohíba a nadie comer ningún alimento, excepto carroña o sangre derramada o carne de cerdo, pues es, en verdad, impura; o aquello sobre lo que, con pecado, se haya pronunciado al sacrificarlo otro nombre distinto al de Dios. Pero quien se vea obligado y no lo haga por deseo o por rebeldía [no peca]. En verdad, tu Señor es perdonador, misericordiosísimo con los creyentes.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@cmxxxv{Y a los judíos les prohibimos todo lo que tiene la pezuña entera y del ganado bovino, ovino y caprino les prohibimos la grasa, excepto la que tengan en los lomos, la que rodea las vísceras o la que va unida a los huesos. Así les retribuimos por ser opresores y, ciertamente, Nosotros decimos la Verdad.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@cmxxxvi{Y si te desmienten, di: «Vuestro Señor es dueño de una amplia misericordia pero no apartará Su castigo de la gente pecadora.»\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@cmxxxvii{Los politeístas dirán: «Si Dios hubiera querido no habríamos sido idólatras ni tampoco nuestros antepasados, ni habríamos prohibido nada.» Así mismo mintieron los que vinieron antes de ellos, hasta que probaron Nuestro castigo. Di: «¿Os ha sido revelado algún conocimiento? Si es así, ¡Mostrádnoslo! No seguís más que especulaciones y no sois sino fabricantes de mentiras.»\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@cmxxxviii{Di: «A Dios pertenece el argumento definitivo y si Él hubiese querido os habría guiado a todos.»\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@cmxxxix{Di: «Traed a vuestros testigos, que den testimonio de que Dios a prohibido esto.» Y, si testifican, tú no testifiques con ellos, ni sigas los deseos de quienes deniegan Nuestras señales y de quienes no creen en la otra vida y equiparan a otros con su Señor.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@cmxl{Di: «Venid, yo os diré lo que vuestro Señor os ha prohibido: Que no consideréis Dios a nadie más que a Él y que seáis buenos con vuestros padres. Que no matéis a vuestros hijos por miedo a la pobreza, pues Nosotros os proveeremos a vosotros y a ellos. Que no os aproximéis a lo pecaminoso e indecente, sea manifiesto o privado y que no matéis a nadie que Dios haya prohibido matar, excepto con causa justificada. Esto es lo que Él ha dispuesto para vosotros. Quizás así razonéis.»\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@cmxli{«Y no os aproximéis a las propiedades de los huérfanos, excepto de la mejor manera posible, hasta que ellos lleguen a la edad adulta. Sed justos al dar la medida y el peso.» No obligamos a nadie más allá de su capacidad. «Cuando habléis sed verídicos, incluso aunque perjudique a un familiar. Cumplid con el pacto hecho con Dios. Esto es lo que Él ha dispuesto para vosotros. Quizás así os dejéis amonestar.»\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@cmxlii{Éste es mi camino recto. ¡Seguidlo, pues! Y no sigáis los caminos que os apartarían de Su camino. «Esto es lo que Él ha dispuesto para vosotros. Quizás así seáis temerosos.»\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@cmxliii{Luego, dimos a Moisés la Escritura [Sagrada], completando Nuestras bendiciones sobre él, por ser virtuoso, como una explicación detallada de todo y guía y misericordia, para que, así, crean en el encuentro con su Señor.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@cmxliv{Esta es una Escritura bendecida que Nosotros hemos hecho descender (para ti). ¡Seguidla, pues y sed temerosos, para que podáis recibir Su misericordia!\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@cmxlv{y para que no podáis decir: «En verdad, la Escritura fue hecha descender para dos comunidades anteriores a nosotros e ignorábamos sus enseñanzas.»\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@cmxlvi{O para que no podáis decir: «Si se hubiese hecho descender para nosotros la Escritura [Sagrada] habríamos seguido la guía mejor que ellos.» Así pues, ha venido a vosotros una prueba clara procedente de vuestro Señor y una guía y una misericordia. ¿Quién es más opresor que quien desmiente las señales de Dios y se aparta de ellas? Pronto retribuiremos a quienes se apartan de Nuestras señales con un terrible castigo por haberse apartado.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@cmxlvii{¿Acaso esperan algo diferente a que vengan a ellos los ángeles de la muerte o que venga a ellos tu Señor o que vengan algunas de las señales de tu Señor? El día en que vengan algunas señales de tu Señor, la fe no beneficiará a nadie que no haya creído anteriormente o que no haya obtenido algo bueno gracias a su fe. Di: «¡Esperad! ¡Nosotros también seremos de los que esperan!»\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@cmxlviii{En verdad, tú no tienes nada que ver con quienes se escindieron en su creencia y se dividieron en partidos diferentes. Su asunto incumbe solamente a Dios. Él les informará de lo que hacían.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@cmxlix{Quien traiga una buena acción recibirá diez veces más y quien traiga una mala acción sólo recibirá un castigo equivalente y no serán tratados injustamente.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@cml{Di: «En verdad, mi Señor me ha guiado a un camino recto, a una creencia auténtica, la creencia de Abraham, el buscador de la Verdad. No fue de los que adoran otros dioses junto a Dios.»\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@cmli{Di: «En verdad, mi oración y toda mi adoración, mi vida y mi muerte, pertenecen a Dios, Señor del Universo.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@cmlii{Él no tiene socio. Se me ha ordenado estoy soy el primero de los que se someten.»\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@cmliii{Di: «¿Buscaré a otro señor que no sea Dios, cuando Él es el Señor de todas las cosas?» Ningún alma hace nada malo sino contra ella misma y nadie cargará con la carga de otro. Luego, regresaréis hacia vuestro Señor y Él os informará de aquello sobre lo que solíais tener diferencias.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@cmliv{Él es Quien ha hecho de vosotros Sus representantes en la Tierra y ha elevado la dignidad de unos sobre otros, para poneros a prueba en lo que os ha dado. En verdad, tu Señor es rápido en el castigo, pero también es perdonador, misericordiosísimo con los creyentes.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@cmlv{\basmalahes Alif, lam, mim, sad.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@cmlvi{Esta es la Escritura que se hizo descender a ti para que amonestes con ella y sea un recuerdo para los creyentes. Por tanto, que no haya preocupación en tu pecho por causa de ella.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@cmlvii{¡Seguid, pues o que se hizo descender para vosotros procedente de vuestro Señor y no sigáis, aparte de Él, a ningún otro amigo y protector! ¡Qué poco recapacitáis!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@cmlviii{¡Cuántas ciudades hemos destruido! ¡Nuestro castigo llegó a ellas en la noche o mientras dormían la siesta!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@cmlix{Y cuando les llegó Nuestro castigo su súplica fue solamente decir: «En verdad, fuimos opresores.»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@cmlx{Sin duda, interrogaremos a quienes les fueron enviados profetas y, sin duda, interrogaremos a los profetas mismos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@cmlxi{Luego, ciertamente, les explicaremos, con conocimiento, lo que hacían, pues no estábamos ausentes.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@cmlxii{Ese día, la balanza será la Verdad. Aquellos cuyos actos hayan sido de peso serán los triunfadores\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@cmlxiii{y, aquellos cuyos actos hayan sido ligeros serán quienes se habrán perdido a sí mismos por haber sido injustos con Nuestras señales.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@cmlxiv{Ciertamente, os dimos poder en la Tierra y pusimos en ella medios de vida para vosotros. ¡Qué poco agradecidos sois!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@cmlxv{Ciertamente, os hemos creado, luego os hemos dado forma [física], luego dijimos a los ángeles: «¡Postraos ante Adán!» Y todos ellos se postraron excepto Iblís, que no fue de los que se postraron.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@cmlxvi{Dijo (Dios): «¿Qué te impidió postrarte cuando te lo ordené?» Dijo (Iblís): «Yo soy mejor que él. Me has creado de fuego y a él le has creado de barro.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@cmlxvii{Dijo (Dios): «¡Desciende de ella! En ella no se puede uno llenar de soberbia, por lo tanto ¡Sal! ¡Eres de los seres de poca categoría espiritual!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@cmlxviii{Dijo (Iblís): «Otórgame de plazo hasta el día en que ellos sean resucitados.»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@cmlxix{Dijo (Dios): «¡En verdad, tendrás tu plazo de espera!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@cmlxx{Dijo (Iblís): «Por haberme Tú extraviado, yo les induciré a apartarse de Tu camino recto.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@cmlxxi{Llegaré a ellos por delante y por detrás, por su derecha y por su izquierda y encontrarás que la mayoría de ellos no son agradecidos.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@cmlxxii{Dijo (Dios): «¡Sal de aquí, deshonrado, desterrado! ¡Con quien te siga de ellos (y contigo), con todos vosotros, llenaré el Infierno!»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@cmlxxiii{Y «¡Oh, Adán! Tú y tu pareja vivid en el Jardín y comed de lo que queráis, pero no os acerquéis a este árbol, pues seríais de los opresores.»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@cmlxxiv{Entonces, Satanás les susurró a ambos para mostrarles su desnudez ignorada, diciéndoles: «Vuestro Señor os ha prohibido este árbol para que no lleguéis a ser ángeles o para que no viváis eternamente.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@cmlxxv{Y les juró a ambos: «En verdad, soy para vosotros dos un buen consejero.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@cmlxxvi{Con mentiras les hizo caer y cuando probaron del árbol se les evidenció a ambos su desnudez y comenzaron a cubrirse mutuamente con hojas del Jardín. Pero su Señor les llamó: «¿No os prohibí ese árbol y os dije que Satanás era para vosotros un enemigo declarado?»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@cmlxxvii{Ambos dijeron: «¡Señor nuestro! Hemos oprimido a nuestra propia alma y si Tú no nos perdonas y tienes clemencia de nosotros, seremos sin duda de los perdedores.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@cmlxxviii{Dijo (Dios): «¡Descended! Seréis enemigos los unos de los otros. La Tierra será durante un tiempo vuestro lugar de estancia y de sustento.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@cmlxxix{Dijo: «En ella viviréis y en ella moriréis y de ella seréis sacados.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@cmlxxx{¡Oh, hijos de Adán! Ciertamente, hemos creado para vosotros vestidos con los que cubrir vuestra desnudez y como adorno, pero la mejor vestidura es el temor de Dios. Esta es una de las señales de Dios. Quizás así sean agradecidos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@cmlxxxi{¡Oh, hijos de Adán! ¡No permitáis que Satanás os engañe, igual que hizo salir a vuestros padres del Paraíso, despojándoles de sus vestiduras para que ambos vieran su propia desnudez! En verdad, él y los suyos os ven desde donde vosotros no les veis. En verdad, Nosotros pusimos a los demonios como tutores de aquellos que no tienen fe.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@cmlxxxii{Y cuando cometen una indecencia, dicen: «Nuestros antepasados hacían lo mismo. Dios nos ordenó hacerlo» Di: «¡Dios jamás ordena cometer indecencias! ¿Atribuís a Dios lo que no sabéis?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@cmlxxxiii{Di: «Mi Señor ha ordenado la justicia y la equidad. Poned toda la atención de vuestro corazón en Él en todos vuestros actos de adoración e invocadle y que vuestra creencia sincera sea para Él.» Y sabed que, igual que Él os creó la primera vez, regresaréis.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@cmlxxxiv{Un grupo al que Él ha guiado y otro grupo que merecían el extravío. En verdad, ellos tomaron a los demonios como protectores, en lugar de a Dios, y creen que así están bien guiados.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@cmlxxxv{¡Oh, hijos de Adán! Poneos vuestros adornos cada vez que recéis, y comed y bebed, pero sin excesos, pues a Él no le agradan quienes se extralimitan.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@cmlxxxvi{Di: «¿Quién prohíbe los adornos y los buenos alimentos que Dios ha creado para Sus criaturas?» Di: «Esto es para quienes creen, mientras dure su vida en este mundo, pero será solamente para ellos el Día del Levantamiento.» Así es como Nosotros explicamos nuestras indicaciones para la gente que tiene conocimiento y entendimiento.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@cmlxxxvii{Di: «En verdad, mi Señor solamente ha prohibido la indecencia y los malos comportamientos públicos o privados, el pecado, la agresión sin derecho, que adoréis como si fuera Dios aquello a lo que Él no ha concedido ninguna autoridad y poder y que atribuyáis a Dios lo que no sabéis.»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@cmlxxxviii{Toda comunidad tiene un plazo de vida y cuando venza su plazo no podrán retrasarlo ni una hora ni tampoco adelantarlo.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@cmlxxxix{¡Oh, hijos de Adán! Si, de entre vosotros mismos, os llegan profetas que os comunican Mis indicaciones, quienes tengan temor de Dios y corrijan sus malos actos no tendrán que temer y no estarán tristes.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@cmxc{Pero aquellos que desmientan Nuestras indicaciones y se muestren altivos ante ellas serán la gente del Fuego en el cual estarán eternamente.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@cmxci{¿Quién, pues, es más opresor que quien inventa mentiras sobre Dios o desmiente Sus indicaciones? Esos recibirán la parte que les fue decretada, hasta que lleguen a ellos Nuestros enviados, tomen sus almas y les digan: “¿Dónde están aquellos a quienes invocabais en lugar de Dios?” Dirán: «Se apartaron de nosotros» y testificarán contra ellos mismos que ocultaban la Verdad.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@cmxcii{Dirá (Dios): «Entrad en el Fuego, con las comunidades de genios y humanos semejantes a vosotros que os precedieron.» Cada vez que una comunidad entre maldecirá a su hermana. Hasta que, cuando todas ellas se encuentren reunidas en él, la última de ellas diga de la primera: «¡Señor nuestro! ¡Ellos fueron quienes nos extraviaron! ¡Dales, pues, doble castigo del Fuego!» Dirá (Dios): «Será el doble para cada una, pero no lo sabéis.»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@cmxciii{Y el primero de ellos dirá al último: «No nos aventajáis en nada, así que gustad el castigo por lo que habéis hecho.»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@cmxciv{En verdad, no se abrirán las puertas del Cielo para quienes niegan Nuestros signos o se llenan de soberbia ante ellos y no entrarán en el Jardín mientras no pase el camello por el ojo de la aguja. Así es como recompensamos a quienes hacen el mal.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@cmxcv{Tendrán el Infierno por lecho y sobre ellos cobertores de fuego. Así es como recompensamos a los opresores.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@cmxcvi{Pero quienes crean y obren rectamente -Nosotros no exigimos a nadie más allá de sus posibilidades- serán la gente del Jardín, en el cual estarán eternamente.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@cmxcvii{Extraeremos de sus pechos lo que quede de rencor o envidia y los arroyos fluirán a sus pies. Y dirán: «Alabado sea Dios, Quien nos guió a esto. Nunca habríamos encontrado la dirección si Dios no nos hubiese guiado. Ciertamente, los profetas de nuestro Señor, vinieron con la Verdad.» Se les convocará diciendo: «Este es el Jardín que se os ha dado en herencia por lo que habéis hecho.»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@cmxcviii{Las gentes del Jardín dirán a las gentes del Fuego: «En verdad, encontramos que aquello que nuestro Señor nos prometió era cierto. ¿Era también cierto lo que os prometió vuestro Señor?» Dirán: «Sí.» Entonces un pregonero anunciará: «¡Que la maldición de Dios sea con los opresores!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@cmxcix{¡Aquellos que intentan apartar a la gente del camino de Dios, tratando de complicarlo y mostrarlo tortuoso y que no creen en la otra vida!»\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@m{Y entre ambos habrá una barrera y en los lugares elevados habrá hombres que reconocerán a cada uno de ellos por sus señales y que se dirigirán a las gentes del Jardín diciendo: «La paz sea con vosotros», pero no entrarán en él aunque desean ardientemente hacerlo.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mi{Y, cuando vuelvan su vista hacia las gentes del Fuego, dirán: «¡Señor nuestro! ¡No nos pongas con la gente opresora!»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mii{Y los hombres de los lugares elevados se dirigirán a algunas personas a las que reconocerán por sus señales, diciéndoles: «De nada os ha servido cuanto amasasteis y lo soberbios que erais.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@miii{«¿Son éstos aquéllos de quienes jurabais que Dios no tendría misericordia de ellos?» «¡Entrad en el Jardín! ¡No tendréis por qué temer y no estaréis tristes!»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@miv{Y las gentes del Fuego se dirigirán a las gentes del Jardín diciendo: «¡Facilitadnos algo de agua o algo de lo que os proveyó vuestro Señor!» Ellos dirán: «En verdad, Dios ha prohibido ambas cosas para los que no creen.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mv{Aquellos que no dieron importancia a sus creencias y jugaron con ellas, atrapados por la vida mundanal.» Hoy Nosotros nos olvidaremos de ellos, de la misma manera que ellos se olvidaron de la cita que tenían para este Día y negaron Nuestras señales.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mvi{Ciertamente, trajimos para ellos una Escritura, que explicamos con conocimiento, como guía y misericordia para una gente que cree.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mvii{¿Acaso esperan otra cosa que la aclaración de la realidad a la que aluden sus versículos? El día en que se explique la realidad a la que alude la Escritura, quienes anteriormente la habían olvidado dirán: «Ciertamente, los Mensajeros de nuestro Señor vinieron con la Verdad. ¿Habrá alguien que interceda por nosotros o que nos haga regresar para que podamos actuar de manera diferente a como hemos actuado?» En verdad, habrán echado a perder sus almas y se habrá alejado de ellos aquello que inventaban.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mviii{En verdad, vuestro Señor es Dios, Quien creó los cielos y la Tierra en seis días y después se instaló en el Trono. Hace que la noche cubra al día, al cual sigue con premura. Y (creó) el Sol, la Luna y las estrellas, todos ellos obedientes a Su orden. ¿Acaso no pertenecen a Él la Creación y el imperativo creador? ¡Bendito sea Dios, Señor del Universo!\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mix{Suplicad a vuestro Señor con humildad y en secreto. En verdad, Él no ama a los transgresores.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mx{Y no corrompáis en la Tierra después de haber sido restablecidos los valores morales y espirituales, e imploradle con temor y esperanza. En verdad, la misericordia de Dios está cerca de quienes hacen el bien.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mxi{Él es Quien envía los vientos como nuncios de Su misericordia. Cuando transportan nubes cargadas de lluvia Nosotros los dirigimos hacia una tierra muerta y hacemos que el agua descienda a ella, haciendo así que surjan toda clase de frutos. De la misma manera haremos salir a los muertos. Quizá así os dejéis amonestar.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mxii{La buena tierra da su vegetación con el permiso de su Señor y la que es mala da pero con escasez. Así es como Nosotros explicamos los signos a una gente que es agradecida.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mxiii{Ciertamente, enviamos a Noé a su pueblo y dijo: «¡Oh, pueblo mío! ¡Adorad a Dios! No tenéis más dios que Él. En verdad, temo para vosotros el castigo de un día impresionante.»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mxiv{Los notables de su pueblo dijeron: «En verdad, te vemos en un extravío evidente.»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mxv{Él dijo: «¡Oh, pueblo mío! No estoy extraviado. Soy un Mensajero del Señor del Universo\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mxvi{para transmitiros los mensajes de mi Señor y aconsejaros, pues sé por mi Señor lo que vosotros no sabéis.»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mxvii{«¿Acaso os sorprende que vuestro Señor os haga llegar una llamada al recuerdo por medio de un hombre de los vuestros, para amonestaros y para que seáis temerosos y así, quizás, se tenga misericordia de vosotros?»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mxviii{Pero le desmintieron y Nosotros le salvamos, a él y a los que con él estaban, en el Arca y ahogamos a quienes desmentían Nuestras señales. En verdad, eran un pueblo ciego.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mxix{Y a los Aditas (enviamos) a su hermano Hud. Dijo: «¡Oh, pueblo mío! ¡Adorad a Dios! ¡No tenéis más dios que Él! ¿Es que no seréis temerosos?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mxx{Los notables de su pueblo que no eran creyentes dijeron: «Ciertamente, vemos que eres un insensato y creemos que eres un mentiroso.»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mxxi{Dijo: «¡Oh, pueblo mío! ¡No soy un insensato, sino un Mensajero del Señor del Universo!\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mxxii{para transmitiros los mensajes de mi Señor. Soy para vosotros un consejero leal.»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mxxiii{«¿Acaso os sorprende que vuestro Señor os haga llegar una llamada al recuerdo por medio de un hombre de los vuestros, para amonestaros? Recordad cuando os nombró sucesores, tras el pueblo de Noé y os dio una gran corpulencia.» «Recordad, pues, las bendiciones de Dios, para que, así, tengáis éxito.»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mxxiv{Ellos dijeron: «¿Has venido a nosotros para que adoremos solamente a Dios y abandonemos lo que nuestros padres adoraban? ¡Haz, entonces, que venga a nosotros el castigo que nos has prometido, si eres de los que dicen la verdad!»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mxxv{Él dijo: «Ciertamente, llegará a vosotros el castigo y la ira de vuestro Señor. ¿Discutís conmigo sobre nombres con los que vosotros y vuestros antepasados les habéis denominado? Dios no les ha enviado poder alguno. ¡Esperad! ¡Yo también esperaré con vosotros!»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mxxvi{Entonces, por Nuestra misericordia, les salvamos, a él y a los que con él estaban, y cortamos las raíces de quienes desmentían Nuestras señales y no eran creyentes.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mxxvii{Y (enviamos) a los Tamudeos a su hermano Saleh. Él dijo: «¡Oh, pueblo mío! ¡Adorad a Dios! No tenéis más dios que Él. Sin duda, ha llegado a vosotros una prueba clara de vuestro Señor. Está camella de Dios es una señal para vosotros. Permitidla que paste en la tierra de Dios y no le causéis mal alguno, pues sufriríais un castigo doloroso.»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mxxviii{«Y recordad cuando os nombró sucesores tras el pueblo de Ad, y os dio poder en la Tierra. Construisteis fortalezas en sus llanuras y excavasteis casas en las montañas.» «Recordad, pues, las bendiciones de Dios y no actuéis en la Tierra como corruptores.»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mxxix{Los notables de su pueblo, que eran arrogantes, dijeron a los que habían tratado de debilitar, a los que entre ellos habían tenido fe: «¿Cómo sabéis que Saleh es un Mensajero de su Señor?» Ellos dijeron: «En verdad, creemos en aquello con lo que fue enviado.»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mxxx{Los arrogantes dijeron: «Nosotros no creemos en absoluto en aquello en lo que vosotros habéis creído.»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mxxxi{Así que desjarretaron a la camella, desafiando la orden de su Señor y dijeron: «¡Eh, Saleh! ¡Ven a nosotros con el castigo que nos prometiste, si eres un profeta!»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mxxxii{Entonces, el terremoto les sorprendió y amanecieron muertos en sus casas.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mxxxiii{Así que, (Saleh) se alejó de ellos, diciendo: «¡Oh, pueblo mío! ¡En verdad, yo os transmití el mensaje de mi Señor y os aconsejé buenamente, pero vosotros no queríais buenos consejeros!»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mxxxiv{Y (recuerda a) Lot cuando dijo a su pueblo: «¿Cometeréis una indecencia que nadie en el Universo ha cometido antes?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mxxxv{En verdad, vais con deseo a los hombres en lugar de a las mujeres. Sois, verdaderamente, gente inmoderada.»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mxxxvi{Y la respuesta de su pueblo no fue otra que decir: «¡Expulsadles de vuestra ciudad! ¡Son unos puritanos!»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mxxxvii{Pero Nosotros les salvamos, a él y a su gente, excepto a su esposa, que fue de los que se quedaron atrás,\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mxxxviii{e hicimos que lloviera sobre ellos. Observa cuál fue el final de los malhechores.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mxxxix{Y (enviamos) a los Madianitas a su hermano Shuaib. Dijo: «¡Oh, pueblo mío! ¡Adorad a Dios! No tenéis más dios que Él. Ciertamente, ha venido a vosotros una prueba clara de vuestro Señor. Dad, pues, la medida y el peso (correctos) y no estaféis a la gente en sus cosas y no corrompáis en la Tierra después de que ha sido reformada. Eso será en beneficio vuestro, si sois creyentes.»\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mxl{«Y no acechéis a las gentes en cada camino para intimidarlas, ni pongáis obstáculos tratando de hacerlo complicado y tortuoso, para que la gente pueda seguir el camino de Dios si cree en Él.» «Recordad cuando erais pocos y Él aumentó vuestro número y observad cuál fue el final de los corruptores.»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mxli{«Y si un grupo de vosotros creyese en aquello con lo que he sido enviado y otro grupo no creyese, sed pacientes hasta que Dios juzgue entre nosotros, pues Él es el mejor de los jueces.»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mxlii{Los notables de su pueblo, que eran arrogantes, dijeron: «Shuaib, os expulsaremos de nuestra ciudad, a ti y a los que creen contigo, si no regresáis a nuestras creencias.» (Shuaib) dijo: «¿Aunque eso nos repugne?»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mxliii{«Inventaríamos una mentira sobre Dios si regresásemos a vuestras creencias después de habernos Dios salvado de ellas. No nos es posible regresar a ellas a menos que Dios, nuestro Señor, lo quiera. El conocimiento de nuestro Señor abarca todas las cosas. Hemos depositado nuestra confianza en Dios.» «¡Oh, Señor! ¡Juzga con justicia entre nosotros y nuestro pueblo! ¡Tú eres el mejor de los jueces!»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mxliv{Los notables de su pueblo que no eran creyentes dijeron: «En verdad, si seguís a Shuaib seréis de los perdedores.»\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mxlv{Pero les sorprendió el terremoto y amanecieron muertos en sus casas.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mxlvi{Fue como si quienes desmintieron a Shuaib no hubiesen habitado jamás en ellas. Quienes desmintieron a Shuaib fueron los perdedores.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mxlvii{Así que, se alejó de ellos diciendo: «¡Oh, pueblo mío! ¡En verdad, yo os transmití los mensajes de mi Señor y os aconsejé buenamente, así pues ¿Cómo sentir pena por gente que oculta la Verdad?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mxlviii{No hemos enviado a ciudad alguna un profeta sin hacer que su gente padeciese dificultades y males, para que, quizá así, fuesen humildes.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mxlix{Luego transformamos el mal en bien, hasta que de nuevo se excedieron y dijeron: «También nuestros padres soportaron perjuicios y dificultades.» Entonces, les tomamos por sorpresa en su estado de inconsciencia.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@ml{Si las gentes de las ciudades hubiesen creído y sido temerosos, les habríamos otorgado las bendiciones de los cielos y la Tierra, pero negaron la Verdad y les castigamos por lo que habían cometido.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mli{¿Acaso las gentes de las ciudades están seguras de que no les llegará Nuestro castigo en la noche mientras duermen?\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mlii{¿O están seguros de que no les llegará Nuestro castigo de mañana, mientras están jugando?\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mliii{¿Están seguros frente a los planes de Dios? Sólo la gente perdida se siente a salvo de los planes de Dios.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mliv{¿Acaso, a quienes heredaron la Tierra después de sus antepasados, no les sirve de guía saber que si Nosotros quisiéramos también les castigaríamos a ellos por sus pecados y sellaríamos sus corazones para que no pudiesen oír?\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mlv{Estas son ciudades de las que te hemos contado algunas cosas. Sus Mensajeros les trajeron pruebas evidentes pero ellos no estuvieron dispuestos a creer en lo que antes habían considerado falso. Así es como sella Dios el corazón de los que no creen.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mlvi{Y no encontramos en la mayoría de ellos lealtad a los compromisos contraídos. Lo que encontramos fue que la mayoría de ellos eran transgresores.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mlvii{Tras ellos, enviamos a Moisés con Nuestras señales al Faraón y a sus cortesanos, pero no las hicieron justicia. Mira, pues, cuál fue el fin de los corruptores.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mlviii{Y dijo Moisés: «¡Oh, Faraón! ¡Ciertamente, soy un Mensajero del Señor del Universo!»\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mlix{«Lo correcto es que no diga sobre Dios sino la verdad. He venido a vosotros con una prueba clara de vuestro Señor. Deja, por tanto, ir conmigo a los hijos de Israel.»\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mlx{Dijo (Faraón): «Si has venido con una señal ¡Muéstrala! si eres de los que dicen la verdad.»\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mlxi{Entonces, arrojó su vara y ésta se transformó en una serpiente verdadera.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mlxii{Y descubrió su mano y ésta apareció blanca ante los que miraban.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mlxiii{Los principales de la gente del Faraón dijeron: «Verdaderamente, éste es un mago experto.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mlxiv{Lo que quieren es echaros de vuestra tierra, por tanto ¿Qué opináis?»\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mlxv{Dijeron: «Hazles regresar a él y a su hermano y envía a las ciudades encargados\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mlxvi{que te traigan a todos los magos expertos.»\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mlxvii{Y llegaron los magos ante el Faraón y dijeron: «Queremos una recompensa si somos los vencedores.»\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mlxviii{Dijo (Faraón): «Sí. Además, seréis de los próximos a mí.»\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mlxix{Dijeron (los magos): «¡Oh, Moisés! ¿Lanzas tú o lanzamos nosotros?»\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mlxx{Dijo: «¡Lanzad!» Y, cuando lanzaron, hechizaron los ojos de la gente, asustándoles y creando una magia impresionante.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mlxxi{Nosotros inspiramos a Moisés: «¡Lanza tu vara!». Y ésta capturó sus falsos trucos.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mlxxii{La verdad prevaleció y anuló lo que ellos habían hecho.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mlxxiii{Así fueron vencidos y quedaron humillados.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mlxxiv{Y los magos cayeron postrados.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mlxxv{Dijeron: «¡Creemos en el Señor del Universo!\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mlxxvi{¡El Señor de Moisés y de Aarón!»\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mlxxvii{Dijo Faraón: «¿Creéis en Él antes de que yo os dé mi permiso? Esto es un plan que habéis tramado en la ciudad para echar de ella a sus habitantes. ¡Vais a saber!\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mlxxviii{¡Os cortaré las manos y los pies opuestos y luego os crucificaré a todos!»\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mlxxix{Dijeron: «¡En verdad, regresaremos a nuestro Señor!\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mlxxx{Solamente te vengas de nosotros por haber creído en las señales de nuestro Señor cuando llegaron a nosotros. ¡Señor nuestro! ¡Danos paciencia y haznos morir sometidos a Ti!»\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mlxxxi{Los principales de la gente del Faraón dijeron: «¿Dejarás que Moisés y su gente corrompan el país y os abandonen a ti y a tus dioses?» Dijo: «Mataremos a sus hijos y dejaremos con vida a sus mujeres, pues, ciertamente, les tenemos dominados.»\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mlxxxii{Moisés dijo a su pueblo: «¡Invocad la ayuda de Dios y sed pacientes! ¡Ciertamente, la Tierra pertenece a Dios y Él la da en herencia a quien quiere de Sus siervos! ¡El triunfo final es de los temerosos de Dios!»\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mlxxxiii{Dijeron: «Fuimos perseguidos antes de que vinieses a nosotros y después de haber llegado.» Dijo: «Puede que vuestro Señor destruya a vuestros enemigos y haga que les sucedáis en la Tierra y vea cómo actuáis entonces.»\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mlxxxiv{Y, ciertamente, Nosotros castigamos a la gente del Faraón con los años de sequía y escasez de frutos, para que, así, se dejasen amonestar.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mlxxxv{Pero cuando les llegaba algo bueno decían: «Esto nos corresponde.» Y cuando les aquejaba un mal lo atribuían al mal agüero de Moisés y de los que estaban con él. ¿Acaso su suerte no dependía de Dios? Pero la mayoría de ellos no sabían\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mlxxxvi{y dijeron: «Sea cual sea la señal que nos traigas para hacernos magia con ella, no te creeremos.»\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mlxxxvii{Enviamos contra ellos huracanes, langostas, piojos, ranas y sangre. Señales sucesivas. Pero se llenaron de soberbia y fueron un pueblo de pecadores.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mlxxxviii{Cuando caía sobre ellos una plaga, decían: «¡Oh, Moisés! ¡Ruega por nosotros a tu Señor en virtud de la alianza que tiene contigo! ¡Si apartas de nosotros este mal creeremos en ti y dejaremos que los Hijos de Israel se vayan contigo!»\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mlxxxix{Pero cuando apartábamos de ellos el mal al cumplirse el plazo anunciado, rompían su promesa.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mxc{Nos vengamos de ellos y les ahogamos en el mar por haber desmentido Nuestras señales y no haber hecho caso de ellas.\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@mxci{Y dimos en herencia, al pueblo que había estado sometido, los Orientes y los Occidentes de la tierra que Nosotros habíamos bendecido. Y se cumplió la buena palabra de tu Señor a los Hijos de Israel, por haber sido pacientes y destruimos lo que Faraón y su pueblo habían construido y lo que habían erigido.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@mxcii{E hicimos que los Hijos de Israel cruzasen el mar y llegasen junto a una gente que rendía pleitesía a unos ídolos que poseían. Dijeron: «¡Oh, Moisés! ¡Tráenos un dios semejante a los dioses que ellos tienen!» Dijo (Moisés): «¡En verdad, sois un pueblo ignorante!\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@mxciii{Aquello de lo que se ocupan está llamado a perecer y sus obras no les servirán de nada.»\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@mxciv{Dijo (Moisés): «¿Voy a buscar otro dios diferente de Dios, cuando Él os ha favorecido más que a nadie en el Universo?»\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@mxcv{Y (recordad) cuando os salvamos de la gente del Faraón que os infligía un duro castigo. Mataban a vuestros hijos varones y dejaban con vida a vuestras mujeres. Con ello os sometió vuestro Señor a una dura prueba.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@mxcvi{Nosotros tuvimos un encuentro con Moisés durante treinta noches, que completamos con otras diez. Siendo, por tanto, de cuarenta noches la cita con su Señor. Y Moisés dijo a su hermano Aarón: «Represéntame ante mi pueblo, pon orden y no sigas la senda de los corruptores.»\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@mxcvii{Y cuando Moisés vino a Nuestra cita y su Señor le hubo hablado, dijo: «¡Señor mío! ¡Muéstrate a mí para que yo pueda verte!» Dijo Él: «¡Jamás me verás! Pero mira la montaña y si ésta permanece firme en su sitio Me verás.» Y cuando su Señor se manifestó a la montaña la desmoronó y Moisés cayó desvanecido. Al volver en sí, dijo: «¡Glorificado seas! ¡Me vuelvo a Ti arrepentido y soy el primero de los creyentes!»\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@mxcviii{Él dijo: «¡Oh, Moisés! ¡Te he elegido entre toda la gente para entregarte Mi mensaje y hablar contigo! ¡Toma, pues, lo que te he dado y sé de los agradecidos!»\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@mxcix{Y escribimos para él en las Tablas consejos y advertencias de todo y explicaciones detalladas sobre todas las cosas. «¡Tómalas, pues, con fuerza y ordena a tu pueblo que tome lo bueno que hay en ellas! Yo pronto os mostraré la morada de los transgresores.»\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@mc{«Apartaré de (la fe en) Mis señales a quienes se llenan de soberbia en la Tierra sin ningún derecho y aunque vean todas las señales no creerán en ellas y aunque vean el camino de la dirección correcta no lo elegirán como su camino y si ven el camino equivocado lo adoptarán como su camino. Eso, por haber desmentido Nuestras señales y haberse desentendido de ellas.»\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@mci{Aquellos que desmintieron Nuestras señales y el encuentro de la otra vida habrán invalidados sus obras. ¿Acaso recibirán otra recompensa que la que corresponde a lo que hicieron?\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@mcii{El pueblo de Moisés, en su ausencia, modeló con sus joyas el cuerpo de un becerro que mugía. ¿Es que no veían que no les hablaba ni les guiaba a ningún camino? Lo tomaron (como objeto de su adoración) y obraron injustamente.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@mciii{Y, cuando la Verdad se les hizo evidente y vieron que se habían extraviado, dijeron: «Si nuestro Señor no tiene misericordia de nosotros y no nos perdona seremos de los perdedores.»\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@mciv{Y cuando Moisés regresó junto a su pueblo, enfadado y entristecido, dijo: «¡Qué mal me habéis representado en mi ausencia! ¿Queréis adelantar el juicio de vuestro Señor?» Arrojó las Tablas y cogió a su hermano de la cabeza, atrayéndole hacia sí. (Aarón) dijo: «¡Hijo de mi madre! ¡El pueblo me ha hecho de menos y casi me mata! ¡Que los enemigos, pues, no se alegren de mi desgracia y no me sitúes entre la gente opresora!»\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@mcv{Dijo (Moisés): «Señor, perdóname y perdona a mi hermano y haznos entrar en Tu misericordia, pues Tú eres el más misericordioso de los misericordiosos.»\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@mcvi{En verdad, a quienes tomaron al becerro pronto les alcanzará el enfado de su Señor y sufrirán la humillación en esta vida. De esa manera recompensamos a los que inventan (mentiras).\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@mcvii{Y aquellos que obran mal y luego se arrepienten y creen…, en verdad, tu Señor, tras ello, es perdonador, misericordiosísimo con los creyentes.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@mcviii{Y cuando a Moisés se le pasó el enfado tomó las Tablas. En sus escritos hay guía y misericordia para quienes sontemerosos de su Señor.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@mcix{Y eligió Moisés a setenta hombres de su pueblo para que se encontraran con Nosotros. Y cuando les alcanzó el terremoto, dijo: «Señor, si hubieras querido, ya antes los habrías aniquilado a ellos y a mí. ¿Vas a aniquilarnos por lo que han hecho los necios de entre nosotros? Esto no es más que una prueba Tuya con la que extravías a quien Tú quieres y guías a quien Tú quieres. Tú eres nuestro amigo y protector ¡Perdónanos, pues, y ten misericordia de nosotros! ¡Tú eres el mejor de los perdonadores!»\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@mcx{«Y dispón para nosotros lo bueno en esta vida y en la otra. Ciertamente, nos hemos vuelto a Ti.» Dijo Él: «Inflijo Mi castigo a quien Yo quiero, pero Mi misericordia alcanza a todas las cosas y la dispondré para quienes sean temerosos y den la limosna obligatoria que purifica sus bienes y para quienes crean en Mis señales.»\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@mcxi{Aquellos que sigan al Mensajero, el profeta iletrado al que encuentran descrito en la Torá y el Evangelio que tienen con ellos, el cual les ordena lo que está bien y les prohíbe lo que está mal y hace lícitas para ellos las cosas buenas e ilícitas para ellos las cosas malas y que les libera de las cargas que les abrumaban y de las cadenas que les oprimían. Así pues, quienes crean en él, le honren y le auxilien y sigan la luz que se hizo descender con él, serán los triunfadores.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@mcxii{Di: «¡Oh, gentes! Soy, en verdad, el Mensajero de Dios para todos vosotros. De Aquél a Quien pertenecen los cielos y la Tierra. No hay otro dios más que Él. Da la vida y da la muerte.» Así pues, creed en Dios y en Su Mensajero, el profeta iletrado, que cree en Dios y en Sus palabras. Seguidle para que así seáis bien guiados.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@mcxiii{Y, de la comunidad de Moisés, hay un grupo que guía (a la gente) con la Verdad y con ella hace justicia.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@mcxiv{Y les dividimos en doce comunidades tribales. Y cuando su pueblo le pidió agua, revelamos a Moisés: «Golpea con tu bastón la roca.» Y brotaron de ella doce fuentes. Cada uno supo de cuál debía beber. Y les dimos sombra con las nubes e hicimos descender para ellos el maná y las codornices. «¡Comed de los buenos alimentos con que os proveemos!» Y no nos oprimieron a Nosotros, sino que se oprimieron a sí mismos.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@mcxv{Y (recuerda) cuando se les dijo: «Estableceos en esta ciudad y comed cuanto deseéis de lo que hay en ella. Y decid: «Alivia» (la carga de nuestros pecados) y entrad por la puerta en prosternación y os perdonaremos vuestros errores e incrementaremos la recompensa de los que hagan el bien.»\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@mcxvi{Pero los opresores de entre ellos cambiaron la palabra por otra diferente de la que se les había dicho y les enviamos un mal del cielo por haber sido transgresores.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@mcxvii{Y pregúntales por la ciudad que estaba situada junto al mar, cuando violaron el sábado, al ser el sábado cuando venía a ellos la pesca, que se veía desde la orilla, y no venir a ellos otros días. Así les pusimos a prueba por haber sido transgresores.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@mcxviii{Y (recuerda) cuando un grupo de ellos dijo (a otro): «¿Para qué amonestar a una gente a la que Dios va a aniquilar o a castigar con un duro castigo?» Dijeron (estos otros): «Es para tener una disculpa ante vuestro Señor y porque quizás así sean temerosos de Dios.»\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@mcxix{Y cuando olvidaron lo que se les había recordado, salvamos a quienes condenaron el mal y castigamos duramente a quienes fueron opresores, por haber transgredido.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@mcxx{Y cuando desafiaron lo que se les había prohibido, les dijimos: «Sed monos despreciables.»\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@mcxxi{Y (recuerda) cuando tu Señor proclamó que, sin duda, enviaría contra ellos, hasta el Día del Levantamiento, a quienes les infligiesen un terrible castigo. En verdad, tu Señor es rápido en la retribución, pero, ciertamente, es perdonador, misericordiosísimo con los creyentes.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@mcxxii{Y les separamos por la Tierra en comunidades. Algunas de ellas rectas y virtuosas y otras no. Y les pusimos a prueba con cosas buenas y malas, para que así, quizás, regresasen.\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@mcxxiii{Y, tras ellos vino una generación que heredó la Escritura [Sagrada] y que se aferraba a los bienes superfluos de este bajo mundo diciendo: «Pronto seremos perdonados.» y si llegaban a ellos bienes semejantes, volvían a tomarlos. ¿Acaso no se obtuvo de ellos el juramento que está en la Escritura de que no dirían sobre Dios más que la verdad y no estudiaron lo que hay en ella? La morada de la otra vida es mejor para quienes tienen temor de Dios. ¿Es que no razonáis?\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@mcxxiv{Pero, en verdad, no dejaremos de recompensar a quienes corrigen lo que está mal, se aferran a la Escritura [Sagrada] y hacen la oración.\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@mcxxv{Y (recuerda) cuando colocamos la montaña sobre ellos como si fuera un toldo y pensaron que les caería encima. ¡Tomad con fuerza lo que Nosotros os hemos dado y recordad lo que hay en ella, para que así seáis temerosos de Dios!\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@mcxxvi{Y (recuerda) cuando tu Señor tomó de los riñones de los hijos de Adán a su descendencia e hizo que sus almas dieran testimonio: «¿Acaso no soy Yo vuestro Señor?» Dijeron: «Sí, lo atestiguamos.» Para que no pudierais decir el Día del Levantamiento: «Ciertamente, lo ignorábamos.»\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@mcxxvii{O dijeseis: “Ciertamente, nuestros antepasados adoraban desde antiguo a otros dioses junto a Dios y nosotros somos sus descendientes. ¿Vas a aniquilarnos por las equivocaciones que ellos cometieron?”\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@mcxxviii{Así es como Nosotros explicamos detalladamente las señales. Quizás así ellos regresen.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@mcxxix{Cuéntales la historia de aquel a quien Nosotros dimos nuestros signos y se despojó de ellos, entonces Satanás le siguió y fue de los que se extravían.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@mcxxx{Y, si Nosotros hubiésemos querido, le habríamos elevado mediante ellos, pero él se inclinó a lo terrenal y siguió a sus pasiones. Su ejemplo es como el del perro, que si le atacas jadea y si no le haces caso jadea. Así son quienes desmienten Nuestras señales. Cuéntales, pues, la historia, quizás así reflexionen.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@mcxxxi{¡Qué mal ejemplo el de quienes desmienten la verdad de Nuestras señales y oprimen a sus propias almas!\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@mcxxxii{A quien Dios guía está bien guiado y a quienes Él extravía, esos son los perdedores.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@mcxxxiii{Ciertamente, hemos creado para el Infierno a muchos genios y humanos. Tienen corazones con los que no reflexionan y ojos con los que no ven y oídos con los que no oyen. Son como el ganado o más perdidos aun. Esos son los que están desatentos.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@mcxxxiv{A Dios pertenecen los nombres mejores, así pues, invócale con ellos y apártate de quienes hacen mal uso de Sus nombres. Pronto les retribuiremos por lo que han hecho.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@mcxxxv{Y, entre quienes Nosotros hemos creado, hay una comunidad que guía (a la gente) con la Verdad y con ella hace justicia.\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@mcxxxvi{Y a quienes desmientan Nuestras señales les llevaremos gradualmente (a la perdición) sin que sepan cómo.\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@mcxxxvii{Y les concederemos un plazo determinado. En verdad, Mi plan es sólido.\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@mcxxxviii{¿Es que no reflexionan? Su compañero no está poseído, no es más que alguien que amonesta claramente.\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@mcxxxix{¿Acaso no contemplan el orden de los cielos y la Tierra y todo lo que Dios ha creado y que quizás su plazo esté cercano? ¿En qué otras palabras van a creer después de estas?\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@mcxl{No hay quien guíe a aquel a quien Dios extravía y Él les deja que, en su rebeldía, vaguen ciegamente.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@mcxli{Te preguntan sobre la Hora, ¿Cuándo tendrá lugar? Di: «En verdad, el conocimiento de eso pertenece a mi Señor. Nadie más que Él hará que se manifieste en su momento. Pesa en los cielos y en la Tierra. No vendrá a vosotros sino por sorpresa.» Te preguntan a ti, como si tú tuvieses conocimiento de ella. Di: «En verdad, el conocimiento de ella pertenece a Dios.» Pero la mayoría de la gente no sabe.\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@mcxlii{Di: «No poseo la capacidad de beneficiarme o perjudicarme aparte de lo que Dios quiera. Si tuviera conocimiento de lo que está oculto a los sentidos incrementaría mi bien y el mal no me tocaría. Yo sólo soy un amonestador y un portador de buenas noticias para unas gentes que son creyentes.»\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@mcxliii{Él es Quien os creó a partir de una sola alma, de la que hizo a su pareja para que viviese tranquilo con ella. Cuando él la cubrió, ella quedó embarazada con un embarazo ligero durante un tiempo. Cuando éste se hizo pesado, ambos rogaron a su Señor: «Si nos das un hijo sano, seremos, ciertamente, de los agradecidos.»\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@mcxliv{Pero, cuando les concedió un hijo sano, lo atribuyeron a otras causas además de a Dios. Pero Dios está muy por encima de cuanto le asocian.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@mcxlv{¿Asociarán a Dios a quienes nada han creado, sino que ellos mismos han sido creados?\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@mcxlvi{¿Y que ni pueden prestarles ayuda ni ayudarse a sí mismos?\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@mcxlvii{Si les invitáis a la buena guía no os seguirán. Da igual que les invitéis o que os quedéis callados.\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@mcxlviii{En verdad, aquellos a quienes invocáis en lugar de Dios son siervos, como vosotros. Invocadlos y esperad a que os respondan, si es que sois sinceros.\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@mcxlix{¿Acaso poseen pies con los que caminar o manos con las que aferrar u ojos con los que ver u oídos con los que oír? Di: «Invocad a los dioses que adoráis como si fueran Dios y trazad vuestros planes contra mí sin hacerme esperar más.»\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@mcl{«En verdad, mi protector es Dios, que hizo descender la Escritura y que protege a quienes son justos.\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@mcli{Y aquellos a quienes invocáis aparte de Él no pueden ayudaros ni ayudarse a ellos mismos.»\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@mclii{Y si les invitáis a la guía no escuchan. Y les ves que te miran, pero no ven.\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@mcliii{¡Sé indulgente, ordena el bien y apártate de los ignorantes!\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@mcliv{Y cuando llegue a ti el susurro de Satanás, refúgiate en Dios, pues, ciertamente, Él todo lo oye, todo lo sabe.\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@mclv{Quienes son temerosos de Dios, cuando les roza el susurro de un demonio, recuerdan a Dios y, entonces, ven claro.\qt@no{(201)}}
+\qt@newcmd\qurantrans@es@mclvi{Pero sus hermanos les hacen permanecer en el error, sin escatimarles perjuicios.\qt@no{(202)}}
+\qt@newcmd\qurantrans@es@mclvii{Y, cuando no vienes a ellos con una señal, dicen: «¿Por qué no has reunido alguna?» Di: «En verdad, solamente sigo lo que me es revelado procedente de mi Señor.» Esto son visiones claras que proceden de vuestro Señor, guía y misericordia para gentes creyentes.\qt@no{(203)}}
+\qt@newcmd\qurantrans@es@mclviii{Y, cuando el Corán sea recitado, escuchadlo y callad. Quizá así obtengáis la misericordia divina.\qt@no{(204)}}
+\qt@newcmd\qurantrans@es@mclix{Y recuerda a tu Señor en tu corazón con humildad y respeto, y sin levantar la voz, mañana y tarde, y no seas de los que están desatentos,\qt@no{(205)}}
+\qt@newcmd\qurantrans@es@mclx{pues, en verdad, quienes están cerca de tu Señor no se vuelven orgullosos por el hecho de adorarle y Le glorifican y se prosternan ante Él.\qt@no{(206)}}
+\qt@newcmd\qurantrans@es@mclxi{\basmalahes Te preguntan sobre los bienes excedentes. Di: «Los bienes excedentes pertenecen a Dios y a Su Mensajero. Así pues, sed temerosos de Dios y arreglad vuestras diferencias y obedeced a Dios y a Su Mensajero si sois creyentes.»\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mclxii{En verdad, los creyentes son aquellos que, cuando se menciona a Dios, sus corazones se estremecen y cuando les son recitados Sus versículos éstos les incrementan su fe, y que confían en su Señor.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mclxiii{Quienes hacen la oración y reparten de los bienes que Nosotros les proporcionamos.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mclxiv{Esos son los verdaderos creyentes. Ellos disfrutarán de mayores grados de cercanía junto a su Señor, de perdón y de provisión generosa.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mclxv{De la misma manera que cuando tu Señor, con razón, te sacó de tu casa y un grupo de los creyentes se disgustó,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mclxvi{te discuten ahora la Verdad, tras habérsela explicado claramente, como si les arrastrasen a la muerte ante sus propios ojos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mclxvii{Y (recuerda) cuando Dios os prometió (la victoria) sobre uno de los dos grupos, (diciendo): «Serán vuestros.» Y deseasteis que fuera el desarmado. Pero Dios quería que la Verdad quedase claramente establecida con Sus palabras y cortar la raíz de los no creyentes,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mclxviii{para que la Verdad se consolide y la falsedad sea aniquilada, por mucho que les disguste a los pecadores.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mclxix{(Recuerda) Cuando pedisteis ayuda a vuestro Señor y Él os respondió: «Os reforzaré con mil ángeles, uno tras otro.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mclxx{Y Dios no lo hizo sino como una buena nueva y para tranquilizar y aportar seguridad con ello a vuestros corazones. Pues el auxilio proviene solamente de Dios. En verdad, Dios es poderoso, sabio.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mclxxi{(Recuerda) Cuando os envolvió un sueño ligero como un aporte de tranquilidad procedente de Él y descendió sobre vosotros agua del cielo para purificaros con ella y apartar de vosotros el susurro envenenado de Satanás, fortalecer vuestros corazones y consolidar vuestros pasos.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mclxxii{(Recuerda) Cuando tu Señor reveló a los ángeles: «Yo estoy con vosotros. ¡Fortaleced, pues, a los que creen! Infundiré el terror en el corazón de los que no creen. ¡Golpeadles en las nucas y golpeadles en todos sus dedos\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mclxxiii{por haber desafiado a Dios y a Su Mensajero!» Dios castiga severamente a quien desafía a Dios y a Su Mensajero.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mclxxiv{¡Así es! ¡Probadlo! Y sabed que el castigo del Fuego es para los que ocultan la Verdad.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mclxxv{¡Oh, creyentes! ¡Cuando os encontréis a los que no creen en formación de combate no les deis la espalda!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mclxxvi{Quien les dé la espalda ese día, excepto para cambiar su puesto de combate o para incorporarse a otra tropa, sufrirá la ira de Dios y su refugio será el Infierno ¡Qué mal destino!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mclxxvii{No erais vosotros quienes les matabais, sino Dios Quien les mató. Ni eras tú quien lanzaba cuando lanzabas, sino Dios Quien lanzaba, para otorgar a los creyentes una recompensa de Su parte. En verdad, Dios todo lo oye, todo lo sabe.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mclxxviii{¡Así es! ¡Dios destruye los planes de los que no son creyentes!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mclxxix{¡Deseabais la victoria y la victoria ha venido a vosotros! Y si os abstenéis será mejor para vosotros y si regresáis Nosotros también regresaremos y vuestras tropas no os servirán de nada por muchas que sean. Dios está con los creyentes.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mclxxx{¡Oh, los que creéis! ¡Obedeced a Dios y a Su Mensajero! ¡Y no le volváis la espalda mientras le escucháis!\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mclxxxi{No seáis como aquellos que dicen: «¡Escuchamos!» pero no escuchan.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mclxxxii{Los peores animales ante Dios son los ciegos y sordos que no razonan.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mclxxxiii{Si Dios hubiese encontrado algo bueno en ellos les habría hecho oír, pero aun si les hiciese oír se volverían de espaldas y se apartarían.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mclxxxiv{¡Oh, los que creéis! Responded a Dios y al Mensajero cuando os invitan a lo que os da vida y sabed que Dios se sitúa entre el hombre y su corazón y que seréis congregados hacia Él.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mclxxxv{Y temed una prueba que no solamente afligirá a quienes son injustos entre vosotros. Y sabed que Dios castiga con severidad.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mclxxxvi{Y recordad cuando erais pocos, oprimidos en la Tierra, temiendo que la gente os apresara y Él os refugió y os fortaleció con Su ayuda y os proveyó de cosas buenas para que pudierais estar agradecidos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mclxxxvii{¡Oh, los que creéis! No traicionéis a Dios y al Mensajero y no traicionéis a sabiendas lo que se os ha confiado.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mclxxxviii{Y sabed que vuestros bienes y vuestros hijos son una prueba para vosotros y que junto a Dios hay una recompensa inmensa.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mclxxxix{¡Oh, los que creéis! Si sois temerosos de Dios, Él os otorgará criterio, ocultará vuestros defectos y os perdonará, pues Dios es el Dueño del Favor Inmenso.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcxc{Y (recuerda) cuando los que no creían planearon hacerte prisionero o matarte o expulsarte. Ellos hacían planes y Dios hacía planes, pero Dios es Quien mejor hace los planes.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcxci{Y, cuando les son recitados Nuestros versículos, dicen: «¡Ya lo hemos oído! ¡Si quisiéramos podríamos decir cosas semejantes! ¡No son más que mitos de los primitivos!»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcxcii{Y (recuerda) cuando dijeron: «¡Oh, Dios! Si esto es la Verdad que viene de Ti ¡Haz que lluevan sobre nosotros piedras del cielo o inflígenos un castigo doloroso!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcxciii{Pero Dios no les castigará mientras tú estés entre ellos, ni les castigará mientras le pidan perdón.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcxciv{¿Por qué no iba Dios a castigarles si ellos impiden acceder (a los creyentes) a la Mezquita Sagrada sin ser sus protectores? Sus protectores son únicamente los temerosos de Dios, pero la mayoría de ellos no saben.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcxcv{Su oración ante La Casa no es otra cosa que silbidos y palmas. ¡Saboread, pues, el castigo por ocultar la Verdad!\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcxcvi{En verdad, los que no son creyentes gastan su riqueza para apartar a la gente del camino de Dios. Pronto la habrán gastado y tendrán que lamentarse de ello y luego serán vencidos. Los que ocultan la Verdad serán congregados en el Infierno\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcxcvii{para que Dios separe al impuro del puro y amontone a los impuros unos sobre otros y les ponga a todos juntos en el Infierno. Esos serán los perdedores.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcxcviii{Di a quienes ocultan la Verdad que si abandonan su actitud se les perdonará lo pasado, pero que si reinciden ya saben lo que les sucedió a sus antepasados.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcxcix{Combatidles, pues, hasta que cese la idolatría y se rinda culto solamente a Dios. Pero si cesan, en verdad, Dios ve lo que hacen.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcc{Y si dan la espalda, sabed que Dios es vuestro protector. ¡Un excelente protector y un excelente auxiliador!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcci{Y sabed que, de los bienes excedentes que obtengáis de cualquier cosa, una quinta parte pertenece a Dios, al Mensajero y a su familia, a los huérfanos, a los necesitados y a los viajeros, si creéis en Dios y en lo que Nosotros hicimos descender para Nuestro siervo el Día del Criterio, el día en que se encontraron los dos ejércitos, pues Dios tiene poder sobre todas las cosas.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mccii{Cuando vosotros estabais en la posición más cercana y ellos en la más alejada y la caravana más baja que vosotros. Si hubierais acordado previamente encontraros no lo habríais conseguido, pero Dios lo hizo para que sucediese lo que ya estaba decretado y fuera destruido, mediante una prueba clara, quien fue destruido y viviera, mediante una prueba clara, quien vivió, pues, en verdad, Dios todo lo oye, todo lo sabe.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcciii{Cuando Dios hizo que en tu sueño les vieses poco numerosos, pues si les hubieses visto muy numerosos habríais vacilado y disputado sobre la orden, pero Dios os protegió. En verdad, Él conoce bien la esencia de los corazones.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcciv{Y, cuando os encontrasteis con ellos, os hizo que les vieseis poco numerosos y os hizo poco numerosos a los ojos de ellos, de manera que sucediese lo que Dios había decretado, pues hacia Dios remiten todos los asuntos.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mccv{¡Oh, los que creéis! Cuando os encontréis con un ejército aguantad con firmeza y recordad mucho a Dios, quizás así triunféis.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mccvi{Y obedeced a Dios y a Su Mensajero y no disputéis, pues vacilaríais y perderíais vuestro ímpetu. Y sed pacientes. En verdad, Dios está con los pacientes.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mccvii{Y no seáis como aquellos que salieron de sus hogares con altanería y ostentación, apartando a la gente del camino de Dios, pues Dios tiene bajo control cuanto hacen.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mccviii{Y (recuerda) cuando Satanás les adornó sus actos y les dijo: “Nadie podrá venceros hoy y yo estaré con vosotros.” Pero cuando los dos ejércitos se avistaron se echó atrás y dijo: «Me aparto de vosotros. En verdad, veo lo que vosotros no veis y, en verdad, temo a Dios, pues Dios es severo castigando.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mccix{Los hipócritas y aquellos cuyos corazones están enfermos dijeron: «A esos les ha engañado su creencia.» Pero quien confía en Dios (sepa) que Dios es poderoso, sabio.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mccx{Y, si vieses cuando los ángeles arrebaten las almas de los que no creen, les golpearán los rostros y las espaldas y (les dirán:) «¡Saboread el castigo de Fuego abrasador!\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mccxi{¡Eso es por lo que hicisteis en vuestra vida anterior, pues Dios no oprime a los siervos!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mccxii{Lo mismo que hacían las gentes del Faraón y los que hubo antes de ellos. Negaron las señales de Dios y Dios le castigó por sus pecados. En verdad, Dios es fuerte, severo en el castigo.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mccxiii{Eso es porque Dios no cambia la bendición que ha otorgado a un pueblo mientras ellos no cambien lo que hay en sus almas, pues Dios todo lo oye, todo lo sabe.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mccxiv{Lo mismo que hacían las gentes del Faraón y los que hubo antes de ellos. Desmentían las señales de su Señor y les destruimos por sus pecados y ahogamos a la gente del Faraón. Todos ellos eran opresores.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mccxv{En verdad, los peores animales ante Dios son los que niegan la Verdad, pues ellos no tienen fe.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mccxvi{Aquellos con los que concertaste un pacto y que violan el pacto cada vez y no tienen temor de Dios.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mccxvii{Y si te enfrentas a ellos en la guerra, dispérsales de tal manera que sirva de escarmiento a los que están tras ellos. Quizás así recapaciten.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mccxviii{Y si temes una traición por parte de una gente, denuncia con equidad el pacto que tienes con ellos. En verdad, Dios no ama a los traidores.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mccxix{Y que no crean los que no tienen fe que tienen ventaja. Ellos no vencerán.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mccxx{Y preparad contra ellos toda la fuerza que podáis y caballería, para intimidar con ella a los enemigos de Dios y enemigos vuestros y a otros que no son ellos, a los que no conocéis pero a quienes Dios conoce. Y lo que gastéis por la causa de Dios os será devuelto y no seréis oprimidos.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mccxxi{Y si se inclinan hacia la paz inclinaos también vosotros y confiad en Dios. En verdad, Él todo lo oye, todo lo sabe.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mccxxii{Y si quieren engañarte, en verdad, Dios te basta. Él es Quien te fortaleció con Su ayuda y con los creyentes\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mccxxiii{y unió sus corazones. Si hubieras gastado todo lo que hay en la Tierra no habrías podido unir sus corazones, pero Dios los unió. En verdad, Él es poderoso, sabio.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mccxxiv{¡Oh, Profeta! ¡Dios y los creyentes que te siguen son suficiente para ti!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mccxxv{¡Oh, Profeta! ¡Convoca a los creyentes al combate! Si hubiera entre vosotros veinte hombres pacientes y contenidos, vencerán a doscientos y si hubiera entre voso tros cien, vencerán a mil de los que no creen, pues son gente que no posee entendimiento.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mccxxvi{Ahora, Dios ha aligerado vuestra carga, pues Él sabe que estáis débiles. Así pues, si entre vosotros hubiera cien hombres pacientes y contenidos vencerán a doscientos y si hubiese entre vosotros mil vencerán a dos mil con el permiso de Dios, pues Dios está con los que son pacientes.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mccxxvii{No es apropiado que un profeta haga prisioneros hasta haberles diezmado en la Tierra. Deseáis lo accesorio de este mundo pero Dios desea (para vosotros los beneficios de) la Otra vida. Y Dios es poderoso, sabio.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mccxxviii{Si no hubiese sido por un decreto previo de Dios, con seguridad os hubiese alcanzado un castigo inmenso por lo que obtuvisteis.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mccxxix{Comed, pues, del botín que habéis obtenido, lo que es lícito y bueno y sed temerosos de Dios. En verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mccxxx{¡Oh, Profeta! Di a los cautivos que están en tus manos: «Si Dios encuentra algo bueno en vuestros corazones os concederá algo mejor que aquello que os ha sido quitado y os perdonará, pues Dios es perdonador, misericordiosísimo con los creyentes.»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mccxxxi{Y si quieren traicionarte, ya traicionaron anteriormente a Dios y Él te dio poder sobre ellos. Dios todo lo conoce, es sabio.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mccxxxii{En verdad, quienes creyeron y emigraron y combatieron con sus bienes y sus personas en la senda de Dios y quienes les dieron refugio y auxilio son amigos y protectores entre sí. Y a quienes creyeron pero no emigraron no tenéis por que protegerles en absoluto hasta que emigren. Y si os piden ayuda por causa de la creencia entonces sí debéis ayudarles, excepto si es contra un pueblo con el que tenéis concertado un tratado. Y Dios ve lo que hacéis.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mccxxxiii{Y quienes no creen son protectores y amigos unos de otros. A menos que lo hagáis habrá problemas en la Tierra y una gran corrupción.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mccxxxiv{Quienes creyeron y emigraron y combatieron en la senda de Dios y quienes les dieron refugio y auxilio, esos son los verdaderos creyentes. Ellos serán perdonados y provistos con generosidad.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mccxxxv{Y quienes creyeron después y emigraron y combatieron con vosotros, esos son de los vuestros. Pero los familiares de sangre tienen más derecho a heredar unos de otros en el Libro de Dios. En verdad, Dios conoce todas las cosas.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mccxxxvi{\basmalahes Rechazo de Dios y de Su Mensajero a los politeístas con los que hicisteis un tratado.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mccxxxvii{Así pues, viajad por la Tierra (libremente) durante cuatro meses y sabed que no podéis humillar a Dios y que Dios es Quien humillará a los que no creen.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mccxxxviii{Anuncio de Dios y de Su Mensajero para la gente en el día de la gran peregrinación: «Dios y Su Mensajero rechazan a los politeístas. Si os arrepentís será mejor para vosotros, pero si dais la espalda, sabed que vosotros no podéis humillar a Dios.» E informa a quienes no creen que tendrán un castigo doloroso,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mccxxxix{excepto aquellos de los politeístas con quienes hicisteis un pacto y luego no han violado nada de él ni han apoyado a nadie contra vosotros. Así pues, cumplid con el pacto que tengáis con ellos hasta su término. En verdad, Dios ama a quienes son temerosos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mccxl{Y, cuando los meses sagrados hayan concluido, matad a los politeístas donde quiera que los encontréis. Apresadles, sitiadles, acechadles en cada recodo, pero si se arrepienten y hacen la oración y entregan el impuesto religioso, dejadles paso libre. En verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mccxli{Y si uno de los politeístas te pide asilo, ofréceselo hasta que oiga la palabra de Dios y luego hazle llegar a un lugar seguro para él. Eso es porque son un pueblo que no sabe.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mccxlii{¿Cómo podrían tener los politeístas un pacto con Dios y Su Mensajero, excepto aquellos con los que pactasteis junto a la Mezquita Sagrada? Mientras ellos cumplan con vosotros, nosotros cumplid con ellos. En verdad, Dios ama a quienes son temerosos.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mccxliii{¿Cómo? Si cuando os vencen no respetan pacto ni acuerdo alguno. Tratan de complaceros con sus bocas, pero sus corazones os rechazan y la mayoría de ellos son transgresores.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mccxliv{Han vendido las señales de Dios por poco precio y apartado a la gente de Su camino. ¡Qué malo es lo que han hecho!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mccxlv{No respetan pacto ni acuerdo con un creyente. ¡Ellos son los transgresores!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mccxlvi{Pero si se arrepienten y hacen la oración y entregan el impuesto religioso serán vuestros hermanos en la creencia. Nosotros explicamos detalladamente las señales para un pueblo que sabe.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mccxlvii{Pero si rompen sus promesas después de haberse comprometido e insultan vuestra creencia, combatid a los dirigentes de la incredulidad. En verdad, para ellos no existen promesas. Quizás así desistan.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mccxlviii{¿No combatiréis contra gentes que rompen sus promesas, que pretenden expulsar al Mensajero y que inician las hostilidades contra vosotros? ¿Vais a temerles? Dios tiene más derecho a que le temáis si sois creyentes.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mccxlix{¡Combatidles! Dios les castigará con vuestras manos y les avergonzará y a vosotros os auxiliará contra ellos, curará los pechos de la gente creyente\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mccl{y eliminará la ira de sus corazones. Dios acepta el arrepentimiento de quien Él quiere. Dios todo lo conoce, es sabio.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mccli{¿O pensasteis que seríais perdonados antes de que Dios supiera quién de vosotros ha combatido y no ha tomado por confidente a nadie más que a Dios y a Su Mensajero y a los creyentes? Dios está bien informado de lo que hacéis.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mcclii{No corresponde a los politeístas la reparación de las mezquitas de Dios, cuando ellos mismos dan testimonio de su propia incredulidad. Ellos mismos han invalidado sus obras y estarán en el Fuego eternamente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mccliii{En verdad, quien debe reparar las mezquitas de Dios es quien cree en Dios y en el Último Día y hace la oración y da el impuesto religioso y sólo teme a Dios. Puede que así ellos sean guiados.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mccliv{¿Acaso el que suministréis agua a los peregrinos y la reparación de la Mezquita Sagrada es equiparable a quien cree en Dios y en el Último Día y combate en la senda de Dios? No son iguales ante Dios y Dios no guía a la gente opresora.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mcclv{Quienes creyeron y emigraron y combatieron por la causa de Dios con sus bienes y sus personas poseen un grado mayor ante Dios y ellos son los triunfadores.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mcclvi{Su Señor les anuncia una misericordia que de Él procede, satisfacción y Jardines en los que disfrutarán de delicias eternas.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mcclvii{En ellos estarán para siempre, eternamente. En verdad, Dios dispone junto a Sí de una recompensa inmensa.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mcclviii{¡Oh, los que sois creyentes! No toméis a vuestros padres y hermanos por amigos si prefieren la incredulidad a la fe y quienes de vosotros les tomen por amigos, esos serán (también) opresores.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mcclix{Di: «Si vuestros padres y vuestros hijos, vuestros hermanos, vuestras esposas, vuestro clan, los bienes que habéis obtenido, los negocios por cuyos beneficios teméis y las casas que os satisfacen, os son más queridos que Dios y Su Mensajero y que el esfuerzo por Su causa, entonces aguardad hasta que Dios emita Su veredicto, pues Dios no guía a la gente transgresora.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mcclx{En verdad, Dios os ha auxiliado en numerosos lugares y (especialmente) el día de Hunayn, cuando vuestro gran número os llenó de alegría. Pero no os benefició en nada y la tierra se os hizo estrecha a pesar de su amplitud y, en ese momento, volvisteis la espalda para huir.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcclxi{Entonces Dios hizo que descendiera Su calma sobre Su Mensajero y los creyentes e hizo descender ejércitos que vosotros no veíais y castigó a los que no creían. Esa es la recompensa de los que no creen.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mcclxii{Luego, tras ello, Dios aceptará el arrepentimiento de quien Él quiera. Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mcclxiii{¡Oh, los que creéis! En verdad, los idólatras son impuros. ¡Que no se acerquen a la Mezquita Sagrada después de este año! Y si teméis la pobreza, Dios os enriquecerá con Su favor si Él quiere. En verdad, Dios todo lo conoce, es sabio.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mcclxiv{Combatid a quienes, de aquellos a los que les fue dada la Escritura [Sagrada], no creen en Dios ni en el Último Día y no prohíben lo que Dios y Su Mensajero han prohibido, ni practican la religión de la Verdad, hasta que paguen sus impuestos con su propia mano y con humildad.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcclxv{Los judíos dicen: «Uzair es el hijo de Dios» y los cristianos dicen: «El Mesías es el hijo de Dios.» Eso es lo que dicen con sus bocas. Imitan lo que dijeron anteriormente los que no creían. ¡Que Dios les maldiga por sus mentiras!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcclxvi{Han tomado a sus doctores de la ley y a sus sacerdotes por sus señores en lugar de Dios, así como al Mesías hijo de María, a pesar de que se les ordenó que adoraran solamente al Dios Uno. No hay otro dios excepto Él. ¡Glorificado sea por encima de lo que Le asocian!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcclxvii{Quisieran apagar la luz de Dios con sus bocas, pero Dios no quiere sino que Su luz brille plenamente, aunque moleste a los que no creen.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcclxviii{Él es Quien ha enviado a Su Mensajero con la guía y con la religión de la Verdad para que prevalezca sobre todas las otras creencias religiosas, aunque moleste a los que no creen.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcclxix{¡Oh, los que creéis! En verdad, muchos de los doctores de la ley y de los sacerdotes se comen, sin derecho, los bienes de la gente y les apartan del camino de Dios. Y, a quienes atesoran el oro y la plata y no los gastan por la causa de Dios, anúnciales un castigo doloroso\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcclxx{el día en que (esos metales) sean calentados en el fuego del Infierno y se marquen con ellos sus frentes, sus costados y sus espaldas. «¡Esto era lo que atesorabais para vuestras almas! ¡Saboread pues lo que atesorasteis!»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcclxxi{En verdad, el número de meses para Dios es de doce. Es así en la Escritura de Dios desde el día en que creó los cielos y la Tierra. De ellos, cuatro son sagrados. Esa es la religión establecida. Así pues, no os oprimáis durante ellos a vosotros mismos y combatid contra todos los idólatras igual que ellos combaten contra todos vosotros y sabed que Dios está con quienes son temerosos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcclxxii{En verdad, trasladar la inviolabilidad de un mes a otro es un incremento en la idolatría con el que se extravían los politeístas. Lo declaran lícito un año y lo sacralizan otro año, para que coincida con el número de meses que Dios ha declarado sagrados, haciendo lícito lo que Dios ha considerado inviolable. Sus malos actos les parecen bellos, pero Dios no guía a la gente que oculta la Verdad.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcclxxiii{¡Oh, los que creéis! ¡Qué sucede con vosotros! Cuando se os dice: ¡Salid a combatir por la causa de Dios! os quedáis pegados al suelo. ¿Acaso os satisface más la vida mundanal que la otra? Pues el disfrute de la vida mundanal comparado con el de la otra es muy poca cosa.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcclxxiv{Si no salís a combatir Él os castigará con un castigo doloroso y os cambiará por un pueblo diferente sin que e causéis ningún perjuicio. Dios tiene poder sobre todas las cosas.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcclxxv{Si no le auxiliáis ya Dios le auxilió cuando le hicieron salir los que no tenían fe y era el segundo de dos y ambos estaban en la cueva y le dijo a su compañero: «No estés triste, en verdad, Dios está con nosotros.» Y Dios hizo descender Su calma sobre él y le ayudó con ejércitos que vosotros no visteis y puso la palabra de los que no son creyentes en la posición más baja, pues la palabra de Dios es la más elevada y Dios es poderoso, sabio.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcclxxvi{¡Salid a la batalla, ligeros o pesados, y combatid con vuestros bienes y vuestras personas por la causa de Dios. Eso es mejor para vosotros. Si supierais...\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mcclxxvii{Si hubiera sido una ganancia asequible o un viaje corto seguramente te habrían seguido, pero les pareció una gran distancia. Jurarán por Dios: «Si hubiéramos podido, habríamos ido contigo.» Se destruyen ellos mismos y Dios sabe que son unos mentirosos.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcclxxviii{¡Que Dios te perdone! ¿Por qué les diste permiso antes de que te quedase claro quiénes eran sinceros y supieses quiénes eran los mentirosos?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcclxxix{Quienes creen en Dios y en el Último Día no te pedirán que les excuses de combatir con sus bienes y sus personas y Dios conoce a los que temen disgustarle.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mcclxxx{En verdad, te piden que les excuses aquellos que no creen en Dios ni en el Último Día, que tienen dudas en sus corazones y sus dudas les hacen ser reluctantes.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mcclxxxi{Si hubiesen querido salir seguramente habrían realizado algunos preparativos para ello, pero a Dios le pareció desaconsejable enviarles y les hizo permanecer y se les dijo: «¡Quedaos sentados con los que se quedan!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mcclxxxii{Si hubieran ido con vosotros sólo os habrían ocasionado más problemas, difundiendo rumores y buscando causar sedición y entre vosotros algunos les habrían escuchado. Dios conoce bien a los opresores.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mcclxxxiii{Ya anteriormente quisieron crear problemas y confundir las cosas para ti, hasta que vino la Verdad y se evidenció la orden de Dios, a despecho de ellos.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mcclxxxiv{Entre ellos hay quien dice: «Dispénsame y no me hagas pecar.» ¿Acaso no han caído ya en el pecado? En verdad, el Infierno rodea a los que no tienen fe.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mcclxxxv{Si te sucede algo bueno se entristecen, pero si te aflige alguna dificultad dicen: «Nosotros ya habíamos tomado nuestras precauciones anteriormente.» y se alejan llenos de alegría.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mcclxxxvi{Di: «No nos aflige excepto aquello que Dios tiene escrito para nosotros. Él es nuestro amigo y protector.» Así pues, que los creyentes confíen en Dios.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mcclxxxvii{Di: «¿Qué podéis esperar que nos suceda sino una de las dos cosas buenas? Mientras que nosotros esperamos que Dios os aflija con un castigo que venga directamente de Él o a través de nuestras manos. Así pues, ¡Esperad! ¡Que nosotros también esperaremos con vosotros!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mcclxxxviii{Di: «¡Gastad (en limosnas) de grado o a la fuerza! No os será aceptado. En verdad, sois una gente transgresora.»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mcclxxxix{No hay nada que impida que lo que gastan sea aceptado, excepto que ellos no creen en Dios ni en Su Mensajero, que no acuden a la oración excepto con pereza y que no gastan en limosnas excepto a disgusto.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mccxc{No dejes pues que sus riquezas ni sus hijos te impresionen. En verdad, Dios quiere castigarles por medio de ello en la vida mundanal y que sus almas partan sin que ellos tengan fe.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mccxci{Juran por Dios que son de los vuestros, pero no son de los vuestros sino que son gente que os teme.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mccxcii{Si pudieran encontrar un refugio o una gruta o un agujero en el que meterse, se arrojarían a él a toda prisa.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mccxciii{Algunos de ellos te censuran por las limosnas. Si se les da de ellas están satisfechos, pero si no se les da de ellas se enfadan.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mccxciv{Mejor habría sido si hubieran estado satisfechos con lo que Dios y Su Mensajero les dieron y hubieran dicho: «Dios es suficiente para nosotros. Dios nos otorgará Su favor y también Su Mensajero. Nuestros deseos se dirigen a Él.»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mccxcv{En verdad, las limosnas son para los pobres y los necesitados, para los encargados de recaudarlas y para aquellos cuyos corazones se quiere atraer, para liberar esclavos, para los endeudados, para la causa de Dios y para el viajero. Es una disposición obligatoria procedente de Dios y Dios todo lo conoce, es sabio.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mccxcvi{Entre ellos hay quienes molestan al Profeta diciendo: «Es una oreja.» Di: «Es una buena oreja para vosotros. Tiene fe en Dios y confía en los creyentes y es una misericordia para aquellos de vosotros que tenéis fe.» Y para quienes molestan al Profeta hay un castigo doloroso.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mccxcvii{Os juran por Dios para satisfaceros, pero Dios y Su Mensajero tienen más derecho a que ellos les satisfagan, si es que son creyentes.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mccxcviii{¿Acaso no saben que el fuego del Infierno en el que estarán eternamente es para quienes se oponen a Dios y a Su Mensajero? ¡Esa es la gran desgracia!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mccxcix{Los hipócritas temen que descienda para ellos un capítulo que les informe de lo que hay en sus corazones. Di: «Burlaos, que, en verdad, Dios hará que se manifieste aquello que os atemoriza.»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mccc{Y si les preguntas, seguramente que dirán: «Nos divertíamos y jugábamos.» Di: «¿Os burlabais de Dios, de Sus señales y de Su Mensajero?\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mccci{No os excuséis, pues habéis descreído después de haber creído.» Si perdonamos a un grupo de vosotros castigaremos a otro, porque han sido pecadores.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mcccii{Los hipócritas, y las hipócritas son tal para cual, ordenan lo que está mal y prohíben lo que está bien y aprietan sus puños. Se olvidaron de Dios así que Él se olvidó de ellos. En verdad, los hipócritas son los transgresores.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mccciii{Dios ha prometido a los hipócritas y a las hipócritas y a los que no creen, el fuego del Infierno, en el que estarán eternamente. Eso es suficiente para ellos y Dios les maldice. Tendrán un castigo permanente.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mccciv{(Hipócritas) sois como los que os precedieron. Eran más fuertes que vosotros y poseían más bienes e hijos y disfrutaron de su parte. Disfrutad vosotros de la vuestra como disfrutaron los que os precedieron de la suya. Os habéis dado a la frivolidad como ellos se dieron a la frivolidad. Ellos arruinaron sus obras en esta vida y en la otra y ellos son los perdedores.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mcccv{¿Acaso no llegó a ellos la noticia de quienes les precedieron: los pueblos de Noé, de Ad, de Tamud, el pueblo de Abraham y la gente de Madyan y de las ciudades que fueron vueltas del revés? Vinieron a ellos sus Mensajeros con las pruebas claras. No fue Dios quien les oprimió sino que fueron ellos mismos quienes se oprimieron.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mcccvi{Y los creyentes y las creyentes son amigos y protectores los unos de los otros. Ordenan lo que es bueno y prohíben lo que es malo y hacen la oración, dan el impuesto religioso y obedecen a Dios y a Su Mensajero. Es con ellos con quien Dios será misericordioso. En verdad, Dios es poderoso, sabio.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mcccvii{Dios ha prometido a los creyentes y a las creyentes Jardines de cuyas profundidades brotan los ríos, en los que estarán eternamente y moradas agradables en los Jardines del Edén. Pero obtener la satisfacción de Dios es algo más grande. ¡Ése es el triunfo inmenso!\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mcccviii{¡Oh, Profeta! Combate a los que no creen y a los hipócritas y sé severo con ellos. Su refugio será el Infierno. ¡Qué mal destino!\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mcccix{Juran por Dios que no dijeron, pero sí que dijeron, palabras propias de no creyentes y dejaron de creer después de haber aceptado el Islam. Ansiaron lo que no pudieron conseguir y su único reproche es que Dios y Su Mensajero les enriquecieron con Su favor. Así pues, si se arrepintiesen sería mejor para ellos. Pero si dan la espalda Dios les castigará con un castigo doloroso en esta vida y en la otra y no tendrán en la Tierra quien les proteja ni quien les auxilie.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mcccx{Y, entre ellos, algunos acordaron con Dios: «Si nos otorga Su favor, daremos limosnas y seremos virtuosos.»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mcccxi{Pero cuando Él les otorga algo de Su favor son avariciosos de ello y dan la espalda y se desentienden.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mcccxii{Eso causará la hipocresía en sus corazones hasta el día en que se encuentren con Él por haber faltado al acuerdo que hicieron con Dios y por haber sido mentirosos.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mcccxiii{¿Acaso no sabían que Dios conoce sus secretos y sus conversaciones privadas y que Dios conoce lo que está oculto a los sentidos?\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mcccxiv{Dios se burlará de quienes critican a los creyentes que dan limosnas voluntariamente y se burlan de quienes apenas encuentran algo que dar. Y tendrán un castigo doloroso.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mcccxv{Puedes pedir perdón por ellos o no pedir perdón por ellos, pero aunque pidas perdón por ellos setenta veces Dios no les perdonará. Eso es por no haber creído en Dios ni en Su Mensajero. Y Dios no guía a la gente transgresora.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mcccxvi{Quienes se quedaron atrás tras la partida del Mensajero se alegraron de quedarse y de haberse opuesto a él, pues les repugnaba la idea de combatir con sus bienes y sus personas por la causa de Dios y dijeron: «No salgáis con este calor.» Di: «El Fuego del Infierno es más abrasador.» Si entendieran...\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mcccxvii{Así pues, que rían poco y lloren mucho en recompensa por lo que han hecho y han obtenido.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mcccxviii{Y si Dios hace regresar a ti a un grupo de ellos y te piden permiso para salir a luchar contigo, di: «No saldréis conmigo jamás, ni combatiréis conmigo a los enemigos. En verdad, estuvisteis satisfechos de quedaros la primera vez, así que quedaos con los que se quedan.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mcccxix{Y no reces jamás por ninguno de ellos cuando mueran, ni visites sus tumbas, ya que ellos no creyeron en Dios ni en Su Mensajero y murieron siendo transgresores.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mcccxx{Y que no te impresionen sus riquezas y sus hijos, porque, en verdad, Dios quiere con ello castigarles en esta vida y que sus almas les abandonen mientras aun son de los que no creen.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mcccxxi{Y cuando desciende un capítulo (diciendo): «¡Creed en Dios y combatid junto a Su Mensajero!» los poderosos de entre ellos te piden permiso y dicen: «Deja que seamos de los que se quedan.»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mcccxxii{Están satisfechos de quedarse con los que se quedan atrás. Sus corazones están sellados y no entienden.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mcccxxiii{Pero el Mensajero y los que creyeron con él combaten con sus bienes y con sus personas y para ellos serán las cosas buenas y ellos serán los triunfadores.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mcccxxiv{Dios ha preparado para ellos Jardines de cuyas profundidades brotan los arroyos, en los que estarán eternamente. Ese es el triunfo inmenso.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mcccxxv{Y algunos beduinos que se excusan vienen a que se les de permiso, pero los que mintieron a Dios y a Su Mensajero se quedan sentados. Los que de ellos no creen pronto padecerán un castigo doloroso.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mcccxxvi{No hay razón para ir contra los débiles, ni los enfermos, ni quienes no disponen de medios, ni contra los que obran bien, siempre que alberguen buenos deseos para Dios y Su Mensajero. Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mcccxxvii{Ni tampoco contra aquellos a quienes, cuando vinieron a ti para que les proporcionases monturas, les dijiste: «No encuentro monturas para vosotros» y se dieron la vuelta con los ojos llenos de lagrimas de la tristeza por no encontrar medios,\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mcccxxviii{pero sí contra aquellos que te piden permiso siendo ricos. Están satisfechos de estar con los que se quedan atrás. Dios selló sus corazones, así que ellos no saben.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mcccxxix{Os ofrecerán sus excusas cuando regreséis a ellos. Di: «No os excuséis. Nunca os creeremos, pues Dios nos ha informado sobre vosotros. Y Dios y Su Mensajero ven vuestros actos. Luego, seréis devueltos al Conocedor de lo oculto y lo manifiesto y Él os informará de lo que hacíais.»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mcccxxx{Pronto os jurarán por Dios, cuando volváis a ellos, para que cambiéis de opinión sobre ellos. ¡Apartaos de ellos! Verdaderamente, son malvados y pecadores y su morada será el Infierno, recompensa por lo que obtuvieron con su comportamiento.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mcccxxxi{Os jurarán para que estéis a bien con ellos, pero, aunque les aceptéis, en verdad, Dios no acepta a la gente transgresora.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mcccxxxii{Los beduinos son los que menos creen, los más hipócritas y los más propensos a ignorar las leyes que Dios hizo descender sobre Su Mensajero. Y Dios todo lo conoce, es sabio.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcccxxxiii{Y, entre los beduinos, hay quienes consideran un perjuicio económico lo que gastan y desean que os suceda algo malo. ¡Que algo malo les suceda a ellos! Y Dios todo lo oye, todo lo sabe.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mcccxxxiv{Y, entre los beduinos, hay quienes creen en Dios y en el Último Día y consideran lo que gastan y las bendiciones que piden para el Mensajero medios para obtener mayor cercanía a Dios. ¿Acaso no son para ellos un medio de obtener cercanía? Dios les hará entrar en Su misericordia. En verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mcccxxxv{De la vanguardia de los primeros emigrantes y auxiliares y de quienes les siguieron en hacer el bien Dios está satisfecho y ellos están satisfechos de Él. Y Él les ha preparado Jardines de cuyas profundidades brotan los ríos, en los que estarán eternamente. ¡Ése es el triunfo grandioso!\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mcccxxxvi{Y entre los beduinos que están alrededor vuestro y también entre la gente de Medina hay hipócritas que practican la hipocresía con asiduidad. Tú no les conoces pero Nosotros es conocemos. Pronto les castigaremos dos veces. Luego serán destinados a un castigo inmenso.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mcccxxxvii{Y otros, que reconocen sus pecados, han mezclado actos buenos y otros malos. Puede que Dios acepte su arrepentimiento. En verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mcccxxxviii{Toma de sus riquezas una limosna para limpiarles y purificarles por medio de ella y reza por ellos. En verdad, tu oración es una tranquilidad para ellos. Y Dios todo lo oye, todo lo sabe.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mcccxxxix{¿Acaso no saben que Dios es Quien acepta el arrepentimiento de Sus siervos y Quien toma la limosna y que Dios es el Perdonador, el Misericordiosísimo con los creyentes?\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mcccxl{Y di: «Haced lo que queráis, que Dios verá vuestras obras, y también Su Mensajero y los creyentes. Y pronto seréis llevados hacia el Conocedor de lo oculto y lo manifiesto y Él os informará de lo que hacíais.»\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mcccxli{Otros estarán a la espera de lo que Dios ordene: que les castigue o que les perdone. Y Dios todo lo conoce, es sabio.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mcccxlii{Y quienes hicieron una mezquita para hacer daño y para ocultar la verdad, para crear división entre los creyentes y servir de refugio a quienes combatieron anteriormente a Dios y a Su Mensajero, con seguridad, jurarán: «Sólo queríamos el bien» pero Dios es testigo de que ellos mienten.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mcccxliii{¡No asistas a ella jamás! Una mezquita fundada sobre el temor de Dios desde el primer día tiene más derecho a que asistas a ella. En ella hay hombres que aman purificarse y Dios ama a los que se purifican.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mcccxliv{¿Quién es mejor? ¿Quien ha fundado su edificio sobre el temor de Dios y Su satisfacción o quien ha fundado su edificio al borde de un precipicio a punto de desmoronarse y que le arrastrará al fuego del Infierno? Y Dios no guía a la gente opresora.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mcccxlv{El edificio que han construido no cesará de inquietar sus corazones hasta que sus corazones se despedacen. Y Dios todo lo conoce, es sabio.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mcccxlvi{En verdad, Dios ha comprado a los creyentes sus personas y sus bienes porque para ellos es el Jardín. Combaten por la causa de Dios y matan y son matados. Es un compromiso cierto que Él ha asumido en la Torá, el Evangelio y el Corán. Y ¿Quién es más leal a sus pactos que Dios? ¡Alegraos de la beneficiosa transacción que habéis realizado! ¡Eso sí que es el triunfo grandioso!\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mcccxlvii{[Los creyentes son] Los que se arrepienten, los que adoran a Dios, los que Le alaban, los que viajan a las mezquitas, los que se inclinan ante Dios, los que se prosternan ante Él, los que ordenan el bien y prohíben el mal y los que protegen las leyes de Dios. ¡Anuncia la buena nueva a los creyentes!\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mcccxlviii{No es apropiado que el Profeta y los creyentes pidan el perdón para los idólatras, aunque sean sus parientes cercanos, después de habérseles explicado claramente que ellos son gente destinada al Infierno.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mcccxlix{El perdón que Abraham pidió para su padre no fue sino en cumplimiento de una promesa que le había hecho, pero cuando le quedó claro que él era enemigo de Dios se apartó de él. En verdad, Abraham era piadoso, tolerante.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mcccl{Y Dios no extravía a un pueblo después de haberle guiado sin antes explicarle claramente aquello que debe temer y evitar. En verdad, Dios conoce todas las cosas.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mcccli{En verdad, a Dios pertenece el gobierno de los cielos y la Tierra. Él da la vida y la muerte y no tenéis aparte de Dios ni amigo ni protector ni quien pueda auxiliaros.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mccclii{Ciertamente, Dios se ha vuelto con misericordia hacia el Mensajero y los emigrantes y los auxiliares que le siguieron a la hora de la dificultad, después de que los corazones de un grupo de ellos estuviesen a punto de desviarse, y les ha perdonado. En verdad, Él es para ellos compasivo, misericordiosísimo.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mcccliii{Y hacia los tres que se quedaron, hasta que la Tierra, con toda su amplitud, se les hizo estrecha y sus propias almas se angustiaron y supieron que no podrían refugiarse de Dios excepto en Él mismo. Luego, Él se volvió a ellos con misericordia para que pudiesen arrepentirse. En verdad, Dios es Quien acepta el arrepentimiento, el Misericordiosísimo con los creyentes.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mcccliv{¡Oh, los que creéis! ¡Sed temerosos de Dios y estad con los sinceros!\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mccclv{No es adecuado para la gente de Medina y para los beduinos que hay alrededor de ellos que se queden atrás del Mensajero de Dios, ni preferirse a ellos mismos antes que a él, ya que no sufrirán sed ni cansancio ni hambre en la senda de Dios. Ni darán ningún paso que irrite a los que no son creyentes, ni soportarán golpe alguno de sus enemigos sin que sea consignado para ellos como una buena obra. En verdad, Dios no deja que se pierda la recompensa de los que hacen el bien.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mccclvi{Y no realizarán gasto alguno, sea poco o mucho, ni cruzarán valle alguno sin que quede escrito para ellos y Dios les recompense por ello como lo mejor que han hecho.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mccclvii{No es adecuado que todos los creyentes salgan de expedición. ¿Por qué no viajan algunos de cada grupo para ser instruidos en la religión y que amonesten a los suyos cuando regresen a ellos y así, quizás, sean temerosos?\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mccclviii{¡Oh, los que creéis! Combatid a los incrédulos que tenéis en vuestra vecindad. Y que os encuentren firmes y duros y sabed que Dios está con quienes son temerosos.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mccclix{Y, cuando se hace descender un capítulo, hay entre ellos alguno que dice: «¿A quién de vosotros le ha incrementado la fe con él?» Pero a quienes son creyentes ello les incrementa la fe y les hace felices.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mccclx{Y a quienes tienen sus corazones enfermos les añade mal a su mal y mueren sin tener fe.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mccclxi{¿Acaso no ven que son puestos a prueba cada año una o dos veces? Pero ellos ni se arrepienten ni recapacitan.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mccclxii{Y, cuando se hace descender un capítulo, se miran unos a otros: “¿Os ha visto alguien? y se dan la vuelta. Dios dará la vuelta a sus corazones porque son una gente que no comprende.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mccclxiii{Ciertamente, ha venido a vosotros un Mensajero de entre vosotros mismos al que le abruma vuestro sufrimiento, se preocupa por vosotros y con los creyentes es compasivo, misericordioso.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mccclxiv{Y si (a pesar de todo ello) te vuelven la espalda, di: «Dios es suficiente para mí. No hay más dios que Él. En Él confío y Él es el Señor del Trono inmenso.»\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mccclxv{\basmalahes Alif, lam, ra. Esos son los versículos de la Escritura sabia.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mccclxvi{¿Acaso sorprende a las personas que Nosotros hayamos revelado a un hombre de entre ellos: «Amonesta a las gentes y anuncia a los creyentes la buena nueva de que hay para ellos una posición de Verdad junto a Su Señor»? Quienes no creen dicen: «En verdad, éste es un mago evidente.»\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mccclxvii{En verdad, vuestro Señor es Dios, Quien creó los cielos y la Tierra en seis días. Luego se situó sobre Su trono, dirigiendo el asunto. No hay nadie que pueda interceder sino después de haber obtenido Su permiso. Ése es Dios ¡Adoradle, pues! ¿Es que no os dejaréis amonestar?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mccclxviii{A Él regresaréis todos. La promesa de Dios es verdadera. Él inicia la Creación y luego la hace regresar (a Él) para recompensar con equidad a quienes creyeron y obraron rectamente. Y aquellos que no creyeron tendrán una bebida de agua hirviente y un castigo doloroso por haber ocultado la Verdad.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mccclxix{Él es Quien hizo al Sol resplandecer y a la Luna iluminar y estableció en ella fases para que conozcáis el número de los años y la cuenta. Dios no ha creado esto sino con la Verdad. Él explica detalladamente las señales para un pueblo que posee conocimiento.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mccclxx{En verdad, en la diferencia de la noche y el día y en lo que Dios creó en los cielos y en la Tierra hay señales para una gente que es temerosa.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mccclxxi{En verdad, quienes no esperan encontrarse con Nosotros y están satisfechos de la vida mundanal y seguros de ella y quienes no prestan atención a Nuestras señales\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mccclxxii{tendrán de morada el Fuego por lo que obtenían con sus actos.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mccclxxiii{En verdad, a quienes creen y obran rectamente, Dios les guía por medio de su fe. Correrán a sus pies los ríos en los Jardines de las Delicias.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mccclxxiv{La invocación de ellos allí será: «¡Glorificado seas, Oh Dios!» y entre ellos se saludarán: «¡Paz!» y al final de su invocación: «¡Alabado sea Dios, Señor de los mundos!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mccclxxv{Si Dios apresurase la llegada del mal para los hombres de la misma manera que estos desean que se apresure la llegada de lo bueno, su plazo ya se habría cumplido, pero dejamos que quienes no esperan encontrarse con Nosotros vaguen errantes en su rebeldía.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mccclxxvi{Cuando alguien sufre un perjuicio Nos invoca acostado, sentado o de pie, pero cuando eliminamos el mal que le aquejaba pasa como si no Nos hubiera suplicado por el mal que le aquejaba. Así es como les son adornados sus actos a los despilfarradores.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mccclxxvii{Ciertamente, destruimos a otras generaciones anteriores a vosotros cuando fueron opresores y vinieron a ellos sus Mensajeros con las pruebas claras pero no creyeron. Así recompensamos a la gente pecadora.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mccclxxviii{Luego, tras ellos, os pusimos como herederos en la Tierra para observar como actuabais.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mccclxxix{Y, cuando se les recitan Nuestros claros versículos, quienes no esperan encontrarse con Nosotros dicen: «Tráenos otro Corán o altéralo.» Di: «Yo no puedo alterarlo por iniciativa propia. Yo sólo sigo lo que se me ha revelado. En verdad, temo, si desobedezco a mi Señor, el castigo de un día inmenso.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mccclxxx{Di: «Si Dios hubiera querido yo no os lo habría recitado ni Él os lo habría dado a conocer. Antes de ello he permanecido entre vosotros una vida. Es que no razonaréis.»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mccclxxxi{¿Quién es más opresor que quien inventa mentiras sobre Dios o desmiente Sus señales? En verdad, los pecadores no triunfarán.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mccclxxxii{Y adoran, aparte de Dios, lo que no les perjudica ni les beneficia y dicen: «¡Éstos son nuestros intercesores ante Dios!» Di: «¿Vais a informar a Dios de algo que Él no sepa de los cielos o de la Tierra? Glorificado y Ensalzado sea por encima de lo que asocian a Él.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mccclxxxiii{Los humanos eran una sola comunidad pero disintieron entre ellos y si no hubiera sido por una disposición previa de tu Señor ya se habría juzgado entre ellos sobre aquello en lo que disentían.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mccclxxxiv{Y dicen: «¿Por qué no se ha hecho que descienda sobre él una señal procedente de Su señor?» Di: «En verdad, lo oculto pertenece a Dios, así pues, esperad, que yo también esperaré con vosotros.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mccclxxxv{Y cuando hacemos probar a la gente una misericordia después de haberles tocado una desgracia, ellos traman contra Nuestras señales. Di: «Dios es más rápido tramando.» En verdad, Nuestros enviados escriben lo que tramáis.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mccclxxxvi{Y Él es Quien os lleva de viaje por la tierra y el mar. Cuando estáis en el barco navegando con viento favorable y disfrutando de ello y llega un viento tempestuoso y las olas llegan a ellos por todos lados y se sienten rodeados (por la muerte), invocan a Dios con una creencia sincera: «Si nos salvas de ésta seremos, ciertamente, de los agradecidos.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mccclxxxvii{Pero cuando Él les salva, vuelven a comportarse injustamente en la Tierra, sin derecho. ¡Oh, gentes! En verdad, vuestra injusticia caerá sobre vosotros. Disfrutaréis de la vida mundanal, luego regresaréis a Nosotros y os informaremos de lo que hacíais.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mccclxxxviii{En verdad, la vida de este mundo es como el agua que Nosotros hacemos descender del cielo. Se nutre con ella la vegetación de la Tierra, de la cual comen las personas y el ganado. Hasta que, cuando la Tierra se ha embellecido y adornado y sus gentes creen que tienen poder sobre ella, llega a ella Nuestra orden, por la noche o por el día, y la dejamos como si hubiera sido cosechada, como si no hubiera estado florecida el día anterior. Así explicamos detalladamente las señales para gente que reflexiona.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mccclxxxix{Y Dios invita a la morada de la paz y dirige hacia el camino recto a quien Él quiere.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcccxc{Quienes hacen el bien recibirán el mismo bien y más en recompensa y ni el polvo ni la humillación cubrirán sus rostros. Esos son los habitantes del Paraíso, en el que vivirán eternamente.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mcccxci{Y quienes hagan el mal tendrán de recompensa el mismo mal y les cubrirá la humillación. No tendrán nadie que les proteja de Dios. Como si sus rostros fueran cubiertos por un fragmento de la noche tenebrosa. Esos son los habitantes del Fuego, en el que estarán eternamente.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mcccxcii{Y, el día en que les reunamos a todos ellos, diremos a quienes equipararon a otros dioses a Dios: «Quedaos en vuestro sitio, vosotros y aquellos a quienes adorabais.» Y les separaremos a unos de otros y dirán sus asociados: «No era a nosotros a quienes adorabais\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mcccxciii{y Dios basta como testigo entre nosotros y vosotros de que nosotros desconocíamos vuestra adoración.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcccxciv{Allí, cada alma examinará lo que hizo anteriormente y serán devueltos a Dios, su verdadero Señor, y se alejarán de ellos aquellos que inventaron.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcccxcv{Di: «¿Quién os procura el sustento del cielo y de la Tierra? ¿Quién posee el oído y la vista? ¿Quién hace salir la vida de la muerte y la muerte de la vida? y ¿Quién dirige todo?» Dirán: «Dios» Di, pues: «¿Es que no seréis temerosos (de Él)?»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcccxcvi{Ese es Dios, vuestro verdadero Señor. Y ¿Qué hay después de la Verdad excepto el extravío? Así pues ¿Por qué os apartáis?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcccxcvii{Así se ha verificado la palabra de tu Señor sobre los transgresores, de que ellos no creerán.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcccxcviii{Di: «¿Existe entre aquellos que adoráis alguno que origine la Creación y luego la haga regresar a él?» Di: «¡Dios es Quién origina la Creación y luego la hace regresar a Él! Entonces ¿Por qué os apartáis (de la Verdad)?»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcccxcix{Di: «¿Existe, entre aquellos que adoráis, alguno que guíe hacia la Verdad?» Di: «¡Dios es Quien guía hacia la Verdad! ¿Quién tiene más derecho a ser seguido, quien guía hacia la Verdad o quien no guía a no ser que él mismo sea guiado? ¿Qué pasa entonces con vosotros, que juzgáis de esa manera?»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcd{La mayoría de ellos no siguen sino suposiciones, y las suposiciones no tienen valor frente a la Verdad. Ciertamente, Dios conoce bien lo que hacéis.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcdi{Nadie más que Dios ha podido crear este Corán que, además, confirma lo que ellos ya tenían en sus manos y explica detalladamente la Escritura que, sin duda alguna, procede del Señor del Universo.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcdii{O dicen: «Lo ha creado él.» Di: «Entonces, traed un capítulo semejante o llamad a quien podáis aparte de Dios, si es que decís la verdad.»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcdiii{Pero ellos desmienten aquello que su conocimiento no abarca y cuyo significado trascendente no ha llegado a ellos. Así mismo desmintieron quienes les precedieron, pero observa cuál fue el final de los opresores.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcdiv{De ellos, hay quien cree en él y hay quien no cree en él, pero tu Señor es quien mejor conoce a los corruptores.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcdv{Y si te desmienten, di: «Para mí mis actos y para vosotros vuestros actos. Vosotros no sois responsables de lo que yo hago ni yo soy responsable de los vosotros hacéis.»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mcdvi{Y, entre ellos, algunos te escuchan, pero ¿Cómo podrás hacerte oír de quien es sordo y no razona?\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcdvii{Y, entre ellos, alguno te mira, pero ¿vas a guiar al ciego aunque no puede ver?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcdviii{En verdad, Dios no oprime a las personas en absoluto, sino que son las personas quienes se oprimen ellas mismas.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mcdix{Y, (recuérdales) el día en que Él les reúna como si sólo hubiesen permanecido una hora del día. Se reconocerán entre ellos. Sin duda, habrán perdido quienes negaron el encuentro con Dios y no estaban bien guiados.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mcdx{Y, tanto si te hacemos ver algo de lo que les prometimos como si te hacemos morir, ellos habrán de volver a Nosotros y Dios es testigo de lo que hacen.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mcdxi{Y para cada comunidad hay un Mensajero. Cuando llega a ellos su Mensajero, juzga entre ellos con equidad y ellos no son oprimidos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mcdxii{Y dicen: «¿Cuándo llegará lo prometido, si decís la verdad?»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mcdxiii{Di: «Yo no tengo poder para perjudicarme o para beneficiarme, excepto lo que Dios quiera. Cada comunidad tiene un plazo. Cuando llega su plazo no pueden atrasarlo o adelantarlo ni una hora.»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mcdxiv{Di: «Decidme, si Su castigo llega a vosotros de noche o de día ¿Por qué quieren apresurarlo los pecadores?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mcdxv{¿Creeréis en él cuando ya haya ocurrido?» «¿Ahora? Y vosotros queríais precipitar su llegada.»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mcdxvi{Entonces se dirá a los opresores: «¡Probad el castigo eterno! ¿Se os ha recompensado con algo distinto a lo que obtuvisteis?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mcdxvii{Querrán que les informes: «¿Es eso cierto?» Di: «Sí. Juro por mi Señor que es la Verdad y no podréis evitarlo.»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mcdxviii{Si todo aquel que ha oprimido poseyera cuanto hay en la Tierra, lo daría a cambio de su rescate. Cuando vean el castigo disimularán su remordimiento, pero serán juzgados con equidad y no serán oprimidos.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mcdxix{¿Acaso no pertenece a Dios lo que hay en los cielos y en la Tierra? ¿Acaso no es cierta la promesa de Dios? Pero la mayoría de ellos no saben.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mcdxx{Él da la vida y la muerte y hacia Él regresaréis.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mcdxxi{¡Oh, gentes! ¡Ciertamente, ha llegado a vosotros una amonestación de vuestro Señor, cura para lo que hay en vuestros pechos y guía y misericordia para los creyentes!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mcdxxii{Di: «¡Que se alegren del favor de Dios y de Su misericordia!» ¡Eso es mejor que todo lo que ellos atesoran!\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mcdxxiii{Di: «Decidme ¿Cómo es que, de la provisión que Dios hace descender para vosotros, vosotros habéis declarado alguna lícita y otra ilícita?» Di: «¿Os ha dado Dios permiso o inventáis cosas sobre Dios?»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mcdxxiv{Y, ¿Qué pensarán, quienes inventaron mentiras sobre Dios, el Día del Levantamiento? En verdad, Dios favorece a las personas, pero la mayoría de ellas no agradecen.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mcdxxv{Y no hay estado en que te encuentres, ni nada de lo que del Corán recitas, ni nada de lo que hacéis, de lo que Nosotros no seamos testigos desde que lo iniciáis. Y no escapa a tu Señor ni el peso de un átomo en la Tierra o en el cielo. Y no hay nada menor o mayor que eso que no esté consignado en una Escritura clara.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mcdxxvi{Presta atención: Los amigos de Dios no tendrán que temer ni estarán tristes.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mcdxxvii{Son aquellos que creyeron y fueron temerosos.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mcdxxviii{Para ellos hay buenas nuevas en esta vida y en la Otra. La palabra de Dios no cambia. Ese es el triunfo inmenso.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mcdxxix{¡Que no te entristezcan lo que ellos digan! En verdad, todo el poder pertenece a Dios. Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mcdxxx{Presta atención: En verdad, a Dios pertenecen quienes están en los cielos y quienes están en la Tierra. ¿Qué es lo que siguen quienes invocan a otros que equiparan a Dios? En verdad, no siguen más que suposiciones y sólo son gente que especula y fabrica mentiras.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mcdxxxi{Él es Quien ha puesto la noche para que reposéis en ella y el día para que veáis con claridad. En verdad, en ello hay señales para gente que escucha.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mcdxxxii{Dicen: «Dios ha tomado un hijo.» ¡Glorificado sea! Él se basta a Sí mismo. A Él pertenece cuanto hay en los cielos y en la Tierra. No tenéis autoridad alguna para decir eso. ¿Decís sobre Dios lo que no sabéis?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mcdxxxiii{Di: «En verdad, quienes inventan mentiras sobre Dios no triunfarán.»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mcdxxxiv{Un disfrute en este bajo mundo y luego regresarán a Nosotros. Entonces les haremos probar el castigo severo por haber estado ocultando la Verdad.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mcdxxxv{Y relátales la historia de Noé, cuando dijo a su gente: «¡Oh, pueblo mío! Si os resulta difícil de soportar mi misión espiritual y el que os recuerde las señales de Dios, yo pongo mi confianza en Dios. Decidid junto con vuestros dioses y que no os preocupe llevar a cabo lo que decidáis y ejecutad vuestra sentencia contra mí sin hacerme esperar más.»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mcdxxxvi{«Y si me dais la espalda, yo no os he pedido recompensa alguna. Mi recompensa sólo incumbe a Dios. Se me ha ordenado que sea de los musulmanes.»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mcdxxxvii{Pero ellos le tacharon de mentiroso y Nosotros le salvamos, junto a los que estaban con él, en el Arca y les hicimos herederos y ahogamos a quienes desmintieron Nuestras señales. Mira cual fue el fin de los que habían sido amonestados.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mcdxxxviii{Luego, tras él, enviamos a otros Mensajeros a sus pueblos y fueron a ellos con las pruebas claras, pero no creyeron en aquello que ya antes habían desmentido. Así es como sellamos los corazones de los transgresores.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mcdxxxix{Luego, tras ellos, enviamos a Moisés y a Aarón al Faraón y a sus notables con Nuestras señales, pero se ensoberbecieron y fueron una gente pecadora.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mcdxl{Y cuando vino a ellos la Verdad procedente de Nosotros, dijeron: «En verdad, esto es magia evidente.»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mcdxli{Moisés dijo: «¿Eso decís de la Verdad cuando llega a vosotros? ¿Es esto magia? Los magos no triunfarán.»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mcdxlii{Dijeron: «¿Habéis venido a nosotros para apartarnos de aquello que vimos hacer a nuestros padres, para conseguir vosotros dos la supremacía en el país? No os creeremos.»\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mcdxliii{Y el Faraón dijo: «¡Traedme a todos los magos expertos!»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mcdxliv{Y, cuando los magos llegaron, Moisés les dijo: «Lanzad lo que debáis lanzar.»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mcdxlv{Y cuando lo lanzaron, dijo Moisés: «Lo que habéis hecho es magia. En verdad, Dios la anulará. Dios no aprueba la conducta de los corruptores.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mcdxlvi{Y Dios, con Sus palabras, hace que triunfe la Verdad, aunque eso disguste a los pecadores.»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mcdxlvii{Y nadie tuvo fe en Moisés excepto algunos jóvenes de su pueblo, pues temían que el Faraón y sus notables les creasen problemas, ya que el Faraón poseía un gran poder en su país y era un déspota.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mcdxlviii{Y Moisés dijo: «¡Oh, pueblo mío! Si creéis en Dios y estáis sometidos a Él, poned vuestra confianza en Él.»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mcdxlix{Ellos dijeron: «Confiamos en Dios.» «¡Señor nuestro! ¡No hagas de nosotros un medio para poner a prueba al pueblo de los opresores\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mcdl{y sálvanos, por Tu misericordia, del pueblo de los que no tiene fe!»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mcdli{Y Nosotros revelamos a Moisés y a su hermano: «Proveed de casas a vuestra gente en Egipto y construid vuestras casas unas frente a otras y haced la oración y dad la buena nueva a los creyentes.»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mcdlii{Y Moisés dijo: «¡Señor nuestro, en verdad, Tú has dado a Faraón y a sus notables adornos y riquezas en esta vida para que se extravíen ¡Señor nuestro! de Tu camino!» «¡Señor nuestro! Elimina sus riquezas y endurece sus corazones para que no crean hasta que vean el castigo doloroso.»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mcdliii{Dijo Él: «Vuestra súplica ha sido aceptada. Seguid ambos el camino recto y no sigáis la senda de aquellos que no saben.»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mcdliv{Permitimos que los Hijos de Israel cruzasen el mar. Faraón y sus soldados les siguieron con ánimo hostil y violento, hasta que, al comprender que se ahogaba, dijo: «Creo en que no hay más dios que ese en el que creen los Hijos de Israel y soy de los que se someten (a Él).»\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mcdlv{«¿Ahora? ¿Cuando antes desobedeciste y fuiste de los corruptores?»\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mcdlvi{«Hoy salvaremos tu cuerpo a fin de que seas un signo para los que vengan después de ti, a pesar de que la mayoría de las personas no prestan atención a Nuestros signos.»\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mcdlvii{Y establecimos a los Hijos de Israel en un buen sitio y les proveímos de buenas cosas. Y no discreparon entre ellos hasta que les llegó el conocimiento. En verdad, tu Señor juzgará entre ellos el Día del Levantamiento sobre aquello en lo que discrepaban.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mcdlviii{Y si tienes dudas sobre aquello que hicimos descender para ti, pregunta a quienes leen la Escritura desde antes que tú. Ciertamente, ha venido a ti la Verdad procedente de tu Señor, no seas, pues, de los escépticos.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mcdlix{Y no seas de esos que desmienten las señales de Dios, pues serías de los perdedores.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mcdlx{En verdad, aquellos sobre los que el juicio de Dios ha sido tajante no creerán,\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mcdlxi{aunque vengan a ellos toda clase de señales, hasta que vean el castigo doloroso.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcdlxii{¿Por qué no hubo ciudad que creyera y se beneficiara de su fe, excepto la gente de Jonás? En cuanto creyeron apartamos de ellos el castigo degradante de esta vida y les permitimos disfrutar de ella durante un tiempo.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mcdlxiii{Y si tu Señor hubiera querido, todos los que habitan la Tierra habrían tenido fe. ¿Acaso quisieras obligar a las personas a que fueran creyentes?\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mcdlxiv{No es posible que ningún alma crea si no es con permiso de Dios y Él hace dudar a quien no razona.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mcdlxv{Di: «Observad lo que hay en los cielos y en la Tierra.» Pero las señales y las amonestaciones no benefician a la gente que no tiene fe.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mcdlxvi{¿Qué esperan entonces, sino días semejantes a los de quienes pasaron antes que ellos? Di: «¡Esperad pues! Que yo también esperaré con vosotros.»\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mcdlxvii{Entonces, salvaremos a Nuestros Mensajeros y a quienes hayan tenido fe. Ese es Nuestro deber: Salvar a los creyentes.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mcdlxviii{Di: «¡Oh, gentes! Si tenéis dudas sobre mis creencias, (sabed que) yo no adoro a quienes vosotros adoráis en lugar de Dios, sino que adoro a Dios, Aquel que os hará morir. Se me ha ordenado que sea de los creyentes.»\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mcdlxix{Y dirige tu rostro hacia la creencia pura y verdadera y no seas jamás de los que adoran falsos dioses, equiparándolos a Dios.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mcdlxx{Y no invoques, en lugar de Dios, a lo que no tiene poder para beneficiarte ni perjudicarte. Y, si lo hicieras, serías de los opresores.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mcdlxxi{Y si Dios te aflige con una desgracia, nadie podrá librarte de ella excepto Él. Y si Él desea un bien para ti, nadie puede impedir Su Favor. Él se lo concede a quien quiere de Sus siervos y Él es el Perdonador, el Misericordiosísimo con los creyentes.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mcdlxxii{Di: «¡Oh, gente! Ha venido a vosotros la Verdad procedente de vuestro Señor, así pues, quien se guíe, en verdad, se guía en beneficio propio y quien se extravíe, en verdad, se extravía para su propio perjuicio, y yo no soy vuestro tutor.»\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mcdlxxiii{¡Sigue lo que te ha sido revelado y se paciente hasta que Dios juzgue! ¡Y Él es el mejor de los jueces!\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mcdlxxiv{\basmalahes Alif, lam, ra. (Este Corán es una) Escritura cuyos versículos han sido establecidos y luego han sido explicados detalladamente por un Sabio bien informado:\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mcdlxxv{¡Que no adoréis nada ni nadie excepto a Dios! En verdad, yo soy para vosotros un amonestador y un portador de buenas nuevas de Su parte.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mcdlxxvi{¡Y que pidáis perdón a vuestro Señor y luego os volváis a Él arrepentidos! Él os permitirá disfrutar de buenas cosas durante un plazo ya establecido y otorgará Su favor a todo el que merezca ser favorecido. Pero si dan la espalda, (diles:) «¡Temo que caiga sobre vosotros el castigo de un día grande!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mcdlxxvii{Regresaréis hacia Dios y Él tiene poder sobre todas las cosas.»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mcdlxxviii{¡Ved cómo se repliegan en sus pechos queriendo ocultarse de él! ¡Ved cómo cubren sus cabezas con sus ropas! Él conoce lo que ocultan en secreto y lo que manifiestan. En verdad, Él es Quien mejor conoce lo que hay en el fondo de los pechos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mcdlxxix{No existe animal en la Tierra cuya provisión no corra a cargo de Dios y Él conoce su guarida y el lugar al que se desplaza. Todo ello está en una Escritura clara.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mcdlxxx{Y Él es Quien creó los cielos y la Tierra en seis días y puso Su trono sobre el agua, para poneros a prueba y ver quién de vosotros obra mejor. Juro que si dices: «En verdad, seréis resucitados después de la muerte», los que no creen seguro que dirán: «Eso no es más que magia evidente.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mcdlxxxi{Y juro que si retrasamos su castigo hasta un momento determinado, seguro que dirán: «¿Cuál es el impedimento?» Sabed que el día que venga a ellos nada podrá cambiarlo y se verán asediados por aquello de lo que se burlaban.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mcdlxxxii{Si hacemos que la persona disfrute una misericordia procedente de Nosotros y luego la apartamos de él, caerá en una profunda desesperación y desagradecimiento.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mcdlxxxiii{Y, si le hacemos disfrutar de una merced después de haber sufrido una dificultad, con seguridad dirá: «Se han ido de mí los males.» y se llenará de alegría y orgullo.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mcdlxxxiv{Excepto quienes son pacientes y obran rectamente. Ellos son quienes obtendrán perdón y una gran recompensa.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mcdlxxxv{Puede que tú dejases parte de lo que te ha sido revelado y que se angustie tu pecho porque dicen: «¿Por qué no se ha hecho descender para él un tesoro o ha venido con él un ángel?» En verdad, tú eres (solamente) un amonestador y Dios es responsable de todo.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mcdlxxxvi{O dicen: «Él lo ha inventado». Di: «Si es verdad lo que decís ¡Traed entonces diez capítulos semejantes a éste, inventados con ayuda de quien podáis, (y decid que son revelados) de parte de Dios!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mcdlxxxvii{Y si no pueden daros respuesta, sabed que (este Corán) ha descendido gracias al conocimiento de Dios y que no hay más dios que Él ¿Seréis entonces musulmanes?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mcdlxxxviii{A quienes deseen la vida mundanal y sus encantos, Nosotros les entregaremos en ella el resultado todo de sus obras, sin merma alguna.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mcdlxxxix{Esos son quienes no tendrán en la otra vida excepto el fuego. Habrán arruinado cuanto construyeron en ella e invalidado cuanto hicieron.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mcdxc{¿Acaso quien posee una prueba clara que procede de su Señor y quienes, de su gente, le siguen y dan testimonio de Él y, antes de él de la Escritura de Moisés, que fue un dirigente y una misericordia (son como quienes no creen)? Esos creen en él y, quienes, de entre los distintos grupos, no creen en él, tienen el Fuego como lugar de cita. Por tanto ¡No seas de los que dudan de ello! En verdad, ello es la Verdad procedente de tu Señor, pero la mayoría de la gente no cree.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mcdxci{¿Y, quién es más opresor que quien inventa mentiras sobre Dios? Esos serán llevados ante su Señor y los testigos dirán: “¡Esos son quienes dijeron mentiras sobre su Señor!” Has de saber que la maldición de Dios es para los opresores.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mcdxcii{Aquellos que ponen trabas en la senda de Dios y quisieran hacerla tortuosa y que no creen en la otra vida.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mcdxciii{Ellos no podrán escapar en la Tierra ni tendrán aparte de Dios amigos ni protectores. Se les doblará el castigo. No podían oír ni ver.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mcdxciv{Esos son quienes se han perdido a sí mismos y se apartará de ellos lo que inventaban.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mcdxcv{No hay duda de que ellos serán los que más pierdan en la otra vida.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mcdxcvi{En verdad, quienes creen y obran rectamente y son humildes ante su Señor serán quienes habiten el Paraíso. En él estarán eternamente.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mcdxcvii{Estos dos grupos son como el que es ciego y sordo y el que ve y oye ¿Acaso son iguales ambos ejemplos? ¿Por qué, entonces, no recapacitáis?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mcdxcviii{Y es cierto que Nosotros enviamos a Noé a su pueblo: «En verdad, soy para vosotros un amonestador que os habla claramente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcdxcix{Excepto a Dios, nada adoréis. Temo para vosotros el castigo de un día doloroso.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@md{Pero los notables de su pueblo, aquellos que no creyeron, dijeron: «No vemos en ti otra cosa que un hombre como nosotros, ni vemos que te sigan más que los pobres de entre nosotros, que carecen de criterio, ni vemos en vosotros nada que os haga superiores a nosotros, más bien creemos que sois unos mentirosos.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdi{Dijo: «¡Oh, pueblo mío! Decidme ¿Si me basase en una prueba clara procedente de mi Señor y Él me hubiera otorgado una misericordia venida de Él aunque sea invisible para vosotros, podríamos obligaros a aceptarla cuando vosotros la rechazáis?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdii{Y «¡Oh, pueblo mío! No os pido a cambio bienes materiales. En verdad, mi recompensa sólo incumbe a Dios. Ni voy a rechazar a quienes tienen fe. Ellos se encontrarán con su Señor. Pero veo que vosotros sois una gente ignorante.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdiii{«¡Oh, pueblo mío! ¿Quién podría protegerme de Dios si yo les rechazase? ¿Es que no reflexionáis?»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdiv{«Y no os digo que yo posea los tesoros de Dios, ni que tenga conocimiento del mundo oculto a los sentidos. Ni os digo: ‘Verdaderamente, yo soy un ángel.’ Ni diré a quienes ante vuestros ojos son despreciables que Dios no les otorgará bien alguno. Dios es Quien mejor conoce lo que hay en sus almas. Entonces, sería, verdaderamente, uno de los opresores.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdv{Ellos dijeron: «¡Oh, Noé! Nos has refutado y has discutido con nosotros en demasía, así que, tráenos aquello con lo que nos amenazas, si eres de los que dicen la verdad.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdvi{Dijo: «En verdad, Dios os lo traerá, si Él quiere, y vosotros no podréis evitarlo.»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdvii{«Ni os beneficiaría en absoluto mi consejo, aún cuando yo desease aconsejaros, si Dios quisiera extraviaros. Él es vuestro Señor y a Él regresaréis.»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdviii{O dicen: «¡Él lo ha inventado!» Di: «Si yo lo hubiese inventado mi pecado recaería sobre mí, pero yo estoy absuelto de los pecados que vosotros cometáis.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdix{Y Nosotros revelamos a Noé: «No creerán de tu pueblo más que los que ya han creído, así pues, no te disgustes por lo que hagan.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdx{Y construye el Arca ante Nuestros ojos y conforme a lo que Nosotros te hemos revelado y no Me hables más de quienes han sido opresores. En verdad, ellos serán ahogados.»\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdxi{Y se puso a construir el Arca. Y cada vez que pasaban ante él los ricos de su pueblo, se burlaban de él. Él dijo: «Si os burláis de nosotros, nosotros nos burlaremos de vosotros como vosotros os burláis.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdxii{Pronto sabréis a quién le llegará un castigo que le destruirá y sufrirá un castigo permanente.»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdxiii{Hasta que, cuando llegó Nuestra orden y el horno comenzó a hervir, le dijimos: «Carga en ella dos de cada especie, a tu familia, excepto quien fue sentenciado previamente, y a los que creyeron.» Y no habían creído con él excepto unos pocos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdxiv{Y dijo: «¡Embarcad en ella! ¡Que navegue y llegue a puerto mediante el nombre de Dios! ¡En verdad, mi Señor es perdonador, misericordiosísimo con los creyentes!»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdxv{Y navegó con ellos sobre olas como montañas. Y Noé llamó a su hijo que estaba a un lado: «¡Oh, hijito mío! ¡Embarca con nosotros y no te quedes con los que no creen!»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdxvi{El dijo: «Me refugiaré ahora mismo en una montaña que me proteja del agua.» (Noé) dijo: «Hoy no hay quien esté protegido de la orden de Dios, excepto aquel de quien Él tenga misericordia.» Y surgieron las olas entre ambos y fue de los que se ahogaron.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdxvii{Y fue dicho: «¡Oh Tierra, absorbe tu agua!» y «¡Oh cielo, escampa!» y el agua decreció y la orden fue ejecutada y se posó sobre el (monte) Yudi. Y fue dicho: «¡Qué la gente opresora sea alejada!»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdxviii{E invocó Noé a su Señor y dijo: «¡Oh Señor mío! En verdad, mi hijo es de mi familia y, en verdad, Tu promesa es la Verdad y Tú eres el más justo de los jueces.»\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdxix{Dijo (Dios): «¡Oh, Noé! En verdad, él no es de tu familia. Es un acto incorrecto. Por tanto, no me pidas sobre lo que no tienes conocimiento. Te prevengo para que no seas de los ignorantes.»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdxx{Dijo: «¡Señor mío! Me refugio en Ti de pedirte algo sobre lo que no tengo conocimiento. Y si no me perdonas y tienes misericordia de mí seré de los perdedores.»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdxxi{Se le dijo: «¡Oh, Noé! ¡Desembarca con Mi paz y Mis bendiciones para ti y para algunas comunidades de quienes están contigo! Y otras comunidades disfrutarán un tiempo y luego Nosotros haremos que les toque un castigo doloroso.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdxxii{Esto es parte de las noticias del mundo oculto a los sentidos que Nosotros hemos revelado para ti. Ni tú ni tu pueblo las conocíais antes de esto. Así pues ¡Se paciente! En verdad, el final es para quienes son temerosos.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdxxiii{Y (enviamos) a Ad a su hermano Hud. Dijo: «¡Oh, pueblo mío! Adorad a Dios. No tenéis otro dios más que Él. En verdad, vosotros sólo inventáis.»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdxxiv{«¡Oh, pueblo mío! No os pido recompensa. En verdad, mi recompensa incumbe únicamente a Quien me creó. ¿Es que no razonáis?»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdxxv{Y «¡Oh, pueblo mío! Pedid perdón a vuestro Señor y volveos arrepentidos a Él. Él enviará el cielo sobre vosotros con una lluvia abundante y añadirá fuerza a vuestra fuerza. Y no deis la espalda como pecadores.»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdxxvi{Dijeron: «¡Oh, Hud! No has venido a nosotros con pruebas claras y no abandonaremos a nuestros dioses por lo que tú dices, pues no creemos en tus palabras.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mdxxvii{Sólo decimos que alguno de nuestros dioses te ha visitado con un mal.» Él dijo: «Pongo a Dios por testigo y sed testigos vosotros de que yo repudio lo que vosotros adoráis\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mdxxviii{como si fuera Él. Así pues, reuníos todos y planead contra mí. Luego, no me hagáis esperar.»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mdxxix{«En verdad, confío en Dios, mi Señor y vuestro Señor. No existe criatura que Él no lleve agarrada por su flequillo. Verdaderamente, mi Señor está sobre un camino recto.»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mdxxx{«Así pues, si volvéis la espalda, yo ya os he transmitido aquello con lo que fui enviado a vosotros y mi Señor os sustituirá por otro pueblo distinto y no Le perjudicaréis en absoluto. En verdad, mi Señor es Quien se ocupa de proteger y cuidarlo todo.»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mdxxxi{Y, cuando llegó Nuestra orden, salvamos a Hud y a quienes con él habían creído mediante una misericordia procedente de Nosotros. Y les salvamos de un duro castigo.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mdxxxii{Esos fueron los Ad. Negaron las señales procedentes de su Señor y desobedecieron a Sus Mensajeros y siguieron (en cambio) las órdenes de cualquier tirano implacable.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mdxxxiii{Por ello serán perseguidos por una maldición en este bajo mundo y el Día del Levantamiento. ¡Ved como los Ad no creyeron en su Señor! ¡Alejados sean los Ad, el pueblo de Hud!\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mdxxxiv{Y (enviamos) al pueblo de Tamud a su hermano Salih. Dijo: «¡Oh pueblo mío! Adorad a Dios. No tenéis otro dios aparte de Él. Él os hizo surgir de la tierra y os ha establecido en ella, por tanto, pedidle perdón. Luego, volveos a Él arrepentidos. En verdad, mi Señor está cercano y responde.»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mdxxxv{Ellos dijeron: «¡Oh, Salih! Antes de esto eras una esperanza entre nosotros.» «¿Vas a prohibirnos que adoremos lo que nuestros antepasados adoraban?» «En verdad, nosotros dudamos seriamente de aquello a lo que nos invitas.»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mdxxxvi{Dijo: «¡Oh, pueblo mío! Decidme, si me basase en una prueba clara procedente de mi Señor y Él me hubiera otorgado una misericordia venida de Él ¿Quién me protegería de Dios si yo le desobedeciese? Eso sólo me perjudicaría más aun.»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mdxxxvii{Y: «¡Oh, pueblo mío! Esta camella de Dios es una señal para vosotros. Dejadla, pues, comer libremente en la tierra de Dios y no le hagáis daño, pues os alcanzaría pronto un castigo.»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mdxxxviii{Pero la desjarretaron y dijo: «¡Disfrutad de tres días en vuestros hogares! ¡Esta no es una falsa promesa!»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mdxxxix{Y, cuando llegó Nuestra orden, salvamos a Salih y a los que con él habían creído, mediante una misericordia venida de Nosotros, (del castigo) y de la desgracia de ese día. En verdad, tu Señor es El fuerte, el Poderoso.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mdxl{Y a quienes fueron opresores les alcanzó el grito y amanecieron en sus casas caídos de bruces sobre el suelo\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mdxli{como si nunca hubiesen vivido en ellas. ¡Ved como los Tamud no creyeron en su Señor! ¡Alejados sean los Tamud!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mdxlii{Y, ciertamente, Nuestros Mensajeros vinieron a Abraham con la buena nueva. Dijeron: «Paz.» Dijo él: «Paz» y no tardó en traer un ternero asado.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mdxliii{Y cuando vio que las manos de ellos no lo tocaban, pensó que eran enemigos y sintió miedo. Ellos dijeron: «No temas. Hemos sido enviados al pueblo de Lot.»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mdxliv{A su esposa, que estaba en pie, le bajó la menstruación, y le anunciamos a Isaac y, tras Isaac, a Jacob.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mdxlv{Ella dijo: «¡Ay de mí! ¿Acaso tendré un hijo siendo yo anciana y este marido mío anciano? ¡Verdaderamente, esto es una cosa sorprendente!»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mdxlvi{Ellos dijeron: «¿Te sorprende la orden de Dios con la misericordia de Dios y Sus bendiciones para vosotros, gente de la Casa? En verdad, Él es digno de alabanza, generoso.»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mdxlvii{Cuando el sentimiento de temor se hubo ido de Abraham y le llegó la buena noticia, discutió con Nosotros sobre el pueblo de Lot.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mdxlviii{En verdad, Abraham era poco inclinado a la venganza, sensible y volcado a Dios.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mdxlix{«¡Oh, Abraham! ¡Deja eso! ¡Ha llegado la orden de tu Señor y, con certeza, vendrá a ellos un castigo irrevocable!»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mdl{Y cuando Nuestros enviados vinieron a Lot él se disgustó por causa de ellos y se sintió impotente para protegerles y dijo: “Este es un día difícil.”\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mdli{Y vino a él su pueblo apremiándole y ya desde antes eran gente que cometía indecencias. Dijo: «¡Oh, pueblo mío! Esas son mis hijas. ¡Ellas son una opción más pura para vosotros! ¡Temed a Dios y no me avergoncéis con mis invitados! ¿No hay entre vosotros un hombre recto?»\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mdlii{Ellos dijeron: «Tú bien sabes que no tenemos interés en tus hijas y tú bien sabes lo que queremos.»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mdliii{Él dijo: «Ojalá tuviese fuerza frente a vosotros o pudiese apoyarme en un soporte fuerte.»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mdliv{(Los ángeles) dijeron: «¡Oh, Lot! ¡Verdaderamente, somos enviados de tu Señor! ¡Ellos no podrán llegar a ti!» «Parte en secreto con tu familia en un momento de la noche y que nadie de vosotros se dé la vuelta.» «Exceptuando a tu esposa, que sufrirá la misma suerte que ellos.» «En verdad, la cita es al amanecer. ¿Acaso el amanecer no está cercano?»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mdlv{Y, cuando llegó Nuestra orden, la volvimos de arriba abajo e hicimos llover sobre ella piedras de arcilla con orden y continuidad,\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mdlvi{marcadas por tu Señor. Y este (castigo) no está lejos de los opresores.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mdlvii{Y (enviamos) a Madyan a su hermano Shuayb. Dijo: «¡Oh, pueblo mío! ¡Adorad a Dios! ¡No tenéis otro dios aparte de Él!» «Y no deis de menos en la medida ni en el peso. En verdad, os veo en buena posición y, en verdad, temo para vosotros el castigo de un día que todo lo abarcará.»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mdlviii{Y: «¡Oh, pueblo mío! ¡Dad con equidad la medida y el peso y no defraudéis a la gente en sus cosas y no corrompáis en la Tierra!\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mdlix{Lo que queda de Dios es mejor para vosotros, si sois creyentes. Y yo no soy vuestro protector.»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mdlx{Dijeron: «¡Oh, Shuayb! ¿Acaso tu oración te ordena que abandonemos lo que nuestros antepasados adoraban o que no podamos hacer con nuestros bienes lo que queramos? Precisamente tú que, en verdad, eres el razonable, el que obra con máxima rectitud.»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mdlxi{Él dijo: «¡Oh, pueblo mío! ¿Acaso habéis considerado si yo me baso en una prueba evidente venida de mi Señor y que Él me ha provisto de un buen sustento?» «Yo no quiero contrariaros con aquello que os prohíbo. No quiero más que corregir lo que estaba mal en la medida de mis posibilidades, pues mi éxito depende exclusivamente de Dios. En Él pongo mi confianza y hacia Él me vuelvo.»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mdlxii{Y: «¡Oh, pueblo mío! ¡Que vuestra enemistad y oposición a mí no sea causa de que os aflijan los mismos males que afligieron al pueblo de Noé o al pueblo de Hud o al pueblo de Salih!» «Y lo que le sucedió al pueblo de Lot no está muy distante de vosotros.»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mdlxiii{«Pedid perdón a vuestro Señor. Luego, volveos a Él arrepentidos. En verdad, mi Señor es misericordiosísimo con los creyentes, constante en Su amor.»\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mdlxiv{Ellos dijeron: «¡Oh, Shuayb! No comprendemos mucho de lo que dices y, la verdad, vemos que entre nosotros eres débil. Si no fuera por tu pequeña tribu te habríamos apedreado. Tú no tienes poder sobre nosotros.»\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mdlxv{Él dijo: «¡Oh, pueblo mío! ¿Acaso mi pequeña tribu tiene más poder sobre vosotros que Dios y por eso Le habéis dado la espalda, olvidándoos de Él? ¡En verdad, mi Señor abarca cuanto hacéis!»\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mdlxvi{«Haced lo que podáis hacer que yo también actuaré. Pronto sabréis a quién le ha de llegar un castigo que le avergüence y humille y quién es mentiroso. Y esperad vigilantes, que yo también estaré a la espera con vosotros»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mdlxvii{Y, cuando llegó Nuestra orden, salvamos a Shuayb y a quienes con él habían tenido fe, mediante una misericordia venida de Nosotros y a quienes habían sido opresores les alcanzó el Grito y amanecieron en sus casas caídos de bruces, muertos.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mdlxviii{Como si nunca hubieran vivido en ellas. ¡Alejados sean los Madyan igual que fueron alejados los Tamud!\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mdlxix{Y es cierto que enviamos a Moisés con Nuestras señales y con un poder evidente\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mdlxx{al Faraón y a sus cortesanos. Pero ellos siguieron la orden del Faraón y la orden del Faraón no era correcta.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mdlxxi{Irá delante de su pueblo el Día del Levantamiento y les llevará a beber al borde del Fuego. ¡Qué mala bebida para beber!\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mdlxxii{Serán perseguidos por una maldición (divina) en esta (vida) y en el Día del Levantamiento. ¡Qué mal regalo recibirán!\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mdlxxiii{Estas que te hemos relatado son noticias de algunas ciudades. Alguna de ellas aun están en pie y otras han sido arrasadas.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mdlxxiv{Y no fuimos Nosotros quienes les oprimimos sino que ellos se oprimieron a sí mismos. Y los dioses que invocaban aparte de Dios no les beneficiaron en nada cuando llegó la orden de tu Señor. Sólo incrementaron su ruina.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mdlxxv{Así es el castigo de tu Señor cuando castiga a una ciudad que ha sido opresora. En verdad, Su castigo es doloroso, severo.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mdlxxvi{En verdad, en ello hay señales para quien tema el castigo de la otra vida. Ese día será congregada toda la humanidad y será un día del que todos serán testigos.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mdlxxvii{Y no lo retrasaremos más que hasta un plazo establecido.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mdlxxviii{Viene un día en el que nadie hablará sino con Su permiso. Unos serán desgraciados y otros afortunados.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mdlxxix{Los desgraciados estarán en el Fuego. Allí sólo tendrán gemidos y lamentos.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mdlxxx{Estarán eternamente allí mientras duren los cielos y la Tierra, a no ser que tu Señor quiera otra cosa. En verdad, tu Señor hace lo que quiere.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mdlxxxi{Y los afortunados estarán en el Paraíso eternamente, mientras duren los cielos y la Tierra, a no ser que tu Señor quiera otra cosa. Un regalo que no se interrumpirá.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mdlxxxii{No tengas dudas, pues, de lo que ellos adoran. No adoran sino lo que adoraban sus padres desde antes. En verdad, que les daremos lo que les corresponde sin merma alguna.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mdlxxxiii{En verdad, dimos a Moisés la Escritura [Sagrada] y se discrepó sobre ella y si no hubiese sido por una decisión previa de tu Señor habríamos juzgado entre ellos. Y, en verdad, aún tienen dudas sobre ella, dudas mal intencionadas.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mdlxxxiv{En verdad, tu Señor recompensará plenamente a cada cual por sus obras. En verdad, Él está bien informado de lo que ellos hacen.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mdlxxxv{Por tanto ¡Mantente firme como te ha sido ordenado y también los que se han vuelto hacia Dios contigo y no os endioséis! En verdad, Él observa lo que hacéis.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mdlxxxvi{Y no os inclinéis hacia los opresores pues os alcanzaría el Fuego y, como no tenéis aparte de Dios quien os proteja, no seríais auxiliados.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mdlxxxvii{¡Haced la oración de los dos extremos del día y en las horas de la noche cercanas al día! En verdad, las buenas obras borran las malas. Esto es una amonestación para la gente que recuerda (a Dios)\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mdlxxxviii{Y se paciente, pues, en verdad, Dios no permite que se pierda la recompensa de los que realizan buenas acciones.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mdlxxxix{¿Por qué no hubo en las generaciones anteriores a vosotros gente sabia que se opusiese a la corrupción en la Tierra, excepto unos pocos a los cuales Nosotros pusimos a salvo, y los opresores siguieron en la lujuria y la opulencia y fueron pecadores?\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mdxc{Y tu Señor no destruye una ciudad injustamente cuando sus gentes corrigen lo que está mal.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mdxci{Y, si tu Señor hubiera querido, habría hecho de las gentes una sola comunidad. Y no dejarán de discrepar entre ellos\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mdxcii{excepto aquellos de quienes Dios ha tenido misericordia. Y por eso les ha creado. Y la palabra de tu Señor es terminante: «He de llenar el Infierno de hombres y genios, todos juntos.»\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mdxciii{Todas estas noticias que te contamos de los profetas son para fortalecer con ello tu corazón y con ellas llega a ti la Verdad y una amonestación y un recordatorio para los creyentes.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mdxciv{Y di a quienes no son creyentes: «¡Haced aquello que tengáis poder para hacer que yo también actuaré\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mdxcv{y esperad vigilantes que yo también esperaré!»\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mdxcvi{Y a Dios pertenece lo que en los cielos y en la Tierra no se puede percibir con los sentidos y hacía Él regresan todos los asuntos. Así pues, adoradle y depositad vuestra confianza en Él, pues vuestro Señor no está desatento a lo que hacéis.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mdxcvii{\basmalahes Alif, lam, ra. Estos son los versículos de la Escritura clara.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdxcviii{En verdad, la hemos hecho descender como una recitación en árabe, quizás así razonéis.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdxcix{Con este Corán que te revelamos, Nosotros te vamos a relatar la mejor de las historias y, antes de ello, la desconocías.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdc{Cuando José dijo a su padre: «¡Oh, padre mío querido! He visto en un sueño once estrellas y el Sol y la Luna. ¡Los he visto postrándose ante mí!»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdci{Dijo: «¡Oh, hijito! No cuentes tu visión a tus hermanos, pues tramarán algo contra ti. En verdad, Satanás es un enemigo declarado de las personas.»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdcii{«Y así es como tu Señor te escogerá y te enseñará a interpretar el significado verdadero de los acontecimientos y confirmará Su bendición sobre ti y sobre la familia de Jacob, igual que anteriormente la confirmó sobre tus antepasados Abraham e Isaac.» «En verdad, tu Señor todo lo conoce, es sabio.»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdciii{Ciertamente, en José y sus hermanos hay señales para quienes [se] preguntan.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdciv{Cuando ellos dijeron: «José y su hermano son más queridos por nuestro padre que nosotros, siendo nosotros un grupo (mayor). ¡Verdaderamente, nuestro padre está en un extravió evidente!»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdcv{«¡Matad a José o abandonadlo en una tierra alejada para que, así, vuestro padre sólo os preste atención a vosotros! Y, después de eso, sed gente recta.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdcvi{Uno de ellos dijo: «¡No matéis a José! Dejadlo en el fondo del aljibe para que lo encuentre algún viajero, si es que hacéis algo.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdcvii{Dijeron: «¡Oh, padre nuestro! ¿Por qué no nos confías a José? Nosotros somos buenos consejeros para él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdcviii{Envíale con nosotros mañana. Que pasee y juegue y nosotros le cuidaremos.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdcix{Dijo: «Me preocupa que os lo llevéis y temo que se lo coma el lobo en un descuido vuestro.»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdcx{Ellos dijeron: «Si el lobo se lo comiese, siendo nosotros un grupo grande, entonces sí que seríamos unos desgraciados.»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdcxi{Y, cuando se lo llevaron con ellos y se pusieron de acuerdo en ponerle en el fondo del aljibe, Nosotros le revelamos: «Ciertamente, tú les informarás de este asunto y ellos no se darán cuenta.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdcxii{Y ellos regresaron a su padre al anochecer llorando.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdcxiii{Dijeron: «¡Oh, padre nuestro! Nos fuimos a hacer carreras y dejamos a José junto a nuestras cosas y se lo comió el lobo. No nos creerás, pero decimos la verdad.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdcxiv{Y trajeron su camisa manchada de sangre falsa. Él dijo: «[No es así] Sino que vuestras almas os han susurrado algún asunto. Así pues, ¡Paciencia hermosa! Y en Dios busco ayuda ante lo que decís.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdcxv{Y llegó una caravana y enviaron a su aguador que sumergió su cubo. Dijo: «¡Buena noticia! Es un joven.» Y lo ocultaron como una mercancía. Y Dios sabía bien lo que hacían.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdcxvi{Y lo vendieron barato, por unas pocas monedas, sin prestarle mucha atención.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdcxvii{Y el egipcio que le compró dijo a su esposa: «Facilítale un buen alojamiento, puede que nos beneficie o que lo adoptemos como hijo.» Así fue como establecimos a José en aquella tierra y para enseñarle a interpretar el verdadero significado de los acontecimientos. Y Dios siempre obtienen la victoria sobre lo que ordena, pero la mayoría de la gente no sabe.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdcxviii{Y cuando llegó a la pubertad le dimos sabiduría y conocimiento. Así es como recompensamos a los que hacen el bien.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdcxix{Y la señora de la casa en la que él estaba le acosó. Cerró las puertas y dijo: «¡Ven!» Él dijo: «¡Dios me proteja! En verdad, Él es mi Señor y me ha dado un buen alojamiento. ¡En verdad, los opresores no triunfarán!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdcxx{Ciertamente, ella le deseaba y él la hubiese deseado sino hubiera visto en ello una prueba de su Señor. Así hicimos para apartar de él el mal y la indecencia. En verdad, él era de Nuestros siervos puros.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdcxxi{Y corrieron ambos hacia la puerta y ella rasgó la camisa de él por detrás y junto a la puerta encontraron al esposo de ella. Ella dijo: «¿Qué recompensa merece quien quería un mal para tu familia, excepto que sea encarcelado o que se le aplique un castigo doloroso?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdcxxii{Él dijo: «Ella me acosó.» Y un miembro de la familia de ella dijo: «Si la camisa de él está desgarrada por delante, ella dice la verdad y él es un mentiroso\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdcxxiii{y si su camisa está desgarrada por detrás, ella miente y él dice la verdad.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdcxxiv{Y cuando vio su camisa rasgada por detrás dijo: «En verdad, esto es una treta propia de vosotras. En verdad, vuestras tretas son enormes.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdcxxv{«José ¡No des importancia a esto! Y tú, mujer ¡Pide perdón por tu pecado! ¡En verdad, has cometido un error!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdcxxvi{Un grupo de mujeres de la ciudad dijo: «La mujer del poderoso acosó a su mancebo. Está apasionadamente enamorada. En verdad, la vemos en un extravío evidente.»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdcxxvii{Y cuando ella oyó sus cotilleos las hizo llamar y preparó para ellas un lugar en el que sentarse cómodamente y dio a cada una de ellas un cuchillo y le dijo: «Sal donde ellas están.» Y cuando ellas le vieron se quedaron absortas y se cortaron en las manos y dijeron: «¡Santo Dios! ¡Esto no es un hombre, sino un ángel precioso!»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdcxxviii{Ella dijo: «Pues éste es aquél por el cual me criticabais.» «Yo le acosé, pero él se contuvo. Pero si no hace lo que yo le ordeno, será, ciertamente, encarcelado y humillado.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdcxxix{Él dijo: «¡Dios mío! ¡Más quiero la cárcel que aquello a lo que ellas me invitan! Si Tu no cambias los planes que tienen para mí, cederé ante ellas y seré de los ignorantes.»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdcxxx{Su Señor respondió a su súplica y le protegió de los planes de ellas. En verdad, Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdcxxxi{Luego, les pareció, a pesar de haber visto las señales, que debían encarcelarle por un tiempo.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdcxxxii{Y con él entraron en la prisión dos jóvenes. Uno de ellos dijo: «En verdad, me he visto en un sueño prensando uvas para hacer vino.» Y dijo el otro: «En verdad, me he visto en un sueño llevando pan sobre mi cabeza y los pájaros comían de él.» «¡Infórmanos que significan! En verdad, vemos que tú eres una persona virtuosa.»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdcxxxiii{El dijo: «Antes de que os llegue la comida que está preparada para vosotros os habré informado a ambos de lo que significan. Esto forma parte de las cosas que mi Señor me ha enseñado. En verdad, yo he dejado de lado las creencias de una gente que no tiene fe en Dios ni en la Otra vida\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdcxxxiv{y he seguido las creencias de mis padres, Abraham e Isaac y Jacob.» «Nosotros no hemos asociado nada a Dios. Eso es por un favor de Dios para nosotros y para la gente, pero la mayoría de la gente no es agradecida.»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdcxxxv{«¡Oh, compañeros de prisión! ¿Son mejor diferentes dioses o Dios, El Único, el Victorioso?»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdcxxxvi{«Aparte de Él no adoráis más que nombres que vosotros mismos y vuestros padres habéis creado y para los que Dios no ha hecho descender ningún poder.» «En verdad, el juicio sólo pertenece a Dios. Él ha ordenado que no adoréis nada excepto a Él.» «Esa es la creencia establecida, pero la mayoría de la gente no tiene conocimiento.»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdcxxxvii{«¡Oh, compañeros de prisión! Uno de vosotros escanciará vino a su señor pero el otro será crucificado y los pájaros comerán de su cabeza.» «Aquello sobre lo que ambos me pedíais opinión es un asunto que ya ha sido decretado.»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdcxxxviii{Y dijo al que pensaba que se salvaría de los dos: «¡Recuérdame ante tu señor!» Pero Satanás le hizo olvidarse de recordárselo a su señor y (José) permaneció en prisión varios años.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdcxxxix{Y el rey dijo: «En verdad, he visto en un sueño siete vacas gordas que eran comidas por siete flacas y siete espigas verdes y otras tantas secas.» «¡Oh, cortesanos! ¡Dadme vuestra opinión sobre mi sueño, si es que sabéis interpretar los sueños!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdcxl{Dijeron: «Son un puñado de pesadillas y nosotros no sabemos interpretar las pesadillas.»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdcxli{Y el que se salvó de los dos, que recordó después de un tiempo, dijo: «Yo os informaré lo que significa. ¡Dejadme ir!»\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdcxlii{«José ¡Oh, el verídico! Danos tu opinión sobre siete vacas gordas que son comidas por siete flacas y siete espigas verdes y otras tantas secas, para que yo pueda volver a la gente y que ellos sepan.»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdcxliii{Dijo: «Sembraréis siete años seguidos. Cuando cosechéis, dejadlo en la espiga excepto un poco de lo que comeréis.»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdcxliv{«Después de eso, vendrán siete años duros en los que comeréis lo que habíais guardado previamente para ellos, excepto un poco que preservaréis.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdcxlv{«Después, vendrá tras eso un año en el que la gente será favorecida, lloverá en abundancia y podrá prensar.»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdcxlvi{El rey dijo: «¡Traedlo a mí!» Y cuando llegó el mensajero, él dijo: «Regresa a tu señor y pregúntale sobre las mujeres que se cortaron las manos. En verdad, mi Señor conoce bien lo que ellas planearon.»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdcxlvii{Dijo: «¿Qué os proponíais vosotras cuando acosasteis a José?» Ellas dijeron: «¡Santo Dios! ¡No conocemos nada malo de él!» Y la mujer del poderoso dijo: «¡Ahora se ha aclarado la verdad! ¡Yo le acosé y él dice la verdad!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdcxlviii{«Esto es para que él sepa que yo no le traicioné en su ausencia y que Dios no guía los planes de los traidores.»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdcxlix{«Yo no disculpo a mi alma. En verdad, el alma ordena insistentemente el mal, excepto en lo que mi Señor tiene misericordia. En verdad, mi Señor es perdonador, misericordiosísimo con los creyentes.»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mdcl{Y dijo el rey. «¡Traedlo a mí! ¡Le haré mi favorito!» y cuando habló con él, dijo: «En verdad, hoy (has encontrado) entre nosotros un puesto de honor y de confianza.»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mdcli{Él dijo: «Ponme al frente de los almacenes del país. En verdad, soy un buen guardián y tengo conocimiento.»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mdclii{Así es como dimos a José una posición en la Tierra que le permitía establecerse donde quisiera. Nosotros otorgamos Nuestra misericordia a quien queremos y no dejamos que se pierda la recompensa de quienes hacen el bien.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mdcliii{Y, sin duda, para quienes han creído y han sido temerosos la recompensa de la otra vida es mejor aún.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mdcliv{Y vinieron los hermanos de José y se presentaron ante él y él les reconoció pero ellos no le reconocieron.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mdclv{Y cuando les hubo suministrado sus provisiones, dijo: «Traedme a vuestro hermano de padre. ¿No veis como os doy la medida justa y soy el mejor de los anfitriones?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mdclvi{Y si no venís a mí con él, no obtendréis de mi más medidas ni os acercaréis a mí.»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mdclvii{Ellos dijeron: «Se lo pediremos a su padre con insistencia y, en verdad, lo haremos.»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mdclviii{Él dijo a sus mancebos: «Ponedles los objetos con los que han pagado en sus sacos, puede que los reconozcan cuando regresen a su familia, quizás así regresen.»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mdclix{Y, cuando regresaron a su padre, dijeron: «¡Oh, padre nuestro! ¡Nos han negado la medida! Envía, pues, con nosotros a nuestro hermano para que podamos obtener las medidas y nosotros, ciertamente, le protegeremos.»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mdclx{Él dijo: «¿He de confiárosle como os confié a su hermano anteriormente? Pero Dios es mejor protector y el más misericordioso de los misericordiosos.»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mdclxi{Y cuando abrieron su cargamento encontraron que les habían devuelto los objetos con los que habían pagado. Dijeron: «¡Oh, padre nuestro! ¿Qué más podemos desear? Estos son los objetos con los que habíamos pagado, que nos han sido devueltos. Obtendremos provisiones para nuestra familia y protegeremos a nuestro hermano y obtendremos una carga mayor, pues ésta es una carga pequeña.»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mdclxii{Dijo: «No le enviaré con vosotros hasta que me aseguréis solemnemente ante Dios que me lo traeréis, excepto que vuestra vida esté en peligro.» Y cuando se lo aseguraron, dijo: «Dios es testigo de lo que decimos.»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mdclxiii{Y dijo: «¡Oh, hijos míos! No entréis por una misma puerta. Entrad por diferentes puertas. Y no puedo favoreceros en nada frente a Dios. En verdad, el juicio pertenece solamente a Dios. En Él confió. Que quienes confían confíen en Él.»\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mdclxiv{Y aunque entraron como su padre les había ordenado eso no les sirvió de nada frente a Dios, pero se cumplió el deseo del alma de Jacob. Y, en verdad, él poseía un conocimiento que Nosotros le habíamos enseñado, que la mayoría de la gente no conoce.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mdclxv{Y cuando entraron ante José, acercó a sí a su hermano (y le) dijo: «En verdad, yo soy tu hermano. No estés triste ni enfadado por lo que hicieron.»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mdclxvi{Y, cuando les suministraba sus provisiones, puso la copa en la carga de su hermano. Luego, un pregonero voceó: «¡Eh vosotros, los de la caravana! ¡Sois unos ladrones!»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mdclxvii{Volviéndose hacia ellos, dijeron: «¿Qué echáis a faltar?»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mdclxviii{Ellos dijeron: «Echamos a faltar la copa del rey y a quien la traiga le daremos la carga de un camello. Yo lo garantizo.»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mdclxix{Dijeron: «¡Lo juramos por Dios! Vosotros sabéis con certeza que nosotros no hemos venido a corromper en esta tierra y que no somos ladrones.»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mdclxx{Ellos dijeron: «¿Cuál será el castigo si estáis mintiendo?»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mdclxxi{Dijeron: «El pago de quien lo tenga en sus alforjas será él mismo. Así castigamos a los opresores.»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mdclxxii{Y comenzó por las alforjas de ellos antes que por la alforja de su hermano, luego lo sacó de la alforja de su hermano. Eso fue lo que Nosotros le sugerimos a José. No podía retener a su hermano, conforme a la ley del rey, excepto si Dios quería. Nosotros elevamos el rango de quien queremos. Por encima de todo el que posee conocimiento hay otro que sabe más.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mdclxxiii{Ellos dijeron: «Si ha robado, ya robó un hermano suyo antes.» Pero José lo guardó en secreto para sí mismo y no se lo reveló a ellos. Dijo: «¡Vosotros os encontráis en peor situación y Dios es Quien mejor conoce lo que alegáis!»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mdclxxiv{Ellos dijeron: «¡Oh, poderoso! Él tiene un padre muy anciano, toma a uno de nosotros en su lugar. En verdad, nosotros vemos que tú eres de los que hacen el bien.»\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mdclxxv{Él dijo: «Dios no permita que apresemos a nadie excepto a aquél a quien hemos encontrado nuestro objeto pues, entonces, seríamos injustos.»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mdclxxvi{Y cuando perdieron la esperanza sobre él se retiraron a deliberar en voz baja. El mayor de ellos dijo: «¿Acaso no sabéis que vuestro padre os tomó un solemne juramento por Dios y, anteriormente, faltasteis a vuestras obligaciones con José? Yo no abandonaré esta tierra hasta que mi padre no me dé permiso o Dios disponga algo para mí, pues Él es el mejor de los jueces.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mdclxxvii{Regresad a vuestro padre y decid: ‘¡Oh, padre nuestro! ¡Tu hijo ha robado! No damos testimonio sino de lo que sabemos. No estamos informados de lo que está oculto a los sentidos.»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mdclxxviii{«Pregunta en la ciudad en la que estuvimos y en la caravana con la que vinimos. En verdad, somos sinceros.»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mdclxxix{Él dijo: «[No es así] Sino que vuestras almas os han susurrado algún asunto. Así pues, ¡Paciencia hermosa! Puede que Dios me los devuelva a todos. En verdad, Él es Quien todo lo conoce, el Sabio.»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mdclxxx{Y apartándose de ellos dijo: «¡Oh, qué tristeza por José!» Y sus ojos se volvieron blancos de la tristeza, pero reprimió su exasperación.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mdclxxxi{Ellos dijeron: «¡Por Dios! Tanto recuerdas a José que enfermarás gravemente o morirás.»\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mdclxxxii{Él dijo: «Sólo me quejo de mi dolor y mi tristeza ante Dios. Y sé, procedente de Dios, lo que vosotros no sabéis.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mdclxxxiii{¡Hijos míos! Id y buscar información acerca de José y de su hermano y no desesperéis de la misericordia de Dios, que de la misericordia de Dios solamente desespera la gente que no tiene fe.»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mdclxxxiv{Y cuando entraron ante él dijeron: «¡Oh, poderoso! A nosotros y a nuestra familia nos ha tocado la desgracia y hemos traído una mercancía poco valiosa. ¡Danos la medida completa y se generoso con nosotros En verdad, Dios recompensa a quienes son generosos!»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mdclxxxv{Él dijo: «¿Sabéis lo que hicisteis a José y a su hermano, en vuestra ignorancia?»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mdclxxxvi{Ellos dijeron: «¿Eres tú realmente José?» Él dijo: «¡Yo soy José y éste es mi hermano! Dios nos ha favorecido. En verdad, si uno es temeroso y paciente, Dios no permite que se pierda la recompensa de quienes hacen el bien.»\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mdclxxxvii{Ellos dijeron: «¡Por Dios! ¡En verdad, Dios te ha preferido a nosotros y nosotros estuvimos equivocados!»\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mdclxxxviii{Él dijo: «¡Hoy nada se os reprochará! ¡Dios os ha perdonado! Él es el más misericordioso de los misericordiosos.»\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mdclxxxix{«Llevad está camisa mía y ponedla sobre el rostro de mi padre, recuperará la vista. Y traedme a toda vuestra familia.»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mdcxc{Y, cuando la caravana se alejo, dijo el padre de ellos: «Percibo el olor de José, si no creéis que chocheo.»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mdcxci{Ellos dijeron: «¡Por Dios! ¡Vuelves a tu antiguo extravío!»\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mdcxcii{Cuando el portador de la buena nueva llegó, la puso sobre su rostro y él recuperó la vista. Él dijo: «¿No os dije que yo conozco, procedente de Dios, lo que vosotros no conocéis?»\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mdcxciii{Ellos dijeron: «¡Oh, padre nuestro! Perdona nuestros pecados. ¡Verdaderamente, estábamos equivocados!»\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mdcxciv{Él dijo: «Pediré a mi Señor que os perdone. En verdad, Él es el Perdonador, el Misericordiosísimo con los creyentes.»\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mdcxcv{Y cuando entraron ante José acercó a él a sus padres y les dijo: «¡Entrad en Egipto que, si Dios quiere, estaréis a salvo\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mdcxcvi{Y subió a sus padres al trono y [todos] cayeron prosternados ante él y él dijo: «¡Oh, padre mío! Éste es el significado del sueño que vi anteriormente. Mi Señor ha hecho que se verifique y me favoreció cuando me sacó de la prisión y os trajo del desierto, después de haber destruido Satanás la relación entre yo y mis hermanos.» «En verdad, mi Señor es sutil en lo que desea. En verdad, Él es Quien todo lo conoce, el Sabio.»\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mdcxcvii{«¡Señor mío! ¡Tú me has dado parte del gobierno y me enseñaste la interpretación de los acontecimientos! ¡Creador de los cielos y de la Tierra! Tú eres mi protector en esta vida y en la otra. ¡Hazme morir sometido a Ti y ponme junto a los justos!»\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mdcxcviii{Estas son algunas noticias del mundo oculto a los sentidos que Nosotros te hemos revelado, pues Tú no estabas junto a ellos cuando se reunieron y planearon lo que harían.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mdcxcix{Y la mayoría de las personas, por mucho que lo intentes, no creerán.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mdcc{Y tú no les pides una recompensa por ello. En verdad, él no es más que un recuerdo para todo el mundo.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mdcci{¡Cuántas señales hay en los cielos y en la Tierra ante las que pasan y se apartan de ellas!\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mdccii{¡La mayoría de ellos no creen en Dios excepto para asociar a Él falsos dioses!\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mdcciii{¿Acaso están a salvo de que llegue a ellos una sombra del castigo de Dios cubriéndoles o que les llegue la hora de manera imprevista y repentina?\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mdcciv{Di: «Éste es mi camino. Llamo hacia Dios, con una profunda visión de las cosas, a todo el mundo. Yo y quienes me siguen.» «Y ¡Glorificado sea Dios! no soy de los que adoran falsos dioses junto a Dios.»\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mdccv{Y antes de ti no enviamos sino a hombres de las mismas ciudades, a los cuales dimos la revelación. ¿Por qué no viajan por la Tierra y observan cual fue el final de quienes les precedieron? Y para quienes son temerosos de Dios la morada de la otra vida es mejor. ¿Acaso no razonáis?\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mdccvi{Hasta que, cuando los Mensajeros perdieron la esperanza y pensaron que habían sido engañados, llegó a ellos Nuestra ayuda y salvamos a quien Nosotros quisimos. Y Nuestro castigo no abandonará a la gente pecadora.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mdccvii{En sus historias hay una enseñanza para quienes están dotados de intelecto. No son hechos inventados sino que confirma lo que ellos ya tenían en sus manos y explica detalladamente todas las cosas y es una guía y una misericordia para las personas creyentes.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mdccviii{\basmalahes Alif, lam, mim, ra. Esos son los versículos de la Escritura [Sagrada]. Lo que ha sido hecho descender a ti, procedente de tu Señor, es la Verdad, pero la mayoría de la gente no tiene fe.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdccix{Dios es quien elevó los cielos sin columnas que podáis ver, después se instaló en el Trono. Y sometió al Sol y a la Luna. Cada uno se desplaza durante un tiempo establecido. Él dirige los asuntos y explica detalladamente las señales, quizás así tengáis certeza de que os encontraréis con vuestro Señor.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdccx{Y Él es quien extendió la Tierra y puso en ella firmes montañas y ríos y puso en ella, de todas las frutas, una pareja. Cubre el día con la noche. En verdad, en ello hay señales para una gente que reflexiona.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdccxi{Y en la tierra hay parcelas colindantes y viñedos y plantaciones de cereales y palmeras de un tronco o de varios, regado (todo) con una misma agua, pero favorecemos unos alimentos sobre otros. En verdad, en ello hay señales para la gente que razona.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdccxii{Y si te sorprendes, sorprendente es lo que ellos dicen: «¿Acaso cuando seamos polvo seremos creados de nuevo?» Esos son los que no creen en su Señor y quienes llevan sus cuellos encadenados y son la gente del Fuego. En él permanecerán eternamente.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdccxiii{Te piden que apresures lo malo antes que lo bueno aunque, antes de ellos, han tenido lugar castigos ejemplares y, en verdad, tu Señor puede perdonar a los hombres a pesar de sus injusticias. Y, en verdad, tu Señor es duro castigando.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdccxiv{Y, aquellos que no creen dicen: «¿Por qué no se hace descender sobre él una señal de su Señor?» En verdad, tú eres un amonestador y para todo pueblo hay un guía.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdccxv{Dios sabe lo que porta toda hembra y lo que merma en los senos maternos y lo que incrementa. Y todo junto a Él tiene una medida.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdccxvi{Él es Quien conoce lo oculto y lo manifiesto, el Grande, Quien está por encima de todo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdccxvii{Da igual que alguno de vosotros hable en secreto o en público o que se esconda en la noche o se muestre en el día,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdccxviii{tiene guardianes por delante y por detrás que le protegen por orden de Dios. En verdad, Dios no cambia la situación de un pueblo mientras ellos no cambien lo que hay en sus almas. Y cuando Dios quiere el mal para un pueblo nadie puede impedirlo y no tendrán amigo o protector, aparte de Él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdccxix{Él es Quien os hace ver el relámpago con miedo y admiración y Quien hace surgir las nubes cargadas [de agua].\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdccxx{El trueno con sus alabanzas y los ángeles con su temor Le glorifican y Él envía los rayos con los que alcanza a quien quiere. Ellos discuten sobre la existencia de Dios y Él posee un poder ilimitado.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdccxxi{La súplica verdadera es la que se dirige a Él y aquellos a quienes invocan en lugar de Él no les responderán nada. Como el que extiende las palmas de sus manos hacia el agua para llevarla a su boca y no lo consigue. La súplica de los que no creen no es más que extravío.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdccxxii{Ante Dios se postran quienes están en los cielos y en la Tierra, así como sus sombras, de buen grado o a disgusto, al comienzo y al final del día.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdccxxiii{Di: «¿Quién es el Señor de los cielos y la Tierra?» Di: «Dios.» Di: «¿Por qué, entonces, habéis tomado, aparte de Él, amigos y protectores que no tienen capacidad de beneficiarse o perjudicarse a sí mismos?» Di: «¿Son semejantes el ciego y el que ve o se asemejan las tinieblas y la luz?» ¿Acaso han puesto junto a Dios socios que hayan creado como crea Él y lo que estos crean les parece semejante a lo que Él ha creado? Di: «Dios es el Creador de todo y Él es el Único, el Dominante.»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdccxxiv{«Él hace descender de los cielos agua que fluye por los valles según la capacidad que poseen y la corriente lleva espuma flotando; semejante a la espuma que sale de lo que se pone sobre el fuego para fabricar adornos o instrumentos.» Así compara Dios la Verdad con la falsedad. La espuma desaparece, pero lo que es beneficioso para la gente permanece en la Tierra. Así es como pone Dios los ejemplos.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdccxxv{Quienes han respondido a (la llamada de) su Señor obtendrán el bien y quienes no Le han respondido, aunque poseyeran todo lo que hay en la Tierra y otro tanto, no les serviría de rescate. Su cuenta les saldrá mal y su morada será el Infierno ¡Que mal lugar de reposo!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdccxxvi{¿Acaso quien sabe que lo que ha descendido a ti procedente de tu Señor es la Verdad es igual que el que está ciego? En verdad, sólo se dejan amonestar los dotados de inteligencia,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdccxxvii{aquellos que cumplen con el pacto de Dios y que no rompen la promesa\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdccxxviii{y aquellos que mantienen unido lo que Dios ha ordenado mantener unido y temen a su Señor y temen que su cuenta salga mal.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdccxxix{Y aquellos que son pacientes, buscando contemplar el rostro de su Señor y que hacen la oración y que reparten, secreta o públicamente, de aquello que les proveemos y que, con el bien, rechazan el mal. Para ellos es la última morada:\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdccxxx{Los Jardines del Edén, en los que entrarán con aquellos de sus antepasados y esposas y descendientes que fueron rectos y los ángeles vendrán a ellos entrando por todas las puertas:\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdccxxxi{«¡Paz sobre vosotros por haber sido pacientes! ¡Qué excelente es la última morada!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdccxxxii{Y para aquellos que violan en contrato de Dios después de haberlo pactado y cortan lo que Dios ordenó que se mantuviera unido y corrompen la Tierra, la maldición, y para ellos la mala morada.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdccxxxiii{Dios concede la provisión a quien Él quiere y la quita a quien Él quiere. Y ellos se regocijaron de esta vida, cuando esta vida no es más que un breve disfrute.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdccxxxiv{Y aquellos que no creen dicen: «¿Por qué no se ha hecho descender sobre él una señal procedente de su Señor?» Di: «En verdad, Dios extravía a quien quiere y guía hacia Él a quien se arrepiente,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdccxxxv{aquellos que creen y tienen sus corazones tranquilos.» ¿Acaso no es con el recuerdo de Dios como se tranquilizan los corazones?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdccxxxvi{Quienes creen y obran rectamente tendrán la mejor vida y el mejor final.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdccxxxvii{Así mismo, te hemos enviado a una comunidad antes de la cual pasaron otras comunidades, para que les recites lo que Nosotros te hemos revelado, pero ellos no creen en el Misericordioso. Di: «Él es mi Señor. No hay dios sino Él. En Él confío y a Él me vuelvo arrepentido.»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdccxxxviii{Y [no creerían] aunque con este Corán caminaran las montañas o se partiera en pedazos la Tierra o hablasen los muertos. Pero a Dios pertenecen todos los asuntos. ¿Acaso los que creen no saben que si Dios hubiera querido habría guiado a todos los seres humanos? Y la desgracia no cesará de afligir a quienes no creen, o cerca de sus hogares, por lo que han hecho, hasta que llegue el castigo acordado por Dios. En verdad, Dios no incumple lo prometido.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdccxxxix{Y, ciertamente, se burlaron de los Mensajeros anteriores a ti, así pues, di un plazo a los que no creían y luego les atrapé y ¡Cómo fue Mi castigo!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdccxl{¿Acaso Quien vigila los actos de cada alma (es como quien no posee ese poder)? Pero ellos atribuyen socios a Dios. Di: «Decid sus nombres o informadle de lo que Él no sepa sobre la Tierra. ¿O es que habláis por hablar?» Quienes no creen se adornan con sus intrigas y han sido apartados del camino (de Dios). Y a quien Dios extravía no habrá quien le guíe.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdccxli{Tendrán un castigo en esta vida y el castigo de la otra será más duro aún. Y no tendrán quien les proteja de Dios.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdccxlii{El Jardín que les ha sido prometido a los temerosos de Dios es así: De sus profundidades brotan los ríos, siempre tiene frutos y sombra. Ese será el destino final de los temerosos, pero el destino final de los que no creen es el Fuego.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdccxliii{Aquellos a quienes dimos la Escritura [Sagrada] se alegran de lo que fue hecho descender para ti, pero, en los partidos, hay quienes niegan parte de ello. Di: «En verdad, me fue ordenado que adore a Dios y que no Le asocie nada ni nadie. A Él convoco y a Él regreso.»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdccxliv{Así mismo, lo hicimos descender como una ley en lengua árabe. Pero si sigues sus deseos, después del conocimiento que ha llegado a ti, no tendrás ante Dios amigo ni protector.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdccxlv{Ciertamente, enviamos Mensajeros antes de ti y les dimos esposas y descendencia. Y no es propio de un Mensajero realizar milagros si no es con el permiso de Dios. Para cada época hay una Escritura Sagrada.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdccxlvi{Dios anula y confirma lo que quiere. Junto a Él está la Escritura Madre.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdccxlvii{Si te hacemos ver algo del castigo que les hemos prometido o si te hacemos morir (antes), a ti sólo te corresponde transmitir (el Mensaje divino) y a Nosotros el ajuste de cuentas.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdccxlviii{¿Acaso no ven como reducimos los bordes de la Tierra? Dios juzga y nadie puede aplazar Su juicio y Él es rápido en ajustar las cuentas.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdccxlix{Ya planearon los que vinieron antes de ellos, pero Dios es el dueño de todos los planes. Él conoce lo que obtiene cada ser con sus actos y los que no creen sabrán pronto para quién es la última morada.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdccl{Y quienes no creen dicen: «Tú no eres un Mensajero.» Di: «Es suficiente Dios y los que tienen el conocimiento de la Escritura Sagrada como testigos entre vosotros y yo.»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdccli{\basmalahes Alif, lam, ra. Una Escritura [Sagrada] que hemos hecho descender a ti para que saques a la gente de las tinieblas hacia la Luz con el permiso de su Señor, hacia el camino del Poderoso, el Alabado.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdcclii{Dios, a Quien pertenece lo que hay en los cielos y en la Tierra. ¡Ay! ¡Qué duro castigo para los que ocultan la Verdad y no tienen fe!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdccliii{Aquellos que prefieren la vida de este mundo a la del Otro y ponen dificultades en el camino de Dios, tratando de desviar a la gente. ¡Esos están muy extraviados!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdccliv{No enviamos Mensajero alguno que no hablase la lengua de su pueblo, para que pudiera explicarles con claridad. Dios extravía a quien Él quiere y guía a quien Él quiere. Él es el Poderoso, el Sabio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdcclv{Y, ciertamente, enviamos a Moisés con Nuestros milagros: «¡Saca a tu pueblo de las tinieblas a la Luz y recuérdales los Días de Dios!» En verdad, en ello hay señales para todo el que sea muy paciente, muy agradecido.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdcclvi{Y (recuerda) cuando dijo Moisés a su pueblo: «Recordad la merced de Dios con vosotros cuando os salvó de la gente del Faraón, que os sometían a un terrible castigo y degollaban a vuestros hijos y dejaban vivas a vuestras mujeres. Y en ello había una prueba inmensa para vosotros, procedente de vuestro Señor.»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdcclvii{Y (recuerda) cuando anunció vuestro Señor: «Si sois agradecidos os daremos más y si no creéis... En verdad, Mi castigo es duro.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdcclviii{Y dijo Moisés: «Aunque no creáis, vosotros y todos los que están sobre la Tierra, en verdad, Dios se basta a Sí mismo, es Digno de Alabanza.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdcclix{¿Acaso no han llegado a vosotros noticias de quienes os precedieron? ¿Los pueblos de Noé, de Ad y de Tamud y los que vinieron tras ellos, que nadie conoce excepto Dios? Vinieron a ellos sus Mensajeros con las pruebas claras, pero ellos llevaron sus manos a sus bocas y dijeron: «En verdad, no creemos en aquello con lo que habéis sido enviados y, en verdad, dudamos de aquello a lo que nos invitáis.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdcclx{Sus Mensajeros dijeron: «¿Dudáis de Dios, el Creador de los cielos y la Tierra?» «Él os llama para perdonaros vuestros pecados y os da tiempo hasta un plazo establecido.» Ellos dijeron: «No sois más que seres humanos como nosotros. Deseáis desviarnos de lo que adoraban nuestros antepasados. Dadnos una prueba clara de vuestra autoridad.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdcclxi{Sus Mensajeros les dijeron: «Sólo somos seres humanos como vosotros, pero Dios favorece de entre sus siervos a quien Él quiere y nosotros no podemos venir a vosotros con una prueba de nuestra autoridad, excepto con el permiso de Dios. Y es en Dios en Quien deben confiar los creyentes.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdcclxii{«¿Por qué no íbamos a confiar en Dios si Él es Quien nos ha guiado en nuestros caminos?» «Tendremos paciencia ante lo que nos molestáis. Quienes confían, deben confiar en Dios.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdcclxiii{Y aquellos que no creían dijeron a sus Mensajeros: «O volvéis a nuestras creencias o, ciertamente, os expulsaremos de nuestra tierra.» Entonces su Señor les reveló: «¡Destruiremos a los opresores\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdcclxiv{y, tras ellos, os estableceremos a vosotros en la Tierra! Así será para quien tema Mi posición y tema Mi amenaza.»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdcclxv{Pidieron a Dios que les diese la victoria y todo tirano obstinado fue destruido.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdcclxvi{El Infierno anda tras él y le darán de beber un agua fétida.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdcclxvii{La beberá a sorbos con dificultad, casi sin poder tragarla y la muerte le vendrá por todos lados pero no morirá. Un castigo abrumador anda tras él.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdcclxviii{Las obras de aquellos que no creen en su Señor son como cenizas esparcidas por el viento en un día de tormenta. No tendrán poder sobre nada de lo que obtuvieron. Éste será el extravío lejano y prolongado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdcclxix{¿Acaso no ves que Dios ha creado los cielos y la Tierra con la Verdad. Si Él quisiera os destruiría y haría una Creación nueva.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdcclxx{Eso no le supone a Dios ningún esfuerzo.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdcclxxi{Comparecerán todos ante Dios y los débiles dirán a los prepotentes: «En verdad, fuimos seguidores vuestros ¿Podéis prestarnos ahora alguna ayuda frente al castigo de Dios?» Ellos dirán: «Si Dios nos hubiera guiado, nosotros os habríamos guiado. [Pero ahora]Da igual que nos impacientemos o que tengamos paciencia, no tenemos escapatoria.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdcclxxii{Y dirá el Demonio cuando el caso esté ya concluido: «Ciertamente, Dios os prometió la Verdad y yo también os prometí, pero no cumplí.» «Yo no tenía poder sobre vosotros excepto para convocaros y vosotros me respondisteis. No me censuréis a mí, censuraos a vosotros mismos.» «Ni yo puedo acudir a vuestras llamadas de socorro ni vosotros podéis acudir a las mías. Verdaderamente, reniego de la condición divina que antes me otorgasteis.» En verdad, los opresores sufrirán un castigo doloroso.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdcclxxiii{Y quienes creyeron y obraron rectamente serán introducidos en Jardines de cuyas profundidades brotan los ríos, en los que estarán eternamente con permiso de su Señor. En ellos se saludaran entre sí diciendo: «¡Paz!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdcclxxiv{¿No has visto cómo Dios compara una buena palabra con un árbol bueno? Su base está firme y sus ramas están en el cielo.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdcclxxv{Da su fruto en toda época, con permiso de su Señor. Dios pone ejemplos a las gentes para que, quizás así, reflexionen.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdcclxxvi{Y una mala palabra es semejante a un árbol malo, arrancado de la tierra, sin estabilidad.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdcclxxvii{Dios fortalece a quienes creen mediante la palabra firme en esta vida y en la otra y Dios extravía a los opresores. Dios hace lo que quiere.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdcclxxviii{¿No has visto a quienes cambiaron la merced de Dios por la incredulidad y llevan a su gente a la morada de la destrucción,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdcclxxix{el Infierno en el que arderán? ¡Qué mal lugar de descanso!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdcclxxx{Pusieron semejantes a Dios, para desviar a otros de Su camino. Di: «¡Disfrutad! Pues, en verdad, vuestro camino os lleva hacia el Fuego.»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdcclxxxi{Di a Mis siervos, aquellos que creen: «Haced la oración y repartid, en secreto o abiertamente de lo que Nosotros os hemos provisto antes de que llegue un día en el que no hay comercio ni amistad.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdcclxxxii{Dios es quien creó los cielos y la Tierra y hace descender de los cielos agua mediante la cual hace surgir frutos para vuestro sustento y ha puesto a vuestro servicio los barcos para que surquen los mares por orden Suya y ha puesto a vuestro servicio los ríos.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdcclxxxiii{Y ha puesto a vuestro servicio el Sol y la Luna, que siguen un curso establecido y ha puesto a vuestro servicio la noche y el día\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdcclxxxiv{y os ha dado de todo lo que pedisteis. Y si tratáis de contar las mercedes de vuestro Señor no podréis calcularlas. En verdad, el hombre es muy opresor y muy desagradecido.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdcclxxxv{Y (recuerda) cuando Abraham dijo: «¡Señor mío! Haz esta tierra segura e impide que yo y mis hijos adoremos a los ídolos.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdcclxxxvi{«¡Señor mío! En verdad, ellos han extraviado a muchos hombres.» «Quién me siga será de los míos y quien me desobedezca... En verdad, Tú eres perdonador, misericordiosísimo con los creyentes.»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdcclxxxvii{«¡Señor nuestro! En verdad, he asentado a parte de mi descendencia en un valle desierto, junto a Tu Casa Sagrada ¡Señor nuestro! para que hagan la oración. ¡Haz, pues, que los corazones de la gente se vuelvan hacia ellos y provéeles de frutos para que sean agradecidos!»\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdcclxxxviii{«¡Señor nuestro! En verdad Tú sabes lo que ocultamos y lo que manifestamos. Y no se oculta de Dios nada de lo que hay en la Tierra ni en los cielos.»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdcclxxxix{«Alabado sea Dios, Quien me otorgó, a pesar de mi mucha edad, a Ismael e Isaac. En verdad, mi Señor escucha la súplica.»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdccxc{«¡Señor mío! ¡Haz que yo y mis descendientes seamos de los que hacen la oración! ¡Señor nuestro! ¡Acepta mi súplica!»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdccxci{«¡Señor nuestro! ¡Perdónanos a mí y a mis padres y a los creyentes el Día del Ajuste de Cuentas!»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdccxcii{¡Y no penséis que Dios se despreocupa de los actos de los opresores! ¡Sino que se lo pospone para un día en que las miradas quedarán paralizadas!\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdccxciii{¡Sus cuellos estirados, sus cabezas erguidas, sus pupilas inmóviles, un vacío en sus entrañas!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdccxciv{Advierte a la gente de un día en que vendrá a ellos el castigo y en el que los opresores dirán: «¡Señor nuestro! ¡Retrásanoslo un pequeño plazo para que podamos responder a Tu convocatoria y seguir a los Mensajeros!» ¿Acaso no jurabais anteriormente que no llegaría el fin para vosotros\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdccxcv{y habitasteis en los mismos lugares que quienes se oprimieron a sí mismos y os informamos claramente de lo que hicimos con ellos y os pusimos ejemplos?\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdccxcvi{Y, ciertamente, tramaron sus planes, pero Dios conocía sus planes, aunque sus planes eran como para aplastar las montañas.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdccxcvii{No contéis, pues, con que Dios incumpla la promesa que Él hizo a Sus Mensajeros -en verdad, Dios es poderoso, dueño de la venganza-\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdccxcviii{el día en que la Tierra se transforme en otra Tierra y los cielos [también] y ellos comparezcan ante Dios, el Uno, el Dominador.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdccxcix{Y verás ese día a los pecadores unidos por cadenas,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdccc{sus ropas de alquitrán y el Fuego cubriendo sus rostros,\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdccci{para que Dios recompense a cada alma por lo que realizó. En verdad, Dios es rápido en ajustar las cuentas.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdcccii{Este es un aviso para la gente. Para que se den por advertidos y para que sepan que Él es un Dios Único y para que reflexiones los dotados de discernimiento.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdccciii{\basmalahes Alif, lam, ra. Esos son los versículos de la Escritura [Sagrada] y de un Corán claro.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdccciv{¡Cuánto desearán los que no creen haber sido musulmanes!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdcccv{Déjales que coman y disfruten y les engañe la esperanza! ¡Pronto sabrán!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdcccvi{No hemos destruido a ningún pueblo sin haberle dado un plazo determinado.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdcccvii{Ninguna comunidad puede adelantar su plazo ni retrasarlo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdcccviii{Y dijeron: “¡Eh tú! ¡Ese para quien fue hecho descender el recuerdo! ¡Verdaderamente, estás loco!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdcccix{¿Por qué no nos traes a los ángeles, si es verdad lo que dices?”\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdcccx{¡No hacemos descender a los ángeles excepto con la Verdad y entonces no tendrán que esperar.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdcccxi{En verdad, Nosotros hacemos descender el Recuerdo y, en verdad, Nosotros somos sus protectores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdcccxii{Y, ciertamente, enviamos antes de ti otros Mensajeros a los primeros pueblos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdcccxiii{Y no enviamos un solo Mensajero sin que se burlasen de él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdcccxiv{Así es como lo introducimos en el corazón de los pecadores.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdcccxv{No creen en él y esa misma fue la costumbre de los pueblos anteriores.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdcccxvi{Aunque hubiéramos abierto para ellos una puerta en el cielo por la que pudieran ascender a él,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdcccxvii{habrían dicho: «¡Nos han hipnotizado! ¡Nos han hechizado!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdcccxviii{Ciertamente, hemos puesto en el cielo constelaciones y lo hemos adornado para los observadores\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdcccxix{y lo hemos protegido de cualquier demonio maldito\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdcccxx{y quien se acerca a escondidas para escuchar, es perseguido por una estrella fugaz brillante.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdcccxxi{Y expandimos la Tierra y pusimos en ella firmes montañas e hicimos surgir de todo de manera equilibrada\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdcccxxii{y pusimos en ella los medios necesarios para vivir, vosotros y otros que no dependen de que vosotros les sustentéis.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdcccxxiii{No existe nada de lo que Nosotros no hayamos dispuesto grandes cantidades, pero no lo hacemos descender sino en una proporción determinada.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdcccxxiv{Y hemos enviado los vientos fecundadores y hacemos descender agua de los cielos con la que os damos de beber y no sois vosotros quienes la almacenáis.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdcccxxv{Y, en verdad, somos Nosotros quienes damos la vida y la muerte y Nosotros somos los herederos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdcccxxvi{Y conocemos, en verdad, a quienes os precedieron y a quienes vendrán después.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdcccxxvii{Y, en verdad, tu Señor es Quien les congregará. En verdad, Él es sabio, todo lo conoce.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdcccxxviii{Y, ciertamente, creamos al ser humano de un barro seco procedente de un lodo negro y maloliente.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdcccxxix{Y creamos a los genios anteriormente de fuego ardiente.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdcccxxx{Y (recuerda) cuando tu Señor dijo a los ángeles: «En verdad, crearé a un ser humano de barro seco procedente de un lodo negro y maloliente.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdcccxxxi{Cuando lo haya terminado y sople en él de Mi Espíritu, caed prosternados ante él.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdcccxxxii{Todos los ángeles se prosternaron\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdcccxxxiii{excepto Iblís, que rehusó ser de los que se prosternan.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdcccxxxiv{Dijo (Dios): «¿Qué te sucede que no eres de los que se prosternan?»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdcccxxxv{Dijo (Iblís): «¡No estoy para prosternarme ante un ser humano al cual Tú has creado de barro seco procedente de un lodo negro y maloliente!»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdcccxxxvi{Dijo (Dios): «¡Sal, entonces, de ella! Se, pues, de los excluidos.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdcccxxxvii{Y, en verdad, sea sobre ti la maldición hasta el Día de la Recompensa.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdcccxxxviii{Dijo (Iblís): «¡Señor mío! ¡Dame de plazo hasta el día en que sean resucitados!»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdcccxxxix{Dijo (Dios): «Se, pues, de aquellos a quienes se ha dado un plazo\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdcccxl{hasta un Día cuyo tiempo es sabido.»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdcccxli{Dijo (Iblís): «¡Señor mío! Puesto que me has desviado, les adornaré en la Tierra y les desviaré a todos,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdcccxlii{excepto a quienes de entre ellos sean Tus siervos puros.»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdcccxliii{Dijo (Dios): «Éste es Mi camino recto.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdcccxliv{En verdad, no tendrás poder sobre Mis siervos, excepto sobre los extraviados que te sigan.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdcccxlv{Y, en verdad, todos ellos están citados en el Infierno.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdcccxlvi{Tiene siete puertas y a cada puerta le corresponde un grupo concreto de ellos.»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdcccxlvii{En verdad, los temerosos estarán en Jardines y Fuentes.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdcccxlviii{«¡Entrad en ellos en paz y seguridad!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdcccxlix{Eliminaremos el rencor que quede en sus pechos. Hermanos sobre lechos unos frente a otros.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdcccl{Allí no les alcanzará la desgracia ni serán de allí sacados.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdcccli{Informa a Mis siervos que, en verdad, Yo soy el Perdonador, el Misericordiosísimo con los creyentes\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdccclii{y que Mi castigo es el castigo doloroso.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdcccliii{E informales de los huéspedes de Abraham.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdcccliv{Cuando entraron donde él se hallaba y dijeron: «¡Paz!». Él dijo: «La verdad, nos atemorizáis.»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdccclv{Ellos dijeron: «No temas. En verdad, te anunciamos la buena noticia de un joven muy sabio.»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mdccclvi{Él dijo: «¿Me anunciáis la buena noticia a pesar de lo mayor que soy? ¿Qué es lo que me estáis anunciando?»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mdccclvii{Ellos dijeron: «Te anunciamos la Verdad. ¡No seas de los que pierden la esperanza!»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mdccclviii{Él dijo: «¿Quién desespera de la misericordia divina excepto los extraviados?»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mdccclix{Dijo: «¿Qué asunto importante os ha traído ¡Oh Mensajeros!?»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mdccclx{Ellos dijeron: «En verdad, hemos sido enviados a un pueblo en el que todos son pecadores\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mdccclxi{excepto la familia de Lot. En verdad, les salvaremos a todos ellos\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mdccclxii{excepto a su mujer. Hemos decretado que sea de los que se quedan.»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mdccclxiii{Y, cuando los Mensajeros, llegaron a la familia de Lot,\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mdccclxiv{(éste) dijo: «Verdaderamente, sois gente desconocida.»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mdccclxv{Ellos dijeron: «Hemos venido a ti con aquello de lo que ellos dudaban.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mdccclxvi{Hemos venido a ti con la Verdad. En verdad, somos sinceros.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mdccclxvii{Ellos dijeron: «Hemos venido a ti con aquello de lo que ellos dudaban. Parte, pues, con tu familia durante la noche y tú sígueles por detrás y que ninguno de vosotros se vuelva a mirar, e id a donde se os ha ordenado.»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mdccclxviii{Y le revelamos este asunto: «¡Todos ellos serán destruidos al amanecer!»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mdccclxix{Las gentes de la ciudad se informaron unos a otros y vinieron.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mdccclxx{Dijo (Lot): «Estos son mis invitados. ¡No me deshonréis!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mdccclxxi{¡Temed a Dios y no me humilléis!»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mdccclxxii{Ellos dijeron: «¿Acaso no te habíamos prohibido a todo el mundo?»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mdccclxxiii{Dijo: «Aquí están mis hijas, si es que queréis actuar [rectamente].»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mdccclxxiv{Juro por tu vida que, en su embriaguez, no sabían lo que hacían\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mdccclxxv{Y el Grito les sorprendió a la salida del Sol.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mdccclxxvi{Y pusimos lo de arriba de ella abajo e hicimos llover sobre ellos piedras de arcilla.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mdccclxxvii{Verdaderamente, en ello hay signos para quienes prestan atención.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mdccclxxviii{En verdad, ella está en un camino que todavía existe\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mdccclxxix{y en ello hay un signo para los creyentes.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mdccclxxx{En verdad, los habitantes de Al-Aika fueron opresores.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mdccclxxxi{Así que Nos vengamos de ellos. Y ambas están a la vista en el camino.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mdccclxxxii{Ciertamente, los habitantes de Al-Hichr desmintieron a los Mensajeros.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mdccclxxxiii{Les habíamos enviado Nuestras señales pero se apartaron de ellas.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mdccclxxxiv{Habían excavado en la montaña casas seguras,\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mdccclxxxv{pero el Grito les sorprendió en la mañana\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mdccclxxxvi{y todo lo que habían obtenido no les sirvió de nada.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mdccclxxxvii{No hemos creado los cielos y la Tierra y lo que hay entre ambos sino con la Verdad. En verdad, la Hora ha de llegar, así pues, perdona con un hermoso perdón.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mdccclxxxviii{Verdaderamente, tu Señor es el Creador de todo, el Conocedor de todo.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mdccclxxxix{En verdad, te hemos dado siete de las que se repiten y el Corán Inmenso.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mdcccxc{No alargues tu mirada hacia lo que Nosotros hemos otorgado a algunos de ellos para que disfruten y no te entristezcas por ello y protege con tus alas a los creyentes\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mdcccxci{y di: «En verdad, yo soy un amonestador claro.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mdcccxcii{(Les enviaremos un castigo) como lo enviamos a los troceadores.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mdcccxciii{Aquellos que trocearon el Corán.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mdcccxciv{Así que, juro por tu Señor que hemos de interrogarles a todos\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mdcccxcv{por lo que estuvieron haciendo.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mdcccxcvi{Comunica, pues, claramente aquello que se te ha ordenado y apártate de los idólatras.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mdcccxcvii{En verdad, Nosotros te bastamos frente a quienes se burlan,\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mdcccxcviii{aquellos que ponen otros dioses junto a Dios. ¡Pronto van a saber!\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mdcccxcix{En verdad, Nosotros sabemos que tu pecho se encoge por lo que ellos dicen,\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcm{pero glorifica con alabanzas a tu Señor y se de los que se prosternan.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mcmi{Y adora a tu Señor hasta que te llegue la certeza.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mcmii{\basmalahes Viene la orden de Dios, no queráis pues apresurarla. ¡Glorificado y ensalzado sea por encima de aquello que asocian a Él!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mcmiii{Él hace descender a los ángeles con el Espíritu procedente de Su orden sobre quien Él quiere de Sus siervos: «¡Advertid que no existe otro dios que Yo, así pues, temedme a Mí!»\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mcmiv{Él creó los cielos y la Tierra por medio de la Verdad. Él está muy por encima de aquello que asocian a Él.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mcmv{Él creó al ser humano de semen y ¡helo aquí! un discutidor obstinado.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mcmvi{Y también creó a los animales. En ellos hay para vosotros calor y beneficio y de algunos de ellos os alimentáis\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mcmvii{y, para vosotros, hay una belleza en ellos cuando los recogéis al atardecer y cuando les lleváis por la mañana a los pastos\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mcmviii{Y transportan vuestras pesadas cargas a países que no podríais alcanzar excepto con gran dificultad y esfuerzo para vosotros. En verdad, vuestro Señor es piadoso, misericordiosísimo con los creyentes.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mcmix{Y (Él ha creado) los caballos, los mulos y los asnos para que montéis en ellos y para (vuestro) realce y embellecimiento. Y Él crea cosas que no conocéis.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mcmx{A Dios corresponde la responsabilidad de mostrar el camino recto, pues algunos de ellos están desviados. Si Él quisiera os guiaría a todos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mcmxi{Él es Quien hace descender agua del cielo. De ella obtenéis bebida y de ella beben las plantas con las que alimentáis al ganado.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mcmxii{Con ella hace Él crecer para vosotros las cosechas, los olivos, las palmeras, las viñas y de todos los frutos. En verdad, en ello hay una señal para gente que reflexiona.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mcmxiii{Y ha puesto a vuestra disposición la noche y el día. El Sol, la Luna y las estrellas están sometidas a Su mandato. En verdad, en ello hay señales para gente que usa su intelecto.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mcmxiv{Y en lo que ha creado para vosotros en la Tierra hay variados colores. En verdad, en ello hay una señal para gente que se deja amonestar.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mcmxv{Y Él es Quien ha puesto el mar a vuestro servicio para que comáis de él carne fresca y para que extraigáis de él adornos para vuestra indumentaria. Y ves la nave surcándolo para que disfrutéis de Su favor. Y, quizás así, seáis agradecidos.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mcmxvi{Y ha fijado en la Tierra firmes montañas para que no tiemble con vosotros y ríos y caminos, para que así, quizás, vayáis bien dirigidos.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mcmxvii{Y (ha colocado) señales. Y ellos se guían con las estrellas.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mcmxviii{¿Acaso Quien crea es como quien no crea? ¿Es que no os dejaréis amonestar?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mcmxix{Si trataseis de enumerar las mercedes de Dios no podríais contabilizarlas. En verdad, Dios es perdonador, misericordiosísimo con los creyentes\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mcmxx{y Dios conoce los que ocultáis y lo que manifestáis.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mcmxxi{Y aquellos a quienes ellos ruegan aparte de Dios no han creado nada sino que han sido creados.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mcmxxii{Están muertos, no vivos, y no se darán cuenta en qué momento serán resucitados.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mcmxxiii{Vuestro dios es un dios Único. Pero los corazones de quienes no creen en la otra vida niegan y ellos son arrogantes.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mcmxxiv{No hay duda que Dios conoce lo que ocultan y lo que manifiestan. En verdad, Él no ama a los arrogantes.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mcmxxv{Y si se les dice: «¿Qué ha hecho descender vuestro Señor?», dicen: «¡Fábulas de los primitivos!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mcmxxvi{Portarán su pesada carga completa el Día del Levantamiento y la carga de aquellos a quienes, por su falta de conocimiento, ellos desviaron. ¡Observad que mala carga portarán!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcmxxvii{Quienes vivieron antes que ellos maquinaron, pero Dios debilitó su edificio desde los cimientos y el techo cayó sobre ellos desde lo alto y el castigo les vino sin que se dieran cuenta de cómo ni de dónde.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mcmxxviii{Luego, el Día del levantamiento, Él les avergonzará y les dirá: «¿Dónde están Mis socios sobre los que no os poníais de acuerdo?» Aquellos a quienes les fue dado el conocimiento dirán: «En verdad, hoy la vergüenza y la desgracia son para los que no tienen fe.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mcmxxix{Aquellos que cuando los ángeles vienen a tomar sus almas mientras ellos están oprimiéndose a sí mismos se muestran humildes y sumisos: «¡No hacíamos nada!» ¡Claro que sí! ¡Dios sabe muy bien lo que hacíais!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mcmxxx{¡Entrad por las puertas del Infierno en el que estaréis eternamente! ¡Qué mala es la morada final de los arrogantes!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcmxxxi{Y a quienes fueron temerosos se les dirá: «¿Qué fue lo que hizo descender vuestro Señor?» Ellos dirán: «El bien.» Quienes hayan hecho el bien en esta vida obtendrán bien, pero, sin duda, la morada de la Otra es mejor aún. ¡Qué bendición la morada de los temerosos!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcmxxxii{Entrarán en los Jardines del Edén, de cuyas profundidades brotan los ríos. Allí hay para ellos todo lo que deseen. Así es como Dios recompensa a quienes son temerosos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcmxxxiii{Aquellos a quienes los ángeles vienen a tomar sus almas y, encontrándoles de conducta pura, les dicen: «La Paz sobre vosotros. Entrad en el Jardín por lo que hacíais.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcmxxxiv{¿Qué esperan sino que vengan a ellos los ángeles o que llegue a ellos la orden de tu Señor? Lo mismo hicieron quienes vinieron antes de ellos. Y Dios no les oprimió sino que ellos mismos fueron quienes se oprimieron.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcmxxxv{Sufrieron las consecuencias de sus malas acciones y les alcanzó el castigo del que se burlaban.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcmxxxvi{Y los idólatras dicen: «Si Dios hubiera querido no habríamos adorado nada aparte de Él, ni nosotros ni nuestros padres, ni habríamos declarado nada prohibido sin Su permiso.» Eso mismo hicieron quienes les precedieron. ¿Acaso la responsabilidad de los Mensajeros es otra que transmitir el mensaje claro?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcmxxxvii{Ciertamente, Nosotros enviamos a cada comunidad un Mensajero: «¡Adorad a Dios y abandonad los ídolos!» Hubo algunos de ellos a quienes Dios guió y otros que merecieron el extravío. ¡Viajad, pues, por la Tierra y ved cuál fue el final de los desmentidores!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcmxxxviii{Te gustaría guiarles, pero, en verdad, Dios no guía a quienes ha desviado. Y no tendrán quien les auxilie.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcmxxxix{Y juran por Dios con solemnes juramentos que Dios no resucitará a quien esté muerto. ¡Pues sí! Es una promesa que Él se ha impuesto, aunque la mayoría de las personas no saben,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcmxl{para mostrarles claramente aquello sobre lo que tenían diferentes opiniones y para que quienes no creen sepan que eran unos mentirosos.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcmxli{En verdad, cuando Nosotros deseamos que algo exista, simplemente le decimos: «¡Sé!» y es.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcmxlii{Y a quienes emigraron por Dios después de haber sido oprimidos les proporcionaremos una buena situación en esta vida y la recompensa de la Otra será mayor. ¡Si ellos supieran!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mcmxliii{Esos que fueron pacientes y confiaron en su Señor.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcmxliv{Y, antes de ti, solamente hemos enviado hombres a los cuales Nosotros revelamos -preguntad a la gente del recuerdo si no sabéis-\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcmxlv{las pruebas claras y las Escrituras Sagradas. E hicimos descender para ti el Recuerdo para que puedas aclarar a la gente lo que fue hecho descender para ellos (anteriormente) y para que, quizás así, reflexionen.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mcmxlvi{¿Acaso quienes planearon el mal están a salvo de que Dios haga que la tierra les trague o que les llegue el castigo sin que se den cuenta por dónde?\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mcmxlvii{¿O que les alcance en plena actividad sin que puedan evitarlo?\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mcmxlviii{¿O que les alcance de manera que les vaya atemorizando cada vez más? En verdad, tu Señor es piadoso, misericordiosísimo con los creyentes.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mcmxlix{¿Acaso no ven que todas las cosas que Dios ha creado desplazan sus sombras a derecha e izquierda en prosternación ante Dios y son humildes?\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mcml{Y para Dios se prosterna cuanto animal y ángel hay en los cielos y en la Tierra y no son arrogantes\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mcmli{Temen a su Señor, que está por encima de ellos y hacen lo que se les ha ordenado.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mcmlii{Dice Dios: «¡No toméis dos dioses! ¡En verdad, Él es un dios Único! Así pues ¡Temedme sólo a Mí!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mcmliii{A Él pertenece lo que hay en los cielos y en la Tierra y Suya es la creencia inmutable ¿Vais, pues, a temer a otro que a Dios?\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mcmliv{No poseéis don alguno que no proceda de Dios, por ello, cuando os aqueja un mal os refugiáis en Él.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mcmlv{Luego, cuando Él elimina el mal que os aquejaba, algunos de los vuestros asocian falsos dioses a su Señor.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mcmlvi{Ocultando lo que Nosotros les hemos otorgado. ¡Disfrutad, pues! ¡Pronto vais a saber!\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mcmlvii{Atribuyen a lo que no conocen parte de aquello que Nosotros les hemos proveído. ¡Por Dios, que seréis interrogados sobre lo que inventabais!\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mcmlviii{Y atribuyen a Dios las hijas ¡Glorificado sea! y a ellos mismos lo que desean.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mcmlix{Y cuando a alguno de ellos se le anuncia la buena nueva de una hembra su rostro se ensombrece y se llena de pesar.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mcmlx{Se aparta de la gente por el mal que se le ha comunicado ¿Se quedará con ella a pesar de la humillación o la ocultará bajo tierra? ¡Observad qué mal juzgan!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mcmlxi{Quienes no creen en la otra vida poseen malos atributos y a Dios pertenecen los atributos más elevados y Él es el Poderoso, el Sabio.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mcmlxii{Si Dios diese a las gentes lo que se merecen por sus injusticias no dejaría un ser vivo sobre ella, pero se lo pospone hasta una fecha señalada y cuando llegue su plazo no podrán retrasarlo ni una hora, ni tampoco adelantarlo.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mcmlxiii{Atribuyen a Dios lo que ellos aborrecen y proclaman con sus lenguas la mentira de que ellos obtendrán el bien. No hay duda de que para ellos será el Fuego y que serán los primeros en ser enviados a él.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mcmlxiv{Juro por Dios que enviamos [Mensajeros] a las comunidades anteriores a ti, pero Satanás les embelleció su [mal] comportamiento y hoy él es su amigo y protector. Y les aguarda un castigo doloroso.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mcmlxv{Y Nosotros no te enviamos la Escritura sino para que les expliques claramente aquello sobre lo que tienen diferencias y como una guía y una misericordia para la gente que es creyente.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mcmlxvi{Y Dios hace descender agua del cielo y con ella da vida a la tierra después de haber estado muerta. En verdad, en ello hay un signo para la gente que escucha.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mcmlxvii{Y, en verdad, en el ganado hay una enseñanza. Os damos de beber, de lo que llevan en su interior entre heces y sangre, leche pura, grata para los bebedores.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mcmlxviii{Y (os damos) de los frutos de las palmeras y de la vides, de los cuales obtenéis embriagante y una buena provisión. En verdad, en ello hay una señal para gente que razona.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mcmlxix{Y tu Señor reveló a la abeja: «Pon tu casa en las montañas y en los árboles y en lo que construyen.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mcmlxx{Luego, come de todos los frutos y transita sumisa los caminos de tu Señor.» De su vientre sale una bebida de diferentes colores en la que hay una cura para la gente. En verdad, en ello hay una señal para gente que piensa.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mcmlxxi{Y Dios os crea y luego se lleva vuestra alma y a algunos de vosotros les hace llegar a una edad tan avanzada que después de haber sabido no saben nada. En verdad, Dios es Quien todo lo sabe, poderoso.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mcmlxxii{Y Dios favorece a algunos de vosotros con más provisión que a otros, pero quienes fueron favorecidos no están dispuestos a dar de su provisión a sus siervos de manera que se igualen en ello. ¿Rechazan, pues, las bendiciones de Dios?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mcmlxxiii{Y Dios os ha dado esposas de vuestra misma especie y os ha dado, de vuestra esposas, hijos y nietos y os ha provisto de cosas buenas y puras. ¿Creerán en lo falso y no creerán en las bendiciones de Dios?\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mcmlxxiv{Y adoran, aparte de Dios, lo que no posee provisión para ellos de nada de lo que hay en los cielos o en la Tierra y no pueden.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mcmlxxv{Así pues, no comparéis a Dios con nada. En verdad, Dios sabe y vosotros no sabéis.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mcmlxxvi{Pone Dios el ejemplo de un siervo esclavo que no tiene poder sobre nada y otro a quien Nosotros hemos provisto de un buen sustento y que reparte de ello secreta y abiertamente. ¿Son iguales? ¡Alabado sea Dios! Pero la mayoría de ellos no saben.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mcmlxxvii{Y pone Dios el ejemplo de dos hombres, uno de ellos es mudo de nacimiento y no tiene poder sobre nada y es una carga para su amo. A cualquier asunto al que le envía no le trae nada bien ¿Serán iguales él y quien ordena la justicia y está sobre un camino recto?\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mcmlxxviii{Y a Dios pertenece lo que está oculto a los sentidos en los cielos y en la Tierra y la orden de la Hora es como un parpadeo o más próxima aún. En verdad, Dios tiene poder sobre todas las cosas.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mcmlxxix{Y Dios os ha hecho salir del interior de vuestras madres sin tener conocimiento de nada y os ha dado el oído, la vista y el intelecto, puede que, así, seáis agradecidos.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mcmlxxx{¿Acaso no han visto a las aves suspendidas en el aire del cielo? Nadie las sostiene excepto Dios. En verdad, en ello hay señales para gente que tiene fe.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mcmlxxxi{Y Dios ha dispuesto para vosotros vuestras casas para el reposo y la tranquilidad y ha dispuesto, de las pieles del ganado, casas que os resulten ligeras el día en que tengáis que partir y el día que tengáis que acampar, y de su lana, su pelo y su crin, enseres domésticos y vestidos para disfrute durante un tiempo.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mcmlxxxii{Y Dios dispuso para vosotros, de aquello que Él ha creado, sombra, refugios en las montañas y vestimentas que os protejan del calor (y del frío) y vestimentas que os protejan de vuestra violencia. De esa manera, Él completa Su bendición sobre vosotros para que así, quizás, os sometáis.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mcmlxxxiii{Pero, si te dan la espalda, en verdad, tu responsabilidad es únicamente transmitir el mensaje claro.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mcmlxxxiv{Ellos conocen la bendición de Dios pero la niegan. La mayoría de ellos no tienen fe.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mcmlxxxv{Y [recordad] el día en que designaremos un testigo de cada comunidad y no se dará permiso a quienes no hayan tenido fe y no podrán buscar el perdón de Dios.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mcmlxxxvi{Y cuando, quienes fueron opresores, vean el castigo, no se les atenuará ni se les hará esperar.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mcmlxxxvii{Y cuando, quienes fueron idólatras, vean a sus ídolos, dirán: «¡Dios nuestro! ¡Esos son los que asociábamos a Ti! ¡Aquellos a los que adorábamos en lugar de adorarte a Ti!» Entonces sus ídolos les dirán: «¡En verdad, vosotros sois unos mentirosos!»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mcmlxxxviii{Ese día, ellos se someterán a Dios y se alejará de ellos lo que inventaron.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mcmlxxxix{A quienes no creen y ponen dificultades en el camino de Dios les añadiremos castigo sobre castigo por haber corrompido.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mcmxc{Y el día que designemos un testigo de cada comunidad, escogido de entre ellos mismos y que de testimonio sobre ellos, te traeremos a ti como testigo sobre éstos. Hicimos descender sobre ti la Escritura que explica claramente todas las cosas y que es guía, misericordia y buena nueva para los sometidos.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mcmxci{En verdad, Dios ordena la justicia, el bien y la generosidad con los familiares y prohíbe la indecencia, los malos actos y la opresión. Él os amonesta para que, quizás así, reflexionéis.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mcmxcii{Y, cuando concertéis un pacto con Dios, sed fieles al pacto y no rompáis vuestros juramentos después de haberlos ratificado y haber puesto a Dios por garante vuestro. En verdad, Dios sabe lo que hacéis.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mcmxciii{Y no seáis como aquella que destruía lo que había hilado después de haberlo tejido fuertemente, usando vuestros juramentos para defraudaros, pretextando que una comunidad es mayor y más fuerte que la otra. Verdaderamente, con ello Dios os pone a prueba y, sin duda, el Día del Levantamiento Él os aclarará aquello sobre lo que manteníais diferencias.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mcmxciv{Si Dios hubiera querido habría hecho de vosotros una sola comunidad, pero extravía a quien Él quiere y guía a quien Él quiere y seréis interrogados sobre lo que hacíais.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mcmxcv{Y no uséis vuestros juramentos para defraudaros entre vosotros de manera que vacile vuestro paso después de haber sido firme y probéis la desgracia por apartaros del camino de Dios y sufráis un castigo inmenso.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mcmxcvi{Y no vendáis el pacto de Dios por poco precio. En verdad, lo que hay junto a Dios es mejor para vosotros. Que lo sepáis.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mcmxcvii{Lo que vosotros poseéis perece y lo que hay junto a Dios permanece. Y a quienes sean pacientes les recompensaremos conforme a lo mejor que hacían.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mcmxcviii{A quien obre rectamente, sea hombre o mujer, y sea creyente, le haremos vivir una vida buena. Y les recompensaremos conforme a lo mejor que hacían.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcmxcix{Y cuando recitéis el Corán buscad la protección de Dios de Satanás el expulsado.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mm{En verdad, él no tiene autoridad sobre quienes son creyentes y confían en su Señor.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmi{En verdad, él tiene poder sobre quienes le toman por amigo y sobre quienes le adoran como si fuese Dios.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmii{Y cuando cambiamos un versículo por otro -y Dios es Quien mejor sabe lo que hace descender- ellos dicen: “¡En verdad, tú lo has inventado!” Pero la mayoría de ellos no saben.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmiii{Di: «Lo ha bajado el Espíritu Santo, procedente de tu Señor, por medio de la Verdad, para consolidar a los que creen y como guía y buena nueva para los musulmanes.»\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmiv{Nosotros bien sabemos que ellos dicen: «En verdad, es un ser humano quien le instruye.» La lengua de aquel a quien ellos se refieren no es árabe y ésta es una lengua árabe clara.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmv{En verdad, Dios no guía a quienes no creen en las señales de Dios y sufrirán un castigo doloroso.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmvi{Los que inventan esta mentira son quienes no creen en las señales de Dios y ellos son los mentirosos.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmvii{Quienes renieguen de Dios después de haber creído -no quien se ve obligado a ello pero su corazón permanece seguro en la fe- sino quienes abran su pecho a la incredulidad, sufrirán la ira de Dios y tendrán un castigo inmenso.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmviii{Eso será por haber preferido esta vida a la Otra y porque Dios no guía a la gente que no tiene fe.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmix{Aquellos a quienes Dios ha cerrado sus corazones, sus oídos y su vista. Ellos son los negligentes.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmx{No hay duda de que en la otra vida serán los perdedores.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmxi{Luego, tu Señor, con quienes emigraron después de haber sido perseguidos y combatieron y fueron pacientes, después de todo ello, será perdonador, misericordiosísimo\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmxii{el Día en que cada alma esté ocupada en defenderse a sí misma y en que cada ser reciba la recompensa por lo que hizo. Y no serán tratados injustamente.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmxiii{Dios pone el ejemplo de una ciudad que vivía segura y tranquila y a la que llegaba abundante provisión de todos los lugares, pero no creyeron en las bendiciones de Dios y Dios les hizo probar el vestido del hambre y el temor por lo que hacían.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmxiv{Y, ciertamente, vino a ellos un Mensajero de entre ellos mismos y le desmintieron y el castigo les alcanzó, pues eran opresores.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmxv{Comed, pues, de lo lícito y puro que Dios os ha proveído y agradeced la bendición de Dios si es sólo a Él a Quien adoráis.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmxvi{En verdad, Él os ha prohibido la carroña y la sangre, la carne del cerdo y la de aquello que se ha sacrificado a otro distinto de Dios. Pero con quien se vea obligado, no por extravagancia o por transgredir, Dios será, en verdad, perdonador, misericordiosísimo.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmxvii{Y no digáis, calificando falsamente con vuestras lenguas: «Esto es lícito y esto es ilícito», atribuyendo a Dios cosas que son mentira. En verdad, quienes atribuyan a Dios cosas que son mentira no tendrán éxito.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmxviii{Obtendrán un disfrute pequeño y un castigo doloroso.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmxix{Y a los judíos les hicimos ilícito lo que ya te hemos relatado antes y Nosotros no fuimos injustos con ellos, sino que ellos mismos oprimieron sus propias almas.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmxx{Con quienes hicieron el mal por ignorancia, luego, tras ello, se arrepintieron y rectificaron, tu Señor, en verdad, será perdonador, misericordiosísimo.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmxxi{Verdaderamente, Abraham era una nación, obediente a Dios, buscador de la Verdad y nunca fue uno de los idólatras.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmxxii{[Por ser] Agradecido a Sus mercedes, Dios le escogió y le guió a un camino recto\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmxxiii{Y Yo le di lo bueno en esta vida y, en verdad, en la otra será de los Rectos.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmxxiv{Luego, te revelamos: «Sigue las creencias de Abraham, el buscador de la Verdad, que no nunca fue uno de los idólatras.»\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmxxv{En verdad, el Sabat fue establecido solamente para aquellos que discrepaban sobre ello y, en verdad, tu Señor juzgará entre ellos, el Día del Levantamiento, sobre aquello en lo que discrepaban.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmxxvi{Invita al camino de tu Señor con sabiduría y buenas palabras y discute con ellos de la mejor manera. En verdad, tu Señor es Quien mejor conoce quién se extravía de Su camino y Él es Quien mejor conoce o los bien guiados.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmxxvii{Y si castigáis, castigad en la misma medida en que fuisteis castigados, pero si sois pacientes, eso es mejor para quien sea paciente.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmxxviii{Se paciente, pero no podrás ser paciente si no es por Dios. Y no te entristezcas por ellos ni te preocupes por sus intrigas.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmxxix{En verdad, Dios está con quienes son temerosos y con quienes hacen el bien.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmxxx{\basmalahes Glorificado sea Quien hizo viajar una noche a Su siervo, para hacerle ver algunas de Nuestras señales, desde la Mezquita Sagrada a la Mezquita Mas Lejana, cuyo entorno Nosotros bendijimos. En verdad, Él es Quien todo lo oye, Quien todo lo ve.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmxxxi{Y dimos a Moisés la Escritura y la pusimos como una guía para los Hijos de Israel: «No toméis protector aparte de Mí,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmxxxii{descendientes de quienes Nosotros transportamos con Noé. En verdad, él era un siervo agradecido.»\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmxxxiii{Y anunciamos a los hijos de Israel en la Escritura: «Ciertamente, corromperéis la tierra dos veces y ejerceréis una gran tiranía.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmxxxiv{Y cuando la primera promesa se cumpla, enviaremos contra vosotros a Nuestros siervos dotados de un gran poder que os buscarán en el interior de las casas. Es una promesa terminante.»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmxxxv{Luego os dimos el turno (de imponeros) sobre ellos e incrementamos vuestra riqueza e hijos e hicimos de vosotros un grupo más numeroso.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmxxxvi{En verdad, si hacéis el bien lo haréis en vuestro propio beneficio y si hacéis el mal lo haréis en vuestro propio perjuicio. Y, cuando se cumpla la otra promesa, vuestros rostros reflejarán la tristeza y el miedo y entrarán en la Mezquita como entraron la primera vez y destruirán todo lo que caiga en su poder.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmxxxvii{Puede que vuestro Señor tenga misericordia de vosotros, pero si reincidís Nosotros reincidiremos y hemos puesto el Infierno como prisión para los que niegan la Verdad.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmxxxviii{En verdad, este Corán guía a lo que es más auténtico y anuncia a los creyentes que obran rectamente que hay para ellos una gran recompensa\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmxxxix{y que hemos preparado para quienes no creen en la Otra Vida un castigo doloroso.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmxl{El hombre busca el mal lo mismo que busca el bien. El hombre es precipitado.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmxli{Y hemos puesto la noche y el día como dos señales. Ocultamos la señal de la noche y hacemos visible la señal del día para que busquéis el favor de vuestro Señor y para que conozcáis el número de los años y para el cómputo. Hemos explicado todas las cosas de manera detallada.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmxlii{Hemos colocado los actos de cada persona en su cuello y el Día del Levantamiento haremos salir para él un libro que encontrará abierto.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmxliii{«¡Lee tu libro! ¡Hoy, tú mismo eres suficiente para ajustarte la cuenta!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmxliv{Quien se guíe, en verdad, se guía en beneficio propio y quien se extravíe, en verdad, se extravía en su propio perjuicio. Nadie portará la carga de otro y no castigamos sin haber enviado previamente un Mensajero.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmxlv{Cuando queremos destruir una ciudad, damos órdenes a los favorecidos de ella y entonces ellos transgreden. Se cumple así la palabra decretada y la destruimos completamente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmxlvi{¡Cuántos pueblos hemos destruido después de Noé! Tu Señor se basta para estar informado y ver los pecados de Sus siervos.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmxlvii{A quien desee esta vida efímera, Nos apresuraremos a darle de ella lo que queramos, a él y a quien queramos. Luego, le pondremos en el Infierno en el que arderá maldecido, despreciado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmxlviii{Y quien desee la otra vida y se esfuerce por obtenerla y tenga fe será recompensado por su esfuerzo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmxlix{Damos a todos con largueza de los dones de tu Señor. Los dones de tu Señor no se le niegan a nadie.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mml{Observa como favorecemos a unos sobre otros! ¡Y en la otra vida obtendrán mayor posición y mayores favores!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmli{¡No coloques junto a Dios a otro dios, pues quedarás maldecido, abandonado!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmlii{Tu Señor ha decretado que no adoréis nada excepto a Él y que tengáis el mejor comportamiento con vuestros padres. Si se hace mayor junto a ti uno de ellos o ambos, no les digas «¡Uf!» ni les grites, sino que, más bien, háblales con palabras dulces y tiernas.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmliii{Y baja para ellos con misericordia las alas de la humildad y di: «¡Señor mío! ¡Ten misericordia de ellos igual que ellos me cuidaron cuando yo era pequeño!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmliv{Vuestro Señor es Quien mejor conoce lo que hay en vuestras almas. Si os comportáis rectamente, Él perdona a quienes se vuelven a Él arrepentidos.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmlv{Y da a tus familiares sus derechos y a los necesitados y al viajero y no seas derrochador.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmlvi{En verdad, los derrochadores son hermanos de los demonios y el Demonio es desagradecido con su Señor.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmlvii{Y si has de alejarte de ellos buscando la misericordia de tu Señor, háblales con amabilidad.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmlviii{Y no lleves tu mano cerrada a tu cuello ni la extiendas completamente, pues serás censurado y quedarás debilitado.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmlix{En verdad, tu Señor proporciona con largueza la provisión o la restringe a quien Él quiere. En verdad, Él está bien informado de Sus siervos, les observa.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmlx{Y no matéis a vuestros hijos por miedo a la pobreza. Nosotros les proveeremos y también a vosotros. Verdaderamente, matarlos es un gran pecado.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmlxi{Y no os acerquéis a la fornicación ni al adulterio. En verdad, eso es una indecencia y un mal camino.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmlxii{Y no matéis a quien Dios ha prohibido matar, excepto con derecho. Y si alguien es matado injustamente, daremos poder a su representante, pero que éste no se exceda al matar. En verdad, él ha sido auxiliado.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmlxiii{Y no os acerquéis a las propiedades del huérfano excepto para beneficiarle, hasta que llegue a la mayoría de edad. Y cumplid los contratos, pues se os pedirán cuentas por ello.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmlxiv{Y cuando midáis dad la medida justa y pesad con equidad y exactitud. Eso es lo que está bien y tiene las mejores consecuencias.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmlxv{Y no vayas tras aquello de lo que no tienes conocimiento. En verdad, del oído, de la vista, del intelecto, de todo ello se os pedirán cuentas.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmlxvi{Y no vayas por la Tierra con arrogancia. En verdad, tú no puedes atravesar la Tierra ni alcanzar la altura de las montañas.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmlxvii{El mal que hay en todo ello es detestable para tu Señor.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmlxviii{Esto es parte de la sabiduría que te ha revelado tu Señor. No pongas, entonces, otro dios junto a Dios, pues caerías en el Infierno, censurado, derrotado.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmlxix{¿Acaso vuestro Señor os ha dado preferencia, otorgándoos hijos varones y tomando para Sí hijas de entre los ángeles? Verdaderamente, lo que decís son palabras mayores.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmlxx{Ciertamente, hemos diversificado la forma de exponer las cosas en este Corán de manera que reflexionen, pero sólo incrementa su rechazo.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmlxxi{Di: «Si hubiese junto a Él otros dioses, como dicen, entonces buscarían un camino hacia el Dueño del Trono.»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmlxxii{¡Glorificado y ensalzado está Él, muy por encima de lo que dicen!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmlxxiii{Los siete cielos y la Tierra y quienes en ellos están Le glorifican y no hay cosa alguna que no le glorifique con su forma de glorificar, pero vosotros no comprendéis sus glorificaciones. En verdad Él es indulgente, perdonador.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmlxxiv{Y, cuando lees el Corán, ponemos un velo invisible entre tú y quienes no creen en la otra vida.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmlxxv{Y hemos puesto sobres sus corazones velos a su entendimiento y endurecido sus oídos y, cuando recuerdas a tu Señor el Único en el Corán, se vuelven de espaldas con rechazo.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmlxxvi{Nosotros somos quienes mejor conocemos lo que escuchan cuando te escuchan y cuando deliberan en secreto. Cuando los opresores dicen: «Solamente seguís a un hombre embrujado.»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmlxxvii{¡Mira a lo que te comparan! Se equivocan y no pueden encontrar el camino.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmlxxviii{Y dicen: «¿Acaso cuando seamos sólo huesos y polvo, vamos a ser creados nuevamente?»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmlxxix{Di: «¡Sed piedras o hierro\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmlxxx{o cualquier criatura que os parezca difícil!» Dicen: «¿Quién nos hará regresar?» Di: «El mismo que os creó la primera vez.» Y moviendo hacia ti sus cabezas con altanería dirán: «¿Cuándo será eso?» Di: «Puede que sea pronto.»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmlxxxi{El día que Él os llame, responderéis alabándole y creeréis que no habéis permanecido más que un poco.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmlxxxii{Y di a Mis siervos que hablen de la mejor manera. En verdad, Satanás incita los malos sentimientos entre ellos. Satanás es para la gente un enemigo evidente.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmlxxxiii{Vuestro Señor es quien mejor os conoce. Si Él quiere tendrá misericordia de vosotros y si quiere os castigará y no te hemos enviado a ellos para que seas su guardián.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmlxxxiv{Tu Señor es Quien mejor conoce a quienes están en los cielos y en la Tierra. Y, ciertamente, hemos favorecido a unos profetas sobre otros y otorgamos a David los Salmos.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmlxxxv{Di: «¡Invocad a quien vosotros suponéis en lugar de Él! Ellos no tienen poder para eliminar vuestras dificultades ni para cambiar vuestra situación.»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmlxxxvi{Esos mismos a quienes invocan buscan un medio para ver quién de ellos se aproxima más a su Señor y tienen esperanza en Su misericordia y temen Su castigo. En verdad, el castigo de tu Señor es digno de ser temido.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmlxxxvii{No hay pueblo que Nosotros no destruyamos antes del Día del Levantamiento o que no castiguemos con un duro castigo. Esto ha sido consignado en la Escritura.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmlxxxviii{Nada nos impidió enviar milagros, excepto el que los antiguos los desmintieran. Enviamos a Tamud la camella para que abrieran los ojos, pero la trataron injustamente. Y no enviamos los milagros sino para atemorizar.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmlxxxix{Y recuerda cuando te dijimos: «En verdad, tu Señor tiene bajo control a toda la humanidad.» No pusimos esa visión que te hicimos ver sino como una prueba para la gente, así como el árbol maldito en el Corán. Nosotros les atemorizamos, pero eso sólo incrementa en ellos su rebeldía.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmxc{Y recuerda cuando dijimos a los ángeles: «¡Prosternaos ante Adán!» y todos se prosternaron excepto Iblís. Dijo: «¿Acaso voy a prosternarme ante quien has creado de barro?»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmxci{Dijo: «¿Has visto a quién has dado preferencia sobre mí? Si me das de plazo hasta el Día del Levantamiento, destruiré, sin duda, a toda su descendencia, excepto a unos pocos.»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmxcii{Él dijo: «¡Ve tú y quien de ellos te siga! El Infierno será vuestra recompensa. Una recompensa abundante.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmxciii{Y tienta con tu voz a quien puedas de ellos y dirige contra ellos tu caballería e infantería. Y asóciate a ellos en los bienes y los hijos y hazles promesas.» Pero Satanás sólo promete mentiras.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmxciv{«En verdad, sobre Mis siervos no posees ningún poder y tu Señor es suficiente para protegerles.»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmxcv{Vuestro Señor es Quien dirige para vosotros las naves en el mar, para que podáis buscar Su favor. En verdad, Él es misericordiosísimo con vosotros.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmxcvi{Y, cuando sufrís un percance en el mar, todos aquellos a los que invocáis desaparecen excepto Él, pero cuando os pone a salvo en tierra firme os apartáis de Él. La gente carece de fe y es desagradecida.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmxcvii{¿Estáis seguros de que Él no hará que la tierra os trague o de que envíe contra vosotros una tormenta de arena? Entonces, no encontraríais nadie que os protegiera.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmxcviii{O ¿Acaso estáis seguros de que no os devolverá a él otra vez y enviará sobre vosotros un tifón huracanado que os ahogue por no haber tenido fe y ser desagradecidos? Entonces, no encontraríais nadie que reclamase por ello ante Nosotros.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmxcix{Y, ciertamente, hemos sido generosos con los seres humanos y les hemos llevado por la tierra y el mar y les hemos proveído de cosas buenas y les hemos otorgado una preferencia absoluta sobre muchas cosas de las que hemos creado.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmc{[Recuerda]el día en que convoquemos a cada grupo de gentes con su dirigente. A quienes les sea entregado su libro en su mano derecha lo leerán y no serán oprimidos en lo más mínimo.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmci{Y quien estuvo ciego en esta vida estará ciego en la Otra y aún más alejado del camino.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcii{Cerca estuvieron de apartarte de lo que te hemos revelado para que inventases sobre Nosotros algo diferente. Entonces te habrían tomado como amigo.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmciii{Si no te hubiésemos fortalecido habrías podido inclinarte algo hacia ellos.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmciv{Entonces te habríamos hecho probar el doble en la vida y el doble en la muerte, luego no habrías encontrado quien te auxiliara frente a Nosotros.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcv{Cerca han estado de persuadirte a salir de la tierra para expulsarte de ella y, entonces, no habrían permanecido en ella sino poco tiempo.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcvi{Es la costumbre de Nuestros Mensajeros, aquellos a quienes enviamos antes de ti. Y no encontrarás cambios en Nuestras costumbres.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcvii{Haz la oración desde el declinar del sol hasta entrada la noche, así como la recitación del amanecer. En verdad, la recitación del amanecer es observada.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmcviii{Y levántate parte de la noche e incrementa. Puede que tu Señor te otorgue una posición bendecida.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmcix{Y di: «¡Señor mío! ¡Hazme entrar con sinceridad y salir con sinceridad y otórgame un poder que me ayude!»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmcx{Y di: «¡Ha venido la Verdad y ha desaparecido la falsedad! ¡En verdad, la falsedad estaba llamada a desaparecer!»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmcxi{E hicimos descender en el Corán lo que es una cura y una misericordia para los creyentes y que a los opresores sólo les incrementa los perjuicios.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmcxii{Cuando favorecemos al ser humano es desagradecido y se aleja y cuando sufre un mal se desespera.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmcxiii{Di: «Cada cual actúa conforme a su forma de ser y vuestro Señor es Quien mejor conoce quién va mejor guiado en el camino.»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmcxiv{Te preguntan sobre el Espíritu, di: «El Espíritu es una de las ordenes de mi Señor y no se os ha dado del conocimiento más que un poco.»\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmcxv{Y si Nosotros quisiéramos nos llevaríamos lo que te hemos revelado. Entonces no encontrarías quien te protegiera de Nosotros en ello.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmcxvi{Excepto por una misericordia procedente de tu Señor. En verdad, Su favor sobre ti ha sido grande.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmcxvii{Di: «Si los hombres y los genios se juntasen para traer un Corán como éste no podrían traerlo aun que se ayudasen unos a otros.»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmcxviii{Hemos expuesto todo tipo de ejemplos en este Corán para la gente, pero la mayoría de la gente insiste en ocultar la Verdad.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmcxix{Y dicen: «No te creeremos hasta que hagas brotar de la tierra, para nosotros, una fuente que nunca se seque,\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmcxx{tengas un jardín con palmeras y viñas y hagas que broten en medio de él manantiales abundantes,\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmcxxi{o hagas que caiga el cielo en pedazos sobre nosotros, como pretendes que sucederá, o hasta que traigas a Dios y a los ángeles ante nosotros,\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmcxxii{o hasta que tengas una casa de oro o te eleves en el cielo.» «Y no creeremos en tu ascensión hasta que no hagas descender para nosotros un libro que podamos leer.» Di: «¡Glorificado sea mi Señor! ¿Acaso soy otra cosa que un ser humano, un Mensajero?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmcxxiii{Y lo único que impide a la gente creer cuando les llega la Guía es decir: «¿Ha designado Dios mensajero a un hombre?»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmcxxiv{Di: «Si hubiera en la Tierra ángeles caminando y residiendo, Nosotros habríamos hecho descender del cielo para ellos de Mensajero a un ángel.»\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmcxxv{Di: «Dios es suficiente como testigo entre yo y vosotros. En verdad, Él está bien informado de Sus siervos, les ve.»\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmcxxvi{Y a quien Dios guía ese está bien guiado y a quienes extravíe, no encontrarás, aparte de Él, quienes les protejan y sean sus amigos y el Día del Levantamiento les reuniremos boca abajo, ciegos, mudos y sordos. Su refugio será el Infierno. Cada vez que sus llamas decrezcan las avivaremos.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmcxxvii{Esa será su recompensa por no haber creído en Nuestras señales y porque dijeron: «¿Acaso cuando seamos huesos y polvo se nos otorgará una nueva Creación?»\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmcxxviii{¿Acaso no ven que Dios, que ha creado los cielos y la Tierra, tiene poder para crear otros como ellos, y que les ha dado un plazo sobre el que no hay duda? Los opresores perseveran en ocultar la Verdad.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmcxxix{Di: «Incluso si poseyeseis los tesoros de la misericordia de mi Señor, los retendríais con avaricia por miedo a gastarlos.» El hombre es muy tacaño.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmcxxx{Ciertamente, dimos a Moisés nueve señales claras. Pregunta a los Hijos de Israel cuando fue a ellos y el Faraón le dijo: «En verdad, creo ¡Oh, Moisés! que estás embrujado.»\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmcxxxi{[Moisés] Dijo: «Tu sabes que estas señales no las ha hecho descender sino el Señor de los cielos y la Tierra para abrir los ojos de las gentes. Y creo ¡Oh Faraón! que serás destruido.»\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmcxxxii{Él quiso expulsar a la gente del país y Nosotros le ahogamos, a él y a todos los que estaban con él.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmcxxxiii{Y, tras ello, dijimos a los Hijos de Israel: «Habitad la tierra y cuando venga a vosotros la promesa final os traeremos a todos juntos.»\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmcxxxiv{Con la Verdad lo hicimos descender y con la Verdad descendió y no te enviamos sino como un portador de buenas noticias y un amonestador.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmcxxxv{Es un Corán que hemos dividido en pequeñas partes para que lo recites a la gente poco a poco y que hicimos descender gradualmente.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmcxxxvi{Di: «Creáis en él o no creáis, en verdad, aquellos a quienes les fue dado el conocimiento antes de él, cuando se les recita, caen al suelo con la frente en prosternación\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmcxxxvii{y dicen: “¡Glorificado sea nuestro Señor! ¡La promesa de nuestro Señor se cumple!»\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmcxxxviii{Ponen la frente en el suelo llorando y su humildad aumenta.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmcxxxix{Di: «¡Invocad a Dios o invocad al Misericordiosísimo! De cualquier manera que Le invoquéis, a Él pertenecen los mejores nombres.» Y no levantes la voz excesivamente en tus oraciones ni tampoco la conviertas en un murmullo, más bien busca un camino intermedio.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmcxl{Y di: «Glorificado sea Dios que no ha tomado hijos y que no tiene socio en el reinado y que no necesita que nadie Le proteja ante la debilidad y ensálzale proclamando Su grandeza.»\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmcxli{\basmalahes Alabado sea Dios que hizo descender sobre Su siervo la Escritura y no ha puesto en ella nada desviado.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcxlii{Hecha para advertir de un duro castigo de Su parte y para dar la buena noticia a los creyentes, aquellos que obran rectamente, de que para ellos hay una buena recompensa.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcxliii{En él estarán eternamente.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmcxliv{Y advierte a quienes dijeron: «Dios ha tomado un hijo.»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcxlv{Ellos no poseen ningún conocimiento sobre eso, ni tampoco sus padres. Eso que sale de sus bocas son palabras mayores. No dicen más que mentiras.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcxlvi{Puede que quieras morir de tristeza tras sus huellas si no creen en este relato.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcxlvii{En verdad, hemos puesto lo que hay en la Tierra como un adorno para probarles y ver quién de ellos actúa mejor.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcxlviii{Y, en verdad, haremos que todo lo que hay en ella desaparezca y quede pelada.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcxlix{¿Has pensado que los compañeros de la cueva y Al-Raqim son parte de Nuestras sorprendentes señales?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcl{Cuando los jóvenes puros se refugiaron en la cueva y dijeron: «¡Señor nuestro! ¡Otórganos una misericordia venida de Ti y facilítanos una guía en nuestro asunto!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcli{Y les hicimos dormir en la cueva durante muchos años.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmclii{Luego, les hicimos despertar para saber cuál de los dos grupos podría calcular mejor cuánto permanecieron.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcliii{Nosotros vamos a relatarte la historia verdadera. En verdad, ellos eran unos jóvenes buenos que creían en su Señor y Nosotros incrementamos su guía\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcliv{y fortificamos sus corazones cuando se pusieron en pie y dijeron: «Nuestro Señor es el Señor de los cielos y de la Tierra. No invocaremos, aparte de a Él, a otro dios. En ese caso estaríamos faltando a la Verdad.»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmclv{«Este pueblo nuestro ha tomado otros dioses aparte de Él. ¿Por qué no aportan pruebas evidentes de su poder?» ¿Quién es más opresor que quien inventa mentiras acerca de Dios?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmclvi{Y cuando os alejéis de ellos y de lo que adoran aparte de Dios, refugiaos en la cueva. Vuestro Señor extenderá de Su misericordia para vosotros y os ayudará a resolver vuestro asunto favorablemente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmclvii{Habrías visto que el Sol, cuando salía, entraba por el lado derecho de la cueva y cuando se ponía se marchaba por su lado izquierdo mientras ellos estaban en un espacio amplio de ella. Eso es parte de las señales de Dios. A quien Dios guía está bien guiado y para quien Él extravía no encontrarás protector ni guía.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmclviii{Pensarías que estaban despiertos pero dormían y Nosotros les volvíamos del lado derecho y del lado izquierdo y su perro permanecía con sus patas delanteras extendidas en la boca de la cueva. Si les hubieses visto habrías huido de ellos y te habrías llenado de terror.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmclix{Entonces, les levantamos del sueño para que se preguntasen entre ellos. Uno de ellos dijo: «¿Cuánto habéis permanecido?» Dijeron: «Hemos permanecido un día o parte de un día.» Dijeron: «Vuestro Señor es quien mejor sabe lo que habéis permanecido.» «Enviad a uno de vosotros con este dinero que tenéis a la ciudad para que mire quien posee el alimento más puro y os traiga una provisión de él. Pero que sea sutil y no llame en absoluto la atención de nadie sobre vosotros.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmclx{En verdad, si ellos os descubrieran os lapidarían u os harían aceptar sus creencias y entonces nunca triunfaríais.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmclxi{Así fue como Nosotros permitimos que se descubriera su existencia, para que la gente supiese que la promesa de Dios es verdadera y que no hay duda de que la Hora llegará. Cuando discutieron entre ellos sobre su asunto, dijeron: «Construid un edificio sobre ellos. Dios es quien mejor sabe lo que fue de ellos.» Los que vencieron en su asunto dijeron: «Haremos sobre ellos un lugar de adoración.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmclxii{Dirán: «Eran tres y su perro el cuarto.» Dirán: «Eran cinco y su perro el sexto», especulando sobre lo que desconocen. Y dirán: «Eran siete y su perro el octavo.» Di: «Mi Señor es Quien mejor sabe su número. Excepto unos pocos, nadie sabe de ellos.» No discutas, por tanto, sobre ellos, excepto con pruebas y no preguntes por ellos a ninguno de ellos.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmclxiii{Y no digas jamás sobre nada: «En verdad, lo haré mañana»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmclxiv{sin añadir «Si Dios quiere.» Y recuerda a tu Señor si olvidas y di: «Puede que mi Señor me guíe a algo más correcto que esto.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmclxv{Ellos permanecieron en su cueva trescientos años y nueve más.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmclxvi{Di: «Dios es Quien mejor sabe cuánto permanecieron. A Él pertenece lo que está oculto a los sentidos en los cielos y en la Tierra. Es Quien mejor oye. Es Quien mejor ve. Aparte de Él no tienen protector o amigo y nadie comparte con Él el gobierno.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmclxvii{Y recita lo que te ha sido revelado de la Escritura de tu Señor. En Su palabra no hay cambios y no encontrarás refugio aparte de Él.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmclxviii{Y se paciente con quienes invocan a su Señor mañana y tarde deseando Su rostro y no apartes tus ojos de ellos por deseo de los adornos de esta vida mundana y no obedezcas a quien Nosotros hemos hecho que esté desatento de Nuestro recuerdo, que sólo sigue sus pasiones y actúa de manera inmoderada.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmclxix{Y di: «La Verdad procede de vuestro Señor, por tanto, quien quiera que crea y quien quiera que no crea.» En verdad, Nosotros hemos preparado para los opresores un Fuego cuyas paredes les cercarán. Y si imploran ayuda se les auxiliará con un agua como cobre fundido que les abrasará el rostro. ¡Qué mala bebida y qué mal lugar de reposo!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmclxx{En verdad, quienes creen y obran rectamente... No dejaremos que se pierda la recompensa de quien hace el bien.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmclxxi{Para ellos son los Jardines del Edén de cuyas profundidades brotan los ríos. En él serán adornados con brazaletes de oro y vestirán con ropas verdes de seda y brocado y se recostarán en lechos. ¡Qué buena recompensa y qué buen lugar de reposo!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmclxxii{Y ponles el ejemplo de dos hombres a uno de los cuales le dimos dos jardines de viñedos que rodeamos de palmeras datileras y pusimos en medio de ellos cultivos.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmclxxiii{Ambos jardines daban sus frutos sin que nada se malograse e hicimos que entre ambos brotase un río.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmclxxiv{Poseía abundantes frutos y dijo a su amigo cuando conversaba con él: «Poseo más riqueza que tú y más poder en gentes.»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmclxxv{Y entró en su jardín, opresor de sí mismo, diciendo: «No creo que esto pueda destruirse jamás\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmclxxvi{y no creo que la Hora tenga lugar y si soy devuelto a mi Señor seguro que a cambio encontraré junto a Él algo mejor que esto.»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmclxxvii{Y su amigo le dijo al conversar con él: «¿Acaso has dejado de creer en Quien te creó de barro, luego de semen y luego te dio forma de hombre?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmclxxviii{Pero Él es Dios, mi Señor y yo no asocio a nadie a mi Señor.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmclxxix{Si no, cuando entrabas en tu jardín habrías dicho: ‘¡Que sea lo que Dios quiera! ¡No hay más poder que el que viene de Dios!’ Y si ves que tengo menos bienes e hijos que tú\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmclxxx{puede que mi Señor me otorgue algo mejor que tu jardín y envíe contra él rayos que lo dejen arrasado\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmclxxxi{o haga que su agua se sumerja y no puedas encontrarla.»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmclxxxii{Y se arruinó su cosecha y se retorcía las manos por todo lo que había gastado en él y ahora se había destruido, diciendo: «¡Ojalá no hubiera asociado a nadie con mi Señor!»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmclxxxiii{Y no hubo ningún grupo que le auxiliase aparte de Dios y él mismo no pudo ayudarse.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmclxxxiv{En esa situación sólo puede auxiliar Dios, la Verdad. Él es Quien mejor recompensa y Quien mejor fin otorga.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmclxxxv{Y compárales la vida de este mundo con el agua que hacemos descender del cielo y con la que se mezclan las plantas de la Tierra. Luego se secan y el viento las dispersa. Y Dios tiene poder sobre todas las cosas.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmclxxxvi{La riqueza y los hijos son el adorno de la vida de este mundo, pero los buenos actos perduran, obtendrán una mayor recompensa junto a tu Señor y son una esperanza mejor fundada.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmclxxxvii{Y [recuérdales] el día que hagamos desplazarse a las montañas y veas la Tierra desnuda, y los reunamos a todos, sin dejar fuera ni uno de ellos\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmclxxxviii{y sean presentados ante tu Señor en una misma fila: «Ciertamente, venís a Nosotros igual que os creamos la primera vez, a pesar de que creíais que no estableceríamos una cita para vosotros.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmclxxxix{Y sea expuesto el libro y veas a los pecadores temerosos de lo que hay en él y digan: «¡Ay de nosotros! ¿Qué libro es éste que no deja nada, pequeño o grande, sin enumerar?» Y encontrarán ante ellos lo que hicieron. Y tu Señor no oprime a nadie.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcxc{Y [recuerda]cuando dijimos a los ángeles: «Prosternaos ante Adán» y todos se prosternaron excepto Iblís que era uno de los genios y desobedeció la orden de su Señor. ¿Vais a tomarle, a él y a su descendencia, que son vuestros enemigos, como protectores en Mi lugar? ¡Qué mal cambio hacen los opresores!\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcxci{No les hice testigos de la Creación de los cielos y la Tierra ni tampoco de su propia Creación, ni tomé como ayudantes a quienes extravían a los demás.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcxcii{Y el día que Él diga: «¡Llamad a quienes pretendíais que eran Mis socios!» Les llamarán pero ellos no les responderán. Pondremos un abismo entre ellos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcxciii{Los pecadores verán el Fuego y sabrán que caerán en él, pero no encontrarán manera de escapar.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcxciv{Ciertamente, hemos expuesto para la gente en este Corán toda clase de ejemplos, pero el ser humano es el mayor porfiador.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcxcv{¿Por qué los humanos no tienen fe cuando llega a ellos la guía y piden perdón a su Señor sino cuándo llega a ellos lo que les ocurrió a los primeros o ven el castigo ante sus ojos?\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcxcvi{Y no enviamos a los Mensajeros sino como portadores de buenas noticias y amonestadores. Y quienes no creen porfían con falacias para refutar con ello la Verdad y toman a burla Mis señales y las amonestaciones.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcxcvii{Y ¿Quién es más opresor que quien, habiéndosele recordado las señales de su Señor, se aparta de ellas y olvida lo que ha enviado por delante con sus propias manos? En verdad, hemos puesto en sus corazones velos a su entendimiento y endurecido sus oídos y aunque les invites a la guía jamás se guiarán.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcxcviii{Y tu Señor es el Perdonador, Dueño de la Misericordia. Si les diese lo que han obtenido con sus actos, sin duda apresuraría su castigo, pero tienen un plazo establecido. No encontrarán refugio fuera de Él.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcxcix{Estas son las ciudades que Nosotros destruimos cuando fueron opresoras y pusimos un plazo para su destrucción.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcc{Y (recuerda) cuando Moisés le dijo a su discípulo: «No descansaré hasta que alcance la unión de los dos mares, aunque tenga que caminar durante mucho tiempo.»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcci{Y, cuando alcanzaron la unión de los mares, olvidaron el pez de ambos y éste cogió su camino hacia el mar.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmccii{Y cuando hubieron pasado dijo a su discípulo: «Trae nuestra comida pues, ciertamente, nos encontramos fatigados de este viaje.»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcciii{Dijo: «¿Has visto? Cuando nos cobijamos en la roca me olvide del pez y nada sino Satanás hizo que me olvidara de mencionártelo, pues tomó su camino al mar de manera sorprendente.»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcciv{Dijo (Moisés): «Eso es lo que buscábamos.» Y volvieron atrás sobre sus pasos\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmccv{e inmediatamente encontraron a uno de Nuestros siervos al que habíamos otorgado una misericordia y habíamos instruido en una ciencia procedente de Nosotros.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmccvi{Moisés le dijo: «¿Puedo seguirte para que me enseñes de lo que se te ha enseñado de la guía?»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmccvii{Dijo: «En verdad, no podrás tener paciencia conmigo.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmccviii{¿Cómo podrías ser paciente con aquello cuyo conocimiento no abarcas?»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmccix{Dijo: «Me encontrarás, si Dios quiere, paciente y no te desobedeceré en ningún asunto.»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmccx{Dijo: «Si me sigues no me preguntes sobre nada hasta que yo te diga algo sobre ello.»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmccxi{Así pues, partieron. Hasta que, cuando montaron en una barca, él hizo un agujero en ella. Dijo (Moisés): «¿La has agujereado para que se ahogue la gente que va en ella? ¡Has hecho, ciertamente, algo terrible!»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmccxii{Dijo: «¿No te dije que, en verdad, no podrías tener paciencia conmigo?»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmccxiii{Dijo: «No me tomes en cuenta el haberlo olvidado y no me impongas una tarea difícil.»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmccxiv{Y partieron. Hasta que se encontraron con un joven y él le mató. Dijo (Moisés): «¿Mataste a un ser inocente que no había matado a nadie? ¡Has cometido algo reprobable!»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmccxv{Dijo: «¿No te dije que, en verdad, no podrías tener paciencia conmigo?»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmccxvi{Dijo [Moisés]: «Si te interrogo sobre algo después de esto, no me permitas seguir en tu compañía. Me disculpo ante ti.»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmccxvii{Así que partieron, hasta que, al llegar a una ciudad pidieron comida a su gente pero ellos rehusaron darles hospitalidad. Entonces, encontraron un muro a punto de caerse y él lo levantó. Dijo (Moisés): «Si hubieses querido podrías haber obtenido una paga por ello.»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmccxviii{Dijo: «Ha llegado el momento de que tú y yo nos separemos. Voy a informarte del verdadero significado de aquello con lo que no has podido tener paciencia.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmccxix{En cuanto a la barca, era de una pobre gente que trabajaba en el mar. Quise inutilizarla pues venía tras ellos un rey que se apropiaba de todos los barcos por la fuerza.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmccxx{Y en cuanto al joven, sus padres eran creyentes y temimos que él les forzara a la idolatría y la pérdida de la fe\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmccxxi{y quisimos que su Señor les otorgase a cambio otro más puro y más misericordioso.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmccxxii{Y en cuanto al muro, era de dos jóvenes huérfanos de la ciudad y bajo él había un tesoro que les pertenecía a ambos y su padre había sido un hombre recto. Así pues, quiso tu Señor que llegasen a la pubertad y su tesoro saliese a la luz. Una misericordia de tu Señor. No lo hice por propia iniciativa. Esa es la interpretación de aquello sobre lo que no pudiste tener paciencia.»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmccxxiii{Y te preguntan sobre Du l-Qarnayn. Di: «Os contaré algo sobre él.»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmccxxiv{En verdad, le dimos poder en la Tierra y los medios para todo\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmccxxv{y utilizó esos medios para viajar\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmccxxvi{hasta que, cuando alcanzó el lugar en el que el Sol se ponía, encontró que éste se ocultaba en una fuente cenagosa y allí halló a un pueblo. Dijimos: «¡Oh Du l-Qarnayn! O les castigas o les tratas con amabilidad.»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmccxxvii{Dijo: «A quien oprima pronto le castigaremos. Luego se le hará regresar a su Señor y Él le castigará con un castigo sin precedentes.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmccxxviii{Pero quien tenga fe y obre rectamente obtendrá la mejor recompensa y le daremos órdenes fáciles de cumplir.»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmccxxix{Luego usó esos medios de viaje\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmccxxx{hasta que alcanzó el lugar en el que surgía el Sol y lo encontró ascendiendo sobre un pueblo al que no habíamos dado nada con que cubrirse de él.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmccxxxi{Así fue. Y Nosotros conocíamos bien los medios de que disponía.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmccxxxii{Luego utilizó esos medios\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmccxxxiii{hasta que se encontró entre dos montañas y halló cerca de ellas a un pueblo distinto de los otros dos y que no entendían ninguna habla.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmccxxxiv{Dijeron: «¡Oh, Du l-Qarnayn! Ciertamente, Yayuy y Mayuy [Gog y Magog] corrompen la Tierra. ¿Podemos entregarte un tributo para que pongas entre nosotros y ellos una barrera?»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmccxxxv{Dijo: «El poder que Dios me ha dado es mejor. Ayudadme con gente y medios y pondré entre vosotros y ellos una barrera.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmccxxxvi{Traedme trozos grandes de hierro.» Cuando igualó la altura de ambas montañas, dijo: «Soplad» y cuando se puso ardiendo dijo: «Traedme cobre fundido para verterlo encima y sellar los huecos.»\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmccxxxvii{Y no pudieron escalarlo ni pudieron agujerearlo.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmccxxxviii{Dijo: «Esto es una misericordia procedente de mi Señor. Y cuando llegue la promesa de mi Señor la destruirá totalmente. La promesa de mi Señor es verdadera.»\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmccxxxix{Y dejaremos que ese día se mezclen unos con otros como olas y será tocada la trompeta y les reuniremos a todos.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmccxl{Ese día mostraremos totalmente el Infierno a los que no creían.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmccxli{Aquellos cuyos ojos estaban velados a Mi recuerdo y que no podían oír.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmccxlii{¿Acaso quienes no creen calculan que podrán tomar a Mis siervos como protectores fuera de Mí? En verdad, hemos preparado el Infierno como alojamiento para los que no creen.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmccxliii{Di: «¿Queréis que os informe de quienes son los que peor obran?\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmccxliv{Aquellos que malgastan sus esfuerzos persiguiendo la vida mundanal y creyendo que actúan bien.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmccxlv{Son quienes no creen en las señales de su Señor y en el encuentro con Él. Sus obras no obtendrán recompensa y el Día del Levantamiento no pondremos una balanza para ellos.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmccxlvi{Su recompensa será el Infierno por no haber creído y por haber tomado Mis señales y a Mis mensajeros a broma.»\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmccxlvii{En verdad, quienes creen y obran rectamente tendrán por alojamiento los jardines del Paraíso.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmccxlviii{En ellos estarán eternamente, sin desear cambio alguno.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmccxlix{Di: «Si el mar fuera tinta para las palabras de mi Señor, antes se agotaría el mar que las palabras de mi Señor, aunque trajéramos otro mar de tinta semejante.»\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmccl{Di: «En verdad, yo soy un ser humano igual a vosotros. Me ha sido revelado que vuestro Dios es un Dios Único. Por tanto, quien tenga esperanza de encontrarse con su Señor que obre rectamente y que no asocie a nadie en la adoración a su Señor.»\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmccli{\basmalahes Kaf, Ha, Ya, ‘Ain, Sad.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcclii{Recuerdo de la misericordia de tu Señor con Su siervo Zacarías,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmccliii{cuando invocó a su Señor con una súplica desde un lugar solitario,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmccliv{diciendo: «¡Señor mío! Mis huesos se han debilitado y mi cabeza ha encanecido y no tengo queja, Señor, de cuando te he suplicado.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcclv{Y, en verdad, temo por mis familiares después de mí, pues mi esposa es estéril. Otórgame, pues, un hijo\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcclvi{que herede de mí y de la familia de Jacob. Y hazlo, Señor, complacido.»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcclvii{«¡Oh, Zacarías! En verdad, te anunciamos un hijo de nombre Juan. No habíamos dado ese nombre a nadie antes de él.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcclviii{Dijo: «¡Señor mío! ¿Cómo podré tener un hijo siendo mi mujer estéril y habiendo llegado yo, por la mucha edad, a la decrepitud?»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcclix{Dijo: «Así ha hablado tu Señor: Eso es sencillo para Mí. Yo te creé anteriormente, cuando no eras nada.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcclx{Dijo: «¡Señor mío! Dame una señal.» Dijo: «Tu señal será que no hablarás con nadie durante tres noches, aun estando sano.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcclxi{Así pues, salió ante su pueblo desde el lugar en el que rezaba y les indicó que glorificasen mañana y tarde.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmcclxii{«¡Oh, Juan! ¡Toma la Escritura Sagrada con fuerza!» Y le otorgamos la sabiduría desde niño\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcclxiii{y le concedimos de Nuestra compasión y pureza y fue temeroso de Dios\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcclxiv{y bueno con sus padres y no arrogante ni desobediente.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmcclxv{¡La paz sobre él el día en que nació, el día en que muera y el día en que sea devuelto a la vida!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmcclxvi{Y recuerda en la Escritura a María cuando se apartó de su familia hacia un lugar oriental\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmcclxvii{puso un velo que la apartase de ellos. Nosotros enviamos para ella a Nuestro Espíritu, que se presentó ante ella con la forma de un ser humano completo.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmcclxviii{Ella dijo: «En verdad, me refugio en el Clementísimo de ti, si eres temeroso de Dios.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmcclxix{Él dijo: «En verdad, yo soy un Mensajero de tu Señor para otorgarte un muchacho puro.»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmcclxx{Ella dijo: «¿Cómo tendré un hijo si no me ha tocado ningún ser humano y no he perdido mi castidad?»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmcclxxi{Él dijo: «Así ha dicho tu Señor: ¡Eso es fácil para Mí! Haremos de él una señal para la gente y una misericordia procedente de Nosotros. Es un asunto decidido.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmcclxxii{Así que ella le concibió y se retiró con él a un lugar apartado.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmcclxxiii{Los dolores del parto la llevaron junto al tronco seco de una palmera. Ella dijo: «¡Ojalá hubiese muerto antes de pasar por esto y hubiese sido totalmente olvidada!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmcclxxiv{Entonces, él la llamó desde debajo de ella: «No estés triste por mi causa. Tu Señor ha puesto a tus pies un arroyo.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmcclxxv{Mueve hacia ti el tronco de la palmera y caerán sobre ti dátiles maduros recién cortados.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmcclxxvi{«Así que come y bebe y alegra tus ojos. Y si ves a algún ser humano dile: En verdad, he hecho voto al Clementísimo de ayunar, por tanto hoy no hablaré con nadie.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmcclxxvii{Y volvió con él a su gente llevándole en brazos. Ellos dijeron: «¡Oh, María! ¡Ciertamente, has venido con un grave asunto!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmcclxxviii{¡Oh, hermana de Aarón! ¡Tu padre no era un hombre malo, ni tu madre era una transgresora!»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmcclxxix{Entonces, ella señaló hacia él. Ellos dijeron: «¿Cómo vamos a hablar con un niño que está en la cuna?»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmcclxxx{Él dijo: «En verdad, yo soy un siervo de Dios. Él me ha dado la Escritura y me designó profeta\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmcclxxxi{y me ha bendecido dondequiera que yo esté y me ha encomendado la oración y el pago del impuesto religioso mientras viva\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmcclxxxii{y que sea bueno con mi madre. Y no me ha hecho arrogante ni orgulloso.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmcclxxxiii{Y la paz ha estado conmigo el día en que nací y estará el día en que muera y el día en que vuelva a la vida.»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmcclxxxiv{Éste es Jesús el hijo de María, el que proclama la Verdad acerca de la cual dudan.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmcclxxxv{No es propio de Dios tener un hijo. ¡Glorificado sea! Cuando Él decide un asunto, en verdad, le dice: «¡Sé! y es».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmcclxxxvi{Y, en verdad, Dios es mi Señor y vuestro Señor. Así pues, ¡Adoradle! ¡Ese es el camino recto!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmcclxxxvii{Pero los grupos discreparon entre ellos. ¡Ay de quienes no creen cuando sean testigos de un Día Inmenso!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmcclxxxviii{¡Qué bien oirán y verán el día en que vengan a Nosotros! Pero los tiranos se encuentran hoy en un extravío evidente.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmcclxxxix{Y adviérteles del Día del Remordimiento, cuando se decida el asunto. Pero ellos están descuidados y no creen.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmccxc{En verdad, Nosotros heredaremos la Tierra y a quienes están en ella y a Nosotros retornarán.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmccxci{Y recuerda en la Escritura a Abraham -Ciertamente, él era amante de la Verdad, profeta-\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmccxcii{cuando dijo a su padre: «¡Oh, padre! ¿Por qué adoras a lo que no oye ni ve y no puede beneficiarte en nada?»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmccxciii{«¡Oh, padre! En verdad, ha llegado a mí un conocimiento que no ha llegado a ti, así que, sígueme y te guiaré a un camino recto.»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmccxciv{«¡Oh, padre! ¡No adores al Demonio! En verdad, el Demonio es rebelde con el Clementísimo.»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmccxcv{«¡Oh, padre! En verdad, temo que te alcance un castigo del Clementísimo y te conviertas en amigo del Demonio.»\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmccxcvi{Él dijo: «¿Acaso ¡Oh, Abraham! te disgustan mis dioses? ¡Si no desistes te lapidaré! ¡Aléjate de mí por un tiempo prolongado!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmccxcvii{[Abraham] dijo: «La paz sea contigo. ¡Pediré a mi Señor que te perdone! En verdad, Él es complaciente conmigo.»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmccxcviii{«Me apartaré de vosotros y de lo que adoráis aparte de Dios y suplicaré a mi Señor. Quizás no quede defraudado de mi ruego a mi Señor.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmccxcix{Así que, cuando se apartó de ellos y de lo que ellos adoraban en lugar de Dios, le otorgamos a Isaac y a Jacob e hicimos a ambos profetas.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmccc{Y les otorgamos de Nuestra misericordia y les dimos una altísima reputación.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmccci{Y recuerda en la Escritura a Moisés. En verdad, él era un ser puro, Mensajero y profeta.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcccii{Y le llamamos desde el lado derecho del monte y le acercamos a Nosotros para hablar con él confidencialmente.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmccciii{Y le otorgamos, por Nuestra misericordia, a su hermano Aarón como profeta.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmccciv{Y recuerda en la Escritura a Ismael. En verdad, fue cumplidor de la promesa y fue Mensajero y profeta.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcccv{Solía invitar a su familia a la oración y al impuesto religioso purificador de la riqueza y su Señor estaba satisfecho de él.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcccvi{Y recuerda en la Escritura a Idrís. Ciertamente él era veraz, profeta,\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcccvii{y le elevamos a una altísima posición espiritual.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcccviii{Esos son los que Dios ha agraciado de entre los profetas de la descendencia de Adán y de entre los que llevamos con Noé y de la descendencia de Abraham e Israel y de los que Nosotros guiamos y escogimos, quienes, cuando les eran recitados los versículos del Clementísimo, caían prosternados y llorando.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcccix{Tras ellos, sus descendientes se desviaron, abandonaron la oración y siguieron sus pasiones y pronto encontrarán su extravío.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcccx{Excepto quienes se arrepientan, tengan fe y obren rectamente, pues ellos entrarán en el Jardín y no serán oprimidos en absoluto.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcccxi{Jardines del Edén que el Clementísimo ha prometido a Sus siervos, aunque aún no los hayan visto. La promesa de Dios se cumplirá.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcccxii{Allí no escucharán palabras vanas, sino solamente ¡Paz! y en ellos tendrán su provisión mañana y tarde.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcccxiii{Ese es el Jardín que Nosotros daremos en herencia a aquellos de Nuestros siervos que sean temerosos.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcccxiv{Y no lo hacemos descender sino por orden de tu Señor. A Él pertenece lo que tenemos entre nuestras manos y lo que tenemos a nuestras espaldas y lo que hay entre ello. Tu Señor no es olvidadizo.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcccxv{Señor de los cielos y de la Tierra y de lo que entre ellos hay. Así pues ¡Adoradle y perseverad en vuestra adoración a Él! ¿Conoces a alguien así denominado?\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcccxvi{El ser humano dice: «¿Acaso cuando muera seré sacado a la vida?»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcccxvii{¿Acaso no recuerda el ser humano que Nosotros le creamos anteriormente, cuando no era nada?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmcccxviii{Juro por tu Señor que les reuniremos a ellos y a los demonios y les haremos comparecer en el Infierno de rodillas.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmcccxix{Luego, sacaremos de cada grupo a los que hayan sido más desobedientes al Clementísimo.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmcccxx{Pues, ciertamente, Nosotros somos Quienes mejor sabemos quiénes son los que más merecen abrasarse en él.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmcccxxi{Y todos vosotros entraréis en él. Es una decisión terminante de tu Señor.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmcccxxii{Luego, salvaremos a los que son temerosos de Dios y dejaremos allí de rodillas a los opresores.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcccxxiii{Y cuando les son recitados Nuestros claros versículos, aquellos que no tienen fe dicen a los creyentes. «¿Cuál de los dos grupos disfruta de mejor posición y compañía?»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmcccxxiv{¡Cuántas generaciones hemos destruido antes de ellos que poseían mejores propiedades y apariencia!\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmcccxxv{Di: «A quienes estén en el extravío, el Clementísimo se lo prolongará hasta que, cuando vean lo que les fue prometido, bien sea el castigo o bien la Hora, sepan quién tiene peor posición y un ejército más débil.»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcccxxvi{Y Dios incrementa la guía de quienes van por el buen camino y los buenos actos perdurables obtienen mejor recompensa junto a tu Señor y mejor lugar de regreso.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcccxxvii{¿Acaso no has visto a quien niega Nuestras señales y dice: «Me serán dados riqueza e hijos abundantes.»?\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcccxxviii{¿Es que está informado de lo que está oculto a los sentidos o ha obtenido una promesa del Clementísimo?\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmcccxxix{¡Nada de eso! ¡Tomaremos nota de lo que dice y le prolongaremos el castigo!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmcccxxx{Y heredaremos de él lo que dice y vendrá a Nosotros él solo.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmcccxxxi{En lugar de Dios toman otros dioses para que les den poder.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmcccxxxii{¡Pero no! ¡Rechazarán la adoración que ellos les profesan y se pondrán contra ellos!\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmcccxxxiii{¿No ves que Nosotros enviamos a los demonios sobre aquellos que no creen para que les inciten con insistencia al mal?\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmcccxxxiv{No tengas prisa respecto a ellos, que Nosotros llevamos su cuenta con precisión.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmcccxxxv{El día en que reunamos a los temerosos de Dios como invitados del Clementísimo\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmcccxxxvi{y conduzcamos a los pecadores sedientos hacia el Infierno,\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmcccxxxvii{nadie tendrá poder para interceder excepto quien haya realizado un compromiso con el Clementísimo.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmcccxxxviii{Y dicen: «El Clementísimo ha tomado un hijo.»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmcccxxxix{Ciertamente, venís con algo odioso.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmcccxl{A punto están los cielos de rasgarse, de abrirse la Tierra y de desmoronarse las montañas\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmcccxli{por haber ellos atribuido un hijo al Clementísimo.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmcccxlii{No tiene sentido que el Clementísimo tome un hijo.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmcccxliii{No hay nadie en los cielos y la Tierra que no venga como siervo ante el Clementísimo.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmcccxliv{Ciertamente, Él los ha enumerado a todos y los ha contado con precisión\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmcccxlv{y todos ellos vendrán a Él en solitario El Día Del Levantamiento\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmcccxlvi{En verdad, el Clementísimo ha puesto el amor para aquellos que creen y obran rectamente.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmcccxlvii{Y, en verdad, lo hemos hecho fácil para tu lengua, de manera que, por medio de él, anuncies la buena nueva a los temerosos de Dios y amonestes a la gente hostil.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmcccxlviii{¡Cuántas generaciones hemos aniquilado antes de ellos! ¿Acaso percibes a alguno de ellos o les escuchas murmurar?\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmcccxlix{\basmalahes Ta Ha.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcccl{No hicimos descender el Corán sobre ti para crearte molestias\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcccli{sino para invitar al recuerdo a quienes son temerosos.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmccclii{Hecho descender por Quien creó la Tierra y los altos cielos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcccliii{El Clementísimo está sobre el Trono.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcccliv{A Él pertenece lo que hay en los cielos y en la Tierra y lo que hay entre ambos y lo que hay bajo ella.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmccclv{Y, aunque hables en voz baja, en verdad, Él conoce lo secreto y lo más oculto.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmccclvi{Al.lah, no hay más dios que Él. A Él pertenecen los nombres mejores.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmccclvii{¿Te ha llegado el relato de Moisés?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmccclviii{Cuando vio un fuego y dijo a su familia: «¡Esperad! En verdad, he creído divisar un fuego. Puede que traiga unas brasas para vosotros o que encuentre el camino con él.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmccclix{Y cuando llegó a él, fue llamado: «¡Oh, Moisés!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmccclx{¡En verdad, Yo soy tu Señor! Así pues, quítate tus sandalias. Estás, en verdad, en el valle sagrado de Tuwa.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmccclxi{Y Yo te he elegido, así que escucha lo que te ha sido revelado.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmccclxii{En verdad, Yo soy Dios. No hay más dios que Yo. Así pues ¡Adoradme y haced la oración en recuerdo Mío!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmccclxiii{En verdad, la Hora viene. He querido mantenerla oculta para que cada alma sea recompensada conforme a su esfuerzo.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmccclxiv{Que no te aparten de ella quienes no creen en ella y siguen sus pasiones y seas aniquilado.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmccclxv{¿Y qué es eso ¡Oh, Moisés! que tienes en tu mano derecha?»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmccclxvi{Él dijo: «Es mi bastón. En él me apoyo y con él vareo los árboles para alimentar a mi ganado y también le doy otros usos.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmccclxvii{Dijo [Dios]: «¡Lánzalo! ¡Oh, Moisés!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmccclxviii{Y lo arrojó y fue una serpiente reptando veloz.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmccclxix{Dijo [Dios]: «¡Tómalo y no tengas miedo! Lo devolveremos a su condición primera.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmccclxx{Y guarda tu mano bajo tu axila. Saldrá blanca, sin defecto alguno. Es otra señal,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmccclxxi{para hacerte ver algunas de Nuestras grandes señales.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmccclxxii{«Y ve al Faraón. En verdad, él se ha endiosado.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmccclxxiii{Dijo [Moisés]: «¡Señor mío! Ensancha mi pecho\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmccclxxiv{y facilita mi misión\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmccclxxv{y desata el nudo de mi lengua\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmccclxxvi{para que entiendan mis palabras.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmccclxxvii{Y ponme un ayudante de mi familia.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmccclxxviii{A Aarón, mi hermano.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmccclxxix{Fortalece con él mi poder\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmccclxxx{y asóciale a mi misión\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmccclxxxi{para que Te glorifiquemos mucho\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmccclxxxii{y Te recordemos mucho.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmccclxxxiii{En verdad, Tú siempre has estado informado de nuestra situación.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmccclxxxiv{Dijo: «El poder que Dios me ha dado es mejor. Y dejaremos que ese día se mezclen unos con otros como olas y será tocada la trompeta y les reuniremos a todos. Dijo [Dios]: «Ciertamente te he concedido tus peticiones ¡Oh, Moisés!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmccclxxxv{Y, ciertamente, ya te habíamos agraciado otra vez\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmccclxxxvi{cuando Nosotros revelamos a tu madre lo que le fue revelado:\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmccclxxxvii{Ponle en la cesta y pon ésta en el río y el río la depositará en la costa. Le recogerá un enemigo Mío y enemigo suyo.» Y deposité sobre ti Mi amor, para que fueras criado bajo Mi mirada\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmccclxxxviii{cuando tu hermana fue y dijo: «¿Queréis que os indique a quien se ocupe de él?» y te hicimos regresar a tu madre para que se alegraran sus ojos y no estuviera triste. Y mataste a un hombre y Nosotros te salvamos de la angustia y te pusimos a prueba en la dificultad. Y permaneciste durante años con la gente de Madyan. Luego, viniste cuando estaba decretado ¡Oh, Moisés!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmccclxxxix{Te he escogido y purificado para Mí.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmcccxc{¡Id, tú y tu hermano con Mis señales y no os debilitéis en el recuerdo de Mí!\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmcccxci{¡Id ambos al Faraón! ¡En verdad, se ha endiosado!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmcccxcii{Y habladle con amabilidad. Quizás así se deje llamar al recuerdo o tema.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmcccxciii{Ellos dijeron: «¡Señor nuestro! ¡En verdad, tememos que se precipite sobre nosotros o que se extralimite en su opresión!»\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmcccxciv{Dijo: «¡No temáis! En verdad, Yo estaré con vosotros dos. Oiré y veré.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmcccxcv{Así que id a él y decidle: En verdad, somos Mensajeros de tu Señor. Deja, por tanto, ir con nosotros a los Hijos de Israel y no les castigues. Ciertamente, hemos venido a ti con una señal procedente de tu Señor. La paz sea con quien sigue la Guía.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmcccxcvi{En verdad, nos ha sido revelado que quien desmienta y de la espalda será castigado.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmcccxcvii{Dijo [Faraón]: «¿Quién es entonces ¡Oh, Moisés! vuestro Señor?»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcccxcviii{Dijo: «Nuestro señor es Quien ha creado toda cosa y luego la ha guiado.»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcccxcix{Dijo: «¿Y qué fue de las generaciones primeras?»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcd{Dijo: «El conocimiento de ellos está junto a mi Señor en una Escritura. Mi Señor no se equivoca ni se olvida.»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcdi{Él es Quien ha puesto para vosotros la Tierra como un lecho y ha trazado en ella, para vosotros, caminos e hizo descender del cielo agua, por medio de la cual hacemos surgir diversas clases de plantas por parejas.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcdii{¡Comed y pastoread vuestro ganado! En verdad, en ello hay señales para quien posee inteligencia.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcdiii{De ella os hemos creado y a ella os hacemos regresar y de ella os haremos salir otra vez.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcdiv{Ciertamente, le hicimos ver todas Nuestras señales, pero él las negó y rechazó.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcdv{Dijo: «¡Oh Moisés! ¿Has venido a nosotros para sacarnos de nuestra tierra con tu magia?\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcdvi{Pues vendremos a ti con una magia semejante. Fija una cita entre nosotros y tú en un terreno neutral, a la que ni nosotros ni tú faltaremos.»\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcdvii{Dijo: «Vuestra cita será el Día del Adorno y que la gente se reúna al medio día.»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcdviii{El Faraón se retiró. Preparó su plan y acudió.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcdix{Moisés les dijo: «¡Ay de vosotros! ¡No inventéis mentiras sobre Dios, pues os aniquilará con un castigo! ¡Ciertamente, quien invente mentiras fracasará!»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcdx{Así que discutieron la cuestión entre ellos y mantuvieron en secreto sus deliberaciones.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcdxi{Dijeron. «En verdad, esos dos son magos que quieren expulsaros de vuestra tierra con su magia y destruir vuestras tradiciones.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcdxii{Así que, reunid vuestros artificios y venid en una fila cerrada. Quien gane hoy será el triunfador.»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcdxiii{Ellos dijeron: «¡Oh Moisés! ¡Lanza tú o seremos nosotros los primeros en lanzar!»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcdxiv{Dijo: «¡Lanzad pues!» Entonces le pareció, por efecto de su magia, que sus cuerdas y bastones caminaban\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcdxv{y Moisés sintió miedo en su interior.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmcdxvi{Dijimos: «¡No temas! ¡En verdad, tú eres superior!»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmcdxvii{«¡Lanza lo que tienes en tu mano derecha y se tragará lo que han creado!» «En verdad, lo que han creado son trucos de mago y el mago no triunfará donde quiera que vaya.»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmcdxviii{Y los magos cayeron prosternados. Dijeron: «¡Creemos en el Señor de Aarón y Moisés!»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmcdxix{Dijo [Faraón]: «¿Habéis creído en Él antes de que yo os diera permiso?» «Él es vuestro maestro y el que os ha enseñado a vosotros la magia. Os cortaré las manos y los pies opuestos y os crucificaré en el tronco de una palmera y sabréis quién de nosotros castiga de manera más dura y permanente.»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmcdxx{Ellos dijeron: «Nunca te preferiremos a ti por encima de las pruebas claras que nos han llegado y de Aquel que nos ha creado.» «Decidas lo que decidas, tú decides sobre la vida de este mundo»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcdxxi{«En verdad, hemos creído en nuestro Señor para que nos perdone por nuestros errores y por la magia que nos has obligado a realizar. Dios es mejor y más duradero.»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmcdxxii{En verdad, quien venga a su Señor como un pecador obtendrá el Infierno, en el cual no morirá ni vivirá.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmcdxxiii{Y quienes vengan a Él como creyentes que han obrado rectamente obtendrán los grados más elevados.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcdxxiv{Los Jardines del Edén, de cuyas profundidades brotan los ríos y en los que estarán eternamente. Y esa será la recompensa de quien se haya purificado.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcdxxv{Y, ciertamente, revelamos a Moisés: «Saca a Mis siervos en el secreto de la noche y abre para ellos un camino seco en el mar. No temas que os persigan y no tengas miedo.»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcdxxvi{Y les persiguió el Faraón con su ejército y el mar les cubrió totalmente con sus olas.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmcdxxvii{El Faraón extravió a su pueblo y no le guió.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmcdxxviii{«¡Oh, Hijos de Israel! Os salvamos de vuestros enemigos y os citamos junto a la ladera derecha del monte e hicimos descender para vosotros el maná y las codornices.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmcdxxix{Comed de lo bueno y puro que os hemos proporcionado y no os endioséis en ello, pues provocaríais Mi ira sobre vosotros y quien provoque Mi ira sobre él, ciertamente, se hundirá.»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmcdxxx{Y, en verdad, Yo soy muy perdonador con quien se arrepiente y tiene fe y actúa rectamente y, por tanto, sigue la buena guía.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmcdxxxi{«¡Oh, Moisés! ¿Por qué te has adelantado tan apresuradamente a tu pueblo?»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmcdxxxii{Dijo: «Ellos vienen siguiendo mis pasos y yo me apresuré en venir a Ti, Señor mío, para complacerte.»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmcdxxxiii{Dijo (Dios): «En verdad, pusimos a prueba a tu pueblo después de que tú les dejases y el samaritano les extravió.»\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmcdxxxiv{Moisés regresó a su pueblo enfadado y muy preocupado. Dijo: «¡Oh, pueblo mío! ¿Acaso vuestro Señor no os hizo una buena promesa? ¿Acaso os pareció demasiado larga la espera en mi ausencia o quisisteis provocar sobre vosotros la ira de vuestro Señor y por eso faltasteis a la promesa que me hicisteis?»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmcdxxxv{Dijeron: «No faltamos a la promesa que te hicimos por deseo propio, sino que cargábamos las joyas del pueblo y las arrojamos al fuego y el samaritano hizo esto con ellas.»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmcdxxxvi{Y fabricó para ellos la estatua de un ternero que mugía. Y dijeron: «Éste es vuestro dios y el dios de Moisés, y se olvidó.»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmcdxxxvii{¿Acaso no vieron que no les respondía y que no tenía poder para perjudicarles ni beneficiarles?\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmcdxxxviii{Ciertamente, Aarón les había dicho anteriormente: «¡Oh, pueblo mío! ¡En verdad, se os está poniendo a prueba con ello y, en verdad, vuestro Señor es el Clementísimo! ¡Seguidme pues y obedeced mis órdenes!»\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmcdxxxix{Ellos dijeron: «¡No dejaremos de adorarle hasta que Moisés regrese a nosotros!»\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmcdxl{(Moisés) dijo: «¡Oh, Aarón! ¿Qué te impidió, cuando les vistes que se extraviaban,\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmcdxli{seguirme? ¿Acaso desobedeciste mis órdenes?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmcdxlii{Él dijo: «¡Oh, hijo de mi madre! ¡No me tires de la barba ni me tomes de la cabeza! En verdad, temí que me dijeras: ‘Has dividido a los Hijos de Israel y no tuviste en cuenta mis palabras.’»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmcdxliii{(Moisés) dijo: «Y tú, Samaritano ¿Qué tienes que decir?»\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmcdxliv{Él dijo: «Yo observé lo que ellos no observaron y tomé un puñado de la huella del Mensajero y lo arrojé. Eso fue lo que mi ego me sugirió.»\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmcdxlv{(Moisés) dijo: «¡Vete! En verdad, durante toda tu vida tendrás que decir: ‘¡No me toques!’ Y, en verdad, tienes una cita a la que no podrás faltar. Y mira a tu dios, al cual seguiste con devoción. Lo quemaremos y dispersaremos totalmente sus restos en el mar.»\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmcdxlvi{En verdad, tu dios es Dios. No hay otro dios más que Él. Su conocimiento abarca todas las cosas.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmcdxlvii{Así es como te hemos relatado algunas noticias de lo que sucedió en el pasado. Ciertamente, te hemos dado un Recuerdo procedente de Nosotros.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmcdxlviii{Quien se aparte de él cargará el Día del Levantamiento con un pesado fardo\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmcdxlix{que portará eternamente. ¡Qué mala carga para ellos el Día del Levantamiento!\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmcdl{El día en que sea tocada la trompeta. Y juntaremos ese día a los pecadores con los ojos morados,\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmcdli{que susurrarán entre ellos: “Sólo hemos permanecido diez días [muertos].»\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmcdlii{Nosotros somos quienes mejor sabemos de lo que hablan cuando el mejor de ellos dice: «Sólo permanecisteis un día.»\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmcdliii{Y te preguntan sobre las montañas. Di: «Mi Señor las pulverizará y aventará\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmcdliv{y las dejará como una llanura desértica.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmcdlv{No verás en ella valles ni colinas.»\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmcdlvi{Ese día seguirán a quien les convocará sin cometer un solo error y se apagarán las voces ante el Clementísimo y no escucharás más que un susurro.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmcdlvii{Ese día no servirá la intercesión excepto de aquel a quien el Clementísimo de permiso y de cuya palabra Él esté satisfecho.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmcdlviii{Él conoce lo que ellos tienen entre sus manos y lo que hay a sus espaldas, pero ellos no abarcan el conocimiento que Él posee.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmcdlix{Sus rostros se humillarán ante Quien es la Vida y el Sustentador de la vida y, ciertamente, habrá fallado quien cargue con injusticias.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmcdlx{Y quien haya realizado buenas obras y sea creyente no temerá ser oprimido ni ser tratado injustamente.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmcdlxi{Así es como lo hemos hecho descender, como un Corán árabe, y hemos expuesto en él amonestaciones de distintas maneras para que, quizás así, sean temerosos o les sirva de recuerdo.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmcdlxii{Ensalzado sea Dios, el Soberano verdadero. Y no te apresures con la recitación del Corán antes de que se complete su revelación y di: “¡Señor mío! ¡Incrementa mi conocimiento!\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmcdlxiii{Anteriormente, habíamos aceptado una promesa de Adán pero él la olvidó y no encontramos en él firmeza.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmcdlxiv{Cuando dijimos a los ángeles: «Prosternaos ante Adán.» y se prosternaron todos menos Iblís que se negó.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmcdlxv{Dijimos: «¡Oh, Adán! En verdad, éste es un enemigo para ti y para tu pareja, así que no le permitáis que os saque del Jardín pues sufriríais.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmcdlxvi{En verdad, en él no sufrirás hambre ni desnudez\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmcdlxvii{y en él no pasarás sed ni calor.»\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmcdlxviii{Pero le tentó Satanás. Dijo: «¡Oh, Adán! ¿Puedo mostrarte el árbol de la inmortalidad y del gobierno imperecedero?»\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmcdlxix{Entonces, ambos comieron de él y se les hizo evidente su desnudez y comenzaron a cubrirse mutuamente con hojas del Jardín. Adán desobedeció a su Señor y se extravió.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmcdlxx{Luego, su Señor le escogió, aceptó su arrepentimiento y le guió.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmcdlxxi{Dijo: «Descended ambos de él, todos juntos. Seréis enemigos unos de otros.» Y si viene a vosotros una guía procedente de Mí, quien siga Mi guía no se extraviará ni se sentirá desgraciado.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmcdlxxii{Pero quien se aparte de Mi recuerdo tendrá una vida difícil y el Día del Levantamiento le resucitaremos ciego.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmcdlxxiii{Dirá: «¡Dios mío! ¿Por qué me resucitas ciego, si yo veía?»\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmcdlxxiv{Dirá: «Así como te di Nuestras señales y tú las olvidaste, de la misma manera hoy tú eres olvidado.»\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmcdlxxv{Y a quien se propase y no crea en las señales de su Señor Nosotros le recompensaremos de la misma manera. Y el castigo de la otra vida es peor y más duradero.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmcdlxxvi{¿Es que no les sirve de guía ver cuántas generaciones, por cuyas moradas caminan, hemos destruido antes de ellos? En verdad, en ello hay señales para quienes poseen inteligencia.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmcdlxxvii{Y si no hubiese sido por una palabra previa de tu Señor y por un plazo determinado previamente ellos también lo habrían sido.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mmcdlxxviii{Por tanto, se paciente con lo que dicen y glorifica con alabanzas a tu Señor antes de la salida del Sol y antes de que se oculte. Y glorifícale parte de la noche y en los extremos del día. Quizás así estés satisfecho y feliz.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mmcdlxxix{Y no alargues tus ojos hacia lo que Nosotros hemos proporcionado a algunos de ellos, flor de esta vida mundanal, para ponerles a prueba con ello, pues la provisión de tu Señor es mejor y más duradera.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mmcdlxxx{Y ordena a tu gente la oración y persevera en ella. No te pedimos que nos proveas. Nosotros te proveemos a ti. Y el buen final es para el temor de Dios.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxi{Y dicen: “¿Por qué no nos trae una señal procedente de su Señor?” ¿Acaso no ha venido a ellos la prueba clara de lo que contenían las Escrituras primeras?\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxii{Si Yo les hubiera destruido con un castigo antes de ello, habrían dicho: «¡Señor nuestro! ¿Por qué no nos envías un Mensajero para que sigamos Tus señales antes de que nos alcance la humillación y la desgracia?»\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxiii{Di: «Todos estamos a la espera. Así pues, esperad y pronto sabréis quiénes son la gente del camino llano y quiénes son los guiados.»\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxiv{\basmalahes Se acerca para los seres humanos el momento de rendir cuentas, pero ellos están descuidados y le dan la espalda.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxv{No llega a ellos ningún nuevo recuerdo de su Señor sin que ellos lo escuchen como si fuera un juego,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxvi{vacíos sus corazones. Los opresores secretean entre sí diciendo: «¿Acaso no es éste un ser humano igual que vosotros? ¿Vais, pues, a caer en la magia cuando la estáis viendo?»\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxvii{Él dijo: «Mi Señor sabe lo que se dice en los cielos y en la Tierra, pues Él es Quien todo lo oye, Quien todo lo sabe.»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxviii{Pero ellos dijeron: «¡Son un montón de delirios!» o «¡Se lo ha inventado!» o “¡Es un poeta!» «¡Qué nos traiga una señal como las que les fueron enviadas a los primeros!»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxix{No creyó, antes de ellos, ninguna ciudad de las que Nosotros destruimos ¿Van ellos a creer?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcdxc{Y no hemos enviado antes de ti sino a hombres a los que Nosotros inspiramos. ¡Preguntad a la gente del recuerdo, si es que vosotros no sabéis!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcdxci{No les dimos un cuerpo que no necesitase comer alimentos y no eran inmortales.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcdxcii{Fuimos leales a la promesa que les hicimos y les salvamos a ellos y a quienes Nosotros quisimos y destruimos a los transgresores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcdxciii{Ciertamente, hicimos descender a ti una Escritura en la que hay una amonestación para vosotros. ¿Acaso no razonáis?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcdxciv{¡Cuántas ciudades habremos destruido que eran opresoras y, tras ellas, hicimos surgir a otros pueblos!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmcdxcv{Y cuando sintieron Nuestro castigo huyeron rápidamente de ellas.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcdxcvi{«¡No huyáis y regresad a vuestras distracciones y mansiones! ¡Puede que seáis preguntados!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcdxcvii{Ellos dijeron: «¡Ay de nosotros! ¡En verdad, fuimos opresores!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmcdxcviii{Y no cesó ese lamento hasta que les segamos la vida de raíz y quedaron silenciados.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmcdxcix{No creamos el cielo, la Tierra y lo que hay entre ambos por juego.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmd{De haber querido entretenernos lo hubiéramos hecho por Nosotros mismos, de haberlo hecho.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdi{Pero no. Lanzamos la Verdad sobre lo falso para destruirlo, hasta que desaparece. ¡Ay de vosotros por vuestras conjeturas!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdii{A Él pertenecen quienes están en los cielos y la Tierra. Y quienes están junto a Él no se vuelven arrogantes por adorarle y no se agotan.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdiii{Glorifican noche y día y no se cansan.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdiv{¿Acaso los dioses que tomaron en la Tierra pueden resucitar a los muertos?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdv{Si hubiera en ellos dos otros dioses aparte de Dios, ambos se corromperían. Así pues ¡Glorificado sea Dios, Señor del Trono, por encima de aquello que Le atribuyen!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdvi{Él no será interrogado por lo que hace, pero ellos sí serán interrogados.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdvii{¿Han tomado otros dioses aparte de Él? Di: «¡Aportad vuestras pruebas!» «Este es el Recuerdo de quienes están conmigo y el Recuerdo de los que estaban antes de mí. Pero la mayoría de ellos no conocen la Verdad y se apartan.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdviii{Y no hemos enviado antes de ti a ningún Mensajero sin haberle revelado: «No hay más dios que Yo, así pues, ¡Adoradme!»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdix{Y ellos dicen: «El Clementísimo ha tomado un hijo.» ¡Glorificado sea! No son sino siervos favorecidos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdx{No se adelantan a Él al hablar y actúan conforme a Sus órdenes.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdxi{Él conoce lo que tienen entre sus manos y lo que tienen a sus espaldas y no interceden por la salvación de nadie excepto de quien Él esté satisfecho y sólo por temor a Él se angustian.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdxii{Y si alguno de ellos dijese: «En verdad, yo soy un dios aparte de Él», le recompensaríamos con el Infierno. Así es como recompensamos a los opresores.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdxiii{¿Acaso quienes no creen no ven que los cielos y la Tierra formaban un todo único y Nosotros los separamos e hicimos del agua toda cosa viva? ¿No creerán, pues?\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdxiv{Y pusimos en la Tierra firmes montañas para que se moviera con ellos y dispusimos en ellas amplios caminos para que, quizás así, ellos puedan guiarse.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdxv{Y pusimos el cielo como un techo protegido. Pero ellos dan la espalda a Sus señales.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdxvi{Y Él es Quien creó la noche y el día y el Sol y la Luna. Cada uno navegando en su órbita.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdxvii{Y antes de ti no hemos hecho a ningún ser humano inmortal. ¿Acaso si tú mueres ellos vivirán eternamente?\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdxviii{Todo ser humano probará la muerte y os ponemos a prueba con lo malo y con lo bueno. Y a Mí regresaréis.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdxix{Y cuando los que no creen te ven no te toman sino a broma: «¿Es éste el que habla mal de vuestros dioses?» Mientras, ellos niegan el recuerdo del Misericordioso.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdxx{De la prisa fue creado el ser humano. Pronto os haré ver Mis señales, así que no me metáis prisa.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdxxi{Y dicen: «¿Cuándo se cumplirá esa promesa, si es que decís la verdad?»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdxxii{Si los que no creen supieran que llegará un momento en el que no podrán apartar el Fuego de sus rostros ni de sus espaldas y que no serán auxiliados...\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdxxiii{Llegará a ellos por sorpresa y les dejará anonadados y no podrán eludirlo ni les será aplazado.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdxxiv{Ciertamente, también se burlaron de los profetas anteriores a ti, pero quienes les ridiculizaban fueron cercados por aquello de lo que se burlaban.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdxxv{Di: «¿Quién os protegerá del Misericordioso por la noche y por el día?» Pero no sirve de nada. No prestan atención al Recuerdo de su Señor.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdxxvi{¿Acaso poseen aparte de Mi otros dioses que les protejan? No pueden protegerse a sí mismos ni Nosotros les hemos otorgado poder para auxiliar.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdxxvii{Dejamos que ellos y sus antepasados disfrutasen hasta una edad avanzada. ¿Acaso no ven cómo reducimos los bordes de la Tierra? ¿Acaso son ellos los vencedores?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdxxviii{Di: «En verdad, aquello con lo que os amonesto es la revelación divina.» Pero los sordos no oyen la invitación cuando son amonestados.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdxxix{Pero si les roza un soplo del castigo de tu Señor, con seguridad dirán: «¡Ay de nosotros! ¡En verdad, fuimos injustos!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdxxx{Y colocaremos las balanzas equilibradas con precisión para el Día del Levantamiento y nadie será tratado injustamente en lo más mínimo. Y aunque sus actos tengan el peso de un grano de mostaza, les recompensaremos por ellos. Y Nosotros somos suficientes para llevar las cuentas.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdxxxi{Y, ciertamente, dimos a Moisés y a Aarón el Criterio y una luz y un recuerdo para los temerosos de Dios.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdxxxii{Aquellos que temen a su Señor en la intimidad y sienten temor de la Hora.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdxxxiii{Y éste es un recuerdo bendecido que Nosotros hemos hecho descender. ¿Acaso lo rechazaréis?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdxxxiv{Y, ciertamente, dimos a Abraham su guía anteriormente, pues le conocíamos.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdxxxv{Cuando dijo a su padre y a su pueblo: «¿Qué son esas imágenes sin alma que vosotros adoráis?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdxxxvi{Ellos dijeron: «Vimos que nuestros padres las adoraban.»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdxxxvii{Él dijo: «Ciertamente, vosotros y vuestros padres estabais en un extravío evidente.»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdxxxviii{Ellos dijeron: «¿Vienes a nosotros con la Verdad o eres de los que bromean?»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdxxxix{Él dijo: «No bromeo. Vuestro Señor es el Señor de los cielos y la Tierra y Quien los ha creado. Y yo soy uno de los que dan testimonio de ello.»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdxl{«Y juro por Dios que planearé algo contra vuestros ídolos en cuanto os deis la vuelta.»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdxli{Así que los hizo pedazos, excepto a uno de ellos más grande, para que se volvieran hacia él.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdxlii{Ellos dijeron: «¿Quién hizo esto con nuestros dioses? ¡En verdad, él es de los opresores!»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdxliii{Dijeron: «Oímos a un joven hablar mal de ellos. Le llaman Abraham.»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdxliv{Dijeron: «¡Pues traedle ante la vista de la gente! Quizás así ellos testifiquen.»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdxlv{Dijeron: «¿Has sido tú ¡Oh, Abraham! quien hizo esto a nuestros dioses?»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdxlvi{Él dijo: «No. Lo hizo ese grande. ¡Preguntadles! si es que pueden hablar.»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdxlvii{Así que se ensimismaron y dijeron: «Verdaderamente, vosotros sois los opresores.»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdxlviii{Luego dieron vuelta a sus cabezas: «¿Acaso no sabes que ellos no pueden hablar?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmdxlix{Él dijo: «¿Adoráis pues, en lugar de Dios, a quien no puede beneficiaros ni perjudicaros en nada?\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmdl{¡Uf! ¡Vosotros y lo que vosotros adoráis en lugar de Dios! ¿Es que no reflexionáis?»\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmdli{Dijeron: «¡Quemadle y salid en defensa de vuestros dioses si es que sois gente de acción!»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmdlii{Dijimos: «¡Oh, fuego! ¡Se frío e inofensivo para Abraham!»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmdliii{Quisieron con ello perjudicarle, pero hicimos que ellos fueran quienes más perdieran.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmdliv{Y salvamos a él y a Lot en la tierra que nosotros habíamos bendecido para toda la humanidad.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmdlv{le otorgamos a Isaac y a Jacob como una bendición e hicimos que ambos fueran de los justos.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmdlvi{Y les pusimos como dirigentes para que guiasen conforme a Nuestro mandato y les revelamos que hicieran el bien, que realizaran la oración y entregaran el impuesto religioso purificador de la riqueza. Y fueron siervos obedientes a Nosotros.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmdlvii{Y a Lot le dimos juicio y conocimiento y le pusimos a salvo de la ciudad en la que se cometían actos viciosos. En verdad, era un pueblo malvado y trasgresor.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmdlviii{Y le hicimos entrar en Nuestra misericordia. En verdad, él era de los rectos.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmdlix{Y, anteriormente, a Noé, cuando invocó y Nosotros le respondimos y le salvamos, a él y a su familia, de la gran tragedia.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmdlx{Y le auxiliamos ante la gente que desmentía Nuestras señales. En verdad, eran una mala gente y Nosotros les hicimos ahogarse a todos juntos.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmdlxi{Y (recuerda a) David y Salomón cuando ambos juzgaron sobre el huerto en el que entró de noche a pastar el ganado de una gente y Nosotros fuimos testigos de su juicio.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmdlxii{Nosotros se lo hicimos comprender a Salomón. Y dimos a ambos juicio y conocimiento. Y sometimos las montañas y las aves para que glorificasen con David. Nosotros fuimos Quienes lo hicimos.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmdlxiii{Y le enseñamos a fabricar cotas de malla para vosotros, para que os protegieran de la violencia. ¿Seréis agradecidos?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmdlxiv{Y (sometimos) a Salomón los vientos huracanados, para que soplasen, cuando él lo ordenase, hacia la tierra que Nosotros habíamos bendecido. Y Nosotros poseemos el conocimiento de todas las cosas.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmdlxv{Y, entre los demonios, algunos buceaban para él y realizaban otras tareas diferentes. Y Nosotros les vigilábamos.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmdlxvi{Y (recuerda) a Job, cuando invocó en voz alta a su Señor: «¡En verdad, me ha alcanzado la aflicción y Tú eres el Más Misericordioso de los misericordiosos!»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmdlxvii{Así que le respondimos y eliminamos el mal que le aquejaba. Y le dimos su familia y otro tanto con ellos. Una misericordia de Nuestra parte y un recordatorio para los siervos creyentes.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmdlxviii{Y [recuerda a] Ismael e Idrís y Du l-Kifl. Todos ellos eran de los pacientes\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmdlxix{y les hicimos entrar en Nuestra misericordia. En verdad, ellos eran de los rectos.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmdlxx{Y [recuerda a] Du l-Nun cuando se fue indignado pensando que no le pondríamos en dificultades. Y gritó en la oscuridad: «¡No hay más Dios que Tú! ¡Gloria a Ti! ¡En verdad, he sido de los opresores!»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmdlxxi{Y le respondimos y le salvamos de la angustia. Así es como salvamos a los creyentes.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmdlxxii{Y [recuerda a] Zacarías, cuando invocó a su Señor: «¡Señor mío! ¡No me dejes sin descendencia! ¡Tú eres el mejor dando herederos!»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmdlxxiii{Y le respondimos y le otorgamos a Juan y sanamos a su esposa para él. En verdad, ellos competían en buenas acciones y nos invocaban por anhelo y temor y eran humildes ante Nosotros.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmdlxxiv{Y [recuerda] a aquella que protegió su castidad y en la que Nosotros insuflamos de Nuestro Espíritu. Y pusimos a ella y a su hijo como una señal para toda la humanidad.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmdlxxv{En verdad, esta comunidad vuestra es una comunidad única y Yo soy vuestro Señor. Así pues ¡Adoradme!\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmdlxxvi{Ellos se han dividido en lo relativo a su asunto. Todos regresarán hacia Nosotros.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmdlxxvii{Y no se ignorará el esfuerzo de quien realice buenas acciones y sea creyente. En verdad, Nosotros seremos sus escribanos.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmdlxxviii{Queda prohibido para una ciudad que Nosotros hayamos destruido (por sus pecados, el que vuelvan a ella) Ellos jamás volverán\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmdlxxix{hasta que sean liberados Yayuy y Mayuy y se precipiten desde todas las alturas.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmdlxxx{Se aproxima la promesa verdadera y, cuando llegue, las miradas de los que no creyeron se quedarán inmovilizadas: «¡Ay de nosotros! ¡Nos desentendimos de esto y fuimos opresores!»\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmdlxxxi{«En verdad, vosotros y lo que vosotros adorabais en lugar de Dios, seréis combustible para el Infierno. Entraréis en él.»\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmdlxxxii{Si ellos fueran dioses no entrarían en él. Pero todos ellos estarán en él eternamente.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmdlxxxiii{Aullarán de dolor en él y no oirán nada.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmdlxxxiv{En verdad, aquellos para quienes Nosotros habíamos decretado previamente el bien estarán muy alejados de él.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmdlxxxv{No escucharán su crepitar y estarán eternamente en lo que sus almas deseen.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmdlxxxvi{No les afligirá el gran terror y saldrán a su encuentro los ángeles: «¡Éste es el día que se os había prometido!»\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmdlxxxvii{El día en que Nosotros enrollemos los cielos como se enrolla un pergamino de escritos. Igual que iniciamos la primera creación la repetiremos. Es una promesa que hicimos y, en verdad, lo haremos.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmdlxxxviii{Y, en verdad, escribimos en los Salmos, después del Recuerdo, que la Tierra la heredarían Mis siervos rectos.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmdlxxxix{En verdad, en esto hay un comunicado elocuente para la gente dedicada a la adoración.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmdxc{Y no te hemos enviado sino como una misericordia para toda la humanidad.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmdxci{Di: «En verdad, lo que me ha sido revelado es que vuestro Dios es un Dios Único, por tanto ¿Os someteréis?»\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmdxcii{Pero si dan la espalda di: «Os prevengo a todos por igual. Pero no sé si lo que se os ha prometido está cercano o lejano.»\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmdxciii{«En verdad, Él conoce lo que habláis en voz alta y conoce lo que ocultáis.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmdxciv{No sé. Puede que sea una prueba para vosotros y os permita disfrutar por un tiempo.»\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmdxcv{Dice: «¡Señor mío! ¡Juzga con justicia! ¡Nuestro Señor es el Misericordiosísimo! Nuestra mejor ayuda contra lo que vosotros decís.»\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmdxcvi{\basmalahes ¡Oh, gentes! ¡Temed a vuestro Señor! En verdad, el terremoto de la Hora será una cosa terrible.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdxcvii{El día en que lo veáis, olvidará toda nodriza a su lactante y toda embarazada abortará y verás a las gentes ebrias, pero no estarán ebrias sino que el castigo de Dios será severo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdxcviii{Entre las gentes, hay quienes disputan sobre Dios sin conocimiento y siguen a cualquier demonio rebelde,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdxcix{para el cual se ha decretado que extraviará a cualquiera que le tome por amigo y le conducirá hacia el castigo del Fuego flamígero.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdc{¡Oh, gentes! Si tenéis dudas sobre la resurrección, [sabed que] en verdad, Nosotros os creamos de barro, después de una gota, después de algo suspendido, después de una masa de carne, en parte formada, en parte sin formar, para dejároslo claro. Y depositamos en los senos maternos a quien Nosotros queremos hasta que se cumple un plazo establecido. Luego os sacamos pequeños, luego alcanzáis la madurez y la fuerza. Y de vosotros hay quienes mueren [jóvenes] y a otros se les hace alcanzar una edad tan avanzada que después de haber poseído algún conocimiento no conocen nada. Y ves la tierra árida, pero cuando hacemos que descienda sobre ella el agua, se agita, se esponja y fructifican por parejas todo tipo de plantas coloridas.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdci{Esto es porque Dios es la Verdad y porque Él da vida a lo que estaba muerto y porque Él tiene poder sobre todas las cosas\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdcii{y porque la Hora viene, no hay duda en ello y porque Dios resucitará a quienes están en las tumbas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdciii{Entre la gente hay quien disputa sobre Dios sin conocimiento y sin guía y sin una Escritura luminosa,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdciv{apartándose con arrogancia para desviar [a la gente] del camino de Dios. Será humillado en esta vida y el Día del Levantamiento le haremos probar el castigo abrasador.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdcv{«Eso, por lo que vuestras manos han enviado por delante y porque Dios no oprime a Sus siervos.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdcvi{Y entre la gente hay quien adora a Dios en un solo sentido: Si le sucede algo bueno lo disfruta pero si le viene una prueba cambia su rostro, perdiendo esta vida y la otra. Ésa es la pérdida auténtica.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdcvii{Invoca, en vez de a Dios, lo que no le puede perjudicar ni beneficiar. Ése es el extravío profundo.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdcviii{Invoca a quien más que beneficiar perjudica. ¡Qué mal protector y qué mala compañía!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdcix{En verdad, Dios introduce a quienes son creyentes y obran rectamente en Jardines de cuyas profundidades brotan los ríos. En verdad, Dios hace lo que quiere.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdcx{Quien piense que Dios no le ayudará en esta vida y en la otra, que extienda una cuerda hacia el cielo y corte y vea si su plan elimina aquello que le irritaba.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdcxi{Y así, Nosotros lo hemos hecho descender como una señal clara. Y Dios guía a quien Él quiere.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdcxii{En verdad, Dios establecerá las diferencias entre los creyentes, los judíos, los sabeos, los cristianos y los magos y los politeístas el Día del Levantamiento. En verdad, Dios es testigo de todas las cosas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdcxiii{¿Acaso no habéis visto que para Dios se prosternan quienes están en los cielos y en la Tierra y el Sol y la Luna y las estrellas y las montañas y los árboles y los animales y muchos de los seres humanos? Pero muchos otros merecen el castigo. Quien es humillado por Dios no encontrará quien le honre. En verdad, Dios hace lo que quiere.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdcxiv{Esos dos contendientes se enfrentan por su Señor. Pero a los que no creen les serán cortados vestidos de fuego y desde lo alto de sus cabezas les será arrojada agua hirviente\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdcxv{que fundirá sus entrañas y sus pieles.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdcxvi{Y hay para ellos martillos de hierro.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdcxvii{Cada vez que quieran salir de ello, presos de angustia, se les hará regresar: «Saboread el castigo abrasador.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdcxviii{En verdad, Dios hará entrar a quienes creen y realizan buenas acciones en Jardines de cuyas profundidades brotan los ríos. Serán adornados con brazaletes de oro y perlas y sus vestidos serán allí de seda.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdcxix{Y serán guiados a la buena palabra y serán guiados a la senda del Alabado.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdcxx{En verdad, a quienes no creen y ponen barreras para dificultar el acceso a la senda de Dios y a la Mezquita Sagrada, la cual dispusimos para toda la gente, tanto para los residentes como para los de fuera, y a quienes pretendan cometer en ella injusticia y opresión, les haremos probar del castigo doloroso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdcxxi{Y [recuerda] cuando dispusimos para Abraham el emplazamiento de La Casa: «No asocies nada a Mí y purifica Mi Casa para los que dan vueltas alrededor de ella, para los que permanecen en pie [rezando] y para los que se inclinan y prosternan.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdcxxii{«Y llama a la gente a la peregrinación. Vendrán a ti a pie o en flacos camellos desde todo camino alejado\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdcxxiii{para atestiguar los beneficios que para ellos hay y para recordar el nombre de Dios en los días sabidos, sobre las cabezas del ganado que Él les ha proporcionado.» «¡Comed pues de ellas y alimentad al indigente, al necesitado!»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdcxxiv{«Luego, que limpien su suciedad, que completen sus votos y que circunvalen la Casa Antigua.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdcxxv{Esto es lo ordenado. Y quien respete las prohibiciones establecidas por Dios hará lo mejor para él ante su Señor. «Y es lícito para vosotros todo el ganado, excepto lo que se os ha mencionado. Y absteneos de lo abominable que proviene de los ídolos y absteneos de la palabra vana,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdcxxvi{buscando sólo a Dios, sin asociar nada a Él.» Y quien adora otros dioses junto a Dios es como lo que cae del cielo y las aves lo devoran o lo arrastra el viento a un lugar lejanísimo.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdcxxvii{Así es. Y quien sea reverente con los ritos establecidos por Dios, en verdad, su comportamiento procederá del temor a Dios de los corazones.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdcxxviii{Hay en ello, para vosotros, un beneficio hasta un plazo determinado, hasta que llegue su momento en la Casa Antigua.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdcxxix{Y hemos establecido ritos para todas las comunidades, para que recuerden el nombre de Dios sobre aquellas cabezas de ganado que Él les ha proveído. Vuestro Dios es un Dios Único, por tanto ¡Someteos a Él! Y transmite la buena nueva a los humildes.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdcxxx{Aquellos a quienes, si se les recuerda a Dios, sus corazones tiemblan, son pacientes ante las desgracias, hacen la oración y, de lo que les proveemos, reparten.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdcxxxi{Hemos establecido para vosotros el sacrificio de los camellos como uno de los ritos de Dios. En ello hay un bien para vosotros. Mencionad, pues, el nombre de Dios cuando estén en fila. Y cuando hayan caído sobre sus flancos comed de ellos y alimentad a los necesitados y a los mendigos. Esto es lo que Nosotros hemos dispuesto para vuestro beneficio. Quizás así seáis agradecidos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdcxxxii{Ni su carne ni su sangre llegan a Dios, lo que llega a Él es vuestra piedad. Eso es lo que Dios ha dispuesto para vosotros, para que ensalcéis a Dios por la guía que os ha proporcionado. Y anuncia la buena nueva a los que hacen el bien.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdcxxxiii{En verdad, Dios defiende a quienes tienen fe. En verdad, Dios no ama a ningún traidor ingrato.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdcxxxiv{Se ha dado permiso a quienes son atacados, por haber sido oprimidos. Y, en verdad, Dios tiene poder para auxiliarles.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdcxxxv{Aquellos que han sido expulsados de sus hogares sin derecho, sólo por haber dicho «Dios es nuestro Señor.» Y si Dios no hubiera defendido a unas personas por medio de otras, habrían sido destruidos monasterios, iglesias, sinagogas y mezquitas, en las que se menciona mucho el nombre de Dios. Ciertamente, Dios auxilia a quienes Le auxilian. En verdad, Dios es fuerte, poderoso.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdcxxxvi{Aquellos que, si les damos poder en la Tierra, hacen la oración, dan el impuesto religioso purificador de la riqueza, ordenan lo que está bien y prohíben lo que está mal. Y la conclusión de todos los asuntos está en manos de Dios.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdcxxxvii{Y si te desmienten, también antes de ellos desmintieron el pueblo de Noé y el de Ad y el de Zamud\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdcxxxviii{y el pueblo de Abraham y el pueblo de Lot\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdcxxxix{y los habitantes de Madyan y fue desmentido Moisés. Di un plazo a los que no creían y luego me apoderé de ellos. ¡Cómo fue Mi castigo!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdcxl{¡Cuántas ciudades hemos destruido por haber sido opresoras y quedaron totalmente en ruinas! ¡Cuántos pozos abandonados! ¡Cuántos palacios derrumbados!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdcxli{¿No han viajado jamás por la Tierra con corazones capaces de entender y oídos capaces de escuchar? No es su vista la que está cegada sino los corazones que hay en sus pechos los que no ven.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdcxlii{Te piden que apresures el castigo, pero Dios no falta a Su promesa. Y, en verdad, un día junto a tu Señor es como mil años de los que vosotros contáis.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdcxliii{¡A cuántas ciudades he dado Yo un respiro siendo opresoras y después me apoderé de ellas! El retorno es hacia Mí.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdcxliv{Di: «¡Oh, gentes! ¡Yo soy para vosotros un amonestador claro!»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdcxlv{Y quienes tengan fe y obren rectamente obtendrán perdón y una provisión generosa,\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdcxlvi{pero quienes se esfuercen en despreciar Mis señales serán los moradores del Infierno.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdcxlvii{Y no hemos enviado antes de ti a ningún Mensajero ni profeta que no tuviera un deseo, sin que Satanás se interpusiera en su deseo. Pero Dios anula los obstáculos puestos por Satanás y hace Dios que se cumplan Sus señales, pues Dios todo lo conoce, es sabio,\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdcxlviii{haciendo de los obstáculos de Satanás una prueba para quienes tienen una enfermedad en sus corazones y para los duros de corazón -En verdad, los opresores mantienen un comportamiento profundamente inadecuado-\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdcxlix{y para que sepan quienes obtuvieron conocimiento, que ello es la Verdad que proviene de tu Señor y crean en ella y humillen ante Él sus corazones. En verdad, Dios guía a quienes tienen fe hacia un camino recto.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdcl{Pero quienes no tienen fe no cesarán de dudar de él hasta que llegue a ellos la Hora repentinamente o llegue a ellos el castigo del día del que no nacerá otro.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdcli{Ese día la soberanía pertenecerá a Dios y Él juzgará entre ellos. Y quienes hayan tenido fe y actuado rectamente estarán en los Jardines de las Delicias.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdclii{Y quienes no hayan tenido fe y hayan desmentido Nuestras señales, obtendrán un castigo humillante.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdcliii{Y a quienes emigraron por la causa de Dios y fueron matados o mueran Dios les otorgará, con certeza, una buena provisión. Y, en verdad, Dios es Quien mejor provee.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdcliv{Les hará entrar en un lugar que les satisfará. En verdad, Dios todo lo conoce, es indulgente.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdclv{Así es. A Quien devuelva un agravio semejante al que se le hizo sufrir y posteriormente vuelva a ser agredido, con certeza, Dios le auxiliará. En verdad, Dios es muy indulgente, perdonador.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdclvi{Eso es así porque Dios hace entrar la noche en el día y hace entrar el día en la noche y porque Dios todo lo oye, todo lo ve.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdclvii{Eso es así porque Dios es la Verdad y lo que ellos invocan aparte de Él es falso y porque Dios es el Altísimo, el Grande.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdclviii{¿Acaso no veis que Dios hace descender del cielo agua y la Tierra se vuelve verde? En verdad, Dios es sutil, bien informado.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdclix{A Él pertenece lo que hay en los cielos y lo que hay en la Tierra y, en verdad, Dios es el Rico en Sí mismo, el digno de Alabanza.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdclx{¿Acaso no has visto que Dios ha dispuesto para vosotros lo que hay en la Tierra y los barcos que surcan el mar a una orden Suya y mantiene el cielo para que no caiga sobre la Tierra, excepto con Su permiso. En verdad, Dios es con los seres humanos el más amable, Misericordiosísimo.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmdclxi{Él es Quien os da la vida, luego os hace morir, luego os devuelve a la vida. En verdad, el ser humano es muy desagradecido.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmdclxii{Para cada comunidad hemos establecido un ritual con el que ellos adoran. Por tanto, que no discutan contigo sobre este tema. Invita a la gente hacia tu Señor. En verdad, estás sobre un camino recto.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmdclxiii{Y si discuten contigo, di: «Dios es quien mejor sabe lo que hacéis.»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmdclxiv{Dios juzgará entre vosotros el Día del Levantamiento sobre aquello en lo que no os poníais de acuerdo.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmdclxv{¿Es que no sabéis que Dios conoce los que hay en los cielos y la Tierra? En verdad, todo eso está en una Escritura. En verdad, eso es fácil para Dios.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmdclxvi{Y adoran, en lugar de Dios, algo a lo que Él no ha concedido poder y sobre lo que no poseen ningún conocimiento. Los opresores no tendrán quien les auxilie.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmdclxvii{Y, cuando les son recitados Nuestros versículos claros, reconocerás el rechazo en los rostros de quienes no son creyentes. Poco les falta para lanzarse sobre quienes les recitan Nuestros versículos. Di: «¿Queréis que os informe de algo peor que eso?: Dios ha prometido el Fuego a quienes no son creyentes y ¡Que mal destino!»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmdclxviii{¡Oh, gentes! Se os pone un ejemplo ¡Escuchadle!: «En verdad, aquellos que invocáis en lugar de Dios no crearían ni una mosca aunque se reuniesen todos para ello y si una mosca se llevara algo de ellos no podrían recuperarlo.» ¡Qué débiles el pretendiente y el pretendido!\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmdclxix{No valoran a Dios como Él merece ser valorado. En verdad, Dios es fuerte, poderoso.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmdclxx{Dios elige Mensajeros entre los ángeles y entre los hombres. En verdad, Dios todo lo oye, todo lo ve.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmdclxxi{Él conoce lo que tienen entre sus manos y lo que tienen tras ellos y a Dios regresan todos los asuntos.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmdclxxii{¡Oh, los que sois creyentes! ¡Inclinaos y prosternaos y adorad a vuestro Señor y haced el bien! ¡Quizás así triunféis!\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmdclxxiii{Y esforzaos por Dios con un esfuerzo verdadero por Él! Él os ha elegido y no ha puesto en la religión, la creencia de vuestro padre Abraham, ninguna dificultad para vosotros. Él os ha llamado musulmanes anteriormente y en éste, para que sea el Mensajero testigo sobre vosotros y seáis vosotros testigos sobre la gente. Por tanto, haced la oración, dad el impuesto purificador de la riqueza y aferraos a Dios. Él es vuestro Señor y Protector. Un excelente Protector y un excelente Defensor.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmdclxxiv{\basmalahes Ciertamente, los creyentes han triunfado y se han salvado.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdclxxv{Aquellos que en su oración están atentos y sumisos.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdclxxvi{Aquellos que se apartan de lo superficial.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdclxxvii{Aquellos que dan de sus bienes.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdclxxviii{Aquellos que protegen sus partes privadas\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdclxxix{excepto de sus esposas o de sus esclavas, pues entonces no son censurables.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdclxxx{Quienes busquen más allá de esto serán los transgresores.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdclxxxi{Y aquellos que respetan lo que se les confía, cumplen sus promesas\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdclxxxii{y protegen sus oraciones.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdclxxxiii{Esos serán los herederos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdclxxxiv{Ellos heredarán el Paraíso en el que estarán eternamente.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdclxxxv{Y, ciertamente, hemos creado al ser humano de un trozo de barro.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdclxxxvi{Luego, le hemos creado de una gota en un lugar protegido.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdclxxxvii{Después, de la gota creamos algo suspendido y, de eso suspendido, una masa parecida a carne picada y de eso, huesos y cubrimos los huesos con carne y entonces creamos otra criatura. Por tanto ¡Bendito sea Dios, el mejor de los creadores!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdclxxxviii{Después de eso habréis de morir.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdclxxxix{Luego, el Día del Levantamiento, seréis devueltos a la vida.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdcxc{Y, ciertamente, hemos creado sobre vosotros siete caminos y no estamos descuidados de la creación.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdcxci{Hacemos descender de cielo agua en una determinada cantidad y la almacenamos en la Tierra. Y, en verdad, podríamos hacerla desaparecer.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdcxcii{Y por medio de ella producimos para vosotros jardines de palmeras datileras y viñedos en los que tenéis frutos abundantes de los cuales coméis\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdcxciii{y un árbol que sale en el monte Sinaí que da un fruto en el que hay aceite y condimento para los que comen.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdcxciv{Y, en verdad, hay en el ganado, para vosotros, un motivo de reflexión. Os damos de beber de lo que hay en sus entrañas y obtenéis de él múltiples beneficios y coméis de él\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdcxcv{y montáis en él y en los barcos.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdcxcvi{Y, ciertamente, enviamos a Noé a su pueblo y dijo: «¡Oh, pueblo mío! ¡Adorad a Dios! ¡No tenéis otro Dios que Él! ¿Seréis, pues, temerosos?»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdcxcvii{Pero los notables de su pueblo, que no eran creyentes, dijeron: «No es más que un ser humano como vosotros que quiere obtener una posición de favor entre vosotros y, si Dios hubiese querido, habría hecho descender ángeles». «No hemos escuchado nada de esto de nuestros primeros padres.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdcxcviii{No es más que un hombre poseído. Dadle, pues, un plazo de espera.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdcxcix{Él dijo: «¡Señor mío! ¡Ellos me desmienten, auxíliame Tú!»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdcc{Así que le revelamos: «¡Construye un barco, que Nosotros te observaremos y te inspiraremos!» «Y cuando llegue Nuestra orden y el horno comience a hervir, introduce en él una pareja de todo y a tu familia, excepto aquellos que fueron sentenciados previamente.» «Y no me hables de quienes son opresores. En verdad, ellos serán ahogados.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdcci{«Y cuando tú y quienes están contigo os encontréis instalados en el barco, di: ¡Alabado sea Dios que nos ha salvado del pueblo de los opresores!»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdccii{Y di: «¡Señor mío! ¡Hazme descender en un lugar bendecido, pues Tú eres el mejor haciendo llegar a buen puerto.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdcciii{En verdad, en ello hay señales y en verdad, somos Nosotros quienes ponemos a prueba.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdcciv{Tras ellos hicimos surgir otras generaciones\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdccv{y les enviamos profetas de entre ellos: «¡Adorad a Dios! ¡No tenéis otro Dios que Él! ¿Seréis, pues, temerosos?»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdccvi{Los notables de su pueblo, que no eran creyentes y desmentían el encuentro de la otra vida y a quienes Nosotros habíamos favorecido en esta vida, dijeron: «No es más que un ser humano como vosotros. Come de lo mismo que vosotros coméis y bebe de lo que vosotros bebéis\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdccvii{y si obedecéis a un ser humano como vosotros, entonces, seréis de los perdedores.»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdccviii{«¿Os promete que después de que muráis y seáis polvo y huesos seréis sacados?»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdccix{«¡Qué lejos está de la verdad lo que se os promete!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdccx{No existe más que esta vida. Morimos y nacemos y no seremos resucitados.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdccxi{No es más que un hombre que ha inventado una mentira sobre Dios, pero nosotros no creemos en él.»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdccxii{Él dijo: «¡Señor mío! ¡Ellos me desmienten, auxíliame Tú!»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdccxiii{Dijo (Dios): «¡Muy pronto se arrepentirán!»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdccxiv{Y les sorprendió el Grito con la Verdad y les dejamos como pasto seco. ¡Maldito sea el pueblo opresor!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdccxv{Tras ellos hicimos surgir otras generaciones.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdccxvi{Ninguna comunidad puede adelantar su plazo ni diferirlo.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdccxvii{Luego fuimos enviando a Nuestros Mensajeros uno tras otro. Cada vez que llegaba a una comunidad su Mensajero le desmentían. Así que las destruimos una tras otra e hicimos que fueran solamente una leyenda. ¡Alejado sea el pueblo que no cree!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdccxviii{Luego, enviamos a Moisés y a su hermano Aarón con Nuestras señales y un poder evidente\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdccxix{al Faraón y a sus notables, pero se llenaron de soberbia y fueron un pueblo altivo.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdccxx{Así pues, dijeron: «¿Vamos a creer en un ser humano como nosotros y cuyo pueblo es esclavo nuestro?»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdccxxi{Les desmintieron a ambos y fueron de los destruidos.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdccxxii{Y, ciertamente, dimos a Moisés la Escritura, para que así quizás se guiasen.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdccxxiii{E hicimos del hijo de María y de su madre una señal y les alojamos en una colina fértil y segura provista de manantiales.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdccxxiv{«¡Oh Profetas! ¡Comed de los alimentos puros y obrad rectamente! En verdad, Yo conozco bien lo que hacéis.»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdccxxv{«Y, en verdad, vuestra comunidad es una comunidad única y Yo soy vuestro Señor. Así pues ¡Sed temerosos de Mí!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdccxxvi{Pero ellos se dividieron, cada uno con su Escritura y cada grupo contento con lo que tiene.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdccxxvii{Déjales en su extravío por un tiempo.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdccxxviii{¡Acaso piensan que los bienes y los hijos que les hemos concedido\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdccxxix{es porque nos apresuramos a complacerles? ¡No! Pero no se dan cuenta.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdccxxx{En verdad, quienes por temor a su Señor se estremecen\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdccxxxi{y quienes creen en las señales de su Señor\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdccxxxii{y quienes no adoran nada junto a su Señor\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdccxxxiii{y dan de lo que Yo les doy y sus corazones temen porque regresan hacia su Señor,\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdccxxxiv{esos son quienes se apresuran a realizar buenas obras y van en ello por delante.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdccxxxv{Nosotros no exigimos de nadie más allá de su capacidad. Y junto a Nosotros hay una escritura que dice la verdad y ellos no serán oprimidos.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdccxxxvi{Pero sus corazones ignoran totalmente esto y por ello actúan de manera diferente, sin tenerlo en cuenta.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdccxxxvii{Cuando Nos apoderemos de los que entre ellos vivían en la opulencia y les castiguemos, entonces ellos suplicarán.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdccxxxviii{“¡No supliquéis hoy! ¡No recibiréis Nuestro auxilio!\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmdccxxxix{Se os recitaban Mis versículos y vosotros os dabais media vuelta.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmdccxl{Llenos de soberbia ante ellos, pasabais las noches en charlas delirantes.”\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmdccxli{¿Es que no reflexionaban en el Discurso o es que llegó a ellos algo que no les fue dado a sus primeros padres?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmdccxlii{¿O no reconocen a su Mensajero y por eso le niegan?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmdccxliii{O dicen: «¡Está poseído!» Pero no es así. Ha venido a ellos con la Verdad y a la mayoría de ellos les repugna la Verdad.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmdccxliv{Si la Verdad hubiese seguido sus deseos, se habrían corrompido los cielos y la Tierra y todo lo que hay en ellos. En cambio les dimos su Recuerdo, pero ellos se apartan de su Recuerdo.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmdccxlv{¿Acaso les pides alguna remuneración? La remuneración de tu Señor es mejor y Él es Quien mejor provee\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmdccxlvi{y tú, en verdad, les llamas a un camino recto\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmdccxlvii{pero, verdaderamente, quienes no creen en la otra vida se desvían del camino.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmdccxlviii{Y si tuviésemos misericordia de ellos y eliminásemos sus dificultades, seguramente, persistirían extraviados en su endiosamiento.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmdccxlix{Les castigamos, pero no se someten a su Señor ni le imploran con humildad\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmdccl{hasta que abrimos sobre ellos la puerta de un duro castigo. Entonces se desesperan.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmdccli{Él es Quien ha creado para vosotros el oído, la vista y el intelecto. ¡Qué poco agradecidos sois!\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmdcclii{Y es Él Quien os creó y diseminó por la Tierra y hacia Quien habréis de regresar.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmdccliii{Y es Él Quien da la vida y la muerte y Quien establece la variación de la noche y el día. ¿Es que no razonáis?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmdccliv{Pero dicen lo mismo que dijeron los primeros.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmdcclv{Dicen: “¿Acaso cuando hayamos muerto y seamos polvo y huesos seremos devueltos a la vida?”\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmdcclvi{“Ya se nos había prometido lo mismo anteriormente, a nosotros y a nuestros padres. No son más que fábulas de los primitivos.”\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmdcclvii{Di: «¿A quién pertenece la Tierra y lo que hay en ella, si es que lo sabéis?»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmdcclviii{Dirán: «A Dios» Di: «¿Entonces, por qué no reflexionáis?»\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmdcclix{Di: «¿Quién es el Señor de los siete cielos y el Señor del Trono Inmenso?»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmdcclx{Dirán: «Dios». Di: «¿No seréis, pues, temerosos?»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmdcclxi{Di: «¿Quién tiene el gobierno de todas las cosas en Su mano y otorga protección pero nadie puede protegerse de Él, si es que lo sabéis?»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmdcclxii{Dirán: «Dios» Di: «¿Qué es, entonces, lo que os alucina?»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmdcclxiii{Hemos venido a ellos con la Verdad y ellos la desmienten.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmdcclxiv{Ni Dios ha tenido un hijo ni existe otro dios junto con Él. Pues, en ese caso, cada dios se llevaría lo que hubiese creado y unos se impondrían sobre otros. ¡Glorificado sea Dios sobre aquello que Le atribuyen!\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmdcclxv{Él es el Conocedor de lo oculto y lo manifiesto y está muy por encima de lo que Le asocian.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmdcclxvi{Di: «¡Señor mío! Si me haces ver lo que se les ha prometido\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmdcclxvii{¡Señor mío! no me pongas con el pueblo de los opresores.»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmdcclxviii{Y, en verdad, Nosotros tenemos poder para hacerte ver lo que les hemos prometido.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmdcclxix{Rechaza el mal con lo que es mejor. Nosotros somos Quienes mejor sabemos lo que ellos profieren.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmdcclxx{Y di: «¡Señor mío! Me refugio en Ti del susurro de los demonios\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmdcclxxi{y me refugio en Ti ¡Señor mío! de su presencia cerca de mí.»\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmdcclxxii{Cuando a alguno de ellos le llega la muerte, dice: «¡Señor mío! ¡Hazme regresar\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmdcclxxiii{para que pueda actuar rectamente en aquello que dejé descuidado!» ¡Pero no! Eso no son más que palabras que ellos dicen. Y les está aguardando el mundo intermedio, en el cual estarán hasta que sean devueltos a la vida.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmdcclxxiv{Y, cuando sea soplada la trompeta, ese día no habrá entre ellos lazos de parentesco y no se preguntarán unos por otros.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmdcclxxv{Y aquellos cuyas obras tengan peso en la balanza serán los triunfadores.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmdcclxxvi{Y aquellos cuyas obras no tengan peso en la balanza habrán echado a perder sus almas. Estarán en el Infierno eternamente.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmdcclxxvii{El fuego cortará sus rostros y les desfigurará.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmdcclxxviii{«¿Acaso no se os recitaban Mis versículos y vosotros los desmentíais?»\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmdcclxxix{Dirán: «¡Señor nuestro! Nos vencieron nuestras pasiones y fuimos gente extraviada.»\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmdcclxxx{«¡Señor nuestro! ¡Sácanos de él! Y si reincidimos, seremos entonces opresores.»\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxi{Él dirá: «¡Id a él y no me habléis!»\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxii{«En verdad, había un grupo de Mis siervos que decía: ¡Señor nuestro! ¡Hemos creído! Perdónanos pues y ten misericordia de nosotros ya que Tú eres el mejor de los misericordiosos.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxiii{Pero vosotros les tomabais a broma y os reíais de ellos hasta hacer que os olvidarais de Mí.»\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxiv{«En verdad, hoy les he recompensado por lo pacientes que fueron, pues ellos son los triunfadores.»\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxv{Él dirá: «¿Cuántos años permanecisteis en la Tierra?»\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxvi{Ellos dirán: «Permanecimos un día o parte de un día. Pregunta a quienes llevan la cuenta.»\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxvii{Él dirá: «En verdad, no permanecisteis más que un poco. ¡Si vosotros lo hubieseis sabido!\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxviii{¿Acaso creísteis que os habíamos creado gratuitamente y que no se os haría regresar a Nosotros?»\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxix{Ensalzado sea Dios, el Soberano, la Verdad. No hay más dios que Él. Señor del Noble Trono.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmdccxc{Quien invoca a otro dios junto a Dios no tiene razones para ello y, en verdad, la cuenta de sus actos está junto a su Señor. En verdad, Él no da el éxito a quienes no son creyentes.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmdccxci{Y di: «¡Señor mío! ¡Perdona y ten misericordia! ¡Tú eres el mejor de los misericordiosos!»\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmdccxcii{\basmalahes Una sura que hemos hecho descender y hemos hecho obligatoria. E hicimos descender en ella señales claras para que quizás así reflexionéis.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdccxciii{A la fornicadora y al fornicador castigadles con cien azotes a cada uno. Y si creéis en Dios y en el Último Día no dejéis que la compasión por ellos dos os impida aplicar la pena establecida por Dios. Y que su castigo sea presenciado por un grupo de los creyentes.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdccxciv{Que el fornicador no se case sino con una fornicadora o con una idólatra y que la fornicadora no se case sino con un fornicador o un idólatra. Tal cosa está prohibida para los creyentes.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdccxcv{Y a quienes acusen a mujeres casadas y luego no aporten cuatro testigos, castigadles con ochenta azotes y no aceptéis jamás su testimonio. Esos son los transgresores.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdccxcvi{Excepto quienes, después de ello, se arrepienten y se corrigen, pues, en verdad, Dios es perdonador, Misericordiosísimo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdccxcvii{Y quienes acusen a sus esposas y no aporten más testigos de ello que ellos mismos, que él jure por Dios cuatro veces que dicen la verdad\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdccxcviii{y la quinta vez, [que diga] que Dios le maldiga si lo que dice es mentira.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdccxcix{Pero ella se librará del castigo si jura por Dios cuatro veces que él miente\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdccc{y la quinta vez (ella dice) que la ira de Dios caiga sobre ella si lo que él dice es cierto.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdccci{Y si no hubiera sido por el favor de Dios sobre vosotros y porque Dios acepta el arrepentimiento y es sabio…\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdcccii{En verdad, quienes vinieron con la calumnia son un grupo de entre vosotros. No penséis que es un mal para vosotros. Al contrario, es un bien para vosotros. Cada uno de ellos recibirá conforme a su pecado y el mayor responsable entre ellos tendrá un inmenso castigo.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdccciii{¿Por qué, cuando escuchasteis hablar de ello, los creyentes y las creyentes no pensaron bien para sus adentros y dijeron: «Esto es una calumnia evidente?»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdccciv{¿Por qué no vinieron ellos con cuatro testigos? Al no venir con los testigos, ante Dios, ellos son los mentirosos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdcccv{Si no hubiese sido por el favor y la misericordia de Dios con vosotros en esta vida y en la otra, habrías sufrido un castigo inmenso por el pecado que habéis cometido\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdcccvi{cuando lo pasasteis de unas lenguas a otras, diciendo con vuestras bocas algo de lo que no teníais conocimiento, considerando que era algo sin importancia cuando, ante Dios, es algo grave.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdcccvii{Si no, cuando lo escuchasteis, habríais dicho: «No es algo de lo que nosotros debamos hablar. ¡Gloria a Ti! ¡Eso es una calumnia terrible!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdcccviii{Dios os exhorta a no repetir algo semejante jamás si sois creyentes.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdcccix{Dios os explica con claridad las señales. Dios todo lo conoce, es sabio.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdcccx{En verdad, quienes desean que se extienda la indecencia entre los creyentes tendrán un castigo inmenso en esta vida y en la otra. Y Dios conoce y vosotros no conocéis.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdcccxi{Y si no hubiese sido por el favor de Dios sobre vosotros y por Su misericordia y porque Dios es compasivo, misericordiosísimo…\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdcccxii{¡Oh, creyentes! ¡No sigáis la senda extraviada de Satanás! Y quien siga la senda extraviada de Satanás ha de saber que, en verdad, él ordena los actos indecentes y lo que está mal. Y si no hubiese sido por el favor de Dios sobre vosotros y Su misericordia, ninguno de vosotros habría conseguido jamás ser puro. Pero Dios purifica a quien Él quiere. Y Dios todo lo oye, todo lo conoce.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdcccxiii{Aquellos de vosotros que tienen posición y medios no deben negarse a ayudar a sus familiares, a los necesitados y a quienes han emigrado por la causa de Dios, y deben perdonarles y olvidar. ¿Acaso no queréis que Dios os perdone a vosotros? Y Dios es perdonador, Misericordiosísimo con los creyentes.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdcccxiv{En verdad, quienes acusen a las mujeres casadas honestas, inocentes y creyentes, serán maldecidos en esta vida y en la otra y obtendrán un castigo inmenso\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdcccxv{el día que sus propias lenguas, manos y pies testifiquen contra ellos por lo que hacían.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdcccxvi{Ese día, Dios les otorgará su justa recompensa y sabrán que Dios es la Verdad evidente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdcccxvii{Las mujeres indecentes son para los hombres indecentes y los hombres indecentes para las mujeres indecentes y las buenas mujeres son para los buenos hombres y los buenos hombres para las buenas mujeres. Ellos están libres de lo que dicen. Obtendrán perdón y una provisión generosa.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdcccxviii{¡Oh, creyentes! No entréis en una casa distinta a la vuestra sin anunciaros y sin saludar a su gente. Esto es mejor para vosotros. Quizás así recapacitéis.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdcccxix{Y si no encontráis a nadie en ella, entonces no entréis hasta que obtengáis permiso y si se os dice que regreséis [más tarde] regresad. Eso es más adecuado. Y Dios conoce bien lo que hacéis.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdcccxx{No cometéis nada malo si entráis en una casa deshabitada que contenga algo que os pertenece. Y Dios conoce lo que manifestáis y lo que ocultáis.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdcccxxi{Di a los creyentes que recaten sus miradas y que protejan sus partes privadas. Eso es más puro. En verdad, Dios está bien informado de lo que hacen.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdcccxxii{Y di a las creyentes que recaten sus miradas y protejan sus partes privadas y no muestren sus encantos, excepto lo que está a simple vista. Que cubran sus pechos y que no muestren sus encantos excepto a sus esposos, sus padres, los padres de sus esposos, sus hijos, los hijos de sus esposos, sus hermanos, los hijos de sus hermanos, los hijos de sus hermanas, sus mujeres, sus esclavas, los hombres con deficiencia mental que carezcan de deseo sexual o los niños que aún no reconocen las partes privadas de las mujeres. Y que no golpeen con sus pies para dar a conocer sus encantos ocultos. Volveos todos arrepentidos hacia Dios ¡Oh, creyentes! para que, quizás así, tengáis éxito.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdcccxxiii{Y casad a quienes estén solteros de vuestra gente y a vuestros esclavos y esclavas en condiciones de contraerlo. Si son pobres Dios les enriquecerá con Su favor. Y Dios todo lo abarca, todo lo conoce.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdcccxxiv{Y quienes no cuenten con recursos para contraer matrimonio que mantengan el celibato hasta que Dios les enriquezca con Su favor. Y a quienes, de entre vuestros esclavos, deseen su escritura, escribídsela si sabéis que en ellos hay bien. Y dadles de los bienes de Dios que Él os ha otorgado. Y, buscando obtener las ganancias de esta vida mundanal, no forcéis a vuestras esclavas a la prostitución si desean permanecer célibes. Pero si son obligadas, en verdad, Dios, tras haber sido ellas obligadas, es perdonador, misericordiosísimo.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdcccxxv{Ciertamente, hemos hecho descender para vosotros señales evidentes y ejemplos de quienes vivieron antes que vosotros y amonestación para los temerosos.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdcccxxvi{Dios es la Luz de los cielos y la Tierra. El ejemplo de Su Luz es como un nicho en el que hay una lámpara. La lámpara está en un recipiente de cristal. El cristal es como una estrella resplandeciente. Se enciende gracias a un árbol bendito de aceitunas, que no es oriental ni occidental, cuyo aceite casi alumbra sin que le haya tocado el fuego. Luz sobre luz. Guía Dios a Su Luz a quien Él quiere. Pone Dios los ejemplos para las gentes. Y Dios conoce bien todas las cosas.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdcccxxvii{En casas que Dios ha permitido que sean erigidas y en las que es recordado Su nombre. En ellas Él es glorificado mañana y tarde\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdcccxxviii{por hombres a quienes ni los negocios ni las ventas distraen del recuerdo de Dios, de hacer la oración y de dar el impuesto purificador de la riqueza y que temen el día en el que los corazones y las miradas sean puestos del revés,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdcccxxix{para que Dios les recompense conforme a lomejor que hicieron y les incremente de Su favor. Y Dios provee sin medida a quien Él quiere.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdcccxxx{Y los actos de quienes no creyeron son como un espejismo en una llanura desierta. El sediento cree que es agua hasta que llega a ella y no encuentra nada. Y encontrará a Dios junto a él que le abonará sus cuentas. Y Dios es rápido saldando la cuenta.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxi{O como tinieblas en medio de un mar profundo. Cubierto por olas sobre las que hay más olas sobre las cuales hay nubes. Tinieblas sobre tinieblas. Cuando saca su mano casi no puede verla. A quien Dios no le proporciona luz no dispone de luz alguna.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxii{¿Acaso no has visto que quienes están en los cielos y en la Tierra y las aves con sus alas desplegadas glorifican a Dios? Cada cual sabe como rezar y glorificar y Dios sabe bien lo que ellos hacen.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxiii{A Dios pertenece el reino de los cielos y la Tierra y Dios es el destino final.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxiv{¿No has visto que Dios conduce las nubes y las junta entre sí y las amontona y ves entonces como la lluvia sale de su interior y desciende de las montañas que hay en el cielo el granizo con el que perjudica a quien Él quiere y del que libra a quien Él quiere, y que el resplandor del rayo casi ciega?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxv{Dios alterna la noche y el día. En verdad, en ello hay motivo de reflexión para quienes poseen visión.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxvi{Y Dios ha creado a todos los animales a partir del agua y, de ellos, algunos caminan sobre sus vientres, otros sobre dos piernas y otros sobre cuatro. Dios crea lo que quiere. En verdad, Dios tiene poder sobre todas las cosas.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxvii{Ciertamente, hemos hecho descender señales claras. Y Dios guía a quien Él quiere a un camino recto.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxviii{Ellos dicen: «Creemos en Dios y en el Mensajero y obedecemos.» Después de eso, un grupo de ellos da la espalda y no tiene fe.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxix{Y, cuando son llamados a Dios y a Su Mensajero para que juzgue entre ellos, una parte de ellos se aleja.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdcccxl{Pero cuando el derecho está de su lado vienen a él complacientes.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdcccxli{¿Acaso hay una enfermedad en sus corazones, o tienen dudas, o temen que Dios y Su Mensajero sean injustos con ellos? Al contrario. Ellos son los opresores.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdcccxlii{En verdad, la respuesta de los creyentes cuando son llamados a Dios y a Su Mensajero para que juzgue entre ellos es decir: «¡Oímos y obedecemos!» y ellos son quienes obtienen éxito.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdcccxliii{Quienes obedezcan a Dios y a Su Mensajero y teman a Dios y sean buenos serán los triunfadores.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdcccxliv{Juran por Dios con juramentos solemnes que, si tú se lo ordenases, sí saldrían. Di: «¡No juréis! ¡Dad señales de una obediencia pura! En verdad, Dios está bien informado de lo que hacéis.»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdcccxlv{Di: «¡Obedeced a Dios y obedeced al Mensajero!» Y si dais la espalda, él sólo es responsable de su propia carga y vosotros de la vuestra. Y si le obedecéis estaréis bien guiados. La obligación del Mensajero es únicamente transmitir el mensaje de manera clara.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdcccxlvi{Dios ha prometido que designará herederos y representantes Suyos en la Tierra a quienes de entre vosotros sean creyentes y realicen buenas acciones, igual que designó herederos y representantes Suyos a quienes vinieron antes de ellos. Que hará que fructifiquen y se consoliden las creencias que Él ha hecho satisfactorias para ellos y que transformará el miedo que han pasado en seguridad, si Me adoran sin asociar en su adoración nada junto a Mí. Y quienes abandonen la fe tras eso serán los transgresores.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdcccxlvii{Haced la oración, dad el impuesto que purifica la riqueza y obedeced al Mensajero para que, quizás así, se tenga misericordia de vosotros.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdcccxlviii{No penséis que quienes no creen podrán escapar en la Tierra. Su morada será el fuego. ¡Qué mal destino!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdcccxlix{¡Oh, creyentes! Que vuestros esclavos y quienes de los vuestros todavía no hayan llegado a la pubertad os pidan permiso en tres momentos: Antes de la oración del amanecer, cuando os quitáis vuestros vestidos al mediodía y tras la oración de la noche. Tres momentos de intimidad para vosotros. Después de ellos, no hay falta para vosotros ni para ellos en que os frecuentéis unos a otros. Así es como Dios os aclara sus señales. Y Dios todo los conoce, es sabio.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdcccl{Y cuando vuestros hijos pequeños alcancen la pubertad, que pidan permiso, como pidieron permiso quienes les precedieron.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdcccli{Y las mujeres mayores, que no tienen esperanza de contraer matrimonio, no cometen pecado si relajan su vestimenta sin llegar a mostrar sus adornos. Pero es mejor para ellas que se recaten. Y Dios todo lo oye, es sabio.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdccclii{No hay falta en que el ciego, el lisiado, el enfermo o vosotros mismos, comáis en vuestras casas o en las casas de vuestros padres o de vuestras madres, de vuestros hermanos, de vuestras hermanas, o en las casas de vuestros tíos paternos o de vuestras tías paternas o de vuestros tíos maternos o de vuestras tías maternas o en aquellas de las que poseéis las llaves o en las de vuestros amigos. No hay falta si coméis juntos o separados. Y cuando entréis en las casas saludaos con una fórmula venida de Dios, bendita y buena. Así es como Dios aclara para vosotros Sus señales, para que, quizás de esa manera, reflexionéis.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdcccliii{En verdad, los creyentes son quienes creen en Dios y en Su Mensajero y cuando están con él en un asunto colectivo no se retiran sin pedirle permiso. En verdad, quienes te piden permiso son quienes creen en Dios y en Su Mensajero. Cuando te pidan permiso para algún asunto suyo, autoriza a quien quieras de ellos y pide el perdón de Dios para ellos. En verdad, Dios es perdonador, misericordiosísimo.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdcccliv{No consideréis la invitación del Mensajero como consideráis la invitación de unos a otros. Ciertamente, Dios conoce a quienes de vosotros se retiran con disimulo. Que quienes desobedecen sus órdenes tengan cuidado de que les sobrevenga una prueba penosa o tengan que sufrir un castigo doloroso.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdccclv{¿Acaso, en verdad, no pertenece a Dios lo que hay en los cielos y en la Tierra? Ciertamente, Él conoce bien en lo que estáis. Y el día en el que se les haga regresar a Él, les informará de lo que hacían. Y Dios conoce bien todas las cosas.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdccclvi{\basmalahes Bendito sea Quien hizo descender El Discernimiento a Su siervo para que amoneste a toda la humanidad.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdccclvii{Aquel a quien pertenece la soberanía de los cielos y de la Tierra, que no tiene un hijo y que no comparte la soberanía con nadie y que lo ha creado todo y lo ha determinado absolutamente.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdccclviii{Y ellos toman, en lugar de Él, dioses que nada han creado y que han sido creados y que no poseen poder para perjudicarse a ellos mismos ni para beneficiarse, ni disponen de la muerte, ni de la vida, ni de la resurrección.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdccclix{Y los que no creen dicen: «En verdad, esto no es más que una mentira que él ha inventado con ayuda de otro grupo.» Ciertamente, ellos vienen con opresión y mentiras.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdccclx{Y dicen: «¡Fábulas de los primitivos que él ha pedido que le escriban y que le son leídas mañana y tarde!»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdccclxi{Di: «Lo hace descender Quien conoce el secreto de los cielos y la Tierra. En verdad, Él es perdonador, misericordiosísimo.»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdccclxii{Pero ellos dicen: «¿Qué clase de Mensajero es éste que come alimentos y transita por los mercados? ¿Por qué no se ha hecho que descienda un ángel que amoneste con él\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdccclxiii{o se le ha proporcionado un tesoro o un jardín del que pueda comer?» Y dicen los opresores: «No seguís sino a un hombre hechizado.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdccclxiv{¡Mira con lo que te comparan! Pero se extravían y no pueden encontrar el camino.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdccclxv{Bendito sea Quien, si Él hubiera querido, habría puesto para ti algo mejor que eso, jardines de cuyas profundidades brotasen los arroyos, y habría puesto para ti palacios.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdccclxvi{Pero ellos desmienten la Hora. Y a quienes desmienten la Hora les daremos el fuego infernal.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdccclxvii{Cuando les vea desde lejos, ellos escucharán su furor y bramido.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdccclxviii{Y cuando se les sitúe encadenados en un lugar estrecho y reducido de él, gritarán pidiendo su aniquilación.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdccclxix{«¡No pidáis hoy una simple aniquilación, pedid muchas aniquilaciones!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdccclxx{Di: «¿Es mejor esto o el Jardín de la Eternidad que fue prometido a los temerosos como recompensa y destino final?»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdccclxxi{Allí tendrán eternamente lo que deseen. Es una promesa que obliga a tu Señor.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdccclxxii{Y el día en que Él les reúna a ellos y a lo que ellos adoraban en lugar de Dios, Él dirá: «¿Fuisteis vosotros quienes desviaron a Mis siervos o fueron ellos quienes extraviaron el camino?»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdccclxxiii{Ellos responderán: «¡Glorificado seas! No era adecuado para nosotros tomar protectores aparte de Ti, pero Tú les permitiste disfrutar a ellos y a sus padres hasta que olvidaron el Recuerdo y fueron un pueblo echado a perder.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdccclxxiv{Ciertamente, ellos desmentirán lo que vosotros decís y no podréis cambiar ni ser auxiliados y a quien de vosotros oprima le haremos probar un gran castigo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdccclxxv{Y no hemos enviado antes de ti Mensajero alguno que no comiera alimentos y fuese a los mercados. Y os pusimos a unos como prueba para los otros ¿Seréis pacientes? Y tu Señor todo lo ve.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdccclxxvi{Quienes no esperan el encuentro con Nosotros dicen: «¿Por qué no se hace que desciendan los ángeles a nosotros o que veamos a nuestro Señor?» Ciertamente, sus almas se han llenado de arrogancia y endiosado enormemente.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdccclxxvii{El día que vean a los ángeles, no habrá para los pecadores buenas noticias y dirán: «¡Dadnos refugio!»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdccclxxviii{Nos ocuparemos de cada obra que realizaron y la dejaremos como polvo disperso en el aire.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdccclxxix{Ese día la gente del Jardín estará en la mejor morada y en el mejor lugar de descanso.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdccclxxx{El día en el que el cielo y las oscuras nubes se abran y se haga descender a los ángeles de forma majestuosa.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxi{Ese día la soberanía verdadera pertenecerá al Misericordiosísimo y será un día difícil para los que no creían.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxii{Un día en el que el opresor se morderán las manos diciendo: «¡Ojalá hubiese tomado el camino junto al Mensajero!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxiii{¡Ay de mí! ¡Ojalá no hubiese tomado a fulano como amigo!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxiv{¡Después de que el recuerdo había llegado a mí, me desvió de él!» ¡Ciertamente, Satanás siempre deja al hombre abandonado!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxv{Y el Mensajero dirá: «¡Oh, Señor mío! ¡En verdad, mi pueblo ha abandonado este Corán!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxvi{Y, así mismo, designamos a cada profeta un enemigo de entre los pecadores, pero tu Señor es suficiente guía y auxilio.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxvii{Y los que no creen dicen: «¿Por qué no le ha sido revelado el Corán de una sola vez?» Así es, te lo hemos recitado gradual y ordenadamente para afianzar con ello tu corazón.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxviii{No vendrán a ti con un argumento sin que Nosotros te traigamos la verdad y una interpretación mejor.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxix{Aquellos que sean reunidos frente al Infierno serán quienes tengan el peor lugar y el camino más extraviado.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdcccxc{Y, ciertamente, dimos a Moisés la Escritura y pusimos a su hermano Aarón para que le ayudase.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdcccxci{Y dijimos: «Id al pueblo que desmiente Nuestras señales.» Y les destruimos totalmente.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdcccxcii{Y cuando las gentes del pueblo de Noé desmintieron a los Mensajeros, les ahogamos e hicimos de ellos una señal para las gentes. Hemos preparados para los opresores un castigo doloroso.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdcccxciii{Y a Ad y a Zamud y a los habitantes de Al-Rass y a muchas generaciones entre ellos.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdcccxciv{A todos ellos les pusimos ejemplos. Y a todos ellos les destruimos totalmente.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdcccxcv{Ciertamente, ellos han pasado por la ciudad sobre la que cayó una lluvia maléfica. ¿Acaso no la han visto? Lo que sucede es que no esperan ser resucitados.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdcccxcvi{Cuando te ven se burlan de ti: «¿Éste es al que Dios ha designado Mensajero?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdcccxcvii{Casi nos desvía de nuestros dioses si no hubiera sido porque hemos sido perseverantes con ellos.» Pronto sabrán, cuando vean el castigo, quien está más desviado del camino.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdcccxcviii{¿Has visto a quien ha tomado como dios a sus pasiones? ¿Acaso eres tú su protector?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdcccxcix{¿Crees que la mayoría de ellos escuchan o razonan? La verdad es que son como el ganado. No, aún más extraviados del camino.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmcm{¿Acaso no has visto cómo tu Señor alarga la sombra? Si Él hubiese querido habría hecho que permaneciera inmóvil. Pusimos al Sol como causa de su existencia.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmcmi{Luego, la recogemos hacia Nosotros lenta y suavemente.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmcmii{Él es Quien ha hecho para vosotros de la noche una vestidura y del sueño descanso y del día movimiento y búsqueda de la provisión.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmcmiii{Y Él es Quien envía los vientos como portadores de buenas noticias, anunciando Su misericordia. Y hacemos descender del cielo agua purificadora\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmcmiv{con la que Nosotros revivimos una tierra muerta y con la que damos de beber a muchos animales y humanos de los que hemos creado.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcmv{Y, ciertamente, la distribuimos entre ellos para que reflexionen. Pero la mayoría de las personas se niegan a ser agradecidos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcmvi{Si hubiéramos querido habríamos enviado un amonestador a cada ciudad.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcmvii{No obedezcas, pues, a quienes no creen y libra con él una gran batalla contra ellos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcmviii{Y Él es Quien ha unido los dos mares, uno de aguas dulces y agradables y el otro de aguas saladas y amargas y ha puesto entre ambos una barrera y un límite infranqueable.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcmix{Y es Él Quien ha creado del agua al ser humano y dispuso para él lazos familiares paternos y maternos. Tu Señor es poderoso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcmx{Pero ellos adoran en lugar de Dios lo que no puede beneficiarles ni perjudicarles. Quien no es creyente es un ayudante contra su Señor.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcmxi{Y no te hemos enviado sino como portador de buenas nuevas y amonestador.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcmxii{Di: «No os pido por ello una recompensa excepto que quien quiera tome un camino hacia su Señor.»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcmxiii{Y confía en el Vivo que no muere y glorifícale con alabanzas. Él es suficiente para estar informado de los pecados de Sus siervos.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcmxiv{Él es Quien creó en seis días los cielos y la Tierra y lo que entre ambos hay. Luego, Se estableció sobre el Trono. El Clementísimo. Pregúntale, pues Él está bien informado.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcmxv{Y si se les dice: «¡Prosternaos para el Clementísimo!” dicen: “¿Y qué es el Clementísimo? ¿Habremos de prosternarnos ante lo que nos ordenéis?» Y se incrementa su rechazo.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcmxvi{Bendito sea Quien ha puesto constelaciones en el cielo y ha puesto en él una lámpara y una Luna luminosa.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcmxvii{Y Él es Quien ha puesto la noche y el día sucediéndose, para quien quiera reflexionar o quiera agradecer.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcmxviii{Y los siervos del Clementísimo son quienes van por la Tierra con humildad y si los ignorantes se dirigen a ellos, les dicen: «¡Paz!»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcmxix{y quienes pasan parte de la noche prosternados o en pie para su Señor\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcmxx{y quienes dicen: «¡Señor nuestro! ¡Aparta de nosotros el castigo del Infierno!» En verdad, su castigo es abrumador y eterno.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcmxxi{Una mala residencia y morada.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcmxxii{Y quienes, cuando gastan, no despilfarran ni son tacaños, pues el equilibrio está entre ambos extremos.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmcmxxiii{Y quienes no invocan junto a Dios a otro dios y no matan al ser humano, pues Dios lo ha prohibido, excepto por causa justa, y no cometen fornicación ni adulterio. Y quien haga tales cosas se encontrará con su castigo.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmcmxxiv{Les será doblado el castigo el Día del Levantamiento y en él permanecerán eternamente humillados.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmcmxxv{Excepto quienes se arrepientan y tengan fe y realicen buenas acciones, pues a ellos Dios les cambiará el mal por bien. Dios es perdonador, misericordiosísimo.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmcmxxvi{Y quien se arrepiente y realiza buenas acciones, en verdad, regresa hacia Dios.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmcmxxvii{Y aquellos que no dan falso testimonio y que cuando se tropiezan con palabras vanas pasan de largo con dignidad.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcmxxviii{Y aquellos a quienes, si les son recordadas las señales de su Señor, no las reciben con oídos sordos y ojos ciegos.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmcmxxix{Y aquellos que dicen: «¡Oh, Señor nuestro! ¡Haz que nuestras esposas y nuestros hijos sean la alegría de nuestros ojos y sitúanos al frente de los temerosos de Dios!»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmcmxxx{Ellos serán recompensados por su paciencia con un alto aposento y allí serán recibidos con ofrendas y saludos de paz.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcmxxxi{Allí estarán eternamente. ¡Excelente lugar y residencia!\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcmxxxii{Di: «¡Mi Señor no os prestará atención si no le suplicáis! Desmentíais y pronto seréis castigados.»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcmxxxiii{\basmalahes Ta, Sim, Mim\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcmxxxiv{Estos son los versículos de la Escritura clara.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcmxxxv{Puede que quieras morir de pena porque no son creyentes.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmcmxxxvi{Si hubiéramos querido habríamos hecho descender del cielo sobre ellos una señal ante la que sus cuellos se inclinarían humillados.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcmxxxvii{No llega a ellos ningún nuevo recuerdo del Clementísimo sin que ellos se aparten de él.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcmxxxviii{Ciertamente, desmienten, pero pronto les llegarán las noticias de aquello de lo que se burlaban.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcmxxxix{¿Acaso no ven como hemos hecho crecer en la Tierra parejas de todo tipo de plantas hermosas y buenas?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcmxl{En verdad, en ello hay una señal, pero la mayoría de ellos no tiene fe.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcmxli{Y, en verdad, tu Señor es el Todopoderoso, el Misericordiosísimo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcmxlii{Y (recuerda) cuando tu Señor llamó a Moisés: «¡Ve al pueblo de los opresores!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcmxliii{El pueblo del Faraón ¿Por qué no temen a Dios?»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmcmxliv{Dijo él: «¡Señor mío! Temo que me desmientan\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcmxlv{y que mi pecho se angustie y mi lengua no sea suficientemente elocuente. Envía, pues, a Aarón.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcmxlvi{¡Y tienen cargos contra mí y temo que me maten!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmcmxlvii{Dijo Él: «¡No será así! ¡Id, pues, ambos con Nuestras señales! En verdad, Nosotros estaremos escuchando junto a vosotros.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmcmxlviii{Id, pues, al Faraón y decidle: “En verdad, soy un Mensajero del Señor del Universo\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmcmxlix{para que dejes ir con nosotros a los Hijos de Israel.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmcml{Dijo [Faraón]: «¿Acaso no te hemos criado entre nosotros de pequeño y permaneciste entre nosotros muchos años de tu vida\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmcmli{y luego hiciste lo que hiciste? Eres de los desagradecidos.»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmcmlii{Dijo: «Hice eso cuando era de los extraviados\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmcmliii{y huí porque tuve miedo de vosotros, pero mi Señor me otorgó juicio y me hizo uno de Sus Mensajeros.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmcmliv{Y éste es el favor que me has hecho: esclavizar a los Hijos de Israel.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmcmlv{Faraón dijo: «¿Y qué es eso de ‘el Señor del Universo’?»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmcmlvi{Dijo: «El Señor de los cielos y de la Tierra y de lo que hay entre ambos, si es que sois gente de certezas.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmcmlvii{Dijo a quienes estaban a su alrededor: «¿No estáis oyendo?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmcmlviii{Dijo: «Señor vuestro y Señor de vuestros primeros padres.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmcmlix{Dijo: «¡En verdad, ese Mensajero que os ha sido enviado está loco!»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmcmlx{Dijo: «El Señor del Oriente y del Occidente y de lo que entre ambos hay, si es que razonáis.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmcmlxi{Dijo: «Si tomas otro dios diferente a mí, te pondré entre los que están en la cárcel.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmcmlxii{Dijo: «¿Aunque te traiga algo evidente?»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmcmlxiii{Dijo: «¡Tráelo pues, si eres de los que dicen la verdad!»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmcmlxiv{Entonces, lanzó su bastón y fue claramente una serpiente\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmcmlxv{y sacó su mano y era blanca para los que observaban.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmcmlxvi{Dijo a los principales que había a su alrededor: «¡En verdad, éste es un mago muy experto!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmcmlxvii{Quiere echaros de vuestra tierra por medio de su magia, así pues, ¿Qué queréis que haga?»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmcmlxviii{Dijeron: «Dales un plazo a él y a su hermano y envía unos emisarios a las ciudades.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmcmlxix{Que te traigan todos los magos expertos.»\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmcmlxx{Así pues, fueron congregados los magos en el lugar acordado para el encuentro el día establecido\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmcmlxxi{y se dijo a la gente: «¿Queréis acudir?»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmcmlxxii{«Quizás así sigamos a los magos si son ellos los vencedores.»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmcmlxxiii{Así que, cuando llegaron los magos, dijeron al Faraón: «¿Obtendremos una recompensa si somos los vencedores?»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmcmlxxiv{Dijo: «Sí. Y, en verdad, seréis entonces de los cercanos a mí.»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmcmlxxv{Moisés les dijo: «¡Lanzad lo que tengáis que lanzar!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmcmlxxvi{Así pues, lanzaron sus cuerdas y bastones y dijeron: «¡Por el poder del Faraón! ¡Con seguridad, seremos los vencedores!»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmcmlxxvii{Entonces, Moisés lanzó su bastón y éste engulló inmediatamente lo que ellos habían transformado.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmcmlxxviii{Los magos cayeron prosternados.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmcmlxxix{Dijeron: «¡Creemos en el Señor del Universo!\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmcmlxxx{El Señor de Moisés y de Aarón.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxi{Dijo: «¿Habéis creído en él antes de que yo os diera permiso? En verdad, él es el mayor de vosotros y quien os ha enseñado la magia. ¡Vais a saber! ¡Os cortaré las manos y los pies opuestos y os crucificare a todos!»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxii{Dijeron: «No nos perjudicará. En verdad, nosotros regresaremos a nuestro Señor.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxiii{Verdaderamente, tenemos esperanza de que nuestro Señor perdone nuestros errores por haber sido los primeros en creer.»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxiv{Y revelamos a Moisés: «Parte con Mis siervos durante la noche, pues seréis perseguidos.»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxv{Entonces, el Faraón envió emisarios a las ciudades:\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxvi{«En verdad, ellos son una pequeña banda.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxvii{y, en verdad, han provocado nuestra ira,\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxviii{pero nosotros somos un colectivo que está en guardia.»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxix{Y les sacamos de los jardines y las fuentes\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcmxc{y de los tesoros y espléndidos lugares.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcmxci{Así fue. Y se lo dimos en herencia a los Hijos de Israel.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcmxcii{Entonces les persiguieron al amanecer.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcmxciii{Y cuando los dos grupos se vieron, los compañeros de Moisés dijeron: «En verdad, nos están alcanzando.»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcmxciv{Dijo [Moisés]: «No. En verdad, mi Señor está conmigo y me guiará.»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcmxcv{Entonces revelamos a Moisés: «¡Golpea el mar con tu bastón!» y éste se partió y cada una de las partes era como una montaña inmensa.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcmxcvi{Luego, hicimos que los otros se acercarán\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcmxcvii{y salvamos a Moisés y a todos los que con él estaban\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcmxcviii{y entonces ahogamos a los otros.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcmxcix{En verdad, en ello hay una señal. Y la mayoría de ellos no eran creyentes.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmm{Y, en verdad, tu Señor es el Poderoso, el Misericordiosísimo.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmi{Y relátales la historia de Abraham\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmii{cuando dijo a su padre y a su pueblo: «¿Qué es lo que adoráis?»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmiii{Dijeron: «Adoramos ídolos y continuaremos haciéndolo.»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmiv{Dijo: «¿Acaso os escuchan si les llamáis\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmv{u os benefician o perjudican?»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmvi{Dijeron: «No. Pero encontramos que nuestros padres hacían lo mismo.»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmvii{Dijo: «¿Habéis visto, pues, lo que estabais adorando\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmviii{vosotros y vuestros antepasados?\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmix{Ellos son enemigos para mí, pero no el Señor del Universo,\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmx{el Cual me ha creado y es Quien me guía\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmxi{y Quien me alimenta y me da de beber\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmxii{y cuando estoy enfermo me cura\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmxiii{y Quien me hará morir y luego me dará la vida\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmxiv{y Quien, espero, perdonará mis errores el Día de la Recompensa.»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmxv{«¡Dios mío! ¡Otórgame juicio y reúneme con los Rectos!»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmxvi{«Y dame una lengua sincera ante las generaciones futuras.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmxvii{Y ponme entre los herederos del Jardín de las Delicias.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmxviii{y perdona a mi padre. En verdad, él era de los extraviados.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmxix{Y no me dejes sin ayuda el día en que sean devueltos a la vida.»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmxx{El día en el que en nada beneficien bienes ni hijos,\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmxxi{sino el llegar a Dios con un corazón sano\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmxxii{y sea aproximado el Jardín para los temerosos de Dios\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmxxiii{y se muestre el Infierno a los extraviados\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmxxiv{y se les pregunte: “¿Dónde está lo que adorabais\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmxxv{en lugar de Dios? ¿Os auxilian o se auxilian entre ellos?”\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmxxvi{Entonces, serán arrojados de cara a él, ellos y los extraviados unos tras otros\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmmxxvii{y el ejército de Iblís, todos juntos.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmmxxviii{Allí, peleando entre ellos, dirán:\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmmxxix{«¡Por Dios que estábamos en un extravío evidente\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmmxxx{cuando os equiparábamos con el Señor del Universo!\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmmxxxi{¡Nadie, sino los pecadores, nos extraviaron!\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmmxxxii{Ahora no tenemos quien interceda por nosotros,\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmmxxxiii{ni amigo intimo.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmmxxxiv{Si hubiera para nosotros otra oportunidad seríamos de los creyentes.»\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmmxxxv{En verdad, es esto hay una señal, pero la mayoría no cree.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmmxxxvi{Y, en verdad, tu Señor es el Todopoderoso, el Misericordiosísimo.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmmxxxvii{El pueblo de Noé desmintió a los Mensajeros\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmmxxxviii{cuando su hermano Noé les dijo: «¿No vais a ser temerosos de Dios?\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmmxxxix{En verdad, soy para vosotros un Mensajero digno de confianza.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmmxl{Temed, pues, a Dios y obedecedme.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmmxli{No os pido por ello una recompensa. Mi recompensa sólo concierne al Señor del Universo.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmmxlii{Temed, pues, a Dios y obedecedme.»\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmmxliii{Dijeron: «¿Vamos a seguirte cuando sólo te siguen los de abajo?»\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmmxliv{Dijo: «Yo no tengo conocimiento de lo que ellos hacen,\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmmxlv{pues su cuenta la lleva sólo mi Señor ¿No lo comprendéis?\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmmxlvi{No voy yo a rechazar a los creyentes.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmmxlvii{En verdad, yo sólo soy un amonestador que habla con claridad.»\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmmxlviii{Ellos dijeron: «Si no cesas ¡Oh Noé! ten por seguro que te lapidaremos.»\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmmxlix{Él dijo: «¡Señor mío! ¡Mi pueblo me desmiente!\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmml{Abre, pues, entre yo y ellos una brecha y sálvame a mí y a los creyentes que están conmigo.»\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmmli{Así pues, salvamos, en el Arca repleta a él y quienes con él estaban.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmmlii{Luego, ahogamos a los que quedaron.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmmliii{En verdad, en ello hay una señal. La mayoría de ellos no creían.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmmliv{Y en verdad, tu Señor es el Todopoderoso, el Misericordiosísimo.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmmlv{El pueblo de Ad desmintió a los Mensajeros\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmmlvi{cuando su hermano Hud les dijo: «¿No vais a ser temerosos de Dios?\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmmlvii{En verdad, soy para vosotros un Mensajero digno de confianza.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmmlviii{Temed, pues, a Dios y obedecedme.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmmlix{No os pido por ello una recompensa. Mi recompensa sólo concierne al Señor del Universo.»\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmmlx{«¿Vais a construir vanamente una señal en cada promontorio\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmmlxi{y castillos como si fueseis a vivir eternamente?\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mmmlxii{Y cuando hacéis uso de la fuerza la ejercitáis con prepotencia.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mmmlxiii{Temed, pues, a Dios y obedecedme.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mmmlxiv{Y temed a Quien os ha beneficiado con lo que sabéis.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mmmlxv{Os ha beneficiado con ganado e hijos,\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mmmlxvi{con jardines y viñedos.»\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mmmlxvii{«En verdad, temo para vosotros el castigo de un día grandioso.»\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mmmlxviii{Ellos dijeron: «Nos da igual que nos amonestes o que no nos amonestes.\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@mmmlxix{Eso no es más que el comportamiento de los primitivos.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@mmmlxx{y nosotros no seremos castigados.»\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@mmmlxxi{Así pues, le desmintieron y Nosotros les destruimos. En verdad, en ello hay una señal. La mayoría de ellos no creía.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@mmmlxxii{Y, en verdad, tu Señor es el Todopoderoso, el Misericordiosísimo.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@mmmlxxiii{El pueblo de Zamud desmintió a los Mensajeros\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@mmmlxxiv{cuando su hermano Salih les dijo: «¿No vais a ser temerosos de Dios?\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@mmmlxxv{En verdad, soy para vosotros un Mensajero digno de confianza.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@mmmlxxvi{Temed, pues, a Dios y obedecedme.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@mmmlxxvii{No os pido por ello una recompensa. Mi recompensa sólo concierne al Señor del Universo.»\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@mmmlxxviii{«¿Acaso se os dejará en todo esto a salvo?\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@mmmlxxix{¿En los jardines y viñedos\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@mmmlxxx{cultivos y palmerales de frutos dulces y maduros,\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@mmmlxxxi{excavando casas en la montaña con maestría?»\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@mmmlxxxii{«Temed, pues, a Dios y obedecedme\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@mmmlxxxiii{y no obedezcáis las órdenes de los inmoderados,\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@mmmlxxxiv{que corrompen en la Tierra y no corrigen lo que está mal.»\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@mmmlxxxv{Ellos dijeron: «En verdad, tú estás embrujado.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@mmmlxxxvi{Tú no eres más que un ser humano como nosotros. Tráenos una señal si eres de los que dicen la verdad.»\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@mmmlxxxvii{Él dijo: «Aquí tenéis una camella. Ella tendrá su turno para beber y vosotros el vuestro los días señalados.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@mmmlxxxviii{Y no la maltratéis, pues sufriríais el castigo de un día grandioso.»\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@mmmlxxxix{Pero la desjarretaron y luego se arrepintieron.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@mmmxc{Y fueron castigados. En verdad, en ello hay una señal. La mayoría de ellos no creían.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@mmmxci{Y, en verdad, tu Señor es el Todopoderoso, el Misericordiosísimo.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@mmmxcii{El pueblo de Lot desmintió a los Mensajeros\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@mmmxciii{cuando su hermano Lot les dijo: «¿No vais a ser temerosos de Dios?\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@mmmxciv{En verdad, soy para vosotros un Mensajero digno de confianza.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@mmmxcv{Temed, pues, a Dios y obedecedme.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@mmmxcvi{No os pido por ello una recompensa. Mi recompensa sólo concierne al Señor del Universo.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@mmmxcvii{¿Vais a los varones de los seres humanos\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@mmmxcviii{abandonando a las mujeres que Dios ha creado para vosotros? Sois un pueblo trasgresor.»\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@mmmxcix{Ellos dijeron: «Si no cesas ¡Oh, Lot! serás expulsado.»\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@mmmc{Él dijo: «En verdad, soy de los que detestan vuestra conducta.\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@mmmci{¡Dios mío! ¡Sálvame junto a mi familia de lo que hacen!»\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@mmmcii{Y les salvamos, a él y a su familia, a todos ellos.\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@mmmciii{Excepto a una mujer anciana que se quedó.\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@mmmciv{Entonces, destruimos a los otros\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@mmmcv{haciendo caer una lluvia sobre ellos. ¡Qué mala la lluvia de quienes habían sido amonestados!\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@mmmcvi{En verdad, en ello hay una señal. La mayoría de ellos no creían.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@mmmcvii{Y, en verdad, tu Señor es el Todopoderoso, el Misericordiosísimo.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@mmmcviii{El pueblo de Al-Aykah desmintió a los Mensajeros\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@mmmcix{cuando Shuayb les dijo: «¿No vais a ser temerosos?\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@mmmcx{En verdad, soy para vosotros un Mensajero digno de confianza.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@mmmcxi{Temed, pues, a Dios y obedecedme.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@mmmcxii{No os pido por ello una recompensa. Mi recompensa sólo concierne al Señor del Universo.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@mmmcxiii{¡Dad con equidad la medida y no seáis de los que sisan!\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@mmmcxiv{¡Y pesad con una balanza ajustada!\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@mmmcxv{Y no deis de menos a la gente en sus cosas al pesar y medir y no corrompáis en la Tierra.\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@mmmcxvi{Y temed a Quien os ha creado a vosotros y a las generaciones primeras.»\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@mmmcxvii{Ellos dijeron: «¡En verdad, tú estás embrujado!»\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@mmmcxviii{y «Solamente eres un ser humano como nosotros y creemos que eres un mentiroso.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@mmmcxix{Haz que caiga sobre nosotros un trozo de cielo, si eres de los que dicen la verdad.»\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@mmmcxx{El dijo: «Mi señor es Quien mejor sabe lo vosotros hacéis.»\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@mmmcxxi{Así que le desmintieron y les alcanzó el castigo del día de la nube que les daba sombra. En verdad, fue el castigo de un día grandioso.\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@mmmcxxii{En verdad, en ello hay una señal. La mayoría de ellos no creían.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@mmmcxxiii{Y en verdad, tu Señor es el Todopoderoso, el Misericordiosísimo.\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@mmmcxxiv{Y, en verdad, lo hace descender el Señor del Universo.\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@mmmcxxv{Lo baja el Espíritu digno de confianza\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@mmmcxxvi{sobre tu corazón, para que seas de los amonestadores,\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@mmmcxxvii{en lengua árabe clara.\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@mmmcxxviii{Y, en verdad, ello estaba en la Escrituras de los primeros.\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@mmmcxxix{¿Acaso no es una señal para ellos que los sabios de los Hijos de Israel lo supieran?\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@mmmcxxx{Y si lo hubiéramos hecho descender sobre alguien no árabe\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@mmmcxxxi{y se lo hubiera recitado a ellos no habrían creído en él.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@mmmcxxxii{Así es como lo hacemos entrar en el corazón de los pecadores:\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@mmmcxxxiii{No creerán en él hasta que vean el castigo doloroso.\qt@no{(201)}}
+\qt@newcmd\qurantrans@es@mmmcxxxiv{Y llegará a ellos por sorpresa y ellos no se darán cuenta.\qt@no{(202)}}
+\qt@newcmd\qurantrans@es@mmmcxxxv{Entonces dirán: «¿Se nos dará un plazo?»\qt@no{(203)}}
+\qt@newcmd\qurantrans@es@mmmcxxxvi{¿Acaso no pedían que se apresurase Nuestro castigo?\qt@no{(204)}}
+\qt@newcmd\qurantrans@es@mmmcxxxvii{¿No has visto que les dejaremos disfrutar unos años\qt@no{(205)}}
+\qt@newcmd\qurantrans@es@mmmcxxxviii{y luego llegará a ellos lo que les ha sido prometido?\qt@no{(206)}}
+\qt@newcmd\qurantrans@es@mmmcxxxix{De nada les habrá servido lo que hayan disfrutado.\qt@no{(207)}}
+\qt@newcmd\qurantrans@es@mmmcxl{Y no hemos destruido ciudad alguna sin antes haberles amonestado\qt@no{(208)}}
+\qt@newcmd\qurantrans@es@mmmcxli{para que recordasen, pues no somos opresores.\qt@no{(209)}}
+\qt@newcmd\qurantrans@es@mmmcxlii{No han sido los demonios quienes han descendido con él.\qt@no{(210)}}
+\qt@newcmd\qurantrans@es@mmmcxliii{No les corresponde a ellos ni tienen poder para hacerlo.\qt@no{(211)}}
+\qt@newcmd\qurantrans@es@mmmcxliv{En verdad, ellos están lejos de oírlo.\qt@no{(212)}}
+\qt@newcmd\qurantrans@es@mmmcxlv{Y no invoques junto a Dios a ningún otro dios, pues serías de los castigados.\qt@no{(213)}}
+\qt@newcmd\qurantrans@es@mmmcxlvi{Y amonesta a tus familiares más cercanos\qt@no{(214)}}
+\qt@newcmd\qurantrans@es@mmmcxlvii{y protege bajo tus alas a los creyentes que te sigan.\qt@no{(215)}}
+\qt@newcmd\qurantrans@es@mmmcxlviii{Pero si te desobedecen, di: «Yo soy inocente de lo que hacéis.»\qt@no{(216)}}
+\qt@newcmd\qurantrans@es@mmmcxlix{Y confía en el Todopoderoso, el Misericordiosísimo.\qt@no{(217)}}
+\qt@newcmd\qurantrans@es@mmmcl{Quien te ve cuando te pones en pie\qt@no{(218)}}
+\qt@newcmd\qurantrans@es@mmmcli{y cuando te mueves con los que se prosternan.\qt@no{(219)}}
+\qt@newcmd\qurantrans@es@mmmclii{En verdad, Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(220)}}
+\qt@newcmd\qurantrans@es@mmmcliii{¿Queréis que os informe sobre quiénes descienden los demonios?\qt@no{(221)}}
+\qt@newcmd\qurantrans@es@mmmcliv{Descienden sobre todo mentiroso pecador.\qt@no{(222)}}
+\qt@newcmd\qurantrans@es@mmmclv{Transmiten lo que escuchan, pero la mayor parte de lo que dicen es mentira.\qt@no{(223)}}
+\qt@newcmd\qurantrans@es@mmmclvi{En cuanto a los poetas, sólo los extraviados les siguen.\qt@no{(224)}}
+\qt@newcmd\qurantrans@es@mmmclvii{¿Acaso no has visto como divagan por todos los valles\qt@no{(225)}}
+\qt@newcmd\qurantrans@es@mmmclviii{y que dicen lo que no hacen?\qt@no{(226)}}
+\qt@newcmd\qurantrans@es@mmmclix{Excepto aquellos que son creyentes y hacen buenas obras y recuerdan mucho a Dios y se toman la revancha después de haber sido oprimidos. Los opresores pronto sabrán a qué lugar regresarán.\qt@no{(227)}}
+\qt@newcmd\qurantrans@es@mmmclx{\basmalahes Ta, Sim. Estos son los versículos del Corán y una Escritura clara.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmclxi{Una guía y una buena nueva para los creyentes.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmclxii{Aquellos que hacen la oración y dan el impuesto purificador de la riqueza y que tienen certeza de la otra vida.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmclxiii{En verdad, a quienes no creen en la otra vida les adornaremos sus obras y vagarán perdidos, ciegas sus almas.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmclxiv{Les aguarda un mal castigo y en la otra vida serán quienes más pierdan.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmclxv{En verdad, tú recibes el Corán de Uno que es sabio, que todo lo conoce.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmclxvi{[Recuerda] Cuando Moisés dijo a su familia: «En verdad, he divisado un fuego. Os traeré alguna noticia de él o una brasa para que, quizás así, os calentéis.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmclxvii{Y cuando llegó allí, le llamaron: «Bendito sea Quien está en el fuego y alrededor de él y glorificado sea Dios, Señor del Universo.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmclxviii{«¡Oh, Moisés! ¡En verdad, yo soy Dios, el Todopoderoso, el Sabio!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmclxix{¡Lanza tu bastón!» Y, cuando lo vio que reptaba como una serpiente dio la espalda sin mirar atrás. «¡Oh, Moisés! ¡No temas! En verdad, los Mensajeros no tienen miedo ante Mí,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmclxx{sino quien oprime y luego cambia su mal por bien, pues Yo soy perdonador, misericordiosísimo.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmclxxi{«Introduce tu mano en tu costado, saldrá blanca, sin defecto. [Eso es] Parte de las nueve señales destinadas al Faraón y su pueblo. En verdad, ellos son un pueblo de transgresores.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmclxxii{Cuando llegaron a ellos Nuestras señales esclarecedoras dijeron: «Esto es magia manifiesta.»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmclxxiii{Y las negaron, a pesar de la certeza de sus almas, con opresión y altivez.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmclxxiv{Ciertamente, dimos a David y a Salomón conocimiento y ambos dijeron: «Alabado sea Dios que nos ha favorecido por encima de la mayoría de Sus siervos creyentes»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmclxxv{Y Salomón heredó a David y dijo: «¡Oh, gentes! ¡Nos ha sido enseñado el lenguaje de las aves y se nos ha dado de todo! ¡En verdad, ello es un favor evidente!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmclxxvi{Las tropas de Salomón, compuestas de genios, hombres y aves, fueron reunidas ante él y puestas en formación.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmclxxvii{Cuando llegaron al Valle de las Hormigas, una hormiga dijo: «¡Oh, hormigas! ¡Entrad en vuestros hogares, no sea que Salomón y sus tropas os aplasten sin darse cuenta!»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmclxxviii{Sonrió ante sus palabras y dijo: «¡Señor mío! Inspírame para que te agradezca las mercedes con las que me has agraciado y has agraciado a mis padres y pueda realizar buenos actos de los que Tú estés satisfecho y admíteme, por Tu misericordia, entre Tus siervos rectos.»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmclxxix{Pasó revista a las aves y dijo: «¿Por qué no veo a la abubilla? ¿O es que está ausente?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmclxxx{He de castigarla duramente o he de degollarla si no me ofrece una excusa clara.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmclxxxi{No esperó mucho [hasta que ella regresó] y dijo: «He tenido conocimiento de algo que tú desconoces y te traigo de Saba una información segura.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmclxxxii{«En verdad, he encontrado a una mujer gobernándoles y le ha sido dado de todas las cosas y posee un trono grandioso.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmclxxxiii{He encontrado que ella y su pueblo se prosternan ante el Sol en lugar de hacerlo ante Dios y que Satanás les ha embellecido su comportamiento, por lo que les ha apartado del camino y no están guiados.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmclxxxiv{No se prosternan ante Dios, que hace salir lo que no era manifiesto en los cielos y la Tierra y que conoce lo que hay en vuestro interior y lo que es manifiesto en vosotros.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmclxxxv{«Dios, no hay más dios que Él, Señor del Trono inmenso.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmclxxxvi{Dijo [Salomón]: «Pronto veremos si has dicho la verdad o eres un mentiroso.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmclxxxvii{Lleva esta carta mía y déjala caer junto a ellos, luego regresa cerca de ellos y observa cómo reaccionan.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmclxxxviii{Dijo ella: «¡Oh, nobles! Me ha sido enviada una noble misiva.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmclxxxix{Es de Salomón y en el nombre de Dios, el Clementísimo, el Misericordiosísimo:\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmcxc{No seáis altaneros ante mí y venid a mí con sumisión.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmcxci{Dijo ella: «¡Oh, nobles! Dadme vuestra opinión en este asunto mío. Yo no decido sobre ningún asunto sin contar con vuestra presencia.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmcxcii{Ellos dijeron: «Nosotros poseemos fuerzas y poseemos una gran bravura, pero a ti te corresponde decidir sobre este asunto. Mira, pues, lo que ordenas.»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmcxciii{Ella dijo: «En verdad, cuando los reyes entran en un país, lo corrompen totalmente y arruinan a los poderosos de él. Eso es lo que hacen.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmcxciv{En verdad, le enviaremos un regalo y veremos con lo que regresan los mensajeros.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmcxcv{Y cuando llegó a Salomón dijo: «¿Queréis incrementar mi riqueza? Lo que Dios me ha otorgado es mejor que lo que os ha otorgado a vosotros. Sois vosotros quienes os alegráis de vuestro regalo.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmcxcvi{¡Regresad a ellos! ¡Iremos a ellos con un ejército que no podrán enfrentar y les sacaremos de ella arruinados y quedarán empequeñecidos!»\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmcxcvii{Dijo: «¡Oh, nobles! ¿Quién de vosotros me traerá el trono de ella antes de que vengan a mí sometidos?»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmcxcviii{Un ifrit de entre los genios dijo: «Yo te lo traeré antes de que te levantes de tu sitio. Puedo hacerlo y soy digno de confianza.»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmcxcix{El que poseía un conocimiento procedente de la Escritura Sagrada dijo: «Yo te lo traeré en un abrir y cerrar de ojos.» Y cuando lo vio ante él dijo: «¡Esto es un favor procedente de mi Señor para poner a prueba si soy agradecido o desagradecido! ¡Quien es agradecido lo es para su propio beneficio y quien sea desagradecido (sepa) que mi Señor es rico en Sí mismo, no necesita de nadie y es generoso.»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmcc{Dijo: «Modificad su trono para ella, que yo vea si discierne o es de los que no tienen discernimiento.»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmcci{Y, cuando ella llegó, le dijeron: «¿Es éste tu trono?» Ella dijo: «Se parece a él. Ya se nos había informado antes de ello y nos habíamos sometido.»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmccii{La había limitado lo que adoraba en lugar de Dios. En verdad, ella pertenecía a un pueblo que no creía.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmcciii{Se le dijo: «¡Entra en el palacio!» Pero al verlo creyó que era un estanque de agua y descubrió sus piernas. Él dijo: «En verdad, es un palacio de cristal pulido.» Ella dijo: «¡Dios mío! En verdad, he oprimido mi alma y me someto, junto a Salomón, al Señor del Universo.»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmcciv{Y, ciertamente, enviamos a Zamud a su hermano Salih: «¡Adorad a Dios!» Pero se dividieron en dos grupos que disputaban entre ellos.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmccv{Él dijo: «¡Oh, pueblo mío! ¿Por qué pedís que se apresure lo malo antes que lo bueno? ¿Por qué no pedís el perdón de Dios para que, quizás así, se tenga misericordia con vosotros?»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmccvi{Ellos dijeron: «Tú y los que contigo están nos parecéis aves de mal agüero.» Él dijo: «Vuestra ave está junto a Dios. Sois un pueblo al que se está poniendo a prueba.»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmccvii{En la ciudad había nueve grupos de personas que corrompían la Tierra y no reformaban lo que estaba mal.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmccviii{Ellos dijeron: «Juremos por Dios que atacaremos a él y a su familia durante la noche. Luego, diremos a sus herederos que no estuvimos presentes en la destrucción de su familia y que decimos la verdad.»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmccix{Ellos trazaron un plan y Nosotros trazamos un plan sin que ellos se diesen cuenta.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmccx{Y observa cual fue el final de su plan. Cómo les destruimos a ellos y a su pueblo todos juntos.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmccxi{Esas son sus casas, vacías por la injusticia que cometieron. En esto hay una señal para gente que tiene conocimiento.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmccxii{Y pusimos a salvo a quienes creían y eran temerosos de Dios.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmccxiii{Y [recuerda] a Lot cuando dijo a su pueblo: «¿Cometéis esa indecencia a pesar de que sabéis lo que hacéis?\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmccxiv{¿Vais a los hombres con deseo en lugar de a las mujeres? Sois una gente ignorante.»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmccxv{Y la respuesta de su pueblo no fue otra que decir: «Expulsad a la familia de Lot de vuestro pueblo. Verdaderamente, son un grupo de puritanos.»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmccxvi{Así que le salvamos a él y a su familia excepto a su esposa. Decretamos que ella fuera de los que se quedaban.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmccxvii{E hicimos que sobre ellos cayese una lluvia. ¡Qué mala la lluvia de quienes habían sido advertidos!\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmccxviii{Di: «¡Alabado sea Dios y la paz sea con aquellos de Sus siervos que Él ha escogido! ¿Es mejor Dios o aquello que asocian a Él?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmccxix{¿Quién ha creado los cielos y la Tierra y hace descender para vosotros desde el cielo agua, mediante la cual hacemos surgir espléndidos jardines cuyos árboles vosotros no habríais podido hacer surgir? ¿Hay otro dios junto a Dios?» Pero ellos son gente cambiante.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmccxx{¿Quién ha hecho la Tierra estable y ha puesto en ella ríos y firmes montañas y ha colocado entre los dos mares una barrera? ¿Hay otro dios junto a Dios? Pero la mayoría de ellos no saben.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmccxxi{¿Quién responde al que sufre cuando Le invoca y alivia el mal y os ha puesto a vosotros sucesores de la Tierra? ¿Hay otro dios junto a Dios? ¡Qué poco reflexionáis!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmccxxii{¿Quién os guía en las tinieblas de la tierra y del mar y quién envía los vientos como anunciadores de Su misericordia? ¿Hay otro dios junto a Dios? ¡Ensalzado sea Dios por encima de lo que asocian a Él!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmccxxiii{¿Quién inicia la Creación y la renueva y os provee de lo que hay en los cielos y la Tierra? ¿Hay otro dios junto a Dios? Di: «¡Aportad vuestra prueba si sois de los que dicen la verdad!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmccxxiv{Di: «Nadie más que Dios conoce lo oculto de los cielos y la Tierra y no saben cuándo serán resucitados.»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmccxxv{Su conocimiento no alcanza a la otra vida. Tienen dudas sobre ella. Más aún, están ciegos sobre ella.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmccxxvi{Y los que no creen dicen: «¿Acaso cuando nosotros y nuestros padres seamos polvo, seremos sacados?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmccxxvii{Ya nos fue prometido eso anteriormente a nosotros y a nuestros padres. No son más que mitos de los primitivos.»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmccxxviii{Di: «Viajad por la Tierra y observad cuál fue el final de los pecadores.»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmccxxix{No te entristezcas por ellos ni te angusties por sus intrigas.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmccxxx{Y dicen: «¿Cuándo tendrá lugar lo que nos prometes, si es que dices la verdad?»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmccxxxi{Di: «Puede que algo de aquello cuya venida queréis apresurar esté ya muy cerca, detrás de vosotros.»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmccxxxii{Y, en verdad, tu Señor favorece a los seres humanos, pero la mayoría de ellos no agradecen.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmccxxxiii{Y, en verdad, tu Señor conoce bien lo que esconden en sus pechos y lo que manifiestan.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmccxxxiv{Y no hay nada de lo que está oculto en los cielos y en la Tierra que no esté consignado en una Escritura clara.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmccxxxv{En verdad, este Corán relata a los Hijos de Israel la mayoría de las cosas en la que ellos no se ponen de acuerdo.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmccxxxvi{Y es, en verdad, una guía y una misericordia para los creyentes.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmccxxxvii{En verdad, tu Señor emitirá sentencia entre ellos con Su juicio y Él es el Todopoderoso, Quien todo lo sabe.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmccxxxviii{Y confía en Dios. Ciertamente, tú estás en la Verdad evidente.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmccxxxix{En verdad, tú no puedes hacer que los muertos oigan ni que los sordos escuchen la llamada si se vuelven de espaldas,\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmccxl{ni puedes guiar a los ciegos sacándoles de su extravío. Sólo puedes hacer que oigan quienes creen en Nuestras señales y se han sometido.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmccxli{Y cuando se pronuncie la sentencia sobre ellos, haremos salir para ellos una bestia de la tierra que proclamará ante ellos: «¡Los hombres no creyeron en Nuestras señales!»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmccxlii{Y [recuerda] el día que reunamos, de cada comunidad, al grupo de los que desmentían Nuestras señales y sean detenidos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmccxliii{Hasta que, cuando vengan, Él diga: «¿Desmentíais Mis señales cuando no teníais el conocimiento necesario para entenderlas en su totalidad? ¿Qué es lo que hacíais?»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmccxliv{Y se emita la sentencia contra ellos por haber oprimido y ellos no hablarán.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmccxlv{¿No han visto que pusimos la noche para que puedan descansar en ella y el día para que puedan ver? En verdad, en ello hay señales para gente que es creyente.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmccxlvi{Y el día en que sea tocada la trompeta se aterrorizarán quienes están en los cielos y en la Tierra, excepto quien Dios quiera. Y todos vendrán a Él con humildad.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmccxlvii{Y verás las montañas, que tú creías sólidas, pasando como pasan las nubes. Obra de Dios, que todo lo hace a la perfección. En verdad, Él está bien informado de lo que hacéis.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmccxlviii{«Quien venga con buenas obras obtendrá algo mejor aún y ellos estarán a salvo del terror de ese día.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmccxlix{Y quienes vengan con malas obras serán arrojados de cara al fuego: ¿Se os ha recompensado por otra cosa que por lo que hacíais?\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmccl{En verdad, se os ordenó adorar al Señor de esta ciudad, la cual Él declaró sagrada. Y a Él pertenecen todas las cosas. Y se me ordenó que fuese de los sometidos a Él.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmccli{y que recitase el Corán.» Por tanto, quien se guía, en verdad, se guía para su propio bien y a quien se extravía, dile: «En verdad, yo soy solamente uno de los que advierten.»\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmcclii{Y di: «Alabado sea Dios que pronto os hará ver Sus señales y vosotros las reconoceréis.» Y tu Señor no está desatento a lo que hacéis.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmccliii{\basmalahes Ta, Sim, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmccliv{Estos son los versículos de la Escritura clara.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcclv{Te recitamos la verdad sobre la historia de Moisés y el Faraón para una gente que es creyente.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcclvi{En verdad, el Faraón fue un tirano altivo en la Tierra. Dividió a la gente de ella en grupos. Debilitaba a uno de ellos, degollando a sus hijos y dejando con vida a sus mujeres. Verdaderamente, él era de los corruptores.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcclvii{Nosotros quisimos favorecer a quienes habían sido desfavorecidos en la Tierra y les hicimos dirigentes y les hicimos los herederos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcclviii{Y [quisimos] darles posición en la Tierra y hacer ver por medio de ellos al Faraón, a Haman y al ejército de ambos aquello que temían.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcclix{Y revelamos a la madre de Moisés: «¡Amamántale! y cuando temas por él, ponle en el río y no temas ni estés triste. En verdad, Nosotros te lo devolveremos y le haremos uno de los Mensajeros.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcclx{Así pues, le encontró la gente del Faraón, para que terminase siendo enemigo y motivo de preocupación para ellos. En verdad, el Faraón, Haman y el ejército de ambos se equivocaban.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcclxi{Y la mujer del Faraón dijo: «Será un motivo de alegría para mí y para ti. No le matéis, puede que nos sea útil o que lo adoptemos como hijo.» Pero ellos no eran conscientes.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcclxii{El corazón de la madre de Moisés quedó desolado y a punto habría estado de revelar lo ocurrido si no hubiésemos fortificado su corazón para que fuese de los que tienen fe.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcclxiii{Así pues, dijo a su hija: «¡Síguele!» Y ella le fue siguiendo de lejos y ellos no se dieron cuenta.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcclxiv{Nosotros impedimos antes que aceptase ninguna nodriza. Y ella dijo: «¿Queréis que os muestre una familia que se haga cargo de él para vosotros y lo cuide?»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcclxv{Así le devolvimos a su madre, para que ella se alegrase y no estuviese triste y para que supiese que la promesa de Dios es verdadera. Pero la mayoría de ellos no tienen conocimiento.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcclxvi{Y cuando se hizo mayor y capaz le dimos juicio y sabiduría. Así es como recompensamos a quienes son buenos.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcclxvii{Y entró en la ciudad cuando sus gentes estaban distraídas y encontró en ella a dos hombres que se estaban golpeando, uno de su grupo y el otro de sus enemigos. Y el que era de su grupo le pidió ayuda contra el que era de sus enemigos y Moisés le dio un puñetazo y acabó con él. Dijo: «Esto es obra de Satanás. En verdad, él es un enemigo, un extraviador declarado.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcclxviii{Dijo: «¡Dios mío! Verdaderamente, me he oprimido a mí mismo. ¡Perdóname pues!» y Él le perdonó. En verdad, Él es el Perdonador, el Misericordiosísimo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcclxix{Dijo: «¡Señor mío! Por el favor que me has otorgado, nunca más ayudaré a los pecadores.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcclxx{Y amaneció en la ciudad, temeroso, vigilante. Y cuando aquel a quien había ayudado el día anterior le pidió ayuda nuevamente a gritos, Moisés le dijo: «Eres claramente un desviado.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcclxxi{Y cuando quiso separarle de quien era enemigo de ambos, él dijo: «¡Oh, Moisés! ¿Acaso quieres matarme como al que mataste ayer? ¡No quieres más que ser un tirano en la Tierra en lugar de querer mejorarla!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcclxxii{Y de lo más alejado de la ciudad vino un hombre corriendo. Dijo: «¡Oh, Moisés! Los notables están deliberando sobre ti para matarte. Por tanto ¡Sal! En verdad, soy para ti un buen consejero.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcclxxiii{Así pues, salió de ella temeroso, vigilante. Dijo: «¡Señor mío! ¡Sálvame del pueblo opresor!»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcclxxiv{Y cuando se dirigía a Madyan dijo: «¡Quizás mi Señor me dirija por el camino recto.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcclxxv{Y cuando llegó al pozo de Madyan encontró en él a un grupo de gente abrevando a su ganado y encontró a dos mujeres manteniendo al suyo apartado. Él dijo: «¿Qué hacéis?» Ellas dijeron: «No abrevamos a nuestro ganado hasta que los pastores no se vayan, pues nuestro padre es muy anciano.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcclxxvi{Así pues, él abrevó el ganado para ellas y luego se volvió a la sombra y dijo: «¡Señor mío! ¡En verdad, estoy necesitado de cualquier bien que envíes para mí!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcclxxvii{Entonces vino una de las mujeres con pasos recatados. Ella dijo: «En verdad, mi padre te invita para compensarte por haber abrevado nuestro ganado.» Cuando llegó ante él y le relató la historia de lo que le había sucedido, él le dijo: «No temas. Te has salvado de los opresores.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcclxxviii{Una de las dos dijo: «¡Oh, padre mío! ¡Contrátale! En verdad, ¿A quién mejor puedes contratar? Es un hombre fuerte y digno de confianza.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcclxxix{Él dijo: «En verdad, quiero casarte con una de estas dos hijas mías a condición de que trabajes para mí durante ocho años. Y si completas diez años eso dependerá de ti. No quiero forzarte. Me encontrarás, si Dios quiere, de los rectos.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcclxxx{Él dijo: «Esto es entre yo y tú. Así pues, cualquiera de los dos plazos que cumpla no me será reprochado. Y Dios es garante de lo que hemos dicho.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxi{Y cuando Moisés completo el plazo y partió con su familia, divisó un fuego en las cercanías del monte y dijo a su familia: «¡Esperad! He divisado un fuego. Puede que os traiga de él alguna noticia o una brasa del fuego para que, quizás así, podáis calentaros.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxii{Y cuando se aproximó a él, fue llamado desde el lugar bendito en el que se encontraba un árbol, en el lado derecho del valle: «¡Oh, Moisés! En verdad, yo soy Dios, Señor del Universo.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxiii{¡Arroja tu bastón!» Y cuando lo vio reptando como si fuera una serpiente se volvió de espaldas sin mirar atrás. «¡Oh, Moisés! ¡Regresa y no temas! ¡En verdad, estás a salvo!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxiv{Introduce tu mano en tu costado y saldrá blanca, sin defecto. Pon tu mano sobre tu corazón si sientes temor. Estas son dos pruebas procedentes de tu Señor para el Faraón y sus notables. En verdad, ellos son una gente corruptora.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxv{Él dijo: «¡Señor mío! En verdad, he matado a uno de ellos y temo que me maten.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxvi{Y mi hermano Aarón posee una lengua más elocuente. Envíale, pues, conmigo para que me ayude y confirme mis palabras. En verdad, temo que me desmientan.»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxvii{Dijo: «Fortaleceré tu brazo con tu hermano y os daré a ambos tal poder que no podrán tocaros. Con la ayuda de Mis señales, vosotros y quienes os sigan seréis los vencedores.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxviii{Así pues, cuando Moisés vino a ellos con Nuestras pruebas claras, dijeron: «Esto no es más que magia inventada y no oímos nada de esto a nuestros primeros padres.»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxix{Y dijo Moisés: «¡Mi Señor es Quien mejor sabe quién vino con la guía de Su parte y quién obtendrá la Morada Final! ¡Los opresores no triunfarán!»\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmccxc{Y el Faraón dijo: «¡Oh, notables! No conozco ningún otro dios para vosotros más que yo.» «¡Oh, Haman! Hazme un fuego sobre el barro y construye para mí una torre alta para que, quizás así, pueda echar un vistazo al dios de Moisés, porque creo que él es un mentiroso.»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmccxci{Él y su ejército se volvieron altivos en la Tierra sin ningún derecho y creyeron que no regresarían a Nosotros.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmccxcii{Pero les tomamos a él y a su ejército y les arrojamos al mar. Y observa cuál fue el final de los opresores.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmccxciii{Les hicimos dirigentes llamando al Fuego y el Día del Levantamiento no serán auxiliados.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmccxciv{Hicimos que en esta vida les persiguiera una maldición y el Día del Levantamiento estarán entre los poseedores de un horrible rostro.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmccxcv{Y, ciertamente, entregamos a Moisés la Escritura después de que destruyéramos a las primeras generaciones, para abrir los ojos a las gentes y como una guía y una misericordia, para que, quizás así, reflexionasen.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmccxcvi{Tú no estuviste en el lado occidental cuando Nosotros dimos la orden a Moisés y no fuiste uno de los testigos,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmccxcvii{pero hicimos surgir otras generaciones y alargamos sus vidas. Tú no residías entre la gente de Madyan para recitarles Nuestros versículos, sino que somos Nosotros quienes enviamos Mensajeros.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmccxcviii{Y no estabas en la ladera del monte cuando Nosotros llamamos, pero es una misericordia de tu Señor para amonestar a un pueblo al que no habíamos enviado antes de ti un amonestador, para que así, quizás, reflexionen.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmccxcix{Pues, si no, cuando les hubiese afligido una desgracia por lo que sus manos enviaron por delante, habrían dicho: «¡Señor nuestro! ¿Por qué no nos enviaste un Mensajero para que siguiéramos Tus señales y fuésemos de los creyentes?»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmccc{Pero cuando llega a ellos la Verdad que viene de Nosotros, dicen: «¿Por qué no se le ha dado lo mismo que le fue dado a Moisés?» ¿Acaso no descreyeron también de lo que le fue dado a Moisés anteriormente? Dicen: «¡Ambos son magia manifiesta!» Y dicen: «¡No creemos en nada de ello!»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmccci{Di: «Traed, pues, una Escritura procedente de Dios que guíe mejor que esas dos para que yo la siga, si es que decís la verdad.»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmcccii{Pero si no te responden, sabe entonces que lo que siguen son sus pasiones y ¿Quién está más extraviado que quien sigue sus pasiones sin guía de Dios? ¡En verdad, Dios no guía a la gente opresora!\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmccciii{Y, ciertamente, hemos compuesto y relacionado para ellos la Palabra para que, quizás así, reflexionen.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmccciv{Aquellos a quienes Nosotros dimos la Escritura antes de él, creen en él\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmcccv{y, cuando se les recita, dicen: Creemos en él. Ciertamente, es la Verdad que proviene de nuestro Señor. Ciertamente, nosotros éramos musulmanes desde antes de él.»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmcccvi{A ellos se les recompensará dos veces por lo pacientes que fueron. Y ellos se defienden del mal con el bien y reparten de aquello que Nosotros les hemos proveído\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmcccvii{y cuando oyen conversaciones vanas se apartan de ellas y dicen: «Nosotros somos responsables de nuestros actos y vosotros de los vuestros. Quedad en paz. No tratamos con los ignorantes.»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmcccviii{En verdad, tú no puedes guiar a quien quieras, sino que Dios guía a quien Él quiere y Él es quien mejor conoce quiénes están guiados.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmcccix{Y dicen: «Si seguimos la guía contigo seríamos desposeídos de nuestro territorio.» ¿Acaso no les hemos establecido en un lugar sagrado, seguro, al que llegan toda clase de frutos, como provisión de parte Nuestra? Pero la mayoría de ellos no tienen conocimiento.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmcccx{¿Cuántos pueblos hemos destruido que se enorgullecían de su nivel de vida? Esos son sus hogares, los cuales, después de ellos, no están habitados más que por unos pocos y Nosotros fuimos los herederos.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmcccxi{Y tu Señor no destruyó las ciudades hasta haber enviado a su metrópoli un Mensajero que les recitara Nuestros versículos y no destruimos ciudad alguna en la que sus gentes no fueran opresoras.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmcccxii{Y lo que os ha sido concedido es sólo el disfrute de la vida mundanal y sus encantos, pero lo que hay junto a Dios es mejor y más duradero. ¿Es que no razonáis?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmcccxiii{¿Acaso a quien Nosotros hicimos una buena promesa y se encontrará con ella es como aquel a quien Nosotros hemos dado a disfrutar los placeres de esta vida mundanal y luego, el Día del Levantamiento, será de los que tendrán que presentarse?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmcccxiv{Y el día en que Él les llame y diga: «¿Dónde están aquellos que vosotros suponíais que eran Mis socios?»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmcccxv{aquellos que hayan sido sentenciados dirán: «¡Señor nuestro! ¡Estos son a quienes nosotros habíamos extraviado! ¡Les extraviamos de la misma manera en que nosotros estábamos extraviados! Nosotros somos inocentes ante Ti. No era a nosotros a quienes ellos adoraban.»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmcccxvi{Y se les dirá: «¡Invocad a quienes asociabais a Dios en vuestra adoración!» Y les invocarán, pero ellos no les contestarán, y verán el castigo. ¡Ojalá hubieran seguido la buena guía!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmcccxvii{Y el día en que Él les llame y les diga: «¿Qué respondisteis a los Mensajeros?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmcccxviii{Ese día las noticias estarán ciegas para ellos y no se preguntarán unos a otros.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmcccxix{Pero quien se haya arrepentido y haya tenido fe y realizado buenas acciones puede que esté entre los triunfadores.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmcccxx{Y tu Señor crea lo que quiere y elige, mientras que ellos no tienen elección. ¡Glorificado sea Dios y ensalzado por encima de lo que le asocian!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmcccxxi{Y tu Señor conoce lo que ocultan sus pechos y lo que manifiestan.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmcccxxii{Y Él es Dios. No hay más dios que Él. A Él pertenece la alabanza en esta vida y en la Otra y a Él pertenece el juicio y a Él se os hará regresar.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmcccxxiii{Di: «¿Habéis visto? Si Dios hiciera la noche perpetua sobre vosotros hasta el Día del Levantamiento ¿Qué dios, aparte de Dios, os traería luz? ¿Acaso no escucháis?»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmcccxxiv{Di: «¿Habéis visto? Si Dios hiciera el día perpetuo sobre vosotros hasta el Día del Levantamiento ¿Qué dios, aparte de Dios, os traería la noche para que descanséis en ella? ¿Es que no veis?»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmcccxxv{Y por Su misericordia, ha puesto para vosotros la noche para que descanséis en ella y el día para que busquéis el favor de Dios y, quizás así, seáis agradecidos.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmcccxxvi{Y el día en que Él les llame y diga: «¿Dónde están aquellos que vosotros suponíais que eran Mis socios?»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmcccxxvii{y hagamos salir un testigo de cada comunidad y digamos: «¡Aportad vuestras prueba!» Sabrán entonces que el derecho pertenece a Dios y se apartará de ellos lo que inventaban.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmcccxxviii{En verdad, Qarun era del pueblo de Moisés, pero se comportó altivamente con ellos. Nosotros le dimos tantos tesoros que las llaves de los mismos resultaban pesadas para un grupo de hombres forzudos. Cuando su pueblo le dijo: «No te vanaglories, pues Dios no ama a quienes se vanaglorian\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmcccxxix{y busca, con lo que Dios te ha otorgado, la Morada de la otra vida y no olvides tu parte de esta vida y haz el bien igual que Dios te ha hecho el bien a ti y no busques corromper en la Tierra. En verdad, Dios no ama a los corruptores.»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmcccxxx{Dijo: «En verdad, se me ha dado todo esto por el conocimiento que poseo.» ¿Acaso no sabía que Dios ha destruido antes de él generaciones que eran más poderosas que él y que habían atesorado más? Los pecadores no serán preguntados por sus pecados.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxi{Y salía ante su pueblo con todos sus adornos y aquellos que deseaban la vida mundanal decían: «¡Ojalá nosotros tuviésemos algo semejante a lo que le ha sido dado a Qarun! ¡En verdad, él posee una riqueza inmensa!»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxii{Pero aquellos a quienes les había sido dado el conocimiento dijeron: «¡Ay de vosotros! ¡La recompensa de Dios es mejor para quienes tienen fe y realizan buenas acciones, pero no la obtendrán más que quienes sean pacientes!»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxiii{Hicimos que la tierra se tragase a él y a su casa y no hubo ningún grupo que le auxiliara ante Dios y no pudo ayudarse a sí mismo.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxiv{Y quienes ayer deseaban su posición amanecieron diciendo: «¡Ay! ¡Dios expande y restringe la provisión a quien Él quiere de sus siervos! ¡Si Dios no nos hubiese agraciado, nos habría tragado a nosotros!» ¡Ay! ¡Quienes no son creyentes no triunfarán!\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxv{Esa es la morada de la otra vida que Nosotros otorgamos a quienes no desean mostrarse altaneros en la Tierra ni corromper. El buen final es para quienes son temerosos de Dios.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxvi{Quien venga con buenas obras obtendrá algo mejor que ellas y quien venga con malas acciones sólo será retribuido por el mal que hacía.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxvii{En verdad, Quien ha hecho para ti obligatorio el Corán te hará volver al lugar de retorno. Di: «Mi Señor es Quien mejor sabe quién sigue la buena guía y quién está en un extravío evidente.»\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxviii{Tú no esperabas que te fuese entregada la Escritura. No fue sino una misericordia procedente de tu Señor. No respaldes, pues, a quienes no tienen fe\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxix{y no les permitas que te aparten de las señales de Dios después de que han sido hechas descender para ti. Convoca a las gentes hacia tu Señor y no seas de los que adoran a otros como si fueran Dios.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmcccxl{Y no invoques junto a Dios a otros dioses. No hay otro dios más que Él. Todas las cosas perecen excepto Su rostro. Al Él pertenece el juicio y hacía Él se os hará regresar.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmcccxli{\basmalahes Alif, Lam, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcccxlii{¿Acaso las gentes piensan que se les permitirá decir «¡Creemos!» y no serán puestos a prueba?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcccxliii{Ciertamente, Nosotros pusimos a prueba a quienes les precedieron y Dios conoce a quienes dicen la verdad y conoce a los mentirosos.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcccxliv{¿Acaso quienes hacen el mal piensan que podrán escapar de Nosotros? ¡Qué mal juzgan!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcccxlv{Quien tenga la esperanza de encontrarse con Dios [sepa] que, en verdad, la cita con Dios llegará y Él es Quien todo lo oye, Quien todo lo conoce.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcccxlvi{Y quien combate por Dios, en verdad, combate por sí mismo. En verdad, Dios no necesita de las criaturas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcccxlvii{Y a quienes son creyentes y realizan buenas obras les ocultaremos sus malas acciones y les recompensaremos conforme a lo mejor que hayan hecho.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcccxlviii{Y hemos ordenado a los seres humanos que sean buenos con sus padres. Pero si ellos se esfuerzan para que asocies en tu adoración a Mí algo de lo que tú no tienes conocimiento, entonces no les obedezcas. Regresaréis a Mí y Yo os informaré de lo que hacíais.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcccxlix{Y a quienes tengan fe y realicen buenas obras les haremos entrar entre los Rectos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcccl{Y entre los hombres hay quienes dicen: «¡Creemos en Dios!» pero cuando sufren perjuicio por la causa de Dios toman la prueba a que los hombres les someten como un castigo de Dios. En cambio, si viene una ayuda de tu Señor, con seguridad dirán: «¡En verdad, estábamos con vosotros!» ¿Acaso no es Dios Quien mejor conoce lo que hay en el pecho de las criaturas?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcccli{Y Dios conoce con certeza quienes son los que creen y conoce con certeza quienes son los hipócritas.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmccclii{Y los que no creen dicen a los que tienen fe: «¡Seguid nuestro camino y nosotros cargaremos con vuestros errores!» Pero ellos no cargarán con sus errores en absoluto. En verdad, son unos mentirosos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcccliii{Y, ciertamente, tendrán que cargar sus propias cargas y otras cargas junto con sus propias cargas. Y el Día del Levantamiento serán interrogados sobre lo que inventaban.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcccliv{Ciertamente, Nosotros enviamos a Noé a su pueblo y permaneció entre ellos mil años menos cincuenta. Después, el diluvio les sorprendió siendo unos opresores.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmccclv{Y le salvamos a él y a los compañeros del Arca e hicimos de ella una señal para toda la humanidad.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmccclvi{Y [recuerda] a Abraham cuando dijo a su pueblo: «¡Adorad a Dios y temedle! Eso es mejor para vosotros, si es que sabéis.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmccclvii{En verdad, lo que adoráis en lugar de Dios son ídolos y creáis una mentira. Lo que adoráis en lugar de Dios no posee provisión. Buscad, pues, vuestra provisión junto a Dios, adoradle y agradecedle. Hacía Él se os hará regresar.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmccclviii{Y si desmentís, ya desmintieron otras generaciones antes de vosotros, pero la responsabilidad del Mensajero es solamente la transmisión clara.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmccclix{¿Es que no ven cómo Dios inicia la creación y luego la reproduce? En verdad, eso es fácil para Dios.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmccclx{Di: «¡Viajad por la Tierra y observad cómo Él ha originado la creación! Luego, Dios hará surgir la creación de la otra vida. En verdad, Dios tiene poder sobre todas las cosas.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmccclxi{«Castigará a quien Él quiera y tendrá misericordia de quien Él quiera. Y a Él se os hará regresar.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmccclxii{«Y no podréis escapar ni en la Tierra ni en el cielo y no tendréis, aparte de Dios, protector ni auxiliador.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmccclxiii{Y aquellos que no creen en las señales de Dios y en el encuentro con Él han desesperado de Mi misericordia y tendrán un castigo doloroso.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmccclxiv{Y la respuesta de su pueblo no fue otra que decir: «¡Matadle!» o «¡Quemadle!» y Dios le salvó del fuego. En verdad, en ello hay una señal para gente que tiene fe.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmccclxv{[Abraham] dijo: «En verdad, lo que tomáis en lugar de Dios son ídolos, para establecer lazos de afecto entre vosotros en la vida mundanal. Luego, el Día del Levantamiento, renegaréis unos de otros y os maldeciréis unos a otros. Vuestra morada será el fuego y no tendréis quien os auxilie.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmccclxvi{Lot creyó en él y dijo: «En verdad, soy un emigrante hacia mi Señor. En verdad, Él es el Poderoso, el Sabio.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmccclxvii{Y le otorgamos a Isaac y a Jacob y pusimos en su descendencia la profecía y la Escritura Sagrada y le dimos su recompensa en esta vida y, en verdad, en la otra será de los Rectos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmccclxviii{Y [recuerda] a Lot cuando dijo a su pueblo: «En verdad, cometéis una indecencia que ningún ser humano había cometido antes de vosotros.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmccclxix{¿Vais a los hombres, cortáis los caminos y cometéis lo reprobable en vuestras reuniones?» Pero la única respuesta de su pueblo fue decir: «¡Tráenos el castigo de Dios si eres de los que dicen la verdad!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmccclxx{Él dijo: «¡Señor mío! ¡Auxíliame contra el pueblo de los corruptores!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmccclxxi{Y cuando vinieron Nuestros mensajeros a Abraham con la buena nueva, dijeron: «En verdad, destruiremos a la gente de esta ciudad. Verdaderamente, sus gentes son opresoras.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmccclxxii{Él dijo: «Lot también está en ella.» Ellos dijeron: «Nosotros sabemos bien quienes están en ella. Le salvaremos a él y a su familia, excepto a su esposa, que será de los que se queden.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmccclxxiii{Y cuando Nuestros Mensajeros vinieron a Lot, él se preocupó por ellos y se angustió su corazón, pero ellos dijeron: «No tengas miedo y no estés preocupado. En verdad, os salvaremos a ti y a tu familia, excepto a tu esposa que será de los que se queden.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmccclxxiv{Haremos descender un castigo del cielo sobre la gente de esa ciudad porque son transgresores.»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmccclxxv{Ciertamente, hemos dejado con ella una señal clara para una gente que razona.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmccclxxvi{Y [enviamos] a Madyan a su hermano Shuayb que les dijo: «¡Oh, pueblo mío! ¡Adorad a Dios y tened esperanza en el Último Día y no corrompáis en la Tierra!»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmccclxxvii{Pero le desmintieron y el terremoto les sorprendió y amanecieron muertos, caídos de bruces en sus casas.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmccclxxviii{Y a Ad y a Zamud. Y es evidente para vosotros por sus moradas. Satanás les embelleció sus acciones y les apartó del camino, a pesar de que ellos eran perspicaces.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmccclxxix{Y Qarun y Faraón y Haman. Y, ciertamente, Moisés vino a ellos con las pruebas claras, pero ellos obraron con arrogancia en la Tierra y no triunfarán.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmccclxxx{Así pues, tomamos a cada uno de ellos por sus pecados. A algunos de ellos Nosotros les enviamos una tormenta huracanada de piedras, a otros les sorprendió el Grito, a otros hicimos que se los tragase la tierra y a otros les ahogamos. Y no fue Dios quien les oprimió, ellos se oprimieron a sí mismos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxi{Si ellos supieran que el ejemplo de quienes toman otros amigos y protectores en lugar de Dios es como la araña que se hace una casa. En verdad, la más débil de las casas es la casa de la araña. Si ellos supieran…\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxii{En verdad, Dios conoce lo que ellos invocan en lugar de Él. Él es el Poderoso, el Sabio.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxiii{Y Nosotros ponemos estos ejemplos a las gentes, pero sólo los comprenden en profundidad las gentes de conocimiento.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxiv{Dios ha creado los cielos y la Tierra con la Verdad. En verdad, en ello hay una señal para los creyentes.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxv{Recita lo que te ha sido revelado de la Escritura y haz la oración. En verdad, la oración protege del pecado y de la equivocación y el recuerdo de Dios es más grande. Y Dios sabe lo que hacéis.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxvi{Y no discutáis con la gente de la Escritura sino de la mejor manera -excepto con aquellos que son opresores- y dicen: «Creemos en lo que fue hecho descender a nosotros y en lo que fue hecho descender a vosotros y nuestro dios y el vuestro es uno y nosotros estamos sometidos a Él.»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxvii{Y, de la misma manera, hemos hecho descender a ti la Escritura. Y aquellos a quienes hemos dado la Escritura creen en ella y de estos algunos creen en ella. Y nadie combate Nuestras señales excepto quienes no son creyentes.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxviii{Y tú no recitabas ninguna Escritura antes de ésta ni la escribías con tu mano derecha, si no, los que falsean la Verdad habrían sembrado dudas.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxix{Pero son señales claras en el pecho de aquellos a quienes les ha sido dado el conocimiento. Y no luchan contra Nuestras señales más que los opresores.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmcccxc{Y ellos dicen: «¿Por qué no se han hecho descender para él señales procedentes de su Señor?» Di: «En verdad, las señales están junto a Dios y, en verdad, yo sólo soy un claro amonestador.»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmcccxci{¿Acaso no es suficiente para ellos el que Nosotros hagamos descender a ti la Escritura que les es recitada? En verdad, en ello hay una misericordia y un recuerdo para gente que es creyente.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmcccxcii{Di: «Es suficiente con Dios de testigo entre yo y vosotros. Él conoce lo que hay en los cielos y en la Tierra. Y quienes creen en la falsedad y no creen en Dios son los perdedores.»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmcccxciii{Y te piden que apresures su castigo. Si no fuera porque existe un plazo establecido, les habría llegado el castigo. Con seguridad, les llegará repentinamente, sin que se den cuenta.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmcccxciv{Te piden que les apresures el castigo y, en verdad, el Infierno rodeará a los que no son creyentes\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmcccxcv{el día en que el castigo les cubra por encima y por debajo y Él diga: «¡Probad lo que hacíais!»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmcccxcvi{«¡Oh, siervos Míos creyentes! ¡Mi Tierra es amplia, por tanto, adoradme sólo a Mí!»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmcccxcvii{Todo ser probará la muerte. Luego se os hará regresar a Nosotros.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmcccxcviii{Y a aquellos que hayan creído y realizado buenas acciones les alojaremos en el Jardín en aposentos elevados bajo los cuales fluyen los ríos, en donde estarán eternamente. ¡Qué buena la recompensa de quienes obran bien!\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmcccxcix{¡Esos que son pacientes y confían en su Señor!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmcd{¡Cuántos animales hay que no cargan con su sustento! ¡Dios proporciona su sustento y el vuestro! Y Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmcdi{Y si les preguntas: «¿Quién ha creado los cielos y la Tierra y ha sometido al Sol y a la Luna?» seguro que dirán: «¡Dios!» Entonces ¿Por qué mienten?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmcdii{Dios otorga con largueza Su provisión a quien Él quiere de Sus siervos y la restringe a quien Él quiere. Ciertamente, Dios es Quien mejor conoce todas las cosas.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmcdiii{Y si les preguntas: «¿Quién hace descender agua del cielo y da vida con ella a la tierra después de haber estado muerta?» Seguro que dirán: «¡Dios!» Di: «¡Alabado sea Dios!» Pero la mayoría de ellos no razonan.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmcdiv{Y la vida de este mundo no es más que distracción y juego y, en verdad, la morada de la otra vida es verdaderamente la Vida. ¡Si supieran!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmcdv{Y cuando suben al barco invocan a Dios poniendo su fe en Él exclusivamente, pero cuando les deja a salvo en tierra adoran a los ídolos.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmcdvi{¡Que rechacen lo que Nosotros les hemos dado y que disfruten! ¡Pronto sabrán!\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmcdvii{¿Acaso no ven que hemos establecido un santuario seguro mientras alrededor de ellos la gente es despojada? ¿Acaso tienen fe en la falsedad y descreen de la merced de Dios?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmcdviii{¿Quién es más opresor que quien inventa una mentira sobre Dios o desmiente la Verdad cuando viene a él? ¿No está en el Infierno la morada de los que niegan la Verdad?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmcdix{Y a quienes se esfuerzan por Nosotros, ciertamente, les guiaremos a Nuestros caminos. En verdad, Dios está con quienes hacen el bien.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmcdx{\basmalahes Alif, Lam, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcdxi{Los bizantinos han sido vencidos\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcdxii{en la tierra más próxima. Pero, tras haber sido vencidos, ellos vencerán\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcdxiii{dentro de pocos años. A Dios pertenecen los asuntos pasados y futuros. Y ese día, los creyentes se alegrarán\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcdxiv{por el auxilio de Dios. Él auxilia a quien quiere y Él es el Poderoso, el Misericordiosísimo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcdxv{Promesa de Dios. Dios no falta a Su promesa, pero la mayoría de las personas no saben.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcdxvi{Conocen lo aparente de la vida de este mundo y no prestan atención a la Otra Vida.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcdxvii{¿Acaso no reflexionan en su interior que Dios no ha creado los cielos y la Tierra y lo que hay entre ambos sino con la Verdad y por un plazo determinado? Pero lo cierto es que mucha gente no cree en el encuentro con su Señor.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcdxviii{¿Acaso no viajan por la Tierra y observan como terminaron quienes les precedieron? Eran mucho más fuertes que ellos, levantaron la tierra y la desarrollaron mucho más de lo que ellos la han desarrollado y vinieron a ellos sus Mensajeros con las señales claras. Y Dios no les oprimía, sino que ellos mismos se oprimían.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcdxix{Luego, el final de quienes hicieron el mal fue desmentir las señales de Dios y burlarse de ellas.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcdxx{Dios inicia la creación, luego la recrea y luego se os hace regresar a Él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcdxxi{Y el día en que tenga lugar la Hora, los pecadores se desesperarán\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcdxxii{y no habrá quien de sus socios interceda por ellos y ellos renegarán de sus socios.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcdxxiii{Y el día en que tenga lugar la Hora, ese día se separarán unos de otros.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcdxxiv{Y quienes hayan sido creyentes y hayan realizado buenas obras estarán en un vergel disfrutando.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcdxxv{Pero quienes no hayan sido creyentes y hayan desmentido Nuestras señales y el encuentro de la Otra Vida serán enviados al castigo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcdxxvi{Glorificado sea Dios al anochecer y al amanecer.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcdxxvii{Y a Él pertenece la alabanza en los cielos y la Tierra y en la noche y al mediodía.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcdxxviii{Él hace salir lo vivo de lo muerto y hace salir lo muerto de lo vivo y da vida a la tierra después de haber estado muerta y de esa misma manera se os hará salir a vosotros.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcdxxix{Y entre Sus señales está el haberos creado de tierra. Y luego, cuando devenís seres humanos, os expandís [por la Tierra.]\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcdxxx{Y entre Sus señales está el haber creado de vosotros mismos parejas para que encontréis la calma junto a ellas. Y ha puesto entre vosotros afecto y misericordia. En verdad, en ello hay señales para gente que reflexiona.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxi{Y entre Sus señales está la creación de los cielos y la Tierra y las diferencias de lengua y de color entre vosotros. En verdad, en ello hay señales para gente que conoce.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxii{Y entre Sus señales está vuestro sueño en la noche y en el día, y vuestra búsqueda de Su favor. En verdad, en ello hay señales para gente que escucha.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxiii{Y entre Sus señales está el que os muestre el relámpago, motivo de temor y de esperanza, y el hacer descender del cielo agua con la que da vida a la tierra después de haber estado muerta. En verdad, en ello hay señales para gente que razona.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxiv{Y entre Sus señales está el que los cielos y la Tierra se mantengan en pie por orden Suya. Luego, cuando os llame para que salgáis de la tierra, saldréis inmediatamente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxv{Y a Él pertenecen quienes están en los cielos y en la Tierra. Todos están sometidos a Él.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxvi{Y Él es Quién ha iniciado la creación, luego la recrea. Y eso es más sencillo para Él. Y a Él pertenecen las más elevadas descripciones en los cielos y en la Tierra. Y Él es el Poderoso, el Sabio.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxvii{Él os pone un ejemplo que tiene que ver con vosotros mismos: «¿Hay entre vuestros siervos quienes compartan con vosotros las riquezas que Nosotros os hemos proporcionado y seáis iguales a ellos en eso y les temáis igual que os teméis entre vosotros?» Así explicamos en detalle las señales para gente que razona.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxviii{Pero los opresores siguen sus propias pasiones sin conocimiento alguno. Así pues ¿Quién puede guiar a quien Dios extravía? Y ellos no tendrán quien les auxilie.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxix{Levanta, pues, tu rostro hacia la religión, como un buscador de la fe pura, siguiendo la naturaleza esencial en la que Dios ha creado a los seres humanos—En la creación de Dios no hay cambios. Esta es la verdadera religión pero la mayoría de las personas no tienen conocimiento—\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmcdxl{volviéndoos a Él contritos. Y sed temerosos de Dios y haced la oración y no seáis de los idólatras.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmcdxli{De esos que escinden su religión haciendo partidos, cada partido contento de lo que posee.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmcdxlii{Y cuando a los seres humanos les sobreviene un percance, invocan a su Señor volviéndose a Él contritos. Luego, cuando Él les da a probar de Su misericordia, algunos de ellos asocian otros dioses a su Señor,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmcdxliii{ocultando lo que les hemos dado. ¡Disfrutad pues! ¡Pronto sabréis!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmcdxliv{¿Acaso hemos hecho descender para ellos alguna prueba que justifique lo que asocian a Él?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmcdxlv{Y cuando hacemos que los seres humanos prueben una misericordia se alegran de ella y si sufren un perjuicio por culpa de lo que ellos mismos hicieron, entonces, se desesperan.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmcdxlvi{¿Acaso no ven que Dios otorga la provisión en abundancia o la restringe a quien Él quiere? En verdad, en ello hay señales para gente que tiene fe.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmcdxlvii{Así pues, da a los parientes cercanos su derecho y al necesitado y al viajero. Eso es mejor para quienes desean contemplar el rostro de Dios. Y esos son quienes triunfarán.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmcdxlviii{Y lo que dais con usura, para obtener beneficios de los bienes de la gente, no obtendrá beneficios ante Dios, pero la limosna purificadora de la riqueza que dais buscando agradar a Dios, eso os será multiplicado.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmcdxlix{Dios es quien os ha creado, luego os ha proporcionado los medios de subsistencia, luego os hace morir, luego os da la vida. ¿Hay entre aquellos que vosotros asociáis a Dios alguno que pueda hacer algo de eso? ¡Glorificado y ensalzado sea por encima de aquello que le asocian!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmcdl{La corrupción se ha manifestado en la tierra y el mar por lo que los seres humanos han hecho, para que prueben algo de lo que han hecho y así, quizás, regresen al buen camino.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmcdli{Di: «Id por la Tierra y observad cuál fue el final de los que vivieron antes. La mayoría de ellos eran idólatras.»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmcdlii{Así pues, levanta tu rostro hacia la religión viva antes de que llegue un día en el que nadie podrá retroceder ante Dios. Ese día [los seres humanos] serán divididos\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmcdliii{-Quien haya ocultado la verdad sufrirá las consecuencias de ello y quienes hayan obrado rectamente se habrán preparado para ellos mismos un lugar en el que descansar-\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmcdliv{para que Él recompense con Su favor a quienes hayan creído y obrado rectamente. En verdad, el no ama a quienes ocultan la verdad.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmcdlv{Y entre Sus señales está el enviar los vientos como portadores de buenas noticias y el hacer que probéis de Su misericordia y el que los barcos naveguen a una orden Suya y el que bus seáis agradecidos.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmcdlvi{Y, ciertamente, antes de ti ya habíamos enviado Mensajeros a sus pueblos que llegaron a ellos con las pruebas claras y Nos vengamos de quienes habían cometido malas acciones. Y es una obligación para Nosotros auxiliar a los creyentes.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmcdlvii{Es Dios quien envía los vientos que hacen surgir las nubes que Él dispersa por el cielo como quiere. Y las fragmenta y puedes ver como el aguacero sale de su interior. Y cuando favorece con ella a quien Él quiere de Sus siervos, ellos se regocijan y se transmiten unos a otros la buena nueva,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmcdlviii{pues antes de que descendiera sobre ellos estaban desesperados.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmcdlix{Observa, pues, los efectos de la misericordia de tu Señor. Cómo hace vivir la tierra después de haber estado muerta. En verdad, eso es ser el Revivificador de lo muerto. Y Él tiene poder sobre todas las cosas.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmcdlx{Pero si enviamos un viento y ven que todo lo [vuelve] amarillo, regresan de nuevo a su falta de fe.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmcdlxi{Pues, en verdad, tú no puedes hacer oír al muerto ni hacer que el sordo oiga la llamada si se da la vuelta.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmcdlxii{Y tú no puedes guiar al ciego de su extravío. Y, en verdad, no puedes hacer que oiga más que quien crea en Nuestras señales, pues ellos se han sometido, son musulmanes.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmcdlxiii{Dios, Quien os ha creado débiles y después de esa debilidad os hace fuertes. Después de fuertes os hace débiles y ancianos. Él crea lo que quiere. Y Él es Quien todo lo sabe, el Poderoso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmcdlxiv{Y el día en que llegue la Hora, los que hayan hecho el mal jurarán que no han permanecido más de una hora. Así mismo mentían.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmcdlxv{Y aquellos a quienes les fue dado el conocimiento y la fe dirán: «Permanecisteis hasta el Día de la Resurrección según está en la Escritura de Dios y éste es el Día de la Resurrección, pero vosotros no sabíais.»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmcdlxvi{Pero ese día no les servirán sus excusas a quienes fueron opresores, ni se les evitará la condena.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmcdlxvii{Y, ciertamente, pusimos a los hombres todo tipo de ejemplos en este Corán. Y si vas a ellos con una señal, quienes no son creyentes seguro que dirán: «Vosotros no sois más que falsarios.»\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmcdlxviii{Así es como Dios sella el corazón de los que no saben.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmcdlxix{Pero se paciente. En verdad, la promesa de Dios es verdadera. Que no te encuentren débil quienes no tienen certeza.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmcdlxx{\basmalahes Alif, Lam, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxi{Estos son los versículos de la Escritura Sabia.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxii{Guía y misericordia para quienes son buenos.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxiii{Aquellos que hacen la oración, dan el impuesto purificador de su riqueza y creen en la otra vida.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxiv{Esos están en la guía que procede de su Señor y serán los triunfadores.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxv{Y entre la gente hay quien compra historias vanas para extraviar, sin conocimiento, del camino de Dios, tomándolo a broma. Esos tendrán un castigo humillante.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxvi{Y cuando le son recitados Nuestros versículos se da la vuelta altivo como si no los hubiera oído, como si fuera duro de oído. ¡Anúnciale un castigo doloroso!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxvii{En verdad, quienes son creyentes y obran rectamente obtendrán los Jardines del Edén.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxviii{Estarán eternamente en ellos. La promesa de Dios es cierta. Y Él es el Poderoso, el Sabio.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxix{Ha creado los cielos sin columnas que puedas ver y ha colocado en la Tierra firmes montañas para que no tiemble con vosotros y ha hecho surgir en ella toda clase de animales. Y hacemos descender de los cielos agua con la que hacemos surgir un noble par de todo tipo de plantas.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxx{Esta es la creación de Dios, así pues ¡Hacedme ver lo que han creado otros aparte de Él! ¡Los opresores se encuentran en un extravío evidente!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxi{Y, ciertamente, dimos a Luqman la sabiduría [y le dijimos]: “¡Da gracias a Dios!” Quien agradece, agradece en beneficio propio. Y quien no agradece, (sepa que) en verdad, Dios no necesita de Sus criaturas, es rico en Sí mismo, digno de ser alabado.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxii{Y (recuerda) cuando Luqman le dijo a su hijo, aconsejándole: «¡Oh, hijito mío! No adores nada junto a Dios. En verdad, el politeísmo es una opresión inmensa.»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxiii{Y encomendamos al ser humano con respecto a sus padres - Su madre le llevó, soportando debilidad sobre debilidad, terminando su lactancia a los dos años-: «¡Se agradecido conmigo y con tus padres! ¡A Mí regresáis!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxiv{Y si se esfuerzan para que tú adores junto a Mí algo de lo que tú no tienes conocimiento, no les obedezcas. Trátales en este mundo con bondad, pero sigue el camino de quien se vuelve a Mí contrito. Luego, regresaréis a Mí y Yo os informaré de lo que hacíais.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxv{«¡Oh, hijito mío! Aunque tus actos tengan el peso de un grano de mostaza y estén bajo una piedra o en los cielos o en la Tierra, Dios los traerá. En verdad, Dios es sutil, está bien informado.»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxvi{«¡Oh, hijito mío! ¡Haz la oración y ordena lo que es bueno, prohíbe lo que es malo y se paciente cuando sufras una desgracia! En verdad, esto es una de las cuestiones que exigen mayor entereza y decisión.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxvii{«No gires tu rostro ante la gente con altivez y no camines por la Tierra con arrogancia. En verdad, Dios no ama a quien es vanidoso y engreído.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxviii{«Y se modesto en tu caminar y habla poco y con tono suave. En verdad, la más insoportable de las voces es el rebuzno del asno.»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxix{¿No veis cómo Dios ha sometido para vosotros lo que hay en los cielos y en la Tierra y os ha colmado con Sus favores, tanto internos como externos? Y entre los hombres hay quienes discuten sobre Dios sin conocimiento ni guía ni Escritura luminosa.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcdxc{Y si se les dice: «Seguid lo que Dios hizo descender» dicen: «¡No! Seguiremos aquello mismo en lo que encontramos a nuestros padres.» ¿Y si Satanás les estuviese llamando al castigo del Fuego llameante?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcdxci{Y quien rinde su rostro ante Dios y es bueno, se habrá aferrado al asidero más firme. Y en Dios concluyen los asuntos.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcdxcii{¡Qué no te entristezca la falta de fe de aquellos que no creen! Ellos regresarán a Nosotros y les informaremos de lo que hicieron. En verdad, Dios conoce bien lo que hay en la esencia de los pechos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcdxciii{Les dejaremos disfrutar un poco y luego les arrastraremos a un castigo durísimo.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcdxciv{Y si les preguntas «¿Quién ha creado los cielos y la Tierra?» Seguro que dicen: «¡Dios!» Di: «¡Alabado sea Dios!» Pero la mayoría de ellos no saben.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcdxcv{A Dios pertenece lo que hay en los cielos y la Tierra. En verdad, Dios es el Rico por sí mismo, el Digno de alabanza.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcdxcvi{Si todos los árboles que hay en la Tierra fuesen plumas y se añadiese al mar otros siete mares más, no agotarían las palabras de Dios. En verdad, Dios es todopoderoso, sabio.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcdxcvii{Vuestra creación y resurrección no es sino como la creación de un solo ser. En verdad, Dios todo lo oye, todo lo ve.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcdxcviii{¿No has visto cómo hace Dios que la noche entre en el día y el día entre en la noche y ha sometido al Sol y a la Luna, haciendo que cada uno de ellos se mueva hacia un plazo establecido, y que Dios está bien informado de lo que hacéis?\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmcdxcix{Eso es porque Dios es la Verdad y porque lo que ellos invocan en lugar de Él es falso y porque Dios es el Excelso, el Grande.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmd{¿No has visto como el barco surca el mar por el favor de Dios, para haceros ver una de Sus señales? En verdad, en ello hay señales para todo el que es paciente, agradecido.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdi{Y cuando les cubre una ola como una nube sombría, invocan a Dios, creyendo únicamente en Él. Pero cuando les pone a salvo en tierra, unos pocos de ellos permanecen firmes en su propósito. Y no niega Mis señales excepto quien es un mentiroso redomado y un encubridor de la realidad.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdii{¡Oh, gentes! Sed temerosos de vuestro Señor y tened miedo de un día en el que un padre no pueda expiar las faltas de su hijo, ni un hijo pueda expiar las faltas de su padre en absoluto. En verdad, la promesa de Dios es cierta. Por tanto, que la vida mundanal no os vuelva soberbios y que el Soberbio no os haga soberbios frente a Dios.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdiii{En verdad, Dios posee el conocimiento de la Hora. Él hace descender la lluvia y conoce lo que hay en el seno materno. Y ningún ser sabe lo que obtendrá mañana y nadie sabe en qué tierra ha de morir. En verdad, Dios todo lo sabe, está bien informado.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdiv{\basmalahes Alif, Lam, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdv{El descenso de la Escritura en la que no hay duda procede del Señor del Universo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdvi{Ellos dicen: «¡Él lo ha inventado!» Pero él es la Verdad que procede de tu Señor para amonestar a un pueblo al que no ha venido un amonestador antes de ti, para que así, quizás, se guíen.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdvii{Dios, el Cual creó los cielos y la Tierra y lo que hay entre ambos en seis días y luego se instaló en el Trono. Aparte de Él no tenéis protector ni intercesor. ¿Es que no reflexionaréis?\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdviii{Él dirige todos los asuntos, desde los cielos hasta la Tierra. Luego, ascienden a Él en un día que dura mil años de los que vosotros contáis.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdix{Es el Conocedor de lo oculto y lo manifiesto, el Todopoderoso, el Misericordiosísimo con los creyentes.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdx{Quien ha hecho perfecto todo lo que ha creado y Quien creó inicialmente a los seres humanos de barro.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdxi{Luego, puso su descendencia en la esencia que se extrae de una gota de líquido insignificante.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdxii{Luego le dio forma e insufló en él parte de Su Espíritu y puso para vosotros el oído y la vista y el corazón. ¡Poco es lo que agradecéis!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdxiii{Y ellos dicen: «¿Acaso cuando nos hayamos perdido, confundidos con la tierra, seremos creados de nuevo?» Ellos no creen en el encuentro con su Señor.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdxiv{Di: «El ángel de la muerte, al cual habréis sido confiados, tomará vuestras almas y luego se os hará regresar a vuestro Señor.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdxv{Y si vieras cuando los pecadores inclinen sus cabezas ante su Señor: «¡Señor nuestro! ¡Hemos visto y hemos oído! ¡Haznos, pues, regresar y obraremos con rectitud! ¡En verdad, (ahora) tenemos certeza!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdxvi{Si hubiésemos querido habríamos dado a cada ser su guía, pero se cumplirá Mi promesa: «¡He de llenar el Infierno con los genios y los hombres!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdxvii{«¡Gustad [el castigo] por haber olvidado el encuentro de este vuestro día! ¡En verdad, Nosotros también nos olvidamos de vosotros! ¡Gustad el castigo eterno por lo que hacíais!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdxviii{En verdad, creen en Nuestras señales quienes, cuando se les recuerdan, caen prosternados y glorifican con alabanzas a su Señor y no se muestran arrogantes.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdxix{Sus costados abandonan los lechos para invocar a su Señor con temor y esperanza y de lo que Nosotros les hemos provisto reparten.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdxx{Nadie sabe la alegría que ha sido reservada para aquellos en recompensa por lo que hacían.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdxxi{¿Acaso quien es creyente es igual a quien es transgresor? ¡No son iguales!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdxxii{Quienes son creyentes y actúan rectamente obtendrán los Jardines de la Morada, como regalo por lo que hacían.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdxxiii{Pero quienes transgreden tendrán de morada el Fuego. Siempre que quieran salir de él regresarán a él y se les dirá: «¡Gustad el castigo del Fuego! ¡Ese que solíais desmentir!»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdxxiv{Y les haremos gustar algo del pequeño castigo, no del gran castigo. Quizás así regresen.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdxxv{Y ¿Quién es más opresor que cuando le son recordados los versículos de su Señor se aparta de ellos? En verdad, tomaremos venganza de los ofensores criminales.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdxxvi{Y, ciertamente, hicimos entrega a Moisés de la Escritura -así pues, no seas escéptico respecto al encuentro con Él- y la pusimos como guia para los Hijos de Israel\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdxxvii{Y, de entre ellos, pusimos dirigentes espirituales que les guiasen conforme a Mi mandato, pues eran pacientes y tenían certeza de Nuestras señales.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdxxviii{En verdad, tu Señor es Quien juzgará entre ellos el Día del Levantamiento sobre aquello en lo que mantenían diferencias.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdxxix{¿Acaso no les ha quedado claro cuántas generaciones antes de ellos hemos destruído, sobre cuyas casas ellos caminan ahora? En verdad, en ello hay indicaciones. ¿Es que no oyen?\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdxxx{¿Acaso no ven que Nosotros suministramos el agua a la tierra seca y árida y hacemos salir con ella cosechas de las que comen sus ganados y ellos mismos? ¿Es que no observan?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdxxxi{Y dicen: «¿Cuándo será esa victoria, si decís la verdad?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdxxxii{Dí: «El día de la victoria no le será de utilidad la fe a quienes no la tenían y ellos no serán tenidos en cuenta.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdxxxiii{Así pues, ¡Apártate de ellos y espera! ¡En verdad, ellos también están a la espera!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdxxxiv{\basmalahes ¡Oh, profeta! Se temeroso de Dios y no obedezcas a los que no son creyentes ni a los hipócritas. En verdad, Dios todo lo sabe, es sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdxxxv{Y sigue lo que te fue revelado procedente de tu Señor. En verdad, Dios está bien informado de lo que hacéis.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdxxxvi{Y confía en Dios. Dios es suficiente para proteger.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdxxxvii{Dios no ha puesto dos corazones en el interior de ningún hombre ni convierte a la mujer que repudia en su madre, ni hace que vuestros hijos adoptados sean vuestros propios hijos. Eso son cosas que decís con vuestras bocas, pero Dios dice la Verdad y es Quien guía al camino.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdxxxviii{Llamadles por el nombre de su padre. Eso es más equitativo ante Dios. Y si no conocéis el nombre de su padre, entonces, son hermanos vuestros en la fe y vuestros protegidos. No cometéis pecado si os equivocáis en ello, sino en lo que premeditan vuestros corazones. Pero Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdxxxix{El Profeta posee mayores derechos sobre los creyentes que ellos mismos y sus esposas son sus madres. Los familiares consanguíneos tienen preferencia, unos más que otros, en la Escritura de Dios respecto a los creyentes y a los emigrantes, excepto en el bien que podáis hacer a vuestros compañeros. Esto está recogido en la Escritura.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdxl{Y [recuerda] cuando tomamos de los profetas un juramento, de ellos y de ti, de Noé, de Abraham, de Moisés y de Jesús hijo de María. Y hemos tomado de ellos un grave juramento\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdxli{para que Él pregunte a los sinceros por su sinceridad y castigue a los que no creen con un castigo doloroso.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdxlii{¡Oh, los que sois creyentes! Recordad el favor que Dios os hizo cuando venía a vosotros un ejército y Él envió contra ellos un viento y un ejército que vosotros no veíais. Pero Dios observa cuanto hacéis.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdxliii{Cuando vinieron contra vosotros desde arriba y desde abajo y los ojos se desorbitaban de temor y los corazones se subían a la garganta y comenzasteis a especular y a dudar de Dios.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdxliv{De esa manera fueron puestos a prueba los creyentes y temblaron fuertemente conmocionados.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdxlv{Y cuando dijeron los hipócritas y aquellos cuyos corazones estaban enfermos: «No nos ha prometido Dios nada más que engaños.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdxlvi{Y cuando un grupo de ellos dijo: «¡Oh, gente de Yatrib! ¡No tenéis donde estableceros! ¡Regresad!» Un grupo de ellos pidió permiso al Profeta diciendo: «En verdad, nuestras casas están desprotegidas.» Pero no estaban desprotegidas, solamente querían escapar.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdxlvii{Si les hubieran invadido por los flancos de sus casas y les hubieran pedido su apostasía, con seguridad la habrían dado sin demorarse mucho en ello.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdxlviii{Ciertamente, habían prometido a Dios anteriormente que no darían la espalda y de las promesas hechas a Dios hay que responder.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdxlix{Di: «De nada os servirá huir si pretendéis escapar de la muerte o de que os maten. De todos modos solo disfrutareis un breve plazo.»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdl{Di: «¿Quién podría protegeros de Dios si Él quisiera un mal para vosotros o quisiera para vosotros una misericordia?» No encontrarán a nadie aparte de Dios que les proteja y les auxilie.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdli{Con certeza, Dios conoce a quienes os ponen dificultades y a los que dicen a sus hermanos: «¡Venid a nosotros!» y no van al frente excepto poco,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdlii{escatimándoos su ayuda. Y cuando llega el miedo les verás mirándoos con los ojos desorbitados como al que le viene la muerte. Y cuando se va el miedo, os golpean con lenguas afiladas, disgustados y ávidos del bien que habéis obtenido. Esos jamás han tenido fe. Por ello, Dios ha invalidado sus acciones. Eso es fácil para Dios.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdliii{Creen que los partidos no se han ido. Y si los partidos volviesen de nuevo, desearían estar en el desierto entre los beduinos preguntando las noticias que hay sobre vosotros. Y si estuviesen entre vosotros apenas participarían en la batalla.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdliv{Ciertamente, en el Mensajero de Dios tenéis un buen modelo para quien tiene su esperanza puesta en Dios y en el Último Día y recuerda mucho a Dios.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdlv{Y cuando los creyentes vieron a los partidos dijeron: «Esto es lo que nos prometieron Dios y Su Mensajero y Dios y Su Mensajero dijeron la verdad.» Y no hizo sino incrementarse su fe y su sometimiento a Dios.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdlvi{Entre los creyentes hay hombres que cumplen lo que han prometido a Dios. Entre ellos hay quienes ya han cumplido su promesa y hay otros que aun esperan y no han cambiado en absoluto.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdlvii{Para que Dios recompense a quienes han cumplido su promesa por su sinceridad y castigue a los hipócritas si quiere o se vuelva a ellos y les perdone si se arrepienten. En verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdlviii{Dios hizo regresar a los incrédulos llenos de ira y preocupación sin haber obtenido el bien que esperaban y Dios evitó que los creyentes tuvieran que combatir. Dios es fuerte, poderoso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdlix{Él hizo descender de sus fortalezas a quienes de entre la gente de la Escritura les había apoyado e infundió el temor en sus corazones. A un grupo les matasteis y a otro les hicisteis prisioneros.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdlx{Y os dio en herencias sus tierras, sus casas y sus bienes y un territorio que todavía no habéis pisado. Dios tiene poder sobre todas las cosas.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdlxi{¡Oh, Profeta! Di a tus esposas: «Si deseáis la vida de este mundo y sus adornos, venid y os daré para que podáis disfrutarlo y os dejaré ir de buena manera.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdlxii{Pero si queréis a Dios y a Su Mensajero y la morada de la Otra Vida, Dios ha preparado para quienes sois virtuosas una recompensa inmensa.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdlxiii{¡Oh, esposas del Profeta! ¡Quien de vosotras cometa un pecado evidente, recibirá doble castigo! Eso es fácil para Dios.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdlxiv{Y, a quienes de vosotras obedezcan a Dios y a Su Mensajero y obren rectamente les daremos dos veces su recompensa y les otorgaremos una provisión generosa.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdlxv{¡Oh, esposas de Profeta! ¡Vosotras no sois como cualquier otra mujer! Si sois temerosas de Dios, no elevéis vuestro tono de voz al hablar, de manera que se despierte el deseo de quien tiene una enfermedad en el corazón, y hablad de manera buena y adecuada.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdlxvi{Y permaneced en vuestras casas y no os mostréis ante los hombres como se mostraban en los tiempos de ignorancia anteriores y haced la oración y dad el impuesto purificador de la riqueza y obedeced a Dios y a Su Mensajero. Ciertamente, Dios quiere apartar de vosotros la impureza ¡Gente de la Casa! y purificaos absolutamente.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdlxvii{Y vosotras, recordad lo que es recitado del Corán en vuestras casas relativo a las señales de Dios y la sabiduría. En verdad, Dios es sutil, está bien informado.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdlxviii{En verdad, para los musulmanes y las musulmanas, los creyentes y las creyentes, los obedientes y a las obedientes a las ordenes de Dios, los sinceros y las sinceras, los pacientes y las pacientes, los humildes y a las humildes ante Dios, los caritativos y las caritativas, los que ayunan y las que ayunan, los que protegen y las que protegen su sexo y los que recuerdan y las que recuerdan mucho a Dios, Dios ha preparado un perdón y una recompensa enormes.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdlxix{Cuando Dios y Su Mensajero deciden un asunto, los creyentes y las creyentes no tienen elección sobre ese asunto y quien desobedezca a Dios y a Su Mensajero se habrá extraviado con un extravío evidente.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdlxx{Y [recuerda] cuando dijiste a quien Dios había agraciado y a quien tú habías agraciado: «Reten a tu esposa contigo y se temeroso de Dios» y guardabas en tu alma lo que Dios habría de manifestar, temiendo a la gente, cuando Dios tiene mayor derecho a que Le temas. Así pues, cuando Zayd cambió de opinión respecto a ella, te la dimos por esposa para que los creyentes no encuentren impedimento en casarse con las esposas de sus hijos adoptivos cuando estos decidan terminar con ellas. Y la orden de Dios se cumple.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdlxxi{No hay impedimento para el Profeta en aquello que Dios ha dispuesto para él. Es lo habitual en Dios para quienes vivieron antes. -Y la orden de Dios es un decreto establecido.-\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdlxxii{Aquellos que difundieron el mensaje de Dios y Le temen y no temen a nadie más que a Dios. Y Dios es suficiente para llevar la cuenta.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdlxxiii{Muhammad no es el padre de ninguno de vuestros hombres, sino el Mensajero de Dios y el Sello de los profetas. Y Dios es Quien mejor conoce todas las cosas.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdlxxiv{¡Oh, creyentes! ¡Recordad mucho a Dios\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdlxxv{y glorificadle mañana y tarde!\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdlxxvi{Él es Quien os bendice, y lo mismo hacen Sus ángeles, para sacaros de las tinieblas hacia la luz, y Él es misericordiosísimo con los creyentes.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdlxxvii{El día que se encuentren con Él, se les saludará diciéndoles: «¡Paz!» y Él les tendrá preparada una generosa recompensa.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdlxxviii{¡Oh, Profeta! En verdad, te hemos enviado como testigo, como portador de buenas nuevas y como amonestador,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdlxxix{como uno que invita hacia Dios con Su permiso y como una lámpara luminosa.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdlxxx{Anuncia a los creyentes la buena noticia de que hay para ellos, procedente de Dios, un favor grande\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxi{y no obedezcas a quienes no creen, ni a los hipócritas. No hagas caso a sus agresiones y confía en Dios. Dios es protector suficiente.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxii{¡Oh, creyentes! Cuando os caséis con mujeres creyentes y os divorciéis de ellas antes de haberlas tocado, ellas no tienen que guardar un plazo antes de que puedan volver a casarse. Dotadlas adecuadamente y dejadlas ir con amabilidad.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxiii{¡Oh, Profeta! Hemos hecho lícitas para ti a tus esposas a las cuales has dado sus dotes, a las cautivas que Dios te ha dado como parte del botín de guerra, las hijas de tus tíos paternos y las hijas de tus tías paternas, las hijas de tus tíos maternos y las hijas de tus tías maternas que emigraron contigo y toda mujer creyente que se dé al Profeta, si el Profeta desea casarse con ella. Esto es exclusivamente para ti, no para el resto de los creyentes -Ya sabemos lo que hemos establecido para ellos sobres sus esposas y cautivas- para que no tengas problemas. Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxiv{Pospón el encuentro con quien quieras de ellas y acerca a ti a quien quieras y si quieres acercar a alguna de las que habías apartado no cometes falta alguna. Eso es mejor para que estén felices y no se sientan desgraciadas y estén satisfechas con lo que des a cada una de ellas. Y Dios sabe lo que hay en vuestros corazones. Dios todo lo conoce, es indulgente.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxv{En adelante, no te son permitidas las mujeres, -ni tampoco que las cambies por otras esposas, aunque su belleza te impresione- excepto quiénes son tus cautivas. Y Dios todo lo observa.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxvi{¡Oh, creyentes! No entréis en las casas del Profeta, excepto si se os concede permiso para una comida, pero sin presentarse previamente, a la espera de que esté lista. Más bien, entrad cuando se os invite y marchaos cuando terminéis y no os quedéis charlando. En verdad, tal conducta molesta al Profeta, aunque le da vergüenza decíroslo. Pero Dios no se avergüenza de la verdad. Y cuando queráis pedirles algo de la casa a ellas, hacedlo desde detrás de una cortina. Eso es más puro para vuestros corazones y para los corazones de ellas. No debéis molestar al Mensajero de Dios ni casaros jamás con sus esposas después de él. Eso sería algo gravísimo ante Dios.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxvii{Si manifestáis algo o lo ocultáis, en verdad, Dios conoce todas las cosas.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxviii{Ellas no cometen pecado si son sus padres o sus hijos o sus hermanos o los hijos de sus hermanos o los hijos de sus hermanas o sus mujeres o sus esclavas. Y sed temerosas de Dios. En verdad, Dios es testigo de todas las cosas.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxix{En verdad, Dios y Sus ángeles bendicen al Profeta. ¡Oh, creyentes! ¡Pedid bendiciones por él y saludadle con el mejor de los saludos de paz!\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmdxc{En verdad, a quienes molesten a Dios y a Su Mensajero, Dios les maldecirá en esta vida y en la Otra y les tendrá preparado un castigo humillante.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmdxci{Y quienes molesten a los creyentes y a las creyentes por algo que no hayan hecho, cometen una calumnia y un pecado evidente.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmdxcii{¡Oh, Profeta! Di a tus esposas y a tus hijas y a las mujeres de los creyentes que se cubran todo el cuerpo con sus túnicas. Eso es mejor para que sean reconocidas y no sean molestadas. Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmdxciii{Si los hipócritas, quienes tienen sus corazones enfermos y los intrigantes de Medina, no cesan, haremos que vayas contra ellos y no permanecerán en ella junto a ti sino por poco tiempo.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmdxciv{Donde quiera que se les encuentre serán maldecidos, apresados y matados.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmdxcv{Es la costumbre de Dios con quienes pasaron anteriormente. Y no encontrarás cambios en la costumbre de Dios.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmdxcvi{La gente te pregunta sobre la Hora. Di: «En verdad, ese conocimiento sólo lo tiene Dios y ¿Quién sabe? Puede que la Hora esté cerca.»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmdxcvii{En verdad, Dios maldice a los incrédulos y ha preparado para ellos un Fuego llameante\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmdxcviii{en el que permanecerán eternamente. No encontrarán quien les proteja ni quien les auxilie.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmdxcix{El día que sus rostros se desfiguren en el Fuego, dirán: «¡Ojalá hubiésemos obedecido a Dios y hubiésemos obedecido al Mensajero!»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmdc{Y dirán: «¡Señor nuestro! ¡En verdad, obedecimos a nuestros nobles y a nuestros grandes y nos desviaron del camino!\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmdci{¡Señor nuestro! ¡Dales en doble de castigo y maldíceles con una gran maldición!»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmdcii{¡Oh, creyentes! No seáis como quienes molestaron a Moisés. Dios le consideró inocente de lo que decían y era honorable ante Dios.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmdciii{¡Oh, creyentes! ¡Sed temerosos de Dios y hablad con fundamento y conforme a la verdad!\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmdciv{Él corregirá vuestros actos y os perdonará vuestros pecados. Y quien obedezca a Dios y a Su Mensajero, obtendrá, con seguridad, un triunfo inmenso.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmdcv{En verdad, ofrecimos el depósito a los cielos, a la Tierra y a las montañas, y rehusaron cargar con él y tuvieron miedo, pero el ser humano cargó con él. En verdad, él es injusto, ignorante.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmdcvi{Para que Dios castigue a los hipócritas y a las hipócritas y a los idólatras y a las idólatras y acepte el arrepentimiento de los creyentes y las creyentes. Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmdcvii{\basmalahes Alabado sea Aquel a quien pertenece lo que hay en los cielos y en la Tierra. A Él pertenece la alabanza en la otra vida y Él es el Sabio, el Bien informado.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdcviii{Él conoce lo que entra en la tierra y lo que sale de ella y lo que desciende del cielo y lo que asciende a él y Él es el Misericordiosísimo, el Perdonador.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdcix{Los que no son creyentes dicen: «La Hora no llegará a nosotros.» Di: «No es así. Juro por mi Señor que os llegará con seguridad. Él es el conocedor de lo que está oculto a los sentidos. No escapa de Él ni el peso de un átomo en los cielos y la Tierra, ni hay nada más pequeño que eso ni más grande que no esté en una Escritura clara,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdcx{para recompensar a quienes creen y obran rectamente. Ellos obtendrán un perdón y una provisión generosa.»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdcxi{Pero quienes se esfuerzan en desvirtuar Nuestras señales tendrán un castigo doloroso por su pecado.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdcxii{Y a quienes les fue dado el conocimiento ven que aquello que descendió a ti procedente de tu Señor es la Verdad y que guía al camino del Todopoderoso, el Digno de alabanza.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdcxiii{Y quienes no creen dicen: «¿Queréis que os indiquemos un hombre que os anuncie que, cuando estéis desmembrados y descompuestos, seréis creados nuevamente?»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdcxiv{«Él ha inventado una mentira sobre Dios o está poseído.» Pero, quienes no creen en la otra vida, estarán en el castigo y en un extravío profundo.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdcxv{¿Acaso no ven los cielos y la tierra que tienen delante y detrás de ellos? Si Nosotros quisiéramos, haríamos que la tierra se los tragase o que cayese sobre ellos una parte del cielo. En verdad, en ello hay una señal para todo siervo que se vuelve a su Señor.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdcxvi{Ciertamente, otorgamos un favor a Nuestro siervo David: «¡Oh, montañas y aves, cantad alabanzas con él!» E hicimos que el hierro fuese blando para él:\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdcxvii{«Haz cotas de malla y ajusta la medida de los anillos al tejerlas.» Y obrad rectamente. En verdad, Yo observo lo que hacéis.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdcxviii{Y [sometimos] a Salomón el viento, que en una mañana hacía el recorrido de un mes y en una tarde el de otro mes e hicimos que manará para él la fuente de bronce fundido y que algunos genios trabajasen para él con permiso de su Señor. Y a quien de ellos desobedecía Nuestras órdenes le hacíamos probar el castigo del fuego.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdcxix{Ellos hacían para él lo que quería: templos, estatuas, recipientes como estanques y grandes marmitas que no se podían trasladar. «Familia de David ¡Sed agradecidos!» ¡Pocos de Mis siervos son agradecidos!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdcxx{Y, cuando decretamos para él la muerte, nada les indicó su muerte excepto un animal de la tierra que se comió su bastón. Así pues, cuando él cayó, se les hizo claro a los genios que si hubieran tenido conocimiento de lo que está oculto a los sentidos no habrían permanecido en el castigo humillante.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdcxxi{Ciertamente, en el lugar en el que los Sabeos vivían había una señal milagrosa: dos jardines a derecha e izquierda. «¡Comed de la provisión de vuestro Señor y agradecedle [el tener] un buen país y un Señor perdonador!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdcxxii{Pero se apartaron y enviamos sobre ellos la inundación del dique y cambiamos sus dos huertos por otros dos que daban frutos amargos, tamariscos y algunos arbustos de azufaifos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdcxxiii{Esa es la recompensa que tuvieron por su ingratitud ¿Acaso recompensamos así excepto a los desagradecidos?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdcxxiv{Pusimos, entre ellos y las ciudades que Nosotros habíamos bendecido, ciudades que se divisaban y establecimos caminos equidistantes entre ellas. «¡Viajad por ellos de noche y de día con seguridad!»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdcxxv{Pero dijeron: «¡Señor nuestro! Alarga las distancias de nuestros viajes.» Y ellos mismos se oprimieron. Hicimos que fueran leyenda y les dispersamos completamente. En verdad, en ello hay señales para todo el que es muy paciente y muy agradecido.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdcxxvi{Y, ciertamente, Iblís confirmó sus suposiciones sobre ellos, pues le siguieron todos excepto un grupo de los creyentes,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdcxxvii{pues sobre ellos no tenía poder. Sólo queríamos distinguir a quién de ellos creía en la otra vida de quienes tenían dudas sobre ella. Y tu Señor tiene buen cuidado de todas las cosas.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdcxxviii{Di: «¡Invocad a quienes vosotros pensáis que son dioses en lugar de Dios! Ellos no poseen ni el peso de un átomo en los cielos ni en la Tierra, ni tienen parte en ambos, ni ninguno de ellos es Su ayudante.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdcxxix{«Y sólo tiene beneficio la intercesión de aquellos a quienes Él de permiso.» Hasta que, cuando el temor se aleje de sus corazones, digan: «¿Qué ha dicho vuestro Señor?» Ellos dirán: «La Verdad y Él es el Altísimo, el Grande.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdcxxx{Di: «¿Quién os procura el sustento de los cielos y la Tierra?» Di: «¡Dios! Entre nosotros y vosotros unos estamos bien guiados y otros en un error evidente.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxi{Di: «No se os pedirán cuentas por nuestros pecados, ni a nosotros por los que vosotros cometéis.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxii{Di: «Nuestro Señor nos reunirá a todos y juzgará entre nosotros con justicia y Él es el Juez que todo lo sabe.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxiii{Di: «Mostradme a quienes consideráis Sus socios. Pero no es así. Él es Dios, el Todopoderoso, el Sabio.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxiv{No te hemos enviado a la gente sino como una protección ante el pecado, portador de buenas nuevas y amonestador, pero la mayoría de las gentes no saben\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxv{y dicen: «¿Cuándo tendrá lugar vuestra promesa, si es que sois sinceros?»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxvi{Di: «Tenéis cita un día que no se os retrasará ni adelantará ni una hora.»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxvii{Y quienes no son creyentes dicen: «No creemos en ese Corán ni en lo que vino antes de él.» Pero, si pudieses ver cuando los opresores estén ante su Señor culpándose unos a otros. Aquellos que fueron oprimidos dirán a los arrogantes: «Si no hubiese sido por vosotros habríamos sido creyentes.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxviii{Aquellos que fueron arrogantes dirán a los oprimidos: «¿Acaso nosotros os apartamos de la buena guía cuando llegó a vosotros? No. Sino que erais pecadores.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxix{Y los oprimidos dirán a los arrogantes: «No. Fueron vuestras maquinaciones de noche y de día, ordenándonos que no creyésemos en Dios y que le atribuyésemos semejantes.» Cuando vean el castigo, ocultarán su remordimiento. Y pondremos argollas de hierro en los cuellos de quienes no creyeron. ¿Acaso se les retribuirá excepto por lo que hacían?\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdcxl{Y no hemos enviado a ningún pueblo un amonestador sin que quienes vivían en la opulencia dijeran: «No creeremos en aquello con lo que habéis sido enviados.»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdcxli{Y dijeran: «Nosotros poseemos más riqueza e hijos. No seremos castigados»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdcxlii{Di: «En verdad, mi Señor incrementa o restringe la provisión a quien Él quiere, pero la mayoría de las personas no saben»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdcxliii{Y no es con vuestro dinero ni con vuestros hijos con lo que podéis acercaros a Nosotros, sino quienes crean y obren rectamente. Esos obtendrán dos veces la recompensa por lo que hicieron y estarán a salvo en aposentos elevados.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdcxliv{Y quienes se esfuerzan por negar e invalidar Nuestras señales, permanecerán en el castigo\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdcxlv{Di: «En verdad, Dios otorga con largueza Su provisión a quien Él quiere de Sus siervos y la restringe a quien Él quiere y Él os restituirá aquello que repartáis, pues Él es el mejor de los proveedores.»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdcxlvi{Y el día que les reúna a todos, dirá a los ángeles: «¿Es a vosotros a quienes ellos adoraban?»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdcxlvii{Ellos dirán: «¡Gloria a Ti! ¡Tú eres nuestros amigo y protector, no ellos! Ellos adoraban a los genios. La mayoría tenía fe en ellos»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdcxlviii{Y hoy no podréis beneficiaros ni perjudicaros unos a otros y diremos a quienes oprimieron: «Probad el castigo del Fuego que vosotros desmentíais»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdcxlix{Y cuando les son recitados nuestros versículos claros dicen: «Éste no es más que un hombre que quiere apartaros de aquello que adoraban vuestros padres.» Y dicen: «Esto no es más que una mentira inventada.» Y dicen los que no son creyentes cuando la Verdad viene a ellos: «Esto no es más que magia evidente»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdcl{Nosotros no les dimos ninguna de las Escrituras [Sagradas] para que la estudiasen ni les habíamos enviado antes de tí ningún amonestador.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdcli{También desmintieron los que vinieron antes de ellos y ellos no han obtenido ni la décima parte de lo que les dimos, pero desmintieron a Mis Mensajeros y ¡cómo fue mi Castigo!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdclii{Di: «En verdad, os recomiendo una cosa: Que os pongáis en pie por Dios, por parejas o individualmente, y reflexionéis.» Vuestro compañero no es un poseso. Verdaderamente, él no es para vosotros más que un advertidor del grave castigo que os aguarda.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdcliii{Di: «No os pido una recompensa. Para vosotros. En verdad, mi recompensa sólo concierne a Dios y Él es testigo de todas las cosas»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdcliv{Di: «En verdad, mi Señor aleja la falsedad con la Verdad. Él conoce lo que no se puede percibir con los sentidos»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdclv{Di: «Ha venido la Verdad y la falsedad no puede crear ni recrear\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdclvi{Di: «Si me extravío, me extravío por mi ego y si me guío rectamente es gracias a lo que mi Señor me ha revelado. En verdad, Él todo lo oye, está cerca»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdclvii{Y, si vieras cuando estén aterrorizados pero no puedan escapar y sean atrapados desde un lugar cercano\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdclviii{y digan: «¡Creémos en él!» Pero ¿cómo podrán alcanzarlo desde un lugar tan alejado?\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdclix{Habiendo descreído de él anteriormente y habiendo rechazado desde un lugar alejado lo que no se percibe con los sentidos.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdclx{Se interpondrá una barrera entre ellos y lo que ellos desean, lo mismo que sucedió con sus semejantes anteriormente. En verdad, ellos tenían una seria duda.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdclxi{\basmalahes Alabado sea Dios, Creador de los cielos y la Tierra y Quien ha puesto a los ángeles como mensajeros y poseedores de alas dobles, triples o cuádruples. Él añade a la creación lo que quiere. En verdad, Dios tiene poder sobre toda la creación\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdclxii{La misericordia que Dios libra para los seres humanos nadie puede obstaculizarla y lo que Él impide nadie después de Él puede realizarlo, pues Él es el Todopoderoso, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdclxiii{¡Oh, gentes! ¡Recordad las mercedes que Dios ha tenido con vosotros! ¿Hay en la creación, aparte de Dios, quien os provea de lo que hay en los cielos y en la Tierra? No hay más dios que Él. ¿Cómo, pues, os desviáis?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdclxiv{Y si te desmienten, también desmintieron a Mensajeros anteriores a ti, pero los asuntos regresan a Dios.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdclxv{¡Oh, humanos! En verdad, la promesa de Dios es verdadera. Por tanto, que la vida mundanal no os vuelva soberbios y que el Soberbio no os haga soberbios frente a Dios.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdclxvi{En verdad, Satanás en un enemigo para vosotros, así pues, tenedle por enemigo. En verdad, él invita a sus partidarios a que sean gente para el Fuego flamígero.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdclxvii{Para quienes no creen hay un duro castigo y para quienes creen y obran rectamente hay perdón y una gran recompensa.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdclxviii{¿Acaso aquel a quien le parecen hermosos sus malos actos y los ve como buenos…? En verdad, Dios extravía a quien Él quiere y guía a quien Él quiere. Así pues, no sientas pena por ellos. En verdad, Dios sabe lo que ellos hacen.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdclxix{Es Dios Quien envía los vientos que levantan las nubes y Nosotros las dirigimos hacia una región muerta y damos vida con ella a la Tierra después de su muerte. Así mismo será la Resurrección.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdclxx{Quien quiera el poder y la gloria, sepa que todo el poder y la gloria pertenecen a Dios. A Él asciende la buena palabra y la obra recta la eleva. Y quienes planean maldades tendrán un duro castigo y sus planes serán destruidos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdclxxi{Dios os ha creado de tierra, luego de una gota, luego os ha puesto en parejas. No hay hembra que conciba o que de a luz sin Su conocimiento y a nadie se le alarga la vida o se le acorta sin que esté consignado en una Escritura. En verdad, eso es fácil para Dios.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdclxxii{No son iguales las dos grandes extensiones de agua. na es pura y dulce, agradable de beber y la otra es salada y desagradable, y de ambas coméis carne fresca y extraéis adornos con los que os vestís. Y ves las naves que las surcan para que busquéis Su favor y, quizás así, agradezcáis.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdclxxiii{Él introduce la noche en el día e introduce el día en la noche y ha sometido al Sol y a la Luna, que transcurren durante un plazo establecido. Ese es Dios vuestro Señor. A Él pertenece el gobierno. Y quienes vosotros invocáis en lugar de Él, no gobiernan ni la piel del hueso de un dátil.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdclxxiv{Si les invocáis no escuchan vuestra invocación y si la escuchan no os pueden dar respuesta y el Día del Levantamiento renegarán de vuestra idolatría. Y nadie te puede informar como Uno que está bien informado.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdclxxv{¡Oh, humanos! Vosotros sois los necesitados de Dios y Dios es el Autosuficiente, el Rico por sí mismo, el Digno de alabanza.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdclxxvi{Sí Él quisiera os eliminaría y haría una nueva creación.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdclxxvii{Eso no es difícil para Dios.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdclxxviii{Nadie cargará con la carga de los pecados de otro y si alguien cuya carga sea muy pesada pide a otro que la lleve, nadie cargará nada de ella, aunque sea un pariente cercano. Y, en verdad, tu amonestación sólo surte efecto sobre quienes temen a su Señor en secreto y hacen la oración. Quien se purifica, se purifica para su propio beneficio y el regreso es hacia Dios.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdclxxix{Y no son iguales el ciego y el que ve,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdclxxx{ni las tinieblas y la luz.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxi{ni la sombra y el calor abrasador.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxii{Ni son iguales los vivos y los muertos. En verdad, Dios hace oír a quien Él quiere, pero tú no puedes hacer oír a quienes están en las tumbas.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxiii{En verdad, tú no eres más que un amonestador.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxiv{Ciertamente, te hemos enviado con la Verdad, como portador de buenas nuevas y amonestador, pues no hay comunidad por la que no haya pasado un amonestador.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxv{Y si te desmienten, también desmintieron quienes vinieron antes de ellos. Vinieron a ellos sus Mensajeros con las pruebas claras, con los Salmos y con la Escritura luminosa.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxvi{Luego, atrapamos a quienes no creyeron y ¡Cuál fue mi rechazo!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxvii{¿Acaso no has visto que Dios hace descender el agua y hacemos salir con ella frutos de variados colores? Y en las montañas hay vetas de diferentes colores: blancas, rojas y de un negro intenso.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxviii{Y los humanos, las bestias y el ganado también son de diferentes colores. En verdad, de Sus siervos, sólo temen a Dios los que son sabios. En verdad, Dios es todopoderoso, perdonador.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxix{En verdad, quienes recitan la Escritura de Dios y hacen la oración y reparten secreta y abiertamente de lo que nosotros les hemos proveído esperan realizar una transacción que no tiene perjuicio\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdcxc{Dios les dará su recompensa y les aumentará Su favor. En verdad, Él es perdonador, agradecido.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdcxci{Y lo que Nosotros te hemos revelado de la Escritura es la Verdad que confirma lo que fue revelado antes de ella. En verdad, Dios está bien informado, ve a Sus siervos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdcxcii{Luego dimos en herencia la Escritura a quienes escogimos de Nuestros siervos, pues entre ellos hay quienes oprimen sus almas, otros que siguen un camino moderado y otros que van por delante en la realización de buenas obras con el permiso de Dios. Ese es el gran favor.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdcxciii{Entrarán en los Jardines del Edén y allí se adornarán con pulseras de oro y perlas y sus vestidos allí serán de seda.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdcxciv{Y dirán: «Alabado sea Dios que ha apartado de nosotros la congoja. En verdad, nuestro Señor es perdonador, agradecido.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdcxcv{Él nos ha hecho lícita, por Su favor, la Morada Permanente en la que no sufriremos adversidad ni sufriremos fatiga.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdcxcvi{Y para quienes no creyeron, el fuego del Infierno. No se les permitirá morir ni se les aliviará su castigo. Así es como Nosotros castigamos a todo el que trató de ocultar la Verdad.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdcxcvii{Allí se lamentarán a gritos: «¡Señor nuestro! ¡Sácanos para que obremos rectamente, a diferencia de lo que hacíamos!» «¿Es que no os dimos suficiente vida para que quien hubiese querido reflexionar se hubiese dejado amonestar y no vino a vosotros el amonestador?» «Así pues ¡Probad!» Los opresores no tendrán quien les auxilie.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdcxcviii{En verdad, Dios es Quien conoce lo que está oculto a los sentidos en los cielos y en la Tierra. En verdad, Él es Quien conoce lo que hay en el fondo de los corazones.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdcxcix{Él es Quien os ha puesto como herederos en la Tierra. Así pues, quien trate de ocultar la Verdad, se perjudicará a sí mismo. La falta de fe de quienes niegan la realidad sólo sirve para incrementar el disgusto de su Señor. La falta de fe de quienes niegan la realidad sólo incrementa su propio perjuicio.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdcc{Di: «¿Habéis visto a vuestros asociados, aquellos que invocáis en lugar de Dios? Mostradme lo que han creado en la Tierra o si tienen parte alguna en los cielos o si Nosotros les hemos dado alguna Escritura en la cual puedan apoyarse como una prueba clara.» ¡No! Los opresores sólo se prometen mentiras unos a otros.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdcci{En verdad, Dios mantiene los cielos y la Tierra para que no se caigan y si se cayesen nadie podría mantenerlos excepto Él. En verdad, Él es indulgente, perdonador.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdccii{Juraron por Dios con solemnes testimonios que si viniese a ellos un amonestador seguirían la guía mejor que ninguna otra comunidad, pero cuando vino a ellos un amonestador sólo incrementó su rechazo,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdcciii{comportándose con arrogancia en la Tierra y maquinando el mal. Pero las malas maquinaciones sólo recaen sobre quienes las realizan. Así pues ¿Acaso esperan otra suerte que la que tuvieron los antiguos? No encontrarán cambios en la práctica de Dios ni encontrarán variaciones en la práctica de Dios.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdcciv{¿Acaso no han viajado por la Tierra y han visto cuál fue el final de quienes vivieron antes de ellos aunque fueron más fuertes y poderosos que ellos? Nada en los cielos ni la Tierra puede debilitar a Dios. En verdad, Él todo lo conoce, todo lo puede.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdccv{Si Dios castigase a los seres humanos por lo que sus actos merecen no dejaría a ningún ser vivo sobre la superficie de la Tierra, pero lo pospone para un plazo ya establecido. Y cuando llegue su plazo… Dios observa a Sus siervos.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdccvi{\basmalahes Ya, Sin.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdccvii{Juro por el sabio Corán\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdccviii{que tú eres uno de los Mensajeros\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdccix{sobre un camino recto.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdccx{Hecho descender gradualmente por el Todopoderoso, el Misericordiosísimo,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdccxi{para que amonestes con él a un pueblo cuyos padres no fueron amonestados, por lo cual ellos están distraídos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdccxii{Juro que se ha confirmado lo dicho para la mayoría de ellos, pero ellos no creen.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdccxiii{Hemos puesto en sus cuellos argollas hasta la barbilla que les mantienen la cabeza levantada\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdccxiv{y hemos puesto por delante de ellos una barrera y por detrás de ellos una barrera, de manera que les hemos cubierto totalmente y no pueden ver\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdccxv{y les da igual que les amonestes o no les amonestes, no creerán.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdccxvi{En verdad, solo aprovecha tu amonestación quien sigue el Recuerdo y teme al Clementísimo en secreto. Así pues, anúnciale la buena noticia de un perdón y una recompensa generosa\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdccxvii{En verdad, somos Nosotros quienes damos la vida a los muertos y escribimos lo que han enviado por delante de ellos y las obras que dejan atrás y lo tenemos todo consignado en un libro claro.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdccxviii{Y cítales el ejemplo de los habitantes de la ciudad a la que vinieron los Mensajeros,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdccxix{cuando Nosotros enviamos a ellos a dos y los desmintieron, así que les reforzamos con un tercero y dijeron: «En verdad, somos Mensajeros enviados a vosotros.»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdccxx{Ellos dijeron: «Vosotros no sois más que seres humanos como nosotros y el Clementísimo no ha enviado nada. Sois unos mentirosos.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdccxxi{Ellos dijeron: «Nuestro Señor sabe que somos Mensajeros enviados a vosotros\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdccxxii{y nuestra responsabilidad no es más que comunicar el mensaje claro.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdccxxiii{Dijeron: «Sois un mal presagio. Si no cesáis os apedrearemos y os haremos sufrir un castigo doloroso.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdccxxiv{Ellos dijeron: «¡Vuestro presagio proviene de vuestra actitud! ¿Es que no reflexionaréis? ¡Sois gente transgresora!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdccxxv{Y de lo más lejano de la ciudad vino un hombre corriendo. Dijo: «¡Oh, pueblo mío! ¡Seguid a los Mensajeros!\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdccxxvi{Seguid a quienes no os piden recompensa y están bien guiados.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdccxxvii{Y ¿Por qué no voy yo a adorar a Quien me ha creado y a Quien habréis de regresar?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdccxxviii{¿Voy a tomar otros dioses en lugar de Él? Si el Clementísimo quisiera causarme un mal, la intercesión de ellos no podría beneficiarme en absoluto ni podrían rescatarme.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdccxxix{Estaría entonces en un extravío evidente.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdccxxx{«Ciertamente, he creído en vuestro Señor, escuchadme pues.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxi{Le fue dicho: «¡Entra en el Jardín!» Él dijo: «¡Ojalá mi pueblo supiese\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxii{que mi Señor me ha perdonado y me ha puesto entre los ennoblecidos y honrados!»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxiii{Y, tras él, no hicimos descender sobre su pueblo un ejército desde el cielo ni nunca lo hemos hecho descender.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxiv{No hubo más que un grito y repentinamente todos murieron.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxv{¡Qué pena de siervos! No vino a ellos Mensajero alguno del que no se burlaran.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxvi{¿Acaso no ven cuántas generaciones antes de ellos hemos destruido que ya no volverán a ellos?\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxvii{Todos ellos serán reunidos sin excepción ante Nosotros.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxviii{La tierra muerta es una señal para ellos. Nosotros la hacemos vivir y sacamos de ella grano del que comen.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxix{Y ponemos en ella jardines de palmeras y viñedos y hacemos que broten en ella fuentes\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdccxl{para que coman de sus frutos, que no hacen con sus manos. ¿Es que no agradecerán?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdccxli{Glorificado sea Quien ha creado parejas de todo, de las plantas que surgen de la tierra, de ellos mismos y de lo que ellos no conocen.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdccxlii{Y una señal para ellos es la noche, de la que extraemos el día y quedan en tinieblas.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdccxliii{Y el Sol, que se mueve hacia su lugar de descanso por decreto del Todopoderoso, el Sabio.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdccxliv{Y la Luna. Nosotros hemos decretado casas para ella, hasta que se vuelve como una rama vieja de palmera.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdccxlv{Ni el Sol puede alcanzar a la Luna, ni la noche adelantar al día y cada uno navega en su órbita.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdccxlvi{Y una señal para ellos es que Nosotros subiéramos a sus descendientes en la nave abarrotada\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdccxlvii{y creásemos para ellos otros semejantes en los que cabalgar.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdccxlviii{Y, si Nosotros hubiésemos querido, les habríamos ahogado. Nadie habría escuchado sus gritos y no se habrían salvado,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdccxlix{si no fuera por una misericordia de Nuestra parte para que disfrutasen por algún tiempo.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdccl{Y cuando se les dice: «Sed temerosos de lo que tenéis ante vosotros y de lo que está a vuestras espaldas, para que así se tenga misericordia de vosotros»,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdccli{no viene a ellos una sola de las señales de su Señor sin que se aparten de ella.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdcclii{Y cuando se les dice: «¡Repartid de lo que Dios os ha proveído!» quienes niegan la realidad dicen a quienes son creyentes: «¿Vamos nosotros a alimentar a quienes, si Dios hubiera querido, Él mismo habría alimentado? En verdad, vosotros estáis en un extravío evidente.»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdccliii{Y dicen: «¿Cuándo será eso que nos prometéis, si es que decís la verdad?»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdccliv{No tendrán que esperar más que un solo grito que les alcanzará mientras discuten\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdcclv{y no podrán hacer testamento ni regresar a sus familiares.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdcclvi{Será tocada la trompeta y se apresurarán a salir de sus tumbas para ir hacia su Señor.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdcclvii{Dirán: «¡Ay de nosotros! ¿Quién nos ha levantado del lugar en el que dormíamos? Esto es lo que nos había prometido el Clementísimo. Los Mensajeros decían la verdad.»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdcclviii{No habrá más que un solo grito y todos estarán presentes ante Nosotros.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdcclix{«¡Hoy nadie será oprimido en absoluto y sólo serán recompensados por lo que hacían!»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdcclx{En verdad, las gentes del Jardín tendrán hoy una ocupación que les hará sentirse felices.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmdcclxi{Ellos y sus parejas estarán a la sombra, reclinados en cojines.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmdcclxii{Allí habrá para ellos frutas y todo lo que pidan.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmdcclxiii{Y se les dirá: «¡Paz, de parte de un Señor misericordioso!»\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmdcclxiv{«Y vosotros, pecadores ¡Apartaos hoy!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmdcclxv{¿Acaso no se os aconsejo: ¡Oh, hijos de Adán! que no adoraseis a Satanás? En verdad, él es para vosotros un enemigo claro.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmdcclxvi{¿Y que Me adoraseis a Mí? Ese es un camino recto.»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmdcclxvii{«Ciertamente, él ha extraviado a muchos grupos de vosotros. ¿Es que no razonáis?»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmdcclxviii{«¡Éste es el Infierno que se os prometía!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmdcclxix{¡Entrad hoy en él por no haber creído!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmdcclxx{Hoy sellaremos sus bocas y sus manos Nos hablarán y sus pies darán testimonio de lo que ellos hacían.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxi{Si Nosotros quisiéramos eliminaríamos sus ojos. Entonces, cuando quisiesen competir para alcanzar el camino recto ¿Cómo verían?\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxii{Y si nosotros quisiéramos les trasformaríamos en estatuas en el mismo sitio en el que se encuentran y no podrían avanzar ni retroceder.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxiii{Y a quien alargamos la vida le hacemos perder sus facultades ¿Es que no razonan?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxiv{Y no le hemos enseñado poesía, ni eso es adecuado para él. Esto no es más que un recordatorio y una recitación clara\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxv{para amonestar a quien esté vivo y para que se cumpla lo dicho sobre los que niegan la Verdad.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxvi{¿Acaso no han visto que, de entre las cosas que hemos hecho, hemos creado para ellos ganados de los que ellos son dueños\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxvii{y que hemos sometido a ellos y en algunos de los cuales ellos cabalgan y de otros comen?\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxviii{De ellos obtienen beneficios y de ellos beben. ¿No serán, pues, agradecidos?\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxix{Pero toman otros dioses aparte de Dios con la esperanza de que les auxilien.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxx{Ellos no pueden auxiliarles y, en cambio, ellos se convierten en un ejército presente para ellos.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxi{Así pues, que no te entristezca lo que dicen. En verdad, Nosotros sabemos lo que ocultan en secreto y lo que manifiestan.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxii{¿Acaso no ve el ser humano que le hemos creado de una gota y en cambio él es un discutidor permanente, siempre en abierta oposición?\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxiii{Y, olvidando su creación, Nos pone ejemplos diciendo: «¿Quién dará vida a los huesos revistiéndolos de carne?»\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxiv{Di: «Los dará vida el mismo que los creó por primera vez y que conoce a toda la creación.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxv{El que ha hecho para vosotros fuego del árbol verde con el que os alumbráis.»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxvi{¿Acaso Quien creó los cielos y la Tierra no tiene poder para crear algo semejante a ellos? Sí, pues Él es el Creador de todo, el Sabio.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxvii{En verdad, Su orden cuando desea algo es decirle: «¡Sé!» y ello es.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxviii{Así pues, glorificado sea Quien tiene en su mano el poder sobre todas las cosas y hacia Quien se os hará regresar.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxix{\basmalahes Juro por los que han sido ordenados en filas,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdccxc{que apartan vigorosamente,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdccxci{que recitan un Recuerdo.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdccxcii{En verdad, vuestro dios es Uno.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdccxciii{El Señor de los cielos y la Tierra y de lo que hay entre ambos y el Señor de los Orientes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdccxciv{En verdad, hemos embellecido el cielo de este mundo con las estrellas, como adorno\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdccxcv{y protección contra cualquier demonio rebelde,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdccxcvi{para que no puedan escuchar al Consejo Supremo y sean apedreados desde todas partes\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdccxcvii{y expulsados. Y les aguarda, necesariamente, un castigo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdccxcviii{Y si alguno escucha algo, es perseguido por una estrella fugaz certera.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdccxcix{Pregúntales: ¿Son ellos más difíciles de crear o aquellos a quienes Nosotros hemos creado? En verdad, a ellos los hemos creado de barro viscoso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdccc{Tú te asombras, pero ellos se burlan\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdccci{y si se les amonesta no recapacitan\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdcccii{y cuando ven un milagro se burlan\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdccciii{y dicen: «Eso no es más que magia evidente.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdccciv{¿Acaso cuando muramos y seamos tierra y huesos seremos resucitados\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdcccv{y también nuestros primeros padres?»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdcccvi{Di: «Sí. Y seréis humillados.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdcccvii{Será un solo grito y todos lo verán\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdcccviii{y dirán: «¡Ay de nosotros! ¡Este es el Día de la Recompensa!»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdcccix{Este es el Día de la Separación que negabais.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdcccx{Reunid a los opresores, a sus pares y a lo que adoraban\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdcccxi{en lugar de Dios, guiadles hacia El camino Del infierno\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdcccxii{y paradles. En verdad, se les preguntara:\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdcccxiii{«¿Qué os pasa que no os ayudáis unos a otros?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdcccxiv{Pero ese día estarán sometidos\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdcccxv{y enfrentados. Unos interrogarán a otros\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdcccxvi{diciendo: «En verdad, vinisteis a nosotros por la derecha.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdcccxvii{Ellos dirán: «¡Vosotros no erais creyentes!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdcccxviii{Nosotros no teníamos ninguna autoridad sobre vosotros. ¡Erais una gente endiosada y rebelde!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdcccxix{«Se ha verificado sobre nosotros la palabra de nuestro Señor. En verdad, lo probaremos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdcccxx{¡Claro que os extraviamos! ¡Nosotros mismos estábamos extraviados!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxi{Así que, ese día compartirán el castigo.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxii{En verdad, eso es lo que hacemos con los pecadores.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxiii{En verdad, ellos se mostraban altivos cuando se les decía: «Hay un solo Dios.»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxiv{Y decían: «¿Vamos a abandonar a nuestros dioses por un poeta loco?»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxv{Pero el traía la Verdad y confirmaba a los Mensajeros [anteriores].\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxvi{En verdad, probaréis el castigo doloroso.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxvii{Solamente seréis retribuidos por lo que hacíais.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxviii{Excepto los siervos puros de Dios.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxix{Para ellos habrá una provisión conocida:\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxx{Frutos variados. Y serán tratados con generosidad\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxi{en los Jardines de las Delicias.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxii{Estarán sobre lechos, unos frente a otros\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxiii{y (sirvientes) circularán a su alrededor escanciándoles copas de un líquido transparente,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxiv{blanco y delicioso al paladar de los bebedores,\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxv{que no les perjudicará ni les embriagará.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxvi{Junto a ellos habrá seres de modesta mirada y hermosos ojos\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxvii{como si fuesen perlas semicerradas.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxviii{Y, vueltos unos hacia los otros, se preguntarán entre ellos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxix{Uno de ellos dirá: «Yo tenía un compañero\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdcccxl{que decía: ¿Eres tú de los que afirman\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdcccxli{que cuando muramos y seamos polvo y huesos seremos vueltos a la vida y recompensados por nuestros actos?»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlii{Él dirá: «¿Podéis investigar?»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdcccxliii{Investigarán y le verán en mitad del Infierno.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmdcccxliv{Él dirá: «Juro por Dios que estuviste a punto de hacerme caer\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlv{y si no hubiese sido por el favor de mi Señor habría sido de los destinados al castigo.»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlvi{«¿Es cierto que ya no moriremos\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlvii{después de nuestra primera muerte y que no seremos castigados?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlviii{¡En verdad, éste es el triunfo inmenso!»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlix{Que quienes trabajan trabajen para conseguir algo como esto!\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmdcccl{¿Es éste mejor alojamiento o el árbol de Zaqqum?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmdcccli{En verdad, lo hemos puesto como una prueba para los opresores.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmdccclii{Es, en verdad, un árbol que surge en el fondo del Infierno,\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmdcccliii{cuyos brotes semejan cabezas de demonios\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmdcccliv{y del que ellos comerán y del que llenarán sus estómagos.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmdccclv{Luego, beberán una mezcla con agua hirviente y abrasadora.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmdccclvi{Luego, regresarán al Infierno.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmdccclvii{Allí se encontrarán con sus padres extraviados,\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmdccclviii{por haberse apresurado a seguir las huellas de sus pasos.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmdccclix{Ciertamente, antes de ellos se extraviaron la mayoría de los antepasados,\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmdccclx{aunque, ciertamente, les habíamos enviado amonestadores.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmdccclxi{Observa cuál fue el final de los amonestados\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmdccclxii{exceptuando a los siervos puros de Dios.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmdccclxiii{Ciertamente, Noé Nos invocó y ¡Qué bien le respondimos!\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmdccclxiv{Y le salvamos, a él y a su familia, de la agonía inmensa.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmdccclxv{E hicimos que sus descendientes sobreviviesen\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmdccclxvi{y dejamos su buen nombre para la posteridad.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmdccclxvii{¡La paz sea con Noé en todos los mundos!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmdccclxviii{Así es cómo Nosotros recompensamos a quienes hacen el bien.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmdccclxix{En verdad, él era uno de Nuestros siervos creyentes.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmdccclxx{Por tanto, hicimos que los demás se ahogasen.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxi{Y, en verdad, entre Nuestros seguidores está Abraham.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxii{[Recuerda] cuando vino a su Señor con un corazón sano\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxiii{y cuando dijo a su padre y a su pueblo: «¿Qué es lo que adoráis?”\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxiv{“¿Queréis falsos dioses en lugar de Dios?\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxv{¿Cuál es vuestra idea acerca del Señor de los Mundos?»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxvi{Y miró a las estrellas\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxvii{y dijo: «En verdad, estoy enfermo.»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxviii{y le dieron la espalda y se alejaron.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxix{Entonces se dirigió hacia los dioses de ellos y dijo: «¿Es que no coméis?»\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxx{«¿Por qué no habláis?»\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxi{Así que fue hacia ellos y les golpeó con la mano derecha.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxii{Ellos fueron apresuradamente junto a él.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxiii{Él dijo: «¿Adoráis lo que vosotros mismos esculpís\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxiv{cuando Dios os ha creado a vosotros y lo que vosotros hacéis?»\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxv{Ellos dijeron: «Construid una estructura para él y ponedle en medio del fuego llameante.»\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxvi{Quisieron tramar un plan contra él pero Nosotros les humillamos.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxvii{Dijo: «En verdad, voy hacia mi Señor y Él me guiará.»\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxviii{«¡Señor mío! ¡Otórgame un hijo de los Rectos!»\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxix{Y Nosotros le anunciamos la buena noticia de un joven complaciente.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmmdcccxc{Así pues, cuando tuvo edad para esforzarse le dijo: «¡Oh, hijito mío! He visto en mi sueño que te sacrificaba. ¿Qué opinas?» Él dijo: «¡Oh padre mío! ¡Haz lo que se te ha ordenado! Encontrarás que soy, si Dios quiere, de los pacientes.»\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmmdcccxci{Así pues, cuando ambos se hubieron sometido y le puso la sien en el suelo,\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcii{le llamamos: «¡Oh, Abraham!\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmmdcccxciii{¡Ciertamente, ya has verificado tu visión!» En verdad, así es como recompensamos a quienes hacen el bien.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmmdcccxciv{Ésta fue una prueba evidente.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcv{Y le rescatamos a cambio de un sacrificio inmenso.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcvi{y dejamos de él un buen nombre para la posteridad.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcvii{¡La paz sea sobre Abraham!\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcviii{Así es como recompensamos a quienes hacen el bien.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcix{En verdad, él era uno de Nuestros siervos creyentes.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmmcm{Y le dimos la buena nueva de Isaac, profeta y uno de los Rectos.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmmcmi{Y le bendijimos a él y a Isaac. Y, entre los descendientes de ambos, algunos fueron virtuosos y otros oprimieron su alma de manera evidente.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmmcmii{Y, ciertamente, favorecimos a Moisés y a Aarón\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmmcmiii{y salvamos a ellos y a su pueblo de la gran dificultad.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmmcmiv{Y les auxiliamos y fueron ellos los vencedores.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmmcmv{Y dimos a ambos la Escritura esclarecedora.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmmcmvi{Y les guiamos a ambos al camino recto\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmmcmvii{y dejamos de ambos un buen nombre para la posteridad.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmmcmviii{¡La paz sea sobre Moisés y Aarón!\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmmcmix{Así es como recompensamos a quienes hacen el bien.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmmcmx{En verdad, ambos eran de Mis siervos creyentes.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmmcmxi{Y, en verdad, Elías era de los Mensajeros.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmmcmxii{[Recuerda] Cuando dijo a su pueblo: «¿Es que no seréis temerosos de Dios?\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmmcmxiii{¿Invocáis a Baal y abandonáis al mejor de los creadores:\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmmcmxiv{Dios, vuestro Señor y el Señor de vuestros primeros padres?»\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmmcmxv{Pero le desmintieron y, en verdad, se les hará comparecer.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmmcmxvi{Excepto a los siervos puros de Dios.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmmcmxvii{Y dejamos de él un buen nombre para la posteridad.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mmmcmxviii{¡La paz sea sobre la familia de Ya Sin!\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mmmcmxix{Así es como recompensamos a quienes hacen el bien.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mmmcmxx{En verdad, él era uno de Nuestros siervos creyentes.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mmmcmxxi{Y, en verdad, Lot fue uno de los Mensajeros.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mmmcmxxii{[Recuerda] Cuando le salvamos a él y a su familia, a todos ellos,\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mmmcmxxiii{excepto a una anciana, que fue de los que se quedaron atrás.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mmmcmxxiv{Luego, aniquilamos a los demás.\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@mmmcmxxv{Y vosotros pasáis por sus ruinas por la mañana\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@mmmcmxxvi{y por la noche. ¿Es que no pensáis?\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@mmmcmxxvii{Y, en verdad, Jonás fue uno de los Mensajeros.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@mmmcmxxviii{[Recuerda] Cuando se escapó en la nave repleta\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@mmmcmxxix{y echaron a suertes y salió elegido\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@mmmcmxxx{y el pez se lo tragó y ese fue su castigo.\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxi{Y si no hubiese sido de los que glorifican a Dios\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxii{habría permanecido en su estómago hasta el día en que todos serán resucitados.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxiii{Y le arrojamos enfermo a una playa sin sombra\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxiv{e hicimos crecer sobre él una gran planta de calabaza.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxv{Y le enviamos a una comunidad de cien mil o más,\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxvi{que creyeron y Nosotros les permitimos disfrutar hasta un plazo establecido.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxvii{Pregúntales: «¿Son para tu Señor las hijas y para ellos los hijos?\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxviii{¿O hemos creado a los ángeles del género femenino y ellos fueron testigos?»\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxix{¿Acaso no mienten cuando dicen:\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@mmmcmxl{«Dios tiene hijos.»? ¡Mienten!\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@mmmcmxli{¿Ha preferido Él las hijas a los hijos?\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@mmmcmxlii{¿Qué os pasa? ¿Cómo juzgáis de esa manera?\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@mmmcmxliii{¿Es que no reflexionáis?\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@mmmcmxliv{¿O es que poseéis una prueba evidente?\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@mmmcmxlv{¡Traed pues vuestra Escritura si es verdad lo que decís!\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@mmmcmxlvi{Y han establecido un lazo de parentesco entre Él y los genios. Los genios saben que ellos habrán de comparecer.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@mmmcmxlvii{Glorificado sea Dios por encima de lo que Le atribuyen,\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@mmmcmxlviii{excepto los siervos puros de Dios.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@mmmcmxlix{Ciertamente, vosotros y lo que vosotros adoráis\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@mmmcml{no podréis extraviar a nadie\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@mmmcmli{más que a quienes arderán en el Infierno.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@mmmcmlii{«No hay ninguno de nosotros que no ocupe su lugar determinado,\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@mmmcmliii{y, en verdad, somos nosotros los que estamos ordenados en filas\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@mmmcmliv{y, en verdad, somos nosotros quienes celebramos la gloria de Dios.»\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@mmmcmlv{En verdad, ellos siempre dicen:\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@mmmcmlvi{«Si poseyésemos un Recuerdo procedente de los primeros\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@mmmcmlvii{sólo adoraríamos a Dios.»\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@mmmcmlviii{Pero no creyeron en él y ¡Pronto van a saber!\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@mmmcmlix{Ciertamente, Nuestra promesa ya vino anteriormente a Nuestros siervos los Mensajeros:\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@mmmcmlx{«Con seguridad, ellos serán los auxiliados\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@mmmcmlxi{y, en verdad, Nuestras tropas serán las vencedoras.»\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@mmmcmlxii{Así pues, dales un plazo\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@mmmcmlxiii{y obsérvales. Pronto verán.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@mmmcmlxiv{¿Quieren apresurar Nuestro castigo?\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@mmmcmlxv{Cuando descienda en su lugar ¡Qué mal amanecer el de quienes ya habían sido amonestados!\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@mmmcmlxvi{Así pues, ¡Apártate de ellos hasta un plazo\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@mmmcmlxvii{y observa! ¡Pronto van a ver!\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@mmmcmlxviii{¡Glorificado sea tu Señor, Señor del Poder, por encima de lo que le atribuyen!\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@mmmcmlxix{Y la paz sea con los Mensajeros\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@mmmcmlxx{y alabado sea Dios, Señor del Universo.\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxi{\basmalahes Sad. Juro por el Corán, poseedor del Recuerdo,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxii{que quienes tratan de ocultar la Verdad están en una actitud prepotente y rebelde.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxiii{¡Cuántos pueblos habremos aniquilado antes de ellos que, cuando descendió el castigo sobre ellos, imploraban a gritos, cuando ya se les había pasado el tiempo de salvarse del castigo.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxiv{Y se sorprenden de que quien venga a amonestarles sea uno de entre ellos mismos. Y dicen los que no creen: «¡Éste es un mago mentiroso!»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxv{«¿No ha puesto en lugar de los dioses a un solo Dios? ¡Eso es algo verdaderamente asombroso!»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxvi{Los notables se fueron diciendo: «¡Marchaos y defended a vuestros dioses! ¡Eso es lo que debéis hacer!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxvii{¡No habíamos escuchado algo semejante en las últimas creencias! ¡Esto no es más que un invento!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxviii{¿De entre nosotros, se le ha escogido a él para hacer descender el Recuerdo?» Dudan de Mi recuerdo. ¡Todavía no han probado mi castigo!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxix{¡Acaso poseen ellos los tesoros de la misericordia de tu Señor, el Todopoderoso, el Otorgador?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxx{¿O poseen el reino de los cielos y la Tierra y de lo que hay entre ambos? Pues, entonces, que suban por ellos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxi{¡Uno de los insignificantes ejércitos de partidos será allá derrotado!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxii{Antes de ellos también desmintieron el pueblo de Noé y Ad y Faraón, el de las estacas,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxiii{y Zamud y el pueblo de Lot y la gente de Al-Aika. Esos son los partidos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxiv{Cada uno de ellos desmintió a los Mensajeros y se cumplió Mi castigo.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxv{No les aguarda más que un solo grito y no tendrán marcha atrás.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxvi{Ellos dicen: «¡Señor nuestro! ¡Apresura nuestra parte antes del Día de la Cuenta!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxvii{Se paciente con lo que dicen y recuerda a Nuestro siervo David, poseedor de una gran fuerza. En verdad, el se volvía continuamente a su Señor.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxviii{En verdad, Nosotros dispusimos que las montañas glorificasen con Él por la noche y al amanecer\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxix{y las aves que se reunían en bandadas. Todo Le glorifica.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcmxc{Nosotros fortalecimos su reino y le dimos la sabiduría y la capacidad de discernir la verdad de las palabras.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcmxci{No ha llegado a ti la noticia de los que mantenían un contencioso y saltaron el muro del templo.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcmxcii{Cuando entraron ante David, él se sobresaltó. Ellos dijeron: «¡No temas! Somos dos partes litigantes una de las cuales ha oprimido a la otra. Juzga entre nosotros con justicia, imparcialmente, e indícanos el buen camino.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcmxciii{«En verdad, este hermano mío posee noventa y nueve ovejas pero yo sólo una oveja y me dice: ‘Déjala en mi rebaño’ y es más poderoso que yo discutiendo.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcmxciv{Él dijo: «Sí. Juro que ha sido injusto pidiéndote que juntases tu oveja con las suyas. En verdad, muchos socios se perjudican unos a otros, excepto quienes son creyentes y obran rectamente, pero pocos son así.» Y David supo que Nosotros le habíamos puesto a prueba y pidió perdón a su Señor y se inclinó arrepentido.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcmxcv{Y Nosotros le perdonamos por ello y, en verdad, él posee una posición de cercanía ante Nosotros y un buen destino.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcmxcvi{«¡Oh, David! En verdad, te hemos hecho heredero en la Tierra, así pues, juzga entre los hombres con la Verdad y no sigas tus pasiones, pues te desviarían de la senda de Dios.» En verdad, quienes se desvían de la senda de Dios sufrirán un castigo doloroso por haber olvidado el Día de la Cuenta.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcmxcvii{No hemos creado los cielos y la Tierra y lo que hay entre ambos en vano. Eso es lo que piensan quienes no son creyentes. ¡Cuidado con el Fuego los que no son creyentes!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcmxcviii{¿Vamos a tratar igual a los que creen y obran rectamente que a los que corrompen la Tierra? ¿O vamos a tratar a quienes son temerosos de Dios como a los pecadores?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcmxcix{Esta es una Escritura bendita que Nosotros hacemos descender a ti para que mediten sobres sus signos y para que las gentes de entendimiento reflexionen.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmm{Y otorgamos Salomón a David. ¡Qué bendición de siervo! ¡Ciertamente, él era un alma volcada a su Señor!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmi{[Recuerda] Cuando le mostraron al final del día unos hermosos caballos de carreras\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmii{y dijo: «En verdad, he amado más las cosas bellas que el recuerdo de mi Señor y el Sol se ha ocultado.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmiii{Haced que vuelva atrás para mí y pasad vuestras manos por los pies y el cuello.»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmiv{Y pusimos a prueba a Salomón y colocamos un cuerpo sin vida en su trono. Entonces, se volvió hacia su Señor contrito.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmv{Dijo: «¡Señor mío! ¡Perdóname y otórgame un reino que no sea adecuado para nadie después de mí! ¡En verdad, Tú eres el Otorgador!»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmvi{Y sometimos los vientos a él, que soplaban suavemente por orden suya donde él quería.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmvii{Y a los demonios, que construían y buceaban para él.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmviii{Y al resto los encadenamos.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmix{«¡Esto es un don de Nuestra parte! Así pues, da de él o restríngelo sin limitaciones.»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmx{En verdad, él posee junto a Nosotros cercanía y un buen lugar de retorno.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmxi{Y recuerda a Nuestro siervo Job, cuando invocó a su Señor: «El demonio me ha tocado con desgracia y castigo.»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmxii{«¡Golpea con tu pie! Ahí tienes agua fresca para lavarte y beber.»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmxiii{Y le otorgamos a su familia y otro tanto como una misericordia procedente de Nosotros y como un recuerdo para los dotados de entendimiento.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmxiv{«Toma un puñado de ramas y golpea con él y no rompas tu promesa.» En verdad encontramos que era paciente. ¡Qué bendición de siervo! ¡En verdad, él era un alma volcada a su Señor!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmxv{Y recuerda a Nuestros siervos Abraham, Isaac y Jacob. Eran fuertes y clarividentes en su adoración\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmxvi{Les escogimos por causa de su pura dedicación al recuerdo de la morada\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmxvii{y, en verdad, ellos son, ante Nosotros, de los escogidos entre los buenos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmxviii{Y recuerda a Ismael, a Eliseo y a Du l-Kifl, todos ellos eran de los mejores.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmxix{Este es un recuerdo. Y, en verdad, para los temerosos de Dios hay un buen destino:\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmxx{los Jardines del Edén, cuyas puertas estarán abiertas para ellos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmxxi{Reclinados en ellos, pedirán de las frutas y bebidas abundantes.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmxxii{Junto a ellos, esposas que sólo a ellos mirarán, de su misma edad y belleza.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmxxiii{«¡Esto es lo que se os había prometido para el Día de la Cuenta!»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmxxiv{«¡En verdad, ésta es Nuestra provisión inagotable!»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmxxv{Así es. Y, en verdad, los rebeldes tendrán un mal destino.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmxxvi{El Infierno en el que arderán. ¡Qué mal lugar de reposo!\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmxxvii{Así es. ¡Que lo prueben! ¡Agua hirviente y pus\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmxxviii{y otras cosas semejantes!\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmxxix{«¡Ese es otro grupo condenado con vosotros!» «No hay bienvenida para ellos. En verdad, arderán en el Fuego.»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmxxx{Ellos dirán: «¡Tampoco para vosotros hay bienvenida! ¡Vosotros preparasteis esto para nosotros! ¡Qué mal lugar!»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmxxxi{Ellos dirán: «¡Señor nuestro! ¿A quien preparó esto para nosotros dóblale el castigo en el Fuego!»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmxxxii{Dirán: «¿Qué nos pasa que no vemos a hombres a los que considerábamos de lo peor?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmxxxiii{¿Nos burlábamos de ellos o es que no les podemos ver?»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmxxxiv{Ciertamente, esa es la verdad de lo que discutirá la gente del Fuego.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmxxxv{Di: «Lo que yo soy es un amonestador y no hay más dioses que Dios, el Uno, el Dominador.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmxxxvi{El Señor de los cielos y la Tierra y de lo que hay entre ambos, el Todopoderoso, el Perdonador.»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmxxxvii{Di: «Es una gran noticia\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmxxxviii{de la que vosotros os desentendéis.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmxxxix{Yo no tenía conocimiento de lo que en el Consejo Supremo discutían.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmxl{Sólo me ha sido revelado que yo soy un amonestador claro.»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmxli{[Recuerda] Cuando tu Señor dijo a los ángeles: «En verdad, crearé un ser humano de barro.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmxlii{Así pues, cuando le haya dado forma y sople en él de Mi espíritu, prosternaos ante él.»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmxliii{Así que todos los ángeles se prosternaron\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmxliv{excepto Iblís, que se ensoberbeció y fue de los que tratan de ocultar la Verdad.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmxlv{Dijo Él: «¡Oh, Iblís! ¿Qué te impidió prosternarte ante lo que Yo he creado con mis manos? ¿Te consideras demasiado grande o eres de los que están por encima de ello?»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmxlvi{Dijo: «Yo soy mejor que él. A mí me creaste de fuego y a él le has creado de barro.»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmxlvii{Dijo Él: «Pues entonces ¡Sal de él! En verdad eres de los maldecidos.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmxlviii{Y, en verdad, Mi maldición pesará sobre ti hasta el Día de la Recompensa.»\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmxlix{Dijo: «¡Señor mío! ¡Dame de plazo hasta el día en que los resucites!»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmml{Dijo Él: «Sé, pues, de los que tienen un plazo\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmli{hasta el día cuyo tiempo está determinado.»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmlii{Dijo: «Juro, pues, por Tu poder, que extraviaré a todos ellos\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmliii{a excepción de quienes entre ellos sean tus siervos puros.»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmliv{Dijo Él: «La verdad -y lo que Yo digo es siempre la verdad-\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmlv{es que llenaré el Infierno contigo y con todos los que te sigan.»\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmlvi{Di: «No os pido recompensa por ello y no soy de los que tratan de imponerse sobre los demás.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmmlvii{Esto no es más que un recuerdo para todo el Universo.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmmlviii{Y, sin duda, sabréis lo que anuncia cuando llegue el plazo señalado.»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmmlix{\basmalahes Ésta es la Escritura que desciende gradualmente parte de Dios, el Todopoderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmlx{En verdad, hemos hecho descender a ti la Escritura que dice la Verdad, por tanto, adora a Dios con una creencia pura, volcada únicamente a Él.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmlxi{¿Acaso la adoración no debe ser para Dios únicamente? Y a quienes toman protectores aparte de Él diciendo: «No los adoramos sino para que nos aproximen a Dios», en verdad, Dios les juzgará sobre aquello en lo que disentían. En verdad, Dios no guía a quien es mentiroso y trata de ocultar la Verdad.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmlxii{Si Dios hubiera querido tomar un hijo, podría haber elegido lo que hubiese querido de lo que Él ha creado. ¡Glorificado sea! ¡El es Dios, el Uno, el Dominador!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmlxiii{Él ha creado los cielos y la Tierra con la Verdad. Él hace que la noche cubra al día y que el día cubra a la noche. Y somete el Sol y la Luna. Cada uno fluye en su curso el tiempo establecido. ¿No es Él el Todopoderoso, el Perdonador?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmlxiv{Él os ha creado de una sola alma, luego ha hecho de ella a su pareja. E hizo descender para vosotros ocho pares de reses. Él os crea en el seno de vuestras madres, creación tras creación, en una triple oscuridad. Ese es Dios vuestro Señor. A Él pertenece el reino. No hay más dioses que Él ¿Cómo entonces cambiáis?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmlxv{Si sois desagradecidos, [sabed que] en verdad, Dios es rico por Sí mismo, no necesita de vosotros y no Le satisface que sus siervos sean desagradecidos. Y si sois agradecidos, Él estará satisfecho de que seáis así. Nadie cargará con la carga de otro. Luego, vuestro lugar de regreso será Dios y Él os informará de lo que hacíais. En verdad, Él sabe bien lo que hay en el fondo de los corazones.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmlxvi{Cuando al ser humano le aflige una desgracia invoca a su Señor, volviéndose a Él contrito. Luego, cuando le llega un favor procedente de Él, olvida lo que Le imploraba anteriormente y pone semejantes junto a Dios, desviando a otros de Su camino. Di: «Disfruta de tu alejamiento de Dios un poco. En verdad, tú eres de la gente del Fuego.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmlxvii{¿Acaso quien adora en mitad de la noche prosternado y en pie, temeroso del castigo en la otra vida y esperando la misericordia de su Señor…? Di: «¿Acaso son iguales el que sabe y el que no sabe?» En verdad, sólo se deja amonestar la gente dotada de entendimiento.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmlxviii{Di: «¡Oh, siervos Míos creyentes! ¡Sed temerosos de vuestro Señor! Quienes hagan el bien en este mundo obtendrán el bien.» «Y la Tierra de Dios es amplia. En verdad, Él concederá a los pacientes su recompensa sin medida.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmlxix{Di: «En verdad, me ha sido ordenado que adore a Dios con una creencia pura, volcada únicamente a Él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmlxx{Y me ha sido ordenado que sea el primero de los que se someten a Él.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmlxxi{Di: «En verdad, temo, si desobedezco a mi Señor, el castigo de un día inmenso.»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmlxxii{Di: «Adoro a Dios con una creencia pura, volcada únicamente a Él.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmlxxiii{Así pues, adorad lo que queráis aparte de Él.» Di: «En verdad, los perdedores son quienes se pierden a sí mismos y a su familia el Día del Levantamiento.» ¿No es esa acaso la pérdida evidente?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmlxxiv{Las sombras del Fuego les cubrirán por encima y por debajo. Así es como Dios atemoriza a Sus siervos. «¡Oh, siervos Míos! ¡Sed, pues, temerosos de Dios!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmlxxv{Para quienes se abstienen de adorar a los ídolos y a los falsos dioses y se vuelven arrepentidos hacia Dios hay una buena noticia. Da, pues, la buena noticia a Mis siervos,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmlxxvi{aquellos que escuchan la Palabra y siguen la excelencia que en ella hay. Esos son a quienes Dios guía y ellos son los dotados de entendimiento.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmlxxvii{¿Acaso aquellos en quienes se cumpla la promesa del castigo…? ¿Podrás tú rescatar a quienes están en el Fuego?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmlxxviii{Pero, quienes son temerosos de su Señor, tendrán aposentos elevados sobre los que hay construidos otros aposentos y bajo los cuales fluirán los arroyos. Promesa de Dios. Dios no incumple su promesa.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmlxxix{¿Acaso no has visto cómo Dios hace descender agua del cielo y la conduce bajo tierra y crea fuentes y luego hace surgir con ella cosechas de variados colores, que después se marchitan y ves como se tornan amarillas y las hace quebradizas? En verdad, en ello hay un motivo de reflexión para los dotados de entendimiento.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmlxxx{¿Acaso aquel a quien Dios ha expandido su pecho para que acepte el Islam y por tanto está sobre una luz que procede de su Señor…? ¡Ay de quienes tienen sus corazones endurecidos para el recuerdo de Dios! ¡Ellos están en un extravío evidente!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxi{Dios ha hecho descender la mejor de las palabras. Una Escritura cuyas partes se armonizan y explican unas a otras. Con ella se estremecen quienes son temerosos de su Señor. Luego, sus cuerpos y sus corazones se calman y enternecen por el recuerdo de Dios. ¡Esa es la guía de Dios, mediante la que guía a quien Él quiere! Y a quien Dios extravía, no hay quien pueda guiarle.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxii{¿Acaso quien en este mundo y por medio de su temor de Dios se protege del castigo del Día del Levantamiento…? Y se dirá a los opresores: «¡Probad lo que habéis obtenido!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxiii{Quienes vivieron antes de ellos desmintieron y el castigo les alcanzó cuándo y de dónde menos se lo esperaban.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxiv{Dios les hizo probar la humillación en esta vida. Y si ellos supieran que el castigo de la otra es mayor…\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxv{En verdad, hemos puesto a los seres humanos, en este Corán, toda clase de ejemplos, para que, quizás así, reflexionen.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxvi{Es un Corán en árabe, sin desviaciones ni ambigüedades, para que, quizás así, sean temerosos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxvii{Dios pone el ejemplo de una persona que pertenece a unos socios que no se ponen de acuerdo entre ellos y otra persona que pertenece a un solo amo ¿Son ambos iguales? ¡Alabado sea Dios! Pero la mayoría de ellos no saben.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxviii{En verdad, tú morirás y ellos morirán.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxix{Luego, el Día del Levantamiento, argumentaréis cada uno ante vuestro Señor.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmxc{¿Quién, pues, es más opresor que quien miente sobre Dios y desmiente la Verdad cuando ésta llega a él? ¿Acaso no es el Infierno el lugar para quienes tratan de ocultar la Verdad?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmxci{Y quien viene con la Verdad y quien la reconoce y confirma, esos son los temerosos de Dios.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmxcii{Ellos tienen lo que quieran junto a su Señor. Esa es la recompensa de quienes hacen lo mejor.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmxciii{Dios ocultará lo peor de lo que ellos hicieron y les recompensará con la recompensa que merezca lo mejor de lo que hacían.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmxciv{¿No es Dios suficiente para Su siervo? ¡Y tratan de asustarte con los que no son Él! A quien Dios extravía no hay quien le guíe\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmxcv{y a quien Dios guía no hay quien pueda extraviarle. ¿Acaso Dios no es todopoderoso, dueño de la venganza?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmxcvi{Y si les preguntases: «¿Quién ha creado los cielos y la Tierra?» dirían: «Dios». Di: «¿Habéis visto, pues, si aquellos a quienes adoráis en lugar de Dios, en caso de que Dios quisiera un perjuicio para mí, podrían evitarlo?, o si quisiera para mí un beneficio ¿Podrían ellos impedirlo?» Di: «¡Dios es suficiente para mí! ¡Es en Él en Quien ponen su confianza quienes ponen su confianza en la Verdad!»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmxcvii{Di: «¡Oh, pueblo mío! Continuad en vuestras posiciones que yo también continuaré en las mías. Y pronto sabréis\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmxcviii{quién está condenado al fuego que le devorará y sobre quién se ha hecho lícito el castigo eterno.»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmxcix{En verdad, Nosotros hacemos descender para la gente la Escritura con la Verdad. Así pues, quien se guíe, para sí mismo lo hace y quien se extravíe, a sí mismo se extravía y tú no eres su protector.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmc{Dios recoge las almas cuando les llega la muerte y las de quienes no han muerto cuando duermen. Y toma aquella sobre la que ha sido decretada la muerte y envía las otras para que permanezcan hasta un plazo establecido. En verdad, en ello hay señales para la gente que reflexiona.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmci{«¿Vais a tomar otros intercesores aparte de Dios?» Di: «¿Aunque no tengan poder alguno y no razonen?»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcii{Di: «Toda la intercesión pertenece a Dios. A Él pertenecen los cielos y la Tierra y luego regresaréis hacia Él.»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmciii{Y cuando es recordado Dios en Su unicidad, los corazones de quienes no creen en la otra vida se contraen de disgusto y aversión. Y cuando se menciona a los que no son Él, se refleja en sus rostros la felicidad y satisfacción que ello les proporciona.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmciv{Di: «¡Oh, Dios mío! ¡Originador de los cielos y la Tierra! ¡Conocedor de lo que está oculto a los sentidos y lo que está manifiesto! ¡Tú juzgarás entre Tus siervos sobre aquello en lo que disentían!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcv{Si los opresores, que niegan la otra vida, tuvieran de nuevo todo lo que poseían en la Tierra y otro tanto, lo darían para librarse del castigo del Día del Levantamiento. Y se manifestará para ellos, de parte de Dios, aquello con lo que no contaban.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcvi{Y se les hará evidente el mal que realizaron y se verificará para ellos aquello de lo que se burlaban.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcvii{Y, cuando al ser humano le toca un mal, Nos invoca suplicante. Pero cuando hacemos que le llegue un beneficio que procede de Nosotros, dice: «En verdad, lo he obtenido gracias a mi inteligencia.» Pero, en realidad, es una prueba, aunque la mayoría de ellos no saben.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcviii{Eso mismo decían quienes vinieron antes de ellos. Pero nada de lo que obtuvieron les benefició\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcix{y pronto les alcanzó el castigo por el mal que hicieron. Y, quienes de ellos hayan sido opresores, pronto sufrirán el mal que hicieron y no podrán escapar del castigo de Dios.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcx{¿Acaso no saben que Dios incrementa la provisión de quien Él quiere o la disminuye? En verdad, en ello hay señales para gente que tiene fe.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcxi{Di: «¡Oh, siervos Míos que os habéis excedido con vosotros mismos! ¡No desesperéis de la misericordia de Dios! ¡En verdad, Dios perdona todos los pecados! En verdad, Él es el Perdonador, el Misericordiosísimo.»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcxii{Y volveos a vuestro Señor y someteos a Él antes de que llegue a vosotros el castigo. Luego no seréis auxiliados.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcxiii{Y seguid lo mejor de lo que ha descendido a vosotros procedente de vuestro Señor antes de que llegue a vosotros el castigo repentinamente, sin que vosotros os deis cuenta.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcxiv{y cada cual se diga a sí mismo: «¡Ay de mí por mi negligencia con Dios! ¡En verdad, yo era de los que se burlaban.»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcxv{O diga: «Si Dios me hubiera guiado habría sido de los temerosos.»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcxvi{O diga cuando vea el castigo: «Si tuviera otra oportunidad sería de los que hacen el bien.»\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcxvii{Sí. Vinieron a ti Mis señales pero las desmentiste y te mostraste altivo y fuiste de los que tratan de ocultar la Verdad.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcxviii{Y el Día del Levantamiento verás que los rostros de quienes dijeron mentiras sobre Dios se ennegrecen. ¿Acaso no hay un lugar en el Infierno para los arrogantes?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmcxix{Y Dios salvará a quienes fueron temerosos dándoles el éxito. El mal no les tocará y no estarán tristes.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmcxx{Dios es el Creador de toda cosa y Él cuida de todo.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmcxxi{A Él pertenecen las llaves de los cielos y la Tierra. Y, quienes tratan de ocultar las señales de Dios, esos son los perdedores.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmcxxii{Di: «¿Me ordenáis que adore a otro distinto que Dios ¡Oh, ignorantes!?»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcxxiii{Y, ciertamente, juro que fue revelado, a ti y a quienes vinieron antes de ti, que si adoras a otros dioses invalidarás tus obras y serás de los perdedores.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcxxiv{Así pues, adora a Dios y se de los agradecidos.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcxxv{No han valorado a Dios en Su verdadera magnitud. Y toda la Tierra estará en su puño el Día del Levantamiento y los cielos estarán enrollados en Su mano derecha. ¡Glorificado sea y ensalzado por encima de lo que Le asocian!\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcxxvi{Será soplada la trompeta y morirán quienes están en los cielos y en la Tierra, excepto quien Dios quiera. Luego, se soplará en ella otra vez y se pondrán en pie expectantes.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmcxxvii{Y se iluminará la Tierra por la Luz de su Señor y se expondrá la escritura y se hará comparecer a los profetas y a los testigos y se juzgará entre ellos con la Verdad y nadie será oprimido.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcxxviii{Y cada alma recibirá la recompensa de lo que haya hecho. Y Él es Quien mejor sabe lo que hicieron.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcxxix{Y quienes negaban la Verdad serán conducidos al Infierno en grupos y cuando lleguen a él se abrirán sus puertas y sus ángeles les dirán: «¿Acaso no vinieron a vosotros Mensajeros de entre vosotros mismos que os recitaron las señales de vuestro Señor y os amonestaron con el encuentro de éste vuestro día?» Dirán: «Sí, pero…» Y se verificará la promesa del castigo sobre quienes no quisieron creer.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmcxxx{Se les dirá: «¡Entrad por las puertas del Infierno en el que permaneceréis eternamente!» ¡Qué mal lugar el destinado a los arrogantes!\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxi{Y quienes fueron temerosos de su Señor serán conducidos al Jardín en grupos y cuando lleguen a él se abrirán sus puertas y sus ángeles les dirán: «¡Paz sobre vosotros! ¡Fuisteis buenos! ¡Entrad, pues, en él para siempre!»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxii{Y ellos dirán: «¡Alabado sea Dios, que ha hecho realidad Su promesa y nos hizo heredar la Tierra para que nos establezcamos en el Jardín donde queramos!» ¡Qué buena la recompensa de los que actuaron bien!\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxiii{Y verás a los ángeles alrededor del Trono divino, celebrando a su Señor con alabanzas. Se juzgará entre ellos con la Verdad y se dirá: «¡Alabado sea Dios, Señor del Universo!»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxiv{\basmalahes Ha, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxv{El descenso de la Escritura proviene de Dios, el Todopoderoso, el Sabio,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxvi{perdonador del pecado, aceptador del arrepentimiento, severo en el castigo, favorecedor duradero. No hay más dios que Él y a Él es el regreso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxvii{No discuten las señales de Dios más que quienes tratan de ocultar la Verdad. ¡Que no te engañe la facilidad con que se desenvuelven por el país!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxviii{Antes de ellos desmintió el pueblo de Noé y después de él los partidos. Y todas las comunidades hicieron planes para capturar a su Mensajero y discutieron vanamente para destruir con ello la Verdad. Pero les atrapé y ¡Cómo fue Mi castigo!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxix{Y así se cumplió la palabra de tu Señor sobre aquellos que tratan de ocultar la verdad de que serían la gente del Fuego.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcxl{Quienes portan el Trono divino y quienes están alrededor de él celebran a su Señor con alabanzas y creen en Él y le piden que perdone a quienes son creyentes: «¡Señor nuestro! Tú todo lo abarcas con Tu misericordia y Tu conocimiento. Perdona, pues, a quienes se vuelven a Ti arrepentidos y a quienes siguen Tu senda y líbrales del castigo del Infierno.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcxli{«¡Señor nuestro! Hazles entrar en los Jardines del Edén que les habías prometido a ellos y a quienes de sus padres, parejas y descendientes, fueran rectos. En verdad, Tú eres el Todopoderoso, el Sabio.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcxlii{«¡Líbrales del mal! Habrás bendecido con Tu misericordia a quien hayas protegido del mal de ese día. ¡Ese es el triunfo inmenso!»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcxliii{En verdad, a quienes tratan de ocultar la Verdad se les dirá: «La ira de Dios con vosotros es mayor que vuestra propia ira contra vosotros mismos cuando fuisteis llamados a tener fe y no creísteis.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcxliv{Dirán: «¡Señor nuestro! Nos has hecho morir dos veces y nos has dado la vida dos veces. Admitimos nuestros pecados. ¿Hay un camino para salir?»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcxlv{«Esto os sucede porque, cuando se invocaba a Dios en Su unicidad no creíais, pero cuando se Le asociaban otros falsos dioses creíais.» Así pues, el juicio pertenece a Dios, el Altísimo, el Más grande.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcxlvi{Él es Quien os muestra Sus señales y hace que descienda del cielo la provisión para vosotros. Pero solamente reflexionan quienes se vuelven a Él con contrición.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcxlvii{Por tanto ¡Volveos a Dios poniendo vuestra fe únicamente en Él, aunque ello moleste a los que tratan de ocultar la Verdad!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcxlviii{Él es Quien eleva los grados, el Señor del Trono. Él hace descender el Espíritu que procede de Su mandato sobre quien Él quiere de Sus siervos para que advierta del Día del Encuentro.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcxlix{El día en que todos surjan y nada de ellos se oculte a Dios. ¿A quién pertenece la soberanía ese día? A Dios, el Uno, el Victorioso.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcl{«Hoy cada alma recibirá la recompensa por lo que hizo. Hoy no hay opresión. En verdad, Dios es rápido haciendo la cuenta.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcli{Así pues, adviérteles del Día Inminente, cuando los corazones se suban a las gargantas a causa de la angustia. Los opresores no tendrán amigo ni intercesor aceptado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmclii{Él conoce la traición de los ojos y lo que ocultan los pechos.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcliii{Y Dios juzga con la Verdad y quienes ellos invocan en lugar de Él no tienen poder para juzgar nada. En verdad, Dios es Quien todo lo oye, Quien todo lo ve.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcliv{¿Acaso no han viajado por la Tierra y han observado cuál fue el final de quienes vivieron antes de ellos? Tuvieron más poder que ellos y dejaron más huellas en la Tierra, pero Dios se apoderó de ellos por sus pecados y no tuvieron quien les protegiera de Dios.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmclv{Eso fue porque vinieron a ellos sus Mensajeros con las pruebas claras y no creyeron en ellas, por eso Dios se apoderó de ellos. En verdad, Él es fuerte, severo en el castigo.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmclvi{Y, ciertamente, Nosotros enviamos a Moisés con Nuestras pruebas claras y una autoridad evidente\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmclvii{al Faraón, a Hamam y a Qarun, pero dijeron: «¡Es un mago! ¡Un mentiroso!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmclviii{Así pues, cuando llegaron a ellos con la Verdad procedente de Nosotros, dijeron: «¡Matad a los hijos de los creyentes que están con él y dejad con vida a sus mujeres!» Pero los planes de quienes trataban de ocultar la Verdad no tuvieron éxito.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmclix{Y dijo el Faraón: «¡Dejadme que mate a Moisés! ¡Y que él invoque a su Señor! En verdad, temo que cambie vuestras creencias o que haga surgir la corrupción en la Tierra.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmclx{Y Moisés dijo: «Me refugio en mi Señor y vuestro Señor de todo arrogante que no crea en el Día de la Cuenta.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmclxi{Y un hombre creyente de la gente del Faraón que ocultaba su fe dijo: «¿Vais a matar a un re por decir: Mi señor es Dios, y que ha venido a vosotros con las pruebas claras procedentes de vuestro Señor?» «Y si es mentiroso su mentirá recaerá sobre él y si es sincero sufriréis algunas de las cosas con que os amenaza. En verdad, Dios no guía a quien es inmoderado, mentiroso.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmclxii{«¡Oh, pueblo mío! Hoy el reino os pertenece a vosotros y vosotros domináis la Tierra, pero ¿Quién nos auxiliará del castigo de Dios si viene a nosotros?» El Faraón dijo: «No os muestro más que lo que yo veo y no os guío más que al camino de la rectitud.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmclxiii{El que creía dijo: «¡Oh pueblo mío! Temo para vosotros algo semejante al día de los partidos.”\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmclxiv{Semejante al castigo del pueblo de Noé y de Ad y de Zamud y de los que vinieron tras ellos. Y Dios no desea oprimir a Sus siervos.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmclxv{«Y ¡Oh, pueblo mío! En verdad, temo para vosotros el Día del Griterío.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmclxvi{El día en que trataréis de huir y no tendréis quien os proteja de Dios. Y a quien Dios extravía no hay nadie que pueda guiarle.»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmclxvii{«Y, ciertamente, vino a vosotros José anteriormente con las pruebas claras, pero siempre dudasteis de lo que os trajo, hasta que, cuando murió, dijisteis: Dios no enviará después de él ningún otro Mensajero.» Así es como Dios extravía a quien es inmoderado, escéptico.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmclxviii{Aquellos que discuten las señales de Dios sin que les haya sido concedida ninguna autoridad. Eso es muy detestable para Dios y para quienes son creyentes. Así es como Dios sella el corazón de todo el que es arrogante, prepotente.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmclxix{Y Faraón dijo: «¡Oh, Haman! Construye para mí una alta torre, quizás así pueda alcanzar los caminos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmclxx{Los caminos de los cielos, y pueda echar un vistazo al dios de Moisés. Aunque, en verdad, pienso que es un mentiroso.» Así es como aparecían adornados ante el Faraón sus malos actos y fue apartado del camino. Y los planes del Faraón sólo obtuvieron el fracaso.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmclxxi{Y el que creía dijo: «¡Oh, pueblo mío! ¡Seguidme! ¡Yo os guiaré al camino de la rectitud!\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmclxxii{¡Oh, pueblo mío! En verdad, la vida de este mundo es un disfrute que tiene un plazo limitado y la otra vida es la casa de la permanencia.»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmclxxiii{A quien haya cometido un mal no se le recompensará más que con algo semejante y quienes hayan hecho un bien, hombre o mujer, y sean creyentes, entrarán en el Jardín y allí se les recompensará sin medida.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmclxxiv{«Y ¡Oh pueblo mío! ¿Cómo es que yo os invito a la salvación y vosotros me invitáis al Fuego?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmclxxv{Me invitáis a que no crea en Dios y a que asocie a Él aquello de lo que no tengo conocimiento, mientras que yo os invito al Todopoderoso, al Perdonador.»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmclxxvi{«Es evidente que aquello a lo que me invitáis no tiene poder de convocatoria ni en esta vida ni en la Otra y que regresaremos a Dios y que los inmoderados son gente del Fuego.»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmclxxvii{«Entonces recordaréis lo que ahora os digo, mientras que yo he confiado mis asuntos a Dios. En verdad, Dios ve el estado de Sus siervos.»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmclxxviii{Dios le protegió del daño de lo que ellos tramaron y confirmó el castigo para la gente del Faraón:\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmclxxix{el fuego al que se verán siempre expuestos, mañana y tarde. Y el día en que llegue la Hora: «¡Haced entrar a la gente del Faraón en lo más severo del castigo!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmclxxx{Y cuando estén discutiendo en el Fuego, los débiles dirán a los arrogantes: «En verdad, fuimos vuestros seguidores. ¿Soportaréis por nosotros una parte del Fuego?»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxi{Los arrogantes dirán: «En verdad, estamos todos en él. En verdad, Dios ha juzgado entre Sus siervos.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxii{Y los que estén en el Fuego dirán a los guardianes del Infierno: «¡Invocad a vuestro Señor para que nos reduzca un día del castigo!»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxiii{Ellos dirán: «¿No vinieron a vosotros vuestros Mensajeros con las pruebas claras?» Ellos dirán: «Sí.» Ellos dirán: «Pues entonces, invocad vosotros mismos» Pero lo que invoquen los que no creyeron será en vano.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxiv{En verdad, Nosotros auxiliaremos a Nuestros Mensajeros y a quienes tuvieron fe, en esta vida y en el día en el que se pongan en pie los testigos.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxv{El día en que de nada sirvan a los opresores sus excusas y sean maldecidos y estén en la mala morada.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxvi{Y, ciertamente, dimos a Moisés la guía e hicimos que los Hijos de Israel heredasen la Escritura,\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxvii{guía y recuerdo para la gente de entendimiento.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxviii{Así pues, ten paciencia, pues la promesa de Dios es verdadera. Y pide perdón por tus pecados y celebra con alabanzas a tu Señor al atardecer y al amanecer.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxix{En verdad, quienes discuten sobre las señales de Dios sin que haya venido a ellos ninguna autoridad, en sus pechos sólo tienen arrogancia. Nunca conseguirán sus propósitos. Buscad, pues, la protección de Dios. En verdad, Él es Quien todo lo oye, Quien todo lo ve.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcxc{Ciertamente, la creación de los cielos y la Tierra es más grande que la creación del ser humano, pero la mayoría de la gente lo desconoce.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcxci{Y no son lo mismo el ciego y el que ve, ni quienes son creyentes y realizan buenas acciones y quienes obran mal. ¡Qué poco es lo que reflexionáis!\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcxcii{En verdad, la Hora llegará. No hay duda en ello. Pero la mayoría de ellos no creen.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcxciii{Y vuestro Señor dice: «Invocadme y Yo os contestaré. En verdad, quienes se muestran arrogantes ante su obligación de adorarme pronto entrarán en el Infierno humillados.»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmcxciv{Dios es Quien ha puesto para vosotros la noche para que descanséis en ella y el día para que podáis ver. En verdad, Dios es Quien posee el poder de favorecer a las personas, pero la mayoría de las personas no lo agradecen.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmcxcv{Ese es Dios vuestro Señor. Creador de todas las cosas. No hay más dios que Él. ¿Cómo entonces os desviáis?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmcxcvi{Así fue como se desviaron quienes rechazaban las señales de Dios.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmcxcvii{Dios es Quien ha puesto para vosotros la Tierra como un lugar en el que vivir y el cielo como una cúpula y Quien os ha dado forma, la mejor de las formas, y os ha proporcionado todas las cosas buenas. Ese es Dios vuestro Señor. Así pues ¡Bendito sea Dios, Señor del Universo!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcxcviii{Él es el Vivo. No hay más dios que Él. Así pues ¡Invocadle con una fe volcada solamente a Él! ¡Alabado sea Dios, Señor del Universo!\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcxcix{Di: «Se me ha prohibido adorar aquello que vosotros adoráis en lugar de Dios, pues han venido a mí las pruebas claras procedentes de mi Señor y me ha sido ordenado que me someta al Señor del Universo.»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcc{Él es Quien os ha creado de tierra, luego de una gota, luego de algo suspendido, luego os hace nacer infantes, luego os hace alcanzar la madurez, luego que seáis ancianos -aunque algunos morís antes- hasta que alcanzáis el plazo señalado, para que, quizá así, razonéis.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcci{Él es Quien da la vida y da la muerte y, cuando decreta algo, le dice: «¡Sé!» y ello es.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmccii{¿No has visto que quienes discuten las señales de Dios se desvían?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcciii{Son aquellos que desmienten la Escritura y aquello con lo que enviamos a Nuestros Mensajeros. Pero ¡Pronto van a saber!\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcciv{Cuando, con argollas en sus cuellos y encadenados, sean arrastrados\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmccv{al agua hirviente y luego ardan en el Fuego.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmccvi{Entonces se les dirá: «¿Dónde está aquello que adorabais como si fuera Dios\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmccvii{en lugar de Dios?» Ellos dirán: «Se han apartado de nosotros. Aunque, lo que invocábamos antes no era nada.» Así es como Dios extravía a quienes tratan de ocultar la Verdad.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmccviii{«¡Esto es por lo que os regocijabais en la Tierra sin derecho y por vuestra exultante arrogancia!\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmccix{¡Entrad por las puertas del Infierno en el que permaneceréis eternamente!» ¡Qué mala estancia la de los arrogantes!\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmccx{Así pues ¡Se paciente! En verdad, la promesa de Dios es verdadera. Así que, o bien te mostraremos parte de aquello que les hemos prometido o bien te haremos morir antes, pero ellos volverán a Nosotros.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmccxi{En verdad, antes de ti habíamos enviado Mensajeros. De algunos de ellos te hemos hablado y de otros no te hemos hablado, pero ningún Mensajero viene con una señal sino es con el permiso de Dios. Así pues, cuando llegue la orden de Dios, se juzgará conforme a la Verdad y, entonces, los perdedores serán quienes falseaban la realidad.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmccxii{Dios es Quien ha creado para vosotros los ganados para que montéis en ellos y para que comáis de ellos.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmmccxiii{En ellos hay beneficio para vosotros y con ellos podéis satisfacer las necesidades que guardáis en vuestros pechos. Y sois llevados sobre ellos y sobre los barcos.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmccxiv{Así os muestra Sus señales ¿Cuál, pues, de las señales de Dios negaréis?\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmccxv{¿Acaso no viajan por la Tierra y ven cual ha sido el final de quienes existieron antes de ellos? Eran más que ellos y poseían más fuerza y dejaron más huellas en la Tierra, pero de nada les sirvió lo que obtuvieron.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmccxvi{Cuando llegaron a ellos sus Mensajeros con las pruebas claras, ellos se sintieron satisfechos del conocimiento que poseían. Pero se verificó sobre ellos aquello de lo que se burlaban.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmccxvii{Y cuando vean Nuestro castigo dirán: «¡Creemos en Dios y sólo en Él y renegamos de aquello que asociábamos a Él!»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmccxviii{Pero, una vez que hayan visto Mi castigo, su fe no les servirá de nada. Esa es la manera en que Dios ha tratado a Sus siervos en el pasado. Ahí es cuando pierden quienes trataron de ocultar la Verdad.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmccxix{\basmalahes Ha, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmccxx{Desciende del Clementísimo, el Misericordiosísimo\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmccxxi{una Escritura cuyos versículos han sido explicados detalladamente. Una recitación en árabe para una gente que posee conocimiento,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmccxxii{portadora de buenas nuevas y de amonestación. Pero la mayoría de ellos se alejan y no escuchan.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmccxxiii{Y dicen: «Nuestros corazones están velados de aquello a lo que nos invitas, nuestros oídos están sordos y hay una barrera entre nosotros y tú. Así pues, ¡Actúa que nosotros también actuaremos!»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmccxxiv{Di: «En verdad, yo soy un ser humano como vosotros. Me ha sido revelado que vuestro dios es un dios único. Dirigíos, pues, hacia Él y pedidle perdón y ¡Ay de quienes adoran falsos dioses!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmccxxv{Esos que no dan la limosna purificadora de la riqueza y niegan la existencia de la otra vida.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmccxxvi{En verdad, quienes creen y hacen buenas obras tendrán una recompensa ilimitada.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmccxxvii{Di: «¿No vais a creer en Quien ha creado la Tierra en dos días y vais a poner junto a Él semejantes? Ese es el Señor del Universo.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmccxxviii{«Y, en cuatro días, ha puesto en lo alto de ella firmes montañas y la ha bendecido y ha decretado sus variados alimentos, en igualdad para todos los que los necesitan.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmccxxix{«Luego, se ha dirigido a los cielos que eran humo y les ha dicho a ellos y a la Tierra: Venid a Mí de buen grado o a la fuerza. Y ellos han dicho: Venimos de buen grado.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmccxxx{«Y los separó en siete cielos en dos días y reveló a cada cielo su función.» Y adornamos el cielo de este mundo con lámparas y lo protegimos. Ese es el decreto del Todopoderoso, el Sabio.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxi{Y si se alejan de ti, di: «Os he advertido de una destrucción similar a la destrucción de Ad y Zamud.»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxii{Cuando vinieron a ellos los Mensajeros diciéndoles por delante y por detrás: «No adoréis más que a Dios.» Ellos dijeron. «Si nuestro Señor hubiese querido habría hecho descender ángeles. En verdad, no creemos en aquello con lo que habéis sido enviados.»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxiii{En cuanto a los Ad, fueron arrogantes en la Tierra sin derecho y dijeron: «¿Quién es más fuerte que nosotros?» ¿Es que no veían que Dios, que les había creado, era más fuerte que ellos? Pero negaban Nuestras señales.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxiv{Así pues, enviamos contra ellos un viento frío huracanado, en días desafortunados, para hacerles probar el castigo humillante en esta vida mundanal. Y el castigo de la otra es todavía más humillante y no serán auxiliados.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxv{En cuanto a Zamud, Nosotros les guiamos, pero prefirieron la ceguera a la guía, así que les alcanzó la destrucción de un castigo humillante por lo que hacían.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxvi{Y salvamos a quienes eran creyentes y temerosos de Dios\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxvii{Y recuerda el día en que los enemigos de Dios sean reunidos a la fuerza y llevados hacia el Fuego y se haga esperar a las filas de los primeros hasta que se unan a ellos las filas de los últimos,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxviii{hasta que, al llegara a él, sus oídos, sus vistas y sus pieles, den testimonio contra ellos por lo que hacían.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxix{Y dirán a sus pieles: «¿Por qué testificáis contra nosotros?» Ellas dirán: «Nos ha hecho hablar Dios, que es Quien hace hablar a todas las cosas y que es Quien os creó la primera vez y hacia Quien regresáis.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmccxl{«No podíais esconderos para que vuestros oídos y vuestra vista y vuestra piel no atestiguasen contra vosotros, pero creíais que Dios no conocía mucho de lo que hacíais\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmccxli{y esa suposición que vosotros teníais sobre vuestro Señor os destruyó y os convertisteis en los perdedores.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmccxlii{Y aunque tengan paciencia su morada será el Fuego y aunque traten de evitar la censura no serán de los redimidos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmccxliii{Y les asignamos compañeros que les embellecieron lo que tenían entre sus manos y tras ellos. Y se verificó contra ellos lo dicho a las generaciones de genios y humanos que pasaron antes de ellos. En verdad, ellos fueron perdedores.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmccxliv{Y quienes no creen dicen: «¡No escuchéis este Corán y hablad sin sentido cuando se recite, quizás así seáis vencedores!»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmccxlv{Y haremos gustar a los que no creen un duro castigo y les retribuiremos por el mal que hacían.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmccxlvi{Esa es la recompensa de los enemigos de Dios: el Fuego. En él está para ellos la morada eterna. Recompensa por negar Nuestras señales.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmccxlvii{Quienes no creen dirán: «¡Señor nuestro! Muéstranos a los genios y a los humanos que nos desviaron para que los pongamos bajo nuestros pies y así estén en lo más bajo.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmccxlviii{En verdad, los ángeles descienden sobre quienes dicen: «Nuestro señor es Dios», y se mantienen en el camino de la rectitud y la justicia: ¡No temáis y no estéis tristes y recibid la buena nueva del Jardín que se os había prometido!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmccxlix{«Nosotros fuimos vuestros protectores en la vida mundanal y lo somos en la vida siguiente y en ella tendréis lo que vuestras almas deseen y en ella tendréis lo que pidáis.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmccl{Hospitalidad de Un perdonador misericordiosísimo.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmccli{Y ¿Quién dice mejores palabras que quien invoca a Dios y realiza buenas obras y dice: «En verdad, soy de los que se someten a Dios.»?\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcclii{No son iguales las buenas acciones que las malas. Rechaza el mal con lo que es mejor y aquel con el que estabas enemistado se comportará como si fuera un amigo íntimo.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmccliii{Y eso sólo lo consigue quien tiene paciencia. Eso sólo lo consigue quien posee una inmensa porción.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmccliv{Si el Demonio te incita al mal, busca refugio en Dios. En verdad, Él es Quien todo lo oye, el Sabio.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcclv{Y entre Sus señales están la noche y el día y el Sol y la Luna. No os prosternéis ante el Sol ni ante la Luna, prosternaos ante Dios que es Quien los ha creado a ambos, si es sólo a Él a quien adoráis.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcclvi{Pero si se muestran altivos, quienes están cerca de tu Señor Le glorifican noche y día sin cansarse.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcclvii{Y entre Sus señales está el que tú veas la tierra seca y desolada pero, cuando hacemos que descienda sobre ella el agua, se reanima con energía y brotan las plantas. En verdad, quien la hace vivir es el Vivificador de lo muerto. En verdad, Él tiene poder sobre todas las cosas.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcclviii{En verdad, quienes no creen en Nuestras señales no pueden ocultarse de Nosotros. ¿Quién, pues, es mejor? ¿Quién será arrojado al Fuego o quién estará seguro cuando venga el Día del Levantamiento? ¡Haced lo que queráis! En verdad, Él ve lo que hacéis.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcclix{En verdad, quienes no creen en el Recuerdo cuando llega a ellos… Y, en verdad, es una Escritura poderosa,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcclx{a la que no alcanzará jamás la falsedad. Desciende gradualmente de Uno que es sabio, digno de alabanza.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcclxi{No se te dice sino lo que les fue dicho a los Mensajeros anteriores a ti. En verdad, tu Señor es el dueño del perdón y del castigo doloroso.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcclxii{Y si hubiésemos hecho llegar a ellos un Corán en lengua no árabe, con seguridad habrían dicho: “¿Cómo es que sus versículos no se explican con claridad y detalladamente? ¿No es árabe siendo él árabe? Di: «Es, para quienes creen, una guía y una cura y quienes no creen son duros de oído y están ciegos ante ella. Como si se les llamase desde un lugar alejado.»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcclxiii{Y, ciertamente, dimos a Moisés la Escritura y disintieron de ella. Y si no hubiese sido por una palabra anterior de tu Señor, habría juzgado entre ellos, pues, en verdad, dudaron seriamente de ella.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcclxiv{Quien obre rectamente, obra para su propio beneficio y quien haga el mal, obra contra sí mismo. Tu Señor no oprime a Sus siervos.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcclxv{El conocimiento de la Hora Le pertenece y no sale ningún fruto de su envoltura, ni concibe o da a luz mujer alguna, sin Su conocimiento. El día en que Él les pregunte: «¿Dónde están Mis socios?» dirán: «Te anunciamos que no hay entre nosotros ninguno que lo atestigüe.»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcclxvi{Y se apartarán de ellos aquellos a los que antes invocaban y sabrán que no hay escape para ellos.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcclxvii{El ser humano no se cansa de buscar el bien, pero cuando le alcanza un mal se desanima y desespera.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcclxviii{Y cuando, después de haber sufrido una contrariedad, le hacemos probar una misericordia proveniente de Nosotros, dice: «Esto es mío y no creo que llegue la Hora. Y en caso de que se me hiciese regresar a mi Señor sólo bien obtendría de Él.» En verdad, informaremos a los que no creían de lo que hacían y les haremos probar un castigo contundente.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcclxix{Cuando favorecemos al ser humano, éste es desagradecido y se aleja de la Verdad con arrogancia, pero cuando sufre un perjuicio no deja de suplicar.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcclxx{Di: «Decidme. Si viniese de Dios y vosotros no creyeseis en ella ¿Quién estará más extraviado que quien disiente de manera tan evidente?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxi{Pronto les mostraremos Nuestras señales en el horizonte y en ellos mismos, hasta que sea evidente para ellos que Él es la Verdad. ¿No es suficiente que tu Señor sea testificable en todas las cosas?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxii{Ved cómo dudan del encuentro con su Señor. ¿Acaso no abarca Él todas las cosas?\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxiii{\basmalahes Ha, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxiv{‘Ain, Sin, Qaf.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxv{De esta misma manera es como Dios, el Todopoderoso, el Sabio, ha enviado la revelación, a ti y a quienes vinieron antes de ti.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxvi{A Él pertenece lo que hay en los cielos y en la Tierra y Él es el Altísimo, el Inmenso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxvii{Los cielos casi se rompen en pedazos sobre ellos y los ángeles glorifican con alabanzas a su Señor y piden perdón para quienes están en la Tierra. Sabed que, en verdad, Dios es el Perdonador, el Misericordiosísimo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxviii{Dios guarda memoria de quienes toman como protectores a otros en lugar de a Él y tú no eres el guardián ni el abogado de ellos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxix{Y, así mismo, te hemos revelado un Corán árabe para que amonestes a la madre de las ciudades y a quienes están alrededor de ella y amonestes sobre el Día de la Reunión, sobre el que no hay duda. Un grupo estará en el Jardín y otro grupo estará en el Fuego llameante.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxx{Y, si Dios hubiera querido, habría hecho de ellos una sola comunidad, pero hace entrar en Su misericordia a quien Él quiere y los opresores no tendrán quien les proteja ni quien les auxilie.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxi{¿Han tomado protectores aparte de Él? Pues Dios es el Protector y Él es Quien da vida a lo muerto y Él es Quien tiene poder sobre todas las cosas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxii{Y cualquier cosa sobre la que discrepéis, Dios la juzgará. ¡Ese es Dios, mi Señor! En Él confío y a Él me vuelvo contrito.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxiii{El Originador de los cielos y la Tierra. Ha hecho parejas para vosotros de vuestras propias almas y parejas del ganado. De ese modo Él os multiplica. No hay nada como Él. Él es Quien todo lo oye, Quien todo lo ve.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxiv{A Él pertenecen las llaves de los cielos y de la Tierra. Incrementa o restringe la provisión de quien Él quiere. En verdad, Él conoce bien todas las cosas.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxv{Él ha establecido para vosotros los mandatos de la fe que ya había encomendado a Noé y que también Nosotros te hemos revelado a ti, y lo que habíamos encomendado a Abraham, Moisés y Jesús: “Estableced la creencia y no os dividáis por causa de ella.” A los idólatras les resulta difícil aquello a lo que tú les convocas. Dios escoge para Sí a quien Él quiere y guía a Él a quien se vuelve con arrepentimiento.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxvi{Y no se dividieron en distintos grupos hasta después de haberles llegado el conocimiento, por envidia entre ellos. Y si no hubiese sido por una palabra anterior de tu Señor estableciendo un plazo, habría juzgado entre ellos. Y, en verdad, aquellos a quienes se hizo heredar la Escritura tienen serias dudas respecto a ella.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxvii{Por ello, predica a las gentes y mantente firme como te ha sido ordenado y no sigas sus pasiones y di: «Creo en lo que Dios ha hecho descender de la Escritura y se me ha ordenado que establezca la justicia entre vosotros. Dios es nuestro Señor y vuestro Señor. Nosotros responderemos por nuestros actos y vosotros por los vuestros. No hay preferencias entre nosotros y vosotros. Dios nos reunirá. Todo regresa a Él.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxviii{Y los argumentos de quienes discuten sobre Dios, después de que Su llamada ha sido aceptada, no tienen validez alguna ante su Señor. Sufrirán la ira y un duro castigo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxix{Dios es Quien hace descender la Escritura con la Verdad y la Balanza y ¿Quién sabe? Puede que la Hora esté cerca.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmccxc{Quienes no creen en ella piden que se adelante, pero quienes creen se estremecen de miedo al pensar en ella y saben que ella es cierta. Sabed que quienes insisten en negar la Hora están muy extraviados.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmccxci{Dios es delicado con Sus siervos. Provee a quien Él quiere y Él es el Fuerte, el Todopoderoso.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmccxcii{A quienes deseen la cosecha de la otra vida Nosotros les incrementaremos su cosecha y a quien desee la cosecha de la vida mundanal Nosotros le daremos de ella, pero no tendrá parte alguna en la otra.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmccxciii{¿Acaso tienen socios que han prescrito para ellos en la religión lo que Dios no ha permitido? Si no se hubiese establecido un plazo se habría juzgado entre ellos. Y, en verdad, los opresores tendrán un castigo doloroso.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmccxciv{Verás a los opresores temerosos por lo que cometieron y sufrirán las consecuencias. Y quienes son creyentes y realizan buenas acciones estarán en los Jardines del Paraíso. Tendrán lo que deseen junto a su Señor. Ese es el gran favor.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmccxcv{Esa es la buena nueva que Dios anuncia a Sus siervos que son creyentes y realizan buenas acciones. Di: «No os pido recompensa por ello, excepto el amor a los familiares.» Y a quien realice una buena acción le incrementaremos la recompensa de su acción. En verdad, Dios es perdonador, agradecido.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmccxcvi{Ellos dicen: «Inventa mentiras sobre Dios.» Pero si Dios quisiera sellaría tu corazón. Dios elimina la falsedad y establece la Verdad con Sus palabras. En verdad, Él conoce bien lo que hay en el fondo de los pechos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmccxcvii{Y Él es Quien acepta el arrepentimiento de Sus siervos y perdona los pecados y conoce lo que hacéis.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmccxcviii{Y responde a quienes son creyentes y obran rectamente y les incrementa Sus favores. Pero a quienes tratan de ocultar la realidad les aguarda un duro castigo.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmccxcix{Si Dios incrementase la provisión para Sus siervos, estos se volverían injustos y opresores en la Tierra, por eso hace que descienda en su medida aquello que Él quiere. En verdad, Él está bien informado y observa a Sus siervos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmccc{Y es Él Quien hace descender la lluvia reparadora cuando ya habían desesperado y distribuye Su misericordia y Él es el Protector, el Digno de alabanza.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmccci{Entre Sus señales está la creación de los cielos y la Tierra y los seres vivos que en ambos ha diseminado. Y Él tiene poder para reunirlos cuando quiera.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmcccii{Y cualquier desgracia que sufráis es consecuencia de lo que vosotros mismos habéis cometido, pero Él perdona mucho.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmccciii{Y no podréis escapar a Su poder en la Tierra y no tenéis, aparte de Dios, quien os proteja y auxilie.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmccciv{Y entre Sus señales están los barcos, como montañas en el mar.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmcccv{Y, si Él quiere, aquieta el viento y los inmoviliza en su superficie. En verdad, en ello hay señales para todo el que sea muy paciente, muy agradecido.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcccvi{O les aniquila por lo que han cometido -pero Él perdona mucho-\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmcccvii{para que quienes discuten Nuestras señales sepan que no tendrán lugar al que escapar.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmcccviii{Todo lo que se os ha dado es disfrute pasajero de esta vida mundanal y lo que hay junto a Dios es mejor y más duradero para quienes tienen fe y confían en su Señor\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcccix{y se abstienen de los pecados mayores y la inmoralidad y, cuando se les irrita, perdonan.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcccx{Y que responden a su Señor, hacen la oración, se consultan entre ellos los asuntos y reparten de aquello que Nosotros les proveemos\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcccxi{y cuando sufren una injusticia, un ultraje, se ayudan entre sí.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcccxii{La recompensa del mal es un mal semejante. Así pues, quien perdone y corrija el mal será recompensado por Dios. En verdad, Él no ama a los opresores.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcccxiii{Y quienes se defiendan tras haber sido oprimidos no serán censurados.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcccxiv{En verdad, la censura es para quienes oprimen a las gentes y van agrediendo en la Tierra sin derecho. Ellos tendrán un castigo doloroso.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcccxv{Y ser pacientes y perdonar es señal de quienes poseen una gran firmeza.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcccxvi{Y a quien Dios extravíe no encontrará tras Él quien le proteja y verás a los opresores, cuando les llegue el castigo, diciendo: «¿Hay algún camino para regresar?»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcccxvii{Les verás expuestos a él, abatidos por la humillación, con la mirada baja y desorbitada. Entonces, los creyentes dirán: «En verdad, los perdedores son quienes han perdido a sus almas y a sus familias el Día del Levantamiento.» Sabed que, en verdad, los opresores estarán en el castigo permanente\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcccxviii{y no tendrán, aparte de Dios, protector alguno que les auxilie. Y no hay camino para aquel a quien Dios extravía.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcccxix{¡Responded a vuestro Señor antes de que Dios haga llegar un día del que no hay manera de regresar! Ese día no encontraréis refugio ni nadie que os defienda.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcccxx{Y si se alejan, no te hemos enviado para que seas su protector. Tu obligación es solamente transmitir el mensaje. Y, en verdad, cuando hacemos que el ser humano pruebe una misericordia que viene de parte Nuestra, se regocija de su suerte y si le aqueja un mal por lo que ha cometido, entonces se muestra desagradecido.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxi{A Dios pertenece el reino de los cielos y de la Tierra. Él crea lo que quiere. Otorga hijas a quien Él quiere y otorga hijos a quien Él quiere.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxii{O les da de ambos, varones y hembras y hace estéril a quien Él quiere. En verdad, Él es sabio, poderoso.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxiii{Y no es posible que Dios hable directamente al ser humano, sino a través de la revelación o tras un velo o enviándole un Mensajero, para que le sea revelado, con Su permiso, lo que Él quiera. En verdad, Él es altísimo, sapientísimo.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxiv{Así es como te hemos revelado un Espíritu por orden Nuestra. Tú no sabías lo que era la Escritura ni la fe pero Nosotros la pusimos como una luz con la que guiamos a quien queremos de Nuestros siervos. Y, en verdad, tú guías hacia un camino recto,\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxv{el camino de Dios, a Quien pertenece lo que hay en los cielos y en la Tierra. Sabe que a Dios regresan todas las cosas.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxvi{\basmalahes Ha, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxvii{Juro por la Escritura clara\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxviii{que la hemos hecho una recitación árabe. Quizás así, razonéis.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxix{Y, en verdad, ella está en La madre de las Escrituras [Sagradas] que hay junto a Nosotros, en verdad sublime, sapientísima.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxx{¿Os privaremos, pues, del Recuerdo por ser un pueblo inmoderado?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxi{¡Cuántos profetas Hemos enviado a los primeros pueblos!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxii{Y no llegó a ellos profeta alguno sin que se burlasen de él.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxiii{Así pues, destruimos a quienes eran más poderosos que estos. Ya vimos lo que les sucedió a los primeros pueblos.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxiv{Y si les preguntases: «¿Quién ha creado los cielos y la Tierra?» sin duda, dirían: «Los ha creado el Todopoderoso, el Sapientísimo.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxv{Él mismo que ha puesto para vosotros la Tierra como un lecho y ha puesto para vosotros en ella caminos para que así os guiéis.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxvi{Y Quien hace descender del cielo agua en una cantidad determinada con la que Nosotros damos la vida a una región que estaba muerta. Así mismo seréis sacados vosotros.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxvii{Y Quien ha creado las parejas de todo y ha puesto para vosotros los barcos y los animales en que montáis,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxviii{para que os sentéis en sus lomos. Luego, recordéis las bendiciones de vuestro Señor cuando estéis sentados sobre ellos y digáis: «Glorificado sea Quien a puesto esto a nuestro servicio, pues nosotros no lo habríamos logrado.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxix{¡Y, en verdad, regresaremos a nuestro Señor!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcccxl{Ellos han considerados a algunos de Sus siervos parte de Él. En verdad, el ser humano es un clarísimo desagradecido.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcccxli{¿Iba a tomar hijas de lo que Él ha creado y os iba a conceder los hijos a vosotros?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlii{Y cuando a alguno de ellos se le anuncia la buena nueva de lo que él atribuye al Clementísimo, su rostro se ensombrece, se llena de preocupación y disgusto:\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcccxliii{«¿Alguien que crece entre adornos y es incapaz de razonar con claridad?»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcccxliv{Y han considerado a los ángeles, que son siervos del Clementísimo, hembras. ¿Acaso ellos han sido testigos de su creación? Se tomará nota de su testimonio y serán interrogados.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlv{Y dicen: «Si el Clementísimo hubiera querido, no les habríamos adorado.» ¡No tienen ningún conocimiento de eso! ¡No hacen más que conjeturas!\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlvi{¿Acaso les hemos dado una Escritura anterior a ésta, a la que ellos puedan aferrarse?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlvii{Pero dicen: «En verdad, encontramos a nuestros padres siguiendo una creencia y, en verdad, siguiendo sus huellas estamos bien guiados.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlviii{Y, de la misma manera, no hemos enviado antes de ti a ningún amonestador a pueblo alguno sin que los ricos del mismo dijeran: «En verdad, encontramos a nuestros padres siguiendo una creencia y, en verdad, seguimos sus huellas.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlix{Di: «¿Y si os trajera una guía mejor que aquella en la que encontrasteis a vuestros padres?» Dirán: «En verdad, no creemos en aquello con lo que habéis sido enviados.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcccl{Así pues, nos vengamos de ellos y ¡Mira cual fue el final de los desmentidores!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcccli{Y (recuerda) cuando Abraham dijo a su padre y a su pueblo: «En verdad, rechazo aquello que adoráis,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmccclii{pero no a Quien me ha creado, pues, en verdad, Él me guiará.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmcccliii{Y Él las puso como palabras que permaneciesen en su descendencia para que, quizás así, regresasen.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmcccliv{Pero les permití disfrutar a ellos y a sus padres hasta que llegase a ellos la Verdad y un Mensajero que habla claro.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmccclv{Pero cuando llegó a ellos la Verdad, dijeron: «Esto es magia y, en verdad, nosotros no creeremos en ella.»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmccclvi{Y dijeron: «¿Por qué este Corán no ha sido revelado a un hombre importante de una de estas dos ciudades?»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmccclvii{¿Son acaso ellos quienes reparten la misericordia de tu Señor? Somos Nosotros Quienes repartimos entre ellos sus medios de vida en este mundo y Quienes hemos elevado el grado de unos sobre otros para que unos tomen a otros a su servicio. Y la misericordia de tu Señor es mejor que lo que ellos reúnen.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmccclviii{Y si no fuera para que los humanos no terminasen siendo una sola comunidad, habríamos puesto en las casas de quienes no creen en el Clementísimo, techos y escaleras de plata para ascender a ellos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmccclix{y en las puertas de sus casas y en los lechos en los que se reclinan,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmccclx{y adornos de oro. Pero todo esto no es más que disfrute de esta vida mundanal y la otra vida junto a tu Señor es para los temerosos.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmccclxi{Y a quien esté ciego al recuerdo del Clementísimo le asignaremos un demonio que será su compañero permanente.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmccclxii{Y, en verdad, ellos les apartarán del camino y creerán que están bien guiados\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmccclxiii{hasta que, cuando vengan a Nosotros, digan: «¡Ojalá entre yo y tú hubiese la distancia de los dos orientes! ¡Qué mal compañero!»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmccclxiv{¡Hoy no os beneficiará lo que oprimisteis, pues compartiréis el castigo!\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmccclxv{¿Acaso puedes hacer que el sordo oiga o guiar al ciego y a quien está en un extravío evidente?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmccclxvi{Así pues, aunque te llevemos, en verdad, nos vengaremos de ellos.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmccclxvii{O te haremos ver aquello que les prometimos, pues, en verdad, tenemos poder sobre ellos.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmccclxviii{Por tanto ¡Aférrate a lo que te hemos revelado! En verdad, tú estás sobre un camino recto.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmccclxix{Y, en verdad, ello es un recuerdo para ti y para tu pueblo y pronto seréis preguntados.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmccclxx{Y pregunta a los Mensajeros que Nosotros hemos enviado antes de ti. ¿Acaso pusimos, aparte del Clementísimo, otros dioses para que fuesen adorados?\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxi{Y, ciertamente, enviamos a Moisés con Nuestras señales al Faraón y a sus notables y dijo: «En verdad, soy el Mensajero del Señor del Universo.»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxii{Y, cuando llegó a ellos con Nuestras señales, se rieron de ellas.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxiii{A pesar de que no les mostramos una señal que no fuese mayor que su hermana. Les hicimos sufrir el castigo para que, quizás así, regresasen.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxiv{Y dijeron: «¡Oh tú, mago! ¡Pide por nosotros a tu Señor en nombre del pacto que ha realizado contigo! ¡Nosotros nos dejaremos guiar!»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxv{Pero, cuando apartamos de ellos el castigo, no cumplieron su promesa.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxvi{Y, llamando el Faraón a su pueblo, dijo: «¿Acaso no soy yo el rey de Egipto y de estos ríos que corren a mis pies? ¿Es que no os dais cuenta?»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxvii{«¿No soy yo mejor que éste, que es un pobre siervo y no sabe expresarse con claridad?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxviii{«Si no, ¿Por qué no le han sido puestos brazaletes de oro o han venido con él los ángeles acompañándole?»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxix{Así engañó a su pueblo y estos le obedecieron. En verdad, eran un pueblo trasgresor.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxx{Por ello, cuando Nos enojaron, Nos vengamos de ellos y les ahogamos a todos.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxi{Y les colocamos a la vanguardia e hicimos de ellos un ejemplo para la posteridad.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxii{Y, cuando se pone de ejemplo al hijo de María, tu pueblo se burla.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxiii{Y dicen: «¿Son mejores nuestros dioses o él?» Ellos sólo le citan para discutir contigo. Son gente quienes les gusta disputar.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxiv{Él es, en verdad, un siervo al que Nosotros favorecimos y al que pusimos como ejemplo para los Hijos de Israel.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxv{Y si Nosotros hubiésemos querido, habríamos hecho que algunos de vosotros fuesen ángeles que se sucediesen en la Tierra.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxvi{Y, en verdad, él es un medio para el conocimiento de la Hora. Así pues, no dudéis de ella y seguidme. Éste es el camino recto.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxvii{Y que Satanás no os aparte. En verdad, él es un claro enemigo para vosotros.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxviii{Y cuando vino Jesús con las pruebas claras, dijo: «He venido a vosotros con la sabiduría y para aclararos algunas de las cosas en las que discrepáis. Así pues, sed temerosos de Dios y obedecedme.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxix{En verdad, Dios es mi Señor y vuestro Señor, así pues ¡Adoradle! Ese es el camino recto.»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcccxc{Pero los partidos disintieron entre ellos. Así pues ¡Ay de quienes oprimieron! ante el castigo de un día doloroso\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcccxci{¿Acaso esperan otra cosa excepto que la Hora llegue a ellos súbitamente sin que ellos se den cuenta?\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcii{Ese día los amigos serán enemigos unos de otros, excepto los temerosos de Dios:\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcccxciii{«¡Oh, siervos Míos! ¡Hoy no tenéis de que temer ni por qué estar tristes!»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmcccxciv{Quienes creyeron en Mis señales y se sometieron.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcv{«¡Entrad en el Jardín, vosotros y vuestras esposas, radiantes de felicidad!»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcvi{Circularán entre ellos con bandejas de oro y copas y en ellas tendrán lo que deseen sus almas y un deleite para la vista: «En él estaréis eternamente.»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcvii{«Este es el Jardín que se os ha dado en herencia por lo que hacíais.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcviii{Hay en él para vosotros frutas abundantes para que comáis de ellas.»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcix{En verdad, los malhechores estarán en el castigo del Infierno eternamente.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmcd{No se les atenuará y se desesperarán allí.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmcdi{No les oprimiremos, sino que ellos habrán sido los opresores.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmcdii{Y clamarán: «¡Oh, Málik! ¡Que tu Señor nos haga perecer!» Él dirá: «En verdad, vosotros permaneceréis.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmcdiii{Ciertamente, vinimos a vosotros con la Verdad, pero la mayoría de vosotros aborrecéis la Verdad.»\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmcdiv{Ellos han establecido un plan pero Nosotros también planificamos.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmmcdv{¿O creen que Nosotros no oímos lo que piensan en secreto y lo que hablan en secreto? Claro que sí. Y Nuestros Mensajeros están junto a ellos tomando nota.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmcdvi{Di: «Si el Clementísimo tuviera un hijo yo sería el primero en adorarle.»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmcdvii{«¡Glorificado sea el Señor de los cielos y la Tierra, el Señor del Trono, por encima de lo que Le atribuyen!»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmcdviii{Así pues ¡Déjales que se pierdan en su error y jueguen hasta que se encuentren con el día que se les ha prometido!\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmcdix{Él es Aquel que es un dios en los cielos y un dios en la Tierra. Él es el Sabio, el Conocedor de todo.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmcdx{¡Bendito sea Aquel a Quien pertenece el reino de los cielos y de la Tierra y de lo que hay entre ambos y que posee el conocimiento de la Hora y a Quien habréis de regresar!\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmcdxi{Y aquellos a quienes invocan aparte de Él no tienen el poder de interceder, sino aquellos que dan testimonio de la Verdad y que conocen.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmmcdxii{Y si les preguntas quién les ha creado, seguro que dirán: «Dios.» Entonces ¿Por qué se extravían?\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmmcdxiii{Y él dice: «¡Oh, Señor mío! ¡En verdad, ellos son un pueblo que no cree!»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmmcdxiv{¡Apártate, entonces, de ellos! Y di: «¡Paz!». ¡Pronto sabrán!\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmmcdxv{\basmalahes Ha, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcdxvi{Juro por la Escritura clara\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcdxvii{que, en verdad, la hicimos descender en una noche bendita. En verdad, siempre hemos sido amonestadores.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcdxviii{En ella se detallan de manera diferenciada todos los asuntos establecidos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcdxix{Asuntos que proceden de Nosotros. En verdad, Nosotros somos Quienes la enviamos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcdxx{Una misericordia de tu Señor. En verdad, Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxi{El Señor de los cielos y la Tierra y de lo que hay entre ambos, si es que tenéis certeza.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxii{No hay más dios que Él. Da la vida y da la muerte. Es vuestro Señor y el Señor de vuestros primeros padres.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxiii{Pero ellos dudan y juegan.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxiv{Así pues ¡Espera el día en que el cielo traiga un humo evidente\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxv{que cubra a la gente! «¡Esto es un castigo doloroso!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxvi{¡Señor nuestro! ¡Aparta de nosotros este castigo! ¡Creemos!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxvii{De qué les servirá el recuerdo si ha venido a ellos un Mensajero claro\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxviii{y se han apartado de él y han dicho: «¡Es un loco al que otros han instruido!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxix{En verdad, apartaremos un poco el castigo, pero vosotros reincidiréis.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxx{El día que les ataquemos con la gran violencia, nos vengaremos de ellos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxi{En verdad, antes que a ellos pusimos a prueba al pueblo del Faraón y vino a ellos un noble Mensajero:\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxii{«Someteos a mí, siervos de Dios. En verdad, yo soy para vosotros un Mensajero digno de confianza.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxiii{«Y no os rebeléis contra Dios, pues he venido a vosotros con una autoridad evidente\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxiv{y me refugio en mi Señor y vuestro Señor de que me lapidéis.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxv{Y si no creéis en mí ¡Apartaos!»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxvi{E imploró a su Señor: «¡Este es un pueblo de malhechores!»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxvii{[Dios le respondió:] «Ponte en marcha con Mis siervos durante la noche, pues seréis perseguidos,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxviii{y salid del mar con calma. En verdad, ellos son un ejército que será ahogado.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxix{¡Cuántos jardines y fuentes dejaron atrás!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcdxl{¡Cuántos campos de cultivo y bellas mansiones\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmcdxli{y bendiciones de las que disfrutaban!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlii{Así fue. Y se lo dimos en herencia a otro pueblo.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmcdxliii{Y ni los cielos ni la Tierra lloraron por ello. Y no se les hizo esperar.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmcdxliv{Y salvamos a los Hijos de Israel del castigo humillante\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlv{del Faraón. En verdad, él era altivo, de los transgresores.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlvi{Ciertamente, con conocimiento, les elegimos sobre todos los pueblos\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlvii{y les dimos señales con las que les pusimos claramente a prueba.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlviii{En verdad, ellos dicen:\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlix{«Sólo moriremos esta primera vez y no seremos resucitados.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmcdl{¡Haced volver a nuestros padres si es verdad lo que decís!»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcdli{¿Son ellos mejores o el pueblo de Tuba y quienes vivieron antes de ellos? Nosotros les destruimos. En verdad, eran malhechores.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcdlii{Y no hemos creado los cielos y la Tierra y lo que hay entre ambos por juego.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcdliii{No hemos creado ambos sino con la Verdad, pero la mayoría de ellos no saben.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcdliv{En verdad, el Día de la Diferencia será el momento de encuentro de todos ellos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcdlv{El día en que un amigo no podrá beneficiar a otro amigo y no serán auxiliados\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcdlvi{excepto aquellos de quien Dios tenga clemencia. En verdad, Él es el Todopoderoso, el Clementísimo.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcdlvii{En verdad, el árbol de Saqqum\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcdlviii{será el alimento del pecador.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcdlix{Como metal fundido hirviendo en las entrañas\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcdlx{como hierve el agua hirviente.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxi{«Atrapadle y arrastradle en medio del Infierno\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxii{y luego arrojad sobre su cabeza el castigo hirviente.»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxiii{«¡Prueba! ¡En verdad, tú eres el poderoso, el noble!\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxiv{Esto es aquello de lo que vosotros dudabais.»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxv{En verdad, los temerosos de Dios estarán en un lugar seguro\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxvi{entre jardines y fuentes\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxvii{vestidos de sedas y brocados, unos frente a otros.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxviii{Así será. Y les emparejaremos con huríes de grandes ojos.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxix{Solicitarán allí todo tipo de frutas y estarán seguros.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxx{Allí no probarán más muerte que la muerte primera y estarán a salvo del castigo del Infierno.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxi{Es un favor que procede de tu Señor. ¡Ese es el triunfo inmenso!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxii{En verdad, lo hemos facilitado en tu lengua para que, quizás así, se dejen amonestar.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxiii{Así pues ¡Espera! Que ellos también están a la espera.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxiv{\basmalahes Ha, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxv{El descenso de la Escritura proviene del Todopoderoso, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxvi{En verdad, en los cielos y la Tierra hay señales para los creyentes.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxvii{Y en vuestra creación y en los animales que Él ha diseminado hay señales para un pueblo que tiene certeza.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxviii{Y en la diferencia entre la noche y el día y en la provisión que Dios ha hecho descender del cielo, con la que da vida a la tierra después de haber estado muerta, y en la variación de los vientos, hay señales para un pueblo que razona.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxix{Esas son las señales de Dios que Nosotros te recitamos con la Verdad. ¿En qué creerán después de Dios y de Sus señales?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxx{¡Ay de todo el que sea un mentiroso pecador!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxi{Que oye las señales de Dios que le son recitadas y persiste en la arrogancia como si no las hubiera oído. ¡Anúnciale un castigo doloroso!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxii{Y que, cuando conoce algo de Nuestras señales, las toma a burla. Esos son quienes tendrán un castigo humillante.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxiii{Tras ellos está el Infierno y no les servirá nada de lo que adquirieron ni los que tomaron por protectores en lugar de Dios. Y tendrán un castigo inmenso.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxiv{¡Esta es una guía! Y quienes no creen en las señales de su Señor tendrán un castigo extremadamente doloroso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxv{Dios es Quien ha puesto a vuestro servicio el mar para que lo surquen los barcos por orden Suya y para que busquéis Su favor y para que, quizás así, seáis agradecidos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxvi{Y ha puesto a vuestro servicio lo que hay en los cielos y en la Tierra. Todo ello procede de Él. En verdad, en ello hay señales para un pueblo que reflexiona.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxvii{Di a los creyentes que perdonen a quienes no tienen esperanza en los días de Dios, en los que Él recompensa a la gente por lo que han hecho.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxviii{Quien obra rectamente obra para su propio beneficio y quien obra mal obra contra sí mismo. Luego, todos regresaréis a vuestro Señor.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxix{En verdad, dimos a los Hijos de Israel la Escritura, el juicio y la profecía y les proveímos de las cosas buenas y les favorecimos por encima de todos los pueblos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcdxc{Y les otorgamos pruebas claras del asunto. Así pues, no tuvieron diferencias hasta después de haber venido a ellos el conocimiento, por envidia entre ellos. En verdad, tu Señor juzgará entre ellos el Día del Levantamiento sobre aquello en lo que tenían diferencias.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcdxci{Luego, te pusimos en la senda del asunto. ¡Síguela pues y no sigas los deseos de quienes no saben!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcii{En verdad, ellos no te podrán beneficiar en nada frente a Dios. Y, en verdad, los opresores se protegen unos a otros y Dios es el protector de quienes Le temen.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcdxciii{Este es un medio para que los seres humanos profundicen su visión de las cosas y una guía y una misericordia para un pueblo que tiene certeza.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcdxciv{¿O creen quienes hacen el mal que les trataremos igual que a quienes creen y obran rectamente y que sus vidas y sus muertes serán iguales? ¡Qué mal juzgan!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcv{Y Dios ha creado los cielos y la Tierra con la Verdad y para recompensar a cada ser por lo que hizo. Y ellos no serán oprimidos.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcvi{¿Has visto a quien toma como dios a sus deseos y pasiones? Dios extravía su conocimiento y sella su oído y su corazón y pone una venda en su vista. Así pues ¿Quién le guiará después de Dios? ¿Es que no reflexionan?\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcvii{Y dicen: «No existe más vida que nuestra vida de este mundo. Morimos y vivimos y sólo el tiempo nos destruye.» pero no tiene conocimiento de esto. Solamente conjeturan.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcviii{Y cuando se les recitan Nuestros versículos claros su único argumento es decir: «¡Traed de vuelta a nuestros padres si sois sinceros!»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcix{Di: «Dios os hace vivir, luego os hace morir, luego os reúne el Día del Levantamiento. No hay duda de ello.» Pero la mayoría de los seres humanos no saben.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmd{Y a Dios pertenece el reino de los cielos y la Tierra y el día en que la Hora tenga lugar, ese día, los falseadores perderán.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdi{Y verás a cada comunidad arrodillada. Cada comunidad será remitida a su libro: «Hoy seréis recompensados por lo que hacíais.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdii{«Este libro Nuestro os dice la Verdad. En verdad, Nosotros escribíamos una copia de lo que vosotros hacíais.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdiii{Y a quienes son creyentes y obran rectamente su Señor les hará entrar en Su misericordia. Ese es el triunfo evidente.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdiv{Pero a quienes no creyeron: «¿No se os recitaron mis versículos y os mostrasteis arrogantes y fuisteis malhechores?»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdv{Y cuando se os decía: «En verdad, la promesa de Dios es verdadera y no hay duda sobre la Hora» decíais: «No sabemos lo que es la Hora. Sólo hacemos conjeturas pero no tenemos certeza.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdvi{Y aparecerá ante ellos el mal que hicieron y les rodeará aquello de lo que se burlaban\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdvii{y se les dirá: «Hoy os olvidamos como vosotros olvidasteis el encuentro de este día y vuestra morada será el Fuego. Y no tendréis quien os auxilie.»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdviii{«Eso es para vosotros por haber tomado a burla las señales de Dios y porque os sedujo la vida mundanal.» Así pues, hoy no serán sacados de él ni les serán aceptadas sus disculpas.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdix{Así pues ¡Alabado sea Dios! Señor de los cielos y Señor de la Tierra. Señor del Universo.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdx{A Él pertenece la supremacía en los cielos y la Tierra y Él es el Todopoderoso, el Sabio.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdxi{\basmalahes Ha, Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdxii{El descenso de la Escritura proviene del Todopoderoso, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdxiii{No hemos creado los cielos y la Tierra ni lo que hay entre ellos excepto con la Verdad y por un plazo determinado. Pero quienes no creen no hacen caso de aquello con lo que se les amonesta.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdxiv{Di: «¿Habéis visto aquello que invocáis en lugar de Dios? Mostradme lo que ellos han creado de la Tierra. ¿Tienen alguna participación en los cielos? Traedme una Escritura anterior a ésta o algún vestigio de conocimiento si es que sois sinceros.»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdxv{Y ¿Quién está más extraviado que quien invoca en lugar de Dios a quien no le responderá hasta el Día del Levantamiento y que no presta atención a sus invocaciones?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdxvi{Y que, cuando los seres humanos sean sacados, serán enemigos para ellos y rechazarán su adoración.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdxvii{Y cuando les son recitados Nuestros versículos claros, aquellos que no creen dicen de la Verdad cuando llega a ellos: «Esto es magia evidente.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdxviii{o dicen: «Él lo ha inventado.» Di: «Si yo lo hubiera inventado no podríais hacer nada por mí ante Dios. Él es Quien mejor sabe lo que difundís sobre él. Él es suficiente testigo entre mí y vosotros y Él es el Perdonador, el Clementísimo con los creyentes.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdxix{Di: «Yo no soy el primer Mensajero que ha venido y no sé lo que se hará conmigo ni con vosotros. Sólo sigo lo que me ha sido revelado y sólo soy un amonestador claro.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdxx{Di: «¿Habéis visto si acaso procede de Dios y vosotros no creéis en él y un testigo de los Hijos de Israel da testimonio de algo semejante y cree en ello mientras vosotros os mostráis altivos ante ello? En verdad, Dios no guía a la gente opresora.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdxxi{Y los que no creen dicen sobre los creyentes: «Si fuera algo bueno no se nos habrían adelantado en ello.» Y, como ellos no son guiados por él, dicen: «Es una vieja mentira.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdxxii{Y, antes de él, la Escritura de Moisés fue una guía y una misericordia y ésta es una Escritura que la confirma en lengua árabe, para amonestar a quienes oprimen y una buena noticia para quienes son buenos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdxxiii{En verdad, quienes dicen: «Nuestro Señor es Dios.» y luego se mantienen firmes, no tendrán que temer y no estarán tristes.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdxxiv{Ellos son la gente del Jardín en el que estarán eternamente en recompensa por lo que hacían.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdxxv{Y hemos encomendado al ser humano que sea bueno con sus padres. Su madre le cargó con esfuerzo y con esfuerzo le dio a luz. Y su embarazo y su lactancia toman treinta meses. Hasta que, al alcanzar la edad adulta y alcanzar la madurez a los cuarenta años, dice: «¡Señor mío! Inspírame para que agradezca los favores con que nos has agraciado a mí y a mis padres y para realizar actos buenos de los que Tú estés satisfecho y haz que mis descendientes sean rectos.» «En verdad, a Ti me vuelvo arrepentido y, en verdad, soy de los sometidos a Ti.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdxxvi{Esos son aquellos de quienes Nosotros aceptamos lo mejor de lo que hacen y perdonamos sus faltas. Y estarán entre la gente del Jardín. Es la promesa verdadera que se les ha hecho.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdxxvii{Y quien diga a sus padres: «¡Uf con vosotros dos! ¿Acaso me prometéis que seré sacado de la tumba, cuando otras generaciones han pasado antes de mí?» Y ambos invocarán la ayuda de Dios: «¡Ay de ti! ¡Cree! ¡En verdad, la promesa de Dios es verdadera!» Y él diga: «¡Eso no son más que mitos de los primitivos!»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdxxviii{Esos son sobre quienes se verificará la palabra dada a las comunidades de genios y de humanos que pasaron antes de ellos. En verdad, ellos serán los perdedores.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdxxix{Para cada persona hay un grado conforme a lo que hizo. Él les recompensará plenamente por sus actos y no serán oprimidos.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdxxx{Y el día en que quienes no creen sean expuestos sobre el Fuego [se les dirá]: «Consumisteis las buenas cosas en vuestra vida mundanal y disfrutasteis de ellas. Así pues, hoy seréis retribuidos con el castigo humillante por haber sido arrogantes en la Tierra sin derecho y por haber sido transgresores.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxi{Y recuerda al hermano de Ad, cuando amonestaba a su pueblo en Al-Ahqaf, y otros amonestadores habían venido antes y vendrían después de él: «No adoréis más que a Dios. En verdad, temo para vosotros el castigo de un día inmenso.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxii{Ellos dijeron: «¿Has venido a nosotros para apartarnos de nuestros dioses? Tráenos, pues, aquello con lo que nos amenazas, si es que eres sincero.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxiii{Él dijo: «En verdad, el conocimiento lo tiene Dios y yo os transmito aquello con lo que he sido enviado, pero veo que vosotros sois un pueblo ignorante.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxiv{Así, cuando lo vieron como una gran nube en el horizonte que avanzaba hacia sus valles, dijeron: «Esa nube nos trae la lluvia.» «No. Es aquello cuya venida pedíais que se apresurase. Un viento que porta un doloroso castigo,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxv{que destruye todas las cosas por orden de su Señor.» Y cuando amaneció no se veían más que sus moradas. «Así es como retribuimos a la gente malhechora.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxvi{Y, ciertamente, les dimos una fuerza que no os hemos dado a vosotros y les dimos oído y vista e intelecto. Pero de nada les sirvió su vista ni su oído ni su intelecto, pues negaron las señales de Dios y se verificó en ellos aquello de lo que se burlaban.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxvii{Y, ciertamente, destruimos las ciudades que había alrededor vuestro, pues les habíamos dado abundantes y variadas señales por si, de esa manera, regresaban.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxviii{¿Por qué no les auxiliaron aquellos que tomaron como dioses en lugar de Dios para obtener cercanía? Al contrario, se apartaron de ellos. Así pues, eran mentiras que ellos inventaron.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxix{Y recuerda cuando te enviamos a un grupo de genios para que escuchasen el Corán y cuando estuvieron presentes, dijeron: «¡Escuchad en silencio!» Y cuando terminó regresaron a su gente.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdxl{Dijeron: «¡Oh, pueblo nuestro! En verdad, hemos escuchado una Escritura que ha sido hecha descender después de Moisés, confirmando lo que había antes de ella. Guía a la Verdad y a un camino recto.»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdxli{«¡Oh, pueblo nuestro! Responded al que llama a Dios y creed en Él. Él os perdonará algunos de vuestros pecados y os protegerá de un castigo doloroso.»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdxlii{Y quien no responda a la llamada de Dios, ni podrá debilitar a Dios en la Tierra ni tendrá otros protectores aparte de Él. Estarán en un extravío evidente.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdxliii{¿Acaso no ven que Dios, que ha creado los cielos y la Tierra y que no ha tenido limitaciones para crearlos, es capaz de dar vida a los muertos? Así es. En verdad, Él tiene poder para hacer cualquier cosa.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdxliv{Y el día que quienes no creen sean expuestos al Fuego: «¿No es esto cierto?» Dirán: «¡Sí! ¡Lo juramos por nuestro Señor!» Dirá Él: «¡Probad, pues, el castigo por no haber creído!»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdxlv{Así pues, se paciente, de la misma manera que fueron pacientes los Mensajeros poseedores de una fuerte determinación, y no quieras apresurar su castigo. El día en que ellos vean lo que se les ha prometido creerán que sólo han permanecido una hora de un día. Es un comunicado. ¿Acaso alguien va a ser destruido aparte de la gente trasgresora?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdxlvi{\basmalahes Él hará que se pierdan las obras de quienes no son creyentes y ponen obstáculos en el camino de Dios.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdxlvii{Y Él ocultará los malos actos y corregirá la situación de quienes son creyentes, hacen buenas obras y creen en lo que se hizo descender sobre Muhammad, que es la Verdad que procede de su Señor.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdxlviii{Eso es porque quienes no creen siguen lo que es falso y quienes creen siguen la Verdad que viene de su Señor. Así es como Dios explica a los seres humanos su situación.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdxlix{Cuando os encontréis [en batalla] con los que no creen, golpeadles en los cuellos hasta que les hayáis diezmado y apresadles atándoles fuertemente. Luego, o bien otorgadles la libertad o bien pedid un rescate por ellos, para que termine la carga de la guerra. Así sea. Y si Dios hubiera querido Él mismo les habría castigado, pero lo hace para poner a prueba a algunos de vosotros por medio de otros. Y Dios no dejará que se pierdan las obras de quienes han sido matados en la senda de Dios.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdl{Él les guiará inmediatamente y arreglará su situación\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdli{y les hará entrar en el Jardín que les había descrito.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdlii{¡Oh, creyentes! ¡Si auxiliáis a Dios, Él os auxiliará y consolidará vuestros pasos!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdliii{Y quienes no creen estarán perdidos y sus obras habrán sido en vano.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdliv{Eso es porque rechazaron lo que Dios hizo descender y Él ha invalidado sus obras.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdlv{¿Acaso no han viajado por la Tierra y han observado cuál fue el final de quienes les precedieron? Dios les destruyó y los que no creen tendrán un fin similar.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdlvi{Eso es porque Dios es el protector de quienes son creyentes y los que no creen no tienen quien les proteja.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdlvii{En verdad, Dios hará entrar a quienes creen y realizan buenas obras en Jardines de cuyas profundidades brotan ríos y quienes no creen disfrutan y comen como come el ganado y el lugar para ellos será el Fuego.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdlviii{¡Cuántas ciudades más poderosas que tu ciudad, la cual te ha expulsado, hemos destruido y no tuvieron quien les auxiliase!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdlix{¿Acaso quien se basa sobre una prueba clara que procede de su Señor es como aquel a quien sus malas acciones le parecen buenas y sigue sus deseos y pasiones?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdlx{Descripción del Jardín que ha sido prometido a los temerosos de Dios: En él hay ríos de agua fresca e incorruptible, ríos de leche cuyo sabor no varía, ríos de vino delicioso para quienes lo beben y ríos de miel pura. En él habrá para ellos todo tipo de frutos y el perdón de su Señor. ¿Serán ellos como quien estará eternamente en el Fuego y recibirá para beber agua hirviente que le destrozará los intestinos?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdlxi{Y, entre ellos, algunos te escuchan, pero cuando abandonan tu presencia dicen a quienes les ha sido dado el conocimiento: «¿Qué es lo que acaba de decir?» Esos son a quienes Dios ha puesto un sello sobre sus corazones y que siguen sus propios deseos y pasiones.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdlxii{Y a quienes siguen la buena guía, Él les incrementa la guía y les da temor de Dios.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdlxiii{¿Acaso esperan otra cosa excepto que la Hora llegue a ellos por sorpresa? Ciertamente, sus señales ya han venido y de nada les servirá recordar cuando llegue a ellos.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdlxiv{Así pues, sabe que no hay más dios que Dios y pide el perdón de tus pecados y el de los creyentes y las creyentes. Y Dios conoce vuestros cambios de estado y aquello en lo que sois firmes y estables.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdlxv{Quienes son creyentes dicen: «¿Por qué no se hará descender una sura?» Pero cuando se hace descender una sura en la que se menciona el combate claramente, ves a quienes tienen una enfermedad en su corazón que te miran con la mirada de quien está cerca de la muerte. Mejor sería para ellos\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdlxvi{obediencia y nobles palabras. Así pues, una vez resuelto el asunto, si permanecen leales a Dios será mejor para ellos.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdlxvii{¿Habéis tenido en cuenta que si dais la espalda causaréis corrupción en la Tierra y cortaréis los lazos de sangre?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdlxviii{Esos son aquellos a quienes Dios ha maldecido, por lo cual les ha dejado sordos y ciegos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdlxix{¿Es que no meditan en el Corán? ¿O tienen candados en sus corazones?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdlxx{En verdad, a quienes dan la espalda después de que les ha sido explicada claramente la guía, Satanás les ha seducido y les ha dado vanas esperanzas.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxi{Eso es por decir a quienes aborrecen lo que Dios hace descender: «Os obedeceremos en algunos asuntos.» Pero Dios conoce sus secretos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxii{¿Qué pasará cuando los ángeles les golpeen sus rostros y sus espaldas?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxiii{«Eso por seguir lo que disgusta a Dios y aborrecer lo que a Él le satisface.» Así pues, Él frustrará sus obras.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxiv{¿O creían quienes tienen una enfermedad en sus corazones que Dios no iba a sacara a la luz el profundo odio que ellos tienen?\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxv{Y, si Nosotros quisiéramos, te los haríamos ver para que les reconocieses por sus rasgos, pero les reconocerás por su manera de hablar. Dios conoce vuestros actos.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxvi{Y, ciertamente, os pondremos a prueba, hasta saber quiénes son los combatientes esforzados de entre vosotros y los pacientes y pondremos a prueba lo que se dice de vosotros.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxvii{En verdad, quienes no creen y ponen trabas en el camino de Dios y desafían al Mensajero después de que les ha sido claramente explicada la guía, no perjudican a Dios en nada y Él pronto frustrará sus obras.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxviii{¡Oh, creyentes! ¡Obedeced a Dios y obedeced al Mensajero y no hagáis que vuestras obras no valgan nada!\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxix{En verdad, a quienes no creen y ponen trabas en el camino de Dios y luego mueren sin ser creyentes, Dios no les perdonará.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxx{Así pues, no flaqueéis invitando a la paz, pues vosotros sois los vencedores y Dios está con vosotros y Él no reducirá la recompensa por vuestras obras.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxi{En verdad, la vida de este mundo es juego y vanidad y, si creéis y sois temerosos de Dios, Él os dará vuestra recompensa y no os pedirá vuestros bienes.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxii{Si os los pidiera y os presionara os mostraríais avariciosos y provocaría vuestro odio.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxiii{Se os invita a contribuirán a la causa de Dios, pero algunos de vosotros os mostráis avaros. Y quien es avaro, en verdad, se perjudica a sí mismo con su avaricia, pues, ciertamente, Dios es rico por Sí mismo y vosotros sois los necesitados. Y si dais la espalda, Él os sustituirá por otro pueblo que no será como vosotros.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxiv{\basmalahes En verdad, [Muhammad] te hemos proporcionado una victoria evidente\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxv{para que Dios te disculpe de los cargos anteriores y de los últimos y para completar Su favor sobre ti y guiarte a un camino recto.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxvi{Y Dios te auxiliará con un auxilio poderoso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxvii{Él es Quien hizo descender la tranquilidad en el corazón de los creyentes para que añadiesen fe a su fe. A Dios pertenecen los ejércitos de los cielos y de la Tierra y Dios es conocedor, sabio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxviii{Y para que Él haga entrar a los creyentes y a las creyentes en Jardines de cuyas profundidades surgen los ríos, en los que estarán eternamente, y para perdonar sus pecados. Y esto es ante Dios una victoria inmensa.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxix{Y para que Él castigue a los hipócritas y a las hipócritas y a los idólatras y a las idólatras, que tienen mala opinión de Dios. Sobre ellos caerá la rueda del mal. Y Dios estará enojado con ellos y les maldecirá y les preparará el Infierno. ¡Qué mal destino!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdxc{Y a Dios pertenecen los ejércitos de los cielos y de la Tierra y Dios es todopoderoso, sabio.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdxci{En verdad, te hemos enviado como un testigo, uno que porta la buena nueva y un amonestador\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdxcii{para que creáis en Dios y en Su mensajero y para que Le apoyéis y Le reverenciéis y Le glorifiquéis mañana y tarde.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdxciii{En verdad, quienes te juran lealtad, a Dios le juran lealtad. La mano de Dios está sobre sus manos. Así pues, quien rompe su juramento lo rompe en su propio detrimento y a quien es fiel a la promesa que ha hecho a Dios, Él pronto le otorgará una enorme recompensa.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdxciv{Los beduinos que se quedaron atrás te dirán: «Nuestros bienes y nuestras familias nos mantuvieron ocupados, así pues, pide perdón para nosotros.» Dicen con sus lenguas lo que no hay en sus corazones. Di: «¿Quién tiene algún poder ante Dios si Él quisiera perjudicaros o quisiera beneficiaros? Pero Dios está bien informado de lo que hacéis.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdxcv{Pensasteis que el Mensajero y los creyentes no regresarían a sus familias jamás. Eso es lo que el demonio os hizo creer en vuestros corazones. Tuvisteis un mal pensamiento. Fuisteis una gente corruptora.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdxcvi{Quien no crea en Dios y en Su Mensajero sepa que hemos preparado un fuego llameante para los que no creen.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdxcvii{A Dios pertenece el reino de los cielos y de la Tierra. Perdona a quien Él quiere y castiga a quien Él quiere. Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdxcviii{Los que se quedaron atrás dirán cuando salgáis a capturar el botín: «¡Dejad que os sigamos!» Quisieran cambiar la palabra de Dios. Di: «¡Jamás nos seguiréis! Ya lo dijo así Dios anteriormente.» Entonces dirán: «¡Tenéis envidia de nosotros!» Pero es que poseen muy poco entendimiento.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdxcix{Di a los beduinos que se quedaron atrás: «Pronto se os convocará contra un pueblo poseedor de una gran fuerza. Les combatiréis si no se hacen musulmanes. Así pues, si obedecéis, Dios os dará una buena recompensa, pero si dais la espalda, como disteis la espalda anteriormente, os castigará con un castigo doloroso.»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdc{No tienen obligación de salir a combatir los ciegos ni los cojos ni los enfermos. Y a quienes obedezcan a Dios y a Su Mensajero, Él les hará entrar en Jardines de cuyas profundidades brotan los ríos, y a quienes den la espalda Él les castigará con un castigo doloroso.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdci{Ciertamente, Dios quedó satisfecho de los creyentes cuando te juraron lealtad bajo el árbol, pues sabía lo que había en sus corazones. Por ello, hizo descender la tranquilidad sobre ellos y les favoreció con una victoria cercana\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcii{y con la captura de abundantes botines. Y Dios es todopoderoso, sabio.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdciii{Dios os ha prometido que obtendréis abundantes botines y por eso Él ha acelerado éste y ha apartado de vosotros las manos de la gente. Y para que sea una señal para los creyentes y para guiaros a un camino recto.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdciv{Y otros que todavía no habéis obtenido pero que Dios tiene bajo control. Y Dios tiene poder sobre todas las cosas.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcv{Y, si los que no creen os combaten, darán la espalda. Luego, no encontrarán quien les proteja ni quien les auxilie.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcvi{Es la costumbre de Dios, que también existió en el pasado. Y no encontrarás cambios en la costumbre de Dios.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcvii{Él es Quien ha apartado sus manos de vosotros y vuestras manos de ellos en el interior de La Meca, después de daros la victoria sobre ellos. Y Dios posee una profunda visión de lo que hacéis.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcviii{Ellos son quienes no creyeron y os impidieron acceder a la Mezquita Sagrada y que vuestras ofrendas llegasen al lugar del sacrificio. Y si no hubiese sido por los hombres creyentes y las mujeres creyentes que vosotros no conocíais, a los que habríais podido matar sin querer y que habría hecho que fueseis censurados… Para que Dios haga entrar en Su misericordia a quien Él quiera. Si ellos hubiesen estado separados, habríamos castigado, con seguridad, a quienes de ellos no creían, con un castigo doloroso\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcix{cuando el corazón de los no creyentes se llenó de furia, la furia propia de la ignorancia pagana, y Dios hizo descender Su tranquilidad sobre Su Mensajero y sobre los creyentes y les impuso la palabra del temor de Dios, pues ellos y sus familias eran quienes más derecho tenían a ella. Y Dios es Quien mejor conoce todas las cosas.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdcx{Ciertamente, Dios confirmó a Su Mensajero la visión verdadera: «Entraréis en la Mezquita Sagrada, si Dios quiere, seguros, con vuestras cabezas afeitadas o el pelo cortado y sin temor.» Y Él conoce lo que vosotros no conocéis y os dará, aparte de esto, una victoria próxima.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcxi{Él es Quien ha enviado a Su Mensajero con la guía y con la religión verdadera para que prevalezca sobre todas las religiones. Y Dios es suficiente como testigo.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcxii{Muhammad el Mensajero de Dios y los que con él están son duros con los que tratan de ocultar la Verdad y misericordiosos entre ellos. Les verás inclinándose y prosternándose, buscando el favor de Dios y Su satisfacción. En sus rostros se perciben las señales por efecto de su prosternación. Así están descritos en la Torá y en el Evangelio. Son como un sembrado en el que germinan sus semillas, crecen y se ensanchan y fortalecen en su tallo, sorprendiendo a los sembradores. Y con ello Él enoja a los que no creen. Y Dios ha prometido a quienes de ellos crean y realicen buenas obras, perdón y una recompensa inmensa.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdcxiii{\basmalahes ¡Oh, creyentes! Nos pongáis nada por delante de Dios y Su Mensajero y sed temerosos. En verdad, Dios todo lo oye, todo lo sabe.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcxiv{¡Oh, creyentes! No levantéis vuestras voces sobre la voz del Mensajero y no le habléis a gritos como os habláis los unos a los otros, no sea que vuestras obras se malogren sin que os deis cuenta.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcxv{En verdad, quienes bajan su voz ante el Mensajero de Dios son a quienes Dios ha elegido sus corazones para el temor. Tendrán perdón y una recompensa inmensa.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcxvi{En verdad, la mayoría de quienes te llaman desde fuera de las habitaciones privadas no razonan.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcxvii{Y si tuviesen paciencia hasta que salgas ante ellos sería mejor para ellos. Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdcxviii{¡Oh, creyentes! Si viene a vosotros un trasgresor con una noticia ¡Verificadla! No sea que perjudiquéis a alguien por ignorancia y tengáis que arrepentiros de lo que habéis hecho.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdcxix{Y sabed que el Mensajero de Dios está entre vosotros. Si os obedeciera en muchas de las cosas sufriríais. Pero Dios os ha hecho amar la fe y la ha adornado en vuestros corazones y os ha hecho odiar la falta de fe, la trasgresión y la desobediencia. Esos son los bien guiados.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdcxx{Un favor y una merced de Dios. Y Dios es Quien todo lo conoce, es sabio.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxi{Si dos grupos de creyentes pelean entre sí, poned paz entre ellos. Pero si uno de ellos oprime y maltrata al otro, combatid contra el que agrede hasta que regrese a la orden de Dios. Y si regresa, entonces poned paz entre ellos con justicia y equidad. En verdad, Dios ama a quienes son ecuánimes.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxii{En verdad, los creyentes son hermanos, así pues, poned paz entre vuestros hermanos, Y sed temerosos de Dios para que, quizás así, se tenga misericordia de vosotros.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxiii{¡Oh, creyentes! ¡Que un pueblo no se burle de otro, no vayan a ser mejor que ellos! Ni una mujer de otra mujer, no vaya a ser mejor que ella. Y no os difaméis unos a otros ni os insultéis con motes. ¡Qué mal ser llamado «trasgresor» después de haber recibido la fe! ¡Y quienes no se arrepienten, esos son los opresores!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxiv{¡Oh, creyentes! ¡Absteneos mucho de las dudas! En verdad, algunas dudas son pecado. Y no os espiéis ni os difaméis unos a otros. ¿Acaso alguno de vosotros quiere comer la carne de su hermano muerto? ¡Lo aborreceríais! Y sed temerosos de Dios. En verdad, Dios acepta el arrepentimiento, es misericordiosísimo con los creyentes.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxv{¡Oh, gentes! En verdad, os hemos creado de un macho y una hembra y hemos hecho de vosotros pueblos y tribus para que os conozcáis. En verdad, el más noble de vosotros ante Dios es quien posee mayor temor de Dios. En verdad, Dios todo lo conoce, está bien informado.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxvi{Los beduinos dicen: «¡Creemos!» Di: «No creéis. Mejor decid: ‘Nos hemos hecho musulmanes’ pues todavía no ha entrado la fe en vuestros corazones.» Y si obedecéis a Dios y a Su Mensajero, Él no os disminuirá en nada la recompensa por vuestras obras. En verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxvii{En verdad, los creyentes son aquellos que tienen fe en Dios y en Su Mensajero. Luego, no tienen dudas y combaten con sus bienes y sus personas en la causa de Dios. Esos son los sinceros.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxviii{Di: «¿Vais a enseñar a Dios vuestra religión, cuando Dios conoce los que hay en los cielos y en la Tierra?» Dios tiene conocimiento de todas las cosas.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxix{Creen que te han hecho un favor por haber aceptado el Islam. Di: «No penséis que me habéis hecho un favor abrazando el Islam. Es Dios Quien os ha hecho un favor a vosotros guiándoos a la fe, si es que sois sinceros.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxx{En verdad, Dios conoce lo que está oculto a los sentidos en los cielos y en la Tierra y Dios ve claramente lo que hacéis.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxi{\basmalahes Qaf. Juro por el glorioso Corán.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxii{Pero ellos se sorprenden de que venga a ellos un amonestador que procede de ellos mismos y por eso, quienes no creen, dicen: «¡Esto es algo sorprendente!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxiii{¿Acaso cuando estemos muertos y seamos polvo…? Ese es un retorno lejano.»\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxiv{Ciertamente, Nosotros sabemos lo que la Tierra disminuye de ellos. Y junto a Nosotros hay una Escritura protectora.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxv{Pero desmienten la Verdad cuando llega a ellos, así que se encuentran en un estado de confusión.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxvi{¿Acaso no observan cómo hemos construido y adornado el cielo que hay sobre ellos y que no hay fallos en él?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxvii{¿Y que hemos expandido la Tierra y fijado en ella firmes montañas y que hemos hecho crecer en ella una pareja de cada planta que alegra la vista,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxviii{como un medio de profundizar la visión y como un recuerdo para todo siervo contrito?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxix{Y hemos hecho descender del cielo agua bendecida con la que hemos hecho brotar jardines y las semillas de las cosechas\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdcxl{y esbeltas palmeras datileras de racimos apretados.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdcxli{Provisión para los siervos. Y con ella damos vida a una tierra muerta. Así mismo haremos salir a los muertos de sus tumbas.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlii{Antes de ellos desmintió el pueblo de Noé y la gente de Al-Rass y Thamud\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdcxliii{y de Ad y el Faraón y los hermanos de Lot\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdcxliv{y la gente de Al-Aykah y el pueblo de Tuba. Todos ellos desmintieron a los Mensajeros y Mi promesa se verificó.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlv{¿Acaso Nos agotamos en la primera creación? Pero ellos dudan de una nueva creación.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlvi{Ciertamente, Nosotros hemos creado al ser humano y sabemos lo que le susurra su alma. Y Nosotros estamos más cerca de él que su vena yugular.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlvii{(Y recuerda) Cuando los dos encargados de recoger recojan, sentados a derecha e izquierda.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlviii{Él no pronunciará una sola palabra sin que a su lado haya un protector atento.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlix{Y llegará la embriaguez de la muerte con la Verdad: «Esto es aquello que querías evitar.»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdcl{Y será tocada la trompeta: «¡Este es el día prometido!»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcli{Y con cada alma llegará un conductor y un testigo.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdclii{«Ciertamente, no prestabas atención a esto. Así pues, hemos apartado de ti tu velo y hoy tu visión es aguda.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcliii{Y su compañero dirá: «Esto es lo que tengo preparado.»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcliv{«¡Arrojad al Infierno a todo el que negaba la Verdad con obstinación,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdclv{enemigo acérrimo del bien, trasgresor y escéptico! ¡Que ponía otro dios junto a Dios! ¡Arrojadle\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdclvi{al severo castigo!»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdclvii{Su compañero dirá: «¡Señor nuestro! No soy yo quien le hizo un tirano prepotente, él ya estaba en un gran extravío.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdclviii{Dirá Él: «¡No discutáis en Mi presencia! ¡Ya os advertí previamente!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdclix{¡Lo que Yo digo es inalterable! ¡Yo no soy opresor con los siervos!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdclx{(Recuerda) El día que Nosotros le digamos al Infierno: «¿Estás ya lleno?» y él dirá: «¿Aún hay más?»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdclxi{Y sea aproximado el Jardín para los temerosos de Dios a un lugar no alejado.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdclxii{«Esto es lo que os fue prometido para todo el que se volviera a Dios con frecuencia y fuese cuidadoso.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdclxiii{Para quien temiese al Clementísimo en secreto y viniese con un corazón contrito.»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdclxiv{«¡Entrad en él en paz! ¡Éste es el Día de la Eternidad!»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdclxv{Allí habrá para ellos lo que deseen y junto a Nosotros más aun.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdclxvi{¡Cuántas generaciones hemos destruido antes de ellos que fueron más fuertes que ellos y que construyeron grandes ciudades! ¿Hay manera de escapar?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdclxvii{En verdad, en ello hay un recuerdo para quien tenga corazón o para quien presta oído y está atento.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdclxviii{Y, ciertamente, hemos creado los cielos y la Tierra y lo que hay entre ambos en seis días, sin que Nos tocase la fatiga.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdclxix{Así pues, se paciente con lo que dicen y glorifica con alabanzas a tu Señor antes de que salga el Sol y antes de que se ponga.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdclxx{Y glorifícale parte de la noche y después de las prosternaciones.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxi{Y permaneced atentos al día en que un pregonero pregone desde un lugar cercano.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxii{Día en el que escucharán el Grito con la Verdad. Ese será el día de la salida de las tumbas.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxiii{En verdad, Nosotros damos la vida y damos la muerte y Nosotros somos el destino final\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxiv{el día en que la tierra se abra sobre ellos y acudan rápidos. Esa reunión es algo fácil para Nosotros.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxv{Nosotros somos Quienes mejor conocemos lo que dicen. Tú no eres alguien que venga a obligarles. Así pues, amonesta con el Corán a quien tema Mi amenaza.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxvi{\basmalahes Juro por los vientos huracanados\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxvii{y por las nubes cargadas de lluvia\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxviii{y por las naves que se deslizan con facilidad\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxix{y por los ángeles que distribuyen las órdenes.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxx{En verdad lo que se os ha prometido es cierto\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxi{y, en verdad, la recompensa tendrá lugar.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxii{Juro por los cielos llenos de adornos\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxiii{que vosotros mantenéis opiniones discrepantes.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxiv{Quienes discrepan, discrepan de él.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxv{¡Que mueran los mentirosos!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxvi{Esos que están en la ignorancia y el descuido\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxvii{preguntan: «¿Cuándo será el Día de la Recompensa?»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxviii{Será el día en que ellos se quemarán en el Fuego:\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxix{«¡Probad vuestro tormento! ¡Esto es lo que pedíais con premura!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdcxc{En verdad, los temerosos de Dios estarán en Jardines y Fuentes,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdcxci{recibiendo lo que su Señor les dé. En verdad, antes de ello, eran de los que hacían el bien.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcii{Eran de los que dormían poco durante la noche\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcxciii{y antes del amanecer pedían perdón\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcxciv{y daban de sus bienes a los mendigos y a los necesitados su derecho.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcv{Y en la Tierra hay señales para quienes tienen certeza,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcvi{y en vosotros mismos. ¿Cómo es que no las veis?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcvii{Y en el cielo está vuestra provisión y lo que os ha sido prometido.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcviii{Así pues, juro por el Señor del cielo y la Tierra, que esto es tan verdad como que vosotros habláis.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcix{¿Ha llegado a vosotros la historia de los nobles invitados de Abraham?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcc{Cuando llegaron donde él estaba y dijeron: «Paz!» Él dijo: «¡Paz! Sois gente desconocida.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcci{Se fue discretamente hacia donde estaba su familia y regresó con un cordero bien cebado\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdccii{y lo puso cerca de ellos. Les dijo: «¿Es que no coméis?»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcciii{Y sintió miedo de ellos. Ellos dijeron: «No temas» y le dieron la buena nueva de un hijo sabio.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcciv{Entonces su esposa vino gritando y golpeando con fuerza su rostro y dijo: «¡Soy una anciana estéril!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdccv{Ellos dijeron: «Así lo ha dicho tu Señor. En verdad, Él es el Más sabio, Quien todo lo conoce.»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdccvi{Él dijo: «¿Cuál es vuestra importante misión? ¡Oh, Mensajeros!»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdccvii{Ellos dijeron: «En verdad, hemos sido enviados a un pueblo de malhechores\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdccviii{para que lancemos sobre ellos piedras de barro\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdccix{marcadas por tu Señor para los transgresores.»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdccx{E hicimos salir a los creyentes que en ella había\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdccxi{y no hayamos en ella más que una casa de musulmanes.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdccxii{Y dejamos en ella una señal para quienes temen el castigo doloroso.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdccxiii{Y en Moisés, cuando le enviamos al Faraón con una autoridad evidente.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdccxiv{Pero se dio la vuelta, seguro de su poder, y dijo: «¡Un mago o un demente!»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdccxv{Así pues, atrapamos a él y a su ejército y les arrojamos al mar, pues eran censurables.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdccxvi{Y en Ad, cuando enviamos sobre ellos el viento arrasador,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdccxvii{que dejó todo aquello sobre lo que cayó como huesos polvorientos.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdccxviii{Y en Tamud, cuando se les dijo: «¡Disfrutad por un tiempo!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdccxix{Pero desafiaron la orden de su Señor y les alcanzó el rayo mientras lo miraban,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdccxx{sin poder ni levantarse ni ser auxiliados.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxi{Y, anteriormente, el pueblo de Noé. En verdad, fueron un pueblo de trasgresores.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxii{Y hemos construido el cielo con un poder inigualable y, en verdad, Nosotros lo poseemos en una medida incomparable.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxiii{Y hemos expandido la Tierra. ¡Qué bendición de Expandidor!\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxiv{Y hemos creado todas las cosas por parejas. Quizás así reflexionéis.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxv{Así pues, escapad hacia Dios. En verdad, yo soy para vosotros un amonestador claro de Su parte.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxvi{Así pues, no pongáis otro dios junto a Dios. En verdad, yo soy para vosotros un amonestador claro de Su parte.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxvii{De la misma manera, no vino ningún Mensajero a quienes existieron antes de ellos sin que dijesen: «¡Un mago o un demente!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxviii{¿Es que se lo han trasmitido unos otros? No. Lo que sucede es que son gente rebelde.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxix{Así pues, ¡Apártate de ellos y no serás censurado!\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxx{¡Y recuerda! pues, en verdad, el recuerdo beneficia a los creyentes.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxi{Y no he creado a los genios y los humanos excepto para que Me adoren.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxii{No quiero de ellos ninguna provisión ni quiero que Me alimenten.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxiii{En verdad, Dios es Quien otorga la provisión con abundancia, el Poseedor de la fuerza, el Firme.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxiv{Así pues, quienes oprimieron, en verdad, recibirán su parte, igual que la recibirán sus compañeros. ¡Que no quieran apresurarlo!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxv{¡Ay de quienes no creyeron, ese día que les ha sido prometido!\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxvi{\basmalahes Juro por el monte\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxvii{y por la Escritura que fue escrita\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxviii{en un pergamino desenrollado\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxix{y por la Casa siempre frecuentada\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdccxl{y por la bóveda elevada\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdccxli{y por el mar rebosante:\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlii{En verdad, el castigo de tu Señor tendrá lugar.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdccxliii{Nada podrá impedirlo.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdccxliv{El día en el que el cielo se agite violentamente\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlv{y las montañas se pongan en movimiento\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlvi{¡Ay! ese día, de los desmentidores!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlvii{¡Aquellos que se entretienen jugando con palabras vanas!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlviii{El día en que sean arrastrados al fuego del Infierno:\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlix{«¡He ahí el Fuego que vosotros desmentíais!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdccl{«¿Es esto magia o es que vosotros no veis?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdccli{¡Arded en él! Y tengáis paciencia o no tengáis paciencia os dará igual. En verdad, seréis recompensados conforme a lo que hacíais.»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcclii{En verdad, los temerosos de Dios estarán en Jardines cómodamente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdccliii{Felices por lo que les ha dado su Señor y porque su Señor les ha librado del castigo del Infierno:\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdccliv{«¡Comed y bebed a placer por lo que hacíais!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdcclv{Estarán reclinados en divanes alineados y les emparejaremos con huríes de grandes ojos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcclvi{Juntaremos a quienes sean creyentes y a sus descendientes que les hayan seguido en la fe. No disminuiremos en nada (la recompensa de) sus acciones. Cada cual será rehén de lo que haya realizado.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcclvii{Les facilitaremos todas las frutas y la carne que deseen.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcclviii{Allí se ofrecerán unos a otros una copa cuyo contenido no les incitará a las palabras vanas ni pecaminosas.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcclix{Circularán alrededor de ellos jóvenes como perlas guardadas.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcclx{Se volverán unos a otros preguntándose.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxi{Dirán: «En verdad, estábamos antes con nuestras familias con un temor reverencial\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxii{y Dios nos agració y nos protegió del castigo del viento abrasador.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxiii{En verdad, antes siempre le suplicábamos. En verdad, Él es el Benigno, el Misericordiosísimo con los creyentes.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxiv{Así pues ¡Amonesta! Por la clemencia de tu Señor no eres ni un adivino ni un loco.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxv{Pero dicen: «¡Es un poeta! ¡Esperaremos a que le llegue la conmoción de la muerte!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxvi{Di: «¡Esperad que yo también esperare con vosotros!»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxvii{¿Es su propio intelecto quien les ordena esto o es que son gente rebelde?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxviii{O dicen: «Él lo ha inventado.» Pero lo que sucede en que no creen.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxix{¡Que traigan un discurso semejante si es que son sinceros!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxx{¿Fueron ellos creados de la nada o son sus propios creadores?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxi{¿O han creado ellos los cielos y la Tierra? No. Lo que sucede es que no tienen certeza.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxii{¿Acaso poseen ellos los tesoros de tu Señor o poseen el control de todo?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxiii{¿O acaso poseen una escalera con la que escuchar? Pues, que quien lo haya escuchado traiga una prueba clara.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxiv{¿O para Él serán las hijas y para vosotros los hijos?\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxv{¿O acaso les pides una recompensa que les abruma con su peso?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxvi{¿O tienen acceso al mundo oculto a los sentidos y toman nota?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxvii{¿O es que quieren preparar una trampa? Pues, los que tratan de ocultar la Verdad son quienes caen en la trampa.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxviii{¿O tienen ellos otro dios distinto a Dios? ¡Glorificado sea Dios por encima de lo que Le asocian!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxix{Y si vieran un trozo del cielo cayendo, dirían: «¡Son cúmulos nubosos!»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxx{Así pues, ¡Déjales, hasta que encuentren su día, en el cual serán destruidos!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxi{El día en el que sus trampas no les servirán de nada y en el que no serán auxiliados.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxii{Y, en verdad, quienes fueron opresores sufrirán otros castigos, pero la mayoría de ellos desconocen.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxiii{Espera pacientemente el juicio de tu Señor, pues, en verdad, tú estás ante Nuestros ojos. Y glorifica con alabanzas a tu Señor cuando te levantes\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxiv{y glorifícale parte de la noche y al ocultarse las estrellas.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxv{\basmalahes Juro por la estrella cuando se oculta.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxvi{Vuestro compañero no se extravía ni se equivoca\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxvii{y no habla conforme a su deseo,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxviii{sino que es una inspiración que se le revela,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxix{que se la ha dado a conocer el poseedor de una fuerza extraordinaria,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdccxc{dueño de una gran inteligencia, que se manifestó\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdccxci{en el horizonte más elevado.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcii{Luego, él se acercó hasta estar muy próximo,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdccxciii{hasta estar a una distancia de dos arcos o más cerca.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdccxciv{Y Él reveló a Su siervo lo que le reveló.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcv{El corazón no ha mentido en lo que vio.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcvi{¿Discutiréis, pues, con él sobre lo que vio?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcvii{Y, ciertamente, él lo vio en otra ocasión\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcviii{junto al Loto del Límite,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcix{cerca del cual está el Jardín de la Morada,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdccc{cuando cubrió el Loto aquello que cubrió.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdccci{No se desvió la mirada ni se equivocó.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcccii{Ciertamente, vio algunas de las grandes señales de su Señor.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdccciii{«¿Habéis visto a Al-Lat y a Uzza\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdccciv{y a Manat, la tercera de ellas?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcccv{¿Acaso son para vosotros los varones y para Él las hembras?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcccvi{¡Eso sería entonces un reparto injusto!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcccvii{Ellas no son más que nombres que vosotros y vuestros padres habéis puesto. Dios no ha hecho descender para ellas ninguna autoridad.» Ellos sólo siguen conjeturas y los deseos de su ego aunque, ciertamente, ha llegado a ellos la guía de su Señor.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcccviii{¿Acaso obtendrá el ser humano lo que desea?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcccix{A Dios pertenecen la otra vida y la primera.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcccx{Y ¿Cuántos ángeles hay en los cielos de cuya intercesión no podrán beneficiarse en absoluto excepto después de que Dios de su permiso para quien Él quiera y del que esté satisfecho?\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxi{En verdad, quienes no creen en la otra vida dan a los ángeles nombres femeninos\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxii{aunque no tienen ningún conocimiento de ello. Sólo siguen conjeturas y, en verdad, las conjeturas no sirven de nada frente a la Verdad.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxiii{Así pues, apártate de quienes se alejan de Nuestro recuerdo y no desea más que la vida mundanal.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxiv{Éste es el límite del conocimiento que ellos pueden alcanzar. En verdad, tu Señor es Quien mejor conoce a quien se extravía de su camino y es Quien mejor conoce a quien se guía.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxv{Y a Dios pertenece lo que hay en los cielos y en la Tierra, para retribuir a quienes hacen el mal por lo que han hecho y recompensar a quienes hacen el bien con lo mejor.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxvi{Aquellos que se abstienen de los grandes pecados e indecencias, excepto los pecados pequeños. En verdad, tu Señor es muy perdonador. Él es Quien mejor os conoce desde que os creó de la tierra y desde que erais fetos en los vientres de vuestras madres. Así pues, no os vanagloriéis. Él es Quien mejor conoce a quienes son temerosos de Dios.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxvii{¿Has visto a quien da la espalda,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxviii{da poco y es tacaño?\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxix{¿Acaso posee el conocimiento de lo que está oculto a los sentidos y ve?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxx{¿O no ha sido informado de lo que hay en los escritos de Moisés\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxi{y de Abraham, el cual fue leal,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxii{sobre que nadie cargará con la carga de los pecados de otro\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxiii{y que nada pertenece a la persona excepto aquello por lo que se esfuerza\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxiv{y que pronto se verán las consecuencias de su esfuerzo,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxv{que, luego, será recompensado por ello con una recompensa completa\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxvi{y que el destino final es hacia tu Señor\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxvii{y que es Él quien te hace reír y llorar\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxviii{y que es Él Quien da la muerte y da la vida?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxix{Y que es Él Quien ha creado las parejas, el macho y la hembra,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxx{de una gota cuando se eyacula,\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxi{y que sobre Él recae la segunda creación,\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxii{y que Él es Quien da la riqueza y la mantiene.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxiii{Y que Él es el Señor de Sirio\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxiv{y que Él es Quien aniquiló a los primeros Ad\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxv{y a Zamud sin dejar a ninguno\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxvi{y, anteriormente, al pueblo de Noé? -En verdad, ellos fueron los más opresores y los más rebeldes-\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxvii{Y a aquellos que destruyó poniendo lo de arriba abajo\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxviii{y cubriéndolas con lo que las cubrió.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxix{¿Cuál, pues, de las mercedes de vuestro Señor pondréis en duda?\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxl{Éste es un amonestador como los amonestadores primeros.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxli{Se aproxima lo inminente.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlii{Nadie, aparte de Dios, puede librar de ello.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxliii{¿Acaso os sorprenderéis de estas palabras?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxliv{¿Y reiréis y no lloraréis,\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlv{permaneciendo distraídos?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlvi{Así pues, ¡Prosternaos y adorad a Dios!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlvii{\basmalahes La Hora está muy cerca y la Luna se ha partido.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlviii{Y si ven una señal se alejan y dicen: «¡Magia! ¡Continuamente!»\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlix{Y desmienten y siguen sus deseos. Pero todo asunto está establecido\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcccl{y, ciertamente, han venido a ellos noticias con amonestación,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcccli{con una sabiduría absoluta. Pero la amonestación no les beneficia.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdccclii{Así pues, apártate de ellos. El día en el que el pregonero convoque hacia algo horroroso,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdcccliii{con la mirada humillada, saldrán de las tumbas como si fueran langostas dispersas,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdcccliv{acudiendo apresuradamente hacia quien les convoca. Los que no creían dirán: «Este es un día difícil.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdccclv{El pueblo de Noé desmintió antes de ellos. Desmintieron a Nuestro siervo y dijeron: «¡Es un loco y los espíritus le torturan!»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdccclvi{Así pues, él suplicó a su Señor: «¡En verdad, he fracasado! ¡Toma Tú la revancha!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdccclvii{Así que, abrimos las puertas del cielo con un agua torrencial\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdccclviii{e hicimos que brotasen de la Tierra fuentes y se juntaron las aguas en la medida decretada\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdccclix{y le subimos sobre una armazón de tablas y clavos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdccclx{que navegó bajo Nuestra mirada atenta, como un castigo para quienes no creían.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxi{Y, ciertamente, lo hemos dejado como una señal. Así pues ¿Habrá alguien que recapacite?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxii{¡Cómo fueron Mi castigo y Mis advertencias!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxiii{Ciertamente, hemos hecho el Corán fácil de recordar. ¿Habrá quien se deje amonestar?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxiv{Ad desmintió y ¡Cómo fueron Mi castigo y Mis advertencias!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxv{En verdad, Nosotros enviamos contra ellos un viento violento y helado en un día nefasto e interminable\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxvi{que derribaba a las gentes como troncos de palmeras sacados de cuajo de sus raíces\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxvii{y ¡Cómo fueron Mi castigo y Mis advertencias!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxviii{Ciertamente, hemos hecho el Corán fácil de recordar. ¿Habrá quien se deje amonestar?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxix{Zamud desmintió Mis amonestaciones.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxx{Y dijeron: «¿Acaso vamos a seguir a una persona que es uno de nosotros? Entonces estaríamos extraviados y dementes.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxi{¿Iba a recibir el Recuerdo él de entre todos nosotros? ¡No! Más bien es alguien muy mentiroso y arrogante.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxii{«¡Mañana van a saber ellos quién es el mentiroso arrogante!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxiii{En verdad, Les enviaré la camella como una prueba. Así pues, vigílales y ten paciencia.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxiv{«E infórmales que deberán repartir el agua entre ellos y que cada uno deberá estar presente para beber cuando le toque su turno.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxv{Pero ellos llamaron a su compañero que se ocupó de ello y la mató.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxvi{y ¡Cómo fueron Mi castigo y Mis advertencias!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxvii{En verdad, Enviamos sobre ellos un solo grito y quedaron como arbustos secos amontonados por el ganadero.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxviii{Ciertamente, hemos hecho el Corán fácil de recordar. ¿Habrá quien se deje amonestar?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxix{El pueblo de Loť desmintió Mis advertencias.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxx{En verdad, enviamos sobre ellos un huracán de piedras, excepto a la familia de Lot. Les salvamos un poco antes del amanecer.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxi{Una merced de Nuestra parte. Así es como Nosotros recompensamos a quien es agradecido.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxii{Ciertamente, él les advirtió de Nuestro rigor, pero ellos discutieron Nuestras advertencias.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxiii{Le exigieron que les entregase a sus invitados y cegamos sus ojos: «Probad Mi castigo y Mis advertencias.»\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxiv{Y, ciertamente, temprano al amanecer les sorprendió un castigo firme y duradero.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxv{«Probad, pues, Mi castigo y Mis advertencias.»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxvi{Ciertamente, hemos hecho el Corán fácil de recordar. ¿Habrá quien se deje amonestar?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxvii{Y, ciertamente, a las gentes del Faraón les llegaron las advertencias.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxviii{Desmintieron todas Nuestras señales, así que, les atrapamos como atrapa Uno que es todopoderoso, omnipotente.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxix{«¿Acaso vuestros incrédulos son mejores que ellos? ¿O hay para vosotros en las Escrituras una excepción?»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxc{¿O dicen: «Nosotros somos un grupo que se auxilia mutuamente y es invencible»?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxci{¡El grupo será derrotado y dará la espalda!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcii{Pero se les ha prometido la Hora, y la Hora será más terrible y más amarga.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxciii{¡En verdad, los malhechores están extraviados y dementes!\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxciv{El día en que sean arrastrados boca abajo al Fuego: «¡Probad el contacto del Infierno!»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcv{En verdad, hemos creado todo en su justa medida.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcvi{Nuestra orden es como un parpadeo de ojos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcvii{Y, ciertamente, aniquilamos en el pasado a vuestros semejantes. Así pues ¿Hay alguien que se deje amonestar?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcviii{Todo lo que ellos han hecho está recogido en el libro de sus obras\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcix{y todo acto, pequeño o grande está registrado.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcm{En verdad, los temerosos de Dios estarán en Jardines y Arroyos\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcmi{en una reunión de gente sincera junto a un soberano todopoderoso.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcmii{\basmalahes El Clementísimo\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcmiii{ha enseñado el Corán,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcmiv{ha creado al ser humano,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcmv{le ha enseñado a hablar.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcmvi{El Sol y la Luna se mueven con precisión\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcmvii{y la hierba y el árbol se prosternan ante Él.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcmviii{Él ha elevado el cielo y ha establecido la balanza\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcmix{para que no engañéis al pesar.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcmx{¡Dad el peso justo y no deis de menos al pesar!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcmxi{Y ha puesto la Tierra al servicio de los seres humanos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcmxii{En ella hay frutas y palmeras datileras,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcmxiii{grano con vaina y arrayán.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcmxiv{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcmxv{Él ha creado al ser humano de barro seco como la cerámica\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcmxvi{y ha creado a los genios de fuego puro, sin humo.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcmxvii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcmxviii{El Señor de los dos Orientes y el Señor de los dos Occidentes.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcmxix{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcmxx{Él ha hecho fluir los dos mares que se juntan.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxi{Entre ellos hay una barrera que no traspasan.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxiii{De ambos salen la perla y el coral.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxiv{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxv{A Él pertenecen las naves que hay en el mar como montañas.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxvi{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxvii{Todo el que está en ella perecerá\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxviii{y sólo permanecerá el rostro de tu Señor, Dueño y Señor de la Majestad y la Generosidad.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxix{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxx{A Él imploran quienes están en los cielos y la Tierra y Él cada día está ocupado en una nueva actividad.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxi{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxii{Pronto nos ocuparemos de vosotros ¡Oh, los dos pesos!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxiii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxiv{¡Oh, asamblea de genios y humanos! Si podéis atravesar los confines de los cielos y la Tierra ¡Atravesadlos! No los atravesaréis sin una autoridad.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxv{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxvi{Se lanzará sobre vosotros dos una llamarada de fuego verde y humo del color del bronce y no podréis auxiliaros unos a otros.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxvii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxviii{Así pues, cuando se rasgue el cielo y sea como una piel de color rojo encendido\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxix{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcmxl{Ese día, ni los genios ni los humanos serán preguntados por sus pecados\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcmxli{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlii{Los malhechores serán reconocidos por sus rasgos y serán atrapados por los flequillos y los pies.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcmxliii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcmxliv{¡Ese es el Infierno que negaban los malhechores!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlv{Circularán entre él y un agua hirviente.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlvi{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlvii{Y para quien temió comparecer ante su Señor habrá dos Jardines\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlviii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlix{Con frutas variadas.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcml{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcmli{En ambos habrá dos fuentes manando.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcmlii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcmliii{En ambos habrá dos clases de cada fruta.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcmliv{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcmlv{Estarán reclinados en cojines tejidos de seda y la fruta madura de ambos Jardines estará al alcance de la mano.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcmlvi{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcmlvii{En ellos estarán las de mirada recatada, a las que ningún humano o genio habrá tocado antes de ellos,\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcmlviii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcmlix{como si ellas fuesen rubíes y corales.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcmlx{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxi{¿Acaso la recompensa de hacer el bien es otra que el bien mismo?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxiii{Y, aparte de esos dos, habrá otros dos Jardines\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxiv{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxv{de color verde intenso.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxvi{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxvii{En ambos, [habrá] dos fuentes manando con fuerza.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxviii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxix{En ambos, frutales y palmeras datileras y granados.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxx{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxi{En ellos, doncellas buenas y hermosas.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxiii{Huríes de grandes ojos en pabellones protegidos,\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxiv{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxv{a las que ningún humano o genio habrá tocado antes de ellos.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxvi{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxvii{Reclinados sobre cojines verdes y hermosas alfombras.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxviii{¿Cuál, pues, de las bendiciones de vuestro Señor negaréis?\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxix{¡Bendito sea el nombre de tu Señor, Dueño y Señor de la Majestad y la Generosidad!\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxx{\basmalahes Cuando tenga lugar el acontecimiento\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxi{no habrá nada que pueda desmentir su acontecer.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxii{Abatidor, exaltador.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxiii{Cuando la Tierra tiemble con fuerza\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxiv{y las montañas se pulvericen totalmente\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxv{y se conviertan en polvo disperso,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxvi{seréis divididos en tres grupos:\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxvii{Los compañeros de la derecha. ¿Quiénes son los compañeros de la derecha?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxviii{y los compañeros de la izquierda ¿Quiénes son los compañeros de la izquierda?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxix{y los que van por delante, que serán los que vayan por delante.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcmxc{Esos son los más cercanos\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcmxci{Estarán en los Jardines de las Delicias.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcii{Muchos de los primeros\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcmxciii{y pocos de los últimos.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcmxciv{Sobre lechos tejidos en oro,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcv{recostados en ellos, mirándose a la cara unos a otros.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcvi{Circularán alrededor de ellos sirvientes de eterna juventud\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcvii{con copas y jarras y un vaso lleno de un vino que mana de una fuente\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcviii{que no les levantará dolor de cabeza ni les embriagará,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcix{y las frutas que prefieran\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmm{y carne de las aves que les apetezca\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmi{y huríes de grandes ojos,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmii{semejantes a perlas bien guardadas,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmiii{en recompensa por lo que hacían.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmiv{Allí no escucharán conversaciones vanas ni pecaminosas\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmv{sino la palabra «¡Paz!» «¡Paz!»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmvi{Y los compañeros de la derecha ¿Qué son los compañeros de la derecha?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmvii{Estarán entre lotos sin espinas\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmviii{y plataneros llenos de racimos,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmix{bajo una sombra extensa y permanente\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmx{y tendrán agua que manará eternamente\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmxi{y frutas abundantes\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmxii{que no se agotarán ni estarán prohibidas\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmxiii{y lechos elevados.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmxiv{En verdad, a ellas las hemos creado de una manera especial\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmxv{y las hemos hecho vírgenes\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmxvi{amorosas, semejantes,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmxvii{para los compañeros de la derecha.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmxviii{Habrá muchos de los primeros\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmxix{y muchos de los últimos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmxx{Y los compañeros de la izquierda. ¿Qué son los compañeros de la izquierda?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmxxi{Estarán entre un calor abrasador y agua hirviente\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmxxii{y bajo una sombra de humo negro\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmxxiii{ni fresca ni confortable.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmxxiv{En verdad, antes de esto, ellos estuvieron en la embriaguez de la opulencia\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmxxv{y persistieron en el gran pecado.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmxxvi{Y decían: «¿Acaso cuando hayamos muerto y seamos polvo y huesos seremos resucitados?\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmxxvii{¿Y también nuestros antepasados?»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmxxviii{Di: «En verdad, los primeros y los últimos\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmxxix{serán reunidos en un momento determinado de un día conocido.»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmxxx{Entonces, en verdad, vosotros ¡Oh, extraviados, desmentidores!\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxi{comeréis de un árbol de Zaqqum,\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxii{del que llenaréis los estómagos\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxiii{y encima de ello beberéis agua hirviente,\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxiv{beberéis como beben los camellos enfermos que no pueden calmar su sed.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxv{Esa será la hospitalidad que ellos recibirán el Día de la Recompensa.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxvi{Nosotros os hemos creado, así pues ¿Por qué no reconocéis?\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxvii{¿Habéis reparado en lo que eyaculáis?\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxviii{¿Acaso sois vosotros quienes creáis o somos Nosotros los creadores?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxix{Somos Nosotros quienes decretamos la muerte entre vosotros y nadie Nos podrá impedir\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmmxl{que os sustituyamos por vuestros semejantes y a vosotros os hagamos renacer a lo que no conocéis.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmmxli{Y, ciertamente, ya habéis conocido la primera creación, así pues, ¿Por qué no reflexionáis?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmmxlii{¿Habéis reparado en lo que sembráis?\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmmxliii{¿Sois vosotros quienes lo hacéis crecer o somos Nosotros quienes lo hacemos crecer?\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmmxliv{Si hubiésemos querido habríamos hecho de ello paja seca. Entonces, os lamentaríais:\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmmxlv{«¡Hemos sufrido una grave pérdida!\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmmxlvi{Mas aún. ¡Estamos arruinados!»\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmmxlvii{¿Habéis reparado en el agua que bebéis?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmmxlviii{¿Sois vosotros quienes la hacéis descender de las nubes o somos Nosotros quienes la hacemos descender?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmmxlix{Si hubiésemos querido la habríamos hecho salobre. Así pues ¿Por qué no sois agradecidos?\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmml{¿Habéis reparado en el fuego que encendéis?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmmli{¿Sois vosotros quienes habéis hecho crecer el árbol que lo alimenta o Nosotros quienes lo hacemos crecer?\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmmlii{Somos Nosotros quienes lo hemos puesto como un recuerdo y para el beneficio de los viajeros.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmmliii{Así pues ¡Glorifica el nombre de tu Señor, el Inmenso!\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmmliv{¡Juro por el lugar en el que se encuentran las estrellas!\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmmlv{-Y, en verdad, si supierais, es un juramento grandioso-,\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmmlvi{que, en verdad, es una noble recitación,\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmmlvii{que está en una Escritura escondida.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmmlviii{No la tocarán más que los purificados.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmmmlix{Hecha descender gradualmente por el Señor del Universo.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmmlx{¿Acaso esta palabra os parece poca cosa\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmmlxi{y desmentís lo que es vuestra provisión?\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmmlxii{Entonces ¿Por qué, cuando se sube a la garganta,\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmmlxiii{y vosotros estáis contemplando ese momento?\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmmlxiv{-y Nosotros estamos más cerca de él que vosotros, pero no lo veis-\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmmlxv{¿Por qué, si no vais a ser recompensados,\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmmmlxvi{no la hacéis regresar, si es verdad lo que decís?\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmmmlxvii{Así, si era de los cercanos,\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmmmlxviii{estará tranquilo y bien provisto y tendrá un Jardín de Delicias.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmmmlxix{Y si era de los compañeros de la derecha,\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmmmlxx{pues: «¡Paz para ti! de parte de los compañeros de la derecha.»\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxi{Pero, si era de los desmentidores extraviados,\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxii{será alojado en agua hirviendo\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxiii{y arderá en el Infierno\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxiv{En verdad, esto es totalmente cierto.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxv{Así pues, glorifica el nombre de tu Señor el Inmenso.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxvi{\basmalahes Glorifica a Dios lo que hay en los cielos y la Tierra y Él es el Todopoderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxvii{A Él pertenece el reino de los cielos y la Tierra.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxviii{Da la vida y da la muerte y Él tiene poder sobre toda cosa. Él es el Primero y el Último y el Manifiesto y el Oculto y Él conoce toda cosa.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxix{Él es Quien creó los cielos y la Tierra en siete días. Luego, se estableció sobre el Trono. Él conoce lo que se introduce en la tierra y lo que sale de ella y lo que desciende del cielo y lo que asciende a él y Él está con vosotros donde quiera que estéis y ve lo que hacéis.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxx{A Él pertenece el reino de los cielos y de la Tierra y a Dios regresan todos los asuntos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxi{Hace que la noche entre en el día y que el día entre en la noche y Él conoce muy bien lo que hay en el fondo de los pechos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxii{¡Creed en Dios y en Su Mensajero y repartid de lo que Él os ha dado como sucesores! Y, quienes de vosotros crean y repartan, tendrán una recompensa grande.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxiii{¿Cómo no vais a creer en Dios habiéndoos el Mensajero llamado a que creáis en su Señor y habiendo Él aceptado vuestro compromiso, si sois creyentes?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxiv{Él es Quien hace descender sobre Su siervo pruebas claras, para que os saque de las tinieblas hacia la luz. Y, en verdad, Dios es con vosotros el más amable, misericordiosísimo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxv{Y no es apropiado para vosotros que no gastéis por la causa de Dios cuando a Dios pertenece la herencia de los cielos y la Tierra. No son iguales quienes de vosotros repartieron de sus riqueza antes de la victoria y combatieron. Ellos poseen un grado inmensamente superior a quienes repartieron de sus bienes y combatieron después. Y Dios ha prometido el bien a todos ellos y Dios está bien informado de lo que hacéis.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxvi{¿Quién quiere hacer a Dios un buen préstamo y, así, inmediatamente, Él se lo devolverá duplicado y tendrá una recompensa generosa?\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxvii{El día en que veas la luz de los creyentes y las creyentes manifestándose delante de ellos y a su derecha: «Vuestra buena noticia hoy son Jardines de cuyas profundidades brotan los ríos.» En ellos estarán eternamente. ¡Ese es el triunfo inmenso!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxviii{El día en el que los hipócritas y las hipócritas digan a quienes son creyentes: «¡Esperad para que podamos obtener algo de vuestra luz!» Se les dirá: «Retroceded y buscad una luz.» Y se pondrá entre ellos una muralla en la que habrá una puerta. En el interior de ella estará la misericordia y frente a ella, en el exterior, el castigo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxix{Les gritarán: «¿Acaso no estuvimos con vosotros?» Ellos dirán: «Sí, pero vosotros destruisteis vuestras propias almas y quedasteis a la espera y tuvisteis dudas hasta que llegó la orden de Dios. Y el Seductor os sedujo respecto a Dios.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmxc{Pero hoy no se os aceptará rescate alguno ni tampoco a quienes no fueron creyentes. Vuestro único destino será el Fuego. ¡Él será vuestro amigo! ¡Qué mal final!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmxci{¿Acaso no es ya tiempo de que los corazones de quienes tienen fe se humillen y teman ante el recuerdo de Dios y de lo que ha descendido de la Verdad y de que no sean como aquellos a quienes les fue entregada la Escritura anteriormente? El tiempo se cobró su impuesto sobre ellos y endureció sus corazones y muchos de ellos fueron transgresores.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmxcii{Sabed que Dios da vida a la Tierra después de haber estado muerta. Ciertamente os hemos explicado las señales. Quizás así uséis vuestra inteligencia.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmxciii{En verdad, a quienes son sinceros y sinceras y hacen a Dios un préstamo bueno se les doblará su pago y tendrán una recompensa generosa.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmxciv{Y los sinceros son quienes creen en Dios y en Sus Mensajeros y ellos y los testigos tienen junto a Su señor su recompensa y su luz. Y quienes no creen y desmienten Nuestras señales son la gente que irá al Infierno.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmxcv{Sabed que la vida de este mundo no es más que juego y distracción sin sentido y apariencia y orgullo entre vosotros por el mayor número de bienes e hijos. Es como la lluvia. El agricultor se impresiona de la vegetación que hace surgir, luego, continúa su proceso y ves como amarillea y luego se torna pasto seco. Y en la otra vida hay castigo severo y también perdón y satisfacción de Dios. Y la vida de este mundo no es más que el disfrute temporal de la vanidad.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmxcvi{Competid para ser los primeros en obtener el perdón de vuestro Señor y un Jardín tan vasto como los cielos y la Tierra, preparado para quienes crean en Dios y en Sus Mensajeros. Ese es el favor de Dios, que Él otorga a quien quiere. Y Dios es el Dueño del favor inmenso.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmxcvii{No hay desgracia en la Tierra ni en vosotros mismos que no esté en una escritura desde antes de que la ocasionemos. Esto es algo fácil para Dios.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmxcviii{Para que no os entristezcáis por lo que perdáis y no os alegréis con arrogancia por lo que Él os dé. Dios no ama a quien es presumido, jactancioso.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmxcix{Aquellos que son avariciosos e incitan a la gente a la avaricia. Y quien dé la espalda sepa que, en verdad, Dios es rico por Sí mismo, digno de alabanza.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmc{Ciertamente, enviamos a Nuestros Mensajeros con las pruebas claras e hicimos descender con ellos la Escritura y la Balanza para que los humanos establezcan la justicia. E hicimos descender el hierro, en el que hay un gran poder y beneficio para los humanos, para que Dios sepa quien acude en ayuda de Él y de Sus Mensajeros en su ausencia. En verdad, Dios es fuerte, poderoso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmci{Y, ciertamente, enviamos a Noé y Abraham y pusimos en la descendencia de ambos la profecía y la Escritura. Y, de ellos, algunos se guiaron y muchos de ellos fueron transgresores.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcii{Luego, tras ellos, enviamos a Nuestros Mensajeros y enviamos a Jesús hijo de María y le dimos el Evangelio y pusimos en los corazones de quienes le siguieron amabilidad y misericordia. Pero el monacato fue una innovación de ellos -Nosotros no se la prescribimos- buscando agradar a Dios. Pero no lo observaron como debían. Así pues, a quienes de ellos creyeron les dimos su recompensa, pero muchos de ellos fueron transgresores.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmciii{¡Oh, creyentes! Sed temerosos de Dios y creed en Su Mensajero y Él os dará el doble de Su misericordia y os pondrá una luz con la que podáis caminar y os perdonará. Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmciv{Que la Gente de la Escritura sepa que ellos no tienen poder sobre nada del favor de Dios y que el favor de Dios está en Su propia mano y que lo otorga a quien Él quiere. Y Dios es dueño de un favor inmenso.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcv{\basmalahes Ciertamente, Dios ha escuchado las palabras de aquella que discutía contigo acerca de su marido y se quejaba ante Dios. Dios oye la conversación de vosotros dos. En verdad, Dios todo lo oye, todo lo ve.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcvi{Aquellos de vosotros que repudian a sus esposas con el Dihar [deben saber que] ellas no son sus madres. Sus madres son sólo aquellas que les trajeron a la vida. Y, en verdad, dicen algo que es reprobable y falso. Y, en verdad, Dios es indulgente, perdonador.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcvii{Aquellos que repudian a sus esposas con el Dihar y luego se retractan de lo que dijeron, deberán liberar un esclavo antes de poder volver a tocarlas. ¡Se os exhorta a ello! Y Dios está bien informado de lo que hacéis.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcviii{Quien no pueda hacerlo, deberá ayunar dos meses seguidos antes de volver a tocarse mutuamente. Quien no pueda hacerlo, deberá alimentar a sesenta personas necesitadas. Esto es para que creáis es Dios y en Su Mensajero. Estos son los límites de Dios y para quienes no crean hay un castigo doloroso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcix{En verdad, aquellos que se opongan a Dios y a Su Mensajero serán humillados de la misma manera en que fueron humillados los que vivieron antes de ellos. En verdad, hicimos descender pruebas claras y quienes no crean tendrán un castigo humillante\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcx{el día en que Dios les resucite a todos y les informe de lo que hacían. Dios lleva la cuenta de sus obras y ellos las olvidan. Dios es testigo de todas las cosas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcxi{¿Acaso no has visto que Dios conoce lo que hay en los cielos y lo que hay en la Tierra? No hay conversación secreta entre tres sin que Él sea el cuarto, ni entre cinco sin que Él sea el sexto, ni de menos que esto ni de más sin que Él esté con ellos donde quiera que estén. Luego, el Día del Levantamiento, Él les informará de lo que hicieron. En verdad, Dios posee el conocimiento de todas las cosas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcxii{¿Acaso no has visto a aquellos a quienes les fue prohibido hablar en secreto pero vuelven nuevamente a lo que les fue prohibido y hablan en secreto, obrando mal contra sí mismos y contra los demás y desobedeciendo al Mensajero? Y cuando vienen a ti te saludan de manera diferente a como Dios te saluda y dicen para sí mismos: «¿Por qué Dios no nos castiga por lo que decimos?» ¡Será suficiente para ellos el Infierno en el que arderán! ¡Qué mal destino!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcxiii{¡Oh, creyentes! Cuando habléis en secreto no lo hagáis de manera que obréis mal contra vosotros mismos y contra los demás y desobedezcáis al Mensajero. Y hablad en secreto con espíritu pío y temor de Dios. ¡Sed temerosos de Dios, pues hacía Él seréis congregados!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcxiv{En verdad, las conversaciones en secreto son cosa de Satanás para entristecer a quienes creen. Pero él no puede perjudicarles en nada excepto con el permiso de Dios. ¡Qué los creyentes confíen en Dios!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcxv{¡Oh, creyentes! Cuando se os diga: «¡Haced sitio en las asambleas!» vosotros haced sitio y Dios os hará sitio a vosotros. Y cuando se os diga: «¡Levantaos!» vosotros levantaos y Dios elevará el grado a quienes de vosotros tengan fe y a quienes les ha sido dado conocimiento. Dios está bien informado de lo que hacéis.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcxvi{¡Oh, creyentes! Cuando queráis hablar al Mensajero en secreto, dad una limosna antes de hablar con él. Eso es mejor para vosotros y más puro. Y si no podéis, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcxvii{¿Acaso teméis dar una limosna por adelantado antes de hablar en secreto? Si no lo hacéis y Dios acepta vuestro arrepentimiento, haced la oración y dad la limosna que purifica la riqueza y obedeced a Dios y a Su Mensajero. Y Dios está bien informado de lo que hacéis.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcxviii{¿Has visto a quienes se vuelven a un pueblo con el que Dios está disgustado? No son de los vuestros ni son de ellos. Juran en falso y lo saben.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcxix{Dios ha preparado para ellos un severo castigo. En verdad, lo que hacen está mal.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcxx{Se protegen tras sus promesas y dificultan a otros el acceso al camino de Dios. Así pues, para ellos hay un castigo humillante.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxi{Sus bienes y sus hijos no les beneficiarán en nada ante Dios. Ellos son la gente del Fuego. En él estarán eternamente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxii{El día en que Dios les resucite a todos, le prometerán a Él como os prometen a vosotros, calculando que están sobre algo firme. ¿Acaso no son ellos los mentirosos?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxiii{Satanás les venció y les hizo olvidar el recuerdo de Dios. Ellos son el partido de Satanás. ¿Acaso los del partido de Satanás no son los perdedores?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxiv{En verdad, quienes son enemigos de Dios y de Su Mensajero son los más despreciables.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxv{Dios ha escrito: «Ciertamente, Yo y Mis Mensajeros somos los vencedores.» En verdad, Dios es fuerte, poderoso.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxvi{No encontrarás a un pueblo que crea en Dios y en el Último día que simpatice con quienes se oponen a Dios y a Su Mensajero, aunque sean sus padres o sus hijos o sus hermanos o la gente de su tribu. Ellos son a quienes Él ha escrito la fe en sus corazones y les ha fortalecido con un espíritu procedente de Él y les hará entrar en Jardines bajo los cuales brotan los ríos, en los que vivirán eternamente. Dios está satisfecho de ellos y ellos están satisfechos de Él. Ellos son el partido de Dios. ¿No es, en verdad el partido de Dios quienes son los triunfadores?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxvii{\basmalahes Glorifica a Dios lo que hay en los cielos y lo que hay en la Tierra y Él es el Todopoderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxviii{Él es Quien hizo salir de sus casas, en el primer destierro, a quienes de la Gente de la Escritura no eran creyentes. No creíais que ellos fueran a salir, y ellos pensaban que sus fortalezas les protegerían de Dios. Pero Dios vino a ellos por donde menos lo esperaban y puso el terror en sus corazones. Destruyeron sus casas con sus propias manos y con las manos de los creyentes. Así pues, ¡Oh, gente que reflexiona! ¡Aprended la lección!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxix{Y, si Dios no hubiese decretado que ellos abandonasen su patria, les habría castigado en esta vida. Y en la otra vida les espera el castigo del Fuego.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxx{Eso es porque ellos desafiaron a Dios y a Su Mensajero. Y quien desafía a Dios…En verdad Dios es severo en el castigo.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxi{Las palmeras datileras que cortasteis o dejasteis en pie sobre sus bases fue con el permiso de Dios y para que Él someta a los transgresores.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxii{Y el botín que, de ellos, Dios dio a Su Mensajero no hizo necesario que montaseis sobre vuestros caballos ni camellos, sino que Dios hace prevalecer a Sus Mensajeros sobre quien Él quiere y Dios tiene poder sobre todas las cosas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxiii{El botín que, de la gente de las ciudades, Dios otorgó a Su Mensajero es para Dios y para el Mensajero, para los familiares y para los huérfanos, los necesitados y los viajeros, para que no vaya a parar a las manos de los ricos que hay entre vosotros. Y lo que el Mensajero os de tomadlo y absteneos de lo que os prohíba. Y sed temerosos de Dios. En verdad, Dios es severo en el castigo\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxiv{Y para los pobres de entre los emigrantes, que fueron expulsados de sus casas y privados de sus bienes cuando buscaban el favor de Dios y Su satisfacción y que auxilian a Dios y a Su Mensajero. Ellos son los sinceros.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxv{Y quienes prepararon la casa y la fe antes de ellos aman a quienes emigraron a ellos y no encuentran en sus pechos envidia por lo que se les ha dado y les prefieren a sí mismos, aunque se encuentre en una extrema necesidad. Y quienes están a salvo de su propia avaricia, ellos son los triunfadores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxvi{Y quienes vinieron tras ellos dicen: «¡Dios nuestro, perdónanos, a nosotros y a nuestros hermanos, aquellos que nos precedieron en la fe, y no pongas en nuestros corazones rencor contra los creyentes! ¡Señor nuestro, en verdad, Tú eres benévolo, misericordiosísimo con los creyentes!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxvii{¿No has visto a quienes son hipócritas diciendo a sus hermanos, aquellos que no creen de la gente de la Escritura: «Os juramos que si sois expulsados saldremos con vosotros y jamás obedeceremos a nadie en contra vuestra y si sois atacados os auxiliaremos?» Y Dios es testigo de que ellos son unos mentirosos.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxviii{Juro que si son expulsados no saldrán con ellos y juro que si son atacados no les auxiliarán y juro que si acuden en su auxilio, seguramente darán la espalda. Por tanto, no serán auxiliados.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxix{Ciertamente, vosotros infundís en sus pechos mayor temor que Dios. Eso es porque son gente que no tiene entendimiento.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcxl{No combatirán todos juntos contra vosotros excepto desde ciudades fortificadas o detrás de muros. Son muy valientes entre ellos. Tú calculas que están unidos, pero sus corazones están desunidos. Eso es porque son gente que no razona.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcxli{Son semejantes a los que hubo poco antes de ellos. Probaron las malas consecuencias de su comportamiento y tendrán un castigo doloroso.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlii{Su ejemplo es semejante a cuando Satanás dice al ser humano: «¡No creas!» y cuando descree, dice: «En verdad, me aparto de ti. En verdad, yo temo a Dios, Señor del Universo.»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcxliii{Y el final de ambos será que estarán en el Fuego eternamente. Esa es la recompensa de los opresores.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcxliv{¡Oh, creyentes! ¡Sed temerosos de Dios y que el alma observe lo que envía por delante para mañana! ¡Y sed temerosos de Dios! En verdad, Dios está bien informado de lo que hacéis.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlv{Y no seáis como quienes olvidan a Dios y, por tanto, Él hace que se olviden de sus propias almas. Esos son los transgresores.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlvi{No son iguales la gente del Fuego y la gente del Jardín. La gente del Jardín son los triunfadores.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlvii{Si hiciera descender este Corán sobre una montaña, la verías humillarse y desmoronarse por temor a Dios. Estos son los ejemplos que ponemos a los seres humanos para que, quizás así, reflexionen.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlviii{Él es Dios y no hay más dios que Él. Conocedor de lo oculto a los sentidos y de lo manifiesto. Él es el Clementísimo, el Misericordiosísimo.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlix{Él es Dios y no hay más dios que Él. El rey, el Santísimo, la Paz, el Protector, el Amparador, el Poderoso, el Dominador, el Sublime. Glorificado sea Dios por encima de lo que asocian a Él.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcl{Él es Dios, el Creador, el Hacedor, el Formador. A Él pertenecen los nombres mejores. Le glorifica lo que hay en los cielos y en la Tierra y Él es el Todopoderosos, el Sabio.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcli{\basmalahes ¡Oh, creyentes! ¡No toméis a Mis enemigos y a vuestros enemigos como protectores, mostrando afecto hacia ellos, si salís a combatir por Mi causa y buscando Mi satisfacción, porque ellos han descreído de lo que a vosotros ha venido de la Verdad, expulsando al Mensajero y a vosotros por creer en Dios, vuestro Señor. Les mostráis afecto en secreto, pero yo soy Quien mejor conoce lo que ocultáis y lo que manifestáis. Y quien de vosotros lo hace, ciertamente, se ha extraviado del camino recto.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmclii{Si tienen más poder que vosotros, serán vuestros enemigos y os maltratarán de palabra y obra y querrán que dejéis de tener fe.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcliii{Ni vuestras familias ni vuestros hijos os serán de utilidad el Día del Levantamiento. Él os separará a unos de otros. Y Dios ve claramente lo que hacéis.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcliv{Hay para vosotros un buen ejemplo en Abraham y en quienes estaban con él, cuando dijeron a su gente: «En verdad, nos apartamos de vosotros y de lo que adoráis en lugar de Dios. Descreemos de vuestra fe y comienza entre nosotros y vosotros la enemistad y el odio para siempre hasta que creáis en el Dios único.» Exceptuando lo que Abraham dijo a su padre: «Pediré perdón por ti, aunque no puedo hacer nada por ti en contra de Dios.» «¡Señor nuestro! ¡En Ti confiamos y a Ti nos volvemos contritos y hacia Ti es el regreso!»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmclv{«¡Señor nuestro! ¡No nos pongas como examen de quienes no son creyentes y perdónanos!» «¡Señor nuestro! ¡En verdad, Tú eres el Todopoderoso, el Sabio!»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmclvi{Ciertamente, hay para vosotros en ellos un buen ejemplo de quienes tienen su esperanza puesta en Dios y en el Día del Juicio. Y quien dé la espalda (sepa) que Dios es el Rico por Sí mismo, el Digno de alabanza.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmclvii{Puede que Dios ponga afecto entre vosotros y aquellos de quienes erais enemigos. Dios es poderoso. Dios es perdonador, misericordiosísimo.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmclviii{Dios no os prohíbe que tratéis con amabilidad y equidad quienes no combaten vuestra fe ni os han expulsado de vuestros hogares. En verdad, Dios ama a quienes son equitativos.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmclix{Lo que, en verdad, Dios os prohíbe es que seáis amigos de quienes combaten vuestra fe y os expulsan de vuestros hogares o ayudan a que seáis expulsados. Y quienes sean amigos de ellos, esos serán los opresores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmclx{¡Oh, creyentes! Cuando lleguen a vosotros las creyentes emigrantes ¡examinadlas! Dios es Quien mejor conoce su fe. Así pues, si verificáis que son creyentes, no las devolváis a los que no son creyentes. Ellas no son lícitas para ellos ni ellos son lícitos para ellas. Dadles lo que gastaron en ellas. Y no cometéis pecado si os casáis con ellas, una vez que les hayáis entregado sus dotes. Y no mantengáis matrimonio con las que no son creyentes. Pedid lo que gastasteis en ellas y que ellos pidan lo que gastaron en ellas. Ese es el juicio de Dios para vosotros. Él juzga entre vosotros. Y Dios todo lo conoce, es sabio.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmclxi{Y si perdisteis algo de vuestras esposas que se fueron con los incrédulos y conseguís algún botín, dad a aquellos cuyas esposas se fueron algo semejante a lo que gastaron. Y sed temerosos de Dios, en Quien tenéis fe.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmclxii{¡Oh, profeta! Cuando vengan a ti las creyentes y te juren que no asociarán nada a Dios, que no robarán y no cometerán adulterio ni fornicación y que no matarán a sus hijos, que no mentirán sobre lo que han hecho entre sus manos y sus pies y que no te desobedecerán en las cosas buenas, acepta sus juramentos y pide que Dios las perdone. En verdad, Dios es perdonador, misericordiosísimo.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmclxiii{¡Oh, creyentes! No toméis por amigos a una gente con la que Dios está disgustado. Ciertamente, ellos han desesperado de la otra vida igual que los que no creen han desesperado de la gente de las tumbas.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmclxiv{\basmalahes Glorifica a Dios lo que hay en los cielos y lo que hay en la Tierra y Él es el Todopoderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmclxv{¡Oh, creyentes! ¿Por qué decís lo que no hacéis?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmclxvi{¡Dios aborrece mucho que digáis lo que no hacéis!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmclxvii{En verdad, Dios ama a quienes combaten por Su causa en filas apretadas, como un firme edificio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmclxviii{Y [recuerda] cuando Moisés dijo a su pueblo: «¡Oh, pueblo mío! ¿Por qué me molestáis cuando sabéis con certeza que yo soy el Mensajero de Dios enviado a vosotros?» Cuando se desviaron, Dios desvió de sus corazones. Y Dios no guía a la gente trasgresora.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmclxix{Y [recuerda] cuando Jesús hijo de María dijo: «¡Oh, Hijos de Israel! En verdad, soy el Mensajero de Dios enviado a vosotros para confirmar la Torá anterior a mí y para anunciar a un Mensajero que vendrá tras de mí. Su nombre es Ahmad.» Y cuando vino a ellos con las pruebas claras, dijeron: «¡Esto es magia evidente!»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmclxx{Y ¿Quién es más opresor que quien inventa mentiras sobre Dios cuando ha sido llamado al Islam? ¡Y Dios no guía a la gente opresora!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxi{Quisieran apagar la luz de Dios con un soplido de sus bocas, pero Dios completa Su luz aunque moleste a los que no creen.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxii{Él es Quien ha enviado a Su Mensajero con la guía y con la religión de la Verdad, para hacer que prevalezca sobre todas las creencias, aunque ello moleste a los idólatras.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxiii{¡Oh, creyentes! ¿Queréis que os indique un negocio que os salve de un castigo doloroso?:\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxiv{¡Tener fe en Dios y en Su Mensajero y combatir por la causa de Dios con vuestros bienes y vuestras almas! ¡Eso es mejor para vosotros! ¡Si supieseis…!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxv{Os perdonará vuestros pecados y os introducirá en Jardines de cuyas profundidades brotan los ríos y en buenas mansiones en los Jardines del Edén. ¡Ese es el triunfo inmenso!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxvi{Y otra [merced] que amaréis: «Un auxilio procedente de Dios y una victoria próxima.» ¡Informa de la buena nueva a los creyentes!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxvii{¡Oh, creyentes! ¡Sed los auxiliares de Dios! como los apóstoles cuando dijo Jesús hijo de María: «¿Quién me auxiliará hacia Dios?» Los apóstoles dijeron: «¡Nosotros seremos los auxiliares de Dios!» Así pues, un grupo de los Hijos de Israel creyó y otro grupo no creyó. Nosotros apoyamos a los que tuvieron fe sobre sus enemigos y se convirtieron en los vencedores.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxviii{\basmalahes Lo que hay en los cielos y lo que hay en la Tierra glorifica a Dios, el Rey, el Santísimo, el Todopoderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxix{Él es Quien designó entre los iletrados a un Mensajero de entre ellos para que les recite Sus versículos, les purifique y le enseñe la Escritura y la sabiduría, pues, antes de ello, estaban en un extravío evidente.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxx{Y a otros de entre ellos que aún no se han unido a ellos. Y Él es el Todopoderoso, el Sabio.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxi{Ese es el favor de Dios. Él lo otorga a quien quiere. Y Dios es el Dueño del favor inmenso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxii{Aquellos a quienes les fue encomendada la Torá y luego no actuaron conforme a ella, son semejantes al burro que va cargado de libros. ¡Qué mal ejemplo el de un pueblo que desmiente las señales de Dios! Y Dios no guía a la gente opresora.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxiii{Di: «¡Oh, judíos! Si pretendéis que vosotros sois los únicos amigos de Dios, aparte del resto de la gente, entonces ¡Desead la muerte, si sois sinceros!»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxiv{Pero no la desearán jamás por lo que enviaron por delante a la otra vida con sus propias manos. Y Dios es Quien mejor conoce a los opresores.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxv{Di: «En verdad, la muerte de la cual huís os encontrará y luego seréis devueltos al Conocedor de lo oculto a los sentidos y de lo manifiesto y Él os informará de lo que hacíais.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxvi{¡Oh, creyentes! Cuando se convoque a la oración del viernes, apresuraos a acudir al recuerdo de Dios y dejad el comercio. Eso es mejor para vosotros. ¡Si supierais…!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxvii{Y, cuando termine la oración, dispersaos por la Tierra y buscad el favor de Dios y recordad mucho a Dios, quizás así triunféis.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxviii{Pero, cuando ven un negocio o una diversión, escapan hacia ella y te dejan plantado. Di: «Lo que hay junto a Dios es mejor que la diversión y que los negocios y Dios es el mejor de los proveedores.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxix{\basmalahes Cuando los hipócritas vienen a ti, dicen: «Damos testimonio de que, en verdad, tú eres el Mensajero de Dios.» Y Dios sabe que tú eres Su Mensajero y Dios da testimonio de que, en verdad, los hipócritas son unos mentirosos.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcxc{Han tomado sus promesas como escudo e impiden el acceso a la senda de Dios. En verdad, ¡Qué malo es lo que han estado haciendo!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcxci{Eso es porque ellos tuvieron fe y luego descreyeron, así que sus corazones han quedado sellados y no comprenden.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcii{Y cuando les ves te sorprende su aspecto y cuando hablan escuchas lo que dicen, pero son como palos secos apoyados contra la pared. Creen que cualquier grito va dirigido contra ellos. Son el enemigo, así que, ten cuidado con ellos. ¡Qué Dios acabe con ellos! ¡Qué desviados están!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcxciii{Y cuando se les dice: «¡Venid, el Mensajero de Dios pedirá perdón para vosotros!» giran sus cabezas y les verás apartarse con arrogancia.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcxciv{Da igual que pidas perdón para ellos o que no pidas perdón para ellos, Dios no les perdonará jamás. En verdad, Dios no guía a la gente malvada, trasgresora.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcv{Ellos son quienes dicen: «No gastéis de vuestros bienes en quienes están con el Mensajero de Dios hasta que no le abandonen.» Y a Dios pertenecen los tesoros de los cielos y la Tierra, pero los hipócritas no entienden.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcvi{Dicen: «Cuando regresemos a la ciudad, los más poderosos expulsaran, sin duda, a los más débiles.» Y el poder pertenece a Dios, a Su Mensajero y a los creyentes, pero los hipócritas no tienen conocimiento.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcvii{¡Oh, creyentes! ¡No dejéis que vuestros bienes y vuestros hijos os aparten del recuerdo de Dios! Y quienes obren de esa manera serán los perdedores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcviii{Y repartid de lo que Nosotros os hemos provisto antes de que a uno de vosotros le llegue la muerte y, entonces, diga: «¡Señor mío! Si solamente me dieses un pequeño plazo, daría limosna y sería de los rectos.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcix{Pero Dios no dará plazo alguno al alma cuando le llegue su término. Y Dios está bien informado de lo que hacéis.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcc{\basmalahes Glorifica a Dios lo que hay en los cielos y lo que hay en la Tierra. A Él pertenece el reino y a Él pertenece la alabanza y Él tiene poder sobre toda cosa.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcci{Él es Quien os ha creado, pero algunos de vosotros no creéis y otros sois creyentes. Y Dios observa lo que hacéis.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccii{Él ha creado los cielos y la Tierra con la Verdad y os ha dado forma, la mejor de las formas. Y a Él es el retorno.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcciii{Él conoce lo que hay en los cielos y la Tierra y conoce lo que guardáis en secreto y lo que manifestáis. Y Dios conoce lo que hay en el fondo de los pechos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcciv{¿Acaso no ha llegado a vosotros la noticia de quienes no fueron creyentes antes de vosotros? Probaron las malas consecuencias de su comportamiento y hay para ellos un castigo doloroso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccv{Eso es porque vinieron a ellos sus Mensajeros con las pruebas claras y dijeron: «¿Van a guiarnos a nosotros quienes son simples mortales?» y no tuvieron fe y dieron media vuelta. Y Dios no tiene necesidad de ellos. Dios es Rico por Sí mismo, digno de alabanza.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccvi{Los que no creen pretenden que no serán resucitados. Di: «¡Sí! ¡Lo juro por mi Señor! ¡Seréis resucitados y luego se os informará de lo que hicisteis! ¡Eso es fácil para Dios!»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccvii{Así pues, creed en Dios y en Su Mensajero y en la luz que Nosotros hemos hecho descender. Y Dios está bien informado de lo que hacéis.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccviii{El día que Él os reúna para el Día de la Asamblea, ese será el Día del Desengaño Mutuo. Y a quien crea en Dios y obre rectamente le ocultaremos sus errores y le haremos entrar en Jardines de cuyas profundidades brotan los ríos, en los cuales estarán eternamente. Ese es el éxito inmenso.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccix{Y quienes no creyeron y desmintieron Nuestras señales serán la gente del Fuego, en el cual estarán eternamente. ¡Qué mal destino!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccx{No acontece ninguna desgracia sino con permiso de Dios. Y, quien cree en Dios, guía su corazón. Y Dios conoce bien todas las cosas.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccxi{Y obedeced a Dios y obedeced al Mensajero, pero si dais media vuelta, sabed que la obligación de Nuestro Mensajero es únicamente transmitir el mensaje con claridad.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccxii{Dios. No hay más dios que Él. Por eso, ¡Que los creyentes confíen en Dios!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmccxiii{¡Oh, creyentes! En verdad, en algunas de vuestras esposas y de vuestros hijos hay un enemigo para vosotros, así pues, tened cuidado con ellos. Y si les excusáis, sois indulgentes y les perdonáis, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmccxiv{En verdad, vuestros bienes y vuestros hijos son un examen. Y junto a Dios hay una recompensa inmensa.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmccxv{Así pues ¡Sed todo lo temerosos de Dios que podáis y escuchad y obedeced y repartid! Eso es bueno para vosotros mismos. Quienes están a salvo de su propia codicia, esos son los triunfadores.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmccxvi{Si hacéis a Dios un buen préstamo, Él os lo doblará y os perdonará. Y Dios es muy agradecido, muy indulgente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmccxvii{Él es Quien mejor conoce lo que está oculto a los sentidos y lo manifiesto, el Todopoderoso, el Sabio.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmccxviii{\basmalahes ¡Oh, profeta! Cuando divorciéis a las mujeres, divorciadlas al terminar su periodo y observad el tiempo de espera y sed temerosos de Dios, vuestro Señor. No las expulséis de sus casas y que ellas no salgan, a menos que cometan un pecado evidente. Esas son las leyes de Dios. Y quien viole las leyes de Dios, ciertamente, se oprimirá a sí mismo. No sabes, puede que Dios disponga después de esto alguna otra cosa.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccxix{Así, cuando ellas hayan completado su plazo, retenedlas honorablemente o separaos de ellas honorablemente. Y que dos hombres justos de los vuestros sean testigos. Y estableced el testimonio para Dios. Se exhorta a ello a quien sea creyente en Dios y en el Último Día. Y a quien sea temeroso de Dios Él le dará una salida\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccxx{y hará que le llegue la provisión por donde menos lo espera. Y quien confíe en Dios tendrá suficiente con Él. En verdad, Dios hace que Su orden se realice. Dios ha establecido una medida para cada cosa.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxi{Y respecto a aquellas de vuestras esposas que ya no esperan tener menstruación, si tenéis dudas, su tiempo de espera será de tres meses. Y lo mismo para aquellas que todavía no han tenido menstruación. Y aquellas que están embarazadas, su tiempo de espera concluirá cuando den a luz. Y a quien sea temeroso de Dios Él le facilitará sus asuntos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxii{Esa es la orden de Dios que Él ha hecho descender para vosotros. Y a quien sea temeroso de Dios Él le cubrirá sus errores y le otorgará una gran recompensa.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxiii{Hospedadlas donde vosotros viváis conforme a vuestros medios y no las perjudiquéis haciéndoles sufrir estrecheces. Y si estuviesen embarazadas gastad en ellas hasta que den a luz. Y si dan de mamar a vuestros hijos dadles su remuneración y consultaos entre vosotros honorablemente. Y si no os ponéis de acuerdo, entonces que otra mujer le amamante.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxiv{Quien tenga medios que gaste de ellos y aquel cuya provisión ha sido limitada que gaste conforme a lo que Dios le ha otorgado. Dios no obliga a una persona más allá de lo que le otorga. Tras la dificultad Dios pronto os dará la facilidad.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxv{¡Cuántas ciudades desafiaron la orden de su Señor y de Sus Mensajeros y por ello les ajustamos las cuentas con severidad y les castigamos con un castigo terrible!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxvi{Así, probaron las malas consecuencias de su comportamiento y, finalmente, su comportamiento sólo les produjo pérdidas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxvii{Dios les castigará con un severo castigo. Así pues ¡Oh, los dotados de inteligencia y que sois creyentes, sed temerosos de Dios! Ciertamente, Dios ha hecho descender para vosotros un recuerdo.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxviii{Un Mensajero que os recita los versículos claros de Dios, para que saque a quienes tienen fe y obran rectamente de las tinieblas a la luz. Y a quien cree en Dios y obra rectamente Él le hará entrar en Jardines de cuyas profundidades brotan los ríos, en los que estará eternamente. Ciertamente, Dios ha dispuesto para él la mejor provisión.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxix{Dios es Quien ha creado siete cielos y otras tantas Tierras. El hace que la orden descienda gradualmente a través de ellos, para que conozcáis que Dios tiene poder sobre todas las cosas y que Dios abarca a todas las cosas con Su conocimiento.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxx{\basmalahes ¡Oh, Profeta! ¿Por qué prohíbes lo que Dios ha hecho lícito para ti, buscando la satisfacción de tus esposas? Y Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxi{Ciertamente, Dios ha hecho permisible para vosotros anular vuestros juramentos. Y Dios es vuestro protector y Él es Quien todo lo conoce, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxii{[Recuerda] Cuando el Profeta confió un asunto en secreto a alguna de sus esposas y ella lo divulgó y Dios se lo hizo saber. Cuando él le informó a ella de esto, dándole a conocer parte de ello y omitiendo parte de ello, ella dijo: «¿Quién te informó de eso?» él dijo: «Me informó Quien todo lo conoce, el Bien informado.»\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxiii{Si ambas os volvéis a Dios arrepentidas [será mejor], pues, ciertamente, los corazones de vosotras dos se han inclinado [hacia el mal], pero si os confabuláis contra él, [sabed que] en verdad, Dios es su protector y Gabriel y el recto de los creyentes y los ángeles tras ellos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxiv{Puede que Su señor, si os divorcia a las dos, le dé esposas mejores que vosotras a cambio, musulmanas, creyentes, obedientes, penitentes, devotas, ayunantes, casadas anteriormente o vírgenes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxv{¡Oh, creyentes! Salvaos a vosotros y a vuestras familias de un Fuego cuyo combustible son los seres humanos y las piedras y sobre los cuales habrá ángeles severos y poderosos, que no desobedecen lo que Dios les ha ordenado y hacen lo que les ha sido ordenado.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxvi{¡Oh los que no creéis! No pongáis hoy ninguna excusa. En verdad, seréis retribuidos por lo que hacíais.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxvii{¡Oh, creyentes! Volveos a Dios con un arrepentimiento sincero. Puede que vuestro Señor oculte vuestros malos actos y os haga entrar en Jardines de cuyas profundidades brotan los ríos, el día en que Dios no humillará al Profeta y a los que con él tienen fe. La luz de ellos se moverá ante ellos y a su derecha y ellos dirán: «¡Señor nuestro! ¡Completa nuestra luz y perdónanos! En verdad, Tú tienes poder sobre toda cosa.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxviii{¡Oh, Profeta! Combate a los que no creen y a los hipócritas y se severo con ellos. Su refugio será el Infierno. ¡Qué mal destino!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxix{Dios pone un ejemplo para los que no creen: La mujer de Noé y la mujer de Lot. Ambas estuvieron bajo la tutela de dos de Nuestros siervos justos y ambas les traicionaron y su relación con ellos no les benefició en nada ante Dios y se les dijo a ambas: «¡Entrad en el Fuego con los que entran en él!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccxl{Y Dios pone un ejemplo para quienes son creyentes: La mujer del Faraón cuando dijo: «¡Señor mío! Constrúyeme una morada junto a Ti en el Jardín y sálvame del Faraón y sus obras y sálvame de la gente opresora.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccxli{Y María hija de Imrán, quien protegió la castidad de su vientre, así que, insuflamos en él de Nuestro Espíritu y confirmó las palabras de su Señor y Sus Escrituras y fue de las obedientes.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlii{\basmalahes Bendito sea Aquel en cuyas manos está el reino y que tiene poder sobre todas las cosas,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccxliii{el Cual ha creado la muerte y la vida para poner a prueba cuál de vosotros obra mejor. Y Él es el Todopoderoso, el Perdonador.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccxliv{Él es Quien ha creado siete cielos en planos sucesivos. No verás discordancias en la creación del Misericordioso. Vuelve tu vista ¿Has visto algún fallo?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlv{Luego, haz regresar tu vista una segunda vez. Tu vista regresará a ti cansada y derrotada.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlvi{Ciertamente, Hemos adornado el cielo de este mundo con lámparas y las hemos puesto para ser lanzadas como proyectiles contra los demonios. Y les daremos el castigo del Fuego llameante.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlvii{Y para quienes no creyeron en su Señor el castigo del Infierno. ¡Qué mal destino!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlviii{Cuando sean arrojados a él oirán una larga exhalación y será la superficie hirviente\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlix{como si estuviese a punto de reventar de ira. Cada vez que un grupo sea arrojado a él sus guardianes les preguntarán: «¿Acaso no vino a vosotros un amonestador?»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccl{Dirán: «Sí, vino a nosotros un amonestador pero le desmentimos y dijimos: Dios no ha hecho descender nada, sino que estáis en un gran extravío.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccli{Y dirán: «Si hubiésemos escuchado o reflexionado no estaríamos entre la gente del Fuego llameante.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcclii{Así reconocerán su pecado. ¡Alejada sea la gente del Fuego llameante!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccliii{En verdad, quienes temen a su Señor por lo que está oculto a los sentidos, obtendrán perdón y una gran recompensa.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccliv{Y, tanto si ocultáis lo que habláis como si lo manifestáis, en verdad, Él es Quien mejor conoce lo que hay en la esencia de los pechos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcclv{¿Acaso no va a conocer Quien creó y es el Sutil, el Bien Informado?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcclvi{Él es Quien ha hecho para vosotros la Tierra dócil, para que vayáis por sus lomas y comáis de sus provisiones. Y a Él es el retorno.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcclvii{¿Acaso estáis seguros de que quienes están en el cielo no harán que la Tierra se hunda con vosotros cuando tiemble?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcclviii{¿O estáis a salvo de que quienes están en el cielo envíen contra vosotros un viento huracanado? Pronto comprenderéis el significado de la amonestación.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcclix{Y juro que quienes vinieron antes de ellos también desmintieron. ¡Y cómo fue Mi castigo!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcclx{¿Acaso no ven las aves sobre ellos desplegando y recogiendo sus alas? Sólo las mantiene el Misericordioso. En verdad, Él tiene todas las cosas bajo observación.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxi{¿Quién es el ejército que os ayuda sino el Misericordiosísimo? En verdad, los que no creen sólo están en una ilusión.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxii{¿Quién puede proveeros si Él retiene Su provisión? Pero ellos persisten en su desafío y aversión.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxiii{¿Está mejor guiado quien camina cabizbajo o quien camina erguido sobre un camino recto?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxiv{Di: «Él es Quien os ha otorgado la existencia y ha puesto para vosotros el oído y la vista y el intelecto. ¡Que poco agradecéis!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxv{Di: «Él es Quien os ha creado en la Tierra y hacía Él seréis congregados.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxvi{Y dicen: «¿Cuándo será esa promesa si es que sois sinceros?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxvii{Di: «En verdad, el conocimiento de ello lo tiene Dios y, en verdad, yo sólo soy un amonestador explícito y claro.»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxviii{Así pues, cuándo lo vean de cerca, se ennegrecerá el rostro de quienes no eran creyentes y se les dirá: «Esto es lo que reclamabais.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxix{Di: «Si Dios acaba conmigo y con quienes conmigo están o tiene misericordia de nosotros ¿Quién librará a los que no creen de un castigo doloroso?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxx{Di: «Él es el Clementísimo. Nosotros hemos creído en Él y en Él confiamos. Así pues, pronto conoceréis quién está en un extravío manifiesto.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxi{Di: «Decidme, si vuestra agua se sumergiese ¿Quién podrá ofreceros agua corriente?»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxii{\basmalahes Nun. Juro por el cálamo y lo que escriben:\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxiii{Tú, gracias a tu Señor, no eres un loco\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxiv{y, en verdad, hay para ti una recompensa sin límite\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxv{y, en verdad, posees un nobilísimo carácter.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxvi{Así pues, pronto verás y ellos pronto verán\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxvii{quién de vosotros está seducido por la demencia.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxviii{En verdad, tu Señor es Quien mejor conoce quién se extravía de Su camino y Él es Quien mejor conoce a quienes están bien guiados.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxix{Así pues, no obedezcas a quienes desmienten.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxx{Ellos quisieran que tú dieses señales de tolerancia con ellos y así ellos darían señales de tolerancia contigo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxi{Y no obedezcas a ningún perjuro vil\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxii{que todo lo critica con ironía y autosuficiencia y es un murmurador, un calumniador,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxiii{que impide el bien, es trasgresor y un gran malhechor,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxiv{opresor arrogante y, además de todo eso, bastardo,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxv{so pretexto de ser dueño de bienes e hijos.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxvi{Si le recitas Nuestros versículos, dice: «Fábulas de los primitivos.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxvii{Pronto le marcaremos los morros.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxviii{En verdad, les hemos puesto a prueba igual que pusimos a prueba a los dueños del jardín, cuando juraron que recogerían sus frutos por la mañana,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxix{sin hacer excepciones.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmccxc{En la oscura noche cayó sobre él un azote enviado por tu Señor mientras ellos dormían.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmccxci{Así pues, amaneció como un árbol sin frutos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcii{Y se llamaban unos a otros por la mañana:\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmccxciii{«Apresuraos para ir a vuestro jardín si queréis recoger la fruta.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmccxciv{Y se fueron hacia allá, hablando en secreto:\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcv{«Hoy no entrará en él ningún necesitado.»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcvi{Y marcharon temprano con premura, con la decisión tomada de cumplir su prohibición y de recoger rápidamente la fruta sin dar ni una pieza a los necesitados.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcvii{Y cuando lo vieron, dijeron: «En verdad, nos hemos extraviado.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcviii{¡No! ¡Hemos sido despojados!»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcix{El más moderado de ellos dijo: «¿No os dije que por qué no glorificabais a Dios?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmccc{Dijeron: «¡Glorificado sea nuestro Señor! En verdad, hemos sido opresores.»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmccci{Y se volvieron unos a otros con recriminaciones,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcccii{diciendo: «¡Ay de nosotros! ¡Hemos sido rebeldes!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmccciii{Puede que nuestro Señor nos dé a cambio algo mejor que él. En verdad, nos hemos vuelto a nuestro Señor completamente.»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmccciv{Así es el castigo. Y el castigo de la otra vida es, con seguridad, mayor. Si lo supieran...\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmcccv{En verdad, para los temerosos de Dios hay, junto a su Señor, Jardines de Delicias.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmcccvi{¿Acaso vamos a tratar a los musulmanes como a los malhechores?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmcccvii{¿Qué os pasa? ¿Cómo juzgáis?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmcccviii{¿O poseéis una Escritura en la que estudiáis,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmcccix{que, en verdad, os permite hacer lo que queráis?\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmcccx{¿O poseéis alguna promesa de Nuestra parte que os garantice hasta el Día del Levantamiento cualquier cosa que juzguéis conveniente?\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxi{Pregúntales quién de ellos garantiza eso.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxii{¿O acaso poseen socios? Entonces, que vengan con sus socios, si son sinceros.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxiii{[Recuérdales] el día en el que se descubran las piernas y sean conminados a prosternarse y no puedan.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxiv{Humillada su mirada, sobrecogidos por el abatimiento. Ciertamente, fueron invitados a prosternarse cuando aún estaban sanos.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxv{Déjame con quienes desmintieron éstas palabras. Les iré llevando gradualmente hacia su perdición sin que se den cuenta.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxvi{Y les doy un plazo. En verdad Mis planes son sólidos y precisos.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxvii{Acaso les pides una recompensa que les abruma por su peso?\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxviii{¿O conocen lo que está oculto a los sentidos y escriben?\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxix{Así pues, ten paciencia y espera el juicio de tu Señor y no seas como el hombre del pez cuando suplicaba lleno de ira.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxx{De no haberle alcanzado una merced venida de su Señor habría sido arrojado a un árido desierto, execrado, reprobado, condenado.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxi{Su Señor le eligió y le puso con los justos y rectos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxii{Y, en verdad, los que no creen están a punto de fulminarte con la mirada cuando escuchan el Recuerdo y dicen: «¡Verdaderamente, está loco!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxiii{¡Y no es más que un recuerdo para beneficiar a todo el mundo!\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxiv{\basmalahes La inevitable\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxv{¿Qué es la inevitable?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxvi{Y ¿Qué te hará entender lo que es la inevitable?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxvii{Zamud y Ad desmintieron el Día de la Catástrofe.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxviii{Los Zamud fueron destruidos por el Grito.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxix{Y los Ad fueron destruidos por un viento helado y veloz\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxx{que se desencadenó contra ellos durante siete noches y ocho días sucesivos. Y podías ver a las gentes caídas en el suelo, como troncos de palmera arrancados de raíz.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxi{¿Ves algún resto de ellos?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxii{Erraron el Faraón y los que vinieron antes de él y los pueblos de la gente de Lot.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxiii{Desobedecieron al Mensajero de su Señor y Él les arrebató con un arrebato tremendo.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxiv{En verdad, cuando desbordó el agua, os subimos a la nave\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxv{para hacer de ella un recuerdo para vosotros y para que lo transmitáis a los oídos receptivos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxvi{Cuando se sople la trompeta con un solo trompetazo\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxvii{y la Tierra y las montañas sean aplastadas y pulverizadas de un solo temblor,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxviii{ese día tendrá lugar el Acontecimiento.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxix{Se quebrará el cielo y ese día no tendrá consistencia\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxl{y los ángeles estarán sobre él y ocho cargarán ese día el Trono de tu Señor sobre ellos.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxli{Ese día seréis expuestos. Nada de vosotros quedará oculto.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlii{Así, quienes reciban su libro en su mano derecha, dirán: «¡Tomad y leed mi libro!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxliii{En verdad, yo estaba seguro de encontrarme con la cuenta.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxliv{Así pues, disfruta ahora una vida satisfactoria\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlv{en un Jardín elevado,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlvi{frutos maduros al alcance de la mano.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlvii{¡Comed y bebed a placer por el bien que hicisteis en los días del pasado!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlviii{Pero quienes reciban su libro en su mano izquierda, dirán: «¡Ay de mí! ¡Ojalá no se me hubiese dado el libro\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlix{y no hubiese sabido lo que era la cuenta!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcccl{¡Ojalá hubiese sido esa el fin de todo!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcccli{¡Todos mis bienes no me sirven de nada!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmccclii{¡He perdido toda autoridad!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcccliii{«¡Prendedlo y encadenadlo!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcccliv{Luego, ¡Enfrentadle al fuego inmenso del Infierno!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmccclv{Luego, ¡Apresadle con una cadena de setenta codos y dejadle así!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmccclvi{En verdad, no creía en Dios Inmenso\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmccclvii{y no animaba a dar alimento al necesitado.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmccclviii{Así que, hoy no tiene aquí ningún amigo.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmccclix{Ni más comida que guislin.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmccclx{No la comerán más que los transgresores pertinaces.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxi{Y juro por lo que veis\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxii{y por lo que no veis\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxiii{que es, en verdad, la palabra de un Mensajero noble.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxiv{Y su palabra no es la de un poeta. ¡Qué poca es la fe que tenéis!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxv{Ni su palabra es la de un adivino. ¡Que poco os dejáis amonestar!\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxvi{Es hecha descender gradualmente de parte del Señor del Universo.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxvii{Si él hubiese presentado su palabra como palabra Mía\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxviii{habríamos tomado de él Nuestro derecho,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxix{luego, habríamos cortado su arteria vital\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxx{y ninguno de vosotros habría podido ocultármelo.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxi{Y, en verdad, él es un recuerdo para los temerosos de Dios.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxii{Y, en verdad, conocemos que algunos de vosotros son desmentidores\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxiii{y él es un motivo de remordimiento para los que no creen.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxiv{Y él es la Verdad cierta.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxv{Así pues, ¡Glorifica el nombre de tu Señor el Inmenso!\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxvi{\basmalahes Uno que pide, pide que tenga lugar el castigo.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxvii{Los que no creen no tendrán defensa\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxviii{ante Dios, Dueño de las estaciones graduales.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxix{Ascenderán los ángeles y el Espíritu hacía Él en un día cuya duración es de cincuenta mil años.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxx{Así pues, ¡Se paciente con una paciencia hermosa!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxi{En verdad, ellos lo ven lejano\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxii{pero Nosotros lo vemos cercano.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxiii{Día en el que el cielo estará como derretido, licuado,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxiv{y las montañas serán como copos de algodón rojizo\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxv{y un ser querido no hablará a su ser querido,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxvi{aun viéndole. El malhechor quisiera liberarse del castigo de ese día dando en pago por ello a sus hijos,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxvii{a su mujer y a su hermano,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxviii{la tribu que le considera parte de ellos\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxix{y todos los que están en la Tierra, si pudiera salvarse de él.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxc{¡No será así! No. En verdad, es un Fuego de brasas ardientes\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxci{que arrancará las extremidades\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcii{y que convoca a quien dio la espalda y se apartó\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxciii{y acumuló bienes y fue avaro.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxciv{En verdad, el ser humano ha sido creado impaciente.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcv{Cuando le alcanza un mal se desespera\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcvi{y si le alcanza el bien es mezquino.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcvii{Exceptuando a quienes rezan.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcviii{Aquellos que son constantes en su oración,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcix{de sus bienes dan su derecho establecido\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcd{al mendigo y al desfavorecido,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcdi{confirman el Día de la Recompensa\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcdii{y temen el castigo de su Señor.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcdiii{¡En verdad, del castigo de su Señor nadie está a salvo!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcdiv{Y protegen su sexualidad,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcdv{excepto con sus esposas o sus esclavas. En ese caso, ellos no serán censurados.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcdvi{Pero, quienes busquen más allá de eso, serán los transgresores.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmcdvii{Y son cumplidores con lo que se les confía y de sus promesas.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmcdviii{Y se mantienen firmes en sus testimonios\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmcdix{y protegen sus oraciones.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmcdx{Esos serán honrados en Jardines.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxi{¿Qué les sucede a los que no creen, que acuden presurosos hacia ti sin apartar los ojos\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxii{y que están en grupos a la derecha y a la izquierda?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxiii{¿Tiene cada uno de ellos la esperanza de ser introducido en el Jardín de las Delicias?\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxiv{¡No será así! En verdad, les hemos creado para lo que saben.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxv{¡No será así! Juro por el Señor de los Orientes y los Occidentes que Nosotros tenemos poder\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxvi{para cambiarles por otros mejores que ellos, sin que nadie pueda impedírnoslo.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxvii{Así pues, déjales que discutan y jueguen hasta que les llegue el día que les ha sido prometido.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxviii{Día en el que saldrán de las tumbas precipitadamente, como si se dirigiesen apresuradamente a una meta,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxix{abrumada su vista, humillados por el abatimiento. ¡Ese es el día que se os prometía!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxx{\basmalahes En verdad, Nosotros enviamos a Noé a su pueblo: «¡Amonesta a tu pueblo antes que venga a ellos un castigo doloroso!»\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxi{Él dijo: «¡Oh, pueblo mío! En verdad, yo soy para vosotros un amonestador claro.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxii{Adorad a Dios y sed temerosos de Él y obedecedme.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxiii{Él os perdonará por vuestros pecados y os dará un plazo por un tiempo determinado. En verdad, habéis de saber que cuando se cumpla el plazo de Dios no será pospuesto.»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxiv{Dijo: «¡Señor mío! ¡He llamado a mi pueblo noche y día\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxv{y mi invitación sólo ha servido para que se alejen más!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxvi{Y, en verdad, cada vez que les invito para que Tú les perdones, ponen sus dedos en sus oídos y se cubren con sus ropas, persisten en su hostilidad y se muestran extremadamente arrogantes.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxvii{«Luego, les he invitado en voz alta y manifiesta.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxviii{«Luego, les he hablado en público y en privado\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxix{y les he dicho: Pedid el perdón de vuestro Señor. En verdad, Él es muy perdonador.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxx{«Envía el cielo sobre vosotros cargado de abundantes lluvias\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxi{e incrementa vuestros bienes e hijos y pone para vosotros jardines y pone para vosotros ríos.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxii{«¿Qué pasa con vosotros que no ponéis vuestra esperanza en la grandeza de Dios\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxiii{cuando es Él quien os ha creado con caracteres diferentes?»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxiv{«¿No habéis visto cómo Dios ha creado siete cielos sucesivos\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxv{y cómo ha puesto la Luna en ellos como una luz y ha puesto el Sol como una lámpara?»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxvi{«Y Dios os hace crecer de la Tierra como plantas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxvii{Luego, os hace regresar a ella y (luego) os hace salir totalmente.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxviii{«Y Dios puso la Tierra para vosotros plana como una alfombra\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxix{para que viajéis por sus caminos.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxl{Noé dijo: «¡Señor mío! Ellos me han desobedecido y han seguido a quien sus bienes e hijos sólo incrementan su perjuicio\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxli{y han preparado un gran plan.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlii{Y dicen: «¡No abandonéis a vuestros dioses! ¡No abandonéis a Wad ni a Suwaa ni a Yaguza y Yauqa y Nasr!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxliii{«¡Y, con seguridad, ellos han extraviado a muchos! ¡No incrementes a los opresores más que su extravío!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxliv{Fueron ahogados por sus iniquidades y se les hará entrar en un Fuego y no encontrarán, aparte de Dios, quien les auxilie.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlv{Y Noé dijo: «¡Señor mío! ¡No dejes sobre la Tierra a ninguno de los que no son creyentes!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlvi{Si les dejas, extraviarán a Tus siervos y no engendrarán más que hijos corruptos y muy descreídos.»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlvii{«¡Dios mío! ¡Perdóname y perdona a mis padres y a quien entre en mi casa siendo creyente, y a los creyentes y a las creyentes, y no incrementes a los opresores más que ruina!»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlviii{\basmalahes Di: «Me ha sido revelado que él fue escuchado por un grupo de los genios e inmediatamente dijeron: «Hemos escuchado una recitación sorprendente\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlix{que guía en la dirección correcta y hemos creído en ella y no asociamos nada a nuestro Señor.»\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdl{«Y que dice que Él, exaltada sea la grandeza de nuestro Señor, no ha tomado compañera ni hijo,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdli{y que nuestros estúpidos habían estado diciendo sobre Dios cosas alejadas de la verdad\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlii{y que nosotros creíamos que los hombres y los genios no decían mentiras sobre Dios\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcdliii{y que hombres de los humanos buscaban refugio en hombres de los genios y ellos les incrementaron su pecado y su rebeldía\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcdliv{y que ellos pensaban, como pensabais vosotros, que Dios no había designado Mensajero a nadie.»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlv{«Y cuando nos acercamos al cielo, encontramos que estaba lleno de guardianes severos y de meteoritos flamígeros.»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlvi{«Y nosotros nos sentábamos allí en un lugar para escuchar, pero quien escucha ahora encuentra un meteorito flamígero esperándole.»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlvii{«Y no sabemos si se quiere el mal para quienes están en la Tierra o quiere para ellos su Señor que accedan a la realidad.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlviii{«Y que, entre nosotros, hay quienes son rectos y entre nosotros hay quienes no lo son. Somos caminos separados.»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlix{«Y ahora sabemos con certeza que no podemos imponernos a Dios en la Tierra y que no podemos escapar de Él.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlx{«Y que, cuando escuchamos la guía creímos en ella. Y quien cree en su Señor no temerá ser calumniado ni oprimido.»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxi{«Y que de los nuestros, los hay que se han sometido a la orden de Dios y de los nuestros, los hay que tienden a alejarse de la Verdad.» Y quienes se han sometido al mandato de Dios han alcanzado el vértice de la realidad y del encuentro con la Verdad.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxii{En cuanto a los que tienden al mal, son leña para el Infierno.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxiii{«Y que si se mantienen firmes en la senda, les suministraremos agua en abundancia\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxiv{hasta ponerles a prueba con ello.» «Y a quien se aparte del recuerdo de su Señor eso le conducirá a un castigo cada vez mayor.»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxv{«Y que las mezquitas pertenecen a Dios. Así pues, no invoquéis a nadie junto a Dios.»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxvi{«Y que, cuando el siervo de Dios se levantó para invocarle, acudieron tantos a él que a punto estuvieron de ser multitud.»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxvii{Di: «En verdad, invoco a mi Señor y no asocio nadie a Él.»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxviii{Di: «En verdad, yo no poseo poder para perjudicaros ni para dirigiros.»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxix{Di: «Nadie puede protegerme de Dios y no encuentro refugio en otro que Él.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxx{Mi única responsabilidad es hablar de Dios y de Sus mensajes.» Y a quien desobedezca a Dios y a Su Mensajero le pertenece el Fuego del Infierno, en el que estará eternamente. Siempre.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxi{Hasta que, cuando vean lo que se les había prometido, comprendan quién es más débil en auxiliares y menor en número.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxii{Di: «No sé si está cercano lo que os ha sido prometido o si mi Señor le ha dado un plazo.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxiii{Él es el Conocedor de lo oculto a los sentidos y nadie accede a Su ocultación\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxiv{excepto aquel de los Mensajeros con quién Él se complace y, entonces, Él le pone guardianes por delante y por detrás\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxv{para saber que, con seguridad, han transmitido los mensajes de Su señor. Él abarca todo lo que tiene que ver con ellos y lleva cuenta de todo.»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxvi{\basmalahes ¡Oh, tú que estás envuelto en un manto!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxvii{Levántate en la noche excepto una pequeña parte,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxviii{la mitad de ella o quita de ella un poco\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxix{o añádele un poco y recita el Corán de manera fluida y clara.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxx{En verdad, pronto te transmitiremos palabras de gran peso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxi{En verdad, la oración de la noche conecta tu lengua con el corazón y pone más presencia y atención en tus palabras.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxii{En verdad, durante en día estás muy ocupado\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxiii{Y recuerda el nombre de tu Señor y ocúpate sólo de suplicarle y rezarle.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxiv{El Señor del Oriente y del Occidente. No hay más dios que Él. Así pues ¡Tómale como protector!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxv{Y ten paciencia con lo que digan y apártate de ellos con educación.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxvi{¡Déjame solo con los desmentidores, esos que disfrutan de bienestar, y dales un pequeño plazo!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxvii{En verdad, con Nosotros estarán las cadenas y el Infierno,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxviii{un alimento que se atraganta y un doloroso castigo,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxix{el día que tiemblen la Tierra y las montañas y sean las montañas como arena que se desmorona.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxc{En verdad, hemos enviado a vosotros un Mensajero que sea testigo sobre vosotros, igual que enviamos a Faraón un Mensajero.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxci{Faraón desobedeció al Mensajero y le atrapamos con un castigo duro y pesado.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcii{Y, si no creéis, cómo vais a temer un día en el que a los niños se les pondrá el pelo blanco.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxciii{Ese día, el cielo se partirá y Su promesa se realizará.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxciv{En verdad, esto es un motivo de reflexión, así pues, quien quiera que tome un camino en dirección a su Señor.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcv{En verdad, tu Señor sabe que permaneces levantado casi dos tercios de la noche, la mitad o un tercio de ella, así como un grupo de los que están contigo. Dios establece la noche y el día. Él sabe que no podéis calcularlo con exactitud y acepta vuestro arrepentimiento. Así pues, recitad lo que podáis del Corán. Él sabe que algunos de vosotros estaréis enfermos y otros estáis recorriendo la Tierra buscando el favor de Dios y que otros están combatiendo por la causa de Dios. Así pues, recitad lo que podáis de él. Y haced la oración y dad la limosna purificadora de la riqueza y haced a Dios un buen préstamo. Y el bien que enviéis por delante para vosotros mismos, lo encontraréis junto a Dios como una recompensa mejor y mayor. Y pedid el perdón de Dios. En verdad, Dios es perdonador, misericordiosísimo con los creyentes.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcvi{\basmalahes ¡Oh, tú que estás arropado!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcvii{Levántate y amonesta\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcviii{y proclama la grandeza de tu Señor\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcix{y purifica tu ropa\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmd{y mantente apartado de la impureza y el pecado.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdi{Y no des pensando que es mucho\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdii{y se paciente por tu Señor.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdiii{Y cuando la trompeta sea soplada,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdiv{ese día será un día de dificultades.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdv{No será fácil para los que no son creyentes.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdvi{Dejadme con quien he creado Yo solo\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdvii{y para quien puse bienes abundantes\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdviii{e hijos que estén junto a él.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdix{Y le he facilitado la vida\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdx{Pero aun desea más.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdxi{¡Pero no será así! En verdad, él se oponía a Nuestras señales.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdxii{Pronto le haré atravesar grandes dificultades.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdxiii{En verdad, él ha reflexionado y decidido.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdxiv{Así pues ¡Que le maten! ¡Cómo ha decidido!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdxv{¡Que le vuelvan a matar! ¡Cómo ha decidido!\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdxvi{Después ha observado,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdxvii{luego ha fruncido el ceño y su rostro ha mostrado su horrible fealdad,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdxviii{luego, ha mostrado su desprecio y arrogancia\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdxix{y ha dicho: «Esto no es más que magia transmitida desde antiguo.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdxx{Esto no son más que palabras de un ser humano.»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxi{¡Pronto le enviaré al Infierno de Saqar!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxii{Y ¿Qué te hará entender lo que es Saqar?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxiii{¡No deja nada vivo, no deja nada!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxiv{Abrasa la piel.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxv{Sobre él hay diecinueve.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxvi{Y no hicimos que los compañeros del Fuego fuesen sino ángeles y no les hicimos que fuesen en ese número sino para poner a prueba a quienes no tienen fe y para que obtengan la certeza quienes tomaron la Escritura e incremente la fe de los creyentes. Y para que no alberguen dudas ni quienes tomaron la Escritura ni los creyentes. Y para que digan aquellos que tienen una enfermedad en su corazón y los que no creen: «¿Qué desea Dios con ese ejemplo?» Así extravía Dios a quien Él quiere y guía a quien Él quiere. Y nadie conoce los ejércitos de tu Señor excepto Él. Y ellos no son más que un recuerdo para los humanos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxvii{¡Pero no! ¡Lo juro por la Luna!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxviii{¡Por la noche cuando declina!\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxix{¡Por la mañana cuando brilla!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxx{¡En verdad, él es una de la grandes señales!\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxi{¡Una advertencia para los humanos!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxii{Para quien de vosotros quiera adelantarse o quedarse atrás.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxiii{Cada alma es responsable de lo que hizo.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxiv{Pero los compañeros de la derecha\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxv{estarán en Jardines y preguntarán\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxvi{a los malhechores:\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxvii{«¿Qué os ha llevado al Saqar?»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxviii{Dirán: «No éramos de los que rezaban,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxix{ni éramos de los que alimentan al necesitado\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmdxl{y sólo nos preocupábamos de lo intrascendente.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmdxli{Y desmentíamos el Día de la Recompensa\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlii{hasta que nos llegó la certeza.»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmdxliii{Y no les beneficiará la intercesión de los intercesores.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmdxliv{¿Qué les sucede que se apartan del Recuerdo\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlv{como burros salvajes espantados\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlvi{que huyen del león cazador?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlvii{Cada uno de ellos quiere que le sea entregado un pergamino desplegado.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlviii{¡No será así, pues no temen la otra vida!\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlix{¡No será así! ¡Él es un Recuerdo!\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmmdl{Así pues, quien quiera que lo recuerde.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmmdli{Y no recordarán más que si quiere Dios. Él es propicio. Es Quien castiga y Quien perdona.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmmdlii{\basmalahes ¡Juro por el Día del Levantamiento!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdliii{¡Y juro por el alma que aconseja el bien!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdliv{¿Piensa el ser humano que no reuniremos sus huesos?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdlv{Pues sí. Tenemos poder para recomponer sus huellas dactilares.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdlvi{Pero el ser humano desea seguir viviendo en el pecado.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdlvii{Pregunta él: «¿Cuándo tendrá lugar el Día del Levantamiento?»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdlviii{Así, cuando se debilite la vista\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdlix{y se oculte la Luna\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdlx{y se junten el Sol y la Luna,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxi{ese día el ser humano dirá: «¿Dónde está el lugar por el que escapar?»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxii{Pues no. No hay refugio.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxiii{Ese día el lugar de encuentro será en dirección a tu Señor.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxiv{Ese día será informado el ser humano de lo que envió por delante y de lo que dejó atrás.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxv{El ser humano es quien mejor conoce su propia alma\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxvi{aunque trate de disculparse.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxvii{No muevas con él tu lengua para apresurarle.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxviii{En verdad, reunirlo y recitarlo es responsabilidad Nuestra.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxix{Así pues, cuando Nosotros lo hayamos terminado de recitar, repite su recitación.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxx{Luego, en verdad, Nosotros nos encargamos de explicarlo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxi{¡Pero no! Amáis la vida transitoria\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxii{y descuidáis la Otra.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxiii{Ese día, algunos rostros estarán radiantes\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxiv{mirando a su Señor\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxv{y algunos rostros, ese día, estarán contraídos\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxvi{al saber que sufrirán un castigo que les quebrará la columna.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxvii{¡Pero no! Cuando alcance las clavículas\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxviii{Y se diga: «¿Quién puede salvarle?»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxix{y él sepa que le ha llegado el tiempo de la separación\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxx{y una pierna se junte con la otra,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxi{ese día, será conducido hacia su Señor.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxii{Él nunca aceptó ni rezó\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxiii{sino que desmintió y se apartó.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxiv{Luego, fue hacia su gente con arrogancia.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxv{¡Es lo mejor para ti, es lo mejor!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxvi{¡Sí! ¡Es lo mejor para ti, es lo mejor!\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxvii{¿Acaso cree el ser humano que será dejado a su antojo y no Nos ocuparemos de él?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxviii{¿Acaso no fue una gota de esperma eyaculado?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxix{Luego fue algo suspendido y Él le creó y le dio forma\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdxc{e hizo de él la pareja del macho y la hembra.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdxci{¿Acaso alguien así no es capaz de dar vida a lo muerto?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcii{\basmalahes ¿Acaso ha existido un momento en el que el ser humano no haya sido una cosa recordada?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdxciii{En verdad, Nosotros creamos al ser humano de una gota mezclada y le fuimos cambiando de estado y forma y le dimos capacidad de oír y ver.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdxciv{En verdad, le guiamos al camino, lo agradezca o lo rechace.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcv{En verdad, para los que rechazan hemos preparado cadenas y argollas y un Fuego abrasador.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcvi{En verdad, los píos beberán de una copa sazonada con alcanfor,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcvii{procedente de una fuente de la que beberán los siervos de Dios y que ellos harán manar donde y cuando quieran.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcviii{Fueron leales a sus promesas y temieron un día cuyo mal se extenderá\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcix{Y alimentaron, por amor a Él, al necesitado, al huérfano y al preso:\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdc{«En verdad, os alimentamos por agradar a Dios. No queremos de vosotros recompensa ni agradecimiento.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdci{En verdad, tememos de parte de nuestro Señor un día terrible y fatídico.»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcii{Así pues, Dios les protegerá del mal de ese día y les colmará de felicidad y alegría\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdciii{y su recompensa, por haber sido pacientes, será un Jardín y [vestidos de] seda.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdciv{En él estarán reclinados sobre cojines y no verán Sol ni frío extremos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcv{Sobre ellos una sombra amplia y frutos fáciles de alcanzar.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcvi{[Sirvientes] alrededor de ellos, darán vueltas con recipientes de plata y copas cristalinas,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcvii{de cristal de plata y de las proporciones que ellos deseen.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcviii{Allí, les escanciarán una copa perfumada con jengibre.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcix{Allí, habrá una fuente llamada Salsabil\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcx{y darán vueltas alrededor de ellos sirvientes de eterna juventud que, al verles, pensarías que son perlas esparcidas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxi{Y, cuando lo veas, verás una gran bendición y un gran reino.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxii{Llevarán vestidos de fina seda verde y brocados y serán adornados con brazaletes de plata y su Señor les dará de beber una bebida pura:\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxiii{«En verdad, ésta es vuestra recompensa. Vuestro esfuerzo ha sido apreciado.»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxiv{En verdad, Nosotros hicimos descender sobre ti el Corán gradualmente.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxv{Así pues, ten paciencia con el juicio de tu Señor y no obedezcas a quienes de ellos son pecadores o desagradecidos\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxvi{y recuerda el nombre de tu Señor mañana y tarde.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxvii{Y en la noche, prostérnate para Él. Y glorifícale por la noche largamente.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxviii{En verdad, esos aman la vida transitoria y descuidan un día duro que viene tras ellos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxix{Nosotros les hemos creado y hemos fortalecido su constitución y cuando quisiéramos les podríamos cambiar por otros semejantes a ellos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxx{En verdad, esto es un motivo de reflexión. Así pues, quien quiera, que tome un camino hacia su Señor.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxi{Y no lo querréis a menos que Dios lo quiera. En verdad, Dios es conocedor, sabio.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxii{Introduce a quien Él quiere en Su misericordia y a los opresores les ha preparado un castigo doloroso.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxiii{\basmalahes Juro por los sucesivos Mensajeros\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxiv{que viajan con la velocidad de un viento huracanado\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxv{y juro por quienes difunden por todos lados\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxvi{y establecen claramente las diferencias\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxvii{y juro por quienes facilitan el encuentro con el Recuerdo\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxviii{que sirve de justificación y que amonesta:\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxix{En verdad, lo que os fue prometido se cumplirá.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxx{Así pues, cuando las estrellas pierdan su luz\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxi{y cuando el cielo se parta\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxii{y cuando las montañas sean pulverizadas\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxiii{y cuando sean emplazados los Mensajeros a dar su testimonio\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxiv{¿A qué día serán convocados?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxv{Al Día de la Diferencia.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxvi{Y ¿Qué te hará entender lo que es el Día de la Diferencia?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxvii{¡Ay ese día los desmentidores!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxviii{¿Acaso no destruimos a los primeros\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxix{e hicimos que los últimos les siguieran?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxl{Así mismo haremos con los malhechores.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxli{¡Ay ese día los desmentidores!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlii{¿Acaso no os hemos creado de un líquido viscoso\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxliii{que hemos colocado en un receptáculo seguro\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxliv{durante un periodo determinado\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlv{y entonces hemos dispuesto? ¡Y qué bien disponemos!\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlvi{¡Ay, ese día, de los desmentidores!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlvii{¿Acaso no hemos colocado la Tierra como lugar de encuentro\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlviii{para los vivos y los muertos?\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlix{¿Y no hemos puesto en ella altas y firmes cordilleras y escanciado para vosotros agua dulce y deliciosa?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcl{¡Ay, ese día, de los desmentidores!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcli{¡Id hacia aquello que desmentíais!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdclii{Id hacia una nube de humo con tres ramificaciones,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcliii{que no da sombra ni protege de las llamas.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdcliv{En verdad, él lanza lenguas de fuego como castillos.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdclv{¡Como si fueran camellos amarillos!\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdclvi{¡Ay, ese día, de los desmentidores!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdclvii{¡Ese día no hablarán\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdclviii{y no se les permitirá ofrecer disculpas!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdclix{¡Ay, ese día, de los desmentidores!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdclx{¡Ese es el Día de la Diferencia, en el que os hemos reunido a vosotros y a los primeros!\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxi{Así pues, si tenéis algún plan utilizadlo contra Mí.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxii{¡Ay, ese día, de los desmentidores!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxiii{En verdad, los temerosos de Dios tendrán sombras y fuentes\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxiv{y de las frutas que prefieran.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxv{«¡Comed y bebed a placer (en recompensa) por lo que hacíais!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxvi{En verdad, así es como recompensamos a quienes hacen el bien.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxvii{¡Ay, ese día, de los desmentidores!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxviii{«¡Comed y disfrutad un poco! ¡En verdad que sois malhechores!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxix{¡Ay, ese día, de los desmentidores!\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxx{Y cuando se les dice «¡Inclinaos!» no se inclinan.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxi{¡Ay, ese día, de los desmentidores!\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxii{Así pues, ¿En qué discurso van a creer si no creen en él?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxiii{\basmalahes ¿Acerca de qué se preguntan unos a otros?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxiv{Acerca de la grandiosa noticia\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxv{sobre la cual mantienen diferencias.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxvi{¡Pero no es así! ¡Pronto van a saber!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxvii{¡No es así! ¡Pronto van a saber!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxviii{¿Acaso no hemos hecho de la Tierra lecho?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxix{¿Y de las montañas estacas?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxx{¿Y os hemos creado por parejas?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxi{¿E hicimos de vuestro sueño descanso?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxii{¿E hicimos de la noche vestidura?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxiii{¿Y pusimos el día para ganar el sustento?\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxiv{¿Y construimos sobre vosotros siete firmes (cielos)?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxv{¿Y pusimos una lámpara radiante?\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxvi{¿E hicimos descender de las nubes agua a torrentes,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxvii{para hacer surgir por medio de ella grano y plantas\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxviii{y jardines frondosos?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxix{En verdad, el Día de la Diferencia está fijado para el último momento.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxc{El día en el que soplen la trompeta y acudan en tropeles\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxci{y se abra el cielo y sea todo puertas\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcii{y se desmoronen las montañas y parezcan un espejismo.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxciii{En verdad, el Infierno será un destino,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxciv{un lugar de regreso para los rebeldes,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcv{en el que permanecerán indefinidamente.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcvi{Allí no probarán nada fresco ni bebida alguna,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcvii{excepto agua hirviendo y pus líquida.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcviii{Recompensa adecuada.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcix{En verdad, ellos contaban con que no regresarían\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcc{y desmintieron Nuestras señales categóricamente.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcci{Pero Nosotros hemos contabilizado todo por escrito\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdccii{Probad pues. No os incrementaremos más que el castigo.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcciii{En verdad, a los temerosos de Dios les aguarda una gran victoria.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdcciv{Jardines y viñedos\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccv{y parejas vírgenes y hermosas de su misma edad\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccvi{y copas desbordantes.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccvii{Allí no escucharán conversaciones vanas ni falsedades\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccviii{Una recompensa de tu Señor. Un regalo calculado.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccix{Señor de los cielos y la Tierra y de lo que entre ellos hay. El Clementísimo. No tendrán derecho a dirigirse a Él.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdccx{El día en que vengan las almas y los ángeles en filas, no hablará más que aquel que haya sido autorizado por el Clementísimo y no dirá más que la verdad.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxi{¡Ese será el día de la Verdad! Así pues, quien quiera, que tome un camino de regreso hacia su Señor.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxii{En verdad, os hemos advertido de un castigo cercano el día en que vea el hombre lo que envió por delante de sí mismo. Y el incrédulo dirá: “¡Ay de mí! ¡Ojalá fuese polvo!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxiii{\basmalahes Juro por los que arrancan con violencia,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxiv{por quienes extraen suavemente,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxv{por quienes se apresuran,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxvi{por quienes van por delante,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxvii{por quienes dirigen los asuntos:\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxviii{El día en que sea tocada la trompeta que provoque el temblor\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxix{seguido por otro toque,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxx{que los corazones, ese día, se estremecerán\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxi{y observarán temerosos\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxii{y dirán: «¿En verdad regresaremos a nuestro estado primitivo\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxiii{después de haber sido huesos descompuestos?»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxiv{Dirán: «Será, entonces, un ruinosos regreso.»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxv{Se producirá un solo tañido\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxvi{y ¡helos aquí! vivos sobre la Tierra pelada.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxvii{¿Te hemos relatado la historia de Moisés\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxviii{cuando le llamó su Señor en el valle sagrado de Tuwa?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxix{«Ve al Faraón. En verdad se ha endiosado.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxx{y dile: «¿Quieres purificarte\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxi{y que yo te guíe hacia tu Señor para que seas temeroso?»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxii{Así pues, le hizo ver la gran señal,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxiii{pero él desmintió y rehusó obedecer.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxiv{Luego, dio la espalda y se esforzó.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxv{Luego, congregó a la gente y la arengó,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxvi{diciendo: «Yo soy vuestro Señor Supremo».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxvii{Así que Dios le infligió el castigo de la otra vida y de ésta.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxviii{En verdad, en todo esto hay una lección para quien tema.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxix{¿Sois vosotros más difíciles de crear o el cielo que Él construyó?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxl{Él elevó su altura y lo ordenó armoniosamente\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxli{Oscureció su noche y alumbró su día\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlii{y, después de ello, expandió la Tierra,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxliii{sacando de ella el agua y los pastos\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxliv{y fijó firmemente las montañas\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlv{para vuestro disfrute y el de vuestro ganado.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlvi{Y cuando llegue el gran acontecimiento,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlvii{el día en el que el ser humano recuerde sus esfuerzos\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlviii{y sea mostrado el Infierno a quien vea,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlix{quien haya sido rebelde\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdccl{y preferido la vida mundanal\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdccli{tendrá el Infierno por albergue\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclii{y quien haya temido la comparecencia ante su Señor y haya apartado el alma de las pasiones\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdccliii{tendrá el Jardín por albergue.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdccliv{Te preguntan sobre la Hora ¿Cuándo tendrá lugar?\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclv{Y ¿Quién eres tú para informar de ella?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclvi{Su conclusión corresponde a tu Señor.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclvii{En verdad, tú eres sólo un amonestador para quienes la temen.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclviii{El día que la vean les parecerá que no han permanecido más que una tarde o una mañana.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclix{\basmalahes Frunció el ceño y volvió la espalda\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclx{cuando el ciego vino junto a él.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxi{Y ¿Cómo puedes saber? Puede que él se purificase\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxii{o aceptase la amonestación y ésta le aprovechase.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxiii{A ese que alardea de su riqueza\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxiv{tú le atiendes complacido.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxv{¿Y qué te importa si no se purifica?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxvi{Pero a quien acude a ti anhelante\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxvii{y es temeroso\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxviii{no le prestas atención.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxix{¡Pero no! En verdad, esto es un recordatorio\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxx{-Así pues, quien quiera lo recordará-\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxi{recogido en páginas nobles,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxii{sublimes, purificadas,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxiii{de las manos de enviados\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxiv{nobles y píos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxv{¡Que perezca el ser humano! ¡Qué ingrato es!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxvi{¿De qué cosa le ha creado Él?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxvii{De una gota le ha creado y le ha determinado de manera equilibrada.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxviii{Luego, ha hecho fácil el camino para él.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxix{Luego, le hace morir y le entierra.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxx{Luego, cuando Él quiera, le resucitará.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxi{Pero no. No ha cumplido lo que Él le ha ordenado.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxii{Que el ser humano observe aquello de lo que se alimenta.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxiii{Cómo derramamos el agua en abundancia.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxiv{Luego, Nosotros hacemos que la Tierra se abra\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxv{y hacemos que brote en ella el grano,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxvi{la uva y los vegetales,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxvii{el olivo y la palmera datilera\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxviii{y frondosos jardines\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxix{y frutas y pastos\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxc{para disfrute vuestro y de vuestro ganado.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxci{Así pues, cuando llegue a vosotros el Tañido ensordecedor,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcii{el día en que huya el hombre de su hermano\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxciii{y de su madre y de su padre\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxciv{y de su esposa e hijos,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcv{a cada cual, ese día, le bastará su propia preocupación\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcvi{Ese día habrá rostros resplandecientes,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcvii{sonrientes, felices\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcviii{y otros rostros, ese día, ensombrecidos,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcix{cubiertos por la tristeza.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdccc{Esos serán los incrédulos, los depravados.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdccci{\basmalahes Cuando el Sol sea enrollado\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccii{y cuando caigan las estrellas\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdccciii{y cuando las montañas se desmoronen\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccciv{y cuando las camellas preñadas de diez meses sean abandonadas\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccv{y cuando las fieras sean agrupadas\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccvi{y cuando los mares se llenen de fuego\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccvii{y cuando las almas sean emparejadas\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccviii{y cuando a la niña enterrada viva se le pregunte\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccix{por qué delito fue matada\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccx{y cuando las páginas escritas sean desenrolladas\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxi{y cuando el cielo sea despellejado\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxii{y cuando el Infierno sea avivado\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxiii{y cuando el Jardín sea aproximado,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxiv{entonces, cada alma conocerá lo que presenta.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxv{¡Pues no! ¡Juro por los que se ocultan!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxvi{¡Los planetas que giran a gran velocidad y se esconden!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxvii{Y juro por la noche cuando se va\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxviii{y juro por la mañana cuando respira\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxix{que, en verdad, él es la palabra de un Mensajero noble,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxx{poderoso, y distinguido cerca del Dueño del Trono,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxi{donde es obedecido y digno de confianza.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxii{Y vuestro compañero no está loco\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxiii{y, ciertamente, él le vio en el claro horizonte\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxiv{y no es tacaño con lo que está oculto a los sentidos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxv{Y ello no es la palabra de un Satanás maldecido\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxvi{Así pues ¿A dónde vais?\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxvii{Ello es sólo un recuerdo para los mundos,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxviii{para quien de vosotros quiera ir recto.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxix{Pero no lo querréis a menos que lo quiera Dios, el Señor de los Mundos.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxx{\basmalahes Cuando el cielo se hienda,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxi{cuando las estrellas se dispersen,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxii{cuando los mares se confundan unos con otros,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxiii{cuando los sepulcros sean vueltos del revés,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxiv{sabrá el alma lo que hizo y lo que dejó de hacer.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxv{¡Oh, humano! ¿Qué fue lo que te sedujo y apartó de tu Señor, el Generosísimo,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxvi{el Cual te creó, te formó y te perfeccionó\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxvii{y te compuso en la forma que quiso?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxviii{¡Pero no! ¡Vosotros desmentís la Recompensa!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxix{Y, en verdad, sobre vosotros hay ángeles guardianes,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxl{honorables escribas de vuestras acciones.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxli{Ellos saben lo que hacéis.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlii{En verdad, los que obraron bien estarán en la bendición\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxliii{y, en verdad, los que hicieron el mal estarán en el Infierno,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxliv{en el que entrarán y arderán el Día de la Recompensa\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlv{y del que no podrán ausentarse.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlvi{¿Y qué te hará entender lo que es el Día de la Recompensa?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlvii{Otra vez ¿Qué te hará entender lo que es el Día de la Recompensa?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlviii{Es el día en el que un alma no poseerá nada que dar a otra alma y el mando en ese día será sólo de Dios.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlix{\basmalahes ¡Ay de los defraudadores!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccl{Esos que, cuando compran, exigen la medida exacta\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccli{pero, cuando ellos dan la medida o el peso a otros, defraudan.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclii{¿Acaso no piensan que serán resucitados\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccliii{para un día grandioso,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccliv{el día en el que los humanos comparecerán ante el Señor de los Mundos?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclv{¡Pero no! En verdad, el registro de los malvados está en Siyyin.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclvi{¿Y qué te hará entender lo que es Siyyin?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclvii{Es una escritura detallada.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclviii{¡Ay, ese día, de los desmentidores!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclix{¡Aquellos que desmentían el Día de la Recompensa!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclx{Y nadie lo desmiente, excepto quien es un trasgresor pecador.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxi{Cuando les son recitados nuestros versículos dicen: «¡Fábulas de los primitivos!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxii{¡Pero no! ¡Lo que hacían enmoheció sus corazones!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxiii{¡Pero no! ¡En verdad, ese día no podrán contemplar a su Señor!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxiv{Luego, entrarán y arderán en el Infierno.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxv{Luego, se les dirá: «¡Esto era lo que desmentíais!»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxvi{¡Pero no! ¡En verdad, el registro de los que hacen el bien está en Il.liyyin!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxvii{¿Y qué te hará entender lo que es Il.liyyin?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxviii{Es una escritura detallada\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxix{que los cercanos atestiguarán.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxx{En verdad, quienes hacen el bien estarán entre bendiciones,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxi{reclinados en asientos, contemplando.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxii{Reconocerás en sus rostros el resplandor de las bendiciones.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxiii{Les será escanciado un néctar sellado.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxiv{Su sello será almizcle -¡que quienes emulan emulen por ello!-\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxv{mezclado con Tasnim,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxvi{una fuente de la que beberán los cercanos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxvii{En verdad, los malvados se burlaban de quienes eran creyentes\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxviii{y cuando pasaban junto a ellos se hacían guiños de complicidad\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxix{cuando regresaban a sus gentes regresaban satisfechos y orgullosos de su comportamiento\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxx{y cuando les veían decían: «¡En verdad que están extraviados!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxi{aunque no habían sido enviados a ellos de protectores.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxii{Así pues, hoy los creyentes se reirán de los que no creen,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxiii{reclinados en asientos, contemplando\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxiv{si los que no creían han sido recompensados por lo que hacían.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxv{\basmalahes Cuando el cielo se rompa\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxvi{y escuche la orden de su Señor, como debe ser,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxvii{y cuando la Tierra sea allanada y extendida\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxviii{y arroje cuanto en ella hay y quede vacía\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxix{y escuche la orden de su Señor, como debe ser…\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxc{Oh, humano! En verdad, te esfuerzas afanosamente hacia tu Señor y te encontrarás con Él.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxci{Así pues, a quien le sea entregada su escritura en su mano derecha\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcii{pronto será juzgado con benevolencia\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxciii{y regresará feliz a su gente.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxciv{Pero a quien le sea entregada su escritura por detrás de su espalda,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcv{pronto suplicará [diciendo]: «¡Estoy perdido!»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcvi{y entrará y arderá en el Fuego llameante.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcvii{¡En verdad, estaba contento entre su gente!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcviii{¡En verdad, creía que no regresaría jamás!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcix{¡Sí! ¡En verdad, su Señor le observaba!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcm{Juro por el rojo del crepúsculo\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmi{y por la noche y lo que reúne\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmii{y por la Luna cuando está llena,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmiii{que os transformaréis gradualmente.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmiv{Así pues, ¿Qué les sucede que no creen\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcmv{y que, cuando se les recita el Corán no se prosternan?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcmvi{Pero los que no creen lo desmienten.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcmvii{Y Dios es quien mejor conoce lo que ocultan.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcmviii{Así pues, infórmales de un castigo doloroso,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcmix{excepto a aquellos que creen y realizan buenas acciones. Para ellos hay una recompensa inacabable.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcmx{\basmalahes Juro por el cielo constelado\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxi{y por el día prometido\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxii{y por un testigo y lo testimoniado:\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxiii{¡Maldita sea la gente del foso\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxiv{de fuego inmenso!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxv{que se sentaron ante él\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxvi{presenciando lo que hacían a los creyentes.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxvii{Y sólo se vengaron de ellos porque creían en Dios, el Todopoderoso, el Digno de Alabanza,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxviii{a Quien pertenece el reino de los cielos y la Tierra. Y Dios es testigo de todas las cosas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxix{En verdad, quienes persiguen y torturan a los creyentes y a las creyentes y luego no se arrepienten, sufrirán el castigo del Infierno y el castigo del Fuego.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxx{En verdad, quienes creen y actúan rectamente tendrán Jardines de cuyas profundidades brotan los ríos. Ese es el gran triunfo.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxi{En verdad, el castigo de tu Señor será severísimo.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxii{En verdad, Él es Quien inicia la creación y Quien la hace regresar a la vida\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxiii{y Él es el Perdonador, el Afectuoso,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxiv{el Señor del Trono Glorioso.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxv{Él hace lo que quiere.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxvi{¿Ha llegado a ti la historia de los ejércitos\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxvii{del Faraón y de Zamud?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxviii{Pero los que no creen persisten en desmentir,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxix{aunque Dios les tiene cercados.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxx{Por el contrario, es un Corán glorioso\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxi{(registrado) en una tabla protegida.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxii{\basmalahes Juro por el cielo y por Tariq.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxiii{¿Y qué te hará saber lo que es Tariq?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxiv{Es la estrella que brilla en la noche.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxv{En verdad, no hay alma que no tenga un guardián sobre ella.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxvi{Así pues, que observe el ser humano de qué ha sido creado.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxvii{Ha sido creado de un líquido eyaculado\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxviii{que sale de entre la columna y las costillas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxix{En verdad, Él tiene poder para hacerle regresar\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxl{el día en que serán examinados los secretos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxli{Y él no tendrá fuerza ni quien le auxilie.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlii{Juro por el cielo que regresa\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxliii{y por la Tierra que se abre.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxliv{En verdad, él es una palabra discriminadora\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlv{y no para ser tomada a broma.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlvi{En verdad, ellos organizan planes\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlvii{y yo organizo planes.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlviii{Así pues, da a los que no son creyentes un pequeño plazo.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlix{\basmalahes ¡Glorifica el nombre de tu Señor, el Altísimo!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcml{Quien ha creado y ordenado\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmli{y Quien ha determinado y guiado\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlii{y Quien hace surgir la hierba\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmliii{y la transforma en heno oscuro.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmliv{Te haremos recitar y no olvidarás\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlv{excepto lo que Dios quiera. En verdad, Él conoce lo manifiesto y lo que se oculta.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlvi{Y te facilitaremos un camino fácil.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlvii{Así pues, advierte cuando la advertencia sea beneficiosa.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlviii{Se dejará amonestar quien sea temeroso\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlix{y se apartará de ella el infame,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlx{el cual será arrojado al Fuego Mayor,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxi{en el cual no morirá ni vivirá.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxii{Con seguridad, triunfará quien se purifique\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxiii{y recuerde el nombre de su Señor y rece.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxiv{Pero vosotros preferís la vida mundana,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxv{aunque la otra es mejor y más permanente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxvi{En verdad, esto está en los escritos primeros.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxvii{Los escritos de Abraham y de Moisés.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxviii{\basmalahes ¿Ha llegado a ti el relato de la que cubre?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxix{Algunos rostros, ese día, estarán sombríos,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxx{agitados, fatigados.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxi{Entrarán en el Fuego abrasador.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxii{Se les dará de beber de una fuente hirviente.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxiii{No tendrán más alimento que Dariy,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxiv{que no engorda ni sacia el hambre.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxv{Otros rostros, ese día, resplandecerán\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxvi{satisfechos por su esfuerzo,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxvii{en un Jardín excelso,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxviii{en el que no escucharán palabras vanas.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxix{En él hay una fuente que mana.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxx{En él, lechos elevados\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxi{y copas servidas,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxii{filas de cojines en los que recostarse\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxiii{y gruesas alfombras extendidas.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxiv{¿Acaso no han observado cómo han sido creados los camellos?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxv{¿Y cómo ha sido elevado el cielo?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxvi{¿Y cómo han sido fijadas las montañas?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxvii{¿Y cómo ha sido extendida la Tierra?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxviii{Así pues ¡Amonesta! En verdad, tú sólo eres un amonestador.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxix{No tienes poder para obligarles.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxc{Pero a quien dé la espalda y descrea\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxci{Dios le castigará con el castigo mayor.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcii{En verdad, regresarán a Nosotros.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxciii{Luego, en verdad, a Nosotros nos corresponderá ajustarles las cuentas\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxciv{\basmalahes Juro por la aurora\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcv{y por las diez noches\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcvi{y por el par y el impar\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcvii{y por la noche cuando se retira.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcviii{¿No es esto suficiente juramento para el que posee intelecto?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcix{¿No has visto lo que hizo tu Señor con la gente de Ad?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmm{¿Con Iram la de las columnas,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmi{semejante a la cual no fue creada ninguna otra en la Tierra?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmii{¿Y con Zamud, que excavaron la roca en el valle?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmiii{¿Y con Faraón, el señor de las estacas?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmiv{que se endiosaron en la Tierra\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmv{e incrementaron la corrupción en ella?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmvi{Así, tu Señor descargó con fuerza sobre ellos el látigo del castigo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmvii{En verdad, tu Señor está siempre vigilante.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmviii{En cuanto al ser humano, cuando su Señor le pone a prueba honrándole y bendiciéndole, dice: «Mi Señor me ha honrado.»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmix{Pero cuando le pone a prueba ajustándole la provisión, dice: «Mi Señor me ha humillado.»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmx{¡Pero no! Lo que sucede es que no sois generosos con el huérfano,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmxi{ni os estimuláis unos a otros a alimentar al necesitado\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmxii{y devoráis las herencias con un apetito insaciable\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmxiii{y amáis las riquezas con un amor desaforado\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmmxiv{¡Pero no! Cuando la Tierra quede totalmente allanada\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmmxv{y venga tu Señor y los ángeles dispuestos en filas sucesivas\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmmxvi{y se haga venir ese día al Infierno… Ese día, recordará el ser humano y de nada le servirá el recuerdo.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmmxvii{Dirá: «¡Ay de mi! ¡Ojalá hubiese enviado por delante algo de bien para mi vida!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmmxviii{Así, ese día nadie castigará con Su castigo\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmmxix{y nadie apresará con Su presa.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmmxx{¡Oh, alma sosegada!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxi{¡Regresa a tu Señor, satisfecha de Él y Él satisfecho de ti!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxii{Entra con Mis siervos,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxiii{y entra en Mi Jardín.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxiv{\basmalahes Juro por esta ciudad,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxv{por esta ciudad en la que tú resides,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxvi{y por un padre y lo que engendra:\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxvii{Ciertamente, hemos creado al ser humano en el esfuerzo y el cansancio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxviii{¿Cree que nadie tiene poder sobre él?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxix{Dice: «¡He derrochado una gran fortuna!»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxx{¿Cree que nadie le ve?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxi{¿Acaso no le hemos puesto dos ojos?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxii{¿Y una lengua y dos labios?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxiii{¿Y no le hemos indicado las dos vías?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxiv{Sin embargo no se apresura a subir la cuesta.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxv{¿Y qué te hará saber lo que es la cuesta?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxvi{Es liberar a un esclavo\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxvii{o alimentar en días de hambre\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxviii{a un familiar huérfano\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxix{o a un necesitado polvoriento,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmxl{y ser de los que creen y se aconsejan mutuamente la paciencia y se aconsejan mutuamente la misericordia.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmxli{¡Esos son la gente de la derecha!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlii{Y aquellos que no creen en Nuestras señales son la gente de la izquierda,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmxliii{a quienes el Fuego rodeará por todos lados.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmmxliv{\basmalahes Juro por el Sol y por el esplendor de la mañana\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlv{y por la Luna cuando le sigue\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlvi{y por el día cuando la muestra\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlvii{y por la noche cuando la cubre\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlviii{y por el cielo y Quien lo construyó\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlix{y por la Tierra y Quien la extendió\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmml{y por un alma y Quien la creo de forma armoniosa y equilibrada,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmli{inspirándole lo que la corrompe y el temor que la mantiene a salvo:\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmlii{Ciertamente, habrá triunfado quien la purifique\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmliii{y habrá fracasado quien la corrompa\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmliv{Tamud, en su rebeldía, desmintió\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmlv{cuando el más miserable de ellos se alzó,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmlvi{a pesar de que el Mensajero de Dios les había dicho: «¡Ésta es la camella de Dios, dejadla beber!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmlvii{Pero le desmintieron y la mataron y su Señor les castigó por su pecado y les aniquiló a todos por igual,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmlviii{sin temer las consecuencias.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmlix{\basmalahes Juro por la noche cuando cubre\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmlx{y por el día cuando se manifiesta\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxi{y por Quien ha creado al varón y a la hembra,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxii{que, en verdad, vuestros esfuerzos obtienen diferentes resultados.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxiii{Así pues, a quien dé y sea temeroso de Dios\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxiv{y crea en la buena promesa,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxv{le facilitaremos las cosas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxvi{Pero a quien sea avaro y se crea autosuficiente\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxvii{y desmienta la buena promesa,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxviii{le haremos difícil las cosas\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxix{y no le beneficiará su riqueza cuando muera.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxx{En verdad, Nosotros tenemos la guía\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxi{y a Nosotros pertenece la otra vida y la primera\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxii{Y os he advertido del Fuego llameante\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxiii{al cual sólo será arrojado el más descreído,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxiv{que desmiente y se aparta.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxv{Y se librará de él quien sea más temeroso,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxvi{que dé de sus bienes y los purifique,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxvii{y que no hace el bien esperando recompensa,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxviii{sino buscando la satisfacción de su Señor el Altísimo.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxix{Y pronto será satisfecho.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxx{\basmalahes Juro por la mañana cuando resplandece\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxi{y por la noche cuando todo está en calma,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxii{que tu Señor no te ha abandonado ni está enojado contigo.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxiii{Y, ciertamente, la otra vida será mejor para ti que la primera\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxiv{y pronto te dará tu Señor y estarás satisfecho.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxv{¿Acaso no te encontró huérfano y te amparó?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxvi{¿Y te encontró perdido y te guió?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxvii{¿Y te encontró pobre y te enriqueció?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxviii{Así pues, no oprimas al huérfano\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxix{ni alejes al mendigo\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmxc{y proclama la merced de tu Señor.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmxci{\basmalahes ¿Acaso no hemos abierto tu pecho\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcii{y te hemos liberado de la carga\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmxciii{que pesaba sobre tu espalda?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmxciv{¿Y hemos elevado para ti el recuerdo?\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcv{Así, en verdad, con la dificultad, la facilidad.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcvi{En verdad, junto a la dificultad, la facilidad.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcvii{Así pues, cuando hayas acabado tus obligaciones, esfuérzate en tu adoración\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcviii{y vuélvete a tu Señor anhelante.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcix{\basmalahes Juro por la higuera y el olivo\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmc{y por el monte Sinaí\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmci{y por esta ciudad segura\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcii{que, ciertamente, hemos creado al ser humano en la mejor condición.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmciii{Luego, le hemos relegado a lo más bajo de lo bajo,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmciv{excepto a aquellos que creen y actúan rectamente, pues para ellos hay una recompensa ilimitada.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcv{Así pues, ¿Qué es lo que te hace desmentir la Recompensa?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcvi{¿No es Dios el mejor de los jueces?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcvii{\basmalahes Recita en el nombre de tu Señor, el Cual ha creado.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcviii{Ha creado al ser humano a partir de algo que está suspendido.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcix{Recita. Tu Señor es el Más Generoso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcx{Es Quien ha enseñado por medio de la escritura\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxi{Ha enseñado al ser humano lo que éste no conocía.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxii{¡Pero no! En verdad, el ser humano se rebela\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxiii{cuando se cree autosuficiente.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxiv{En verdad, el regreso es hacia tu Señor.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxv{¿Has visto a quien prohíbe\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxvi{a un siervo que rece?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxvii{¿Has visto si está sobre la buena guía\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxviii{u ordena el temor de Dios?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxix{¿Has visto si desmiente y se aparta?\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxx{¿Acaso no sabe que Dios ve?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxi{¡Pero no! Si no termina con eso le arrastraremos del flequillo.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxii{Flequillo mentiroso y pecador.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxiii{Que llame entonces a sus colegas. Nosotros llamaremos\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxiv{a los ángeles guardianes del Infierno.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxv{¡Pero no! No le obedezcas, prostérnate y busca la cercanía de Dios.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxvi{\basmalahes En verdad, lo hemos hecho descender en la Noche del Decreto.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxvii{¿Y qué te hará entender lo que es la Noche del Decreto?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxviii{La Noche del Decreto es mejor que mil meses.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxix{Descienden en ella los ángeles y el Espíritu con el permiso de tu Señor sobre todos los asuntos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxx{Hay paz en ella hasta la llegada del amanecer.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxi{\basmalahes No fueron separados los que no creían de la gente de la Escritura y los idólatras hasta que no llegó a ellos la prueba clara.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxii{Un Mensajero procedente de Dios que les recita escritos purificados\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxiii{en los que hay mensajes y disposiciones claras y firmes.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxiv{Y no se dividieron aquellos a quienes fue dada la Escritura excepto después de haber llegado a ellos la prueba clara.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxv{Y no les fue ordenado sino que adorasen a Dios, con fe en Él únicamente, como verdaderos buscadores de la Verdad, que hicieran la oración y que diesen el impuesto purificador de la riqueza. Y esa es la religión verdadera.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxvi{En verdad, los que no creen de la gente de la Escritura y los idólatras estarán eternamente en el fuego del Infierno. Ellos son lo peor de la Creación.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxvii{En verdad, quienes creen y actúan rectamente son lo mejor de la Creación\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxviii{Su recompensa junto a su Señor serán los Jardines del Edén, de cuyas profundidades brotan los ríos, en los que estarán eternamente, para siempre. Dios estará satisfecho de ellos y ellos lo estarán de Él. Eso será para quien tema a su Señor.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxix{\basmalahes Cuando la Tierra tiemble con su temblor\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxl{y la Tierra expulse su carga\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxli{y diga el ser humano: «¿Qué le sucede?»\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlii{Ese día, relatará sus crónicas\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxliii{conforme a lo que Dios la inspire.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxliv{Ese día, regresarán los seres humanos en grupos con estados diferentes, para que les sean mostradas sus acciones\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlv{Así pues, quien haga el peso de un átomo de bien, lo verá\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlvi{y quien haga el peso de un átomo de mal, lo verá.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlvii{\basmalahes Juro por los que galopan jadeantes\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlviii{y hacen saltar chispas (con sus cascos)\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlix{y atacan al enemigo por sorpresa al amanecer,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcl{levantando una nube de polvo\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcli{e irrumpiendo en grupo entre las filas enemigas\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclii{que, en verdad, el ser humano es muy ingrato con su Señor\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcliii{y, en verdad, él mismo es consciente de ello.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcliv{En verdad, ama en exceso la riqueza.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclv{¿Acaso no sabe que, cuando sea expulsado lo que hay en las tumbas\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmclvi{y se manifieste y diferencie lo que hay en los pechos,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmclvii{en verdad, su Señor, ese día, estará bien informado de ello?\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmclviii{\basmalahes La catástrofe.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclix{¿Qué es la catástrofe?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclx{¿Y qué te hará entender lo que es la catástrofe?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxi{Es el día en que los seres humanos estarán como un tumulto de langostas desorientadas y dispersas\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxii{y las montañas como lana de colores deshilachada.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxiii{Entonces, aquel cuya balanza sea pesada\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxiv{disfrutará de una vida satisfactoria\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxv{y aquel cuya balanza sea ligera\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxvi{tendrá por hogar el abismo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxvii{¿Y qué te hará entender lo que es el abismo?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxviii{Es un Fuego abrasador.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxix{\basmalahes La rivalidad sin sentido por obtener mayores bienes materiales os mantendrá distraídos\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxx{hasta que os llegue el momento de visitar las tumbas.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxi{¡Pero no! ¡Pronto sabréis!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxii{Otra vez ¡No! ¡Pronto sabréis!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxiii{¡Pero no! ¡Si supieseis con certeza,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxiv{os juro que veríais el Fuego!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxv{Luego, os juro que lo veréis con certeza absoluta.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxvi{Luego, os juro que, ese día, seréis preguntados por las bendiciones.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxvii{\basmalahes Juro por la época\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxviii{que, en verdad, el ser humano va hacia su perdición,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxix{excepto aquellos que creen y realizan buenas acciones y se aconsejan unos a otros la Verdad y se aconsejan unos a otros la paciencia.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxx{\basmalahes ¡Ay de todo difamador murmurador\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxi{que acumula riqueza y la recuenta!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxii{Cree que su riqueza le eternizará.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxiii{¡Pero no! Juro que será arrojado al Hutama.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxiv{¿Y qué te hará entender los que es el Hutama?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxv{Es el fuego abrasador de Dios,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxvi{que llega hasta el fondo del alma.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxvii{En verdad, se cerrará sobre ellos\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxviii{en columnas alargadas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxix{\basmalahes ¿No has visto lo que hizo tu Señor con la gente del elefante?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxc{¿No hizo que fracasasen sus planes\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxci{y envió sobre ellos pájaros en bandadas sucesivas\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcii{que les lanzaron piedras de barro,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxciii{que les dejaron como heno masticado?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxciv{\basmalahes ¡Juro por la alianza de los Quraysh!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcv{¡Su alianza para el viaje de las caravanas de invierno y verano!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcvi{Así pues, que adoren al Señor de esta Casa,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcvii{el Cual les da de comer en tiempos de hambruna y les da seguridad ante el temor.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcviii{\basmalahes ¿Has visto a quien desmiente el Día de la Recompensa?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcix{Es el mismo que aparta de sí violentamente al huérfano\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcc{y que no anima a alimentar al necesitado.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcci{Así pues ¡Ay de los que rezan\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccii{y que son negligentes con su oración!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcciii{Aquellos que la hacen para ser vistos\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcciv{y niegan la ayuda.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmccv{\basmalahes En verdad, te hemos otorgado la abundancia.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccvi{Así pues, reza a tu Señor y ofrece sacrificios\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccvii{En verdad, quien te odia es el que no tendrá descendencia.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccviii{\basmalahes Di: «¡Oh, vosotros que no creéis!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccix{No adoro lo que vosotros adoráis,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccx{ni vosotros sois adoradores de lo que yo adoro.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxi{Y yo no soy adorador de lo que vosotros adorabais\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxii{y vosotros no sois adoradores de lo que yo adoro.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxiii{Para vosotros vuestra religión y para mí mi religión.»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxiv{\basmalahes Cuando llegue el auxilio de Dios y la victoria\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxv{y veas a los seres humanos entrando en la religión de Dios en oleadas sucesivas,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxvi{glorifica con alabanzas a tu Señor y busca Su perdón. En verdad, Él acepta al que se arrepiente.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxvii{\basmalahes Que perezcan las manos de Abu Lahab y que perezca él.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxviii{No le servirá de nada su riqueza ni todo lo que obtuvo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxix{Entrará en un Fuego llameante\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxx{y también su mujer, la portadora de leña,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxi{con una cuerda de esparto rodeando su cuello.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxii{\basmalahes Di: «Él es Dios, uno.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxiii{Dios, eterno.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxiv{No ha engendrado ni ha sido engendrado\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxv{y no hay otro semejante a Él.»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxvi{\basmalahes Di: «Me refugio en el Señor del alba\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxvii{del mal de lo que Él ha creado\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxviii{y del mal de la oscuridad de la noche cuando se extiende\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxix{y del mal de las sopladoras de nudos\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxx{y del mal del envidioso cuando envidia.»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxi{\basmalahes Di: «Me refugio en el Señor de los seres humanos,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxii{el Rey de los seres humanos,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxiii{el dios de los seres humanos,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxiv{del mal del susurrante tentador,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxv{el que susurra en el pecho de los seres humanos\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxvi{y procede de los genios y de los seres humanos.»\qt@no{(6)}}
+%% End of file `qurantext-esi.translation.def'.
diff --git a/Master/texmf-dist/tex/xelatex/quran-es/qurantext-esii.translation.def b/Master/texmf-dist/tex/xelatex/quran-es/qurantext-esii.translation.def
new file mode 100644
index 00000000000..974240a703a
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/quran-es/qurantext-esii.translation.def
@@ -0,0 +1,6237 @@
+\qt@newcmd\qurantrans@es@i{¡En el nombre de Alá, el Compasivo, el Misericordioso!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@ii{Alabado sea Alá, Señor del universo,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@iii{el Compasivo, el Misericordioso,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@iv{Dueño del día del Juicio,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@v{A Ti solo servimos y a Ti solo imploramos ayuda.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@vi{Dirígenos por la vía recta,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@vii{la vía de los que Tú has agraciado, no de los que han incurrido en la ira, ni de los extraviados.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@viii{\basmalahes `lm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@ix{Ésta es la Escritura, exenta de dudas, como dirección para los temerosos de Alá,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@x{que creen en lo oculto, hacen la azalá y dan limosna de lo que les hemos proveído.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@xi{creen en lo que se te ha revelado a ti y antes de ti, y están convencidos de la otra vida.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@xii{Ésos son los dirigidos por su Señor y ésos los que prosperarán.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@xiii{Da lo mismo que adviertas o no a los infieles: no creen.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@xiv{Alá ha sellado sus corazones y oídos; una venda cubre sus ojos y tendrán un castigo terrible.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@xv{Hay entre los hombres quienes dicen: «Creemos en Alá y en el último Día», pero no creen.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@xvi{Tratan de engañar a Alá y a los que creen; pero, sin darse cuenta, sólo se engañan a sí mismos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@xvii{Sus corazones están enfermos y Alá les ha agravado su enfermedad. Tendrán un castigo doloroso por haber mentido.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@xviii{Cuando se les dice: «¡No corrompáis en la tierra!», dicen: «Pero ¡si somos reformadores!»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@xix{¡No son ellos, en realidad, los corruptores? Pero no se dan cuenta.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@xx{Cuando se les dice: «¡Creed como creen los demás!», dicen: «¿Es que vamos a creer como creen los tontos?» Son ellos los tontos, pero no lo saben.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@xxi{Cuando encuentran a quienes creen, dicen: «¡Creemos!» Pero, cuando están a solas con sus demonios, dicen: «Estamos con vosotros, era sólo una broma».\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@xxii{Alá les devolverá la broma y les dejará que persistan en su rebeldía, errando ciegos.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@xxiii{Ésos son los que han trocado la Dirección por el extravío. Por eso, su negocio no ha resultado lucrativo y no han sido bien dirigidos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@xxiv{Son como uno que alumbra un fuego. En cuanto éste ilumina lo que le rodea, Alá se les lleva la luz y les deja en tinieblas: no ven.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@xxv{Son sordos, mudos, ciegos, no se convierten.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@xxvi{O como si viniera del cielo una nube borrascosa, cargada de tinieblas, truenos y relámpagos. Se ponen los dedos en los oídos contra el rayo, por temor a la muerte. Pero Alá cerca a los infieles.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@xxvii{El relámpago les arrebata casi la vista. Cuando les ilumina, caminan a su luz; pero, cuando les oscurece, se detienen. Si Alá hubiera querido, les habría quitado el oído y la vista. Alá es omnipotente.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@xxviii{¡Hombres! Servid a vuestro Señor, Que os ha creado, a vosotros y a quienes os precedieron. Quizás, así, tengáis temor de Él.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@xxix{Os ha hecho de la tierra lecho y del cielo edificio. Ha hecho bajar agua del cielo, mediante la cual ha sacado frutos para sustentaros. No atribuyáis iguales a Alá a sabiendas.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@xxx{Si dudáis de lo que hemos revelado a Nuestro siervo, traed una sura semejante y, si es verdad lo que decís, llamad a vuestros testigos en lugar de llamar a Alá.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@xxxi{Pero, si no lo hacéis -y nunca podréis hacerlo-, guardaos del fuego cuyo combustible lo constituyen hombres y piedras, y que ha sido preparado para los infieles.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@xxxii{Anuncia la buena nueva a quienes creen y obran bien: tendrán jardines por cuyos bajos fluyen arroyos. Siempre que se les dé como sustento algún fruto de ellos, dirán: «Esto es igual que lo que se nos ha dado antes». Pero se les dará algo sólo parecido. Tendrán esposas purificadas y estarán allí eternamente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@xxxiii{Alá no se avergüenza de proponer la parábola que sea, aunque se trate de un mosquito. Los que creen saben que es la Verdad, que viene de su Señor. En cuanto a los que no creen, dicen: «¿Qué es lo que se propone Alá con esta parábola?» Así extravía Él a muchos y así también dirige a muchos. Pero no extravía así sino a los perversos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@xxxiv{Quienes violan la alianza con Alá después de haberla concluido, cortan los lazos que Alá ha ordenado mantener y corrompen en la tierra, ésos son los que pierden.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@xxxv{¿Cómo podéis no creer en Alá, siendo así que os dio la vida cuando aún no existíais, que os hará morir y os volverá a la vida, después de lo cual seréis devueltos a Él?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@xxxvi{Él es Quien creó para vosotros cuanto hay en la tierra. Y subió al cielo e hizo de él siete cielos. Es omnisciente.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@xxxvii{Y cuando tu Señor dijo a los ángeles: «Voy a poner un sucesor en la tierra». Dijeron: «¿Vas a poner en ella a quien corrompa en ella y derrame sangre, siendo así que nosotros celebramos Tu alabanza y proclamamos Tu santidad?» Dijo: «Yo sé lo que vosotros no sabéis».\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@xxxviii{Enseñó a Adán los nombres de todos los seres y presentó éstos a los ángeles diciendo: «Informadme de los nombres de éstos, si es verdad lo que decís».\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@xxxix{Dijeron: «¡Gloria a Ti! No sabemos más que lo que Tú nos has enseñado. Tú eres, ciertamente, el Omnisciente, el Sabio».\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@xl{Dijo: «¡Adán! ¡Infórmales de sus nombres!» Cuando les informó de sus nombres, dijo: «¿No os he dicho que conozco lo oculto de los cielos y de la tierra y que sé lo que mostráis lo que ocultáis?»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@xli{Y cuando dijimos a los ángeles: «¡Prosternaos ante Adán!». Se prosternaron, excepto Iblis. Se negó y fue altivo: era de los infieles.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@xlii{Dijimos: «¡Adán! ¡Habita con tu esposa en el Jardín y comed de él cuanto y donde queráis. pero no os acerquéis a este árbol! Si no, seréis de los impíos».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@xliii{Pero el Demonio les hizo caer, perdiéndolo, y les sacó del estado en que estaban. Y dijimos: «¡Descended! Seréis enemigos unos de otros. La tierra será por algún tiempo vuestra morada y lugar de disfrute».\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@xliv{Adán recibió palabras de su Señor y Éste se volvió a él. Él es el Indulgente, el Misericordioso.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@xlv{Dijimos: «¡Descended todos de él! Si. pues, recibís de Mí una dirección, quienes sigan Mi dirección no tendrán que. temer y no estarán tristes.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@xlvi{Pero quienes no crean y desmientan Nuestros signos, ésos morarán en el Fuego eternamente».\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@xlvii{¡Hijos de Israel! Recordad la gracia que os dispensé y sed fieles a la alianza que conmigo concluisteis. Entonces, Yo seré fiel a la que con vosotros concluí. ¡Temedme, pues, a Mí y sólo a Mí!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@xlviii{¡Creed en lo que he revelado en confirmación de lo que habéis recibido! ¡No seáis los primeros en no creer en ello, ni malvendáis Mis signos! ¡Temedme, pues, a Mí. y sólo a Mí!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@xlix{¡No disfracéis la Verdad de falsedad, ni ocultéis la Verdad conociéndola!\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@l{¡Haced la azalá, dad el azaque e inclinaos con los que se inclinan!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@li{¿Mandáis a los hombres que sean piadosos y os olvidáis de vosotros mismos siendo así que leéis la Escritura? ¿Es que no tenéis entendimiento?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@lii{¡Buscad ayuda en la paciencia y en la azalá! Sí, es algo difícil, pero no para los humildes,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@liii{que cuentan con encontrar a su Señor y volver a Él.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@liv{¡Hijos de Israel! Recordad la gracia que os dispensé y que os distinguí entre todos los pueblos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@lv{Temed un día en que nadie pueda satisfacer nada por otro, ni se acepte la intercesión ajena, compensación ni auxilio.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@lvi{Y cuando os salvamos de las gentes de Faraón, que os sometían a duro castigo, degollando a vuestros hijos varones y dejando con vida a vuestras mujeres. Con esto os probó vuestro Señor duramente.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@lvii{Y cuando os separamos las aguas del mar y os salvamos, anegando a las gentes de Faraón en vuestra presencia.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@lviii{Y cuando nos dimos cita con Moisés durante cuarenta días. Luego, cuando se fue, cogisteis el ternero, obrando impíamente.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@lix{Luego, después de eso, os perdonamos. Quizás, así, fuerais agradecidos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@lx{Y cuando dimos a Moisés la Escritura y el Criterio. Quizás, así, fuerais bien dirigidos.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@lxi{Y cuando Moisés dijo a su pueblo: ¡Pueblo! Habéis sido injustos con vosotros mismos al coger el ternero. ¡Volveos a vuestro Creador y mataos unos a otros.! Esto es mejor para vosotros a los ojos de vuestro Creador. Así se aplacará. Él es el Indulgente, el Misericordioso».\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@lxii{Y cuando dijisteis: «¡Moisés! No creeremos en ti hasta que veamos a Alá claramente». Y el Rayo se os llevó, viéndolo vosotros venir.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@lxiii{Luego, os resucitamos después de muertos. Quizás, así, fuerais agradecidos.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@lxiv{Hicimos que se os nublara y que descendieran sobre vosotros el maná y las codornices: «¡Comed de las cosas buenas de que os hemos proveído!» No fueron injustos con Nosotros, sino que lo fueron consigo mismos.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@lxv{Y cuando dijimos: «¡Entrad en esta ciudad, y comed donde y cuando queráis de lo que en ella haya! ¡Entrad por la puerta prosternándoos y decid '¡Perdón!'» Os perdonaremos vuestros pecados y daremos más a quienes hagan el bien.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@lxvi{Pero los impíos cambiaron por otras las palabras que se les habían dicho e hicimos bajar contra los impíos un castigo del cielo por haber obrado perversamente.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@lxvii{Y cuando Moisés pidió agua para su pueblo. Dijimos: «¡Golpea la roca con tu vara!» Y brotaron de ella doce manantiales. Todos sabían de cuál debían beber. «¡Comed y bebed del sustento de Alá y no obréis mal en la tierra corrompiendo!»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@lxviii{Y cuando dijisteis: «¡Moisés! No podremos soportar una sola clase de alimento. ¡Pide a tu Señor de parte nuestra que nos saque algo de lo que la tierra produce: verduras, pepinos, ajos, lentejas y cebollas!» Dijo: «¿Vais a cambiar lo que es mejor por algo peor? ¡Bajad a Egipto y hallaréis lo que pedís!» La humillación y la miseria se abatieron sobre ellos e incurrieron en la ira de Alá. Porque no habían prestado fe a los signos de Alá y habían dado muerte a los profetas sin justificación. Porque habían desobedecido y violado la ley.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@lxix{Los creyentes, los judíos, los cristianos, los sabeos, quienes creen en Alá y en el último Día y obran bien. ésos tienen su recompensa junto a su Señor. No tienen que temer y no estarán tristes.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@lxx{Y cuando concertamos un pacto con vosotros y levantamos la montaña por encima de vosotros: «¡Aferraos a lo que os hemos dado y recordad su contenido! Quizás, así, seáis temerosos de Alá».\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@lxxi{Luego, después de eso, os volvisteis atrás y, si no llega a ser por el favor de Alá en vosotros y por Su misericordia, habriáis sido de los que pierden.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@lxxii{Sabéis, ciertamente, quiénes de vosotros violaron el sábado. Les dijimos: «¡Convertíos en monos repugnantes!»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@lxxiii{E hicimos de ello un castigo ejemplar para los contemporáneos y sus descendientes, una exhortación para los temerosos de Alá.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@lxxiv{Y cuando Moisés dijo a su pueblo: «Alá os ordena que sacrifiquéis una vaca». Dijeron: «¿Nos tomas a burla?» Dijo: «¡Alá me libre de ser de los ignorantes!»,\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@lxxv{Dijeron: «Pide a tu Señor de nuestra parte que nos aclare cómo ha de ser ella». Dijo: «Dice que no es una vaca vieja ni joven, sino de edad media. Haced, pues, como se os manda».\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@lxxvi{Dijeron: «Pide a tu Señor de nuestra parte que nos aclare de qué color ha de ser». Dijo: «Dice que es una vaca amarilla de un amarillo intenso, que haga las delicias de los que la miran».\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@lxxvii{Dijeron: «Pide a tu Señor de nuestra parte que nos aclare cómo es, pues todas las vacas nos parecen iguales. Así. si Alá quiere, seremos, ciertamente, bien dirigidos».\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@lxxviii{Dijo: «Dice que es una vaca que no ha sido empleada en el laboreo de la tierra ni en el riego del cultivo, sana, sin tacha». Dijeron: «Ahora has dicho la verdad». Y la sacrificaron, aunque poco faltó para que no lo hicieran.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@lxxix{Y cuando matasteis a un hombre y os lo recriminasteis, pero Alá reveló lo que ocultabais.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@lxxx{Entonces dijimos: «¡Golpeadlo con un pedazo de ella!» Así Alá volverá los muertos a la vida y os hará ver Sus signos. Quizás, así, comprendáis.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@lxxxi{Luego, después de eso, se endurecieron vuestros corazones y se pusieron como la piedra o aún más duros. Hay piedras de las que brotan arroyos, otras que se quiebran y se cuela el agua por ellas, otras que s vienen abajo por miedo a Alá. Alá está atento a lo que hacéis.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@lxxxii{¿Cómo vais a anhelar que os crean si algunos de los que escuchaban la Palabra de Alá la alteraron a sabiendas, después de haberla comprendido?\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@lxxxiii{Y, cuando encuentran a quienes creen, dicen: «¡Creemos!» Pero, cuando están a solas, dicen. «¿Vais a contarles lo que Alá os ha revelado para que puedan esgrimirlo como argumento contra vosotros ante vuestro Señor? ¿Es que no razonáis?»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@lxxxiv{¿No saben que Alá conoce lo que ocultan y lo que manifiestan?\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@lxxxv{Hay entre ellos gentiles que no conocen la Escritura, sino fantasías y no hacen sino conjeturar.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@lxxxvi{¡Ay de aquéllos que escriben la Escritura con sus manos y luego dicen: Esto viene de Alá, para, luego, malvenderlo! ¡Ay de ellos por lo que sus manos han escrito! ¡Ay de ellos por lo que han cometido!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@lxxxvii{Dicen: «El fuego no nos tocará más que por días contados». Di: «¿Os ha prometido algo Alá? Pues Alá no faltará a Su promesa. ¿O es que decís contra Alá lo que no sabéis?»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@lxxxviii{¡Pues sí! Quienes hayan obrado mal y estén cercados por su pecado, ésos morarán en el Fuego eternamente.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@lxxxix{Pero quienes hayan creído y obrado bien, ésos morarán en el Jardín eternamente.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@xc{Y cuando concertamos un pacto con los hijos de Israel: «¡No sirváis sino a Alá! ¡Sed buenos con vuestros padres y parientes, con los huérfanos y pobres, hablad bien a todos, haced la azalá dad el azaque!» Luego, os desviasteis, exceptuados unos pocos, y os alejasteis.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@xci{Y cuando concertamos un pacto con vosotros: «¡No derraméis vuestra sangre ni os expulséis de casa unos a otros!» Lo aceptasteis, sois testigos.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@xcii{Pero sois vosotros los que os matáis y expulsáis a algunos de los vuestros de sus casas, haciendo causa común contra ellos con pecado y violación de la ley. Y, si acuden a vosotros como cautivos, los rescatáis. El haberlos expulsado era ya ilícito. Entonces, ¿es que creéis en parte de la Escritura y dejáis de creer en otra parte? ¿Qué merecen quienes de vosotros tal hacen sino la ignominia en la vid de acá y ser enviados al castigo más duro el día de la Resurrección? Alá está atento a lo que hacéis.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@xciii{Ésos son los que han comprado la vida de acá a cambio de la otra. No se les mitigará el castigo ni encontrarán quien les auxilie.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@xciv{Dimos a Moisés la Escritura y mandamos enviados después de él. Dimos a Jesús, hijo de María, las pruebas claras y le fortalecimos con el Espíritu Santo. ¿Es que tenías que mostraros altivos siempre que venía a vosotros un enviado con algo que no deseabais? A unos les desmentisteis, a otros les disteis muerte.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@xcv{Dicen: «Nuestros corazones están incircuncisos». ¡No! Alá les ha maldecido por su incredulidad. Es tan poco lo que creen...\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@xcvi{Y cuando les vino de Alá una Escritura que confirmaba lo que ya tenían - antes, pedían un fallo contra los que no creían -, cuando vino a ellos lo que ya conocían, no le prestaron fe. ¡Que la maldición de Alá caiga sobre los infieles!\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@xcvii{¡Qué mal negocio han hecho, no creyendo en lo que Alá ha revelado, rebelados porque Alá favoreció a quien Él quiso de Sus siervos, e incurriendo en Su ira una y otra vez! Los infieles tendrán un castigo humillante.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@xcviii{Y cuando se les dice: «¡Creed en lo que Alá ha revelado!», dicen: «Creemos en lo que se nos ha revelado». Pero no creen en lo que vino después. que es la Verdad, en confirmación de lo que ya tenían. Di: «¿Por qué, pues, si erais creyentes, matasteis antes a los profetas de Alá?»,\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@xcix{Moisés os aportó pruebas claras. pero, ido, cogisteis el ternero, obrando impíamente.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@c{Y cuando concertamos un pacto con vosotros y levantamos la montaña por encima de vosotros: «¡Aferraos a lo que os hemos dado y escuchad!» Dijeron: «Oímos y desobedecemos». Y, como castigo a su incredulidad, quedó empapado su corazón del amor al ternero. Di: «Si sois creyentes, malo es lo que vuestra fe os ordena».\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@ci{Di: «Si se os reserva la Morada Postrera junto a Alá, con exclusión de otras gentes. entonces ¡desead la muerte. si sois consecuentes!»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@cii{Pero nunca la desearán por lo que sus manos han cometido. Alá conoce bien a los impíos.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@ciii{Verás que son los más ávidos de vivir, más aún que los asociadores. Hay entre ellos quien desearía vivir mil años, pero eso no le libraría del castigo. Alá ve bien o que hacen.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@civ{Di: «Si hay alguien enemigo de Gabriel -él es quien. autorizado por Alá. lo reveló a tu corazón, en confirmación de los mensajes anteriores, como dirección y buena nueva para los creyentes-,\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@cv{si hay alguien enemigo de Alá, de Sus ángeles, de Sus enviados, de Gabriel y de Miguel, Alá, a Su vez, es enemigo de los infieles».\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@cvi{Te hemos revelado, en verdad, signos claros y sólo los perversos pueden negarlos.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@cvii{¿Es que siempre que conciertan una alianza van algunos de ellos a rechazarla? No, la mayoría no creen.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@cviii{Y, cuando viene a ellos un Enviado mandado por Alá, que confirma lo que han recibido, algunos de aquéllos a quienes se había dado la Escritura se echan la Escritura de Alá a la espalda, como si no supieran nada.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@cix{Han seguido lo que los demonios contaban bajo el dominio de Salomón. Salomón no dejó de creer, pero los demonios sí, enseñando a los hombres la magia y lo que se había revelado a los os ángeles, Harut y Marut, en Babel. Y éstos no enseñaban a nadie, que no dijeran que sólo eran una tentación y que, por tanto, no debía dejar de creer. Aprendieron de ellos cómo dividir a un hombre de su esposa. Y con ello no dañaban a nadie sino autorizados por Alá. Aprendieron lo que les dañaba y no les aprovechaba, sabiendo bien que quien adquiría eso no iba a tener parte en la otra vida. ¡Qué mal negocio han hecho! Si supieran...\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@cx{Si hubieran creído y temido a Alá, la recompensa de Éste habría sido mejor. Si supieran...\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@cxi{¡Creyentes! ¡No digáis: «¡Raina!», sino «¡Unzurna!» y escuchad! los infieles tendrán un castigo doloroso.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@cxii{Los que no creen, tanto gente de la Escritura como asociadores, no desearían que vuestro Señor os enviara bien alguno. Pero Alá particulariza con Su misericordia a quien Él quiere. Alá es el Dueño del favor inmenso.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@cxiii{Si abrogamos una aleya o provocamos su olvido, aportamos otra mejor o semejante. ¿No sabes que Alá es omnipotente?\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@cxiv{¿No sabes que el dominio de los cielos y de la tierra es de Alá y que no tenéis. fuera de Alá, amigo ni auxiliar?\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@cxv{¿O preferís pedir a vuestro Enviado, como fue Moisés pedido antes? Quien cambie la fe por la incredulidad se ha extraviado del camino recto.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@cxvi{A muchos de la gente de la Escritura les gustaría hacer de vosotros infieles después de haber sido creyentes, por envidia, después de habérseles manifestado la Verdad. Vosotros, empero, perdonad y olvidad hasta que venga Alá con su orden. Alá es omnipotente.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@cxvii{Haced la azalá y dad el azaque. El bien que hagáis como anticipo a vosotros mismos, volveréis a encontrarlo junto a Alá. Alá ve bien lo que hacéis.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@cxviii{Y dicen: «Nadie entrará en el Jardín sino los judíos o los cristianos.» Ésos son sus anhelos. Di: «¡Aportad vuestra prueba, si es verdad lo que decís!»\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@cxix{¡Pues si! Quien se someta a Alá y haga el bien, tendrá su recompensa junto a su Señor. No tiene que temer y no estará triste.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@cxx{Los judíos dicen: «Los cristianos carecen de base», y los cristianos dicen: «Los judíos carecen de base», siendo así que leen la Escritura. Lo mismo dicen quienes no saben. Alá decidirá entre ellos el día de la Resurrección sobre aquello en que discrepaban.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@cxxi{¿Hay alguien que sea más impío que quien impide que se mencione Su nombre en las mezquitas de Alá y se empeña en arruinarlas? Hombres así no deben entrar en ellas sino con temor. ¡Que ,¿ sufran ignominia en la vida de acá y terrible castigo en la otra!\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@cxxii{De Alá son el Oriente y el Occidente. Adondequiera que os volváis, allí está la faz de Alá. Alá es inmenso, omnisciente.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@cxxiii{Dicen: «Alá ha adoptado un hijo». ¡Gloria a Él! ¡No! Suyo es lo que está en los cielos y en la tierra. Todo Le obedece.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@cxxiv{Es el Creador de los cielos y de la tierra. Y cuando decide algo, le dice tan sólo: «¡Sé!» y es.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@cxxv{Los que no saben dicen: «¿Por qué Alá no nos habla o nos viene un signo?» Lo mismo decían sus antecesores. Sus corazones son iguales. En verdad, hemos aclarado los signos a gente que está convencida.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@cxxvi{Te hemos enviado con la Verdad como nuncio de buenas nuevas y como monitor, y no tendrás que responder de los condenados al fuego de la gehena.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@cxxvii{Ni los judíos ni los cristianos estarán satisfechos de ti mientras no sigas su religión. Di: «La dirección de Alá es la Dirección». Ciertamente, si sigues sus pasiones después e haber sabido tú lo que has sabido. no tendrás amigo ni auxiliar frente a Alá.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@cxxviii{Aquéllos a quienes hemos dado la Escritura y la leen como debe ser leída. creen en ella. Quienes, en cambio, no creen en ella, ésos son los que pierden.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@cxxix{¡Hijos de Israel! Recordad la gracia que os dispensé y que os distinguí entre todos los pueblos.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@cxxx{Temed un día en que nadie pueda satisfacer nada por otro, ni se acepte ninguna compensación ni aproveche ninguna intercesión. ni sea posible auxilio alguno.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@cxxxi{Y cuando su Señor probó a Abraham con ciertas órdenes. Al cumplirlas, dijo: «Haré de ti guía para los hombres». Dijo: «¿Y de mi descendencia?» Dijo: ``Mi alianza no incluye a los impíos».\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@cxxxii{Y cuando hicimos de la Casa lugar de reunión y de refugio para los hombres. Y: «¡Haced del lugar de Abraham un oratorio!» Y concertamos una alianza con Abraham e Ismael: que purificaran Mi Casa para los que dieran las vueltas, para los que acudieran a hacer un retiro, a inclinarse y a prosternarse.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@cxxxiii{Y cuando Abraham dijo: «¡Señor! Haz de ésta una ciudad segura y provee de frutos a su población, a aquéllos que crean en Alá y en el último Día». Dijo: «A quienes no crean, es dejaré que gocen por breve tiempo. Luego. les arrastraré al castigo del Fuego. ¡Qué mal fin...!»\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@cxxxiv{Y cuando Abraham e Ismael levantaban los cimientos de la Casa: «¡Señor, acéptanoslo! ¡Tú eres Quien todo lo oye, Quien todo lo sabe!\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@cxxxv{¡Y haz, Señor, que nos sometamos a Ti, haz de nuestra descendencia una comunidad sumisa a Ti, muéstranos nuestros ritos y vuélvete a nosotros! ¡Tú eres, ciertamente, el Indulgente, el Misericordioso!\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@cxxxvi{¡Señor! Suscita entre ellos a un Enviado de su estirpe que les recite Tus aleyas y les enseñe la Escritura y la Sabiduría les purifique! Tú eres, ciertamente, el Poderoso, el Sabio».\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@cxxxvii{¿Quién sino el necio de espíritu puede sentir aversión a la religión de Abraham? Le elegimos en la vida de acá y en la otra vida es, ciertamente, de los justos.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@cxxxviii{Cuando su Señor le dijo: «¡Sométete!». Dijo: «Me someto al Señor del universo».\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@cxxxix{Abraham ordenó hacer lo mismo a sus hijos varones, y también Jacob: «¡Hijos míos! Alá os ha escogido esta religión. Así, pues, no muráis sino sometidos a Él».\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@cxl{¿Fuisteis, acaso, testigos de lo que dijo Jacob a sus hijos varones cuando iba a morir. «¿A quién serviréis cuando yo ya no esté?» Dijeron: «Serviremos a tu Dios, el Dios de tus padres Abraham, Ismael e Isaac, como a un Dios Uno. Nos sometemos a Él».\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@cxli{Ésa es una comunidad ya desaparecida. Ha recibido lo que merecía, como vosotros recibiréis lo que merezcáis. No tendréis que responder de lo que ellos hacían.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@cxlii{Dicen: «Si sois judíos o cristianos, estáis en la vía recta». Di: «No, antes bien la religión de Abraham, que fue hanif y no asociador».\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@cxliii{Decid: «Creemos en Alá y en lo que se nos ha revelado, en lo que se reveló a Abraham, Ismael, Isaac, Jacob y las tribus, en lo que Moisés, Jesús y los profetas recibieron de su Señor. No hacemos distinción entre ninguno de ellos y nos sometemos a É».\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@cxliv{Así, pues, si creen en lo mismo que vosotros creéis, estarán en la vía recta. Pero si se desvían, estarán entonces en oposición. Alá te bastará contra ellos. Él e Quien todo lo oye. Quien todo lo sabe».\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@cxlv{¡Tinte de Alá! Y ¿Quién puede teñir mejor que Alá? Somos Sus servidores.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@cxlvi{Di: «¿Vais a discutir con nosotros sobre Alá. siendo así que Él es nuestro Señor y Señor vuestro? Nosotros respondemos de nuestras obras y vosotros de las vuestras. Y Le servimos sinceramente.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@cxlvii{¿O diréis que Abraham, Ismael, Isaac, Jacob y las tribus fueron judíos o cristianos?» Di: «¿Quién sabe más? ¿Vosotros o Alá? ¿Hay alguien que sea más impío que quien oculta un testimonio que ha recibido de Alá? Alá está atento a lo que hacéis».\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@cxlviii{Ésa es una comunidad ya desaparecida. Ha recibido lo que merecía como vosotros recibiréis lo que merezcáis. No tendréis que responder de lo que ellos hacían.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@cxlix{Los necios de entre los hombres dirán: «Qué es lo que les ha inducido a abandonar la alquibla hacia la que se orientaban?» Di: «De Alá son el Oriente y el Occidente. Dirige a quien Él quiere a una vía recta».\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@cl{Hemos hecho así de vosotros un comunidad moderada, para que seáis testigos de los hombres y para que el Enviado sea testigo de vosotros. No pusimos la alquibla hacia la que antes te orientabas sino para distinguir a quien seguía al Enviado de quien le daba la espalda. Ciertamente, es cosa grave, pero no para aquéllos a quienes Alá dirige. Alá no va a dejar que se pierda vuestra fe. Alá es manso para con los hombres, misericordioso.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@cli{Vemos cómo vuelves tu rostro al cielo. Haremos, pues, que te vuelvas hacia una dirección que te satisfaga. Vuelve tu rostro hacia la Mezquita Sagrada. Dondequiera que estéis, volved vuestro rostro hacia ella. Aquéllos que han recibido la Escritura saben bien que es la Verdad que viene de su Señor. Alá está atento a lo que hacen.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@clii{Aun si aportas toda clase de signos a quienes han recibido la Escritura., no siguen tu alquibla, ni tú debes seguir la suya, ni siguen unos la alquibla de otros. Y, si sigues sus pasiones, después de haber sabido tú lo que has sabido, entonces, serás de los impíos.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@cliii{Aquéllos a quienes hemos dado la Escritura la conocen como conocen a sus propios hijos varones. Pero algunos de ellos ocultan la Verdad a sabiendas.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@cliv{La Verdad viene de tu Señor. ¡No seas, pues, de los que dudan!\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@clv{Todos tienen una dirección adonde volverse. ¡Rivalizad en buenas obras! Dondequiera que os encontréis, Alá os juntará. Alá es omnipotente.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@clvi{Vengas de donde vengas, vuelve tu rostro hacia la Mezquita Sagrada. Ésta es la Verdad que viene de tu Señor. Alá está atento a lo que hacéis.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@clvii{Vengas de donde vengas. vuelve tu rostro hacia la Mezquita Sagrada. Estéis donde estéis, volved vuestros rostros hacia ella, de modo que nadie, excepto los que hayan obrado impíamente, puedan alegar nada contra vosotros. Y no les tengáis miedo a ellos, sino a Mí. Así completaré Mi gracia en vosotros. Y quizás. así, seáis bien dirigidos.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@clviii{Igual que os hemos mandado un Enviado de entre vosotros para que os recite Nuestras aleyas, para que os purifique, para que os enseñe la Escritura y la Sabiduría, para que os enseñe lo que no sabíais.\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@clix{¡Acordaos de Mí, que Yo Me acordaré de vosotros! ¡Dadme las gracias y no Me seáis desagradecidos!\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@clx{¡Vosotros, los que creéis, buscad ayuda en la paciencia y en la azalá! Alá está con los pacientes.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@clxi{¡Y no digáis de quienes han caído por Alá que han muerto! No, sino que viven. Pero no os dais cuenta...\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@clxii{Vamos a probaros con algo de miedo, de hambre, de pérdida de vuestra hacienda, de vuestra vida, de vuestros frutos. Pero ¡anuncia buenas nuevas a los que tienen paciencia.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@clxiii{que, cuando les acaece una desgracia, dicen: «Somos de Alá y a Él volvemos»!\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@clxiv{Ellos reciben las bendiciones y la misericordia de su Señor. Ellos son los que están en la buena dirección.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@clxv{Safa y Marwa figuran entre los ritos prescritos por Alá. Por eso, quien hace la peregrinación mayor a la Casa o la menor, no hace mal en dar las vueltas alrededor de ambas. Y si uno hace el bien espontáneamente, Alá es agradecido, omnisciente.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@clxvi{Quienes ocultan las pruebas claras y la Dirección que hemos revelado, después de habérselo Nosotros aclarado a los hombres en la Escritura, incurren en la maldición de Alá y de los hombres.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@clxvii{Pero aquéllos que se arrepientan y se enmienden y aclaren, a ésos Me volveré. Yo soy el Indulgente, el Misericordioso.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@clxviii{Los que no crean y mueran siendo infieles, incurrirán en la maldición de Alá. de los ángeles y de los hombres, en la de todos ellos.\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@clxix{Eternos en ella, no se les mitigará el castigo, ni les será dado esperar.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@clxx{Vuestro Dios es un Dios Uno. No hay más dios que Él, el Compasivo, el Misericordioso.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@clxxi{En la creación de los cielos y de la tierra, en la sucesión de la noche y el día, en las naves que surcan el mar con lo que aprovecha a los hombres, en el agua que Alá hace bajar del cielo, vivificando con ella la tierra después de muerta, diseminando por ella toda clase de bestias, en la variación de los vientos, en las nubes, sujetas entre el cielo y la tierra, hay, ciertamente, signos para gente que razona.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@clxxii{Hay hombres que, fuera de Alá, toman a otros que equiparan a Él y les aman como se ama a Alá. Pero los creyentes aman a Alá con un amor más fuerte. Si vieran los impíos, cuando vean e castigo, que la fuerza es toda de Alá y que Alá castiga severamente...\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@clxxiii{Cuando los corifeos se declaren irresponsables de sus secuaces, vean el castigo y se rompan los lazos que les unían...\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@clxxiv{Los secuaces dicen: «Si pudiéramos volver, nos declararíamos irresponsables de ellos, como ellos se han declarado de nosotros». Así Alá les mostrará sus obras para pesar de ellos. ¡Nunca saldrán del Fuego!\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@clxxv{¡Hombres! ¡Comed de los alimentos lícitos y buenos que hay en la tierra y no sigáis los pasos del Demonio! Es para vosotros un enemigo declarado.\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@clxxvi{Os ordena lo malo y lo deshonesto y que digáis contra Alá lo que no sabéis.\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@clxxvii{Y cuando se les dice: «¡Seguid lo que Alá ha revelado!», dicen: «¡No! Seguiremos las tradiciones de nuestros padres». Pero ¿y si sus padres eran incapaces de razonar y no estaban bien dirigidos?\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@clxxviii{Los incrédulos son como cuando uno grita al ganado, que no percibe más que una llamada, un grito: son sordos, mudos, ciegos, no razonan.\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@clxxix{¡Creyentes! ¡Comed de las cosas buenas de que os hemos proveído y dad gracias a Alá, si es a Él solo a Quien servís!\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@clxxx{Os ha prohibido sólo la carne mortecina, la sangre. la carne de cerdo y la de todo animal sobre el que se haya invocado un nombre diferente del de Alá. Pero si alguien se ve compelido por la necesidad -no por deseo ni por afán de contravenirno peca. Alá es indulgente, misericordioso.\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@clxxxi{Quienes ocultan algo de la Escritura que Alá ha revelado y lo malvenden, sólo fuego ingerirán en sus entrañas y Alá no les dirigirá la palabra el día de la Resurrección ni les declarará puros. Tendrán un castigo doloroso.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@clxxxii{Ésos son los que han trocado la Dirección por el extravío. el perdón por el castigo. ¿Cómo pueden permanecer imperturbables ante el Fuego?\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@clxxxiii{Esto es así porque Alá ha revelado la Escritura con la Verdad. Y quienes discrepan sobre la Escritura están en marcada oposición.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@clxxxiv{La piedad no estriba en que volváis vuestro rostro hacia el Oriente o hacia el Occidente, sino en creer en Alá y en el último Día, en los ángeles, en la Escritura y en los profetas, en dar de la hacienda. por mucho amor que se le tenga, a los parientes, huérfanos, necesitados, viajero, mendigos y esclavos, en hacer la azalá y dar el azaque, en cumplir con los compromisos contraídos, en ser pacientes en el infortunio, en la aflicción y en tiempo de peligro. ¡Ésos son los hombres sinceros, ésos los temerosos de Alá!\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@clxxxv{¡Creyentes! Se os ha prescrito la ley del talión en casos de homicidio: libre por libre, esclavo por esclavo, hembra por hembra. Pero, si a alguien le rebaja su hermano la pena, que la demanda sea conforme al uso la indemnización apropiada. Esto es un alivio por parte de vuestro Señor, una misericordia. Quien, después de esto. viole la ley, tendrá un castigo doloroso.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@clxxxvi{En la ley del talión tenéis vida, ¡hombres de intelecto! Quizás, así, temáis a Alá.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@clxxxvii{Se os ha prescrito que, cuando uno de vosotros vea que va a morir dejando bienes, haga testamento en favor de sus padres y parientes más cercanos conforme al uso. Esto constituye un deber para los temerosos de Alá.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@clxxxviii{Si alguien lo cambia luego de haberlo oído, pecará sólo el que lo cambie. Alá todo lo oye, todo lo sabe.\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@clxxxix{Pero, si alguien teme una injusticia o ilegalidad por parte del testador y consigue un arreglo entre los herederos, no peca. Alá es indulgente, misericordioso.\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@cxc{¡Creyentes!; Se os ha prescrito el ayuno, al igual que se prescribió a los que os precedieron. Quizás, así, temáis a Alá.\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@cxci{Días contados. Y quien de vosotros esté enfermo o de viaje, un número igual de días. Y los que, pudiendo, no ayunen podrán redimirse dando de comer a un pobre. Y, si uno hace el bien espontáneamente, tanto mejor para él. Pero os conviene más ayunar. Si supierais...\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@cxcii{Es el mes de ramadán, en que fue revelado el Corán como dirección para los hombres y como pruebas claras de la Dirección y del Criterio. Y quien de vosotros esté presente ese mes, que ayune en él. Y quien esté enfermo o de viaje, un número igual de días. Alá quiere hacéroslo fácil y no difícil. ¡Completad el número señalado de días y ensalzad a Alá por haberos dirigido! Quizás, así seáis agradecidos.\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@cxciii{Cuando Mis siervos te pregunten por Mí, estoy cerca y respondo a la oración de quien invoca cuando Me invoca. ¡Que Me escuchen y crean en Mí! Quizás, así, sean bien dirigidos.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@cxciv{Durante el mes del ayuno os es lícito por la noche uniros con vuestras mujeres: son vestidura para vosotros y vosotros lo sois para ellas. Alá sabe que os engañabais a vosotros mismos. Se ha vuelto a vosotros y os ha perdonado. Ahora, pues, yaced con ellas y buscad lo que Alá os ha prescrito. Comed y bebed hasta que, a la alborada, se distinga un hilo blanco de un hilo negro. Luego, observad un ayuno riguroso hasta la caída de la noche. Y no las toquéis mientras estéis de retiro en la mezquita. Éstas son las leyes de Alá, no os acerquéis a ellas. Así explica Alá Sus aleyas a los hombres. Quizás, así, Le teman.\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@cxcv{No os devoréis la hacienda injustamente unos a otros. No sobornéis con ella a los jueces para devorar una parte de la hacienda ajena injusta y deliberadamente.\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@cxcvi{Te preguntan acerca de los novilunios. Di: «Son indicaciones que sirven a los hombres para fijar la época de la peregrinación». La piedad no estriba en que entréis en casa por detrás. sino en que temáis a Alá. ¡Entrad en casa por la puerta y temed a Alá! Quizás, así prosperéis.\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@cxcvii{Combatid por Alá contra quienes combatan contra vosotros, pero no os excedáis. Alá no ama a los que se exceden.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@cxcviii{Matadles donde deis con ellos, y expulsadles de donde os hayan expulsado. Tentar es más grave que matar. No combatáis contra ellos junto a la Mezquita Sagrada, a no ser que os ataquen allí. Así que, si combaten contra vosotros, matadles: ésa es la retribución de los infieles.\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@cxcix{Pero, si cesan, Alá es indulgente, misericordioso.\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@cc{Combatid contra ellos hasta que dejen de induciros a apostatar y se rinda culto a Alá. Si cesan, no haya más hostilidades que contra los impíos.\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@cci{El mes sagrado por el mes sagrado. Las cosas sagradas caen bajo la ley del talión. Si alguien os agrediera, agredidle en la medida que os agredió. Temed a Alá y sabed que Él está con los que Él temen.\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@ccii{Gastad por la causa de Alá y no os entreguéis a la perdición. Haced el bien. Alá ama a quienes hacen el bien.\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@cciii{Llevad a cabo la peregrinación mayor y la menor por Alá. Pero, si os veis impedidos, ofreced una víctima conforme a vuestros medios. No os afeitéis la cabeza hasta que la víctima llegue al lugar del sacrificio. Si uno de vosotros está enfermo o tiene una dolencia en la cabeza, puede redimirse ayunando, dando limosna u ofreciendo un sacrificio. Cuando estéis en seguridad, quien aproveche para hacer la peregrinación menor, mientras llega el tiempo de la mayor, que ofrezca una víctima según sus posibilidades. Pero, si no encuentra qué ofrecer, deberá ayunar tres días durante la peregrinación mayor y siete a su regreso, esto es, diez completos. Esto atañe a aquél cuya familia no reside en las cercanías de la Mezquita Sagrada. ¡Temed a Alá! ¡Sabed que Alá es severo en castigar!\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@cciv{Ya se sabe cuáles son los meses de la peregrinación. Quien decida hacerla en esos meses se abstendrá durante la peregrinación de comercio carnal, de cometer actos impíos y de discutir. Alá conoce el bien que hacéis. ¡Aprovisionaos! La mejor provisión es el temor de Alá...¡Temedme, pues, hombres de intelecto!\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@ccv{No hacéis mal, si buscáis favor de vuestro Señor. Cuando os lancéis desde Arafat, ¡recordad a Alá junto al Monumento Sagrado! Recordadle... cómo os ha dirigido... cuando erais, ates, de los extraviados.\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@ccvi{¡Haced, luego, como los demás y pedid perdón a Alá! Alá es indulgente, misericordioso.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@ccvii{Cuando hayáis cumplido vuestros ritos, ¡recordad a Alá como recordáis a vuestros antepasados o con más fervor aún! Hay entre los hombres quienes dicen: «¡Señor! ¡Danos n la vida de acá!» Ésos no tendrán parte en la otra vida.\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@ccviii{Otros dicen: «¡Señor! ¡Danos bien en la vida de acá y en la otra y presérvanos del castigo del Fuego!»\qt@no{(201)}}
+\qt@newcmd\qurantrans@es@ccix{Ésos tendrán parte según sus méritos. Alá es rápido en ajustar cuentas...\qt@no{(202)}}
+\qt@newcmd\qurantrans@es@ccx{¡Recordad a Alá en días determinados! Quien los reduzca a dos días no hace mal; como tampoco quien se demore, si es que teme a Alá. ¡Temed a Alá! ¡Sabed que seréis congregados hacia Él!\qt@no{(203)}}
+\qt@newcmd\qurantrans@es@ccxi{Hay entre los hombres alguno cuya manera de hablar sobre la vida de acá te gusta, que toma a Alá por testigo de lo que su corazón encierra. Es un fogoso discutidor.\qt@no{(204)}}
+\qt@newcmd\qurantrans@es@ccxii{Pero, apenas te vuelve la espalda, se esfuerza por corromper en el país y destruir las cosechas y el ganado. Alá no ama la corrupción.\qt@no{(205)}}
+\qt@newcmd\qurantrans@es@ccxiii{Y. cuando se le dice: «¡Teme a Alá!», se apodera de él un orgullo criminal. Tendrá la gehena como retribución. ¡Qué mal lecho...!\qt@no{(206)}}
+\qt@newcmd\qurantrans@es@ccxiv{Hay entre los hombres quien se sacrifica por deseo de agradar a Alá. Alá es manso con Sus siervos.\qt@no{(207)}}
+\qt@newcmd\qurantrans@es@ccxv{¡Creyentes! ¡Entrad todos en la Paz y no sigáis los pasos del Demonio! Es para vosotros un enemigo declarado.\qt@no{(208)}}
+\qt@newcmd\qurantrans@es@ccxvi{Pero si, después de haber recibido las pruebas claras, cometéis un desliz, sabed que Alá es poderoso, sabio.\qt@no{(209)}}
+\qt@newcmd\qurantrans@es@ccxvii{¿Qué esperan sino que Alá y los ángeles vengan a ellos en un nublado? La cosa está ya decidida. Todo será devuelto a Alá.\qt@no{(210)}}
+\qt@newcmd\qurantrans@es@ccxviii{Pregunta a los Hijos de Israel cuántos signos claros les dimos. Si uno, después de recibir la gracia de Alá, la cambia... Alá es severo en castigar.\qt@no{(211)}}
+\qt@newcmd\qurantrans@es@ccxix{La vida de acá ha sido engalanada a los ojos de los infieles, que se burlan de los que creen. Pero los temerosos de Alá estarán por encima de ellos el día de la Resurrección. Y Alá provee sin medida a quien Él quiere.\qt@no{(212)}}
+\qt@newcmd\qurantrans@es@ccxx{La Humanidad constituía una sola comunidad. Alá suscitó profetas portadores de buenas nuevas, que advertían, y reveló por su medio la Escritura con la Verdad para que decida entre los hombres sobre aquello en que discrepaban. Sólo aquéllos a quienes se les había dado discreparon sobre ella, a pesar de las pruebas claras recibidas, y eso por rebeldía mutua. Alá quiso dirigir a los creyentes hacia la Verdad, sobre la que los otros discrepaban. Alá dirige a quien Él quiere a una vía recta.\qt@no{(213)}}
+\qt@newcmd\qurantrans@es@ccxxi{¿O creéis que vais a entrar en el Jardín antes de pasar por lo mismo que pasaron quienes os precedieron? Sufrieron el infortunio y la tribulación y una conmoción tal que el Enviado y los que con él creían dijeron: «¿Cuándo vendrá el auxilio de Alá?» Sí, el auxilio de Alá está cerca.\qt@no{(214)}}
+\qt@newcmd\qurantrans@es@ccxxii{Te preguntan qué deben gastar. Di «Los bienes que gastéis, que sean para los padres, los parientes más cercanos, los huérfanos, los necesitados y el viajero». Alá conoce perfectamente el bien que hacéis.\qt@no{(215)}}
+\qt@newcmd\qurantrans@es@ccxxiii{Se os ha prescrito que combatáis, aunque os disguste. Puede que os disguste algo que os conviene y améis algo que no os conviene. Alá sabe, mientras que vosotros no sabéis.\qt@no{(216)}}
+\qt@newcmd\qurantrans@es@ccxxiv{Te preguntan si está permitido combatir en el mes sagrado. Di: «Combatir en ese mes es pecado grave. Pero apartar del camino de Alá -y negarle- y de la Mezquita Sagrada y expulsar de ella a la gente es aún más grave para Alá, así como tentar es más grave que matar». Si pudieran, no cesarían de combatir contra vosotros hasta conseguir apartaros de vuestra fe. Las obras de aquéllos de vosotros que apostaten de su fe y mueran como infieles serán vanas en la vida de acá y en la otra. Ésos morarán en el Fuego eternamente.\qt@no{(217)}}
+\qt@newcmd\qurantrans@es@ccxxv{Quienes creyeron y quienes dejaron sus hogares, combatiendo esforzadamente por Alá, pueden esperar la misericordia de Alá. Alá es indulgente, misericordioso.\qt@no{(218)}}
+\qt@newcmd\qurantrans@es@ccxxvi{Te preguntan acerca del vino y del maysir, Di: «Ambos encierran pecado grave y ventajas para los hombres, pero su pecado es mayor que su utilidad». Te preguntan qué deben gastar. Di: «Lo superfluo». Así o explica Alá las aleyas, Quizás, así, meditéis\qt@no{(219)}}
+\qt@newcmd\qurantrans@es@ccxxvii{sobre la vida de acá y la otra. Te preguntan acerca de los huérfanos. Di: «Está bien mejorar su condición; pero, si mezcláis vuestra hacienda con la suya, tratadles como a hermanos». Alá distingue al corruptor del reformador. Y si Alá hubiera querido os habría afligido. Alá es poderoso, sabio.\qt@no{(220)}}
+\qt@newcmd\qurantrans@es@ccxxviii{No os caséis con mujeres asociadoras hasta que crean. Una esclava creyente es mejor que una asociadora, aunque ésta os guste más. No caséis con asociadores hasta que éstos crean. Un esclavo creyente es mejor que un asociador, aunque éste os guste más. Ésos os llaman al Fuego, en tanto que Alá os llama al Jardín y al perdón si quiere, y explica Sus aleyas a los hombres. Quizás, así, se dejen amonestar.\qt@no{(221)}}
+\qt@newcmd\qurantrans@es@ccxxix{Te preguntan acerca de la menstruación. Di: «Es un mal. ¡Manteneos, pues, aparte de las mujeres durante la menstruación y no os acerquéis a ellas hasta que se hayan purificado! Y cuando se hayan purificado, id a ellas como Alá os ha ordenado». Alá ama a quienes se arrepienten. Y ama a quienes se purifican.\qt@no{(222)}}
+\qt@newcmd\qurantrans@es@ccxxx{Vuestras mujeres son campo labrado para vosotros. ¡Venid, pues, a vuestro campo como queráis, haciendo preceder algo para vosotros mismos! ¡Temed a Alá y sabed que Le encontraréis! ¡Y anuncia la buena nueva a los creyentes!\qt@no{(223)}}
+\qt@newcmd\qurantrans@es@ccxxxi{Jurando por Alá, no hagáis de Él un obstáculo que os impida practicar la caridad, ser temerosos de Alá y reconciliar a los hombres. Alá todo lo oye, todo lo sabe.\qt@no{(224)}}
+\qt@newcmd\qurantrans@es@ccxxxii{Alá no tendrá en cuenta la vanidad de vuestros juramentos, pero sí tendrá en cuenta la intención de vuestros corazones. Alá es indulgente, benigno.\qt@no{(225)}}
+\qt@newcmd\qurantrans@es@ccxxxiii{Quienes juren no acercarse a sus mujeres tienen de plazo cuatro meses. Si se retractan,... Alá es indulgente, misericordioso.\qt@no{(226)}}
+\qt@newcmd\qurantrans@es@ccxxxiv{Si se deciden por el repudio,... Alá todo lo oye, todo lo sabe.\qt@no{(227)}}
+\qt@newcmd\qurantrans@es@ccxxxv{Las repudiadas deberán esperar tres menstruaciones. No les es lícito ocultar lo que Alá ha creado en su seno si es que creen en Alá y en el último Día. Durante esta espera, sus esposo tienen pleno derecho a tomarlas de nuevo si desean la reconciliación. Ellas tienen derechos equivalentes a sus obligaciones, conforme al uso, pero los hombres están un grado por encima de ellas. Alá es poderoso, sabio.\qt@no{(228)}}
+\qt@newcmd\qurantrans@es@ccxxxvi{El repudio se permite dos veces. Entonces, o se retiene a la mujer tratándola como se debe o se la deja marchar de buena manera. No os es lícito recuperar nada de lo que les disteis, a menos que las dos partes teman no observar las leves de Alá. Y, si teméis que no observen las leyes de Alá, no hay inconveniente en que ella obtenga su libertad indemnizando al marido. Éstas son las leyes de Alá, no las violéis. Quienes violan las leyes de Alá, ésos son los impíos.\qt@no{(229)}}
+\qt@newcmd\qurantrans@es@ccxxxvii{Si la repudia, ésta ya no le será permitida sino después de haber estado casada con otro. Si este último la repudia. no hay inconveniente en que aquéllos vuelvan a reunirse, si creen que observarán las leyes de Alá. Éstas son las leyes de Alá Las explica a gente que sabe.\qt@no{(230)}}
+\qt@newcmd\qurantrans@es@ccxxxviii{Cuando repudiéis a vuestras mujeres y éstas alcancen su término, retenedlas como se debe o dejadlas en libertad como se debe. ¡No las sujetéis a la fuerza, en violación de las leyes de Alá! Quien esto hace es injusto consigo mismo. ¡No toméis a burla las aleyas de Alá, antes bien recordad la gracia de Alá para con vosotros y lo que os ha revelado de la Escritura y de la Sabiduría, exhortándoos con ello! ¡Temed a Alá y sabed que Alá es omnisciente!\qt@no{(231)}}
+\qt@newcmd\qurantrans@es@ccxxxix{Cuando repudiéis a vuestras mujeres y éstas alcancen su término, no les impidáis que se casen con sus maridos, si se ponen buenamente de acuerdo. A esto se exhorta a quien de vosotros crea en Alá y en el último Día. Esto es más correcto para vosotros y más puro. Alá sabe, mientras que vosotros no sabéis.\qt@no{(232)}}
+\qt@newcmd\qurantrans@es@ccxl{Las madres amamantarán a sus hijos durante dos años completos si desea que la lactancia sea completa. El padre debe sustentarlas y vestirlas conforme al uso. A nadie se le pedirá sino según sus posibilidades. No se dañará a la madre por razón de su hijo, ni al padre. Un deber semejante incumbe al heredero. Y no hay inconveniente en que el padre y la madre quieran, de mutuo acuerdo y luego de consultarse, destetar al niño. Y, si queréis emplear a una nodriza para vuestros hijos, no hacéis mal, siempre que paguéis lo acordado conforme al uso. ¡Temed a Alá y sabed que Alá ve bien lo que hacéis!\qt@no{(233)}}
+\qt@newcmd\qurantrans@es@ccxli{Las viudas que dejéis deben esperar cuatro meses y diez días; pasado ese tiempo, no seréis ya responsables de lo que ellas dispongan de sí mismas conforme al uso. Alá está bien informado de lo que hacéis.\qt@no{(234)}}
+\qt@newcmd\qurantrans@es@ccxlii{No hacéis mal en proponer a tales mujeres casaros con ellas o en ocultarles vuestra intención de hacerlo. Alá sabe que pensaréis en ellas. Pero ¡no les prometáis nada en secreto! ¡Habladas, más bien, como se debe! ¡Y no decidáis concluir el matrimonio hasta que se cumpla el período prescrito de espera! ¡Sabed que Alá conoce lo que hay en vuestras mentes, de modo que cuidado con Él! Pero sabed que Alá es indulgente, benigno.\qt@no{(235)}}
+\qt@newcmd\qurantrans@es@ccxliii{.No hacéis mal en repudiar a vuestras mujeres mientras aún no las hayáis tocado o asignado dote. Proveedles, no obstante, como se debe, el acomodado según sus posibilidades y el pobre según las suyas. Esto constituye un deber para quienes hacen el bien.\qt@no{(236)}}
+\qt@newcmd\qurantrans@es@ccxliv{Y, si las repudiáis antes de tocarlas y luego de haberles asignado dote, pagadles la mitad de lo asignado, a menos que ellas o aquél en cuya mano esté la conclusión del matrimonio renuncien a ello. La renuncia es más conforme al temor de Alá. No os olvidéis de mostraros generosos unos con otros. Alá ve bien lo que hacéis.\qt@no{(237)}}
+\qt@newcmd\qurantrans@es@ccxlv{¡Observad las azalás -sobre todo. la azalá intermedia- y estad con devoción ante Alá!\qt@no{(238)}}
+\qt@newcmd\qurantrans@es@ccxlvi{Si teméis algún peligro, de pie o montados. Y, cuando estéis en seguridad, ¡recordad a Alá... cómo os enseño lo que no sabíais...!\qt@no{(239)}}
+\qt@newcmd\qurantrans@es@ccxlvii{Los que de vosotros mueran dejando esposas deberían testar en favor de ellas para su mantenimiento durante un año sin echarlas. Y, si ellas se van, no se os reprochará lo que ellas hagan honradamente respecto a su persona. Alá es poderoso, sabio.\qt@no{(240)}}
+\qt@newcmd\qurantrans@es@ccxlviii{Hay que proveer a las repudiadas como se debe. Esto constituye un deber para los temerosos de Alá.\qt@no{(241)}}
+\qt@newcmd\qurantrans@es@ccxlix{Así explica Alá Sus aleyas. Quizás, así, razonéis.\qt@no{(242)}}
+\qt@newcmd\qurantrans@es@ccl{¿No has visto a quienes, por millares, dejaron sus hogares por miedo a la muerte? Alá les había dicho: «¡Morid!» Luego, les resucitó. Sí, Alá dispensa Su favor a los hombres, pero la mayoría de los hombres no agradecen.\qt@no{(243)}}
+\qt@newcmd\qurantrans@es@ccli{¡Combatid por Alá y sabed que Alá todo lo oye, todo lo sabe!\qt@no{(244)}}
+\qt@newcmd\qurantrans@es@cclii{¿Quién será el que haga un préstamo generoso a Alá? Alá se lo devolverá multiplicado. Alá cierra y abre. Seréis devueltos a Él.\qt@no{(245)}}
+\qt@newcmd\qurantrans@es@ccliii{¿No has visto a los dignatarios de los Hijos de Israel? Cuando, después de Moisés, dijeron a un profeta suyo: «¡Suscítanos a un rey para que combatamos por Alá!» Dijo: «Puede que no combatáis una vez que se os prescriba el combate». Dijeron: «¿Cómo no vamos a combatir por Alá si se nos ha expulsado de nuestros hogares y de nuestros hijos?» Pero, cuando se les prescribió el combate, volvieron la espalda, salvo unos pocos. Alá conoce bien a los impíos.\qt@no{(246)}}
+\qt@newcmd\qurantrans@es@ccliv{Su profeta les dijo: «Alá os ha suscitado a Saúl como rey». Dijeron: «¿Cómo va él a dominar sobre nosotros si nosotros tenemos más derecho que él al dominio y no se le ha concedido abundancia de hacienda?» Dijo: «Alá lo ha escogido prefiriéndolo a vosotros y le ha dado más ciencia y más cuerpo». Alá da Su dominio a quien Él quiere. Alá es inmenso, omnisciente.\qt@no{(247)}}
+\qt@newcmd\qurantrans@es@cclv{Su profeta les dijo: «El signo de su dominio será que el Arca volverá a vosotros, llevada por los ángeles, con sakina de vuestro Señor y reliquia de lo que dejaron las gentes de Moisés y de Aarón. Ciertamente tenéis en ello un signo, si es que sois creyentes».\qt@no{(248)}}
+\qt@newcmd\qurantrans@es@cclvi{Y, cuando Saúl marchó con los soldados, dijo: «Alá os probará con un arroyo. Quien beba de él no será de los míos. Quien no lo pruebe, será de los míos, a menos que beba una sola vez del hueco de la mano». Y bebieron de él, salvo unos pocos. Y, cuando él y los que creían lo hubieron cruzado, dijeron: «Hoy no podemos nada contra Goliat y sus soldados». Los que contaban con encontrar a Alá dijeron: «¡Cuántas veces una tropa reducida ha vencido a otra considerable con permiso de Al á! Alá está con los que tienen paciencia».\qt@no{(249)}}
+\qt@newcmd\qurantrans@es@cclvii{Y, cuando salieron contra Goliat y sus soldados, dijeron: «¡Señor! ¡Infunde en nosotros paciencia, afirma nuestros pasos, auxílianos contra el pueblo infiel!»\qt@no{(250)}}
+\qt@newcmd\qurantrans@es@cclviii{Y les derrotaron con permiso de Alá. David mató a Goliat y Alá le dio el dominio y la sabiduría, y le enseñó lo que Él quiso. Si Alá no hubiera rechazado a unos hombres valiéndose de otros, la tierra se habría ya corrompido. Pero Alá dispensa Su favor a todos.\qt@no{(251)}}
+\qt@newcmd\qurantrans@es@cclix{Éstas son las aleyas de Alá, que te recitamos conforme a la verdad. Ciertamente, tú eres uno de los enviados.\qt@no{(252)}}
+\qt@newcmd\qurantrans@es@cclx{Éstos son los enviados. Hemos preferido a unos más que a otros. A alguno de ellos Alá ha hablado. Y a otros les ha elevado en categoría. Dimos a Jesús, hijo de María, las pruebas claras, y le fortalecimos con el Espíritu Santo. Si Alá hubiera querido, los que les siguieron no habrían combatido unos contra otros, después de haber recibido las pruebas claras. Pero discreparon: de ellos, unos creyeron y otros o. Si Alá hubiera querido, no habrían combatido unos contra otros. Pero Alá hace lo que quiere.\qt@no{(253)}}
+\qt@newcmd\qurantrans@es@cclxi{¡Creyentes! Dad limosna de lo que os hemos proveído antes de que venga un día en que no sirvan ni comercio ni amistad ni intercesión. Los infieles, ésos son los impíos.\qt@no{(254)}}
+\qt@newcmd\qurantrans@es@cclxii{¡Alá! No hay más dios que El. el Viviente, el Subsistente. Ni la somnolencia ni el sueño se apoderan de Él. Suyo es lo que está en los cielos y en la tierra. ¿Quién podrá interceder ante Él si no es con Su permiso? Conoce su pasado y su futuro, mientras que ellos no abarcan nada de Su ciencia, excepto lo que Él quiere. Su Trono se extiende sobre los cielos y sobre la tierra y su conservación no le resulta onerosa. Él es el Altísimo, el Grandioso.\qt@no{(255)}}
+\qt@newcmd\qurantrans@es@cclxiii{No cabe coacción en religión. La buena dirección se distingue claramente del descarrío. Quien no cree en los taguts y cree en Alá, ese tal se ase del asidero más firme, de un asidero irrompible. Alá todo lo oye, todo lo sabe.\qt@no{(256)}}
+\qt@newcmd\qurantrans@es@cclxiv{Alá es el Amigo de los que creen, les saca de las tinieblas a la luz. Los que no creen, en cambio, tienen como amigos a los taguts, que les sacan de la luz a las tinieblas. Ésos morarán en el Fuego eternamente.\qt@no{(257)}}
+\qt@newcmd\qurantrans@es@cclxv{¿No has visto a quien disputaba con Abraham sobre su Señor porque Alá le había dado el dominio? Cuando Abraham dijo: «Mi Señor es Quien da la vida y da la muerte». Dijo: «Yo doy la vida y doy a muerte». Abraham dijo: «Alá trae el sol por oriente; tráelo tú por Occidente». Así fue confundido el infiel. Alá no dirige al pueblo impío.\qt@no{(258)}}
+\qt@newcmd\qurantrans@es@cclxvi{O como quien pasó por una ciudad en ruinas. Dijo: «¿Cómo va Alá a devolver la vida a ésta después de muerta?» Alá le hizo morir y quedar así durante cien años. Luego, le resucitó y dijo: «¿Cuánto tiempo has permanecido así?» Dijo: «He permanecido un día o parte de un día». Dijo: «No, que has permanecido así cien años. ¡Mira tu alimento y tu bebida! N se han echado a perder. ¡Mira a tu asno! Para hacer de ti un signo para los hombres. ¡Mira los huesos, cómo los componemos y los cubrimos de carne!». Cuando lo vio claro, dijo: «Ahora sé que Alá es omnipotente».\qt@no{(259)}}
+\qt@newcmd\qurantrans@es@cclxvii{Y cuando Abraham dijo: «¡Señor. muéstrame cómo devuelves la vida a los muertos!» Dijo: «¿Es que no crees?» Dijo: «Claro que sí, pero es para tranquilidad de mi corazón». Dijo: «Entonces, coge cuatro aves y despedázalas. Luego, pon en cada montaña un pedazo de ellas y llámalas. Acudirán a ti rápidamente. Sabe que Alá es poderoso, sabio».\qt@no{(260)}}
+\qt@newcmd\qurantrans@es@cclxviii{Quienes gastan su hacienda por Alá son semejantes a un grano que produce siete espigas, cada una de las cuales contiene cien granos. Así dobla Alá a quien Él quiere. Alá es inmenso, omnisciente.\qt@no{(261)}}
+\qt@newcmd\qurantrans@es@cclxix{Quienes gastan su hacienda por Alá sin hacerlo seguir de alarde ni agravio tendrán su recompensa junto a su Señor. No tienen que temer y no estarán tristes.\qt@no{(262)}}
+\qt@newcmd\qurantrans@es@cclxx{Una palabra cariñosa, un perdón valen más que una limosna seguida de agravio. Alá Se basta a Sí mismo, es benigno.\qt@no{(263)}}
+\qt@newcmd\qurantrans@es@cclxxi{¡Creyentes! No malogréis vuestras limosnas alardeando de ellas o agraviando, como quien gasta su hacienda para ser visto de los hombres, sin creer en Alá ni en el último Día. Ese tal es semejante a una roca cubierta de tierra. Cae sobre ella un aguacero y la deja desnuda. No pueden esperar nada por lo que han merecido. Alá no dirige al pueblo infiel.\qt@no{(264)}}
+\qt@newcmd\qurantrans@es@cclxxii{Quienes gastan su hacienda por deseo de agradar a Alá y por su propio fortalecimiento son semejantes a un jardín plantado en una colina. Si cae sobre él un aguacero, da fruto doble; si no cae, rocío. Alá ve bien lo que hacéis.\qt@no{(265)}}
+\qt@newcmd\qurantrans@es@cclxxiii{¿Desearía alguno de vosotros poseer un jardín de palmeras y vides por cuyo bajo fluyeran arroyos, con toda clase de frutos, envejecer mientras sus hijos son aún débiles y que un torbellino de fuego cayera sobre el jardín y éste se incendiara? Así os explica Alá las aleyas. Quizás, así meditéis.\qt@no{(266)}}
+\qt@newcmd\qurantrans@es@cclxxiv{¡Creyentes! ¡Dad limosna de las cosas buenas que habéis adquirido y de lo que, para vosotros, hemos sacado de la tierra! Y no elijáis lo malo para vuestras limosnas, como tampoco vosotros lo tomaríais a menos que tuvierais los ojos cerrados. Sabed que Alá Se basta a Sí mismo, es digno de alabanza.\qt@no{(267)}}
+\qt@newcmd\qurantrans@es@cclxxv{El Demonio os amenaza con la pobreza y os ordena lo deshonesto, mientras que Alá os promete Su perdón y favor. Alá es inmenso, omnisciente.\qt@no{(268)}}
+\qt@newcmd\qurantrans@es@cclxxvi{Concede la sabiduría a quien Él quiere. Y quien recibe la sabiduría recibe mucho bien. Pero no se dejan amonestar sino los dotados de intelecto.\qt@no{(269)}}
+\qt@newcmd\qurantrans@es@cclxxvii{Sea cual sea la limosna que deis, sea cual sea el voto que hagáis, Alá lo conoce. Y los impíos no tendrán quien les auxilie.\qt@no{(270)}}
+\qt@newcmd\qurantrans@es@cclxxviii{Si dais limosna públicamente, es algo excelente. Pero, si la dais ocultamente y a los pobres, es mejor para vosotros y borrará en parte vuestras malas obras. Alá está bien informado de lo que hacéis.\qt@no{(271)}}
+\qt@newcmd\qurantrans@es@cclxxix{No tienes tú por qué dirigirles sino que Alá dirige a quien Él quiere. Lo que hagáis de bien redundará en vuestro propio beneficio. Y no lo hagáis si no es por deseo de agradara Alá. Lo que hagáis de bien os será devuelto y no seréis tratados injustamente.\qt@no{(272)}}
+\qt@newcmd\qurantrans@es@cclxxx{Para los pobres que están en la miseria por haberse dedicado a la causa de Alá y que no pueden desplazarse. El ignorante los cree ricos porque se abstienen. Les reconocerás por su aspecto. No piden a la gente inoportunamente. Y lo que hacéis de bien, Alá lo conoce perfectamente.\qt@no{(273)}}
+\qt@newcmd\qurantrans@es@cclxxxi{Los que gastan su hacienda de noche o de día, en secreto o en público, tendrán su recompensa junto a su Señor. No tienen que temer y no estarán tristes.\qt@no{(274)}}
+\qt@newcmd\qurantrans@es@cclxxxii{Quienes usurean no se levantarán sino como se levanta aquél a quien el Demonio ha derribado con sólo tocarle, y eso por decir que el comercio es como la usura, siendo así que Alá ha autorizado el comercio y prohibido la usura. Quien. exhortado por su Señor. renuncie conservará lo que haya ganado. Su caso está en manos de Alá. Los reincidentes, ésos serán los condenados al Fuego y en él permanecerán para siempre.\qt@no{(275)}}
+\qt@newcmd\qurantrans@es@cclxxxiii{Alá hace que se malogre la usura, pero hace fructificar la limosna. Alá no ama a nadie que sea infiel pertinaz, pecador.\qt@no{(276)}}
+\qt@newcmd\qurantrans@es@cclxxxiv{Los que hayan creído y obrado bien, los que hayan hecho la azalá y dado el azaque tendrán su recompensa junto a su Señor. No tienen que temer y no estarán tristes.\qt@no{(277)}}
+\qt@newcmd\qurantrans@es@cclxxxv{¡Creyentes! ¡Temed a Alá! ¡Y renunciad a los provechos pendientes de la usura, si es que sois creyentes!\qt@no{(278)}}
+\qt@newcmd\qurantrans@es@cclxxxvi{Si no lo hacéis así, podéis esperar guerra de Alá y Su Enviado. Pero, si os arrepentís, tendréis vuestro capital, no siendo injustos ni siendo tratados injustamente.\qt@no{(279)}}
+\qt@newcmd\qurantrans@es@cclxxxvii{Si está en apuro, concededle un respiro hasta que se alivie su situación. Y aún sería mejor para vosotros que le condonarais la deuda. Si supierais...\qt@no{(280)}}
+\qt@newcmd\qurantrans@es@cclxxxviii{Temed un día en que seréis devueltos a Alá. Entonces, cada uno recibirá su merecido. Y no serán tratados injustamente.\qt@no{(281)}}
+\qt@newcmd\qurantrans@es@cclxxxix{¡Creyentes!. Si contraéis una deuda por un plazo determinado, ponedlo por escrito. Que un escribano tome fiel nota en vuestra presencia, sin rehusarse a escribir como Alá le dé a entender. Que escriba. Que el deudor dicte en el temor de Alá, su Señor, y que no deduzca nada. Y si el deudor fuera necio, débil o incapaz de dictar, que dicte su procurador con fidelidad. Llamad, para que sirvan de testigos, a dos de vuestros hombres; s no los hay, elegid a un hombre y a dos mujeres de entre quienes os plazcan como testigos, de tal modo que si una yerra, la otra subsane su error. Que los testigos no se sustraigan cuando se les llame. Que no os repugne subscribir una deuda, sea pequeña o grande, precisando su vencimiento. Esto es más equitativo ante Alá, es más correcto para el testimonio y da menos lugar a dudas. A menos que se trate de una operación concluida entre vosotros sin intermediarios; entonces, no hay inconveniente en que no lo pongáis por escrito. Pero ¡tomad testigos cuando os vendáis algo! ¡Y que no se moleste al escribano ni al testigo! Si lo hacéis, cometeréis una iniquidad. ¡Temed a Alá! Alá os instruye. Alá es omnisciente.\qt@no{(282)}}
+\qt@newcmd\qurantrans@es@ccxc{Y si estáis de viaje y no encontráis escribano, que se deposite una fianza. Si uno confía un depósito a otro, debe el depositario restituir el depósito en el temor de Alá, su Señor. Y no rehuséis deponer como testigos. Quien rehúsa tiene un corazón pecador. Alá sabe bien lo que hacéis.\qt@no{(283)}}
+\qt@newcmd\qurantrans@es@ccxci{De Alá es lo que está en los cielos y en la tierra. Lo mismo si manifestáis lo que tenéis en vosotros que si lo ocultáis, Alá os pedirá cuenta de ello Perdona a quien Él quiere y castiga a quien Él quiere. Alá es omnipotente.\qt@no{(284)}}
+\qt@newcmd\qurantrans@es@ccxcii{El Enviado cree en cuanto le ha sido revelado por su Señor, y lo mismo los creyentes. Todos ellos creen en Alá, en Sus ángeles. en Sus Escrituras y en Sus enviados. No hacemos distinción ente ninguno de Sus enviados. Han dicho: «Oímos y obedecemos. ¡Tu perdón, Señor! ¡Eres Tú el fin de todo!»\qt@no{(285)}}
+\qt@newcmd\qurantrans@es@ccxciii{Alá no pide nada a nadie más allá de sus posibilidades. Lo que uno haya hecho redundará en su propio bien o en su propio mal. ¡Señor! ¡No castigues nuestros olvidos o nuestras faltas! ¡Señor! ¡No nos impongas una carga como la que impusiste a quienes nos precedieron! ¡Señor! ¡No nos impongas más allá de nuestras fuerzas! ¡Y absuélvenos, perdónanos, apiádate d nosotros! ¡Tú eres nuestro Protector! ¡Auxílianos contra el pueblo infiel!\qt@no{(286)}}
+\qt@newcmd\qurantrans@es@ccxciv{\basmalahes `lm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@ccxcv{¡Alá! No hay más dios que Él, el Viviente, el Subsistente.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@ccxcvi{Él te ha revelado la Escritura con la Verdad, en confirmación de los mensajes anteriores. Él ha revelado la Toro y el Evangelio\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@ccxcvii{antes, como dirección para los hombres, y ha revelado el Criterio. Quienes no crean en los signos de Alá tendrán un castigo severo. Alá es poderoso, vengador.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@ccxcviii{No hay nada en la tierra ni en el cielo que se esconda de Alá.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@ccxcix{Él es Quien os forma en el seno como quiere. No hay más dios que Él, el Poderoso, el Sabio.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@ccc{Él es Quien te ha revelado la Escritura. Algunas de sus aleyas son unívocas y constituyen la Escritura Matriz; otras son equívocas. Los de corazón extraviado siguen las equívocas, por espíritu de discordia y por ganas de dar la interpretación de ello. Pero nadie sino Alá conoce la interpretación de ello. Los arraigados en la Ciencia dicen:«Creemos en ello. Todo procede de nuestro Señor». Pero no se dejan amonestar sino los dotados de intelecto.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@ccci{¡Señor! ¡No hagas que nuestros corazones se desvíen, después de habernos Tú dirigido! ¡Regálanos, de Ti, misericordia! Tú eres el Munífico.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@cccii{¡Señor! Tú eres quien va a reunir a los hombres para un día indubitable. Alá no falta a Su promesa.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@ccciii{A quienes no crean, ni su hacienda ni sus hijos les servirán de nada frente a Alá. Ésos servirán de combustible para el Fuego.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@ccciv{Como ocurrió con la gente de Faraón y con los que les precedieron: desmintieron Nuestros signos y Alá les castigó por sus pecados. Alá castiga severamente.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@cccv{Di a quienes no creen: «Seréis vencidos y congregados hacia la gehena». ¡Qué mal lecho...!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@cccvi{Tuvisteis un signo en las dos tropas que se encontraron: la que combatía por Alá y la otra, infiel, que, a simple vista, creyó que aquélla le doblaba en número. Alá fortalece con Su auxilio a quien Él quiere. Sí, hay en ello motivo de reflexión para quienes tienen ojos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@cccvii{El amor de lo apetecible aparece a los hombres engalanado: las mujeres, los hijos varones, el oro y la plata por quintales colmados, los caballos de raza, los rebaños los campos de cultivo... Eso es breve disfrute de la vida de acá. Pero Alá tiene junto a Sí un bello lugar de retorno.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@cccviii{Di: «¿Puedo informaros de algo mejor que eso?» Quienes teman a Alá encontrarán junto a su Señor jardines por cuyos bajos fluyen arroyos y en los que estarán eternamente, esposas purificadas y la satisfacción de Alá. Alá ve bien a Sus siervos,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@cccix{que dicen: «¡Señor! ¡Nosotros creemos! ¡Perdónanos, pues, nuestros pecados y presérvanos del castigo del Fuego!»,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@cccx{pacientes, sinceros, devotos, que practican la caridad y piden perdón al rayar el alba.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@cccxi{Alá atestigua, y con Él los ángeles y los hombres dotados de ciencia, que no hay más dios que Él, Que vela por la equidad. No hay más dios que Él, el Poderoso, el Sabio.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@cccxii{Ciertamente, la Religión, para Alá, es el islam. Aquéllos a quienes se dio la Escritura no se opusieron unos a otros, por rebeldía mutua, sino después de haber recibido la Ciencia. Quien no cree en los signos de Alá,... Alá es rápido en ajustar cuentas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@cccxiii{Si disputan contigo, di: «Yo me someto a Alá y lo mismo hacen quienes me siguen». Y di a quienes recibieron la Escritura y a quienes no la recibieron. «¿Os convertís al islam?», Si se convierten , están bien dirigidos; si vuelven la espalda, a ti sólo te incumbe la transmisión. Alá ve bien a Sus siervos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@cccxiv{Anuncia un castigo doloroso a quienes no creen en los signos de Alá, matan a los profetas sin justificación y matan a los hombres que ordenan la equidad.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@cccxv{Ésos son aquéllos cuyas obras son vanas en la vida de acá y en la otra y no tendrán quienes les auxilien.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@cccxvi{¿No has visto a quienes han recibido una porción de la Escritura ? Se les invita a que acepten la Escritura de Alá para que decida entre ellos, pero algunos vuelven la espalda y se van.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@cccxvii{Es que han dicho: «El fuego no nos tocará más que por días contados». Sus propias mentiras les han engañado en su religión.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@cccxviii{¿Qué pasará cuando les reunamos para un día indubitable y cada uno reciba su merecido? Y no serán tratados injustamente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@cccxix{Di: «¡Oh, Alá, Dueño del dominio! Tú das el dominio a quien quieres y se lo retiras a quien quieres, exaltas a quien quieres y humillas a quien quieres. En Tu mano está el bien. Eres omnipotente.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@cccxx{Tú haces que la noche entre en el día y que el día entre en la noche. Tú sacas al vivo del muerto y al muerto del vivo. Tú provees sin medida a quien quieres».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@cccxxi{Que no tomen los creyentes como amigos a los infieles en lugar de tomar a los creyentes -quien obre así notendrá ninguna participación en Alá-, a menos quetengáis algo que temer de ellos. Al á os advierte quetengáis cuidado con Él. ¡Alá es el fin de todo!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@cccxxii{Di: «Lo mismo si escondéis lo que tenéis en vuestros pechos que si lo manifestáis, Alá lo conoce». Y conoce lo que está en los cielos y en la tierra. Alá es omnipotente.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@cccxxiii{El día que cada uno se encuentre frente al bien y el mal que ha hecho, deseará tener bien lejos ese día. Alá advierte que tengáis cuidado con Él. Alá es manso con Sus siervos.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@cccxxiv{Di: «Si amáis a Alá ,¡seguidme! Alá os amará y os perdonará vuestros pecados. Alá es indulgente, misericordioso».\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@cccxxv{Di: «¡Obedeced a Alá y al Enviado!»Si vuelven la espalda,... Alá no ama a los infieles.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@cccxxvi{Alá ha escogido a Adán, a Noé, a la familia de Abraham y a la de Imran por encima de todos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@cccxxvii{Como descendientes unos de otros. Alá todo lo oye. todo lo sabe.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@cccxxviii{Cuando la mujer de Imran dijo: «¡Señor! Te ofrezco en voto, a Tu exclusivo servicio, lo que hay en mi seno. ¡Acéptamelo! Tú eres Quien todo lo oye, Quien todo lo sabe».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@cccxxix{Y cuando dio a luz a una hija, dijo:«¡Señor! Lo que he dado a luz es una hembra -bien sabía Alá lo que había dado a luz- y un varón no es igual que una hembra. Le he puesto por nombre María y la pongo bajo Tu protección contra el maldito Demonio, y también a su descendencia».\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@cccxxx{Su Señor la acogió favorablemente, la hizo crecer bien y la confió a Zacarías. Siempre que Zacarías entraba en el Templo para verla, encontraba sustento junto a ella. Decía:«María!, ¿de dónde te viene eso?» Decía ella:«De Alá. Alá provee sin medida a quien Él quiere».\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@cccxxxi{Entonces, Zacarías invocó a su Señor diciendo: «¡Señor! ¡Regálame, de Ti, una descendencia buena! Tú escuchas a quien Te invoca».\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@cccxxxii{Los ángeles le llamron cuando, de pie, oraba en el Templo: «Alá te anuncia la buena nueva de Juan, en confirmación de una Palabra que procede de Alá, y que será jefe, abstinente, profeta, de l os justos».\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@cccxxxiii{«¡Señor!» dijo, «¿cómo puedo tener un muchacho si soy ya viejo y mi mujer estéril?» Dijo:«Así será. Alá hace lo que Él quiere».\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@cccxxxiv{Dijo: «¡Señor! ¡Dame un signo!»Dijo. «Tu signo será que no podrás hablar a la gente durante tres días sino por señas. Recuerda mucho a tu Señor y glorifícale, al anochecer y al alba».\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@cccxxxv{Y cuando los ángeles dijeron:«¡María! Alá te ha escogido y purificado. Te ha escogido entre todas las mujeres del universo.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@cccxxxvi{¡María! ¡Ten devoción a tu Señor, prostérnate e inclínate con los que se inclinan!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@cccxxxvii{Esto forma parte de las historias referentes a lo oculto, que Nosotros te revelamos. Tú no estabas con ellos cuando echaban suertes con sus cañas para ver quién de ellos iba a encargarse de María. Tú no estabas con ellos cuando disputaban.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@cccxxxviii{Cuando los ángeles dijeron: «¡María! Alá te anuncia la buena nueva de una Palabra que procede de Él. Su nombre es el Ungido, Jesús, hijo de María, considerado en la vida de acá y en la otra y será de los allegados.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@cccxxxix{Hablará a la gente en la cuna y de adulto, y será de los justos».\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@cccxl{Dijo ella:«¡Señor! ¿Cómo puedo tener un hijo, si no me ha tocado mortal?» Dijo: «Así será. Alá crea lo que Él quiere. Cuando decide algo, le dice tan sólo: ``¡Sé!" y es.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@cccxli{Él le enseñara la Escritura, la Sabiduría, la Tora y elEvangelio».\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@cccxlii{Y como enviado a los Hijos de Israel: «Os he traído un signo que viene de vuestro Señor. Voy a crear para vosotros, de la arcilla, a modo de pájaros. Entonces, soplaré en ellos y, con permiso de Alá, se convertirán en pájaros. Con permiso de Alá, curaré al ciego de nacimiento y al leproso y resucitaré a los muertos. Os informaré de lo que coméis y de lo que almacenáis en vuestras casas. Ciertamente, tenéis en ello un signo, si es que sois creyentes.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@cccxliii{Y en confirmación de la Toraanterior a mí y para declararos lícitas algunas de las cosas que se os han prohibido. Y os he traído un signo que viene de vuestro Señor. ¡Temed, pues, a Alá y obedecedme!\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@cccxliv{Alá es mi Señor y Señor vuestro. ¡Servidle, pues! Esto es una vía recta».\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@cccxlv{Pero, cuando Jesús percibió su incredulidad, dijo: «¿Quiénes son mis auxiliares en la vía que lleva a Alá?» Los apóstoles dijeron: «Nosotros somos los auxiliares de Alá. ¡Creemos en Alá! ¡Sé testigo de nuestra sumisión!\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@cccxlvi{¡Señor! Creemos en lo que has revelado y seguimos al enviado. Inscríbenos, pues, entre los que dan testimonio».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@cccxlvii{E intrigaron y Alá intrigó también. Pero Alá es el Mejor de los que intrigan.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@cccxlviii{Cuando Alá dijo: «¡Jesús! Voy a llamarte a Mí, voy a elevarte a Mí, voy a librarte de los que no creen y poner, hasta el día de la Resurrección, a los que te siguen por encima de los que no creen. Luego, volveréis a Mí y decidiré entre vosotros sobre aquello en que discrepabais.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@cccxlix{A quienes no crean les castigaré severamente en la vida de acá y en la otra. Y no tendrán quienes les auxilien.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@cccl{En cuanto a quienes crean y obren bien, Él les remunerará debidamente. Alá no ama a los impíos».\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@cccli{Esto te recitamos de las aleyas y de la sabia Amonestación.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@ccclii{Para Alá, Jesús es semejante a Adán, a quien creó de tierra y a quien dijo:«¡Sé!» y fue.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@cccliii{La Verdad viene de tu Señor. ¡No seas, pues, de los que dudan!\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@cccliv{Si alguien disputa contigo a este propósito, después de haber sabido tú lo que has sabido, di:«¡Venid! Vamos a llamar a nuestros hijos varones y a vuestros hijos varones, a nuestras mujeres y a vuestra s mujeres, a nosotros mismos y a vosotros mismos. Execrémonos mutuamente e imprequemos la maldición de Alá sobre quienes mientan».\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@ccclv{Ésta es la exposición auténtica. No hay ningún otro dios que Alá. Alá es el Poderoso, el Sabio.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@ccclvi{Si vuelven la espalda... Alá conoce bien a los corruptores.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@ccclvii{Di: «¡Gente de la Escritura !Convengamos en una fórmula aceptable a nosotros y a vosotros, según la cual no serviremos sino a Alá, no Le asociaremos nada y no tomaremos a nadie de entre nosotros como Señor fuera de Alá». Y, si vuelven la espalda, decid: «¡Sed testigos de nuestra sumisión!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@ccclviii{¡Gente dela Escritura ! ¿Por qué disputáis de Abraham, siendo así que la Tora y el Evangelio no fueron revelados sino después de él? ¿Es que no razonáis?\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@ccclix{¡Mirad cómo sois! Disputabais de lo que conocíais. ¿Vais a disputar de lo que no conocéis? Alá sabe, mientras que vosotros no sabéis.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@ccclx{Abraham no fue judío ni cristiano, sino que fue hanif, sometido a Alá, no asociador.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@ccclxi{Los más allegados a Abraham son los que le han seguido, así como este Profeta y los que han creído. Alá es el Amigo de los creyentes.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@ccclxii{Un grupo de la gente de la Escritura desearía extraviaros; pero a nadie sino a sí mismos extravían y no se dan cuenta.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@ccclxiii{¡Gente de la Escritura ! ¿Porqué no creéis en los signos de Alá, siendo, como sois, testigos de ellos?\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@ccclxiv{¡Gente de laEscritura ! ¿Por qué disfrazáis la Verdad de falsedad y ocultáis la Verdad conociéndola?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@ccclxv{Otro grupo de la gente de la Escrituradice: «¡Creed al comenzar el día en lo que se ha revelado a los que creen y dejad de creer al terminar el día! Quizás, así, se conviertan.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@ccclxvi{Y no creáis sino a quienes siguen vuestra religión». Di: «La Dirección es la dirección de Alá. Que no se dé a otro lo que se os ha dado a vosotros, que no discutan con vosotros ante vuestro Señor». Di: «El favor está en la mano de Alá, Que lo dispensa a quien Él quiere». Alá es inmenso, omnisciente.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@ccclxvii{Particulariza con Su misericordia a quien Él quiere. Alá es el Dueño del favor inmenso.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@ccclxviii{Entre la gente de laEscritura hay quien, si le confías un quintal, te lo devuelve y hay quien, si le confías un dinar, no te lo devuelve sino es atosigándole. Y esto es así porque dicen: «No tenemos por qué ser escrupulosos con los gentiles». Mienten contra Alá a sabiendas.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@ccclxix{¡Pues sí! Si uno cumple su promesa y teme a Alá,... Alá ama quienes le temen.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@ccclxx{Quienes malvenden la alianza con Alá y sus juramentos no tendrán parte en la otra vida. Alá no les dirigirá la palabra ni les mirará el día de la Resurrección, no les declarará puros y tendrán un castigo doloroso.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@ccclxxi{Algunos de ellos trabucan con sus lenguas la Escritura para que creáis que está en la Escritura lo que no está en la Escritura, diciendo que viene de Alá, siendo así que n o viene de Alá. Mienten contra Alá a sabiendas.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@ccclxxii{No está bien que un mortal a quien Alá da la Escritura, el jucio y el profetismo, vaya diciendo a la gente: «¡Sed siervos míos y no de Alá!» Antes bien: «¡Sed maestros, puesto que enseñáis la Escritura y la estudiáis!»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@ccclxxiii{Alá no os ordena que toméis como señores a los ángeles y a los profetas. ¿Es que iba a ordenaros que fuerais infieles, después de haberos sometido a Él?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@ccclxxiv{Y cuando Alá concertó un pacto con los profetas: «Cuando venga a vosotros un Enviado que confirme lo que de Mí hayáis recibido comoEscritura y como Sabiduría. habéis de creer en él y auxiliarle». Dijo: «¿Estáis dispuestos a aceptar mi alianza con esa condición?» Dijeron: «Estamos dispuestos». Dijo:«Entonces, ¡sed testigos! Yo también. con vosotros, soy testigo».\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@ccclxxv{Quienes, después de esto, vuelvan la espalda serán los perversos.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@ccclxxvi{¿Desearían una religión diferente de la de Alá, cuando los que están en los cielos y en la tierra se someten a Él de grado o por fuerza? Y serán devueltos a Él.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@ccclxxvii{Di «Creemos en Alá y en lo que se nos ha revelado, en lo que se ha revelado a Abraham, Ismael, Isaac, Jacob y las tribus, en lo que Moisés, Jesús y los profetas han recibido de su Señor. No hacemos distinción entre ninguno de ellos y nos sometemos a Él».\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@ccclxxviii{Si alguien desea una religión diferente del islam, no se le aceptará y en la otra vida será de los que pierdan.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@ccclxxix{¿Cómo va Alá a dirigir a un pueblo que ha dejado de creer después de haber creído, de haber sido testigo de la veracidad del Enviado y de haber recibido las pruebas claras? Alá no dirige al pueblo impío.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@ccclxxx{Esos tales incurrirán, como retribución, en la maldición de Alá, de los ángeles y de los hombres, en la de todos ellos.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@ccclxxxi{Eternos en ella, no se les mitigará el castigo, ni les será dado esperar.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@ccclxxxii{Serán exceptuados quienes, después de eso, se arrepientan y se enmienden. Alá es indulgente, misericordioso.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@ccclxxxiii{A quienes dejen de creer, después de haber creído, y luego se obstinen en su incredulidad, no se les aceptará el arrepentimiento. Ésos son los extraviados.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@ccclxxxiv{Si uno que no cree muere siendo infiel, aunque ofrezca como precio de rescate la tierra llena de oro, no se le aceptará. Esos tales tendrán un castigo doloroso y no encontrarán quienes les auxilien.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@ccclxxxv{No alcanzaréis la piedad auténtica mientras no gastéis algo de lo que amáis. Y Alá conoce bien cualquier cosa que gastáis.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@ccclxxxvi{Antes de que fuera revelada la Tora, todo alimento era lícito para los Hijos de Israel, salvo lo que Israel se había vedado a sí mismo. Di: «Si es verdad lo que decís., ¡traed la Tora y leedla!»,\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@ccclxxxvii{Quienes, después de eso, inventen la mentira contra Alá, ésos son los impíos.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@ccclxxxviii{Di: «Alá ha dicho la verdad. Seguid, pues, la religión de Abraham, que fue hanif y no asociador».\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@ccclxxxix{La primera Casa erigida para los hombres es, ciertamente, la de Bakka, casa bendita y dirección para todos.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@cccxc{Hay en ella signos claros. Es el lugar de Abraham y quien entre en él estará seguro. Alá ha prescrito a los hombres la peregrinación a la Casa, si disponen de medios. Y quien no crea... Alá puede prescindir de las criaturas.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@cccxci{Di: «¡Gente de la Escritura !¿Por qué no creéis en los signos de Alá? Alá es testigo de lo que hacéis».\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@cccxcii{Di: «¡Gente de la Escritura !¿Por qué desviáis a quien cree del camino de Alá, deseando que sea tortuoso, siendo así que sois testigos? Alá está atento a lo que hacéis».\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@cccxciii{¡Creyentes! Si obedecéis a algunos de los que han recibido la Escritura, harán que, luego de haber creído, no creáis.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@cccxciv{¿Cómo podéis dejar de creer si se os recitan las aleyas de Alá y Su Enviado se halla entre vosotros? Quien se aferre a Alá será dirigido a una vía recta.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@cccxcv{¡Creyentes! Temed a Alá con el temor que Le es debido y no muráis sino como musulmanes.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@cccxcvi{Aferraos al pacto de Alá, todos juntos, sin dividiros. Recordad la gracia que Alá os dispensó cuando erais enemigos: reconcilió vuestros corazones y, por Su gracia, os transformasteis en hermanos; estabais al borde de un abismo de fuego y os libró de él. Así os explica Alá Sus signos. Quizás, así, seáis bien dirigidos.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@cccxcvii{¡Que constituyáis una comunidad que llame al bien, ordenando lo que está bien y prohibiendo lo que está mal! Quienes obren así serán los que prosperen.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@cccxcviii{¡No seáis como quienes, después de haber recibido las pruebas claras, se dividieron y discreparon! Esos tales tendrán un castigo terrible\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@cccxcix{el día que unos rostros estén radiantes y otros hoscos. A aquéllos cuyos rostros estén hoscos: «¿Habéis dejado de creer luego de haber creído? Pues ¡gustad el castigo por no haber creído!»\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@cd{En cuanto a aquéllos cuyos rostros estén radiantes, gozarán eternamente de la misericordia de Alá.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@cdi{Éstas son las aleyas de Alá, que te recitamos conforme a la verdad. Alá no quiere la injusticia para las criaturas.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@cdii{De Alá es lo que está en los cielos y en la tierra. Todo será devuelto a Alá.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@cdiii{Sois la mejor comunidad humana que jamás se haya suscitado: ordenáis lo que está bien, prohibís lo que está mal y creéis en Alá. Si la gente de la Escritura creyera, les iría mejor. Hay entre ellos creyentes, pero la mayoría son perversos.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@cdiv{Os dañarán, pero poco. Y si os combaten, os volverán la espalda. Luego, no seles auxiliará.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@cdv{Han sido humillados dondequiera que se ha dado con ellos, excepto los protegidos por un pacto con Alá o por un pacto con los hombres. Han incurrido en la ira de Alá y les ha señalado la miseria. Por no haber creído en los signos de Alá y por haber matado a los profetas sin justificación. Por haber desobedecido y violado la ley.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@cdvi{No todos son iguales. Entre la gente de la Escritura hay una comunidad honrada: durante la noche, recitan las aleyas de Alá y se prosternan,\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@cdvii{creen en Alá y en el último Día, ordenan lo que está bien, prohiben lo que está mal y rivalizan en buenas obras. Esos tales son de los justos.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@cdviii{No se les desagradecerá el bien que hagan. Alá conoce bien a los que Le temen.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@cdix{A quienes no crean, ni su hacienda ni sus hijos les servirán de nada frente a Alá. Esos tales morarán en el Fuego eternamente.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@cdx{Lo que gastan en la vida de acá es semejante a un viento glacial que bate la cosecha de gente que se ha dañado a sí misma y la destruye. No es Alá quien ha sido injusto con ellos, sino que ellos lo han sido consigo mismos.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@cdxi{¡Creyentes! No intiméis con nadie ajeno a vuestra comunidad. Si no, no dejarán de dañaros. Desearían vuestra ruina. El odio asomó a sus bocas, pero lo que ocultan sus pechos es peor. Os hemos explicado las aleyas. Si razonarais...\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@cdxii{Vosotros, bien que les amáis, pero ellos no os aman. Vosotros creéis en toda la Escritura... Ellos, cuando os encuentran, dicen: «¡Creemos!» pero, cuando están a solas, se muerden las puntas d e los dedos, de rabia contra vosotros. Di:«¡Morid de rabia!» Alá sabe bien lo que encierran los pechos.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@cdxiii{Si os sucede un bien. les duele; si os hiere un mal, se alegran. Pero, si tenéis paciencia y teméis a Alá, sus artimañas no os harán ningún daño. Alá abarca todo lo que hacen.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@cdxiv{Y cuando dejaste por la mañana temprano a tu familia para asignar a los creyentes sus puestos de combate. Alá todo lo oye, todo lo sabe.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@cdxv{Cuando dos de vuestras tropas proyectaron abandonar, a pesar de ser Alá su Amigo. ¡Que los creyentes confíen en Alá!\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@cdxvi{Alá, ciertamente, os auxilió en Badr cuando erais humillados. ¡Temed a Alá! Quizás, así, seáis agradecidos.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@cdxvii{Cuando decías a los creyentes: «¿No os basta que vuestro Señor os refuerce con tres mil ángeles enviados abajo?\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@cdxviii{¡Pues sí! Si tenéis paciencia y teméis a Alá, si os acometen así de súbito, vuestro Señor os reforzará con cinco mil ángeles provistos de distintivos».\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@cdxix{Alá no lo hizo sino como buena nueva para vosotros y para que, con ello, se tranquilizaran vuestros corazones -la victoria no viene sino de Alá, el Poderoso, el Sabio-,\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@cdxx{para despedazar a los que no creían o derrotarlos y que regresaran, así, decepcionados.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@cdxxi{No es asunto tuyo si Él se vuelve a ellos o les castiga. Han obrado impíamente.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@cdxxii{De Alá es lo que está en los cielos y en la tierra. Perdona a quien Él quiere y castiga a quien Él quiere. Alá es indulgente, misericordioso.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@cdxxiii{¡Creyentes! ¡No usureéis, doblando una y otra vez! ¡Y temed a Alá! Quizás, así, prosperéis.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@cdxxiv{¡Y temed el fuego preparado para los infieles!\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@cdxxv{¡Y obedeced a Alá y al Enviado!; Quizás, así, se os tenga piedad.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@cdxxvi{¡Y apresuraos a obtener el perdón de vuestro Señor y un Jardín tan vasto como los cielos y la tierra, que ha sido preparado para los temerosos de Alá,\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@cdxxvii{que dan limosna tanto en la prosperidad como en la adversidad, reprimen la ira, perdonan a los hombres -Alá ama a quienes hacen el bien-,\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@cdxxviii{que, si cometen una indecencia o son injustos consigo mismos, recuerdan a Alá, piden perdón por sus pecados -¿y quién puede perdonarlos pecados sino Alá?- y no reinciden a sabiendas!\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@cdxxix{Su retribución será el perdón de su Señor y jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente. ¡Qué grata es la recompensa de los que obran bien!\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@cdxxx{Antes de vosotros han ocurrido casos ejemplares. ¡Id por la tierra y mirad cómo terminaron los desmentidores!\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@cdxxxi{Ésta es una explicación para los hombres, dirección, exhortación para los temerosos de Alá.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@cdxxxii{¡No os desaniméis ni estéis tristes, ya que seréis vosotros quienes ganen! Si es que sois creyentes...\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@cdxxxiii{Si sufrís una herida, otros han sufrido una herida semejante. Nosotros hacemos alternar esos días entre los hombres para que reconozca Alá a quienes crean y tome testigos de entre vosotros -Alá no ama a los impíos-,\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@cdxxxiv{para que pruebe Alá a los creyentes y extermine a los infieles.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@cdxxxv{O ¿creéis que vais a entrar en el Jardín sin que Alá haya sabido quiénes de vosotros han combatido y quiénes han tenido paciencia?\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@cdxxxvi{Sí, deseabais la muerte antes de encontrarla. Ya la habéis visto, pues, con vuestros propios ojos.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@cdxxxvii{Mahoma no es sino un enviado, antes del cual han pasado otros enviados. Si, pues, muriera o le mataran, ¿ibais a volveros atrás? Quien se vuelva atrás no causará ningún daño A Alá. Y Alá retribuirá a los agradecidos.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@cdxxxviii{Nadie puede morir sino con permiso De Alá y según el plazo fijado. A quien quiera la recompensa dela vida de acá, le daremos de ella. Y a quien quiera la recompensa de la otra vida, le daremos de ella. Y retribuiremos a los agradecidos.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@cdxxxix{¡Qué de profetas ha habido, junto a los cuales combatieron muchas miriadas, y no se descorazonaron por los reveses padecidos por Alá, no flaquearon, no cedieron! Alá ama a los tenaces.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@cdxl{No decían más que:«¡Señor! ¡Perdónanos nuestros pecados y los excesos que hemos cometido! ¡Afirma nuestros pasos! ¡Auxílianos contra el pueblo infiel!»\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@cdxli{Alá les dio la recompensa de la vida de acá y la buena recompensa de la otra. Alá ama a quienes hacen el bien.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@cdxlii{¡Creyentes! Si obedecéis a quienes no creen, os harán retroceder y regresaréis habiendo perdido.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@cdxliii{¡No! Alá es vuestro Protector y el Mejor de los auxiliares.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@cdxliv{Infundiremos el terror en los corazones de los que no crean, por haber asociado a Alá algo a lo que Él no ha conferido autoridad. Su morada será el Fuego. ¡Qué mala es la mansión de los impíos!\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@cdxlv{Alá ha cumplido la promesa que os hizo cuando, con Su permiso, les vencíais, hasta que, por fin, flaqueasteis, discutisteis sobre el particular y desobedecisteis, después de haberos Él dejado ver l a victoria que queríais. -De vosotros unos desean la vida de acá y otros desean la otra vida-. Luego, hizo que os retirarais de ellos para probaros. Ciertamente, os ha perdonado. Alá dispensa su favor a los creyentes.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@cdxlvi{Cuando subíais sin preocuparos de nadie, mientras que el Enviado os llamaba a retaguardia. Os atribulaba una y otra vez para que no estuvierais tristes por lo que se os había escapado ni por lo que os había ocurrido. Alá está bien informado de lo que hacéis.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@cdxlvii{Luego, pasada la tribulación, hizo descender sobre vosotros seguridad: un sueño que venció a algunos de vosotros. Otros, en cambio, preocupados tan sólo por su suerte y pensando de Alá equivocadamente, a la manera de los paganos, decían: «¿Tenemos nosotros algo que ver con esto?» Di: «Todo está en manos De Alá». Ocultan para sí lo que no te manifiestan. Dicen: «Si hubiera dependido de nosotros, no habríamos tenido muertos aquí» Di: «También. si os hubierais quedado en casa, la muerte habría sorprendido en sus lechos a aquéllos de quienes estaba ya escrita. Alá ha hecho esto para probar lo que hay en vuestros pechos y purificar lo que hay en vuestros corazones. Alá sabe bien lo que encierran los pechos».\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@cdxlviii{Si algunos de los vuestros huyeron el día que se encontraron los dos ejércitos, fue porque el Demonio les hizo caer por alguna culpa que habían cometido. Pero Alá les ha perdonado ya. Alá es indulgente, benigno.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@cdxlix{¡Creyentes! ¡No seáis como quienes no creen y dicen de sus hermanos que están de viaje o de incursión: «Si se hubieran quedado con nosotros, no habrían muerto o no les habrían matado»! ¡Haga Alá que les pese esto en sus corazones! Alá da la vida y dala muerte. Alá ve bien lo que hacéis.\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@cdl{Y si sois muertos por Alá o morís de muerte natural, el perdón y misericordia de Alá son mejores que lo que ellos amasan.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@cdli{Si morís de muerte natural o sois muertos, seréis, si, congregados hacia Alá.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@cdlii{Por una misericordia venida de Alá, has sido suave con ellos. Si hubieras sido áspero y duro de corazón, se habrían escapado de ti. ¡Perdónales, pues, y pide el perdón de Alá en su favor y consúltales sobre el asunto! Pero, cuando hayas tomado una decisión. confía en Alá. Alá ama a los que confían en Él.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@cdliii{Si Alá os auxilia, no habrá nadie que pueda venceros. Pero, si os abandona, ,¿quién podrá auxiliaros fuera de Él? ¡Que los creyentes confíen en Alá!\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@cdliv{No es propio de un profeta el cometer fraude. Quien defraude llevará lo defraudado el día de la Resurrección. Luego, cada uno recibirá su merecido. Y no serán tratados injustamente.\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@cdlv{¿Es que quien busca agradar a Alá es como quien incurre en la ira de Alá y tiene por morada la gehena? ¡Qué mal fin...!\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@cdlvi{Estarán por categorías junto a Alá. Alá ve bien lo que hacen.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@cdlvii{Alá ha agraciado a los creyentes al enviarles un Enviado salido de ellos, que les recita Sus aleyas, les purifica y les enseña la Escritura y la Sabiduría. Antes estaban evidentemente extraviados.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@cdlviii{¿Cómo, cuando os sobreviene una desgracia, después de haber infligido el doble de aquélla, decís aún:«¿De dónde viene esto?» Di: «De vosotros mismos». Aláes omnipotente.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@cdlix{Y lo que os pasó el día que se encontraron los dos ejércitos fue porque lo permitió Alá y para que supiera quiénes eran los creyentes\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@cdlx{y quiénes los hipócritas. Se les dijo: «¡Vamos! ¡Combatid por Alá o rechazad al enemigo!» Dijeron: «Si supiéramos combatir, os seguiríamos». Aquel día estaban más cerca de la incredulidad que de la fe. Dicen con la boca lo que no tienen en el corazón. Pero Alá sabe bien lo que ocultan.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@cdlxi{Son ellos quienes, mientras se quedaban en casa, decían de sus hermanos: «Si nos hubieran escuchado, no les habrían matado». Di: «¡Apartad, pues la muerte de vosotros, si es verdad lo que decís»\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@cdlxii{Y no penséis que quienes han caído por Alá hayan muerto. ¡Al contrario! Están vivos y sustentados junto a su Señor.\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@cdlxiii{contentos por el favor que Alá les ha hecho y alegres por quienes aún no les han seguido, porque no tienen que temer y no estarán tristes,\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@cdlxiv{alegres por una gracia y favor de Alá y porque Alá no deja de remunerar a los creyentes.\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@cdlxv{A quienes escucharon a Alá y al Enviado, luego de la herida recibida, a quienes, entre ellos, hicieron el bien y temieron a Alá, se les reserva una magnífica recompensa.\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@cdlxvi{A aquéllos a quienes se dijo: «La gente se ha agrupado contra vosotros, ¡tenedles miedo!», esto les aumentó la fe y dijeron: «Alá nos basta! ¡Es un protector excelente!»\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@cdlxvii{Y regresaron por una gracia y favor de Alá, sin sufrir mal. Buscaron la satisfacción de Alá. Y Alá es el Dueño del favor inmenso.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@cdlxviii{Así es el Demonio: hace tener miedo de sus amigos. Pero, si sois creyentes, no tengáis miedo de ellos, sino de Mí.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@cdlxix{Que no te entristezca ver a quienes se precipitan en la incredulidad. No podrán causar ningún daño a Alá. Alá no quiere darles parte en la otra vida. Tendrán un castigo terrible.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@cdlxx{Quienes compren la incredulidad con la fe no causarán ningún daño a Alá y tendrán un castigo doloroso.\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@cdlxxi{Que no piensen los infieles que el que les concedamos una prórroga supone un bien para ellos. El concedérsela es para que aumente su pecado. Tendrán un castigo humillante.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@cdlxxii{No va Alá a dejar a los creyentes en la situación en que os halláis hasta que distinga al malo del bueno. Ni va Alá a enteraros de lo oculto. Pero Alá elige de entre Sus enviados a quien Él quiere. Creed, pues, en Alá y en Sus enviados. Si creéis y teméis a Alá, tendréis una magnífica recompensa.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@cdlxxiii{Que no crean quienes se muestran avaros del favor recibido de Alá que eso es bueno para ellos. Al contrario, es malo. El día de la Resurrección llevarán a modo de collar el objeto de su avaricia. L a herencia de los cielos y de la tierra pertenece a Alá. Alá está bien informado de lo que hacéis.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@cdlxxiv{Alá ha oído las palabras de quienes han dicho.«Alá es pobre y nosotros somo ricos». Tomaremos nota de lo que han dicho y de que han matado a los profetas sin justificación. Y les diremos: «¡Gustad el castigo del fuego de la gehena!\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@cdlxxv{Esto es lo que vuestras obras han merecido, que Alá no es injusto con Sus siervos».\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@cdlxxvi{Esos mismos han dicho:«Alá ha concertado una alianza con nosotros: que no creamos en ningún enviado hasta tanto que nos traiga una oblación que el fuego consuma». Di: «Antes de mí, otros enviados os trajeron las pruebas claras y lo que habéis pedido. ¡Por qué, pues, les matasteis, si es verdad lo que decís?»\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@cdlxxvii{Y si te desmienten, también fueron desmentidos otros enviados antes de ti, que vinieron con las pruebas claras, las Escrituras y la Escritura luminosa.\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@cdlxxviii{Cada uno gustará la muerte, pero no recibiréis vuestra recompensa íntegra hasta el día dela Resurrección. Habrá triunfado quien sea preservado del Fuego e introducido en el Jardín. La vida de acá no es más que falaz disfrute.\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@cdlxxix{Seréis, ciertamente, probados en vuestra hacienda y en vuestras personas. Y oiréis, ciertamente, muchas cosas malas de aquéllos que han recibido la Escritura antes de vosotros y de los asociadores ; pero, si sois pacientes y teméis a Alá, eso sí que es dar muestras de resolución.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@cdlxxx{Cuando Alá concertó un pacto con los que habían recibido la Escritura: «Tenéis que explicársela a los hombres, no se la ocultéis». Pero se la echaron a la espalda y la malvendieron. ¡Qué mal negocio...!\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@cdlxxxi{No creas, no, que quienes se alegran delo que han hecho y gustan de ser alabados por lo que han dejado de hacer, no creas, no, que vayan a librarse del castigo. Tendrán un castigo doloroso.\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@cdlxxxii{El dominio de los cielos y dela tierra pertenece a Alá. Alá es omnipotente.\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@cdlxxxiii{En la creación de los cielos y de la tierra y en la sucesión de la noche y el día hay, ciertamente, signos para los dotados de intelecto.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@cdlxxxiv{que recuerdan a Alá de pie, sentados o echados, y que meditan en la creación de los cielos y de la tierra:«¡Señor! No has creado todo esto en vano ¡Gloria a Ti! ¡Presérvanos del castigo del Fuego!».\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@cdlxxxv{¡Señor! Tú cubres de oprobio a quien introduces en el Fuego. Los impíos no tendrán quien les auxilie.\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@cdlxxxvi{¡Señor! ;Hemos oído a uno que llamaba a la fe: «¡Creed en Vuestro Señor!» y hemos creído. ¡Señor!¡ Perdónanos nuestros pecados! ¡Borra nuestras malas obras y recíbenos. cuando muramos, entre los justos!\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@cdlxxxvii{¡Y danos, Señor, lo que nos has prometido por Tus enviados y no nos cubras de oprobio el día de la Resurrección! Tú no faltas a Tu promesa.\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@cdlxxxviii{Su Señor escuchó su plegaria: «No dejaré que se pierda obra de ninguno de vosotros, lo mismo si es varón que si es hembra, que habéis salido los unos de los otros. He de borrar las malas obras de quienes emigraron y fueron expulsados de sus hogares, de quienes padecieron por causa Mía, de quienes combatieron y fueron muertos, y he de introducirles en jardines por cuyos bajos fluyen arroyos: recompensa de Alá». Alá tiene junto a Sí la bella recompensa.\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@cdlxxxix{¡Que no te desconcierte ver a los infieles yendo de acá para allá por el país!\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@cdxc{¡Mezquino disfrute! Luego, su morada será la gehena. ¡Qué mal lecho...!\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@cdxci{En cambio, quienes teman a su Señor tendrán jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente, como alojamiento que Alá les brinda. Y lo que hay junto a Alá es mejor para los justos.\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@cdxcii{Hay entre la gente de la Escrituraquienes creen en Alá y en la Revelación hecha a vosotros y a ellos. Humildes ante Alá, no han malvendido los signos de Alá. Esos tales tendrán su re compensa junto a su Señor. Alá es rápido en ajustar cuentas.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@cdxciii{¡Creyentes! ¡Tened paciencia, rivalizad en ella! ¡Sed firmes! ¡Temed a Alá! Quizás así, prosperéis.\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@cdxciv{\basmalahes ¡Hombres! ¡Temed a vuestro Señor, Que os ha creado de una sola persona, de la que ha creado a su cónyuge, y de los que ha diseminado un gran número de hombres y de mujeres! ¡Temed a Alá, en Cuyo nombre os pedís cosas, y respetad la consanguinidad! Alá siempre os observa.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@cdxcv{Dad a los huérfanos los bienes que les pertenecen. No sustituyáis lo malo por lo bueno. No consumáis su hacienda agregándola a la vuestra. Sería un gran pecado.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@cdxcvi{Si teméis no ser equitativos con los huérfanos, entonces, casaos con las mujeres que os gusten: dos, tres o cuatro. Pero. si teméis no obrar con justicia, entonces con una sola o con vuestras esclavas. Así, evitaréis mejor el obrar mal.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@cdxcvii{Dad a vuestras mujeres su dote gratuitamente. Pero, si renuncian gustosas a una parte en vuestro favor, haced uso de ésta tranquilamente.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@cdxcviii{¡No confiéis a los incapaces la hacienda que Alá os ha dado para subsistir!, ¡sustentadles de ella y vestidles! ¡Y habladles con cariño!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@cdxcix{Tantead a los huérfanos hasta que alcancen la nubilidad, Cuando los creáis ya maduros, pasadles su hacienda. No la consumáis pródiga y prematuramente antes de que alcancen la mayoría de edad. El rico, que no se aproveche. El pobre, que gaste como es debido. Cuando les entreguéis su hacienda, requerid la presencia de testigos. Alá basta para ajustar cuentas...\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@d{Sea para los hombres una parte de lo que los padres y parientes más cercanos dejen; y para las mujeres una parte de lo que los padres y parientes más cercanos dejen. Poco o mucho, es una parte determinada.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@di{Si asisten al reparto parientes, huérfanos, pobres, dadles algún sustento de ello y habladles con cariño.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@dii{Quienes dejen menores de edad y estén intranquilos por ellos, que tengan miedo. Que teman a Alá y digan palabras oportunas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@diii{Quienes consuman injustamente la hacienda de los huérfanos, sólo fuego ingerirán en sus entrañas y arderán en fuego de la gehena.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@div{Alá os ordena lo siguiente en lo que toca a vuestros hijos: que la porción del varón equivalga a la de dos hembras. Si éstas son más de dos, les corresponderán dos tercios de la herencia. Si es hija única. la mitad. A cada uno de los padres le corresponderá un sexto de la herencia, si deja hijos; pero, si no tiene hijos y le heredan sólo sus padres, un tercio es para la madre. Si tiene hermanos, un sexto es para la madre. Esto, luego de satisfacer sus legados o deudas. De vuestros ascendientes o descendientes no sabéis quiénes os son más útiles. Ésta es obligación de Alá. Alá es omnisciente, sabio.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@dv{A vosotros os corresponde la mitad de lo que dejen vuestras esposas si no tienen hijos. Si tienen, os corresponde un cuarto. Esto, luego de satisfacer sus legados o deudas. Si no tenéis hijos, a ellas les corresponde un cuarto de lo que dejéis. Si tenéis, un octavo de lo que dejéis. Esto. luego de satisfacer vuestros legados o deudas. Si los herederos de un hombre o de una mujer son parientes colaterales y le sobrevive un hermano o una hermana, entonces, les corresponde, a cada uno de los dos, un sexto. Si son más, participarán del tercio de la herencia, luego de satisfacer los legados o deudas, sin dañar a nadie. Ésta es disposición de Alá. Alá es omnisciente, benigno.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@dvi{Éstas son las leyes de Alá. A quien obedezca a Alá y a Su Enviado, Él le introducirá en jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente. ¡Éste es el éxito grandioso!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@dvii{A quien, al contrario, desobedezca a Alá y a Su Enviado y viole Sus leyes. Él le introducirá en un Fuego, eternamente. Tendrá un castigo humillante.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@dviii{.Llamad a cuatro testigos de vosotros contra aquéllas de vuestras mujeres que cometan deshonestidad. Si atestiguan, recluidlas en casa hasta que mueran o hasta que Alá les procure una salida.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@dix{Si dos de los vuestros la cometen, castigad a ambos severamente. Pero, si se arrepienten y enmiendan, dejadles en paz. Alá es indulgente, misericordioso.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@dx{.Alá perdona sólo a quienes cometen el mal por ignorancia y se arrepienten en seguida. A éstos se vuelve Alá. Alá es omnisciente, sabio.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@dxi{Que no espere perdón quien sigue obrando mal hasta que, en el artículo de la muerte, dice: «Ahora me arrepiento». Ni tampoco quienes mueren siendo infieles. A éstos les hemos preparado un castigo doloroso.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@dxii{¡Creyentes! No es lícito recibir en herencia a mujeres contra su voluntad, ni impedirles que vuelvan a casarse para quitarles parte de lo que les habíais dado, a menos que sean culpables de deshonestidad manifiesta. Comportaos con ellas como es debido. Y si os resultan antipáticas, puede que Alá haya puesto mucho bien en el objeto de vuestra antipatía.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@dxiii{Y si queréis cambiar de esposa y le habíais dado a una de ellas un quintal, no volváis a tomar nada de él. ¿Ibáis a tomarlo con infamia y pecado manifiesto?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@dxiv{Y ¿cómo ibais a tomarlo, después de haber yacido y de haber concertado ella con vosotros un pacto solemne?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@dxv{En adelante. no os caséis con las mujeres con que han estado casados vuestros padres. Sería deshonesto y aborrecible. ¡Mal camino...!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@dxvi{En adelante, os están prohibidas vuestras madres, vuestras hijas, vuestras hermanas, vuestras tías paternas o maternas, vuestras sobrinas por parte de hermano o de hermana, vuestras madres de leche, vuestras hermanas de leche, las madres de vuestras mujeres, vuestras hijastras que están bajo vuestra tutela, nacidas de mujeres vuestras con las que habéis consumado el matrimonio -si no, no hay culpa-, las esposas de vuestros propios hijos, así como casaros con dos hermanas a un tiempo. Alá es indulgente, misericordioso.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@dxvii{Y las mujeres casadas, a menos que sean esclavas vuestras. ¡Mandato de Alá! Os están permitidas todas las otras mujeres, con tal que las busquéis con vuestra hacienda, con intención de casaros, no por fornicar. Retribuid, como cosa debida, a aquéllas de quienes habéis gozado como esposas. No hay inconveniente en que decidáis algo de común acuerdo después de cumplir con lo debido. Alá es omnisciente, sabio.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@dxviii{Quien de vosotros no disponga de los medios necesarios para casarse con mujeres libres creyentes, que tome mujer de entre vuestras jóvenes esclavas creyentes. Alá conoce bien vuestra fe. Salís los unos de los otros. Casaos con ellas con permiso de sus amos y dadles la dote conforme al uso, como a mujeres honestas, no como a fornicadoras o como a amantes. Si estas mujeres se casan y cometen una deshonestidad, sufrirán la mitad del castigo que las mujeres libres. Esto va dirigido a aquéllos de vosotros que tengan miedo de caer en pecado. Sin embargo, es mejor para vosotros que tengáis paciencia. Alá es indulgente, misericordioso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@dxix{Alá quiere aclararos y dirigiros según la conducta de los que os precedieron, y volverse a vosotros. Alá es omnisciente, sabio.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@dxx{Alá quiere volverse a vosotros, mientras que los que siguen lo apetecible quieren que os extraviéis por completo.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@dxxi{Alá quiere aliviaros, ya que el hombre es débil por naturaleza.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@dxxii{¡Creyentes! No os devoréis la hacienda injustamente unos a otros. Es diferente si comerciáis de común acuerdo. No os matéis unos a otros. Alá es misericordioso con vosotros.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@dxxiii{A quien obre así, violando la ley impíamente, le arrojaremos a un Fuego. Es cosa fácil para Alá.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@dxxiv{Si evitáis los pecados graves que se os han prohibido, borraremos vuestras malas obras y os introduciremos con honor.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@dxxv{No codiciéis aquello por lo que Alá ha preferido a unos de vosotros más que a otros. Los hombres tendrán parte según sus méritos y las mujeres también. Pedid a Alá de Su favor. Alá es omnisciente.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@dxxvi{Hemos designado para todos herederos legales de lo que dejen: los padres, los parientes más cercanos, los unidos a vosotros por juramento. Dadles su parte. Alá es testigo de todo.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@dxxvii{Los hombres tienen autoridad sobre las mujeres en virtud de la preferencia que Alá ha dado a unos más que a otros y de los bienes que gastan. Las mujeres virtuosas son devotas y cuidan, en ausencia de sus maridos, de lo que Alá manda que cuiden. ¡Amonestad a aquéllas de quienes temáis que se rebelen, dejadlas solas en el lecho, pegadles! Si os obedecen, no os metáis más con ellas. Alá es excelso, grande.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@dxxviii{Si teméis una ruptura entre los esposos, nombrad un árbitro de la familia de él y otro de la de ella. Si desean reconciliarse, Alá hará que lleguen a un acuerdo. Alá es omnisciente, está bien informado.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@dxxix{¡Servid a Alá y no Le asociéis nada! ¡Sed buenos con vuestros padres, parientes, huérfanos, pobres, vecinos -parientes y no parientes-, el compañero de viaje, el viajero y vuestros esclavos! Alá no ama al presumido, al jactancioso,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@dxxx{a los avaros y a los que empujan a otros a ser avaros, a los que ocultan el favor que Alá les ha dispensado, -hemos preparado para los infieles un castigo humillante-.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@dxxxi{a los que gastan su hacienda para ser vistos de los hombres, sin creer en Alá ni en el último Día. Y si alguien tiene por compañero al Demonio, mal compañero tiene...\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@dxxxii{¿Qué les habría costado haber creído en Alá y en el último Día y haber gastado en limosnas parte de aquello de que Alá les ha proveído? Alá les conoce bien.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@dxxxiii{Alá no hará ni el peso de un átomo de injusticia a nadie. Y si se trata de una obra buena, la doblará y dará, por Su parte, una magnífica recompensa.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@dxxxiv{¿Qué pasará cuando traigamos a un testigo de cada comunidad y te traigamos a ti como testigo contra éstos?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@dxxxv{Ese día, los que fueron infieles y desobedecieron al Enviado querrán que la tierra se aplane sobre ellos. No podrán ocultar nada a Alá.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@dxxxvi{¡Creyentes! No os acerquéis ebrios a la azalá. Esperad a que estéis en condiciones de saber lo que decís. No vayáis impuros -a no ser que estéis de viaje- hasta que os hayáis lavado. Y si estáis enfermos o de viaje, si viene uno de vosotros de hacer sus necesidades, o habéis tenido contacto con mujeres y no encontráis agua, recurrid a arena limpia y pasadla por el rostro y por las manos. Alá es perdonador, indulgente.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@dxxxvii{¿No has visto a quienes han recibido una porción de la Escritura ? Compran el extravío y quieren que vosotros os extraviéis del Camino.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@dxxxviii{Alá conoce mejor que nadie a vuestros enemigos. Alá basta como amigo. Alá basta como auxiliar.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@dxxxix{Algunos judíos alteran el sentido de las palabras y dicen: «Oímos y desobedecemos... ¡Escucha, sin que se pueda oír! ¡Raina!», trabucando con sus lenguas y atacando la Religión. Si dijeran: «Oímos y obedecemos...¡Escucha! ¡Unzurna!», sería mejor para ellos y más correcto. Pero Alá les ha maldecido por su incredulidad. Creen, pero poco.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@dxl{Vosotros, los que habéis recibido la Escritura, ¡creed en lo que hemos revelado, en confirmación de lo que ya poseíais, antes de que borremos los rasgos de los rostros, antes de que los pongamos del revés o les maldigamos como maldijimos a los del sábado! ¡La orden de Alá se cumple!\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@dxli{Alá no perdona que se Le asocie. Pero perdona lo menos grave a quien Él quiere. Quien asocia a Alá comete un gravísimo pecado.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@dxlii{¿No has visto a quienes se consideran puros? No, es Alá Quien declara puro a quien Él quiere y nadie será tratado injustamente en lo más mínimo.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@dxliii{¡Mira cómo inventan la mentira contra Alá! Basta eso como pecado manifiesto.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@dxliv{¿No has visto a quienes han recibido una porción de la Escritura ? Creen en el chibt y en los taguts y dicen de los infieles: «Éstos están mejor dirigidos que los creyentes».\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@dxlv{A ésos son a quienes Alá ha maldecido, y no encontrarás quien auxilie a quien Alá maldiga.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@dxlvi{Aunque tuvieran parte en el dominio no darían a la gente lo más mínimo.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@dxlvii{¿Envidiarán a la gente por el favor que Alá les ha dispensado? Hemos dado a la familia de Abraham la Escritura y la Sabiduría. les hemos dado un dominio inmenso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@dxlviii{De ellos, unos creen en ella y otros se apartan de ella. La gehena les bastará como fuego.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@dxlix{A quienes no crean en Nuestros signos les arrojaremos a un Fuego. Siempre que se les consuma la piel, se la repondremos, para que gusten el castigo. Alá es poderoso, sabio.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@dl{A quienes crean y obren bien, les introduciremos en jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente, para siempre. Allí tendrán esposas purificadas y haremos que les dé una sombra espesa.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@dli{Alá os ordena que restituyáis los depósitos a sus propietarios y que cuando decidáis entre los hombres lo hagáis con justicia. ¡Qué bueno es aquello a que Alá os exhorta! Alá todo lo oye, todo lo ve.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@dlii{¡Creyentes! Obedeced a Alá, obedeced al Enviado y a aquéllos de vosotros que tengan autoridad. Y, si discutís por í algo, referidlo a Alá y al Enviado, si es que créis en Alá y en el último Día. Es lo mejor y la solución más apropiada.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@dliii{¿No has visto a quienes pretenden creer en lo que se te ha revelado a ti y en lo que se ha revelado antes de ti? Quieren recurrir al arbitraje de los taguts, a pesar de que se les ha ordenado no creer en ellos. El Demonio quiere extraviarles profundamente.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@dliv{Cuando se les dice: «¡Venid a lo que Alá ha revelado, venid al Enviado!», ves que los hipócritas se apartan de ti completamente.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@dlv{¿Qué harán, entonces, cuando les aflija una desgracia por lo que ellos mismos han cometido y vengan a ti, jurando por Alá: «No queríamos sino hacer bien y ayudar»?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@dlvi{Esos tales son aquéllos de quienes Alá conoce lo que encierran sus corazones ¡Apártate de ellos, amonéstales, diles palabras persuasivas que se apliquen a su caso!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@dlvii{No hemos mandado a ningún Enviado sino para, con permiso de Alá, ser obedecido. Si, cuando fueron injustos consigo mismos, hubieran venido a ti y pedido el perdón de Alá, y si el Enviado hubiera también pedido el perdón por ellos, habrían encontrado a Alá indulgente, misericordioso.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@dlviii{Pero ¡no, por tu Señor! No creerán hasta que te hayan hecho juez de su disputa; entonces, ya no encontrarán en sí mismos dificultad en aceptar tu decisión y se adherirán plenamente.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@dlix{Si les hubiéramos prescrito: «¡Mataos unos a otros!» o «¡Salid de vuestros hogares!», no lo habrían hecho, salvo unos pocos de ellos. Pero, si se hubieran conformado a las exhortaciones recibidas, habría sido mejor para ellos y habrían salido más fortalecidos.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@dlx{les habríamos dado entonces, por parte Nuestra, una magnífica recompensa\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@dlxi{y les habríamos dirigido por una vía recta.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@dlxii{Quienes obedecen a Alá y al Enviado, están con los profetas, los veraces, los testigos y los justos a los que Alá ha agraciado. ¡Qué buena compañía!\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@dlxiii{Así es el favor de Alá. Alá basta como omnisciente.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@dlxiv{¡Creyentes! ¡Tened cuidado! Acometed en destacamentos o formando un solo cuerpo.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@dlxv{Hay entre vosotros quien se queda rezagado del todo y, si os sobreviene una desgracia, dice: «Alá me ha agraciado, pues no estaba allí con ellos».\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@dlxvi{Pero, si Alá os favorece, seguro que, dice, como si no existiera ninguna amistad entre vosotros y él: «¡Ojalá hubiera estado con ellos, habría obtenido un éxito grandioso!»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@dlxvii{¡Que quienes cambian la vida de acá por la otra combatan por Alá! A quien. combatiendo por Alá, sea muerto o salga victorioso, le daremos una magnífica recompensa.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@dlxviii{¿Por qué no queréis combatir por Alá y por los oprimidos -hombres, mujeres y niños que dicen: «¡Señor! ¡Sácanos de esta ciudad, de impíos habitantes! ¡Danos un amigo designado por Ti! ¡Danos un auxiliar designado por tí!»?\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@dlxix{Quienes creen, combaten por Alá. Quienes no creen, combaten por los taguts. Combatid, pues, contra los amigos del Demonio. ¡Las artimañas del Demonio son débiles!\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@dlxx{¿No has visto a aquéllos a quienes se dijo: «¡Deponed las armas! ¡Haced la azalá y dad el azaque!»? Cuando se les prescribe el combate, algunos de ellos tienen tanto miedo de los hombres como deberían tener de Alá, o aún más, y dicen: «¡Señor! ¿Por qué nos has ordenado combatir? Si nos dejaras para un poco más tarde...» Di: «El breve disfrute de la vida de acá es mezquino. La otra vida es mejor para quien teme a Alá. No se os tratará injustamente en lo más mínimo».\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@dlxxi{Dondequiera que os encontréis, la muerte os alcanzará, aun si estáis en torres elevadas. Si les sucede un bien, dicen: «Esto viene de Alá». Pero, si es un mal, dicen: «Esto viene de ti». Di: «Todo viene de Alá». Pero ¿qué tienen éstos, que apenas comprenden lo que se les dice?\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@dlxxii{Lo bueno que te sucede viene de Alá. Lo malo que te sucede viene de ti mismo. Te hemos mandado a la Humanidad como Enviado. Alá basta como testigo.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@dlxxiii{Quien obedece al Enviado, obedece a Alá. Quien se aparta... Nosotros no te hemos mandado para que seas su custodio.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@dlxxiv{Y dicen: «¡Obediencia! Pero, cuando salen de tu presencia, algunos traman de noche hacer otra cosa diferente de lo que tú dices. Alá toma nota de lo que traman de noche. ¡Apártate, pues, de ellos y confía en Alá! ¡Alá basta como protector!\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@dlxxv{¿No meditan en el Corán ? Si hubiera sido de otro que de Alá, habrían encontrado en él numerosas contradicciones.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@dlxxvi{Cuando se enteran de algo referente a la seguridad o al temor, lo difunden. Si lo hubieran referido al Enviado y a quienes de ellos tienen autoridad, los que deseaban averiguar la verdad habrían sabido si dar crédito o no. Si no llega a ser por el favor que de Alá habéis recibido y por Su misericordia, habríais seguido casi todos al Demonio.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@dlxxvii{¡Combate, pues, por Alá! Sólo de ti eres responsable. ¡Anima a los creyentes! Puede que Alá contenga el ímpetu de los infieles. Alá dispone de más violencia y es más terrible en castigar.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@dlxxviii{Quien intercede de buena manera tendrá su parte y quien intercede de mala manera recibirá otro tanto. Alá vela por todo.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@dlxxix{Si os saludan, saludad con un saludo aún mejor, o devolvedlo igual. Alá tiene todo en cuenta.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@dlxxx{¡Alá! ¡No hay más dios que Él! Él ha de reuniros para el día indubitable de la Resurreción. Y ¿quién es más veraz que Alá cuando dice algo?\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@dlxxxi{¿Por qué vais a dividiros en dos partidos a propósito de los hipócritas? Alá les ha rechazado ya por lo que han hecho. ¿Es que queréis dirigir a quien Alá ha extraviado? No encontrarás camino para aquél a quien Alá extravía.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@dlxxxii{Querrían que, como ellos, no creyerais, para ser iguales que ellos. No hagáis, pues, amigos entre ellos hasta que hayan emigrado por Alá. Si cambian de propósito, apoderaos de ellos y matadles donde les encontréis. No aceptéis su amistad ni auxilio,\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@dlxxxiii{a menos que sean aliados de gente con la que os una un pacto, o que vengan a vosotros con el ánimo oprimido por tener que combatir contra vosotros o contra su propia gente. Si Alá hubiera querido, les habría dado poder sobre vosotros y habrían combatido contra vosotros. Si se mantienen aparte, si no combaten contra vosotros y os ofrecen someterse, entonces no tendréis justificación ante Alá contra ellos.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@dlxxxiv{Hallaréis a otros que desean vivir en paz con vosotros y con su propia gente. Siempre que se les invita a la apostasía, caen en ella. Si no se mantienen aparte, si no os ofrecen someterse, si no deponen las armas, apoderaos de ellos y matadles donde deis con ellos. Os hemos dado pleno poder sobre ellos.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@dlxxxv{Un creyente no puede matar a otro creyente, a menos que sea por error. Y quien mate a un creyente por error deberá manumitir a un esclavo creyente y pagar el precio de sangre a la familia de la víctima, a menos que ella renuncie al mismo como limosna. Y si la víctima era creyente y pertenecía a gente enemiga vuestra, deberá manumitir a un esclavo creyente. Pero, si pertenecía a gente con la que os une un pacto, el precio de sangre debe pagarse a la familia de la víctima, aparte de la manumisión de un esclavo creyente. Y quien no disponga de medios, ayunará dos meses consecutivos, como expiación impuesta por Alá. Alá es omniscente, sabio.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@dlxxxvi{Y quien mate a un creyente premeditadamente, tendrá la gehena como retribución, eternamente. Alá se irritará con él, le maldecirá y le preparará un castigo terrible.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@dlxxxvii{¡Creyentes! cuando acudáis a combatir por Alá, cuidado no digáis al primero que os salude: «¡Tú no eres creyente!», buscando los bienes de la vida de acá. Alá ofrece abundantes ocasiones de obtener botín. Vosotros también erais así antes s Alá os agració! ¡Cuidado, pues, que Alá está bien informado de lo que hacéis!\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@dlxxxviii{Los creyentes que se quedan en casa, sin estar impedidos, no son iguales que los que combaten por Alá con su hacienda y sus personas. Alá ha puesto a los que combaten con su hacienda y sus personas un grado por encima de los que se quedan en casa. A todos, sin embargo, ha prometido Alá lo mejor, pero Alá ha distinguido a los combatientes por encima de quienes se quedan en casa con una magnífica recompensa,\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@dlxxxix{con el rango que junto a Él ocupan, con perdón y misericordia. Alá es indulgente, misericordioso.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@dxc{Los ángeles dirán a aquéllos a quienes llamen y que han sido injustos consigo mismos: «Cuál era vuestra situación?» Dirán: «Éramos oprimidos en la tierra». Dirán: «¿Es que la tierra de Alá no era vasta como para que pudierais emigrar?» Esos tales tendrán la gehena como morada. ¡;Mal fin...!\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@dxci{Quedan exceptuados los oprimidos -hombres, mujeres y niños-, que no disponen de posibilidades y no son dirigidos por el Camino.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@dxcii{A éstos puede que Alá les perdone. Alá es perdonador, indulgente.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@dxciii{Quien emigre por Alá, encontrará en la tierra mucho refugio y espacio. La recompensa de aquél a quien sorprenda la muerte, después de dejar su casa para emigrar a Alá y a Su enviado, incumbe a Alá. Alá es indulgente, misericordioso.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@dxciv{Cuando estéis de viaje, no hay incoveniente en que abreviéis la azalá, si teméis un ataque de los infieles. Los infieles son para vosotros un enemigo declarado.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@dxcv{Cuando estés con ellos y les dirijas la azalá, que un grupo se mantenga de pie a tu lado, arma en mano. Cuando se hayan prosternado, que vayan atrás y que otro grupo que aún no haya orado venga y ore contigo. ¡Que tengan cuidado y no dejen las armas de la mano! Los infieles querrían que descuidarais vuestras armas e impedimenta para echarse de improviso sobre vosotros. No hay inconveniente en que dejéis a un lado las armas si la lluvia os molesta o estáis enfermos, pero ¡tened cuidado! Alá ha preparado un castigo humillante para los infieles.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@dxcvi{Cuando hayáis terminado la azalá recordad a Alá de pie, sentados o echados. Y, si os sentís tranquilos, haced la azalá. La azalá se ha prescrito a los creyentes en tiempos determinados.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@dxcvii{No dejéis de perseguir a esa gente. Si os cuesta, también a ellos, como a vosotros, les cuesta, pero vosotros esperáis de Alá lo que ellos no esperan. Alá es omnisciente, sabio.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@dxcviii{Te hemos revelado la Escritura con la Verdad para que decidas entre los hombres como Alá te dé a entender. ¡No abogues por los traidores!\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@dxcix{¡Pide perdón a Alá! Alá es indulgente, misericordioso.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@dc{¡No discutas defendiendo a los que obran deslealmente consigo mismos! Alá no ama al que es traidor contumaz, pecador.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@dci{Se esconden de los hombres, pero no pueden esconderse de Alá, Que está presente cuando traman de noche algo que no Le satisface. Alá abarca todo lo que hacen.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@dcii{¡Mirad cómo sois! Discutís en favor de ellos en la vida de acá, pero ¿quién va a defenderles contra Alá el día de la Resurrección? ¿Quién será entonces su protector?\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@dciii{Quien obra mal o es injusto consigo mismo, si luego pide perdón a Alá, encontrará a Alá indulgente, misericordioso.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@dciv{Quien peca, peca, en realidad, en detrimento propio. Alá es omnisciente, sabio.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@dcv{Quien comete una falta o un pecado y acusa de ello a un inocente, carga con una infamia y con un pecado manifiesto.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@dcvi{Si no llega a ser por el favor de Alá en ti y por Su misericordia, algunos de ellos habrían preferido extraviarte. Pero sólo se extravían a sí mismos y no pueden, en modo alguno, dañarte. Alá te ha revelado la Escritura y la Sabiduría y te ha enseñado lo que no sabías. El favor de Alá en ti es inmenso.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@dcvii{En muchos de sus conciliábulos no hay bien, salvo cuando uno ordena la limosna, lo reconocido como bueno o la , reconciliación entre los hombres. A quien haga esto por deseo de agradar a Alá, le daremos una magnífica recompensa.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@dcviii{A quien se separe del Enviado después de habérsele manifestado claramente la Dirección y siga un camino diferente del de los creyentes, le abandonaremos en la medida que él abandone y le arrojaremos a la gehena. ¡Mal fin...!\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@dcix{Alá no perdona que se Le asocie. Pero perdona lo menos grave a quien Él quiere. Quien asocia a Alá está profundamente extraviado.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@dcx{En lugar de invocarle a Él, no invocan sino a deidades femeninas. No invocan más que a un demonio rebelde.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@dcxi{¡Que Alá le maldiga! Ha dicho: «He de tomar a un número determinado de Tus siervos,\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@dcxii{he de extraviarles, he de inspirarles vanos deseos, he de ordenarles que hiendan las orejas del ganado y que alteren la creación de Alá!» Quien tome como amigo al Demonio, en lugar de tomar a Alá, está manifiestamente perdido.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@dcxiii{Les hace promesas y les inspira vanos deseos, pero el Demonio no les promete sino falacia.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@dcxiv{La morada de esos tales será la gehena y no hallarán medio de escapar de ella.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@dcxv{A quienes crean y obren bien, les introduciremos en jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente, para siempre. ¡Promesa de Alá. verdad! Y ¿quién es más veraz que Alá cuando dice algo?\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@dcxvi{Esto no depende de lo que vosotros anheléis ni de lo que anhele la gente de la Escritura. Quien obre mal será retribuido por ello y no encontrará, fuera de Alá, amigo ni auxiliar.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@dcxvii{El creyente, varón o hembra, que obre bien, entrará en el Jardín y no será tratado injustamente en lo más mínimo.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@dcxviii{¿Quién es mejor, tocante a religión. que quien se somete a Alá, hace el bien y sigue la religión de Abraham, que fue hanif ? Alá tomó a Abraham como amigo.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@dcxix{De Alá es lo que está en los cielos y en la tierra. Alá todo lo abarca.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@dcxx{Te consultan a propósito de las mujeres. Di: «Alá os da a conocer Su parecer sobre ellas, aparte de lo que ya se os ha recitado en la Escritura a propósito de las huérfanas a las que aún no habéis dado la parte que les corresponde y con las que deseáis casaros, y a propósito de los niños débiles, y que tratéis con equidad a los huérfanos. Alá conoce perfectamente el bien que hacéis.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@dcxxi{Y si una mujer teme malos tratos o aversión por parte de su marido, no hay inconveniente en que se reconcilien, pues es mejor la reconciliación. El ánimo es propenso a la codicia, pero si hacéis bien a otros y teméis a Alá,... Alá está bien informado de lo que hacéis.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@dcxxii{No podréis ser justos con vuestras mujeres, aun si lo deseáis. No seáis, pues, tan parciales que dejéis a una de ellas como en suspenso. Si ponéis paz y teméis a Alá,... Alá es indulgente, misericordioso.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@dcxxiii{Si se separan, Alá enriquecerá a cada uno con Su abundancia. Alá es inmenso, sabio.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@dcxxiv{De Alá es lo que está en los cielos y en la tierra. Hemos ordenado a quienes, antes de vosotros, recibieron la Escritura, y a vosotros también, el temor de Alá. Si no creéis,... de Alá es lo que está en los cielos y en la tierra. Alá Se basta a Sí mismo es digno de alabanza.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@dcxxv{De Alá es lo que está en los cielos y en la tierra. Alá basta como protector.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@dcxxvi{¡Hombres! Si Él quisiera, os haría desaparecer y os sustituiría por otros. Alá es capaz de hacerlo.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@dcxxvii{Quien desee la recompensa de la vida de acá, sepa que Alá dispone de la recompensa de la vida de acá y de la otra. Alá todo lo oye, todo lo ve.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@dcxxviii{¡Creyentes! Sed íntegros en la equidad, cuando depongáis como testigos de Alá, aun en contra vuestra, o de vuestros padres o parientes más cercanos. Lo mismo si es rico que si es pobre, Alá está más cerca de él. No sigáis la pasión faltando a la justicia. Si levantáis falso testimonio u os zafáis,... Alá está bien informado de lo que hacéis.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@dcxxix{¡Creyentes! Creed en Alá, en Su Enviado, en la Escritura que ha revelado a Su Enviado y en la Escritura que había revelado antes. Quien no cree en Alá, en Sus ángeles, en Sus Escrituras, en Sus enviados y en el último Día, ese tal está profundamente extraviado.\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@dcxxx{A quienes crean y luego dejen de creer, vuelvan a creer y de nuevo dejen de creer, creciendo en su incredulidad, Alá no está para perdonarles ni dirigirles por un camino.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@dcxxxi{Anuncia a los hipócritas que tendrán un castigo doloroso.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@dcxxxii{Toman a los infieles como amigos, en lugar de tomar a los creyentes. ¿Es que buscan en ellos el poder? El poder pertenece en su totalidad a Alá.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@dcxxxiii{Él os ha revelado en la Escritura : «Cuando oigáis que las aleyas de Alá no son creídas y son objeto de burla, no os sentéis con ellos mientras no cambien de tema de conversación; si no, os haréis como ellos». Alá reunirá a los hipócritas y a los infieles, todos juntos, en la gehena.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@dcxxxiv{Están a la expectativa, a ver cómo os va. Cuando tenéis éxito con la ayuda de d Alá, dicen: «Pues ¿no estábamos con vosotros?» Pero, si los infieles obtienen un éxito parcial, dicen: «¿No tuvimos ocasión de venceros y, en cambio, os defendimos contra los creyentes?» Alá decidirá entre vosotros el día de la Resurrección. Alá no permitirá que los infieles prevalezcan sobre los creyentes.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@dcxxxv{Los hipócritas tratan de engañar a Alá, pero es Él Quien les engaña. Cuando se disponen a hacer la azalá lo hacen perezosamente, sólo para ser vistos de los hombres, apenas piensan en Alá.\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@dcxxxvi{Vacilantes, no se pronuncian por unos ni por otros. No encontrarás camino para aquél a quien Alá extravía.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@dcxxxvii{¡Creyentes! No toméis a los infieles como amigos, en lugar de tomar a los creyentes. ¿Queréis dar a Alá un argumento manifiesto en contra vuestra?\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@dcxxxviii{Los hipócritas estarán en lo más profundo del Fuego y no encontrarás quien les auxilie,\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@dcxxxix{salvo si se arrepienten, se enmiendan, se aferran a Alá y rinden a Alá un culto sincero. Éstos estarán en companía de los creyentes y Alá dará a los creyentes una magnífica recompensa.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@dcxl{¿Por qué va Alá a castigaros si sois agradecidos y creéis? Alá es agradecido, omnisciente.\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@dcxli{A Alá no le gusta la maledicencia en voz alta, a no ser que quien lo haga haya sido tratado injustamente. Alá todo lo oye, todo lo sabe.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@dcxlii{Que divulguéis un bien o lo ocultéis, que perdonéis un agravio... Alá es perdonador, poderoso.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@dcxliii{Quienes no creen en Alá ni en Sus enviados y quieren hacer distingos entre Alá y Sus enviados, diciendo: «¡Creemos en unos, pero en otros no!», queriendo adoptar una postura intermedia,\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@dcxliv{ésos son los infieles de verdad. Y para los infieles tenemos preparado un castigo humillante.\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@dcxlv{Pero a quienes crean en Alá y en Sus enviados, sin hacer distingos entre ellos, Él les remunerará. Alá es indulgente, misericordioso.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@dcxlvi{La gente de la Escritura te pide que les bajes del cielo una Escritura. Ya habían pedido a Moisés algo más grave que eso, cuando dijeron: «¡Muéstranos a Alá claramente!» Como castigo a su impiedad el Rayo se los llevó. Luego, cogieron el ternero, aun después de haber recibido las pruebas claras. Se lo perdonamos y dimos a Moisés una autoridad manifiesta.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@dcxlvii{Levantamos la montaña por encima de ellos en señal de pacto con ellos y les dijimos: «¡Prosternaos al entrar por la puerta!» Y les dijimos: «¡No violéis el sábado!» Y concertamos con ellos un pacto solemne.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@dcxlviii{por haber violado su pacto, por no haber creído en los signos de Alá, por haber matado a los profetas sin justificación y por haber dicho: «Nuestros corazones están incircuncisos». ¡No! Alá los ha sellado por su incredulidad, de modo que tienen fe, pero poca.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@dcxlix{por su incredulidad por haber proferido contra María una enorme calumnia,\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@dcl{y por haber dicho: «Hemos dado muerte al Ungido, Jesús, hijo de María, el enviado de Alá», siendo así que no le mataron ni le crucificaron, sino que les pareció así. Los que discrepan acerca de él, dudan. No tienen conocimiento de él, no siguen más que conjeturas. Pero, ciertamente no le mataron,\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@dcli{sino que Alá lo elevó a Sí. Alá es poderoso, sabio.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@dclii{Entre la gente de la Escritura no has nadie que no crea en Él antes de su muerte. Él día de la Resurrección servirá de testigo contra ellos.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@dcliii{Prohibimos a los judíos cosas buenas que antes les habían sido lícitas, por haber sido impíos y por haber desviado a tantos del camino de Alá.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@dcliv{por usurear, a pesar de habérseles prohibido, y por haber devorado la hacienda ajena injustamente. A los infieles de entre ellos les hemos preparado un castigo doloroso.\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@dclv{Pero a los que, de ellos, están arraigados en la Ciencia, a los creyentes, que , creen en lo que se te ha revelado a ti y a otros antes de ti, a los que hacen la azalá, a los que dan el azaque, a los que creen en Alá y en el último Día, a ésos les daremos una magnífica recompensa.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@dclvi{Te hemos hecho una revelación, como hicimos una revelación a Noé y a los profeta que le siguieron. Hicimos una revelación a Abraham, Ismael, Isaac, Jacob, as tribus, Jesús, Job, Jonás, Aarón y Salomón. Y dimos a David Salmos.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@dclvii{Te hemos contado previamente de algunos enviados, de otros no -con Moisés Alá habló de hecho-,\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@dclviii{enviados portadores de buenas nuevas y que advertían, para que los hombres no pudieran alegar ningún pretexto ante Alá después de la venida de los enviados. Alá es poderoso, sabio.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@dclix{Pero Alá es testigo de que lo que El te ha revelado lo ha revelado con Su ciencia. Los ángeles también son testigos, aunque basta Alá como testigo.\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@dclx{Los que no creen y desvían a otros del camino de Alá están profundamente extraviados.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@dclxi{A los que no crean y obren impíamente Alá nunca les perdonará ni les dirigirá por otro camino\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@dclxii{que el camino de la gehena, en la que estarán eternamente, para siempre. Es cosa fácil para Alá.\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@dclxiii{¡Hombres! Ha venido a vosotros el Enviado con la Verdad que viene de vuestro Señor. Creed, pues, será mejor para vosotros. Si no creéis... De Alá es lo que está en los cielos y en la tierra. Alá es omnisciente, sabio.\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@dclxiv{¡Gente de la Escritura ! ¡No exageréis en vuestra religión! ¡No digáis de Alá sino la verdad: que el Ungido, Jesús, hijo de María, es solamente el enviado de Alá y Su Palabra, que Él ha comunicado a María, y un espíritu que procede de Él! ¡Creed, pues, en Alá y en Sus enviados! ¡No digáis ``Tres'! ¡Basta ya, será mejor para vosotros! Alá es sólo un Dios Uno. ¡Gloria a Él Tener un hijo...Suyo es lo que está en los cielos y en la tierra... ¡Alá basta como protector!\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@dclxv{El Ungido no tendrá a menos ser siervo de Alá, ni tampoco los ángeles allegados. A todos aquéllos que tengan a menos servirle y hayan sido altivos les congregará hacia Sí.\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@dclxvi{En cuanto a quienes hayan creído y obrado bien, Él les dará, por favor, Su recompensa y aún más. Pero a quienes hayan tenido a menos servirle y hayan sido altivos, les infligirá un castigo doloroso. No encontrarán, fuera de Alá, amigo ni auxiliar.\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@dclxvii{¡Hombres! Os ha venido de vuestro Señor una prueba. Y os hemos hecho bajar una Luz manifiesta.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@dclxviii{A quienes hayan creído en Alá y se hayan aferrado a Él, les introducirá en Su misericordia y favor y les dirigirá a Sí por una vía recta.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@dclxix{Te piden tu parecer. Di: «Alá os da el Suyo a propósito de los parientes colaterales. Si un hombre muere sin dejar hijos, pero sí una hermana, ésta heredará la mitad de lo que deja, y si ella muere sin dejar hijos, él heredará todo de ella. Si el difunto deja dos, éstas heredarán los dos tercios de lo que deje. Si tiene hermanos, varones y hembras, a cada varón le corresponderá tanto como a dos hembras juntas. Alá os aclara esto para que no os extraviéis. Alá es omnisciente».\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@dclxx{\basmalahes ¡Creyentes! ¡Respetad vuestros compromisos! La bestia de los rebaños os está permitida, salvo lo que se os recita. La caza no os está permitida mientras estéis sacralizados. Alá decide lo que Él quiere.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@dclxxi{¡Creyentes! No profanéis las cosas sagradas de Alá, ni el mes sagrado, ni la víctima, ni las guirnaldas, ni a los que se dirigen a la Casa Sagrada, buscando favor de su Señor y satisfacerle. Podéis cazar cuando dejáis de estar sacralizados. Que el odio que tenéis a gente que hace poco os apartaba de la Mezquita Sagrada no os incite a violar la ley. Ayudaos unos a otros a practicar la piedad y el temor de Alá, no el pecado y la violación de la ley. ¡Y temed a Alá! Alá castiga severamente...\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@dclxxii{Os está vedada la carne mortecina, la sangre, la carne de cerdo, la de animal sobre el que se haya invocado un nombre diferente del de Alá, la de animal asfixiado o muerto a palos, de una caída, de una cornada, la del devorado parcialmente por las fieras -excepto si aún lo sacrificáis vosotros-, la del inmolado en piedras erectas. Consultar la suerte valiéndose de flechas es una pervesidad. Hoy quienes no creen han desesperado de vuestra religión. ¡No les tengáis, pues, miedo a ellos, sino a Mí! Hoy os he perfeccionado vuestra religión, he completado Mi gracia en vosotros y Me satisface que sea el islam vuestra religión. Si alguien se ve compelido durante un hambre, sin intención de pecar,...Alá es indulgente, misericordioso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@dclxxiii{Te preguntan qué les está permitido. Di: «Os están permitidas las cosas buenas. Podéis comer de lo que os cojan los animales de presa que habéis adiestrado para la caza, tal como Alá os ha enseñado. ¡Y mencionad el nombre de Alá sobre ello! ¡Y temed a Alá». Alá es rápido en ajustar cuentas.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@dclxxiv{Hoy se os permiten las cosas buenas. Se os permite el alimento de quienes han recibido la Escritura, así como también se les permite a ellos vuestro alimento. Y las mujeres creyentes honestas y las honestas del pueblo que, antes que vosotros, había recibido la Escritura, si les dais la dote tomándolas en matrimonio, no como fornicadores o como amantes. Vanas serán las obras de quien rechace la fe y en la otra vida será de los que pierdan.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@dclxxv{¡Creyentes! Cuando os dispongáis a hacer la azalá, lavaos el rostro y los brazos hasta el codo, pasad las manos por la cabeza y lavaos los pies hasta el tobillo. Si estáis en estado de impureza legal, purificaos. Y si estáis enfermos o de viaje, si viene uno de vosotros de hacer sus necesidades, o habéis tenido contacto con mujeres y no encontráis agua, recurrid a arena limpia y pasadla por el rostro y por las manos. Alá no quiere imponeros ninguna carga, sino purificaros y completar Su gracia en vosotros. Quizás, así seáis agradecidos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@dclxxvi{Recordad la gracia que Alá os dispensó y el pacto que concluyó con vosotros cuando dijisteis: «Oímos y obedecemos». ¡Temed a Alá! Alá sabe bien lo que encierran los pechos.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@dclxxvii{¡Creyentes! ¡Sed íntegros ante Alá cuando depongáis con equidad! ¡Que el odio a una gente no os incite a obrar injustamente! ¡Sed justos! Esto es lo más próximo al temor de Alá. ¡Y temed a Alá! Alá está bien informado de lo que hacéis.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@dclxxviii{Alá ha prometido a quienes crean y obren bien perdón y una magnífica recompensa.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@dclxxix{Quienes no crean y desmientan Nuestros signos morarán en el fuego de la gehena.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@dclxxx{¡Creyentes! Recordad la gracia que Alá os dispensó cuando una gente habría preferido poneros las manos encima y Él se lo impidió. ¡Y temed a Alá! ¡Que los creyentes confíen en Alá!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@dclxxxi{Alá concertó un pacto con los Hijos de Israel. Suscitamos de entre ellos a doce jefes. Y Alá dijo: «Yo estoy con vosotros. Si hacéis la azalá, dais el azaque, creéis en Mis enviados y les auxiliáis, si hacéis un préstamo generoso a Alá, he de borrar vuestras malas obras e introduciros en jardines por cuyos bajos fluyen arroyos. Quien de vosotros, después de eso, no crea se habrá extraviado del camino recto».\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@dclxxxii{Por haber violado su pacto les hemos maldecido y hemos endurecido sus corazones. Alteran el sentido de las palabras; olvidan parte de lo que se les recordó. Siempre descubrirás en ellos alguna traición, salvo en unos pocos. ¡Borra sus faltas, perdónales! Alá ama a quienes hacen el bien.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@dclxxxiii{Concertamos un pacto con quienes decían: «Somos cristianos». Pero olvidaron parte de lo que se les recordó y, por eso,. provocamos entre ellos enemistad y odio hasta el día de la Resurrección. Pero ya les informará Alá de lo que hacían.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@dclxxxiv{¡Gente de la Escritura ! Nuestro Enviado ha venido a vosotros, aclarándoos mucho de lo que de la Escritura habíais ocultado y revocando mucho también. Os ha venido de Alá una Luz, una Escritura clara,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@dclxxxv{por medio de la cual Alá dirige a quienes buscan satisfacerle por caminos de paz y les saca, con Su permiso, de las tinieblas a la luz, y les dirige a una vía recta.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@dclxxxvi{No creen, en realidad, quienes dicen: «Alá es el Ungido, hijo de María». Di: «¿Quién podría impedir a Alá que. si Él quisiera, hiciera morir al Ungido, hijo de María, a su madre y a todos los de la tierra?» De Alá es el dominio de los cielos, de la tierra y de lo que entre ellos está. Crea lo que Él quiere. Alá es omnipotente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@dclxxxvii{Los judíos y los cristianos dicen: «Somos los hijos de Alá y Sus predilectos». Di: «¿Por qué, pues, os castiga por vuestros pecados? No, sino que sois mortales, de Sus criaturas. Perdona a quien Él quiere y castiga a quien Él quiere». De Alá es el dominio de los cielos y de la tierra y de lo que entre ellos está. Es Él el fin de todo.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@dclxxxviii{¡Gente de la Escritura ! Nuestro Enviado ha venido a vosotros para instruiros, después de una interrupción de enviados, no sea que dijerais: «No ha venido a nosotros ningún nuncio de buenas nuevas, ni monitor alguno». Así, pues, sí que ha venido a vosotros un nuncio de buenas nuevas y un monitor. Alá es omnipotente.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@dclxxxix{Y cuando Moisés dijo a su pueblo: «¡Pueblo! Recordad la gracia que Alá os dispensó cuando suscitó de entre vosotros a profetas e hizo de vosotros reyes, dándoos lo que no se había dado a ninguno en el mundo.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@dcxc{¡Pueblo! ¡Entrad en la Tierra Santa que Alá os destinó y no volváis sobre vuestros pasos; si no, regresaréis habiendo perdido!».\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@dcxci{Dijeron: «¡Moisés! Hay en ella un pueblo de hombres fuertes y no entraremos mientras no salgan de ella. Si salen de ella, entonces, sí que entraremos».\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@dcxcii{Dos de sus hombres, temerosos de Alá, a quienes Alá había agraciado, dijeron: «Entrad contra ellos por la puerta. Una vez franqueada, la victoria será vuestra. Si sois creyentes, ¡confiad en Alá!».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@dcxciii{Dijeron: «¡Moisés! No entraremos nunca en ella mientras ellos estén dentro. ¡Ve, pues, tú con tu Señor, y combatid, que nosotros nos quedamos aquí!».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@dcxciv{Dijo: «¡Señor! Yo no puedo más que conmigo y con mi hermano. Haz distinción, pues, entre nosotros y este pueblo perverso».\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@dcxcv{Dijo: «Les estará prohibida durante cuarenta años, tiempo en el que vagarán por la tierra. ¡No te preocupes por este pueblo perverso!».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@dcxcvi{¡Y cuéntales la historia auténtica de los dos hijos de Adán, cuando ofrecieron una oblación y se le aceptó a uno, pero al otro no! Dijo: «¡He de matarte!». Dijo: «Alá sólo acepta de los que Le temen.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@dcxcvii{Y si tú pones la mano en mí para matarme, yo no voy a ponerla en ti para matarte, porque temo a Alá, Señor del universo.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@dcxcviii{Quiero que cargues con tu pecado contra mí y otros pecados y seas así de los moradores del Fuego. Ésa es la retribución de los impíos».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@dcxcix{Entonces, su alma le instigó a que s matara a su hermano y le mató, pasando a ser de los que pierden.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@dcc{Alá envió un cuervo, que escarbó la tierra para mostrarle cómo esconder el cadáver de su hermano. Dijo: «¡Ay de mí! ¿Es que no soy capaz de imitar a este cuervo y esconder el cadáver de mi hermano?». Y pasó a ser de los arrepentidos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@dcci{Por esta razón, prescribimos a los Hijos de Israel que quien matara a una persona que no hubiera matado a nadie ni corrompido en la tierra, fuera como si hubiera matado a toda la Humanidad. Y que quien salvara una vida, fuera como si hubiera salvado las vidas de toda la Humanidad. Nuestros enviados vinieron a ellos con las pruebas claras, pero, a pesar de ellas, muchos cometieron excesos en la tierra.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@dccii{Retribución de quienes hacen la guerra a Alá y a Su Enviado y se dan a corromper en la tierra: serán muertos sin piedad, o crucificados, o amputados de manos y pies opuestos, o desterrados del país. Sufrirán ignominia en la vida de acá y terrible castigo en la otra.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@dcciii{Quedan exceptuados quienes se arrepientan antes de caer en vuestras manos. Sabed, en efecto, que Alá es indulgente, misericordioso.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@dcciv{¡Creyentes! ¡Temed a Alá y buscad el medio de acercaros a Él! ¡Combatid por Su causa! Quizás, así, prosperéis.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@dccv{Si poseyeran los infiles todo cuanto hay en la tierra y otro tanto, y lo ofrecieran como rescate para librarse del castigo del día de la Resurrección, no se les aceptaría Tendrán un castigo doloroso.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@dccvi{Querrán salir del Fuego, pero no podrán. Tendrán un castigo permanente.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@dccvii{Al ladrón y a la ladrona, cortadles las manos como retribución de lo que han cometido, como castigo ejemplar de Alá. Alá es poderoso, sabio.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@dccviii{Si uno se arrepiente, después de haber obrado impíamente y se enmienda, Alá se volverá a él. Alá es indulgente, misericordioso.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@dccix{¿No sabes que es de Alá el dominio de los cielos y de la tierra? Castiga a quien Él quiere y perdona a quien Él quiere. Alá es omnipotente.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@dccx{¡Enviado! Que no te entristezcan quienes se precipitan en la incredulidad. Son de los que dicen con la boca: «Creemos», pero no creen de corazón, y de los judíos. Dan oídos a la mentira, dan oídos a otra gente que no ha venido a ti. Alteran el sentido de las palabras y dicen: «Si se os ha dado esto, ¡tomadlo!; pero, si no es esto lo que se os ha dado. ¡guardaos!». Si Alá quiere que alguien sea tentado, tú no puedes hacer nada por él contra Alá. Esos tales son aquéllos cuyos corazones Alá no ha querido purificar. Sufrirán ignominia en la vida de acá y terrible castigo en la otra.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@dccxi{Dan oído a la mentira y devoran el soborno. Si vienen a ti, decide entre ellos o retírate. Si te retiras, no podrán hacerte ningún daño. Si decides, hazlo con equidad. Alá ama a los que observan la equidad.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@dccxii{Pero ¿cómo van a hacerte juez teniendo como tienen la Tora, en la que se contiene la decisión de Alá? Luego, después de eso, se retiran. Esos tales no son creyentes.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@dccxiii{Hemos revelado la Tora, que contiene Dirección y Luz. Los profetas que se habían sometido administraban justicia a los judíos según ella, como hacían los maestros y doctores, según lo que de la Escritura de Alá se les había confiado y de lo cual eran testigos. ¡No tengáis, pues, miedo a los hombres, sino a Mí! ¡Y no malvendáis Mis signos! Quienes no decidan según lo que Alá ha revelado, ésos son los infieles.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@dccxiv{Les hemos prescrito en ella: «Vida por vida, ojo por ojo, nariz por nariz, oreja por oreja, diente por diente y la ley del talión por las heridas». Y si uno renuncia a ello, le servirá de expiación. Quienes no decidan según lo que Alá ha revelado, ésos son los impíos.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@dccxv{Hicimos que les sucediera Jesús, hijo de María, en confirmación de lo que ya había de la Tora. Le dimos el Evangelio, que contiene Dirección y Luz, en confirmación de lo que ya había de la Tora y como Dirección y Exhortación para los temerosos de Alá.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@dccxvi{Que la gente del Evangelio decida según lo que Alá ha revelado en él. Quienes no decidan según lo que Alá ha revelado ésos son los perversos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@dccxvii{Te hemos revelado la Escritura con la Verdad, en confirmación y como custodia de lo que ya había de la Escritura. Decide, pues, entre ellos según lo que Alá ha revelado y no sigas sus pasiones, que te apartan de la Verdad que has recibido. A cada uno os hemos dado una norma y una vía. Alá, si hubiera querido, habría hecho de vosotros una sola comunidad, pero quería probaros en lo que os dio. ¡Rivalizad en buenas obras! Todos volveréis a Alá. Ya os informará Él de aquello en que discrepabais.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@dccxviii{Debes decidir entre ellos según lo que Alá ha revelado. No sigas sus pasiones. ¡Guárdate de ellos, no sea que te seduzcan, desviándote de parte de lo que Alá te ha revelado! Y, si se apartan, sabe que Alá desea afligirles por algunos de sus pecados. Muchos hombres son, ciertamente, perversos.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@dccxix{¿Es una decisión a la pagana lo que desean? Y ¿quién puede decidir mejor que Alá para gente que está convencida?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@dccxx{¡Creyentes! ¡No toméis como amigos a los judíos y a los cristianos! Son amigos unos de otros. Quien de vosotros trabe amistad con ellos, se hace uno de ellos. Alá no guía al pueblo impío.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@dccxxi{Ves a los enfermos de corazón precipitarse a ellos, diciendo: «Tenemos miedo de un revés de fortuna». Pero puede que Alá traiga el éxito u otra cosa de Él y, entonces, se dolerán de lo que habían pensado en secreto.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@dccxxii{Los creyentes dirán «Son éstos los que juraban solemnemente por Alá que sí, que estaban con vosotros? Sus obras serán vanas y saldrán perdiendo».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@dccxxiii{¡Creyentes! Si uno de vosotros apostata de su fe... Alá suscitará una gente a la cual Él amará y de la cual será amado, humilde con los creyentes, altivo con los infieles, que combatirán en el camino de Alá y que no temerá la censura de nadie. Éste es el favor de Alá. Lo dispensa a quien Él quiere. Alá es inmenso, omnisciente.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@dccxxiv{Sólo es vuestro amigo Alá, Su Enviado y los creyentes, que hacen la azalá, dan el azaque y se inclinan.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@dccxxv{Quien tome como amigo a Alá, a Su Enviado y a los creyentes... Los partidarios de Alá serán los que venzan.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@dccxxvi{¡Creyentes! No toméis como amigos a quienes, habiendo recibido la Escritura antes que vosotros, toman vuestra religión a burla y a juego, ni tampoco a los infieles. ¡Y temed a Alá, si es que sois creyentes!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@dccxxvii{Cuando llamáis a la azalá, la toman a burla y a juego, porque son gente que no razona.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@dccxxviii{Di: «¡Gente de la Erscritura ! ¿Es que no tenéis más motivo para censurarnos que el que creamos en Alá y en la Revelación hecha a nosotros y a los que nos precedieron y que la mayoría seáis unos perversos?».\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@dccxxix{Di: «No sé si informaros de algo peor aún que eso respecto a una retribución junto a Alá. Los que Alá ha maldecido, los que han incurrido en Su ira, los que Él ha convertido en monos y cerdos, los que han servido a los taguts, ésos son los que se encuentran en la situación peor y los más extraviados del camino recto».\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@dccxxx{Cuando vienen a Ti, dicen: «¡Creemos!». Pero entran sin creer y sin creer salen. Alá sabe bien lo que ocultan.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@dccxxxi{Ves a muchos de ellos precipitarse al pecado y a la violación de la ley y a devorar el soborno. ¡Qué mal está lo que hacen!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@dccxxxii{¿Por qué los maestros y los doctores no les prohíben sus expresiones pecaminosas y que devoren el soborno? ¡Qué mal está lo que hacen!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@dccxxxiii{Los judíos dicen: «La mano de Alá está cerrada». ¡Que sus propias manos estén cerradas y sean malditos por lo que dicen! Al contrario, Sus manos están abiertas y Él distribuye Sus dones como quiere. Pero la Revelación que tú has recibido de tu Señor acrecentará en muchos de ellos su rebelión e incredulidad. Hemos suscitado entre ellos hostilidad y odio hasta el día de la Resurrección. Siempre que encienden el fuego de la guerra, Alá se lo apaga. Se dan a corromper en la tierra y Alá no ama a los corruptores.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@dccxxxiv{Si la gente de la Escritura creyera y temiera a Alá, les borraríamos sus malas obras y les introduciríamos en los jardines de la Delicia.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@dccxxxv{Si obsevaran la Tora, el Evangelio y la Revelación que han recibido de su Señor, disfrutarían de los bienes del cielo y de la tierra. Hay entre ellos una comunidad que se mantiene moderada, pero ¡qué mal hacen muchos otros de ellos!\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@dccxxxvi{¡Enviado! ¡Comunica la Revelación que has recibido de tu Señor, que, si no lo haces, no comunicas Su mensaje! Alá te í, protegerá de los hombres. Alá no dirige al pueblo infiel.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@dccxxxvii{Di: «¡Gente de la Escritura ! No hacéis nada de fundamento mientras no observéis la Tora. el Evangelio y la Revelación que habéis recibido de vuestro Señor». Pero la Revelación que tú has recibido de tu Señor acrecentará en muchos de ellos su rebelión e incredulidad. ¡No te aflijas, pues, por el pueblo infiel!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@dccxxxviii{Los creyentes, los judíos, los sabeos y los cristianos -quienes creen en Alá y en el último Día y obran bien- no tienen que temer y no estarán tristes.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@dccxxxix{Concertamos un pacto con los Hijos de Israel y les mandamos enviados. Siempre T que un enviado venía a ellos con algo que no era de su gusto, le desmentían o le daban muerte.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@dccxl{Creían que no iban a ser probados y se portaron como ciegos y sordos. Alá se volvió a ellos, pero muchos de ellos vol- vieron a portarse como ciegos y sordos. Alá ve bien lo que hacen.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@dccxli{No creen, en realidad, quienes dicen: «Alá es el Ungido, hijo de María», siendo así que el mismo Ungido ha dicho: «¡Hijos de Israel, servid a Alá, mi Señor y Señor vuestro!». Alá veda el Jardín a quien asocia a Alá. Su morada será el Fuego. Los impíos no tendrán quien les auxilie.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@dccxlii{No creen, en realidad, quienes dicen: «Alá es el tercero de tres». No hay ningún otro dios que Dios Uno y, si no paran de decir eso, un castigo doloroso alcanzará a quienes de ellos no crean.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@dccxliii{¿No se volverán a Alá pidiéndole, perdón? Alá es indulgente, misericordioso.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@dccxliv{El Ungido, hijo de María, no es sino un enviado, antes del cual han pasado otros enviados, y su madre, veraz. Ambos tomaban alimentos. ¡ Mira cómo les explicamos los signos! ¡Y mira cómo son desviados!\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@dccxlv{Di: «¿Vais a servir, en lugar de servir a Alá, lo que no puede dañaros ni aprovecharos?» Alá es Quien todo lo oye, Quien todo lo sabe.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@dccxlvi{Di: «¡Gente de la Escritura ! No exageréis en vuestra religión profesando algo diferente de la Verdad y no sigáis las pasiones de una gente que ya antes se extravió, extravió a muchos y se apartó del recto camino».\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@dccxlvii{Los Hijos de Israel que no creyeron fueron maldecidos por boca de David y de Jesús, hijo de María, por haber desobedecido y violado la ley.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@dccxlviii{No se prohibían mutuamente las acciones reprobables que cometían. ¡Qué mal hacían!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@dccxlix{Ves a muchos de ellos que traban amistad con los que no creen. Lo que han hecho antes está tan mal que Alá está irritado con ellos y tendrán un castigo eterno.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@dccl{Si hubieran creído en Alá, en el r Profeta y en la Revelación que éste recibió, no les habrían tomado como amigos. pero muchos de ellos son perversos.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@dccli{Verás que los más hostiles a los creyentes son los judíos y los asociadores, y que los más amigos de los creyentes son los que dicen: «Somos cristianos». Es que hay entre ellos sacerdotes y monjes y no son altivos.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@dcclii{Cuando oyen lo que se ha revelado al Enviado, ves que sus ojos se inundan de lágrimas de reconocimiento de la Verdad. Dicen: «¡Señor! ¡Creemos! ¡Apúntanos, pues. como testigos!\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@dccliii{¿Cómo no vamos a creer en Alá y en la Verdad venida a nosotros si anhelamos que nuestro Señor nos introduzca con los justos?»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@dccliv{Alá les recompensará por lo que han dicho con jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente. Ésa es la retribución de quienes hacen el bien.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@dcclv{Pero quienes no crean y desmientan Nuestros signos morarán en el fuego de la gehena.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@dcclvi{¡Creyentes! ¡No prohibáis las cosas buenas que Alá os ha permitido! ¡Y no violéis la ley, que Alá no ama a los que la violan !\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@dcclvii{¡Comed de lo lícito y bueno de que Alá os ha proveído! ¡Y temed a Alá, en Quien creéis!\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@dcclviii{Alá no os tendrá en cuenta la vanidad de vuestros juramentos, pero sí el que hayáis jurado deliberadamente. Como expiación, alimentaréis a diez pobres como soléis alimentar a vuestra familia, o les vestiréis, o manumitiréis a un esclavo. Quien no pueda, que ayune tres días. Cuando juréis, ésa será la expiación por vuestros juramentos. ¡Sed fieles a lo que juráis! Así os explica Alá Sus aleyas. Quizás, así, seáis agradecidos.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@dcclix{¡Creyentes! El vino, el maysir, las piedras erectas y las flechas no son sino abominación y obra del Demonio. ¡Evitadlo, pues! Quizás, así, prosperéis.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@dcclx{El Demonio quiere sólo crear hostilidad y odio entre vosotros valiéndose del vino y del maysir, e impediros que recordéis a Alá y hagáis la azalá. ¿Os abstendréis, pues?\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@dcclxi{¡Obedeced a Alá, obedeced al Enviado y guardaos! Pero, si volvéis la espalda, sabed que a Nuestro Enviado le incumbe sólo la transmisión clara.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@dcclxii{Quienes creen y obran bien, no pecan en su comida si temen a Alá, creen y obran bien, luego temen a Alá y creen, luego temen a Alá y hacen el bien. Alá ama a quienes hacen el bien.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@dcclxiii{¡Creyentes! Alá ha de probaros con alguna caza obtenida con vuestras manos o con vuestras lanzas, para saber quién Le teme en secreto. Quien, después de esto, viole la ley, tendrá un castigo doloroso.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@dcclxiv{¡Creyentes! No matéis la caza mientras estéis sacralizados. Si uno de vosotros la mata deliberadamente, ofrecerá como víctima a la Caaba, en compensación, una res de su rebaño, equivalente a la caza que mató -a juicio de dos personas justas de entre vosotros-, o bien expiará dando de comer a los pobres o ayunando algo equivalente, para que guste la gravedad de su conducta. Alá perdona lo pasado, pero Alá se vengará del reincidente. Alá es poderoso, vengador.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@dcclxv{Os es lícita la pesca y alimentaros de ella para disfrute vuestro y de los viajeros, pero os está prohibida la caza mientras dure vuestra sacralización. Y temed a Alá hacia Quien seréis congregados.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@dcclxvi{Alá ha hecho de la Caaba, la Casa Sagrada, estación para los hombres, y ha instituido el mes sagrado, la víctima y las guirnaldas para que sepáis que Alá conoce lo que está en los cielos y en la tierra y que Alá es omnisciente.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@dcclxvii{Sabed que Alá es severo en castigar, pero también que Alá es indulgente, misericordioso.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@dcclxviii{Al Enviado no le incumbe sino la transmisión. Alá sabe lo que manifestáis y lo que ocultáis.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@dcclxix{Di: «No es lo mismo el mal que el bien, aunque te plazca lo mucho malo que hay. ¡Temed, pues, a Alá, hombres de intelecto! Quizás, así, prosperéis».\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@dcclxx{¡Creyentes! No preguntéis por cosas que, si se os dieran a conocer, os dañarían. Si, con todo, preguntáis por ellas cuando se revela el Corán, se os darán a conocer y Alá os perdonará por ello. Alá es indulgente, benigno.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@dcclxxi{Gente que os precedió hizo esas mismas preguntas y, por ellas, se hizo infiel.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@dcclxxii{Alá no ha instituido ni bahira, ni saibas ni wasila, ni hami. Son los infieles quienes han inventado la mentira contra Alá. Y la mayoría no razonan.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@dcclxxiii{Y cuando se les dice: «Venid a la Revelación de Alá y al Enviado», dicen: «Nos basta aquello en que encontramos a nuestros padres». ¡Cómo! ¿Y si sus padres no sabían nada, ni estaban bien dirigidos?\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@dcclxxiv{¡Creyentes! ¡Preocupaos de vosotros mismos! Quien se extravía no puede dañaros, si estáis en la buena dirección. Todos volveréis a Alá. Ya os informará Él de lo que hacíais.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@dcclxxv{¡Creyentes! Cuando, a punto de morir, hagáis testamento, llamad como testigos a dos personas justas de los vuestros o bien a dos de fuera si estáis de viaje y os sobreviene la muerte. Retenedlas después de la azalá. Si dudáis de ellas, que juren por Alá: «¡No nos venderemos, aunque se trate de un pariente, ni ocultaremos el testimonio de Alá! Si no, seríamos de los pecadores».\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@dcclxxvi{Si se descubre que son reos de pecado, otros dos, los más próximos, les sustituirán, elegidos entre los perjudicados por el perjurio y jurarán por Alá: «Nuestro testimonio es más auténtico que el de los otros dos. Y no hemos violado la ley. Si no, seríamos de los impíos».\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@dcclxxvii{Así, será más fácil conseguir que presten testimonio como es debido, o que teman ver rechazados sus juramentos después de prestados. ¡Temed a Alá y escuchad! Alá no dirige al pueblo perverso.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@dcclxxviii{El día que Alá congregue a los enviados y diga: «¿Qué se os ha respondido?», dirán: «No sabemos. Tú eres Quien conoce a fondo las cosas ocultas».\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@dcclxxix{Cuando dijo Alá: «¡Jesús, hijo de María!; Recuerda Mi gracia, que os dispensé a ti y a tu madre cuando te fortalecí con el Espíritu Santo y hablaste a la gente en la cuna y de adulto, y cuando le enseñé la Escritura, la Sabiduría, la Tora y el Evangelio. Y cuando creaste de arcilla a modo de pájaros con Mi permiso, soplaste en ellos y se convirtieron en pájaros con Mi permiso. Y curaste al ciego de nacimiento y al leproso con Mi permiso. Y cuando resucitaste a los muertos con Mi permiso. Y cuando alejé de ti a los Hijos de Israel cuando viniste a ellos con las pruebas claras y los que de ellos no creían dijeron: 'Esto no es sino manifiesta magia'.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@dcclxxx{Y cuando inspiré a los apóstoles: '¡Creed en Mí y en Mi enviado!' Dijeron: «¡Creemos! ¡Sé testigo de nuestra sumisión!'».\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@dcclxxxi{Cuando dijeron los apóstoles: «¡Jesús, hijo de María! ¿Puede tu Señor hacer que nos baje del cielo una mesa servida?». Dijo: «¡Temed a Alá, si sois creyentes!».\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@dcclxxxii{Dijeron: «Queremos comer de ella. Así, nuestros corazones se tranquilizarán, sabremos que nos has hablado verdad y podremos ser testigos de ella».\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@dcclxxxiii{Dijo Jesús, hijo de María: «¡Alá, Señor nuestro! Haz que nos baje del cielo una mesa servida, que sea para nosotros, el primero como el último, motivo de regocijo y signo venido de Ti. ¡Provéenos del sustento necesario, Tú, Que eres el Mejor de los proveedores!».\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@dcclxxxiv{Dijo Alá: «Sí, voy a hacer que os baje. Pero, si uno de vosotros, después de eso, no cree, le castigaré como no he castigado a nadie en el mundo».\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@dcclxxxv{Y cuando dijo Alá: «¡Jesús, hijo de María! ¡Eres tú quien ha dicho a los hombres: '¡Tomadnos a mí y a mi madre como a dioses, además de tomar a Alá!'?». Dijo: «¡Gloria a Ti! ¿Cómo voy a decir algo que no tengo por verdad? Si lo hubiera dicho, Tú lo habrías sabido. Tú sabes lo que hay en mí, pero yo no sé lo que hay en Ti. Tú eres Quien conoce a fondo las cosas ocultas.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@dcclxxxvi{No les he dicho más que lo que Tú me has ordenado: '¡Servid a Alá, mi Señor y Señor vuestro!' Fui testigo de ellos mientras estuve entre ellos, pero, después de llamarme a Ti, fuiste Tú Quien les vigiló. Tú eres testigo de todo.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@dcclxxxvii{Si les castigas, son Tus siervos, Si les perdonas, Tú eres el Poderoso, el Sabio».\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@dcclxxxviii{Alá dice: «Este es un día en que su sinceridad aprovechará a los sinceros. Tendrán jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente, para siempre». Alá está satisfecho de ellos y ellos lo están de Él. ¡Ése es el éxito grandioso!\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@dcclxxxix{De Alá es el dominio de los cielos y de la tierra y de lo que en ellos está. Es omnipotente.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@dccxc{\basmalahes ¡Alabado sea Alá, Que creó los cielos y la tierra e instituyó las tinieblas y la luz! Aun así, los que no creen equiparan a otros a su Señor.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@dccxci{Él es Quien os creó de arcilla y decretó a cada uno un plazo. Ha sido fijado un plazo junto a Él. Y aún dudáis...\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@dccxcii{Él es Alá en los cielos y en la tierra. Sabe lo que ocultáis y lo que manifestáis. Sabe lo que merecéis.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@dccxciii{Siempre que viene a ellos uno de los signos de su Señor, se apartan de él.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@dccxciv{Han desmentido la Verdad cuando ha venido a ellos, pero recibirán noticias de aquello de que se burlaban.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@dccxcv{¿Es que no ven a cuántas generaciones precedentes hemos hecho perecer? Les habíamos dado poderío en la tierra como no os hemos dado a vosotros. Les enviamos del cielo una lluvia abundante. Hicimos que fluyeran arroyos a sus pies. Con todo, les destruimos por sus pecados y suscitamos otras generaciones después de ellos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@dccxcvi{Si hubiéramos hecho bajar sobre ti una Escritura escrita en pergamino y la hubieran palpado con sus manos, aun así, los que no creen habrían dicho: «Esto no es sino manifiesta magia».\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@dccxcvii{Dicen: «¿Por qué no se ha hecho descender a un ángel sobre él?» Si hubiéramos hecho descender a un ángel, ya se habría decidido la cosa y no les habría sido dado esperar.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@dccxcviii{Si hubiéramos hecho de él un ángel, le habríamos dado apariencia humana y, con ello, habríamos contribuido a su confusión.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@dccxcix{Se burlaron de enviados que te precedieron, pero los que se burlaban se vieron cercados por aquello de que se burlaban.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@dccc{Di: «¡Id por la tierra y mirad cómo terminaron los desmentidores!».\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@dccci{Di: «¿A quién pertenece lo que está en los cielos y en la tierra?» Di: «¡A Alá!», Él mismo Se ha prescrito la misericordia. Él os reunirá, ciertamente, para el día indubitable de la Resurrección. Quienes se hayan perdido, no creerán.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@dcccii{A Él pertenece lo que sucede de noche y de día. Él es Quien todo lo oye, todo lo sabe.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@dccciii{Di: «¿Tomaré como amigo a otro distinto de Alá, creador de los cielos y de la tierra, Que alimenta sin ser alimentado?» Di: «He recibido la orden de ser el primero en someterse a Alá y no ser de los asociadores».\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@dccciv{Di: «Temo, si desobedezco a mi Señor, el castigo de un día terrible».\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@dcccv{Él se habrá apiadado de aquél a quien ese día se le haya alejado. Ése es el éxito manifiesto.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@dcccvi{Si Alá te aflige con una desgracia, nadie más que Él podrá retirarla. Si te favorece con un bien... Él es omnipotente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@dcccvii{Él es Quien domina a Sus siervos. Él es el Sabio, el Bien Informado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@dcccviii{Di: «¿Cuál es el testimonio de más peso?» Di: «Alá es testigo entre yo y vosotros. Este Corán me ha sido revelado para que, por él. os advierta a vosotros y a aquéllos a quienes alcance. ¿Atestiguaríais, de verdad, que hay otros dioses junto con Alá?» Di: «No, no lo haría». Di: «Él es sólo un Dios Uno y soy inocente de lo que vosotros Le asociáis».\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@dcccix{Aquéllos a quienes hemos dado la Escritura la conocen como conocen a sus propios hijos varones. Quienes se hayan perdido, no creerán.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@dcccx{¿Hay alguien que sea más impío que quien inventa una mentira contra Alá o desmiente Sus signos? Los impíos no prosperarán.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@dcccxi{El día que les congreguemos a todos, diremos a los que hayan asociado: «¿Dónde están vuestros pretendidos asociados?»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@dcccxii{En su confusión, no sabrán decir más que: «¡Por Alá, Señor nuestro, que no éramos asociadores!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@dcccxiii{¡Mira cómo mienten contra sí mismos y cómo se han esfumado sus invenciones!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@dcccxiv{Hay entre ellos quienes te escuchan, pero hemos velado sus corazones y endurecido sus oídos para que no lo entiendan. Aunque vieran toda clase de signos, no creerían en ellos. Hasta el punto de que, cuando vienen a disputar contigo, dicen los que no creen: «Éstas no son sino patrañas de los antiguos».\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@dcccxv{Se lo impiden a otros y ellos mismos se mantienen a distancia. Pero sólo se arruinan a sí mismos, sin darse cuenta.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@dcccxvi{Si pudieras ver cuando, puestos de pie ante el Fuego, digan: «¡Ojalá se nos devolviera! No desmentiríamos los signos de nuestro Señor, sino que seríamos de los creyentes».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@dcccxvii{Pero ¡no! Se les mostrará claramente lo que antes ocultaban. Si se les devolviera, volverían a lo que se les prohibió. ¡Mienten, ciertamente!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@dcccxviii{Dicen: «No hay más vida que la de acá y no seremos resucitados».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@dcccxix{Si pudieras ver cuando, puestos de pie ante su Señor... Dirá: «¿No es esto la Verdad?» Dirán: «¡Claro qué sí, por nuestro Señor!» Dirá: «¡Gustad, pues, el castigo por no haber creído!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@dcccxx{Perderán quienes hayan desmentido el encuentro de Alá. Cuando, al fin, de repente, les venga la Hora, dirán: «¡Ay de nosotros, que nos descuidamos!» Y llevarán su carga a la espalda. ¿No es carga mala la que llevan?\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@dcccxxi{La vida de acá no es sino juego y distracción. Sí, la Morada Postrera es mejor para quienes temen a Alá. ¿Es que no razonáis...?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@dcccxxii{Ya sabemos que lo que dicen te entristece. No es a ti a quien desmienten, sino que, más bien, lo que los impíos rechazan son los signos de Alá.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@dcccxxiii{También fueron desmentidos antes de ti otros enviados, pero sufrieron con paciencia ese mentís y vejación hasta que les llegó Nuestro auxilio. No hay quien pueda cambiar las palabras de Alá. Tú mismo has oído algo acerca de los enviados.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@dcccxxiv{Y si te resulta duro que se alejen, auque pudieras encontrar un agujero en la tierra o una escala en el cielo para traerles un signo,... Alá, si hubiera querido, les habría congregado a todos para dirigirles. ¡No seas, pues, de los ignorantes!\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@dcccxxv{Sólo escuchan quienes oyen. En cuanto a los muertos, Alá les resucitará y serán devueltos a Él.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@dcccxxvi{Dicen: «¿Por qué no se le ha revelado un signo que procede de su Señor?» Di: «Alá es capaz de revelar un signo». Pero la mayoría no saben.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@dcccxxvii{No hay animal en la tierra, ni ave que vuele con sus alas, que no constituyan comunidades como vosotros. No hemos descuidado nada en la Escritura. Luego, serán congregados hacia su Señor.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@dcccxxviii{Quienes desmienten Nuestros signos son sordos, mudos, vagan entre tinieblas. Alá extravía a quien Él quiere, y a quien Él quiere le pone en una vía recta.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@dcccxxix{Di: «¿Qué crees que iba a ser de vosotros si os viniera el castigo de Alá u os viniera la Hora? ¿Invocaríais a otros diferentes de Alá? Sinceramente...»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@dcccxxx{¡No!, antes bien, le invocaríais a Él y quitaría, si Él quisiera, el objeto de vuestra invocación. Y olvidaríais lo que ahora Le asociáis.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@dcccxxxi{Antes de ti, hemos mandado enviados a comunidades y hemos causado a éstas miseria y desgracia. Quizás, así, se humillaran.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@dcccxxxii{Si se hubieran humillado cuando Nuestro rigor les alcanzó... Pero sus corazones se endurecieron y el Demonio engalanó lo que hacían.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@dcccxxxiii{Y cuando hubieron olvidado lo que se les había recordado, les abrimos las puertas de todo. Cuando hubieron disfrutado de lo que se les había concedido, Nos apoderamos de ellos de repente y fueron presa de la desesperación.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@dcccxxxiv{Así fue extirpado el pueblo que obró impíamente. ¡Alabado sea Alá, Señor del universo!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@dcccxxxv{Di: «¿Qué os parece? Si Alá os privara del oído y de la vista y sellara vuestros corazones, qué dios otro que Alá podría devolvéroslos?» ¡Mira cómo exponemos las aleyas! Aun así, ellos se apartan.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@dcccxxxvi{Di: «¿Qué crees que iba a ser de vosotros si os sorprendiera el castigo de Alá repentina o visiblemente? ¿Quién iba a ser destruido sino el pueblo impío?»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@dcccxxxvii{No mandamos a los enviados sino como nuncios de buenas nuevas y para advertir. Quienes crean y se enmienden, no tienen que temer y no estarán tristes.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@dcccxxxviii{A quienes desmientan Nuestros signos les alcanzará el castigo por haber sido perversos.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@dcccxxxix{Di: «Yo no pretendo poseer los tesoros de Alá, ni conozco lo oculto, ni pretendo ser un ángel. No hago sino seguir lo que se me ha revelado». Di: «¿Son iguales el ciego y el vidente? ¿Es que no reflexionáis?»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@dcccxl{Advierte por su medio a quienes teman ser congregados hacia su Señor que no tendrán, fuera de Él, amigo ni intercesor. Quizás. así, teman a Alá.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@dcccxli{No rechaces a quienes invocan a su Señor mañana y tarde por deseo de agradarle. No tienes tú que pedirles cuentas de nada, ni ellos a ti. Y, si les rechazas, serás de los impíos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@dcccxlii{Así hemos probado a unos por otros para que digan: «¿Es a éstos a quienes Alá ha agraciado de entre nosotros?» ¿No conoce Alá mejor que nadie a los agradecidos?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@dcccxliii{Cuando vengan a ti los que creen en Nuestros signos, di: «¡Paz sobre vosotros!» Vuestro Señor Se ha prescrito la misericordia, de modo que si uno de vosotros obra mal por ignorancia, pero luego se arrepiente y enmienda... Él es indulgente, misericordioso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@dcccxliv{Así es como exponemos los signos, para que aparezca claro el camino de los pecadores.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@dcccxlv{Di: «Se me ha prohibido servir a aquéllos que invocáis en lugar de invocar a Alá». Di: «No seguiré vuestras pasiones; si no, me extraviaría y no sería de los bien dirigidos».\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@dcccxlvi{Di: «Me baso en una prueba clara venida de mi Señor y vosotros lo desmentís. Yo no tengo lo que pedís con tanto apremio. La decisión pertenece sólo a Alá: Él cuenta la verdad y Él es el Mejor en fallar».\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@dcccxlvii{Di: «Si yo tuviera lo que pedís con tanto apremio, ya se habría decidido la cosa entre yo y vosotros». Alá conoce mejor que nadie a los impíos.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@dcccxlviii{Él posee las llaves de lo oculto, sólo Él las conoce. Él sabe lo que hay en la tierra y en el mar. No cae ni una hoja sin que Él lo sepa, no hay grano en las tinieblas de la tierra, no hay nada verde, nada seco, que no esté en una Escritura clara.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@dcccxlix{Él es quien os llama de noche y sabe lo que habéis hecho durante el día. Luego, os despierta en él. Esto es así para que se cumpla un plazo fijo. Luego, volveréis a Él y os informará de lo que hacíais.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@dcccl{Él es Quien domina a Sus siervos. Envía sobre vosotros a custodios. Cuando, al fin, viene la muerte a uno de vosotros, Nuestros enviados le llaman, no se descuidan.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@dcccli{Luego, son devueltos a Alá, su verdadero Dueño. ¿No es a Él a quien toca decidir? Él es el más rápido en ajustar cuentas.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@dccclii{Di: «¿Quién os librará de las tinieblas de la tierra y del mar?» Le invocáis humildemente y en secreto: «Si nos libra de ésta, seremos, ciertamente, de los agradecidos».\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@dcccliii{Di: «Alá os libra de ésta y de todo apuro, pero vosotros de nuevo Le asociáis».\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@dcccliv{Di: «Él es el Capaz de enviaros un castigo de arriba o de abajo, o de desconcertaros con partidos diferentes y haceros gustar vuestra mutua violencia». ¡Mira cómo exponemos las aleyas! Quizás, así comprendan mejor.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@dccclv{Pero tu pueblo lo ha desmentido, que es la Verdad. Di: «Yo no soy vuestro protector.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@dccclvi{Todo anuncio tiene su tiempo oportuno y pronto lo sabréis».\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@dccclvii{Cuando veas a los que parlotean de Nuestros signos, déjales hasta que cambien de conversación. Y, si el Demonio hace que te olvides, entonces, después de la amonestación, no sigas con los impíos.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@dccclviii{Quienes temen a Alá no deben pedirles cuentas de nada, sino tan sólo amonestarles. Quizás, así, teman a Alá.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@dccclix{¡Deja a quienes toman su religión a juego y distracción y a quienes ha engañado la vida de acá! ¡Amonéstales por su medio, no sea que alguien se pierda por razón de sus obras! No tendrá, fuera de Alá, amigo ni intercesor y, aunque ofrezca toda clase de compensaciones, no se le aceptarán. Ésos son los que se han perdido por razón de sus obras. Se les dará a beber agua muy caliente y tendrán un castigo doloroso por no haber creído.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@dccclx{Di: «¿Invocaremos, en lugar de invocar a Alá, lo que no puede aprovecharnos ni dañarnos? ¿Volveremos sobre nuestros pasos después de habernos dirigido Alá?» Como aquél a quien los demonios han seducido y va desorientado por la tierra... Sus compañeros le llaman, invitándole a la Dirección: «¡Ven a nosotros!» Di: «La dirección de Alá es la Dirección. Hemos recibido la orden de someternos al Señor del universo.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@dccclxi{¡Haced la azalá! ¡Temedle! Es Él hacia Quien seréis congregados».\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@dccclxii{Es Él Quien ha creado con un fin los cielos y la tierra. El día que dice: «¡Sé!», es. Su palabra es la Verdad. Suyo será el dominio el día que se toque la trompeta. El Conocedor de lo oculto y de lo patente. Él es el Sabio, el Bien Informado.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@dccclxiii{Y cuando Abraham dijo a su padre Azar: «¿Tomas a los ídolos como dioses? Sí, veo que tú y tu pueblo estáis evidentemente extraviados».\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@dccclxiv{Y así mostramos a Abraham el reino de los cielos y de la tierra, para que fuera de los convencidos.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@dccclxv{Cuando cerró la noche sobre él, vio una estrella y dijo: «¡Éste es mi Señor!». Pero, cuando se puso, dijo: «No amo a los que se ponen».\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@dccclxvi{Cuando vio la luna que salía, dijo: «Éste es mi Señor». Pero, cuando se puso, dijo: «Si no me dirige mi Señor, voy a ser, ciertamente, de los extraviados».\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@dccclxvii{Cuando vio el sol que salía, dijo: «Éste es mi Señor! ¡Éste es mayor!». Pero, cuando se puso, dijo: «¡Pueblo! Soy inocente de lo que Le asociáis.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@dccclxviii{Vuelvo mi rostro, como hanif, hacia Quien ha creado los cielos y la tierra. Y no soy asociador».\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@dccclxix{Su pueblo disputó con él. Dijo: «¿Disputáis conmigo sobre Alá, a pesar de haberme Él dirigido? No temo lo que Le asociáis, a menos que mi Señor quiera algo. Mi Señor lo abarca todo en Su ciencia. ¿Es que no os dejaréis amonestar?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@dccclxx{¿Cómo voy a temer lo que Le habéis asociado si vosotros no teméis asociar a Alá algo para lo que Él no os ha conferido autoridad? ¿Cuál, pues, de las dos partes tiene más derecho a seguridad? Si es que lo sabéis...».\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@dccclxxi{Quienes creen y no revisten su fe de impiedad, ésos son los que están en seguridad, los que están dirigidos.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@dccclxxii{Ése es el argumento Nuestro que dimos a Abraham contra su pueblo. Ascendemos la categoría de quien queremos. Tu Señor es sabio, omnisciente.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@dccclxxiii{Le regalamos a Isaac y a Jacob. Dirigimos a los dos. A Noé ya le habíamos dirigido antes y, de sus descendientes, a David, a Salomón, a Job, a José, a Moisés y a Aarón. Así retribuimos a quienes hacen el bien.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@dccclxxiv{Y a Zacarías, a Juan, a Jesús y a Elías, todos ellos de los justos.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@dccclxxv{Y a Ismael, a Eliseo, a Jonás y a Lot. A cada uno de ellos le distinguimos entre todos los hombres,\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@dccclxxvi{así como a algunos de sus antepasados, descendientes y hermanos. Les elegimos y dirigimos a una vía recta.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@dccclxxvii{Ésta es la dirección de Alá, por la que dirige a quien Él quiere de Sus siervos. Si hubieran sido asociadores, todas sus obras habrían sido vanas.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@dccclxxviii{Fue a éstos a quienes dimos la Escritura, el juicio y el profetismo. Y, si éstos no creen en ello, lo hemos confiado a otro pueblo, que sí que cree.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@dccclxxix{A éstos ha dirigido Alá. ¡Sigue, pues, su Dirección! Di: «No os pido salario a cambio. No es más que una Amonestación dirigida a todo el mundo».\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@dccclxxx{No han valorado a Alá debidamente cuando han dicho: «Alá no ha revelado nada a un mortal». Di: «Y ¿quién ha revelado la Eiscrituro que Moisés trajo, luz y dirección para los hombres? la ponéis en pergaminos, que enseñáis, pero ocultáis una gran parte. Se os enseñó lo que no sabíais, ni vosotros ni vuestros padres». Di: «¡Fue Alá!». Y déjales que pasen el rato en su parloteo.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@dccclxxxi{Es ésta una Escritura bendita que hemos revelado, que confirma la revelación anterior, para que adviertas a la metrópoli y a los que viven en sus alrededores. Quienes creen en la otra vida, creen también en ella y observan su azalá.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@dccclxxxii{¿Hay alguien que sea más impío que quien inventa una mentira contra Alá, o quien dice: «He recibido una revelación», siendo así que no se le ha revelado nada, o quien dice: «Yo puedo revelar otro tanto de lo que Alá ha revelado»? Si pudieras ver cuando estén los impíos en su agonía y los ángeles extiendan las manos: «¡Entregad vuestras almas! Hoy se os va a retribuir con un castigo degradante, por haber dicho falsedades contra Alá y por haberos desviado altivamente de Sus signos».\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@dccclxxxiii{«Habéis venido uno a uno a Nosotros, como os creamos por vez primera, y habéis dejado a vuestras espaldas lo que os habíamos otorgado. No vemos que os acompañen vuestros intercesores, que pretendíais eran vuestros asociados. Se han roto ya los lazos que con ellos os unían, se han esfumado vuestras pretensiones».\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@dccclxxxiv{Alá hace que germinen el grano y el hueso del dátil, saca al vivo del muerto y al muerto del vivo. ¡Ése es Alá! ¡Cómo podéis, pues, ser tan desviados!\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@dccclxxxv{Quien hace que el alba apunte, Quien hizo de la noche descanso y del sol y de la luna cómputo. Esto es lo que ha decretado el Poderoso, el Omnisciente.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@dccclxxxvi{Y Él es Quien ha hecho, para vosotros, las estrellas, con objeto de que podáis dirigiros por ellas entre las tinieblas de la tierra y del mar. Hemos expuesto así los signos a gente que sabe.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@dccclxxxvii{Y Él es Quien os ha creado de una sola persona. Receptáculo y depósito. Hemos expuesto así los signos a gente que entiende.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@dccclxxxviii{Y Él es Quien ha hecho bajar agua del cielo. Mediante ella hemos sacado toda clase de plantas y follaje, del que sacamos granos arracimados. Y de las vainas de la palmera, racimos de dátiles al alcance. Y huertos plantados de vides, y los olivos y los granados, parecidos y diferentes. Cuando fructifican, ¡mirad el fruto que dan y cómo madura! Ciertamente, hay en ello signos para gente que cree.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@dccclxxxix{Han hecho de los genios asociados de Alá, siendo así que Él es Quien los ha creado. Y Le han atribuido, sin conocimiento, hijos e hijas. ¡Gloria a Él! ¡Está por encima de lo que Le atribuyen!\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@dcccxc{Creador de los cielos y de la tierra. ¿Cómo iba a tener un hijo si no tiene compañera, si lo ha creado todo y lo sabe todo?\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@dcccxci{Ése es Alá, vuestro Señor. No hay más dios que Él. Creador de todo. ¡Servidle, pues! Él vela por todo.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@dcccxcii{La vista no Le alcanza, pero Él sí que alcanza la vista. Es el Sutil, el Bien Informado.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@dcccxciii{«Habéis recibido intuiciones de vuestro Señor. Quien ve claro, ve en beneficio propio. Quien está ciego, lo está en detrimento propio. Yo no soy vuestro custodio.»\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@dcccxciv{Así exponemos las aleyas para que digan: «Tú has estudiado» y para explicarlo Nosotros a gente que sabe.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@dcccxcv{Sigue lo que se te ha revelado, procedente de tu Señor. No hay más dios que Él. Y apártate de los asociadores.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@dcccxcvi{Si Alá hubiera querido, no habrían sido asociadores. No te hemos nombrado custodio de ellos, ni eres su protector.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@dcccxcvii{No insultéis a los que ellos invocan en lugar de invocar a Alá, no sea que, por hostilidad, insulten a Alá sin conocimiento. Así, hemos engalanado las obras de cada comunidad. Luego, volverán a su Señor y ya les informará Él de lo que hacían.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@dcccxcviii{Han jurado solemnemente por Alá que si les viene un signo creerán, ciertamente, en él. Di: «Sólo Alá dispone de los signos». Y ¿qué es lo que os hace prever que, si ocurre, vayan a creer?\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@dcccxcix{Desviaremos sus corazones y sus ojos, como cuando no creyeron por primera vez, y les dejaremos que yerren ciegos en su rebeldía.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@cm{Aunque hubiéramos hecho que los ángeles descendieran a ellos, aunque les hubieran hablado los muertos, aunque hubiéramos juntado ante ellos todas las cosas, no habrían creído, a menos que Alá hubiera querido. Pero la mayoría son ignorantes.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@cmi{Así hemos asignado a cada profeta un enemigo: hombres endemoniados o genios endemoniados, que se inspiran mutuamente pomposas palabras para engañarse. Si tu Señor hubiera querido, no lo habrían hecho. ¡Déjales con sus invenciones!\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@cmii{¡Que los corazones de los que no creen en la otra vida se vean atraídos a ello! ¡Que les plazca! ¡Que lleven su merecido!\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@cmiii{«¿Buscaré, pues, a otro diferente de Alá como juez, siendo Él Quien os ha revelado la Escritura explicada detalladamente?» Aquéllos a quienes Nosotros hemos dado la Escritura saben bien que ha sido revelada por tu Señor con la Verdad. ¡No seáis, pues, de los que dudan!\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@cmiv{La Palabra de tu Señor se ha cumplido en verdad y en justicia. Nadie puede cambiar Sus palabras. Él es Quien todo lo oye, todo lo sabe.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@cmv{Si obedecieras a la mayoría de los que están en la tierra, te extraviarían del camino de Alá. No siguen sino conjeturas, no formulan sino hipótesis.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@cmvi{Ciertamente, tu Señor conoce mejor que nadie quién se extravía de Su camino y quiénes son los bien dirigidos.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@cmvii{Comed, pues, de aquello sobre lo que se ha mencionado el nombre de Alá si creéis en Sus signos.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@cmviii{¿Qué razón tenéis para no comer de aquello sobre lo que se ha mencionado el nombre de Alá, habiéndoos Él detallado lo ilícito -salvo en caso de extrema necesidad-? Muchos sin conocimiento extravían a otros con sus pasiones. Tu Señor conoce mejor que nadie a quienes violan la ley.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@cmix{Evitad el pecado, público o privado. Los que cometan pecado serán retribuidos conforme a su merecido.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@cmx{No comáis de aquello sobre lo que no hayáis mencionado el nombre de Alá, pues seria una perversidad. Sí, los demonios inspiran a sus amigos que discutan con vosotros. Si les obedecéis, sois asociadores.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@cmxi{El que estaba muerto y que luego hemos resucitado dándole una luz con la cual anda entre la gente, ¿es igual que el que está entre tinieblas sin poder salir? De este modo han sido engalanadas las obras de los infieles...\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@cmxii{Así, hemos puesto en cada ciudad a los más pecadores de ella para que intriguen. Pero, al intrigar, no lo hacen sino contra sí mismos, sin darse cuenta.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@cmxiii{Cuando les viene un signo dicen: «No creeremos hasta que se nos dé tanto cuanto se ha dado a los enviados de Alá». Pero Alá sabe bien a quién confiar Su mensaje. La humillación ante Alá y un castigo severo alcanzarán a los pecadores por haber intrigado.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@cmxiv{Alá abre al islam el pecho de aquél a quien Él quiere dirigir. Y estrecha y oprime el pecho de aquél a quien Él quiere extraviar, como si se elevara en el aire. Así muestra Alá la indignación contra quienes no creen.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@cmxv{Ésta es la vía de tu Señor, recta. Hemos expuesto las aleyas a gente que se deja amonestar.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@cmxvi{La Morada de la Paz junto a su Señor es para ellos -Él es su amigo-, como premio a sus obras.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@cmxvii{El día que Él les congregue a todos: «¡Asamblea de genios! ¡Habéis abusado de los hombres!» y los hombres que fueron amigos de los genios dirán: «¡Señor! Unos hemos sacado provecho de otros y hemos llegado ya al término que Tú nos habías señalado». Dirá: «Tendréis el Fuego por morada, en el que estaréis eternamente, a menos que Alá disponga otra cosa». Tu Señor es sabio, omnisciente.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@cmxviii{Así conferimos a algunos impíos autoridad sobre otros por lo que han cometido.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@cmxix{«¡Asamblea de genios y de hombres! ¿No vinieron a vosotros enviados, salidos de vosotros, para contaros Mis signos y preveniros contra el encuentro de este vuestro día?» Dirán: «Atestiguamos contra nosotros mismos». Pero la vida de acá les engañó y atestiguarán contra sí mismos su incredulidad.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@cmxx{Porque tu Señor no va a destruir injustamente ciudades sin haber antes apercibido a sus habitantes.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@cmxxi{Para todos habrá categorías según sus obras. Tu Señor está atento a lo que hacen.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@cmxxii{Tu Señor es Quien Se basta a Sí mismo, el Dueño de la misericordia. Si quisiera, os retiraría y os sustituiría por quien Él quisiera, igual que os ha suscitado a vosotros de la descendencia de otra gente.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@cmxxiii{¡Ciertamente, aquello con que se os ha amenazado vendrá! Y no podréis escapar.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@cmxxiv{Di: «¡Pueblo! ¡Obrad según vuestra situación! Yo también obraré... Pronto sabréis para quién será la Morada Postrera. Los impíos no prosperarán».\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@cmxxv{Reservan a Alá una parte de la cosecha y de los rebaños que Él ha hecho crecer. Y dicen: «Esto es para Alá» -eso pretenden- «y esto para nuestros asociados». Pero lo que es para quienes ellos asocian no llega a Alá y lo que es para Alá llega a quienes ellos asocian. ¡Qué mal juzgan!\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@cmxxvi{Así, los que ellos asocian han hecho creer a muchos asociadores que estaba bien que mataran a sus hijos. Esto era para perderles a ellos mismos y oscurecerles su religión. Si Alá hubiera querido, no lo habrían, hecho. Déjales, pues, con sus invenciones.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@cmxxvii{Y dicen: «He aquí unos rebaños y una cosecha que están consagrados. Nadie se alimentará de ellos sino en la medida que nosotros queramos». Eso pretenden. Hay bestias de dorso prohibido y bestias sobre las que no mencionan el nombre de Alá. Todo eso es una invención contra Él. Él les retribuirá por sus invenciones.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@cmxxviii{Y dicen: «Lo que hay en el vientre de estas bestias está reservado para nuestros, varones y vedado a nuestras esposas». Pero, si estuviera muerta, participarían de ella. Él les retribuirá por lo que cuentan. Él es sabio, omnisciente.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@cmxxix{Saldrán perdiendo quienes, sin conocimiento, maten a sus hijos tontamente y que, inventando contra Alá, prohíban aquello de que Alá les ha proveído. Están extraviados, no están bien dirigidos.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@cmxxx{Él es Quien ha creado huertos, unos con emparrados y otros sin ellos, las palmeras, los cereales de alimento vario, los olivos, los granados, parecidos y diferentes. ¡Comed de su fruto, si lo tienen, pero dad lo debido el día de la cosecha! ¡Y no cometáis excesos, que Alá no ama a los inmoderados!.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@cmxxxi{De las bestias, unas sirven de carga y otras con fines textiles. ¡Comed de lo que Alá os ha proveído y no sigáis los pasos del Demonio! Es para vosotros un enemigo declarado.\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@cmxxxii{Cuatro parejas de reses: una de ganado ovino y otra de ganado caprino -di: «¿Ha prohido los dos machos, o las dos hembras, o lo que encierran los úteros de las dos hembras? ¡Informadme con conocimiento, si sois sinceros!»-,\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@cmxxxiii{una de ganado camélido y otra de ganado bovino -di: «¿Ha prohibido los dos machos o las dos hembras o lo que encierran los úteros de las dos hembras? ¿Fuisteis, acaso, testigos cuando Alá os ordenó esto? ¿Hay alguien más impío que aquél que inventa una mentira contra Alá para, sin conocimiento, extraviar a los hombres?»-. Ciertamente, Alá no dirige al pueblo impío.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@cmxxxiv{Di: «En lo que se me ha revelado no encuentro nada que se prohíba comer, excepto carne mortecina, sangre derramada o carne de cerdo -que es una suciedad-, o aquello sobre lo que, por pervesidad, se haya invocado un nombre diferente del de Alá. Pero, si alguien se ve compelido por la necesidad -no por deseo ni por afán de contravenir-... Tu Señor es indulgente, misericordioso».\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@cmxxxv{A los judíos les prohibimos toda bestia ungulada y la grasa de ganado bovino y de ganado menor, excepto la que tengan en los lomos o en las entrañas o la mezclada con los huesos. Así les retribuimos por su rebeldía. Decimos, sí, la verdad.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@cmxxxvi{Si te desmienten, di: «Vuestro Señor es el Dueño de una inmensa misericordia, pero no se alejará Su rigor del pueblo pecador».\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@cmxxxvii{Los asociadores dirán: «Si Alá hubiera querido, no habríamos sido asociadores, ni tampoco nuestros padres, ni habríamos declarado nada ilícito». Así desmintieron sus antecesores, hasta que gustaron Nuestro rigor. Di: «¿Tenéis alguna ciencia que podáis mostrarnos?» No seguís sino conjeturas, no formuláis sino hipótesis.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@cmxxxviii{Di: «Es Alá quien posee el argumento definitivo y, si hubiera querido, os habría dirigido a todos».\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@cmxxxix{Di: «¡Traed a vuestros testigos y que atestiguen que Alá ha prohibido esto!» Si atestiguan, no atestiguéis con ellos. No sigas las pasiones de quienes han desmentido Nuestros signos, de quienes no creen en la otra vida y equiparan a otros a su Señor.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@cmxl{Di: «¡Venid, que os recitaré lo que vuestro Señor os ha prohibido: que Le asociéis nada! ¡Sed buenos con vuestros padres, no matéis a vuestros hijos por miedo de empobreceros -ya os proveeremos Nosotros, y a ellos,- alejaos de las deshonestidades, públicas o secretas, no matéis a nadie que Alá haya prohibido, sino con justo motivo ¡Esto os ha ordenado Él. Quizás, así, razonéis».\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@cmxli{«¡No toquéis la hacienda del huérfano, sino de manera conveniente, hasta que alcance la madurez! ¡Dad con equidad la medida y el peso justos! No pedimos a nadie sino según sus posibilidades. Sed justos cuando declaréis, aun si se trata de un pariente! ¡Sed fieles a la alianza con Alá! Esto os ha ordenado Él. Quizás, así os dejéis amonestar».\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@cmxlii{Y: «Ésta es Mi vía, recta. Seguidla, pues, y no sigáis otros caminos, que os desviarían de Su camino. Esto os ha ordenado Él. Quizás, así temáis a Alá».\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@cmxliii{Dimos, además, la Escritura a Moisés como complemento, por el bien que había hecho, como explicación detallada de todo, como dirección y misericordia. Quizás, así, crean en el encuentro de su Señor.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@cmxliv{Es ésta una Escritura bendita que hemos revelado. ¡Seguidla, pues, y temed a Alá! Quizás, así se os tenga piedad.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@cmxlv{No sea que dijerais: «Sólo se ha revelado la Escritura a dos comunidades antes que a nosotros y no nos preocupábamos de lo que ellos estudiaban».\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@cmxlvi{O que dijerais: «Si se nos hubiera revelado la Escritura, habríamos sido mejor dirigidos que ellos». Pues ya ha venido a vosotros de vuestro Señor una prueba clara, dirección y misericordia. Y ¿hay alguien más impío que quien desmiente los signos de Alá y se aparta de ellos? Retribuiremos con un mal castigo a quienes se aparten de nuestros mensajes, por haberse apartado.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@cmxlvii{¿Qué esperan sino que vengan a ellos los ángeles, o que venga tu Señor, o que vengan algunos de los signos de tu Señor? El día que vengan algunos de los signos de tu Señor, no aprovechará su fe a nadie que antes no haya creído o que, en su fe, no haya hecho bien. Di: «¡Esperad! ¡Nosotros esperamos!»\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@cmxlviii{En cuanto a los que han escindido su religión en sectas, es asunto que no te incumbe. Su suerte está sólo en manos de Alá. Luego, ya les informará Él de lo que hacían.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@cmxlix{Quien presente una buena obra, recibirá diez veces más. Y quien presente una mala obra, será retribuido con sólo una pena semejante. No serán tratados injustamente.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@cml{Di: «A mí, mi Señor me ha dirigido a una vía recta, una fe verdadera, la religión de Abraham, que fue hanif y no asociador»\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@cmli{Di: «Mi azalá, mis prácticas de piedad, mi vida y mi muerte pertenecen a Alá, Señor del universo.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@cmlii{No tiene asociado. Se me ha ordenado esto y soy el primero en someterse a Él»\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@cmliii{Di: «¿Buscaré a otro diferente de Alá como Señor. Él que es el Señor de todo?» Nadie comete mal sino en detrimento propio. Nadie cargará con la carga ajena. Luego, volveréis a vuestro Señor y ya os informará Él de aquello en que discrepabais.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@cmliv{Él es Quien os ha hecho sucesores en la tierra y Quien os ha distinguido en categoría a unos sobre otros, para probaros en lo que os ha dado. Tu Señor es rápido en castigar, pero también es indulgente, misericordioso.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@cmlv{\basmalahes 'lms.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@cmlvi{Ésta es una Escritura que se te ha revelado -¡no te apures por ella!-, para que adviertas por ella, y como amonestación para los creyentes.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@cmlvii{¡Seguid lo que vuestro Señor os ha revelado y no sigáis a otros amigos en lugar de seguirle a Él! ¡Qué poco os dejáis amonestar!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@cmlviii{¡Cuántas ciudades hemos destruido! Les alcanzó Nuestro rigor de noche o durante la siesta.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@cmlix{Cuando les alcanzó Nuestro rigor, no gritaron más que: «¡Fuimos impíos!».\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@cmlx{Pediremos, ciertamente, responsabilidades a aquéllos a quienes mandamos enviados, como también a los enviados.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@cmlxi{Les contaremos, ciertamente, con conocimiento. No estábamos ausentes.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@cmlxii{La pesa ese día será la Verdad. Aquéllos cuyas obras pesen mucho serán los que prosperen,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@cmlxiii{mientras que aquéllos cuyas obras pesen poco perderán, porque obraron impíamente con Nuestros signos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@cmlxiv{Os hemos dado poderío en la tierra y os hemos puesto en ella medios de subsistencia. ¡Qué poco agradecidos sois!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@cmlxv{Y os creamos. Luego, os formamos. Luego dijimos a los ángeles: «¡Prosternaos ante Adán!» Se prosternaron, excepto Iblis. No fue de los que se prosternaron.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@cmlxvi{Dijo: «¿Qué es lo que te ha impedido prosternarte cuando Yo te lo he ordenado?» Dijo: «Es que soy mejor que él. A mí me creaste de fuego, mientras que a él le creaste de arcilla».\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@cmlxvii{Dijo: «Desciende, pues, de aquí! ¡No vas a echártelas de soberbio en este lugar...! ¡Sal, pues, eres de los despreciables!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@cmlxviii{Dijo: «¡Déjame esperar hasta el día de la Resurreción!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@cmlxix{Dijo: «¡Cuéntate entre aquellos a quienes es dado esperar!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@cmlxx{Dijo: «Como me has descarriado, he de acecharles en Tu vía recta.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@cmlxxi{He de atacarles por delante y por detrás, por la derecha y por la izquierda. Y verás que la mayoría no son agradecidos».\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@cmlxxii{Dijo: «¡Sal de aquí, detestable, vil! ¡He de llenar la gehena de tus secuaces ¡De todos vosotros!»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@cmlxxiii{«¡Adán! ¡Habita con tu esposa en el Jardín y comed de lo que queráis, pero no os acerquéis a este árbol! Si no, seréis de los impíos».\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@cmlxxiv{Pero el Demonio les insinuó el mal, mostrándoles su escondida desnudez, y dijo: «Vuestro Señor no os ha prohibido acercaros a este árbol sino por temor de que os convirtáis en ángeles u os hagáis inmortales».\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@cmlxxv{Y les juró: «¡De veras, os aconsejo bien!»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@cmlxxvi{Les hizo, pues, caer dolosamente. Y cuando hubieron gustado ambos del árbol, se les reveló su desnudez y comenzaron a cubrirse con hojas del Jardín. Su Señor les llamó: «¿No os había prohibido ese árbol y dicho que el Demonio era para vosotros un enemigo declarado?»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@cmlxxvii{Dijeron: «¡Señor! Hemos sido injustos con nosostros mismos. Si no nos perdonas y Te apiadas de nosotros, seremos, ciertamente, de los que pierden».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@cmlxxviii{Dijo: «¡Descended! Seréis enemigos unos de otros. La tierra será por algún tiempo vuestra morada y lugar de disfrute»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@cmlxxix{Dijo: «En ella viviréis, en ella moriréis y de ella se os sacará».\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@cmlxxx{¡Hijos de Adán! Hemos hecho bajar para vosotros una vestidura para cubrir vuestra desnudez y para ornato. Pero la vestidura del temor de Alá, ésa es mejor. Ése es uno de los signos de Alá. Quizás, así, se dejen amonestar.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@cmlxxxi{¡Hijos de Adán! Que el Demonio no os tiente, como cuando sacó a vuestros padres del Jardín, despojándoles de su vestidura para mostrarles su desnudez. Él y su hueste os ven desde donde vosotros no les veis. A los que no creen les hemos dado los demonios como amigos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@cmlxxxii{Cuando cometen una deshonestidad, dicen: «Encontramos a nuestros padres haciendo lo mismo y Alá nos lo ha ordenado». Di: «Ciertamente, Alá no ordena la deshonestidad. ¿Decís contra Alá lo que no sabéis?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@cmlxxxiii{Di: «Mi Señor ordena la equidad. Dirigíos a Él siempre que oréis e invocadle rindiéndole culto sincero. Así como os ha creado, volveréis».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@cmlxxxiv{Ha dirigido a unos, pero otros han merecido extraviarse. Éstos han tomado como amigos a los demonios, en lugar de tomar a Alá, y creen ser bien dirigidos.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@cmlxxxv{¡Hijos de Adán! ¡Atended a vuestro atavío siempre que oréis! ¡Comed y bebed, pero no cometáis excesos, que Él no ama a los inmoderados!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@cmlxxxvi{Di: «,Quién ha prohibido los adornos que Alá ha producido para Sus siervos y las cosas buenas de que os ha proveído?» Di: «Esto es para los creyentes mientras vivan la vida de acá, pero, en particular, para el día de la Resurrección». Así es como explicamos con detalle las aleyas a gente que sabe.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@cmlxxxvii{Di: «Mi Señor prohíbe sólo las deshonestidades, tanto las públicas como las ocultas, el pecado, la opresión injusta, que asociéis a Alá algo a lo que Él no ha conferido autoridad y que digáis contra Alá lo que no sabéis».\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@cmlxxxviii{Cada comunidad tiene un plazo. Y cuando vence su plazo, no pueden retrasarlo ni adelantarlo una hora.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@cmlxxxix{¡Hijos de Adán! Si vienen a vosotros enviados salidos de vosotros contándoos Mis signos, quienes temen a Alá y se enmiendan no tienen que temer y no estarán tristes.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@cmxc{Pero quienes hayan desmentido Nuestros signos y se hayan apartado altivamente de ellos, ésos morarán en el Fuego eternamente.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@cmxci{¿Hay alguien que sea más impío que quien inventa una mentira contra Alá o niega Sus signos? Ésos tendrán la suerte a que han sido destinados. Cuando, al fin, Nuestros enviados vengan a ellos para llamarles, dirán: «¿Dónde está lo que invocabais en lugar de invocar a Alá?» Ellos dirán: «¡Nos han abandonado!» Entonces, atestiguarán contra sí mismos su incredulidad.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@cmxcii{Dirá «¡Entrad en el Fuego a reuniros con las comunidades de genios y hombres que os han precedido!» Siempre que una comunidad entra, maldice a su hermana. Cuando, al fin, se encuentren allí todas, la última en llegar dirá de la primera: «¡Señor! Éstos son quienes nos extraviaron. Dóblales, pues, el castigo del Fuego». Dirá: «Todos reciben el doble. Pero vosotros no sabéis».\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@cmxciii{La primera de ellas dirá a la última: «No gozáis de ningún privilegio sobre nosotros. Gustad, pues, el castigo que habéis merecido».\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@cmxciv{A quienes hayan desmentido Nuestros signos y se hayan apartado altivamente de ellos, no se les abrirán las puertas del cielo ni entrarán en el Jardín hasta que entre un camello en el ojo de una aguja. Así retribuiremos a los pecadores.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@cmxcv{Tendrán la gehena por lecho y, por encima, cobertores. Así retribuiremos a los impíos.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@cmxcvi{Quienes creyeron y obraron bien- a nadie pedimos sino según sus posibilidades-. ésos morarán en el Jardín eternamente.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@cmxcvii{Extirparemos el rencor que quede en sus pechos. Fluirán arroyos a sus pies. Dirán: «¡Alabado sea Alá, Que nos ha dirigido acá! No habríamos sido bien dirigidos si no nos hubiera dirigido Alá. Los enviados de nuestro Señor bien que trajeron la Verdad». Y se les llamará: «Éste es el Jardín. Lo habéis heredado en premio a vuestras obras».\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@cmxcviii{Los moradores del Jardín llamarán a los moradores del Fuego: «Hemos encontrado que era verdad lo que nuestro Señor nos había prometido. Y vosotros, ¿ habéis encontrado si era verdad lo que vuestro Señor os había prometido?» «¡Si!», dirán. Entonces, un voceador pregonará entre ellos: «¡Que la maldición de Alá caiga sobre los impíos.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@cmxcix{que desvían a otros del camino de Alá, deseando que sea tortuoso, y no creen en la otra vida!»\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@m{Hay entre los dos un velo. En los lugares elevados habrá hombres que reconocerán a todos por sus rasgos distintivos y que llamarán a los moradores del Jardín: «¡Paz sobre vosotros!» No entrarán en él, por mucho que lo deseen.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mi{Cuando sus miradas se vuelvan hacia los moradores del Fuego, dirán: «¡Señor! ¡No nos pongas con el pueblo impío»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mii{Y los moradores de los lugares elevados llamarán a hombres que reconozcan por sus rasgos distintivos. Dirán: «Lo que habéis acumulado y vuestra altivez no os han servido de nada.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@miii{¿Son éstos aquéllos de quienes jurabais que Alá no iba a apiadarse de ellos?» «¡Entrad en el Jardín! No tenéis que temer y no estaréis tristes».\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@miv{Los moradores del Fuego gritarán a los moradores del Jardín: «¡Derramad sobre nosotros algo de agua o algo de lo que Alá os ha proveído!» Dirán: «Alá ha prohibido ambas cosas a los infieles,\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mv{que tomaron su religión a distracción y juego, a quienes la vida de acá engañó». Hoy les olvidaremos, como ellos olvidaron que les llegaría este día y negaron Nuestros signos.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mvi{Les trajimos una Escritura, que explicamos detalladamente, con pleno conocimiento, como dirección y misericordia para gente que cree.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mvii{¿Esperan otra cosa que su cumplimiento? El día que se cumpla, los que antes la olvidaron dirán: «Los enviados de nuestro Señor bien que trajeron la Verdad ¿Tenemos ahora intercesores que intercedan por nosotros o se nos podría devolver y obraríamos de modo diferente al que obramos?» Se han perdido a sí mismos y se han esfumado sus invenciones.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mviii{Vuestro Señor es Alá, Que ha creado los cielos y la tierra en seis días. Luego, se ha instalado en el Trono. Cubre el día con la noche, que le sigue rápidamente. Y el sol, la luna y las estrellas, sujetos por Su orden. ¿No son Suyas la creación y la orden? ¡Bendito sea Alá, Señor del universo!\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mix{¡Invocad a vuestro Señor humilde y secretamente! Él no ama a quienes violan la ley.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mx{¡No corrompáis en la tierra después de reformada! ¡Invocadle con temor y anhelo! La misericordia de Alá está cerca de quienes hacen el bien.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mxi{Es Él quien envía los vientos como nuncios que preceden a Su misericordia. Cuando están cargados de nubes pesadas, las empujamos a un país muerto y hacemos que llueva en él y que salgan, gracias al agua, frutos de todas clases. Así haremos salir a los muertos. Quizás así, os dejéis amonestar.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mxii{La vegetación de un país bueno sale con la ayuda de su Señor, mientras que de un país malo sale pero escasa. Así explicamos los signos a gente que agradece.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mxiii{Enviamos Noé a su pueblo. Dijo: «¡Pueblo! ¡Servid a Alá! No tenéis a ningún otro dios que a Él. Temo por vosotros el castigo de un día terrible».\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mxiv{Los dignatarios de su pueblo dijeron: «Sí, vemos que estás evidentemente extraviado».\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mxv{Dijo: «¡Puebla! No estoy extraviado, antes bien he sido enviado por el Señor del universo.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mxvi{Os comunico los mensajes de mi Señor y os aconsejo bien. Y sé por Alá lo que vosotros no sabéis.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mxvii{¿Os maravilláis de que os haya llegado una amonestación de vuestro Señor, por medio de un hombre salido de vosotros, para advertiros y para que temáis a Alá y, quizás, así, se os tenga piedad?»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mxviii{Pero le desmintieron. Así, pues, les salvamos, a él y a quienes estaban con él en la nave, y anegamos a quienes habían desmentido Nuestros signos. Eran, en verdad, un pueblo ciego.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mxix{Y a los aditas su hermano Hud. Dijo: «¡Pueblo! ¡Servid a Alá! No tenéis a ningún otro dios que a Él. ¿No vais a temerle?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mxx{Los dignatarios de su pueblo, que no creían, dijeron: «Vemos que estás tonto y, sí, creemos que eres de los que mienten».\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mxxi{Dijo: «¡Pueblo! No estoy tonto. Antes bien, he sido enviado por el Señor del universo.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mxxii{Os comunico los mensajes de mi Señor y os aconsejo fielmente.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mxxiii{¿Os maravilláis de que os haya llegado una amonestación de vuestro Señor por medio de un hombre salido de vosotros para advertiros? Y recordad cuando os hizo sucesores después del pueblo de Noé y os hizo corpulentos. ¡Recordad, pues, los beneficios de Alá! Quizás, así, prosperéis».\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mxxiv{Dijeron: «¿Has venido a nosotros para que sirvamos a Alá Solo y renunciemos a aquéllos que nuestros padres servían? Tráenos, pues, aquello con que nos amenazas, si es verdad lo que dices».\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mxxv{Dijo: «¡Que la indignación y la ira de vuestro Señor caigan sobre vosotros! ¿Disputaréis conmigo sobre los nombres que habéis puesto, vosotros y vuestros padres? Alá no les ha conferido ninguna autoridad. ¡Y esperad! Yo también soy de los que esperan».\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mxxvi{Así, pues, salvamos a él y a los que con él estaban por una misericordia venida de Nosotros. Y extirpamos a quienes habían desmentido Nuestros signos y no eran creyentes.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mxxvii{Y a los tamudeos su hermano Salih. Dijo: «¡Pueblo! ¡Servid a Alá! No tenéis a ningún otro dios que a Él. Os ha venido de vuestro Señor una prueba: es la camella de Alá, que será signo para vosotros, ¡Dejadla que pazca en la tierra de Alá y no le hagáis mal! Si no, os alcanzará un castigo doloroso.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mxxviii{Recordad cuando os hizo sucesores, después de los aditas y os estableció en la tierra. Edificasteis palacios en las llanuras y excavasteis casas en las montañas. Recordad los beneficios de Alá y no obréis mal en la tierra corrompiendo».\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mxxix{Los dignatarios de su pueblo, altivos, dijeron a los débiles que habían creído: «¿Sabéis si Salih ha sido enviado por su Señor?». Dijeron: «Creemos en el mensaje que se le ha confiado».\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mxxx{Los altivos dijeron: «Pues nosotros no creemos en lo que vosotros creéis».\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mxxxi{Y desjarretaron la camella e infringieron la orden de su Señor, diciendo: «¡Salih! ¡Tráenos aquello con que nos amenazas, si de verdad eres de los enviados!»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mxxxii{Les sorprendió el Temblor y amanecieron muertos en sus casas.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mxxxiii{Se alejó de ellos, diciendo: «Pueblo! Os he comunicado el mensaje de mi Señor y os he aconsejado bien, pero no amáis a los buenos consejeros».\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mxxxiv{Y a Lot. Cuando dijo a su pueblo: «¿Cometéis una deshonestidad que ninguna criatura ha cometido antes?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mxxxv{Ciertamente, por concupiscencia, os llegáis a los hombres en lugar de llegaros a las mujeres. ¡Sí, sois un pueblo inmoderado!»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mxxxvi{Lo único que respondió su pueblo fue: «¡Expulsadles de la ciudad! ¡Son gente que se las da de puros!»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mxxxvii{Y les salvamos, a él y a su familia, salvo a su mujer, que fue de los que se rezagaron.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mxxxviii{E hicimos llover sobre ellos una lluvia: ¡Y mira cómo terminaron los pecadores!\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mxxxix{Y a los madianitas su hermano Suayb. Dijo: «¡Pueblo! ¡Servid a Alá! No tenéis a ningún otro dios que a Él. Os ha venido, de vuestro Señor, una prueba. ¡Dad la medida y el peso justos, no defraudéis a los hombres en sus bienes! ¡No corrompáis en la tierra después de reformada! Eso es mejor para vosotros, si es que sois creyentes.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mxl{No acechéis en cada vía a quienes creen en Él, amenazándoles y desviándoles del camino de Alá, deseando que sea tortuoso. Y recordad, cuando erais pocos y Él os multiplicó. ¡Y mirad cómo terminaron los corruptores!\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mxli{Y si algunos de vosotros creen en el mensaje que se me ha confiado y otros no, tened paciencia hasta que Alá decida entre nosotros. Él es el Mejor en decidir».\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mxlii{Los dignatarios del pueblo, altivos, dijeron: «Hemos de expulsarte de nuestra ciudad, Suayb, y a los que contigo han creído, a menos que volváis a nuestra religión». Suayb dijo: «¿Aun si no nos gusta?\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mxliii{Inventaríamos una mentira contra Alá si volviéramos a vuestra religión después de habernos salvado Alá de ella. No podemos volver a ella, a menos que Alá nuestro Señor lo quiera. Nuestro Señor lo abarca todo en Su ciencia. ¡Confiamos en Alá! ¡Señor, falla según Justicia entre nosotros y nuestro pueblo! Tú eres Quien mejor falla».\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mxliv{Los dignatarios de su pueblo, que no creían, dijeron: «Si seguís a Suayb, estáis perdidos...»\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mxlv{Les sorprendió el Temblor y amanecieron muertos en sus casas.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mxlvi{Fue como si los que habían desmentido a Suayb no hubieran habitado en ellas. Los que habían desmentido a Suayb fueron los que perdieron.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mxlvii{Se alejó de ellos, diciendo: «¡Pueblo! Os he comunicado los mensajes de mi Señor y os he aconsejado bien. ¿Cómo voy a sentirlo ahora por gente infiel?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mxlviii{No enviamos a ningún profeta a ciudad que no infligiéramos a su población miseria y desgracia -quizás, así se humillaran-,\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mxlix{y que no cambiáramos, a continuación, el mal por el bien hasta que olvidaran lo ocurrido y dijeran: «La desgracia y la dicha alcanzaron también a nuestros padres». Entonces, nos apoderábamos de ellos por sorpresa sin que se apercibieran.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@ml{Si los habitantes de las ciudades hubieran creído y temido a Alá, habríamos derramado sobre ellos bendiciones del cielo y de la tierra, pero desmintieron y nos apoderamos de ellos por lo que habían cometido.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mli{¿Es que los habitantes de las ciudades están a salvo de que Nuestro rigor les alcance de noche, mientras duermen?\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mlii{¿O están a salvo los habitantes de las ciudades de que Nuestro rigor les alcance de día, mientras juegan?\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mliii{¿Es que están a salvo de la intriga de Alá? Nadie está a salvo de la intriga de Alá, sino los que pierden.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mliv{¿No hemos indicado a los que han heredado la tierra después de sus anteriores ocupantes que, si Nosotros quisiéramos. les afligiríamos por sus pecados, sellando sus corazones de modo que no pudieran oír?\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mlv{Ésas son las ciudades de las que te hemos contado algunas cosas. Vinieron a ellas sus enviados con las pruebas claras, pero no estaban para creer en lo que antes habían desmentido. Así sella Alá los corazones de los infieles.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mlvi{No hemos encontrado en la mayoría de ellos fidelidad a una alianza, pero si hemos encontrado que la mayoría son unos perversos.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mlvii{Luego, después de ellos, enviamos a Moisés con Nuestros signos a Faraón y a sus dignatarios, pero fueron injustos con ellos. ¡Y mira cómo terminaron los corruptores!\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mlviii{Moisés dijo: «Faraón! He sido enviado por el Señor del universo.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mlix{No debo decir nada contra Alá, sino la verdad. Os he traído una prueba clara de vuestro Señor. Deja marchar conmigo a los Hijos de Israel».\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mlx{Dijo: «Si has traído un signo, muéstralo, si es verdad lo que dices».\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mlxi{Tiró su vara y se convirtió en auténtica serpiente.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mlxii{Sacó su mano y he aquí que apareció blanca a los ojos de los presentes.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mlxiii{Los dignatarios del pueblo de Faraón dijeron: «Sí, éste es un mago entendido.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mlxiv{Quiere expulsaros de vuestra tierra ¿Qué ordenáis?»\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mlxv{Dijeron: «¡Dales largas, a él y a su hermano, y envía a las ciudades a agentes que convoquen,\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mlxvi{que te traigan a todo mago entendido!»\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mlxvii{Los magos vinieron a Faraón y dijeron: «Tiene que haber una recompensa para nosotros si vencemos».\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mlxviii{Dijo: «Sí, y seréis, ciertamente, de mis allegados».\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mlxix{Dijeron: «¡Moisés! ,Tiras tú o tiramos nosotros?»\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mlxx{Dijo: «¡Tirad vosotros!» Y, cuando tiraron fascinaron los ojos de la gente y les aterrorizaron. Vinieron con un encantamiento poderoso.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mlxxi{E inspiramos a Moisés: «¡Tira tu vara!» Y he aquí que ésta engulló sus mentiras.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mlxxii{Y se cumplió la Verdad y resultó inútil lo que habían hecho.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mlxxiii{Fueron, así, vencidos y se retiraron humillados.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mlxxiv{Los magos cayeron prosternados\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mlxxv{Dijeron: «Creemos en el Señor del universo,\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mlxxvi{el Señor de Moisés y de Aarón».\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mlxxvii{Faraón dijo: «¡Habéis creído en él antes de que yo os autorizara! Ésta es, ciertamente, una intriga que habéis urdido en la ciudad para sacar de ella a su población, pero vais a ver...\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mlxxviii{He de haceros amputar las manos y los pies opuestos. Luego he de haceros crucificar a todos».\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mlxxix{Dijeron: «Ciertamente, volveremos a nuestro Señor.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mlxxx{Te vengas de nosotros sólo porque hemos creído en los signos de nuestro Señor cuando han venido a nosotros. ¡Señor! Infunde en nosotros paciencia y haz que cuando muramos lo hagamos sometidos a Ti».\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mlxxxi{Los dignatarios del pueblo de Faraón dijeron: «¿Dejaréis que Moisés y su pueblo corrompan en el país y os abandonen, a ti a y a tus dioses?» Dijo: «Mataremos sin piedad a sus hijos varones y dejaremos con vida a sus mujeres. Les podemos».\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mlxxxii{Moisés dijo a su pueblo: «¡Implorad la ayuda de Alá y tened paciencia! La tierra es de Alá y se la da en herencia a quien Él quiere de Sus siervos. El fin es para los que temen a Alá».\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mlxxxiii{Dijeron: «Hemos sufrido antes de que tú vinieras a nosotros y luego de haber venido». Dijo: «Puede que vuestro Señor destruya a vuestro enemigo y os haga sucederles en la tierra para ver cómo actuáis».\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mlxxxiv{Infligimos al pueblo de Faraón años y escasez de frutos. Quizás así, se dejaran amonestar.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mlxxxv{Cuando les sonreía la fortuna, decían: «¡Esto es nuestro!». Pero, cuando les sucedía un mal, lo achacaban al mal agüero de Moisés y de quienes con él estaban. ¿Es que su suerte no dependía sólo de Alá? Pero la mayoría no sabían.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mlxxxvi{Dijeron: «Sea cual sea el signo que nos traigas para hechizarnos con él, no te creeremos».\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mlxxxvii{Enviamos contra ellos la inundación, las langostas, los piojos, las ranas y la sangre, signos inteligibles. Pero fueron altivos, eran gente pecadora.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mlxxxviii{Y, cuando cayó el castigo sobre ellos, dijeron: «¡Moisés! Ruega a tu Señor por nosotros en virtud de la alianza que ha concertado contigo. Si apartas el castigo de nosotros, creeremos, ciertamente, en ti y dejaremos que los Hijos de Israel partan contigo».\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mlxxxix{Pero, cuando retiramos el castigo hasta que se cumpliera el plazo que debían observar, he aquí que quebrantaron su promesa.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mxc{Nos vengamos de ellos anegándoles en el mar por haber desmentido Nuestros signos y por no haber hecho caso de ellos.\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@mxci{Y dimos en herencia al pueblo que había sido humillado las tierras orientales y las occidentales, que Nosotros hemos bendecido. Y se cumplió la bella promesa de tu Señor a los Hijos de Israel, por haber tenido paciencia. Y destruimos lo que Faraón y su pueblo habían hecho y lo que habían construido.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@mxcii{E hicimos que los Hijos de Israel atravesaran el mar y llegaron a una gente entregada al culto de sus ídolos. Dijeron: «¡Moisés! ¡Haznos un dios, como ellos tienen dioses!» «¡Sois un pueblo ignorante!», dijo.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@mxciii{«Aquello en que estas gentes están va a ser destruido y sus obras serán vanas».\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@mxciv{Dijo: «¿Voy a buscaros un dios diferente de Alá, siendo así que Él os ha distinguido entre todos los pueblos?»\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@mxcv{Y cuando os salvamos de las gentes de Faraón, que os sometían a duro castigo, matando sin piedad a vuestros hijos varones y dejando con vida a vuestras mujeres. Con esto os probó vuestro Señor duramente.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@mxcvi{Y nos dimos cita con Moisés durante treinta días, que completamos con otros diez. Así, la duración con su Señor fue de cuarenta días. Moisés dijo a su hermano Aarón: «Haz mis veces en mi pueblo, obra bien y no imites a los corruptores».\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@mxcvii{Cuando Moisés acudió a Nuestro encuentro y su Señor le hubo hablado, dijo: «¡Señor! ¡Muéstrate a mí, que pueda mirarte!» Dijo: «¡No Me verás! ¡Mira, en cambio, la montaña! Si continúa firme en su sitio, entonces Me verás». Pero, cuando su Señor se manifestó a la montaña, la pulverizó y Moisés cayó al suelo fulminando. Cuando volvió en si dijo: «¡Gloria a Ti! Me arrepiento y soy el primero de los que creen».\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@mxcviii{Dijo: «¡Moisés! Con Mis mensajes y con haberte hablado, te he escogido entre todos los hombres. ¡Coge, pues, lo que te doy y sé de los agradecidos!»\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@mxcix{Y le escribimos en las Tablas una exhortación sobre todo y una explicación detallada de todo. «Cógelas, pues, con fuerza y ordena a tu pueblo que coja lo mejor de ellas». Yo os haré ver la morada de los perversos.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@mc{Apartaré de Mis signos a quienes se ensoberbezcan sin razón en la tierra. Sea cual sea el signo que ven, no creen en él. Si ven el camino de la buena dirección, no lo toman como camino, pero si ven el camino del descarrío, sí que lo toman como camino. Y esto es así porque han desmentido Nuestros signos y no han hecho caso de ellos.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@mci{Vanas serán las obras de quienes desmintieron Nuestros signos y la existencia de la otra vida. ¿Podrán ser retribuidos por otra cosa que por lo que hicieron?\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@mcii{Y el pueblo de Moisés, ido éste, hizo un ternero de sus aderezos, un cuerpo que mugía. ¿Es que no vieron que no les hablaba ni les dirigía? Lo cogieron y obraron impíamente.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@mciii{Y, cuando se arrepintieron y vieron que se habían extraviado, dijeron: «Si nuestro Señor no se apiada de nosotros y nos perdona, seremos, ciertamente, de los que pierden».\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@mciv{Y, cuando Moisés regresó a su pueblo, airado y dolido, dijo: «¡Qué mal os habéis portado, luego de irme y dejaros! ¿Es que queréis adelantar el juicio de vuestro Señor?» Y arrojó las Tablas y, cogiendo de la cabeza a su hermano, lo arrastró hacia sí. Dijo: «¡Hijo de mi madre! La gente me ha humillado y casi me mata. ¡No hagas, pues, que los enemigos se alegren de mi desgracia! ¡No me pongas con el pueblo impío!»\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@mcv{Dijo: «¡Señor! ¡Perdónanos a mí y a mi hermano, e introdúcenos en Tu misericordia! Tú eres la Suma Misericordia».\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@mcvi{A quienes cogieron el ternero les alcanzará la ira de su Señor y la humillación en la vida de acá. Así retribuiremos a los que inventan.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@mcvii{Con quienes, habiendo obrado mal, luego se arrepientan y crean, tu Señor será, sí, indulgente, misericordioso.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@mcviii{Cuando se calmó la ira de Moisés cogió las Tablas. Su texto contiene dirección y misericordia para quienes temen a su Señor.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@mcix{Moisés eligió de su pueblo a setenta hombres para asistir a Nuestro encuentro. Cuando les sorprendió el Temblor dijo: «¡Señor! Si hubieras querido, les habrías hecho perecer antes y a mí también. ¿Vas a hacernos perecer por lo que han hecho los tontos de nuestro pueblo? Esto no es más que una prueba Tuya, que Te sirve para extraviar o dirigir a quien quieres. ¡Tú eres nuestro Amigo! Perdónanos, pues, y apiádate de nosotros! Nadie perdona tan bien como Tú.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@mcx{Destínanos bien en la vida de acá y en la otra. Nos hemos vuelto a Ti». Dijo: «Inflijo Mi castigo a quien quiero, pero Mi misericordia es omnímoda». Destinaré a ella a quienes teman a Alá y den el azaque y a quienes crean en Nuestros signos.\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@mcxi{a quienes sigan al Enviado, el Profeta de los gentiles, a quien ven mencionado en sus textos: en la Tora y en el Evangelio, que les ordena lo que está bien y les prohíbe lo que está mal, les declara lícitas las cosas buenas e ilícitas las impuras, y les libera de sus cargas y de las cadenas que sobre ellos pesaban. Los que crean en él, le sostengan y auxilien, los que sigan la Luz enviada abajo con él, ésos prosperarán.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@mcxii{Di: «¡Hombres Yo soy el Enviado de Alá a todos vosotros, de Aquél a Quien pertenece el dominio de los cielos y de la tierra. No hay más dios que Él. Él da la vida y da la muerte. ¡Creed, pues, en Alá y en su Enviado, el Profeta de los gentiles, que cree en Alá y en Sus palabras! ¡Y seguidle! Quizás, así, seáis bien dirigidos».\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@mcxiii{En el pueblo de Moisés había una comunidad que se dirigía según la Verdad, y que, gracias a ella, observaba la justicia.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@mcxiv{Los dividimos en doce tribus, como comunidades. Cuando el pueblo pidió agua a Moisés, inspiramos a éste «¡Golpea la roca con tu vara!». Y brotaron de ella doce manantiales. Todos sabían de cuál debían beber. Hicimos que se les nublara y les enviamos de lo alto el maná y las codornices: «¡Comed de las cosas buenas de que os hemos proveído.» Y no fueron injustos con Nosotros, sino que lo fueron consigo mismos.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@mcxv{Y cuando se les dijo: «Habitad en esta ciudad y comed cuanto queráis de lo que en ella haya. Decid '¡Perdón!' ¡Entrad por la puerta prosternándoos! Os perdonaremos vuestros pecados y daremos más a los que hagan el bien».\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@mcxvi{Pero los impíos de ellos cambiaron por otras las palabras ¡que se les habían dicho y les enviamos un castigo del cielo por haber obrado impíamente.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@mcxvii{Y pregúntales por aquella ciudad, a orillas del mar, cuyos habitantes violaban el sábado. Los sábados venían a ellos los peces a flor de agua y los otros días no venían a ellos. Les probamos así por haber obrado perversamente.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@mcxviii{Y cuando unos dijeron: «¿Por qué exhortáis a un pueblo que Alá va a hacer perecer o a castigar severamente?» Dijeron: «Para que vuestro Señor nos disculpe. Quizás, así teman a Alá».\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@mcxix{Y, cuando hubieron olvidado lo que se les había recordado, salvamos a quienes habían prohibido el mal e infligimos un mal castigo a los impíos, por haber obrado perversamente.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@mcxx{Y, cuando desatendieron las prohibiciones, les dijimos: «¡Convertíos en monos repugnantes!»\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@mcxxi{Y cuando tu Señor anunció que enviaría, ciertamente, contra ellos hasta el día de la Resurrección a gente que les impusiera un duro castigo. Ciertamente, tu Señor es rápido en castigar, pero también es indulgente, misericordioso.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@mcxxii{Los dividimos en la tierra en comunidades. De ellos, había unos que eran justos y otros que no. Les probamos con bendiciones e infortunios. Quizás, así, se convirtieran.\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@mcxxiii{Sus sucesores, habiendo heredado la Escritura, se apoderan de los bienes de este mundo, diciendo: «Ya se nos perdonará». Y si se les ofrecen otros bienes, semejantes a los primeros, se apoderan también de ellos. ¿No se concertó con ellos el pacto de la Escritura , según el cual no dirían nada contra Alá sino la verdad? Y eso que han estudiado cuanto en ella hay... Pero la Morada Postrera es mejor para quienes temen a Alá - ¿es que no razonáis?-,\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@mcxxiv{para los que se aferran a la Escritura y hacen la azalá. No dejaremos de remunerar a quienes obren bien.\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@mcxxv{Y cuando sacudimos la montaña sobre ellos como si hubiera sido un pabellón y creyeron que se les venía encima: «¡Coged con fuerza lo que os hemos dado y recordad bien su contenido! Quizás, así, temáis a Alá».\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@mcxxvi{Y cuando tu Señor sacó de los riñones de los hijos de Adán a su descendencia y les hizo atestiguar contra sí mismos: «¿No soy yo vuestro Señor?» Dijeron: «¡Claro que sí, damos fe!» No sea que dijerais el día de la Resurrección: «No habíamos reparado en ello».\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@mcxxvii{O que dijerais: «Nuestros padres eran ya asociadores y nosostros no somos más que sus descendientes. ¿Vas a hacernos perecer por lo que los falsarios han hecho?»\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@mcxxviii{Así explicamos las aleyas. Quizás así se conviertan.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@mcxxix{Cuéntales lo que pasó con aquél a quien dimos Nuestros signos y se deshizo de ellos. El Demonio le persiguió y fue de los descarriados.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@mcxxx{Si hubiéramos querido, le habríamos levantado con ellos. Pero se apegó a la tierra y siguió su pasión. Pasó con él como pasa con el perro: jadea lo mismo si le atacas que si le dejas en paz. Así es la gente que desmiente Nuestros signos. Cuéntales estas cosas. Quizás, así, reflexionen.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@mcxxxi{¡Qué mal ejemplo da la gente que desmiente Nuestros signos y es injusta consigo misma!\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@mcxxxii{Aquél a quien Alá dirige está en el buen camino. Aquéllos, en cambio, a quienes Él extravía, son los que pierden.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@mcxxxiii{Hemos creado para la gehena a muchos de los genios y de los hombres. Tienen corazones con los que no comprenden, ojos con los que no ven, oídos con los que no oyen. Son como rebaños. No, aún más extraviados. Esos tales son los que no se preocupan.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@mcxxxiv{Alá posee los nombres más bellos. Empléalos, pues, para invocarle y apártate de quienes los profanen, que serán retribuidos con arreglo a sus obras.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@mcxxxv{Entre nuestras criaturas hay una comunidad que se dirige según la Verdad y que, gracias a ella, observa la justicia.\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@mcxxxvi{A quienes desmientan Nuestos signos les conduciremos paso a paso, sin que sepan como.\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@mcxxxvii{Y les concedo una prórroga. Mi estratagema es segura.\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@mcxxxviii{¿No reflexionan? Su paisano no es un poseso. Es sólo un monitor que habla claro.\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@mcxxxix{¿No han considerado el reino de los cielos y de la tierra y todo lo que Alá ha creado? ¿Y que tal vez se acerque su fin? ¿En qué anuncio, después de éste, van a creer?\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@mcxl{Aquél a quien Alá extravía, no podrá encontrar quien le dirija. Él les dejará que yerren ciegos en su rebeldía.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@mcxli{Te preguntan por la Hora: «¿Cuándo llegará?» Di: «Sólo mi Señor tiene conocimiento de ella. Nadie sino Él la manifestará a su tiempo. Abruma en los cielos y en la tierra. No vendrá a vosotros sino de repente»,. Te preguntan a ti como si estuvieras bien enterado. Di: «Sólo Alá tiene conocimiento de ella». Pero la mayoría de los hombres no saben.\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@mcxlii{Di: «Yo no dispongo de nada que pueda aprovecharme o dañarme sino tanto cuanto Alá quiera. Si yo conociera lo oculto, abundaría en bienes y no me alcazaría el mal. Pero no soy sino un monitor, un nuncio de buenas nuevas para gente que cree».\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@mcxliii{Él es Quien os ha creado de una sola persona, de la que ha sacado a su cónyuge para que encuentre quietud en ella. Cuando yació con ella, ésta llevó una carga ligera, con la que iba de acá para allá; pero cuando se sintió pesada, invocaron ambos a Alá, su Señor. «Si nos das un hijo bueno, seremos, ciertamente, de los agradecidos.\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@mcxliv{Pero, cuando les dio uno bueno, pusieron a Alá asociados en lo que Él les había dado. ¡Y Alá está por encima de lo que Le asocian!\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@mcxlv{¿Le asocian dioses que no crean nada -antes bien, ellos mismos han sido creados-\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@mcxlvi{y que no pueden ni auxiliarles a ellos ni auxiliarse a sí mismos?\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@mcxlvii{Si les llamáis a la Dirección, no os siguen. Les da lo mismo que les llaméis o no.\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@mcxlviii{Aquéllos a quienes invocáis, en lugar de invocar a Alá, son siervos como vosotros. ¡Invocadles, pues, y que os escuchen, si es verdad lo que decís...!\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@mcxlix{¿Tienen pies para andar, manos para asir, ojos para ver, oídos para oír? Di: «¡Invocad a vuestros asociados y urdid algo contra mí! ¡No me hagáis esperar!\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@mcl{Mi amigo es Alá, Que ha revelado la Escritura y Que elige a los justos como amigos.\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@mcli{Y los que vosotros invocáis, en lugar de invocarle a Él, no pueden auxiliaros a vosotros ni auxiliarse a sí mismos».\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@mclii{¡Si les llamáis a la Dirección, no oyen. Les ves que te miran sin verte.\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@mcliii{¡Sé indulgente, prescribe el bien y apártate de los ignorantes!\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@mcliv{Si el Demonio te incita al mal, busca refugio en Alá. Él todo lo oye, todo lo sabe.\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@mclv{Cuando los que temen a Alá sufren una aparición del Demonio, se dejan amonestar y ven claro.\qt@no{(201)}}
+\qt@newcmd\qurantrans@es@mclvi{A sus hermanos, en cambio, persisten en mantenerles descarriados.\qt@no{(202)}}
+\qt@newcmd\qurantrans@es@mclvii{Y si no les traes un signo, dicen: «¡Cómo! ¿Por qué no te has escogido uno?» Di: «Yo no hago más que seguir lo que mi Señor me revela». Ésas son pruebas visibles de vuestro Señor, dirección y misericordia para gente que cree.\qt@no{(203)}}
+\qt@newcmd\qurantrans@es@mclviii{Y, cuando se recite el Corán, ¡escuchadlo en silencio! Quizás así se os tenga piedad.\qt@no{(204)}}
+\qt@newcmd\qurantrans@es@mclix{Invoca a tu Señor en tu interior, humilde y temerosamente, a media voz, mañana y tarde, y no seas de los despreocupados.\qt@no{(205)}}
+\qt@newcmd\qurantrans@es@mclx{Los que están junto a tu Señor no tienen a menos servirle. Le glorifican y se prosternan ante Él.\qt@no{(206)}}
+\qt@newcmd\qurantrans@es@mclxi{\basmalahes Te preguntan por el botín. Di: «El botín pertenece a Alá y al Enviado». ¡Temed, pues, a Alá! ¡Manteneos en paz! ¡Obedeced a Alá y a Su Enviado si sois creyentes!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mclxii{Son creyentes sólo aquéllos cuyos corazones tiemblan a la mención de Alá, que, cuando se les recitan Sus aleyas, éstas aumentan su fe, que confían en su Señor,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mclxiii{que hacen la azalá y dan limosna de lo que les hemos proveído.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mclxiv{Éstos son los creyentes de verdad. Gozarán de elevada categoría junto a su Señor, de perdón y generoso sustento.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mclxv{Igual que algunos creyentes se oponían cuando tu Señor te sacaba con razón de tu casa,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mclxvi{así ahora disputan contigo sobre la Verdad, luego de haberse ésta mostrado claramente, como si fueran arrastrados a la muerte, conscientes de ello.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mclxvii{Y cuando Alá os prometió que uno de los dos grupos caería en vuestro poder y deseasteis que fuera el inerme, cuando lo que Alá quería era hacer triunfar la Verdad con Sus palabras y extirpar a los infieles,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mclxviii{para hacer triunfar la Verdad y aniquilar lo falso, a despecho de los pecadores.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mclxix{Cuando pedisteis auxilio a vuestro Señor y Él os escuchó: «Os reforzaré con mil ángeles uno tras otro».\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mclxx{Alá no lo hizo sino como buena nueva y para que se tranquilizaran vuestros corazones con ello. La victoria no viene sino de Alá. Alá es poderoso, sabio.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mclxxi{Cuando hizo que os entrara sueño, para daros sensación de seguridad venida de Él, e hizo que bajara del cielo agua para purificaros con ella y alejar la mancha del Demonio, para reanimaros y afirmar así vuestros pasos.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mclxxii{Cuando vuestro Señor inspiró a los ángeles: «Yo estoy con vosotros. ¡Confirmad, pues, a los que creen! Infundiré el terror en los corazones de quiens no crean. ¡Cortadles del cuello, pegadles en todos los dedos!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mclxxiii{Es que se habían separado de Alá y de Su Enviado... Y quien se separa de Alá y de Su Enviado... Alá castiga severamente.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mclxxiv{¡Ahí tenéis! ¡Gustadlo! Y que los infieles tendrán el castigo del Fuego.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mclxxv{¡Creyentes! Cuando os encontréis con los infieles marchando, ¡no les volváis la espalda!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mclxxvi{Quien ese día les vuelva la espalda -a menos que sea que se destaque para acudir a otro combate o para incorporarse a otra tropa- incurrirá en la ira de Alá y tendrá la gehena por morada. ¡Qué mal fin...!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mclxxvii{No erais vosotros quienes les mataban, era Alá Quien les mataba. Cuando tirabas, no eras tú quien tiraba, era Alá Quien tiraba, para hacer experimentar a los creyentes un favor venido de Él. Alá todo lo oye, todo lo sabe.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mclxxviii{¡Ahí tenéis! Y que Alá hará fracasar la artimaña de los infieles.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mclxxix{«Si buscáis un fallo, ahí lo tenéis. Más os valdría renunciar a vuestra hostilidad. Y, si reanudáis la lucha, Nosotros también la reanudaremos y vuestras huestes no os servirán de nada, por numerosas que sean. ¡Alá está con los creyentes!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mclxxx{«¡Creyentes! ¡Obedeced a Alá y a Su Enviado! ¡No le volváis la espalda mientras oís...!»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mclxxxi{No hagáis como los que dicen: «¡Ya hemos oído!», sin haber oído.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mclxxxii{Los seres peores, para Alá, son los sordomudos, que no razonan.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mclxxxiii{Si Alá hubiera reconocido en ellos bien, les habría concedido la facultad de oír. Pero, aun así, habrían vuelto la espalda y se habrían apartado.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mclxxxiv{¡Creyentes! ¡Escuchad a Alá y al Enviado cuando éste os llama a algo que os da la vida! ¡Sabed que Alá se interpone entre el hombre y su corazón y que seréis congregados hacia Él!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mclxxxv{¡Guardaos de una tentación que no alcanzará exclusivamente a aquéllos de vosotros que sean impíos! ¡Sabed que Alá castiga severamente!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mclxxxvi{¡Y recordad cuando erais pocos, oprimidos en el país, temerosos de que la gente os capturara! Entonces, os procuró refugio, os fortaleció con Su auxilio y os proveyó de cosas buenas. Quizás, así, fuerais agradecidos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mclxxxvii{¡Creyentes! ¡No traicionéis a Alá y a Enviado! ¡No traicionéis, a sabiendas, la confianza puesta en vosotros!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mclxxxviii{Sabed que vuestra hacienda y vuestros hijos constituyen una tentación, pero también que Alá tiene junto a Sí una magnífica recompensa.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mclxxxix{¡Creyentes! Si teméis a Alá, Él os concederá un Criterio, borrará vuestras malas obras y os perdonará. Alá es el Dueño del favor inmenso.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcxc{Y cuando los infieles intrigaban contra ti para capturarte, matarte o expulsarte. Intrigaban ellos e intrigaba Alá, pero Alá es el Mejor de los que intrigan.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcxci{Y cuando se les recitaban Nuestras aleyas, decían: «¡Ya hemos oído! Si quisiéramos, diríamos algo parecido. Éstas no son sino patrañas de los antiguos».\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcxcii{Y cuando decían: «¡Alá! Si es esto la Verdad que de Ti procede, haz que nos lluevan piedras del cielo o inflígenos un castigo doloroso».\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcxciii{Pero Alá no les iba a castigar estando tú en medio de ellos. Alá no les iba a castigar mientras ellos pedían perdón.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcxciv{Y ¿por qué no va Alá a castigarles, si apartan de la Mezquita Sagrada? Ni tampoco son amigos de Él. Sólo son amigos Suyos los que Le temen, pero la mayoría no saben.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcxcv{Su azalá en la Casa no consiste más que en silbidos y palmas. «¡Gustad, pues, el castigo merecido por no haber creído!»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcxcvi{Los infieles gastan su hacienda en desviar a otros del camino de Alá. La gastarán y, después, se lamentarán. Luego, serán vencidos. Y los infieles serán congregados hacia la gehena.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcxcvii{para que Alá distinga al malo del bueno, coloque a los malos unos encima de otros, los amontone a todos y los eche a la gehena. Ésos serán los que pierdan.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcxcviii{Di a los infieles que, si cesan, se les perdonará lo pasado; pero que, si reinciden, seguirán la suerte de los antiguos.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcxcix{Combatid contra ellos hasta que dejen de induciros a apostatar y se rinda todo el culto a Alá. Si cesan, Alá ve bien lo que hacen.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcc{Y, si vuelven la espalda, sabed que Alá es vuestro Protector. ¡Es un protector excelente, un auxiliar excelente!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcci{Sabed que, si obtenéis algún botín un quinto corresponde a Alá, al Enviado y a sus parientes, a los huérfanos, a los pobres y al viajero, si creéis en Alá y en lo que hemos revelado a Nuestro siervo el día del Criterio, el día que se encontraron los dos ejércitos. Alá es omnipotente.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mccii{Cuando estabais en la ladera más próxima y ellos en la más lejana, mientras que la caravana estaba más baja que vosotros. Si hubierais intentado daros cita, no os habríais puesto de acuerdo sobre ella, pero para que Alá decidiera algo que debía hacerse. Para que, ante una prueba clara, pereciera quien debía perecer y, ante una prueba clara, sobreviviera quien debía sobrevivir. Alá todo lo oye, todo lo sabe.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcciii{Cuando, en tu sueño, Alá te los mostró poco numerosos; que, si te los hubiera mostrado numerosos, os habríais desanimado y habríais discutido sobre el particular, pero Alá os preservó. Él sabe bien lo que encierran los pechos.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcciv{Y cuando Alá, al iniciarse el encuentro, os los mostró poco numerosos a vuestros ojos, igual que os empequeñeció a sus ojos, para que Alá decidiera algo que debía hacerse. Y todo será devuelto a Alá.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mccv{¡Creyentes! Cuando encontréis a una tropa ¡manteneos firmes y recordad mucho a Alá! ¡Quizás, así, consigáis la victoria!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mccvi{¡Y obedeced a Alá y a Su Enviado! ¡No discutáis! Si no, os desanimaréis y se enfriará vuestro ardor. ¡Tened paciencia, que Alá está con los pacientes!\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mccvii{No seáis como los que salieron de sus casas con pompa y ostentación, desviando a otros del camino de Alá. Alá abarca lo que hacen.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mccviii{Y cuando el Demonio engalanó sus obras y dijo: «¡Nadie podrá venceros hoy, yo os protejo!» Pero, cuando las dos tropas se divisaron, dio media vuelta y dijo: «Yo no soy responsable de vosotros. Veo lo que vosotros no veis. Temo a Alá. Alá castiga severamente».\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mccix{Cuando los hipócritas y los enfermos de corazón dijeron: «A éstos les ha engañado su religión». Pero quien confía en Alá... Alá es poderoso, sabio.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mccx{Si pudieras ver cuando los ángeles llamen a los que no han creído, golpeándoles en el rostro y en la espalda. Y: «¡Gustad el castigo del fuego de la gehena\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mccxi{por las obras que habéis cometido, que Alá no es injusto con Sus siervos!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mccxii{Como ocurrió a la gente de Faraón y a los que les precedieron: no creyeron en los signos de Alá y Alá les castigó por sus pecados. Alá es fuerte, castiga severamente.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mccxiii{Esto es así porque Alá no modifica la gracia que dispensa a un pueblo mientras éste no cambie lo que en sí tiene. Alá todo lo oye, todo lo sabe.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mccxiv{Como ocurrió a la gente de Faraón y a los que les precedieron: desmintieron los signos de su Señor y les hicimos perecer por sus pecados. Anegamos a la gente de Faraón: todos eran impíos.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mccxv{Los seres peores, para Alá, son los que, habiendo sido infieles en el pasado, se obstinan en su incredulidad,\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mccxvi{que, habiendo tú concertado una alianza con ellos, la violan a cada momento sin temer a Alá.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mccxvii{Si, pues, das con ellos en la guerra, que sirva de escarmiento a los que les siguen. Quizás, así, se dejen amonestar.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mccxviii{Si temes una traición por parte de una gente, denuncia, con equidad, la alianza con ella. Alá no ama a los traidores.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mccxix{¡Que no crean los infieles que van a escapar! ¡No podrán!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mccxx{¡Preparad contra ellos toda la fuerza, toda la caballería que podáis para amedrentar al enemigo de Alá y vuestro y a otros fuera de ellos, que no conocéis pero que Alá conoce! Cualquier cosa que gastéis por la causa de Alá os será devuelta, sin que seáis tratados injustamente.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mccxxi{Si, al contrario, se inclinan hacia la paz, ¡inclínate tú también hacia ella! ¡Y confía en Alá! Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mccxxii{Si quieren engañarte, debe Alá bastarte. Él es Quien te ha fortalecido con Su auxilio y con los creyentes.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mccxxiii{cuyos corazones Él ha reconciliado. Tú, aunque hubieras gastado todo cuanto hay en la tierra, no habrías sido capaz de reconciliar sus corazones. Alá, en cambio, los ha reconciliado. Es poderoso, sabio.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mccxxiv{¡Profeta! ¡Que Alá te baste! ¡Y a los creyentes que te han seguido!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mccxxv{¡Profeta! ¡Anima a los creyentes al combate! Si hay entre vosotros veinte hombres tenaces, vencerán a doscientos. Y si cien, vencerán a mil infieles, pues éstos son gente que no comprende.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mccxxvi{Ahora, Alá os ha aliviado. Sabe que sois débiles. Si hay entre vosotros cien hombres tenaces, vencerán a docientos. Y si mil, vencerán a dos mil, con permiso de Alá. Alá está con los tenaces.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mccxxvii{No está bien que un profeta tenga cautivos mientras no someta en la tierra. Vosotros queréis lo que la vida de acá ofrece, en tanto que Alá quiere la otra vida. Alá es poderoso, sabio.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mccxxviii{Si no llega a ser por una prescripción previa de Alá, habríais sufrido un castigo terrible por haberos apoderado de aquello.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mccxxix{¡Tomad del botín hecho lo lícito, lo bueno! ¡Y temed a Alá! Alá es indulgente, misericordioso.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mccxxx{¡Profeta! Di a los cautivos que tengáis en vuestro poder: «Si Alá encuentra bien en vuestros corazones, os dará algo mejor de lo que se os ha quitado y os perdonará. Alá es indulgente, misericordioso».\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mccxxxi{Y si quieren traicionarte, ya antes traicionaron a Alá. Y Él ha dado poder sobre ellos. Alá es omnisciente, sabio.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mccxxxii{Los creyentes que emigraron y combatieron con su hacienda y sus personas por la causa de Alá y los que les dieron refugio y auxilio, ésos son amigos unos de otros. Los creyentes que no emigraron no serán nada amigos hasta tanto que emigren. Si os piden que les auxiliéis en nombre de la religión, debéis auxiliarles, a menos que se trate de ir contra gente con la que os una un pacto. Alá ve bien lo que hacéis.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mccxxxiii{Los infieles son amigos unos de otros. Si no obráis así, habrá en la tierra desorden y gran corrupción.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mccxxxiv{Los creyentes que emigraron y lucharon por Alá, y quienes les dieron refugio y auxilio, ésos son los creyentes de verdad. Tendrán perdón y generoso sustento.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mccxxxv{Quienes, después, creyeron, emigraron y combatieron con vosotros, ésos son de los vuestros. Con todo, y según la Escritura de Alá, los unidos por lazos de consanguinidad están más cerca unos de otros. Alá es omnisciente.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mccxxxvi{\basmalahes Denuncia por Alá y Su Enviado de la alianza que habéis concertado con los asociadores:\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mccxxxvii{«Circulad por la tierra durante cuatro meses. Pero sabed que no podréis escapar de Alá y que Alá llenará de vergüenza a los infieles».\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mccxxxviii{Proclama de Alá y Su Enviado, dirigida a los hombres el día de la peregrinación mayor. «Alá no es responsable de los asociadores, y Su Enviado tampoco. Si os arrepentís será mejor para vosotros. Pero, si volvéis la espalda, sabed que no escaparéis de Alá». ¡Anuncia a los infieles un castigo doloroso!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mccxxxix{Se exceptúan los asociadores con quienes habéis concertado una alianza y no os han fallado en nada ni han ayudado a nadie contra vosotros. Respetad vuestra alianza con ellos durante el plazo convenido. Alá ama a quienes Le temen.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mccxl{Cuando hayan transcurrido los meses sagrados, matad a los asociadores dondequiera que les encontréis. ¡Capturadles! ¡Sitiadles! ¡Tendedles emboscadas por todas partes! Pero si se arrepienten, hacen la azalá y dan el azaque, entonces ¡dejadles en paz! Alá es indulgente, misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mccxli{Si uno de los asociadores te pide protección concédesela, para que oiga la Palabra de Alá. Luego, facilítale la llegada a un lugar en que esté seguro. Es que son gente que no sabe.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mccxlii{¿Cómo podrán los asociadores concertar una alianza con Alá y con Su Enviado, a no ser aquéllos con quienes concertasteis una alianza junto a la Mezquita Sagrada? Mientras cumplan con vosotros, cumplid con ellos. Alá ama a quienes Le temen.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mccxliii{¿Cómo si, cuando os vencen, no respetan alianza ni compromiso con vosotros? Os satisfacen con la boca, pero sus corazones se oponen y la mayoría son unos perversos.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mccxliv{Han malvendido los signos de Alá y han desviado a otros de Su camino. ¡Qué detestable es lo que han hecho!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mccxlv{No respetan alianza ni compromiso con el creyente. ¡ ésos son los que violan la ley!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mccxlvi{Pero si se arrepienten, hacen la azalá y dan el azaque, entonces serán vuestros hermanos en religión. Exponemos claramente las aleyas a gente que sabe.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mccxlvii{Pero, si violan sus juramentos después de haber concluido una alianza y atacan vuestra religión, combatid contra los jefes de la incredulidad. No respetan ningún juramento. Quizás, así, desistan.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mccxlviii{¿Cómo no vais a combatir contra gente que ha violado su juramento, que hubiera preferido expulsar al Enviado y os atacó primero? ¿Les tenéis miedo, siendo así que Alá tiene más derecho a que Le tengáis miedo? Si es que sois creyentes...\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mccxlix{¡Combatid contra ellos! Alá le castigará a manos vuestras y les llenará de vergüenza, mientras que a vosotros os auxiliará contra ellos, curando así los pechos de gente creyente\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mccl{y desvaneciendo la ira de sus corazones. Alá se vuelve hacia quien Él quiere. Alá es omnisciente, sabio.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mccli{¿O es que habéis creído que se os iba a dejar en paz y que Alá aún no conoce a quienes de vosotros han combatido sin trabar amistad con nadie, fuera de Alá, de Su Enviado y de los creyentes? Alá está bien informado de lo que hacéis.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mcclii{Los asociadores no deben cuidar del mantenimiento de las mezquitas de Alá, siendo testigos contra sí mismos de su incredulidad. Ésos, ¡qué vanas son sus obras! ¡Estarán en el Fuego eternamente!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mccliii{.Que sólo cuide del mantenimiento de las mezquitas de Alá quien crea en Alá y en el último Día, haga la azalá, dé el azaque y no tenga miedo sino de Alá. Quizás ésos sean de los bien dirigidos...\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mccliv{¿Vais a comparar al que da de beber a los peregrinos y cuida del mantenimiento de la Mezquita Sagrada con el que cree en Alá y en el último Día y lucha por Alá? No son iguales para Alá. Alá no dirige al pueblo impío.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mcclv{Quienes crean, emigren y luchen por Alá con su hacienda y sus personas tendrán una categoría más elevada junto a Alá. Ésos serán los que triunfen.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mcclvi{Su Señor les anuncia Su misericordia y satisfacción, así, como jardines en los que gozarán de delicia sin fin,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mcclvii{en los que estarán eternamente, para siempre. Alá tiene junto a Sí una magnífica recompensa.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mcclviii{¡Creyentes! No toméis como amigos a vuestros padres y a vuestros hermanos si prefieren la incredulidad a la fe. Quienes de vosotros les consideran amigos, ésos son los impíos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mcclix{Di: «Si preferís vuestros padres, vuestros hijos varones, vuestros hermanos, vuestras esposas, vuestra tribu, la hacienda que habéis adquirido, un negocio por cuyo resultado teméis y casas que os placen, a Alá y a Su Enviado y a la lucha por Su causa, esperad a que venga Alá con Su orden...» Alá no dirige al pueblo perverso.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mcclx{Alá os ha ayudado a vencer en muchos sitios. Y el día de Hunayn, cuando, complacidos por vuestro gran número, éste no os sirvió de nada; cuando la tierra, a pesar de su vastedad, os resultó angosta y volvisteis la espalda para huir.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcclxi{Alá, entonces, envió de los alto Su sakina sobre Su Enviado y sobre los creyentes. Hizo también descender legiones invisibles a vuestros ojos y castigó a los que no creían. Ésa es la retribución de los infieles.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mcclxii{Pero, después de eso, Alá se volverá hacia quien Él quiera. Alá es indulgente, misericordioso.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mcclxiii{¡Creyentes! Los asociadores son mera impureza. ¡Que no se acerquen, pues, a la Mezquita Sagrada después de este su año! Si teméis escasez, Alá os enriquecerá por favor Suyo, si quiere. Alá es omnisciente, sabio.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mcclxiv{¡Combatid conta quienes, habiendo recibido la Escritura, no creen en Alá ni en el último Día, ni prohíben lo que Alá y Su Enviado han prohibido, ni practican la religión verdadera, hasta que, humillados, paguen el tributo directamente!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcclxv{Los judíos dicen: «Uzayr es el hijo de Alá». Y los cristianos dicen: «El Ungido es el hijo de Alá». Eso es lo que dicen de palabra. Remedan lo que ya antes habían dicho los infieles. ¡Que Alá les maldiga! ¡Cómo pueden ser tan desviados!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcclxvi{Han tomado a sus doctores y a sus monjes, así como al Ungido, hijo de María, como señores, en lugar de tomar a Alá cuando las órdenes que habían recibido no eran sino de servir a un Dios Uno. ¡No hay más dios que Él! ¡Gloria a Él! ¡Está por encima de lo que Le asocian!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcclxvii{Quisieran apagar de un soplo la Luz de Alá pero Alá no desea sino que resplandezca, a despecho de los infieles.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcclxviii{Él es Quien ha mandado a Su Enviado con la Dirección y con la religión verdadera para que, a despecho de los asociadores, prevalezca sobre toda otra religión.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcclxix{¡Creyentes! Muchos doctores y monjes devoran, sí, la hacienda ajena injustamente, desviando a otros del camino de Alá. A quienes atesoran oro y plata y no lo gastan por la causa de Alá, anúnciales un castigo doloroso,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcclxx{el día que esos metales se pongan candentes en el fuego de la gehena y sus frentes, costados y espaldas sean marcados con ellos: «Esto es lo que atesorabais para vosotros. ¡Gustad, pues, lo que atesorabais!»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcclxxi{El número de meses, para Alá, es de doce. Fueron inscritos en la Escritura de Alá el día que creó los cielos y la tierra. De ellos, cuatro son sagrados: ésa es la religión verdadera. ¡No seáis injustos con vosotros mismos no respetándolos! ¡Y combatid todos contra los asociadores como ellos también combaten todos contra vosotros! Y sabed que Alá está con los que Le temen.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcclxxii{El mes intercalar no significa más que un incremento en la incredulidad, con la que se extravían los infieles. Lo declaran profano un año y sagrado otro año, para estar de acuerdo con el número de lo que Alá ha declarado sagrado, declarando así profano lo que Alá ha declarado sagrado. La malicia de sus obras ha sido engalanada, pero Alá no dirige al pueblo infiel.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcclxxiii{¡Creyentes! ¿Qué os pasa? ¿Por qué, cuando se os dice: «¡Id a la guerra por la causa de Alá!» permanecéis clavados en tierra? ¿Preferís la vida de acá a la otra? Y ¿qué es el breve disfrute de la vidad de acá comparado con la otra, sino bien poco...?\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcclxxiv{Si no vais a la guerra, os infligirá un doloroso castigo. Hará que otro pueblo os sustituya, sin que podáis causarle ningún daño. Alá es omnipotente.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcclxxv{Si le negáis auxilio, Alá sí que le auxilió cuando, expulsado por los infieles, con un solo compañero, le decía a éste estando los dos en la cueva: «¡No estés triste! ¡Alá está con nosotros!» Alá hizo descender sobre él Su sakina y le reforzó con legiones invisibles a vuestros ojos. Alá puso Su Palabra por encima de la palabra de los infieles.. Alá es poderoso, sabio.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcclxxvi{¡Id a la guerra, tanto si os es fácil como si os es difícil! ¡Luchad por Alá con vuestra hacienda y vuestras personas! Es mejor para vosotros. Si supierais...\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mcclxxvii{Si se hubiera tratado de una ventaja inmediata o de un viaje corto, te habrían seguido, pero el objetivo les ha parecido distante. Jurarán por Alá: «Si hubiéramos podido, os habríamos acompañado a la guerra». Se pierden a sí mismos. Alá sabe que mienten.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcclxxviii{¡Que Alá te perdone! ¿Por qué les has dispensado antes de haber distinguido a los sinceros de los que mienten?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcclxxix{Quienes creen en Alá y en el último Día no te piden dispensa cuando de luchar con su hacienda y sus personas se trata. Alá conoce bien a quienes Le temen.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mcclxxx{Sólo te piden dispensa quienes no creen en Alá y en el último Día, aquéllos cuyos corazones están llenos de dudas y que, por dudar, vacilan.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mcclxxxi{Si hubieran querido ir a la guerra, se habrían preparado para ello, pero Alá no ha aprobado su marcha. Les ha infundido pereza y se les ha dicho: «¡Quedaos con los que se quedan!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mcclxxxii{Si os hubieran acompañado a la guerra, no habrían hecho más que aumentar la confusión y habrían sembrado la desconfianza entre vosotros, buscando soliviantaros. Hay entre vosotros quienes dan oídos a lo que dicen, pero Alá conoce bien a los impíos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mcclxxxiii{Ya buscaron antes soliviantar y enredaron bien tus asuntos hasta que vino la Verdad y apareció la orden de Alá, a despecho de ellos.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mcclxxxiv{Hay entre ellos quien dice: «Dispénsame y no me tientes!» Pero ¿es que no han caído ya en la tentación? La gehena, ciertamente, cercará a los infieles.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mcclxxxv{Si te sucede algo bueno, les duele, y, si te aflige una desgracia, dicen: «¡Ya hemos tomado nuestras precauciones!» Y se van tan contentos...\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mcclxxxvi{Di: «Sólo podrá ocurrirnos lo que Alá nos haya predestinado. Él es nuestro Dueño. ¡Que los creyentes, pues, confíen en Alá!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mcclxxxvii{Di: «Qué podéis esperar para nosotros sino una de las dos contingencias más bellas?» Nosotros, en cambio, esperamos que Alá os aflija con un castigo venido de Él o a manos nuestras. ¡Esperad, pues! Nosotros también esperamos con vosotros.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mcclxxxviii{Di: «Da lo mismo que deis limosna a gusto o a disgusto, pues no se os ha de aceptar, ya que sois gente perversa».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mcclxxxix{Lo único que ha impedido que su limosna sea aceptada es que no creen en Alá ni en Su Enviado, no acuden a la azalá sino perezosamente y no dan limosna sino a disgusto.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mccxc{¡No te maravilles de su hacienda ni de sus hijos! Alá sólo quiere con ello castigarles en la vida de acá y que exhalen su último suspiro siendo infieles.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mccxci{Juran por Alá que son, sí, de los vuestros, pero no lo son, sino que son gente que tiene miedo.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mccxcii{Si encontraran un refugio o cuevas o algún sitio donde poder esconderse irían allá a toda prisa.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mccxciii{Algunos de ellos te critican a propósito de las limosnas. Si se les da de ellas, están contentos; si no se les da de ellas, se enfadan.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mccxciv{Si quedaran satisfechos de lo que Alá y Su Enviado les han dado y dijeran: «¡Alá nos basta! Alá nos dará de Su favor y Su Enviado también. ¡Deseamos ardientemente a Alá!»...\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mccxcv{Las limosnas son sólo para los necesitados, los pobres, los limosneros, aquéllos cuya voluntad hay que captar, los cautivos, los insolventes, la causa de Alá y el viajero. Es un deber impuesto por Alá. Alá es omnisciente, sabio.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mccxcvi{Hay entre ellos quienes molestan al Profeta y dicen: «¡Es todo oídos!» Di: «Por vuestro bien es todo oídos. Cree en Alá y tiene fe en los creyentes. Es misericordioso para aquéllos de vosotros que creen». Quienes molesten al Enviado de Alá, tendrán un castigo doloroso.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mccxcvii{Os juran por Alá por satisfaceros, pero Alá tiene más derecho, y Su Enviado también, a que Le satisfagan. Si es que son creyentes...\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mccxcviii{¿No saben que quien se opone a Alá y a Su Enviado tendrá eternamente el Fuego de la gehena? ¡Qué enorme deshonra..!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mccxcix{Los hipócritas temen la revelación de una sura que les informe del contenido de sus corazones. Di: «¡Burlaos, que ya sacará Alá lo que teméis!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mccc{Si les preguntas, dicen: «No hacíamos más que parlotear y bromear». Di: «¡Os burlabais de Alá, de Sus signos y de Su Enviado?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mccci{¡No os disculpéis! Habéis dejado de creer después de haber creído y, si perdonamos a alguno de vosotros, castigaremos a otros por haber sido pecadores.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mcccii{Los hipócritas y las hipócritas son todos uno. Ordenan lo que está mal y prohíben lo que está bien. Cierran sus manos. Han olvidado a Alá y Él les ha olvidado. Los hipócritas son los perversos.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mccciii{Alá ha amenazado a los hipócritas, a las hipócritas y a los infieles con el fuego de la gehena, en el que estarán eternamente. Les bastará. ¡Qué Alá les maldiga! Tendrán un castigo permanente.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mccciv{Lo mismo les pasó a los que os precedieron. Eran más fuertes que vosotros, más ricos y tenían más hijos. Disfrutaron de su parte. Disfrutad vosotros también de vuestra parte, como vuestros antecesores disfrutaron de la suya. Habéis parloteado igual que ellos. Vanas fueron sus obras en la vida de acá y vanas lo serán en la otra. Ésos son los que pierden.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mcccv{¿No se han enterado de lo que pasó a quienes les precedieron: el pueblo de Noé, los aditas, los tamudeos, el pueblo de Abraham, los madianitas y los de las vueltas de arriba abajo? Sus enviados vinieron a ellos con las pruebas claras. No fue Alá quien fue injusto con ellos, sino que ellos lo fueron consigo mismos.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mcccvi{Pero los creyentes y las creyentes son amigos unos de otros. Ordenan lo que está bien y prohíben lo que está mal. Hacen la azalá, dan el azaque y obedecen a Alá y a Su Enviado. De ésos se apiadará Alá. Alá es poderoso, sabio.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mcccvii{Alá ha prometido a los creyentes y a las creyentes jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente, y viviendas agradables en los jardines del edén. Pero la satisfacción de Alá será mejor aún. ¡Ése el éxito grandioso!\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mcccviii{¡Profeta! ¡Combate contra los infieles y los hipócritas, sé duro con ellos! Su refugio será la gehena. ¡Qué mal fin...!\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mcccix{Juran por Alá que no han profesado la incredulidad, cuando la verdad es que sí. Han apostado después de haber abrazado el islam. Aspiraban a algo que no han conseguido y han quedado resentidos sólo por no haber obtenido más que aquello con que Alá y Su Enviado les han enriquecido, por favor Suyo. Sería mejor para ellos que se arrepintieran. Si vuelven la espalda, Alá les infligirá un castigo doloroso en la vida de acá y en la otra. No encontrarán en la tierra amigo ni auxiliar.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mcccx{Algunos de ellos han concertado una alianza con Alá: «Si nos da algo de Su favor, sí que daremos limosna, sí que seremos de los justos».\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mcccxi{Pero, cuando les da algo de Su favor, se muestran avaros de ello, vuelven la espalda y se van.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mcccxii{Así, ha infundido en su ánimo la hipocresía hasta el día que Le encuentren, por haber faltado a lo que habían prometido a Alá y por haber mentido.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mcccxiii{¿No saben que Alá conoce sus secretos y sus conciliábulos, y que Alá conoce a fondo las cosas ocultas?\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mcccxiv{Son ellos los que critican, tanto a los creyentes que, espontáneamente, dan limosna, como a quienes sólo con un gran esfuerzo consiguen darla. Se burlan de ellos. También Alá se burlará de ellos y tendrán un castigo doloroso.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mcccxv{Da lo mismo que pidas o no que se les perdone. Aunque lo pidieras setenta veces, Alá no les perdonaría, porque no han creído en Alá y en Su Enviado. Alá no dirige al pueblo perverso.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mcccxvi{Los dejados atrás se alegraron de poder quedarse en casa en contra del Enviado de Alá. Les repugnaba luchar por Alá con su hacienda y sus personas y decían: «No vayáis a la guerra con este calor». Di: «El fuego de la gehena es aún más caliente». Si entendieran...\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mcccxvii{¡Que rían, pues, un poco! Ya llorarán, y mucho, como retribución de lo que han cometido.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mcccxviii{Si Alá vuelve a llevarte a un grupo de ellos y te piden permiso para ir a la guerra, di: «¡No iréis nunca conmigo! ¡No combatiréis conmigo contra ningún enenmigo! Preferisteis una vez quedaros en casa. ¡Quedaos, pues, con los que se quedan detrás!»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mcccxix{¡No ores nunca por ninguno de ellos cuando muera, ni te detengas ante su tumba! No han creído en Alá y en Su Enviado y han muerto en su perversidad.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mcccxx{¡ No te maravilles de su hacienda y de sus hijos! Alá sólo quiere con ello castigarles en la vida de acá y que exhalen su último suspiro siendo infieles.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mcccxxi{Cuando se revela una sura: «¡Creed en Alá y combatid junto a Su Enviado», los más ricos de ellos te piden permiso y dicen: «¡Deja que nos quedemos con los que se quedan!»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mcccxxii{Prefieren quedarse con las mujeres dejadas detrás. Han sido sellados sus corazones, así que no entienden.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mcccxxiii{Pero el Enviado y los que con él creen combaten con su hacienda y sus personas. Suyas serán las cosas buenas. Ésos son los que prosperarán.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mcccxxiv{Alá les ha preparado jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente ¡Ése es el éxito grandioso.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mcccxxv{Los beduinos que se excusan vienen a que se les dé permiso. Los que mienten a Alá y a Su Enviado se quedan en casa. Un castigo doloroso alcanzará a los que de ellos no crean.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mcccxxvi{Si son sinceros para con Alá y con Su Enviado, no habrá nada que reprochar a los débiles, a los enfermos, a los que no encuentran los medios. No hay motivo contra los que obran con honradez. Alá es indulgente, misericordioso.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mcccxxvii{Tampoco contra aquéllos a quienes, viniendo a ti para que les facilites montura, dices: «No os encuentro montura» y se vuelven con los ojos arrasados de lágrimas de tristeza porque no encuentran los medios.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mcccxxviii{Sólo hay motivo contra los que, siendo ricos, te piden permiso. Prefieren quedarse con las mujeres dejadas detrás. Alá ha sellado sus corazones, así que no saben.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mcccxxix{Se excusarán ante vosotros cuando volváis a ellos. Di: «¡No os excuséis! ¡No vamos a creeros! Alá ya nos ha informado acerca de vosotros. Alá y Su Enviado verán vuestras obras. Luego, se os devolverá al Conocedor de lo oculto y de lo patente y ya os informará Él de lo que hacíais».\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mcccxxx{Cuando regreséis a ellos os pedirán, jurando por Alá, que les dejéis. Dejadles, pues, son una abominación. Su morada será la gehena como retribución de lo que han cometido.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mcccxxxi{Os conjuran que aceptéis sus excusas. Pero, si vosotros las aceptáis, Alá no las aceptará del pueblo perverso.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mcccxxxii{Los beduinos son los más infieles, los más hipócritas y los más propensos a ignorar las leyes contenidas en la revelación de Alá a Su Enviado. Alá es omnisciente, sabio.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcccxxxiii{Algunos beduinos consideran como onerosa obligación pecuniaria lo que gastan, y acechan vuestras vicisitudes. ¡Que sean ellos los que sufran un revés! Alá todo lo oye, todo lo sabe.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mcccxxxiv{Pero hay otros beduinos que creen en Alá y en el último Día y consideran lo que gastan y las oraciones del Enviado como medios de acercarse a Alá. ¿No es esto para ellos un medio de acercarse? Alá les introducirá en Su misericordia. Alá es indulgente, misericordioso.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mcccxxxv{Alá está satisfecho de los más distinguidos -los primeros de los emigrados y de los auxiliares-, y de quienes les siguieron en sus buenas obras. Ellos también estarán satisfechos de Él, Que les ha preparado jardines por cuyos bajos fluyen arroyos en los que estarán eternamente, para siempre. ¡Ése es el éxito grandioso!\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mcccxxxvi{Entre los beduinos que os rodean y entre los medineses hay hipócritas que se obstinan en su hipocresía. Tú no les conoces, Nosotros les conocemos. Les castigaremos dos veces. Luego, serán enviados a un castigo terrible.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mcccxxxvii{Otros en cambio, reconocen sus pecados. Han mezclado obras buenas con otras malas. Tal vez Alá se vuelva a ellos. Alá es indulgente, misericordioso.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mcccxxxviii{¡Deduce de sus bienes una limosna para limpiarles y purificarles con ella! ¡Y ora por ellos! Tu oración les sosiega. Alá todo lo oye, todo lo sabe.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mcccxxxix{¿No saben que Alá es Quien acepta el arrepentimiento de Sus siervos y recibe las limosnas y que Alá es el Indulgente, el Misericordioso?\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mcccxl{Di: «¡Allá vosotros! Alá verá vuestras obras, así como Su Enviado y los creyentes. Se os devolverá al Conocedor de lo oculto y de lo patente y ya os informará Él de lo que hacíais».\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mcccxli{A otros se les hace esperar la decisión de Alá: castigo o misericordia. Alá es omnisciente, sabio.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mcccxlii{Quienes edificaron una mezquita con ánimo de dañar para ayuda de la incredulidad, para dividir a los creyentes y como refugio para quien había hecho antes la guerra a Alá y a Su Enviado, juran solemnemente: «¡No quisimos sino lo mejor!» Pero Alá es testigo de que mienten.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mcccxliii{¡No ores nunca en esa mezquita! Una mezquita fundada desde el primer día en el temor de Alá tiene más derecho a que ores en ella. La frecuentan hombres que gustan de purificarse y Alá ama a los que se purifican.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mcccxliv{¿Quién es mejor: quien ha cimentado su edificio en el temor de Alá y en Su satisfacción o quien lo ha cimentado al borde de una escarpa desgastada por la acción del agua y desmoronadiza, que se derrumba arrastrándole al fuego de la gehena? Alá no dirige al pueblo impío.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mcccxlv{El edificio que se han construido no dejará de ser motivo de duda en sus corazones, a menos que éstos se hagan pedazos. Alá es omnisciente, sabio.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mcccxlvi{Alá ha comprado a los creyentes sus personas y su hacienda, ofreciédoles, a cambio, el Jardín. Combaten por Alá: matan o les matan. Es una promesa que Le obliga, verdad, contenida en la Tora. en el Evangelio y en el Corán. Y ¿quién respeta mejor su alianza que Alá? ¡Regocijaos por el trato que habéis cerrado con É! ¡Ése es el éxito grandioso!\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mcccxlvii{Quienes se arrepienten sirven a Alá, Le alaban, ayunan, se inclinan, se prosternan, ordenan lo que está bien y prohíben lo que está mal, observan las leyes de Alá... ¡Y anuncia la buena nueva a los creyentes!\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mcccxlviii{El Profeta y los creyentes no deben pedir el perdón de los asociadores, aunque sean parientes suyos, después de haber visto claramente que morarán en el fuego de la gehena.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mcccxlix{El perdón que Abraham pidió para su padre no fue sino en virtud de una promesa que le había hecho; pero, cuando vio claramente que era enemigo de Alá, se desentendió de él. Abraham era, ciertamente, tierno, benigno.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mcccl{Alá, después de haber dirigido a un pueblo, no va a extraviarle sin antes haberle enseñado lo que debe temer. Alá es omnisciente.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mcccli{De Alá es el dominio de los cielos y de la tierra. Él da la vida y da la muerte. No tenéis, fuera de Alá, amigo ni auxiliar.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mccclii{Alá se ha vuelto al Profeta, a los emigrados y a los auxiliares, que le siguieron en una hora de apuro, luego de haberse casi desviado los corazones de algunos de ellos. Se ha vuelto, depués, a ellos. Alá es con ellos manso, misericordioso.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mcccliii{Y a los tres que fueron dejados atrás hasta que la tierra, a pesar de su vastedad, les resultó angosta, y sus espíritus se angustiaron también, y creyeron que no había más refugio contra Alá que Él mismo. Luego, se volvió a ellos para que se arrepintieran. Alá es el Indulgente, el Misericordioso.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mcccliv{¡Creyentes! Temed a Alá y estad con los sinceros.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mccclv{Los medineses y los beduinos que acampan a su alrededor no deben quedarse a la zaga del Enviado de Alá ni preferir el bienestar propio al de él. Si lo hacen así, no padecerán sed, ni fatiga, ni hambre por Alá. Todo suelo que pisen, para irritación de los infieles, y toda ventaja que obtengan sobre el enemigo, serán inscritos como obra buena. Alá no deja de remunerar a quienes hacen el bien.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mccclvi{No gastarán nada, ni poco ni mucho, no atravesarán valle alguno, que no quede todo inscrito en su favor, para que Alá les retribuya sólo por sus mejores obras.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mccclvii{No tienen por qué acudir todos los creyentes. Que de cada agrupación de ellos sólo algunos acudan a instruirse en la Religión, a fin de advertir a los suyos cuando regresen a ellos. Quizás, así tengan cuidado.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mccclviii{¡Creyentes! ¡Combatid contra los infieles que tengáis cerca! ¡Que os encuentren duros! ¡Sabed que Alá está con los que Le temen!\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mccclix{Cuando se revela una sura, hay algunos de ellos que dicen: «Ésta ¿a quién de vosotros le ha aumentado la fe?» Se la aumenta a los que creen, y de ello se regocijan,\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mccclx{mientras que a los enfermos de corazón les aumenta la mancha que ya tenían y mueren siendo infieles.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mccclxi{¿Es que no ven que se les prueba una o dos veces al año? Pero ni se arrepienten ni se dejan amonestar.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mccclxii{Y cuando se revela una sura, se miran unos a otros: «¿Os ve alguien?» Luego, se van. Alá ha desviado sus corazones, porque son gente que no entiende.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mccclxiii{Os ha venido un Enviado salido de vosotros. Le duele que sufráis, anhela vuestro bien. Con los creyentes es manso, misericordioso.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mccclxiv{Si te vuelven la espalda, di: «¡Alá me basta! ¡No hay más dios que Él! ¡En Él confío! ¡Él es el Señor del Trono augusto!»\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mccclxv{\basmalahes 'lr. Éstas son las aleyas de la Escritura sabia.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mccclxvi{¿Se sorprenden los hombres de que hayamos revelado a uno de ellos: «Advierte a los hombres y anuncia a los creyentes la buena nueva de que, cuando se presenten a su Señor, tendrán una buena posición»? Los infieles dicen: «Éste es, sí, un mago manifiesto».\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mccclxvii{Vuestro Señor es Alá, Que ha creado los cielos y la tierra en seis días. Luego, se ha instalado en el trono para disponerlo todo. Nadie puede interceder sin Su permiso. ¡Ése es Alá, vuestro Señor! ¡Servidle, pues! ¿Es que no os dejaréis amonestar?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mccclxviii{Todos volveréis a Él. ¡Promesa de Alá, verdad! Él inicia la creación y luego la repite, para remunerar con equidad a quienes han creído y obrado bien. En cuanto a quienes hayan sido infieles, se les dará a beber agua muy caliente y sufrirán un castigo doloroso por no haber creído.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mccclxix{Él es Quien ha hecho del sol claridad y de la luna luz, Quien ha determinado las fases de ésta para que sepáis el número de años y el cómputo. Alá no ha creado esto sino con un fin. Él explica los signos a gente que sabe.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mccclxx{En la sucesión de la noche y el día y en todo lo que Alá ha creado en los cielos y en la tierra hay, ciertamente, signos para gente que Le teme.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mccclxxi{Quienes no cuentan con encontrarnos y prefieren la vida de acá, hallando en ella quietud, así como quienes se despreocupan de Nuestros signos,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mccclxxii{tendrán el Fuego como morada por lo que han cometido.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mccclxxiii{A quienes hayan creído y obrado bien, su Señor les dirigirá por medio de su fe. A sus pies fluirán arroyos en los jardines de la Delicia.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mccclxxiv{Su invocación allí será: «¡Gloria a Ti, Alá!» Su saludo allí será: «¡Paz!» y terminarán con esta invocación: «¡Alabado sea Alá, Señor del universo!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mccclxxv{Si Alá precipitara el mal sobre los hombres con la misma premura con que éstos buscan su bienestar, habría ya llegado su fin. Dejamos, pues, a quienes no cuentan con encontrarnos que yerren ciegos en su rebeldía.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mccclxxvi{Cuando el hombre sufre una desgracia, Nos invoca, lo mismo si está echado que si está sentado o de pie. Pero, en cuanto le libramos de su desgracia, continúa su camino como si no Nos hubiera invocado por la desgracia que sufría. Así es como son engalanadas las obras de los inmoderados.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mccclxxvii{Antes de vosotros habíamos ya hecho perecer a generaciones que habían sido impías. Sus enviados les trajeron las pruebas claras, pero no estaban para creer. Así retribuimos al pueblo pecador.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mccclxxviii{Luego, os constituimos sucesores en la tierra, después de ellos, para ver cómo os portabais.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mccclxxix{Cuando se les recitan Nuestras aleyas como pruebas claras, quienes no cuentan con encontrarnos dicen: «¡Tráenos otro Corán o modifica éste!» Di: «No me toca a mí modificarlo por iniciativa propia. Lo único que hago es seguir lo que se me ha revelado. Temo, si desobedezco a mi Señor, el castigo de un día terrible».\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mccclxxx{Di: «Si Alá hubiera querido, yo no os lo habría recitado y Él no os lo habría dado a conocer. Antes de él, he permanecido una vida con vosotros. ¿Es que no razonáis?»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mccclxxxi{¿Hay alguien que sea más impío que quien inventa una mentira contra Alá o desmiente Sus signos? Los pecadores no prosperarán.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mccclxxxii{En lugar de servir a Alá, sirven lo que no puede ni dañarles ni aprovecharles, y dicen: «¡Éstos son nuestros intercesores ante Alá!» Di: «¿Es que pretendéis informar a Alá de algo, en los cielos o en la tierra, que Él no sepa?» ¡Gloria a Él! ¡Está por encima de lo que Le asocian!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mccclxxxiii{La Humanidad no constituía sino una sola comunidad. Luego, discreparon entre sí y, si no llega a ser por una palabra previa de tu Señor, ya se habría decidido entre ellos sobre aquello en que discrepaban.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mccclxxxiv{Dicen: «¡Por qué no se le ha revelado un signo procedente de su Señor?» Di, pues: «Lo oculto pertenece sólo a Alá. ¡Esperad, pues! Yo también soy de los que esperan».\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mccclxxxv{Apenas hacemos gustar a los hombres una misericordia, después de haber sufrido una desgracia, al punto intrigan contra Nuestros signos. Di: «¡Alá es más rápido en intrigar!» Nuestros enviados toman nota de vuestra intriga.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mccclxxxvi{Él es Quien os hace viajar por tierra o por mar. Cuando, navegando con viento favorable, contentos con él, se levanta un viento tempestuoso, azotan las olas por todas partes y creen llegada la hora de la muerte, invocan a Alá rindiéndole culto sincero. «Si nos salvas de ésta, seremos, ciertamente, de los agradecidos».\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mccclxxxvii{Y apenas les salva, ya en tierra, al punto se insolentan injustamente. «¡Hombres! ¡Vuestra insolencia se volverá contra vosotros! Tendréis breve disfrute de la vida de acá. Luego, volveréis a Nosotros y ya os informaremos de lo que hacíais».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mccclxxxviii{La vida de acá es como agua que hacemos bajar del cielo. Las plantas de la tierra se empapan de ella y alimentan a los hombres y a los rebaños, hasta que, cuando la tierra se ha adornado y engalanado, y creen los hombres que ya la dominan, llega a ella Nuestra orden, de noche o de día, y la dejamos cual rastrojo, como si, la víspera, no hubiera estado floreciente. Así explicamos los signos a gente que reflexiona.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mccclxxxix{Alá invita a la Morada de la Paz y dirige a quien Él quiere a una vía recta.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcccxc{Para quienes obren bien, lo mejor y más. Ni el polvo ni la humillación cubrirán sus rostros. Ésos morarán en el Jardín eternamente.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mcccxci{A quienes obren mal, se les retribuirá con otro tanto. Les cubrirá la humillación -no tendrán quien les proteja de Alá-, como si jirones de tinieblas nocturnas cubrieran sus rostros. Ésos morarán en el Fuego eternamente.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mcccxcii{El día que les congreguemos a todos, diremos a los asociadores: «¡Quedaos donde estáis, vosotros y vuestros asociados!» Les separaremos a unos de otros y sus asocidos dirán: «¡No era a nosotros a quienes servíais!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mcccxciii{Alá basta como testigo entre nosotros y vosotros de que no hacíamos caso de vuestro servicio».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcccxciv{Allí, cada uno experimentará de nuevo lo que hizo en vida. Serán devueltos a Alá, su verdadero Dueño, y se esfumarán sus invenciones.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcccxcv{Di: «¿Quién os procura el sustento del cielo y de la tierra? ¿Quién dispone del oído y de la vista? ¿Quién saca al vivo del muerto y al muerto del vivo? ¿Quién lo dispone todo? Dirán: «¡Alá!» Di, pues: «¿Y no vais a temerle?»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcccxcvi{Ése es Alá, vuestro verdadero Señor. Y ¿qué hay más allá de la Verdad, sino el extravío? ¡Cómo podéis, pues, ser tan desviados!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcccxcvii{Así se ha cumplido la sentencia de tu Señor contra los perversos: no creerán.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcccxcviii{Di: «¿Hay alguno de vuestros asociados que inicie la creación y luego la repita?» Di: «Alá inicia la creación y luego la repite. ¡Cómo podéis, pues, ser tan desviados!»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcccxcix{Di: «¿Hay algunos de vuestros asociados que dirija a la Verdad?» Di: «Alá dirige a la Verdad. ¿Quién tiene más derecho a ser seguido: quien dirige a la Verdad o quien no da con la buena dirección, a menos de ser dirigido? Pero ¿qué os pasa?, ¿qué manera de juzgar es ésa?»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcd{Pero la mayoría no siguen sino conjeturas, y, ante la Verdad, las conjeturas no sirven de nada. Alá sabe bien lo que y hacen.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcdi{Este Corán no puede haberlo inventado nadie fuera de Alá. No sólo eso, sino que viene a confirmar los mensajes anteriores y a explicar detalladamente la Escritura , exenta de dudas, que procede del Señor del universo.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcdii{O dicen: «Él lo ha inventado». Di: «Si es verdad lo que decís, ¡traed una sura semejante y llamad a quien podáis, en lugar de llamar a Alá!»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcdiii{Al contrario, han desmentido lo que no abarcan en su ciencia y aquello cuya interpretación aún no han recibido. Así desmintieron sus antecesores. ¡Y mira cómo terminaron los impíos!\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcdiv{De ellos hay quien cree en él y quien no, pero tu Señor conoce mejor que nadie a los corruptores.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcdv{Si te desmienten, di: «Yo respondo de mis actos y vosotros de los vuestros. Vosotros no sois responsables de lo que yo haga y yo no soy responsable de lo que vosotros hagáis».\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mcdvi{De ellos hay quienes te escuchan. Pero ¿puedes tú hacer que los sordos oigan, aun cuando no comprendan...?\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcdvii{De ellos hay quien te mira. Pero ¿puedes tú dirigir a los ciegos, aun cuando no vean...?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcdviii{Alá no es nada injusto con los hombres, sino que son los hombres los injustos consigo mismos.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mcdix{Y el día que les congregue, será como si no hubieran permanecido más de una hora del día. Se reconocerán. Perderán quienes hayan desmentido el encuentro de Alá. No fueron bien dirigidos.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mcdx{Lo mismo si te mostramos algo de aquello con que les amenazamos que si te llamamos, volverán a Nosotros. Luego, Alá será testigo de lo que hacían.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mcdxi{Cada comunidad tiene un enviado. Cuando venga su enviado, se decidirá entre ellos con equidad y no serán tratados injustamente.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mcdxii{Dicen: «¿Cuándo se cumplirá esta amenaza, si es verdad lo que decís...?»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mcdxiii{Di: «Yo no tengo poder para dañarme ni para aprovecharme sino tanto cuanto Alá quiera. Cada comunidad tiene un plazo. Cuando vence su plazo, no pueden retrasarlo ni adelantarlo una hora».\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mcdxiv{Di: «¿Qué os parece? Si os sorprendiera Su castigo de noche o de día, ¿querrían los pecadores aún adelantarlo?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mcdxv{¿Dejáis el creer en él para cuando ocurra? Creed ahora, cuando pedís adelantarlo».\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mcdxvi{Se dirá a los impíos: «¡Gustad el castigo enterno! ¿Se os retribuye por otra cosa que por lo que habéis merecido?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mcdxvii{Te pedirán información: «Entonces, eso ¿es verdad?» Di: «¡Sí, por mi Señor!, que es verdad y no podréis escapar».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mcdxviii{Todo impío que poseyera cuanto hay en la tierra, lo ofrecería como rescate. Disimularán su pena cuando vean el castigo. Se decidirá entre ellos con equidad y no serán tratados injustamente.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mcdxix{¿No es de Alá lo que está en los cielos y en la tierra? ¡Lo que Alá promete es verdad! Pero la mayoría no saben.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mcdxx{Él da la vida y da la muerte. Y seréis devueltos a Él.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mcdxxi{¡Hombres! Habéis recibido una exhortación procedente de vuestro Señor, remedio para los males de vuestros corazones, dirección y misericordia para los creyentes.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mcdxxii{Di: «¡Que se alegren del favor de Alá y de Su misericordia. Eso es mejor que lo que ellos amasan».\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mcdxxiii{Di: «¿Habéis visto el sustento que Alá ha hecho bajar para vosotros? ¿Y habéis declarado esto lícito y aquello ilícito? ¿Es que Alá os lo ha permitido o lo habéis inventado contra Alá?»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mcdxxiv{El día de la Resurreción ¿qué pensarán los que inventaron la mentira contra Alá? Sí, Alá dispensa Su favor a los hombres, pero la mayoría no agradecen.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mcdxxv{En cualquier situación en que te encuentres, cualquiera que sea el pasaje que recites del Corán, cualquier cosa que hagáis, Nosotros somos testigos de vosotros desde su principio. A tu Señor no se Le pasa desapercibido el peso de un átomo en la tierra ni en el cielo. No hay nada, menor o mayor que eso, que no esté en una Escritura clara.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mcdxxvi{Ciertamente, los amigos de Alá no tienen que temer y no estarán tristes.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mcdxxvii{Creyeron y temieron a Alá.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mcdxxviii{Recibirán la buena nueva en la vida de acá y en la otra. No cabe alteración en las palabras de Alá. ¡Ése es el éxito grandioso!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mcdxxix{¡Que no te entristezca lo que digan! El poder pertenece, en su totalidad, a Alá. Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mcdxxx{¿No es, acaso, de Alá lo que está en los cielos y en la tierra? ¿Qué siguen, pues, quienes invocan a otros asociados, en lugar de invocar a Alá? No siguen sino conjeturas, no formulan sino hipótesis.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mcdxxxi{Él es Quien ha dispuesto para vosotros la noche para que descanséis en ella, y el día para que podáis ver claro. Ciertamente, hay en ello signos para gente que oye.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mcdxxxii{Dicen: «Alá ha adoptado un hijo». ¡Gloria a Él! Él es Quien Se basta a Sí mismo. Suyo es lo que está en los cielos y en la tierra. ¡No tenéis ninguna autoridad para hablar así! ¿Decís contra Alá lo que no sabéis?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mcdxxxiii{Di: «Quienes inventen la mentira contra Alá no prosperarán».\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mcdxxxiv{Tendrán breve disfrute en la vida de acá y, luego, volverán a Nosotros. Luego, les haremos gustar el castigo severo por no haber creído.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mcdxxxv{Cuéntales la historia de Noé, cuando dijo a los suyos: «¡Pueblo! Si os molesta que esté entre vosotros y que os amoneste con los signos de Alá, yo confío en Alá. Aunaos, pues, con vuestros asociados y no os preocupéis más. ¡Decidid, luego, respecto a mí y no me hagáis esperar!»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mcdxxxvi{Pero, si dais media... Yo no os he pedido un salario. Mi salario incumbe sólo a Alá. He recibido la orden de ser de los que se someten a Alá.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mcdxxxvii{Le desmintieron, pero les salvamos a él y a quienes estaban con él en la nave, y les hicimos sucesores. Y anegamos a quienes desmintieron Nuestros signos. ¡Y mira cómo terminaron los que habían sido advertidos!\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mcdxxxviii{Después de él, mandamos a otros enviados a sus pueblos, que les trajeron las pruebas claras, pero no estaban para creer en lo que antes habían desmentido. Así es como sellamos los corazones de los que violan la ley.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mcdxxxix{Luego, después de ellos, enviamos a Moisés y a Aarón con Nuestros signos a Faraón y a sus dignatarios. Pero fueron altivos. Eran gente pecadora.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mcdxl{Cuando recibieron la Verdad, venida de Nosotros, dijeron: «¡Esto es, ciertamente, manifiesta magia!»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mcdxli{Moisés dijo: «¿Os atrevéis a tachar de magia la Verdad que habéis recibido?» Los magos no prosperarán.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mcdxlii{Dijeron: «¿Has venido a nosotros con objeto de apartarnos de lo que nuestros padres seguían, para que la dominación de la tierra pase a vosotros dos? ¡No tenemos fe en vosotros!»\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mcdxliii{Faraón dijo: «¡Traedme acá a todo mago entendido!»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mcdxliv{Y cuando llegaron los magos, Moisés les dijo: «¡Tirad lo que vayáis a tirar!»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mcdxlv{Y cuando tiraron, dijo Moisés: «Lo que habéis traído es magia. Alá va a destruirlo. Alá no permite que prospere la obra de los corruptores.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mcdxlvi{Y Alá hace triunfar la Verdad con Sus palabras, a despecho de los pecadores».\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mcdxlvii{Sólo una minoría de su pueblo creyó en Moisés, porque tenían miedo de que Faraón y sus dignatarios les pusieran a prueba. Ciertamente, Faraón se conducía altivamente en el país y era de los inmoderados.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mcdxlviii{Moisés dijo: «¡Pueblo! Si creéis en Alá, ¡confiad en Él! Si es que estáis sometidos a Él...»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mcdxlix{Dijeron: «¡Confiamos en Alá! ¡Señor! ¡No hagas de nosotros instrumentos de tentación para el pueblo impío!\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mcdl{¡Sálvanos por Tu misericordia del pueblo infiel!»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mcdli{E inspiramos a Moisés y a su hermano: «¡Estableced casas para vuestro pueblo en Egipto y haced de vuestras casas lugares de culto! ¡Y haced la azalá!» ¡Y anuncia la buena nueva a los creyentes!\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mcdlii{Moisés dijo: «¡Señor! Tú has dado a Faraón y a sus dignatarios lujo y bienes en la vida de acá para terminar, ¡Señor!. extraviando a otros de Tu camino. ¡Señor! ¡Borra sus bienes y endurece sus corazones a fin de que no crean hasta que vean el castigo doloroso!»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mcdliii{Dijo: «Vuestra plegaria ha sido escuchada. ¡Id los dos por la vía recta y no sigáis el camino de los que no saben!»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mcdliv{Hicimos que los Hijos de Israel atravesaran el mar. Faraón y sus tropas les persiguieron con espíritu de rebeldía y hostilidad hasta que, a punto de ahogarse, dijo: «¡Sí, creo que no hay más dios que Aquél en Quien los Hijos de Israel creen! Y soy de los que se someten a Él».\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mcdlv{«¿Ahora? ¿Después de haber desobedecido y de haber sido de los corruptores?\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mcdlvi{Esto no obstante, hoy te salvaremos en cuanto al cuerpo a fin de que seas signo para los que te sucedan». Son muchos, en verdad, los hombres que no se preocupan de Nuestros signos...\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mcdlvii{Hemos instalado a los Hijos de Israel en un lugar bueno y les hemos proveído de cosas buenas. Y no discreparon sino después de haber recibido la Ciencia. Tu Señor decidirá entre ellos el día de la Resurrección sobre aquello en que discrepaban.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mcdlviii{Si tienes alguna duda acerca de lo que te hemos revelado, pregunta a quienes, antes de ti, ya leían la Escritura. Te ha venido, de tu Señor, la Verdad. ¡No seas, pues, de los que dudan!\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mcdlix{Y ¡guárdate de ser de los que desmienten los signos de Alá; si no, serás de los que pierden!\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mcdlx{Aquéllos contra quienes se ha cumplido la sentencia de tu Señor no creerán,\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mcdlxi{aunque reciban todos los signos, hasta que vean el castigo doloroso.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcdlxii{¿Por qué no ha habido ninguna ciudad que haya creído y a la que su fe haya aprovechado, fuera del pueblo de Jonás...? Cuando creyeron, les evitamos el castigo, vergonzoso en la vida de acá y les permitimos gozar aún por algún tiempo.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mcdlxiii{Si tu Señor hubiera querido, todos los habitantes de la tierra, absolutamente todos, habrían creído. Y ¿vas tú a forzar a los hombres a que sean creyentes,\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mcdlxiv{siendo así que nadie está para creer si Alá no lo permite? Y Se irrita contra quienes no razonan.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mcdlxv{Di: «¡Mirad lo que está en los cielos y en la tierra!» Pero ni los signos ni las advertencias sirven de nada a gente que no cree.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mcdlxvi{¿Qué esperan, pues, sino días como los de quienes pasaron antes de ellos? Di: «¡Esperad! Yo también soy de los que esperan».\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mcdlxvii{Luego, salvaremos a Nuestros enviados y a los que hayan creído. Salvar a los creyentes es deber Nuestro.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mcdlxviii{Di: «¡Hombres! Si dudáis de mi religión, yo no sirvo a quienes vosotros servís en lugar de servir a Alá, sino que sirvo a Alá, Que os llamará! ¡He recibido la orden de ser de los creyentes».\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mcdlxix{Y: «¡Profesa la Religión como hanif y no seas asociador!»\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mcdlxx{No invoques, en lugar de invocar a Alá, lo que no puede aprovecharte ni dañarte. Si lo hicieras, entonces, serías de los impíos.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mcdlxxi{Si Alá te aflige con una desgracia, nadie sino Él podrá librarte de ella. Si Él te desea un bien, nadie podrá oponerse a Su favor. Se lo concede a quien Él quiere de Sus siervos. Él es el Indulgente, el Misericordioso.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mcdlxxii{Di: «¡Hombres! Os ha venido, de vuestro Señor, la Verdad. Quien sigue la vía recta, la sigue, en realidad, en provecho propio. Y quien se extravía, se extravía, en realidad, en detrimento propio. Yo no soy vuestro protector».\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mcdlxxiii{¡Sigue lo que se te ha revelado y ten paciencia hasta que Alá decida! ¡Él es el Mejor en decidir!\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mcdlxxiv{\basmalahes 'lr. He aquí una Escritura cuyas aleyas han sido hechas unívocas y, luego, explica das detalladamente, y que procede de Uno Que es sabio, Que está bien informado.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mcdlxxv{¡Que no sirváis sino a Alá! Yo soy para vosotros, de parte Suya, un monitor y nuncio de buenas nuevas.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mcdlxxvi{Y ¡que pidáis perdón a vuestro Señor y, luego, os volváis a Él! Os permitirá, entonces, disfrutar bien por un tiempo determinado y concederá Su favor a todo favorecido. Pero, si volvéis la espalda, temo por vosotros el castigo de un día terrible.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mcdlxxvii{Volveréis a Alá. Es omnipotente.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mcdlxxviii{Se repliegan en sí mismos para sustraerse a Él. Aunque se cubran con la ropa, Él sabe lo que ocultan y lo que manifiestan: sabe bien lo que encierran los pechos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mcdlxxix{No hay bestia sobre la tierra a cuyo sustento no provea Alá, Que conoce su madriguera y su depósito: todo está en una Escritura clara.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mcdlxxx{Él es Quien ha creado los cielos y la tierra en seis días, teniendo Su Trono en el agua, para probaros, para ver quién de vosotros es el que mejor se comporta. Si dices: «Seréis resucitados después de muertos», seguro que los infieles dicen: «Esto no es más que manifiesta magia».\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mcdlxxxi{Si retrasamos su castigo hasta un momento dado, seguro que dicen: «¿Qué es lo que lo impide ?» El día que les llegue no se les alejará de él y se verán cercados por aquello de que se burlaban.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mcdlxxxii{Si hacemos gustar al hombre una misericordia venida de Nosotros y luego le privamos de ella, está completamente desesperado, desagradecido.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mcdlxxxiii{Si le hacemos gustar una dicha., luego de haber sufrido una desdicha, seguro que dice: «¡Se han alejado de mí los males!» Sí, se regocija, se ufana.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mcdlxxxiv{En cambio, quienes sean pacientes y obren bien, obtendrán perdón y una gran recompensa.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mcdlxxxv{Tú, quizás, omitirías parte de lo que se te ha revelado -y te angustias por ello- porque dicen: «¿Por qué no se le ha enviado abajo un tesoro o le ha acompañado un ángel?» Pero tú no eres más que un monitor. Y Alá vela por todo...\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mcdlxxxvi{O dicen: «Él lo ha inventado». Di: «Si es verdad lo que decís, ¡traed diez suras como él, inventadas, y llamad a quien podáis, en lugar de llamar a Alá!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mcdlxxxvii{Y si no os escuchan, sabed que ha sido revelado con la ciencia de Alá y que no hay más dios que Él. ¿Os someteréis, pues, a Él?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mcdlxxxviii{A quienes hayan deseado la vida de acá y su ornato, les remuneraremos en ella con arreglo a sus obras y no serán defraudados en ella.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mcdlxxxix{Ésos son los que no tendrán en la otra vida más que el Fuego. Sus obras no fructificarán y será vano lo que hayan hecho.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mcdxc{¿Es que quien se basa en una prueba clara venida de su Señor, recitada por un testigo de Éste...? Antes de él, laEscritura de Moisés servía de guía y de misericordia. Ésos creen en ella. Quien de los grupos no cree en ella tiene el Fuego como lugar de cita. Tú no dudes de ella. Es la Verdad venida de tu Señor. Pero la mayoría de los hombres no creen.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mcdxci{¿Hay alguien más impío que quien inventa una mentira contra Alá? Esos tales serán conducidos ante su Señor y los testigos dirán: «Éstos son los que mintieron contra su Señor». ¡Sí! ¡Que la maldición de Dios caiga sobre los impíos,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mcdxcii{que desvían a otros del camino de Alá, deseando que sea tortuoso, y no creen en la otra vida!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mcdxciii{No pudieron escapar en la tierra ni tuvieron, fuera de Alá, amigos. Se les doblará el castigo. No podían oír y no veían.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mcdxciv{Ésos son los que se han perdido a sí mismos. Se han esfumado sus invenciones...\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mcdxcv{¡En verdad, en la otra vida serán los que más pierdan!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mcdxcvi{Pero quienes crean, obren bien y se muestren humildes para con su Señor, ésos morarán en el Jardín eternamente.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mcdxcvii{Estas dos clases de personas son como uno ciego y sordo y otro que ve y oye. ¿Son similares? ¿Es que no os dejaréis amonestar?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mcdxcviii{Y ya enviamos Noé a su pueblo: «Soy para vosotros un monitor que habla claro:\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcdxcix{¡No sirváis sino a Alá! Temo por vosotros el castigo de un día doloroso».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@md{Los dignatarios de su pueblo, que no creían, dijeron: «No vemos en ti más que un mortal como nosotros y no vemos que nadie te siga sino la hez de nuestro pueblo, que lo hace irreflexivamente. Ni vemos que gocéis de ningún privilegio sobre nosotros. Antes bien, creemos que mentís».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdi{Dijo: «¡Pueblo! ¿Qué os parece? Si yo me baso en una prueba clara venida de mi Señor -que me ha hecho objeto de una misericordia venida de Él-, y que vosotros, en vuestra ceguera, no percibís, ¿deberemos imponérosla a despecho vuestro?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdii{¡Pueblo! No os pido hacienda a cambio -mi salario incumbe sólo a Alá- y no voy a rechazar a quienes creen. Sí, encontrarán a su Señor. Pero veo que sois un pueblo ignorante.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdiii{¡Pueblo! Si les rechazo, ¿quién me auxiliará contra Alá? ¿Es que no os dejaréis amonestar?\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdiv{Yo no pretendo poseer los tesoros de Alá, ni conozco lo oculto, ni pretendo ser un ángel. Yo no digo a los que vosotros despreciáis que Alá no les reserva ningún bien. Alá conoce bien sus pensamientos. Si tal dijera, sería de los impíos».\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdv{Dijeron: «¡Noé! No paras de discutir con nosotros. ¡Tráenos, pues, aquello con que nos amenazas, si es verdad lo que dices!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdvi{Dijo: «Sólo Alá hará que se cumpla, si Él quiere, y no podréis escapar».\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdvii{«Si yo quisiera aconsejaros, mi consejo no os serviría de nada si Alá quisiera descarriaros. Él es vuestro Señor y seréis devueltos a Él».\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdviii{O dicen: «Él lo ha inventado». Di:«Si yo lo he inventado, ¡caiga sobre mí mi pecado! Pero soy inocente de lo que me imputáis».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdix{Y se reveló a Noé: «De tu pueblo sólo creerán los que ya creían. ¡No te aflijas, pues, por lo que hicieren!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdx{¡Construye la nave bajo Nuestra mirada y según Nuestra inspiración y no me hables de los que han obrado impíamente! ¡Van a ser anegados!»\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdxi{Y, mientras construía la nave, siempre que pasaban por allí dignatarios de su pueblo se burlaban de él. Decía: «Si os burláis de nosotros, ya nos burlaremos de vosotros como os burláis.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdxii{Veréis quién recibirá un castigo humillante y sobre quién se abatirá un castigo permanente»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdxiii{Hasta que, cuando vino Nuestra orden y el horno hirvió, dijimos: «Carga en ella a una pareja de cada especie, a tu familia -salvo a aquél cuya suerte ha sido ya echada- y a los creyentes»,. Pero no eran sino pocos los que con él creían.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdxiv{Dijo: «¡Subid a ella! ¡Que navegue y llegue a buen puerto en el nombre de Alá! Mi Señor es, ciertamente, indulgente, misericordioso».\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdxv{Y navegó con ellos entre olas como montañas. Noé llamó a su hijo, que se había quedado aparte: «¡Hijito! ¡Sube con nosotros, no te quedes con los infieles!»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdxvi{Dijo: «Me refugiaré en una montaña que me proteja del agua». Dijo: «Hoy nadie encontrará protección contra la orden de Alá, salvo aquél de quien Él se apiade». Se interpusieron entre ambos las olas y fue de los que se ahogaron.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdxvii{Y se dijo: «¡Traga, tierra, tu agua! ¡Escampa, cielo!», Y el agua fue absorbida, se cumplió la orden y se posó en el Chudi. Y se dijo: «¡Atrás el pueblo impío!»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdxviii{Noé invocó a su Señor y dijo: «¡Señor! Mi hijo es de mi familia. Lo que Tú prometes es verdad. Tú eres Quien mejor decide».\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdxix{Dijo: «¡Noé! ¡Él no es de tu familia! ¡Es un acto incorrecto! ¡No me pidas algo de lo que no tienes conocimiento! Te prevengo: ¡no seas de los ignorantes!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdxx{Dijo: «¡Señor, líbrame de pedirte algo de lo que no tengo conocimiento! Si Tú no me perdonas y Te apiadas de mí, seré de los que están perdidos...»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdxxi{Se dijo: «¡Noé! ¡Desembarca con paz venida de Nosotros y con bendiciones sobre ti y las comunidades que desciendan de quienes te acompañan. Hay comunidades a las que dejaremos que gocen por breve tiempo. Luego, les castigaremos severamente».\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdxxii{Esto forma parte de las historias referentes a lo oculto que Nosotros te revelamos. No las conocías antes tú, ni tampoco tu pueblo. ¡Ten paciencia, pues! ¡El fin es para los que temen a Alá!\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdxxiii{Y a los aditas su hermano Hud. Dijo: «¡Pueblo! ¡Servid a Alá! No tenéis a ningún otro dios que a Él. No hacéis más que inventar.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdxxiv{¡ Pueblo! No os pido salario a cambio. Mi salario incumbe sólo a Aquél Que me ha creado. ¿Es que no razonáis?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdxxv{Y, ¡pueblo!, ¡pedid perdón a vuestro Señor y, luego, volveos a Él! Enviará sobre vosotros del cielo una lluvia abundante y os fortalecerá. ¡No volváis la espalda como pecadores!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdxxvi{Dijeron: «¡Hud! ¡No nos has traído ninguna prueba clara! ¡No vamos a dejar a nuestros dioses porque tú lo digas! ¡No tenemos fe en ti!\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mdxxvii{Lo único que decimos es que uno de nuestros dioses te ha causado mal». Dijo: «¡Pongo a Alá por testigo y sed vosotros también testigos de que soy inocente de lo que vosotros asociáis\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mdxxviii{en lugar de Él! ¡Urdid algo todos contra mí y no me hagáis esperar!»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mdxxix{Yo confío en Alá, mi Señor y Señor vuestro. ¡No hay ser que no dependa de Él! Mi Señor está en una vía recta.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mdxxx{Si volvéis la espalda... yo ya os he comunicado aquello con que he sido enviado a vosotros. Mi Señor hará que os suceda otro pueblo y no podréis hacerle ningún daño. ¡Mi Señor todo lo vigila!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mdxxxi{Cuando vino Nuestra orden, salvamos por una misericordia venida de Nosotros a Hud y a los que con él creyeron y les libramos de un duro castigo.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mdxxxii{Así eran los aditas. Negaron los signos de su Señor y desobedecieron a Sus enviados, siguiendo, en cambio, las órdenes de todo tirano desviado.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mdxxxiii{En la vida de acá fueron perseguidos por una maldición y también lo serán el día de la Resurreción. ¡No! ¡Los aditas no creyeron en su Señor! ¡Sí! ¡Atrás los aditas, pueblo de Hud!\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mdxxxiv{Y a los tamudeos su hermano Salih. Dijo: «¡Pueblo! ¡Servid a Alá! No tenéis a ningún otro dios que a Él. Él os ha creado de la tierra y os ha establecido en ella. ¡Pedidle perdón! Luego, ¡volveos a Él! Mi Señor está cerca, escucha».\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mdxxxv{Dijeron: «¡Salih! habíamos puesto en ti hasta ahora nuestra esperanza. ¿Nos prohíbes que sirvamos lo que servían nuestros padres? Dudamos seriamente de aquello a que nos llamas».\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mdxxxvi{Dijo: «¡Pueblo! ¿Qué os parece? Si yo me baso en una prueba clara venida de mi Señor, Que me ha hecho objeto de una misericordia venida de Él, ¿quién me auxiliará contra Alá si Le desobedezco? No haríais sino aumentar mi perdición.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mdxxxvii{Y, ¡pueblo!, ésa es la camella de Alá, que seá signo para vosotros. ¡Dejadla que pazca en la tierra de Alá y no le hagáis mal! Si no, os alcanzará pronto un castigo».\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mdxxxviii{Pero la desjarretaron y dijo: «¡Gozad aún de vuestros bienes durante tres días! Es una amenaza que no dejará de cumplirse».\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mdxxxix{Y, cuando vino Nuestra orden, preservamos por una misericordia venida de Nosotros a Salih y a los que con él creyeron del oprobio de aquel día. Tu Señor es el Fuerte, el Poderoso.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mdxl{El Grito sorprendió a los que habían sido impíos y amanecieron muertos en sus casas,\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mdxli{como si no hubieran habitado en ellas. ¡No! ¡Los tamudeos no creyeron en su Señor! ¡Sí! ¡Atrás los tamudeos!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mdxlii{Y ya trajeron nuestros enviados la buena nueva a Abraham. Dijeron: «¡Paz!» Dijo: «¡Paz!» Y no tardó en traer un ternero asado.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mdxliii{Y cuando vio que sus manos no lo tocaban, sospechó de ellos y sintió temor de ellos. Dijeron: «¡No temas! Se nos ha enviado al pueblo de Lot».\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mdxliv{Su mujer estaba presente y se rió. Y le anunciamos la buena nueva de Isaac y, después de la de Isaac, la de Jacob.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mdxlv{Dijo ella: «¡Ay de mí! ¿Voy a dar a luz ahora que soy tan vieja y este mi marido» tan viejo? ¡Ciertamente, esto es algo asombroso!»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mdxlvi{«¿Te asombras de la orden de Alá?» dijeron. «¡Que la misericordia de Alá y Sus bendiciones sean sobre vosotros, gente de la casa! ¡Es digno de ser alabado, glorificado!»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mdxlvii{Y cuando el temor de Abraham se hubo desvanecido y recibió la buena noticia, se puso a discutir con Nosotros sobre el pueblo de Lot.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mdxlviii{Abraham era, ciertamente, benigno, tierno, estaba arrepentido.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mdxlix{«¡Abraham! ¡Deja de defenderles! ¡Ha llegado la orden de tu Señor y recibirán un castigo ineludible!»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mdl{Y cuando Nuestros enviados vinieron a Lot, éste se afligió por ellos y se sintió impotente para protegerles. Dijo: «¡Este es un día terrible!»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mdli{Su pueblo, que solía antes cometer el mal, corrió a Lot, que dijo: «¡Pueblo! ¡Aquí tenéis a mis hijas. Son más puras para vosotros. ¡Temed a Alá y no me avergoncéis en mis huéspedes! ¿No hay entre vosotros un hombre honrado?\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mdlii{Dijeron: «Ya sabes que no tenemos ningún derecho a tus hijas. Tú ya sabes lo que queremos...»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mdliii{Dijo: «¡Ah! Si os pudiera... o si pudiera recurrir a un apoyo fuerte...»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mdliv{Dijeron: «¡Lot! ¡Somos los enviados de tu Señor! ¡No se llegarán a ti! ¡Ponte en camino con tu familia durante la noche y que ninguno de vosotros se vuelva! Tu mujer, sí que se volverá y le alcanzará el mismo castigo que a ellos. Esto les ocurrirá al alba. ¿No está cercana el alba?»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mdlv{Y cuando vino Nuestra orden, la volvimos de arriba abajo e hicimos llover sobre ella piedras de arcilla a montones,\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mdlvi{marcadas junto a tu Señor. Y no está lejos de los impíos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mdlvii{Y a los madianitas su hermano Suayb. Dijo: «¡Pueblo! ¡Servid a Alá! No tenéis a ningún otro dios que a Él. ¡No defraudéis en la medida ni en el peso! Os veo en el bienestar, pero temo por vosotros el castigo de un día de alcance universal.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mdlviii{Y, ¡pueblo!, ¡dad la medida y el peso equitativos! ¡No defraudéis a los demás en sus bienes! ¡No obréis mal en la tierra corrompiendo!\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mdlix{Lo que Alá os deja es mejor para‚ vosotros, si es que sois creyentes. Y yo no soy vuestro custodio»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mdlx{Dijeron: «¡Suayb! ¿Acaso te ordena tu religión que dejemos lo que nuestros padres servían o que dejemos de utilizar libremente nuestra hacienda? Tú eres, ciertamente, el benigno, el honrado».\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mdlxi{Dijo: «¡Pueblo! ¿Qué os parece? Si yo me baso en una prueba clara venida de mi Señor y Él me provee de un bello sustento venido de Él... Yo no pretendo contrariaros cuando os prohíbo algo. No pretendo sino reformaros en la medida de mis posibles. Mi éxito no depende sino de Alá. En Él confío y a Él me vuelvo arrepentido.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mdlxii{Y ¡pueblo!, ¡que la oposición a mí no os cause los mismos males que alcanzaron al pueblo de Noé o al pueblo de Hud o al pueblo de Salih! Y el pueblo de Lot no está lejos de vosotros.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mdlxiii{¡Pedid perdón a vuestro Señor! Luego, ¡volveos a Él Mi Señor es misericordioso. lleno de amor».\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mdlxiv{Dijeron: «¡Suayb! No entendemos mucho de lo que dices. Entre nosotros se te tiene por débil. Si no hubiera sido por tu clan, te habríamos lapidado. No nos impresionas».\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mdlxv{Dijo: «¡Pueblo! ¡Os impresiona mi clan más que Alá, a Quien habéis pospuesto con desprecio? Mi Señor abarca todo lo que hacéis.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mdlxvi{¡Pueblo! ¡Obrad según vuestra situación! Yo también obraré... Veréis quién va a recibir un castigo humillante y quién es el que miente... ¡Vigilad! Yo también vigilaré con vosotros».\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mdlxvii{Cuando vino Nuestra orden, salvamos por una misericordia venida de Nosotros a Suayb y a los que con él creían. El Grito sorprendió a los que habían sido impíos y amanecieron muertos en sus casas,\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mdlxviii{como si no hubieran habitado en ellas. ¡Sí! Atrás los madianitas! como también se había dicho a los tamudeos.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mdlxix{Y ya enviamos a Moisés con Nuestros signos y con una autoridad manifiesta\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mdlxx{a Faraón y a sus dignatarios. Pero éstos siguieron la orden de Faraón. Y la orden de Faraón no era sensata.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mdlxxi{El día de la Resurreción, precederá a su pueblo y le conducirá a beber al Fuego. ¡Qué mal abrevadero...!\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mdlxxii{En esta vida fueron perseguidos por una maldición y lo serán también el día de la Resurrección. ¡Qué mal regalo...!\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mdlxxiii{Te contamos estas cosas de las ciudades: algunas de ellas están aún en pie, otras son rastrojo.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mdlxxiv{No hemos sido Nosotros quienes han sido injustos con sus habitantes, sino que ellos lo han sido consigo mismos. Sus dioses, a los que invocaban, en lugar de invocar a Alá, no les sirvieron de nada cuando vino la orden de tu Señor. No hicieron sino aumentar su perdición.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mdlxxv{Así castiga tu Señor cuando castiga las ciudades que son impías. Su castigo es doloroso, severo.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mdlxxvi{Ciertamente, hay en ello un signo para quien teme el castigo de la otra vida. Ése es un día en que todos los hombres serán congregados, un día que todos presenciarán.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mdlxxvii{No lo retrasaremos sino hasta el plazo fijado.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mdlxxviii{El día que esto ocurra nadie hablará sino con Su permiso. De los hombres, unos serán desgraciados, otros felices.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mdlxxix{Los desgraciados estarán en el Fuego, gimiendo y bramando,\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mdlxxx{eternamente, mientras duren los cielos y la tierra, a menos que tu Señor disponga otra cosa. Tu Señor hace siempre lo que quiere.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mdlxxxi{Los felices, en cambio, estarán en el Jardín, eternamente, mientras duren los cielos y la tierra, a menos que tu Señor disponga otra cosa. Será un don ininterrumpido.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mdlxxxii{No vivas con dudas respecto a lo que sirven esas gentes. No sirven sino como servían antes sus padres. Vamos a darles, sin mengua, la parte que les corresponde.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mdlxxxiii{Y ya dimos a Moisés la Escritura, pero discreparon acerca de ella y, si no llega a ser por una palabra previa de tu Señor, ya se habría decidido entre ellos. Y ellos dudan seriamente de ella.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mdlxxxiv{Ciertamente, tu Señor remunerará a todos sus obras sin falta. Está bien informado de lo que hacen.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mdlxxxv{Sé recto como se te ha ordenado y lo mismo los que, contigo, se arrepientan. ¡No seáis rebeldes! Él ve bien lo que hacéis.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mdlxxxvi{¡Y no os arriméis a los impíos, no sea que el fuego os alcance! No tenéis, fuera de Alá amigos. Luego, no seréis auxiliados.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mdlxxxvii{Haz la azalá en las dos horas extremas del día y en las primeras de la noche. Las buenas obras disipan las malas. Ésta es una amonestación para los que recuerdan.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mdlxxxviii{¡Y ten paciencia! Alá no deja de remunerar a quienes hacen el bien.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mdlxxxix{Entre las generaciones que os precedieron, ¿por qué no hubo gentes virtuosas que se opusieran a la corrupción en la a tierra, salvo unos pocos que Nosotros salvamos, mientras que los impíos persistían en el lujo en que vivían y se hacían culpables?\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mdxc{No iba tu Señor a destruir las ciudades injustamente mientras sus poblaciones se portaban correctamente.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mdxci{Tu Señor, si hubiera querido, habría hecho de los hombres una sola comunidad. Pero no cesan en sus discrepancias,\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mdxcii{salvo aquéllos que han sido objeto de la misericordia de tu Señor, y por eso los ha creado. Se ha cumplido la palabra de tu Señor: «¡He de llenar la gehena de genios y de hombres, de todos ellos!»\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mdxciii{Te contamos todo esto, sacado de las historias de los enviados, para confirmar tu corazón. Así te llegan, con ellas, la Verdad, una exhortación y una amonestación para los creyentes.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mdxciv{Y di a los que no creen: «¡Obrad según vuestra situación! Nosotros también obraremos....\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mdxcv{¡Y esperad! ¡Nosotros esperamos!»\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mdxcvi{A Alá pertenece lo oculto de los cielos y de la tierra. Él es el fin de todo. ¡Sírvele! ¡Confía en Él! Tu Señor está atento a lo que hacéis.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mdxcvii{\basmalahes 'lr. Ésas son las aleyas de la Escritura clara.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdxcviii{La hemos revelado como Corán árabe. Quizás, así razonéis.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdxcix{Con la revelación que te hacemos de este Corán vamos a contarte Nosotros el más bello de los relatos, aunque hayas sido antes de los despreocupados.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdc{Cuando José dijo a su padre: «¡Padre! He visto once estrellas, el sol y la luna. Los he visto prosternarse ante mí».\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdci{Dijo: «¡Hijito! !No cuentes tu sueño a tus hermanos; si no, emplearán una artimaña contra tí El Demonio es para el hombre un enemigo declarado.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdcii{Así te elegirá tu Señor y te enseñará a interpretar sueños. Completará Su gracia en ti y en la familia de Jacob, como antes la completó en tus dos antepasados Abraham e Isaac. Tu Señor es omnisciente, sabio».\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdciii{Ciertamente, en José y sus hermanos hay signos para los que inquieren.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdciv{Cuando dijeron: «Sí, nuestro padre quiere más a José y a su hermano que a nosotros, aun siendo nosotros más numerosos. Nuestro padre está evidentemente extraviado.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdcv{¡Matemos a José o expulsémosle a cualquier país, para que nuestro padre no nos mire más que a nosotros! Desaparecido José, seremos gente honrada».\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdcvi{Pero uno de ellos dijo: «¡No matéis a José ¡Echadlo, más bien, al fondo del aljibe, si es que os lo habéis propuesto...! Algún viajero lo recogerá...»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdcvii{Dijeron: «¡Padre! ¡,Por qué no te fías de nosotros respecto a José? Tenemos buenas intenciones para con él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdcviii{¡Envíale mañana con nosotros! Se divertirá y jugará. Cuidaremos, ciertamente, de él».\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdcix{«Me entristece que os lo llevéis», dijo. «Temo que, en un descuido vuestro, se lo coma el lobo».\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdcx{Dijeron: «Si el lobo se lo comiera, siendo nosotros tantos, sí que tendríamos mala suerte».\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdcxi{Cuando se lo llevaron y se pusieron de acuerdo para echarlo al fondo del aljibe... Y le inspiramos: «¡Ya les recordarás más tarde, sin que te reconozcan, lo que ahora han hecho!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdcxii{Al anochecer regresaron a su padre, llorando.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdcxiii{Dijeron: «Padre! Fuimos a hacer carreras y dejamos a José junto a nuestras cosas. Entonces, se lo comió el lobo. No nos creerás, pero decimos la verdad».\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdcxiv{Y presentaron su camisa manchada de sangre falsa. Dijo: «¡No! Vuestra imaginación os ha sugerido esto. ¡Hay que tener digna paciencia! Alá es Aquél Cuya ayuda se implora contra lo que contáis».\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdcxv{Llegaron unos viajeros y enviaron a su aguador, que bajó el cubo. Dijo: «¡Buena noticia! ¡Hay aquí un muchacho!» Y lo ocultaron con ánimo de venderlo. Pero Alá sabía bien lo que hacían.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdcxvi{Y lo malvendieron por contados dirhemes, subestimándolo.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdcxvii{El que lo había comprado, que era de Egipto, dijo a su mujer: «¡Acógele bien! Quizá nos sea útil o lo adoptemos como hijo». Así dimos poderío a José en el país, y hasta le enseñamos a interpretar sueños. Alá prevalece en lo que ordena, pero la mayoría de los hombres no saben.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdcxviii{Cuando alcanzó la madurez, le dimos juicio y ciencia. Así retribuimos a quienes hacen el bien.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdcxix{La señora de la casa en que estaba José le solicitó. Cerró bien las puertas y dijo: «¡Ven acá!» Dijo él: «¡Alá me libre! Él es mi señor y me ha procurado una buena acogida. Los impíos no prosperarán».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdcxx{Ella lo deseaba y él la deseó. De no haber sido iluminado por su Señor... Fue así para que apartáramos de él el mal y la vergüenza. Era uno de Nuestros siervos escogidos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdcxxi{Se precipitaron los dos hacia la puerta y ella desgarró por detrás su camisa. Y encontraron a la puerta a su marido. Dijo ella: «¡Cuál es la retribución de quien ha querido mal a tu familia, sino la cárcel o un castigo doloroso?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdcxxii{Dijo: «Ella me ha solicitado». Y un miembro de la familia de ella atestiguó que si su camisa había sido desgarrada por delante, entonces, ella decía la verdad y él mentía,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdcxxiii{mientras que si había sido desgarrada por detrás, entonces, ella mentía, y él decía la verdad.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdcxxiv{Y cuando vio que su camisa había sido desgarrada por detrás dijo: «Es una astucia propia de vosotras. Es enorme vuestra astucia...\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdcxxv{¡José! ¡No pienses más en eso! ¡Y tú, pide perdón por tu pecado! ¡Has pecado!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdcxxvi{Unas mujeres decían en la ciudad: «La mujer del Poderoso solicita a su mozo. Se ha vuelto loca de amor por él. Sí, vemos que está evidentemente extraviada».\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdcxxvii{Cuando ella oyó sus murmuraciones, envió a por ellas y les preparó un banquete, dando a cada una de ellas un cuchillo. Y dijo que saliera adonde ellas estaban. Cuando las mujeres le vieron, le encontraron tan bien parecido que se hicieron cortes en las manos y dijeron: «¡Santo Alá! ¡Éste no es un mortal, éste no es sino un ángel maravilloso!»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdcxxviii{Dijo ella: «Ahí tenéis a aquél por quien me habéis censurado y a quien yo he solicitado, pero él ha permanecido firme. Ahora bien, si no hace lo que yo le ordeno, ha de ser encarcelado y será, ciertamente, de los despreciables».\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdcxxix{Dijo él: «¡Señor! Prefiero la cárcel a acceder a lo que ellas me piden. Pero, si no apartas de mí su astucia, cederé a ellas y seré de los ignorantes».\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdcxxx{Su Señor le escuchó y apartó de él su astucia. Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdcxxxi{Más tarde, a pesar de haber visto los a signos, les pareció que debían encarcelarle por algún tiempo.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdcxxxii{Con él. entraron en la cárcel dos esclavos. Uno de ellos dijo: «Me he visto prensando uva». Y el otro dijo: «Yo me he visto llevando sobre la cabeza pan, del que comían los pájaros. ¡Danos a conocer su interpretación! Vemos que eres de quienes hacen el bien.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdcxxxiii{Dijo: «No recibiréis la comida que os corresponde antes de que yo os haya, previamente, dado a conocer su interpretación. Esto forma parte de lo que mi Señor me ha enseñado. He abandonado la religión de gente que no creía en Alá ni en la otra vida.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdcxxxiv{y he seguido la religión de mis antepasados Abraham, Isaac y Jacob. No debemos asociar nada a Alá. Este es un favor que Alá nos hace, a nosotros y a los hombres. Pero la mayoría de los hombres no agradecen.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdcxxxv{¡Compañeros de cárcel! ¿Son preferibles señores separados a Alá, el Uno, el Invicto?\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdcxxxvi{Lo que servís, en lugar de servirle a Él, no son sino nombres que habéis puesto, vosotros y vuestros padres, nombres a los que Alá no ha conferido ninguna autoridad. La decisión pertenece sólo a Alá. Él ha ordenado que no sirváis a nadie sino a Él. Ésa es la religión verdadera. Pero la mayoría de los hombres no saben.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdcxxxvii{¡Compañeros de cárcel! Uno de vosotros dos escanciará vino a su señor. El otro será crucificado y los pájaros comerán de su cabeza. Se ha decidido ya lo que me consultabais».\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdcxxxviii{Y dijo a aquél de los dos de quien creía que iba a salvarse: «¡Recuérdame ante tu señor!», pues el Demonio había hecho que se olvidara del recuerdo de su Señor. Y continuó en la cárcel varios años más.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdcxxxix{El rey dijo: «He visto siete vacas gordas a las que comían siete flacas, y siete espigas verdes y otras tantas secas. ¡Dignatarios! ¡Aclaradme mi sueño, si es que sois capaces de interpretar sueños!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdcxl{Dijeron: «¡Amasijo de sueños! Nosotros no sabemos de interpretación de sueños.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdcxli{Aquél de los dos que se había salvado recordó al cabo de un tiempo y dijo: «¡Yo os daré a conocer su interpretación! ¡Dejadme ir!»\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdcxlii{«¡José, veraz! ¡Acláranos qué significan siete vacas gordas a las que comen siete flacas y siete espigas verdes y otras tantas secas! Quizá vuelva yo a los hombres. Quizás, así, se enteren».\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdcxliii{Dijo: «Sembráis durante siete años, como de costumbre, y, al segar, dejad la espiga, salvo una porción pequeña de que comeréis.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdcxliv{Sucederán siete años de carestía que agotarán lo que hayáis almacenado previsoramente, salvo un poco que reserváis.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdcxlv{Seguirá un año en el que la gente será favorecida y podrá prensar».\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdcxlvi{El rey dijo: «¡Traédmelo!» Cuando el enviado vino a él, dijo: «¡Vuelve a tu señor y pregúntale qué intención animaba a las mujeres que se hicieron cortes en las manos! Mi Señor está bien enterado de su astucia».\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdcxlvii{.Dijo: «¿Cuál era vuestra intención cuando solicitasteis a José?» Dijeron ellas: «¡Santo Alá! No sabemos de él que haya hecho nada malo». La mujer del Poderoso dijo: «Ahora brilla la verdad. ¡Yo soy la que le solicitó! Él es de los que dicen la verdad».\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdcxlviii{«Esto es así para que sepa que no le he traicionado a escondidas y que Alá no dirige la astucia de los traidores.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdcxlix{Yo no pretendo ser inocente. El alma exige el mal, a menos que mi Señor use de Su misericordia. Mi Señor es indulgente, misericordioso».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mdcl{El rey dijo: «¡Traédmelo! Le destino a mi servicio». Cuando hubo hablado con él, dijo: «Hoy has encontrado entre nosotros un puesto de autoridad, de confianza».\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mdcli{Dijo: «¡Ponme al frente de los almacenes del país! ¡Yo sé bien cómo guardarlos!»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mdclii{Y así dimos poderío a José en el país, en el que podía establecerse donde quería. Nosotros hacemos objeto de Nuestra misericordia a quien queremos y no dejamos de remunerar a quienes hacen el bien.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mdcliii{Con todo, la recompensa de la otra vida es mejor para quienes creen y temen a Alá.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mdcliv{Los hermanos de José vinieron y entraron a verle. Éste les reconoció, pero ellos a él no.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mdclv{Cuando les hubo suministrado sus provisiones dijo: «Traedme a un hermano vuestro de padre. ¿No veis que doy la medida justa y que soy el mejor de los hospederos?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mdclvi{Si no me lo traéis, no obtendréis más grano de mí ni os acercaréis más a mí»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mdclvii{Dijeron: «Se lo pediremos a su padre, ¡sí que lo haremos!»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mdclviii{Y dijo a sus esclavos: «¡Poned su mercancía en sus alforjas. Quizá la reconozcan cuando regresen a los suyos. Quizás, así, regresen...»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mdclix{De vuelta a su padre, dijeron: «¡Padre! Se nos ha negado el grano. Envía, pues, con nosotros a nuestro hermano y así recibiremos grano. Cuidaremos, ciertamente, de él».\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mdclx{Dijo: «Las seguridades que ahora me ofrecéis respecto a él ¿son diferentes de las que antes me ofrecisteis repecto a su hermano? Pero Alá es Quien cuida mejor y es la Suma Misericordia».\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mdclxi{Y, cuando abrieron su equipaje, hallaron que se les había devuelto su mercancía. Dijeron: «¡Padre! ¿Qué más podríamos desear? He aquí que se nos ha devuelto nuestra mercancía. Aprovisionaremos a nuestra familia, cuidaremos de nuestro hermano y añadiremos una carga de camello: será una carga ligera».\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mdclxii{Dijo: «No lo enviaré con vosotros mientras no os comprometáis ante Alá a traérmelo, salvo en caso de fuerza mayor». Cuando se hubieron comprometido, dijo: «Alá responde de nuestras palabras».\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mdclxiii{Y dijo: «¡Hijos míos! No entréis por una sola puerta, sino por puertas diferentes. Yo no os serviría de nada frente a Alá. La decisión pertenece sólo a Alá. ¡En Él confío! ¡Que los que confían confíen en Él!\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mdclxiv{Cuando entraron como les había ordenado su padre, esto no les valió de nada frente a Alá. Era sólo una necesidad del alma de Jacob, que él satisfizo. Poseía ciencia porque Nosostros se la habíamos enseñado. Pero la mayoría de los hombres no saben.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mdclxv{Cuando estuvieron ante José, éste arrimó a sí a su hermano y dijo: «¡Soy tu hermano! ¡No te aflijas, pues, por lo que hicieron!»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mdclxvi{Habiéndoles aprovisionado, puso la copa en la alforja de su hermano. Luego, un voceador pregonó: «¡Caravaneros! ¡Sois, ciertamente, unos ladrones!»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mdclxvii{Dijeron, dirigiéndose a ellos: «Qué echáis de menos?»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mdclxviii{Dijeron: «Echamos de menos la copa del rey. Una carga de camello para quien la traiga. Yo lo garantizo».\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mdclxix{«¡Por Alá!» dijeron. «Bien sabéis que o no hemos venido a corromper en el país y que no somos ladrones».\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mdclxx{Dijeron: «Y, si mentís, ¿Cuál será su retribución?»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mdclxxi{Dijeron: «La retribución de aquél en cuya alforja se encuentre será que se quede aquí detenido. Así retribuimos a los impíos».\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mdclxxii{Comenzó por sus sacos antes que por el de su hermano. Luego, la sacó del saco de su hermano. Nosotros sugerimos esta artimaña a José, pues no podía prender a su hermano según la ley del rey, a menos que Alá quisiera. Elevamos la categoría de quien Nosotros queremos. Por encima de todo el que posee ciencia hay Uno Que todo lo sabe.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mdclxxiii{Dijeron: «Si él ha robado, ya un hermano suyo ha robado antes». Pero José lo mantuvo secreto y no se lo reveló. Pensó: «Os encontráis en la situación peor y Alá sabe bien lo que contáis».\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mdclxxiv{Dijeron: «¡Poderoso! Tiene un padre muy anciano. Retén a uno de nosotros en su lugar. Vemos que eres de quienes hacen el bien».\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mdclxxv{Dijo: «¡Alá nos libre de retener a otro distinto de aquél en cuyo poder hemos encontrado nuestra propiedad! Seríamos, si no, injustos».\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mdclxxvi{Desesperado de hacerle cambiar, celebraron una consulta. El mayor dijo: «¿Habéis olvidado que vuestro padre os ha exigido comprometeros ante Alá y cómo faltasteis antes a José? Yo no saldré de este país hasta que mi padre me lo permita o hasta que Alá decida en mi favor, que Él es el Mejor en decidir.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mdclxxvii{Regresad a vuestro padre y decid: '¡Padre! Tu hijo ha robado. No atestiguamos sino lo que sabemos. No podíamos vigilar lo oculto.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mdclxxviii{Interroga a la ciudad en que nos hallábamos y a la caravana con la cual hemos venido. ¡Sí, decimos la verdad!'»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mdclxxix{Dijo: «¡No! Vuestra imaginación os ha sugerido esto. ¡Hay que tener digna paciencia! Tal vez Alá me los devuelva a todos. Él es el Omnisciente, el Sabio».\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mdclxxx{Y se alejó de ellos y dijo: «¡Qué triste estoy por José!» Y, de tristeza, sus ojos perdieron la vista. Sufría en silencio...\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mdclxxxi{Dijeron: «¡Por Alá, que no vas a dejar de recordar a José hasta ponerte enfermo o morir!»\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mdclxxxii{Dijo: «Sólo me quejo a Alá de mi pesadumbre y de mi tristeza. Pero sé por Alá lo que vosotros no sabéis...\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mdclxxxiii{¡Hijos míos! ¡Id e indagad acerca de José y de su hermano y no desesperéis de la misericordia de Alá, porque sólo el pueblo infiel desespera de la misericordia de Alá!»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mdclxxxiv{Cuando estuvieron ante él, dijeron: «¡Poderoso! Hemos sufrido una desgracia, nosotros y nuestra familia, y traemos una mercancía de poco valor. ¡Danos, pues, la medida justa y haznos caridad! Alá retribuye a los que hacen la caridad».\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mdclxxxv{Dijo: «¿Sabéis lo que, en vuestra ignorancia, hicisteis a José y a su hermano?»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mdclxxxvi{Dijeron: «¿De veras eres tú José?» Dijo: «¡Yo soy José y éste es mi hermano! Alá nos ha agraciado. Quien teme a Alá y es paciente...Alá no deja de remunerar a quienes hacen el bien».\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mdclxxxvii{Dijeron: «¡Por Alá! Ciertamente, Alá te ha preferido a nosotros. ¡Hemos pecado!»\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mdclxxxviii{Dijo: «¡Hoy no os reprochéis nada! ¡Alá os perdonará Él es la Suma Misericordia.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mdclxxxix{¡Llevaos esta camisa mía y aplicadla al rostro de mi padre: recuperará la vista! ¡Traedme luego a vuestra familia, a todos!»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mdcxc{Al tiempo que la caravana emprendía el regreso, dijo su padre: «Noto el olor de José, a menos que creáis que chocheo».\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mdcxci{Dijeron: «¡Por Alá, ya estás en tu antiguo error!»\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mdcxcii{Cuando el portador de la buena nueva llegó, la aplicó a su rostro y recuperó la vista. Dijo: «¿No os decía yo que sé por Alá lo que vosotros no sabéis?»\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mdcxciii{Dijeron: «¡Padre! ¡Pide a Alá que nos perdone nuestros pecados! ¡Hemos pecado!»\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mdcxciv{Dijo: «¡Pediré a mi Señor que os perdone! Él es el Indulgentes el Misericordioso».\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mdcxcv{Cuando estuvieron ante José, éste arrimó a sí a sus padres y dijo: «¡Entrad seguros en Egipto, si Alá quiere!»\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mdcxcvi{Hizo subir a sus padres al trono. Y cayeron prosternados ante él. Y dijo: «¡Padre! He aquí la interpretación de mi sueño de antes. Mi Señor ha hecho de él una realidad. Fue bueno conmigo, sacándome de la cárcel y trayéndoos del desierto, luego de haber sembrado el Demonio la discordia entre yo y mis hermanos. Mi Señor es bondadoso para quien Él quiere. Él es el Omnisciente, el Sabio.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mdcxcvii{¡Señor! Tú me has dado del dominio y me has enseñado a interpretar sueños. ¡Creador de los cielos y de la tierra! ¡Tú eres mi Amigo en la vida de acá y en la otra! ¡Haz que cuando muera lo haga sometido a Ti y me reúna con los justos!»\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mdcxcviii{Esto forma parte de las historias referentes a lo oculto, que Nosotros te revelamos. Tú no estabas con ellos cuando se pusieron de acuerdo e intrigaron.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mdcxcix{La mayoría de los hombres, a pesar de tu celo, no creen.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mdcc{Y tú no les pides un salario a cambio. No es sino una amonestación dirigida a todo el mundo.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mdcci{¡Qué designios hay en los cielos y en la tierra, junto a los cuales pasan indiferentes!\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mdccii{La mayoría no creen en Alá sino como asociadores.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mdcciii{¿Es que están, pues, a salvo de que les venga, cubriéndolos, el castigo de Alá, o de que les venga la Hora de repente, sin presentirla?\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mdcciv{Di: «Éste es mi camino. Basado en una prueba visible, llamo a Alá, y los que me siguen también. ¡Gloria a Alá! Yo no soy de los asociadores».\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mdccv{Antes de ti. no enviamos más que a hombres de las ciudades, a los que hicimos revelaciones. ¿No han ido por la tierra y mirado cómo terminaron sus antecesores? Sí, la Morada de la otra vida es mejor para los que temen a Alá ¿Es que no razonáis...?\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mdccvi{Cuando ya los enviados desesperaban y pensaban que se les había mentido, les llegó Nuestro auxilio y fue salvado el que quisimos. Pero Nuestro rigor no respetará al pueblo pecador.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mdccvii{Hay en sus historias motivo de reflexión para los dotados de intelecto... No es un relato inventado, sino confirmación de los mensajes anteriores, explicación detallada de todo, dirección y misericordia para gente que cree.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mdccviii{\basmalahes 'lmr. Ésas son las aleyas de la Escritura. Lo que se te ha revelado, de parte de tu Señor, es la verdad, pero la mayoría de los hombres no creen.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdccix{Alá es quien elevó los cielos sin pilares visibles. Luego, se instaló en el Trono y sujetó el sol y la luna, prosiguiendo los dos su curso hacia un término fijo. Él lo dispone todo. Explica detalladamente los signos. Quizás, así, estéis convencidos del encuentro de vuestro Señor.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdccx{Él es quien ha extendido la tierra y puesto en ella montañas firmes, ríos y una pareja en cada fruto. Cubre el día con la noche. Ciertamente, hay en ello signos para gente que reflexiona.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdccxi{En la tierra hay parcelas de terreno colindantes, viñedos, cereales, palmeras de tronco simple o múltiple. Todo lo riega una misma agua, pero hacemos que unos frutos sean mejores que otros. Ciertamente, hay en ello signos para gente que razona.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdccxii{Si de algo te asombras, asómbrate de su palabra: «Cuando seamos tierra, ¿es verdad que se nos creará de nuevo?» Ésos son los que niegan a su Señor, ésos los que llevarán argollas al cuello, ésos los moradores del Fuego, eternamente.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdccxiii{Te piden que precipites el mal antes que el bien, aun habiendo precedido castigos ejemplares. Tu Señor es el que perdona a los hombres, a pesar de su impiedad. Pero también tu Señor es severo en castigar.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdccxiv{Los infieles dicen: «¿Por qué no se le ha revelado un signo procedente de su Señor?» Tú eres sólo uno que advierte y cada pueblo tiene quien le dirija.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdccxv{Alá sabe lo que cada hembra lleva y cuándo se contrae el útero, cuándo se dilata. Todo lo tiene medido.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdccxvi{El Conocedor de lo oculto y de lo patente, el Grande, el Sublime.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdccxvii{Da lo mismo que uno de vosotros diga algo en secreto o lo divulgue, se esconda de noche o se muestre de día.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdccxviii{Tiene, por delante y por detrás, pegados a él, que le custodian por orden de Alá. Alá no cambiará la condición de un pueblo mientras éste no cambie lo que en sí tiene. Pero, si Alá quiere mal a un pueblo, no hay manera de evitarlo: fuera de Él, no tienen amigo.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdccxix{Él es quien os hace ver el relámpago, motivo de temor y de anhelo, Él quien forma los nubarrones.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdccxx{Por temor a Él, el trueno celebra Sus alabanzas, y los ángeles también. Él envía los rayos y hiere con ellos a quien Él quiere, mientras discuten sobre Alá, pues es fuerte en poderío.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdccxxi{La verdadera invocación es la que se dirige a Él. Los que invocan a otros, en lugar de invocarle a Él, no serán escuchados nada. Les pasará, más bien, como a quien, deseando alcanzar el agua con la boca, se contenta con extender hacia ella las manos y no lo consigue. La invocación de los infieles es inútil.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdccxxii{Ante Alá se prosternan mañana y tarde los que están en los cielos y en la tierra, de grado o por fuerza, así como sus sombras.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdccxxiii{Di: «¿Quién es el Señor de los cielos y de la tierra?» Di: «¡Alá!» Di: «¿Y tomaréis, en lugar de tomarle a Él, a amigos que no disponen para sí mismos de lo que puede aprovechar o dañar?» Di: «¿Son iguales el ciego y el vidente? ¿Son iguales las tinieblas y la luz? ¿Han dado a Alá asociados que hayan creado algo como lo que Él ha creado, al punto de llegar a confundir lo creado?» Di: «Alá es el Creador de todo. Él es el Uno, el Invicto».\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdccxxiv{Ha hecho bajar del cielo agua, que se desliza por los valles, según la capacidad de éstos. El torrente arrastra una espuma flotante, semejante a la escoria que se produce en la fundición para fabricar joyas o utensilios. Así habla Alá en símil de la Verdad y de lo falso: la espuma se pierde; en cambio, queda en la tierra lo útil a los hombres. Así propone Alá los símiles.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdccxxv{Los que escuchen a su Señor tendrán , lo mejor. A los que no Le escuchen, aunque posean todo lo que hay en la tierra y otro tanto y lo ofrezcan como rescate, les irá mal al ajustar las cuentas. Su morada será la gehena. ¡Qué mal lecho...!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdccxxvi{Quien sepa que lo que tu Señor te ha ir; revelado es la Verdad, ¿será como el ciego? Sólo se dejan amonestar los dotados de intelecto.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdccxxvii{Quienes observan fielmente la alianza con Alá y no violan lo pactado,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdccxxviii{quienes mantienen los lazos que Alá ha ordenado mantener y tienen miedo de su Señor y de que les vaya mal al ajustar las cuentas,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdccxxix{quienes tienen paciencia por deseo de agradar a su Señor, hacen la azalá, dan limosna, en secreto o en público, de lo que les hemos proveído y repelen el mal con el bien, ésos tendrán la Morada Postrera,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdccxxx{los jardines del edén, en que entrarán, junto con aquéllos de sus padres, esposas y descendientes que fueron buenos. Los ángeles entrarán en donde ellos estén, por todas partes:\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdccxxxi{«¡Paz sobre vosotros, por haber tenido paciencia!» ¡Qué agradable será la Morada Postrera!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdccxxxii{Pero quienes violan la alianza con Alá después de haberla contraído, cortan los lazos que Alá ha ordenado mantener y corrompen en la tierra, ésos serán malditos y tendrán una Morada detestable.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdccxxxiii{Alá dispensa el sustento a quien Él quiere: a unos con largueza, a otros con mesura. Se han regocijado en la vida de acá y la vida de acá no es, comparada con la otra, sino breve disfrute...\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdccxxxiv{Los infieles dicen: «¿Por qué no se le ha revelado un signo que procede de su Señor?» Di: «Alá extravía a quien Él quiere y dirige a Él a quien se arrepiente».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdccxxxv{Quienes crean, aquéllos cuyos corazones se tranquilicen con el recuerdo de Alá -¿cómo no van a tranquilizarse los corazones con el recuerdo de Alá?-,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdccxxxvi{quienes crean y obren bien, serán bienaventurados y tendrán un bello lugar de retorno.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdccxxxvii{Así te hemos enviado a una comunidad que fue precedida de otras, para que les recites lo que te hemos revelado, pero niegan al Compasivo. Di: «¡Es mi Señor! No hay más dios que Él. En Él confío y a Él me vuelvo arrepentido».\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdccxxxviii{Si hubiera un Corán en virtud del cual pudieran ponerse en marcha las montañas, agrietarse la tierra, hablar los muertos... Pero todo está en manos de Alá. Los que creen ¿no saben que si Alá hubiera querido habría puesto a todos los hombres en la buena dirección? No dejará de alcanzar una calamidad a los infieles en premio a sus obras o bien tendrá lugar cerca de sus casas hasta que se cumpla la promesa de Alá. Alá no falta a Su promesa.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdccxxxix{Ya han sido objeto de burla otros enviados antes de ti. Concedí una prórroga a los infieles; luego, les sorprendí. Y ¡cuál no fue Mi castigo...!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdccxl{¡,Acaso Quien vigila lo que cada uno hace...? Con todo, han dado a Alá asociados. Di: «¡Ponedles nombre! ¿O es que vais a informarle de algo en la tierra que Él ignore? ¿O es sólo una manera de hablar?» Al contrario, a los infieles les es engalanada su intriga y son apartados del Camino. Y aquél a quien Alá extravía no podrá encontrar quien le dirija.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdccxli{Tendrán un castigo en la vida de acá, pero en la otra tendrán un castigo más penoso. No tendrán quien les proteja contra Alá.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdccxlii{Imagen del Jardín prometido a quienes temen a Alá: fluyen arroyos por sus bajos, tiene frutos y sombra perpetuos. Ése será el fin de los que temieron a Alá. El fin de los infieles, empero, será el Fuego.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdccxliii{Aquéllos a quienes dimos la Escritura, se alegran de lo que se te ha revelado. En los grupos, en cambio, hay quienes rechazan una parte. Di: «He recibido sólo la orden de servir a Alá y de no asociarle. Llamo a Él y a Él vuelvo».\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdccxliv{Así lo hemos revelado como juicio en lengua árabe. Si tú sigues sus pasiones, después de haber sabido tú lo que has sabido, no tendrás amigo ni protector frente a Alá.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdccxlv{Mandamos a otros enviados antes de ti, y les dimos esposas y descendientes. Ningún enviado, empero, puede traer un signo si no es con permiso de Alá. Cada época tiene su Escritura»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdccxlvi{Alá abroga o confirma lo que quiere. Él tiene la Escritura Matriz.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdccxlvii{Lo mismo si te mostramos algo de lo que les reservamos, que si te llamamos, a ti te incumbe sólo la transmisión y a Nosotros el ajuste de cuentas.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdccxlviii{¿Es que no ven Nuestra intervención cuando reducimos la superficie de la tierra? ¡Alá decide! Nadie puede oponerse a Su decisión y es rápido en ajustar cuentas...\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdccxlix{Sus antecesores intrigaron, pero el éxito de toda intriga depende de Alá. Sabe lo que cada uno merece y los infieles verán para quién es la Morada Postrera.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdccl{Los infieles dicen: «¡Tú no has sido enviado!» Di: «Alá basta como testigo entre yo y vosotros, y quienes tienen la ciencia de la Escritura».\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdccli{\basmalahes 'lr. Ésta es una Escritura que te hemos revelado para que, con permiso de su Señor, saques a los hombres de las tinieblas a la luz, a la vía del Poderoso, del Digno de Alabanza,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdcclii{de Alá, a Quien pertenece lo que está en los cielos y lo que está en la tierra. ¡Ay de los infieles, por un castigo severo...!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdccliii{Quienes prefieren la vida de acá a la otra y desvían a otros del camino de Alá, deseando que sea tortuoso, están profundamente extraviados.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdccliv{No mandamos a ningún enviado que no hablara en la lengua de su pueblo, para que les explicara con claridad. Alá extravía a quien Él quiere y dirige a quien Él quiere. él es el Poderoso, el Sabio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdcclv{Ya hemos enviado a Moisés con Nuestros signos: «¡Saca a tu pueblo de las tinieblas a la luz y recuérdales los Días de Alá!» Ciertamente, hay en ello signos para todo aquél que tenga mucha paciencia, mucha gratitud.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdcclvi{Y cuando Moisés dijo a su pueblo: «Recordad la gracia que Alá os dispensó cuando os salvó de las gentes de Faraón, que os sometían a duro castigo, degollando a vuestros hijos varones y dejando con vida a vuestras mujeres. Con esto os probó vuestro Señor duramente».\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdcclvii{Y cuando vuestro Señor anunció: «Si sois agradecidos, os daré más. Pero, si sois desagradecidos,... Ciertamente, Mi castigo es severo».\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdcclviii{Moisés dijo: «Si sois desagradecidos, vosotros y todos los que están en la tierra... Alá Se basta a Sí mismo, es digno de alabanza».\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdcclix{¿No os habéis enterado de lo que pasó a quienes os precedieron: el pueblo de Noé, los aditas, los tamudeos, y los que les sucedieron, que sólo Alá conoce? Vinieron a ellos sus enviados con las pruebas claras, pero llevaron las manos a sus bocas y dijeron: «No creemos en vuestro mensaje y dudamos seriamente de aquello a que nos invitáis».\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdcclx{Sus enviados dijeron: «¿Es posible dudar de Alá, creador de los cielos y de la tierra? Él os llama para perdonaros vuestros pecados y remitiros a un plazo fijo». Dijeron: «No sois más que unos mortales como nosotros. Queréis apartarnos de los dioses a los que nuestros antepasados servían. ¡Aportadnos, pues, una autoridad evidente!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdcclxi{Sus enviados les dijeron: «No somos más que unos mortales como vosotros, pero Alá agracia a quien Él quiere de Sus siervos. Y nosotros no podemos aportaros una autoridad sino con permiso de Alá. ¡Que los creyentes confíen en Alá!»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdcclxii{¿Cómo no vamos a poner nosotros nuestra confianza en Alá, si nos ha dirigido en nuestros caminos? Tendremos, ciertamente, paciencia, a pesar de lo mucho que nos molestáis. ¡Que los que confían confíen en Alá!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdcclxiii{Los infieles dijeron a su enviados: «¡Hemos de expulsaros de nuestro territorio, a menos que volváis a nuestra religión!» Su Señor les inspiró: «¡Hemos de hacer perecer a los impíos\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdcclxiv{y hemos de instalaros, después de ellos, en la tierra! Esto es para quien tema Mi condición y tema Mi amenaza».\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdcclxv{Pidieron un fallo y todo tirano desviado sufrió una decepción.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdcclxvi{Le espera la gehena y se le dará a beber una mezcla de pus y sangre,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdcclxvii{a tragos, que apenas podrá pasar. La muerte vendrá a él por todas partes, sin que llegue a morir. Le espera un duro castigo.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdcclxviii{Las obras de quienes no creen en su Señor son como cenizas azotadas por el viento en un día de tormenta. No pueden esperar nada por lo que han merecido. Ése es el profundo extravío.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdcclxix{¿No has visto que Alá ha creado con un fin los cielos y la tierra? Si Él quisiera, os haría desaparecer y os sustituiría por criaturas nuevas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdcclxx{Y eso no sería difícil para Alá.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdcclxxi{Todos comparecerán ante Alá. Los débiles dirán entonces a los altivos: «Nosotros os seguíamos. ¿No podríais ahora servirnos de algo contra el castigo de Alá?» Dirán: «Si Alá nos hubiera dirigido, os habríamos dirigido. Da igual que nos impacientemos o que tengamos paciencia: no tenemos escape...»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdcclxxii{El Demonio dirá cuando se decida la cosa: «Alá os hizo una promesa de verdad, pero yo os hice una que no he cumplido. No tenía más poder sobre vosotros que para llamaros y me escuchasteis. ¡No me censuréis, pues, a mí, sino censuraos a vosotros mismos! Ni yo puedo socorreros, ni vosotros podéis socorrerme. Niego que me hayáis asociado antes a Alá». Los impíos tendrán un castigo doloroso,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdcclxxiii{mientras que a quienes hayan creído y obrado el bien se les introducirá en jardines por cuyos bajos fluyen arroyos y en los que estarán, con permiso de su Señor, eternamente. Como saludo oirán: «¡Paz!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdcclxxiv{¿No has visto cómo ha propuesto Alá como símil una buena palabra, semejante a un árbol bueno, de raíz firme y copa que se eleva en el aire,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdcclxxv{que da fruto en toda estación, con permiso de su Señor? Alá propone símiles a los hombres. Quizás, así. se dejen amonestar.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdcclxxvi{Una mala palabra es, al contrario, semejante a un árbol malo arrancado del suelo: le falta firmeza.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdcclxxvii{Alá confirma con palabra firme a quienes creen, en la vida de acá y en la , otra. Pero Alá extravía a los ímpios. Alá hace lo que quiere.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdcclxxviii{¿No has visto a quienes cambian la gracia de Alá por la incredulidad y alojan a su pueblo en la morada de perdición?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdcclxxix{En la gehena, en la que arderán. ¡Qué mala morada...!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdcclxxx{Atribuyeron iguales a Alá para extraviar a otros de Su camino. Di: «¡Gozad brevemente! ¡Estáis destinados al Fuego!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdcclxxxi{Di a mis servidores creyentes que hagan la azalá y que den limosna, en secreto o en público, de lo que les hemos proveído, antes de que venga día en que ya no haya comercio ni amistad.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdcclxxxii{Alá es Quien ha creado los cielos y la tierra y ha hecho bajar agua del cielo, mediante la cual ha sacado frutos para sustentaros. Ha sujetado a vuestro servicio las naves para que, por Su orden, surquen el mar. Ha sujetado a vuestro servicio los ríos.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdcclxxxiii{Ha sujetado a vuestro servicio el sol y la luna, que siguen su curso. Ha sujetado a vuestro servicio la noche y el día.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdcclxxxiv{Os ha dado de todo lo que Le habéis pedido. Si os pusierais a contar las gracias de Alá, no podríais enumerarlas. El hombre es, ciertamente, muy impío, muy desagradecido.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdcclxxxv{Y cuando Abraham dijo: «¡Señor! ¡Que esté segura esta ciudad! ¡Y evita que yo y mis hijos sirvamos a los ídolos!\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdcclxxxvi{¡Señor! ¡Han extraviado a muchos hombres! Quien me siga será de los míos. Pero quien me desobedezca... Tú eres indulgente, misericordioso.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdcclxxxvii{¡Señor! He establecido a parte de mi descendencia en un valle sin cultivar, junto a tu Casa Sagrada, ¡Señor!, para que hagan la azalá. ¡Haz que los corazones de algunos hombres sean afectuosos con ellos! ¡Provéeles de frutos! Quizás, así, sean agradecidos.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdcclxxxviii{¡Señor! Tú sabes bien lo que ocultamos y lo que manifestamos. No hay nada, en la tierra como en el cielo, que se esconda a Alá.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdcclxxxix{¡Alabado sea Alá, Que, a pesar de mi vejez, me ha regalado a Ismael e Isaac! Mi Señor oye, ciertamente, a quien Le invoca.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdccxc{¡Señor! ¡Haz que haga la azalá, y también mi descendencia, Señor, y acepta mi invocación!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdccxci{¡Señor! Perdónanos, a mí, a mis padres y a los creyentes el día que se ajusten cuentas».\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdccxcii{No creas que Alá se despreocupa de lo que hacen los impíos. Les remite solamente a un día en que mirarán con los ojos desorbitados,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdccxciii{corriendo con el cuello extendido, erguida la cabeza, clavada la mirada, el corazón vacío.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdccxciv{¡Prevén a los hombres contra el día en que tendrá lugar el Castigo! Entonces, dirán los impíos: «¡Señor! ¡Remítenos a un plazo próximo para que respondamos a Tu llamada y sigamos a los enviados!» «¿No jurasteis en otra ocasión que no conoceríais el ocaso?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdccxcv{Habitasteis las mismas viviendas que habitaron quienes fueron injustos consigo mismos y se os mostró claramente cómo hicimos con ellos. Os dimos ejemplos...»\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdccxcvi{Urdieron intrigas, pero Alá las conocía, y eso que eran intrigas como para trasladar montañas.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdccxcvii{No creas que Alá vaya a faltar a la promesa hecha a Sus enviados - ¡Alá es poderoso, vengador!-,\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdccxcviii{el día que la tierra sea sustituida por otra tierra y los cielos por otros cielos, que comparezcan ante Alá, el Uno, el Invicto.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdccxcix{Ese día verás a los culpables encadenados juntos,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdccc{sus indumentos hechos de alquitrán, cubiertos de fuego sus rostros.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdccci{Alá retribuirá así a cada uno según sus méritos. ¡Alá es rápido en ajustar cuentas!\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdcccii{Éste es un comunicado dirigido a los hombres para que, por él, sean advertidos, para que sepan que Él es un Dios Uno y para que los dotados de intelecto se dejen amonestar.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdccciii{\basmalahes 'lr. Éstas son las aleyas de la Escritura y de un Corán claro.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdccciv{Puede que los infieles deseen haber sido musulmanes...\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdcccv{¡Déjales que coman y que gocen por breve tiempo! ¡Que se distraigan con la esperanza! ¡Van a ver...!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdcccvi{Nunca destruimos ciudad cuya suerte no estuviera decidida.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdcccvii{Ninguna comunidad puede adelantar ni retrasar su plazo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdcccviii{Dicen: «¡Eh, tú, a quien se ha hecho bajar la Amonestación! ¡Eres, ciertamente, un poseso!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdcccix{Si es verdad lo que dices, ¿por qué no nos traes a los ángeles?»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdcccx{Haremos descender a los ángeles de veras y, entonces, ya no les será dado esperar.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdcccxi{Somos Nosotros Quienes hemos revelado la Amonestación y somos Nosotros sus custodios.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdcccxii{Antes de ti, mandamos a otros enviados a los pueblos antiguos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdcccxiii{No vino a ellos enviado que no se burlaran de él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdcccxiv{Así se lo insinuamos ahora a los pecadores,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdcccxv{pero no creen en él, a pesar del ejemplo que han dejado los antiguos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdcccxvi{Aun si les abriéramos una puerta del cielo y pudieran ascender a él,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdcccxvii{dirían: «Nuestra vista ha sido enturbiada nada más, o, más bien, somos gente a quienes se ha hechizado».\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdcccxviii{Sí, hemos puesto constelaciones en el cielo, las hemos engalanado a las miradas,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdcccxix{y las hemos protegido contra todo demonio maldito.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdcccxx{Pero, si uno de ellos escucha a hurtadillas, entonces, le persigue una llama brillante.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdcccxxi{Hemos extendido la tierra, colocado en ella firmes montañas y hecho crecer en ella de todo en la debida proporción.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdcccxxii{Y hemos puesto en ella subsistencias para vosotros y para quien no depende de vuestro sustento.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdcccxxiii{No hay nada de que no dispongamos Nosotros tesoros. Pero no lo hacemos bajar sino con arreglo a una medida determinada.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdcccxxiv{Hemos enviado los vientos, que fecundan, y hacemos bajar del cielo agua, de la que os damos a beber y que no sabéis conservar.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdcccxxv{Somos Nosotros, sí, Quienes damos la vida y la muerte, Nosotros los Herederos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdcccxxvi{Ciertamente, conocemos a los que de vosotros se adelantan y, ciertamente, conocemos a los que se retrasan.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdcccxxvii{Tu Señor es Quien les congregará. Él es sabio, omnisciente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdcccxxviii{Hemos creado al hombre de barro arcilloso, maleable,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdcccxxix{mientras que a los genios los habíamos creado antes de fuego de viento abrasador.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdcccxxx{Y cuando tu Señor dijo a los ángeles: «Voy a crear a un mortal de barro arcilloso, maleable,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdcccxxxi{y, cuando lo haya formado armoniosamente e infundido en él de Mi Espíritu, caed prosternados ante él».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdcccxxxii{Todo los ángeles, juntos, se prosternaron,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdcccxxxiii{excepto Iblis, que rehusó unirse a los que se prosternaban.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdcccxxxiv{Dijo: «¡Iblis! ¿Qué tienes, que no te unes a los que se prosternan?»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdcccxxxv{Dijo: «Yo no voy a prosternarme ante un mortal que Tú has creado de barro arcilloso, maleable».\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdcccxxxvi{Dijo: «¡Sal de aquí! ¡Eres un maldito!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdcccxxxvii{¡La maldición te perseguirá hasta el día del Juicio!»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdcccxxxviii{Dijo, «¡Señor, déjame esperar hasta el día de la Resurreción!»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdcccxxxix{Dijo: «¡Entonces, serás de aquéllos a quienes se ha concedido de prórroga\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdcccxl{hasta el día señalado!»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdcccxli{Dijo: «¡Señor! Por haberme Tú descarriado, he de engalanarles en la tierra y he de descarriarles a todos,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdcccxlii{salvo a aquéllos que sean siervos Tuyos escogidos».\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdcccxliii{Dijo: «Esto es, para Mí, una vía recta.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdcccxliv{Tú no tienes poder alguno sobre Mis siervos, salvo sobre los descarriados que te sigan».\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdcccxlv{La gehena es el lugar de cita de todos ellos.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdcccxlvi{Tiene siete puertas y cada una tendrá un grupo definido de ellos.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdcccxlvii{Los temerosos de Alá estarán entre jardines y fuentes.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdcccxlviii{«¡Entrad en ellos, en paz, seguros!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdcccxlix{Extirparemos el rencor que quede en sus pechos. Serán como hermanos, en lechos, unos enfrente de otros.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdcccl{Allí no sufrirán pena, ni serán expulsados.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdcccli{Informa a Mis siervos de que Yo soy el Indulgente, el Misericordioso,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdccclii{pero que Mi castigo es el castigo doloroso.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdcccliii{Infórmales de lo que pasó con los huéspedes de Abraham,\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdcccliv{cuando, entrados en donde él estaba, dijeron: «¡Paz!» Dijo: «¡Nos dais miedo!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdccclv{«¡No tengas miedo!», dijeron. «Te anunciamos la buena noticia de un muchacho lleno de ciencia».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mdccclvi{Dijo: «¿Me anunciáis buenas noticias, a pesar de mi avanzada edad? Y ¿qué es lo que me anunciáis?»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mdccclvii{Dijeron: «Te anunciamos la buena noticia de la Verdad. ¡No te desesperes!»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mdccclviii{Dijo: «Y quién podría desesperar de la misericordia de su Señor, sino los extraviados!?»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mdccclix{Dijo: «¿Qué es lo que os trae, ¡enviados!?»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mdccclx{Dijeron: «Se nos ha enviado a un pueblo pecador.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mdccclxi{No incluimos a la familia de Lot, a los que salvaremos, a todos.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mdccclxii{salvo a su mujer». Determinamos: sería de los que se rezagaran.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mdccclxiii{Cuando los enviados llegaron a la familia de Lot,\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mdccclxiv{dijo: «Sois gente desconocida».\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mdccclxv{Dijeron: «¡No, sino que te traemos aquello de que han dudado!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mdccclxvi{Te traemos la Verdad. ¡Sí, es como decimos!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mdccclxvii{¡Ponte en camino con tu familia, durante la noche! ¡Ve el último y que ninguno de vosotros se vuelva! ¡Id a donde se os ordena!»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mdccclxviii{Y decidimos respecto a él este asunto: iban a amanecer todos ellos, hasta el último, despedazados.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mdccclxix{La población de la ciudad vino, llena de alegría.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mdccclxx{Dijo: «¡Éstos son huéspedes míos! ¡No me deshonréis!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mdccclxxi{¡Temed a Alá y no me llenéis de vergüenza!»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mdccclxxii{Dijeron: «¿No te habíamos prohibido que trajeras a nadie?»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mdccclxxiii{Dijo: «¡Aquí tenéis a mis hijas, si es que os lo habéis propuesto...!»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mdccclxxiv{¡Por tu vida!, que erraban en su ofuscación.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mdccclxxv{Y les sorprendió el Grito a la salida del sol.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mdccclxxvi{La volvimos de arriba abajo e hicimos llover sobre ellos piedras de arcilla.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mdccclxxvii{Ciertamente, hay en ello signos para los que prestan atención.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mdccclxxviii{Está situada, ciertamente, en un camino que aún existe.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mdccclxxix{Ciertamente, hay en ello un signo para los creyentes.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mdccclxxx{Los habitantes de la Espesura fueron, sí impíos.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mdccclxxxi{y nos vengamos de ellos. Los dos casos son típicos y claros.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mdccclxxxii{Los habitantes de al-Hichr desmintieron a los enviados.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mdccclxxxiii{Les trajimos Nuestros signos y se apartaron de ellos.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mdccclxxxiv{Excavaban, tranquilos, casas en las montañas.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mdccclxxxv{Les sorprendió el Grito por la mañana\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mdccclxxxvi{y sus posesiones no les sirvieron de nada.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mdccclxxxvii{No hemos creado sino con un fin los cielos, la tierra y lo que entre ellos hay. ¡Sí, la Hora llega! ¡Perdona, pues, generosamente!\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mdccclxxxviii{Tu Señor es el Creador de todo, el Omnisciente.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mdccclxxxix{Te hemos dado siete de las mazani y el sublime Corán.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mdcccxc{¡No codicies los goces efímeros que hemos concedido a algunos de ellos y no estés triste por ellos! Y ¡sé benévolo con los creyentes!\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mdcccxci{Di: «¡Soy el monitor que habla claro!»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mdcccxcii{como hemos infligido un castigo a los conjurados,\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mdcccxciii{que han hecho pedazos el Corán.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mdcccxciv{¡Por tu Señor, que hemos de pedir cuentas a todos ellos\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mdcccxcv{de sus actos!\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mdcccxcvi{¡Anuncia lo que se te ordena y apártate de los asociadores!\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mdcccxcvii{Nosotros te bastamos contra los que se burlan,\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mdcccxcviii{que ponen, junto con Alá, a otro dios. ¡Van a ver...!\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mdcccxcix{Bien sabemos que te angustias por lo que dicen.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcm{Pero tú ¡celebra las alabanzas de tu Señor y sé de los que se prosternan!\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mcmi{¡Y sirve a tu Señor hasta que venga a ti la cierta!\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mcmii{\basmalahes ¡La orden de Alá viene! ¡No queráis adelantarla! ¡Gloria a Él! Está por encima de lo que Le asocian.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mcmiii{Hace descender a los ángeles con el Espíritu que procede de Su orden sobre quien Él quiere de Sus siervos: «¡Advertid que no hay otro dios que Yo! ¡Temedme, pues!»\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mcmiv{Ha creado los cielos y la tierra con un fin. Está por encima de lo que Le asocian.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mcmv{Ha creado al hombre de una gota y ¡ahí le tienes, porfiador declarado!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mcmvi{Y los rebaños los ha creado para vosotros. Hay en ellos abrigo y otras ventajas y os alimentáis de ellos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mcmvii{Disfrutáis viéndolos cuando los volvéis por la tarde o cuando los sacáis a pastar por la mañana.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mcmviii{Llevan vuestras cargas a países que no alcanzaríais sino con mucha pena. Vuestro Señor es, en verdad, manso, misericordioso.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mcmix{Y los caballos, los mulos, los asnos, para que os sirvan de montura y de ornato. Y crea otras cosas que no sabéis.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mcmx{A Alá le incumbe indicar el Camino, del que algunos se desvían. Si hubiera querido, os habría dirigido a todos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mcmxi{Él es Quien ha hecho bajar para vosotros agua del cielo. De ella bebéis y de ella viven las matas con que apacentáis.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mcmxii{Gracias a ella, hace crecer para vosotros los cereales, los olivos, las palmeras, las vides y toda clase de frutos. Ciertamente, hay en ello un signo para gente que reflexiona.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mcmxiii{Y ha sujetado a vuestro servicio la noche y el día, el sol y la luna. Las estrellas están sujetas por Su orden. Ciertamente, hay en ello signos para gente que razona.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mcmxiv{Las criaturas que Él ha puesto en la tierra para vosotros son de clases diversas. Ciertamente, hay en ello un signo para gente que se deja amonesta\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mcmxv{Él es Quien ha sujetado el mar para que comáis de él carne fresca y obtengáis de él adornos que poneros. Y ves que las naves lo surcan. Para que busquéis Su favor. Quizás, así, seáis agradecidos.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mcmxvi{Y ha fijado en la tierra las montañas para que ella y vosotros no vaciléis, ríos, caminos -quizás, así, seáis bien dirigidos-\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mcmxvii{y mojones. Y se guían por los astros.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mcmxviii{¿Acaso Quien crea es como quien no crea? ¿Es que no os dejaréis amonestar?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mcmxix{Si os pusierais a contar las gracias de Alá, no podríais enumerarlas. Alá es, en verdad, indulgente, misericordioso.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mcmxx{Alá sabe lo que ocultáis y lo que manifestáis.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mcmxxi{Aquéllos que ellos invocan en lugar de invocar a Alá, no crean nada, sino que ellos son creados.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mcmxxii{Están muertos, no vivos. Y no saben cuándo serán resucitados.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mcmxxiii{Vuestro Dios es un Dios Uno. Los corazones de quienes, altivos, no creen en la otra vida Le niegan.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mcmxxiv{¡En verdad, Alá sabe lo que ocultan y lo que manifiestan! No ama a los altivos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mcmxxv{Si se les dice: «¿Qué ha revelado vuestro Señor?», dicen: «Patrañas de los antiguos».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mcmxxvi{¡Que lleven su carga completa el día de la Resurrección y algo de la carga de los que, sin conocimiento, extraviaron! ¡Qué carga más detestable!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcmxxvii{Sus antecesores intrigaron. Alá vino contra los cimientos de su edificio y el techo se desplomó sobre ellos. Les vino el castigo de donde no lo presentían.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mcmxxviii{Luego, el día de la Resurrección, Él les avergonzará y dirá: «¿Dónde están Mis asociados, sobre los que discutíais?» Quienes hayan recibido la Ciencia dirán: «Hoy la vergüenza y la desgracia caen sobre los infieles,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mcmxxix{a quienes, injustos consigo mismos, los ángeles llaman». Ofrecerán someterse: «No hacíamos ningún mal». «¡Claro que sí! ¡Alá sabe bien lo que hacíais!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mcmxxx{¡Entrad por las puertas de la gehena, por toda la eternidad!» ¡Qué mala es la morada de los soberbios!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcmxxxi{A los que temieron a Alá se les dirá: «¿Qué ha revelado vuestro Señor?» Dirán: «Un bien». Quienes obren bien tendrán en la vida de acá una bella recompensa, pero la Morada de la otra vida será mejor aún. ¡Qué agradable será la Morada de los que hayan temido a Alá!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcmxxxii{Entrarán en los jardines del edén, por cuyos bajos fluyen arroyos. Tendrán en ellos lo que deseen. Así retribuye Alá a quienes Le temen,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcmxxxiii{a quienes, buenos, llaman los ángeles diciendo: «¡Paz sobre vosotros! ¡Entrad en el Jardín, como premio a vuestras obras!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcmxxxiv{¿Qué esperan sino que vengan los ángeles o que venga la orden de tu Señor? Así hicieron sus antecesores. No fue Alá quien fue injusto con ellos, sino que ellos lo fueron consigo mismos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcmxxxv{Les alcanzará la misma maldad de sus acciones y les cercará aquello de que se burlaban.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcmxxxvi{Dirán los asociadores: «Si Alá hubiera querido, ni nosotros ni nuestros padres habríamos servido nada en lugar de servirle a Él. No habríamos prohibido nada que Él no hubiera prohibido». Así hicieron sus antecesores. Y ¿qué otra cosa incumbe a los enviados, sino la transmisión clara?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcmxxxvii{Mandamos a cada comunidad un enviado: «Servid a Alá y evitad a los taguts». A algunos de ellos les dirigió Alá, mientras que otros merecieron extraviarse. ¡Id por la tierra y mirad cómo terminaron los desmentidores!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcmxxxviii{Si anhelas dirigirles,... Alá no dirige a quienes Él extravía y no tendrán quien les auxilie.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcmxxxix{Han jurado solemnemente por Alá: «¡Alá no resucitará a quien haya muerto!» ¡Claro que sí! Es una promesa que Le obliga, verdad. Pero la mayoría de los hombres no saben.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcmxl{Para mostrarles aquello en que discrepaban y para que sepan los infieles que han mentido.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcmxli{Cuando queremos algo, Nos basta decirle: «¡Sé!», y es.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcmxlii{A quienes han emigrado por Alá, después de haber sido tratados injustamente, hemos de procurarles una buena situación en la vida de acá, pero la recompensa de la otra será mayor aún. Si supieran...\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mcmxliii{Que tienen paciencia y confían en Alá...\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcmxliv{Antes de ti, no enviamos sino a hombres a los que hicimos revelaciones -si no lo sabéis, preguntad a la gente de la Amonestación-,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcmxlv{con las pruebas claras y con las Escrituras. A ti también te hemos revelado la Amonestación para que expliques a los hombres lo que se les ha revelado. Quizás,, así, reflexionen.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mcmxlvi{Quienes han tramado males ¿están, pues, a salvo de que Alá haga que la tierra los trague, o de que el castigo les venga de donde no lo presientan,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mcmxlvii{o de que les sorprenda en plena actividad sin que puedan escapar,\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mcmxlviii{o de que les sorprenda atemorizados? Vuestro Señor es, ciertamente, manso, misericordioso.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mcmxlix{¿No han visto que la sombra de todo lo que Alá ha creado se mueve hacia la derecha y hacia la izquierda, en humilde prosternación ante Alá?\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mcml{Lo que está en los cielos y en la tierra se prosterna ante Alá: todo animal y los ángeles. Y éstos sin altivez.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mcmli{Temen a su Señor, que está por encima de ellos, y hacen lo que se les ordena.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mcmlii{Alá ha dicho: «¡No toméis a dos dioses! ¡Él es sólo un Dios Uno! ¡Temedme, pues, a Mí, y sólo a Mí»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mcmliii{Suyo es lo que está en los cielos y en la tierra. Se le debe un culto permanente. ¿Vais a temer a otro diferente de Alá?\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mcmliv{No tenéis gracia que no proceda de Alá. Cuando sufrís una desgracia, acudís a Él.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mcmlv{Pero, luego, cuando aparta de vosotros la desgracia, he aquí que algunos de vosotros asocian a su Señor,\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mcmlvi{para terminar negando lo que les hemos dado. ¡Gozad, pues, brevemente! ¡Vais a ver...!\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mcmlvii{Atribuyen a lo que no conocen algunos de los bienes de que les hemos proveído. ¡Por Alá, que habréis de responder de lo que inventabais!\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mcmlviii{Atribuyen hijas a Alá -¡gloria a Él!- y a sí mismos se atribuyen lo que desean.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mcmlix{Cuando se le anuncia a uno de ellos una niña, se queda hosco y se angustia.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mcmlx{Esquiva a la gente por vergüenza de lo que se le ha anunciado, preguntándose si lo conservará, para deshonra suya, o lo esconderá bajo tierra... ¡Qué mal juzgan!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mcmlxi{Quienes no creen en la otra vida representan el mal, mientras que Alá, representa el ideal supremo. Él es el Poderoso, el Sabio.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mcmlxii{Si Alá tuviera en cuenta la impiedad humana, no dejaría ningún ser vivo sobre ella. Pero los retrasa por un plazo determinado y, cuando vence su plazo, no pueden retrasarlo ni adelantarlo una hora.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mcmlxiii{Atribuyen a Alá lo que detestan y sus lenguas inventan la mentira cuando pretenden que les espera lo mejor. ¡En verdad, tendrán el Fuego, e irán los primeros!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mcmlxiv{¡Por Alá!, que antes de ti hemos mandado enviados a comunidades. Pero el Demonio engalanó las obras de éstas y hoy es él su amigo. Tendrán un castigo doloroso.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mcmlxv{No te hemos revelado la Escritura sino para que les expliques en qué discrepaban y como dirección y misericordia para gente que cree.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mcmlxvi{Alá ha hecho bajar agua del cielo, vivificando con ella la tierra después de muerta. Ciertamente, hay en ello un signo para gente que oye.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mcmlxvii{Y en los rebaños tenéis motivo de reflexión. Os damos a beber del contenido de sus vientres, entre heces y sangre: una leche pura, grata a los bebedores.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mcmlxviii{De los frutos de las palmeras y de la vides obtenéis una bebida embriagadora y un bello sustento. Ciertamente, hay en ello un signo para gente que razona.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mcmlxix{Tu Señor ha inspirado a las abejas: «Estableced habitación en las montañas, en los árboles y en las construcciones humanas.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mcmlxx{Comed de todos los frutos y caminad dócilmente por los caminos de vuestro Señor». De su abdomen sale un líquido de diferentes clases, que contiene un remedio para los hombres. Ciertamente, hay en ello un signo para gente que reflexiona.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mcmlxxi{Alá os ha creado y luego os llamará. A algunos de vosotros se les deja que alcancen una edad decrépita, para que, después de haber sabido, terminen no sabiendo nada. Alá es omnisciente, poderoso.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mcmlxxii{Alá os ha favorecido a unos con más sustento que a otros; pero aquéllos que han sido favorecidos no ceden tanto de su sustento a sus esclavos que lleguen a igualarse con ellos. ¿Y rehusarán la gracia de Alá?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mcmlxxiii{Alá os ha dado esposas nacidas de vosotros. Y, de vuestras esposas, hijos varones y nietos. Os ha proveído también de cosas buenas. ¿Creen, pues, en lo falso y no creerán en la gracia de Alá?\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mcmlxxiv{En lugar de servir a Alá, sirven a lo que no puede procurarles sustento de los cielos ni de la tierra, lo que no posee ningún poder.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mcmlxxv{¡No pongáis a Alá como objeto de vuestras comparaciones! Alá sabe, mientras que vosotros no sabéis.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mcmlxxvi{Alá propone un símil: un esclavo, propiedad de otro, incapaz de nada, y un hombre a quien Nosotros hemos proveído de bello sustento, del que da limosna, en í secreto o en público. ¿Son, acaso, iguales? ¡Alabado sea Alá! Pero la mayoría no saben.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mcmlxxvii{Alá propone un símil: dos hombres, uno de ellos mudo, incapaz de nada y carga para su dueño; le mande adonde le mande, no trae ningún bien. ¡Son iguales este hombre y el que prescribe la justicia y está en una vía recta?\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mcmlxxviii{A Alá pertenece lo oculto de los cielos y de la tierra. La orden que anuncie la Hora no será sino como un abrir y cerrar de ojos, o más breve. Alá es omnipotente.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mcmlxxix{Alá os ha sacado del seno de vuestras madres, privados de todo saber. Él os ha dado el oído, la vista y el intelecto. Quizás, así, seáis agradecidos.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mcmlxxx{¿No han visto las aves sujetas en el aire del cielo? Sólo Alá las sostiene. Ciertamente, hay en ello signos para gente que cree.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mcmlxxxi{Alá os ha hecho de vuestras viviendas un lugar habitable. De la piel de los rebaños os ha hecho tiendas, que encontráis ligeras al trasladaros o al acampar. De su lana, de su pelo y de su crin, artículos domésticos para disfrute por algún tiempo.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mcmlxxxii{De lo que ha creado, Alá os ha procurado sombra, refugios en las montañas, indumentos que os resguardan del calor e indumentos que os protegen de los golpes. Así completa Su gracia en vosotros. Quizás, así, os sometáis a Alá.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mcmlxxxiii{Si vuelven la espalda... A ti te incumbe sólo la transmisión clara.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mcmlxxxiv{Conocen la gracia de Alá, pero la niegan. La mayoría son unos desagradecidos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mcmlxxxv{Y el día que hagamos surgir de cada comunidad a un testigo, no se permitirá a los que no hayan creído, ni se les agraciará.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mcmlxxxvi{Y cuando los impíos vean el castigo, éste no se les mitigará, ni les será dado esperar.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mcmlxxxvii{Y cuando los asociadores vean a los que ellos asociaron a Alá, dirán: «¡Señor!! ¡Éstos son los que Te habíamos asociado, a quienes invocábamos en lugar de invocarte a Tí!» Y esos asociados les rebatirán: «¡Mentís, ciertamente!»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mcmlxxxviii{Y, entonces, ofreceran a Alá someterse. Pero sus invenciones se esfumarán.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mcmlxxxix{A los que no creyeron y desviaron a otros del camino de Alá, les infligiremos castigo sobre castigo por haber corrompido.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mcmxc{El día que hagamos surgir de cada comunidad a un testigo de cargo, te traeremos a ti como testigo contra éstos. Te hemos revelado la Escritura como aclaración de todo, como dirección y misericordia, como buena nueva para los que se someten.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mcmxci{Alá prescribe la justicia, la beneficencia y la liberalidad con los parientes. Prohíbe la deshonestidad, lo reprobable y la opresión. Os exhorta. Quizás, así, os dejéis amonestar.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mcmxcii{Cuando concertéis una alianza con Alá, sed fieles a ella. No violéis los juramentos después de haberlos ratificado. Habéis puesto a Alá como garante contra vosotros. Alá sabe lo que hacéis.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mcmxciii{No hagáis como aquélla que deshacía de nuevo el hilo que había hilado fuertemente. Utilizáis vuestros juramentos para engañaros so pretexto de que una comunidad es más fuerte que otra. Alá no hace más que probaros con ello. El día de la Resurreción ha de mostraros aquello en que discrepabais.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mcmxciv{Alá, si hubiera querido, habría hecho de vosotros una sola comunidad. Pero extravía a quien Él quiere y dirige a quien Él quiere. Tendréis que responder de lo que hacíais.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mcmxcv{No utilicéis vuestros juramentos para engañaros; si no, el pie os fallará después de haberlo tenido firme. Gustaréis la desgracia por haber desviado a otros del camino de Alá y tendréis un castigo terrible.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mcmxcvi{No malvendáis la alianza con Alá. Lo que Alá tiene es mejor para vosotros. Si supierais...\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mcmxcvii{Lo que vosotros tenéis se agota. En cambio, lo que Alá tiene perdura. A los que tengan paciencia les retribuiremos, sí, con arreglo a sus mejores obras.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mcmxcviii{Al creyente, varón o hembra, que obre bien, le haremos, ciertamente, que viva una vida buena y le retribuiremos, sí, con arreglo a sus mejores obras.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcmxcix{Cuando recites el Corán, busca refugio en Alá del maldito Demonio.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mm{Él no puede nada contra los que creen y confían en su Señor.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmi{Sólo tiene poder contra los que traban amistad con él y asocian a Él otros dioses.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmii{Cuando sustituimos una aleya por otra -Alá sabe bien lo que revela- dicen: «¡Eres sólo un falsario!» Pero la mayoría no saben.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmiii{Di: «El Espiritu Santo lo ha revelado, de tu Señor, con la Verdad, para confirmar a los que creen y como dirección y buena nueva para los que se someten a Alá».\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmiv{Bien sabemos que dicen: «A este hombre le enseña sólo un simple mortal». Pero aquél en quien piensan habla una lengua no árabe, mientras que ésta es una lengua árabe clara.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmv{Alá no dirigirá a quienes no crean en los signos de Alá y tendrán un castigo doloroso.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmvi{Sólo inventan la mentira quienes no creen en los signos de Alá. Ésos son los que mienten.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmvii{Quien no crea en Alá luego de haber creído -no quien sufra coacción mientras su corazón permanece tranquilo en la fe, sino quien abra su pecho a la incredulidad-, ese tal incurrirá en la ira de Alá y tendrá un castigo terrible.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmviii{Y eso por haber preferido la vida de acá a la otra. Alá no dirige al pueblo infiel.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmix{Ésos son aquéllos cuyo corazón, oído y vista Alá ha sellado. Ésos los que no se preocupan...\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmx{¡En verdad, serán los que pierdan en la otra vida!\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmxi{Tu Señor, para quienes hayan emigrado, después de haber sufrido pruebas y de haber, luego, combatido y tenido paciencia, tu Señor será, ciertamente, después de eso, indulgente, misericordioso,\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmxii{el día que venga cada uno intentando justificarse, cada uno reciba conforme a sus obras y nadie sea tratado injustamente.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmxiii{Alá propone como parábola una ciudad, segura y tranquila, que recibía abundante sustento de todas partes. Y no agradeció las gracias de Alá. Alá, en castigo por su conducta, le dio a gustar la vestidura del hambre y del temor.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmxiv{Ha venido a ellos un Enviado salido de ellos, pero le han desmentido y el castigo les ha sorprendido en su impiedad.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmxv{¡Comed de lo lícito y bueno de que Alá os ha proveído! ¡Y agradeced la gracia de Alá, si es a Él solo a Quien servís!\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmxvi{Os ha prohibido sólo la carne mortecina, la sangre, la carne de cerdo y la de todo animal sobre el que se haya invocado un nombre diferente del de Alá. Pero, si alguien se ve compelido por la necesidad -no por deseo ni por afán de contravenir... Alá es indulgente, misericordioso.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmxvii{No digáis, entre lo que vuestras lenguas profieren, mentiras como «Esto es lícito y esto es ilícito», inventando así la mentira contra Alá. Quienes inventen la mentira contra Alá no prosperarán.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmxviii{¡Mezquino disfrute! ¡Tendrán un castigo doloroso!\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmxix{A los judíos les prohibimos lo que ya te contamos. No hemos sido Nosotros quienes han sido injustos con ellos, sino que ellos lo han sido consigo mismos.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmxx{Sin embargo, con los que, habiendo cometido el mal por ignorancia, luego se arrepientan y enmienden, tu Señor será, ciertamente, después de eso, indulgente, misericordioso.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmxxi{Abraham fue una comunidad, devoto de Alá, hanif y no asociador,\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmxxii{agradecido a Sus gracias. Él le eligió y le dirigió a una vía recta.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmxxiii{En la vida de acá le dimos una buena situación y en la otra es de los justos.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmxxiv{Luego, te hemos revelado: «Sigue la religión de Abraham, que fue hanif y no asociador».\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmxxv{El sábado se impuso solamente a los que sobre él discrepaban. Tu Señor, ciertamente, decidirá entre ellos el día de la Resurrección sobre aquello en que discrepaban.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmxxvi{Llama al camino de tu Señor con sabiduría y buena exhortación. Discute con ellos de la manera más conveniente. Tu Señor conoce mejor que nadie a quien se extravía de Su camino y conoce mejor que nadie a quien está bien dirigido.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmxxvii{Si castigáis, castigad de la misma manera que se os ha castigado. Pero, si tenéis paciencia, es mejor para vosotros.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmxxviii{¡Ten paciencia! No podrás tener paciencia sino con la ayuda de Alá. Y no estés triste por ellos, ni te angusties por sus intrigas.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmxxix{Alá está con quienes Le temen y quienes hacen el bien.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmxxx{\basmalahes ¡Gloria a Quien hizo viajar a Su Siervo de noche, desde la Mezquita Sagrada a la Mezquita Lejana, cuyos alrededores hemos bendecido, para mostrarle parte de Nuestros signos! Él es Quien todo lo oye, todo lo ve.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmxxxi{Dimos a Moisés la Escritura e hicimos de ella dirección para los Hijos de Israel: «¡No toméis protector fuera de Mí,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmxxxii{descendientes de los que llevamos con Noé!» Éste fue un siervo muy agradecido.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmxxxiii{Decretamos en la Escritura respecto a los Hijos de Israel: Ciertamente, corromperéis en la tierra dos veces y os conduciréis con gran altivez.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmxxxiv{Cuando, de las dos amenazas, se cumpla la primera, suscitaremos contra vosotros a siervos Nuestros, dotados de gran valor y penetrarán en el interior de las casas. Amenaza que se cumplirá».\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmxxxv{Más tarde, os permitimos desquitaros de ellos. Os dimos más hacienda e hijos varones e hicimos de vosotros un pueblo numeroso.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmxxxvi{El bien o mal que hagáis redundará en provecho o detrimento vuestro. «Cuando se cumpla la última amenaza, os afligirán y entrarán en el Templo como entraron una vez primera y exterminarán todo aquello de que se apoderen».\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmxxxvii{Quizá vuestro Señor se apiade de vosotros. Pero, si reincidís, Nosotros también reincidiremos. Hemos hecho de la gehena cárcel para los infieles.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmxxxviii{Este Corán dirige a lo que es más recto y anuncia a los creyentes que obran bien la buena nueva de una gran recompensa,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmxxxix{y que a los que no creen en la otra vida les hemos preparado un castigo doloroso.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmxl{El hombre invoca el mal con la misma facilidad con que invoca el bien: el hombre es muy precipitado...\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmxli{Hemos hecho de la noche y del día dos signos. Hemos apagado el signo de la noche y hecho visible el signo del día, para que busquéis favor de vuestro Señor y sepáis el número de años y el cómputo: todo lo hemos explicado detalladamente.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmxlii{Hemos asignado a cada hombre su suerte, y el día de la Resurrección le sacaremos una Escritura que encontrará desenrollada:\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmxliii{«¡Lee tu Escritura ! ¡Hoy bastas tú para ajustarte cuentas!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmxliv{Quien sigue la vía recta la sigue, en realidad, en provecho propio, y quien se extravía, se extravía, en realidad, en detrimento propio. Nadie cargará con la carga ajena. Nunca hemos castigado sin haber mandado antes a un enviado.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmxlv{Cuando queremos destruir una ciudad, ordenamos a sus ricos y ellos se entregan en ella a la iniquidad. Entonces, la sentencia contra ella se cumple y la aniquilamos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmxlvi{¡A cuántas generaciones hemos hecho perecer después de Noé! Tu Señor está suficientemente informado de los pecados de Sus siervos, los ve suficiente mente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmxlvii{Si alguien desea la vida fugaz, Nosotros nos apresuraremos a darle en ella lo que queremos -y a quien queremos. Luego, le destinamos la gehena, donde arderá denigrado, desechado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmxlviii{Al creyente que desee la otra vida y se esfuerce por alcanzarla, se le reconocerá su esfuerzo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmxlix{A unos y a otros, a todos, les concederemos en abundancia de los dones de tu Señor. ¡Los dones de tu Señor no se niegan a nadie!\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mml{¡Mira cómo hemos preferido a unos más que a otros! En la otra vida habrá, no obstante, categorías más elevadas y una mayor distinción.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmli{No pongas junto con Alá a otro dios; si no, te encontrarás denigrado, abandonado.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmlii{Tu Señor ha decretado que no debéis servir sino a Él y que debéis ser buenos con vuestros padres. Si uno de ellos o ambos envejecen en tu casa, no les digas: «¡Uf!» y trates con antipatía, sino sé cariñoso con ellos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmliii{Por piedad, muéstrate deferente con ellos y di: «¡Señor, ten misericordia de ellos como ellos la tuvieron cuando me educaron siendo niño!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmliv{Vuestro Señor conoce bien vuestros pensamientos. Si sois justos... Él es indulgente con los que se arrepienten sinceramente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmlv{Da lo que es de derecho al pariente, así como al pobre y al viaiero, pero sin prodigarte demasiado,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmlvi{que los pródigos son hermanos de los demonios, y el Demonio es desagradecido para con su Señor.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmlvii{Si, buscando una misericordia venida de tu Señor, que esperas, tienes que apartarte de aquéllos, diles, al menos, una palabra amable.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmlviii{No lleves la mano cerrada a tu cuello, ni la extiendas demasiado; si no, te encontrarás censurado, falto de recursos.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmlix{Tu Señor dispensa el sustento a quien Él quiere: a unos con largueza, a otros con mesura. Está bien informado de Sus siervos, les ve bien.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmlx{¡No matéis a vuestros hijos por miedo a empobreceros! Somos Nosotros Quienes les proveemos, y a vosotros también. Matarles es un gran pecado.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmlxi{¡Evitad la fornicación: es una deshonestidad! ¡Mal camino...!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmlxii{No matéis a nadie que Dios haya prohibido, sino con justo motivo. Si se mata a alguien sin razón, damos autoridad a su pariente próximo, pero que éste no se exceda en la venganza. Se le auxiliará.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmlxiii{No toquéis la hacienda del huérfano sino de manera conveniente hasta que alcance la madurez. ¡Cumplid todo compromiso, porque se pedirá cuenta de él!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmlxiv{Cuando midáis, dad la medida justa y pesad con una balanza exacta. Es mejor y da muy buen resultado.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmlxv{No vayas tras algo de lo que no tienes ningún conocimiento. Del oído, de la vista, del intelecto, de todo eso se pedirá cuenta.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmlxvi{No vayas por la tierra con insolencia, que no eres capaz de hender la tierra, ni de alzarte a la altura de las montañas.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmlxvii{Tu Señor detesta lo malo que en ello hay.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmlxviii{Esto forma parte de la sabiduría que tu Señor te ha inspirado. No pongas junto con Alá a otro dios; si no, serás precipitado en la gehena, censurado, desechado.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmlxix{¿Es que vuestro Señor, que ha escogido daros hijos varones, iba a tomar para Sí hijas de entre los ángeles? Decís, en verdad, algo muy grave.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmlxx{Hemos expuesto en este Corán para que se dejen amonestar, pero esto no hace sino acrecentar su repulsa.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmlxxi{Di: «Si hubiera dioses además de Él, como dicen, buscarían un camino que les condujera hasta el Señor del Trono.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmlxxii{¡Gloria a Él! ¡Está por encima de lo que dicen!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmlxxiii{Le glorifican los siete cielos, la tierra y sus habitantes. No hay nada que no celebre Sus alabanzas, pero no comprendéis su glorificación. Él es benigno, indulgente.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmlxxiv{Cuando recitas el Corán, tendemos un velo opaco entre ti y los que no creen en la otra vida,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmlxxv{velamos sus corazones y endurecemos sus oídos para que no lo entiendan. Cuando invocas en el Corán a tu Señor Solo, vuelven la espalda en repulsa.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmlxxvi{Nosotros sabemos bien lo que escuchan cuando te escuchan o cuando están en conciliábulos, cuando dicen los impíos: «No seguís sino a un hombre hechizado».\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmlxxvii{¡Mira a qué te comparan! Se extravían y no pueden encontrar camino.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmlxxviii{Dicen: «Cuando seamos huesos y polvo, ¿es verdad que se nos resucitará a una nueva creación?»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmlxxix{Di: «Aunque seáis piedra, hierro\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmlxxx{o cualquier sustancia que imaginéis difícil...» Dirán: «¿Y quién nos volverá!» Di: «Quien os creó una vez primera». Y, sacudiendo la cabeza hacia ti, dirán: «¿Cuándo?» Di: «Tal vez pronto».\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmlxxxi{El día que os llame, responderéis alabándole y creeréis no haber permanecido sino poco tiempo.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmlxxxii{Di a Mis siervos que hablen de la mejor manera que puedan. El Demonio siembra la discordia entre ellos. El Demonio es para el hombre un enemigo declarado.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmlxxxiii{Vuestro Señor os conoce bien. Si quiere, se apiadará de vosotros y, si quiere, os castigará. No te hemos enviado para que seas su protector.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmlxxxiv{Tu Señor conoce bien a quienes están en los cielos y en la tierra. Hemos preferido a unos profetas más que a otros. Y dimos a David Salmos.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmlxxxv{Di: «¡Invocad a los que, en lugar de Él, pretendéis! ¡No pueden evitaros la desgracia ni modificarla!»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmlxxxvi{Los mismos a quienes invocan buscan el medio de acercarse a su Señor. Esperan en Su misericordia y temen Su castigo. El castigo de tu Señor es temible.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmlxxxvii{No hay ninguna ciudad que no destruyamos o que no castiguemos severamente antes del día de la Resurreción. Está anotado en la Escritura.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmlxxxviii{No Nos ha impedido obrar milagros sino que los antiguos los desmintieran. Dimos la camella a los tamudeos como milagro palpable, pero obraron impíamente con ella. No obramos los milagros sino para atemorizar.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmlxxxix{Y cuando te dijimos: «Tu Señor cerca a los hombres». No hicimos del sueño que te mostramos y del árbol maldito mencionado en el Corán sino tentación para los hombres. Cuanto más les amedrentamos, más aumenta su rebeldía.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmxc{Y cuando dijimos a los ángeles: «¡Prosternaos ante Adán!». Se prosternaron, excepto Iblis, que dijo: «¿Voy a prosternarme ante quien has creado de arcilla?»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmxci{Dijo: «¿Qué Te parece? Éste es aquél a quien has honrado más que a mí. Si me remites hasta el día de la Resurrección, dominaré a todos sus descendientes, salvo a unos pocos».\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmxcii{Dijo: «¡Vete! La gehena será amplia retribución para ti y para tus secuaces.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmxciii{¡Ahuyenta con tu voz a todos los que puedas! ¡Atácales con tu caballería y con tu infantería! ¡Asóciate a ellos en la hacienda y en los hijos! ¡Promételes!». Pero el Demonio no les promete sino falacia.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmxciv{«Pero no tienes ninguna autoridad sobre Mis siervos». ¡Tu Señor basta como protector!\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmxcv{Vuestro Señor es Quien, para vosotros, hace que surquen las naves el mar, para que busquéis Su favor. Es misericordioso con vosotros.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmxcvi{Si sufrís una desgracia en el mar, los que invocáis se esfuman, Él no. Pero, en cuanto os salva llevándoos a tierra firme, os apartáis. El hombre es muy desagradecido.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmxcvii{¿Estáis, pues, a salvo de que Alá haga que la tierra os trague o de que envíe contra vosostros una tempestad de arena? No podrías encontrar protector.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmxcviii{¿O estáis a salvo de que lo repita una segunda vez, enviando contra vosotros un viento huracanado y anegándoos por haber sido desagradecidos? No encontraríais a nadie que, en vuestro favor, Nos demandara por ello.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmxcix{Hemos honrado a los hijos de Adán. Los hemos llevado por tierra y por mar, les hemos proveído de cosas buenas y los hemos preferido marcadamente a muchas otras criaturas.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmc{El día que llamemos a todos los hombres con su Libro, aquéllos a quienes se dé su Escritura en la diestra, ésos leerán su Escritura y no serán tratados injustamente en lo más mínimo.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmci{Quien haya estado ciego en esta vida continuará ciego en la otra y aún se extraviará más del Camino.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcii{En verdad, casi han conseguido desviarte de lo que te habíamos revelado, con objeto de que inventaras contra Nosotros otra cosa. Te habrían tomado como amigo.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmciii{Si no te hubiéramos confirmado, casi te habrías arrimado algún poco hacia ellos.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmciv{Te habríamos hecho gustar el doble en la vida y el doble en la muerte. Y no habrías encontrado quien te auxiliara contra Nosotros.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcv{En verdad, casi te incitaron a huir del país con objeto de hacerte salir de él -en ese caso no se habrían quedado en él después de ti sino por poco tiempo-,\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcvi{lo mismo que ocurrió con los enviados que mandamos antes de ti, práctica Nuestra que encontrarás inmutable.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcvii{Haz la azalá al ocaso hasta la caída de la noche, y la recitación del alba, que la recitación del alba tiene testigos.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmcviii{Parte de la noche, vela: será para ti una obra supererogatoria. Quizá tu Señor te resucite a un estado digno de encomio.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmcix{Y di: «¡Señor! ¡Hazme entrar bien, hazme salir bien! ¡Concédeme, de Ti, una autoridad que me auxilie!»\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmcx{Y di: «¡Ha venido la Verdad y se ha disipado lo falso! ¡Lo falso tiene que disiparse!»\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmcxi{Hacemos descender, por medio del Corán, lo que es curación y misericordia para los creyentes, pero esto no hace sino perder más a los impíos.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmcxii{Cuando agraciamos al hombre, éste se desvía y se aleja. Pero, si sufre un mal, se desespera.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmcxiii{Di: «Cada uno obra a su modo, pero vuestro Señor conoce bien al que va mejor dirigido por el Camino».\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmcxiv{Te preguntan por el espíritu. Di: «El espíritu procede de la orden de mi Señor». Pero no habéis recibido sino poca ciencia.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmcxv{Si quisiéramos, retiraríamos lo que te hemos revelado y no encontrarías quien te protegiera en esto contra Nosotros.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmcxvi{No es sino una misericordia venida de tu Señor, Que te ha favorecido grandemente.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmcxvii{Di: «Si los hombres y los genios se unieran para producir un Corán como éste, no podrían conseguirlo, aunque se ayudaran mutuamente».\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmcxviii{En este Corán hemos expuesto a los hombres toda clase de ejemplos. Pero la mayoría de los hombres no quieren sino ser infieles.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmcxix{Y dicen: «No creeremos en ti hasta que nos hagas brotar un manantial de la tierra,\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmcxx{o que tengas un jardín con palmeras y vides entre los que hagas brotar caudalosos arroyos,\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmcxxi{o que, como pretendes, hagas caer sobre nosotros parte del cielo o nos traigas en tu apoyo a Alá y a los ángeles,\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmcxxii{o que tengas una casa suntuosa, o te eleves en el aire. Pero tampoco vamos a creer en tu elevación mientras no nos hagas bajar una Escritura que podamos leer». Di: «¡Gloria a mi Señor! ¿Y qué soy yo sino un mortal, un enviado?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmcxxiii{No ha impedido a los hombres creer cuando les ha llegado la Dirección sino el haber dicho: «¿Ha mandado Alá a un mortal como enviado?»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmcxxiv{Di: «Si hubiera habido en la tierra ángeles andando tranquilamente, habríamos hecho que les bajara del cielo un ángel como enviado».\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmcxxv{Di: «Alá basta como testigo entre yo y vosotros. Está bien informado sobre Sus siervos, les ve bien».\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmcxxvi{Aquél a quien Alá dirige está bien dirigido. Pero no encontrarás amigos, fuera de Él, para aquéllos a quienes Él extravía. Les congregaremos el día de la Resurrección boca abajo, ciegos, mudos, sordos. Tendrán la gehena por morada. Siempre que el fuego vaya a apagarse, se lo atizaremos.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmcxxvii{Ésa será su retribución por no haber creído en Nuestros signos y por haber dicho: «Cuando seamos huesos y polvo, ¿es verdad que se nos resucitará a una nueva creación?»\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmcxxviii{¿Es que no ven que Alá, Que ha creado los cielos y la tierra, es capaz de crear semejantes a ellos? Les ha señalado un plazo indubitable, pero los impíos no quieren sino ser infieles.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmcxxix{Di: «Si poseyerais los tesoros de misericordia de mi Señor, entonces, los retendríais por miedo de gastarlos». El hombre es tacaño...\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmcxxx{Dimos a Moisés nueve signos claros. Pregunta a los Hijos de Israel qué pasó, cuando vino a ellos y Faraón le dijo: «¡Moisés! ¡Yo creo, sí, que estás hechizado!»\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmcxxxi{Dijo: «Tú sabes bien que sólo el Señor de los cielos y de la tierra ha hecho bajar éstos como pruebas evidentes. ¡Yo creo, Faraón, sí, que estás perdido!»,\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmcxxxii{Quiso ahuyentarles del país y le anegamos con todos los suyos.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmcxxxiii{Y, después de él, dijimos a los Hijos de Israel: «Habitad la tierra y, cuando se cumpla la promesa de la otra vida, os llevaremos en tropel».\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmcxxxiv{Lo hemos hecho descender con la Verdad y con la Verdad ha descendido. No te hemos enviado sino como nuncio de buenas nuevas y como monitor.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmcxxxv{Es un Corán que hemos dividido para que lo recites a la gente reposadamente. Lo hemos revelado de hecho.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmcxxxvi{Di: «Creáis en él o no, quienes han y recibido de antes la Ciencia, cuando les es recitado, caen prosternados, rostro en tierra,\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmcxxxvii{y dicen: '¡Gloria a nuestro Señor! ¡Se ha cumplido, sí, la promesa de nuestro Señor!'\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmcxxxviii{Y continúan rostro en tierra, llorando y creciendo en humildad».\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmcxxxix{Di: «¡Invocad a 'Alá' o invocad al 'Compasivo'! Como quiera que invoquéis, Él posee los nombres más bellos». No hagas la azalá en voz demasiado alta, ni demasiado baja, sino con voz moderada.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmcxl{Y di: «¡Alabado sea Alá, Que no ha adoptado un hijo, ni tiene asociado en el dominio, ni amigo frente a la humillación!» ¡Y ensalza Su grandeza!\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmcxli{\basmalahes ¡Alabado sea Alá, que ha revelado la Escritura a Su siervo y no ha puesto en ella tortuosidad,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcxlii{sino que la ha hecho recta, para prevenir contra una grave calamidad que procede de Él, anunciar a los creyentes que obran bien que tendrán una bella recompensa,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcxliii{en la que permanecerán para siempre,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmcxliv{y para advertir a los que dicen que Alá ha adoptado un hijo!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcxlv{Ni ellos ni sus predecesores tienen ningún conocimiento de eso. ¡Qué monstruosa palabra la que sale de sus bocas! No dicen sino mentira.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcxlvi{Tú quizá te consumas de pena, si no creen en esta historia, por las huellas que dejan.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcxlvii{Hemos adornado la tierra con lo que en ella hay para probarles y ver quién de ellos es el que mejor se porta\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcxlviii{Y, ciertamente, haremos de su superficie un sequeral.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcxlix{¿Crees que los de la caverna y de ar-Raqim constituyen una maravilla entre Nuestros signos?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcl{Cuando los jóvenes, al refugiarse en la caverna, dijeron: «¡Señor! ¡Concédenos una misericordia de Ti y haz que nos conduzcamos correctamente!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcli{Y les hicimos dormir en la caverna por muchos años.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmclii{Luego, les despertamos para saber cuál de los dos grupos calculaba mejor cuánto tiempo habían permanecido.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcliii{Nosotros vamos a contarte su relato verdadero. Eran jóvenes que creían en su Señor y a quienes habíamos confirmado en la buena dirección.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcliv{Fortalecimos su ánimo cuando se levantaron y dijeron: «Nuestro Señor es el Señor de los cielos y de la tierra. No invocaremos a más dios que a Él. Si no, diríamos una solemne mentira.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmclv{Este pueblo nuestro ha tomado dioses en lugar de tomarle a Él. ¿Por qué no presentan alguna autoridad clara en su favor? ¿Hay alguien que sea más impío que quien inventa una mentira contra Alá?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmclvi{Cuando os hayáis alejado de ellos y de lo que, en lugar de Dios, sirven, ¡refugiaos en la caverna! Vuestro Señor extenderá, sobre vosotros algo de Su misericordia y dispondrá de la mejor manera de vuestra suerte».\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmclvii{Habrías visto que el sol, al salir, se desviaba de su caverna hacia la derecha y, al ponerse, los rebasaba hacia la izquierda, mientras ellos estaban en una oquedad de ella. Ése es uno de los signos de Alá. Aquél a quien Alá dirige está bien dirigido, pero para aquél a quien Él extravía no encontrarás amigo que le guíe.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmclviii{Les hubieras creído despiertos cuando, en realidad, dormían. Les dábamos vuelta a derecha e izquierda, mientras su perro estaba en el umbral con las patas delanteras extendidas. Si les hubieras visto, te habrías escapado de ellos, lleno de miedo.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmclix{Así estaban cuando les despertamos para que se preguntaran unos a otros. Uno de ellos dijo: «¿Cuánto tiempo habéis permanecido?» Dijeron: «Permanecimos un día o menos». Dijeron: «Vuestro Señor sabe bien cuánto tiempo habéis permanecido. Enviad a uno de vosotros con esta vuestra moneda a la ciudad. Que mire quién tiene el alimento más fresco y que os traiga provisión del mismo. Que se conduzca bien y que no atraiga la atención de nadie sobre vosotros,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmclx{pues, si se enteraran de vuestra existencia, os lapidarían u os harían volver a su religión y nunca más seríais felices».\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmclxi{Y así los descubrimos para que supieran que lo que Alá promete es verdad y que no hay duda respecto a la Hora. Cuando discutían entre sí sobre su asunto. Dijeron: «¡Edificad sobre ellos! Su Señor les conoce bien». Los que prevalecieron en su asunto dijeron: «¡Levantemos sobre ellos un santuario!»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmclxii{Unos dirán: «Eran tres, cuatro con su perro». Otros dirán: «Eran cinco, seis con su perro», conjeturando sobre lo oculto. Otros dirán: «Eran siete, ocho con su perro». Di: «Mi Señor sabe bien su número, sólo pocos les conocen». No discutas, pues, sobre ellos, sino someramente y no consultes sobre ellos a nadie.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmclxiii{Y no digas a propósito de nada: «Lo haré mañana»,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmclxiv{sin: «si Alá quiere». Y, si te olvidas de hacerlo, recuerda a tu Señor, diciendo: «Quizá mi Señor me dirija a algo que esté más cerca que eso de lo recto».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmclxv{Permanecieron en su caverna trescientos años, a los que se añaden nueve.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmclxvi{Di: «Alá sabe bien cuánto tiempo permanecieron. Suyo es lo oculto de los cielos y de la tierra. ¡Qué bien ve y qué bien oye! Fuera de Él, los hombres no tienen amigo. Y Él no asocia a nadie en Su decisión».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmclxvii{Recita lo que se te ha revelado de la Escritura de tu Señor. No hay quien pueda cambiar Sus palabras y no encontrarás asilo fuera de Él.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmclxviii{¡No rehúyas estar con los que invocan a su Señor mañana y tarde por deseo de agradarle! ¡No quites los ojos de ellos por deseo del ornato de la vida de acá! ¡No obedezcas a aquél cuyo corazón hemos hecho que se despreocupe de Nuestro recuerdo, que sigue su pasión y se conduce insolentemente!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmclxix{Y di: «La Verdad viene de vuestro Señor. ¡Que crea quien quiera, y quien no quiera que no crea!» Hemos preparado para los impíos un fuego cuyas llamas les cercarán. Si piden socorro, se les socorrerá con un líquido como de metal fundido, que les abrasará el rostro. ¡Mala bebida! Y ¡mal lugar de descanso!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmclxx{Quienes, en cambio, crean y obren bien... No dejaremos de remunerar a quienes se conduzcan bien.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmclxxi{Para ésos serán los jardines del edén, por cuyos bajos fluyen arroyos. Se les adornará allí con brazaletes de oro, se les vestirá de satén y brocado verdes, estarán allí reclinados en divanes. ¡Qué agradable recompensa y qué bello lugar de descanso!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmclxxii{Propónles la parábola de dos hombres, a uno de los cuales dimos dos viñedos, que cercamos de palmeras y separamos con sembrados.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmclxxiii{Ambos viñedos dieron su cosecha, no fallaron nada, e hicimos brotar entre ellos un arroyo.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmclxxiv{Uno tuvo frutos y dijo a su compañero, con quien dialogaba: «Soy más que tú en hacienda y más fuerte en gente».\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmclxxv{Y entró en su viñedo, injusto consigo mismo. Dijo: «No creo que éste perezca nunca.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmclxxvi{Ni creo que ocurra la Hora. Pero, aun si soy llevado ante mi Señor, he de encontrar, a cambio, algo mejor que él».\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmclxxvii{El compañero con quien dialogaba le dijo: «¿No crees en Quien te creó de tierra, luego, de una gota y, luego, te dio forma de hombre?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmclxxviii{En cuanto a mí, Él es Alá, mi Señor, y no asocio nadie a mi Señor.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmclxxix{Si, al entrar en tu viñedo, hubieras dicho: '¡Que sea lo que Alá quiera! ¡La fuerza reside sólo en Alá!' Si ves que yo tengo menos que tú en hacienda e hijos,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmclxxx{quizá me dé Alá algo mejor que tu viñedo, lance contra él rayos del cielo y se convierta en compo pelado,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmclxxxi{o se filtre su agua por la tierra y no puedas volver a encontrarla».\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmclxxxii{Su cosecha fue destruida y, a la mañana siguiente, se retorcía las manos pensando en lo mucho que había gastado en él: sus cepas estaban arruinadas. Y decía: «¡Ojalá no hubiera asociado nadie a mi Señor!»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmclxxxiii{No hubo grupo que, fuera de Alá, pudiera auxiliarle, ni pudo defenderse a sí mismo.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmclxxxiv{En casos así sólo Alá, la Verdad, ofrece amistad. Él es el Mejor en recompensar y el Mejor como fin.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmclxxxv{Propónles la parábola de la vida de acá. Es como agua que hacemos bajar del cielo y se empapa de ella la vegetación de la tierra, pero se convierte en hierba seca, que los vientos dispersan. Alá es potísimo en todo.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmclxxxvi{La hacienda y los hijos varones son el ornato de la vida de acá. Pero las obras perdurables, las buenas obras, recibirán una mejor recompensa ante tu Señor, constituyen una esperanza mejor fundada.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmclxxxvii{El día que pongamos en marcha las montañas, veas la tierra allanada, congreguemos a todos sin excepción,\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmclxxxviii{y sean presentados en fila ante tu Señor. «Venís a Nosotros como os creamos por vez primera. Y ¿pretendíais que no íbamos a citaros?»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmclxxxix{Se expondrá la Escritura y oirás decir a los pecadores, temiendo por su contenido: «¡Ay de nosotros! ¿Qué clase de Escritura es ésta, que no deja de enumerar nada, ni grande ni pequeño?» Allí encontrarán ante ellos lo que han hecho. Y tu Señor no será injusto con nadie.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcxc{Y cuando dijimos a los ángeles: «¡Prosternaos ante Adán!» Se prosternaron, excepto Iblis, que era uno de los genios y desobedeció la orden de su Señor. ¿Cómo? ¿Les tomaréis, a él y a sus descendientes, como amigos, en lugar de tomarme a Mí, siendo así que son vuestros enemigos? ¡Qué mal trueque para los impíos!\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcxci{No les he puesto como testigos de la creación de los cielos y de la tierra ni de su propia creación, ni he tomado como auxiliares a los que extravían a otros.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcxcii{El día que diga: «¡Llamad a aquéllos que pretendíais que eran Mis asociados!», les invocarán, pero no les ecucharán. Pondremos un abismo entre ellos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcxciii{Los pecadores verán el Fuego y creerán que se precipitan en él, sin encontrar modo de escapar.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcxciv{En este Corán hemos expuesto a los hombres toda clase de ejemplos, pero el hombre es, de todos los seres, el más discutidor.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcxcv{Lo único que impide a los hombres creer cuando les llega la Dirección y pedir el perdón de su Señor, es el no admitir que les alcanzará la misma suerte que a los antiguos o que deberán afrontar el castigo.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcxcvi{No mandamos a los enviados sino como nuncios de buenas nuevas y para advertir. Los que no creen discuten con argucias para derribar, así, la Verdad, y toman a burla Mis signos y las advertencias.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcxcvii{¿Hay alguien que sea más impío que quien, habiéndosele recordado los signos de su Señor, se desvía luego de ellos y olvida lo que sus manos obraron? Hemos velado sus corazones y endurecido sus oídos para que no lo entiendan. Aunque les llames hacia la Dirección, no serán nunca bien dirigidos.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcxcviii{Tu Señor es el Indulgente, el Dueño de la Misericordia. Si les diera su merecido, les adelantaría el castigo. Tienen, sin embargo, una cita a la que no podrán faltar.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcxcix{Hicimos perecer esas ciudades cuando obraron impíamente, habiendo fijado por anticipado cuándo iban a perecer.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcc{Y cuando Moisés dijo a su mozo: «No cejaré hasta que alcance la confluencia de las dos grandes masas de agua, aunque tenga que andar muchos años».\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcci{Y, cuando alcanzaron su confluencia, se olvidaron de su pez, que emprendió tranquilamente el camino hacia la gran masa de agua.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmccii{Y, cuando pasaron más allá dijo a su mozo: «¡Trae la comida, que nos hemos cansado con este viaje!»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcciii{Dijo: «¿Qué te parece? Cuando nos refugiamos en la roca, me olvidé del pez -nadie sino el Demonio hizo olvidarme de que me acordara de él- y emprendió el camino hacia la gran masa de agua. ¡Es asombroso!»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcciv{Dijo: «Eso es lo que deseábamos», y regresaron volviendo sobre sus pasos,\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmccv{encontrando a uno de Nuestros, siervos a quien habíamos hecho objeto de una misericordia venida de Nosotros y enseñado una ciencia de Nosotros.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmccvi{Moisés le dijo: «¿Te sigo para que me enseñes algo de la buena dirección que se te ha enseñado?»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmccvii{Dijo: «No podrás tener paciencia conmigo.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmccviii{¿Y cómo vas a tenerla en aquello de que no tienes pleno conocimiento?»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmccix{Dijo: «Me encontrarás, si Alá quiere, paciente, y no desobedeceré tus órdenes».\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmccx{Dijo: «Si me sigues, pues, no me preguntes nada sin que yo te lo sugiera».\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmccxi{Y se fueron ambos hasta que, habiendo subido a la nave, hizo en ella un boquete. Dijo: «¿Le has hecho un boquete para que se ahoguen sus pasajeros? ¡Has hecho algo muy grave!»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmccxii{Dijo: «¿No te he dicho que no podrías tener paciencia conmigo?»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmccxiii{«No lleves a mal mi olvido», dijo, «y no me sometas a una prueba demasiado difícil».\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmccxiv{Y reanudaron ambos la marcha, hasta que encontraron a un muchacho y le mató. Dijo: «¿Has matado a una persona inocente que no había matado a nadie? ¡Has hecho algo horroroso!»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmccxv{Dijo: «¿No te he dicho que no podrías tener paciencia conmigo?»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmccxvi{Dijo: «Si en adelante te pregunto algo, no me tengas más por compañero. Y acepta mis excusas».\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmccxvii{Y se pusieron de nuevo en camino hasta que llegaron a una ciudad a cuyos habitantes pidieron de comer, pero éstos les negaron la hospitalidad. Encontraron, luego, en ella un muro que amenazaba derrumbarse y lo apuntaló. Dijo: «Si hubieras querido, habrías podido recibir un salario por eso».\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmccxviii{Dijo: «Ha llegado el momento de separarnos. Voy a informarte del significado de aquello en que no has podido tener paciencia.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmccxix{En cuanto a la nave, pertenecía a unos pobres que trabajaban en el mar y yo quise averiarla, pues detrás de ellos venía un rey que se apoderaba por la fuerza de todas las naves.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmccxx{Y en cuanto al muchacho, sus padres eran creyentes y tuvimos miedo de que les impusiera su rebeldía e incredulidad,\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmccxxi{y quisimos que su Señor les diera a cambio uno más puro que aquél y más afectuoso.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmccxxii{Y en cuanto al muro, pertenecía a dos muchachos huérfanos de la ciudad. Debajo de él había un tesoro que les pertenecía. Su padre era bueno y tu Señor quiso que descubrieran su tesoro cuando alcanzaran la madurez, como muestra de misericordia venida de tu Señor. No lo hice por propia iniciativa. Éste es el significado de aquello en que no has podido tener paciencia».\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmccxxiii{Te preguntarán por el Bicorne. Di: «Voy a contaros una historia a propósito de él».\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmccxxiv{Le habíamos dado poderío en el país y le habíamos facilitado todo.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmccxxv{Siguió, pues, un camino\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmccxxvi{hasta que, a la puesta del sol, encontró que éste se ocultaba en una fuente pecinosa, junto a la cual encontró a gente. Dijimos:«Bicorne! Puedes castigarles o hacerles bien».\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmccxxvii{Dijo: «Castigaremos a quien obre impíamente y, luego, será llevado a su Señor, que le infligirá un castigo horroroso.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmccxxviii{Pero quien crea y obre bien tendrá como retribución lo mejor y le ordenaremos cosas fáciles».\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmccxxix{Luego, siguió otro camino\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmccxxx{hasta que, a la salida del sol, encontró que éste aparecía sobre otra gente a la que no habíamos dado refugio para protegerse de él.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmccxxxi{Así fue. Nosotros teníamos pleno conocimiento de lo que él tenía.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmccxxxii{Luego, siguió otro camino\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmccxxxiii{hasta que, llegado a un espacio entre los dos diques, encontró del lado de acá a gente que apenas comprendía palabra.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmccxxxiv{Dijeron: «¡Bicorne! Gog y Magog corrompen en la tierra. ¿Podríamos retribuirte a cambio de que colocaras un dique entre nosotros y ellos?»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmccxxxv{Dijo: «El poderío que mi Señor me ha dado es mejor. ¡Ayudadme esforzadamente y levantaré una muralla entre vosotros y ellos!\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmccxxxvi{¡Traedme bloques de hierro!» Hasta que, habiendo rellenado el espacio vacío entre las dos laderas, dijo: «¡Soplad!» Hasta que, habiendo hecho del hierro fuego, dijo: «¡Traedme bronce fundido para derramarlo encima!»\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmccxxxvii{Y no pudieron escalarla, ni pudieron abrir brecha en ella.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmccxxxviii{Dijo: «Ésta es una misericordia venida de mi Señor, pero, cuando venga la promesa de mi Señor, Él la demolerá. Lo que mi Señor promete es verdad».\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmccxxxix{Ese día dejaremos que unos y otros se entremezclen. Se tocará la trompeta y los reuniremos a todos.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmccxl{Ese día mostraremos plenamente la gehena a los incrédulos,\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmccxli{cuyos ojos estaban cerrados a Mi recuerdo y que no podían oír.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmccxlii{¿Piensan, acaso, quienes no creen, que podrán tomar a Mis siervos como amigos en lugar de tomarme a Mí? Hemos preparado la gehena como alojamiento para los infieles\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmccxliii{Di: «¿Os daré a conocer quiénes son los que más pierden por sus obras,\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmccxliv{aquéllos cuyo celo se pierde en la vida de acá mientras creen obrar bien?»\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmccxlv{Son ellos los que no creen en los signos de su Señor, ni en que Le encontrarán. Vanas habrán sido sus obras y el día de la Resurrección no les reconoceremos peso.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmccxlvi{Su retribución será la gehena por no haber creído y por haber tomado a burla Mis signos y a Mis enviados.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmccxlvii{En cambio, los que hayan creído y obrado bien se alojarán en los jardines del paraíso,\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmccxlviii{eternamente, y no desearán mudarse.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmccxlix{Di: «si fuera el mar tinta para las palabras de mi Señor, se agotaría el mar antes de que se agotaran las palabras de mar Señor, aun si añadiéramos otro mar de tinta».\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmccl{Di: «Yo soy sólo un mortal como vosotros, a quien se ha revelado que vuestro Dios es un Dios Uno. Quien cuente con encontrar a su Señor, que haga buenas, obras y que cuando adore a su Señor, no Le asocie nadie».\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmccli{\basmalahes khy's.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcclii{Recuerdo de la misericordia que tu Señor tuvo con Su siervo Zacarías.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmccliii{Cuando invocó interiormente a su Señor.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmccliv{Dijo: «¡Señor! Se me han debilitado los huesos, mis cabellos han encanecido. Cuando Te he invocado, Señor, nunca me has decepcionado.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcclv{Temo la conducta de mis parientes a mi muerte, pues mi mujer es estéril. Regálame, pues, de Ti un descendiente,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcclvi{que me herede a mí y herede de la familia de Jacob, y ¡haz, Señor, que él Te sea agradable!»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcclvii{«¡Zacarías! Te anunciamos la buena nueva de un muchacho que se llamará Juan, sin homónimos en el pasado».\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcclviii{«¡Señor!» dijo «¿Cómo puedo tener un muchacho, siendo mi mujer estéril y yo un viejo decrépito?»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcclix{«Así será», dijo. «Tu Señor dice: 'Es cosa fácil para Mí. Ya te he creado antes cuando no eras nada'».\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcclx{Dijo: «¡Señor! ¡Dame un signo!» Dijo: «Tu signo será que, estando sano, no podrás hablar a la gente durante tres días».\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcclxi{Entonces, salió del Templo hacia su gente y les significó que debían glorificar mañana y tarde.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmcclxii{«¡Juan! ¡Coge la Escritura con mano firme!» Y le otorgamos el juicio cuando aún era niño,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcclxiii{así como ternura de Nosotros y pureza. Y fue temeroso de Alá\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcclxiv{y piadoso con sus padres; no fue violento, desobediente.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmcclxv{¡Paz sobre él el día que nació, el día que muera y el día que sea resucitado a la vida!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmcclxvi{Y recuerda a María en la Escritura, cuando dejó a su familia para retirarse a un lugar de Oriente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmcclxvii{Y tendió un velo para ocultarse de ellos. Le enviamos Nuestro Espíritu y éste se le presentó como un mortal acabado.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmcclxviii{Dijo ella: «Me refugio de ti en el Compasivo. Si es que temes a Alá...»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmcclxix{Dijo él: «Yo soy sólo el enviado de tu Señor para regalarte un muchacho puro».\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmcclxx{Dijo ella: «¿Cómo puedo tener un muchacho si no me ha tocado mortal, ni soy una ramera?»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmcclxxi{«Así será», dijo. «Tu Señor dice: 'Es cosa fácil para Mí. Para hacer de él signo para la gente y muestra de Nuestra misericordia'. Es cosa decidida».\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmcclxxii{Quedó embarazada con él y se retiró con él a un lugar alejado.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmcclxxiii{Entonces los dolores de parto la empujaron hacia el tronco de la palmera. Dijo: «¡Ojalá hubiera muerto antes y se me hubiera olvidado del todo...!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmcclxxiv{Entonces, de sus pies, le llamó: «¡No estés triste! Tu Señor ha puesto a tus pies un arroyuelo.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmcclxxv{¡Sacude hacia ti el tronco de la palmera y ésta hará caer sobre ti dátiles frescos, maduros!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmcclxxvi{¡Come, pues, bebe y alégrate! Y, si ves a algún mortal, di: 'He hecho voto de silencio al Compasivo. No voy a hablar, pues, hoy con nadie'»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmcclxxvii{Y vino con él a los suyos, llevándolo. Dijeron: «¡María! ¡Has hecho algo inaudito!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmcclxxviii{¡Hermana de Aarón! Tu padre no era un hombre malo, ni tu madre una ramera».\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmcclxxix{Entonces ella se lo indicó. Dijeron: «¿Cómo vamos a hablar a uno que aún está en la cuna, a un niño?»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmcclxxx{Dijo él: «Soy el siervo de Alá. Él me ha dado la Escritura y ha hecho de mí un profeta.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmcclxxxi{Me ha bendecido dondequiera que me encuentre y me ha ordenado la azalá y el azaque mientras viva,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmcclxxxii{y que sea piadoso con mi madre. No me ha hecho violento, desgraciado.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmcclxxxiii{La paz sobre mí el día que nací, el día que muera y el día que sea resucitado a la vida».\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmcclxxxiv{Tal es Jesús hijo de María, para decir la Verdad, de la que ellos dudan.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmcclxxxv{Es impropio de Alá adoptar un hijo. ¡Gloria a Él! Cuando decide algo, le dice tan sólo: «¡Sé!» y se.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmcclxxxvi{Y: «Alá es mi Señor y Señor vuestro. ¡Servidle, pues! Esto es una vía recta».\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmcclxxxvii{Pero los grupos discreparon unos de otros. ¡Ay de los que no hayan creído, porque presenciarán un día terrible!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmcclxxxviii{¡Qué bien oirán y verán el día que vengan a Nosotros! Pero los impíos están hoy, evidentemente, extraviados.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmcclxxxix{¡Prevénles contra el día de la Lamentación, cuando se decida la cosa! Y ellos, entre tanto, están despreocupados y no creen.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmccxc{Nosotros heredaremos la tierra y a sus habitantes. Y a Nosotros serán devueltos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmccxci{Y recuerda en la Escritura a Abraham. Fue veraz, profeta.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmccxcii{Cuando dijo a su padre: «¡Padre! ¿Por qué sirves lo que no oye, ni ve, ni te sirve de nada?\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmccxciii{¡Padre! He recibido una ciencia que tú no has recibido. ¡Sígueme, pues, y yo te dirigiré por una vía llana!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmccxciv{¡Padre! ¡No sirvas al Demonio! El Demonio se rebeló contra el Compasivo.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmccxcv{¡Padre! Temo que te alcance un castigo del Compasivo y que te hagas, así, amigo del Demonio».\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmccxcvi{Dijo: «Abraham! ¿Sientes aversión a mis dioses? Si no paras, he de lapidarte. ¡Aléjate de mí por algún tiempo!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmccxcvii{Dijo: «¡Paz sobre ti! Pediré por tu perdón a mi Señor. Ha sido benévolo conmigo.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmccxcviii{Me aparto de vosotros y de lo que invocáis en lugar de invocar a Alá, e invoco a mi Señor. Quizá tenga suerte invocando a mi Señor».\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmccxcix{Cuando se apartó de ellos y de lo que servían en lugar de servir a Alá, le regalamos a Isaac y a Jacob e hicimos de cada uno de éstos un profeta.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmccc{Les regalamos de Nuestra misericordia y les dimos una reputación buenísima.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmccci{Y recuerda en la Escritura a Moisés. Fue escogido. Fue enviado, profeta.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcccii{Le llamamos desde la ladera derecha del monte e hicimos que se acercara en plan confidencial.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmccciii{Por una misericordia Nuestra, le regalamos como profeta a su hermano Aarón.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmccciv{Y recuerda en la Escritura a Ismael. Fue cumplidor de su promesa. Fue enviado, profeta.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcccv{Prescribía a su gente la azalá y el azaque, y fue bien visto de su Señor.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcccvi{Y recuerda en la Escritura a Idris. Fue veraz, profeta.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcccvii{Le elevamos a un lugar eminente.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcccviii{Éstos son los que Alá ha agraciado entre los profetas descendientes de Adán, entre los que llevamos con Noé, entre los descendientes de Abraham y de Israel, entre los que dirigimos y elegimos. Cuando se les recitan las aleyas del Compasivo, caen prosternados llorando.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcccix{Sus sucesores descuidaron la azalá, siguieron lo apetecible y terminarán descarriándose.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcccx{salvo quienes se arrepientan, crean y obren bien. Ésos entrarán en el Jardín y no serán tratados injustamente en nada,\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcccxi{en los jardines del edén prometidos por el Compasivo a Sus siervos en lo oculto. Su promesa se cumplirá.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcccxii{No oirán allí vaniloquio, sino «¡Paz!» y tendrán allí su sustento, mañana y tarde.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcccxiii{Ése es el Jardín que daremos en herencia a aquéllos de Nuestros siervos que hayan temido a Alá.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcccxiv{«No descendemos sino por orden de tu Señor. Suyo es el pasado, el futuro y el presente. Tu Señor no es olvidadizo.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcccxv{Es el Señor de los cielos, de la tierra y de lo que entre ellos está. ¡Sírvele, pues, persevera en Su servicio! ¿Sabes de alguien que sea Su homónimo?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcccxvi{El hombre dice: «Cuando muera, ¿se me resucitará?»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcccxvii{Pero ¿,es que no recuerda el hombre que ya antes, cuando no era nada, le creamos?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmcccxviii{¡Por tu Señor, que hemos de congregarles, junto con los demonios, y, luego, hemos de hacerles comparecer, arrodillados, alrededor de la gehena!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmcccxix{Luego, hemos de arrancar de cada grupo a aquéllos que se hayan mostrado más rebeldes al Compasivo.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmcccxx{Además, sabemos bien quiénes son los que más merecen abrasarse en ella.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmcccxxi{Ninguno de vosotros dejará de llegarse a ella. Es una decisión irrevocable de tu Señor.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmcccxxii{Luego, salvaremos a quienes temieron a Alá, y abandonaremos en ella, arrodillados, a los impíos.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcccxxiii{Cuando se les recitan Nuestras aleyas, como pruebas claras, dicen los infieles a los creyentes: «¿Cuál de los dos grupos está mejor situado y frecuenta mejor sociedad?»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmcccxxiv{¡A cuántas generaciones antes de ellos, que les superaban en bienes y en apariencia, hemos hecho perecer...!\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmcccxxv{Di: «¡Que el Compasivo prolongue la vida de los que están extraviados, hasta que vean lo que les amenaza: el castigo o la Hora! Entonces verán quién es el que se encuentra en la situación peor y dispone de tropas más débiles».\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcccxxvi{A los que se dejen dirigir, Alá les dirigirá aún mejor. Las obras perdurables, las obras buenas, recibirán ante tu Señor una recompensa mejor y un fin mejor.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcccxxvii{¿Y te parece que quien no cree en Nuestros signos y dice: «Recibiré, ciertamente, hacienda e hijos»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcccxxviii{conoce lo oculto o ha concertado una alianza con el Compasivo?\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmcccxxix{¡No! Antes bien, tomaremos nota de lo que él dice y le prolongaremos el castigo.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmcccxxx{Heredaremos de él lo que dice y vendrá, solo, a Nosotros.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmcccxxxi{Han tomado dioses en lugar de tomar a Alá, para alcanzar poder.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmcccxxxii{¡No! Negarán haberles servido y se convertirán en adversarios suyos.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmcccxxxiii{¿No ves que hemos enviado a los demonios contra los infieles para que les instiguen al mal?\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmcccxxxiv{¡No te precipites con ellos, que les contamos los días!\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmcccxxxv{El día que congreguemos hacia el Compasivo a los temerosos de Alá, en grupo,\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmcccxxxvi{y conduzcamos a los pecadores, en masa, a la gehena,\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmcccxxxvii{no dispondrán de intercesores sino los que hayan concertado una alianza con el Compasivo.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmcccxxxviii{Dicen: «El Compasivo ha adoptado un hijo».\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmcccxxxix{Habéis cometido algo horrible,\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmcccxl{que hace casi que los cielos se hiendan, que la tierra se abra, que las montañas caigan demolidas,\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmcccxli{por haber atribuido un hijo al Compasivo,\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmcccxlii{siendo así que no le está bien al Compasivo adoptar un hijo.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmcccxliii{No hay nadie en los cielos ni en la tierra que no venga al Compasivo sino como siervo.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmcccxliv{Él los ha enumerado y contado bien.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmcccxlv{Todos vendrán a Él, uno a uno, el día de la Resurrección.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmcccxlvi{A quienes hayan creído y obrado bien, el Compasivo les dará amor.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmcccxlvii{En verdad, lo hemos hecho fácil en tu lengua, para que anuncies con él la buena nueva a los que temen a Alá y para que adviertas con él a la gente pendenciera.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmcccxlviii{¡A cuántas generaciones antes de ellos hemos hecho perecer! ¿Percibes a alguno de ellos u oyes de ellos un leve susurro?\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmcccxlix{\basmalahes th.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcccl{No te hemos revelado el Corán para que padezcas,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcccli{sino como Recuerdo para quien tiene miedo de Alá,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmccclii{como revelación venida de Quien ha creado la tierra y los altos cielos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcccliii{El Compasivo se ha instalado en el Trono.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcccliv{Suyo es lo que está en los cielos y en la tierra, entre ellos y bajo tierra.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmccclv{No es preciso que te expreses en voz alta, pues Él conoce lo secreto y lo aún más recóndito.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmccclvi{¡Alá! ¡No hay más dios que Él! Posee los nombres más bellos.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmccclvii{¿Te has enterado de la historia de Moisés?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmccclviii{Cuando vio un fuego y dijo a su familia: «¡Quedaos aquí! Distingo un fuego. Quizá pueda yo traeros de él un tizón o encontrar la buena dirección con ayuda del fuego».\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmccclix{Cuando llegó al fuego, le llamaron: «¡Moisés!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmccclx{Yo soy, ciertamente, tu Señor. Quítate las sandalias! Estás en el valle sagrado de Tuwa.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmccclxi{Y te he escogido Yo. Escucha, pues, lo que se va a revelar.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmccclxii{Yo soy, ciertamente, Alá. No hay más dios que Yo. ¡Sírveme, pues, y haz la azalá para recordarme!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmccclxiii{La Hora llega -estoy por ocultarla- para que cada uno sea retribuido según su esfuerzo.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmccclxiv{¡Que no te desvíe de ella quien no cree en ella y sigue su pasión! Si no, ¡perecerás!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmccclxv{¿Qué es eso que tienes en la diestra, Moisés?»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmccclxvi{«Es mi vara», dijo. «Me apoyo en ella y con ella vareo los árboles para alimentar a mi rebaño. También la empleo para otros usos».\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmccclxvii{Dijo: «¡Tírala, Moisés!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmccclxviii{La tiró y he aquí que se convirtió en una serpiente que reptaba.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmccclxix{Dijo: «¡Cógela y no temas! Vamos a devolverle su condición primera.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmccclxx{¡Y llévate la mano al costado! Saldrá, blanca, sana - otro signo-.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmccclxxi{Para mostrarte parte de Nuestros tan grandes signos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmccclxxii{¡Ve a Faraón! Se muestra reacio».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmccclxxiii{Dijo: «¡Señor! ¡Infúndeme ánimo!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmccclxxiv{¡Facilítame la tarea!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmccclxxv{¡Desata un nudo de mi lengua!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmccclxxvi{Así entenderán lo que yo diga.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmccclxxvii{Dame a alguien de mi familia que me ayude:\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmccclxxviii{a Aarón, mi hermano.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmccclxxix{¡Aumenta con él mi fuerza\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmccclxxx{y asóciale a mi tarea,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmccclxxxi{para que Te glorifiquemos mucho\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmccclxxxii{y Te recordemos mucho!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmccclxxxiii{Tú nos ves bien».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmccclxxxiv{Dijo: «¡Moisés! Tu ruego ha sido escuchado.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmccclxxxv{Ya te agraciamos otra vez.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmccclxxxvi{Cuando inspiramos a tu madre lo siguiente:\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmccclxxxvii{'Échalo a esta arqueta y échala al río. El río lo depositará en la orilla. Un enemigo mío y suyo lo recogerá'. He lanzado sobre ti un amor venido de Mí para que seas educado bajo Mi mirada.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmccclxxxviii{Cuando tu hermana pasaba por allí y dijo: '¿Queréis que os indique a alguien que podría encargarse de él?'. Así te devolvimos a tu madre para que se alegrara y no estuviera triste. Mataste a un hombre, te salvamos de la tribulación y te sometimos a muchas pruebas. Viviste durante años con los madianitas y luego viniste acá, Moisés. cuando estaba determinado.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmccclxxxix{Te he escogido para Mí.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmcccxc{¡Ve! acompañado de tu hermano, con Mis signos, y no descuidéis el recordarme!\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmcccxci{¡Id a Faraón! Se muestra rebelde.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmcccxcii{¡Hablad con él amablemente! Quizás, así, se deje amonestar o tenga miedo de Alá».\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmcccxciii{Dijeron: «¡Señor! Tememos que la tome con nosotros o que se muestre rebelde».\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmcccxciv{Dijo: «¡No temáis! Yo estoy con vosotros, oyendo y viendo.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmcccxcv{Id, pues, a él y decid: 'Somos los enviados de tu Señor. ¡Deja marchar con nosotros a los Hijos de Israel y no les atormentes! Te hemos traído un signo de tu Señor. ¡La paz sobre quien siga la Dirección !'\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmcccxcvi{Se nos ha revelado que se infligirá el castigo a quien desmienta o se desvíe».\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmcccxcvii{Dijo: «¿Y quién es vuestro Señor, Moisés?»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcccxcviii{Dijo: «Nuestro Señor es Quien ha dado a todo su forma y, luego, dirigido».\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcccxcix{Dijo: «¿Y qué ha sido de las genera ciones pasadas?»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcd{Dijo: «Mi Señor lo sabe y está en una Escritura. Mi Señor no yerra, ni olvida.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcdi{Quien os ha puesto la tierra como cuna y os ha trazado en ella caminos y hecho bajar agua del cielo. Mediante ella, hemos sacado toda clase de plantas.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcdii{¡Comed y apacentad vuestros rebaños! Hay, en ello, ciertamente, signos para los dotados de entendimiento.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcdiii{Os hemos creado de ella y a ella os devolveremos, para sacaros otra vez de ella».\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcdiv{Le mostramos todos Nuestros signos, pero él desmintió y rehusó creer.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcdv{Dijo: «¡Moisés! ¿Has venido a nosotros para sacarnos de nuestra tierra con tu magia?\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcdvi{Hemos de responderte con otra magia igual. ¡Fija entre nosotros y tú una cita, a la que ni nosotros ni tú faltemos, en un lugar a propósito!»\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcdvii{Dijo: «Vuestra cita será para el día de la Gran Fiesta. Que la gente sea convocada por la mañana».\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcdviii{Faraón se retiró, preparó sus artilugios y acudió.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcdix{Moisés les dijo: «¡Ay de vosotros! ¡No inventéis mentira contra Alá! Si no, os destruirá con un castigo. Quien invente, sufrirá una decepción».\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcdx{Los magos discutieron entre sí sobre su asunto y mantuvieron secreta la discusión.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcdxi{Dijeron: «En verdad, estos dos son unos magos que, con su magia, quieren sacaros de vuestra tierra y acabar con vuestra eminente doctrina.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcdxii{Preparad vuestros artilugios y, luego, venid uno a uno. ¡Quien gane hoy será feliz!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcdxiii{Dijeron: «¡Moisés! ¿Quién es el primero en tirar? ¿Tú o nosotros?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcdxiv{Dijo: «¡No! ¡Tirad vosotros!» Y he aquí que le pareció que, por efecto de su magia, sus cuerdas y varas echaban a correr.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcdxv{Y Moisés temió en sus adentros.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmcdxvi{Dijimos: «¡No temas, que ganarás tú!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmcdxvii{Tira lo que tienes en la diestra y devorará lo que ellos han hecho, que lo que ellos han hecho es sólo artimaña del mago. Y el mago no prosperará, venga de donde venga».\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmcdxviii{Los magos cayeron prosternados. Dijeron: «¡Creemos en el Señor de Aarón y de Moisés!»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmcdxix{Dijo: «Le habéis creído antes de que yo os autorizara a ello. Él es vuestro maestro, que os ha enseñado la magia. He de haceros amputar las manos y los pies opuestos y crucificar en troncos de palmera. Así sabréis, ciertamente, quién de nosotros es el que inflige un castigo más cruel y más duradero».\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmcdxx{Dijeron: «No te preferiremos a ti a las pruebas claras que se nos han ofrecido ni a Quien nos ha creado. Decidas lo que decidas, tú sólo decides sobre la vida de acá.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcdxxi{Creemos en nuestro Señor, para que nos perdone nuestros pecados y la magia a que nos has obligado. Alá es mejor y más duradero».\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmcdxxii{Quien viene a su Señor como culpable tendrá la gehena y en ella no podrá morir ni vivir.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmcdxxiii{Quien, al contrario, venga a Él como creyente, después de haber obrado bien, tendrá la categoría más elevada:\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcdxxiv{los jardines del edén, por cuyos bajos fluyen arroyos, en los que estará eternamente. Ésa es la retribución de quien se mantiene puro.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcdxxv{Inspiramos a Moisés: «¡Sal de noche con Mis siervos y ábreles un camino seco en el mar! ¡No temas que os alcancen, no tengas miedo!»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcdxxvi{Faraón les persiguió con sus tropas y las aguas del mar les cubrieron.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmcdxxvii{Faraón había extraviado a su pueblo, no le había dirigido bien.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmcdxxviii{¡Hijos de Israel! Os hemos salvado de vuestros enemigos y nos hemos dado cita con vosotros en la ladera derecha del monte. Hemos hecho descender sobre vosotros el maná y las codornices:\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmcdxxix{«Comed de lo bueno de que os hemos proveído, pero sin excederos. Si no, me airaré con vosotros». Y aquél que incurre en Mi ira va a la ruina...\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmcdxxx{Yo soy, ciertamente, indulgente con quien se arrepiente, cree, obra bien y, luego, se deja dirigir bien.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmcdxxxi{«¡Moisés! ¿Por qué te has dado tanta prisa en alejarte de tu pueblo?»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmcdxxxii{Dijo: «Son ellos los que me persiguen. Y he corrido hacia Ti, Señor, para complacerte».\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmcdxxxiii{Dijo: «Hemos probado a tu pueblo después de irte, y el samaritano les ha extraviado».\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmcdxxxiv{Y Moisés regresó a su pueblo, airado, dolido. Dijo: «¡Pueblo! ¿No os había prometido vuestro Señor algo bello? ¿Es que la alianza os ha resultado demasiado larga o habéis querido que vuestro Señor se aíre con vosotros al faltar a lo que me habéis prometido?»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmcdxxxv{Dijeron: «No hemos faltado por propio impulso a lo que te habíamos prometido, sino que se nos obligó a cargar con las joyas del pueblo y las hemos arrojado. Y lo mismo hizo el samaritano».\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmcdxxxvi{Éste les sacó un ternero, un cuerpo que mugía, y dijeron: «Este es vuestro dios y el dios de Moisés. Pero ha olvidado».\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmcdxxxvii{¿Es que no veían que no les daba ninguna contestación y no podía ni dañarles ni aprovecharles?\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmcdxxxviii{Ya antes les había dicho Aarón: «¡Pueblo! Sólo se os ha tentado con él. Vuestro Señor es el Compasivo. ¡Seguidme, pues, y obedeced mis órdenes!»\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmcdxxxix{Dijeron: «No dejaremos de entregarnos a su culto hasta que Moisés haya regresado».\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmcdxl{Dijo: «¡Aarón! Cuando has visto que se extraviaban, ¿qué es lo que te ha impedido\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmcdxli{seguirme? ¿Has desobedecido mis órdenes?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmcdxlii{Dijo: «¡Hijo de mi madre! ¡No me cojas por la barba ni por la cabeza! Tenía miedo de que dijeras: Has escindido a los Hijos de Israel y no has observado mi palabra'».\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmcdxliii{Dijo: «¿Qué alegas tú, samaritano?»\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmcdxliv{Dijo: «He visto algo que ellos no han visto. He tomado un puñado del polvo pisado por el enviado y lo he arrojado. Así me lo ha sugerido la imaginación».\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmcdxlv{Dijo: «¡Vete de aquí! En esta vida irás gritando: '¡No me toquéis!' Se te ha fijado una cita a la que no faltarás. ¡Y mira a tu dios, a cuyo culto tanto te has entregado! ¡Hemos de quemarlo y dispersar sus cenizas por el mar!\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmcdxlvi{¡Sólo Alá es vuestro dios, aparte del Cual no hay otro dios! Lo abarca todo en Su ciencia».\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmcdxlvii{Así te contamos historias de antaño y te hemos dado una Amonestación de Nosotros.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmcdxlviii{Quien se desvíe de ella llevará una carga el día de la Resurrección,\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmcdxlix{eternamente. ¡Qué carga más pesada tendrán el día de la Resurrección!\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmcdl{El día que se toque la trompeta y reunamos a los pecadores, ese día, ojizarcos,\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmcdli{diciéndose unos a otros por lo bajo: «No habéis permanecido sino diez días».\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmcdlii{Sabemos bien lo que dirán cuando el que más se distinga por su buena conducta diga: «No habéis permanecido sino un día».\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmcdliii{Te preguntarán por las montañas. Di: «Señor las reducirá a polvo y aventará.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmcdliv{Las dejará cual llano nivelado,\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmcdlv{en el que no se verán depresiones ni elevaciones».\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmcdlvi{Ese día, seguirán al Pregonero, que no se desviará. Bajarán las voces ante el Compasivo y no se oirá sino un susurro de pasos.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmcdlvii{Ese día no aprovechará más intercesión que la de aquél que cuente con la autorización del Compasivo, de aquél cuyas palabras Él acepte.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmcdlviii{Conoce su pasado y su futuro mientras que ellos no pueden abarcarlos en su ciencia.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmcdlix{Los rostros se humillarán ante el Viviente, el Subsistente. Quien se haya cargado de impiedad, sufrirá una decepción\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmcdlx{Quien, en cambio, obra bien, siendo creyente, no tiene por qué temer injusticia ni opresión.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmcdlxi{Así la hemos revelado como Corán árabe. Hemos expuesto en él amenazas. Quizás, así, Nos teman o les sirva de amonestación.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmcdlxii{¡Exaltado sea Alá, el Rey verdadero! ¡No te precipites en la Recitación antes de que te sea revelada por entero! Y di: «¡Señor! ¡Aumenta mi ciencia!»\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmcdlxiii{Habíamos concertado antes una alianza con Adán, pero olvidó y no vimos en él resolución.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmcdlxiv{Y cuando dijimos a los ángeles: «¡Prosternaos ante Adán!» Se prosternaron, excepto Iblis, que se negó.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmcdlxv{Dijimos: «¡Adán! Éste es un enemigo para ti y para tu esposa ¡Que no os expulse del Jardín; si no, serás desgraciado!\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmcdlxvi{En él, no debes sufrir hambre ni desnudez,\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmcdlxvii{ni sed, ni ardor del sol».\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmcdlxviii{Pero el Demonio le insinuó el mal. Dijo: «¡Adán! ¿Te indico el árbol de la inmortalidad y de un dominio imperecedero?»\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmcdlxix{Comieron de él, se les reveló su desnudez y comenzaron a cubrirse con hojas del Jardín. Adán desobedeció a su Señor y se descarrió.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmcdlxx{Luego, su Señor le escogió. le perdonó y le puso en la buena dirección.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmcdlxxi{Dijo: «¡Descended ambos de él! ¡Todos! ¡Seréis enemigos unos de otros. Si, pues, recibís de Mí una dirección, quien siga Mi dirección no se extraviará y no será desgraciado.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmcdlxxii{Pero quien no siga Mi Amonestación llevará una existencia miserable y le resucitaremos, ciego, el día de la Resurrección».\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmcdlxxiii{Dirá: «¡Señor! ¿Por qué me has resucitado ciego, siendo así que antes veía?»\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmcdlxxiv{Dirá: «Igual que tú recibiste Nuestros signos y los olvidaste, así hoy eres olvidado».\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmcdlxxv{Así retribuiremos a quien haya cometido excesos y no haya creído en los signos de su Señor. Y el castigo de la otra vida será más cruel y más duradero.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmcdlxxvi{¿Es que no les dice nada que hayamos hecho perecer a tantas generaciones precedentes, cuyas viviendas huellan ellos ahora? Ciertamente, hay en ello signos para los dotados de entendimiento.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmcdlxxvii{Si no llega a ser por una palabra previa de tu Señor y no hubiera sido prefijado el plazo, habría sido ineludible.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mmcdlxxviii{¡Ten paciencia, pues, con lo que dicen y celebra las alabanzas de tu Señor antes de la salida del sol y antes de su puesta! ¡Glorifícale durante las horas de la noche y en las horas extremas del día! Quizás, así, quedes satisfecho.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mmcdlxxix{Y no codicies los goces efímeros que hemos concedido a algunos de ellos, brillo de la vida de acá, con objeto de probarles con ellos. El sustento de tu Señor es mejor y más duradero.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mmcdlxxx{¡Prescribe a tu gente la azalá y persevera en ella! No te pedimos sustento. Somos Nosotros Quienes te sustentamos. El buen fin está destinado a los que temen a Alá.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxi{Dicen: «¿Por qué no nos trae un signo de su Señor?» Pero ¿es que no han recibido prueba clara de lo que contienen las Hojas primeras?\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxii{Si les Hubiéramos hecho perecer antes con un castigo, habrían dicho: «¡Señor! ¿Por qué no nos has mandado un enviado? Habríamos seguido Tus signos antes de ser humillados y confundidos».\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxiii{Di: «Todos esperan. ¡Esperad, pues! Ya veréis quién sigue la vía llana y quién sigue la buena dirección».\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxiv{\basmalahes Se acerca el momento en que los hombres deban rendir cuentas, pero ellos, despreocupados, se desvían.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxv{Cuando reciben una nueva amonestación de su Señor, la escuchan sin tomarla en serio,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxvi{divertidos sus corazones. Los impíos cuchichean entre sí: «¿No es éste sino un mortal como vosotros? ¿Cederéis a la magia a sabiendas?»\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxvii{Dice: «Mi Señor sabe lo que se dice en el cielo y en la tierra. Él es Quien todo lo oye, Quien todo lo sabe».\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxviii{Ellos, en cambio, dicen: «¡Amasijo de sueños! ¡No! ¡Él lo ha inventado! ¡No! Es un poeta! ¡Que nos traiga un signo como los antiguos enviados!»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxix{Antes de ellos, ninguna de las ciudades que destruimos creía. Y éstos ¿van a creer?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcdxc{Antes de ti, no enviamos sino a hombres a los que hicimos revelaciones. Si no lo sabéis, ¡preguntad a la gente de la Amonestación!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcdxci{No les dimos un cuerpo que no necesitara alimentarse. Y no eran inmortales.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcdxcii{Cumplimos la promesa que les hicimos y les salvamos, igual que a otros a quienes Nosotros quisimos salvar, mientras que hicimos perecer a los inmoderados.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcdxciii{Os hemos revelado una Escritura en que se os amonesta. ¿Es que no comprendéis?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcdxciv{¡Cuántas ciudades impías hemos arruinado, suscitando después a otros pueblos!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmcdxcv{Cuando sintieron Nuestro rigor, quisieron escapar de ellas rápidamente.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcdxcvi{«¡No huyáis, volved a vuestra vida regalada, a vuestras mansiones! Quizá se os pidan cuentas».\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcdxcvii{Dijeron: «¡Ay de nosotros, que hemos obrado impíamente!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmcdxcviii{Y no cesaron en sus lamentaciones hasta que les segamos sin vida.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmcdxcix{No creamos el cielo, la tierra y lo que entre ellos hay para pasar el rato.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmd{Si hubiéramos querido distraernos, lo habríamos conseguido por Nosotros mismos, de habérnoslo propuesto.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdi{Antes, al contrario, lanzamos la Verdad contra lo falso, lo invalida... y éste se disipa. ¡Ay de vosotros, por lo que contáis...!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdii{Suyos son quienes están en los cielos y en la tierra. Y quienes están junto a Él no se consideran demasiado altos para servirle, ni se cansan de ello.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdiii{Glorifican noche y día sin cesar.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdiv{¿Han tomado de la tierra a dioses capaces de resucitar?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdv{Si hubiera habido en ellos otros dioses distintos de Alá, se habrían corrompido. ¡Gloria a Alá, Señor del Trono, Que está por encima de lo que cuentan!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdvi{No tendrá Él que responder de lo que hace, pero ellos tendrán que responder.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdvii{Entonces, ¿han tomado a dioses en lugar de tomarle a Él? Di: «¡Aportad vuestra prueba!». Ésta es la Amonestación de mis contemporáneos y la Amonestación de mis antecesores. Pero la mayoría no conocen la Verdad y se desvían.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdviii{Antes de ti no mandamos a ningún enviado que no le reveláramos: «¡No hay más dios que Yo! ¡Servidme, pues!»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdix{Y dicen: «El Compasivo ha adoptado hijos». ¡Gloria a É! Son, nada más, siervos honrados.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdx{Dejan que sea Él el primero en hablar y obran siguiendo Sus órdenes.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdxi{Él conoce su pasado y su futuro. No intercederán sino por aquéllos de quienes Él esté satisfecho. Están imbuidos del miedo que Él les inspira.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdxii{A quien de ellos diga: «Soy un dios fuera de Él» le retribuiremos con la gehena. Así retribuimos a los impíos.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdxiii{¿Es que no han visto los infieles que los cielos y la tierra formaban un todo homogéneo y los separamos? ¿Y que sacamos del agua a todo ser viviente? ¿Y no creerán?\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdxiv{Hemos colocado en la tierra montañas firmes para que ella y sus habitantes no vacilen. Hemos puesto en ella anchos pasos a modo de caminos. Quizás, así, sean bien dirigidos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdxv{Hemos hecho del cielo una techumbre protegida. Pero ellos se desvían de sus signos.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdxvi{Él es Quien ha creado la noche y el día, el sol y la luna. Cada uno navega en una órbita.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdxvii{No hemos hecho eterno a ningún mortal antes de ti. Muriendo tú, ¿iban otros a ser inmortales?\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdxviii{Cada uno gustará la muerte. Os probamos tentándoos con el mal y con el bien. Y a Nosotros seréis devueltos.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdxix{Cuanto te ven los infieles«no hacen sino tomarte a burla: «¿Es Éste quien habla mal de vuestros dioses?» Y no creen en la amonestación del Compasivo.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdxx{El hombre ha sido creado precipitado. Ya os haré ver Mis signos. ¡No Me deis prisa!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdxxi{que decís?» Y dicen: «¿Cuándo se cumplirá esta amenaza, si es verdad lo\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdxxii{Si supieran los infieles, cuando no puedan apartar el fuego de sus rostros ni de sus espaldas, cuando no puedan ser auxiliados...\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdxxiii{Pero ¡no! Les vendrá de repente y les dejará aturdidos. No podrán ni rechazarla ni retardarla.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdxxiv{Se burlaron de otros enviados que te precedieron, pero los que se burlaban se vieron cercados por aquello de que se burlaban.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdxxv{Di: «¿Quién os protegerá, noche y día. contra el Compasivo?» Pero no hacen caso de la amonestación de su Señor.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdxxvi{¿Tienen dioses que les defiendan en lugar de Nosotros? Éstos no pueden auxiliarse a sí mismos, ni encontrarán quien les ayude frente a Nosotros.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdxxvii{Les hemos permitido gozar de efímeros placeres, a ellos y a sus padres, hasta alcanzar una edad avanzada. ¿Es que no se dan cuenta de Nuestra intervención cuando reducimos la superficie de la tierra? ¡Serán ellos los vencedores?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdxxviii{Di: «Os advierto, en verdad, por la Revelación, pero los sordos no oyen el llamamiento cuando se les advierte».\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdxxix{Si les alcanza un soplo del castigo de tu Señor, dicen de seguro: «¡Ay de nosotros, que hemos obrado impíamente!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdxxx{Para el día de la Resurrección dispondremos balanzas que den el peso justo y nadie será tratado injustamente en nada. Aunque se trate de algo del peso de un grano de mostaza, lo tendremos en cuenta. ¡Bastamos Nosotros para ajustar cuentas!\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdxxxi{Dimos a Moisés y a Aarón el Criterio, una claridad y una amonestación para los temerosos de Alá,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdxxxii{que tienen miedo de su Señor en secreto y se preocupan por la Hora.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdxxxiii{Esto es una amonestación bendita, que Nosotros hemos revelado ¿Y la negaréis?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdxxxiv{Antes, dimos a Abraham, a quien conocíamos, la rectitud.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdxxxv{Cuando dijo a su padre y a su pueblo: «¿Qué son estas estatuas a cuyo culto estáis entregados?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdxxxvi{Dijeron: «Nuestros padres ya les rendían culto».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdxxxvii{Dijo: «Pues vosotros y vuestros padres estáis evidentemente extraviados».\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdxxxviii{Dijeron: «¿Nos hablas en serio o bromeas?»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdxxxix{Dijo: «¡No! Vuestro Señor es el Señor de los cielos y de la tierra, que Él ha creado. Yo soy testigo de ello.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdxl{-¡Y por Alá!, que he de urdir algo contra vuestros ídolos cuando hayáis vuelto la espalda-».\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdxli{Y los hizo pedazos, excepto a uno grande que les pertenecía. Quizás, así, volvieran a él.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdxlii{Dijeron: «¿Quién ha hecho eso a nuestros dioses? Ese tal es, ciertamente, de los impíos».\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdxliii{«Hemos oído», dijeron, «a un mozo llamado Abraham que hablaba mal de ellos».\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdxliv{Dijeron: «¡Traedlo a vista de la gente! Quizás, así, sean testigos».\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdxlv{Dijeron: «¡Abraham! ¿Has hecho tú eso con nuestros dioses?»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdxlvi{«¡No!» dijo. «El mayor de ellos es quien lo ha hecho. ¡Preguntádselo, si es que son capaces de hablar!»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdxlvii{Se volvieron a sí mismos y dijeron: «Sois vosotros los impíos».\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdxlviii{Pero, en seguida, mudaron completamente de opinión: «Tú sabes bien que éstos son incapaces de hablar».\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmdxlix{Dijo: «¿Es que servís, en lugar de servir a Alá, lo que no puede aprovecharos nada, ni dañaros?\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmdl{¡Uf, vosotros y lo que servís en lugar de servir a Alá! ¿Es que no razonáis?»\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmdli{Dijeron: «¡Quemadlo y auxiliad así a vuestros dioses, si es que os lo habéis propuesto...!»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmdlii{Dijimos: «¡Fuego! ¡Sé frío para Abraham y no le dañes!»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmdliii{Quisieron emplear artimañas contra él, pero hicimos que fueran ellos los que más perdieran.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmdliv{Les salvamos, a él y a Lot, a la tierra que hemos bendecido para todo el mundo.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmdlv{Y le regalamos, por añadidura, a Isaac y a Jacob. Y de todos hicimos justos.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmdlvi{Les hicimos jefes, que dirigieran siguiendo Nuestra orden. Les inspiramos que obraran bien, hicieran la azalá y dieran el azaque. Y Nos rindieron culto.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmdlvii{A Lot le dimos juicio y ciencia y le salvamos de la ciudad que se entregaba a la torpeza. Eran gente malvada, perversa.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmdlviii{Le introdujimos en Nuestra misericordia. Es de los justos.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmdlix{Y a Noé. Cuando, antes, invocó y le escuchamos. Y les salvamos, a él y a los suyos, de la gran calamidad.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmdlx{Y le auxiliamos contra el pueblo que había desmentido Nuestros signos. Eran gente mala y los anegamos a todos.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmdlxi{Y a David y Salomón. Cuando dictaron sentencia sobre el sembrado en que las ovejas de la gente se habían introducido de noche. Nosotros fuimos testigos de su sentencia.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmdlxii{Hicimos comprender a Salomón de qué se trataba. Dimos a cada uno juicio y ciencia. Sujetamos, junto con David, las montañas y las aves para que glorificaran. Nosotros hicimos eso.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmdlxiii{Le enseñamos a elaborar cotas de malla para vosotros, para que os protegieran de vuestra propia violencia. ¿Ya lo agradecéis?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmdlxiv{Y a Salomón el ventarrón, que sopla, a una orden suya, hacia la tierra que hemos bendecido. Lo sabemos todo...\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmdlxv{De los demonios, había algunos que buceaban para él y hacían otros trabajos. Nosotros les vigilábamos.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmdlxvi{Y a Job. Cuando invocó a su Señor: «¡He sufrido una desgracia, pero Tú eres la Suma Misericordia!»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmdlxvii{Y le escuchamos, alejando de él la desgracia que tenía, dándole su familia y otro tanto, como misericordia venida de Nosotros y como amonestación para Nuestros siervos.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmdlxviii{Y a Ismael, Idris y Dulkifl. Todos fueron de los pacientes.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmdlxix{Les introdujimos en Nuestra misericordia. Son de los justos.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmdlxx{Y al del pez. Cuando se fue airado y creyó que no podríamos hacer nada contra él. Y clamó en las tinieblas: «¡No hay más dios que Tú! ¡Gloria a Ti! He sido de los impíos».\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmdlxxi{Le escuchamos, pues, y le salvamos de la tribulación. Así es como salvamos a los creyentes.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmdlxxii{Y a Zacarías. Cuando invocó a su Señor: «¡Señor! ¡No me dejes solo! ¡Pero Tú eres el Mejor de los herederos!»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmdlxxiii{Y le escuchamos y le regalamos Juan e hicimos que su esposa fuera capaz de concebir. Rivalizaban en buenas obras, Nos invocaban con amor y con temor y se conducían humildemente ante Nosotros.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmdlxxiv{Y a la que conservó su virginidad. Infundimos en ella de Nuestro Espíritu e hicimos de ella y de su hijo signo para todo el mundo.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmdlxxv{«Ésta es vuestra comunidad, es una sola comunidad. Y Yo soy vuestro Señor. ¡Servidme, pues!»\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmdlxxvi{Se dividieron en sectas, pero volverán todos a Nosotros.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmdlxxvii{El esfuerzo del creyente que obra bien no será ignorado. Nosotros tomamos nota.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmdlxxviii{Cuando destruimos una ciudad, les está prohibido a sus habitantes regresar a ella,\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmdlxxix{hasta que se suelte a Gog y Magog y se precipiten por toda colina abajo.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmdlxxx{Se acerca la amenaza verdadera. Los infieles, desorbitados los ojos: «¡Ay de nosotros, que no sólo nos traía esto sin cuidado, sino que obrábamos impíamente!»\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmdlxxxi{Vosotros y lo que servís en lugar de servir a Alá, seréis combustible para la gehena. ¡Bajaréis a ella!\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmdlxxxii{Si ésos hubieran sido dioses, no habrían bajado a ella. Estarán todos en ella eternamente.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmdlxxxiii{Gemirán en ella, pero no oirán en ella.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmdlxxxiv{Aquéllos que ya hayan recibido de Nosotros lo mejor, serán mantenidos lejos de de ella.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmdlxxxv{No oirán el más leve ruido de ella y estarán eternamente en lo que tanto ansiaron.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmdlxxxvi{No les entristecerá el gran terror y los ángeles saldrán a su encuentro: «¡Éste es vuestro día, que se os había prometido!»\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmdlxxxvii{Día en que plegaremos el cielo como se pliega un pergamino de escritos. Como creamos una vez primera, crearemos otra. ¡Es promesa que nos obliga y la cumpliremos!\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmdlxxxviii{Hemos escrito en los Salmos, después de la Amonestación, que la tierra la heredarán Mis siervos justos.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmdlxxxix{He aquí un comunicado para gente que rinde culto a Alá.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmdxc{Nosotros no te hemos enviado sino como misericordia para todo el mundo.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmdxci{Di: «Sólo se me ha revelado que vuestro Dios es un Dios Uno ¡,Os someteréis, pues, a Él?»\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmdxcii{Si se desvían, di:«Os he informado a todos con equidad. Y no sé si aquello con que se os amenaza es inminente o remoto.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmdxciii{Él sabe tanto lo que decís abiertamente como lo que ocultáis»\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmdxciv{No sé. Quizás eso constituya para vosotros tentación y disfrute por algún tiempo».\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmdxcv{Dice: «¡Señor, decide según justicia! Nuestro Señor es el Compasivo, Aquél Cuya ayuda se implora contra lo que contáis».\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmdxcvi{\basmalahes ¡Hombres! ¡Temed a vuestro Señor! El terremoto de la Hora será algo terrible.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdxcvii{Cuando eso ocurra, toda nodriza olvidará a su lactante, toda embarazada abortará. Los hombres parecerán, sin estarlo, ebrios. El castigo de Alá será severo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdxcviii{Hay algunos hombres que discuten de Alá sin tener conocimiento, y siguen a todo demonio rebelde.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdxcix{Se le ha prescrito que extravíe y guíe al castigo del fuego de la gehena a quien le tome por dueño.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdc{¡Hombres! Si dudáis de la resurrección, Nosotros os hemos creado de tierra; luego, de una gota; luego, de un coágulo de sangre; luego, de un embrión formado o informe. Para aclararos. Depositamos en las matrices lo que queremos por un tiempo determinado; luego, os hacemos salir como criaturas para alcanzar, más tarde, la madurez. Algunos de vosotros mueren prematuramente; otros viven hasta alcanzar una edad decrépita, para que, después de haber sabido, terminen no sabiendo nada. Ves la tierra reseca, pero, cuando hacemos que el agua baje sobre ella, se agita, se hincha y hace brotar toda especie primorosa.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdci{Esto es así porque Alá es la Verdad, devuelve la vida a los muertos y es omnipotente.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdcii{Es que la Hora llega, no hay duda de ella, y Alá resucitará a quienes se encuentren en las sepulturas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdciii{Hay algunos hombres que discuten de Alá sin tener conocimiento, ni dirección, ni Escritura luminosa,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdciv{contoneándose para extraviar a otros del camino de Alá. Esos tales sufrirán la ignominia en la vida de acá y el día de la Resurrección les haremos gustar el castigo del fuego de la gehena:\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdcv{«¡Ahí tienes, por las obras que has cometido!» Alá no es injusto con Sus siervos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdcvi{Hay entre los hombres quien vacila en servir a Alá. Si recibe un bien, lo disfruta tranquilamente. Pero, si sufre una tentación, gira en redondo, perdiendo así la vida de acá y la otra: es una pérdida irreparable.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdcvii{Invoca, en lugar de invocar a Alá, lo que no puede dañarle ni aprovecharle. Ése es el profundo extravío.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdcviii{Invoca, ciertamente, a quien puede más fácilmente dañar que aprovechar. ¡Qué mal protector! y ¡qué mal compañero!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdcix{Alá introducirá a los creyentes que obraron bien en jardines por cuyos bajos fluyen arroyos. Alá hace lo que quiere.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdcx{Quien crea que Alá no va a auxiliarle en la vida de acá ni en la otra, que tienda una cuerda al cielo y luego la corte. ¡Que vea si su ardid acaba con lo que le irritaba!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdcxi{Así lo hemos revelado en aleyas‚ claras. Alá guía a quien Él quiere.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdcxii{El día de la Resurrección, Alá fallará acerca de los creyentes, los judíos, los sabeos, los cristianos, los zoroastrianos y los asociadores. Alá es testigo de todo.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdcxiii{¿No ves que se prosternan ante Alá los que están en los cielos y en la tierra, así como el sol, la luna, las estrellas, las montañas, los árboles, los animales y muchos de los hombres? Esto no obstante, muchos merecen el castigo. No hay quien honre a quien Alá desprecia. Alá hace lo que Él quiere.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdcxiv{Estos son dos grupos rivales que disputan sobre su Señor. A los infieles se les cortarán trajes de fuego y se les derramará en la cabeza agua muy caliente,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdcxv{que les consumirá las entrañas y la piel;\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdcxvi{se emplearán en ellos focinos de hierro.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdcxvii{Siempre que, de atribulados, quieran salir de ella se les hará volver. «¡Gustad el castigo del fuego de la gehena!»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdcxviii{Pero a los creyentes y a los que obraron bien, Alá les introducirá en jardines por cuyos bajos fluyen arroyos. Allí se les ataviará con brazaletes de oro y con perlas, allí vestirán de seda.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdcxix{Habrán sido guiados a la bella Palabra y a la vía del Digno de Alabanza.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdcxx{Los infieles que apartan a otros del camino de Alá y de la Mezquita Sagrada, que hemos establecido para los hombres -tanto si residen en ella como si no-...Y a quien quiera impíamente profanarla, le haremos que guste un doloroso castigo.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdcxxi{Y cuando preparamos para Abraham el emplazamiento de la Casa: «¡No Me asocies nada! ¡Purifica Mi Casa para los que dan las vueltas y para los que están de pie, para los que se inclinan y prosternan!»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdcxxii{¡Llama a los hombres a la peregrinación para que vengan a ti a pie o en todo flaco camello, venido de todo paso ancho y profundo,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdcxxiii{para atestiguar los beneficios recibidos y para invocar el nombre de Alá en días determinados sobre las reses de que Él les ha proveído!: «¡Comed de ellas y alimentad al desgraciado, al pobre!»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdcxxiv{Luego, ¡que den fin a sus prohibiciones, que cumplan sus votos y que den las vueltas alrededor de la Casa Antigua!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdcxxv{¡Así es! Y quien respete las cosas sagradas de Alá, será mejor para él ante su Señor. Se os han declarado lícitos los rebaños, excepto lo que se os recita. ¡Evitad la contaminación que viene de los ídolos! ¡Evitad el decir falsedades!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdcxxvi{¡Como hanifes para con Alá y no como asociadores! Quien asocia a Alá otros dioses es como si cayera del cielo: las aves se lo llevarán o el viento lo arrastrará a un lugar lejano.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdcxxvii{Así es. Y quien respeta las cosas sagradas de Alá... Pues proceden del temor de Alá que tienen los corazones.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdcxxviii{Os aprovecharéis de ello hasta un día determinado. Luego, la inmolación tendrá lugar en la Casa Antigua.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdcxxix{Y hemos establecido un ritual para cada comunidad, a fin de que invoquen el nombre de Alá sobre las reses de que Él les ha proveído. Vuestro Dios es un Dios Uno. ¡Someteos, pues, a Él! ¡Y anuncia la buena nueva a los humildes,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdcxxx{cuyo corazón tiembla a la mención de Alá, a los que tienen paciencia ante la adversidad, a los que hacen la azalá, a los que dan limosna de lo que les hemos proveído!\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdcxxxi{Entre las cosas sagradas de Alá os hemos incluido los camellos de sacrificio. Tenéis en ellos bien. ¡Mencionad, pues, el nombre de Alá sobre ellos cuando están en fila! Y cuando yazcan sin vida, comed de ellos y alimentad al mendigo y al necesitado. Así los hemos sujetado a vuestro servicio. Quizás, así, seáis agradecidos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdcxxxii{Alá no presta atención a su carne ni a su sangre, sino a vuestro temor de Él. Así os los ha sujetado a vuestro servicio, para que ensalcéis a Alá por haberos dirigido. ¡Y anuncia la buena nueva a quienes hacen el bien!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdcxxxiii{Alá abogará en favor de los que han creído. Alá no ama a nadie que sea traidor contumaz, desagradecido.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdcxxxiv{Les está permitido a quienes son atacados, porque han sido tratados injustamente. -Alá es, ciertamente, poderoso para auxiliarles-.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdcxxxv{A quienes han sido expulsados injustamente de sus hogares, sólo por haber dicho: «¡Nuestro Señor es Alá!» Si Alá no hubiera rechazado a unos hombres valiéndose de otros, habrían sido demolidas ermitas, iglesias, sinagogas y mezquitas, donde se menciona mucho el nombre de Alá. Alá auxiliará, ciertamente, a quienes Le auxilien. Alá es, en verdad, fuerte, poderoso.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdcxxxvi{A quienes, si les diéramos poderío en la tierra, harían la azalá, darían el azaque,, ordenarían lo que está bien y prohibirían lo que está mal. El fin de todo es Alá...\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdcxxxvii{Y si te desmienten, también desmintieron antes el pueblo de Noé, los aditas y los tamudeos,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdcxxxviii{el pueblo de Abraham, el pueblo de Lot\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdcxxxix{y los madianitas. Y Moisés fue desmentido. Concedí una prórroga a los infieles. Luego, les sorprendí... Y ¡cuál no fue Mi reprobación!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdcxl{¡Qué de ciudades, impías, hemos destruido, que ahora yacen en ruinas...! ¡Qué de pozos abandonados...! ¡Qué de elevados palacios...!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdcxli{¿No han ido por la tierra con un corazón capaz de comprender y con un oído capaz de oír? ¡No son, no, sus ojos los que son ciegos, sino los corazones que sus pechos encierran!\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdcxlii{Te piden que adelantes la hora del b castigo, pero Alá no faltará a Su promesa. Un día junto a tu Señor vale por mil años de los vuestros.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdcxliii{A cuántas ciudades, impías, les concedí una prórroga. Luego, las sorprendí... ¡Soy Yo el fin de todo!\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdcxliv{Di: «¡Hombres! Yo sólo soy para vosotros un monitor que habla claro».\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdcxlv{Quienes crean y obren bien, obtendrán perdón y generoso sustento.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdcxlvi{Pero quienes se empeñen en hacer fracasar Nuestros signos, ésos morarán en el fuego de la gehena.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdcxlvii{Cuando mandábamos, antes de ti, a algún enviado o a algún profeta, siempre enturbiaba el Demonio sus deseos. Pero Alá invalida las sugestiones del Demonio y, luego, hace Sus aleyas unívocas. Alá es omnisciente, sabio.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdcxlviii{Para tentar por las sugestiones del Demonio a los enfermos de corazón y a los duros de corazón -los impíos están en marcada oposición-,\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdcxlix{y para que sepan quienes han recibido la Ciencia que esto es la Verdad venida de tu Señor, para que crean en ella y se humille ante ella su corazón. En verdad, Alá dirige a los creyentes a una vía recta.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdcl{Pero quienes no crean persistirán en sus dudas acerca de él, hasta que les llegue la Hora de repente o el castigo de un día nefasto.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdcli{Ese día el dominio será de Alá y Él decidirá entre ellos: quienes hayan creído y obrado bien, estarán en los jardines de la Delicia,\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdclii{pero quienes no creyeron y desmintieron Nuestros signos tendrán un castigo humillante.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdcliii{A quienes, habiendo emigrado por Alá, sean muertos o mueran, Alá les proveerá de bello sustento. Alá es el Mejor de los proveedores.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdcliv{Ha de introducirles en un lugar que les placerá. Alá es, ciertamente, omnisciente, benigno.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdclv{Así es. Y si uno se desagravia en la medida del agravio recibido y es de nuevo tratado injustamente, Alá no dejará de auxiliarle. Alá, en verdad. perdona mucho, es indulgente.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdclvi{Esto es así porque Alá hace que la noche entre en el día y que el día entre en la noche. Alá todo lo oye, todo lo ve.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdclvii{Esto es así porque Alá es la Verdad, pero lo que ellos invocan en lugar de invocarle a Él es lo falso, y porque Alá es el Altísimo, el Grande.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdclviii{¿No ves cómo hace Alá bajar agua del cielo y la tierra verdea? Alá es sutil, está bien informado.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdclix{Suyo es lo que está en los cielos y en la tierra. Alá es, ciertamente, Quien Se basta a Sí mismo, el Digno de Alabanza.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdclx{¿No ves que Alá ha sujetado a vuestro servicio lo que hay en la tierra, así como las naves que navegan siguiendo Su orden? Sostiene el cielo para que no se desplome sobre la tierra, si no es con Su permiso. En verdad, Alá es con los hombres manso, misericordioso.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmdclxi{Él es Quien os dio la vida; luego, os hará morir, luego, os volverá a la vida. El hombre es, ciertamente, desagradecido.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmdclxii{Hemos establecido para cada comunidad un ritual, que ellos siguen. ¡Que no discutan contigo sobre este asunto! ¡Llama a tu Señor! Sí, sigues una dirección recta.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmdclxiii{Y, si discuten contigo, di: «¡Alá sabe bien lo que hacéis!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmdclxiv{Alá decidirá entre vosotros el día de la Resurreción sobre aquello en que discrepabais».\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmdclxv{¿No sabes que Alá sabe lo que está en el cielo y en la tierra? Eso está en una Escritura. Es cosa fácil para Alá.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmdclxvi{Sirven, en lugar de servir a Alá, algo a lo que Él no ha conferido autoridad y de lo que no tienen ningún conocimiento. Los impíos no tendrán quien les auxilie.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmdclxvii{Cuando se les recitan Nuestras aleyas como pruebas claras, adviertes la disconformidad en los rostros de los infieles. Poco les falta para arremeter contra quienes les recitan Nuestras aleyas. Di: «No sé si informaros de algo peor aún que eso: el Fuego, con que Alá ha amenazado a los infieles». ¡Qué mal fin...!\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmdclxviii{¡Hombres! Se propone una parábola. ¡Escuchadla! Los que invocáis en lugar de invocar a Alá serían incapaces de crear una mosca, aun si se aunaran para ello. Y, si una mosca se les llevara algo, serían incapaces de recuperarlo. ¡Qué débiles son el suplicante y el suplicado!\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmdclxix{No han valorado a Alá debidamente. Alá es, en verdad, fuerte, poderoso.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmdclxx{Alá escoge enviados entre los ángeles y entre los hombres. Alá todo lo oye, todo lo ve.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmdclxxi{Conoce su pasado y su futuro. Y todo será devuelto a Alá.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmdclxxii{¡Creyentes! ¡Inclinaos, prosternaos, servid a vuestro Señor y obrad bien! Quizás, así, prosperéis.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmdclxxiii{¡Luchad por Alá como Él se merece! Él os eligió y no os ha impuesto ninguna carga en la religión! ¡La religión de vuestro padre Abraham! Él os llamó 'musulmanes' anteriormente y aquí, para que el Enviado sea testigo de vosotros y que vosotros seáis testigos de los hombres. ¡Haced la azalá y, dad el azaque! ¡Y aferraos a Alá! ¡Él es vuestro Protector! ¡Es un protector excelente, un auxiliar excelente!\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmdclxxiv{\basmalahes ¡Bienaventurados los creyentes,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdclxxv{que hacen su azalá con humildad,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdclxxvi{que evitan el vaniloquio,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdclxxvii{que dan el azaque,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdclxxviii{que se abstienen de comercio carnal,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdclxxix{salvo con sus esposas o con sus esclavas en cuyo caso no incurren en reproche,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdclxxx{mientras que quienes desean a otras mujeres, ésos son los que violan la ley-,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdclxxxi{que respetan los depósitos que se les confían y las promesas que hacen,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdclxxxii{que observan sus azalás!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdclxxxiii{Ésos son los herederos\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdclxxxiv{que heredarán el paraíso, en el que estarán eternamente.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdclxxxv{Hemos creado al hombre de arcilla fina.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdclxxxvi{Luego, le colocamos como gota en un receptáculo firme.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdclxxxvii{Luego, creamos de la gota un coágulo de sangre, del coágulo un embrión y del embrión huesos, que revestimos de carne. Luego, hicimos de él otra criatura. ¡Bendito sea Alá, el Mejor de los creadores!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdclxxxviii{Luego, después de esto, habéis de morir.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdclxxxix{Luego, el día de la Resurrección, seréis resucitados.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdcxc{Encima de vosotros, hemos creado siete cielos. No hemos descuidado la creación.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdcxci{Hemos hecho bajar del cielo agua en la cantidad debida y hecho que cale la tierra. Y también habríamos sido bien capaces de hacerla desaparecer.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdcxcii{Por medio de ella os hemos creado palmerales y viñedos en los que hay frutos abundantes, de los que coméis.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdcxciii{Y un árbol que crece en el monte Sinaí y que produce aceite y condimento para la comida.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdcxciv{Tenéis, ciertamente, en los rebaños motivo de reflexión: os damos a beber del contenido de sus vientres, deriváis de ellos muchos beneficios, coméis de ellos.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdcxcv{Ellos y las naves os sirven de medios de transporte.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdcxcvi{Enviamos Noé a su pueblo y dijo: «¡Pueblo! ¡Servid a Alá! No tenéis a ningún otro dios que a Él. ¿Y no Le temeréis?»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdcxcvii{Los dignatarios del pueblo, que no creían, dijeron: «Éste no es sino un mortal como vosotros, que quiere imponerse a vosotros. Si Alá hubiera querido, habría hecho descender a ángeles. No hemos oído que ocurriera tal cosa en tiempo de nuestros antepasados.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdcxcviii{No es más que un poseso. ¡Observadle durante algún tiempo!»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdcxcix{«¡Señor!» dijo: «¡Auxíliame, que me desmienten!»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdcc{Y le inspiramos: «¡Construye la nave bajo Nuestra mirada y según Nuestra inspiración ! Y cuando venga Nuestra orden y el horno hierva, haz entrar en ella a una pareja de cada y a tu familia, salvo a aquél de ellos cuya suerte ha sido ya echada. ¡Y no me hables de los que hayan obrado impíamente! ¡Van a ser anegados!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdcci{Cuando tú y los tuyos estéis instalados en la nave, di: '¡Alabado sea Alá, Que nos ha salvado del pueblo impío!'\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdccii{Y di: '¡Señor! ¡Haz que desembarque en un lugar bendito! Tú eres Quien mejor puede hacerlo'\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdcciii{Ciertamente, hay en ello signos. En verdad, ponemos a prueba...»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdcciv{Luego, después de ellos, suscitamos otra generación\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdccv{y les mandamos un enviado salido de ellos: «¡Servid a Alá! No tenéis a ningún otro dios que a Él ¿Y no Le temeréis?»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdccvi{Pero los dignatarios del pueblo, que no creían y desmentían la existencia de la otra vida y a los cuales habíamos enriquecido en la vida de acá, dijeron: «Éste no es sino un mortal como vosotros, que come de lo mismo que vosotros coméis y bebe de lo mismo que vosotros bebéis».\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdccvii{Si obedecéis a un mortal como vosotros, estáis perdidos.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdccviii{¿Os ha prometido que se os sacará cuando muráis y seáis tierra y huesos?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdccix{¡Está bien lejos de ocurrir lo que se os ha prometido!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdccx{¡No hay más vida que la nuestra de acá! Morimos y vivimos, pero no se nos resucitará.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdccxi{No es más que un hombre, que se ha inventado una mentira contra Alá. No tenemos fe en él.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdccxii{Dijo: «¡Señor! ¡Auxíliame, que me desmienten!»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdccxiii{Dijo: «Un poco más y se arrepentirán».\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdccxiv{El Grito les sorprendió merecidamente y les convertimos en detrito. ¡Atrás el pueblo impío!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdccxv{Luego, después de ellos, suscitamos otras generaciones.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdccxvi{Ninguna comunidad puede adelantar ni retrasar su plazo.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdccxvii{Luego, mandamos a Nuestros enviados, uno tras otro. Siempre que venía un enviado a su comunidad, le desmentían. Hicimos que a unas generaciones les siguieran otras y las hicimos legendarias. ¡Atrás una gente que no cree!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdccxviii{Luego, enviamos Moisés y su hermano Aarón con Nuestros signos y con una autoridad manifiesta\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdccxix{a Faraón y a sus dignatarios, que fueron altivos. Eran gente arrogante.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdccxx{Dijeron: «¿Vamos a creer a dos mortales como nosotros, mientras su pueblo nos sirve de esclavos?»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdccxxi{Les desmintieron y fueron hechos perecer.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdccxxii{Dimos a Moisés la Escritura. Quizás, así, fueran bien dirigidos.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdccxxiii{Hicimos del hijo de María y de su madre un signo y les ofrecimos refugio en una colina tranquila y provista de agua viva.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdccxxiv{«¡Enviados! ¡Comed de las cosas buenas y obrad bien! ¡Yo sé bien lo que hacéis!\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdccxxv{Y ésta es vuestra comunidad. Es una sola comunidad. Y Yo soy vuestro Señor. ¡Temedme, pues!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdccxxvi{Pero se dividieron en sectas, con Escrituras, contento cada grupo con lo suyo.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdccxxvii{Déjales por algún tiempo en su abismo.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdccxxviii{¿Creen que, al proveerles de hacienda y de hijos varones,\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdccxxix{estamos anticipándoles las cosas buenas? No, no se dan cuenta.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdccxxx{Los imbuidos del miedo de su Señor,\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdccxxxi{que creen en los signos de su Señor,\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdccxxxii{que no asocian a otros dioses a su Señor,\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdccxxxiii{que dan lo que dan con corazón tembloroso, a la idea de que volverán a su Señor,\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdccxxxiv{ésos rivalizan en buenas obras y son los primeros en practicarlas.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdccxxxv{No pedimos a nadie sino según sus posibilidades. Tenemos al lado una Escritura que dice la verdad. Y no serán tratados injustamente.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdccxxxvi{Pero sus corazones están en un abismo respecto a esto y, en lugar de aquellas obras, hacen otras.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdccxxxvii{Cuando, al fin, inflijamos un castigo a sus ricos, gemirán.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdccxxxviii{«¡No gimáis hoy, que no se os va a salvar de Nosotros!\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmdccxxxix{Se os recitaban Mis aleyas y vosotros dabais media vuelta,\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmdccxl{altivos con él, y pasabais la noche parloteando».\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmdccxli{¿Es que no ponderan lo que se dice para ver si han recibido lo que sus antepasados no recibieron?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmdccxlii{¿No han conocido, acaso, a su Enviado para que le nieguen?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmdccxliii{¿O dicen que es un poseso? ¡No! Ha venido a ellos con la Verdad, pero la mayoría sienten aversión a la Verdad.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmdccxliv{Si la Verdad se hubiera conformado a sus pasiones, los cielos, la tierra y los que en ellos hay se habrían corrompido. Nosotros, en cambio, les hemos traído su Amonestación, pero ellos se apartan de su Amonestación.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmdccxlv{¿Les pides, acaso, una retribución? La retribución de tu Señor es mejor. Él es el Mejor de los proveedores.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmdccxlvi{Sí, tú les llamas a una vía recta,\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmdccxlvii{pero quienes no creen en la otra vida se desvían, sí, de la vía.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmdccxlviii{Si nos apiadáramos de ellos y les retiráramos la desgracia que tienen, persistirían, ciegos, en su rebeldía.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmdccxlix{Les infligimos un castigo, pero no se sometieron a su Señor y no se humillaron.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmdccl{Hasta que abramos contra ellos una puerta de severo castigo y, entonces, sean presa de la desesperación.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmdccli{Él es Quien ha creado para vosotros el oído, la vista y el intelecto. ¡Qué poco agradecidos sois!\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmdcclii{Él es Quien os ha diseminado por la tierra. Y hacia Él- seréis congregados.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmdccliii{Él es Quien da la vida y da la muerte. Él ha hecho que se sucedan la noche y el día. ¿Es que no comprendéis?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmdccliv{Al contrario, dicen lo mismo que dijeron los antiguos.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmdcclv{Dicen: «Cuando muramos y seamos tierra y huesos, ¿se nos resucitará acaso?\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmdcclvi{Ya antes se nos había prometido esto a nosotros y a nuestros padres. No son más que patrañas de los antiguos».\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmdcclvii{Di: «¿De quién es la tierra y quien en ella hay? Si es que lo sabéis...»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmdcclviii{Dirán: «¡De Alá!» Di: «¿Es que no os dejaréis amonestar?»\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmdcclix{Di: «¿Quién es el Señor de los siete cielos, el Señor del Trono augusto?»\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmdcclx{Dirán: «¡Alá!» Di: «¿Y no Le teméis?»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmdcclxi{Di: «¿Quién tiene en Sus manos la realeza de todo, protegiendo sin que nadie pueda proteger contra Él? Si es que lo sabéis...»\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmdcclxii{Dirán: «¡Alá!» Di: «Y ¿cómo podéis estar tan sugestionados?»\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmdcclxiii{Vinimos a ellos con la Verdad, pero mienten, si.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmdcclxiv{Alá no ha adoptado un hijo, ni hay otro dios junto con Él. Si no, cada dios se habría atribuido lo que hubiera creado y unos habrían sido superiores a otros. ¡Gloria a Alá, Que está por encima de lo que cuentan!\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmdcclxv{El conocedor de lo oculto y de lo patente. ¡Está por encima de lo que Le asocian!\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmdcclxvi{Di: «¡Señor! Si me mostraras aquello con que se les ha amenazado...\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmdcclxvii{¡No me pongas, Señor, con el pueblo impío!»\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmdcclxviii{Nosotros somos bien capaces, ciertamente, de mostrarte aquello con que les hemos amenazado.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmdcclxix{Repele el mal con algo que sea mejor Sabemos bien lo que cuentan.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmdcclxx{Di: «¡Señor! Me refugio en Ti contra las sugestiones de los demonios.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmdcclxxi{Me refugio en Ti, Señor, contra su acoso».\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmdcclxxii{Cuando, al fin, viene la muerte a uno de ellos, dice: «¡Señor! ¡Hazme volver!\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmdcclxxiii{Quizás, así, pueda hacer el bien que dejé de hacer». ¡No! No son sino meras palabras. Pero, detrás de ellos, hay una barrera hasta el día que sean resucitados.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmdcclxxiv{Y, cuando se toque la trompeta, ese día, no valdrá ningún parentesco, ni se preguntarán unos a otros.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmdcclxxv{Aquéllos cuyas obras pesen mucho serán los que prosperen.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmdcclxxvi{Aquéllos cuyas obras pesen poco, serán los que se hayan perdido y estarán en la gehena eternamente.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmdcclxxvii{El fuego abrasará su rostro; tendrán allí los labios contraídos.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmdcclxxviii{«¿No se os recitaron Mis aleyas y vosotros las desmentisteis?»\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmdcclxxix{«¡Señor!», dirán, «nuestra miseria nos pudo y fuimos gente extraviada.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmdcclxxx{¡Señor! ¡Sácanos de ella! Si reincidimos, seremos unos impíos».\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxi{Dirá: «¡Quedaos en ella y no Me habléis!»\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxii{Algunos de Mis siervos decían: «¡Señor! ¡Creemos! ¡Perdónanos, pues, y ten misericordia de nosotros! ¡Tú eres el Mejor de quienes tienen misericordia!»\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxiii{Pero os burlasteis tanto de ellos que hicieron que os olvidarais de Mí. Os reíais de ellos.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxiv{Hoy les retribuyo por la paciencia que tuvieron. Ellos son los que triunfan.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxv{Dirá: «¿Cuántos años habéis permanecido en la tierra?»\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxvi{Dirán: «Hemos permanecido un día o parte de un día. ¡Interroga a los encargados de contar!»\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxvii{Dirá: «No habéis permanecido sino poco tiempo. Si hubierais sabido...\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxviii{¿Os figurabais que os habíamos creado para pasar el rato y que no ibais a ser devueltos a Nosotros?»\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxix{¡Exaltado sea Alá, el Rey verdadero! No hay más dios que Él, el Señor del Trono noble.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmdccxc{Quien invoque a otro dios junto con Alá, sin tener prueba de ello, tendrá que dar cuenta sólo a su Señor. Los infieles no prosperarán\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmdccxci{Y di: «¡Señor! ¡Perdona y ten misericordia! ¡Tú eres el Mejor de quienes tienen misericordia!»\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmdccxcii{\basmalahes He aquí una sura que hemos revelado e impuesto. En ella hemos revelado aleyas claras. Quizás, así, os dejéis amonestar.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdccxciii{Flagelad a la fornicadora y al fornicador con cien azotes cada uno. Por respeto a la ley de Alá, no uséis de mansedumbre con ellos, si es que créeis en Alá y en el último Día. Y que un grupo de creyentes sea testigo de su castigo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdccxciv{El fornicador no podrá casarse más que con una fornicadora o con una asociadora. La fornicadora no podrá casarse más que con un fornicador o con un asociador. Eso les está prohibido a los creyentes.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdccxcv{A quienes difamen a las mujeres honestas sin poder presentar cuatro testigos, flageladles con ochenta azotes y nunca más aceptéis su testimonio. Ésos son los perversos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdccxcvi{Se exceptúan aquéllos que, después, se arrepientan y se enmienden. Alá es indulgente, misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdccxcvii{Quienes difamen a sus propias esposas sin poder presentar a más testigos que a sí mismos, deberán testificar jurando por Alá cuatro veces que dicen la verdad,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdccxcviii{e imprecando una quinta la maldición de Alá sobre sí si mintieran.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdccxcix{Pero se verá libre del castigo la mujer que atestigüe jurando por Alá cuatro veces que él miente,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdccc{e imprecando una quinta la ira de Alá sobre sí si él dijera la verdad.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdccci{Si no llega a ser por el favor de Alá y Su misericordia para con vosotros y porque Alá es indulgente, sabio...\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdcccii{Los mentirosos forman un grupo entre vosotros. No creáis que se resolverá en mal para vosotros, antes, al contrario, en bien. Todo aquél que peque recibirá conforme a su pecado; pero el que se cargue con más culpa tendrá un castigo terrible.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdccciii{Cuando los creyentes y las creyentes lo han oído, ¿por qué no han pensado bien en sus adentros y dicho: «¡Es una mentira manifiesta!»?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdccciv{¿Por qué no han presentado cuatro testigos? Como no han presentado testigos, para Alá que mienten.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdcccv{Si no llega a ser por el favor de Alá y Su misericordia para con vosotros en la vida de acá y en la otra, habríais sufrido un castigo terrible por vuestras habladurías.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdcccvi{Cuando las habéis recibido en vuestras lenguas, y vuestras bocas han dicho algo de que no teníais ningún conocimiento, creyendo que era cosa de poca monta, siendo así que para Alá era grave.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdcccvii{Cuando lo habéis oído, ¿por qué no habéis dicho: «¡No tenemos que hablar de eso! ¡Gloria a Ti! ¡Es una calumnia enorme!»?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdcccviii{Alá os exhorta, si sois creyentes, a que nunca reincidáis.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdcccix{Alá os aclara las aleyas. Alá es omnisciente, sabio.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdcccx{Quienes deseen que se extienda la torpeza entre los creyentes, tendrán un castigo doloroso en la vida de acá y en la otra. Alá sabe, mientras que vosotros no sabéis.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdcccxi{Si no llega a ser por el favor de Alá y Su misericordia para con vosotros y porque Alá es manso, misericordioso...\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdcccxii{¡Creyentes! ¡No sigáis las pisadas del Demonio! A quien sigue las pisadas del Demonio, éste le ordena lo deshonesto y lo reprobable. Si no fuera por el favor de Alá y Su misericordia para con vosotros, ninguno de vosotros sería puro jamás. Pero Alá purifica a quien Él quiere. Alá todo lo oye, todo lo sabe.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdcccxiii{Quienes de vosotros gocen del favor y de una vida acomodada, que no juren que no darán más a los parientes, a los pobres y a los que han emigrado por Alá. Que perdonen y se muestren indulgentes. ¿Es que no queréis que Alá os perdone? Alá es indulgente, misericordioso.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdcccxiv{Malditos sean en la vida de acá y en la otra quienes difamen a las mujeres honestas, incautas pero creyentes. Tendrán un castigo terrible\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdcccxv{el día que sus lenguas, manos y pies atestigüen contra ellos por las obras que cometieron.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdcccxvi{Ese día, Alá les retribuirá en su justa medida y sabrán que Alá es la Verdad manifiesta.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdcccxvii{Las mujeres malas para los hombres malos, los hombres malos para las mujeres malas. Las mujeres buenas para los hombres buenos, los hombres buenos para las mujeres buenas. Estos son inocentes de lo que se les acusa. Obtendrán perdón y generoso sustento.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdcccxviii{¡Creyentes! No entréis en casa ajena sin daros a conocer y saludar a sus moradores. Es mejor para vosotros. Quizás, así, os amonestar.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdcccxix{Si no encontráis en ella a nadie, no entréis sin que se os dé permiso. Si se os dice que os vayáis, ¡idos! Es más correcto. Alá sabe bien lo que hacéis.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdcccxx{No hacéis mal si entráis en casa deshabitada que contenga algo que os pertenece. Alá sabe lo que manifestáis y lo que ocultáis.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdcccxxi{Di a los creyentes que bajen la vista con recato y que sean castos. Es más correcto. Alá está bien informado de lo que hacen.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdcccxxii{Y di a las creyentes que bajen la vista con recato, que sean castas y no muestren más adorno que los que están a la vista, que cubran su escote con el velo y no exhiban sus adornos sino a sus esposos, a sus padres, a sus suegros, a sus propios hijos, a sus hijastros, a sus hermanos, a sus sobrinos carnales, a sus mujeres, a sus esclavas, a sus criados varones fríos, a los niños que no saben aún de las partes femeninas. Que no batan ellas con sus pies de modo que se descubran sus adornos ocultos. ¡Volvéos todos a Alá, creyentes! Quizás, así, prosperéis.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdcccxxiii{Casad a aquéllos de vosotros que no estén casados y a vuestros esclavos y esclavas honestos. Si son pobres, Alá les enriquecerá con Su favor. Alá es inmenso, omnisciente.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdcccxxiv{Que los que no puedan casarse observen la continencia hasta que Alá les enriquezca con Su favor. Extended la escritura a los esclavos que lo deseen si reconocéis en ellos bien, y dadles de la hacienda que Alá os ha concedido. Si vuestras esclavas prefieren vivir castamente, no les obliguéis a prostituirse para procuraros los bienes de la vida de acá. Si alguien les obliga, luego de haber sido obligadas Alá se mostrará indulgente, misericordioso.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdcccxxv{Os hemos revelado aleyas aclaratorias, un ejemplo sacado de vuestros antecesores y una exhortación para los temerosos de Alá.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdcccxxvi{Alá es la Luz de los cielos y de la tierra. Su Luz es comparable a una hornacina en la que hay un pabilo encendido. El pabilo está en un recipiente de vidrio, que es como si fuera una estrella fulgurante. Se enciende de un árbol bendito, un olivo, que no es del Oriente ni del Occidente, y cuyo aceite casi alumbra aun sin haber sido tocado por el fuego. ¡Luz sobre Luz! Alá dirige a Su Luz a quien Él quiere. Alá propone parábolas a los hombres. Alá es omnisciente.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdcccxxvii{En casas que Alá ha permitido erigir y que se mencione en ellas Su nombre. En ellas Le glorifican, mañana y tarde,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdcccxxviii{hombres a quienes ni los negocios ni el comercio les distraen del recuerdo de Alá, de hacer la azalá y de dar el azaque. Temen un día en que los corazones y las miradas sean puestos del revés.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdcccxxix{Para que Alá les retribuya por sus mejores obras y les dé más de Su favor. Alá provee sin medida a quien Él quiere.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdcccxxx{Las obras de los infieles son como espejismo en una llanura: el muy sediento cree que es agua, hasta que, llegado allá, no encuentra nada. Sí encontrará, en cambio, a Alá junto a sí y Él le saldará su cuenta. Alá es rápido en ajustar cuentas.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxi{O como tinieblas en un mar profundo, cubierto de olas, unas sobre otras, con nubes por encima, tinieblas sobre tinieblas. Si se saca la mano, apenas se la distingue. No dispone de luz ninguna aquél a quien Alá se la niega.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxii{¿No ves que glorifican a Alá quienes están en los cielos y en la tierra, y las aves con las alas desplegadas? Cada uno sabe cómo orar y cómo glorificarle. Alá sabe bien lo que hacen.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxiii{El dominio de los cielos y de la tierra pertenece a Alá. ¡Es Alá el fin de todo!\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxiv{¿No ves que Alá empuja las nubes y las agrupa y, luego, forma nubarrones? Ves, entonces, que el chaparrón sale de ellos. Hace bajar del cielo montañas de granizo y hiere o no con él según que quiera o no quiera. El resplandor del relámpago que acompaña deja casi sin vista.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxv{Alá hace que se sucedan la noche y el día. Sí, hay en ello motivo de reflexión para los que tienen ojos.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxvi{Alá ha creado a todos los animales de agua: de ellos unos se arrastran, otros caminan a dos patas, otros a cuatro. Alá crea lo que quiere. Alá es omnipotente.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxvii{Hemos revelado aleyas aclaratorias. Alá dirige a quien Él quiere a una vía recta.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxviii{Y dicen: «¡Creemos en Alá y en el Enviado y obedecemos!» Pero luego, después de eso, algunos de ellos vuelven la espalda. Esos tales no son creyentes.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxix{Cuando se les llama ante Alá y su Enviado para que decida entre ellos, he aquí que algunos se van.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdcccxl{Cuando les asiste la razón, vienen a él sumisos.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdcccxli{¡,Tienen, acaso, el corazón enfermo? ¿Dudan? ¡Temen, acaso, que Alá y Su Enviado sean injustos con ellos? Antes bien, ellos son los injustos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdcccxlii{Cuando se llama a los creyentes ante Alá y Su Enviado para que decida entre ellos, se contentan con decir: «¡Oímos y obedecemos!» Ésos son los que prosperarán.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdcccxliii{Quienes obedecen a Alá y a Su Enviado, tienen miedo de Alá y Le temen, ésos son los que triunfarán.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdcccxliv{Han jurado solemnemente por Alá que si tú se lo ordenaras, sí que saldrían a campaña. Di: «¡No juréis! Una obediencia como se debe. Alá está bien informado de lo que hacéis».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdcccxlv{Di: «¡Obedeced a Alá y obedeced al Enviado!» Si volvéis la espalda... Él es responsable de lo que se le ha encargado y vosotros de lo que se os ha encargado. Si le obedecéis, seguís la buena dirección. Al Enviado no le incumbe más que la transmisión clara.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdcccxlvi{A quienes de vosotros crean y obren bien, Alá les ha prometido que ha de hacerles sucesores en la tierra, como ya había hecho con sus antecesores. Y que ha de consolidar la religión que le plugo profesaran. Y que ha de trocar su temor en seguridad. Me servirán sin asociarme nada. Quienes, después de esto, no crean, ésos son los perversos.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdcccxlvii{¡Haced la azalá, dad el azaque y obedeced al Enviado! Quizás, así, se os tenga piedad.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdcccxlviii{No creas, no, que los infieles puedan escapar en la tierra. Su morada será el Fuego. ¡Qué mal fin...!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdcccxlix{¡Creyentes! Los esclavos y los impúberes, en tres ocasiones, deben pediros permiso: antes de levantaros, cuando os quitáis la ropa al mediodía y después de acostaros. Son para vosotros tres momentos íntimos. Fuera de ellos, no hacéis mal, ni ellos tampoco, si vais de unos a otros, de acá para allá. Así os aclara Alá las aleyas. Alá es omnisciente, sabio.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdcccl{Cuando vuestros niños alcancen la pubertad, deberán pedir permiso, como hicieron quienes les precedieron. Así os aclara Alá Sus aleyas. Alá es omnisciente, sabio.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdcccli{Las mujeres que han alcanzado la edad crítica y no cuentan ya con casarse, no hacen mal si se quitan la ropa, siempre que no exhiban sus adornos. Pero es mejor para ellas si se abstienen. Alá todo lo oye, todo lo sabe.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdccclii{El ciego, el cojo, el enfermo, vosotros mismos, no tengáis escrúpulos en comer en vuestras casas o en casa de vuestros padres o de vuestras madres, en casa de vuestros hermanos o de vuestras hermanas, en casa de vuestros tíos paternos o de vuestras tías paternas, en casa de vuestros tíos maternos o de vuestras tías maternas, en casa cuyas llaves poseéis o en casa de un amigo. No tengáis escrúpulos en comer juntos o por separado. Y, cuando entréis en una casa, saludaos unos a otros empleando una fórmula venida de Alá, bendita buena, Así os aclara Alá las aleyas. Quizás, así, comprendáis.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdcccliii{Los creyentes son, en verdad, quienes creen en Alá y en su Enviado. Cuando están con éste por un asunto de interés común, no se retiran sin pedirle permiso. Quienes te piden ese permiso son los que de verdad creen en Alá y en Su Enviado. Si te piden permiso por algún asunto suyo, concédeselo a quien de ellos quieras y pide a Alá que les perdone. Alá es indulgente, misericordioso.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdcccliv{No equiparéis entre vosotros el llamamiento del Enviado a un llamamiento que podáis dirigiros unos a otros. Alá sabe quiénes de vosotros se escabullen a escondidas. ¡Que tengan cuidado los que se hurtan a Su orden, no sea que les aflija una prueba o que les aflija un castigo doloroso!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdccclv{¿No es de Alá lo que está en los cielos y en la tierra? Él conoce vuestra situación. Y el día que sean devueltos a Él, ya les informará de lo que hicieron. Alá es omnisciente.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdccclvi{\basmalahes ¡Bendito sea Quien ha revelado el Criterio a Su siervo a fin de que sea monitor para todo el mundo.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdccclvii{Quien posee el dominio de los cielos y de la tierra, no ha adoptado un hijo ni tiene asociado en el dominio, lo ha creado todo y lo ha determinado por completo!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdccclviii{En lugar de tomarle a Él, han tomado a dioses que no crean nada, sino que ellos mismos son creados, que no disponen, ni siquiera para sí mismos, de lo que puede dañar o aprovechar, y no tienen poder sobre la muerte, ni sobre la vida, ni sobre la resurrección.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdccclix{Dicen los infieles: «Esto no es sino una mentira, que él se ha inventado y en la que otra gente le ha ayudado». Obran impía y dolosamente.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdccclx{Y dicen: «Patrañas de los antiguos que él se ha apuntado. Se las dictan mañana y tarde».\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdccclxi{Di: «Lo ha revelado Quien conoce el secreto en los cielos y en la tierra. Es indulgente, misericordioso».\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdccclxii{Y dicen: «¿Qué clase de Enviado es éste que se alimenta y pasea por los mercados? ¿Por qué no se le ha mandado de lo alto un ángel que sea, junto a él, monitor...?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdccclxiii{¿Por qué no se le ha dado un tesoro o por qué no tiene un jardín de cuyos frutos pueda comer...?» Los impíos dicen: «No seguís sino a un hombre hechizado».\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdccclxiv{¡ Mira a qué te comparan! Se extravían y no pueden encontrar un camino.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdccclxv{¡Bendito sea Quien, si quiere, puede darte algo mejor que eso: jardines por cuyos bajos fluyen arroyos, palacios!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdccclxvi{Pero ¡no! Desmienten la Hora y hemos preparado fuego de la gehena para quienes desmienten la Hora.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdccclxvii{Cuando les vea, lejos aún, oirán su furor y bramido.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdccclxviii{Cuando, atados unos a otros, sean precipitados en un lugar estrecho de él, invocarán entonces la destrucción.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdccclxix{«¡No invoquéis hoy una sola destrucción sino muchas destrucciones!»\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdccclxx{Di: «¿Vale más esto que el Jardín de inmortalidad que se ha prometido a los temerosos de Alá como retribución y fin último?»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdccclxxi{Inmortales, tendrán cuanto deseen. Es una promesa que obliga a tu Señor.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdccclxxii{El día que Él les congregue, a ellos y a los que servían en lugar de servir a Alá, dirá: «¿Sois vosotros los que habéis extraviado a estos Mis siervos o ellos solos se han extraviado del Camino?»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdccclxxiii{Dirán: «¡Gloria a Ti! No nos estaba bien que tomáramos a otros como amigos, en lugar de tomarte a Ti. Pero les permitiste gozar tanto, a ellos y a sus padres, que olvidaron la Amonestación y fueron gente perdida».\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdccclxxiv{«Os desmienten lo que decís. No podréis escapar al castigo ni encontrar quien os auxilie. A quien de vosotros obre impíamente le haremos gustar un gran castigo».\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdccclxxv{Antes de ti no mandamos más que a enviados que se alimentaban y paseaban por los mercados. Hemos puesto a algunos de vosotros como prueba para los demás, a ver si tenéis paciencia. Tu Señor todo lo ve.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdccclxxvi{Los que no cuentan con encontrarnos, dicen: «¿Por qué no se nos han enviado de lo alto ángeles o por qué no vemos a nuestro Señor?» Fueron altivos en sus adentros y se insolentaron sobremanera.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdccclxxvii{El día que vean a los ángeles, no habrá, ese día, buenas nuevas para los pecadores. Dirán: «¡Límite infranqueable!»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdccclxxviii{Examinaremos sus obras y haremos de ellas polvo disperso en el aire.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdccclxxix{Ese día los moradores del Jardín gozarán de la mejor morada y del más bello descansadero.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdccclxxx{El día que se desgarre el nubarrón del cielo y sean enviados abajo los ángeles.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxi{ese día, el dominio, el verdadero, será del Compasivo, y será un día difícil para los infieles.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxii{el día que el impío se muerda las manos diciendo: «¡Ojalá hubiera seguido un mismo camino que el Enviado!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxiii{¡Ay de mí! ¡Ojalá no hubiera tomado a fulano como amigo!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxiv{Me ha desviado de la Amonestación, después de haber venido a mí». El Demonio siempre deja colgado al hombre.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxv{El Enviado dice: «¡Señor! ¡Mi pueblo ha cobrado aversión a este Corán !»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxvi{Así hemos asignado a cada profeta un enemigo de entre los pecadores. Pero tu Señor basta como guía y auxilio.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxvii{Los infieles dicen: «¿Por qué no se le ha revelado el Corán de una vez?» Para, así, confirmar con él tu corazón. Y lo hemos hecho recitar lenta y claramente.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxviii{No te proponen ninguna parábola que no te aportemos Nosotros el verdadero sentido y la mejor interpretación.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxix{Aquéllos que sean congregados, boca abajo, hacia la gehena serán los que se encuentren en la situación peor y los más extraviados del Camino.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdcccxc{Dimos a Moisés la Escritura y pusimos a su hermano Aarón como ayudante suyo.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdcccxci{Y dijimos: «¡Id al pueblo que ha desmentido Nuestros signos!» Y los aniquilamos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdcccxcii{Y al pueblo de Noé. Cuando desmintió a los enviados, le anegamos e hicimos de él un signo para los hombres. Y hemos preparado un castigo doloroso para los impíos.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdcccxciii{A los aditas, a los tamudeos, a los habitantes de ar-Rass y a muchas generaciones intermedias...\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdcccxciv{A todos les dimos ejemplos y a todos les exterminamos.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdcccxcv{Han pasado por las ruinas de la ciudad sobre la que cayó una lluvia maléfica. Se diría que no la han visto, porque no esperan una resurrección.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdcccxcvi{Cuando te ven, no hacen sino tomarte a burla: «¿Es éste el que Alá ha mandado como enviado?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdcccxcvii{Si no llega a ser porque nos hemos mantenido fieles a nuestros dioses, nos habría casi desviado de ellos». Pero, cuando vean el castigo, sabrán quién se ha extraviado más del Camino.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdcccxcviii{¿Qué te parece quien ha divinizado su pasión? ¿Vas a ser tú su protector?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdcccxcix{¿Crees que la mayoría oyen o entienden? No son sino como rebaños. No, más extraviados aún del Camino.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmcm{¿No ves cómo hace tu Señor que se deslice la sombra? Si quisiera, podría hacerla fija. Además, hemos hecho del sol guía para ella.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmcmi{Luego, la atraemos hacia Nosotros con facilidad.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmcmii{Él es Quien ha hecho para vosotros de la noche vestidura, del sueño descanso, del día resurrección.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmcmiii{Él es Quien envía los vientos como nuncios que preceden a Su misericordia. Hacemos bajar del cielo agua pura,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmcmiv{para vivificar con ella un país muerto y dar de beber, entre lo que hemos creado, a la multitud de rebaños y seres humanos.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcmv{La hemos distribuido entre ellos para que se dejen amonestar, pero la mayoría de los hombres no quieren sino ser infieles.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcmvi{Si hubiéramos querido, habríamos enviado a cada ciudad un monitor.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcmvii{No obedezcas, pues, a los infieles y lucha esforzadamente contra ellos, por medio de él.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcmviii{Él es Quien ha hecho que las dos grandes masas de agua fluyan: una, dulce, agradable; otra, salobre, amarga. Ha colocado entre ellas una barrera y límite infranqueable.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcmix{Él es quien ha creado del agua un ser humano, haciendo de él el parentesco por consanguinidad o por afinidad. Tu Señor es omnipotente.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcmx{Pero, en lugar de servir a Alá, sirven lo que no puede aprovecharles ni dañarles. El infiel es un auxiliar contra su Señor.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcmxi{A ti no te hemos enviado sino como nuncio de buenas nuevas y como monitor.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcmxii{Di: «No os pido a cambio ningún salario. Sólo que, quien quiera, ¡que emprenda camino hacia su Señor!»\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcmxiii{Y ¡confía en el Viviente, Que no muere! ¡Celebra Sus alabanzas! El está suficientemente informado de los pecados de Sus siervos.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcmxiv{Él es Quien ha creado en seis días los cielos, la tierra y lo que entre ellos hay. Luego, se ha instalado en el Trono. El Compasivo. ¡Interroga a quien esté bien informado de Él!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcmxv{Cuando se les dice: «¡Prosternaos ante el Compasivo!», dicen: «Y ¿qué es 'el Compasivo'? ¿Vamos a prosternarnos sólo porque tú lo ordenes?» Y esto acrecienta su repulsa.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcmxvi{¡Bendito sea Quien ha puesto constelaciones en el cielo y entre ellas un luminar y una luna luminosa!\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcmxvii{Él es Quien ha dispuesto que se sucedan la noche y el día para quien quiera dejarse amonestar o quiera dar gracias.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcmxviii{Los siervos del Compasivo son los que van por la tierra humildemente y que, cuando los ignorantes les dirigen la palabra, dicen: «¡Paz!»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcmxix{Pasan la noche ante su Señor, postrados o de pie.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcmxx{Dicen: «¡Señor! ¡Aleja de nosotros el castigo de la gehena!» Su castigo es perpetuo.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcmxxi{Sí es mala como morada y residencia.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcmxxii{Cuando gastan, no lo hacen con prodigalidad ni con tacañería, -el término medio es lo justo-.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmcmxxiii{No invocan a otro dios junto con Alá, no matan a nadie que Alá haya prohibido, si no es con justo motivo, no fornican. Quien comete tal, incurre en castigo.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmcmxxiv{El día de la Resurrección se le doblará el castigo y lo sufrirá eternamente humillado.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmcmxxv{No así quien se arrepienta, crea y haga buenas obras. A éstos Alá les cambiará sus malas obras en buenas. Alá es indulgente, misericordioso.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmcmxxvi{Quien se arrepienta y obre bien dará muestras de un arrepentimiento sincero.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmcmxxvii{No prestan falso testimonio y, cuando pasan y oyen vaniloquio, prosiguen la marcha dígnamente.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcmxxviii{Cuando se les amonesta con los signos de su Señor, no caen al suelo ante ellos, sordos y ciegos.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmcmxxix{Dicen: «¡Señor! ¡Haznos el regalo de que nuestras esposas y descendencia sean nuestra alegría, haz que seamos modelo para los temerosos de Alá!»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmcmxxx{Éstos serán retribuidos con una cámara alta porque tuvieron paciencia. Se les acogerá allí con palabras de salutación y de paz.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcmxxxi{Eternos allí... ¡Qué bello lugar como morada y como residencia!\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcmxxxii{Di: «Mi Señor no se cuidaría de vosotros si no Le invocarais. Pero habéis desmentido y es ineludible».\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcmxxxiii{\basmalahes tsm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcmxxxiv{Éstas son las aleyas de la Escritura sabia.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcmxxxv{Tú, quizá, te consumas de pena porque no creen.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmcmxxxvi{Si quisiéramos, haríamos bajar del cielo sobre ellos un signo y doblarían ante él la cerviz.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcmxxxvii{No les llega una nueva amonestación del Compasivo que no se aparten de ella.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcmxxxviii{Han desmentido, pero recibirán noticias de aquello de que se burlaban.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcmxxxix{¿No han visto cuánta especie generosa de toda clase hemos hecho crecer en la tierra?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcmxl{Ciertamente, hay en ello un signo, pero la mayoría no creen.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcmxli{En verdad, tu Señor es el Poderoso, el Misericordioso.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcmxlii{Y cuando tu Señor llamó a Moisés: «Ve al pueblo impío,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcmxliii{al pueblo de Faraón. ¿No van a temerme ?»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmcmxliv{Dijo: «¡Señor! Temo que me desmientan.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcmxlv{Me angustio, se me traba la lengua. ¡Envía por Aarón!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcmxlvi{Me acusan de un crimen y temo que me maten».\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmcmxlvii{Dijo: «¡No! ¡Id los dos con Nuestros signos! Estamos con vosotros, escuchamos.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmcmxlviii{Id a Faraón y decid: '¡Nos ha enviado el Señor del universo:\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmcmxlix{¡Deja marchar con nosotros a los Hijos de Israel!'»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmcml{Dijo: «¿No te hemos educado, cuando eras niño, entre nosotros? ¿No has vivido durante años de tu vida entre nosotros?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmcmli{Desagradecido, hiciste lo que hiciste»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmcmlii{Dijo: «Lo hice cuando estaba extraviado.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmcmliii{Tuve miedo de vosotros y me escapé. Mi Señor me ha regalado juicio y ha hecho de mí uno de los enviados.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmcmliv{¿Es ésta una gracia que me echas en cara, tú que has esclavizado a los Hijos de Israel?»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmcmlv{Faraón dijo: «Y ¿qué es 'el Señor del universo'?»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmcmlvi{Dijo: «Es el Señor de los cielos, de la tierra y de lo que entre ellos está. Si estuvierais convencidos...»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmcmlvii{Dijo a los circunstantes: «¡Habéis oído?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmcmlviii{Dijo. «Es vuestro Señor y Señor de vuestros antepasados...»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmcmlix{Dijo: «¡El enviado que se os ha mandado es; ciertamente, un poseso!»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmcmlx{Dijo: «...el Señor del Oriente y del Occidente y de lo que entre ellos está. Si razonarais...»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmcmlxi{Dijo: «¡Si tomas por dios a otro diferente de mí, he de enviarte a la cárcel!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmcmlxii{Dijo: «¿Y si te trajera algo claro?»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmcmlxiii{Dijo: «¡Tráelo‚ si es verdad lo que dices!»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmcmlxiv{Moisés tiró su vara y he aquí que ésta se convirtió en una auténtica serpiente.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmcmlxv{Sacó su mano y he aquí que apareció blanca a los ojos de los presentes.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmcmlxvi{Dijo a los dignatarios que le rodeaban: «Sí, éste es un mago muy entendido,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmcmlxvii{que quiere expulsaros de vuestra tierra con su magia. ¿Qué ordenáis?»\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmcmlxviii{Dijeron: «Dales largas, a él y a su hermano, y envía a las ciudades a agentes que convoquen,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmcmlxix{que te traigan a los magos más entendidos, a todos».\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmcmlxx{Los magos fueron convocados para una determinada hora del día convenido\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmcmlxxi{y se dijo a la gente: «¿No queréis asistir?\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmcmlxxii{Quizás, así, sigamos a los magos, si son ellos los que ganan»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmcmlxxiii{Cuando llegaron los magos dijeron a Faraón: «Si ganamos, recibiremos una recompensa, ¿no?»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmcmlxxiv{Dijo: «¡Sí! Y seréis entonces, ciertamente, de mis allegados».\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmcmlxxv{Moisés les dijo: «¡Tirad lo que vayáis a tirar!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmcmlxxvi{Y tiraron sus cuerdas y varas, y dijeron: «¡Por el poder de Faraón, que venceremos!»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmcmlxxvii{Moisés tiró su vara y he aquí que ésta engulló sus mentiras.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmcmlxxviii{Y los magos cayeron prosternados.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmcmlxxix{Dijeron: «¡Creemos en el Señor del universo,\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmcmlxxx{el Señor de Moisés y de Aarón!»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxi{Dijo: «¡Le habéis creído antes de que yo os autorizara a ello! ¡Es vuestro maestro, que os ha enseñado la magia! ¡Vais a ver! ¡He de haceros amputar las manos y los pies opuestos! ¡Y he de haceros crucificar a todos!»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxii{Dijeron: «¡No importa! ¡Nos volvemos a nuestro Señor!\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxiii{Anhelamos que nuestro Señor nos perdone nuestros pecados, ya que hemos sido los primeros en creer».\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxiv{E inspiramos a Moisés: «¡Parte de noche con Mis siervos! ¡Seréis perseguidos!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxv{Faraón envió a las ciudades a agentes que convocaran:\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxvi{«Son una banda insignificante\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxvii{y, ciertamente, nos han irritado.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxviii{Nosotros, en cambio, somos todo un ejército y estamos bien prevenidos».\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxix{Les expulsamos de sus jardines y fuentes,\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcmxc{de sus tesoros y suntuosas residencias.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcmxci{Así fue, y se lo dimos en herencia a los Hijos de Israel.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcmxcii{A la salida del sol, les persiguieron.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcmxciii{Cuando los dos grupos se divisaron, dijeron los compañeros de Moisés: «¡Nos ha alcanzado!»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcmxciv{Dijo: «¡No! ¡Mi Señor está conmigo, el me dirigirá!»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcmxcv{E inspiramos a Moisés: «¡Golpea el mar con tu vara!» El mar, entonces, se partió y cada parte era como una imponente montaña.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcmxcvi{Hicimos que los otros se acercaran allá,\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcmxcvii{y salvamos a Moisés y a todos los que con él estaban.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcmxcviii{Luego, anegamos a los otros.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcmxcix{Ciertamente, hay en ello un signo, pero la mayoría no creen.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmm{¡Sí, tu Señor es el Poderoso, el Misericordioso!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmi{¡Cuéntales la historia de Abraham!\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmii{Cuando dijo a su padre y a su pueblo: «¿Qué servís?»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmiii{Dijeron: «Servimos a ídolos y continuaremos entregándonos a su culto».\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmiv{Dijo: «Y ¿os escuchan cuando les invocáis?\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmv{¿Pueden aprovecharos o haceros daño?»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmvi{Dijeron: «¡No, pero encontramos que nuestros antepasados hacían lo mismo!»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmvii{Dijo: «¿Y habéis visto lo que servíais,\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmviii{vosotros y vuestros lejanos antepasados?\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmix{Son mis enemigos, a diferencia del Señor del universo.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmx{Que me ha creado y me dirige,\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmxi{me da de comer y de beber,\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmxii{me cura cuando enfermo,\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmxiii{me hará morir y, luego, me volverá a la vida,\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmxiv{de Quien anhelo el perdón de mis faltas el día del Juicio.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmxv{¡Señor! ¡Regálame juicio y reúneme con los justos!\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmxvi{¡Haz que tenga una buena reputación en mi posteridad!\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmxvii{¡Cuéntame entre los herederos del Jardín de la Delicia!\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmxviii{¡Perdona a mi padre, estaba extraviado!\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmxix{No me avergüences el día de la Resurrección,\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmxx{el día que no aprovechen hacienda ni hijos varones,\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmxxi{excepto a quien vaya a Alá con corazón sano».\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmxxii{El Jardín será acercado a quienes hayan temido a Alá\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmxxiii{y el fuego de la gehena aparecerá ante los descarriados.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmxxiv{Se les dirá: «¿Dónde está lo que servíais\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmxxv{en lugar de servir a Alá? ¿Pueden auxiliaros o auxiliarse a sí mismos?»\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmxxvi{Ellos y los descarriados serán precipitados en él,\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmmxxvii{así como las huestes de Iblis, todas.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmmxxviii{Ya en él dirán mientras disputan:\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmmxxix{«¡Por Alá, que estábamos, sí, evidentemente extraviados\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmmxxx{cuando os equiparábamos al Señor del universo!\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmmxxxi{Nadie sino los pecadores nos extraviaron\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmmxxxii{y, ahora, no tenemos a nadie que interceda,\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmmxxxiii{a ningún amigo ferviente.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmmxxxiv{Si pudiéramos volver para ser creyentes...»\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmmxxxv{Ciertamente, hay en ello un signo, pero la mayoría no creen.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmmxxxvi{Tu Señor es, ciertamente, el Poderoso, el Misericordioso.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmmxxxvii{El pueblo de Noé desmintió a los enviados.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmmxxxviii{Cuando su hermano Noé les dijo: «¿Es que no vais a temer a Alá?\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmmxxxix{Tenéis en mí a un enviado digno de confianza.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmmxl{¡Temed, pues, a Alá y obedecedme!\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmmxli{No os pido por ello ningún salario. Mi salario no incumbe sino al Señor del universo.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmmxlii{¡Temed, pues, a Alá y obedecedme!»\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmmxliii{Dijeron: «¿Vamos a creerte a ti, siendo así que son los más viles los que te siguen?»\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmmxliv{Dijo: «¿Y qué sé yo de sus obras?\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmmxlv{Sólo a mi Señor tienen que dar cuenta. Si os dierais cuenta...\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmmxlvi{¡No voy yo a rechazar a los creyentes!\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmmxlvii{¡Yo no soy más que un monitor que habla claro!»\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmmxlviii{Dijeron: «¡Noé! Si no paras, ¡hemos de lapidarte!»\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmmxlix{Dijo: «¡Señor! Mi pueblo me desmiente.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmml{¡Falla, pues, entre yo y ellos, y sálvame, junto con los creyentes que están conmigo!»\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmmli{Les salvamos, pues, a él y a quienes estaban con él en la nave abarrotada.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmmlii{Luego, después, anegamos al resto.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmmliii{Ciertamente, hay en ello un signo, pero la mayoría no creen.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmmliv{En verdad, tu Señor es el Poderoso. el Misericordioso.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmmlv{Los aditas desmintieron a los enviados.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmmlvi{Cuando su hermano Hud les dijo: «¿Es que no vais a temer a Alá?\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmmlvii{Tenéis en mí a un enviado digno de confianza.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmmlviii{¡Temed, pues, a Alá y obedecedme!\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmmlix{No os pido por ello ningún salario. Mi salario no incumbe sino al Señor del universo.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmmlx{¡Construís en cada colina un monumento para divertiros\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmmlxi{y hacéis construcciones esperando, quizá, ser inmortales?\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mmmlxii{Cuando usáis de violencia lo hacéis sin piedad.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mmmlxiii{¡Temed, pues, a Alá y obedecedme!\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mmmlxiv{¡Temed a Quien os ha proveído de lo que sabéis:\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mmmlxv{de rebaños e hijos varones,\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mmmlxvi{de jardines y fuentes!\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mmmlxvii{¡Temo por vosotros el castigo de un día terrible!»\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mmmlxviii{Dijeron: «¡Nos da lo mismo que nos amonestes o no!\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@mmmlxix{No hacemos sino lo que acostumbraban a hacer los antiguos.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@mmmlxx{¡No se nos castigará!»\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@mmmlxxi{Le desmintieron y les aniquilamos. Ciertamente, hay en ello un signo, pero la mayoría no creen.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@mmmlxxii{En verdad, tu Señor es el Poderoso, el Misericordioso.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@mmmlxxiii{Los tamudeos desmintieron a los enviados.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@mmmlxxiv{Cuando su hermano Salih les dijo: «¿Es que no vais a temer a Alá?\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@mmmlxxv{Tenéis en mí a un enviado digno de confianza.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@mmmlxxvi{¡Temed, pues, a Alá y obedecedme!\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@mmmlxxvii{No os pido por ello ningún salario. Mi salario no incumbe sino al Señor del universo.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@mmmlxxviii{¿Se os va a dejar en seguridad con lo que aquí abajo tenéis,\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@mmmlxxix{entre jardines y fuentes,\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@mmmlxxx{entre campos cultivados y esbeltas palmeras,\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@mmmlxxxi{y continuaréis excavando, hábilmente, casas en las montañas?\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@mmmlxxxii{¡Temed, pues, a Alá y obedecedme!\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@mmmlxxxiii{¡No obedezcáis las órdenes de los inmoderados,\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@mmmlxxxiv{que corrompen en la tierra y no la reforman!»\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@mmmlxxxv{Dijeron: «¡Eres sólo un hechizado!\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@mmmlxxxvi{¡No eres sino un mortal como nosotros! ¡Trae un signo, si es verdad lo que dices!»\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@mmmlxxxvii{Dijo: «He aquí una camella. Un día le tocará beber a ella y otro día a vosotros.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@mmmlxxxviii{¡No le hagáis mal! ¡Si no, os sorprenderá el castigo de un día terrible!»\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@mmmlxxxix{Pero ellos la desjarretaron... y se arrepintieron.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@mmmxc{Y les sorprendió el Castigo. Ciertamente, hay en ello un signo, pero la mayoría no creen.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@mmmxci{¡En verdad, tu Señor es el Poderoso, el Misericordioso!\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@mmmxcii{El pueblo de Lot desmintió a los enviados.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@mmmxciii{Cuando su hermano Lot les dijo: «¿Es que no vais a temer a Alá?\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@mmmxciv{Tenéis en mí a un enviado digno de confianza.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@mmmxcv{¡Temed, pues, a Alá y obedecedme!\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@mmmxcvi{No os pido por ello ningún salario. Mi salario no incumbe sino al Señor del universo.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@mmmxcvii{¿Os llegáis a los varones, de las criaturas,\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@mmmxcviii{y descuidáis a vuestras esposas, que vuestro Señor ha creado para vosotros? Sí, sois gente que viola la ley».\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@mmmxcix{Dijeron: «Si no paras, Lot, serás, ciertamente, expulsado».\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@mmmc{Dijo: «Detesto vuestra conducta.\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@mmmci{¡Señor! ¡Sálvanos, a mí y a mi familia, de lo que hacen!»\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@mmmcii{Y les salvamos, a él y a su familia, a todos,\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@mmmciii{salvo a una vieja entre los que se rezagaron.\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@mmmciv{Luego, aniquilamos a los demás.\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@mmmcv{E hicimos llover sobre ellos una lluvia. ¡Lluvia fatal para los que habían sido advertidos!\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@mmmcvi{Ciertamente, hay en ello un signo, pero la mayoría no creen.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@mmmcvii{¡En verdad tu Señor es el Poderoso, el Misericordioso!\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@mmmcviii{Los habitantes de la Espesura desmintieron a los enviados.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@mmmcix{Cuando Suayb les dijo: «¡Es que no vais a temer a Alá?\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@mmmcx{Tenéis en mí a un enviado digno de confianza.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@mmmcxi{¡Temed, pues, a Alá y obedecedme!\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@mmmcxii{No os pido por ello ningún salario. Mi salario no incumbe sino al Señor del universo.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@mmmcxiii{¡Dad la medida justa, no hagáis trampa!\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@mmmcxiv{¡Pesad con una balanza exacta!\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@mmmcxv{¡No dañeis a nadie en sus cosas y no obréis mal en la tierra corrompiendo!\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@mmmcxvi{¡Temed a Quien os ha creado, a vosotros y a las generaciones antiguas!»\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@mmmcxvii{Dijeron: «Eres sólo un hechizado.\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@mmmcxviii{No eres sino un mortal como nosotros. Creemos que mientes.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@mmmcxix{Si es verdad lo que dices, ¡haz que caiga sobre nosotros parte del cielo!»\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@mmmcxx{Dijo: «Mi Señor sabe bien lo que hacéis».\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@mmmcxxi{Le desmintieron. Y el castigo del día de la Sombra les sorprendió: fue el castigo de un día terrible.\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@mmmcxxii{Ciertamente, hay en ello un signo, pero la mayoría no creen.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@mmmcxxiii{¡En verdad, tu Señor es el Poderoso, el Misericordioso!\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@mmmcxxiv{Es, en verdad, la Revelación del Señor del universo.\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@mmmcxxv{El Espíritu digno de confianza lo ha bajado\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@mmmcxxvi{a tu corazón, para que seas uno que advierte.\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@mmmcxxvii{En lengua árabe clara,\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@mmmcxxviii{y estaba, ciertamente, en las Escrituras de los antiguos.\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@mmmcxxix{¿No es para ellos un signo que los doctores de los Hijos de Israel lo conozcan?\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@mmmcxxx{Si lo hubiéramos revelado a uno no árabe\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@mmmcxxxi{y éste se lo hubiera recitado, no habrían creído en él.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@mmmcxxxii{Así se lo hemos insinuado a los pecadores,\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@mmmcxxxiii{pero no creerán en él hasta que vean el castigo doloroso,\qt@no{(201)}}
+\qt@newcmd\qurantrans@es@mmmcxxxiv{que les vendrá de repente, sin presentirlo.\qt@no{(202)}}
+\qt@newcmd\qurantrans@es@mmmcxxxv{Entonces, dirán: «¿Se nos diferirá?»\qt@no{(203)}}
+\qt@newcmd\qurantrans@es@mmmcxxxvi{¿Quieren, entonces, adelantar Nuestro castigo?\qt@no{(204)}}
+\qt@newcmd\qurantrans@es@mmmcxxxvii{Y ¿qué te parece? Si les dejáramos gozar durante años\qt@no{(205)}}
+\qt@newcmd\qurantrans@es@mmmcxxxviii{y, luego, se cumpliera en ellos la amenaza,\qt@no{(206)}}
+\qt@newcmd\qurantrans@es@mmmcxxxix{no les serviría de nada el haber disfrutado tanto.\qt@no{(207)}}
+\qt@newcmd\qurantrans@es@mmmcxl{No hemos destruido nunca una ciudad sin haberle enviado antes quienes advirtieran,\qt@no{(208)}}
+\qt@newcmd\qurantrans@es@mmmcxli{como amonestación. No somos injustos.\qt@no{(209)}}
+\qt@newcmd\qurantrans@es@mmmcxlii{No son los demonios quienes lo han bajado:\qt@no{(210)}}
+\qt@newcmd\qurantrans@es@mmmcxliii{ni les estaba bien, ni podían hacerlo.\qt@no{(211)}}
+\qt@newcmd\qurantrans@es@mmmcxliv{Están, en verdad, lejos de oírlo.\qt@no{(212)}}
+\qt@newcmd\qurantrans@es@mmmcxlv{No invoques a otros dioses junto con Alá si no, serás castigado.\qt@no{(213)}}
+\qt@newcmd\qurantrans@es@mmmcxlvi{Advierte a los miembros más allegados de tu tribu.\qt@no{(214)}}
+\qt@newcmd\qurantrans@es@mmmcxlvii{Sé benévolo con los creyentes que te siguen.\qt@no{(215)}}
+\qt@newcmd\qurantrans@es@mmmcxlviii{Si te desobedecen, di: «Soy inocente de lo que hacéis».\qt@no{(216)}}
+\qt@newcmd\qurantrans@es@mmmcxlix{Confía en el Poderoso, el Misericordioso,\qt@no{(217)}}
+\qt@newcmd\qurantrans@es@mmmcl{Que te ve cuando estás de pie\qt@no{(218)}}
+\qt@newcmd\qurantrans@es@mmmcli{y ve las posturas que adoptas entre los que se prosternan.\qt@no{(219)}}
+\qt@newcmd\qurantrans@es@mmmclii{Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(220)}}
+\qt@newcmd\qurantrans@es@mmmcliii{¿Tengo que informaros de sobre quién descienden los demonios?\qt@no{(221)}}
+\qt@newcmd\qurantrans@es@mmmcliv{Descienden sobre todo mentiroso pecador.\qt@no{(222)}}
+\qt@newcmd\qurantrans@es@mmmclv{Aguzan el oído... Y la mayoría mienten.\qt@no{(223)}}
+\qt@newcmd\qurantrans@es@mmmclvi{En cuanto a los poetas, les siguen los descarriados.\qt@no{(224)}}
+\qt@newcmd\qurantrans@es@mmmclvii{¿No has visto que van errando por todos los valles\qt@no{(225)}}
+\qt@newcmd\qurantrans@es@mmmclviii{y que dicen lo que no hacen?\qt@no{(226)}}
+\qt@newcmd\qurantrans@es@mmmclix{No son así los que creen, obran bien, recuerdan mucho a Alá y se defienden cuando son tratados injustamente. ¡Los impíos verán pronto la suerte que les espera!\qt@no{(227)}}
+\qt@newcmd\qurantrans@es@mmmclx{\basmalahes ts. Éstas son las aleyas del Corán y de una Escritura clara,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmclxi{dirección y buena nueva para los creyentes,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmclxii{que hacen la azalá, dan el azaque y están convencidos de la otra vida.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmclxiii{Hemos engalanado a sus propios ojos las acciones de los que no creen en la otra vida. Yerran ciegos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmclxiv{Esos tales son los que sufrirán el castigo peor y los que perderán más en la otra vida.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmclxv{En verdad tú recibes el Corán de Uno que es sabio, omnisciente.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmclxvi{Cuando Moisés dijo a su familia: «Distingo un fuego. Voy a informaros de qué se trata u os traeré un tizón ardiente. Quizás, así, podáis calentaros».\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmclxvii{Al llegar a él, le llamaron: «¡Bendito sea Quien está en el fuego y quien está en torno a él! ¡Gloria a Alá, Señor del universo!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmclxviii{¡Moisés! ¡Yo soy Alá, el Poderoso, el Sabio!»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmclxix{Y: «¡Tira tu vara!» Y cuando vio que se movía como si fuera una serpiente, dio media vuelta para escapar, sin volverse. «¡Moisés! ¡No tengas miedo! Ante Mí, los enviados no temen.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmclxx{Sí, en cambio, quien haya obrado impíamente; pero, si sustituye su mala acción por una buena... Yo soy indulgente, misericordioso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmclxxi{Introduce la mano por la escotadura de tu túnica y saldrá blanca, sana. Esto formará parte de los nueve signos destinados a Faraón y su pueblo. Son gente perversa».\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmclxxii{Cuando Nuestros signos vinieron a ellos para abrirles los ojos, dijeron: «¡Esto es manifiesta magia!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmclxxiii{Y los negaron injusta y altivamente, a pesar de estar convencidos de ellos. ¡Y mira cómo terminaron los corruptores!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmclxxiv{Dimos ciencia a David y a Salomón. Y dijeron: «¡Alabado sea Alá, que nos ha preferido a muchos de Sus siervos creyentes!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmclxxv{Salomón heredó a David y dijo: «¡Hombres! Se nos ha enseñado el lenguaje de los pájaros y se nos ha dado de todo. ¡ Es un favor manifiesto!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmclxxvi{Las tropas de Salomón, compuestas de genios, de hombres y pájaros, fueron agrupadas ante él y formadas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmclxxvii{Hasta que, llegados al Valle de las Hormigas, una hormiga dijo: «¡Hormigas! ¡Entrad en vuestras viviendas, no sea que Salomón y sus tropas os aplasten sin darse cuenta!»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmclxxviii{Sonrió al oír lo que ella decía y dijo: «¡Señor! ¡Permíteme que Te agradezca la gracia que nos has dispensado, a mí y a mis padres! ¡Haz que haga obras buenas que Te plazcan! ¡Haz que entre a formar parte, por Tu misericordia, de Tus siervos justos!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmclxxix{Pasó revista a los pájaros y dijo: «¿Cómo es que no veo a la abubilla? ¿O es que está ausente?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmclxxx{He de castigarla severamente o degollarla, a menos que me presente, sin falta, una excusa satisfactoria».\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmclxxxi{No tardó en regresar y dijo: «Sé algo que tú no sabes, y te traigo de los saba una noticia segura.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmclxxxii{He encontrado que reina sobre ellos una mujer, a quien se ha dado de todo y que posee un trono augusto.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmclxxxiii{He encontrado que ella y su pueblo se postran ante el sol, no ante Alá. El Demonio les ha engalanado sus obras y, habiéndoles apartado del camino, no siguen la buena dirección,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmclxxxiv{de modo que no se prosternan ante Alá, Que pone de manifiesto lo que está escondido en los cielos y en la tierra, y sabe lo que ocultáis y lo que manifestáis.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmclxxxv{Alá, fuera del Cual no hay otro dios, es el Señor del Trono augusto».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmclxxxvi{Dijo él: «Vamos a ver si dices verdad o mientes.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmclxxxvii{Lleva este escrito mío y échaselo. Luego, mantente aparte y mira qué responden».\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmclxxxviii{Dijo ella: «¡Dignatarios! Me han echado un escrito respetable.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmclxxxix{Es de Salomón y dice: '¡En el nombre de Alá el Compasivo el Misericordioso!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmcxc{¡No os mostréis altivos conmigo y venid a mí sumisos!'»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmcxci{Dijo ella: «¡Dignatarios! ¡Aconsejadme en mi asunto! No voy a decidir nada sin que seáis vosotros testigos».\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmcxcii{Dijeron: «Poseemos fuerza y poseemos gran valor, pero a ti te toca ordenar. ¡Mira, pues, qué ordenas!»\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmcxciii{Dijo ella: «Los reyes, cuando entran en una ciudad, la arruinan y reducen a la miseria a sus habitantes más poderosos. Así es como hacen.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmcxciv{Yo, en cambio, voy a enviarles un regalo y ver con qué regresan los enviados».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmcxcv{Cuando llegó a Salomón. dijo: «¿Queréis colmarme de hacienda? Lo que Alá me ha dado vale más que lo que él os ha dado. No, sino que sois vosotros quienes están contentos con vuestros regalos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmcxcvi{¡Regresa a los tuyos! Hemos de marchar contra ellos con tropas a las que no podrán contener y hemos de expulsarles de su ciudad, abatidos y humillados».\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmcxcvii{Dijo él: «¡Dignatarios! ¿Quién de vosotros me traerá su trono antes de que vengan a mí sumisos?»\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmcxcviii{Uno de los genios, un ifrit, dijo: «Yo te lo traeré antes de que hayas tenido tiempo de levantarte de tu asiento. Soy capaz de hacerlo, digno de confianza».\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmcxcix{El que tenía ciencia de la Escritura dijo: «Yo te lo traeré en un abrir y cerrar de ojos». Cuando lo vio puesto junto a sí, dijo: «éste es un favor de mi Señor para probarme si soy o no agradecido. Quien es agradecido, lo es en realidad, en provecho propio. Y quien es desagradecido... Mi Señor Se basta a Sí mismo, es generoso».\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmcc{Dijo: «¡Desfiguradle su trono y veremos si sigue la buena dirección o no!»\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmcci{Cuando ella llegó, se dijo: «¿Es así su trono?» Dijo ella: «Parece que sí». «Hemos recibido la ciencia antes que ella. Nos habíamos sometido.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmccii{Pero lo que ella servía, en lugar de servir a Alá, la ha apartado. Pertenecía a un pueblo infiel».\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmcciii{Se le dijo: «¡Entra en el palacio!» Cuando ella lo vio, creyó que era un estanque de agua y se descubrió las piernas. Dijo él: «Es un palacio pavimentado de cristal». Dijo ella: «¡Señor! He sido injusta conmigo misma, pero, como Salomón, me someto a Alá, Señor del universo».\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmcciv{Y a los tamudeos les enviamos su hermano Salih: «¡Servid a Alá!» Y he aquí que se escindieron en dos grupos, que se querellaron.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmccv{Dijo: «¡Pueblo! ¿Por qué precipitáis el mal antes que el bien? ¿Por qué no pedís perdón a Alá? Quizás, así, se os tenga piedad».\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmccvi{Dijeron: «Os tenemos, a ti y a los que te siguen, por aves de mal agüero». Dijo: «Vuestro augurio está en manos de Alá. Sí, sois gente sujeta a prueba».\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmccvii{En la ciudad había un grupo de nueve hombres, que corrompían en la tierra y no la reformaban.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmccviii{Dijeron: «¡Juramentémonos ante Alá que hemos de atacarles de noche, a él y a su familia! Luego, diremos a su pariente próximo que no presenciamos el asesinato de su familia y que decimos la verdad».\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmccix{Urdieron una intriga sin sospechar que Nosotros urdíamos otra.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmccx{Y ¡mira cómo terminó su intriga! Les aniquilamos a ellos y a su pueblo, a todos.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmccxi{Ahí están sus casas en ruinas, en castigo de su impiedad. Ciertamente, hay en ello un signo para gente que sabe.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmccxii{Salvamos, en cambio, a los que creían y temían a Alá.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmccxiii{Y a Lot. Cuando dijo a su pueblo: «¿Cometéis deshonestidad a sabiendas?\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmccxiv{¿Os llegáis a los hombres, por concupiscencia, en lugar de llegaros a las mujeres? Sí, sois gente ignorante».\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmccxv{Lo único que respondió su pueblo fue: «¡Expulsad de la ciudad a la familia de Lot! Son gente que se las dan de puros».\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmccxvi{Les preservamos del castigo, a él y a su familia, salvo a su mujer. Determinamos que fuera de los que se rezagaran.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmccxvii{E hicimos llover sobre ellos una lluvia. ¡Lluvia fatal para los que habían sido advertidos...!\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmccxviii{Di: «¡Alabado sea Alá! ¡Paz sobre Sus siervos, que Él ha elegido! ¿Quién es mejor: Alá o lo que Le asocian?»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmccxix{¡ Quién, si no, ha creado los cielos y la tierra y hecho bajar para vosotros agua del cielo, mediante la cual hacemos crecer primorosos jardines allí donde vosotros no podríais hacer crecer árboles? ¿Hay un dios junto con Alá? Pero es gente que equipara.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmccxx{¿Quién, si no, ha estabilizado la tierra, colocado por ella ríos, fijado montañas y puesto una barrera entre las dos grandes masas de agua? ¿Hay un dios junto con Alá? Pero la mayoría no saben.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmccxxi{¿Quién, si no, escucha la invocación del necesitado, quita el mal y hace de vosotros sucesores en la tierra? ¿Hay un dios junto con Alá? ¡Qué poco os dejáis amonestar!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmccxxii{¿Quién, si no, os guía por entre las tinieblas de la tierra y del mar, quién envía los vientos como nuncios que preceden a Su misericordia? ¿Hay un dios junto con Alá? ¡Alá está por encima de lo que Le asocian!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmccxxiii{¿Quién, si no, inicia la creación y luego la repite? ¿Quién os sustenta de los bienes del cielo y de la tierra? ¿ Hay un dios junto con Alá? Di: «¡Aportad vuestra prueba, si es verdad lo que decís!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmccxxiv{Di: «Nadie en los cielos ni en la tierra conoce lo oculto, fuera de Alá. Y no presienten cuándo van a ser resucitados.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmccxxv{Al contrario, su ciencia no alcanza la otra vida. Dudan de ella, más aún, están ciegos en cuanto a ella se refiere».\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmccxxvi{Los infieles dicen: «Cuando nosotros y nuestros padres seamos tierra, ¿se nos sacará?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmccxxvii{¡Esto es lo que antes se nos prometió, a nosotros y a nuestros padres! ¡No son más que patrañas de los antiguos!»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmccxxviii{Di: «¡Id por la tierra y mirad cómo terminaron los pecadores!»\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmccxxix{¡No estés triste por ellos ni te angusties por sus intrigas!\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmccxxx{Dicen: «¡Cuándo se cumplirá esta amenaza, si es verdad lo que decís?»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmccxxxi{Di: «Quizás algo de aquello cuya venida queréis apresurar esté ya pisándoos los talones».\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmccxxxii{Sí, tu Señor dispensa Su favor a los hombres, pero la mayoría no agradecen.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmccxxxiii{En verdad, tu Señor conoce lo que ocultan sus pechos y lo que manifiestan.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmccxxxiv{No hay nada escondido en el cielo ni en la tierra que no esté en una Escritura clara.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmccxxxv{Este Corán cuenta a los Hijos de Israel la mayor parte de aquello en que discrepan.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmccxxxvi{Es, sí, dirección y misericordia para los creyentes.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmccxxxvii{Tu Señor decidirá entre ellos con Su fallo. Es el Poderoso, el Omnisciente.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmccxxxviii{¡Confía en Alá! Posees la verdad manifiesta.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmccxxxix{Tú no puedes hacer que los muertos oigan, ni que los sordos oigan el llamamiento si vuelven la espalda.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmccxl{Ni puedes dirigir a los ciegos, sacándolos de su extravío. Tú no puedes hacer que oigan sino quienes creen en Nuestros signos y están sometidos a Nosotros.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmccxli{Cuando se pronuncie contra ellos la sentencia, les sacaremos de la tierra una bestia que proclamará ante ellos que los hombres no estaban convencidos de Nuestros signos.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmccxlii{El día que, de cada comunidad, congreguemos a una muchedumbre de los que desmentían Nuestros signos, serán divididos en grupos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmccxliii{Hasta que, cuando vengan, diga: «¿Habéis desmentido Mis signos sin haberlos abarcado en vuestra ciencia? ¿Qué habéis hecho si no?»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmccxliv{Se pronunciará contra ellos la sentencia por haber obrado impíamente y no tendrán qué decir.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmccxlv{¿No ven que hemos establecido la noche para que descansen y el día para que puedan ver claro? Ciertamente, hay en ello signos para gente que cree.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmccxlvi{El día que se toque la trompeta, se aterrorizarán quienes estén en los cielos y en la tierra, salvo aquéllos que Alá quiera. Todos vendrán a Él humildes.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmccxlvii{Verás pasar las montañas, que tú creías inmóviles, como pasan las nubes: obra de Alá, Que todo lo hace perfecto. Él está bien informado de lo que hacéis.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmccxlviii{Quienes presenten una obra buena obtendrán una recompensa mejor aún y se verán, ese día, libres de terror,\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmccxlix{mientras que quienes presenten una obra mala serán precipitados de cabeza en el Fuego: «¿Se os retribuye por algo que no hayáis cometido?»\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmccl{«He recibido sólo la orden de servir al Señor de esta ciudad, que Él ha declarado sagrada. ¡Todo Le pertenece! He recibido la orden de ser de los sometidos a Él,\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmccli{y de recitar el Corán. Quien sigue la vía recta la sigue, en realidad, en provecho propio. Pero quien se extravía... Di: «Yo no soy sino uno que advierte».\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmcclii{Di también: «¡Alabado sea Alá! él os mostrará Sus signos y vosotros los reconoceréis. Tu Señor está atento a lo que hacéis».\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmccliii{\basmalahes tsm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmccliv{éstas son las aleyas de la Escritura clara.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcclv{Te recitamos la historia de Moisés y de Faraón, conforme a la verdad, para gente que cree.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcclvi{Faraón se condujo altivamente en el país y dividió a sus habitantes en clanes. Debilitaba a un grupo de ellos, degollando a sus hijos varones y dejando con vida a sus mujeres. Era de los corruptores.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcclvii{Quisimos agraciar a los que habían sido humillados en el país y hacer de ellos jefes, hacer de ellos herederos,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcclviii{darles poderío en el país y servirnos de ellos para hacer que Faraón. Hamán y sus ejércitos experimentaran lo que ya recelaban.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcclix{Inspiramos a la madre de Moisés: «Dale de mamar y, en caso de peligro, ponlo en el río! ¡No temas por él, no estés triste! Te lo devolveremos y haremos de él un enviado».\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcclx{Lo recogió la familia de Faraón, para terminar siendo para ellos enemigo y causa de tristeza. Faraón, Hamán y sus ejércitos eran pecadores.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcclxi{La mujer de Faraón dijo: «Mi alegría y la tuya. ¡No le mates! Quizá nos sea útil o le adoptemos como hijo». No presentían...\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcclxii{La madre de Moisés quedó desolada y estuvo a punto de revelar lo ocurrido, si no llega a ser porque fortalecimos su corazón para que tuviera fe.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcclxiii{Dijo a su hermana: «¡Síguele!» Y le observaba de lejos, a hurtadillas.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcclxiv{Antes, le habíamos vedado los pechos. Dijo ella: «¿Queréis que os indique una familia que os lo cuide y eduque?»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcclxv{Así, lo devolvimos a su madre, para, que se alegrara y no estuviera triste, para que supiera que lo que Alá promete es verdad. Pero la mayoría no saben.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcclxvi{Cuando alcanzó la madurez y completó su crecimiento, le dimos juicio y ciencia: así retribuimos a quienes hacen el bien.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcclxvii{Sin que se enteraran sus habitantes, entró en la ciudad y encontró a dos hombres que peleaban, uno de su propio clan y otro del clan adverso. El de su clan le pidió auxilio contra el del otro. Moisés dio a éste un puñetazo y le mató. Dijo: «Esto es obra del Demonio, que es un enemigo, extra viador declarado».\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcclxviii{Dijo: «¡Señor! He sido injusto conmigo mismo. ¡Perdóname!» Y le perdonó. Él es el Indulgente, el Misericordioso.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcclxix{Dijo: «¡Señor! Por las gracias que me has dispensado, no respaldaré a los pecadores».\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcclxx{A la mañana siguiente se encontraba en la ciudad, temeroso, cauto, y he aquí que el que la víspera había solicitado su auxilio le llamó a gritos. Moisés le dijo: «¡Estás evidentemente descarriado!»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcclxxi{Habiendo querido, no obstante, poner las manos en el enemigo de ambos, éste le dijo: «¡Moisés! ¿Es que quieres matarme a mí como mataste ayer a aquél? Tú no quieres sino tiranizar el país, no reformarlo».\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcclxxii{Entonces, de los arrabales, vino corriendo un hombre. Dijo: «¡Moisés!» los dignatarios están deliberando sobre ti para matarte. ¡Sal! Te aconsejo bien».\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcclxxiii{Y salió de ella, temeroso, cauto. «¡Señor!», dijo: «¿Sálvame del pueblo impío!»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcclxxiv{Y, dirigiéndose hacia Madián, dijo: «Quizá mi Señor me conduzca por el camino recto».\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcclxxv{Cuando llegó a la aguada de Madián, encontró allí a un grupo de gente que abrevaba sus rebaños. Encontró, además, a dos mujeres que mantenían alejado el de ellas. Dijo: «¿Qué os pasa?» Dijeron ellas: «No podemos abrevar el rebaño mientras estos pastores no se lleven los suyos. Y nuestro padre es muy anciano».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcclxxvi{Y abrevó su rebaño. Luego, se retiró a la sombra. Y dijo: «¡Señor! Me hace mucha falta cualquier bien que quieras hacerme».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcclxxvii{Una de las dos vino a él con paso tímido y dijo: «Mi padre te llama para retribuirte por habernos abrevado el rebaño». Cuando llegó ante él y le contó lo que le había ocurrido, dijo: «¡No temas! Estás a salvo del pueblo impío».\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcclxxviii{Una de ellas dijo: «¡Padre! ¡Dale un empleo! No podrás emplear a nadie mejor que este hombre, fuerte, de confianza».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcclxxix{Dijo: «Quisiera casarte con una de estas dos hijas mías, pero a condición de que trabajes para mí durante ocho años. Si completas diez, es ya cosa tuya. No quiero coaccionarte. Encontrarás, si Alá quiere, que soy de los justos».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcclxxx{Dijo: «¡Trato hecho! Y cualquiera que sea el plazo que yo decida, no seré objeto de hostilidad. Alá responde de nuestras palabras».\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxi{Y, cuando Moisés cumplió el tiempo convenido y se fue con su familia, distinguió un fuego del lado del monte y dijo a su familia: «¡Quedaos aquí! Distingo un fuego. Quizá pueda informaros de qué se trata u os traiga un tizón. Quizás, así podáis calentaros».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxii{Llegado a él, le llamaron desde la vertiente derecha del valle, desde el sitio bendito, desde el árbol: «¡Moisés! ¡Soy Alá, Señor del universo!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxiii{¡Tira tu vara!» Y cuando vio que se movía como si fuera una serpiente, dio media vuelta para escapar, sin volverse. «¡Moisés! ¡Avanza y no temas! ¡No va a pasarte nada!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxiv{Introduce la mano por la escotadura de tu túnica y saldrá blanca, sana. Frente al miedo, ¡mantente sereno! He aquí dos pruebas de tu Señor, destinadas a Faraón y a sus dignatarios, que son gente perversa».\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxv{Dijo: «¡Señor! He matado a uno de los suyos y temo que me maten.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxvi{Mi hermano Aarón es más elocuente que yo. Envíale conmigo como ayudante, para que confirme lo que yo diga. Temo que me desmientan».\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxvii{Dijo: «Fortaleceremos tu brazo con tu hermano y os daremos autoridad. Así no se llegarán a vosotros. Gracias a Nuestros signos, vosotros dos y quienes os sigan ganaréis».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxviii{Cuando Moisés les trajo Nuestros signos como pruebas claras, dijeron: «¡Esto no es sino magia inventada! No hemos oído que ocurriera tal cosa en tiempo de nuestros antepasados».\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxix{Moisés dijo: «Mi Señor sabe bien quién ha traído la Dirección de Él y quién tendrá la Morada Postrera. Los impíos no prosperarán».\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmccxc{Faraón dijo: «¡Dignatarios! Yo no sé que tengáis a ningún otro dios que a mí. ¡Hamán! ¡Cuéceme unos ladrillos y hazme una torre! Quizás, así, pueda llegarme al dios de Moisés. Sí, creo que miente».\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmccxci{Y se condujeron, él y sus tropas, en el país altivamente sin razón. Creían que no iban a ser devueltos a Nosotros.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmccxcii{Entonces, les sorprendimos, a él y a sus tropas, y les precipitamos en el mar. ¡Y mira cómo terminaron los impíos!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmccxciii{Hicimos de ellos jefes que llaman al Fuego. Y el día de la Resurrección no serán auxiliados.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmccxciv{Hemos hecho que sean perseguidos por una maldición en la vida de acá. Y el día de la Resurrección serán vilipendiados.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmccxcv{Después de haber hecho perecer a las generaciones precedentes, dimos a Moisés la Escritura como argumento evidente para los hombres, como dirección y misericordia. Quizás, así, se dejaran amonestar.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmccxcvi{Cuando decidimos la orden respecto a Moisés, tú no estabas en la ladera occidental del monte, ni eras testigo.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmccxcvii{Pero suscitamos generaciones que vivieron una vida larga. Tú no residías entre los madianitas para recitarles Nuestras aleyas. Pero enviamos.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmccxcviii{Ni estabas en la ladera del monte cuando llamamos. Empero, por una misericordia venida de tu Señor, para que adviertas a un pueblo al que no ha venido monitor alguno antes de ti. Quizás, así, se dejen amonestar.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmccxcix{Si como castigo a sus obras, les afligiera una desgracia, dirían: «¡Señor! ¿Por qué no nos has mandado un enviado? Habríamos seguido Tus signos y creído».\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmccc{Pero, ahora que la Verdad ha venido a ellos de parte Nuestra, dicen: «¿Por qué no se le ha dado lo mismo que se dio a Moisés?» Pero ¿no se mostraron también incrédulos ante lo que se había dado antes a Moisés? Dicen: «Son dos casos de magia que se respaldan mutuamente». Y dicen: «No creemos en ninguna».\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmccci{Di: «Entonces, si es verdad lo que decís ¡traed una Escritura de Alá que dirija a los hombres mejor que esas dos y la seguiré!»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmcccii{Y, si no te escuchan, sabe que no hacen sino seguir sus pasiones. ¿Y hay alguien más extraviado que quien sigue sus pasiones, sin ninguna dirección venida de Alá? Alá no dirige al pueblo impío.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmccciii{Les hemos hecho llegar la Palabra. Quizás, así se dejen amonestar.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmccciv{Aquéllos a quienes hemos dado la Escritura antes de él, creen en él.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmcccv{Y, cuando se les recita éste, dicen: «¡Creemos en él! Es la Verdad que viene de nuestro Señor. Antes de él nos habíamos sometido».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmcccvi{Recibirán doble remuneración por haber tenido paciencia. Repelen el mal con el bien y dan limosna de lo que les hemos proveído.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmcccvii{Cuando oyen vaniloquio, se desvían y dicen: «Nosotros responderemos de nuestros actos y vosotros de los vuestros. ¡Paz sobre vosotros! ¡No deseamos tratar con los ignorantes!»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmcccviii{Tú no puedes dirigir a quien amas. Alá es, más bien, Quien dirige a quien él quiere. Él sabe mejor que nadie quiénes son los que siguen la buena dirección.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmcccix{Dicen: «Si seguimos la Dirección contigo, se nos despojará de nuestra tierra». Pero ¿es que no les hemos dado poder sobre un territorio sagrado y seguro, al que se traen frutos de todas clases como sustento de parte Nuestra? Pero la mayoría no saben.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmcccx{¡Cuántas ciudades hemos hecho perecer, que se ufanaban de sus medios de subsistencia! Ahí tenéis sus viviendas, casi del todo deshabitadas después de ellos. Hemos sido Nosotros los Herederos.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmcccxi{Tu Señor nunca ha destruido ciudades sin haber antes mandado a su metrópoli a un enviado que les recitara Nuestras aleyas. Nunca hemos destruido ciudades, a menos que sus habitantes fueran impíos.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmcccxii{Lo que habéis recibido no es más que breve disfrute de la vida de acá y ornato suyo. En cambio, lo que Alá tiene es mejor y más duradero. ¿Es que no razonáis?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmcccxiii{Uno a quien hemos prometido algo bello, que verá cumplirse, ¿es comparable a aquel otro a quien hemos permitido el breve disfrute de la vida de acá y a quien luego, el día de la Resurrección, se hará comparecer?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmcccxiv{El día que les llame, dirá: «¡Dónde están aquéllos que pretendíais que eran Mis asociados?»\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmcccxv{Aquéllos contra quienes se pronuncie la sentencia dirán: «¡Señor! éstos son los que nosotros descarriamos. Les descarriamos como nosotros también estábamos descarriados. Somos inocentes ante Ti. No es a nosotros a quienes servían».\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmcccxvi{Se dirá: «¡Invocad a vuestros asociados!» Les invocarán, pero no les escucharán y verán el castigo. Si hubieran seguido la buena dirección...\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmcccxvii{El día que les llame, dirá: «¿Qué repondisteis a los enviados?»\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmcccxviii{Ese día, como no sabrán qué responder, ni se preguntarán unos a otros.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmcccxix{En cuanto a quien se arrepienta, crea y obre bien, es posible que se cuente entre los que prosperen.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmcccxx{Tu Señor crea y elige lo que quiere. El elegir no les incumbe. ¡Gloria a Alá! ¡Está por encima de lo que Le asocian!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmcccxxi{Tu Señor conoce lo que ocultan sus pechos y lo que manifiestan.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmcccxxii{¡Es Alá ¡No hay más dios que Él! ¡Alabado sea en esta vida y en la otra! ¡Suya es la decisión ! ¡Y a Él seréis devueltos!\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmcccxxiii{Di: «¿Qué os parece si Alá os impusiera una noche perpetua hasta el día de la Resurrección? ¿Qué otro dios que Alá podría traeros la claridad? ¿Es que no oís?»\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmcccxxiv{Di: «¿Qué os parece si Alá os impusiera un día perpetuo hasta el día de la Resurrección? ¿Qué otro dios que Alá podría traeros la noche para reposaros? ¿Es que no veis?»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmcccxxv{Como muestra de Su misericordia, ha establecido la noche para vosotros para que descanséis y el día para que busquéis Su favor. Y quizás así, seáis agradecidos.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmcccxxvi{El día que les llame, dirá: «¿Dónde están aquéllos que pretendíais que eran Mis asociados?»\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmcccxxvii{Haremos comparecer un testigo de cada comunidad y diremos: «¡Aportad vuestra prueba!» Y sabrán que la Verdad es de Alá. Y se esfumarán sus invenciones.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmcccxxviii{Coré formaba parte del pueblo de Moisés y se insolentó con ellos. Le habíamos dado tantos tesoros que un grupo de hombres forzudos apenas podía cargar con las llaves. Cuando su pueblo le dijo: «No te regocijes, que Alá no ama a los que se regocijan!\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmcccxxix{¡Busca en lo que Alá te ha dado la Morada Postrera, pero no olvides la parte que de la vida de acá te toca! ¡Sé bueno, como Alá lo es contigo! ¡No busques corromper en la tierra, que Alá no ama a los corruptores!»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmcccxxx{Dijo: «Lo que se me ha dado lo debo sólo a una ciencia que tengo». Pero ¿es que no sabía que Alá había hecho perecer antes de él a otras generaciones más poderosas y opulentas que él? Pero a los pecadores no se les interrogará acerca de sus pecados.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxi{Apareció ante su pueblo, rodeado de pompa. Los que deseaban la vida de acá dijeron: «¡Ojalá se nos hubiera dado otro tanto de lo que se ha dado a Coré! Tiene una suerte extraordinaria».\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxii{Pero los que habían recibido la Ciencia, dijeron: «¡Ay de vosotros! La recompensa de Alá es mejor para el que cree y obra bien. Y no lo conseguirán sino los que tengan paciencia».\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxiii{Hicimos que la tierra se tragara a él y su vivienda. No hubo ningún grupo que, fuera de Alá, le auxiliara, ni pudo defenderse a sí mismo.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxiv{A la mañana siguiente, los que la víspera habían envidiado su posición dijeron: «¡Ah! Alá dispensa el sustento a quien Él quiere de sus Siervos: a unos con largueza, a otros con mesura. Si Alá no nos hubiera agraciado, habría hecho que nos tragara. ¡Ah! ¡Los infieles no prosperarán!»\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxv{Asignamos esa Morada Postrera a quienes no quieren conducirse con altivez en la tierra ni corromper. El fin es para los que temen a Alá.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxvi{Quien venga habiendo obrado bien tendrá como recompensa algo aún mejor. Y quien venga habiendo obrado mal,... Quienes hayan obrado mal no serán retribuidos sino conforme a sus obras.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxvii{Sí, Quien te ha impuesto el Corán, te devolverá a un lugar de retorno. Di: «Mi Señor sabe bien quién ha traído la Dirección y quién está evidentemente extraviado».\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxviii{Tú no podías esperar que se te transmitiera a ti la Escritura. No ha sido así más que por misericordia venida de tu Señor. ¡No respaldes a los infieles!\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxix{¡Que no te desvíen de las aleyas de Alá, después de haberte sido reveladas! ¡Llama a tu Señor y no seas de los asociadores!\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmcccxl{¡No invoques a otro dios junto con Alá! ¡No hay más dios que Él! ¡Todo perece, salvo Él! ¡Suya es la decisión! ¡Y a Él seréis devueltos!\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmcccxli{\basmalahes 'lm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcccxlii{Piensan los hombres que se les dejará decir: «¡Creemos!», sin ser probados?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcccxliii{Ya probamos a sus predecesores. Alá, sí, conoce perfectamente a los sinceros y conoce perfectamente a los que mienten.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcccxliv{¿Piensan quienes obran mal que podrán escapar de Nosotros? ¡Qué mal juzgan!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcccxlv{Quien cuente con encontrar a Alá sepa que el plazo fijado por Alá vendrá ciertamente, Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcccxlvi{Quien combate por Alá combate, en realidad, en provecho propio. Alá, ciertamente, puede prescindir de las criaturas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcccxlvii{A quienes hayan creído y obrado bien les borraremos, sí, sus malas obras y les retribuiremos, sí, con arreglo a sus mejores obras.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcccxlviii{Hemos ordenado al hombre que se porte bien con sus padres. Pero si éstos te insisten en que Me asocies algo de lo que no tienes conocimiento, ¡no les obedezcas! Volveréis a Mí y ya os informaré de lo que hacíais.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcccxlix{A quienes hayan creído y obrado bien hemos de hacer que entren a formar parte de los justos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcccl{Hay algunos que dicen: «¡Creemos en Alá!» Pero, en cuanto sufren algo por Alá, toman la prueba a que los hombres les somenten como castigo de Alá. Si, en cambio, tu Señor les auxilia, seguro que dicen: «¡Estábamos con vosotros!» ¿Es que Alá no sabe bien lo que hay en los pechos de la Humanidad?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcccli{Alá, sí, conoce perfectamente a los que creen y conoce perfectamente a los hipócritas.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmccclii{Los infieles dicen a los creyentes: «¡Seguid nuestro camino y cargaremos con vuestros pecados!» Pero, si ni con sus propios pecados cargan nada... ¡Mienten, ciertamente!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcccliii{Llevarán, ciertamente, su carga juntamente con la ajena. El día de la Resurrección tendrán que responder de lo que se inventaban.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcccliv{Enviamos Noé a su pueblo y permaneció con él durante mil años menos cincuenta. Luego, el diluvio les sorprendió en su impiedad.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmccclv{Les salvamos, a él y a los de la nave, e hicimos de ella un signo para todo el mundo.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmccclvi{Y a Abraham. Cuando dijo a su pueblo: «¡Servid a Alá y temedle! Es mejor para vosotros. Si supierais...»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmccclvii{Servís, en lugar de servir a Alá, sólo ídolos, y creáis una mentira. Los que vosotros servís, en lugar de servir a Alá, no pueden procuraros sustento. ¡Buscad, pues, en Alá el sustento! ¡Servidle, dadle gracias! ¡A Él seréis devueltos!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmccclviii{Si desmentís, ya otras generaciones, antes de vosotros, desmintieron. Al Enviado sólo le incumbe la transmisión clara.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmccclix{¿Es que no ven cómo inicia Alá la creación y, luego, la repite? Es cosa fácil para Alá.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmccclx{Di: «¡Id por la tierra y mirad cómo inició la creación! Luego, Alá creará por última vez. Alá es omnipotente».\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmccclxi{Castiga a quien Él quiere y se apiada de quien Él quiere. A Él seréis devueltos.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmccclxii{No podéis escapar en la tierra ni en el cielo. No tenéis, fuera de Alá, amigo ni auxiliar.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmccclxiii{Quienes no crean en los signos de Alá y en que Le encontrarán, ésos son quienes desesperarán de Mi misericordia, ésos son quienes sufrirán un castigo doloroso.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmccclxiv{Lo único que respondió su pueblo fue: «¡Matadle o quemadle!» Pero Alá le libró del fuego. Ciertamente hay en ello signos para gente que cree.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmccclxv{Dijo: «Habéis tomado ídolos en lugar de tomar a Alá, sólo por el afecto mutuo que os tenéis en la vida de acá. Luego, el día de la Resurrección, renegaréis unos de otros y os maldeciréis mutuamente. Vuestra morada será el Fuego y no tendréis quien os auxilie».\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmccclxvi{Lot creyó en Él y dijo: «Me refugio en mi Señor. Él es el Poderoso, el Sabio».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmccclxvii{Le regalamos Isaac y Jacob, e instituimos en su descendencia el profetismo y la Escritura. Le recompensamos en la vida de acá, y en la otra es de los justos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmccclxviii{Y a Lot. Cuando dijo a su pueblo: «Ciertamente cometéis una deshonestidad que ninguna criatura ha cometido antes.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmccclxix{¿Os llegáis a los hombres, salteáis y cometéis actos reprobables en vuestras reuniones?». Lo único que respondió su pueblo fue: «¡Tráenos el castigo de Alá, si es verdad lo que dices!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmccclxx{Dijo: «¡Señor! ¡Auxíliame contra el pueblo corruptor!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmccclxxi{Cuando Nuestros mensajeros vinieron a Abraham con la buena nueva, dijeron: «Vamos a hacer perecer a la población de esta ciudad. Son unos impíos».\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmccclxxii{Dijo: «Pero Lot está en ella». Dijeron: «Sabemos bien quién está en ella. Les salvaremos, ciertamente, a él y a su familia, excepto a su mujer, que será de los que se rezaguen».\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmccclxxiii{Habiendo llegado nuestros mensajeros a Lot, éste se afligió por ellos y se sintió impotente para protegerles. Pero ellos dijeron: «¡No temas ni estés triste! Vamos a salvaros, a ti y a tu familia, excepto a tu mujer, que será de los que se rezaguen.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmccclxxiv{Vamos a hacer bajar un castigo del cielo sobre la población de esta ciudad, porque han sido unos perversos».\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmccclxxv{E hicimos de ella un signo claro para gente que razona.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmccclxxvi{A los madianitas su hermano Suayb. Dijo: «¡Pueblo! ¡Servid a Alá y contad con el último Día! ¡No obréis mal en la tierra corrompiendo!»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmccclxxvii{Le desmintieron y el Temblor les sorprendió, amaneciendo muertos en sus casas.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmccclxxviii{¡Y a los aditas y a los tamudeos! Por sus viviendas se os muestra claramente... El Demonio engalanó sus obras y los apartó del Camino, a pesar de su perspicacia.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmccclxxix{¡Y a Coré, a Faraón y a Hamán! Moisés vino a ellos con las pruebas claras y ellos se condujeron en el país altivamente. Pero no consiguieron escapar.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmccclxxx{Sorprendimos a cada uno por su pecado. Contra unos enviamos una tempestad de arena. A otros les sorprendió el Grito. A otros hicimos que la tierra se los tragara. A otros les anegamos. No fue Alá quien fue injusto con ellos, sino que ellos lo fueron consigo mismos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxi{Quienes toman amigos en lugar de tomar a Alá son semejantes a la araña que se ha hecho una casa. Y la casa más frágil es la de la araña. Si supieran...\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxii{Alá sabe todo lo que invocan en lugar de invocarle a Él. Es el Poderoso, el Sabio.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxiii{Proponemos estas parábolas a los hombres, pero no las comprenden sino los que saben.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxiv{Alá ha creado con un fin los cielos y la tierra. Ciertamente, hay en ello un signo para los creyentes.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxv{¡Recita lo que se te ha revelado de la Escritura ! ¡Haz la azalá! La azalá prohíbe la deshonestidad y lo reprobable. Pero el recuerdo de Alá es más importante aún. Alá sabe lo que hacéis.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxvi{No discutáis sino con buenos modales con la gente de la Escritura, excepto con los que hayan obrado impíamente. Y decid: «Creemos en lo que se nos ha revelado a nosotros y en lo que se os ha revelado a vosotros. Nuestro Dios y vuestro Dios es Uno. Y nos sometemos a él».\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxvii{Y, así, te hemos revelado la Escritura. Aquéllos a quienes revelamos la Escritura creen en ella. Entre éstos hay algunos que creen en ella. Nadie rechaza Nuestros signos sino los infieles.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxviii{Tú no leías, antes de recibirla, ninguna Escritura, ni copiabas ninguna con tu diestra. Los falsarios, si no, habrían sospechado...\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxix{Antes bien, es un conjunto de aleyas claras en los pechos de quienes han recibido la Ciencia. No niegan Nuestros signos sino los impíos.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmcccxc{Dicen: «¿Por qué no se le han revelado signos procedentes de su Señor?» Di: «Sólo Alá dispone de los signos. Yo soy solamente un monitor que habla claro».\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmcccxci{¿Es que no les basta que te hayamos revelado la Escritura que se les recita? Hay en ello una misericordia y una amonestación para gente que cree.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmcccxcii{Di: «¡Alá basta como testigo entre yo y vosotros! Conoce lo que está en los cielos y en la tierra. Quienes crean en lo falso y no crean en Alá, ésos serán los que pierdan».\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmcccxciii{Y te piden que adelantes el castigo. Si no fuera porque ha sido prefijado, les habría ya alcanzado. Les vendrá, en verdad, de repente, sin presentirlo.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmcccxciv{Te piden que adelantes el castigo. Sí, la gehena cercará a los infieles.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmcccxcv{El día que el castigo les cubra de pies a cabeza y diga: «¡Gustad el fruto de vuestras obras!»\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmcccxcvi{¡Siervos creyentes! ¡Mi tierra es vasta! ¡Servidme, pues, a Mí solo!\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmcccxcvii{Cada uno gustará la muerte. Luego, seréis devueltos a Nosotros.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmcccxcviii{A quienes hayan creído y hecho el bien hemos de alojarles en el Jardín, eternamente, en cámaras altas, a cuyos pies fluyen arroyos. ¡Qué grata es la recompensa de los que obran bien,\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmcccxcix{que tienen paciencia y confían en su Señor!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmcd{¡Cuántas bestias hay que no pueden proveerse del sustento! Alá se encarga de él y del vuestro. Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmcdi{Si les preguntas: «¿Quién ha creado los cielos y la tierra y sujetado el sol y la luna?», seguro que dicen: «¡Alá!» ¡Cómo pueden, pues, ser tan desviados!\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmcdii{Alá dispensa el sustento a quien Él quiere de Sus siervos: a unos con largueza, a otros con mesura. Alá es omnisciente.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmcdiii{Si les preguntas: «¿Quién hace bajar agua del cielo, vivificando con ella la tierra después de muerta?», seguro que dicen: «¡Alá!» Di: «¡Alabado sea Alá!» No, la mayoría no comprenden.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmcdiv{Esta vida de acá no es sino distracción y juego, pero la Morada Postrera, ésa sí que es la Vida. Si supieran...\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmcdv{Cuando se embarcan, invocan a Alá rindiéndole culto sincero. Pero, en cuanto les salva, llevándoles a tierra firme, al punto Le asocian otros dioses,\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmcdvi{para terminar negando lo que les hemos dado. ¡Que gocen por breve tiempo! ¡Van a ver...!\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmcdvii{¿No ven que hemos hecho un territorio sagrado y seguro, mientras, alrededor de ellos, secuestran a la gente? ¿Creen, pues, en lo falso y no creerán en la gracia de Alá?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmcdviii{¿Hay alguien que sea más impío que quien inventa una mentira contra Alá o que, cuando viene a él la Verdad, la desmiente? ¿No hay en la gehena una morada para los infieles?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmcdix{A quienes hayan combatido por Nosotros ¡hemos de guiarles por Nuestros caminos! ¡Alá está, en verdad, con quienes hacen el bien!\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmcdx{\basmalahes 'lm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcdxi{Los bizantinos han sido vencidos\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcdxii{en los confines del país. Pero, después de su derrota, vencerán\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcdxiii{dentro de varios años. Todo está en manos de Alá, tanto el pasado como el futuro. Ese día, los creyentes se regocijarán\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcdxiv{del auxilio de Alá. Auxilia a quien Él quiere. Es el Poderoso, el Misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcdxv{¡Promesa de Alá! Alá no falta a Su promesa. Pero la mayoría de los hombres no saben.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcdxvi{Conocen lo externo de la vida de acá, pero no se preocupan por la otra vida.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcdxvii{¿Es que no reflexionan en su interior? Alá no ha creado los cielos, la tierra y lo que entre ellos está sino con un fin y por un período determinado. Pero muchos hombres se niegan, sí, a creer en el encuentro de su Señor.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcdxviii{¿No han ido por la tierra y mirado cómo terminaron sus antecesores? Eran más poderosos, araban la tierra y la poblaban más que ellos. Sus enviados vinieron a ellos con las pruebas claras. No fue Alá quien fue injusto con ellos, sino que ellos lo fueron consigo mismos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcdxix{Y el fin de los que obraron mal fue el peor, porque desmintieron los signos de Alá y se burlaron de ellos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcdxx{Alá inicia la creación y luego la repite, después de lo cual seréis devueltos a Él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcdxxi{Cuando suene la Hora, los pecadores serán presa de la desesperación.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcdxxii{Sus asociados no intercederán por ellos y éstos renegarán de aquéllos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcdxxiii{El día que suene la Hora se dividirán:\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcdxxiv{quienes hayan creído y obrado bien, serán regocijados en un prado;\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcdxxv{pero quienes no hayan creído y hayan desmentido Nuestros signos y la existencia de la otra vida serán entregados al castigo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcdxxvi{¡Gloria a Alá tarde y mañana!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcdxxvii{¡Alabado sea en los cielos y en la tierra, por la tarde y al mediodía!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcdxxviii{Saca al vivo del muerto, al muerto del vivo. Vivifica la tierra después de muerta. Así es como se os sacará.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcdxxix{Y entre Sus signos está el haberos creado de tierra. Luego, hechos hombres, os diseminasteis...\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcdxxx{Y entre Sus signos está el haberos creado esposas nacidas entre vosotros, para que os sirvan de quietud, y el haber suscitado entre vosotros el afecto y la bondad. Ciertamente, hay en ellos signos para gente que reflexiona.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxi{Y entre Sus signos está la creación de los cielos y de la tierra, la diversidad de vuestras lenguas y de vuestros colores. Ciertamente hay en ello signos para los que saben.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxii{Y entre Sus signos está vuestro sueño, de noche o de día, vuestra solicitud en recibir Su favor. Ciertamente, hay en ello signos para gente que oye.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxiii{Y entre Sus signos está el haceros ver el relámpago, motivo de temor y de anhelo, y el hacer bajar agua del cielo, vivificando con ella la tierra después de muerta. Ciertamente, hay en ello signos para gente que razona.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxiv{Y entre sus Signos está el que los cielos y la tierra se sostengan por una orden Suya. Al final, apenas Él os llame de la tierra, saldréis inmediatamente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxv{Suyos son quienes están en los cielos y en la tierra. Todos Le obedecen.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxvi{Es Él Quien inicia la creación y, luego, la repite. Es cosa fácil para Él. Representa el ideal supremo en los cielos y en la tierra. Es el Poderoso, el Sabio.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxvii{Os propone una parábola tomada de vuestro mismo ambiente: ¿Hay entre vuestros esclavos quienes participen del mismo sustento de que os hemos proveído, de modo que podáis equipararos en ello con ellos y les temáis tanto cuanto os teméis unos a otros? Así explicamos detalladamente los signos a gente que razona.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxviii{Los impíos, al contrario, siguen sus pasiones sin conocimiento. ¿Quién podrá dirigir a aquéllos a quienes Alá ha extraviado? No tendrán quien les auxilie.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxix{¡Profesa la Religión como hanif, según la naturaleza primigenia que Alá ha puesto en los hombres! No cabe alteración en la creación de Alá. Ésa es la religión verdadera. Pero la mayoría de los hombres no saben.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmcdxl{volviéndoos a Él arrepentidos. ¡Temedle, haced la azalá y no seáis de los asociadores,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmcdxli{de los que escinden su religión en sectas, contento cada grupo con lo suyo!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmcdxlii{Cuando los hombres sufren una desgracia, invocan a su Señor, volviéndose a Él arrepentidos. Luego, cuando les ha hecho gustar una misericordia venida de Él, algunos de ellos asocian otros dioses a su Señor,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmcdxliii{para terminar negando lo que les hemos dado. ¡Gozad, pues, brevemente! ¡Vais a ver...!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmcdxliv{¿Acaso les hemos conferido una autoridad que hable de lo que ellos Le asocian?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmcdxlv{Cuando hacemos gustar a los hombres una misericordia, se regocijan de ella. Pero, si les sucede un mal como castigo a sus obras, ahí les tenéis desesperados.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmcdxlvi{¿Es que no ven que Alá dispensa el sustento a quienes Él quiere: a unos con largueza, a otros con mesura? Ciertamente, hay en ello signos para gente que cree.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmcdxlvii{Da lo que es de derecho al pariente, al pobre y al viajero. Es lo mejor para quienes desean agradar a Alá. Esos son los que prosperarán.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmcdxlviii{Lo que prestáis con usura para que os produzca a costa de la hacienda ajena no os produce ante Alá. En cambio, lo que dais de azaque por deseo de agradar a Alá... Ésos son los que recibirán el doble.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmcdxlix{Alá es Quien os ha creado y, luego proveído del sustento, Quien os hará morir y, luego, volveros a la vida. ¿Hay alguno de vuestros asociados que sea capaz de hacer algo de eso? ¡Gloria a Él! ¡Está por encima de lo que Le asocian!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmcdl{Ha aparecido la corrupción en la tierra y en el mar como consecuencia de las acciones de los hombres, para hacerles gustar parte de lo que han hecho. Quizás, así, se conviertan.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmcdli{Di: «¡Id por la tierra y mirad cómo terminaron sus antecesores: fueron, en su mayoría, asociadores!»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmcdlii{Profesa la religión verdadera antes de que llegue un día que Alá no evitará. Ese día serán separados:\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmcdliii{quienes no hayan creído sufrirán las consecuencias de su incredulidad, pero quienes hayan obrado bien se habrán preparado un lecho.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmcdliv{Para retribuir con Su favor a los que hayan creído y obrado bien. Él no ama a los infieles.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmcdlv{Entre Sus signos, está el envío de los vientos como nuncios de la buena nueva, para daros a gustar de Su misericordia, para que naveguen las naves siguiendo Sus órdenes y para que busquéis Su favor. Y quizás, así, seáis agradecidos.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmcdlvi{Antes de ti, hemos mandado enviados a su pueblo. Les aportaron las pruebas claras. Nos vengamos de los que pecaron, era deber Nuestro auxiliar a los creyentes.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmcdlvii{Alá es Quien envía los vientos y éstos levantan nubes. Y Él las extiende como quiere por el cielo, las fragmenta y ves que sale de dentro de ellas el chaparrón. Cuando favorece con éste a los siervos que Él quiere, he aquí que éstos se regocijan,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmcdlviii{mientras que, antes de haberles sido enviado desde arriba, habían sido presa de la desesperación.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmcdlix{¡Y mira las huellas de la misericordia de Alá, cómo vivifica la tierra después de muerta! Tal es, en verdad, el Vivificador de los muertos. Es omnipotente.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmcdlx{Y si enviamos un viento y ven que amarillea, se obstinan, no obstante, en su incredulidad.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmcdlxi{Tú no puedes hacer que los muertos oigan ni que los sordos oigan el llamamiento, si vuelven la espalda.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmcdlxii{Ni puedes dirigir a los ciegos, sacándoles de su extravío. Tú no puedes hacer que oigan sino quienes creen en Nuestros signos y están sometidos a Nosotros.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmcdlxiii{Alá es Quien os creó débiles; luego, después de ser débiles, os fortaleció luego, después de fortaleceros, os debilitó y os encaneció. Crea lo que Él quiere. Es el Omnisciente, el Omnipotente.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmcdlxiv{El día que llegue la Hora, jurarán los pecadores que no han permanecido sino una hora. Así estaban de desviados...\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmcdlxv{Quienes habían recibido la Ciencia y la fe dirán: «Habéis permanecido el tiempo previsto en la Escritura de Alá: hasta el día de la Resurrección, y hoy es el día de la Resurrección. Pero no sabíais...»\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmcdlxvi{Ese día, no les servirán de nada a los impíos sus excusas y no serán agraciados.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmcdlxvii{En este Corán hemos dado a los hombres toda clase de ejemplos. Si les vienes con una aleya, seguro que dicen los infieles: «¡No sois más que unos falsarios!»\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmcdlxviii{Así es como sella Alá los corazones de los que no saben.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmcdlxix{¡Ten, pues, paciencia! ¡Lo que Alá promete es verdad! ¡Que no te encuentren ligero quienes no están convencidos!\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmcdlxx{\basmalahes 'lm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxi{Éstas son las aleyas de la Escritura sabia,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxii{como dirección y misericordia para quienes hacen el bien.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxiii{que hacen la azalá, dan el azaque y están convencidos de la otra vida.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxiv{Esos tales están dirigidos por su Señor, ésos son los que prosperarán.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxv{Hay entre los hombres quien compra historietas divertidas para, sin conocimiento, extraviar a otros del camino de Alá y para tomarlo a burla. Quienes tal hagan tendrán un castigo humillante.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxvi{Cuando se le recitan Nuestras aleyas, se aleja altivamente, como si no las hubiera oído, como si hubiera estado sordo. ¡Anúnciale un castigo doloroso!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxvii{Quienes, en cambio, hayan creído y obrado bien tendrán los jardines de la Delicia.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxviii{en los que estarán eternamente. ¡Promesa de Alá verdad! Él es el Poderoso, el Sabio.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxix{Ha creado los cielos sin pilares visibles. Ha fijado en la tierra las montañas para que ella y vosotros no vaciléis. Ha diseminado por ella toda clase de bestias. Hemos hecho bajar agua del cielo y crecer en ella toda especie generosa.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxx{Ésta es la creación de Alá. ¡Mostradme, pues, qué han creado los otros dioses que hay fuera de Él! Sí, los impíos están evidentemente extraviados.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxi{Dimos a Luqmán la sabiduría: «¡Sé agradecido con Alá! Quien es agradecido lo es, en realidad, en provecho propio. Quien es desagradecido... Alá Se basta a Sí mismo, es digno de alabanza».\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxii{Y cuando Luqmán amonestó a su hijo, diciéndole: «¡Hijito! ¡No asocies a Alá otros dioses, que la asociación es una impiedad enorme!».\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxiii{Hemos ordenado al hombre con respecto a sus padres -su madre le llevó sufriendo pena tras pena y le destetó a los dos años-: «Sé agradecido conmigo y con tus padres. ¡Soy Yo el fin de todo!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxiv{Pero, si te insisten en que Me asocies aquello de que no tienes conocimiento, ¡no les obedezcas! En la vida de acá ¡pórtate amablemente con ellos! ¡Sigue el camino de quien vuelve a Mí arrepentido! Luego, volveréis a Mí y ya os informaré de lo que hacíais».\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxv{«¡Hijito! Aunque se trate de algo del peso de un grano de mostaza y esté escondido en una roca, en los cielos o en la tierra, Alá lo sacará a luz. Alá es sutil, está bien informado.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxvi{¡Hijito! ¡Haz la azalá! ¡Ordena lo que está bien y prohíbe lo que está mal! ¡Ten paciencia ante la adversidad! ¡Eso sí que es dar muestras de resolución!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxvii{¡No pongas mala cara a la gente, ni pises la tierra con insolencia! Alá no ama a nadie que sea presumido, jactancioso.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxviii{¡Sé modesto en tus andares! ¡Habla en voz baja! ¡La voz más desagradable es, ciertamente, la del asno!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxix{¿No veis que Alá ha sujetado a vuestro servicio lo que está en los cielos y en la tierra, y os ha colmado de Sus gracias, visibles u ocultas? Pero hay algunos hombres que discuten de Alá sin tener conocimiento, ni dirección, ni Escritura luminosa.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcdxc{Y, cuando se les dice: «¡Seguid lo que Alá ha revelado!», dicen: «¡No, sino que seguiremos lo mismo que nuestros padres seguían!» ¿Y si el Demonio les llamara al castigo del fuego de la gehena?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcdxci{Quien se somete a Alá y hace el bien se ase del asidero más firme. El fin de todo es Alá.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcdxcii{Si alguien no cree, ¡que su incredulidad no te entristezca! Volverán a Nosotros y ya les informaremos de lo que hacían. Alá sabe bien lo que encierran los pechos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcdxciii{Les dejaremos que gocen por breve tiempo. Luego, les arrastraremos a un duro castigo.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcdxciv{Si les preguntas: «¿Quién ha creado los cielos y la tierra?», seguro que dicen: «¡Alá!» Di: «¡Alabado sea Alá!» No, la mayoría no saben.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcdxcv{Es de Alá lo que está en los cielos y en la tierra. Alá es Quien Se basta a Sí mismo, el Digno de Alabanza.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcdxcvi{Si se hicieran cálamos de los árboles de la tierra, y se añadieran al mar, luego de él, otros siete mares más, no se agotarían las palabras de Alá. Alá es poderoso, sabio.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcdxcvii{Crearos y resucitaros cuesta a Alá tanto como si se tratara de una sola persona. Alá todo lo oye, todo lo ve.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcdxcviii{¿No ves que Alá hace que la noche entre en el día y que el día entre en la noche, ha sujetado el sol y la luna, prosiguiendo los dos su curso hasta un término fijo, y que Alá está bien informado de lo que hacéis?\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmcdxcix{Esto es así porque Alá es la Verdad, pero lo que ellos invocan en lugar de invocarle a Él es lo falso. Alá es el Altísimo, el Grande.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmd{¿No ves que las naves navegan por la gracia de Alá, para que Él os muestre algunos de Sus signos? Ciertamente, hay en ello signos para todo aquél que tenga mucha paciencia, mucha gratitud.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdi{Y, cuando las olas les cubren cual pabellones, invocan a Alá rindiéndole culto sincero. Pero, en cuanto les salva, llevándolos a tierra firme, algunos de ellos vacilan. Nadie niega Nuestros signos sino todo aquél que es pérfido, desagradecido.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdii{¡Hombres! ¡Temed a vuestro Señor y tened miedo de un día en que el padre no pueda satisfacer por su hijo, ni el hijo por su padre! ¡Lo que Alá promete es verdad! ¡Que la vida de acá no os engañe, y que el Engañador no os engañe acerca de Alá!\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdiii{Alá tiene conocimiento de la Hora. Envía abajo la lluvía. Sabe lo que encierran las entrañas de la madre, mientras que nadie sabe lo que el día siguiente le deparará, nadie sabe en qué tierra morirá. Alá es omnisciente, está bien informado.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdiv{\basmalahes 'lm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdv{La revelación de la Escritura, exenta de dudas, procede del Señor del universo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdvi{O dicen: «Él la ha inventado». ¡No! es la Verdad venida de tu Señor, para que adviertas a un pueblo al que no ha venido monitor alguno antes de ti. Quizás, así, sean bien dirigidos.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdvii{Alá es Quien ha creado los cielos, la tierra y lo que entre ellos está en seis días. Luego, se ha instalado en el Trono. Fuera de É, no tenéis amigo ni intercesor. ¿Es que no os dejaréis amonestar?\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdviii{Él dispone en el cielo todo lo de la tierra. Luego, todo ascenderá a Él en un día equivalente en duración a mil años de los vuestros.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdix{Tal es el Conocedor de lo oculto y de lo patente, el Poderoso, el Misericordioso,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdx{Que ha hecho bien todo cuanto ha creado y ha comenzado la creación del hombre de arcilla\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdxi{-luego, ha establecido su descendencia de una gota de líquido vil-;\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdxii{luego, le ha dado forma armoniosa e infundido en él de Su Espíritu. Os ha dado el oído, la vista y el intelecto. ¡Qué poco agradecidos sois!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdxiii{Dicen: «Cuando nos hayamos perdido en la tierra, ¿es verdad que se nos creará de nuevo?» No, no creen en el encuentro de su Señor.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdxiv{Di: «El ángel de la muerte, encargado de vosotros, os llamara y, luego, seréis devueltos a vuestro Señor».\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdxv{Si pudieras ver a los pecadores, cabizbajos ante su Señor: «¡Señor! ¡Hemos visto y oído! ¡Haznos volver para que hagamos obras buenas! ¡Estamos convencidos!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdxvi{Si hubiéramos querido, habríamos dirigido a cada uno. Pero se ha realizado Mi sentencia: «¡He de llenar la gehena de genios y de hombres, de todos ellos!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdxvii{¡Gustad, pues, por haber olvidado que os llegaría este día! Nosotros también os hemos olvidado. ¡Gustad el castigo eterno por lo que habéis hecho!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdxviii{Sólo creen en Nuestras aleyas quienes, al ser amonestados con ellas, caen al suelo en adoración y glorifican a su Señor, sin mostrarse altivos.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdxix{Se alzan del lecho para invocar a su Señor con temor y anhelo y dan limosna de lo que les hemos proveído.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdxx{Nadie sabe la alegría reservada a ellos en retribución a sus obras.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdxxi{¿Es que el creyente es como el perverso? No son iguales.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdxxii{Quienes crean y obren bien tendrán los jardines de la Morada como alojamiento en premio a sus obras.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdxxiii{Pero los que obren con perversidad tendrán el Fuego como morada. Siempre que quieran salir de él, serán devueltos a él y se les dirá:«¡Gustad el castigo del Fuego que desmentíais!»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdxxiv{Hemos de darles a gustar del castigo de aquí abajo antes del castigo mayor. Quizás, así, se conviertan.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdxxv{¿Hay alguien que sea más impío que quien, habiéndosele recordado los signos de su Señor, se desvía luego de ellos? Nos vengaremos de los pecadores.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdxxvi{Hemos dado a Moisés la Escritura -no dudes, pues, en encontrarle- e hicimos de ella dirección para los Hijos de Israel.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdxxvii{Elegimos de entre ellos a jefes que les dirigieran siguiendo Nuestra orden como premio por haber perseverado y por haber estado convencidos de Nuestros signos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdxxviii{Tu Señor fallará entre ellos el día de la Resurrección sobre aquello en que discrepaban.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdxxix{¿Es que no les dice nada que hayamos hecho perecer a tantas generaciones precedentes, cuyas viviendas huellan ellos ahora? Ciertamente, hay en ello signos. ¿No oirán, pues?\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdxxx{¿Es que no ven cómo conducimos el agua a la tierra pelada y, gracias a ella, sacamos los cereales de que se alimentan sus rebaños y ellos mismos? ¿No verán, pues?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdxxxi{Y dicen: «¿Para cuándo ese fallo, si es verdad lo que decís?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdxxxii{Di: «El día del fallo, la fe ya no aprovechará a los infieles y no les será dado esperar».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdxxxiii{¡Apártate, pues, de ellos y espera! ¡Ellos esperan!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdxxxiv{\basmalahes ¡Profeta! ¡Teme a Alá y no obedezcas a los infieles y a los hipócritas! Alá es omnisciente, sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdxxxv{¡Sigue lo que tu Señor te revela! Alá está bien informado de lo que hacéis.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdxxxvi{¡Confía en Alá! ¡Alá basta como protector!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdxxxvii{Alá no ha puesto dos corazones en el pecho de ningún hombre. Ni ha hecho que las esposas que repudiáis por la fórmula: «¡Eres para mí como la espalda de mi madre!» sean vuestras madres. Ni ha hecho que vuestros hijos adoptivos sean vuestros propios hijos. Eso es lo que vuestras bocas dicen. Alá, empero, dice la verdad y conduce por el Camino.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdxxxviii{Llamadles por su padre. Es más equitativo ante Alá. Y, si no sabéis quién es su padre, que sean vuestros hermanos en religión y vuestros protegidos. No incurrís en culpa si en ello os equivocáis, pero sí si lo hacéis deliberadamente. Alá es indulgente, misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdxxxix{El Profeta está más cerca de los creyentes que ellos lo están de sí mismos. Las esposas de aquél son las madres de éstos. Los unidos por lazos de consanguinidad están más cerca unos de otros, según la Escritura de Alá, que los creyentes y los emigrados, a menos que hagáis un favor a vuestros amigos. Eso está anotado en la Escritura.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdxl{Y cuando concertamos un pacto con los profetas, contigo, con Noé, con Abraham, con Moisés y con Jesús, hijo de María -pacto solemne,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdxli{para pedir cuenta de su sinceridad a los sinceros. Y para los infieles ha preparado un castigo doloroso.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdxlii{¡Creyentes! Recordad la gracia que Alá os dispensó cuando vinieron las legiones contra vosotros y Nosotros enviamos contra ellas un viento y legiones invisibles a vuestros ojos. Alá ve bien lo que hacéis.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdxliii{Cuando os acosaban por todas partes, cuando el terror os desvió la mirada, se os hizo un nudo en la garganta y conjeturasteis sobre Alá.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdxliv{En esa ocasión, los creyentes fueron puestos a prueba y sufrieron una violenta conmoción.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdxlv{Y cuando los hipócritas y los enfermos de corazón decían: «¡Alá y Su Enviado no han hecho sino engañarnos con sus. promesas!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdxlvi{Y cuando un grupo de ellos dijo: «¡Gente de Yatrib! ¡No os quedéis aquí! ¡Regresad!» Parte de ellos pidió autorización al Profeta, diciendo: «¡Nuestras casas están indefensas!» En realidad, no es que sus casa estuvieran indefensas, lo que querían era huir.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdxlvii{Si les hubieran entrado por sus arrabales y se les hubiera pedido que apostataran, habrían aceptado casi sin demora.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdxlviii{Pero habían concertado antes con Alá una alianza: no volver la espalda. Y hay que responder de la alianza con Alá...\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdxlix{Di: «No sacaréis nada con huir si es que pretendéis con ello no morir o que no os maten. De todas maneras, se os va a dejar gozar sólo por poco tiempo».\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdl{Di: «¿Quién podrá protegeros de Alá, tanto si quiere haceros mal como si quiere haceros objeto de misericordia?» No encontrarán, fuera de Alá, amigo ni auxiliar.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdli{Alá sabe quiénes son, entre vosotros, los que levantan obstáculos y los que dicen a sus hermanos: «¡Venid a nosotros!», pero sin mostrar gran ardor para combatir.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdlii{Os regatean la ayuda. Cuando viene el miedo, les ves que te miran, girándoles los ojos, como mira aquél a quien ronda la muerte. Pero, cuando ha desaparecido el miedo, os hieren con sus afiladas lenguas, ávidos de botín. Esos tales no son creyentes. Alá hará vanas sus obras. Es cosa fácil t para Alá.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdliii{Creen que los coalicionistas no se han ido. Pero, si los coalicionistas regresaran, querrían retirarse al desierto entre los beduinos, preguntando qué ha sido de vosotros. Si se quedaran con vosotros, combatirían pero poco.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdliv{En el Enviado de Alá tenéis, ciertamente, un bello modelo para quien cuenta con Alá y con el último Día y que recuerda mucho a Alá.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdlv{Y cuando los creyentes vieron a los coalicionistas, dijeron: «Esto es lo que Alá y su Enviado nos habían prometido. ¡Dios y su Enviado decían la verdad!» Esto no hizo sino aumentar su fe y su adhesión.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdlvi{Hubo creyentes que se mantuvieron fieles a la alianza concertada con Alá. Algunos de ellos dieron ya su vida. Otros esperan aún, sin mudar su actitud.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdlvii{Para que Alá retribuya a los sinceros por su sinceridad y castigue a los hipócritas, si quiere, o se vuelva a ellos. Alá es indulgente, misericordioso.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdlviii{Alá despidió a los infieles llenos de ira, sin que consiguieran triunfar. Alá evitó el combate a los creyentes. Alá es fuerte, poderoso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdlix{Hizo bajar de sus fortalezas a los de la gente de la Escritura que habían apoyado a aquéllos. Sembró el terror en sus corazones. A unos matasteis, a otros les hicisteis cautivos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdlx{Os ha dado en herencia su tierra, sus casas, sus bienes y un territorio que nunca habíais pisado. Alá es omnipotente.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdlxi{¡Profeta! Di a tus esposas: «Si deseáis la vida de acá y su ornato, ¡venid, que os proveeré y os dejaré en libertad decorosamente!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdlxii{Pero, si buscáis a Alá, a Su Enviado y la Morada Postrera, entonces, Alá ha preparado una recompensa magnífica para aquéllas de vosotras que hagan el bien».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdlxiii{¡Mujeres del Profeta! A la que de vosotras sea culpable de deshonestidad manifiesta, se le doblará el castigo. Es cosa fácil para Alá.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdlxiv{Pero a la que de vosotras obedezca a Alá y a Su Enviado y obre bien, le daremos doble remuneración y le prepararemos generoso sustento.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdlxv{¡Mujeres del Profeta! Vosotras no sois como otras mujeres cualesquiera. Si teméis a Alá, no seáis tan complacientes en vuestras palabras que llegue a anhelaros el enfermo de corazón. ¡Hablad, más bien, como se debe!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdlxvi{¡Quedaos en vuestras casas! ¡No os acicaléis como se acicalaban las natiguas paganas! ¡Haced la azalá! ¡Dad el azaque! ¡Obedeced a Alá y a Su Enviado! Alá sólo quiere libraros de la mancha, gente de la casa, y purificaros por completo.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdlxvii{Recordad lo que de las aleyas de Alá y de la Sabiduría se recita en vuestras casas. Alá es sutil, está bien informado.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdlxviii{Alá ha preparado perdón y magnífica recompensa para los musulmanes y las musulmanas, los creyentes y las creyentes, los devotos y las devotas, los sinceros y las sinceras, los pacientes y las pacientes, los humildes y las humildes, los que y las que dan limosna, los que y las que ayunan, los castos y las castas, los que y las que recuerdan mucho a Alá.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdlxix{Cuando Alá y Su Enviado han decidido un asunto, ni el creyente ni la creyente tienen ya opción en ese asunto. Quien desobedece a Alá y a su Enviado está evidentemente extraviado.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdlxx{Y cuando decías al que había sido objeto de una gracia de Alá y de una gracia tuya: «¡Conserva a tu esposa y teme a Alá!», y ocultabas en tu alma lo que Alá iba a revelar, y tenías miedo de los hombres, siendo así que Alá tiene más derecho a que Le tengas miedo. Cuando Zayd había terminado con ella, te la dimos por esposa para que no se pusiera reparo a los creyentes que se casan con las esposas de sus hijos adoptivos, cuando éstos han terminado con ellas. ¡La orden de Alá se cumple!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdlxxi{Que no tenga reparos el Profeta por algo que le ha sido impuesto por Alá. conforme a la práctica de Alá para los que vivieron antes -la orden de Alá es un decreto decidido-,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdlxxii{que transmitían los mensajes de Alá y Le tenían miedo, no teniendo miedo de nadie más que de Alá. ¡Basta Alá para ajustar cuentas!\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdlxxiii{Mahoma no es el padre de ninguno de vuestros varones, sino el Enviado de Alá y el sello de los profetas. Alá es omnisciente.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdlxxiv{¡Creyentes! ¡Recordad mucho a Alá!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdlxxv{¿Glorificadle mañana y tarde!\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdlxxvi{Él es Quien, con Sus ángeles, os a bendice para sacaros de las tinieblas a la luz. Es misericordioso con los creyentes.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdlxxvii{El día que Le encuentren, serán saludados con: «¡Paz!» Les habrá preparado una recompensa generosa.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdlxxviii{¡Profeta! Te hemos enviado como testigo, como nuncio de buenas nuevas, como monitor,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdlxxix{como voz que llama a Alá con Su permiso, como antorcha luminosa.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdlxxx{Anuncia a los creyentes que recibirán un gran favor de Alá.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxi{¡No obedezcas a los infieles y a los hipócritas! ¡Haz caso omiso de sus ofensas y confía en Alá! ¡Alá basta como protector!\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxii{¡Creyentes! Si os casáis con mujeres creyentes y, luego, las repudiáis antes de haberlas tocado, no tenéis por qué exigirles un período de espera. ¡Proveedlas de lo necesario y dejadlas en libertad decorosamente!\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxiii{¡Profeta! Hemos declarado lícitas para ti a tus esposas, a las que has dado dote, a las esclavas que Alá te ha dado como botín de guerra, a las hijas de tu tío y tías paternos y de tu tío y tías maternos que han emigrado contigo y a toda mujer creyente, si se ofrece al Profeta y el Profeta quiere casarse con ella. Es un privilegio tuyo, no de los otros creyentes -ya sabemos lo que hemos impuesto a estos últimos con respecto a sus esposas y esclavas, para que no tengas reparo. Alá es indulgente, misericordioso.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxiv{Puedes dejar para otra ocasión a la que de ellas quieras, o llamar a ti a la que quieras, o volver a llamar a una de las que habías separado. No haces mal. Esto contribuye a su alegría, a evitar que estén tristes y a que todas ellas estén contentas con lo que tú les des. Alá sabe lo que encierran vuestros corazones. Alá es omnisciente, benigno.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxv{En adelante, no te será lícito tomar otras mujeres, ni cambiar de esposas, aunque te guste su belleza, a excepción de tus esclavas. Alá todo lo observa.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxvi{¡Creyentes! No entréis en las habitaciones del Profeta a menos que se os autorice a ello para una comida. No entréis hasta que sea hora. Cuando se os llame, entrad y, cuando hayáis comido, retiraos sin poneros a hablar como si fueráis de la familia. Esto molestaría al Profeta y, por vosotros, le daría vergüenza. Alá, en cambio, no Se avergüenza de la verdad. Cuando les pidáis un objeto hacedlo desde detrás de una cortina. Es más decoroso para vosotros y para ellas. No debéis molestar al Enviado de Alá, ni casaros jamás con las que hayan sido sus esposas. Esto, para Alá, sería grave.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxvii{Si mostráis algo o lo ocultáis,... Alá lo sabe todo.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxviii{No pecan si se trata de sus padres, sus hijos, sus hermanos, los hijos de sus hermanos, los hijos de sus hermanas, sus mujeres o sus esclavas. ¡Temed a Alá! Alá es testigo de todo.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxix{Alá y sus ángeles bendicen al Profeta. ¡Creyentes! ¡Bendecidle vosotros también y saludadle como se debe!\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmdxc{A los que molestan a Alá y a Su Enviado, Alá les ha maldecido en la vida de acá y en la otra y les ha preparado un castigo humillante.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmdxci{Los que molestan a los creyentes y a las creyentes, sin haberlo éstos merecido, son culpables de infamia y de pecado manifiesto.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmdxcii{¡Profeta! Di a tus esposas, a tus hijas y a las mujeres de los creyentes que se cubran con el manto. Es lo mejor para que se las distinga y no sean molestadas. Alá es indulgente, misericordioso.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmdxciii{Si los hipócritas, los enfermos de corazón y los agitadores de la ciudad no cesan, hemos de incitarte contra ellos y pronto dejarán tu vecindad.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmdxciv{Malditos, serán capturados y muertos sin piedad donde quiera que se dé con ellos,\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmdxcv{conforme a la practica de Alá con los que vivieron antes. Y encontrarás la práctica de Alá irreemplazable.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmdxcvi{Los hombres te preguntan por la Hora. Di: «Sólo Alá tiene conocimiento de ella». ¿Quién sabe? Quizá la Hora esté próxima...\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmdxcvii{Alá ha maldecido a los infieles y les ha preparado fuego de la gehena,\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmdxcviii{en el que estarán eternamente, para siempre. No encontrarán amigo ni auxiliar.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmdxcix{El día que, en el Fuego, se desencajen sus rostros de dolor, dirán: «¿Ojalá hubiéramos obedecido a Alá! ¡Ojalá hubiéramos obedecido al Enviado!».\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmdc{Y dirán: «¡Señor! ¡Hemos obedecido a nuestros señores y a nuestros grandes y nos han extraviado del Camino!\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmdci{¡Dóblales, Señor, el castigo y échales una gran maldición!»\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmdcii{¡Creyentes! ¡No seáis como los que molestaron a Moisés! Alá le declaró inocente de lo que le habían acusado. Alá le tenía consideración.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmdciii{¡Creyentes! ¡Temed a Alá y no digáis despropósitos,\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmdciv{para que haga prosperar vuestras obras y os perdone vuestros pecados! Quien obedezca a Alá y a Su Enviado tendrá un éxito grandioso.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmdcv{Propusimos el depósito a los cielos, a la tierra y a las montañas, pero se negaron a hacerse cargo de él, tuvieron miedo. El hombre, en cambio, se hizo cargo. Es, ciertamente, muy impío, muy ignorante.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmdcvi{Para que Alá castigue a los hipócritas y a las hipócritas, a los asociadores y a las asociadoras, y para que Alá se vuelva a los creyentes y a las creyentes. Alá es indulgente, misericordioso.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmdcvii{\basmalahes ¡Alabado sea Alá, a Quien pertenece lo que está en los cielos y en la tierra! ¡Alabado sea también en la otra vida! Él es el Sabio, el Bien Informado.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdcviii{Sabe lo que penetra en la tierra y lo que de ella sale, lo que desciende del cielo y lo que a él asciende. Él es el Misericordioso, el Indulgente.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdcix{Los infieles dicen: «La Hora no nos llegará». Di: «¡Claro que sí! ¡Por mi Señor, el Conocedor de lo oculto, que ha de llegaros! No se Le pasa desapercibido el peso de un átomo en los cielos ni en la tierra. No hay nada, menor o mayor que eso, que no esté en una Escritura clara,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdcx{para retribuir a los que creyeron y obraron bien. Esos tales tendrán perdón y generoso sustento.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdcxi{Quienes, en cambio, se hayan esforzado por dejar sin efecto Nuestros signos, tendrán el castigo de un suplicio doloroso».\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdcxii{Quienes han recibido la Ciencia ven que lo que tu Señor te ha revelado es la Verdad y dirige a la vía del Poderoso, del Digno de Alabanza.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdcxiii{Los infieles dicen: «¿Queréis que os indiquemos un hombre que os anuncie que, cuando estéis completamente descompuestos, de verdad se os creará de nuevo?»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdcxiv{¿Ha inventado una mentira contra Alá o es un poseso? ¡No, no es así! Los que no creen en la otra vida están destinados al castigo y profundamente extraviados.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdcxv{¿Es que no ven lo que les rodea en los cielos y en la tierra? Si quisiéramos, haríamos que la tierra se los tragara o que cayera sobre ellos parte del cielo. Ciertamente, hay en ello un signo para todo siervo arrepentido.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdcxvi{Dimos a David un favor Nuestro: «¡Montañas! ¡Resonad acompañándole, y vosotros también, pájaros!» Por él, hicimos blando el hierro.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdcxvii{«¡Fabrica cotas de malla y mide bien la malla!» ¡Obrad bien! Yo veo bien lo que hacéis.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdcxviii{A Salomón el viento, que por la mañana hacía el camino de un mes y por la tarde de otro mes. Hicimos manar para él la fuente de bronce fundido. De los genios, algunos trabajaban a su servicio, con permiso de su Señor. Al que hubiera desobedecido Nuestras órdenes, le habríamos hecho gustar el castigo del fuego de la gehena.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdcxix{Le hacían todo lo que él quería: palacios, estatuas, calderos grandes como cisternas, firmes marmitas. ¡Familiares de David, sed agradecidos! Pero pocos de Mis siervos son muy agradecidos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdcxx{Y cuando decretamos su muerte, no tuvieron más indicio de ella que la carcoma, que se puso a roer su cayado. Y, cuando se desplomó, vieron claramente los genios que, si hubieran conocido lo oculto, no habrían permanecido tanto tiempo en el humillante castigo.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdcxxi{Los saba tenían un signo en su territorio: dos jardines, uno a la derecha y otro a la izquierda. «¡Comed del sustento de vuestro Señor y dadle gracias! Tenéis un buen país y un Señor indulgente».\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdcxxii{Pero se desviaron y enviamos contra ellos la inundación de los diques. Y les cambiamos aquellos dos jardines por otros dos que producían frutos amargos, tamariscos y unos pocos azufaifos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdcxxiii{Así les retribuimos por su ingratitud. No castigamos sino al desagradecido.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdcxxiv{Entre ellos y las ciudades que Nosotros hemos bendecido establecimos otras ciudades, cerca unas de otras, y determinamos el tránsito entre ellas: «¡Id de una a otra, de día o de noche, en seguridad!»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdcxxv{Pero dijeron: «¡Señor! ¡Alarga nuestros recorridos!» Y fueron injustos consigo mismos. Los hicimos legendarios y los dispersamos por todas partes. Ciertamente, hay en ello signos para todo aquél que tenga mucha paciencia, mucha gratitud.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdcxxvi{Iblis confirmó la opinión que se había formado de ellos. Le siguieron todos, menos un grupo de creyentes.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdcxxvii{No tenía poder sobre ellos. Queríamos sólo distinguir a los que creían en la otra vida de los que dudaban de ella. Tu Señor cuida de todo.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdcxxviii{Di: «Invocad a los que, en lugar de Alá, pretendéis. No pueden el peso de un átomo en los cielos ni en la tierra, ni tienen allí participación, ni Él encuentra en ellos ayuda.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdcxxix{Es inútil interceder por nadie ante Él, excepto por quien Él lo permita. Hasta que, cuando el terror haya desaparecido de sus corazones, digan: '¿Qué ha dicho vuestro Señor?' Dirán: 'La verdad' Él es el Altísimo, el Grande».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdcxxx{Di: «¿Quién os procura el sustento de los cielos y de la tierra?» Di: «¡Alá! O nosotros o vosotros, unos siguen la buena dirección y otros están evidentemente extraviados».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxi{Di: «Ni vosotros tendréis que responder de nuestros delitos, ni nosotros de lo que hagáis».\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxii{Di: «Nuestro Señor nos reunirá y fallará entre nosotros según justicia. Él es Quien falla, el Omnisciente».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxiii{Di: «Mostradme los que Le habéis agregado como asociados. Pero ¡no! El es Alá, el Poderoso, el Sabio».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxiv{No te hemos enviado sino como nuncio de buenas nuevas y como monitor a todo el género humano. Pero la mayoría de los hombres no saben.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxv{Dicen: «¿Cuándo se cumplirá esta amenaza, si es verdad lo que decís?»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxvi{Di: «Se os ha fijado ya un día que no podréis retrasar ni adelantar una hora».\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxvii{Los infieles dicen: «No creemos en este Corán ni en sus precedentes». Si pudieras ver a los impíos, de pie ante su Señor, recriminándose unos a otros. Los que fueron débiles dirán a los que fueron altivos: «Si no llega a ser por vosotros, habríamos creído».\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxviii{Los que fueron altivos dirán a los que fueron débiles: «¿Somos, acaso, nosotros los que os desviaron de la Dirección cuando se os indicó ésta? ¡No, fuisteis culpables!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxix{Los que fueron débiles dirán a los que fueron altivos: «¡No!, que fueron vuestras maquinaciones de noche y de día, cuando nos instabais a que no creyéramos en Alá y a que Le atribuyéramos iguales...» Y, cuando vean el castigo, disimularán su pena. Pondremos argollas al cuello de los que no hayan creído. ¿Serán retribuidos por otra cosa que por lo que hicieron?\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdcxl{No hemos enviado monitor a una ciudad que no dijeran sus ricos: «No creemos en vuestro mensaje».\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdcxli{Y que no dijeran: «Nosotros tenemos más hacienda e hijos. No se nos castigará».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdcxlii{Di: «Mi Señor dispensa el sustento a quien Él quiere: a unos con largueza, a otros con mesura. Pero la mayoría de los hombres no saben».\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdcxliii{Ni vuestra hacienda ni vuestros hijos podrán acercaros bien a Nosotros. Sólo quienes crean y obren bien recibirán una retribución doble por sus obras y morarán seguros en las cámaras altas.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdcxliv{En cambio, quienes se esfuercen por dejar sin efecto Nuestros signos, serán entregados al castigo.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdcxlv{Di: «Mi Señor dispensa el sustento a quien Él quiere de Sus siervos: a unos con largueza, a otros con mesura. No dejará de restituiros ninguna limosna que deis. Él es el Mejor de los proveedores».\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdcxlvi{El día que Él los congregue a todos, dirá a los ángeles: «¿Es a vosotros a quienes servían?»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdcxlvii{Dirán: «¡Gloria a Ti! Tú eres nuestro Amigo, no ellos. ¡No! Ellos servían a los genios, en los que la mayoría creían».\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdcxlviii{Ese día no podréis ya aprovecharos ni dañaros unos a otros. Y diremos a los impíos: «¡Gustad el castigo del Fuego que desmentíais!»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdcxlix{Y cuando se les recitan Nuestras aleyas como pruebas claras, dicen: «éste no es sino un hombre que quiere apartaros de lo que vuestros padres servían». Y dicen: «Esto no es sino una mentira inventada». Y de la Verdad, luego que ha venido ésta a ellos, dicen los infieles: «¡Esto no es sino manifiesta magia!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdcl{No les dimos ningunas Escrituras que estudiaran, ni les enviamos a ningún monitor antes de ti.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdcli{Sus antecesores desmintieron y no han obtenido ni la décima parte de lo que dimos a aquéllos, que desmintieron, no obstante, a Mis enviados. Y ¡cuál no fue Mi reprobación!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdclii{Di: «Sólo os exhorto a una cosa: a que os pongáis ante Alá, de dos en dos o solos, y meditéis. Vuestro paisano no es un poseso; no es sino un monitor que os previene contra un castigo severo».\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdcliii{Di: «El salario que yo pueda pediros ¡quedáoslo! Mi salario no incumbe sino a Alá. Él es testigo de todo».\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdcliv{Di: «Mi Señor despide Verdad. Él conoce a fondo las cosas ocultas».\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdclv{Di: «Ha venido la Verdad. Lo falso no crea ni re-crea».\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdclvi{Di: «Si me extravío, me extravío, en realidad, en detrimento propio. Si sigo el camino recto, lo debo a lo que mi Señor me revela. Él lo oye todo, está cerca».\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdclvii{Si pudieras ver cuando, sobrecogidos de espanto, sin escape posible, sean arrebatados de un lugar próximo.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdclviii{Dirán: «¡Creemos en É!» Pero ¿como podrán alcanzar estando tan lejos,\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdclix{si antes no creyeron en É y, desde lejos, lanzaban injurias contra lo oculto?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdclx{Se interpondrá una barrera entre ellos y el objeto de su deseo, como ocurrió antes con sus semejantes: estaban en duda grave.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdclxi{\basmalahes ¡Alabado sea Alá, creador de los cielos y de la tierra, Que de los ángeles ha hecho enviados de dos, tres o cuatro alas! Añade a la creación lo que Él quiere. Alá es omnipotente.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdclxii{No hay quien pueda retener la misericordia que Alá dispensa a los hombres, ni hay quien pueda soltar, fuera de Él, lo que Él retiene. Él es el Poderoso, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdclxiii{¡Hombres! Recordad la gracia que Alá os ha dispensado. ¿Hay algún otro creador distinto de Alá, que os provea del cielo y de la tierra el sustento? No hay más dios que É. ¿Cómo podéis, pues, ser tan desviados!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdclxiv{Si te desmienten, ya antes de ti fueron desmentidos enviados. Pero todo será devuelto a Alá.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdclxv{¡Hombres! ¡Lo que Alá promete es verdad! ¡Que la vida de acá no os engañe! ¡Que el Engañador no os engañe acerca de Alá!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdclxvi{El Demonio es para vosotros un enemigo. Tenedle, pues, por tal. Llama a sus partidarios sólo para que moren en el fuego de la gehena.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdclxvii{Los que no hayan creído tendrán un castigo severo. En cambio, los que hayan creído y obrado bien tendrán perdón y una gran recompensa.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdclxviii{¿Es que aquél cuya mala conducta ha sido engalanada y la ve como buena...? Alá extravía a quien Él quiere y dirige a quien Él quiere. ¡No te consumas por ellos de pesar! Alá sabe bien lo que hacen.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdclxix{Alá es Quien envía los vientos y éstos levantan nubes, que Nosotros conducimos a un país árido. Con ellas vivificamos la tierra después de muerta. Así será la Resurrección.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdclxx{Quien quiera el poder... El poder pertenece, en su totalidad, a Alá. Hacia Él se eleva la buena palabra y Él realza la obra buena. En cambio, quienes tramen males tendrán un castigo severo, y la trama de ésos se malogrará.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdclxxi{Alá os ha creado de tierra; luego, de una gota; luego, hizo de vosotros parejas. Ninguna hembra concibe o pare sin que Él lo sepa. Nadie muere a edad avanzada o prematura que no esté eso en una Escritura. Es cosa fácil para Alá.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdclxxii{No son iguales las dos grandes masas de agua: una potable, dulce, agradable de beber; otra salobre, amarga. Pero de cada una coméis una carne fresca y obtenéis adornos que os ponéis. Y ves que las naves las surcan. Para que busquéis Su favor. Quizás, así, seáis agradecidos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdclxxiii{Hace que la noche entre en el día y que el día entre en la noche. Ha sujetado el sol y la luna, prosiguiendo los dos su curso hacia un término fijo. Ése es Alá, vuestro Señor. Suyo es el dominio. Los que invocáis en lugar de invocarle a Él no pueden lo más mínimo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdclxxiv{Si les invocáis, no oyen vuestra súplica y, aun si la oyeran, no os escucharían. El día de la Resurrección renegarán de que les hayáis asociado a Alá. Y nadie te informará como Quien está bien informado.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdclxxv{¡Hombres! Sois vosotros los necesitados de Alá, mientras que Alá es Quien Se basta a Sí mismo, el Digno de Alabanza.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdclxxvi{Si Él quisiera, os haría desaparecer y os sustituiría por nuevas criaturas.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdclxxvii{Y eso no sería difícil para Alá.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdclxxviii{Nadie cargará con la carga ajena. Y si alguien, abrumado por su carga, pide ayuda a otro, no se le ayudará nada, aunque sea pariente. Tú sólo debes advertir a los que tienen miedo de su Señor en secreto y hacen la azalá. Quien se purifica se purifica en realidad, en provecho propio. ¡Es Alá el fin de todo!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdclxxix{No son iguales el ciego y el vidente,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdclxxx{las tinieblas y la luz,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxi{la fresca sombra y el calor ardiente.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxii{No son iguales los vivos y los muertos. Alá hace que oiga quien Él quiere. Tú no puedes hacer que quienes estén en las sepulturas oigan.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxiii{Tú no eres sino un monitor.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxiv{Te hemos enviado con la Verdad como nuncio de buenas nuevas y como monitor. No hay comunidad por la que no haya pasado un monitor.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxv{Y si te desmienten, también sus antecesores desmintieron. Sus enviados vinieron a ellos con las pruebas claras, con las Escrituras y con la Escritura luminosa.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxvi{Luego, sorprendí a los infieles y ¡cuál no fue Mi reprobación!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxvii{¿No ves cómo ha hecho Alá bajar agua del cielo, mediante la cual hemos sacado frutos de diferentes clases? En las montañas hay vetas de diferentes colores: blancas, rojas y de un negro intenso.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxviii{Los hombres, bestias y rebaños son también de diferentes clases. Sólo tienen miedo de Alá aquéllos de Sus siervos que saben. Alá es poderoso, indulgente.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxix{Quienes recitan la Escritura de Alá, hacen la azalá y dan limosna, en secreto o en público, de lo que les hemos proveído, pueden esperar una ganancia imperecedera,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdcxc{para que Él les dé su recompensa y aún más de Su favor. Es indulgente, muy agradecido.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdcxci{Lo que de la Escritura te hemos revelado es la Verdad, en confirmación de los mensajes anteriores. Sí, Alá está bien informado de Sus siervos, los ve bien.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdcxcii{Luego, hemos dado en herencia la Escritura a aquéllos de Nuestros siervos que hemos elegido. Algunos de ellos son injustos consigo mismos; otros, siguen una vía media; otros, aventajan en el bien obrar, con permiso de Alá. Ése es el gran favor.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdcxciii{Entrarán en los jardines del edén. Allí se les ataviará con brazaletes de oro y con perlas, allí vestirán de seda.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdcxciv{Y dirán: «¡Alabado sea Alá, Que ha retirado de nosotros la tristeza! En verdad, nuestro Señor es indulgente, muy agradecido\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdcxcv{Nos ha instalado. por favor Suyo, en la Morada de la Estabilidad. No sufriremos en ella pena, no sufriremos cansancio».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdcxcvi{Los infieles, en cambio, sufrirán el fuego de la gehena. Agonizarán sin acabar de morir y no se les aliviará su castigo. Así retribuimos a todo desagradecido.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdcxcvii{Gritarán allí: «¡Señor! ¡Sácanos y obraremos bien, no como solíamos hacer!». «¿Es que no os dimos una vida suficientemente larga como para que se dejara amonestar quien quisiera? El monitor vino a vosotros... ¡Gustad, pues! Los impíos no tendrán quien les auxilie».\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdcxcviii{Alá es el Conocedor de lo oculto de los cielos y de la tierra. Él sabe bien lo que encierran los pechos.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdcxcix{Él es Quien os ha hecho sucesores en la tierra. Quien no crea, sufrirá las consecuencias de su incredulidad. La incredulidad servirá sólo para hacer a los infieles más aborrecibles ante su Señor. La incredulidad servirá sólo para perder más a los infieles.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdcc{Di: «¿Veis a vuestros asociados, a los que invocáis en lugar de invocar a Alá? Mostradme qué han creado de la tierra o si tienen participación en los cielos. O ¿les hemos dado una Escritura, en cuya prueba clara puedan basarse?» ¡No! Las promesas que los impíos se hacen mutuamente no son sino falacias.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdcci{Alá sostiene los cielos y la tierra para que no se desplomen. Si se desplomaran no habría nadie, fuera de Él, que pudiera sostenerlos. Es benigno, indulgente.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdccii{Juraron solemnemente por Alá que, si venía un monitor a ellos, iban a ser dirigidos mejor que ninguna otra comunidad. Y, cuando ha venido a ellos un monitor, esto no ha hecho sino acrecentar su repulsa,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdcciii{portándose altivamente en la tierra y tramando maldad. Pero el tramar maldad no recae sino en sus propios autores. ¿Es que esperan una suerte diferente de la que cupo a los antiguos? Pues encontrarás la práctica de Alá irreemplazable, y encontrarás la práctica de Alá inmutable.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdcciv{¿No han ido por la tierra y mirado cómo terminaron sus antecesores, aun siendo más poderosos? Nada, ni en los cielos ni en la tierra, puede escapar a Él. Es omnisciente, omnipotente.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdccv{Si Alá diera a los hombres su merecido, no dejaría ningún ser vivo sobre su superficie. Remite, sin embargo, su castigo a un plazo fijo. Y cuando vence su plazo... Alá ve bien a Sus siervos.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdccvi{\basmalahes ys.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdccvii{¡Por el sabio Corán,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdccviii{que tú eres, ciertamente, uno de los enviados\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdccix{y estás en una vía recta!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdccx{como Revelación del Poderoso, del Misericordioso,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdccxi{para que adviertas a un pueblo cuyos antepasados no fueron advertidos y que, por eso, no se preocupa.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdccxii{Se ha cumplido la sentencia contra la mayoría: no creen.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdccxiii{Les hemos puesto al cuello argollas, hasta la barbilla, de tal modo que no pueden mover la cabeza.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdccxiv{Les hemos puesto una barrera por delante y otra por detrás, cubriéndoles de tal modo que no pueden ver.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdccxv{Les da lo mismo que les adviertas o no: no creerán.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdccxvi{Pero tú sólo tienes que advertir a quien sigue la Amonestación y tiene miedo del Compasivo en secreto. Anúnciale el perdón y una recompensa generosa.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdccxvii{Nosotros resucitamos a los muertos. Inscribimos todo lo que antes hicieron, así como las consecuencias de sus actos. Todo lo tenemos en cuenta en un Libro claro.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdccxviii{Propónles una parábola: los habitantes de la ciudad. Cuando vinieron a ella los enviados.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdccxix{Cuando les enviamos a dos y les desmintieron. Reforzamos con un tercero y dijeron: «Se nos ha enviado a vosotros».\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdccxx{Dijeron: «No sois sino unos mortales como nosotros. El Compasivo no ha revelado nada. No decís sino mentiras».\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdccxxi{Dijeron: «Nuestro Señor sabe: en verdad, se nos ha enviado a vosotros,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdccxxii{encargados sólo de la transmisión clara».\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdccxxiii{Dijeron: «No presagiamos de vosotros nada bueno. Si no desistís hemos de lapidaros y haceros sufrir un castigo doloroso».\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdccxxiv{Dijeron: «De vosotros depende vuestra suerte. Si os dejarais amonestar... Sí, sois gente inmoderada».\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdccxxv{Entonces, de los arrabales, vino corriendo un hombre. Dijo: «¡Pueblo! ¡Seguid a los enviados!\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdccxxvi{¡Seguid a quienes no os piden salario y siguen la buena dirección!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdccxxvii{¿Por qué no voy a servir a Quien me ha credado y a Quien seréis devueltos?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdccxxviii{¿Voy a tomar, en lugar de tomarle a É, dioses cuya intercesión, si el Compasivo me desea una desgracia, de nada me aprovechará y tales que no podrán salvarme?\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdccxxix{Si eso hiciera, estaría, sí, evidentemente extraviado.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdccxxx{¡Creo en vuestro Señor! ¡Escuchadme!»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxi{Se dijo: «¡Entra en el Jardín!» Dijo: «¡Ah! Si mi pueblo supiera\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxii{que mi Señor me ha perdonado y me ha colocado entre los honrados».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxiii{Después de él, no hicimos bajar del cielo ninguna legión contra su pueblo. No hicimos bajar.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxiv{No hubo más que un solo Grito y ¡helos sin vida!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxv{¡Pobres siervos! No vino a ellos enviado que no se burlaran de él.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxvi{¿No ven cuántas generaciones antes de ellos hemos hecho perecer, que ya no volverán a ellos...?\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxvii{¡Y a todos, sin falta, se les hará comparecer ante Nosotros!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxviii{Tienen un signo en la tierra muerta, que hemos hecho revivir y de la que hemos sacado el grano que les alimenta.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxix{Hemos plantado en ella palmerales y viñedos, hemos hecho brotar de ella manantiales,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdccxl{para que coman de sus frutos. No son obra de sus manos. ¿No darán, pues, gracias?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdccxli{¡Gloria al Creador de todas las parejas: las que produce la tierra, las de los mismos hombres y otras que ellos no conocen!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdccxlii{Y tienen un signo en la noche, de la que quitamos el día, quedando los hombres a oscuras.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdccxliii{Y el sol. Corre a una parada suya por decreto del Poderoso, del Omnisciente.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdccxliv{Hemos determinado para la luna fases, hasta que se pone como la palma seca.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdccxlv{No le está bien al sol alcanzar a la luna, ni la noche adelanta al día. Cada uno navega en una órbita.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdccxlvi{Tienen un signo en el hecho de que hayamos llevado a sus descendientes en la nave abarrotada.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdccxlvii{Y creamos para ellos otras naves semejantes en las que se embarcan.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdccxlviii{Si quisiéramos, los anegaríamos. Nadie podría ayudarles y no se salvarían,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdccxlix{a menos que mediara una misericordia venida de Nosotros y para disfrute por algún tiempo.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdccl{Y cuando se les dice: «¡Temed el castigo en esta vida y en la otra! Quizás, así, se os tenga piedad»...\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdccli{No viene a ellos ninguno de los signos de su Señor que no se aparten de él.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdcclii{Y cuando se les dice: «¡Dad limosna de lo que Alá os ha proveído!» dicen los infieles a los creyentes: «¿Vamos a dar de comer a quien Alá, si Él quisiera, podría dar de comer? Estáis evidentemente extraviados».\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdccliii{Dicen: «¿Cuándo se cumplirá esta amenaza, si es verdad lo que decís?»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdccliv{No esperarán más que un solo Grito, que les sorprenderá en plena disputa,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdcclv{y no podrán hacer testamento, ni volver a los suyos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdcclvi{Se tocará la trompeta y se precipitarán de las sepulturas a su Señor.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdcclvii{Dirán: «¡Ay de nosotros! ¿Quién nos ; ha despertado de nuestro lecho? Esto es aquello con que el Compasivo nos había amenazado. Los enviados decían la verdad».\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdcclviii{No habrá más que un solo Grito y a todos se les hará comparecer ante Nosotros.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdcclix{Ese día, nadie será tratado injustamente en nada y no se os retribuirá sino conforme a vuestras obras.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdcclx{Ese día, los moradores del Jardín tendrán una ocupación feliz.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmdcclxi{Ellos y sus esposas estarán a la sombra, reclinados en sofás.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmdcclxii{Tendrán allí fruta y lo que deseen.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmdcclxiii{Les dirán de parte de un Señor misericordioso: «¡Paz!»\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmdcclxiv{En cambio: «¡Pecadores! ¡Apartaos hoy!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmdcclxv{¿No he concertado una alianza con vosotros, hijos de Adán: que no ibais a servir al Demonio, que es para vosotros un enemigo declarado,\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmdcclxvi{sino que ibais a servirme a Mí? Esto es una vía recta.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmdcclxvii{Ha extraviado a muchísimos de vosotros. ¿Es que no comprendíais?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmdcclxviii{ésta es la gehena con que se os había amenazado.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmdcclxix{¡Arded hoy en ella por no haber creído!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmdcclxx{Ese día sellaremos sus bocas, pero sus manos Nos hablarán y sus pies atestiguarán lo que han cometido».\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxi{Si quisiéramos, les apagaríamos los ojos. Entonces se abalanzarían a la Vía, pero ¿cómo iban a ver?\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxii{Si quisiéramos, les clavaríamos en su sitio de modo que no pudieran avanzar ni retroceder.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxiii{A quien prolongamos la vida, le hacemos encorvarse. ¿Es que no comprenden?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxiv{No le hemos enseñado la poesía, que no le está bien. Esto no es más que una amonestación y un Corán claro,\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxv{para que advierta a todo vivo y se cumpla la sentencia contra los infieles.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxvi{¿Es que no ven que, entre las obras de Nuestras manos, hemos creado a su intención rebaños que les pertenecen?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxvii{Los hemos hecho dóciles a ellos: unos les sirven de montura, otros de alimento.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxviii{Obtienen provecho de ellos y bebidas. ¿No darán, pues, las gracias?\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxix{Pero han tomado dioses en lugar de tomar a Alá. Quizás, así, sean auxiliados...\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxx{No podrán auxiliarles. Al contrario, formarán un ejército al que se hará comparecer contra ellos.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxi{¡Que no te entristezca lo que digan! Nosotros sabemos tanto lo que ocultan como lo que manifiestan.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxii{¿No ve el hombre que le hemos creado de una gota? Pues ¡ahí le tienes, porfiador declarado!\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxiii{Nos propone una parábola y se olvida de su propia creación. Dice: «¿Quién dará vida a los huesos, estando podridos?»\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxiv{Di: «Les dará vida Quien los creó una vez primera -Él conoce bien toda creación-,\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxv{Quien os ha hecho fuego de un árbol verde del que, así, encendéis».\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxvi{¿Es que Quien ha creado los cielos y la tierra no será capaz de crear semejantes a ellos? ¡Claro que sí! Él es el Creador de todo, el Omnisciente.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxvii{Su orden, cuando quiere algo, le dice tan sólo: «¡Se!» Y es.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxviii{¡Gloria a Quien posee la realeza de todo! Y a Él seréis devueltos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxix{\basmalahes ¡Por los puestos en fila.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdccxc{que ahuyentan violentamente\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdccxci{y recitan una amonestación!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdccxcii{En verdad, vuestro Dios es Uno:\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdccxciii{Señor de los cielos, de la tierra y de lo que entre ellos está, Señor de los Orientes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdccxciv{Hemos engalanado el cielo más bajo con estrellas,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdccxcv{como protección contra todo demonio rebelde.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdccxcvi{Así, los demonios no pueden oír al Consejo Supremo, porque por todas partes se ven hostigados,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdccxcvii{repelidos. Tendrán un castigo perpetuo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdccxcviii{A menos que alguno se entere de algo por casualidad: a ese tal le perseguirá una llama de penetrante luz.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdccxcix{Pregúntales si crearlos a ellos ha resultado más difícil para Nosotros que crear a los otros. Los hemos creado de arcilla pegajosa.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdccc{Pero ¡no! Te asombras y ellos se mofan.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdccci{Si se les recuerda algo, no se acuerdan.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdcccii{Y, si ven un signo, lo ponen en ridículo,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdccciii{y dicen: «¡Esto no es sino manifiesta magia!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdccciv{Cuando muramos y seamos tierra y huesos, ¿se nos resucitará acaso?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdcccv{¿Y también a nuestros antepasados?»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdcccvi{Di: «¡Sí, y vosotros os humillaréis!»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdcccvii{Un solo Grito, nada más, y verán...\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdcccviii{Dirán: «¡Ay de nosotros! ¡Este es el día del Juicio!»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdcccix{«Este es el día del Fallo, que vosotros desmentíais».\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdcccx{«¡Congregad a los impíos, a sus consocios y lo que ellos servían,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdcccxi{en lugar de servir a Alá, y conducidles a la vía del fuego de la gehena!\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdcccxii{¡Detenedles, que se les va a pedir cuentas!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdcccxiii{«¿Por qué no os auxiliáis ahora mutuamente?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdcccxiv{Pero ¡no! Ese día querrán hacer acto de sumisión.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdcccxv{Y se volverán unos a otros para preguntarse.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdcccxvi{Dirán: «Venías a nosotros por la derecha».\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdcccxvii{Dirán: «¡No, no erais creyentes!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdcccxviii{Y no teníamos ningún poder sobre vosotros. ¡No! Erais un pueblo rebelde.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdcccxix{La sentencia de nuestro Señor se ha cumplido contra nosotros. Vamos, sí, a gustar...\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdcccxx{Os descarriamos. ¡Nosotros mismos estábamos descarriados!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxi{Ese día compartirán el castigo.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxii{Así haremos con los pecadores.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxiii{Cuando se les decía: «¡No hay más dios que Alá!» se mostraban altivos,\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxiv{y decían: «¿Vamos a dejar a nuestros dioses por un poeta poseso?»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxv{Pero ¡no! Él ha traído la Verdad y ha confirmado a los enviados.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxvi{¡Vais, sí, a gustar el castigo doloroso!\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxvii{No se os retribuirá, empero, sino por las obras que hicisteis.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxviii{En cambio, los siervos escogidos de Alá\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxix{tendrán un sustento conocido:\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxx{fruta. Y serán honrados\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxi{en los Jardines de la Delicia,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxii{en lechos, unos enfrente de otros,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxiii{haciéndose circular entre ellos una copa de agua viva,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxiv{clara, delicia de los bebedores,\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxv{que no aturdirá ni se agotará.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxvi{Tendrán a las de recatado mirar, de grandes ojos,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxvii{como huevos bien guardados.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxviii{Y se volverán unos a otros para preguntarse.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxix{Uno de ellos dirá: «Yo tenía un compañero\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdcccxl{que decía: '¿Acaso eres de los que confirman?\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdcccxli{Cuando muramos y seamos tierra y huesos, ¿se nos juzgará acaso?'»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlii{Dirá: «¿Veis algo desde ahí arriba?»\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdcccxliii{Mirará abajo y le verá en medio del fuego de la gehena.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmdcccxliv{Y dirá: «¡Por Alá, que casi me pierdes!\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlv{Si no llega a ser por la gracia de mi Señor, habría figurado yo entre los réprobos.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlvi{Pues ¡que! ¿No hemos muerto\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlvii{sólo una vez primera sin haber sufrido castigo?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlviii{¡Sí, éste es el éxito grandioso!»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlix{¡Vale la pena trabajar por conseguir algo semejante!\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmdcccl{¿Es esto mejor como alojamiento o el árbol de Zaqqum?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmdcccli{Hemos hecho de éste tentación para los impíos.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmdccclii{Es un árbol que crece en el fondo del fuego de la gehena,\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmdcccliii{de frutos parecidos a cabezas de demonios.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmdcccliv{De él comerán y llenarán el vientre.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmdccclv{Luego, deberán, además, una mezcla de agua muy caliente\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmdccclvi{y volverán, luego, al fuego de la gehena.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmdccclvii{Encontraron a sus padres extraviados\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmdccclviii{y corrieron tras sus huellas.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmdccclix{Ya se extraviaron la mayoría de los antiguos,\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmdccclx{aunque les habíamos enviado quienes advirtieran.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmdccclxi{¡Y mira cómo terminaron aquéllos que habían sido advertidos!\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmdccclxii{No, en cambio, los siervos escogidos de Alá.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmdccclxiii{Noé Nos había invocado. ¡Qué buenos fuimos escuchándole!\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmdccclxiv{Les salvamos, a él y a su familia, del grave apuro.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmdccclxv{Hicimos que sus descendientes sobrevivieran\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmdccclxvi{y perpetuamos su recuerdo en la posteridad.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmdccclxvii{¡Paz sobre Noé, entre todas las criaturas!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmdccclxviii{Así retribuimos a quienes hacen el bien.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmdccclxix{Es uno de Nuestros siervos creyentes.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmdccclxx{Luego, anegamos a los otros.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxi{Abraham era, sí, de los suyos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxii{Cuando vino a su Señor con corazón sano.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxiii{Cuando dijo a su padre y a su pueblo: «¿Qué servís?\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxiv{¿Queréis, mentirosamente, dioses en lugar de a Alá?\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxv{¿Qué opináis, pues, del Señor del universo?»\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxvi{Dirigió una mirada a los astros\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxvii{y dijo: «Voy a encontrarme indispuesto».\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxviii{y dieron media vuelta, apartándose de él.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxix{Entonces, se volvió hacia sus dioses y dijo: «¿No coméis?\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxx{¿Por qué no habláis?»\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxi{Y se precipitó contra ellos golpeándolos con la diestra.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxii{Corrieron hacia él.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxiii{Dijo: «¿Servís lo que vosotros mismos habéis esculpido,\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxiv{mientras que Alá os ha creado, a vosotros y lo que hacéis?»\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxv{Dijeron: «¡Hacedle un horno y arrojadle al fuego llameante!»\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxvi{Quisieron emplear mañas contra él, pero hicimos que fueran ellos los humillados.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxvii{Dijo: «¡Voy a mi Señor! ¡Él me dirigirá!\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxviii{¡Señor! ¡Regálame un hijo justo!»\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxix{Entonces, le dimos la buena nueva de un muchacho benigno.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmmdcccxc{Y, cuando tuvo bastante edad como para ir con su padre, dijo: «¡Hijito! He soñado que te inmolaba. ¡Mira, pues, qué te parece!» Dijo: «¡Padre! ¡Haz lo que se te ordena! Encontrarás, si Alá quiere, que soy de los pacientes».\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmmdcccxci{Cuando ya se habían sometido los dos y le había puesto contra el suelo...\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcii{Y le llamamos: «¡Abraham!\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmmdcccxciii{Has realizado el sueño. Así retribuimos a quienes hacen el bien».\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmmdcccxciv{Si, ésta era la prueba manifiesta.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcv{Le rescatamos mediante un espléndido sacrificio\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcvi{y perpetuamos su recuerdo en la posteridad.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcvii{¡Paz sobre Abraham!\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcviii{Así retribuimos a quienes hacen el bien.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcix{Es uno de Nuestros siervos creyentes.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmmcm{Y le anunciamos el nacimiento de Isaac, profeta, de los justos.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmmcmi{Les bendijimos, a él y a Isaac. Y entre sus descendientes unos hicieron el bien, pero otros fueron claramente injustos consigo mismos.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmmcmii{Ya agraciamos a Moisés y a Aarón.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmmcmiii{Les salvamos, a ellos y a su pueblo, de un grave apuro.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmmcmiv{Les auxiliamos y fueron ellos los que ganaron.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmmcmv{Les dimos la Escritura clara.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmmcmvi{Les dirigimos por la vía recta\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmmcmvii{y perpetuamos su recuerdo en la posteridad.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmmcmviii{¡Paz sobre Moisés y Aarón!\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmmcmix{Así retribuimos a quienes hacen el bien.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmmcmx{Fueron dos de Nuestros siervos creyentes.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmmcmxi{Elías fue, ciertamente, uno de los enviados.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmmcmxii{Cuando dijo a su pueblo: «¿Es que no vais a temer a Alá?\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmmcmxiii{¿Vais a invocar a Baal, dejando al Mejor de los creadores:\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmmcmxiv{a Alá, Señor vuestro y Señor de vuestros antepasados?»\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmmcmxv{Le desmintieron y se les hará, ciertamente, comparecer;\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmmcmxvi{no, en cambio, a los siervos escogidos de Alá.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmmcmxvii{Y perpetuamos su recuerdo en la posteridad.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mmmcmxviii{¡Paz sobre Elías!\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mmmcmxix{Así retribuimos a quienes hacen el bien.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mmmcmxx{Fue uno de Nuestros siervos creyentes.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mmmcmxxi{Lot fue, ciertamente, uno de los enviados.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mmmcmxxii{Cuando les salvamos, a él y a su familia, a todos,\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mmmcmxxiii{salvo a una vieja entre los que se rezagaron.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mmmcmxxiv{Luego, aniquilamos a los demás.\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@mmmcmxxv{Pasáis, sí, sobre ellos, mañana\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@mmmcmxxvi{y tarde. ¿Es que no comprendéis?\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@mmmcmxxvii{Jonás fue, ciertamente, uno de los enviados.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@mmmcmxxviii{Cuando se escapó a la nave abarrotada.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@mmmcmxxix{Echó suertes y perdió.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@mmmcmxxx{El pez se lo tragó, había incurrido en censura.\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxi{Si no hubiera sido de los que glorifican,\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxii{habría permanecido en su vientre hasta el día de la Resurrección.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxiii{Le arrojamos, indispuesto, a una costa desnuda\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxiv{e hicimos crecer sobre él una calabacera.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxv{Y le enviamos a cien mil o más.\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxvi{Creyeron y les permitimos gozar por algún tiempo.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxvii{¡Pregúntales, pues, si tu Señor tiene hijas como ellos tienen hijos,\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxviii{si hemos creado a los ángeles de sexo femenino en su presencia!\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxix{Mienten tanto que llegan a decir:\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@mmmcmxl{«Alá ha engendrado». ¡Mienten, ciertamente!\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@mmmcmxli{¿Iba Él a preferir tener hijas a tener hijos?\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@mmmcmxlii{¿Qué os pasa? ¿Qué manera de juzgar es ésa?\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@mmmcmxliii{¿Es que no os dejaréis amonestar?\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@mmmcmxliv{O ¿es que tenéis una autoridad clara?\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@mmmcmxlv{¡Traed, pues, vuestra Escritura, si es verdad lo que decís!\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@mmmcmxlvi{Han establecido un parentesco entre Él y los genios. Pero saben los genios que se les hará comparecer\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@mmmcmxlvii{-¡gloria a Alá, que está por encima de lo que Le atribuyen!-;\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@mmmcmxlviii{no, en cambio, a los siervos escogidos de Alá.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@mmmcmxlix{Vosotros y lo que servís,\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@mmmcml{no podréis seducir contra Él\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@mmmcmli{sino a quien vaya a arder en el fuego de la gehena.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@mmmcmlii{«No hay nadie entre nosotros que no tenga un lugar señalado.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@mmmcmliii{Sí, somos nosotros los que están formados.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@mmmcmliv{Sí, somos nosotros los que glorifican».\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@mmmcmlv{Sí, solían decir:\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@mmmcmlvi{«Si tuviéramos una amonestación que viniera de los antiguos,\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@mmmcmlvii{seríamos siervos escogidos de Alá».\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@mmmcmlviii{Pero no creen en ella. ¡Van a ver...!\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@mmmcmlix{Ha precedido ya Nuestra palabra a Nuestros siervos, los enviados:\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@mmmcmlx{son ellos los que serán, ciertamente, auxiliados,\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@mmmcmlxi{y es Nuestro ejército el que, ciertamente, vencerá.\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@mmmcmlxii{¡Apártate, pues, de ellos, por algún tiempo,\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@mmmcmlxiii{y obsérvales! ¡Van a ver...!\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@mmmcmlxiv{¿Quieren, entonces, adelantar Nuestro castigo?\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@mmmcmlxv{Cuando descargue sobre ellos, mal despertar tendrán los que ya habían sido advertidos.\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@mmmcmlxvi{¡Apártate, pues, de ellos, por algún tiempo,\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@mmmcmlxvii{y observa! ¡Van a ver...!\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@mmmcmlxviii{¡Gloria a tu Señor, Señor del Poder, que está por encima de lo que Le atribuyen!\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@mmmcmlxix{Y ¡paz sobre los enviados!\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@mmmcmlxx{Y ¡alabado sea Alá, Señor del universo!\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxi{\basmalahes s. ¡Por el Corán, que contiene la Amonestación...!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxii{Por los infieles están llenos de orgullo y en oposición.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxiii{¡A cuántas generaciones, antes de ellos, hemos hecho perecer! Invocaron cuando ya no había tiempo para salvarse.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxiv{Se asombran de que uno salido de ellos haya venido a advertirles. Y dicen los infieles: «¡Éste es un mago mentiroso!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxv{¡Quiere reducir los dioses a un Dios Uno? ¡Es algo, ciertamente, asombroso!»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxvi{Sus dignatarios se fueron: «¡Id y manteneos fieles a vuestros dioses! ¡Esto es algo deseable!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxvii{No oímos que ocurriera tal cosa en la última religión. Esto no es más que una superchería.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxviii{¿Se le ha revelado la Amonestación a él, de entre nosotros?» ¡Sí! ¡Dudan de Mi Amonestación! ¡No, aún no han gustado Mi castigo!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxix{¿O tienen los tesoros de misericordia de tu Señor, el Poderoso, el Munífico?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxx{¿O poseen el dominio de los cielos; de la tierra y de lo que entre ellos hay? Pues que suban por las cuerdas.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxi{Todo un ejército de coalicionistas será aquí mismo derrotado.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxii{Antes de ellos, otros desmintieron: el pueblo de Noé, los aditas y Faraón, el de las estacas,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxiii{los tamudeos, el pueblo de Lot, los habitantes de la Espesura. Ésos eran los coalicionistas.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxiv{No hicieron todos sino desmentir a los enviados y se cumplió Mi castigo.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxv{No esperarán éstos más que un solo Grito, que no se repetirá.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxvi{Dicen: «¡Señor! ¡Anticípanos nuestra parte antes del día de la Cuenta!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxvii{Ten paciencia con lo que dicen y recuerda a Nuestro siervo David, el fuerte. Su arrepentimiento era sincero.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxviii{Sujetamos, junto con él, las montañas para que glorificaran por la tarde y por la mañana.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxix{Y los pájaros, en bandadas. Todo vuelve a Él.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcmxc{Consolidamos su dominio y le dimos la sabiduría y la facultad de arbitrar.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcmxci{¿Te has enterado de la historia de los litigantes? Cuando subieron a palacio.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcmxcii{Cuando entraron adonde estaba David y éste se asustó al verles. Dijeron: «¡No tengas miedo! Somos dos partes litigantes, una de las cuales ha ofendido a la otra. Decide, pues, entre nosostros según justicia, imparcialmente, y dirígenos a la vía recta.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcmxciii{éste es mi hermano. Tiene noventa y nueve ovejas y yo una oveja. Dijo: '¡Confíamela!' Y me gana a discutir».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcmxciv{Dijo: «Sí, ha sido injusto contigo pidiéndote que agregaras tu oveja a las suyas». En verdad, muchos consocios se causan daño unos a otros; no los que creen y obran bien, pero ¡que pocos son éstos! David comprendió que sólo habíamos querido probarle y pidió perdón a su Señor. Cayó de rodillas y se arrepintió.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcmxcv{Se lo perdonamos y tiene un sitio junto a Nosotros y un bello lugar de retorno.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcmxcvi{¡David! Te hemos hecho sucesor en la tierra. ¡Decide, pues, entre los hombres según justicia! ¡No sigas la pasión! Si no, te extraviará del camino de Alá. Quienes se extravíen del camino de Alá tendrán un severo castigo. Por haber olvidado el día de la Cuenta.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcmxcvii{No hemos creado en vano el cielo, la tierra y lo que entre ellos está. Así piensan los infieles. Y ¡ay de los infieles, por el Fuego...!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcmxcviii{¿Trataremos a quienes creen y obran bien igual que a quienes corrompen en la tierra, a los temerosos de Alá igual que a los pecadores?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcmxcix{Una Escritura que te hemos revelado, bendita, para que mediten en sus aleyas y para que los dotados de intelecto se dejen amonestar.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmm{A David le regalamos Salomón. ¡Qué siervo tan agradable! Su arrepentimiento era sincero.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmi{Cuando un anochecer le presentaron unos corceles de raza.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmii{Y dijo: «Por amor a los bienes he descuidado el recuerdo de mi Señor hasta que se ha escondido tras el velo.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmiii{¡Traédmelos!» Y se puso a desjarretarlos y degollarlos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmiv{Aún probamos a Salomón cuando asentamos en su trono a su sosia. Luego, se arrepintió.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmv{«¡Señor!» dijo. «¡Perdóname y regálame un dominio tal que a nadie después de mí le esté bien. Tú eres el Munífico».\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmvi{Sujetamos a su servicio el viento, que soplaba suavemente allí donde él quería, a una orden suya.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmvii{Y los demonios, constructores y buzos de toda clase,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmviii{y otros, encadenados juntos.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmix{«¡Esto es don Nuestro! ¡Agracia, pues, o retén, sin limitación!»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmx{Tiene un sitio junto a Nosotros y un bello lugar de retorno.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmxi{¡Y recuerda a nuestro siervo Job! Cuando invocó a su Señor. «El Demonio me ha infligido una pena y un castigo».\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmxii{«¡Golpea con el pie! Ahí tienes agua fresca para lavarte y para beber».\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmxiii{Le regalamos su familia y otro tanto, como misericordia venida de Nosotros y como amonestación para los dotados de intelecto.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmxiv{Y: «¡Toma en tu mano un puñado de hierba, golpea con él y no cometas perjurio!» Le encontramos paciente. ¡Qué siervo tan agradable! Su arrepentimiento era sincero.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmxv{Y recuerda a Nuestros siervos Abraham, Isaac y Jacob, fuertes y clarividentes.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmxvi{Les hicimos objeto de distinción al recordarles la Morada.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmxvii{Están junto a Nosotros, de los elegidos mejores.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmxviii{Y recuerda a Ismael, Eliseo y Dulkifl, todos ellos de los mejores.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmxix{Esto es una amonestación. Los que teman a Alá tendrán, ciertamente, un bello lugar de retorno:\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmxx{los jardines del edén, cuyas puertas estarán abiertas para ellos,\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmxxi{y en los que, reclinados, pedirán fruta abundante y bebida.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmxxii{Junto a ellos estarán las de recatado mirar, de una misma edad.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmxxiii{Esto es lo que se os promete para el día de la Cuenta.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmxxiv{En verdad, éste será Nuestro sustento, sin fin.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmxxv{Así será. Los rebeldes, en cambio, tendrán un mal lugar de retorno:\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmxxvi{la gehena, en la que arderán. ¡Qué mal lecho...!\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmxxvii{Esto ¡que lo gusten!: agua muy caliente, hediondo líquido\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmxxviii{y otras muchas cosas por el estilo.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmxxix{«He ahí a otra muchedumbre que se precipita con vosotros. No hay bienvenida para ellos. Arderán en el Fuego».\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmxxx{Dirán: «¡No! ¡No hay bienvenida para vosotros! ¡Sois vosotros los que nos habéis preparado esto! ¡Qué mala morada...!»\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmxxxi{«¡Señor!» dirán, «a los que nos han preparado esto ¡dóblales el castigo en el Fuego!»\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmxxxii{Dirán: «¿Cómo es que no vemos aquí a hombres que teníamos por malvados,\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmxxxiii{de los que nos burlábamos? ¿O es que se desvían de ellos las miradas?»\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmxxxiv{Sí, esto es verdad: la discusión entre los moradores del Fuego.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmxxxv{Di: «Yo no soy más que uno que advierte. No hay ningún otro dios que Alá, el Uno, el Invicto,\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmxxxvi{el Señor de los cielos, de la tierra y de lo que entre ellos está, el Poderoso, el Indulgente».\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmxxxvii{Di: «es una noticia enorme,\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmxxxviii{de la cual os apartáis.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmxxxix{Yo no tenía conocimiento del Consejo Supremo, cuando discutían unos con otros.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmxl{Lo único que se me ha revelado es que soy un monitor que habla claro».\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmxli{Cuando tu Señor dijo a los ángeles: «Voy a crear a un mortal de arcilla\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmxlii{y, cuando lo haya formado armoniosamente e infundido en él de Mi Espíritu, ¡caed prosternados ante él!»\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmxliii{Los ángeles se prosternaron, todos juntos,\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmxliv{salvo Iblis, que se mostró altivo y fue de los infieles.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmxlv{Dijo: «¡Iblis! ¿Qué es lo que te ha impedido prosternarte ante lo que con Mis manos he creado? ¿Ha sido la altivez, la arrogancia?»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmxlvi{Dijo: «Yo soy mejor que él. A mí me creaste de fuego, mientras que a él le creaste de arcilla».\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmxlvii{Dijo: «¡Sal de aquí! ¡Eres un maldito!\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmxlviii{¡Mi maldición te perseguirá hasta el día del Juicio!»\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmxlix{Dijo: «¡Señor, déjame esperar hasta el día de la Resurrección!»\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmml{Dijo: «Entonces, serás de aquéllos a quienes se ha concedido una prórroga\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmli{hasta el día del tiempo señalado».\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmlii{Dijo: «¡Por Tu poder, que he de descarriarles a todos,\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmliii{salvo a aquéllos que sean siervos Tuyos escogidos!»\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmliv{Dijo: «La verdad es -y digo verdad-\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmlv{que he de llenar la gehena contigo y con todos aquéllos que te hayan seguido».\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmlvi{Di: «Yo no os pido, a cambio, ningún salario ni me arrogo nada.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmmlvii{Ello no es más que una amonestación dirigida a todo el mundo.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmmlviii{Y os enteraréis, ciertamente, de lo que anuncia dentro de algún tiempo».\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmmlix{\basmalahes La revelación de la Escritura procede de Alá, el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmlx{Te hemos revelado la Escritura con la verdad. ¡Sirve, pues, a Alá, rindiéndole culto sincero!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmlxi{El culto puro ¿no se debe a Alá? Los que han tomado amigos en lugar de tomarle a Él -«Sólo les servimos para que nos acerquen bien a Alá»-... Alá decidirá entre ellos sobre aquello en que discrepaban. Alá no guía al que miente, al infiel pertinaz.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmlxii{Si Alá hubiera deseado adoptar un hijo, habría elegido entre lo que ha creado lo que hubiera querido. ¡Gloria a Él! Es Alá, el Uno, el Invicto.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmlxiii{Ha creado con un fin los cielos y la tierra. Hace que la noche suceda al día y el día a la noche. Ha sujetado el sol y la luna, prosiguiendo cada uno su curso hacia un término fijo. ¿No es Él el Poderoso, el Indulgente?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmlxiv{Os ha creado de una sola persona, de la que ha sacado a su cónyuge. Os ha dado, de los rebaños, cuatro parejas. Os ha creado en el seno de vuestras madres, creación tras creación, en triple oscuridad. Tal es Alá, vuestro Señor. Suyo es el domino. No hay más dios que Él. ¡Cómo, podéis pues, ser tan desviados!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmlxv{Si sois ingratos,... Alá puede prescindir de vosotros. No acepta la ingratitud de Sus siervos. En cambio, si sois agradecidos, os lo aceptará complacido. Nadie cargará con la carga ajena. Al final, volveréis a vuestro Señor y ya os informará Él de lo que hacíais. Él sabe bien lo que los pechos encierran.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmlxvi{Cuando sufre el hombre una desgracia, invoca a su Señor, volviéndose a Él arrepentido. Luego, cuando Él le ha dispensado una gracia Suya, se olvida del objeto de su invocación anterior y atribuye iguales a Alá para extraviar a otros de Su camino. Di: «¡Goza un poco de tu incredulidad! Serás de los moradores del Fuego».\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmlxvii{¿Es el devoto, que vela por la noche, postrado o de pie, que teme la otra vida y espera en la misericordia de su Señor...? Di: «¿Son iguales los que saben y los que no saben?» Sólo se dejan amonestar los dotados de intelecto.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmlxviii{Di: «¡Siervos Míos que creéis! ¡Temed a vuestro Señor! Quienes obren bien tendrán en la vida de acá una bella recompensa. La tierra de Alá es vasta. Los pacientes recibierán una recompensa ilimitada».\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmlxix{Di: «He recibido la orden de servir a Alá, rindiéndole culto sincero.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmlxx{He recibido la orden de ser el primero en someterse a Él».\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmlxxi{Di: «Temo, si desobedezco a mi Señor, el castigo de un día terrible».\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmlxxii{Di: «A Alá sirvo, rindiéndole culto sincero.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmlxxiii{¡Servid, pues, en lugar de servirle a Él, lo que queráis!» Di: «Perderán quienes se pierdan a sí mismos y pierdan a sus familias el día de la Resurrección. ¿No es ésa una pérdida manifiesta?»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmlxxiv{Por encima y por debajo, tendrán pabellones de fuego. Así atemoriza Alá Sus siervos. «¡Temedme, pues, siervos!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmlxxv{¡Buena nueva para quienes hayan evitado a los taguts, rehusando sevirles, y se hayan vuelto arrepentidos a Alá! ¡Y anuncia la buena nueva a Mis siervos,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmlxxvi{que escuchan la Palabra y siguen lo mejor de ella! ¡ésos son los que Alá ha dirigido! ¡ésos son los dotados de intelecto!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmlxxvii{Aquél contra quien se cumpla la sentencia del castigo... ¿Podrás salvar tú a quien está en el Fuego?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmlxxviii{Pero los que temieron a su Señor estarán en cámaras altas sobre las que hay construidas otras cámaras altas, a cuyos pies fluyen arroyos. ¡Promesa de Alá! Alá no falta a Su promesa.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmlxxix{¿No ves cómo hace Alá bajar agua del cielo y Él la conduce a manantiales en la tierra? Mediante ella saca cereales de clases diversas, que, más tarde, se marchitan y ves que amarillean. Luego, hace de ellos paja seca. Hay en ello, sí, una amonestación para los dotados de intelecto.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmlxxx{¿Es que aquél cuyo pecho Alá ha abierto al islam y camina así a la luz de su Señor...? ¡Ay de los que tienen un corazón insensible a la amonestación de Alá! Están evidentemente extraviados.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxi{Alá ha revelado el más bello relato, una Escritura cuyas aleyas armonizan y se reiteran. Al oírla, se estremecen quienes tienen miedo de su Señor; luego, se calman en cuerpo y en espíritu al recuerdo de Alá. Ésa es la dirección de Alá, por la que dirige a quien Él quiere. En cambio, aquél a quien Alá extravía no podrá encontrar quien le dirija.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxii{¿Es que quien trata de protegerse con su propia persona contra el mal castigo del día de la Resurrección...? Se dirá a los impíos: «¡Gustad lo que habéis merecido!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxiii{Sus predecesores desmintieron y el castigo les vino de donde no lo presentían.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxiv{Alá les hizo gustar la ignominia en la vida de acá, pero, ciertamente, el castigo de la otra vida es mayor. Si supieran...\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxv{En este Corán hemos dado a los hombres toda clase de ejemplos. Quizás, así, se dejen amonestar.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxvi{Es un Corán árabe, exento de recovecos. Quizás, así, teman a Alá.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxvii{Alá propone el símil de un hombre que pertenece a socios que no están de acuerdo y el hombre que pertenece exclusivamente a uno. ¿Son ambos similares? ¡Alabado sea Alá! Pero la mayoría no saben.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxviii{Tú tienes que morir y ellos tienen que morir.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxix{Luego, el día de la Resurrección, disputaréis junto a vuestro Señor.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmxc{¿Hay alguien que sea más impío que , quien miente contra Alá y que, cuando viene a él la Verdad, la desmiente? ¿No hay en la gehena una morada para los infieles?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmxci{Quienes traen la Verdad y la confirman, ésos son los temerosos de Alá.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmxcii{Tendrán junto a su Señor lo que deseen -ésa será la retribución de quienes hacen el bien-:\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmxciii{que Alá borre sus peores obras y les retribuya con arreglo a sus mejores obras.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmxciv{¿No basta Alá a Su siervo? Quieren intimidarte con otros fuera de Él. Pero aquél a quien Alá extravía no podrá encontrar quien le dirija.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmxcv{Y a aquél a quien Alá dirija nadie podrá extraviar. ¿Acaso no es Alá poderoso, vengador?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmxcvi{Si les preguntas: «¿Quién ha creado los cielos y la tierra?», seguro que dicen: «¡Alá!» Di: «Y ¿qué os parece? Si Alá me deseara una desgracia, las que invocáis en lugar de invocarle a Él ¿podrían impedirlo? Y, si Él quisiera hacerme objeto de una misericordia, podrían ellas evitarlo?» Di: «¡Alá me basta! Quienes confían, confían en É».\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmxcvii{Di: «¡Pueblo! ¡Obrad según vuestra situación! Yo también obraré... Y pronto veréis\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmxcviii{quién recibirá un castigo humillante y sobre quién recaerá un castigo permanente».\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmxcix{Te hemos revelado la Escritura destinada a los hombres con la Verdad. Quien sigue la vía recta, la sigue en provecho propio y quien se extravía se extravía, en realidad, en detrimento propio. Tú no eres su protector.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmc{Alá llama a las almas cuando mueren y cuando, sin haber muerto, duermen. Retiene aquéllas cuya muerte ha decretado y remite las otras a un plazo fijo. Ciertamente, hay en ello signos para gente que reflexiona.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmci{¿Tomarán los infieles a otros intercesores en lugar de tomar a Alá? Di: «¿Y si no pudieran nada ni razonaran?»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcii{Di: «Toda intercesión proviene de Alá. Suyo es el dominio de los cielos y de la tierra. Al fin, a Él seréis devueltos».\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmciii{Cuando Alá Solo es mencionado, se oprime el corazón de quienes no creen en la otra vida, pero cuando se mencionan otros fuera de Él, he aquí que se regocijan.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmciv{Di: «¡Alá, creador de los cielos y de la tierra! ¡El Conocedor de lo oculto y de lo patente! Tú decidirás entre Tus siervos sobre aquello en que discrepaban».\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcv{Si los impíos poseyeran todo cuanto hay en la tierra y aun otro tanto, lo ofrecerían como rescate el día de la Resurrección para librarse del mal castigo. Alá les manifestará aquello con que no contaban.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcvi{Se les mostrará el mal que cometieron y se verán cercados por aquello de que se burlaban.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcvii{Cuando el hombre sufre una desgracia, Nos invoca. Luego, cuando le dispensamos una gracia Nuestra, dice: «¡Lo que se me ha dado lo debo sólo a ciencia!» ¡No! Es una prueba, pero la mayoría no saben.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcviii{Lo mismo decían los que fueron antes de ellos y sus posesiones no les sirvieron de nada.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcix{Les alcanzó el mal resultante de sus acciones y los que de éstos hayan sido impíos serán alcanzados por el mal resultante de sus acciones y no podrán escapar.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcx{¿No saben que Alá dispensa el sustento a quien Él quiere: a unos con largueza, a otros con mesura? Ciertamente, hay en ello signos para gente que cree.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcxi{Di: «¡Siervos que habéis prevaricado en detrimento propio! ¡No desesperéis de la misericordia de Alá! Alá perdona todos los pecados. Él es el Indulgente, el Misericordioso».\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcxii{¡Volveos a vuestro Señor arrepentidos! ¡Someteos a Él antes de que os alcance el castigo, porque luego no seréis auxiliados!\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcxiii{¡Seguid lo mejor que vuestro Señor os ha revelado, antes de que os venga el castigo de repente, sin presentirlo!\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcxiv{No sea que alguien diga; «¡Ay de mí que fui tan remiso para con Alá! ¡Yo era de los que se burlaban!»,\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcxv{o diga: «¡Si Alá me hubiera dirigido, habría sido de los que Le temen!»,\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcxvi{o diga, al ver el castigo: «¡Si pudiera regresar, sería de quienes hacen el bien!»\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcxvii{«Pero, si ya te vinieron Mis signos y los desmentiste, mostrándote altivo y siendo de los infieles...»\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcxviii{El día de la Resurrección verás a quienes mintieron contra Alá, hosco el rostro. ¿No hay en la gehena una morada para los soberbios?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmcxix{Alá salvará a quienes Le hayan temido, librándoles del castigo: no sufrirán mal ni estarán tristes.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmcxx{Alá es creador de todo y vela por todo.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmcxxi{Suyas son las llaves de los cielos y de la tierra. Los que no crean en los signos de Alá, ésos serán los que pierdan.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmcxxii{Di: «¿Es que me ordenáis que sirva a otro diferente de Alá, ¡ignorantes!?»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcxxiii{A ti y a los que te precedieron se os ha revelado: «Si asocias a Alá otros dioses, tus obras serán vanas y serás, sí, de los que pierdan.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcxxiv{Antes bien, ¡a Alá sirve y sé de los agradecidos!»\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcxxv{No han valorado a Alá debidamente. El día de la Resurrección, contendrá toda la tierra en Su puño, los cielos estarán plegados en Su diestra. ¡Gloria a É! ¡Está por encima de lo que Le asocian!\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcxxvi{Se tocará la trompeta y los que estén en los cielos y en la tierra caerán fulminados, excepto los que Alá quiera. Se tocará la trompeta otra vez y he aquí que se pondrán en pie, mirando.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmcxxvii{La tierra brillará con la luz de su Señor. Se sacará la Escritura. Se hará venir a los profetas y a los testigos. Se decidirá entre ellos según justicia y no serán tratados injustamente.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcxxviii{Cada uno recibirá conforme a sus obras. Él sabe bien lo que hacen.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcxxix{Los infieles serán conducidos en grupos a la gehena. Hasta que, llegados a ella, se abrirán las puertas y sus guardianes les dirán: «¿No vinieron a vosotros enviados, salidos de vosotros, para recitaros las aleyas de vuestro Señor y preveniros contra el encuentro de éste vuestro día?» Dirán: «¡Claro que sí!» Pero se cumplirá la sentencia del castigo contra los infieles.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmcxxx{Se dirá: «¡Entrad por las puertas de la gehena, para estar en ella eternamente!» ¡Qué mala es la morada de los soberbios!\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxi{Pero los que hayan temido a su Señor, serán conducidos en grupos al Jardín. Hasta que, llegados a él, se abrirán sus puertas y sus guardianes les dirán: «¡Paz sobre vosotros! Fuisteis buenos. ¡Entrad, pues, en él, por toda la eternidad!»\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxii{Y dirán: «¡Alabado sea Alá, Que nos ha cumplido Su promesa y nos ha dado la tierra en herencia. Podemos establecernos en el Jardín donde queramos». ¡Qué grata es la recompensa de los que obran bien!\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxiii{Verás a los ángeles, yendo alrededor del Trono, celebrando las alabanzas de su Señor. Se decidirá entre ellos según justicia y se dirá: «¡Alabado sea Alá, Señor del universo!»\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxiv{\basmalahes hm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxv{La revelación de la Escritura procede de Alá, el Poderoso, el Omnisciente.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxvi{Que perdona el pecado, acepta el arrepentimiento, es severo en castigar y lleno de poder. No hay más dios que Él. ¡Él es el fin de todo!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxvii{No discuten sobre los signos de Alá sino los infieles. ¡Que sus idas y venidas por el país no te turben!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxviii{Antes de ellos, ya el pueblo de Noé había desmentido. Luego, también los coalicionistas. Los miembros de cada comunidad habían planeado apoderarse del enviado que se les había mandado. Y discutieron con argucias para, así, derribar la Verdad. Entonces, Yo me los llevé y ;¡cuál no fue Mi castigo!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxix{Así se cumplió la sentencia de tu Señor contra los infieles: que serían los moradores del Fuego.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcxl{Los que llevan el Trono y los que están a su alrededor celebran las alabanzas de su Señor, creen en Él y Le piden que perdone a los creyentes: «¡Señor! Tú lo abarcas todo en Tu misericordia y en Tu ciencia. ¡Perdona, pues, a los que se arrepienten y siguen Tu camino! ¡Líbrales del castigo del fuego de la gehena!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcxli{¡Señor! ¡Introdúceles en los jardines del edén que les prometiste, junto con aquéllos de sus padres, esposas y descendientes que fueron buenos! Tú eres el Poderoso, el Sabio.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcxlii{¡Líbrales de mal! Ese día, aquél a quien hayas librado de mal será objeto de Tu misericordia. ¡Ése es el éxito grandioso!»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcxliii{A los que no hayan creído se les gritará: «El aborrecimiento que Alá os tiene es mayor que el aborrecimiento que os tenéis a vosotros mismos, por cuanto, invitados a creer, no creísteis».\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcxliv{Dirán: «¡Señor! Nos has hecho morir dos veces y vivir otras dos. Confesamos, pues, nuestros pecados. ¿Hay modo de salir?»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcxlv{Esto os pasa porque, cuando se invocaba a Alá Solo, no creíais, mientras que, si se Le asociaban otros dioses, creíais. La decisión, pues, pertenece a Alá, el Altísimo, el Grande.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcxlvi{Él es Quien os muestra Sus signos, Quien os hace bajar del cielo sustento. Pero no se deja amonestar sino quien vuelve a Él arrepentido.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcxlvii{Invocad, pues, a Alá, rindiéndole culto sincero, a despecho de los infieles.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcxlviii{De elevada dignidad y Señor del Trono, echa el Espíritu que procede de Su orden sobre quien Él quiere de Sus siervos, para que prevenga contra el día del Encuentro.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcxlix{Ese día surgirán, sin que nada de ellos pueda ocultarse a Alá. Ese día, ¿de quién será el dominio? ¡De Alá, el Uno, el Invicto!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcl{Ese día cada uno será retribuido según sus méritos. ¡Nada de injusticias ese día! Alá es rápido en ajustar cuentas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcli{Prevénles contra el día de la Inminente, cuando, angustiados, se les haga un nudo en la garganta. No tendrán los impíos ningún amigo ferviente ni intercesor que sea escuchado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmclii{Conoce la perfidia de los ojos y lo que ocultan los pechos.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcliii{Alá decide según justicia. En cambio, los otros que ellos invocan en lugar de invocarle a Él no pueden decidir nada. Alá es Quien todo lo oye, Quien todo lo ve.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcliv{Pues, ¡qué! ¿No han ido por la tierra y mirado cómo terminaron sus antecesores? Eran más poderosos y dejaron más huellas en la tierra. Entonces, Alá les sorprendió por sus pecados y no hubo quien pudiera protegerles contra Alá.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmclv{Es que cuando los enviados vinieron a ellos con las pruebas claras, no creyeron y Alá les sorprendió. Es fuerte y castiga severamente.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmclvi{Enviamos Moisés con Nuestros signos y con una autoridad manifiesta\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmclvii{a Faraón, a Hamán y a Coré. Ellos dijeron: «Un mago mentiroso».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmclviii{Cuando les trajo la verdad de Nosotros, dijeron: «¡Matad a los hijos varones de los que creen como él y dejad con vida a sus mujeres!» Pero la artimaña de los infieles fue inútil.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmclix{Faraón dijo: «¡Dejadme que mate a Moisés, y que invoque él a su Señor! Temo que cambie vuestra religión, o que haga aparecer la corrupción en el país».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmclx{Moisés dijo: «Me refugio en mi Señor y Señor vuestro contra todo soberbio que no cree en el día de la Cuenta».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmclxi{Un hombre creyente de la familia de Faraón, que ocultaba su fe, dijo: «¿Vais a matar a un hombre por el mero hecho de decir 'Mi Señor es Alá' siendo así que os ha traído las pruebas claras de vuestro Señor? Si miente, su mentira recaerá sobre él. Pero, si dice verdad, os alcanzará algo de aquello con que os amenaza. Alá no dirige al inmoderado, al mentiroso.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmclxii{¡Pueblo! Habiendo vencido en la tierra, vuestro es el dominio hoy. Pero, cuando nos alcance el rigor de Alá, ¿quién nos librará de él?» Faraón dijo: «Yo no os hago ver sino lo que yo veo y no os dirijo sino por el camino recto».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmclxiii{El que creía dijo: «¡Pueblo! Temo por vosotros un día como el de los coalicionistas,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmclxiv{como ocurrió al pueblo de Noé, a los aditas, a los tamudeos y a los que vinieron después de ellos. Alá no quiere la injusticia para Sus siervos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmclxv{¡Pueblo! Temo que viváis el día de la Llamada Mutua,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmclxvi{día en que volveréis la espalda y no tendréis a nadie que os proteja de Alá. Aquél a quien Alá extravía no tendrá quien le dirija.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmclxvii{Ya antes había venido José a vosotros con las pruebas claras y siempre dudasteis de lo que os trajo. Hasta que, cuando pereció dijisteis: 'Alá no mandará a ningún enviado después de él'. Así extravía Alá al inmoderados al escéptico».\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmclxviii{Quienes discuten sobre los signos de Alá sin haber recibido autoridad... Es muy aborrecible para Alá y para los creyentes. Así sella Alá el corazón de todo soberbio, de todo tirano.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmclxix{Faraón dijo: «¡Hamán! ¡Constrúyeme una torre! Quizás, así, alcance las vías,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmclxx{Las vías que conducen al cielo, y suba al Dios de Moisés. Sí, creo que éste miente». Así se engalanó a Faraón la maldad de su acto y fue apartado del Camino. Pero se malograron sus artimañas.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmclxxi{El que creía dijo: «¡Pueblo! ¡Seguidme! Os dirigiré por el camino recto.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmclxxii{¡Pueblo! Esta vida de acá no es sino breve disfrute, mientras que la otra vida es la Morada de la Estabilidad.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmclxxiii{Quien obre mal no será retribuido sino con una pena similar. En cambio, los creyentes, varones o hembras, que obren bien entrarán en el Jardín y serán proveídos en él sin medida.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmclxxiv{¡Pueblo! ¿Como es que yo os llamo a la salvación, mientras que vosotros me llamáis al Fuego?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmclxxv{Me llamáis a que sea infiel a Alá y a que Le asocie algo de lo que no tengo conocimiento, mientras que yo os llamo al Poderoso, al Indulgente.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmclxxvi{¡En verdad, aquello a lo que me llamáis no merece ser invocado, ni en la vida de acá ni en la otra! Sí, volveremos a Alá y los inmoderados serán los moradores del Fuego.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmclxxvii{Entonces, os acordaréis de lo que os digo. En cuanto a mí, me pongo en manos de Alá. Alá ve bien a Sus siervos».\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmclxxviii{Alá le preservó de los males que habían tramado y sobre la gente de Faraón se abatió el mal castigo:\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmclxxix{el Fuego, al que se verán expuestos mañana y tarde. El día que llegue la Hora: «¡Haced que la gente de Faraón reciba el castigo más severo!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmclxxx{Cuando discutan, ya en el Fuego, los que fueron débiles dirán a los que fueron altivos: «Os hemos seguido. ¿Vais a librarnos de parte del Fuego?»\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxi{Los altivos dirán: «Estamos todos en él. Alá ha decidido entre Sus siervos».\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxii{Los que estén en el Fuego dirán a los guardianes de la gehena: «¡Rogad a vuestro Señor que nos abrevie un día del castigo!»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxiii{Dirán: «¡Cómo! ¿No vinieron a vosotros vuestros enviados con las pruebas claras?» Dirán: «¡Claro que sí!» Dirán: «Entonces, ¡invocad vosotros!» Pero la invocación de los infieles será inútil.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxiv{Sí, a Nuestros enviados y a los que crean les auxiliaremos en la vida de acá y el día que depongan los testigos,\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxv{el día que ya no sirvan de nada a los impíos sus excusas, sino que sean malditos y tengan la Morada Mala.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxvi{Dimos la Dirección a Moisés y dimos en herencia la Escritura a los Hijos de Israel,\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxvii{como dirección y amonestación para los dotados de intelecto.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxviii{¡Ten paciencia! ¡Lo que Alá promete es verdad! Pide perdón por tu pecado y celebra al anochecer y al alba las alabanzas de tu Señor.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxix{Quienes discuten de los signos de Alá sin haber recibido autoridad, no piensan sino en grandezas, que no alcanzarán. ¡Busca, pues, refugio en Alá! Él es Quien todo lo oye, Quien todo lo ve.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcxc{Crear los cielos y la tierra es más Q grande aún que crear a los hombres. Pero la mayoría de los hombres no saben.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcxci{No son iguales el ciego y el vidente. Ni los que han creído y obrado bien y los que han obrado mal. ¡Qué poco os dejáis amonestar!\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcxcii{Sí, la Hora llega, no hay duda de ella, pero la mayoría de los hombres no creen.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcxciii{Vuestro Señor ha dicho: «¡Invocadme y os escucharé! Los que, llevados de su altivez, no Me sirvan entrarán, humillados, en la gehena».\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmcxciv{Alá es quien ha dispuesto para vosotros la noche para que descanséis en ella, y el día para que podáis ver claro. Sí, Alá dispensa Su favor a los hombres, pero la mayoría de los hombres no agradecen.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmcxcv{ése es Alá, vuestro Señor, creador de todo. ¡No hay más dios que É! ¡Cómo podéis, pues, ser tan desviados!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmcxcvi{Del mismo modo fueron desviados quienes rechazaron los signos de Alá.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmcxcvii{Alá es Quien os ha estabilizado la tierra y hecho del cielo un edificio, os ha formado armoniosamente y os ha proveído de cosas buenas. ése es Alá, vuestro Señor. ¡Bendito sea, pues, Alá, Señor del universo!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcxcviii{Él es el Vivo. No hay más dios que É. ¡Invocadle rindiéndole culto sincero! ¡Alabado sea Alá, Señor del universo!\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcxcix{Di: «Cuando he recibido de mi Señor las pruebas claras, se me ha prohibido que sirva a aquéllos que invocáis en lugar de invocar a Alá. He recibido la orden de someterme al Señor del universo».\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcc{Él es Quien os ha creado de tierra; luego, de una gota; luego, de un coágulo de sangre. Luego, os hace salir como criaturas para alcanzar, más tarde, la madurez, luego la vejez -aunque algunos de vosotros mueren prematuramente- y llegar a un término fijo. Quizás, así, razonéis.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcci{Él es Quien da la vida y da la muerte. Y cuando decide algo, le dice tan sólo: «¡Sé!» y es.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmccii{¿No has visto a quienes discuten de los signos de Alá? ¡Cómo pueden ser tan desviados!\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcciii{Que han desmentido la Escritura y el mensaje confiado a Nuestros enviados. ¡Van a ver...,\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcciv{cuando, argolla al cuello y encadenados, sean arrastrados\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmccv{al agua muy caliente y, luego, sean atizados en el Fuego!\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmccvi{Luego, se les dirá: «¿Dónde está lo que asociabais\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmccvii{en lugar de Alá?» Dirán: «¡Nos han abandonado! Mejor dicho, antes no invocábamos nada». Así extravía Alá a los infieles.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmccviii{«Eso es por haberos regocijado en la tierra sin razón y por haberos conducido insolentemente.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmccix{¡Entrad por las puertas de la gehena, para estar en ella eternamente! ¡Qué mala es la morada de los soberbios!»\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmccx{¡Ten, pues, paciencia! ¡Lo que Alá promete es verdad! Lo mismo si te hacemos ver algo de aquello con que les amenazamos, que si te llamamos, serán devueltos a Nosotros.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmccxi{Ya mandamos a otros enviados antes de ti. De algunos de ellos ya te hemos contado, de otros no. Ningún enviado pudo traer signo alguno, sino con permiso de Alá. Cuando llegue la orden de Alá, se decidirá según justicia y, entonces, los falsarios estarán perdidos.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmccxii{Alá es Quien ha puesto para vosotros los rebaños, para que montéis en unos y de otros os alimentéis,\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmmccxiii{-tenéis en ellos provecho-, y para que, por ellos, consigáis vuestros propósitos. Ellos y las naves os sirven de medios de transporte.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmccxiv{Él os hace ver Sus signos. ¿Cuál, pues, de los signos de Alá negaréis?\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmccxv{¿No han ido por la tierra y mirado cómo terminaron sus antecesores? Fueron más numerosos que ellos, más poderosos, dejaron más huellas en la tierra, pero sus posesiones no les sirvieron de nada.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmccxvi{Cuando sus enviados vinieron a ellos con las pruebas claras, se alegraron de la ciencia que poseían, pero se vieron cercados por aquello de que se burlaban.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmccxvii{Y, cuando vieron Nuestro rigor, dijeron: «¡Creemos en Alá Solo y renegamos de lo que Le asociábamos!»\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmccxviii{Pero, entonces, su fe no les sirvió de nada, después de haber visto Nuestro rigor. Tal es la práctica de Alá, que ya se había aplicado a Sus siervos. Y entonces salieron perdiendo los infieles.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmccxix{\basmalahes hm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmccxx{Revelación procedente del Compasivo, del Misericordioso.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmccxxi{Escritura cuyas aleyas han sido explicadas detalladamente como Corán árabe para gente que sabe.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmccxxii{como nuncio de buenas nuevas y como monitor. La mayoría, empero, se desvían y, así, no oyen.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmccxxiii{Y dicen: «Una envoltura oculta a nuestros corazones aquello a que nos llamas, nuestros oídos padecen sordera, un velo nos separa de ti. ¡Haz, pues, lo que juzgues oportuno, que nosotros haremos también lo que juzguemos oportuno!»\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmccxxiv{Di: «Yo soy sólo un mortal como vosotros, a quien se ha revelado que vuestro Dios es un Dios Uno. ¡Id, pues, derechos a Él y pedidle perdón! ¡Ay de los asociadores,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmccxxv{que no dan el azaque y niegan la otra vida!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmccxxvi{Quienes crean y obren bien, recibirán una recompensa ininterrumpida».\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmccxxvii{Di: «¿No vais a creer en Quien ha creado la tierra en dos días y Le atribuís iguales? ¡Tal es el Señor del universo!»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmccxxviii{En cuatro días iguales: ha puesto en ella, encima, montañas firmes, la ha bendecido y ha determinado sus alimentos. Para los que inquieren...\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmccxxix{Luego, se dirigió al cielo, que era humo, y dijo a éste y a la tierra: «¡Venid, queráis o no!» Dijeron: «¡Venimos de buen grado!»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmccxxx{«Decretó que fueran siete cielos, en dos días, e inspiró a cada cielo su cometido. Hemos engalanado el cielo más bajo con luminares, como protección. Tal es la decisión del Poderoso, del Omnisciente».\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxi{Si se desvían, di: «Os prevengo contra un rayo como el de los aditas y los tamudeos».\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxii{Cuando vinieron a ellos los enviados antes y después. «¡No sirváis sino a Alá!» Dijeron: «Si nuestro Señor hubiera querido, habría enviado de lo alto a ángeles. No creemos en vuestro mensaje».\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxiii{En cuanto a los aditas, sin razón, se condujeron en el país altivamente y dijeron: «¿Hay alguien más fuerte que nosotros?» ¿No veían que Alá, Que les había creado, era más fuerte que ellos? Pero negaron Nuestros signos.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxiv{Enviamos contra ellos un viento, glacial en días nefastos, para hacerles gustar el castigo de la ignominia en la vida de acá. Pero el castigo de la otra vida es aún más ignominioso y no serán auxiliados.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxv{Y en cuanto a los tamudeos, les dirigimos, pero prefirieron la ceguera a la Dirección, y el Rayo del castigo degradante les sorprendió por lo que habían cometido.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxvi{Y salvamos a los que creían y temían a Alá.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxvii{El día que los enemigos de Alá sean congregados hacia el Fuego, serán divididos en grupos.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxviii{Hasta que, llegados a él, sus oídos, sus ojos y su piel atestiguarán contra ellos de sus obras.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxix{Dirán a su piel: «¿Por qué has atestiguado contra nosotros?» Y ella dirá: «Alá, Que ha concedido a todos la facultad de hablar, nos la ha concedido a nosotros. Os ha creado una vez primera y a Él seréis devueltos.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmccxl{No podíais esconderos tan bien que no pudieran luego atestiguar contra vosotros vuestros oídos, vuestros ojos y vuestra piel. Creíais que Alá no sabía mucho de lo que hacíais.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmccxli{Lo que vosotros pensabais de vuestro Señor os ha arruinado y ahora sois de los que han perdido».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmccxlii{Aunque tengan paciencia, el Fuego será su morada. Y, aunque pidan gracia, no se les concederá.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmccxliii{Les hemos asignado compañeros, que han engalanado su estado actual y su estado futuro. Se ha cumplido en ellos la sentencia que también alcanzó a otras comunidades de genios y de mortales que les precedieron. Han perdido.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmccxliv{Los infieles dicen: «¡No hagáis caso de este Corán ! ¡Parlotead cuando lo lean. Quizás, así, os salgáis con la vuestra!»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmccxlv{A los infieles les haremos gustar, sí, un severo castigo y les retribuiremos, sí, con arreglo a sus peores obras.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmccxlvi{ésa es la retribución de los enemigos de Alá: el Fuego, en el que tendrán la Morada de la Eternidad, como retribución de haber negado Nuestros signos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmccxlvii{Los infieles dirán: «¡Señor! ¡Muéstranos a los genios y a los mortales que nos han extraviado y los pondremos bajo nuestros pies para que estén en lo más profundo!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmccxlviii{A los que hayan dicho: «¡Nuestro Señor es Alá!» y se hayan portado correctamente, descenderán los ángeles: «¡No temáis ni estéis tristes! ¡Regocijaos, más bien, por el Jardín que se os había prometido!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmccxlix{Somos vuestros amigos en la vida de acá y en la otra. Tendréis allí todo cuanto vuestras almas deseen, todo cuanto pidáis,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmccl{como alojamiento venido de Uno Que es indulgente, misericordioso».\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmccli{¿Quién hay, pues, que hable mejor que quien llama a Alá, obra bien y dice: «Soy de los que se someten a Alá»?\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcclii{No es igual obrar bien y obrar mal. ¡Repele con lo que sea mejor y he aquí que aquél de quien te separe la enemistad se convetirá en amigo ferviente!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmccliii{Esto sólo lo consiguen los pacientes, sólo lo consigue el de suerte extraordinaria.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmccliv{Si el Demonio te incita al mal, busca refugio en Alá. Él es Quien todo lo oye, Quien todo lo sabe.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcclv{Entre Sus signos figuran la noche el día, el sol y la luna. ¡No os prosternéis ante el sol ni ante la luna! ¡Prosternaos ante Alá, Que los ha creado! Si es a Él a Quien servís...\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcclvi{Si se muestran altivos, en cambio, quienes están junto a tu Señor Le glorifican, incansables, noche y día.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcclvii{Ves entre Sus signos que la tierra está seca. Luego, se reanima y reverdece cuando hacemos llover sobre ella. En verdad, Quien la vivifica puede también, vivificar a los muertos. Es omnipotente.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcclviii{Los que niegan Nuestros signos no pueden ocultarse a Nosotros. Qué es mejor: ¿ser arrojado al Fuego o venir en seguridad: el día de la Resurrección? ¡Haced lo que queráis! Él ve bien lo que hacéis.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcclix{Los que no creen en la Amonestación cuando ésta viene a ellos... Y eso que es una Escritura excelente,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcclx{completamente inaccesible a lo falso, revelación procedente de uno Que es sabio, digno de alabanza.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcclxi{No se te dice sino lo que ya se dijo a los enviados que te precedieron: que tu Señor está dispuesto a perdonar, pero también a castigar dolorosamente.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcclxii{Si hubiéramos hecho de ella un Corán no árabe, habrían dicho: «¿Por qué no se han explicado detalladamente sus aleyas? ¿No árabe y árabe?» Di: «Es dirección y curación para quienes creen. Quienes, en cambio, no creen son duros de oído y, ante él, padecen ceguera. Es como si se les llamara desde lejos».\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcclxiii{Ya dimos a Moisés la Escritura. Y discreparon acerca de ella. Y, si no llega a ser por una palabra previa de tu Señor, se habría decidido entre ellos. Dudan seriamente de ella.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcclxiv{Quien obra bien, lo hace en su propio provecho. Y quien obra mal, lo hace en detrimento propio. Tu Señor no es injusto con Sus siervos.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcclxv{A Él se le remite el conocimiento de la Hora. Ningún fruto deja su cubierta, ninguna hembra concibe o pare sin que Él lo sepa. Cuando Él les llame: «¿Dónde están Mis asociados?». dirán: «Te aseguramos que ninguno de nosotros los ha visto».\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcclxvi{Lo que antes invocaban les abandonará. Creerán no tener escape.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcclxvii{No se cansa el hombre de pedir el bien, pero, si sufre un mal, se desanima, se desespera.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcclxviii{Si le hacemos gustar una misericordia venida de Nosotros, luego de haber sufrido una desgracia, dirá de seguro: «Esto es algo que se me debe. Y no creo que ocurra la Hora. Pero, si se me devolviera a mi Señor, tendría junto a Él lo mejor». Ya informaremos a los infieles, sí, de lo que hacían y les haremos gustar, sí, un duro castigo.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcclxix{Cuando agraciamos al hombre, éste se desvía y se aleja. Pero, si sufre un mal, no para de invocar.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcclxx{Di: «¿Qué os parece? Si procede de Alá y vosotros, luego, no creéis en él, ¿hay alguien que esté más extraviado que quien se opone tan marcadamente?»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxi{Les mostraremos Nuestros signos fuera y dentro de sí mismos hasta que vean claramente que es la Verdad. ¿Es que no basta que tu Señor sea testigo de todo?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxii{Pues ¿no dudan del encuentro de su Señor? Pues ¿no lo abarca Él todo?\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxiii{\basmalahes hm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxiv{'sq.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxv{Así es como Alá, el Poderoso, el Sabio, hace una revelación, a ti y a quienes fueron antes de ti.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxvi{Suyo es lo que está en los cielos y en la tierra. Él es el Altísimo, el Grandioso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxvii{Casi se hienden los cielos allí arriba al celebrar los ángeles las alabanzas de su Señor y pedir Su perdón en favor de los que están en la tierra. ¿No es Alá el Indulgente, el Misericordioso?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxviii{A los que han tomado amigos en lugar de tomarle a Él, Alá les vigila. Tú no eres su protector.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxix{Así es como te revelamos un Corán árabe, para que adviertas a la metrópoli y a los que viven en sus alrededores y para que prevengas contra el día indubitable de la Reunión. Unos estarán en el Jardín y otros en el fuego de la gehena.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxx{Alá, si hubiera querido, habría hecho de ellos una sola comunidad. Pero introduce en Su misericordia a quien Él quiere. Los impíos no tendrán amigo ni auxiliar.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxi{¿Han tomado amigos en lugar de tomarle a Él? Pues Alá es el Amigo. Él resucita a los muertos, es omnipotente.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxii{Alá es Quien arbitra vuestras discrepancias, cualesquiera que sean. Tal es Alá, mi Señor. En Él confio y a Él me vuelvo arrepentido.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxiii{Creador de los cielos y de la tierra. Os ha dado esposas salidas de vosotros y parejas salidas de vuestros rebaños, diseminándoos así. No hay nada que se Le asemeje. Él es Quien todo lo oye, Quien todo lo ve.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxiv{Suyas son las llaves de los cielos y de la tierra. Dispensa el sustento a quien Él quiere: a unos con largueza, a otros con mesura. Es omnisciente.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxv{Os ha prescrito en materia de religión lo que ya había ordenado a Noé, lo que Nosotros te hemos revelado y lo que ya habíamos ordenado a Abraham, a Moisés y a Jesús: «¡Que rindáis culto y que esto no os sirva de motivo de división!» A los asociadores les resulta difícil aquello a que tú les llamas. Alá elige para Sí a quien Él quiere y dirige a Él a quien se arrepiente.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxvi{No se dividieron, por rebeldía mutua, sino después de haber recibido la Ciencia. Y, si no llega a ser por una palabra previa de tu Señor, remitiendo a un término fijo, ya se habría decidido entre ellos. Quienes, después, heredaron la Escritura dudan seriamente de ella.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxvii{Así, pues, llama. Sigue la vía recta, como se te ha ordenado, y no sigas sus pasiones. Y di: «Creo en toda Escritura que Alá ha revelado. Se me ha ordenado que haga justicia entre vosotros. ¡Alá es nuestro Señor y Señor vuestro! Nosotros responderemos de nuestros actos y vosotros de los vuestros. ¡Que no haya disputas entre nosotros y vosotros! Alá nos reunirá... ¡Es Él el fin de todo!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxviii{Quienes disputan a propósito de Alá después de que se le ha escuchado, esgrimen un argumento sin valor para su Señor. Incurren en ira y tendrán un castigo severo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxix{Alá es quien ha hecho descender la Escritura con la Verdad, y la Balanza. ¿Quien sabe? Quizá la Hora esté próxima...\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmccxc{Los que no creen en ella desearían que se adelantara, mientras que los que creen tiemblan sólo de pensar en ella y saben que es un hecho. Los que disputan sobre la Hora ¿no están profundamente extraviados?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmccxci{Alá es bondadoso con Sus siervos. Provee a las necesidades de quien Él quiere. Él es el Fuerte, el Poderoso.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmccxcii{A quien desee labrar el campo de la vida futura se lo acrecentaremos. A quien, en cambio, desee labrar el campo de la vida de acá, le daremos de ella. pero no tendrá ninguna parte en la otra vida.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmccxciii{¿Tienen asociados que les hayan prescrito en materia de religión lo que Alá no ha sancionado? Si no se hubiera ya pronunciado la sentencia decisiva, se habría decidido entre ellos. Los impíos tendrán un castigo doloroso.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmccxciv{Verás a los impíos temer por lo que han merecido, que recaerá en ellos, mientras que los que hayan creído y obrado bien estarán en los prados de los jardines y tendrán junto a su Señor lo que deseen. ¡Ése es el gran favor!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmccxcv{Ésta es la buena nueva que Alá anuncia a Sus siervos, que creen y obran bien. Di: «Yo no os pido salario a cambio, fuera de que améis a los parientes». A quien obre bien, le aumentaremos el valor de su obra. Alá es indulgente, muy agradecido.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmccxcvi{O dirán: «Se ha inventado una mentira contra Alá». Alá sellará, si quiere, tu corazón. Pero Alá disipa lo falso y hace triunfar la Verdad con Sus palabras. Él sabe bien lo que encierran los pechos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmccxcvii{Él es Quien acepta el arrepentimiento de Sus siervos y perdona las malas acciones. Y sabe lo que hacéis.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmccxcviii{Escucha a quienes creen y obran bien y les da más de Su favor. Los infieles, en cambio, tendrán un castigo severo.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmccxcix{Si Alá dispensara el sustento a Sus siervos con largueza, se insolentarían en la tierra. Lo que hace, en cambio, es concederles con mesura lo que quiere. Está bien informado sobre Sus siervos, les ve bien.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmccc{Él es Quien envía de lo alto la lluvia abundante, cuando ya han perdido toda esperanza, y difunde Su misericordia. Él es el Amigo, el Digno de Alabanza.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmccci{Entre Sus signos figuran la creación de los cielos y de la tierra, los seres vivos que en ellos ha diseminado y que, cuando quiere, puede reunir.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmcccii{Cualquier desgracia que os ocurre, es como castigo a vuestras obras, pero perdona mucho.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmccciii{No podéis escapar en la tierra y no tenéis, fuera de Alá, amigo ni auxiliar.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmccciv{Entre sus signos figuran las embarcaciones en el mar como mojones.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmcccv{Si quiere, calma el viento y se inmovilizan en su superficie. Ciertamente, hay en ello signos para todo aquél que tenga mucha paciencia, mucha gratitud.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcccvi{O bien les hace perecer, como castigo por lo que han merecido, pero perdona mucho.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmcccvii{Para que sepan quienes discuten sobre Nuestros signos que no tendrán escape.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmcccviii{Todo lo que habéis recibido es breve disfrute de la vida de acá. En cambio, lo que Alá tiene es mejor y más duradero para quienes creen y confían en su Señor,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcccix{evitan cometer pecados graves y deshonestidades y, cuando están airados, perdonan,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcccx{escuchan a su Señor, hacen la azalá, se consultan mutuamente, dan limosna de lo que les hemos proveído,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcccxi{se defienden cuando son víctimas de opresión.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcccxii{Una mala acción será retribuida con una pena igual, pero quien perdone y se reconcilie recibirá su recompensa de Alá. Él no ama a los impíos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcccxiii{Quienes, tratados injustamente, se defiendan, no incurrirán en reproche.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcccxiv{Sólo incurren en él quienes son injustos con los hombres y se insolentan en la tierra injustamente. Esos tales tendrán un castigo doloroso.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcccxv{Quien es paciente y perdona, eso sí que es dar muestras de resolución.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcccxvi{Aquél a quien Alá extravía no tendrá, después de Él, ningún amigo. Cuando los impíos vean el castigo, les verás que dicen: «¿Y no hay modo de regresar?»\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcccxvii{Les verás expuestos a él, abatidos de humillación, mirando con disimulo, mientras que quienes hayan creído dirán: «Quienes de verdad pierden son los que el día de la Resurrección se han perdido a sí mismos y han perdido a sus familias». ¿No tendrán los impíos un castigo permanente?\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcccxviii{Fuera de Alá. no tendrán ningunos amigos que les auxilien... Aquél a quien Alá extravía no podrá dar con camino.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcccxix{Escuchad a vuestro Señor antes de que llegue un día que Alá no evitará. Ese día no encontraréis refugio, ni podréis negar.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcccxx{Si se apartan, no te hemos mandado para ser su custodio, sino sólo para transmitir. Cuando hacemos gustar al hombre una misericordia venida de Nosotros, se regocija. Pero, si le sucede un mal como castigo a sus obras, entonces, el hombre es desagradecido.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxi{El dominio de los cielos y de la tierra pertenece a Alá. Crea lo que quiere. Regala hijas a quien Él quiere y regala hijos a quien Él quiere.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxii{o bien les da ambos, varones y hembras, o hace impotente a quien Él quiere. Es omnisciente, omnipotente.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxiii{A ningún mortal le es dado que Alá le hable si no es por inspiración, o desde detrás de una cortina, o mandándole un enviado que le inspire, con Su autorización, lo que Él quiere. Es altísimo, sabio.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxiv{Así es como te hemos inspirado un Espíritu que procede de Nuestra orden. Tú no sabías lo que eran la Escritura y la Fe, pero hemos hecho de él luz con la que guiamos a quienes queremos de Nuestros siervos. Ciertamente, tú guías a los hombres a una vía recta,\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxv{la vía de Alá, a quien pertenece lo que está en los cielos y en la tierra. ¿No es Alá el fin de todo?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxvi{\basmalahes hm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxvii{¡Por la Escritura clara!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxviii{Hemos hecho de ella un Corán árabe. Quizás, así, razonéis.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxix{Está en la Escritura Matriz que Nosotros tenemos, sublime, sabio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxx{¿Es que, porque seáis gente inmoderada, vamos a privaros de la Amonestación?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxi{¡Cuántos profetas hemos enviado a los antiguos...!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxii{No vino a ellos profeta que no se burlaran de él.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxiii{Por eso, hemos hecho perecer a otros más temibles que ellos. Ya ha precedido el ejemplo de los antiguos...\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxiv{Si les preguntas: «¿Quién ha creado los cielos y la tierra?», seguro que dicen: «¡Los ha creado el Poderoso, el Omnisciente!»\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxv{Quien os ha puesto la tierra como cuna y os ha puesto en ella caminos. Quizás, así, seáis bien dirigidos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxvi{Quien ha hecho bajar agua del cielo con mesura para resucitar un país muerto. Del mismo modo se os sacará.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxvii{Quien ha creado todas las parejas y os ha dado las naves y los rebaños en que montáis,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxviii{para que os instaléis en ellos y, luego, cuando lo hayáis hecho, recordéis la gracia de vuestro Señor y digáis: «¡Gloria a Quien ha sujetado esto a nuestro servicio! ¡Nosotros no lo hubiéramos logrado!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxix{¡Sí, volveremos a nuestro Señor!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcccxl{Han equiparado a algunos de Sus siervos con Él. Sí. el hombre es manifiestamente desagradecido.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcccxli{¿Iba Alá a tomar hijas de entre Sus criaturas, y a vosotros concederos hijos?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlii{Cuando se anuncia a uno de ellos lo que él asimila al Compasivo, se queda hosco y se angustia.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcccxliii{«¡Cómo! Un ser que crece entre perifollos, incapaz de discutir claramente...»\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcccxliv{Han considerado a los ángeles que son siervos del Compasivo, de sexo femenino. ¿Es que han sido testigos de la creación de éstos? Se hará constar su testimonio y tendrán que responder del mismo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlv{Dicen: «Si el Compasivo hubiera querido, no les habríamos servido». No tienen ningún conocimiento de eso, no hacen sino conjeturar.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlvi{¿Es que les trajimos otra Escritura a la que atenerse antes de ésta?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlvii{¡Nada de eso! Dicen: «Encontramos a nuestros padres en una religión y, siguiendo sus huellas, estamos bien dirigidos».\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlviii{Y así, no enviamos ningún monitor antes de ti a una ciudad que no dijeran los ricos: «Encontramos a nuestros padres en una religión e imitamos su ejemplo».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlix{Dijo: «¿Y si os trajera una dirección más recta que la que vuestros padres seguían?» Dijeron: «¡No creemos en vuestro mensaje!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcccl{Nos vengamos de ellos. ¡Y mira cómo terminaron los desmentidores!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcccli{Y cuando Abraham dijo a su padre y a su gente: «Soy inocente de lo que servís.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmccclii{Yo no sirvo sino a Quien me ha creado. Él me dirigirá».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmcccliii{E hizo que esta palabra perdurara en su posteridad. Quizás, así, se convirtieran.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmcccliv{No sólo eso, sino que les permití gozar, a ellos y a sus padres, hasta que viniera a ellos la Verdad y un Enviado que hablara claro.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmccclv{Pero, cuando la Verdad vino a ellos, dijeron: «¡Esto es magia y no creemos en ello!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmccclvi{Y dijeron: «¿Por qué no se ha revelado este Corán a un notable de una de las dos ciudades...»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmccclvii{¿Son ellos los encargados de dispensar la misericordia de tu Señor? Nosotros les dispensamos las subsistencias en la vida de acá y elevamos la categoría de unos sobre otros para que éstos sirvieran a aquéllos. Pero la misericordia de tu Señor es mejor que lo que ellos amasan.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmccclviii{Si no hubiera sido por evitar que los hombres formaran una sola comunidad, habríamos puesto en las casas de los que no creen en el Compasivo terrazas de plata y gradas de acceso,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmccclix{puertas y lechos en que reclinarse.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmccclx{y lujo. Pero todo esto no es sino breve disfrute de la vida de acá en tanto que la otra vida, junto a tu Señor, será para los que Le temen.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmccclxi{A quien se cierre a la Amonestación del Compasivo, le asignamos un demonio que será para él compañero.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmccclxii{Les apartan, sí, del Camino, mientras creen ser bien dirigidos.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmccclxiii{Hasta que, al comparecer ante Nosotros, diga: «¡Ojalá nos hubiera separado, a mí y a ti, la misma distancia que separa al Oriente del Occidente!» ¡Qué mal compañero...!\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmccclxiv{Hoy no os aprovechará compartir el castigo por haber sido impíos.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmccclxv{¿Es que puedes tú hacer que un sordo oiga, o dirigir a un ciego y al que se encuentra evidentemente extraviado?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmccclxvi{O te hacemos morir y, luego, Nos vengamos de ellos,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmccclxvii{o te mostramos aquello con que les amenazamos. Pues les podemos con mucho.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmccclxviii{¡Aténte a lo que se te ha revelado! Estás en una vía recta.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmccclxix{Es, ciertamente, una amonestación para ti y para tu pueblo y tendréis que responder.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmccclxx{Pregunta a los enviados que mandamos antes de ti si hemos establecido dioses a quienes servir en lugar de servir al Compasivo.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxi{Ya enviamos Moisés con Nuestros signos a Faraón y a sus dignatarios. Y dijo: «Yo soy el enviado del Señor del universo».\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxii{Pero cuando les presentó Nuestros signos, he aquí que se rieron de ellos,\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxiii{a pesar de que cada signo que les mostrábamos superaba al precedente. Les sorprendimos con el castigo. Quizás, así, se convirtieran.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxiv{Dijeron: «¡Mago! ;Ruega a tu Señor por nosotros, en virtud de la alianza que ha concertado contigo! Nos dejaremos dirigir».\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxv{Pero, cuando retiramos de ellos el castigo, he aquí que quebrantaron su promesa.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxvi{Faraón dirigió una proclama a su pueblo, diciendo: «¡Pueblo! ¿No es mío el dominio de Egipto, con estos ríos que fluyen a mis pies? ¿Es que no veis?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxvii{¿No soy yo mejor que éste, que es un vil y que apenas sabe expresarse?\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxviii{¿Por qué no se le han puesto brazaletes de oro...? ¿Por qué no ha venido acompañado de ángeles...?»\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxix{Extravió a su pueblo y éste le obedeció: era un pueblo perverso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxx{Cuando Nos hubieron irritados, Nos vengamos de ellos anegándolos a todos,\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxi{y sentamos con ellos un precedente, poniéndolos como ejemplo para la posteridad.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxii{Y cuando el hijo de María es puesto como ejemplo, he aquí que tu pueblo se aparta de él.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxiii{Y dicen: ¿Son mejores nuestros dioses o él? Si te lo ponen, no es sino por afán de discutir. Son, en efecto, gente contenciosa.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxiv{El no es sino un siervo a quien hemos agraciado y a quien hemos puesto como ejemplo a los Hijos de Israel.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxv{Si quisiéramos, haríamos de vosotros ángeles, que sucederían en la tierra.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxvi{Será un medio de conocer la Hora. ¡No dudéis, pues, de ella y seguidme! ¡Esto es una vía recta!\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxvii{¡Que el Demonio no os extravíe! Es para vosotros un enemigo declarado.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxviii{Cuando Jesús vino con las pruebas claras, dijo: «He venido a vosotros con la Sabiduría y para aclararos algo de aquello en que discrepáis. ¡Temed, pues, a Alá y obedecedme!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxix{Alá es mi Señor y Señor vuestro. ¡Servidle, pues! ¡Esto es una vía recta!»\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcccxc{Pero los grupos discreparon unos de otros. ¡Ay de los impíos, por el castigo de un día doloroso...!\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcccxci{No les queda más que esperar la Hora, que les vendrá de repente, sin presentirla.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcii{Ese día. los amigos serán enemigos unos de otros, excepto los temerosos de Alá.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcccxciii{«¡Siervos míos! ¡No tenéis que temer hoy! ¡Y no estaréis tristes!\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmcccxciv{Los que creísteis en Nuestros signos y os sometisteis a Alá,\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcv{¡entrad en el Jardín junto con vuestras esposas, para ser regocijados!»\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcvi{Se harán circular entre ellos platos de oro y copas, que contendrán todo lo que cada uno desee, deleite de los ojos. «Estaréis allí eternamente.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcvii{Éste es el Jardín que habéis heredado como premio a vuestras obras.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcviii{Tenéis en él fruta abundante, de la que comeréis».\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcix{Los pecadores, en cambio, tendrán la gehena como castigo, eternamente,\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmcd{castigo que no se les remitirá, y serán presa de la desesperación.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmcdi{No seremos Nosotros quienes hayan sido injustos con ellos, sino que ellos serán los que lo hayan sido.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmcdii{Llamarán: «¡Malik! ¡Que tu Señor acabe con nosotros!» Él dirá: «¡Os quedaréis ahí!»\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmcdiii{«Os trajimos la Verdad, pero la mayoría sentisteis aversión a la Verdad».\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmcdiv{¿Han tramado algo? Pues Nosotros también.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmmcdv{¿O creen que no Nos enteramos de sus secretos y confidencias? ¡Claro que Nos enteramos! Y Nuestros enviados, junto a ellos, toman nota.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmcdvi{Di: «Si el Compasivo tuviera un hijo, yo sería el primero en servirle».\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmcdvii{¡Gloria al Señor de los cielos y de la tierra. Señor del Trono! ¡Está por encima de lo que Le atribuyen!\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmcdviii{¡Déjales que parloteen y jueguen hasta que les llegue el Día con que se les ha amenazado!\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmcdix{¡El es Quien es dios en el cielo y dios en la tierra! Es el Sabio, el Omnisciente.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmcdx{¡Bendito sea Quien posee el dominio de los cielos, de la tierra y de lo que entre ellos está! Él tiene conocimiento de la Hora y a Él seréis devueltos.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmcdxi{Los que ellos invocan en lugar de invocarle a Él no pueden interceder, salvo, aquéllos que atestiguan la Verdad y saben.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmmcdxii{Si les preguntas: «¿Quién os ha creado?», seguro que dicen: «¡Ala!» ¡Cómo pueden, pues, ser tan desviados!\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmmcdxiii{y de su dicho: «¡Señor! Ésta es gente que no cree».\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmmcdxiv{Aléjate, pues, de ellos y di: «¡Paz!» ¡Van a ver...!\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmmcdxv{\basmalahes hm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcdxvi{¡Por la Escritura clara!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcdxvii{¡La hemos revelado en una noche bendita! ¡Hemos advertido!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcdxviii{En ella se decide todo asunto sabiamente,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcdxix{como cosa venida de Nosotros. Mandamos a enviados\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcdxx{como misericordia venida de tu Señor. Él es Quien todo lo oye, Quien todo lo sabe,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxi{Señor de los cielos, de la tierra y de lo que entre ellos está. Si estuvierais convencidos...\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxii{No hay más dios que Él. Él da la vida y da la muerte. Vuestro Señor y Señor de vuestros antepasados.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxiii{Pero ¡no! Ellos dudan y no lo toman en serio.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxiv{¡Espera, pues, el día que el cielo traiga un humo visible,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxv{que cubra a los hombres! Será un castigo doloroso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxvi{«¡Señor! ¡Aparta de nosotros el castigo! ¡Creemos!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxvii{¿De qué les servirá la amonestación, si ha venido a ellos un Enviado que habla claro\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxviii{y se han apartado de él y dicho: «¡Es uno a quien se ha instruido, un poseso!»?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxix{«Vamos a apartar de vosotros el castigo por algún tiempo. Pero reincidiréis».\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxx{El día que hagamos uso del máximo rigor, Nos vengaremos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxi{Antes que a ellos, habíamos probado al pueblo de Faraón. Un enviado noble vino a ellos:\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxii{«¡Entregadme a los siervos de Alá! Tenéis en mí a un enviado digno de confianza.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxiii{¡No os mostréis altivos con Alá! Vengo a vosotros con autoridad manifiesta.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxiv{Me refugio en mi Señor y Señor vuestro contra vuestro intento de lapidarme.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxv{Si no os fiáis de mí, ¡dejadme!»\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxvi{Entonces, invocó a su Señor. «¡Ésta es gente pecadora!»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxvii{«¡Sal de noche con Mis siervos! Os perseguirán.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxviii{¡Deja el mar en calma! Son un ejército que será anegado»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxix{¡Cuántos jardines y fuentes abandonaron,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcdxl{cuántos campos cultivados, cuántas suntuosas residencias,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmcdxli{cuánto bienestar, en el que vivían felices!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlii{Así fue y se lo dimos en herencia a otro pueblo.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmcdxliii{Ni el cielo ni la tierra les lloraron. No se les concedió prórroga.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmcdxliv{Y salvamos a los Hijos de Israel del humillante castigo,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlv{de Faraón. Era altivo, de los inmoderados.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlvi{Les elegimos conscientemente de entre todos los pueblos.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlvii{Les dimos signos con los que les pusimos claramente a prueba.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlviii{Éstos dicen, sí:\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlix{«No moriremos más que una sola vez y no seremos resucitados.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmcdl{¡Haced, pues, volver a nuestros padres, si es verdad lo que decís!»\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcdli{¿Eran mejores ellos que el pueblo de Tubba y que sus antecesores? Les hicimos perecer, eran pecadores.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcdlii{No hemos creado los cielos, la tierra y lo que entre ellos está por puro juego.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcdliii{No los creamos sino con un fin, pero la mayoría no saben.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcdliv{El día del Fallo se darán todos cita.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcdlv{Día en que nadie podrá proteger nada a nadie, nadie será auxiliado,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcdlvi{salvo aquél de quien Alá se apiade. Él es el Poderoso, el Misericordioso.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcdlvii{El árbol de Zaqqum\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcdlviii{es el alimento del pecador.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcdlix{Es como metal fundido, hierve en las entrañas\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcdlx{como agua hirviente.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxi{«¡Cogedle y llevadle en medio del fuego de la gehena!\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxii{¡Castigadle, luego, derramando en su cabeza agua muy caliente!»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxiii{«¡Gusta! ¡Tú eres 'el poderoso', 'el generoso'!»\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxiv{¡Esto es aquello de que dudabais!\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxv{Los que teman a Alá estarán, en cambio, en lugar seguro,\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxvi{entre jardines y fuentes,\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxvii{vestidos de satén y de brocado, unos enfrente de otros.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxviii{Así será. Y les daremos por esposas a huríes de grandes ojos.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxix{Pedirán allí en seguridad, toda clase de frutas.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxx{No gustarán alli otra muerte que la primera y Él les preservará del castigo del fuego de la gehena,\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxi{como favor de tu Señor. ¡Ése es el éxito grandioso!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxii{En verdad, lo hemos hecho fácil en tu lengua. Quizás, así, se dejen amonestar.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxiii{¡Observa, pues! Ellos observan....\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxiv{\basmalahes hm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxv{La revelación de la Escritura procede de Alá, el Poderoso, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxvi{Hay, en verdad, en los cielos y en la tierra signos para los creyentes.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxvii{En vuestra creación y en las bestias que Él esparce hay signos para gente que está convencida.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxviii{También en la sucesión de la noche y el día, en lo que como sustento Alá hace bajar del cielo, vivificando con ello la tierra después de muerta, y en la variación de los vientos hay signos para gente que comprende.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxix{Estas son las aleyas de Alá, que te recitamos conforme a la verdad. Y ¿en qué anuncio van a creer si no creen en Alá y en Sus signos?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxx{¡Ay de todo aquél que sea mentiroso, pecador,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxi{que, a pesar de oír las aleyas de Alá que se le recitan, se obstina en su altivez como si no las hubiera oído! ¡Anúnciale un castigo doloroso!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxii{Los que, habiendo conocido algo de Nuestros signos, los hayan tomado a burla, tendrán un castigo humillante.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxiii{Les espera la gehena y sus posesiones no les servirán de nada, como tampoco los que tomaron como amigos en lugar de tomar a Alá. Tendrán un castigo terrible.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxiv{Esto es una dirección. Los que no crean en los signos de su Señor tendrán el castigo de un suplicio doloroso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxv{Alá es Quien ha sujetado el mar a vuestro servicio para que las naves lo surquen a una orden Suya para que busquéis Su favor. Y quizás, así, seáis agradecidos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxvi{Y ha sujetado a vuestro servicio lo que está en los cielos y en la tierra. Todo procede de Él. Ciertamente, hay en ello signos para gente que reflexiona.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxvii{Di a los creyentes que perdonen a quienes no cuentan con los Días de Alá, instituidos para retribuir a la gente según sus méritos.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxviii{Quien obra bien, lo hace en su propio provecho. Y quien obra mal, lo hace en detrimento propio. Luego, seréis devueltos a vuestro Señor.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxix{Dimos a los Hijos de Israel la Escritura, el juicio y el profetismo. Les proveímos de cosas buenas y les distinguimos entre todos los pueblos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcdxc{Les dimos pruebas claras respecto a la Orden. Y no discreparon, por rebeldía mutua, sino después de haber recibido la Ciencia. Tu Señor decidirá entre ellos el día de la Resurrección sobre aquello en que discrepaban.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcdxci{Luego, te pusimos en una vía respecto a la Orden. Síguela, pues, y no sigas las pasiones de quienes no saben.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcii{No te servirán de nada frente a Alá. Los impíos son amigos unos de otros, pero Alá es el Amigo de los que Le temen.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcdxciii{Esto es un conjunto de pruebas visibles para los hombres, dirección y misericordia para gente que esta convencida.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcdxciv{Quienes obran mal ¿creen que les trataremos igual que a quienes creen y obran bien, como si fueran iguales en vida y luego de muertos? ¡Qué mal juzgan!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcv{Alá ha creado con un fin los cielos y la tierra. Y para que cada cual sea retribuido según sus méritos. Nadie será tratado injustamente.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcvi{Y ¿qué te parece quien ha divinizado su pasión a quien Alá ha extraviado a sabiendas, sellando su oído y su corazón, vendando sus ojos? ¿Quién podrá dirigirle luego de Alá? ¿Es que no os dejaréis amonestar?\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcvii{Y dicen: «No hay más vida que ésta nuestra de acá. Morimos y vivimos, y nada sino la acción fatal del Tiempo nos hace perecer». Pero no tienen ningún conocimiento de eso, no hacen sino conjeturar.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcviii{Y cuando se les recitan Nuestras aleyas como pruebas claras, lo único que arguyen es: «¡Haced volver a nuestros padres, si es verdad lo que decís!»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcix{Di: «Alá os da la vida y, después, os hará morir. Luego, os reunirá para el día indubitable de la Resurrección. Pero la mayoría de los hombres no saben».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmd{El dominio de los cielos y de la tierra pertenece a Alá. Cuando ocurra la Hora, ese día, los falsarios estarán perdidos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdi{Verás a cada comunidad arrodillada. Cada comunidad será emplazada ante su Escritura : «Hoy seréis retribuidos con arreglo a vuestras obras.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdii{He aquí Nuestra Escritura, que dice la verdad contra vosotros. Apuntábamos lo que hacíais».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdiii{A quienes creyeron y obraron bien, su Señor les introducirá en Su misericordia. ¡Ése es el éxito manifiesto!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdiv{En cuanto a quienes no creyeron: «¿Es que no se os recitaron Mis aleyas? Pero fuisteis altivos y gente pecadora».\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdv{Cuando se decía: «Lo que Alá promete es verdad y no hay duda respecto a la Hora», decíais: «No sabemos qué es eso de 'la Hora'. No podemos sino conjeturar. No estamos convencidos».\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdvi{Se les mostrará el mal que cometieron y les cercará aquello de que se burlaban.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdvii{Se dirá: «Hoy os olvidamos Nosotros, como vosotros olvidasteis que os llegaría este día. Tendréis el Fuego por morada y no encontraréis quien os auxilie.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdviii{Y esto es así porque tomasteis a burla los signos de Alá y la vida de acá os engaño». Ese día no serán sacados de él ni serán agraciados.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdix{¡Alabado sea Alá, Señor de los cielos, Señor de la tierra, Señor del universo!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdx{¡Suya es la majestad en los cielos y en la tierra! Él es el Poderoso, el Sabio.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdxi{\basmalahes hm.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdxii{La revelación de la Escritura procede de Alá, el Poderoso, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdxiii{No hemos creado sino con un fin los cielos, la tierra y lo que entre ellos está, y por un período determinado. Pero los infieles se desvían de las advertencias que se les han dirigido.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdxiv{Di: «¿Qué os parece lo que invocáis en lugar de invocar a Alá? ¡Mostradme qué han creado de la tierra o si tienen participación en los cielos! Si es verdad lo que decís, ¡traedme una Escritura anterior a ésta o un rastro de conocimiento!»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdxv{¿Hay alguien que esté más extraviado que quien, en lugar de invocar a Alá, invoca a quienes no van a escucharle hasta el día de la Resurrección, indiferentes a sus invocaciones,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdxvi{que, cuando los hombres sean congregados, serán sus enemigos y renegarán de que les hayan servido?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdxvii{Cuando se les recitan a los infieles Nuestras aleyas como pruebas claras, dicen de la Verdad que viene a ellos: «¡Esto es manifiesta magia!»\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdxviii{O dicen: «Él lo ha inventado». Di: «Si yo lo he inventado, no podéis hacer nada por mí contra Alá. Él sabe bien lo que divulgáis a este propósito. Basta Él como testigo entre yo y vosotros. Él es el Indulgente, el Misericordioso».\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdxix{Di: «Yo no soy el primero de los enviados. Y no sé lo que será de mí, ni lo que será de vosotros. No hago más que seguir lo que se me ha revelado. Yo no soy más que un monitor que habla claro».\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdxx{Di: «¿Qué os parece? Si procede de Alá y vosotros no creéis en él, mientras que un testigo de entre los Hijos de Israel atestigua su conformidad y cree, en tanto que vosotros sois altivos... Alá no dirige a la gente impía».\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdxxi{Los infieles dicen de los creyentes: «Si hubiera sido algo bueno, no se nos habrían adelantado en ello». Y, como no son dirigidos por él, dicen: «¡Es una vieja mentira!»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdxxii{Antes de él, la Escritura de Moisés servía de guía y de misericordia. Y ésta es una Escritura que confirma, en lengua árabe, para advertir a los impíos y anunciar la buena nueva a quienes hacen el bien.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdxxiii{Quienes dicen: «¡Nuestro Señor es Alá!» y se portan correctamente no tienen que temer y no estarán tristes.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdxxiv{Esos tales morarán en el Jardín eternamente, como retribución a sus obras.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdxxv{Hemos ordenado al hombre que se porte bien con sus padres. Su madre le llevó con molestia y con molestia le dio a luz. El embarazo y la lactancia duran treinta meses. Hasta que, al alcanzar la madurez y cumplir cuarenta años, dice: «¡Señor! Permíteme que Te agradezca la gracia que nos has dispensado, a mí y a mis padres, y que haga obras buenas que Te plazcan! ¡Dame una descendencia próspera! Me vuelvo a Ti. Soy de los que se someten a Ti».\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdxxvi{Éstos son aquéllos de cuyas obras aceptaremos lo mejor y pasaremos por alto sus malas obras. Estarán entre los moradores del Jardín, promesa de verdad que se les hizo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdxxvii{En cambio, quien diga a sus padres -mientras éstos imploran a Alá y dicen: «¡Ay de ti! ¡Cree! ¡Lo que Alá promete es verdad!»-: «¡Uf! ¿Vais a prometerme que me sacarán, cuando han pasado tantas generaciones anteriores a mí?» y diga: «Éstas no son sino patrañas de los antiguos»,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdxxviii{en ésos será en quienes se cumpla la sentencia aplicada a las comunidades precedentes de genios y de mortales. Ésos serán los que pierdan.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdxxix{Todos tendrán su propia categoría, según sus obras. Les retribuirá plenamente sus acciones y no serán tratados injustamente.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdxxx{El día que los infieles sean expuestos al Fuego: «Disipasteis vuestros bienes en vuestra vida de acá y gozasteis de ellos. Hoy se os va a retribuir con un castigo degradante por haberos conducido altivamente en la tierra sin razón y por haber sido perversos».\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxi{Y recuerda al hermano de los aditas, que advirtió a su pueblo en al- Ahqaf -y hubo otras advertencias antes y después de él-. «¡No sirváis sino a Alá! Temo por vosotros el castigo de un día terrible».\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxii{Dijeron: «¿Has venido a nosotros para desviarnos de nuestros dioses? ¡Tráenos, pues, aquello con que nos amenazas, si es verdad lo que dices!»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxiii{Dijo: «Sólo Alá tiene conocimiento de ello. Yo os comunico el objeto de mi misión, pero veo que sois gente ignorante».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxiv{Cuando lo vieron como una nube que se dirigía a sus valles, dijeron: «Es una nube que nos trae la lluvia». «¡No! Es más bien aquello cuya venida reclamabais, un viento que encierra un castigo doloroso,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxv{que va a destruirlo todo a una orden de su Señor». A la mañana siguiente, no se veía más que sus viviendas. Así retribuimos a la gente pecadora.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxvi{Les habíamos dado un poderío como no os hemos dado a vosotros. Les habíamos dado oído, vista, intelecto. Pero ni el oído, ni la vista, ni el intelecto les sirvieron de nada, pues negaron los signos de Alá. Y les cercó aquello de que se burlaban.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxvii{Hemos destruido las ciudades que había alrededor de vosotros. Les habíamos expuesto los signos. Quizás, así, se convirtieran.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxviii{¿Por qué no les auxiliaron aquéllos a los que, en lugar de tomar a Alá, habían tomado como dioses para que les acercaran? Al contrario, les abandonaron. Ésa fue su mentira y su invención.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxix{Y cuando te llevamos un grupo de genios para que escucharan la Recitación. Cuando estaban presentes a ella, dijeron: «¡Callad!» Y, cuando se terminó, regresaron a los suyos para advertirles.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdxl{Dijeron: «¡Pueblo! Hemos oído una Escritura revelada después de Moisés, en confirmación de los mensajes anteriores, que dirige a la Verdad y a una vía recta».\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdxli{¡Pueblo! Aceptad al que llama a Alá y creed en Él, para que os perdone vuestros pecados y os preserve de un castigo doloroso.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdxlii{Los que no acepten al que llama a Alá no podrán escapar en la tierra, ni tendrán, fuera de Él, amigos. Esos tales están evidentemente extraviados.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdxliii{¿No han visto que Alá, Que ha creado los cielos y la tierra sin cansarse por ello, es capaz de devolver la vida a los muertos? Pues sí, es omnipotente.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdxliv{El día que los infieles sean expuestos al Fuego: «¿No es esto la Verdad?» Dirán: «¡Claro que sí, por nuestro Señor!» Dirá: «¡Gustad, pues, el castigo debido a vuestra incredulidad!»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdxlv{Ten, pues, paciencia, como la tuvieron otros enviados resueltos. Y no reclames para ellos el adelantamiento. El día que vean aquello con que se les amenaza, les parecerá no haber permanecido más de una hora de día. Éste es un comunicado. Y ¿quién será destruido sino el pueblo perverso?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdxlvi{\basmalahes A quienes no crean y aparten a otros del camino de Alá, Él les invalidará sus obras.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdxlvii{En cambio, borrará las malas obras y mejorará la condición de quienes hayan creído, obrado bien y creído en la revelación hecha a Mahoma, la cual es la Verdad que viene de su Señor.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdxlviii{Y esto es así porque los infieles siguen lo falso, mientras que los creyentes siguen la Verdad venida de su Señor. Así es como Alá los pone como ejemplo a los hombres.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdxlix{Cuando sostengáis, pues, un encuentro con los infieles, descargad los golpes en el cuello hasta someterlos. Entonces, atadlos fuertemente. Luego, devolvedles la libertad, de gracia o mediante rescate, para que cese la guerra. Es así como debéis hacer. Si Alá quisiera, se defendería de ellos, pero quiere probaros a unos por medio de otros. No dejará que se pierdan las obras de los que hayan caído por Alá.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdl{Él les dirigirá, mejorará su condición\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdli{y les introducirá en el Jardín, que Él les habrá dado ya a conocer.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdlii{¡Creyentes! Si auxiliáis a Alá, Él os, auxiliará y afirmará vuestros pasos.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdliii{¡Ay de aquéllos, en cambio, que no hayan creído! Invalidará sus obras.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdliv{Y esto es así porque les repugnó la revelación de Alá. E hizo vanas sus obras.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdlv{¿No han ido por la tierra y mirado cómo terminaron sus antecesores? Alá los destruyó. Y los infieles tendrán un fin semejante.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdlvi{Y esto es así porque Alá es el Protector de los creyentes, mientras que los infieles no tienen protector.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdlvii{Alá introducirá a quienes hayan creído y obrado bien en jardines por cuyos bajos fluyen arroyos. Quienes, en cambio, hayan sido infieles, gozarán brevemente y comerán como comen los rebaños. Tendrán el Fuego por morada.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdlviii{¡Cuántas ciudades hemos hecho perecer, más fuertes que tu ciudad, que te ha expulsado, sin que hubiera quien les auxiliara!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdlix{¿Es que quien se basa en una prueba clara venida de su Señor es comparable a aquéllos cuya mala conducta ha sido engalanada y que siguen sus pasiones?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdlx{Imagen del Jardín prometido a quienes temen a Alá: habrá en él arroyos de agua incorruptible, arroyos de leche de gusto inalterable, arroyos de vino, delicia de los bebedores, arroyos de depurada miel. Tendrán en él toda clase de frutas y perdón de su Señor. ¿Serán como quienes están en el Fuego por toda la eternidad, a los que se da de beber un agua muy caliente que les roe las entrañas?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdlxi{Hay algunos de ellos que te escuchan, pero que, apenas salidos de tu casa, dicen a quienes han recibido la Ciencia: «¿Qué es lo que acaba de decir?» Éstos son aquéllos cuyo corazón Alá ha sellado y que siguen sus pasiones.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdlxii{A quienes se dejen dirigir, Él les dirigirá aún mejor y les dará que Le teman.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdlxiii{¡,Qué pueden esperar, sino que les llegue la Hora de repente? Ya se han manifestado síntomas de la misma. Pero ¿de qué les servirá que se les amoneste cuando ella les llegue?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdlxiv{Sabe, pues, que no hay más dios que Alá y pide perdón por tu pecado, así como por los creyentes y las creyentes. Alá conoce vuestras idas y venidas y dónde moráis.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdlxv{Los creyentes dicen: «¿Por qué no se revela una sura?» Pero, cuando se revela una sura unívoca en la que se menciona el combate, ves que los enfermos de corazón te miran como mira uno a quien ronda la muerte. Más les valdría\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdlxvi{obedecer y hablar como es debido. Y, una vez tomada una decisión, lo mejor para ellos sería que fuesen sinceros con Alá.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdlxvii{Si volvéis la espalda, os exponéis a corromper en la tierra y a cortar vuestros lazos de sangre.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdlxviii{A éstos es a quienes Alá maldice, volviéndoles sordos y ciegos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdlxix{¿Es que no meditan en el Corán ¿O es que sus corazones están cerrados con candado?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdlxx{Quienes han vuelto sobre sus pasos, después de haberse manifestado a ellos la Dirección claramente, han sido seducidos por el Demonio, pero les ha concedido una tregua.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxi{Esto es así porque dicen a quienes les repugna lo que Alá ha revelado: «En algunas cosas os obedeceremos». Alá, empero, sabe lo que ocultan.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxii{¡Qué pasará cuando los ángeles les llamen, golpeándoles en el rostro y en la espalda?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxiii{Esto es así porque van en pos de algo que irrita a Alá y, en cambio, les repugna lo que Le satisface. Por eso, hace vanas sus obras.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxiv{¿Es que creen los enfermos de corazón que Alá no va a descubrir su odio?\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxv{Si quisieramos, haríamos que les vieras: es reconocerías por sus rasgos: y, ciertamente, les reconocerás por el tono de sus palabras. Alá sabe lo que hacéis.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxvi{Hemos de probaros para saber quiénes de vosotros luchan y perseveran, así como para comprobar lo que se cuenta de vosotros.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxvii{Los infieles que hayan desviado a otros del camino de Alá y se hayan separado del Enviado, después de habérseles manifestado claramente la Dirección, no causarán ningún daño a Alá. Y hará vanas sus obras.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxviii{¡Creyentes! ¡Obedeced a Alá y obedeced al Enviado! ¡No hagáis vanas vuestras obras!\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxix{Alá no perdonará a los infieles que hayan desviado a otros del camino de Alá y mueran siendo infieles.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxx{¡No flaqueéis, pues, invitando a la paz, ya que seréis vosotros los que ganen! Alá está con vosotros y no dejará de premiar vuestras obras.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxi{La vida de acá es sólo juego y distracción. Pero, si creéis y teméis a Alá, Él os recompensará sin reclamaros vuestros bienes.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxii{Si os los reclamara con insistencia, os mostraríais avaros y descubriría vuestro odio.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxiii{He aquí que sois vosotros los invitados a gastar por la causa de Alá, pero hay entre vosotros algunos avaros. Y quien es avaro lo es, en realidad, en detrimento propio. Alá es Quien Se basta a Sí mismo, mientras que sois vosotros los necesitados. Y, si volvéis la espalda, hará que otro pueblo os sustituya, que no será como vosotros.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxiv{\basmalahes Te hemos concedido un claro éxito.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxv{Para perdonarte Alá tus primeros y tus últimos pecados, pefeccionar Su gracia en ti y dirigirte por una vía recta.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxvi{Para prestarte Alá un auxilio poderoso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxvii{Él es Quien ha hecho descender la sakina en los corazones de los creyentes para incrementar su fe. Las legiones de los cielos y de la tierra son de Alá. Alá es omnisciente, sabio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxviii{Para introducir a los creyentes y a las creyentes en jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente, y borrarles sus malas obras. Esto es, para Alá, un éxito grandioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxix{Para castigar a los hipócritas y a las hipócritas, a los asociadores y a las asociadoras que piensan mal de Alá. Sufrirán un revés. Alá se irritará con ellos, les maldecirá y les preparará la gehena. ¡Mal fin...!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdxc{Las legiones de los cielos y de la tierra son de Alá. Alá es poderoso, sabio.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdxci{Te hemos enviado como testigo, como nuncio de buenas nuevas y como monitor,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdxcii{para que los hombres crean en Alá y en Su Enviado, para que le ayuden y honren, para que Le glorifiquen mañana y tarde.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdxciii{Los que te juran fidelidad, la juran, en realidad, a Alá. La mano de Alá está sobre sus manos. Si uno quebranta una promesa la quebranta, en realidad, en detrimento propio. Si, en cambio, es fiel a la alianza concertada con Alá, Él le dará una magnífica recompensa.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdxciv{Los beduinos dejados atrás te dirán: «Nuestros bienes y familias nos han retenido. ¡Pide que nos perdone!» Dicen de palabra lo que no tienen en el corazón. Di: «¿Y quién podría impedir que Alá os hiciera mal o bien, si Él lo deseara?» ¡No! ¡Alá está bien informado de lo que hacéis!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdxcv{¡No! Creíais que el Enviado y los creyentes no iban a regresar nunca a los suyos y la idea os halagó. Pensasteis mal... Sois gente perdida...\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdxcvi{Quien no cree en Alá y en su Enviado... Hemos preparado para los infieles fuego de gehena.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdxcvii{El dominio de los cielos y de la tierra pertenece a Alá. Perdona a quien Él quiere y castiga a quien Él quiere. Alá es indulgente, misericordioso.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdxcviii{Cuando os pongáis en marcha para apoderaros de botín, los dejados atrás dirán: «¡Dejad que os sigamos!» Quisieran cambiar la Palabra de Alá. Di: «¡No nos seguiréis! ¡Así lo ha dicho Alá antes!» Ellos dirán: «¡No! ¡Es que tenéis celos de nosotros...!» ¡No! Comprenden, pero poco.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdxcix{Di a los beduinos dejados atrás: «Se os llamará contra un pueblo dotado de gran valor, contra el que tendréis que combatir a menos que se rinda. Si obedecéis, Alá os dará una bella recompensa. Pero, si volvéis la espalda, como ya hicisteis en otra ocasión, os infligirá un castigo doloroso».\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdc{«No hay por qué reprochar al ciego, al cojo o al enfermo. Y a quien obedezca a Alá y a Su Enviado, Él le introducirá en jardines por cuyos bajos fluyen arroyos. A quien, en cambio, vuelta la espalda, Él le infligirá un castigo doloroso»:\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdci{Alá ha estado satisfecho de los creyentes cuando éstos te han jurado fidelidad al pie del árbol. Él sabía lo que sus corazones encerraban e hizo descender sobre ellos la sakina, prometiéndoles, como recompensa, un éxito cercano\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcii{y mucho botín, del que se apoderarán. Alá es poderoso, sabio.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdciii{Alá os ha prometido mucho botín, del que os apoderaréis. Os ha acelerado éste y ha retirado de vosotros las manos de la gente, a fin de que sea signo para los creyentes y de dirigiros por una vía recta.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdciv{Y otro cuyo logro no está en vuestras manos pero sí en las de Alá. Alá es omnipotente.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcv{Si los infieles hubieran combatido contra vosotros, habrían vuelto la espalda. Luego, no encontrarán amigo ni auxiliar.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcvi{Tal es la práctica de Alá, que ya se había aplicado antes. Y encontrarás la práctica de Alá irreemplazable.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcvii{Él es Quien, en el valle de La Meca, retiró de vosotros sus manos y de ellos las vuestras, luego de haberos dado la victoria sobre ellos. Alá ve bien lo que hacéis.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcviii{Son ellos los infieles que os apartaron de la Mezquita Sagrada e impidieron que la víctima llegara al lugar del sacrificio. Y, si no llega a ser por hombres creyentes y por mujeres creyentes, a quienes no podíais reconocer, y que os exponíais, sin querer, a pisotear, provocando represalias por su parte... Para que Alá introduzca en Su misericordia a quien Él quiere. Si hubiera sido posible distinguirles, habríamos infligido un doloroso castigo a los infieles que entre ellos había.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcix{Cuando, dejados llevar los infieles de su fanatismo, el fanatismo propio del paganismo, Alá hizo descender Su sakina sobre Su Enviado y sobre los creyentes, y les impuso la palabra del temor de Alá. Tenían pleno derecho a ella y la merecían. Alá es omnisciente.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdcx{Alá ha realizado, ciertamente, el sueño de su Enviado: «En verdad, que habéis de entrar en la Mezquita Sagrada, si Alá quiere, en seguridad, con la cabeza afeitada y el pelo corto, sin temor». Él sabía lo que vosotros no sabíais. Además, ha dispuesto un éxito cercano.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcxi{Él es Quien ha mandado a Su Enviado con la Dirección y con la religión verdadera, para que prevalezca sobre toda otra religión. ¡Alá basta como testigo!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcxii{Mahoma es el Enviado de Alá. Quienes están con él son severos con los infieles y cariñosos entre sí. Se les ve inclinados o prosternados, buscando favor de Alá y satisfacerle. Se les nota en el rostro que se prosternan. Tal es su imagen en la Tora. Y en el Evangelio se les compara con la semilla que, habiendo germinado, fortifica su brote y éste crece y se yergue en el tallo, constituyendo la alegría del sembrador, para terminar irritando a los infieles por su medio. A quienes de ellos crean y obren bien, Alá les ha prometido perdón y una magnífica recompensa.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdcxiii{\basmalahes ¡Creyentes! ¡No os adelantéis a Alá y a su Enviado y temed a Alá! Alá todo lo oye, todo lo sabe.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcxiv{¡Creyentes! ¡No elevéis vuestra voz por encima de la del Profeta! ¡No le habléis en voz alta, como hacéis entre vosotros! Os expondríais a hacer vanas vuestras obras sin daros cuenta.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcxv{Quienes en presencia del Enviado de Alá bajan la voz son aquéllos cuyos corazones ha probado Alá para disponerlos a Su temor. Obtendrán perdón y magnífica recompensa.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcxvi{La mayoría de los que te llaman desde fuera de las habitaciones privadas no tienen entendimiento.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcxvii{Más les valdría esperar a que tú salieras adonde ellos están. Alá es indulgente, misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdcxviii{¡Creyentes! Si un malvado os trae una noticia, examinadla bien, no sea que lastiméis a gente por ignorancia y tengáis que arrepentiros de lo que habéis hecho.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdcxix{Sabed que está entre vosotros el Enviado de Alá. En muchos casos, si os obedeciera, os veríais en apuro. Pero Alá os ha hecho amar la fe, engalanándola a vuestros corazones. En cambio, os ha hecho aborrecer la incredulidad, el vicio y la desobediencia. Ésos son los bien dirigidos,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdcxx{por favor y gracia de Alá. Alá es omnisciente, sabio.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxi{Si dos grupos de creyentes combaten unos contra otros, ¡reconciliadles! Y, si uno de ellos oprime al otro, ¡combatid contra el opresor hasta reducirle a la obediencia de Alá! Y, cuando sea reducido, ¡reconciliadles de acuerdo con la justicia y sed equitativos! Alá ama a los que observan la equidad.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxii{Los creyentes son, en verdad, hermanos. ¡Reconciliad, pues, a vuestos hermanos y temed a Alá! Quizás, así, se os tenga piedad.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxiii{¡Creyentes! ¡No os burléis unos de otros! Podría ser que los burlados fueran mejores que los que se burlan. Ni las mujeres unas de otras. Podría ser que las burladas fueran mejores que las que se burlan. ¡No os critiquéis ni os llaméis con motes ofensivos! ¡Mala cosa es ser llamado 'perverso' después de haber recibido la fe! Los que no se arrepienten, ésos son los impíos.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxiv{¡Creyentes! ¡Evitad conjeturar demasiado! Algunas conjeturas son pecado. ¡No espiéis! ¡No calumniéis! ¿Os gustaría comer la carne de un hermano muerto? Os causaría horror... ¡Temed a Alá! Alá es indulgente, misericordioso.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxv{¡Hombres! Os hemos creado de un varón y de una hembra y hemos hecho de vosotros pueblos y tribus, para que os conozcáis unos a otros. Para Alá, el más noble de entre vosotros es el que más Le teme. Alá es omnisciente, está bien informado.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxvi{Los beduinos dicen: «¡Creemos!» Di: «¡No creéis! ¡Decid, más bien: 'Hemos abrazado el islam'! La fe no ha entrado aún en vuestros corazones. Pero, si obedecéis a Alá y a Su Enviado, no menoscabará nada vuestras obras. Alá es indulgente, misericordioso».\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxvii{Son creyentes únicamente los que creen en Alá y en Su Enviado, sin abrigar ninguna duda, y combaten por Alá con su hacienda y sus personas. ¡Ésos son los veraces!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxviii{Di: «¿Vais a enseñar a Alá en qué consiste vuestra religión, siendo así que Alá conoce lo que está en los cielos y en la tierra?» Alá es omnisciente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxix{Te recuerdan su conversión al islam como si, con ello, te hubieran agraciado. Di: «¡No me recordéis vuestra conversión al islam como si me hubiérais agraciado! ¡Al contrario! Es Alá quien os ha agraciado dirigiéndoos hacia la fe. Si es verdad lo que decíis...»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxx{Alá conoce lo oculto de los cielos y de la tierra. Alá ve bien lo que hacéis.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxi{\basmalahes q. ¡Por el glorioso Corán!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxii{Pero se asombran de que uno salido de ellos haya venido a advertirles. Y dicen los infieles: «¡Esto es algo asombroso!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxiii{¿Es que cuando muramos y seamos tierra...? Es volver de lejos...»\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxiv{Ya sabemos qué es lo que de ellos consume la tierra. Tenemos una Escritura que conserva.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxv{Pero han desmentido la Verdad cuando ha venido a ellos y se encuentran en un estado de confusión.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxvi{¿No ven el cielo que tienen encima, cómo lo hemos edificado y engalanado y no se ha agrietado?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxvii{Hemos extendido la tierra, colocado en ella firmes montañas y hecho crecer en ella toda especie primorosa,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxviii{como ilustración y amonestación para todo siervo arrepentido.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxix{Hemos hecho bajar del cielo agua bendita, mediante la cual hacemos que crezcan jardines y el grano de la cosecha,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdcxl{esbeltas palmeras de apretados racimos,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdcxli{para sustento de los siervos. Y, gracias a ella, devolvemos la vida a un país muerto. Así será la Resurrección.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlii{Antes de ello, ya habían desmentido el pueblo de Noé, los habitantes de ar-Ras, los tamudeos,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdcxliii{los aditas, Faraón, los hermanos de Lot,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdcxliv{los habitantes de la Espesura y el pueblo de Tubba. Todos ellos desmintieron a los enviados. Y se cumplió Mi amenaza.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlv{¿Es que Nos cansó la primera creación? Pues ellos dudan de una nueva creación.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlvi{Sí, hemos creado al hombre. Sabemos lo que su mente le sugiere. Estamos más cerca de él que su misma vena yugular.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlvii{Cuando los dos encargados de recoger recojan, sentados el uno a la derecha y el otro a la izquierda,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlviii{no pronunciará ninguna palabra que no tenga siempre a su lado a un observador preparado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlix{La agonía del moribundo traerá la Verdad: «¡Ahí tienes lo que rehuías!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdcl{Se tocará la trompeta. Ése es el día de la Amenaza.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcli{Cada uno vendrá acompañado de un conductor y de un testigo.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdclii{«Estas cosas te traían sin cuidado. Te hemos quitado el velo y, hoy, tu vista es penetrante».\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcliii{Su compañero dirá: «Esto es lo que tengo preparado».\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcliv{«¡Arrojad a la gehena a todo infiel pertinaz, desviado,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdclv{adversario del bien, violador de la ley, escéptico,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdclvi{que ponía, junto con Alá, a otro dios! ¡Arrojadlo al castigo severo!»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdclvii{Su compañero dirá: «¡Señor! No soy yo quien le hizo rebelarse, sino que él estaba ya profundamente extraviado».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdclviii{Dirá: «¡No discutáis ante Mí! Ya os amenacé por anticipado.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdclix{Mi sentencia es inmutable. Yo no soy injusto con Mis siervos».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdclx{El día que digamos a la gehena: «¿Estás ya llena?», ella dirá: «¿Aún hay más?»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdclxi{Y el Jardín será acercado a quienes hayan temido a Alá, bien cerca:\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdclxii{«Esto es lo que se os había prometido, a todo hombre sinceramente arrepentido, observador,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdclxiii{que tiene miedo secreto al Compasivo y viene con corazón contrito.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdclxiv{¡Entrad en él en paz! ¡Éste es el día de la Eternidad!»\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdclxv{Tendrán allí cuanto deseen y aún dispondremos de más.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdclxvi{¡A cuántas generaciones hemos hecho antes perecer, más temibles que ellos y que recorrieron el país en busca de escape.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdclxvii{Hay en ello, sí, una amonestación para quien tiene entendimiento, para quien aguza el oído y es testigo.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdclxviii{Creamos los cielos, la tierra y lo que entre ellos está en seis días, sin sufrir cansancio.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdclxix{¡Ten paciencia, pues, con lo que dicen y celebra las alabanzas de tu Señor antes de la salida del sol y de su puesta!\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdclxx{¡Glorifícale durante la noche y después de la azalá!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxi{¡Estate atento al día que el pregonero llame de cerca,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxii{al día que se oiga, de verdad, el Grito! Ése será el día de la Resurrección.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxiii{Somos Nosotros Quienes damos la vida y damos la muerte. Somos Nosotros el fin de todo.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxiv{El día que la tierra se abra despidiéndolos, rápidos..., Ésa es una reunión fácil para Nosotros.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxv{Sabemos bien lo que dicen... ¡No debes tú forzarles! ¡Amonesta, más bien, por el Corán a quien tema Mi amenaza!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxvi{\basmalahes ¡Por los que aventan!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxvii{¡Por las que llevan una carga!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxviii{¡Por las que se deslizan ligeras!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxix{¡Por los que distribuyen una orden!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxx{¡Ciertamente, aquello con que se os amenaza es verdad!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxi{Y el Juicio, sí, tendrá lugar.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxii{¡Por el cielo surcado de órbitas!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxiii{Estáis en desacuerdo.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxiv{Algunos son desviados de él.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxv{¡Malditos sean los que siempre están conjeturando,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxvi{que están en un abismo, despreocupados,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxvii{que preguntan: «¿Cuándo llegará el día del Juicio?»!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxviii{El día que se les pruebe al fuego:\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxix{«¡Gustad vuestra prueba! Esto es lo que estabais impacientes por conocer».\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdcxc{Los que temen a Alá estarán entre jardines y fuentes,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdcxci{tomando lo que su Señor les dé. Hicieron el bien en el pasado;\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcii{de noche dormían poco;\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcxciii{al rayar el alba, pedían perdón,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcxciv{y parte de sus bienes correspondía de derecho al mendigo y al indigente.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcv{En la tierra hay signos para los convencidos,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcvi{y en vosotros mismos también. ¿Es que no veis?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcvii{Y en el cielo tenéis vuestro sustento y lo que se os ha prometido.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcviii{¡Por el Señor del cielo y de la tierra, que es tanta verdad como que habláis!\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcix{¿Te has enterado de la historia de los huéspedes honrados de Abraham?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcc{Cuando entraron en su casa. Dijeron: «¡Paz!». Dijo: «¡Paz! Sois gente desconocida».\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcci{Se fue discretamente a los suyos y trajo un ternero cebado,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdccii{que les ofreció. Dijo: «¿Es que no coméis?»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcciii{Y sintió temor de ellos. Dijeron: «¡No temas!» Y le dieron la buena nueva de un muchacho lleno de ciencia.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcciv{Su mujer, entonces, se puso a gritar. Golpeóse el rostro y dijo: «Pero ¡si soy una vieja estéril!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdccv{Dijeron: «Así ha dicho tu Señor. Es Él el Sabio, el Omnisciente».\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdccvi{Dijo: «¿Qué es lo que os trae, ¡enviados!?»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdccvii{Dijeron: «Se nos ha enviado a un pueblo pecador\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdccviii{para enviar contra ellos piedras de barro cocido,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdccix{marcadas junto a tu Señor para los inmoderados».\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdccx{Y sacamos a los creyentes que en ella había,\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdccxi{pero sólo encontramos en ella una casa de gente sometida a Alá.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdccxii{Y dejamos en ella un signo para los que temen el castigo doloroso.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdccxiii{Y en Moisés. Cuando le enviamos a Faraón con una autoridad manifiesta.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdccxiv{Pero, seguro de su poder, se volvió y dijo: «¡Es un mago o un poseso!»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdccxv{Entonces les sorprendimos, a él y a sus tropas, y los arrojamos al mar. Había incurrido en censura.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdccxvi{Y en los aditas. Cuando enviamos contra ellos el viento desvastador,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdccxvii{que pulverizaba todo cuanto encontraba a su paso.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdccxviii{Y en los tamudeos. Cuando se les dijo: «¡Gozad aún por algún tiempo!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdccxix{Pero infringieron la orden de su Señor y les sorprendió el Rayo, viéndolo venir.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdccxx{No pudieron tenerse en pie, ni defenderse.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxi{Y al pueblo de Noé. Fue un pueblo perverso.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxii{Y el cielo, lo construimos con fuerza. Y, ciertamente, asignamos un vasto espacio.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxiii{Y la tierra, la extendimos. ¡Qué bien que la preparamos!\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxiv{Todo lo creamos por parejas. Quizás, así, os dejéis amonestar.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxv{«¡Refugiaos, pues, en Alá! Soy para vosotros, de Su parte, un monitor que habla claro.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxvi{¡No pongáis a otro dios junto con Alá! Soy para vosotros, de Su parte, un monitor que habla claro».\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxvii{Asimismo, no vino a los que fueron antes ningún enviado que no dijeran: «¡Es un mago o un poseso!»\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxviii{¿Es que se han legado eso unos a otros? ¡No! ¡Son gente rebelde!\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxix{¡Apártate de ellos y, así, no incurrirás en censura!\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxx{¡Y amonesta, que la amonestación aprovecha a los creyentes!\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxi{No he creado a los genios y a los hombres sino para que Me sirvan.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxii{No quiero de ellos ningún sustento, no quiero que Me alimenten.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxiii{Alá es el Proveedor de todo, el Fuerte, el Firme.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxiv{Los impíos correrán la misma suerte que corrieron sus semejantes. ¡Que no Me den, pues, prisa!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxv{¡Ay de los que no creen, por el día con que se les amenaza!\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxvi{\basmalahes ¡Por el Monte!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxvii{¡Por una Escritura, puesta por escrito\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxviii{en un pergamino desenrollado!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxix{¡Por la Casa frecuentada!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdccxl{¡Por la bóveda elevada!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdccxli{¡Por el mar hinchado!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlii{¡Sí, el castigo de tu Señor tendrá lugar,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdccxliii{nadie podrá rechazarlo!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdccxliv{El día que el cielo gire vertiginosamente\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlv{y se pongan las montañas en marcha.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlvi{Ese día ¡ay de los desmentidores,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlvii{que parloteaban por pasar el rato!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlviii{El día que se les empuje, violentamente, al fuego de la gehena:\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlix{«¡Éste es el fuego que desmentíais!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdccl{¿Es, pues, esto magia? ¿O es que no veis claro?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdccli{¡Arded en él! Debe daros lo mismo que lo aguantéis o no. Sólo se os retribuye por vuestras obras».\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcclii{Quienes temieron a Alá, en cambio, estarán en jardines y delicia,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdccliii{disfrutando de lo que su Señor les dé. Su Señor les habrá preservado del castigo del fuego de la gehena.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdccliv{«¡Comed y bebed en paz! ¡Por lo que habéis hecho!»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdcclv{Reclinados en lechos alineados. Y les daremos por esposas a huríes de grandes ojos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcclvi{Reuniremos con los creyentes a los descendientes que les siguieron en la fe. No les menoscabaremos nada sus obras. Cada uno será responsable de lo que haya cometido.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcclvii{Les proveeremos de la fruta y de la carne que apetezcan.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcclviii{Allí se pasarán unos a otros una copa cuyo contenido no incitará a vaniloquio ni a pecado.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcclix{Para servirles, circularán a su alrededor muchachos como perlas ocultas.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcclx{Y se volverán unos a otros para preguntarse.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxi{Dirán: «Antes vivíamos angustiados en medio de nuestra familia.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxii{Alá nos agració y preservó del castigo del viento abrasador.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxiii{Ya Le invocábamos antes. Es el Bueno, el Misericordioso».\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxiv{¡Amonesta, pues, porque, por la gracia de tu Señor, no eres adivino ni poseso!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxv{O dicen: «¡Un poeta...! ¡Esperaremos las vicisitudes de su sino!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxvi{Di: «¡Esperad! Yo espero con vosotros».\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxvii{¿Se les ordena en sueños que hablen así o es que son gente rebelde?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxviii{O dicen: «¡Él se lo ha inventado!» ¡No, no creen!\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxix{Si es verdad lo que dicen, ¡que traigan un relato semejante!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxx{¿Han sido creados de la nada? ¿O son ellos los creadores?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxi{¿O han creado los cielos y la tierra? No, no están convencidos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxii{¿O tienen los tesoros de tu Señor? ¿O se creen unos potentados?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxiii{¿O tienen una escala que les permita escuchar? El que de ellos lo consiga ¡que aporte una autoridad manifesta!\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxiv{¿O tendrá Él hijas, como vosotros tenéis hijos?\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxv{¿O es que les reclamas un salario tal que se vean abrumados de deudas?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxvi{¿O es que conocen lo oculto y toman nota?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxvii{¿O quieren urdir una estratagema? Los infieles serían sus víctimas.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxviii{¿O tienen un dios diferente de Alá? ¡Gloria a Alá, Que está por encima de lo que Le asocian!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxix{Si vieran caer parte del cielo, dirían: «Son nubes que se han amontonado».\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxx{Déjales hasta que les llegue su día, cuando sean fulminados,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxi{el día de su estratagema no les sirva de nada y nadie les auxilie.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxii{Los impíos sufrirán, además, otro castigo, pero la mayoría no saben.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxiii{¡Espera paciente la decisión de tu, Señor, pues te vemos! Y ¡celebra las alabanzas de tu Señor cuando estás de pie!\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxiv{¡Glorifícale durante la noche y al declinar las estrellas!\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxv{\basmalahes ¡Por la estrella, cuando declina!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxvi{Vuestro paisano no se extravía, ni se descarría.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxvii{No habla por propio impulso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxviii{No es sino una revelación que se ha hecho.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxix{Se la ha enseñado el muy poderoso,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdccxc{fuerte, majestuoso,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdccxci{mientras él estaba en lo más alto del horizonte.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcii{Luego, se acercó y quedó suspendido en el aire,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdccxciii{estaba a dos medidas de arco o menos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdccxciv{Reveló a Su siervo lo que reveló.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcv{No ha mentido el corazón en lo que vio.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcvi{¿Disputaréis, pues, con él sobre lo que ve?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcvii{Ya le había visto descender en otra ocasión,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcviii{junto al azufaifo del confín,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcix{junto al cual se encuentra el jardín de la Morada,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdccc{cuando el azufaifo estaba cubierto por aquello.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdccci{No se desvió la mirada. Y no erró.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcccii{Vio, ciertamente, parte de los signos tan grandes de su Señor.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdccciii{Y ¿qué os parecen al-Lat, al-Uzza\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdccciv{y la otra, Manat, la tercera?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcccv{¿Para vosotros los varones y para Él las hembras?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcccvi{Sería un reparto injusto.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcccvii{No son sino nombres que habéis puesto, vosotros y vuestros padres, a los que Alá no ha conferido ninguna autoridad. No siguen sino conjeturas y la concupiscencia de sus almas, siendo así que ya les ha venido de su Señor la Dirección.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcccviii{¿Obtendrá el hombre lo que desea?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcccix{Pero la otra vida y esta vida pertenecen a Alá.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcccx{¡Cuántos ángeles hay en los cielos, cuya intercesión no servirá de nada, a menos que antes dé Alá permiso a quien Él quiera, a quien Le plazca!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxi{Quienes no creen en la otra vida ponen, sí, a los ángeles nombres femeninos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxii{No tienen ningún conocimiento de ello. No siguen más que conjeturas, y éstas, frente a la Verdad, no sirven de nada.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxiii{Apártate de quien vuelve la espalda a Nuestra Amonestación y no desea sino la vida de acá.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxiv{Ésa es toda la ciencia que pueden alcanzar. Alá conoce bien a quien se extravía de Su camino y conoce bien a quien sigue la buena dirección.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxv{De Alá es lo que está en los cielos y en la tierra, para retribuir a los que obren mal por lo que hagan y retribuir a los que obren bien dándoles lo mejor.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxvi{Quienes evitan los pecados graves y las deshonestidades y sólo cometen pecados leves... Tu Señor es inmensamente indulgente. Os conocía bien cuando os creaba de la tierra y cuando erais un embrión en el seno de vuestra madre. ¡No os jactéis, pues, de puros! Él conoce bien a los que Le temen.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxvii{Y, ¿qué te parece el que vuelve la espalda?\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxviii{Da poco, es mezquino.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxix{¿Tiene la ciencia de lo oculto, que le permita ver?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxx{¿No se le ha informado del contenido de las Hojas de Moisés\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxi{y de Abraham, que cumplió:\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxii{que nadie cargará con la carga ajena,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxiii{que el hombre sólo será sancionado con arreglo a su propio esfuerzo,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxiv{que se verá el resultado de su esfuerzo,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxv{que será, luego, retribuido generosamente,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxvi{que el fin de todo es tu Señor,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxvii{que es Él Quien hace reír y hace llorar,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxviii{que es Él Quien da la muerte y da la vida,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxix{que Él crea la pareja, varón y hembra,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxx{de una gota cuando es eyaculada,\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxi{que a Él incumbe la otra creación,\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxii{que es Él Quien da riquezas y posesiones,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxiii{que es Él el Señor de Sirio,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxiv{que Él hizo perecer a los antiguos aditas\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxv{y a los tamudeos, sin dejar uno solo con vida,\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxvi{y, antes, al pueblo de Noé, que fue tan impío y rebelde,\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxvii{y aniquiló a la vuelta de arriba abajo.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxviii{cubriéndola como la cubrió?\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxix{¿Cuál, pues, de los beneficios de tu Señor pondrás en duda?\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxl{Ésta es una advertencia al estilo de las advertencias antiguas.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxli{Amenaza la Inminente.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlii{Nadie, fuera de Alá, puede quitarla.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxliii{¿Os asombráis, pues, de este discurso?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxliv{¿Y reís, en lugar de llorar,\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlv{permaneciendo indiferentes?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlvi{¡Prosternaos, pues, ante Alá y servidle!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlvii{\basmalahes Se acerca la Hora, se hiende la luna.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlviii{Si ven un signo, se apartan y dicen: «¡Es una magia continua!»\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlix{Desmienten y siguen sus pasiones. Pero todo está decretado.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcccl{Ya han recibido noticias disuasivas,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcccli{consumada sabiduría. Pero las advertencias no sirven.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdccclii{¡Apártate, pues, de ellos! El día que el Pregonero les convoque para algo horrible,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdcccliii{abatida la mirada, saldrán de las sepulturas como si fueran langostas esparcidas,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdcccliv{corriendo con el cuello extendido hacia el Pregonero. Dirán los infieles: «¡Éste es un día difícil!»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdccclv{Antes de ello, ya el pueblo de Noé había desmentido. Desmintieron a Nuestro siervo y dijeron: «¡Un poseso!», y fue rechazado.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdccclvi{Entonces, invocó a su Señor. «¡Estoy vencido! ¡Defiéndete!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdccclvii{Abrimos las puertas del cielo a una lluvia torrencial\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdccclviii{y en la tierra hicimos manar fuentes. Y el agua se encontró según una orden decretada.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdccclix{Le embarcamos en aquello de planchas y de fibras,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdccclx{que navegó bajo Nuestra mirada como retribución de aquél que había sido negado.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxi{La dejamos como signo. Pero ¿hay alguien que se deje amonestar?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxii{Y ¡cuáles no fueron Mi castigo y Mis advertencias!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxiii{Hemos facilitado el Corán para que pueda servir de amonestación. Pero ¿hay alguien que se deje amonestar?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxiv{Los aditas desmintieron y ¡cuáles no fueron Mi castigo y Mis advertencias!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxv{En un día nefasto e interminable enviamos contra ellos un viento glacial,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxvi{que arrancaba a los hombres como si hubieran sido troncos de palmeras descuajadas.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxvii{Y ¡cuáles no fueron Mi castigo y Mis advertencias!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxviii{Hemos facilitado el Corán para que pueda servir de amonestación. Pero ¿hay alguien que se deje amonestar?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxix{Los tamudeos desmintieron las advertencias\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxx{y dijeron: «¿Vamos a seguir a un solo mortal, salido de nosotros? ¡Estaríamos extraviados y deliraríamos!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxi{¿A él, entre nosotros, se le iba a confiar la Amonestación? ¡No, sino que es un mentiroso, un insolente!»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxii{¡Mañana verán quién es el mentiroso, el insolente!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxiii{Vamos a enviarles la camella para tentarles. ¡Obsérvales y ten paciencia!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxiv{Infórmales de que el agua debe repartirse entre ellos y de que beberán por turno.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxv{Llamaron a su paisano, que se hizo cargo y desjarretó.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxvi{Y ¡cuáles no fueron Mi castigo y Mis advertencias!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxvii{Les lanzamos un solo Grito y fueron como hierba seca que se emplea para levantar una cerca.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxviii{Hemos facilitado el Corán para que pueda servir de amonestación. Pero ¿hay alguien que se deje amonestar?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxix{El pueblo de Lot desmintió las advertencias.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxx{Enviamos contra ellos una tempestad de arena. Exceptuamos a la familia de Lot, a la que salvamos al rayar el alba,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxi{en virtud de una gracia venida de Nosotros. Así retribuimos al agradecido.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxii{Les había prevenido contra Nuestro rigor, pero pusieron en duda las advertencias.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxiii{Le exigieron a sus huéspedes y les apagamos los ojos. «¡Gustad Mi castigo y Mis advertencias!»\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxiv{A la mañana siguiente, temprano, les sorprendió un castigo duradero.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxv{«¡Gustad Mi castigo y Mis advertencias!»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxvi{Hemos facilitado el Corán para que pueda servir de amonestación. Pero ¿hay alguien que se deje amonestar?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxvii{Y, ciertamente, la gente de Faraón fue advertida.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxviii{Desmintieron todos Nuestros signos y les sorprendimos como sorprende Uno poderoso, potísimo.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxix{¿Son vuestros infieles mejores que aquéllos? ¿O hay en las Escrituras algo que os inmunice?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxc{¿O dicen: «Somos un conjunto capaz de defenderse»?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxci{Todos serán derrotados y huirán.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcii{Pero la Hora es el tiempo que se les ha fijado y la Hora es crudelísima, amarguísima.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxciii{Los pecadores están extraviados y deliran.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxciv{El día que sean arrastrados boca abajo al Fuego: «¡Gustad el contacto del saqar !»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcv{Todo lo hemos creado con medida.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcvi{Nuestra orden no consiste sino en una sola palabra, como un abrir y cerrar de ojos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcvii{Hemos hecho perecer a vuestros semejantes. Pero ¿hay alguien que se deje amonestar?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcviii{Todo lo que han hecho consta en las Escrituras.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcix{Todo, grande o pequeño, está con signado.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcm{Los temerosos de Alá estarán entre jardines y arroyos,\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcmi{en una sede buena, junto a un potísimo Monarca.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcmii{\basmalahes El Compasivo\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcmiii{ha enseñado el Corán.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcmiv{Ha creado al hombre,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcmv{le ha enseñado a explicar.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcmvi{El sol y la luna, para cómputo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcmvii{Las hierbas y los árboles se prosternan.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcmviii{Ha elevado el cielo. Ha establecido la balanza\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcmix{para que no faltéis al peso,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcmx{sino que deis la pesada equitativa, sin defraudar en el peso.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcmxi{La tierra la ha puesto al servicio de las criaturas.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcmxii{Hay en ella fruta y palmeras de fruto recubierto,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcmxiii{grano de vaina, plantas aromáticas.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcmxiv{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcmxv{Creó al hombre de arcilla, como la cerámica;\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcmxvi{y creó a los genios de fuego puro.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcmxvii{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcmxviii{Señor de los dos Orientes y Señor de los dos Occidentes.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcmxix{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcmxx{Ha dejado fluir las dos grandes masas de agua, que se encuentran.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxi{pero las separa una barrera que no rebasan.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxii{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxiii{De ambas provienen la perla y el coral.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxiv{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxv{Suyas son las embarcaciones, que sobresalen en el mar como mojones.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxvi{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxvii{Todo aquél que está sobre ella es perecedero.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxviii{Pero subsiste tu Señor, el Majestuoso y Honorable\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxix{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxx{Los que están en los cielos y en la tierra Le imploran. Siempre está ocupado en algo.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxi{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxii{Nos ocuparemos detenidamente de vosotros, dos cargas.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxiii{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxiv{¡Compañía de genios y de hombres! ¡Atravesad, si podéis, las regiones celestiales y terrestres! Pero no podréis atravesarlas sin ayuda de una autoridad...\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxv{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxvi{Serán lanzadas contra vosotros llamaradas de fuego sin humo y de bronce fundido, y no podréis defenderos.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxvii{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxviii{Cuando el cielo se hienda y se tiña de rojo coriáceo,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxix{-¿cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcmxl{ese día, ni los hombres ni los genios serán interrogados acerca de su pecado.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcmxli{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlii{Los pecadores serán reconocidos por sus rasgos y se les cogerá por el copete y por los pies.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcmxliii{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcmxliv{¡Ésa es la gehena que los pecadores desmentían!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlv{No pararán de ir y venir entre ella y el agua muy caliente.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlvi{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlvii{Para quien, en cambio, haya temido comparecer ante su Señor. habrá dos jardines\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlviii{-¿cuál. pues, de los beneficios de vuestro Señor negaréis?\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlix{frondosos,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcml{-¿cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcmli{con dos fuentes manando.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcmlii{-¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcmliii{En ellos habrá dos especies de cada fruta.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcmliv{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcmlv{Estarán reclinados en alfombras forradas de brocado. Tendrán a su alcance la fruta de los dos jardines.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcmlvi{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcmlvii{Estarán en ellos las de recatado mirar, no tocadas hasta entonces por hombre ni genio,\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcmlviii{-¿cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcmlix{cual jacinto y coral.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcmlx{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxi{La retribución del bien obrar ¿es otra que el mismo bien obrar?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxii{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxiii{Además de esos dos, habrá otros dos jardines,\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxiv{-¿cuál, pues, de los beneficios de vuestro Señor negaréis?-\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxv{verdinegros,\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxvi{-¿cuál, pues, de los beneficios de vuestro Señor negaréis?-\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxvii{con dos fuentes abundantes.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxviii{-¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxix{En ambos habrá fruta, palmeras y granados,\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxx{-¿cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxi{en ellos habrá buenas, bellas,\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxii{-¿cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxiii{huríes, retiradas en los pabellones,\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxiv{-¿cuál, pues, de los beneficios de vuestro Señor negaréis?-\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxv{no tocadas hasta entonces por hombre ni genio.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxvi{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxvii{Reclinados en cojines verdes y bellas alfombras.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxviii{¿Cuál, pues, de los beneficios de vuestro Señor negaréis?\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxix{¡Bendito sea el nombre de tu Señor, el Majestuoso y Honorable!\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxx{\basmalahes Cuando suceda el Acontecimiento,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxi{nadie podrá negarlo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxii{¡Abatirá, exaltará!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxiii{Cuando la tierra sufra una violenta sacudida\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxiv{y las montañas sean totalmente desmenuzadas,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxv{convirtiéndose en fino polvo disperso,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxvi{y seáis divididos en tres grupos...\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxvii{Los de la derecha -¿qué son los de la derecha?-\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxviii{los de la izquierda -¿qué son los de la izquierda?-\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxix{y los más distinguidos, que son los más distinguidos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcmxc{Éstos son los allegados,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcmxci{en los jardines de la Delicia.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcii{Habrá muchos de los primeros\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcmxciii{y pocos de los últimos.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcmxciv{En lechos entretejidos de oro y piedras preciosas,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcv{reclinados en ellos, unos enfrente de otros.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcvi{Circularán entre ellos jóvenes criados de eterna juventud\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcvii{con cálices. jarros y una copa de agua viva,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcviii{que no les dará dolor de cabeza ni embriagará,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcix{con fruta que ellos escogerán,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmm{con la carne de ave que les apetezca.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmi{Habrá huríes de grandes ojos,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmii{semejantes a perlas ocultas,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmiii{como retribución a sus obras.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmiv{No oirán allí vaniloquio ni incitación al pecado,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmv{sino una palabra: «¡Paz! ¡Paz!»\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmvi{Los de la derecha -¿qué son los de la derecha-\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmvii{estarán entre azufaifos sin espinas\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmviii{y liños de acacias,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmix{en una extensa sombra,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmx{cerca de agua corriente\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmxi{y abundante fruta,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmxii{inagotable y permitida,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmxiii{en lechos elevados.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmxiv{Nosotros las hemos formado de manera especial\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmxv{y hecho vírgenes,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmxvi{afectuosas, de una misma edad,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmxvii{para los de la derecha.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmxviii{Habrá muchos de los primeros\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmxix{y muchos de los últimos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmxx{Los de la izquierda -¿qué son los de la izquierda?-\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmxxi{estarán expuestos a un viento abrasador, en agua muy caliente,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmxxii{a la sombra de un humo negro,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmxxiii{ni fresca ni agradable.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmxxiv{Antes, estuvieron rodeados de lujo,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmxxv{sin salir del enorme pecado.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmxxvi{Decían: «Cuando muramos y seamos tierra y huesos, ¿se nos resucitará acaso?\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmxxvii{¿Y también a nuestros antepasados?»\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmxxviii{Di: «¡En verdad, los primeros y los últimos\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmxxix{serán reunidos en el momento fijado de un día determinado!»\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmxxx{Luego, vosotros, extraviados, desmentidores,\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxi{comeréis, sí, de un árbol, del Zaqqum,\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxii{de cuyos frutos llenaréis el vientre.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxiii{Y, además, beberéis agua muy caliente,\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxiv{sedientos como camellos que mueren de sed...,\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxv{Ese será su alojamiento el día del Juicio.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxvi{Nosotros os creamos. ¿Por qué, pues, no aceptáis?\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxvii{Y ¿qué os parece el semen que eyaculáis?\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxviii{¿Lo creáis vosotros o somos Nosotros los creadores?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxix{Nosotros hemos determinado que muráis y nadie podrá escapársenos,\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmmxl{para que otros seres semejantes os sucedan y haceros renacer a un estado que no conocéis.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmmxli{Ya habéis conocido una primera creación. ¿Por qué, pues, no os dejáis amonestar?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmmxlii{Y ¿qué os parece vuestra siembra?\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmmxliii{¿La sembráis vosotros o somos Nosotros los sembradores?\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmmxliv{Si quisiéramos, de vuestro campo haríamos paja seca e iríais lamentándoos:\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmmxlv{«Estamos abrumados de deudas.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmmxlvi{más aún, se nos ha despojado».\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmmxlvii{Y ¿qué os parece el agua que bebéis?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmmxlviii{¿La hacéis bajar de las nubes vosotros o somos Nosotros Quienes la hacen bajar?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmmxlix{Si hubiéramos querido, la habríamos hecho salobre. ¿Por qué, pues, no dais las gracias?\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmml{Y ¿qué os parece el fuego que encendéis?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmmli{¿Habéis hecho crecer vosotros el árbol que lo alimenta o somos Nosotros Quienes lo han hecho crecer?\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmmlii{Nosotros hemos hecho eso como recuerdo y utilidad para los habitantes del desierto.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmmliii{¡Glorifica, pues, el nombre de tu Señor, el Grandioso!\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmmliv{¡Pues no! ¡Juro por el ocaso de las estrellas!\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmmlv{(Juramento en verdad-si supierais...-solemne).\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmmlvi{¡Es, en verdad, un Corán noble,\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmmlvii{contenido en una Escritura escondida\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmmlviii{que sólo los purificados tocan,\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmmmlix{una revelación que procede del Señor del universo!\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmmlx{¡Tenéis en poco este discurso\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmmlxi{y hacéis de vuestra desmentida vuestro sustento?\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmmlxii{¿Por qué, pues, cuando se sube a la garganta,\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmmlxiii{viéndolo vosotros,\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmmlxiv{-y Nosotros estamos más cerca que vosotros de él, pero no percibís-,\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmmlxv{por qué, pues, si no vais a ser juzgados\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmmmlxvi{y es verdad lo que decís, no la hacéis volver?\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmmmlxvii{Si figura entre los allegados,\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmmmlxviii{tendrá reposo, plantas aromáticas y jardín de delicia.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmmmlxix{Si es de los de la derecha:\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmmmlxx{«¡Paz a ti, que eres de los de la derecha!»\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxi{Pero, si es de los extraviados desmentidores,\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxii{será alojado en agua muy caliente\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxiii{y arderá en fuego de gehena.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxiv{¡Esto es algo, sí, absolutamente cierto!\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxv{¡Glorifica, pues, el nombre de tu Señor, el Grandioso!\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxvi{\basmalahes Lo que está en los cielos y en la tierra glorifica a Alá. Él es el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxvii{Suyo es el dominio de los cielos y de la tierra. Él da la vida y da la muerte. Y es omnipotente.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxviii{Él es el Principio y el Fin, el Visible y el Escondido. Y es omnisciente.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxix{Él es Quien creó los cielos y la tierra en seis días. Luego, se instaló en el Trono. Sabe lo que penetra en la tierra y lo que de ella sale, lo que desciende del cielo y lo que a él asciende. Está con vosotros dondequiera que os encontréis. Alá ve bien lo que hacéis.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxx{Suyo es el dominio de los cielos y de la tierra. ¡Y todo será devuelto a Alá!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxi{Hace que la noche entre en el día y que el día entre en la noche. Y Él sabe bien lo que encierran los pechos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxii{¡Creed en Alá y en Su Enviado! Dad limosna de los bienes de los que Él os ha hecho últimos poseedores. Aquéllos de vosotros que hayan creído y dado limosna tendrán una gran recompensa.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxiii{Y ¿por qué no habéis de creer en Alá, siendo así que el Enviado os invita a creer en vuestro Señor y que ha concertado un pacto con vosotros? Si es que sois creyentes...\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxiv{Él es Quien revela a Su siervo signos claros para sacaros de las tinieblas a la luz. En verdad, Alá es manso, misericordioso con vosotros.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxv{Y ¿por qué no habéis de gastar por la causa de Alá, siendo así que la herencia de los cielos y de la tierra pertenece a Alá? No seréis todos iguales: unos, que han gastado y combatido antes del Éxito, tendrán una categoría más elevada que otros que han gastado y combatido después de ella. A todos, sin embargo, ha prometido Alá lo mejor. Alá está bien informado de lo que hacéis.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxvi{A quien haga a Alá un préstamo generoso, Él le devolverá el doble y le recompensará generosamente.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxvii{El día que veas la luz de los creyentes y de las creyentes correr ante ellos y a su derecha: «¡Buena nueva hoy para vosotros: jardines por cuyos bajos fluyen arroyos, en los que estaréis por toda la eternidad! ¡Ése es el éxito grandioso!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxviii{El día que los hipócritas y las hipócritas digan a los que creyeron: «¡Esperad a que tomemos de vuestra luz!» Se dirá: «¡Retroceded! ¡Buscad una luz!» Entre ellos se levantará una muralla con una puerta. Dentro estará la Misericordia y fuera, enfrente, el Castigo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxix{Les llamarán: «¿No estábamos con vosotros?» Dirán: «¡Claro que sí! Pero os dejasteis seducir, os mantuvisteis a la expectativa, dudasteis. Vuestros anhelos os engañaron hasta que vino la orden de Alá. El Engañador os engañó acerca de Alá.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmxc{Hoy no se aceptará ningún rescate por parte vuestra ni por parte de los que no creyeron. Vuestra morada será el Fuego, que es vuestro lugar apropiado». ¡Qué mal fin...!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmxci{¿No es hora ya de que se humillen los corazones de los creyentes ante la Amonestación de Alá y ante la Verdad revelada y de que no sean como quienes, habiendo recibido antes la Escritura, dejaron pasar tanto tiempo que se endureció su corazón? Muchos de ellos eran unos perversos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmxcii{¡Sabed que Alá vivifica la tierra después de muerta. Os hemos explicado las aleyas. Quizás, así, comprendáis.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmxciii{A quienes den limosna, ellos y ellas, haciendo un préstamo generoso a Alá, les devolverá el doble y les recompensará generosamente.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmxciv{Los que crean en Alá y en Sus enviados serán los veraces y los testigos ante su Señor. Recibirán su recompensa y su luz. Pero quienes no crean y desmientan Nuestros signos morarán en el fuego de la gehena.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmxcv{¡Sabed que la vida de acá es juego, distracción y ornato, revalidad en jactancia, afán de más hacienda, de más hijos! Es como un chaparrón: la vegetación resultante alegra a los sembradores, pero luego se marchita y ves que amarillea; luego, se convierte en paja seca. En la otra vida habrá castigo severo o perdón y satisfacción de Alá, mientras que la vida de acá no es más que falaz disfrute.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmxcvi{¡Rivalizad en la obtención del perdón de vuestro Señor y de un Jardín tan vasto como el cielo y la tierra, preparado para los que creen en Alá y en Sus enviados! Ese es el favor de Alá, que da a quien Él quiere. Alá es el Dueño del favor in menso.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmxcvii{No ocurre ninguna desgracia, ni a la tierra ni a vosotros mismos, que no esté en una Escritura antes de que la ocasionemos. Es cosa fácil para Alá.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmxcviii{Para que no desesperéis si no conseguís algo y para que no os regocijéis si lo conseguís. Alá no ama a nadie que sea presumido, jactancioso,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmxcix{a los avaros que ordenan avaricia a los hombres. Pero quien vuelve la espalda..., Alá es Quien Se basta a Sí mismo, el Digno de Alabanza.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmc{Ya hemos mandado a nuestros enviados con las pruebas claras. Y hemos hecho descender con ellos la Escritura y la Balanza, para que los hombres observen la equidad. Hemos hecho descender el hierro, que encierra una gran fuerza y ventajas para los hombres. A fin de que Alá sepa quiénes les auxilian en secreto, a Él y a Sus enviados. Alá es fuerte poderoso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmci{Ya hemos enviado a Noé y a Abraham y confiado a su descendencia el profetismo y la Escritura. Entre sus descendientes los hubo bien dirigidos, pero muchos de ellos fueron unos perversos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcii{Tras ellos, mandamos a Nuestros otros enviados, así como Jesús, hijo de María, a quien dimos el Evangelio. Pusimos en los corazones de quienes le siguieron mansedumbre, misericordia y monacato. Este último fue instaurado por ellos -no se lo prescribimos Nosotros- sólo por deseo de satisfacer a Alá, pero no lo observaron como debían. Remuneramos a quienes de ellos creyeron, pero muchos de ellos fueron unos perversos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmciii{¡Creyentes! ¡Temed a Alá y creed en Su Enviado! Os dará, así, participación doble en Su misericordia, os pondrá una Luz que ilumine vuestra marcha y os perdonará. Alá es indulgente, misericordioso.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmciv{¡Que la gente de la Escritura sepa que no puede disponer nada del favor de Alá, que el favor está en la mano de Alá, que da a quien Él quiere! ¡Alá es el Dueño del favor inmenso!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcv{\basmalahes Alá ha oído lo que decía la que discutía contigo a propósito de su esposo y que se quejaba a Alá. Alá oye vuestro diálogo. Alá todo lo oye, todo lo ve.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcvi{Aquéllos de vosotros que repudian a sus mujeres mediante la fórmula: «¡Eres para mí como la espalda de mi madre!»... Ellas no son sus madres. Sólo son sus madres las que les han dado a luz. Dicen, ciertamente, algo reprobable y erróneo. Pero Alá es, sí, perdonador, indulgente.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcvii{Quienes repudian a sus mujeres mediante la fórmula: «¡Eres para mí como la espalda de mi madre!» y la repiten, deben, antes de cohabitar de nuevo, manumitir a un esclavo. Se os exhorta a ello. Alá está bien informado de lo que hacéis.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcviii{Quien no pueda hacerlo, deberá ayunar durante dos meses consecutivos antes de cohabitar de nuevo. Quien no pueda, deberá alimentar a sesenta pobres. Para que creáis en Alá y en Su Enviado. Éstas son las leyes de Alá. Los infieles tendrán un castigo doloroso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcix{Quienes se oponen a Alá y a su Enviado serán derribados como lo fueron quienes les precedieron. Hemos revelado signos claros. Los infieles tendrán un castigo humillante.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcx{El día que Alá les resucite a todos, ya les informará de lo que hicieron. Alá lo habrá tenido en cuenta, mientras que ellos lo habrán olvidado. Alá es testigo de todo.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcxi{¿No ves que Alá conoce lo que está en los cielos y en la tierra? No hay conciliábulo de tres personas en que no sea Él el cuarto, ni de cinco personas en que no sea Él el sexto. Lo mismo si son menos que si son más, Él siempre está presente, dondequiera que se encuentren. Luego, el día de la Resurrección, ya les informará de lo que hicieron. Alá es omnisciente.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcxii{¿No ves a aquéllos a quienes se ha prohibido celebrar conciliábulos, que se obstinan en lo prohibido y los celebran, haciéndose culpables de pecado, de violación de la ley y de desobediencia al Enviado? Cuando vienen a ti, te saludan de manera distinta a como Alá te saluda y dicen para sí: «¿Cómo es que Alá no nos castiga por lo que decimos?» Les bastará con la gehena, en la que arderán. ¡Qué mal fin...!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcxiii{¡Creyentes! Cuando celebréis un conciliábulo, no lo hagáis con ánimo de pecar, de violar la ley y de desobedecer al Enviado, sino con el ánimo de ser buenos y temerosos de Alá. ¡Y temed a Alá, hacia Quien seréis congregados!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcxiv{El conciliábulo es sólo cosa del Demonio, para entristecer a los que creen, pero que no puede hacerles ningún daño, a menos que Alá lo permita. ¡Que los creyentes confíen en Alá!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcxv{¡Creyentes! Cuando se os dice: «¡Haced sitio en las asambleas!» hacedlo así para que Alá os haga también sitio. Y si se os dice: «¡Levantaos!», hacedlo así para que Alá también eleve la categoría de aquéllos de vosotros que crean y reciban la Ciencia. Alá está informado de lo que hacéis.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcxvi{¡Creyentes! Cuando queráis tener una conversación a solas con el Enviado, hacedla preceder de una limosna. Es mejor para vosotros y más puro. Si no podéis, Alá es indulgente, misericordioso\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcxvii{¿Os arredra hacer preceder vuestra conversación a solas de limosnas? Si no lo hacéis y Alá se aplaca con vosotros, ¡haced la azalá, dad el azaque y obedeced a Alá y a su Enviado! Alá está bien informado de lo que hacéis.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcxviii{¿No has visto a quienes han tomado como protectores a gente que ha incurrido en la ira de Alá? No son ni de los vuestros ni de los suyos y juran en falso deliberadamente.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcxix{Alá ha preparado para ellos un castigo severo. Lo que han hecho está mal.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcxx{Se han escudado en sus juramentos y han desviado a otros del camino de Alá. Tendrán un castigo humillante.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxi{Ni su hacienda ni sus hijos le servirán de nada frente a Alá. Esos tales morarán en el Fuego eternamente.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxii{El día que Alá les resucite a todos, Le jurarán a Él como os juran a vosotros, creyendo apoyarse en algo sólido. ¿No son ellos los que mienten?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxiii{El Demonio se ha apoderado de ellos y les ha hecho olvidarse del recuerdo de Alá. Esos tales son los partidarios del Demonio. Y ¿no son los partidarios del Demonio los que pierden?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxiv{Los que se oponen a Alá y a Su Enviado estarán entre los más viles.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxv{Alá ha escrito: «¡Venceré, en verdad! ¡Yo y Mis enviados!» Alá es fuerte, poderoso.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxvi{No encontrarás a gente que crea en Alá y en el último Día y que tenga cariño a quienes se oponen a Alá y a Su Enviado, aunque éstos sean sus padres, sus hijos varones, sus hermanos o los miembros de su misma tribu. He inscrito la fe en sus corazones, les ha fortalecido con un espíritu de Él y les introducirá en jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente. Alá está satisfecho de ellos y ellos lo están de Él. Ésos constituyen el partido de Alá. Y ¿no son los partidarios de Alá los que prosperan?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxvii{\basmalahes Lo que está en los cielos y en la tierra glorifica a Alá. Él es el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxviii{Él es Quien expulsó de sus viviendas a los de la gente de la Escritura que no creían, cuando la primera reunión. No creíais que iban a salir y ellos creían que sus fortalezas iban a protegerles contra Alá. Pero Alá les sorprendió por donde menos lo esperaban. Sembró el terror en sus corazones y demolieron sus casas con sus propias manos y con la ayuda de los creyentes. Los que tengáis ojos ¡escarmentad!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxix{Si Alá no hubiera decretado su destierro, les habría castigado en la vida de acá. En la otra vida, no obstante, sufrirán el castigo del Fuego,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxx{por haberse separado de Alá y de Su Enviado. Quien se separa de Alá... Alá castiga severamente.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxi{Cuando talabais una palmera o la dejabais en pie, lo hacíais con permiso de Alá y para confundir a los perversos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxii{No habéis contribuido ni con caballos ni con camellos a lo que, de ellos, ha concedido Alá a Su Enviado. Alá, empero, permite a Sus enviados que dominen a quien Él quiere. Alá es omnipotente.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxiii{Lo que Alá ha concedido a Su Enviado, de la población de las ciudades, pertenece a Alá, al Enviado. a sus parientes, a los huérfanos, a los pobres y al viajero. Para que no vaya de nuevo a parar a los que de vosotros ya son ricos. Pero, si el Enviado os da algo, aceptadlo. Y, si os prohíbe algo, absteneos. Y ¡temed a Alá! Alá castiga severamente.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxiv{A los emigrados necesitados, que fueron expulsados de sus hogares y despojados de sus bienes cuando buscaban favor de Alá y satisfacerle, auxiliar a Alá y a Su Enviado. Ésos son los veraces.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxv{Los ya establecidos en la Casa y en la fe desde antes de su llegada, aman a los que han emigrado a ellos, no codician lo que se les ha dado y les prefieren a sí mismos, aun si están en la penuria. Los que se guarden de su propia codicia, ésos son quienes prosperarán.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxvi{Quienes vinieron después de ellos, dicen: «¡Señor! ¡Perdónanos, a nosotros y a nuestros hermanos que nos han precedido en la fe! ¡Haz que no abriguen nuestros corazones rencor a los que creen! ¡Señor! Tú eres manso, misericordioso».\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxvii{¿No has visto a los hipócritas, que dicen a sus hermanos infieles de los de la gente de la Escritura: «Si os expulsan, nos iremos, ciertamente, con vosotros, y nunca obedeceremos a nadie que nos mande algo contra vosotros. Y si os atacan, ciertamente, os auxiliaremos»? Alá es testigo de que mienten.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxviii{Si son expulsados, no se irán con ellos. Si son atacados, no les auxiliarán. Y aun suponiendo que les auxiliaran, seguro que volvían la espalda. Luego, no serán auxiliados.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxix{Infundís en sus pechos más terror que Alá. Es que son gente que no comprende.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcxl{No combatirán unidos contra vosotros, sino en poblados fortificados o protegidos por murallas. Sus disensiones internas son profundas. Les creéis unidos, pero sus corazones están desunidos. Es que son gente que no razona.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcxli{Como los que fueron poco antes que ellos. Gustaron la gravedad de su conducta y tendrán un castigo doloroso.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlii{Como el Demonio cuando dice al hombre: «¡No creas!». Y, cuando ya no cree, dice: «Yo no soy responsable de ti. Yo temo a Alá, Señor del universo».\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcxliii{Su fin será el Fuego, eternamente. Ésa es la retribución de los impíos.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcxliv{¡Creyentes! ¡Temed a Alá! ¡Que cada uno considere lo que prepara para Mañana! ¡Temed a Alá! Alá está bien informado de lo que hacéis.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlv{No seáis como quienes, habiendo olvidado a Alá, hace Él que se olviden de sí mismos. Esos tales son los perversos.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlvi{No son iguales los moradores del Fuego y los moradores del Jardín. Los moradores del Jardín son los que triunfan.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlvii{Si hubiéramos hecho descender este Corán en una montaña, habrías visto a ésta humillarse y henderse por miedo a Alá. Proponemos a los hombres estos símiles. Quizás, así, reflexionen.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlviii{Es Alá -no hay más dios que Él-, el Conocedor de lo oculto y de lo patente. Es el Compasivo, el Misericordioso.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlix{Es Alá -no hay más dios que Él-, el Rey, el Santísimo, la Paz, Quien da Seguridad, el Custodio, el Poderoso, el Fuerte, el Sumo. ¡Gloria a Alá! ¡Está por encima de lo que Le asocian!\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcl{Es Alá, el Creador, el Hacedor, el Formador. Posee los nombres más bellos. Lo que está en los cielos y en la tierra Le glorifica. Es el Poderoso, el Sabio.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcli{\basmalahes ¡Creyentes! ¡No toméis como amigos a los enemigos Míos y vuestros, dándoles muestras de afecto, siendo así que no creen en la Verdad venida a vosotros! Expulsan al Enviado y os expulsan a vosotros porque creéis en Alá vuestro Señor. Si salís para luchar por Mi causa y por deseo de agradarme, ¿les tendréis un afecto secreto? Yo sé bien lo que ocultáis y lo que manifestáis. Quien de vosotros obra así, se extravía del camino recto.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmclii{Si dan con vosotros, son para vosotros enemigos y os maltratan de obra y de palabra. Querrían que no creyerais...\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcliii{El día de la Resurrección no os aprovecharán ni vuestros parientes ni vuestros hijos. Él fallará acerca de vosotros. Alá ve bien lo que hacéis.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcliv{Tenéis un bello modelo en Abraham y en los que con él estaban. Cuando dijeron a su pueblo: «No somos responsables de vosotros ni de lo que servís en lugar de servir a Alá. ¡Renegamos de vosotros! ¡Ha aparecido, entre nosotros y vosotros, hostilidad y odio para siempre mientras no creáis en Alá Solo!» No es de imitar, en cambio, Abraham cuando dijo a su padre: «He de pedir perdón para ti, aunque no pueda hacer nada por ti contra Alá. ¡Señor! Confiamos en Ti y a Ti nos volvemos arrepentidos. ¡Eres Tú el fin de todo!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmclv{¡Señor! ¡No hagas de nosotros instrumento de tentación para los infieles! ¡Perdónanos, Señor! Eres Tú el Poderoso, el Sabio».\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmclvi{Tenéis en ellos un bello modelo para quien cuenta con Alá y con el último Día. Pero quien vuelve la espalda,... Alá es Quien Se basta a Sí mismo, el Digno de Alabanza.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmclvii{Quizá establezca Alá la amistad entre vosotros y los que de ellos tenéis por enemigos. Alá es capaz, Alá es indulgente, misericordioso.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmclviii{Alá no os prohíbe que seáis buenos y equitativos con quienes no han combatido contra vosotros por causa de la religión, ni os han expulsado de vuestros hogares. Alá ama a los que son equitativos.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmclix{Lo que sí os prohíbe Alá es que toméis como amigos a los que han combatido contra vosotros por causa de la religión y os han expulsado de vuestros hogares o han contribuído a vuestra expulsión. Quienes les tomen como amigos, ésos son los impíos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmclx{¡Creyentes! Cuando vengan a vosotros mujeres creyentes que hayan emigrado, ¡examinadlas! Alá conoce bien su fe. Si comprobáis que de verdad son creyentes, no las devolváis a los infieles: ni ellas son lícitas para ellos ni ellos lo son para ellas. ¡Reembolsadles lo que hayan gastado! No tenéis nada que reprocharos si os casáis con ellas, con tal que les entreguéis su dote. Pero no retengáis a las infieles. Pedid lo que hayáis gastado, y que ellos también pidan lo que hayan gastado. Ésa es la decisión de Alá. Él decide entre vosotros. Alá es omnisciente, sabio.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmclxi{Si alguna de vuestras esposas se pasa a los infieles y, luego, os toca a vosotros vencer, dad a aquéllos cuyas esposas hayan huido otro tanto de lo que habían gastado. ¡Temed a Alá, en Quien creéis!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmclxii{¡Profeta! Cuando las creyentes vengan a ti a prestarte juramento de fidelidad, de que no asociarán nada a Alá, que no robarán, que no fornicarán, que no matarán a sus hijos, que no dirán calumnia forjada entre sus manos y pies, que no te desobedecerán en lo que se juzgue razonable, acepta su juramento y pide a Alá que les perdone. Alá es indulgente, misericordioso.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmclxiii{¡Creyentes! ¡No toméis como amigos a gente que ha incurrido en la ira de Alá! Desesperan de la otra vida, como los infieles desesperan de los sepultados.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmclxiv{\basmalahes Lo que está en los cielos y en la tierra glorifica a Alá. Él es el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmclxv{¡Creyentes! ¿Por qué decís lo que no hacéis?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmclxvi{Alá aborrece mucho que digáis lo que no hacéis.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmclxvii{Alá ama a los que luchan en fila por Su causa, como si fueran un sólido edificio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmclxviii{Y cuando Moisés dijo a su pueblo: «¡Pueblo! ¿Por qué me molestáis sabiendo que soy el que Alá os ha enviado?» Y, cuando se desviaron, Alá desvió sus corazones. Alá no dirige al pueblo perverso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmclxix{Y cuando Jesús, hijo de María, dijo: «¡Hijos de Israel! Yo soy el que Alá os ha enviado, en confirmación de la Tora anterior a mí, y como nuncio de un Enviado que vendrá después de mí, llamado Ahmad». Pero, cuando vino a ellos con las pruebas claras, dijeron: «¡Esto es manifiesta magia!»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmclxx{¿Hay alguien más impío que quien inventa la mentira contra Alá, siendo llamado al islam? Alá no dirige al pueblo impío.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxi{Quisiera apagar de un soplo la Luz de Alá, pero Alá hará que resplandezca, a despecho de los infieles.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxii{Él es Quien ha mandado a Su Enviado con la Dirección y con la religión verdadera para que prevalezca sobre toda otra religión, a despecho de los asociadores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxiii{¡Creyentes! ¿Queréis que os indique un negocio que os librará de un castigo doloroso?:\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxiv{¡Creed en Alá y en Su Enviado y combatid por Alá con vuestra hacienda y vuestras personas! Es mejor para vosotros. Si supierais...\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxv{Así, os perdonará vuestros pecados y os introducirá en jardines por cuyos bajos fluyen arroyos y en viviendas agradables en los jardines del edén. ¡Ese es el éxito grandioso!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxvi{Y otra cosa, que amaréis: el auxilio de Alá y un éxito cercano. ¡Y anuncia la buena nueva a los creyentes!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxvii{¡Creyentes! Sed los auxiliares de Alá como cuando Jesús, hijo de María, dijo a los apóstoles: «¿Quiénes son mis auxiliares en la vía que lleva a Alá?» Los apóstoles dijeron: «Nosotros somos los auxiliares de Alá». De los hijos de Israel unos creyeron y otros no. Fortalecimos contra sus enemigos a los que creyeron y salieron vencedores.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxviii{\basmalahes Lo que está en los cielos y en la tierra glorifica a Alá, el Rey, el Santísimo, el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxix{Él es quien ha mandado a los gentiles un Enviado salido de ellos, que les recita Sus aleyas, les purifica y les enseña la Escritura y la Sabiduría. Antes estaban, evidentemente, extraviados.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxx{Y a otros de ellos, que no se les han incorporado aún. Es el Poderoso, el Sabio.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxi{Ése es el favor de Alá, que dispensa a quien Él quiere. Alá es el Dueño del favor inmenso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxii{Aquéllos a quienes se había confiado la Tora pero no la observaron son semejantes a un asno que lleva libros. ¡Qué mal ejemplo da la gente que desmiente los signos de Alá! Alá no dirige al pueblo impío.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxiii{Di: «¡Judíos! Si pretendéis ser los amigos de Alá, con exclusión de otras gentes, entonces, ¡desead la muerte, si sois consecuentes!»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxiv{Pero nunca la desean por lo que sus manos han cometido. Alá conoce bien a los impíos.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxv{Di: «La muerte, de la que huís, os saldrá al encuentro. Luego, se os devolverá al Conocedor de lo oculto y de lo patente y ya os informará Él de lo que hacíais».\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxvi{¡Creyentes! Cuando se llame el viernes a la azalá, ¡corred a recordar a Alá y dejad el comercio! Es mejor para vosotros. Si supierais...\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxvii{Terminada la azalá, ¡id a vuestras cosas, buscad el favor de Alá! ¡Recordad mucho a Alá! Quizás, así, prosperéis.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxviii{Cuando ven un negocio o una distracción, escapan allá y te dejan plantado. Di: «Lo que Alá tiene es mejor que la distracción y el negocio. Alá es el Mejor de los proveedores».\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxix{\basmalahes Cuando los hipócritas vienen a ti, dicen: «Atestiguamos que tú eres, en verdad, el Enviado de Alá». Alá sabe que tú eres el enviado. Pero Alá es testigo de que los hipócritas mienten.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcxc{Se han escudado en sus juramentos y han desviado a otros del camino de Alá. ¡Qué mal está lo que han hecho!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcxci{Porque primero creyeron y, luego, han descreído. Sus corazones han sido sellados, así que no entienden.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcii{Cuando se les ve, se admira su presencia. Si dicen algo, se escucha lo que dicen. Son como maderos apoyados. Creen que todo grito va dirigido contra ellos. Son ellos el enemigo. ¡Ten, pues, cuidado con ellos! ¡Que Alá les maldiga! ¡Cómo pueden ser tan desviados!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcxciii{Cuando se les dice: «¡Venid, que el Enviado de Alá pedirá perdon por vosotros!», vuelven la cabeza y se les ve retirarse altivamente.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcxciv{Da lo mismo que pidas o no que se les perdone. Alá no les perdonará. Alá no dirige a la gente perversa.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcv{Son ellos los que dicen: «No gastéis nada en favor de los que están con el Enviado de Alá; así, se escaparán de él». Los tesoros de los cielos y de la tierra pertenecen a Alá, pero los hipócritas no comprenden.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcvi{Dicen: «Si volvemos a la ciudad, los más poderosos, sin duda, expulsarán de ella a los más débiles». Pero el poder pertenece a Alá, a Su Enviado y a los creyentes. Los hipócritas, empero, no saben.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcvii{¡Creyentes! Que ni vuestra hacienda ni vuestros hijos os distraigan del recuerdo de Alá. Quienes eso hacen, son los que pierden.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcviii{Gastad de lo que os hemos proveído, antes de que la muerte venga a uno de vosotros y éste diga: «¡Señor! ¿Por qué no me das algo más de tiempo, para que dé limosna y sea de los justos?».\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcix{Cuando le vence a uno su plazo, Alá no le concede prórroga. Alá está bien informado de lo que hacéis.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcc{\basmalahes Lo que está en los cielos y en la tierra glorifica a Alá. Suyo es el dominio, Suya la alabanza. Es omnipotente.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcci{Él es Quien os ha creado. Entre vosotros, unos son infieles, otros son creyentes. Alá ve bien lo que hacéis.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccii{Ha creado con un fin los cielos y la tierra y a vosotros os ha formado armoniosamente. ¡Es Él el fin de todo!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcciii{Conoce lo que está en los cielos y en la tierra, conoce lo que ocultáis y lo que manifestáis. Y Alá conoce bien lo que encierran los pechos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcciv{¿No os habéis enterado de lo que pasó a los que fueron antes infieles y gustaron la gravedad de su conducta? Tendrán un castigo doloroso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccv{Porque vinieron a ellos sus enviados con las pruebas claras y dijeron: «¿Es que van a dirigirnos unos mortales?» No creyeron y volvieron la espalda. Pero Alá no necesitaba de ellos. Alá Se basta a Sí mismo, es digno de alabanza.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccvi{Los infieles pretenden que no van a ser resucitados. Di: «¡Claro que sí, por mi Señor!, que habéis de ser resucitados y, luego, habéis de ser informados de lo que hicisteis. Es cosa fácil para Alá».\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccvii{¡Creed, pues, en Alá, en Su Enviado y en la Luz que Nosotros hemos revelado! Alá está bien informado de lo que hacéis.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccviii{El día que Él os reúna para el día de la Reunión, ése será el día del Engaño Mutuo. Entonces, a quienes crean en Alá y obren bien, Él les borrará sus malas obras y les introducirá en jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente, para siempre. ¡Ése es el éxito grandioso!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccix{Pero quienes no crean y desmientan Nuestros signos, ésos morarán en el Fuego eternamente. ¡Qué mal fin...!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccx{No sucede ninguna desgracia si Alá no lo permite. Él dirige el corazón de quien cree en Alá. Alá es omnisciente.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccxi{¡Y obedeced a Alá, obedeced al Enviado! Si volvéis la espalda,... A Nuestro Enviado le incumbe sólo la transmisión clara.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccxii{¡Alá! ¡No hay más dios que Él! ¡Que e los creyentes confíen en Alá!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmccxiii{¡Creyentes! En algunas de vuestras esposas y en algunos de vuestros hijos tenéis un enemigo. ¡Cuidado con ellos! Pero, si sois indulgentes, si sois tolerantes, si perdonáis,... Alá es indulgente, misericordioso.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmccxiv{Vuestra hacienda y vuestros hijos no son más que tentación, mientras que Alá tiene junto a Sí una magnífica recompensa.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmccxv{¡Temed cuanto podáis a Alá! ¡Escuchad! ¡Obedeced! ¡Gastad! Es en vuestro propio beneficio. Los que se guardan de su propia codicia, ésos son los que prosperarán.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmccxvi{Si hacéis un préstamo generoso a Alá, Él os devolverá el doble y os perdonará. Alá es muy agradecido, benigno.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmccxvii{El Conocedor de lo oculto y de lo patente, el Poderoso, el Sabio.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmccxviii{\basmalahes ¡Profeta! Cuando repudiáis a las mujeres, ¡hacedlo al terminar su período de espera! ¡Contad bien los días de ese período y temed a Alá, vuestro Señor! ¡No las expulséis de sus casas ni ellas salgan, a menos que sean culpables de deshonestidad manifiesta! Ésas son las leyes de Alá. Y quien viola las leyes de Alá es injusto consigo mismo. Tú no sabes... Quizá Alá, entre tanto, suscite algún imprevisto...\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccxix{Cuando lleguen a su término, retenedlas decorosamente o separaos de ellas decorosamente. Y requerid el testimonio de dos personas justas de los vuestros y atestiguad ante Alá. A esto se exhorta a quien cree en Alá y en el último Día. A quien teme a Alá, Él le da una salida\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccxx{y le provee de un modo insospechado por él. A quien confía en Alá, Él le basta. Alá consigue lo que se propone. Alá ha establecido una medida para cada cosa.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxi{Para aquéllas de vuestras mujeres que ya no esperan tener la menstruación, si tenéis dudas, su período de espera será de tres meses; lo mismo para las impúberes. Para las embarazadas, su período de espera terminará cuando den a luz. A quien teme a Alá, Él le facilita sus cosas.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxii{Ésta es la orden que Alá os ha revelado. Alá borra las malas obras de quien Le teme y le da una magnífica recompensa.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxiii{¡Alojadlas, según vuestros medios, en vuestra misma vivienda! ¡No les hagáis daño con ánimo de molestarlas! Si están embarazadas, proveedles de lo necesario hasta que den a luz. Si la criatura que crían es vuestra, retribuidles como es debido y llegad a un acuerdo decoroso. Si encontráis alguna dificultad, entonces, tomad un ama a cuenta vuestra.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxiv{¡Que el acomodado gaste según sus medios! Quien disponga de medios limitados ¡que gaste según lo que Alá le haya dado! Alá no pide a nadie sino lo que le ha dado. Alá hará que a la adversidad suceda la felicidad.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxv{¡A cuántas ciudades, que desdeñaron la orden de su Señor y de Sus enviados, pedimos cuenta rigurosa e infligimos un castigo horroroso!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxvi{Gustaron la gravedad de su conducta, que acabó por perderles.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxvii{Alá ha preparado para ellos un castigo severo. ¡Temed, pues, a Alá, creyentes dotados de intelecto! Alá os ha enviado de lo alto una Amonestación,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxviii{un Enviado que os recita aleyas aclaratorias de Alá, para sacar de las tinieblas a la luz a quienes creen y obran bien. A quien cree en Alá y obra bien, Él le introducirá en jardines por cuyos bajos fluyen arroyos, en los que estarán eternamente, para siempre. Alá le ha reservado un bello sustento.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxix{Alá es Quien ha creado siete cielos y otras tantas tierras. La orden desciende gradualmente entre ellos para que sepáis‚ que Alá es omnipotente y que Alá todo lo abarca en Su ciencia.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxx{\basmalahes ¡Profeta! ¿Por qué, para agradar a tus esposas, declaras prohibido lo que Alá ha declarado lícito para ti? Pero Alá es indulgente, misericordioso.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxi{Alá os ha prescrito la anulación de vuestros juramentos. Alá es vuestro Protector. Él es el Omnisciente, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxii{Y cuando el Profeta dijo un secreto a una de sus esposas. Cuando, no obstante, ella lo reveló y Alá se lo descubrió, dio él a conocer parte y ocultó el resto. Y, cuando se lo reveló, dijo ella: «¿Quién te ha informado de esto?» Él dijo: «Me lo ha revelado el Omnisciente, el Bien Informado».\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxiii{Si os volvéis ambas, arrepentidas, a Alá, es señal de que vuestros corazones han cedido. Si, al contrario, os prestáis ayuda en contra de él, entonces, Alá es su Protector. Y le ayudarán Gabriel, los buenos creyentes y, además, los ángeles.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxiv{Si él os repudia, quizá su Señor le dé, a cambio, esposas mejores que vosotras, sometidas a É, creyentes, devotas, arrepentidas, que sirven a Alá, que ayunan, casadas de antes o vírgenes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxv{¡Creyentes! Guardaos, vosotros y vuestras familias, de un Fuego cuyo combustible lo forman hombres y piedras, y sobre el que habrá ángeles gigantescos, poderosos, que no desobedecen a Alá en lo que les ordena, sino que hacen lo que se les ordena.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxvi{¡Infieles! ¡No os disculpéis hoy! Se os retribuirá tan sólo según vuestras obras.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxvii{¡Creyentes! ¡Volveos a Alá con sincero arrepentimiento! Quizá vuestro Señor borre vuestras malas obras y os introduzca en jardines por cuyos bajos fluyen arroyos. El día que Alá libre de vergüenza al Profeta y a los que con él creyeron... Su luz correrá ante ellos y a su derecha. Dirán: «¡Señor! ¡Perfecciónanos nuestra luz y perdónanos! Eres omnipotente».\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxviii{¡Profeta! ¡Combate contra los infieles y los hipócritas! ¡Muéstrate duro con ellos! Tendrán la gehena por morada. ¡Qué mal fin...!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxix{Alá pone como ejemplo para los infieles a la mujer de Noé y a la mujer de Lot. Ambas estaban sujetas a dos de Nuestros siervos justos, pero les traicionaron, aunque su traición no les sirvió de nada frente a Alá. Y se dijo: «¡Entrad ambas en el Fuego, junto con los demás que entran!»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccxl{Y Alá pone como ejemplo para los creyentes a la mujer de Faraón. Cuando dijo: «¡Señor! ¡Constrúyeme, junto a Ti, una casa en el Jardín y sálvame de Faraón y de sus obras! ¡Sálvame del pueblo impío!»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccxli{Y a María, hija de Imran, que conservó su virginidad y en la que infundimos de Nuestro Espíritu. Tuvo por auténticas las palabras y Escritura de su Señor y fue de las devotas.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlii{\basmalahes ¡Bendito sea Aquél en Cuya mano está el dominio! Es omnipotente.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccxliii{Es Quien ha creado la muerte y la vida para probaros, para ver quién de vosotros es el que mejor se porta. Es el Poderoso, el Indulgente.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccxliv{Es Quien ha creado siete cielos superpuestos. No ves ninguna contradición en la creación del Compasivo. ¡Mira otra vez! ¿Adviertes alguna falla?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlv{Luego, mira otras dos veces: tu mirada volverá a ti cansada, agotada.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlvi{Hemos engalanado el cielo más bajo con luminares, de los que hemos hecho proyectiles contra los demonios y hemos preparado para ellos el castigo del fuego de la gehena.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlvii{Quienes no hayan creído en su Señor tendrán el castigo de la gehena. ¡Qué mal fin...!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlviii{Cuando sean arrojados a ella, oirán su fragor, en plena ebullición,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlix{a punto de estallar de furor. Siempre que se le arroje una oleada, sus guardianes les preguntarán: «¿Es que no vino a vosotros un monitor?»\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccl{«¡Claro que sí!» dirán: «Vino a nosotros un monitor, pero desmentimos, y dijimos: 'Alá no ha revelado nada. No estáis sino muy extraviados'».\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccli{Y dirán: «Si hubiéramos oído o comprendido, no moraríamos ahora en el fuego de la gehena».\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcclii{Confesarán su pecado. ¡Que Alá aleje a los moradores del fuego de la gehena!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccliii{Quienes hayan tenido miedo a su Señor en secreto tendrán perdón y una gran recompensa.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccliv{Da lo mismo que mantengáis ocultas vuestras palabras o que las divulguéis. Él conoce bien lo que encierran los pechos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcclv{¿No va a saber Quien ha creado, Él, Que es el Sutil, el Bien Informado?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcclvi{Él es Quien os ha hecho dócil la tierra. Recorredla, pues, de acá para allá y comed de Su sustento. La Resurrección se hará hacia Él.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcclvii{¿Estáis a salvo de que Quien está en el cielo haga que la tierra os trague? He aquí que tiembla...\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcclviii{¿O estáis a salvo de que Quien está en el cielo envíe contra vosotros una tempestad de arena? Entonces veréis cómo era Mi advertencia...\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcclix{Quienes fueron antes que ellos desmintieron y ¡cuál no fue Mi reprobación!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcclx{¿Es que no han visto las aves encima de ellos, desplegando y recogiendo las alas? Sólo el Compasivo las sostiene. Lo ve bien todo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxi{O ¿quién es el que podría auxiliaros cual legión, fuera del Compasivo? Los infieles son presa de una ilusión.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxii{O ¿quien es el que os proveería de sustento si Él interrumpiera Su sustento? Sí, persisten en su insolencia y aversión.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxiii{Quien anda agachado ¿va mejor dirigido que quien anda erguido por una vía recta?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxiv{Di: «Él es Quien os ha creado, Quien os ha dado el oído, la vista y el intelecto. ¡Qué poco agradecidos sois!»\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxv{Di: «Él es Quien os ha diseminado por la tierra. Y hacia Él seréis congregados».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxvi{Y dicen: «¿Cuándo se cumplirá esta amenaza, si es verdad lo que decís?»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxvii{Di: «Sólo Alá lo sabe. Yo soy solamente un monitor que habla claro».\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxviii{Pero, en cuanto vean su inminencia, se afligirán los rostros de los infieles. Y se dirá: «Aquí tenéis lo que reclamabais».\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxix{Di: «¿Qué os parece? Lo mismo si Alá nos hace perecer, a mí y a los que están conmigo, que si se apiada de nosotros, ¿quién preservará a los infieles de un castigo doloroso?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxx{Di: «¡Es el Compasivo! ¡Creemos en Él y confiamos en Él! Ya veréis quién es el que está evidentemente extraviado».\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxi{Di: «¿Qué os parece? Si el agua se os agotara una mañana, ¿quien iba a traeros agua viva?»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxii{\basmalahes n. ¡Por el cálamo y lo que escriban!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxiii{¡Por la gracia de tu Señor, que tú no eres un poseso!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxiv{Tendrás, ciertamente, una recompensa ininterrumpida.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxv{Eres, sí, de eminente carácter.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxvi{Tú verás y ellos verán\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxvii{quién de vosotros es el tentado.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxviii{Tu Señor sabe mejor que nadie quiénes se extravían de Su camino y sabe mejor que nadie quiénes siguen la buena dirección.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxix{¡No obedezcas, pues, a los desmentidores!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxx{Desearían que fueras condescendiente, para serlo ellos también.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxi{¡No obedezcas a ningún vil jurador.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxii{al pertinaz difamador, que va sembrando calumnias,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxiii{a quien impide el bien, al violador de la ley, al pecador,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxiv{al arrogante y, encima, bastardo,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxv{so pretexto de poseer hacienda e hijos varones!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxvi{Cuando se le recitan Nuestras aleyas, dice: «¡Patrañas de los antiguos!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxvii{¡Le marcaremos en el hocico!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxviii{Les hemos probado como probamos a los dueños del jardín. Cuando juraron que cogerían sus frutos por la mañana,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxix{sin hacer salvedad.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmccxc{Mientras dormían, cayó sobre él un azote enviado por tu Señor\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmccxci{y amaneció como si hubiera sido arrasado.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcii{Por la mañana, se llamaron unos a otros:\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmccxciii{«¡Vamos temprano a nuestro campo, si queremos coger los frutos!»\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmccxciv{Y se pusieron en camino, cuchicheando:\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcv{«¡Ciertamente, hoy no admitiremos a ningún pobre!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcvi{Marcharon, pues, temprano, convencidos de que serían capaces de llevar a cabo su propósito.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcvii{Cuando lo vieron, dijeron: «¡Seguro que nos hemos extraviado!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcviii{¡No, se nos ha despojado!»\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcix{El más moderado de ellos dijo: «¿No os lo había dicho? ¿Por qué no glorificáis?»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmccc{Dijeron: «¡Gloria a nuestro Señor! ¡Hemos obrado impíamente!»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmccci{Y pusiéronse a recriminarse.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcccii{Dijeron: «¡Ay de nosotros, que hemos sido rebeldes!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmccciii{Quizá nos dé nuestros Señor, a cambio, algo mejor que éste. Deseamos ardientemente a nuestro Señor».\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmccciv{Tal fue el castigo. Pero el castigo de la otra vida es mayor aún. Si supieran...\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmcccv{Los que temen a Alá tendrán, junto a su Señor. los jardines de la Delicia.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmcccvi{¿Vamos, pues, a tratar igual a los que se someten a Alá que a los pecadores?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmcccvii{¿Qué os pasa? ¿Qué manera de juzgar es ésa?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmcccviii{¿O es que disponéis de una Escritura para estudiar?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmcccix{Tendríais en ella lo que deseáis.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmcccx{¿O es que nos atan a vosotros juramentos que nos obligan hasta el día de la Resurrección? Obtendríais lo que juzgarais.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxi{Pregúntales quién responde de ello.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxii{¿O es que tienen asociados? Pues, ¡que traigan a sus asociados, si es verdad lo que dicen!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxiii{El día que las cosas se pongan mal y sean invitados a prosternarse, no podrán.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxiv{Abatida la mirada, cubiertos de humillación, porque fueron invitados a prosternarse cuando aún estaban en seguridad...\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxv{¡Déjame a solas con quienes desmienten este discurso! Les conduciremos paso a paso, sin que sepan cómo.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxvi{Les concedo una prórroga. ¡Mi estratagema es segura!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxvii{¿O es que les reclamas un salario tal que se vean abrumados de deudas?\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxviii{¿O es que conocen lo oculto y toman nota?\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxix{Espera, pues, paciente la decisión de tu Señor y no hagas como el del pez, cuando clamó en medio de la angustia.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxx{Si no llega a alcanzarle una gracia de su Señor, habría sido arrojado a una costa desnuda, reprobado.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxi{Pero su Señor le escogió y le hizo de los justos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxii{Poco les falta a los infieles, cuando oyen la Amonestación, para clavar en ti su mirada. Y dicen: «¡Sí, es un poseso!»\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxiii{Pero no es sino una amonestación dirigida a todo el mundo.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxiv{\basmalahes La Inevitable.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxv{¿Qué es la Inevitable?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxvi{Y ¿cómo sabrás qué es la Inevitable?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxvii{Los tamudeos y los aditas desmintieron la Calamidad.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxviii{Los tamudeos fueron aniquilados por el Rayo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxix{Los aditas fueron aniquilados por un viento glacial, impetuoso,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxx{que desencadenó contra ellos para devastarlo todo durante siete noches y ocho días. Se veía a la gente yacer en ellas como troncos de palmeras derribadas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxi{¿Puedes tú ver algún rastro de ellos?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxii{Pecaron Faraón, los que fueron antes de él y las vueltas de arriba abajo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxiii{Desobedecieron al Enviado de su Señor y Éste les sorprendió de un modo irresistible.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxiv{Cuando las aguas lo inundaron todo, os llevamos en la embarcación,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxv{para hacer de ella un recuerdo para vosotros, para que el oído atento lo retuviera.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxvi{Cuando se toque la trompeta una sola vez,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxvii{y la tierra y las montañas sean alzadas y pulverizadas de un solo golpe,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxviii{ese día sucederá el Acontecimiento.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxix{El cielo se henderá, pues ese día estará quebradizo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxl{Los ángeles estarán en sus confines y ese día ocho de ellos llevarán, encima, el Trono de tu Señor.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxli{Ese día se os expondrá: nada vuestro quedará oculto.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlii{Aquél que reciba su Escritura en la diestra, dirá: «¡Tomad! ¡Leed mi Escritura!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxliii{¡Ya contaba con ser juzgado!»\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxliv{Gozará de una vida agradable\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlv{en un Jardín elevado,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlvi{cuyos frutos estarán al alcance de la mano.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlvii{«¡Comed y bebed en paz el fruto de lo que hicisteis en días pasados!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlviii{Aquél que reciba su Escritura en la siniestra, dirá: «¡Ojalá no se me hubiera entregado la Escritura\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlix{y no hubiera conocido el resultado de mi juicio!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcccl{¡ Ojalá hubiera sido definitiva!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcccli{De nada me ha servido mi hacienda.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmccclii{Mi poder me ha abandonado»\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcccliii{«¡Cogedle y ponedle una argolla al cuello!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcccliv{¡Que arda, luego, en el fuego de la gehena!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmccclv{¡Sujetadle, luego, a una cadena de setenta codos!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmccclvi{No creía en Alá, el Grandioso,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmccclvii{ni animaba a dar de comer al pobre.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmccclviii{Hoy no tiene aquí amigo ferviente,\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmccclix{ni más alimento que de guislin,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmccclx{que sólo los pecadores comen.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxi{¡Pues no! ¡Juro por lo que veis\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxii{y por lo que no veis,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxiii{que es, ciertamente, la palabra de un Enviado noble!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxiv{No es la palabra de un poeta -¡qué poca fe tenéis!-\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxv{ni la palabra de un adivino -¡qué poco os dejáis amonestar!-.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxvi{Es una revelación que procede del Señor del universo.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxvii{Si Nos hubiera atribuido algunos dichos,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxviii{le habríamos tomado de la diestra;\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxix{luego, le habríamos seccionado la aorta,\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxx{y ninguno de vosotros habría podido impedirlo.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxi{Es, sí, un Recuerdo para los temerosos de Alá.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxii{Ya sabemos, sí, que hay entre vosotros desmentidores.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxiii{Es, sí, un motivo de lamentación para los infieles.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxiv{Pero es algo, sí, absolutamente cierto.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxv{¡Glorifica, pues, el nombre de tu Señor, el Grandioso!.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxvi{\basmalahes Alguien ha pedido un castigo inmediato\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxvii{para los infieles, que nadie pueda rechazar,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxviii{que venga de Alá, Señor de las gradas.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxix{Los ángeles y el Espíritu ascienden a Él en un día que equivale a cincuenta mil años.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxx{¡Ten, pues, digna paciencia!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxi{Piensan que está lejos,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxii{pero Nosotros pensamos que está cerca.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxiii{El día que el cielo parezca metal fundido,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxiv{y las montañas, copos de lana,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxv{y nadie pregunte por su amigo ferviente.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxvi{Les será dado verles. El pecador querrá librarse del castigo de ese día ofreciendo como rescate a sus hijos varones,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxvii{a su compañera, a su hermano,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxviii{Al clan que lo cobijó,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxix{a todos los de la tierra. Eso le salvaría.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxc{¡No! Será una hoguera,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxci{que arrancará el cuero cabelludo\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcii{y reclamará a quien retroceda y vuelva la espalda,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxciii{a quien amase y atesore.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxciv{El hombre es de natural impaciente.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcv{Pusilánime cuando sufre un mal,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcvi{mezquino cuando la fortuna le favorece.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcvii{Se exceptúa a quienes oran\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcviii{perseverando en su azalá,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcix{parte de cuyos bienes es de derecho\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcd{para el mendigo y el indigente,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcdi{que tienen por auténtico el día del Juicio,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcdii{que temen el castigo de su Señor\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcdiii{-nadie debe sentirse seguro contra el castigo de su Señor-,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcdiv{que se abstienen de comercio carnal,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcdv{salvo con sus esposas o con sus esclavas -en cuyo caso no incurren en reproche,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcdvi{mientras que quienes desean a otras mujeres, ésos son los que violan la ley-,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmcdvii{que respetan los depósitos que se les confían y las promesas que hacen,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmcdviii{que dicen la verdad en sus testimonios,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmcdix{que observan su azalá.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmcdx{Esos tales estarán en jardines, honrados.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxi{¿Qué les pasa a los infieles, que vienen hacia ti corriendo con el cuello extendido,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxii{en grupos, por la derecha y por la izquierda?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxiii{¿Es que cada uno de ellos anhela ser introducido en un jardín de delicia?\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxiv{¡No! Les creamos de lo que saben.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxv{¡Pues no! ¡Juro por el Señor de los Orientes y de los Occidentes, que somos bien capaces\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxvi{de sustituirles por otros mejores que ellos, sin que nadie pueda impedírnoslo!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxvii{¡Déjales que parloteen y jueguen hasta que les llegue el día con que se les ha amenazado,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxviii{el día que salgan de las sepulturas, rápidos como si corrieran hacia piedras erectas,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxix{la mirada abatida, cubiertos de humillación! Tal será el día con que se les había amenazado.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxx{\basmalahes Enviamos a Noé a su pueblo: «¡Advierte a tu pueblo antes de que le alcance un castigo doloroso!»\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxi{Dijo: «¡Pueblo! Soy para vosotros un monitor que habla claro.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxii{¡Servid a Alá y temedle! ¡Y obedecedme!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxiii{Así, os perdonará vuestros pecados y os remitirá a un plazo fijo. Pero, cuando venza el plazo fijado por Alá, no podrá ya ser retardado. Si supierais...»\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxiv{Dijo: «¡Señor! He llamado a mi pueblo noche y día.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxv{Mi llamamiento sólo ha servido para que huyan más.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxvi{Siempre que les llamo para que Tú les perdones, se ponen los dedos en los oídos, se cubren con la ropa, se obstinan y se muestran en extremo altivos.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxvii{Además, les he llamado abiertamente\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxviii{y les he hablado en público y en secreto.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxix{Y he dicho: '¡Pedid perdón a vuestro Señor -Que es indulgente-\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxx{y enviará sobre vosotros del cielo una lluvia abundante!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxi{Os dará mucha hacienda e hijos varones. Pondrá a vuestra disposición jardines, pondrá a vuestra disposición arroyos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxii{¿Qué os pasa, que no esperáis de Alá magnanimidad,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxiii{habiéndoos creado en fases?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxiv{¿No habéis visto cómo ha creado Alá siete cielos superpuestos\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxv{y puesto en ellos la luna como luz y el sol como lámpara?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxvi{Alá os ha hecho crecer de la tierra como plantas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxvii{Después, os hará volver a ella, y os sacará.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxviii{Alá os ha puesto la tierra como alfombra\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxix{para que recorráis en ella caminos, anchos pasos'».\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxl{Noé dijo: «¡Señor! Me han desobedecido y han seguido a aquéllos cuya hacienda e hijos no hacen sino perderles más.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxli{Han perpetrado una enorme intriga.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlii{Y dicen: '¡No abandonéis a vuestros dioses! ¡No abandonéis a Wadd, ni a Suwaa, ni a Yagut, a Yauq y a Nasr!'\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxliii{Han extraviado a muchos. A los impíos ¡no hagas sino extraviarles más!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxliv{Por sus pecados, fueron anegados e introducidos en un Fuego. No encontraron quien, fuera de Alá, les auxiliara.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlv{Noé dijo: «¡Señor! ¡No dejes en la tierra a ningún infiel con vida!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlvi{Si les dejas, extraviarán a Tus siervos y no engendrarán sino a pecadores, infieles pertinaces.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlvii{¡Señor! ¡Perdónanos, a mi y a mis padres, a quien entre en mi casa como creyente, a los creyentes y a las creyentes! Y a los impíos ¡no hagas sino perderles más!»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlviii{\basmalahes Di: «Se me ha revelado que un grupo de genios estaba escuchando y decía: 'Hemos oído una Recitación maravillosa,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlix{que conduce a la vía recta. Hemos creído en ella y no asociaremos nadie a nuestro Señor'.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdl{Y: 'Nuestro Señor -¡exaltada sea Su grandeza!- no ha tomado compañera ni hijo'\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdli{Y: 'Nuestro loco decía contra Alá una solemne mentira'.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlii{Y: 'Nosotros creíamos que ni los humanos ni los genios iban a proferir mentira contra Alá'.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcdliii{Y: 'Había humanos varones que se refugiaban en los genios varones y éstos enloquecieron más a aquéllos'.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcdliv{Y: 'Creían ellos, como vosotros, que Alá no iba a enviar a nadie'.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlv{Y: 'Hemos palpado el cielo y lo hemos encontrado lleno de guardianes severos y de centellas'.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlvi{Y: 'Nos sentábamos allí, en sitios apropiados para oír. Pero todo aquél que escucha, al punto encuentra una centella que le acecha'.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlvii{Y: 'No sabemos si se quiere mal a los que están en la tierra o si su Señor quiere dirigirles bien'.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlviii{Y: 'Entre nosotros hay unos que son justos y otros que no. Seguimos doctrinas diferentes'.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlix{Y: 'Creíamos que no podríamos escapar a Alá en la tierra, ni aun huyendo'.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlx{Y: 'Cuando oímos la Dirección, creímos en ella. Quien cree en su Señor no teme daño ni injuria'.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxi{Y: 'Entre nosotros los hay que se someten a Alá y los hay que se apartan. Los que se someten a Alá han elegido la rectitud.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxii{Los que se apartan, en cambio, son leña para la gehena'.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxiii{Y: 'Si se hubieran mantenido en la vía recta, les habríamos dado de beber agua abundante\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxiv{para probarles. A quien se desvíe de la Amonestación de su Señor, Él le conducirá a un duro castigo'.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxv{Y: 'Los lugares de culto son de Alá. ¡No invoquéis a nadie junto con Alá!'\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxvi{Y: 'Cuando el siervo de Alá se levantó para invocarle, poco les faltó para, en masa, arremeter contra él'».\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxvii{Di: «Invoco sólo a mi Señor y no Le asocio nadie».\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxviii{Di: «No puedo dañaros ni dirigiros».\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxix{Di: «Nadie me protegerá de Alá y no encontraré asilo fuera de Él.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxx{Sólo un comunicado de Alá y Sus mensajes». A quien desobedezca a Alá y a Su Enviado le espera el fuego de la gehena, en el que estará eternamente, para siempre.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxi{Hasta que, cuando vean aquello con que se les ha amenazado, sabrán quién es el que recibe auxilio más débil y quién es numéricamente inferior.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxii{Di: «No sé si está cerca aquello con que se os ha amenazado o si mi Señor lo retardará aún.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxiii{El Conocedor de lo oculto. No descubre a nadie lo que tiene oculto,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxiv{salvo a aquél a quien acepta como enviado. Entonces, hace que le observen por delante y por detrás,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxv{para saber si han transmitido los mensajes de su Señor. Abarca todo lo concerniente a ellos y lleva cuenta exacta de todo»\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxvi{\basmalahes ¡Tú, el arrebujado!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxvii{¡Vela casi toda la noche,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxviii{o media noche, o algo menos,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxix{o más, y recita el Corán lenta y claramente!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxx{Vamos a comunicarte algo importante:\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxi{la primera noche es más eficaz y de dicción más correcta.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxii{Durante el día estás demasiado ocupado.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxiii{¡Y menciona el nombre de tu Señor y conságrate totalmente a Él!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxiv{El Señor del Oriente y del Occidente. No hay más dios que Él. ¡Tómale, pues, como protector!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxv{¡Ten paciencia con lo que dicen y apártate de ellos discretamente!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxvi{¡Déjame con los desmentidores, que gozan de las comodidades de la vida! ¡Concédeles aún una breve prórroga!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxvii{Disponemos de cadenas y de fuego de gehena,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxviii{de alimento que se atraganta y de castigo doloroso.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxix{El día que tiemblen la tierra y las montañas, y se conviertan las montañas en montones dispersos de arena...\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxc{Os hemos mandado un Enviado, testigo contra vosotros, como antes habíamos mandado un enviado a Faraón.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxci{Faraón desobedeció al enviado y le sorprendimos duramente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcii{Si no creéis, ¿cómo vais a libraros de un día que hará encanecer a los niños?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxciii{El cielo se entreabrirá. Se cumplirá Su promesa.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxciv{Esto es un Recuerdo. El que quiera ¡que emprenda camino hacia su Señor!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcv{Tu Señor sabe que pasas en oración casi dos tercios de la noche, la mitad o un tercio de la misma, y lo mismo algunos de los que están contigo. Alá determina la noche y el día. Sabe que no vais a contarlo con exactitud y os perdona. ¡Recitad, pues, lo que buenamente podáis del Corán ! Sabe que entre vosotros habrá unos enfermos, otros de viaje por la tierra buscando el favor de Alá, otros combatiendo por Alá, ¡Recitad, pues, lo que buenamente podáis de él! ¡Haced la azalá! ¡Dad el azaque! ¡Haced un préstamo generoso a Alá! El bien que hagáis como anticipo para vosotros mismos, volveréis a encontrarlo junto a Alá como bien mejor y como recompensa mayor. ¡Y pedid el perdón de Alá! Alá es indulgente, misericordioso.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcvi{\basmalahes ¡Tú, el envuelto en un manto!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcvii{¡Levántate y advierte!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcviii{A tu Señor, ¡ensálzale!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcix{Tu ropa, ¡purifícala!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmd{La abominación, ¡huye de ella!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdi{¡No des esperando ganancia!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdii{La decisión de tu Señor, ¡espérala paciente!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdiii{Cuando suene la trompeta,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdiv{ése será, entonces, un día difícil\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdv{para los infieles, no fácil.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdvi{¡Déjame solo con Mi criatura,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdvii{a quien he dado una gran hacienda,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdviii{e hijos varones que están presentes!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdix{Todo se lo he facilitado,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdx{pero aún anhela que le dé más.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdxi{¡No! Se ha mostrado hostil a Nuestros signos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdxii{Le haré subir por una cuesta.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdxiii{Ha reflexionado y tomado una decisión,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdxiv{pero ¡qué decisión! ¡Maldito sea!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdxv{Sí, ¡qué decisión! ¡Maldito sea!\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdxvi{Luego, ha mirado.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdxvii{Luego, se ha puesto ceñudo y triste.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdxviii{Luego, ha vuelto la espalda, lleno de altivez.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdxix{Y ha dicho: «¡Esto no es sino magia aprendida!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdxx{¡No es sino la palabra de un mortal!»\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxi{¡Lo entregaré al ardor del saqar !\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxii{Y ¿cómo sabrás qué es el saqar ?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxiii{No deja residuos, no deja nada.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxiv{Abrasa al mortal.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxv{Hay diecinueve que lo guardan.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxvi{No hemos puesto sino a ángeles como guardianes del Fuego y no los hemos puesto en ese número sino para tentar a los infieles, para que los que han recibido la Escritura crean firmemente, para que los creyentes se fortifiquen en su fe, para que no duden ni los que han recibido la Escritura ni los creyentes, para que los enfermos de corazón y los infieles digan: «¿Qué es lo que se propone Alá con esta parábola?» Así es como Alá extravía a quien Él quiere y dirige a quien Él quiere. Nadie sino Él conoce las legiones de tu Señor. No es sino una amonestación dirigida a los mortales.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxvii{¡No! ¡Por la luna!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxviii{¡Por la noche cuando declina!\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxix{¡Por la mañana cuando apunta!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxx{Es, sí, una de las mayores,\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxi{a modo de advertencia para los mortales,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxii{para aquéllos de vosotros que quieran adelantarse o rezagarse.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxiii{Cada uno será responsable de lo que haya cometido.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxiv{Pero los de la derecha,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxv{en jardines, se preguntarán unos a otros\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxvi{acerca de los pecadores.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxvii{«¿Qué es lo que os ha conducido al saqar ?»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxviii{Dirán: «No éramos de los que oraban,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxix{no dábamos de comer al pobre,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmdxl{parloteábamos con los parlones\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmdxli{y desmentíamos el día del Juicio,\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlii{hasta que vino a nosotros la cierta».\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmdxliii{Los intercesores no podrán hacer nada por ellos.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmdxliv{¿Por qué han tenido que apartarse del Recuerdo,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlv{como asnos espantados\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlvi{que huyen del león?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlvii{Todos ellos quisieran que se les trajeran hojas desplegadas.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlviii{Pero ¡no! No temen la otra vida.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlix{¡No! Es un Recuerdo,\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmmdl{que recordará quien quiera.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmmdli{Pero no lo tendrán en cuenta, a menos que Alá quiera. Es digno de ser temido y digno de perdonar.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmmdlii{\basmalahes ¡No! ¡Juro por el día de la Resurreción!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdliii{¡Que no! ¡Juro por el alma que reprueba!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdliv{¿Cree el hombre que no juntaremos sus huesos?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdlv{¡Claro que sí! Somos capaces de recomponer sus dedos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdlvi{Pero el hombre preferiría continuar viviendo como un libertino.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdlvii{Pregunta: «¿Cuándo será el día de la Resurrección?»\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdlviii{Cuando se ofusque la vista,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdlix{se eclipse la luna,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdlx{se reúnan el sol y la luna,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxi{ese día, el hombre dirá: «Y ¿adónde escapar?»\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxii{¡No! ¡No habrá escape!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxiii{Ese día, el lugar de descanso estará junto a tu Señor.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxiv{Ese día, ya se le informará al hombre de lo que hizo y de lo que dejó de hacer.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxv{¡Más aún! El hombre testificará contra sí mismo,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxvi{aun cuando presente sus excusas.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxvii{No muevas la lengua al recitarlo para precipitarla!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxviii{¡Somos Nosotros los encargados de juntarlo y de recitarlo!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxix{Y, cuando lo recitemos, ¡sigue la recitación!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxx{Luego, a Nosotros nos toca explicarlo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxi{Pero ¡no! En lugar de eso, amáis la vida fugaz\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxii{y descuidáis la otra vida.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxiii{Ese día, unos rostros brillarán,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxiv{mirando a su Señor,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxv{mientras que otros, ese día, estarán tristes,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxvi{pensando que una calamidad les alcance.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxvii{¡No! Cuando suba hasta las clavículas,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxviii{se diga: «¿quién es encantador?»,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxix{crea llegado el momento de la separación\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxx{y se junte una pierna con otra,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxi{ese día la marcha será hacia tu Señor.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxii{No creyó, ni oró,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxiii{antes bien, desmintió y se desvió.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxiv{Luego, se volvió a los suyos con andar altanero.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxv{¡Ay de ti! ¡Ay!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxvi{¡Sí! ¡Ay de ti! ¡Ay!\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxvii{¿Cree el hombre que no van a ocuparse de él?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxviii{¿No fue una gota de esperma eyaculada\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxix{y, luego, un coágulo de sangre? Él lo creó y le dio forma armoniosa.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdxc{E hizo de él una pareja: varón y hembra.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdxci{Ese tal ¿no será capaz de devolver la vida a los muertos?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcii{\basmalahes ¿Ha pasado el hombre por un período de tiempo en que no era nada digno de mención?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdxciii{Hemos creado al hombre de una gota, de ingredientes, para ponerle a prueba. Le hemos dado el oído, la vista.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdxciv{Agradecido o desagradecido, le hemos dirigido por el Camino.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcv{Para los infieles hemos preparado cadenas, argollas y fuego de gehena.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcvi{Los justos beberán de copas de una mezcla alcanforada.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcvii{de una fuente de la que beberán los siervos de Alá y que harán manar en abundancia.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcviii{Fueron fieles a sus promesas y temieron un día cuyo mal será de alcance universal.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcix{Por mucho amor que tuvieran al alimento, se lo daban al pobre, al huérfano y al cautivo:\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdc{«Os damos de comer sólo por agradar a Alá. No queremos de vosotros retribución ni gratitud.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdci{Tememos, de nuestro Señor, un día terrible, calamitoso».\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcii{Alá les preservará del mal de ese día y les llenará de esplendor y alegría.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdciii{Les retribuira, por haber tenido paciencia, con un Jardín y con vestiduras de seda.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdciv{Reclinados allí en sofás, estarán resguardados allí del calor y del frío excesivo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcv{Cerca de ellos, les cubrirán sus sombras; sus frutos podrán ser cogidos muy fácilmente.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcvi{Se harán circular entre ellos vasijasa de plata y copas de cristal,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcvii{de un cristal de plata, de medidas determinadas.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcviii{Allí se les servirá una copa que contendrá una mezcla de jengibre,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcix{tomada de una fuente de allí, que se llama Salsabil.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcx{Y circularán entre ellos criados jóvenes de eterna juventud. Viéndoles, se les creería perlas desparramadas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxi{Cuando se mira allá, no se ve sino delicia y suntuosidad.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxii{Vestirán de verde satén y de brocado y llevarán brazaletes de plata. Su Señor les servirá una bebida pura.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxiii{«Esto se os ha dado como retribución. Vuestro esfuerzo ha sido agradecido».\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxiv{Somos Nosotros Quienes te llemos revelado el Corán de hecho.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxv{Espera, pues, paciente, la decisión f de tu Señor y no obedezcas a quien de ellos sea pecador o desagradecido.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxvi{¡Y menciona el nombre de tu Señor mañana y tarde!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxvii{¡Por la noche, prostérnate ante Él! ¡Glorifícale largamente por la noche!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxviii{Éstos aman la vida fugaz y descuidan un día grave.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxix{Nosotros los hemos creado y hemos fortalecido su constitución. Si quisiéramos, podríamos sustituirlos por otros semejantes.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxx{Esto es un Recuerdo. El que quiera ¡que emprenda camino hacia su Señor!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxi{Pero vosotros no lo querréis, a menos que Alá quiera. Alá es omnisciente, sabio.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxii{lntroduce en Su misericordia a quien Él quiere. Pero a los impíos les ha preparado un castigo doloroso.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxiii{\basmalahes ¡Por los enviados en ráfagas!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxiv{¡Por los que soplan violentamente!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxv{¡Por los que diseminan en todos los sentidos!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxvi{¡Por los que distinguen claramente!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxvii{¡Por los que lanzan una amonestación\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxviii{a modo de excusa o de advertencia!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxix{¡Ciertamente, aquello con que se os amenaza se cumplirá!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxx{Cuando las estrellas pierden su luz,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxi{cuando el cielo se hienda,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxii{cuando las montañas sean reducidas a polvo,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxiii{cuando se fije a los enviados su tiempo:\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxiv{«¿Qué día comparecerán?»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxv{«¡El día del Fallo!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxvi{Y ¿cómo sabrás qué es el día del Fallo?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxvii{Ese día, ¡ay de los desmentidores!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxviii{¿No hemos hecho que perecieran los primeros hombres\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxix{y, luego, que les siguieran los últimos?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxl{Así haremos con los pecadores.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxli{Ese día, ¡ay de los desmentidores!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlii{¿No os hemos creado de un líquido vil,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxliii{que hemos depositado en un receptáculo seguro,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxliv{durante un tiempo determinado?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlv{Así lo hemos decidido y ¡qué bien que lo hemos decidido!\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlvi{Ese día ¡ay de los desmentidores!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlvii{¿No hemos hecho de la tierra lugar de reunión\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlviii{de vivos y muertos,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlix{y puesto en ella elevadas montañas? ¿No os hemos dado de beber un agua dulce?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcl{Ese día, ¡ay de los desmentidores!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcli{«¡Id a lo que desmentíais!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdclii{¡Id a la sombra ramificada en tres,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcliii{sombra tenue, sombra inútil frente a la llama!»\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdcliv{Porque arroja chispas grandes como palacios,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdclv{chispas que semejan camellos leonados.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdclvi{Ese día, ¡ay de los desmentidores!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdclvii{Ése será un día en que no tendrán que decir\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdclviii{ni se les permitirá excusarse.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdclix{Ese día, ¡ay de los desmentidores!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdclx{«Éste es el día del Fallo. Os hemos reunido, a vosotros y a los antiguos.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxi{Si disponéis de alguna artimaña, ¡empleadla contra mí»\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxii{Ese día, ¡ay de los desmentidores!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxiii{Los temerosos de Alá estarán a la sombra y entre fuentes,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxiv{y tendrán la fruta que deseen.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxv{«¡Comed y bebed en paz el fruto de vuestras obras!»\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxvi{Así retribuimos a quienes hacen el bien.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxvii{Ese día, ¡ay de los desmentidores!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxviii{«¡Comed y disfrutad aún un poco!, ¡Sois unos pecadores!»\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxix{Ese día, ¡ay de los desmentidores!\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxx{Cuando se les dice: «¡Inclinaos!», no se inclinan.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxi{Ese día, ¡ay de los desmentidores!\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxii{¿En qué anuncio, después de éste, van a creer?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxiii{\basmalahes ¿Por qué cosa se preguntan unos a otros?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxiv{Por la enorme Noticia,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxv{acerca de la cual discrepan.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxvi{¡No! ¡Ya verán...!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxvii{¡No y no! ¡Ya verán...!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxviii{¿No hemos hecho de la tierra lecho\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxix{y de las montañas estacas?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxx{Y os hemos creado por parejas,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxi{hecho de vuestro sueño descanso,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxii{de la noche vestidura,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxiii{del día medio de subsistencia.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxiv{Y hemos edificado encima de vosotros siete cielos firmes,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxv{y colocado una lámpara resplandeciente.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxvi{Y hemos hecho bajar de las nubes un agua abundante\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxvii{para, mediante ella, sacar grano, plantas\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxviii{y frondosos jardines.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxix{El día del Fallo está ya señalado.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxc{Día en que se tocará la trompeta y acudiréis en masa.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxci{El cielo se abrirá, todo puertas;\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcii{las montañas, puestas en marcha, serán espejismo.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxciii{La gehena, al acecho,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxciv{será refugio de los rebeldes,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcv{que permanecerán en ella durante generaciones,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcvi{sin probar frescor ni bebida,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcvii{fuera de agua muy caliente y hediondo líquido,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcviii{retribución adecuada.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcix{No contaban con el ajuste de cuentas\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcc{y desmintieron descaradamente Nuestros signos,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcci{siendo así que habíamos consignado todo en una Escritura.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdccii{«¡Gustad, pues! ¡No haremos sino aumentaros el castigo!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcciii{En cambio, a los temerosos de Alá se les deparará el éxito:\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdcciv{vergeles y viñedos,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccv{de turgidos senos, de una misma edad,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccvi{copa desbordante.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccvii{No oirán allí vaniloquio, ni falsedad.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccviii{Es una retribución de tu Señor, regalo bien pensado\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccix{del Señor de los cielos, de la tierra y de lo que entre ellos está, del Compasivo, a Quien no podrán dirigir la palabra.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdccx{Día en que el Espíritu y los ángeles estarán de pie, en fila, sin hablar, excepto aquél a quien el Compasivo se lo permita y diga algo oportuno.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxi{Ese será el día de la Verdad. El que quiera. encontrará refugio junto a su Señor.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxii{Os hemos prevenido contra un castigo cercano, el día que el hombre medite en sus obras pasadas y diga el infiel: «¡Ojalá fuera yo tierra!»\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxiii{\basmalahes ¡Por los que arrancan violentamente!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxiv{¡Por los que van rápidamente!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxv{¡Por los que nadan libremente!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxvi{¡Por los que van a la cabeza!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxvii{¡Por los que llevan un asunto!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxviii{El día que ocurra el temblor,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxix{sucedido por el siguiente,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxx{ese día, los corazones se estremecerán,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxi{se humillarán las miradas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxii{Dicen: «¿Es verdad que seremos restituidos a nuestra primera condición,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxiii{luego de convertirnos en pútridos huesos?»\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxiv{Dicen: «¡Sería un retorno pernicioso!»\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxv{No habrá más que un solo Grito\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxvi{y ¡helos despiertos!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxvii{¿Te has enterado de la historia de Moisés?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxviii{Cuando su Señor le llamó en el valle sagrado de Tuwa:\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxix{«Ve a Faraón. Se ha excedido.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxx{Y di: '¿Estás dispuesto a purificarte\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxi{y a que te dirija a tu Señor y, así, tengas miedo?»\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxii{Le mostró el signo tan grande.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxiii{Pero él desmintió y desobedeció.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxiv{Luego, volvió la espalda bruscamente.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxv{Y convocó y dirigió una proclama.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxvi{Dijo: «Soy yo vuestro altísimo Señor».\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxvii{Alá le infligió el castigo de la otra vida y de ésta.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxviii{Hay en ello, sí, motivo de reflexión para quien tenga miedo de Alá.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxix{¿Sois vosotros más difíciles de crear que el cielo que él ha edificado?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxl{Alzó su bóveda y le dio forma armoniosa.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxli{Obscureció la noche y sacó la mañana.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlii{Extendió, luego, la tierra,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxliii{sacó de ella el agua y los pastos,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxliv{fijó las montañas.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlv{Para disfrute vuestro y de vuestros rebaños.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlvi{Pero, cuando venga la tan grande Calamidad,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlvii{el día que recuerde el hombre sus esfuerzos\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlviii{y se haga aparecer el fuego de la gehena a quien pueda ver,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlix{quien se haya mostrado rebelde\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdccl{y preferido la vida de acá\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdccli{tendrá por morada el fuego de la gehena,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclii{mientras que quien haya temidoí comparecer ante su Señor y preservado su alma de la pasión\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdccliii{tendrá el Jardín por morada.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdccliv{Te preguntan por la Hora: «¿Cuándo sucederá?»\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclv{¡No te ocupes tú de eso!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclvi{A tu Señor Le toca fijarla.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclvii{¡Tú sólo tienes que advertir a quien tiene miedo de ella!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclviii{El día que la vivan, les parecerá no haber permanecido más de una tarde o de una mañana.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclix{\basmalahes Frunció las cejasy volvió la espalda,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclx{porque el ciego vino a él.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxi{¿Quién sabe? Quizá quería purificarse,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxii{o dejarse amonestar y que la amonestación le aprovechara.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxiii{A quien es rico\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxiv{le dispensas una buena acogida\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxv{y te tiene sin cuidado que no quiera purificarse.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxvi{En cambio, de quien viene a ti, corriendo,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxvii{con miedo de Alá,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxviii{te despreocupas.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxix{¡No! Es un Recuerdo,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxx{que recordará quien quiera,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxi{contenido en hojas veneradas,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxii{sublimes, purificadas,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxiii{escrito por mano de escribas\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxiv{nobles, píos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxv{¡Maldito sea el hombre! ¡Qué desagradecido es!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxvi{¿De qué lo ha creado Él?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxvii{De una gota lo ha creado y determinado;\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxviii{luego, le ha facilitado el camino;\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxix{luego, le ha hecho morir y ser sepultado;\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxx{luego, cuando É quiera, le resucitará.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxi{¡No! No ha cumplido aún lo que Él le ha ordenado.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxii{¡Que mire el hombre su alimento!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxiii{Nosotros hemos derramado el agua en abundancia;!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxiv{luego, hendido la tierra profundamente\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxv{y hecho crecer en ella grano,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxvi{vides, hortalizas,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxvii{olivos, palmeras,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxviii{frondosos jardines,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxix{frutas, pastos,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxc{para disfrute vuestro y de vuestros rebaños.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxci{Pero, cuando venga el Estruendo,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcii{el día que el hombre huya de su hermano,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxciii{de su madre y de su padre,\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxciv{de su compañera y de sus hijos varones,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcv{ese día, cada cual tendrá bastante consigo mismo.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcvi{Ese día, unos rostros estarán radiantes,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcvii{risueños, alegres,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcviii{mientras que otros, ese día, tendrán polvo encima,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcix{los cubrirá una negrura:\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdccc{ésos serán los infieles, los pecadores.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdccci{\basmalahes Cuando el sol sea obscurecido,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccii{cuando las estrellas pierdan su brillo,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdccciii{cuando las montañas sean puestas en marcha,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccciv{cuando las camellas preñadas de diez meses sean descuidadas,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccv{cuando las bestias salvajes sean agrupadas,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccvi{cuando los mares sean hinchados,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccvii{cuando las almas sean apareadas,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccviii{cuando se pregunte a la niña enterrada viva\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccix{qué crimen cometió para que la mataran,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccx{cuando las hojas sean desplegadas,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxi{cuando el cielo sea desollado,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxii{cuando el fuego de la gehena sea avivado,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxiii{cuando el Jardín sea acercado,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxiv{cada cual sabrá lo que presenta.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxv{¡Pues no! ¡Juro por los planetas,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxvi{que pasan y desaparecen!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxvii{¡Por la noche cuando se extiende!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxviii{¡Por la mañana cuando respira!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxix{Sí, es la palabra de un Enviado noble,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxx{que dispone de poder junto al Señor del Trono, firme,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxi{obedecido allís de confianza.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxii{¡Vuestro paisano no es un poseso!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxiii{Le ha visto en el claro horizonte,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxiv{no es avaro de lo oculto.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxv{No es la palabra de un demonio maldito.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxvi{¿Adónde iréis, pues?\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxvii{No es sino una amonestación dirigida a todo el mundo,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxviii{para aquéllos de vosotros que quieran seguir la vía recta.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxix{Pero vosotros no lo querréis, a menos que quiera Alá, Señor del universo.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxx{\basmalahes Cuando el cielo se hienda,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxi{cuando las estrellas se dispersen,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxii{cuando los mares sean desbordados,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxiii{cuando las sepulturas sean vueltas al revés,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxiv{sabrá cada cual lo que hizo y lo que dejó de hacer.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxv{¡Hombre! ¿Qué es lo que te ha engañado acerca de tu noble Señor,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxvi{Que te ha creado, dado forma y disposición armoniosas,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxvii{Que te ha formado del modo que ha querido?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxviii{¡Pero no! Desmentís el Juicio,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxix{pero hay quienes os guardan:\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxl{nobles, escribas,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxli{que saben lo que hacéis.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlii{Sí, los justos estarán en delicia,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxliii{mientras que los pecadores estarán en fuego de gehena.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxliv{En él arderán el día del Juicio\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlv{y no se ausentarán de él.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlvi{Y ¿cómo sabrás qué es el día del Juicio?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlvii{Sí, ¿cómo sabrás qué es el día del Juicio?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlviii{El día que nadie pueda hacer nada en favor de nadie. Y será Alá Quien, ese día, decida.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlix{\basmalahes ¡Ay de los defraudadores,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccl{que, cuando piden a otros la medida, la exigen exacta,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccli{pero que, cuando ellos miden o pesan para otros, dan menos de lo debido!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclii{¿No cuentan con ser resucitados\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccliii{un día terrible,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccliv{el día que comparezcan los hombres ante el Señor del universo?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclv{¡No! La Escritura de los pecadores está, ciertamente, en Sichchín.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclvi{Y ¿cómo sabrás qué es Sichchín?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclvii{Es una Escritura marcada.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclviii{Ese día, ¡ay de los desmentidores,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclix{que desmienten el día del Juicio!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclx{Y no lo desmiente sino todo violador de la ley, pecador,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxi{que, al serle recitadas Nuestras aleyas, dice: «¡Patrañas de los antiguos!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxii{Pero ¡no! Lo que han cometido ha cubierto de herrumbre sus corazones.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxiii{¡No! Ese día serán separados de su Señor por un velo.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxiv{Luego, arderán, sí, en el fuego de la gehena.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxv{Luego, se dirá: «¡He aquí lo que desmentíais!»\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxvi{¡No! La Escritura de los justos está, ciertamente, en Illiyyun.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxvii{Y ¿cómo sabrás qué es Illiyyun?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxviii{Es una Escritura marcada,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxix{que verán con sus propios ojos los allegados.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxx{Sí, los justos estarán en delicia,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxi{en sofás, observando...\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxii{Se reconocerá en sus rostros el brillo de la delicia.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxiii{Se les dará de beber un vino generoso y sellado,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxiv{con un dejo de almizcle -¡que lo codicien los codiciosos!-,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxv{mezclado con agua de Tasnim,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxvi{fuente de la que beberán los allegados.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxvii{Los pecadores se reían de los creyentes.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxviii{Cuando pasaban junto a ellos, se guiñaban el ojo,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxix{cuando regresaban a los suyos, regresaban burlándose,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxx{cuando les veían, decían: «¡Sí, están extraviados!»\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxi{Pero no han sido enviados para velar por ellos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxii{Ese día, los creyentes se reirán de los infieles,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxiii{en sofás, observando...\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxiv{¿No han sido retribuidos los infieles según sus obras?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxv{\basmalahes Cuando el cielo se desgarre\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxvi{y escuche a su Señor -como debe ser-,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxvii{cuando la tierra sea allanada,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxviii{vomite su contenido, vaciándose,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxix{y escuche a su Señor -como debe ser-...\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxc{¡Hombre! Te esfuerzas con denuedo en encontrar a tu Señor y Le encontrarás.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxci{Aquél que reciba su Escritura en la diestra\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcii{será juzgado benignamente\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxciii{y regresará, alegre, a los suyos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxciv{Pero aquél que reciba su Escritura detrás de la espalda\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcv{invocará la destrucción,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcvi{pero arderá en fuego de gehena.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcvii{Vivía alegre con los suyos,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcviii{creyendo que no iba a volver.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcix{¡Claro que sí! Su Señor le veía bien.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcm{¡Pues no! ¡Juro por el arrebol vespertino,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmi{por la noche y por lo que congrega,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmii{por la luna cuando está llena,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmiii{que habéis de pasar de uno a otro estado!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmiv{Pero ¿qué les pasa que no creen\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcmv{y, cuando se les recita el Corán, no se prosternan?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcmvi{¡No! Los infieles desmienten;\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcmvii{pero Alá conoce bien lo que ocultan.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcmviii{Anúnciales, pues, un castigo doloroso!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcmix{Quienes, en cambio, crean y obren bien, recibirán una recompensa ininterrumpida.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcmx{\basmalahes ¡Por el cielo con sus constelaciones!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxi{¡Por el día con que se ha amenazado!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxii{¡Por el testigo y lo atestiguado!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxiii{¡Malditos sean los hombres del Foso,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxiv{del fuego bien alimentado,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxv{sentados a él,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxvi{dando testimonio de lo que ellos han hecho a los creyentes,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxvii{resentidos con ellos sólo porque creyeron en Alá, el Poderoso, el Digno de Alabanza,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxviii{a Quien pertenece el dominio de los cielos y de la tierra. Alá es testigo de todo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxix{Quienes sometan a los creyentes y a las creyentes a una prueba y no se arrepientan luego, tendrán el castigo de la gehena, el castigo de su fuego.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxx{Quienes, en cambio, hayan creído y obrado bien tendrán jardines por cuyos bajos fluyen arroyos. ¡Ese es el gran éxito!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxi{¡Sí, es duro el rigor de tu Señor!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxii{Él crea y re-crea.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxiii{Él es el Indulgente, el Lleno de Amor,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxiv{el Señor del Trono, el Glorioso,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxv{Que siempre hace lo que quiere.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxvi{¿Te has enterado de la historia de los ejércitos,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxvii{de Faraón y de los tamudeos?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxviii{Los infieles, no obstante, persisten en desmentir,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxix{pero Alá les tiene a Su merced.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxx{¡Sí es un Corán glorioso,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxi{en una Tabla bien guardada!\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxii{\basmalahes ¡Por el cielo y el astro nocturno!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxiii{Y ¿cómo sabrás qué es el astro nocturno?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxiv{Es la estrella de penetrante luz.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxv{No hay nadie que no tenga un guardián.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxvi{¡Que considere el hombre de qué ha sido creado!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxvii{Ha sido creado de un líquido fluente,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxviii{que sale de entre los riñones y las costillas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxix{En verdad, Él es capaz de volverle,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxl{el día que sean probados los secretos\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxli{y no tenga ya fuerza ni quien le auxilie.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlii{¡Por el cielo periódico!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxliii{¡Por la tierra que se abre!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxliv{Es, en verdad, una palabra decisiva,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlv{seria.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlvi{Ellos emplean una artimaña,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlvii{y Yo empleo una artimaña,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlviii{¡Concede una prórroga a los infieles, un poco más de prórroga!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlix{\basmalahes ¡Glorifica el nombre de tu Señor, el Altísimo,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcml{Que ha creado y dado forma armoniosa,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmli{Que ha determinado y dirigido,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlii{Que ha sacado el pasto\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmliii{y, luego, hecho de él obscuro heno!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmliv{Te haremos recitar y, así no olvidarás,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlv{salvo lo que Alá quiera. Él conoce lo patente y lo escondido.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlvi{Te facilitaremos el acceso a la mayor felicidad.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlvii{¡Amonesta, pues, si la amonestación aprovecha!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlviii{Se dejará amonestar quien tenga miedo de Alá,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlix{y la evitará el infame,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlx{que arderá en el tan grande Fuego.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxi{sin en él morir ni vivir.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxii{¡Bienaventurado, en cambio, quien se purifique,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxiii{quien mencione el nombre de su Señor y ore!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxiv{Pero preferís la vida de acá,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxv{siendo así que la otra es mejor y más duradera.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxvi{Esto se encuentra en las Hojas primeras,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxvii{las Hojas de Abraham y de Moisés.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxviii{\basmalahes ¿Te has enterado de la historia de la que cubre?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxix{Ese día, unos rostros, humillados,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxx{preocupados, cansados,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxi{arderán en un fuego abrasador.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxii{Se les dará de beber de una fuente hirviente.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxiii{No tendrán más alimento que de dari,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxiv{que no engorda, ni sacia.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxv{Otros rostros, ese día, estarán alegres,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxvi{satisfechos de su esfuerzo,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxvii{en un Jardín elevado,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxviii{en el que no se oirá vaniloquio.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxix{Habrá allí una fuente caudalosa,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxx{lechos elevados,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxi{copas preparadas,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxii{cojines alineados\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxiii{y alfombras extendidas.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxiv{¿Es que no consideran cómo han sido creados los camélidos,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxv{cómo alzado el cielo.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxvi{cómo erigidas las montañas,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxvii{cómo extendida la tierra?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxviii{¡Amonesta, pues! Tú eres sólo un monitor,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxix{no tienes autoridad sobre ellos.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxc{Sin embargo, a quien se desvíe y no crea,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxci{Alá le infligirá el castigo mayor.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcii{Volverán todos a Nosotros.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxciii{Luego, nos tocará a Nosotros pedirles cuentas.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxciv{\basmalahes ¡Por el alba!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcv{¡Por diez noches!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcvi{¡Por el par y el impar!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcvii{¡Por la noche cuando transcurre...\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcviii{¿No es esto un juramento para el dotado de intelecto?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcix{¿No has visto cómo ha obrado tu Señor con los aditas,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmm{con Iram, la de las columnas,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmi{sin par en el país,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmii{con los tamudeos, que excavaron la roca en el valle,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmiii{con Faraón el de las estacas,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmiv{que se habían excedido en el país\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmv{y que habían corrompido tanto en él?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmvi{Tu Señor descargó sobre ellos el azote de un castigo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmvii{Tu Señor está, sí, al acecho.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmviii{El hombre, cuando su Señor le prueba honrándolo y concediéndole gracias, dice: «¡Mi Señor me ha honrado!»\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmix{En cambio. cuando le prueba restringiéndole su sustento, dice: «¡Mi Señor me ha despreciado!»\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmx{¡No! Sois vosotros, más bien, los que no honráis al huérfano,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmxi{ni os animáis unos a otros a alimentar al pobre,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmxii{sino que devoráis vorazmente la herencia y\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmxiii{amáis la hacienda con desordenado amor.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmmxiv{¡No! Cuando la Tierra sea reducida a polvo fino\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmmxv{y venga tu Señor con los ángeles en filas,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmmxvi{ese día se traerá la gehena, ese día el hombre se dejará amonestar -y ¿de qué le servirá entonces la amonestación?-\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmmxvii{y dirá: «¡Ojalá hubiera enviado por delante para mi vida!»\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmmxviii{Ese día nadie castigará como Él,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmmxix{nadie atará como Él.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmmxx{«¡Alma sosegada!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxi{¡Vuelve a tu Señor, satisfecha, acepta!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxii{¡Y entra con Mis siervos,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxiii{Entra en Mi Jardín!»\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxiv{\basmalahes ¡No! ¡Juro por esta ciudad,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxv{en la que estás avecindado!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxvi{¡Por todo padre y lo que ha engendrado!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxvii{Hemos creado al hombre en aflicción.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxviii{¿Cree que nadie podrá contra él?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxix{Dice: «He consumido una hacienda considerable».\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxx{¿Cree que nadie le ha visto?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxi{¿No le hemos dado dos ojos,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxii{una lengua y dos labios?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxiii{¿No le hemos mostrado las dos vías?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxiv{Pues nunca se ha puesto a subir la Cuesta.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxv{Y ¿cómo sabrás qué es la Cuesta?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxvi{Es manumitir a un esclavo,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxvii{Alimentar en tiempo de hambre\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxviii{A un pariente próximo huérfano,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxix{A un pobre en la miseria.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmxl{Es, también, formar parte de los que creen, de los que se recomiendan mutuamente la paciencia y la misericordia.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmxli{Ésos son los de la Derecha.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlii{En cambio, los que no creen en Nuestros signos, ésos son los de la izquierda.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmxliii{Se cerrará un fuego sobre ellos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmmxliv{\basmalahes ¡Por el sol y su claridad!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlv{¡Por la luna cuando le sigue!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlvi{¡Por el día cuando lo muestra brillante!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlvii{¡Por la noche cuando lo vela!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlviii{¡Por el cielo y Quien lo ha edificado!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlix{¡Por la tierra y Quien la ha extentido!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmml{¡Por el alma y Quien le ha dado forma armoniosa,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmli{instruyéndole sobre su propensión al pecado y su temor de Dios!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmlii{¡Bienaventurado quien la purifique!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmliii{¡Decepcionado, empero, quien la corrompa!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmliv{Los tamudeos, en su arrogancia, desmintieron.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmlv{Cuando el más miserable de entre ellos se alzó.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmlvi{El enviado de Dios les dijo: «¡Dejad a la camella de Dios y que beba!»\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmlvii{Le desmintieron y la desjarretaron. Su Señor, entonces, les aniquiló por su pecado, a todos por igual,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmlviii{sin temer las consecuencias de ello.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmlix{\basmalahes ¡Por la noche cuando extiende su velo!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmlx{¡Por el día cuando resplandece!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxi{¡Por Quien ha creado al varón y a la hembra!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxii{Vuestro esfuerzo, en verdad, da resultados diversos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxiii{A quien da, teme a Dios,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxiv{y cree en lo más bello,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxv{le facilitaremos el acceso a la mayor felicidad.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxvi{En cambio, a quien es avaro, cree bastarse a sí mismo\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxvii{y desmiente lo más bello,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxviii{le facilitaremos el acceso a la mayor adversidad,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxix{y de nada le servirá su hacienda cuando sea precipitado.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxx{Sí, es de incumbencia Nuestra la Dirección.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxi{Sí, es cosa Nuestra la otra vida y ésta.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxii{Os he prevenido contra un fuego llameante,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxiii{en el cual sólo arderá el infame,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxiv{que desmiente y se desvía,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxv{el cual evitará quien de veras teme a Dios,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxvi{que da su hacienda para purificarse,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxvii{que, cuando hace un favor, no lo hace con ánimo de ser retribuido,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxviii{sino tan sólo por deseo de agradar a su altísimo Señor.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxix{¡Sí, ése quedará satisfecho!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxx{\basmalahes ¡Por la mañana!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxi{¡Por la noche cuando reina la calma!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxii{Tu Señor no te ha abonadonado ni aborrecido\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxiii{Sí, la otra vida será mejor para ti que ésta.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxiv{Tu Señor te dará y quedarás satisfecho.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxv{¿No te encontró huérfano y te recogió?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxvi{¿No te encontró extraviado y te dirigió?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxvii{¿No te encontró pobre y te enriqueció?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxviii{En cuanto al huérfano, ¡no le oprimas!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxix{Y en cuanto al mendigo, ¡no le rechaces!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmxc{Y en cuanto a la gracia de tu Señor, ¡publícala!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmxci{\basmalahes ¿No te hemos infundido ánimo,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcii{Liberado de la carga\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmxciii{Que agobiaba tu espalda\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmxciv{Y alzado tu reputación?\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcv{¡La adversidad y la felicidad van a una!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcvi{¡La adversidad y la felicidad van a una!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcvii{Cuando estés libre, ¡mantente diligente!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcviii{Y a tu Señor ¡deséale ardientemente!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcix{\basmalahes ¡Por las higueras y los olivos!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmc{¡Por el monte Sinaí!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmci{¡Por esta ciudad segura!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcii{Hemos creado al hombre dándole la mejor complexión.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmciii{Luego, hemos hecho de él el más abyecto,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmciv{Excepto quienes crean y obren bien, que recibirán una recompensa ininterrumpida.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcv{Cómo puede aún desmentirse el Juicio?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcvi{¿No es Alá quien mejor decide?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcvii{\basmalahes ¡Recita en el nombre de tu Señor, Que ha creado,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcviii{ha creado al hombre de sangre coagulada!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcix{¡Recita! Tu Señor es el Munífico,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcx{que ha enseñado el uso del cálamo,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxi{ha enseñado al hombre lo que no sabía.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxii{¡No! El hombre, en verdad, se rebela,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxiii{ya que cree bastarse a sí mismo.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxiv{Pero todo vuelve a tu Señor.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxv{¿Has visto a quien prohíbe\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxvi{A un siervo orar?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxvii{¿Te parece que sigue la Dirección\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxviii{O que ordena el temor de Dios?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxix{¿No te parece que desmiente y se desvía?\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxx{¿No sabe que Dios ve?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxi{¡No! Si no cesa, hemos de arrastrarle por el copete,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxii{copete que miente, que peca.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxiii{Y ¡que llame a sus secuaces,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxiv{que Nosotros llamaremos a los que precipitan!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxv{¡No! ¡No le obedezcas, sino prostérnate y acércate!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxvi{\basmalahes Lo hemos revelado en la noche del Destino.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxvii{Y ¿cómo sabrás qué es la noche del Destino?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxviii{La noche del Destino vale más de mil meses.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxix{Los ángeles y el Espíritu descienden en ella, con permiso de su Señor, para fijarlo todo.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxx{¡Es una noche de paz, hasta el rayar del alba!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxi{\basmalahes Los que no creen, tanto gente de la Escritura como asociadores, no podían renunciar hasta que les viniera la prueba clara:\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxii{Un Enviado de Dios, que recitara hojas purificadas,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxiii{que contenían Escrituras verdaderas.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxiv{Y quienes recibieron la Escritura no se dividieron sino después de venir a ellos la prueba clara.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxv{Pero no se les ordenó sino que sirvieran a Dios, rindiéndole culto sincero comohanifes, que hicieran la azalá y dieran el azaque. Ésa es la religión verdadera.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxvi{Los que no crean, tanto gente de la Escritura como asociadores estarán, eternamente, en el fuego de la gehena. Ésos son lo peor de la creación.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxvii{En cambio, los que crean y obren bien, ésos son lo mejor de la creación,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxviii{y tendrán como retribución, junto a su Señor, los jardines del edén, por cuyos bajos fluyen arroyos, en los que estarán eternamente, para siempre. Dios está satisfecho de ellos y ellos lo están de Él. Esto es sólo para quien tiene miedo de su Señor.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxix{\basmalahes Cuando sea sacudida la tierra por su terremoto,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxl{expulse la tierra su carga\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxli{y el hombre se pregunte: «¿Qué es lo que le pasa?»,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlii{ese día contará sus noticias,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxliii{según lo que tu Señor le inspire.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxliv{Ese día los hombres surgirán en grupos, para que se les muestren sus obras.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlv{Quien haya hecho el peso de un átomo de bien, lo verá.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlvi{Y quien haya hecho el peso de un átomo de mal, lo verá.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlvii{\basmalahes ¡Por los corceles jadeantes,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlviii{que hacen saltar chispas,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlix{cargan el alba,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcl{levantando, así, una nube de polvo\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcli{y rompen a través de una hueste!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclii{El hombre, en verdad, es muy desagradecido con su Señor,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcliii{y él es, sí, testigo de ello.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcliv{Y ama ardientemente, sí, los bienes terrenales.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclv{¿No sabe, acaso, que cuando lo que hay en las sepulturas sea vuelto al revés\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmclvi{y se haga público lo que hay en los pechos,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmclvii{ese día, su Señor estará, ciertamente, bien informado de ellos?\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmclviii{\basmalahes ¡La Calamidad!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclix{¿Qué es la Calamidad?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclx{Y ¿cómo sabrás qué es la calamidad?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxi{El día que los hombres parezcan mariposas dispersas\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxii{y las montañas copos de lana cardada,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxiii{entonces, el autor de obras de peso\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxiv{gozará de una vida agradable,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxv{mientras que el autor de obras ligeras\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxvi{tendrá un abismo por morada.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxvii{Y ¿cómo sabrás qué es?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxviii{¡Un fuego ardiente!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxix{\basmalahes El afán de lucro os distrae\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxx{hasta la hora de la muerte.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxi{¡No! ¡Ya veréis...!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxii{¡No y no! ¡Ya veréis...!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxiii{¡No! Si supierais a ciencia cierta...\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxiv{¡Veréis, de seguro, el fuego de la gehena!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxv{¡Sí, lo veréis con ojos de certeza!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxvi{Luego, ese día, se os preguntará, ciertamente, por la delicia.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxvii{\basmalahes ¡Por la tarde!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxviii{En verdad, el hombre camina hacia su perdición,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxix{Excepto quienes crean, obren bien, se recomienden mutuamente la verdad y se recomienden mutuamente la paciencia.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxx{\basmalahes ¡Ay de todo aquél que difame, que critique,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxi{que amase hacienda y la cuente una y otra vez,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxii{creyendo que su hacienda le hará inmortal!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxiii{¡No! ¡Será precipitado, ciertamente, en la hutama !\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxiv{Y ¿cómo sabrás qué es la hutama ?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxv{Es el fuego de Alá encendido,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxvi{Que llega hasta las entrañas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxvii{Se cerrará sobre ellos\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxviii{en extensas columnas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxix{\basmalahes ¿No has visto cómo obró tu Señor con los del elefante?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxc{¿No desbarató su artimaña\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxci{y envió contra ellos bandadas de aves,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcii{que descargaron sobre ellos piedras de arcilla,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxciii{dejándolos como espigas desgranadas?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxciv{\basmalahes Por el pacto de los coraixíes,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcv{pacto relativo a la caravana de invierno y la de verano,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcvi{¡que sirvan, pues, al Señor de esta Casa,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcvii{que les ha alimentado contra el hambre y dado seguridad frente al temor!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcviii{\basmalahes ¿Qué te parece el que desmiente el Juicio?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcix{Es el mismo que rechaza violentamente al huérfano\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcc{Y no anima a dar de comer al pobre.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcci{¡Ay de los que oran\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccii{distraídamente,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcciii{para ser vistos\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcciv{Y niegan la ayuda!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmccv{\basmalahes Te hemos dado la abundancia.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccvi{Ora, pues, a tu Señor y ofrece sacrificios.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccvii{Sí, es quien te odia el privado de posteridad.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccviii{\basmalahes Di: «¡Infieles!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccix{Yo no sirvo lo que vosotros servís,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccx{Y vosotros no servís lo que yo sirvo.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxi{Yo no sirvo lo que vosotros habéis servido\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxii{Y vosotros no servís lo que yo sirvo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxiii{Vosotros tenéis vuestra religión y yo la mía».\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxiv{\basmalahes Cuando venga el auxilio de Alá, así como el éxito,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxv{y veas que los hombres entran en masa en la religión de Alá,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxvi{entonces, ¡celebra las alabanzas de tu Señor y pide Su perdón! Es indulgente.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxvii{\basmalahes ¡Perezcan las manos de Abu Lahab! ¡Perezca él!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxviii{Ni su hacienda ni sus adquisiciones le servirán de nada.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxix{Arderá en un fuego llameante,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxx{así como su mujer, la acarreadora de leña,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxi{a su cuello una cuerda de fibras.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxii{\basmalahes Di: «¡Él es Alá, Uno,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxiii{Dios, el Eterno.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxiv{No ha engendrado, ni ha sido engendrado.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxv{No tiene par».\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxvi{\basmalahes Di: «Me refugio en el Señor del alba\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxvii{del mal que hacen sus criaturas,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxviii{del mal de la oscuridad cuando se extiende,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxix{del mal de las que soplan en los nudos,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxx{del mal envidioso cuando envidia».\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxi{\basmalahes Di: «Me refugio en el Señor de los hombres,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxii{el Rey de los hombres,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxiii{el Dios de los hombres,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxiv{del mal de la insinuación, del que se escabulle,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxv{que insinúa en el ánimo de los hombres,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxvi{sea genio, sea hombre».\qt@no{(6)}}
+%% End of file `qurantext-esii.translation.def'.
diff --git a/Master/texmf-dist/tex/xelatex/quran-es/qurantext-esiii.translation.def b/Master/texmf-dist/tex/xelatex/quran-es/qurantext-esiii.translation.def
new file mode 100644
index 00000000000..02e11844d37
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/quran-es/qurantext-esiii.translation.def
@@ -0,0 +1,6237 @@
+\qt@newcmd\qurantrans@es@i{En el nombre de Dios, el Compasivo con toda la creación, el Misericordioso con los creyentes.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@ii{Todas las alabanzas son para Dios, Señor de todo cuanto existe,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@iii{el Compasivo, el Misericordioso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@iv{Soberano absoluto del Día del Juicio Final,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@v{solo a Ti te adoramos y solo de Ti imploramos ayuda.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@vi{¡Guíanos por el camino recto!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@vii{El camino de los que has colmado con Tus favores, no el de los que cayeron en Tu ira, ni el de los que se extraviaron.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@viii{\basmalahes Álif. Lam. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@ix{Este es el Libro del cual no hay duda, es guía para los que son conscientes de Dios y e temen devocionalmente,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@x{los que creen en lo oculto, practican la oración, dan caridad de lo que les he proveído,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@xi{y creen en lo que te ha sido revelado [¡oh, Mujámmad!] y en lo que fue revelado [originalmente a los profetas anteriores], y tienen certeza de la existencia de la otra vida.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@xii{Esos son los que están en la guía de su Señor y serán los bienaventurados.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@xiii{A los que niegan la verdad les da lo mismo que les adviertas o no, no creerán.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@xiv{Dios ha sellado sus corazones y sus oídos, sobre sus ojos hay un velo y recibirán un castigo terrible [en el Infierno].\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@xv{Entre las personas hay [hipócritas] que dicen: ``Creemos en Dios y en el Día de la Resurrección", pero no son creyentes.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@xvi{Pretenden engañar a Dios y también a los creyentes pero, sin advertirlo, solo se engañan a sí mismos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@xvii{Sus corazones tienen una enfermedad y [por su actitud] Dios agrava aún más su enfermedad. Sufrirán un castigo doloroso por haber mentido.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@xviii{Cuando se les dice: ¡No siembren la corrupción en la Tierra! Responden: ``¡Pero si nosotros somos los que hacemos el bien!"\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@xix{¿Acaso no son ellos los corruptores? [Sí,] pero no se dan cuenta.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@xx{Cuando se les dice: ``¡Crean como ha creído la gente!" Responden: ``¿Es que vamos a creer como lo hacen los tontos?" ¿Acaso no son ellos los tontos? [Sí,] pero no lo saben.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@xxi{Cuando se encuentran con los creyentes les dicen: ``¡Somos creyentes!" Pero cuando están a solas con los malvados de entre ellos, les aseguran: ``¡Estamos con ustedes, solo nos burlábamos de ellos!"\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@xxii{[Pero] Dios hará que sus burlas caigan sobre ellos mismos y dejará que permanezcan extraviados, en su ceguera.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@xxiii{Ellos vendieron la guía, cambiándola por el desvío, y tal negocio no les resultó provechoso, no siendo de los bien guiados.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@xxiv{Su ejemplo es como el de los que encienden fuego, y cuando les alumbra a su alrededor, [debido a su desvío] Dios les quita la luz dejándolos en tinieblas, por lo que no pueden ver.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@xxv{Son sordos, mudos y ciegos, y no volverán [al buen camino].\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@xxvi{O [son] como los que al ser azotados por una lluvia torrencial cargada de oscuridad, truenos y relámpagos, se tapan los oídos con sus dedos al caer los rayos por temor a la muerte. Dios asedia a los que niegan la verdad.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@xxvii{Los relámpagos casi ciegan sus ojos. Cuando los iluminan caminan a su luz, pero cuando la oscuridad vuelve sobre ellos se detienen. Si Dios hubiese querido les habría dejado sordos y ciegos. Dios tiene poder sobre todas las cosas.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@xxviii{¡Oh, seres humanos! Adoren a su Señor que los creó a ustedes y a quienes los precedieron, para que así alcancen el temor devocional de Dios.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@xxix{Él hizo para ustedes de la Tierra un lugar habitable y del cielo un techo, e hizo descender la lluvia del cielo con la que hace brotar frutos para su sustento. En consecuencia, no dediquen actos de adoración a otros además de Dios, ahora que saben [que Él es el único Creador].\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@xxx{Si dudan de lo que le he revelado a Mi siervo traigan un capítulo [del Corán] similar, y recurran para ello a quienes toman por socorredores en lugar de Dios, si es verdad lo que afirman.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@xxxi{Si no lo hacen, y por cierto que no podrán hacerlo, teman al fuego, cuyo combustible serán seres humanos y piedras, [un fuego] que ha sido preparado para los que niegan la verdad.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@xxxii{Y albricia a los creyentes que obran correctamente que tendrán como recompensa jardines por donde corren los ríos. Cuando allí reciban frutos dirán: ``Esto es similar a lo que recibimos anteriormente", pero solo lo será en apariencia. Allí tendrán esposas puras, donde morarán por toda la eternidad.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@xxxiii{Dios no se avergüenza de poner como ejemplo a un mosquito o algo aún más pequeño. Los creyentes saben que es la verdad proveniente de su Señor, en cambio los que niegan la verdad dicen: ``¿Qué pretende Dios con este ejemplo?" Así es como Él extravía a muchos y guía a muchos [con este ejemplo], pero no extravía sino a los perversos,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@xxxiv{los que no cumplen con el pacto establecido con Dios a pesar de haberse comprometido, rompen [los lazos familiares] que Dios ordenó respetar y siembran corrupción en la Tierra. Ésos son los perdedores.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@xxxv{¿Cómo osan no creer en Dios siendo que no existían y Él les dio la vida, luego los hará morir y finalmente los resucitará y a Él serán retornados [para que los juzgue el Día del Juicio Final]?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@xxxvi{Él es Quien creó para ustedes todo cuanto hay en la Tierra, luego se volvió hacia el cielo e hizo de éste siete cielos; Él conoce todas las cosas.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@xxxvii{Y [menciona, oh, Mujámmad] cuando tu Señor le dijo a los ángeles: ``He de establecer en la Tierra a quien la herede", dijeron: ``¿Pondrás en ella a quien la corrompa [devastándola] y derrame sangre siendo que nosotros te glorificamos y santificamos?" Dijo: ``Yo sé lo que ustedes ignoran".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@xxxviii{Y [Dios] enseñó a Adán los nombres de todas las cosas, luego se las mostró a los ángeles y dijo: ``Díganme sus nombres, si es que dicen la verdad".\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@xxxix{Dijeron: ``¡Glorificado seas! No tenemos más conocimiento que el que Tú nos has concedido, Tú todo lo conoces, todo lo sabes".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@xl{Dijo: ``¡Oh Adán! Infórmales sobre sus nombres". Y cuando les hubo informado sobre sus nombres, Dios dijo: ``¿Acaso no les dije que conozco lo oculto de los cielos y de la Tierra, y sé lo que manifiestan y lo que ocultan?"\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@xli{Pero cuando dije a los ángeles: ``¡Prostérnense ante Adán!" Todos se prosternaron excepto Iblís, que se negó y fue soberbio, y se convirtió en uno de los incrédulos.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@xlii{Dije: ``¡Oh, Adán! Habita con tu esposa el Paraíso, y coman de su abundancia cuanto deseen, pero no se acerquen a este árbol, porque si lo hacen se convertirán ambos en transgresores".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@xliii{Pero el demonio los hizo caer [en la desobediencia] apartándolos de la situación [agradable] en la que se encontraban. Y les dije: ``¡Desciendan! Serán enemigos unos de otros; y en la Tierra encontrarán una morada y deleite temporal".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@xliv{Pero le fueron inspiradas a Adán unas palabras de su Señor [para que pudiera expresar su arrepentimiento] y Dios aceptó su arrepentimiento, porque Él es el Indulgente, el Misericordioso.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@xlv{Dije: ``¡Desciendan todos de él! Cuando les llegue de Mí una guía, quienes la sigan no habrán de sentir temor ni tristeza.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@xlvi{Pero quienes no crean y desmientan Mis signos serán los habitantes del Fuego, donde morarán eternamente.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@xlvii{¡Oh, Pueblo de Israel! Recuerden los beneficios con los que los agracié, y cumplan con su compromiso que Yo cumpliré con el Mío, pero tengan temor devocional solo de Mí.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@xlviii{Y crean en lo que he revelado en confirmación de lo que ya habían recibido y no sean los primeros en negarlo. No vendan Mis preceptos por un precio vil, y tengan temor devocional solo de Mí.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@xlix{Y no mezclen la verdad con falsedades ni oculten la verdad a sabiendas.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@l{Cumplan con la oración, paguen el zakat y prostérnense con los que se prosternan [adorando a Dios].\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@li{¿Acaso le ordenan a la gente que haga el bien y se olvidan de hacerlo ustedes mismos, siendo que leen el Libro [la Tora]? ¿Acaso no razonan [bien]?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@lii{Busquen socorro en la paciencia y la oración. El cumplimiento de la oración es difícil, excepto para los que se someten humildemente [a Dios];\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@liii{tienen certeza del encuentro con su Señor y saben que retornarán a Él.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@liv{¡Oh, Pueblo de Israel! Recuerden los beneficios con que los agracié y cómo los distinguí sobre los demás pueblos [de su época].\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@lv{Y teman el día en que ninguna persona pueda beneficiarse de otra ni se acepte intercesión o compensación alguna, y nadie sea auxiliado.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@lvi{Y [recuerden] cuando salvé a sus antepasados de las huestes del Faraón, que los sometían a crueles castigos; degollaban a sus hijos varones [recién nacidos] y dejaban con vida a sus hijas mujeres [para sojuzgarlas]. Esto era una prueba difícil de su Señor.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@lvii{Y [recuerden] cuando dividí el mar y los salvé, ahogando a las huestes del Faraón delante de sus propios ojos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@lviii{Y [recuerden que] cité a Moisés durante cuarenta noches, y cuando se ausentó ustedes tomaron el becerro, obrando injustamente.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@lix{Luego, a pesar de eso, los perdoné para que fueran agradecidos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@lx{Y le concedí a Moisés el Libro y el criterio para que siguieran la guía.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@lxi{Y [recuerden] cuando Moisés dijo a su pueblo: ``¡Oh, pueblo mío! Han sido injustos con ustedes mismos al adorar al becerro. Arrepiéntanse ante su Señor y dense muerte a ustedes mismos. Eso será lo mejor ante su Creador". Luego Él aceptó su arrepentimiento, porque Él es el Indulgente, el Misericordioso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@lxii{Y [recuerden] cuando dijeron: ``¡Oh, Moisés! No creeremos en ti hasta que veamos a Dios claramente". Entonces los azotó un rayo mientras miraban.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@lxiii{Luego de la muerte los resucité para que fueran agradecidos.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@lxiv{Y extendí nubes sobre ustedes [para que les dieran sombra], y les envié el maná y las codornices [y les dije:] ``Coman de las cosas buenas que les he provisto"; pero no Me causaron perjuicio alguno [con sus transgresiones], sino que fueron injustos consigo mismos.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@lxv{Y [recuerden] cuando les dije: ``Entren en esta ciudad [Jerusalén] y coman de ella cuanto deseen en abundancia, pero entren por la puerta prosternándose, suplicando: ¡Perdónanos! Que perdonaré sus pecados, y les concederé aún más a los que hacen el bien".\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@lxvi{Pero los injustos cambiaron por otras las palabras que se les había ordenado decir, y [por eso] hice descender sobre los injustos un castigo del cielo por haber obrado con maldad.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@lxvii{Y [recuerden] cuando Moisés rogó a su Señor agua para que bebiera su pueblo, le dije: ``¡Golpea la roca con tu bastón!" Entonces brotaron de ella doce manantiales, y supo cada tribu en cual debía beber [y les dije] ``Coman y beban del sustento de Dios, y no abusen en la Tierra corrompiéndola".\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@lxviii{Y [recuerden] cuando dijeron: ``¡Oh, Moisés! No podremos seguir tolerando una sola clase de comida, pide a tu Señor para que nos beneficie con lo que brota de la tierra: verduras, pepinos, ajos, lentejas y cebollas". [Moisés les] Dijo: ``¿Es que quieren cambiar lo superior por algo inferior? Vuelvan entonces a [la esclavitud que sufrían] en Egipto, que allí tendrán lo que piden". Pero los azotó la humillación y la miseria, e incurrieron en la ira de Dios por no haber creído en los preceptos de Dios, haber matado injustamente a los Profetas, rebelarse y transgredir la ley.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@lxix{Quienes creyeron, los judíos, los cristianos y los sabeos que hayan tenido fe en Dios, en el Día del Juicio Final y hayan obrado correctamente, obtendrán su recompensa junto a su Señor, y no temerán ni se entristecerán.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@lxx{Y [recuerden] cuando celebré un pacto con ustedes y elevé el monte por encima suyo [y les dije:] ``Aférrense con fuerza a lo que les he dado [la Tora] y recuerden lo que hay en ella, que así alcanzarán el temor devocional de Dios.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@lxxi{Pero luego volvieron sobre sus pasos, y si no fuera por la gracia y misericordia de Dios sobre ustedes, se contarían entre los perdedores.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@lxxii{Ellos saben lo que ocurrió a los que transgredieron el sábado; [les dije]: ``Sean monos despreciables".\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@lxxiii{Hice de ello un escarmiento para sus contemporáneos y descendientes, y motivo de reflexión para los que temen devocionalmente a Dios.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@lxxiv{Y [recuerden] cuando Moisés dijo a su pueblo: ``Dios les ordena ofrendar una vaca". Dijeron: ``¿Acaso te burlas de nosotros?" Dijo [Moisés]: ``¡Que Dios me proteja de contarme entre los ignorantes!"\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@lxxv{Dijeron: ``Pide a tu Señor que nos indique cómo es". Dijo [Moisés]: ``Dios dice que la vaca no debe ser vieja ni joven, sino de edad intermedia; cumplan con lo que se les ordena".\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@lxxvi{Dijeron: ``Pide a tu Señor que nos indique de qué color es". Dijo [Moisés]: ``Él dice que es una vaca de color amarillo, intenso, que alegre a quienes la miren".\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@lxxvii{Dijeron: ``Pide a tu Señor para que nos indique cómo es, porque todas las vacas nos parecen iguales; y si Dios quiere seremos de los que siguen la guía".\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@lxxviii{Dijo [Moisés]: ``Él dice que debe ser una vaca que no haya sido utilizada para arar la tierra ni regar los cultivos, sana y sin manchas". Dijeron: ``Por fin has dicho la verdad". Y la degollaron, aunque estuvieron a punto de no hacerlo.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@lxxix{Y [recuerden] cuando mataron a un hombre y disputaron, Dios reveló lo que [algunos] ocultaban.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@lxxx{Entonces dije: ``Golpéenlo con una parte de ella". De la misma manera Dios resucita a los muertos y les muestra Sus milagros para que razonen.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@lxxxi{Luego [a pesar de estos milagros] se endurecieron sus corazones como piedras, o más duros aún, porque de algunas piedras brotan ríos, otras se parten y pasa agua a través de ellas, y otras se derrumban por temor a Dios; pero [sepan que] Dios no está desatento de lo que hacen.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@lxxxii{¿Acaso pretenden [¡oh, creyentes!] que les crean, siendo que algunos de ellos oían la Palabra de Dios [la Tora] y la alteraban intencionalmente después de haberla comprendido?\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@lxxxiii{Y cuando se encuentran con los creyentes dicen: ``¡Somos creyentes!" Pero cuando están entre ellos se dicen unos a otros: ``¿Acaso van a contarles lo que Dios nos ha revelado para que puedan argumentar con ello contra nosotros ante nuestro Señor?" ¿Es que no razonan?\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@lxxxiv{¿Es que no saben que Dios conoce lo que ocultan y lo que hacen público?\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@lxxxv{Entre ellos hay iletrados sin conocimiento que no conocen el Libro, que siguen solo sus propios deseos y no hacen sino conjeturar.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@lxxxvi{¡Ay de aquellos que escriben el Libro con sus manos y luego dicen: ``Esto proviene de Dios", para venderlo a vil precio! ¡Ay de ellos por lo que han escrito sus manos! ¡Ay de ellos por lo que obtuvieron!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@lxxxvii{Dicen [estos hijos de Israel]: ``El fuego no nos quemará sino días contados". Diles: ``¿Acaso tienen una promesa de Dios?" Sepan que Dios no falta a Sus promesas. ¿O acaso están diciendo de Dios algo que no saben?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@lxxxviii{No cabe duda de que quienes hayan cometido faltas, y estén cercados por sus pecados, serán los moradores del Fuego, en el que permanecerán eternamente.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@lxxxix{Pero en cambio, quienes hayan creído y obrado rectamente serán los moradores del Paraíso donde vivirán eternamente.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@xc{Y [recuerden] cuando celebré el pacto con el Pueblo de Israel: ``Adoren solo a Dios, hagan el bien a sus padres y parientes, a los huérfanos y los pobres, hablen a la gente de buenas maneras, cumplan la oración y paguen el zakat"; pero luego volvieron su espalda en rechazo, salvo unos pocos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@xci{Y [recuerden] cuando celebré un pacto con ustedes: ``No derramarán su sangre ni se expulsarán de sus hogares", lo aceptaron y fueron testigos de ello.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@xcii{Pero fueron ustedes mismos quienes mataron y expulsaron a algunos de los suyos de sus hogares, haciendo causa común contra ellos con pecado y violación de la ley. Y si alguno de ellos caía cautivo, pagaban el rescate por él, pero el haberlos expulsado era ya ilícito. ¿Acaso creen en una parte del Libro y descreen de otra? ¿Cuál es la consecuencia de quienes obran así sino la humillación en la vida mundanal y el castigo más severo el Día de la Resurrección? [Sepan que] Dios no está desatento de cuanto hacen.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@xciii{Esos son quienes compraron la vida mundanal a cambio de la otra. A ellos no se les aliviará el castigo ni tendrán socorredores.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@xciv{Y revelé a Moisés el Libro, y después de él envié Mensajeros; y concedí a Jesús, el hijo de María, milagros evidentes y lo fortalecí con el Espíritu Santo [el ángel Gabriel]. ¿No es cierto acaso que cada vez que se les presentaba un Mensajero que no satisfacía sus deseos se comportaban con soberbia, desmintiendo a unos y matando a otros?\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@xcv{Decían: ``Nuestros corazones están cerrados [porque ya saben lo necesario]". Pero en realidad, Dios los maldijo por negar la verdad. ¡Poco es lo que creen!\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@xcvi{Y cuando les llegó el Libro de Dios [el Corán] que confirmaba lo que ya tenían [en la Tora], a pesar de que antes oraban [para que llegara el Profeta que los guiase a] la victoria contra los incrédulos, cuando se les presentó [el Mensajero] lo reconocieron [pero como no era judío], no creyeron en él. ¡Que la maldición de Dios caiga sobre los que niegan la verdad!\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@xcvii{¡Qué mal negocio han hecho al no creer en lo que Dios reveló por envidia a que Dios favoreciera a quien quiso de entre Sus siervos, por lo que incurrieron una y otra vez en la ira [de Dios]! Los que niegan la verdad tendrán un castigo degradante.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@xcviii{Y cuando se les dice: ``Crean en lo que Dios ha revelado", responden: ``Creemos en lo que Dios nos reveló a nosotros", y descreen de lo que vino después, a pesar de ser la Verdad que corrobora [el libro] que tienen. Diles: ``¿Por qué, entonces, asesinaron a los Profetas de Dios, si eran creyentes?"\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@xcix{Se les presentó Moisés con milagros evidentes, pero adoraron el becerro [de oro] obrando injustamente.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@c{Y [recuerden] cuando celebré con ustedes el pacto y levanté el monte encima suyo [y dije]: ``Aférrense con fuerza a lo que les he dado y obedezcan". Dijeron: ``Oímos, pero desobedecemos". Y como castigo por haber negado la verdad sus corazones quedaron embebidos de amor por el becerro [de oro]. Diles [¡oh, Mujámmad!, a ellos]: ``¡Qué pésimo es lo que su fe les ordena hacer, si en verdad fueran creyentes!"\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@ci{Diles [¡oh, Mujámmad!]: ``Si creen que la morada del más allá junto a Dios es exclusiva para ustedes, entonces deseen la muerte si son veraces".\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@cii{Pero jamás la desearán por lo que han cometido, y Dios bien sabe quiénes son los injustos.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@ciii{Encontrarás que [los judíos] son los más aferrados a la vida mundanal, más aún que los idólatras. Algunos de ellos quisieran vivir mil años, pero eso no les libraría del castigo, porque Dios sabe cuanto hacen.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@civ{Dile [¡oh, Mujámmad!] a quien sea enemigo del ángel Gabriel, que él es quien descendió la revelación a tu corazón con la anuencia de Dios, confirmando los Mensajes anteriores, como guía y buena nueva para los creyentes.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@cv{Quien sea enemigo de Dios, de Sus ángeles, de Sus Mensajeros, del ángel Gabriel y del ángel Miguel, que sepa que Dios es enemigo de los que rechazan el Mensaje.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@cvi{Y te he revelado [¡oh, Mujámmad!] signos evidentes, que solo los perversos los niegan.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@cvii{¿No es cierto que cada vez que realizan un pacto, un grupo de ellos lo rompe? La mayoría de ellos no cree.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@cviii{Cuando se les presentó el Mensajero de Dios corroborando lo que ya se les había revelado [la Tora], algunos se rebelaron contra el Libro de Dios como si no supieran [lo que contenía].\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@cix{Pero sí seguían lo que recitaban los demonios durante el reinado de Salomón. Sepan que Salomón no cayó en la incredulidad sino que fueron los demonios quienes enseñaban a la gente la hechicería y la magia que transmitieron los ángeles Harút y Marút en Babilonia. Ellos no le enseñaban a nadie sin antes advertirle: ``Nosotros somos una tentación, no caigan en la incredulidad". A pesar de la advertencia, aprendieron de ellos cómo separar al hombre de su esposa, aunque no podían perjudicar a nadie sin el permiso de Dios. Lo que aprendían los perjudicaba y no los beneficiaba. Pero los hijos de Israel sabían que quien practicara la hechicería no tendría éxito en la otra vida. ¡Qué mal vendieron sus almas! Si supieran.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@cx{Si hubieran creído y temido devocionalmente a Dios, la recompensa de Dios hubiera sido [muy] superior, si supieran.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@cxi{¡Oh, creyentes! No digan [al Mensajero de Dios]: ``Rá‘ina", sino [que digan]: ``Undhurna", y obedezcan [-lo]. Los que rechacen el mensaje recibirán un castigo doloroso.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@cxii{Los incrédulos de entre la Gente del Libro y los idólatras no desean que su Señor los agracie con alguna bondad, pero Dios distingue con Su misericordia a quien Él quiere; porque Dios es el poseedor del favor inmenso.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@cxiii{No abrogo ninguna regla [ni versículo] ni la hago olvidar sin traer otra mejor o similar. ¿Acaso no sabes que Dios tiene poder sobre todas las cosas?\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@cxiv{¿No sabes que a Dios pertenece el reino de los cielos y de la Tierra, y que no tienes fuera de Dios protector ni socorredor?\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@cxv{¿Acaso van a exigirle [un milagro] a su Mensajero como [el pueblo de Israel] le exigió a Moisés? Quien cambie la fe por la incredulidad se habrá desviado del camino recto.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@cxvi{Muchos de entre la Gente del Libro quisieran que renegaran de su fe y volvieran a ser incrédulos por la envidia que les tienen, [incluso] después de habérseles evidenciado a ellos la verdad. Pero perdonen y disculpen hasta que Dios decida sobre ellos. Dios tiene poder sobre todas las cosas.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@cxvii{Realicen la oración y paguen el zakat, y [sepan que] todo el bien que hagan será para su propio beneficio, y su recompensa la encontrarán junto a Dios. Dios sabe cuanto hacen.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@cxviii{Y dicen: ``Solo entrará al Paraíso quien sea judío o cristiano". Esos son sus deseos infundados. Diles: ``Traigan pruebas, si es que dicen la verdad".\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@cxix{Pero no es así, porque quienes sometan su voluntad a Dios y hagan el bien obtendrán su recompensa junto a su Señor, y no sentirán temor ni tristeza.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@cxx{Dicen los judíos: ``Los cristianos no tienen bases", y los cristianos dicen: ``Los judíos no tienen bases", siendo que ambos recitan el [mismo] Libro. Así mismo dijeron los ignorantes [idólatras]. Dios juzgará entre ellos el Día de la Resurrección sobre lo que discrepaban.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@cxxi{¿Acaso existe alguien más injusto que quien prohíbe que en las casas de Dios se alabe Su nombre, e intentan destruirlas? Ellos deberían entrar en ellas con temor. [Porque finalmente] serán humillados en este mundo y en la otra vida recibirán un castigo terrible.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@cxxii{A Dios pertenece el oriente y el occidente, y adondequiera que dirijan el rostro [durante la oración], allí se encuentra el rostro de Dios. Dios es Vasto, todo lo conoce.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@cxxiii{Dicen: ``Dios ha tenido un hijo". ¡Glorificado sea! A Él pertenece cuanto hay en los cielos y en la Tierra, todo se somete a Él.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@cxxiv{Originador de los cielos y la Tierra, cuando decreta un asunto dice: ``¡Sé!", y es.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@cxxv{Pero dicen los que no saben: ``¿Por qué Dios no nos habla, o nos envía una señal?" Lo mismo dijeron quienes les precedieron, sus corazones se asemejan. Hemos hecho evidentes los signos para quienes creen con certeza.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@cxxvi{Te he enviado [oh, Mujámmad] con la verdad, como albriciador y advertidor, pero no serás preguntado sobre los que se condenen al fuego infernal.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@cxxvii{Ni los judíos ni los cristianos estarán [completamente] satisfechos contigo hasta que sigas su religión. Di: ``La guía de Dios es la guía verdadera". Si siguieras sus deseos luego de haberte llegado el conocimiento [sobre la verdad], no tendrías quién te protegiera ni quién te auxiliara de Dios.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@cxxviii{Aquellos a quienes he confiado el Libro, si fueran consecuentes con la versión original del mismo, habrían creído [en el Corán]. Pero quienes lo nieguen, ellos serán los perdedores.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@cxxix{¡Oh, Pueblo de Israel! Recuerden los beneficios con que los favorecí, y que los distinguí sobre los demás pueblos [de su época].\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@cxxx{Teman el día que ningún alma pueda beneficiar otra alma, no se acepte compensación ni intercesión alguna, y no sean auxiliados.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@cxxxi{Y [recuerda, oh, Mujámmad] cuando Abraham fue puesto a prueba por su Señor con unas órdenes, y las cumplió. Dijo [Dios]: ``Haré de ti un guía para la gente". Preguntó [Abraham]: ``¿Y de mis descendientes?" Dijo [Dios]: ``Mi pacto [la profecía] no incluye a los injustos".\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@cxxxii{Y [recuerden] cuando hice de La Casa [la Ka‘bah] un lugar de reunión y refugio para la gente. ``[Oh creyentes] Tomen el sitial de Abraham como lugar de oración". Y cuando indiqué a Abraham e Ismael: ``Purifiquen Mi Casa para quienes vengan a hacer el rito de la circunvalación y el retiro espiritual, y los que se inclinen y prosternen durante su oración".\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@cxxxiii{Y [recuerden] cuando Abraham dijo: ``¡Señor mío! Haz de esta ciudad [La Meca] un lugar seguro, y beneficia con frutos a los pobladores que creen en Dios y en el Día del Juicio Final". Dijo [Dios]: ``[Pero] al que rechace la verdad lo dejaré disfrutar por un tiempo, y después lo conduciré al castigo del Fuego. ¡Qué pésimo destino!"\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@cxxxiv{Y [recuerden] cuando Abraham e Ismael levantaron los cimientos de La Casa, dijeron: ``¡Oh, Señor! Acepta nuestra obra. Tú eres el que todo lo oye, todo lo sabe".\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@cxxxv{``¡Señor nuestro! Haz que nosotros nos entreguemos a Tu voluntad, y que nuestra descendencia también lo haga [como una nación de musulmanes]. Enséñanos nuestros ritos para la peregrinación y acepta nuestro arrepentimiento; Tú eres el Indulgente, el Misericordioso".\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@cxxxvi{``¡Señor nuestro! Haz surgir de entre nuestra descendencia un Mensajero que les recite Tus palabras y les enseñe el Libro y la sabiduría, y los purifique. Tú eres el Poderoso, el Sabio".\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@cxxxvii{¿Y quién sino el de espíritu necio, puede rechazar la religión [monoteísta] de Abraham? Fue un elegido en este mundo, y en el otro se contará entre los justos.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@cxxxviii{Y [recuerden] cuando le dijo su Señor: ``Entrégame tu voluntad", respondió: ``Le entrego mi voluntad al Señor del Universo".\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@cxxxix{Y esto fue lo que Abraham y Jacob legaron a sus hijos: ``¡Oh, hijos míos! Dios les ha elegido esta religión, y no mueran sin haber entregado su voluntad [a Dios]".\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@cxl{¿Acaso saben qué le preguntó Jacob a sus hijos cuando le llegó la muerte?: ``¿Qué adorarán después de mí [muerte]?" Dijeron: ``Adoraremos lo que adoraban tú y tus ancestros, Abraham, Ismael e Isaac: la Única divinidad, y a Él entregamos nuestra voluntad".\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@cxli{Aquella nación ya desapareció y recibió lo que merecía, y ustedes recibirán lo que merezcan, y no se les preguntará por lo que ellos hicieron.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@cxlii{Dijeron [la Gente del Libro]: ``Sean judíos o cristianos, que así estarán en la guía correcta". Diles: ``¡No! Seguimos la religión de Abraham, que era monoteísta puro y no era de los idólatras".\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@cxliii{Digan: ``Creemos en Dios, en lo que nos fue revelado a nosotros, en lo que fue revelado a Abraham, a Ismael, a Isaac, a Jacob y a las tribus, y en lo que Dios reveló a Moisés, a Jesús y a los demás Profetas. No discriminamos entre ellos, y entregamos a Dios nuestra voluntad [siendo musulmanes].\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@cxliv{Si creen en lo mismo que ustedes creen habrán seguido la guía correcta; pero si lo rechazan, estarán en el error. Dios te protegerá de ellos. Él es el que todo lo oye, todo lo sabe.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@cxlv{[Digan: ``Seguimos] la religión de Dios. ¿Y qué mejor religión que la de Dios? Y nosotros solo Lo adoramos a Él".\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@cxlvi{Di: ``¿Por qué discuten con nosotros acerca de Dios, siendo que Él es el Señor de ambos? Nosotros responderemos por nuestras acciones y ustedes por las suyas. Nosotros Le somos sinceros [adorándolo solo a Él]".\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@cxlvii{¿Acaso van a decir que Abraham, Ismael, Isaac, Jacob y las doce tribus eran judíos o cristianos? Di: ``¿Acaso ustedes saben más que Dios?" ¿Existe alguien más injusto que quien oculta un testimonio que ha recibido de Dios? Dios no está desatento de lo que hacen.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@cxlviii{Aquella nación ya desapareció y recibió lo que merecía, y ustedes recibirán lo que merezcan, y no se les preguntará por lo que ellos hicieron.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@cxlix{Dirán algunas personas tontas: ``¿Qué los hizo cambiar la orientación [en la que oraban]?" Diles: ``A Dios pertenece el oriente y el occidente, y Él guía a quien quiere hacia el sendero recto".\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@cl{Hice de ustedes una comunidad moderada y justa, a fin de que fueran testigos ante la humanidad, y fuera el Mensajero testigo de ustedes. Con el cambio del lugar hacia donde te orientabas [para orar], distinguí a los que toman partido por el Mensajero de aquellos que le dan la espalda. [Este cambio] fue algo difícil, salvo para aquellos a quienes Dios guió. Él no dejará de recompensarlos por su fe. Dios es compasivo y misericordioso con la gente.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@cli{Veo que vuelves tu rostro hacia el cielo. Te orientaré en una dirección que te complazca; oriéntate hacia la Mezquita Sagrada [de La Meca]. Y donde quiera que estén, oriéntense hacia ella. La Gente del Libro sabe que es la verdad proveniente de su Señor. Dios no está desatento de lo que hacen.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@clii{Pero aunque te presentes ante la Gente del Libro con todas las evidencias, no seguirán tu orientación [al orar] ni tú seguirás la de ellos, ni seguirán los unos la orientación de los otros; y si siguieras sus deseos luego de lo que se te ha revelado del conocimiento, te contarías entre los injustos.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@cliii{Aquellos a quienes concedí el Libro [judíos y cristianos] lo reconocen como reconocen a sus propios hijos. Algunos de ellos ocultan la verdad a sabiendas.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@cliv{La verdad proviene de tu Señor, no seas de los indecisos [aun ante las evidencias irrefutables].\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@clv{Todas [las religiones] tienen una dirección a la cual dirigirse [en sus oraciones]. ¡Apresúrense a realizar obras de bien! Dondequiera que estén, Dios los reunirá a todos [el Día del Juicio Final]. Dios es sobre toda cosa Poderoso.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@clvi{Y hacia donde quiera que salgas [en tus viajes] oriéntate hacia la Mezquita Sagrada, pues ésta es la verdad que proviene de tu Señor, y [sepan que] Dios no está desatento de lo que hacen.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@clvii{Y hacia donde quiera que salgas oriéntate hacia la Mezquita Sagrada, y dondequiera que estén oriéntense hacia ella, para que la gente no tenga argumento en su contra, excepto los injustos [idólatras de La Meca], pero no les teman a ellos, y témanme solo a Mí. Completaré sobre ustedes Mis gracias para que sean de los bien guiados.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@clviii{De la misma manera envié un Mensajero de entre ustedes para que les transmitiera Mis preceptos y los purificase y enseñara el Libro y la sabiduría, y les enseñase lo que ignoraban.\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@clix{Recuérdenme que Yo los recordaré; agradézcanme y no sean ingratos.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@clx{¡Oh, creyentes! Busquen ayuda en la paciencia y la oración; que Dios está con los pacientes.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@clxi{Y no digan que quienes cayeron por la causa de Dios ``están muertos", sino que están vivos pero ustedes no lo perciben.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@clxii{Los pondremos a prueba con algo de temor, hambre, pérdida de bienes materiales, vidas y frutos, pero albricia a los pacientes.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@clxiii{Aquellos que cuando les alcanza una desgracia dicen: ``De Dios provenimos, y a Él retornaremos [para que nos juzgue por nuestras acciones]".\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@clxiv{A ellos su Señor bendecirá con el perdón y la misericordia, y son los [correctamente] guiados.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@clxv{[El recorrido entre los montes de] As-Safa y Al-Marwah es un rito establecido por Dios. Quien realice la peregrinación mayor o la peregrinación menor a La Casa [Sagrada de La Meca] sepa que no incurre en falta por realizar el recorrido ritual entre ambas. Y quien voluntariamente haga el bien, sepa que Dios se lo recompensará, pues Él premia las buenas intenciones.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@clxvi{Quienes ocultan a la gente las evidencias y la guía que he revelado luego de haberlas evidenciado en el Libro, serán malditos por Dios y toda la creación,\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@clxvii{Excepto quienes se arrepientan, reparen y aclaren [lo que habían ocultado]. A ellos les aceptaré su arrepentimiento, porque Yo soy el Indulgente, el Misericordioso.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@clxviii{Aquellos que no crean y mueran negando la verdad, recibirán la maldición de Dios, los ángeles y toda la humanidad.\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@clxix{Por toda la eternidad así estarán. No les será aliviado el castigo ni se les concederá prórroga alguna.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@clxx{Su Dios es un Dios Único, no hay divinidad [con derecho a ser adorada] salvo Él, el Compasivo, el Misericordioso.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@clxxi{En la creación de los cielos y de la Tierra, la sucesión de la noche y el día, el barco que surca el mar para provecho de la gente, el agua que Dios hace descender del cielo con la que da vida a la tierra árida, en la que diseminó toda clase de criaturas, y en la dirección de los vientos y el control de las nubes que están entre el cielo y la tierra, en todo ello hay signos para quienes razonan.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@clxxii{Existen personas que toman en lugar de Dios a otros que consideran iguales [a Dios], y los aman como solo debe amarse a Dios; pero los creyentes aman más a Dios [de lo que éstos aman a sus divinidades]. Ya sabrán los injustos cuando vean el suplicio que les espera, que a Dios pertenece el poder absoluto y que Dios es severo en el castigo.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@clxxiii{[Ellos deben considerar que el Día del Juicio] se desentenderán los líderes de sus seguidores, y todos verán el castigo y desaparecerá toda alianza entre ellos.\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@clxxiv{Entonces los seguidores dirán: ``Si tuviéramos otra oportunidad [de regresar a la vida mundanal] nos desentenderíamos de ellos, como ellos se han desentendido de nosotros". Así les hará ver Dios sus obras para que sientan remordimiento. Pero nunca saldrán del Fuego.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@clxxv{¡Oh, seres humanos! Coman de lo bueno y lo lícito que hay en la Tierra, pero no sigan los pasos del demonio. Él es su enemigo declarado.\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@clxxvi{Él los induce a cometer pecados y actos deshonestos, y a que digan de Dios lo que no saben [con certeza si es cierto].\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@clxxvii{Y cuando se les dice: ``Sigan lo que Dios reveló", argumentan: ``No, seguimos la tradición de nuestros padres". ¿Acaso imitan a sus padres a pesar de que ellos no seguían una lógica ni una revelación?\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@clxxviii{El ejemplo de los que niegan la verdad es como el del animal que al escuchar el llamado del pastor, no percibe sino un ruido. Se hacen los sordos, mudos y ciegos, porque se niegan a usar la razón.\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@clxxix{¡Oh, creyentes! Coman de las cosas buenas que les he proveído, y agradezcan a Dios, si es que [verdaderamente] solo a Él adoran.\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@clxxx{Sepan que [Dios] les ha prohibido [consumir] solamente la carne del animal muerto por causa natural, la sangre, la carne de cerdo y la del animal que haya sido sacrificado invocando un nombre distinto al de Dios. Pero quien se ve forzado por la necesidad, no por deseo y sin excederse, no comete pecado al hacerlo. Dios es Absolvedor, Indulgente.\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@clxxxi{Quienes ocultan lo que Dios reveló del Libro y cambian Sus preceptos para obtener una ganancia vil, sepan que el fuego abrasará sus entrañas. Dios no les hablará ni les purificará [de sus pecados] el Día de la Resurrección, donde tendrán un doloroso castigo.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@clxxxii{Ellos cambiaron la guía por el desvío y el perdón por el castigo. ¡Qué perseverantes son en buscar el [castigo del] Fuego!\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@clxxxiii{Eso [es lo que merecen] porque Dios reveló el Libro con la Verdad, pero quienes enfrentan al Libro con sus opiniones se encuentran en un profundo error.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@clxxxiv{La verdadera virtud no consiste en orientarse hacia el oriente o el occidente [durante la oración], sino que es piadoso quien cree en Dios, el Día del Juicio, los ángeles, el Libro, los Profetas, hace caridad a pesar del apego [que tiene por los bienes materiales] a los parientes, los huérfanos, los pobres, los viajeros insolventes, los mendigos, y colabora para liberar esclavos y cautivos. [Tiene piedad quien] hace la oración prescrita, paga el zakat, cumple con los compromisos contraídos, es paciente en la estrechez, la adversidad y ante la persecución. Ésos son los veraces en su fe y los verdaderos piadosos.\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@clxxxv{¡Oh, creyentes! Se ha establecido la retribución legal en caso de homicidio [doloso]: sea libre o esclavo, [sea hombre] o mujer. Pero si le es perdonada [al culpable] la pena por su hermano [en la fe], que pague la indemnización correspondiente en el plazo establecido de buena manera. Esto es una facilidad y una misericordia de su Señor. Pero quien después de eso [aceptando la indemnización] transgrediere [tratando de vengarse del homicida] tendrá un castigo doloroso.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@clxxxvi{En [la aplicación de] la retribución legal está [la preservación de] la vida, ¡oh, dotados de intelecto!, para que alcancen la piedad.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@clxxxvii{Se ha establecido que cuando sientan la muerte acercarse y dejen bienes materiales, hagan un testamento a favor de sus padres y parientes en forma justa. Esto es una recomendación para los piadosos.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@clxxxviii{Si los testigos al escuchar [el testamento] lo cambian después de haber oído la voluntad [del testador], ellos son los que habrán cometido un pecado. Dios todo lo oye, todo lo sabe.\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@clxxxix{Pero quien tema que el testador haya cometido un error o una injusticia, y haga una mediación entre las partes, no incurrirá en falta. Dios es Absolvedor, Misericordioso.\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@cxc{¡Oh, creyentes! Se les prescribe el ayuno al igual que fue prescrito a quienes los precedieron, para que alcancen la piedad.\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@cxci{Son días contados [el mes de Ramadán]. Quien esté enfermo o de viaje y no ayune, deberá reponer posteriormente los días no ayunados. Quienes puedan [pero con mucha dificultad por la vejez] y no lo hagan, deberán alimentar a un pobre [por cada día no ayunado]. Pero quien voluntariamente alimente a más de un pobre, será más beneficioso para él. Y ayunar es mejor para ustedes, si supieran.\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@cxcii{En el mes de Ramadán fue revelado el Corán como guía para la humanidad y evidencia de la guía y el criterio. Quien presencie la llegada de [la Luna nueva de] el mes deberá ayunar, pero quien esté enfermo o de viaje [y no ayune] deberá reponer posteriormente los días no ayunados y así completar el mes. Dios desea facilitarles las cosas y no dificultárselas; alaben y agradezcan a Dios por haberlos guiado.\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@cxciii{Y si Mis siervos te preguntan por Mí [¡oh, Mujámmad!, diles] que estoy cerca de ellos. Respondo la súplica de quien Me invoca. [Entonces] que me obedezcan y crean en Mí, que así se encaminarán.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@cxciv{Durante las noches del mes de ayuno les es lícito mantener relaciones [maritales] con sus mujeres. Ellas son su vestimenta, y ustedes la vestimenta de ellas. Dios sabe que se engañaban a sí mismos, por eso los perdonó y les hizo esta concesión. Ahora pueden mantener relaciones con ellas y aprovechar lo que Dios les ha prescrito. Coman y beban hasta que se distinga el hilo blanco [la luz del alba] del hilo negro [la oscuridad de la noche], y luego completen el ayuno hasta la noche, y no mantengan relaciones con ellas si están haciendo el retiro espiritual en las mezquitas. Éstos son los límites de Dios, no los transgredan. Así aclara Dios Sus signos a la gente para que alcancen la piedad.\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@cxcv{No usurpen injustamente los bienes materiales unos a otros, ni sobornen con ellos a los jueces para conseguir ilegalmente la propiedad ajena a sabiendas.\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@cxcvi{Te preguntan [¡oh, Mujámmad!] acerca de las fases de la luna. Diles: ``Son una señal para que la gente pueda fijar sus fechas y para la peregrinación". No es ninguna virtud entrar en las casas por la puerta trasera, sino que la virtud está en la piedad. [En consecuencia] entren a las casas por la puerta de adelante, y observen las leyes de Dios que así van a prosperar.\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@cxcvii{Y combatan por la causa de Dios a quienes los agredan, pero no se excedan, porque Dios no ama a los agresores.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@cxcviii{Den muerte [a aquellos que los ataquen] donde quiera que los encuentren, y expúlsenlos de donde los han expulsado a ustedes, porque la opresión [y la restricción de la libertad a la que son sometidos por los agresores] es más grave que combatirlos. No combatan contra ellos en la Mezquita Sagrada, a menos que ellos los ataquen allí; pero si lo hacen combátanlos, ésta es la retribución que recibirán los que rechacen la verdad.\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@cxcix{Pero si ellos cesan de combatirlos, sepan que Dios es Absolvedor, Misericordioso.\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@cc{Combátanlos hasta que cese la opresión y puedan adorar tranquilamente a Dios [sin temer persecución]; pero si ellos cesan de combatir, que no haya más hostilidades, excepto contra los agresores.\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@cci{Solo se puede combatir en un mes sagrado si son atacados durante el mismo, y para las violaciones [que hayan cometido] apliquen el principio de retribución igualitaria; así que si son agredidos, agredan tal como los agredieron [sin excederse]. Sigan las enseñanzas de Dios, y sepan que Dios está con los piadosos.\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@ccii{Contribuyan a la causa de Dios [de buen grado] y no sean avaros, sino que hagan el bien, porque Dios ama a los que hacen el bien.\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@cciii{Completen la peregrinación mayor y menor en honor a Dios. Pero en caso de que algo les impida completarla, sacrifiquen el animal que puedan como ofrenda. No se rasuren la cabeza hasta que la ofrenda llegue al lugar de sacrificio. Si alguien está enfermo o sufre una dolencia en su cabeza [y se rasura] deberá expiar ayunando o dando limosna o sacrificando. Si hay seguridad [en el camino], entonces quien haga la peregrinación menor [durante los meses de la peregrinación mayor] y luego la peregrinación mayor, que sacrifique la ofrenda según sus posibilidades, y si no encuentra qué sacrificar o no dispone de medios, deberá ayunar tres días durante la peregrinación y siete a su regreso [a su lugar de origen]: en total diez días. Esto es para quienes no viven en las proximidades de la Mezquita Sagrada. Cumplan con los ritos y sepan que Dios es severo en el castigo.\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@cciv{La peregrinación se realiza en unos meses específicos, y quien se consagrara para hacerla, deberá abstenerse [durante ella] de las relaciones maritales, los pecados y las discusiones. Todo lo que hagan de bien Dios lo sabe. Tomen provisiones para el viaje, pero [sepan que] la mejor provisión es la piedad. ¡Oh, dotados de buen discernimiento! Cumplan correctamente Conmigo.\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@ccv{No cometen ninguna falta si buscan el sustento de su Señor [comerciando]. Cuando salgan en multitudes de [el valle de] ‘Arafat, y se encuentren en Al-Mash’ar Al-Harám, recuerden a Dios. Recuérdenlo en agradecimiento por haberlos guiado siendo que se encontraban extraviados.\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@ccvi{Luego avancen en multitudes por donde lo hace la gente e imploren el perdón de Dios. Dios es Absolvedor, Misericordioso.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@ccvii{Y cuando hayan terminado con los ritos que deben realizar, celebren el nombre de Dios tal como celebran la memoria de sus padres, y más aún. [Pues] hay gente que dice: ``¡Señor nuestro! Danos bienestar en esta vida"; pero no obtendrán nada en la otra vida.\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@ccviii{Pero entre ellos hay quienes dicen: ``¡Señor nuestro! Danos bienestar en esta vida y en la otra, y presérvanos del tormento del Fuego".\qt@no{(201)}}
+\qt@newcmd\qurantrans@es@ccix{Éstos obtendrán su recompensa por lo que hicieron, y Dios es rápido en ajustar cuentas.\qt@no{(202)}}
+\qt@newcmd\qurantrans@es@ccx{Recuerden a Dios los días determinados. Quien lo haga solo dos días no habrá incurrido en falta alguna, como tampoco quien permanezca más [hasta el tercero], siempre que tengan temor de Dios. Cumplan con lo que Dios les ha ordenado y sepan que serán congregados ante Él.\qt@no{(203)}}
+\qt@newcmd\qurantrans@es@ccxi{Hay un tipo de gente que cuando te habla sobre temas mundanos te causa admiración por su elocuencia, y pone como testigo a Dios de la fe que encierra su corazón, cuando en realidad es un enemigo acérrimo y hábil discutidor.\qt@no{(204)}}
+\qt@newcmd\qurantrans@es@ccxii{Pero cuando se alejan [de ti] van por la Tierra corrompiéndola, destruyendo [todos los frutos del trabajo humano, como] las siembras y los ganados, pero [sepan] que Dios no ama la corrupción.\qt@no{(205)}}
+\qt@newcmd\qurantrans@es@ccxiii{Y cuando se le dice [a uno de ellos]: ``Tengan temor de Dios", su soberbia lo impulsa a hacer el mal. Su retribución será el Infierno. ¡Qué pésimo destino!\qt@no{(206)}}
+\qt@newcmd\qurantrans@es@ccxiv{Aunque entre la gente hay quienes dan su vida anhelando complacer a Dios, y Dios es compasivo con Sus siervos.\qt@no{(207)}}
+\qt@newcmd\qurantrans@es@ccxv{¡Oh, creyentes! Entréguense por completo [a Dios practicando el Islam] y no sigan los pasos del demonio, porque él es su enemigo declarado.\qt@no{(208)}}
+\qt@newcmd\qurantrans@es@ccxvi{Pero si caen en el error después de que se les han presentado las pruebas claras, sepan que Dios es Poderoso, Sabio.\qt@no{(209)}}
+\qt@newcmd\qurantrans@es@ccxvii{¿Acaso esperan que [el Día del Juicio] Dios y los ángeles se les presenten a la sombra de las nubes? Para entonces, su situación estaría ya decidida [y serían condenados]. Todos los asuntos retornan a Dios [para que Él juzgue].\qt@no{(210)}}
+\qt@newcmd\qurantrans@es@ccxviii{Pregunta [¡oh, Mujámmad!] a los hijos de Israel cuántas señales evidentes les envié. Quien cambia la gracia de Dios [por incredulidad] después de haberle sido concedida, [sepa que] Dios es severo en el castigo.\qt@no{(211)}}
+\qt@newcmd\qurantrans@es@ccxix{A los que niegan la verdad los seduce la vida mundanal, y [por eso] se burlan de [la pobreza de] los creyentes; pero los que temen a Dios [en este mundo] estarán sobre ellos el Día de la Resurrección, y Dios provee a quien desea sin límite.\qt@no{(212)}}
+\qt@newcmd\qurantrans@es@ccxx{La humanidad era una sola comunidad [y porque comenzaron a desviarse del monoteísmo y discrepar sobre la verdad], Dios envió a los Profetas con albricias y advertencias, y les reveló los Libros Sagrados con la Verdad para que juzgaran entre la gente acerca de lo que discrepaban. Pero [los que habían recibido los Libros Sagrados] no discreparon sino después de que les llegaron las pruebas evidentes, por envidia y rivalidad entre ellos. Dios guió con Su voluntad a los creyentes a la verdad respecto a lo que discrepaban quienes los precedieron. Dios guía a quien Le place por el sendero recto.\qt@no{(213)}}
+\qt@newcmd\qurantrans@es@ccxxi{¿Acaso creen que van a entrar al Paraíso sin sufrir las mismas pruebas que quienes los precedieron? Padecieron pobreza e infortunios, y una conmoción tal que hasta el Mensajero y los creyentes que estaban con él imploraron: ``¿Cuándo llegará el auxilio de Dios?" Pero el auxilio de Dios estaba cercano.\qt@no{(214)}}
+\qt@newcmd\qurantrans@es@ccxxii{Te preguntan [¡oh, Mujámmad!] a quién dar caridad. Diles: ``Den a sus padres, parientes, huérfanos, pobres y viajeros insolventes". Todos los actos de bien que hagan Dios lo sabe.\qt@no{(215)}}
+\qt@newcmd\qurantrans@es@ccxxiii{Se les ha prescrito combatir aunque les desagrade. Es posible que les disguste algo y sea un bien para ustedes, y es posible que amen algo y sea un mal para ustedes. Dios conoce [todo] pero ustedes no.\qt@no{(216)}}
+\qt@newcmd\qurantrans@es@ccxxiv{Te preguntan si es lícito combatir en los meses sagrados. Diles: ``Combatir en los meses sagrados es un sacrilegio, pero ante Dios es más grave aún apartar a la gente del sendero de Dios, negar Su verdad y expulsar a la gente de la Mezquita Sagrada". [Sepan] que la opresión es peor que matar [en un mes sagrado]. Y [sepan que los incrédulos] no dejarán de combatirlos, si pueden, hasta apartarlos de su religión. Y quien reniegue de su religión y muera en la incredulidad, sus obras habrán sido en vano, en esta vida y en el más allá. Ellos son los moradores del Fuego, donde permanecerán eternamente.\qt@no{(217)}}
+\qt@newcmd\qurantrans@es@ccxxv{Aquellos que creyeron, emigraron y se esforzaron por la causa de Dios son quienes pueden esperar con certeza la misericordia de Dios, y Dios es Absolvedor, Misericordioso.\qt@no{(218)}}
+\qt@newcmd\qurantrans@es@ccxxvi{Te preguntan acerca de los embriagantes y las apuestas. Diles: ``Son de gran perjuicio, a pesar de que también hay en ellos algún beneficio para la gente, pero su perjuicio es mayor que su beneficio". Y te preguntan qué dar en caridad. Diles: ``Lo que puedan permitirse". Así aclara Dios los preceptos para que reflexionen\qt@no{(219)}}
+\qt@newcmd\qurantrans@es@ccxxvii{sobre esta vida y el más allá. Y te preguntan acerca de cómo deben obrar quienes tienen huérfanos bajo su responsabilidad. Diles: ``Invertir sus bienes materiales para procurar incrementárselos es lo mejor, pero si [consideran más fructífero] unir su riqueza con la de ellos [para gestionarla conjuntamente], trátenlos como a sus hermanos. Dios sabe quién es corrupto y quién hace el bien. Y si Dios hubiera querido les habría hecho las cosas más difíciles; Dios es Poderoso, Sabio.\qt@no{(220)}}
+\qt@newcmd\qurantrans@es@ccxxviii{No se casen con [mujeres] idólatras a menos que ellas crean [en el monoteísmo], ya que una sierva [de Dios] creyente es mejor que una idólatra, aunque esta les atraiga más; y no casen a los idólatras con las mujeres a su cargo hasta que ellos crean [en el monoteísmo], un siervo [de Dios] creyente es mejor que un idólatra, aunque este les parezca mejor partido. Ellos [los idólatras] invitan al Infierno [a través de la idolatría], mientras que Dios les promete el Paraíso, con Su consentimiento, y el perdón, pero aclara Sus preceptos a la gente para que recapaciten.\qt@no{(221)}}
+\qt@newcmd\qurantrans@es@ccxxix{Y te preguntan acerca de la menstruación. Di: ``Es una impureza"; absténganse de mantener relaciones maritales con sus mujeres durante el menstruo, y no mantengan relaciones con ellas hasta que se purifiquen, pero cuando se hayan purificado mantengan relaciones como Dios les ha permitido [por la vía natural]. Dios ama a los que se arrepienten y a los que se purifican.\qt@no{(222)}}
+\qt@newcmd\qurantrans@es@ccxxx{Sus mujeres son para ustedes como un campo de labranza, por tanto, siembren en su campo cuando [y como] quieran. Hagan obras de bien para que se beneficien, y tengan temor de Dios ya que se encontrarán con Él; y albricia a los creyentes [que obtendrán una hermosa recompensa].\qt@no{(223)}}
+\qt@newcmd\qurantrans@es@ccxxxi{No hagan de un juramento por Dios, prestado con anterioridad, un pretexto para no hacer el bien, no cumplir con la fe ni dejar de ayudar a la gente a reconciliarse. Dios todo lo oye, todo lo sabe.\qt@no{(224)}}
+\qt@newcmd\qurantrans@es@ccxxxii{Dios no tomará en cuenta los juramentos que hacen sin pensar, pero sí tomará en cuenta aquellos que hagan de corazón, Dios es Absolvedor, Indulgente.\qt@no{(225)}}
+\qt@newcmd\qurantrans@es@ccxxxiii{Quienes juren no mantener relaciones sexuales con sus esposas tendrán un plazo [máximo] de cuatro meses; pero si se retractan [de su juramento], [sepan que] Dios es Absolvedor, Misericordioso.\qt@no{(226)}}
+\qt@newcmd\qurantrans@es@ccxxxiv{Y si se deciden por el divorcio, Dios todo lo oye, todo lo sabe.\qt@no{(227)}}
+\qt@newcmd\qurantrans@es@ccxxxv{Las divorciadas deberán esperar tres menstruos [para poder volverse a casar], y no les es lícito ocultar lo que Dios creó en sus vientres, si es que creen en Dios y el Día del Juicio. Sus maridos tienen más derecho a volver con ellas durante ese plazo, si desean reconciliarse. Ellas tienen tanto el derecho al buen trato como la obligación de tratar bien a sus maridos. Y los hombres tienen un grado superior [de responsabilidad] al de ellas; Dios es Poderoso, Sabio.\qt@no{(228)}}
+\qt@newcmd\qurantrans@es@ccxxxvi{El divorcio puede revocarse dos veces. Luego de lo cual no cabe sino convivir dignamente o separarse definitivamente con decoro. No es permitido [a los hombres] tomar nada de lo que hayan dado [como dote]. Pero si no existe una voluntad de convivencia y temen que no se cumpla con lo que Dios ha ordenado [sobre el buen trato], no incurrirá en falta ninguno de los dos [esposos] en que la mujer llegue a un acuerdo económico con su marido para la disolución del matrimonio. Éstas son las leyes de Dios, no las quebranten. Quienes las quebrantan son los opresores.\qt@no{(229)}}
+\qt@newcmd\qurantrans@es@ccxxxvii{Si el marido se divorcia de ella [por tercera vez], no podrá tomarla como esposa de nuevo hasta que ella se case con otro hombre y este último la divorcie también. Entonces, no incurrirán en falta si vuelven a casarse, si creen que podrán cumplir con lo que Dios ha establecido [sobre el buen trato]. Éstas son las leyes de Dios, las cuales aclara a gente que razona.\qt@no{(230)}}
+\qt@newcmd\qurantrans@es@ccxxxviii{Pero si expresan la voluntad de divorcio a sus mujeres y están cerca de cumplir el plazo de espera, reconcíliense en buenos términos o sepárense con decoro. No las retengan para molestarlas y obligarlas [a que cedan parte de su derecho], pues quien obre de esa manera se condena a sí mismo. No tomen las leyes de Dios a la ligera, y recuerden la gracia que Dios les concedió [el Islam], y el Libro y la sabiduría que reveló [el Corán] para exhortarlos. Tengan temor de Dios y sepan que Dios todo lo conoce.\qt@no{(231)}}
+\qt@newcmd\qurantrans@es@ccxxxix{Si expresan la voluntad de divorcio a sus mujeres y éstas cumplen con el plazo de espera, no pueden impedirles que se casen, si lo han convenido mutuamente [sobre bases] correctas. Así exhorta [Dios] a quienes realmente creen en Dios y en el Día del Juicio. Esto es mejor y más sano. Dios sabe [todo] y ustedes no.\qt@no{(232)}}
+\qt@newcmd\qurantrans@es@ccxl{Las madres [divorciadas] podrán amamantar a sus hijos dos años si desean completar la lactancia. El padre tiene la obligación de sustentar y vestir a la madre [de su hijo] de acuerdo a sus recursos, a nadie se le impone más allá de sus posibilidades. Que ni la madre ni el padre utilicen a su hijo para perjudicarse mutuamente. Los familiares directos heredan esta obligación. Pero no incurren en falta si ambos [el padre y la madre], de común acuerdo, y tras consultarlo entre ellos, deciden destetar [al niño]. Si toman una nodriza para completar la lactancia no hay mal en ello, a condición de que le paguen lo correcto. Tengan temor de Dios, y sepan que Dios ve todo cuanto hacen.\qt@no{(233)}}
+\qt@newcmd\qurantrans@es@ccxli{Las viudas deberán esperar cuatro meses y diez días. Luego de ese plazo no serán reprochadas por lo que dispongan hacer consigo mismas [siempre que sea] de manera correcta, y Dios sabe lo que hacen.\qt@no{(234)}}
+\qt@newcmd\qurantrans@es@ccxlii{No incurren en falta si les insinúan a esas mujeres la intención de casarse con ellas o si callan sus intenciones; Dios sabe lo que piensan de ellas. No concierten con ellas acuerdos secretos de matrimonio, sino que háblenles con respeto. Pero no contraigan matrimonio hasta que se cumpla el plazo de espera. Sepan que Dios conoce lo que hay en sus corazones, así que tengan cuidado. Y sepan que Dios es Absolvedor, Indulgente.\qt@no{(235)}}
+\qt@newcmd\qurantrans@es@ccxliii{No incurren en falta si se divorcian de sus esposas antes de consumar el matrimonio o haber convenido la dote. Pero denles un regalo acorde a sus posibilidades, el rico según pueda y el pobre según pueda. Esto es un deber para los que obran correctamente.\qt@no{(236)}}
+\qt@newcmd\qurantrans@es@ccxliv{Pero si se divorcian antes de consumar el matrimonio y ya han convenido la dote, deben darles la mitad de lo acordado, a menos que la mujer renuncie a su parte, o que el hombre renuncie a darle la mitad y se lo dé completo, y esto es lo más próximo a la piedad. Y no olviden lo bueno que hubo entre ustedes; Dios ve todo lo que hacen.\qt@no{(237)}}
+\qt@newcmd\qurantrans@es@ccxlv{Cumplan con la oración prescrita, y especialmente la oración de la tarde, y preséntense ante Dios con total devoción.\qt@no{(238)}}
+\qt@newcmd\qurantrans@es@ccxlvi{Si tienen temor [en una situación de peligro], pueden orar de pie o montados, pero cuando cese el temor recuerden a Dios [en oración], que les enseñó lo que no sabían.\qt@no{(239)}}
+\qt@newcmd\qurantrans@es@ccxlvii{Los casados, al morir, dejan a su viuda un legado que consiste en un año de manutención y que no sean obligadas a abandonar el domicilio conyugal; pero si lo abandonaran antes, no serán reprochados de lo que ellas dispongan hacer consigo mismas [rehaciendo sus vidas siempre que sea] de manera correcta. Dios es Poderoso, Sabio.\qt@no{(240)}}
+\qt@newcmd\qurantrans@es@ccxlviii{Quienes divorcien a su esposa deben mantenerla de manera honorable. Esto es un deber para los piadosos.\qt@no{(241)}}
+\qt@newcmd\qurantrans@es@ccxlix{Así es como Dios evidencia Sus preceptos para que usen la razón.\qt@no{(242)}}
+\qt@newcmd\qurantrans@es@ccl{¿Acaso no reparan en los que dejaron de a miles sus hogares por temor a la muerte? Pero Dios les dijo: ``¡Mueran igual!" Y luego los resucitó. Dios favorece a la gente, pero la mayoría no Le agradece.\qt@no{(243)}}
+\qt@newcmd\qurantrans@es@ccli{Combatan [en defensa propia] por la causa de Dios, y sepan que Dios todo lo oye, todo lo sabe.\qt@no{(244)}}
+\qt@newcmd\qurantrans@es@cclii{¿Quién hará a Dios un préstamo generoso? Dios se lo devolverá multiplicado. Dios restringe y prodiga [el sustento], y a Él volverán [para ser recompensados por sus acciones].\qt@no{(245)}}
+\qt@newcmd\qurantrans@es@ccliii{¿Acaso no reparas en los nobles de los hijos de Israel después de la muerte de Moisés? Cuando le dijeron a su Profeta: ``Desígnanos un rey para que combatamos junto a él por la causa de Dios". Dijo: ``¿Acaso prometen que si se les prescribe el combate no huirán?" Dijeron: ``¿Cómo no vamos a combatir por la causa de Dios si fuimos expulsados de nuestros hogares y apartados de nuestros hijos?" Pero cuando se les ordenó el combate le dieron la espalda, excepto unos pocos, y Dios conoce bien a los opresores.\qt@no{(246)}}
+\qt@newcmd\qurantrans@es@ccliv{Su Profeta les dijo: ``Dios les ha enviado a Saúl para que sea su rey". Exclamaron: ``¿Por qué será él nuestro rey, si nosotros tenemos más derecho que él y ni siquiera es rico?" Dijo: ``Dios lo ha elegido para ustedes y lo ha dotado de gran capacidad intelectual y física". Dios concede el reino a quien Él quiere, porque Dios es Vasto, todo lo sabe.\qt@no{(247)}}
+\qt@newcmd\qurantrans@es@cclv{Su Profeta les dijo también: ``La prueba de su reino será que los ángeles traerán el arca, en la que encontrarán sosiego proveniente de su Señor y una reliquia que dejó la familia de Moisés y de Aarón. En esto hay una señal, si es que son creyentes".\qt@no{(248)}}
+\qt@newcmd\qurantrans@es@cclvi{Pero cuando Saúl partió con sus soldados, les dijo: ``Dios los pondrá a prueba con un río; quien beba de él hasta saciarse no será de los míos, pero quien no beba más que un sorbo en el cuenco de su mano o se abstenga, será de los míos". Pero se saciaron de él, salvo unos pocos. Y cuando él y los que creían cruzaron el río, algunos dijeron: ``Hoy no podremos contra Goliat y sus soldados". En cambio, quienes tenían certeza de que comparecerían ante Dios exclamaron: ``¡Cuántas veces, con el permiso de Dios, un grupo pequeño ha derrotado a grandes ejércitos!" Porque Dios está con los pacientes.\qt@no{(249)}}
+\qt@newcmd\qurantrans@es@cclvii{Al enfrentarse a Goliat y sus soldados suplicaban: ``¡Oh, Señor nuestro! Danos paciencia, mantennos firmes y concédenos la victoria sobre los que niegan la verdad".\qt@no{(250)}}
+\qt@newcmd\qurantrans@es@cclviii{Los derrotaron con el permiso de Dios, y David mató a Goliat. Dios le concedió [a David] el reino y la sabiduría, y le enseñó cuanto Él quiso. Si Dios no hubiera permitido que la gente se defendiera, la Tierra estaría llena de corrupción, pero Dios concede Sus gracias a todos los seres.\qt@no{(251)}}
+\qt@newcmd\qurantrans@es@cclix{Éstos son los signos de Dios que te revelo con la Verdad. Ten certeza que tú [¡oh, Mujámmad!] eres uno de los Mensajeros.\qt@no{(252)}}
+\qt@newcmd\qurantrans@es@cclx{Entre los Mensajeros, distinguí a cada uno con un favor. Entre ellos hay a quienes Dios habló directamente, y otros a quienes elevó en grados. Y concedí a Jesús, hijo de María, las pruebas evidentes y lo fortalecí con el Espíritu Santo [el ángel Gabriel]. Pero si Dios hubiera querido, las naciones que los siguieron no hubiesen combatido entre ellas tras habérseles presentado los Profetas y las evidencias; pero discreparon, y hubo entre ellos quienes creyeron y quienes negaron la verdad. Si Dios hubiera querido no se habrían combatido los unos a los otros, pero Dios obra según Su designio.\qt@no{(253)}}
+\qt@newcmd\qurantrans@es@cclxi{¡Oh, creyentes! Den en caridad parte de los beneficios que les he otorgado antes de que llegue el día en el cual no se aceptará rescate, amistad ni intercesión. Los [verdaderos] injustos son los que rechazan la verdad.\qt@no{(254)}}
+\qt@newcmd\qurantrans@es@cclxii{¡Dios! No existe nada ni nadie con derecho a ser adorado excepto Él, el Viviente [Eterno], el Sustentador [y Gobernador de toda la creación]. No Lo afectan somnolencia ni sueño. Suyo es cuanto hay en los cielos y la Tierra. ¿Quién podrá interceder ante Él si no es con Su permiso? Conoce el pasado y el futuro [lo manifiesto y lo oculto] y nadie abarca de Su conocimiento salvo lo que Él quiere. El escabel de Su Trono abarca los cielos y la Tierra, y la custodia [y mantenimiento] de ambos no Lo agobia. Y Él es el Sublime, el Grandioso.\qt@no{(255)}}
+\qt@newcmd\qurantrans@es@cclxiii{Una vez establecida la diferencia entre la guía correcta y el desvío no se puede forzar a nadie a creer. Quien descrea de las falsas divinidades y crea en Dios, se habrá aferrado al asidero más firme [el Islam], que es irrompible. Dios todo lo oye, todo lo sabe.\qt@no{(256)}}
+\qt@newcmd\qurantrans@es@cclxiv{Dios es el protector de los creyentes, los saca de las tinieblas hacia la luz. En cambio, los que rechazan la verdad tienen como protector a las falsas divinidades, que los sacan de la luz hacia las tinieblas. Ellos serán los moradores del Fuego, en el que permanecerán eternamente.\qt@no{(257)}}
+\qt@newcmd\qurantrans@es@cclxv{¿Acaso no has reparado en quien discutió con Abraham acerca de su Señor valiéndose del reinado que Dios le había concedido? Dijo Abraham: ``Mi Señor es Quien da la vida y da la muerte". Le replicó: ``Yo también doy la vida y la muerte". Dijo Abraham: ``Dios hace que el Sol salga por el oriente, haz tú que salga por el occidente". Entonces, el que había rechazado la verdad quedó confundido, porque Dios no guía a los injustos.\qt@no{(258)}}
+\qt@newcmd\qurantrans@es@cclxvi{[No has reparado] en aquel [‘Uzeir] que pasó por una ciudad en ruinas [Jerusalén], y exclamó: ``¿Cómo va Dios a darle vida ahora que está en ruinas?" Y entonces, Dios lo hizo morir por cien años y después lo resucitó. Le preguntó [Dios]: ``¿Cuánto tiempo has permanecido así?" Respondió: ``Un día o menos aún". Dijo [Dios]: ``No, has permanecido así cien años, observa tu comida y tu bebida, no se han podrido, pero mira tu asno [del que por el contrario solo quedan sus huesos]. Haremos de ti un signo para la gente. Mira los huesos [de tu asno] cómo los reuní y luego los cubrí de carne [resucitándolo]". Y cuando lo vio con claridad dijo: ``Ahora sé que Dios es sobre toda cosa Poderoso".\qt@no{(259)}}
+\qt@newcmd\qurantrans@es@cclxvii{Y [menciona a la gente] cuando Abraham dijo: ``¡Señor mío! Muéstrame cómo das vida a los muertos". Dijo [Dios]: ``¿Es que acaso no crees?" Respondió: ``Claro que sí, pero esto es para fortalecer la fe que hay en mi corazón". Dijo [Dios]: ``Toma cuatro pájaros distintos y córtalos en pedazos, luego pon un pedazo de cada uno sobre la cima de una montaña y llámalos, vendrán a ti deprisa [con vida nuevamente]; y sabe que Dios es Poderoso, Sabio".\qt@no{(260)}}
+\qt@newcmd\qurantrans@es@cclxviii{El ejemplo de quienes contribuyen con su dinero por la causa de Dios es como el de un grano que produce siete espigas, cada espiga contiene cien granos. Así Dios multiplica [la recompensa] de quien Él quiere. Dios es el Más Generoso, todo lo sabe.\qt@no{(261)}}
+\qt@newcmd\qurantrans@es@cclxix{Quienes contribuyan por la causa de Dios, y luego no malogren sus obras con alardes o agravios, obtendrán su recompensa en la otra vida, donde no sentirán temor ni tristeza.\qt@no{(262)}}
+\qt@newcmd\qurantrans@es@cclxx{Una palabra amable y perdonar es mejor que una caridad seguida de un agravio. Dios es Opulento, Indulgente.\qt@no{(263)}}
+\qt@newcmd\qurantrans@es@cclxxi{¡Oh, creyentes! No malogren sus caridades haciendo alarde de ellas u ofendiendo, como aquel que contribuye para que la gente lo vea, pero [en realidad] no cree en Dios ni en el Día del Juicio Final. Su ejemplo es como el de una roca cubierta de tierra, a la cual le cae un aguacero que la deja al descubierto. Esas personas no obtendrán recompensa alguna por sus [buenas] obras, porque Dios no guía a la gente que se niega a reconocer la verdad.\qt@no{(264)}}
+\qt@newcmd\qurantrans@es@cclxxii{El ejemplo de quienes contribuyen con sus bienes materiales anhelando complacer a Dios y por la certeza de ser recompensados, es como el de una huerta que se encuentra sobre una colina [alta y fértil], a la que le cae una lluvia copiosa y duplica sus frutos. Y si no, una llovizna le basta [para dar frutos]. Sepan que Dios ve lo que hacen.\qt@no{(265)}}
+\qt@newcmd\qurantrans@es@cclxxiii{¿A quién complacería tener un huerto de palmeras datileras y vides por donde corren ríos, donde hay toda clase de frutos, y al alcanzar la vejez y con hijos de corta edad, ver sorprendido [su huerto] por un huracán con fuego que lo incendie reduciéndolo a cenizas? Así es como Dios les aclara Sus signos para que reflexionen.\qt@no{(266)}}
+\qt@newcmd\qurantrans@es@cclxxiv{¡Oh, creyentes! Den en caridad de las cosas buenas que hayan adquirido y [también] de lo que les he hecho brotar de la tierra, pero no elijan lo deteriorado para dar caridad así como tampoco lo tomarían para ustedes mismos, salvo que fuera con los ojos cerrados. Sepan que Dios es Opulento, Loable.\qt@no{(267)}}
+\qt@newcmd\qurantrans@es@cclxxv{El demonio los atemoriza con la pobreza y les ordena hacer lo que es inmoral, mientras que Dios les promete Su perdón y Su generosidad. Dios es el Más Generoso, todo lo sabe.\qt@no{(268)}}
+\qt@newcmd\qurantrans@es@cclxxvi{Dios concede la sabiduría a quien quiere, y sepan que a quien le haya sido concedido este don ha recibido una gracia inmensa. Solo reflexionan los dotados de intelecto.\qt@no{(269)}}
+\qt@newcmd\qurantrans@es@cclxxvii{Los pagos de tus obligaciones o las promesas que hagas, Dios los conoce; pero quienes incumplan no tendrán quién los auxilie [el Día del Juicio].\qt@no{(270)}}
+\qt@newcmd\qurantrans@es@cclxxviii{Hacer caridad públicamente es una obra de bien, pero si lo hacen en privado y se la llevan a los pobres será mejor aún. A causa de esto Dios perdonará algunos de sus pecados. Dios sabe todo lo que hacen.\qt@no{(271)}}
+\qt@newcmd\qurantrans@es@cclxxix{No es tu responsabilidad [oh, Mujámmad] que la gente decida seguir la guía [una vez que se la has enseñado], porque Dios guía a quien quiere. Toda caridad que den es en su propio beneficio, pero no den caridad a menos que sea anhelando el rostro de Dios. Lo que hagan de bien les será recompensado sin mengua alguna.\qt@no{(272)}}
+\qt@newcmd\qurantrans@es@cclxxx{[Den caridad a] los pobres que padecen necesidad [por dedicarse] a la causa de Dios y no pueden viajar por la tierra [para trabajar y ganar su sustento]. Quien ignora [la realidad de] su situación los cree ricos, ya que por dignidad no mendigan. Pero los reconocerás por su conducta, no piden inoportunamente. Lo que sea que des en caridad, Dios lo sabe.\qt@no{(273)}}
+\qt@newcmd\qurantrans@es@cclxxxi{Quienes hagan caridad con sus bienes materiales, de noche o de día, en privado o en público, su Señor los recompensará, y no sentirán temor ni tristeza.\qt@no{(274)}}
+\qt@newcmd\qurantrans@es@cclxxxii{Los que lucran con la usura saldrán [de sus tumban el Día del Juicio Final] como un loco poseído por el demonio. Esto es porque dicen que el comercio es igual que la usura, pero [no, porque] Dios permitió el comercio y prohibió la usura. A quien le haya llegado de su Señor [el conocimiento de] la prohibición [de la usura] y se haya abstenido arrepintiéndose, podrá conservar lo que obtuvo en el pasado, y su asunto será juzgado por Dios. Mas si reincide, se contará entre los moradores del Fuego, en el que sufrirá eternamente.\qt@no{(275)}}
+\qt@newcmd\qurantrans@es@cclxxxiii{Dios quita a las ganancias de la usura toda bendición, pero bendice los actos de caridad con un incremento multiplicado. Dios no ama a los que niegan la verdad y transgreden [la prohibición de la usura].\qt@no{(276)}}
+\qt@newcmd\qurantrans@es@cclxxxiv{Los creyentes que obran correctamente, cumplen la oración prescrita y pagan el zakat, serán recompensados por su Señor, y no sentirán temor ni tristeza.\qt@no{(277)}}
+\qt@newcmd\qurantrans@es@cclxxxv{¡Oh, creyentes! Tengan temor de Dios y renuncien a los intereses que les adeuden por usura, si es que son realmente creyentes.\qt@no{(278)}}
+\qt@newcmd\qurantrans@es@cclxxxvi{Pero si no abandonan el lucro a través de la usura, sepan que Dios y Su Mensajero les declaran la guerra. Quien abandona la usura tiene derecho al capital original, de esta forma no oprimirán ni serán oprimidos.\qt@no{(279)}}
+\qt@newcmd\qurantrans@es@cclxxxvii{Si [quien les debe un préstamo] atraviesa una situación difícil, concédanle un nuevo plazo de pago hasta que esté en condición de saldar la deuda. Aunque si supieran la recompensa que tiene, harían algo mejor aún para ustedes: que es condonarle la deuda.\qt@no{(280)}}
+\qt@newcmd\qurantrans@es@cclxxxviii{Teman el día en que serán retornados a Dios, y en que cada persona reciba lo que merezca sin ser oprimido.\qt@no{(281)}}
+\qt@newcmd\qurantrans@es@cclxxxix{¡Oh, creyentes! Si contraen una deuda por un plazo estipulado, pónganlo por escrito ante un escribano. Ningún escribano [creyente] debe negarse a levantar esa acta conforme a lo que Dios le ha enseñado: el escribano debe registrar y el deudor debe dictar fielmente lo que adeuda, con temor de Dios. En caso de que el deudor sea declarado incompetente o sea incapaz de expresar su deuda, que lo haga en su lugar su apoderado con fidelidad. Dos hombres confiables deben ser testigos; pero si no cuentan con dos hombres, recurran a un hombre y dos mujeres, de manera que si una de ellas se olvida la otra lo recuerde. Nadie debe negarse a ser testigo ni rehusarse si son citados a atestiguar. No sean reacios a documentar las deudas, sean pequeñas o grandes, así como su vencimiento. Esto es, para Dios, lo más justo, la mejor evidencia [si existiera una disputa] y da menos lugar a dudas. A menos que se trate de una operación al contado; entonces, no hay inconveniente en que no lo pongan por escrito. Pero [es recomendable] que lo hagan ante testigos en [operaciones de] compraventa. No se debe presionar ni coartar al escribano ni al testigo, porque hacerlo es un delito. Tengan temor de Dios, que Él los agracia con el conocimiento, porque Dios es conocedor de todas las cosas.\qt@no{(282)}}
+\qt@newcmd\qurantrans@es@ccxc{Si estuvieran de viaje y no encontraran un escribano, pueden tomar algo en garantía. Pero si existe una confianza mutua, no hacen mal en no poner por escrito la deuda ni tomar una garantía, y tengan temor de Dios. Que nadie se niegue a prestar testimonio cuando sea convocado, porque quien lo oculta tiene un corazón malvado. Y Dios sabe cuanto hacen.\qt@no{(283)}}
+\qt@newcmd\qurantrans@es@ccxci{A Dios pertenece cuanto hay en los cielos y la Tierra. Lo que manifiesten en público y lo que oculten en privado, Dios les pedirá cuenta por ello; Dios perdona a quien Él quiere y castiga a quien Él quiere. Dios es sobre toda cosa Poderoso.\qt@no{(284)}}
+\qt@newcmd\qurantrans@es@ccxcii{El Mensajero y sus seguidores creen en lo que le fue revelado por su Señor [al Mensajero]. Todos creen en Dios, en Sus ángeles, en Sus Libros y en Sus Mensajeros [diciendo:] ``No hacemos diferencia entre ninguno de Sus Mensajeros". Y dicen: ``Oímos y obedecemos. Perdónanos Señor nuestro, que ante Ti retornaremos [para ser juzgados]".\qt@no{(285)}}
+\qt@newcmd\qurantrans@es@ccxciii{Dios no exige a nadie por encima de sus posibilidades, a su favor tendrá el bien que haga, y en su contra tendrá el mal que haga. ``¡Señor nuestro! No nos castigues si olvidamos o cometemos un error. ¡Señor nuestro! No nos impongas una carga como la que impusiste a quienes nos precedieron. ¡Señor nuestro! No nos impongas algo superior a lo que podamos soportar. Perdónanos, absuélvenos y ten misericordia de nosotros. Tú eres nuestro Protector, concédenos el triunfo sobre los que niegan la verdad".\qt@no{(286)}}
+\qt@newcmd\qurantrans@es@ccxciv{\basmalahes Álif. Lam. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@ccxcv{Dios, no hay otra divinidad que Él, el Viviente, se basta a Sí mismo y se ocupa de toda la creación.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@ccxcvi{Él te reveló [¡oh, Mujámmad!] el Libro con la Verdad, para confirmar los mensajes anteriores, y ya había revelado la Tora y el Evangelio\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@ccxcvii{como guía para la gente, y reveló el criterio por el cual se discierne lo verdadero de lo falso. Quienes no crean en la palabra de Dios tendrán un castigo severo. Dios es Poderoso y Señor de la retribución Justa.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@ccxcviii{No hay nada en la Tierra ni en el cielo que pueda esconderse de Dios.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@ccxcix{Él es Quien, acorde a Su voluntad, les da forma en el útero. No hay otra divinidad salvo Él, el Poderoso, el Sabio.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@ccc{Él es Quien te ha revelado el Libro [¡oh, Mujámmad!]. En él hay versículos categóricos de significado evidente, que son la base del Libro, y otros que aceptan interpretaciones. Los que tienen el corazón extraviado siguen solo los interpretables con el fin de sembrar la discordia y hacer una interpretación interesada. Pero Dios conoce su verdadero significado. Los que tienen un conocimiento afirmado, dicen: ``Creemos en todos los versículos por igual, todos proceden de nuestro Señor. Aunque solo los dotados de intelecto tienen esto presente.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@ccci{¡Señor nuestro! No permitas que nuestros corazones se desvíen después de habernos guiado. Concédenos Tu misericordia, Tú eres el Dadivoso.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@cccii{¡Señor nuestro! [Atestiguamos que] Tú reunirás a los seres humanos para un Día ineludible. Dios no falta jamás a Su promesa".\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@ccciii{A los que rechacen la verdad, de nada les servirán sus bienes materiales ni sus hijos ante Dios. Serán combustible del Fuego.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@ccciv{Les sucederá lo mismo que a la gente del Faraón y quienes les precedieron. Ellos desmintieron Mis signos. Pero Dios los castigó por sus pecados. Dios es severo en el castigo.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@cccv{Di a los que rechazan la verdad: ``Serán vencidos y congregados en el Infierno". ¡Qué pésima morada!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@cccvi{Ya fue una clara evidencia los dos grupos que se enfrentaron [en la batalla de Bader]: uno combatía por la causa de Dios y el otro la rechazaba. Este último, al ver el grupo de creyentes le pareció [milagrosamente] que era dos veces más numeroso de lo real. Dios fortalece con Su auxilio a quien Él quiere. En ello hay una enseñanza para quienes observan con atención.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@cccvii{Se encuentra en el corazón de las personas la inclinación por los placeres: las mujeres, los hijos, la acumulación de riquezas en oro y plata, los caballos de raza, los ganados y los campos de cultivo. Ese es el breve goce de esta vida, pero lo más hermoso se encuentra junto a Dios.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@cccviii{Di: ¿Quieren que les informe sobre algo mejor que los placeres mundanos? Aquellos que tengan temor de Dios encontrarán junto a su Señor jardines por donde corren los ríos, con esposas inmaculadas, donde obtendrán la complacencia de Dios por toda la eternidad. Dios conoce a Sus siervos,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@cccix{quienes dicen: ``¡Señor nuestro! Creemos en Ti. Perdónanos nuestros pecados y líbranos del castigo del Fuego".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@cccx{[Los creyentes] son los pacientes, los que cumplen su palabra, los piadosos, los caritativos y los que hasta el alba imploran el perdón.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@cccxi{Dios atestigua, y con Él los ángeles y los dotados de cono-cimiento, que no existe más divinidad que Él, y que Él vela por la justicia [y mantiene el equilibrio]. No hay otra divinidad salvo Él, el Poderoso, el Sabio.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@cccxii{Para Dios la verdadera religión es el Islam. Los que habían recibido el libro anteriormente discreparon por soberbia a pesar de haberles llegado la revelación. Quienes rechacen los signos de Dios, sepan que Dios es rápido en ajustar cuentas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@cccxiii{Si te discuten [¡oh, Mujámmad! acerca de tu mensaje], diles: ``Me entrego sinceramente a Dios y así hacen quienes me siguen". Y pregúntales a quienes recibieron el Libro y a los analfabetos [árabes paganos]: ``¿Han aceptado el Islam [sometiéndose a Dios]?" Si lo aceptan habrán seguido la guía, pero si lo rechazan, tú solo tienes la obligación de transmitirles el mensaje. Dios conoce a Sus siervos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@cccxiv{Anuncia un castigo severo a quienes rechazan los preceptos de Dios, asesinan a los Profetas y matan a las personas que luchan por la justicia.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@cccxv{Sus obras serán vanas en esta vida y en la otra, y no tendrán quién los auxilie.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@cccxvi{¿No te sorprende que quienes recibieron parte del Libro [judíos y cristianos] rechazan juzgar sus asuntos según el Libro de Dios?\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@cccxvii{Eso es porque dicen: ``El fuego no nos tocará más que por días contados". Las falsas creencias que ellos mismos inventaron terminaron apartándolos de su religión.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@cccxviii{¿Qué será de ellos cuando los reunamos el Día inevitable, en el que cada individuo reciba lo que merece de acuerdo a sus acciones? No serán tratados injustamente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@cccxix{Di: ``¡Oh, Dios, Soberano Absoluto! Tú concedes el poder a quien quieres y se lo quitas a quien quieres, fortaleces a quien quieres y humillas a quien quieres. Todo el bien descansa en Tus manos. Tú tienes poder sobre todas las cosas.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@cccxx{Tú haces que la noche entre en el día y el día en la noche. Tú haces surgir lo vivo de lo muerto y lo muerto de lo vivo. Tú sustentas sin medida a quien quieres".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@cccxxi{Que los creyentes no tomen como aliados a los que niegan la verdad en lugar de a los creyentes. Quien así lo haga no tendrá nada que ver con Dios, a menos que lo haga para preservar la vida. Dios los exhorta a que Le teman a Él. Ante Dios comparecerán.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@cccxxii{Di: ``Tanto si ocultan cuanto hay en sus corazones como si lo manifiestan, Dios lo sabe". Él conoce todo lo que hay en los cielos y en la Tierra. Dios tiene poder sobre todas las cosas.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@cccxxiii{El día que cada ser vea el registro de todo bien y de todo mal que haya producido, deseará que se interponga una gran distancia entre sí y ese momento. Dios los exhorta a que Le teman a Él. Dios es Compasivo con Sus siervos.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@cccxxiv{Di: ``Si verdaderamente aman a Dios, ¡síganme!, que Dios los amará y perdonará sus pecados". Dios es Absolvedor, Misericordioso.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@cccxxv{Di: ``¡Obedezcan a Dios y al Mensajero!" Pero si se niegan, sabe que Dios no ama a los que rechazan la verdad.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@cccxxvi{Dios escogió a Adán, a Noé, a la familia de Abraham y a la de ‘Imrán de entre todos los seres.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@cccxxvii{Familias descendientes unas de otras. Dios todo lo oye, todo lo sabe.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@cccxxviii{Cuando la esposa de ‘Imrán dijo: ``¡Señor mío! He realizado el voto de entregar a Tu exclusivo servicio lo que hay en mi vientre. ¡Acéptalo de mí! Tú todo lo oyes, todo lo sabes".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@cccxxix{Y cuando dio a luz dijo: ``¡Señor mío! He tenido una hija", y Dios bien sabía lo que había concebido. ``No puede servirte una mujer [en el templo] como lo habría hecho un varón. La he llamado María, y Te imploro que la protejas a ella y a su descendencia del maldito demonio".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@cccxxx{El Señor la aceptó complacido, e hizo que se educase correctamente y la confió a Zacarías. Cada vez que Zacarías ingresaba al templo la encontraba provista de alimentos, y le preguntaba: ``¡María! ¿De dónde obtuviste eso?" Ella respondía: ``Proviene de Dios, porque Dios sustenta sin medida a quien quiere".\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@cccxxxi{En el templo, Zacarías invocó a su Señor diciendo: ``¡Señor mío! Concédeme una descendencia piadosa, Tú escuchas los ruegos".\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@cccxxxii{Entonces los ángeles lo llamaron cuando oraba en el templo diciendo: ``Dios te anuncia el nacimiento de Juan, quien corroborará la Palabra de Dios, será noble, casto y un Profeta virtuoso".\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@cccxxxiii{Exclamó: ``¡Señor mío! ¿Cómo podré tener un hijo si soy anciano y mi mujer estéril?" Le respondió [el ángel]: ``¡Así será! Porque Dios hace lo que quiere".\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@cccxxxiv{Dijo [Zacarías]: ``¡Señor mío! Dame una señal [de que me has concedido un hijo]". Dijo Dios: ``La señal será que durante tres días, no podrás hablar con la gente salvo por señas. Adora mucho a tu Señor y glorifícalo al anochecer y al alba".\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@cccxxxv{Y [recuerda] cuando los ángeles dijeron: ``¡María! Dios te ha elegido por tus virtudes y te ha purificado. Te ha elegido entre todas las mujeres del mundo.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@cccxxxvi{¡María! Conságrate a tu Señor, prostérnate e inclínate con los orantes".\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@cccxxxvii{[¡Oh, Mujámmad!] Éstas son historias que te he revelado porque no eran conocidas [por tu gente]. Tú no estabas presente cuando sorteaban con sus plumas [de escritura] quién de ellos sería el tutor de María, ni tampoco cuando se lo disputaban.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@cccxxxviii{Entonces los ángeles dijeron: ``¡María! Dios te albricia con Su Palabra [¡Sea!] será conocido como el Mesías Jesús, hijo de María. Será noble en esta vida y en la otra, y se contará entre los próximos a Dios.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@cccxxxix{Hablará [milagrosamente] a la gente desde la cuna, y predicará siendo adulto. Será de los virtuosos".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@cccxl{Dijo [María]: ``¡Señor mío! ¿Cómo he de tener un hijo si no me ha tocado hombre?" Le respondió: ``¡Así será! Dios crea lo que quiere. Cuando decide algo, solo dice: ¡Sea!, y es.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@cccxli{Él le enseñará la escritura, le concederá la sabiduría, le enseñará la Tora y el Evangelio.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@cccxlii{Y será Profeta para los hijos de Israel, a quienes dirá: ``Les he traído un milagro de su Señor. Modelaré para ustedes un pájaro de barro. Luego soplaré en él y, con el permiso de Dios, tendrá vida. Con la anuencia de Dios, curaré al que nació ciego y al leproso, y resucitaré a los muertos. Les revelaré lo que comen y guardan dentro de sus casas. Esos milagros son suficientes para que crean en mí, si es que son creyentes.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@cccxliii{He venido para confirmar [las enseñanzas originales de] la Tora y para permitirles algunas de las cosas que les estaban prohibidas. He venido con un milagro de su Señor. Tengan temor de Dios y obedezcan.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@cccxliv{Dios es mi Señor y el de ustedes. ¡Adórenlo! Ese es el sendero recto"."\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@cccxlv{Pero cuando Jesús advirtió que su pueblo rechazaba la verdad, dijo: ``¿Quiénes me ayudarán en mi misión de transmitir el Mensaje de Dios?" Dijeron los discípulos: ``Nosotros te ayudaremos. Creemos en Dios. Atestigua [¡oh, Jesús!] que solo a Él adoramos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@cccxlvi{¡Señor nuestro! Creemos en lo que has revelado y seguimos a Tu Profeta. Cuéntanos entre los que dan testimonio de fe".\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@cccxlvii{Cuando [los conspiradores] maquinaron planes contra Jesús, Dios desbarató sus planes, porque Dios es el sumo planificador.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@cccxlviii{Cuando Dios dijo: ``¡Oh, Jesús! Te haré morir [algún día como a todos, pero ahora] te ascenderé a Mí. Te libraré de los que rechazan la verdad y haré prevalecer a los que te han seguido por sobre los incrédulos hasta el Día de la Resurrección. Luego, todos volverán a Mí para que juzgue entre ustedes sobre lo que discrepaban.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@cccxlix{A los que se obstinan en negar la verdad los castigaré severamente en este mundo y el otro, y no tendrán quién los auxilie".\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@cccl{Mientras que a los creyentes que obren rectamente Dios les dará su recompensa con generosidad. Dios no ama a los injustos.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@cccli{Esta historia te la he revelado como parte de los milagros y de la sabia amonestación del Corán.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@ccclii{El ejemplo [de la creación] de Jesús ante Dios es como el de Adán, a quien creó del barro y luego le dijo: ``¡Sea!", y fue.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@cccliii{Ésta es la verdad que proviene de tu Señor [sobre la historia de Jesús]. No seas de los indecisos.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@cccliv{Si te disputan acerca de esta verdad [la historia de Jesús] después de haberte llegado el conocimiento, diles: ``¡Vengan! Convoquemos a nuestros hijos y a los suyos, a nuestras mujeres y a las suyas, y presentémonos todos. Luego invoquemos que la maldición de Dios caiga sobre los que mienten".\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@ccclv{Ésta es la verdadera historia. No hay otra divinidad más que Dios. Dios es el Poderoso, el Sabio.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@ccclvi{Pero si la niegan, Dios sabe quiénes son los que siembran la desviación.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@ccclvii{Di: ``¡Oh, Gente del Libro! Convengamos en una creencia común: No adoraremos sino a Dios, no Le asociaremos nada y no tomaremos a nadie como divinidad fuera de Dios". Pero si no aceptan digan: ``Sean testigos de que nosotros solo adoramos a Dios".\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@ccclviii{¡Oh, Gente del Libro! ¿Por qué se disputan a Abraham, siendo que la Tora y el Evangelio fueron revelados después de él? ¿Es que no razonan?\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@ccclix{Ustedes discuten sobre los asuntos de los que tienen conocimiento, aun teniendo la revelación. Pero ahora discuten sobre lo que no conocen siquiera. Dios sabe y ustedes no.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@ccclx{Abraham no fue judío ni cristiano, sino que fue un monoteísta creyente en Dios, y no fue jamás de los idólatras.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@ccclxi{Los más cercanos a Abraham son los que siguen sus enseñanzas, así como el Profeta y los creyentes [musulmanes]. Dios es el Protector de los creyentes.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@ccclxii{Un grupo de la Gente del Libro desea extraviarlos, pero sin darse cuenta, solo se extravían a sí mismos.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@ccclxiii{¡Oh, Gente del Libro! ¿Por qué no creen en la palabra de Dios, siendo que creyeron en ella anteriormente?\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@ccclxiv{¡Oh, Gente del Libro! ¿Por qué, a sabiendas, mezclan la verdad con lo falso y ocultan la verdad?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@ccclxv{Miembros de un grupo de la Gente del Libro se dicen entre sí: ``Al comenzar el día finjan creer en lo que se le ha revelado a los creyentes [el Islam], pero desacredítenlo al anochecer; tal vez así les sembremos dudas y renuncien a su fe".\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@ccclxvi{Y [dicen:] ``no confíen sino en quienes siguen su religión". Diles [¡oh, Mujámmad!]: ``La verdadera guía es la de Dios". [Y dicen:] ``No enseñen lo que han recibido para que nadie sea bendecido como ustedes, ni para que puedan argumentar en contra suya ante su Señor". Diles [¡oh, Mujámmad!]: ``La gracia está en manos de Dios, y se la concede a quien Él quiere". Dios es Inconmensurable, todo lo sabe.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@ccclxvii{Favorece con Su misericordia a quien Él quiere. Dios es poseedor del favor inmenso.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@ccclxviii{Entre la Gente del Libro hay quienes, si les confías un gran tesoro te lo devuelven, y quienes si les confías una moneda te la devuelven solo después de pedírsela con insistencia. Eso es porque dicen: ``No seremos recriminados por no cumplir con quienes no han recibido ninguna revelación". Ellos inventan mentiras acerca de Dios a sabiendas.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@ccclxix{Por el contrario, quien cumpla su promesa y tenga temor de Dios, sepa que Dios ama a los piadosos.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@ccclxx{Quienes vendieron por vil precio el compromiso que tomaron con Dios y faltaron a sus juramentos, no tendrán recompensa en la otra vida. Dios no les dirigirá la palabra ni los mirará ni los purificará el Día de la Resurrección, y tendrán un castigo doloroso.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@ccclxxi{Entre ellos hay quienes tergiversan el Libro cuando lo recitan para que ustedes crean que es parte de él, cuando en realidad no pertenece al Libro. Y dicen que proviene de Dios, cuando en realidad no proviene de Dios. Inventan mentiras acerca de Dios a sabiendas.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@ccclxxii{No es concebible que una persona a quien Dios concede el Libro, la sabiduría y la profecía, diga a la gente: ``Ríndanme culto a mí, no a Dios"; [una persona así] dirá: ``Sean gente de Dios ilustrados en su religión, que [practican y] enseñan el Libro tal como lo han aprendido".\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@ccclxxiii{Tampoco les ordenaría que tomen como dioses a los ángeles y a los Profetas. ¿Acaso iba a ordenarles que fueran incrédulos siendo ustedes creyentes monoteístas?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@ccclxxiv{Dios celebró un pacto con la gente del Libro a través de los Profetas, diciéndoles: ``Les concedo el Libro y la sabiduría, pero cuando se les presente un Mensajero que confirme lo que se les ha revelado, crean en él y préstenle auxilio. ¿Asumen tal compromiso?" Respondieron: ``Sí, nos comprometemos". Dijo Dios: ``Entonces, sean testigos que yo también atestiguaré con ustedes".\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@ccclxxv{Quienes después se desentiendan [y no cumplan con el pacto], serán los descarriados.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@ccclxxvi{¿Acaso desean una religión diferente a la de Dios, siendo que quienes están en los cielos y en la Tierra se someten a Él por libre voluntad o por la fuerza? Y ante Él [todos] comparecerán.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@ccclxxvii{Di: ``Creemos en Dios y en lo que nos ha revelado, en lo que fue revelado a Abraham, a Ismael, a Isaac, a Jacob y a las doce Tribus, y en lo que de su Señor recibieron Moisés, Jesús y los Profetas. No hacemos distinción entre ninguno de ellos y somos creyentes monoteístas".\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@ccclxxviii{Quien profese una religión diferente al Islam no le será aceptada, y en la otra vida se contará entre los perdedores.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@ccclxxix{¿Cómo habría Dios de guiar a quienes abandonan la fe luego de ser creyentes, siendo que fueron testigos de la veracidad del Mensajero y vieron las evidencias? Dios no guía a los injustos.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@ccclxxx{Ellos tendrán como retribución la maldición de Dios, de los ángeles y de toda la humanidad.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@ccclxxxi{En ese estado se mantendrán eternamente. Tendrán un castigo sin tregua ni alivio.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@ccclxxxii{Salvo quienes se arrepientan y enmienden, porque Dios es Absolvedor, Misericordioso.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@ccclxxxiii{A quienes reniegan de la fe luego de haber creído y se obstinan en su incredulidad, no se les aceptará el arrepentimiento. Ésos son los desviados.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@ccclxxxiv{A los que rechazaron la verdad y los tomó la muerte siendo aún incrédulos, aunque ofrecieran como rescate todo el oro que hubiere en la Tierra, no les será aceptado. Ellos recibirán un castigo doloroso y no tendrán quién pueda socorrerlos.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@ccclxxxv{[Los creyentes] no alcanzarán la piedad auténtica hasta que den [en caridad] lo que más aman. Todo lo que den en caridad Dios lo sabe.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@ccclxxxvi{Antes que fuera revelada la Tora, todos los alimentos eran lícitos para el pueblo de Israel, salvo lo que ellos mismos se habían vedado. Diles: ``Traigan la Tora y léanla, si es verdad lo que dicen".\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@ccclxxxvii{Serán unos injustos quienes después de todas estas evidencias inventen mentiras y se las atribuyan a Dios.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@ccclxxxviii{Di: ``Dios dice la verdad. Sigan la religión de Abraham, que fue monoteísta y no se contó entre los que dedicaban actos de adoración a otros además de Dios".\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@ccclxxxix{El primer templo erigido para los seres humanos es el de Bakkah [la Ka‘bah], en él hay bendición y guía para la humanidad.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@cccxc{Allí hay signos evidentes, como el sitial de Abraham. Quien ingrese en él estará a salvo. Es obligatorio para las personas peregrinar a este templo si se encuentran en condiciones [físicas y económicas] de hacerlo. Pero quien niegue lo que Dios ha prescrito, sepa que Dios no necesita de Sus criaturas.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@cccxci{Di: ``¡Oh, Gente del Libro! ¿Por qué no creen en los signos de Dios? Dios es testigo de lo que hacen".\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@cccxcii{Di: ``¡Oh, Gente del Libro! ¿Por qué intentan conscientemente dificultar el camino al Islam a los que quieren abrazarlo, desfigurando su imagen real, haciéndolo pasar por tortuoso?" Dios no está desatento a lo que hacen.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@cccxciii{¡Oh, creyentes! Si se someten a algunos de la Gente del Libro, ellos lograrán sacarlos a ustedes de la fe a la incredulidad.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@cccxciv{¿Cómo podrían ustedes abandonar la fe cuando se les recitan los preceptos de Dios, y Su Mensajero se encuentra entre ustedes? Quien se aferre a Dios será guiado al camino recto.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@cccxcv{¡Oh, creyentes! Tengan temor de Dios como es debido, y no mueran sino como creyentes monoteístas.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@cccxcvi{Aférrense todos a la religión de Dios y no se dividan en sectas. Recuerden la gracia de Dios cuando los hermanó uniendo sus corazones siendo que eran rivales unos de otros, y cuando se encontraban al borde de un abismo de fuego, los salvó de caer en él. Así les explica Dios Sus signos para que sigan la verdadera guía.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@cccxcvii{Que siempre haya entre ustedes un grupo que invite al bien, ordenando lo bueno y prohibiendo lo malo. Ésos serán los bienaventurados.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@cccxcviii{No sean como aquellos que después de haber recibido las pruebas claras, discreparon y se dividieron en sectas. Ésos tendrán un castigo severo.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@cccxcix{El Día del Juicio unos rostros estarán radiantes y otros ensombrecidos. A aquellos cuyos rostros estén ensombrecidos se les dirá: ``¿Han rechazado la verdad luego de haber creído? Sufran el castigo como consecuencia de su incredulidad".\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@cd{En cuanto a aquellos cuyos rostros estén radiantes, estarán en la misericordia de Dios eternamente.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@cdi{Éstos son los signos de Dios que te revelo con la verdad, para que adviertas que Dios no oprime a ninguna de Sus criaturas.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@cdii{A Dios pertenece todo cuanto hay en los cielos y en la Tierra. Y a Dios retornan todos los asuntos.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@cdiii{[¡Musulmanes!] Son la mejor nación que haya surgido de la humanidad porque ordenan el bien, prohíben el mal y creen en Dios. Si la Gente del Libro creyera, sería mejor para ellos; algunos de ellos son creyentes, pero la mayoría son desviados.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@cdiv{Ellos solo podrán perjudicarlos levemente, y cada vez que los combatan huirán atemorizados, y no serán socorridos.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@cdv{Dondequiera que se encuentren deberán soportar la humillación, excepto amparados según lo establecido por Dios o por un pacto con los hombres. Cayeron en la condena de Dios y la miseria se ha abatido sobre ellos por no haber creído en los signos de Dios y por haber matado injustamente a los Profetas, por haber desobedecido y violado la ley.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@cdvi{Pero no todos los de la Gente del Libro son iguales. Entre ellos hay quienes se mantienen fieles a las enseñanzas originales, y al conocerlo siguen el Islam, pasan la noche recitando los versículos de Dios y se prosternan.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@cdvii{Creen en Dios y en el Día del Juicio Final, ordenan el bien, prohíben el mal y se apresuran a realizar buenas obras. Ésos se contarán entre los virtuosos.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@cdviii{El bien que hayan hecho antes de adoptar el Islam no será desmerecido. Dios conoce bien a los piadosos.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@cdix{En cambio, a los que rechacen la verdad, ni sus riquezas ni sus hijos les servirán de nada ante Dios. Serán condenados al Infierno, donde morarán eternamente.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@cdx{[De nada les servirán] las caridades que ellos hacen en esta vida mundanal [porque la incredulidad las destruye] como un viento frío que azota una cosecha de gente que ha sido injusta, y la destruye. Pero Dios no ha sido injusto con ellos, sino que ellos lo han sido consigo mismos.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@cdxi{¡Oh, creyentes! No tomen por confidentes a quienes no sean como ustedes, porque los que rechazan la verdad se esforzarán para corromperlos, porque desean verlos en la ruina. Ya han manifestado su odio con palabras, pero lo que ocultan sus corazones es peor aún. Les he mostrado las evidencias de su enemistad, para que reflexionen.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@cdxii{Ustedes los aman a ellos, porque creen en todas las revelaciones, pero ellos no los aman a ustedes. Cuando se encuentran con ustedes dicen: ``¡Somos creyentes!" Pero cuando están a solas se muerden los dedos por la rabia que sienten contra ustedes. Di: ``Muéranse de rabia". Dios sabe bien lo que encierran los corazones.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@cdxiii{Cuando ustedes prosperan, ellos se afligen; pero cuando les sobreviene un mal, se alegran. Si ustedes son pacientes y tienen temor de Dios, sus intrigas no les harán ningún daño. Dios sabe bien lo que ellos hacen.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@cdxiv{Y recuerda [¡oh, Mujámmad!] cuando al alba saliste de tu hogar para asignar a los creyentes sus posiciones en el campo de batalla. Dios todo lo oye, todo lo sabe.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@cdxv{Cuando dos de tus tropas estuvieron a punto de perder el coraje, pero Dios era su Protector y es a Dios que los creyentes deben encomendarse.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@cdxvi{Dios los socorrió en Bader cuando estaban en inferioridad de condiciones. Tengan temor de Dios, en señal de agradecimiento.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@cdxvii{Cuando decías a los creyentes: ``¿No les basta que su Señor los socorriera descendiendo tres mil ángeles?"\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@cdxviii{[Dijeron:] ``¡Sí!" Y si son pacientes y tienen temor de Dios, cuando intenten atacarlos sorpresivamente, su Señor los fortalecerá con cinco mil ángeles con distintivos.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@cdxix{Dios lo hizo para albriciarlos y tranquilizar sus corazones. La victoria proviene de Dios, el Poderoso, el Sabio.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@cdxx{[Y lo hizo también] para destruir y humillar a algunos de los que rechazaban la verdad, y que se retiraran derrotados.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@cdxxi{No es asunto tuyo [oh, Mujámmad] si Dios acepta su arrepentimiento o los castiga, pues ellos han cometido muchas injusticias.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@cdxxii{A Dios pertenece cuanto hay en los cielos y en la Tierra. Él perdona a quien quiere y castiga a quien quiere. Dios es Absolvedor, Misericordioso.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@cdxxiii{¡Oh, creyentes! No se beneficien de la usura duplicando y multiplicando los intereses, y tengan temor de Dios, pues solo así tendrán éxito.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@cdxxiv{Y tengan temor de un fuego que ha sido reservado para los que niegan la verdad.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@cdxxv{Obedezcan a Dios y al Mensajero, que así alcanzarán la misericordia.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@cdxxvi{Y apresúrense a buscar el perdón de su Señor y un Paraíso tan vasto como los cielos y la Tierra, que ha sido reservado para los que tienen consciencia de Dios [y cumplen la ley],\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@cdxxvii{[que son] aquellos que hacen caridad, tanto en momentos de holgura como de estrechez, controlan su enojo y perdonan a las personas, y Dios ama a los que hacen el bien.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@cdxxviii{Aquellos que al cometer una obscenidad o injusticia invocan a Dios pidiendo perdón por sus pecados, porque saben que solo Dios perdona los pecados, y no reinciden a sabiendas.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@cdxxix{Su recompensa será el perdón de su Señor y jardines por donde corren ríos, en los que estarán eternamente. ¡Qué hermosa es la recompensa de quienes obran correctamente!\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@cdxxx{En la antigüedad Dios ha escarmentado [a otros pueblos]; viajen por el mundo y observen cómo terminaron aquellos que desmintieron la verdad.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@cdxxxi{Esto debería ser una lección clara para la humanidad, y es guía y motivo de reflexión para los que tienen temor de Dios.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@cdxxxii{No se desanimen ni entristezcan, porque los que obtendrán el éxito finalmente serán los creyentes.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@cdxxxiii{Si sufren una derrota, sepan que ellos también han sufrido derrotas. Se alterna el triunfo y la derrota entre las personas para que Dios ponga a prueba a los creyentes y honre con la muerte dando testimonio [de su fe] a algunos. Dios no ama a los opresores.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@cdxxxiv{Esto es para que Dios purifique a los creyentes de sus pecados y destruya a los que desmienten la verdad.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@cdxxxv{¿Acaso creen que van a entrar al Paraíso sin que Dios evidencie quiénes están dispuestos a combatir por Su causa y ser pacientes?\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@cdxxxvi{Anhelaban la muerte antes de salir a su encuentro, y la vieron con sus propios ojos.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@cdxxxvii{Mujámmad es un Mensajero a quien precedieron otros. ¿Si muriera o le dieran muerte, volverían al paganismo? Quien regrese al paganismo no perjudica a Dios. Dios retribuirá generosamente a los agradecidos.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@cdxxxviii{Ningún ser puede morir excepto por el designio de Dios, lo que se encuentra escrito con anterioridad. Quien desee el provecho de esta vida mundanal, le concederé parte de ello; pero quien quiera la recompensa de la otra vida, se la otorgaré. Así recompensaré a los agradecidos.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@cdxxxix{¡Cuántos Profetas han tenido que combatir junto a multitudes de seguidores devotos! No perdieron la fe por los reveses en la causa de Dios, no flaquearon ni se sometieron al enemigo. Dios ama a los perseverantes.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@cdxl{No pronunciaban otras palabras más que: ``¡Oh, Señor nuestro! Perdona nuestros pecados y nuestros excesos. Afirma nuestros pasos y concédenos el triunfo sobre los que rechazan la verdad".\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@cdxli{Dios les premió en esta vida y les favorecerá con una recompensa mayor en la otra, porque Dios ama a los que hacen el bien.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@cdxlii{¡Oh, creyentes! Si obedecen a los que rechazan la verdad, los harán renegar de su fe, y serán finalmente de los perdedores.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@cdxliii{Solo Dios es su Protector, y Él es quien mejor da auxilio.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@cdxliv{Infundiremos miedo en el corazón de los que rechazan la verdad por haber dedicado actos de adoración a otros además de Dios, sin fundamento lógico ni evidencia revelada. Su morada será el Fuego. ¡Qué pésima será la morada de los opresores!\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@cdxlv{Dios cumplió Su promesa cuando, con Su anuencia, vencían [en la batalla de Uhud]. Pero flaquearon y cuestionaron las órdenes cayendo en la desobediencia. Entre ustedes hubo quienes anhelaron los bienes materiales de esta vida, pero otros anhelaron la recompensa de la otra vida. Entonces Dios los probó con la derrota, pero los perdonó, porque Dios concede Su favor a los creyentes.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@cdxlvi{Y [recuerden] cuando huían sin reparar en nadie y el Mensajero los convocaba a sus espaldas, pero no lo obedecieron. Entonces, Dios los afligió con una tribulación para que no se lamentaran por lo que habían perdido [del botín] ni padecido [la derrota]. Dios está bien informado de lo que hacen.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@cdxlvii{Luego de pasada la tribulación, Dios hizo descender sobre ustedes una seguridad y los envolvió en un sueño. Mientras tanto, otro grupo estaba preocupado tan solo por su suerte y pensaban equivocadamente acerca de Dios, a la manera de los paganos, diciendo: ``¿Acaso obtuvimos lo que se nos prometió?" Diles: ``Todo asunto depende de Dios". Ellos ocultan en sus corazones [la incredulidad] que no te manifiestan. Dicen: ``Si nos hubieran consultado, no habría muertos aquí". Respóndeles: ``Aunque hubieran permanecido en sus hogares, la muerte habría sorprendido en sus lechos a aquellos para los que estaba decretada". Dios quiso probarlos para evidenciar sus verdaderos sentimientos y purificar sus corazones. Dios bien sabe lo que encierran los pechos.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@cdxlviii{Los que huyeron el día que se enfrentaron los dos ejércitos, fue porque el demonio los sedujo a causa de sus pecados. Pero Dios los perdonó, porque Dios es Perdonador, Indulgente.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@cdxlix{¡Oh, creyentes! No sean como los que niegan la verdad y dicen de sus hermanos cuando éstos salen de viaje o en una expedición militar [y mueren]: ``Si se hubieran quedado no habrían muerto ni caído en batalla", porque Dios hará que eso sea una angustia en sus corazones. Dios es Quien da la vida y la muerte. Dios ve todo lo que hacen.\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@cdl{Pero si los matan o mueren por la causa de Dios, sepan que el perdón de Dios y Su misericordia son mejores que lo que puedan atesorar.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@cdli{Tanto si mueren como si caen por la causa de Dios, serán congregados ante Dios.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@cdlii{[Oh, Mujámmad] Por misericordia de Dios eres compasivo con ellos. Si hubieras sido rudo y de corazón duro se habrían alejado de ti; perdónalos, pide perdón por ellos, y consulta con ellos los asuntos [de interés público]. Pero cuando hayas tomado una decisión encomiéndate a Dios, porque Dios ama a los que se encomiendan a Él.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@cdliii{Si Dios los auxilia nadie podrá vencerlos. Pero si los abandona, ¿quién podrá auxiliarlos contra Su voluntad? Que a Dios se encomienden los creyentes.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@cdliv{No es concebible que un Profeta pueda cometer fraude. Quien cometa fraude cargará con ello el Día de la Resurrección. Todos serán retribuidos según sus obras y no serán tratados injustamente.\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@cdlv{¿Acaso es igual quien busca la complacencia de Dios a quien incurre en Su ira? Su destino será el Infierno y qué pésimo fin.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@cdlvi{Son diferentes ante Dios. Dios ve todo cuanto obran.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@cdlvii{Dios ha dado Su favor a los creyentes al enviarles un Mensajero de entre ellos mismos que les recita Sus versículos, los purifica y les enseña el Corán y la sabiduría [de la Sunnah]. Porque antes se encontraban en un claro extravío.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@cdlviii{Ahora que les sobrevino una desgracia, y a pesar de haber causado a sus enemigos el doble, se preguntan a sí mismos: ``¿Por qué fuimos vencidos?" Diles: ``Por su comportamiento". Dios es sobre toda cosa Poderoso.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@cdlix{Recuerden lo que les aconteció el día que se enfrentaron los dos ejércitos por voluntad de Dios, para distinguir quiénes eran los verdaderos creyentes\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@cdlx{y quiénes los hipócritas, a quienes se les dijo: ``Combatan por la causa de Dios o al menos defiéndanse". Respondieron [mintiendo]: ``Si hubiéramos sabido que habría combate, los hubiéramos seguido". Ese día estuvieron más cerca de la incredulidad que de la fe, porque manifestaban con sus bocas lo que no había en sus corazones. Pero Dios bien sabe lo que ellos ocultaban.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@cdlxi{Quienes se ausentaron dijeron a sus hermanos: ``Si nos hubieran escuchado, no habrían muerto". Diles: ``Si es verdad lo que dicen, háganse inmunes a la muerte".\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@cdlxii{Pero no crean que quienes han caído defendiendo la causa de Dios están realmente muertos. Por el contrario, están vivos y colmados de gracias junto a su Señor.\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@cdlxiii{Se regocijan por las gracias que Dios les ha concedido y están felices por la recompensa que recibirán quienes todavía no se les han unido, que no sentirán temor ni tristeza.\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@cdlxiv{Se congratulan unos a otros por la gracia y el favor de Dios. Porque Dios recompensa a los creyentes.\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@cdlxv{Quienes acudieron al llamado de Dios y Su Mensajero a pesar de sus heridas [y dificultades], con obediencia y temor a Dios, obtendrán una recompensa magnífica.\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@cdlxvi{A ellos les fue dicho: ``Los enemigos se han agrupado contra ustedes, no podrán con ellos". Pero esto solo les aumentó la fe y dijeron: ``Dios es suficiente para nosotros, porque Él es el mejor protector"\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@cdlxvii{y retornaron ilesos por la gracia y el favor de Dios. Ellos buscaron la complacencia de Dios, y Dios es el poseedor de un favor inmenso.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@cdlxviii{Así [es la estrategia del] demonio, que intenta atemorizar a quienes lo siguen. Pero no le teman a él, sino que témanme a Mí, si son verdaderamente creyentes.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@cdlxix{Que no te cause tristeza ver a quienes se precipitan a negar la verdad, porque no perjudican a Dios. Es voluntad de Dios que en la otra vida no obtengan bendición alguna, y sí tengan un castigo terrible.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@cdlxx{Quienes abandonen la fe y nieguen la verdad, no perjudicarán en nada a Dios, sino que tendrán un castigo doloroso.\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@cdlxxi{Que no piensen los que niegan la verdad que la tolerancia de permitirles seguir con vida significa un bien para ellos. Por el contrario, es para que aumenten sus pecados y luego sufran un castigo humillante.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@cdlxxii{No es propio de la sabiduría de Dios dejar a los creyentes en la situación en que se encuentran sin distinguir al perverso [hipócrita] del virtuoso [creyente]. Ni es propio de la sabiduría de Dios revelarles el conocimiento oculto [de quiénes son los hipócritas]. Dios elige entre Sus Mensajeros a quien Le place [para revelárselo], así que crean en Dios y Sus Mensajeros, porque si creen y obran rectamente obtendrán una magnífica recompensa.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@cdlxxiii{Los que mezquinan lo que Dios les ha concedido, que no crean que es un bien para ellos ser avaros. Por el contrario, es un mal. El Día del Juicio Final llevarán colgando de su cuello aquello a lo que con tanta avaricia se aferraron. A Dios pertenece la herencia de cuanto hay en los cielos y la Tierra. Dios está bien informado de lo que hacen.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@cdlxxiv{Dios ha oído las palabras de quienes dijeron: ``Dios es pobre, mientras que nosotros somos ricos". Registraremos lo que dijeron y también que hayan matado injustamente a los Profetas. Y les diré: ``Sufran el castigo del fuego del Infierno".\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@cdlxxv{Es lo que merecen en retribución por sus obras, porque Dios no es injusto con Sus siervos.\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@cdlxxvi{Ellos mismos son los que dijeron: ``Dios pactó con nosotros que no creyéramos en ningún Mensajero hasta que nos trajera una ofrenda que el fuego consumiera". Diles: ``Antes de mí, otros Mensajeros se les presentaron con las pruebas claras y todas sus exigencias; ¿por qué los mataron entonces, si es cierto lo que dicen?"\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@cdlxxvii{Si te desmienten, también fueron desmentidos anteriormente otros Mensajeros, a pesar de haber traído pruebas claras, Escrituras y Libros Luminosos.\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@cdlxxviii{Todo ser probará el sabor de la muerte, y cada uno recibirá su recompensa íntegra el Día de la Resurrección. Quien sea salvado del Fuego e ingresado al Paraíso habrá realmente triunfado, porque la vida mundanal es solo un placer ilusorio.\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@cdlxxix{Van a ser probados en sus bienes materiales y en sus personas. Oirán ofensas de aquellos que han recibido el Libro antes que ustedes y de los idólatras. Pero tengan paciencia, temor de Dios, y sepan que esto requiere entereza.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@cdlxxx{[Sabe que] Dios celebró este pacto con la Gente del Libro: ``Deberán explicar el Libro claramente a la gente y jamás ocultarlo". Pero traicionaron el pacto y lo vendieron por vil precio. ¡Qué mal actuaron!\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@cdlxxxi{No creas que quienes se vanaglorian de lo que hacen y aman el elogio por lo que ni siquiera han hecho se salvarán del castigo. Tendrán un castigo doloroso.\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@cdlxxxii{A Dios pertenece el reino de los cielos y de la Tierra. Dios es sobre toda cosa Poderoso.\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@cdlxxxiii{En la creación de los cielos y de la Tierra, y en la sucesión de la noche y el día, hay signos para los dotados de intelecto,\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@cdlxxxiv{que invocan a Dios de pie, sentados o recostados, que meditan en la creación de los cielos y la Tierra y dicen: ``¡Señor nuestro! No has creado todo esto sin un sentido. ¡Glorificado seas! Presérvanos del castigo del Fuego.\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@cdlxxxv{¡Señor nuestro! A quien condenes al Fuego lo habrás deshonrado, porque los opresores no tendrán quién los auxilie.\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@cdlxxxvi{¡Señor nuestro! Hemos oído a quien convocaba a la fe, diciendo: ‘Crean en su Señor’, y creímos. ¡Señor nuestro! Perdona nuestros pecados, borra nuestras malas acciones y, al morir, reúnenos con los piadosos.\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@cdlxxxvii{¡Señor nuestro! Concédenos lo que has prometido a través de Tus Mensajeros y no nos humilles el Día de la Resurrección. Tú no faltas a Tu promesa".\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@cdlxxxviii{Su Señor les respondió sus súplicas diciendo: ``No dejaré de recompensar ninguna de sus obras, sean hombres o mujeres, descienden el uno del otro. A los que emigraron, fueron expulsados de sus hogares, padecieron dificultades por Mi causa, lucharon y cayeron, les perdonaré sus faltas y los introduciré en jardines por donde corren ríos". Ésta es la recompensa que Dios les concederá. Dios posee la más hermosa recompensa.\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@cdlxxxix{No te dejes engañar por la opulencia y los viajes de negocios de los que niegan la verdad,\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@cdxc{porque es solo un disfrute temporal. Pero finalmente su destino será el Infierno. ¡Qué pésima morada!\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@cdxci{En cambio, quienes hayan tenido temor de su Señor vivirán eternamente en jardines por donde corren ríos, es la acogida que Dios les ha preparado. Lo que Dios tiene reservado para los virtuosos es superior al éxito de los incrédulos en esta vida.\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@cdxcii{Entre la Gente del Libro hay quienes creen en Dios y en lo que ha sido revelado a ustedes y a ellos. Son humildes ante Dios, y no venden la palabra de Dios a vil precio. Ellos serán recompensados por su Señor. Dios es rápido en ajustar cuentas.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@cdxciii{¡Oh, creyentes! Tengan paciencia, perseverancia, defiéndanse y tengan temor de Dios, que así tendrán éxito.\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@cdxciv{\basmalahes ¡Oh, seres humanos! Tengan temor de su Señor, Quien los ha creado de un solo ser, del que creó a su cónyuge e hizo descender de ambos muchos hombres y mujeres. Tengan temor de Dios, en Cuyo nombre se reclaman sus derechos, y respeten los lazos familiares. Dios los observa.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@cdxcv{Reintegren los bienes materiales a los huérfanos [cuando alcancen la pubertad]. No les cambien lo bueno de ellos por lo malo de ustedes, ni se apropien de los bienes materiales de ellos agregándolos a los de ustedes, porque es un gran pecado.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@cdxcvi{No se casen con las huérfanas que han criado si temen no ser equitativos [con sus dotes], mejor cásense con otras mujeres que les gusten: dos, tres o cuatro. Pero si temen no ser justos, cásense con una sola o con una esclava, porque es lo mejor para evitar cometer alguna injusticia.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@cdxcvii{Den a las mujeres la dote con buena predisposición. Pero si ellas renuncian a parte de ella en favor de ustedes, dispongan de ésta como les plazca.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@cdxcviii{No confíen a los [huérfanos menores de edad que sean] derrochadores los bienes materiales cuya administración Dios les ha confiado. Denles alimentación y vestimenta, y háblenles con cariño.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@cdxcix{Pongan a prueba la madurez de los huérfanos cuando alcancen la pubertad, y si los consideran maduros y capaces, entréguenles sus bienes. No los derrochen antes de que alcancen la mayoría de edad. El [administrador] que sea rico, que se abstenga [de cobrar honorarios por su administración]; y el pobre que cobre lo mínimo. Cuando les entreguen su patrimonio, háganlo ante testigos. Es suficiente con que Dios les pedirá cuentas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@d{A los varones les corresponde un porcentaje de la herencia que dejen los padres y parientes más cercanos, y a las mujeres otro porcentaje de lo que los padres y parientes más cercanos dejen. Fuere poco o mucho, les corresponde [por derecho] un porcentaje determinado de la herencia.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@di{Si algunos [otros] parientes, huérfanos o pobres, asisten al reparto de la herencia, denles algo y trátenlos con amabilidad.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@dii{Que [los apoderados de los huérfanos] se preocupen [por ellos] igual que si dejasen tras de sí a sus propios hijos menores huérfanos y temiesen por ellos. Que tengan temor de Dios y digan la verdad.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@diii{Quienes se apropien injustamente de los bienes de los huérfanos, estarán llenando sus entrañas con fuego y arderán en el Infierno.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@div{Dios prescribe respecto a [la herencia de] sus hijos: Al varón le corresponde lo mismo que a dos mujeres. Si las hermanas son más de dos, les corresponderán dos tercios de la herencia. Si es hija única, le corresponde la mitad. A cada uno de los padres [del difunto] le corresponderá un sexto, si deja hijos; pero si no tiene hijos y le heredan solo sus padres, un tercio es para la madre. Si tiene hermanos, un sexto es lo que corresponde para la madre. Esto luego de cumplir con sus legados y pagar sus deudas. Ustedes ignoran quiénes tienen más derecho al beneficio de la herencia, si sus padres o sus hijos, de ahí este precepto de Dios. Dios es Sabio, todo lo sabe.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@dv{A los hombres les corresponde la mitad de lo que dejaran sus esposas si no tuvieran hijos. Si tuvieran hijos les corresponde un cuarto, luego de cumplir con sus legados y pagar sus deudas. Si no tuvieran hijos, a las mujeres les corresponde un cuarto de lo que dejaran. Si tuvieran hijos, entonces un octavo de lo que dejaran, luego de cumplir con sus legados y pagar las deudas. Si [el difunto] no tiene padres ni hijos, pero sí un hermano o una hermana, entonces les corresponde a cada uno de ellos un sexto. Si son más, participarán del tercio de la herencia, luego de cumplir con los legados y pagar las deudas, siempre que los legados no causen perjuicio a los herederos. Esto es un precepto de Dios. Dios es Sabio, Generoso.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@dvi{Estas son las leyes de Dios. A quien obedezca a Dios y a Su Mensajero, Él lo introducirá en jardines donde corren ríos, donde vivirá por toda la eternidad. Éste es el éxito supremo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@dvii{Pero a quien desobedezca a Dios y a Su Mensajero y no cumpla con Sus leyes, Él lo introducirá en el Infierno donde morará por toda la eternidad y sufrirá un castigo humillante.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@dviii{Si una mujer es acusada de fornicación, deben declarar en su contra cuatro testigos [presenciales del acto]. Si los testigos confirman el hecho, condénenlas a reclusión perpetua en sus casas o hasta que Dios les conceda otra salida.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@dix{El castigo se aplica a los dos que lo cometen [hombre y mujer]. Pero cuando se arrepientan y enmienden, déjenlos en paz. Dios es Indulgente, Misericordioso.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@dx{Dios solo perdona a quienes cometen el mal por ignorancia y se arrepienten antes de morir. A éstos Dios los absuelve porque es Sabio y todo lo sabe.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@dxi{Mas no serán perdonados quienes sigan obrando mal [por rebeldía contra Dios] hasta que los sorprenda la muerte y recién entonces digan: ``Ahora me arrepiento". Ni tampoco quienes mueran negando la verdad; a éstos les tenemos reservado un castigo doloroso.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@dxii{¡Oh, creyentes! Quedan abolidas las costumbres [paganas preislámicas] de heredar a las mujeres como un objeto y de obligarlas a casarse y retenerlas por la fuerza para recuperar parte de lo que les habían dado, a menos que ellas cometan un acto de inmoralidad. En lugar de eso, traten amablemente a las mujeres en la convivencia. Y si algo de ellas les llegara a disgustar [sean tolerantes], puede ser que les desagrade algo en lo que Dios ha puesto un bien para ustedes.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@dxiii{Y si te decides a divorciarte de tu esposa, a la que has dado una fortuna como dote, para casarte con otra [mujer], no le pidas que te devuelva nada de su dote. ¿Acaso pensabas hacerlo calumniándola, cometiendo un claro delito?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@dxiv{¿Acaso pretendes que se te devuelva [la dote] después de haberse entregado uno al otro [en la intimidad] a través de un solemne contrato matrimonial?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@dxv{Salvo hechos consumados, les está prohibido casarse con las exesposas de sus padres, porque es algo obsceno, aborrecible e inmoral.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@dxvi{Se prohíbe contraer matrimonio con sus madres, hijas, hermanas, tías, sobrinas por parte de hermano o de hermana, madres de leche, hermanas de leche, sus suegras, hijastras que están bajo su tutela nacidas de esposas con las que han consumado el matrimonio; pero si no han consumado el matrimonio, no incurren en falta al casarse con ellas. Salvo en casos consumados, también se prohíbe la nuera y casarse con dos hermanas a la vez. Dios es Perdonador, Misericordioso.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@dxvii{Las mujeres decentes y honestas son prohibidas, excepto que sea tomando su mano a través de un contrato de matrimonio. Esta es la ley de Dios. Fuera de las prohibiciones, es lícito que busquen casarse pagando la dote correspondiente, pero con intensión de matrimonio y no de fornicar. Es una obligación dar a la mujer la dote convenida una vez consumado el matrimonio. Pero no incurren en falta si después de haber cumplido con esta obligación legal, deciden algo distinto de mutuo acuerdo. Dios es Sabio, todo lo sabe.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@dxviii{Quien no disponga de los medios necesarios para casarse con una creyente libre, podrá hacerlo con una esclava creyente. Dios conoce bien la fe de ustedes, y todos proceden de un mismo ser. Cásense con ellas con el permiso de sus tutores, y denles la dote legítima y de buen grado. Tómenlas como mujeres honestas, no como fornicadoras o amantes. Si estas mujeres se casan y cometen una deshonestidad, se les aplicará la mitad del castigo que a las mujeres libres. Esto es para los que teman caer en la fornicación, pero tener paciencia es mejor. Dios es Absolvedor, Misericordioso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@dxix{Dios quiere aclararles la ley, mostrarles el camino correcto de quienes los precedieron, y perdonarlos. Dios todo lo sabe, es Sabio.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@dxx{Dios quiere perdonarlos, mientras que quienes siguen sus pasiones solo quieren extraviarlos lejos del camino recto.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@dxxi{Dios facilita las cosas, ya que el ser humano fue creado con una naturaleza débil.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@dxxii{¡Oh, creyentes! No estafen ni usurpen injustamente, sino que comercien de mutuo acuerdo. No se maten a ustedes mismos. Dios es Misericordioso con ustedes.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@dxxiii{Quien quebrante estas leyes agresiva e injustamente, terminará en el Fuego. Eso es fácil para Dios.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@dxxiv{Si se apartan de los pecados más graves, perdonaré sus faltas menores y los introduciré con honra en el Paraíso.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@dxxv{No codicien lo que Dios ha concedido a unos más que a otros. Los hombres obtendrán una recompensa conforme a sus méritos, y las mujeres obtendrán una recompensa conforme a sus méritos. Rueguen a Dios para que les conceda de Sus favores. Dios conoce todas las cosas.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@dxxvi{Cada uno de ustedes tiene derecho a heredar de lo que dejen sus padres y sus parientes más cercanos. Aquellos con quienes hayan celebrado un pacto, también tienen derecho a heredar. Dios es testigo de todas las cosas.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@dxxvii{Los hombres son responsables del cuidado de las mujeres debido a las diferencias [físicas] que Dios ha puesto entre ellos, y por su obligación de mantenerlas con sus bienes materiales. Las mujeres piadosas e íntegras obedecen a Dios y en ausencia de su marido se mantienen fieles, tal como Dios manda. A aquellas de quienes teman maltrato y animadversión, exhórtenlas, tomen distancia no compartiendo el lecho, y por último pongan un límite físico; si les obedecen [en lo que Dios ordena], no les reclamen ni recriminen más. Dios es Sublime, Grande.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@dxxviii{Si temen la ruptura del matrimonio, apelen a un mediador de la familia de él y otro de la familia de ella. Si tienen el deseo íntimo de reconciliarse, Dios los ayudará a llegar a un acuerdo. Dios todo lo sabe y está bien informado.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@dxxix{Adoren solamente a Dios y no dediquen actos de adoración a otros. Hagan el bien a sus padres, a sus familiares, a los huérfanos, a los pobres, a los vecinos parientes y no parientes, al compañero, al viajero insolvente y a quienes están a su servicio. Dios no ama a quien se comporta como un arrogante jactancioso.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@dxxx{Que los avaros, los que incitan a otros a la avaricia, y los que ocultan el favor que Dios les ha concedido, sepan que Dios ha preparado para los ingratos un castigo humillante.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@dxxxi{También para los que hacen caridad solo para ser vistos por la gente, y no creen [de corazón] en Dios ni en el Día del Juicio Final. ¡Quien tome al demonio por compañero, qué pésimo es su consejero!\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@dxxxii{¿Qué les habría costado creer en Dios y en el Día del Juicio y dar caridades de aquello que Dios les concedió? Dios los conoce perfectamente.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@dxxxiii{Dios no es injusto con nadie ni en el peso de la más ínfima partícula. Por el contrario, retribuye generosamente toda obra de bien, y concede de Su parte una recompensa magnánima.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@dxxxiv{¿Qué pasará cuando traiga a un testigo de cada comunidad y te traiga a ti [¡oh, Mujámmad!] como testigo contra los que niegan la verdad [y las gracias de Dios]?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@dxxxv{Ese día, los que negaron la verdad y se opusieron al Mensajero, querrán que la tierra se los trague. No podrán ocultar ni una de sus palabras ante Dios.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@dxxxvi{¡Oh, creyentes! No hagan la oración si están bajo el efecto de embriagantes [o narcóticos] hasta que sepan lo que están diciendo. Tampoco [hagan la oración] si están impuros hasta que se hayan bañado, excepto quien solo necesite pasar por la mezquita. Pero si se encuentran enfermos o de viaje, o si han hecho sus necesidades o han tenido relación sexual con su mujer y no encuentran agua [para la ablución], busquen tierra limpia y pásensela por el rostro y las manos. Dios es Remisorio, Absolvedor.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@dxxxvii{¿No te asombra el caso de quienes recibieron algo de la revelación pero la cambiaron por el extravío? Ellos anhelan que ustedes también se desvíen del camino recto.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@dxxxviii{Dios conoce bien a los enemigos de ustedes. Dios es suficiente como Protector y Socorredor.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@dxxxix{Algunos judíos tergiversan el sentido de las palabras sacándolas de contexto, como cuando dicen: ``Te oímos [y al mismo tiempo les dicen a otros], pero no te seguiremos en nada de lo que digas". [O como cuando dicen:] ``Óyenos tú, que no aceptamos oírte". Te llaman con doble sentido en sus palabras ofendiendo la religión [de Dios]. Si hubieran dicho: ``Te oímos y te seguiremos. Escúchanos y sé paciente con nosotros", sería mejor para ellos y más correcto. Pero Dios los alejó de Su misericordia por negarse a aceptar la verdad, poco es lo que creen.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@dxl{¡Oh, Gente del Libro! Crean en lo que he revelado ahora, que confirma lo que ya tenían [de la verdad], antes de que borre los rasgos de su identidad y terminen en su propia perdición, o los maldiga como maldije a los que profanaron el sábado. Lo que Dios dispone es ineludible.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@dxli{Dios no perdona la idolatría, pero fuera de ello perdona a quien Le place. Quien asocie algo a Dios comete un pecado gravísimo.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@dxlii{¿No has visto a los que se jactan de puritanos? En realidad es Dios Quien concede la pureza [librando del egocentrismo] a quien Le place. Nadie será tratado injustamente [en cuanto a la recompensa que sus obras merezcan].\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@dxliii{Observa cómo inventan mentiras y las atribuyen a Dios. Eso es en sí mismo un pecado evidente.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@dxliv{¿Acaso no te sorprende que quienes habiendo recibido algo de la revelación, siguen la hechicería y a los demonios y dicen sobre los idólatras: ``Ellos están mejor guiados que los creyentes"?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@dxlv{Ellos fueron apartados de la misericordia de Dios, y a quien Dios aparta de Su misericordia no tendrá quién lo socorra.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@dxlvi{¿Acaso comparten [con Dios] la soberanía? [No la tienen, pero] si la tuvieran, no darían lo más mínimo a la gente [debido a su avaricia].\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@dxlvii{¿Es que envidian a la gente porque Dios les ha concedido de Su favor? Porque concedí a la familia de Abraham el Libro y la sabiduría, y les he concedido un dominio inmenso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@dxlviii{Entre ellos hay quienes creyeron y quienes los combatieron. [A estos últimos] el Infierno les bastará como castigo.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@dxlix{A quienes nieguen la revelación los arrojaré al Fuego. Cada vez que se les queme la piel, se la cambiaré por otra nueva para que continúen sufriendo el castigo. Dios es Poderoso, Sabio.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@dl{[En cambio] los creyentes que obren correctamente estarán en jardines por donde corren ríos, en los que morarán eternamente, donde tendrán esposas purificadas bajo buena sombra.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@dli{Dios les ordena que restituyan a sus dueños originales lo que se les haya confiado, y que cuando juzguen entre las personas lo hagan con equidad. ¡Qué excelente es aquello a lo que Dios los convoca! Dios todo lo oye, todo lo ve.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@dlii{¡Oh, creyentes! Obedezcan a Dios, obedezcan al Mensajero y a aquellos de ustedes que tengan autoridad y conocimiento. Si realmente creen en Dios y en el Día del Juicio, cuando tengan discrepancias remítanlas al juicio de Dios y del Mensajero, porque en ello hay bien y es el camino correcto.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@dliii{¿No te causan asombro quienes dicen creer en lo que se te ha revelado y en lo que había sido revelado anteriormente, y sin embargo recurren a la justicia de quienes gobiernan con principios injustos y paganos, a pesar de que se les ha ordenado no creer en eso? El demonio solo quiere que se pierdan lejos [de la fe monoteísta].\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@dliv{Cuando se les dice: ``Acepten lo que Dios ha revelado y las enseñanzas del Mensajero", ves a los hipócritas apartarse de ti con aversión.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@dlv{¿Qué será de ellos cuando los aflija una desgracia por lo que hicieron y vengan a ti jurando por Dios: ``Solo intentábamos hacer el bien y ayudar"?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@dlvi{Dios sabe lo que encierran sus corazones. Apártate de ellos, exhórtalos y amonéstalos sobre la gravedad de lo que hicieron.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@dlvii{Hemos enviado a los Mensajeros para que sean obedecidos con el permiso de Dios. Si [los hipócritas] después de haber cometido esas injusticias hubieran recurrido a ti, se hubieran arrepentido ante Dios, y el Mensajero hubiera pedido perdón por ellos, habrían comprobado que Dios es Indulgente, Misericordioso.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@dlviii{Pero no, [juro] por tu Señor que no creerán [realmente] a menos que te acepten como juez de sus disputas, y no se resistan a aceptar tu decisión y se sometan completamente.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@dlix{Si les hubiera prescrito que sacrificaran sus vidas o que abandonaran sus hogares, no lo habrían hecho, salvo unos pocos. Pero si hubieran cumplido con lo que se les ordenó, habría sido mejor para ellos y les habría fortalecido la fe,\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@dlx{les habría concedido una magnífica recompensa,\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@dlxi{y los habría guiado por el sendero recto.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@dlxii{Los que obedezcan a Dios y al Mensajero estarán con los bienaventurados: los Profetas, los veraces, los que murieron dando testimonio [de su fe] y los justos. ¡Qué excelentes compañeros!\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@dlxiii{Esa es la generosidad de Dios. Y Dios es el único que todo lo sabe.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@dlxiv{¡Oh, creyentes! Tomen precaución. Salgan en grupos o todos juntos [en defensa del Islam y la verdad].\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@dlxv{Habrá entre ustedes quien se rezague, y si sufren un revés dirá: ``Dios me ha concedido la gracia de no estar con ellos".\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@dlxvi{Pero si por la gracia de Dios alcanzan la victoria, dirá como si no hubiera amistad entre ustedes: ``¡Ojalá hubiera estado con ellos!, así habría obtenido un éxito grandioso".\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@dlxvii{Que luchen por la causa de Dios quienes son capaces de sacrificar la vida mundanal por la otra. Pues a quien luche por la causa de Dios, sea que caiga abatido o que obtenga la victoria, le daré una magnífica recompensa.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@dlxviii{¿Qué les impide combatir por la causa de Dios, siendo que hay hombres, mujeres y niños oprimidos que imploran: ``¡Señor nuestro! Sácanos de esta ciudad de opresores. Concédenos, por Tu gracia, quién nos proteja y socorra"?\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@dlxix{Los creyentes combaten por la causa de Dios. Los incrédulos, en cambio, combaten por la de los ídolos y la injusticia. ¡Combatan a los secuaces del demonio, y [sepan que] las artimañas del demonio son débiles!\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@dlxx{¿Acaso no te sorprende la actitud de aquellos a quienes se les dijo: ``No tienen permiso para combatir ahora, sino que cumplan la oración y hagan caridades?" Pero cuando se les llamó a combatir, algunos de ellos temieron a la gente como se debe temer a Dios o aún más, y dijeron: ``¡Señor nuestro! ¿Por qué nos llamas a combatir? Si lo dejaras para más tarde…". Diles: ``El goce de la vida mundanal es pasajero; en cambio, la otra vida es superior para los piadosos, en la que no serán tratados injustamente en lo más mínimo.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@dlxxi{La muerte los alcanzará donde quiera que se encuentren, aunque se refugien en fortalezas inexpugnables. Si les acontece algo bueno dicen: ``Esto proviene de Dios". Pero si los alcanza un perjuicio dicen: ``Esto es a causa de ti [¡oh, Mujámmad!]". Diles: ``Todo proviene de Dios". ¿Qué le sucede a esta gente que no comprenden lo que se les dice?\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@dlxxii{Todo bien que te alcance proviene de Dios, mientras que todo mal que te aflija es consecuencia de tus propias obras. Te he enviado [¡oh, Mujámmad!] como Mensajero a todas las personas. Dios es suficiente testigo.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@dlxxiii{Quien obedezca al Mensajero obedece a Dios. Pero no te he enviado como custodio de quien te rechace.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@dlxxiv{[Los hipócritas] te juran obediencia, pero cuando salen de tu presencia, un grupo de ellos pasa la noche tramando contradecirte. Dios registra lo que traman. Aléjate de ellos y encomiéndate a Dios, porque Dios te es suficiente como protector.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@dlxxv{¿Acaso no reflexionan en el Corán y sus significados? Si no procediera de Dios encontrarían en él numerosas contradicciones.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@dlxxvi{Cuando escuchan un rumor que pudiere atentar contra la seguridad y sembrar el temor, lo divulgan inmediatamente. Pero lo que debían hacer era remitirlo al Mensajero y a quienes tienen autoridad y conocimiento, que son quienes pueden investigar la información y comprender su magnitud, y sabrían qué hacer. Si no fuera por el favor y la misericordia de Dios para con ustedes, habrían seguido la voluntad del demonio, salvo algunos pocos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@dlxxvii{Lucha por la causa de Dios, tú solo eres responsable por ti mismo. Exhorta a los creyentes a combatir; puede que Dios detenga el hostigamiento de los que niegan la verdad, pues Dios tiene mayor poderío y fuerza de disuasión.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@dlxxviii{Quien interceda por una causa justa obtendrá parte de la recompensa [de Dios], y quien interceda por una causa injusta obtendrá parte del pecado [que implica]. Dios tiene poder sobre todas las cosas.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@dlxxix{Si los saludan respondan con un saludo igual o mejor. Dios tiene en cuenta todas las cosas.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@dlxxx{Dios, nadie merece ser adorado sino Él. [Dios] los reunirá el Día del Juicio sobre el cual no hay duda que sucederá. ¿Y qué es más veraz que la palabra de Dios?\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@dlxxxi{[Creyentes,] ¿Por qué se dividen respecto a los hipócritas? Dios ha designado Su desvío a causa de su desobediencia. ¿Acaso intentan guiar a quien Dios extravió? Quien ha sido desviado por Dios no tiene salvación.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@dlxxxii{[Los hipócritas] quieren que ustedes rechacen la verdad, tal como ellos hicieron. No se alíen con ellos hasta que hayan emigrado por la causa de Dios [demostrando su fe]. Pero si se vuelven [abiertamente] hostiles, aprésenlos y ajustícienlos donde quiera que los encuentren. No los tomen jamás por aliados ni confidentes\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@dlxxxiii{salvo a quienes busquen asilo en un pueblo con el que tengan un pacto [de no agresión], o con aquellos que están apesadumbrados por tener que combatirlos o combatir a su propia gente. [A ellos no los combatan porque] si Dios hubiera querido, les habría otorgado valor de combatir contra ustedes. Si ellos los dejan tranquilos y no los combaten y proponen la paz, sepan que Dios no los autoriza a agredirlos.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@dlxxxiv{Pero encontrarán a otro grupo que desea estar a salvo de ustedes [aparentando ser creyentes] y a salvo de su gente [manifestando la incredulidad que hay en sus corazones]. Cada vez que su pueblo los incita a combatir contra ustedes se precipitan a agredirlos. A estos, si no dan la palabra de que no combatirán contra ustedes, proponen la paz y contienen la agresión, aprésenlos y ajustícienlos [en el curso del combate] donde quiera que los encuentren. A ellos se les permite combatirlos.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@dlxxxv{No es propio de un creyente matar a otro creyente, salvo que sea por accidente. Quien mate a un creyente accidentalmente deberá liberar a un esclavo creyente y pagar una indemnización a la familia de la víctima, a menos que ésta la condone. Si [quien muere accidentalmente] era creyente y pertenecía a un pueblo enemigo, [el que causó la muerte accidental] deberá liberar un esclavo creyente. Pero si pertenecía a un pueblo con el que se tiene un pacto [de no agresión], deberá pagarle la indemnización a la familia de la víctima y liberar a un esclavo creyente. Y quien no esté en condiciones [económicas] de hacerlo [o no encuentre,] deberá ayunar dos meses consecutivos para alcanzar el perdón de Dios. Dios todo lo sabe, es Sabio.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@dlxxxvi{Quien asesine a un creyente con premeditación será condenado a permanecer eternamente en el Infierno, además caerá en la ira de Dios, y recibirá Su maldición y un castigo terrible.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@dlxxxvii{¡Oh, creyentes! Cuando salgan a combatir por la causa de Dios, asegúrense de no combatir contra los creyentes, y no digan a quien los saluda con la paz [expresando su Islam]: ``¡Tú no eres creyente!", para así combatirlo y conseguir algo de los bienes perecederos de la vida mundanal, pues junto a Dios hay grandes botines. Ustedes eran así [en la época pagana], pero Dios los agració [con el Islam]. Usen su discernimiento, porque Dios está bien informado de lo que hacen.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@dlxxxviii{Los creyentes que permanecieron pasivos [ante la llamada a luchar por la justicia y la seguridad] no pueden ser equiparados con quienes combatieron por la causa de Dios con sus bienes y sus vidas, excepto los que tengan excusa válida. Dios considera superiores a quienes combaten [por la justicia] con sus bienes y sus vidas, por sobre quienes permanecen pasivos [ante la injusticia]. Pero a todos Dios ha prometido un buen fin [el Paraíso], aunque Dios ha preferido conceder una recompensa más grandiosa a quienes lucharon que a quienes no lo hicieron.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@dlxxxix{Son grados que Él concede, junto con Su perdón y misericordia. Dios es Indulgente y Misericordioso.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@dxc{Aquellos que mueran siendo injustos consigo mismos [cometiendo pecados influenciados por la sociedad pagana], los ángeles al tomar sus almas les preguntaran: ``¿Qué les pasó?" Responderán: ``Nos sentíamos débiles y oprimidos [por los incrédulos]". Les dirán: ``¿Acaso la tierra de Dios no era suficientemente vasta como para que emigraran [a otra sociedad]?" Su morada será el Infierno. ¡Qué mal fin!\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@dxci{Excepto los hombres, mujeres y niños débiles que no eran capaces [de emigrar] ni les fue mostrado el camino recto.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@dxcii{A ellos Dios los perdonará, porque Dios es Remisorio, Indulgente.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@dxciii{Quien emigre por la causa de Dios encontrará en la Tierra muchos lugares para refugiarse y también sustento. A quien emigre de su hogar por la causa de Dios y la de Su Mensajero, pero lo sorprenda la muerte [antes de llegar a su destino], sepa que Dios le garantiza Su recompensa. Dios es Absolvedor, Misericordioso.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@dxciv{Cuando estén de viaje o si temen que los agredan los que niegan la verdad, que son sus enemigos, no incurren en falta si abrevian la oración.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@dxcv{Cuando estés con ellos [¡oh, Mujámmad! en el campo de batalla] y establezcas la oración, que un grupo permanezca de pie contigo tomando las armas. Cuando hagan la prosternación, que ellos se pongan detrás; luego el grupo que aún no haya orado se adelante y ore contigo, tomando precauciones y portando sus armas. Los [enemigos] que niegan la verdad desean que descuiden sus armas para atacarlos sorpresivamente. No cometen falta alguna si la lluvia los molesta o están enfermos y dejan las armas [mientras rezan], pero tomen precauciones. Dios ha reservado un castigo denigrante para los que niegan la verdad.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@dxcvi{Cuando hayan terminado la oración recuerden a Dios de pie, sentados o recostados. Y cuando estén fuera de peligro hagan la oración [normalmente]. La oración ha sido prescrita a los creyentes para ser realizada en horarios específicos.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@dxcvii{No se desanimen en la lucha contra ese pueblo [de opresores], porque así como ustedes tienen dificultades, ellos también las tienen. Pero ustedes anhelan [una recompensa] de Dios que ellos no pueden esperar. Dios todo lo sabe, es Sabio.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@dxcviii{Te he revelado el Libro que contiene la verdad para que juzgues entre la gente con lo que Dios te ha enseñado. No seas abogado de los hipócritas.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@dxcix{Pide perdón a Dios, porque Dios es Perdonador, Misericordioso.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@dc{Pero no intentes justificar la conducta de quienes son desleales consigo mismos. Dios no ama a quien traiciona y comete injusticias.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@dci{[Los hipócritas] pueden engañar a la gente, pero no pueden engañar a Dios, porque Él está con ellos cuando pasan la noche tramando lo que no Le complace. Dios bien sabe cuanto hacen.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@dcii{[Creyentes,] pueden defenderlos en esta vida; pero, ¿quién los defenderá de Dios el Día de la Resurrección? Y, ¿quién abogará por ellos?\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@dciii{Quien obre mal o sea injusto consigo mismo, pero pida perdón a Dios, encontrará que Dios es Perdonador, Misericordioso.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@dciv{Quien cometa una falta, en realidad lo hace en su propio perjuicio. Dios todo lo sabe, es Sabio.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@dcv{Quien cometa una falta o un delito y acuse de ello a un inocente, cargará con su calumnia y con un pecado manifiesto.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@dcvi{Si no fuera por el favor [de la infalibilidad] y la misericordia de Dios contigo [oh, Mujámmad], un grupo [de los hipócritas] te habría extraviado; pero solo se extravían a sí mismos y en nada pueden perjudicarte. Dios te ha revelado el Libro [el Corán] y la sabiduría [la Sunnah] y te ha enseñado lo que no sabías. ¡El favor de Dios sobre ti es inmenso!\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@dcvii{En la mayoría de las conversaciones secretas no hay ningún bien, excepto las que sean para coordinar una ayuda social, hacer una buena acción o reconciliar entre las personas. A quien lo haga anhelando complacer a Dios, lo agraciaré con una grandiosa recompensa.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@dcviii{Quien se aparte de las enseñanzas del Mensajero después de habérsele evidenciado la guía, y siga otro camino distinto al de los creyentes, lo abandonaré y lo ingresaré al Infierno. ¡Y qué mal destino!\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@dcix{Dios no perdona la idolatría, pero perdona, fuera de ello, a quien Le place. Quien atribuya actos de adoración a otros además de Dios se habrá desviado profundamente [del camino de los Profetas].\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@dcx{[Los paganos] invocan en vez de Dios a deidades femeninas. En realidad solo invocan a un demonio rebelde.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@dcxi{Dios maldijo al demonio, pero éste replicó: ``Seduciré a la mayoría de Tus siervos,\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@dcxii{los desviaré, les daré falsas expectativas, les ordenaré cortar las orejas del ganado [marcándolas como ofrenda para los ídolos] y que alteren la naturaleza de la creación de Dios". Quien tome al demonio como aliado en lugar de Dios estará evidentemente perdido.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@dcxiii{Les hará falsas promesas y les dará esperanzas; el demonio no hace sino engañar.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@dcxiv{Su morada será el Infierno del que no encontrarán escapatoria.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@dcxv{[En cambio] a los creyentes que obren rectamente los ingresaré en jardines donde corren ríos, en los que vivirán por toda la eternidad. La promesa de Dios es auténtica. ¿Qué palabra es más verídica que la palabra de Dios?\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@dcxvi{No se trata de lo que ustedes deseen o lo que desee la Gente del Libro. Quien haya obrado mal será retribuido por ello, y no encontrará fuera de Dios protector ni socorredor.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@dcxvii{Al creyente que haga obras de bien, sea hombre o mujer, lo ingresaré al Paraíso y no será privado de su recompensa en lo más mínimo.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@dcxviii{¿Quién practica una religión mejor que aquel que entrega su voluntad a Dios, hace el bien y sigue la creencia monoteísta de Abraham? Dios tomó a Abraham como uno de Sus siervos más amados.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@dcxix{A Dios pertenece cuanto hay en los cielos y en la Tierra. El conocimiento de Dios todo lo abarca.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@dcxx{Te preguntan acerca de las mujeres. Diles: ``Dios les responde y explica lo que se encuentra mencionado en el Libro [el Corán] sobre las huérfanas a las que no han dado lo que les corresponde [como dote] siendo que les gustaría casarse con ellas, [así como les informa] acerca de los menores indefensos y [la obligación de] ser equitativos con los huérfanos. Sepan que toda obra de bien que hagan Dios la conoce.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@dcxxi{Si una mujer teme de su marido maltrato o rechazo, no incurrirán en falta si ambos llegan a un acuerdo, pues un acuerdo [justo] es lo mejor. El alma es propensa a la avaricia, pero si hacen el bien y tienen temor de Dios, sepan que Dios sabe bien cuanto hacen.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@dcxxii{No podrán ser [completamente] equitativos con sus esposas por mucho que lo intenten. Pero no por eso vulneren los derechos [de una de ellas] dejándola como abandonada. Si se rectifican y tienen temor de Dios, Dios es Perdonador, Misericordioso.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@dcxxiii{Pero si se divorcian, Dios proveerá a cada uno de Su abundancia. Dios es Vasto, Sabio.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@dcxxiv{A Dios pertenece cuanto hay en los cielos y en la Tierra. He ordenado a quienes recibieron el Libro anteriormente y también a ustedes tener temor de Dios, pero si se rehúsan, a Dios pertenece cuanto hay en los cielos y en la Tierra. Dios es Opulento, Loable.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@dcxxv{A Dios pertenece cuanto hay en los cielos y en la Tierra. Dios es Quien vela por ellos.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@dcxxvi{¡Oh, gente! Si Él hubiera querido los habría exterminado y remplazado por otros. Dios tiene el poder para hacerlo.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@dcxxvii{Quien anhele la recompensa de esta vida mundanal, sepa que Dios dispone de la recompensa de esta vida y de la otra. Dios todo lo oye, todo lo ve.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@dcxxviii{¡Oh, creyentes! Sean responsablemente equitativos cuando den testimonio por Dios, aunque sea en contra de ustedes mismos, de sus padres o parientes cercanos, no importa si [el acusado es] rico o pobre: Dios está por encima de ellos. Que los sentimientos no los hagan ser injustos. Si dan falso testimonio o rechazan prestar testimonio [ocultando la verdad], sepan que Dios está bien informado de cuanto hacen.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@dcxxix{¡Oh, creyentes! Crean en Dios, en Su Mensajero, en el Libro que fue revelado a Su Mensajero y en los Libros que fueron revelados en el pasado. Quien no crea en Dios, en Sus ángeles, en Sus Libros, en Sus Mensajeros y en el Día del Juicio, habrá caído en un desvío profundo.\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@dcxxx{A quienes crean y luego renieguen, después vuelvan a creer y luego renieguen nuevamente, aferrándose tercamente en su rechazo de la verdad [hasta su muerte], Dios no ha de perdonarlos ni guiarlos [por la senda al Paraíso].\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@dcxxxi{Anuncia a los hipócritas que recibirán un castigo doloroso.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@dcxxxii{Los que toman a los incrédulos como aliados en vez de tomar a los creyentes, ¿pretenden acaso así alcanzar poder y gloria? Sepan que el poder y la gloria pertenecen solamente a Dios.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@dcxxxiii{[Musulmanes:] Se les informa en el Libro revelado que cuando escuchen que se blasfema o que se burlan de la revelación de Dios, no se queden en esa reunión con quienes lo hagan, a menos que cambien de tema, porque de lo contrario serán iguales a ellos. Dios se encargará de congregar a los hipócritas y los que niegan la verdad en el Infierno.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@dcxxxiv{[Los hipócritas] siempre especulan. Si ustedes obtienen una victoria con la ayuda de Dios, les dicen: ``¿Acaso no estábamos de su lado?" Pero si los que niegan la verdad logran un triunfo parcial, les dicen a ellos: ``¿Acaso no los ayudamos a vencer y los defendimos de los creyentes?" Dios los juzgará el Día de la Resurrección. Dios no ha de conceder a los que rechazan el mensaje la supremacía absoluta sobre los creyentes.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@dcxxxv{Los hipócritas pretenden engañar a Dios, pero Él hace que ellos se engañen a sí mismos. Cuando se levantan para hacer la oración lo hacen con desgano, solo para ser vistos por la gente, sin apenas acordarse de Dios.\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@dcxxxvi{[Los hipócritas] vacilan entre los creyentes y los incrédulos, no se inclinan por unos ni por otros. A quien Dios desvíe no encontrará camino.\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@dcxxxvii{¡Oh, creyentes! No tomen a los que niegan la verdad como aliados en vez de a los creyentes. ¿Acaso pretenden darle a Dios una prueba en contra de ustedes mismos?\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@dcxxxviii{Los hipócritas estarán en el abismo más profundo del Fuego y no encontrarán quién los socorra.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@dcxxxix{Excepto aquellos [hipócritas] que se arrepientan, rectifiquen, se aferren a Dios y practiquen la fe sinceramente. Ellos estarán junto a los creyentes, y Dios tiene preparado para los creyentes una recompensa grandiosa.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@dcxl{¿Para qué iba Dios a castigarlos [por sus ofensas pasadas] si son [ahora] agradecidos y creyentes? Dios es Agradecido, todo lo sabe.\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@dcxli{A Dios no Le complace que se hagan públicos los errores de otros, excepto que sea para denunciar o detener una injusticia. Dios todo lo oye, todo lo sabe.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@dcxlii{Si hacen públicas sus buenas obras o si las esconden, o si perdonan una ofensa, sepan que Dios es Perdonador, Poderoso.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@dcxliii{Quienes no creen en Dios ni en Sus Mensajeros y pretenden hacer distinción entre [la fe en] Dios y [la fe en] Sus Mensajeros diciendo: ``Creemos en algunos, pero en otros no", pretendiendo tomar un camino intermedio,\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@dcxliv{ellos son auténticos incrédulos. Y a los que nieguen la verdad les tenemos reservado un castigo denigrante.\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@dcxlv{Pero quienes crean [realmente] en Dios y en Sus Mensajeros sin hacer distinciones entre ellos, Él les concederá Sus recompensas. Dios es Perdonador, Misericordioso.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@dcxlvi{[Los judíos entre] la Gente del Libro te piden que les hagas descender un Libro del cielo. Ya le habían pedido a Moisés algo peor cuando dijeron: ``Haz que podamos ver a Dios con los ojos". Pero fueron fulminados por un rayo debido a las injusticias que cometían. Luego comenzaron a adorar al becerro [de oro] a pesar de haber recibido las evidencias [del monoteísmo]. Pero les perdoné [esa ofensa] y concedí a Moisés un milagro evidente.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@dcxlvii{Para que respetaran el pacto [de seguir la Tora] elevé la montaña por encima de ellos y les dije: ``Ingresen por la puerta [principal de la ciudad], prostérnense [en señal de humildad] y no quebranten el sábado". Celebré con ellos un pacto solemne.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@dcxlviii{[Y no te sorprendas, ¡oh, Mujámmad! de que te pidan que hagas descender un Libro del cielo, cuando ellos] Quebrantaron el pacto, no creyeron en los signos de Dios, mataron a los Profetas injustamente, y [además] dicen: ``No podemos comprender tus palabras". No es eso, sino que Dios endureció sus corazones porque negaron la verdad evidente, y no van a creer sino unos pocos de ellos.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@dcxlix{Tampoco creyeron [en el Mesías] y manifestaron contra María una calumnia gravísima [acusándola de fornicadora].\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@dcl{Y dijeron: ``Hemos matado al Mesías, Jesús hijo de María, el Mensajero de Dios". Pero, aunque así lo creyeron, no lo mataron ni lo crucificaron. Quienes discrepan sobre él [Jesús] tienen dudas al respecto. No tienen conocimiento certero sino que siguen suposiciones, pero en la realidad no lo mataron.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@dcli{Dios lo ascendió al cielo [en cuerpo y alma]. Dios es Poderoso, Sabio.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@dclii{La Gente del Libro comprenderá, antes de la muerte, la verdad sobre Jesús, y el Día del Juicio él testificará en contra [de quienes lo negaron y de quienes lo adoraron].\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@dcliii{Debido a las injusticias que cometían los judíos, y porque constantemente obstaculizaban el camino de Dios, les prohibí cosas buenas que antes les eran permitidas.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@dcliv{Lucraban con la usura siendo que les estaba prohibido, y estafaban engañando a la gente. Les tenemos reservado un castigo doloroso a quienes de entre ellos negaron la verdad [a pesar de conocerla].\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@dclv{Pero a los que están afianzados en el conocimiento y creen en lo que te fue revelado y lo que fue revelado anteriormente, hacen la oración prescrita, pagan el zakat, creen en Dios y en el Día del Juicio Final, les daremos una recompensa grandiosa.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@dclvi{Te he descendido la revelación como lo hice con Noé y con los Profetas que le sucedieron, con Abraham, Ismael, Isaac, Jacob, las doce tribus, Jesús, Job, Jonás, Aarón y Salomón. A David le he revelado los Salmos.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@dclvii{Te he mencionado [¡oh, Mujámmad!] algunos de los Mensajeros que envié [a la humanidad] y otros no. Y sabe que Dios habló con Moisés directamente.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@dclviii{A los Mensajeros los envié como anunciadores de albricias y como amonestadores, para que [la humanidad] no tuviera argumento alguno ante Dios [por haber rechazado el mensaje]. Dios es Poderoso, Sabio.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@dclix{[Si te acusan de mentiroso, ¡oh, Mujámmad! sabe que] Dios mismo atestigua que lo que te reveló es con Su sabiduría, y los ángeles también lo atestiguan, aunque es suficiente con Dios como testigo.\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@dclx{Los que negaron la verdad y además impidieron a la gente seguir la guía de Dios, están profundamente extraviados.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@dclxi{A los que negaron la verdad y cometieron injusticias, Dios no ha de perdonarlos ni guiarlos por el buen camino,\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@dclxii{Excepto por el camino que conduce al Infierno, en donde morarán eternamente. Eso es fácil para Dios.\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@dclxiii{¡Oh, seres humanos! Les ha llegado un Mensajero con la Verdad sobre su Señor. Crean [en Dios y sigan el Islam], eso es lo mejor para ustedes. Pero si no creen, sepan que a Dios pertenece cuanto hay en los cielos y en la Tierra. Dios todo lo sabe y es Sabio.\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@dclxiv{¡Oh, Gente del Libro! No se extralimiten en las creencias de su religión. No digan acerca de Dios sino la verdad: Porque el Mesías, Jesús hijo de María, es un Mensajero de Dios y Su palabra [¡Sé!] que depositó en María; un espíritu creado por Él. Crean en [la unicidad de] Dios y en Sus Mensajeros. No digan que [Dios] es una parte de la trinidad, abandonen esa idea, es lo mejor para ustedes. Dios es una única divinidad. Lejos está, Glorificado sea, de tener un hijo. A Él pertenece cuanto hay en los cielos y en la Tierra. Dios es suficiente como protector.\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@dclxv{Ni el Mesías ni los ángeles allegados menosprecian ser siervos de Dios. Quien desdeñe adorar a Dios y se comporte con soberbia, sepa que todos serán resucitados y congregados ante Él [para ser juzgados por sus actitudes].\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@dclxvi{Los creyentes que hayan obrado correctamente serán retribuidos con generosidad y se les concederá aún más de Su favor. Pero quienes hayan rechazado adorarlo [solo a Él] y hayan sido soberbios, sufrirán un castigo doloroso, y no encontrarán, fuera de Dios, protector ni socorredor.\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@dclxvii{¡Oh, seres humanos! Les ha llegado una prueba de su Señor [el Profeta], y les he hecho descender una luz que ilumina [el Corán].\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@dclxviii{A quienes creyeron y se aferraron a Dios, Él tendrá compasión de ellos, los agraciará y los guiará por el camino recto.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@dclxix{Te piden una respuesta [sobre la herencia]. Diles: ``Dios dictamina sobre quien no tiene padre ni hijo. Si un hombre muere sin dejar hijos, pero sí una hermana, ésta heredará la mitad de lo que dejare, y si ella muere sin dejar hijos, él la heredará. Si el difunto deja dos hermanas, éstas heredarán dos tercios de lo que dejare. Si tiene hermanos, varones y mujeres, a cada varón le corresponderá lo mismo que a dos mujeres. Dios se los aclara para que no se desvíen [de lo que es justo]. Dios todo lo sabe.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@dclxx{\basmalahes ¡Oh, creyentes! Cumplan con sus compromisos. Les es lícito comer del ganado excepto lo que esté expresamente prohibido. La caza no está permitida mientras estén consagrados a la peregrinación. Dios legisla lo que Le place [según su sabiduría divina].\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@dclxxi{¡Oh, creyentes! No profanen los ritos de Dios ni los meses sagrados ni los animales ofrendados ni los animales marcados para ofrenda ni perjudiquen a quienes se dirigen a la Casa Sagrada buscando el favor y la complacencia de su Señor. [Solo] cuando hayan finalizado la peregrinación podrán cazar. Que el descontento que tengan hacia quienes les impedían el acceso a la Mezquita Sagrada no los lleve a transgredir [la ley], sino que cooperen con ellos a obrar el bien e impedir el mal, pero no cooperen en el pecado y la enemistad. Y tengan temor de Dios; Dios es severo en el castigo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@dclxxii{Les es prohibido [comer] la carne del animal muerto por causa natural, la sangre, la carne de cerdo, el animal que haya sido sacrificado invocando otro en lugar de Dios, la del animal muerto por asfixia, golpe, caída, cornada o herido por las fieras, a menos que alcancen a degollarlo [antes de que muera], y lo que es inmolado en altares [en honor a un ídolo]. [También es prohibido] consultar la suerte echando flechas. [Violar alguna de estas leyes] es un pecado. Quienes se empeñan en negar la verdad han perdido la esperanza de [hacerlos renunciar a] su religión. No tengan temor de ellos, sino que tengan temor de Mí. Hoy les he perfeccionado su forma de adoración, he completado Mi gracia sobre ustedes y he dispuesto que el Islam sea su religión. Pero quien, [en caso extremo] por hambre, se vea forzado [y coma de lo prohibido] pero sin intención de transgredir la ley ni excederse, Dios es Perdonador, Misericordioso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@dclxxiii{Te preguntan qué es lícito [comer]. Responde: ``Se les permite comer todas las cosas buenas [y sanas]. Pueden comer lo que hayan atrapado los animales de caza que han entrenado, conforme a lo que Dios les ha enseñado. Coman de lo que cacen para ustedes, pero mencionen el nombre de Dios sobre esos alimentos, y tengan temor de Dios, porque Dios es rápido en ajustar cuentas.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@dclxxiv{De hoy en adelante les es permitido todo [alimento] bueno. La carne de los [animales sacrificados] de quienes recibieron el Libro [la Tora y el Evangelio] es lícita, y la carne [de los animales que ustedes sacrifican] es lícita para ellos. También es permitido [para ustedes] casarse con las mujeres creyentes que sean recatadas y las mujeres recatadas que recibieron el Libro anteriormente [judías y cristianas], siempre que cumplan la condición de darle su dote, con intensión [seria] de casarse, no para fornicar o tomarlas como amantes secretas. Pero quien rechace la creencia [monoteísta de Dios], sus obras [en este mundo] habrán sido en vano, y en la otra vida se contará entre los perdedores.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@dclxxv{¡Oh, creyentes! Cuando se dispongan a hacer la oración lávense el rostro y los brazos hasta los codos, pasen las manos [húmedas] por la cabeza y [laven] los pies hasta los tobillos. Si están en estado de impureza mayor, tomen un baño [completo]. Si están enfermos o de viaje o han hecho sus necesidades [biológicas] o han cohabitado con su mujer y no encuentran agua, usen [para la ablución virtual] tierra limpia y pásenla por el rostro y las manos. Dios no quiere imponerles dificultades, solo quiere purificarlos y completar Su favor sobre ustedes para que sean agradecidos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@dclxxvi{Recuerden la bendición que Dios les concedió, y [recuerden] el pacto que hizo con ustedes cuando dijeron: ``Oímos y obedecemos". Tengan temor de Dios, porque Dios bien sabe lo que encierran los corazones.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@dclxxvii{¡Oh, creyentes! Sean responsables con [los preceptos de] Dios. Sean justos cuando den testimonio. Que el rencor que sienten no les conduzca a obrar injustamente. Sean justos y equitativos, porque eso es lo más cercano a la piedad. Y tengan temor de Dios, porque Dios está bien informado de lo que hacen.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@dclxxviii{A los creyentes que obren correctamente Dios les ha prometido el perdón [de sus pecados] y una recompensa generosa.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@dclxxix{Pero [en cambio] los que niegan la verdad y rechazan Mi palabra serán los habitantes del fuego del Infierno.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@dclxxx{¡Oh, creyentes! Recuerden las bendiciones que Dios les concedió cuando sus enemigos intentaron agredirlos pero Dios los protegió. Tengan temor de Dios, y que los creyentes solo se encomienden a Dios.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@dclxxxi{Dios celebró un pacto con los Hijos de Israel y designó de entre ellos doce jefes. Pero Dios les dijo: ``Estaré con ustedes siempre que cumplan con la oración, paguen el zakat, crean y apoyen a [todos] Mis Mensajeros, gasten generosamente en Mi causa; entonces perdonaré sus ofensas y los introduciré en jardines en los que corren ríos. Pero quien [después de todo esto] niegue la verdad, se habrá extraviado del camino recto".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@dclxxxii{Pero por haber violado el pacto los maldije y sus corazones se volvieron insensibles y duros. [Por eso] tergiversan el sentido de las palabras [de la Tora] sacándolas de contexto, y dejan de lado parte de lo que les fue mencionado [en ella]. Descubrirás que la mayoría de ellos, salvo unos pocos, traicionan [a la gente]; pero tu discúlpalos y sé tolerante con ellos, porque Dios ama a los que hacen el bien.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@dclxxxiii{[Dios también tomó un compromiso] con quienes dicen: ``Somos cristianos", pero ellos dejaron de lado parte de lo que les había mencionado [en el Evangelio]. Y [por eso] sembré entre ellos la discordia y el odio hasta el Día de la Resurrección, cuando Dios les hará saber el [gran] nivel de desvío que alcanzaron.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@dclxxxiv{¡Oh, Gente del Libro! Les ha llegado un Mensajero enviado por Mí, cuya misión es traerles a la luz los preceptos más importantes que ocultaron de la Biblia, y facilitar muchos otros preceptos. Dios les ha enviado una luz y un Libro claro [el Corán],\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@dclxxxv{con el cual Dios guía a quienes buscan Su complacencia hacia los caminos de la salvación, los extrae por Su voluntad de las tinieblas hacia la luz, y los dirige por el camino recto.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@dclxxxvi{Son incrédulos quienes dicen: ``Jesús hijo de María es Dios". Diles: ``¿Quién podría impedir que Dios exterminara al Mesías hijo de María, a su madre y a todo cuanto existe en la Tierra, si así lo quisiera?" A Dios pertenece el reino de los cielos y de la Tierra, y todo lo que existe entre ambos. Dios crea lo que Le place, porque Él tiene poder sobre todas las cosas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@dclxxxvii{Dicen judíos y cristianos: ``Somos hijos de Dios y sus predilectos". Diles: ``Si así fuera, ¿por qué los castigará por los pecados que cometen? No son sino como el resto de la humanidad, seres creados por Él. Dios perdona a quien quiere y castiga a quien quiere. A Dios pertenece el reino de los cielos y de la Tierra, y todo lo que existe entre ambos, y ante Él compareceremos [para que nos juzgue por nuestras acciones]".\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@dclxxxviii{¡Oh, Gente del Libro! Luego de que pasara un tiempo desde el último Mensajero, les ha llegado Mi Mensajero para aclararles la verdad, y que no puedan decir [el Día del Juicio Final]: ``No se nos presentó nadie que nos albriciara [con el monoteísmo] y nos advirtiera [contra la idolatría]". Pues ahora sí tienen quien les albricia y les advierte, porque Dios es sobre toda cosa Poderoso.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@dclxxxix{[Recuerda] cuando Moisés dijo a su pueblo: ``¡Oh, pueblo mío! Recuerden las bendiciones que Dios les concedió al hacer que surgieran entre ustedes Profetas y poderosos, y los bendijo con gracias que no concedió a nadie de sus contemporáneos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@dcxc{¡Oh, pueblo mío! Entren en la Tierra Santa que Dios destinó para ustedes y no renieguen [de su fe], porque se convertirían en perdedores".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@dcxci{Respondieron: ``¡Oh, Moisés! Allí hay gente poderosa, así que no entraremos hasta que ellos se marchen. Solo cuando abandonen la ciudad entraremos".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@dcxcii{Dos hombres que tenían temor de Dios, que habían sido bendecidos [con una fe sólida], dijeron: ``Ingresen sorpresivamente por la puerta, porque si lo hacen obtendrán la victoria. Pero encomiéndense solo a Dios, si es que verdaderamente son creyentes".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@dcxciii{Dijeron: ``¡Oh, Moisés! No ingresaremos mientras ellos permanezcan dentro. Ve tú con tu Señor y combátelos, que nosotros nos quedaremos aquí".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@dcxciv{Dijo [Moisés]: ``¡Señor mío! Solo tengo control de mis actos y autoridad sobre mi hermano [Aarón], decide Tú entre ellos y nosotros".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@dcxcv{Dijo [Dios a Moisés]: ``Les estará prohibida [la entrada en Tierra Santa]. Vagarán por la tierra durante cuarenta años. No te aflijas por la gente perversa".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@dcxcvi{[Oh, Mujámmad:] Cuéntales la auténtica historia de los hijos de Adán, cuando presentaron una ofrenda y le fue aceptada a uno y rechazada al otro. Dijo [Caín]: ``Te mataré". Dijo [Abel]: ``Dios solo acepta las obras de los que obran con fe sincera.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@dcxcvii{Aunque levantaras tu mano para matarme, yo no levantaría la mía para matarte, porque yo tengo temor de Dios, Señor del Universo.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@dcxcviii{Prefiero que seas tú quien cargue con mis pecados y los tuyos, [y si me matas] serás de los moradores del Fuego, porque ese es el castigo para los que cometen esa injusticia".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@dcxcix{Pero su ego lo llevó [a Caín] a matar a su hermano, por lo que se arruinó a sí mismo.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@dcc{Entonces Dios envió un cuervo para que escarbase la tierra y le mostrara cómo enterrar el cadáver de su hermano. Dijo [Caín]: ``¡Ay de mí! ¿Acaso no soy capaz de hacer como este cuervo y enterrar el cadáver de mi hermano?" Y sintió un profundo arrepentimiento.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@dcci{Como consecuencia [de este asesinato], legislé para los Hijos de Israel que: ``Quien mata a una persona sin que ésta haya cometido un crimen o sembrado la corrupción en la Tierra, es como si matase a toda la humanidad. Pero quien salva una vida es como si salvase a toda la humanidad". Mis Mensajeros se presentaron ante ellos con pruebas claras [de la ley], pero muchos de ellos siguen cometiendo graves excesos en el mundo.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@dccii{El castigo para quienes hacen la guerra a [un pueblo que se gobierna por la ley de] Dios y Su Mensajero y siembran en la Tierra la corrupción es que [luego de un juicio justo] se los condene a muerte, se los crucifique, se les ampute una mano y el pie del lado opuesto, o se los condene al exilio. Esto es para que sean denigrados en esta vida, y en la otra tendrán un castigo terrible.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@dcciii{Pero quienes se arrepientan antes de ser apresados [y se entreguen voluntariamente] sepan que Dios es Perdonador, Misericordioso.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@dcciv{¡Oh, creyentes! Tengan temor de Dios, busquen acercarse a Él [realizando obras de bien] y luchen por Su causa, que así tendrán éxito.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@dccv{Los que niegan la verdad, aunque tuvieran todo cuanto existe en la Tierra y aún el doble para ofrecerlo como rescate y salvarse del castigo del Día de la Resurrección, no se les aceptará, y recibirán un castigo doloroso.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@dccvi{Querrán salir del Fuego pero nunca lo conseguirán, y tendrán un castigo perpetuo.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@dccvii{Al ladrón y a la ladrona [luego de un juicio justo] córtenles la mano en compensación por su delito. Esta es una sentencia disuasoria dictada por Dios. Dios es Poderoso, Sabio.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@dccviii{Pero a quien se arrepienta luego de cometer un delito o injusticia y enmiende, Dios lo perdonará, porque Dios es Perdonador, Misericordioso.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@dccix{¿Acaso no sabes que a Dios pertenece el reino de los cielos y de la Tierra? Castiga a quien quiere y perdona a quien quiere. Dios es sobre toda cosa Poderoso.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@dccx{¡Oh, Mensajero! No te entristezcas por quienes se precipitan a negar la verdad, como quienes dicen: ``Creemos", pero sus corazones no creen. Entre los judíos hay quienes prestan oídos a cualquier falsedad que se diga, escuchan ávidamente sin venir a pedirte aclaración. Tergiversan el sentido de las palabras [reveladas] sacándolas de su contexto, y dicen: ``Si se les dice así [acorde a su tergiversación] acéptenlo; caso contrario, rechácenlo". A quien Dios pone a prueba con una tentación, no podrás hacer nada para salvarlo. Dios no ha querido purificar sus corazones. Ellos serán denigrados en esta vida, y en la otra tendrán un castigo terrible.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@dccxi{Prestan oídos a la mentira y se benefician vorazmente del soborno. Si se presentan ante ti [para que juzgues] sobre un pleito entre ellos, puedes juzgar o abstenerte. Si te abstienes no podrán perjudicarte en nada; pero si juzgas entre ellos, hazlo con equidad y justicia, porque Dios ama a los justos.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@dccxii{¿Y por qué necesitan pedirte a ti que juzgues entre ellos si tienen la Tora en la que se encuentra el juicio de Dios? Si tu veredicto no les agrada lo rechazan [a pesar de que coincide con la Tora], esos de verdad no son creyentes [en Dios ni en la Tora].\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@dccxiii{He revelado la Tora, en la que hay guía y luz. Los Profetas entregados [a la voluntad de Dios] juzgaban entre los judíos. Lo mismo hicieron los rabinos y juristas en cumplimiento de su misión de custodiar el Libro de Dios y ser testigos de él [en sus enseñanzas]. No teman a la gente sino que tengan temor de Mí. No vendan Mis preceptos por un precio vil. Quienes no juzgan conforme a lo que Dios ha revelado [por considerarlo inferior], ésos son los verdaderos incrédulos.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@dccxiv{He prescrito en ella [la Tora, la justicia retributiva]: Vida por vida, ojo por ojo, nariz por nariz, oreja por oreja, diente por diente, y con las heridas una similar. Pero si la víctima perdona [que se aplique la pena al culpable] esto le servirá de expiación. Quienes no juzgan conforme a lo que Dios ha revelado [por considerarlo inferior], ésos son los verdaderos ofensores.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@dccxv{Hice que Jesús hijo de María siguiera [el ejemplo de los Profetas anteriores], en confirmación de la verdad que aún quedaba en la Tora. A él le he revelado el Evangelio en el que había guía y luz, como confirmación de lo que aun quedaba de la Tora, y como guía y exhortación para los que tienen temor de Dios y piedad.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@dccxvi{Que los seguidores del Evangelio juzguen según lo que Dios ha revelado en él, porque los que no juzgan conforme a lo que Dios ha revelado, ésos son los verdaderos perversos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@dccxvii{[Y a ti, ¡oh, Mujámmad!] Te he revelado el Libro que contiene la verdad definitiva [el Corán], que corrobora los Libros revelados anteriormente y es juez de lo que es verdadero en ellos. Juzga conforme a lo que Dios ha revelado y no te sometas a sus deseos transgrediendo la Verdad que has recibido. A cada [comunidad religiosa] le he dado una legislación y una metodología [norma]. Si Dios hubiera querido habría hecho de ustedes una sola comunidad, pero quiso probar su fe en lo que les reveló. Apresúrense a realizar obras de bien, porque todos comparecerán ante Dios, y Él les informará acerca de lo que discrepaban.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@dccxviii{Juzga entre ellos conforme a lo que Dios ha revelado, no te sometas a sus deseos y ten cuidado con ellos, no sea que te aparten con engaños de lo que Dios te ha revelado. Si ellos se rehúsan [a seguir lo que has dictaminado], sabe que Dios, a causa de sus pecados, quiere afligirlos. Pero muchas personas [a pesar de las advertencias] son perversas.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@dccxix{¿Acaso prefieren un juicio según las leyes paganas? Pero, ¿qué mejor juicio que el de Dios para quienes están convencidos de su fe?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@dccxx{¡Oh, creyentes! No tomen a los judíos ni a los cristianos por aliados, porque ellos son aliados entre sí. Quien les dé lealtad se convierte en uno de ellos. Dios no guía a un pueblo opresor.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@dccxxi{Verás que quienes tienen una enfermedad en sus corazones [la hipocresía] se apresuran buscando su complacencia y dicen: ``Tenemos miedo de que nos sorprenda una derrota". Pero puede que Dios les tenga deparada la victoria o algún otro decreto, y entonces tengan que arrepentirse de lo que pensaban.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@dccxxii{Los creyentes dirán entonces: ``¿Son éstos quienes juraban solemnemente por Dios que nos apoyaban?" Sus obras habrán sido en vano y se contarán entre los fracasados.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@dccxxiii{¡Oh, creyentes! Si apostatan de su religión, Dios los suplantará por otros a quienes amará y ellos Lo amarán, que serán compasivos con los creyentes, severos con los que niegan la verdad, y combatirán por la causa de Dios sin temor a los reproches. Esas son las cualidades de quienes Dios ha bendecido. Dios es Vasto, todo lo sabe.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@dccxxiv{Sus únicos aliados deben ser Dios, Su Mensajero y los creyentes que hacen la oración prescrita, pagan el zakat y se inclinan [ante Dios en la oración].\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@dccxxv{Quienes tomen por aliados a Dios, a Su Mensajero y a los creyentes, son de la comunidad de Dios, quienes serán en definitiva los vencedores.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@dccxxvi{¡Oh, creyentes! No tomen por aliados a quienes toman a burla y broma su religión, sean gente del Libro o de los que niegan la verdad. Tengan temor de Dios si es que son creyentes.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@dccxxvii{Cuando ustedes convocan a la oración, ellos se burlan y la toman a broma, porque son gente que no razona.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@dccxxviii{Di: ``¡Oh, Gente del Libro! ¿Acaso nos reprochan que creamos en Dios, en la revelación que nos fue enviada y lo que fue revelado anteriormente, o lo hacen solamente porque la mayoría de ustedes son perversos?"\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@dccxxix{Di: ``¿No quieren acaso que les informe quiénes tendrán peor retribución que éstos ante Dios? Son quienes maldijo Dios, los que incurrieron en Su ira, los que convirtió en monos y cerdos, y los que adoran a los falsos dioses. Esos son los que se encuentran en una situación peor y son los más extraviados del camino recto.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@dccxxx{Cuando se encuentran con ustedes dicen: ``Creemos", pero cuando entraron [al Islam en apariencia] traían la incredulidad consigo, y al abandonarlo [al Islam] salieron igual. Dios sabe bien lo que ocultan.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@dccxxxi{Verás a muchos de ellos precipitarse en el pecado, la injusticia y apoderarse de los bienes ajenos. ¡Qué mal está lo que hacen!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@dccxxxii{¿Por qué sus maestros y rabinos no les prohíben mentir y usurpar los bienes ajenos? ¡Qué mal está lo que hacen!\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@dccxxxiii{Estos judíos dijeron: ``La mano de Dios está cerrada". Son sus manos las que se cerraron, y cayeron en la maldición de Dios por su blasfemia. Por el contrario, Sus dos manos están extendidas y dispensa [generosamente] según Su voluntad. Lo que te ha sido revelado por tu Señor acrecentará en muchos de ellos la arrogancia y la negación de la verdad. Hemos previsto entre ellos la enemistad y el odio hasta el Día de la Resurrección. Siempre que enciendan el fuego de la guerra [contra ustedes], Dios lo apagará. Ellos se esfuerzan por sembrar la corrupción en la Tierra, pero Dios no ama a los que siembran la corrupción.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@dccxxxiv{Pero si la Gente del Libro creyera y tuviera temor de Dios, Yo les borraría sus pecados y los introduciría en los Jardines de las Delicias.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@dccxxxv{Si se hubiesen atenido a la Tora, el Evangelio y lo [último] que les ha sido revelado por su Señor [el Corán], recibirían las bendiciones que caen del cielo y las que brotan de la tierra. Entre ellos hay quienes son moderados, pero la mayoría obra de forma perversa.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@dccxxxvi{¡Oh, Mensajero! Comunica [completamente] lo que te ha sido revelado por tu Señor. Si no lo haces, no habrás hecho llegar Su Mensaje. Dios te protegerá de la gente [que intenta impedir que cumplas con tu misión]. Dios no guía a un pueblo que niega la verdad.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@dccxxxvii{Di: ``¡Oh, Gente del Libro! No tendrán fundamento alguno mientras no se atengan a [la ley de] la Tora, el Evangelio y lo que les ha sido revelado por su Señor". Lo que te ha sido revelado por tu Señor acrecentará en muchos de ellos la arrogancia y la negación a reconocer la verdad, pero no te aflijas por un pueblo que se niega a reconocer la verdad.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@dccxxxviii{Los creyentes [en el Islam], los judíos, los sabeos y los cristianos, quienes crean en Dios [sin asociarle nada] y en el Día del Juicio y obren rectamente, no deben sentir temor ni tristeza [por su futuro].\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@dccxxxix{Celebré un pacto solemne con los Hijos de Israel y les envié Mensajeros. Siempre que un Mensajero se presentaba ante ellos con algo que no les gustaba, lo desmentían o lo mataban.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@dccxl{Creían que no les alcanzaría ninguna calamidad [por sus crímenes] y se volvieron ciegos y sordos [de corazón], pero Dios los perdonó, aunque muchos de ellos reincidieron. Dios ve todo lo que hacen.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@dccxli{Quienes dicen: ``Dios y el Mesías hijo de María son una misma persona" niegan la verdad, porque el mismo Mesías dijo: ``¡Oh, Hijos de Israel! Adoren solo a Dios, que es mi Señor y el suyo". A quien atribuya actos de adoración a otros además de Dios, Él le vedará el Paraíso y su morada será el Infierno. Los injustos no tendrán quién los socorra.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@dccxlii{Quienes dicen: ``Dios es una de las tres personas de la trinidad", niegan la verdad, porque no hay más que una sola divinidad. Si no desisten de sus palabras, un castigo doloroso azotará a quienes se obstinan en negar la verdad.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@dccxliii{¿Acaso no van a arrepentirse y pedir perdón a Dios? Dios es Perdonador, Misericordioso.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@dccxliv{El Mesías hijo de María es solo un Mensajero, como los otros Mensajeros que le precedieron. Su madre fue una creyente devota. Ambos necesitaban alimentos [como el resto de los seres humanos]. Observa cómo les aclaré las evidencias, y cómo [a pesar de eso] rechazan la verdad.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@dccxlv{Di: ``¿Acaso van a adorar, en lugar de Dios, lo que no puede causarles perjuicio ni beneficio? Dios todo lo oye, todo lo sabe".\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@dccxlvi{Di: ``¡Oh, Gente del Libro! No se excedan en sus creencias tergiversando la verdad, y no sigan ideas personales de gentes que se desviaron en el pasado, que hicieron que muchos se extraviaran y se desviaran del camino recto.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@dccxlvii{Los Hijos de Israel que se obstinaban en negar la verdad ya fueron maldecidos por David y por Jesús hijo de María, porque transgredían los límites de la ley y se rebelaban [contra Dios].\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@dccxlviii{No se reprochaban unos a otros los pecados que cometían. ¡Qué perversa era su forma de actuar!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@dccxlix{Verás que muchos de ellos toman a los que rechazan la verdad por aliados. ¡Qué perverso es a lo que les indujo su ego! La ira de Dios cayó sobre ellos, y sufrirán eternamente en el castigo.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@dccl{Si realmente hubieran creído en Dios, en el Profeta y en lo que le fue revelado, no los hubieran tomado por aliados, pero muchos de ellos son perversos.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@dccli{Verás que los peores enemigos de los creyentes son los judíos y los idólatras, y los más amistosos son quienes dicen: ``Somos cristianos". Esto es porque entre ellos hay sacerdotes y monjes que no se comportan con soberbia.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@dcclii{Cuando escuchan lo que le ha sido revelado al Mensajero, ves que sus ojos se inundan de lágrimas porque reconocen la verdad, y entonces dicen: ``¡Señor nuestro! Creemos, cuéntanos entre quienes dan testimonio [de la verdad del Islam].\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@dccliii{¿Y por qué no íbamos a creer en Dios y en lo que nos ha llegado de la verdad? Esperamos que nuestro Señor nos introduzca [al Paraíso] junto a los justos".\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@dccliv{Dios les recompensará por su testimonio con jardines por los que corren ríos, en los que estarán por toda la eternidad. Ésa es la recompensa de los que hacen el bien.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@dcclv{Pero quienes rechacen la verdad y desmientan Mi mensaje morarán en el fuego del Infierno.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@dcclvi{¡Oh, creyentes! No prohíban las cosas buenas que Dios les ha permitido, pero tampoco se excedan. Dios no ama a los que cometen excesos.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@dcclvii{Coman de lo lícito y bueno que Dios les ha proveído, y tengan temor de Dios, en Quien creen.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@dcclviii{Dios no va a pedirles cuentas por los juramentos [que hagan] sin intención, pero sí [va a preguntarles] por los que hayan pronunciado reflexionando sobre su implicancia. En estos casos deberán expiarlos alimentando a diez pobres como alimentan a su familia, o dándoles vestimenta, o liberando a un esclavo. Quien no encuentre los medios [económicos para una de estas tres opciones] deberá ayunar tres días. Ésta es la expiación de los juramentos [si no los cumplen]. Sean cuidadosos con sus juramentos, pero cuando los hagan deben cumplirlos. Así es cómo Dios explica Su mensaje, para que sean agradecidos.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@dcclix{¡Oh, creyentes! Los embriagantes, las apuestas, los altares [sobre los cuales eran degollados los animales como ofrenda para los ídolos] y consultar la suerte [por ejemplo] con flechas, son una obra inmunda del demonio. Aléjense de todo ello, que así tendrán éxito [en esta vida y en la próxima].\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@dcclx{El demonio pretende [con esas cosas] sembrar entre la gente la discordia y el odio, y apartarlos del recuerdo de Dios y la oración valiéndose de los embriagantes y las apuestas. ¿No van a dejarlo ya?\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@dcclxi{Deben obediencia absoluta a Dios y a Su Mensajero, y tengan cuidado [de desobedecerlos]. Pero quien se rehúse, sepa que Mi Mensajero solo tiene la obligación de transmitir [el Mensaje] con claridad.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@dcclxii{Quienes creen y hacen buenas obras no serán reprochados por lo que disfrutaron [de lo que era lícito] antes [de su prohibición] siempre que tengan temor de Dios, crean y obren rectamente, luego tengan temor de Dios y crean [en las leyes], luego tengan temor de Dios y hagan el bien [manteniéndose firmes], porque Dios ama a los que hacen el bien.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@dcclxiii{¡Oh, creyentes! Dios los pone a prueba prohibiendo la caza que puedan obtener con las manos o lanzas [mientras estén consagrados a la peregrinación] para distinguir quién Le teme en secreto. Quien transgreda [las leyes] tendrá un doloroso castigo.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@dcclxiv{¡Oh, creyentes! No cacen mientras estén consagrados a la peregrinación. Quien lo haga deliberadamente deberá compensarlo sacrificando una res de ganado equivalente a la que mató, la que será determinada por dos personas justas y será ofrendada [a Dios] ante la Ka‘bah [y repartida entre los necesitados], o deberá hacer una expiación alimentando a pobres o ayunando un plazo equivalente, para que sufra y comprenda las consecuencias de sus ofensas. Dios no les pedirá cuentas por lo que hayan hecho antes de descender la legislación. Pero quien reincida, sepa que Dios lo retribuirá con lo que se merece. Dios es Poderoso, Dueño de la retribución.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@dcclxv{Es permitido [durante la peregrinación comer de] lo que pesquen en el mar, para los residentes y los viajeros. Pero está prohibida la caza mientras estén consagrados a la peregrinación. Tengan temor de Dios, ante Quien serán congregados [para ser juzgados por sus obras].\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@dcclxvi{Dios designó a la Ka‘bah, la Casa Sagrada, como un lugar de devoción y adoración. Los meses sagrados, las ofrendas y los animales marcados para ofrenda son sagrados. Esto para que sepan que Dios conoce cuanto hay en los cielos y la Tierra, y que Dios todo lo sabe.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@dcclxvii{Sepan que Dios es severo en el castigo, pero también es Perdonador, Misericordioso.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@dcclxviii{El Mensajero solo tiene la obligación de transmitir el Mensaje, Dios es Quien sabe lo que manifiestan y lo que ocultan.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@dcclxix{Di: ``No se puede equiparar lo malo y lo bueno, así que no te dejes engañar por la abundancia de lo malo. Tengan temor de Dios, ¡oh, gente que reflexiona!, que así tendrán éxito".\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@dcclxx{¡Oh, creyentes! No ahonden en asuntos que si fueran revelados [en forma de ley] les causarían dificultad [en la práctica de la religión]. Pero si los indagan cuando hayan sido revelados en el Corán, les serán explicados. Dios los perdona por sus indagaciones [fuera de lugar] porque es Perdonador, Tolerante.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@dcclxxi{Estas mismas indagaciones fueron hechas por otros pueblos en la antigüedad, y [cuando les fueron reveladas como leyes] las rechazaron.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@dcclxxii{No es prescripción de Dios que ciertas clases de ganado sean marcadas por superstición y costumbres paganas, como la camella que se consagra a los ídolos por lo que no debe ser ordeñada, ni la que también es consagrada a los ídolos y se la deja pastar libremente, ni la oveja que si en su séptimo parto pare un macho y una hembra se la consagra a los ídolos y no se la debe sacrificar, ni el camello semental que luego de servir diez veces se consagra a los ídolos por lo que no se lo utiliza para montura. Son los paganos supersticiosos quienes han inventaron estos ritos, mintiendo acerca de Dios. La mayoría de ellos no usa el razonamiento.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@dcclxxiii{Cuando se les dice: ``Tomen lo que Dios ha revelado y sigan al Mensajero", dicen: ``Nos basta con lo que nos transmitieron nuestros padres", a pesar de que sus padres eran ignorantes y no estaban bien encaminados.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@dcclxxiv{¡Oh, creyentes! Ustedes son responsables por sus almas en el cumplimento de sus deberes para con Dios. Nos les perjudica quien elige el camino del desvío si ustedes están en el camino recto. A Dios regresarán y Él les informará el resultado de sus obras.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@dcclxxv{¡Oh, creyentes! Ante la inminencia de la muerte deben declarar su testamento ante dos testigos confiables conocidos, o bien dos extraños si están de viaje y les sobreviene la [agonía de la] muerte. Si dudan [del testimonio] de los testigos, reténganlos hasta después de la oración para que juren por Dios: ``No pretendemos, con nuestro testimonio, ningún provecho personal ni beneficiar a un pariente. No ocultamos el testimonio que Dios nos ordenó declarar, porque de hacerlo nos contaríamos entre los pecadores".\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@dcclxxvi{Si se descubre que cometieron un pecado [al mentir sobre los términos del testamento], otros dos los sustituirán, y éstos serán [elegidos] de entre los parientes con más derecho [a su herencia] y jurarán por Dios: ``Nuestro testimonio es más digno de ser creído que el de ellos y no los agredimos [al acusarlos de falso testimonio], porque de hacerlo nos contaríamos entre los injustos".\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@dcclxxvii{Esto es lo más adecuado para lograr que presten un testimonio exacto o que teman que se refuten su juramento con un juramento contrario. Tengan temor de Dios y obedezcan [Sus leyes], porque Dios no guía a los perversos.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@dcclxxviii{[Teman] el día que Dios reúna a los Mensajeros y diga: ``¿Cómo respondieron [aquellos a quienes fueron enviados]?" Dirán: ``No sabemos, Tú eres Quien conoce lo oculto".\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@dcclxxix{Dios dirá: ``¡Oh, Jesús hijo de María! Recuerda las bendiciones que te concedí a ti y a tu madre, cuando te fortalecí con el Espíritu Santo para que pudieras hablar a la gente desde la cuna y de adulto, y te enseñé la escritura, la sabiduría, la Tora y el Evangelio. Cuando modelaste con arcilla un pájaro con Mi anuencia, y luego soplaste en él y se convirtió en un pájaro real con Mi permiso, y curaste al ciego de nacimiento y al leproso con Mi permiso, y resucitaste al muerto con Mi permiso. Te protegí de los Hijos de Israel cuando te presentaste ante ellos con las evidencias, y los que negaron la verdad dijeron: ``Esto es hechicería pura".\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@dcclxxx{[Recuerda] cuando inspiré a los discípulos para que creyeran en Mí y en Mi Mensajero. Ellos dijeron: ``¡Creemos! Sé testigo de que somos musulmanes [en sumisión a Dios]".\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@dcclxxxi{Cuando los discípulos de Jesús dijeron: ``¡Oh, Jesús hijo de María! ¿Tu Señor podría hacernos descender del cielo una mesa servida?" Dijo: ``Tengan temor de Dios, si es que son verdaderos creyentes".\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@dcclxxxii{Dijeron [los discípulos]: ``Queremos comer de ella para que nuestros corazones se sosieguen, saber [con certeza] que nos has dicho la verdad y dar testimonio de ella".\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@dcclxxxiii{Jesús hijo de María rezó: ``¡Oh Dios, nuestro señor! Haz que descienda una mesa servida del cielo que sea para nosotros un acontecimiento festivo, tanto para los primeros como para los últimos [de nuestra nación], y un milagro proveniente de Ti. Concédenos Tu favor, pues Tú eres el mejor de los sustentadores".\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@dcclxxxiv{Respondió Dios: ``La haré descender; pero si después alguno de ustedes reniega [de su fe], lo castigaré como no he castigado a nadie en el mundo".\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@dcclxxxv{[El Día del Juicio Final] Dios dirá: ``¡Oh, Jesús hijo de María! ¿Acaso tú dijiste a la gente: ``Adórenme a mí y a mi madre como divinidades junto con Dios?" Dirá [Jesús]: ``¡Glorificado seas! No me corresponde decir algo a lo que no tengo derecho. Si lo hubiera dicho Tú lo sabrías. Tú conoces lo que encierra mi alma, mientras que yo ignoro lo que encierra la Tuya. Tú eres Quien conoce lo oculto.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@dcclxxxvi{No les transmití sino lo que Tú me has ordenado: ‘Adoren solo a Dios, mi Señor y el suyo’. Fui testigo de sus acciones mientras estuve con ellos; pero después de que me elevaste, fuiste Tú Quien los vigiló. Tú eres testigo de todas las cosas.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@dcclxxxvii{Si los castigas, lo haces con derecho, pues son Tus siervos; pero si los perdonas, Tú eres el Poderoso, el Sabio".\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@dcclxxxviii{Dios dirá [el Día del Juicio]: ``Este es el día en que los sinceros disfrutarán su sinceridad. Tendrán jardines por donde corren ríos, en los que estarán por toda la eternidad. Dios estará complacido de ellos y ellos con Él. Esa será la bienaventuranza.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@dcclxxxix{A Dios pertenece el reino de los cielos y de la tierra, y cuanto existe entre ambos. Él tiene poder sobre todas las cosas.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@dccxc{\basmalahes Alabado sea Dios que creó los cielos y la Tierra, y originó las tinieblas y la luz. Pero los que se niegan a creer igualan [sus ídolos] a su Señor.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@dccxci{Él es Quien los creó de barro y luego decretó el término de cada vida, y también el término que solo Él conoce [sobre el fin del mundo], pero a pesar de eso todavía están indecisos.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@dccxcii{Él es Al-lah, el adorado en los cielos y en la Tierra. Sabe lo que esconden y lo que manifiestan, y sabe lo que obtienen [con sus obras].\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@dccxciii{Cada vez que les llega una prueba de su Señor, se niegan a creer en ella.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@dccxciv{Antes ya habían desmentido la Verdad cuando les llegó, pero ya verán el resultado de sus burlas.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@dccxcv{¿Acaso no ven cuántas generaciones anteriores a ellos he destruido? Les había concedido a ellos más poder en la Tierra que el que ustedes tienen, pero hice que las lluvias del cielo se desplomaran sobre ellos y los ríos los anegaron bajo sus pies, y les hice perecer a causa de sus pecados, e hice surgir después de ellos nuevas generaciones.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@dccxcvi{Y aunque te hubiera hecho descender un libro escrito en un pergamino y lo hubieran podido palpar con sus manos, los que se niegan a creer habrían dicho: ``Esto no es más que hechicería".\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@dccxcvii{Ellos dicen: ``¿Por qué no hizo descender un ángel junto a él?" Pero si hubiese enviado un ángel el asunto habría quedado decidido, y no se les habría dado ningún plazo de espera [para creer].\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@dccxcviii{Y si hubiera enviado a un ángel [en lugar de un hombre], le habría dado apariencia humana y estarían en una confusión similar a la que tienen contigo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@dccxcix{Pero también se burlaron de otros Mensajeros anteriores a ti en la antigüedad. A los que se burlaron, les llegó el castigo del que se habían burlado.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@dccc{Diles [¡oh, Mujámmad!]: ``Viajen por el mundo y reflexionen sobre cuál fue el destino de los que desmintieron [a los Mensajeros de Dios]".\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@dccci{Pregúntales [a los idólatras]: ``¿A quién pertenece cuanto hay en los cielos y en la Tierra?" Diles: ``A Dios". Él ha prescrito para Sí mismo la misericordia. Él los reunirá el Día indubitable de la Resurrección, en el que solo serán desventurados quienes se hayan negado a creer.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@dcccii{A Él pertenece lo que habita la noche y el día. Él todo lo oye, todo lo sabe.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@dccciii{Diles: ``¿Acaso voy a tomar como protector a otro en lugar de Dios, [siendo que Él es el] Originador de los cielos y la de Tierra, y Quien alimenta y no necesita ser alimentado?" Di: ``Se me ha ordenado ser el primero en entregarse a la voluntad de Dios. No sean ustedes de los que dedican actos de adoración a otros [además de Dios]".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@dccciv{Di: ``Temo el castigo de un día terrible si desobedezco a mi Señor".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@dcccv{Quien sea eximido [del castigo] ese día será porque Dios se apiadó de él, y ese será un triunfo evidente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@dcccvi{Si Dios te aflige con una desgracia, nadie excepto Él podrá librarte de ella. Pero si te agracia con una bendición, Él tiene poder sobre todas las cosas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@dcccvii{Él tiene total dominio sobre Sus siervos, y Él es el Sabio, el Conocedor.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@dcccviii{Pregúntales: ``¿Quién es el testigo más creíble?" Di: ``Dios es testigo [de la diferencia] entre ustedes y yo. Me ha sido revelado este Corán para advertirles con él a todos aquellos que les llegue el Mensaje. ¿Acaso darían testimonio de que existen otras divinidades junto con Dios?" Diles: ``Yo no lo haré". Diles: ``Él es la única divinidad, y soy inocente de lo que ustedes Le asocian cometiendo idolatría".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@dcccix{Aquellos a quienes les envié anteriormente el Libro [judíos y cristianos] reconocen [la profecía de Mujámmad] como reconocen a sus propios hijos, pero los que se han desviado a sí mismos se niegan a creer.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@dcccx{¿Acaso existe alguien más injusto que quien atribuye a Dios sus falsos inventos, o quien desmiente Su Palabra? Los injustos jamás prosperarán.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@dcccxi{El día que los resucitemos a todos y le sea dicho a quienes asociaron divinidades a Dios: ``¿Dónde están ahora aquellos que en sus fantasías eran socios de Dios en la divinidad?"\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@dcccxii{Entonces en su confusión dirán: ``¡Juramos por Dios, nuestro Señor, que no Le atribuíamos divinidad a nada junto con Él!"\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@dcccxiii{Mira cómo se desmienten a sí mismos, finalmente los desvió aquello que inventaron.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@dcccxiv{Hay entre ellos quienes [parece] que te prestan atención [cuando recitas el Corán], pero [a causa de su incredulidad] he puesto sobre sus corazones un velo y he ensordecido sus oídos, por ello no pueden comprenderlo. Aunque vieran toda clase de signos, no creerían. Se presentan ante ti solo para debatirte, y dicen: ``Esto no es más que una fábula de los antiguos".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@dcccxv{Le prohíben a la gente [seguir el mensaje] y se apartan ellos mismos, pero sin darse cuenta solo se perjudican a sí mismos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@dcccxvi{Si los vieras cuando sean detenidos ante el Fuego y digan: ``¡Ojalá pudiéramos volver [a la vida mundanal], para no desmentir la palabra de nuestro Señor y ser de los creyentes!"\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@dcccxvii{¡Pero no! Dirán eso porque saldrá a la luz lo que antes ocultaban. Y si se les diera la oportunidad de regresar [a la vida mundanal] volverían a [cometer] lo que se les había prohibido [asociándole divinidades a Dios]. La verdad es que son mentirosos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@dcccxviii{Y dicen: ``No hay vida después de la muerte, jamás seremos resucitados".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@dcccxix{Si los vieras cuando sean llevados ante su Señor y se les diga: ``¿Acaso no es ahora verdad [la Resurrección y el Juicio Final]?" Responderán: ``¡Sí, por Dios!" Pero entonces se les dirá: ``Sufran el castigo por haber negado la verdad".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@dcccxx{Los desventurados serán quienes hayan desmentido el encuentro con Dios. Y cuando les llegue por sorpresa la hora [de la Resurrección] dirán: ``¡Qué desventurados! ¡Cómo desperdiciamos nuestra vida!" Cargarán con sus pecados sobre sus espaldas. ¡Con que pésima carga irán [al Juicio]!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@dcccxxi{Esta vida mundanal no es más que juego y disfrute pasajero, pero la otra vida es mejor para los piadosos. ¿Acaso no van a razonar?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@dcccxxii{Sé muy bien que te apena lo que dicen [sobre ti]. Pero no es a ti a quien desmienten, sino que lo que los injustos rechazan es la palabra de Dios.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@dcccxxiii{Antes de ti [también] fueron desmentidos otros Mensajeros. Ellos soportaron con paciencia que los desmintieran y hostigaran hasta que les llegó Mi auxilio. Porque no hay poder que pueda alterar [el cumplimiento de] las promesas de Dios. Te he relatado las historias de los Mensajeros [para consolar tu corazón].\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@dcccxxiv{Te entristece que se nieguen a creer, pues aunque buscaras una entrada a [las profundidades de] la Tierra o una escalera al cielo para traer una señal, no podrías hacerlos creer. Si Dios hubiese querido los habría guiado a todos. No te deprimas a causa de los que no creen.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@dcccxxv{Solo responden [a tu llamado] los que escuchan, pero a los muertos [de corazón] Dios los resucitará y ante Él comparecerán.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@dcccxxvi{Dijeron: ``¿Por qué su Señor no le ha concedido un milagro?" Diles [¡oh, Mujámmad!]: ``Dios es capaz de enviar un milagro". Pero la mayoría de ellos no son conscientes [que Dios envía Sus milagros por una sabiduría].\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@dcccxxvii{[Y es un milagro de la creación que] no hay criatura que camine en la tierra o vuele con sus dos alas que no forme una comunidad igual que ustedes. No he omitido nada en el Libro. Todos [los seres humanos] serán resucitados ante su Señor [el Día del Juicio].\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@dcccxxviii{Quienes desmienten Mis milagros son sordos, mudos y caminan en las tinieblas [de la incredulidad]. Dios extravía a quien quiere, y a quien quiere lo conduce por el sendero recto.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@dcccxxix{Diles: ``Si les llegara el castigo de Dios o los sorprendiera la Hora [del comienzo del fin del mundo], ¿invocarían a otro en lugar de Dios? Respondan con sinceridad".\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@dcccxxx{Es Él a Quien invocan cuando los azota un mal, ahí se olvidan de las divinidades que Le asocian. Y Dios, si Él quiere, es Quien puede librarlos del mal.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@dcccxxxi{Ya había enviado Mensajeros anteriores a ti a otras comunidades, pero [por haberles desmentido] las castigué con miseria y enfermedades, para que así fueran humildes.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@dcccxxxii{Hubiera sido mejor para ellos mostrar humildad e invocarme cuando les llegó Mi castigo. Pero sus corazones se endurecieron y el demonio les hizo parecer bello lo que hacían.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@dcccxxxiii{Cuando olvidaron lo que les ocurrió a quienes los precedieron [la miseria y las enfermedades que los azotaron] les abrí las puertas de la fortuna, y cuando estuvieron felices con lo que tenían los sorprendí con el castigo, y fueron presa de la desesperación.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@dcccxxxiv{Así fueron destruidos los injustos. ¡Alabado sea Dios, Señor del universo!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@dcccxxxv{Pregúntales: ``Si Dios los privara de la audición y la visión, y sellara sus corazones, ¿qué otra divinidad en lugar de Dios se los podría devolver?" Observa cómo les evidencio los signos, pero aun así se apartan con desdén.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@dcccxxxvi{Pregúntales: ``Si el castigo de Dios llegara repentina o gradualmente, ¿acaso no serían destruidos los injustos?"\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@dcccxxxvii{He enviado a los Mensajeros para que albricien y adviertan a la gente. Quienes crean y se enmienden no tendrán razón para temer ni estar tristes [el Día del Juicio].\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@dcccxxxviii{Pero a quienes desmientan Mis signos, los alcanzará el castigo por su perversidad.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@dcccxxxix{Diles: ``No les digo que poseo los tesoros de Dios ni que conozco lo oculto, ni tampoco afirmo ser un ángel, solo sigo lo que me fue revelado". Diles: ``¿Acaso pueden equipararse el ciego y el vidente? ¿Acaso no van a reflexionar?"\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@dcccxl{Advierte con el Corán a aquellos que tienen temor del día en que serán congregados ante su Señor, cuando no tendrán fuera de Él protector ni intercesor alguno, para que así tengan temor de Dios.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@dcccxli{No rechaces a quienes invocan a su Señor por la mañana y por la tarde anhelando Su rostro. A ti no te corresponde pedirles cuentas de sus obras ni a ellos tampoco pedirte cuenta de las tuyas, porque serías de los injustos.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@dcccxlii{Así es como los puse a prueba unos con otros, para que [opulentos y arrogantes] dijesen: ``¿Son estos [pobres insignificantes] a quienes Dios ha agraciado de entre nosotros?" Pero Dios sabe mejor que nadie quiénes son los agradecidos.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@dcccxliii{Cuando se presenten ante ti aquellos que creen en Mis signos, diles: ``¡La paz sea con ustedes! Su Señor ha prescrito para Sí mismo la misericordia. Quien cometa una falta por ignorancia, y luego se arrepienta y enmiende, sepa que Dios es Absolvedor, Misericordioso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@dcccxliv{Así es como evidencio los signos para que puedan distinguir claramente el camino de los pecadores.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@dcccxlv{Diles: ``Me fue prohibido adorar aquello que invocan en lugar de Dios". Diles: ``No voy a ceder a sus pasiones, porque [de hacerlo] me extraviaría y no sería de los bien guiados".\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@dcccxlvi{Diles: ``Yo sigo la palabra que proviene de mi Señor, que ustedes desmienten. Lo que piden que suceda pronto, no está en mis manos. La decisión pertenece solo a Dios. Él juzga con la verdad y es el mejor de los jueces".\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@dcccxlvii{Diles: ``Si estuviera en mis manos acelerar lo que ustedes me piden, ya todo estaría juzgado entre ustedes y yo. Pero Dios conoce mejor que nadie quiénes son los injustos.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@dcccxlviii{Él posee las llaves de lo oculto y nadie más que Él las conoce. Él sabe lo que hay en la costa y en el mar. No hay hoja de árbol que caiga sin que Él lo sepa, ni grano en el seno de la tierra, o algo que esté verde o seco, sin que se encuentre registrado en un libro evidente.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@dcccxlix{Él es Quien toma sus almas por la noche, sabe lo que han hecho durante el día, y les devuelve el alma al despertar, hasta que se cumpla el plazo prefijado para su muerte. Luego volverán a Él y les informará sobre lo que hacían".\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@dcccl{Él tiene total dominio sobre Sus siervos. Les envía ángeles custodios hasta que, cuando les llega la muerte, los ángeles toman sus almas y no pasan por alto a nadie.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@dcccli{Luego serán devueltos a Dios, su verdadero Señor. ¿Acaso no es Él Quien los va a juzgar? ¡Él es el más rápido en ajustar cuentas!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@dccclii{Pregúntales: ``¿Quién podrá salvarlos de las tinieblas de la tierra y del mar [cuando viajan] y Lo invocan en público y en secreto, diciendo: ‘Si nos salvas de esta, estaremos agradecidos’?"\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@dcccliii{Diles: ``Solo Dios los puede librar de esas situaciones y de toda otra aflicción. Pero a pesar de eso, luego [cuando se sienten a salvo] vuelven a adorar otras divinidades junto a Él".\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@dcccliv{Diles: ``Él tiene el poder para enviarles un castigo que caiga del cielo o salga de la tierra bajo sus pies, o puede dividirlos en partidos y hacer que se persigan unos a otros con violencia". Observa cómo evidencio los signos para que entiendan.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@dccclv{Pero tu pueblo lo ha negado, siendo que es la verdad. Diles: ``Yo no soy responsable de lo que hacen".\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@dccclvi{Todo lo que he profetizado ocurrirá a su debido tiempo. ¡Ya lo verán!\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@dccclvii{Cuando veas a los que se burlan de Mis signos, aléjate de ellos hasta que cambien de conversación. Pero si el demonio te hace olvidar, cuando lo recuerdes no permanezcas reunido con los injustos.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@dccclviii{A los que tienen temor de Dios no les corresponde pedirles cuentas [a quienes se burlan] por lo que hacen, pero sí exhortarlos [llamándolos a la reflexión] para que tengan temor de Dios.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@dccclix{Pero apártate de quienes toman su vida y sus creencias a la ligera y se dedican a la diversión seducidos por los gozos transitorios de esta vida. Exhorta con el Corán para que comprendan que toda alma responderá por sus obras, y que nadie tendrá fuera de Dios protector ni intercesor. Y aunque ofrezcan toda clase de rescate [para salvarse del castigo] no se les aceptará. Esos serán quienes sufrirán las consecuencias por lo que cometieron, donde se les dará de beber un líquido hirviendo, y tendrán un castigo doloroso por haber negado la verdad.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@dccclx{Di: ``¿Acaso debemos invocar en lugar de Dios algo que no puede beneficiarnos ni perjudicarnos? ¿Debemos dar marcha atrás luego de que Dios nos ha guiado? Seríamos como aquel a quien los demonios han seducido y camina desorientado por las pasiones terrenales, a pesar de tener amigos que lo llaman a la guía diciéndole: ‘Ven con nosotros’." Di: ``La guía de Dios es la verdadera guía, y nos ha sido ordenado entregarnos libremente al Señor del universo,\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@dccclxi{hacer la oración y tener temor de Él, porque es ante Él que seremos resucitados".\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@dccclxii{Él es Quien creó el cosmos y el planeta Tierra con un fin justo y verdadero. En cualquier momento que diga: ``¡Sé!", es. Su palabra es la Verdad. Suya será la soberanía el día que se sople la trompeta [para dar comienzo a la resurrección]. Él es el conocedor de lo oculto y de lo manifiesto, Él es el Sabio y el Conocedor.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@dccclxiii{Y recuerda cuando Abraham le dijo a su padre Ázar: ``¿Tomas a los ídolos por divinidades? Creo que tú y tu pueblo están en un claro extravío".\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@dccclxiv{Así fue que le mostré a Abraham los milagros de los cielos y de la Tierra, para que fuera de los que creen con certeza.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@dccclxv{Al llegar la noche vio una estrella y le dijo [a su pueblo]: ``¡Este es mi Señor!" Pero cuando desapareció dijo: ``No adoro lo que se ausenta".\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@dccclxvi{Luego, al ver la Luna aparecer dijo: ``¡Este es mi Señor!" Pero cuando desapareció dijo: ``Si no me guía mi Señor, seré de los pueblos extraviados".\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@dccclxvii{Y cuando vio salir el Sol dijo: ``¡Este es mi Señor, este es el más grande [de los astros]!" Pero cuando desapareció dijo: ``¡Pueblo mío! Yo estoy libre de asociarle, como ustedes, divinidades a Dios.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@dccclxviii{Me consagro a Quien creó los cielos y la Tierra, soy monoteísta puro. No soy de los que Le asocian divinidades a Dios [en la adoración]".\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@dccclxix{Pero su pueblo lo desmintió. Él les dijo: ``¿Me discuten acerca de Dios siendo que Él me ha guiado? No tengo miedo a sus ídolos, [solo podrá ocurrirme] lo que mi Señor quiera. Mi Señor abarca con Su conocimiento todas las cosas. ¿No van a recapacitar?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@dccclxx{¿Por qué iba a tener temor de sus ídolos siendo que ustedes no tienen temor de Dios y Le asocian divinidades sin que se les haya revelado ningún fundamento para ello? ¿Quién entre ustedes y yo tiene más motivo para sentirse seguro [de Dios]? Respondan, si es que saben".\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@dccclxxi{Quienes crean y no desacrediten su fe cometiendo la injusticia de asociar divinidades a Dios, estarán a salvo, porque son los bien guiados.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@dccclxxii{Esa es Mi prueba, la que concedí a Abraham para que argumentara contra su pueblo. Así elevo la condición de quien quiero; tu Señor es Sabio, Conocedor.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@dccclxxiii{Lo agracié [a Abraham] con Isaac y [a este con] Jacob, a quienes concedí la guía. A Noé también lo había guiado en la antigüedad. Y de sus descendientes [también guie] a David, Salomón, Job, José, Moisés y Aarón. Así es como recompenso a los que hacen el bien.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@dccclxxiv{Y a Zacarías, Juan, Jesús y Elías; todos ellos se contaron entre los piadosos.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@dccclxxv{Y a Ismael, Eliseo, Jonás y Lot; a todos ellos los distinguí entre la gente.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@dccclxxvi{También distinguí a algunos de sus antepasados, descendientes y hermanos. Los elegí y los guie por el sendero recto.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@dccclxxvii{Esa es la guía de Dios, guía con ella a quien Él quiere de entre Sus siervos. Pero si Le hubieran asociado divinidades [en la adoración] a Dios, todas sus obras no habrían valido de nada.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@dccclxxviii{A ellos les revelé los Libros y los agracié con la sabiduría y la profecía. Pero si algunos no creen, [sepan que] he enviado este mensaje a otro pueblo que no dejará de creer en él.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@dccclxxix{Ellos son los que Dios ha guiado, sigue su ejemplo. Y diles [a los que te rechazan]: ``No les pido remuneración alguna a cambio, este es un Mensaje para todo el universo".\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@dccclxxx{[Algunas personas] No valoraron ni enaltecieron a Dios como Él merece, y dijeron: ``Dios no ha revelado nada a ningún hombre". Pregúntales: ``¿Quién ha revelado el Libro que trajo Moisés como luz y guía para la gente, el cual copian en pergaminos y dan a conocer en parte, pero del que ocultan una gran parte? Se les enseñó allí lo que ni ustedes ni sus padres sabían". Di: ``Fue Dios [Quien lo reveló]". Luego déjales que sigan jugando con sus palabrerías.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@dccclxxxi{Este es un Libro bendito que he revelado en confirmación de los Libros anteriores, y para que adviertas a la Madre de las Ciudades y a quienes viven en sus alrededores [el resto de la humanidad]. Los que creen en la otra vida creen en él y observan la oración.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@dccclxxxii{No hay nadie más injusto que quien inventa mentiras acerca de Dios o dice: ``He recibido una revelación", cuando en realidad no se le ha revelado nada, o dice: ``Revelaré algo similar a lo que Dios ha revelado". Si pudieras ver [lo terrible que será] cuando los opresores estén en la agonía de su muerte y los ángeles extiendan las manos [para atormentarlos, y les digan]: ``Entreguen sus almas. Hoy se les retribuirá con un castigo denigrante por haber inventado mentiras acerca de Dios y por despreciar con arrogancia Su mensaje".\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@dccclxxxiii{Han venido ante Mí solos, tal como los creé por primera vez. Han dejado atrás [en la vida mundanal] lo que les concedí [de bienes materiales], y no veo junto a ustedes los intercesores que pretendían eran socios [de Dios en la divinidad]. Se ha roto su vínculo [con ellos] y desvanecido aquello que creían.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@dccclxxxiv{Dios hace que germinen el grano y la semilla, y hace surgir lo vivo de lo muerto y lo muerto de lo vivo. ¡Ese es Dios! ¡Cómo pueden desviarse tanto [de la verdad]!\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@dccclxxxv{Hace que el alba despunte, dispuso que la noche sea para descansar, e hizo que el Sol y la Luna sigan una órbita precisa para que puedan llevar el cómputo [del tiempo]. Esto fue establecido por el Poderoso, el que todo lo sabe.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@dccclxxxvi{Él es Quien ha creado las estrellas para que puedan guiarse por ellas en la oscuridad de la tierra y del mar. Dios ha evidenciado los signos para quienes reflexionan.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@dccclxxxvii{Y Él es Quien los ha creado [a partir] de un solo ser, y les ha dado un lugar de estancia y otro de destino. Así ha evidenciado los signos para quienes comprenden.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@dccclxxxviii{He hecho descender agua del cielo con la cual hago brotar toda clase de vegetación, y de ella resulta la cosecha de la cual saco semillas. De los brotes de la palmera hago salir racimos de dátiles al alcance de la mano. Y [también hago brotar] plantaciones de vides, olivos y granados, [todos de aspecto] similar pero [de frutos con sabores] diferentes. Observen cómo es su fruto cuando aparece y luego cuando madura, en todo ello hay signos para quienes creen.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@dccclxxxix{[Pero los idólatras] asocian a los yinn con Dios [en la divinidad], siendo que Él es Quien ha creado [a los yinn]. Y Le atribuyen [a Dios], en su ignorancia, hijos e hijas. ¡Glorificado y Exaltado sea! Dios está por encima de ser como Lo describen.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@dcccxc{Originador de los cielos y de la Tierra. ¿Cómo podría tener un hijo si no tiene compañera y Él es Quien ha creado todo? Él tiene conocimiento de todas las cosas.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@dcccxci{¡Ese es Dios, su Señor! No hay más divinidad que Él, Creador de todas las cosas. Adórenlo solo a Él. Él es el Protector de todas las cosas.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@dcccxcii{La vista [de los seres humanos] no puede abarcarlo, pero Él sí ve [a todos Sus siervos]. Él es el Sutil y el Conocedor.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@dcccxciii{Han recibido evidencias de su Señor. Quien las comprenda será en beneficio propio, pero quien se enceguezca lo hará en detrimento propio. [Diles:] ``Yo no soy su custodio".\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@dcccxciv{Así es como evidencio los signos, aunque [los que se niegan a creer] dicen: ``Lo has aprendido de otros". Pero lo hago claro para la gente que tiene conocimiento.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@dcccxcv{Sigue lo que te ha sido revelado por tu Señor, no hay más divinidad que Él, y apártate de los idólatras que dedican actos de adoración a otros además de Dios.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@dcccxcvi{Si Dios hubiera querido no Le hubieran asociado nada. Pero no eres responsable de sus actos ni eres su protector.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@dcccxcvii{Pero no insulten a quienes son invocados en lugar de Dios, porque insultarán a Dios con hostilidad sin tener real conocimiento [acerca de lo que dicen], pues he hecho que a cada pueblo le parezcan buenas sus obras, pero finalmente todos comparecerán ante su Señor, Quien les informará lo que hacían.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@dcccxcviii{[Los que se niegan a creer] juran seriamente por Dios que si se cumpliera uno de los milagros [que solicitaron] creerían. Diles: ``Solo Dios dispone de los milagros". ¿Y qué les hará entender, que aun cuando se cumpliera [el milagro que pedían] no creerían?\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@dcccxcix{Desviaré sus corazones y sus ojos [de la verdad], ya que se negaron a creer desde la primera vez. Los dejaré vagar ciegos en su extravío.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@cm{Aunque les hubiera enviado ángeles o hecho que los muertos les hablaran, o hubiera reunido ante ellos a todas las naciones, no habrían creído a menos que Dios lo hubiera querido. Sin embargo, la mayoría de ellos lo ignora.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@cmi{Todos los Profetas tuvieron enemigos que eran demonios de entre los seres humanos y los yinn, que se susurraban mutuamente palabras adornadas con seducción. Pero si tu Señor hubiera querido no lo habrían hecho. Apártate de ellos y sus mentiras.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@cmii{Para que los corazones de quienes no creen en la otra vida se inclinen hacia esos engaños, para que se complazcan de eso y así obtengan su merecido.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@cmiii{¿Acaso debo buscar otro juez en lugar de Dios, siendo que Él es Quien ha revelado el Libro donde se detallan todas las cosas? Aquellos a quienes les concedí el Libro anteriormente saben que el Corán ha sido revelado por tu Señor con la Verdad. No seas de los indecisos.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@cmiv{La Palabra de tu Señor es de una veracidad y justicia absolutas. Nadie puede alterar la Palabra de Dios, Él todo lo oye, todo lo sabe.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@cmv{Si obedecieras a la mayoría [de las personas] en la Tierra, te extraviarían del sendero de Dios, porque siguen solo conjeturas y no hacen más que especular.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@cmvi{Tu Señor bien sabe quién se extravía de Su camino y quiénes siguen la guía.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@cmvii{Coman de aquello sobre lo que se ha mencionado el nombre de Dios, si creen en Su mensaje.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@cmviii{¿Por qué no habrían de comer de aquello sobre lo que se ha mencionado el nombre de Dios, siendo que Él ya les ha detallado lo que les es prohibido [comer], salvo en caso de extrema necesidad? Muchos se extravían al seguir sus pasiones por ignorancia, pero Dios conoce mejor que nadie a los transgresores.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@cmix{Eviten el pecado, tanto en público como en privado. Quienes cometan pecados serán retribuidos por lo que hicieron.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@cmx{No coman sobre lo que no se ha mencionado el nombre de Dios, pues hacerlo es un pecado. Los demonios inspiran a sus aliados para que discutan con ustedes, pero si los siguen se contarán entre quienes les atribuyen divinidad a otros junto a Dios.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@cmxi{¿Acaso quien estaba muerto [de corazón] y le di vida [guiándolo], y le proporcioné una luz con la cual transita entre la gente, es igual a aquel que se encuentra entre tinieblas y no puede salir de ellas? Por eso es que a los que se niegan a creer les parece bueno lo que hacen.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@cmxii{De igual manera dispuse en cada ciudad que los peores criminales maquinaran intrigas [contra su propia gente]. Pero sin darse cuenta, lo único que logran con sus intrigas es causarse daño a sí mismos.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@cmxiii{Cuando se les presenta un milagro dicen: ``No creeremos hasta que se nos conceda lo mismo que les ha sido concedido a los Mensajeros de Dios". Pero Dios sabe bien en quién confiar Su Mensaje. Los criminales serán humillados ante Dios y castigados severamente a causa de sus intrigas.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@cmxiv{A quien Dios quiere guiar le abre el corazón para que acepte el Islam. En cambio, a quien Él quiere extraviar le oprime fuertemente el pecho como si subiera a un lugar muy elevado. Así es como Dios humilla a quienes se niegan a creer.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@cmxv{Este es el sendero recto de tu Señor. He hecho claro el mensaje para quienes reflexionan.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@cmxvi{Ellos tendrán una morada de paz junto a su Señor, Quien es su Protector, como recompensa por sus obras.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@cmxvii{El día que los congregue a todos y les diga: ``¡Oh, yinnes! Han extraviado a muchos seres humanos", y sus aliados de entre los seres humanos exclamen: ``¡Señor nuestro! Nos hemos beneficiado unos de otros y se ha cumplido el plazo que fijaste [para nuestra muerte]". Les dirá: ``El Fuego será su morada por toda la eternidad, salvo que Dios disponga otra cosa". Tu Señor es Sabio, todo lo sabe.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@cmxviii{Y así es como hago que los injustos sean unos aliados de otros.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@cmxix{[Y se les preguntará:] ``¡Oh, comunidad de yinnes y de seres humanos! ¿Acaso no se les presentaron Mensajeros para transmitirles Mi mensaje y advertirles de este día?" Responderán: ``Sí, y atestiguamos en contra nuestra". Los sedujo la vida mundanal y atestiguarán en su propia contra que se negaron a creer.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@cmxx{Esto es porque tu Señor jamás destruiría un pueblo que haya obrado injustamente sin antes haberles advertido.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@cmxxi{Cada uno será retribuido conforme a lo que hizo, tu Señor no está desatento a lo que hacen.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@cmxxii{Tu Señor es Opulento y Misericordioso. Si quisiera, los exterminaría y los remplazaría, del mismo modo que los hizo surgir a ustedes como descendencia de otro pueblo.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@cmxxiii{Lo que se les ha prometido ocurrirá [con toda certeza], y no podrán escapar de ello.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@cmxxiv{Diles: ``¡Oh, pueblo mío! Obren como les plazca, que yo también obraré [pero acorde a lo que Dios ordena]. Pronto sabrán quién recibirá el mejor destino. Dios no concede el éxito a los opresores.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@cmxxv{Y destinaron para Dios una parte de la cosecha y del ganado, que Él mismo ha creado [y otra parte para sus ídolos], y decían: ``Esto es para Dios y esto para nuestros ídolos". Pero lo que ellos destinaban para sus ídolos no los acercaba a la complacencia de Dios, y lo que habían destinado para Dios, sí los acercaba más a sus ídolos. ¡Con qué mal criterio juzgaban!\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@cmxxvi{Así es como a muchos de los idólatras, sus falsas divinidades les hicieron creer que era bueno que mataran a sus propios hijos, para así llevarlos a la perdición y confundirles su religión. Pero si Dios hubiera querido no lo habrían hecho; aléjate de ellos y de sus mentiras.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@cmxxvii{Y decían, inventando: ``Este ganado y esta cosecha están consagrados [a los ídolos] y nadie, excepto quien nosotros queramos, puede comer de ello; y este otro ganado está consagrado y no puede usarse para la carga". Y también había otros ganados sobre los que no mencionaban el nombre de Dios [sino el de sus ídolos], pero todo era una mentira que atribuían a Dios. Pronto Él los castigará por las mentiras que inventaron.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@cmxxviii{Y decían: ``La cría que se encuentra en el vientre de estos ganados es exclusivamente para nuestros varones y está vedada para nuestras esposas. Pero si una de sus crías nace muerta, entonces ambos [hombres y mujeres] pueden comer de ella". Dios los castigará por sus mentiras, Él es Sabio, lo sabe todo.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@cmxxix{Están perdidos quienes maten a sus hijos por necedad e ignorancia, y prohíban lo que Dios les ha proveído como sustento, atribuyendo [esas prohibiciones] a Dios. Se han extraviado y no encuentran la guía.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@cmxxx{Él es Quien ha creado huertos, unos cultivados y otros silvestres, [y ha creado también] las palmeras, las plantas de diferentes frutos, los olivos y los granados, [todos de aspecto] similar pero distintos. Coman de sus frutos cuando maduren, pero el día de la cosecha den la parte que corresponde [a los pobres] y no derrochen, porque Dios no ama a los derrochadores.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@cmxxxi{De los ganados [Dios creó] algunos para la carga y otros para su consumo. Coman de lo que Dios les ha proveído y no sigan los pasos del demonio, porque él es su enemigo declarado.\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@cmxxxii{[Ellos alegan falsamente que] Ocho reses en parejas [están prohibidas]: del ovino dos y del cabrío dos. Pregúntales entonces: ``¿Qué les ha prohibido [Dios], los dos machos, las dos hembras, o lo que se encuentra en el vientre de las dos hembras? Fundamenten lo que afirman, si es que son sinceros".\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@cmxxxiii{Y de los camélidos dos y del bovino dos. Pregúntales: ``¿Qué les ha prohibido [Dios], los dos machos, las dos hembras, o lo que se encuentra en el vientre de las dos hembras? ¿Acaso estuvieron presentes cuando Dios les prescribió eso?" No hay nadie más injusto que aquél que inventa mentiras acerca de Dios sin fundamentos, para desviar a la gente. Dios no guía a los opresores.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@cmxxxiv{Di: ``No encuentro en lo que me ha sido revelado otra cosa que se prohíba comer excepto la carne del animal muerto por causa natural, la sangre derramada, la carne de cerdo porque es una inmundicia, y lo que haya sido ofrendado invocando otro nombre que no sea el de Dios, porque es un pecado. Pero quien [en caso de extrema necesidad] se vea forzado [a ingerir algo de lo vedado] sin intención de pecar o excederse, debe saber que tu Señor es Absolvedor, Misericordioso".\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@cmxxxv{A los que practican el judaísmo les prohibí los animales de pezuñas partidas, y la grasa de ganado bovino y ovino, excepto la que tengan en los lomos, en las entrañas o adheridas a los huesos. Así los retribuí por su maldad. Esto es en castigo a su rebeldía, y soy fiel a Mi promesa.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@cmxxxvi{Y si te desmienten diles: ``Su Señor es inmensamente Misericordioso, pero Su castigo caerá con toda certeza sobre los que se hunden en el pecado".\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@cmxxxvii{Quienes Le asociaron divinidades a Dios dirán: ``Si Dios hubiera querido no Le habríamos asociado nada y no habríamos vedado nada, ni nosotros ni nuestros padres". Así es como desmintieron quienes los precedieron, hasta que sufrieron Mi castigo. Pregúntales: ``¿Acaso tienen algún conocimiento que puedan presentar?" Solo siguen conjeturas, y no hacen más que especular.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@cmxxxviii{Di: ``Dios posee la Verdad absoluta, y si hubiera querido los habría guiado a todos".\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@cmxxxix{Di: ``Traigan a sus testigos, que atestiguan que Dios les ha prohibido [esas cosas]". Si atestiguan, no testifiques tú con ellos ni sigas las pasiones de quienes desmintieron Mi mensaje, no creen en la otra vida y asocian divinidades a su Señor.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@cmxl{Diles: ``Vengan, que les informaré lo que su Señor les ha prohibido: No deben asociarle nada, deben hacer el bien a sus padres, no matarán a sus hijos por temor a la pobreza, Yo me encargo de su sustento y el de ellos, no deben acercarse al pecado, ni en público ni en privado, y no matarán a nadie que Dios prohibió matar, salvo que sea con justo derecho. Esto es lo que les ha ordenado para que usen el razonamiento.\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@cmxli{No toquen los bienes del huérfano, a menos que sea para acrecentarlos, hasta que alcance la madurez. Deben medir y pesar con equidad. No impongo a nadie una carga mayor de la que puede soportar. Cuando hablen deben hablar con justicia, aunque sea en contra de un pariente. Deben cumplir sus compromisos con Dios. Esto es lo que les ha ordenado para que Lo recuerden.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@cmxlii{Este es mi sendero recto, síganlo. Pero no sigan otros caminos, porque si lo hacen, estos los dividirán y los desviarán de Su camino. Esto es lo que les ha ordenado para que tengan temor de Él".\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@cmxliii{También le he revelado el Libro a Moisés para completar Mi gracia sobre los que obran correctamente, y para que sirva de aclaración de todas las cosas, sea guía y misericordia, y para que creyeran en el encuentro con su Señor.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@cmxliv{Este es un Libro bendito que he revelado para que lo sigan, quizás así se les tenga misericordia.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@cmxlv{Y para que no digan: ``Solo dos comunidades en la antigüedad recibieron la revelación, pero ignorábamos sus enseñanzas".\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@cmxlvi{O digan: ``Si hubiéramos recibido la revelación, habríamos seguido la guía mejor que ellos". Pero ya les llegó de su Señor la evidencia [el Corán], como guía y misericordia. ¿Acaso hay alguien más injusto que quien desmiente los mensajes de Dios y se aparta de ellos? Retribuiré a quienes se apartan de Mi mensaje con el más severo castigo.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@cmxlvii{¿Acaso esperan que se presenten ante ellos los ángeles o su Señor mismo o se presente un signo de su Señor? El día que vean el signo de tu Señor, a ningún alma le servirá creer o arrepentirse si no lo ha hecho anteriormente. Diles: ``Sigan esperando, que nosotros también lo hacemos".\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@cmxlviii{Tú no eres responsable de quienes dividieron su religión y formaron sectas. Dios se hará cargo de ellos, y Él les hará saber lo que hicieron.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@cmxlix{Quienes realicen una buena obra serán recompensados como si hubieran hecho diez obras buenas. En cambio, la mala obra será computada como una sola, y nadie será tratado injustamente.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@cml{Diles: ``Mi Señor me ha guiado por el camino recto, que es el de la verdadera adoración y el de la religión monoteísta de Abraham, quien no era de los que asociaban divinidades a Dios".\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@cmli{Diles: ``Mi oración, mi ofrenda, mi vida y mi muerte pertenecen a Dios, Señor del universo,\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@cmlii{Quien no tiene iguales. Esto es lo que se me ha ordenado creer, y soy el primero en someterse a Dios".\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@cmliii{Diles: ``¿Acaso debería adorar a otro que no fuese Dios, cuando es Él el Creador de todo? Quien cometa un pecado lo hace en detrimento propio, y nadie cargará con los pecados ajenos. Finalmente volverán a su Señor, Quien les informará acerca de lo que solían discrepar.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@cmliv{Él es Quien los ha hecho responsables de la Tierra, y ha agraciado a unos más que a otros para probarlos con ello. Tu Señor es rápido en castigar, pero también es Absolvedor, Misericordioso".\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@cmlv{\basmalahes Álif. Lam. Mim. Sad.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@cmlvi{Éste es el Libro que te ha sido revelado, no tengas duda en tu corazón sobre ello, para que adviertas con él y como recuerdo para los creyentes.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@cmlvii{[Oh, creyentes] Sigan lo que les ha sido revelado por su Señor, y no sigan fuera de Él a ningún aliado-protector. ¡Qué poco reflexionan!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@cmlviii{Cuántas ciudades he destruido [en el pasado]. Mi castigo los azotó sorpresivamente mientras dormían por la noche o durante la siesta.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@cmlix{Cuando los alcanzó Mi castigo dijeron: ``Éramos de los que cometían injusticias".\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@cmlx{He de preguntar a los Mensajeros y a los pueblos donde fueron enviados,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@cmlxi{y les informaré acerca de todos sus actos con conocimiento, pues nunca estuve ausente.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@cmlxii{Ese día se pesarán las obras con la verdad. Aquellos cuyas [buenas] obras pesen más [en la balanza] serán los bienaventurados.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@cmlxiii{Pero aquellos cuyas [buenas] obras sean las livianas serán los perdedores, porque fueron injustos con Mis signos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@cmlxiv{Les he concedido poder en la Tierra y he dispuesto los medios para que vivan en ella. Pero, ¡qué poco agradecen!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@cmlxv{Creé [al ser humano] y le di forma [armoniosa]. Luego dije a los ángeles: ``¡Hagan una reverencia ante Adán!" Todos se prosternaron excepto el demonio, que se negó a obedecer.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@cmlxvi{[Dios] le preguntó: ``¿Qué te impidió prosternarte cuando te lo ordené?" Respondió: ``Yo soy superior a él, pues a mí me creaste de fuego, mientras que a él lo creaste del barro".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@cmlxvii{Dijo [Dios]: ``¡Sal de aquí! En este lugar no se permite la soberbia. ¡Vete, pues [a partir de ahora] serás de los humillados!"\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@cmlxviii{Dijo [el Demonio]: ``Permíteme vivir hasta el Día de la Resurrección".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@cmlxix{Dijo [Dios]: ``Serás de los que esperen [con vida hasta ese día]".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@cmlxx{Dijo [el Demonio]: ``Por haberme descarriado los acecharé para apartarlos de Tu sendero recto.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@cmlxxi{Los abordaré por delante, por detrás, por la derecha y por la izquierda; encontrarás que la mayoría de ellos no serán agradecidos".\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@cmlxxii{Dijo [Dios]: ``¡Sal de aquí degradado y despreciado! Llenaré el Infierno con todos aquellos que te sigan.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@cmlxxiii{¡Oh, Adán! Habita el Paraíso con tu esposa. Coman cuanto deseen de lo que hay en él, pero no se acerquen a este árbol, pues de hacerlo se contarían entre los injustos".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@cmlxxiv{Pero el demonio les susurró con el fin de que [desobedecieran a Dios y así] se les hiciera evidente lo que antes estaba oculto [de su desnudez] para ellos, diciéndoles: ``Su Señor les prohibió acercarse a este árbol para que no se conviertan en ángeles o en seres inmortales".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@cmlxxv{Y les juró: ``Yo solo soy un consejero [sincero]".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@cmlxxvi{Los sedujo con engaños. Cuando ambos comieron del árbol se les hizo manifiesta su desnudez y comenzaron a cubrirse con hojas del Jardín, entonces su Señor los llamó: ``¿No les había prohibido comer de este árbol? ¿No les había advertido que el demonio era su enemigo declarado?"\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@cmlxxvii{Ellos dijeron [arrepentidos]: ``¡Señor nuestro! Hemos sido injustos con nosotros mismos; si no nos perdonas y nos tienes misericordia, seremos de los perdidos".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@cmlxxviii{Dijo [Dios]: ``¡Desciendan [del Paraíso]! Serán enemigos unos de otros. En la Tierra tendrán morada y deleite por un tiempo".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@cmlxxix{Dijo [Dios]: ``En ella vivirán y morirán, y de ella serán resucitados".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@cmlxxx{¡Oh, hijos de Adán! Los he provisto con vestimentas para que cubran sus vergüenzas y para que se vistan con elegancia. Pero vestirse con la piedad es la mejor [vestimenta]. Eso es un signo de Dios para que puedan recapacitar.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@cmlxxxi{¡Oh, hijos de Adán! Que no los seduzca el demonio como lo hizo con sus padres [Adán y Eva] haciendo que salieran del Paraíso y fueran despojados de lo que los cubría. El demonio y sus secuaces los acechan desde donde no los ven. Hice que los demonios fueran aliados de los que se niegan a creer,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@cmlxxxii{que cuando cometen una obscenidad se excusan diciendo: ``Nuestros padres lo hacían y Dios así nos lo ordenó". Diles: ``Dios no ordena la inmoralidad. ¿Afirman sobre Dios algo que en realidad ignoran?"\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@cmlxxxiii{Diles: ``Mi Señor solo ordena la justicia, que se mantengan en adoración en las mezquitas, y que Lo invoquen solo a Él practicando sinceramente Su religión". Así como los creó [por primera vez] los hará volver [a la vida].\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@cmlxxxiv{Un grupo siguió la guía, pero otro grupo se confirmó en su extravío, porque tomaron a los demonios como aliados-protectores en vez de Dios, mientras creían estar en la guía [correcta].\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@cmlxxxv{¡Oh, hijos de Adán! Vistan con elegancia cuando acudan a las mezquitas. Coman y beban con mesura, porque Dios no ama a los derrochadores.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@cmlxxxvi{Diles: ``¿Quién les ha prohibido vestir con las prendas elegantes que Dios les ha concedido a Sus siervos y beneficiarse de todo lo bueno que Dios les ha proveído?" Diles: ``Pero de todo eso, el Día de la Resurrección, se beneficiarán exclusivamente quienes hayan sido creyentes durante la vida mundanal". Así es como aclaro Mis signos para un pueblo que comprende.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@cmlxxxvii{Diles: ``Lo que realmente ha prohibido mi Señor son las obscenidades, tanto en público como en privado, la maldad, la opresión sin causa, que Le asocien en la adoración y que afirmen acerca de Él lo que ignoran".\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@cmlxxxviii{Cada nación tiene un plazo determinado, y cuando éste se cumpla no podrán retrasarlo ni adelantarlo, ni por un instante.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@cmlxxxix{¡Oh, hijos de Adán! Cuando se les presenten Mensajeros que les transmitan Mis signos, tengan temor [de Dios] y rectifiquen [sus obras], que nada tendrán que temer ni estarán tristes [el Día del Juicio Final].\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@cmxc{Pero quienes desmientan Mis signos y tengan una actitud soberbia, esos serán la gente del Fuego, donde morarán por toda la eternidad.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@cmxci{¿Acaso hay alguien más injusto que quien inventa mentiras acerca de Dios o desmiente Sus signos? A ellos los alcanzará lo que estaba escrito [en la predestinación]. Cuando se les presenten Mis [ángeles] Enviados para tomar sus almas les dirán: ``¿Dónde están aquellos [ídolos] que invocaban en vez de Dios?" Ellos responderán: ``Nos han abandonado", y atestiguarán contra sí mismos haber sido incrédulos.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@cmxcii{Les dirá [Dios]: ``Entren al Infierno junto a las comunidades de seres humanos y yinnes que los precedieron". Cada vez que entre una comunidad, maldecirá a su hermana; y cuando todos hayan ingresado, dirán los últimos sobre los primeros: ``¡Señor nuestro! Ellos son quienes nos desviaron, duplícales el castigo del Fuego". Pero dirá [Dios]: ``A todos les será duplicado, aunque no lo sepan".\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@cmxciii{Los primeros dirán a los últimos: ``Ustedes no son mejores que nosotros", [pero Dios dirá a ambos grupos]: ``Sufran todos el castigo que merecen [por sus obras]".\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@cmxciv{A quienes hayan desmentido Mis signos con soberbia no se les abrirán las puertas del cielo ni entrarán en el Paraíso hasta que un camello pase por el ojo de una aguja. Así castigo a los pecadores.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@cmxcv{Ellos tendrán allí lechos envolventes de fuego. Así es como castigo a los que cometen injusticias.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@cmxcvi{Pero quienes hayan creído y realizado obras de bien, y a nadie le exijo una carga mayor a la que puede soportar, serán la gente del Paraíso donde morarán por toda la eternidad.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@cmxcvii{Purificaré sus corazones del rencor que hubiere entre ellos. Vivirán donde corren ríos y dirán [en agradecimiento]: ``¡Alabado sea Dios, Quien nos guió!, y no hubiéramos podido encaminarnos de no haber sido por Él. La promesa con la que vinieron los Mensajeros de nuestro Señor era verdad". Se les dirá: ``Éste es el Paraíso que han heredado [en recompensa] por lo que solían obrar".\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@cmxcviii{La gente del Paraíso dirá a la gente del Fuego: ``Hemos encontrado lo que nuestro Señor nos había prometido. ¿Acaso no están ustedes padeciendo el castigo que su Señor les había advertido?" Responderán: ``¡Sí!" Entonces se oirá a un pregonero decir: ``¡Qué la maldición de Dios pese sobre los opresores!",\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@cmxcix{Los que apartan [a la gente] del sendero de Dios, tratando de complicarlo, y desmienten el Día del Juicio.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@m{Entre ambos [grupos] habrá una separación, y en los lugares elevados habrá personas que serán reconocidas por su aspecto [por la gente del Paraíso y la gente del Infierno], y llamarán a la gente del Paraíso saludándolos: ``¡La paz sea con ustedes!" Ellos no han ingresado en él, pero están ansiosos por hacerlo.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mi{Cuando dirijan sus miradas hacia los habitantes del Fuego dirán: ``¡Señor nuestro! No nos juntes con la gente que cometió injusticias".\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mii{La gente de los lugares elevados llamarán a unas personas [habitantes del Fuego] que serán reconocidas por su aspecto, diciéndoles: ``De nada les valieron sus riquezas ni su soberbia.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@miii{Observen a quienes ustedes juraban que la misericordia de Dios no los alcanzaría, y [contrario a lo que creían] se les dijo: ‘Ingresen al Paraíso, donde no tendrán nada que temer ni sentirán tristezas’".\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@miv{La gente del Fuego implorará a la gente del Paraíso: ``Dennos un poco de agua o algo [para comer] de lo que Dios les ha proveído". Responderán: ``Dios ha vedado esas cosas a los que se negaron a creer".\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mv{Aquellos que tomaron su religión como juego y diversión, y les sedujo la vida mundanal, hoy los olvidaré así como ellos olvidaron que se encontrarían con este día, y por haber negado Mis signos.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mvi{Les envié el Libro, en el que detallé todas las cosas con sabiduría, como guía y misericordia para la gente que cree.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mvii{¿Acaso esperan que suceda lo que se les ha advertido [en el Libro]? El día que llegue [la advertencia] dirán quienes lo ignoraron: ``Reconocemos que los Mensajeros de nuestro Señor se presentaron con la Verdad. ¿Acaso habrá quién pueda interceder por nosotros [para salvarnos del castigo] o nos conceda otra oportunidad para volver a la vida mundanal y así poder obrar distinto a lo que hicimos antes?" Se perdieron a sí mismos y no podrán encontrar [a las divinidades] que inventaron.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mviii{Su Señor es Dios, Quien creó los cielos y la Tierra en seis eras, y luego se estableció sobre el Trono. Hace que la noche y el día se sucedan. Creó el Sol, la Luna y las estrellas sometiéndolas a Su voluntad. ¿Acaso no Le pertenece la creación y Él es Quien dictamina las órdenes según Él quiere? ¡Bendito sea Dios, Señor del universo!\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mix{Invoquen a su Señor con humildad en privado. Él no ama a los transgresores.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mx{No siembren corrupción en la Tierra después de que se haya establecido en ella el orden, e invóquenlo con temor y esperanza. La misericordia de Dios está cerca de los que hacen el bien.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mxi{Él es Quien envía los vientos que albrician la llegada de Su misericordia. Cuando éstos reúnen a las nubes, las conduzco hacia una tierra azotada por la sequía donde hago descender la lluvia con la que hago brotar toda clase de frutos. De la misma manera haré resucitar a los muertos; ¡reflexionen!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mxii{En una buena tierra crece vegetación abundante por voluntad de su Señor, mientras que en un territorio desértico no brota sino poco. Así explico los signos a la gente agradecida.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mxiii{Envié a Noé a su pueblo. Les dijo: ``¡Oh, pueblo mío! Adoren solamente a Dios, pues no existe otra divinidad salvo Él. Temo que los azote un castigo terrible [si continúan en la idolatría].\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mxiv{Los nobles de su pueblo dijeron [con soberbia]: ``Vemos que estás en un error evidente".\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mxv{Dijo [Noé]: ``¡Oh, pueblo mío! No hay en mí extravío alguno, sino que soy un Mensajero del Señor del universo.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mxvi{Les transmito el Mensaje de mi Señor y les aconsejo para su bien, puesto que sé acerca de Dios lo que ustedes ignoran".\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mxvii{¿Se asombran de que les llegue el Mensaje de su Señor por intermedio de un hombre igual a ustedes, que les advierte para que tengan temor de Dios y quizás así alcancen la misericordia?\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mxviii{Pero lo desmintieron. Entonces lo salvé junto a quienes estaban con él en el arca, y ahogué a quienes habían desmentido Mis signos. Ellos fueron gente ciega.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mxix{Al pueblo ‘Ad le envié a su hermano Hud [como Profeta]. Les dijo: ``¡Oh, pueblo mío! Adoren a Dios, pues no existe otra divinidad salvo Él. ¿Acaso no van a tener temor [de Dios]?"\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mxx{Los nobles que no creyeron de su pueblo le dijeron: ``Te vemos en una insensatez, y creemos que eres un mentiroso".\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mxxi{Dijo [Hud]: ``¡Oh, pueblo mío! No estoy en ninguna insensatez, solo soy un Mensajero enviado por el Señor del universo,\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mxxii{que les transmito el Mensaje de mi Señor. Yo soy un consejero leal".\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mxxiii{¿Se asombran de que les haya llegado un Mensaje de su Señor a través de un hombre de los suyos para advertirles? Recuerden cuando Dios hizo que sucedieran al pueblo [destruido] de Noé, y les concedió mayor fortaleza física. Recuerden las gracias de Dios para que así tengan éxito.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mxxiv{Dijeron: ``¿Acaso has venido para que adoremos a Dios solamente y abandonemos lo que adoraban nuestros padres? Haz que se cumpla el castigo con que nos amenazas si es que dices la verdad".\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mxxv{Dijo: ``Los azotará un castigo terrible [por lo que dicen] y habrán caído en la ira de su Señor. ¿Me van a discutir por [ídolos de piedra] a los que han denominado divinidades ustedes y sus padres? Dios no les dio autoridad alguna [para ello], aguarden [el castigo], que yo aguardaré [el socorro de Dios]".\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mxxvi{Lo salvé por Mi misericordia junto a los que creyeron, pero destruí a todos los que habían desmentido Mis signos porque se negaron a creer.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mxxvii{A Zamud le envié a su hermano [el Profeta] Sálih. Les dijo: ``¡Oh, pueblo mío! Adoren a Dios, pues no existe otra divinidad salvo Él. Ésta es la camella de Dios, es un milagro enviado por su Señor, déjenla comer en la tierra de Dios y no le causen ningún daño, porque si lo hacen los azotará un castigo doloroso.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mxxviii{Recuerden que [Dios] los hizo sucesores después de ‘Ad, y los estableció en su tierra. Ustedes construían palacios en sus llanuras y esculpían casas en las montañas. Recuerden las gracias de Dios, y no siembren maldad en la tierra como los corruptos".\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mxxix{Dijeron los nobles soberbios de su pueblo a los más débiles que habían creído: ``¿Acaso piensan que Sálih es un Mensajero de su Señor?" Les respondieron: ``Creemos en el Mensaje que nos transmite".\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mxxx{Los soberbios dijeron: ``Nosotros rechazamos lo que ustedes creen".\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mxxxi{Y mataron a la camella, desobedeciendo la orden de su Señor, y dijeron: ``¡Oh, Sálih! Haz que se desencadene el castigo con el que nos adviertes, si realmente eres uno de los Mensajeros [de Dios]".\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mxxxii{[Como consecuencia] los destruyó un temblor, y amanecieron en sus casas [muertos] caídos de bruces.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mxxxiii{[Sálih] se apartó de ellos diciendo: ``¡Oh, pueblo mío! Les transmití el Mensaje de mi Señor y les aconsejé para su bien, pero ustedes no aprecian a quienes los aconsejan".\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mxxxiv{[Envié a] Lot [a Sodoma], le dijo a su pueblo: ``¿Cometen una inmoralidad de la que no hay precedentes en la humanidad?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mxxxv{Satisfacen sus deseos con hombres en vez de hacerlo con mujeres, son trasgresores".\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mxxxvi{Pero la respuesta de su pueblo no fue otra que: ``Expúlsenlos de la ciudad, pues son gente que mantiene su pureza [negándose a actuar como nosotros]".\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mxxxvii{Lo salvé junto a su familia, excepto a su esposa, que se quedó atrás [y no salió de la ciudad].\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mxxxviii{Envié sobre ellos una lluvia. Observa cómo es el final de los que cometen crímenes [morales].\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mxxxix{A Madián le envié [como Profeta] a su hermano Jetró, quien les dijo: ``¡Oh, pueblo mío! Adoren a Dios, pues no existe otra divinidad salvo Él. Les ha llegado un milagro de su Señor [que corrobora mi profecía]. Midan y pesen con equidad, no se apropien de los bienes del prójimo, y no siembren mal en la Tierra, corrompiéndola luego de haberse establecido la justicia. Esto es mejor para ustedes, si es que son creyentes.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mxl{No embosquen en los caminos a los creyentes para intimidarlos y apartarlos del sendero de Dios con el fin de desviarlos. Recuerden que ustedes eran pocos y Él los multiplicó. Observen cuál fue el destino de los que sembraron la corrupción".\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mxli{[Jetró dijo:] ``Entre ustedes hay quienes creen en el Mensaje con el que fui enviado y quienes no, tengan paciencia hasta que Dios juzgue entre ustedes; y sepan que Él es el mejor de los jueces".\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mxlii{Dijeron los nobles de su pueblo con soberbia: ``Te expulsaremos de nuestra ciudad, a ti, ¡oh, Jetró!, y también a los creyentes, a menos que vuelvan a nuestra religión". [Jetró] replicó: ``¿Aunque sea en contra de nuestra voluntad?\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mxliii{Estaríamos mintiendo acerca de Dios si volviéramos a su religión después de que Dios nos ha salvado de ella, y no volveremos a ella salvo que fuera la voluntad de Dios, nuestro Señor. Su conocimiento lo abarca todo y a Dios nos encomendamos. ¡Oh, Señor nuestro! Juzga entre nosotros y nuestro pueblo, Tú eres el mejor de los jueces".\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mxliv{Los nobles de su pueblo que rechazaron la verdad dijeron: ``Si siguen a Jetró serán de los perdedores".\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mxlv{Entonces los sorprendió un temblor y amanecieron en sus casas [muertos], caídos de bruces.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mxlvi{[Las casas de] quienes desmintieron a Jetró quedaron como si jamás hubieran sido habitadas. Quienes desmintieron a Jetró fueron [realmente] los perdedores.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mxlvii{[Jetró] se alejó de ellos y dijo: ``¡Oh, pueblo mío! Les transmití el Mensaje de mi Señor y los aconsejé para su bien. ¿Por qué iba a sentir pena por un pueblo que persistió en la incredulidad?"\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mxlviii{Cada vez que envié un Profeta a una ciudad [y lo desmintieron], los azoté con la miseria y los padecimientos para que se volvieran humildes.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mxlix{Luego les cambié sus dificultades por bienestar. Pero cuando prosperaron, dijeron: ``Era común que nuestros padres atravesaran épocas de adversidad y prosperidad"; entonces los castigué sorpresivamente, sin que se dieran cuenta.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@ml{Pero si la gente de esas ciudades hubiera creído y tenido temor [de Dios], les habría abierto las bendiciones del cielo y de la Tierra. Pero desmintieron [a Mis Profetas] y los castigué por lo que habían cometido.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mli{¿Acaso la gente de esas ciudades se sentían seguros de que Mi ira no podría alcanzarlos por la noche, mientras dormían?\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mlii{¿O acaso la gente de esas ciudades se sentían seguros de que no podría llegarles Mi castigo por la mañana, cuando estuvieran distraídos?\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mliii{¿Acaso se sentían a salvo del plan de Dios? Solo se sienten a salvo del plan de Dios los que están perdidos.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mliv{¿Es que no se les ha evidenciado a quienes les sucedieron, que si quisiera los castigaría por sus pecados, sellando sus corazones para que no escucharan?\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mlv{[¡Oh, Mujámmad!] Te he relatado acerca de la gente de aquellas ciudades a las que se les presentaron sus Profetas con milagros y no les creyeron, al igual que no creían antes. Así es como Dios sella los corazones de los que rechazan la verdad.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mlvi{La mayoría de ellos no cumplían sus compromisos y eran perversos.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mlvii{Envié, después de ellos, a Moisés con Mis milagros al Faraón y su nobleza, pero los negaron injustamente. Observa cuál fue el final de los corruptos.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mlviii{Dijo Moisés: ``¡Oh, Faraón! Soy un Mensajero del Señor del universo.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mlix{Es un deber para mí transmitirte la verdad acerca de Dios. Te traigo milagros evidentes de tu Señor. Deja ir conmigo a los Hijos de Israel".\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mlx{Dijo [el Faraón]: ``Si has traído un milagro, muéstramelo si eres sincero".\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mlxi{Entonces arrojó su vara, y esta se convirtió en una serpiente real.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mlxii{Luego introdujo su mano por el cuello de su túnica y, al retirarla ante todos los presentes, estaba blanca y resplandeciente.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mlxiii{Dijo la nobleza del pueblo del Faraón: ``Él es un hechicero experto.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mlxiv{[En realidad lo que] quiere es expulsarlos de su tierra". [Les preguntó el Faraón:] ``¿Cuál es su consejo?"\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mlxv{Dijeron [los nobles]: ``Retenlos a él y a su hermano, y envía reclutadores a las ciudades\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mlxvi{para que te traigan a todo hechicero experto".\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mlxvii{Los hechiceros se presentaron ante el Faraón y dijeron: ``Exigimos una recompensa si somos los vencedores".\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mlxviii{Dijo el Faraón: ``¡Sí! Se los recompensará y serán de mis allegados".\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mlxix{Dijeron [los hechiceros]: ``¡Oh, Moisés! Arroja tú o lo hacemos nosotros".\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mlxx{Dijo: ``¡Arrojen ustedes!" Cuando los hechiceros arrojaron [sus varas], hechizaron los ojos de la gente y los aterrorizaron. Su hechizo era poderoso.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mlxxi{Pero le revelé a Moisés: ``Arroja tu vara", y [al transformarse en serpiente] se tragó [la ilusión que los hechiceros] habían hecho.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mlxxii{Entonces quedó en evidencia la verdad y la falsedad de lo que [los hechiceros] habían hecho.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mlxxiii{Y fueron vencidos [los hechiceros] quedando humillados.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mlxxiv{Pero los hechiceros se prosternaron.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mlxxv{Dijeron: ``Creemos en el Señor del universo,\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mlxxvi{el Señor de Moisés y de Aarón".\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mlxxvii{Dijo el Faraón: ``¿Acaso van a creer en él sin que yo se los haya autorizado? Esto se trata de una conspiración para expulsar [de Egipto] a sus habitantes, pero ya verán.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mlxxviii{Haré que les amputen una mano y el pie del lado opuesto, luego los haré clavar sobre un madero".\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mlxxix{Dijeron [los hechiceros]: ``A nuestro Señor hemos de retornar.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mlxxx{Solo te vengas de nosotros porque hemos creído cuando llegaron los milagros de nuestro Señor. ¡Señor nuestro! Danos paciencia y haznos morir musulmanes, sometidos a Ti".\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mlxxxi{Pero la nobleza del pueblo del Faraón dijo: ``¿Dejarás a Moisés y a su pueblo sembrar la corrupción en la Tierra, que te abandonen a ti y a tus dioses?" Dijo [el Faraón]: ``Mataremos a sus hijos varones y dejaremos con vida a las mujeres, así los subyugaremos".\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mlxxxii{Moisés dijo a su pueblo: ``Busquen la ayuda de Dios y sean pacientes [ante esta prueba]. La Tierra es de Dios, y la dará en herencia a quien quiera de Sus siervos. El buen fin es para los que tienen temor [de Dios]".\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mlxxxiii{Dijeron [sus seguidores]: ``Hemos sufrido antes de ti y también ahora que tú has venido". Dijo [Moisés]: ``Quiera Dios aniquilar a sus enemigos y hacer que ustedes los sucedan en la Tierra, que Él observará cómo obran ustedes".\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mlxxxiv{Entonces azoté a la gente del Faraón con años de sequía y escasez de frutos, para que reflexionaran.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mlxxxv{Pero cuando les llegó nuevamente una época de prosperidad dijeron: ``Esto es lo que merecemos". Cuando les acontecía un mal le echaban la culpa a Moisés y a sus seguidores [por considerarlos de mal agüero]; pero cuanto les ocurría era porque Dios así lo decretaba, aunque la mayoría de ellos lo ignoraba.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mlxxxvi{Dijeron: ``Cualquiera que sea el milagro que nos presentes para hechizarnos con él, no creeremos en ti".\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mlxxxvii{Envié entonces contra ellos [las plagas de] la inundación, las langostas, los piojos, las ranas y la sangre, como signos claros, pero se llenaron de soberbia y actuaron como criminales.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mlxxxviii{Cuando les llegó el castigo, dijeron: ``¡Oh, Moisés! Ruega por nosotros a tu Señor, puesto que ha realizado un pacto contigo. Si logras apartar este castigo creeremos en ti y dejaremos ir contigo a los Hijos de Israel".\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mlxxxix{Pero cuando aparté de ellos el castigo hasta el tiempo fijado, no cumplieron.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mxc{Entonces los castigué con justicia e hice que se ahogaran en el mar, porque habían desmentido Mis signos y habían sido indiferentes [ante los milagros].\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@mxci{Le di a los Hijos de Israel, luego de que fueran humillados, las tierras que bendije al este y al oeste [de Egipto], y se cumplió así la promesa de tu Señor con los Hijos de Israel porque fueron pacientes, pero destruí cuanto habían construido el Faraón y su pueblo.\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@mxcii{Hice que los Hijos de Israel cruzaran el mar, pero cuando llegaron a un pueblo que se prosternaba ante los ídolos dijeron: ``¡Oh, Moisés! Queremos que nos hagas un ídolo similar a los que tienen ellos". Dijo [Moisés]: ``Ustedes son gente ignorante.\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@mxciii{Ellos serán destruidos por lo que hacen, y sus obras serán en vano".\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@mxciv{Dijo: ``¿Cómo podría admitir que ustedes adoren ídolos en vez de Dios, siendo que Él los distinguió entre sus contemporáneos?\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@mxcv{Recuerden cuando los salvó del Faraón y su ejército, que los castigaba con el peor de los castigos, matando a sus hijos varones y dejando con vida a las mujeres; esa fue una prueba dura de su Señor".\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@mxcvi{Cité a Moisés durante treinta noches que completé con diez noches más. El encuentro con su Señor duró cuarenta noches. [Antes de partir hacia la cita,] Moisés dijo a su hermano Aarón: ``Ocupa mi lugar ante mi pueblo y ordena el bien, y no sigas el sendero de los corruptos".\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@mxcvii{Cuando Moisés acudió al encuentro y su Señor le habló, [Moisés] le pidió: ``Muéstrate para que pueda verte". Dijo [Dios]: ``No podrías verme. Pero observa la montaña, si permanece firme en su lugar [después de mostrarme a ella], entonces tú también podrás verme". Y cuando su Señor se mostró a la montaña, ésta se convirtió en polvo y Moisés cayó inconsciente. Cuando volvió en sí exclamó: ``¡Glorificado seas! Me arrepiento y soy el primero en creer en Ti".\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@mxcviii{Dijo [Dios]: ``¡Oh, Moisés! Te he distinguido entre las personas con la profecía y por haberte hablado directamente. Aférrate a lo que te he revelado y sé de los agradecidos".\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@mxcix{Escribí para él en las tablas instrucción y explicación de todas las cosas. ``Aférrate a ellas y ordena a tu pueblo que siga todo lo bueno que hay en ellas. Les mostraré [cómo quedaron] las casas de los desviados".\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@mc{Alejaré de Mis signos a quienes actúen con soberbia en la Tierra sin razón. Aunque vean todos los milagros no creerán. Si ven el sendero de la guía no lo seguirán y, por el contrario, cuando vean el sendero del desvío se extraviarán. Esto es por haber desmentido Mis signos y haber sido negligentes.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@mci{Quienes desmientan Mis signos y no crean en el Día del Juicio sus obras habrán sido en vano. ¿Acaso no se les castigará sino por lo que ellos mismos hicieron?\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@mcii{Cuando [Moisés] partió [hacia el encuentro con su Señor] su pueblo hizo, con las joyas que tenían, un becerro [de oro] que emitía un mugido. ¿Acaso no veían que éste [ídolo] no les podía hablar ni guiarlos? Aun así lo adoraron, cometiendo una injusticia.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@mciii{Pero cuando se arrepintieron y vieron que se habían desviado, exclamaron: ``Si nuestro Señor no tiene misericordia de nosotros y nos perdona, seremos de los perdedores".\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@mciv{Cuando Moisés volvió a su pueblo, [se sintió] enojado y afligido, y dijo: ``¡Qué mal está lo que hicieron durante mi ausencia! ¿Acaso pretenden que se les precipite el castigo de su Señor?" Y arrojó las tablas, tomando a su hermano por la cabeza y acercándolo a él. Entonces [su hermano Aarón] le dijo: ``¡Oh, hermano mío! Nuestro pueblo me menospreció y por poco me matan. No permitas que los enemigos se regocijen con esta situación y no me consideres de los que cometen injusticias".\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@mcv{Dijo Moisés: ``¡Oh, Señor mío! Perdona a mi hermano y a mí, y ten misericordia de nosotros. Tú eres el más Misericordioso".\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@mcvi{La ira de Dios azotará a aquellos que adoraron el becerro, y serán humillados en esta vida mundanal. Así es como castigo a quienes inventan mentiras.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@mcvii{Quienes obren mal pero luego se arrepientan y crean, sepan que tu Señor, a pesar de lo que hicieron, es Absolvedor, Misericordioso.\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@mcviii{Cuando Moisés calmó su ira recogió las tablas. En ellas hay guía y misericordia para quienes tienen temor de su Señor.\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@mcix{Moisés eligió entre su pueblo a setenta hombres para una cita conmigo, y cuando les azotó un violento temblor, [Moisés] exclamó: ``¡Señor mío! Si hubieras querido los habrías aniquilado antes y a mí también. ¿Acaso nos aniquilarás por lo que han cometido los necios que hay entre nosotros? [El becerro] no es sino una prueba con la que extravías y guías a quien quieres. Tú eres nuestro protector, perdónanos y ten misericordia de nosotros. Tú eres el más Indulgente.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@mcx{Concédenos bienestar en esta vida y en la otra; nos hemos vuelto a Ti arrepentidos". Dijo [Dios]: ``Azoto con Mi castigo a quien quiero, pero sepan que Mi misericordia lo abarca todo, y se la concederé a los piadosos que pagan el zakat y creen en Mis signos,\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@mcxi{aquellos que sigan al Mensajero y Profeta iletrado [Mujámmad], quien se encuentra descrito en la Tora y el Evangelio; [el Profeta] que les ordena el bien y les prohíbe el mal, les permite todo lo beneficioso y solo les prohíbe lo perjudicial, y les abroga los preceptos difíciles que pesaban sobre ellos [la Gente del Libro]. Y quienes crean en él, lo secunden, defiendan y sigan la luz que le ha sido revelada, serán los bienaventurados".\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@mcxii{Di [oh, Mujámmad]: ``¡Oh, gente! Soy el Mensajero de Dios para todos ustedes. A Él pertenece el reino de los cielos y de la Tierra, nada ni nadie merece ser adorado salvo Él, da la vida y la muerte". Crean en Dios y en Su Mensajero y Profeta iletrado que cree en Dios y en Sus palabras, síganlo, pues así estarán bien guiados.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@mcxiii{En el pueblo de Moisés hay una comunidad que se rige por la verdad [revelada] y conforme a ella emiten sus juicios\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@mcxiv{Los dividí en doce tribus, como naciones; y le inspiré a Moisés cuando su pueblo le solicitó [agua para] beber [diciéndole]: ``Golpea la roca con tu vara", y brotaron de ella doce manantiales y cada tribu supo cuál era su abrevadero, y los protegí con la sombra de una nube e hice descender para ellos el maná y las codornices [y les dije]: ``Coman de lo bueno con que los he agraciado". Pero no fue contra Mí que cometieron una injusticia, sino que la cometieron contra ellos mismos.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@mcxv{Y se les dijo: ``Habiten esta ciudad y coman cuanto quieran de lo que hay en ella, y digan: ``¡Perdónanos!", pero entren sumisos por la puerta prosternados, que perdonaré sus pecados, y a los que hagan el bien les concederé aún más.\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@mcxvi{Pero los injustos de ellos cambiaron la palabra que se les ordenó decir por otra diferente, y entonces envié sobre ellos un castigo del cielo por haber obrado injustamente.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@mcxvii{Y pregúntales [¡oh, Mujámmad!] por [los habitantes de] la ciudad que estaba a orillas del mar que transgredían el sábado, cuando los peces aparecían el sábado y los demás días no; así es como les puse una prueba por haber sido soberbios.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@mcxviii{Un grupo de gente justa de entre ellos preguntaron [a quienes exhortaban al bien]: ``¿Por qué exhortan a un pueblo al que Dios aniquilará o castigará duramente?" Respondieron: ``Para que nuestro Señor no nos castigue por no haber ordenado el bien, y para que quizás tengan temor [de Dios]".\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@mcxix{Pero cuando olvidaron lo que se les había prohibido, salvé a quienes se oponían al mal y azoté a los que cometían injusticias con un castigo terrible a causa de su perversión.\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@mcxx{Cuando transgredieron lo que se les había prohibido, les dije: ``Conviértanse en monos despreciables".\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@mcxxi{Tu Señor anunció que les enviaría a quienes les infligieran un castigo severo hasta el Día de la Resurrección. Tu Señor es rápido en aplicar el castigo, pero también es Absolvedor, Misericordioso.\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@mcxxii{Por eso los dividí en comunidades y los dispersé por la Tierra. Entre ellos hay justos y otros que no lo son. Los probaré con tiempos de prosperidad y otros de adversidad para que recapaciten.\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@mcxxiii{[A ellos] les sucedió una generación que heredó el Libro [la Tora], pero a pesar de eso prefirieron los bienes materiales de este mundo. [Cada vez que cometían un pecado] decían: ``[Dios] nos perdonará". Pero cuando se les presentaba una nueva posibilidad volvían a pecar. ¿Acaso no se comprometieron a cumplir con la Tora y no decir acerca de Dios sino la verdad? Aun habiendo estudiado la Tora [desobedecieron], pero para los piadosos la otra vida es preferible. ¿Es que no reflexionan?\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@mcxxiv{Aquellos que se aferran al Libro y realizan la oración prescrita sepan que jamás dejaré de recompensar a los que hacen el bien.\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@mcxxv{Recuerda cuando elevé la montaña por encima de ellos como si fuese una nube oscura y creyeron que se desplomaría, y [les dije:] ``aférrense a lo que les he concedido [la Tora] y obren según sus preceptos, que así serán piadosos".\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@mcxxvi{Cuando tu Señor sacó de las espaldas de los hijos de Adán a su descendencia y los hizo dar testimonio [preguntándoles]: ``¿Acaso no Soy Yo su Señor?" Respondieron: ``Sí, atestiguamos que así es". Esto es para que el Día de la Resurrección no digan: ``No sabíamos nada de esto".\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@mcxxvii{O digan: ``Nuestros padres eran idólatras, y nosotros solo somos sus descendientes siguiendo lo que ellos hacían. ¿Acaso vas a castigarnos por lo que hicieron los que falsearon [la verdad del monoteísmo]?"\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@mcxxviii{Así es como explico los signos para que recapaciten.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@mcxxix{Y relátales la historia de aquel a quien habiéndole concedido el conocimiento de Mis preceptos, los descuidó, el demonio lo sedujo y fue de los extraviados.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@mcxxx{Y si hubiera querido habría elevado su rango [en esta vida y en la otra, preservándolo], pero se inclinó por los placeres de este mundo y siguió sus pasiones. Se comportó como el perro que si lo llamas jadea, y si lo dejas también jadea. Éste es el ejemplo de quienes desmienten Mis signos. Nárrales estas historias a ver si reflexionan.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@mcxxxi{¡Qué pésimo es el ejemplo de quienes desmienten Mis signos, y son injustos con ellos mismos!\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@mcxxxii{A quien Dios guíe estará encaminado, pero a quien [Dios] extravíe estará perdido.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@mcxxxiii{He creado muchos yinnes y seres humanos que irán al Infierno [a causa de sus obras]. Tienen corazones pero no pueden comprender, ojos pero no pueden ver y oídos pero no pueden oír. Son como los ganados que no razonan, o peor aún. Ellos son los que se comportan con indiferencia [ante Mis signos].\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@mcxxxiv{A Dios pertenecen los nombres más sublimes, invócalo a través de ellos, y apártate de quienes los niegan. Serán castigados por lo que hicieron.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@mcxxxv{Algunos de Mi creación guían [a la gente] con la Verdad, y acorde a ella establecen justicia.\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@mcxxxvi{A quienes desmientan Mis signos los degradaré paulatinamente sin que puedan darse cuenta.\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@mcxxxvii{Los toleraré temporalmente [hasta el Día del Juicio], puesto que Mi castigo es una promesa firme.\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@mcxxxviii{¿Acaso no se dieron cuenta de que su Mensajero no es un demente? Él es un claro amonestador.\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@mcxxxix{¿Acaso no reflexionaron en el reino de los cielos y de la Tierra y lo que Dios creó en él, ni tampoco en que el final de sus vidas pudiere estar próximo? Si no creen en este Mensaje, ¿en qué otro iban a creer?\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@mcxl{A quien Dios extravía nadie lo podrá guiar. A éstos Dios los deja que actúen desorientados en su ceguera.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@mcxli{Te preguntan cuándo llegará la Hora [del Día de la Resurrección]. Diles: ``Solo mi Señor lo sabe, y nadie salvo Él hará que comience en el momento decretado. Los cielos y la Tierra temen su llegada. Cuando llegue los sorprenderá". Te preguntan como si supieras [cuándo ocurrirá]. Diles: ``Su conocimiento solo Le pertenece a Dios, pero la mayoría de la gente no lo sabe".\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@mcxlii{Diles [oh, Mujámmad]: ``No poseo ningún poder para beneficiarme ni perjudicarme a mí mismo, salvo lo que Dios quiera. Si tuviera conocimiento de lo oculto tendría abundantes bienes materiales y no me alcanzaría nunca un mal. Yo solo soy un amonestador y albriciador para la gente que cree".\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@mcxliii{Él es Quien los creó a partir de un solo ser, del cual hizo surgir a su cónyuge para que encontrara en ella sosiego. Y cuando se unió a ella, quedó embarazada y llevó en su vientre una carga liviana con la que podía andar, pero cuando ésta se hizo pesada, ambos invocaron a Dios [diciendo]: ``¡Oh, Señor nuestro! Si nos agracias con un hijo sano y virtuoso seremos agradecidos".\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@mcxliv{Y se les agració con lo que suplicaron, pero [sus descendientes] dedicaron actos de adoración a otros además de Dios; y Dios está por encima de lo que Le asocian.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@mcxlv{¿Acaso adoran a quienes no pueden crear nada, sino por el contrario, ellos mismos fueron creados?\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@mcxlvi{No pueden auxiliarlos, ni tampoco auxiliarse a sí mismos.\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@mcxlvii{Si ustedes los invitan a seguir la guía, no lo harán. Lo mismo da que los inviten o que se queden callados.\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@mcxlviii{Lo que adoran en vez de Dios son seres creados igual que ustedes. [Los desafío:] Invóquenlos y que les respondan, si es verdad lo que dicen.\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@mcxlix{¿Tienen acaso piernas con las que caminan? ¿O manos con las que toman? ¿U ojos con los que ven? ¿U oídos con los que oyen? Di: ``Invoquen a los que asocian y luego tramen contra mí sin más demora".\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@mcl{Mi protector es Dios, Quien reveló el Libro. Él es Quien protege a los justos.\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@mcli{Los que ustedes invocan en vez de Dios no pueden auxiliarlos ni auxiliarse a ellos mismos.\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@mclii{Cuando ustedes los invocan pidiendo guía, no los oyen. Pareciera que los miran, pero en realidad no los ven.\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@mcliii{[¡Oh, Mujámmad!] Ante todo, elige perdonar, ordena el bien y apártate de quienes se comportan contigo en forma ignorante.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@mcliv{Si sientes que el demonio te susurra, refúgiate en Dios. Él todo lo oye, todo lo sabe.\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@mclv{Los piadosos, cuando el demonio les susurra, invocan a su Señor y entonces pueden ver con claridad.\qt@no{(201)}}
+\qt@newcmd\qurantrans@es@mclvi{Pero los demonios persisten en mantener a sus secuaces en el extravío, y no se cansan de hacerlo.\qt@no{(202)}}
+\qt@newcmd\qurantrans@es@mclvii{Cuando no se le revela [al Profeta Mujámmad] un nuevo versículo, le dicen [en tono burlón]: ``¿Por qué no has inventado uno?" Diles: ``Solo sigo lo que mi Señor me revela. Éste [Corán] es un milagro de su Señor, guía y misericordia para la gente que cree en él".\qt@no{(203)}}
+\qt@newcmd\qurantrans@es@mclviii{Cuando el Corán sea leído, escúchenlo con atención y guarden silencio para que se les tenga misericordia.\qt@no{(204)}}
+\qt@newcmd\qurantrans@es@mclix{Recuerda a tu Señor en tu interior con sometimiento y temor, e invócalo con voz baja por la mañana y por la tarde. No seas de los indiferentes.\qt@no{(205)}}
+\qt@newcmd\qurantrans@es@mclx{[Los ángeles] que están junto a tu Señor no tienen ninguna soberbia que les impida adorarlo, Lo glorifican y se prosternan ante Él.\qt@no{(206)}}
+\qt@newcmd\qurantrans@es@mclxi{\basmalahes Te preguntan acerca de los botines [de guerra, cómo se distribuyen]. Diles [¡oh, Mujámmad!]: ``Los botines son para Dios y el Mensajero. Tengan temor de Dios, solucionen sus conflictos y obedezcan a Dios y a Su Mensajero, si es que son creyentes".\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mclxii{Los creyentes son aquellos que cuando les es mencionado el nombre de Dios sus corazones se estremecen, y que cuando les son recitados Sus versículos les aumenta la fe y se encomiendan a su Señor.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mclxiii{[Los creyentes] son quienes realizan la oración y dan en caridad parte de lo que les he proveído.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mclxiv{Estos son los verdaderos creyentes, que alcanzarán grados elevados ante su Señor, el perdón y un sustento generoso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mclxv{Tu Señor te hizo salir de tu casa [para luchar] por la verdad, pero eso le disgustó a un grupo de los creyentes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mclxvi{Te discuten sobre el verdadero motivo [del enfrentamiento] luego de habérseles evidenciado la verdad, como si fueran arrastrados a la muerte ante sus propios ojos.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mclxvii{Pero [recuerda] cuando Dios les prometió [la victoria] sobre uno de los dos grupos. Ustedes deseaban enfrentar al menos poderoso, pero Dios quería hacer prevalecer la verdad con Sus Palabras y erradicar a los que se niegan a creer,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mclxviii{para que así prevalezca la Verdad y se desvanezca la falsedad, aunque ello les disguste a los criminales.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mclxix{[Recuerden] cuando pedían socorro a su Señor y Él les respondió: ``Los auxiliaré con mil ángeles que descenderán uno tras otro".\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mclxx{Dios los envió como una albricia y para infundir el sosiego en sus corazones, pero sepan que la victoria depende de Dios. Dios es el Poderoso, el Sabio.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mclxxi{[Y recuerden] cuando los envolvió un sueño ligero dándoles una calma interior, e hizo descender una llovizna del cielo para purificarlos con ella y apartar de ustedes la mancha del demonio, afirmar sus corazones y afianzar sus pasos.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mclxxii{Y cuando tu Señor inspiró a los ángeles: ``Yo estoy con ustedes, denle valor a los creyentes, infundiré terror en los corazones de los que se niegan a creer. Golpeen sobre sus cuellos y golpeen todos sus dedos".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mclxxiii{Esto [es lo que merecen] porque combatieron a Dios y a Su Mensajero. Quien combata a Dios y a Su Mensajero sepa que Dios es severo en el castigo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mclxxiv{Eso es lo que merecen recibir, y sepan que los que se niegan a creer recibirán el castigo del Infierno.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mclxxv{¡Oh, creyentes! Cuando se enfrenten con los que se niegan a creer, no les den la espalda [para huir].\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mclxxvi{Pero quien huya, a menos que fuera por una maniobra de batalla o para unirse a otra tropa, incurrirá en la ira de Dios y su morada final será el Infierno. ¡Qué pésimo destino!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mclxxvii{No fueron ustedes quienes los mataron [a sus enemigos] sino que fue Dios quien les dio muerte, y no fuiste tú [¡oh, Mujámmad!] quien arrojó [el polvo que llegó a los ojos del enemigo en el combate], sino que fue Dios Quien lo hizo. Dios agracia así a los creyentes. Dios todo lo oye, todo lo sabe.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mclxxviii{Eso fue para que Dios desbaratara las confabulaciones de los que se niegan a creer.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mclxxix{[¡Oh, incrédulos!] Ustedes pidieron que triunfara quien estuviera en la verdad, y esto fue lo que ocurrió. Sepan que si desisten [de combatir al Islam y a los creyentes] será mejor para ustedes; pero si vuelven a hacerlo volveré [a castigarlos] y de nada les servirán sus ejércitos, aunque fueran numerosos. Porque Dios está con los creyentes.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mclxxx{¡Oh, creyentes! Obedezcan a Dios y a Su Mensajero, y no le den la espalda al escuchar [el mensaje].\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mclxxxi{No sean como quienes dicen: ``Oímos", pero no prestan atención.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mclxxxii{Las peores criaturas para Dios son los sordos [que no quieren oír la Verdad] y los mudos [que no quieren atestiguar la Verdad], los que no razonan.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mclxxxiii{Si Dios supiera que en ellos hay algún bien los haría oír, pero aun si los hiciera oír le darían la espalda, desentendiéndose.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mclxxxiv{¡Oh, creyentes! Obedezcan a Dios y al Mensajero cuando los invitan a practicar aquello que les da vida, y sepan que Dios se interpone entre la persona y [los deseos de] su corazón. Ante Dios comparecerán.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mclxxxv{Tengan cuidado de una prueba que afligirá no solamente a los opresores, sino a todos. Dios es severo en el castigo.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mclxxxvi{Recuerden cuando eran solo unos pocos, eran perseguidos y oprimidos donde estuvieran, y temían que la gente los apresara. Pero Dios los protegió, los fortaleció con Su auxilio y los agració con un sustento lícito, para que sean agradecidos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mclxxxvii{¡Oh, creyentes! No traicionen a Dios y al Mensajero, ni traicionen la confianza que se depositó en ustedes.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mclxxxviii{Sepan que sus posesiones y sus hijos son una prueba. Dios tiene reservada junto a Él una recompensa inmensa.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mclxxxix{¡Oh, creyentes! Si tienen temor de Dios, Él les concederá el criterio, perdonará sus faltas y aceptará su arrepentimiento. Dios es el dueño de un favor inmenso.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcxc{Y recuerda [¡oh, Mujámmad!] cuando se confabularon contra ti los incrédulos para capturarte, matarte o expulsarte [de tu ciudad]. Ellos planearon en tu contra, pero Dios desbarató sus planes, porque finalmente Dios es el que mejor planea.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcxci{Cuando se les recitan Mis versículos, dicen [los que se niegan a creer]: ``Oímos, pero si quisiéramos podríamos decir palabras similares. Son fábulas de nuestros ancestros".\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcxcii{Y alguien dijo: ``¡Señor nuestro! Si esto [que transmite Mujámmad] es la Verdad que dimana de Ti, te desafío a que hagas llover sobre nosotros piedras del cielo o nos azotes con un castigo doloroso".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcxciii{Pero Dios nunca los castigaría estando tú [¡oh, Mujámmad!] entre ellos, ni tampoco mientras haya quienes Le pidan perdón.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcxciv{¿Por qué no iba Dios a castigarlos si ellos impiden [a los creyentes] el ingreso a la Mezquita Sagrada, sin ser los protectores [legítimos de la Mezquita Sagrada]? Sepan que los [legítimos] protectores son los piadosos. Pero la mayoría de los idólatras no lo sabe.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcxcv{Su oración ante la Casa Sagrada [de La Meca] no era más que silbidos y aplausos. Sufran [¡oh, idólatras!] el castigo por su rechazo obstinado a la verdad.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcxcvi{Los que se niegan a creer gastan su dinero para apartar a la gente del sendero de Dios. Seguirán gastando hasta que lo lamentarán, y finalmente serán vencidos. Los que se niegan a creer serán finalmente congregados en el Infierno.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcxcvii{Así Dios diferenciará al corrupto del honesto, y reunirá a los perversos unos con otros y los congregará en el Infierno. Esos serán los perdedores.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcxcviii{Diles a los que se niegan a creer que si desisten [y abrazan el Islam] les será perdonado cuanto cometieron en el pasado; pero si persisten, tendrán el mismo destino de los pueblos que los precedieron.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcxcix{Combatan [a los criminales] hasta que cese la opresión y todos puedan adorar libremente a Dios. Pero si ellos desisten [de perseguir a los creyentes] Dios bien ve lo que hacen.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcc{Pero si ellos se niegan [y prefieren seguir persiguiendo a los creyentes], sepan ustedes que Dios es su Protector. ¡Qué excelente Protector y qué excelente Defensor!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcci{Sepan que un quinto del botín Le corresponde a Dios, al Mensajero, a sus familiares, a los huérfanos, a los pobres y a los viajeros insolventes [y el resto a los soldados], si es que creen en Dios y en lo que le he revelado a Mi siervo el día que se evidenció la verdad de la falsedad: el día que se enfrentaron los dos ejércitos. Dios tiene poder sobre todas las cosas.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mccii{[Recuerda] cuando se encontraban en el valle más cercano [a Medina] y el ejército de los idólatras en el más lejano, y la caravana de camellos más abajo [en dirección al mar]. Y si ustedes hubieran sabido que se habría de producir una batalla, se habrían negado a aceptar el desafío. Pero [la batalla fue provocada aun así] para que Dios llevara a cabo algo [que Él había dispuesto] que ocurriera, y para que quien hubiera de perecer [en ese día], pereciera ante una prueba clara de la verdad; y quien hubiera de sobrevivir, sobreviviera ante una prueba clara de la verdad. Dios todo lo oye, todo lo sabe.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcciii{Dios hizo que en un sueño vieras a los enemigos como si fueran pocos, pues si se los hubiera mostrado como un ejército numeroso se habrían acobardado, dudando sobre combatir o no. Pero Dios los protegió. Él bien sabe lo que hay en los corazones.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcciv{Cuando estuvieron frente a frente, Dios hizo que ustedes los vieran poco numerosos, e hizo que ellos los vieran poco numerosos a ustedes, de manera que sucediese lo que Dios había decretado. A Dios se remiten todos los asuntos.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mccv{¡Oh, creyentes! Cuando se enfrenten a un ejército [de incrédulos] manténganse firmes y recuerden permanentemente a Dios, que así alcanzarán el triunfo.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mccvi{Obedezcan a Dios y a Su Mensajero y no discrepen, porque se debilitarían y serían derrotados. Sean pacientes, porque Dios está con los pacientes.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mccvii{Pero no sean como aquellos [incrédulos] que salieron de sus hogares con arrogancia y ostentación ante su gente, para apartar a las personas del sendero de Dios. Dios está bien enterado de lo que hacen.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mccviii{El demonio les hizo ver que lo que hacían era lo correcto, y les dijo: ``Hoy nadie los podrá vencer, yo estoy junto a ustedes". Pero cuando los dos bandos se divisaron, [el demonio] huyó diciendo: ``Yo no soy responsable de lo que hacen, pues veo lo que ustedes no pueden ver, yo tengo temor de Dios, y Dios es severo en el castigo".\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mccix{En ese momento los hipócritas y quienes tenían el corazón enfermo [con incertidumbre] dijeron [acerca de los creyentes]: ``Estos están enceguecidos por su religión". Quienes se encomienden a Dios sepan que Él es Poderoso, Sabio.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mccx{Si vieras [qué terrible es] cuando los ángeles toman las almas de los que mueren habiéndose negado a creer, y les golpean sus rostros y sus espaldas, y les dicen: ``Sufran el tormento del Infierno.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mccxi{Este es el castigo que merecieron por sus obras. Dios no es injusto con Sus siervos".\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mccxii{El pueblo del Faraón y quienes los precedieron fueron castigados, pues tampoco creyeron en los signos de Dios, y Dios los condenó por sus pecados. Dios tiene poder sobre todas las cosas y es severo en el castigo.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mccxiii{Dios no quita a ningún pueblo las gracias con las que lo ha bendecido, a menos que este se pervierta. Dios todo lo oye, todo lo sabe.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mccxiv{Por lo mismo castigué a la gente del Faraón y a quienes los precedieron, pues desmintieron los signos de su Señor y entonces los aniquilé por sus pecados: por eso ahogué a la gente del Faraón. Sepan que todos [estos pueblos] eran opresores.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mccxv{Las peores criaturas ante Dios son los incrédulos, pues se negaron a creer,\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mccxvi{aquellos que siempre quebrantan los pactos que tú [¡oh, Mujámmad!] celebras con ellos y no tienen temor [del castigo de Dios].\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mccxvii{Si enfrentas a algunos de ellos durante la guerra, dales un escarmiento que sirva de ejemplo a quienes sigan sus pasos. Puede que así reconsideren.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mccxviii{Si te traiciona un pueblo, hazles saber que rompes el pacto igual que ellos. Dios no ama a los traidores.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mccxix{Que no piensen los incrédulos que podrán huir de Mi castigo. No tienen salvación.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mccxx{Preparen contra ellos cuanto puedan de fuerzas [de combate] y caballería, para que así amedrenten a los enemigos de Dios que también son los suyos, y a otros enemigos que aún no conocen, pero Dios los conoce bien. Sepan que aquello con lo que contribuyan en la causa de Dios les será recompensado generosamente, y no serán jamás tratados injustamente.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mccxxi{Si [los incrédulos] se inclinan por la paz, acéptala tú también y encomiéndate a Dios. Él todo lo oye, todo lo sabe.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mccxxii{Pero si quieren engañarte, sabe que la protección de Dios es suficiente. Él es Quien te ha fortalecido con Su auxilio y con los creyentes,\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mccxxiii{Él es Quien unió sus corazones, y tú no habrías podido hacerlo aunque hubieras gastado todo lo que hay en la Tierra, pero Dios los reconcilió. Él es Poderoso, Sabio.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mccxxiv{¡Oh, Profeta! La protección de Dios es suficiente para ti y para los creyentes que te sigan.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mccxxv{¡Oh, Profeta! Exhorta a los creyentes a combatir [por la causa de Dios]. Por cada veinte pacientes y perseverantes de entre ustedes, vencerán a doscientos; y si hubiere cien, vencerán a mil de los que se negaron a creer, porque ellos no razonan.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mccxxvi{Pero Dios les alivia la carga, por compasión ante su debilidad: Por cada cien pacientes vencerán a doscientos enemigos, y si hubiere mil vencerán a dos mil, con el permiso de Dios. Dios está con los pacientes.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mccxxvii{No le es permitido al Profeta [ni a los creyentes] tomar prisioneros si antes no combaten en la Tierra. Pretenden algunos obtener un beneficio mundanal, mientras Dios quiere para ustedes la recompensa de la otra vida. Dios es Poderoso, Sabio.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mccxxviii{Si Dios no hubiera prescrito que el botín de guerra fuera lícito, habrían sufrido un terrible castigo por lo que tomaron de él.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mccxxix{Disfruten de todo lo lícito y bueno que han ganado como botín de guerra, y tengan temor de Dios. Dios es Absolvedor, Misericordioso.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mccxxx{¡Oh, Profeta! Diles a los prisioneros que hayan capturado: ``Si Dios encuentra en sus corazones algo de bien, les concederá algo mejor que los bienes que se les han quitado y los perdonará. Dios es Absolvedor, Misericordioso".\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mccxxxi{Pero si quieren engañarte aduciendo que son creyentes, recuerda que ya antes habían traicionado a Dios y Él los sometió ante ustedes. Dios todo lo sabe, es Sabio.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mccxxxii{Los creyentes que emigraron, contribuyeron con sus bienes y combatieron por la causa de Dios, son aliados de aquellos que les dieron refugio y socorro. En cambio, a quienes no emigraron no tienen la obligación de socorrerlos hasta que emigren. Pero si piden que los auxilien para preservar su religión, deben hacerlo, salvo que se encuentren en un pueblo con el que ustedes hayan celebrado un pacto. Dios ve bien lo que hacen.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mccxxxiii{Los que se niegan a creer son aliados unos de otros. Si no obran de la misma manera [siendo los creyentes aliados unos de otros], se propagarán los conflictos en la Tierra y habrá una gran corrupción.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mccxxxiv{Los creyentes que emigraron y lucharon por la causa de Dios, y aquellos que les dieron refugio y los socorrieron, esos son los verdaderos creyentes. A ellos les serán perdonados sus pecados y recibirán una recompensa generosa.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mccxxxv{Y aquellos que posteriormente crean [abrazando el Islam], emigren y luchen con ustedes, serán de los suyos. Sepan que Dios ha prescrito en Su Libro que sus parientes tienen más derecho a la herencia que sus hermanos en la fe, y Dios es conocedor de todas las cosas.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mccxxxvi{\basmalahes Dios y Su Mensajero están exentos de responsabilidad sobre el pacto que ustedes habían celebrado con los idólatras.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mccxxxvii{[Los que combatieron a los musulmanes en la península árabe] pueden transitar [con libertad y seguridad] por la tierra cuatro meses. Sepan que no podrán eludir a Dios, porque será Dios Quien afrente a los que se negaron a creer.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mccxxxviii{Dios y Su Mensajero anuncian a toda la gente en el día más importante de la peregrinación, que Dios ya no tiene ningún pacto con los idólatras, ni tampoco Su Mensajero. [¡Oh, idólatras!] Si se arrepienten [y abandonan la incredulidad] será mejor para ustedes, pero si se rehúsan no podrán escapar de Dios. A los que se negaron a creer anúnciales que recibirán un castigo doloroso,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mccxxxix{excepto aquellos que no quebrantaron los pactos que ustedes celebraron con ellos ni apoyaron a nadie contra ustedes. Respeten el pacto convenido con ellos hasta su plazo acordado. Dios ama a los piadosos [que respetan los acuerdos].\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mccxl{Pero cuando hayan pasado los meses sagrados, maten a esos idólatras dondequiera que los encuentren, captúrenlos, sítienlos y acéchenlos en todo lugar. Pero si se arrepienten [y aceptan el Islam], cumplen con la oración prescrita y pagan el zakat, déjenlos en paz. Dios es Absolvedor, Misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mccxli{Si alguno de los idólatras te pidiera protección, dale asilo para que así recapacite y escuche la Palabra de Dios, luego [si no reflexiona] ayúdalo a alcanzar un lugar seguro. Esto es porque son gente que no sabe.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mccxlii{¿Cómo podrían Dios y Su Mensajero tener un pacto con los idólatras [siendo que ellos no dudaron en combatirlos]? Pero si aquellos con quienes ustedes pactaron anteriormente junto a la Mezquita Sagrada [en La Meca] cumplen lo pactado, cúmplanlo ustedes también. Dios ama a los piadosos [que respetan los pactos].\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mccxliii{¿Cómo [podría tenerse un pacto con ellos siendo que] si obtuvieran una victoria sobre ustedes no tendrían compasión ni respetarían lazo familiar? Quieren agradarlos con sus palabras, pero sus corazones los rechazan. La mayoría de ellos son perversos.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mccxliv{Han cambiado los signos de Dios por un precio vil y apartan a la gente del sendero de Dios. ¡Qué pésimo es lo que hacen!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mccxlv{No respetan pacto ni compromiso con los creyentes. Ellos son los transgresores.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mccxlvi{Pero si se arrepienten, cumplen con la oración prescrita y pagan el zakat, entonces [perdónenlos y sepan que ahora] son sus hermanos en la religión. Así es como explico detalladamente los preceptos a quienes los comprenden.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mccxlvii{Si quebrantan sus juramentos después de haber celebrado un pacto y se burlan de su religión, combatan a los líderes de la incredulidad, pues ellos no respetan los pactos. Quizás así dejen de agredirlos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mccxlviii{¿Acaso no combatirían a quienes faltan a sus juramentos y planearon expulsar al Mensajero, y fueron ellos los que comenzaron primero [con la agresión]? ¿Acaso les temen? Sepan que Dios es más digno de que Le teman, si es que son creyentes.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mccxlix{Combátanlos, pues Dios los castigará a través de sus manos, los humillará, concederá a ustedes el triunfo sobre ellos y curará así los pechos de los creyentes,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mccl{removiendo la ira que hay en ellos. Dios acepta el arrepentimiento de quien quiere. Dios lo sabe todo, es Sabio.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mccli{¿Acaso creen que no se los pondrá a prueba, cuando Dios quiere que se evidencie quiénes combaten verdaderamente [por Su causa] y solo toman como aliados a Dios, a Su Mensajero y a los creyentes? Dios está bien informado de lo que hacen.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mcclii{No es propio que los idólatras construyan y mantengan las mezquitas de Dios, cuando [con sus creencias y acciones] dan testimonio de su incredulidad [en Dios]. Sus obras serán en vano, y sufrirán eternamente en el Infierno.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mccliii{Las mezquitas de Dios deben ser construidas y mantenidas por aquellos que creen en Él, en el Día del Juicio, cumplen con la oración, pagan el zakat, y no temen sino a Dios. Porque ellos son los que siguen la guía.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mccliv{[¡Oh, incrédulos!] ¿Acaso creen que quienes proveen agua a los peregrinos y quienes se encargan del cuidado de la Mezquita Sagrada son equiparables a aquellos que creen en Dios, en el Día del Juicio y luchan por la causa de Dios? Sepan que no pueden equipararse ante Dios. Dios no guía a los opresores.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mcclv{Los creyentes que emigraron y contribuyeron a la causa de Dios con sus bienes materiales y sus personas, tienen un grado muy elevado ante Dios. Ellos son los bienaventurados.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mcclvi{Su Señor les albricia [que serán recompensados] con Su misericordia, Su complacencia, y con jardines donde gozarán de delicias inagotables.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mcclvii{Vivirán en ellos por toda la eternidad. Dios les tiene reservada una recompensa grandiosa.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mcclviii{¡Oh, creyentes! No tomen a sus padres y hermanos como aliados si estos prefieren la incredulidad a la fe; quien de ustedes los tome a ellos por aliados será de los opresores.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mcclix{Diles [¡oh, Mujámmad!]: ``Si sus padres, hijos, hermanos, cónyuges y familiares, los bienes materiales que hayan adquirido, los negocios que teman perder, y las propiedades que posean y les agraden, son más amados para ustedes que Dios, Su Mensajero y la lucha por Su causa, esperen que les sobrevenga el castigo de Dios [que pronto llegará]. Dios no guía a los corruptos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mcclx{[Recuerden que] Dios los socorrió en muchas ocasiones, como el día de [la batalla de] Hunain, cuando ustedes se vanagloriaban de su superioridad numérica, pero de nada les valió y les resultó estrecha la Tierra [para escapar cuando los atacaron los idólatras] a pesar de su vastedad, y huyeron.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcclxi{Pero Dios hizo descender el sosiego sobre Su Mensajero y sobre los creyentes, e hizo descender tropas [de ángeles] que ustedes no pudieron ver y castigó a los que se negaban a creer [con una derrota]. Así es como Dios castiga a los que se niegan a creer.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mcclxii{Luego, Dios perdonó a quienes se arrepintieron [y abrazaron el Islam]. Dios es Absolvedor, Misericordioso.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mcclxiii{¡Oh, creyentes! Los idólatras son impuros, que no se acerquen a la Mezquita Sagrada después de este año. No teman padecer por ello pobreza o necesidad alguna, que si Dios quiere los proveerá con Su gracia. Dios todo lo sabe, es Sabio.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mcclxiv{Luchen contra quienes no creen en Dios ni en el Día del Juicio, no respetan lo que Dios y Su Mensajero han vedado y no siguen la verdadera religión [el Islam] de entre aquellos de la Gente del Libro [que los hayan agredido], a menos que acepten pagar un impuesto con humildad.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcclxv{Dicen [algunos] judíos: ``‘Uzeir es el hijo de Dios", y los cristianos dicen: ``El Mesías es el hijo de Dios". Estas son solo palabras [sin fundamento] que salen de sus bocas, asemejándose por ello a los incrédulos que los precedieron. ¡Que Dios los destruya! ¡Cómo pueden ser tan desviados!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcclxvi{Tomaron [los judíos] a sus rabinos y [los cristianos] a sus monjes y al Mesías, hijo de María, por divinidades en lugar de Dios. Pero solo se les había ordenado [en la Tora y el Evangelio] adorar a Dios, la única divinidad. No existe nada ni nadie con derecho a ser adorado salvo Él. ¡Glorificado sea! ¡Cómo pueden dedicar actos de adoración a otros!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcclxvii{Pretenden extinguir la luz de Dios con sus palabras, pero Dios hará que Su luz prevalezca aunque esto desagrade a los que se niegan a creer.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcclxviii{Él es Quien envió a Su Mensajero con la guía y la religión verdadera para que llegue a prevalecer sobre toda religión [falsa], aunque esto disguste a los idólatras.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcclxix{¡Oh, creyentes! Muchos de los rabinos y monjes se apropian del dinero ajeno sin derecho, y desvían [a la gente] del sendero de Dios. A aquellos que atesoren el oro y la plata y no contribuyan por la causa de Dios, anúnciales un castigo doloroso.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcclxx{El Día del Juicio, lo que atesoraron se tornará incandescente por el fuego del Infierno, y sus frentes, sus costados y sus espaldas serán marcados con ello. [Se les dirá:] ``Esto es lo que atesoraron, sufran ahora su castigo".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcclxxi{El número de meses para Dios es doce, porque así Él lo decretó el día que creó los cielos y la Tierra. De ellos, cuatro son sagrados. Así es en la religión verdadera. No obren en contra de ustedes mismos durante estos meses. Combatan a los idólatras tal como ellos los combaten a ustedes, y sepan que Dios está con los piadosos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcclxxii{Cambiar los meses sagrados es acrecentar aún más la incredulidad. Así se extraviaron los que se negaron a creer, unos años lo declaraban [al combate] lícito durante determinados meses, mientras que otros años lo declaraban ilícito [durante esos mismos meses], pero siempre hacían que el número de meses sagrados fuera cuatro para que de esta manera coincidiera con el número de meses que Dios había decretado que fueran sagrados. Declaraban lícito lo que Dios había prohibido. [El demonio] les hizo ver sus malas obras como buenas. Sepan que Dios no guía a la gente que se niega a creer.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcclxxiii{¡Oh, creyentes! ¿Por qué cuando se los convoca a combatir por la causa de Dios, responden con desgano? ¿Acaso prefieren la vida mundanal a la otra? Los placeres mundanos son insignificantes respecto a los de la otra vida.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcclxxiv{Si no responden al llamado a combatir los azotará un castigo doloroso, y Dios los sustituirá por otro pueblo [que socorrerá al Profeta y combatirá por Su causa]. Sepan que no perjudicarán a Dios en nada [si se niegan a combatir]. Dios tiene poder sobre todas las cosas.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcclxxv{Si no lo socorren [al Mensajero], sepan que Dios [no necesita de ustedes, pues ya] lo auxilió aquella vez que los incrédulos lo expulsaron [de La Meca], cuando estando en la caverna con su compañero [Abu Bakr], le dijo: ``No te entristezcas, pues Dios está con nosotros". Entonces, Dios hizo descender Su sosiego sobre él [Abu Bakr], los socorrió con un ejército [de ángeles] que ellos no veían, y dispuso que la palabra de los incrédulos se desvaneciera, y que la palabra de Dios sea la que prevalezca. Dios es Poderoso, Sabio.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcclxxvi{Salgan a combatir, sea que tengan una situación fácil o difícil. Contribuyan por la causa de Dios con sus bienes y luchen, porque es lo mejor para ustedes, si supieran.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mcclxxvii{Si hubiera sido por algo mundano fácil de conseguir o un viaje breve, te habrían seguido, pero la distancia [en la batalla de Tabuk] era muy larga [y por ello se negaron a salir a combatir]. Juraron por Dios que si hubieran podido, habrían salido con ustedes. Se destruyeron a sí mismos [con sus excusas falsas], pero Dios sabe que mienten.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcclxxviii{¡Que Dios te disculpe [¡oh, Mujámmad!]! ¿Por qué los has eximido sin antes corroborar quiénes decían la verdad y quiénes estaban mintiendo?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcclxxix{En cambio, aquellos que creen en Dios y en el Día del Juicio no se excusan para que los eximas de la obligación de contribuir con sus bienes materiales y combatir. Dios sabe bien quiénes son los piadosos.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mcclxxx{Los que te presentan excusas para no alistarse [en el ejército] no creen en Dios ni en el Día del Juicio, sus corazones están llenos de dudas, y por sus dudas vacilan.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mcclxxxi{Si [los hipócritas] hubieran querido realmente combatir, se habrían preparado para tal fin; pero Dios no quiso que salieran [con ustedes] y les infundió desgano, y se les dijo: ``Permanezcan con quienes se quedan [por estar verdaderamente eximidos]".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mcclxxxii{Si hubieran salido a combatir, los habrían confundido sembrando la discordia, pues entre ustedes hay quienes prestan oído a lo que dicen, pero Dios conoce bien a los injustos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mcclxxxiii{Ya antes pretendieron sembrar la sedición [cuando arribaste a Medina, ¡oh, Mujámmad!] creando conflictos [entre los creyentes], hasta que la verdad fue revelada y se hizo manifiesta la voluntad de Dios, a pesar de que ellos lo detestaban.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mcclxxxiv{Entre los hipócritas hubo quien te dijo: ``[¡Oh, Mujámmad!] Permíteme quedarme y no me expongas a la tentación". ¿Acaso no cayeron en la tentación [del demonio al negarse a combatir]? El Infierno rodeará a los que se niegan a creer.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mcclxxxv{Si obtienes un éxito se disgustan, pero si recibes un revés dicen: ``Ya habíamos tomado nuestras precauciones", y se marchan alegres.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mcclxxxvi{Diles [¡oh, Mujámmad!]: ``Solo nos sucede lo que Dios decretó para nosotros. Él es nuestro Protector, y a Dios se encomiendan los creyentes".\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mcclxxxvii{Diles [a los hipócritas]: ``Sepan que solo puede sucedernos una de dos cosas buenas, en cambio a ustedes, o bien Dios les enviará un castigo o hará que nosotros los derrotemos. Aguarden su destino, que nosotros aguardamos el nuestro".\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mcclxxxviii{Diles: ``[¡Oh, hipócritas!] Lo que donen, de buena voluntad o por compromiso, no les será aceptado, porque son gente perversa".\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mcclxxxix{Sepan que sus donaciones no son aceptadas porque no creen en Dios ni en Su Mensajero. Ellos realizan la oración con desgano y hacen donaciones con desgano.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mccxc{Que no te maravillen [¡oh, Mujámmad!] sus bienes materiales ni sus hijos, porque Dios decretó que les sirvan de sufrimiento en esta vida, y que sus almas mueran mientras están hundidos en la incredulidad.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mccxci{Les juran a ustedes por Dios que son de los suyos, cuando en realidad no lo son, solo actúan por temor:\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mccxcii{Si encontraran un refugio, una caverna o algún escondite, se dirigirían hacia allí presurosamente [para ocultarse y no combatir].\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mccxciii{De entre ellos hay quienes te critican por cómo repartes las caridades [¡oh, Mujámmad!]. Si les das de ellas [todo lo que pretenden] quedan satisfechos, pero si no lo haces se molestan.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mccxciv{[Sería mejor para ellos] que se conformaran con el reparto de Dios y Su Mensajero, y dijeran: ``Nos basta con Dios, y Dios nos concederá de Su favor y [repartirá entre nosotros] Su Mensajero. De Dios anhelamos que nos conceda bendiciones".\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mccxcv{El zakat debe ser distribuido entre los pobres, los menesterosos, los que trabajan en su recaudación y distribución, aquellos de los que se desea ganar sus corazones, la liberación de los prisioneros, los endeudados, la causa de Dios y el viajero insolvente. Esto es un deber prescrito por Dios, y Dios lo sabe todo, es Sabio.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mccxcvi{Entre ellos hay [hipócritas] quienes critican al Profeta y dicen: ``Escucha todo lo que le dicen", pero ello es para su bien. Él cree en Dios, confía en [la palabra de] los creyentes y es una misericordia para quienes de ustedes [realmente] han llegado a creer. Quienes calumnien al Mensajero de Dios recibirán un castigo doloroso.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mccxcvii{[Un grupo de hipócritas] les juran por Dios con el fin de que ustedes se complazcan con ellos. Pero es de Dios y Su Mensajero de quienes deberían buscar su complacencia, si es que realmente son creyentes.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mccxcviii{¿No saben acaso que quien se enfrente a Dios y a Su Mensajero estará perpetuamente en el fuego del Infierno? Esa es la humillación más terrible.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mccxcix{Los hipócritas temían que un capítulo [del Corán] como este fuera revelado y pusiera en evidencia lo que [realmente] hay en sus corazones. Diles [¡oh, Mujámmad!]: ``Búrlense [de la religión], que Dios pondrá al descubierto lo que tanto temen".\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mccc{Pero si les preguntas, te dicen: ``Solo bromeábamos y nos entreteníamos". Diles: ``¿Acaso se burlaban de Dios, de Sus preceptos y de Su Mensajero?\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mccci{No se excusen, han demostrado ahora su incredulidad a pesar de haber expresado su testimonio de fe anteriormente". Perdonaré a un grupo de ustedes, pero castigaré a otro grupo por haber sido transgresor.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mcccii{Los hipócritas y las hipócritas son aliados unos de otros, incitan al mal y prohíben hacer el bien, y se niegan a hacer caridades. Se olvidaron de Dios y por eso Él se olvidó de ellos [dejándolos fuera de Su misericordia]. Los hipócritas están en el desvío.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mccciii{Dios ha prometido a los hipócritas, a las hipócritas y a los que se niegan a creer que serán castigados con el fuego del Infierno donde sufrirán eternamente; eso será suficiente [castigo] para ellos. Dios los maldecirá y recibirán un castigo incesante.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mccciv{De la misma manera Dios castigó a otros pueblos del pasado que eran más fuertes que ustedes, tenían más riquezas y más hijos, y disfrutaban de lo que Dios les había concedido. Ahora ustedes disfrutan [de lo que Dios les concedió], pero se sumergen en la injusticia tal como ellos lo hicieron. Sus obras no les servirán en esta vida ni en la otra. Ellos son los verdaderos perdedores.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mcccv{¿Acaso no les fueron relatadas las historias de otros pueblos del pasado, como el pueblo de Noé, ‘Ad, Zamud, el pueblo de Abraham, la gente de Madián y las dos ciudades que fueron destruidas? Se les presentaron sus Mensajeros con las pruebas evidentes [pero los rechazaron]. Dios no fue injusto con ellos [al castigarlos], sino que ellos fueron injustos consigo mismos.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mcccvi{Los creyentes y las creyentes son aliados unos de otros, ordenan el bien y prohíben el mal, cumplen con la oración prescrita, pagan el zakat y obedecen a Dios y a Su Mensajero. De ellos Dios tendrá misericordia. Dios es Poderoso, Sabio.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mcccvii{A los creyentes y a las creyentes Dios prometió jardines [en el Paraíso] por donde corren ríos, en los que disfrutarán por toda la eternidad, y hermosas moradas en los jardines del Edén. Pero alcanzar la complacencia de Dios es aún superior. ¡Ese es el éxito grandioso!\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mcccviii{¡Oh, Profeta! Lucha contra los incrédulos y los hipócritas [que te ataquen], y sé severo con ellos. Su morada será el Infierno. ¡Qué pésimo destino!\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mcccix{[Los hipócritas] juran por Dios que no dijeron nada [en contra de la religión de Dios y de Su Mensajero], y he aquí que sí dijeron palabras que evidenciaban su incredulidad, y así renegaron después de haber aceptado el Islam [exteriormente]. También se complotaron para algo que finalmente no pudieron conseguir. ¡Y nada pueden objetar [a la Fe] excepto que Dios los ha enriquecido y [ha hecho que] Su Mensajero [los enriquezca] de Su favor! Mejor sería que se arrepintieran, porque si no lo hacen, Dios les infligirá un castigo doloroso en esta vida y en la otra, y no tendrán en la Tierra protector ni defensor alguno.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mcccx{Entre ellos hay quienes hacen una promesa a Dios diciendo: ``Si Dios nos agracia haremos caridades y seremos de los virtuosos".\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mcccxi{Pero cuando Dios los bendijo con bienes materiales, se mostraron avaros y le dieron la espalda con desdén.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mcccxii{Dios les infundió la hipocresía en sus corazones, que perdurará hasta el día en que se encontrarán con Él. Eso fue por no cumplir su promesa con Dios y por haber mentido.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mcccxiii{¿Acaso no saben que Dios conoce sus intenciones y sus conspiraciones? Dios conoce bien lo oculto.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mcccxiv{Ellos critican a los creyentes que hacen obras voluntarias dando donaciones generosas, y se burlan también de quienes no encuentran qué dar, salvo con un gran esfuerzo. Dios los pondrá a ellos en ridículo y recibirán un castigo doloroso.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mcccxv{Es igual [¡oh, Mujámmad!] que pidas perdón por ellos o que no lo hagas. Aunque pidieras perdón por ellos setenta veces, Dios no los perdonaría, porque no creyeron en Dios ni en Su Mensajero, y Dios no guía a los perversos.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mcccxvi{Los que no participaron [en la batalla de Tabuk] se alegraron por rezagarse contrariando las órdenes del Mensajero. Se negaron a contribuir y luchar por la causa de Dios, y dijeron: ``No marchen [a combatir] con este calor". Diles [¡oh, Mujámmad!]: ``El calor del fuego del Infierno es más intenso aún". Si comprendieran.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mcccxvii{Que rían un poco [en este mundo], porque llorarán mucho [en el Infierno] como retribución por lo que cometieron.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mcccxviii{Si Dios te trae nuevamente [luego de la batalla de Tabuk] ante un grupo de ellos [los hipócritas], y ellos te piden permiso para salir a combatir [en otra batalla], diles: ``No marcharán ni combatirán conmigo contra un enemigo jamás, porque se complacieron en rezagarse la primera vez; quédense entonces con los que se rezagan".\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mcccxix{Cuando alguno de ellos muera, no ores ni te detengas junto a su tumba [para rogar por él], porque no creyeron en Dios ni en Su Mensajero, y murieron en la desobediencia [a Dios].\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mcccxx{Que no te maravillen sus bienes materiales ni sus hijos, pues Dios quiso castigarlos con ellos en esta vida, y que mueran [hundiéndose] en la incredulidad.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mcccxxi{Cuando es revelado un capítulo [del Corán] en el que se les ordena creer en Dios y combatir junto al Mensajero, los que están en condiciones de ir se excusan diciéndote: ``Permítenos quedarnos con los eximidos".\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mcccxxii{Por haber preferido quedarse con los eximidos, Dios bloqueó sus corazones y no pueden discernir.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mcccxxiii{El Mensajero y quienes creen en él luchan con sus bienes materiales y sus personas. Ellos recibirán las bondades [en esta vida y en la otra], y serán quienes [finalmente] triunfen.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mcccxxiv{Dios tiene reservado para ellos jardines [en el Paraíso] por donde corren ríos, donde morarán por toda la eternidad. Ese es el triunfo grandioso.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mcccxxv{Se presentaron algunos beduinos [ante ti, ¡oh, Mujámmad!] pidiéndote permiso para no ir a luchar sin excusa válida, pero los [hipócritas] que mintieron a Dios y a Su Mensajero se quedaron sin excusarse siquiera. A estos incrédulos Dios les infligirá un castigo doloroso.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mcccxxvi{Los débiles, los enfermos y los que carecen de recursos no tienen nada que reprocharse por no poder salir [a combatir], si son sinceros con Dios y Su Mensajero. A los que hacen el bien no hay motivo para censurarlos si en algún momento no pueden hacerlo. Dios es Absolvedor, Misericordioso.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mcccxxvii{Tampoco deben ser reprochados aquellos que cuando se presentaron ante ti [¡oh, Mujámmad!] para que les proveyeras de montura [y así poder combatir por la causa de Dios], les informaste que no contabas con ninguna cabalgadura para ellos, y entonces se retiraron con los ojos inundados de lágrimas, tristes por no poder contribuir [a la causa de Dios].\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mcccxxviii{Los que deben ser censurados son aquellos [hipócritas] que te pidieron permiso para rezagarse [sin excusa válida y no contribuyeron ni siquiera con sus bienes materiales] a pesar de ser ricos. Ellos prefirieron quedarse con los eximidos, y por ello Dios bloqueó sus corazones y no pueden discernir.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mcccxxix{Pretendieron excusarse cuando ustedes regresaron a ellos [de la batalla]; ahora diles [¡oh, Mujámmad!]: ``No se excusen, pues no les creeremos, Dios ya nos informó sobre ustedes". Dios y luego Su Mensajero observarán lo que hacen [y ello dejará al descubierto si son sinceros o no], finalmente comparecerán ante el Conocedor de lo oculto y lo manifiesto, que les revelará lo que solían hacer.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mcccxxx{Cuando ustedes retornaron [después de la batalla], ellos les juraron por Dios [que no pudieron acompañarlos] para que los excusaran; pero apártense de ellos, pues son gente repugnante. En pago por cuanto cometieron, su morada será el Infierno.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mcccxxxi{Les juran por Dios para que se conformen con ellos; pero aunque ustedes se complacieran con ellos, sepan que Dios no Se complace con los corruptos.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mcccxxxii{Algunos beduinos son más incrédulos e hipócritas [que los habitantes de las ciudades], y es más probable que no conozcan los preceptos que Dios reveló a Su Mensajero. Dios todo lo sabe, es Sabio.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcccxxxiii{Entre los beduinos hay quienes consideran que toda donación es una pérdida, y esperan que ustedes sean azotados por un infortunio [para librarse de tener que hacer una contribución]. ¡Que los azote a ellos un infortunio! Dios todo lo oye, todo lo sabe.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mcccxxxiv{Pero también hay entre los beduinos quienes creen en Dios y en el Día del Juicio, y hacen caridades anhelando acercarse más a Dios y merecer las súplicas del Mensajero. Así es como lograrán estar más próximos a Dios. Él los introducirá en Su misericordia. Dios es Absolvedor, Misericordioso.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mcccxxxv{Dios se complace con los primeros que aceptaron el Islam y emigraron [a Medina], se complace con aquellos que los socorrieron, y con todos los que sigan su ejemplo [en la fe y las buenas obras], y todos ellos se complacen con Dios. Él les ha reservado jardines por donde corren ríos, donde morarán por toda la eternidad. Ese es el triunfo grandioso.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mcccxxxvi{Entre la gente de Medina y los beduinos que habitan a su alrededor hay hipócritas. Estos persisten en la hipocresía, tú no los conoces [¡oh, Mujámmad!], pero Yo sí los conozco. Los castigaré dos veces [una en esta vida con adversidades y la otra en la tumba], luego [el Día del Juicio] sufrirán un terrible castigo.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mcccxxxvii{Otros, en cambio, reconocen sus pecados [y se arrepienten], pues realizaron obras malas que empañaron sus obras buenas. A estos Dios les aceptará su arrepentimiento, porque Dios es Absolvedor, Misericordioso.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mcccxxxviii{[¡Oh, Mujámmad!] Toma una parte de sus bienes materiales [como zakat] para expurgarles [con ello sus pecados] y purificarlos [de la avaricia], y ruega por ellos, que tus súplicas les transmiten paz. Dios todo lo oye, todo lo sabe.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mcccxxxix{¿Acaso no saben que Dios acepta el arrepentimiento de Sus siervos y sus caridades [y les multiplica su recompensa por ellas]? Dios es el Indulgente, el Misericordioso.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mcccxl{Diles [¡oh, Mujámmad!, a los hipócritas]: ``Obren como quieran, pero sepan que Dios, Su Mensajero y los creyentes verán sus obras". Luego comparecerán ante el Conocedor de lo oculto y lo manifiesto, y Él les informará lo que cometieron.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mcccxli{Otros esperan el designio de Dios, Quien los castigará [si no se arrepienten] o los perdonará [si lo hacen]. Dios lo sabe todo, es Sabio.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mcccxlii{Quienes [de los hipócritas] construyeron una mezquita para hacer daño, difundir la incredulidad, sembrar la discordia entre los creyentes y dar refugio a quienes combaten a Dios y a Su Mensajero, desde hace tiempo juran que la construyeron para hacer un acto de beneficencia, pero Dios atestigua que mienten.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mcccxliii{No ores [¡oh, Mujámmad!] en ella nunca, y sabe que una mezquita construida con piedad desde el primer día es más digna de que ores en ella, pues allí hay gente que desea purificarse, y Dios ama a quienes se purifican.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mcccxliv{¿Acaso no es mejor quien construye sobre la base de la piedad y la complacencia de Dios que quien construye sobre un acantilado arenoso a punto de desplomarse, que pronto precipitará a sus constructores al Infierno? Dios no guía a los opresores.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mcccxlv{La mezquita que construyeron no dejará de sembrar dudas e hipocresía [entre los incrédulos] hasta que sus corazones se detengan. Dios lo sabe todo, es Sabio.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mcccxlvi{Dios ha comprado a los creyentes, a cambio del Paraíso, sus vidas y sus bienes materiales que ofrecen por la causa de Dios hasta vencer o morir. Esta es una promesa verdadera que está mencionada en la Tora, el Evangelio y el Corán. ¿Quién es más fiel a su promesa que Dios? Bienaventurados sean por ofrecer [sus placeres mundanos] para comprar [los placeres de la otra vida]. Ese es el triunfo grandioso.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mcccxlvii{[El triunfo es de quienes] se arrepienten [ante Dios], Lo adoran, Lo alaban, ayunan, se inclinan y se prosternan [en las oraciones], ordenan el bien y prohíben el mal, y respetan los preceptos [de Dios]. ¡Albricia a los creyentes!\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mcccxlviii{No corresponde que el Profeta ni los creyentes pidan perdón por los idólatras aunque se trate de sus parientes, una vez que se haga evidente que serán de la gente del Infierno.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mcccxlix{Abraham solo pidió perdón por su padre porque se lo había prometido, pero cuando se dio cuenta de que era un enemigo de Dios, se desentendió de él. Abraham era manso de corazón y paciente.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mcccl{Dios no desviaría a un pueblo luego de haberlo guiado, sin antes haberles transmitido Sus preceptos. Dios es Conocedor de todas las cosas.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mcccli{A Dios pertenece el reino de los cielos y de la Tierra, Él da la vida y la muerte, y no tienen fuera de Dios protector ni defensor alguno.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mccclii{Dios perdonó al Profeta, a los creyentes que habían emigrado y a quienes los socorrieron, cuando lo siguieron en los momentos difíciles [de la expedición a Tabuk], y aceptó el arrepentimiento de aquellos cuyos corazones estuvieron a punto de desviarse [al ausentarse de la expedición]. Él es Compasivo y Misericordioso con Sus siervos.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mcccliii{También aceptó el arrepentimiento de los tres que se rezagaron [de la expedición]. A estos les resultó estrecha la Tierra a pesar de su vastedad [por la vergüenza que sentían], estaban acongojados y finalmente comprendieron que no tenían más refugio que Dios. Luego [de un tiempo] Él les aceptó su arrepentimiento para que regresaran [a Dios]. Dios es el Indulgente, el Misericordioso.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mcccliv{¡Oh, creyentes! Tengan temor de Dios y permanezcan junto a los que dicen siempre la verdad.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mccclv{La gente de Medina y los beduinos que habitan a su alrededor no debían negarse a combatir con el Mensajero de Dios [si eran convocados] ni preferir sus propias vidas a la de él, ya que les es registrada una buena obra cada vez que sufren sed, cansancio y hambre mientras luchan por la causa de Dios, y cuando pisan terreno que enfurezca a los incrédulos, cuando los alcanza alguna hostilidad de los enemigos. Dios no deja que se pierda la recompensa de los que hacen el bien.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mccclvi{Cuando contribuyen mucho o poco, o atraviesan un valle, les es registrada [una buena obra]. Así Dios los recompensa más de lo que han hecho.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mccclvii{No deben salir a combatir todos los creyentes en una expedición. Que de cada región, algunos se queden para estudiar la religión y así puedan exhortar a su gente cuando regresen, para que de este modo se preserve [el conocimiento].\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mccclviii{¡Oh, creyentes! Combatan a aquellos incrédulos enemigos que habitan a su alrededor [y los combaten], que comprueben su severidad. Dios está con los piadosos.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mccclix{Cuando un capítulo [del Corán] es revelado, hay entre ellos quienes dicen: ``¿A quién le aumenta su fe?" Mientras que a los verdaderos creyentes sí les aumenta la fe, y se alegran por eso.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mccclx{En cambio, a aquellos cuyos corazones están enfermos [de hipocresía], este [nuevo capítulo] les aumenta maldad a la maldad [espiritual] que ya tienen, y mueren negando la verdad.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mccclxi{¿Acaso no ven que son puestos a prueba cada año una o dos veces? Pero aun así no se arrepienten ni reflexionan.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mccclxii{Cuando un capítulo [del Corán] es revelado, [los hipócritas] se miran entre sí [y susurran]: ``¿Acaso alguien puede ver [lo que hay en nuestros corazones]?", y se alejan. Pero Dios ha alejado sus corazones [de la verdad] porque son gente que no la comprenden.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mccclxiii{Se les ha presentado un Mensajero de entre ustedes mismos que se apena por sus adversidades, se preocupa y desea que alcancen el bien [e ingresen al Paraíso]; es compasivo y misericordioso con los creyentes.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mccclxiv{[¡Oh, Mujámmad!] Si rechazan [el Mensaje] diles: ``Me es suficiente con Dios, no hay otra divinidad salvo Él, a Él me encomiendo y Él es el Señor del Trono grandioso".\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mccclxv{\basmalahes Álif. Lam. Ra’. Éstos son los versículos del Libro sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mccclxvi{¿Acaso se sorprende la gente de que [Dios] le haya concedido la revelación a uno de ellos: ``Advierte a la gente y albricia a los creyentes que por sus buenas obras obtendrán una hermosa recompensa ante su Señor?" Los que se niegan a creer dicen: ``Éste es evidentemente un hechicero".\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mccclxvii{Su Señor es Dios. Creó los cielos y la Tierra en seis eras y luego se estableció sobre el Trono. Él es Quien decide todos los asuntos, nadie podrá interceder ante Él sin Su permiso. Ese es Dios, su Señor; adórenlo. ¿Es que no reflexionan?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mccclxviii{Ante Él deberán comparecer todos, pues la promesa de Dios es verdadera. Él es Quien origina la creación y luego la reproduce para retribuir con equidad a los creyentes que obraron rectamente. En cambio, los que se negaron a creer beberán agua hirviendo y recibirán un castigo doloroso por su incredulidad.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mccclxix{Él es Quien hizo que el Sol tuviese luz propia y determinó que la Luna reflejara su luz en distintas fases para que ustedes puedan computar el número de años y los meses. Dios creó esto con la verdad. Él explica los signos para gente de conocimiento.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mccclxx{En la sucesión de la noche y el día, y en lo que Dios ha creado en los cielos y en la Tierra, hay signos para la gente piadosa.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mccclxxi{Para aquellos que no esperan comparecer ante Mí, se complacen con la vida mundanal, se sienten satisfechos en ella, y son indiferentes con Mis signos,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mccclxxii{su morada será el Fuego por cuanto cometieron.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mccclxxiii{[Pero] a quienes crean y obren rectamente, su Señor los guiará por medio de la fe hacia los Jardines de las Delicias por donde corren ríos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mccclxxiv{Allí invocarán: ``¡Glorificado seas, oh, Señor!" Y el saludo entre ellos será: ``¡Paz!" Y al finalizar sus súplicas dirán: ``¡Todas las alabanzas pertenecen a Dios, Señor del universo!"\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mccclxxv{Si Dios precipitara a la gente el castigo de la misma forma en que la gente se precipita a buscar los bienes materiales, ya les habría llegado su hora. Pero abandoné, ciegos en su extravío, a quienes no esperan comparecer ante Mí.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mccclxxvi{Cuando a la persona le acontece un mal Me implora recostado, sentado o de pie. Pero en cuanto lo libro del mal, continúa desobediente como si nunca Me hubiera invocado. Así es como los transgresores ven sus obras malas como buenas.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mccclxxvii{Destruí a muchas generaciones que los precedieron porque fueron opresores. Sus Mensajeros se presentaron ante ellos con las evidencias, pero no les creyeron. Así castigué al pueblo pecador.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mccclxxviii{Luego hice que ustedes se sucedieran en generaciones unos a otros en la Tierra, para observar cómo obraban.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mccclxxix{Cuando se les recitan Mis versículos, quienes no esperan comparecer ante Mí dicen: ``Tráenos otro Corán distinto o modifícalo". Respóndeles: ``No me es permitido modificarlo, solo sigo lo que me ha sido revelado. Temo que si desobedezco a mi Señor me azote el castigo de un día terrible".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mccclxxx{Di [oh, Mujámmad]: ``Si Dios no hubiera querido, yo no les habría recitado [el Corán] y no lo hubieran conocido jamás. Viví toda mi vida entre ustedes antes de la revelación. ¿Acaso no van a reflexionar?"\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mccclxxxi{¿Hay alguien más injusto que quien atribuye a Dios sus propias invenciones y desmiente Sus signos? Los que hacen el mal no tendrán éxito.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mccclxxxii{Adoran en vez de Dios lo que no puede perjudicarles ni beneficiarles, y dicen: ``Éstos son nuestros intercesores ante Dios". Diles: ``¿Acaso pretenden informarle a Dios algo que suceda en los cielos o en la Tierra que Él no sepa? ¡Glorificado sea! Está por encima de lo que Le asocian".\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mccclxxxiii{La humanidad conformaba una sola nación, pero luego discreparon y se dividieron. Si no fuera por el designio de tu Señor, ya habrían sido juzgados.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mccclxxxiv{Dicen: ``¿Por qué no se le ha concedido [a Mujámmad] un milagro de su Señor?" Respóndeles: ``El conocimiento de lo oculto pertenece solo a Dios. Esperen, que yo también esperaré".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mccclxxxv{Cuando agracio a la gente con una misericordia después de haber padecido alguna adversidad, no agradecen Mi favor. Diles: ``Dios les retribuirá por todo lo que hagan". Mis emisarios registran todo cuanto hacen.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mccclxxxvi{Él es Quien facilitó que puedan transitar por la tierra y por el mar. Cuando navegan con buenos vientos se complacen, pero si los sacude una fuerte tormenta y las olas los golpean por todos lados y creen que ya no tienen salvación, entonces invocan solamente a Dios con toda sinceridad diciendo: ``Si nos salvas de ésta seremos de los agradecidos".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mccclxxxvii{Pero cuando Dios los salva, Lo desobedecen nuevamente sembrando la corrupción en la Tierra con injusticias. ¡Oh, gente! Su corrupción recaerá sobre ustedes mismos. Solo disfrutarán del placer transitorio de esta vida, pero luego comparecerán ante Mí y les comunicaré todo lo que hacían.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mccclxxxviii{La vida mundanal es como el agua que hago descender del cielo con la que se riegan los cultivos de la tierra, de los cuales se alimentan los seres humanos y los animales. Cuando los frutos maduran, la tierra se embellece, y piensan las personas que tienen total disposición sobre ella. Entonces arraso los cultivos de noche o de día, devastando la tierra como si no hubiera sido cultivada. Con ejemplos como este explico los signos para gente que reflexiona.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mccclxxxix{Dios convoca a la morada de la paz y guía a quien quiere por el sendero recto.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcccxc{Quienes obren el bien obtendrán la mejor recompensa y una gracia aún mayor. Sus rostros no serán ensombrecidos ni sentirán humillación. Ellos serán los moradores del Paraíso en el que vivirán eternamente.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mcccxci{Pero quienes hayan obrado el mal recibirán como pago un mal equivalente y una humillación. No encontrarán quién los proteja de Dios. Sus rostros se ennegrecerán como la oscuridad de la noche. Ellos serán los habitantes del Fuego, en el que permanecerán eternamente.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mcccxcii{El día que los congregue a todos le diré a los idólatras: ``Permanezcan en sus sitios ustedes y sus ídolos". Luego los separaremos a unos de otros y sus ídolos dirán: ``Nosotros no los obligamos a que nos adoraran.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mcccxciii{Dios es suficiente como testigo de que no sabíamos que nos adoraban".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcccxciv{Todos serán retribuidos según sus obras. Comparecerán ante Dios, su verdadero Señor, y sus mentiras se desvanecerán.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcccxcv{Pregúntales: ``¿Quién los sustenta con las gracias del cielo y de la Tierra? ¿Quién los agració con el oído y la vista? ¿Quién hace surgir lo vivo de lo muerto y lo muerto de lo vivo? ¿Quién tiene bajo Su poder todas las cosas?" Responderán: ``¡Dios!" Diles: ``¿Acaso no van a tener temor de Él [y abandonar la idolatría]?"\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcccxcvi{Ese es Al-lah, su verdadero Señor. ¿Qué hay más allá de la Verdad sino el extravío? ¿Cómo pueden ser tan desviados?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcccxcvii{Así se cumplió la palabra de tu Señor contra los perversos: no creyeron.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcccxcviii{Di: ``¿Acaso alguno de sus ídolos puede originar una creación y luego reproducirla?" Diles: ``Dios es Quien origina la creación y luego la reproduce. ¿Cómo pueden ser tan desviados [de adorar a otros]?"\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcccxcix{Di: ``¿Acaso alguno de sus ídolos puede guiar a alguien a la verdad?" Di: ``Dios es Quien guía hacia la verdad". ¿Acaso no es más sensato seguir a Quien guía hacia la verdad, en vez de seguir a quienes no pueden guiar a nadie y necesitan ellos mismos ser guiados? ¿Cómo pueden actuar de esa forma?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcd{Pero la mayoría de ellos no sigue sino conjeturas. Las conjeturas no son un argumento válido frente a la Verdad. Dios bien sabe lo que hacen.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcdi{El Corán no puede provenir sino de Dios. Confirma las revelaciones anteriores y explica detalladamente Sus preceptos, no hay duda alguna que proviene del Señor del universo.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcdii{Dicen: ``[Mujámmad] lo ha inventado". Diles: ``Entonces produzcan un capítulo similar [a un capítulo del Corán]. Recurran para ello a quienes quieran fuera de Dios, si es que dicen la verdad".\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcdiii{Desmienten lo que no conocen y aquello cuya interpretación no han recibido aún. Así también desmintieron sus ancestros. Pero observa cómo fue el final de los opresores.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcdiv{Entre ellos hay quienes creen en él y quienes no. Tu Señor conoce bien a los que siembran la corrupción.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcdv{Pero si te desmienten, diles: ``Yo soy responsable de mis obras y ustedes de las suyas. Ustedes no son responsables de lo que yo haga, como yo tampoco soy responsable de lo que ustedes hagan".\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mcdvi{Algunos de ellos te escuchan, pero, ¿acaso tú puedes hacer oír a quien Dios le ha impedido oír y razonar?\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcdvii{Algunos de ellos te miran, pero, ¿acaso tú puedes hacer ver a quien Dios ha enceguecido?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcdviii{Dios no oprime a las personas en absolutamente nada, sino que son las personas las que se oprimen a sí mismas.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mcdix{El día que los congregue, les parecerá no haber permanecido más que una hora. Se reconocerán entre ellos. Quienes desmintieron el encuentro con Dios habrán perdido, porque no seguían la guía.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mcdx{Ya sea que te permita presenciar el castigo con el que los amenazo o que te haga morir antes, de igual manera ellos comparecerán ante Mí. Dios es testigo de lo que hacen.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mcdxi{A cada comunidad envié un Mensajero. Cada vez que lo desmintieron los destruí, salvando al Mensajero y a los creyentes, pero nadie fue castigado injustamente.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mcdxii{Y dijeron: ``¿Cuándo se cumplirá esta amenaza, si es que dices la verdad?"\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mcdxiii{Diles: ``Yo no puedo perjudicar ni beneficiar, a menos que Dios así lo quiera". Toda comunidad tiene un plazo prefijado; cuando éste llega no pueden retrasarlo ni adelantarlo, ni siquiera una hora.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mcdxiv{Di: ``¿Y si el castigo los alcanzara súbitamente de noche o de día? ¿Aun así querrían los pecadores adelantarlo?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mcdxv{¿Acaso van a creer cuando ya haya ocurrido? ¿No era eso lo que, despectivamente, querían que fuera adelantado?"\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mcdxvi{Luego se les dirá a los opresores: ``Sufran el castigo eterno. ¿Acaso no es esta una retribución justa, acorde a lo que solían hacer?"\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mcdxvii{Te preguntan: ``Es real [el Día del Juicio]?" Di: ``¡Juro por mi Señor que sí! Es la verdad de la que no podrán huir".\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mcdxviii{Si los opresores tuvieran cuanto hay en la Tierra, querrían darlo como rescate para salvarse. Pero cuando vean el castigo no podrán mostrar su arrepentimiento. Serán juzgados con equidad y no serán tratados injustamente.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mcdxix{A Dios pertenece cuanto hay en los cielos y en la Tierra. La promesa de Dios se cumplirá, a pesar de que la mayoría lo ignora.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mcdxx{Él da la vida y da la muerte, y ante Él han de comparecer.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mcdxxi{¡Oh, gente! Les ha llegado el Mensaje de su Señor, que es un motivo de reflexión, cura para toda incertidumbre que hubiera en sus corazones, guía y misericordia para los creyentes.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mcdxxii{Diles: ``Que se alegren por esta gracia y misericordia de Dios. Eso es superior a todas las riquezas que pudieran acumular".\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mcdxxiii{Diles: ``Dios les ha provisto de sustento, pero consideraron lícita una parte y prohibida otra parte. Díganme: ¿Acaso Dios les dio esa orden, o están atribuyendo a Dios lo que a ustedes les parece?"\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mcdxxiv{¿Qué creen que se hará con ellos, los que atribuyen a Dios sus propias invenciones, el Día del Juicio? Dios concede grandes favores a la gente, pero la mayoría no Le agradece.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mcdxxv{No hay situación en la que se encuentren, no hay pasaje del Corán que reciten ni otra obra que realicen, sin que Yo sea testigo de lo que hacen. A tu Señor no se Le escapa nada en la Tierra ni en el cielo, ni siquiera algo del peso de un átomo. No existe nada menor o mayor a eso que no esté registrado en un Libro claro.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mcdxxvi{Los amigos cercanos de Dios no han de temer ni estarán tristes,\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mcdxxvii{porque creyeron y fueron piadosos.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mcdxxviii{Ellos recibirán la albricia en esta vida y en la otra. La promesa de Dios es inalterable. Ese es el éxito grandioso.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mcdxxix{No te apenes por lo que dicen. El triunfo será de Dios, Él todo lo oye, todo lo sabe.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mcdxxx{A Dios pertenece todo cuanto hay en los cielos y en la Tierra. ¿Y qué siguen, entonces, quienes invocan a ídolos en vez de invocar a Dios? Solo siguen conjeturas y no hacen más que suponer.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mcdxxxi{Él es Quien ha hecho la noche para que descansen y el día para que vean. En ello hay signos para quienes reflexionan.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mcdxxxii{Dicen: ``Dios ha tenido un hijo". ¡Glorificado sea! Él es el Opulento, Le pertenece cuanto hay en los cielos y en la Tierra. No tienen ninguna prueba de lo que inventan. ¿Acaso van a atribuir a Dios algo que no saben?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mcdxxxiii{Di: ``Quienes atribuyen a Dios sus propias invenciones jamás alcanzarán la felicidad".\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mcdxxxiv{Disfrutarán transitoriamente en la vida mundanal, pero luego comparecerán ante Mí y sufrirán un castigo severo por haberse negado a creer.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mcdxxxv{Relátales la historia de Noé, cuando dijo a su gente: ``¡Oh, pueblo mío! Si les molesta que viva con ustedes y que les recuerde el mensaje de Dios, a Él me encomiendo. Decidan lo que van a hacer [conmigo] ustedes y sus ídolos. Tomen una decisión y aplíquenmela, y no me hagan esperar.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mcdxxxvi{Pero si lo rechazan sepan que no les pido ningún pago, solo de Dios espero recompensa. Me ha sido ordenado que me cuente entre quienes se entregan a Él.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mcdxxxvii{Pero lo desmintieron, entonces lo salvé junto a sus seguidores que abordaron el arca, e hice que fueran los sucesores. Ahogué a quienes desmintieron Mi mensaje. Observa el resultado de quienes fueron advertidos.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mcdxxxviii{Luego envié otros Mensajeros, quienes se presentaron ante sus pueblos con las evidencias, pero al igual que sus predecesores no creyeron. Así es como sellamos los corazones de los que transgreden.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mcdxxxix{Luego envié a Moisés y a Aarón con Mis signos ante el Faraón y su nobleza. Pero respondieron con soberbia porque eran criminales.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mcdxl{Cuando les llegó Mi Mensaje dijeron: ``Esto es claramente hechicería".\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mcdxli{Moisés dijo: ``¿Esto es lo que dicen cuando les llega la Verdad? ¿Qué es hechicería? Los hechiceros no tendrán éxito".\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mcdxlii{Dijeron: ``¿Han venido para alejarnos de la religión de nuestros padres, y así ser ustedes dos quienes tengan el dominio en la tierra? Nosotros no les creeremos".\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mcdxliii{El Faraón dijo: ``Convoquen ante mí a todo hechicero experto".\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mcdxliv{Cuando se presentaron los magos, Moisés les dijo: ``Arrojen lo que tengan que arrojar".\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mcdxlv{Y cuando arrojaron [sus bastones, poniendo un hechizo en los ojos de la gente], Moisés dijo: ``Lo que hacen es hechicería y Dios la va a anular. Dios no permite que prosperen las obras de los que siembran la corrupción.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mcdxlvi{Dios confirma la verdad con Sus palabras, aunque eso disguste a los pecadores".\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mcdxlvii{No creyeron en Moisés sino unos pocos de su pueblo que temían que el Faraón y su nobleza los persiguieran. El Faraón era un tirano arrogante y transgresor en su propia tierra.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mcdxlviii{Dijo Moisés: ``¡Oh, pueblo mío! Si creen, encomiéndense a Dios, si es que realmente se han entregado a Él".\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mcdxlix{Dijeron: ``A Ti nos encomendamos, ¡oh, Señor nuestro! No permitas que nos domine este pueblo opresor.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mcdl{Y por Tu misericordia, sálvanos de la gente que se niega a creer".\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mcdli{Le inspiré a Moisés y a su hermano: ``Reserven algunas casas en la ciudad para su pueblo. Conviertan sus casas en lugares de culto, y sean constantes en la oración. [Oh, Moisés]: Albricia [con el auxilio de Dios] a todos los creyentes".\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mcdlii{Dijo Moisés: ``¡Señor nuestro! Has concedido al Faraón y su nobleza suntuosidad y riqueza en la vida mundanal. ¡Señor nuestro! Eso ha hecho que se extravíen y desvíen a la gente de Tu camino. ¡Señor nuestro! Devasta sus riquezas y endurece sus corazones, porque no creerán hasta que vean el castigo doloroso".\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mcdliii{Dijo [Dios]: ``El ruego que han hecho fue respondido. Sean rectos y no sigan el camino de los ignorantes".\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mcdliv{Hice que los Hijos de Israel cruzaran el mar. Pero el Faraón y su ejército los persiguieron injustamente, empujados por el odio. Cuando [el Faraón] sintió que se ahogaba y no tenía salvación, dijo: ``Creo en una única divinidad como lo hace el pueblo de Israel, y a Él me entrego".\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mcdlv{¿Ahora crees? Mientras que antes eras de los rebeldes [a Dios] y de los que sembraban la corrupción.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mcdlvi{Conservaré tu cuerpo [luego de que te ahogues] y te convertirás en un signo para que reflexionen las generaciones que te sucedan. Pero muchas personas son indiferentes a Mis signos.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mcdlvii{Establecí al pueblo de Israel en un lugar próspero y lo sustenté con las cosas buenas de la vida. Pero cuando se les presentó la revelación, algunos creyeron y otros no. Tu Señor los juzgará el Día de la Resurrección acerca de lo que discrepaban.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mcdlviii{[¡Oh, Mujámmad!] Si tienes alguna duda sobre lo que te ha sido revelado, pregúntales a quienes leían la revelación que te precedió. Te ha llegado la Verdad de tu Señor, no seas de los indecisos.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mcdlix{Y no seas como quienes desmintieron las palabras de Dios, porque te contarías entre los perdedores.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mcdlx{Aquellos sobre los que se ha confirmado la palabra de tu Señor no creerán,\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mcdlxi{aunque les llegara todo tipo de evidencia, hasta que finalmente les llegue el castigo doloroso.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcdlxii{No hubo pueblo que al momento de azotarles el castigo, les haya beneficiado creer en ese instante, excepto el pueblo de Jonás. Cuando creyeron los salvé del castigo humillante en esta vida y los dejé disfrutar algún tiempo más.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mcdlxiii{Si tu Señor hubiera querido [imponérselos], todos los habitantes de la Tierra habrían creído. ¿Y tú piensas que puedes obligar a la gente a ser creyente?\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mcdlxiv{Nadie podrá creer a menos que Dios se lo permita, y Él dejará en el extravío a quienes no usen su razonamiento.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mcdlxv{Diles: ``Reflexionen en todo cuanto hay en los cielos y en la Tierra", pero no se benefician de los signos ni de las advertencias aquellos que se niegan a creer.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mcdlxvi{¿Acaso esperan que lleguen días como los que cayeron sobre los pueblos que les precedieron? Diles: ``Esperen, que yo también estaré con ustedes esperando.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mcdlxvii{[Pero cuando llega el castigo a un pueblo] doy socorro a Mis Mensajeros y a los que han creído, porque es Mi compromiso socorrer a los creyentes.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mcdlxviii{Di: ``¡Oh, gente! Si dudan de la religión que vivo, sepan que no adoro a los que ustedes adoran fuera de Dios. Yo solo adoro a Dios, que es Quien los hará morir. A mí me ha sido ordenado ser de los creyentes,\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mcdlxix{consagrarme a la religión monoteísta pura, y no ser de los que asocian divinidades [en la adoración] a Dios,\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mcdlxx{y jamás invocar en vez de Dios lo que no puede beneficiarme ni perjudicarme, porque si lo hiciera sería de los injustos".\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mcdlxxi{Si Dios te azota con una desgracia, nadie excepto Él podrá librarte de ella. Y si te concede un bien, nadie podrá impedir que te alcance. Dios concede Su gracia a quien quiere de Sus siervos. Él es el Absolvedor, el Misericordioso.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mcdlxxii{Di: ``¡Oh, gente! Les ha llegado la Verdad de su Señor. Quien siga la guía lo hará en beneficio propio; pero quien se descarríe, solo se perjudicará a sí mismo. Yo no soy responsable de lo que ustedes hagan".\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mcdlxxiii{[¡Oh, Mujámmad!] Aférrate a lo que te ha sido revelado y sé paciente hasta que Dios juzgue. Él es el mejor de los jueces.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mcdlxxiv{\basmalahes Álif. Lam. Ra’. [El Corán] es un Libro cuyos versículos han sido perfeccionados y explicados detalladamente por el Sabio, el Conocedor.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mcdlxxv{[Diles, ¡oh, Mujámmad!:] ``No adoren sino a Dios, yo he sido enviado a ustedes como amonestador y albriciador.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mcdlxxvi{Supliquen perdón a su Señor y arrepiéntanse ante Él, pues así les concederá de Sus gracias hasta un plazo determinado, y recompensará a todo aquel que haga el bien. Temo que si rechazan [el Mensaje] los alcance el castigo de un día terrible.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mcdlxxvii{Ante Dios han de comparecer y Él es sobre toda cosa poderoso".\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mcdlxxviii{Ellos [los hipócritas] pretenden disimular su aversión y creen poder esconderse de Dios. Aunque se cubran con sus ropas, Él sabe bien lo que esconden y lo que manifiestan, pues conoce lo que encierran los pechos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mcdlxxix{No existe criatura en la Tierra sin que sea Dios Quien la sustenta, Él conoce su morada y por donde transita; todo está registrado en un Libro evidente.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mcdlxxx{Él es Quien ha creado los cielos y la Tierra en seis eras, y Su Trono se encontraba sobre el agua, para probar quiénes de ustedes obran mejor. Si les dices [¡oh, Mujámmad!]: ``Serán resucitados después de la muerte", dirán los que se niegan a creer: ``Esto no es sino hechicería evidente".\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mcdlxxxi{Si les retraso su castigo hasta un plazo determinado, dirán [los incrédulos]: ``¿Qué es lo que lo retiene?" ¿Acaso no saben que el día que les alcance el castigo no podrán evitarlo y los rodeará aquello de lo que se burlaban?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mcdlxxxii{Si le concedo a la persona algo de Mi gracia y luego se la quito, se desespera y se muestra desagradecida.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mcdlxxxiii{Pero cuando le agracio luego de haber padecido una adversidad, dice: ``Se han alejado los males de mí", se regocija con arrogancia.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mcdlxxxiv{No se comportan así quienes fueron pacientes [ante las adversidades] y obraron el bien [en los momentos de gracia]; éstos obtendrán el perdón y una gran recompensa.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mcdlxxxv{[Por misericordia] tú podrías dejar de transmitirles algo de lo que te fue revelado, porque tu corazón se acongoja cuando dicen: ``¿Por qué no se le ha concedido un tesoro o lo acompaña un ángel [para corroborar que es Profeta]?" Pero a ti solo te corresponde transmitir el Mensaje y amonestarlos; Dios es el protector de todas las cosas.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mcdlxxxvi{O cuando dicen: ``Él lo inventó". Diles: ``[Si es verdad que un ser humano puede escribir algo tan maravilloso] escriban ustedes diez suras inventadas como ésta y preséntenlas, y convoquen a quienes puedan [para que los auxilien] en vez de Dios, si es que dicen la verdad".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mcdlxxxvii{Pero si no les responden [el desafío], sepan que [el Corán] ha sido revelado con el conocimiento de Dios, porque no hay otra divinidad salvo Él. ¿Acaso no van a someterse a Él [haciéndose musulmanes]?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mcdlxxxviii{A quienes prefieran la vida mundanal y sus placeres los recompensaré por sus obras en esta vida, se los concederé y no serán defraudados.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mcdlxxxix{Pero no obtendrán en la otra vida sino el castigo del Infierno. Allí, lo que hubieran hecho se desvanecerá, y sus obras habrán sido en vano.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mcdxc{¿Acaso quien cree en el Corán y se basa en una prueba que proviene de Su Señor, que es recitada por un testigo de Dios, y que antes se encontraba mencionada en el Libro de Moisés [la Tora] que fue una guía y una misericordia, es comparable con aquellos aliados que no creen en el Corán? Ellos tendrán por morada el Infierno. No tengas dudas [de ello]. [El Corán] es la Verdad que dimana de tu Señor, aunque la mayoría de las personas no crean.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mcdxci{¿Hay alguien más injusto que quien inventa mentiras acerca de Dios? Ésos deberán comparecer ante su Señor [para responder por sus mentiras], y entonces todos los testigos dirán: ``Éstos son quienes mintieron acerca de su Señor". ¡Que la maldición de Dios caiga sobre los injustos\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mcdxcii{que apartan a la gente del sendero de Dios, tratan de modificarlo y no creen en la otra vida!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mcdxciii{No podrán escapar de Dios en la Tierra, como tampoco tendrán [el Día del Juicio] quien los pueda proteger de Dios, y les será duplicado el castigo. Ellos no se permitieron oír [el Mensaje] ni querían ver [la verdad].\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mcdxciv{Ésos son los que se han perdido a sí mismos, porque todo lo que habían inventado [el Día del Juicio] se esfumará.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mcdxcv{No hay duda de que en la otra vida serán quienes más pierdan.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mcdxcvi{En cambio, los que hayan creído y obrado el bien y se sometieron con humildad a su Señor, serán los moradores del Paraíso, donde permanecerán por toda la eternidad.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mcdxcvii{El parecido de ambos grupos es como el que tienen uno ciego y sordo con aquel que ve y oye. ¿Pueden compararse? ¿Es que no van a recapacitar?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mcdxcviii{[Recuerda] que envié a Noé a su pueblo [y les dijo]: ``He sido enviado para ustedes como un amonestador evidente,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcdxcix{no adoren sino a Dios, pues temo que [si siguen adorando a sus ídolos] los azote el castigo un día doloroso [el Día del Juicio]".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@md{Los líderes de los que se negaron a creer de su pueblo, dijeron: ``No eres más que un mortal como nosotros, y solo te siguen los pobres y débiles de nuestro pueblo sin ninguna reflexión. No los creemos mejores que nosotros, sino que los consideramos mentirosos".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdi{Dijo [Noé]: ``¡Oh, pueblo mío! Me he presentado ante ustedes con una prueba evidente de mi Señor, Quien me ha agraciado con Su misericordia, a la que ustedes se mantienen ciegos. ¿Acaso creen que vamos a imponerles aceptar [el Mensaje] cuando no están de acuerdo?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdii{¡Oh, pueblo mío! No les pido retribución alguna a cambio [de transmitirles el Mensaje], pues Dios será Quien me recompensará, y no voy a rechazar a los creyentes [pobres como me piden], porque ellos se encontrarán con su Señor [Quien los recompensará por su fe]; y veo que son ustedes un pueblo que se comporta como los ignorantes.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdiii{¡Oh, pueblo mío! ¿Quién me protegerá de Dios si despreciara [a los pobres y débiles]? ¿Es que no recapacitan?\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdiv{No les digo que poseo los tesoros de Dios ni que conozco lo oculto, ni les digo que soy un ángel; tampoco digo que Dios no recompensará [en la otra vida] a aquellos que ustedes consideran inferiores [los débiles y los pobres], pues Dios bien sabe lo que hay en sus almas, porque si lo dijera sería de los injustos".\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdv{Le dijeron: ``¡Oh, Noé! No has dejado de discutir y objetarnos, haz que se desencadene de una vez sobre nosotros aquello con lo que nos amenazas, si es verdad lo que dices".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdvi{Dijo [Noé]: ``Dios lo desencadenará [al castigo] si Él así lo decreta, y entonces no podrán huir.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdvii{Y aunque los quiera beneficiar con mi exhortación, tampoco les servirá de nada si es voluntad de Dios su desvío. Él es su Señor, y ante Él comparecerán".\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdviii{Dicen [los idólatras de La Meca]: ``Él lo inventó". Diles [¡Oh, Mujámmad!]: ``Si yo lo hubiera inventado, sobre mí recaerían las consecuencias de mi delito, y soy inocente del delito [de incredulidad] que ustedes cometen".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdix{[También] le fue revelado a Noé: ``Salvo los que ya han creído, nadie más creerá de tu pueblo; no te aflijas por lo que hacen.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdx{Construye el arca bajo Mi observancia y según Mi inspiración, y no Me hables a favor de quienes obraron injustamente, porque estarán entre los que se ahoguen".\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdxi{Mientras construía el arca, cada vez que pasaban ante él los poderosos de su pueblo se burlaban, y él les decía: ``Si se burlan de nosotros, sepan que ya nos burlaremos de ustedes como lo hacen ahora.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdxii{Ya sabrán a quién le alcanzará un castigo humillante [en esta vida], y [en la otra] sufrirá un tormento eterno".\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdxiii{Cuando llegó el momento de cumplirse Mi orden [del diluvio], el agua comenzó a fluir y correr impetuosamente por el suelo, [entonces] le dije [a Noé]: ``Embarca una pareja de cada especie [de la fauna doméstica de la zona], así como a tu familia, excepto aquél sobre quien pese la sentencia, y [por supuesto] a los creyentes". No obstante, los que habían creído en él eran muy pocos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdxiv{Dijo [Noé]: ``¡Suban al arca! ¡Que en el nombre de Dios navegue y llegue a buen puerto! Mi Señor es Perdonador, Misericordioso".\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdxv{[El arca] navegó con ellos a bordo entre olas altas como montañas. Noé llamó a su hijo que se encontraba en un lugar apartado: ``¡Oh, hijito mío! Sube al arca con nosotros y no te cuentes entre los que se niegan a creer".\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdxvi{Dijo [su hijo]: ``Me refugiaré en una montaña que me protegerá de las aguas". Dijo [Noé]: ``Hoy no habrá nada que pueda protegerlos del mandato de Dios, y solo se salvará aquel a quien Dios le tenga misericordia"; entonces las olas se interpusieron entre ambos, y [su hijo] se contó entre los ahogados.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdxvii{Y fue ordenado: ``¡Oh, tierra! Absorbe tu agua. ¡Oh, cielo! Detente". Y entonces el agua fue decreciendo y así se cumplió el mandato, y [el arca] se asentó sobre el monte Yudi, y fue dicho: ``¡La maldición recayó sobre los injustos!"\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdxviii{Noé invocó a su Señor diciendo: ``¡Oh, Señor mío! Mi hijo era parte de mi familia [y pensé que no sería destruido]; Tu promesa es verdadera, y Tú eres el más justo de los jueces".\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdxix{Dijo [Dios a Noé]: ``¡Oh, Noé! Él no era de [los que se salvarían de] tu familia, pues sus obras no eran rectas; no Me cuestiones respecto aquello sobre lo que no tienes conocimiento. Te advierto para que no te cuentes entre los ignorantes".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdxx{Dijo [Noé]: ``¡Oh, Señor mío! Me refugio en Ti de cuestionarte algo sobre lo que no tengo conocimiento; si no me perdonas y Te apiadas de mí, me contaré entre los perdedores".\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdxxi{Entonces, le fue dicho: ``¡Oh, Noé! Desciende del arca con una paz proveniente de Mí. Que las bendiciones sean contigo y con las comunidades que sucederán a quienes están contigo. A algunas de ellas [que no creerán] las dejaré gozar [de esta vida mundanal], pero luego les azotará de Mi parte un castigo doloroso".\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdxxii{Estas son historias de lo oculto que te revelo [¡oh, Mujámmad!], ni tú ni tu pueblo las conocían. Ten paciencia, que el éxito final será para los que tienen temor de Dios.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdxxiii{Al pueblo de ‘Ad le envié [como Profeta] a su hermano Hud [quien les dijo]: ``¡Oh, pueblo mío! Adoren solo a Dios, pues no existe otra divinidad salvo Él; ustedes no hacen más que inventar mentiras [acerca de Dios al asociarle divinidades].\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdxxiv{¡Oh, pueblo mío! No les pido remuneración alguna a cambio [de trasmitirles el Mensaje], solo anhelo la recompensa de Quien me ha creado. ¿Es que no reflexionan?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdxxv{¡Oh, pueblo mío! Pidan perdón a su Señor y arrepiéntanse, que Él les enviará del cielo lluvias benditas, aumentará su fortaleza y multiplicará su poderío. No den la espalda como los criminales".\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdxxvi{Dijeron: ``¡Oh, Hud! No nos has presentado ningún milagro como para que abandonemos nuestros ídolos solo porque tú lo dices. ¡No tenemos fe en ti!\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mdxxvii{Solo decimos que uno de nuestros ídolos te ha trastornado". Dijo [Hud]: ``Pongo a Dios y a ustedes por testigos de que soy inocente de lo que adoran\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mdxxviii{en vez de Él. Confabúlense todos contra mí [si quieren] y no me hagan esperar.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mdxxix{Yo me encomiendo a Dios, que es mi Señor y el suyo. Sepan que no hay criatura que se escape a Su voluntad. Mi Señor está en el camino recto [y juzga con justicia].\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mdxxx{Pero si me rechazan, yo habré cumplido con transmitirles aquello con lo que fui enviado, y mi Señor los remplazará por otro pueblo diferente [que será creyente]. Sepan que no Lo perjudican en nada [si no creen en Él]; mi Señor es el Protector de todas las cosas".\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mdxxxi{Cuando llegó Mi designio [de destruirlos], salvé por misericordia a Hud y a quienes creyeron con él, librándolos de un castigo terrible.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mdxxxii{Así fue el pueblo de ‘Ad, negaron los signos de su Señor y desobedecieron a Sus Mensajeros, y siguieron a aquellos que se oponen a la verdad con arrogancia y prepotencia.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mdxxxiii{Recibieron la maldición en este mundo y en el Día del Juicio. Los habitantes de ‘Ad negaron a su Señor, y por ello el pueblo de Hud quedó fuera de la misericordia.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mdxxxiv{Y al pueblo de Zamud le envié [como Profeta] a su hermano Sálih, quien les dijo: ``¡Oh, pueblo mío! Adoren a Dios, pues no existe otra divinidad salvo Él. Él los creó de la tierra y los hizo vivir en ella. Imploren Su perdón y arrepiéntanse, porque mi Señor está próximo [cuando Lo invocan] y responde sus súplicas".\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mdxxxv{Dijeron: ``¡Oh, Sálih! Teníamos esperanzas en ti [que fueras nuestro líder] antes de esto. ¿Acaso nos prohíbes que adoremos lo que adoraron nuestros padres? Eso a lo que nos invitas nos resulta muy sospechoso".\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mdxxxvi{Dijo [Sálih]: ``¡Oh, pueblo mío! ¿Acaso no ven que poseo una prueba evidente de mi Señor y que me ha concedido una misericordia? ¿Quién me protegerá de Dios si Lo desobedezco? Lo que me ofrecen no es más que perdición para mí.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mdxxxvii{¡Oh, pueblo mío! Esta es la camella de Dios, y es para ustedes un signo [del poder divino], déjenla que paste en la tierra de Dios y no le hagan ningún daño, pues de lo contrario los azotará un castigo ineludible".\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mdxxxviii{Pero la mataron con crueldad, y entonces [Sálih] les dijo: ``Disfruten en sus hogares durante tres días [porque luego les llegará el castigo]; esa es una promesa que no dejará de cumplirse".\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mdxxxix{Pero cuando llegó lo que había decretado para ellos, salvé de la humillación de aquel día a Sálih y a los que habían creído en él, por misericordia. Tu Señor es el Fortísimo, el Poderoso.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mdxl{Y el estrépito sorprendió a los injustos, que amanecieron muertos en sus casas\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mdxli{como si nunca hubieran habitado en ellas. ¿Acaso los habitantes de Zamud no negaron a su Señor? Por ello el pueblo de Zamud quedó fuera de la misericordia.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mdxlii{Mis [ángeles] enviados se presentaron ante Abraham para darle una albricia. Dijeron: ``¡La paz sea contigo!" Respondió [Abraham]: ``¡Y con ustedes!" Y no tardó en traerles un ternero asado.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mdxliii{Pero cuando observó que sus manos no lo tocaban [al ternero] sospechó de ellos y sintió temor, entonces le dijeron: ``No temas, nosotros fuimos enviados al pueblo de Lot".\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mdxliv{Su mujer, que estaba de pie, se sonrió [sorprendida por la noticia], y le albricié con Isaac y que Isaac tendría como hijo a Jacob.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mdxlv{Ella exclamó: ``¡Cómo es posible! ¿Cómo he de concebir ahora que soy anciana, y mi marido también es un anciano? Esto es algo asombroso".\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mdxlvi{Le dijeron [los ángeles]: ``¿Acaso te asombras del designio de Dios? ¡Qué la misericordia de Dios y Sus bendiciones sean con ustedes, gente de la casa! Dios es Digno de alabanza, Glorioso".\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mdxlvii{Pero cuando se disipó el temor de Abraham y le fue dada la albricia, habló en favor del pueblo de Lot.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mdxlviii{Abraham era indulgente, lleno de compasión y siempre pedía perdón.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mdxlix{[Le fue dicho:] ``¡Oh, Abraham! Desiste de interceder por ellos, pues ha llegado el designio de tu Señor, y los azotará un castigo inapelable".\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mdl{Y cuando Mis emisarios se presentaron ante Lot, éste [pensando que eran viajeros] se preocupó [por lo que su pueblo pudiere hacerles] y se sintió impotente para protegerlos; exclamó: ``¡Éste es un día terrible!"\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mdli{La gente de su pueblo, que ya eran conocidos por sus obscenidades, se presentaron presurosamente ante él, y éste les dijo: ``¡Oh, pueblo mío! Aquí están mis hijas [si desean casarse], porque eso es lo lícito y puro para ustedes. Tengan temor de Dios y no me avergüencen ante mis huéspedes. ¿Es que no hay entre ustedes ni un solo hombre recto?"\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mdlii{Respondieron: ``Tú sabes que no tenemos ningún deseo por tus hijas, y sabes bien lo que realmente queremos".\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mdliii{[Lot] exclamó: ``¡Ojalá tuviera fuerzas [para enfrentarme] contra ustedes, o un apoyo fuerte al que recurrir!"\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mdliv{Dijeron [los ángeles]: ``¡Oh, Lot! Somos emisarios de tu Señor, y sabe que no podrán hacerte ningún daño. Márchate con tu familia durante la noche, y que ninguno de ustedes vuelva la mirada atrás, excepto tu esposa que sufrirá el mismo castigo que ellos. Su destrucción será al alba, ¿acaso el alba no está cerca?"\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mdlv{Cuando llegó Mi designio, volteé [sus hogares] dejando arriba sus cimientos, e hice llover sobre ellos piedras de arcilla a montones,\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mdlvi{marcadas por tu Señor. Sepan [¡oh, idólatras!] que este castigo no está lejos de los injustos [como ustedes].\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mdlvii{Al pueblo de Madián le envié [como Profeta] a su hermano Jetró, quien les dijo: ``¡Oh, pueblo mío! Adoren a Dios, pues no existe otra divinidad salvo Él, y no mermen en la medida ni el peso. Los veo hoy en la prosperidad, pero temo que los azote el castigo de un día ineludible.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mdlviii{¡Oh, pueblo mío! Cumplan en la medida y el peso con equidad, no se apoderen de los bienes ajenos, y no siembren la corrupción y el mal en la Tierra.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mdlix{Confórmense con lo que Dios los sustenta, pues ello es lo mejor para ustedes, si son creyentes. Sepan que yo no he sido enviado para velar por sus obras".\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mdlx{Le respondieron: ``¡Oh, Jetró! ¿Es tu [forma de] adoración la que te ordena que dejemos aquello que adoraban nuestros padres, y dejemos de hacer con nuestros bienes lo que queramos? ¿En serio te crees afable y honrado?"\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mdlxi{Dijo: ``¡Oh, pueblo mío! Me baso en una prueba evidente de mi Señor, Él me ha proveído un sustento generoso. No iba a prohibir lo que considero lícito para mí mismo. Solo pretendo su bienestar en la medida que pueda, pero mi éxito depende de Dios; a Él me encomiendo y ante Él me arrepiento.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mdlxii{¡Oh, pueblo mío! No permitan que su discrepancia conmigo los conduzca a ser alcanzados por un castigo como les ocurrió a los pueblos de Lot, Hud y Sálih. Y recuerden que [el castigo] del pueblo de Lot no está lejos de ustedes.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mdlxiii{Pidan perdón a su Señor y arrepiéntanse, porque mi Señor es Misericordioso, Afectuoso".\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mdlxiv{Dijeron: ``¡Oh, Jetró! No entendemos mucho de lo que estás diciendo, y te consideramos entre nosotros una persona débil. Si no fuera por el clan al que perteneces te lapidaríamos; tú no tienes poder contra nosotros".\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mdlxv{Dijo: ``¡Oh, pueblo mío! ¿Acaso mi tribu es más importante para ustedes que Dios, a Quien han dado la espalda? Mi Señor abarca [con Su conocimiento] todo lo que hacen.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mdlxvi{¡Oh, pueblo mío! Obren acorde a sus principios, que obraré acorde a los míos. Ya sabrán en el futuro quién recibirá un castigo humillante y quién es el que miente. ¡Estén atentos, que yo también estaré atento junto a ustedes!"\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mdlxvii{Cuando llegó Mi designio salvé, por Mi misericordia, a Jetró y a quienes con él creían. Pero a los injustos les sorprendió el estrépito, y amanecieron en sus casas muertos,\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mdlxviii{como si no hubieran habitado en ellas. Los habitantes de Madián fueron execrados como habían sido execrados los de Zamud.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mdlxix{Envié a Moisés con Mis signos y pruebas evidentes\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mdlxx{para que se presentara ante el Faraón y su nobleza, pero ésta siguió la orden del Faraón. El Faraón no se encaminó.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mdlxxi{Él irá al frente de su pueblo el Día del Juicio y los conducirá al [castigo del] Infierno. ¡Qué pésimo lugar al que ingresarán!\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mdlxxii{La maldición los alcanzó en este mundo y perdurará hasta el Día del Juicio. ¡Qué terrible maldición los alcanzó!\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mdlxxiii{Éstas son historias que te he revelado de los pueblos [sobre los que ha descendido un castigo]. Algunos de ellos todavía siguen en pie, y otros han sido devastados.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mdlxxiv{No fui injusto con ellos [al castigarlos], sino que ellos lo fueron consigo mismos [al rechazar a los Profetas]. De nada les sirvieron los ídolos que invocaban en lugar de Dios cuando llegó el designio de tu Señor, no hicieron más que aumentar su ruina.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mdlxxv{Así es el castigo de tu Señor, cuando decide azotar a un pueblo opresor los azota con un castigo doloroso y severo;\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mdlxxvi{en esto hay un motivo de reflexión para quien teme el castigo de la otra vida. El Día del Juicio serán congregadas las personas, ese día será atestiguado por todos.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mdlxxvii{No lo retrasaré sino hasta su plazo prefijado,\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mdlxxviii{pero cuando llegue, nadie podrá hablar, excepto quien tenga el permiso de Dios. Entre los congregados estarán los desdichados y los bienaventurados.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mdlxxix{Los desdichados estarán en el Infierno, donde se oirán sus alaridos y sollozos.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mdlxxx{Estarán en él por toda la eternidad al igual que los cielos y la tierra [de la otra vida], excepto lo que tu Señor quiera. Tu Señor hace lo que quiere.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mdlxxxi{En cambio, los bienaventurados estarán en el Paraíso eternamente al igual que los cielos y la tierra [de la otra vida], excepto lo que tu Señor quiera. [Los bienaventurados] serán recompensados con una gracia sin fin.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mdlxxxii{No tengas ninguna duda sobre lo que [los idólatras] adoran, pues lo que adoran [sin reflexionar] no es sino lo mismo que antes adoraban sus padres. Les daré lo que les corresponda, sin merma alguna.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mdlxxxiii{Concedí a Moisés el Libro, pero se opusieron a él, y de no ser porque tu Señor había decretado [retrasar el castigo hasta el Día del Juicio] ya los habría aniquilado. Ellos [los judíos] también dudan acerca del Corán.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mdlxxxiv{Tu Señor los juzgará a todos por sus obras. Él conoce perfectamente lo que hacen.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mdlxxxv{Mantente firme [¡oh, Mujámmad!, en el sendero recto] como se te ha ordenado, y que también lo hagan quienes se arrepientan [de su incredulidad y te sigan], y no trasgredan los límites. Él ve perfectamente todo lo que hacen.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mdlxxxvi{No se inclinen hacia los opresores [aceptando su injusticia], porque [si lo hacen] los alcanzará el Fuego, y no tendrán protector fuera de Dios ni serán socorridos.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mdlxxxvii{Observa las oraciones prescritas en los dos extremos del día y durante la noche, pues las obras buenas borran las obras malas. Esto es una exhortación para quienes reflexionan.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mdlxxxviii{Sé paciente [ante las dificultades], porque Dios no dejará que se pierda la recompensa de los que hacen el bien.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mdlxxxix{En las generaciones que los precedieron hubo solo unos pocos piadosos que se opusieron a la corrupción en la Tierra, a quienes salvé [junto a sus Profetas]. En cambio, los injustos [que eran la mayoría] permanecieron cegados por los placeres [de la vida mundanal] y terminaron siendo criminales.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mdxc{Tu Señor jamás destruiría un pueblo injustamente, cuando sus habitantes hacen el bien.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mdxci{Si tu Señor hubiera querido, habría hecho de todos los seres humanos una sola nación [de creyentes], [pero por Su sabiduría divina concedió al ser humano libre albedrío] y ellos no dejarán de discrepar [unos con otros],\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mdxcii{excepto aquellos de quienes tu Señor tuvo misericordia [porque siguieron la guía], y con ese objetivo Dios los creó. Pero ha de cumplirse la palabra de tu Señor: ``Llenaré el Infierno de yinnes y de seres humanos [que rechacen a los Profetas]".\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mdxciii{Todo esto que te he revelado sobre las historias de los Mensajeros es para [consolar y] afianzar tu corazón. Te han sido revelados, en este capítulo [del Corán] signos que evidencian la Verdad, y son una exhortación y un motivo de reflexión para los creyentes.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mdxciv{Diles [¡Oh, Mujámmad!] a quienes no creen: ``Obren a su manera, que nosotros lo haremos a la nuestra [según los preceptos del Islam],\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mdxcv{y esperen, que nosotros también aguardaremos [que Dios decida quién tiene razón]".\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mdxcvi{Dios conoce lo oculto de los cielos y de la Tierra, y a Él retornan todos los asuntos. Adórenlo, pues, y encomiéndense a Él, y sepan que su Señor está bien atento a lo que hacen.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mdxcvii{\basmalahes Álif. Lam. Ra’. Éstos son versículos de un Libro elocuente que muestra la verdad.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdxcviii{He descendido el Corán en idioma árabe para que puedan comprender sus significados en su contexto.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdxcix{Te contaré la historia más hermosa de las que te he revelado en el Corán, de la que antes no tenías conocimiento.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdc{Cuando José dijo a su padre [Jacob]: ``¡Padre mío! He soñado que se prosternaban ante mí once estrellas, el Sol y la Luna".\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdci{Dijo [Jacob]: ``¡Hijito mío! No les cuentes el sueño a tus hermanos porque conspirarán contra ti [por envidia]; el demonio es el enemigo declarado de los seres humanos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdcii{Tu Señor te elegirá [como Profeta] y te enseñará a interpretar los sueños; y completará Su bendición en ti [con la revelación] y en la descendencia de Jacob, tal como bendijo a tus antepasados, Abraham e Isaac; tu Señor todo lo sabe, es Sabio".\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdciii{En la historia de José y sus hermanos hay signos para los que buscan la verdad.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdciv{[Los hermanos de José] dijeron: ``José y su hermano [Benjamín] son los preferidos de nuestro padre, a pesar de que somos muchos sus hijos. Nuestro padre está en un error evidente".\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdcv{[Dijo uno de ellos]: ``Maten a José o destiérrenlo para que la atención de nuestro padre sea para nosotros por igual. Luego nos arrepentiremos y podremos ser de los virtuosos nuevamente".\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdcvi{Dijo uno de ellos: ``No maten a José. Si ya tienen decidido deshacerse de él, mejor arrójenlo a lo profundo de un pozo seco, alguna caravana lo recogerá".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdcvii{[Entonces se dirigieron a su padre] diciendo: ``¡Padre nuestro! ¿Por qué no nos dejas cuidar de José? Solo tenemos buenas intenciones con él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdcviii{Deja que venga con nosotros mañana, se divertirá y jugará. Nosotros lo cuidaremos".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdcix{Dijo [Jacob]: ``Me entristece que lo lleven lejos de mí, y temo que ustedes se descuiden y lo devore un lobo".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdcx{Dijeron: ``Si lo devorara un lobo, siendo nosotros un grupo numeroso, seríamos unos inútiles".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdcxi{Cuando se lo llevaron, acordaron arrojarlo a lo profundo de un pozo seco. Una vez que lo hicieron le inspiré a José: ``Algún día les recordarás lo que están haciendo ahora, sin que ellos te reconozcan".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdcxii{Al anochecer, se presentaron ante su padre llorando.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdcxiii{Dijeron: ``¡Padre! Competíamos corriendo entre nosotros y dejamos a José con nuestras provisiones, y lo devoró un lobo. Te decimos la verdad, aunque no quieras creernos".\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdcxiv{Y le mostraron su túnica manchada con sangre falsa. Dijo [Jacob]: ``Lo que ha sucedido no es como me lo cuentan, sino que es una falsedad que inventaron. Me resignaré pacientemente y que Dios me dé consuelo para sobrellevar la desgracia que me acaban de contar".\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdcxv{Cuando pasó una caravana [cerca del pozo], enviaron a uno de ellos a buscar agua. Éste echó el cubo y al subirlo [vio a José y] exclamó: ``¡Buenas noticias! Aquí hay un muchacho". Y lo ocultaron para venderlo; pero Dios bien sabía lo que hacían.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdcxvi{[Mientras espiaban, sus hermanos vieron lo que ocurría y reclamaron que José era su esclavo.] Lo vendieron [a la caravana] por un precio insignificante, unas pocas monedas, para deshacerse de él.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdcxvii{Y luego el egipcio que lo compró le dijo a su mujer: ``Recíbelo honorablemente, podría sernos útil o quizá lo adoptemos como hijo". Así concedí a José una buena posición en esa tierra, y le enseñé la interpretación de los sueños. La voluntad de Dios siempre prevalece, pero la mayoría de la gente no lo sabe.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdcxviii{Y cuando alcanzó la mayoría de edad, le concedí el discernimiento y la sabiduría [a través de la revelación]. Así es como recompenso a los que hacen el bien.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdcxix{Pero la señora de la casa en la cual estaba se sintió atraída por él. Lo llamó y, cerrando las puertas, exclamó: ``¡Ven aquí, soy tuya!" Dijo José: ``¡Qué Dios me proteja! Mi amo [tu esposo] me ha colmado de honores. Debes saber que los traidores no acaban bien".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdcxx{Ella lo deseó, y él la hubiera deseado de no ser porque vio una señal de su Señor. Así lo preservé del pecado y la obscenidad, porque era uno de Mis siervos elegidos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdcxxi{[José procuró huir y] ambos corrieron hacia la puerta, ella [al intentar detenerlo] rasgó la túnica de él por detrás y fueron sorprendidos por el marido de ella junto a la puerta, por lo que ella se apresuró a decir: ``¿Qué pena merece quien ha pretendido deshonrar a tu mujer, sino que lo encarcelen o reciba un castigo severo?"\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdcxxii{Dijo José: ``Fue ella quien intentó seducirme". Entonces un testigo de la familia de ella dijo: ``Si su camisa fue rasgada por delante, ella ha dicho la verdad y él es quien miente.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdcxxiii{Pero si su camisa fue rasgada por detrás, entonces ella miente y él dice la verdad".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdcxxiv{Cuando el esposo vio que la camisa estaba rasgada por detrás, dijo: ``Es una astucia propia de mujeres; sus artimañas son terribles.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdcxxv{¡José! Olvida lo sucedido [y no se lo menciones a nadie]. Y tú, mujer, pide perdón por lo que has hecho; porque has incurrido en una falta grave".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdcxxvi{Pero algunas mujeres de la ciudad comentaron: ``La mujer del gobernador pretende seducir a su joven criado. Su amor por él la ha trastornado. Pensamos que está profundamente equivocada".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdcxxvii{Cuando [la mujer del gobernador] se enteró de sus habladurías las invitó [a su casa], les preparó un banquete y dio a cada una de ellas un cuchillo [para cortar la comida]. Entonces le dijo [a José]: ``Preséntate ante ellas". Cuando lo vieron quedaron tan asombradas [por su belleza] que se cortaron la mano [por la distracción], y dijeron: ``¡Dios Santo! No es un ser humano, es un ángel hermoso".\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdcxxviii{[Dijo ella:] ``Éste es por quien me censuraban. Yo quise seducirlo, pero se mantuvo casto. Si no hace lo que le pido, ordenaré que lo encarcelen y terminará siendo humillado".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdcxxix{Dijo [José]: ``¡Señor mío! Prefiero la cárcel a caer en lo que éstas mujeres me proponen; pero si no apartas de mí su acoso, cederé a sus encantos y cometeré una estupidez".\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdcxxx{Pero su Señor respondió a su súplica y apartó de él sus artimañas; Él todo lo oye, todo lo sabe.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdcxxxi{Luego, a pesar de las pruebas de su inocencia, optaron por encarcelarlo temporalmente [para evitar los rumores].\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdcxxxii{Junto con él fueron encarcelados otros dos jóvenes. Dijo uno de ellos: ``Me vi en un sueño prensando vino". Y dijo el otro: ``Yo me vi llevando pan sobre la cabeza, del cual comían los pájaros. Háblanos sobre su interpretación, porque nos pareces un hombre virtuoso".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdcxxxiii{[Dijo José:] ``Antes de que traigan la comida ya les habré dado su interpretación. La interpretación de los sueños es algo que mi Señor me enseñó; sepan primero que rechazo las costumbres de un pueblo que no cree en Dios y niega la existencia de la otra vida.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdcxxxiv{Yo sigo la religión de mis ancestros, Abraham, Isaac y Jacob. Nosotros no asociamos ningún copartícipe a Dios. Esto es una gracia de Dios para nosotros y para todo aquel que siga la guía, pero la mayoría de la gente no lo agradece.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdcxxxv{¡Compañeros de cárcel! ¿Qué es más razonable? ¿Creer en muchos ídolos o creer en Dios, el Único, el Victorioso?\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdcxxxvi{Los [ídolos] que adoran en lugar de Dios, no son sino nombres que ustedes y sus padres han elegido [para algunas piedras y estatuas], siendo que Dios no les reveló nada al respecto. El juicio solo pertenece a Dios, Quien ordenó que no adoren a nada ni nadie excepto a Él; esa es la religión verdadera, pero la mayoría de la gente lo ignora.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdcxxxvii{¡Compañeros de cárcel! [La interpretación de sus sueños es que] uno servirá vino [de nuevo] al rey; mientras que el otro será crucificado y los pájaros comerán de su cabeza. El asunto sobre el que me han consultado ya ha sido decretado".\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdcxxxviii{Le dijo [José] a quien supo que quedaría en libertad: ``Menciona mi caso ante el rey". Pero el demonio le hizo olvidar que lo mencionara ante su amo, por lo que [José] permaneció en la cárcel varios años más.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdcxxxix{[Cierto día] dijo el rey: ``He visto en mis sueños siete vacas gordas devoradas por siete vacas flacas, y siete espigas verdes y otras [siete] secas. ¡Cortesanos! Expliquen mi sueño, si es que saben interpretarlo".\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdcxl{Respondieron: ``Son sueños incoherentes, y nosotros no somos expertos en la interpretación de sueños".\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdcxli{Entonces dijo aquel de los dos que se había salvado [de la prisión] al recordar [a José] mucho tiempo después: ``Yo les explicaré su significado; envíenme [a la cárcel para preguntar a José]".\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdcxlii{``¡José! ¡Tú que dices la verdad! Interpreta qué significa un sueño donde siete vacas gordas son devoradas por siete vacas flacas, y [donde aparecen] siete espigas verdes y otras [siete] secas; para que regrese con su explicación ante la gente y así sepan [sobre tu don]".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdcxliii{Dijo [José]: ``Deben sembrar como de costumbre siete años, pero lo que cosechen déjenlo dentro de la espiga [para conservarlo] excepto una parte, de la que pueden comer.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdcxliv{Luego vendrán siete años de sequía en los que comerán lo que hayan acopiado, salvo la parte [reservada para volver a sembrar].\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdcxlv{Luego vendrá un año en que la gente será bendecida con la lluvia, y en él volverán a tener jugo de los frutos".\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdcxlvi{[Al escuchar la interpretación,] el rey dijo: ``¡Tráiganlo ante mí!" Pero cuando el enviado se presentó ante José, éste le dijo: ``Regresa ante tu amo y pregúntale qué pasó con aquellas mujeres que se cortaron las manos. Mi Señor está bien enterado de sus conspiraciones".\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdcxlvii{[Las mujeres fueron reunidas ante el rey y] les dijo: ``¿Qué sucedió cuando intentaron seducir a José?" Dijeron: ``¡Que Dios nos ampare! No sabemos nada malo de él". Entonces la mujer del gobernador dijo: ``Ahora la verdad ha salido a la luz. Yo soy la que quiso seducirlo, y él decía la verdad.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdcxlviii{Digo esto para que [mi esposo] sepa que no lo traicioné en su ausencia, y sé bien que Dios desbarata las intrigas de los traidores.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdcxlix{No pretendo excusarme, porque el alma suele ordenar el mal, y solo están a salvo de ello aquellos a quienes mi Señor los protege. Mi Señor es Absolvedor, Misericordioso".\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mdcl{Dijo el rey: ``¡Tráiganlo ante mí! Haré que sea mi hombre de confianza". Cuando hablaron le dijo: ``Desde hoy gozas de autoridad y confianza".\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mdcli{Dijo [José]: ``Ponme a cargo de los graneros [y las arcas] del país, porque yo sé cómo administrarlas con prudencia".\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mdclii{Así fue como hice a José gobernar la tierra [de Egipto], donde pudo establecerse a su gusto. Concedo Mi misericordia a quien quiero, y no dejo que se pierda la recompensa de los que hacen el bien [en este mundo].\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mdcliii{Pero para los creyentes piadosos la recompensa en la otra vida es superior.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mdcliv{[Pasados algunos años,] llegaron los hermanos de José [a Egipto en busca de provisiones] y se presentaron ante él, y él los reconoció, mientras que ellos no lo reconocieron.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mdclv{Cuando les hubo suministrado sus provisiones, les dijo: ``[La próxima vez que vengan,] traigan a su hermano por parte de padre. ¿No ven que les he dado la medida justa y soy el mejor de los anfitriones?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mdclvi{Si no lo traen, no obtendrán más provisiones de mí, ni se les permitirá acercarse a mí".\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mdclvii{Dijeron: ``Convenceremos a su padre para que se desprenda de él, haremos todo lo posible de nuestra parte".\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mdclviii{[José] dijo a sus criados: ``Pongan [el valor que pagaron por] su mercancía en su equipaje nuevamente, para que lo encuentren cuando vuelvan a su gente y así ansíen regresar".\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mdclix{Cuando regresaron ante su padre dijeron: ``¡Padre! Se nos ha negado el grano [en el futuro a menos que llevemos a Benjamín], envía pues a nuestro hermano con nosotros para que podamos aprovisionarnos, y ten certeza de que lo cuidaremos".\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mdclx{Dijo [Jacob]: ``¿Acaso esperan que se los confíe de la misma manera que antaño les confié a su hermano [José]? Dios es mejor custodio que ustedes, y el más Misericordioso de los misericordiosos.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mdclxi{Y cuando abrieron su equipaje encontraron que se les había devuelto [el valor de] su mercancía; dijeron: ``¡Padre! ¿Qué más queremos? ¡Aquí está nuestra mercancía, nos ha sido devuelta! [Si dejas venir a Benjamín con nosotros] podremos traer más provisiones para nuestra gente, cuidaremos de nuestro hermano, y obtendremos otra carga de camello. Lo que hemos traído es una carga escasa".\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mdclxii{[Dijo Jacob:] ``No lo enviaré hasta que me juren solemnemente por Dios que lo traerán de regreso, a menos que se vean impedidos por fuerza mayor". Cuando hicieron el juramento les dijo: ``Dios es testigo de este compromiso".\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mdclxiii{Dijo [Jacob]: ``¡Hijos míos! No entren todos [a la ciudad] por la misma puerta, mejor ingresen por puertas diferentes, pero sepan que no puedo hacer nada contra el designio de Dios, pues Él es Quien decreta todos los asuntos. En Él he depositado mi confianza, y a Él deben encomendarse quienes en Él confían".\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mdclxiv{Pero aunque entraron del modo que les aconsejó su padre, esto de nada les habría servido contra el designio de Dios, pues solo era una prevención que Jacob había tomado [para proteger a sus hijos]. Jacob tenía un conocimiento que le había enseñado [a través de la revelación]. Pero la mayoría de la gente lo ignora.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mdclxv{Y cuando [los hijos de Jacob] se presentaron ante José, éste abrazó a su hermano [Benjamín], y le dijo [en secreto]: ``Yo soy tu hermano, ya no sientas pena por lo que ellos hicieron [conmigo]".\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mdclxvi{Y tras haberles dado sus provisiones, escondió una copa [del rey] en el saco de su hermano [Benjamín]. Y [cuando iban saliendo de la ciudad] un pregonero gritó: ``¡Gente de la caravana, son unos ladrones!"\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mdclxvii{Dijeron [los hermanos de José] dirigiéndose a los guardias: ``¿Qué es lo que se ha perdido?"\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mdclxviii{Respondieron: ``Perdimos una copa del rey. A quien la encuentre le daremos la carga de un camello [de recompensa], y [dijo el pregonero:] yo lo garantizo".\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mdclxix{``¡Por Dios! Bien saben que no hemos venido a corromper en la tierra [de Egipto] ni somos ladrones" [dijeron los hermanos de José].\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mdclxx{Dijeron [los guardias]: ``¿Cuál debería ser el castigo de quien esté mintiendo?"\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mdclxxi{[Respondieron:] ``El castigo de aquel a quien se le encontrase [la copa] en su equipaje debería ser que sea aprisionado. Así es como se castiga a los que cometen ese crimen".\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mdclxxii{Entonces [fueron llevados ante José para ser registrados, y] empezó por el equipaje de ellos antes que el de su hermano [Benjamín], de donde sacó la copa. Así se lo inspiré a José. No habría podido quedarse con su hermano [de otra forma], pues así era la ley del rey, y Dios así lo quiso. Elevo en grados a quien quiero [a través del conocimiento], pero por encima de todo sabio está El que todo lo sabe.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mdclxxiii{[Tan pronto como la copa fue descubierta en el equipaje de Benjamín, los hermanos] dijeron: ``Si ha robado, ya antes un hermano suyo había robado", pero José se contuvo y no les respondió, sino que pensó para sus adentros: ``Ustedes son mucho peores, y Dios sabe bien la mentira que están diciendo".\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mdclxxiv{Dijeron [los hermanos]: ``¡Oh, gobernador! Él tiene un padre muy anciano, quédate con uno de nosotros en su lugar; vemos que eres un hombre de bien".\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mdclxxv{Dijo [José]: ``¡Dios nos libre de castigar a otro que aquel al que le encontramos la copa en su poder! Porque seríamos injustos".\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mdclxxvi{Cuando perdieron toda esperanza de persuadirlo, se retiraron a deliberar. Dijo el mayor de ellos: ``¿Recuerdan que nuestro padre nos hizo jurar solemnemente por Dios, pues ya antes habíamos fallado con respecto a José? No me moveré de esta tierra hasta que mi padre lo autorice, o Dios juzgue a mi favor, porque Él es el mejor de los jueces.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mdclxxvii{Vuelvan ante nuestro padre y díganle: ¡Padre! Tu hijo ha robado, y solo atestiguamos sobre lo que hemos sabido, y no tenemos acceso a lo oculto [para saber si realmente lo hizo o no].\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mdclxxviii{Y pregunta en la ciudad donde estuvimos y a la caravana con la que regresamos, pues decimos la verdad".\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mdclxxix{[Pero Jacob al escucharlos] dijo: ``Lo que ha sucedido no es como me lo cuentan, sino que es una falsedad que inventaron. Me resignaré pacientemente y que Dios me dé consuelo para sobrellevar la desgracia que me acaban de contar. Quiera Dios devolverme a todos [mis hijos]. Él todo lo sabe, es el Sabio".\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mdclxxx{Y [le recordó el dolor por su hijo perdido y] se apartó de ellos diciendo: ``¡Qué pena siento por la falta de José!" Y perdió la vista por tanta pena, y quedó desconsolado, sufriendo en silencio.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mdclxxxi{Dijeron [sus hijos]: ``¡Por Dios! No dejarás de recordar a José hasta enfermar o morir".\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mdclxxxii{Dijo [Jacob]: ``Solo me quejo a Dios en mi lamento y mi dolor, y sé de Dios lo que ustedes no saben.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mdclxxxiii{¡Hijos míos! Vuelvan [a Egipto], averigüen sobre José y su hermano, y no desesperen de la bondad de Dios, pues no desesperan de la bondad de Dios sino los incrédulos".\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mdclxxxiv{[En Egipto] se presentaron ante José y le dijeron: ``¡Oh, gobernador! Hemos sido alcanzados por la sequía, nosotros y nuestras familias, por eso trajimos mercadería de escaso valor, pero danos una justa medida y sé caritativo con nosotros; Dios recompensa a los generosos".\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mdclxxxv{Entonces les dijo [José]: ``¿Acaso recuerdan lo que hicieron con José y su hermano, llevados por la ignorancia?"\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mdclxxxvi{Dijeron [sorprendidos]: ``¿Eres tú José?" Respondió: ``Yo soy José y éste es mi hermano [Benjamín]. Dios nos ha agraciado [con el reencuentro]. Quienes tengan temor de Dios y sean pacientes [ante las adversidades], sepan que Dios no dejará de recompensar a los que hacen el bien".\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mdclxxxvii{Dijeron: ``¡Por Dios! Te ha enaltecido Dios muy por encima de nosotros. Nosotros estábamos en el error".\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mdclxxxviii{Dijo [José]: ``Hoy no les reprocharé nada de lo que hayan hecho en el pasado. Que Dios los perdone, Él es el más Misericordioso de los misericordiosos.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mdclxxxix{Vayan con mi camisa y pónganla sobre el rostro de mi padre, que así recuperará la vista; y traigan a toda la familia".\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mdcxc{Cuando la caravana partía, dijo su padre [Jacob a quienes estaban junto a él]: ``Aunque piensen que desvarío, en este momento noto la presencia de José en el aire".\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mdcxci{Dijeron [los otros hijos]: ``¡Por Dios! Sigues en tu antiguo error".\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mdcxcii{Cuando llegaron, le colocaron [la camisa] sobre su rostro y recuperó inmediatamente la vista. [Jacob] exclamó: ``¿No les dije que yo sabía de Dios lo que ustedes ignoran?"\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mdcxciii{Dijeron: ``¡Padre! Pide a Dios que perdone nuestros pecados, nosotros estábamos en el error".\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mdcxciv{Respondió: ``Pediré a mi Señor que los perdone, Él es el Absolvedor, el Misericordioso".\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mdcxcv{Luego [cuando llegaron todos a Egipto y] se presentaron ante José, éste abrazó a sus padres y dijo: ``Vivan en Egipto, si Dios quiere estarán seguros aquí".\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mdcxcvi{Hizo sentar en el trono a sus padres, que junto a todos [los hermanos] cayeron prosternados ante José, quien dijo: ``¡Padre mío! Esta es la interpretación del sueño que tuve [cuando era niño], y mi Señor hizo que se cumpliera. Dios me favoreció sacándome de la cárcel y trayéndolos del desierto ante mí, a pesar de que el demonio había sembrado la discordia entre mis hermanos y yo. Mi Señor es Sutil con quien quiere, y Él todo lo sabe, es Sabio.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mdcxcvii{¡Señor mío! Me has concedido autoridad y me has enseñado la interpretación de los sueños. ¡Creador de los cielos y la Tierra! Tú eres mi Protector en esta vida y en la otra, hazme morir sometido a Ti, y reúneme con los virtuosos".\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mdcxcviii{[¡Oh, Mujámmad!] Esta historia que te he revelado había permanecido oculta hasta ahora. Tú no estabas presente cuando [los hermanos de José] planearon [eliminarlo] y se complotaron.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mdcxcix{La mayoría de los seres humanos, aunque te esfuerces [para que crean], no serán creyentes.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mdcc{Tú no pides remuneración alguna por transmitir el Mensaje, que está dirigido a toda la humanidad.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mdcci{¡Cuántos signos hay en los cielos y en la Tierra que pasan frente a ellos, pero no prestan atención!\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mdccii{La mayoría de los que creen en Dios caen en dedicarle actos de adoración a otros.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mdcciii{¿Acaso [estas personas] se sienten a salvo de ser alcanzados por el castigo de Dios, o a salvo de que les llegue la Hora del Juicio de improviso, cuando menos lo esperan?\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mdcciv{Di: ``Éste es mi sendero, tanto yo como quienes me siguen invitamos a adorar a Dios con conocimiento. ¡Glorificado sea Dios! No soy de los que idolatran divinidades junto a Dios".\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mdccv{No he enviado antes de ti sino a hombres que pertenecían a sus propias comunidades para que le transmitieran Mi revelación. ¿Por qué [quienes rechazan este mensaje] no viajan por el mundo y observan cómo fue que acabaron los pueblos de la antigüedad [que desmintieron a los Profetas]? La morada de la otra vida será mejor para quienes tienen temor de Dios. ¿Es que no van a reflexionar?\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mdccvi{[Todos los Profetas sufrieron persecución y rechazo] al punto que cuando los Mensajeros se resignaron y tuvieron la certeza de que les desmentirían definitivamente, les llegó Mi auxilio: entonces, todos aquellos a quienes quise [salvar] fueron salvados [y los que rechazaron la verdad fueron destruidos]: pues la gente que se hunde en el pecado no puede escapar de Mi ira.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mdccvii{En las historias [de los Profetas] hay un motivo de enseñanza para la gente que reflexiona. [El Corán] no es un relato inventado, sino que es una confirmación de lo ya revelado anteriormente, así como una explicación detallada de todas las cosas, una guía y misericordia para los creyentes.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mdccviii{\basmalahes Álif. Lam. Ra’. Éstos son los versículos del Libro que te fue revelado [¡oh, Mujámmad!] por tu Señor, aunque la mayoría de la gente no crea.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdccix{Dios es Quien elevó los cielos sin columnas que pudieran ver, luego se estableció sobre el Trono; sometió al Sol y a la Luna haciendo que cada uno recorriera [su órbita] por un plazo prefijado; Él decreta todos los asuntos y explica detalladamente Sus signos para que tengan certeza de que ante Él comparecerán.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdccx{Él fue quien extendió la tierra, dispuso en ella montañas firmes y ríos, a los frutos los creó en pares, [Dios] hace que la noche suceda al día. En esto hay señales para quienes recapacitan.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdccxi{En la tierra hay regiones colindantes cuyos terrenos son variados, en ellos hay huertos de vides, cultivos de cereales, palmeras de un solo tronco o de varios; todo es regado por una misma agua. Algunas dispuso que tuvieran mejor sabor que otras, en esto hay signos [de Dios] para quienes reflexionan.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdccxii{Si te asombras [de estos signos], más asombroso aún es que digan [los incrédulos]: ``¿Acaso cuando seamos reducidos a polvo seremos resucitados?" Ellos no creyeron en su Señor, serán arriados con argollas en sus cuellos [al castigo] y serán los moradores del Infierno, donde sufrirán por toda la eternidad.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdccxiii{Te desafían a que les adelantes el castigo en vez de pedirte ser agraciados por la misericordia divina, siendo que antes de ellos otros pueblos semejantes [en su incredulidad] fueron castigados. Es tu Señor Quien perdona a la gente a pesar de sus injusticias, pero también es severo en el castigo.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdccxiv{Dicen los que se niegan a creer: ``¿Por qué no desciende con él un milagro de su Señor?" [Respóndeles, ¡oh, Mujámmad!,] que tú solo eres un amonestador y que para cada pueblo he enviado un [Profeta como] guía.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdccxv{Dios bien sabe qué se gesta en el vientre de cada hembra, y si completará el ciclo de gestación o no. Él asignó a todas las cosas un tiempo establecido.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdccxvi{Él conoce lo oculto y lo manifiesto, es el Grande, el Sublime.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdccxvii{[Ante Dios] es igual que digan algo en secreto o en público, que se oculten de noche o se muestren de día.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdccxviii{El [ser humano] tiene [ángeles] guardianes por delante y por detrás, que lo protegen por orden de Dios. Sepan que Dios no cambia la condición de un pueblo hasta que ellos no cambien lo que hay en sí mismos. Pero si Dios decreta el castigo para un pueblo, no existe nada que lo pueda impedir, y no encontrarán fuera de Él protector alguno.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdccxix{Él es Quien los hace ver el relámpago con temor [a su peligro] y anhelo [de las lluvias], Él es quien forma las nubes pesadas.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdccxx{El trueno Lo glorifica con su alabanza, así como los ángeles por temor a Él. [Dios] envía los rayos y fulmina con ellos a quien quiere, sin embargo [los que se niegan a creer todavía] discuten acerca de Dios. Él es severo en el castigo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdccxxi{Solo Él tiene el verdadero derecho a ser invocado, y aquellos [ídolos] que invocan en lugar de Dios no podrán responder sus súplicas. [Su ejemplo] es como quien extiende sus manos [frente a un pozo profundo de agua] creyendo que ésta vendrá a su boca, pero esto es imposible. Las súplicas [a los ídolos] de los que se niegan a creer son en vano.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdccxxii{Ante Dios se prosternan quienes están en los cielos y en la Tierra de buen o mal grado, tal como lo hacen sus sombras, por la mañana y por la tarde.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdccxxiii{Pregúntales [¡oh, Mujámmad! a los idólatras]: ``¿Quién es el Señor de los cielos y de la Tierra?" Y diles: ``Él es Dios". Pregúntales: ``¿Es que toman en vez de Él [ídolos como] protectores que no pueden beneficiarse ni perjudicarse ni siquiera a sí mismos?" Y también: ``¿Acaso se pueden equiparar el ciego y el vidente? ¿O las tinieblas y la luz? ¿O es que aquello que Le asocian a Dios ha creado algo como lo hace Dios, por lo que se confundieron y creyeron que debían adorarlo?" Diles: ``Dios es Quien ha creado todas las cosas. Él es el Único, el que tiene dominio absoluto sobre todas las cosas".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdccxxiv{[Dios] envía el agua del cielo, que corre por los valles acorde a la capacidad de los mismos, y en su torrente acarrea espuma en su superficie, igual que la espuma que sale de la fundición para fabricar las alhajas o los utensilios. Con ello Dios les expone un ejemplo para que sepan diferenciar la verdad de lo falso: en cuanto a la espuma, se desvanece rápidamente, y aquello que beneficia a la gente permanece en la tierra [enriqueciéndola]; así es como Dios les expone los ejemplos.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdccxxv{Quienes crean en su Señor obtendrán lo mejor, y quienes se nieguen a creer, sepan que aunque poseyeran todo cuanto existe en la Tierra, o el doble, y lo ofrecieran como rescate [para salvarse del tormento], recibirán un castigo terrible; su morada será el Infierno. ¡Qué pésima morada!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdccxxvi{¿Acaso quien reconoce que lo que te reveló tu Señor es la Verdad es igual al ciego [de corazón que no quiere ver]? Solo recapacitan los dotados de intelecto,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdccxxvii{que cumplen con el compromiso que asumieron y no lo quebrantan,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdccxxviii{que no rompen los lazos familiares que Dios ordenó respetar, que tienen temor de su Señor y Su terrible castigo,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdccxxix{que son perseverantes [en la adoración] anhelando el rostro de su Señor [y Su complacencia], que practican la oración prescrita, que hacen caridades con parte de lo que les he proveído, tanto en privado como en público, y si son maltratados responden con una buena actitud [sabiendo disculpar]; éstos obtendrán como recompensa una morada hermosa\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdccxxx{e ingresarán en los Jardines del Edén junto a quienes creyeron entre sus padres, cónyuges y descendientes. Luego, los ángeles ingresarán ante ellos por todas las puertas,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdccxxxi{y les dirán: ``¡La paz sea sobre ustedes! Porque fueron perseverantes [en la adoración]. ¡Qué hermosa es la recompensa de la morada eterna!"\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdccxxxii{Pero en cambio, quienes quebrantan el compromiso que asumieron con Dios, rompen los lazos familiares que Dios ordenó respetar y siembran la corrupción en la Tierra, serán maldecidos y merecerán la peor de las moradas.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdccxxxiii{Dios concede sustento abundante a quien quiere y se lo restringe a quien quiere. [Algunos] se regocijan con la vida mundanal, pero ¿qué es la vida mundanal comparada con la otra, sino un goce ilusorio?\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdccxxxiv{Dicen los que se niegan a creer: ``¿Por qué no se le concede un milagro de su Señor [que así creeremos]?" Diles [¡oh, Mujámmad!]: ``Dios extravía a quien quiere, y guía hacia Él a quien se arrepiente".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdccxxxv{Los corazones de los creyentes se sosiegan con el recuerdo de Dios. ¿Acaso no es con el recuerdo de Dios que se sosiegan los corazones?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdccxxxvi{Quienes creen y obran rectamente serán los bienaventurados, tendrán un destino hermoso.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdccxxxvii{Te he enviado a una comunidad que fue precedida por otras, para que les recites lo que te he revelado, pero ellos no creyeron en el Compasivo. Diles: ``Él es mi Señor, no hay otra divinidad salvo Dios, a Él me encomiendo y confío, y a Él he de retornar".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdccxxxviii{Si existiera un libro revelado que pudiera mover las montañas, abrir la tierra o hacer hablar a los muertos, ése sería el Corán. Pero todos los asuntos dependen del decreto de Dios. ¿Acaso no saben los creyentes que si Dios quisiera guiaría a todas las personas? Los que se niegan a creer seguirán padeciendo calamidades que azotarán a su territorio y a sus alrededores por su incredulidad, hasta que les llegue el castigo que Dios les ha advertido. Dios no quebranta Sus promesas.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdccxxxix{También se burlaron de los Mensajeros que vinieron antes de ti, pero los toleré por un tiempo [dándoles la oportunidad de enmendarse, y como no lo hicieron], luego los aniquilé. ¡Qué terrible fue Mi castigo!\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdccxl{¿Es, acaso, Quien tiene a cada uno de los seres vivos bajo Su tutela suprema, [tratando a cada uno de ellos] según lo que merece, [comparable a cualquier otra cosa existente]? Pero a pesar de eso asocian a Dios [en la adoración]. Diles: ``¡Mencionen [a los socios de Dios] si es que existen! ¿Acaso creen que van a informarle de algo que existe en la Tierra y que Él no sepa, o solo hablan sin sentido?" [El demonio] los hizo ver, a los que se negaron a creer, la idolatría como algo bueno, y [por eso] apartan a la gente del camino recto. Pero aquel a quien Dios extravía, nadie lo podrá guiar.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdccxli{Ellos serán castigados en esta vida, pero el tormento que les aguarda en la otra será aún más severo, y no tendrán quién los proteja de Dios.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdccxlii{La descripción del Paraíso que le fue prometido a los piadosos: En él correrán ríos, sus frutos no se agotarán jamás y su sombra será eterna. Esa será la recompensa de los temerosos de Dios, mientras que el castigo de los incrédulos será el Infierno.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdccxliii{Aquellos a quienes concedí el Libro [el Corán] se regocijan con lo que te fue revelado [¡oh, Mujámmad!], pero entre los aliados hay quienes negaron algunas partes [del Corán]. Diles: ``Me ha sido ordenado adorar a Dios y no asociarle nada [en la adoración]; a Él me encomiendo y ante Él compareceré".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdccxliv{Así te he revelado el Corán en [idioma] árabe. Pero si tú sigues sus pasiones después de haberte llegado el conocimiento, no tendrás, fuera de Dios, defensor ni protector alguno.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdccxlv{He enviado a otros Mensajeros antes de ti, y les concedí esposas e hijos. Ningún Mensajero podría presentar un milagro salvo con el permiso de Dios. Cada asunto está registrado en un Libro.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdccxlvi{Dios anula o confirma [de Su Designio] lo que quiere. Él tiene en Su poder el Libro donde están registradas todas las cosas [la Tabla Protegida].\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdccxlvii{[¡Oh, Mujámmad!] Puede que te haga ver parte de lo que les tengo reservado [a los incrédulos como castigo], o que te haga morir antes de ello. Tú solo tienes el deber de transmitir el Mensaje, y ante Mí comparecerán.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdccxlviii{¿Acaso no vieron que Yo decreté que fueran perdiendo territorio a manos de los creyentes? Cuando Dios decide algo nadie lo puede impedir. Él es rápido en ajustar cuentas.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdccxlix{En la antigüedad [los incrédulos] también se confabularon [contra los Mensajeros], pero Dios desbarató los planes de todos ellos. Él bien sabe lo que cada ser se propone realizar. Ya sabrán los que se niegan a creer quiénes merecerán la peor de las moradas.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdccl{Dicen los que se niegan a creer: ``Tú no eres un Mensajero". Diles [¡oh, Mujámmad!]: ``Es suficiente Dios como testigo [de mi veracidad] entre ustedes y yo, y también [son testigos de ello] quienes tienen conocimiento sobre los Libros revelados anteriormente.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdccli{\basmalahes Álif. Lam. Ra’. Éste es el Libro que te he revelado para que saques a la gente de las tinieblas a la luz con el permiso de tu Señor, y los guíes hacia el sendero de Dios, el Poderoso, el Loable.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdcclii{A Dios pertenece cuanto existe en los cielos y en la Tierra. ¡Ya verán los que se niegan a creer, el castigo terrible que les aguarda!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdccliii{Los que prefieren la vida mundanal a la próxima y desvían a la gente del camino de Dios, haciéndolo parecer tortuoso. Ellos son los que están en un extravío profundo.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdccliv{Todos los Mensajeros que envié hablaban el lenguaje de su pueblo para así transmitirles claramente el Mensaje. Pero Dios extravía a quien quiere y guía a quien quiere; Él es el Poderoso, el Sabio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdcclv{Envié a Moisés con Mis signos [al Faraón y su pueblo, y le dije:] ``Saca a tu pueblo de las tinieblas a la luz, y recuérdales las bendiciones que Dios les concedió". En ello hay signos para quien es perseverante y agradecido.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdcclvi{Moisés le dijo a su pueblo: ``Recuerden las bendiciones de Dios para con ustedes cuando los salvó de las huestes del Faraón, quienes los sometían a castigos crueles, degollaban a sus hijos varones y dejaban con vida a sus hijas mujeres. Eso era una dura prueba de su Señor para ustedes".\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdcclvii{Y cuando su Señor anunció: ``Si Le agradecen, Él incrementará su sustento; y sepan que si lo rechazan, Su castigo será severo".\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdcclviii{Dijo Moisés: ``Si ustedes y todos los que habitan en la Tierra no creen, sepan que Él no necesita de Sus criaturas, y es digno de alabanza".\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdcclix{¿Acaso no les fue relatado lo que les aconteció a sus predecesores, al pueblo de Noé, ‘Ad, Zamud, y a todos aquellos que les sucedieron y que solo Dios conoce? Cuando sus Mensajeros se presentaron ante ellos con pruebas claras [de la verdad, los que se negaron a creer] se mordieron los dedos del odio [que sentían por ellos] y les dijeron: ``Nosotros no creemos en el Mensaje que han traído, y tenemos una duda profunda sobre aquello a lo que nos convocan".\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdcclx{Sus Mensajeros les respondieron: ``¿Acaso tienen dudas acerca de Dios, Creador de los cielos y de la Tierra? Él los convoca [a que Lo adoren] para que así les sean perdonados sus pecados y se les permita vivir hasta el plazo que se les ha prefijado". Dijeron: ``Son seres humanos igual que nosotros y solo quieren apartarnos de lo que adoraron nuestros padres; presenten una evidencia clara [de que son Mensajeros de Dios]".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdcclxi{Sus Mensajeros les dijeron: ``Solo somos seres humanos como ustedes, pero Dios agracia [con la profecía] a quien quiere de Sus siervos. No nos es posible presentar un milagro excepto con el permiso de Dios. ¡Los creyentes deben encomendarse a Dios!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdcclxii{Nosotros nos encomendamos a Dios, pues Él nos ha guiado por Su camino, y seremos pacientes ante sus hostilidades. A Dios se encomiendan quienes en Él confían".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdcclxiii{Los que se negaron a creer dijeron a sus Mensajeros: ``Si no vuelven a nuestra religión los expulsaremos de nuestra tierra", pero Su Señor les reveló: ``Exterminaré a los opresores,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdcclxiv{los haré habitar la tierra después de ellos. Eso será para quienes teman [el día de] la comparecencia ante Mí y teman Mi advertencia".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdcclxv{Entonces [los Mensajeros] pidieron el socorro de Dios, y todo prepotente y obstinado fue destruido,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdcclxvi{[tras el Día del Juicio] será castigado en el Infierno, donde se le dará de beber un agua de pus\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdcclxvii{que beberá a sorbos, y apenas podrá tragarla. La muerte lo acechará por todos lados pero no morirá; recibirá un castigo terrible.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdcclxviii{El ejemplo de las obras de quienes no creyeron en su Señor será como el de las cenizas expuestas al viento en un día tempestuoso: [El Día del Juicio] no encontrarán recompensa alguna por sus actos. Ésa será la ruina total.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdcclxix{¿Acaso no ves [¡oh, Mujámmad!] que Dios creó los cielos y la Tierra con un fin justo y verdadero? Si quisiera los haría desaparecer y los reemplazaría por otros.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdcclxx{Eso no es difícil para Dios.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdcclxxi{[El Día de la Resurrección] saldrán de sus tumbas para comparecer ante Dios, y los más débiles dirán a los soberbios [líderes de la incredulidad]: ``Nosotros fuimos sus seguidores [en la vida mundanal]. ¿Nos librarán ahora del castigo de Dios?" Dirán: ``Si Dios nos hubiera guiado los habríamos conducido por el camino recto. Lo mismo da que nos desesperemos o que tengamos paciencia; hoy no podremos escapar del castigo".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdcclxxii{Cuando todos hayan sido sentenciados, el demonio dirá: ``La promesa que Dios les hizo era verdadera, en cambio yo les hice promesas que no cumplí. Yo solo tenía poder para seducirlos mediante susurros, pero fueron ustedes quienes me siguieron. No me culpen ahora, sino que repróchense a ustedes mismos. Yo no puedo socorrerlos en nada ni tampoco ustedes a mí, y hoy me desentiendo de que me hayan asociado [a Dios]". Los opresores recibirán un castigo doloroso.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdcclxxiii{En cambio, quienes hayan creído y obrado correctamente serán introducidos en jardines por donde corren ríos y donde morarán por toda la eternidad, con el permiso de Dios. El saludo allí será: ¡Salam [paz]!\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdcclxxiv{¿Por qué no observas el siguiente ejemplo que te propone Dios?: Una palabra buena es como un árbol bondadoso cuya raíz está firme y sus ramas se extienden hacia el cielo,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdcclxxv{y da frutos en toda época [del año] con el permiso de su Señor. Así es como Dios expone ejemplos para que la gente reflexione.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdcclxxvi{En cambio, una palabra maligna es como un árbol dañino que ha sido arrancado de la tierra y no tiene dónde afirmarse.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdcclxxvii{Dios afianza a los creyentes con la palabra firme en esta vida y en la otra, y extravía a los que cometen injusticias. Dios hace lo que quiere.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdcclxxviii{¿Acaso no reparas en aquellos que en vez de agradecer a Dios por Sus bendiciones son ingratos y conducen a su pueblo a la perdición?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdcclxxix{Serán ingresados al Infierno. ¡Qué pésima morada!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdcclxxx{Porque Le atribuyeron a Dios iguales para desviar [a la gente] de Su camino. Diles [a ellos]: ``Disfruten [en esta vida lo que puedan], porque su destino será el Infierno".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdcclxxxi{Diles a Mis siervos creyentes que cumplan con las oraciones prescritas y den en caridad parte de lo que les he proveído, tanto en privado como en público, antes de que llegue el día en el cual no habrá comercio ni amistad [que pueda alterar el juicio].\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdcclxxxii{Dios es Quien creó los cielos y la Tierra e hizo descender la lluvia del cielo con la que hace brotar los frutos para sustento de ustedes. Él es Quien puso a su servicio los barcos para que, con Su permiso, surquen el mar, y también puso a su servicio los ríos.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdcclxxxiii{[También] puso al servicio de ustedes el Sol y la Luna, que siguen su curso incesantemente, y también puso a su servicio la noche y el día.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdcclxxxiv{Él les ha dado todo cuanto Le han pedido. Si intentaran contar las bendiciones de Dios no podrían enumerarlas. El ser humano es injusto y desagradecido.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdcclxxxv{Y [recuerda, ¡oh, Mujámmad!] cuando Abraham dijo: ``¡Oh, Señor mío! Haz que esta ciudad sea un lugar seguro, y protégeme junto a mi descendencia de caer en la adoración de ídolos.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdcclxxxvi{¡Oh, Señor mío! La adoración a los ídolos ha extraviado a muchas personas. Todo aquel que me siga [en la fe monoteísta] será de los míos, pero quien me desobedezca [rechazando el Mensaje]… Tú eres Absolvedor, Misericordioso.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdcclxxxvii{¡Oh, Señor nuestro! He establecido parte de mi descendencia en un valle árido de poca vegetación junto a Tu Casa Sagrada, para que, ¡oh, Señor nuestro!, cumplan con la oración. Infunde en los corazones de la gente amor por mi descendencia, y provéelos de todo alimento para que sean agradecidos.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdcclxxxviii{¡Oh, Señor nuestro! Tú bien sabes lo que ocultamos y lo que manifestamos, y no hay nada en la Tierra ni en el cielo que pueda esconderse de Dios.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdcclxxxix{¡Alabado sea Dios!, Quien me agració en la vejez con [mis hijos] Ismael e Isaac. Mi Señor escucha bien las súplicas de quienes Lo invocan.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdccxc{¡Oh, Señor mío! Haz que tanto mis descendientes como yo seamos fervientes practicantes de la oración. ¡Oh, Señor nuestro! Concédeme esta súplica.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdccxci{¡Oh, Señor nuestro! Perdóname, así como a mis padres y a todos los creyentes el Día que se celebre el Juicio [Final]".\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdccxcii{No pienses [¡oh, Mujámmad!] que Dios está distraído de lo que hacen los opresores. Él solo está tolerándolos hasta que llegue el día en el que sus miradas quedarán paralizadas.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdccxciii{Ese día saldrán apresurados de sus tumbas con las cabezas erguidas, no podrán parpadear ni tampoco pensar [presas del terror].\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdccxciv{Advierte a la gente [¡oh, Mujámmad!] sobre el día en que los azote el castigo, y los que cometían injusticias digan: ``¡Oh, Señor nuestro! Toléranos un tiempo más [y retórnanos a la vida mundanal] para que respondamos a Tu llamado y sigamos a los Mensajeros". [Pero se les responderá:] ``¿Acaso no habían jurado antes que no serían resucitados?"\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdccxcv{Habitaron en los mismos territorios en que vivieron quienes [no creyeron y] fueron injustos consigo mismos [rechazando el Mensaje], y no creyeron a pesar de que se enteraron de cómo los aniquilé y de que les expuse muchos ejemplos para que reflexionaran.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdccxcvi{Se confabularon [contra ti], pero Dios desbarató sus planes, a pesar de que sus confabulaciones podrían haber derrumbado montañas.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdccxcvii{No pienses [¡oh, Mujámmad!] que Dios no cumplirá con la promesa que les hizo a Sus Mensajeros; Dios es Poderoso, Dueño de la retribución.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdccxcviii{El día en que la Tierra sea cambiada por otra y los cielos [por otros cielos], todos se presentarán ante Dios, el Único, el Victorioso.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdccxcix{Verás a los criminales encadenados.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdccc{Sus vestimentas serán de alquitrán y sus rostros serán abrasados por el fuego.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdccci{Dios retribuirá a cada ser según sus obras; Dios es rápido en ajustar cuentas.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdcccii{Éste [Corán] es un Mensaje para toda la humanidad, para advertirles [sobre el castigo] y para que sepan que Dios es uno. Que los dotados de intelecto reflexionen [en su contenido].\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdccciii{\basmalahes Álif. Lam. Ra’. Éstos son los versículos del Libro, una recitación clara.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mdccciv{Llegará el momento en que quienes se negaron a creer desearán haber sido musulmanes entregados a la voluntad de Dios.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mdcccv{Déjalos que coman, que disfruten y sean seducidos por el apego a esta vida mundanal, que ya sabrán.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mdcccvi{No he destruido una ciudad [que estuviera condenada] hasta que le llegara su término prefijado.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mdcccvii{Ninguna nación puede adelantar ni retrasar su final.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mdcccviii{Y dicen: ``¡Oh, tú [Mujámmad]! A quien se le ha descendido la revelación, eres un demente.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mdcccix{¿Por qué no te presentas acompañado por los ángeles, si es verdad lo que dices?"\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mdcccx{Pero cuando envío a los ángeles es con el castigo, y si los hubiera enviado [en respuesta a sus desafíos] ya no les quedaría tiempo.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mdcccxi{Yo he revelado el Corán y Yo soy su custodio.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mdcccxii{Envié antes de ti [otros Mensajeros] a los pueblos antiguos,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mdcccxiii{pero cada vez que se les presentaba un Mensajero se burlaban de él.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mdcccxiv{Así es como [la burla] se adueña del corazón de los pecadores.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mdcccxv{No creerán en él a pesar del ejemplo de lo que les aconteció a los pueblos anteriores.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mdcccxvi{Y aunque les abriera una puerta en el cielo por la que pudieran ascender [y contemplar a los ángeles] no creerían.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mdcccxvii{Dirían: ``Nuestros ojos ven visiones, nos han hechizado".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mdcccxviii{He dispuesto constelaciones en el cielo, y las he embellecido para quienes las contemplan.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mdcccxix{He protegido al cielo de todo demonio maldito.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mdcccxx{Si intenta escuchar, le arrojaré una bola de fuego visible.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mdcccxxi{He extendido la Tierra, he dispuesto en ella montañas firmes y he hecho crecer en ella de todo en forma equilibrada.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mdcccxxii{Facilité los medios para que puedan vivir en ella ustedes y el resto de las criaturas.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mdcccxxiii{En Mi poder están las reservas de su sustento y les proveo de él en la medida que he determinado.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mdcccxxiv{Envié los vientos fecundadores y hago descender del cielo agua con la que les doy de beber, y no son ustedes los dueños de sus reservas.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mdcccxxv{Yo doy la vida y doy la muerte, y Yo soy el heredero [a quien todo lo creado ha de retornar].\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mdcccxxvi{Conozco a quienes los precedieron y también a quienes los sucederán.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mdcccxxvii{Tu Señor los congregará. Él es Sabio, lo sabe todo.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mdcccxxviii{He creado al ser humano de arcilla, un barro maleable.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mdcccxxix{Y al yinn lo había creado ya antes de fuego.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mdcccxxx{[Recuerda] cuando tu Señor dijo a los ángeles: ``Voy a crear un ser humano de arcilla, de barro maleable.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mdcccxxxi{Cuando lo haya completado e insuflado en él el espíritu que he creado para él, hagan una reverencia [en honor a Mí] ante él".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mdcccxxxii{Todos los ángeles hicieron la reverencia,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mdcccxxxiii{excepto Iblís, que se negó a ser de quienes hicieron la reverencia.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mdcccxxxiv{Dijo [Dios]: ``¡Oh, Iblís! ¿Por qué no te cuentas entre quienes hicieron la reverencia?"\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mdcccxxxv{Dijo: ``No he de hacerla ante un ser humano [que es inferior a mí], al que has creado de arcilla, de barro maleable".\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mdcccxxxvi{Dijo [Dios]: ``Sal de aquí, pues te maldigo.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mdcccxxxvii{Serás maldito hasta el Día del Juicio".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mdcccxxxviii{Dijo: ``¡Oh, Señor mío! Tolérame hasta el Día de la Resurrección".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mdcccxxxix{Dijo: ``Te concedo la prórroga que me pides,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mdcccxl{hasta el día cuyo término está definido".\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mdcccxli{Dijo: ``¡Oh, Señor mío! Por haber dejado que me extravíe, los seduciré y descarriaré a todos,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mdcccxlii{excepto a quienes de Tus siervos hayas protegido".\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mdcccxliii{Dijo [Dios]: ``A quien siga Mi camino recto lo protegeré.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mdcccxliv{No tendrás poder alguno sobre Mis siervos, salvo los que se extravíen siguiéndote".\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mdcccxlv{El Infierno es el lugar donde se reunirán todos ellos.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mdcccxlvi{El Infierno posee siete puertas y cada una está destinada para un grupo determinado [de pecadores].\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mdcccxlvii{Mientras que los piadosos serán retribuidos con jardines y manantiales.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mdcccxlviii{[Se les dirá:] Ingresen a ellos en paz, y estén seguros de que no se les privará de nada.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mdcccxlix{Purificaremos sus corazones de todo rencor. Serán todos como hermanos y se sentarán unos enfrente de otros.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mdcccl{Allí no volverán a sufrir, y vivirán por toda la eternidad.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mdcccli{Anúnciales a Mis siervos [oh, Mujámmad] que soy el Absolvedor, el Misericordioso,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mdccclii{y que Mi castigo es el verdadero castigo doloroso.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mdcccliii{Relátales sobre los huéspedes de Abraham.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mdcccliv{Cuando se presentaron ante él, dijeron: ``¡La paz sea contigo!" [Abraham y su esposa, luego de haberles ofrecido comida y observar que no comían, dijeron]: ``Ustedes nos infunden temor".\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mdccclv{Le dijeron: ``No temas, te anunciamos el nacimiento de un hijo sabio".\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mdccclvi{Dijo: ``¿Me dan ahora la albricia [de un hijo] siendo que me ha alcanzado la vejez?"\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mdccclvii{Dijeron: ``Te albriciamos con la verdad. No seas de quienes han perdido la esperanza".\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mdccclviii{Dijo: ``Solo desesperan de la misericordia de su Señor los extraviados".\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mdccclix{Preguntó: ``¿Cuál es su misión? ¡Oh, emisarios [de Dios]!"\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mdccclx{Dijeron: ``Hemos sido enviados [para castigar] a un pueblo de pecadores,\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mdccclxi{salvo a la familia de Lot, a quienes salvaremos,\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mdccclxii{pero no a su mujer, a quien Dios decretó que fuese de los condenados".\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mdccclxiii{Los emisarios se presentaron ante la casa de Lot.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mdccclxiv{Dijo [Lot]: ``Me son desconocidos".\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mdccclxv{Dijeron: ``Hemos sido enviados para ejecutar el castigo del cual tu pueblo dudaba.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mdccclxvi{Venimos a ti con la Verdad. Siempre decimos la verdad.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mdccclxvii{Sal por la noche con tu familia [y tus seguidores]. Marcha detrás de ellos [para protegerlos] y que ninguno de ustedes mire hacia atrás. Diríjanse hacia donde se les ha ordenado".\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mdccclxviii{Entonces le revelé [a Lot Mi decreto]: ``Todos ellos [los pecadores] serán destruidos al amanecer".\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mdccclxix{Pero se presentaron los habitantes de la ciudad contentos.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mdccclxx{Les dijo [Lot]: ``Ellos son mis huéspedes. No me avergüencen.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mdccclxxi{Tengan temor de Dios y no me humillen".\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mdccclxxii{Dijeron: ``¿No te habíamos prohibido que protegieras gente [en tu casa de nuestras perversiones]?"\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mdccclxxiii{Les respondió: ``Cásense con las mujeres del pueblo si quieren".\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mdccclxxiv{[Dice Dios:] ¡Juro por tu vida! [¡oh, Mujámmad!], que la aberración embriagaba sus mentes.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mdccclxxv{Les sorprendió el castigo al amanecer.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mdccclxxvi{Puse al pueblo de cabeza y les envié una lluvia de piedras de arcilla.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mdccclxxvii{En eso hay signos para quienes reflexionan.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mdccclxxviii{[Esta ciudad arrasada] está aún en una ruta [a la vista de los viajeros].\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mdccclxxix{En eso hay un signo para los creyentes.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mdccclxxx{Los habitantes del pueblo de Jetró cometían injusticias,\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mdccclxxxi{por lo que los castigué. Ambas [ciudades, la de Lot y la de Jetró] son visibles desde una ruta.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mdccclxxxii{Los habitantes de Al Hiyr desmintieron a los Mensajeros.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mdccclxxxiii{Les presenté Mis signos, pero los rechazaron.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mdccclxxxiv{Construían sus casas esculpiendo las montañas y allí se sentían seguros.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mdccclxxxv{Pero los sorprendió el castigo al amanecer,\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mdccclxxxvi{y no los benefició en nada la riqueza que poseían.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mdccclxxxvii{No he creado los cielos, la Tierra y cuanto hay entre ambos sino con un fin justo y verdadero. La Hora se aproxima, así que tú disculpa [a los que niegan el Mensaje] y trátalos de buena manera.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mdccclxxxviii{Tu Señor es el Creador, el que todo lo sabe.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mdccclxxxix{Te he distinguido con la revelación de los siete versículos que se reiteran como parte del grandioso Corán.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mdcccxc{No codicies aquello conque he agraciado a algunos de los ricos [de los que desmienten el Mensaje] y no sientas pena por ellos [a causa de su incredulidad]. Y baja tu ala protegiendo a los creyentes.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mdcccxci{Di: ``He sido enviado para advertirles claramente [sobre un castigo]",\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mdcccxcii{como el que le envié a los que rechazaron [el Mensaje de Dios].\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mdcccxciii{Como los que creen en una parte del Corán y en otra no.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mdcccxciv{¡Por tu Señor! Que haré rendir cuentas a todos ellos\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mdcccxcv{por todo lo que hicieron.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mdcccxcvi{Divulga lo que se te ordena [públicamente] y no te preocupes por los idólatras.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mdcccxcvii{Yo te protegeré de quienes se burlen,\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mdcccxcviii{de quienes ponen junto a Dios otras deidades, ellos ya pronto sabrán [el castigo que les espera].\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mdcccxcix{Sé que te apenas por cuanto dicen,\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcm{pero glorifica con alabanzas a tu Señor y cuéntate entre quienes se prosternan [en oración para aliviar su angustia],\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mcmi{y adora a tu Señor hasta que te llegue la certeza.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mcmii{\basmalahes La orden de Dios [para que comience el Día del Juicio] llegará pronto, no pretendan adelantarla. ¡Glorificado sea! Él está por encima de cuanto Le asocian.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mcmiii{Él envía a los ángeles con la revelación de Sus órdenes a quien Le place de Sus siervos para que advierta: ``No hay otra divinidad más que Yo, tengan temor de Mí".\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mcmiv{Dios creó los cielos y la Tierra con un fin justo y verdadero. Él está por encima de cuanto Le asocian.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mcmv{Creó al ser humano de [algo tan ínfimo como] un óvulo fecundado, y sin embargo este discute constantemente [la existencia y el poder de su Señor].\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mcmvi{Dios creó a los ganados, de los cuales ustedes obtienen sus abrigos y otros beneficios, y también de ellos se alimentan.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mcmvii{Ustedes se regocijan cuando los arrean por la tarde y cuando los llevan a pastar por la mañana.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mcmviii{Llevan sus cargas a lugares que ustedes no podrían alcanzar sino con mucha dificultad. Su Señor es Compasivo, Misericordioso.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mcmix{[Dios creó] los caballos, las mulas y los asnos como montura y para que se luzcan con ellos. Y creó muchas otras cosas que no conocen.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mcmx{Dios es Quien enseña cuál es el sendero recto, del que muchos se desvían. Si hubiera querido los habría guiado a todos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mcmxi{Él es Quien hace descender agua del cielo para que beban de ella y brote la vegetación de la que pastorean sus rebaños.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mcmxii{Con ella hace crecer los cereales, los olivos, las palmeras, las vides y toda variedad de frutos. En ello hay signos para quienes reflexionan.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mcmxiii{Dios ha creado para beneficio de ustedes la noche, el día, el Sol, la Luna y las estrellas; todos están sometidos a Su voluntad. En esto hay signos para quienes razonan.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mcmxiv{Él creó para ustedes una gran diversidad en la Tierra. En ello hay signos para quienes recapacitan.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mcmxv{Él es Quien ha puesto al mar a servicio de ustedes para que puedan comer de él carne fresca y extraer adornos para engalanarse. Pueden ver los barcos surcarlo y usarlos para buscar la gracia de Dios [su sustento]. ¿Por qué no son agradecidos?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mcmxvi{Dios afirmó la tierra con montañas para que se estabilizara, dispuso ríos y caminos para que puedan guiarse,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mcmxvii{y también señales, y para que se orienten en sus viajes, [creó] las estrellas.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mcmxviii{¿Es procedente comparar a Quien es capaz de crear con quien no puede crear nada? ¿Acaso no recapacitan?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mcmxix{Si intentaran contar las gracias de Dios no podrían enumerarlas. Dios es Absolvedor, Misericordioso.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mcmxx{Dios sabe lo que ocultan y lo que manifiestan.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mcmxxi{[Los ídolos] a quienes ustedes invocan en lugar de Dios, no solo no pueden crear absolutamente nada, sino que ellos mismos son creados.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mcmxxii{Son [objetos] inertes, sin vida. ¿Cómo van a saber ellos cuándo serán resucitados?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mcmxxiii{Su divinidad es una sola, pero los corazones de quienes no creen en la otra vida no admiten [la fe] porque son soberbios.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mcmxxiv{No hay duda de que Dios sabe lo que ocultan y lo que manifiestan. Él no ama a los soberbios.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mcmxxv{Cuando se les pregunta [a los idólatras]: ``¿Qué opinan sobre lo que ha revelado su Señor?" Responden: ``Son leyendas de los antiguos".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mcmxxvi{Éstos cargarán con sus propios pecados el Día de la Resurrección, y con parte de los pecados de aquellos a quienes extraviaron y que los siguieron por ignorancia. ¡Qué pésima es la carga que llevarán!\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mcmxxvii{También se complotaron [los incrédulos] anteriormente [en Babel], pero Dios destruyó sus [altas] edificaciones desde los cimientos y los techos se derrumbaron sobre ellos. El castigo les llegó de donde menos lo esperaban.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mcmxxviii{Luego, el Día de la Resurrección, Dios los humillará y les preguntará: ``¿Dónde están aquellos que ustedes Me asociaban y a los que defendían?" [Ese día] quienes recibieron el conocimiento [de cada nación] dirán [a sus pueblos]: ``Hoy, la humillación y el castigo pesarán sobre los incrédulos".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mcmxxix{Cuando los ángeles tomen las almas de quienes hayan sido incrédulos, éstos se entregarán [diciendo]: ``No cometimos ningún mal". [Pero los ángeles responderán:] ``¡Sí lo cometieron! Dios sabe bien lo que hacían.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mcmxxx{Ingresen por las puertas del Infierno, allí permanecerán eternamente. ¡Qué pésima morada la que tendrán los soberbios!"\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mcmxxxi{[Y ese día] se les preguntará a los piadosos: ``¿Qué ha revelado su Señor?" Responderán: ``Lo mejor". Quienes hayan obrado rectamente obtendrán en este mundo una bella recompensa, pero la morada de la otra vida será aún mejor. ¡Qué placentera será la morada de los piadosos!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mcmxxxii{Ingresarán a los Jardines del Edén por donde corren ríos, y allí tendrán todo lo que deseen. Así retribuye Dios a los piadosos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mcmxxxiii{Cuando los ángeles tomen las almas de los piadosos, les dirán: ``¡Que la paz sea sobre ustedes! Ingresen al Paraíso como recompensa por sus obras".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mcmxxxiv{¿Acaso esperan [los incrédulos] que se presenten ante ellos los ángeles [para tomar sus almas] o que los azote el castigo [para recién entonces creer]? Eso hicieron quienes los precedieron. Dios no fue injusto con ellos [al enviarles el castigo], sino que ellos fueron injustos consigo mismos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mcmxxxv{Sufrirán las consecuencias de las malas acciones que cometieron y los azotará el castigo del cual se burlaban.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mcmxxxvi{Los idólatras argumentarán: ``Si Dios hubiera querido, ni nosotros ni nuestros antepasados habríamos adorado a otro fuera de Él, ni habríamos declarado ilícitas las cosas sin Su permiso". Lo mismo dijeron quienes los precedieron. Pero los Mensajeros solo tienen la obligación de transmitir el Mensaje con claridad [y Dios será Quien los juzgará].\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mcmxxxvii{Envié a cada nación un Mensajero [para que los exhortara a] adorar a Dios y a rechazar la idolatría. Algunos de los pueblos fueron guiados por Dios, y a otros se les decretó el extravío. ¡Viajen por el mundo y observen cual fue el destino de quienes desmintieron [Mis signos]!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mcmxxxviii{Debes saber [¡oh, Mujámmad!] que por más que te empeñes en guiarlos, Dios no guiará [por la fuerza] a quienes hayan elegido el extravío. Éstos no tendrán quién los auxilie.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mcmxxxix{Juran solemnemente por Dios que Él no resucitará a los muertos. ¡Sí! [Los resucitará,] pues es una promesa inalterable [de Dios] y Él no falta a Su promesa. Aunque la mayoría de la gente lo ignore.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mcmxl{[Dios los resucitará] para demostrarles cuál era la Verdad sobre la que discrepaban y para que los incrédulos comprendan que estaban equivocados.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mcmxli{Cuando decreto algo, digo: ``¡Sé!" Y es.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mcmxlii{A quienes emigraron por la causa de Dios después de haber sido perseguidos, les concederé una hermosa recompensa en esta vida, aunque la recompensa en la otra vida será aún mayor, si lo supieran.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mcmxliii{Ellos fueron pacientes y se encomendaron plenamente a su Señor.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mcmxliv{No envié antes de ti sino hombres a quienes les transmitía Mi revelación. ¡Consulten a la gente de conocimiento lo que no sepan!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mcmxlv{Los envié con evidencias claras y con Libros revelados. Y a ti [¡oh, Mujámmad!] te he revelado el conocimiento [de la Sunnah] para que expliques a la gente la revelación [el Corán] que habían recibido, para que así reflexionen.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mcmxlvi{¿Acaso quienes se confabularon [contra el Profeta] se sienten a salvo de que Dios los haga tragar por la tierra, o de que les llegue el castigo por donde menos lo esperan?\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mcmxlvii{¿O de que los sorprenda ocupados en sus quehaceres sin que puedan evitarlo?\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mcmxlviii{¿O de que los alcance una lenta decadencia? Su Señor es Compasivo, Misericordioso [y no les adelantará el castigo].\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mcmxlix{¿Acaso no observan que todo cuanto Dios ha creado proyecta su sombra a su derecha y a su izquierda prosternándose ante Dios, mostrando su humildad?\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mcml{Ante Dios se prosternan los ángeles y toda criatura existente en los cielos y en la Tierra, y no se comportan con soberbia.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mcmli{[Los ángeles] temen a su Señor que está por encima de ellos, y ejecutan todo cuanto se les ordena.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mcmlii{Dios dice: ``No adoren falsas divinidades. Yo soy la única divinidad, tengan temor devocional solo de Mí".\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mcmliii{A Él pertenece cuanto hay en los cielos y en la Tierra. Solamente a Él se debe adorar. ¿Acaso van a temer a otro que no sea Dios?\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mcmliv{Todas las gracias que tienen provienen de Dios. Pero ustedes solo recurren a Él cuando padecen una desgracia.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mcmlv{Luego, cuando los libra de la desgracia, algunos de ustedes vuelven a dedicar actos de adoración a otros que a su Señor,\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mcmlvi{y no agradecen cuanto les ha concedido. Disfruten [transitoriamente, que] pronto sabrán.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mcmlvii{Ofrecen una parte de cuanto Dios les concede a sus ídolos, y no saben que ellos no pueden perjudicarlos ni beneficiarlos. ¡Por Dios! Serán interrogados sobre lo que inventan.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mcmlviii{¡Glorificado sea Dios! Le atribuyen hijas, pero solo desean para sí mismos los hijos varones.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mcmlix{Cuando se le anuncia a uno de ellos [el nacimiento de] una niña, se refleja en su rostro la aflicción y la angustia\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mcmlx{por lo que se le ha anunciado, se esconde de la gente avergonzado y duda si la dejará vivir a pesar de su deshonra o la enterrará viva. ¡Qué pésimo es lo que hacen!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mcmlxi{Quienes no creen en la otra vida son el peor ejemplo [de ignorancia e incredulidad], y Dios es el más sublime ejemplo [de perfección absoluta]. Él es el Poderoso, el Sabio.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mcmlxii{Si Dios castigara inmediatamente a la gente por sus injusticias, no dejaría ningún ser vivo sobre la faz de la Tierra. Pero les da una prórroga por un plazo determinado, y cuando venza su plazo no podrán retrasarlo ni adelantarlo ni siquiera un instante.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mcmlxiii{Le atribuyen a Dios lo que detestan para sí mismos e inventan mentiras diciendo que alcanzarán el bienestar [en esta vida y en la otra]. Ellos serán los primeros en ser arrojados al Fuego.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mcmlxiv{Yo, Dios, juro por Mí mismo que envié Mensajeros a las naciones que te precedieron [¡oh, Mujámmad!], pero el demonio les hizo ver sus malas acciones como buenas. Él es su aliado en esta vida, pero en la otra recibirán un castigo doloroso.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mcmlxv{No te he revelado el Libro [¡oh, Mujámmad!] sino para que les aclares aquello sobre lo que discrepaban, como guía y misericordia para los creyentes.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mcmlxvi{Dios hace descender agua del cielo dando vida con ella a la tierra azotada por la sequía. En esto hay un signo para quienes recapacitan.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mcmlxvii{En los ganados tienen ustedes un ejemplo [del poder divino]. Les doy a beber de lo que se produce en sus vientres, entre quimo y sangre: leche pura, gustosa para quienes la beben.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mcmlxviii{De los frutos de las palmeras y de las vides se obtiene un embriagante y también un sustento puro. En esto hay un signo para quienes razonan.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mcmlxix{Tu Señor les inspiró a las abejas: ``Habiten en las moradas que hayan construido en las montañas, en los árboles y en las que la gente les construya.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mcmlxx{Aliméntense de los frutos y transiten por donde les ha facilitado su Señor". De su abdomen sale un jarabe de diferentes colores que es medicina para la gente. En esto hay un signo para quienes reflexionan.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mcmlxxi{Dios los crea a todos y luego los hace morir. A algunos de ustedes los hace llegar a la vejez en la que olvidan todo cuanto sabían. Dios lo sabe todo, es Poderoso.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mcmlxxii{Dios facilita los recursos a unos más que a otros. Los que han sido favorecidos con más recursos se niegan a compartirlos con aquellos que posee su diestra para no equipararse con ellos. ¿Acaso se niegan a reconocer [y compartir] las gracias de Dios?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mcmlxxiii{Dios les ha creado cónyuges de su misma naturaleza, y luego les concede hijos y luego nietos. Dios les ha proveído todo lo bueno y beneficioso. ¿Acaso creen en las falsedades y reniegan de la gracia de Dios?\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mcmlxxiv{En lugar de adorar a Dios, adoran lo que no tiene ni tendrá dominio alguno sobre las provisiones del cielo y de la Tierra.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mcmlxxv{No comparen a Dios. Dios sabe y ustedes no saben.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mcmlxxvi{Dios les expone un ejemplo [para que reflexionen]: ¿Puede equipararse un [incrédulo] esclavo [de sus pasiones] que carece de todo poder, con [un creyente] a quien le he concedido un sustento generoso y hace caridades en privado y en público? [¿Cómo pueden entonces comparar al Creador con los seres creados?] ¡Alabado sea Dios! La mayoría de la gente no reflexiona.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mcmlxxvii{Dios les expone otro ejemplo [para que reflexionen acerca de Su unicidad]: ¿Acaso pueden equipararse dos personas: un incapaz y mudo que no hace nada bien y representa una carga para su tutor, y una persona que alza su voz para defender la justicia y está en el sendero recto?\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mcmlxxviii{Dios conoce los secretos de los cielos y de la Tierra. La Hora [del Día del Juicio] llegará tan rápido como un abrir y cerrar de ojos, o más rápido aún. Dios tiene poder sobre todas las cosas.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mcmlxxix{Dios los hizo nacer del vientre de sus madres sin conocimiento [del mundo que los rodea]. Él los dotó de oído, vista e intelecto, para que sean agradecidos.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mcmlxxx{¿No han observado las aves suspendidas en el cielo? Es Dios quien las sustenta. En esto hay signos para los creyentes.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mcmlxxxi{Dios hizo que sus viviendas sean para ustedes un lugar de sosiego. Puso a su disposición el cuero de los rebaños para que hagan con él sus tiendas, las cuales son fáciles de transportar los días que viajan o acampan. También de su lana, pelo y crin hacen utensilios y alfombras con las que hacen confortable esta vida.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mcmlxxxii{Dios les proporcionó sombra de cuanto creó, refugios en las montañas, vestimentas que los resguardan del calor [y el frío] y armaduras que los protegen en los combates. Así es como Dios les provee de Sus gracias para que se sometan a Él.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mcmlxxxiii{Pero si se niegan a creer, sabe que a ti solo te incumbe transmitir [el Mensaje] con claridad.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mcmlxxxiv{Ellos saben que las gracias provienen de Dios pero lo niegan; la mayoría de ellos son ingratos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mcmlxxxv{El día que haga surgir de cada nación [a su Profeta] como testigo, no se les permitirá a los incrédulos excusarse ni que se arrepientan.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mcmlxxxvi{Cuando los injustos vean el castigo, no habrá atenuantes ni prórrogas.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mcmlxxxvii{Cuando los idólatras vean a sus ídolos dirán: ``¡Señor nuestro! Éstos son los ídolos a quienes invocábamos en lugar de Ti", pero ellos [los ídolos] los contradecirán: ``Son unos mentirosos".\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mcmlxxxviii{Ese día serán entregados a Dios [para que los castigue], y sus mentiras se desvanecerán.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mcmlxxxix{A los incrédulos que desviaron a la gente del camino de Dios, les duplicaré el castigo por haber sembrado la corrupción.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mcmxc{[El Día del Juicio] haré surgir de cada nación [a su Profeta] para que atestigüe en contra de ellos, y a ti [¡oh, Mujámmad!] como testigo de tu nación. Te he revelado el Libro que contiene todas las explicaciones, el cual es guía, misericordia y albricias para los musulmanes que se someten a Dios.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mcmxci{Dios ordena la justicia, hacer el bien y ayudar a la familia; pero prohíbe la obscenidad, la mala conducta y la opresión. Así los exhorta para que reflexionen.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mcmxcii{Cumplan su compromiso con Dios. No quebranten los juramentos después de haberlos realizado, habiendo puesto a Dios como testigo. Dios sabe bien cuanto hacen.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mcmxciii{No sean como quien deshace el hilado que había realizado cuidadosamente. No hagan del juramento un medio de engaño. No rompan un pacto hecho con una nación por beneficiarse de un pacto con otra nación más poderosa. Dios los pone a prueba para que se les evidencie quienes Lo obedecen de quienes no. El Día del Juicio juzgará entre ustedes sobre lo que discrepaban.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mcmxciv{Si Dios hubiera querido habría hecho de ustedes una sola nación [de creyentes]. Pero se descarría quien quiere y se guía quien quiere. Todos serán interrogados por cuanto hicieron.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mcmxcv{No hagan de sus juramentos una herramienta de engaño. Si lo hacen se los castigará por haberse extraviado y desviado a otros del sendero de Dios, y el castigo que sufrirán será terrible.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mcmxcvi{No vendan su compromiso con Dios a vil precio. Lo que Dios les tiene reservado en esta vida y en la otra es mejor para ustedes, si lo supieran.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mcmxcvii{[Sepan que] lo que ustedes tienen es temporal y lo que Dios tiene es eterno. A quienes hayan sido pacientes les multiplicaré la recompensa de sus obras.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mcmxcviii{Al creyente que obre rectamente, sea varón o mujer, le concederé una vida buena y le multiplicaré la recompensa de sus buenas obras.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mcmxcix{Cuando recites el Corán refúgiate en Dios del demonio maldito.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mm{El demonio no tiene poder sobre los creyentes que se encomiendan a su Señor.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmi{Solamente tiene poder sobre quienes lo toman como aliado protector y aquellos que lo adoran asociándolo [en el poder y la adoración] a Dios.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmii{Cuando revelo un precepto para abrogar otro, y Dios bien sabe lo que hace, dicen [tus detractores]: ``Eres tú quien lo ha inventado". Pero la mayoría de ellos son ignorantes.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmiii{Diles: ``Es el Espíritu Santo [el ángel Gabriel] quien lo ha revelado [por orden] de tu Señor con la Verdad para afirmar a los creyentes, y como guía y albricias para los musulmanes que se someten a Dios".\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmiv{Sé muy bien que dicen: ``Es un hombre quien se lo transmite [el Corán]". Pero bien saben que el idioma de quien ellos aluden no es el árabe, mientras que éste [Corán] es en árabe puro.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmv{A quienes no crean en los signos de Dios, Dios no los guiará y recibirán un castigo doloroso.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmvi{Solamente inventan mentiras quienes no creen en los signos de Dios. Ellos son los mentirosos [y no el Profeta].\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmvii{Quienes renieguen de la fe en Dios por haber sido forzados a ello, permaneciendo sus corazones tranquilos [y firmes] en la fe [no serán reprochados]; pero quienes lo hagan y se complazcan con la incredulidad, incurrirán en la ira de Dios y tendrán un castigo terrible,\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmviii{porque prefirieron la vida mundanal a la otra. Dios no guía al pueblo incrédulo.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmix{A ellos Dios les ha sellado sus corazones, sus oídos y sus ojos [con la incredulidad], y son indiferentes [ante los signos].\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmx{No hay duda de que en la otra vida ellos serán los perdedores.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmxi{Quienes emigraron luego de haber sido perseguidos, combatieron y fueron pacientes, tu Señor será Absolvedor y Misericordioso con ellos.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmxii{Ese día toda alma argumentará para alcanzar la salvación y será juzgada acorde a sus obras; nadie será tratado injustamente.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmxiii{Dios les expone el ejemplo de una ciudad [La Meca], cuyos habitantes se sentían seguros y tranquilos, les llegaba abundante sustento proveniente de todas las regiones. Pero no agradecieron los favores de Dios, entonces Él los hizo padecer hambre y temor por cuanto habían cometido.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmxiv{El Mensajero que se les presentó era uno de ellos, pero lo desmintieron y el castigo los sorprendió por las injusticias que cometían.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmxv{Coman de lo lícito y bueno que Dios les ha sustentado. Agradezcan las bendiciones de Dios, si es que solo a Él adoran.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmxvi{Se les ha prohibido [alimentarse de] la carne del animal muerto por causa natural, la sangre, la carne de cerdo, la del animal que haya sido sacrificado invocando otro nombre que no sea el de Dios. Pero si alguien se ve forzado [a ingerirlos por hambre extrema], sin intención de pecar ni excederse, no cometerá pecado. Dios es Absolvedor, Indulgente.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmxvii{No profieran mentiras dejando que sus lenguas determinen [a su antojo] diciendo: ``Esto es lícito y aquello es ilícito", inventando mentiras acerca de Dios. Quienes inventen mentiras acerca de Dios no prosperarán jamás.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmxviii{Ellos tendrán un goce transitorio, pero luego [el Día del Juicio] recibirán un castigo doloroso.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmxix{A los judíos les prohibí lo que te he narrado anteriormente. No fui injusto con ellos sino que ellos lo fueron consigo mismos.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmxx{Con quienes hayan cometido un mal por ignorancia y luego se arrepientan y enmienden, tu Señor será Absolvedor, Misericordioso.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmxxi{Abraham fue un guía ejemplar, era obediente a Dios, monoteísta, y jamás fue idólatra.\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmxxii{Era agradecido por los favores de Dios. Él lo eligió y lo guió por el sendero recto.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmxxiii{Le concedí en la vida mundanal todo lo bueno, y en la otra vida estará con los justos.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmxxiv{A ti [¡oh, Mujámmad!] te he inspirado: ``Sigue la religión pura monoteísta de Abraham, que jamás fue de los idólatras".\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmxxv{Les fue ordenado [a los judíos] dedicar el día sábado a la adoración cuando discreparon [y no aceptaron que este día fuera el viernes]. Tu Señor juzgará entre ellos el Día de la Resurrección sobre lo que discrepaban.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmxxvi{Convoca al sendero de tu Señor con sabiduría y bellas palabras. Argumenta de la mejor manera. Tu Señor sabe bien quién se extravía de Su camino y quién sigue la guía.\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmxxvii{Si los agreden, respondan del mismo modo que se los ha agredido [y no se excedan]. Pero si son pacientes [y perdonan] será lo mejor para ustedes.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmxxviii{Sé paciente y sabe que la paciencia es una virtud que Dios concede a quien quiere. No sientas pena [por la incredulidad de tu pueblo] ni te angusties por lo que traman.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmxxix{Dios está con los piadosos y con los que hacen el bien.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmxxx{\basmalahes Glorificado sea Quien transportó a Su Siervo durante la noche, desde la mezquita sagrada a la mezquita lejana cuyos alrededores bendije, para mostrarle algunos de Mis signos. Él todo lo oye, todo lo ve.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmxxxi{He revelado a Moisés el Libro como guía para el pueblo de Israel, y les ordené: ``No tomen protector fuera de Mí".\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmxxxii{¡Él era un descendiente de quienes salvé junto a Noé [en el arca]! Fue un siervo agradecido.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmxxxiii{He revelado en el Libro lo que decreté para el pueblo de Israel: ``Corromperán la Tierra dos veces y se convertirán en tiranos soberbios.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmxxxiv{Cuando corrompan por primera vez, enviaré contra ustedes siervos Míos en huestes de gran fortaleza y rudeza, que atacarán sus hogares. Esta promesa será cumplida.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmxxxv{Luego les permitiré que retornen a sus hogares [victoriosos] expulsándolos. Los agraciaré con bienes materiales e hijos y los convertiré en un pueblo numeroso.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmxxxvi{Si obran bien será en beneficio propio, pero si obran mal será en contra suya. Cuando corrompan por segunda vez, los vencerán [sus enemigos] e ingresarán al Templo como lo hicieron la primera vez y devastarán todo lo que encuentren.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmxxxvii{Luego su Señor se apiadará de ustedes, pero si reinciden [en la corrupción] los volveré a castigar. El Infierno será prisión para los que se nieguen a creer.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmxxxviii{El Corán guía por el sendero más justo y firme, y di a los creyentes que obran rectamente que recibirán una gran recompensa.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmxxxix{Pero a quienes no crean en la otra vida les he preparado un castigo doloroso.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmxl{El ser humano ruega a Dios el mal con la misma facilidad con que ruega pidiendo el bien: el ser humano es muy precipitado.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmxli{He hecho del día y de la noche dos signos: el signo de la noche es la oscuridad, y el signo del día es la luminosidad para que busquen el favor de su Señor, e hice que con estos dos signos pudieran saber el número de los años y el cómputo de los meses. Todas las cosas las he explicado detalladamente.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmxlii{Todo ser humano será responsable por sus actos, y el Día de la Resurrección le entregaré un libro abierto.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmxliii{[Se le dirá:] ``Lee tu libro, pues hoy será suficiente con que tú mismo leas el registro de tus obras [para saber cuál será tu destino]".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmxliv{Quien siga la guía será en beneficio propio, pero quien se desvíe solo se perjudicará a sí mismo. Nadie cargará con pecados ajenos. No he castigado a ningún pueblo sin antes haberle enviado un Mensajero.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmxlv{Cuando quiero destruir una ciudad permito que sus dirigentes siembren la corrupción, entonces la sentencia contra ella se cumple y la destruyo totalmente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmxlvi{Así es como he destruido a muchas generaciones luego de Noé. ¡Es suficiente con que Dios vea y sepa de los pecados que cometen Sus siervos!\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmxlvii{Quienes prefieran los placeres transitorios de la vida mundanal sepan que se los concederé a quien Yo quiera, pero les destinaré el Infierno, donde ingresarán humillados y condenados [por haberse olvidado de obrar para la otra vida].\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmxlviii{Mientras que a quienes anhelen la vida del más allá, sean creyentes y se esfuercen por alcanzarla, se les retribuirá por su esfuerzo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmxlix{A todos [en esta vida] se les concederá de los favores de tu Señor, a los unos y a los otros. Sus favores no le son vedados a nadie.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mml{Observa cómo he agraciado a unos sobre otros [con bienes materiales en este mundo], pero en la otra vida la distinción será mayor [entre los que creen y los que no creen].\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmli{No adoren a otros junto a Dios, porque serán condenados y humillados.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmlii{Tu Señor ha ordenado que no adoren sino a Él y que honren a sus padres. Si uno de ellos o ambos llegan a la vejez, no sean insolentes con ellos, ni siquiera les digan: ``¡Uf!" Háblenles siempre con bondad.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmliii{Trátenlos con humildad y compasión, y rueguen [por ellos diciendo]: ``¡Oh, Señor mío! Ten misericordia de ellos como ellos la tuvieron conmigo cuando me criaron siendo niño".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmliv{Su Señor es Quien mejor conoce lo que hay en sus corazones. Si son piadosos, sepan que Él perdona a los que se arrepienten.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmlv{Da a los parientes lo que es su derecho, también al pobre y al viajero insolvente, pero no derroches,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmlvi{porque los que derrochan son hermanos de los demonios, y el demonio fue ingrato con su Señor.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmlvii{Pero si no puedes darles una ayuda, y esperas una misericordia de tu Señor, excúsate con amabilidad.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmlviii{No seas avaro ni tampoco derrochador, porque te verás censurado [en el primer caso] y arruinado [en el segundo].\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmlix{Tu Señor concede un sustento abundante a quien quiere, y se lo restringe a quien quiere. Él a Sus siervos los conoce bien, y los ve siempre.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmlx{No maten a sus hijos por temor a la pobreza. Yo los sustento a ellos y a ustedes. Matarlos es un pecado gravísimo.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmlxi{No se acerquen a lo que lleve a la fornicación, pues es una inmoralidad y un mal camino.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmlxii{No maten, pues Dios lo ha prohibido, salvo con motivo justo. A quien se le dé muerte injustamente le concedo a su familiar directo o apoderado el derecho, pero que éste no mate buscando venganza. Su derecho [a exigir justicia] está legalmente garantizado.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmlxiii{No utilicen los bienes del huérfano a menos que sea para beneficiarlo, y entréguenselos cuando alcance la madurez. Cumplan con sus compromisos, porque se los interrogará por ellos.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmlxiv{Midan y pesen con equidad. Esto es lo más conveniente y mejor para ustedes.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmlxv{No hagan ni digan nada si no tienen conocimiento. Serán interrogados acerca de [lo que hayan hecho con] su oído, vista y corazón.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmlxvi{No caminen por la Tierra con arrogancia, pues ella no se abrirá por su andar, ni tampoco podrán igualar a las montañas en altura [para ser tan imponentes como ellas].\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmlxvii{Todos estos comportamientos son perjudiciales para ustedes y detestables ante su Señor.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmlxviii{Esto es parte de la sabiduría que tu Señor te ha revelado. No adoren a nadie junto a Dios porque serán arrojados en el Infierno, condenados y humillados.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmlxix{¿Acaso creen que su Señor prefirió para ustedes los hijos varones y para Sí hijas que son los ángeles? Lo que dicen es muy grave.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmlxx{En este Corán he expuesto todo tipo de argumentos para que reflexionen, pero [a algunos] esto los hace extraviarse aún más.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmlxxi{Diles: ``Si junto a Dios hubiera otros dioses, como dicen [los idólatras], ellos buscarían acercarse al Señor del Trono [para complacerlo]".\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmlxxii{¡Glorificado sea! Él está por encima de lo que dicen.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmlxxiii{Lo glorifican los siete cielos, la Tierra y todo cuanto hay en ellos. No existe nada que no Lo glorifique con alabanzas, aunque ustedes no puedan percibir sus glorificaciones. Él es Magnánimo, Perdonador.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmlxxiv{Cuando recitas el Corán ponemos un velo imperceptible entre tú y quienes no creen en la otra vida.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmlxxv{[Como respuesta a su rechazo] hice sus corazones duros y sus oídos sordos para que no pudieran comprender [el Mensaje]. Cuando mencionas en el Corán que tu Señor es la única divinidad [con derecho a ser adorada], te dan la espalda disgustados.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmlxxvi{Yo bien sé cómo se burlan cuando te escuchan [recitar el Corán] o cuando hablan en secreto; y dicen los idólatras: ``Están siguiendo a un hombre hechizado".\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmlxxvii{Observa cómo te comparan y por ello se extravían. No pueden encontrar el camino.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmlxxviii{Dicen: ``¿Acaso cuando seamos huesos y polvo seremos resucitados y creados nuevamente?"\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmlxxix{Respóndeles: ``¡Sí! Aunque se conviertan en piedra, hierro\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmlxxx{o cualquier otra materia que veneren en su pensamiento". Dirán: ``¿Quién nos resucitará?" Respóndeles: ``Quien los creó por primera vez". Pero negando con su cabeza te dirán: ``¿Cuándo?" Diles: ``Es posible que sea pronto".\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmlxxxi{El día que los convoque responderán alabándolo, y les parecerá que no han permanecido [en las tumbas] sino poco tiempo.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmlxxxii{Exhorta a Mis siervos a hablar con respeto, porque el demonio quiere sembrar la discordia entre ellos. El demonio es el enemigo declarado del ser humano.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmlxxxiii{Su Señor conoce lo que hay en sus corazones. Si quiere tendrá misericordia con ustedes, o si quiere los castigará [con justicia]. Pero tú [¡oh, Mujámmad!] no eres responsable de lo que ellos hagan.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmlxxxiv{Tu Señor conoce bien a quienes están en los cielos y en la Tierra. He favorecido a los Profetas unos sobre otros: a David le revelé los Salmos.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmlxxxv{Diles: ``Aquellos que invocan en lugar de Dios no pueden salvarlos de ningún mal, ni siquiera evitarlo".\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmlxxxvi{[Aquellos] a los que ustedes invocan buscan el medio de acercarse más a su Señor, anhelan Su misericordia y temen Su castigo. ¡Porque el castigo de tu Señor es temible!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmlxxxvii{No hay ninguna ciudad [de incrédulos] que no vaya a destruir o castigar antes del Día de la Resurrección. Esto es lo que ha sido decretado y registrado en el Libro [preservado].\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmlxxxviii{No les envié los milagros que pedían porque los desmentirían como lo hicieron los pueblos del pasado. Al pueblo de Zamud le envié la camella como un milagro evidente, pero cometieron la injusticia [de matarla]. Entonces les envié signos para atemorizarlos.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmlxxxix{Cuando te dije [¡oh, Mujámmad!]: ``Tu Señor tiene poder total sobre las personas [y Él te protegerá]". Lo que te mostré y el árbol maldito mencionado en el Corán, no es sino para probar la fe de las personas. Los atemorizo [con Mis signos], pero esto les incrementó aún más su desobediencia.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmxc{[Recuerda] cuando dije a los ángeles: ``Hagan una reverencia ante Adán". Todos hicieron la reverencia excepto Iblís, quien dijo: ``¿Acaso voy a hacer una reverencia ante quien has creado de barro?"\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmxci{Dijo también: ``¿Por qué lo has honrado más que a mí?" Si me das tiempo hasta el Día de la Resurrección desviaré a la mayoría de sus descendientes.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmxcii{Dijo [Dios]: ``¡Vete! Y quienes de ellos te sigan merecerán el Infierno, pues es el castigo que les tengo reservado.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmxciii{Seduce con tus palabras a quien puedas de ellos, arremete con tu caballería y con tu infantería. Hazte su socio inseparable en sus bienes e hijos y hazles las promesas que quieras. Pero sepan que el demonio solo hace promesas falsas".\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmxciv{[Dijo Dios:] ``Pero no tienes poder alguno sobre Mis siervos creyentes". Es suficiente con tu Señor como protector [para quienes se encomiendan a Él].\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmxcv{Su Señor es Quien impulsa los barcos en el mar para que con ellos puedan procurar Su favor. Él es Misericordioso con ustedes.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmxcvi{Cuando los alcanza una desgracia en el mar se dan cuenta que cuanto invocaban fuera de Dios no puede salvarlos, y que solo Dios es Quien puede hacerlo. Pero cuando los salva llevándolos a tierra firme, Lo niegan nuevamente. ¡El ser humano es ingrato!\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmxcvii{¿Acaso se sienten a salvo de que Dios los haga tragar por la tierra o que les envíe un huracán? Si así lo hiciera, no encontrarían quién los pudiera proteger.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmxcviii{¿O se sienten seguros de que cuando se encuentren en el mar otra vez, Él no les envíe una tormenta y los ahogue como castigo a su ingratitud? Si así lo hiciera, no tendrían quién Le reclamara por ustedes.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmxcix{He honrado a los hijos de Adán y les he facilitado los medios para viajar por la tierra y por el mar, les he proveído de todo lo bueno y los he favorecido sobre muchas otras criaturas.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmc{El día que convoque a todos los seres humanos junto a sus guías y les entregue sus registros, a quien le sea entregado el libro de sus obras en la derecha, [se alegrará] leyendo su libro porque verá que no ha sido defraudado en lo más mínimo.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmci{Pero quien haya estado en esta vida ciego [en la incredulidad], en la otra también lo estará y más perdido aún.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcii{Los idólatras [¡oh, Mujámmad!] querían persuadirte que cedieras a favor de sus peticiones, contrariando las instrucciones que te había revelado. Si lo hubieras hecho, te habrían convertido en su aliado.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmciii{Si no te hubiera fortalecido, te habrías inclinado a aceptar parte de sus peticiones.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmciv{Y si hubieras cedido en algo, te habría hecho sufrir un castigo doble en esta vida y en la otra. No hubieras encontrado quién te protegiera de Mí.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcv{Casi logran intimidarte para que abandones tu tierra [La Meca], pero si lo hubiesen logrado no habrían permanecido en ella sino poco tiempo [porque habría enviado sobre ellos el castigo].\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcvi{Lo mismo sucedió con los Mensajeros que envié antes de ti. No encontrarás cambio alguno en Mi proceder.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcvii{Observa las oraciones prescritas desde pasado el mediodía hasta la oscuridad de la noche, y también la oración del alba, y prolonga la recitación en ella, pues ésta es atestiguada [por los ángeles de la noche y el día].\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmcviii{También levántate parte de la noche a realizar oraciones voluntarias, para que tu Señor te conceda un rango digno de alabanza.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmcix{Di: ``¡Señor mío! Concédeme una entrada y una salida dignas [en todos los asuntos de mi vida], y concédeme los medios para lograr el triunfo".\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmcx{Y di: ``Ha triunfado la Verdad y se ha disipado la falsedad; la falsedad siempre se desvanece".\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmcxi{Revelé el Corán, que es cura para los corazones y misericordia para los creyentes, pero al mismo tiempo no hace sino aumentar la perdición de los idólatras.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmcxii{El incrédulo, cuando lo agracio, no Me agradece por arrogancia; pero cuando lo aflige un mal se desespera.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmcxiii{Diles: ``Que cada uno obre como le plazca, pero sepan que su Señor conoce a quien está mejor encaminado".\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmcxiv{Te preguntan acerca del espíritu. Diles: ``El espíritu es una de las creaciones de Dios, de las que solo Él tiene conocimiento. No se les ha permitido acceder sino a una pequeña parte del inmenso conocimiento de Dios".\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmcxv{Si quisiera, borraría todo lo que te he revelado, y entonces no encontrarías quién abogara por ti ante Mí [para que lo pudieras recordar].\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmcxvi{Pero no lo haré por misericordia. El favor con el que tu Señor te ha agraciado es inmenso.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmcxvii{Diles: ``Si los seres humanos y los yinnes se unieran para redactar un texto similar al Corán, no podrían lograrlo, aunque se ayudaran mutuamente".\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmcxviii{He expuesto a los seres humanos en este Corán toda clase de ejemplos. Pero la mayoría de las personas no creen y rechazan la Verdad.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmcxix{Dicen [los que se niegan a creer]: ``No creeremos en ti hasta que no hagas fluir para nosotros vertientes de la tierra\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmcxx{o poseas un huerto con palmeras y vides, y hagas brotar en él ríos,\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmcxxi{o hagas descender sobre nosotros un castigo del cielo como advertiste, o nos traigas a Dios y a los ángeles para que los podamos ver,\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmcxxii{o poseas una casa de oro o asciendas al cielo, y aun así no creeremos en ti a menos que nos traigas del cielo un libro que podamos leer". Diles: ``¡Glorificado sea mi Señor! Pero, ¿no soy acaso solo un ser humano enviado como Mensajero?"\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmcxxiii{Lo que impidió que creyera la gente cuando se les presentaron los Mensajeros con la guía fue la misma retórica: [Decían] ``¿No encontró Dios nada mejor que enviar a un ser humano como Mensajero?"\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmcxxiv{Diles: ``Si los ángeles habitaran la Tierra, entonces les habría enviado del cielo un ángel como Mensajero".\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmcxxv{Diles: ``Dios es suficiente testigo de mi veracidad entre ustedes y yo. Él está bien informado sobre Sus siervos y los observa".\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmcxxvi{A quien Dios guíe estará bien encaminado, pero a quienes permita que se extravíen nadie los podrá socorrer salvo Él. Los congregaré de cabeza el Día de la Resurrección, ciegos, mudos y sordos. El Infierno será su morada; siempre que el fuego se atenúe avivaré su llama.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmcxxvii{Ese será su castigo por no haber creído en Mis milagros y haber dicho: ``¿Acaso cuando seamos huesos y polvo seremos resucitados y creados nuevamente?"\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmcxxviii{¿Acaso no ven que Dios, Quien ha creado los cielos y la Tierra, tiene el poder de crearlos nuevamente? Les ha establecido un plazo determinado para su resurrección, pero los idólatras lo niegan con incredulidad.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmcxxix{Diles: ``Si tuvieran en sus manos las arcas de mi Señor, no las compartirían por temor a empobrecer. ¡Qué avaro es el ser humano!"\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmcxxx{Concedí a Moisés nueve milagros evidentes. Pregunta [¡oh, Mujámmad!] al pueblo de Israel si no es verdad que cuando [Moisés] se presentó ante el Faraón, éste le dijo: ``¡Oh, Moisés! Creo que estás afectado por un hechizo".\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmcxxxi{Dijo [Moisés]: ``Tú sabes bien que solo el Señor de los cielos y de la Tierra ha enviado estos milagros claros. ¡Oh, Faraón! Creo que estás perdido".\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmcxxxii{[El Faraón] quiso expulsarlos de la tierra, pero lo ahogué junto a su ejército.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmcxxxiii{Luego dije al pueblo de Israel: ``Habiten la tierra y sepan que cuando llegue el Día del Juicio del que Dios les advirtió, los haré comparecer a todos".\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmcxxxiv{Lo he revelado [al Corán] con la verdad y lo he protegido para que así les llegue. No te he enviado [¡oh, Mujámmad!] sino como albriciador y amonestador.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmcxxxv{Te he revelado el Corán en partes para que se lo recites gradualmente a la gente. Te lo he ido revelando poco a poco.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmcxxxvi{Diles: ``Crean o no crean en él [es su responsabilidad]". Quienes fueron agraciados con el conocimiento de las revelaciones anteriores, cuando escuchan la recitación del Corán se prosternan ante Dios.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmcxxxvii{Y dicen: ``¡Glorificado sea nuestro Señor! La promesa de nuestro Señor se ha cumplido".\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmcxxxviii{Se prosternan ante Dios con los ojos llenos de lágrimas, y [el Corán] les acrecienta su humildad y sumisión.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmcxxxix{Diles: ``Ya sea que Lo invoquen diciendo: ¡Oh, Dios!, ¡Oh, Compasivo!, O cualquier otro nombre con el que Le invoquen, Él los oirá. Sepan que Él posee los nombres [y atributos] más sublimes. Cuando realicen una oración moderen su voz en la recitación, no la hagan con voz muy alta ni tampoco en silencio".\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmcxl{Di: ``¡Alabado sea Dios! Él no tiene ningún hijo ni tiene asociado alguno en Su soberanía ni necesita de ningún socorredor". ¡Glorifica a Dios proclamando Su grandeza!\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmcxli{\basmalahes ¡Alabado sea Dios! Quien ha revelado a Su siervo el Libro en el que no hay contradicciones ni defectos,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcxlii{un Libro justo para advertir [a los que rechazan el Mensaje] de Su castigo severo, y para albriciar a los creyentes que obran rectamente que recibirán una hermosa recompensa\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcxliii{en la que permanecerán por toda la eternidad.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmcxliv{También para advertir a quienes dicen que Dios ha engendrado un hijo:\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcxlv{No tienen conocimiento sobre eso ni lo tenían sus antepasados. ¡Qué graves palabras salen de sus bocas! No dicen sino mentiras.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcxlvi{¿Acaso vas a dejar que te consuma la pena si ellos se niegan a creer en estas palabras?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcxlvii{He hecho de cuanto hay en la Tierra un adorno para probar quién obra mejor,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcxlviii{pero luego la convertiré en un terreno árido.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcxlix{¿Acaso consideras [¡oh, Mujámmad!] que la historia de los jóvenes de la caverna y [su devoción por] la escritura fue uno de Mis milagros más sorprendentes?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcl{Recuerda cuando los jóvenes se refugiaron en la caverna y dijeron: ``¡Señor nuestro! Acógenos en Tu misericordia y concédenos que nuestra situación se solucione correctamente".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcli{Entonces hice que durmieran en la caverna por muchos años.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmclii{Luego hice que despertaran para distinguir cuál de los dos grupos [creyentes e incrédulos] calculaba mejor el tiempo que habían permanecido allí.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcliii{Te relato su verdadera historia: Eran jóvenes que creían en su Señor y les aumenté su guía,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcliv{fortalecí sus corazones cuando se reunieron [antes de dejar sus hogares y su gente] y dijeron: ``Nuestro Señor es el Señor de los cielos y de la Tierra. No invocaremos nada fuera de Él, si lo hiciéramos estaríamos cometiendo una desviación.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmclv{Nuestro pueblo adora fuera de Él falsas deidades. ¿Por qué no presentan un fundamento válido para hacerlo? ¿Acaso hay alguien más injusto que quien inventa una mentira y la atribuye a Dios?"\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmclvi{[Dijo uno de ellos:] ``Si se apartan de ellos y reniegan de cuanto adoran en vez de Dios, refúgiense en la caverna, que su Señor los cubrirá con Su misericordia y les facilitará una salida a su situación".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmclvii{Se podía observar cómo el Sol naciente se alejaba de la caverna por la derecha dejándolos al ocultarse por la izquierda, mientras ellos permanecían en un espacio de la misma. Este es uno de los milagros de Dios. Aquel a quien Dios guíe estará bien encaminado, pero a quien deja en el extravío no podrá encontrar protector que lo guíe.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmclviii{Habrías creído que estaban despiertos, pero estaban dormidos. Los volteaba hacia la derecha y hacia la izquierda, y su perro estaba con las patas delanteras extendidas en la entrada. Si los hubieras visto, habrías huido aterrorizado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmclix{Entonces los desperté para que se preguntaran unos a otros. Uno de ellos dijo: ``¿Cuánto tiempo piensan que hemos permanecido aquí?" Respondieron: ``Permanecimos un día o parte de un día". Dijeron: ``Nuestro Señor sabe mejor cuánto tiempo hemos permanecido. Enviemos a uno de nosotros con nuestro dinero a la ciudad para que busque la mejor comida y nos aprovisione, que se conduzca con sutileza y que no llame la atención de nadie,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmclx{porque si se enteran de nuestra presencia nos apedrearán o nos obligarán a regresar a su religión, y si eso sucede jamás estaremos entre los que alcancen el triunfo [en el más allá]".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmclxi{Pero hice que los descubrieran para que supieran que la promesa de Dios es verdadera, y que la Hora del Juicio es indubitable [y luego los hice morir]. Fue entonces cuando los habitantes del pueblo discutieron acerca de ellos. Algunos dijeron: ``Construyan una pared que bloquee la entrada de la cueva, pues solo Dios sabe la verdad sobre ellos". Pero aquellos cuya opinión prevaleció dijeron: ``Construyamos sobre ellos un oratorio".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmclxii{Algunos dirán que eran tres y cuatro con su perro. Otros que eran cinco y seis con su perro, conjeturando sobre lo que no tienen conocimiento. Y otros dirán que eran siete y ocho con su perro. Diles: ``Mi Señor es Quien sabe exactamente cuántos eran, y solo pocos lo saben. No profundicen sobre ellos más de lo que les ha sido revelado. No consulten [a quien no tenga conocimiento] sobre ellos".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmclxiii{No digas acerca de algo: ``¡Haré tal cosa!"\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmclxiv{Salvo que agregues: ``¡Si Dios quiere!" Pero si te olvidas de mencionar a tu Señor, invoca su nombre y reza diciendo: ``Ruego a mi Señor que me guíe a la vía más recta".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmclxv{Permanecieron en su caverna trescientos años y nueve más.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmclxvi{Diles: ``Dios es Quien realmente sabe cuánto permanecieron. Él conoce los secretos de los cielos y de la Tierra; Él todo lo ve, todo lo oye. No tienen protector fuera de Él, y Él no asocia a nadie en Sus decisiones".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmclxvii{Recita lo que se te ha revelado del Libro de tu Señor. No hay quien pueda tergiversar Sus palabras, y no encontrarás protector fuera de Él.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmclxviii{Reúnete con quienes invocan a su Señor por la mañana y por la tarde anhelando Su rostro. No te apartes de ellos buscando el encanto de la vida mundanal. No obedezcas a aquel cuyo corazón se ha olvidado de recordarme, sigue sus pasiones y actúa con negligencia.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmclxix{Diles: ``La Verdad proviene de su Señor. Quien quiera que crea, y quien no quiera que no lo haga". Pero sepan que tengo preparado para los que cometen injusticias un fuego que los rodeará. Cuando sofocados pidan de beber, se les verterá un líquido como el metal fundido que les quemará el rostro. ¡Qué pésima bebida y qué horrible morada!\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmclxx{En cambio, quienes crean y obren rectamente, sepan que recompensaré todas sus obras.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmclxxi{Ellos alcanzarán los Jardines del Edén por donde corren ríos. Serán engalanados con brazaletes de oro, vestidos con prendas verdes de seda y brocado. Estarán recostados sobre sofás. ¡Qué placentera recompensa y qué hermoso lugar de descanso!\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmclxxii{Exponles el ejemplo de dos hombres. Al incrédulo le concedí dos viñedos cercados con palmeras y en medio de ambos un sembrado.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmclxxiii{Ambos viñedos dieron sus frutos sin ninguna pérdida, e hice brotar en medio de ellos un río.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmclxxiv{Su dueño, que poseía abundantes riquezas, hablando [arrogantemente] con el creyente le dijo: ``Tengo más riqueza que tú y mi gente es más fuerte".\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmclxxv{Luego ingresó en su viñedo lleno de soberbia e incredulidad y exclamó: ``No creo que este viñedo perezca jamás,\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmclxxvi{tampoco creo que jamás llegue la Hora [del Día del Juicio]. Pero si llego a ser resucitado estoy seguro de que tendré un viñedo mejor que éste".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmclxxvii{El creyente con quien hablaba le preguntó [haciéndolo reflexionar]: ``¿No crees en Quien ha creado a tu padre de polvo, luego a toda su descendencia de un óvulo fecundado, y te ha dado la forma de un ser humano con todas sus facultades?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmclxxviii{En cuanto a mí, creo que Dios es mi Señor y no Le asocio copartícipe alguno [en la adoración].\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmclxxix{Deberías haber dicho cuando ingresaste a tus viñedos: ‘Esto es lo que Dios ha querido, todo el poder proviene de Dios’. Ya ves que poseo menos riqueza e hijos que tú.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmclxxx{Pero sabe que mi Señor me concederá algo mejor que tus viñedos [en la otra vida], y es posible que envíe del cielo una tempestad que los aniquile,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmclxxxi{o que el agua del río que hay entre ellos sea absorbida por la tierra y no puedas alcanzarla".\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmclxxxii{Y en efecto, sus frutos fueron destruidos. [Él] se golpeaba las manos lamentándose por lo que había invertido en ellos, y ahora estaban allí devastados. Entonces dijo: ``No debería haber igualado a otros junto a mi Señor".\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmclxxxiii{No tuvo quien pudiera salvarlo del designio de Dios, ni siquiera pudo defenderse a sí mismo.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmclxxxiv{Eso evidenció que el verdadero triunfo proviene de Dios, la verdadera divinidad. Él es Quien mejor recompensa, y las obras que se realicen para buscar Su complacencia serán las que tengan mejor final.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmclxxxv{Exponles el ejemplo de la vida mundanal, y diles que es como el agua que envío del cielo, que riega la vegetación, pero luego ésta se seca y los vientos la dispersan. Dios tiene poder sobre todas las cosas.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmclxxxvi{Los bienes materiales y los hijos son parte de los encantos de la vida mundanal, [que éstos no los hagan olvidar de lo que Dios ha ordenado. Utilicen bien sus riquezas y eduquen correctamente a sus hijos,] pues las obras que a Dios Le complacen son las que perduran y tienen gran recompensa.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmclxxxvii{[Recuerden] el día que pulverice las montañas y la tierra quede allanada, los congregaré y nadie podrá ausentarse.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmclxxxviii{Cuando comparezcan ante tu Señor en fila, se les dirá: ``Se presentan ante Mí como los creé al nacer. ¿Acaso pensaban que no los iba a juzgar?"\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmclxxxix{A cada uno se le expondrá el registro de sus obras, y verás a los pecadores que por temor a su contenido dirán: ``¡Ay de nosotros! ¿Qué clase de registro es éste, que no deja de mencionar nada, ni grande ni pequeño?" Encontrarán mencionado todo cuanto hayan cometido, pero tu Señor no oprimirá a nadie.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcxc{[Recuerda] cuando dije a los ángeles: ``Hagan una reverencia ante Adán". La hicieron, excepto Iblís, que era un yinn, y desobedeció la orden de su Señor. ¿Acaso lo toman a él y a sus descendientes como protectores en vez de tomarme a Mí, a pesar de que son sus enemigos? ¡Qué pésimo sustituto eligen los que cometen la injusticia [de la incredulidad en Dios]!\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcxci{No los hice [a los ídolos ni al demonio] testigos de la creación de los cielos y de la Tierra, ni siquiera de su propia creación, puesto que no habría de tomar como auxiliadores a quienes desvían.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcxcii{El día que se les diga [a los idólatras]: ``Invoquen a aquellos que pretendían que eran Mis socios". Los invocarán, pero no obtendrán respuesta. Pondremos entre ellos un abismo que los separe.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcxciii{Los pecadores verán el Fuego y sabrán que caerán en él, pero no encontrarán escapatoria.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcxciv{Expuse en el Corán todo tipo de ejemplo, pero el ser humano es un gran discutidor.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcxcv{¿Qué impide a la gente llegar a creer ahora que les ha llegado la guía, o pedir a su Señor que perdone sus pecados, excepto [su deseo de] que la suerte de los pueblos [perversos] de la antigüedad les sobrevenga [también] a ellos, o que les sobrevenga el castigo [final] en el más allá?\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcxcvi{Envié a los Mensajeros como albriciadores y advertidores. Los que se niegan a creer discuten con argumentos falsos para refutar la Verdad y se burlan de Mis versículos y advertencias.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcxcvii{¿Acaso hay alguien más injusto que quien habiéndosele expuesto los signos de su Señor, los niega y se olvida de lo que han hecho sus manos? He cubierto sus corazones y ensordecido sus oídos para que no lo entiendan [al Corán]. Aunque los invites a seguir la guía, si siguen así, no se encaminarán jamás.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcxcviii{Tu Señor es el Perdonador, Misericordioso. Si les quisiera dar su merecido por lo que cometieron les adelantaría el castigo. Pero he prefijado para ellos un día del que no podrán escapar.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcxcix{A otras ciudades de la antigüedad las destruí cuando comenzaron a cometer injusticias. Decreté una fecha para su destrucción.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcc{[Recuerda] cuando Moisés dijo a su fiel servidor: ``No desistiré hasta que llegue a la confluencia de los dos mares, aunque esto me lleve muchos años".\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcci{Pero cuando alcanzaron la confluencia se olvidaron del pescado, al que Dios resucitó y emprendió milagrosamente el camino hacia el mar.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmccii{Y cuando cruzaron más allá [de la confluencia] dijo [Moisés] a su servidor: ``Trae nuestra comida, que nos hemos agotado con este viaje".\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcciii{Dijo: ``Cuando nos refugiamos junto a la roca, allí me olvidé del pescado. Solo el demonio pudo hacer que me olvidara de contarte que milagrosamente saltó y emprendió el regreso hacia el mar".\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcciv{Dijo [Moisés]: ``Esa es la señal que buscábamos", y regresaron sobre sus huellas.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmccv{Encontraron a uno de Mis siervos [Al Jidr] a quien había agraciado con Mi misericordia y enseñado ciertos conocimientos [que Moisés no poseía].\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmccvi{Moisés le dijo: ``¿Puedo seguirte para que me enseñes la guía que se te ha enseñado?"\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmccvii{Respondió: ``No tendrás paciencia conmigo.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmccviii{¿Cómo podrías tener paciencia con algo que desconoces?"\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmccix{Dijo: ``Si Dios quiere, verás que seré paciente y no te desobedeceré".\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmccx{Dijo: ``Si me sigues, no me preguntes sobre lo que hago hasta que te haga mención de ello".\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmccxi{Entonces partieron hasta que abordaron un pequeño barco [y cuando llegaron a la costa] le hizo un boquete. Dijo [Moisés]: ``¿Has hecho un boquete para que se ahoguen quienes [estén viajando] a abordo? Has cometido algo grave".\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmccxii{Dijo: ``¿No te había dicho que no tendrías paciencia conmigo?"\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmccxiii{[Pero le respondió Moisés:] ``Disculpa mi olvido, y no me sometas a una prueba difícil".\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmccxiv{Entonces partieron hasta que se encontraron con un joven al que mató. Dijo [Moisés]: ``¿Has matado a una persona inocente sin que él haya matado a nadie? Has hecho algo terrible".\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmccxv{Dijo: ``¿No te había dicho que no tendrías paciencia conmigo?"\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmccxvi{Dijo [Moisés]: ``Si volviera a preguntarte acerca de algo después de esto, ya no me admitas como compañero [de viaje], te habría dado excusa suficiente".\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmccxvii{Partieron hasta que llegaron a un pueblo y pidieron a sus habitantes que los alimentaran, pero se negaron a darles hospitalidad. Luego encontraron en el pueblo un muro que estaba a punto de derrumbarse, y [Al Jidr] lo reconstruyó. Le dijo [Moisés]: ``Si hubieras querido, podrías haber pedido una paga por ello".\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmccxviii{Dijo: ``Aquí nos separamos. Pero te informaré sobre la interpretación de aquello con lo que no tuviste paciencia.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmccxix{En cuanto al barco, pertenecía a unos pobres que trabajaban en el mar, y quise averiarlo porque detrás de ellos venía un rey que se apoderaba por la fuerza de todos los barcos [que estuvieran en perfectas condiciones].\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmccxx{En cuanto al joven, sus padres eran creyentes y supe [por inspiración divina] que él les induciría al desvío y la incredulidad.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmccxxi{Quiso su Señor concederles en su lugar otro hijo más puro y bondadoso.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmccxxii{En cuanto al muro, pertenecía a dos jóvenes huérfanos del pueblo. Debajo de él había un tesoro que les pertenecía. Su padre había sido un hombre piadoso y tu Señor quiso que cuando alcanzaran la madurez encontraran el tesoro, como una misericordia de tu Señor. Yo no lo hice por iniciativa propia. Ésta es la interpretación de aquello sobre lo que no tuviste paciencia".\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmccxxiii{Te preguntan [¡oh, Mujámmad!] acerca de Dhul Qarnain. Diles: ``Voy a relatarles una parte de su historia".\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmccxxiv{Le concedí poder en la Tierra y le facilité los medios [para que siguiera el camino del bien].\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmccxxv{Él emprendió un camino\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmccxxvi{hasta alcanzar la parte más occidental, donde vio que el Sol se ocultaba en un manantial cálido, y encontró allí un pueblo [que cometía toda clase de injusticias]. Le inspiré: ``¡Oh, Dhul Qarnain! Puedes castigarlos o tratarlos con benevolencia".\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmccxxvii{Dijo: ``A quien persista en la opresión lo castigaré y luego deberá comparecer ante su Señor, Quien le infligirá un castigo severo.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmccxxviii{Pero en cambio, a quien crea y obre correctamente se le concederá una bella recompensa, y le corresponderé con un trato amable".\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmccxxix{Luego siguió otro camino\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmccxxx{hasta alcanzar el lugar más oriental, donde vio que el Sol salía sobre un pueblo que no tenía resguardo para protegerse de él.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmccxxxi{Tengo conocimiento que trató a estos como lo había hecho [con el pueblo anterior].\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmccxxxii{Luego siguió otro camino\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmccxxxiii{hasta llegar a un valle entre dos montañas, donde encontró un pueblo que apenas comprendía las palabras [de su idioma].\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmccxxxiv{Dijeron: ``¡Oh, Dhul Qarnain! Gog y Magog siembran la corrupción en la Tierra. ¿Podríamos pedirte que, a cambio de una retribución, levantes una muralla entre ellos y nosotros?"\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmccxxxv{Les dijo: ``Lo que mi Señor me ha concedido es superior [a lo que puedan ofrecerme]. Ayúdenme y erigiré una muralla entre ustedes y ellos.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmccxxxvi{Tráiganme piezas de hierro hasta cubrir el espacio de las dos montañas". Les dijo: ``Enciendan un fuego y soplen [con fuelles] hasta que esté incandescente"; y agregó: ``Luego tráiganme cobre fundido para derramarlo encima".\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmccxxxvii{[Gog y Magog] no pudieron escalarla ni tampoco perforarla.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmccxxxviii{Dijo [Dhul Qarnain]: ``Ésta es una misericordia de mi Señor, pero cuando llegue la promesa de mi Señor [el Día del Juicio] la reducirá a polvo. La promesa de mi Señor es verdadera".\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmccxxxix{Ese día dejaré que surjan [Gog y Magog] como oleadas chocando unas con otras [sembrando la corrupción y el exterminio], pero luego será tocada la trompeta y los congregaré a todos.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmccxl{Ese día expondré el Infierno a los que se negaron a creer.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmccxli{Aquellos que tenían sus ojos velados a Mi recuerdo [el Corán] y no soportaban oír [la verdad].\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmccxlii{¿Acaso piensan los que se niegan a creer que si toman algunos de Mis siervos como protectores en Mi lugar [eso podrá protegerlos del castigo]? Tengo preparado el Infierno como castigo para los que se negaron a creer [en las enseñanzas de los Profetas].\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmccxliii{Diles: ``¿Quieren que les haga saber quiénes son los que no obtendrán beneficio alguno por sus obras?"\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmccxliv{[Son] aquellos que desperdiciaron los esfuerzos que realizaron en este mundo mientras creían obrar el bien.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmccxlv{Son quienes no creen en los signos de su Señor ni que comparecerán ante Él. Sus obras habrán sido en vano y en el Día de la Resurrección no tendrán nada que pese en la balanza.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmccxlvi{Recibirán el Infierno como castigo por no haber creído y por haberse burlado de Mis signos y de Mis Mensajeros.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmccxlvii{Pero quienes hayan creído y obrado rectamente tendrán como morada los jardines del Paraíso,\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmccxlviii{donde vivirán por toda la eternidad y no desearán mudarse jamás.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmccxlix{Diles: ``Si los mares fueran tinta para escribir las Palabras de mi Señor, se agotaría el agua de los mares antes de que se agotaran las Palabras de mi Señor, aunque se trajeran otros mares de tinta [equivalentes a los que existen]".\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmccl{Diles: ``Yo no soy más que un hombre a quien se le ha revelado que solo deben adorar a Dios, su única divinidad. Quien anhele encontrarse con su Señor [y que Él esté complacido], que realice obras piadosas y que no adore a nadie más que a Él".\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmccli{\basmalahes Kaf. Ha’. Ia’. ‘Ain. Sad.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcclii{Esto es un relato de la misericordia que tuvo tu Señor con Su siervo Zacarías,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmccliii{cuando invocó a su Señor en secreto.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmccliv{Dijo: ``¡Señor mío! Mis huesos se han debilitado y mi cabeza se ha llenado de canas. Mis ruegos nunca fueron rechazados.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcclv{Temo por [la fe de] mi familia tras mi muerte, pues mi mujer siempre ha sido estéril. Concédeme un hijo\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcclvi{que me suceda y herede [la profecía] de la familia de Jacob. ¡Oh, Señor mío! Hazlo uno de aquellos con los que Tú estás complacido".\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcclvii{[Le dijo un ángel:] ``¡Oh, Zacarías! Te albricio con un hijo al que pondrás por nombre Juan. Nadie ha sido llamado así antes que él".\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcclviii{Dijo: ``¡Señor mío! ¿Cómo he de tener un hijo si mi mujer es estéril y yo he llegado ya a la vejez extrema?"\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcclix{Dijo [el ángel]: ``Así será, pues tu Señor dice: ‘Eso es fácil para Mí, te he creado antes, cuando no existías’".\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcclx{Dijo [Zacarías]: ``¡Señor mío! Concédeme una señal [de que mi esposa quedará embarazada]". Dijo: ``Tu señal será que no podrás hablar a la gente durante tres noches seguidas, a pesar de no tener impedimento".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcclxi{[Cumplida la señal, Zacarías] salió del oratorio hacia su gente [cuando su mujer quedó embarazada] y les indicó por señas que debían glorificar a Dios por la mañana y por la tarde.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmcclxii{[Cuando su hijo alcanzó la pubertad, le dije:] ``¡Oh, Juan! Aférrate al Libro con firmeza". Le concedí sabiduría desde su infancia,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcclxiii{que fuera compasivo, puro y piadoso,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcclxiv{honraba a sus padres, no era soberbio ni desobediente.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmcclxv{La paz fue con él el día que nació, el día que falleció y será con él el día que sea resucitado.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmcclxvi{Recuerda [¡oh, Mujámmad!] la historia de María que se menciona en el libro, cuando se apartó de su familia para retirarse a un lugar al este\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmcclxvii{y puso un velo para apartarse de la vista de los hombres de su pueblo. Entonces le envié a Mi ángel, quien se le presentó con forma humana.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmcclxviii{Ella dijo: ``Me refugio en el Compasivo de ti, [apártate de aquí] si es que tienes temor de Dios".\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmcclxix{Le dijo: ``Soy un enviado de tu Señor para agraciarte con un hijo puro".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmcclxx{Ella dijo: ``¿Cómo voy a tener un hijo si no me ha tocado ningún hombre ni he fornicado?"\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmcclxxi{Le dijo [el ángel]: ``Así será, pues tu Señor dice: ‘Eso es fácil para Mí. Lo convertiré [a tu hijo] en un milagro y una misericordia para la humanidad. Es un asunto decidido’".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmcclxxii{Cuando se sintió embarazada, decidió retirarse a un lugar apartado.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmcclxxiii{Los dolores de parto la llevaron junto al tronco de una palmera. Exclamó: ``Preferiría haber muerto antes que esto, y así hubiera sido olvidada completamente".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmcclxxiv{Entonces [el ángel] la llamó desde abajo [del valle]: ``No estés triste, tu Señor ha hecho fluir debajo de ti un arroyo.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmcclxxv{Sacude el tronco de la palmera y caerán sobre ti dátiles frescos.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmcclxxvi{Come, bebe y anímate. Pero cuando veas a alguien dile: ‘He realizado un voto de silencio al Compasivo, y no hablaré hoy con ninguna persona’".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmcclxxvii{Se presentó ante su pueblo llevándolo en brazos [a Jesús]. Le dijeron: ``¡Oh, María! Has hecho algo abominable.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmcclxxviii{¡Tú desciendes de Aarón! Tu padre no era un hombre deshonesto ni tu madre una fornicadora".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmcclxxix{Ella lo señaló [al niño], y entonces le dijeron: ``¿Cómo vamos a hablar con un niño que aún está en la cuna?"\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmcclxxx{Entonces [Jesús] habló: ``Soy un siervo de Dios, Él me revelará el Libro y hará de mí un Profeta.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmcclxxxi{Seré bendecido dondequiera que me encuentre, y me ha encomendado hacer la oración, dar caridad mientras viva,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmcclxxxii{honrar a mi madre, y no ser arrogante ni insolente.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmcclxxxiii{La paz fue conmigo el día que nací, el día que muera y el día que sea resucitado".\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmcclxxxiv{Ese es Jesús, hijo de María, la verdad sobre la que ellos discuten.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmcclxxxv{No es propio de Dios tener un hijo. ¡Glorificado sea! Cuando decide algo dice: ``¡Sé!", y es.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmcclxxxvi{[Dijo Jesús:] ``Dios es mi Señor y el de ustedes, ¡adórenlo! Ese es el sendero recto".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmcclxxxvii{Pero discreparon las sectas sobre él. ¡Cuán desdichados serán ese día los que negaron la verdad cuando comparezcan [ante Dios] en un día terrible!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmcclxxxviii{Oirán y verán muy bien [su error] el día que comparezcan ante Mí. Pero los que cometen injusticias [atribuyendo un hijo a Dios] en esta vida están evidentemente extraviados.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmcclxxxix{Adviérteles acerca del día que se lamenten, cuando la sentencia sea cumplida. Pero ellos, a pesar de esto, siguen indiferentes y no creen.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmccxc{Yo heredaré la Tierra y a quienes están sobre ella. Ante mí regresarán.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmccxci{Nárrales [¡oh, Mujámmad!] la historia de Abraham que se menciona en el Libro. Era un hombre veraz, un Profeta.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmccxcii{Cuando [Abraham] dijo a su padre: ``¡Oh, padre mío! ¿Por qué adoras a lo que no oye ni ve ni puede beneficiarte en absoluto?\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmccxciii{¡Oh, padre mío! Se me ha revelado un conocimiento que tú no tienes. Sígueme, y te guiaré por el sendero recto.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmccxciv{¡Oh, padre mío! No adores al demonio, porque el demonio fue desobediente con el Compasivo.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmccxcv{¡Oh, padre mío! Temo que te alcance un castigo del Compasivo y seas de los que acompañen al demonio [al Infierno]".\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmccxcvi{Dijo [su padre]: ``¡Oh, Abraham! ¿Acaso rechazas a mis ídolos? Si no dejas de hacerlo te lapidaré. Aléjate de mí por buen tiempo".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmccxcvii{Dijo [Abraham]: ``¡Que la paz sea sobre ti! Pediré perdón por ti a mi Señor. Él ha sido generoso conmigo.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmccxcviii{Me alejaré de ustedes y de cuanto invocan en vez de Dios, e imploraré a mi Señor, y espero que mis ruegos a mi Señor no sean rechazados".\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmccxcix{Cuando se apartó de ellos y de cuanto adoraban en vez de Dios, lo agracié con [sus hijos] Isaac y Jacob, y a ambos los designé Profetas.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmccc{Los agracié con Mi misericordia y que fueran recordados siempre con gran respeto.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmccci{Nárrales [oh, Mujámmad] la historia de Moisés mencionada en el Libro. Él fue elegido para ser Profeta y Mensajero.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcccii{Lo llamé desde la ladera derecha del monte e hice que se aproximara para hablarle en forma confidencial.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmccciii{Hice que, por Mi misericordia, su hermano Aarón fuera también un Profeta.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmccciv{Nárrales [oh, Mujámmad] la historia de Ismael mencionada en el Libro. Siempre cumplió su palabra, fue Profeta y Mensajero.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcccv{Invitaba a su gente a realizar la oración y dar caridad, y alcanzó la complacencia de Dios.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcccvi{Nárrales la historia de Enoc que se menciona en el Libro. Fue un hombre veraz, y Profeta.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcccvii{Lo elevé a un lugar sublime.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcccviii{Ellos son a quienes Dios ha agraciado: Profetas descendientes de Adán, descendientes de los que transportamos [en el arca] con Noé, de los descendientes de Abraham y de Israel [Jacob], entre los que guie y elegí. Cuando se les recitaban los versículos del Compasivo, se prosternaban llorando conmovidos.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcccix{Pero vinieron después de ellos generaciones que descuidaron la oración y siguieron sus pasiones, por lo que tendrán una merecida condena.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcccx{Salvo quienes se arrepintieron, creyeron y obraron rectamente. Éstos ingresarán al Paraíso y no serán oprimidos en absoluto.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcccxi{[Entrarán] a los Jardines del Edén, prometidos por el Compasivo a Sus siervos [en las revelaciones] de lo oculto. Su promesa será cumplida.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcccxii{No oirán frivolidades allí, sino saludos de paz, y recibirán su sustento por la mañana y por la tarde.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcccxiii{Ése es el Paraíso que haremos heredar a quienes de Mis siervos hayan sido piadosos.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcccxiv{[Dice el ángel Gabriel:] ``Los ángeles no descienden sino por orden de tu señor. Él conoce nuestro presente, pasado y futuro. Tu Señor nunca olvida.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcccxv{Es el Señor de los cielos, de la Tierra y de cuanto hay entre ambos. Adóralo y persevera en Su adoración. ¿Conoces a alguien similar a Él?"\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcccxvi{El ser humano dice: ``¿Acaso luego de morir seré resucitado?"\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcccxvii{¿Acaso no recuerda el ser humano que lo creé por primera vez cuando no era nada?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmcccxviii{¡Por tu Señor! Los congregaré junto con los demonios [que adoraban], y he de hacerlos comparecer de rodillas alrededor del Infierno [para ser juzgados].\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmcccxix{Luego sacaré de cada comunidad a aquellos que hayan sido más insolentes con el Compasivo.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmcccxx{Yo sé mejor que nadie quiénes son los que más merecen ser arrojados al Infierno.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmcccxxi{Todos ustedes lo contemplarán [al Infierno], y esa es una determinación irrevocable de tu Señor.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmcccxxii{Luego, salvaré a los piadosos y dejaré en él a los que cometieron la injusticia [de la idolatría] de rodillas.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcccxxiii{Cuando se les recitan Mis claros versículos, los que se niegan a creer dicen con arrogancia a los creyentes: ``¿Quién posee de nosotros moradas más placenteras y mejores lugares de encuentro?"\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmcccxxiv{Pero, ¿a cuántas generaciones que les precedieron, de mayor riqueza y mejor aspecto, he destruido?\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmcccxxv{Diles: ``A quienes se encuentren desviados, el Compasivo los dejará continuar en el desvío hasta que les acontezca lo que Dios ha deparado para ellos: su destrucción en esta vida o luego de comparecer en el Día del Juicio. Entonces sabrán quiénes se encuentran en peor situación y quién tiene el ejército más débil".\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcccxxvi{Dios encaminará a quienes siguieron la guía. Las obras que a Dios Le complacen son las que realmente perduran y las que tienen una gran recompensa.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcccxxvii{¿Acaso observas a quien no cree en Mis signos y dice: ``Me serán concedidos bienes materiales e hijos [cuando sea resucitado]"?\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcccxxviii{¿Acaso tiene conocimiento de lo oculto o tiene un pacto con el Compasivo?\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmcccxxix{¡Claro que no! Registraré lo que dice y le prolongaré [por ello] el castigo.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmcccxxx{Yo seré Quien herede sus bienes materiales e hijos y [el Día del Juicio] comparecerá completamente solo.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmcccxxxi{[Los idólatras] tomaron a los ídolos como divinidades en lugar de Dios para que les dieran protección.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmcccxxxii{¡Pero no! [Estos ídolos] negarán que hayan sido objeto de culto y se convertirán en sus adversarios.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmcccxxxiii{¿Acaso no ves que he enviado demonios sobre los incrédulos para que les induzcan a cometer el mal?\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmcccxxxiv{No esperes que el castigo los azote antes de tiempo; que ya tienen sus días contados.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmcccxxxv{El día que congregue a las delegaciones de piadosos ante el Compasivo,\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmcccxxxvi{y conduzca a los pecadores hacia el Infierno sedientos.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmcccxxxvii{No tendrán quién interceda por ellos, salvo quienes hayan asumido el compromiso con el Compasivo [de creer que Él es la única divinidad con derecho a ser adorada].\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmcccxxxviii{Dicen: ``El Compasivo tuvo un hijo".\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmcccxxxix{Han proferido algo terrible;\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmcccxl{los cielos estuvieron a punto de hendirse, la Tierra de abrirse y las montañas de caer derrumbadas,\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmcccxli{porque Le atribuyeron un hijo al Compasivo.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmcccxlii{No es propio [de la grandiosidad] del Compasivo tener un hijo.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmcccxliii{Todos los que habitan en los cielos y en la Tierra se presentarán sumisos ante el Compasivo.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmcccxliv{Los ha enumerado y contado perfectamente.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmcccxlv{Todos se presentarán solos ante Él el Día del Juicio.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmcccxlvi{El Compasivo hará que quienes hayan creído y obrado rectamente sean amados [por la gente].\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmcccxlvii{Te he facilitado [el Corán] revelándotelo [oh, Mujámmad] en tu idioma para que albricies con él a los piadosos y adviertas a tus enemigos.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmcccxlviii{A muchas generaciones que los precedieron las he destruido. ¿Acaso puedes ver a alguno de ellos u oír sus murmullos?\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmcccxlix{\basmalahes Ta’. Ha’.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcccl{No te he revelado el Corán para que te agobie,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcccli{sino que es una exhortación para quienes tienen temor [de Dios].\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmccclii{[El Corán] fue revelado por Quien creó la Tierra y los altos cielos;\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcccliii{el Compasivo, que se estableció sobre el Trono.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcccliv{A Él pertenece cuanto hay en los cielos y en la Tierra, lo que existe entre ellos y lo que hay bajo la tierra.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmccclv{Dios conoce lo que pronuncias en voz alta, las confidencias que dices en voz baja y lo que está aún más oculto [los pensamientos].\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmccclvi{¡Dios! No hay más divinidad que Él. A Él pertenecen los nombres [y los atributos] más sublimes.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmccclvii{¿Conoces la historia de Moisés?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmccclviii{Cuando vio un fuego y dijo a su familia: ``Permanezcan aquí, pues he visto un fuego y tal vez pueda traerles una brasa encendida o encuentre junto al fuego quién pueda indicarnos [el camino]".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmccclix{Cuando llegó a él, una voz lo llamó: ``¡Oh, Moisés!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmccclx{Yo soy tu Señor; quítate las sandalias, pues estás en el valle sagrado de Tuwa,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmccclxi{Y Yo te he elegido; escucha lo que voy a revelarte.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmccclxii{Yo soy Al-lah, y no hay más divinidad que Yo. Adórame solo a Mí y haz la oración para recordarme.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmccclxiii{El Día de la Resurrección es indubitable, y nadie salvo Dios sabe cuándo llegará. Ese día cada alma recibirá la recompensa o el castigo que se merezca por sus obras.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmccclxiv{No te dejes seducir por quienes no creen en la resurrección y siguen sus pasiones, porque serás de los que pierdan.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmccclxv{¿Qué es lo que tienes en tu diestra? ¡Oh, Moisés!"\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmccclxvi{Respondió: ``Es mi bastón. Me sirve de apoyo, y con él vareo los árboles para que mi ganado coma [de su follaje]; además de otros usos".\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmccclxvii{Dijo [Dios]: ``Arrójalo, ¡oh, Moisés!"\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmccclxviii{Lo arrojó, y este se convirtió en una serpiente que reptaba.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmccclxix{Dijo [Dios]: ``Recógela y no temas, pues la volveré a su forma original.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmccclxx{Introduce tu mano en tu costado y saldrá blanca, resplandeciente, sin defecto alguno. Ese será otro milagro.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmccclxxi{Te he mostrado algunos de Mis mayores milagros.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmccclxxii{Ve ante el Faraón, pues se ha extralimitado".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmccclxxiii{Dijo [Moisés]: ``¡Oh, Señor mío! Abre mi corazón [y dame valor],\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmccclxxiv{facilita mi misión,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmccclxxv{suelta el nudo que hay en mi lengua\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmccclxxvi{para que comprendan mis palabras,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmccclxxvii{[¡Señor!] Designa a alguien de mi familia para que me ayude\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmccclxxviii{¡Que sea mi hermano Aarón!,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmccclxxix{para que con él me sienta fortalecido,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmccclxxx{y asócialo en mi misión\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmccclxxxi{para que Te glorifiquemos\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmccclxxxii{y Te recordemos mucho.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmccclxxxiii{Tú bien ves que necesitamos de Ti".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmccclxxxiv{Dijo [Dios]: ``Te ha sido concedido lo que pides, ¡oh, Moisés!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmccclxxxv{Ya te había agraciado anteriormente,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmccclxxxvi{cuando le inspiré a tu madre:\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmccclxxxvii{‘Deposítalo en un cesto y déjalo en el río, que la corriente lo llevará hasta una orilla donde será recogido por un enemigo Mío y suyo [el Faraón]’. Desperté cariño hacia ti [entre los que te encontraron], para que crecieras educado bajo Mi observancia.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmccclxxxviii{Cuando tu hermana, que seguía tus rastros, le dijo [al Faraón]: ‘¿Acaso quieres que te indique a alguien que puede encargarse de cuidarlo?’ Y así te devolví a tu madre para que se tranquilizara y no estuviera triste. [También te concedí una gracia] cuando [involuntariamente] mataste a un hombre [del pueblo del Faraón] y te salvé de que tomaran represalias contra ti. Te he probado con pruebas difíciles. Luego permaneciste unos años en Madián y ahora has regresado aquí, tal como estaba decretado, ¡oh, Moisés!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmccclxxxix{Te he elegido [para que seas Mi Mensajero].\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmcccxc{Vayan tú y tu hermano acompañados de Mis milagros, y no descuiden Mi recuerdo.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmcccxci{Preséntense ante el Faraón, pues se ha extralimitado,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmcccxcii{pero háblenle cortésmente, para hacerlo entrar en razón o sienta temor de Dios".\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmcccxciii{Dijeron: ``¡Oh, Señor nuestro! Tememos que se violente y abuse de nosotros".\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmcccxciv{Dijo [Dios]: ``No tengan miedo, pues Yo estoy con ustedes escuchando y observando todo.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmcccxcv{Vayan ante él y díganle: ‘Somos Mensajeros enviados por tu Señor, para que dejes ir con nosotros a los Hijos de Israel y no los tortures más. Hemos venido con un milagro de tu Señor. Quien sigua la guía estará a salvo.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmcccxcvi{Nos ha sido revelado que quien desmienta y rechace [el Mensaje] será castigado’".\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmcccxcvii{Dijo [el Faraón]: ``Respóndeme, ¡oh, Moisés! ¿Y quién es su Señor?"\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcccxcviii{Dijo [Moisés]: ``Nuestro Señor es Quien creó todo con una naturaleza particular, y luego lo encamina [para que cumpla su destino]".\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcccxcix{Entonces, preguntó [el Faraón]: ``¿Cuál fue el destino de las generaciones anteriores?"\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcd{Dijo [Moisés]: ``Solo mi Señor lo sabe, y Él lo tiene registrado todo en un Libro. Mi Señor no se equivoca nunca ni se olvida de nada.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcdi{Él nos dispuso la Tierra como un lecho [propicio para habitarlo] y nos trazó en ella caminos, e hizo descender agua del cielo para que con ella broten diferentes plantas.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcdii{Coman de ellas y apacienten sus ganados. En esto hay signos para los dotados de entendimiento.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcdiii{De ella [la tierra] los he creado, a ella los haré retornar [cuando mueran], y de ella los haré surgir nuevamente [el Día de la Resurrección]".\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcdiv{Le mostré [al Faraón] todos Mis milagros, pero los desmintió y se rehusó a creer.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcdv{Dijo [el Faraón]: ``¡Oh, Moisés! ¿Acaso viniste a expulsarnos de nuestra tierra con tu hechicería?\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcdvi{Nosotros te traeremos una hechicería igual que la tuya, solo fija un día para que tú y nosotros nos encontremos en un lugar y que nadie falte".\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcdvii{Dijo [Moisés]: ``Nuestra cita será el día de la fiesta, cuando la gente se congregue a la media mañana".\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcdviii{Entonces el Faraón se retiró y se dedicó a reclutar hechiceros. Luego, el día de la cita, concurrió.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcdix{Moisés les dijo [a los hechiceros]: ``¡Ay de ustedes! No inventen mentiras contra Dios, pues los aniquilará con Su castigo: Los que inventan mentiras acerca de Dios serán los perdedores".\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcdx{Entonces, [los hechiceros] debatieron entre ellos acerca de Moisés, y deliberaron secretamente.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcdxi{Dijeron: ``Estos son solo dos hechiceros que con su magia quieren expulsarlos de su tierra y acabar con sus nobles costumbres.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcdxii{[Oh, hechiceros de Egipto,] Decidan su plan a seguir, y luego acudan como un solo cuerpo: pues, ¡quien sea superior hoy, ha de conseguir prosperidad!"\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcdxiii{Dijeron: ``¡Oh, Moisés! ¿Arrojas tú o lo hacemos nosotros primero?"\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcdxiv{Dijo [Moisés]: ``Arrojen ustedes primero". Entonces arrojaron sus cuerdas y varas, y por el hechizo que habían empleado, estas parecían moverse [como si fueran verdaderas serpientes].\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcdxv{[Al ver esto,] Moisés sintió temor en su interior,\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmcdxvi{pero le dije: ``No tengas temor, porque tú serás el vencedor.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmcdxvii{Arroja lo que tienes en tu diestra, que anulará lo que ellos hicieron, pues solo se trata de una hechicería, y los hechiceros jamás han de triunfar".\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmcdxviii{Los hechiceros [al percibir que el milagro que acompañaba a Moisés no era magia] se postraron y exclamaron: ``Creemos en el Señor de Aarón y Moisés".\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmcdxix{Dijo [el Faraón enfurecido]: ``¿Acaso van a creer en él sin que yo se los haya autorizado? Seguramente él es su maestro que les ha enseñado la magia. Ordenaré que se les ampute la mano y el pie opuestos, y luego los haré clavar sobre troncos de palmera. Así sabrán quién es el que puede infligir el castigo más severo y duradero".\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmcdxx{Dijeron: ``No antepondremos nuestra lealtad a ti a los milagros evidentes que hemos presenciado, y [menos aún] a Quien nos creó. Haz pues con nosotros lo que has decidido; tú solo puedes condenarnos en esta vida.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcdxxi{Creemos en nuestro Señor, para que nos perdone nuestros pecados y los hechizos que nos obligaste a hacer. La recompensa de Dios es mejor y más duradera".\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmcdxxii{Quien se presente ante su Señor siendo culpable tendrá el Infierno como castigo, en el que no podrá morir [para librarse del tormento] ni vivir [sin padecerlo].\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmcdxxiii{En cambio, quien se presente ante su Señor creyendo en Él y habiendo obrado rectamente, obtendrá los más altos grados [en el Paraíso].\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcdxxiv{Morarán eternamente en los Jardines del Edén, bajo los cuales corren ríos. Esa será la recompensa de quienes se purifiquen.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcdxxv{Le ordené a Moisés: ``Sal por la noche con Mis siervos, y abre [por Mi voluntad] el mar dejándoles un camino de tierra firme [por donde puedan huir], y no tengan temor de que los alcancen ni tampoco de morir ahogados".\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcdxxvi{Cuando el Faraón y su ejército siguieron [a los creyentes], el mar se los tragó.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmcdxxvii{El Faraón, en lugar de guiar a su pueblo, lo llevó al extravío.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmcdxxviii{¡Oh, Hijos de Israel! [Recuerden cuando] los salvé de sus enemigos, los cité en la ladera derecha del monte [para que pudieran presenciar Mis milagros], y les envié el maná y las codornices.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmcdxxix{Coman de las cosas buenas que les he proveído, pero no se extralimiten, pues Mi ira recaería sobre ustedes. Aquel sobre quien caiga Mi ira será un desdichado.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmcdxxx{Yo soy Perdonador con quienes se arrepienten, creen, obran rectamente y se encaminan [por el sendero recto].\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmcdxxxi{[Cuando Moisés se presentó a la cita, Dios le dijo:] ``¡Oh, Moisés! ¿Qué te ha urgido a presentarte dejando atrás a tu pueblo?"\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmcdxxxii{Dijo: ``Ellos vienen detrás mío; solo me adelanté para complacerte, ¡oh, Señor mío!"\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmcdxxxiii{Dijo [Dios]: ``He puesto a prueba a tu pueblo después que los dejaste, y el samaritano los extravió".\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmcdxxxiv{Cuando Moisés regresó ante su pueblo enojado y avergonzado, les dijo: ``¡Oh, pueblo mío! ¿Acaso su Señor no les ha hecho una promesa hermosa? ¿Acaso les parece que me ausenté por mucho tiempo? ¿Acaso quieren que la ira de su Señor se desate sobre ustedes, y por ello quebrantaron la promesa que me hicieron?"\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmcdxxxv{Dijeron: ``No quebrantamos la promesa que te hicimos intencionalmente, sino que cuando arrojamos al fuego las joyas del pueblo [del Faraón] que teníamos en nuestro poder, el samaritano también las arrojó,\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmcdxxxvi{y fundió las joyas dándoles la forma de un becerro que emitía un sonido como un mugido, y entonces exclamaron [el samaritano y sus seguidores]: ‘Esta es nuestra divinidad y la de Moisés, pero Moisés la ha olvidado’".\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmcdxxxvii{¿Acaso no vieron que no podía hablarles, y no podía dañarlos ni beneficiarlos?\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmcdxxxviii{Pero antes [que regresara Moisés] Aarón les había advertido: ``¡Oh, pueblo mío! Se los está poniendo a prueba con eso. Su verdadero Señor es el Compasivo, síganme y obedezcan mis órdenes".\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmcdxxxix{Respondieron: ``No dejaremos de postrarnos ante él hasta que vuelva Moisés".\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmcdxl{Dijo [Moisés]: ``¡Oh, Aarón! ¿Qué te impidió, cuando viste que se desviaban,\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmcdxli{buscarme [para informarme lo sucedido]? ¿Es que desobedeciste mi orden [de velar por ellos]?"\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmcdxlii{Dijo [Aarón]: ``¡Oh, hermano mío! No me recrimines agarrándome por la barba y la cabeza. Tuve miedo de que [si los dejaba para salir a buscarte] me dijeras: ‘Lo que has hecho es causar la discordia y la división entre los Hijos de Israel [al haberte ausentado], y no has cumplido con lo que te ordené’".\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmcdxliii{Dijo [Moisés]: ``Y tú Samaritano, ¿qué has hecho?"\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmcdxliv{Dijo: ``Vi algo que ellos no pudieron ver. Entonces tomé un puñado de tierra de las huellas que dejó el mensajero y lo arrojé [sobre las joyas cuando se fundían]. Así me lo sugirió mi alma".\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmcdxlv{Dijo [Moisés]: ``Aléjate de nosotros; tu castigo en esta vida será que digas: ‘No se me acerquen’ [y vivirás solo], pero te aguarda una cita ineludible [el Día del Juicio]. Observa [lo que haremos con] lo que consideraste tu divinidad, y a lo cual has adorado: Lo quemaremos y esparciremos sus restos en el mar.\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmcdxlvi{Tu única divinidad es Dios. No existe nada ni nadie con derecho a ser adorado salvo Él, y todo lo abarca con Su conocimiento".\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmcdxlvii{Así es como te he revelado [¡oh, Mujámmad!] las historias de quienes te precedieron, porque te he concedido el Mensaje.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmcdxlviii{Quien se aparte de él, llevará una pesada carga el Día del Juicio,\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmcdxlix{que cargará por toda la eternidad. ¡Qué pésima carga tendrán que soportar el Día de la Resurrección!\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmcdl{Ese día, cuando la trompeta sea soplada, reuniré a los culpables, y sus miradas estarán ensombrecidas.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmcdli{Se susurrarán unos a otros, y algunos dirán: ``Solo permanecimos [en la vida mundanal] diez días".\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmcdlii{Y otros, los más sensatos, dirán: ``Solo permanecimos un día." Bien sé lo que dicen.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmcdliii{Te preguntan [¡oh, Mujámmad!] qué ocurrirá con las montañas [el Día del Juicio]. Diles: ``Mi Señor las reducirá a polvo,\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmcdliv{y las convertirá en inmensas llanuras.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmcdlv{No habrá valles ni colinas".\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmcdlvi{Ese día todos acudirán al llamado del [ángel] pregonero, y nadie errará el camino; las voces callarán ante el Misericordioso, y solo se oirá el sonido de sus pasos.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmcdlvii{Entonces, ninguna intercesión será aceptada, salvo la de quien el Misericordioso quiera y sus palabras le sean aceptadas.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmcdlviii{Dios bien conoce el pasado y el futuro, mientras que ellos nunca podrán alcanzar este conocimiento.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmcdlix{[El Día del Juicio] todos los rostros se humillarán ante Dios, el Viviente, Quien se basta a Sí mismo y se ocupa de toda la creación. Estarán condenados al castigo quienes sean culpables de injustica [idolatría].\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmcdlx{En cambio, el creyente que haya obrado rectamente no ha de temer que lo traten injustamente ni lo priven de la recompensa [de sus buenas obras].\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmcdlxi{He revelado el Corán en idioma árabe, y expuse en él toda clase de advertencias para que tengan temor de Dios o los haga reflexionar.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmcdlxii{¡Exaltado sea Dios! El único Soberano real. No te adelantes [¡oh, Mujámmad!] a repetir lo que te es revelado del Corán hasta que [el ángel Gabriel] concluya [de recitarlo], y di: ``¡Oh, Señor mío! Acrecienta mi conocimiento".\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmcdlxiii{Ya antes había tomado un compromiso de Adán [de no prestarse a los susurros del demonio], pero lo olvidó [y comió del árbol prohibido], no tuvo una resolución firme.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmcdlxiv{[Recuerda] cuando dije a los ángeles: ``¡Hagan una reverencia ante Adán!" Todos la hicieron excepto Iblís.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmcdlxv{Dije: ``¡Oh, Adán! Este [el demonio] es un enemigo para ti y para tu esposa; que no los haga expulsar del Paraíso pues serás un desdichado.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmcdlxvi{En el Paraíso no padecerás hambre ni te faltará con qué cubrir tu desnudez,\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmcdlxvii{ni tampoco sufrirás sed ni calor".\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmcdlxviii{Pero el demonio lo sedujo diciéndole: ``¡Oh, Adán! ¿Quieres que te indique el árbol de la inmortalidad y el poder eterno?"\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmcdlxix{Cuando ambos comieron del árbol, advirtieron su desnudez y comenzaron a cubrirse con hojas del Paraíso. Adán desobedeció a su Señor y cometió un pecado.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmcdlxx{Más tarde, su Señor lo eligió [como Profeta], lo perdonó y lo guió.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmcdlxxi{Dijo [Dios]: ``¡Desciendan del Paraíso [y habiten la Tierra]! Serán enemigos unos de otros. Cuando les llegue de Mí una guía, quienes sigan Mi guía no se extraviarán [en esta vida] ni serán desdichados [en el más allá].\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmcdlxxii{Pero quien se aleje de Mi recuerdo [Mi religión] llevará una vida de tribulación, y el Día del Juicio lo resucitaré ciego.\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmcdlxxiii{Y entonces dirá: ‘¡Oh, Señor mío! ¿Por qué me has resucitado ciego, si antes veía?’"\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmcdlxxiv{Dirá [Dios]: ``Así como cuando te llegaron Mis signos los ignoraste, hoy tú serás ignorado".\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmcdlxxv{Así voy a retribuir a quienes se extralimitaron y no creyeron en los signos de su Señor. Pero el castigo de la otra vida será aún más severo y duradero.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmcdlxxvi{¿Acaso no se les ha evidenciado [a quienes rechazan este Mensaje] cuántas civilizaciones destruí, siendo que ellos pueden observar sus ruinas? En ello hay signos para los dotados de entendimiento.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmcdlxxvii{De no ser porque tu Señor ha decretado [retrasarles el castigo hasta el Día del Juicio a quienes te desmientan] y ha prefijado para cada ser su plazo [de vida durante la cual puede arrepentirse], ya los habría aniquilado.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mmcdlxxviii{Ten paciencia ante sus injurias, y glorifica con alabanzas a tu Señor antes de la salida del Sol y antes del ocaso, durante la noche y durante los extremos del día, para que así [Dios te retribuya con una gran recompensa y] quedes complacido.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mmcdlxxix{No codicies [¡oh, Mujámmad!] aquello conque he agraciado a algunos de los ricos [de los incrédulos], pues son solo placeres de esta vida mundanal con los que los ponemos a prueba. La recompensa que tu Señor tiene reservada es mejor y más duradera.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mmcdlxxx{Ordena a tu familia practicar la oración prescrita y sé constante en su cumplimiento. Que el trabajo en búsqueda del sustento no te haga descuidar el cumplimiento de lo que Dios ha prescrito, porque soy Yo quien los sustento. La bienaventuranza es para los piadosos.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxi{[Los que rechazan el Mensaje] dicen: ``¿Por qué no nos muestra un milagro de su Señor [que compruebe su profecía]?" Pero si ya les han llegado pruebas evidentes en los primeros Libros revelados.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxii{Y si hubiera decretado destruirlos con un castigo antes de la llegada de Mi Mensajero, habrían dicho: ``¡Oh, Señor nuestro! Si nos hubieras enviado un Mensajero habríamos seguido Tu Mensaje antes de ser humillados [con el castigo] y desdichados para siempre".\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxiii{Diles [¡oh, Mujámmad!]: ``Todos esperan [saber qué ocurrirá]; sigan esperando, que ya sabrán quiénes están en el camino recto y siguen la guía".\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxiv{\basmalahes Se aproxima la hora en que la gente deberá comparecer [ante Dios para ser juzgada], sin embargo se muestran indiferentes, lejanos.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxv{Siempre que les llega de su Señor una nueva revelación, la escuchan y la toman a broma,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxvi{con sus corazones distraídos. Los injustos dicen entre sí en secreto: ``[Mujámmad] no es más que un mortal al igual que nosotros. [Y recriminando a los que lo escuchaban dicen:] ¿Cómo aceptan ser cautivados por la magia de sus palabras si saben [que es un farsante]?"\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxvii{Diles [¡oh, Mujámmad!]: ``Mi Señor bien sabe todo lo que se dice en el cielo y en la Tierra. Él todo lo oye, todo lo sabe".\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxviii{Y dicen [otros idólatras]: ``[El Corán] no es más que sueños incoherentes, o [palabras que] él mismo ha inventado, o es un poeta. Que nos muestre un milagro como lo hicieron los primeros [Mensajeros, si es verdad lo que dice]".\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcdlxxxix{Ninguno de los pueblos a los que exterminé creyeron [al ver los milagros], ¿acaso éstos van a creer? [No lo harán].\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcdxc{No envié antes de ti sino hombres a quienes transmití Mi revelación. Pregunten a la gente de conocimiento si es que no saben.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcdxci{No les di [a los Mensajeros] cuerpos que no necesitaran comer, tampoco eran inmortales.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcdxcii{Luego cumplí con la promesa que les había hecho. Los salvé a ellos y a otros que quise, pero hice perecer a los transgresores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcdxciii{Les he revelado un Libro en el que hay una amonestación para ustedes. ¿Cómo es que no reflexionan?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcdxciv{¡Cuántos pueblos opresores destruí, e hice surgir después de ellos nuevas generaciones!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmcdxcv{Cuando sintieron que Mi tormento se desencadenaba sobre ellos, trataron de escapar.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcdxcvi{[Entonces se les dijo irónicamente:] ``No intenten escapar, regresen a la vida placentera que llevaban y esperen en sus hogares, quizás tengan que dar explicaciones".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcdxcvii{Respondieron: ``¡Ay de nosotros! En verdad hemos sido injustos".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmcdxcviii{Y no cesaron de lamentarse hasta que los aniquilé, dejándolos inertes como paja segada.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmcdxcix{No creé el cielo y la Tierra y todo cuanto existe entre ellos solo como un juego.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmd{Si hubiera buscado divertirme, lo habría hecho por Mi cuenta [sin crear nada para ello].\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdi{Por el contrario, refuto lo falso con la Verdad, y lo falso se desvanece. Les aguarda la perdición por como han descrito [a Dios].\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdii{A Él pertenece cuanto existe en los cielos y en la Tierra, y quienes están junto a Él [los ángeles] no dejan, por soberbia, de adorarlo ni se cansan de hacerlo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdiii{Lo glorifican noche y día, sin cesar.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdiv{¿Acaso las divinidades que adoran en la Tierra tienen poder para resucitar a los muertos?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdv{Si hubiese habido en los cielos y en la Tierra otras divinidades además de Dios, éstos se habrían destruido. ¡Glorificado sea Dios, Señor del Trono! Él está por encima de lo que Le atribuyen.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdvi{Él no es interrogado por lo que hace, a diferencia de Sus siervos que sí serán interrogados.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdvii{A aquellos que adoran a otras divinidades en lugar de Dios, diles: ``Presenten pruebas válidas. Éste es mi Mensaje y el de quienes me siguen, y el Mensaje de quienes nos precedieron. Pero la mayoría no reconoce la Verdad y la rechazan".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdviii{No envié en el pasado a ningún Mensajero, excepto que recibiera la misma revelación que tú: ``Nada ni nadie merece ser adorado excepto Yo, ¡Adórenme solo a Mí!"\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdix{[Algunos] dicen: ``El Misericordioso ha tenido un hijo". ¡Glorificado sea! Por el contrario, [los ángeles y los Profetas] son solo siervos distinguidos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdx{No dan prioridad a sus palabras sobre la Palabra de Dios, y cumplen con lo que Él manda.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdxi{[Dios] Conoce tanto lo que hicieron como lo que harán, y solo podrán interceder por quienes Dios se complazca. Por temor a Él están sobrecogidos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdxii{Si uno de ellos dijera: ``Yo soy un dios junto a Él", lo condenaría al Infierno, porque así castigo a los injustos.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdxiii{¿Acaso los que se niegan a creer no reparan en que los cielos y la Tierra formaban una masa homogénea y la disgregué, y que creé del agua a todo ser vivo? ¿Es que aún después de esto no van a creer?\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdxiv{Afirmé la Tierra con montañas para que no tiemble, y dispuse caminos para que encuentren guía.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdxv{Hice del cielo un techo protector, pero aun así los que se niegan a creer rechazan reflexionar en Mis signos.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdxvi{Él es Quien creó la noche y el día, el Sol y la Luna. Cada uno recorre su órbita.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdxvii{No he concedido la inmortalidad a ningún ser humano. Si tú [¡oh, Mujámmad!] has de morir, ¿por qué razón iban ellos a ser inmortales?\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdxviii{Toda alma probará la muerte. Los pondré a prueba con cosas malas y cosas buenas, pero finalmente volverán a Mí para ser juzgados.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdxix{Cuando los que se niegan a creer te ven, se burlan de ti, y dicen: ``Éste es quien desdeña a nuestros ídolos"; sin embargo, son ellos los que, cuando es mencionado el Misericordioso, rechazan la verdad.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdxx{El ser humano es impaciente por naturaleza. Ya les mostraré Mi castigo, así que no pidan que se adelante.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdxxi{Dicen: ``¿Cuándo se cumplirá tu advertencia? Si es verdad lo que dices".\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdxxii{Si supieran los que se niegan a creer, que llegará un momento en que no podrán impedir que el fuego queme sus rostros y sus espaldas, y no serán socorridos.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdxxiii{Por el contrario, [el fuego] les llegará por sorpresa dejándolos desconcertados sin que puedan evitarlo, y no serán indultados.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdxxiv{También se burlaron de otros Mensajeros anteriores a ti [¡oh, Mujámmad!], y el castigo azotó a los que se burlaban por haberlos ridiculizado.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdxxv{Diles [¡oh, Mujámmad!]: ``¿Quién sino el Misericordioso los protege durante la noche y el día?" Pero ellos, a pesar de esto, se niegan a recordar a su Señor.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdxxvi{¿Acaso creen que existen otras divinidades que los puedan socorrer en vez de Mí? [Lo que consideran divinidades] no pueden defenderse ni protegerse a sí mismos de Mí.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdxxvii{A ellos y a sus padres los dejé disfrutar muchas bondades y les otorgué una larga vida. ¿Acaso no ven que van perdiendo el control del territorio? ¿Pensaron que iban a ser los vencedores?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdxxviii{Diles [¡oh, Mujámmad!]: ``Solo los exhorto con la revelación". Pero los sordos [de corazón] no oyen cuando se los exhorta.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdxxix{Mas cuando los alcance un soplo del castigo de tu Señor, dirán: ``¡Ay de nosotros! Fuimos injustos".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdxxx{Y dispondré la balanza de la justicia el Día de la Resurrección, y nadie será oprimido en lo más mínimo. Todas las obras, aunque sean tan ínfimas como un grano de mostaza, serán tenidas en cuenta. Nadie lleva las cuentas mejor que Yo.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdxxxi{Concedí a Moisés y a Aarón el Criterio [la Tora], para iluminar y exhortar a los piadosos,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdxxxii{a los que tienen temor a su Señor en privado, y sienten temor de la Hora [del Juicio].\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdxxxiii{Este [Corán] es un Mensaje bendito que he revelado. ¿Acaso van a rechazarlo?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdxxxiv{Antes [de Moisés] le concedí la guía a Abraham, a quien bien conocía.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdxxxv{Cuando dijo a su padre y a su pueblo: ``¿Qué son estas estatuas a las que dedican su adoración?"\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdxxxvi{Respondieron: ``Vimos que nuestros padres las adoraban".\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdxxxvii{Dijo: ``Ustedes y sus padres están en un error evidente".\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdxxxviii{Dijeron: ``¿Nos hablas en serio o estás bromeando?"\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdxxxix{Dijo: ``Su Señor es el Señor de los cielos y de la Tierra, el Creador de ambos, y yo doy testimonio de ello.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdxl{Juro por Dios que voy a tramar algo contra sus ídolos cuando se hayan retirado".\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdxli{Y los hizo pedazos excepto al más grande, para que su atención se volviera sobre él.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdxlii{Exclamaron: ``¿Quién fue capaz de hacer esto con nuestros dioses? Sin duda se trata de un malhechor".\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdxliii{Alguien dijo: ``Oímos a un joven, llamado Abraham, hablar [mal] de ellos".\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdxliv{Dijeron: ``Tráiganlo a la vista de la gente, para que puedan atestiguar [contra él]".\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdxlv{Le dijeron: ``¡Oh, Abraham! ¿Fuiste tú quien destruyó nuestros dioses?"\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdxlvi{Respondió: ``¡Fue ese, el mayor de todos! Pregúntenle [a sus dioses], si es que ellos son capaces [al menos] de hablar".\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdxlvii{Comenzaron a criticarse unos a otros diciendo: ``Ustedes son los malhechores".\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdxlviii{Pero luego volvieron a su estado anterior [y le dijeron]: ``Tú bien sabes que no pueden hablar".\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmdxlix{Dijo [Abraham]: ``¿Acaso adoran en vez de Dios lo que no puede beneficiarlos ni perjudicarlos [en lo más mínimo]?\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmdl{¡Uf, qué perdidos están ustedes y lo que adoran en vez de Dios! ¿Es que no van a reflexionar?"\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmdli{Exclamaron: ``¡Quémenlo [en la hoguera] para vengar a sus ídolos! Si es que van a hacer algo".\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmdlii{Pero dijo [Dios]: ``¡Oh, fuego! Sé fresco y no dañes a Abraham".\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmdliii{Pretendieron deshacerse de él, pero hice que fueran ellos los perdedores.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmdliv{Lo salvé a él y también a Lot, para que fueran a la tierra que bendije para toda la humanidad.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmdlv{Y le concedí [dos hijos, Ismael e] Isaac, y luego [al hijo de Isaac,] Jacob, y a ambos los hice hombres rectos,\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmdlvi{y líderes ejemplares para que guiasen [a la gente] siguiendo Mi voluntad. Y les inspiré realizar buenas obras, practicar la oración prescrita y pagar el zakat. Fueron devotos en la adoración.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmdlvii{A Lot le concedí conocimiento y sabiduría, y lo salvé de la ciudad donde se cometían obscenidades. Era un pueblo malvado lleno de corruptos.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmdlviii{Lo ingresé en Mi misericordia, porque era uno de los justos.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmdlix{Cuando antes [de Lot] Noé Me invocó, le respondí [su súplica], salvándolo junto a su familia de la gran calamidad.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmdlx{Lo protegí del pueblo que rechazó Mis signos, era un pueblo perverso, y por eso hice que todos se ahogaran.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmdlxi{[Recuerda] cuando [los Profetas] David y Salomón emitieron su fallo sobre un campo sembrado en el que las ovejas de su vecino [habían ingresado por la noche arruinándolo], y fui testigo de su sentencia,\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmdlxii{Le hice comprender a Salomón [el veredicto más justo], y a ambos les concedí conocimiento y sabiduría. A David le sometí las montañas y los pájaros para que cantaran junto a él alabanzas a Dios. Así lo hice.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmdlxiii{Le enseñé cómo fabricar cotas de malla, para que se protegieran en la batalla. ¿Acaso son agradecidos?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmdlxiv{A Salomón le sometí los vientos fuertes, que soplaban por orden suya hacia la tierra que bendije. Tengo conocimiento de todas las cosas.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmdlxv{También le sometí a los demonios, algunos buceaban para él [en busca de perlas y gemas] y también realizaban otras tareas. Yo era su Protector.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmdlxvi{[El Profeta] Job invocó a su Señor: ``[¡Oh, Dios! Tú bien sabes que] he sido probado con enfermedades, pero Tú eres el más Misericordioso".\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmdlxvii{Respondí su invocación y lo curé de sus enfermedades, y le di nueva descendencia, multiplicándola como misericordia de Mi parte y como recuerdo para los adoradores devotos.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmdlxviii{[Los Profetas] Ismael, Enoc, Dhul-Kifl y Elías, todos ellos fueron muy pacientes.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmdlxix{Los introduje en Mi misericordia porque obraban con justicia.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmdlxx{[El Profeta] Jonás, cuando se marchó enojado [con la gente de su pueblo que se negaron a creer en él], pensó que no lo iba a castigar [por no haber tenido paciencia, pero lo hice tragar por la ballena], e invocó desde la oscuridad [de su estómago]: ``No hay otra divinidad más que Tú. ¡Glorificado seas! En verdad he sido de los injustos".\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmdlxxi{Respondí su súplica y lo libré de su angustia. Así salvo a los creyentes.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmdlxxii{Cuando [el Profeta] Zacarías rogó a su Señor: ``¡Oh, Señor mío! No me dejes solo [sin hijos]. Tú eres Quien concede descendencia".\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmdlxxiii{Respondí su súplica y le agracié con [su hijo] Juan, haciendo que su mujer fuera otra vez fértil. Los agracié porque siempre se apresuraban a realizar obras buenas, Me invocaban con temor y esperanza, y eran humildes ante Mí.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmdlxxiv{[Recuerda] a aquella que conservó su virginidad, cuando infundí Mi espíritu en ella. Así hice de ella y su hijo un signo [de Mi poder divino] para toda la humanidad.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmdlxxv{La religión de todos los Profetas es una religión única. Yo soy su Señor, ¡adórenme solo a Mí!\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmdlxxvi{Pero luego [las generaciones que vinieron después] se dividieron, aunque todos regresarán ante Mí.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmdlxxvii{Quien sea creyente y realice obras buenas sepa que no habrá ingratitud para su esfuerzo. Todo lo tengo registrado.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmdlxxviii{Es imposible que [los habitantes de] una ciudad que haya destruido fueran a arrepentirse [ni podrán volver a este mundo].\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmdlxxix{[Cuando se aproxime el Último Día] serán liberados Gog y Magog, y se precipitarán desde todas las laderas [devastando cuanto encuentren a su paso].\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmdlxxx{La promesa de la verdad se acerca. Cuando llegue, la mirada de los que se negaron a creer quedará fija [y exclamarán:] ``¡Ay de nosotros! Fuimos indiferentes a esta realidad y fuimos de los malhechores".\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmdlxxxi{Ustedes y cuanto adoran en vez de Dios serán combustible para el fuego del Infierno al que ingresarán.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmdlxxxii{Si estos [ídolos] fueran divinidades como ustedes pretenden, no ingresarían en él. Pero todos ustedes junto a lo que adoraban estarán allí por toda la eternidad.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmdlxxxiii{Allí emitirán alaridos [por el tormento], y por eso no podrán oír nada más.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmdlxxxiv{Pero aquellos para quienes estaba decretado que recibirían ``lo más hermoso", estarán alejados del Infierno,\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmdlxxxv{No oirán su crepitar y estarán disfrutando lo que deseen por toda la eternidad.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmdlxxxvi{No los afligirá el gran espanto [del castigo], y los ángeles acudirán a su encuentro [cuando salgan de las tumbas y les dirán]: ``Éste es el día que se les había prometido".\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmdlxxxvii{El cielo ese día será enrollado como un pergamino. Así como inicié la primera creación, la repetiré. Ésta es una promesa que he de cumplir.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmdlxxxviii{Ya mencioné anteriormente en las Escrituras Reveladas como lo había hecho en la Tabla Protegida, que la Tierra será heredada por Mis siervos justos.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmdlxxxix{En esto hay mensaje suficiente para un pueblo que realmente adora a Dios.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmdxc{No te he enviado [¡oh, Mujámmad!] sino como misericordia para todos los seres.\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmdxci{Diles: ``Me ha sido revelado que Dios es un Dios único. ¿Acaso no van a ser musulmanes?\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmdxcii{Pero si rechazan [el Mensaje] diles: ``Les advierto sobre un castigo que caerá sobre todos por igual, aunque no tengo conocimiento si lo que les advierto está cerca o lejos.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmdxciii{Él bien sabe tanto lo que dicen abiertamente como lo que dicen en secreto.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmdxciv{Pero ignoro si Él los está poniendo a prueba al tolerarlos y dejarlos disfrutar de la vida [mundanal] por un tiempo".\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmdxcv{Di: ``¡Oh, Señor nuestro! Juzga con la verdad. Tú eres el Misericordioso, Aquel a quien recurrir contra lo que atribuyen [falsamente a Dios]".\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmdxcvi{\basmalahes ¡Oh, gente! Tengan temor de su Señor. El terremoto que ocurrirá cuando llegue la Hora [del Juicio] será algo terrible.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdxcvii{El día que llegue, las mujeres que estén amamantando a sus hijos se desentenderán de ellos, las embarazadas abortarán [por el terror], y verás a las personas caminar como ebrios, pero no estarán ebrios sino que el castigo de Dios será intenso.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdxcviii{Hay gente que discute acerca de Dios sin conocimiento, y siguen a todo demonio rebelde.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdxcix{Fue decretado que a quien lo siguiese, él lo extraviará y lo conducirá al castigo del Infierno.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdc{¡Oh, gente! Si tienen dudas de que tengo el poder para resucitarlos, sepan que he creado [a Adán] de barro, luego [a toda su descendencia] de un óvulo fecundado que luego se transforma en un embrión, luego en una masa de tejidos, algunos ya formados y otros por formarse; ello es una evidencia [de Mi poder y sabiduría]. Preservo en el útero materno a aquellos que decreté que completen su gestación. Los hago nacer, y luego de la infancia alcanzan la madurez; algunos mueren [antes de esta etapa] y otros alcanzan la vejez, y ya no recuerdan nada del conocimiento que habían adquirido. También pueden observar a la tierra árida, y cómo cuando hago que llueva sobre ella, se remueve, se hincha, y brota toda clase de plantas bellas.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdci{Porque Dios es la Verdad. Él resucitará a los muertos, y es sobre toda cosa Poderoso.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdcii{La Hora [del Día del Juicio] se aproxima, no hay duda acerca de ello, y [ese día] Dios resucitará a quienes están en las tumbas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdciii{Hay gente que discute acerca de Dios sin conocimiento, sin guía ni Libro que los ilumine.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdciv{Con arrogancia pretenden apartar a la gente del camino de Dios. Serán humillados en esta vida, y el Día de la Resurrección los haré sufrir el castigo de quemarse.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdcv{[Se les dirá] ``Esto es lo que merecen por lo que hicieron con sus propias manos". Pero sepan que Dios no es injusto con Sus siervos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdcvi{Hay gente cuya fe está siempre al borde [de la incredulidad]. Si les ocurre un bien se sienten tranquilos; pero si les ocurre una desgracia reniegan de la fe, perdiéndose la recompensa de este mundo y el otro. Esa es la auténtica perdición.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdcvii{Ellos invocan en lugar de Dios aquello que no puede perjudicarlos ni beneficiarlos. Están en un error profundo.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdcviii{Adoran aquello cuyo perjuicio es más patente que su supuesto beneficio. ¡Qué pésimo protector y compañero!\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdcix{Dios introducirá a los que crean y obren rectamente en jardines por donde corren ríos. Dios hace lo que quiere.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdcx{Aquel que pensaba que Dios no lo auxiliaría [al Profeta] en este mundo y en el otro [y se ve ahora decepcionado], que intente llegar al cielo por algún medio y la corte [la ayuda de Dios al Profeta], y vea si ese ardid puede acabar con lo que lo enfurece.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdcxi{Así [como en las revelaciones anteriores] he revelado versículos claros, porque Dios guía a quien quiere.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdcxii{El Día de la Resurrección Dios juzgará sobre las diferencias entre los seguidores de la fe [del Islam], del judaísmo, del sabeísmo, del cristianismo, los adoradores del fuego y los idólatras. Dios es testigo de todas las cosas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdcxiii{¿Acaso no ves que se prosternan ante Dios quienes están en los cielos y en la Tierra, y el Sol, la Luna, las estrellas, las montañas, los árboles, los animales, y muchos de los seres humanos? Pero muchos otros [seres humanos] merecen el castigo. A quien Dios humille no habrá quien pueda dignificarlo; Dios hace lo que quiere.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdcxiv{Éstos [los creyentes y los incrédulos] son dos grupos que disputan acerca de su Señor, pero sepan que quienes se niegan a creer serán cubiertos con ropas de fuego, y se verterá sobre sus cabezas agua hirviente\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdcxv{que les abrasará el vientre y la piel,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdcxvi{y serán atormentados allí con mazas de hierro.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdcxvii{Cada vez que, angustiados, quieran salir de allí, [los ángeles] los harán regresar y les dirán: ``¡Sufran el tormento del Infierno!"\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdcxviii{Dios hará entrar en jardines por donde corren ríos a los creyentes que hayan obrado rectamente. Serán engalanados con pulseras de oro y perlas, y serán vestidos con seda.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdcxix{[En la vida mundanal] habían sido guiados hacia la bella palabra y al camino de la alabanza.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdcxx{A los que se nieguen a creer y aparten a la gente del sendero de Dios, e impidan acudir a la Mezquita Sagrada [de La Meca] que establecí para todas las gentes por igual, tanto para el residente como para el viajero, y a quienes quieran profanarla con injusticias, los haré sufrir un castigo doloroso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdcxxi{[Recuerda] cuando establecí a Abraham junto a la Casa Sagrada para que solo Me adorara a Mí y no dedicara actos de adoración a otros, y purificara Mi Casa [de la idolatría] para quienes realicen el rito de circunvalarla, y para quienes oren de pie, inclinados y prosternados,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdcxxii{[le dije:] ``Convoca a la gente a realizar la peregrinación; vendrán a ti a pie o montados, desde todo lugar apartado".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdcxxiii{Para que sean testigos de todas las gracias [de la peregrinación y la casa de Dios], y recuerden el nombre de Dios en los días consabidos al sacrificar las reses del ganado que Él les ha proveído. Coman de ellas y den de comer al desvalido y al pobre.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdcxxiv{Luego de cumplir los ritos, que cumplan sus votos y que circunvalen la Antigua Casa [de La Meca].\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdcxxv{Así deben hacer. Quien respete los preceptos sagrados de Dios, será mejor para él ante su Señor [porque lo recompensará en esta vida y en la otra]. Sepan que les son lícitas las reses, excepto lo que se les ha mencionado [como prohibido]. Manténganse alejados de la impureza de los ídolos y apartados de las afirmaciones falsas.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdcxxvi{Sean monoteístas puros creyentes en Dios, y no sean [jamás] idólatras. Quien asocia divinidades a Dios [en la adoración] es como quien cae del cielo y [luego de estrellarse contra la tierra] las aves de rapiña lo devoran o un viento lo arrastra a un lugar lejano.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdcxxvii{Sepan que respetar los ritos de Dios dimana de la piedad que hay en los corazones.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdcxxviii{Pueden beneficiarse de los animales hasta un plazo determinado; pero luego, su lugar [de sacrificio] es junto a la Antigua Casa.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdcxxix{He prescrito para cada comunidad sus propios ritos, para que recuerden el nombre de Dios al sacrificar las reses que les proveí. Su Dios es uno solo. Entréguenle a Él su voluntad. Albricia a los humildes sumisos [que obtendrán la bienaventuranza],\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdcxxx{aquellos cuyos corazones se emocionan cuando se menciona a Dios, son pacientes ante las desgracias, cumplen con la oración y hacen caridades con lo que les he agraciado.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdcxxxi{Establecí que [el sacrificio] de los ganados sea parte de los ritos de Dios, en ello hay un bien para ustedes. Mencionen el nombre de Dios sobre ellos cuando estén dispuestos en fila [para ser sacrificados]. Luego, cuando se desplomen sobre sus costados [sin vida], coman de ellos y den de comer al mendigo y al necesitado. Así los puse a su servicio para que sean agradecidos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdcxxxii{Dios no necesita de la carne ni de la sangre [de sus ofrendas], Él desea que ustedes alcancen la piedad [mediante la práctica de este rito]. Con este fin se los facilitó. Alaben a Dios por haberlos guiado. Y albricia a los que hacen el bien [que alcanzarán el Paraíso].\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdcxxxiii{Dios defiende a los que han creído. Sepan que Dios no ama al traidor ni al desagradecido.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdcxxxiv{Se les ha permitido [combatir a los creyentes] que son atacados porque son víctimas de una injusticia. Dios tiene el poder para socorrerlos.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdcxxxv{Ellos fueron expulsados injustamente de sus hogares solo por haber dicho: ``Nuestro Señor es Dios". Si Dios no se hubiera servido de algunas personas [creyentes] para combatir a otros [incrédulos], se habrían destruido monasterios, iglesias, sinagogas y mezquitas, en donde se recuerda frecuentemente el nombre de Dios. Dios socorre a quien se esfuerza denodadamente por Su religión. Dios es Fuerte, Poderoso.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdcxxxvi{Aquellos que, si les doy autoridad en la Tierra, cumplen con la oración, pagan el zakat, ordenan el bien y prohíben el mal. A Dios pertenece el resultado de todas las cosas.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdcxxxvii{Si te desmienten [¡oh, Mujámmad!], sabe que ya antes habían desmentido los pueblos de Noé, ‘Ad, Zamud,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdcxxxviii{de Abraham, Lot,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdcxxxix{los habitantes de Madián, y también fue desmentido Moisés. Les concedí un plazo a los que se negaban a creer, pero luego los sorprendí. ¡Qué terrible fue Mi castigo!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdcxl{¡Cuántas ciudades aniquilé porque eran injustas y opresoras! Quedaron reducidas a ruinas, sus pozos secos y sus castillos derrumbados.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdcxli{¿Acaso [los que se niegan a creer] no viajan por el mundo, y no tienen intelecto para reflexionar, ni oídos? No son sus ojos los que están ciegos, sino los corazones que están dentro de sus pechos [los que están ciegos].\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdcxlii{Te desafían a que adelantes el castigo, pero sabe que Dios no faltará a Su promesa. Un día para tu Señor es como mil años de los que ustedes computan.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdcxliii{A cuántas ciudades que eran injustas les aplacé [su tiempo], pero finalmente las sorprendí con el castigo. Ante Mí comparecerán.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdcxliv{Di: ``¡Oh, gente!, yo soy un claro amonestador enviado a ustedes".\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdcxlv{Los que creyeron y obraron rectamente obtendrán el perdón y un sustento generoso.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdcxlvi{Pero aquellos que se esforzaron por desmentir Mis signos, serán los moradores del Infierno.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdcxlvii{No envié antes de ti [¡oh, Mujámmad!], Mensajero ni Profeta alguno al que no le ocurriera que al recitar [lo que le había sido inspirado] el demonio intentara confundir algo en su recitación. Pero Dios anula lo que el demonio inspira. Dios aclara Su revelación, porque Dios es Conocedor, Sabio.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdcxlviii{Los susurros del demonio seducen a aquellos cuyos corazones están enfermos [de dudas] y a los duros de corazón. Los injustos están en un error profundo.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdcxlix{Aquellos que fueron agraciados con el conocimiento y la sabiduría, saben que el Corán es la Verdad que proviene de su Señor; creen en él y así se sosiegan sus corazones. Dios guía por el camino recto a los que creen.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdcl{Los que se niegan a creer no cesarán de dudar sobre él hasta que los sorprenda la Hora [del Juicio], o les llegue el castigo de un día nefasto.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdcli{Ese día la soberanía solo Le pertenecerá a Dios, que juzgará entre ellos. Sepan que los que hayan creído y hecho obras de bien estarán en los Jardines de las Delicias,\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdclii{mientras que los que se negaron a creer y desmintieron Mis preceptos tendrán un castigo humillante.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdcliii{Aquellos que emigraron por la causa de Dios y fueron asesinados o murieron en el camino, Dios los proveerá con un bello sustento. Dios es el mejor de los sustentadores.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdcliv{Los introducirá en un Paraíso en el que estarán complacidos. Dios es Conocedor, Tolerante.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdclv{Aquel que se defienda de forma proporcional a la injusticia de que es víctima, y se le siga agraviando, Dios lo socorrerá. Dios es Remisorio, Absolvedor.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdclvi{Dios hace que la noche suceda al día y el día a la noche. Dios todo lo oye, todo lo ve.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdclvii{Dios es la Verdad, y aquello que [los idólatras] invocan en vez de Él es falso. Dios es el Sublime, el Grande.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdclviii{¿Acaso no ves que Dios envía agua del cielo y con ella la tierra se reverdece? Dios es Sutil, Conocedor.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdclix{A Él pertenece cuanto hay en los cielos y en la Tierra. Dios es el Opulento, el Loable.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdclx{¿Acaso no ves que Dios ha puesto al servicio de ustedes cuanto hay en la Tierra, que los barcos surcan el mar por Su designio, y que Él contiene al cielo para que no caiga sobre la Tierra a menos que sea por Su Voluntad? Dios es Compasivo y Misericordioso con la gente.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmdclxi{Él es Quien les dio la vida, luego les da la muerte y luego los resucitará [para juzgarlos]. Pero el ser humano es desagradecido.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmdclxii{A cada comunidad le he revelado sus propios ritos para que los observen. [¡Oh, Mujámmad!] No dejes que [te discutan] sobre los preceptos. Exhorta a creer en tu Señor, porque tú estás en la guía del camino recto.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmdclxiii{Pero si te desmienten, diles: ``Dios bien sabe lo que hacen".\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmdclxiv{Dios juzgará entre ustedes el Día del Juicio sobre lo que solían discrepar.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmdclxv{¿Acaso no sabes que Dios conoce cuanto hay en el cielo y en la Tierra? Todo está registrado en un libro, eso es fácil para Dios.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmdclxvi{[Los idólatras] adoran en lugart de Dios lo que no les fue revelado y carecen de conocimiento. Los injustos no tendrán quién los auxilie.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmdclxvii{Cuando se les recitan Mis claros versículos, ves el disgusto en los rostros de los que se niegan a creer; poco les falta para lanzarse [con la intención de matarlos] sobre quienes los recitan. Diles [¡oh, Mujámmad!]: ``¿Quieren saber de algo peor [que su repudio por el Corán]? Es el castigo del Infierno con el que Dios ha advertido a los que se niegan a creer. ¡Qué pésimo destino!"\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmdclxviii{¡Oh, gente! Se les expone un ejemplo, presten atención: Aquellos [ídolos] que invocan en vez de Dios no podrían crear ni una mosca, aunque todos se reunieran para ello. Y si una mosca les quitara algo [a los ídolos], ellos no podrían impedirlo. ¡Qué débil es el que invoca y qué débil es el invocado!\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmdclxix{No valoran ni enaltecen a Dios como Se merece. Dios es Fuerte, Poderoso.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmdclxx{Dios selecciona a algunos ángeles como Mensajeros y selecciona algunas personas como Mensajeros. Dios todo lo oye, todo lo ve,\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmdclxxi{conoce el pasado y el futuro, y ante Dios regresan todos los asuntos.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmdclxxii{¡Oh, creyentes! Inclínense y prostérnense [durante la oración], adoren a su Señor y hagan el bien, que así alcanzarán el triunfo.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmdclxxiii{Esfuércense por la causa de Dios como es debido. Él los eligió [para que sigan Su religión] y no les prescribió nada que no puedan cumplir. Ésta es la religión monoteísta de su padre Abraham, él los llamó musulmanes anteriormente y también fueron llamados así en esta revelación, para que el Mensajero fuera testigo [de sus obras] y ustedes sean testigos ante la humanidad [de la llegada de los Profetas anteriores]. Cumplan con la oración, paguen el zakat y aférrense a Dios, pues Él es su Protector. ¡Qué excelente Protector, y qué excelente Defensor!\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmdclxxiv{\basmalahes Bienaventurados los creyentes\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdclxxv{que en sus oraciones son humildes [ante Dios],\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdclxxvi{se apartan de las frivolidades,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdclxxvii{pagan el zakat,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdclxxviii{preservan sus genitales [del adulterio y la fornicación],\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdclxxix{y solo cohabitan con sus esposas o con lo que posee su diestra, porque eso no es censurable.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdclxxx{Pero quien busque algo más allá de eso, está transgrediendo [la ley].\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdclxxxi{[Son de los bienaventurados quienes] sean fieles a la confianza depositada en ellos, cumplen con sus compromisos y acuerdos,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdclxxxii{y cumplen con sus oraciones.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdclxxxiii{[Quienes tengan estas virtudes] serán los herederos\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdclxxxiv{que heredarán el Firdaus, en el que morarán por toda la eternidad.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdclxxxv{Creé al [primer] ser humano de barro.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdclxxxvi{Luego [hice que se reprodujera por medio de la fecundación, y] preservé el óvulo fecundado dentro de una cavidad segura.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdclxxxvii{Transformé el óvulo fecundado en un embrión, luego en una masa de tejidos, luego de esa masa de tejidos creé sus huesos a los que vestí de carne, finalmente soplé en el feto su espíritu. ¡Bendito sea Dios, el mejor de los creadores!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdclxxxviii{[Sepan que] después de haber sido creados, han de morir,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdclxxxix{pero el Día de la Resurrección serán devueltos a la vida.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdcxc{Creé siete cielos por encima de ustedes, y no he descuidado la creación.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdcxci{Hice descender del cielo el agua en una medida limitada para que permanezca en la tierra, pero si quisiera la podría hacer desaparecer.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdcxcii{Con ella hago brotar jardines de palmeras y viñedos de los que obtienen abundantes frutos con los que se alimentan.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdcxciii{Y [también] un árbol que crece en el monte Sinaí, que produce aceite y aderezo, una delicia para los comensales.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdcxciv{En los ganados hay una lección: Doy a ustedes de beber de lo que hay en sus ubres, obtienen de ellos muchos beneficios y también se alimentan;\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdcxcv{usan a los animales y a los barcos como transporte.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdcxcvi{Envié a Noé a su pueblo y les dijo: ``¡Oh, pueblo mío! Adoren solamente a Dios, pues no existe otra divinidad salvo Él. ¿Acaso no van a tener temor de Él?"\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdcxcvii{Pero los magnates de su pueblo que no creyeron, dijeron [a los más débiles]: ``Éste es un mortal como ustedes, que solo pretende poder. Si Dios hubiera querido [que siguiéramos Su Mensaje] habría enviado ángeles [en lugar de seres humanos]. Nunca oímos algo similar de nuestros antepasados.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdcxcviii{[Noé] no es más que un demente, sopórtenlo por un tiempo [hasta que muera]".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdcxcix{Dijo Noé: ``¡Oh, Señor mío! Socórreme, porque ellos me desmienten".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdcc{Entonces le dije: ``Construye el arca bajo Mi observancia, acorde a lo que te inspire. Cuando llegue Mi designio y el agua comience a brotar de la tierra [y se inicie la inundación], haz subir una pareja de cada especie y embarca a tu familia, salvo a quienes el decreto [de la inundación] los haya condenado. No Me pidas por los injustos, pues ellos perecerán ahogados.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdcci{Cuando tú y quienes estén contigo se encuentren en el arca, di: ¡Alabado sea Dios, Quien nos salvó de un pueblo de injustos!"\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdccii{Y di: ``¡Señor mío! Hazme llegar a un destino bendito, pues Tú eres Quien mejor hace llegar a destino".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdcciii{En ello hay signos [de Dios], pero [sepan que] siempre pondré a prueba [a los seres humanos].\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdcciv{Luego [de la destrucción del pueblo de Noé], hice surgir nuevas generaciones,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdccv{y les envié un Mensajero de entre ellos [que les dijo]: ``Adoren solamente a Dios, ya que no existe otra divinidad salvo Él. ¿Es que no van a tener temor [de Dios]?"\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdccvi{Pero [nuevamente] los magnates de su pueblo que no creyeron y desmintieron el Día del Juicio, a pesar de que les había concedido una vida llena de riquezas, dijeron [a los más débiles]: ``Éste es un mortal igual que ustedes, come lo que comen y bebe lo que beben.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdccvii{Si obedecen a un ser humano como ustedes, serán unos perdedores.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdccviii{¿Acaso les promete que luego de que mueran y sean polvo y huesos, van a ser resucitados?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdccix{¡Qué lejos está de la realidad lo que él les promete!\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdccx{No hay otra vida más que la mundanal; vivimos, morimos y jamás seremos resucitados.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdccxi{Él es solo un ser humano que ha inventado una gran mentira acerca de Dios, y no le vamos a creer".\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdccxii{Dijo [el Profeta]: ``¡Señor mío! Socórreme, pues me han desmentido".\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdccxiii{Dijo [Dios]: ``Dentro de poco se arrepentirán".\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdccxiv{El estruendo los sorprendió con la verdad [que negaban], y los convertí en despojos. ¡Que el pueblo injusto sea destruido!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdccxv{Luego hice surgir nuevas generaciones.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdccxvi{Ninguna comunidad puede adelantar ni retrasar su plazo.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdccxvii{Envié a Mis Mensajeros unos tras otros. Cada comunidad a la que le llegaba su Mensajero, lo desmentía. Así que las destruí una tras otra e hice que se convirtieran en ejemplos. ¡Que sean destruidos los pueblos que se niegan a creer!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdccxviii{Luego envié a Moisés y a su hermano Aarón, con Mis signos y un poder visible,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdccxix{al Faraón y su nobleza. Pero estos fueron soberbios y se comportaron con arrogancia.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdccxx{Y dijeron: ``¿Acaso vamos a creer en dos mortales iguales a nosotros, mientras su pueblo nos sirve como esclavos?"\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdccxxi{Los desmintieron, y como consecuencia fueron destruidos.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdccxxii{Le entregué a Moisés el Libro para que fueran de los bien guiados.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdccxxiii{Hice de Jesús y su madre María, un signo [de Mi poder]. A ambos les di refugio en una colina, un lugar de descanso seguro con aguas cristalinas.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdccxxiv{¡Oh, Mensajeros! Coman de las cosas buenas y hagan buenas obras, que Yo bien sé lo que hacen.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdccxxv{Esta es la comunidad a la que pertenecen [la de los Profetas], que es una única comunidad, y Yo soy su Señor; tengan temor de Mí.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdccxxvi{Pero [algunas personas] fragmentaron la comunidad creando sectas, y cada facción se complace con lo que tiene [como creencia].\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdccxxvii{Déjalos [¡oh, Mujámmad!, a los que se niegan a creer,] en su confusión por un tiempo [hasta que les llegue su hora].\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdccxxviii{¿Acaso piensan que los bienes materiales y los hijos que les concedí\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdccxxix{son un indicio de que recibirán Mis gracias [en esta vida y la futura]? Todo lo contrario, pero no se dan cuenta.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdccxxx{No cabe duda de que aquellos que tienen temor de su Señor,\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdccxxxi{aquellos que creen en los signos de su Señor,\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdccxxxii{aquellos que no dedican actos de adoración excepto a su Señor,\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdccxxxiii{aquellos que dan en caridad parte de lo que se les ha concedido, y aun así sienten temor en sus corazones porque saben que comparecerán ante su Señor,\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdccxxxiv{ellos se apresuran a realizar obras de bien, y son los primeros en hacerlas.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdccxxxv{No exijo a nadie por encima de sus posibilidades. [Sepan que] tengo un Libro que dice la verdad, y nadie será tratado injustamente.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdccxxxvi{En cambio, los corazones [de los incrédulos] están cegados al Mensaje y cometen malas obras.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdccxxxvii{Cuando castigue a los que tuvieron una vida llena de lujos, pedirán auxilio a gritos.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdccxxxviii{[Y se les dirá entonces:] De nada sirve que pidan auxilio hoy, pues nadie podrá salvarlos de Mi castigo.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmdccxxxix{Mis versículos les eran recitados, pero los rechazaban.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmdccxl{Por soberbia, pasaban la noche desprestigiando [el Corán].\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmdccxli{¿Por qué no reflexionan sobre el Corán, o es que les llegó algo diferente que a sus antepasados?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmdccxlii{Conocían a su Mensajero [Mujámmad], pero igualmente lo rechazaron.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmdccxliii{Afirmaron que era un demente, pero él se presentó con la Verdad, aunque a la mayoría de ellos les disguste la verdad.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmdccxliv{Si la verdad siguiera a las pasiones [de los que se negaron a creer], los cielos, la Tierra y todo lo que hay en ellos se habría corrompido. Pero los ennoblecí con el Corán, y a pesar de eso lo rechazaron.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmdccxlv{[¡Oh, Mujámmad] ¿Acaso les pides alguna remuneración a cambio [de transmitirles el Mensaje]? La recompensa de tu Señor es superior, y Él es Quien mejor agracia.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmdccxlvi{Tú los invitas al camino recto.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmdccxlvii{Pero quienes no creen en la vida del más allá, se desvían de ese camino.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmdccxlviii{Aunque les tuviera misericordia y los librara de los males que sufren, persistirían desorientados en su extravío.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmdccxlix{Los afligí con un castigo, pero aun así no se sometieron a su Señor ni imploraron auxilio.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmdccl{Hasta que abra sobre ellos una de las puertas del castigo infernal, entonces perderán toda esperanza.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmdccli{Él es Quien los agració con el oído, la vista y el intelecto, pero poco se lo agradecen.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmdcclii{Él es Quien los diseminó por la Tierra, y ante Él serán reunidos.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmdccliii{Él es Quien da la vida y da la muerte, y Él decretó la alternancia de la noche y el día. ¿Es que no razonan?\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmdccliv{Sin embargo, [los que se niegan a creer] dicen lo mismo que sus antecesores:\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmdcclv{``Cuando muramos y nos convirtamos en polvo y huesos, ¿seremos resucitados?\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmdcclvi{Eso ya se nos había prometido a nosotros y a nuestros antepasados con anterioridad. Pero no es más que una fábula de los antiguos".\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmdcclvii{Pregúntales [¡oh, Mujámmad!]: ``Si saben, ¿a quién pertenece la Tierra y todo lo que existe sobre ella?"\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmdcclviii{Sin duda responderán: ``A Dios". Diles: ``¿Acaso no van a recapacitar [en que deberían adorarlo solo a Él]?"\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmdcclix{Pregúntales: ``¿Quién es el creador de los siete cielos, y el Señor del Trono grandioso?"\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmdcclx{Sin duda responderán: ``Dios". Diles: ``¿Acaso no van a temer?"\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmdcclxi{Pregúntales: ``Si lo saben, ¿Quién tiene en Sus manos el dominio de todas las cosas, y puede amparar a quien Él quiere y nadie puede protegerse de Él [y Su castigo]?"\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmdcclxii{Sin duda que responderán: ``Dios". Diles: ``¿Acaso están hechizados [y no pueden ver la verdad]?"\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmdcclxiii{Aunque les envié la verdad, ellos la desmienten.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmdcclxiv{Dios no ha tenido un hijo, ni existe otra divinidad salvo Él. Si así fuera, cada divinidad acapararía su propia creación, y entonces pretenderían dominarse unas a otras. ¡Glorificado sea Dios! Dios está por encima de lo que Le atribuyen.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmdcclxv{Él es el Conocedor de lo oculto y lo manifiesto, Él está por encima de cuanto Le asocian.\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmdcclxvi{Di [¡oh, Mujámmad! esta súplica]: ``¡Oh, Señor mío! Si me haces presenciar el castigo que les espera [a los que se niegan a creer],\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmdcclxvii{Señor, no me pongas entre los injustos".\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmdcclxviii{[¡Oh, Mujámmad!] Tengo poder para hacerte ver el castigo que les he destinado.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmdcclxix{Si eres maltratado, responde con una buena actitud [sabiendo disculpar]. Yo bien sé lo que [Me] atribuyen.\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmdcclxx{Di: ``¡Oh, Señor mío! Me refugio en Ti de los susurros de los demonios,\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmdcclxxi{y me refugio en Ti, oh, Señor, de su presencia maligna".\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmdcclxxii{Cuando la muerte los sorprenda [a los que se negaron a creer y vivieron en el pecado], dirán: ``¡Oh, Señor mío! Hazme regresar a la vida otra vez,\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmdcclxxiii{para [creer en Ti y] realizar las obras buenas que no hice". Pero no se les dará otra oportunidad, pues son solo palabras [que no cumplirán]. Detrás de ellos habrá una barrera hasta que sean resucitados.\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmdcclxxiv{Cuando se sople la trompeta [por segunda vez para dar comienzo al Día del Juicio, y todos sean resucitados], de nada les servirá el linaje, ni los parientes se preguntarán unos por otros.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmdcclxxv{[Ese día] aquellos cuyas buenas obras pesen más en la balanza serán los bienaventurados.\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmdcclxxvi{En cambio, aquellos cuyas malas obras sean las que más pesen, estarán perdidos y morarán en el Infierno por toda la eternidad.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmdcclxxvii{El fuego abrasará sus rostros y quedarán desfigurados.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmdcclxxviii{[Se les dirá:] ``¿Acaso no se les recitaron Mis versículos y los desmentían?"\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmdcclxxix{Dirán: ``¡Oh, Señor nuestro! Estábamos dominados por nuestras pasiones, éramos gente extraviada.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmdcclxxx{¡Oh, Señor nuestro! Sácanos de él [y retórnanos a la vida], y si reincidimos [en la incredulidad] entonces sí seremos injustos".\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxi{Dios les dirá: ``Permanezcan en él [humillados], y no vuelvan a hablarme".\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxii{Algunos de Mis siervos decían: ``¡Oh, Señor nuestro! Somos creyentes, perdónanos y ten misericordia de nosotros. Tú eres el mejor de los misericordiosos".\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxiii{Pero ustedes [oh, incrédulos y pecadores] los tomaron a burla hasta olvidarse de Mi Mensaje, y se reían de ellos.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxiv{Hoy los recompensaré [a los creyentes] por su paciencia [a la hostilidad de ustedes], y ellos serán los bienaventurados.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxv{Dios les preguntará: ``¿Cuántos años han permanecido en la Tierra?"\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxvi{Responderán: ``Permanecimos un día o menos aún. Mejor pregúntale a los [los ángeles] encargados de llevar la cuenta [pues no estamos seguros]".\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxvii{Dios les dirá: ``No permanecieron sino poco tiempo. ¡Si tan solo hubieran sabido!\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxviii{¿Acaso creían que los creé sin ningún sentido? ¿Creían que no iban a comparecer ante Mí?\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmdcclxxxix{¡Exaltado sea Dios! El único Soberano real, no hay otra divinidad salvo Él, Señor del noble Trono.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmdccxc{[Sepan que] quien invoque a otros [dioses] junto a Dios carece de fundamentos válidos, y tendrá que rendir cuenta de ello ante su Señor. Los que se negaron a creer no triunfarán [el Día del Juicio].\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmdccxci{Di [¡oh, Mujámmad!, enseñando a los creyentes]: ``¡Oh, Señor mío! Perdona y ten misericordia. Tú eres el mejor de los misericordiosos".\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmdccxcii{\basmalahes Este es un capítulo [del Corán] que revelé y prescribí [sus preceptos]. En él he revelado versículos de clara evidencia para que reflexionen.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdccxciii{A la fornicadora y al fornicador aplíquenles, a cada uno de ellos, cien azotes. Si verdaderamente creen en Dios y en el Día del Juicio, no permitan que la compasión que puedan sentir por ellos les impida aplicar la pena establecida por Dios. Que un grupo de creyentes sea testigo cuando se les aplique la pena.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdccxciv{El hombre que haya fornicado solo habrá podido hacerlo con una fornicadora igual que él o con una idólatra [cuya ley no le prohíbe ese delito]. Y la mujer que haya fornicado solo habrá podido hacerlo con un fornicador igual que ella o con un idólatra [cuya ley no le prohíbe ese delito]. [Sepan que] la fornicación está prohibida para los creyentes.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdccxcv{A quienes difamen a mujeres decentes [acusándolas de fornicadoras o adúlteras] y no presenten cuatro testigos, aplíquenles ochenta azotes y no acepten nunca más su testimonio. Ellos son los perversos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdccxcvi{Pero a aquellos que [después de haberlas difamado] se arrepientan y enmienden [les será aceptado su testimonio]. Dios es Absolvedor, Misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdccxcvii{Quienes acusen a sus cónyuges [de haber cometido adulterio] sin tener testigos más que ellos mismos, deberán jurar cuatro veces por Dios [ante un juez] que dicen la verdad.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdccxcviii{Y por último pedir que la maldición de Dios caiga sobre sí mismos si mienten.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdccxcix{Ella quedará libre de castigo si jura cuatro veces por Dios [ante un juez] que él miente.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdccc{Por último, deberá pedir que la maldición de Dios caiga sobre ella misma si él dice la verdad.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdccci{Si no fuese por la gracia de Dios y Su misericordia con ustedes, y porque Dios acepta el arrepentimiento y es Sabio [les hubiera hecho descender el castigo que imprecaban].\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdcccii{Los que vinieron con la calumnia son un grupo de ustedes. No piensen [¡oh, creyentes!] que esto acarreará un mal para ustedes; por el contrario, es un bien. Cada uno de los que cometieron este pecado recibirá su merecido, y el mayor responsable entre ellos tendrá un castigo severo.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdccciii{Cuando los creyentes y las creyentes oyeron la calumnia, deberían haberla considerado como en contra de ellos mismos, y haber dicho: ``Esto es una mentira evidente".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdccciv{¿Por qué no presentaron cuatro testigos del hecho? [Sepan que] para Dios quienes no presentan testigos [cuando acusan a alguien] son los mentirosos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdcccv{Si no fuese por la gracia y la misericordia de Dios sobre ustedes en esta vida y en la otra, habrían sufrido un terrible castigo por lo que dijeron.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdcccvi{Propagaron la calumnia con su lengua, repitiendo con la boca aquello sobre lo cual no tenían conocimiento [que fuera verdad], y creyeron que lo que hacían era leve, pero ante Dios era gravísimo.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdcccvii{Cuando oyeron la acusación tenían que haber dicho: ``No debemos hablar de ello. ¡Glorificado seas Señor! Esto es una calumnia grandísima".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdcccviii{Dios les prohíbe que vuelvan a cometer falta semejante, si es que realmente son creyentes.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdcccix{Dios les hace claros sus Signos. Dios lo sabe todo, es Sabio.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdcccx{Aquellos que desean que se propague la obscenidad entre los creyentes tendrán un castigo doloroso en esta vida y en la otra. Dios sabe y ustedes no saben.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdcccxi{Si no fuera por la gracia y la misericordia de Dios sobre ustedes, y porque Él es Compasivo y Misericordioso [rápido descendería el castigo por sus pecados].\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdcccxii{¡Oh, creyentes! No sigan los pasos del demonio, porque quien siga los pasos del demonio debe saber que él induce a cometer obscenidades y actos reprobables. Si no fuera por la gracia y la misericordia de Dios, ninguno de ustedes podría purificarse jamás de sus pecados, pero Dios purifica a quien quiere [perdonándole sus pecados]. Dios todo lo oye, todo lo sabe.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdcccxiii{Que los que hacen obras de bien y los que tienen riqueza no juren dejar de ayudar [a los pobres debido a su participación en la calumnia a Aishah] a sus parientes, a los pobres y a quienes dejaron sus hogares por la causa de Dios, y [es mejor] que los perdonen y los disculpen. ¿Acaso no aman ser perdonados por Dios? Dios es Indulgente, Misericordioso.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdcccxiv{Quienes difamen a las mujeres honestas, inocentes y creyentes, serán maldecidos en esta vida y en la otra, y sufrirán un castigo enorme.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdcccxv{El día que sus propias lenguas, manos y pies atestigüen contra ellos por lo que cometieron.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdcccxvi{Ese día, Dios les pagará lo que merecen por lo que hicieron, y finalmente sabrán que Dios es la Verdad evidente.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdcccxvii{Las palabras perversas son para los perversos. Los perversos son objeto de palabras perversas. En cambio, las palabras buenas son para los buenos. Estas buenas personas son inocentes de cuanto los acusan, sus faltas les serán perdonadas y tendrán una recompensa generosa.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdcccxviii{¡Oh, creyentes! No entren en ninguna casa que no sea la suya sin antes pedir permiso y saludar a su gente. Esto es lo mejor para ustedes, para que así recapaciten.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdcccxix{Si no encuentran a nadie en ella, no ingresen hasta que se les dé permiso. Si se les dice: ``¡No entren!", entonces vuelvan [sobre sus pasos], eso es lo más puro. Dios conoce bien lo que hacen.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdcccxx{Pero sepan que no es un deber pedir permiso para ingresar a lugares públicos en el que tienen tareas que realizar. Dios conoce bien lo que manifiestan y lo que ocultan.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdcccxxi{Dile a los creyentes [¡oh, Mujámmad!] que recaten sus miradas y se abstengan de cometer obscenidades, porque eso es más puro para ellos. Dios está bien informado de lo que hacen.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdcccxxii{Dile a las creyentes que recaten sus miradas, se abstengan de cometer obscenidades, no muestren de sus atractivos [en público] más de lo que es obvio, y que dejen caer el velo sobre su escote, solo muestren sus encantos a sus maridos, sus padres, sus suegros, sus hijos, los hijos de sus maridos, sus hermanos, sus sobrinos por parte de su hermano y de su hermana, las mujeres, las esclavas, sus sirvientes hombres que ya no tengan deseo sexual y los niños que todavía no sienten atracción por el sexo. [Diles también] que no hagan oscilar sus piernas [al caminar] a fin de atraer la atención sobre sus atractivos ocultos. Pidan perdón a Dios por sus pecados, ¡oh, creyentes!, que así alcanzarán el éxito.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdcccxxiii{Ayuden a que los solteros y los esclavos piadosos se casen. [No teman] si son pobres, porque Dios los sustentará con Su gracia. Él es Vasto, lo sabe todo.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdcccxxiv{Quienes no cuenten con los medios para casarse, que tengan paciencia y se abstengan [de mantener relaciones prematrimoniales] hasta que Dios les provea los medios con Su gracia. Si alguno de los esclavos les pide la manumisión, y saben de su honestidad, otórguensela y ayúdenle [a pagar la manumisión] dándole parte de las riquezas con las que Dios los ha agraciado. No fuercen a sus esclavas a prostituirse con el fin de obtener ganancias, siendo que ellas quieren casarse. Y si [a pesar de esta prohibición] fueran forzadas a hacerlo, [que sepan ellas que] Dios es Absolvedor, Misericordioso.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdcccxxv{Les he revelado [en el Sagrado Corán] signos evidentes y relatos de quienes los precedieron, y exhortación para los piadosos.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdcccxxvi{Dios es la luz de los cielos y de la Tierra. Su luz es como [la que surge de] una hornacina en la cual hay una lámpara dentro de un recipiente de vidrio, tan brillante como un astro resplandeciente. La lámpara se enciende con el aceite de un árbol bendito de olivo, procedente de una zona central entre oriente y occidente, cuyo aceite por poco alumbra sin haber sido tocado por el fuego: Es luz sobre luz. Dios guía hacia Su luz a quien Él quiere, y expone ejemplos para que la gente recapacite. Él lo sabe todo.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdcccxxvii{[Esas hornacinas están] en las casas [de oración] que Dios permitió que fueran erigidas y honradas para que se invoque Su nombre. En ellas Lo glorifican por la mañana y por la tarde.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdcccxxviii{[En las mezquitas hay] hombres a los que ni los negocios ni las ventas los distraen del recuerdo de Dios, la práctica de la oración prescrita y el pago del zakat, porque temen el día en que los corazones y las miradas se estremezcan.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdcccxxix{Dios los recompensará de la mejor forma por sus buenas obras, y por Su gracia les multiplicará su recompensa. Dios agracia sin medida a quien Él quiere.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdcccxxx{Las obras de los que se negaron a creer son como un espejismo en el desierto: el sediento cree que es agua, pero cuando llega a él no encuentra nada. Pero sí se encontrarán con Dios, que les dará el castigo que merezcan. Dios es rápido en ajustar cuentas.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxi{[El estado de los que se negaron a creer es] como tinieblas en un mar profundo cubierto de olas, unas sobre otras, que a su vez están cubiertas por nubes. Son tinieblas que se superponen unas sobre otras. Si alguien mirase su mano, apenas podría distinguirla. De este modo, a quien Dios no ilumine jamás encontrará la luz.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxii{¿Acaso no ves que todo cuanto existe en los cielos y la Tierra glorifica a Dios? Hasta las aves con sus alas desplegadas lo hacen. Cada ser tiene su oración y forma de glorificar. Dios bien sabe lo que hacen.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxiii{A Dios pertenece el reino de los cielos y de la Tierra, y ante Él compareceréis.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxiv{¿Acaso no reparas que Dios impulsa las nubes lentamente, luego las agrupa, y después ves caer la lluvia? Dios hace descender nubes como montañas, cargadas de granizo con el que azota a quien quiere, pero protege de él a quien quiere. El solo resplandor del relámpago podría enceguecer.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxv{Dios hace que la noche y el día se sucedan. En esto hay un motivo de reflexión para los que tienen ojos [y quieren ver].\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxvi{Dios creó a todo ser vivo del agua. Algunos de ellos se arrastran sobre sus vientres, otros caminan sobre dos patas, y otros sobre cuatro. Dios crea lo que quiere. Dios es sobre toda cosa Poderoso.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxvii{He revelado [en este Corán] signos evidentes. Dios guía a quien Él quiere hacia el camino recto.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxviii{Dicen [los hipócritas]: ``Creemos en Dios y en el Mensajero, y los obedecemos". Pero luego, a pesar de haberlo dicho, un grupo de ellos te dan la espalda. Esos no son los creyentes.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmdcccxxxix{Cuando se los llama para que acepten el juicio de Dios y Su Mensajero, hay un grupo de ellos que se rehúsan,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmdcccxl{salvo cuando el fallo les es favorable, entonces lo acatan con sumisión.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmdcccxli{¿Es que sus corazones están enfermos [de tanta hipocresía], o dudan [acerca de Mujámmad], o acaso temen que Dios y Su Mensajero los opriman? Ellos son los injustos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmdcccxlii{En cambio, los creyentes, cuando se los llama a aceptar el juicio de Dios y Su Mensajero en sus asuntos, dicen: ``¡Escuchamos y obedecemos!" Ellos son los bienaventurados.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmdcccxliii{Quienes obedezcan a Dios y a Su Mensajero, tengan temor a Dios y sean piadosos, ellos serán los bienaventurados.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmdcccxliv{[Los hipócritas] juran por Dios que si los convocas [¡oh, Mujámmad!] para luchar por la causa de Dios, dejarán sus hogares y saldrán a combatir. Pero diles: ``No juren en falso, su obediencia es solo de palabra". Dios está bien informado de lo que hacen.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmdcccxlv{Diles: ``Obedezcan a Dios y obedezcan a Su Mensajero". Pero si se rehúsan, el Mensajero solo rendirá cuentas por lo que se le ha encomendado, y ellos deberán rendir cuentas por lo que se les ha ordenado. Pero si le obedecen [al Mensajero] se encaminarán. Mi Mensajero solo tiene la obligación de transmitir [el Mensaje] con claridad.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmdcccxlvi{Dios prometió hacer prevalecer en la Tierra a quienes crean y obren correctamente, como lo hizo con quienes los precedieron. [Dios] les concederá el poder necesario para que puedan practicar la religión que Dios ha dispuesto [el Islam], y transformará su temor en seguridad. Me adorarán sin atribuirme copartícipe alguno. Pero luego de todo esto, quienes se nieguen a creer [y no agradezcan Mis gracias], esos son los perversos.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmdcccxlvii{Cumplan con la oración prescrita, paguen el zakat, y obedezcan al Mensajero, que así obtendrán la misericordia.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmdcccxlviii{No creas que los que se negaron a creer podrán escapar [de Mi castigo] en la Tierra. Su morada será el Infierno. ¡Qué mal destino!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmdcccxlix{¡Oh, creyentes! Que sus sirvientes y sus hijos que todavía no han alcanzado la pubertad, les pidan permiso [para ingresar a sus alcobas] antes de la oración del alba, a la siesta cuando se quitan la ropa [para descansar], y después de la oración de la noche, pues éstos son tres momentos en los que su desnudez podría quedar al descubierto. Fuera de ello, pueden entrar sin pedir permiso, porque se frecuentan unos a otros con asiduidad. Así es como Dios les aclara Sus Signos. Dios es Conocedor, Sabio.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmdcccl{Cuando sus hijos alcancen la pubertad deberán pedir permiso en todo momento, como lo hacen los adultos. Así es como Dios les aclara Sus signos. Dios es Conocedor, Sabio.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmdcccli{Las mujeres que hayan llegado a la menopausia y ya no tengan deseo sexual, pueden aligerar sus vestimentas, siempre que no sea para exhibirse y provocar. Pero si se abstienen por recato es mejor para ellas. Dios todo lo oye, todo lo sabe.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmdccclii{No es motivo de reproche que el ciego, el cojo, el enfermo ni ustedes mismos coman [de lo que les ofrezcan, ya sea comida procedente] de su propia casa, o de la casa de sus padres o de sus madres o de sus hermanos o de sus hermanas, o de sus tíos o tías paternos, o de sus tíos o tías maternos, o de aquellas [casas] que están a su cargo o [de la casa] de algún amigo; ni incurren en falta si comen juntos o por separado. Pero siempre que entren a [cualquiera de estas] casas, salúdense unos a otros con el saludo de la paz, un saludo bendecido y excelente, como Dios manda. Así es como Dios les aclara Sus Signos para que puedan comprender.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmdcccliii{Los verdaderos creyentes son aquellos que creen en Dios y Su Mensajero, y que cuando están reunidos con él [el Mensajero de Dios] por un motivo importante, no se retiran sin antes pedirle permiso. Los que te piden permiso son los que realmente creen en Dios y Su Mensajero. Cuando te pidan permiso [¡oh, Mujámmad!, para retirarse] por algún motivo que les concierna, dáselo a quienes quieras, y pide perdón a Dios por ellos. Dios es Absolvedor, Misericordioso.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmdcccliv{No llamen al Mensajero de la misma manera que se llaman unos a otros. Dios conoce bien a quienes se retiran con disimulo [sin pedir permiso]. Que estén precavidos aquellos que desobedezcan las órdenes del Mensajero de Dios, no sea que les sobrevenga una desgracia o los azote un castigo severo.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmdccclv{¿Acaso no es de Dios cuanto hay en los cielos y en la Tierra? Él sabe bien lo que hacen. El día que comparezcan ante Él, les informará todas sus obras, pues Dios es conocedor de todas las cosas.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmdccclvi{\basmalahes Bendito sea Quien reveló la fuente de todo criterio a Su siervo [el Profeta Mujámmad], para que con él advierta a todos los mundos.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmdccclvii{A Él pertenece la soberanía de los cielos y de la Tierra. Él no ha tenido ningún hijo, y no comparte Su soberanía con nadie, creó todos los elementos de la creación y facultó plenamente a cada uno de ellos para cumplir su función.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmdccclviii{Pero [los que se niegan a creer] adoran en vez de Dios a ídolos que no pueden crear nada, pues ellos mismos han sido creados, ni siquiera tienen el poder de apartar de sí mismos un perjuicio ni de atraer hacia sí mismos un beneficio. Tampoco tienen poder sobre la muerte, la vida ni la resurrección.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmdccclix{Los que se niegan a creer dicen [acerca del Corán]: ``Esto no es más que una mentira que [Mujámmad] ha inventado con la ayuda de otros". Pero son ellos los que han cometido una injusticia y una mentira.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmdccclx{Dicen: ``Son las fábulas de nuestros ancestros que ha copiado, las cuales le son dictadas por la mañana y por la tarde".\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmdccclxi{Diles [¡oh, Mujámmad!]: ``Lo ha revelado Quien conoce lo oculto en los cielos y en la Tierra; Él es Absolvedor, Misericordioso".\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmdccclxii{Y dicen: ``¿Qué clase de Mensajero es éste? Se alimenta y anda por el mercado [ganándose la vida] igual que nosotros. [Si de verdad es un Mensajero,] ¿Por qué no desciende un ángel y lo secunda en su misión de advertir?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmdccclxiii{¿Por qué no le es enviado un tesoro o le es concedido un huerto del que pueda comer?" Los opresores dicen: ``Solo siguen a un hombre hechizado".\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmdccclxiv{Mira [¡oh, Mujámmad!] cómo te comparan y se extravían sin poder encontrar el camino.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmdccclxv{Bendito sea Quien, si quisiera, te concedería [en este mundo] algo mejor que lo que ellos pretenden: jardines por donde corren ríos y grandes palacios.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmdccclxvi{[Dicen esto porque] no creen en la Hora [del Día del Juicio], pero he preparado un fuego para quienes desmienten la Hora.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmdccclxvii{Cuando [el Infierno] los vea de lejos, oirán cómo brama [de furia] y crepita.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmdccclxviii{Y cuando, encadenados, sean arrojados en un lugar estrecho del Infierno, pedirán sollozando ser destruidos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmdccclxix{[Pero se les dirá:] ``Hoy no pedirán una sola vez ser destruidos, sino que lo han de pedir muchas veces".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmdccclxx{Diles [¡oh, Mujámmad!]: ``¿Acaso [ese tormento] es mejor que el Paraíso eterno que se les ha prometido a los piadosos? Para ellos [los piadosos] el Paraíso será su recompensa y destino final,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmdccclxxi{allí tendrán cuanto deseen por toda la eternidad. Esa es la promesa [de Dios], con la que tu Señor se ha comprometido.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmdccclxxii{El día que Él los congregue junto a lo que adoraban en lugar de Dios, y [Dios] les pregunte [a los ídolos]: ‘¿Fueron ustedes los que desviaron a Mis siervos, o fueron ellos mismos los que se desviaron del camino?’\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmdccclxxiii{Ellos responderán: ‘¡Glorificado seas! No nos correspondía tomar algún otro protector fuera de Ti. Tú [¡oh, Señor nuestro!] los agraciaste, a ellos y a sus padres, y los dejaste disfrutar por largo tiempo, hasta que olvidaron el Mensaje y fueron gente perdida’.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmdccclxxiv{[Entonces, Dios dirá a los idólatras:] ``Sus ídolos los han desmentido, y ahora no podrán escapar de Mi castigo ni encontrar quién los socorra. [Sepan que] a quien cometa la injusticia [de dedicar actos de adoración a otro que Dios], lo haré sufrir un gran castigo".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmdccclxxv{Todos los Mensajeros que envié antes de ti [¡oh, Mujámmad!] se alimentaban y caminaban por el mercado [procurando su sustento]. Los ponemos a prueba unos con otros, para que se evidencie quién es paciente. Tu Señor lo ve todo.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmdccclxxvi{Dicen quienes no creen que comparecerán ante Mí: ``¿Por qué no descienden sobre nosotros los ángeles [con el Mensaje]; por qué no vemos directamente a nuestro Señor?" Se han considerado demasiado importantes a sí mismos y su insolencia es enorme.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmdccclxxvii{El día que vean a los ángeles, no habrá buenas noticias para los criminales. Los ángeles les dirán: ``[El Paraíso] les queda vedado para siempre".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmdccclxxviii{[Ese día] reduciré todas sus obras a polvo disperso en el aire.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmdccclxxix{En cambio, los moradores del Paraíso tendrán la mejor morada y el mejor lugar de descanso.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmdccclxxx{El día que el cielo se abra con las nubes y los ángeles desciendan del cielo, uno tras otro.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxi{Ese día, la verdadera soberanía será del Misericordioso, y para los que se negaron a creer será un día difícil.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxii{El injusto morderá sus propias manos [lamentándose] y dirá: ``¡Ojalá hubiera seguido el camino del Mensajero!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxiii{¡Ay de mí! ¡Ojalá no hubiera tomado a aquel por amigo!,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxiv{pues me alejó del Mensaje, a pesar de que me había llegado". El demonio lleva al ser humano a la decepción.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxv{Dijo el Mensajero: ``¡Oh, Señor mío! Mi pueblo ha abandonado el Corán".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxvi{[Sabe, ¡oh, Mujámmad!, que] dispuse que todos los Profetas tuvieran enemigos de entre los pecadores. Pero tu Señor es suficiente como guía y protector.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxvii{Los que se negaron a creer dicen: ``¿Por qué no le ha sido revelado el Corán de una sola vez?" Sabe que te lo he revelado gradualmente para dar firmeza a tu corazón.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxviii{Siempre que ellos presenten un argumento [en contra del Mensaje] te revelaré la Verdad, para que los refutes con un fundamento más claro y una explicación mejor.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmdccclxxxix{Los que sean arrastrados sobre sus caras al Infierno serán quienes tengan el peor destino, los más extraviados del camino.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmdcccxc{Le revelé a Moisés el Libro [la Tora], y le asigné a su hermano Aarón para que lo ayudara [en la transmisión del Mensaje].\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmdcccxci{Y les dije: ``Vayan ambos al pueblo que desmintió Mis signos". Pero finalmente lo destruí por completo.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmdcccxcii{Al pueblo de Noé, cuando desmintieron a los Profetas, los ahogué e hice de ellos un Signo para la gente. Tengo reservado para los injustos un castigo doloroso.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmdcccxciii{A los pueblos de ‘Ad, Zamud y Rass, y a muchas otras generaciones entre ellos [también los castigué].\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmdcccxciv{A todos les advertí de lo que sucedía [a los que se negaban a creer], pero aun así terminaron siendo destruidos por completo.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmdcccxcv{Todos han visto las ruinas de la ciudad sobre la cual hice caer una lluvia de piedras, pero no recapacitan, pues no creen en la resurrección.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmdcccxcvi{Y cuando te ven se burlan de ti diciendo: ``¿Éste es al que Dios envió como Mensajero?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmdcccxcvii{De no haber sido porque nos mantuvimos firmes en la adoración de nuestros ídolos, nos hubiera desviado". Pero ya sabrán, cuando vean el castigo, quiénes eran los desviados.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmdcccxcviii{¿Has visto a esos que toman su propio ego como su dios? Tú no eres responsable por sus acciones.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmdcccxcix{¿Acaso crees que la mayoría de ellos escuchan tus palabras y reflexionan? Ellos son como los ganados que no razonan, o aún más extraviados del camino.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmcm{¿No ves cómo tu Señor extiende la sombra? Si Él quisiera podría dejarla fija, pero ha hecho que se deslice siguiendo el curso del sol.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmcmi{Luego hace que desaparezca gradualmente.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmcmii{Él es Quien dispuso que la noche los cubra [con su oscuridad], que el sueño les sirva para descansar, y que el día sea una resurrección [para buscar el sustento].\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmcmiii{Él es Quien envía los vientos como anuncios de Su misericordia, y hace descender del cielo agua pura,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmcmiv{para revivir con ella la tierra árida, y dar de beber a la gran cantidad de animales y seres humanos que ha creado.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcmv{Y distribuye el agua [entre los seres creados] para que recapaciten, pero la mayoría de la gente es ingrata.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcmvi{Si hubiera querido, habría enviado a cada ciudad un Profeta.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcmvii{No obedezcas a los que se niegan a creer, y lucha contra ellos esforzadamente, exhortándolos con el Corán.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcmviii{Él es Quien ha hecho confluir las dos masas de agua, una dulce y la otra salada. Entre ambas puso un espacio intermedio y una barrera infranqueable.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcmix{Él es Quien creó al ser humano del agua, y dispuso para él un parentesco de sangre y otro por matrimonio. Tu Señor tiene poder sobre todas las cosas.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcmx{Sin embargo [los idólatras] adoran, en lugar de Dios, lo que no tiene poder para causarles beneficio ni perjuicio alguno. El que se niega a creer, da la espalda a su Señor.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcmxi{Te he enviado [¡oh, Mujámmad!] para que albricies [a los piadosos con el Paraíso] y adviertas [del Infierno a los que se niegan a creer].\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcmxii{Diles: ``No les pido ninguna remuneración a cambio [de enseñarles el Mensaje]. Quien quiera, que tome un camino hacia su Señor".\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcmxiii{Encomiéndate al Viviente Inmortal, y glorifícalo con Sus alabanzas. Él basta como conocedor de los pecados de Sus siervos.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcmxiv{Él es Quien creó los cielos, la Tierra y todo lo que hay entre ambos en seis eras, luego se estableció sobre el Trono. Él es Misericordioso. Pregunta sobre Él [su Ser, nombres y atributos] a quien tenga conocimiento.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcmxv{Cuando se les dice [a los idólatras]: ``Prostérnense ante el Compasivo", exclaman: ``¿Quién es el Compasivo? No nos vamos a prosternar ante quien nos ordenas". Y eso los aleja aún más.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcmxvi{Bendito sea Quien creó en el cielo constelaciones, y puso en él [al Sol como] una fuente irradiante de luz, y una Luna luminosa.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcmxvii{Él es Quien dispuso la sucesión de la noche y el día para que reflexionen y Le agradezcan.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcmxviii{Los siervos del Misericordioso son aquellos que caminan sobre la faz de Tierra con humildad, y cuando son increpados por los ignorantes les responden [con palabras de] paz.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcmxix{Los que pasan la noche prosternados y de pie adorando a su Señor,\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcmxx{e imploran: ``¡Oh, Señor nuestro! Sálvanos del castigo del Infierno, porque su castigo será permanente,\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcmxxi{será una morada terrible y un mal destino".\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcmxxii{[Los siervos del Misericordioso son] aquellos que cuando hacen una caridad no dan todo lo que tienen ni tampoco escatiman, sino que dan con equilibrio.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmcmxxiii{Los que no invocan a nada ni a nadie junto con Dios, no matan a quien Dios ha prohibido matar salvo con justo derecho, y no cometen fornicación ni adulterio. [Sepan que] quienes cometan algo de esto merecerán recibir una pena,\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmcmxxiv{el Día de la Resurrección se les multiplicará el tormento, en el que permanecerán humillados,\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmcmxxv{salvo quienes se arrepientan, crean y hagan obras de bien. A estos Dios les perdonará sus pecados, y en su lugar les registrará buenas obras. Dios es Absolvedor, Misericordioso.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmcmxxvi{A quien se arrepienta y haga obras de bien, Dios le aceptará su arrepentimiento.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmcmxxvii{Aquellos que no dan falso testimonio, y cuando pasan junto a la frivolidad lo hacen con dignidad.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmcmxxviii{Aquellos que cuando se los exhorta a reflexionar sobre los versículos de su Señor no se hacen los sordos ni los ciegos.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmcmxxix{Aquellos que piden: ``¡Oh, Señor nuestro! Agrácianos con cónyuges y descendientes que sean un motivo de alegría y tranquilidad para nosotros, y haz que seamos un ejemplo para los que tienen temor [de Dios]".\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmcmxxx{Ellos serán recompensados con el Paraíso por su perseverancia, y serán recibidos [por los ángeles] con un saludo de paz.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmcmxxxi{Allí vivirán por toda la eternidad. ¡Qué hermosa morada y lugar de permanencia!\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmcmxxxii{Diles [¡oh, Mujámmad!]: ``¿Por qué iba a prestarles atención mi Señor si no Le ruegan? Pero ustedes [que se han negado a creer] han desmentido Su Mensaje, y por eso merecen que los azote el castigo".\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmcmxxxiii{\basmalahes Ta’. Sin. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmcmxxxiv{Estos son los signos de un Libro claro.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmcmxxxv{¿Es que vas a consumirte [de tanto pesar] porque [tu gente] se niegan a creer?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmcmxxxvi{Si quisiera les enviaría un signo del cielo, ante el cual sus cuellos se inclinarían con sumisión.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmcmxxxvii{Siempre que se les presentó una revelación del Misericordioso se apartaron de ella.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmcmxxxviii{Negaron la Verdad [una y otra vez]; ya se les informará acerca de lo que se burlaban.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmcmxxxix{¿Acaso no observan la Tierra y reparan sobre cuántas especies nobles he creado en ella?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmcmxl{En eso hay un signo, pero la mayoría no cree.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmcmxli{Tu Señor es Poderoso, Misericordioso.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmcmxlii{[Recuerda] cuando tu Señor llamó a Moisés y le dijo: ``Dirígete al pueblo injusto:\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmcmxliii{El pueblo del Faraón, y exhórtalos a comportarse con temor de Dios".\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmcmxliv{Dijo [Moisés]: ``¡Oh, Señor mío! Temo que me desmientan,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmcmxlv{y entonces mi pecho se oprima y mi lengua no pueda expresarse con fluidez. Envía, a [mi hermano] Aarón conmigo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmcmxlvi{Ellos me acusan de un crimen y temo que me maten".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmcmxlvii{Dijo [Dios]: ``No temas. Vayan ambos con Mis signos, que estaré junto a ustedes escuchando.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmcmxlviii{Preséntense ante el Faraón y díganle: ‘Somos Mensajeros enviados por el Señor del Universo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmcmxlix{Deja marchar con nosotros a los Hijos de Israel’".\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmcml{Dijo [el Faraón]: ``¿Acaso no te criamos [¡oh, Moisés!] desde niño, y permaneciste con nosotros muchos años de tu vida,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmcmli{e hiciste lo que hiciste, convirtiéndote en un renegado [desagradecido con nosotros de todo lo que te dimos]?"\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmcmlii{Dijo [Moisés]: ``Cuando lo hice estaba aún en la perdición.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmcmliii{Luego hui de ustedes por temor [a que me mataran]. Pero mi Señor me agració con la sabiduría y me hizo uno de Sus Mensajeros.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmcmliv{En cuanto al favor que me recuerdas, ¿acaso no se debió a que habías esclavizado a los Hijos de Israel?"\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmcmlv{Preguntó el Faraón: ``¿Quién es el Señor del Universo?"\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmcmlvi{Dijo [Moisés]: ``Es el Señor de los cielos, la Tierra y todo lo que hay entre ambos. Deberían tener certeza de eso".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmcmlvii{Dijo [el Faraón] a quienes estaban en torno a él: ``¿Han oído?"\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmcmlviii{Agregó [Moisés]: ``Es su Señor y el Señor de sus ancestros".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmcmlix{Dijo [el Faraón a su pueblo]: ``El Mensajero que les ha sido enviado es un demente".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmcmlx{[Moisés] prosiguió: ``Él es el Señor del oriente y del occidente, y de lo que hay entre ambos. Deberían razonar sobre eso".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmcmlxi{Dijo [el Faraón]: ``Si tienes otro dios que no sea yo, haré que te encarcelen".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmcmlxii{Dijo [Moisés]: ``¿Incluso si te presentara una prueba evidente [de que soy Profeta]?"\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmcmlxiii{Dijo [el Faraón]: ``Preséntala, si es que dices la verdad".\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmcmlxiv{Entonces [Moisés] arrojó su vara, y ésta se convirtió en una serpiente auténtica.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmcmlxv{[Luego introdujo su mano por el cuello de su túnica y] al retirarla, ante todos los presentes, estaba blanca y resplandeciente.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmcmlxvi{Dijo [el Faraón] a la nobleza que estaba a su alrededor: ``Es un hechicero experto,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmcmlxvii{que pretende expulsarlos de su tierra [de Egipto] con su magia. ¿Qué me aconsejan hacer?"\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmcmlxviii{Dijeron: ``Demóralos a él y a su hermano, y envía emisarios por las ciudades\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmcmlxix{para que te traigan a todo hechicero experto".\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmcmlxx{Entonces, todos los hechiceros se reunieron el día fijado.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmcmlxxi{Se le dijo a la gente: ``¿Acaso no van a reunirse [para presenciar el duelo]?\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmcmlxxii{Seguiremos a los hechiceros, si son ellos los que vencen".\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmcmlxxiii{Cuando los hechiceros se presentaron ante el Faraón, consultaron: ``¿Tendremos una recompensa si somos los vencedores?"\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmcmlxxiv{Respondió [el Faraón]: ``¡Sí!, [se los recompensará debidamente] y estarán entre mis allegados".\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmcmlxxv{Les dijo Moisés [a los hechiceros]: ``Arrojen lo que vayan a arrojar".\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmcmlxxvi{Entonces, arrojaron sus cuerdas y varas, y dijeron: ``¡Por el poder del Faraón! Seremos los vencedores".\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmcmlxxvii{[Moisés] arrojó su vara, y ésta se tragó sus ilusiones.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmcmlxxviii{Los hechiceros [al percibir que eso no era hechicería] se prosternaron [ante Dios],\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmcmlxxix{y dijeron: ``Creemos en el Señor del Universo,\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmcmlxxx{el Señor de Moisés y de Aarón".\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxi{Dijo [el Faraón sorprendido]: ``¿Acaso van a creer en él sin que yo se los permita? Creo que él es su maestro, el que les ha enseñado la magia. ¡Ya verán [mi venganza]! Haré que les amputen una mano y un pie opuestos, y luego los haré crucificar a todos".\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxii{Dijeron: ``¡No nos importa! Nos volvemos al Señor.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxiii{Anhelamos que Nuestro Señor perdone nuestros pecados por haber sido los primeros creyentes [en el Mensaje de Moisés]".\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxiv{[Luego] Le inspiré a Moisés: ``Sal durante la noche con Mis siervos; y serán perseguidos".\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxv{El Faraón envió emisarios a las ciudades para reclutar [hombres].\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxvi{[Diciendo:] ``Ellos son solo unos pocos,\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxvii{pero están llenos de odio hacia nosotros.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxviii{Mientras que nosotros somos numerosos y estamos alerta".\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmcmlxxxix{Así fue como los saqué [al Faraón y a su ejército de Egipto, un país repleto] de jardines, manantiales,\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmcmxc{tesoros y residencias suntuosas.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmcmxci{Hice que los Hijos de Israel lo heredaran.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmcmxcii{[El Faraón y su ejército] iniciaron la persecución [de los Hijos de Israel] a la salida del sol.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmcmxciii{Cuando los dos grupos se divisaron, los seguidores de Moisés exclamaron: ``¡[Pronto] seremos alcanzados!"\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmcmxciv{Dijo [Moisés]: ``¡No, [no nos alcanzarán]! Pues mi Señor está conmigo, y Él me guiará [para saber cómo salvarnos]".\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmcmxcv{Le inspiré a Moisés: ``Golpea el mar con tu vara", y el mar se dividió en dos. Cada lado [del mar] se asemejaba a una enorme montaña.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmcmxcvi{Luego hice que los perseguidores [el Faraón y su ejército] los siguieran,\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmcmxcvii{y fue entonces cuando salvé a Moisés y a todos los que estaban con él,\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmcmxcviii{ahogando a los perseguidores.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmcmxcix{En esto hay un signo, aunque la mayoría de ellos no eran creyentes.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmm{Tu Señor es el Poderoso, el Misericordioso.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmi{[Y] relátales [también, ¡oh, Mujámmad!] la historia de Abraham,\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmii{cuando dijo a su padre y a su pueblo: ``¿Qué adoran?"\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmiii{Respondieron: ``Adoramos ídolos, a los que estamos consagrados".\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmiv{Dijo [Abraham]: ``¿Acaso pueden ellos oír sus súplicas?\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmv{¿Pueden concederles a ustedes algún beneficio o pueden causarles algún daño?"\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmvi{Respondieron: ``No, pero es lo que adoraban nuestros padres [y nosotros simplemente los imitamos]".\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmvii{Dijo [Abraham]: ``¿Acaso no han reflexionado en lo que adoran,\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmviii{tanto ustedes como sus ancestros?\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmix{Ellos [los que adoran] son mis enemigos, excepto el Señor del Universo,\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmx{pues él es Quien me ha creado y me guía,\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmxi{Él me da de comer y de beber.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmxii{Cuando enfermo, Él es Quien me cura.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmxiii{Él es Quien me hará morir y luego me dará vida [resucitándome],\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmxiv{de Él anhelo que perdone mis pecados el Día del Juicio.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmxv{¡Oh, Señor mío! Concédeme sabiduría y estar entre los justos.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmxvi{Concédeme tener una buena reputación entre las generaciones futuras.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmxvii{Hazme estar entre los que heredarán el Jardín de las Delicias.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmxviii{Perdona a mi padre, pues está extraviado\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmxix{y no me humilles el Día de la Resurrección,\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmxx{el día en que de nada servirán las riquezas ni los hijos,\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmxxi{y solo estará a salvo quien tenga el corazón puro".\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmxxii{[Ese día] el Paraíso estará cerca de los piadosos.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmxxiii{El Infierno será expuesto ante los extraviados.\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmxxiv{Se les preguntará [a los idólatras]: ``¿Dónde está lo que adoraban\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmxxv{en lugar de Dios? ¿Acaso pueden ellos socorrerlos o siquiera defenderse a sí mismos?"\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmxxvi{Serán arrojados [en el Infierno] tanto los ídolos como aquellos descarriados que los adoraron,\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmmxxvii{y también los secuaces del demonio, todos juntos.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmmxxviii{Dirán, mientras disputan:\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmmxxix{``[Juramos] por Dios que estábamos en un error evidente,\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmmxxx{pues equiparábamos a los ídolos con el Señor del Universo [al adorarlos].\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmmxxxi{Pero fueron los pecadores los que nos desviaron.\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmmxxxii{No tenemos a nadie que pueda interceder por nosotros,\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmmxxxiii{ni siquiera tenemos un amigo íntimo [que nos ayude].\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmmxxxiv{¡Ojalá se nos diera otra oportunidad [de retornar a la vida mundanal] para poder ser de los creyentes!"\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmmxxxv{En esto hay un signo, pero la mayoría de ellos no eran creyentes.\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmmxxxvi{Tu Señor es el Poderoso, el Misericordioso.\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmmxxxvii{El pueblo de Noé desmintió a los Mensajeros.\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmmxxxviii{Su hermano Noé les dijo: ``Tengan temor de Dios,\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmmxxxix{soy para ustedes un Mensajero leal,\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmmxl{tengan temor de Dios y síganme.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmmxli{No les pido remuneración a cambio [de transmitirles el Mensaje]. Mi recompensa me la dará el Señor del Universo.\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmmxlii{Tengan temor de Dios, y síganme".\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmmxliii{Dijeron: ``¿Acaso vamos a creerte, siendo que solo te siguen los más miserables?"\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmmxliv{Dijo [Noé]: ``¿Y qué conocimiento puedo tener yo de lo que hacían [antes de venir a mí]?\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmmxlv{Solo a mi Señor le compete juzgar sus obras. ¡Si tan solo lo entendieran!\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmmxlvi{Yo no rechazaré a ningún creyente.\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmmxlvii{Yo solo he sido enviado para amonestarlos claramente".\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmmxlviii{Dijeron: ``¡Oh, Noé! Si no dejas de insultar a nuestros ídolos te lapidaremos [hasta la muerte]".\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmmxlix{Dijo [Noé]: ``¡Oh, Señor mío! Mi pueblo me ha desmentido.\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmml{Juzga definitivamente entre ellos y yo. Salva a los creyentes que están conmigo, y a mí con ellos".\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmmli{Los salvé a él y a los que creyeron en él en el arca abarrotada.\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmmlii{Y ahogué a los que quedaron [sin subir al arca].\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmmliii{En esto hay un signo, pero la mayoría de ellos no eran creyentes.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmmliv{Tu Señor es el Poderoso, el Misericordioso.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmmlv{El pueblo de ‘Ad desmintió a los Mensajeros.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmmlvi{Su hermano Hud les dijo: ``Tengan temor de Dios,\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmmlvii{yo soy para ustedes un Mensajero leal,\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmmlviii{tengan temor de Dios y síganme.\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmmlix{No les pido remuneración a cambio [de transmitirles el Mensaje]. Mi recompensa me la dará el Señor del Universo.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmmlx{Edifican enormes construcciones en todas las colinas solo por ostentación.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmmlxi{Habitan en palacios majestuosos como si fueran a vivir por toda la eternidad.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mmmlxii{Cuando atacan lo hacen sin piedad.\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mmmlxiii{Tengan temor de Dios y síganme.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mmmlxiv{Tengan temor de Quien los agració con todo lo que saben,\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mmmlxv{les concedió hijos, rebaños,\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mmmlxvi{jardines y manantiales.\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mmmlxvii{Yo, en realidad, temo que los alcance el castigo de un día gravísimo".\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mmmlxviii{Dijeron: ``No nos importa, nos da igual si nos exhortas o no,\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@mmmlxix{esto que hacemos es lo que acostumbraban hacer nuestros ancestros,\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@mmmlxx{y seguramente no seremos castigados".\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@mmmlxxi{Lo desmintieron [al Profeta Hud] y por eso los aniquilé. En eso hay un signo, aunque la mayoría de ellos no eran creyentes.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@mmmlxxii{Tu Señor es el Poderoso, el Misericordioso.\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@mmmlxxiii{El pueblo de Zamud desmintió a los Mensajeros.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@mmmlxxiv{Su hermano Sálih les dijo: ``Tengan temor de Dios,\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@mmmlxxv{yo soy para ustedes un Mensajero leal,\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@mmmlxxvi{tengan temor de Dios y síganme.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@mmmlxxvii{No les pido remuneración a cambio [de transmitirles el Mensaje]. Mi recompensa me la dará el Señor del Universo.\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@mmmlxxviii{¿Acaso piensan que se los dejará vivir seguros [para siempre] en medio de lo que ahora los rodea,\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@mmmlxxix{entre jardines y manantiales,\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@mmmlxxx{entre campos cultivados y palmeras esbeltas con frutos tiernos?\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@mmmlxxxi{[Por ostentación] esculpen sus viviendas en las montañas.\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@mmmlxxxii{Tengan temor de Dios y síganme.\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@mmmlxxxiii{Y no obedezcan las órdenes de los que se extralimitan,\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@mmmlxxxiv{que corrompen la Tierra y no contribuyen al establecimiento del bienestar".\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@mmmlxxxv{Dijeron: ``Tú estás hechizado,\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@mmmlxxxvi{y eres un ser humano igual que nosotros. Tráenos una prueba [milagrosa de tu profecía], si es que dices la verdad".\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@mmmlxxxvii{Dijo [Sálih: ``Aquí tienen la prueba que piden,] a esta camella le corresponde beber un día y a ustedes otro.\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@mmmlxxxviii{No le hagan daño, de lo contrario los azotará el castigo de un día horrendo".\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@mmmlxxxix{Pero la mataron, y por la mañana amanecieron arrepentidos.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@mmmxc{El castigo los azotó. En ello hay un signo, aunque la mayoría de ellos no eran creyentes.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@mmmxci{Tu Señor es el Poderoso, el Misericordioso.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@mmmxcii{El pueblo de Lot desmintió a los Mensajeros.\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@mmmxciii{Su hermano Lot les dijo: ``Tengan temor de Dios,\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@mmmxciv{yo soy para ustedes un Mensajero leal.\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@mmmxcv{Tengan temor de Dios y síganme.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@mmmxcvi{No les pido remuneración a cambio [de transmitirles el Mensaje]. Mi recompensa me la dará el Señor del Universo.\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@mmmxcvii{Se orientan [por elección] a los hombres [para satisfacer sus deseos sexuales] entre toda la gente del mundo,\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@mmmxcviii{a la vez que se apartan de lo que su Señor creó para ustedes, su esposa [una pareja mujer]. Ustedes son un pueblo trasgresor".\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@mmmxcix{Dijeron: ``¡Oh, Lot! Si no dejas de recriminarnos te expulsaremos".\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@mmmc{Dijo [Lot]: ``Yo, soy claramente de los que repudian lo que ustedes hacen.\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@mmmci{¡Oh, Señor mío! Protégenos, a mi familia y a mí, de lo que ellos hacen".\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@mmmcii{Los salvé a él y a toda su familia,\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@mmmciii{excepto a la anciana [esposa de Lot] que estaba entre los que se quedaron.\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@mmmciv{Luego destruí a los demás.\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@mmmcv{Hice caer sobre ellos una lluvia [de piedras]. ¡Qué lluvia aterradora para los que habían sido advertidos!\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@mmmcvi{En ello hay un signo, aunque la mayoría de ellos no eran creyentes.\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@mmmcvii{Tu Señor es el Poderoso, el Misericordioso.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@mmmcviii{El pueblo de Jetró desmintió a los Mensajeros.\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@mmmcix{Jetró les dijo: ``Tengan temor de Dios,\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@mmmcx{yo soy para ustedes un Mensajero leal.\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@mmmcxi{Tengan temor de Dios y síganme.\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@mmmcxii{No les pido remuneración a cambio [de transmitirles el Mensaje]. Mi recompensa me la dará el Señor del Universo.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@mmmcxiii{Sean justos al medir y no mermen,\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@mmmcxiv{pesen con equidad,\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@mmmcxv{no estafen a la gente, no obren mal en la Tierra corrompiéndola,\qt@no{(183)}}
+\qt@newcmd\qurantrans@es@mmmcxvi{y tengan temor de Quien los creó, a ustedes y a las primeras generaciones".\qt@no{(184)}}
+\qt@newcmd\qurantrans@es@mmmcxvii{Le respondieron: ``Tú estás hechizado,\qt@no{(185)}}
+\qt@newcmd\qurantrans@es@mmmcxviii{y eres un ser humano igual que nosotros, al que consideramos un mentiroso.\qt@no{(186)}}
+\qt@newcmd\qurantrans@es@mmmcxix{Te desafiamos a que hagas caer sobre nosotros un pedazo de cielo, si es que dices la verdad".\qt@no{(187)}}
+\qt@newcmd\qurantrans@es@mmmcxx{Dijo [Jetró]: ``Mi Señor conoce mejor que nadie lo que hacen".\qt@no{(188)}}
+\qt@newcmd\qurantrans@es@mmmcxxi{Pero lo desmintieron, y por ello los azotó el castigo el día de la sombra. Fue el castigo de un día terrible.\qt@no{(189)}}
+\qt@newcmd\qurantrans@es@mmmcxxii{En ello hay un signo, pero la mayoría de ellos no eran creyentes.\qt@no{(190)}}
+\qt@newcmd\qurantrans@es@mmmcxxiii{Tu Señor es el Poderoso, el Misericordioso.\qt@no{(191)}}
+\qt@newcmd\qurantrans@es@mmmcxxiv{Este [Corán] es una revelación del Señor del Universo.\qt@no{(192)}}
+\qt@newcmd\qurantrans@es@mmmcxxv{Descendió con él el Espíritu Leal [el ángel Gabriel],\qt@no{(193)}}
+\qt@newcmd\qurantrans@es@mmmcxxvi{y lo grabó en tu corazón [¡oh, Mujámmad!] para que seas uno de los que advierten [a su pueblo].\qt@no{(194)}}
+\qt@newcmd\qurantrans@es@mmmcxxvii{Es una revelación en lengua árabe pura,\qt@no{(195)}}
+\qt@newcmd\qurantrans@es@mmmcxxviii{que ya estaba mencionada en las primeras Escrituras.\qt@no{(196)}}
+\qt@newcmd\qurantrans@es@mmmcxxix{¿Acaso no es prueba suficiente que lo reconozcan los sabios de los Hijos de Israel?\qt@no{(197)}}
+\qt@newcmd\qurantrans@es@mmmcxxx{Si se lo hubiera revelado a alguien que no hubiera sido árabe\qt@no{(198)}}
+\qt@newcmd\qurantrans@es@mmmcxxxi{para que se los recitara, no habrían creído.\qt@no{(199)}}
+\qt@newcmd\qurantrans@es@mmmcxxxii{Así he impregnado los corazones de los que hacen el mal,\qt@no{(200)}}
+\qt@newcmd\qurantrans@es@mmmcxxxiii{porque no creerán hasta que vean el castigo doloroso.\qt@no{(201)}}
+\qt@newcmd\qurantrans@es@mmmcxxxiv{Pero éste les llegará sorpresivamente, sin que se den cuenta.\qt@no{(202)}}
+\qt@newcmd\qurantrans@es@mmmcxxxv{Entonces dirán: ``¿No es posible que nos den una prórroga?"\qt@no{(203)}}
+\qt@newcmd\qurantrans@es@mmmcxxxvi{¿Acaso no te desafiaban pidiéndote que les apresurara Mi castigo?\qt@no{(204)}}
+\qt@newcmd\qurantrans@es@mmmcxxxvii{¿Qué te parece si los dejáramos disfrutar unos años más [de la vida mundanal]?\qt@no{(205)}}
+\qt@newcmd\qurantrans@es@mmmcxxxviii{Cuando les llegue el castigo sobre el que fueron advertidos,\qt@no{(206)}}
+\qt@newcmd\qurantrans@es@mmmcxxxix{de nada les servirá que se les haya dado una prórroga para seguir disfrutando [de la vida mundanal].\qt@no{(207)}}
+\qt@newcmd\qurantrans@es@mmmcxl{No he destruido ninguna ciudad sin antes haberle enviado a quien les advirtiera\qt@no{(208)}}
+\qt@newcmd\qurantrans@es@mmmcxli{con el Mensaje, porque no Soy injusto.\qt@no{(209)}}
+\qt@newcmd\qurantrans@es@mmmcxlii{[Este Mensaje] no lo han hecho descender los demonios,\qt@no{(210)}}
+\qt@newcmd\qurantrans@es@mmmcxliii{no les corresponde ni tienen poder para hacerlo.\qt@no{(211)}}
+\qt@newcmd\qurantrans@es@mmmcxliv{A ellos no les permito oír [lo que ordeno a Mis ángeles].\qt@no{(212)}}
+\qt@newcmd\qurantrans@es@mmmcxlv{Así que no invoquen a nada ni nadie junto a Dios, porque se autocondenarían al castigo.\qt@no{(213)}}
+\qt@newcmd\qurantrans@es@mmmcxlvi{Advierte a tus familiares cercanos.\qt@no{(214)}}
+\qt@newcmd\qurantrans@es@mmmcxlvii{Baja tus alas para proteger a los creyentes que te sigan.\qt@no{(215)}}
+\qt@newcmd\qurantrans@es@mmmcxlviii{Pero si te desobedecen, diles: ``Yo no soy responsable de cómo obran".\qt@no{(216)}}
+\qt@newcmd\qurantrans@es@mmmcxlix{Encomiéndate al Poderoso, el Misericordioso.\qt@no{(217)}}
+\qt@newcmd\qurantrans@es@mmmcl{El que te ve cuando te pones de pie [para orar en soledad],\qt@no{(218)}}
+\qt@newcmd\qurantrans@es@mmmcli{y cuando realizas tus movimientos entre los que se prosternan [durante la oración comunitaria].\qt@no{(219)}}
+\qt@newcmd\qurantrans@es@mmmclii{Él todo lo oye, todo lo sabe.\qt@no{(220)}}
+\qt@newcmd\qurantrans@es@mmmcliii{¿Quieren que les informe sobre quién descienden los demonios?\qt@no{(221)}}
+\qt@newcmd\qurantrans@es@mmmcliv{Descienden sobre todo mentiroso perverso [que dice ser adivino].\qt@no{(222)}}
+\qt@newcmd\qurantrans@es@mmmclv{Que prestan oídos [a los comentarios de la gente y los susurros de los demonios], pero la mayoría de lo que dicen son mentiras.\qt@no{(223)}}
+\qt@newcmd\qurantrans@es@mmmclvi{Solo los descarriados siguen a los poetas [dándoles prioridad sobre la revelación].\qt@no{(224)}}
+\qt@newcmd\qurantrans@es@mmmclvii{¿Acaso no ves cómo ellos [los poetas] en sus lugares de reunión divagan [porque no siguen la revelación],\qt@no{(225)}}
+\qt@newcmd\qurantrans@es@mmmclviii{y dicen lo que no hacen?\qt@no{(226)}}
+\qt@newcmd\qurantrans@es@mmmclix{Excepto los creyentes de entre ellos que obran correctamente, mencionan mucho a Dios [en sus poesías], y responden con ellas a los agravios [de los poetas que se negaron a creer y ofendían en sus poesías a Mujámmad y al Islam]. Ya verán quienes hayan sido injustos, cuál será su destino.\qt@no{(227)}}
+\qt@newcmd\qurantrans@es@mmmclx{\basmalahes Ta’. Sin. Estos son los versículos del Corán, el Libro evidente,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmclxi{que es guía y albricia para los creyentes,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmclxii{que cumplen con la oración prescrita, pagan el zakat y están convencidos de la existencia de la otra vida.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmclxiii{En cambio, a quienes no crean en la otra vida les haré ver como buenas sus malas acciones, y así vagarán ciegos de un lado a otro.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmclxiv{Esos sufrirán el peor castigo, y en la otra vida serán los perdedores.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmclxv{Tú [¡oh, Mujámmad!] recibes el Corán que proviene del Sabio, el Conocedor.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmclxvi{[Recuerda] cuando Moisés dijo a su familia: ``He divisado un fuego. Les traeré noticias de él [para orientarnos], o bien una brasa encendida para que podamos calentarnos".\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmclxvii{Cuando llegó a él, una voz lo llamó: ``¡Bendito sea quien está donde el fuego y quienes están a su alrededor. Glorificado sea Dios, Señor del universo!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmclxviii{¡Oh, Moisés! Yo soy Dios, el Poderoso, el Sabio.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmclxix{Arroja tu vara". Cuando la vio moverse como si fuera una serpiente, atemorizado se dio vuelta buscando alejarse sin mirar atrás. [Pero Dios le dijo:] ``¡Oh, Moisés! No tengas temor; los Mensajeros no deben temer cuando están ante Mí.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmclxx{Sí, en cambio, quien haya obrado injustamente. Pero si enmienda, sepan que Yo soy Absolvedor, Misericordioso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmclxxi{Introduce tu mano por el cuello de tu túnica y saldrá blanca, resplandeciente, sin tener ningún mal. Esto es parte de los nueve signos destinados al Faraón y a su pueblo. Ellos son un pueblo perverso".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmclxxii{Pero cuando Mis Signos fueron visibles ante ellos, exclamaron: ``Esto es un hechizo evidente".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmclxxiii{Rechazaron los Signos, a pesar de estar convencidos [de que provenían de Dios], por perversidad y arrogancia. ¡Observa cuál fue el destino de los corruptores!\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmclxxiv{Concedí a David y a Salomón el conocimiento. Ambos dijeron: ``¡Alabado sea Dios! Quien nos ha favorecido sobre muchos de Sus siervos creyentes".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmclxxv{Salomón sucedió a David [en la profecía]. Dijo: ``¡Oh, gente! Se me ha enseñado el lenguaje de los pájaros y se nos han concedido numerosos favores. Esto es una gracia evidente".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmclxxvi{Fueron concentradas ante Salomón sus tropas de yinnes, seres humanos y pájaros, y formadas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmclxxvii{Al pasar por un valle donde había hormigas, una de ellas dijo: ``¡Oh, hormigas! Entren en sus hormigueros, no sea que Salomón y sus tropas las pisen sin darse cuenta".\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmclxxviii{[Salomón] al oír lo que ella decía, sonrió y exclamó: ``¡Señor mío! Haz que te agradezca los favores que nos has concedido, tanto a mí como a mis padres, que haga obras de bien que Te complazcan, y cuéntame, por Tu misericordia, entre Tus siervos justos".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmclxxix{[Luego] pasó revista a los pájaros y dijo: ``¿Por qué no veo a la abubilla? ¿Acaso está ausente?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmclxxx{La castigaré severamente o la degollaré, a menos que me presente una excusa convincente".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmclxxxi{No tardó mucho en regresar, y [al volver] dijo: ``Tengo conocimiento de algo que tú ignoras. Te traigo desde Saba información fidedigna.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmclxxxii{He descubierto que allí reina una mujer, a la que se le ha concedido mucha riqueza y poder, y posee un Trono majestuoso.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmclxxxiii{Encontré que ella y su pueblo se prosternan ante el Sol, en vez de hacerlo ante Dios. El demonio les ha hecho ver sus malas obras como buenas, apartándolos del sendero recto y por eso no pueden ver la verdad.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmclxxxiv{No se prosternan ante Dios, Quien hace surgir lo que se encuentra escondido en los cielos y en la Tierra, y sabe lo que ocultan y lo que manifiestan.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmclxxxv{Dios, no hay divinidad salvo Él, el Señor del Trono majestuoso".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmclxxxvi{Dijo [Salomón a la abubilla]: ``Veremos si has dicho la verdad o eres de los que mienten.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmclxxxvii{Ve con esta carta mía y entrégasela, luego mantente apartado y observa cómo reaccionan [ella y su pueblo]".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmclxxxviii{Ella [la reina de Saba] dijo: ``¡Oh, nobles! Me han entregado una carta noble.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmclxxxix{Es de Salomón, y dice: ‘En el nombre de Dios, el Compasivo con toda la creación, el Misericordioso con los creyentes.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmcxc{No se muestren altivos conmigo [y mi mensaje] y vengan a mí sumisos [monoteístas]’".\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmcxci{Dijo ella: ``¡Oh, nobles! Aconséjenme sobre este asunto. No tomaré ninguna decisión sin que antes se pronuncien".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmcxcii{Dijeron: ``Contamos con un gran poderío y una ofensiva poderosa, pero la decisión final te pertenece. Considera cuál será tu orden".\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmcxciii{Dijo ella: ``Los reyes, cuando invaden una ciudad, la devastan y humillan a los nobles. Así suelen hacer.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmcxciv{Voy a enviarles un regalo y a esperar con qué noticias vuelven los emisarios".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmcxcv{Cuando [los emisarios] se presentaron ante Salomón, [este] dijo: ``¿Acaso me ofrecen riquezas [para tentarme], cuando lo que Dios me ha concedido es mejor que las riquezas con las que Él los ha proveído? Son ustedes quienes se complacen con sus regalos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmcxcvi{Regresen a su pueblo [con los regalos, y adviertan] que los combatiremos con huestes a las que no podrán vencer, y los expulsaremos de su tierra, sometidos y humillados".\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmcxcvii{Dijo [Salomón a su corte]: ``¡Oh, nobles! ¿Quién de ustedes me traerá su trono antes de que vengan a mí, sumisos?"\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmcxcviii{Uno de los yinnes poderosos dijo: ``Yo te lo traeré antes de que te levantes de tu trono. Yo puedo hacerlo y soy digno de tu confianza".\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmcxcix{Dijo [un creyente piadoso] que tenía conocimiento del Libro: ``Yo te lo traeré antes de que parpadees". Y cuando [Salomón] lo vio delante suyo dijo: ``Esta es una de las gracias de mi Señor para probarme si soy agradecido o ingrato. Quien agradezca [las gracias de su Señor] se beneficiará a sí mismo, pero quien sea ingrato sepa que mi Señor es Opulento, Generoso".\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmcc{Dijo [Salomón]: ``Alteren la apariencia de su trono, para que cuando lo vea sepamos si se deja guiar [a la verdad] o es de aquellos que rehúsan la guía".\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmcci{Cuando ella llegó, se le preguntó: ``¿Así es tu trono?" Respondió: ``Pareciera que fuera él". [Dijo Salomón:] ``Recibimos el conocimiento antes que ella y nos sometimos a Dios".\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmccii{Lo que ella adoraba en lugar de Dios le impedía ver la Verdad. Pertenecía a un pueblo de incrédulos.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmcciii{Se le dijo: ``Entra en el palacio [que los yinnes habían construido para Salomón]". Cuando ella lo vio, pensó que ingresaría a un estanque de agua y se recogió el vestido. Dijo [Salomón]: ``Todo este palacio es de cristal pulido". Dijo ella: ``¡Señor mío! He sido injusta conmigo misma [al adorar a otros junto a Dios], me someto junto con Salomón al [único] Dios, el Señor del universo".\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmcciv{Al pueblo llamado Zamud le envié a su hermano Sálih [como Profeta, quien les dijo]: ``Adoren solo a Dios". Pero ellos se dividieron en dos grupos que disputaban entre sí.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmccv{Les dijo: ``¡Oh, pueblo mío! ¿Por qué prefieren obrar mal en vez de obrar bien? ¿Por qué no piden perdón a Dios para alcanzar la misericordia?"\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmccvi{Dijeron: ``Creemos que tú y quienes te siguen nos traen mala suerte". Respondió: ``Sus adversidades se las envía Dios [por sus pecados]. Ustedes son un pueblo que ha sido seducido [por la superstición]".\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmccvii{Había en la ciudad nueve personas que sembraban la corrupción y no contribuían al bienestar.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmccviii{Se dijeron: ``Juremos por Dios que los sorprenderemos por la noche [y los mataremos] a él y a su familia, luego diremos a quienes exijan justicia: ‘Nosotros no presenciamos los crímenes de su familia, y decimos la verdad’".\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmccix{Ellos urdieron un plan, pero sin que se dieran cuenta, Yo tenía otro plan.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmccx{Observa cómo desbarato su plan: los destruí a ellos y a todo su pueblo [que fue cómplice].\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmccxi{Sus casas yacen vacías, porque cometieron injusticias. En ello hay un signo para quienes reflexionan.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmccxii{Salvé a quienes creían y tenían temor [de Dios].\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmccxiii{[Recuerda al Profeta] Lot, cuando le dijo a su pueblo: ``¿Cometen esa inmoralidad en público?"\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmccxiv{¿Buscan hombres para satisfacer su deseo en lugar de satisfacerlo con una mujer? Son un pueblo ignorante.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmccxv{Pero la única respuesta de su pueblo fue: ``Expulsen a la familia de Lot de la ciudad; son gente que se hacen los puros".\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmccxvi{Salvé a Lot y a su familia, excepto a su mujer, pues en el decreto era de las condenadas.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmccxvii{Hice que cayera sobre ellos una lluvia [de piedras]. ¡Qué lluvia más aterradora fue la que les envié!\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmccxviii{Di: ``¡Alabado sea Dios! Que la paz sea sobre Sus siervos elegidos. ¿Quién es mejor: Dios o lo que Le asocian?"\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmccxix{¿Acaso Quien creó los cielos y la Tierra e hizo descender para ustedes agua del cielo, con la que hace surgir jardines espléndidos allí donde ustedes no podrían haber hecho crecer ni un árbol [puede equipararse a quien no es capaz de crear nada de eso]? ¿Acaso puede haber otra divinidad junto con Dios? Realmente son desviados.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmccxx{¿Acaso Quien hizo de la Tierra un lugar firme, dispuso en ella ríos, fijó montañas y puso entre los dos mares una barrera [puede equipararse a quien no es capaz de crear nada de eso]? ¿Acaso puede haber otra divinidad junto con Dios? La mayoría lo ignora.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmccxxi{¿Acaso Quien responde al afligido cuando Lo invoca, alivia los pesares y los ha hecho a ustedes los responsables de la Tierra [puede equipararse a quien no es capaz de hacer nada de eso]? ¿Acaso puede haber otra divinidad junto con Dios? Pocos son los que reflexionan.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmccxxii{¿Acaso Quien los guía en la oscuridad [de la noche] por la tierra y el mar, y envía los vientos que traen las lluvias como una misericordia [puede compararse a quien no es capaz de hacer nada de eso]? ¿Acaso puede haber otra divinidad junto con Dios? Dios está por encima de [los ídolos] que Le asocian.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmccxxiii{¿Acaso Quien origina la creación y luego la reproduce, y Quien los sustenta [con las gracias] del cielo y de la Tierra [puede equipararse a quien no es capaz de hacer nada de eso]? ¿Acaso puede haber otra divinidad junto con Dios? Di: ``Presenten sus pruebas, si es verdad lo que dicen".\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmccxxiv{Di: ``Nadie en los cielos ni en la Tierra conoce lo oculto salvo Dios. No saben siquiera cuándo serán resucitados.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmccxxv{Su conocimiento no alcanza a comprender la realidad de la otra vida, algunos incluso dudan de su existencia y son ciegos sobre ella.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmccxxvi{Los que se niegan a creer dicen: ``¿Acaso cuando seamos polvo, nosotros y nuestros padres, seremos resucitados?".\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmccxxvii{Eso ya se nos había prometido anteriormente, a nosotros y a nuestros padres. No es más que una fábula de los ancestros".\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmccxxviii{Di: ``Viajen por el mundo y observen cuál fue el final de los que han hecho el mal".\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmccxxix{No te entristezcas por ellos ni te angusties por lo que traman contra ti.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmccxxx{Ellos dicen: ``¿Cuándo se cumplirá tu advertencia? [Te desafiamos] Si es que dices la verdad".\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmccxxxi{Diles: ``Puede ser que sea muy pronto, que esté detrás de ustedes algo de lo que piden que suceda pronto".\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmccxxxii{Tu Señor concede Sus gracias a la gente, pero la mayoría no agradece.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmccxxxiii{Tu Señor conoce lo que esconden sus corazones y lo que manifiestan.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmccxxxiv{Todo lo que está oculto [al conocimiento de las personas] en el cielo y en la Tierra se encuentra registrado en un libro claro.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmccxxxv{El Corán les relata a los Hijos de Israel [la respuesta] a gran parte de los asuntos sobre los que discrepaban.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmccxxxvi{[El Corán] es guía y misericordia para los creyentes.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmccxxxvii{Tu Señor juzgará entre ellos con justicia. Él es el Poderoso, el que todo lo sabe.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmccxxxviii{Encomiéndate a Dios, que tú estás en la verdad evidente.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmccxxxix{Tú no puedes hacer que los muertos [de corazón] oigan ni que los sordos [que no quieren oír] escuchen la prédica cuando rechazan la Verdad.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmccxl{Ni puedes guiar a los ciegos [que no quieren ver] y sacarlos de su extravío. Tú solo puedes hacer que escuchen quienes creen en Mis signos y se someten a Dios [siendo musulmanes].\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmccxli{Cuando ocurra lo que ha sido decretado para ellos, haré salir de la Tierra una bestia que les hablará [milagrosamente diciéndoles] que la gente no estaba convencida de Mis signos.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmccxlii{El día que reúna, de cada nación, a quienes desmentían Mis signos, marcharán uno detrás del otro.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmccxliii{Al llegar [al lugar del juicio, Dios] les dirá: ``Desmintieron Mis signos sin siquiera conocerlos", [y se les preguntará:] ``¿Cuáles fueron sus obras?"\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmccxliv{Luego los azotará el castigo que había sido prometido por haber cometido injusticias, y no podrán decir una sola palabra [para excusarse].\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmccxlv{¿Acaso no ven que he creado la noche para que descansen y el día para que procuren el sustento? En eso hay signos para quienes creen.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmccxlvi{El día que se sople la trompeta se aterrorizarán todos aquellos que estén en los cielos y en la Tierra, salvo quienes Dios proteja. Todos se presentarán sumisos ante Él.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmccxlvii{Verán las montañas, las cuales creían firmes, pasar como lo hacen las nubes. Esto es obra de Dios, Quien ha hecho todo a la perfección. Él conoce lo que hacen.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmccxlviii{Quien se presente con buenas obras será recompensado con algo mejor [que lo que merezca], y estará a salvo del terror de ese día.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmccxlix{Pero quien se presente con obras malas será arrojado de cara al Fuego. [Se le dirá:] ``¿Acaso se les retribuye por algo distinto de lo que habían cometido?"\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmccl{[Diles, oh, Mujámmad:] ``Me ha sido ordenado adorar al Señor de esta ciudad [La Meca], a la que ha declarado sagrada; el Señor de todas las cosas. Me ha sido ordenado ser de los musulmanes [que someten a Dios su voluntad].\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmccli{[Se me ha ordenado] recitar el Corán. Quien siga la guía lo hará en beneficio propio, y a quien se extravíe dile: ``Yo solo he venido a advertirles…".\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmcclii{Di: ``¡Alabado sea Dios! Él les mostrará Sus signos y los reconocerán. [Sepan que] Su Señor no está desatento de lo que hacen".\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmccliii{\basmalahes Ta’. Sin. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmccliv{Éstos son los preceptos del Libro claro.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcclv{Te narro parte de la verdadera historia de Moisés y del Faraón, para la gente que cree.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcclvi{El Faraón fue un tirano en la Tierra. Dividió a sus habitantes en clases y esclavizó a un grupo de ellos, a cuyos hijos varones degolló, dejando con vida a las mujeres [para la servidumbre]. Sembró la corrupción.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcclvii{Quise agraciar a quienes habían sido esclavizados en la Tierra, y convertirlos en líderes ejemplares y en herederos,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcclviii{dándoles poder sobre la tierra, y hacer que el Faraón, Hamán y sus huestes vieran [hecho realidad] lo que temían.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcclix{Inspiré a la madre de Moisés: ``Amamántalo, y cuando temas por él déjalo [en un cesto de mimbre] en el río. No temas ni te entristezcas, porque te lo devolveré y lo haré un Mensajero".\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcclx{Lo recogió la gente del Faraón para que [sin saberlo] se convirtiera en su enemigo y la causa de su pesar. El Faraón, Hamán y sus huestes eran pecadores.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcclxi{Dijo la mujer del Faraón: ``[Este niño] será una alegría para mis ojos y los tuyos. No lo mates. Puede que nos beneficie. ¡Adoptémoslo!" Ellos no presentían [en qué se convertiría].\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcclxii{La madre de Moisés sintió un vacío en su corazón y estuvo a punto de revelar la verdad, de no haber sido porque afiancé su corazón para que fuera una verdadera creyente.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcclxiii{Le dijo [la madre] a la hermana [de Moisés]: ``Sigue sus rastros"; ella lo veía de lejos sin que se dieran cuenta.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcclxiv{No permití que ninguna nodriza pudiera amamantarlo. Dijo [la hermana de Moisés]: ``¿Acaso quieren que les indique una familia que puede cuidarlo y criarlo bien?"\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcclxv{Así se lo devolví a su madre [como nodriza] para consuelo de sus ojos, para que no se entristeciera y supiera que la promesa de Dios siempre se cumple, aunque la mayoría [de la gente] lo ignore.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcclxvi{Cuando se convirtió en adulto y tuvo madurez, le concedí conocimiento y sabiduría. Así es como retribuyo a quienes hacen el bien.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcclxvii{[Moisés] ingresó cierta vez a la ciudad sin que sus habitantes se percataran y encontró a dos hombres que peleaban, uno era de los suyos y el otro era de sus enemigos. El que era de los suyos le pidió ayuda contra el que era de sus enemigos. Entonces Moisés lo golpeó con su puño y [sin intención de hacerlo] le causó la muerte. Exclamó [Moisés]: ``Esto es obra del demonio, que es un enemigo evidente que pretende desviar a la gente".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcclxviii{Dijo: ``¡Señor mío! He sido injusto conmigo mismo; perdóname". Y [Dios] lo perdonó, porque Él es Absolvedor, Misericordioso.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcclxix{Dijo: ``¡Señor mío! Por la gracia que me has concedido, que no sea yo auxiliador de un malhechor criminal".\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcclxx{A la mañana siguiente amaneció temeroso y cauteloso, y quien le había pedido ayuda el día anterior nuevamente le pedía auxilio a gritos. Entonces Moisés le dijo: ``No cabe duda que eres un perdido [busca pleitos]".\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcclxxi{Cuando [Moisés] quiso agredir al enemigo de ambos, éste le dijo: ``¡Oh, Moisés! ¿Acaso pretendes matarme como lo hiciste con otro ayer? Solo quieres imponer tu tiranía en la tierra, en lugar de ser de aquellos que establecen el orden".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcclxxii{Entonces, un hombre que vivía en las afueras de la ciudad se dirigió presuroso [hacia donde Moisés] y le dijo: ``¡Oh, Moisés! La nobleza se confabuló para matarte. ¡Huye! Yo solo te aconsejo".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcclxxiii{Presuroso, Moisés se alejó de la ciudad con temor y cautela, diciendo: ``¡Señor mío! Protégeme de los opresores".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcclxxiv{Y cuando se encontraba camino a Madián dijo: ``¡Pueda que mi Señor me guie por el camino correcto!"\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcclxxv{Cuando llegó a la aguada de Madián, encontró pastores dando de beber a sus rebaños, y vio que apartadas de ellos había dos mujeres que sujetaban a sus rebaños, entonces les preguntó: ``¿Qué les sucede?" Respondieron [ellas]: ``No podemos abrevar a nuestro rebaño hasta que los pastores se hayan ido, y nuestro padre es ya un anciano [para hacerlo él]".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcclxxvi{Entonces [Moisés] abrevó al rebaño por ellas, y al terminar se retiró a la sombra y exclamó: ``¡Señor mío! Realmente necesito cualquier gracia que me concedas".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcclxxvii{[Más tarde,] una de ellas regresó y acercándose a él con recato le dijo: ``Mi padre te envía una invitación para retribuirte por haber abrevado nuestro rebaño". Y cuando se presentó ante él, le relató su historia, y [el padre de las dos mujeres] le dijo: ``No temas, [aquí] estás a salvo de los opresores".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcclxxviii{Una de ellas dijo: ``¡Oh, padre! Contrátalo, pues qué mejor que contratar a un hombre fuerte y honesto".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcclxxix{Dijo [el padre de las dos mujeres a Moisés]: ``Quisiera ofrecerte en matrimonio a una de mis dos hijas a condición de que trabajes con nosotros durante ocho años, pero si deseas quedarte diez será algo que tú hagas voluntariamente. No pretendo dificultarte las cosas, y me encontrarás, si Dios quiere, entre los que tratan con justicia [a sus empleados]".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcclxxx{Dijo [Moisés]: ``Eso es [un acuerdo] entre tú y yo. Cualquiera que sea el plazo que cumpla no será injusto conmigo, y Dios es testigo de lo que decimos".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxi{Cuando Moisés hubo cumplido el plazo, partió con su familia por la noche [rumbo a Egipto] y [en el camino] divisó un fuego en la ladera de un monte y le dijo a su familia: ``Permanezcan aquí, pues he divisado un fuego y quizás pueda traerles alguna noticia [del camino que debemos seguir], o bien una brasa encendida para que podamos calentarnos".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxii{Cuando llegó hasta el fuego escuchó un llamado que provenía desde un árbol que se encontraba en la ladera derecha del valle, en el lugar bendecido: ``¡Oh, Moisés! Yo soy Dios, el Señor del Universo.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxiii{Arroja tu vara". Y cuando la vio moverse como si fuera una serpiente, se dio vuelta para huir sin mirar atrás. [Le dijo Dios:] ``¡Oh, Moisés! Acércate y no temas. Tú eres de los que están a salvo.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxiv{Introduce tu mano por el cuello de tu túnica, y saldrá blanca y resplandeciente, sin ningún mal; y aprieta tu brazo junto al pecho para vencer el temor. Éstos son dos milagros de tu Señor para [que vean y crean] el Faraón y su nobleza. Ellos son un pueblo corrupto".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxv{Dijo [Moisés]: ``¡Señor mío! He matado a un hombre de los suyos y temo que me ejecuten.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxvi{Mi hermano Aarón es más elocuente que yo, envíalo conmigo para que me ayude y confirme lo que yo diga, pues temo que me desmientan".\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxvii{Dijo [Dios]: ``Te reforzaré con tu hermano y les daré autoridad. No podrán hacerles daño. Gracias a Mis milagros, ustedes dos y quienes los sigan serán los triunfadores".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxviii{Pero cuando Moisés se presentó con Mis signos evidentes, dijeron: ``Esto no es sino una ilusión creada por hechicería. No hemos oído hablar de esto a nuestros ancestros".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmcclxxxix{Dijo Moisés: ``Mi Señor sabe mejor que nadie quién ha venido con la guía que proviene de Él y quién triunfará en la otra vida. Los que cometen injusticias no prosperarán".\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmccxc{Dijo el Faraón: ``¡Oh, corte! No conozco otra divinidad que no sea yo mismo. ¡Oh, Hamán! Enciende el horno para cocer ladrillos de barro, y construyan para mí una torre para que quizás así pueda ver al dios de Moisés, aunque creo que es un mentiroso".\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmccxci{El Faraón y sus huestes tiranizaron el país violando todos los derechos, pensando que no iban a tener que comparecer ante Mí.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmccxcii{Pero los sorprendí, al Faraón y a sus huestes, y los ahogué en el mar. Observa cuál fue el final de los que cometían injusticias.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmccxciii{Hice que ellos [en esta vida] fueran líderes, pero conducían [a la gente al] Infierno. El Día de la Resurrección no serán socorridos.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmccxciv{Por eso decreté que en esta vida fueran maldecidos, y que en el Día de la Resurrección sean de los apartados de todo bien.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmccxcv{Le he revelado a Moisés el Libro [la Tora] después de haber destruido a las anteriores generaciones [de opresores]. En él hay luz, guía y misericordia para que reflexionen.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmccxcvi{Y tú [¡oh, Mujámmad!] no estabas en la ladera occidental [del monte Sinaí] cuando ordené la misión de Moisés, ni fuiste testigo de ello.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmccxcvii{Pero hice surgir otras generaciones que tuvieron larga vida. Tú no viviste [¡oh, Mujámmad!] entre la gente de Madián para transmitirles Mi Mensaje, sino que te he designado Mensajero [para toda la humanidad].\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmccxcviii{No estabas en la ladera del monte cuando llamé [a Moisés, y te lo revelo] como una misericordia para que adviertas a tu pueblo, al que no se le había presentado ningún Profeta para advertirles antes de ti. Quizás así reflexionen.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmccxcix{Para que no digan cuando les acontezca una desgracia, a causa de las acciones malas que hicieron con sus propias manos: ``¡Señor nuestro! Si nos hubieras mandado un Mensajero, habríamos acatado Tus órdenes y nos hubiéramos contado entre los creyentes".\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmccc{Sin embargo, cuando les llegó la Verdad proveniente de Mí dijeron: ``¿Por qué no se le han dado [a Mujámmad] las mismas evidencias que a Moisés?" Pero, ¿acaso no habían rechazado ya lo que anteriormente se le había concedido a Moisés? Dijeron: ``Son dos clases de hechiceros confabulados y no les creemos a ninguno de los dos".\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmccci{Diles [¡oh, Mujámmad!]: ``Traigan un libro proveniente de Dios que sea una guía mejor que estos dos y yo lo seguiré, si es que dicen la verdad.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmcccii{Pero si aun así no responden [a tu llamado], sabe que no hacen más que seguir sus propias pasiones. ¿Acaso existe alguien más extraviado que quien sigue sus pasiones sin ninguna guía de Dios? Dios no guía a la gente que comete injusticias.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmccciii{Les he revelado la palabra para que reflexionen.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmccciv{Quienes recibieron Mi revelación antes de él, creyeron en él.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmcccv{Cuando se les recita [el Corán] dicen: ``Creemos en él; es la Verdad que proviene de nuestro Señor. Antes de escucharlo ya éramos musulmanes [sometidos a Dios]".\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmcccvi{Ellos recibirán su recompensa dos veces por haber sido perseverantes, haber respondido el mal con bien, y haber dado en caridad parte de lo que les había proveído,\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmcccvii{y cuando oían conversaciones frívolas se apartaban de ellas y exclamaban: ``Nosotros responderemos por nuestras acciones y ustedes por las suyas. ¡Que la paz sea con ustedes! No deseamos tratar con los ignorantes [de corazón]".\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmcccviii{Tú no puedes guiar a quien amas, sino que Dios guía a quien Él quiere. Él sabe quiénes seguirán la guía.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmcccix{Dicen: ``Si seguimos la guía que has traído, seremos expulsados de nuestra tierra". ¿Acaso no les he preparado un lugar sagrado y seguro, al cual llegan frutos de todas clases como sustento Mío? Pero la mayoría no sabe.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmcccx{¡Cuántos pueblos destruí porque no agradecían el favor en que vivían! Observen sus viviendas: no volvieron a ser habitadas después de ellos, salvo brevemente. Yo fui Quien las heredó.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmcccxi{Tu Señor no destruiría un pueblo sin antes enviar un Mensajero a su ciudad principal para que les trasmita Su Mensaje. Solo haría sucumbir un pueblo si ellos cometen injusticias.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmcccxii{Todo aquello que se les ha concedido no es más que el simple goce de la vida mundanal y sus encantos. Pero la gracia que Dios tiene [reservada para los piadosos] es mejor y más duradera. ¿Acaso no razonan?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmcccxiii{¿Acaso aquel a quien le he prometido una bella promesa [el Paraíso] que verá realizada, puede compararse a quien solo le he concedido el goce de la vida mundanal y el Día de la Resurrección será de los condenados [al tormento del Infierno]?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmcccxiv{El día que [Dios] los convoque y les pregunte: ``¿Dónde están los ‘socios’ que Me atribuían?"\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmcccxv{Dirán los [‘socios’] sentenciados [al Infierno]: ``¡Señor nuestro! Éstos son los que desviamos. Los desviamos porque nosotros estábamos desviados. No somos responsables por sus actos, no era a nosotros a quienes adoraban".\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmcccxvi{Se les dirá [a los idólatras]: ``Invoquen a quienes Me asociaban [para que los auxilien]". Los invocarán, pero no habrá respuesta, y verán acercarse el castigo. ¡Si tan solo hubieran seguido la guía!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmcccxvii{El día que [Dios] los convoque y les pregunte: ``¿Cuál fue su respuesta al llamado de los Mensajeros?"\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmcccxviii{Ese día no sabrán qué argumentar ni podrán preguntarse unos a otros [qué responder].\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmcccxix{Pero quien se haya arrepentido, haya creído y hecho obras de bien, se contará entre quienes tendrán éxito.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmcccxx{Tu Señor es Quien crea y elige hacer lo que quiere, y la elección que Él hace no se somete a la opinión de nadie. ¡Glorificado sea Dios! Está por encima de lo que Le asocian.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmcccxxi{Tu Señor conoce lo que ocultan y lo que manifiestan sus corazones.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmcccxxii{Él es Al-lah, no hay más divinidad que Él. A Dios pertenecen las alabanzas en esta vida y en la otra. Suyo es el juicio, y ante Él comparecerán [el Día del Juicio].\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmcccxxiii{Di [a los que niegan el monoteísmo]: ``¿Si Dios hiciera que la noche durara hasta el Día de la Resurrección, quién sino Dios podría traerles la luz del día? ¿Acaso no van a escuchar [este argumento]?"\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmcccxxiv{Di: ``¿Si Dios hiciera que el día durara hasta el Día de la Resurrección, quién sino Dios podría traerles la oscuridad de la noche para que pudieran descansar? ¿Acaso no van a observar [este argumento]?"\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmcccxxv{Por misericordia fue Dios que creó la noche y el día para que ustedes pudieran descansar [durante la noche] y procurar [durante el día] Su favor. Deberían ser agradecidos.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmcccxxvi{El día que [Dios] los convoque y les pregunte: ``¿Dónde están los ‘socios’ que Me atribuían?"\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmcccxxvii{Cuando extraiga de cada pueblo un testigo y les diga: ``Presenten los fundamentos [de su idolatría]". Entonces, sabrán que la Verdad solo pertenece a Dios, y todo aquello que inventaron desaparecerá.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmcccxxviii{Qarún pertenecía al pueblo de Moisés, pero abusó de ellos. Le había concedido tantos tesoros, que hasta las llaves [de los cofres donde se guardaban] resultaban pesadas para un grupo de hombres fuertes. Pero su pueblo le dijo: ``No te jactes [de lo que tienes] porque Dios no ama a los arrogantes.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmcccxxix{Gánate el Paraíso con lo que Dios te ha concedido, y no te olvides que también puedes disfrutar de lo que Dios ha hecho lícito en esta vida. Sé generoso [con tu prójimo] como Dios lo es contigo, y no contamines la tierra; Dios no ama a los que contaminan [a sabiendas]".\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmcccxxx{Dijo [Qarún con soberbia]: ``Lo que se me ha concedido es gracias a mi conocimiento". ¿Acaso no sabía que Dios ya había destruido naciones más poderosas y con más riquezas que él? [Debido a lo terrible de sus faltas,] a los perversos no se les preguntará por sus pecados.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxi{[Cierto día, Qarún] se presentó ante su pueblo con todo su lujo, y quienes amaban la vida mundanal exclamaron: ``¡Ojalá tuviéramos lo mismo que Qarún! Él tuvo mucha suerte".\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxii{Pero quienes fueron agraciados con el conocimiento dijeron: ``¡Ay de ustedes! La recompensa de Dios para quien crea y haga obras de bien es superior, pero no la consiguen sino los que son pacientes".\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxiii{Hice que la tierra se tragara a Qarún y a su palacio, y no hubo nadie que pudiera socorrerlo, ni siquiera pudo salvarse a sí mismo.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxiv{Quienes antes habían deseado estar en su lugar comenzaron a decir: ``Dios le concede un sustento abundante a quien quiere y se lo restringe [a quien Él quiere] de Sus siervos. De no haber sido porque Dios nos agració con Su misericordia, nos hubiera tragado la tierra también a nosotros. Es muy cierto que quienes niegan la verdad nunca prosperan".\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxv{La morada de la otra vida [en el Paraíso] es para quienes no son soberbios ni siembran la corrupción en la Tierra. ¡Bienaventurados sean los piadosos!\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxvi{[El Día del Juicio Final,] quien se presente habiendo realizado obras buenas será recompensado más de lo merecido por ellas, pero quien se presente habiendo realizado obras malas solo será retribuido por lo que hizo.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxvii{[Oh, Mujámmad,] Quien te ha ordenado el Corán, te hará regresar de la muerte a un lugar establecido [el Día del Juicio]. Diles: ``Mi Señor sabe mejor que nadie quién sigue la guía y quién está en un claro desvío".\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxviii{Tú no esperabas que fuera a serte revelado un Libro, pero por misericordia de tu Señor [te reveló el Corán]. No apoyes [contra los creyentes] a aquellos que se niegan a creer.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmcccxxxix{No dejes que te aparten de los preceptos de Dios después de haberte sido revelados. Exhorta [a la gente] a adorar a tu Señor y no seas de los que Le asocian [divinidades en la adoración].\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmcccxl{No invoques a nada ni nadie junto con Dios. Nadie tiene derecho a ser adorado salvo Él. Todo ha de perecer excepto Su rostro. Suyo es el juicio y ante Él comparecerán.\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmcccxli{\basmalahes Álif. Lam. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcccxlii{¿Acaso piensa la gente que se los dejará decir: ``¡Creemos!", y no van a ser puestos a prueba?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcccxliii{Puse a prueba a quienes los precedieron, para que Dios hiciera evidente quiénes son los sinceros y quiénes los mentirosos.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcccxliv{¿Acaso piensan quienes obran mal que podrán escapar de Mí? ¡Qué mal juzgan!\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcccxlv{Quien anhele el encuentro con Dios sepa que el día que Dios fijó ha de llegar. Él todo lo oye, todo lo sabe.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcccxlvi{Quien luche [contra sus pasiones] será en beneficio propio. Dios no tiene necesidad de las cosas creadas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcccxlvii{A quienes crean y hagan buenas obras les perdonaré sus faltas y los recompensaré por lo mejor de sus actos.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcccxlviii{Le he ordenado al ser humano hacer el bien a sus padres. Pero si se esfuerzan por hacer que caigas en la idolatría de dedicar actos de adoración a otro que a Mí, lo cual es algo que no te he enseñado, no les debes obediencia. Ante Mí has de comparecer y te informaré lo que hacías.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcccxlix{A quienes hayan creído y hecho obras de bien los introduciré [al Paraíso] junto a los que obran con justicia.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcccl{Entre la gente hay quienes dicen: ``¡Creemos en Dios!"; pero cuando sufren algún perjuicio por la causa de Dios, consideran que la opresión de los hombres es un castigo de Dios [y reniegan de su fe]. En cambio, cuando tu Señor les concede un triunfo, dicen: ``¡Siempre hemos estado con ustedes!" ¿Acaso no es Dios Quien mejor sabe lo que hay en los corazones de la gente?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcccli{Dios hará evidente quiénes son los que creen y quiénes son los hipócritas.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmccclii{Los que se niegan a creer dicen a los creyentes: ``Sigan nuestra fe y nosotros cargaremos con sus pecados". Pero ellos no pueden aligerar la carga de los pecados ajenos, son solo mentirosos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcccliii{Ellos no solo cargarán con sus propios pecados, sino también con los pecados que comentan aquellos que ellos extraviaron. El Día de la Resurrección se les preguntará acerca de las mentiras que inventaban.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcccliv{Envié a Noé a su pueblo y permaneció entre ellos mil años menos cincuenta. Los sorprendió el diluvio mientras cometían injusticias.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmccclv{Salvé [a Noé] y a quienes estaban en el arca. Hice de ella un signo para los universos.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmccclvi{[Recuerda] a Abraham cuando le dijo a su pueblo: ``Adoren [solo] a Dios y tengan temor de Él, eso es lo mejor para ustedes, si supieran.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmccclvii{Lo que adoran en lugar de Dios son solo ídolos que ustedes mismos crean falsamente. Lo que adoran en lugar de Dios no puede proveerles ningún sustento. Así que supliquen a Dios el sustento, adórenle solo a Él y agradézcanle. Porque es ante Él que comparecerán.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmccclviii{Pero si [me] desmienten, ya lo hicieron otras naciones antes que ustedes. El Mensajero solo tiene la obligación de transmitir [el Mensaje] con claridad.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmccclix{¿Acaso no ven cómo Dios origina la creación y luego la reproduce? Eso es fácil para Dios."\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmccclx{Diles [a quienes niegan la Resurrección]: ``Viajen por el mundo y observen cómo [Dios] originó la creación. Luego, Dios la hará surgir nuevamente [el Día de la Resurrección]. Dios es sobre toda cosa Poderoso.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmccclxi{Castiga a quien Él quiere y se apiada de quien Él quiere. Ante Él serán retornados.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmccclxii{No podrán escapar de Dios ni en la Tierra ni en el cielo. No encontrarán fuera de Él quién los proteja ni los auxilie.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmccclxiii{Quienes no crean en los signos de Dios y en el encuentro con Él, esos son los que no tienen esperanza en Mi misericordia, tendrán un castigo doloroso.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmccclxiv{[Recuerda que] la respuesta del pueblo de Abraham fue decir: ``Mátenlo o quémenlo", pero Dios lo salvó de la hoguera [en la que quisieron quemarlo]. En eso hay signos para gente que cree.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmccclxv{Les dijo [Abraham]: ``Adoran ídolos en vez de adorar a Dios por mantener el lazo de afecto entre ustedes y sus antepasados en esta vida. Pero el Día de la Resurrección renegarán unos de otros y se maldecirán mutuamente. Su morada será el Fuego y no tendrán quién los auxilie".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmccclxvi{Lot creyó en Abraham, quien [al ver que su pueblo no creía en él] dijo: ``Emigraré a donde [me ordene] mi Señor, porque Él es el Poderoso, el Sabio".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmccclxvii{Lo agracié con Isaac y Jacob, e hice surgir Profetas de su descendencia, a los cuales revelé Mis Libros. Le di [a Abraham] su recompensa en esta vida, y en la otra estará entre los justos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmccclxviii{[Recuerda] cuando Lot dijo a su pueblo: ``Cometen una inmoralidad que no tiene precedente en el universo.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmccclxix{¿Tienen relaciones homosexuales con hombres, asaltan a los viajeros y cometen toda clase de actos reprobables en sus reuniones?" Pero la respuesta de su pueblo fue: ``Envíanos el castigo de Dios, si es que dices la verdad".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmccclxx{Dijo [Lot]: ``¡Señor mío! Sálvame de este pueblo corrupto".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmccclxxi{Cuando Mis [ángeles] emisarios se presentaron ante Abraham para albriciarle [el nacimiento de su hijo], dijeron: ``Destruiremos a la población de esa ciudad, porque su gente comete injusticias".\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmccclxxii{Dijo [Abraham]: ``Pero Lot está allí". Respondieron [los ángeles]: ``Nosotros conocemos mejor [que tú] quién está en ella. Lo salvaremos a él y a su familia, excepto a su mujer, que se contará entre los condenados".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmccclxxiii{Cuando Mis emisarios se presentaron ante Lot, este [pensando que eran viajeros] se intranquilizó [por lo que su pueblo pudiera hacerles] y se apenó, pero ellos le dijeron: ``No temas ni te apenes; te salvaremos a ti y a tu familia, excepto a tu mujer, que se contará entre los condenados.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmccclxxiv{Haremos descender sobre la población de esta ciudad un castigo del cielo por haberse pervertido".\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmccclxxv{Dejé [vestigios] de ella como un signo claro, para que reflexionaran.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmccclxxvi{[Recuerda que] a Madián [le envié] a su hermano Jetró [como Profeta], quien les dijo: ``¡Oh, pueblo mío! Adoren solo a Dios y tengan esperanza en el Día del Juicio final, y no obren mal en la Tierra, sembrando corrupción".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmccclxxvii{Pero lo desmintieron y fueron sorprendidos por un sismo estrepitoso, y amanecieron caídos de bruces [muertos] en sus propias casas.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmccclxxviii{[Recuerda que] al pueblo de ‘Ad y Zamud [también los aniquilé], como pueden ver claramente en [lo que queda de] sus casas. El demonio les hizo ver como buenas sus malas obras, y los apartó del sendero [recto], a pesar de que eran gente con percepción.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmccclxxix{[Recuerda] a Qarún, al Faraón y a Hamán. Moisés se presentó ante ellos con las evidencias, pero actuaron con arrogancia en la tierra [de Egipto y se negaron a creer]. Sin embargo, no pudieron escapar de Mi [castigo].\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmccclxxx{A cada uno [de ellos] los aniquilé según sus pecados. A unos les envié un viento huracanado, a otros los sorprendió un estrépito, a otros hice que se los tragara la tierra, y a otros hice que se ahogaran. Dios no fue injusto con ellos, sino que ellos lo fueron consigo mismos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxi{Quienes tomaron en lugar de Dios otros protectores, son como la araña que teje su propio refugio, siendo que el refugio más frágil es la telaraña. ¡Si supieran!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxii{Dios conoce lo que ellos invocan en lugar de Él, porque Él es el Poderoso, el Sabio.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxiii{Estos son ejemplos que doy a la gente, pero solo los comprenden quienes reflexionan.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxiv{Dios creó los cielos y la Tierra con un fin justo y verdadero. En ello hay un signo para los creyentes.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxv{Recita lo que se te ha revelado del Libro y cumple con la oración, porque la oración preserva de cometer actos inmorales y reprobables. Tener presente a Dios [en el corazón durante la oración] es lo más importante. Dios sabe lo que hacen.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxvi{Debatan con la Gente del Libro con buenas maneras, excepto con aquellos que cometen injusticias. Digan: ``Creemos en lo que nos ha sido revelado a nosotros así como en lo que les fue revelado a ustedes. El Dios de ustedes y nuestro Dios es uno, y a Él entregamos nuestra voluntad [como musulmanes]".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxvii{Te he revelado el Libro [¡oh, Mujámmad!], y entre los que recibieron Mi revelación en el pasado hay quienes creen en él [el Corán], al igual que algunos de los habitantes de La Meca. Pero solo los que se niegan a creer pueden negar Mis signos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxviii{Tú no sabías leer ningún tipo de escritura cuando te fue revelado [el Corán], ni tampoco escribir con tu diestra, porque de haber sido así hubieran podido sembrar dudas los que inventan mentiras.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmccclxxxix{[El Corán] Es un conjunto de mensajes claros [grabados] en los corazones de quienes han sido agraciados con el conocimiento, y solo los injustos pueden negar Mis signos.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmcccxc{Dijeron [los que se niegan a creer]: ``¿Por qué no le han sido concedidos milagros de su Señor?" Diles [¡oh, Mujámmad!]: ``Dios es Quien dispone de los milagros, yo solo debo advertirles con claridad".\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmcccxci{¿Acaso no les es suficiente que te haya sido revelado el Libro que se les recita? En él hay misericordia y conciencia para la gente que cree.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmcccxcii{Di: ``Dios es suficiente testigo entre ustedes y yo. [Él] conoce cuanto hay en los cielos y en la Tierra. Quienes crean lo falso y rechacen a Dios serán los que pierdan".\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmcccxciii{Te piden que apresures el castigo [con el que les adviertes]. Y de no haber sido porque está predestinado, ya los hubiera azotado. Este les llegará sorpresivamente sin que lo adviertan.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmcccxciv{Te piden que apresures el castigo [con el que les adviertes]. Pero sabe que el Infierno está aguardando a los que se niegan a creer.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmcccxcv{El día que el castigo los envuelva por arriba y debajo de sus pies, [Dios] les dirá: ``Sufran las consecuencias de sus propias obras".\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmcccxcvi{¡Oh, siervos Míos que han creído! Mi tierra es amplia, adórenme solo a Mí.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmcccxcvii{Toda alma probará el sabor de la muerte, y luego ante Mí han de comparecer.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmcccxcviii{A quienes hayan creído y hecho obras de bien los alojaré en mansiones del Paraíso, bajo las cuales corren ríos, y donde morarán por toda la eternidad. ¡Qué placentera será la recompensa de los que obran [el bien],\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmcccxcix{que tuvieron paciencia y se encomendaron a su Señor!\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmcd{¡Cuántos animales existen que no almacenan sus provisiones! Pero Dios los sustenta, y asimismo a ustedes. Él todo lo oye, todo lo sabe.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmcdi{Si les preguntas [a los idólatras] quién creó los cielos y la Tierra, y sujetó al Sol y a la Luna [a una órbita], responderán: ``¡Dios!" ¿Cómo, entonces, es que se desvían [del monoteísmo]?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmcdii{Dios concede Su sustento en abundancia a quien quiere de Sus siervos y se lo restringe [a quien Él quiere]. Dios conoce todas las cosas.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmcdiii{Si les preguntas [a los idólatras] quién hace descender agua del cielo con la que da vida a la tierra muerta [por la sequía], responderán: ``¡Dios!" Di: ``¡Todas las alabanzas pertenecen a Dios!" Pero la mayoría [de la gente] no razona.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmcdiv{La vida en este mundo no es más que distracción y diversión, la vida del más allá es la vida verdadera. ¡Si supieran!\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmcdv{Cuando suben a un barco [y son azotados por una tempestad] invocan solo a Dios con sinceridad, pero cuando los pongo a salvo llevándolos a la costa, vuelven a dedicar actos de adoración a sus ídolos.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmcdvi{¡Que no agradezcan por cuanto les he concedido y que solo disfruten! ¡Ya verán [la consecuencia de su decisión]!\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmcdvii{¿Acaso no ven que he dispuesto [para ellos] un territorio sagrado y seguro, mientras que a su alrededor se cometen todo tipo de injusticias? ¿Acaso creen en la falsedad y niegan las gracias de Dios?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmcdviii{¿Quién puede ser más injusto que aquel que inventa mentiras acerca de Dios o desmiente la Verdad cuando le llega? ¿Acaso no es el Infierno el destino de los que se niegan a creer [cuando la verdad se les hace evidente]?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmcdix{A quienes se esfuercen por Mi causa los guiaré por Mis caminos. Dios está con los que hacen el bien.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmcdx{\basmalahes Álif. Lam. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcdxi{Los bizantinos fueron derrotados\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcdxii{en el territorio [árabe] más bajo, pero después de esta derrota, ellos [los bizantinos] vencerán\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcdxiii{dentro de tres a nueve años. Todo ocurre por voluntad de Dios, tanto la anterior derrota [de los bizantinos] como su victoria futura. Ese día los creyentes se alegrarán\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcdxiv{por la victoria de Dios. Él concede la victoria a quien quiere, Él es el Poderoso, el Misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcdxv{Esta es la promesa de Dios, y Dios no falta a Su promesa, pero la mayoría de la gente no lo sabe.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcdxvi{Conocen solo lo superficial de la vida mundanal, y viven despreocupados por la otra vida.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcdxvii{¿Acaso no reflexionan sobre sí mismos? Dios ha creado los cielos, la Tierra y lo que hay en ellos con un fin justo y verdadero, y con un plazo determinado. Pero mucha gente no cree que habrá de comparecer ante su Señor.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcdxviii{¿Acaso no han viajado por el mundo y visto cómo fue el final de los pueblos antiguos? Eran [imperios] más poderosos, cultivaron la tierra [en forma asombrosa] y tenían construcciones más avanzadas que las suyas. Sin embargo, cuando se les presentaron los Mensajeros con las evidencias, los desmintieron. Dios no fue injusto con ellos, sino que ellos lo fueron consigo mismos.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcdxix{Finalmente, el destino de quienes habían cometido maldades fue el peor, porque desmintieron los signos de Dios y se burlaron de ellos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcdxx{Dios origina la creación y luego la reproduce, y ante Él regresarán.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcdxxi{El día que llegue la Hora los pecadores serán presa de la desesperación.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcdxxii{Pero sus ídolos no intercederán por ellos, [y por el contrario, los ídolos] se desentenderán de quienes los adoraban.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcdxxiii{El día que llegue la Hora, ese día se dividirán [en dos grupos]:\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcdxxiv{Quienes hayan creído y obrado rectamente morarán en los jardines del deleite.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcdxxv{Pero quienes no hayan creído y hayan desmentido Mis signos y la existencia de la otra vida, sufrirán eternamente un tormento.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcdxxvi{Así que glorifiquen a Dios al anochecer y al amanecer.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcdxxvii{Él merece ser alabado en los cielos y en la Tierra, [alábenlo] por la tarde y al mediodía.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcdxxviii{[Dios] hace surgir lo vivo de lo muerto y lo muerto de lo vivo, y da vida a la tierra árida. De la misma manera serán resucitados.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcdxxix{Entre Sus signos está haberlos creado de polvo. Luego se convierten en seres humanos que se multiplican [poblando la Tierra].\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcdxxx{Entre Sus signos está haber creado cónyuges de entre ustedes para que encuentren sosiego, y dispuso entre ustedes amor y misericordia. En ello hay signos para quienes reflexionan.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxi{Entre Sus signos está la creación de los cielos y de la Tierra, la diversidad de sus lenguas y colores. En esto hay signos para quienes comprenden.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxii{Entre Sus signos está [haber creado] la noche para que descansen y el día para que procuren Su favor. En esto hay signos para un pueblo que escucha.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxiii{Entre Sus signos está hacer que el relámpago sea motivo de temor y anhelo, y el agua que hace descender del cielo para dar vida a la tierra árida. En eso hay signos para un pueblo que razona.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxiv{Entre sus Signos está que el cielo y la Tierra se sostengan por Su voluntad. Luego, cuando Él los convoque [el Día de la Resurrección] saldrán de la tierra.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxv{A Él pertenece cuanto hay en los cielos y en la Tierra, todo Le obedece.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxvi{Él es Quien origina la creación y luego la reproduce, y ello Le es aún más fácil [que crear por primera vez]. Suya es la descripción más sublime en los cielos y en la Tierra. Él es el Poderoso, el Sabio.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxvii{[Dios] les propone un ejemplo tomado de su propia vivencia: ``¿Aceptarían acaso que algunos de entre la servidumbre compartieran con ustedes los bienes que les he concedido, que [repentinamente] tuvieran partes iguales, o que tuvieran ustedes que temerles como temen a sus adversarios?" Así es como aclaro los signos para quienes razonan.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxviii{Sin embargo, los injustos siguen sus pasiones ciegamente sin basarse en conocimiento alguno. ¿Quién podría guiar a quien Dios ha extraviado? No habrá quién lo pueda socorrer.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmcdxxxix{Conságrate al monoteísmo, que es la inclinación natural con la que Dios creó a la gente. La religión de Dios es inalterable y esta es la forma de adoración verdadera, pero la mayoría de la gente lo ignora.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmcdxl{Arrepiéntanse ante Dios, tengan temor [de Dios], cumplan con la oración y no sean de los que Le atribuyen divinidades [a Dios en la adoración],\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmcdxli{no sean de esos que dividieron su religión y formaron sectas, cada facción se contenta con lo que sigue.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmcdxlii{Cuando una desgracia azota a la gente, invocan a su Señor arrepentidos. Pero cuando los agracia con Su misericordia, un grupo de ellos atribuye divinidades a su Señor [en la adoración]\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmcdxliii{y niegan cuanto les he concedido. ¡Disfruten temporalmente, que ya verán!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmcdxliv{¿Acaso les he hecho descender algún conocimiento que justifique lo que ellos Me asocian?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmcdxlv{Cuando agracio a la gente con una misericordia se alegran, pero cuando los alcanza una desgracia a causa de lo que cometieron con sus propias manos, se desesperan.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmcdxlvi{¿Acaso no ven que Dios concede abundante sustento a Quien quiere y lo restringe [a quien quiere]? En eso hay signos para quienes creen.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmcdxlvii{Da a los parientes, al pobre y al viajero insolvente, lo que es su derecho. Eso es lo mejor para quienes anhelan [contemplar] el Rostro de Dios. Esos serán quienes tengan éxito.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmcdxlviii{Todo lo que presten con algún interés, esperando beneficiarse de los bienes ajenos, no tendrá recompensa de Dios. En cambio, aquellos que den en caridad anhelando el rostro de Dios, serán quienes tengan multiplicada la recompensa.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmcdxlix{Dios es Quien los crea, los sustenta, los hace morir y luego los resucita. ¿Acaso hay alguno de los ídolos que asocian [a Dios] que pueda hacer algo de eso? ¡Glorificado sea Dios! Dios está por encima de lo que Le asocian.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmcdl{Se puede ver la devastación en la Tierra y en el mar como consecuencia de las acciones del ser humano. Han de padecer [el resultado de] lo que cometieron, quizás así recapaciten.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmcdli{Diles: ``Viajen por el mundo y observen cuál fue el final de los pueblos antiguos. La mayoría Le asociaban ídolos a Dios [en la adoración]".\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmcdlii{Conságrate al monoteísmo auténtico, antes de que llegue el día ineludible que Dios determinó. Ese día serán divididos.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmcdliii{Quienes se hayan negado a creer sufrirán las consecuencias de su incredulidad, mientras que quienes hayan obrado rectamente habrán preparado su propio terreno [en el Paraíso].\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmcdliv{Dios recompensará con Su gracia a quienes hayan creído y obrado rectamente. Él no ama a los que se niegan a creer [cuando les llega el Mensaje].\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmcdlv{Entre Sus signos están los vientos que Él envía para traerles lluvias y agraciarlos con Su misericordia, y para que naveguen los barcos con Su voluntad y puedan procurar el sustento; deberían agradecerle.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmcdlvi{Antes de ti envié Mensajeros a los pueblos, que se presentaron ante ellos con las evidencias [pero los desmintieron]. Retribuí a los pecadores con lo que merecían. Es un deber para Mí auxiliar a los creyentes.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmcdlvii{Dios es Quien envía los vientos para que estos reúnan las nubes, extendiéndolas y fragmentándolas por el cielo como Él quiere. Luego ves que la lluvia cae de entre ellas. Cuando los siervos [azotados por la sequía] reciben la lluvia, se alegran.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmcdlviii{A pesar de que antes de que descendiera [la lluvia] estaban abatidos, sin esperanzas.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmcdlix{Observa las huellas de la misericordia de Dios, cómo da vida a la tierra después de haber estado muerta por la sequía. Él es Quien resucitará a los muertos, porque es sobre toda cosa Poderoso.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmcdlx{Pero si [en su lugar] les hubiese enviado un viento que secara sus sembrados, se volverían ingratos como incrédulos.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmcdlxi{Tú no puedes hacer que los muertos oigan ni que los sordos [que no quiere oír] escuchen la prédica si la rechazan dándole la espalda.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmcdlxii{Tampoco puedes guiar a los ciegos [de corazón] que están extraviados. Tú solo puedes hacer que escuchen quienes creen en Mis signos y se someten a Dios [siendo musulmanes].\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmcdlxiii{Dios es Quien los crea débiles [en la infancia], luego los fortalece [en la juventud], y finalmente los debilita nuevamente con la vejez. Él crea lo que quiere porque es el Sabio, el Poderoso.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmcdlxiv{El día que llegue la Hora [del Día del Juicio], los pecadores jurarán haber permanecido en la vida mundanal tan solo una hora. Así solían engañarse.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmcdlxv{Pero aquellos a los que se les concedió el conocimiento y la fe les dirán: ``En realidad han permanecido el tiempo que Dios decretó hasta el Día de la Resurrección. Sepan que este es el Día de la Resurrección, que ignoraban".\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmcdlxvi{Ese día, ninguna excusa servirá a los injustos y no se les dará ninguna posibilidad [de volver a la vida mundanal].\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmcdlxvii{He citado en este Corán todo tipo de ejemplos. Pero aún si te hubieras presentado ante ellos con un milagro, hubieran dicho: ``Solo son unos farsantes".\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmcdlxviii{Así es como Dios sella los corazones de los que no quieren conocer [la verdad].\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmcdlxix{Ten paciencia, que lo que Dios promete se cumple, y no permitas que te hagan flaquear los que no están convencidos [de la Resurrección].\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmcdlxx{\basmalahes Álif. Lam. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxi{Estos son los versículos de un Libro sabio,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxii{que es guía y misericordia para quienes hacen el bien.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxiii{[Los que hacen el bien son aquellos que] hacen la oración, pagan el zakat y tienen certeza de la existencia de la otra vida.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxiv{Esos son quienes siguen la guía de su Señor y serán los bienaventurados.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxv{Entre la gente hay quienes se dedican, sin conocimiento [ni argumentos] a promover palabras vanas con el propósito de desviar a los demás del sendero de Dios, y se burlan [de la palabra de Dios]. Ellos tendrán un castigo humillante.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxvi{Cuando se les recitan Mis versículos les dan la espalda con soberbia, como si fueran sordos y no las hubieran oído. Anúnciales [¡oh, Mujámmad!] un castigo doloroso.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxvii{En cambio, quienes crean y hagan obras de bien serán recompensados con los Jardines de las Delicias.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxviii{Morarán en ellos por toda la eternidad. La promesa de Dios siempre se cumple. Él es el Poderoso, el Sabio.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxix{[Dios] creó los cielos sin columnas visibles, afirmó la Tierra con montañas para proporcionarles un lugar estable que no se sacuda [con temblores], diseminó en ella toda clase de animales, e hizo descender del cielo la lluvia para que brote generosamente toda clase de vegetación.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxx{Esa es la creación de Dios, muéstrenme qué han creado sus dioses. Los injustos [que adoran a otros en lugar de Dios] están en un claro extravío.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxi{Agracié a Luqmán con la sabiduría [y le dije]: ``Sé agradecido con Dios, pues quien agradece lo hace en beneficio propio, mientras que el ingrato debe saber que Dios no precisa del agradecimiento [de las personas] y es digno de toda alabanza".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxii{[Recuerda] cuando Luqmán exhortó a su hijo diciéndole: ``¡Oh, hijito! No dediques actos de adoración a otro que Dios, pues la idolatría es una gran injusticia".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxiii{Le he ordenado al ser humano hacer el bien a sus padres. Su madre lo lleva [en el vientre] soportando molestia tras molestia, y su destete es a los dos años. Sean agradecidos conmigo y con sus padres, pero sepan que ante Mí comparecerán al final.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxiv{Si tus padres se esfuerzan por hacer que caigas en la idolatría de dedicar actos de adoración a otro que Dios, lo cual es algo que no te he enseñado, no los obedezcan pero trátenlos con respeto. Sigan el camino de los piadosos, pues ante Mí comparecerán y les informaré de lo que hacían.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxv{``¡Oh, hijito! Sabe que aunque una mala acción fuera del peso de un grano de mostaza, y estuviera escondida bajo una roca o en [algún otro lugar de] los cielos o de la Tierra, Dios la sacará a la luz [y les preguntará por ella]. Dios es Sutil, y está bien informado de lo que hacen.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxvi{¡Oh, hijito! Haz la oración, ordena el bien y condena el mal, y sé paciente ante la adversidad, porque esas son cualidades de la entereza.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxvii{No rechaces a la gente y no andes por la Tierra como un arrogante. Dios no ama a los presumidos ni a los engreídos.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxviii{Sé modesto en tu andar y habla sereno, que el ruido más desagradable es el rebuzno del asno".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcdlxxxix{¿Acaso no ven que Dios puso al servicio de ustedes cuanto hay en los cielos y en la Tierra, y los colmó de Sus bendiciones, algunas de las cuales ven y otras no? A pesar de esto, entre la gente hay quienes discuten acerca de Dios sin conocimiento, guía ni libro revelado.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcdxc{[A estos] cuando se les dice: ``Sigan lo que Dios ha revelado", responden: ``Nosotros seguimos la tradición de nuestros padres". ¿[La seguirían] Incluso si el demonio los arrastrara al castigo del Infierno?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcdxci{Quien entregue su voluntad a Dios y haga obras de bien, se habrá aferrado al asidero más firme. Todo vuelve a Dios para ser juzgado.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcdxcii{No sientas pena por la incredulidad de los que se niegan a creer, ellos comparecerán ante Mí y les informaré lo que cometieron. Dios conoce lo que esconden los corazones.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcdxciii{Los dejaré que gocen un tiempo breve y luego los llevaré a un castigo riguroso.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcdxciv{Si les preguntas [a los idólatras]: ``¿Quién creó los cielos y la Tierra?" Responderán: ``¡Dios!" Diles: ``¡Alabado sea Dios!" Pero la mayoría de la gente lo ignora.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcdxcv{A Dios pertenece cuanto existe en los cielos y en la Tierra, y Él es el Opulento, el digno de alabanza.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcdxcvi{Si todos los árboles que hay sobre la Tierra se convirtieran en plumas [para escribir] y el mar junto a otros siete mares se convirtieran en tinta, no bastarían para escribir las Palabras de Dios. Dios es Poderoso, Sabio.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcdxcvii{La creación de todos ustedes y su resurrección es [tan fácil para Dios] como si fuera la de un solo ser. Dios todo lo oye, todo lo ve.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcdxcviii{¿Acaso no ven que Dios inserta la noche en el día y el día en la noche, y sometió al Sol y a la Luna haciendo que cada uno recorra [su órbita] hasta un plazo prefijado? Dios está bien informado de lo que hacen.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmcdxcix{Dios es la Verdad, y todo lo que invocan fuera de Él es falso. Dios es el Sublime, el Supremo.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmd{¿Acaso no ven que los barcos navegan en el mar por la gracia de Dios? Es una muestra de Sus signos. En ello hay señales para quien es perseverante y agradecido.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdi{[Sucede que] cuando olas como montañas los envuelven [durante una tormenta en el mar], invocan a Dios y prometen adorarlo solo a Él; pero cuando [Dios] los pone a salvo llevándolos a tierra firme, algunos de ellos solo cumplen parte de su promesa. Sepan que solo niegan Mis signos los pérfidos y los ingratos.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdii{¡Oh, gente! Teman a su Señor y [teman] el día en el que ningún padre pueda cargar las faltas de su hijo y ningún hijo pueda cargar las faltas de su padre. Lo que Dios promete se cumple. Que no los seduzcan los placeres de la vida mundanal ni los engañe el Seductor [el demonio], alejándolos de Dios.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdiii{Solo Dios sabe cuándo llegará la hora [el Día del Juicio], cuándo hará descender lluvia y qué encierra el útero; nadie sabe qué le deparará el día siguiente ni en qué tierra ha de morir. Dios lo sabe todo y está bien informado de lo que ustedes hacen.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdiv{\basmalahes Álif. Lam. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdv{Este libro sin duda es una revelación del Señor del Universo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdvi{Sin embargo, dicen [los que rechazan el Mensaje]: ``Él lo ha inventado". Pero el Corán es la verdad que procede de tu Señor, para que adviertas a un pueblo al que no se le ha presentado advertidor alguno antes de ti, y así se encaminen.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdvii{Dios es Quien creó los cielos, la tierra y todo lo que existe entre ambos en seis eras, luego se estableció sobre el Trono. No tienen fuera de Él protector ni intercesor alguno. ¿Acaso no van a recapacitar?\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdviii{[Dios] decreta todos los asuntos desde el cielo a la Tierra, que luego ascienden a Él en un día que equivale a mil años de los que ustedes cuentan.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdix{Él es Quien conoce lo oculto y lo manifiesto. Él es el Poderoso, el Misericordioso,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdx{quien perfeccionó todo lo que ha creado, y comenzó la creación del ser humano del barro.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdxi{Luego hizo que su descendencia surgiera de una gota de esperma insignificante.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdxii{Luego lo forma y le insufla el espíritu. Él los ha dotado de oído, vista e intelecto, pero poco es lo que Le agradecen.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdxiii{Dicen [quienes niegan la Resurrección]: ``¿Acaso después que nos hayamos convertido en polvo, podremos ser creados nuevamente?" Ellos no creen que vayan a comparecer ante su Señor.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdxiv{Diles: ``Tomará sus almas el ángel de la muerte, que fue encargado para ello, y luego comparecerán ante su Señor".\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdxv{Y verás [¡oh, Mujámmad!] cuando los pecadores inclinen sus cabezas ante su Señor y digan: ``¡Oh, Señor nuestro! Ahora hemos oído y visto [cuál es la verdad]. Permítenos retornar a la vida mundanal para que obremos rectamente; ahora estamos convencidos".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdxvi{Si hubiera querido habría impuesto a todas las personas la guía. Pero se ha de cumplir Mi designio: ``He de llenar el Infierno de yinnes y seres humanos [que rechazaron el Mensaje].\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdxvii{Sufran [el castigo] por haber relegado su encuentro de este día, Yo también los relegaré. Sufran el castigo eterno por lo que han cometido".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdxviii{Solo creen en Mis signos quienes se prosternan cuando se les recitan [mis versículos], glorifican a su Señor y no se comportan con soberbia,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdxix{se levantan de sus lechos para invocar a su Señor con temor y anhelo [de Su respuesta], y dan en caridad parte de lo que les he proveído.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdxx{Nadie sabe la alegría que les espera [a los creyentes] como recompensa por sus obras.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdxxi{¿Acaso el creyente y el pecador son iguales? No lo son.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdxxii{Quienes crean y obren rectamente obtendrán los jardines del Paraíso como morada en recompensa por sus obras.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdxxiii{Pero quienes desobedezcan [a Dios] tendrán como morada el Fuego. Cada vez que quieran escapar de él, serán devueltos al castigo y se les dirá: ``Sufran el tormento del Fuego por haber desmentido [a los Profetas y su Mensaje]".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdxxiv{Pero les haré probar un castigo inmediato en esta vida antes de que los azote el castigo mayor [del Infierno], quizás así recapaciten.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdxxv{¿Acaso hay alguien más injusto que aquel que después de que se le recitan los versículos de Dios se aparta de ellos? He de retribuir a los pecadores con lo que merecen.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdxxvi{Le di a Moisés el Libro e hice de él guía para los Hijos de Israel; y no dudes [¡oh, Mujámmad!] que te encontrarás con él.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdxxvii{Hice de algunos de ellos líderes ejemplares para guiar [a la gente] por Mi voluntad, siempre que sean pacientes y tengan certeza de Mis signos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdxxviii{Tu Señor juzgará entre ellos el Día de la Resurrección acerca de lo que discrepaban.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdxxix{¿Acaso no se les ha evidenciado [a quienes no creen en este Mensaje] cuántas civilizaciones destruí, siendo que ellos ahora pueden observar sus ruinas? En eso hay signos para que reflexionen.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdxxx{¿Acaso no ven cómo envío la lluvia a la tierra árida, y con ella hago brotar los sembrados de los que comen ellos mismos y también sus rebaños? ¿Acaso no recapacitan?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdxxxi{Y preguntan [a los creyentes]: ``¿Cuándo llegará el Día del Juicio, si es que dicen la verdad?"\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdxxxii{Diles: ``Cuando llegue el Día del Juicio ya no les servirá creer a los que rechazaron el Mensaje, ni tendrán otra oportunidad".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdxxxiii{Apártate de ellos y aguarda [pacientemente el designio de Dios], y sabe que ellos seguirán acechándote.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdxxxiv{\basmalahes ¡Oh, Profeta! Teme a Dios y no obedezcas a los que niegan la verdad y a los hipócritas. Dios lo sabe todo, es Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdxxxv{Sigue lo que te ha sido revelado por tu Señor. Dios está bien informando de lo que hacen.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdxxxvi{Encomiéndate a Dios, porque Dios es suficiente como protector.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdxxxvii{Dios no puso dos corazones en el interior del hombre. Dios no ha hecho que aquellas esposas que hayan repudiado diciendo ``eres tan ilícita para mí como el cuerpo de mi madre" sean [realmente] sus madres, como tampoco ha hecho que sus hijos adoptivos sean [realmente] hijos suyos: estas son solo expresiones [equivocadas] de sus bocas, Dios es quien expresa la verdad [absoluta] y guía al sendero [recto].\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdxxxviii{Llámenlos [a sus hijos adoptivos] por el apellido de sus padres verdaderos, porque eso es lo más justo ante Dios; pero si no conocen a sus padres, mejor digan que ellos son sus hermanos en la religión y sus protegidos. No será considerado un pecado si lo hubieran hecho por error, pero sí será un pecado en caso de que lo hicieran intencionadamente. Dios es Perdonador, Misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdxxxix{El Profeta es más amado para los creyentes que ellos mismos; las esposas del Profeta [deben ser respetadas como si fueran] sus madres; y según el Libro de Dios [el Corán], los parientes son quienes tienen derecho a la herencia, algunos en mayor proporción que otros, y no los creyentes y los emigrados, pero aun así pueden testar a favor de ellos. Esto ha sido decretado y registrado en el Libro.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdxl{Celebré una alianza con todos los Profetas, la misma que celebro contigo [¡oh, Mujámmad!], con Noé, Abraham, Moisés y Jesús, hijo de María. Tomé de ellos un compromiso firme,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdxli{para preguntarles [el Día del Juicio] a los veraces acerca de su veracidad [si cumplieron con ese compromiso]. Dios tiene preparado para los que negaron la verdad un castigo doloroso.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdxlii{¡Oh, creyentes! Recuerden las mercedes con las que Dios los agració, cuando [en la batalla de Al Jandaq] los cercó un ejército, y envié contra ellos una tempestad y un ejército [de ángeles] que no podías ver. Dios ve todo cuanto hacen.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdxliii{[Recuerda] cuando los atacaron por la parte alta y por la parte baja [del valle], el terror desencajó sus miradas, se subieron sus corazones hasta la garganta, y tuvieron malos pensamientos sobre Dios [pensando que no socorrería a los creyentes].\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdxliv{Allí fueron probados los creyentes, y fueron sacudidos por una fuerte conmoción.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdxlv{Dijeron los hipócritas y los que tenían su corazón enfermo de dudas: ``Dios y Su Mensajero solo nos han hecho promesas falsas".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdxlvi{Cuando un grupo de ellos [de los hipócritas] dijo: ``¡Oh, gente de Yazrib! Esto es perjudicial para ustedes. ¡Mejor regresen [y no combatan]! Y un grupo de ellos pidió autorización al Profeta diciendo: ``Nuestras casas quedaron desprotegidas", pero no estaban desprotegidas, sino que solo querían huir.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdxlvii{Si [los incrédulos] hubieran entrado [a Medina] por sus flancos y les hubieran pedido colaboración [contra los creyentes], lo habrían aceptado fácilmente.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdxlviii{Se habían comprometido ante Dios a que no abandonarían el campo de batalla; serán preguntados por el pacto que tomaron con Dios.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdxlix{Diles [¡oh, Mujámmad!]: ``De nada les servirá huir, si es que pretenden huir de la muerte o de que se los mate. Aunque pudieran [escapar en esta oportunidad] no disfrutarán de la vida mundanal sino poco tiempo".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdl{Diles: ``¿Quién los protegerá de Dios, si Él quisiera un mal para ustedes, o [quién puede impedir] que los colme con Su misericordia si así Lo desea? No encontrarán, fuera de Dios, quién los ayude ni quién los pueda defender".\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdli{Dios conoce a quienes pretenden desanimar [a los creyentes] de entre ustedes, y a quienes dicen a sus hermanos [que salieron a combatir]: ``Vuelvan con nosotros", [estos hipócritas] no quieren participar del enfrentamiento.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdlii{Se niegan a prestar todo tipo de ayuda, y cuando se apodera de ellos el temor [por cobardía] los ves que te observan con los ojos desorbitados, como aquel que está en la agonía de la muerte. Pero cuando el temor cesa, se dirigen a ustedes con lenguas afiladas, ávidos por obtener parte del botín. Estos no son creyentes, y Dios hará vanas sus obras [por su falta de fe] pues esto es algo fácil para Él.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdliii{Ellos pensaban que los aliados no se habían marchado, y si estos aliados hubieran regresado [otra vez para combatirlos], habrían deseado estar en el desierto con los beduinos y preguntar de lejos acerca de la suerte de los musulmanes; y aunque hubieran estado con ustedes, poco es lo que habrían participado en la batalla [por desgano].\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdliv{En el Mensajero de Dios hay un bello ejemplo para quienes tienen esperanza en Dios, [anhelan ser recompensados] en el Día del Juicio y recuerdan frecuentemente a Dios.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdlv{Cuando los creyentes vieron a los aliados dijeron: ``Esto es lo que nos prometieron Dios y Su Mensajero, y la promesa de Dios y Su Mensajero es verdadera". Eso no hizo sino acrecentarles la fe y la aceptación [de las órdenes de Dios].\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdlvi{Entre los creyentes hay hombres que cumplieron el compromiso que tomaron con Dios. Algunos ya han fallecido, otros esperan que les llegue su hora y no han cambiado de compromiso.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdlvii{Dios [decidió probarlos en la fe] para recompensar a los sinceros por su sinceridad y castigar a los hipócritas, si Él quiere, o perdonarlos. Dios es Perdonador, Misericordioso.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdlviii{Dios frustró a los incrédulos que, llenos de ira, no alcanzaron lo que se proponían, e hizo que los creyentes no entraran en combate. Dios es Fuerte, Poderoso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdlix{Luego hizo salir de sus fortalezas a la gente del Libro que había ayudado [a los idólatras], e infundió el terror en sus corazones. Por Su orden unos fueron ejecutados y otros hechos prisioneros.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdlx{[Dios] los hizo heredar sus tierras, sus hogares y sus bienes, y [los hará heredar] otras tierras que todavía ni siquiera han pisado. Dios es sobre toda cosa Poderoso.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdlxi{¡Oh, Profeta!, diles a tus esposas: ``Si prefieren la vida mundanal y sus placeres transitorios, vengan que les daré la parte de los bienes materiales que les corresponden y acordaremos un divorcio decoroso.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdlxii{Pero si prefieren a Dios y a Su Mensajero, y la morada que les aguarda en la otra vida, Dios tiene una magnífica recompensa para quienes de ustedes hagan el bien".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdlxiii{¡Oh, mujeres del Profeta! Quienes de ustedes cometan una deshonestidad evidente, sepan que les será duplicado el castigo. Eso es fácil para Dios.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdlxiv{Pero a quienes de ustedes obedezcan a Dios y a su Mensajero, y obren rectamente, les duplicaré la recompensa y les otorgaré un sustento generoso.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdlxv{¡Oh, mujeres del Profeta! Ustedes no son como las demás mujeres, si tienen temor de Dios, no hablen con voz dulce, de modo que quien tenga su corazón enfermo sienta alguna atracción; hablen recatadamente.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdlxvi{[Preferiblemente] permanezcan en sus casas, [y cuando salgan] no se exhiban provocativamente como lo hacían [las mujeres] en tiempos del paganismo preislámico, y hagan la oración, paguen el zakat y obedezcan a Dios y a Su Mensajero. Dios quiere apartar de ustedes todo pecado, ¡oh, familia del Profeta!, y purificarlos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdlxvii{[Oh, esposas del Profeta] transmitan los versículos de Dios y la sabiduría que se mencionan en sus casas. Dios es Sutil, está informado de todas las cosas.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdlxviii{Dios les tiene reservado Su perdón y una gran recompensa a los musulmanes y las musulmanas, a los creyentes y las creyentes, a los piadosos y las piadosas, a los justos y las justas, a los pacientes y las pacientes, a los humildes y las humildes, a los que hacen caridades y a las que hacen caridades, a los que ayunan y las que ayunan, a los pudorosos y las pudorosas, a los que recuerdan frecuentemente a Dios y a las que recuerdan frecuentemente a Dios.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdlxix{Un verdadero creyente o a una verdadera creyente no deben, cuando Dios y Su Mensajero hayan dictaminado un asunto, actuar en forma contraria. Quien desobedezca a Dios y a Su Mensajero se habrá desviado claramente.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdlxx{Recuerda [¡oh, Mujámmad!] cuando dijiste [a Zaid Ibn Háriza] a quien Dios había agraciado [con el Islam] y tú habías favorecido [liberándolo de la esclavitud]: ``Conserva a tu esposa y teme a Dios"; intentaste ocultar lo que Dios haría manifiesto porque temiste lo que diría la gente, pero Dios es más digno de ser temido. Cuando Zaid termine con el vínculo conyugal, te la concederé en matrimonio para que los creyentes [sepan que] no hay ningún impedimento en casarse con las exesposas de sus hijos adoptivos, si es que estos deciden divorciarse de ellas. Era un asunto decidido.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdlxxi{No hay falta alguna del Profeta por lo que Dios le haya prescrito [y permitido contraer en matrimonio]; ese es el designio de Dios tal como lo fue para [los Profetas] que lo precedieron, y el designio de Dios ha de cumplirse.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdlxxii{Quienes transmiten el Mensaje de Dios y tienen temor de Él, sin temer a nadie salvo a Él, sepan que Dios computa todas las obras.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdlxxiii{Mujámmad no es el padre de ninguno de sus hombres, sino que es el Mensajero de Dios y el sello de los Profetas. Dios lo sabe todo.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdlxxiv{¡Oh, creyentes! Tengan presente a Dios en todo momento,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdlxxv{y glorifíquenlo por la mañana y por la tarde.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdlxxvi{Él es Quien los bendice, y Sus ángeles ruegan [el perdón] por ustedes para [que sigan la guía y] sacarlos de las tinieblas [de la idolatría y el pecado] hacia la luz [del monoteísmo y la obediencia]. Él es compasivo con los creyentes.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdlxxvii{Su saludo el día que se encuentren con Él [en el Paraíso] será: ``¡Que la paz sea contigo!" Dios les tiene reservada una recompensa generosa.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdlxxviii{¡Oh, Profeta! Te he enviado como testigo, albriciador, amonestador,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdlxxix{para que invites [a creer en] Dios con Su anuencia; eres una antorcha luminosa.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdlxxx{Dales a los creyentes la albricia de que recibirán un inmenso favor de Dios.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxi{No obedezcas a los que niegan la verdad ni a los hipócritas, no hagas caso a sus provocaciones, y encomiéndate a Dios, pues Dios es suficiente como Protector.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxii{¡Oh, creyentes! Si se casan con las creyentes y luego se divorcian antes de haberlas tocado, no deberán ellas esperar ningún plazo para volver a casarse, pero deben darles a ellas una compensación y completar un divorcio decoroso.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxiii{¡Oh, Profeta! Te son lícitas las mujeres a las cuales diste la dote, y lo que posee tu diestra que te ha concedido Dios, y tus primas paternas y maternas que emigraron contigo, y la mujer creyente que se ofrece al Profeta [en matrimonio], si es que el Profeta quiere tomarla por esposa; es un permiso exclusivo para ti, no para los demás. Sé bien lo que les prescribí respecto a las esposas y lo que posee su diestra, para que no tengas reparo. Dios es Perdonador, Misericordioso.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxiv{[¡Oh, Mujámmad!] Puedes relegar a quien quieras [de tus esposas y no pasar la noche con la que le corresponde] y estar con la que quieras, o si lo deseas volver con alguna de las que hubieras relegado, no cometes pecado al hacerlo. Esto es más conveniente para que estén alegres, no se entristezcan y se sientan complacidas. Dios bien sabe lo que hay en sus corazones. Dios todo lo sabe, es Tolerante.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxv{No te será lícito que vuelvas a casarte luego de esta revelación, ni sustituir a una por otra aunque fueran muy hermosas, excepto lo que posea tu diestra. Dios todo lo observa.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxvi{¡Oh, creyentes! No entren en la casa del Profeta a menos que los invite a comer, y no estén procurando la ocasión [de que los invite]. Si fueran invitados, entren, y cuando hayan terminado de comer, retírense y no se demoren hablando, porque eso incomoda al Profeta y se avergüenza [de pedirles que se retiren]; pero Dios no se avergüenza de [decir] la verdad. Cuando les pidan algo [a las esposas del Profeta], háganlo detrás de una cortina. Esto es más puro para los corazones de ustedes y los de ellas. No deben molestar al Mensajero de Dios ni deben casarse nunca con quienes fueron sus esposas, porque eso es grave ante Dios.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxvii{Si manifiestan algo o lo ocultan, sepan que Dios está enterado de todas las cosas.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxviii{No es un pecado [para las creyentes si se quitan el velo] ante sus padres, sus hijos, sus hermanos, los sobrinos de parte de su hermano o de su hermana, las demás mujeres y ante los esclavos. Tengan temor de Dios, porque Dios es testigo de todo.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmdlxxxix{Dios bendice al Profeta y Sus ángeles piden [a Dios] que lo bendiga. ¡Oh, creyentes! Pidan bendiciones y paz por él.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmdxc{A quienes intenten perjudicar a Dios y a Su Mensajero, Dios los maldecirá en este mundo y en el otro, donde les tiene preparado un castigo humillante.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmdxci{Quienes causen daño a los creyentes y a las creyentes sin tener motivo alguno, cometen un pecado evidente.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmdxcii{¡Oh, Profeta! Diles a tus mujeres, a tus hijas y a las mujeres de los creyentes, que se cubran con sus mantos; es mejor para que se las reconozca y no sean molestadas. Dios es Perdonador, Misericordioso.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmdxciii{Si los hipócritas, aquellos que tienen sus corazones enfermos [de dudas] y los que siembran intrigas en Medina no se abstienen, te daré poder sobre ellos, y en consecuencia no permanecerán mucho como tus vecinos.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmdxciv{Porque serán maldecidos dondequiera que se encuentren, y deberán ser apresados y ajusticiados con firmeza.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmdxcv{Tal ha sido el proceder de Dios con los que [pecaron de igual manera y] ya han desaparecido. ¡No hallarás cambio alguno en el proceder de Dios!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmdxcvi{Te preguntan acerca de la Hora [del Juicio]. Diles: ``Solo Dios tiene el conocimiento de cuándo será; no sé si la Hora esté cercana".\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmdxcvii{Dios maldice a los que rechazan el Mensaje y les ha preparado el Infierno.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmdxcviii{Estarán en él por toda la eternidad; no encontrarán quién los proteja ni los auxilie.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmdxcix{El día en que sus rostros se hundan en el fuego del Infierno, dirán: ``¡Ojalá hubiéramos obedecido a Dios y al Mensajero!"\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmdc{Y dirán: ``¡Oh, Señor nuestro! Seguimos a nuestros líderes y poderosos; fueron ellos quienes nos desviaron del camino [recto].\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmdci{¡Señor nuestro! Duplícales a ellos el castigo y maldícelos completamente".\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmdcii{¡Oh, creyentes! No sean como quienes calumniaron a Moisés. Dios lo declaró inocente de lo que lo acusaban; él goza ante Dios de un rango elevado.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmdciii{¡Oh, creyentes! Tengan temor de Dios y hablen solo con la verdad.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmdciv{[Si lo hacen,] Él hará virtuosas sus obras y perdonará sus pecados. Quien obedece a Dios y a Su Mensajero obtendrá un triunfo grandioso.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmdcv{Le propuse a los cielos, a la Tierra y a las montañas revelarles el Mensaje, pero se rehusaron a cargar con ello porque sintieron temor. Pero el ser humano aceptó llevar la carga; el ser humano fue injusto [consigo mismo] e ignorante [de las consecuencias de asumir esa responsabilidad].\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmdcvi{Dios castigará a los hipócritas y a las hipócritas, a los idólatras y a las idólatras; mientras que Dios perdonará a los creyentes y a las creyentes porque Él es Perdonador, Misericordioso.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmdcvii{\basmalahes ¡Alabado sea Dios, a Quien pertenece cuanto hay en los cielos y la Tierra! Suyas serán las alabanzas en la otra vida. Él es el Sabio, el que está bien informado.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdcviii{Sabe lo que ingresa en la tierra y lo que surge de ella. Lo que desciende del cielo y lo que sube hacia él. Él es el Misericordioso, el Perdonador.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdcix{Dicen los que se negaron a creer: ``No habrá Día del Juicio". Diles [¡oh, Mujámmad!]: ``¡Sí!, habrá, se los juro por mi Señor, Él es el Conocedor de lo oculto, no se Le escapa el conocimiento de la existencia de una pequeña partícula en los cielos o en la Tierra, ni existe nada menor ni mayor que no esté en un Libro evidente.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdcx{[La Resurrección es] para recompensar a los creyentes que obraron correctamente; ellos obtendrán el perdón y un sustento generoso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdcxi{Pero quienes se esfuercen por hacer fracasar Mi Mensaje tendrán el castigo de un suplicio doloroso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdcxii{Quienes recibieron la sabiduría y el conocimiento saben que lo que tu Señor te reveló es la Verdad que guía al sendero del Poderoso, el Loable.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdcxiii{Dicen los que se negaron a creer [burlándose]: ``¿Quieren que les mostremos un hombre [Mujámmad] que anuncia que luego de haber sido desintegrados completamente [en las tumbas] serán resucitados,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdcxiv{inventa mentiras y se las atribuye a Dios, o está loco?" Pero los que no creen en la otra vida sufrirán el castigo porque están sumidos en un extravío profundo.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdcxv{¿Es que no observan los cielos y la tierra que los rodea? Si quisiera, haría que se los tragara la tierra, o haría que cayera sobre ellos un castigo del cielo. En eso hay un signo para todo siervo arrepentido.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdcxvi{Concedí a David Mi favor [cuando dije:] ``¡Oh, montañas y pájaros! Glorifiquen con él [a Dios]", y le facilité moldear el hierro.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdcxvii{[Dijo Dios:] ``Haz cotas de malla cuyas argollas tengan una justa medida y obren rectamente [tú y tus seguidores]; Yo observo lo que hacen".\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdcxviii{Y a Salomón le sometí el viento para que recorriera la distancia que recorrería en un mes en las mañanas como en las tardes. E hice manar para él una fuente de cobre fundido. [También le sometí] los yinnes que trabajaban para él por orden de su Señor. A quien de ellos se rebelara a Mi voluntad [y desobedeciera a Salomón], le hacía sufrir el castigo del Infierno.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdcxix{Hacían para él todo lo que él deseara: templos elevados, estatuas, cántaros grandes como estanques y calderas enormes. [Les dije:] ``Trabajen con agradecimiento [a Dios por los favores concedidos] ¡oh, familia de David!, pero sepan que pocos de Mis siervos son agradecidos".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdcxx{Cuando decreté para él que muriera, no les advirtió de su muerte sino un insecto de la tierra que carcomió su bastón, y cuando [Salomón] se cayó, se hizo evidente [para la gente] que si los yinnes hubieran tenido conocimiento de lo oculto, no habrían permanecido en el castigo humillante [de seguir trabajando].\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdcxxi{Las moradas de Saba eran un signo [de las gracias de Dios]: poseían dos huertos, uno [en un valle] a la izquierda y otro a la derecha. [Les dije:] ``Coman del sustento de su Señor y agradézcanle. Tienen una buena tierra, y [si son agradecidos, sepan que] su Señor es Perdonador".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdcxxii{Pero se apartaron, entonces envié sobre ellos la inundación [que produjo la ruptura] de las represas [que habían construido], y les cambié sus dos huertos por granjas con frutos amargos, tamarindos y algunos árboles de azufaifo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdcxxiii{Así los castigué por ser desagradecidos, y no castigo así sino al desagradecido.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdcxxiv{Puse entre ellos y las ciudades que había bendecido otras aldeas, e hice que transitaran tranquilos por ellas. [Les dije:] ``¡Viajen por ellas seguros de noche y de día!"\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdcxxv{Dijeron [con arrogancia]: ``¡Señor nuestro! Alarga nuestros viajes". Y se perjudicaron a sí mismos, e hice que se convirtieran en historia y los destruí por completo. Sin duda, en esto hay un signo para todo paciente [ante momentos difíciles] agradecido [de los favores de Dios].\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdcxxvi{Así confirmó Iblís su afirmación: ya que todos lo siguieron excepto un grupo de creyentes.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdcxxvii{[El demonio] no tenía poder sobre ellos, sino [que les susurró] para que se hiciera evidente quién creía en la otra vida y quién de ellos tenía dudas. Tu Señor está atento a todas las cosas.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdcxxviii{Diles [¡oh, Mujámmad! a los idólatras]: ``Invoquen a quien quieran en lugar de Dios, pero sepan que los ídolos no pueden [beneficiar ni perjudicar] ni siquiera en el peso de una partícula, tanto en los cielos como en la Tierra, ni tienen participación alguna [en el poder divino], ni tampoco Él tiene ayudantes de entre ellos".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdcxxix{No se aceptará ninguna intercesión y solo podrán hacerlo aquellos a quienes Él se lo permita, hasta que, cuando el terror se aleje de sus corazones [los ángeles] se preguntarán [unos a otros]: ``¿Qué dijo su Señor?" Responderán: ``La Verdad. Él es el Sublime, el Grande".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdcxxx{Pregúntales [¡oh, Mujámmad! a los idólatras]: ``¿Quién los sustenta de los cielos y la Tierra?" Diles: ``¡Dios!" Uno de nosotros está en el sendero recto y el otro en el error evidente.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxi{Diles: ``Ustedes no serán interrogados por nuestras faltas, ni nosotros seremos interrogados por las suyas".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxii{Diles: ``Nuestro Señor nos congregará [el Día del Juicio], luego juzgará entre nosotros con equidad; Él es el verdadero Juez, y Él todo lo sabe".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxiii{Diles: ``Muéstrenme los [ídolos] que asocian con Él". ¡No existen!, pues Él es Dios, el Poderoso, el Sabio.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxiv{No te envié [¡oh, Mujámmad!] sino como anunciador de buenas nuevas y amonestador para todos los seres humanos. Pero la mayoría de la gente lo ignora.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxv{Dicen [los que se negaron a creer]: ``¿Cuándo se cumplirá esta amenaza, si dices la verdad?"\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxvi{Diles: ``Ustedes han sido emplazados para el Día [del Juicio], y no podrán adelantarlo ni retrasarlo siquiera un instante".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxvii{Dicen los que se negaron a creer: ``No creeremos en este Corán ni en los [Libros revelados] anteriores". Pero si vieras [¡oh, Mujámmad!] cuando estén los que cometieron injusticias frente a su Señor, increpándose unos a otros. Dirán los seguidores oprimidos a los [líderes] arrogantes: ``Si no fuera por ustedes hubiéramos sido creyentes".\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxviii{Dirán los [líderes] arrogantes a quienes los siguieron: ``¿Acaso nosotros los apartamos de la guía [por la fuerza], después que les vino? Son unos transgresores [que eligieron libremente el descarrío]".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdcxxxix{Dirán quienes seguían a los soberbios líderes [en la incredulidad]: ``No, fueron sus astucias, pues noche y día nos ordenaban que no creyéramos en Dios y que igualáramos a los ídolos con Dios [dedicándoles actos de adoración]". Todos pretenderán esconder su arrepentimiento [por no haber creído en los Mensajeros] cuando vean el castigo [pero se evidenciará en sus rostros]; y pondremos argollas en los cuellos de los que se negaron a creer. ¿No serán acaso castigados por lo que cometieron?\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdcxl{No envié un [Profeta como] amonestador a ninguna ciudad sin que dijeran sus líderes y poderosos: ``No creemos en tu Mensaje".\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdcxli{Decían también: ``Nosotros tenemos más bienes materiales e hijos que tú, y no seremos castigados".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdcxlii{Diles: ``Mi Señor sustenta generosamente a quien quiere y se lo restringe [a quien quiere], pero la mayoría de la gente lo ignora".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdcxliii{Sepan que no son ni sus bienes materiales ni sus hijos los que los acercan a Mí, sino que quienes crean y obren rectamente recibirán una recompensa multiplicada por sus obras, y morarán seguros en habitaciones elevadas [del Paraíso].\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdcxliv{En cambio, aquellos que se esfuercen por denigrar Mi Mensaje serán llevados al castigo.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdcxlv{Diles: ``Mi Señor aumenta el sustento a quien Él quiere de Sus siervos y se lo restringe [a quien quiere], y todo lo que gasten en caridad, Él se los compensará. Él es el mejor de los sustentadores".\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdcxlvi{El día en que congregue a todos [los seres humanos para juzgarlos], preguntará a los ángeles: ``¿Estos [idólatras] eran los que los adoraban?"\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdcxlvii{Responderán [los ángeles]: ``¡Alabado seas! Tú eres nuestro Protector, y nosotros no los indujimos a ello, pero [los idólatras en realidad] adoraban a los yinnes, y la mayoría [de los seres humanos] creían en ellos.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdcxlviii{Pero el Día del Juicio no podrán beneficiarse ni perjudicarse unos a otros, y diré a los que cometieron injusticias: ``Sufran el castigo del Fuego que negaban".\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdcxlix{Cuando se les recitan Mis versículos evidentes [a los idólatras], dicen: ``Este [el Profeta Mujámmad] no es sino un hombre que pretende apartarlos de lo que sus padres adoraban". Y dicen: ``Este Corán no es más que una mentira inventada". Y dijeron los que se negaron a creer cuando les llegó la verdad: ``No es más que evidente hechicería".\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdcl{No les concedí [a los paganos de La Meca] libros en que se basaran [y fundamentaran su idolatría], ni les envié a ningún amonestador antes de ti.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdcli{Ya desmintieron sus antecesores a Mis Mensajeros, y estos incrédulos [deberían recapacitar, pues] no recibieron ni una décima parte de lo que les concedí a sus antecesores. ¡Qué terrible fue el castigo!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdclii{Diles [¡oh, Mujámmad!]: ``Los exhorto a que hagan una cosa [para que se les evidencie la verdad]: Pónganse ante Dios en grupo o individualmente, y reflexionen, pues su compañero no es un loco, sino que es un amonestador que les advierte de un castigo severo".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdcliii{Diles: ``No les he pedido remuneración alguna, mi recompensa ha de dármela Dios; Él es Testigo de todas las cosas".\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdcliv{Diles: ``Mi Señor rechaza lo falso con la verdad, Él conoce lo oculto".\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdclv{Diles: ``Se ha presentado la verdad, y la falsedad no puede comenzar nada nuevo ni repetirlo".\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdclvi{Diles: ``Si me desvío, será en perjuicio propio; pero si sigo la verdadera guía es por lo que mi Señor me reveló. Él todo lo oye y está cerca [de Sus siervos]".\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdclvii{¡Si vieras [¡oh, Mujámmad!] cuando [los incrédulos] se aterroricen [al ver el castigo que les aguarda] y no tengan forma de escapar! Serán tomados desde un lugar cercano [y arrojados al Fuego].\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdclviii{Dirán: ``Ahora creemos en Dios". ¿Pero cómo podrían adoptar la fe desde un lugar lejano?\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdclix{Antes ya habían sido incrédulos [en la vida mundanal] y refutaban lo oculto con falsedades desde una posición lejana [a la verdad].\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdclx{Pero entre ellos y lo que desean se interpondrá una barrera, como ocurrió con los incrédulos que estuvieron antes de ellos, porque estaban indecisos [sobre el Mensaje].\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdclxi{\basmalahes ¡Alabado sea Dios, el Originador de los cielos y de la Tierra! Dispuso que los ángeles fuesen Sus enviados [para transmitir el Mensaje a Sus Profetas], dotados de dos, tres o cuatro alas. [Dios] aumenta en la creación a quien quiere. Dios tiene poder sobre todas las cosas.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdclxii{Nada ni nadie puede impedir que una misericordia de Dios alcance a la gente; pero si Él la retuviese, no hay nada ni nadie que pudiera hacer que les llegara. Él es el Poderoso, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdclxiii{¡Oh, gente! Recuerden las bendiciones que Dios les ha concedido. ¿Acaso hay otro Creador además de Dios que los sustente de lo que hay en el cielo y en la Tierra? No hay nada ni nadie con derecho a ser adorado salvo Dios. ¿Por qué entonces se desvían?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdclxiv{Si te desmienten [¡oh, Mujámmad!], ya antes de ti otros Mensajeros fueron desmentidos. Todos los asuntos vuelven a Dios.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdclxv{¡Oh, gente! La promesa de Dios es verdadera. Que no los alucine la vida mundanal, y que el Seductor no los aparte de Dios.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdclxvi{El demonio es para ustedes un enemigo, tómenlo como un enemigo; él seduce a sus seguidores para que sean de los moradores del Infierno.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdclxvii{Los que rechazan el Mensaje recibirán un castigo severo, mientras que los creyentes que obren rectamente obtendrán el perdón y una gran recompensa.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdclxviii{¿Acaso a quien [el demonio] le hizo ver sus obras malas como buenas [es comparable a quien Dios ha guiado]? Dios decreta el desvío para quien Él quiere y guía a quien quiere. No te apenes [por la incredulidad de quienes te desmienten]. Dios sabe bien lo que hacen.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdclxix{Dios es Quien envía los vientos que conducen las nubes, y con ellas riega un territorio muerto. [Dios] da vida a la tierra árida con las lluvias; de igual manera será la resurrección.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdclxx{Quien desee el poder, debe saber que el poder absoluto pertenece solo a Dios. Hacia Él ascienden las buenas palabras y Él eleva las obras piadosas. Pero quienes se confabulen para hacer el mal tendrán un castigo severo, y sus planes fracasarán.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdclxxi{Dios creó [a Adán] de la tierra, luego [a toda su descendencia] de un óvulo fecundado, luego los hace pares [hombre y mujer]. Ninguna mujer concibe ni da a luz sin que Él tenga conocimiento. A nadie se le alarga ni se le acorta la vida sin que ello conste en un Libro. Eso es fácil para Dios.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdclxxii{Las dos masas de agua no son iguales: una es potable, dulce y agradable para beber; la otra es salobre. De ambas comen carne fresca y obtienen adornos con los que se engalanan. Ven al barco atravesarlas para buscar Su favor: sean agradecidos [con Dios].\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdclxxiii{[Dios] hace que la noche se funda en el día y que el día se funda en la noche, sometió el Sol y la Luna, cada uno transcurre por una órbita prefijada. Él es Dios, su Señor; Suyo es el reino, pero los ídolos que ustedes invocan fuera de Él no poseen absolutamente nada, ni siquiera el pellejo de un hueso de dátil.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdclxxiv{Si ustedes los invocan, no oyen su invocación, y si oyeran no podrían responder. El Día de la Resurrección negarán que los hayan adorado, y no te informará nadie como Dios, Quien está bien informado de todo.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdclxxv{¡Oh, gente! Ustedes son los que necesitan de Dios, mientras que Dios es el que tiene domino absoluto y es digno de toda alabanza.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdclxxvi{Si Él quisiera, los haría desaparecer y crearía a otros seres [creyentes].\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdclxxvii{Eso no sería difícil para Dios.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdclxxviii{Nadie cargará con culpas ajenas. Si [un pecador] pide que le ayuden con su carga [de pecados], nadie podrá ayudarle en nada, aunque fuera su pariente. [¡Oh, Mujámmad!] Solo se beneficia con tus advertencias quien teme a su Señor en su vida privada y practica la oración. Quien se purifica [de la idolatría y el pecado], lo hace en beneficio propio; y ante Dios comparecerán.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdclxxix{No son iguales el ciego y el que ve.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdclxxx{Ni las tinieblas y la luz.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxi{Ni la frescura de la sombra y el calor del sol.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxii{No son iguales los vivos y los muertos. Dios hace oír [y aceptar el Mensaje] a quien quiere, pero tú no puedes hacer oír a quienes están [muertos de corazón como los que están muertos] en sus tumbas.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxiii{Tú solo eres un amonestador.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxiv{Te he enviado con la Verdad, como albriciador y amonestador; no hubo ninguna nación a la que no se le haya enviado un amonestador.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxv{Pero si te desmienten, también desmintieron sus antecesores a Mis Mensajeros, que se les presentaron con pruebas y con las escrituras y el Libro luminoso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxvi{Entonces castigué a los que no creyeron, ¡y qué terrible fue Mi castigo!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxvii{¿Acaso no observas que Dios hace descender del cielo el agua, y que con ella hace brotar diversas clases de frutos, y que algunas montañas tienen vetas blancas, rojas y negras, de diversos colores,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxviii{y que los seres humanos, los animales y los rebaños los hay de diversos colores? Los siervos que tienen más temor devocional de Dios son los sabios. Dios es Poderoso, Absolvedor.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdclxxxix{Quienes reciten el Libro de Dios, practiquen la oración y hagan caridades de aquello que les proveí, tanto en público como en secreto, recibirán una recompensa que jamás desaparecerá.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdcxc{Dios les retribuirá por sus obras y les concederá aún más de Su bendición, porque Él es Absolvedor, Recompensador.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdcxci{Lo que te he revelado del Libro [¡oh, Mujámmad!] es la Verdad que corrobora lo que ya había sido revelado anteriormente. Dios ve y sabe todo lo que hacen Sus siervos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdcxcii{Luego hice que heredaran el Libro quienes elegí entre Mis siervos, pero entre ellos hay quienes son injustos consigo mismos [cometiendo pecados], otros que lo ponen en práctica con moderación, y otros que, con el permiso de Dios, se apresuran en hacer el bien. Eso es un favor inmenso.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdcxciii{Ingresarán por ello en los Jardines del Edén, allí serán engalanados con pulseras de oro y perlas, y sus vestiduras serán de seda.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdcxciv{Y dirán: ``¡Alabado sea Dios, que ha hecho desaparecer toda causa de tristeza! Nuestro Señor es Absolvedor, Recompensador.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdcxcv{Nos recompensó con la morada eterna, y por Su gracia no padeceremos allí cansancio ni fatiga".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdcxcvi{Pero quienes no hayan creído serán castigados con el fuego del Infierno, [allí] no morirán ni se les aliviará el tormento; así castigo a quienes rechazan [el Mensaje].\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdcxcvii{Allí clamarán: ``¡Señor nuestro! Sácanos [del tormento] para que obremos rectamente, y no como lo hicimos". Pero, ¿acaso no les concedí vivir largamente donde podrían haberlo hecho, y no se les presentó un Mensajero [y lo rechazaron]? Sufran el castigo. Los injustos no tendrán quién los defienda.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdcxcviii{Dios conoce lo oculto de los cielos y de la Tierra, y sabe bien lo que hay dentro de los corazones.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdcxcix{Él es Quien hizo que se sucedieran unos a otros en la Tierra. La incredulidad del que se niegue a creer será en su propia contra; y la incredulidad de los que se nieguen a creer no hará sino hacerlos más detestables ante su Señor, y la incredulidad de los que se nieguen a creer no hará sino aumentarles en perdición.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdcc{Diles: ``¿No se fijan en lo que adoran en vez de Dios? Muéstrenme qué han creado de la Tierra, ¿acaso participaron en la creación de los cielos? ¿O les concedí un libro en el que se basan para confirmar la idolatría?" La esperanza que los opresores se dan unos a otros no es más que un engaño.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdcci{Dios es Quien contiene a los cielos y la Tierra para que no se desvíen [de su órbita], porque si se desviaran nadie los podría contener más que Él. Él es Tolerante, Absolvedor.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdccii{[Los incrédulos] juraron por Dios que si se les presentaba un [Profeta] amonestador, serían más encaminados que ninguna otra comunidad; pero cuando se les presentó un amonestador, no hicieron sino aumentar su rechazo.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdcciii{Fueron soberbios en la Tierra, y se confabularon [para apartar a la gente del camino recto], pero las confabulaciones recayeron sobre ellos mismos. ¿Es que no temen que les suceda como a sus predecesores? No habrá cambios en el designio de Dios.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdcciv{¿Acaso no han viajado por el mundo y observaron cuál fue el fin de quienes los precedieron? Eran más poderosos que ellos [y aun así fueron castigados], pues nadie puede huir de Dios, ni en los cielos ni en la Tierra. Él lo sabe todo y tiene poder sobre todas las cosas.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdccv{Si Dios castigara a la gente [inmediatamente] por sus pecados, no dejaría ninguna criatura sobre la faz de la Tierra. Por Su voluntad les da una prórroga hasta un plazo fijado; pero cuando llegue el plazo, Dios [los juzgará porque] está bien enterado de todo lo que hacen.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdccvi{\basmalahes Iá’. Sín.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdccvii{[Juro] por el Corán, que está lleno de sabiduría,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdccviii{que tú [¡oh, Mujámmad!] eres uno de los Mensajeros [de Dios],\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdccix{que está en el sendero recto.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdccx{Esta es una revelación del Poderoso, el Misericordioso,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdccxi{para que amonestes a un pueblo cuyos antepasados no fueron advertidos, y por eso son negligentes.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdccxii{Se ha hecho realidad la palabra de Dios sobre la mayoría de ellos, pues no están dispuestos a creer.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdccxiii{Les pondré en sus cuellos argollas que llegarán a sus barbillas, y sus cabezas quedarán erguidas.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdccxiv{Pondré ante ellos una barrera y otra detrás, y los cubriré con un velo y no podrán ver.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdccxv{Les da lo mismo que los amonestes o no, no creerán.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdccxvi{Solo se beneficia con tu amonestación quien sigue el Mensaje y teme al Compasivo en su intimidad. A ellos anúnciales que obtendrán el perdón y una recompensa generosa.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdccxvii{Yo soy Quien resucita a los muertos, y registro lo que hagan de bien y lo que hagan del mal; todo lo tengo mencionado en un libro claro.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdccxviii{[A quienes te desmienten] menciónales el ejemplo de los habitantes de una ciudad, cuando se presentaron ante ellos los Mensajeros.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdccxix{Les envié dos Mensajeros pero los desmintieron, entonces los reforcé con un tercero. Ellos dijeron [a los habitantes de la ciudad]: ``Hemos sido enviados a ustedes [por Dios]".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdccxx{Respondieron [los incrédulos]: ``Ustedes no son más que seres humanos como nosotros. El Misericordioso no ha revelado nada, ustedes son tan solo unos mentirosos".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdccxxi{Dijeron [los Mensajeros]: ``Nuestro Señor sabe que realmente somos Mensajeros.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdccxxii{Solo somos responsables de transmitir el Mensaje de forma clara".\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdccxxiii{Dijeron [los incrédulos]: ``Tenemos un mal presagio con ustedes, y si no desisten [de condenar la idolatría] los lapidaremos y los torturaremos para causarles mucho dolor".\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdccxxiv{Dijeron [los Mensajeros]: ``Su destino [bueno o malo] depende de ustedes. Pero ustedes, por el solo hecho de que los amonestemos [dirán que les traemos mala suerte]. En realidad son un pueblo de transgresores".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdccxxv{Entonces llegó desde un extremo de la ciudad un hombre corriendo, que dijo: ``¡Oh, pueblo mío! Sigan a los Mensajeros.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdccxxvi{Sigan a quienes no les piden retribución alguna [por transmitirles el conocimiento], y están bien guiados.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdccxxvii{¿Cómo no iba a adorar a Quien me creó, si ante Él comparecerán?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdccxxviii{¿Acaso iba a tomar, en lugar de Él, a ídolos que, si el Compasivo decretara alguna adversidad para mí, su intercesión de nada me valdría ni podrían protegerme?\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdccxxix{Si lo hiciera, estaría en un error evidente.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdccxxx{Escúchenme, yo he abrazado la fe en su Señor". [Pero su pueblo lo mató.]\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxi{Entonces le fue dicho: ``Ingresa al Paraíso". Dijo: ``¡Ojalá mi pueblo supiera\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxii{que mi Señor me perdonó mis faltas y me honró [con la bienaventuranza]!"\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxiii{No envié contra su pueblo, después de él, ningún ejército [de ángeles],\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxiv{pues fue suficiente con un único sonido desgarrador para que fueran aniquilados.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxv{¡Pobres de esos siervos que cada vez que se presenta ante ellos un Mensajero, se burlan de él!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxvi{¿Acaso no observan cuántas generaciones que los precedieron he destruido? Esos ya no volverán [a la vida mundanal].\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxvii{Todos deberán comparecer ante Mí.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxviii{Un signo [que evidencia cómo es la resurrección] es la tierra árida que revivo [con lluvias] y hago brotar de ella los granos con que se alimentan.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdccxxxix{En ella hay jardines de palmeras y vides, e hice brotar de ella manantiales\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdccxl{para que comieran de sus frutos. No fueron las manos de ustedes las que los crearon. ¿Acaso no van a agradecer [a Dios]?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdccxli{Glorificado sea Aquel que creó todas las especies en pares; las que brotan de la tierra, los seres humanos y otras [criaturas] que desconocen.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdccxlii{Tienen un signo [del poder divino] en la noche que le sucede al día, y quedan entonces a oscuras.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdccxliii{El Sol orbita como le fue designado; ello es un decreto del Poderoso, el que todo lo sabe.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdccxliv{A la Luna le decreté sus fases, hasta que [va menguando y] parece una rama seca de palmera.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdccxlv{No le es posible al Sol alcanzar a la Luna, ni la noche puede adelantarse al día. Cada [astro] circula en su órbita.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdccxlvi{Otro signo [del poder divino] es que a sus padres los transporté en una barca cargada.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdccxlvii{Y creé para ellos otras [barcas] en las que se embarcan.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdccxlviii{Si hubiera querido habría hecho que se ahogaran, y nadie podría haberlos socorrido ni ayudado,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdccxlix{pero por misericordia no lo hice, para que disfrutaran por un tiempo.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdccl{Cuando se les dice: ``Tengan precaución de lo que pueda acontecerles ahora [de castigo en este mundo] y [del castigo] en la otra vida, quizá así alcancen la misericordia [de Dios]".\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdccli{Cada vez que presencian uno de los signos de su Señor, lo rechazan.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdcclii{Cuando se les dice: ``Hagan caridades de lo que Dios les ha proveído", dicen los incrédulos a los creyentes: ``¿Acaso tenemos que alimentar a quienes, si Dios quisiera, Él mismo alimentaría?" Están en un error evidente.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdccliii{Y dicen [desafiantes]: ``¿Cuándo se cumplirá esta advertencia, si es verdad lo que dices?"\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdccliv{No esperan sino que un solo clamor los sorprenda mientras están discutiendo.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdcclv{Entonces no tendrán tiempo siquiera para dar una indicación, y tampoco podrán retornar con los suyos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdcclvi{Cuando se sople la trompeta [por segunda vez], saldrán de sus tumbas hacia su Señor.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdcclvii{Dirán: ``¡Ay de nosotros! ¿Qué nos hizo surgir de nuestro lecho?" [Se les dirá:] ``Eso fue lo que les prometió el Misericordioso, los Mensajeros les decían la verdad".\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdcclviii{No habrá más que uno solo soplido [de la trompeta para marcar la resurrección], todos ellos deberán comparecer ante Mí.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdcclix{Ese día ningún alma será tratada injustamente, solo serán juzgados acorde a las obras que realizaron.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdcclx{La gente del Paraíso, ese día, estarán felices disfrutando.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmdcclxi{Ellos y sus cónyuges estarán a la sombra, reclinados sobre sofás.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmdcclxii{Allí tendrán frutos, y todo lo que pidan.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmdcclxiii{``¡La paz sea con ustedes!", serán las palabras del Señor Misericordioso.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmdcclxiv{¡Oh, transgresores! Hoy, por lo que hicieron, estarán lejos [de los creyentes].\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmdcclxv{¿Acaso no tomaron un compromiso conmigo, ¡oh, hijos de Adán!, de no obedecer ni adorar al demonio, que es un enemigo declarado para ustedes,\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmdcclxvi{y de que Me adorarían [solo a Mí]? Este es el sendero recto [que debían seguir].\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmdcclxvii{Pero él [el demonio] desvió a muchos de ustedes. ¿Por qué no reflexionan?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmdcclxviii{Este es el Infierno que se les había prometido.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmdcclxix{Ingresen en él hoy por haberse negado a creer.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmdcclxx{Hoy sellaré sus bocas y serán sus manos las que me hablen, y sus pies darán testimonio de lo que cometieron.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxi{Si quisiera los cegaría, pero aunque se precipitaran [por encontrar] el camino, ¿cómo podrían ver?\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxii{Si quisiera los habría inmovilizado en sus lugares y no podrían avanzar ni retroceder.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxiii{A quien le concedo una vida larga, hago que se vuelva débil [como cuando era pequeño]. ¿Acaso no van a reflexionar?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxiv{No le enseñé [al Profeta Mujámmad] la poesía, porque no es apropiada para él. [Lo que él recita] es un recuerdo [de Dios] y una recitación clara,\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxv{una amonestación para quien tenga un corazón vivo, y también una evidencia contra los que se niegan a creer [en él].\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxvi{¿Acaso no recapacitan en que he creado con Mis manos para ellos los ganados que les pertenecen?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxvii{Los he hecho dóciles para ellos, les sirven para montar y como alimento,\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxviii{obtienen de ellos otros beneficios, y [de ellos extraen leche] para beber. ¿Es que no van a ser agradecidos?\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxix{Pero toman falsas divinidades, en lugar de Dios, para que los socorran.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxx{Las divinidades no podrán siquiera socorrerse a sí mismas, y en realidad sus seguidores son soldados a su disposición.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxi{Que no te apene lo que dicen, bien sabemos lo que murmuran [en secreto] y lo que dicen abiertamente.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxii{¿Es que no ve el ser humano [que niega la Resurrección] que lo he creado de un óvulo fecundado? Sin embargo, él insiste en discutir [el poder divino].\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxiii{Y [este incrédulo] nos compara [con un ser creado] olvidando cómo ha sido creado él mismo, y dice: ``¿Quién dará vida a los huesos cuando estén ya carcomidos?"\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxiv{Dile [¡oh, Mujámmad!]: ``Les dará vida Quien los creó por primera vez, pues Él tiene conocimiento de todos los pasos de la creación.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxv{Él es Quien hace que puedan encender fuego del árbol verde".\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxvi{¿Acaso Quien creó los cielos y la Tierra no va a poder crearlos nuevamente? ¡Sí! [Puede] Porque Él es el Creador, el que lo sabe todo.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxvii{Cuando Él decide decretar algo, le dice: ``¡Sé!", y es.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxviii{Glorificado sea Aquel en Cuya mano está la soberanía de todas las cosas, y ante Él retornarán [para ser juzgados].\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmdcclxxxix{\basmalahes Juro por [los ángeles] ordenados en filas,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmdccxc{que advierten\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmdccxci{y recitan el Mensaje.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmdccxcii{Que su divinidad es una sola,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmdccxciii{el Señor de los cielos, de la Tierra, de todo cuanto existe entre ellos; el Señor de los amaneceres.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmdccxciv{He adornado el cielo más bajo con los astros\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmdccxcv{como protección contra todo demonio rebelde,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmdccxcvi{para que no puedan escuchar lo que revelo a la asamblea más elevada [de ángeles y para que, si lo intentan,] les sean arrojados [los astros] por todas partes,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmdccxcvii{y así ahuyentarlos. Los demonios recibirán un castigo eterno.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmdccxcviii{Aquellos que furtivamente alcancen a oír algo de los ángeles serán alcanzados por una centella fulminante.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmdccxcix{Pregúntales [a quienes desmienten la Resurrección]: ``¿Acaso creen que la creación del ser humano fue más difícil que la del resto [del universo]?" Los creé de barro pegajoso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmdccc{Tú te maravillas, pero ellos se burlan,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmdccci{cuando son exhortados no reflexionan,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmdcccii{cuando ven un milagro lo ridiculizan\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmdccciii{y dicen: ``Esto no es más que hechicería evidente,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmdccciv{¿acaso cuando muramos y seamos polvo y huesos, seremos resucitados?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmdcccv{¿Acaso nuestros antepasados también [serán resucitados]?"\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmdcccvi{Diles [¡oh, Mujámmad!]: ``Sí, y sufrirán una gran humillación".\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmdcccvii{Solo bastará que se sople una vez [la trompeta y resucitarán], y entonces comenzarán a observar\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmdcccviii{y dirán: ``¡Ay de nosotros! En este día deberemos rendir cuentas [por nuestras obras]".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmdcccix{[Se les dirá:] ``Este es el Día del Juicio que negaban".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmdcccx{[Se les ordenará a los ángeles:] ``Congreguen a quienes fueron [idólatras y] cometieron injusticias junto con sus pares [en la incredulidad] y a los [ídolos] que adoraban\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmdcccxi{en lugar de Dios, luego arréenlos por el camino que los conducirá al Infierno,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmdcccxii{pero deténganlos [antes de arrojarlos] porque serán interrogados.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmdcccxiii{[Se les preguntará:] ``¿Qué sucede que no se ayudan unos a otros?"\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmdcccxiv{Pero ese día estarán entregados,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmdcccxv{y comenzarán a reclamarse unos a otros.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmdcccxvi{Dirán [a sus ídolos]: ``Ustedes, con su poder, nos forzaron a seguirlos".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmdcccxvii{Pero [los ídolos] responderán: ``No, simplemente no creyeron [en Dios y nos idolatraron],\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmdcccxviii{pues nosotros no teníamos poder alguno sobre ustedes [y eligieron libremente la incredulidad]; eran transgresores.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmdcccxix{Hoy se cumple la amenaza que Nuestro Señor nos hizo, y sufriremos el castigo [por nuestra incredulidad].\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmdcccxx{Nosotros solo los sedujimos y ustedes nos siguieron, desviándose igual que nosotros".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxi{[Entonces Dios dirá:] ``Todos ustedes compartirán el castigo.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxii{Eso haré con los pecadores".\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxiii{Cuando se les decía: ``No hay nada ni nadie con derecho a ser adorado salvo Dios", respondían con arrogancia\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxiv{diciendo: ``¿Acaso vamos a dejar a nuestros ídolos por las palabras de un poeta loco?"\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxv{[Dios les dirá:] ``Él se presentó con la Verdad, y corroboró el Mensaje de los Profetas que lo precedieron".\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxvi{Ustedes [que rechazaron el Mensaje] sufrirán un castigo doloroso.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxvii{Pero sepan que solo se les retribuirá por lo que [ustedes mismos] hicieron.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxviii{En cambio, los siervos sinceros de Dios,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxix{ellos tendrán la recompensa prometida:\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxx{Los frutos que deseen, y serán honrados\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxi{en los Jardines de las Delicias,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxii{donde estarán reclinados sobre sofás, unos frente a otros.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxiii{Y [bellos sirvientes] circularán entre ellos con una copa de un manantial eterno,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxiv{blanco y delicioso para quienes lo beban,\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxv{que no les provocará jaqueca ni embriaguez.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxvi{También tendrán mujeres [huríes] de mirar recatado, y de ojos hermosos y grandes,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxvii{como si fueran perlas celosamente guardadas.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxviii{Y se preguntarán [los creyentes en el Paraíso] unos a los otros.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmdcccxxxix{Uno de ellos dirá: ``Yo tenía un compañero [incrédulo]\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmdcccxl{que me decía: ¿Acaso tú eres de los que creen en la Resurrección?\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmdcccxli{¿Acaso después que muramos y nos convirtamos en tierra y huesos vamos a ser condenados?"\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlii{Dirá [el creyente a sus compañeros del Paraíso]: ``¿Quieren observar [el Infierno a ver qué ha sido de él]?"\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmdcccxliii{Y cuando observe lo verá [a quien era su compañero] en medio del fuego del Infierno.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmdcccxliv{Entonces le dirá: ``¡Por Dios! Poco faltó para que me arruinaras,\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlv{y de no ser por la gracia de mi Señor, habría sido uno de los condenados.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlvi{Ahora no hemos de morir\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlvii{después de haber pasado por la primera muerte, y no seremos castigados.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlviii{Este es el éxito grandioso".\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmdcccxlix{¡Vale la pena obrar para alcanzarlo!\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmdcccl{¿Qué es mejor, esta morada [del Paraíso] o el árbol de Zaqqum?,\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmdcccli{el que puse para castigar a los que cometieron injusticias.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmdccclii{Es un árbol que crece en lo más profundo del Infierno;\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmdcccliii{sus frutos son como cabezas de demonios.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmdcccliv{De él comerán y llenarán sus vientres [los condenados].\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmdccclv{Luego beberán una mezcla de agua hirviente,\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmdccclvi{y serán regresados al fuego.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmdccclvii{Ellos [en la vida mundanal] encontraron que sus padres estaban descarriados,\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmdccclviii{y aun así siguieron sus pasos.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmdccclix{La mayoría de los pueblos que los precedieron también se habían extraviado.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmdccclx{Por ello les envié [Profetas] amonestadores.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmdccclxi{Pero observa dónde terminaron aquellos que fueron advertidos,\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmdccclxii{excepto los siervos fieles a Dios.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmdccclxiii{Cuando Noé Me invocó, ¡y qué mejor que invocar a Quien responde todas las súplicas!,\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmdccclxiv{lo salvé a él y a su familia de la gran angustia,\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmdccclxv{e hice que su descendencia fueran los sobrevivientes.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmdccclxvi{Dejé su historia [como enseñanza] para la posteridad.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmdccclxvii{¡Que la paz sea con Noé entre todas las criaturas!\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmdccclxviii{Así es como recompenso a los que hacen el bien.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmdccclxix{Él era uno de Mis siervos creyentes.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmdccclxx{A los otros [los que no creyeron] los ahogué.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxi{Abraham era de los que lo siguieron [a Noé en su fe monoteísta],\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxii{cuando invocó a su Señor con un corazón puro\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxiii{y dijo a su padre y a su pueblo: ``¿Qué es lo que adoran?\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxiv{¿Prefieren la mentira de los dioses en lugar de Dios?\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxv{¿Qué opinan del Señor del universo?"\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxvi{Entonces echó una mirada a las estrellas,\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxvii{y exclamó: ``Estoy enfermo".\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxviii{Entonces lo abandonaron dándole la espalda.\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxix{[Abraham] se dirigió hacia los ídolos [de su pueblo] y dijo: ``¿Por qué no comen?\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxx{¿Por qué no pronuncian palabra?"\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxi{Entonces los destrozó con toda su fuerza.\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxii{[Cuando los idolatras se enteraron,] se abalanzaron sobre él enfurecidos.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxiii{[Abraham les dijo:] ``¿Acaso adoran lo que ustedes mismos tallan?\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxiv{Dios es Quien los creó a ustedes y a lo que ustedes hacen".\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxv{Dijeron: ``Construiremos una hoguera y te arrojaremos al fuego llameante".\qt@no{(97)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxvi{Tramaron contra él, pero Dios [desbarató sus planes y] los humilló.\qt@no{(98)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxvii{Dijo [Abraham]: ``Emigraré a donde mi Señor me ordene. ¡Él me guiará!\qt@no{(99)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxviii{¡Oh, Señor mío! Concédeme un hijo justo".\qt@no{(100)}}
+\qt@newcmd\qurantrans@es@mmmdccclxxxix{Le anuncié que le daría un niño sensato.\qt@no{(101)}}
+\qt@newcmd\qurantrans@es@mmmdcccxc{Cuando [Ismael] alcanzó la pubertad, [Abraham] le dijo: ``¡Oh, hijito mío! He visto en sueños que te sacrificaba; dime, qué opinas". Le dijo: ``¡Oh, padre mío! Haz lo que te ha sido ordenado; encontrarás, si Dios quiere, que seré de los pacientes".\qt@no{(102)}}
+\qt@newcmd\qurantrans@es@mmmdcccxci{Cuando ambos se resignaron, y [Abraham] lo echó sobre la frente [a Ismael para sacrificarlo],\qt@no{(103)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcii{Lo llamé: ``¡Oh, Abraham!\qt@no{(104)}}
+\qt@newcmd\qurantrans@es@mmmdcccxciii{Has cumplido con lo que viste [en tus sueños]. Así recompenso a los que hacen el bien".\qt@no{(105)}}
+\qt@newcmd\qurantrans@es@mmmdcccxciv{Esa fue una dura prueba.\qt@no{(106)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcv{Pero lo rescaté [a su hijo, ordenando a Abraham que sacrificara en su lugar un cordero] e hiciera una gran ofrenda,\qt@no{(107)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcvi{y dejé su historia [como enseñanza] para la posteridad.\qt@no{(108)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcvii{¡Qué la paz sea con Abraham!\qt@no{(109)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcviii{Así es como recompenso a los que hacen el bien.\qt@no{(110)}}
+\qt@newcmd\qurantrans@es@mmmdcccxcix{Él era uno de Mis siervos creyentes.\qt@no{(111)}}
+\qt@newcmd\qurantrans@es@mmmcm{Lo albricié con [el nacimiento de] Isaac, quien sería un Profeta virtuoso.\qt@no{(112)}}
+\qt@newcmd\qurantrans@es@mmmcmi{Lo bendije a él y a Isaac, y decreté que en su descendencia hubiera quien obrara el bien y quien fuera abiertamente [incrédulo e] injusto consigo mismo.\qt@no{(113)}}
+\qt@newcmd\qurantrans@es@mmmcmii{Agracié a Moisés y a Aarón,\qt@no{(114)}}
+\qt@newcmd\qurantrans@es@mmmcmiii{y los salvé junto con su pueblo de una gran angustia.\qt@no{(115)}}
+\qt@newcmd\qurantrans@es@mmmcmiv{Los socorrí, y fueron ellos los vencedores.\qt@no{(116)}}
+\qt@newcmd\qurantrans@es@mmmcmv{Les concedí un Libro esclarecedor,\qt@no{(117)}}
+\qt@newcmd\qurantrans@es@mmmcmvi{y los guie por el sendero recto.\qt@no{(118)}}
+\qt@newcmd\qurantrans@es@mmmcmvii{Y dejé su historia [como enseñanza] para la posteridad,\qt@no{(119)}}
+\qt@newcmd\qurantrans@es@mmmcmviii{¡Que la paz sea con Moisés y Aarón!\qt@no{(120)}}
+\qt@newcmd\qurantrans@es@mmmcmix{Así es como recompenso a los que hacen el bien.\qt@no{(121)}}
+\qt@newcmd\qurantrans@es@mmmcmx{Ambos eran de Mis siervos creyentes.\qt@no{(122)}}
+\qt@newcmd\qurantrans@es@mmmcmxi{Elías también era de Mis Mensajeros.\qt@no{(123)}}
+\qt@newcmd\qurantrans@es@mmmcmxii{Dijo a su pueblo: ``¿Es que no van a tener temor de Dios?\qt@no{(124)}}
+\qt@newcmd\qurantrans@es@mmmcmxiii{Invocan a Ba‘l, y dejan de lado al mejor de los creadores:\qt@no{(125)}}
+\qt@newcmd\qurantrans@es@mmmcmxiv{Dios, su Señor y el sus antepasados".\qt@no{(126)}}
+\qt@newcmd\qurantrans@es@mmmcmxv{Pero lo desmintieron, y tendrán que comparecer.\qt@no{(127)}}
+\qt@newcmd\qurantrans@es@mmmcmxvi{Excepto los siervos fieles a Dios.\qt@no{(128)}}
+\qt@newcmd\qurantrans@es@mmmcmxvii{Dejé su historia [como enseñanza] para la posteridad.\qt@no{(129)}}
+\qt@newcmd\qurantrans@es@mmmcmxviii{¡Qué la paz sea con Elías!\qt@no{(130)}}
+\qt@newcmd\qurantrans@es@mmmcmxix{Así es como recompenso a los que hacen el bien.\qt@no{(131)}}
+\qt@newcmd\qurantrans@es@mmmcmxx{Él era uno de Mis siervos creyentes.\qt@no{(132)}}
+\qt@newcmd\qurantrans@es@mmmcmxxi{Lot también fue de Mis Mensajeros.\qt@no{(133)}}
+\qt@newcmd\qurantrans@es@mmmcmxxii{Lo salvé a él y a toda su familia,\qt@no{(134)}}
+\qt@newcmd\qurantrans@es@mmmcmxxiii{excepto a su mujer, que se sentenció [a ella misma] junto a los condenados.\qt@no{(135)}}
+\qt@newcmd\qurantrans@es@mmmcmxxiv{Luego aniquilé a los demás.\qt@no{(136)}}
+\qt@newcmd\qurantrans@es@mmmcmxxv{Ustedes [¡oh, incrédulos!] pasan por sus ruinas de día\qt@no{(137)}}
+\qt@newcmd\qurantrans@es@mmmcmxxvi{y de noche. ¿Es que no reflexionan?\qt@no{(138)}}
+\qt@newcmd\qurantrans@es@mmmcmxxvii{Jonás también fue de Mis Mensajeros.\qt@no{(139)}}
+\qt@newcmd\qurantrans@es@mmmcmxxviii{Cuando se fugó en el barco abarrotado,\qt@no{(140)}}
+\qt@newcmd\qurantrans@es@mmmcmxxix{lo echaron a la suerte y él fue el perdedor.\qt@no{(141)}}
+\qt@newcmd\qurantrans@es@mmmcmxxx{Cuando [fue arrojado al mar] una ballena se lo tragó. Jonás cometió un acto reprochable,\qt@no{(142)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxi{y si no fuera porque él era de los que glorifican a Dios,\qt@no{(143)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxii{hubiera permanecido en su vientre hasta el Día de la Resurrección.\qt@no{(144)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxiii{Pero lo arrojé a un lugar desolado, y su piel estaba tan débil\qt@no{(145)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxiv{que ordené crecer una planta de calabaza para que lo cubriera.\qt@no{(146)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxv{Luego lo envié a [una población de] más de cien mil personas\qt@no{(147)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxvi{y todos creyeron, y los dejé disfrutar hasta que la muerte les llegó.\qt@no{(148)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxvii{Pregúntales [¡oh, Mujámmad!, a los idólatras de tu pueblo]: ``¿[Qué argumentos tienen para afirmar] Que tu Señor tiene hijas mujeres y ellos los hijos varones?"\qt@no{(149)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxviii{¿Acaso fueron testigos cuando creé a los ángeles, para afirmar que son de sexo femenino?\qt@no{(150)}}
+\qt@newcmd\qurantrans@es@mmmcmxxxix{Entre las mentiras que inventaron:\qt@no{(151)}}
+\qt@newcmd\qurantrans@es@mmmcmxl{``Dios ha engendrado". Mienten.\qt@no{(152)}}
+\qt@newcmd\qurantrans@es@mmmcmxli{¿Escogió a las hijas sobre los hijos [siendo el creador de ambos]?\qt@no{(153)}}
+\qt@newcmd\qurantrans@es@mmmcmxlii{¿Qué les pasa? ¿Cómo es que juzgan?\qt@no{(154)}}
+\qt@newcmd\qurantrans@es@mmmcmxliii{¿No van a pensar [antes de hablar]?\qt@no{(155)}}
+\qt@newcmd\qurantrans@es@mmmcmxliv{¿O acaso tienen una prueba válida [de lo que afirman]?\qt@no{(156)}}
+\qt@newcmd\qurantrans@es@mmmcmxlv{Traigan entonces el libro, si son veraces.\qt@no{(157)}}
+\qt@newcmd\qurantrans@es@mmmcmxlvi{También inventaron un parentesco entre Dios y los yinnes, pero los yinnes saben bien que comparecerán [ante Dios] para ser juzgados.\qt@no{(158)}}
+\qt@newcmd\qurantrans@es@mmmcmxlvii{¡Glorificado sea Dios! Él está por encima de lo que Le atribuyen.\qt@no{(159)}}
+\qt@newcmd\qurantrans@es@mmmcmxlviii{Excepto los siervos fieles de Dios [que no le asocian nada ni lo describen como no es propio de Él].\qt@no{(160)}}
+\qt@newcmd\qurantrans@es@mmmcmxlix{Ustedes [¡oh, idólatras!] y lo que adoran en lugar de Dios\qt@no{(161)}}
+\qt@newcmd\qurantrans@es@mmmcml{solo podrán desviar\qt@no{(162)}}
+\qt@newcmd\qurantrans@es@mmmcmli{a quien Dios permitió que se desvíe y arda en el fuego del Infierno.\qt@no{(163)}}
+\qt@newcmd\qurantrans@es@mmmcmlii{[Los ángeles dicen:] ``No hay entre nosotros quien no tenga un lugar asignado,\qt@no{(164)}}
+\qt@newcmd\qurantrans@es@mmmcmliii{y nos ordenamos en filas [para adorar a nuestro Señor].\qt@no{(165)}}
+\qt@newcmd\qurantrans@es@mmmcmliv{Todos nosotros Lo glorificamos".\qt@no{(166)}}
+\qt@newcmd\qurantrans@es@mmmcmlv{Solían decir [los idólatras, antes de que tú ¡oh, Mujámmad! fueras enviado a ellos]:\qt@no{(167)}}
+\qt@newcmd\qurantrans@es@mmmcmlvi{``Si nos llegara el Mensaje como les llegó a los pueblos anteriores,\qt@no{(168)}}
+\qt@newcmd\qurantrans@es@mmmcmlvii{sin duda seríamos fervientes siervos de Dios".\qt@no{(169)}}
+\qt@newcmd\qurantrans@es@mmmcmlviii{Pero cuando les llegó lo negaron. ¡Ya verán [el castigo que les aguarda]!\qt@no{(170)}}
+\qt@newcmd\qurantrans@es@mmmcmlix{Fue decretado para Mis siervos Mensajeros\qt@no{(171)}}
+\qt@newcmd\qurantrans@es@mmmcmlx{que serían auxiliados,\qt@no{(172)}}
+\qt@newcmd\qurantrans@es@mmmcmlxi{y que Mi ejército sería el vencedor.\qt@no{(173)}}
+\qt@newcmd\qurantrans@es@mmmcmlxii{Apártate [¡oh, Mujámmad!] de los que rechazan el Mensaje por un tiempo,\qt@no{(174)}}
+\qt@newcmd\qurantrans@es@mmmcmlxiii{y ten paciencia con ellos, que ya pronto verán.\qt@no{(175)}}
+\qt@newcmd\qurantrans@es@mmmcmlxiv{¿Acaso quieren que se precipite Mi castigo?\qt@no{(176)}}
+\qt@newcmd\qurantrans@es@mmmcmlxv{¡Qué terrible despertar les aguardaría a los que fueron advertidos, si Mi castigo se desencadenase sobre ellos [como pretenden]!\qt@no{(177)}}
+\qt@newcmd\qurantrans@es@mmmcmlxvi{Apártate [¡oh, Mujámmad!] de los que rechazan el Mensaje por un tiempo,\qt@no{(178)}}
+\qt@newcmd\qurantrans@es@mmmcmlxvii{y ten paciencia, que ya pronto verán [el castigo que les aguarda].\qt@no{(179)}}
+\qt@newcmd\qurantrans@es@mmmcmlxviii{¡Glorificado sea tu Señor, el dueño del poder absoluto! Él está por encima de lo que Le atribuyen.\qt@no{(180)}}
+\qt@newcmd\qurantrans@es@mmmcmlxix{¡Que la paz sea con todos los Mensajeros!\qt@no{(181)}}
+\qt@newcmd\qurantrans@es@mmmcmlxx{¡Y alabado sea Dios, Señor del universo!\qt@no{(182)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxi{\basmalahes Sad. Juro por el Corán que nos recuerda\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxii{que los que niegan la verdad están hundidos en la soberbia y la oposición [ciega].\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxiii{¡Cuántas generaciones destruí antes que ellos! Solo imploraron cuando ya era demasiado tarde para salvarse [del castigo].\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxiv{Se asombran de que les llegue un amonestador, y dicen los que se niegan a creer: ``Es un hechicero mentiroso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxv{¿Acaso pretende que en lugar de muchos ídolos adoremos a una sola divinidad? Eso es algo insólito".\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxvi{Los nobles y poderosos de entre ellos se marcharon diciendo: ``Déjenlo, y sigan [adorando] a sus ídolos, pues él solo pretende obtener poder sobre nosotros.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxvii{No hemos oído que el último pueblo que recibió una revelación [los cristianos] creyera en esto. Lo que dices es una gran mentira.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxviii{¿Por qué tendría que haber sido él el elegido entre nosotros para transmitir el Mensaje?" Pero ellos dudan de Mi revelación porque no han sufrido aún ningún castigo.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxix{¿Acaso ellos poseen las llaves de la misericordia de tu Señor, el Poderoso, el Dadivoso?\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxx{¿O les pertenece el reino de los cielos, la Tierra y todo cuanto existe entre ambos? Si es así, que asciendan [al cielo y decidan los asuntos de la creación].\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxi{[No te entristezcas, ¡oh, Mujámmad!, por su enemistad.] Ellos son un ejército de aliados [para combatir la Verdad], pero pronto serán derrotados.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxii{Ya antes que ellos los pueblos de Noé, de ‘Ad y del Faraón, poseedor de un ejército poderoso, desmintieron [a los Profetas que les envié].\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxiii{También lo hicieron los pueblos de Zamud, Lot y los habitantes del bosque. Todos estos eran pueblos poderosos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxiv{Todos ellos desmintieron a los Mensajeros, y merecieron Mi castigo.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxv{Solo les queda [a los idólatras] esperar el toque de la trompeta [el Día de la Resurrección], y entonces no habrá posibilidad de volver [a este mundo].\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxvi{Pero aun así dicen [burlándose desafiantes]: ``¡Señor nuestro! Muéstranos el registro de nuestras obras y adelántanos una parte del castigo antes del Día del Juicio".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxvii{Sé paciente [¡oh, Mujámmad!] ante lo que dicen, y recuerda a Mi siervo [el Profeta] David, quien fue dotado con una gran fuerza. Él siempre volvía a Dios en todos sus asuntos y se arrepentía con sinceridad.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxviii{Le sometí las montañas, para que junto con él glorificaran las alabanzas al anochecer y al amanecer,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmcmlxxxix{también le sometí a las aves que se congregaban en torno a él. Todos [las montañas y las aves] le obedecían.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmcmxc{Afiancé su reino, lo agracié con la sabiduría [la profecía] y un juicio certero.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmcmxci{Te relataré [¡oh, Mujámmad!] la historia de los dos demandantes, cuando treparon [la pared] del templo.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmcmxcii{Cuando se presentaron ante David, este se atemorizó de ellos. Le dijeron: ``No temas, solo somos dos demandantes, uno ha sido injusto con el otro; juzga entre nosotros con equidad, sé imparcial y guíanos hacia el camino correcto.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmcmxciii{Este es mi hermano, posee noventa y nueve ovejas, y yo tengo una sola; y me dijo: ‘Deja que yo me haga cargo de ella’, y ahora me supera con sus argumentos [para quedarse con ella]".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmcmxciv{Dijo David [sin escuchar al otro demandante]: ``Él ha sido injusto contigo al pedirte que dejes que tu oveja se sume a las de él; muchos socios se perjudican unos a otros, excepto los que creen y obran rectamente; pero, ¡qué pocos son!" David comprendió que quise ponerlo a prueba [mediante este juicio], y pidió perdón a su Señor, se prosternó y se arrepintió.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmcmxcv{Lo perdoné, pues es de los más allegados a Mí, y tendrá [en la otra vida] una bella morada [en el Paraíso].\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmcmxcvi{¡Oh, David! Te he designado gobernante en la Tierra, juzga con equidad entre la gente y no sigas las pasiones, pues ellas desvían del sendero de Dios; y quienes se desvíen del sendero de Dios sepan que recibirán un castigo severo por haberse olvidado del Día del Juicio.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmcmxcvii{No he creado el cielo, la Tierra y todo cuanto hay entre ambos en vano. Eso es lo que creen los que rechazan la verdad, pero, ¡ay de los incrédulos! ¡Qué [castigo les aguarda en] el Infierno!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmcmxcviii{¿Acaso sería propio de Mí considerar a los creyentes que obran rectamente igual que a los que siembran la corrupción en la Tierra, o considerar a los que tienen temor de Dios igual que a los inmorales?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmcmxcix{Este Libro que te revelo [¡oh, Mujámmad!] encierra grandes bendiciones, para que mediten sobre sus signos y reflexionen los dotados de intelecto.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmm{Agracié a David con [su hijo] Salomón, quien fue un siervo excelente, pues volvía a Mí en todos sus asuntos y se arrepentía con sinceridad.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmi{Una tarde fueron expuestos delante de él unos hermosos caballos,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmii{[luego de permanecer toda la tarde jugando con ellos descuidó la oración, y entonces Salomón] dijo: ``Cómo he podido preferir éstos caballos al recuerdo de Dios hasta que el Sol se ocultó".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmiii{[Dijo Salomón:] ``Traédmelos". Y acarició sus cuellos y sus patas.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmiv{Puse a prueba a Salomón [despojándolo de su reino] cuando puse en su trono un demonio con figura humana [que disponía de su reino como quería]. Entonces, [Salomón] se dirigió a su Señor\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmv{y exclamó: ``¡Oh, Señor mío! Perdóname y concédeme un reino tan poderoso, que nadie pueda igualarlo después de mí; Tú eres el Dadivoso".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmvi{Entonces puse a su servicio el viento, que corría según su orden adonde él quisiera,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmvii{y a los yinnes, algunos [creyentes] para la construcción, otros como buzos [que extraían perlas],\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmviii{y otros [demonios rebeldes] encadenados unos con otros.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmix{[Le dije:] ``Éste es el reino con el que te he agraciado; haz uso de él como quieras, pues no deberás rendir cuenta de ello".\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmx{Salomón es de Mis allegados, y por eso [en la otra vida] tendrá una bella morada [en el Paraíso].\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmxi{Recuerda a Mi siervo [el Profeta] Job, cuando invocó a su Señor: ``El demonio se aprovecha de mi enfermedad y sufrimiento [para tentarme a ser desagradecido contigo]".\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmxii{[Le dije:] ``Golpea con tu pie [en la tierra], y haré surgir agua fresca para que te laves con ella y también bebas".\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmxiii{Lo agracié con hijos [como los que tenía] y tantos más, como una misericordia mía, para que sea un recuerdo y motivo de reflexión para los dotados de intelecto.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmxiv{[Le ordené:] ``Toma en tu mano un manojo de hierbas y golpea [simbólicamente] con él a tu esposa, para que no perjures". Job fue paciente [ante todas las adversidades]. ¡Qué excelente siervo; volvía a Dios en todos sus asuntos y se arrepentía con sinceridad!\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmxv{Recuerda a Mis siervos Abraham, Isaac y Jacob, todos ellos dotados de firmeza y visión.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmxvi{Los distinguí encomendándoles [transmitir el Mensaje y] recordar a la gente la morada de la otra vida.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmxvii{Ellos se cuentan entre los virtuosos que he elegido [para transmitir el Mensaje].\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmxviii{Y recuerda a Ismael, Eliseo y Dhul Kifl; todos ellos también se contaron entre los virtuosos [que elegí para trasmitir el Mensaje].\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmxix{Este es un Mensaje [para toda la humanidad]. Los piadosos tendrán una bella morada\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmxx{en los Jardines del Edén. Todas sus puertas estarán abiertas para ellos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmxxi{Estarán recostados [sobre sofás], y pedirán frutas abundantes y [exquisitas] bebidas,\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmxxii{acompañados de doncellas [huríes] de mirar recatado, que tendrán siempre la misma edad.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmxxiii{Esto es lo que se os ha prometido [¡Oh, creyentes!, como recompensa] para el Día del Juicio.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmxxiv{Ese es Mi sustento, que jamás se agotará.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmxxv{¡Así será! En cambio, para los que cometan injusticias habrá una horrible morada.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmxxvi{Este es el Infierno donde sufrirán. ¡Qué pésima morada!\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmxxvii{¡Esto será así! Sufrirán, y allí solo beberán agua hirviendo y las secreciones de las heridas [de quienes son atormentados en el Infierno].\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmxxviii{También recibirán otros castigos similares.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmxxix{[Dirán los ángeles guardianes del Infierno a los líderes de la incredulidad:] ``Este es otro grupo [de sus seguidores] que se precipitará con ustedes [al Infierno]". [Dirán los líderes:] ``Hoy no hay bienvenida para ellos porque arderán en el fuego del Infierno".\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmxxx{Dirán [los seguidores]: ``Tampoco hay bienvenida para ustedes, pues fueron quienes nos arrastraron [al Infierno]". ¡Qué pésima morada [para todos ellos]!\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmxxxi{Dirán [los seguidores]: ``¡Oh, Señor nuestro! Duplícales el castigo del Fuego a quienes nos arrastraron a esto".\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmxxxii{Dirán [los líderes de la incredulidad]: ``¿Qué sucede que no vemos a las personas que considerábamos los malvados?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmxxxiii{¿Acaso nos equivocamos al burlarnos de ellos? ¿O es que están [con nosotros en el Infierno] pero no los vemos?"\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmxxxiv{Así será la disputa entre los moradores del Infierno.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmxxxv{Diles [¡oh, Mujámmad!]: ``Solo soy un amonestador. No existe nada ni nadie con derecho a ser adorado salvo Dios, el Único, el Victorioso,\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmxxxvi{Señor de los cielos, de la Tierra, y de todo cuanto existe entre ellos, el Poderoso, el Remisorio".\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmxxxvii{Diles: ``Lo que les he transmitido es un Mensaje sublime,\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmxxxviii{pero lo rechazan.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmxxxix{[Antes de la revelación] yo no tenía conocimiento acerca de la corte elevada [de ángeles] cuando discutían [sobre la creación de Adán].\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmxl{Me ha sido revelado que soy un amonestador que habla claro."\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmxli{Recuerda [¡oh, Mujámmad!] cuando tu Señor dijo a los ángeles: ``Voy a crear un hombre de barro.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmxlii{Y cuando lo haya plasmado y haya soplado en él su espíritu, hagan una reverencia [en obediencia a Mí] ante él".\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmxliii{Todos los ángeles hicieron la reverencia.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmxliv{Excepto Iblís, quien fue soberbio y se contó entre los incrédulos.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmxlv{Dijo Dios: ``¡Iblís! ¿Qué te impide hacer una reverencia ante lo que creé con Mis dos manos? ¿Te niegas a hacerlo por soberbia o porque te crees un ser superior?"\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmxlvi{Dijo [Iblís]: ``Yo soy superior a él. A mí me creaste de fuego, mientras que a él lo creaste de barro".\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmxlvii{Dijo Dios: ``Sal de aquí, pues te maldigo.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmxlviii{Y esta maldición pesará sobre ti hasta el Día del Juicio".\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmxlix{Dijo [Iblís]: ``¡Oh, Señor mío! Permíteme vivir hasta el Día de la Resurrección".\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmml{Dijo Dios: ``Te concedo la prórroga que Me pides,\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmli{hasta el día cuyo término está prefijado".\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmlii{Dijo [Iblís]: ``¡Juro por Tu poder que los descarriaré a todos,\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmliii{excepto a quienes de Tus siervos hayas protegido!"\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmliv{Dijo Dios: ``La verdad es [lo que he jurado], y la verdad declaro:\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmlv{He de llenar el Infierno contigo y todos los que te sigan".\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmlvi{Diles [¡oh, Mujámmad!]: ``Yo no les pido ninguna remuneración a cambio [de transmitirles el Mensaje], ni soy de los que inventan mentiras.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmmlvii{El Corán es un Mensaje para toda la humanidad.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmmlviii{Y dentro de poco tiempo verán lo que en él se anuncia".\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmmlix{\basmalahes La revelación de este Libro proviene de Dios, el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmlx{Te he revelado el Libro [¡oh, Mujámmad!] con la Verdad; adora solo a Dios rindiéndole culto sincero.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmlxi{¿Acaso no se le debe rendir culto sincero a Dios? Aquellos que toman a otros como protectores [y objeto de adoración] fuera de Él, dicen: ``Solo los adoramos para que nos acerquen a Dios [e intercedan por nosotros]". Dios juzgará entre ellos [y los creyentes] acerca de lo que discrepan. Dios no guía a quien es mentiroso y niega la verdad.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmlxii{Si Dios hubiera querido tomar a alguien como hijo, hubiera elegido a quien quisiera de entre Su creación. ¡Glorificado sea! Él es Dios, el Único, el Victorioso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmlxiii{Creó los cielos y la Tierra con un fin justo y verdadero. Él enrolla [envuelve] la noche en el día, y envuelve el día en la noche, y sometió al Sol y a la Luna haciendo que cada uno recorra su órbita por un plazo prefijado. ¿Acaso Él no es el Poderoso, el Perdonador?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmlxiv{Él los creó a partir de un solo ser, luego de él creó a su pareja, y los agració con ocho ganados en parejas. Los creó en los vientres de sus madres en períodos sucesivos y en tres tinieblas [el vientre, el útero y la placenta]. Él es Dios, su Señor; Él posee el dominio completo. No hay nada ni nadie con derecho a ser adorado salvo Él. ¿Cómo entonces dedican actos de culto a otras deidades?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmlxv{Si no creen, sepan que Dios no necesita de ustedes. No Le agrada la incredulidad de Sus siervos, pero si son agradecidos [creyendo en Su unicidad], Lo complacerán. Sepan que nadie cargará con los pecados ajenos; luego comparecerán ante su Señor y Él les informará sobre lo que hayan realizado. Él bien sabe cuanto hay en los corazones.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmlxvi{Cuando al ser humano le acontece una desgracia, invoca a su Señor y se vuelve a Él [pidiéndole que lo auxilie]; pero luego, cuando Él le concede una gracia, olvida que Lo había invocado antes e iguala a sus ídolos con Dios [dedicándoles actos de adoración y súplicas], descarriando a otros de Su sendero. Dile [a quien se comporte de esta manera]: ``Disfruta por poco tiempo de tu incredulidad, pues serás de los moradores del Infierno".\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmlxvii{¿Acaso se puede comparar a [ese incrédulo] con quien se prosterna e inclina [en oración] consagrándose en la noche, está consciente de la otra vida y anhela la misericordia de su Señor? Dile: ``¿Acaso son iguales los que tienen conocimiento y los que no tienen conocimiento?" Solo reflexionan los dotados de entendimiento.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmlxviii{Diles: ``¡Oh, siervos creyentes! Tengan temor de su Señor, y sepan que quienes obren bien en este mundo recibirán una bella recompensa, y que la Tierra de Dios es amplia. La recompensa para quienes sean pacientes y perseverantes no tendrá límite".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmlxix{Diles: ``Me ha sido ordenado adorar solamente a Dios, y rendirle culto sincero,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmlxx{y me ha sido ordenado que sea el primero en someterse a Él".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmlxxi{Diles: ``Pero yo temo, si desobedezco [las órdenes de] mi Señor, el castigo en un día difícil [el Día del Juicio]".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmlxxii{Diles: ``Yo adoro solamente a Dios, y Le rindo culto sincero.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmlxxiii{Adoren lo que quieran en lugar de Él. Los desdichados serán los que se descarríen a sí mismos y a su gente el Día de la Resurrección [ingresando al Infierno]. ¿Acaso no es esta la mayor ruina?"\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmlxxiv{Serán cubiertos por encima y por debajo por nubes de fuego. Así atemoriza Dios a Sus siervos. ¡Oh, siervos Míos! Tengan temor de Mí [y crean].\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmlxxv{Quienes se aparten de los ídolos negándose a adorarlos y se vuelvan a Dios, serán los bienaventurados. Albricia [¡oh, Mujámmad!] a Mis siervos\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmlxxvi{que escuchan todo lo que se dice, pero siguen lo mejor [la palabra de Dios y Su Mensajero]. Ellos son los guiados por Dios, son los dotados de entendimiento.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmlxxvii{¿Acaso tú podrás salvar [guiando] a quien [en virtud de su libre albedrio] Dios ha decretado que sea de los moradores del Infierno? ¿O es que puedes rescatar a quien ha sido condenado al Fuego?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmlxxviii{Pero quienes hayan tenido temor de su Señor, morarán en la otra vida en habitaciones elevadas, y sobre ellos habrá otras habitaciones [donde estarán quienes hayan alcanzado grados más elevados], todas construidas de oro y plata, [en jardines] donde correrán ríos. Ésta es la promesa de Dios, y Dios no falta a Su promesa.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmlxxix{¿Acaso no ves que Dios hace descender el agua del cielo, y luego hace que surja como manantiales en la tierra, y hace brotar con ella cultivos de diversos colores que se secan y puedes ver que se tornan amarillentos y finalmente se convierten en heno? En eso hay un motivo de reflexión para los dotados de entendimiento.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmlxxx{¿Acaso se puede comparar a aquel a quien Dios abrió su corazón al Islam y está colmado por la luz de su Señor [con quien se niega a creer]? ¡Cuán desdichados son quienes tienen el corazón endurecido al Mensaje de Dios! Ellos están en un desvío evidente.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxi{Dios ha revelado el mejor de los Mensajes, que es un Libro armonioso [sin contradicciones] que reitera [las enseñanzas]. Su recitación hace erizar la piel de quienes tienen temor de su Señor. [Los creyentes] cuando recuerdan a Dios, su piel y sus corazones se apaciguan. Ésta es la guía de Dios, con la que Él encamina a quien quiere; pero sepan que para quien Dios decreta el desvío, no habrá nadie que lo pueda guiar.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxii{¿Acaso aquel que se resguarda del terrible castigo del Día de la Resurrección [se equipara con quien se siente seguro contra él]? A los que cometieron injusticias se les dirá [el Día del Juicio]: ``Sufran [el castigo por] lo que obraron".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxiii{Otras personas en la antigüedad desmintieron [a los Mensajeros], pero fueron sorprendidos por el castigo desde donde menos lo esperaban.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxiv{Dios los hizo sufrir la humillación en la vida mundanal, y el castigo de la otra vida será mayor; si lo supieran.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxv{He expuesto en el Corán toda clase de ejemplos para que reflexionen.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxvi{Este Corán ha sido revelado en idioma árabe y sin contradicciones, para que tengan temor de Dios.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxvii{Dios da un ejemplo sobre [la idolatría:] ¿Acaso son iguales un hombre que tiene muchos amos asociados que discrepan entre sí, y un hombre al servicio de un solo amo? ¡Alabado sea Dios! [No se equiparan] Pero la mayoría de los seres humanos lo ignoran.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxviii{Tú [¡oh, Mujámmad!] has de morir y ellos también han de morir [pues ningún ser creado es inmortal].\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmlxxxix{Luego, el Día de la Resurrección ante su Señor discutirán [intentando excusarse].\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmxc{¿Acaso existe alguien más injusto que quien inventa mentiras sobre Dios y desmiente la Verdad cuando se le presenta? El Infierno será la morada de los que rechazan la verdad.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmxci{Quien les ha traído la Verdad [el Profeta Mujámmad] y aquellos que creyeron en él y lo siguieron, son los piadosos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmxcii{Ellos tendrán cuanto deseen junto a su Señor. Esa será la recompensa de los que hacen el bien.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmxciii{Dios les perdonará las peores faltas que hubieran cometido, y los recompensará por las mejores buenas obras que hayan realizado.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmxciv{¿Acaso Dios no es suficiente [como Protector] para Su siervo? Pero ellos [los idólatras] intentan atemorizarte con sus ídolos [a los cuales adoran] en lugar de Él. Y a quien Dios permite que se desvíe nadie lo podrá guiar.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmxcv{A quien Dios decretó que siguiera la guía, no habrá nadie que lo pueda desviar. ¿Acaso no es Dios Poderoso y el dueño de la retribución [que merecen]?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmxcvi{Si les preguntas [a los idólatras:] ``¿Quién creó los cielos y la Tierra?" Te responderán: ``¡Dios!" Diles: ``¿Acaso no han pensado qué es aquello que invocan en vez de Dios? ¿Si Dios quisiera azotarme con algún daño, acaso sus ídolos me podrían librar de él? ¿O si deseara Dios cubrirme con Su misericordia, podrían ellos impedirlo?" Diles: ``Me es suficiente con Dios. Quienes confíen verdaderamente en Dios, que se encomienden a Él".\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmxcvii{Diles: ``¡Oh, pueblo mío! Obren como quieran, que yo obraré [acorde a lo que me ha sido revelado]. Ya sabrán\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmxcviii{a quién le corresponde el castigo humillante, y quién recibirá un castigo eterno [en la otra vida]".\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmxcix{[¡Oh, Mujámmad!] Te he revelado el Libro con la Verdad para [que se lo transmitas a] la gente. Quien siga la guía lo hará en beneficio propio, pero quien se desvíe lo hará en detrimento propio. Sabe que tú no eres responsable de lo que ellos hagan.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmc{Dios toma las almas en el momento de la muerte, y durante el sueño las de quienes aún no les ha llegado su hora. Retiene aquellas de quienes decretó su muerte, y devuelve las otras hasta [que se cumpla] el plazo prefijado [para su muerte]. En esto hay signos para quienes reflexionan.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmci{Sin embargo [los idólatras] toman [ídolos como] intercesores ante Dios. Diles: ``¿Lo hacen a pesar de que ellos no pueden hacer nada, ni tampoco entienden?"\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcii{Diles: ``Dios es Quien autoriza toda intercesión. A Él pertenece el reino de los cielos y la Tierra; ante Él comparecerán".\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmciii{Cuando se menciona a Dios como única divinidad, los corazones de los que se niegan a creer en el más allá sienten rechazo, pero cuando se mencionan a otros [ídolos] en lugar de Él, entonces se alegran.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmciv{Di: ``¡Oh, Dios! Tú eres el Creador de los cielos y de la Tierra, el conocedor de lo oculto y lo manifiesto; Tú juzgarás entre Tus siervos sobre lo que solían discutir [sobre sus creencias]".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcv{Si los que cometen injusticias [idolatrías] poseyeran todo cuanto hay en la Tierra y otra cantidad semejante, querrían entregarlo como rescate para salvarse del castigo el Día de la Resurrección; pero Dios ya les mostrará lo que no se imaginan.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcvi{Se les mostrarán las obras malas que cometieron, y el castigo del que se burlaban los rodeará.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcvii{Cuando al ser humano le sucede una desgracia Me invoca; y luego, cuando le concedo una gracia, dice: ``La gracia que se me ha concedido es porque me lo merecía debido a mi capacidad". Esto es una prueba [de Dios], pero la mayoría lo ignora.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcviii{Así dijeron sus ancestros, y [cuando los sorprendió el castigo] no los beneficiaron en absoluto las riquezas que habían obtenido.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcix{Los azotó el castigo por lo que cometieron; los opresores serán castigados por sus malas obras, y no lo podrán evitar.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcx{¿Acaso no saben que Dios concede un sustento abundante a quien Él quiere y se lo restringe a quien quiere? En esto hay signos para los que creen.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcxi{Di: ``¡Oh, siervos míos que están sumidos en el pecado [perjudicándose a sí mismos]! No desesperen de la misericordia de Dios. Dios tiene poder para perdonar todos los pecados. Él es el Perdonador, el Misericordioso".\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcxii{Arrepiéntanse ante su Señor y sométanse a Él como musulmanes, antes de que los sorprenda el castigo, y entonces no sean socorridos.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcxiii{Sigan los preceptos que les han sido revelados [en el Corán] por su Señor, antes de que repentinamente les llegue el castigo, sin que se den cuenta,\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcxiv{[y entonces] digan: ``¡Qué pena! Ahora estoy perdido por haber desobedecido las órdenes de Dios, y realmente me contaba entre quienes se burlaban [del castigo]".\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcxv{O digan: ``¡Cómo desearía que Dios me hubiera guiado para contarme entre los piadosos!"\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcxvi{O digan, cuando vean el castigo: ``Si pudiera tener otra oportunidad [en la vida mundanal], entonces me contaría entre los que hacen el bien".\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcxvii{[Pero Dios dirá:] ``Ya se les presentaron Mis signos evidentes [en el Corán] y los desmintieron, fueron arrogantes y los rechazaron".\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcxviii{El Día de la Resurrección verás que los rostros de quienes desmintieron a Dios estarán ensombrecidos. ¿Acaso no es el Infierno la morada para los soberbios?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmcxix{Dios salvará a los piadosos y les concederá el triunfo [ingresándolos al Paraíso], y no los alcanzará el castigo ni la tristeza.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmcxx{Dios es el Creador de todas las cosas, y Él es su Custodio.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmcxxi{A Él pertenecen las llaves de los cielos y de la Tierra. Quienes no crean en los signos de Dios serán los perdedores.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmcxxii{Diles [¡oh, Mujámmad! a los idólatras]: ``¿Cómo pretenden que adore a sus ídolos en vez de Dios, ¡oh, ignorantes!?"\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcxxiii{Se te ha revelado [¡oh, Mujámmad!], y también a los [Profetas] que te precedieron, que si dedicas actos de adoración a otro que Dios, tus obras se perderán y te contarás entre los perdedores.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcxxiv{Adora solo a Dios y sé de los agradecidos.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcxxv{[Los idólatras] no han valorado a Dios en Su verdadera magnitud. El Día de la Resurrección contendrá toda la Tierra en Su puño, y los cielos estarán plegados en Su diestra. ¡Glorificado y enaltecido sea Dios! Él está por encima de lo que Le asocian.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcxxvi{Será soplada la trompeta y todos los que estén en los cielos y en la Tierra perecerán, excepto quien Dios quiera; luego será soplada por segunda vez y [todos resucitarán] poniéndose de pie [para ser juzgados]. Entonces verán.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmcxxvii{La Tierra se iluminará con la luz de su Señor, el registro de las obras se expondrá, se hará comparecer a los Profetas y a los testigos, y [la gente] será juzgada con justicia y nadie será oprimido.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcxxviii{Será juzgada cada alma acorde a sus obras, y Él es Quien mejor sabe cuanto hicieron.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcxxix{Los que se negaron a creer serán arriados en grupos hacia el Infierno, y cuando lleguen a él, serán abiertas sus puertas y sus [ángeles] guardianes les dirán: ``¿Acaso no se les presentaron Mensajeros que les transmitieron los signos de su Señor, y les advirtieron sobre la comparecencia de este día?" Responderán: ``¡Sí! Pero [debido a que los desmentimos] se cumplirá el designio de Dios de castigar a los incrédulos".\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmcxxx{Se les dirá: ``Entren por las puertas del Infierno, y morarán allí por toda la eternidad". ¡Qué pésima morada tendrán los soberbios!\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxi{Pero quienes hayan tenido temor de su Señor, serán conducidos al Paraíso en grupos, y cuando lleguen a él, serán abiertas sus puertas y sus [ángeles] guardianes les dirán: ``Con ustedes sea la paz, bienvenidos. Ingresen en él por toda la eternidad".\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxii{Exclamarán: ``¡Alabado sea Dios!, Quien cumplió Su promesa y nos hizo heredar la tierra del Paraíso, para establecernos donde queramos. ¡Qué excelente la recompensa de los que obraron el bien!"\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxiii{Verás a los ángeles, alrededor del Trono, glorificando las alabanzas de su Señor. [El Día del Juicio] se juzgará a la creación con total justicia, y se exclamará: ``¡Alabado sea Dios, Señor del universo!"\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxiv{\basmalahes Ha’. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxv{La revelación de este Libro proviene de Dios, el Poderoso, el que todo lo sabe.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxvi{El Perdonador de los pecados, el que acepta el arrepentimiento, es severo en el castigo y es generoso al conceder Sus gracias. No hay otra divinidad salvo Él, y ante Él han de comparecer.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxvii{No disputan los signos de Dios sino los que se niegan a creer. Que no te deslumbre la aparente prosperidad de sus negocios por la zona, ya que\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxviii{antes que ellos el pueblo de Noé y los aliados también habían desmentido [el Mensaje]. Toda nación se complotó contra su Mensajero. Le discutían con argumentos falsos para destruir la Verdad, y por eso los castigué. ¡Qué terrible fue Mi castigo!\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcxxxix{Así fue como se cumplió el designio de tu Señor sobre los que se negaron a creer: que ellos serían los moradores del Fuego.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcxl{Los [ángeles] que portan el Trono, y los que están a su alrededor, glorifican con alabanzas a su Señor, creen en Él y piden el perdón para los creyentes diciendo: ``¡Señor nuestro! Tú lo abarcas todo con Tu misericordia y sabiduría. Perdona a quienes se arrepienten y siguen Tu camino, y presérvalos del castigo del Fuego.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcxli{¡Señor nuestro! Introdúcelos en los Jardines del Edén que les prometiste, junto a sus padres, esposas y descendientes que fueron piadosos y creyentes. Tú eres el Poderoso, el Sabio.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcxlii{Presérvalos de cometer pecados. Tú te apiadarás, cuando llegue el Día del Juicio, de aquel que haya sido preservado de cometer pecados. Ese será el triunfo grandioso".\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcxliii{Pero a los que se negaron a creer se les dirá: ``La aversión de Dios por ustedes es mayor que el odio que sentirán por ustedes mismos [al ser arrojados al Fuego], ya que fueron invitados a la fe pero la rechazaron".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcxliv{Dirán: ``¡Oh, Señor nuestro! Nos diste la muerte dos veces y nos diste la vida dos veces, reconocemos nuestros pecados; ¿existe alguna forma de salir [del castigo del Infierno]?"\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcxlv{[Se les dirá:] ``Este tormento es porque, cuando se los invitó a adorar a un Dios Único, no creyeron; pero cuando se los invitaba a dedicarle actos de adoración a otros [ídolos] junto a Dios, entonces sí creyeron. El juicio corresponde a Dios, el Sublime, el Supremo.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcxlvi{Él es Quien les muestra Sus signos y les envía la lluvia del cielo como sustento, pero no reflexiona en ello sino quien retorna [a Dios] arrepentido.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcxlvii{Invoquen a Dios y adórenlo con sinceridad, aunque eso disguste a los que se niegan a creer.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcxlviii{Él posee los atributos más sublimes, Señor del Trono. Concede la revelación con Su Mensaje a quien Él quiere de Sus siervos, para que adviertan sobre el día de la comparecencia.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcxlix{Ese día saldrán [de las tumbas] y nada estará oculto a Dios. [Él preguntará:] ``¿Quién es el soberano hoy?" [Y Él mismo responderá:] ``Solo Dios, el Único, el Victorioso".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcl{Hoy cada alma será juzgada por lo que haya realizado. Hoy no se cometerá injusticia alguna. Dios es rápido en ajustar cuentas.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcli{Adviérteles [¡oh, Mujámmad!] sobre la inminencia del Día [del Juicio], donde los corazones se les subirán hasta las gargantas por la angustia. Los que cometieron injusticias no tendrán ningún amigo ni intercesor que sea escuchado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmclii{[Dios] conoce las miradas pérfidas y lo que esconden los corazones.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcliii{Dios juzga con la verdad, y los que invocan en lugar de Él no pueden juzgar nada. Dios todo lo oye, todo lo ve.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcliv{¿Acaso no viajan por el mundo y observan cuál fue el final de sus antecesores? Tenían más poder y dejaron más vestigios sobre la Tierra [que ustedes], pero Dios los castigó [destruyéndolos] por sus pecados, y nadie pudo protegerlos de Dios.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmclv{Esto [fue lo que merecieron] porque se les presentaron sus Mensajeros con las pruebas claras, pero los rechazaron y entonces Dios los castigó. Él es Fortísimo y severo al castigar.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmclvi{Envié a Moisés con Mis signos y pruebas evidentes.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmclvii{[Lo envié] ante el Faraón, Hamán y Qarún, pero le dijeron: ``Eres un hechicero mentiroso".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmclviii{Pero cuando se les presentó con Mi Verdad, dijeron: ``Maten a los hijos de quienes creyeron en él, y dejen con vida a sus mujeres". Pero los planes de los incrédulos fueron en vano.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmclix{Dijo el Faraón [con soberbia]: ``Déjenme, yo mataré a Moisés, y que invoque a su Señor [para que me lo impida]; temo que cambie la religión de ustedes o que siembre la corrupción en la Tierra".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmclx{Dijo Moisés: ``Me amparo en mi Señor y Señor de ustedes, de todo arrogante que no crea del Día del Juicio".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmclxi{Dijo un hombre creyente de la familia del Faraón, que ocultaba su fe: ``¿Matarán a un hombre solo porque dice: ‘Dios es mi Señor’, siendo que les ha presentado milagros de su Señor? Si se trata de un mentiroso, sobre él recaerá su mentira; pero si dice la verdad, los azotará una parte del castigo conque los amenaza. Dios no guía a quien se extralimita y miente.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmclxii{¡Oh, pueblo mío! A ustedes les pertenece el reino hoy, y son quienes dominan en la tierra [de Egipto]. ¿Pero quién nos defenderá del castigo de Dios, si Él lo desencadena sobre nosotros?" Dijo el Faraón: ``No les propongo sino lo que considero correcto, y no los guío sino por el buen camino".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmclxiii{Pero dijo el hombre que creía [de la familia del Faraón]: ``¡Oh, pueblo mío! Temo que les ocurra lo mismo que a los aliados [incrédulos que se complotaron contra sus Mensajeros],\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmclxiv{como ocurrió al pueblo de Noé, ‘Ad y Zamud, y los que les sucedieron [que fueron aniquilados]. Dios no es injusto con Sus siervos.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmclxv{¡Oh, pueblo mío! Temo que [sean castigados] el día de la convocatoria.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmclxvi{Ese día pretenderán huir, pero no tendrán quien los proteja del castigo de Dios. Sepan que a quien Dios abandona en el desvío, no habrá nadie que lo pueda guiar".\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmclxvii{Se les presentó [el Profeta] José antes [que Moisés] con milagros evidentes, pero ustedes permanecieron dudando sobre lo que les mostró [y no creyeron], hasta que cuando murió, dijeron: ``Dios no enviará ningún Mensajero luego de él". Así extravía Dios a quien excede los límites y duda [de Su Mensaje],\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmclxviii{los que discuten los milagros de Dios sin haber recibido un argumento válido, por lo que acrecientan la aversión de Dios y de los creyentes hacia ellos. Así es como Dios sella el corazón de todo arrogante, opresor.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmclxix{Dijo el Faraón: ``¡Oh, Hamán! Constrúyeme una torre para que pueda ascender.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmclxx{Ascender a los cielos y ver a quién adora Moisés, aunque creo que [Moisés] miente". Así fue como [el demonio] le hizo ver al Faraón como buenas sus malas acciones, y logró que se extraviara completamente. Los planes del Faraón fracasaron.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmclxxi{Dijo el [hombre] creyente [de la familia del Faraón]: ``¡Oh, pueblo mío! Síganme, que los guiaré por el camino recto.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmclxxii{¡Oh, pueblo mío! En esta vida mundanal hay solo placeres temporales, mientras que la otra vida es la morada de la eternidad.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmclxxiii{Quien haga una maldad, será castigado acorde a lo cometido, pero quien haga obras buenas y sea creyente, varón o mujer, ingresará al Paraíso y será recompensado sin medida.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmclxxiv{¡Oh, pueblo mío! ¿Qué sucede que los invito a la salvación y ustedes me invitan al Infierno?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmclxxv{Me proponen negar la unicidad de Dios y que dedique actos de adoración a otros [ídolos], pero no tengo conocimiento [que algo merezca ser adorado salvo Él]. Yo los invito a creer en el Poderoso, el Perdonador.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmclxxvi{No hay duda de que aquello a lo que me invitan carece de fundamento en esta vida y en la otra; todos compareceremos ante Dios, y quienes exceden los límites serán los moradores del Infierno.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmclxxvii{Ya se acordarán de esto que les digo, pero [me refugio en Dios y] confío mis asuntos a Él. Dios ve bien lo que hacen Sus siervos".\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmclxxviii{Dios lo protegió de las maldades que tramaron contra él, mientras que el Faraón y sus seguidores fueron azotados por un castigo terrible.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmclxxix{[En la tumba] el fuego los alcanzará por la mañana y por la tarde, pero el día que llegue la Hora [del Juicio, se les ordenará a los ángeles:] ``Arreen al Faraón y sus seguidores al castigo más severo".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmclxxx{Cuando [los incrédulos] discutan en el Infierno, dirán los más débiles a los soberbios [líderes de la incredulidad]: ``Nosotros fuimos sus seguidores, ¿no pueden librarnos de una parte del [castigo del] Infierno?"\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxi{Dirán los soberbios: ``Todos nosotros estamos [siendo castigados] en él, Dios juzgó entre Sus siervos [y nadie puede aminorar el tormento]".\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxii{Quienes están en el tormento dirán a los [ángeles] guardianes del Infierno: ``Rueguen a su Señor para que nos alivie el castigo [aunque sea] un solo día".\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxiii{Dirán [los ángeles]: ``¿Acaso no se les presentaron Mensajeros con milagros evidentes?" Responderán: ``Claro que sí [pero no les creímos]". Les dirán entonces [los ángeles]: ``Rueguen ustedes", pero las súplicas de los que se negaron a creer serán en vano.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxiv{Les daré Mi socorro a Mis Mensajeros y a los creyentes en esta vida y también en el Día del Juicio, cuando comparezcan los [ángeles] testigos.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxv{En ese día no los beneficiarán las excusas a los que cometieron injusticias, serán maldecidos y tendrán la peor morada.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxvi{Concedí a Moisés la guía, e hice que los Hijos de Israel heredaran el Libro [de la Tora],\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxvii{como guía y motivo de reflexión para los dotados de entendimiento.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxviii{Sé paciente y perseverante, porque la promesa de Dios es verdadera; pide el perdón de tus faltas y glorifica con alabanzas a tu Señor por la tarde y al amanecer.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmclxxxix{[Los que se niegan a creer] discuten los milagros de Dios sin pruebas válidas, porque sus corazones están colmados de soberbia, y sabe que no lograrán sus propósitos [de vencerte, ¡oh, Mujámmad!]. Refúgiate en Dios, Él todo lo oye, todo lo ve.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcxc{La creación de los cielos y de la Tierra es más grandiosa que la creación de los seres humanos, pero la mayoría de ellos lo ignoran.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcxci{No es propio comparar al que puede ver [la verdad] con quien no puede verla, ni comparar al creyente que obra rectamente con el perverso [que obra el mal]. ¡Qué poco reflexionan!\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcxcii{La hora [del Juicio] llegará, no hay duda sobre ello, aunque la mayoría de los seres humanos no crean.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcxciii{Su Señor dice: ``Invóquenme, que responderé [sus súplicas]". Pero quienes por soberbia se nieguen a adorarme, ingresarán al Infierno humillados.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmcxciv{Dios es Quien creó la noche para que descansen en ella, y el día luminoso para que puedan ver [y procurar el sustento]. Dios es el poseedor del favor inmenso que concede a los seres humanos, pero la mayoría no Le agradece.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmcxcv{Aquel [que los agracia] es Dios, su Señor, el Creador de todas las cosas, no hay nada ni nadie con derecho a ser adorado salvo Él, ¿cómo es que rehúsan [adorarlo a Él y adoran falsas divinidades]?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmcxcvi{Así también fueron apartados [del camino recto] quienes rechazaron los signos de Dios.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmcxcvii{Dios es Quien hizo de la Tierra un lugar habitable y del cielo un techo, los dotó de una bella figura y los sustenta con cosas beneficiosas. Él es Dios, su Señor. Bendito sea Dios, Señor del Universo.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcxcviii{Él es el Viviente, no hay nada ni nadie con derecho a ser adorado salvo Él; invóquenlo solamente a Él. Alabado sea Dios, Señor del universo.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcxcix{Diles [¡oh, Mujámmad!]: ``Me ha sido prohibido adorar a aquellos [ídolos] que invocan en lugar de Dios, me han llegado milagros evidentes de mi Señor y se me ordenó someterme al Señor del universo.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcc{Él es Quien los creó del polvo, y después de un óvulo fecundado que se transforma en un embrión, luego los hace surgir [al mundo] como niños para que alcancen la madurez, y luego los hace llegar a ancianos, aunque algunos fallecen antes, y así se cumple el plazo de vida que se les había prefijado para que reflexionen.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcci{Él es Quien da la vida y da la muerte, y cuando decreta algo dice: ``¡Sé!", y es.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmccii{¿Acaso no observaste [¡oh, Mujámmad!] a quienes discuten los milagros de Dios, cómo se desvían?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcciii{Quienes desmienten el Libro [revelado] y lo que envié junto a Mis Mensajeros ya sabrán [el castigo que les aguarda],\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcciv{cuando se les coloquen argollas en sus cuellos y sean arriados con cadenas\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmccv{al agua hirviendo, y luego ardan en el fuego.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmccvi{Se les dirá entonces: ``¿Dónde están aquellos [ídolos] que idolatraban junto\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmccvii{a Dios?" Responderán: ``Se desvanecieron. [Reconocemos que] no invocábamos en realidad a nada [que nos pueda beneficiar hoy]". Así es como Dios deja que se desvíen los que se niegan a creer.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmccviii{[Los ángeles dirán:] ``Este [castigo que reciben] es porque ustedes se regocijaban sin razón en la Tierra [siguiendo creencias falsas], y porque eran insolentes.\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmccix{Ingresen [al castigo] por las puertas del Infierno, donde permanecerán por toda la eternidad". ¡Qué pésima será la morada de los soberbios!\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmccx{Sé paciente y perseverante [¡oh, Mujámmad!], pues la promesa de Dios es verdadera. Sea que te muestre algo de lo que tengo preparado o que te haga morir [antes de que sean castigados], ante Mí comparecerán.\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmccxi{Envié otros Mensajeros antes de ti, de algunos de ellos te he relatado su historia, y de otros no te relaté su historia. Todo Mensajero que se presentó con algún milagro fue con la anuencia de Dios. Pero cuando llegue el designio de Dios, estarán perdidos los que atribuían falsedades [a Dios].\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmccxii{Dios es Quien creó para ustedes los rebaños, para que usaran como montura a algunos y de otros comieran.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmmccxiii{Obtienen de ellos otros beneficios, y pueden satisfacer mediante ellos sus necesidades [de viajar a zonas lejanas]. Sobre ellos [en los viajes terrestres] y en los barcos se transportan.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmccxiv{Dios les muestra Sus milagros [que prueban Su unicidad]. ¿Cuál de los milagros de Dios negarán?\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmccxv{¿Acaso no viajan por el mundo y observan cuál fue el final de sus antecesores? Eran más numerosos que ellos, más poderosos, y dejaron más vestigios en la Tierra. Pero de nada les valió lo que poseían.\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmccxvi{Cuando se les presentaron sus Mensajeros con los milagros, se mostraron soberbios y orgullosos de [las creencias] que habían heredado [y no les creyeron]; entonces les fue enviado un castigo por haberse burlado.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmccxvii{Pero al ver Mi castigo, dijeron: ``Creemos solo en Dios, y renegamos de lo que adorábamos junto a Él".\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmccxviii{Pero de nada les sirvió creer cuando vieron Mi castigo. Así es el designio de Dios, que alcanzó a quienes los precedieron. Los que se negaron a creer habrán perdido toda posibilidad [de salvación].\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmccxix{\basmalahes Ha’. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmccxx{Esta es una revelación descendida por el Compasivo, el Misericordioso,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmccxxi{un Libro en que los signos son explicados detalladamente. Expresado en idioma árabe para gente que comprende.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmccxxii{Albricia, pero también advierte. La mayoría le da la espalda y no quieren oír.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmccxxiii{Dicen: ``Nuestros corazones son insensibles a lo que nos invitas, nuestros oídos son sordos, y entre tú y nosotros hay un velo. Haz lo que quieras, que nosotros haremos lo que queramos".\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmccxxiv{Diles [¡oh, Mujámmad!]: ``Soy un hombre igual que ustedes, pero me fue revelado que su divinidad es una sola. Sigan el camino recto que Él ha establecido y pidan Su perdón". ¡Ay de los idólatras,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmccxxv{los que no pagan el zakat ni creen en la otra vida!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmccxxvi{Los que crean y obren rectamente recibirán una recompensa ininterrumpida.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmccxxvii{Diles: ``¿Cómo es que no creen en Quien creó la Tierra en dos días e inventan ídolos a los que adoran como si tuvieran poderes igual que Él? Él es el Señor del universo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmccxxviii{Dispuso sobre la Tierra montañas firmes, la bendijo y determinó el sustento en cuatro eras completas, para los que preguntan.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmccxxix{Luego se dirigió al cielo, el cual era nebuloso, y le dijo al cielo y a la Tierra: ‘¿Vendrán a mí de buen grado o por la fuerza?’ Respondieron: ‘Iremos a Ti de buen grado’.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmccxxx{Creó siete cielos en dos días, y le inspiró a cada cielo su función. Embelleció el cielo de este mundo con estrellas luminosas, como protección. Éste es el decreto del Poderoso, el que todo lo sabe".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxi{Pero si se apartan, diles: ``Les advierto que podrían caer fulminados como ‘Ad y Zamud".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxii{Cuando se les presentaron los Mensajeros, uno después de otro [con el mismo argumento] diciéndoles: ``No adoren sino a Dios". Respondían: ``Si nuestro Señor hubiera querido nos habría enviado un ángel. No creemos en su Mensaje".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxiii{En cuanto a ‘Ad, actuaron con soberbia y cometieron injusticias en la tierra. Dijeron: ``¿Acaso existe alguien más poderoso que nosotros?" ¿Acaso no sabían que Dios es Quien los creó y que Él es más poderoso que ellos? Pero rechazaron Mis signos.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxiv{Les envié un fortísimo viento gélido en días terribles, para hacerles sufrir el castigo humillante en esta vida; pero el castigo de la otra vida será más humillante aún, y no tendrán quién los socorra.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxv{Y en cuanto a Zamud, les aclaré cuál era la verdadera senda, pero prefirieron la ceguera a la guía. Entonces los azotó un castigo fulminante por lo que habían cometido.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxvi{Pero salvé a quienes habían creído y tenían temor de Dios.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxvii{El día que sean congregados los enemigos de Dios y conducidos al Infierno,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxviii{y estén a punto de ser arrojados en él, entonces atestiguarán contra ellos sus propios oídos, ojos y pieles todo lo que cometieron.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmccxxxix{Dirán a sus pieles: ``¿Por qué atestiguan contra nosotros?" Les responderán: ``Nos hizo hablar Dios, Quien hace hablar a todas las cosas". Sepan que Él los creó la primera vez, y que ante Él volverán.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmccxl{No pudieron esconderse de los oídos, los ojos y la piel que atestiguarán en su contra. Pensaban que Dios ignoraba gran parte de lo que hacían.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmccxli{Eso que pensaban de su Señor es lo que los ha llevado a la ruina, y ahora son de los perdedores.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmccxlii{Y aunque tengan paciencia, el Infierno será su morada; y aunque supliquen ser excusados, no serán excusados.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmccxliii{Y les asigné compañeros, que les embellecieron lo que habían cometido y lo que iban a cometer. Entonces merecieron el castigo al igual que otras naciones anteriores de seres humanos y de yinnes que fueron destruidas. Ellos fueron los verdaderos perdedores.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmccxliv{Dicen los que se negaron a creer: ``No presten atención al Corán cuando es recitado, y eleven la voz parloteando, así se saldrán con la suya".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmccxlv{Les haremos sufrir un castigo severo a los que se negaron a creer, retribuyéndolos por todo el mal que hicieron.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmccxlvi{Este es el tormento que merecen los enemigos de Dios: el Infierno, donde morarán por toda la eternidad como castigo por haber negado Mis signos.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmccxlvii{Dirán los que se negaron a creer: ``¡Oh, Señor nuestro! Déjanos ver a los yinnes y a los seres humanos que nos extraviaron para que los pongamos bajo nuestros pies, y así sean ellos de los que estén más abajo".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmccxlviii{Quienes digan: ``Nuestro Señor es Dios" y obren correctamente, los ángeles descenderán sobre ellos [y les dirán:] ``No teman ni estén tristes. Bienaventurados sean porque tendrán el Paraíso que les fue prometido.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmccxlix{Nosotros somos sus protectores en la vida mundanal y en la otra, tendrán allí todo cuanto deseen y se les concederá todo lo que pidan\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmccl{como reconocimiento del Absolvedor, Misericordioso".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmccli{Quién puede expresar mejores palabras que aquel que invita a la gente a creer en Dios, obra rectamente y dice: ``¡Yo soy de los musulmanes!"\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcclii{No es lo mismo obrar el bien que obrar el mal. Responde con una buena actitud, y verás que aquel con quien tenías enemistad se convierte en un amigo ferviente.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmccliii{Esto no lo logran sino los que tienen paciencia; no lo logran sino los que son muy afortunados.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmccliv{Si el demonio te susurra para hacer el mal, busca refugio en Dios, porque Él todo lo oye, todo lo sabe.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcclv{Entre Sus signos están la noche y el día, el Sol y la Luna. Si realmente es a Él a Quien adoran, entonces no se prosternen ante el Sol ni ante la Luna, sino que prostérnense ante Dios, ya que Él es Quien los ha creado.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcclvi{Pero si se muestran soberbios, sepan que los que están próximos a su Señor Lo glorifican durante la noche y durante el día, y no se cansan de hacerlo.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcclvii{Entre Sus signos está que puedes ver la tierra sin vegetación, pero cuando hace descender el agua sobre ella, vibra y reverdece. Aquel que le da vida es Quien resucitará a los muertos. Él es sobre toda cosa Poderoso.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcclviii{Quienes niegan Mis signos no pueden ocultarse de Mí. ¿Acaso quienes sean arrojados al Infierno serán mejores el Día de la Resurrección que quienes sean salvos? Hagan lo que quieran, pero sepan que Él ve todo lo que hacen.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcclix{Quienes se negaron a creer en el Mensaje cuando les llegó, sepan que este es un Libro sublime.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcclx{No pueden introducírsele mentiras ni puede ser adulterado, porque es una revelación proveniente de un Sabio, Loable.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcclxi{No dicen de ti [¡oh, Mujámmad!] sino lo que ya había sido dicho sobre los Mensajeros que te precedieron. Tu Señor es el poseedor del perdón y el poseedor de un castigo doloroso.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcclxii{Si hubiera revelado el Corán en otro idioma habrían dicho [los incrédulos de entre tu pueblo]: ``¿Por qué no fue explicado detalladamente en forma clara?" ¡Qué! ¿Una revelación no árabe para un Profeta árabe? Diles: ``Este Libro es guía y salud para los creyentes; pero de los que se niegan a creer sus oídos son sordos y no comprenden. [Se comportan] como si se los llamara de un lugar muy lejano.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcclxiii{Le revelé el Libro a Moisés, pero discreparon sobre él. Si no hubiera sido porque tu Señor lo había decretado, se les habría adelantado el castigo. Ellos tienen sobre el Corán una seria duda.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcclxiv{Quien obre rectamente lo hará en beneficio propio, y quien obre el mal se perjudicará a sí mismo. Tu Señor no es injusto con Sus siervos.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcclxv{Solo Él sabe cuándo llegará la Hora. No surge ningún fruto de su cáliz, ni concibe ninguna mujer o da a luz sin que Él tenga total conocimiento de ello. El día que los llame [y pregunte a los idólatras]: ``¿Dónde están los socios [en la divinidad] que Me atribuían?" Responderán: ``Anunciamos que ninguno de nosotros sigue atestiguando eso".\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcclxvi{Los abandonará aquello que solían invocar, y sabrán que no tienen escapatoria.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcclxvii{El hombre no se cansa de pedir más y más bienestar, pero si le sucede alguna desgracia se desanima y se desespera.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcclxviii{Si lo agracio con Mi misericordia después de que sufriera una desgracia, dice: ``Esto es lo que me merecía, y no creo que la Hora del Juicio llegue jamás; pero si compareciera ante mi Señor, seguro que Él me concedería lo más bello que existe". Pero ya les informaré a los que se negaron a creer todo lo que hicieron, y los haré sufrir un castigo terrible.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcclxix{Cuando agracio a la persona se aparta y se vuelve soberbio. Pero si lo azota un mal, entonces no deja de suplicar.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcclxx{Diles: ``¿Acaso han considerado qué les pasaría si este es un Libro que proviene de Dios y ustedes se niegan a creer en él?". No existe nadie más desviado que quien persiste obstinado en el error.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxi{Los haré ver Mis signos en los horizontes y en ellos mismos, hasta que se les haga evidente la Verdad. ¿Acaso no es suficiente tu Señor como Testigo de todo?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxii{¿Aún siguen dudando de la comparecencia ante su Señor? ¿No abarca Él todas las cosas?\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxiii{\basmalahes Ha’. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxiv{‘Ain. Sin. Qaf.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxv{[¡Oh, Mujámmad!] Dios te ha descendido la revelación, así como también a los [Mensajeros] que te precedieron. Dios es el Poderoso, el Sabio.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxvi{A Él pertenece cuanto hay en los cielos y en la Tierra. Él es el Sublime, el Grandioso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxvii{Los cielos están casi por hendirse desde arriba [por la grandiosidad de Dios] y los ángeles glorifican con alabanzas a su Señor y piden perdón por quienes están en la Tierra. ¿Acaso no es Dios el Absolvedor, el Misericordioso?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxviii{Quienes tomaron a otros [como divinidades y objeto de adoración] en lugar de Dios, deben saber que Dios tiene registradas todas sus obras; pero tú [¡oh, Mujámmad!] no eres responsable de lo que ellos hagan.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxix{Te he revelado el Corán en idioma árabe para que amonestes a la madre de las ciudades y a todos los que habitan en sus alrededores. Para que adviertas acerca del día de la reunión [para el Juicio Final], sobre el cual no existe duda alguna. [Luego del Juicio,] un grupo irá al Paraíso y otro al Infierno.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxx{Si Dios quisiera habría decretado que todos formaran una sola nación [con un credo único], pero agracia a quien quiere con Su misericordia, mientras que los opresores no tendrán protector alguno ni socorredor.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxi{¿Acaso toman a los ídolos como protectores en lugar de Dios? Dios es el Protector, Él resucitará a los muertos, porque tiene poder sobre todas las cosas [y por eso es que solo Él es Quien merece ser adorado].\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxii{En aquello en que disputen, su juicio debe remitirse a Dios. Dios es mi Señor, a Él me encomiendo y a Él me vuelvo arrepentido.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxiii{Es el Originador de los cielos y de la Tierra. Creó cónyuges de entre ustedes mismos [para que encuentren sosiego], y a los rebaños también los creó en parejas, y así es como se multiplican. No hay nada ni nadie semejante a Dios, y Él todo lo oye, todo lo ve.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxiv{Suyas son las llaves de los cielos y de la Tierra, concede Su sustento a quien Él quiere con abundancia o se lo restringe a quien quiere. Él lo sabe todo.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxv{Les he legislado la misma religión [monoteísta] que le había encomendado a Noé, y que te he revelado a ti [en el Corán] y que le encomendé a Abraham, a Moisés y a Jesús, para que sean firmes en la práctica de la religión, y no creen divisiones. Pero a los idólatras les parece difícil aquello a lo que tú los invitas. Dios elige [para que acepte la fe] a quien quiere, y guía hacia Él a quien se arrepiente.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxvi{No se dividieron sino después de haberles llegado el conocimiento, por codicia entre ellos [acerca del liderazgo]. Si no fuese por una palabra previa de tu Señor que decidió un plazo prefijado [para el fin del mundo], todo habría sido decidido entre ellos. Quienes heredaron el Libro tienen dudas.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxvii{Por esto [¡oh, Mujámmad!], invita [a aceptar el Islam] y obra rectamente como te fue ordenado, no sigas sus deseos y diles: ``Creo en los Libros que Dios reveló [en su forma original], y me fue ordenado establecer justicia entre ustedes. Dios es nuestro Señor y también el suyo, nosotros seremos juzgados por nuestras obras y ustedes por las suyas. No hay necesidad de disputas entre nosotros y ustedes. Dios nos reunirá a todos cuando regresemos a Él para ser juzgados".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxviii{Aquellos que argumentan sobre Dios, luego de que la gente creyó [en el Islam], sepan que sus argumentos carecen de validez ante su Señor. Sobre ellos recaerá la ira [de Dios] y recibirán un castigo severo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcclxxxix{Dios es Quien reveló el Libro con la verdad y la justicia. ¿Y quién sabe? Quizá la Hora esté cercana.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmccxc{Quienes no creen en ella exigen que se adelante. Pero, en cambio, los creyentes sienten temor de ella y saben que es una verdad. ¿No es evidente que quienes discuten sobre cuándo será la Hora [del Juicio] están en un error profundo?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmccxci{Dios es Bondadoso con Sus siervos, sustenta a quien quiere. Él es el Fuerte, el Poderoso.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmccxcii{A aquel que busque obtener la recompensa de la otra vida [a través de obras buenas], se la multiplicaré. Pero a quien solo pretenda obtener bienes materiales en este mundo, se los concederé, pero no obtendrá recompensa alguna en la otra vida.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmccxciii{¿Acaso [los idólatras] tienen divinidades que les han establecido preceptos religiosos que Dios no ha prescrito? Si no fuese porque Dios ha decretado cuándo será el Día del Juicio, ya se los habría juzgado. Los injustos opresores sufrirán un castigo doloroso.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmccxciv{Verás [el Día del Juicio a los opresores] aterrorizados [de ser juzgados] por lo que cometieron, pero no podrán evitarlo. En cambio, quienes creyeron y obraron rectamente estarán en jardines del Paraíso junto a su Señor, donde se les concederá lo que deseen; este es el favor inmenso.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmccxcv{Esta [es la recompensa] con la que Dios albricia a Sus siervos que creen y obran rectamente. Diles [¡oh, Mujámmad!]: ``No les pido ninguna remuneración, solo que amen al prójimo". A quien realice una buena obra le aumentaré con un bien mayor. Dios es Absolvedor, Agradecido.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmccxcvi{Algunos dicen: ``[Mujámmad] ha inventado mentiras acerca de Dios", pero si fuera así Dios habría sellado su corazón. Dios hace que se desvanezca lo falso y que prevalezca la Verdad por Su palabra. Él conoce cuanto encierran los pechos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmccxcvii{Él es Quien acepta el arrepentimiento de Sus siervos, perdona sus pecados y está bien enterado de cuanto hacen.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmccxcviii{Él responde [las súplicas] a quienes creen y obran rectamente, y les aumenta su favor. En cambio, los que se niegan a creer tendrán un castigo severo.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmccxcix{Si Dios les hubiera dado a Sus siervos un sustento sin límites, se habrían extralimitado en la Tierra; pero les concede [el sustento] en la justa medida [para cada uno]. Él lo sabe todo y lo ve todo.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmccc{Él es Quien hizo descender la lluvia beneficiosa cuando habían caído en la desesperación, esparciendo Su misericordia. Él es el Protector, el Digno de alabanza.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmccci{Entre Sus signos está la creación de los cielos, de la Tierra y de todas las criaturas que diseminó en ella. Él tiene poder para congregarlos a todos cuando quiera.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmcccii{Si los aflige una desgracia, es consecuencia de [los pecados] que sus propias manos han cometido, a pesar de que Dios les perdona muchas faltas [por Su gracia].\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmccciii{No hay lugar en la Tierra al que puedan escapar de Dios. No tienen protector ni socorredor fuera de Dios.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmccciv{Entre los signos [de Su misericordia] están los barcos que navegan en el mar, grandes como montañas.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmcccv{Pero cuando quiere, calma el viento y permanecen inmóviles en la superficie. En esto hay signos para todo perseverante, agradecido [con Dios].\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcccvi{O podría hacerlos naufragar a causa de sus pecados, pero Dios perdona muchas de las faltas.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmcccvii{Ya sabrán quienes disputan sobre Mis signos que no tendrán escapatoria.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmcccviii{Lo que se les ha concedido [de bienes materiales] es parte de los placeres transitorios de esta vida mundanal. Pero la recompensa que Dios tiene reservada [en el Paraíso] será mejor y más duradera, para quienes crean y se encomienden a su Señor,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcccix{para quienes evitan los pecados graves y las obscenidades, y cuando se enojan saben perdonar;\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcccx{para quienes responden a su Señor, cumplen con la oración prescrita, se consultan para resolver sus asuntos y con lo que les he concedido hacen caridades,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcccxi{y cuando son víctimas de una injusticia son solidarios unos con otros [para restablecer la justicia].\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcccxii{La ofensa debe ser retribuida por una pena equivalente, pero quienes sepan perdonar serán recompensados por Dios. Él no ama a los injustos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcccxiii{Quien se defiende cuando es oprimido, no debe ser reprochado.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcccxiv{Los que deben ser reprochados son quienes oprimen a la gente y se comportan con soberbia en la Tierra sin derecho alguno. Esos sufrirán un castigo doloroso.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcccxv{Pero tener paciencia [ante las injusticias] y perdonar, es algo que requiere de gran determinación.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcccxvi{Para quien Dios haya decretado el desvío, no tendrá protector alguno fuera de Él. Cuando los opresores contemplen el castigo los verás decir: ``¿Hay alguna forma de volver [a la vida mundanal y corregir nuestras elecciones]?"\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcccxvii{Podrás verlos expuestos al castigo, sumisos y humillados, mirando con temor [al Infierno]; entonces dirán los creyentes: ``Los perdedores serán quienes se malogren a sí mismos y a sus familias el Día de la Resurrección". ¿Acaso los opresores no recibirán un castigo eterno?\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcccxviii{Tampoco tendrán protectores fuera de Dios que los defiendan. Para quien Dios haya decretado el extravío, no podrá encaminarse jamás.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcccxix{Obedezcan a su Señor antes de que llegue el día en que no puedan evitar [recibir el castigo] de Dios, porque ese día no tendrán refugio alguno ni podrán negar lo que hicieron.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcccxx{Si se niegan a obedecer, sabe [¡oh, Mujámmad!] que no te envié para hacerte responsable de sus obras. Tú solo debes divulgar [el Mensaje]. Cuando agracio a una persona con Mi misericordia, esta se alegra, pero si le alcanza una desgracia como consecuencia de lo que hizo con sus propias manos, entonces la persona se muestra desagradecida.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxi{A Dios pertenece el reino de los cielos y de la Tierra, Él crea lo que quiere, agracia a quien quiere con hijas mujeres y a quien quiere con hijos varones,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxii{o les concede hijos varones y mujeres, o los hace estériles. Él lo sabe todo, es sobre toda cosa Poderoso.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxiii{Dios no habla a las personas excepto por inspiración o tras un velo o enviando un Mensajero [el ángel Gabriel] para transmitirle por Su voluntad lo que Él quiera de la revelación. Él es Sublime, Sabio.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxiv{Te he revelado [oh, Mujámmad] una inspiración Mía [el Corán]. Tú no conocías el Libro [revelado anteriormente] ni la fe [en sus detalles]. Entonces hice que fuera una luz con la que guío a quienes quiero, y tú [¡oh, Mujámmad!] guías al sendero recto,\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxv{el sendero de Dios, a Quien pertenece cuanto hay en los cielos y en la Tierra. ¿Acaso no retornan a Dios todos los asuntos?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxvi{\basmalahes Ha’. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxvii{[Juro] por el Libro que clarifica,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxviii{que he revelado el Corán en idioma árabe para que lo puedan comprender,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxix{el cual está registrado en la Escritura Matriz junto a Mí, y es [el Corán un Libro] sublime y sabio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxx{¿Acaso [creen que] los iba a privar del Mensaje porque son un pueblo de transgresores?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxi{¿Cuántos Profetas he enviado a los pueblos de la antigüedad?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxii{Pero siempre que se les presentaba un Profeta se burlaban de él.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxiii{Destruí pueblos más fuertes que ellos. El ejemplo de lo que sucedió a otros pueblos en la antigüedad es parte del pasado [y aún pueden encontrarse sus vestigios].\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxiv{Si les preguntas [a los que se niegan a creer y adoran ídolos] quién creó los cielos y la Tierra, te responderán sin duda: ``Los creó el Poderoso, el Sabio".\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxv{Él ha hecho de la Tierra una cuna, y puso en ella caminos para que pudieran encontrar la guía.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxvi{Él hace descender agua del cielo en la medida justa, y así vuelve a dar vida a un territorio árido; de la misma manera serán resucitados.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxvii{Él creó las especies [en parejas], a todas, y puso a su servicio los barcos y los animales que montan,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxviii{para que se transporten en ellos y agradezcan las mercedes de su Señor. Pero una vez sentados digan: ``Glorificado sea Quien nos lo ha facilitado, ya que nosotros no habríamos sido capaces [por nuestro mero esfuerzo],\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcccxxxix{y ante nuestro Señor hemos de regresar".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcccxl{Pero [los idólatras] atribuyen una parte [de la divinidad] a algunos de Sus siervos. El ser humano es claramente un ingrato.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcccxli{¿Acaso Dios tomaría para Sí hijas de entre Sus criaturas, y a ustedes les dejaría los hijos varones?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlii{[A los que niegan el Mensaje,] cuando se le anuncia a alguno de ellos que ha tenido lo que él atribuye al Misericordioso [una hija mujer], su semblante se ensombrece y mastica su ira.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcccxliii{¿Acaso una niña pequeña criada entre adornos e incapaz de argumentar con coherencia [podría ser parte de la divinidad]?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcccxliv{Y dicen que los ángeles, que están junto al Misericordioso, son hembras. ¿Acaso fueron testigos de su creación? Registraré lo que dicen, y serán interrogados [por ello el Día del Juicio].\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlv{Dicen: ``Si el Misericordioso no hubiera querido, no los adoraríamos [a los ángeles y los ídolos]". Ellos carecen de conocimiento [sobre la voluntad divina], y no hacen sino conjeturar.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlvi{¿Acaso les envié un libro [anterior al Corán] en el que se basan?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlvii{[En realidad carecen de fundamento] y dicen: ``Nosotros vimos a nuestros padres practicar una religión [en la que adoraban a los ídolos], y seguimos sus pasos imitándolos".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlviii{Cada vez que envié a un amonestador a un pueblo, los más ricos y poderosos decían: ``Nosotros vimos a nuestros padres que practicaban una religión [politeísta], y seguimos sus pasos imitándolos".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcccxlix{[Decían los Mensajeros]: ``¿Y si les propongo algo mejor que lo que practicaban sus padres?" Respondían: ``No creemos en tu Mensaje".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcccl{Los castigué [como merecían]. Reflexionen sobre cuál fue el final trágico de los que desmintieron [a los Profetas].\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcccli{[Recuerda, ¡oh, Mujámmad!,] cuando Abraham le dijo a su padre y a su pueblo: ``Yo soy inocente de lo que adoran.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmccclii{Yo solo adoro a Quien me creó. Él me guiará".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmcccliii{[Dios] hizo que esta [fe monoteísta] perdurara en su descendencia para que siempre pudiera retornar.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmcccliv{[A quienes se desviaron] los dejé disfrutar transitoriamente, y también a sus padres, hasta que les llegó la Verdad transmitida por un Mensajero elocuente,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmccclv{Pero cuando se les presentó con la Verdad dijeron [los idólatras]: ``Esto es hechicería, nosotros no creemos en él".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmccclvi{Y dijeron también [desdeñando al Profeta]: ``¿Por qué no le fue revelado este Corán [en lugar de a ti] a un hombre distinguido de alguna de las dos ciudades?"\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmccclvii{¿Acaso son ellos los encargados de repartir la misericordia de su Señor? Soy Yo Quien concedo el sustento en la vida mundanal y elevo en grados a algunas personas sobre otras, para que así se sirvan y beneficien unos a otros. Sepan que la misericordia de su Señor es mejor que lo que pudieran acaparar [de bienes materiales en esta vida].\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmccclviii{Si no fuera porque los seres humanos terminarían siendo una sola nación [de descarriados materialistas], habría concedido a quienes no creen en el Misericordioso, residencias con techos de plata y escaleras por las que ascendiesen [a sus habitaciones].\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmccclix{Sus casas tendrían puertas y lechos [de plata] para recostarse.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmccclx{Todo estaría adornado con oro. Sin embargo [no lo hago porque] todo eso es solo parte de los placeres transitorios de la vida mundanal, mientras que la otra vida junto a tu Señor [es superior y] está reservada para los piadosos.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmccclxi{A quien deje de recordar al Misericordioso le asignaré un demonio que será su compañero inseparable.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmccclxii{Ellos [los demonios] apartan del camino, pero [los incrédulos] creen que están bien encaminados.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmccclxiii{Y cuando comparezcan ante Mí, dirán [a sus demonios]: ``Ojalá entre nosotros hubiese una distancia como entre el oriente y el occidente. ¡Qué pésimo compañero [fuiste]!"\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmccclxiv{[Se les dirá:] ``De nada les servirá hoy [lamentarse] porque fueron injustos; ahora compartirán el castigo".\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmccclxv{¿Acaso puedes hacer tú [¡oh, Mujámmad!] oír a [quienes se comportan como] los sordos, o guiar a los ciegos [de corazón] y a aquel que está en un claro extravío?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmccclxvi{Aun cuando te haga morir [y no veas el tormento que les tengo reservado], debes saber que los castigaré como se merecen.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmccclxvii{Y también, si te muestro [el castigo] que les he prometido, tengo el poder para hacer con ellos lo que quiera.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmccclxviii{Aférrate a lo que te fue revelado, tú estás en el sendero recto.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmccclxix{[El Corán] es un recuerdo para ti y para tu pueblo. Serán preguntados [si creyeron en él y lo pusieron en práctica o no].\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmccclxx{Y pregunta [a los pueblos que] les envié Mensajeros antes de ti: ``¿Acaso les autoricé que adorasen a otro fuera del Misericordioso?"\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxi{Envié a Moisés con Mis signos ante el Faraón y su nobleza, y les dijo: ``Soy un Mensajero del Señor del universo".\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxii{Cuando les presentó Mis signos [los negaron y] se burlaron de ellos.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxiii{Siempre que les mostraba un Signo, era mayor [y más evidente] que el anterior, [pero como siempre los desmentían] los azoté con el castigo [de las plagas] para que se arrepintieran.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxiv{Entonces le dijeron [a Moisés]: ``¡Hechicero! Invoca a tu Señor por lo que te ha prometido, [para que nos libere de este tormento y] así seguiremos la guía".\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxv{Pero cuando aparté de ellos el tormento, no cumplieron su promesa.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxvi{El Faraón convocó a su pueblo diciendo: ``¡Oh, pueblo mío! ¿Acaso no me pertenece el reino de Egipto, con estos ríos que corren bajo mi palacio? ¿Acaso no ven [mi poderío]?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxvii{Yo soy mejor que ese, que es una persona indigna y apenas puede expresarse.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxviii{¿Por qué [si es veraz como pretende] no le fueron concedidos brazaletes de oro, o se presentaron ángeles que lo acompañen [y confirmen sus palabras]?"\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxix{Así engañó a su pueblo, y lo siguieron porque eran un pueblo de perversos.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxx{Pero cuando finalmente [rebasaron todos los límites,] me hicieron enojar, y los castigué [como se merecían] ahogándolos a todos.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxi{Hice de ellos un ejemplo para que reflexionen en la posteridad.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxii{Cuando se mencionó el ejemplo del hijo de María [Jesús], tu pueblo clamó indignado.\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxiii{Dicen: ``¿Acaso él es mejor que nuestros ídolos?" Solo te hacen esa comparación para discutir, porque son un pueblo contencioso.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxiv{Jesús es solo un siervo a quien agracié [con la profecía], y lo envié como ejemplo a los Hijos de Israel.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxv{Si quisiera, hubiera puesto en lugar de ustedes a ángeles que se sucedieran unos a otros.\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxvi{[Diles, ¡oh, Mujámmad!:] ``[El descenso a la Tierra de] Jesús es una prueba de la [proximidad de la] Hora [del Fin del Mundo]. Así que no duden y síganme, que este es el sendero recto.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxvii{Tengan cuidado de que no los desvíe el demonio, porque él es su enemigo declarado".\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxviii{Cuando Jesús se presentó con las evidencias, dijo [a los Hijos de Israel]: ``He venido con la sabiduría para aclararles sobre lo que discrepaban. Tengan temor de Dios y obedézcanme.\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmccclxxxix{Dios es mi Señor y el de ustedes, adórenlo, entonces. Éste es el sendero recto".\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcccxc{Pero los grupos discreparon entre ellos. ¡Ay de los injustos! Porque han de recibir, cierto Día, un castigo doloroso.\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcccxci{¿Acaso esperan que la Hora [del Juicio] les llegue por sorpresa, sin que se den cuenta?\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcii{Ese día los amigos serán enemigos unos de otros, excepto los que hayan tenido temor de Dios.\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcccxciii{[A ellos se les dirá el Día del Juicio:] ``¡Oh, siervos Míos! Hoy no habrán de sentir temor ni tristeza,\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmcccxciv{pues creyeron en Mis signos y fueron musulmanes.\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcv{Entren al Paraíso, ustedes y sus cónyuges, donde disfrutarán de las delicias.\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcvi{Circularán entre ellos bandejas y copas de oro. Allí tendrán todo lo que deseen y deleite sus ojos. En él estarán por toda la eternidad.\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcvii{Ese es el Paraíso que han heredado en recompensa por las obras que solían hacer.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcviii{Tendréis muchos frutos para comer.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmcccxcix{Mientras que los transgresores estarán en el Infierno por toda la eternidad.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmcd{No se les aliviará [el castigo] ni tendrán esperanza [de salir algún día].\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmcdi{No seré injusto con ellos, sino que ellos fueron injustos consigo mismos.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmcdii{Y clamarán: ``¡Oh, Málik! Que tu Señor acabe con nosotros [y así dejemos de sufrir]". Pero él les responderá: ``Han de permanecer allí por toda la eternidad".\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmcdiii{[¡Oh, incrédulos!] Les presenté la Verdad [a través del Mensajero], pero la mayoría rechazaba la Verdad.\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmcdiv{¿Acaso planeaban algo? Soy Yo Quien determina las cosas.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmmcdv{¿Acaso piensan que no escucho sus secretos y murmuraciones? Claro que sí, y Mis [ángeles] enviados registraban sus acciones.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmcdvi{Diles [¡oh, Mujámmad!]: ``Si el Misericordioso tuviera un hijo, yo sería el primero en adorarlo.\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmcdvii{¡Glorificado sea el Señor de los cielos y de la Tierra, Señor del Trono! Él está por encima de lo que Le atribuyen".\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmcdviii{Déjalos que hablen en vano y jueguen hasta que les llegue el día con que se los había advertido.\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmcdix{Solo Él tiene derecho a ser adorado en el cielo y en la Tierra. Es el Sabio, el Conocedor.\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmcdx{Bendito sea a Quien pertenece el reino de los cielos y de la Tierra y todo cuanto hay entre ambos. Él posee el conocimiento de la Hora [del Juicio], y ante Él regresarán.\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmcdxi{Aquellos que son invocados en lugar de Dios no poseen la facultad de interceder por nadie. Solo pueden interceder quienes atestiguan la Verdad y tienen conocimiento.\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmmcdxii{Si les preguntas [a los que se niegan a creer] quién los ha creado, te responderán: ``¡Dios!" ¿Cómo entonces se descarrían?\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmmcdxiii{[Dios sabe cuando Lo invocas] diciendo: ``¡Oh, Señor! Este es un pueblo que no cree".\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmmcdxiv{Apártate de ellos y [no respondas a sus ofensas, sino que] di: ``¡Paz!", ya habrán de saber [cuál será su destino].\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmmcdxv{\basmalahes Ha’. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcdxvi{[Juro] por el Libro clarificador,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcdxvii{que he revelado en una noche bendita: ¡Les he advertido!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcdxviii{En ella se decreta sabiamente cada asunto.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcdxix{Todo sucede por Mi designio. He enviado [Profetas y libros sagrados]\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcdxx{como una misericordia de tu Señor. Él todo lo oye, todo lo sabe.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxi{Señor de los cielos y de la Tierra, y de lo que existe entre ambos. ¿Acaso no tienen certeza de eso?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxii{No hay nada ni nadie con derecho a ser adorado salvo Dios; Él da la vida y da la muerte. Él es su Señor y el de sus ancestros.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxiii{Pero ellos juegan con las dudas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxiv{Aguarda el día en que el cielo traiga un humo visible\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxv{que cubrirá a la gente. Ese será un castigo doloroso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxvi{[Dirán los que se negaron a creer:] ``¡Oh, Señor nuestro! Aparta de nosotros el castigo, somos creyentes".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxvii{De qué les servirá recapacitar entonces, si cuando se les presentó un Mensajero con pruebas evidentes\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxviii{lo rechazaron y dijeron: ``Fue aleccionado o es un loco".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxix{Los libraré del castigo por un tiempo, pero reincidirán.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxx{El día que acometa con el máximo rigor, les infligiré un castigo doloroso.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxi{Antes de ellos probé al pueblo del Faraón, cuando se les presentó un Mensajero noble,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxii{[que les dijo:] ``Dejen en libertad a los siervos de Dios para que puedan marcharse conmigo. Yo he sido enviado para ustedes como un Mensajero leal.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxiii{No sean soberbios con Dios. Les he presentado pruebas evidentes.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxiv{Me refugio en mi Señor y el suyo para que no me injurien.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxv{Si no creen en mí, déjenme en paz".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxvi{Pero invocó a su Señor diciendo: ``Éste es un pueblo de criminales".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxvii{[Entonces Dios le respondió:] ``Marcha con Mis siervos por la noche, pero sabe que ellos van a perseguirlos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxviii{Deja el mar [luego de que se haya abierto para ti] tal como está, que el ejército será ahogado.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcdxxxix{Cuántos huertos y manantiales abandonaron,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcdxl{cultivos y hermosas residencias,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmcdxli{y una comodidad de la que disfrutaban.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlii{Así fue. Pero se lo di en herencia a otro pueblo.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmcdxliii{No lloraron por ellos ni el cielo ni la Tierra. Tampoco fueron perdonados.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmcdxliv{Salvé a los Hijos de Israel de un tormento humillante\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlv{que les infligía el Faraón. Él era soberbio y transgresor.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlvi{[Al pueblo de Israel,] basado en un conocimiento, lo elegí entre sus contemporáneos,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlvii{y les concedí signos que representaban una prueba clara en su fe.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlviii{Pero ellos dicen:\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmcdxlix{``Solo moriremos una vez, y no seremos resucitados.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmcdl{Resucita a nuestros padres, si es que eres veraz".\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcdli{¿Acaso ellos son mejores que los pueblos que he destruido, como el pueblo de Tubba’ y los que los precedieron? Todos ellos fueron criminales.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcdlii{No he creado a los cielos, la Tierra y todo lo que hay entre ellos como un simple juego.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcdliii{Los creé con un fin justo y verdadero, pero la mayoría de la gente lo ignora.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcdliv{El Día del Juicio es una cita establecida para todos.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcdlv{Ese día no podrán los familiares ayudarse entre sí, nadie recibirá socorro,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcdlvi{excepto aquel de quien Dios tenga misericordia. Él es el Poderoso, el Misericordioso.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcdlvii{El árbol de Zaqqum\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcdlviii{será la comida del pecador.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcdlix{Similar al metal fundido, hierve en las entrañas,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcdlx{como si fuera agua hirviente.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxi{[Se les dirá a los ángeles:] ``Tomen [a este transgresor] y arrójenlo al centro del Infierno.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxii{Luego viertan sobre su cabeza el castigo hirviente".\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxiii{¡Súfrelo! [Porque en la vida mundanal pensabas que] eras ``el poderoso" y ``el noble".\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxiv{Esto es sobre lo que dudabas.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxv{Pero los piadosos estarán en una situación segura,\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxvi{en jardines y manantiales.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxvii{Vestirán fina seda y brocado, y se sentarán unos frente a otros.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxviii{Los desposaremos con huríes de grandes ojos.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxix{Allí podrán pedir toda clase de frutas. Estarán en total seguridad.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxx{No experimentarán otra vez la muerte, salvo la que ya conocieron. Él los preservará del castigo infernal.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxi{Ese es el favor de tu Señor. ¡Ese es el gran éxito!\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxii{Para facilitar su comprensión lo he revelado [al Corán] en tu lengua, para que reflexionen.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxiii{Así que espera pacientemente, de la misma manera que ellos están esperando.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxiv{\basmalahes Ha’. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxv{Este Libro es una revelación que proviene de Dios, el Poderoso, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxvi{En los cielos y en la Tierra hay signos para los creyentes.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxvii{También en la creación de ustedes y en la diseminación de los animales [en la faz de la Tierra] hay signos para quienes tienen certeza.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxviii{En la sucesión de la noche y el día, en las lluvias que Dios envía del cielo como sustento, con las cuales revive la tierra árida, y en los cambios de los vientos hay, sin duda, signos para gente que reflexiona.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxix{Éstos son versículos de Dios que te recito con la Verdad. ¿En qué otro Mensaje creerán si no creen en Dios y en Sus signos?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxx{¡Ay de todo mentiroso, pecador!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxi{Que escucha los versículos de Dios cuando se le recitan, pero persiste en su soberbia como si no los hubiera oído. Anúnciales un castigo severo.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxii{Cuando escuchan algunos de Mis versículos los toman a burla. Ellos tendrán un castigo humillante,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxiii{los estará aguardando el Infierno y de nada les servirán los bienes materiales que ganaron, ni tampoco los ídolos protectores que tomaron en lugar de Dios. Recibirán un castigo terrible.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxiv{Esta es la Guía, pero quienes se nieguen a creer en los versículos de su Señor tendrán un castigo doloroso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxv{Dios es Quien hizo que el mar estuviera a su servicio, para que los barcos navegaran sobre él por Su designio y así pudieran procurar el sustento. Sean agradecidos con Dios.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxvi{También puso a su servicio cuanto hay en los cielos y en la Tierra como una gracia proveniente de Él. En esto hay signos para gente que reflexiona.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxvii{Diles [¡oh, Mujámmad!] a los creyentes que [tengan paciencia ante las agresiones y] perdonen a quienes no creen en los días de Dios, en que la gente será juzgada acorde a lo que merece.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxviii{Quien obre el bien lo hará en beneficio propio, pero quien obre el mal lo hará en detrimento propio. Sepan que ante su Señor será el retorno.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcdlxxxix{Le di a los Hijos de Israel el Libro, la sabiduría, la profecía y un sustento generoso, y los distinguí entre sus contemporáneos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcdxc{Les concedí pruebas claras, pero discreparon a pesar de haberles llegado la revelación, por simples envidias entre ellos. Tu Señor juzgará entre ellos el Día de la Resurrección sobre lo que discrepaban.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcdxci{A ti [¡oh, Mujámmad!] te he revelado una legislación para que la apliques y no sigas las pasiones de quienes no saben,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcii{porque ellos no te beneficiarán en nada ante Dios. Los opresores se alían unos con otros, pero Dios es el Protector de los piadosos.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcdxciii{Ésta revelación es luz para la gente. Una guía y una misericordia para quienes tienen certeza.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcdxciv{¿Acaso quienes obran mal piensan que los igualaré, tanto en esta vida como en la otra, con quienes creen y obran rectamente? ¡Qué mal juzgan!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcv{Dios creó los cielos y la Tierra con un fin justo y verdadero. Toda alma será juzgada acorde a sus obras, y nadie será oprimido.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcvi{¿Acaso no reparas en aquel que sigue sus pasiones como si estas fueran una divinidad? Dios decretó por Su conocimiento divino que se extraviaría, y por ello selló sus oídos y su corazón, y puso un velo sobre sus ojos. ¿Quién lo puede guiar fuera de Dios? ¿Acaso no recapacitan?\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcvii{Dicen: ``Solo existe esta vida. Viviremos y moriremos una sola vez. El tiempo es quien acaba con nosotros". Pero no poseen un conocimiento certero sobre lo que dicen y no hacen más que conjeturar.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcviii{Cuando se les recitan Mis claros versículos, su único argumento es: ``Resuciten a nuestros ancestros, si son veraces".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcdxcix{Diles: ``Dios es Quien les da la vida y les da la muerte, y luego los resucitará para un día del que no hay dudas". Pero la mayoría de la gente lo ignora.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmd{A Dios pertenece la soberanía de los cielos y de la Tierra. El día que llegue la Hora, ese día perderán los seguidores de la falsedad.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdi{Y verás ese día a todas las naciones arrodilladas. Cada una de ellas será convocada para rendir cuentas según su libro. [Se les dirá:] ``Hoy serán juzgados de acuerdo a sus obras".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdii{He aquí Mi Libro, que habla sobre ustedes con la verdad. Yo había ordenado registrar todo lo que hacían.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdiii{A quienes creyeron y obraron rectamente, su Señor los introducirá en Su misericordia. Ese es el éxito verdadero.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdiv{En cambio, a los que se negaron a creer [se les dirá:] ``¿Acaso no se les recitaron Mis versículos?" Pero respondieron con soberbia y fueron gente criminal.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdv{Cuando se les dijo: ``La promesa de Dios es verdadera y no hay duda sobre la Hora". Respondieron [irónicamente]: ``No comprendemos qué es la Hora, nos parece una mera fantasía y no nos convence".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdvi{Pero se verá el resultado de sus malas obras, y merecerán el castigo del que se burlaban.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdvii{Se dirá: ``Hoy los desconoceré tal como ustedes se desentendieron de la comparecencia de este día. Su morada será el Infierno y no habrá quién los socorra.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdviii{Este es el resultado de haber ridiculizado los versículos de Dios y haberse dejado seducir por los placeres [prohibidos] de la vida mundanal. Hoy no serán sacados del tormento, y no se les tendrá consideración".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdix{Solo Dios merece ser alabado. Es el Señor de los cielos, el Señor de la Tierra y el Señor de los universos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdx{Suya es la majestuosidad en los cielos y en la Tierra, y Él es el Poderoso, el Sabio.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdxi{\basmalahes Ha’. Mim.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdxii{Este Libro es una revelación que proviene de Dios, el Poderoso, el Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdxiii{No creé los cielos y la Tierra y lo que hay entre ambos sino con la verdad y por un plazo determinado. Pero los que se niegan a creer rechazan las advertencias.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdxiv{Diles [¡oh, Mujámmad!]: ``Aquellos [dioses y divinidades] que ustedes invocan en lugar de Dios, ¿acaso crearon algo en la Tierra o fueron partícipes [en la creación] de los cielos? Presenten ante Mí algún Libro revelado antes de este o algún vestigio de un [antiguo] conocimiento [que avale la idolatría] si es que dicen la verdad.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdxv{¿Existe alguien más extraviado que aquellos que invocan en lugar de Dios a quienes jamás les responderán sus súplicas porque no son conscientes de ellas?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdxvi{Cuando la gente sea congregada [el Día del Juicio, los ídolos] serán sus enemigos y rechazarán la adoración de la que fueron objeto.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdxvii{Cuando se les recitan Mis versículos esclarecedores de la verdad, los que se niegan a creer dicen acerca de la Verdad que les ha llegado: ``Esto es hechicería".\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdxviii{O dicen: ``Él [Mujámmad] lo inventó". Diles [¡oh, Mujámmad!]: ``Si lo hubiese inventado, ustedes no podrían defenderme del castigo de Dios. Él bien sabe lo que dicen [sobre el Corán]. Dios basta como testigo entre nosotros. Él es el Absolvedor, el Misericordioso".\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdxix{Diles: ``Yo no soy el primero de los Mensajeros [de Dios], y tampoco sé qué será de mí o de ustedes. Yo solo sigo lo que me es revelado, y no soy sino un amonestador que habla claro".\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdxx{Diles: ``¿Por qué no creen [en el Corán] que Dios reveló, siendo que un sabio de los Hijos de Israel atestiguó su veracidad y creyó en él? Pero ustedes actuaron con soberbia. Sepan que Dios no guía a un pueblo de injustos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdxxi{Dicen los que se niegan a creer acerca de los creyentes: ``Si [el Mensaje] fuera un bien, no se nos habrían anticipado [en seguirlo]". Y como no siguen la guía [del Corán] exclaman: ``Esto es una mentira muy antigua".\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdxxii{Antes [del Corán] fue revelado el Libro de Moisés como guía y misericordia. Este es un Libro revelado en lengua árabe que corrobora [las revelaciones anteriores], y en él se advierte a los injustos y se albricia a los que hacen el bien.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdxxiii{Quienes digan: ``¡Nuestro Señor es Dios!, y luego obren correctamente, no tienen de qué sentir temor ni estar tristes [en el Día del Juicio Final]\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdxxiv{porque serán los compañeros del Paraíso, en el que vivirán por toda la eternidad como recompensa por sus obras.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdxxv{Le he ordenado al ser humano hacer el bien a sus padres. Su madre lo ha llevado [en el vientre] con esfuerzo, y con dolor lo dio a luz. El período del embarazo y la lactancia dura treinta meses. Cuando alcance la madurez, al llegar a los cuarenta años, debe decir [en súplica]: ``¡Oh, Señor mío! Haz que sepa agradecerte los favores que nos has concedido, tanto a mí como a mis padres, y que pueda realizar obras buenas que Te complazcan. Concédeme una descendencia piadosa. Me arrepiento a Ti [de mis pecados] y soy de los musulmanes".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdxxvi{A ellos les aceptaré las mejores obras que hayan realizado, y les perdonaré sus faltas. Ellos serán la gente del Paraíso, [en cumplimiento a] una promesa verdadera que se les había hecho.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdxxvii{Diferente es la situación de aquel que dice a sus padres [creyentes]: ``¡Ufa, déjenme en paz! Me dicen que seré resucitado, cuando ya han pasado muchas generaciones [y ninguna ha sido resucitada]". Y mientras estos, implorando a Dios [que lo guíe], dicen: ``¡Ay de ti! Ten fe, pues la promesa de Dios es verdadera"; él les responde: ``Estas no son más que fábulas de nuestros ancestros".\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdxxviii{Esos merecerán [el castigo de Dios], al igual que las naciones [que no creyeron] de yinnes y de seres humanos en la antigüedad. Ellos serán los perdedores.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdxxix{Cada uno tendrá un grado diferente acorde a sus obras, y se lo retribuirá acorde a ellas. Pero nadie será oprimido.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdxxx{El día que los que se negaron a creer sean expuestos al Infierno se les dirá: ``Consumieron las gracias que se les concedió en la vida mundanal dedicándose solo a los placeres. Hoy recibirán un castigo humillante por haber sido soberbios en la Tierra sin derecho alguno, y por haber sido desobedientes [a Dios]".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxi{Y recuerda [¡oh, Mujámmad!] al hermano de la tribu de ‘Ad, [el Profeta Hud] cuando advirtió a su pueblo en las dunas [donde habitaban]. Todos los Mensajeros que fueron enviados, antes y después de él, decían a sus pueblos: ``No adoren sino a Dios, temo que los azote el castigo de un día terrible".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxii{Dijeron: ``¿Has venido a nosotros para convencernos de que nos alejemos de nuestros dioses? Haz que se desencadene sobre nosotros aquello con que nos amenazas, si es que dices la verdad".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxiii{Dijo [el Profeta Hud]: ``Solo Dios sabe cuándo llegará [ese día], yo solo les transmito el Mensaje con el que fui enviado, pero veo que son un pueblo que se comporta como los ignorantes".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxiv{Y cuando vieron algo como una nube que se acercaba a sus valles, dijeron: ``Esta es una nube que nos trae lluvia". [Pero su Mensajero les dijo:] ``No, es el castigo que reclamaban: un viento que encierra un castigo doloroso\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxv{y destruye todo por orden de su Señor". Cuando amaneció, solo podían verse sus moradas [vacías]; así castigo a los transgresores.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxvi{Les había concedido mayor fortaleza que a ustedes, y los había dotado de oído, vista y entendimiento. Pero de nada les sirvieron sus oídos, sus ojos y su inteligencia, pues negaron los signos de Dios y merecieron el castigo del que se burlaban.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxvii{Destruí en el pasado pueblos que había a su alrededor, después de haberles enviado todo tipo de signos para que recapacitaran.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxviii{Pero aquellos ídolos que adoraban como divinidades en lugar de Dios se desvanecieron y no los auxiliaron, pues solo eran una falsedad que ellos habían inventado.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdxxxix{Y cuando envié [¡oh, Mujámmad!] a un grupo de yinnes para que escucharan la recitación [del Corán]. Cuando llegaron dijeron [a sus compañeros]: ``¡Guarden silencio [para que podamos escuchar]!" Y luego que culminaste [con la recitación], retornaron a su pueblo para advertirles.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdxl{Dijeron: ``¡Oh, pueblo nuestro! Hemos oído un Libro revelado después de Moisés, que corrobora los Mensajes anteriores y guía hacia la Verdad y el camino recto.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdxli{¡Oh, pueblo nuestro! Si obedecen al Mensajero de Dios y creen en él, su Señor les perdonará sus faltas y los salvará de un castigo doloroso.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdxlii{Pero sepan que quien no obedezca al Mensajero de Dios no podrá escapar [del castigo de Dios], ni tendrá fuera de Él protector alguno. Esos están en un error evidente".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdxliii{¿Acaso no ven que Dios, Quien creó los cielos y la Tierra sin agotarse, también tiene poder para resucitar a los muertos? Él es sobre toda cosa Poderoso.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdxliv{El día que los que se negaron a creer sean arrojados al Infierno se les dirá: ``¿Acaso no es esto real?" Responderán: ``¡Sí! ¡Oh, Señor nuestro!" Dirá [Dios]: ``Sufran entonces el castigo que negaban".\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdxlv{Ten paciencia [¡oh, Mujámmad!] como la tuvieron los Mensajeros con más determinación, y no te impacientes con ellos. El día que [los que se negaron a creer] vean aquello con lo que se les había amenazado, pensarán que estuvieron en la tumba solo un instante del día. Esta es una notificación. ¿A quién le alcanza el castigo sino a la gente perversa?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdxlvi{\basmalahes Dios invalidará las obras de quienes no crean y alejen a la gente del sendero de Dios.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdxlvii{En cambio, a quienes tengan fe, obren rectamente y crean en lo que fue revelado a Mujámmad, que es la Verdad proveniente de su Señor, Él les perdonará sus pecados e infundirá paz en sus corazones.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdxlviii{Esto es así porque quienes se negaron a creer siguen lo falso, mientras que los creyentes siguen la Verdad de su Señor. Así es como Dios expone ejemplos a la gente.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdxlix{Cuando tengan que enfrentarse en combate a los que se negaron a creer, golpéenlos en el cuello; y cuando estén fuera de combate aprésenlos. Luego, libérenlos con benevolencia o pidan un rescate, [esa debe ser la actitud] hasta que cese la guerra. [Sepan que] si Dios hubiera querido, Él mismo los hubiera derrotado, pero quiso ponerlos a prueba [y que se enfrentaran] unos contra otros. Quien caiga en combate por la causa de Dios, sus obras no habrán sido en vano.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdl{[Dios] los guiará, infundirá paz en sus corazones\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdli{y los introducirá en el Paraíso que ya les había dado a conocer.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdlii{¡Oh, creyentes! Si auxilian a Dios, Él los auxiliará y afirmará sus pasos.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdliii{En cambio, a los que se niegan a creer les aguarda la desgracia y sus obras habrán sido en vano,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdliv{porque repudiaron lo que Dios descendió en la revelación, y como consecuencia sus obras se perderán.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdlv{¿Por qué no viajan por el mundo y observan cómo terminaron sus antecesores? Dios los destruyó; y sepan que todos los que se niegan a creer tienen un destino similar.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdlvi{Eso es porque Dios solo es protector de los creyentes, mientras que los que se niegan a creer no tienen protector alguno.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdlvii{Dios introducirá a los creyentes que obran rectamente en jardines por donde corren ríos. En cambio, los que se niegan a creer gozarán transitoriamente y comerán como lo hacen los rebaños, pero tendrán el Infierno por morada.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdlviii{Muchas ciudades fueron más poderosas que la que te expulsó [¡oh, Mujámmad!], e igualmente las destruí y no tuvieron quién los auxiliara.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdlix{¿Acaso quien se aferra a una evidencia clara de su Señor puede compararse con quien [seducido por el demonio] ve sus obras malas como buenas y sigue sus pasiones?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdlx{Así es la descripción del Paraíso que le fue prometido a los piadosos: hay ríos de agua que no se contaminan, ríos de leche que siempre tendrá buen sabor, ríos de vino que será un deleite para quienes lo beban, y ríos de miel pura. Tendrán en él todas las frutas que deseen. Su Señor los perdonará. ¿Acaso quien disfrutará de estas gracias puede compararse con quien morará eternamente en el Infierno y beberá agua hirviendo que carcomerá sus intestinos?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdlxi{Algunos te escuchan [¡oh, Mujámmad!], pero cuando se retiran les dicen [burlándose] a los que fueron agraciados con el conocimiento: ``¿Qué es lo que acaba de decir?" Estos son a quienes Dios ha sellado sus corazones [con la incredulidad], y solo siguen sus pasiones.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdlxii{Pero a quienes siguen la guía, Él les incrementará su fe y su piedad.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdlxiii{¿Acaso los que se niegan a creer esperan que los sorprenda la Hora? Ya se evidenciaron algunas señales que indican su proximidad, y de nada les servirá creer cuando esta llegue.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdlxiv{Debes saber que no hay nada ni nadie con derecho a ser adorado salvo Dios, e implórale el perdón de tus faltas y las de los creyentes y las creyentes. Dios conoce bien lo que hacen dentro y fuera de sus hogares.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdlxv{Algunos creyentes dicen: ``¿Por qué no desciende un capítulo [del Corán donde se prescriba combatir]?" Pero cuando es revelado un capítulo [del Corán] con preceptos obligatorios, y se menciona en él la guerra, ves a aquellos cuyos corazones están enfermos mirarte como si estuvieran en la agonía de la muerte. Sería mejor para ellos\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdlxvi{cumplir con los preceptos y no pedir que se prescribiera la guerra. Porque cuando llegue el momento de combatir, lo mejor será que obedezcan a Dios con sinceridad.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdlxvii{¿Si les fuera dada autoridad, acaso no sembrarían la corrupción en la Tierra y cortarían los lazos familiares?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdlxviii{A ellos Dios los ha maldecido haciendo que se comporten como sordos y ciegos.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdlxix{¿Acaso no meditan en el Corán, o es que sus corazones están cerrados con cerrojos?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdlxx{Aquellos que reniegan de su fe después de habérseles evidenciado la guía, es porque el demonio los seduce y les da falsas esperanzas.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxi{Este descarrío es porque [los hipócritas] dijeron a quienes odian lo que Dios reveló [a Mujámmad]: ``Les obedeceremos en algunos asuntos". Pero Dios conoce sus secretos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxii{¡Qué terrible será cuando los ángeles tomen sus almas y los golpeen en el rostro y la espalda!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxiii{Eso será su merecido por haber seguido lo que Dios detesta y haberse apartado de lo que Le complace. Sus obras habrán sido en vano.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxiv{¿Acaso piensan aquellos cuyos corazones están enfermos que Dios no sacará a la luz su resentimiento?\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxv{Si hubiera querido te los habría identificado y los hubieras reconocido por sus signos, pero aun así los reconocerás por el tono de sus palabras. Dios conoce sus obras [y los juzgará acorde a ellas].\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxvi{Los probaremos para distinguir quiénes de ustedes son los que verdaderamente luchan por la causa de Dios y se mantienen pacientes [en la fe]. Sepan que sacaremos a la luz lo que esconden en sus corazones.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxvii{Los que se niegan a creer, extravían [a la gente] del sendero de Dios y se oponen al Mensajero después de habérseles evidenciado la guía, no podrán perjudicar a Dios en nada y sus obras serán en vano.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxviii{¡Oh, creyentes! Obedezcan a Dios y obedezcan al Mensajero. No hagan vanas sus obras.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxix{A los que se nieguen a creer, se opongan al camino de Dios y mueran en la incredulidad, Dios no ha de perdonarlos.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxx{No cedan [ante el enemigo] invitándolo a un acuerdo [por cobardía]. Ustedes [cuando tienen fe y defienden una causa justa] obtendrán la victoria. Dios está con ustedes. Él no dejará de premiar sus obras.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxi{La vida mundanal es juego y diversión. Pero si creen y son piadosos obtendrán su recompensa. Dios no les exige todos sus bienes.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxii{Si se los exigiera, se mostrarían avaros y se manifestaría su rechazo.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxiii{Se los invita a contribuir por la causa de Dios, pero entre ustedes hay quienes se muestran avaros. El avaro solo se perjudica a sí mismo. Porque Dios es el Rico y ustedes son los pobres. Si no creen, Dios los cambiará por otro pueblo que no será como ustedes.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxiv{\basmalahes Te he concedido [¡oh, Mujámmad!] una victoria evidente.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxv{Dios te perdonará [¡oh, Mujámmad!] las faltas que cometiste y las que pudieses cometer, completará Su gracia sobre ti, te afianzará en el sendero recto,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxvi{y te dará un auxilio grandioso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxvii{Él es Quien hizo descender el sosiego en los corazones de los creyentes para aumentarles fe a la fe que ya tenían. A Dios pertenecen los ejércitos de los cielos y de la Tierra; y Dios lo sabe todo, es Sabio.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxviii{[Dios] introducirá por toda la eternidad a los creyentes y a las creyentes en jardines por donde corren ríos, y les perdonará sus pecados. Este es un éxito grandioso ante Dios.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdlxxxix{En cambio, a los hipócritas y las hipócritas, y a los idólatras y las idólatras que pensaban mal de Dios, los castigará; la ira de Dios recaerá sobre ellos y los maldecirá, y les tiene reservado el castigo del Infierno. ¡Qué horrible destino!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdxc{A Dios pertenecen los ejércitos de los cielos y de la Tierra. Dios es Poderoso, Sabio.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdxci{Te he enviado [¡oh, Mujámmad!] como testigo [de la unicidad divina], albriciador y amonestador.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdxcii{Crean en Dios y en Su Mensajero, asistan y honren [al Profeta], y glorifiquen [a Dios] por la mañana y por la tarde.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdxciii{Quienes te juran fidelidad en realidad están jurando fidelidad a Dios, pues la mano de Dios está sobre sus manos. Quien no cumpla con el juramento solo se perjudicará a sí mismo; en cambio, quien respete lo pactado con Dios recibirá una recompensa grandiosa.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdxciv{[¡Oh, Mujámmad!] Los beduinos que no participaron [del viaje a La Meca y del pacto de Hudaibiiah] dirán: ``Nos mantuvieron ocupados nuestros bienes materiales y nuestras familias, pídele a Dios que nos perdone". Pero solo dicen con sus lenguas lo que no sienten sus corazones. Diles: ``Si Dios quisiera perjudicarlos o beneficiarlos, nadie podría impedirlo. Dios sabe lo que hacen".\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdxcv{Creyeron que el Mensajero y los creyentes jamás regresarían a sus familias. Eso es lo que el demonio infundió en sus corazones, y por eso pensaron mal. Son gente que se ha arruinado a sí misma.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdxcvi{Quien no crea en Dios y en Su Mensajero sepa que el castigo del Infierno está reservado para los incrédulos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdxcvii{A Dios pertenece el reino de los cielos y de la Tierra, perdona a quien Él quiere y castiga a quien Él quiere. Dios es Absolvedor, Misericordioso.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdxcviii{Cuando salgan en busca del botín, quienes no participaron [de la expedición a La Meca] dirán: ``Déjennos participar de la expedición". Pretenden cambiar el designio de Dios. Diles [¡oh, Mujámmad!]: ``No participarán de ella, pues así lo decretó Dios". Entonces responderán: ``En realidad nos tienen envidia", pero es poco lo que comprenden.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdxcix{Diles a los beduinos que no participaron [en la expedición a La Meca]: ``Se los convocará para luchar contra un pueblo militarmente poderoso, puede que combatan o que ellos se rindan. Si obedecen, Dios les concederá una bella recompensa. Pero si desertan, como lo hicieron anteriormente, les dará un castigo doloroso [en el Más Allá]".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdc{No hay nada que reprochar al ciego, al lisiado y al enfermo [que no participan en las expediciones militares]. Quien obedezca a Dios y a Su Mensajero, Él lo introducirá en jardines por donde corren ríos. Pero a quien deserte, Dios le dará un castigo doloroso.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdci{Dios quedó complacido con los creyentes cuando te juraron fidelidad bajo el árbol. [Él] sabía [la fe] que había en sus corazones e hizo descender el sosiego sobre ellos y los recompensó con una victoria cercana,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcii{donde obtuvieron un botín cuantioso. Dios es Poderoso, Sabio.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdciii{Dios les ha prometido que obtendrán muchos botines, y por eso les adelantó este [en Jaibar]. [Él] los ha protegido de las manos [opresoras] de alguna gente para que sean ustedes un signo para los creyentes, y los guiará por el sendero recto.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdciv{Y [también les ha prometido] otras victorias que no tienen capacidad de conseguir, pero que Dios les tiene reservadas. Dios tiene poder sobre todas las cosas.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcv{Sepan que aun cuando los que se negaron a creer los hubieran combatido [en Hudaibiiah], habrían huido vencidos, pues no hubieran encontrado quién los protegiera ni los defendiera.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcvi{Ese es el proceder de Dios que ha regido siempre en el pasado [de socorrer a los creyentes]. No encontrarás que el proceder de Dios cambie.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcvii{Él es Quien los protegió de las manos de sus enemigos y los protegió a ellos de las manos de ustedes en el valle de La Meca, después de haberles dado la victoria sobre ellos. Dios vio lo que hicieron.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcviii{Ellos son los que se negaron a creer y no los dejaron llegar a la Mezquita Sagrada, impidiendo que los animales [que llevaban para sacrificarlos como ofrenda en La Meca] llegaran a su destino. De no haber sido porque podrían haber cometido un grave pecado si atacaban La Meca, matando o hiriendo sin darse cuenta a algunos hombres y mujeres creyentes que no conocían y que habitaban en ella, Dios se los habría permitido. Dios alcanza con Su misericordia a quien Él quiere. Si les hubiera sido posible diferenciarlos unos de otros, les habríamos hecho infligir un castigo doloroso a los que se negaron a creer.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcix{Cuando los que se negaron a creer cerraron sus corazones con una arrogancia similar a la de la época de la ignorancia [previa al Islam], Dios hizo descender el sosiego sobre Su Mensajero y sobre los creyentes, y los hizo mantenerse leales al compromiso, pues eran los más merecedores y los más dignos de él. Dios lo sabe todo.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdcx{Dios hará realidad la visión que tuvo Su Mensajero [en sueños] y ustedes entrarán en la Mezquita Sagrada, si Dios quiere, algunos con las cabezas rasuradas y otros con el cabello recortado, sin temer absolutamente nada. Dios sabe lo que ustedes ignoran. Él les concederá, además, una victoria cercana.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcxi{Él es Quien les envió a Su Mensajero con la guía y la práctica de adoración verdadera, para que prevalezca sobre todas las demás. Dios es suficiente como testigo.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcxii{Mujámmad es el Mensajero de Dios. [Los creyentes] que están con él son severos con los que se niegan a creer, pero misericordiosos entre ellos. Los verás [rezando] inclinados y prosternados, anhelando alcanzar la misericordia de Dios y Su complacencia. En sus rostros se encuentran las huellas de la prosternación. Así fueron descritos en la Tora; mientras que en el Evangelio se los compara con una semilla que germina, brota, se fortalece, cobra grosor y se afirma en su tallo, causando alegría a los sembradores. Para que se indignen los que se niegan a creer. A los que crean y obren rectamente, Dios les ha prometido el perdón y una recompensa grandiosa.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdcxiii{\basmalahes ¡Oh, creyentes! No se pongan a ustedes mismos por encima de Dios y Su Mensajero, y tengan temor de Dios; Dios todo lo oye, todo lo sabe.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcxiv{¡Oh, creyentes! No levanten sus voces sobre la voz del Profeta, y no hablen con él del mismo modo que hablan entre ustedes, pues sus obras se podrían malograr sin que se dieran cuenta.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcxv{Quienes bajan sus voces cuando están en presencia del Mensajero de Dios son aquellos a los que Dios purificó sus corazones, infundiendo en ellos el temor devocional. Ellos recibirán perdón y una recompensa magnífica.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcxvi{La mayoría de los que te llaman con insistencia [¡oh, Mujámmad!] desde afuera de tu morada, no razonan.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcxvii{Mejor sería que esperaran pacientemente hasta que tú salgas; pero [sepan que] Dios es Absolvedor, Misericordioso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdcxviii{¡Oh, creyentes! Si una persona que transgrede se les presenta con alguna noticia, corroboren su veracidad, no sea que perjudiquen a alguien por ignorancia y luego se arrepientan de lo que hayan hecho.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdcxix{Sepan que entre ustedes está el Mensajero de Dios, y que si los obedeciera en la mayoría de los asuntos habrían caído en la perdición. Dios les ha infundido el amor por la fe, embelleciéndola en sus corazones, y los hizo aborrecer la incredulidad, la corrupción y la desobediencia. ¡Esos son los bien guiados!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdcxx{Ese es el favor y la gracia que Dios les ha concedido. Dios todo lo sabe, es Sabio.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxi{Si dos grupos de creyentes combaten entre sí, intenten reconciliarlos. Si uno de los dos actúa abusivamente contra el otro, combatan al grupo opresor hasta que respete las leyes de Dios, pero si lo hace, entonces reconcilien a ambos grupos con equidad. Sean justos, que Dios ama a quienes establecen justicia.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxii{Los creyentes son hermanos entre sí; reconcilien a sus hermanos y tengan temor de Dios para que Él les tenga misericordia.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxiii{¡Oh, creyentes! No se burlen unos de otros, porque pudiera ser que los que son blancos de las burlas sean mejores que los que se están burlando. Que las mujeres no se burlen de otras mujeres, porque es posible que las que son el blanco de las burlas sean mejores que las que se burlan. No difamen ni pongan apodos ofensivos. ¡Qué malo es comportarse como un corrupto luego de haber sido agraciado con la fe! Quienes no se arrepientan… esos son los injustos.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxiv{¡Oh, creyentes! Eviten sospechar demasiado [de la actitud de los demás] pues algunas sospechas son un pecado. Y no se espíen, ni hablen mal del ausente, porque es tan repulsivo como comer la carne muerta de su hermano. ¿Acaso alguien desearía hacerlo? Por supuesto que les repugnaría. Tengan temor de Dios, porque Dios es Indulgente, Misericordioso.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxv{¡Oh, seres humanos! Los he creado a partir de un hombre y de una mujer, y los congregué en pueblos y tribus para que se reconozcan los unos a los otros. El mejor de ustedes ante Dios es el de más piedad. Dios todo lo sabe y está bien informado de lo que hacen.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxvi{Los beduinos dicen: ``Somos creyentes". Diles [¡oh, Mujámmad!]: ``Todavía no son verdaderos creyentes. Mejor digan que han aceptado el Islam, pues la fe no ha ingresado completamente en sus corazones. Sepan que si obedecen a Dios y a Su Mensajero, sus obras no habrán sido en vano [y serán recompensados por ellas]; Dios es Absolvedor, Misericordioso".\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxvii{Los verdaderos creyentes son quienes creen en Dios y en Su Mensajero, y luego no vacilan; quienes luchan por la causa de Dios con sus bienes materiales y sus personas. Esos son los sinceros.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxviii{Diles [¡oh, Mujámmad!]: ``¿Acaso pretenden decirle a Dios en qué creen? Dios conoce cuanto hay en los cielos y en la Tierra. Dios lo sabe todo.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxix{Piensan que te han hecho un favor al abrazar el Islam. Diles [¡oh, Mujámmad!]: ``No me mencionen su conversión al Islam como si fuera un favor hacia mí. Porque si fueron sinceros, fue Dios Quien les hizo el favor de guiarlos a la fe".\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxx{Dios conoce lo oculto de los cielos y de la Tierra. Dios ve todo lo que hacen.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxi{\basmalahes Qaf. [Juro] por el glorioso Corán,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxii{pero los que se niegan a creer se asombran que haya surgido un amonestador de entre ellos mismos, y dicen: ``¡Esto es algo asombroso!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxiii{¿Acaso cuando hayamos muerto y nos hayamos convertido en polvo [seremos resucitados]? ¡Eso es imposible!"\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxiv{Yo sé lo que la tierra consumirá de ellos. Todo lo tengo registrado en un libro protegido.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxv{Desmintieron la verdad cuando les llegó y se encuentran en un estado de confusión.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxvi{¿Acaso no observan el cielo por encima de ellos, cómo lo he erigido y embellecido, y que no tiene ninguna imperfección?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxvii{¿Y a la tierra, cómo la he extendido, fijado en ella montañas firmes, y he hecho brotar en ella vegetales de toda especie?,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxviii{como evidencia y recuerdo para todo siervo arrepentido.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdcxxxix{Hago descender del cielo agua bendita, con la que hago brotar jardines y el grano de la cosecha,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdcxl{y palmeras esbeltas cubiertas de racimos [de dátiles],\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdcxli{como sustento para los siervos. Así como doy vida con la lluvia a la tierra árida, así los resucitaré.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlii{Antes que ellos ya lo habían hecho el pueblo de Noé, los habitantes de Rass y Zamud,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdcxliii{y los habitantes de ‘Ad, el pueblo del Faraón y los hermanos de Lot,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdcxliv{y los habitantes de los valles boscosos y el pueblo de Tubba’. Todos desmintieron a sus Mensajeros, y entonces se cumplió Mi advertencia.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlv{¿Acaso fallé al crearlos por primera vez? Pero a pesar de eso dudan de una nueva creación.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlvi{Creé al ser humano y sé cuáles son sus debilidades. Estoy más cerca de él que su propia vena yugular.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlvii{[Sabe que] dos ángeles escriben todas sus obras, sentados uno a su derecha y el otro a su izquierda,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlviii{no pronuncia palabra alguna sin que a su lado esté presente un ángel observador que la registre.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcxlix{Le llegará la agonía de la muerte con la verdad. ¡De ella era que huía!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdcl{La trompeta será inevitablemente soplada. Ese es un día prometido.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcli{Cada hombre se presentará acompañado por un ángel que lo conduzca y otro que será testigo de sus obras.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdclii{[Se le dirá:] ``Fuiste indiferente a este [día]. Hoy te quito el velo que cubría tu vista y ahora puedes ver".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcliii{El que lo acompañó durante su vida dirá: ``Esto es lo que he registrado".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcliv{[Dios dirá a los ángeles:] ``Arrojen al Infierno a todo aquel que se haya negado obstinadamente a creer,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdclv{a aquel que se negó a hacer el bien, violó la ley, sembró la duda\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdclvi{y asoció divinidades a Dios [en la adoración]. ¡Arrójenlo al castigo severo!"\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdclvii{Dirá el que le susurró toda su vida: ``¡Oh, Señor nuestro! Yo no lo desvié, sino que él estaba en un profundo extravío".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdclviii{Dirá: ``No discutan ante Mí, ya les había advertido sobre esto.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdclix{Mi designio es irrevocable, pero Yo no soy injusto con Mis siervos.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdclx{Ese día le diré al Infierno: ``¿Ya te has llenado?" Y exclamará: ``No. ¿Aún hay más?"\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdclxi{Y el Paraíso será presentado a los piadosos, y no estará distante.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdclxii{[Será dicho:] ``Esto es lo que se había prometido para todos los que vuelven a Dios, son cumplidores,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdclxiii{tienen temor del Compasivo en privado, y se presentan con un corazón obediente.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdclxiv{Ingresen al Paraíso en paz, este día comienza la eternidad.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdclxv{Tendrán en él cuanto anhelen, y les tengo reservada una recompensa aun mayor".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdclxvi{¿A cuántas generaciones más poderosas que ellos he destruido en la antigüedad? Recorrieron tierras buscando escapar, pero, ¿acaso se puede escapar?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdclxvii{En esto hay un motivo de reflexión para quienes tienen uso de razón y prestan oído con una mente consciente.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdclxviii{Creé los cielos y la Tierra y todo cuanto existe entre ambos en seis eras, sin sufrir cansancio.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdclxix{Ten paciencia [¡oh, Mujámmad!] ante sus palabras ofensivas, y glorifica con alabanzas a tu Señor antes de la salida del Sol y antes del ocaso,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdclxx{y glorifícalo por la noche, y después de cada prosternación.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxi{Mantente siempre alerta del día que convoque el pregonero desde un lugar cercano;\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxii{ese día todos escucharán el soplido que anuncia la verdad. Ese será el Día de la Resurrección.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxiii{Yo doy la vida y la muerte, y a Mí será el retorno.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxiv{Ese día la tierra se abrirá, y saldrán [de las tumbas] presurosos. Eso es fácil para Mí.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxv{Sé muy bien lo que dicen de ti [¡oh, Mujámmad!]. Pero tú no puedes forzarlos a creer, solo exhórtalos con el Corán, que quien tema Mi amenaza recapacitará.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxvi{\basmalahes [Juro] por los vientos que soplan,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxvii{por las nubes cargadas de lluvias,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxviii{por los barcos que navegan con facilidad,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxix{por los ángeles que trasmiten las órdenes [de Dios],\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxx{que lo que se les ha anunciado [el Día de la Resurrección] es una verdad,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxi{y que el juicio es inevitable.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxii{Y [juro] por el cosmos surcado de [planetas en] órbitas\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxiii{que ustedes [¡oh, idólatras!] tienen creencias contradictorias [con la verdad]\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxiv{de la que solo se distancian quienes están desviados en su pensamiento.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxv{¡Pobres aquellos que solo conjeturan sobre lo que no pueden comprobar!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxvi{Los que están sumidos en la ignorancia,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxvii{y preguntan: ``¿Cuándo será el Día del Juicio?"\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxviii{Ese día serán atormentados con el Fuego.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdclxxxix{[Les será dicho:] ``Sufran su tormento, esto es lo que pedían que les llegara con rapidez."\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdcxc{Los piadosos, en cambio, morarán en jardines con manantiales.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdcxci{Disfrutarán lo que Su Señor les conceda, porque en la vida mundanal hacían el bien,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcii{dormían poco por las noches,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcxciii{pedían perdón a Dios antes del despuntar del alba,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdcxciv{y daban de su dinero lo que era derecho para el mendigo y el indigente.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcv{En la Tierra hay signos para quienes tienen certeza interior.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcvi{También en ustedes mismos. ¿Es que no ven?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcvii{En el cielo se encuentra [la fuente de] su sustento y lo que les fue prometido.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcviii{[Juro] por el Señor del cielo y de la Tierra que [lo que se les ha prometido] es tan cierto como que pueden hablar.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcxcix{Te relataremos la historia de los huéspedes honorables de Abraham:\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcc{Cuando se presentaron ante él dijeron: ``¡Paz!" Y [Abraham] respondió: ``¡Paz!, gente desconocida".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcci{Y rápidamente se fue a preparar con su familia el mejor de sus terneros,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdccii{y se los ofreció [asado]. Pero [al ver que no comían] les dijo: ``¿Acaso no van a comer?",\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcciii{y sintió temor de ellos. Pero le dijeron: ``No temas", y le albriciaron que tendría un hijo dotado de sabiduría.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcciv{Entonces, su mujer dio un grito de sorpresa y, abofeteándose el rostro, dijo: ``¡Pero si ya soy una anciana estéril!"\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdccv{Le dijeron: ``Así lo ha decretado tu Señor, y Él es el Sabio, el que lo sabe todo".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdccvi{Dijo [Abraham]: ``¡Oh, emisarios! ¿Cuál es su misión?"\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdccvii{Dijeron: ``Fuimos enviados a un pueblo de criminales\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdccviii{para castigarlos con piedras de arcilla cocida,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdccix{marcadas por orden de tu Señor para los trasgresores.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdccx{Pero debemos sacar de allí a los creyentes".\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdccxi{Solo había un hogar de creyentes.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdccxii{Allí dejé un signo para que reflexionen quienes tienen temor del castigo doloroso.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdccxiii{También en la historia de Moisés. Porque lo envié ante el Faraón con una autoridad clara.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdccxiv{Pero él y sus partidarios lo rechazaron y le dijeron: ``Eres un hechicero o un loco".\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdccxv{Entonces, lo castigué a él y a sus partidarios ahogándolos en el mar; él fue el culpable.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdccxvi{Y también en el pueblo de ‘Ad. Envié contra ellos un viento devastador,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdccxvii{que todo lo que alcanzaba lo transformaba en polvo.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdccxviii{También en el pueblo de Zamud. Se les dijo: ``Disfruten transitoriamente".\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdccxix{Pero cuando desobedecieron las órdenes de su Señor fueron fulminados por un rayo mientras lo veían venir,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdccxx{y ni siquiera pudieron ponerse de pie ni defenderse.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxi{El pueblo de Noé [también fue castigado] porque era gente perversa.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxii{Yo soy Quien construí el universo con [Mi] poder [creador]; y soy Yo quien lo expande continuamente.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxiii{Extendí la Tierra [haciéndola propicia para habitar], y con qué excelencia lo he hecho.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxiv{Y todo lo he creado en parejas, para que reflexionen.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxv{[Diles ¡oh, Mujámmad!:] ``Corran hacia Dios, [y sepan que] yo soy un amonestador que habla claro.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxvi{No dediquen actos de adoración a otros que Dios, Yo soy para ustedes un amonestador que habla claro".\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxvii{En la antigüedad, cada vez que llegaba un Mensajero lo acusaban de hechicero o loco.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxviii{Pareciera que se hubieran transmitido esas palabras unos a otros. Pero en realidad son gente transgresora.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxix{Aléjate de ellos [¡oh, Mujámmad!], y sabe que no serás reprochado.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxx{Y hazles recordar, porque el recuerdo beneficia a los creyentes.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxi{No he creado a los yinnes y a los seres humanos sino para que Me adoren.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxii{No pretendo de ellos ningún sustento ni quiero que Me alimenten,\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxiii{ya que Dios es el Sustentador, el Fuerte, el Firme.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxiv{Los injustos recibirán su castigo al igual que sus antepasados, así que no Me apresuren.\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxv{¡Cuán desdichados serán los que negaron la verdad el día que se les ha prometido!\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxvi{\basmalahes [Juro] por el monte,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxvii{por el Libro escrito\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxviii{en un pergamino desplegado,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdccxxxix{por la casa frecuentada,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdccxl{por la bóveda elevada,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdccxli{por el mar que se desborda,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlii{que el castigo de tu Señor es inevitable\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdccxliii{y no hay quién lo pueda impedir.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdccxliv{El día que el cielo se agite intensamente\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlv{y las montañas se muevan,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlvi{¡Cuán desdichados serán ese día los que rechazaron la verdad!,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlvii{aquellos que en su ignorancia se burlaban.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlviii{El día que sean empujados al fuego del Infierno,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdccxlix{[se les dirá:] ``Este es el Fuego que desmentían.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdccl{¿Acaso les parece esto una hechicería, o es que no ven?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdccli{Entren en él, lo soporten o no, será igual. Solo se los castiga por lo que obraron".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdcclii{En cambio, los piadosos morarán en jardines y deleite.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdccliii{Disfrutando lo que su Señor les conceda. Su Señor los salvó del castigo del Infierno.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdccliv{``Coman y beban para satisfacerse, como recompensa por sus obras".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdcclv{Estarán recostados sobre sofás distribuidos en líneas, y los desposaremos con huríes de grandes ojos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcclvi{Los creyentes y sus descendientes que los hayan seguido en la fe serán reunidos, sin que se pierda ninguna de sus obras. Toda persona es responsable de sus propias acciones.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcclvii{Los agraciaremos con tanta fruta y carne como la que deseen.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcclviii{Se pasarán unos a otros una copa que no incitará a frivolidades ni pecados.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcclix{Serán rodeados por sirvientes, bellos como perlas guardadas.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcclx{Y [los bienaventurados] se preguntarán unos a otros.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxi{Dirán: ``Cuando estábamos viviendo junto a nuestra familia, teníamos temor,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxii{pero Dios nos agració y nos preservó del tormento del Fuego.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxiii{A Él le suplicábamos, pues Él es el Bondadoso, el Misericordioso".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxiv{Llama al Mensaje [¡oh, Mujámmad!], tú no eres, por la gracia de tu Señor, un adivino ni un loco.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxv{O te acusan diciendo: ``Es un poeta, esperemos a que le llegue la muerte".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxvi{Diles: ``Sigan esperando, que yo esperaré junto a ustedes".\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxvii{¿Son sus mentes las que los llevan a decir esto o son gente que transgrede los límites?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxviii{También dicen: ``Él lo ha inventado". Pero la verdad es que no creen.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxix{¡Que presenten ellos un libro semejante, si es verdad lo que dicen!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxx{¿Acaso surgieron de la nada o son ellos sus propios creadores?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxi{¿O crearon los cielos y la Tierra? No tienen certeza de nada.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxii{¿Acaso poseen los tesoros de tu Señor o tienen autoridad absoluta?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxiii{¿O tienen una escalera para escuchar los designios de Dios? Quien de ellos logre escuchar, que traiga una prueba clara.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxiv{¿Acaso a Dios Le pertenecen las hijas mujeres y a ellos los hijos varones?\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxv{¿O acaso tú [¡oh, Mujámmad!] les pides una retribución que hace que se vean abrumados por las deudas?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxvi{¿O tienen el conocimiento de lo oculto y lo han registrado?\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxvii{¿O es que quieren tenderte una trampa? Los que se niegan a creer son quienes han caído en una trampa.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxviii{¿O acaso tienen otra divinidad además de Dios? ¡Glorificado sea Dios de cuanto Le asocian!\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxix{Si vieran caer parte del cielo dirían: ``Son solo nubes acumuladas".\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxx{Déjalos, que ya les llegará el día en que quedarán paralizados de terror.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxi{Ese día no los beneficiarán en nada sus argucias y nadie los auxiliará.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxii{Los injustos sufrirán, además de este, otros castigos, pero la mayoría no lo sabe.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxiii{Ten paciencia con los designios de tu Señor, y sabe que te encuentras bajo Mis ojos. Glorifica con alabanzas a tu Señor cuando te levantes [a orar],\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxiv{por la noche y al ocultarse las estrellas.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxv{\basmalahes [Juro] por la estrella cuando desaparece\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxvi{que su compañero no se ha extraviado ni está en un error,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxvii{ni habla de acuerdo a sus pasiones.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxviii{Él solo trasmite lo que le ha sido revelado.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcclxxxix{Aquello que le enseñó el dotado de poder\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdccxc{y fortaleza, cuando se le presentó en su forma verdadera\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdccxci{en lo más elevado del horizonte,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcii{y luego descendió y se acercó a él,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdccxciii{hasta una distancia de dos arcos o menos aún.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdccxciv{Entonces [Dios] le inspiró a Su siervo la revelación.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcv{El corazón no desmintió lo que había visto.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcvi{¿Le van a discutir sobre lo que vio?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcvii{Sepan que ya lo había visto en otro descenso,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcviii{junto al azufaifo que demarca el límite,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdccxcix{donde se encuentra el jardín de la residencia eterna.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdccc{Cuando al azufaifo lo cubrió lo que lo cubrió,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdccci{y su mirada no se desvió ni se propasó.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdcccii{Porque contempló algunos de los signos más sublimes de su Señor.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdccciii{¿Cómo es que adoran a [los ídolos] Lat, a ‘Uzza\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdccciv{y a Manat, la tercera?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdcccv{Para ustedes los hijos varones y para Dios las hijas mujeres.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdcccvi{Esa es una división injusta.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdcccvii{[Esos tres ídolos] son solo nombres que ustedes y sus padres han inventado, porque Dios no les dio autoridad alguna para ello. [Los idólatras] solo siguen suposiciones impulsados por sus propias pasiones, a pesar de haberles llegado la guía de su Señor.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdcccviii{¿Acaso cree el ser humano que obtendrá todo cuanto ambiciona?\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdcccix{A Dios le pertenecen esta vida y la otra.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdcccx{¿Cuántos ángeles hay en los cielos cuya intercesión no servirá de nada, salvo que Dios lo permita en favor de quien Él quiera y de quien esté complacido?\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxi{Quienes no creen en la otra vida, le dan a los ángeles nombres femeninos\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxii{sin tener ningún conocimiento sobre ello. Solo siguen conjeturas, pero las conjeturas carecen de valor frente a la Verdad.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxiii{Apártate de quienes rechazan Mi Mensaje y no desean sino [el materialismo de] la vida mundanal.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxiv{Ese es el único conocimiento que les interesa alcanzar. Tu Señor bien sabe quién se extravía de Su camino y quién se encamina.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxv{A Dios pertenece cuanto hay en los cielos y en la Tierra, y Él castigará a quienes obren el mal y retribuirá con una hermosa recompensa a los que hagan el bien,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxvi{aquellos que evitan los pecados graves y las obscenidades, y no cometen más que faltas leves. Tu Señor es inmensamente indulgente. Él los conoce bien, ya que los creó de la tierra y luego hizo que fueran embriones en el vientre de sus madres. No se elogien a sí mismos, Él bien sabe quién es realmente piadoso.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxvii{¿Has visto que quien rechaza [el Islam],\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxviii{da poco en caridad y es tacaño?\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxix{¿Acaso tiene conocimiento de lo oculto y puede ver [lo que sucederá en el Más Allá]?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxx{¿No le han informado de lo que contienen las páginas reveladas a Moisés\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxi{y a Abraham, el fiel cumplidor?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxii{Que nadie cargará con pecados ajenos,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxiii{que el ser humano no obtendrá sino el fruto de sus esfuerzos,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxiv{que sus esfuerzos se verán,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxv{que será retribuido con una recompensa total,\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxvi{y que ante tu Señor se ha de comparecer finalmente.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxvii{Él es Quien hace reír y hace llorar,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxviii{Él es Quien causa la muerte y la vida,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxix{Él ha creado la pareja: el macho y la hembra,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxx{de una gota de esperma eyaculada.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxi{Él es Quien los creará por segunda vez.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxii{Él es Quien concede la riqueza y la pobreza,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxiii{Él es el Señor de Sirio,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxiv{Él destruyó al antiguo pueblo de ‘Ad\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxv{y al pueblo de Zamud, de los que no quedó nadie.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxvi{También lo hizo antes con el pueblo de Noé, pues ellos eran más injustos y transgresores.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxvii{Y a la ciudad que cayó al revés,\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxviii{y la cubrió lo que la cubrió.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxxxix{¿Cuál de las bendiciones de tu Señor pondrás en duda [oh, ser humano]?\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxl{Él es un Profeta como los que lo precedieron.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxli{La llegada es inminente,\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlii{pero nadie, salvo Dios, tiene conocimiento de cuándo ocurrirá.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxliii{¿De este mensaje se sorprenden?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxliv{¿Ríen en vez de llorar?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlv{¿Permanecen distraídos?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlvi{¡Prostérnense ante Dios y adórenlo solo a Él!\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlvii{\basmalahes El Día del Juicio está próximo, y la Luna se parte en dos.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlviii{Pero cuando contemplaron el signo, se rehusaron a creer y dijeron: ``Esto es un hechizo persistente".\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxlix{Desmintieron y siguieron sus inclinaciones. Pero todo tiene un desenlace definitivo.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmdcccl{Ya han recibido suficiente información disuasiva.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmdcccli{Una sabiduría sublime [de Dios], pero las advertencias han sido en vano,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmdccclii{así que apártate de ellos. El día que un pregonero les convoque para algo terrible,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmdcccliii{saldrán de las tumbas con la mirada baja, como si fueran langostas desorientadas,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmdcccliv{acudiendo presurosos a la llamada del pregonero. Los que se negaron a creer exclamarán: ``¡Hoy será un día difícil!"\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmdccclv{Pero antes que ellos ya se había negado a creer el pueblo de Noé. Desmintieron a Mi siervo y dijeron: ``Es un demente", y lo amenazaron.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmdccclvi{Entonces [Noé] invocó a su Señor: ``¡Me han vencido, Te pido ayuda!"\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmdccclvii{Entonces abrí las puertas del cielo con un agua torrencial,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmdccclviii{también hice brotar agua de la tierra y se encontraron las aguas, por un mandato que había sido decretado.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmdccclix{Pero a él lo transporté en una embarcación construida con tablas y clavos,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmdccclx{que navegó bajo la protección de Mis ojos. Así recompensé a quien había sido rechazado.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxi{Hice que la embarcación se preservara para que fuera un signo. Pero, ¿habrá alguien que reflexione?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxii{¡Qué severos fueron Mi castigo y Mi advertencia!\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxiii{He hecho el Corán fácil de comprender y memorizar. Pero, ¿habrá alguien que reflexione?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxiv{[En la antigüedad] el pueblo de ‘Ad se negó a creer, ¡y qué severos fueron Mi castigo y Mi advertencia!\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxv{Envié sobre ellos un viento glacial y tempestuoso en un día interminable,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxvi{que levantaba a la gente como si fueran troncos de palmeras arrancados de raíz.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxvii{¡Qué severos fueron Mi castigo y Mi advertencia!\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxviii{He hecho el Corán fácil de entender y memorizar. Pero, ¿habrá alguien que lo reflexione?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxix{El pueblo de Zamud desmintió las advertencias.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxx{Dijeron: ``¿Acaso vamos a seguir a un ser humano igual a nosotros? Si lo hiciéramos, estaríamos extraviados y delirantes.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxi{¿Por qué le habría sido concedido el Mensaje solo a él de entre todos nosotros? Es un mentiroso arrogante".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxii{¡Pero ya sabrán mañana quién es el verdadero mentiroso arrogante!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxiii{Les envié la camella como una prueba: ``Obsérvalos y ten paciencia,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxiv{e infórmales que el agua debe compartirse, y que deberán respetar su turno".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxv{Pero ellos llamaron a uno de sus compañeros, quien la mató.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxvi{¡Y qué severos fueron Mi castigo y Mi advertencia!\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxvii{Les envié una sola explosión [desde el cielo] y quedaron como hierba pisoteada por el ganado.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxviii{He hecho el Corán fácil de entender y memorizar. Pero, ¿habrá alguien que lo reflexione?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxix{El pueblo de Lot desmintió la advertencia.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxx{Les envié una tormenta de piedras, salvo a la familia de Lot, a quienes salvé al amanecer\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxi{como una gracia de Mi parte, porque así retribuyo a quienes son agradecidos.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxii{[Lot] les había advertido de Mi rigor, pero dudaron de las advertencias\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxiii{y le demandaron [a Lot] que les entregara a sus huéspedes, y entonces cegué sus ojos. ¡Sufran Mi castigo y Mi advertencia!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxiv{Y por la mañana los sorprendió un castigo decretado.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxv{¡Sufran Mi castigo y Mi advertencia!\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxvi{Hemos hecho el Corán fácil de entender y memorizar. Pero, ¿habrá alguien que reflexione?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxvii{Mi advertencia le llegó al Faraón [y su pueblo],\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxviii{pero desmintieron todos Mis signos, y los castigué con un castigo severo, como solo puede hacer el Todopoderoso, el Omnipotente.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmdccclxxxix{¿Acaso los que se niegan a creer entre ustedes son mejores que estos? ¿O tienen alguna Escritura que les proporcione inmunidad?\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxc{¿Es por ello que dicen: ``Somos un grupo invencible"?\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxci{Pero todos ellos serán vencidos y huirán.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcii{Mas la Hora será su cita, y ese día será más terrible y amargo aún.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxciii{Los que hacen el mal están en un estado de extravío y locura.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxciv{El día que sean arrojados de cara al fuego [se les dirá:] ``¡Sufran el tormento del Infierno!"\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcv{He creado todas las cosas en su justa medida.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcvi{Y Mi orden es dada solo una vez, y ejecutada en un abrir y cerrar de ojos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcvii{Ya destruí en el pasado a quienes desmintieron como ustedes. Pero, ¿habrá alguien que reflexione?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcviii{Todo cuanto obraron se encuentra registrado en el libro de sus obras.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmdcccxcix{Y todo cuanto ocurre, importante o insignificante, está escrito.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcm{Los piadosos estarán entre jardines y ríos,\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcmi{en un lugar honorable, junto al Soberano Todopoderoso.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcmii{\basmalahes El Compasivo\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcmiii{enseñó el Corán,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcmiv{creó al ser humano\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcmv{y le enseñó a hablar con elocuencia.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcmvi{El Sol y la Luna siguen una órbita precisa,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcmvii{y las hierbas y los árboles se prosternan [ante Dios].\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcmviii{Elevó el cielo, y estableció la balanza de la justicia\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcmix{para que no transgredan el equilibrio [de la equidad].\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcmx{Pesen con equidad y no cometan fraude en la balanza.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcmxi{Preparó la Tierra para Sus criaturas.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcmxii{En ella hay árboles frutales, palmeras con racimos [de dátiles],\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcmxiii{semillas y plantas aromáticas.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcmxiv{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcmxv{Creó al ser humano de arcilla como la cerámica,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcmxvi{y creó a los yinnes de fuego puro.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcmxvii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcmxviii{El Señor de los dos nacientes y los dos ponientes.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcmxix{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcmxx{Hizo que las dos grandes masas de agua se encuentren,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxi{pero dispuso entre ambas una barrera que no transgreden.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxiii{De ambas se extraen perlas y corales.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxiv{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxv{Suyas son las embarcaciones que sobresalen en el mar como montañas.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxvi{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxvii{Todo cuanto existe en la Tierra perecerá,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxviii{y solo el rostro de tu Señor perdurará por siempre, el Majestuoso y el Noble.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxix{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxx{Lo invocan suplicando todos los que habitan en los cielos y en la Tierra. Todos los días se encuentra atendiendo los asuntos [de Su creación].\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxi{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxii{Me encargaré de los que cargan con el libre albedrío.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxiii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxiv{¡Oh, yinnes y seres humanos! Si pueden traspasar los confines del cielo y de la Tierra, háganlo. Pero sepan que solo podrán traspasarlos con autorización [de Dios].\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxv{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxvi{[Si lo intentaran,] llamaradas de fuego y cobre fundido les serían lanzadas y no podrían defenderse.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxvii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxviii{El cielo se hendirá y se pondrá al rojo vivo como la lava.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmcmxxxix{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmcmxl{Ese día no será necesario preguntarles por sus pecados a los seres humanos ni a los yinnes.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmcmxli{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlii{Los pecadores serán reconocidos por su aspecto, y se les tomará por la frente y por los pies.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmcmxliii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmcmxliv{Este es el Infierno que desmentían los criminales.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlv{No dejarán de ir y venir entre el fuego y un agua hirviente.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlvi{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlvii{Para quien haya tenido temor de comparecer ante su Señor habrá dos jardines.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlviii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmcmxlix{[Jardines] frondosos.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmcml{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmcmli{En cada uno habrá dos manantiales.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmcmlii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmcmliii{En cada uno habrá dos especies de cada fruta.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmcmliv{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmcmlv{Estarán reclinados en sofás tapizados de brocado, y la fruta de ambos jardines estará al alcance de la mano.\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmcmlvi{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmcmlvii{Habrá en ellos mujeres de mirar recatado, que no fueron tocadas antes por ningún ser humano ni tampoco un yinn.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmcmlviii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmcmlix{Ellas serán de una belleza semejante al rubí y al coral.\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmcmlx{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxi{¿Acaso la recompensa del bien no es el bien mismo?\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxiii{Además de esos dos, habrá otros dos jardines.\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxiv{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxv{De profundo verdor.\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxvi{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxvii{En ambos habrá dos manantiales brotando.\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxviii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxix{Habrá frutas, datileras y granadas.\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxx{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxi{Y también habrá buenas y hermosas [mujeres].\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxiii{Huríes, retiradas en bellas moradas.\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxiv{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxv{Que no fueron tocadas antes por ningún ser humano ni tampoco un yinn.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxvi{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxvii{[Los bienaventurados] estarán reclinados sobre cojines verdes y hermosas alfombras.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxviii{¿Acaso pueden negar alguna de las gracias que les ha concedido su Señor?\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxix{¡Bendito sea el nombre de tu Señor, el poseedor de la majestuosidad y la generosidad!\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxx{\basmalahes Cuando sobrevenga el suceso\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxi{no habrá quién pueda evitarlo.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxii{Algunos serán humillados y otros serán honrados.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxiii{Cuando la Tierra se sacuda violentamente\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxiv{y las montañas caigan desmoronadas\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxv{convirtiéndose en polvo disperso,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxvi{serán divididos en tres grupos:\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxvii{Los compañeros de la derecha. ¡Qué afortunados serán los compañeros de la derecha!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxviii{Los compañeros de la izquierda. ¡Qué desafortunados serán los compañeros de la izquierda!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmcmlxxxix{Y los adelantados. ¡Estos serán los primeros!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmcmxc{Serán los allegados [a Dios],\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmcmxci{estarán en los Jardines de las Delicias.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcii{Muchos de ellos serán de las primeras generaciones\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmcmxciii{y muy pocos de las últimas.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmcmxciv{Tendrán lechos incrustados con oro y piedras preciosas,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcv{y se recostarán en ellos, unos enfrente de otros.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcvi{Circularán entre ellos sirvientes eternamente jóvenes,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcvii{con vasos, jarros y una copa llenados en un manantial puro,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcviii{que no provocará jaqueca ni embriaguez.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmcmxcix{Tendrán las frutas que elijan,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmm{y la carne de ave que les apetezca.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmi{Habrá huríes de ojos hermosos,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmii{como si fueran perlas ocultas.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmiii{En recompensa por las obras buenas que solían hacer.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmiv{No oirán frivolidades ni incitación al pecado,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmv{tan solo la palabra: ``¡Paz!, ¡paz!"\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmvi{Los compañeros de la derecha. ¡Qué afortunados serán los compañeros de la derecha!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmvii{Estarán entre azufaifos sin espinas,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmviii{y árboles cargados de frutos,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmix{de sombra extensa.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmx{Habrá agua de continuo fluir\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmxi{y frutos abundantes,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmxii{que no se agotarán y siempre estarán al alcance de sus manos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmxiii{[Reposarán] en camas elevadas.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmxiv{Las creé [a las mujeres del Paraíso] de manera especial,\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmxv{vírgenes,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmxvi{amorosas y siempre con la misma edad.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmxvii{Esto es para los compañeros de la derecha.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmxviii{Muchos de ellos serán de las primeras generaciones,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmxix{y muchos serán de las últimas generaciones.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmxx{¡Pero qué desafortunados serán los compañeros de la izquierda!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmxxi{Atormentados por un viento abrasador y un líquido hirviente,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmxxii{a la sombra de un humo negro,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmxxiii{que no será fresca ni agradable.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmxxiv{Porque se entregaron a los lujos superfluos,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmxxv{se aferraron al más terrible pecado\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmxxvi{y preguntaban burlándose: ``¿Acaso cuando muramos y ya seamos tierra y huesos, vamos a ser resucitados?\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmxxvii{¿Y nuestros ancestros también?"\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmxxviii{Respóndeles: ``Los primeros y los últimos\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmxxix{serán congregados en un día ya establecido.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmxxx{Luego, ¡oh, extraviados y desmentidores!,\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxi{han de comer del árbol del Zaqqum\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxii{con el que llenarán sus vientres,\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxiii{y luego beberán un líquido hirviente\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxiv{como beben los camellos sedientos que no pueden saciar su sed".\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxv{Esa será su morada el Día del Juicio.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxvi{Yo los creé, ¿por qué no aceptan la verdad?\qt@no{(57)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxvii{¿Por qué no reflexionan en lo que eyaculan?\qt@no{(58)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxviii{¿Lo han creado ustedes o soy Yo el creador?\qt@no{(59)}}
+\qt@newcmd\qurantrans@es@mmmmmxxxix{Yo he decretado cuándo morirá cada uno de ustedes y nadie podría impedirme\qt@no{(60)}}
+\qt@newcmd\qurantrans@es@mmmmmxl{aniquilarlos y sustituirlos [por otra generación], y resucitarlos [el Día del Juicio] conforme a un proceso que desconocen.\qt@no{(61)}}
+\qt@newcmd\qurantrans@es@mmmmmxli{Si reconocen que fueron creados por primera vez, ¿por qué no reflexionan?\qt@no{(62)}}
+\qt@newcmd\qurantrans@es@mmmmmxlii{¿No han observado sus cultivos?\qt@no{(63)}}
+\qt@newcmd\qurantrans@es@mmmmmxliii{¿Ustedes los hacen germinar, o soy Yo Quien los hace germinar?\qt@no{(64)}}
+\qt@newcmd\qurantrans@es@mmmmmxliv{Si quisiera los convertiría en pasto seco y entonces se lamentarían,\qt@no{(65)}}
+\qt@newcmd\qurantrans@es@mmmmmxlv{[y dirían:] ``Hemos sido castigados,\qt@no{(66)}}
+\qt@newcmd\qurantrans@es@mmmmmxlvi{y quedamos en la ruina".\qt@no{(67)}}
+\qt@newcmd\qurantrans@es@mmmmmxlvii{¿No han observado el agua que beben?\qt@no{(68)}}
+\qt@newcmd\qurantrans@es@mmmmmxlviii{¿Ustedes la hacen descender de las nubes o soy Yo Quien la hago descender?\qt@no{(69)}}
+\qt@newcmd\qurantrans@es@mmmmmxlix{Si quisiera la habría hecho salobre, ¿por qué no son agradecidos?\qt@no{(70)}}
+\qt@newcmd\qurantrans@es@mmmmml{¿No han observado el fuego que encienden?\qt@no{(71)}}
+\qt@newcmd\qurantrans@es@mmmmmli{¿Ustedes han creado el árbol con el que lo encienden o soy Yo el creador?\qt@no{(72)}}
+\qt@newcmd\qurantrans@es@mmmmmlii{He creado el fuego para que reflexionen, y para beneficio de los viajeros.\qt@no{(73)}}
+\qt@newcmd\qurantrans@es@mmmmmliii{Glorifica el nombre de tu Señor, el Grandioso.\qt@no{(74)}}
+\qt@newcmd\qurantrans@es@mmmmmliv{¡Juro por las estrellas cuando desaparecen!\qt@no{(75)}}
+\qt@newcmd\qurantrans@es@mmmmmlv{Lo cual, si supieran, es un juramento grandioso.\qt@no{(76)}}
+\qt@newcmd\qurantrans@es@mmmmmlvi{Que este es un Corán Noble,\qt@no{(77)}}
+\qt@newcmd\qurantrans@es@mmmmmlvii{preservado en un libro custodiado,\qt@no{(78)}}
+\qt@newcmd\qurantrans@es@mmmmmlviii{que solo pueden tocar los purificados.\qt@no{(79)}}
+\qt@newcmd\qurantrans@es@mmmmmlix{Es una revelación descendida por el Señor del universo.\qt@no{(80)}}
+\qt@newcmd\qurantrans@es@mmmmmlx{¿A este Mensaje son indiferentes?\qt@no{(81)}}
+\qt@newcmd\qurantrans@es@mmmmmlxi{¿Y agradecen lo que reciben de Dios negando la Verdad?\qt@no{(82)}}
+\qt@newcmd\qurantrans@es@mmmmmlxii{Entonces, cuando [el alma] llegue hasta la garganta,\qt@no{(83)}}
+\qt@newcmd\qurantrans@es@mmmmmlxiii{y ustedes estén mirándolo,\qt@no{(84)}}
+\qt@newcmd\qurantrans@es@mmmmmlxiv{pero Yo estoy más cerca que ustedes de él, aunque no lo vean;\qt@no{(85)}}
+\qt@newcmd\qurantrans@es@mmmmmlxv{si es verdad como dicen que no serán juzgados,\qt@no{(86)}}
+\qt@newcmd\qurantrans@es@mmmmmlxvi{devuélvanle el alma, si es que son sinceros.\qt@no{(87)}}
+\qt@newcmd\qurantrans@es@mmmmmlxvii{Si [el agonizante] es uno de los adelantados\qt@no{(88)}}
+\qt@newcmd\qurantrans@es@mmmmmlxviii{tendrá descanso, plenitud y el Jardín de las Delicias.\qt@no{(89)}}
+\qt@newcmd\qurantrans@es@mmmmmlxix{Y si es de los compañeros de la derecha:\qt@no{(90)}}
+\qt@newcmd\qurantrans@es@mmmmmlxx{``La paz sea contigo, pues eres de los compañeros de la derecha".\qt@no{(91)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxi{Pero si es de los que negaron la Verdad, de los extraviados,\qt@no{(92)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxii{será atormentado con un líquido hirviente\qt@no{(93)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxiii{y luego será arrojado al fuego del Infierno.\qt@no{(94)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxiv{esta es la Verdad sobre la que no hay duda.\qt@no{(95)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxv{¡Glorifica el nombre de tu Señor, el Grandioso!\qt@no{(96)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxvi{\basmalahes Todo cuanto hay en los cielos y en la Tierra glorifica a Dios. Él es el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxvii{Suyo es el reino de los cielos y de la Tierra. Él da la vida y la muerte. Es sobre toda cosa Poderoso.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxviii{Él es el Primero y el Último, el Manifiesto y el Oculto. Él conoce todas las cosas.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxix{Él es Quien creó los cielos y la Tierra en seis eras. Luego, se estableció sobre el Trono. Sabe lo que ingresa en la tierra y cuanto sale de ella, lo que desciende del cielo y lo que asciende a él. Está con ustedes dondequiera que estén. Dios bien ve cuanto hacen.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxx{Suyo es el reino de los cielos y de la Tierra. Y a Dios retornan todos los asuntos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxi{Hace que la noche suceda al día y que el día suceda a la noche. Él conoce todo lo que encierran los corazones.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxii{Crean en Dios y en Su Mensajero. Hagan caridad de los bienes de los que Él los ha hecho responsables. Quienes hayan creído y hecho caridades recibirán una gran recompensa.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxiii{¿Qué les sucede que no creen en Dios, siendo que el Mensajero los invita a creer en su Señor y ya tenía un pacto con ustedes? Si es que son creyentes.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxiv{Él es Quien desciende a Su siervo signos evidentes para extraerlos de las tinieblas a la luz. Dios es con ustedes Compasivo, Misericordioso.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxv{¿Qué les sucede que no aportan a la causa de Dios, siendo que los cielos y la Tierra Le pertenecen a Él? No son iguales quienes hayan aportado y combatido antes de la liberación. Ellos tendrán un rango mayor que quienes hayan aportado y combatido después de la liberación. Pero a todos les ha prometido Dios una hermosa recompensa. Dios está bien informado de cuanto hacen.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxvi{¿Quién le dará a Dios un préstamo generoso, para que Él se lo multiplique y lo recompense ampliamente?\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxvii{Ese día verás la luz de los creyentes y de las creyentes irradiar delante de ellos y a su derecha. [Les será dicho]: ``¡Hoy son bienaventurados, tendrán jardines por donde corren ríos, en donde vivirán por toda la eternidad! ¡Ese es el triunfo grandioso!"\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxviii{El día que los hipócritas y las hipócritas digan a los creyentes: ``¡Aguarden, para que nos podamos iluminar con su luz!" Se les dirá: ``¡Apártense y busquen otra luz!" Entonces se levantará un muro entre ellos que tendrá una puerta. Detrás estará la misericordia de Dios y ante ellos Su castigo.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmlxxxix{Los llamarán: ``¿Acaso no estábamos con ustedes?" Responderán: ``¡Sí! Pero sucumbieron a la tentación, estaban vacilantes y dudaron. Se dejaron seducir por las falsas esperanzas hasta que les llegó la orden de Dios. Finalmente el Seductor los engañó acerca de Dios.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmxc{Hoy no será aceptado ningún rescate por ustedes ni por los que se negaron a creer. Su morada será el Infierno, porque es lo que merecen. ¡Qué pésimo destino!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmxci{¿Acaso no es hora de que los creyentes subyuguen sus corazones al recuerdo de Dios y a la Verdad que ha sido revelada, y que no sean como quienes recibieron el Libro anteriormente? A estos, a medida que transcurría el tiempo, se les endurecía el corazón. Muchos de ellos eran corruptos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmxcii{Sepan que Dios da vida a la tierra árida. Les explico estos signos para que reflexionen.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmxciii{A los [hombres] que dan caridad y a las [mujeres] que dan caridad, que aportaron con sus bienes a la causa de Dios, les será multiplicado y serán recompensados generosamente.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmxciv{Quienes creen en Dios y en Sus Mensajeros son los veraces para Dios, los que mueren dando testimonio [de su fe]. Ellos recibirán su recompensa y su luz. Pero los que se negaron a creer y desmintieron Mis signos, morarán en el fuego del Infierno.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmxcv{Sepan que la vida mundanal es juego, diversión, encanto, ostentación y rivalidad en riqueza e hijos. Es como la lluvia que genera plantas que alegran a los sembradores con su verdor, pero luego las ven amarillearse hasta convertirse en heno. En la otra vida, ustedes recibirán un castigo severo o el perdón de Dios y Su complacencia. La vida mundanal no es más que un disfrute ilusorio.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmxcvi{¡Apresúrense a alcanzar el perdón de su Señor y así obtener un Paraíso tan vasto como el cielo y la Tierra, el cual está reservado para quienes creen en Dios y en Sus Mensajeros! Esa es la bendición de Dios, y Él se la concede a quien quiere. Dios es poseedor de una bendición grandiosa.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmxcvii{No sucede ninguna desgracia en la Tierra, ni a ustedes los azota adversidad alguna sin que esté registrada en un libro antes de que suceda. Eso es fácil para Dios.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmxcviii{No se depriman por lo que pierdan y no se regocijen con arrogancia por lo que se les ha concedido. Dios no ama a los arrogantes, jactanciosos,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmxcix{que son mezquinos e incitan a la gente a ser avara. Quien rechace sepa que Dios prescinde de todas las criaturas, y Él es el Opulento, el Loable.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmc{Envié a Mis Mensajeros con las pruebas evidentes e hice descender con ellos el Libro y la balanza de la justicia para que la gente establezca la equidad. Hice descender el hierro, en el que hay gran poder y beneficio para la gente. Para que Dios distinga a quienes se esfuercen sinceramente por Su causa y la de Sus Mensajeros. Dios es Fortísimo, Poderoso.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmci{Envié a Noé y a Abraham, y agracié a la descendencia de ambos con la profecía y el Libro. Entre sus descendientes hubo quienes siguieron la guía, aunque muchos de ellos fueron corruptos.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcii{Después de ellos envié a Mis Mensajeros: a Jesús, hijo de María, le revelé el Evangelio, e infundí en los corazones de quienes lo siguieron la compasión y la misericordia. Ellos establecieron el monacato sin que se los hubiera prescrito, solo por deseo de satisfacer a Dios, pero aun así no lo observaron como debían. A quienes de ellos hayan creído los recompensaré, pero muchos fueron corruptos.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmciii{¡Oh, creyentes! ¡Tengan temor de Dios y crean en Su Mensajero! Les multiplicará Su misericordia, les dará una luz para el camino y los perdonará. Dios es Absolvedor, Misericordioso.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmciv{Que la Gente del Libro sepan que carecen de privilegios ante Dios. Los favores están en manos de Dios, y Él los concede a quien quiere. Dios es el poseedor del favor inmenso.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcv{\basmalahes Dios oyó las palabras de quien reclamaba ante ti [¡oh, Mujámmad!] acerca de su esposo y se quejaba por su aflicción ante Dios, y Dios escuchaba su diálogo porque Dios todo lo oye, todo lo ve.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcvi{Quienes digan a sus mujeres: ``¡Eres para mí tan ilícita como mi madre!" Sepan que ellas no son sus madres. Sus madres son solo quienes los han dado a luz. Lo que dicen es reprobable y falso, pero Dios es Remisorio, Absolvedor.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcvii{Quienes repudien a su mujer diciéndole: ``¡Eres para mí tan ilícita como mi madre!", y luego se retracten, deberán liberar a un esclavo antes de poder cohabitar. Así es como se los escarmienta. Sepan que Dios está bien informado de cuanto hacen.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcviii{Pero quien no pueda hacerlo, deberá ayunar dos meses consecutivos antes de poder cohabitar. Quien no pueda, deberá alimentar a sesenta pobres. Esto es para que crean [con sinceridad] en Dios y en Su Mensajero [y aprendan a respetar a la mujer]. Estos son los preceptos de Dios. Pero los que se nieguen a creer recibirán un castigo doloroso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcix{Los que combatan a Dios y a Su Mensajero serán derrotados como quienes los precedieron. He revelado signos evidentes, y por eso quienes se nieguen a creer recibirán un castigo humillante.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcx{El día que Dios los resucite a todos, les informará cuanto hicieron. Dios registró sus obras, mientras que ellos las olvidaron. Dios es testigo de todo.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcxi{¿Acaso no ves que Dios conoce cuanto hay en los cielos y en la Tierra? No hay confidencia entre tres sin que Él sea el cuarto, ni entre cinco sin que Él sea el sexto. Siempre, sean menos o más, Él estará presente dondequiera que se encuentren. El Día de la Resurrección les informará sobre lo que hicieron. Dios tiene conocimiento de todas las cosas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcxii{¿Acaso no ves a aquellos a los que se les habían prohibido los conciliábulos, pero igualmente persisten en hacerlo en secreto? Se confabulan para la maldad, la enemistad y la desobediencia al Mensajero. Cuando se presentan ante ti [¡oh, Mujámmad!] no te saludan como Dios ha ordenado que lo hagan, y se dicen ente ellos [en tono burlón]: ``¿Por qué será que Dios no nos castiga por lo que decimos?" Será suficiente el Infierno al que serán arrojados. ¡Qué pésimo destino!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcxiii{¡Oh, creyentes! Cuando hablen en secreto no lo hagan para cometer una maldad, crear una enemistad o desobedecer al Mensajero, sino que hablen en secreto para acordar actos de benevolencia y piedad. Tengan temor de Dios, que ante Él comparecerán.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcxiv{Las confabulaciones son obras del demonio para entristecer a los creyentes. Pero, en realidad, no podrán hacerles ningún daño, salvo que Dios lo permita. Que a Dios se encomienden los creyentes.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcxv{¡Oh, creyentes! Cuando se les dice: ``Hagan un lugar en las reuniones, háganlo, para que Dios les haga a ustedes un lugar". Y si se les dice: ``¡Levántense!" Levántense. Sepan que Dios elevará en grados a los creyentes y a quienes agracie con el conocimiento. Dios sabe cuanto hacen.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcxvi{¡Oh, creyentes! Cuando quieran consultar en privado al Mensajero, antes de presentarse hagan una caridad. Esto es mejor para ustedes porque los purifica. Pero si no pueden, sepan que Dios es Absolvedor, Misericordioso.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcxvii{¿Acaso temen no poder ofrecer una caridad antes de consultarlo en privado? Si no pueden hacerlo Dios los absolverá, pero hagan la oración prescrita, paguen el zakat y obedezcan a Dios y a Su Mensajero. Dios está bien informado de cuanto hacen.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcxviii{¿No has reparado en aquellos que tomaron como aliados a un pueblo que cayó en la ira de Dios? No están con unos ni con otros, y juran con mentiras a sabiendas.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcxix{Dios les ha preparado un castigo severo por el mal que cometieron.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcxx{Se escudan en sus falsos juramentos para engañar a la gente, apartándola del sendero de Dios, y por eso recibirán un castigo humillante.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxi{Ni sus riquezas ni sus hijos les serán de beneficio alguno ante Dios. Ellos serán los moradores del Infierno, donde sufrirán por toda la eternidad.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxii{El día que Dios los resucite a todos, Le jurarán como les juraban a ustedes, creyendo que les servirá de algo. ¿Acaso no son ellos los que mienten?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxiii{El demonio los sedujo y los hizo olvidar que recordaran a Dios. Esos son los partidarios del demonio. ¿Acaso no son secuaces del demonio los perdedores?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxiv{Quienes se enfrenten a Dios y a Su Mensajero serán los más viles.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxv{Dios ha decretado: ``Mis Mensajeros y Yo venceremos". Dios es Fortísimo, Poderoso.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxvi{No encontrarás ningún pueblo que crea en Dios y en el Día del Juicio que sienta afecto por quienes combaten a Dios y a Su Mensajero, aunque estos sean sus padres, sus hijos, sus hermanos o sus parientes. A ellos [Dios] les ha grabado la fe en sus corazones, los ha fortalecido con Su luz y los ingresará en jardines por donde corren ríos por toda la eternidad. Dios se complace de ellos y ellos de Él. Estos son los aliados de Dios. ¿Acaso no son los aliados de Dios los triunfadores?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxvii{\basmalahes Todo lo que hay en los cielos y en la Tierra glorifica a Dios. Él es el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxviii{Él es Quien hizo que los que se negaron a creer de la Gente del Libro abandonaran sus hogares en el primer destierro. Ustedes no creían que ellos saldrían, y ellos pensaban que sus fortalezas los protegerían de Dios. Pero Dios los sorprendió de donde menos lo esperaban. Infundió terror en sus corazones, y comenzaron a destruir sus casas con sus propias manos y con las manos de los creyentes. Reflexionen sobre ello, ¡oh, gente que razona!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxix{Si Dios no hubiera decretado su destierro, los habría castigado en la vida mundanal. En la otra vida, no obstante, sufrirán el castigo del Infierno\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxx{por haberse enfrentado a Dios y a Su Mensajero. Quien se enfrente a Dios debe saber que Dios es severo en el castigo.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxi{[Oh, musulmanes, no sientan pesar,] porque tanto si talaban una palmera o la dejaban en pie, era con el permiso de Dios, con el fin de doblegar a los corruptos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxii{Ustedes no tuvieron la necesidad de emplear caballos ni camellos para contribuir a lo que Dios concedió a Su Mensajero como botín, porque Dios concede a Sus Mensajeros predominio sobre quien quiere. Dios tiene poder sobre todas las cosas.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxiii{Lo que Dios concedió de la gente de las aldeas a Su Mensajero pertenece a Dios, al Mensajero, a sus parientes, a los huérfanos, a los pobres y al viajero insolvente, para que la riqueza no sea un privilegio solo de los ricos. Lo que les ha transmitido el Mensajero tómenlo, y cuanto les haya prohibido déjenlo. Tengan temor de Dios, porque Dios es severo en el castigo.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxiv{[También le corresponde una parte de dicho botín] a los emigrados pobres que fueron expulsados de sus hogares y despojados de sus bienes cuando buscaban la gracia de Dios y Su complacencia, y apoyaron a Dios y a Su Mensajero. Ellos son los sinceros.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxv{Quienes estaban establecidos y aceptaron la fe antes de su llegada, aman a los que emigraron, no sienten envidia alguna en sus corazones por lo que se les ha dado y los prefieren a sí mismos aunque estén en extrema necesidad. Quienes hayan sido preservados de la avaricia serán los triunfadores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxvi{Quienes vienen después de ellos imploran: ``¡Oh Señor nuestro! Perdónanos, a nosotros y a nuestros hermanos que nos han precedido en la fe. No infundas en nuestros corazones rencor hacia los creyentes ¡Señor nuestro!, Tú eres Compasivo, Misericordioso".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxvii{¿Acaso no observas cuando los hipócritas dicen a sus hermanos de la Gente del Libro que se negaron a creer: ``Si son expulsados, saldremos con ustedes, y jamás obedeceremos a nadie que los quiera dañar. Y si los combaten, los socorreremos"? Dios es testigo de que mienten.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxviii{Si son expulsados, no se irán con ellos. Si son combatidos, no los socorrerán. Y aun si los socorrieran huirían del combate, y de nada les serviría su ayuda.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcxxxix{Ellos les temen más a ustedes en su corazón que a Dios, porque son un pueblo que no comprende [la grandeza de Dios].\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcxl{No combatirán unidos contra ustedes, salvo en aldeas fortificadas o detrás de murallas. Entre ellos hay una fuerte hostilidad. Ustedes piensan que ellos son unidos, pero sus corazones están divididos. Es porque que son gente que no razona.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcxli{Son como sus más cercanos precursores, que sufrieron las consecuencias de su conducta y por ello recibirán un castigo doloroso.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlii{Como el demonio cuando le dice al hombre: ``¡Niega la verdad!" Pero cuando este le obedece, dice: ``Yo no soy responsable de ti, yo temo a Dios, Señor del universo".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcxliii{El final de ambos será el Infierno donde sufrirán eternamente. Este es el final de los injustos.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcxliv{¡Oh, creyentes! Tengan temor de Dios, y que cada alma considere cuánto ha obrado para el mañana. Tengan temor de Dios, porque Dios está bien informado de cuanto hacen.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlv{No sean como quienes se olvidaron de Dios, y Dios hizo que se olvidaran de sí mismos. Esos son los perversos.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlvi{No se equiparan los compañeros del Infierno con los compañeros del Paraíso. Los compañeros del Paraíso son los que triunfan.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlvii{Si hubiera hecho descender este Corán sobre una montaña, la habrías visto temblar y derrumbarse por temor a Dios. Así exponemos a la gente los ejemplos para que reflexionen.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlviii{Él es Al-lah, no hay otra divinidad salvo Él, el Conocedor de lo oculto y de lo manifiesto. Él es el Compasivo, el Misericordioso.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcxlix{Él es Al-lah, no hay otra divinidad salvo Él, el Soberano Supremo, el Santísimo, el Salvador, el Dispensador de seguridad, el Custodio [de la fe], el Todopoderoso, el Dominador y el Soberbio. ¡Glorificado sea Dios! Está por encima de las divinidades que Le asocian.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcl{Él es Al-lah, el Creador, el Iniciador y el Formador. Suyos son los nombres más sublimes. Todo cuanto existe en los cielos y en la Tierra Lo glorifica. Él es el Poderoso, el Sabio.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcli{\basmalahes ¡Creyentes! Si el abandono de sus hogares [en La Meca] fue sincero por Mi causa y para obtener Mi complacencia, no tomen por confidentes a quienes demuestran ser Mis enemigos, y enemigos suyos, revelándoles secretos [de Estado] como muestra de afecto hacia ellos; porque ellos han negado abiertamente la verdad revelada, han expulsado al Mensajero y los han expulsado a ustedes [de La Meca y de sus hogares], simplemente por haber creído en Dios, su Señor. ¿Cómo pueden confiarles secretos por afecto? Yo bien sé lo que ocultan y lo que manifiestan. Quien obre así se habrá extraviado del camino correcto.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmclii{Si ellos tuvieran dominio sobre ustedes, les mostrarían su verdadera enemistad maltratándolos física y verbalmente. Ellos querrían que ustedes dejaran de creer [en el Islam].\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcliii{En nada los beneficiarán sus lazos familiares ni sus hijos, el Día de la Resurrección Dios juzgará entre ustedes. Dios sabe cuanto hacen.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcliv{Tienen un buen ejemplo en Abraham y sus seguidores, cuando dijeron a su pueblo: ``Nosotros somos inocentes de ustedes y de cuanto adoran en lugar de Dios. Negamos que haya verdad en lo que ustedes creen, y comenzará la animadversión y el desacuerdo [en temas de creencia] hasta que no acepten que solamente Dios merece ser adorado". Pero no hagan como Abraham, cuando le dijo a su padre: ``Pediré perdón por ti, pero no puedo hacer nada por ti ante Dios". [Abraham oraba diciendo:] ``¡Oh, Señor nuestro! A Ti nos encomendamos, a Ti pedimos perdón y a Ti volveremos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmclv{¡Señor nuestro! No permitas que los que se han negado a creer nos persigan, ni hagas de nosotros una causa por la cual se alejen [del Islam]. Perdónanos, ¡oh, Señor nuestro! Tú eres el Poderoso, el Sabio".\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmclvi{En ellos tienen un bello ejemplo quienes anhelan el encuentro con Dios y la recompensa el Día del Juicio. Pero quien se aparte, sepa que Él es el Opulento, el Loable.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmclvii{Es posible que Dios haga surgir afecto mutuo entre ustedes y los que ahora son sus enemigos. Dios tiene poder para hacerlo, porque es Perdonador, Misericordioso.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmclviii{Dios no les prohíbe hacer el bien y tratar con justicia a quienes no los han combatido por causa de la religión ni los han expulsado de sus hogares, porque Dios ama a los que actúan con justicia.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmclix{Dios solo les prohíbe que tomen por aliados a quienes los combaten a causa de la religión y los han expulsado de sus hogares o han contribuido a su expulsión. Sepan que quienes los tomen como aliados estarán cometiendo una injusticia.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmclx{¡Oh, creyentes! Cuando mujeres creyentes lleguen como emigrantes, comprueben su fe. Dios conoce su fe. Si corroboran que son creyentes, entonces no las devuelvan a los que se negaron a creer. Ellas no son lícitas para ellos ni ellos lo son para ellas. Devuelvan a sus exmaridos la dote que ellos les hayan dado, y sepan que no hay nada reprochable en que los creyentes se casen con ellas, siempre que les concedan la dote correspondiente. No deben ustedes, por su parte, retener a las mujeres que se niegan a creer, pero pueden exigir que se les devuelva lo que hayan dado como dote, como ellos también tienen derecho a exigirla. Esa es la ley de Dios que prescribió para ustedes. Dios es Sapiente, Sabio.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmclxi{A aquellos cuyas esposas se hayan ido con los que se negaron a creer y los perjudiquen, denles una compensación acorde a lo que gastaron. Tengan temor de Dios, en Quien ustedes creen.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmclxii{¡Oh, Profeta! Cuando las mujeres creyentes se presenten ante ti para prestarte juramento de fidelidad, comprometiéndose a no cometer idolatría, no robar, no cometer fornicación ni adulterio, no matar a sus hijos, no decir ninguna calumnia y a no desobedecerte, tómales el juramento de fidelidad y pide perdón a Dios por ellas. Dios es Absolvedor, Misericordioso.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmclxiii{¡Creyentes! No tomen por aliados a quienes han caído en la ira de Dios, pues habrán perdido toda esperanza en la recompensa de la otra vida, como ocurre también con los que niegan la resurrección de los muertos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmclxiv{\basmalahes Todo cuanto existe en los cielos y en la Tierra glorifica a Dios. Él es el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmclxv{¡Creyentes! ¿Por qué dicen una cosa pero hacen otra?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmclxvi{Es aborrecible ante Dios que sus actos no sean coherentes con sus palabras.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmclxvii{Dios ama a quienes luchan por Su causa en filas ordenadas, como si fueran una edificación sólida.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmclxviii{[Recuerden] cuando Moisés dijo a su pueblo: ``¡Pueblo mío! ¿Por qué me maltratan a pesar de saber que soy el Mensajero que Dios les ha enviado?" Cuando [su pueblo] se alejó [del Mensaje], Dios desvió sus corazones [alejándolos de la guía]. Dios no guía a los perversos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmclxix{Y cuando Jesús, hijo de María, dijo: ``¡Oh, hijos de Israel! Yo soy el Mensajero que Dios les ha enviado para corroborar la Tora y anunciar a un Mensajero que vendrá después de mí llamado Ajmad". Pero cuando les mostró los milagros, dijeron [con incredulidad manifiesta]: ``¡Esto es pura hechicería!"\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmclxx{¿Existe alguien más injusto que quien inventa mentiras acerca de Dios cuando es invitado al Islam? Dios no guía a los injustos.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxi{Pretenden extinguir la luz [del Mensaje] de Dios con las mentiras que pronuncian sus bocas, pero Dios hará que Su luz resplandezca, aunque esto desagrade a los que rechazan el Mensaje.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxii{Él es Quien ha enviado a Su Mensajero con la Guía y la religión verdadera para que prevalezca sobre todas las religiones, aunque ello disguste a los idólatras.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxiii{¡Creyentes! ¿Quieren que les enseñe un negocio que los salvará del castigo doloroso?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxiv{[Este buen negocio es que] crean en Dios y en Su Mensajero, contribuyan por la causa de Dios con sus bienes y sus seres, pues ello es lo mejor para ustedes. ¡Si supieran!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxv{[Si hacen esto, Dios] perdonará sus pecados y los ingresará en jardines por donde corren ríos, donde habitarán en hermosas moradas en los jardines del Edén. ¡Ese es, sin duda, el éxito grandioso!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxvi{También les dará algo que aman: ``Su auxilio y una pronta victoria". Albricia a los creyentes [con la recompensa que recibirán en esta vida y en la otra].\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxvii{¡Creyentes! Socorran [la religión de] Dios como lo hicieron los discípulos de Jesús, el hijo de María, cuando les dijo: ``¿Quiénes me socorrerán en la causa de Dios?" Los discípulos respondieron: ``Seremos los socorredores de [la religión de] Dios". Pero un grupo de los Hijos de Israel creyó [en la profecía de Jesús] y otro grupo rechazó su Mensaje. Entonces di Mi apoyo a los creyentes y así vencieron a sus enemigos.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxviii{\basmalahes Todo cuanto existe en los cielos y en la Tierra glorifica a Dios, el Soberano Supremo, el Santísimo, el Poderoso, el Sabio.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxix{Es Él Quien eligió de entre los que no sabían leer ni escribir un Mensajero para que les recite Sus preceptos, los purifique y les enseñe el Libro y la sabiduría; antes de ello se encontraban en un extravío evidente.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxx{Y [para que Su Mensaje se extienda] a otros que todavía no han llegado. Dios es el Poderoso, el Sabio.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxi{Este es un favor que Dios concede a quien quiere, porque Dios es el poseedor del favor inmenso.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxii{Aquellos a quienes les fue confiada la Tora, pero no practicaron [sus principios], se asemejan al asno que lleva una carga de libros. ¡Qué pésimo es el ejemplo de aquellos que desmienten las enseñanzas de Dios! Dios no guía a los injustos.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxiii{Diles: ``¡judíos! Si realmente son los elegidos de Dios y las otras personas no lo son, como pretenden, entonces deseen la muerte, si es que son sinceros".\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxiv{Pero nunca la desearán, por los pecados que cometieron sus manos. Y Dios conoce bien quiénes son injustos.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxv{Diles: ``La muerte de la que huyen los alcanzará de igual forma. Luego tendrán que comparecer ante el Conocedor de lo oculto y de lo manifiesto, y Él les informará lo que hacían".\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxvi{¡Creyentes! Cuando sea realizado el llamado a la oración del día viernes, acudan al recuerdo de Dios y abandonen el comercio, es lo mejor para ustedes. ¡Si supieran!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxvii{Cuando haya terminado la oración recorran la tierra, procuren el sustento y recuerden mucho a Dios, que así triunfarán.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxviii{Pero a aquellos que si ven un negocio o una diversión corren hacia ello y te dejan [solo] de pie, diles: ``La recompensa que Dios tiene reservada [para los piadosos] es mejor que cualquier diversión o negocio, y [sepan que] Dios es el mejor de los sustentadores".\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmclxxxix{\basmalahes Cuando los hipócritas se presentan ante ti [oh, Mujámmad], dicen: ``Atestiguamos que eres el Mensajero de Dios". Dios bien sabe que eres el Mensajero, pero Él mismo atestigua que los hipócritas son mentirosos.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcxc{[Los hipócritas] se escudan en sus juramentos para apartar [a algunas personas] del sendero de Dios. ¡Qué pésimo es lo que hacen!\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcxci{Ello es porque creyeron y luego renegaron, entonces sus corazones fueron sellados y ya no pueden discernir.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcii{Cuando los observas te agrada su aspecto, y cuando hablan prestas atención a sus palabras, pues parecen maderos bien afirmados; pero cada vez que se alza la voz se sobresaltan, porque creen que es contra ellos. Ellos son el enemigo, sé precavido con ellos. Dios los destruirá por haberse desviado tanto.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcxciii{Cuando se les dice: ``Vengan, que el Mensajero de Dios pedirá perdón por ustedes", mueven su cabeza [en señal de burla] y los ves evadirte con soberbia.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcxciv{[Oh, Mujámmad!] Lo mismo da que pidas perdón por ellos o que no lo hagas, Dios no los perdonará. Dios no guía a la gente corrupta.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcv{Ellos dicen: ``No ayuden a los que están con el Mensajero de Dios hasta que lo abandonen". Es a Dios a quien pertenecen los tesoros de los cielos y de la Tierra, pero los hipócritas no lo comprenden.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcvi{Dicen: ``Si regresamos a la ciudad [de Medina], los más poderosos expulsaremos de ella a los más débiles". Pero el verdadero poder pertenece a Dios, a Su Mensajero y a los creyentes, aunque los hipócritas no lo saben.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcvii{¡Creyentes! Que las posesiones materiales y los hijos no los distraigan del recuerdo de Dios. Pues quienes se alejen del recuerdo de Dios serán los perdedores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcviii{Den en caridad parte de lo que les he provisto, antes de que la muerte les sobrevenga y [recién] entonces digan: ``¡Señor mío! Concédeme un poco más de tiempo para poder hacer caridades y ser de los piadosos".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcxcix{Pues Dios no retrasará el momento fijado para cada alma cuando este llegue, y [sepan que] Dios está bien informado de cuanto hacen.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcc{\basmalahes Todo cuanto existe en los cielos y en la Tierra glorifica a Dios. Suyo es el reino y Suyas son las alabanzas. Él tiene poder sobre todas las cosas.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcci{Él es Quien los ha creado. Entre ustedes hay quienes rechazan el Mensaje y quienes creen en él. Dios sabe bien cuanto hacen.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccii{Dios creó los cielos y la Tierra con un fin justo y verdadero, y les dio una conformación armoniosa. Ante Él comparecerán para responder por sus obras.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcciii{Dios conoce cuanto existe en los cielos y en la Tierra, conoce lo que ocultan y lo que manifiestan. Dios sabe bien lo que esconden los corazones.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcciv{¿Acaso no les fue relatada la historia de los pueblos de la antigüedad que rechazaron el Mensaje? Sufrieron las consecuencias de su conducta y les espera un castigo doloroso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccv{Los Mensajeros se presentaban ante ellos con las evidencias, pero decían: ``¿Acaso un mortal [igual que nosotros] nos ha de guiar?" Y así se negaron a creer, y se apartaron [de la Verdad]. Pero Dios no necesita de ellos, Él es Autosuficiente, Loable.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccvi{Los que rechazan el Mensaje alegan que no serán resucitados. Diles: ``¡[Juro] por mi Señor que sí! Serán resucitados, y luego se les informará de cuanto hicieron. Sepan que eso es fácil para Dios".\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccvii{Crean en Dios, en Su Mensajero y en la Luz que ha revelado [el Corán]. Dios está bien informado de cuanto hacen.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccviii{Cuando sean congregados para el día de la reunión, ese será el día del desengaño [para los incrédulos]. A quien crea en Dios y haya obrado correctamente, Él le perdonará sus faltas y lo introducirá en jardines por donde corren ríos, donde vivirá eternamente. ¡Ese es el triunfo grandioso!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccix{En cambio, los que rechazaron el Mensaje y desmintieron Mis signos sufrirán en el fuego del Infierno por toda la eternidad. ¡Qué pésimo destino!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccx{Todas las desgracias acontecen con el permiso de Dios. Quien crea en Dios, Él guiará su corazón [y comprenderá que todo es parte del gran designio de Dios]. Dios tiene conocimiento de todas las cosas.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccxi{Obedezcan a Dios y obedezcan al Mensajero. Pero si se rehúsan, sepan que Mi Mensajero solo tiene la obligación de transmitir el Mensaje con claridad.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccxii{¡Al-lah! No existe divinidad excepto Él. Que los creyentes depositen su confianza en Dios.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmccxiii{¡Creyentes! Sus cónyuges o sus hijos pueden convertirse en sus enemigos. Tengan precaución. Pero si pasan por alto [sus faltas], son tolerantes con ellos y los perdonan, sepan que Dios es Perdonador, Misericordioso.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmccxiv{Sus bienes materiales y sus hijos son una tentación, pero Dios tiene junto a Sí una recompensa grandiosa.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmccxv{Tengan temor de Dios tanto como puedan. Escuchen y obedezcan [la revelación], y hagan caridad, porque es lo mejor para ustedes mismos. Sepan que quienes luchen contra su propia avaricia serán los triunfadores.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmccxvi{Si hacen a Dios un préstamo generoso, Él lo devolverá multiplicado y perdonará sus faltas. Dios es Agradecido, Tolerante,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmccxvii{conoce lo oculto y lo manifiesto, Él es el Poderoso, el Sabio.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmccxviii{\basmalahes ¡Oh, Profeta!, [haz saber a los musulmanes que] cuando divorcien a las mujeres, deben hacerlo durante el tiempo señalado. Calculen con atención los días de ese período, y tengan temor de Dios, su Señor. No las expulsen de sus hogares y que ellas tampoco lo abandonen, a menos que hayan cometido una indecencia evidente. Estas son las leyes de Dios. Quien quebrante las leyes de Dios habrá sido injusto consigo mismo. Tú no sabes si Dios, después de esa [primera ruptura], haga surgir una reconciliación.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccxix{Cuando estén por finalizar su período de espera, pueden reconciliarse de forma justa o divorciarse definitivamente en términos justos. Háganlo ante dos testigos neutrales de entre ustedes, y cumplan con su testimonio por Dios. Al cumplimiento de estas leyes es que se exhorta a quien cree en Dios y en el Día del Juicio. Sepan que a quien tenga temor de Dios, Él le dará una solución,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccxx{y le dará sustento de donde no lo esperaba. Quien deposite su confianza en Dios, sepa que Él le será suficiente. Dios hará que el designio se cumpla, y ha establecido para cada cosa un término y una medida.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxi{El período de espera para aquellas mujeres que hayan llegado a la menopausia, si tienen dudas [sobre el término del periodo], o aquellas que no menstrúan, es de tres meses. En cambio, el de las embarazadas finalizará cuando den a luz. Sepan que a quien tenga temor de Dios, Él le facilitará sus asuntos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxii{Estas son las leyes que Dios ha prescrito. A quien tenga temor de Dios, Él le perdonará sus malas obras y le aumentará su recompensa.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxiii{Denle a la mujer durante ese periodo el mismo nivel de vida que ustedes tienen conforme a sus posibilidades. No la perjudiquen con ánimo de molestarla. Si ella está embarazada, deben mantenerla hasta que dé a luz, y si ambos acuerdan que ella amamante a su hijo, deben mantenerla [hasta que termine la lactancia]. Tengan buen trato y lleguen a un acuerdo de buena manera. Pero si discrepan [sobre la lactancia del hijo], entonces que otra mujer lo amamante [por cuenta del padre].\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxiv{Que el adinerado mantenga de acuerdo a su abundancia, pero aquel cuyo sustento es escaso que lo haga acorde a lo que Dios le ha provisto. Dios no exige a nadie por encima de sus posibilidades. Dios hará que luego de toda estrechez venga la prosperidad.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxv{¡A cuántos pueblos que desobedecieron a su Señor y a Sus Mensajeros los hice rendir cuentas en forma severa y los azoté con un castigo nunca visto!\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxvi{Ellos sufrieron las consecuencias de sus obras. Su final fue la perdición.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxvii{[A ellos] Dios les ha preparado un castigo severo. Tengan temor de Dios, ustedes que reflexionan y son creyentes, ya que Dios ha descendido para ustedes el Corán [para que lo tomen como código de vida],\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxviii{y les ha enviado un Mensajero que les recita el claro Mensaje de Dios, para sacar de las tinieblas hacia la luz a quienes crean y obren correctamente. A quien crea en Dios y obre piadosamente, Él lo introducirá en jardines por donde corren ríos, en los que vivirán eternamente. ¡Qué hermoso sustento!\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxix{Dios creó siete cielos y la Tierra de manera similar. A través de ellos desciende Su designio para que sepan que Dios tiene poder sobre todas las cosas y que todo lo abarca en Su conocimiento.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxx{\basmalahes ¡Oh, Profeta! ¿Por qué te prohíbes a ti mismo lo que Dios te ha hecho lícito, pretendiendo con ello complacer a tus esposas? [Sabe que a pesar de ello] Dios es Absolvedor, Misericordioso.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxi{Dios les ha prescrito cómo anular y expiar los juramentos [que no van a cumplir]. Dios es su Protector y Él todo lo sabe, es Sabio.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxii{Cuando el Profeta confió un secreto a una de sus esposas [Hafsah] y ella lo contó [a Aishah], Dios le reveló [al Profeta] lo ocurrido, y él le refirió [a Hafsah] una parte de lo que ella había hecho. Entonces, esta le preguntó: ``¿Quién te lo ha dicho?" Y Él respondió: ``Me lo ha revelado el que todo lo sabe, Él está bien informado de cuanto hacen Sus siervos".\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxiii{Ambas deben arrepentirse, pues sus corazones se han apartado [del respeto debido al Profeta]. Pero si siguen confabuladas [por celos] contra él, sepan que Dios es su Protector, y que lo socorrerán el ángel Gabriel y los creyentes virtuosos, y todos los demás ángeles acudirán en su ayuda.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxiv{Sepan que si él las divorcia, su Señor le concederá esposas mejores que ustedes, que sean creyentes, que se sometan y obedezcan a Dios, se arrepientan, sean devotas [a Dios] y ayunen, algunas ya antes casadas o vírgenes.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxv{¡Oh, creyentes! Protéjanse a sí mismos y a sus familias del Fuego [del Infierno], cuyo combustible serán los seres humanos y las piedras, y en el que habrá ángeles rigurosos y severos que no desobedecen a Dios en lo que Él les ordena, sino que ejecutan Sus órdenes.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxvi{[El Día del Juicio se les dirá:] ¡Los que rechazaron el Mensaje! Hoy no pretendan excusarse, simplemente recibirán el merecido por lo que hayan hecho.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxvii{¡Creyentes! Arrepiéntanse sinceramente ante Dios, puede que así su Señor borre sus faltas y los introduzca en jardines del Paraíso por donde corren ríos. Ese día Dios no avergonzará al Profeta ni a los que creyeron junto a él. Una luz se extenderá delante de ellos y a su derecha, y ellos dirán: ``¡Señor nuestro! Auméntanos nuestra luz y perdónanos. Tú eres sobre toda cosa poderoso".\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxviii{¡Profeta! Haz frente a los que rechazaron el Mensaje y a los hipócritas, y sé riguroso con ellos. [Si no se arrepienten ante Dios] tendrán el Infierno por morada. ¡Qué pésimo destino!\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccxxxix{Para los que rechazaron el Mensaje, Dios les plantea como ejemplos los casos de la mujer de Noé y la de Lot: ambas estaban casadas con dos de Mis siervos justos pero no creyeron y [Noé y Lot] no pudieron hacer nada por ellas ante Dios. Y [el Día del Juicio] se les dirá: ``Entren ambas en el Fuego junto con los demás condenados".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccxl{Y para los creyentes como ejemplo plantea el caso de la mujer del Faraón [que era una verdadera creyente] cuando dijo: ``¡Señor mío! Constrúyeme, junto a Ti, una morada en el Paraíso, y sálvame del Faraón y de sus obras abominables. Sálvame de este pueblo opresor".\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccxli{Y también el ejemplo de María, hija de ‘Imrán, quien preservó su castidad; infundí en ella de Mi Espíritu. Ella creyó en la veracidad de las Palabras de su Señor y en Sus Libros, y fue realmente una mujer devota.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlii{\basmalahes Bendito sea Aquel en Cuyas manos está el reino y tiene el poder sobre todas las cosas.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccxliii{Él es Quien creó la muerte y la vida para probarlos y distinguir quién obra mejor. Él es el Poderoso, el Perdonador.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccxliv{Él es Quien creó siete cielos superpuestos. No verás ninguna imperfección en la creación del Misericordioso. Vuelve la vista y observa, ¿acaso ves alguna falla?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlv{Luego vuelve la vista por segunda vez [buscando fallas en la creación] y tu mirada volverá a ti cansada y derrotada.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlvi{Embellecí el cielo de este mundo con astros luminosos, dispuestos para castigar a los demonios, y tengo preparado para ellos un fuego abrasador.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlvii{Para quienes no creen en su Señor les tengo preparado el castigo del Infierno. ¡Qué pésimo destino!\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlviii{Cuando sean arrojados en el Infierno, oirán su fragor mientras hierve,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccxlix{a punto de estallar de furia. Cada vez que un grupo sea arrojado en él, sus guardianes les preguntarán: ``¿Acaso no se les presentó un amonestador?"\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccl{Dirán: ``Sí, se nos presentó un amonestador, pero lo desmentimos diciendo: Dios no ha revelado nada y estás en un gran error".\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccli{Y agregarán: ``Si hubiéramos oído o reflexionado, no estaríamos ahora con los condenados al Fuego".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcclii{Entonces reconocerán sus pecados, pero qué lejos están los condenados al fuego de la misericordia de Dios".\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccliii{[En cambio] quienes fueron temerosos de su Señor en privado [cuando solo Él los observaba] serán perdonados y recibirán una gran recompensa.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccliv{Es lo mismo que oculten sus pensamientos o que los divulguen, Él conoce bien lo que hay dentro de los corazones.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcclv{¿Acaso no lo va a saber Quien todo lo creó? Él es el Sutil, el que está bien informado.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcclvi{Él es Quien les ha facilitado la vida sobre la Tierra. Recorran sus caminos y coman del sustento de Dios, que ante Él comparecerán.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcclvii{¿Acaso tienen garantías de que Quien está en el cielo no hará que la tierra los trague durante un terremoto?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcclviii{¿O se sienten seguros de que Quien está en el cielo no los azote con un viento fuerte? ¿Solo así tomarán en serio Mi advertencia?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcclix{Otros [pueblos] en la antigüedad también desmintieron [a los Mensajeros], y qué terrible fue Mi castigo [en respuesta].\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcclx{¿Acaso no contemplan a las aves en las alturas, desplegando y replegando sus alas? Solo el Misericordioso las sostiene, Él ve todas las cosas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxi{¿Qué ejército los podría defender además del Misericordioso? Los que desmienten el Mensaje son presa de una ilusión.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxii{¿Quién los sustentará si Él retiene su sustento? Sin embargo, persisten en su insolencia y su arrogante rechazo.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxiii{¿Quién está mejor encaminado: el que camina cabizbajo y tropezando o el que camina erguido por el sendero recto?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxiv{Diles: ``Él es Quien los creó y Quien los agració con el oído, la vista y el intelecto. Sin embargo, qué poco agradecen".\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxv{Diles: ``Él es Quien hizo que se multiplicaran en la Tierra y ante Él comparecerán".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxvi{[Los que desmienten el Mensaje] dicen desafiantes: ``¿Cuándo se cumplirá esta amenaza [sobre el Día del Juicio], si es que dicen la verdad?"\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxvii{Diles: ``Solo Dios lo sabe, yo no soy sino un amonestador".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxviii{Pero cuando los que desmentían el Mensaje vean que comienza [el Día del Juicio], sus rostros estarán sombríos y se les dirá: ``Aquí tienen lo que pedían".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxix{Diles: ``Si Dios me hiciera morir a mí y a los que me siguen, o si se apiadara de nosotros, [eso no es lo que debería preocuparlos, sino que lo que deberían preguntarse es:] ¿quién librará a los que niegan el Mensaje del castigo doloroso que les espera?"\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxx{Diles: ``Él es el Misericordioso, creemos en Él y en Él depositamos nuestra confianza. Ya verán [el Día del juicio] quién es el que está en un error evidente".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxi{Pregúntales: ``¿Si el agua que tienen dejara de surgir, quién [fuera de Dios] les podría proveer de agua pura?"\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxii{\basmalahes Nun. Juro por la pluma y por [los conocimientos que con ella] se escriben,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxiii{que tú [Oh, Mujámmad], por la gracia de tu Señor, no eres un loco,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxiv{y tendrás una recompensa ilimitada.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxv{Eres de una naturaleza y moral grandiosas.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxvi{Pronto verás, y ellos también lo verán,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxvii{quién es realmente el insensato.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxviii{Tu Señor sabe mejor que nadie quiénes se extravían de Su camino, así como sabe quiénes son los que siguen la guía.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxix{No obedezcas a los que desmienten el Mensaje.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxx{[Los idólatras] desearían que fueras condescendiente con ellos [en sus creencias idolátricas], y así ellos también serían condescendientes contigo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxi{No obedezcas al ser despreciable que jura constantemente [por Dios],\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxii{al difamador que siembra la discordia,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxiii{a quien se niega a hacer el bien, al transgresor, al pecador,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxiv{al arrogante y además falso simulador,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxv{quien solo porque tiene riqueza e hijos\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxvi{rechaza Mis versículos cuando se le recitan, diciendo: ``Son fábulas de los ancestros".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxvii{[Como castigo] le marcaré su nariz.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxviii{[A los que te desmienten] los he puesto a prueba [con la prosperidad], como probé a los dueños del huerto, cuando juraron recoger sus frutos por la mañana\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcclxxxix{y no dejar nada a los pobres.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmccxc{Pero un castigo enviado por tu Señor azotó el huerto mientras dormían,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmccxci{dejándolo devastado.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcii{Por la mañana, se despertaron unos a otros.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmccxciii{Dijeron: ``Vayamos temprano a nuestro campo si queremos recoger la cosecha".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmccxciv{Y se pusieron en camino diciéndose unos a otros en voz baja:\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcv{``Hoy no dejaremos entrar a ningún pobre".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcvi{Madrugaron convencidos de que podrían privar a los pobres de su derecho.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcvii{Pero cuando vieron [el huerto devastado] dijeron: ``Seguramente nos hemos equivocado de camino".\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcviii{[Pero al darse cuenta de que sí era su huerto, dijeron:] ``Estamos arruinados".\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmccxcix{Entonces, el más sensato de ellos dijo: ``¿No les había dicho que recordaran?"\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmccc{Dijeron: ``Glorificado sea nuestro Señor, fuimos injustos".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmccci{Y comenzaron a recriminarse unos a otros.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcccii{Dijeron: ``¡Ay de nosotros! Nos comportamos con mucha arrogancia.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmccciii{Puede que nuestro Señor nos conceda algo mejor, regresemos a nuestro Señor con esperanza".\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmccciv{Ese fue su castigo, pero el castigo de la otra vida será aún mayor. ¡Si lo supieran!\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmcccv{El Señor agraciará a los piadosos con los Jardines de las Delicias.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmcccvi{¿Acaso iba a tratar por igual a quienes se someten a Dios y a los pecadores?\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmcccvii{¿Qué les pasa? ¿Cómo juzgan así?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmcccviii{¿Acaso tienen un libro [revelado] al que consultan,\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmcccix{en el que eligen lo que les conviene?\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmcccx{¿O creen tener Conmigo un pacto hasta el Día de la Resurrección que Me obligue a concederles lo que quieran?\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxi{Pregúntales: ``¿Quién es el garante de ese pacto?"\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxii{¿Acaso tienen ídolos [que se lo garantizan]? ¡Traigan a sus ídolos, si es verdad lo que dicen!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxiii{El día que se descubra la pierna [divina], manifestándose la gravedad de la situación] y sean invitados a prosternarse, pero no podrán,\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxiv{tendrán la mirada abatida, porque fueron invitados a prosternarse cuando podían [pero no lo hicieron].\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxv{Yo me encargaré de quienes desmienten el Mensaje. Los castigaré sin prisa cuando menos lo esperen.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxvi{Los toleraré por un tiempo, pero luego Mi castigo será severo.\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxvii{¿Acaso les reclamas una retribución [a cambio de transmitirles el Mensaje], que se sienten agobiados?\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxviii{¿Acaso conocen lo oculto [de la predestinación] y lo escriben?\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxix{Ten paciencia ante el designio de tu Señor y no seas como el que fue tragado por la ballena, que Me imploró angustiado.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxx{Si no hubiera sido por la gracia de su Señor, habría sido arrojado a la playa desierta cargando su culpa.\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxi{Pero su Señor lo había escogido para que fuera uno de los piadosos.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxii{[Oh, Mujámmad:] Poco faltó para que los que rechazaron el Mensaje te derribaran con sus miradas [de odio] cuando oyeron la recitación del Corán. Y aunque digan: ``Es un loco",\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxiii{[lo que recitas] es un Mensaje para que siga toda la humanidad.\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxiv{\basmalahes La exposición de la verdad.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxv{¿Qué es la exposición de la verdad?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxvi{¿Qué te hará comprender lo que es la exposición de la verdad?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxvii{[Los pueblos de] Zamud y ‘Ad desmintieron el evento repentino.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxviii{Zamud fue destruido por una catástrofe.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxix{Y ‘Ad fue aniquilado por un viento gélido\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxx{que los azotó durante siete noches y ocho días ininterrumpidamente. La gente quedó tendida, sin vida, como troncos huecos de palmeras derribadas.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxi{¿Acaso ves ahora algún rastro de ellos?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxii{El Faraón, otros pueblos de la antigüedad y los que fueron elevados con sus casas y arrojados al revés, cometieron los pecados más graves,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxiii{desobedecieron al Mensajero que les había enviado su Señor, y por eso Dios los sorprendió con un castigo severo.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxiv{Cuando las aguas lo inundaron todo, salvé en el arca a Noé y a quienes creyeron en él,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxv{para que sea un motivo de reflexión y para que todo oído atento escuche su historia.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxvi{Cuando la trompeta sea soplada una primera vez\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxvii{y la tierra y las montañas sean elevadas y choquen unas contra otras,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxviii{entonces ocurrirá el suceso.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxxxix{Ese día el cielo se quebrantará en su fragilidad.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxl{Los ángeles estarán en sus confines, y ocho serán los que portarán el Trono de tu Señor ese día.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxli{Ese día ustedes comparecerán [ante Dios], y ni la más secreta de sus obras quedará oculta.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlii{Quien reciba el libro de sus obras con la mano derecha dirá [a los demás con felicidad]: ``Miren y vean mi libro,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxliii{yo sabía que iba a ser juzgado [algún día]".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxliv{Tendrá una vida placentera\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlv{en un jardín elevado,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlvi{cuyos frutos estarán al alcance de la mano.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlvii{[Se les dirá:] ``Coman y beban con alegría en recompensa por lo que obraron en los días pasados".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlviii{En cambio, quien reciba el registro de sus obras en la mano izquierda, se dirá a sí mismo: ``Ojalá no se me hubiera entregado mi libro\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxlix{ni se me hubiese juzgado.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcccl{Ojalá mi muerte hubiera sido definitiva [y no me hubieran resucitado].\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcccli{De nada me sirve ahora el dinero que tuve.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmccclii{Mi influencia ha desaparecido".\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcccliii{[Dios dirá a los ángeles:] ``Aprésenlo y encadénenlo.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcccliv{Introdúzcanlo en el fuego del Infierno,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmccclv{sujétenlo con una cadena de setenta codos,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmccclvi{porque no creía en Dios, el Grandioso,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmccclvii{ni alentaba a alimentar al pobre.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmccclviii{Hoy no tiene aquí amigo que pueda interceder por él.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmccclix{No tendrá más comida que pus,\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmccclx{que solo comerán los pecadores".\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxi{Juro por lo que ven\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxii{y por lo que no puede verse,\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxiii{que el Corán es la palabra recitada por un Mensajero noble.\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxiv{No es la palabra de un poeta. ¡Qué poco creen!\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxv{Ni tampoco la palabra de un adivino. ¡Qué poco reflexionan!\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxvi{Es una revelación que dimana del Señor del universo.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxvii{Si [el Profeta] hubiera atribuido algo falsamente a Mi Mensaje,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxviii{lo habría apresado severamente,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxix{luego le habría cortado la arteria vital,\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxx{y nadie habría podido impedirlo.\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxi{El Corán es un motivo de reflexión para los que tienen temor de Dios,\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxii{y bien sé que hay entre ustedes quienes desmienten,\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxiii{pero eso será motivo de pesar para los que rechazan el Mensaje.\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxiv{El Corán es la verdad indubitable.\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxv{¡Glorifica el nombre de tu Señor, el Grandioso!\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxvi{\basmalahes Alguien pide que se desencadene el castigo prometido\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxvii{para que caiga sobre los que niegan el Mensaje. Cuando ocurra, nadie podrá impedirlo,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxviii{pues procede de Dios, Señor de las vías de ascensión,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxix{por las que ascienden hacia Él los ángeles y las almas; un día que durará cincuenta mil años.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxx{Persevera con profunda paciencia,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxi{porque ellos lo ven lejano [al Día del Juicio],\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxii{pero Yo sé que está cercano.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxiii{El día que el cielo parezca masas de minerales fundidos\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxiv{y las montañas copos de lana,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxv{y nadie pregunte por sus seres amados\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxvi{a pesar de reconocerlos. El pecador querrá salvarse del castigo de ese día ofreciendo como rescate incluso a sus propios hijos,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxvii{a su esposa, a su hermano,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxviii{a sus parientes en quienes se apoyaba,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmccclxxxix{y a todos los habitantes de la Tierra con tal de salvarse.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxc{Pero no le servirá, su castigo será el fuego del Infierno\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxci{que le arrancará sus extremidades,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcii{y convocará a quien le dio la espalda y se apartó del Mensaje,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxciii{y acumuló bienes materiales con avaricia.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxciv{El hombre fue creado impaciente:\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcv{se desespera cuando sufre un mal\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcvi{y se torna mezquino cuando la fortuna lo favorece,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcvii{salvo los orantes devotos\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcviii{que son perseverantes en la oración,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcccxcix{que de su dinero destinan un derecho establecido\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcd{para el que pide ayuda y para el indigente honesto;\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcdi{que creen en el Día del Juicio Final,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcdii{que tienen temor del castigo de su Señor,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcdiii{siendo que nadie está a salvo del castigo de su Señor.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcdiv{Los que preservan su sexualidad\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmcdv{al ámbito conyugal o lo que posee la diestra, ya que eso no es censurable.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmcdvi{Quien traspase este límite, sepa que es un trasgresor.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmcdvii{Y los que devuelven los depósitos que se les confían y respetan los acuerdos que celebran,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmcdviii{que son veraces en sus testimonios\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmcdix{y que cumplen con las oraciones prescritas,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmcdx{estos serán honrados con jardines del Paraíso.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxi{¿Qué les sucede a los que rechazan el Mensaje, que se dirigen hacia ti presurosos\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxii{en grupos, por la derecha y por la izquierda?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxiii{¿Acaso anhelan ser introducidos en los Jardines de las Delicias?\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxiv{No lo conseguirán. Los he creado de lo que saben.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxv{¡Pues no! Juro por el Señor de los diferentes levantes y ponientes del Sol que tengo poder\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxvi{para sustituirlos por otros seres mejores que ellos, sin que nadie pueda impedírmelo.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxvii{Déjalos que discutan y jueguen hasta que les llegue el día con que se les ha advertido.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxviii{El día que salgan de las tumbas, presurosos como si corrieran hacia una meta,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxix{con su mirada abatida, cubiertos de humillación. Ese es el día que se les ha advertido.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxx{\basmalahes Envié a Noé a su pueblo [diciéndole]: ``Advierte a tu pueblo antes de que le llegue un castigo doloroso".\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxi{Dijo [Noé]: ``¡Pueblo mío! Soy un amonestador que Dios les ha enviado para que les hable con claridad,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxii{así que adoren y tengan temor de Dios, y obedezcan lo que les indique,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxiii{porque si lo hacen Dios perdonará sus pecados y les concederá vivir hasta el plazo prefijado. Pero sepan que cuando el plazo fijado por Dios los alcance, no podrá ser retrasado. ¡Si tan solo supieran!"\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxiv{Dijo Noé: ``¡Señor mío! He exhortado a mi pueblo noche y día,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxv{pero mi exhortación solo ha servido para que se aparten aún más [de Ti].\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxvi{Cada vez que les invité a la guía recta para que Tú los perdonaras, se pusieron los dedos en los oídos, se cubrieron [los ojos] con la ropa, se obstinaron y actuaron con soberbia.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxvii{Además, los llamé abiertamente\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxviii{y les hablé en público y en privado.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxix{Y les dije: ‘Pidan perdón a su Señor, porque Él es Indulgente,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxx{así les enviará del cielo bendiciones en abundancia,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxi{y les concederá numerosas propiedades y muchos hijos, como también les concederá jardines y ríos.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxii{¿Qué les sucede que no temen la grandeza de Dios?\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxiii{Siendo que Él los creó en etapas sucesivas.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxiv{¿Acaso no han visto cómo Dios ha creado siete cielos superpuestos?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxv{Puso en ellos la Luna para que refleje la luz y el Sol [para que la irradie] como lámpara.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxvi{Dios los ha creado de la misma tierra que a las plantas, y como a las plantas los ha hecho brotar de ella.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxvii{Después los hará volver a ella [al morir], y de ella nuevamente los hará resurgir [el Día del Juicio Final].\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxviii{Dios les ha extendido la Tierra\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxxxix{para que la recorran por sus extensos caminos’".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxl{Dijo Noé: ``¡Señor mío! Ellos me han desobedecido y han seguido a aquellos a los que tener bienes materiales e hijos [los ha vuelto soberbios y] se han desviado aún más,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxli{[sus líderes] conspiraron contra mí un terrible ardid.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlii{Y les dijeron: ‘No abandonen a nuestros ídolos. No abandonen ni a Uadd, ni a Suá’, ni a Iagúz, ni a Ia‘úq ni a Nasr’.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxliii{¡Señor mío! Estos [líderes] han extraviado a muchos. ¡Haz que los opresores e injustos se extravíen cada vez más lejos!’"\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxliv{A causa de sus pecados murieron ahogados [por el diluvio] y luego [el Día del Juicio] irán al Fuego, ya que encontrarán [que sus ídolos y poderosos] no podrán defenderlos de Dios.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlv{Dijo Noé: ``¡Señor mío! No dejes subsistir sobre esta tierra a quienes niegan la verdad.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlvi{Porque si los dejas, intentarán por todos los medios extraviar a Tus siervos y no enseñarán a sus hijos sino el pecado y la negación de la verdad.\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlvii{¡Señor mío! Perdóname y perdona a mis padres, a todo aquel que ingrese a mi casa como creyente, y a todos los hombres y mujeres que crean en Ti. Pero a los injustos opresores, acreciéntales su perdición".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlviii{\basmalahes [¡Oh, Mujámmad!] Di: ``Me ha sido revelado que un grupo de yinnes dijeron al escuchar [la recitación del Corán]: ‘Hemos oído una recitación maravillosa\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxlix{que guía al sendero recto. Creemos en la recitación y no caeremos en la idolatría adorando a otro que Dios.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdl{Él, exaltada sea Su grandeza, no ha tomado compañera ni hijo.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdli{No obstante, un malvado entre nosotros decía falsedades acerca de Dios.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlii{Nosotros creíamos que ni los seres humanos ni los yinnes dirían mentiras acerca de Dios,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcdliii{pero había seres humanos que solicitaban protección a los yinnes, siendo que ellos solo acrecentaban su desvío.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcdliv{Ellos pensaban, como piensan ustedes, que Dios no iba a resucitar a nadie [de su tumba].\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlv{Quisimos acceder al cosmos pero lo encontramos lleno de guardianes severos y meteoritos\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlvi{a pesar que buscábamos posiciones apropiadas del cosmos para escuchar [la revelación], pero todo aquel que intenta ahora escuchar encuentra un meteoro que le acecha.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlvii{Y [ahora sabemos que los seres creados] no podemos saber si se ha destinado algún mal para quienes están en la Tierra o si su Señor quiere guiarlos.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlviii{Entre nosotros hay quienes son virtuosos [creyentes] y quienes no lo son. Seguimos caminos diferentes.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlix{Sabemos que no podremos escapar de Dios en la Tierra ni huir de Él.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlx{Pero cuando oímos la guía creímos, pues quien cree en su Señor no tendrá que temer que le mermen sus méritos ni que lo inculpen injustamente.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxi{Entre nosotros [los yinnes] hay quienes aceptaron el Islam, pero también hay quienes se apartaron del sendero recto. Los que aceptaron el Islam son los que siguen la guía verdadera.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxii{Los que rechazaron el sendero recto, en cambio, serán combustible para el Infierno’".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxiii{Pero si hubieran seguido el sendero recto les habría dado de beber de la abundancia,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxiv{para probarlos con ella. Porque quien se aparte del recuerdo de su Señor recibirá un castigo penoso.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxv{Los lugares de culto son para adorar solo a Dios, por lo que no deben invocar a nada ni a nadie junto con Dios.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxvi{Cuando el siervo de Dios [el Profeta Mujámmad] se levantó para invocarlo, [los yinnes] se agolparon a su alrededor [para oír la recitación].\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxvii{Diles [oh, Mujámmad]: ``Solo invoco a mi Señor y no adoro a otro que Dios".\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxviii{Diles: ``No tengo poder personal para desviarlos ni para guiarlos por el camino recto".\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxix{Diles: ``Nadie puede protegerme de Dios y no tengo refugio fuera de Él,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxx{solo debo difundir el Mensaje que me ha encargado transmitir". Quien rechace a Dios y a Su Mensajero, sepa que le espera el fuego del Infierno, en el que permanecerá por toda la eternidad.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxi{Y cuando vean lo que se les había prometido sabrán quiénes están realmente desamparados y quiénes son los insignificantes.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxii{Diles: ``No sé si está cerca aquello con que se los ha advertido, o si mi Señor le ha fijado un plazo distante.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxiii{Él es Quien conoce lo oculto y no permite que nadie acceda a él.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxiv{Salvo aquel con quien Él se complace como Mensajero [y le revela asuntos de lo oculto]. Entonces, hace que lo escolten [ángeles] por delante y por detrás\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxv{para cerciorarse que ha transmitido los Mensajes de su Señor. Él tiene completo conocimiento de todo cuanto les sucede y lleva la cuenta exacta de todo".\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxvi{\basmalahes ¡Oh, tú [Mujámmad] que estás arropado!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxvii{Levántate a orar en la noche, salvo una pequeña parte de ella,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxviii{la mitad, o un poco menos,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxix{o un poco más, y recita el Corán claramente y meditando en su significado.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxx{Porque he de transmitirte una revelación de gran peso.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxi{Si te levantas a orar en el seno de la noche encontrarás mayor quietud y podrás concentrarte mejor,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxii{pues durante el día tienes muchas ocupaciones.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxiii{Celebra el nombre de tu Señor y conságrate a Él con total devoción.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxiv{Él es el Señor del oriente y del occidente. No hay nada ni nadie con derecho a ser adorado salvo Él. Tómalo como tu protector.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxv{Ten paciencia con lo que dicen [insultándote], pero apártate de ellos discretamente.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxvi{Deja que Yo me ocupe de los que niegan la verdad, los que ahora tienen opulencia. Tenles paciencia brevemente.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxvii{[Porque] dispongo de cadenas y del fuego del Infierno [para castigarlos],\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxviii{de una comida que [por su repugnancia] se atraganta, un castigo doloroso.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcdlxxxix{El día que la tierra y las montañas convulsionen, y las montañas se conviertan en arena dispersa.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxc{[¡Oh, gente!] Les he enviado un Mensajero para que dé testimonio de la verdad ante ustedes, tal como antes había enviado un Mensajero al Faraón.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxci{[Pero] el Faraón desmintió al Mensajero y por eso lo castigué duramente.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcii{Si no creen, no podrán librarse del castigo del día terrible [del Juicio], que hará encanecer hasta a los niños.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxciii{El cosmos se romperá y Su promesa se cumplirá.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxciv{Esto es una advertencia real; en consecuencia, quien quiera que emprenda un camino hacia su Señor.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcv{Tu Señor bien sabe que te levantas a orar casi dos tercios de la noche, otras la mitad o un tercio de ella, así como lo hacen algunos de los creyentes que te siguen. Dios es Quien determina cuánto dura la noche y el día, sabe que no pueden hacerlo siempre, por lo que los perdona aligerando su obligación. Así que reciten durante la oración lo que sepan del Corán. Dios sabe que habrá entre ustedes alguien enfermo [al que se le dificulte la oración], otros que estén de viaje recorriendo la tierra en busca del sustento de Dios, y otros combatiendo por Su causa. Así que reciten durante la oración de lo que sepan del Corán. Cumplan con la oración obligatoria y paguen el zakat. Presten a la causa de Dios generosamente, porque toda obra de bien que hagan será en favor de ustedes, y Dios los recompensará grandemente. Pidan a Dios el perdón [de sus faltas y omisiones] porque Él es Absolvedor, Misericordioso.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcvi{\basmalahes ¡Oh, tú [Mujámmad] que te envuelves en un manto!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcvii{Ponte de pie y advierte.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcviii{Proclama la grandeza de tu Señor,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcdxcix{purifica tus vestimentas,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmd{apártate de la idolatría,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdi{y no des esperando recibir más a cambio.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdii{Sé paciente [con las dificultades que enfrentarás al divulgar el Mensaje] de tu Señor.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdiii{[Pero ten en cuenta que] cuando se sople la trompeta [y comience el Día del Juicio],\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdiv{ese será un día difícil.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdv{Nada fácil para los que hoy desmienten la verdad.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdvi{[Oh, Mujámmad] Deja que Yo me encargaré de aquel que he creado, y vino al mundo solo,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdvii{a quien concedí abundantes riquezas\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdviii{y numerosos hijos atentos.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdix{Y le facilité medios con holgura,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdx{pero aun así anhela más.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdxi{¡No! Porque rechazó Mis signos.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdxii{Haré que sus dificultades vayan en aumento.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdxiii{Porque él pensó y decidió [a sabiendas, desmentir el Mensaje].\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdxiv{Fue maldecido por la decisión que tomó.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdxv{¡Sí!, fue maldecido por la decisión que tomó.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdxvi{Luego meditó [cómo desacreditar la revelación],\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdxvii{pero [al no poder encontrar ningún argumento] frunció el ceño y ofuscó el semblante.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdxviii{Luego le dio la espalda [al Mensaje] y se comportó con soberbia,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdxix{diciendo: ``Esto solo es hechicería que impresiona.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdxx{Es la palabra de un mortal".\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxi{En consecuencia, lo llevaré al fuego del Infierno.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxii{¿Y qué te hará comprender lo que es el fuego del Infierno?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxiii{[Es un fuego que] no deja nada sin quemar ni cesa jamás.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxiv{Abrasa la piel.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxv{Hay diecinueve [ángeles] que lo custodian.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxvi{Decreté que los guardianes del Infierno fueran ángeles, y dispuse ese número para probar a los que rechazan la verdad, también para que la Gente del Libro se convenzan y crean, y para que los creyentes fortifiquen su fe y no les queden dudas a ellos ni a la Gente del Libro. También para que aquellos cuyos corazones están enfermos [de duda e hipocresía] y los que niegan la fe se pregunten: ``¿Qué es lo que quiere demostrar Dios con este ejemplo?" Así es como Dios extravía a quien quiere [extraviarse] y guía a quien quiere [guiarse]. Solo Él conoce a todos los que sirven Su causa. Todo esto es motivo de reflexión para la humanidad.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxvii{[No es como pretenden los que rechazan la revelación, lo] juro por la Luna,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxviii{por la noche cuando desaparece,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxix{por la mañana cuando resplandece,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxx{que [el Infierno] es uno de los mayores [avisos],\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxi{una advertencia para los seres humanos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxii{Para que cada uno elija [libremente] obrar bien u obrar mal.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxiii{Toda alma será rehén de lo que haya hecho,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxiv{salvo los [bienaventurados] de la derecha.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxv{[Ellos estarán] en jardines y se preguntarán unos a otros\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxvi{acerca de [la situación] de los criminales.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxvii{Y les preguntarán: ``¿Qué fue lo que los llevó al fuego del Infierno?"\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxviii{Ellos responderán: ``Fue que no cumplíamos con la oración,\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmdxxxix{no dábamos de comer al pobre,\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmdxl{nos entreteníamos difamando [la revelación] junto a quienes retuercen la lógica para negar la verdad,\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmdxli{y desmentíamos la existencia del Día del Juicio\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlii{hasta que nos alcanzó la muerte [y con ella la certeza]".\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmdxliii{A estos no les beneficiará intercesión alguna.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmdxliv{¿Qué les pasa que se apartan de la amonestación [del Corán]\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlv{como si fueran cebras espantadas\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlvi{huyendo de un león?\qt@no{(51)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlvii{Ellos quisieran que descendieran [del cielo] páginas con un mensaje especial [que les confirmase que Mujámmad es un Mensajero de Dios].\qt@no{(52)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlviii{Pero no se lo concederemos, porque no tienen temor devocional a la vida del más allá.\qt@no{(53)}}
+\qt@newcmd\qurantrans@es@mmmmmdxlix{[El Corán] es una exhortación\qt@no{(54)}}
+\qt@newcmd\qurantrans@es@mmmmmdl{para que reflexione quien quiera.\qt@no{(55)}}
+\qt@newcmd\qurantrans@es@mmmmmdli{Pero solo lo harán aquellos para quienes Dios quiera la guía. Solo Él es digno de ser adorado, y solo Él es la fuente del perdón.\qt@no{(56)}}
+\qt@newcmd\qurantrans@es@mmmmmdlii{\basmalahes Juro por el Día de la Resurrección,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdliii{y juro por el alma que se reprocha a sí misma [cuando comete una falta].\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdliv{¿Acaso cree el ser humano que no volveré a reunir sus huesos?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdlv{¡Claro que sí! Soy capaz incluso de recomponer sus huellas digitales.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdlvi{Pero el ser humano [reniega del Día de la Resurrección y] quiere obrar como un libertino lo que le queda de vida.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdlvii{Y pregunta [burlonamente]: ``¿Cuándo será el día de la Resurrección?"\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdlviii{Pero cuando [llegue ese día y] la vista quede aturdida,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdlix{se eclipse la Luna,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdlx{y se junten el Sol y la Luna,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxi{el hombre dirá entonces: ``¿A dónde puedo huir?"\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxii{¡Pues no! No habrá refugio [a donde escapar].\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxiii{Ese día, todos comparecerán ante tu Señor.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxiv{Ese día se le informará al ser humano todo cuanto hizo y dejó de hacer.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxv{El ser humano dará testimonio contra sí mismo.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxvi{Y aunque intente justificarse [no podrá hacerlo].\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxvii{[Oh, Mujámmad] No muevas tu lengua deprisa repitiendo [la revelación],\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxviii{porque a Mí me corresponde conservarla [en tu corazón libre de toda tergiversación] para que la recites.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxix{Y cuando te la transmita sigue atentamente la recitación.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxx{Luego te explicaré claramente su significado.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxi{Pero [los seres humanos] aman la vida pasajera\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxii{y descuidan la vida del más allá.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxiii{Ese día, habrá rostros resplandecientes [de felicidad]\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxiv{contemplando a su Señor.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxv{Pero otros rostros estarán ensombrecidos,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxvi{al conocer la calamidad que caerá sobre ellos.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxvii{Cuando el alma llegue a la garganta [en la agonía de la muerte],\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxviii{y digan [quienes están junto al agonizante]: ``¿Hay alguien que pueda curarlo?"\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxix{El agonizante sabrá que llega el momento de partir [de este mundo],\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxx{y que sus piernas rígidas ya no podrán levantarlo de la agonía de la muerte.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxi{Ese día será conducido hacia su Señor.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxii{Quien no haya aceptado el Mensaje ni haya cumplido con las oraciones,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxiii{sino que desmentía [la verdad] y le daba la espalda\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxiv{y luego iba a los suyos arrogante,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxv{¡ay de él! Ya verá.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxvi{¡Sí! ¡Ay de él! Ya verá.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxvii{¿Acaso cree el ser humano que no será responsable de sus actos?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxviii{¿Acaso no fue un óvulo fecundado por una gota de esperma eyaculada?\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdlxxxix{¿Y luego un embrión? Dios lo creó y le dio forma armoniosa.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdxc{Y creó de allí la pareja: el hombre y la mujer.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdxci{Quien ha hecho todo esto, ¿acaso no va a ser capaz de resucitar a los muertos?\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcii{\basmalahes ¿Acaso no hubo un lapso enorme de tiempo en el cual el ser humano no existía y ni siquiera era mencionado?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdxciii{Creé al ser humano de un óvulo fecundado para ponerlo a prueba. Lo agracié con el oído y la vista.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdxciv{Y le mostré el camino [para que libremente elija] ser de los agradecidos o de los ingratos.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcv{A los que rechacen el Mensaje les he preparado cadenas, argollas y un fuego abrasador.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcvi{Los creyentes sinceros tomarán bebidas dulces en copas aromatizadas,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcvii{que brotarán de un manantial siempre accesible del que solo beberán los servidores de Dios.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcviii{[Son realmente creyentes] los que cumplen sus promesas y temen el Día del Juicio, cuyo alcance será extensivo.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdxcix{Y, a pesar del amor que tienen por sus bienes materiales, alimentan al pobre, al huérfano y al prisionero.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdc{Dicen: ``Les damos de comer simplemente porque anhelamos el rostro de Dios. En realidad no esperamos de ustedes retribución ni agradecimiento.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdci{Tenemos temor de que nuestro Señor nos castigue el día [del Juicio que será] terrible y penoso".\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcii{Pero Dios los preservará del mal de ese día y los llenará de esplendor y alegría.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdciii{Los retribuirá por su paciencia con el Paraíso y vestimentas de seda.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdciv{[En el Paraíso] estarán reclinados sobre sofás, a salvo del calor ardiente del Sol y la severidad del frío.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcv{Estarán cubiertos por una sombra cercana y fresca de árboles, cuyos frutos serán fáciles de alcanzar.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcvi{Serán servidos con vasijas de plata y copas diáfanas\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcvii{de cristal plateado hechas a su gusto.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcviii{Les servirán en copas aromatizadas una bebida con jengibre\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcix{extraída de una fuente del Paraíso, dulce y siempre accesible.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcx{Rondarán entre los creyentes, sirvientes de juventud eterna. Si los vieras creerías que son perlas esparcidas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxi{Y al mirar solo encontrarás felicidad y un reino vasto.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxii{[Quienes lo habiten] vestirán de verde satén y de brocado, y llevarán brazaletes de plata. Su Señor les dará de beber una bebida pura.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxiii{[Y se les dirá:] ``Esta es la recompensa. Su esfuerzo ha sido aceptado [por Dios]".\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxiv{[¡Oh, Mujámmad!] Te he revelado el Corán gradualmente [en respuesta a distintas situaciones].\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxv{Espera pacientemente el juicio de tu Señor y no obedezcas al pecador desagradecido.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxvi{Y celebra el nombre de tu Señor por la mañana y por la tarde.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxvii{Y por la noche prostérnate ante Él. Usa gran parte de la noche para glorificarlo.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxviii{Los que rechazan el Mensaje aman la vida efímera y dan la espalda a un día cargado de aflicción [en el que serán juzgados].\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxix{[No reconocen que] Yo los he creado y les he dado una constitución física fuerte, pero si quisiera podría sustituirlos por otros iguales.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxx{Esta revelación es para reflexionar. Quien quiera, que tome un camino hacia su Señor.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxi{Pero no querrán a menos que quiera Dios, porque Dios todo lo sabe, es Sabio.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxii{Él acoge en Su misericordia a quien quiere, pero a los opresores les ha preparado un castigo doloroso.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxiii{\basmalahes Juro por los [ángeles] enviados uno tras de otro,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxiv{por los [ángeles] encargados de los vientos que soplan violentamente,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxv{por los [ángeles] que conducen y extienden las nubes,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxvi{por los [ángeles] que distinguen claramente,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxvii{por los [Profetas] que transmiten Mensajes\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxviii{como aclaración o advertencia [para el Día del Juicio].\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxix{Tengan certeza de que aquello con que se les advierte se cumplirá\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxx{cuando las estrellas pierdan su luz,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxi{cuando el cielo se resquebraje,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxii{cuando las montañas sean convertidas en polvo\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxiii{y los Mensajeros sean convocados.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxiv{¿Para qué día se los convocará?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxv{Para el Día del Juicio.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxvi{¿Y qué te hará comprender qué es el Día del Juicio?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxvii{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxviii{¿Acaso no destruí otros pueblos antiguos [que rechazaron el Mensaje]?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxxxix{Luego les siguieron otros pueblos [de desmentidores].\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxl{Eso es lo que sucede a los pecadores.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxli{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlii{¿No los he creado de un líquido insignificante\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxliii{que deposité en un lugar seguro [el útero]\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxliv{por un tiempo determinado?\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlv{Así lo he decretado, y Mi decreto es perfecto.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlvi{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlvii{¿Acaso no he hecho de la tierra una morada\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlviii{para los vivos y los muertos,\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxlix{y he puesto en ella montañas elevadas y firmes? ¿Acaso no les he dado de beber agua dulce?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcl{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcli{[Se les dirá:] Diríjanse a lo que desmentían [el Infierno].\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdclii{Diríjanse a la sombra [infernal] ramificada en tres,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcliii{que no protege ni salva de las llamas,\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdcliv{pues arroja chispas grandes como palacios.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdclv{Chispas que semejan camellos pardos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdclvi{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdclvii{Ese día no hablarán\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdclviii{ni se les permitirá excusarse.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdclix{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdclx{Este es el día de la sentencia. Los he reunido a los primeros y a los últimos.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxi{Si creen tener alguna treta [para huir], úsenla ahora.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxii{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxiii{Pero los que hayan tenido temor de Dios, estarán bajo sombras frescas entre manantiales.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxiv{Tendrán las frutas que deseen.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxv{[Se les dirá:] ``Coman y beban cuanto quieran como recompensa por lo que obraron".\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxvi{Así recompensaré a los que hagan el bien.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxvii{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxviii{[¡Aquellos que niegan el Mensaje!] Coman y disfruten temporalmente, porque están hundidos en el pecado.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxix{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(47)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxx{Cuando se les dice: ``Hagan la oración", no la hacen.\qt@no{(48)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxi{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(49)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxii{¿En qué otro Mensaje fuera de este han de creer?\qt@no{(50)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxiii{\basmalahes ¿Sobre qué se preguntan unos a otros?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxiv{Sobre la gran noticia [el Mensaje del Islam]\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxv{acerca de la cual discrepan.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxvi{Pero no es lo que piensan, ya verán [por desmentirla].\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxvii{Indudablemente no es lo que piensan; ya verán.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxviii{¿Acaso no hice de la tierra un lecho,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxix{de las montañas estacas,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxx{los cree en parejas [hombre y mujer],\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxi{hice que el sueño sea descanso,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxii{que la noche lo cubra,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxiii{que el día sea para procurar el sustento,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxiv{construí sobre ustedes siete cielos firmes,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxv{puse una lámpara resplandeciente [el Sol],\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxvi{e hice descender de las nubes agua abundante\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxvii{para que broten semillas y plantas\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxviii{y florezcan jardines frondosos?\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdclxxxix{El Día del Juicio Final ya está determinado.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxc{Ese día, se soplará la trompeta y ustedes se presentarán en grupos.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxci{El cielo será abierto, transformándose en un portal.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcii{Las montañas desaparecerán como si hubieran sido un espejismo.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxciii{El Infierno estará al acecho,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxciv{será la morada de los transgresores\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcv{que permanecerán en él eternamente.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcvi{Allí no podrán sentir frescor ni saciar su sed.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcvii{Solo beberán un líquido hirviente y nauseabundo,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcviii{como castigo justo por lo que hicieron [en la vida mundanal].\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcxcix{Ellos no esperaban tener que rendir cuentas,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcc{y por eso desmintieron abiertamente Mi Mensaje,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcci{pero Yo lo registré todo en un libro.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdccii{[Se les dirá a los desmentidores:] ``Sufran las consecuencias, no haré sino aumentarles el castigo".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcciii{En cambio, los piadosos obtendrán la bienaventuranza\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdcciv{donde habrá huertos y vides,\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccv{compañeras de eterna juventud,\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccvi{y copas desbordantes.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccvii{Allí no oirán banalidades ni falsedades.\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccviii{Esta es la recompensa de tu Señor, que concederá generosamente.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccix{El Señor de los cielos, de la Tierra y de lo que hay entre ellos, el Compasivo. Nadie puede hablar ante Él excepto con Su permiso.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdccx{El día en que el Espíritu junto con los demás ángeles se pongan en fila, nadie hablará, salvo aquel a quien el Compasivo se lo permita, y solo podrá decir la verdad.\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxi{Ese es el día en que se establecerá total justicia. Quien quiera, entonces, que busque refugio en Su Señor.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxii{Les he advertido de este castigo inminente. Ese día cada ser humano ha de contemplar sus obras, y entonces dirá quien haya desmentido el Mensaje: ``¡Ojalá fuera polvo [para no ser juzgado]!"\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxiii{\basmalahes Juro por los [ángeles] que arrancan las almas [de los que desmienten el Mensaje],\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxiv{por los [ángeles] que toman suavemente las almas [de los creyentes],\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxv{por los [ángeles] que viajan por el cosmos,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxvi{por los [ángeles] que se apresuran [a cumplir su función]\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxvii{y por los [ángeles] que cumplen su mandato.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxviii{Que el día que sea tocada la trompeta por primera vez [y comience el fin del mundo]\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxix{y luego sea tocada por segunda vez [y comience la resurrección],\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxx{los corazones se estremecerán\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxi{y las miradas estarán abatidas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxii{Pero a pesar de esto [los que desmienten el Mensaje] dicen: ``¿Acaso seremos resucitados de las tumbas\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxiii{a pesar de habernos convertido en polvo?"\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxiv{Dicen: ``Si sucediera, estaríamos arruinados".\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxv{Pero bastará que la trompeta sea tocada una vez\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxvi{para que todos salgan de sus tumbas.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxvii{¿Acaso has escuchado la historia de Moisés?\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxviii{Cuando su Señor lo llamó en el valle sagrado de Tuwa\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxix{[y le dijo:] ``Ve ante el Faraón, pues se ha excedido,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxx{y dile: ‘¿No deseas purificar tu comportamiento?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxi{Yo te enseñaré el sendero de tu Señor para que seas piadoso’".\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxii{Y [Moisés] le mostró [al Faraón] uno de sus grandes milagros.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxiii{Pero el Faraón lo desmintió y rechazó seguirlo.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxiv{Luego le dio la espalda y desobedeció [el Mensaje].\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxv{Y convocó [a su pueblo] y les dijo:\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxvi{``Yo soy su Señor supremo".\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxvii{Por eso Dios lo castigará en la otra vida, pero también en esta.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxviii{En esta historia hay motivo de reflexión para quien tiene temor de Dios.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxxxix{¿Acaso piensan que ustedes fueron más difíciles de crear que el cielo que Él edificó?\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxl{Él lo elevó y perfeccionó su construcción.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxli{Dios hizo que la noche fuese oscura y que le sucediera la claridad de la mañana.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlii{Luego extendió la tierra.\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxliii{Hizo surgir de ella agua y pasturas.\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxliv{Fijó las montañas.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlv{Todo para beneficio de ustedes y de sus rebaños.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlvi{El día que suceda la gran calamidad [el fin del mundo]\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlvii{el ser humano recordará todo lo que haya hecho,\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlviii{y será expuesto el fuego del Infierno para que lo vean.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxlix{Quien se haya extralimitado\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdccl{y preferido la vida mundanal,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdccli{su morada será el Infierno.\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclii{En cambio, quien haya tenido conciencia de que comparecerá ante su Señor y haya preservado su alma de seguir sus pasiones,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdccliii{su morada será el Paraíso.\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdccliv{Te preguntan cuándo será la hora del Juicio Final.\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclv{Pero tú [¡oh, Mujámmad!] no tienes conocimiento de cuándo será.\qt@no{(43)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclvi{Solo tu Señor lo sabe.\qt@no{(44)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclvii{Tú solamente eres un advertidor para quienes tienen temor [al Juicio].\qt@no{(45)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclviii{El día que lo vean suceder, les parecerá haber permanecido en la vida mundanal solo el tiempo equivalente a una tarde o una mañana.\qt@no{(46)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclix{\basmalahes [¡Oh, Mujámmad!] Frunciste el ceño y le diste la espalda\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclx{al ciego cuando se presentó ante ti.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxi{¿Cómo sabes que no quería purificarse [aprendiendo de ti el conocimiento],\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxii{o beneficiarse con tus enseñanzas?\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxiii{En cambio, al soberbio\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxiv{le dedicaste toda tu atención.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxv{Pero tú no eres responsable si él rechaza purificarse [de la idolatría, ya que tu obligación solo es transmitir el Mensaje].\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxvi{En cambio, aquel que se presentó ante ti con deseos [de aprender],\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxvii{teniendo temor de Dios,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxviii{te apartaste de él.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxix{No lo vuelvas a hacer, porque este Mensaje es para toda la humanidad.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxx{Quien quiera, que reflexione y obre acorde a él.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxi{Pues el Mensaje está registrado en páginas honorables,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxii{distinguidas y purificadas,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxiii{en manos de [ángeles] encargados de ejecutar las órdenes de Dios,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxiv{nobles y obedientes.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxv{El ser humano se destruye a sí mismo con su ingratitud.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxvi{¿Acaso no sabe de qué ha sido creado?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxvii{De un óvulo fecundado, que crece en etapas según lo [que Él ha] establecido.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxviii{Luego le facilita el camino.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxix{Luego lo hace morir y ser enterrado.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxx{Finalmente lo resucita cuando Él quiere.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxi{Pero a pesar de esto no cumple con los preceptos que se le ordenan.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxii{El ser humano debería reflexionar sobre su alimento:\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxiii{Hice descender el agua en abundancia,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxiv{luego hice que la tierra brotara.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxv{Hice surgir de ella granos,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxvi{vides, hierbas,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxvii{olivos, palmeras,\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxviii{huertos frondosos,\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdcclxxxix{frutos y forraje\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxc{para beneficio de ustedes y de sus rebaños.\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxci{El día que llegue el estruendo terrible [comenzando el fin del mundo],\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcii{el ser humano huirá de su hermano,\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxciii{de su madre y de su padre,\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxciv{de su esposa y de sus hijos.\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcv{Ese día cada uno estará preocupado por sí mismo.\qt@no{(37)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcvi{Ese día habrá rostros radiantes,\qt@no{(38)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcvii{risueños y felices [por haber alcanzado la salvación].\qt@no{(39)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcviii{Pero habrá otros rostros ensombrecidos,\qt@no{(40)}}
+\qt@newcmd\qurantrans@es@mmmmmdccxcix{apesadumbrados [por haber merecido la condena al Infierno].\qt@no{(41)}}
+\qt@newcmd\qurantrans@es@mmmmmdccc{Esos serán los que rechazaron el Mensaje y los transgresores [de la ley].\qt@no{(42)}}
+\qt@newcmd\qurantrans@es@mmmmmdccci{\basmalahes Cuando el Sol se contraiga [y oscurezca],\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccii{cuando las estrellas pierdan su luz,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdccciii{cuando las montañas sean pulverizadas,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccciv{cuando las camellas preñadas sean dejadas de lado,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccv{cuando las bestias salvajes sean acorraladas,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccvi{cuando los mares hiervan y se desborden,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccvii{cuando las almas vuelvan a emparejarse [con sus cuerpos],\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccviii{cuando se le pregunte a las niñas que fueron enterradas vivas\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccix{por qué pecado las mataron,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccx{cuando los registros [de las obras] sean repartidos,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxi{cuando la bóveda celeste desaparezca,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxii{cuando el fuego del Infierno sea avivado,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxiii{y cuando el Paraíso sea acercado.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxiv{En ese momento sabrá cada alma el resultado de sus obras.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxv{Juro por los astros\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxvi{que recorren sus órbitas,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxvii{y [juro] por la noche cuando extiende su oscuridad,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxviii{y [juro] por la mañana cuando extiende su luminosidad,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxix{que [el Corán] es la palabra [de Dios transmitida] por un emisario noble,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxx{dotado de poder y distinción ante el Señor del Trono.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxi{El obedecido [por otros ángeles] y el digno confidente [de la revelación].\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxii{[Sepan que] su compañero [el Profeta Mujámmad] no es un loco,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxiii{lo vio [al ángel Gabriel] en el horizonte claro,\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxiv{no oculta nada de lo que le fue revelado.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxv{[El Corán] no es la palabra de un demonio maldito.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxvi{¿A dónde irán [con ese argumento]?\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxvii{[El Corán] es un Mensaje para toda la humanidad,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxviii{para que se encamine quien quiera.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxix{Pero sepan que solo se encaminará quien quiera Dios, Señor del universo.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxx{\basmalahes Cuando el cielo se rompa,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxi{cuando los planetas salgan de sus órbitas,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxii{cuando los mares se desborden\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxiii{y cuando las tumbas se abran.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxiv{En ese momento sabrá cada alma lo que hizo de bien y de mal.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxv{¡Oh, seres humanos! ¿Qué fue lo que los engañó para que se apartaran de su Señor Generoso?\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxvi{Quien los creó, les dio forma y una conformación armoniosa,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxvii{y les dio la más hermosa figura que quiso para ustedes.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxviii{Pero aun así desmienten el Día del Juicio.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxxxix{Hay ángeles que registran sus obras,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxl{nobles escribas\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxli{que saben lo que ustedes hacen.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlii{Los piadosos disfrutarán delicias [en esta vida y en el Paraíso],\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxliii{mientras que los pecadores, en cambio, sufrirán tormento [en esta vida y en la otra],\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxliv{y arderán en el Infierno desde el Día del Juicio,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlv{del que no podrán salir.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlvi{¿Qué te hará comprender todo lo que sucederá el Día de la Retribución?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlvii{[¡Reflexiona!] ¿Qué te hará comprender todo lo que sucederá el Día de la Retribución?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlviii{Ese día nadie podrá hacer nada por nadie, porque será Dios Quien decida.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxlix{\basmalahes ¡Ay de los tramposos!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccl{Que cuando compran exigen el peso exacto,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccli{pero cuando venden hacen trampa [dando menos] en el peso y la medida.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclii{¿Acaso no saben que serán resucitados?\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccliii{En un día terrible,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccliv{un día en el que comparecerán los seres humanos ante el Señor del universo.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclv{No quedarán impunes como piensan, porque el registro de los pecadores está en un libro ineludible.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclvi{¿Y qué te hará saber lo que es un libro ineludible?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclvii{Es un libro donde se registran las obras de los pecadores.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclviii{¡Cuán desdichados serán ese día los que negaron la verdad!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclix{Los que desmintieron el Día del Juicio,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclx{pues solo lo desmienten los transgresores y los pecadores.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxi{Quienes, cuando les es recitada Mi palabra, dicen: ``Son fábulas de los pueblos antiguos".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxii{Pero no es así, sino que sus corazones están duros, llenos de herrumbre, debido a los pecados que cometieron.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxiii{No es así, sino que ese día no podrán ver a su Señor.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxiv{Luego serán llevados al Infierno,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxv{donde se les dirá: ``Esto es lo que desmentían y rechazaban".\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxvi{En cambio, el registro de los bienaventurados será un libro noble.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxvii{¿Y qué te hará saber lo que es un libro noble?\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxviii{Es el libro donde se registran las obras de los que hacen el bien,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxix{que puede ser visto por los [ángeles] cercanos [a Dios].\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxx{Los bienaventurados gozarán las delicias del Paraíso,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxi{recostados en sofás, contemplando.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxii{Reconocerás en sus rostros el resplandor de la dicha.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxiii{Se les dará de beber un néctar sellado,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxiv{cuyo último sorbo deja un sabor a almizcle. ¡Que se esfuercen por alcanzarla los aspirantes!\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxv{[El néctar] estará mezclado con agua de Tasnim,\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxvi{un manantial del que solo beberán los más cercanos a Dios.\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxvii{Los que se abandonan al pecado se ríen [en esta vida] de los creyentes.\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxviii{Cuando pasan junto a ellos se hacen gestos [despectivos],\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxix{y cuando regresan a sus hogares se jactan [de ello].\qt@no{(31)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxx{Cuando ven a los suyos dicen: ``Ellos son unos desviados",\qt@no{(32)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxi{aunque no les fue encargado velar por ellos.\qt@no{(33)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxii{Pero este día los creyentes serán quienes se rían de los que rechazaron la verdad.\qt@no{(34)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxiii{[Los creyentes] estarán reclinados sobre sofás, contemplando [el Rostro de Dios].\qt@no{(35)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxiv{¿Acaso los que rechazaron la verdad no han recibido una retribución justa por sus propias obras?\qt@no{(36)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxv{\basmalahes Cuando el cielo se resquebraje\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxvi{en cumplimiento de la orden de su Señor, como es debido.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxvii{Cuando la tierra sea aplanada,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxviii{y expulse lo que hay en su seno y quede vacía,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmdccclxxxix{en cumplimiento de la orden de su Señor, como es debido.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxc{¡Oh, seres humanos! Han de comparecer ante su Señor y ver el resultado de sus obras.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxci{Quien reciba el registro de sus obras en su mano derecha\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcii{tendrá un juicio fácil,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxciii{y [una vez terminado] se reunirá jubiloso con su gente [en el Paraíso].\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxciv{Mientras que quien reciba el registro de sus obras por detrás de su espalda,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcv{suplicará ser destruido definitivamente.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcvi{Pero será arrastrado al castigo del Infierno.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcvii{Él vivía alegre con su familia [despreocupado del más allá]\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcviii{pensando que jamás comparecería [ante Dios].\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmdcccxcix{Pero sí, su Señor estaba bien informado de lo que hacía.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcm{Juro por el crepúsculo,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmi{por la noche y por las criaturas que habitan en ella,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmii{y por la Luna cuando alcanza el plenilunio,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmiii{que [los seres humanos] pasan de un estado a otro.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmiv{¿Qué es lo que les impide creer?\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcmv{¿Qué les impide prosternarse cuando se les recita el Corán?\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcmvi{Los que rechazan la verdad se empeñan en desmentir [el Mensaje].\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcmvii{Pero Dios conoce bien lo que ocultan [sus corazones].\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcmviii{Anúnciales un castigo doloroso,\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcmix{salvo a quienes crean y obren rectamente, porque ellos recibirán una recompensa inagotable.\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcmx{\basmalahes Juro por el cosmos y sus constelaciones,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxi{por el día prometido [el Día del Juicio Final],\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxii{y por el testigo y lo atestiguado,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxiii{que los que arrojaron a los creyentes al foso del fuego fueron maldecidos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxiv{En el foso encendieron un fuego ardiente,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxv{y se sentaron en sus bordes\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxvi{para presenciar lo que cometían contra los creyentes,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxvii{cuya única culpa para merecer ese castigo era creer en Dios, el Poderoso, el Loable,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxviii{a Quien pertenece el reino de los cielos y de la tierra. Dios es testigo de todo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxix{Quienes persigan a los creyentes y a las creyentes y no se arrepientan [antes de morir], sufrirán en el Infierno un castigo abrasador.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxx{En cambio, quienes hayan creído y obrado correctamente serán recompensados con jardines por donde corren los ríos. Ese es el triunfo grandioso.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxi{¡Pero el castigo de tu Señor es severo!\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxii{Él da origen y reproduce.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxiii{Él es el Absolvedor, el Afectuoso.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxiv{Señor del Trono, el Majestuoso.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxv{Hacedor de Su voluntad.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxvi{¿Has escuchado la historia de los ejércitos [criminales]\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxvii{del Faraón y del pueblo de Zamud [que desmintieron a los Mensajeros y los destruí]?\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxviii{Sin embargo, los que niegan la verdad continúan desmintiendo.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxix{Pero Dios los domina sin que lo sepan.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxx{Este es un Corán glorioso\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxi{que está registrado en la Tabla Protegida.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxii{\basmalahes Juro por el cosmos y el astro nocturno.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxiii{¿Y qué puede hacerte comprender lo que es el astro nocturno?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxiv{Es una estrella fulgurante.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxv{Todo ser humano tiene designado un ángel protector que registra sus obras.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxvi{Que medite el hombre de qué fue creado:\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxvii{Fue creado de un líquido seminal\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxviii{que proviene de entre las entrañas [del hombre] y el arco pélvico [de la mujer].\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxxxix{[Así como lo ha creado la primera vez] Él tiene el poder para resucitarlo.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxl{El día que sean revelados todos los secretos,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxli{y [el ser humano] no tenga fuerzas [para defenderse] a sí mismo ni auxiliador alguno.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlii{Juro por el cielo que devuelve [el agua que sube en forma de lluvias],\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxliii{y por la tierra que se abre para que broten los cultivos,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxliv{que el Corán es la Verdad que discrimina [la verdad de la falsedad],\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlv{y no es algo trivial.\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlvi{[Los que niegan la verdad] traman [cizañas],\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlvii{pero Yo desbarato sus planes.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlviii{Sé tolerante con los que niegan la verdad, y dales un tiempo.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxlix{\basmalahes Glorifica el nombre de tu Señor, el Altísimo,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcml{Quien creó todas las cosas a la perfección\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmli{y decretó para cada ser su función;\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlii{Quien hace brotar la hierba,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmliii{y luego la convierte en heno seco.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmliv{[¡Oh, Mujámmad!] Haré que recites [el Corán] y no lo olvides.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlv{Salvo que Dios quiera, pues Él conoce lo manifiesto y lo oculto.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlvi{Te dirigiré por el camino de la facilidad.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlvii{Exhorta [con el Corán], porque el recuerdo es beneficioso.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlviii{Quien tenga temor de Dios recapacitará [con tu exhortación],\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlix{pero el negador de la verdad la rechazará\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlx{y por eso será abrazado por un gran fuego,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxi{donde no podrá morir [para descansar del sufrimiento] ni vivir [sin dolor].\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxii{¡Será de los bienaventurados quien se purifique [de la idolatría y los pecados],\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxiii{recuerde el nombre de su Señor y cumpla con sus oraciones!\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxiv{Pero [muchos] prefieren la vida mundanal,\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxv{aunque deben saber que la vida del más allá es superior y eterna.\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxvi{Este Mensaje se encuentra mencionado en las primeras revelaciones,\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxvii{en las revelaciones recibidas por Abraham y Moisés.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxviii{\basmalahes ¿Te ha llegado la historia sobre el día que todo lo alcanza?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxix{Ese día los rostros [de los condenados al Fuego] se verán humillados,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxx{abatidos y asfixiados.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxi{Serán llevados a un fuego intenso\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxii{donde les será dado a beber de una fuente de agua hirviente.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxiii{No tendrán otra comida más que espinas\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxiv{que no alimentan ni sacian.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxv{Pero ese día los rostros [de los bienaventurados] estarán radiantes de felicidad.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxvi{Estarán complacidos de sus obras.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxvii{Morarán en un jardín sublime,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxviii{en el que no oirán palabras vanas.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxix{En él habrá manantiales,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxx{lechos elevados,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxi{copas al alcance de su mano,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxii{cojines alineados\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxiii{y alfombras extendidas.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxiv{¿Acaso no reflexionan [los que niegan la verdad] en la maravillosa creación del camello?\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxv{En el cielo, cómo ha sido elevado.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxvi{En las montañas, cómo han sido afirmadas.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxvii{Y en la Tierra, cómo ha sido extendida.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxviii{Exhorta a la gente porque esa es tu misión.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmcmlxxxix{No puedes obligarlos a creer.\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxc{Pero sabe que a quien dé la espalda y rechace la verdad\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxci{Dios lo someterá al peor de los castigos.\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcii{Porque todos comparecerán ante Mí,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxciii{y seré Yo Quien los juzgue.\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxciv{\basmalahes Juro por la Aurora,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcv{por las diez noches,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcvi{por [las oraciones] pares e impares,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcvii{y por la noche cuando transcurre.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcviii{¿Acaso no son estos juramentos [argumentos suficientes sobre el poder de Dios] para los dotados de intelecto?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmcmxcix{¿No has visto cómo tu Señor castigó al pueblo de ‘Ád\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmm{en Iram?, el de las [construcciones con grandes] columnas,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmi{que no tenía similar entre los otros pueblos [en su opulencia].\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmii{Y al pueblo de Zamud, que esculpieron sus casas en las montañas rocosas del valle.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmiii{Y al Faraón, el de las estacas.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmiv{Todos ellos fueron tiranos con los pueblos,\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmv{sembrando la corrupción.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmvi{Pero como consecuencia de eso tu Señor los azotó con un castigo,\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmvii{tu Señor está atento [a las acciones de la gente].\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmviii{El ser humano, cuando su Señor lo agracia, dice: ``Mi Señor me ha honrado [porque lo merezco]".\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmix{En cambio cuando lo pone a prueba restringiendo su sustento, dice: ``Mi Señor me ha despreciado [y no ha tenido en cuenta mis méritos]".\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmx{¡Pero no! No han comprendido el verdadero significado de las pruebas [de la riqueza y la pobreza] y por eso no son generosos con el huérfano\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmxi{ni exhortan unos a otros a alimentar al pobre.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmxii{[En lugar de eso] se apropian codiciosamente de los bienes del prójimo,\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmxiii{y son insaciables en su amor [y codicia] por el dinero.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmmxiv{¡Basta! [Piensen en cuál será su destino] cuando la Tierra sea golpeada una y otra vez,\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmmxv{y llegue su Señor y se presenten los ángeles en fila tras fila,\qt@no{(22)}}
+\qt@newcmd\qurantrans@es@mmmmmmxvi{y sea traído el Infierno. Ese día el hombre recordará sus obras, pero de nada le servirá.\qt@no{(23)}}
+\qt@newcmd\qurantrans@es@mmmmmmxvii{Y dirá lamentándose: ``¡Ojalá hubiera realizado buenas obras para mi vida [del más allá]!"\qt@no{(24)}}
+\qt@newcmd\qurantrans@es@mmmmmmxviii{Sepan que nadie ha castigado como Él castigará ese día,\qt@no{(25)}}
+\qt@newcmd\qurantrans@es@mmmmmmxix{y nadie ha encadenado como Él encadenará [ese día].\qt@no{(26)}}
+\qt@newcmd\qurantrans@es@mmmmmmxx{[Le será dicho al creyente:] ``¡Oh, alma que estás en paz con tu Señor!\qt@no{(27)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxi{Vuelve a la vera de tu Señor complacida, porque Dios está complacido contigo,\qt@no{(28)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxii{y únete a Mis siervos piadosos\qt@no{(29)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxiii{entrando a Mi Paraíso".\qt@no{(30)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxiv{\basmalahes Juro por esta ciudad [La Meca],\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxv{en la que tú resides [¡oh, Mujámmad!],\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxvi{y juro por el progenitor y su descendencia,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxvii{que creé al ser humano para una vida de continuas dificultades.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxviii{¿Acaso piensa que nadie tiene poder sobre él?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxix{Presume diciendo: ``He derrochado una gran fortuna".\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxx{¿Acaso cree que nadie lo ve?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxi{¿Acaso no le he dado dos ojos,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxii{una lengua y dos labios,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxiii{y le he mostrado los dos senderos [el del bien y el del mal]?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxiv{Pero no está dispuesto a tomar el camino del esfuerzo.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxv{¿Y qué te hará comprender lo que es el camino del esfuerzo?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxvi{Es liberar [al esclavo] de la esclavitud\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxvii{y dar alimentos en días de hambre\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxviii{al pariente huérfano,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmxxxix{o al pobre hundido en la miseria.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmxl{Y ser, además, de los creyentes que se aconsejan mutuamente ser perseverantes [en el camino del esfuerzo y de la fe] y ser misericordiosos [con el prójimo].\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmxli{Estos son los bienaventurados de la derecha.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlii{Mientras que quienes rechacen Mi revelación serán los desventurados de la izquierda\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmxliii{y el fuego se cercará sobre ellos.\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmmxliv{\basmalahes Juro por el Sol cuando resplandece,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlv{por la Luna cuando lo refleja,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlvi{por el día cuando fulgura,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlvii{por la noche cuando cubre con su oscuridad,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlviii{por el cosmos y la creación maravillosa que hay en él,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmxlix{por la Tierra y su vasta extensión,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmml{por el alma y su armonía,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmli{[Dios] le enseñó [al ser humano] a distinguir entre el pecado y la conciencia de Dios.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmlii{¡Será bienaventurado quien purifique su alma [apartándola de los pecados],\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmliii{pero será un desventurado quien la abandone a sus pasiones!\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmliv{El pueblo de Zamud rechazó el Mensaje por soberbia.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmlv{Cuando el más opresor de ellos se prestó para matar a la camella.\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmlvi{El Mensajero de Dios [Sálih] los previno: ``No maten a la camella de Dios [enviada como milagro] y déjenla abrevar libremente".\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmlvii{Pero desmintieron al Mensajero y mataron a la camella. Entonces, su Señor los destruyó a todos, por lo que cometieron, con un castigo arrasador,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmlviii{sin temor por la magnitud de Su castigo.\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmlix{\basmalahes Juro por la noche cuando cubre con la oscuridad,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmlx{por el día cuando resplandece,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxi{por Quien creó al hombre y a la mujer,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxii{que las obras [de las personas] son diversas.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxiii{A quien dé caridades, tenga temor [de Dios]\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxiv{y crea en los valores más sublimes,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxv{le facilitaré el camino del bien.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxvi{Pero a quien sea avaro, crea que puede prescindir [de Dios]\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxvii{y desmienta los valores más sublimes,\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxviii{no le impediré transitar por el camino de la adversidad.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxix{¿De qué le servirán sus bienes materiales cuando muera?\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxx{Evidencio la guía,\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxi{y a Mí me pertenecen esta vida y la otra.\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxii{Les he advertido sobre un fuego abrasador,\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxiii{en el que solo ingresarán los desventurados\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxiv{que desmientan y se aparten [del Mensaje].\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxv{Pero el piadoso estará a salvo [de ese fuego],\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxvi{aquel que da parte de su riqueza para purificarse [de la avaricia],\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxvii{no anhelando una retribución ni favor [de otra persona],\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxviii{sino anhelando el Rostro de su Señor, el Altísimo,\qt@no{(20)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxix{y por eso quedará complacido.\qt@no{(21)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxx{\basmalahes Juro por el resplandor matinal,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxi{por la noche cuando se serena,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxii{que tu Señor no te ha abandonado ni aborrecido [oh, Mujámmad].\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxiii{La vida del más allá será mejor para ti que esta.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxiv{Tu Señor te agraciará y te complacerás.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxv{¿Acaso no te encontró huérfano y te dio amparo,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxvi{y te encontró perdido y te guió,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxvii{y te encontró pobre y te enriqueció?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxviii{No maltrates al huérfano\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmlxxxix{ni rechaces al mendigo.\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmxc{Y divulga las bendiciones de tu Señor.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmxci{\basmalahes ¿Acaso no he dado sosiego a tu corazón [¡oh, Mujámmad!],\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcii{te he liberado de la carga\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmxciii{que agobiaba tu espalda,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmxciv{y he elevado tu renombre?\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcv{Luego de toda dificultad viene la facilidad.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcvi{Realmente, luego de toda dificultad viene la facilidad.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcvii{Cuando cumplas con tus obligaciones dedícate a la adoración,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcviii{y a tu Señor anhela con devoción.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmxcix{\basmalahes Juro por la higuera y el olivo,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmc{por el monte Sinaí,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmci{y por esta ciudad segura [La Meca].\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcii{Que he creado al ser humano con la mejor conformación.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmciii{Sin embargo, [a quien rechace el Mensaje] lo degradaré al rango más bajo.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmciv{En cambio, a los creyentes que obran rectamente les tengo reservada una recompensa inagotable.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcv{¿Cómo puedes desmentir el Día del Juicio?\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcvi{¿Acaso no es Dios el más Justo de los jueces?\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcvii{\basmalahes ¡Lee! [¡oh, Mujámmad!] En el nombre de tu Señor, Quien creó todas las cosas.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcviii{Creó al hombre de una célula embrionaria.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcix{¡Lee! Que tu Señor es el más Generoso.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcx{Enseñó la escritura con la pluma\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxi{y le enseñó al hombre lo que este no sabía.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxii{No obstante, el ser humano se excede\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxiii{cuando se cree autosuficiente.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxiv{Pero todos habrán de comparecer ante tu Señor.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxv{¿Qué piensas de quien impide\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxvi{a un siervo de Dios realizar sus oraciones?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxvii{¿Acaso ha recapacitado que trae la guía\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxviii{y exhorta a la piedad?\qt@no{(12)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxix{¿Acaso no ves cómo desmiente y rechaza?\qt@no{(13)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxx{¿Acaso no sabe que Dios lo ve?\qt@no{(14)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxi{Si no pone fin [a sus agresiones contra los creyentes] lo arrastraré por su frente,\qt@no{(15)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxii{esa frente mentirosa y perversa.\qt@no{(16)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxiii{Que pida auxilio a sus secuaces,\qt@no{(17)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxiv{que llamaré a los ángeles guardianes del Infierno.\qt@no{(18)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxv{¡No! No lo obedezcas, sino que prostérnate [ante Dios] y busca Su proximidad.\qt@no{(19)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxvi{\basmalahes Comencé la revelación [del Corán] en la noche de la predestinación.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxvii{¿Y qué te hará comprender la importancia de la noche de la predestinación?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxviii{[Adorar a Dios] la noche de la predestinación es superior en recompensa a hacerlo durante mil meses.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxix{Esta noche descienden los ángeles y el espíritu [el ángel Gabriel] con órdenes de su Señor para todos los asuntos.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxx{Es una noche de paz y seguridad hasta el comienzo del alba.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxi{\basmalahes No es concebible que los incrédulos, de la Gente del Libro o los idólatras, sean condenados hasta que les haya llegado una evidencia clara,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxii{que sea un Mensajero de Dios, que les recite una revelación purificada [de toda falsedad y contradicción],\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxiii{que contiene preceptos de rectitud y justicia.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxiv{Pero quienes recibieron el Libro con anterioridad [judíos, cristianos y otros] rompieron su unidad [en la fe] cuando les llegó la evidencia clara [a pesar de provenir de la misma fuente divina],\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxv{en la que únicamente se les ordenaba que fueran monoteístas adorando solo a Dios con sinceridad, que realizaran la oración y pagaran el zakat, pues esa es la verdadera religión.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxvi{Quienes se negaron a seguir la verdad, sean Gente del Libro o idólatras, serán castigados eternamente en el fuego del Infierno. Ellos son lo peor entre todos los seres creados.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxvii{En cambio, los que creen y obran rectamente son lo mejor entre todos los seres creados.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxviii{Ellos recibirán como recompensa de su Señor Jardines del Edén por donde corren ríos, en los que estarán eternamente. Dios estará complacido con ellos y ellos lo estarán con Él. Esto es lo que aguarda a quienes hayan tenido temor de Dios.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxxxix{\basmalahes Cuando la Tierra sea sacudida por el gran terremoto,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxl{y expulse su carga [haciendo surgir a los muertos de sus tumbas],\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxli{y el hombre diga: ``¿Qué le sucede a la Tierra?"\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlii{Ese día, la Tierra dará testimonio de todo cuanto sucedió sobre ella,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxliii{por orden de su Señor.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxliv{Entonces, los seres humanos acudirán al Día del Juicio en grupos para conocer el resultado de sus obras.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlv{Quien haya realizado una obra de bien, tan pequeña como un átomo, la encontrará registrada.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlvi{Y quien haya realizado una mala obra, tan pequeña como un átomo, la encontrará registrada.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlvii{\basmalahes Juro por los corceles que se lanzan relinchando\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlviii{y arrancan chispas con sus cascos\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxlix{y sorprenden al amanecer\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcl{levantando una nube de polvo,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcli{e irrumpiendo en las filas del enemigo,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclii{que el ser humano es ingrato con su Señor.\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcliii{Y él mismo es testigo de ello,\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmcliv{porque tiene una codicia apasionada por los bienes materiales.\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclv{¿Acaso no sabe que cuando se haga surgir a quienes están en las sepulturas\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmclvi{y se evidencie lo que hay en los corazones,\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmclvii{ese día su Señor estará bien informado de lo que hicieron?\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmclviii{\basmalahes El evento repentino.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclix{¿Qué es el evento repentino?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclx{¿Y qué te hará comprender la magnitud del evento repentino?\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxi{Ese día la gente parecerá mariposas dispersas,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxii{y las montañas copos de lana cardada.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxiii{Aquel cuyas obras buenas sean más pesadas en la balanza\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxiv{gozará de una vida placentera.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxv{En cambio, aquel cuyas obras buenas sean más livianas en la balanza,\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxvi{su morada estará en el abismo.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxvii{¿Y qué te hará comprender qué es el abismo?\qt@no{(10)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxviii{Es un fuego abrasador.\qt@no{(11)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxix{\basmalahes El afán de tener más y más los domina\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxx{hasta que la muerte los sorprenda y entren en la tumba.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxi{¡No deberían comportarse así! Ya se van a enterar [que obrar para la otra vida es superior].\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxii{Una vez más: ¡No deberían comportarse así! Ya se van a enterar [que obrar para la otra vida es superior].\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxiii{Si hubieran sabido con certeza [el castigo de quienes consumen su vida en el afán de tener más y más, habrían cambiado el rumbo de sus vidas].\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxiv{Habrán de ver el fuego del Infierno,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxv{y lo verán con los ojos de la certeza.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxvi{Luego, ese día [del Juicio] se les preguntará por cada bendición que recibieron [durante la vida mundanal].\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxvii{\basmalahes Juro por el tiempo\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxviii{que los seres humanos están en la perdición,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxix{excepto aquellos que crean, obren rectamente, y se aconsejen mutuamente con la verdad y con la paciencia [ante las adversidades].\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxx{\basmalahes ¡Ay del castigo que les aguarda al difamador y al calumniador,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxi{al que acumula bienes materiales y los cuenta una y otra vez,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxii{creyendo que su riqueza lo hará vivir eternamente!\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxiii{Por el contrario, serán arrojados en un fuego demoledor.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxiv{¿Y qué te hará comprender lo que es un fuego demoledor?\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxv{Es un fuego encendido por Dios\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxvi{cuyo dolor alcanza los corazones.\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxvii{El Infierno se cerrará en torno a ellos\qt@no{(8)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxviii{con columnas inmensas.\qt@no{(9)}}
+\qt@newcmd\qurantrans@es@mmmmmmclxxxix{\basmalahes ¿No has observado lo que hizo tu Señor con el ejército del elefante?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxc{¿No has visto cómo desbarató sus planes [de destruir la Ka‘bah]?\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxci{Y envió sobre ellos bandadas de aves\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcii{que les arrojaron piedras de arcilla dura,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxciii{y los dejó como heno carcomido.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxciv{\basmalahes Le proporcioné seguridad a [la tribu de] Quraish,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcv{e hice que sus caravanas en invierno [al Yemen] y en verano [a Siria] fueran respetadas.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcvi{Que adoren y agradezcan, en consecuencia, al Señor de esta Casa [la Ka‘bah],\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcvii{Quien les concedió el sustento para que no sufrieran hambre y les dio seguridad para protegerlos del peligro.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcviii{\basmalahes ¿Acaso has observado a quien desmiente el Día del Juicio?\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmcxcix{Es quien rechaza al huérfano\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmcc{y no exhorta a alimentar al pobre.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmcci{¡Ay de los orantes\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccii{que son negligentes en sus oraciones [realizándolas fuera de su horario],\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmcciii{y solo las realizan para hacerse ver,\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmcciv{y se niegan a prestar hasta la mínima ayuda!\qt@no{(7)}}
+\qt@newcmd\qurantrans@es@mmmmmmccv{\basmalahes [¡Oh, Mujámmad!] te he agraciado con la abundancia.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccvi{Reza a tu Señor y sacrifica [los animales en Su nombre].\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccvii{Porque a quien te desdeñe y odie le privaré de todo bien.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccviii{\basmalahes Di: ``¡Oh, incrédulos!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccix{No adoro lo que adoran.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccx{Ni adoran ustedes a Quien yo adoro.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxi{Y jamás adoraré lo que adoran.\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxii{Ni adorarán ustedes a Quien yo adoro.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxiii{Ustedes tienen su religión y yo la mía".\qt@no{(6)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxiv{\basmalahes [¡Oh, Mujámmad!] Cuando llegue el socorro de Dios y la victoria,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxv{y veas a la gente ingresar en masa a la religión de Dios,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxvi{glorifica alabando a tu Señor y pide Su perdón; Él es Indulgente.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxvii{\basmalahes ¡Maldito sea Abu Lahab y que perezca!\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxviii{No le servirán de nada su poder ni sus bienes materiales.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxix{Será arrojado en el fuego llameante\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxx{junto con su mujer, la que acarreaba espinas,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxi{que llevará en su cuello una cuerda de fibras de palmera.\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxii{\basmalahes Di: ``Él es Al-lah, Uno.\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxiii{Al-lah es el Absoluto.\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxiv{No engendró ni fue engendrado.\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxv{Y no hay nada ni nadie que sea semejante a Él".\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxvi{\basmalahes Di: ``Me refugio en el Señor del amanecer,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxvii{de todo el mal que existe en lo que Él creó,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxviii{del mal de la oscuridad de la noche cuando se extiende,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxix{del mal de las [hechiceras] sopladoras de nudos,\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxx{y del mal del envidioso cuando envidia".\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxi{\basmalahes Di: ``Me refugio en el Señor de los seres humanos,\qt@no{(1)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxii{en el Rey Soberano de los seres humanos,\qt@no{(2)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxiii{en el [único] Dios de los seres humanos,\qt@no{(3)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxiv{de la maldad del [demonio] susurrador que huye [cuando el nombre de Dios es mencionado],\qt@no{(4)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxv{que susurra en los corazones de los seres humanos,\qt@no{(5)}}
+\qt@newcmd\qurantrans@es@mmmmmmccxxxvi{y existe entre los yinnes y entre los seres humanos".\qt@no{(6)}}
+%% End of file `qurantext-esiii.translation.def'.